summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-05-12 23:12:35 +0100
committerred031000 <rubenru09@aol.com>2020-05-12 23:12:35 +0100
commit59171916421e659bcb35b1b47eaf748fac2fea6d (patch)
treefd5886b4a76002766c94a5d33a1a42fd14335e0e
parent26b7a78d02b261256e420f149bb7bae66e392ee7 (diff)
parentf4ea052ed0b4e3b0d6a3c12bce46ee53228a9bc0 (diff)
Merge branch 'master' of https://github.com/martmists/pokediamond into overlay69
-rw-r--r--.gitignore5
-rw-r--r--CMakeLists.txt4
-rw-r--r--INSTALL.md6
-rw-r--r--Makefile126
-rw-r--r--arm9/Makefile149
-rw-r--r--arm9/arm9.lcf3924
-rw-r--r--arm9/arm9.lsf382
-rw-r--r--arm9/arm9.sha190
-rw-r--r--arm9/asm/DGT_hash1.s404
-rw-r--r--arm9/asm/DGT_hash2.s443
-rw-r--r--arm9/asm/DGT_sha1s_arm4cw.s179
-rw-r--r--arm9/asm/OS_emulator.s19
-rw-r--r--arm9/asm/OS_interrupt.s239
-rw-r--r--arm9/asm/OS_interrupt_asm.s95
-rw-r--r--arm9/asm/OS_irqTable.s3
-rw-r--r--arm9/asm/OS_printf.s757
-rw-r--r--arm9/asm/OS_reset.s110
-rw-r--r--arm9/asm/OS_spinLock.s4
-rw-r--r--arm9/asm/OS_tcm.s13
-rw-r--r--arm9/asm/OS_terminate_proc.s19
-rw-r--r--arm9/asm/crt0.s23
-rw-r--r--arm9/asm/filesystem.s140
-rw-r--r--arm9/asm/libcard.s16
-rw-r--r--arm9/asm/libctrdg.s8
-rw-r--r--arm9/asm/libdgt.s1017
-rw-r--r--arm9/asm/libfs.s3011
-rw-r--r--arm9/asm/libmath.s6
-rw-r--r--arm9/asm/libmwcc.s13
-rw-r--r--arm9/asm/scrcmd.s490
-rw-r--r--arm9/asm/unk_02000E0C.s343
-rw-r--r--arm9/asm/unk_020023C0.s796
-rw-r--r--arm9/asm/unk_020061E8.s181
-rw-r--r--arm9/asm/unk_02006864.s2246
-rw-r--r--arm9/asm/unk_02038C78.s8
-rw-r--r--arm9/asm/unk_02046030.s1834
-rw-r--r--arm9/asm/unk_0208AC14.s14
-rw-r--r--arm9/asm/unk_020910EC.s73
-rw-r--r--arm9/asm/unk_020AF030.s8
-rw-r--r--arm9/data/rom2.s5
-rw-r--r--arm9/data/rom2_2.s8
-rw-r--r--arm9/data/rom2_3.s21
-rw-r--r--arm9/data/rom2_4.s33
-rw-r--r--arm9/files/FILE_10C400.s4
-rw-r--r--arm9/files/FILE_10C600.s4
-rw-r--r--arm9/files/FILE_10C800.s4
-rw-r--r--arm9/files/FILE_10CA00.s4
-rw-r--r--arm9/files/FILE_10CC00.s4
-rw-r--r--arm9/files/FILE_145400.s4
-rw-r--r--arm9/files/FILE_16B600.s4
-rw-r--r--arm9/files/FILE_184400.s4
-rw-r--r--arm9/files/FILE_187800.s4
-rw-r--r--arm9/files/FILE_1A3000.s4
-rw-r--r--arm9/files/FILE_1AD200.s4
-rw-r--r--arm9/files/FILE_1AD400.s4
-rw-r--r--arm9/files/FILE_1DFE00.s4
-rw-r--r--arm9/files/FILE_1F9200.s4
-rw-r--r--arm9/files/FILE_227E00.s4
-rw-r--r--arm9/files/FILE_237400.s4
-rw-r--r--arm9/files/FILE_23BC00.s4
-rw-r--r--arm9/files/FILE_264200.s4
-rw-r--r--arm9/files/FILE_26B200.s4
-rw-r--r--arm9/files/FILE_283000.s4
-rw-r--r--arm9/files/FILE_283200.s4
-rw-r--r--arm9/files/FILE_285600.s4
-rw-r--r--arm9/files/FILE_285C00.s4
-rw-r--r--arm9/files/FILE_286C00.s4
-rw-r--r--arm9/files/FILE_288600.s4
-rw-r--r--arm9/files/FILE_289000.s4
-rw-r--r--arm9/files/FILE_289600.s4
-rw-r--r--arm9/files/FILE_289E00.s4
-rw-r--r--arm9/files/FILE_28AA00.s4
-rw-r--r--arm9/files/FILE_28C200.s4
-rw-r--r--arm9/files/FILE_28CC00.s4
-rw-r--r--arm9/files/FILE_28D200.s4
-rw-r--r--arm9/files/FILE_28D800.s4
-rw-r--r--arm9/files/FILE_28DE00.s4
-rw-r--r--arm9/files/FILE_28E200.s4
-rw-r--r--arm9/files/FILE_28E800.s4
-rw-r--r--arm9/files/FILE_28F200.s4
-rw-r--r--arm9/files/FILE_290000.s5
-rw-r--r--arm9/files/FILE_290600.s4
-rw-r--r--arm9/files/FILE_291200.s4
-rw-r--r--arm9/files/FILE_292000.s4
-rw-r--r--arm9/files/FILE_292E00.s4
-rw-r--r--arm9/files/FILE_294000.s4
-rw-r--r--arm9/files/FILE_294A00.s4
-rw-r--r--arm9/files/FILE_295400.s4
-rw-r--r--arm9/files/FILE_295A00.s4
-rw-r--r--arm9/files/FILE_296400.s4
-rw-r--r--arm9/files/FILE_296800.s4
-rw-r--r--arm9/files/FILE_297600.s4
-rw-r--r--arm9/files/FILE_298000.s4
-rw-r--r--arm9/files/FILE_298600.s4
-rw-r--r--arm9/files/FILE_298A00.s5
-rw-r--r--arm9/files/FILE_299A00.s4
-rw-r--r--arm9/files/FILE_299E00.s4
-rw-r--r--arm9/files/FILE_29C400.s4
-rw-r--r--arm9/files/FILE_29E800.s4
-rw-r--r--arm9/files/FILE_2A1A00.s4
-rw-r--r--arm9/files/FILE_2A6200.s4
-rw-r--r--arm9/files/FILE_2A8800.s4
-rw-r--r--arm9/files/FILE_2A9E00.s4
-rw-r--r--arm9/files/FILE_2ACC00.s4
-rw-r--r--arm9/files/FILE_2ADA00.s4
-rw-r--r--arm9/files/FILE_2AEC00.s4
-rw-r--r--arm9/files/FILE_2B2A00.s6
-rw-r--r--arm9/files/FILE_2B7600.s4
-rw-r--r--arm9/files/FILE_2B9400.s4
-rw-r--r--arm9/files/FILE_2BC400.s4
-rw-r--r--arm9/files/FILE_2BEC00.s4
-rw-r--r--arm9/files/FILE_2C1200.s4
-rw-r--r--arm9/files/FILE_2C2800.s6
-rw-r--r--arm9/files/FILE_2C4C00.s4
-rw-r--r--arm9/files/FILE_2C5C00.s4
-rw-r--r--arm9/files/FILE_2C9C00.s4
-rw-r--r--arm9/files/FILE_2C9E00.s4
-rw-r--r--arm9/files/FILE_2CEA00.s4
-rw-r--r--arm9/files/FILE_2CFE00.s4
-rw-r--r--arm9/files/FILE_2D5C00.s4
-rw-r--r--arm9/files/FILE_2D7C00.s4
-rw-r--r--arm9/files/FILE_2D9800.s4
-rw-r--r--arm9/files/FILE_2D9E00.s5
-rw-r--r--arm9/files/FILE_2DF200.s6
-rw-r--r--arm9/files/FILE_2E9A00.s5
-rw-r--r--arm9/files/FILE_2EF000.s6
-rw-r--r--arm9/files/FILE_2F1600.s5
-rw-r--r--arm9/files/FILE_2FFA00.s4
-rw-r--r--arm9/files/FILE_303400.s4
-rw-r--r--arm9/files/FILE_30C600.s4
-rw-r--r--arm9/global.inc2244
-rw-r--r--arm9/lib/include/CARD_backup.h6
-rw-r--r--arm9/lib/include/CARD_common.h6
-rw-r--r--arm9/lib/include/CARD_pullOut.h6
-rw-r--r--arm9/lib/include/CARD_rom.h39
-rw-r--r--arm9/lib/include/CTRDG_common.h6
-rw-r--r--arm9/lib/include/DGT_common.h6
-rw-r--r--arm9/lib/include/DGT_dgt.h6
-rw-r--r--arm9/lib/include/FS_archive.h212
-rw-r--r--arm9/lib/include/FS_command.h11
-rw-r--r--arm9/lib/include/FS_file.h222
-rw-r--r--arm9/lib/include/FS_mw_dtor.h16
-rw-r--r--arm9/lib/include/FS_overlay.h71
-rw-r--r--arm9/lib/include/FS_rom.h14
-rw-r--r--arm9/lib/include/FSi_util.h46
-rw-r--r--arm9/lib/include/MB_mb.h45
-rw-r--r--arm9/lib/include/MI_byteAccess.h14
-rw-r--r--arm9/lib/include/MI_dma.h6
-rw-r--r--arm9/lib/include/MI_exMemory.h9
-rw-r--r--arm9/lib/include/MI_memory.h10
-rw-r--r--arm9/lib/include/MI_uncompress.h6
-rw-r--r--arm9/lib/include/OS_cache.h9
-rw-r--r--arm9/lib/include/OS_emulator.h13
-rw-r--r--arm9/lib/include/OS_init.h5
-rw-r--r--arm9/lib/include/OS_interrupt.h30
-rw-r--r--arm9/lib/include/OS_printf.h15
-rw-r--r--arm9/lib/include/OS_reset.h20
-rw-r--r--arm9/lib/include/OS_spinLock.h2
-rw-r--r--arm9/lib/include/OS_system.h1
-rw-r--r--arm9/lib/include/OS_tcm.h12
-rw-r--r--arm9/lib/include/OS_terminate_proc.h11
-rw-r--r--arm9/lib/include/OS_thread.h16
-rw-r--r--arm9/lib/include/PAD_pad.h38
-rw-r--r--arm9/lib/include/PXI_fifo.h33
-rw-r--r--arm9/lib/include/SPI_pm.h38
-rw-r--r--arm9/lib/include/consts.h22
-rw-r--r--arm9/lib/include/fx.h18
-rw-r--r--arm9/lib/include/mmap.h4
-rw-r--r--arm9/lib/include/registers.h361
-rw-r--r--arm9/lib/src/FS_archive.c445
-rw-r--r--arm9/lib/src/FS_command.c75
-rw-r--r--arm9/lib/src/FS_command_default.c468
-rw-r--r--arm9/lib/src/FS_file.c242
-rw-r--r--arm9/lib/src/FS_overlay.c320
-rw-r--r--arm9/lib/src/FS_rom.c118
-rw-r--r--arm9/lib/src/FX_cp.c48
-rw-r--r--arm9/lib/src/FX_vec.c44
-rw-r--r--arm9/lib/src/OS_arena.c2
-rw-r--r--arm9/lib/src/OS_emulator.c18
-rw-r--r--arm9/lib/src/OS_init.c2
-rw-r--r--arm9/lib/src/OS_interrupt.c89
-rw-r--r--arm9/lib/src/OS_printf.c1248
-rw-r--r--arm9/lib/src/OS_reset.c62
-rw-r--r--arm9/lib/src/OS_system.c1
-rw-r--r--arm9/lib/src/OS_tcm.c13
-rw-r--r--arm9/lib/src/OS_terminate_proc.c21
-rw-r--r--arm9/macros.lcf.inc22
-rw-r--r--arm9/modules/00/asm/module_00_dummy.s3
-rw-r--r--arm9/modules/01/src/module_01.c12
-rw-r--r--arm9/modules/01/src/module_01.cpp11
-rw-r--r--arm9/modules/02/asm/module_02_dummy.s3
-rw-r--r--arm9/modules/03/asm/module_03_dummy.s5
-rw-r--r--arm9/modules/04/asm/arm_04.s14131
-rw-r--r--arm9/modules/04/asm/thumb_04.s520
-rw-r--r--arm9/modules/05/asm/module_05.s196
-rw-r--r--arm9/modules/06/asm/module_06.s1116
-rw-r--r--arm9/modules/07/asm/module_07.s642
-rw-r--r--arm9/modules/08/asm/module_08.s27
-rw-r--r--arm9/modules/09/asm/module_09.s160
-rw-r--r--arm9/modules/10/asm/module_10_dummy.s6
-rw-r--r--arm9/modules/11/asm/module_11.s822
-rw-r--r--arm9/modules/12/asm/module_12.s48111
-rw-r--r--arm9/modules/13/asm/module_13_arm1.s6063
-rw-r--r--arm9/modules/13/asm/module_13_arm2.s35377
-rw-r--r--arm9/modules/13/asm/module_13_init.s33
-rw-r--r--arm9/modules/13/asm/module_13_thumb.s14791
-rw-r--r--arm9/modules/14/asm/module_14.s30407
-rw-r--r--arm9/modules/15/asm/module_15.s8753
-rw-r--r--arm9/modules/16/asm/module_16.s63325
-rw-r--r--arm9/modules/17/asm/module_17.s14606
-rw-r--r--arm9/modules/18/asm/module_18.s46264
-rw-r--r--arm9/modules/19/asm/module_19.s106
-rw-r--r--arm9/modules/20/asm/module_20.s4570
-rw-r--r--arm9/modules/21/asm/module_21.s735
-rw-r--r--arm9/modules/22/asm/module_22.s1848
-rw-r--r--arm9/modules/23/asm/module_23.s2802
-rw-r--r--arm9/modules/24/asm/module_24.s1187
-rw-r--r--arm9/modules/25/asm/module_25.s666
-rw-r--r--arm9/modules/26/asm/module_26.s796
-rw-r--r--arm9/modules/27/asm/module_27.s1461
-rw-r--r--arm9/modules/28/asm/module_28.s2981
-rw-r--r--arm9/modules/29/asm/module_29.s1134
-rw-r--r--arm9/modules/30/asm/module_30.s742
-rw-r--r--arm9/modules/31/asm/module_31.s727
-rw-r--r--arm9/modules/32/asm/module_32.s584
-rw-r--r--arm9/modules/33/asm/module_33.s399
-rw-r--r--arm9/modules/34/asm/module_34.s601
-rw-r--r--arm9/modules/35/asm/module_35.s1142
-rw-r--r--arm9/modules/36/asm/module_36.s1571
-rw-r--r--arm9/modules/37/asm/module_37.s681
-rw-r--r--arm9/modules/38/asm/module_38.s1193
-rw-r--r--arm9/modules/39/asm/module_39.s1457
-rw-r--r--arm9/modules/40/asm/module_40.s1417
-rw-r--r--arm9/modules/41/asm/module_41.s2032
-rw-r--r--arm9/modules/42/asm/module_42.s1161
-rw-r--r--arm9/modules/43/asm/module_43.s1140
-rw-r--r--arm9/modules/44/asm/module_44.s580
-rw-r--r--arm9/modules/45/asm/module_45.s1061
-rw-r--r--arm9/modules/46/asm/module_46.s399
-rw-r--r--arm9/modules/47/asm/module_47.s1497
-rw-r--r--arm9/modules/48/asm/module_48.s960
-rw-r--r--arm9/modules/49/asm/module_49.s638
-rw-r--r--arm9/modules/50/asm/module_50.s409
-rw-r--r--arm9/modules/51/asm/module_51.s1911
-rw-r--r--arm9/modules/52/asm/module_52.s250
-rw-r--r--arm9/modules/53/asm/module_53.s4051
-rw-r--r--arm9/modules/54/asm/module_54.s4382
-rw-r--r--arm9/modules/55/asm/module_55.s5594
-rw-r--r--arm9/modules/56/asm/module_56.s8689
-rw-r--r--arm9/modules/57/asm/module_57.s4303
-rw-r--r--arm9/modules/58/asm/module_58.s2481
-rw-r--r--arm9/modules/59/asm/module_59.s5042
-rw-r--r--arm9/modules/60/asm/module_60.s1491
-rw-r--r--arm9/modules/61/asm/module_61.s1907
-rw-r--r--arm9/modules/62/asm/module_62.s7543
-rw-r--r--arm9/modules/63/asm/module_63.s8588
-rw-r--r--arm9/modules/64/asm/module_64.s3582
-rw-r--r--arm9/src/FUN_02000DF4.c12
-rw-r--r--arm9/src/main.c276
-rw-r--r--arm9/src/poke_overlay.c199
-rw-r--r--arm9/src/string_util.c11
-rw-r--r--arm9/undefined_syms.txt1635
-rw-r--r--global.inc3517
-rw-r--r--include/main.h34
-rw-r--r--include/poke_overlay.h13
-rw-r--r--pokediamond.lcf353
-rw-r--r--tools/scaninc/.gitignore1
-rw-r--r--tools/scaninc/LICENSE19
-rw-r--r--tools/scaninc/Makefile18
-rw-r--r--tools/scaninc/asm_file.cpp192
-rw-r--r--tools/scaninc/asm_file.h119
-rw-r--r--tools/scaninc/c_file.cpp307
-rw-r--r--tools/scaninc/c_file.h57
-rw-r--r--tools/scaninc/scaninc.cpp121
-rw-r--r--tools/scaninc/scaninc.h59
-rw-r--r--tools/scaninc/source_file.cpp125
-rw-r--r--tools/scaninc/source_file.h71
-rw-r--r--undefined_syms.txt505
277 files changed, 391922 insertions, 24110 deletions
diff --git a/.gitignore b/.gitignore
index 3db61b05..1944bdd5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,5 +37,6 @@ arm9/modules/module_*.s
arm9/modules/module_*.sbin
arm9/modules/module_*.cfg
-# Dism script files
-*.sh
+# Dism scripts
+dism.sh
+asmdiff.sh
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ef9276a4..f2537aad 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@ project(PokeDiamond)
enable_language(ASM)
-file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c")
+file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c" "*.cpp")
add_executable(PokeDiamond ${SOURCES})
-target_include_directories(PokeDiamond PRIVATE include)
+target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include)
diff --git a/INSTALL.md b/INSTALL.md
index 2d42c2b8..ca080afb 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -20,15 +20,13 @@ Building the ROM requires the following packages:
* make
* git
-* build-essentials
+* build-essentials (build-essential on Ubuntu)
* binutils-arm-none-eabi
* wine (to run the mwcc executables)
-* libpng-devel
+* libpng-devel (libpng-dev on Ubuntu)
NOTE: If you are using Arch/Manjaro or Void you will only need base-devel instead of build-essentials or make or git. You will still need wine.
-Also, if you are using WSL on Windows, please pass NOWINE=1 when compiling, and wine is not necessary for a WSL environment.
-
#### Windows
Before following the respective guides, please install devkitARM and ensure the DEVKITPRO and DEVKITARM variables are added to bashrc such that:
diff --git a/Makefile b/Makefile
index 6b777d8d..eb274b6f 100644
--- a/Makefile
+++ b/Makefile
@@ -54,8 +54,103 @@ 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.sbin
-ARM7BIN := arm7/build/arm7.sbin
+ARM9SBIN := arm9/build/arm9.sbin
+ARM7SBIN := arm7/build/arm7.sbin
+
+BINFILES = \
+ arm9/build/arm9.bin \
+ arm9/build/arm9_table.bin \
+ arm9/build/arm9_defs.bin \
+ arm7/build/arm7.bin \
+ arm9/build/MODULE_00.bin \
+ arm9/build/MODULE_01.bin \
+ arm9/build/MODULE_02.bin \
+ arm9/build/MODULE_03.bin \
+ arm9/build/MODULE_04.bin \
+ arm9/build/MODULE_05.bin \
+ arm9/build/MODULE_06.bin \
+ arm9/build/MODULE_07.bin \
+ arm9/build/MODULE_08.bin \
+ arm9/build/MODULE_09.bin \
+ arm9/build/MODULE_10.bin \
+ arm9/build/MODULE_11.bin \
+ arm9/build/MODULE_12.bin \
+ arm9/build/MODULE_13.bin \
+ arm9/build/MODULE_14.bin \
+ arm9/build/MODULE_15.bin \
+ arm9/build/MODULE_16.bin \
+ arm9/build/MODULE_17.bin \
+ arm9/build/MODULE_18.bin \
+ arm9/build/MODULE_19.bin \
+ arm9/build/MODULE_20.bin \
+ arm9/build/MODULE_21.bin \
+ arm9/build/MODULE_22.bin \
+ arm9/build/MODULE_23.bin \
+ arm9/build/MODULE_24.bin \
+ arm9/build/MODULE_25.bin \
+ arm9/build/MODULE_26.bin \
+ arm9/build/MODULE_27.bin \
+ arm9/build/MODULE_28.bin \
+ arm9/build/MODULE_29.bin \
+ arm9/build/MODULE_30.bin \
+ arm9/build/MODULE_31.bin \
+ arm9/build/MODULE_32.bin \
+ arm9/build/MODULE_33.bin \
+ arm9/build/MODULE_34.bin \
+ arm9/build/MODULE_35.bin \
+ arm9/build/MODULE_36.bin \
+ arm9/build/MODULE_37.bin \
+ arm9/build/MODULE_38.bin \
+ arm9/build/MODULE_39.bin \
+ arm9/build/MODULE_40.bin \
+ arm9/build/MODULE_41.bin \
+ arm9/build/MODULE_42.bin \
+ arm9/build/MODULE_43.bin \
+ arm9/build/MODULE_44.bin \
+ arm9/build/MODULE_45.bin \
+ arm9/build/MODULE_46.bin \
+ arm9/build/MODULE_47.bin \
+ arm9/build/MODULE_48.bin \
+ arm9/build/MODULE_49.bin \
+ arm9/build/MODULE_50.bin \
+ arm9/build/MODULE_51.bin \
+ arm9/build/MODULE_52.bin \
+ arm9/build/MODULE_53.bin \
+ arm9/build/MODULE_54.bin \
+ arm9/build/MODULE_55.bin \
+ arm9/build/MODULE_56.bin \
+ arm9/build/MODULE_57.bin \
+ arm9/build/MODULE_58.bin \
+ arm9/build/MODULE_59.bin \
+ arm9/build/MODULE_60.bin \
+ arm9/build/MODULE_61.bin \
+ arm9/build/MODULE_62.bin \
+ arm9/build/MODULE_63.bin \
+ arm9/build/MODULE_64.bin \
+ arm9/build/MODULE_65.bin \
+ arm9/build/MODULE_66.bin \
+ arm9/build/MODULE_67.bin \
+ arm9/build/MODULE_68.bin \
+ arm9/build/MODULE_69.bin \
+ arm9/build/MODULE_70.bin \
+ arm9/build/MODULE_71.bin \
+ arm9/build/MODULE_72.bin \
+ arm9/build/MODULE_73.bin \
+ arm9/build/MODULE_74.bin \
+ arm9/build/MODULE_75.bin \
+ arm9/build/MODULE_76.bin \
+ arm9/build/MODULE_77.bin \
+ arm9/build/MODULE_78.bin \
+ arm9/build/MODULE_79.bin \
+ arm9/build/MODULE_80.bin \
+ arm9/build/MODULE_81.bin \
+ arm9/build/MODULE_82.bin \
+ arm9/build/MODULE_83.bin \
+ arm9/build/MODULE_84.bin \
+ arm9/build/MODULE_85.bin \
+ arm9/build/MODULE_86.bin
+
+SBINFILES = $(BINFILES:%.bin=%.sbin)
##################### Compiler Options #######################
@@ -110,7 +205,7 @@ else
NODEP := 1
endif
-.PHONY: all clean mostlyclean tidy tools $(TOOLDIRS) patch_mwasmarm $(ARM9BIN) $(ARM7BIN)
+.PHONY: all clean mostlyclean tidy tools $(TOOLDIRS) patch_mwasmarm arm9 arm7
MAKEFLAGS += --no-print-directory
@@ -143,12 +238,6 @@ $(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
@@ -157,14 +246,23 @@ $(BUILD_DIR)/%.o: %.c
$(BUILD_DIR)/%.o: %.s
$(AS) $(ASFLAGS) $< -o $@
-$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) undefined_syms.txt
+$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT)
$(CPP) $(VERSION_CFLAGS) -MMD -MP -MT $@ -MF $@.d -I include/ -I . -DBUILD_DIR=$(BUILD_DIR) -o $@ $<
-$(ELF): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) $(ARM9BIN) $(ARM7BIN)
+$(SBINFILES): arm9 arm7
+
+arm9:
+ $(MAKE) -C arm9
+
+arm7:
+ $(MAKE) -C arm7
+
+$(BINFILES): %.bin: %.sbin
+ @cp $< $@
+
+$(ELF): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) $(BINFILES)
# Hack because mwldarm doesn't like the sbin suffix
- cp $(ARM7BIN) $(BUILD_DIR)/arm7.bin
- cp $(ARM9BIN) $(BUILD_DIR)/arm9.bin
- $(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES) $(BUILD_DIR)/arm7.bin $(BUILD_DIR)/arm9.bin
+ $(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES) $(BINFILES)
$(ROM): $(ELF)
$(OBJCOPY) -O binary --gap-fill=0xFF --pad-to=0x04000000 $< $@
diff --git a/arm9/Makefile b/arm9/Makefile
index 4deb1877..f792c5bf 100644
--- a/arm9/Makefile
+++ b/arm9/Makefile
@@ -23,9 +23,9 @@ endif
ifeq ($(OS),Windows_NT)
EXE := .exe
-WINE :=
+WINE :=
else
-EXE :=
+EXE :=
WINE := wine
endif
@@ -49,16 +49,112 @@ LD_TEMPLATE := ARM9-TS.lcf.template
SRC_DIRS := src lib lib/src $(wildcard modules/*/src)
ASM_DIRS := asm data files $(wildcard modules/*/asm)
-C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
-S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
+C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
+CXX_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.cpp))
+S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
+
+C_OBJS = $(C_FILES:%.c=$(BUILD_DIR)/%.o)
+CXX_OBJS = $(CXX_FILES:%.cpp=$(BUILD_DIR)/%.o)
+S_OBJS = $(S_FILES:%.s=$(BUILD_DIR)/%.o)
# Object files
-O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \
- $(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \
+O_FILES := $(C_OBJS) $(CXX_OBJS) $(S_OBJS)
# Overlay modules
# FIXME: lcf doesn't like this
# BIN_FILES := $(wildcard files/*.__AT_*)
+OVERLAYS := \
+ MODULE_00 \
+ MODULE_01 \
+ MODULE_02 \
+ MODULE_03 \
+ MODULE_04 \
+ MODULE_05 \
+ MODULE_06 \
+ MODULE_07 \
+ MODULE_08 \
+ MODULE_09 \
+ MODULE_10 \
+ MODULE_11 \
+ MODULE_12 \
+ MODULE_13 \
+ MODULE_14 \
+ MODULE_15 \
+ MODULE_16 \
+ MODULE_17 \
+ MODULE_18 \
+ MODULE_19 \
+ MODULE_20 \
+ MODULE_21 \
+ MODULE_22 \
+ MODULE_23 \
+ MODULE_24 \
+ MODULE_25 \
+ MODULE_26 \
+ MODULE_27 \
+ MODULE_28 \
+ MODULE_29 \
+ MODULE_30 \
+ MODULE_31 \
+ MODULE_32 \
+ MODULE_33 \
+ MODULE_34 \
+ MODULE_35 \
+ MODULE_36 \
+ MODULE_37 \
+ MODULE_38 \
+ MODULE_39 \
+ MODULE_40 \
+ MODULE_41 \
+ MODULE_42 \
+ MODULE_43 \
+ MODULE_44 \
+ MODULE_45 \
+ MODULE_46 \
+ MODULE_47 \
+ MODULE_48 \
+ MODULE_49 \
+ MODULE_50 \
+ MODULE_51 \
+ MODULE_52 \
+ MODULE_53 \
+ MODULE_54 \
+ MODULE_55 \
+ MODULE_56 \
+ MODULE_57 \
+ MODULE_58 \
+ MODULE_59 \
+ MODULE_60 \
+ MODULE_61 \
+ MODULE_62 \
+ MODULE_63 \
+ MODULE_64 \
+ MODULE_65 \
+ MODULE_66 \
+ MODULE_67 \
+ MODULE_68 \
+ MODULE_69 \
+ MODULE_70 \
+ MODULE_71 \
+ MODULE_72 \
+ MODULE_73 \
+ MODULE_74 \
+ MODULE_75 \
+ MODULE_76 \
+ MODULE_77 \
+ MODULE_78 \
+ MODULE_79 \
+ MODULE_80 \
+ MODULE_81 \
+ MODULE_82 \
+ MODULE_83 \
+ MODULE_84 \
+ MODULE_85 \
+ MODULE_86 \
+
+.SECONDARY:
+.DELETE_ON_ERROR:
+.SECONDEXPANSION:
##################### Compiler Options #######################
@@ -76,10 +172,10 @@ MWCCARM = $(TOOLS_DIR)/mwccarm/$(MWCCVERSION)/mwccarm.exe
MWLDARM = $(TOOLS_DIR)/mwccarm/$(MWCCVERSION)/mwldarm.exe
MWASMARM = $(TOOLS_DIR)/mwccarm/$(MWCCVERSION)/mwasmarm.exe
MAKELSF := $(WINE) $(TOOLS_DIR)/bin/makelcf.exe
-MAKELSF_FLAGS := -DCONST_34=0x34 -DCONST_3F=0x3F
AS = $(WINE) $(MWASMARM)
CC = $(WINE) $(MWCCARM)
+CXX = $(WINE) $(MWCCARM)
CPP := cpp -P
LD = $(WINE) $(MWLDARM)
AR := $(CROSS)ar
@@ -88,15 +184,17 @@ 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 arm946e -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking
-LDFLAGS = -map -nodead -w off -proc arm946e -interworking -map -symtab -m _start
+CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int
+CXXFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int
+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
+SHA1SUM = sha1sum --quiet
+JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc$(EXE)
+GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx$(EXE)
+SCANINC = $(TOOLS_DIR)/scaninc/scaninc$(EXE)
MWASMARM_PATCHER = $(TOOLS_DIR)/mwasmarm_patcher/mwasmarm_patcher$(EXE) -q
TOOLDIRS = $(filter-out $(TOOLS_DIR)/mwccarm $(TOOLS_DIR)/bin,$(wildcard $(TOOLS_DIR)/*))
@@ -121,6 +219,7 @@ MAKEFLAGS += --no-print-directory
all: $(ROM)
@$(SHA1SUM) -c $(TARGET).sha1
+ @echo $(ROM): OK
clean: mostlyclean
make -C $(TOOLS_DIR)/mwasmarm_patcher clean
@@ -151,21 +250,28 @@ build/src/FUN_020910A4.o: MWCCVERSION = 1.2/sp2p3
####################### Everything Else ######################
-$(BUILD_DIR)/%.o: %.c
+ifeq (,$(NODEP))
+$(BUILD_DIR)/%.o: dep = $(shell $(SCANINC) -I ../include -I ../include-mw -I lib/include $(filter $*.c,$(C_FILES)) $(filter $*.cpp,$(CXX_FILES)) $(filter $*.s,$(S_FILES)))
+else
+$(BUILD_DIR)/%.o: dep :=
+endif
+
+$(C_OBJS): $(BUILD_DIR)/%.o: %.c $$(dep)
$(CC) -c $(CFLAGS) -o $@ $<
-$(BUILD_DIR)/%.o: %.s
- $(AS) $(ASFLAGS) $< -o $@
+$(CXX_OBJS): $(BUILD_DIR)/%.o: %.cpp $$(dep)
+ $(CXX) -c $(CXXFLAGS) -o $@ $<
+
+$(S_OBJS): $(BUILD_DIR)/%.o: %.s $$(dep)
+ $(AS) $(ASFLAGS) -o $@ $<
$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) $(LD_TEMPLATE) undefined_syms.txt macros.lcf.inc
# $(MAKELSF) $(MAKELSF_FLAGS) $< $(LD_TEMPLATE) $@
$(CPP) $(VERSION_CFLAGS) -MMD -MP -MT $@ -MF $@.d -I include/ -I . -DBUILD_DIR=$(BUILD_DIR) -o $@ $<
-$(ELF): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) $(BIN_FILES)
+$(ROM): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) $(BIN_FILES)
$(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES) $(BIN_FILES)
-
-$(ROM): $(ELF)
- $(OBJCOPY) -O binary --gap-fill=0xFF $< $@
+ $(OBJCOPY) --update-section arm9=$@ -j arm9 $(foreach ov,$(OVERLAYS),--update-section $(ov)=$(BUILD_DIR)/$(ov).sbin -j $(ov)) $(ELF) 2>/dev/null
# Make sure build directory exists before compiling anything
DUMMY != mkdir -p $(ALL_DIRS)
@@ -185,6 +291,11 @@ DUMMY != mkdir -p $(ALL_DIRS)
%.png: ;
%.pal: ;
+# Included files
+baserom.%: ;
+%.h: ;
+%.inc: ;
+
$(BIN_FILES): ;
$(BUILD_DIR)/data/icon.o: graphics/icon.4bpp graphics/icon.gbapal
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 9466d54f..05416fb6 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -1,115 +1,129 @@
#include "macros.lcf.inc"
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
- .footer (R) : ORIGIN=0, 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
- MODULE_00 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_01 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_02 (RWX) : ORIGIN=0x021D7520, LENGTH=0
- MODULE_03 (RWX) : ORIGIN=0x01FF8700, LENGTH=0
- MODULE_04 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_05 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_06 (RWX) : ORIGIN=0x022396A0, LENGTH=0
- MODULE_07 (RWX) : ORIGIN=0x02211E60, LENGTH=0
- MODULE_08 (RWX) : ORIGIN=0x02211E60, LENGTH=0
- MODULE_09 (RWX) : ORIGIN=0x02211E60, LENGTH=0
- MODULE_10 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_11 (RWX) : ORIGIN=0x0222D5C0, LENGTH=0
- MODULE_12 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_13 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_14 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_15 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_16 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_17 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_18 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_19 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_20 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_21 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_22 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_23 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_24 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_25 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_26 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_27 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_28 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_29 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_30 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_31 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_32 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_33 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_34 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_35 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_36 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_37 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_38 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_39 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_40 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_41 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_42 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_43 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_44 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_45 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_46 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_47 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_48 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_49 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_50 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_51 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_52 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_53 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_54 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_55 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_56 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_57 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_58 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_59 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_60 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_61 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_62 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_63 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_64 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_65 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_66 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_67 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_68 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_69 (RWX) : ORIGIN=0x0222D5C0, LENGTH=0
- MODULE_70 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_71 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_72 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_73 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_74 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_75 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_76 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_77 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_78 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_79 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_80 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_81 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_82 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_83 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_84 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_85 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_86 (RWX) : ORIGIN=0, LENGTH=0
+ arm9 (RWX) : ORIGIN=0x02000000, LENGTH=0 > arm9.sbin
+ ITCM (RWX) : ORIGIN=0x01FF8000, LENGTH=0 >> arm9.sbin
+ DTCM (RWX) : ORIGIN=0x027E0000, LENGTH=0 >> arm9.sbin
+ EXT (RWX) : ORIGIN=0x02400000, LENGTH=0 >> arm9.sbin
+ binary.AUTOLOAD_INFO (RWX) : ORIGIN=0, LENGTH=0 >> arm9.sbin
+ binary.STATIC_FOOTER (RWX) : ORIGIN=0, LENGTH=0 >> arm9.sbin
+
+ arm9_defs (RW) : ORIGIN=AFTER(arm9), LENGTH=0 > arm9_defs.sbin
+ arm9_table (RW) : ORIGIN=AFTER(arm9), LENGTH=0 > arm9_table.sbin
+ MODULE_00 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_00.sbin
+ MODULE_01 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_01.sbin
+ MODULE_02 (RWXO) : ORIGIN=0x021D7520, LENGTH=0 > MODULE_02.sbin
+ MODULE_03 (RWXO) : ORIGIN=0x01FF8700, LENGTH=0 > MODULE_03.sbin
+ MODULE_04 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_04.sbin
+ MODULE_05 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_05.sbin
+ MODULE_06 (RWXO) : ORIGIN=0x022396A0, LENGTH=0 > MODULE_06.sbin
+ MODULE_07 (RWXO) : ORIGIN=0x02211E60, LENGTH=0 > MODULE_07.sbin
+ MODULE_08 (RWXO) : ORIGIN=0x02211E60, LENGTH=0 > MODULE_08.sbin
+ MODULE_09 (RWXO) : ORIGIN=0x02211E60, LENGTH=0 > MODULE_09.sbin
+ MODULE_10 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_10.sbin
+ MODULE_11 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_11.sbin
+ MODULE_12 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_12.sbin
+ MODULE_13 (RWXO) : ORIGIN=0x02211E60, LENGTH=0 > MODULE_13.sbin
+ MODULE_14 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_14.sbin
+ MODULE_15 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_15.sbin
+ MODULE_16 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_16.sbin
+ MODULE_17 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_17.sbin
+ MODULE_18 (RWXO) : ORIGIN=0x022396A0, LENGTH=0 > MODULE_18.sbin
+ MODULE_19 (RWXO) : ORIGIN=0x02252440, LENGTH=0 > MODULE_19.sbin
+ MODULE_20 (RWXO) : ORIGIN=0x02252440, LENGTH=0 > MODULE_20.sbin
+ MODULE_21 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_21.sbin
+ MODULE_22 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_22.sbin
+ MODULE_23 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_23.sbin
+ MODULE_24 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_24.sbin
+ MODULE_25 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_25.sbin
+ MODULE_26 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_26.sbin
+ MODULE_27 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_27.sbin
+ MODULE_28 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_28.sbin
+ MODULE_29 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_29.sbin
+ MODULE_30 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_30.sbin
+ MODULE_31 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_31.sbin
+ MODULE_32 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_32.sbin
+ MODULE_33 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_33.sbin
+ MODULE_34 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_34.sbin
+ MODULE_35 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_35.sbin
+ MODULE_36 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_36.sbin
+ MODULE_37 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_37.sbin
+ MODULE_38 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_38.sbin
+ MODULE_39 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_39.sbin
+ MODULE_40 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_40.sbin
+ MODULE_41 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_41.sbin
+ MODULE_42 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_42.sbin
+ MODULE_43 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_43.sbin
+ MODULE_44 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_44.sbin
+ MODULE_45 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_45.sbin
+ MODULE_46 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_46.sbin
+ MODULE_47 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_47.sbin
+ MODULE_48 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_48.sbin
+ MODULE_49 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_49.sbin
+ MODULE_50 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_50.sbin
+ MODULE_51 (RWXO) : ORIGIN=0x02254840, LENGTH=0 > MODULE_51.sbin
+ MODULE_52 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_52.sbin
+ MODULE_53 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_53.sbin
+ MODULE_54 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_54.sbin
+ MODULE_55 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_55.sbin
+ MODULE_56 (RWXO) : ORIGIN=0x02211E60, LENGTH=0 > MODULE_56.sbin
+ MODULE_57 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_57.sbin
+ MODULE_58 (RWXO) : ORIGIN=0x021D9A20, LENGTH=0 > MODULE_58.sbin
+ MODULE_59 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_59.sbin
+ MODULE_60 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_60.sbin
+ MODULE_61 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_61.sbin
+ MODULE_62 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_62.sbin
+ MODULE_63 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_63.sbin
+ MODULE_64 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_64.sbin
+ MODULE_65 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_65.sbin
+ MODULE_66 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_66.sbin
+ MODULE_67 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_67.sbin
+ MODULE_68 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_68.sbin
+ MODULE_69 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_69.sbin
+ MODULE_70 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_70.sbin
+ MODULE_71 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_71.sbin
+ MODULE_72 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_72.sbin
+ MODULE_73 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_73.sbin
+ MODULE_74 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_74.sbin
+ MODULE_75 (RWXO) : ORIGIN=0x021E6BA0, LENGTH=0 > MODULE_75.sbin
+ MODULE_76 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_76.sbin
+ MODULE_77 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_77.sbin
+ MODULE_78 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_78.sbin
+ MODULE_79 (RWXO) : ORIGIN=0x02211E60, LENGTH=0 > MODULE_79.sbin
+ MODULE_80 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_80.sbin
+ MODULE_81 (RWXO) : ORIGIN=0x02237E40, LENGTH=0 > MODULE_81.sbin
+ MODULE_82 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_82.sbin
+ MODULE_83 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0 > MODULE_83.sbin
+ MODULE_84 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_84.sbin
+ MODULE_85 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_85.sbin
+ MODULE_86 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0 > MODULE_86.sbin
+
+ dummy.MAIN_EX (RW) : ORIGIN = 0x023e0000, LENGTH = 0x0
+ arena.MAIN (RW) : ORIGIN = AFTER(arm9,MODULE_00,MODULE_01,MODULE_02,MODULE_04,MODULE_05,MODULE_06,MODULE_07,MODULE_08,MODULE_09,MODULE_10,MODULE_11,MODULE_12,MODULE_13,MODULE_14,MODULE_15,MODULE_16,MODULE_17,MODULE_18,MODULE_19,MODULE_20,MODULE_21,MODULE_22,MODULE_23,MODULE_24,MODULE_25,MODULE_26,MODULE_27,MODULE_28,MODULE_29,MODULE_30,MODULE_31,MODULE_32,MODULE_33,MODULE_34,MODULE_35,MODULE_36,MODULE_37,MODULE_38,MODULE_39,MODULE_40,MODULE_41,MODULE_42,MODULE_43,MODULE_44,MODULE_45,MODULE_46,MODULE_47,MODULE_48,MODULE_49,MODULE_50,MODULE_51,MODULE_52,MODULE_53,MODULE_54,MODULE_55,MODULE_56,MODULE_57,MODULE_58,MODULE_59,MODULE_60,MODULE_61,MODULE_62,MODULE_63,MODULE_64,MODULE_65,MODULE_66,MODULE_67,MODULE_68,MODULE_69,MODULE_70,MODULE_71,MODULE_72,MODULE_73,MODULE_74,MODULE_75,MODULE_76,MODULE_77,MODULE_78,MODULE_79,MODULE_80,MODULE_81,MODULE_82,MODULE_83,MODULE_84,MODULE_85,MODULE_86), LENGTH = 0x0
+ arena.MAIN_EX (RW) : ORIGIN = AFTER(dummy.MAIN_EX), LENGTH = 0x0
+ arena.ITCM (RW) : ORIGIN = AFTER(ITCM,MODULE_03), LENGTH = 0x0
+ arena.DTCM (RW) : ORIGIN = AFTER(DTCM), LENGTH = 0x0
+ binary.MODULE_FILES (RW) : ORIGIN = 0x0, LENGTH = 0x0 > component.files
+ check.ITCM (RWX) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check
+ check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check
}
SECTIONS {
#include "undefined_syms.txt"
- .text : AT (0x0) {
+ .arm9 : {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_STATIC_START = .;
+ SDK_STATIC_TEXT_START = .;
secure.o (.text)
crt0.o (.text)
- crt0.o (.version)
+ crt0.o (.rodata)
+ * (.version)
main.o (.text)
- FUN_02000DF4.o (.text)
unk_02000E0C.o (.text)
string_util.o (.text)
unk_020023C0.o (.text)
+ poke_overlay.o (.text)
+ unk_020061E8.o (.text)
filesystem.o (.text)
unk_02006864.o (.text)
script.o (.text)
@@ -144,6 +158,7 @@ SECTIONS {
GX_asm.o (.text)
OS_irqHandler.o (.text)
OS_irqTable.o (.text)
+ OS_interrupt_asm.o (.text)
OS_interrupt.o (.text)
OS_spinLock.o (.text)
OS_printf.o (.text)
@@ -188,8 +203,15 @@ SECTIONS {
SND_bank.o (.text)
PXI_init.o (.text)
PXI_fifo.o (.text)
- libfs.o (.text)
- libdgt.o (.text)
+ FS_command.o (.text)
+ FS_command_default.o (.text)
+ FS_archive.o (.text)
+ FS_file.o (.text)
+ FS_rom.o (.text)
+ FS_overlay.o (.text)
+ DGT_hash1.o (.text)
+ DGT_hash2.o (.text)
+ DGT_sha1s_arm4cw.o (.text)
libcp.o (.text)
libspi.o (.text)
libpm.o (.text)
@@ -203,386 +225,3596 @@ SECTIONS {
libc.o (.text)
/* MWCC library */
libmwcc.o (.text)
- } > .text
- .data : AT (0xEC710) {
- rom2.o (.data)
- string_util.o (.data)
- rom2_2.o (.data)
- } > .data
+ /* Text data */
+ rom2.o (.rodata)
+ string_util.o (.rodata)
+ rom2_2.o (.rodata)
+ FS_command.o (.rodata)
+ FS_command_default.o (.rodata)
+ FS_archive.o (.rodata)
+ FS_file.o (.rodata)
+ FS_rom.o (.rodata)
+ FS_overlay.o (.rodata)
+ rom2_3.o (.rodata)
+ libmwcc.o (.rodata)
+ . = ALIGN(32);
+ SDK_STATIC_TEXT_END = .;
- SDK_STATIC_BSS_START = .;
- SDK_STATIC_BSS_END = SDK_STATIC_BSS_START + 0xd0540;
+ SDK_STATIC_DATA_START = .;
+ rom2_3.o (.data)
+ FS_command.o (.data)
+ FS_command_default.o (.data)
+ FS_archive.o (.data)
+ FS_file.o (.data)
+ FS_rom.o (.data)
+ FS_overlay.o (.data)
+ rom2_4.o (.data)
+ SDK_STATIC_DATA_END = .;
+ SDK_STATIC_END = .;
+ SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START;
+ } > arm9
- SDK_AUTOLOAD_START = .;
+ .arm9.bss :
+ {
+ /* ALIGNALL(4); . = ALIGN(32); */
+ SDK_STATIC_BSS_START = .;
+ /* .bss */
+ gBacklightTop = 0x02106FA0;
+ gBacklightTop_2 = 0x02106FA0;
+ /* .sbss */
+ gLoadedOverlays = 0x021C45B0;
+ gUnknown21C48B8 = 0x021C48B8;
+ gUnk021C4918 = 0x021C4918;
+ gUnk021C8C70 = 0x021C8C70;
+ 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;
+ OSiHeapInfo = 0x021D36F8;
+ OSi_UserExceptionHandler = 0x021D371C;
+ OSi_UserExceptionHandlerArg = 0x021D3720;
+ 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;
+ arc_list = 0x021D53E8;
+ current_dir_pos = 0x021D53EC;
+ is_init = 0x021D53F8;
+ fsi_card_lock_id = 0x021D53FC;
+ fsi_default_dma_no = 0x021D5400;
+ fsi_ovt9 = 0x021D5404;
+ fsi_ovt7 = 0x021D540C;
+ fsi_arc_rom = 0x021D5414;
+ __global_destructor_chain = 0x021D74C8;
+ /* . = ALIGN(32); */
+ SDK_STATIC_BSS_END = 0x021D74E0;
+ SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START;
+ } >> arm9
- .itcm : AT (0x106FA0)
+ SDK_AUTOLOAD_START = SDK_STATIC_END;
+ SDK_AUTOLOAD_SIZE = 0;
+
+ .ITCM :
{
- SDK_AUTOLOAD_ITCM_START = .;
+ . = ALIGN(32);
+ SDK_AUTOLOAD.ITCM.START = .;
arm9_itcm.o (.itcm)
- SDK_AUTOLOAD_ITCM_END = .;
- . = 0x01FF8720;
- SDK_SECTION_ARENA_ITCM_START = .;
- } > .itcm
+ . = ALIGN(32);
+ SDK_AUTOLOAD.ITCM.END = .;
+ SDK_AUTOLOAD.ITCM.SIZE = SDK_AUTOLOAD.ITCM.END - SDK_AUTOLOAD.ITCM.START;
+ SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.ITCM.SIZE;
+ } > ITCM
- .dtcm : AT (0x1076A0) {
- SDK_AUTOLOAD_DTCM_START = .;
+ .ITCM.bss :
+ {
+ . = ALIGN(32);
+ SDK_AUTOLOAD.ITCM.BSS_START = .;
+ . = . + 0;
+ . = ALIGN(32);
+ SDK_AUTOLOAD.ITCM.BSS_END = .;
+ SDK_AUTOLOAD.ITCM.BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_END - SDK_AUTOLOAD.ITCM.BSS_START;
+ } >> ITCM
+
+ .DTCM : {
+ . = ALIGN(32);
+ SDK_AUTOLOAD.DTCM.START = .;
OS_irqTable.o (.dtcm)
OS_irqHandler.o (.dtcm)
- SDK_AUTOLOAD_DTCM_END = .;
- SDK_SECTION_ARENA_DTCM_START = 0x027E0080;
- } > .dtcm
-
- .autoload : AT (0x107700) {
- WRITEW SDK_AUTOLOAD_ITCM_START;
- WRITEW SDK_AUTOLOAD_ITCM_SIZE;
- WRITEW SDK_AUTOLOAD_ITCM_BSS_SIZE;
- WRITEW SDK_AUTOLOAD_DTCM_START;
- WRITEW SDK_AUTOLOAD_DTCM_SIZE;
- WRITEW SDK_AUTOLOAD_DTCM_BSS_SIZE;
- WRITEW SDK_AUTOLOAD_EXT_START;
- WRITEW SDK_AUTOLOAD_EXT_SIZE;
- WRITEW SDK_AUTOLOAD_EXT_BSS_SIZE;
- } > .autoload
-
- .footer : AT (0x107724) {
+ . = ALIGN(32);
+ SDK_AUTOLOAD.DTCM.END = .;
+ SDK_AUTOLOAD.DTCM.SIZE = SDK_AUTOLOAD.DTCM.END - SDK_AUTOLOAD.DTCM.START;
+ SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.DTCM.SIZE;
+ } > DTCM
+
+ .DTCM.bss :
+ {
+ . = ALIGN(32);
+ SDK_AUTOLOAD.DTCM.BSS_START = .;
+ OS_irqTable.o (.bss)
+ SDK_AUTOLOAD.DTCM.BSS_END = .;
+ SDK_AUTOLOAD.DTCM.BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_END - SDK_AUTOLOAD.DTCM.BSS_START;
+ } >> DTCM
+
+ .EXT : {
+ SDK_AUTOLOAD.EXT.START = .;
+ SDK_AUTOLOAD.EXT.END = .;
+ SDK_AUTOLOAD.EXT.SIZE = SDK_AUTOLOAD.EXT.END - SDK_AUTOLOAD.EXT.START;
+ SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.EXT.SIZE;
+ } > EXT
+
+ .EXT.bss : {
+ SDK_AUTOLOAD.EXT.BSS_START = .;
+ SDK_AUTOLOAD.EXT.BSS_END = .;
+ SDK_AUTOLOAD.EXT.BSS_SIZE = SDK_AUTOLOAD.EXT.BSS_END - SDK_AUTOLOAD.EXT.BSS_START;
+ } >> EXT
+
+ SDK_AUTOLOAD_ITCM_START = SDK_AUTOLOAD.ITCM.START;
+ SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD.ITCM.END;
+ SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD.ITCM.BSS_END;
+ SDK_AUTOLOAD_ITCM_SIZE = SDK_AUTOLOAD.ITCM.SIZE;
+ SDK_AUTOLOAD_ITCM_BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_SIZE;
+ SDK_AUTOLOAD_DTCM_START = SDK_AUTOLOAD.DTCM.START;
+ SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD.DTCM.END;
+ SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD.DTCM.BSS_END;
+ SDK_AUTOLOAD_DTCM_SIZE = SDK_AUTOLOAD.DTCM.SIZE;
+ SDK_AUTOLOAD_DTCM_BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_SIZE;
+
+ .binary.AUTOLOAD_INFO : {
+ WRITEW ADDR(.ITCM);
+ WRITEW SDK_AUTOLOAD.ITCM.SIZE;
+ WRITEW SDK_AUTOLOAD.ITCM.BSS_SIZE;
+ WRITEW ADDR(.DTCM);
+ WRITEW SDK_AUTOLOAD.DTCM.SIZE;
+ WRITEW SDK_AUTOLOAD.DTCM.BSS_SIZE;
+ WRITEW ADDR(.EXT);
+ WRITEW SDK_AUTOLOAD.EXT.SIZE;
+ WRITEW SDK_AUTOLOAD.EXT.BSS_SIZE;
+ } > binary.AUTOLOAD_INFO
+
+ SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE;
+ SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO);
+ SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO);
+
+ .binary.STATIC_FOOTER : {
WRITEW 0xDEC00621;
- WRITEW _start_ModuleParams - ADDR(.text);
- WRITEW 0;
- } > .footer
-
- .overlay : AT (0x107800) {
- OVERLAY_TABLE(SDK_MODULE_00, 0)
- OVERLAY_TABLE(SDK_MODULE_01, 1)
- OVERLAY_TABLE(SDK_MODULE_02, 2)
- OVERLAY_TABLE(SDK_MODULE_03, 3)
- OVERLAY_TABLE(SDK_MODULE_04, 4)
- OVERLAY_TABLE(SDK_MODULE_05, 5)
- OVERLAY_TABLE(SDK_MODULE_06, 6)
- OVERLAY_TABLE(SDK_MODULE_07, 7)
- OVERLAY_TABLE(SDK_MODULE_08, 8)
- OVERLAY_TABLE(SDK_MODULE_09, 9)
- OVERLAY_TABLE(SDK_MODULE_10, 10)
- OVERLAY_TABLE(SDK_MODULE_11, 11)
- OVERLAY_TABLE(SDK_MODULE_12, 12)
- OVERLAY_TABLE(SDK_MODULE_13, 13)
- OVERLAY_TABLE(SDK_MODULE_14, 14)
- OVERLAY_TABLE(SDK_MODULE_15, 15)
- OVERLAY_TABLE(SDK_MODULE_16, 16)
- OVERLAY_TABLE(SDK_MODULE_17, 17)
- OVERLAY_TABLE(SDK_MODULE_18, 18)
- OVERLAY_TABLE(SDK_MODULE_19, 19)
- OVERLAY_TABLE(SDK_MODULE_20, 20)
- OVERLAY_TABLE(SDK_MODULE_21, 21)
- OVERLAY_TABLE(SDK_MODULE_22, 22)
- OVERLAY_TABLE(SDK_MODULE_23, 23)
- OVERLAY_TABLE(SDK_MODULE_24, 24)
- OVERLAY_TABLE(SDK_MODULE_25, 25)
- OVERLAY_TABLE(SDK_MODULE_26, 26)
- OVERLAY_TABLE(SDK_MODULE_27, 27)
- OVERLAY_TABLE(SDK_MODULE_28, 28)
- OVERLAY_TABLE(SDK_MODULE_29, 29)
- OVERLAY_TABLE(SDK_MODULE_30, 30)
- OVERLAY_TABLE(SDK_MODULE_31, 31)
- OVERLAY_TABLE(SDK_MODULE_32, 32)
- OVERLAY_TABLE(SDK_MODULE_33, 33)
- OVERLAY_TABLE(SDK_MODULE_34, 34)
- OVERLAY_TABLE(SDK_MODULE_35, 35)
- OVERLAY_TABLE(SDK_MODULE_36, 36)
- OVERLAY_TABLE(SDK_MODULE_37, 37)
- OVERLAY_TABLE(SDK_MODULE_38, 38)
- OVERLAY_TABLE(SDK_MODULE_39, 39)
- OVERLAY_TABLE(SDK_MODULE_40, 40)
- OVERLAY_TABLE(SDK_MODULE_41, 41)
- OVERLAY_TABLE(SDK_MODULE_42, 42)
- OVERLAY_TABLE(SDK_MODULE_43, 43)
- OVERLAY_TABLE(SDK_MODULE_44, 44)
- OVERLAY_TABLE(SDK_MODULE_45, 45)
- OVERLAY_TABLE(SDK_MODULE_46, 46)
- OVERLAY_TABLE(SDK_MODULE_47, 47)
- OVERLAY_TABLE(SDK_MODULE_48, 48)
- OVERLAY_TABLE(SDK_MODULE_49, 49)
- OVERLAY_TABLE(SDK_MODULE_50, 50)
- OVERLAY_TABLE(SDK_MODULE_51, 51)
- OVERLAY_TABLE(SDK_MODULE_52, 52)
- OVERLAY_TABLE(SDK_MODULE_53, 53)
- OVERLAY_TABLE(SDK_MODULE_54, 54)
- OVERLAY_TABLE(SDK_MODULE_55, 55)
- OVERLAY_TABLE(SDK_MODULE_56, 56)
- OVERLAY_TABLE(SDK_MODULE_57, 57)
- OVERLAY_TABLE(SDK_MODULE_58, 58)
- OVERLAY_TABLE(SDK_MODULE_59, 59)
- OVERLAY_TABLE(SDK_MODULE_60, 60)
- OVERLAY_TABLE(SDK_MODULE_61, 61)
- OVERLAY_TABLE(SDK_MODULE_62, 62)
- OVERLAY_TABLE(SDK_MODULE_63, 63)
- OVERLAY_TABLE(SDK_MODULE_64, 64)
- OVERLAY_TABLE(SDK_MODULE_65, 65)
- OVERLAY_TABLE(SDK_MODULE_66, 66)
- OVERLAY_TABLE(SDK_MODULE_67, 67)
- OVERLAY_TABLE(SDK_MODULE_68, 68)
- OVERLAY_TABLE(SDK_MODULE_69, 69)
- OVERLAY_TABLE(SDK_MODULE_70, 70)
- OVERLAY_TABLE(SDK_MODULE_71, 71)
- OVERLAY_TABLE(SDK_MODULE_72, 72)
- OVERLAY_TABLE(SDK_MODULE_73, 73)
- OVERLAY_TABLE(SDK_MODULE_74, 74)
- OVERLAY_TABLE(SDK_MODULE_75, 75)
- OVERLAY_TABLE(SDK_MODULE_76, 76)
- OVERLAY_TABLE(SDK_MODULE_77, 77)
- OVERLAY_TABLE(SDK_MODULE_78, 78)
- OVERLAY_TABLE(SDK_MODULE_79, 79)
- OVERLAY_TABLE(SDK_MODULE_80, 80)
- OVERLAY_TABLE(SDK_MODULE_81, 81)
- OVERLAY_TABLE(SDK_MODULE_82, 82)
- OVERLAY_TABLE(SDK_MODULE_83, 83)
- OVERLAY_TABLE(SDK_MODULE_84, 84)
- OVERLAY_TABLE(SDK_MODULE_85, 85)
- OVERLAY_TABLE(SDK_MODULE_86, 86)
- } > .overlay
-
- .MODULE.00 : AT (0x108400)
+ WRITEW _start_ModuleParams - ADDR(arm9);
+ WRITEW 0;
+ } > binary.STATIC_FOOTER
+
+ .MODULE_00 :
{
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_00_ID = 0;
+ SDK_OVERLAY.MODULE_00.ID = 0;
+ SDK_OVERLAY.MODULE_00.START = .;
module_00_dummy.o (.text)
+ module_00_dummy.o (.rodata)
+ module_00_dummy.o (.init)
+ SDK_OVERLAY.MODULE_00.SINIT_START = .;
+ module_00_dummy.o (.ctor)
+ module_00_dummy.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_00.SINIT_END = .;
+ . = ALIGN(32);
module_00_dummy.o (.sdata)
module_00_dummy.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_00.END = .;
+ SDK_OVERLAY.MODULE_00.SIZE = SDK_OVERLAY.MODULE_00.END - SDK_OVERLAY.MODULE_00.START;
} > MODULE_00
- .MODULE.00.bss :
+ .MODULE_00.bss :
{
- module_00_dummy.o (.sbss)
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_00.BSS_START = .;
module_00_dummy.o (.bss)
+ module_00_dummy.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_00.BSS_END = .;
+ SDK_OVERLAY.MODULE_00.BSS_SIZE = SDK_OVERLAY.MODULE_00.BSS_END - SDK_OVERLAY.MODULE_00.BSS_START;
} >> MODULE_00
- .MODULE.01 : AT (0x108600)
+ .MODULE_01 :
{
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_01_ID = 1;
+ SDK_OVERLAY.MODULE_01.ID = 1;
+ SDK_OVERLAY.MODULE_01.START = .;
module_01.o (.text)
+ module_01.o (.rodata)
+ module_01.o (.init)
+ SDK_OVERLAY.MODULE_01.SINIT_START = .;
+ module_01.o (.ctor)
+ module_01.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_01.SINIT_END = .;
+ . = ALIGN(32);
module_01.o (.sdata)
module_01.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_01.END = .;
+ SDK_OVERLAY.MODULE_01.SIZE = SDK_OVERLAY.MODULE_01.END - SDK_OVERLAY.MODULE_01.START;
} > MODULE_01
- .MODULE.01.bss :
+ .MODULE_01.bss :
{
- module_01.o (.sbss)
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_01.BSS_START = .;
module_01.o (.bss)
+ module_01.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_01.BSS_END = .;
+ SDK_OVERLAY.MODULE_01.BSS_SIZE = SDK_OVERLAY.MODULE_01.BSS_END - SDK_OVERLAY.MODULE_01.BSS_START;
} >> MODULE_01
- .MODULE.02 : AT (0x108800)
+ .MODULE_02 :
{
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_02_ID = 2;
+ SDK_OVERLAY.MODULE_02.ID = 2;
+ SDK_OVERLAY.MODULE_02.START = .;
module_02_dummy.o (.text)
+ module_02_dummy.o (.rodata)
+ SDK_OVERLAY.MODULE_02.SINIT_START = .;
+ module_02_dummy.o (.ctor)
+ module_02_dummy.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_02.SINIT_END = .;
+ . = ALIGN(32);
module_02_dummy.o (.sdata)
module_02_dummy.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_02.END = .;
+ SDK_OVERLAY.MODULE_02.SIZE = SDK_OVERLAY.MODULE_02.END - SDK_OVERLAY.MODULE_02.START;
} > MODULE_02
- .MODULE.02.bss :
+ .MODULE_02.bss :
{
- module_02_dummy.o (.sbss)
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_02.BSS_START = .;
module_02_dummy.o (.bss)
+ module_02_dummy.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_02.BSS_END = .;
+ SDK_OVERLAY.MODULE_02.BSS_SIZE = SDK_OVERLAY.MODULE_02.BSS_END - SDK_OVERLAY.MODULE_02.BSS_START;
} >> MODULE_02
- .MODULE.03 : AT (0x108A00)
+ .MODULE_03 :
{
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_03_ID = 3;
+ SDK_OVERLAY.MODULE_03.ID = 3;
+ SDK_OVERLAY.MODULE_03.START = .;
module_03_dummy.o (.text)
+ module_03_dummy.o (.rodata)
+ module_03_dummy.o (.init)
+ SDK_OVERLAY.MODULE_03.SINIT_START = .;
+ module_03_dummy.o (.ctor)
+ module_03_dummy.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_03.SINIT_END = .;
+ . = ALIGN(32);
module_03_dummy.o (.sdata)
module_03_dummy.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_03.END = .;
+ SDK_OVERLAY.MODULE_03.SIZE = SDK_OVERLAY.MODULE_03.END - SDK_OVERLAY.MODULE_03.START;
} > MODULE_03
- .MODULE.03.bss :
+ .MODULE_03.bss :
{
- module_03_dummy.o (.sbss)
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_03.BSS_START = .;
module_03_dummy.o (.bss)
+ module_03_dummy.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_03.BSS_END = .;
+ SDK_OVERLAY.MODULE_03.BSS_SIZE = SDK_OVERLAY.MODULE_03.BSS_END - SDK_OVERLAY.MODULE_03.BSS_START;
} >> MODULE_03
- .MODULE.04 : AT (0x108C00)
+ .MODULE_04 :
{
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_04_ID = 4;
+ SDK_OVERLAY.MODULE_04.ID = 4;
+ SDK_OVERLAY.MODULE_04.START = .;
thumb_04.o (.text)
arm_04.o (.text)
- thumb_04.o (.sdata)
- arm_04.o (.sdata)
thumb_04.o (.rodata)
arm_04.o (.rodata)
+ thumb_04.o (.init)
+ arm_04.o (.init)
+ SDK_OVERLAY.MODULE_04.SINIT_START = .;
+ thumb_04.o (.ctor)
+ arm_04.o (.ctor)
+ thumb_04.o (.sinit)
+ arm_04.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_04.SINIT_END = .;
+ . = ALIGN(32);
+ thumb_04.o (.sdata)
+ arm_04.o (.sdata)
thumb_04.o (.data)
arm_04.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_04.END = .;
+ SDK_OVERLAY.MODULE_04.SIZE = SDK_OVERLAY.MODULE_04.END - SDK_OVERLAY.MODULE_04.START;
} > MODULE_04
- .MODULE.04.bss :
+ .MODULE_04.bss :
{
- thumb_04.o (.sbss)
- arm_04.o (.sbss)
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_04.BSS_START = .;
thumb_04.o (.bss)
arm_04.o (.bss)
+ thumb_04.o (.sbss)
+ arm_04.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_04.BSS_END = .;
+ SDK_OVERLAY.MODULE_04.BSS_SIZE = SDK_OVERLAY.MODULE_04.BSS_END - SDK_OVERLAY.MODULE_04.BSS_START;
} >> MODULE_04
- .MODULE.05 : AT (0x141400)
+ .MODULE_05 :
{
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_05_ID = 5;
+ SDK_OVERLAY.MODULE_05.ID = 5;
+ SDK_OVERLAY.MODULE_05.START = .;
module_05.o (.text)
+ module_05.o (.rodata)
+ module_05.o (.init)
+ SDK_OVERLAY.MODULE_05.SINIT_START = .;
+ module_05.o (.ctor)
+ module_05.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_05.SINIT_END = .;
+ . = ALIGN(32);
module_05.o (.sdata)
module_05.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_05.END = .;
+ SDK_OVERLAY.MODULE_05.SIZE = SDK_OVERLAY.MODULE_05.END - SDK_OVERLAY.MODULE_05.START;
} > MODULE_05
- .MODULE.05.bss :
+ .MODULE_05.bss :
{
- module_05.o (.sbss)
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_05.BSS_START = .;
module_05.o (.bss)
+ module_05.o (.sbss)
+ SDK_OVERLAY.MODULE_05.BSS_END = .;
+ SDK_OVERLAY.MODULE_05.BSS_SIZE = SDK_OVERLAY.MODULE_05.BSS_END - SDK_OVERLAY.MODULE_05.BSS_START;
} >> MODULE_05
- .MODULE.06 : AT (0x167600)
+ .MODULE_06 :
{
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_06_ID = 6;
+ SDK_OVERLAY.MODULE_06.ID = 6;
+ SDK_OVERLAY.MODULE_06.START = .;
module_06.o (.text)
+ module_06.o (.rodata)
+ module_06.o (.init)
+ SDK_OVERLAY.MODULE_06.SINIT_START = .;
+ module_06.o (.ctor)
+ module_06.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_06.SINIT_END = .;
+ . = ALIGN(32);
module_06.o (.sdata)
module_06.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_06.END = .;
+ SDK_OVERLAY.MODULE_06.SIZE = SDK_OVERLAY.MODULE_06.END - SDK_OVERLAY.MODULE_06.START;
} > MODULE_06
- .MODULE.06.bss :
+ .MODULE_06.bss :
{
- module_06.o (.sbss)
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_06.BSS_START = .;
module_06.o (.bss)
+ module_06.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_06.BSS_END = .;
+ SDK_OVERLAY.MODULE_06.BSS_SIZE = SDK_OVERLAY.MODULE_06.BSS_END - SDK_OVERLAY.MODULE_06.BSS_START;
} >> MODULE_06
- .MODULE.07 : AT (0x180400)
+ .MODULE_07 :
{
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_07_ID = 7;
+ SDK_OVERLAY.MODULE_07.ID = 7;
+ SDK_OVERLAY.MODULE_07.START = .;
module_07.o (.text)
+ module_07.o (.rodata)
+ module_07.o (.init)
+ SDK_OVERLAY.MODULE_07.SINIT_START = .;
+ module_07.o (.ctor)
+ module_07.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_07.SINIT_END = .;
+ . = ALIGN(32);
module_07.o (.sdata)
module_07.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_07.END = .;
+ SDK_OVERLAY.MODULE_07.SIZE = SDK_OVERLAY.MODULE_07.END - SDK_OVERLAY.MODULE_07.START;
} > MODULE_07
- .MODULE.07.bss :
+ .MODULE_07.bss :
{
- module_07.o (.sbss)
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_07.BSS_START = .;
module_07.o (.bss)
+ module_07.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_07.BSS_END = .;
+ SDK_OVERLAY.MODULE_07.BSS_SIZE = SDK_OVERLAY.MODULE_07.BSS_END - SDK_OVERLAY.MODULE_07.BSS_START;
} >> MODULE_07
- .MODULE.08 : AT (0x183800)
+ .MODULE_08 :
{
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_08_ID = 8;
+ SDK_OVERLAY.MODULE_08.ID = 8;
+ SDK_OVERLAY.MODULE_08.START = .;
module_08.o (.text)
+ module_08.o (.rodata)
+ module_08.o (.init)
+ SDK_OVERLAY.MODULE_08.SINIT_START = .;
+ module_08.o (.ctor)
+ module_08.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_08.SINIT_END = .;
+ . = ALIGN(32);
module_08.o (.sdata)
module_08.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_08.END = .;
+ SDK_OVERLAY.MODULE_08.SIZE = SDK_OVERLAY.MODULE_08.END - SDK_OVERLAY.MODULE_08.START;
} > MODULE_08
- .MODULE.08.bss :
+ .MODULE_08.bss :
{
- module_08.o (.sbss)
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_08.BSS_START = .;
module_08.o (.bss)
+ module_08.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_08.BSS_END = .;
+ SDK_OVERLAY.MODULE_08.BSS_SIZE = SDK_OVERLAY.MODULE_08.BSS_END - SDK_OVERLAY.MODULE_08.BSS_START;
} >> MODULE_08
- .MODULE.09 : AT (0x19F000)
+ .MODULE_09 :
{
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_09_ID = 9;
+ SDK_OVERLAY.MODULE_09.ID = 9;
+ SDK_OVERLAY.MODULE_09.START = .;
module_09.o (.text)
+ module_09.o (.rodata)
+ module_09.o (.init)
+ SDK_OVERLAY.MODULE_09.SINIT_START = .;
+ module_09.o (.ctor)
+ module_09.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_09.SINIT_END = .;
+ . = ALIGN(32);
module_09.o (.sdata)
module_09.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_09.END = .;
+ SDK_OVERLAY.MODULE_09.SIZE = SDK_OVERLAY.MODULE_09.END - SDK_OVERLAY.MODULE_09.START;
} > MODULE_09
- .MODULE.09.bss :
+ .MODULE_09.bss :
{
- module_09.o (.sbss)
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_09.BSS_START = .;
module_09.o (.bss)
+ module_09.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_09.BSS_END = .;
+ SDK_OVERLAY.MODULE_09.BSS_SIZE = SDK_OVERLAY.MODULE_09.BSS_END - SDK_OVERLAY.MODULE_09.BSS_START;
} >> MODULE_09
- .MODULE.10 : AT (0x1A9200)
+ .MODULE_10 :
{
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_10_ID = 10;
+ SDK_OVERLAY.MODULE_10.ID = 10;
+ SDK_OVERLAY.MODULE_10.START = .;
module_10_dummy.o (.text)
+ module_10_dummy.o (.rodata)
+ module_10_dummy.o (.init)
+ SDK_OVERLAY.MODULE_10.SINIT_START = .;
+ module_10_dummy.o (.ctor)
+ module_10_dummy.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_10.SINIT_END = .;
+ . = ALIGN(32);
module_10_dummy.o (.sdata)
module_10_dummy.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_10.END = .;
+ SDK_OVERLAY.MODULE_10.SIZE = SDK_OVERLAY.MODULE_10.END - SDK_OVERLAY.MODULE_10.START;
} > MODULE_10
- .MODULE.10.bss :
+ .MODULE_10.bss :
{
- module_10_dummy.o (.sbss)
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_10.BSS_START = .;
module_10_dummy.o (.bss)
+ module_10_dummy.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_10.BSS_END = .;
+ SDK_OVERLAY.MODULE_10.BSS_SIZE = SDK_OVERLAY.MODULE_10.BSS_END - SDK_OVERLAY.MODULE_10.BSS_START;
} >> MODULE_10
- .MODULE.11 : AT (0x1A9400)
+ .MODULE_11 :
{
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_11_ID = 11;
+ SDK_OVERLAY.MODULE_11.ID = 11;
+ SDK_OVERLAY.MODULE_11.START = .;
module_11.o (.text)
+ module_11.o (.rodata)
+ module_11.o (.init)
+ // SDK_OVERLAY.MODULE_11.SINIT_START = .;
+ module_11.o (.ctor)
+ module_11.o (.sinit)
+ // SDK_OVERLAY.MODULE_11.SINIT_END = .;
+ // WRITEW 0;
+ . = ALIGN(32);
module_11.o (.sdata)
module_11.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_11.END = .;
+ SDK_OVERLAY.MODULE_11.SIZE = SDK_OVERLAY.MODULE_11.END - SDK_OVERLAY.MODULE_11.START;
} > MODULE_11
- .MODULE.11.bss :
+ .MODULE_11.bss :
{
- module_11.o (.sbss)
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_11.BSS_START = .;
module_11.o (.bss)
+ module_11.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_11.BSS_END = .;
+ SDK_OVERLAY.MODULE_11.BSS_SIZE = SDK_OVERLAY.MODULE_11.BSS_END - SDK_OVERLAY.MODULE_11.BSS_START;
} >> MODULE_11
- OVERLAY_FILE(12, 0x1DBE00, FILE_1DFE00.o)
- OVERLAY_FILE(13, 0x1F5200, FILE_1F9200.o)
- OVERLAY_FILE(14, 0x223E00, FILE_227E00.o)
- OVERLAY_FILE(15, 0x233400, FILE_237400.o)
- OVERLAY_FILE(16, 0x237C00, FILE_23BC00.o)
- OVERLAY_FILE(17, 0x260200, FILE_264200.o)
- OVERLAY_FILE(18, 0x267200, FILE_26B200.o)
- OVERLAY_FILE(19, 0x27F000, FILE_283000.o)
- OVERLAY_FILE(20, 0x27F200, FILE_283200.o)
- OVERLAY_FILE(21, 0x281600, FILE_285600.o)
- OVERLAY_FILE(22, 0x281C00, FILE_285C00.o)
- OVERLAY_FILE(23, 0x282C00, FILE_286C00.o)
- OVERLAY_FILE(24, 0x284600, FILE_288600.o)
- OVERLAY_FILE(25, 0x285000, FILE_289000.o)
- OVERLAY_FILE(26, 0x285600, FILE_289600.o)
- OVERLAY_FILE(27, 0x285E00, FILE_289E00.o)
- OVERLAY_FILE(28, 0x286A00, FILE_28AA00.o)
- OVERLAY_FILE(29, 0x288200, FILE_28C200.o)
- OVERLAY_FILE(30, 0x288C00, FILE_28CC00.o)
- OVERLAY_FILE(31, 0x289200, FILE_28D200.o)
- OVERLAY_FILE(32, 0x289800, FILE_28D800.o)
- OVERLAY_FILE(33, 0x289E00, FILE_28DE00.o)
- OVERLAY_FILE(34, 0x28A200, FILE_28E200.o)
- OVERLAY_FILE(35, 0x28A800, FILE_28E800.o)
- OVERLAY_FILE(36, 0x28B200, FILE_28F200.o)
- OVERLAY_FILE(37, 0x28C000, FILE_290000.o)
- OVERLAY_FILE(38, 0x28C600, FILE_290600.o)
- OVERLAY_FILE(39, 0x28D200, FILE_291200.o)
- OVERLAY_FILE(40, 0x28E000, FILE_292000.o)
- OVERLAY_FILE(41, 0x28EE00, FILE_292E00.o)
- OVERLAY_FILE(42, 0x290000, FILE_294000.o)
- OVERLAY_FILE(43, 0x290A00, FILE_294A00.o)
- OVERLAY_FILE(44, 0x291400, FILE_295400.o)
- OVERLAY_FILE(45, 0x291A00, FILE_295A00.o)
- OVERLAY_FILE(46, 0x292400, FILE_296400.o)
- OVERLAY_FILE(47, 0x292800, FILE_296800.o)
- OVERLAY_FILE(48, 0x293600, FILE_297600.o)
- OVERLAY_FILE(49, 0x294000, FILE_298000.o)
- OVERLAY_FILE(50, 0x294600, FILE_298600.o)
- OVERLAY_FILE(51, 0x294A00, FILE_298A00.o)
- OVERLAY_FILE(52, 0x295A00, FILE_299A00.o)
- OVERLAY_FILE(53, 0x295E00, FILE_299E00.o)
- OVERLAY_FILE(54, 0x298400, FILE_29C400.o)
- OVERLAY_FILE(55, 0x29A800, FILE_29E800.o)
- OVERLAY_FILE(56, 0x29DA00, FILE_2A1A00.o)
- OVERLAY_FILE(57, 0x2A2200, FILE_2A6200.o)
- OVERLAY_FILE(58, 0x2A4800, FILE_2A8800.o)
- OVERLAY_FILE(59, 0x2A5E00, FILE_2A9E00.o)
- OVERLAY_FILE(60, 0x2A8C00, FILE_2ACC00.o)
- OVERLAY_FILE(61, 0x2A9A00, FILE_2ADA00.o)
- OVERLAY_FILE(62, 0x2AAC00, FILE_2AEC00.o)
- OVERLAY_FILE(63, 0x2AEA00, FILE_2B2A00.o)
- OVERLAY_FILE(64, 0x2B3600, FILE_2B7600.o)
- OVERLAY_FILE(65, 0x2B5400, FILE_2B9400.o)
- OVERLAY_FILE(66, 0x2B8400, FILE_2BC400.o)
- OVERLAY_FILE(67, 0x2BAC00, FILE_2BEC00.o)
- OVERLAY_FILE(68, 0x2BD200, FILE_2C1200.o)
-
- .MODULE.69 : AT (0x2BE800)
+
+ .MODULE_12 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_12_ID = 12;
+ SDK_OVERLAY.MODULE_12.ID = 12;
+ SDK_OVERLAY.MODULE_12.START = .;
+ module_12.o (.text)
+ module_12.o (.rodata)
+ module_12.o (.init)
+ SDK_OVERLAY.MODULE_12.SINIT_START = .;
+ module_12.o (.ctor)
+ module_12.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_12.SINIT_END = .;
+ . = ALIGN(32);
+ module_12.o (.sdata)
+ module_12.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_12.END = .;
+ SDK_OVERLAY.MODULE_12.SIZE = SDK_OVERLAY.MODULE_12.END - SDK_OVERLAY.MODULE_12.START;
+ } > MODULE_12
+
+ .MODULE_12.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_12.BSS_START = .;
+ module_12.o (.bss)
+ module_12.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_12.BSS_END = .;
+ SDK_OVERLAY.MODULE_12.BSS_SIZE = SDK_OVERLAY.MODULE_12.BSS_END - SDK_OVERLAY.MODULE_12.BSS_START;
+ } >> MODULE_12
+
+ .MODULE_13 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_13_ID = 13;
+ SDK_OVERLAY.MODULE_13.ID = 13;
+ SDK_OVERLAY.MODULE_13.START = .;
+ module_13_init.o (.text)
+ module_13_arm1.o (.text)
+ module_13_thumb.o (.text)
+ module_13_arm2.o (.text)
+ module_13_init.o (.rodata)
+ module_13_arm1.o (.rodata)
+ module_13_thumb.o (.rodata)
+ module_13_arm2.o (.rodata)
+ module_13_init.o (.init)
+ module_13_arm1.o (.init)
+ module_13_thumb.o (.init)
+ module_13_arm2.o (.init)
+ SDK_OVERLAY.MODULE_13.SINIT_START = .;
+ module_13_init.o (.ctor)
+ module_13_arm1.o (.ctor)
+ module_13_thumb.o (.ctor)
+ module_13_arm2.o (.ctor)
+ module_13_init.o (.sinit)
+ module_13_arm1.o (.sinit)
+ module_13_thumb.o (.sinit)
+ module_13_arm2.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_13.SINIT_END = .;
+ . = ALIGN(32);
+ module_13_init.o (.sdata)
+ module_13_arm1.o (.sdata)
+ module_13_thumb.o (.sdata)
+ module_13_arm2.o (.sdata)
+ module_13_init.o (.data)
+ module_13_arm1.o (.data)
+ module_13_thumb.o (.data)
+ module_13_arm2.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_13.END = .;
+ SDK_OVERLAY.MODULE_13.SIZE = SDK_OVERLAY.MODULE_13.END - SDK_OVERLAY.MODULE_13.START;
+ } > MODULE_13
+
+ .MODULE_13.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_13.BSS_START = .;
+ module_13_init.o (.bss)
+ module_13_arm1.o (.bss)
+ module_13_thumb.o (.bss)
+ module_13_arm2.o (.bss)
+ module_13_init.o (.sbss)
+ module_13_arm1.o (.sbss)
+ module_13_thumb.o (.sbss)
+ module_13_arm2.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_13.BSS_END = .;
+ SDK_OVERLAY.MODULE_13.BSS_SIZE = SDK_OVERLAY.MODULE_13.BSS_END - SDK_OVERLAY.MODULE_13.BSS_START;
+ } >> MODULE_13
+
+ .MODULE_14 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_14_ID = 14;
+ SDK_OVERLAY.MODULE_14.ID = 14;
+ SDK_OVERLAY.MODULE_14.START = .;
+ module_14.o (.text)
+ module_14.o (.rodata)
+ module_14.o (.init)
+ SDK_OVERLAY.MODULE_14.SINIT_START = .;
+ module_14.o (.ctor)
+ module_14.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_14.SINIT_END = .;
+ . = ALIGN(32);
+ module_14.o (.sdata)
+ module_14.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_14.END = .;
+ SDK_OVERLAY.MODULE_14.SIZE = SDK_OVERLAY.MODULE_14.END - SDK_OVERLAY.MODULE_14.START;
+ } > MODULE_14
+
+ .MODULE_14.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_14.BSS_START = .;
+ module_14.o (.bss)
+ module_14.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_14.BSS_END = .;
+ SDK_OVERLAY.MODULE_14.BSS_SIZE = SDK_OVERLAY.MODULE_14.BSS_END - SDK_OVERLAY.MODULE_14.BSS_START;
+ } >> MODULE_14
+
+ .MODULE_15 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_15_ID = 15;
+ SDK_OVERLAY.MODULE_15.ID = 15;
+ SDK_OVERLAY.MODULE_15.START = .;
+ module_15.o (.text)
+ module_15.o (.rodata)
+ module_15.o (.init)
+ SDK_OVERLAY.MODULE_15.SINIT_START = .;
+ module_15.o (.ctor)
+ module_15.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_15.SINIT_END = .;
+ . = ALIGN(32);
+ module_15.o (.sdata)
+ module_15.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_15.END = .;
+ SDK_OVERLAY.MODULE_15.SIZE = SDK_OVERLAY.MODULE_15.END - SDK_OVERLAY.MODULE_15.START;
+ } > MODULE_15
+
+ .MODULE_15.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_15.BSS_START = .;
+ module_15.o (.bss)
+ module_15.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_15.BSS_END = .;
+ SDK_OVERLAY.MODULE_15.BSS_SIZE = SDK_OVERLAY.MODULE_15.BSS_END - SDK_OVERLAY.MODULE_15.BSS_START;
+ } >> MODULE_15
+
+ .MODULE_16 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_16_ID = 16;
+ SDK_OVERLAY.MODULE_16.ID = 16;
+ SDK_OVERLAY.MODULE_16.START = .;
+ module_16.o (.text)
+ module_16.o (.rodata)
+ module_16.o (.init)
+ SDK_OVERLAY.MODULE_16.SINIT_START = .;
+ module_16.o (.ctor)
+ module_16.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_16.SINIT_END = .;
+ . = ALIGN(32);
+ module_16.o (.sdata)
+ module_16.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_16.END = .;
+ SDK_OVERLAY.MODULE_16.SIZE = SDK_OVERLAY.MODULE_16.END - SDK_OVERLAY.MODULE_16.START;
+ } > MODULE_16
+
+ .MODULE_16.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_16.BSS_START = .;
+ module_16.o (.bss)
+ module_16.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_16.BSS_END = .;
+ SDK_OVERLAY.MODULE_16.BSS_SIZE = SDK_OVERLAY.MODULE_16.BSS_END - SDK_OVERLAY.MODULE_16.BSS_START;
+ } >> MODULE_16
+
+ .MODULE_17 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_17_ID = 17;
+ SDK_OVERLAY.MODULE_17.ID = 17;
+ SDK_OVERLAY.MODULE_17.START = .;
+ module_17.o (.text)
+ module_17.o (.rodata)
+ module_17.o (.init)
+ SDK_OVERLAY.MODULE_17.SINIT_START = .;
+ module_17.o (.ctor)
+ module_17.o (.init)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_17.SINIT_END = .;
+ . = ALIGN(32);
+ module_17.o (.sdata)
+ module_17.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_17.END = .;
+ SDK_OVERLAY.MODULE_17.SIZE = SDK_OVERLAY.MODULE_17.END - SDK_OVERLAY.MODULE_17.START;
+ } > MODULE_17
+
+ .MODULE_17.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_17.BSS_START = .;
+ module_17.o (.bss)
+ module_17.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_17.BSS_END = .;
+ SDK_OVERLAY.MODULE_17.BSS_SIZE = SDK_OVERLAY.MODULE_17.BSS_END - SDK_OVERLAY.MODULE_17.BSS_START;
+ } >> MODULE_17
+
+ .MODULE_18 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_18_ID = 18;
+ SDK_OVERLAY.MODULE_18.ID = 18;
+ SDK_OVERLAY.MODULE_18.START = .;
+ module_18.o (.text)
+ module_18.o (.rodata)
+ module_18.o (.init)
+ SDK_OVERLAY.MODULE_18.SINIT_START = .;
+ module_18.o (.ctor)
+ module_18.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_18.SINIT_END = .;
+ . = ALIGN(32);
+ module_18.o (.sdata)
+ module_18.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_18.END = .;
+ SDK_OVERLAY.MODULE_18.SIZE = SDK_OVERLAY.MODULE_18.END - SDK_OVERLAY.MODULE_18.START;
+ } > MODULE_18
+
+ .MODULE_18.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_18.BSS_START = .;
+ module_18.o (.bss)
+ module_18.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_18.BSS_END = .;
+ SDK_OVERLAY.MODULE_18.BSS_SIZE = SDK_OVERLAY.MODULE_18.BSS_END - SDK_OVERLAY.MODULE_18.BSS_START;
+ } >> MODULE_18
+
+ .MODULE_19 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_19_ID = 19;
+ SDK_OVERLAY.MODULE_19.ID = 19;
+ SDK_OVERLAY.MODULE_19.START = .;
+ module_19.o (.text)
+ module_19.o (.rodata)
+ module_19.o (.init)
+ SDK_OVERLAY.MODULE_19.SINIT_START = .;
+ module_19.o (.ctor)
+ module_19.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_19.SINIT_END = .;
+ . = ALIGN(32);
+ module_19.o (.sdata)
+ module_19.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_19.END = .;
+ SDK_OVERLAY.MODULE_19.SIZE = SDK_OVERLAY.MODULE_19.END - SDK_OVERLAY.MODULE_19.START;
+ } > MODULE_19
+
+ .MODULE_19.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_19.BSS_START = .;
+ module_19.o (.bss)
+ module_19.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_19.BSS_END = .;
+ SDK_OVERLAY.MODULE_19.BSS_SIZE = SDK_OVERLAY.MODULE_19.BSS_END - SDK_OVERLAY.MODULE_19.BSS_START;
+ } >> MODULE_19
+
+ .MODULE_20 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_20_ID = 20;
+ SDK_OVERLAY.MODULE_20.ID = 20;
+ SDK_OVERLAY.MODULE_20.START = .;
+ module_20.o (.text)
+ module_20.o (.rodata)
+ module_20.o (.init)
+ SDK_OVERLAY.MODULE_20.SINIT_START = .;
+ module_20.o (.ctor)
+ module_20.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_20.SINIT_END = .;
+ . = ALIGN(32);
+ module_20.o (.sdata)
+ module_20.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_20.END = .;
+ SDK_OVERLAY.MODULE_20.SIZE = SDK_OVERLAY.MODULE_20.END - SDK_OVERLAY.MODULE_20.START;
+ } > MODULE_20
+
+ .MODULE_20.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_20.BSS_START = .;
+ module_20.o (.bss)
+ module_20.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_20.BSS_END = .;
+ SDK_OVERLAY.MODULE_20.BSS_SIZE = SDK_OVERLAY.MODULE_20.BSS_END - SDK_OVERLAY.MODULE_20.BSS_START;
+ } >> MODULE_20
+
+ .MODULE_21 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_21_ID = 21;
+ SDK_OVERLAY.MODULE_21.ID = 21;
+ SDK_OVERLAY.MODULE_21.START = .;
+ module_21.o (.text)
+ module_21.o (.rodata)
+ module_21.o (.init)
+ // SDK_OVERLAY.MODULE_21.SINIT_START = .;
+ module_21.o (.ctor)
+ module_21.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_21.SINIT_END = ;
+ . = ALIGN(32);
+ module_21.o (.sdata)
+ module_21.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_21.END = .;
+ SDK_OVERLAY.MODULE_21.SIZE = SDK_OVERLAY.MODULE_21.END - SDK_OVERLAY.MODULE_21.START;
+ } > MODULE_21
+
+ .MODULE_21.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_21.BSS_START = .;
+ module_21.o (.bss)
+ module_21.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_21.BSS_END = .;
+ SDK_OVERLAY.MODULE_21.BSS_SIZE = SDK_OVERLAY.MODULE_21.BSS_END - SDK_OVERLAY.MODULE_21.BSS_START;
+ } >> MODULE_21
+
+ .MODULE_22 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_22_ID = 22;
+ SDK_OVERLAY.MODULE_22.ID = 22;
+ SDK_OVERLAY.MODULE_22.START = .;
+ module_22.o (.text)
+ module_22.o (.rodata)
+ module_22.o (.init)
+ SDK_OVERLAY.MODULE_22.SINIT_START = .;
+ module_22.o (.ctor)
+ module_22.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_22.SINIT_END = .;
+ . = ALIGN(32);
+ module_22.o (.sdata)
+ module_22.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_22.END = .;
+ SDK_OVERLAY.MODULE_22.SIZE = SDK_OVERLAY.MODULE_22.END - SDK_OVERLAY.MODULE_22.START;
+ } > MODULE_22
+
+ .MODULE_22.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_22.BSS_START = .;
+ module_22.o (.bss)
+ module_22.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_22.BSS_END = .;
+ SDK_OVERLAY.MODULE_22.BSS_SIZE = SDK_OVERLAY.MODULE_22.BSS_END - SDK_OVERLAY.MODULE_22.BSS_START;
+ } >> MODULE_22
+
+ .MODULE_23 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_23_ID = 23;
+ SDK_OVERLAY.MODULE_23.ID = 23;
+ SDK_OVERLAY.MODULE_23.START = .;
+ module_23.o (.text)
+ module_23.o (.rodata)
+ module_23.o (.init)
+ // SDK_OVERLAY.MODULE_23.SINIT_START = .;
+ module_23.o (.ctor)
+ module_23.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_23.SINIT_END = .;
+ . = ALIGN(32);
+ module_23.o (.sdata)
+ module_23.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_23.END = .;
+ SDK_OVERLAY.MODULE_23.SIZE = SDK_OVERLAY.MODULE_23.END - SDK_OVERLAY.MODULE_23.START;
+ } > MODULE_23
+
+ .MODULE_23.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_23.BSS_START = .;
+ module_23.o (.bss)
+ module_23.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_23.BSS_END = .;
+ SDK_OVERLAY.MODULE_23.BSS_SIZE = SDK_OVERLAY.MODULE_23.BSS_END - SDK_OVERLAY.MODULE_23.BSS_START;
+ } >> MODULE_23
+
+ .MODULE_24 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_24_ID = 24;
+ SDK_OVERLAY.MODULE_24.ID = 24;
+ SDK_OVERLAY.MODULE_24.START = .;
+ module_24.o (.text)
+ module_24.o (.rodata)
+ module_24.o (.init)
+ SDK_OVERLAY.MODULE_24.SINIT_START = .;
+ module_24.o (.ctor)
+ module_24.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_24.SINIT_END = .;
+ . = ALIGN(32);
+ module_24.o (.sdata)
+ module_24.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_24.END = .;
+ SDK_OVERLAY.MODULE_24.SIZE = SDK_OVERLAY.MODULE_24.END - SDK_OVERLAY.MODULE_24.START;
+ } > MODULE_24
+
+ .MODULE_24.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_24.BSS_START = .;
+ module_24.o (.bss)
+ module_24.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_24.BSS_END = .;
+ SDK_OVERLAY.MODULE_24.BSS_SIZE = SDK_OVERLAY.MODULE_24.BSS_END - SDK_OVERLAY.MODULE_24.BSS_START;
+ } >> MODULE_24
+
+ .MODULE_25 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_25_ID = 25;
+ SDK_OVERLAY.MODULE_25.ID = 25;
+ SDK_OVERLAY.MODULE_25.START = .;
+ module_25.o (.text)
+ module_25.o (.rodata)
+ module_25.o (.init)
+ SDK_OVERLAY.MODULE_25.SINIT_START = .;
+ module_25.o (.ctor)
+ module_25.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_25.SINIT_END = .;
+ . = ALIGN(32);
+ module_25.o (.sdata)
+ module_25.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_25.END = .;
+ SDK_OVERLAY.MODULE_25.SIZE = SDK_OVERLAY.MODULE_25.END - SDK_OVERLAY.MODULE_25.START;
+ } > MODULE_25
+
+ .MODULE_25.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_25.BSS_START = .;
+ module_25.o (.bss)
+ module_25.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_25.BSS_END = .;
+ SDK_OVERLAY.MODULE_25.BSS_SIZE = SDK_OVERLAY.MODULE_25.BSS_END - SDK_OVERLAY.MODULE_25.BSS_START;
+ } >> MODULE_25
+
+ .MODULE_26 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_26_ID = 26;
+ SDK_OVERLAY.MODULE_26.ID = 26;
+ SDK_OVERLAY.MODULE_26.START = .;
+ module_26.o (.text)
+ module_26.o (.rodata)
+ module_26.o (.init)
+ SDK_OVERLAY.MODULE_26.SINIT_START = .;
+ module_26.o (.ctor)
+ module_26.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_26.SINIT_END = .;
+ . = ALIGN(32);
+ module_26.o (.sdata)
+ module_26.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_26.END = .;
+ SDK_OVERLAY.MODULE_26.SIZE = SDK_OVERLAY.MODULE_26.END - SDK_OVERLAY.MODULE_26.START;
+ } > MODULE_26
+
+ .MODULE_26.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_26.BSS_START = .;
+ module_26.o (.bss)
+ module_26.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_26.BSS_END = .;
+ SDK_OVERLAY.MODULE_26.BSS_SIZE = SDK_OVERLAY.MODULE_26.BSS_END - SDK_OVERLAY.MODULE_26.BSS_START;
+ } >> MODULE_26
+
+ .MODULE_27 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_27_ID = 27;
+ SDK_OVERLAY.MODULE_27.ID = 27;
+ SDK_OVERLAY.MODULE_27.START = .;
+ module_27.o (.text)
+ module_27.o (.rodata)
+ module_27.o (.init)
+ // SDK_OVERLAY.MODULE_27.SINIT_START = .;
+ module_27.o (.ctor)
+ module_27.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_27.SINIT_END = .;
+ . = ALIGN(32);
+ module_27.o (.sdata)
+ module_27.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_27.END = .;
+ SDK_OVERLAY.MODULE_27.SIZE = SDK_OVERLAY.MODULE_27.END - SDK_OVERLAY.MODULE_27.START;
+ } > MODULE_27
+
+ .MODULE_27.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_27.BSS_START = .;
+ module_27.o (.bss)
+ module_27.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_27.BSS_END = .;
+ SDK_OVERLAY.MODULE_27.BSS_SIZE = SDK_OVERLAY.MODULE_27.BSS_END - SDK_OVERLAY.MODULE_27.BSS_START;
+ } >> MODULE_27
+
+ .MODULE_28 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_28_ID = 28;
+ SDK_OVERLAY.MODULE_28.ID = 28;
+ SDK_OVERLAY.MODULE_28.START = .;
+ module_28.o (.text)
+ module_28.o (.rodata)
+ module_28.o (.init)
+ // SDK_OVERLAY.MODULE_28.SINIT_START = .;
+ module_28.o (.ctor)
+ module_28.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_28.SINIT_END = .;
+ . = ALIGN(32);
+ module_28.o (.sdata)
+ module_28.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_28.END = .;
+ SDK_OVERLAY.MODULE_28.SIZE = SDK_OVERLAY.MODULE_28.END - SDK_OVERLAY.MODULE_28.START;
+ } > MODULE_28
+
+ .MODULE_28.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_28.BSS_START = .;
+ module_28.o (.bss)
+ module_28.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_28.BSS_END = .;
+ SDK_OVERLAY.MODULE_28.BSS_SIZE = SDK_OVERLAY.MODULE_28.BSS_END - SDK_OVERLAY.MODULE_28.BSS_START;
+ } >> MODULE_28
+
+ .MODULE_29 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_29_ID = 29;
+ SDK_OVERLAY.MODULE_29.ID = 29;
+ SDK_OVERLAY.MODULE_29.START = .;
+ module_29.o (.text)
+ module_29.o (.rodata)
+ module_29.o (.init)
+ // SDK_OVERLAY.MODULE_29.SINIT_START = .;
+ module_29.o (.ctor)
+ module_29.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_29.SINIT_END = .;
+ . = ALIGN(32);
+ module_29.o (.sdata)
+ module_29.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_29.END = .;
+ SDK_OVERLAY.MODULE_29.SIZE = SDK_OVERLAY.MODULE_29.END - SDK_OVERLAY.MODULE_29.START;
+ } > MODULE_29
+
+ .MODULE_29.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_29.BSS_START = .;
+ module_29.o (.bss)
+ module_29.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_29.BSS_END = .;
+ SDK_OVERLAY.MODULE_29.BSS_SIZE = SDK_OVERLAY.MODULE_29.BSS_END - SDK_OVERLAY.MODULE_29.BSS_START;
+ } >> MODULE_29
+
+ .MODULE_30 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_30_ID = 30;
+ SDK_OVERLAY.MODULE_30.ID = 30;
+ SDK_OVERLAY.MODULE_30.START = .;
+ module_30.o (.text)
+ module_30.o (.rodata)
+ module_30.o (.init)
+ // SDK_OVERLAY.MODULE_30.SINIT_START = .;
+ module_30.o (.ctor)
+ module_30.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_30.SINIT_END = .;
+ . = ALIGN(32);
+ module_30.o (.sdata)
+ module_30.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_30.END = .;
+ SDK_OVERLAY.MODULE_30.SIZE = SDK_OVERLAY.MODULE_30.END - SDK_OVERLAY.MODULE_30.START;
+ } > MODULE_30
+
+ .MODULE_30.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_30.BSS_START = .;
+ module_30.o (.bss)
+ module_30.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_30.BSS_END = .;
+ SDK_OVERLAY.MODULE_30.BSS_SIZE = SDK_OVERLAY.MODULE_30.BSS_END - SDK_OVERLAY.MODULE_30.BSS_START;
+ } >> MODULE_30
+
+ .MODULE_31 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_31_ID = 31;
+ SDK_OVERLAY.MODULE_31.ID = 31;
+ SDK_OVERLAY.MODULE_31.START = .;
+ module_31.o (.text)
+ module_31.o (.rodata)
+ module_31.o (.init)
+ SDK_OVERLAY.MODULE_31.SINIT_START = .;
+ module_31.o (.ctor)
+ module_31.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_31.SINIT_END = .;
+ . = ALIGN(32);
+ module_31.o (.sdata)
+ module_31.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_31.END = .;
+ SDK_OVERLAY.MODULE_31.SIZE = SDK_OVERLAY.MODULE_31.END - SDK_OVERLAY.MODULE_31.START;
+ } > MODULE_31
+
+ .MODULE_31.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_31.BSS_START = .;
+ module_31.o (.bss)
+ module_31.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_31.BSS_END = .;
+ SDK_OVERLAY.MODULE_31.BSS_SIZE = SDK_OVERLAY.MODULE_31.BSS_END - SDK_OVERLAY.MODULE_31.BSS_START;
+ } >> MODULE_31
+
+ .MODULE_32 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_32_ID = 32;
+ SDK_OVERLAY.MODULE_32.ID = 32;
+ SDK_OVERLAY.MODULE_32.START = .;
+ module_32.o (.text)
+ module_32.o (.rodata)
+ module_32.o (.init)
+ // SDK_OVERLAY.MODULE_32.SINIT_START = .;
+ module_32.o (.ctor)
+ module_32.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_32.SINIT_END = .;
+ . = ALIGN(32);
+ module_32.o (.sdata)
+ module_32.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_32.END = .;
+ SDK_OVERLAY.MODULE_32.SIZE = SDK_OVERLAY.MODULE_32.END - SDK_OVERLAY.MODULE_32.START;
+ } > MODULE_32
+
+ .MODULE_32.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_32.BSS_START = .;
+ module_32.o (.bss)
+ module_32.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_32.BSS_END = .;
+ SDK_OVERLAY.MODULE_32.BSS_SIZE = SDK_OVERLAY.MODULE_32.BSS_END - SDK_OVERLAY.MODULE_32.BSS_START;
+ } >> MODULE_32
+
+ .MODULE_33 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_33_ID = 33;
+ SDK_OVERLAY.MODULE_33.ID = 33;
+ SDK_OVERLAY.MODULE_33.START = .;
+ module_33.o (.text)
+ module_33.o (.rodata)
+ module_33.o (.init)
+ SDK_OVERLAY.MODULE_33.SINIT_START = .;
+ module_33.o (.ctor)
+ module_33.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_33.SINIT_END = .;
+ . = ALIGN(32);
+ module_33.o (.sdata)
+ module_33.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_33.END = .;
+ SDK_OVERLAY.MODULE_33.SIZE = SDK_OVERLAY.MODULE_33.END - SDK_OVERLAY.MODULE_33.START;
+ } > MODULE_33
+
+ .MODULE_33.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_33.BSS_START = .;
+ module_33.o (.bss)
+ module_33.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_33.BSS_END = .;
+ SDK_OVERLAY.MODULE_33.BSS_SIZE = SDK_OVERLAY.MODULE_33.BSS_END - SDK_OVERLAY.MODULE_33.BSS_START;
+ } >> MODULE_33
+
+ .MODULE_34 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_34_ID = 34;
+ SDK_OVERLAY.MODULE_34.ID = 34;
+ SDK_OVERLAY.MODULE_34.START = .;
+ module_34.o (.text)
+ module_34.o (.rodata)
+ module_34.o (.init)
+ // SDK_OVERLAY.MODULE_34.SINIT_START = .;
+ module_34.o (.ctor)
+ module_34.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_34.SINIT_END = .;
+ . = ALIGN(32);
+ module_34.o (.sdata)
+ module_34.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_34.END = .;
+ SDK_OVERLAY.MODULE_34.SIZE = SDK_OVERLAY.MODULE_34.END - SDK_OVERLAY.MODULE_34.START;
+ } > MODULE_34
+
+ .MODULE_34.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_34.BSS_START = .;
+ module_34.o (.bss)
+ module_34.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_34.BSS_END = .;
+ SDK_OVERLAY.MODULE_34.BSS_SIZE = SDK_OVERLAY.MODULE_34.BSS_END - SDK_OVERLAY.MODULE_34.BSS_START;
+ } >> MODULE_34
+
+ .MODULE_35 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_35_ID = 35;
+ SDK_OVERLAY.MODULE_35.ID = 35;
+ SDK_OVERLAY.MODULE_35.START = .;
+ module_35.o (.text)
+ module_35.o (.rodata)
+ module_35.o (.init)
+ SDK_OVERLAY.MODULE_35.SINIT_START = .;
+ module_35.o (.ctor)
+ module_35.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_35.SINIT_END = .;
+ . = ALIGN(32);
+ module_35.o (.sdata)
+ module_35.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_35.END = .;
+ SDK_OVERLAY.MODULE_35.SIZE = SDK_OVERLAY.MODULE_35.END - SDK_OVERLAY.MODULE_35.START;
+ } > MODULE_35
+
+ .MODULE_35.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_35.BSS_START = .;
+ module_35.o (.bss)
+ module_35.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_35.BSS_END = .;
+ SDK_OVERLAY.MODULE_35.BSS_SIZE = SDK_OVERLAY.MODULE_35.BSS_END - SDK_OVERLAY.MODULE_35.BSS_START;
+ } >> MODULE_35
+
+ .MODULE_36 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_36_ID = 36;
+ SDK_OVERLAY.MODULE_36.ID = 36;
+ SDK_OVERLAY.MODULE_36.START = .;
+ module_36.o (.text)
+ module_36.o (.rodata)
+ module_36.o (.init)
+ // SDK_OVERLAY.MODULE_36.SINIT_START = .;
+ module_36.o (.ctor)
+ module_36.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_36.SINIT_END = .;
+ . = ALIGN(32);
+ module_36.o (.sdata)
+ module_36.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_36.END = .;
+ SDK_OVERLAY.MODULE_36.SIZE = SDK_OVERLAY.MODULE_36.END - SDK_OVERLAY.MODULE_36.START;
+ } > MODULE_36
+
+ .MODULE_36.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_36.BSS_START = .;
+ module_36.o (.bss)
+ module_36.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_36.BSS_END = .;
+ SDK_OVERLAY.MODULE_36.BSS_SIZE = SDK_OVERLAY.MODULE_36.BSS_END - SDK_OVERLAY.MODULE_36.BSS_START;
+ } >> MODULE_36
+
+ .MODULE_37 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_37_ID = 37;
+ SDK_OVERLAY.MODULE_37.ID = 37;
+ SDK_OVERLAY.MODULE_37.START = .;
+ module_37.o (.text)
+ module_37.o (.rodata)
+ module_37.o (.init)
+ SDK_OVERLAY.MODULE_37.SINIT_START = .;
+ module_37.o (.ctor)
+ module_37.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_37.SINIT_END = .;
+ . = ALIGN(32);
+ module_37.o (.sdata)
+ module_37.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_37.END = .;
+ SDK_OVERLAY.MODULE_37.SIZE = SDK_OVERLAY.MODULE_37.END - SDK_OVERLAY.MODULE_37.START;
+ } > MODULE_37
+
+ .MODULE_37.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_37.BSS_START = .;
+ module_37.o (.bss)
+ module_37.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_37.BSS_END = .;
+ SDK_OVERLAY.MODULE_37.BSS_SIZE = SDK_OVERLAY.MODULE_37.BSS_END - SDK_OVERLAY.MODULE_37.BSS_START;
+ } >> MODULE_37
+
+ .MODULE_38 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_38_ID = 38;
+ SDK_OVERLAY.MODULE_38.ID = 38;
+ SDK_OVERLAY.MODULE_38.START = .;
+ module_38.o (.text)
+ module_38.o (.rodata)
+ module_38.o (.init)
+ SDK_OVERLAY.MODULE_38.SINIT_START = .;
+ module_38.o (.ctor)
+ module_38.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_38.SINIT_END = .;
+ . = ALIGN(32);
+ module_38.o (.sdata)
+ module_38.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_38.END = .;
+ SDK_OVERLAY.MODULE_38.SIZE = SDK_OVERLAY.MODULE_38.END - SDK_OVERLAY.MODULE_38.START;
+ } > MODULE_38
+
+ .MODULE_38.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_38.BSS_START = .;
+ module_38.o (.bss)
+ module_38.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_38.BSS_END = .;
+ SDK_OVERLAY.MODULE_38.BSS_SIZE = SDK_OVERLAY.MODULE_38.BSS_END - SDK_OVERLAY.MODULE_38.BSS_START;
+ } >> MODULE_38
+
+ .MODULE_39 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_39_ID = 39;
+ SDK_OVERLAY.MODULE_39.ID = 39;
+ SDK_OVERLAY.MODULE_39.START = .;
+ module_39.o (.text)
+ module_39.o (.rodata)
+ module_39.o (.init)
+ // SDK_OVERLAY.MODULE_39.SINIT_START = .;
+ module_39.o (.ctor)
+ module_39.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_39.SINIT_END = .;
+ . = ALIGN(32);
+ module_39.o (.sdata)
+ module_39.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_39.END = .;
+ SDK_OVERLAY.MODULE_39.SIZE = SDK_OVERLAY.MODULE_39.END - SDK_OVERLAY.MODULE_39.START;
+ } > MODULE_39
+
+ .MODULE_39.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_39.BSS_START = .;
+ module_39.o (.bss)
+ module_39.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_39.BSS_END = .;
+ SDK_OVERLAY.MODULE_39.BSS_SIZE = SDK_OVERLAY.MODULE_39.BSS_END - SDK_OVERLAY.MODULE_39.BSS_START;
+ } >> MODULE_39
+
+ .MODULE_40 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_40_ID = 40;
+ SDK_OVERLAY.MODULE_40.ID = 40;
+ SDK_OVERLAY.MODULE_40.START = .;
+ module_40.o (.text)
+ module_40.o (.rodata)
+ module_40.o (.init)
+ SDK_OVERLAY.MODULE_40.SINIT_START = .;
+ module_40.o (.ctor)
+ module_40.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_40.SINIT_END = .;
+ . = ALIGN(32);
+ module_40.o (.sdata)
+ module_40.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_40.END = .;
+ SDK_OVERLAY.MODULE_40.SIZE = SDK_OVERLAY.MODULE_40.END - SDK_OVERLAY.MODULE_40.START;
+ } > MODULE_40
+
+ .MODULE_40.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_40.BSS_START = .;
+ module_40.o (.bss)
+ module_40.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_40.BSS_END = .;
+ SDK_OVERLAY.MODULE_40.BSS_SIZE = SDK_OVERLAY.MODULE_40.BSS_END - SDK_OVERLAY.MODULE_40.BSS_START;
+ } >> MODULE_40
+
+ .MODULE_41 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_41_ID = 41;
+ SDK_OVERLAY.MODULE_41.ID = 41;
+ SDK_OVERLAY.MODULE_41.START = .;
+ module_41.o (.text)
+ module_41.o (.rodata)
+ module_41.o (.init)
+ // SDK_OVERLAY.MODULE_41.SINIT_START = .;
+ module_41.o (.ctor)
+ module_41.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_41.SINIT_END = .;
+ . = ALIGN(32);
+ module_41.o (.sdata)
+ module_41.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_41.END = .;
+ SDK_OVERLAY.MODULE_41.SIZE = SDK_OVERLAY.MODULE_41.END - SDK_OVERLAY.MODULE_41.START;
+ } > MODULE_41
+
+ .MODULE_41.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_41.BSS_START = .;
+ module_41.o (.bss)
+ module_41.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_41.BSS_END = .;
+ SDK_OVERLAY.MODULE_41.BSS_SIZE = SDK_OVERLAY.MODULE_41.BSS_END - SDK_OVERLAY.MODULE_41.BSS_START;
+ } >> MODULE_41
+
+ .MODULE_42 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_42_ID = 42;
+ SDK_OVERLAY.MODULE_42.ID = 42;
+ SDK_OVERLAY.MODULE_42.START = .;
+ module_42.o (.text)
+ module_42.o (.rodata)
+ module_42.o (.init)
+ // SDK_OVERLAY.MODULE_42.SINIT_START = .;
+ module_42.o (.ctor)
+ module_42.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_42.SINIT_END = .;
+ . = ALIGN(32);
+ module_42.o (.sdata)
+ module_42.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_42.END = .;
+ SDK_OVERLAY.MODULE_42.SIZE = SDK_OVERLAY.MODULE_42.END - SDK_OVERLAY.MODULE_42.START;
+ } > MODULE_42
+
+ .MODULE_42.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_42.BSS_START = .;
+ module_42.o (.bss)
+ module_42.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_42.BSS_END = .;
+ SDK_OVERLAY.MODULE_42.BSS_SIZE = SDK_OVERLAY.MODULE_42.BSS_END - SDK_OVERLAY.MODULE_42.BSS_START;
+ } >> MODULE_42
+
+ .MODULE_43 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_43_ID = 43;
+ SDK_OVERLAY.MODULE_43.ID = 43;
+ SDK_OVERLAY.MODULE_43.START = .;
+ module_43.o (.text)
+ module_43.o (.rodata)
+ module_43.o (.init)
+ // SDK_OVERLAY.MODULE_43.SINIT_START = .;
+ module_43.o (.ctor)
+ module_43.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_43.SINIT_END = .;
+ . = ALIGN(32);
+ module_43.o (.sdata)
+ module_43.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_43.END = .;
+ SDK_OVERLAY.MODULE_43.SIZE = SDK_OVERLAY.MODULE_43.END - SDK_OVERLAY.MODULE_43.START;
+ } > MODULE_43
+
+ .MODULE_43.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_43.BSS_START = .;
+ module_43.o (.bss)
+ module_43.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_43.BSS_END = .;
+ SDK_OVERLAY.MODULE_43.BSS_SIZE = SDK_OVERLAY.MODULE_43.BSS_END - SDK_OVERLAY.MODULE_43.BSS_START;
+ } >> MODULE_43
+
+ .MODULE_44 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_44_ID = 44;
+ SDK_OVERLAY.MODULE_44.ID = 44;
+ SDK_OVERLAY.MODULE_44.START = .;
+ module_44.o (.text)
+ module_44.o (.rodata)
+ module_44.o (.init)
+ // SDK_OVERLAY.MODULE_44.SINIT_START = .;
+ module_44.o (.ctor)
+ module_44.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_44.SINIT_END = .;
+ . = ALIGN(32);
+ module_44.o (.sdata)
+ module_44.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_44.END = .;
+ SDK_OVERLAY.MODULE_44.SIZE = SDK_OVERLAY.MODULE_44.END - SDK_OVERLAY.MODULE_44.START;
+ } > MODULE_44
+
+ .MODULE_44.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_44.BSS_START = .;
+ module_44.o (.bss)
+ module_44.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_44.BSS_END = .;
+ SDK_OVERLAY.MODULE_44.BSS_SIZE = SDK_OVERLAY.MODULE_44.BSS_END - SDK_OVERLAY.MODULE_44.BSS_START;
+ } >> MODULE_44
+
+ .MODULE_45 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_45_ID = 45;
+ SDK_OVERLAY.MODULE_45.ID = 45;
+ SDK_OVERLAY.MODULE_45.START = .;
+ module_45.o (.text)
+ module_45.o (.rodata)
+ module_45.o (.init)
+ SDK_OVERLAY.MODULE_45.SINIT_START = .;
+ module_45.o (.ctor)
+ module_45.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_45.SINIT_END = .;
+ . = ALIGN(32);
+ module_45.o (.sdata)
+ module_45.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_45.END = .;
+ SDK_OVERLAY.MODULE_45.SIZE = SDK_OVERLAY.MODULE_45.END - SDK_OVERLAY.MODULE_45.START;
+ } > MODULE_45
+
+ .MODULE_45.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_45.BSS_START = .;
+ module_45.o (.bss)
+ module_45.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_45.BSS_END = .;
+ SDK_OVERLAY.MODULE_45.BSS_SIZE = SDK_OVERLAY.MODULE_45.BSS_END - SDK_OVERLAY.MODULE_45.BSS_START;
+ } >> MODULE_45
+
+ .MODULE_46 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_46_ID = 46;
+ SDK_OVERLAY.MODULE_46.ID = 46;
+ SDK_OVERLAY.MODULE_46.START = .;
+ module_46.o (.text)
+ module_46.o (.rodata)
+ module_46.o (.init)
+ SDK_OVERLAY.MODULE_46.SINIT_START = .;
+ module_46.o (.ctor)
+ module_46.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_46.SINIT_END = .;
+ . = ALIGN(32);
+ module_46.o (.sdata)
+ module_46.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_46.END = .;
+ SDK_OVERLAY.MODULE_46.SIZE = SDK_OVERLAY.MODULE_46.END - SDK_OVERLAY.MODULE_46.START;
+ } > MODULE_46
+
+ .MODULE_46.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_46.BSS_START = .;
+ module_46.o (.bss)
+ module_46.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_46.BSS_END = .;
+ SDK_OVERLAY.MODULE_46.BSS_SIZE = SDK_OVERLAY.MODULE_46.BSS_END - SDK_OVERLAY.MODULE_46.BSS_START;
+ } >> MODULE_46
+
+ .MODULE_47 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_47_ID = 47;
+ SDK_OVERLAY.MODULE_47.ID = 47;
+ SDK_OVERLAY.MODULE_47.START = .;
+ module_47.o (.text)
+ module_47.o (.rodata)
+ module_47.o (.init)
+ // SDK_OVERLAY.MODULE_47.SINIT_START = .;
+ module_47.o (.ctor)
+ module_47.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_47.SINIT_END = .;
+ . = ALIGN(32);
+ module_47.o (.sdata)
+ module_47.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_47.END = .;
+ SDK_OVERLAY.MODULE_47.SIZE = SDK_OVERLAY.MODULE_47.END - SDK_OVERLAY.MODULE_47.START;
+ } > MODULE_47
+
+ .MODULE_47.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_47.BSS_START = .;
+ module_47.o (.bss)
+ module_47.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_47.BSS_END = .;
+ SDK_OVERLAY.MODULE_47.BSS_SIZE = SDK_OVERLAY.MODULE_47.BSS_END - SDK_OVERLAY.MODULE_47.BSS_START;
+ } >> MODULE_47
+
+ .MODULE_48 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_48_ID = 48;
+ SDK_OVERLAY.MODULE_48.ID = 48;
+ SDK_OVERLAY.MODULE_48.START = .;
+ module_48.o (.text)
+ module_48.o (.rodata)
+ module_48.o (.init)
+ SDK_OVERLAY.MODULE_48.SINIT_START = .;
+ module_48.o (.ctor)
+ module_48.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_48.SINIT_END = .;
+ . = ALIGN(32);
+ module_48.o (.sdata)
+ module_48.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_48.END = .;
+ SDK_OVERLAY.MODULE_48.SIZE = SDK_OVERLAY.MODULE_48.END - SDK_OVERLAY.MODULE_48.START;
+ } > MODULE_48
+
+ .MODULE_48.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_48.BSS_START = .;
+ module_48.o (.bss)
+ module_48.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_48.BSS_END = .;
+ SDK_OVERLAY.MODULE_48.BSS_SIZE = SDK_OVERLAY.MODULE_48.BSS_END - SDK_OVERLAY.MODULE_48.BSS_START;
+ } >> MODULE_48
+
+ .MODULE_49 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_49_ID = 49;
+ SDK_OVERLAY.MODULE_49.ID = 49;
+ SDK_OVERLAY.MODULE_49.START = .;
+ module_49.o (.text)
+ module_49.o (.rodata)
+ module_49.o (.init)
+ SDK_OVERLAY.MODULE_49.SINIT_START = .;
+ module_49.o (.ctor)
+ module_49.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_49.SINIT_END = .;
+ . = ALIGN(32);
+ module_49.o (.sdata)
+ module_49.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_49.END = .;
+ SDK_OVERLAY.MODULE_49.SIZE = SDK_OVERLAY.MODULE_49.END - SDK_OVERLAY.MODULE_49.START;
+ } > MODULE_49
+
+ .MODULE_49.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_49.BSS_START = .;
+ module_49.o (.bss)
+ module_49.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_49.BSS_END = .;
+ SDK_OVERLAY.MODULE_49.BSS_SIZE = SDK_OVERLAY.MODULE_49.BSS_END - SDK_OVERLAY.MODULE_49.BSS_START;
+ } >> MODULE_49
+
+ .MODULE_50 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_50_ID = 50;
+ SDK_OVERLAY.MODULE_50.ID = 50;
+ SDK_OVERLAY.MODULE_50.START = .;
+ module_50.o (.text)
+ module_50.o (.rodata)
+ module_50.o (.init)
+ SDK_OVERLAY.MODULE_50.SINIT_START = .;
+ module_50.o (.ctor)
+ module_50.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_50.SINIT_END = .;
+ . = ALIGN(32);
+ module_50.o (.sdata)
+ module_50.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_50.END = .;
+ SDK_OVERLAY.MODULE_50.SIZE = SDK_OVERLAY.MODULE_50.END - SDK_OVERLAY.MODULE_50.START;
+ } > MODULE_50
+
+ .MODULE_50.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_50.BSS_START = .;
+ module_50.o (.bss)
+ module_50.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_50.BSS_END = .;
+ SDK_OVERLAY.MODULE_50.BSS_SIZE = SDK_OVERLAY.MODULE_50.BSS_END - SDK_OVERLAY.MODULE_50.BSS_START;
+ } >> MODULE_50
+
+ .MODULE_51 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_51_ID = 51;
+ SDK_OVERLAY.MODULE_51.ID = 51;
+ SDK_OVERLAY.MODULE_51.START = .;
+ module_51.o (.text)
+ module_51.o (.rodata)
+ module_51.o (.init)
+ SDK_OVERLAY.MODULE_51.SINIT_START = .;
+ module_51.o (.ctor)
+ module_51.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_51.SINIT_END = .;
+ . = ALIGN(32);
+ module_51.o (.sdata)
+ module_51.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_51.END = .;
+ SDK_OVERLAY.MODULE_51.SIZE = SDK_OVERLAY.MODULE_51.END - SDK_OVERLAY.MODULE_51.START;
+ } > MODULE_51
+
+ .MODULE_51.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_51.BSS_START = .;
+ module_51.o (.bss)
+ module_51.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_51.BSS_END = .;
+ SDK_OVERLAY.MODULE_51.BSS_SIZE = SDK_OVERLAY.MODULE_51.BSS_END - SDK_OVERLAY.MODULE_51.BSS_START;
+ } >> MODULE_51
+
+ .MODULE_52 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_52_ID = 52;
+ SDK_OVERLAY.MODULE_52.ID = 52;
+ SDK_OVERLAY.MODULE_52.START = .;
+ module_52.o (.text)
+ module_52.o (.rodata)
+ module_52.o (.init)
+ SDK_OVERLAY.MODULE_52.SINIT_START = .;
+ module_52.o (.ctor)
+ module_52.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_52.SINIT_END = .;
+ . = ALIGN(32);
+ module_52.o (.sdata)
+ module_52.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_52.END = .;
+ SDK_OVERLAY.MODULE_52.SIZE = SDK_OVERLAY.MODULE_52.END - SDK_OVERLAY.MODULE_52.START;
+ } > MODULE_52
+
+ .MODULE_52.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_52.BSS_START = .;
+ module_52.o (.bss)
+ module_52.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_52.BSS_END = .;
+ SDK_OVERLAY.MODULE_52.BSS_SIZE = SDK_OVERLAY.MODULE_52.BSS_END - SDK_OVERLAY.MODULE_52.BSS_START;
+ } >> MODULE_52
+
+ .MODULE_53 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_53_ID = 53;
+ SDK_OVERLAY.MODULE_53.ID = 53;
+ SDK_OVERLAY.MODULE_53.START = .;
+ module_53.o (.text)
+ module_53.o (.rodata)
+ module_53.o (.init)
+ SDK_OVERLAY.MODULE_53.SINIT_START = .;
+ module_53.o (.ctor)
+ module_53.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_53.SINIT_END = .;
+ . = ALIGN(32);
+ module_53.o (.sdata)
+ module_53.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_53.END = .;
+ SDK_OVERLAY.MODULE_53.SIZE = SDK_OVERLAY.MODULE_53.END - SDK_OVERLAY.MODULE_53.START;
+ } > MODULE_53
+
+ .MODULE_53.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_53.BSS_START = .;
+ module_53.o (.bss)
+ module_53.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_53.BSS_END = .;
+ SDK_OVERLAY.MODULE_53.BSS_SIZE = SDK_OVERLAY.MODULE_53.BSS_END - SDK_OVERLAY.MODULE_53.BSS_START;
+ } >> MODULE_53
+
+ .MODULE_54 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_54_ID = 54;
+ SDK_OVERLAY.MODULE_54.ID = 54;
+ SDK_OVERLAY.MODULE_54.START = .;
+ module_54.o (.text)
+ module_54.o (.rodata)
+ module_54.o (.init)
+ SDK_OVERLAY.MODULE_54.SINIT_START = .;
+ module_54.o (.ctor)
+ module_54.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_54.SINIT_END = .;
+ . = ALIGN(32);
+ module_54.o (.sdata)
+ module_54.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_54.END = .;
+ SDK_OVERLAY.MODULE_54.SIZE = SDK_OVERLAY.MODULE_54.END - SDK_OVERLAY.MODULE_54.START;
+ } > MODULE_54
+
+ .MODULE_54.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_54.BSS_START = .;
+ module_54.o (.bss)
+ module_54.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_54.BSS_END = .;
+ SDK_OVERLAY.MODULE_54.BSS_SIZE = SDK_OVERLAY.MODULE_54.BSS_END - SDK_OVERLAY.MODULE_54.BSS_START;
+ } >> MODULE_54
+
+ .MODULE_55 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_55_ID = 55;
+ SDK_OVERLAY.MODULE_55.ID = 55;
+ SDK_OVERLAY.MODULE_55.START = .;
+ module_55.o (.text)
+ module_55.o (.rodata)
+ module_55.o (.init)
+ SDK_OVERLAY.MODULE_55.SINIT_START = .;
+ module_55.o (.ctor)
+ module_55.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_55.SINIT_END = .;
+ . = ALIGN(32);
+ module_55.o (.sdata)
+ module_55.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_55.END = .;
+ SDK_OVERLAY.MODULE_55.SIZE = SDK_OVERLAY.MODULE_55.END - SDK_OVERLAY.MODULE_55.START;
+ } > MODULE_55
+
+ .MODULE_55.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_55.BSS_START = .;
+ module_55.o (.bss)
+ module_55.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_55.BSS_END = .;
+ SDK_OVERLAY.MODULE_55.BSS_SIZE = SDK_OVERLAY.MODULE_55.BSS_END - SDK_OVERLAY.MODULE_55.BSS_START;
+ } >> MODULE_55
+
+ .MODULE_56 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_56_ID = 56;
+ SDK_OVERLAY.MODULE_56.ID = 56;
+ SDK_OVERLAY.MODULE_56.START = .;
+ module_56.o (.text)
+ module_56.o (.rodata)
+ module_56.o (.init)
+ SDK_OVERLAY.MODULE_56.SINIT_START = .;
+ module_56.o (.ctor)
+ module_56.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_56.SINIT_END = .;
+ . = ALIGN(32);
+ module_56.o (.sdata)
+ module_56.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_56.END = .;
+ SDK_OVERLAY.MODULE_56.SIZE = SDK_OVERLAY.MODULE_56.END - SDK_OVERLAY.MODULE_56.START;
+ } > MODULE_56
+
+ .MODULE_56.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_56.BSS_START = .;
+ module_56.o (.bss)
+ module_56.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_56.BSS_END = .;
+ SDK_OVERLAY.MODULE_56.BSS_SIZE = SDK_OVERLAY.MODULE_56.BSS_END - SDK_OVERLAY.MODULE_56.BSS_START;
+ } >> MODULE_56
+
+ .MODULE_57 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_57_ID = 57;
+ SDK_OVERLAY.MODULE_57.ID = 57;
+ SDK_OVERLAY.MODULE_57.START = .;
+ module_57.o (.text)
+ module_57.o (.rodata)
+ module_57.o (.init)
+ SDK_OVERLAY.MODULE_57.SINIT_START = .;
+ module_57.o (.ctor)
+ module_57.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_57.SINIT_END = .;
+ . = ALIGN(32);
+ module_57.o (.sdata)
+ module_57.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_57.END = .;
+ SDK_OVERLAY.MODULE_57.SIZE = SDK_OVERLAY.MODULE_57.END - SDK_OVERLAY.MODULE_57.START;
+ } > MODULE_57
+
+ .MODULE_57.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_57.BSS_START = .;
+ module_57.o (.bss)
+ module_57.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_57.BSS_END = .;
+ SDK_OVERLAY.MODULE_57.BSS_SIZE = SDK_OVERLAY.MODULE_57.BSS_END - SDK_OVERLAY.MODULE_57.BSS_START;
+ } >> MODULE_57
+
+ .MODULE_58 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_58_ID = 58;
+ SDK_OVERLAY.MODULE_58.ID = 58;
+ SDK_OVERLAY.MODULE_58.START = .;
+ module_58.o (.text)
+ module_58.o (.rodata)
+ module_58.o (.init)
+ SDK_OVERLAY.MODULE_58.SINIT_START = .;
+ module_58.o (.ctor)
+ module_58.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_58.SINIT_END = .;
+ . = ALIGN(32);
+ module_58.o (.sdata)
+ module_58.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_58.END = .;
+ SDK_OVERLAY.MODULE_58.SIZE = SDK_OVERLAY.MODULE_58.END - SDK_OVERLAY.MODULE_58.START;
+ } > MODULE_58
+
+ .MODULE_58.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_58.BSS_START = .;
+ module_58.o (.bss)
+ module_58.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_58.BSS_END = .;
+ SDK_OVERLAY.MODULE_58.BSS_SIZE = SDK_OVERLAY.MODULE_58.BSS_END - SDK_OVERLAY.MODULE_58.BSS_START;
+ } >> MODULE_58
+
+ .MODULE_59 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_59_ID = 59;
+ SDK_OVERLAY.MODULE_59.ID = 59;
+ SDK_OVERLAY.MODULE_59.START = .;
+ module_59.o (.text)
+ module_59.o (.rodata)
+ module_59.o (.init)
+ SDK_OVERLAY.MODULE_59.SINIT_START = .;
+ module_59.o (.ctor)
+ module_59.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_59.SINIT_END = .;
+ . = ALIGN(32);
+ module_59.o (.sdata)
+ module_59.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_59.END = .;
+ SDK_OVERLAY.MODULE_59.SIZE = SDK_OVERLAY.MODULE_59.END - SDK_OVERLAY.MODULE_59.START;
+ } > MODULE_59
+
+ .MODULE_59.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_59.BSS_START = .;
+ module_59.o (.bss)
+ module_59.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_59.BSS_END = .;
+ SDK_OVERLAY.MODULE_59.BSS_SIZE = SDK_OVERLAY.MODULE_59.BSS_END - SDK_OVERLAY.MODULE_59.BSS_START;
+ } >> MODULE_59
+
+ .MODULE_60 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_60_ID = 60;
+ SDK_OVERLAY.MODULE_60.ID = 60;
+ SDK_OVERLAY.MODULE_60.START = .;
+ module_60.o (.text)
+ module_60.o (.rodata)
+ module_60.o (.init)
+ SDK_OVERLAY.MODULE_60.SINIT_START = .;
+ module_60.o (.ctor)
+ module_60.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_60.SINIT_END = .;
+ . = ALIGN(32);
+ module_60.o (.sdata)
+ module_60.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_60.END = .;
+ SDK_OVERLAY.MODULE_60.SIZE = SDK_OVERLAY.MODULE_60.END - SDK_OVERLAY.MODULE_60.START;
+ } > MODULE_60
+
+ .MODULE_60.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_60.BSS_START = .;
+ module_60.o (.bss)
+ module_60.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_60.BSS_END = .;
+ SDK_OVERLAY.MODULE_60.BSS_SIZE = SDK_OVERLAY.MODULE_60.BSS_END - SDK_OVERLAY.MODULE_60.BSS_START;
+ } >> MODULE_60
+
+ .MODULE_61 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_61_ID = 61;
+ SDK_OVERLAY.MODULE_61.ID = 61;
+ SDK_OVERLAY.MODULE_61.START = .;
+ module_61.o (.text)
+ module_61.o (.rodata)
+ module_61.o (.init)
+ SDK_OVERLAY.MODULE_61.SINIT_START = .;
+ module_61.o (.ctor)
+ module_61.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_61.SINIT_END = .;
+ . = ALIGN(32);
+ module_61.o (.sdata)
+ module_61.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_61.END = .;
+ SDK_OVERLAY.MODULE_61.SIZE = SDK_OVERLAY.MODULE_61.END - SDK_OVERLAY.MODULE_61.START;
+ } > MODULE_61
+
+ .MODULE_61.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_61.BSS_START = .;
+ module_61.o (.bss)
+ module_61.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_61.BSS_END = .;
+ SDK_OVERLAY.MODULE_61.BSS_SIZE = SDK_OVERLAY.MODULE_61.BSS_END - SDK_OVERLAY.MODULE_61.BSS_START;
+ } >> MODULE_61
+
+ .MODULE_62 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_62_ID = 62;
+ SDK_OVERLAY.MODULE_62.ID = 62;
+ SDK_OVERLAY.MODULE_62.START = .;
+ module_62.o (.text)
+ module_62.o (.rodata)
+ module_62.o (.init)
+ SDK_OVERLAY.MODULE_62.SINIT_START = .;
+ module_62.o (.ctor)
+ module_62.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_62.SINIT_END = .;
+ . = ALIGN(32);
+ module_62.o (.sdata)
+ module_62.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_62.END = .;
+ SDK_OVERLAY.MODULE_62.SIZE = SDK_OVERLAY.MODULE_62.END - SDK_OVERLAY.MODULE_62.START;
+ } > MODULE_62
+
+ .MODULE_62.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_62.BSS_START = .;
+ module_62.o (.bss)
+ module_62.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_62.BSS_END = .;
+ SDK_OVERLAY.MODULE_62.BSS_SIZE = SDK_OVERLAY.MODULE_62.BSS_END - SDK_OVERLAY.MODULE_62.BSS_START;
+ } >> MODULE_62
+
+ .MODULE_63 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_63_ID = 63;
+ SDK_OVERLAY.MODULE_63.ID = 63;
+ SDK_OVERLAY.MODULE_63.START = .;
+ module_63.o (.text)
+ module_63.o (.rodata)
+ module_63.o (.init)
+ SDK_OVERLAY.MODULE_63.SINIT_START = .;
+ module_63.o (.ctor)
+ module_63.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_63.SINIT_END = .;
+ . = ALIGN(32);
+ module_63.o (.sdata)
+ module_63.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_63.END = .;
+ SDK_OVERLAY.MODULE_63.SIZE = SDK_OVERLAY.MODULE_63.END - SDK_OVERLAY.MODULE_63.START;
+ } > MODULE_63
+
+ .MODULE_63.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_63.BSS_START = .;
+ module_63.o (.bss)
+ module_63.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_63.BSS_END = .;
+ SDK_OVERLAY.MODULE_63.BSS_SIZE = SDK_OVERLAY.MODULE_63.BSS_END - SDK_OVERLAY.MODULE_63.BSS_START;
+ } >> MODULE_63
+
+ .MODULE_64 :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_64_ID = 64;
+ SDK_OVERLAY.MODULE_64.ID = 64;
+ SDK_OVERLAY.MODULE_64.START = .;
+ module_64.o (.text)
+ module_64.o (.rodata)
+ module_64.o (.init)
+ SDK_OVERLAY.MODULE_64.SINIT_START = .;
+ module_64.o (.ctor)
+ module_64.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_64.SINIT_END = .;
+ . = ALIGN(32);
+ module_64.o (.sdata)
+ module_64.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_64.END = .;
+ SDK_OVERLAY.MODULE_64.SIZE = SDK_OVERLAY.MODULE_64.END - SDK_OVERLAY.MODULE_64.START;
+ } > MODULE_64
+
+ .MODULE_64.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_64.BSS_START = .;
+ module_64.o (.bss)
+ module_64.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_64.BSS_END = .;
+ SDK_OVERLAY.MODULE_64.BSS_SIZE = SDK_OVERLAY.MODULE_64.BSS_END - SDK_OVERLAY.MODULE_64.BSS_START;
+ } >> MODULE_64
+
+ .MODULE_65: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_65_ID = 65;
+ SDK_OVERLAY.MODULE_65.ID = 65;
+ SDK_OVERLAY.MODULE_65.START = .;
+ FILE_2B9400.o (.text) /* 0x2B5400 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_65.END = .;
+ SDK_OVERLAY.MODULE_65.SIZE = SDK_OVERLAY.MODULE_65.END - SDK_OVERLAY.MODULE_65.START;
+ } > MODULE_65
+
+ .MODULE_65.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_65.BSS_START = .;
+ FILE_2B9400.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_65.BSS_END = .;
+ SDK_OVERLAY.MODULE_65.BSS_SIZE = SDK_OVERLAY.MODULE_65.BSS_END - SDK_OVERLAY.MODULE_65.BSS_START;
+ } >> MODULE_65
+
+ .MODULE_66: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_66_ID = 66;
+ SDK_OVERLAY.MODULE_66.ID = 66;
+ SDK_OVERLAY.MODULE_66.START = .;
+ FILE_2BC400.o (.text) /* 0x2B8400 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_66.END = .;
+ SDK_OVERLAY.MODULE_66.SIZE = SDK_OVERLAY.MODULE_66.END - SDK_OVERLAY.MODULE_66.START;
+ } > MODULE_66
+
+ .MODULE_66.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_66.BSS_START = .;
+ FILE_2BC400.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_66.BSS_END = .;
+ SDK_OVERLAY.MODULE_66.BSS_SIZE = SDK_OVERLAY.MODULE_66.BSS_END - SDK_OVERLAY.MODULE_66.BSS_START;
+ } >> MODULE_66
+
+ .MODULE_67: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_67_ID = 67;
+ SDK_OVERLAY.MODULE_67.ID = 67;
+ SDK_OVERLAY.MODULE_67.START = .;
+ FILE_2BEC00.o (.text) /* 0x2BAC00 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_67.END = .;
+ SDK_OVERLAY.MODULE_67.SIZE = SDK_OVERLAY.MODULE_67.END - SDK_OVERLAY.MODULE_67.START;
+ } > MODULE_67
+
+ .MODULE_67.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_67.BSS_START = .;
+ FILE_2BEC00.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_67.BSS_END = .;
+ SDK_OVERLAY.MODULE_67.BSS_SIZE = SDK_OVERLAY.MODULE_67.BSS_END - SDK_OVERLAY.MODULE_67.BSS_START;
+ } >> MODULE_67
+
+ .MODULE_68: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_68_ID = 68;
+ SDK_OVERLAY.MODULE_68.ID = 68;
+ SDK_OVERLAY.MODULE_68.START = .;
+ FILE_2C1200.o (.text) /* 0x2BD200 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_68.END = .;
+ SDK_OVERLAY.MODULE_68.SIZE = SDK_OVERLAY.MODULE_68.END - SDK_OVERLAY.MODULE_68.START;
+ } > MODULE_68
+
+ .MODULE_68.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_68.BSS_START = .;
+ FILE_2C1200.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_68.BSS_END = .;
+ SDK_OVERLAY.MODULE_68.BSS_SIZE = SDK_OVERLAY.MODULE_68.BSS_END - SDK_OVERLAY.MODULE_68.BSS_START;
+ } >> MODULE_68
+
+ .MODULE_69: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_69_ID = 69;
+ SDK_OVERLAY.MODULE_69.ID = 69;
+ SDK_OVERLAY.MODULE_69.START = .;
module_69.o (.text)
+ module_69.o (.rodata)
+ module_69.o (.init)
+ SDK_OVERLAY.MODULE_69.SINIT_START = .;
+ module_69.o (.ctor)
+ module_69.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_69.SINIT_END = .;
+ . = ALIGN(32);
module_69.o (.sdata)
module_69.o (.data)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_69.END = .;
+ SDK_OVERLAY.MODULE_69.SIZE = SDK_OVERLAY.MODULE_69.END - SDK_OVERLAY.MODULE_69.START;
} > MODULE_69
- .MODULE.69.bss :
+ .MODULE_69.bss :
{
- module_69.o (.sbss)
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_69.BSS_START = .;
module_69.o (.bss)
+ module_69.o (.sbss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_69.BSS_END = .;
+ SDK_OVERLAY.MODULE_69.BSS_SIZE = SDK_OVERLAY.MODULE_69.BSS_END - SDK_OVERLAY.MODULE_69.BSS_START;
} >> MODULE_69
- OVERLAY_FILE(70, 0x2C0C00, FILE_2C4C00.o)
- OVERLAY_FILE(71, 0x2C1C00, FILE_2C5C00.o)
- OVERLAY_FILE(72, 0x2C5C00, FILE_2C9C00.o)
- OVERLAY_FILE(73, 0x2C5E00, FILE_2C9E00.o)
- OVERLAY_FILE(74, 0x2CAA00, FILE_2CEA00.o)
- OVERLAY_FILE(75, 0x2CBE00, FILE_2CFE00.o)
- OVERLAY_FILE(76, 0x2D1C00, FILE_2D5C00.o)
- OVERLAY_FILE(77, 0x2D3C00, FILE_2D7C00.o)
- OVERLAY_FILE(78, 0x2D5800, FILE_2D9800.o)
- OVERLAY_FILE(79, 0x2D5E00, FILE_2D9E00.o)
- OVERLAY_FILE(80, 0x2DB200, FILE_2DF200.o)
- OVERLAY_FILE(81, 0x2E5A00, FILE_2E9A00.o)
- OVERLAY_FILE(82, 0x2EB000, FILE_2EF000.o)
- OVERLAY_FILE(83, 0x2ED600, FILE_2F1600.o)
- OVERLAY_FILE(84, 0x2FBA00, FILE_2FFA00.o)
- OVERLAY_FILE(85, 0x2FF400, FILE_303400.o)
- OVERLAY_FILE(86, 0x308600, FILE_30C600.o)
+ .MODULE_70: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_70_ID = 70;
+ SDK_OVERLAY.MODULE_70.ID = 70;
+ SDK_OVERLAY.MODULE_70.START = .;
+ FILE_2C4C00.o (.text) /* 0x2C0C00 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_70.END = .;
+ SDK_OVERLAY.MODULE_70.SIZE = SDK_OVERLAY.MODULE_70.END - SDK_OVERLAY.MODULE_70.START;
+ } > MODULE_70
+
+ .MODULE_70.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_70.BSS_START = .;
+ FILE_2C4C00.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_70.BSS_END = .;
+ SDK_OVERLAY.MODULE_70.BSS_SIZE = SDK_OVERLAY.MODULE_70.BSS_END - SDK_OVERLAY.MODULE_70.BSS_START;
+ } >> MODULE_70
+
+ .MODULE_71: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_71_ID = 71;
+ SDK_OVERLAY.MODULE_71.ID = 71;
+ SDK_OVERLAY.MODULE_71.START = .;
+ FILE_2C5C00.o (.text) /* 0x2C1C00 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_71.END = .;
+ SDK_OVERLAY.MODULE_71.SIZE = SDK_OVERLAY.MODULE_71.END - SDK_OVERLAY.MODULE_71.START;
+ } > MODULE_71
+
+ .MODULE_71.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_71.BSS_START = .;
+ FILE_2C5C00.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_71.BSS_END = .;
+ SDK_OVERLAY.MODULE_71.BSS_SIZE = SDK_OVERLAY.MODULE_71.BSS_END - SDK_OVERLAY.MODULE_71.BSS_START;
+ } >> MODULE_71
+
+ .MODULE_72: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_72_ID = 72;
+ SDK_OVERLAY.MODULE_72.ID = 72;
+ SDK_OVERLAY.MODULE_72.START = .;
+ FILE_2C9C00.o (.text) /* 0x2C5C00 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_72.END = .;
+ SDK_OVERLAY.MODULE_72.SIZE = SDK_OVERLAY.MODULE_72.END - SDK_OVERLAY.MODULE_72.START;
+ } > MODULE_72
+
+ .MODULE_72.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_72.BSS_START = .;
+ FILE_2C9C00.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_72.BSS_END = .;
+ SDK_OVERLAY.MODULE_72.BSS_SIZE = SDK_OVERLAY.MODULE_72.BSS_END - SDK_OVERLAY.MODULE_72.BSS_START;
+ } >> MODULE_72
+
+ .MODULE_73: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_73_ID = 73;
+ SDK_OVERLAY.MODULE_73.ID = 73;
+ SDK_OVERLAY.MODULE_73.START = .;
+ FILE_2C9E00.o (.text) /* 0x2C5E00 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_73.END = .;
+ SDK_OVERLAY.MODULE_73.SIZE = SDK_OVERLAY.MODULE_73.END - SDK_OVERLAY.MODULE_73.START;
+ } > MODULE_73
+
+ .MODULE_73.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_73.BSS_START = .;
+ FILE_2C9E00.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_73.BSS_END = .;
+ SDK_OVERLAY.MODULE_73.BSS_SIZE = SDK_OVERLAY.MODULE_73.BSS_END - SDK_OVERLAY.MODULE_73.BSS_START;
+ } >> MODULE_73
+
+ .MODULE_74: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_74_ID = 74;
+ SDK_OVERLAY.MODULE_74.ID = 74;
+ SDK_OVERLAY.MODULE_74.START = .;
+ FILE_2CEA00.o (.text) /* 0x2CAA00 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_74.END = .;
+ SDK_OVERLAY.MODULE_74.SIZE = SDK_OVERLAY.MODULE_74.END - SDK_OVERLAY.MODULE_74.START;
+ } > MODULE_74
+
+ .MODULE_74.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_74.BSS_START = .;
+ FILE_2CEA00.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_74.BSS_END = .;
+ SDK_OVERLAY.MODULE_74.BSS_SIZE = SDK_OVERLAY.MODULE_74.BSS_END - SDK_OVERLAY.MODULE_74.BSS_START;
+ } >> MODULE_74
+
+ .MODULE_75: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_75_ID = 75;
+ SDK_OVERLAY.MODULE_75.ID = 75;
+ SDK_OVERLAY.MODULE_75.START = .;
+ FILE_2CFE00.o (.text) /* 0x2CBE00 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_75.END = .;
+ SDK_OVERLAY.MODULE_75.SIZE = SDK_OVERLAY.MODULE_75.END - SDK_OVERLAY.MODULE_75.START;
+ } > MODULE_75
+
+ .MODULE_75.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_75.BSS_START = .;
+ FILE_2CFE00.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_75.BSS_END = .;
+ SDK_OVERLAY.MODULE_75.BSS_SIZE = SDK_OVERLAY.MODULE_75.BSS_END - SDK_OVERLAY.MODULE_75.BSS_START;
+ } >> MODULE_75
+
+ .MODULE_76: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_76_ID = 76;
+ SDK_OVERLAY.MODULE_76.ID = 76;
+ SDK_OVERLAY.MODULE_76.START = .;
+ FILE_2D5C00.o (.text) /* 0x2D1C00 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_76.END = .;
+ SDK_OVERLAY.MODULE_76.SIZE = SDK_OVERLAY.MODULE_76.END - SDK_OVERLAY.MODULE_76.START;
+ } > MODULE_76
+
+ .MODULE_76.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_76.BSS_START = .;
+ FILE_2D5C00.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_76.BSS_END = .;
+ SDK_OVERLAY.MODULE_76.BSS_SIZE = SDK_OVERLAY.MODULE_76.BSS_END - SDK_OVERLAY.MODULE_76.BSS_START;
+ } >> MODULE_76
+
+ .MODULE_77: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_77_ID = 77;
+ SDK_OVERLAY.MODULE_77.ID = 77;
+ SDK_OVERLAY.MODULE_77.START = .;
+ FILE_2D7C00.o (.text) /* 0x2D3C00 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_77.END = .;
+ SDK_OVERLAY.MODULE_77.SIZE = SDK_OVERLAY.MODULE_77.END - SDK_OVERLAY.MODULE_77.START;
+ } > MODULE_77
+
+ .MODULE_77.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_77.BSS_START = .;
+ FILE_2D7C00.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_77.BSS_END = .;
+ SDK_OVERLAY.MODULE_77.BSS_SIZE = SDK_OVERLAY.MODULE_77.BSS_END - SDK_OVERLAY.MODULE_77.BSS_START;
+ } >> MODULE_77
+
+ .MODULE_78: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_78_ID = 78;
+ SDK_OVERLAY.MODULE_78.ID = 78;
+ SDK_OVERLAY.MODULE_78.START = .;
+ FILE_2D9800.o (.text) /* 0x2D5800 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_78.END = .;
+ SDK_OVERLAY.MODULE_78.SIZE = SDK_OVERLAY.MODULE_78.END - SDK_OVERLAY.MODULE_78.START;
+ } > MODULE_78
+
+ .MODULE_78.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_78.BSS_START = .;
+ FILE_2D9800.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_78.BSS_END = .;
+ SDK_OVERLAY.MODULE_78.BSS_SIZE = SDK_OVERLAY.MODULE_78.BSS_END - SDK_OVERLAY.MODULE_78.BSS_START;
+ } >> MODULE_78
+
+ .MODULE_79: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_79_ID = 79;
+ SDK_OVERLAY.MODULE_79.ID = 79;
+ SDK_OVERLAY.MODULE_79.START = .;
+ FILE_2D9E00.o (.text) /* 0x2D5E00 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_79.END = .;
+ SDK_OVERLAY.MODULE_79.SIZE = SDK_OVERLAY.MODULE_79.END - SDK_OVERLAY.MODULE_79.START;
+ } > MODULE_79
+
+ .MODULE_79.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_79.BSS_START = .;
+ FILE_2D9E00.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_79.BSS_END = .;
+ SDK_OVERLAY.MODULE_79.BSS_SIZE = SDK_OVERLAY.MODULE_79.BSS_END - SDK_OVERLAY.MODULE_79.BSS_START;
+ } >> MODULE_79
+
+ .MODULE_80: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_80_ID = 80;
+ SDK_OVERLAY.MODULE_80.ID = 80;
+ SDK_OVERLAY.MODULE_80.START = .;
+ FILE_2DF200.o (.text) /* 0x2DB200 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_80.END = .;
+ SDK_OVERLAY.MODULE_80.SIZE = SDK_OVERLAY.MODULE_80.END - SDK_OVERLAY.MODULE_80.START;
+ } > MODULE_80
+
+ .MODULE_80.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_80.BSS_START = .;
+ FILE_2DF200.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_80.BSS_END = .;
+ SDK_OVERLAY.MODULE_80.BSS_SIZE = SDK_OVERLAY.MODULE_80.BSS_END - SDK_OVERLAY.MODULE_80.BSS_START;
+ } >> MODULE_80
+
+ .MODULE_81: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_81_ID = 81;
+ SDK_OVERLAY.MODULE_81.ID = 81;
+ SDK_OVERLAY.MODULE_81.START = .;
+ FILE_2E9A00.o (.text) /* 0x2E5A00 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_81.END = .;
+ SDK_OVERLAY.MODULE_81.SIZE = SDK_OVERLAY.MODULE_81.END - SDK_OVERLAY.MODULE_81.START;
+ } > MODULE_81
+
+ .MODULE_81.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_81.BSS_START = .;
+ FILE_2E9A00.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_81.BSS_END = .;
+ SDK_OVERLAY.MODULE_81.BSS_SIZE = SDK_OVERLAY.MODULE_81.BSS_END - SDK_OVERLAY.MODULE_81.BSS_START;
+ } >> MODULE_81
+
+ .MODULE_82: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_82_ID = 82;
+ SDK_OVERLAY.MODULE_82.ID = 82;
+ SDK_OVERLAY.MODULE_82.START = .;
+ FILE_2EF000.o (.text) /* 0x2EB000 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_82.END = .;
+ SDK_OVERLAY.MODULE_82.SIZE = SDK_OVERLAY.MODULE_82.END - SDK_OVERLAY.MODULE_82.START;
+ } > MODULE_82
+
+ .MODULE_82.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_82.BSS_START = .;
+ FILE_2EF000.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_82.BSS_END = .;
+ SDK_OVERLAY.MODULE_82.BSS_SIZE = SDK_OVERLAY.MODULE_82.BSS_END - SDK_OVERLAY.MODULE_82.BSS_START;
+ } >> MODULE_82
+
+ .MODULE_83: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_83_ID = 83;
+ SDK_OVERLAY.MODULE_83.ID = 83;
+ SDK_OVERLAY.MODULE_83.START = .;
+ FILE_2F1600.o (.text) /* 0x2ED600 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_83.END = .;
+ SDK_OVERLAY.MODULE_83.SIZE = SDK_OVERLAY.MODULE_83.END - SDK_OVERLAY.MODULE_83.START;
+ } > MODULE_83
+
+ .MODULE_83.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_83.BSS_START = .;
+ FILE_2F1600.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_83.BSS_END = .;
+ SDK_OVERLAY.MODULE_83.BSS_SIZE = SDK_OVERLAY.MODULE_83.BSS_END - SDK_OVERLAY.MODULE_83.BSS_START;
+ } >> MODULE_83
+
+ .MODULE_84: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_84_ID = 84;
+ SDK_OVERLAY.MODULE_84.ID = 84;
+ SDK_OVERLAY.MODULE_84.START = .;
+ FILE_2FFA00.o (.text) /* 0x2FBA00 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_84.END = .;
+ SDK_OVERLAY.MODULE_84.SIZE = SDK_OVERLAY.MODULE_84.END - SDK_OVERLAY.MODULE_84.START;
+ } > MODULE_84
+
+ .MODULE_84.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_84.BSS_START = .;
+ FILE_2FFA00.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_84.BSS_END = .;
+ SDK_OVERLAY.MODULE_84.BSS_SIZE = SDK_OVERLAY.MODULE_84.BSS_END - SDK_OVERLAY.MODULE_84.BSS_START;
+ } >> MODULE_84
+
+ .MODULE_85: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_85_ID = 85;
+ SDK_OVERLAY.MODULE_85.ID = 85;
+ SDK_OVERLAY.MODULE_85.START = .;
+ FILE_303400.o (.text) /* 0x2FF400 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_85.END = .;
+ SDK_OVERLAY.MODULE_85.SIZE = SDK_OVERLAY.MODULE_85.END - SDK_OVERLAY.MODULE_85.START;
+ } > MODULE_85
+
+ .MODULE_85.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_85.BSS_START = .;
+ FILE_303400.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_85.BSS_END = .;
+ SDK_OVERLAY.MODULE_85.BSS_SIZE = SDK_OVERLAY.MODULE_85.BSS_END - SDK_OVERLAY.MODULE_85.BSS_START;
+ } >> MODULE_85
+
+ .MODULE_86: {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY_MODULE_86_ID = 86;
+ SDK_OVERLAY.MODULE_86.ID = 86;
+ SDK_OVERLAY.MODULE_86.START = .;
+ FILE_30C600.o (.text) /* 0x308600 */
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_86.END = .;
+ SDK_OVERLAY.MODULE_86.SIZE = SDK_OVERLAY.MODULE_86.END - SDK_OVERLAY.MODULE_86.START;
+ } > MODULE_86
+
+ .MODULE_86.bss :
+ {
+ ALIGNALL(4); . = ALIGN(32);
+ SDK_OVERLAY.MODULE_86.BSS_START = .;
+ FILE_30C600.o (.bss)
+ . = ALIGN(32);
+ SDK_OVERLAY.MODULE_86.BSS_END = .;
+ SDK_OVERLAY.MODULE_86.BSS_SIZE = SDK_OVERLAY.MODULE_86.BSS_END - SDK_OVERLAY.MODULE_86.BSS_START;
+ } >> MODULE_86
+
+ .dummy.MAIN_EX:
+ {
+ . = ALIGN(32);
+ } > dummy.MAIN_EX
+
+ .arena.MAIN:
+ {
+ . = ALIGN(32);
+ SDK_SECTION_ARENA_START = .;
+ } > arena.MAIN
+
+ .arena.MAIN_EX:
+ {
+ . = ALIGN(32);
+ SDK_SECTION_ARENA_EX_START = .;
+ } > arena.MAIN_EX
+
+ .arena.ITCM:
+ {
+ . = ALIGN(32);
+ SDK_SECTION_ARENA_ITCM_START = .;
+ } > arena.ITCM
+
+ .arena.DTCM:
+ {
+ . = ALIGN(32);
+ SDK_SECTION_ARENA_DTCM_START = .;
+ } > arena.DTCM
+
+ .arm9_defs:
+ {
+ WRITEW ADDR(.arm9);
+ WRITEW _start;
+ WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE;
+ WRITEW _start_AutoloadDoneCallback;
+ WRITES ("MODULE_00.sbin");
+ WRITES ("MODULE_01.sbin");
+ WRITES ("MODULE_02.sbin");
+ WRITES ("MODULE_03.sbin");
+ WRITES ("MODULE_04.sbin");
+ WRITES ("MODULE_05.sbin");
+ WRITES ("MODULE_06.sbin");
+ WRITES ("MODULE_07.sbin");
+ WRITES ("MODULE_08.sbin");
+ WRITES ("MODULE_09.sbin");
+ WRITES ("MODULE_10.sbin");
+ WRITES ("MODULE_11.sbin");
+ WRITES ("MODULE_12.sbin");
+ WRITES ("MODULE_13.sbin");
+ WRITES ("MODULE_14.sbin");
+ WRITES ("MODULE_15.sbin");
+ WRITES ("MODULE_16.sbin");
+ WRITES ("MODULE_17.sbin");
+ WRITES ("MODULE_18.sbin");
+ WRITES ("MODULE_19.sbin");
+ WRITES ("MODULE_20.sbin");
+ WRITES ("MODULE_21.sbin");
+ WRITES ("MODULE_22.sbin");
+ WRITES ("MODULE_23.sbin");
+ WRITES ("MODULE_24.sbin");
+ WRITES ("MODULE_25.sbin");
+ WRITES ("MODULE_26.sbin");
+ WRITES ("MODULE_27.sbin");
+ WRITES ("MODULE_28.sbin");
+ WRITES ("MODULE_29.sbin");
+ WRITES ("MODULE_30.sbin");
+ WRITES ("MODULE_31.sbin");
+ WRITES ("MODULE_32.sbin");
+ WRITES ("MODULE_33.sbin");
+ WRITES ("MODULE_34.sbin");
+ WRITES ("MODULE_35.sbin");
+ WRITES ("MODULE_36.sbin");
+ WRITES ("MODULE_37.sbin");
+ WRITES ("MODULE_38.sbin");
+ WRITES ("MODULE_39.sbin");
+ WRITES ("MODULE_40.sbin");
+ WRITES ("MODULE_41.sbin");
+ WRITES ("MODULE_42.sbin");
+ WRITES ("MODULE_43.sbin");
+ WRITES ("MODULE_44.sbin");
+ WRITES ("MODULE_45.sbin");
+ WRITES ("MODULE_46.sbin");
+ WRITES ("MODULE_47.sbin");
+ WRITES ("MODULE_48.sbin");
+ WRITES ("MODULE_49.sbin");
+ WRITES ("MODULE_50.sbin");
+ WRITES ("MODULE_51.sbin");
+ WRITES ("MODULE_52.sbin");
+ WRITES ("MODULE_53.sbin");
+ WRITES ("MODULE_54.sbin");
+ WRITES ("MODULE_55.sbin");
+ WRITES ("MODULE_56.sbin");
+ WRITES ("MODULE_57.sbin");
+ WRITES ("MODULE_58.sbin");
+ WRITES ("MODULE_59.sbin");
+ WRITES ("MODULE_60.sbin");
+ WRITES ("MODULE_61.sbin");
+ WRITES ("MODULE_62.sbin");
+ WRITES ("MODULE_63.sbin");
+ WRITES ("MODULE_64.sbin");
+ WRITES ("MODULE_65.sbin");
+ WRITES ("MODULE_66.sbin");
+ WRITES ("MODULE_67.sbin");
+ WRITES ("MODULE_68.sbin");
+ WRITES ("MODULE_69.sbin");
+ WRITES ("MODULE_70.sbin");
+ WRITES ("MODULE_71.sbin");
+ WRITES ("MODULE_72.sbin");
+ WRITES ("MODULE_73.sbin");
+ WRITES ("MODULE_74.sbin");
+ WRITES ("MODULE_75.sbin");
+ WRITES ("MODULE_76.sbin");
+ WRITES ("MODULE_77.sbin");
+ WRITES ("MODULE_78.sbin");
+ WRITES ("MODULE_79.sbin");
+ WRITES ("MODULE_80.sbin");
+ WRITES ("MODULE_81.sbin");
+ WRITES ("MODULE_82.sbin");
+ WRITES ("MODULE_83.sbin");
+ WRITES ("MODULE_84.sbin");
+ WRITES ("MODULE_85.sbin");
+ WRITES ("MODULE_86.sbin");
+ } > arm9_defs
+
+ .arm9_table : {
+ WRITEW 0;
+ WRITEW ADDR(.MODULE_00);
+ WRITEW SDK_OVERLAY.MODULE_00.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_00.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_00.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_00.SINIT_END;
+ WRITEW 0;
+ WRITEW 0;
+
+ WRITEW 1;
+ WRITEW ADDR(.MODULE_01);
+ WRITEW SDK_OVERLAY.MODULE_01.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_01.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_01.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_01.SINIT_END;
+ WRITEW 1;
+ WRITEW 0;
+
+ WRITEW 2;
+ WRITEW ADDR(.MODULE_02);
+ WRITEW SDK_OVERLAY.MODULE_02.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_02.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_02.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_02.SINIT_END;
+ WRITEW 2;
+ WRITEW 0;
+
+ WRITEW 3;
+ WRITEW ADDR(.MODULE_03);
+ WRITEW SDK_OVERLAY.MODULE_03.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_03.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_03.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_03.SINIT_END;
+ WRITEW 3;
+ WRITEW 0;
+
+ WRITEW 4;
+ WRITEW ADDR(.MODULE_04);
+ WRITEW SDK_OVERLAY.MODULE_04.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_04.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_04.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_04.SINIT_END;
+ WRITEW 4;
+ WRITEW 0;
+
+ WRITEW 5;
+ WRITEW ADDR(.MODULE_05);
+ WRITEW SDK_OVERLAY.MODULE_05.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_05.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_05.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_05.SINIT_END;
+ WRITEW 5;
+ WRITEW 0;
+
+ WRITEW 6;
+ WRITEW ADDR(.MODULE_06);
+ WRITEW SDK_OVERLAY.MODULE_06.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_06.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_06.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_06.SINIT_END;
+ WRITEW 6;
+ WRITEW 0;
+
+ WRITEW 7;
+ WRITEW ADDR(.MODULE_07);
+ WRITEW SDK_OVERLAY.MODULE_07.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_07.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_07.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_07.SINIT_END;
+ WRITEW 7;
+ WRITEW 0;
+
+ WRITEW 8;
+ WRITEW ADDR(.MODULE_08);
+ WRITEW SDK_OVERLAY.MODULE_08.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_08.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_08.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_08.SINIT_END;
+ WRITEW 8;
+ WRITEW 0;
+
+ WRITEW 9;
+ WRITEW ADDR(.MODULE_09);
+ WRITEW SDK_OVERLAY.MODULE_09.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_09.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_09.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_09.SINIT_END;
+ WRITEW 9;
+ WRITEW 0;
+
+ WRITEW 10;
+ WRITEW ADDR(.MODULE_10);
+ WRITEW SDK_OVERLAY.MODULE_10.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_10.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_10.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_10.SINIT_END;
+ WRITEW 10;
+ WRITEW 0;
+
+ WRITEW 11;
+ WRITEW ADDR(.MODULE_11);
+ WRITEW SDK_OVERLAY.MODULE_11.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_11.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_11.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_11.SINIT_END;
+ WRITEW 11;
+ WRITEW 0;
+
+ WRITEW 12;
+ WRITEW ADDR(.MODULE_12);
+ WRITEW SDK_OVERLAY.MODULE_12.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_12.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_12.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_12.SINIT_END;
+ WRITEW 12;
+ WRITEW 0;
+
+ WRITEW 13;
+ WRITEW ADDR(.MODULE_13);
+ WRITEW SDK_OVERLAY.MODULE_13.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_13.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_13.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_13.SINIT_END;
+ WRITEW 13;
+ WRITEW 0;
+
+ WRITEW 14;
+ WRITEW ADDR(.MODULE_14);
+ WRITEW SDK_OVERLAY.MODULE_14.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_14.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_14.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_14.SINIT_END;
+ WRITEW 14;
+ WRITEW 0;
+
+ WRITEW 15;
+ WRITEW ADDR(.MODULE_15);
+ WRITEW SDK_OVERLAY.MODULE_15.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_15.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_15.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_15.SINIT_END;
+ WRITEW 15;
+ WRITEW 0;
+
+ WRITEW 16;
+ WRITEW ADDR(.MODULE_16);
+ WRITEW SDK_OVERLAY.MODULE_16.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_16.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_16.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_16.SINIT_END;
+ WRITEW 16;
+ WRITEW 0;
+
+ WRITEW 17;
+ WRITEW ADDR(.MODULE_17);
+ WRITEW SDK_OVERLAY.MODULE_17.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_17.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_17.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_17.SINIT_END;
+ WRITEW 17;
+ WRITEW 0;
+
+ WRITEW 18;
+ WRITEW ADDR(.MODULE_18);
+ WRITEW SDK_OVERLAY.MODULE_18.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_18.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_18.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_18.SINIT_END;
+ WRITEW 18;
+ WRITEW 0;
+
+ WRITEW 19;
+ WRITEW ADDR(.MODULE_19);
+ WRITEW SDK_OVERLAY.MODULE_19.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_19.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_19.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_19.SINIT_END;
+ WRITEW 19;
+ WRITEW 0;
+
+ WRITEW 20;
+ WRITEW ADDR(.MODULE_20);
+ WRITEW SDK_OVERLAY.MODULE_20.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_20.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_20.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_20.SINIT_END;
+ WRITEW 20;
+ WRITEW 0;
+
+ WRITEW 21;
+ WRITEW ADDR(.MODULE_21);
+ WRITEW SDK_OVERLAY.MODULE_21.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_21.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_21.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_21.SINIT_END;
+ WRITEW 21;
+ WRITEW 0;
+
+ WRITEW 22;
+ WRITEW ADDR(.MODULE_22);
+ WRITEW SDK_OVERLAY.MODULE_22.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_22.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_22.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_22.SINIT_END;
+ WRITEW 22;
+ WRITEW 0;
+
+ WRITEW 23;
+ WRITEW ADDR(.MODULE_23);
+ WRITEW SDK_OVERLAY.MODULE_23.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_23.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_23.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_23.SINIT_END;
+ WRITEW 23;
+ WRITEW 0;
+
+ WRITEW 24;
+ WRITEW ADDR(.MODULE_24);
+ WRITEW SDK_OVERLAY.MODULE_24.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_24.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_24.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_24.SINIT_END;
+ WRITEW 24;
+ WRITEW 0;
+
+ WRITEW 25;
+ WRITEW ADDR(.MODULE_25);
+ WRITEW SDK_OVERLAY.MODULE_25.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_25.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_25.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_25.SINIT_END;
+ WRITEW 25;
+ WRITEW 0;
+
+ WRITEW 26;
+ WRITEW ADDR(.MODULE_26);
+ WRITEW SDK_OVERLAY.MODULE_26.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_26.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_26.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_26.SINIT_END;
+ WRITEW 26;
+ WRITEW 0;
+
+ WRITEW 27;
+ WRITEW ADDR(.MODULE_27);
+ WRITEW SDK_OVERLAY.MODULE_27.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_27.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_27.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_27.SINIT_END;
+ WRITEW 27;
+ WRITEW 0;
+
+ WRITEW 28;
+ WRITEW ADDR(.MODULE_28);
+ WRITEW SDK_OVERLAY.MODULE_28.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_28.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_28.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_28.SINIT_END;
+ WRITEW 28;
+ WRITEW 0;
+
+ WRITEW 29;
+ WRITEW ADDR(.MODULE_29);
+ WRITEW SDK_OVERLAY.MODULE_29.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_29.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_29.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_29.SINIT_END;
+ WRITEW 29;
+ WRITEW 0;
+
+ WRITEW 30;
+ WRITEW ADDR(.MODULE_30);
+ WRITEW SDK_OVERLAY.MODULE_30.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_30.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_30.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_30.SINIT_END;
+ WRITEW 30;
+ WRITEW 0;
+
+ WRITEW 31;
+ WRITEW ADDR(.MODULE_31);
+ WRITEW SDK_OVERLAY.MODULE_31.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_31.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_31.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_31.SINIT_END;
+ WRITEW 31;
+ WRITEW 0;
+
+ WRITEW 32;
+ WRITEW ADDR(.MODULE_32);
+ WRITEW SDK_OVERLAY.MODULE_32.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_32.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_32.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_32.SINIT_END;
+ WRITEW 32;
+ WRITEW 0;
+
+ WRITEW 33;
+ WRITEW ADDR(.MODULE_33);
+ WRITEW SDK_OVERLAY.MODULE_33.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_33.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_33.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_33.SINIT_END;
+ WRITEW 33;
+ WRITEW 0;
+
+ WRITEW 34;
+ WRITEW ADDR(.MODULE_34);
+ WRITEW SDK_OVERLAY.MODULE_34.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_34.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_34.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_34.SINIT_END;
+ WRITEW 34;
+ WRITEW 0;
+
+ WRITEW 35;
+ WRITEW ADDR(.MODULE_35);
+ WRITEW SDK_OVERLAY.MODULE_35.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_35.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_35.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_35.SINIT_END;
+ WRITEW 35;
+ WRITEW 0;
+
+ WRITEW 36;
+ WRITEW ADDR(.MODULE_36);
+ WRITEW SDK_OVERLAY.MODULE_36.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_36.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_36.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_36.SINIT_END;
+ WRITEW 36;
+ WRITEW 0;
+
+ WRITEW 37;
+ WRITEW ADDR(.MODULE_37);
+ WRITEW SDK_OVERLAY.MODULE_37.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_37.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_37.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_37.SINIT_END;
+ WRITEW 37;
+ WRITEW 0;
+
+ WRITEW 38;
+ WRITEW ADDR(.MODULE_38);
+ WRITEW SDK_OVERLAY.MODULE_38.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_38.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_38.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_38.SINIT_END;
+ WRITEW 38;
+ WRITEW 0;
+
+ WRITEW 39;
+ WRITEW ADDR(.MODULE_39);
+ WRITEW SDK_OVERLAY.MODULE_39.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_39.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_39.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_39.SINIT_END;
+ WRITEW 39;
+ WRITEW 0;
+
+ WRITEW 40;
+ WRITEW ADDR(.MODULE_40);
+ WRITEW SDK_OVERLAY.MODULE_40.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_40.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_40.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_40.SINIT_END;
+ WRITEW 40;
+ WRITEW 0;
+
+ WRITEW 41;
+ WRITEW ADDR(.MODULE_41);
+ WRITEW SDK_OVERLAY.MODULE_41.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_41.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_41.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_41.SINIT_END;
+ WRITEW 41;
+ WRITEW 0;
+
+ WRITEW 42;
+ WRITEW ADDR(.MODULE_42);
+ WRITEW SDK_OVERLAY.MODULE_42.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_42.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_42.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_42.SINIT_END;
+ WRITEW 42;
+ WRITEW 0;
+
+ WRITEW 43;
+ WRITEW ADDR(.MODULE_43);
+ WRITEW SDK_OVERLAY.MODULE_43.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_43.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_43.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_43.SINIT_END;
+ WRITEW 43;
+ WRITEW 0;
+
+ WRITEW 44;
+ WRITEW ADDR(.MODULE_44);
+ WRITEW SDK_OVERLAY.MODULE_44.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_44.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_44.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_44.SINIT_END;
+ WRITEW 44;
+ WRITEW 0;
+
+ WRITEW 45;
+ WRITEW ADDR(.MODULE_45);
+ WRITEW SDK_OVERLAY.MODULE_45.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_45.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_45.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_45.SINIT_END;
+ WRITEW 45;
+ WRITEW 0;
+
+ WRITEW 46;
+ WRITEW ADDR(.MODULE_46);
+ WRITEW SDK_OVERLAY.MODULE_46.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_46.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_46.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_46.SINIT_END;
+ WRITEW 46;
+ WRITEW 0;
+
+ WRITEW 47;
+ WRITEW ADDR(.MODULE_47);
+ WRITEW SDK_OVERLAY.MODULE_47.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_47.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_47.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_47.SINIT_END;
+ WRITEW 47;
+ WRITEW 0;
+
+ WRITEW 48;
+ WRITEW ADDR(.MODULE_48);
+ WRITEW SDK_OVERLAY.MODULE_48.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_48.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_48.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_48.SINIT_END;
+ WRITEW 48;
+ WRITEW 0;
+
+ WRITEW 49;
+ WRITEW ADDR(.MODULE_49);
+ WRITEW SDK_OVERLAY.MODULE_49.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_49.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_49.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_49.SINIT_END;
+ WRITEW 49;
+ WRITEW 0;
+
+ WRITEW 50;
+ WRITEW ADDR(.MODULE_50);
+ WRITEW SDK_OVERLAY.MODULE_50.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_50.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_50.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_50.SINIT_END;
+ WRITEW 50;
+ WRITEW 0;
+
+ WRITEW 51;
+ WRITEW ADDR(.MODULE_51);
+ WRITEW SDK_OVERLAY.MODULE_51.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_51.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_51.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_51.SINIT_END;
+ WRITEW 51;
+ WRITEW 0;
+
+ WRITEW 52;
+ WRITEW ADDR(.MODULE_52);
+ WRITEW SDK_OVERLAY.MODULE_52.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_52.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_52.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_52.SINIT_END;
+ WRITEW 52;
+ WRITEW 0;
+
+ WRITEW 53;
+ WRITEW ADDR(.MODULE_53);
+ WRITEW SDK_OVERLAY.MODULE_53.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_53.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_53.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_53.SINIT_END;
+ WRITEW 53;
+ WRITEW 0;
+
+ WRITEW 54;
+ WRITEW ADDR(.MODULE_54);
+ WRITEW SDK_OVERLAY.MODULE_54.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_54.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_54.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_54.SINIT_END;
+ WRITEW 54;
+ WRITEW 0;
+
+ WRITEW 55;
+ WRITEW ADDR(.MODULE_55);
+ WRITEW SDK_OVERLAY.MODULE_55.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_55.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_55.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_55.SINIT_END;
+ WRITEW 55;
+ WRITEW 0;
+
+ WRITEW 56;
+ WRITEW ADDR(.MODULE_56);
+ WRITEW SDK_OVERLAY.MODULE_56.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_56.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_56.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_56.SINIT_END;
+ WRITEW 56;
+ WRITEW 0;
+
+ WRITEW 57;
+ WRITEW ADDR(.MODULE_57);
+ WRITEW SDK_OVERLAY.MODULE_57.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_57.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_57.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_57.SINIT_END;
+ WRITEW 57;
+ WRITEW 0;
+
+ WRITEW 58;
+ WRITEW ADDR(.MODULE_58);
+ WRITEW SDK_OVERLAY.MODULE_58.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_58.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_58.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_58.SINIT_END;
+ WRITEW 58;
+ WRITEW 0;
+
+ WRITEW 59;
+ WRITEW ADDR(.MODULE_59);
+ WRITEW SDK_OVERLAY.MODULE_59.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_59.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_59.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_59.SINIT_END;
+ WRITEW 59;
+ WRITEW 0;
+
+ WRITEW 60;
+ WRITEW ADDR(.MODULE_60);
+ WRITEW SDK_OVERLAY.MODULE_60.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_60.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_60.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_60.SINIT_END;
+ WRITEW 60;
+ WRITEW 0;
+
+ WRITEW 61;
+ WRITEW ADDR(.MODULE_61);
+ WRITEW SDK_OVERLAY.MODULE_61.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_61.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_61.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_61.SINIT_END;
+ WRITEW 61;
+ WRITEW 0;
+
+ WRITEW 62;
+ WRITEW ADDR(.MODULE_62);
+ WRITEW SDK_OVERLAY.MODULE_62.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_62.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_62.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_62.SINIT_END;
+ WRITEW 62;
+ WRITEW 0;
+
+ WRITEW 63;
+ WRITEW ADDR(.MODULE_63);
+ WRITEW SDK_OVERLAY.MODULE_63.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_63.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_63.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_63.SINIT_END;
+ WRITEW 63;
+ WRITEW 0;
+
+ WRITEW 64;
+ WRITEW ADDR(.MODULE_64);
+ WRITEW SDK_OVERLAY.MODULE_64.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_64.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_64.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_64.SINIT_END;
+ WRITEW 64;
+ WRITEW 0;
+
+ OVERLAY_TABLE(MODULE_65, 65)
+ OVERLAY_TABLE(MODULE_66, 66)
+ OVERLAY_TABLE(MODULE_67, 67)
+ OVERLAY_TABLE(MODULE_68, 68)
+
+ WRITEW 69;
+ WRITEW ADDR(.MODULE_69);
+ WRITEW SDK_OVERLAY.MODULE_69.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_69.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_69.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_69.SINIT_END;
+ WRITEW 69;
+ WRITEW 0;
+
+ OVERLAY_TABLE(MODULE_70, 70)
+ OVERLAY_TABLE(MODULE_71, 71)
+ OVERLAY_TABLE(MODULE_72, 72)
+ OVERLAY_TABLE(MODULE_73, 73)
+ OVERLAY_TABLE(MODULE_74, 74)
+ OVERLAY_TABLE(MODULE_75, 75)
+ OVERLAY_TABLE(MODULE_76, 76)
+ OVERLAY_TABLE(MODULE_77, 77)
+ OVERLAY_TABLE(MODULE_78, 78)
+ OVERLAY_TABLE(MODULE_79, 79)
+ OVERLAY_TABLE(MODULE_80, 80)
+ OVERLAY_TABLE(MODULE_81, 81)
+ OVERLAY_TABLE(MODULE_82, 82)
+ OVERLAY_TABLE(MODULE_83, 83)
+ OVERLAY_TABLE(MODULE_84, 84)
+ OVERLAY_TABLE(MODULE_85, 85)
+ OVERLAY_TABLE(MODULE_86, 86)
+ } > arm9_table
+
+ SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START;
+ SDK_IRQ_STACKSIZE = 1024;
+ SDK_SYS_STACKSIZE = 0;
+
+ .binary.MODULE_FILES:
+ {
+ WRITES ("arm9.sbin");
+ WRITES ("arm9_defs.sbin");
+ WRITES ("arm9_table.sbin");
+ } > binary.MODULE_FILES
+
+ .check.ITCM:
+ {
+ . = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE;
+ . = . + SDK_OVERLAY.MODULE_03.SIZE + SDK_OVERLAY.MODULE_03.BSS_SIZE;
+ } > check.ITCM
+
+ SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1;
+ .check.DTCM:
+ {
+ . = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE;
+ . = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
+ } > check.DTCM
}
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 3df64d7d..a0f6e04f 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -2,40 +2,110 @@
Static arm9
{
Address 0x02000000
- Object main.o
- Object FUN_02000DF4.o
- Object unk_02000E0C.o
- Object rom2.o
- Object string_util.o
- Object unk_020023C0.o
- Object filesystem.o
- Object unk_02006864.o
- Object script.o
- Object unk_02038C78.o
- Object scrcmd.o
- Object unk_02046030.o
- Object unk_0208AC14.o
- Object unk_020AF030.o
- Library libfx.a
- Library libgx.a
- Library libos.a
- Library libmi.a
- Library libsnd.a
- Library libpxi.a
- Library libfs.a
- Library libdgt.a
- Library libcp.a
- Library libspi.a
- Library libpm.a
- Library librtc.a
- Library libcard.a
- Library libwm.a
- Library libctrdg.a
- Library libmath.a
- Library libstd.a
- Library libc.a
- Library libmwcc.a
- Object rom2_2.o
+ Object main.o
+ Object FUN_02000DF4.o
+ Object unk_02000E0C.o
+ Object rom2.o
+ Object string_util.o
+ Object unk_020023C0.o
+ Object filesystem.o
+ Object unk_02006864.o
+ Object script.o
+ Object unk_02038C78.o
+ Object scrcmd.o
+ Object unk_02046030.o
+ Object unk_0208AC14.o
+ Object FUN_020910A4.o
+ Object unk_020910EC.o
+ Object unk_020AF030.o
+ Object FX_mtx22.o
+ Object FX_mtx33.o
+ Object FX_mtx43.o
+ Object FX_mtx44.o
+ Object FX_cp.o
+ Object FX_vec.o
+ Object FX_atan.o
+ Object FX.o
+ Object GX.o
+ Object GX_state.o
+ Object GX_vramcnt.o
+ Object GX_bgcnt.o
+ Object GX_g2.o
+ Object GX_g3b.o
+ Object GX_g3imm.o
+ Object GX_g3x.o
+ Object GX_g3_util.o
+ Object GX_load2d.o
+ Object GX_load3d.o
+ Object GX_g3.o
+ Object GX_asm.o
+ Object OS_irqHandler.o
+ Object OS_irqTable.o
+ Object OS_interrupt.o
+ Object OS_spinLock.o
+ Object OS_printf.o
+ Object OS_thread.o
+ Object OS_context.o
+ Object OS_emulator.o
+ Object OS_message.o
+ Object OS_mutex.o
+ Object OS_cache.o
+ Object OS_init.o
+ Object OS_arena.o
+ Object OS_alloc.o
+ Object OS_tcm.o
+ Object OS_protectionUnit.o
+ Object OS_protectionRegion.o
+ Object OS_exception.o
+ Object OS_timer.o
+ Object OS_tick.o
+ Object OS_alarm.o
+ Object OS_valarm.o
+ Object OS_system.o
+ Object OS_reset.o
+ Object OS_ownerInfo.o
+ Object OS_vramExclusive.o
+ Object OS_entropy.o
+ Object OS_terminate_proc.o
+ Object MI_wram.o
+ Object MI_dma.o
+ Object MI_dma_hblank.o
+ Object MI_dma_gxcommand.o
+ Object MI_memory.o
+ Object MI_swap.o
+ Object MI_uncompress.o
+ Object MI_dma_card.o
+ Object MI_init.o
+ Object SND_interface.o
+ Object SND_main.o
+ Object SND_command.o
+ Object SND_alarm.o
+ Object SND_work.o
+ Object SND_util.o
+ Object SND_bank.o
+ Object PXI_init.o
+ Object PXI_fifo.o
+ Object rom2_2.o
+ Object FS_command.o
+ Object FS_command_default.o
+ Object FS_archive.o
+ Object FS_file.o
+ Object FS_rom.o
+ Object FS_overlay.o
+ Object libdgt.o
+ Object libcp.o
+ Object libspi.o
+ Object libpm.o
+ Object librtc.o
+ Object libcard.o
+ Object libwm.o
+ Object libctrdg.o
+ Object libmath.o
+ Object libstd.o
+ Object libc.o
+ Object rom2_3.o
+ Object libmwcc.o
+ Object rom2_4.o
}
Autoload ITCM
@@ -55,437 +125,441 @@ Autoload EXT
Address 0x02400000
}
-Overlay overlay_00
+Overlay MODULE_00
{
Address 0x021D74E0
- Object FILE_10C400.o
+ Object module_00_dummy.o
}
-Overlay overlay_01
+Overlay MODULE_01
{
Address 0x021D74E0
- Object FILE_10C600.o
+ Object module_01.o
}
-Overlay overlay_02
+Overlay MODULE_02
{
Address 0x021D7520
- Object FILE_10C800.o
+ Object module_02_dummy.o
}
-Overlay overlay_03
+Overlay MODULE_03
{
Address 0x01FF8700
- Object FILE_10CA00.o
+ Object module_03_dummy.o
}
-Overlay overlay_04
+Overlay MODULE_04
{
Address 0x021D74E0
- Object FILE_10CC00.o
+ Object thumb_04.o
+ Object arm_04.o
}
-Overlay overlay_05
+Overlay MODULE_05
{
Address 0x021D74E0
- Object FILE_145400.o
+ Object module_05.o
}
-Overlay overlay_06
+Overlay MODULE_06
{
Address 0x022396A0
- Object FILE_16B600.o
+ Object module_06.o
}
-Overlay overlay_07
+Overlay MODULE_07
{
Address 0x02211E60
- Object FILE_184400.o
+ Object module_07.o
}
-Overlay overlay_08
+Overlay MODULE_08
{
Address 0x02211E60
- Object FILE_187800.o
+ Object module_08.o
}
-Overlay overlay_09
+Overlay MODULE_09
{
Address 0x02211E60
- Object FILE_1A3000.o
+ Object module_09.o
}
-Overlay overlay_10
+Overlay MODULE_10
{
Address 0x021D74E0
- Object FILE_1AD200.o
+ Object module_10_dummy.o
}
-Overlay overlay_11
+Overlay MODULE_11
{
Address 0x0222D5C0
- Object FILE_1AD400.o
+ Object module_11.o
}
-Overlay overlay_12
+Overlay MODULE_12
{
Address 0x0222D5C0
- Object FILE_1DFE00.o
+ Object module_12.o
}
-Overlay overlay_13
+Overlay MODULE_13
{
Address 0x02211E60
- Object FILE_1F9200.o
+ Object module_13_init.o
+ Object module_13_arm1.o
+ Object module_13_thumb.o
+ Object module_13_arm2.o
}
-Overlay overlay_14
+Overlay MODULE_14
{
Address 0x021D74E0
- Object FILE_227E00.o
+ Object module_14.o
}
-Overlay overlay_15
+Overlay MODULE_15
{
Address 0x021D74E0
- Object FILE_237400.o
+ Object module_15.o
}
-Overlay overlay_16
+Overlay MODULE_16
{
Address 0x021D74E0
- Object FILE_23BC00.o
+ Object module_16.o
}
-Overlay overlay_17
+Overlay MODULE_17
{
Address 0x021D74E0
- Object FILE_264200.o
+ Object module_17.o
}
-Overlay overlay_18
+Overlay MODULE_18
{
Address 0x022396A0
- Object FILE_26B200.o
+ Object module_18.o
}
-Overlay overlay_19
+Overlay MODULE_19
{
Address 0x02252440
- Object FILE_283000.o
+ Object module_19.o
}
-Overlay overlay_20
+Overlay MODULE_20
{
Address 0x02252440
- Object FILE_283200.o
+ Object module_20.o
}
-Overlay overlay_21
+Overlay MODULE_21
{
Address 0x02254840
- Object FILE_285600.o
+ Object module_21.o
}
-Overlay overlay_22
+Overlay MODULE_22
{
Address 0x02254840
- Object FILE_285C00.o
+ Object module_22.o
}
-Overlay overlay_23
+Overlay MODULE_23
{
Address 0x02254840
- Object FILE_286C00.o
+ Object module_23.o
}
-Overlay overlay_24
+Overlay MODULE_24
{
Address 0x02254840
- Object FILE_288600.o
+ Object module_24.o
}
-Overlay overlay_25
+Overlay MODULE_25
{
Address 0x02254840
- Object FILE_289000.o
+ Object module_25.o
}
-Overlay overlay_26
+Overlay MODULE_26
{
Address 0x02254840
- Object FILE_289600.o
+ Object module_26.o
}
-Overlay overlay_27
+Overlay MODULE_27
{
Address 0x02254840
- Object FILE_289E00.o
+ Object module_27.o
}
-Overlay overlay_28
+Overlay MODULE_28
{
Address 0x02254840
- Object FILE_28AA00.o
+ Object module_28.o
}
-Overlay overlay_29
+Overlay MODULE_29
{
Address 0x02254840
- Object FILE_28C200.o
+ Object module_29.o
}
-Overlay overlay_30
+Overlay MODULE_30
{
Address 0x02254840
- Object FILE_28CC00.o
+ Object module_30.o
}
-Overlay overlay_31
+Overlay MODULE_31
{
Address 0x02254840
- Object FILE_28D200.o
+ Object module_31.o
}
-Overlay overlay_32
+Overlay MODULE_32
{
Address 0x02254840
- Object FILE_28D800.o
+ Object module_32.o
}
-Overlay overlay_33
+Overlay MODULE_33
{
Address 0x02254840
Object FILE_28DE00.o
}
-Overlay overlay_34
+Overlay MODULE_34
{
Address 0x02254840
Object FILE_28E200.o
}
-Overlay overlay_35
+Overlay MODULE_35
{
Address 0x02254840
Object FILE_28E800.o
}
-Overlay overlay_36
+Overlay MODULE_36
{
Address 0x02254840
Object FILE_28F200.o
}
-Overlay overlay_37
+Overlay MODULE_37
{
Address 0x02254840
Object FILE_290000.o
}
-Overlay overlay_38
+Overlay MODULE_38
{
Address 0x02254840
Object FILE_290600.o
}
-Overlay overlay_39
+Overlay MODULE_39
{
Address 0x02254840
Object FILE_291200.o
}
-Overlay overlay_40
+Overlay MODULE_40
{
Address 0x02254840
Object FILE_292000.o
}
-Overlay overlay_41
+Overlay MODULE_41
{
Address 0x02254840
Object FILE_292E00.o
}
-Overlay overlay_42
+Overlay MODULE_42
{
Address 0x02254840
Object FILE_294000.o
}
-Overlay overlay_43
+Overlay MODULE_43
{
Address 0x02254840
Object FILE_294A00.o
}
-Overlay overlay_44
+Overlay MODULE_44
{
Address 0x02254840
Object FILE_295400.o
}
-Overlay overlay_45
+Overlay MODULE_45
{
Address 0x02254840
Object FILE_295A00.o
}
-Overlay overlay_46
+Overlay MODULE_46
{
Address 0x02254840
Object FILE_296400.o
}
-Overlay overlay_47
+Overlay MODULE_47
{
Address 0x02254840
Object FILE_296800.o
}
-Overlay overlay_48
+Overlay MODULE_48
{
Address 0x02254840
Object FILE_297600.o
}
-Overlay overlay_49
+Overlay MODULE_49
{
Address 0x02254840
Object FILE_298000.o
}
-Overlay overlay_50
+Overlay MODULE_50
{
Address 0x02254840
Object FILE_298600.o
}
-Overlay overlay_51
+Overlay MODULE_51
{
Address 0x02254840
Object FILE_298A00.o
}
-Overlay overlay_52
+Overlay MODULE_52
{
Address 0x021D74E0
Object FILE_299A00.o
}
-Overlay overlay_53
+Overlay MODULE_53
{
Address 0x021D74E0
Object FILE_299E00.o
}
-Overlay overlay_54
+Overlay MODULE_54
{
Address 0x021D74E0
Object FILE_29C400.o
}
-Overlay overlay_55
+Overlay MODULE_55
{
Address 0x021D74E0
Object FILE_29E800.o
}
-Overlay overlay_56
+Overlay MODULE_56
{
Address 0x02211E60
Object FILE_2A1A00.o
}
-Overlay overlay_57
+Overlay MODULE_57
{
Address 0x021D74E0
Object FILE_2A6200.o
}
-Overlay overlay_58
+Overlay MODULE_58
{
Address 0x021D9A20
Object FILE_2A8800.o
}
-Overlay overlay_59
+Overlay MODULE_59
{
Address 0x021D74E0
Object FILE_2A9E00.o
}
-Overlay overlay_60
+Overlay MODULE_60
{
Address 0x021D74E0
Object FILE_2ACC00.o
}
-Overlay overlay_61
+Overlay MODULE_61
{
Address 0x021D74E0
Object FILE_2ADA00.o
}
-Overlay overlay_62
+Overlay MODULE_62
{
Address 0x0222D5C0
Object FILE_2AEC00.o
}
-Overlay overlay_63
+Overlay MODULE_63
{
Address 0x021D74E0
Object FILE_2B2A00.o
}
-Overlay overlay_64
+Overlay MODULE_64
{
Address 0x021D74E0
Object FILE_2B7600.o
}
-Overlay overlay_65
+Overlay MODULE_65
{
Address 0x021D74E0
Object FILE_2B9400.o
}
-Overlay overlay_66
+Overlay MODULE_66
{
Address 0x021D74E0
Object FILE_2BC400.o
}
-Overlay overlay_67
+Overlay MODULE_67
{
Address 0x021D74E0
Object FILE_2BEC00.o
}
-Overlay overlay_68
+Overlay MODULE_68
{
Address 0x021D74E0
Object FILE_2C1200.o
}
-Overlay overlay_69
+Overlay MODULE_69
{
Address 0x0222D5C0
Object FILE_2C2800.o
}
-Overlay overlay_70
+Overlay MODULE_70
{
Address 0x021D74E0
Object FILE_2C4C00.o
}
-Overlay overlay_71
+Overlay MODULE_71
{
Address 0x0222D5C0
Object FILE_2C5C00.o
}
-Overlay overlay_72
+Overlay MODULE_72
{
Address 0x021D74E0
Object FILE_2C9C00.o
}
-Overlay overlay_73
+Overlay MODULE_73
{
Address 0x021D74E0
Object FILE_2C9E00.o
}
-Overlay overlay_74
+Overlay MODULE_74
{
Address 0x021D74E0
Object FILE_2CEA00.o
}
-Overlay overlay_75
+Overlay MODULE_75
{
Address 0x021E6BA0
Object FILE_2CFE00.o
}
-Overlay overlay_76
+Overlay MODULE_76
{
Address 0x021D74E0
Object FILE_2D5C00.o
}
-Overlay overlay_77
+Overlay MODULE_77
{
Address 0x021D74E0
Object FILE_2D7C00.o
}
-Overlay overlay_78
+Overlay MODULE_78
{
Address 0x021D74E0
Object FILE_2D9800.o
}
-Overlay overlay_79
+Overlay MODULE_79
{
Address 0x02211E60
Object FILE_2D9E00.o
}
-Overlay overlay_80
+Overlay MODULE_80
{
Address 0x0222D5C0
Object FILE_2DF200.o
}
-Overlay overlay_81
+Overlay MODULE_81
{
Address 0x02237E40
Object FILE_2E9A00.o
}
-Overlay overlay_82
+Overlay MODULE_82
{
Address 0x0222D5C0
Object FILE_2EF000.o
}
-Overlay overlay_83
+Overlay MODULE_83
{
Address 0x0222D5C0
Object FILE_2F1600.o
}
-Overlay overlay_84
+Overlay MODULE_84
{
Address 0x021D74E0
Object FILE_2FFA00.o
}
-Overlay overlay_85
+Overlay MODULE_85
{
Address 0x021D74E0
Object FILE_303400.o
}
-Overlay overlay_86
+Overlay MODULE_86
{
Address 0x021D74E0
Object FILE_30C600.o
diff --git a/arm9/arm9.sha1 b/arm9/arm9.sha1
index dd825541..3df1e406 100644
--- a/arm9/arm9.sha1
+++ b/arm9/arm9.sha1
@@ -1 +1,89 @@
-f72681568e075a56beb25b584734a35d118468a1 build/arm9.sbin
+08470cde58c7bdb9f3664cb975285ab7b0bf46b5 build/arm9.sbin
+2238268b6af1658e79755e07b6a01ed679598c20 build/arm9_table.sbin
+de8a847bff8c343d69b853a215e6ee775ef2ef96 build/MODULE_00.sbin
+efeb3b1410ea015d74802b84094474f937746866 build/MODULE_01.sbin
+de8a847bff8c343d69b853a215e6ee775ef2ef96 build/MODULE_02.sbin
+de8a847bff8c343d69b853a215e6ee775ef2ef96 build/MODULE_03.sbin
+46fb116957d30ab3c292e97c4ad4e4711ac6cf84 build/MODULE_04.sbin
+5b82b77354ff84ac41b0b5f9cd0334e0d0265282 build/MODULE_05.sbin
+085ffcac7b505dece722a4bd2d4210fdfdcbde49 build/MODULE_06.sbin
+0dbbe0f854d7ed6890eeae9dc4a275c748b192bd build/MODULE_07.sbin
+1fb70ec98716a012ecab69045738b679c733b95e build/MODULE_08.sbin
+1eef423b2554ff3b14bc13d7f8774df8e790070b build/MODULE_09.sbin
+de8a847bff8c343d69b853a215e6ee775ef2ef96 build/MODULE_10.sbin
+37c5acdf493116d5e651d02265d90508519ed4b9 build/MODULE_11.sbin
+08828e9b61961ed63209f963e2c08768490224d6 build/MODULE_12.sbin
+c669bc9f3a954f6904a0dc4618d8a1cfdd4db9cf build/MODULE_13.sbin
+35b441e46b7477ddf10f010988d02a79b5c0622d build/MODULE_14.sbin
+4452e2e8ab67d8d4de0cb2e1e9aa2c89ff1a3ac2 build/MODULE_15.sbin
+0aaa8426fe4c356ef50c450d24134ca7fa5ee35c build/MODULE_16.sbin
+efa5b28ecf3c8cd0b2cc0571cccc5e91a0932290 build/MODULE_17.sbin
+5dc5ea5fcfe50af1c6324785a86f8f3876368ac0 build/MODULE_18.sbin
+055d336fca5e30585938b89ae9dcb1274558febf build/MODULE_19.sbin
+773e1e5ae00304b2963553f1998580e325c6189d build/MODULE_20.sbin
+822fcd97cc12b29a9bcff8526da5dc4512f39bb3 build/MODULE_21.sbin
+2ea4283dd68a4d9565bf8dd63ea3bd0eeceb6570 build/MODULE_22.sbin
+6cca7206bb5750285bb4d3284f1b4dacc60d7bf9 build/MODULE_23.sbin
+1b8e7a1e0f656e7e7888a66b296d2edac6eea684 build/MODULE_24.sbin
+e12fa9c7a041f8b6566003a29f2ada49f6ea6e8b build/MODULE_25.sbin
+52e684d649dd06862b93db70b4b23d74baa5a42a build/MODULE_26.sbin
+e502dbf7558262549ab55be969c2a27257a06a87 build/MODULE_27.sbin
+456c1d96b13b6b6827d772fa75583591bbca4b88 build/MODULE_28.sbin
+736a922e1756f3151f7da30825696b653745189e build/MODULE_29.sbin
+6c066d2365ed8aa05a81699f3953c23a7c300794 build/MODULE_30.sbin
+6c8cac2ca9f509d28ce0d3f7316d5945bc1b6702 build/MODULE_31.sbin
+f74a149094393042f9fd8153452ceb2ed6dd257f build/MODULE_32.sbin
+71e17a56d5068edb60f2ee3eb5e12f11963cfb17 build/MODULE_33.sbin
+1483b4eb5227bcc08466acddb0bf59cf23dae9dd build/MODULE_34.sbin
+04eaadd550571cc9e324b3ef0cad7774d3d33bd2 build/MODULE_35.sbin
+95808073fa6c757e7ba680e1f9e7379b6d19e33b build/MODULE_36.sbin
+c7d0b0ef005a0cb1782c5747cc301873a4cb40f5 build/MODULE_37.sbin
+bf2ef426465b56db480ccc9c9a9cc02409c57720 build/MODULE_38.sbin
+2fe6765c83165a4c50330a0aaccc575a9f92bb49 build/MODULE_39.sbin
+91d30f7c93d00e1b9c16cd13b2c73bf822285300 build/MODULE_40.sbin
+996587f925f396e0ce4d773511c32d5dd4288469 build/MODULE_41.sbin
+c9599a45c6f2bac5eb713645a6bfa0b760c2d254 build/MODULE_42.sbin
+61932050f4c85e4b6b1d0e8e7bbb8cec93974128 build/MODULE_43.sbin
+dd8a0e6626a79ceb049857861ca74779c7cec45b build/MODULE_44.sbin
+df0b25d1be30577a6200d3662341ee9e8a7312be build/MODULE_45.sbin
+8257fca389878d54f6f8e2aa932d1696715ae451 build/MODULE_46.sbin
+bc06d4be2fa3b39c503c33e5dad3e7d18c494208 build/MODULE_47.sbin
+18b333c7d3dc32742ab0a7c2a8975451f5883b31 build/MODULE_48.sbin
+550e87a3655505ca69d07f0c8cba96884ec6cbf2 build/MODULE_49.sbin
+58d8f1472458308a534dcbff4d63f768b29aac5a build/MODULE_50.sbin
+64e55516a13d1d64c9171715e7870a52fa8612f6 build/MODULE_51.sbin
+13240d317501187a69264e0da583f50a3f01a797 build/MODULE_52.sbin
+009c82b769a712afe46b05cd71493aafda6a2644 build/MODULE_53.sbin
+b227c417eac45bb27e942c05c9d25785bcd4bf81 build/MODULE_54.sbin
+d5e6ca89821f31a46add7919a520d93231dfcc1f build/MODULE_55.sbin
+7124cc36a6fab727c2474f9c9948aac2d753a9e6 build/MODULE_56.sbin
+836bbb97ee1ad0e92aabe4f235260467c90ba2d1 build/MODULE_57.sbin
+9a4656141b41bd11368019690cf8d4570ed1d9bf build/MODULE_58.sbin
+80f2c555536bd5f11e872f23f5cd4458e01ea02c build/MODULE_59.sbin
+d974d08484422e0342206524fa95cc31532f6a45 build/MODULE_60.sbin
+a6203eb38120b42567d10741b1ad1069e212d3c9 build/MODULE_61.sbin
+9bbe9952d6dc4524b9f726642cfd841c75482629 build/MODULE_62.sbin
+d6b57ae6134b95ca8c2989bb22f25bc7a62ab6e6 build/MODULE_63.sbin
+5ddd33b1071506a85aee57a5d478a446c6ef2cef build/MODULE_64.sbin
+c6ea696afe8492d4c45ebf6438a968e51de93585 build/MODULE_65.sbin
+1bf9511dc93b61a9244180b0d7ad390b229516f6 build/MODULE_66.sbin
+a62de9ee2e221f29bd6c942db912b13cabec5e73 build/MODULE_67.sbin
+6b8e39bb2285d3d6f2772d35678a00ebe4cee359 build/MODULE_68.sbin
+c66fbd0e2ba54d543f4a2ba842f6f70a05b19eec build/MODULE_69.sbin
+6639c4a9a35e7e687664217d7f8ed2ff6b501ffc build/MODULE_70.sbin
+4d5cfa9ff2261a59e6cef3cd7e14e4428d624643 build/MODULE_71.sbin
+de8a847bff8c343d69b853a215e6ee775ef2ef96 build/MODULE_72.sbin
+dc5d200d5557f85e51b1032212c7190dfef404e4 build/MODULE_73.sbin
+031b2bd8bec93c0adf7bc09ce9e85491dca5a479 build/MODULE_74.sbin
+da626fda7e1f4fba1a8048b71dd21402da698cfc build/MODULE_75.sbin
+2a6ee045faacf0d76720b476f77663127d4f1906 build/MODULE_76.sbin
+b18693a936b0284a1c31b124f77e9c8a348b2f59 build/MODULE_77.sbin
+d74a82e1e3f289e67e8f8e74655a7fec631df59c build/MODULE_78.sbin
+782b5de600bc284704bf4020c9afc6ded44628a2 build/MODULE_79.sbin
+b07b591efbe3de8c9e0184ba3cbd4e8df3415e7d build/MODULE_80.sbin
+45179a7021d88902f8f931663620f18fd673ec24 build/MODULE_81.sbin
+40ac0ea1f763271c74c42a12bae557dc5b49ea65 build/MODULE_82.sbin
+5b41270e5534e5fa965d9e762d0e56c2d79e8a6b build/MODULE_83.sbin
+936504d3c568cf0f89b5982f3249bc43097265ae build/MODULE_84.sbin
+944283bd9722dbf8a7a8025794c44eecb2dacd68 build/MODULE_85.sbin
+00151ae462bbde7356e87750ab0176ca84ae45c6 build/MODULE_86.sbin
diff --git a/arm9/asm/DGT_hash1.s b/arm9/asm/DGT_hash1.s
new file mode 100644
index 00000000..a9d6778d
--- /dev/null
+++ b/arm9/asm/DGT_hash1.s
@@ -0,0 +1,404 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start ProcessBlock
+ProcessBlock: ; 0x020D2798
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ add r3, r0, #0x18
+ ldr r5, [r0, #0x0]
+ ldr r4, [r0, #0x4]
+ ldr lr, [r0, #0x8]
+ ldr r12, [r0, #0xc]
+ ldr r2, _020D2B78 ; =0x02106900
+ mov r8, r3
+ mov r7, #0x0
+_020D27C0:
+ mvn r1, r4
+ and r6, r4, lr
+ and r1, r1, r12
+ orr r1, r6, r1
+ ldr r6, [r8, #0x0]
+ add r1, r5, r1
+ ldr r5, [r2, #0x0]
+ add r1, r6, r1
+ add r5, r5, r1
+ mov r1, r5, lsl #0x7
+ orr r1, r1, r5, lsr #0x19
+ add r5, r4, r1
+ mvn r1, r5
+ and r6, r5, r4
+ and r1, r1, lr
+ orr r1, r6, r1
+ ldr r6, [r8, #0x4]
+ add r1, r12, r1
+ ldr r9, [r2, #0x4]
+ add r1, r6, r1
+ add r6, r9, r1
+ mov r1, r6, lsl #0xc
+ orr r1, r1, r6, lsr #0x14
+ add r12, r5, r1
+ mvn r1, r12
+ and r6, r12, r5
+ and r1, r1, r4
+ orr r6, r6, r1
+ add r1, r8, #0xc
+ ldr r9, [r8, #0x8]
+ add r6, lr, r6
+ add r6, r9, r6
+ ldr r9, [r2, #0x8]
+ ldr r1, [r1, #0x0]
+ add r10, r9, r6
+ add r6, r2, #0xc
+ ldr r6, [r6, #0x0]
+ mov r9, r10, lsl #0x11
+ orr r9, r9, r10, lsr #0xf
+ add lr, r12, r9
+ add r2, r2, #0x10
+ add r8, r8, #0x10
+ and r10, lr, r12
+ mvn r9, lr
+ and r9, r9, r5
+ orr r9, r10, r9
+ add r4, r4, r9
+ add r1, r1, r4
+ add r4, r6, r1
+ mov r1, r4, lsl #0x16
+ orr r1, r1, r4, lsr #0xa
+ add r4, lr, r1
+ add r7, r7, #0x1
+ cmp r7, #0x4
+ blt _020D27C0
+ ldr r6, _020D2B7C ; =0x02106840
+ mov r1, #0x0
+_020D28A4:
+ mvn r7, r12
+ ldr r9, [r6, #0x0]
+ and r8, r4, r12
+ and r7, lr, r7
+ orr r7, r8, r7
+ ldr r8, [r3, r9, lsl #0x2]
+ add r5, r5, r7
+ ldr r7, [r2, #0x0]
+ add r5, r8, r5
+ add r7, r7, r5
+ mov r5, r7, lsl #0x5
+ orr r5, r5, r7, lsr #0x1b
+ add r5, r4, r5
+ mvn r8, lr
+ ldr r7, [r6, #0x4]
+ and r9, r5, lr
+ and r8, r4, r8
+ orr r10, r9, r8
+ mvn r8, r4
+ ldr r9, [r6, #0x8]
+ ldr r11, [r3, r7, lsl #0x2]
+ add r7, r12, r10
+ add r10, r11, r7
+ add r7, r6, #0xc
+ ldr r9, [r3, r9, lsl #0x2]
+ and r8, r5, r8
+ ldr r7, [r7, #0x0]
+ ldr r11, [r2, #0x4]
+ ldr r7, [r3, r7, lsl #0x2]
+ add r11, r11, r10
+ mov r10, r11, lsl #0x9
+ orr r10, r10, r11, lsr #0x17
+ add r12, r5, r10
+ ldr r10, [r2, #0x8]
+ and r11, r12, r4
+ orr r8, r11, r8
+ add r8, lr, r8
+ add r8, r9, r8
+ add r10, r10, r8
+ add r8, r2, #0xc
+ ldr r8, [r8, #0x0]
+ mov r9, r10, lsl #0xe
+ orr r9, r9, r10, lsr #0x12
+ add lr, r12, r9
+ add r2, r2, #0x10
+ add r6, r6, #0x10
+ and r10, lr, r5
+ mvn r9, r5
+ and r9, r12, r9
+ orr r9, r10, r9
+ add r4, r4, r9
+ add r4, r7, r4
+ add r7, r8, r4
+ mov r4, r7, lsl #0x14
+ orr r4, r4, r7, lsr #0xc
+ add r4, lr, r4
+ add r1, r1, #0x1
+ cmp r1, #0x4
+ blt _020D28A4
+ mov r7, #0x0
+_020D2994:
+ ldr r8, [r6, #0x0]
+ eor r1, r4, lr
+ eor r1, r12, r1
+ add r1, r5, r1
+ ldr r8, [r3, r8, lsl #0x2]
+ ldr r5, [r2, #0x0]
+ add r1, r8, r1
+ add r5, r5, r1
+ mov r1, r5, lsl #0x4
+ orr r1, r1, r5, lsr #0x1c
+ add r5, r4, r1
+ ldr r8, [r6, #0x4]
+ eor r1, r5, r4
+ eor r1, lr, r1
+ ldr r8, [r3, r8, lsl #0x2]
+ add r1, r12, r1
+ ldr r9, [r6, #0x8]
+ ldr r10, [r2, #0x4]
+ add r1, r8, r1
+ add r8, r10, r1
+ mov r1, r8, lsl #0xb
+ orr r1, r1, r8, lsr #0x15
+ add r12, r5, r1
+ eor r8, r12, r5
+ eor r8, r4, r8
+ ldr r9, [r3, r9, lsl #0x2]
+ add r8, lr, r8
+ add r9, r9, r8
+ ldr r10, [r2, #0x8]
+ add r1, r2, #0xc
+ ldr r8, [r6, #0xc]
+ add r10, r10, r9
+ ldr r9, [r3, r8, lsl #0x2]
+ mov r8, r10, lsl #0x10
+ orr r8, r8, r10, lsr #0x10
+ add lr, r12, r8
+ eor r8, lr, r12
+ eor r8, r5, r8
+ add r4, r4, r8
+ add r7, r7, #0x1
+ ldr r1, [r1, #0x0]
+ add r4, r9, r4
+ add r4, r1, r4
+ mov r1, r4, lsl #0x17
+ orr r1, r1, r4, lsr #0x9
+ add r2, r2, #0x10
+ add r6, r6, #0x10
+ add r4, lr, r1
+ cmp r7, #0x4
+ blt _020D2994
+ mov r10, #0x0
+_020D2A60:
+ mvn r1, r12
+ ldr r7, [r6, #0x0]
+ orr r1, r4, r1
+ eor r1, lr, r1
+ ldr r7, [r3, r7, lsl #0x2]
+ add r1, r5, r1
+ ldr r5, [r2, #0x0]
+ add r1, r7, r1
+ add r5, r5, r1
+ mov r1, r5, lsl #0x6
+ orr r1, r1, r5, lsr #0x1a
+ add r5, r4, r1
+ mvn r1, lr
+ ldr r7, [r6, #0x4]
+ orr r1, r5, r1
+ eor r1, r4, r1
+ ldr r8, [r6, #0x8]
+ ldr r7, [r3, r7, lsl #0x2]
+ add r1, r12, r1
+ ldr r9, [r2, #0x4]
+ add r1, r7, r1
+ add r9, r9, r1
+ mov r7, r9, lsl #0xa
+ add r1, r6, #0xc
+ orr r9, r7, r9, lsr #0x16
+ ldr r1, [r1, #0x0]
+ add r7, r2, #0xc
+ add r12, r5, r9
+ ldr r8, [r3, r8, lsl #0x2]
+ ldr r7, [r7, #0x0]
+ ldr r1, [r3, r1, lsl #0x2]
+ ldr r9, [r2, #0x8]
+ mvn r11, r4
+ orr r11, r12, r11
+ eor r11, r5, r11
+ add r11, lr, r11
+ add r8, r8, r11
+ add r9, r9, r8
+ mov r8, r9, lsl #0xf
+ orr r8, r8, r9, lsr #0x11
+ add lr, r12, r8
+ add r2, r2, #0x10
+ add r6, r6, #0x10
+ mvn r8, r5
+ orr r8, lr, r8
+ eor r8, r12, r8
+ add r4, r4, r8
+ add r1, r1, r4
+ add r4, r7, r1
+ mov r1, r4, lsl #0x15
+ orr r1, r1, r4, lsr #0xb
+ add r4, lr, r1
+ add r10, r10, #0x1
+ cmp r10, #0x4
+ blt _020D2A60
+ ldr r1, [r0, #0x0]
+ add r1, r1, r5
+ str r1, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ add r1, r1, r4
+ str r1, [r0, #0x4]
+ ldr r1, [r0, #0x8]
+ add r1, r1, lr
+ str r1, [r0, #0x8]
+ ldr r1, [r0, #0xc]
+ add r1, r1, r12
+ str r1, [r0, #0xc]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020D2B78: .word Unk_02106900 ; = 0x02106900
+_020D2B7C: .word Unk_02106840 ; = 0x02106840
+
+ arm_func_start DGT_Hash1GetDigest_R
+DGT_Hash1GetDigest_R: ; 0x020D2B80
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r1
+ ldr r1, [r6, #0x14]
+ ldr r3, [r6, #0x10]
+ mov r7, r0
+ mov r4, r1, lsl #0x3
+ ldr r1, _020D2C40 ; =0x0210683C
+ mov r0, r6
+ mov r2, #0x1
+ orr r4, r4, r3, lsr #0x1d
+ mov r5, r3, lsl #0x3
+ bl DGT_Hash1SetSource
+ ldr r0, [r6, #0x10]
+ mov r1, #0x0
+ and r3, r0, #0x3f
+ rsb r2, r3, #0x40
+ cmp r2, #0x8
+ bhs _020D2BE8
+ add r0, r6, #0x18
+ add r0, r0, r3
+ bl MI_CpuFill8
+ mov r0, r6
+ bl ProcessBlock
+ mov r3, #0x0
+ mov r2, #0x40
+_020D2BE8:
+ cmp r2, #0x8
+ bls _020D2C04
+ add r0, r6, #0x18
+ add r0, r0, r3
+ sub r2, r2, #0x8
+ mov r1, #0x0
+ bl MI_CpuFill8
+_020D2C04:
+ str r5, [r6, #0x50]
+ mov r0, r6
+ str r4, [r6, #0x54]
+ bl ProcessBlock
+ mov r0, r6
+ mov r1, r7
+ mov r2, #0x10
+ bl MI_CpuCopy8
+ mov r0, r6
+ mov r1, #0x0
+ mov r2, #0x58
+ bl MI_CpuFill8
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020D2C40: .word Unk_0210683C ; = 0x0210683C
+
+ arm_func_start DGT_Hash1SetSource
+DGT_Hash1SetSource: ; 0x020D2C44
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r8, r0
+ add r12, r8, #0x10
+ ldr r4, [r8, #0x10]
+ mov r6, r2
+ and r3, r4, #0x3f
+ ldr r0, [r12, #0x4]
+ adds r4, r4, r6
+ str r4, [r8, #0x10]
+ adc r0, r0, #0x0
+ rsb r5, r3, #0x40
+ mov r7, r1
+ str r0, [r12, #0x4]
+ cmp r5, r6
+ bls _020D2CB0
+ cmp r6, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ add r1, r8, #0x18
+ mov r0, r7
+ add r1, r1, r3
+ bl MI_CpuCopy8
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+_020D2CB0:
+ add r1, r8, #0x18
+ mov r0, r7
+ mov r2, r5
+ add r1, r1, r3
+ bl MI_CpuCopy8
+ mov r0, r8
+ bl ProcessBlock
+ sub r6, r6, r5
+ mov r4, r6, lsr #0x6
+ cmp r4, #0x0
+ add r9, r7, r5
+ ble _020D2D10
+ add r7, r8, #0x18
+ mov r5, #0x40
+_020D2CE8:
+ mov r0, r9
+ mov r1, r7
+ mov r2, r5
+ bl MI_CpuCopy8
+ mov r0, r8
+ add r9, r9, #0x40
+ bl ProcessBlock
+ sub r4, r4, #0x1
+ cmp r4, #0x0
+ bgt _020D2CE8
+_020D2D10:
+ ands r2, r6, #0x3f
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ mov r0, r9
+ add r1, r8, #0x18
+ bl MI_CpuCopy8
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+
+ arm_func_start DGT_Hash1Reset
+DGT_Hash1Reset: ; 0x020D2D38
+ ldr r2, _020D2D68 ; =0x67452301
+ ldr r1, _020D2D6C ; =0xEFCDAB89
+ str r2, [r0, #0x0]
+ ldr r2, _020D2D70 ; =0x98BADCFE
+ str r1, [r0, #0x4]
+ ldr r1, _020D2D74 ; =0x10325476
+ str r2, [r0, #0x8]
+ str r1, [r0, #0xc]
+ mov r1, #0x0
+ str r1, [r0, #0x10]
+ str r1, [r0, #0x14]
+ bx lr
+ .balign 4
+_020D2D68: .word 0x67452301
+_020D2D6C: .word 0xEFCDAB89
+_020D2D70: .word 0x98BADCFE
+_020D2D74: .word 0x10325476
diff --git a/arm9/asm/DGT_hash2.s b/arm9/asm/DGT_hash2.s
new file mode 100644
index 00000000..614d700d
--- /dev/null
+++ b/arm9/asm/DGT_hash2.s
@@ -0,0 +1,443 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start DGT_Hash2CalcHmac
+DGT_Hash2CalcHmac: ; 0x020D2D78
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0xa0
+ ldr lr, _020D2E00 ; =0x02106A04
+ add r12, sp, #0x1c
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ mov r5, r3
+ mov r4, r12
+ ldmia lr!, {r0-r3}
+ stmia r12!, {r0-r3}
+ ldmia lr, {r0-r2}
+ stmia r12, {r0-r2}
+ add lr, sp, #0x38
+ add r12, sp, #0x8
+ str lr, [sp, #0x24]
+ ldr lr, _020D2E04 ; =DGT_Hash2Reset
+ str r12, [sp, #0x28]
+ ldr ip, _020D2E08 ; =DGT_Hash2SetSource
+ str lr, [sp, #0x2c]
+ ldr lr, _020D2E0C ; =DGT_Hash2GetDigest
+ str r12, [sp, #0x30]
+ ldr r12, [sp, #0xb8]
+ str lr, [sp, #0x34]
+ str r12, [sp, #0x0]
+ mov r3, r5
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ str r4, [sp, #0x4]
+ bl DGTi_Hash2CalcHmac
+ add sp, sp, #0xa0
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D2E00: .word Unk_02106A04 ; = 0x02106A04
+_020D2E04: .word DGT_Hash2Reset
+_020D2E08: .word DGT_Hash2SetSource
+_020D2E0C: .word DGT_Hash2GetDigest
+
+ arm_func_start DGT_Hash2GetDigest
+DGT_Hash2GetDigest: ; 0x020D2E10
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r6,lr}
+ ldr r0, [sp, #0x10]
+ mov r6, r1
+ ldr r3, [r0, #0x1c]
+ add r5, r0, #0x20
+ ands r1, r3, #0x3
+ mov r0, r3, asr #0x2
+ moveq r1, #0x0
+ streq r1, [r5, r0, lsl #0x2]
+ ldr r2, [sp, #0x10]
+ mov r1, #0x80
+ add r4, r2, #0x20
+ strb r1, [r4, r3]
+ add r3, r3, #0x1
+ ands r1, r3, #0x3
+ beq _020D2E68
+ mov r2, #0x0
+_020D2E58:
+ strb r2, [r4, r3]
+ add r3, r3, #0x1
+ ands r1, r3, #0x3
+ bne _020D2E58
+_020D2E68:
+ ldr r1, [sp, #0x10]
+ add r0, r0, #0x1
+ ldr r1, [r1, #0x1c]
+ cmp r1, #0x38
+ blt _020D2EB4
+ cmp r0, #0x10
+ bge _020D2E98
+ mov r1, #0x0
+_020D2E88:
+ str r1, [r5, r0, lsl #0x2]
+ add r0, r0, #0x1
+ cmp r0, #0x10
+ blt _020D2E88
+_020D2E98:
+ ldr r1, _020D3008 ; =0x02106A00
+ ldr r0, [sp, #0x10]
+ ldr r3, [r1, #0x0]
+ mov r1, r5
+ mov r2, #0x40
+ blx r3
+ mov r0, #0x0
+_020D2EB4:
+ cmp r0, #0xe
+ bge _020D2ED0
+ mov r1, #0x0
+_020D2EC0:
+ str r1, [r5, r0, lsl #0x2]
+ add r0, r0, #0x1
+ cmp r0, #0xe
+ blt _020D2EC0
+_020D2ED0:
+ ldr r0, [sp, #0x10]
+ mov r1, r5
+ ldr r2, [r0, #0x14]
+ ldr r3, _020D3008 ; =0x02106A00
+ strb r2, [r4, #0x3f]
+ mov r0, r2, lsr #0x8
+ strb r0, [r4, #0x3e]
+ mov r0, r2, lsr #0x10
+ strb r0, [r4, #0x3d]
+ mov r0, r2, lsr #0x18
+ strb r0, [r4, #0x3c]
+ ldr r0, [sp, #0x10]
+ mov r2, #0x40
+ ldr r5, [r0, #0x18]
+ strb r5, [r4, #0x3b]
+ mov r0, r5, lsr #0x8
+ strb r0, [r4, #0x3a]
+ mov r0, r5, lsr #0x10
+ strb r0, [r4, #0x39]
+ mov r0, r5, lsr #0x18
+ strb r0, [r4, #0x38]
+ ldr r0, [sp, #0x10]
+ ldr r3, [r3, #0x0]
+ blx r3
+ ldr r0, [sp, #0x10]
+ add r1, sp, #0x10
+ ldr r3, [r0, #0x0]
+ mov r0, #0x0
+ mov r2, r3, lsr #0x18
+ strb r2, [r6, #0x0]
+ mov r2, r3, lsr #0x10
+ strb r2, [r6, #0x1]
+ mov r2, r3, lsr #0x8
+ strb r2, [r6, #0x2]
+ strb r3, [r6, #0x3]
+ ldr r3, [sp, #0x10]
+ mov r2, #0x4
+ ldr r4, [r3, #0x4]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0x4]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0x5]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0x6]
+ strb r4, [r6, #0x7]
+ ldr r3, [sp, #0x10]
+ ldr r4, [r3, #0x8]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0x8]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0x9]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0xa]
+ strb r4, [r6, #0xb]
+ ldr r3, [sp, #0x10]
+ ldr r4, [r3, #0xc]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0xc]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0xd]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0xe]
+ strb r4, [r6, #0xf]
+ ldr r3, [sp, #0x10]
+ ldr r4, [r3, #0x10]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0x10]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0x11]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0x12]
+ strb r4, [r6, #0x13]
+ ldr r3, [sp, #0x10]
+ str r0, [r3, #0x1c]
+ bl MIi_CpuClear32
+ ldmia sp!, {r4-r6,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020D3008: .word Unk_02106A00 ; = 0x02106A00
+
+ arm_func_start DGT_Hash2SetSource
+DGT_Hash2SetSource: ; 0x020D300C
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ movs r6, r2
+ mov r7, r1
+ add r5, r8, #0x20
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ ldr r0, [r8, #0x14]
+ add r1, r0, r6, lsl #0x3
+ cmp r1, r0
+ ldrcc r0, [r8, #0x18]
+ addcc r0, r0, #0x1
+ strcc r0, [r8, #0x18]
+ ldr r0, [r8, #0x18]
+ add r0, r0, r6, lsr #0x1d
+ str r0, [r8, #0x18]
+ str r1, [r8, #0x14]
+ ldr r1, [r8, #0x1c]
+ cmp r1, #0x0
+ beq _020D30CC
+ add r0, r1, r6
+ cmp r0, #0x40
+ blo _020D30A8
+ rsb r4, r1, #0x40
+ mov r0, r7
+ mov r2, r4
+ add r1, r5, r1
+ bl MI_CpuCopy8
+ ldr r1, _020D3164 ; =0x02106A00
+ mov r0, r8
+ ldr r3, [r1, #0x0]
+ mov r1, r5
+ mov r2, #0x40
+ sub r6, r6, r4
+ add r7, r7, r4
+ blx r3
+ mov r0, #0x0
+ str r0, [r8, #0x1c]
+ b _020D30CC
+_020D30A8:
+ mov r0, r7
+ mov r2, r6
+ add r1, r5, r1
+ bl MI_CpuCopy8
+ ldr r0, [r8, #0x1c]
+ add r0, r0, r6
+ str r0, [r8, #0x1c]
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020D30CC:
+ cmp r6, #0x40
+ blo _020D313C
+ bic r4, r6, #0x3f
+ sub r6, r6, r4
+ ands r0, r7, #0x3
+ bne _020D3104
+ ldr r1, _020D3164 ; =0x02106A00
+ mov r0, r8
+ ldr r3, [r1, #0x0]
+ mov r1, r7
+ mov r2, r4
+ blx r3
+ add r7, r7, r4
+ b _020D313C
+_020D3104:
+ mov r0, r7
+ mov r1, r5
+ mov r2, #0x40
+ bl MI_CpuCopy8
+ ldr r1, _020D3164 ; =0x02106A00
+ mov r0, r8
+ ldr r3, [r1, #0x0]
+ mov r1, r5
+ mov r2, #0x40
+ add r7, r7, #0x40
+ blx r3
+ sub r4, r4, #0x40
+ cmp r4, #0x0
+ bgt _020D3104
+_020D313C:
+ str r6, [r8, #0x1c]
+ cmp r6, #0x0
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r0, r7
+ mov r1, r5
+ mov r2, r6
+ bl MI_CpuCopy8
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D3164: .word Unk_02106A00 ; = 0x02106A00
+
+ arm_func_start DGT_Hash2Reset
+DGT_Hash2Reset: ; 0x020D3168
+ ldr r1, _020D31A4 ; =0x67452301
+ ldr r2, _020D31A8 ; =0xEFCDAB89
+ str r1, [r0, #0x0]
+ ldr r1, _020D31AC ; =0x98BADCFE
+ str r2, [r0, #0x4]
+ ldr r2, _020D31B0 ; =0x10325476
+ str r1, [r0, #0x8]
+ ldr r1, _020D31B4 ; =0xC3D2E1F0
+ str r2, [r0, #0xc]
+ str r1, [r0, #0x10]
+ mov r1, #0x0
+ str r1, [r0, #0x14]
+ str r1, [r0, #0x18]
+ str r1, [r0, #0x1c]
+ bx lr
+ .balign 4
+_020D31A4: .word 0x67452301
+_020D31A8: .word 0xEFCDAB89
+_020D31AC: .word 0x98BADCFE
+_020D31B0: .word 0x10325476
+_020D31B4: .word 0xC3D2E1F0
+
+ arm_func_start DGTi_Hash2CalcHmac
+DGTi_Hash2CalcHmac: ; 0x020D31B8
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0xc4
+ ldr r5, [sp, #0xe0]
+ ldr r4, [sp, #0xe4]
+ movs r9, r0
+ mov r8, r1
+ mov r7, r2
+ mov r6, r3
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r8, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r7, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r6, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r5, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r4, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ ldr r0, [r4, #0x4]
+ cmp r5, r0
+ ble _020D3278
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0x10]
+ blx r1
+ ldr r0, [r4, #0x8]
+ ldr r3, [r4, #0x14]
+ mov r1, r6
+ mov r2, r5
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x18]
+ add r1, sp, #0x0
+ blx r2
+ ldr r5, [r4, #0x0]
+ add r6, sp, #0x0
+_020D3278:
+ cmp r5, #0x0
+ mov r0, #0x0
+ ble _020D32A0
+ add r2, sp, #0x40
+_020D3288:
+ ldrb r1, [r6, r0]
+ add r0, r0, #0x1
+ cmp r0, r5
+ eor r1, r1, #0x36
+ strb r1, [r2], #0x1
+ blt _020D3288
+_020D32A0:
+ ldr r1, [r4, #0x4]
+ cmp r0, r1
+ bge _020D32CC
+ add r1, sp, #0x40
+ add r3, r1, r0
+ mov r2, #0x36
+_020D32B8:
+ strb r2, [r3], #0x1
+ ldr r1, [r4, #0x4]
+ add r0, r0, #0x1
+ cmp r0, r1
+ blt _020D32B8
+_020D32CC:
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0x10]
+ blx r1
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x4]
+ ldr r3, [r4, #0x14]
+ add r1, sp, #0x40
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r3, [r4, #0x14]
+ mov r1, r8
+ mov r2, r7
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x18]
+ blx r2
+ cmp r5, #0x0
+ mov r2, #0x0
+ ble _020D3338
+ add r1, sp, #0x80
+_020D3320:
+ ldrb r0, [r6, r2]
+ add r2, r2, #0x1
+ cmp r2, r5
+ eor r0, r0, #0x5c
+ strb r0, [r1], #0x1
+ blt _020D3320
+_020D3338:
+ ldr r0, [r4, #0x4]
+ cmp r2, r0
+ bge _020D3364
+ add r0, sp, #0x80
+ add r3, r0, r2
+ mov r1, #0x5c
+_020D3350:
+ strb r1, [r3], #0x1
+ ldr r0, [r4, #0x4]
+ add r2, r2, #0x1
+ cmp r2, r0
+ blt _020D3350
+_020D3364:
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0x10]
+ blx r1
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x4]
+ ldr r3, [r4, #0x14]
+ add r1, sp, #0x80
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x0]
+ ldr r3, [r4, #0x14]
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x18]
+ mov r1, r9
+ blx r2
+ add sp, sp, #0xc4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+ .balign 4
diff --git a/arm9/asm/DGT_sha1s_arm4cw.s b/arm9/asm/DGT_sha1s_arm4cw.s
new file mode 100644
index 00000000..1f110a72
--- /dev/null
+++ b/arm9/asm/DGT_sha1s_arm4cw.s
@@ -0,0 +1,179 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+_020D33B4: .word 0x00FF00FF
+_020D33B8: .word 0x5A827999
+_020D33BC: .word 0x6ED9EBA1
+_020D33C0: .word 0x8F1BBCDC
+_020D33C4: .word 0xCA62C1D6
+
+ arm_func_start DGTi_hash2_arm4_small
+DGTi_hash2_arm4_small: ; 0x020D33C8
+ stmdb sp!, {r4-r12,lr}
+ ldmia r0, {r3,r9-r12}
+ sub sp, sp, #0x84
+ str r2, [sp, #0x80]
+_020D33D8:
+ ldr r8, _020D33B8 ; =0x5A827999
+ ldr r7, _020D33B4 ; =0x00FF00FF
+ mov r6, sp
+ mov r5, #0x0
+_020D33E8:
+ ldr r4, [r1], #0x4
+ add r2, r8, r12
+ add r2, r2, r3, ror #0x1B
+ and lr, r4, r7
+ and r4, r7, r4, ror #0x18
+ orr r4, r4, lr, ror #0x8
+ str r4, [r6, #0x40]
+ str r4, [r6], #0x4
+ add r2, r2, r4
+ eor r4, r10, r11
+ and r4, r4, r9
+ eor r4, r4, r11
+ add r2, r2, r4
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r5, r5, #0x4
+ cmp r5, #0x40
+ blt _020D33E8
+ mov r7, #0x0
+ mov r6, sp
+_020D3448:
+ ldr r2, [r6, #0x0]
+ ldr r5, [r6, #0x8]
+ ldr r4, [r6, #0x20]
+ ldr lr, [r6, #0x34]
+ eor r2, r2, r5
+ eor r4, r4, lr
+ eor r2, r2, r4
+ mov r2, r2, ror #0x1F
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #0x1B
+ eor r4, r10, r11
+ and r4, r4, r9
+ eor r4, r4, r11
+ add r2, r2, r4
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x4
+ cmp r7, #0x10
+ blt _020D3448
+ ldr r8, _020D33BC ; =0x6ED9EBA1
+ mov r7, #0x0
+_020D34B8:
+ ldr r2, [r6, #0x0]
+ ldr r4, [r6, #0x8]
+ ldr lr, [r6, #0x20]
+ ldr r5, [r6, #0x34]
+ eor r2, r2, r4
+ eor lr, lr, r5
+ eor r2, r2, lr
+ mov r2, r2, ror #0x1F
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #0x1B
+ eor lr, r9, r10
+ eor lr, lr, r11
+ add r2, r2, lr
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x1
+ cmp r7, #0xc
+ moveq r6, sp
+ cmp r7, #0x14
+ blt _020D34B8
+ ldr r8, _020D33C0 ; =0x8F1BBCDC
+ mov r7, #0x0
+_020D352C:
+ ldr r2, [r6, #0x0]
+ ldr lr, [r6, #0x8]
+ ldr r5, [r6, #0x20]
+ ldr r4, [r6, #0x34]
+ eor r2, r2, lr
+ eor r5, r5, r4
+ eor r2, r2, r5
+ mov r2, r2, ror #0x1F
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #0x1B
+ orr r5, r9, r10
+ and r5, r5, r11
+ and r4, r9, r10
+ orr r5, r5, r4
+ add r2, r2, r5
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x1
+ cmp r7, #0x8
+ moveq r6, sp
+ cmp r7, #0x14
+ blt _020D352C
+ ldr r8, _020D33C4 ; =0xCA62C1D6
+ mov r7, #0x0
+_020D35A8:
+ ldr r2, [r6, #0x0]
+ ldr r5, [r6, #0x8]
+ ldr r4, [r6, #0x20]
+ ldr lr, [r6, #0x34]
+ eor r2, r2, r5
+ eor r4, r4, lr
+ eor r2, r2, r4
+ mov r2, r2, ror #0x1F
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #0x1B
+ eor r4, r9, r10
+ eor r4, r4, r11
+ add r2, r2, r4
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x1
+ cmp r7, #0x4
+ moveq r6, sp
+ cmp r7, #0x14
+ blt _020D35A8
+ ldmia r0, {r2,r4,r6-r7,lr}
+ add r3, r3, r2
+ add r9, r9, r4
+ add r10, r10, r6
+ add r11, r11, r7
+ add r12, r12, lr
+ stmia r0, {r3,r9-r12}
+ ldr lr, [sp, #0x80]
+ subs lr, lr, #0x40
+ str lr, [sp, #0x80]
+ bgt _020D33D8
+ add sp, sp, #0x84
+ ldmia sp!, {r4-r12,pc}
diff --git a/arm9/asm/OS_emulator.s b/arm9/asm/OS_emulator.s
deleted file mode 100644
index 69207a5e..00000000
--- a/arm9/asm/OS_emulator.s
+++ /dev/null
@@ -1,19 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start OS_GetConsoleType
-OS_GetConsoleType: ; 0x020CBBC0
- ldr r0, _020CBBD0 ; =0x82000001
- ldr r1, _020CBBD4 ; =0x02106828
- str r0, [r1, #0x0]
- bx lr
- .balign 4
-_020CBBD0: .word 0x82000001
-_020CBBD4: .word 0x02106828
-
- arm_func_start OS_IsRunOnEmulator
-OS_IsRunOnEmulator:
- mov r0, #0x0
- bx lr
diff --git a/arm9/asm/OS_interrupt.s b/arm9/asm/OS_interrupt.s
deleted file mode 100644
index b2ba8e4e..00000000
--- a/arm9/asm/OS_interrupt.s
+++ /dev/null
@@ -1,239 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start OS_SetIrqStackChecker
-OS_SetIrqStackChecker: ; 0x020C9DAC
- ldr ip, _020C9DD0 ; =0x027E0000
- ldr r3, _020C9DD4 ; =0xFDDB597D
- add r0, r12, #0x3000
- ldr r2, _020C9DD8 ; =0x7BF9DD5B
- ldr r1, _020C9DDC ; =0x00000400
- str r3, [r0, #0xf7c]
- add r0, r12, #0x3f80
- str r2, [r0, -r1]
- bx lr
- .balign 4
-_020C9DD0: .word 0x027E0000
-_020C9DD4: .word 0xFDDB597D
-_020C9DD8: .word 0x7BF9DD5B
-_020C9DDC: .word 0x00000400
-
- arm_func_start OS_ResetRequestIrqMask
-OS_ResetRequestIrqMask: ; 0x020C9DE0
- ldr ip, _020C9E0C ; =0x04000208
- mov r1, #0x0
- ldrh r3, [r12, #0x0]
- ldr r2, _020C9E10 ; =0x04000214
- strh r1, [r12, #0x0]
- ldr r1, [r2, #0x0]
- str r0, [r2, #0x0]
- ldrh r0, [r12, #0x0]
- mov r0, r1
- strh r3, [r12, #0x0]
- bx lr
- .balign 4
-_020C9E0C: .word 0x04000208
-_020C9E10: .word 0x04000214
-
- arm_func_start OS_DisableIrqMask
-OS_DisableIrqMask: ; 0x020C9E14
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr lr, _020C9E54 ; =0x04000208
- mov r3, #0x0
- ldrh r12, [lr, #0x0]
- ldr r2, _020C9E58 ; =0x04000210
- mvn r1, r0
- strh r3, [lr, #0x0]
- ldr r0, [r2, #0x0]
- and r1, r0, r1
- str r1, [r2, #0x0]
- ldrh r1, [lr, #0x0]
- strh r12, [lr, #0x0]
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020C9E54: .word 0x04000208
-_020C9E58: .word 0x04000210
-
- arm_func_start OS_EnableIrqMask
-OS_EnableIrqMask: ; 0x020C9E5C
- ldr ip, _020C9E8C ; =0x04000208
- mov r1, #0x0
- ldrh r3, [r12, #0x0]
- ldr r2, _020C9E90 ; =0x04000210
- strh r1, [r12, #0x0]
- ldr r1, [r2, #0x0]
- orr r0, r1, r0
- str r0, [r2, #0x0]
- ldrh r0, [r12, #0x0]
- mov r0, r1
- strh r3, [r12, #0x0]
- bx lr
- .balign 4
-_020C9E8C: .word 0x04000208
-_020C9E90: .word 0x04000210
-
- arm_func_start OS_SetIrqMask
-OS_SetIrqMask: ; 0x020C9E94
- ldr ip, _020C9EC0 ; =0x04000208
- mov r1, #0x0
- ldrh r3, [r12, #0x0]
- ldr r2, _020C9EC4 ; =0x04000210
- strh r1, [r12, #0x0]
- ldr r1, [r2, #0x0]
- str r0, [r2, #0x0]
- ldrh r0, [r12, #0x0]
- mov r0, r1
- strh r3, [r12, #0x0]
- bx lr
- .balign 4
-_020C9EC0: .word 0x04000208
-_020C9EC4: .word 0x04000210
-
- arm_func_start OSi_EnterTimerCallback
-OSi_EnterTimerCallback: ; 0x020C9EC8
- stmdb sp!, {r4,lr}
- mov r3, #0xc
- mul r4, r0, r3
- ldr ip, _020C9F08 ; =0x021D344C
- add r0, r0, #0x3
- mov r3, #0x1
- mov r0, r3, lsl r0
- ldr r3, _020C9F0C ; =0x021D3454
- str r1, [r12, r4]
- str r2, [r3, r4]
- bl OS_EnableIrqMask
- ldr r0, _020C9F10 ; =0x021D3450
- mov r1, #0x1
- str r1, [r0, r4]
- ldmia sp!, {r4,lr}
- bx lr
- .balign 4
-_020C9F08: .word OSi_IrqCallbackInfo+0x30
-_020C9F0C: .word OSi_IrqCallbackInfo+0x38
-_020C9F10: .word OSi_IrqCallbackInfo+0x34
-
- arm_func_start OSi_EnterDmaCallback
-OSi_EnterDmaCallback: ; 0x020C9F14
- stmdb sp!, {r4-r6,lr}
- mov r3, #0xc
- mul r6, r0, r3
- ldr ip, _020C9F54 ; =OSi_IrqCallbackInfo
- add r4, r0, #0x8
- mov r5, #0x1
- mov r0, r5, lsl r4
- ldr r3, _020C9F58 ; =0x021D3424
- str r1, [r12, r6]
- str r2, [r3, r6]
- bl OS_EnableIrqMask
- and r1, r0, r5, lsl r4
- ldr r0, _020C9F5C ; =0x021D3420
- str r1, [r0, r6]
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020C9F54: .word OSi_IrqCallbackInfo
-_020C9F58: .word OSi_IrqCallbackInfo + 8
-_020C9F5C: .word OSi_IrqCallbackInfo + 4
-
- arm_func_start OS_GetIrqFunction
-OS_GetIrqFunction: ; 0x020C9F60
- ldr r2, _020C9FE4 ; =0x027E0000
- mov r3, #0x0
-_020C9F68:
- ands r1, r0, #0x1
- beq _020C9FC8
- cmp r3, #0x8
- blt _020C9F98
- cmp r3, #0xb
- bgt _020C9F98
- sub r1, r3, #0x8
- mov r0, #0xc
- mul r2, r1, r0
- ldr r0, _020C9FE8 ; =OSi_IrqCallbackInfo
- ldr r0, [r0, r2]
- bx lr
-_020C9F98:
- cmp r3, #0x3
- blt _020C9FC0
- cmp r3, #0x6
- bgt _020C9FC0
- add r1, r3, #0x1
- mov r0, #0xc
- mul r2, r1, r0
- ldr r0, _020C9FE8 ; =OSi_IrqCallbackInfo
- ldr r0, [r0, r2]
- bx lr
-_020C9FC0:
- ldr r0, [r2, #0x0]
- bx lr
-_020C9FC8:
- add r3, r3, #0x1
- cmp r3, #0x16
- mov r0, r0, lsr #0x1
- add r2, r2, #0x4
- blt _020C9F68
- mov r0, #0x0
- bx lr
- .balign 4
-_020C9FE4: .word 0x027E0000
-_020C9FE8: .word OSi_IrqCallbackInfo
-
- arm_func_start OS_SetIrqFunction
-OS_SetIrqFunction: ; 0x020C9FEC
- stmdb sp!, {r4-r8,lr}
- mov r8, #0x0
- ldr lr, _020CA074 ; =0x027E0000
- ldr r5, _020CA078 ; =OSi_IrqCallbackInfo
- mov r6, r8
- mov r12, r8
- mov r3, #0x1
- mov r2, #0xc
-_020CA00C:
- ands r4, r0, #0x1
- beq _020CA05C
- mov r7, r6
- cmp r8, #0x8
- blt _020CA030
- cmp r8, #0xb
- suble r4, r8, #0x8
- mlale r7, r4, r2, r5
- ble _020CA04C
-_020CA030:
- cmp r8, #0x3
- blt _020CA048
- cmp r8, #0x6
- addle r4, r8, #0x1
- mlale r7, r4, r2, r5
- ble _020CA04C
-_020CA048:
- str r1, [lr, r8, lsl #0x2]
-_020CA04C:
- cmp r7, #0x0
- strne r1, [r7, #0x0]
- strne r12, [r7, #0x8]
- strne r3, [r7, #0x4]
-_020CA05C:
- add r8, r8, #0x1
- cmp r8, #0x16
- mov r0, r0, lsr #0x1
- blt _020CA00C
- ldmia sp!, {r4-r8,lr}
- bx lr
- .balign 4
-_020CA074: .word 0x027E0000
-_020CA078: .word OSi_IrqCallbackInfo
-
- arm_func_start OS_InitIrqTable
-OS_InitIrqTable: ; 0x020CA07C
- ldr r0, _020CA090 ; =0x027E0060
- mov r1, #0x0
- str r1, [r0, #0x4]
- str r1, [r0, #0x0]
- bx lr
- .balign 4
-_020CA090: .word 0x027E0060
diff --git a/arm9/asm/OS_interrupt_asm.s b/arm9/asm/OS_interrupt_asm.s
new file mode 100644
index 00000000..7fdc1ccc
--- /dev/null
+++ b/arm9/asm/OS_interrupt_asm.s
@@ -0,0 +1,95 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start OS_SetIrqStackChecker
+OS_SetIrqStackChecker: ; 0x020C9DAC
+ ldr ip, _020C9DD0 ; =0x027E0000
+ ldr r3, _020C9DD4 ; =0xFDDB597D
+ add r0, r12, #0x3000
+ ldr r2, _020C9DD8 ; =0x7BF9DD5B
+ ldr r1, _020C9DDC ; =0x00000400
+ str r3, [r0, #0xf7c]
+ add r0, r12, #0x3f80
+ str r2, [r0, -r1]
+ bx lr
+ .balign 4
+_020C9DD0: .word 0x027E0000
+_020C9DD4: .word 0xFDDB597D
+_020C9DD8: .word 0x7BF9DD5B
+_020C9DDC: .word 0x00000400
+
+ arm_func_start OS_ResetRequestIrqMask
+OS_ResetRequestIrqMask: ; 0x020C9DE0
+ ldr ip, _020C9E0C ; =0x04000208
+ mov r1, #0x0
+ ldrh r3, [r12, #0x0]
+ ldr r2, _020C9E10 ; =0x04000214
+ strh r1, [r12, #0x0]
+ ldr r1, [r2, #0x0]
+ str r0, [r2, #0x0]
+ ldrh r0, [r12, #0x0]
+ mov r0, r1
+ strh r3, [r12, #0x0]
+ bx lr
+ .balign 4
+_020C9E0C: .word 0x04000208
+_020C9E10: .word 0x04000214
+
+ arm_func_start OS_DisableIrqMask
+OS_DisableIrqMask: ; 0x020C9E14
+ stmdb sp!, {lr}
+ sub sp, sp, #0x4
+ ldr lr, _020C9E54 ; =0x04000208
+ mov r3, #0x0
+ ldrh r12, [lr, #0x0]
+ ldr r2, _020C9E58 ; =0x04000210
+ mvn r1, r0
+ strh r3, [lr, #0x0]
+ ldr r0, [r2, #0x0]
+ and r1, r0, r1
+ str r1, [r2, #0x0]
+ ldrh r1, [lr, #0x0]
+ strh r12, [lr, #0x0]
+ add sp, sp, #0x4
+ ldmia sp!, {lr}
+ bx lr
+ .balign 4
+_020C9E54: .word 0x04000208
+_020C9E58: .word 0x04000210
+
+ arm_func_start OS_EnableIrqMask
+OS_EnableIrqMask: ; 0x020C9E5C
+ ldr ip, _020C9E8C ; =0x04000208
+ mov r1, #0x0
+ ldrh r3, [r12, #0x0]
+ ldr r2, _020C9E90 ; =0x04000210
+ strh r1, [r12, #0x0]
+ ldr r1, [r2, #0x0]
+ orr r0, r1, r0
+ str r0, [r2, #0x0]
+ ldrh r0, [r12, #0x0]
+ mov r0, r1
+ strh r3, [r12, #0x0]
+ bx lr
+ .balign 4
+_020C9E8C: .word 0x04000208
+_020C9E90: .word 0x04000210
+
+ arm_func_start OS_SetIrqMask
+OS_SetIrqMask: ; 0x020C9E94
+ ldr ip, _020C9EC0 ; =0x04000208
+ mov r1, #0x0
+ ldrh r3, [r12, #0x0]
+ ldr r2, _020C9EC4 ; =0x04000210
+ strh r1, [r12, #0x0]
+ ldr r1, [r2, #0x0]
+ str r0, [r2, #0x0]
+ ldrh r0, [r12, #0x0]
+ mov r0, r1
+ strh r3, [r12, #0x0]
+ bx lr
+ .balign 4
+_020C9EC0: .word 0x04000208
+_020C9EC4: .word 0x04000210
diff --git a/arm9/asm/OS_irqTable.s b/arm9/asm/OS_irqTable.s
index 9a484063..593946ba 100644
--- a/arm9/asm/OS_irqTable.s
+++ b/arm9/asm/OS_irqTable.s
@@ -28,6 +28,9 @@ OS_IRQTable: ; 027E0000 ;10b6a0
.word OS_IrqDummy
.word OS_IrqDummy
+ .section .bss
+ .space 0x20
+
.section .text
arm_func_start OSi_IrqTimer3
diff --git a/arm9/asm/OS_printf.s b/arm9/asm/OS_printf.s
deleted file mode 100644
index f5175955..00000000
--- a/arm9/asm/OS_printf.s
+++ /dev/null
@@ -1,757 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start OS_VSNPrintf
-OS_VSNPrintf: ; 0x020CA49C
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x64
- mov r9, r2
- str r1, [sp, #0x54]
- str r0, [sp, #0x5c]
- str r0, [sp, #0x58]
- ldrsb r0, [r9, #0x0]
- str r1, [sp, #0x0]
- mov r11, r3
- cmp r0, #0x0
- beq _020CAD18
- mov r0, #0xa
- str r0, [sp, #0xc]
- mov r0, #0x0
- str r0, [sp, #0x4]
- mov r0, #0x20
- str r0, [sp, #0x1c]
- mov r0, #0x30
- str r0, [sp, #0x20]
- mvn r0, #0x0
- str r0, [sp, #0x8]
- mov r0, #0x57
- str r0, [sp, #0x10]
- mov r0, #0x8
- str r0, [sp, #0x14]
- mov r0, #0x37
- str r0, [sp, #0x18]
- mov r0, #0x10
- str r0, [sp, #0x24]
- mov r0, #0x1
- str r0, [sp, #0x28]
- mov r0, #0x2b
- str r0, [sp, #0x34]
- mov r0, #0x2d
- str r0, [sp, #0x30]
- mov r0, #0x2
- str r0, [sp, #0x2c]
-_020CA530:
- ldrsb r1, [r9, #0x0]
- and r0, r1, #0xff
- eor r0, r0, #0x20
- sub r0, r0, #0xa1
- cmp r0, #0x3c
- bhs _020CA56C
- add r0, sp, #0x54
- bl string_put_char
- ldrsb r1, [r9, #0x1]!
- cmp r1, #0x0
- beq _020CAD0C
- add r0, sp, #0x54
- add r9, r9, #0x1
- bl string_put_char
- b _020CAD0C
-_020CA56C:
- cmp r1, #0x25
- beq _020CA584
- add r0, sp, #0x54
- add r9, r9, #0x1
- bl string_put_char
- b _020CAD0C
-_020CA584:
- ldr r6, [sp, #0x4]
- ldr r5, [sp, #0x8]
- ldr r2, [sp, #0xc]
- ldr r0, [sp, #0x10]
- mov r10, r6
- mov r3, r9
-_020CA59C:
- ldrsb r4, [r9, #0x1]!
- cmp r4, #0x20
- bgt _020CA5B4
- cmp r4, #0x20
- beq _020CA5F4
- b _020CA60C
-_020CA5B4:
- cmp r4, #0x30
- bgt _020CA60C
- cmp r4, #0x2b
- blt _020CA60C
- cmp r4, #0x2b
- beq _020CA5E0
- cmp r4, #0x2d
- beq _020CA5FC
- cmp r4, #0x30
- beq _020CA604
- b _020CA60C
-_020CA5E0:
- ldrsb r1, [r9, #-0x1]
- cmp r1, #0x20
- bne _020CA60C
- orr r6, r6, #0x2
- b _020CA59C
-_020CA5F4:
- orr r6, r6, #0x1
- b _020CA59C
-_020CA5FC:
- orr r6, r6, #0x8
- b _020CA59C
-_020CA604:
- orr r6, r6, #0x10
- b _020CA59C
-_020CA60C:
- cmp r4, #0x2a
- bne _020CA640
- add r11, r11, #0x4
- ldr r10, [r11, #-0x4]
- add r9, r9, #0x1
- cmp r10, #0x0
- rsblt r10, r10, #0x0
- orrlt r6, r6, #0x8
- b _020CA654
-_020CA630:
- ldrsb r4, [r9], #0x1
- mov r1, #0xa
- mla r1, r10, r1, r4
- sub r10, r1, #0x30
-_020CA640:
- ldrsb r1, [r9, #0x0]
- cmp r1, #0x30
- blt _020CA654
- cmp r1, #0x39
- ble _020CA630
-_020CA654:
- ldrsb r1, [r9, #0x0]
- cmp r1, #0x2e
- bne _020CA6AC
- ldrsb r1, [r9, #0x1]!
- ldr r5, [sp, #0x4]
- cmp r1, #0x2a
- bne _020CA698
- add r11, r11, #0x4
- ldr r5, [r11, #-0x4]
- add r9, r9, #0x1
- cmp r5, #0x0
- ldrlt r5, [sp, #0x8]
- b _020CA6AC
-_020CA688:
- ldrsb r4, [r9], #0x1
- mov r1, #0xa
- mla r1, r5, r1, r4
- sub r5, r1, #0x30
-_020CA698:
- ldrsb r1, [r9, #0x0]
- cmp r1, #0x30
- blt _020CA6AC
- cmp r1, #0x39
- ble _020CA688
-_020CA6AC:
- ldrsb r1, [r9, #0x0]
- cmp r1, #0x68
- beq _020CA6C4
- cmp r1, #0x6c
- beq _020CA6DC
- b _020CA6F0
-_020CA6C4:
- ldrsb r1, [r9, #0x1]!
- cmp r1, #0x68
- orrne r6, r6, #0x40
- addeq r9, r9, #0x1
- orreq r6, r6, #0x100
- b _020CA6F0
-_020CA6DC:
- ldrsb r1, [r9, #0x1]!
- cmp r1, #0x6c
- orrne r6, r6, #0x20
- addeq r9, r9, #0x1
- orreq r6, r6, #0x80
-_020CA6F0:
- ldrsb r1, [r9, #0x0]
- cmp r1, #0x69
- bgt _020CA740
- cmp r1, #0x63
- blt _020CA720
- cmp r1, #0x63
- beq _020CA7B4
- cmp r1, #0x64
- beq _020CA96C
- cmp r1, #0x69
- beq _020CA96C
- b _020CA950
-_020CA720:
- cmp r1, #0x25
- bgt _020CA734
- cmp r1, #0x25
- beq _020CA934
- b _020CA950
-_020CA734:
- cmp r1, #0x58
- beq _020CA7A0
- b _020CA950
-_020CA740:
- cmp r1, #0x6e
- bgt _020CA754
- cmp r1, #0x6e
- beq _020CA8DC
- b _020CA950
-_020CA754:
- sub r1, r1, #0x6f
- cmp r1, #0x9
- addls pc, pc, r1, lsl #0x2
- b _020CA950
-_020CA764:
- b _020CA78C
- b _020CA7A8
- b _020CA950
- b _020CA950
- b _020CA828
- b _020CA950
- b _020CA798
- b _020CA950
- b _020CA950
- b _020CA964
-_020CA78C:
- ldr r2, [sp, #0x14]
- orr r6, r6, #0x1000
- b _020CA96C
-_020CA798:
- orr r6, r6, #0x1000
- b _020CA96C
-_020CA7A0:
- ldr r0, [sp, #0x18]
- b _020CA964
-_020CA7A8:
- orr r6, r6, #0x4
- ldr r5, [sp, #0x14]
- b _020CA964
-_020CA7B4:
- cmp r5, #0x0
- bge _020CA950
- ands r0, r6, #0x8
- add r11, r11, #0x4
- ldr r4, [r11, #-0x4]
- beq _020CA7F0
- mov r0, r4, lsl #0x18
- mov r1, r0, asr #0x18
- add r0, sp, #0x54
- bl string_put_char
- ldr r1, [sp, #0x1c]
- sub r2, r10, #0x1
- add r0, sp, #0x54
- bl string_fill_char
- b _020CA820
-_020CA7F0:
- ands r0, r6, #0x10
- ldrne r0, [sp, #0x20]
- sub r2, r10, #0x1
- ldreq r0, [sp, #0x1c]
- mov r0, r0, lsl #0x18
- mov r1, r0, asr #0x18
- add r0, sp, #0x54
- bl string_fill_char
- mov r0, r4, lsl #0x18
- mov r1, r0, asr #0x18
- add r0, sp, #0x54
- bl string_put_char
-_020CA820:
- add r9, r9, #0x1
- b _020CAD0C
-_020CA828:
- add fp, fp, #0x4
- cmp r5, #0x0
- ldr r7, [sp, #0x4]
- ldr r4, [fp, #-0x4]
- bge _020CA860
- ldrsb r0, [r4]
- cmp r0, #0x0
- beq _020CA874
-_020CA848:
- add r7, r7, #0x1
- ldrsb r0, [r4, r7]
- cmp r0, #0x0
- bne _020CA848
- b _020CA874
-_020CA85C:
- add r7, r7, #0x1
-_020CA860:
- cmp r7, r5
- bge _020CA874
- ldrsb r0, [r4, r7]
- cmp r0, #0x0
- bne _020CA85C
-_020CA874:
- ands r0, r6, #0x8
- sub sl, sl, r7
- beq _020CA8A4
- mov r1, r4
- mov r2, r7
- add r0, sp, #0x54
- bl string_put_string
- ldr r1, [sp, #0x1C]
- mov r2, sl
- add r0, sp, #0x54
- bl string_fill_char
- b _020CA8D4
-_020CA8A4:
- ands r0, r6, #0x10
- ldrne r0, [sp, #0x20]
- mov r2, sl
- ldreq r0, [sp, #0x1C]
- mov r0, r0, lsl #0x18
- mov r1, r0, asr #0x18
- add r0, sp, #0x54
- bl string_fill_char
- mov r1, r4
- mov r2, r7
- add r0, sp, #0x54
- bl string_put_string
-_020CA8D4:
- add r9, r9, #0x1
- b _020CAD0C
-_020CA8DC:
- ands r0, r6, #0x100
- ldr r1, [sp, #0x58]
- ldr r0, [sp, #0x5c]
- sub r2, r1, r0
- bne _020CA92C
- ands r0, r6, #0x40
- addne r11, r11, #0x4
- ldrne r0, [r11, #-0x4]
- strneh r2, [r0, #0x0]
- bne _020CA92C
- ands r0, r6, #0x80
- addeq r11, r11, #0x4
- ldreq r0, [r11, #-0x4]
- streq r2, [r0, #0x0]
- beq _020CA92C
- add r11, r11, #0x4
- ldr r0, [r11, #-0x4]
- mov r1, r2, asr #0x1f
- str r2, [r0, #0x0]
- str r1, [r0, #0x4]
-_020CA92C:
- add r9, r9, #0x1
- b _020CAD0C
-_020CA934:
- add r0, r3, #0x1
- cmp r0, r9
- bne _020CA950
- add r0, sp, #0x54
- add r9, r9, #0x1
- bl string_put_char
- b _020CAD0C
-_020CA950:
- add r0, sp, #0x54
- mov r1, r3
- sub r2, r9, r3
- bl string_put_string
- b _020CAD0C
-_020CA964:
- ldr r2, [sp, #0x24]
- orr r6, r6, #0x1000
-_020CA96C:
- ands r1, r6, #0x8
- bicne r6, r6, #0x10
- cmp r5, #0x0
- bicge r6, r6, #0x10
- ldrlt r5, [sp, #0x28]
- ldr r7, [sp, #0x4]
- ands r1, r6, #0x1000
- beq _020CAA20
- ands r1, r6, #0x100
- addne r11, r11, #0x4
- ldrneb r4, [r11, #-0x4]
- movne r1, #0x0
- bne _020CA9D0
- ands r1, r6, #0x40
- addne r11, r11, #0x4
- ldrneh r4, [r11, #-0x4]
- movne r1, #0x0
- bne _020CA9D0
- ands r1, r6, #0x80
- addne r11, r11, #0x8
- ldrne r1, [r11, #-0x4]
- ldrne r4, [r11, #-0x8]
- addeq r11, r11, #0x4
- ldreq r4, [r11, #-0x4]
- moveq r1, #0x0
-_020CA9D0:
- bic r6, r6, #0x3
- ands r3, r6, #0x4
- beq _020CAAD8
- cmp r2, #0x10
- bne _020CAA0C
- mov r3, #0x0
- cmp r1, r3
- cmpeq r4, r3
- beq _020CAAD8
- ldr r3, [sp, #0x20]
- ldr r7, [sp, #0x2c]
- strb r3, [sp, #0x39]
- add r3, r0, #0x21
- strb r3, [sp, #0x38]
- b _020CAAD8
-_020CAA0C:
- cmp r2, #0x8
- ldreq r3, [sp, #0x20]
- ldreq r7, [sp, #0x28]
- streqb r3, [sp, #0x38]
- b _020CAAD8
-_020CAA20:
- ands r1, r6, #0x100
- addne r11, r11, #0x4
- ldrnesb r4, [r11, #-0x4]
- movne r1, r4, asr #0x1f
- bne _020CAA64
- ands r1, r6, #0x40
- addne r11, r11, #0x4
- ldrnesh r4, [r11, #-0x4]
- movne r1, r4, asr #0x1f
- bne _020CAA64
- ands r1, r6, #0x80
- addne r11, r11, #0x8
- ldrne r4, [r11, #-0x8]
- ldrne r1, [r11, #-0x4]
- addeq r11, r11, #0x4
- ldreq r4, [r11, #-0x4]
- moveq r1, r4, asr #0x1f
-_020CAA64:
- mov r3, #0x0
- and r8, r3, #0x0
- cmp r8, r3
- and r8, r1, #0x80000000
- cmpeq r8, r3
- beq _020CAAA0
- ldr r7, [sp, #0x30]
- mvn r4, r4
- strb r7, [sp, #0x38]
- mvn r7, r1
- mov r1, #0x1
- adds r4, r4, r1
- adc r1, r7, r3
- ldr r7, [sp, #0x28]
- b _020CAAD8
-_020CAAA0:
- cmp r1, r3
- cmpeq r4, r3
- bne _020CAAB4
- cmp r5, #0x0
- beq _020CAAD8
-_020CAAB4:
- ands r3, r6, #0x2
- ldrne r3, [sp, #0x34]
- ldrne r7, [sp, #0x28]
- strneb r3, [sp, #0x38]
- bne _020CAAD8
- ands r3, r6, #0x1
- ldrne r3, [sp, #0x1c]
- ldrne r7, [sp, #0x28]
- strneb r3, [sp, #0x38]
-_020CAAD8:
- cmp r2, #0x8
- ldr r8, [sp, #0x4]
- beq _020CAAF8
- cmp r2, #0xa
- beq _020CAB40
- cmp r2, #0x10
- beq _020CABDC
- b _020CAC28
-_020CAAF8:
- mov r0, #0x0
- cmp r1, r0
- cmpeq r4, r0
- beq _020CAC28
-_020CAB08:
- and r0, r4, #0x7
- add r3, r0, #0x30
- add r0, sp, #0x3a
- strb r3, [r0, r8]
- mov r4, r4, lsr #0x3
- mov r2, #0x0
- mov r0, r1, lsr #0x3
- orr r4, r4, r1, lsl #0x1d
- cmp r0, r2
- cmpeq r4, r2
- mov r1, r0
- add r8, r8, #0x1
- bne _020CAB08
- b _020CAC28
-_020CAB40:
- mov r0, #0x0
- cmp r0, r0
- cmpeq r1, r0
- bne _020CAB8C
- cmp r4, #0x0
- beq _020CAC28
-_020CAB58:
- ldr r0, _020CAD60 ; =0xCCCCCCCD
- umull r1, r0, r4, r0
- movs r0, r0, lsr #0x3
- mov r1, #0xa
- mul r1, r0, r1
- sub r1, r4, r1
- mov r4, r0
- add r1, r1, #0x30
- add r0, sp, #0x3a
- strb r1, [r0, r8]
- add r8, r8, #0x1
- bne _020CAB58
- b _020CAC28
-_020CAB8C:
- cmp r1, r0
- cmpeq r4, r0
- beq _020CAC28
-_020CAB98:
- ldr r2, [sp, #0xc]
- ldr r3, [sp, #0x4]
- mov r0, r4
- bl _ll_udiv
- mov r3, #0xa
- umull r3, r12, r0, r3
- subs r3, r4, r3
- mov r2, #0x0
- add r4, r3, #0x30
- add r3, sp, #0x3a
- strb r4, [r3, r8]
- cmp r1, r2
- cmpeq r0, r2
- mov r4, r0
- add r8, r8, #0x1
- bne _020CAB98
- b _020CAC28
-_020CABDC:
- mov r2, #0x0
- cmp r1, r2
- cmpeq r4, r2
- beq _020CAC28
-_020CABEC:
- and r3, r4, #0xf
- cmp r3, #0xa
- mov r4, r4, lsr #0x4
- addlt r3, r3, #0x30
- mov r2, r1, lsr #0x4
- orr r4, r4, r1, lsl #0x1c
- mov r1, r2
- addge r3, r3, r0
- add r2, sp, #0x3a
- strb r3, [r2, r8]
- mov r2, #0x0
- cmp r1, r2
- add r8, r8, #0x1
- cmpeq r4, r2
- bne _020CABEC
-_020CAC28:
- cmp r7, #0x0
- ble _020CAC4C
- ldrsb r0, [sp, #0x38]
- cmp r0, #0x30
- ldreq r1, [sp, #0x20]
- addeq r0, sp, #0x3a
- streqb r1, [r0, r8]
- ldreq r7, [sp, #0x4]
- addeq r8, r8, #0x1
-_020CAC4C:
- sub r5, r5, r8
- ands r0, r6, #0x10
- beq _020CAC68
- sub r0, r10, r8
- sub r0, r0, r7
- cmp r5, r0
- movlt r5, r0
-_020CAC68:
- cmp r5, #0x0
- subgt r10, r10, r5
- add r0, r7, r8
- ands r6, r6, #0x8
- sub r10, r10, r0
- bne _020CAC90
- ldr r1, [sp, #0x1c]
- add r0, sp, #0x54
- mov r2, r10
- bl string_fill_char
-_020CAC90:
- cmp r7, #0x0
- ble _020CACB8
- add r0, sp, #0x38
- add r4, r0, r7
-_020CACA0:
- ldrsb r1, [r4, #-0x1]!
- sub r7, r7, #0x1
- add r0, sp, #0x54
- bl string_put_char
-_020CACB0:
- cmp r7, #0x0
- bgt _020CACA0
-_020CACB8:
- ldr r1, [sp, #0x20]
- mov r2, r5
- add r0, sp, #0x54
- bl string_fill_char
-_020CACC8:
- cmp r8, #0x0
- ble _020CACF0
- add r0, sp, #0x3A
- add r4, r0, r8
-_020CACD8:
- ldrsb r1, [r4, #-0x1]!
- sub r8, r8, #0x1
- add r0, sp, #0x54
- bl string_put_char
- cmp r8, #0x0
- bgt _020CACD8
-_020CACF0:
- cmp r6, #0x0
- beq _020CAD08
- ldr r1, [sp, #0x1C]
- mov r2, sl
- add r0, sp, #0x54
- bl string_fill_char
-_020CAD08:
- add r9, r9, #0x1
-_020CAD0C:
- ldrsb r0, [r9, #0x0]
- cmp r0, #0x0
- bne _020CA530
-_020CAD18:
- ldr r0, [sp, #0x54]
- cmp r0, #0x0
- ldrne r0, [sp, #0x58]
- movne r1, #0x0
- strneb r1, [r0, #0x0]
- bne _020CAD48
- ldr r0, [sp, #0x0]
- cmp r0, #0x0
- ldrne r1, [sp, #0x5c]
- movne r2, #0x0
- addne r0, r1, r0
- strneb r2, [r0, #-0x1]
-_020CAD48:
- ldr r1, [sp, #0x58]
- ldr r0, [sp, #0x5c]
- sub r0, r1, r0
- add sp, sp, #0x64
- ldmia sp!, {r4-r11,lr}
- bx lr
- .balign 4
-_020CAD60: .word 0xCCCCCCCD
-
- arm_func_start OS_SNPrintf
-OS_SNPrintf: ; 0x020CAD64
- stmdb sp!, {r0-r3}
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- add r3, sp, #0x10
- bic r3, r3, #0x3
- ldr r2, [sp, #0x10]
- add r3, r3, #0x4
- bl OS_VSNPrintf
- add sp, sp, #0x4
- ldmia sp!, {lr}
- add sp, sp, #0x10
- bx lr
-
- arm_func_start OS_VSPrintf
-OS_VSPrintf: ; 0x020CAD94
- ldr ip, _020CADA8 ; =OS_VSNPrintf
- mov r3, r2
- mov r2, r1
- mvn r1, #0x80000000
- bx r12
- .balign 4
-_020CADA8: .word OS_VSNPrintf
-
- arm_func_start OS_SPrintf
-OS_SPrintf: ; 0x020CADAC
- stmdb sp!, {r0-r3}
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- add r2, sp, #0xc
- bic r2, r2, #0x3
- ldr r1, [sp, #0xc]
- add r2, r2, #0x4
- bl OS_VSPrintf
- add sp, sp, #0x4
- ldmia sp!, {lr}
- add sp, sp, #0x10
- bx lr
-
- arm_func_start string_put_string
-string_put_string: ; 0x020CADDC
- stmdb sp!, {r4,lr}
- cmp r2, #0x0
- ldmleia sp!, {r4,lr}
- bxle lr
- ldr lr, [r0, #0x0]
- mov r4, #0x0
- cmp lr, r2
- movhi lr, r2
- cmp lr, #0x0
- bls _020CAE1C
-_020CAE04:
- ldrsb r12, [r1, r4]
- ldr r3, [r0, #0x4]
- strb r12, [r3, r4]
- add r4, r4, #0x1
- cmp r4, lr
- blo _020CAE04
-_020CAE1C:
- ldr r1, [r0, #0x0]
- sub r1, r1, lr
- str r1, [r0, #0x0]
- ldr r1, [r0, #0x4]
- add r1, r1, r2
- str r1, [r0, #0x4]
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start string_fill_char
-string_fill_char:
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- cmp r2, #0x0
- addle sp, sp, #0x4
- ldmleia sp!, {lr}
- bxle lr
- ldr r12, [r0, #0x0]
- mov lr, #0x0
- cmp r12, r2
- movhi r12, r2
- cmp r12, #0x0
- bls _020CAE80
-_020CAE6C:
- ldr r3, [r0, #0x4]
- strb r1, [r3, lr]
- add lr, lr, #0x1
- cmp lr, r12
- blo _020CAE6C
-_020CAE80:
- ldr r1, [r0, #0x0]
- sub r1, r1, r12
- str r1, [r0, #0x0]
- ldr r1, [r0, #0x4]
- add r1, r1, r2
- str r1, [r0, #0x4]
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start string_put_char
-string_put_char:
- ldr r2, [r0, #0x0]
- cmp r2, #0x0
- ldrne r2, [r0, #0x4]
- strneb r1, [r2, #0x0]
- ldrne r1, [r0, #0x0]
- subne r1, r1, #0x1
- strne r1, [r0, #0x0]
- ldr r1, [r0, #0x4]
- add r1, r1, #0x1
- str r1, [r0, #0x4]
- bx lr
diff --git a/arm9/asm/OS_reset.s b/arm9/asm/OS_reset.s
deleted file mode 100644
index bdcc0f88..00000000
--- a/arm9/asm/OS_reset.s
+++ /dev/null
@@ -1,110 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start OS_ResetSystem
-OS_ResetSystem: ; 0x020CD3B4
- stmdb sp!, {r4,lr}
- ldr r1, _020CD42C ; =0x027FFC40
- mov r4, r0
- ldrh r0, [r1, #0x0]
- cmp r0, #0x2
- bne _020CD3D0
- bl OS_Terminate
-_020CD3D0:
- bl OS_GetLockID
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- bl CARD_LockRom
-_020CD3E0:
- mov r0, #0x0
- bl MI_StopDma
- mov r0, #0x1
- bl MI_StopDma
- mov r0, #0x2
- bl MI_StopDma
- mov r0, #0x3
- bl MI_StopDma
- mov r0, #0x40000
- bl OS_SetIrqMask
- mvn r0, #0x0
- bl OS_ResetRequestIrqMask
- ldr r1, _020CD430
- mov r0, #0x10
- str r4, [r1]
- bl OSi_SendToPxi
- bl OSi_DoResetSystem
- ldmia sp!, {r4, lr}
- bx lr
-_020CD42C: .word 0x027FFC40
-_020CD430: .word 0x027FFC20
-
- arm_func_start OSi_SendToPxi
-OSi_SendToPxi: ; 0x020CD434
- stmdb sp!, {r4-r6,lr}
- mov r6, r0, lsl #0x8
- mov r5, #0xc
- mov r4, #0x0
-_020CD444:
- mov r0, r5
- mov r1, r6
- mov r2, r4
- bl PXI_SendWordByFifo
-_020CD454:
- cmp r0, #0x0
- bne _020CD444
- ldmia sp!, {r4-r6, lr}
- bx lr
-
- arm_func_start OSi_CommonCallback
-OSi_CommonCallback: ; OSi_CommonCallback
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- and r0, r1, #0x7f00
- mov r0, r0, lsl #0x8
- mov r0, r0, lsr #0x10
- cmp r0, #0x10
- ldreq r0, _020CD4A4 ; =OSi_IsResetOccurred
- moveq r1, #0x1
- streqh r1, [r0, #0x0]
- addeq sp, sp, #0x4
- ldmeqia sp!, {lr}
- bxeq lr
- bl OS_Terminate
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020CD4A4: .word OSi_IsResetOccurred
-
- arm_func_start OS_InitReset
-OS_InitReset: ; 0x020CD4A8
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- ldr r0, _020CD508 ; =0x021D37DC
- ldrh r1, [r0, #0x0]
- cmp r1, #0x0
- addne sp, sp, #0x4
- ldmneia sp!, {r4-r5,lr}
- bxne lr
- mov r1, #0x1
- strh r1, [r0, #0x0]
- bl PXI_Init
- mov r5, #0xc
- mov r4, #0x1
-_020CD4DC:
- mov r0, r5
- mov r1, r4
- bl PXI_IsCallbackReady
-_020CD4E8:
- cmp r0, #0x0
- beq _020CD4DC
- ldr r1, _020CD50C
- mov r0, #0xC
- bl PXI_SetFifoRecvCallback
- add sp, sp, #0x4
- ldmia sp!, {r4-r5, lr}
- bx lr
-_020CD508: .word OSi_IsInitReset
-_020CD50C: .word OSi_CommonCallback
diff --git a/arm9/asm/OS_spinLock.s b/arm9/asm/OS_spinLock.s
index 36ab2cf5..3137a69b 100644
--- a/arm9/asm/OS_spinLock.s
+++ b/arm9/asm/OS_spinLock.s
@@ -272,7 +272,7 @@ FUN_020CA358: ; 0x020CA358
mov r4, #0x400
_020CA380:
mov r0, r4
- blx SVC_WaitByLoop
+ bl SVC_WaitByLoop
mov r0, r8
mov r1, r7
mov r2, r6
@@ -307,7 +307,7 @@ OS_InitLock: ; 0x020CA3AC
mov r4, #0x400
_020CA3FC:
mov r0, r4
- blx SVC_WaitByLoop
+ bl SVC_WaitByLoop
ldrh r0, [r5, #0x6]
cmp r0, #0x0
bne _020CA3FC
diff --git a/arm9/asm/OS_tcm.s b/arm9/asm/OS_tcm.s
deleted file mode 100644
index 9c7196ae..00000000
--- a/arm9/asm/OS_tcm.s
+++ /dev/null
@@ -1,13 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start OS_GetDTCMAddress
-OS_GetDTCMAddress: ; 0x020CC9A4
- mrc p15, 0x0, r0, c9, c1, 0x0
- ldr r1, _020CC9B4 ; =0xFFFFF000
- and r0, r0, r1
- bx lr
- .balign 4
-_020CC9B4: .word 0xFFFFF000
diff --git a/arm9/asm/OS_terminate_proc.s b/arm9/asm/OS_terminate_proc.s
deleted file mode 100644
index 30940914..00000000
--- a/arm9/asm/OS_terminate_proc.s
+++ /dev/null
@@ -1,19 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start OS_Halt
-OS_Halt: ; 0x020CD844
- mov r0, #0x0
- mcr p15, 0x0, r0, c7, c0, 0x4
- bx lr
-
- arm_func_start OS_Terminate
-OS_Terminate: ; 0x020CD850
- stmdb sp!, {lr}
- sub sp, sp, #0x4
-_020CD858:
- bl OS_DisableInterrupts
- bl OS_Halt
- b _020CD858
diff --git a/arm9/asm/crt0.s b/arm9/asm/crt0.s
index aaf2d22f..05a91b28 100644
--- a/arm9/asm/crt0.s
+++ b/arm9/asm/crt0.s
@@ -255,32 +255,43 @@ OSi_ReferSymbol: ; 0x02000B60
NitroStartUp: ; 0x02000B64
bx lr
+ .section .rodata
.global _start_ModuleParams
-_start_ModuleParams:
+_start_ModuleParams: ; 0x02000B68
.word SDK_AUTOLOAD_LIST
.word SDK_AUTOLOAD_LIST_END
.word SDK_AUTOLOAD_START
.word SDK_STATIC_BSS_START
.word SDK_STATIC_BSS_END
-
- .balign 16, 0
-
- .section .version
+ .word 0 ; Compressed static init end
; NITRO SDK 3.2.30001
.word (3 << 24) | (2 << 16) | 30001
.word 0xdec00621 ; Nitro code BE
.word 0x2106c0de ; Nitro code LE
-
+
# strings
+ # .section .version
.balign 4
+ .global _SDK_NintendoDWC
+_SDK_NintendoDWC: ; 0x02000b8c
.asciz "[SDK+NINTENDO:DWC1.2.30006.061019.2254_DWC_1_2_PLUS6]"
.balign 4
+ .global _SDK_NintendoWiFi
+_SDK_NintendoWiFi: ; 0x02000bc4
.asciz "[SDK+NINTENDO:WiFi1.2.30000.0609050341]"
.balign 4
+ .global _SDK_UbiquitousCPS
+_SDK_UbiquitousCPS: ; 0x02000bec
.asciz "[SDK+UBIQUITOUS:CPS]"
.balign 4
+ .global _SDK_UbiquitousSSL
+_SDK_UbiquitousSSL: ; 0x02000c04
.asciz "[SDK+UBIQUITOUS:SSL]"
.balign 4
+ .global _SDK_AbiossolibVCT
+_SDK_AbiossolibVCT: ; 0x02000c1c
.asciz "[SDK+Abiosso:libVCT 1.0.1_ec]"
.balign 4
+ .global _SDK_NintendoBackup
+_SDK_NintendoBackup: ; 0x02000c3c
.asciz "[SDK+NINTENDO:BACKUP]"
diff --git a/arm9/asm/filesystem.s b/arm9/asm/filesystem.s
index 75af021d..a52f38b9 100644
--- a/arm9/asm/filesystem.s
+++ b/arm9/asm/filesystem.s
@@ -18,31 +18,31 @@ ReadNARCFile: ; 0x02006314
add r0, sp, #0x18
add r5, r2, #0x0
str r3, [sp, #0x4]
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x18
add r1, r4, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
add r0, sp, #0x18
mov r1, #0xc
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, sp, #0x18
add r1, sp, #0x14
mov r2, #0x2
- blx FS_ReadFile
+ bl FS_ReadFile
ldr r4, [sp, #0x14]
add r0, sp, #0x18
add r1, r4, #0x4
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, sp, #0x18
add r1, sp, #0x14
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, sp, #0x18
add r1, sp, #0x8
mov r2, #0x2
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, sp, #0x8
ldrh r0, [r0, #0x0]
cmp r0, r5
@@ -54,26 +54,26 @@ _0200637A:
add r6, r4, r0
add r0, sp, #0x18
add r1, r6, #0x4
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, sp, #0x18
add r1, sp, #0x14
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r4, #0xc
lsl r1, r5, #0x3
add r0, sp, #0x18
add r1, r4, r1
mov r2, #0x0
ldr r7, [sp, #0x14]
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, sp, #0x18
add r1, sp, #0x10
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, sp, #0x18
add r1, sp, #0xc
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r2, r6, r7
ldr r1, [sp, #0x10]
add r2, #0x8
@@ -82,7 +82,7 @@ _0200637A:
add r0, sp, #0x18
add r1, r1, r2
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
ldr r0, [sp, #0x78]
cmp r0, #0x0
bne _020063D6
@@ -98,9 +98,9 @@ _020063E0:
ldr r1, [sp, #0x0]
ldr r2, [sp, #0x14]
add r0, sp, #0x18
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, sp, #0x18
- blx FS_CloseFile
+ bl FS_CloseFile
add sp, #0x60
pop {r3-r7, pc}
@@ -119,31 +119,31 @@ LoadFileIntoMemory: ; 0x020063F4
add r0, sp, #0x18
str r2, [sp, #0x0]
str r3, [sp, #0x4]
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x18
add r1, r4, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
add r0, sp, #0x18
mov r1, #0xc
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, sp, #0x18
add r1, sp, #0x14
mov r2, #0x2
- blx FS_ReadFile
+ bl FS_ReadFile
ldr r4, [sp, #0x14]
add r0, sp, #0x18
add r1, r4, #0x4
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, sp, #0x18
add r1, sp, #0x14
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, sp, #0x18
add r1, sp, #0x8
mov r2, #0x2
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, sp, #0x8
ldrh r0, [r0, #0x0]
cmp r0, r5
@@ -155,26 +155,26 @@ _0200645A:
add r6, r4, r0
add r0, sp, #0x18
add r1, r6, #0x4
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, sp, #0x18
add r1, sp, #0x14
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r4, #0xc
lsl r1, r5, #0x3
add r0, sp, #0x18
add r1, r4, r1
mov r2, #0x0
ldr r7, [sp, #0x14]
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, sp, #0x18
add r1, sp, #0x10
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, sp, #0x18
add r1, sp, #0xc
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r2, r6, r7
ldr r1, [sp, #0x10]
add r2, #0x8
@@ -183,7 +183,7 @@ _0200645A:
add r0, sp, #0x18
add r1, r1, r2
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
ldr r0, [sp, #0x78]
cmp r0, #0x0
bne _020064B6
@@ -212,9 +212,9 @@ _020064D8:
ldr r2, [sp, #0x14]
add r0, sp, #0x18
add r1, r4, #0x0
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, sp, #0x18
- blx FS_CloseFile
+ bl FS_CloseFile
add r0, r4, #0x0
add sp, #0x60
pop {r3-r7, pc}
@@ -329,33 +329,33 @@ LoadFromNARC_7: ; 0x020065A4
add r0, sp, #0x0
strh r1, [r0, #0x0]
add r0, sp, #0x10
- blx FS_InitFile
+ bl FS_InitFile
ldr r1, _0200666C ; =0x021058A0
lsl r2, r4, #0x2
ldr r1, [r1, r2]
add r0, sp, #0x10
- blx FS_OpenFile
+ bl FS_OpenFile
add r0, sp, #0x10
mov r1, #0xc
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, sp, #0x10
add r1, sp, #0xc
mov r2, #0x2
- blx FS_ReadFile
+ bl FS_ReadFile
ldr r4, [sp, #0xc]
add r0, sp, #0x10
add r1, r4, #0x4
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, sp, #0x10
add r1, sp, #0xc
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, sp, #0x10
add r1, sp, #0x0
mov r2, #0x2
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, sp, #0x0
ldrh r0, [r0, #0x0]
cmp r0, r5
@@ -367,33 +367,33 @@ _0200660A:
add r6, r4, r0
add r0, sp, #0x10
add r1, r6, #0x4
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, sp, #0x10
add r1, sp, #0xc
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r4, #0xc
lsl r1, r5, #0x3
add r0, sp, #0x10
add r1, r4, r1
mov r2, #0x0
ldr r7, [sp, #0xc]
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, sp, #0x10
add r1, sp, #0x8
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, sp, #0x10
add r1, sp, #0x4
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r2, r6, r7
ldr r1, [sp, #0x8]
add r2, #0x8
add r1, r2, r1
add r0, sp, #0x10
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
ldr r1, [sp, #0x4]
ldr r0, [sp, #0x8]
sub r0, r1, r0
@@ -418,46 +418,46 @@ FUN_02006670: ; 0x02006670
beq _020066EC
mov r1, #0x0
str r1, [r4, #0x48]
- blx FS_InitFile
+ bl FS_InitFile
ldr r1, _020066F0 ; =0x021058A0
lsl r2, r5, #0x2
ldr r1, [r1, r2]
add r0, r4, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
add r0, r4, #0x0
mov r1, #0xc
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
add r1, r4, #0x0
add r0, r4, #0x0
add r1, #0x48
mov r2, #0x2
- blx FS_ReadFile
+ bl FS_ReadFile
ldr r1, [r4, #0x48]
add r0, r4, #0x0
add r1, r1, #0x4
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, r4, #0x0
add r1, sp, #0x0
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r1, r4, #0x0
add r0, r4, #0x0
add r1, #0x50
mov r2, #0x2
- blx FS_ReadFile
+ bl FS_ReadFile
ldr r1, [r4, #0x48]
ldr r0, [sp, #0x0]
mov r2, #0x0
add r5, r1, r0
add r0, r4, #0x0
add r1, r5, #0x4
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, r4, #0x0
add r1, sp, #0x0
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
ldr r0, [sp, #0x0]
add r0, r5, r0
str r0, [r4, #0x4c]
@@ -471,7 +471,7 @@ _020066F0: .word 0x021058A0
FUN_020066F4: ; 0x020066F4
push {r4, lr}
add r4, r0, #0x0
- blx FS_CloseFile
+ bl FS_CloseFile
add r0, r4, #0x0
bl FUN_02016A18
pop {r4, pc}
@@ -495,22 +495,22 @@ _0200671A:
add r1, r2, r1
add r0, r5, #0x0
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, r5, #0x0
add r1, sp, #0x4
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, r5, #0x0
add r1, sp, #0x0
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
ldr r2, [r5, #0x4c]
ldr r1, [sp, #0x4]
add r2, #0x8
add r1, r2, r1
add r0, r5, #0x0
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
ldr r2, [sp, #0x0]
ldr r1, [sp, #0x4]
add r0, r6, #0x0
@@ -523,7 +523,7 @@ _0200671A:
add r0, r5, #0x0
add r1, r4, #0x0
sub r2, r3, r2
- blx FS_ReadFile
+ bl FS_ReadFile
_0200676C:
add r0, r4, #0x0
add sp, #0x8
@@ -549,28 +549,28 @@ _0200678A:
add r1, r2, r1
add r0, r5, #0x0
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, r5, #0x0
add r1, sp, #0x4
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, r5, #0x0
add r1, sp, #0x0
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
ldr r2, [r5, #0x4c]
ldr r1, [sp, #0x4]
add r2, #0x8
add r1, r2, r1
add r0, r5, #0x0
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
ldr r3, [sp, #0x0]
ldr r2, [sp, #0x4]
add r0, r5, #0x0
add r1, r6, #0x0
sub r2, r3, r2
- blx FS_ReadFile
+ bl FS_ReadFile
add sp, #0x8
pop {r4-r6, pc}
@@ -592,15 +592,15 @@ _020067E4:
add r1, r2, r1
add r0, r5, #0x0
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, r5, #0x0
add r1, sp, #0x4
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, r5, #0x0
add r1, sp, #0x0
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
ldr r1, [sp, #0x0]
ldr r0, [sp, #0x4]
sub r0, r1, r0
@@ -627,11 +627,11 @@ _0200682A:
add r1, r2, r1
add r0, r5, #0x0
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, r5, #0x0
add r1, sp, #0x0
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
ldr r2, [r5, #0x4c]
ldr r1, [sp, #0x0]
add r2, #0x8
@@ -639,10 +639,10 @@ _0200682A:
add r0, r5, #0x0
add r1, r6, r1
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
ldr r1, [sp, #0x18]
add r0, r5, #0x0
add r2, r7, #0x0
- blx FS_ReadFile
+ bl FS_ReadFile
pop {r3-r7, pc}
.balign 4
diff --git a/arm9/asm/libcard.s b/arm9/asm/libcard.s
index 664e85f5..1eb74e0d 100644
--- a/arm9/asm/libcard.s
+++ b/arm9/asm/libcard.s
@@ -558,12 +558,14 @@ CARD_WaitBackupAsync: ; 0x020D6DB8
.balign 4
_020D6DC0: .word CARDi_WaitAsync
+ .extern _SDK_NintendoBackup
+
arm_func_start CARD_IdentifyBackup
CARD_IdentifyBackup: ; 0x020D6DC4
stmdb sp!, {r4-r7,lr}
sub sp, sp, #0x4
mov r5, r0
- ldr r0, _020D6F00 ; =0x02000C3C
+ ldr r0, _020D6F00 ; =_SDK_NintendoBackup
ldr r7, _020D6F04 ; =0x021D55C0
bl OSi_ReferSymbol
_020D6DDC: ; 0x020D6DDC
@@ -648,7 +650,7 @@ _020D6EE0:
ldmia sp!, {r4-r7,lr}
bx lr
.balign 4
-_020D6F00: .word 0x02000C3C
+_020D6F00: .word _SDK_NintendoBackup
_020D6F04: .word 0x021D55C0
_020D6F08: .word 0x021D3498
@@ -666,7 +668,7 @@ CARDi_RequestStreamCommand: ; 0x020D6F20
stmdb sp!, {r4-r10,lr}
mov r10, r0
ldr r6, _020D7004 ; =0x021D55C0
- ldr r0, _020D7008 ; =0x02000C3C
+ ldr r0, _020D7008 ; =_SDK_NintendoBackup
mov r9, r1
mov r8, r2
mov r7, r3
@@ -726,7 +728,7 @@ _020D6FE8: ; 0x020D6FE8
bx lr
.balign 4
_020D7004: .word 0x021D55C0
-_020D7008: .word 0x02000C3C
+_020D7008: .word _SDK_NintendoBackup
_020D700C: .word CARDi_RequestStreamCommandCore
_020D7010: .word 0x021D3498
@@ -736,7 +738,7 @@ CARDi_RequestStreamCommandCore:
sub sp, sp, #0x4
mov r9, r0
ldr r8, [r9, #0x2c]
- ldr r0, _020D720C ; =0x02000C3C
+ ldr r0, _020D720C ; =_SDK_NintendoBackup
ldr r7, [r9, #0x34]
ldr r10, [r9, #0x30]
mov r6, #0x100
@@ -878,7 +880,7 @@ _020D71E8: ; 0x020D71E8
ldmia sp!, {r4-r11,lr}
bx lr
.balign 4
-_020D720C: .word 0x02000C3C
+_020D720C: .word _SDK_NintendoBackup
arm_func_start CARDi_GetRomAccessor
CARDi_GetRomAccessor: ; 0x020D7210
@@ -1635,7 +1637,7 @@ _020D7BEC: ; 0x020D7BEC
mov r4, #0x0
_020D7C04:
mov r0, r6
- blx SVC_WaitByLoop
+ bl SVC_WaitByLoop
mov r0, r5
mov r1, r7
mov r2, r4
diff --git a/arm9/asm/libctrdg.s b/arm9/asm/libctrdg.s
index 301ea233..6d8cf4a5 100644
--- a/arm9/asm/libctrdg.s
+++ b/arm9/asm/libctrdg.s
@@ -333,7 +333,7 @@ _020DB520: ; 0x020DB520
mov r4, #0x0
_020DB53C:
mov r0, r6
- blx SVC_WaitByLoop
+ bl SVC_WaitByLoop
mov r0, r5
mov r1, r7
mov r2, r4
@@ -389,7 +389,7 @@ _020DB5DC: ; 0x020DB5DC
ldr r0, [r6, #0x4]
bl OS_RestoreInterrupts
mov r0, r4
- blx SVC_WaitByLoop
+ bl SVC_WaitByLoop
b _020DB5A8
_020DB600: ; 0x020DB600
add sp, sp, #0x4
@@ -666,7 +666,7 @@ CTRDGi_InitCommon: ; 0x020DB938
ldr r2, _020DB974 ; =0x05000001
add r0, sp, #0x0
str r3, [sp, #0x0]
- blx FUN_020002FE
+ bl FUN_020002FE
bl OS_GetLockID
ldr r1, _020DB970 ; =0x021D6944
strh r0, [r1, #0x2]
@@ -872,7 +872,7 @@ _020DBBDC:
mov r7, #0x1
_020DBC1C:
mov r0, r7
- blx SVC_WaitByLoop
+ bl SVC_WaitByLoop
ldrh r0, [r5, #0x0]
cmp r0, #0x1
bne _020DBC1C
diff --git a/arm9/asm/libdgt.s b/arm9/asm/libdgt.s
deleted file mode 100644
index d5ef358d..00000000
--- a/arm9/asm/libdgt.s
+++ /dev/null
@@ -1,1017 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start ProcessBlock
-ProcessBlock: ; 0x020D2798
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- add r3, r0, #0x18
- ldr r5, [r0, #0x0]
- ldr r4, [r0, #0x4]
- ldr lr, [r0, #0x8]
- ldr r12, [r0, #0xc]
- ldr r2, _020D2B78 ; =0x02106900
- mov r8, r3
- mov r7, #0x0
-_020D27C0:
- mvn r1, r4
- and r6, r4, lr
- and r1, r1, r12
- orr r1, r6, r1
- ldr r6, [r8, #0x0]
- add r1, r5, r1
- ldr r5, [r2, #0x0]
- add r1, r6, r1
- add r5, r5, r1
- mov r1, r5, lsl #0x7
- orr r1, r1, r5, lsr #0x19
- add r5, r4, r1
- mvn r1, r5
- and r6, r5, r4
- and r1, r1, lr
- orr r1, r6, r1
- ldr r6, [r8, #0x4]
- add r1, r12, r1
- ldr r9, [r2, #0x4]
- add r1, r6, r1
- add r6, r9, r1
- mov r1, r6, lsl #0xc
- orr r1, r1, r6, lsr #0x14
- add r12, r5, r1
- mvn r1, r12
- and r6, r12, r5
- and r1, r1, r4
- orr r6, r6, r1
- add r1, r8, #0xc
- ldr r9, [r8, #0x8]
- add r6, lr, r6
- add r6, r9, r6
- ldr r9, [r2, #0x8]
- ldr r1, [r1, #0x0]
- add r10, r9, r6
- add r6, r2, #0xc
- ldr r6, [r6, #0x0]
- mov r9, r10, lsl #0x11
- orr r9, r9, r10, lsr #0xf
- add lr, r12, r9
- add r2, r2, #0x10
- add r8, r8, #0x10
- and r10, lr, r12
- mvn r9, lr
- and r9, r9, r5
- orr r9, r10, r9
- add r4, r4, r9
- add r1, r1, r4
- add r4, r6, r1
- mov r1, r4, lsl #0x16
- orr r1, r1, r4, lsr #0xa
- add r4, lr, r1
- add r7, r7, #0x1
- cmp r7, #0x4
- blt _020D27C0
- ldr r6, _020D2B7C ; =0x02106840
- mov r1, #0x0
-_020D28A4:
- mvn r7, r12
- ldr r9, [r6, #0x0]
- and r8, r4, r12
- and r7, lr, r7
- orr r7, r8, r7
- ldr r8, [r3, r9, lsl #0x2]
- add r5, r5, r7
- ldr r7, [r2, #0x0]
- add r5, r8, r5
- add r7, r7, r5
- mov r5, r7, lsl #0x5
- orr r5, r5, r7, lsr #0x1b
- add r5, r4, r5
- mvn r8, lr
- ldr r7, [r6, #0x4]
- and r9, r5, lr
- and r8, r4, r8
- orr r10, r9, r8
- mvn r8, r4
- ldr r9, [r6, #0x8]
- ldr r11, [r3, r7, lsl #0x2]
- add r7, r12, r10
- add r10, r11, r7
- add r7, r6, #0xc
- ldr r9, [r3, r9, lsl #0x2]
- and r8, r5, r8
- ldr r7, [r7, #0x0]
- ldr r11, [r2, #0x4]
- ldr r7, [r3, r7, lsl #0x2]
- add r11, r11, r10
- mov r10, r11, lsl #0x9
- orr r10, r10, r11, lsr #0x17
- add r12, r5, r10
- ldr r10, [r2, #0x8]
- and r11, r12, r4
- orr r8, r11, r8
- add r8, lr, r8
- add r8, r9, r8
- add r10, r10, r8
- add r8, r2, #0xc
- ldr r8, [r8, #0x0]
- mov r9, r10, lsl #0xe
- orr r9, r9, r10, lsr #0x12
- add lr, r12, r9
- add r2, r2, #0x10
- add r6, r6, #0x10
- and r10, lr, r5
- mvn r9, r5
- and r9, r12, r9
- orr r9, r10, r9
- add r4, r4, r9
- add r4, r7, r4
- add r7, r8, r4
- mov r4, r7, lsl #0x14
- orr r4, r4, r7, lsr #0xc
- add r4, lr, r4
- add r1, r1, #0x1
- cmp r1, #0x4
- blt _020D28A4
- mov r7, #0x0
-_020D2994:
- ldr r8, [r6, #0x0]
- eor r1, r4, lr
- eor r1, r12, r1
- add r1, r5, r1
- ldr r8, [r3, r8, lsl #0x2]
- ldr r5, [r2, #0x0]
- add r1, r8, r1
- add r5, r5, r1
- mov r1, r5, lsl #0x4
- orr r1, r1, r5, lsr #0x1c
- add r5, r4, r1
- ldr r8, [r6, #0x4]
- eor r1, r5, r4
- eor r1, lr, r1
- ldr r8, [r3, r8, lsl #0x2]
- add r1, r12, r1
- ldr r9, [r6, #0x8]
- ldr r10, [r2, #0x4]
- add r1, r8, r1
- add r8, r10, r1
- mov r1, r8, lsl #0xb
- orr r1, r1, r8, lsr #0x15
- add r12, r5, r1
- eor r8, r12, r5
- eor r8, r4, r8
- ldr r9, [r3, r9, lsl #0x2]
- add r8, lr, r8
- add r9, r9, r8
- ldr r10, [r2, #0x8]
- add r1, r2, #0xc
- ldr r8, [r6, #0xc]
- add r10, r10, r9
- ldr r9, [r3, r8, lsl #0x2]
- mov r8, r10, lsl #0x10
- orr r8, r8, r10, lsr #0x10
- add lr, r12, r8
- eor r8, lr, r12
- eor r8, r5, r8
- add r4, r4, r8
- add r7, r7, #0x1
- ldr r1, [r1, #0x0]
- add r4, r9, r4
- add r4, r1, r4
- mov r1, r4, lsl #0x17
- orr r1, r1, r4, lsr #0x9
- add r2, r2, #0x10
- add r6, r6, #0x10
- add r4, lr, r1
- cmp r7, #0x4
- blt _020D2994
- mov r10, #0x0
-_020D2A60:
- mvn r1, r12
- ldr r7, [r6, #0x0]
- orr r1, r4, r1
- eor r1, lr, r1
- ldr r7, [r3, r7, lsl #0x2]
- add r1, r5, r1
- ldr r5, [r2, #0x0]
- add r1, r7, r1
- add r5, r5, r1
- mov r1, r5, lsl #0x6
- orr r1, r1, r5, lsr #0x1a
- add r5, r4, r1
- mvn r1, lr
- ldr r7, [r6, #0x4]
- orr r1, r5, r1
- eor r1, r4, r1
- ldr r8, [r6, #0x8]
- ldr r7, [r3, r7, lsl #0x2]
- add r1, r12, r1
- ldr r9, [r2, #0x4]
- add r1, r7, r1
- add r9, r9, r1
- mov r7, r9, lsl #0xa
- add r1, r6, #0xc
- orr r9, r7, r9, lsr #0x16
- ldr r1, [r1, #0x0]
- add r7, r2, #0xc
- add r12, r5, r9
- ldr r8, [r3, r8, lsl #0x2]
- ldr r7, [r7, #0x0]
- ldr r1, [r3, r1, lsl #0x2]
- ldr r9, [r2, #0x8]
- mvn r11, r4
- orr r11, r12, r11
- eor r11, r5, r11
- add r11, lr, r11
- add r8, r8, r11
- add r9, r9, r8
- mov r8, r9, lsl #0xf
- orr r8, r8, r9, lsr #0x11
- add lr, r12, r8
- add r2, r2, #0x10
- add r6, r6, #0x10
- mvn r8, r5
- orr r8, lr, r8
- eor r8, r12, r8
- add r4, r4, r8
- add r1, r1, r4
- add r4, r7, r1
- mov r1, r4, lsl #0x15
- orr r1, r1, r4, lsr #0xb
- add r4, lr, r1
- add r10, r10, #0x1
- cmp r10, #0x4
- blt _020D2A60
- ldr r1, [r0, #0x0]
- add r1, r1, r5
- str r1, [r0, #0x0]
- ldr r1, [r0, #0x4]
- add r1, r1, r4
- str r1, [r0, #0x4]
- ldr r1, [r0, #0x8]
- add r1, r1, lr
- str r1, [r0, #0x8]
- ldr r1, [r0, #0xc]
- add r1, r1, r12
- str r1, [r0, #0xc]
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,lr}
- bx lr
- .balign 4
-_020D2B78: .word Unk_02106900 ; = 0x02106900
-_020D2B7C: .word Unk_02106840 ; = 0x02106840
-
- arm_func_start DGT_Hash1GetDigest_R
-DGT_Hash1GetDigest_R: ; 0x020D2B80
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r6, r1
- ldr r1, [r6, #0x14]
- ldr r3, [r6, #0x10]
- mov r7, r0
- mov r4, r1, lsl #0x3
- ldr r1, _020D2C40 ; =0x0210683C
- mov r0, r6
- mov r2, #0x1
- orr r4, r4, r3, lsr #0x1d
- mov r5, r3, lsl #0x3
- bl DGT_Hash1SetSource
- ldr r0, [r6, #0x10]
- mov r1, #0x0
- and r3, r0, #0x3f
- rsb r2, r3, #0x40
- cmp r2, #0x8
- bhs _020D2BE8
- add r0, r6, #0x18
- add r0, r0, r3
- bl MI_CpuFill8
- mov r0, r6
- bl ProcessBlock
- mov r3, #0x0
- mov r2, #0x40
-_020D2BE8:
- cmp r2, #0x8
- bls _020D2C04
- add r0, r6, #0x18
- add r0, r0, r3
- sub r2, r2, #0x8
- mov r1, #0x0
- bl MI_CpuFill8
-_020D2C04:
- str r5, [r6, #0x50]
- mov r0, r6
- str r4, [r6, #0x54]
- bl ProcessBlock
- mov r0, r6
- mov r1, r7
- mov r2, #0x10
- bl MI_CpuCopy8
- mov r0, r6
- mov r1, #0x0
- mov r2, #0x58
- bl MI_CpuFill8
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,lr}
- bx lr
- .balign 4
-_020D2C40: .word Unk_0210683C ; = 0x0210683C
-
- arm_func_start DGT_Hash1SetSource
-DGT_Hash1SetSource: ; 0x020D2C44
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- mov r8, r0
- add r12, r8, #0x10
- ldr r4, [r8, #0x10]
- mov r6, r2
- and r3, r4, #0x3f
- ldr r0, [r12, #0x4]
- adds r4, r4, r6
- str r4, [r8, #0x10]
- adc r0, r0, #0x0
- rsb r5, r3, #0x40
- mov r7, r1
- str r0, [r12, #0x4]
- cmp r5, r6
- bls _020D2CB0
- cmp r6, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- add r1, r8, #0x18
- mov r0, r7
- add r1, r1, r3
- bl MI_CpuCopy8
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,lr}
- bx lr
-_020D2CB0:
- add r1, r8, #0x18
- mov r0, r7
- mov r2, r5
- add r1, r1, r3
- bl MI_CpuCopy8
- mov r0, r8
- bl ProcessBlock
- sub r6, r6, r5
- mov r4, r6, lsr #0x6
- cmp r4, #0x0
- add r9, r7, r5
- ble _020D2D10
- add r7, r8, #0x18
- mov r5, #0x40
-_020D2CE8:
- mov r0, r9
- mov r1, r7
- mov r2, r5
- bl MI_CpuCopy8
- mov r0, r8
- add r9, r9, #0x40
- bl ProcessBlock
- sub r4, r4, #0x1
- cmp r4, #0x0
- bgt _020D2CE8
-_020D2D10:
- ands r2, r6, #0x3f
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- mov r0, r9
- add r1, r8, #0x18
- bl MI_CpuCopy8
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,lr}
- bx lr
-
- arm_func_start DGT_Hash1Reset
-DGT_Hash1Reset: ; 0x020D2D38
- ldr r2, _020D2D68 ; =0x67452301
- ldr r1, _020D2D6C ; =0xEFCDAB89
- str r2, [r0, #0x0]
- ldr r2, _020D2D70 ; =0x98BADCFE
- str r1, [r0, #0x4]
- ldr r1, _020D2D74 ; =0x10325476
- str r2, [r0, #0x8]
- str r1, [r0, #0xc]
- mov r1, #0x0
- str r1, [r0, #0x10]
- str r1, [r0, #0x14]
- bx lr
- .balign 4
-_020D2D68: .word 0x67452301
-_020D2D6C: .word 0xEFCDAB89
-_020D2D70: .word 0x98BADCFE
-_020D2D74: .word 0x10325476
-
- arm_func_start MATH_CalcHMACSHA1
-MATH_CalcHMACSHA1: ; 0x020D2D78
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0xa0
- ldr lr, _020D2E00 ; =0x02106A04
- add r12, sp, #0x1c
- mov r8, r0
- mov r7, r1
- mov r6, r2
- mov r5, r3
- mov r4, r12
- ldmia lr!, {r0-r3}
- stmia r12!, {r0-r3}
- ldmia lr, {r0-r2}
- stmia r12, {r0-r2}
- add lr, sp, #0x38
- add r12, sp, #0x8
- str lr, [sp, #0x24]
- ldr lr, _020D2E04 ; =MATH_SHA1Init
- str r12, [sp, #0x28]
- ldr ip, _020D2E08 ; =MATH_SHA1Update
- str lr, [sp, #0x2c]
- ldr lr, _020D2E0C ; =MATH_SHA1GetHash
- str r12, [sp, #0x30]
- ldr r12, [sp, #0xb8]
- str lr, [sp, #0x34]
- str r12, [sp, #0x0]
- mov r3, r5
- mov r0, r8
- mov r1, r7
- mov r2, r6
- str r4, [sp, #0x4]
- bl MATHi_CalcHMAC
- add sp, sp, #0xa0
- ldmia sp!, {r4-r8,lr}
- bx lr
- .balign 4
-_020D2E00: .word Unk_02106A04 ; = 0x02106A04
-_020D2E04: .word MATH_SHA1Init
-_020D2E08: .word MATH_SHA1Update
-_020D2E0C: .word MATH_SHA1GetHash
-
- arm_func_start MATH_SHA1GetHash
-MATH_SHA1GetHash: ; 0x020D2E10
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4-r6,lr}
- ldr r0, [sp, #0x10]
- mov r6, r1
- ldr r3, [r0, #0x1c]
- add r5, r0, #0x20
- ands r1, r3, #0x3
- mov r0, r3, asr #0x2
- moveq r1, #0x0
- streq r1, [r5, r0, lsl #0x2]
- ldr r2, [sp, #0x10]
- mov r1, #0x80
- add r4, r2, #0x20
- strb r1, [r4, r3]
- add r3, r3, #0x1
- ands r1, r3, #0x3
- beq _020D2E68
- mov r2, #0x0
-_020D2E58:
- strb r2, [r4, r3]
- add r3, r3, #0x1
- ands r1, r3, #0x3
- bne _020D2E58
-_020D2E68:
- ldr r1, [sp, #0x10]
- add r0, r0, #0x1
- ldr r1, [r1, #0x1c]
- cmp r1, #0x38
- blt _020D2EB4
- cmp r0, #0x10
- bge _020D2E98
- mov r1, #0x0
-_020D2E88:
- str r1, [r5, r0, lsl #0x2]
- add r0, r0, #0x1
- cmp r0, #0x10
- blt _020D2E88
-_020D2E98:
- ldr r1, _020D3008 ; =0x02106A00
- ldr r0, [sp, #0x10]
- ldr r3, [r1, #0x0]
- mov r1, r5
- mov r2, #0x40
- blx r3
- mov r0, #0x0
-_020D2EB4:
- cmp r0, #0xe
- bge _020D2ED0
- mov r1, #0x0
-_020D2EC0:
- str r1, [r5, r0, lsl #0x2]
- add r0, r0, #0x1
- cmp r0, #0xe
- blt _020D2EC0
-_020D2ED0:
- ldr r0, [sp, #0x10]
- mov r1, r5
- ldr r2, [r0, #0x14]
- ldr r3, _020D3008 ; =0x02106A00
- strb r2, [r4, #0x3f]
- mov r0, r2, lsr #0x8
- strb r0, [r4, #0x3e]
- mov r0, r2, lsr #0x10
- strb r0, [r4, #0x3d]
- mov r0, r2, lsr #0x18
- strb r0, [r4, #0x3c]
- ldr r0, [sp, #0x10]
- mov r2, #0x40
- ldr r5, [r0, #0x18]
- strb r5, [r4, #0x3b]
- mov r0, r5, lsr #0x8
- strb r0, [r4, #0x3a]
- mov r0, r5, lsr #0x10
- strb r0, [r4, #0x39]
- mov r0, r5, lsr #0x18
- strb r0, [r4, #0x38]
- ldr r0, [sp, #0x10]
- ldr r3, [r3, #0x0]
- blx r3
- ldr r0, [sp, #0x10]
- add r1, sp, #0x10
- ldr r3, [r0, #0x0]
- mov r0, #0x0
- mov r2, r3, lsr #0x18
- strb r2, [r6, #0x0]
- mov r2, r3, lsr #0x10
- strb r2, [r6, #0x1]
- mov r2, r3, lsr #0x8
- strb r2, [r6, #0x2]
- strb r3, [r6, #0x3]
- ldr r3, [sp, #0x10]
- mov r2, #0x4
- ldr r4, [r3, #0x4]
- mov r3, r4, lsr #0x18
- strb r3, [r6, #0x4]
- mov r3, r4, lsr #0x10
- strb r3, [r6, #0x5]
- mov r3, r4, lsr #0x8
- strb r3, [r6, #0x6]
- strb r4, [r6, #0x7]
- ldr r3, [sp, #0x10]
- ldr r4, [r3, #0x8]
- mov r3, r4, lsr #0x18
- strb r3, [r6, #0x8]
- mov r3, r4, lsr #0x10
- strb r3, [r6, #0x9]
- mov r3, r4, lsr #0x8
- strb r3, [r6, #0xa]
- strb r4, [r6, #0xb]
- ldr r3, [sp, #0x10]
- ldr r4, [r3, #0xc]
- mov r3, r4, lsr #0x18
- strb r3, [r6, #0xc]
- mov r3, r4, lsr #0x10
- strb r3, [r6, #0xd]
- mov r3, r4, lsr #0x8
- strb r3, [r6, #0xe]
- strb r4, [r6, #0xf]
- ldr r3, [sp, #0x10]
- ldr r4, [r3, #0x10]
- mov r3, r4, lsr #0x18
- strb r3, [r6, #0x10]
- mov r3, r4, lsr #0x10
- strb r3, [r6, #0x11]
- mov r3, r4, lsr #0x8
- strb r3, [r6, #0x12]
- strb r4, [r6, #0x13]
- ldr r3, [sp, #0x10]
- str r0, [r3, #0x1c]
- bl MIi_CpuClear32
- ldmia sp!, {r4-r6,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020D3008: .word Unk_02106A00 ; = 0x02106A00
-
- arm_func_start MATH_SHA1Update
-MATH_SHA1Update: ; 0x020D300C
- stmdb sp!, {r4-r8,lr}
- mov r8, r0
- movs r6, r2
- mov r7, r1
- add r5, r8, #0x20
- ldmeqia sp!, {r4-r8,lr}
- bxeq lr
- ldr r0, [r8, #0x14]
- add r1, r0, r6, lsl #0x3
- cmp r1, r0
- ldrcc r0, [r8, #0x18]
- addcc r0, r0, #0x1
- strcc r0, [r8, #0x18]
- ldr r0, [r8, #0x18]
- add r0, r0, r6, lsr #0x1d
- str r0, [r8, #0x18]
- str r1, [r8, #0x14]
- ldr r1, [r8, #0x1c]
- cmp r1, #0x0
- beq _020D30CC
- add r0, r1, r6
- cmp r0, #0x40
- blo _020D30A8
- rsb r4, r1, #0x40
- mov r0, r7
- mov r2, r4
- add r1, r5, r1
- bl MI_CpuCopy8
- ldr r1, _020D3164 ; =0x02106A00
- mov r0, r8
- ldr r3, [r1, #0x0]
- mov r1, r5
- mov r2, #0x40
- sub r6, r6, r4
- add r7, r7, r4
- blx r3
- mov r0, #0x0
- str r0, [r8, #0x1c]
- b _020D30CC
-_020D30A8:
- mov r0, r7
- mov r2, r6
- add r1, r5, r1
- bl MI_CpuCopy8
- ldr r0, [r8, #0x1c]
- add r0, r0, r6
- str r0, [r8, #0x1c]
- ldmia sp!, {r4-r8,lr}
- bx lr
-_020D30CC:
- cmp r6, #0x40
- blo _020D313C
- bic r4, r6, #0x3f
- sub r6, r6, r4
- ands r0, r7, #0x3
- bne _020D3104
- ldr r1, _020D3164 ; =0x02106A00
- mov r0, r8
- ldr r3, [r1, #0x0]
- mov r1, r7
- mov r2, r4
- blx r3
- add r7, r7, r4
- b _020D313C
-_020D3104:
- mov r0, r7
- mov r1, r5
- mov r2, #0x40
- bl MI_CpuCopy8
- ldr r1, _020D3164 ; =0x02106A00
- mov r0, r8
- ldr r3, [r1, #0x0]
- mov r1, r5
- mov r2, #0x40
- add r7, r7, #0x40
- blx r3
- sub r4, r4, #0x40
- cmp r4, #0x0
- bgt _020D3104
-_020D313C:
- str r6, [r8, #0x1c]
- cmp r6, #0x0
- ldmeqia sp!, {r4-r8,lr}
- bxeq lr
- mov r0, r7
- mov r1, r5
- mov r2, r6
- bl MI_CpuCopy8
- ldmia sp!, {r4-r8,lr}
- bx lr
- .balign 4
-_020D3164: .word Unk_02106A00 ; = 0x02106A00
-
- arm_func_start MATH_SHA1Init
-MATH_SHA1Init: ; 0x020D3168
- ldr r1, _020D31A4 ; =0x67452301
- ldr r2, _020D31A8 ; =0xEFCDAB89
- str r1, [r0, #0x0]
- ldr r1, _020D31AC ; =0x98BADCFE
- str r2, [r0, #0x4]
- ldr r2, _020D31B0 ; =0x10325476
- str r1, [r0, #0x8]
- ldr r1, _020D31B4 ; =0xC3D2E1F0
- str r2, [r0, #0xc]
- str r1, [r0, #0x10]
- mov r1, #0x0
- str r1, [r0, #0x14]
- str r1, [r0, #0x18]
- str r1, [r0, #0x1c]
- bx lr
- .balign 4
-_020D31A4: .word 0x67452301
-_020D31A8: .word 0xEFCDAB89
-_020D31AC: .word 0x98BADCFE
-_020D31B0: .word 0x10325476
-_020D31B4: .word 0xC3D2E1F0
-
- arm_func_start MATHi_CalcHMAC
-MATHi_CalcHMAC: ; 0x020D31B8
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0xc4
- ldr r5, [sp, #0xe0]
- ldr r4, [sp, #0xe4]
- movs r9, r0
- mov r8, r1
- mov r7, r2
- mov r6, r3
- addeq sp, sp, #0xc4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- cmp r8, #0x0
- addeq sp, sp, #0xc4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- cmp r7, #0x0
- addeq sp, sp, #0xc4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- cmp r6, #0x0
- addeq sp, sp, #0xc4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- cmp r5, #0x0
- addeq sp, sp, #0xc4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- cmp r4, #0x0
- addeq sp, sp, #0xc4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- ldr r0, [r4, #0x4]
- cmp r5, r0
- ble _020D3278
- ldr r0, [r4, #0x8]
- ldr r1, [r4, #0x10]
- blx r1
- ldr r0, [r4, #0x8]
- ldr r3, [r4, #0x14]
- mov r1, r6
- mov r2, r5
- blx r3
- ldr r0, [r4, #0x8]
- ldr r2, [r4, #0x18]
- add r1, sp, #0x0
- blx r2
- ldr r5, [r4, #0x0]
- add r6, sp, #0x0
-_020D3278:
- cmp r5, #0x0
- mov r0, #0x0
- ble _020D32A0
- add r2, sp, #0x40
-_020D3288:
- ldrb r1, [r6, r0]
- add r0, r0, #0x1
- cmp r0, r5
- eor r1, r1, #0x36
- strb r1, [r2], #0x1
- blt _020D3288
-_020D32A0:
- ldr r1, [r4, #0x4]
- cmp r0, r1
- bge _020D32CC
- add r1, sp, #0x40
- add r3, r1, r0
- mov r2, #0x36
-_020D32B8:
- strb r2, [r3], #0x1
- ldr r1, [r4, #0x4]
- add r0, r0, #0x1
- cmp r0, r1
- blt _020D32B8
-_020D32CC:
- ldr r0, [r4, #0x8]
- ldr r1, [r4, #0x10]
- blx r1
- ldr r0, [r4, #0x8]
- ldr r2, [r4, #0x4]
- ldr r3, [r4, #0x14]
- add r1, sp, #0x40
- blx r3
- ldr r0, [r4, #0x8]
- ldr r3, [r4, #0x14]
- mov r1, r8
- mov r2, r7
- blx r3
- ldr r0, [r4, #0x8]
- ldr r1, [r4, #0xc]
- ldr r2, [r4, #0x18]
- blx r2
- cmp r5, #0x0
- mov r2, #0x0
- ble _020D3338
- add r1, sp, #0x80
-_020D3320:
- ldrb r0, [r6, r2]
- add r2, r2, #0x1
- cmp r2, r5
- eor r0, r0, #0x5c
- strb r0, [r1], #0x1
- blt _020D3320
-_020D3338:
- ldr r0, [r4, #0x4]
- cmp r2, r0
- bge _020D3364
- add r0, sp, #0x80
- add r3, r0, r2
- mov r1, #0x5c
-_020D3350:
- strb r1, [r3], #0x1
- ldr r0, [r4, #0x4]
- add r2, r2, #0x1
- cmp r2, r0
- blt _020D3350
-_020D3364:
- ldr r0, [r4, #0x8]
- ldr r1, [r4, #0x10]
- blx r1
- ldr r0, [r4, #0x8]
- ldr r2, [r4, #0x4]
- ldr r3, [r4, #0x14]
- add r1, sp, #0x80
- blx r3
- ldr r0, [r4, #0x8]
- ldr r1, [r4, #0xc]
- ldr r2, [r4, #0x0]
- ldr r3, [r4, #0x14]
- blx r3
- ldr r0, [r4, #0x8]
- ldr r2, [r4, #0x18]
- mov r1, r9
- blx r2
- add sp, sp, #0xc4
- ldmia sp!, {r4-r9,lr}
- bx lr
- .balign 4
-_020D33B4: .word 0x00FF00FF
-_020D33B8: .word 0x5A827999
-_020D33BC: .word 0x6ED9EBA1
-_020D33C0: .word 0x8F1BBCDC
-_020D33C4: .word 0xCA62C1D6
-
- arm_func_start DGTi_hash2_arm4_small
-DGTi_hash2_arm4_small: ; 0x020D33C8
- stmdb sp!, {r4-r12,lr}
- ldmia r0, {r3,r9-r12}
- sub sp, sp, #0x84
- str r2, [sp, #0x80]
-_020D33D8:
- ldr r8, _020D33B8 ; =0x5A827999
- ldr r7, _020D33B4 ; =0x00FF00FF
- mov r6, sp
- mov r5, #0x0
-_020D33E8:
- ldr r4, [r1], #0x4
- add r2, r8, r12
- add r2, r2, r3, ror #0x1B
- and lr, r4, r7
- and r4, r7, r4, ror #0x18
- orr r4, r4, lr, ror #0x8
- str r4, [r6, #0x40]
- str r4, [r6], #0x4
- add r2, r2, r4
- eor r4, r10, r11
- and r4, r4, r9
- eor r4, r4, r11
- add r2, r2, r4
- mov r9, r9, ror #0x2
- mov r12, r11
- mov r11, r10
- mov r10, r9
- mov r9, r3
- mov r3, r2
- add r5, r5, #0x4
- cmp r5, #0x40
- blt _020D33E8
- mov r7, #0x0
- mov r6, sp
-_020D3448:
- ldr r2, [r6, #0x0]
- ldr r5, [r6, #0x8]
- ldr r4, [r6, #0x20]
- ldr lr, [r6, #0x34]
- eor r2, r2, r5
- eor r4, r4, lr
- eor r2, r2, r4
- mov r2, r2, ror #0x1F
- str r2, [r6, #0x40]
- str r2, [r6], #0x4
- add r2, r2, r12
- add r2, r2, r8
- add r2, r2, r3, ror #0x1B
- eor r4, r10, r11
- and r4, r4, r9
- eor r4, r4, r11
- add r2, r2, r4
- mov r9, r9, ror #0x2
- mov r12, r11
- mov r11, r10
- mov r10, r9
- mov r9, r3
- mov r3, r2
- add r7, r7, #0x4
- cmp r7, #0x10
- blt _020D3448
- ldr r8, _020D33BC ; =0x6ED9EBA1
- mov r7, #0x0
-_020D34B8:
- ldr r2, [r6, #0x0]
- ldr r4, [r6, #0x8]
- ldr lr, [r6, #0x20]
- ldr r5, [r6, #0x34]
- eor r2, r2, r4
- eor lr, lr, r5
- eor r2, r2, lr
- mov r2, r2, ror #0x1F
- str r2, [r6, #0x40]
- str r2, [r6], #0x4
- add r2, r2, r12
- add r2, r2, r8
- add r2, r2, r3, ror #0x1B
- eor lr, r9, r10
- eor lr, lr, r11
- add r2, r2, lr
- mov r9, r9, ror #0x2
- mov r12, r11
- mov r11, r10
- mov r10, r9
- mov r9, r3
- mov r3, r2
- add r7, r7, #0x1
- cmp r7, #0xc
- moveq r6, sp
- cmp r7, #0x14
- blt _020D34B8
- ldr r8, _020D33C0 ; =0x8F1BBCDC
- mov r7, #0x0
-_020D352C:
- ldr r2, [r6, #0x0]
- ldr lr, [r6, #0x8]
- ldr r5, [r6, #0x20]
- ldr r4, [r6, #0x34]
- eor r2, r2, lr
- eor r5, r5, r4
- eor r2, r2, r5
- mov r2, r2, ror #0x1F
- str r2, [r6, #0x40]
- str r2, [r6], #0x4
- add r2, r2, r12
- add r2, r2, r8
- add r2, r2, r3, ror #0x1B
- orr r5, r9, r10
- and r5, r5, r11
- and r4, r9, r10
- orr r5, r5, r4
- add r2, r2, r5
- mov r9, r9, ror #0x2
- mov r12, r11
- mov r11, r10
- mov r10, r9
- mov r9, r3
- mov r3, r2
- add r7, r7, #0x1
- cmp r7, #0x8
- moveq r6, sp
- cmp r7, #0x14
- blt _020D352C
- ldr r8, _020D33C4 ; =0xCA62C1D6
- mov r7, #0x0
-_020D35A8:
- ldr r2, [r6, #0x0]
- ldr r5, [r6, #0x8]
- ldr r4, [r6, #0x20]
- ldr lr, [r6, #0x34]
- eor r2, r2, r5
- eor r4, r4, lr
- eor r2, r2, r4
- mov r2, r2, ror #0x1F
- str r2, [r6, #0x40]
- str r2, [r6], #0x4
- add r2, r2, r12
- add r2, r2, r8
- add r2, r2, r3, ror #0x1B
- eor r4, r9, r10
- eor r4, r4, r11
- add r2, r2, r4
- mov r9, r9, ror #0x2
- mov r12, r11
- mov r11, r10
- mov r10, r9
- mov r9, r3
- mov r3, r2
- add r7, r7, #0x1
- cmp r7, #0x4
- moveq r6, sp
- cmp r7, #0x14
- blt _020D35A8
- ldmia r0, {r2,r4,r6-r7,lr}
- add r3, r3, r2
- add r9, r9, r4
- add r10, r10, r6
- add r11, r11, r7
- add r12, r12, lr
- stmia r0, {r3,r9-r12}
- ldr lr, [sp, #0x80]
- subs lr, lr, #0x40
- str lr, [sp, #0x80]
- bgt _020D33D8
- add sp, sp, #0x84
- ldmia sp!, {r4-r12,pc}
diff --git a/arm9/asm/libfs.s b/arm9/asm/libfs.s
deleted file mode 100644
index d9b791b8..00000000
--- a/arm9/asm/libfs.s
+++ /dev/null
@@ -1,3011 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .section .text
-
- arm_func_start FSi_TranslateCommand
-FSi_TranslateCommand:
- stmdb sp!, {r4-r8,lr}
- mov r8, r0
- ldr r0, [r8, #0xc]
- mov r7, r1
- mov r1, #0x1
- ldr r5, [r8, #0x8]
- mov r4, r1, lsl r7
- ands r0, r0, #0x4
- moveq r1, #0x0
- cmp r1, #0x0
- ldrne r0, [r5, #0x1c]
- orrne r0, r0, #0x200
- strne r0, [r5, #0x1c]
- ldreq r0, [r5, #0x1c]
- orreq r0, r0, #0x100
- streq r0, [r5, #0x1c]
- ldr r0, [r5, #0x58]
- ands r0, r0, r4
- beq _020CFFE4
- ldr r2, [r5, #0x54]
- mov r0, r8
- mov r1, r7
- blx r2
- mov r6, r0
- cmp r6, #0x8
- addls pc, pc, r6, lsl #0x2
- b _020CFFE8
-_020CFFA0:
- b _020CFFC4
- b _020CFFC4
- b _020CFFE8
- b _020CFFE8
- b _020CFFC4
- b _020CFFE8
- b _020CFFE8
- b _020CFFE8
- b _020CFFCC
-_020CFFC4:
- str r6, [r8, #0x14]
- b _020CFFE8
-_020CFFCC:
- ldr r1, [r5, #0x58]
- mvn r0, r4
- and r0, r1, r0
- str r0, [r5, #0x58]
- mov r6, #0x7
- b _020CFFE8
-_020CFFE4:
- mov r6, #0x7
-_020CFFE8:
- cmp r6, #0x7
- bne _020D0004
- ldr r1, _020D00AC ; =0x02103F80
- mov r0, r8
- ldr r1, [r1, r7, lsl #0x2]
- blx r1
- mov r6, r0
-_020D0004:
- cmp r6, #0x6
- bne _020D0060
- ldr r0, [r8, #0xc]
- ands r0, r0, #0x4
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- beq _020D00A0
- bl OS_DisableInterrupts
- ldr r1, [r5, #0x1c]
- mov r4, r0
- ands r0, r1, #0x200
- beq _020D0050
- add r6, r5, #0xc
-_020D003C:
- mov r0, r6
- bl OS_SleepThread
- ldr r0, [r5, #0x1c]
- ands r0, r0, #0x200
- bne _020D003C
-_020D0050:
- mov r0, r4
- ldr r6, [r8, #0x14]
- bl OS_RestoreInterrupts
- b _020D00A0
-_020D0060:
- ldr r0, [r8, #0xc]
- ands r0, r0, #0x4
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- ldrne r0, [r5, #0x1c]
- bicne r0, r0, #0x200
- strne r0, [r5, #0x1c]
- strne r6, [r8, #0x14]
- bne _020D00A0
- ldr r1, [r5, #0x1c]
- mov r0, r8
- bic r2, r1, #0x100
- mov r1, r6
- str r2, [r5, #0x1c]
- bl FSi_ReleaseCommand
-_020D00A0:
- mov r0, r6
- ldmia sp!, {r4-r8,lr}
- bx lr
- .balign 4
-_020D00AC: .word 0x02103F80
-
- arm_func_start FSi_ReleaseCommand
-FSi_ReleaseCommand:
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- mov r5, r1
- bl OS_DisableInterrupts
- ldr r1, [r6, #0x0]
- mov r4, r0
- ldr r0, [r6, #0x4]
- cmp r1, #0x0
- strne r0, [r1, #0x4]
- cmp r0, #0x0
- strne r1, [r0, #0x0]
- mov r0, #0x0
- str r0, [r6, #0x0]
- ldr r1, [r6, #0x0]
- add r0, r6, #0x18
- str r1, [r6, #0x4]
- ldr r1, [r6, #0xc]
- bic r1, r1, #0x4f
- str r1, [r6, #0xc]
- str r5, [r6, #0x14]
- bl OS_WakeupThread
- mov r0, r4
- bl OS_RestoreInterrupts
- ldmia sp!, {r4-r6,lr}
- bx lr
-
- arm_func_start FSi_CloseFileCommand
-FSi_CloseFileCommand: ; 0x020D0114
- mov r0, #0x0
- bx lr
-
- arm_func_start FSi_OpenFileDirectCommand
-FSi_OpenFileDirectCommand: ; 0x020D011C
- ldr r1, [r0, #0x30]
- str r1, [r0, #0x24]
- ldr r1, [r0, #0x30]
- str r1, [r0, #0x2c]
- ldr r1, [r0, #0x34]
- str r1, [r0, #0x28]
- ldr r1, [r0, #0x38]
- str r1, [r0, #0x20]
- mov r0, #0x0
- bx lr
-
- arm_func_start FSi_OpenFileFastCommand
-FSi_OpenFileFastCommand: ; 0x020D0144
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x14
- mov r5, r0
- ldr r1, [r5, #0x8]
- ldr r4, [r5, #0x34]
- ldr r0, [r1, #0x30]
- mov r2, r4, lsl #0x3
- cmp r2, r0
- addcs sp, sp, #0x14
- movcs r0, #0x1
- ldmcsia sp!, {r4-r5,lr}
- bxcs lr
- str r1, [sp, #0x8]
- ldr r1, [r1, #0x2c]
- add r0, sp, #0x8
- add r3, r1, r2
- add r1, sp, #0x0
- mov r2, #0x8
- str r3, [sp, #0xc]
- bl FSi_ReadTable
-_020D0194:
- cmp r0, #0
- addne sp, sp, #0x14
- ldmneia sp!, {r4-r5,lr}
- bxne lr
- ldr r1, [sp]
- mov r0, r5
- str r1, [r5, #0x30]
- ldr r2, [sp, #0x4]
- mov r1, #7
- str r2, [r5, #0x34]
- str r4, [r5, #0x38]
- bl FSi_TranslateCommand
- add sp, sp, #0x14
- ldmia sp!, {r4-r5,lr}
- bx lr
-
- arm_func_start FSi_GetPathCommand
-FSi_GetPathCommand: ; 0x020D01D0
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0xe4
- mov r4, r0
- ldr r1, [r4, #0x8]
- add r0, sp, #0x98
- add r11, r4, #0x30
- str r1, [sp, #0x0]
- bl FS_InitFile
- ldr r0, [r4, #0x8]
- str r0, [sp, #0xa0]
- ldr r0, [r4, #0xc]
- ands r0, r0, #0x20
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- ldrneh r5, [r4, #0x24]
- movne r4, #0x10000
- bne _020D02BC
- ldrh r0, [r11, #0x8]
- ldr r4, [r4, #0x20]
- cmp r0, #0x0
- ldrneh r5, [r11, #0xa]
- bne _020D02BC
- mov r10, #0x0
- mov r9, r10
- mov r5, #0x10000
- add r8, sp, #0x98
- mov r6, #0x3
- mov r7, #0x1
-_020D0244:
- mov r0, r8
- mov r1, r10
- bl FSi_SeekDirDirect
- add r2, sp, #0x4
- cmp r10, #0x0
- mov r0, r8
- mov r1, r6
- ldreq r9, [sp, #0xc4]
- str r2, [sp, #0xc8]
- str r7, [sp, #0xcc]
- bl FSi_TranslateCommand
-_020D0270:
- cmp r0, #0x0
- bne _020D02A8
-_020D0278:
- ldr r0, [sp, #0x10]
- cmp r0, #0x0
- bne _020D0294
- ldr r0, [sp, #0x8]
- cmp r0, r4
- ldreqh r5, [sp, #0xbc]
- beq _020D02A8
-_020D0294:
- mov r0, r8
- mov r1, r6
- bl FSi_TranslateCommand
- cmp r0, #0x0
- beq _020D0278
-_020D02A8:
- cmp r5, #0x10000
- bne _020D02BC
- add sl, sl, #0x1
- cmp sl, r9
- bcc _020D0244
-_020D02BC:
- cmp r5, #0x10000
- moveq r0, #0x0
- streqh r0, [r11, #0x8]
- addeq sp, sp, #0xe4
- moveq r0, #0x1
- ldmeqia sp!, {r4-r11,lr}
- bxeq lr
- ldrh r0, [r11, #0x8]
- cmp r0, #0x0
- bne _020D03B8
- ldr r0, [sp, #0x0]
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- cmp r0, #0xff
- addls r9, r1, #0x1
- bls _020D0308
- cmp r0, #0xff00
- addls r9, r1, #0x2
- addhi r9, r1, #0x3
-_020D0308:
- cmp r4, #0x10000
- ldrne r0, [sp, #0x14]
- add r9, r9, #0x2
- addne r9, r9, r0
- mov r10, r5
- cmp r5, #0x0
- beq _020D03AC
- add r0, sp, #0x98
- mov r1, r5
- bl FSi_SeekDirDirect
- add r8, sp, #0x98
- mov r6, #0x3
- mov r7, #0x1
-_020D033C:
- ldr r1, [sp, #0xc4]
- mov r0, r8
- bl FSi_SeekDirDirect
- add r2, sp, #0x4
- mov r0, r8
- mov r1, r6
- str r2, [sp, #0xc8]
- str r7, [sp, #0xcc]
- bl FSi_TranslateCommand
-_020D0360:
- cmp r0, #0x0
- bne _020D03A0
-_020D0368:
- ldr r0, [sp, #0x10]
- cmp r0, #0x0
- beq _020D038C
- ldrh r0, [sp, #0x8]
- cmp r0, sl
- ldreq r0, [sp, #0x14]
- addeq r0, r0, #0x1
- addeq r9, r9, r0
- beq _020D03A0
-_020D038C:
- mov r0, r8
- mov r1, r6
- bl FSi_TranslateCommand
- cmp r0, #0x0
- beq _020D0368
-_020D03A0:
- ldrh sl, [sp, #0xbc]
- cmp sl, #0x0
- bne _020D033C
-_020D03AC:
- add r0, r9, #0x1
- strh r0, [r11, #0x8]
- strh r5, [r11, #0xa]
-_020D03B8:
- ldr r7, [r11, #0x0]
- cmp r7, #0x0
- addeq sp, sp, #0xe4
- moveq r0, #0x0
- ldmeqia sp!, {r4-r11,lr}
- bxeq lr
- ldrh r6, [r11, #0x8]
- ldr r0, [r11, #0x4]
- cmp r0, r6
- addcc sp, sp, #0xe4
- movcc r0, #0x1
- ldmccia sp!, {r4-r11,lr}
- bxcc lr
- ldr r0, [sp, #0x0]
- mov r9, #0x0
- ldr r0, [r0, #0x0]
- cmp r0, #0xff
- movls r8, #0x1
- bls _020D0410
- cmp r0, #0xff00
- movls r8, #0x2
- movhi r8, #0x3
-_020D0410:
- ldr r0, [sp, #0x0]
- mov r1, r7
- mov r2, r8
- bl MI_CpuCopy8
- add r1, r9, r8
- ldr r0, _020D058C ; =0x0210682C
- add r1, r7, r1
- mov r2, #0x2
- bl MI_CpuCopy8
- add r0, sp, #0x98
- mov r1, r5
- bl FSi_SeekDirDirect
- cmp r4, #0x10000
- beq _020D04C4
- add r3, sp, #0x4
- mov r2, #0x0
- add r0, sp, #0x98
- mov r1, #0x3
- str r3, [sp, #0xc8]
- str r2, [sp, #0xcc]
- bl FSi_TranslateCommand
-_020D0464:
- cmp r0, #0x0
- bne _020D04A0
- add r9, sp, #0x98
- mov r8, #0x3
-_020D0474:
- ldr r0, [sp, #0x10]
- cmp r0, #0x0
- bne _020D048C
- ldr r0, [sp, #0x8]
- cmp r0, r4
- beq _020D04A0
-_020D048C:
- mov r0, r9
- mov r1, r8
- bl FSi_TranslateCommand
- cmp r0, #0x0
- beq _020D0474
-_020D04A0:
- ldr r0, [sp, #0x14]
- add r1, r7, r6
- add r4, r0, #0x1
- add r0, sp, #0x18
- mov r2, r4
- sub r1, r1, r4
- bl MI_CpuCopy8
- sub r6, r6, r4
- b _020D04D4
-_020D04C4:
- add r0, r7, r6
- mov r1, #0x0
- strb r1, [r0, #-0x1]
- sub r6, r6, #0x1
-_020D04D4:
- cmp r5, #0x0
- beq _020D057C
- add r10, sp, #0x98
- add r11, sp, #0x4
- mov r4, #0x3
- mov r9, #0x0
- mov r8, #0x2f
-_020D04F0:
- ldr r1, [sp, #0xc4]
- mov r0, r10
- bl FSi_SeekDirDirect
- add r2, r7, r6
- mov r0, r10
- mov r1, r4
- str r11, [sp, #0xc8]
- str r9, [sp, #0xcc]
- strb r8, [r2, #-0x1]
- sub r6, r6, #0x1
- bl FSi_TranslateCommand
-_020D051C:
- cmp r0, #0x0
- bne _020D0570
-_020D0524:
- ldr r0, [sp, #0x10]
- cmp r0, #0x0
- beq _020D055C
- ldrh r0, [sp, #0x8]
- cmp r0, r5
- bne _020D055C
- ldr r5, [sp, #0x14]
- add r1, r7, r6
- add r0, sp, #0x18
- mov r2, r5
- sub r1, r1, r5
- bl MI_CpuCopy8
- sub r6, r6, r5
- b _020D0570
-_020D055C:
- mov r0, sl
- mov r1, r4
- bl FSi_TranslateCommand
- cmp r0, #0x0
- beq _020D0524
-_020D0570:
- ldrh r5, [sp, #0xbc]
- cmp r5, #0x0
- bne _020D04F0
-_020D057C:
- mov r0, #0x0
- add sp, sp, #0xe4
- ldmia sp!, {r4-r11,lr}
- bx lr
- .balign 4
-_020D058C: .word 0x0210682C
-
- arm_func_start FSi_FindPathCommand
-FSi_FindPathCommand: ; 0x020D0590
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x9c
- mov r10, r0
- ldr r2, [r10, #0x40]
- ldr r9, [r10, #0x3c]
- mov r1, #0x2
- str r2, [sp, #0x0]
- bl FSi_TranslateCommand
- ldrb r1, [r9, #0x0]
- cmp r1, #0x0
- beq _020D0780
- mov r0, #0x2
- add r11, sp, #0x1c
- mov r4, #0x3
- mov r5, #0x1
- mov r6, #0x0
- str r0, [sp, #0x4]
-_020D05D4:
- mov r7, r6
- b _020D05E0
-_020D05DC:
- add r7, r7, #0x1
-_020D05E0:
- ldrb r8, [r9, r7]
- mov r0, r6
- cmp r8, #0x0
- beq _020D0600
- cmp r8, #0x2f
- beq _020D0600
- cmp r8, #0x5c
- movne r0, r5
-_020D0600:
- cmp r0, #0x0
- bne _020D05DC
- cmp r8, #0x0
- bne _020D061C
- ldr r0, [sp, #0x0]
- cmp r0, #0x0
- beq _020D0620
-_020D061C:
- mov r8, r5
-_020D0620:
- cmp r7, #0x0
- addeq sp, sp, #0x9c
- moveq r0, #0x1
- ldmeqia sp!, {r4-r11,lr}
- bxeq lr
- cmp r1, #0x2e
- bne _020D068C
- cmp r7, #0x1
- addeq r9, r9, #0x1
- beq _020D0764
- ldrb r0, [r9, #0x1]
- cmp r7, #0x2
- moveq r1, r5
- movne r1, r6
- cmp r0, #0x2e
- moveq r0, r5
- movne r0, r6
- ands r0, r1, r0
- beq _020D068C
- ldrh r0, [r10, #0x24]
- cmp r0, #0x0
- beq _020D0684
- ldr r1, [r10, #0x2c]
- mov r0, r10
- bl FSi_SeekDirDirect
-_020D0684:
- add r9, r9, #0x2
- b _020D0764
-_020D068C:
- cmp r7, #0x7f
- addgt sp, sp, #0x9c
- movgt r0, #0x1
- ldmgtia sp!, {r4-r11,lr}
- bxgt lr
- add r0, sp, #0x8
- str r0, [r10, #0x30]
- str r6, [r10, #0x34]
-_020D06AC:
- mov r0, r10
- mov r1, r4
- bl FSi_TranslateCommand
-_020D06B8:
- cmp r0, #0x0
- addne sp, sp, #0x9c
- movne r0, #0x1
- ldmneia sp!, {r4-r11,lr}
- bxne lr
- ldr r0, [sp, #0x14]
- cmp r8, r0
- bne _020D06AC
- ldr r0, [sp, #0x18]
- cmp r7, r0
- bne _020D06AC
- mov r0, r9
- mov r1, fp
- mov r2, r7
- bl FSi_StrNICmp
- cmp r0, #0x0
- bne _020D06AC
- cmp r8, #0x0
- beq _020D0728
- add r0, sp, #0x8
- add r3, sl, #0x30
- ldmia r0, {r0, r1, r2}
- stmia r3, {r0, r1, r2}
- ldr r1, [sp, #0x4]
- mov r0, sl
- add r9, r9, r7
- bl FSi_TranslateCommand
- b _020D0764
-_020D0728:
- ldr r0, [sp]
- cmp r0, #0x0
- addne sp, sp, #0x9c
- movne r0, #0x1
- ldmneia sp!, {r4-r11,lr}
- bxne lr
- ldr r3, [sl, #0x44]
- ldr r2, [sp, #0x8]
- ldr r1, [sp, #0xC]
- add sp, sp, #0x9c
- str r2, [r3]
- str r1, [r3, #0x4]
- mov r0, #0x0
- ldmia sp!, {r4-r11,lr}
- bx lr
-_020D0764:
- ldrb r0, [r9, #0x0]
- cmp r0, #0x0
- movne r0, r5
- moveq r0, r6
- ldrb r1, [r9, r0]!
- cmp r1, #0x0
- bne _020D05D4
-_020D0780:
- ldr r0, [sp, #0x0]
- cmp r0, #0x0
- moveq r0, #0x1
- addne r0, r10, #0x20
- ldrne r3, [r10, #0x44]
- ldmneia r0, {r0-r2}
- stmneia r3, {r0-r2}
- movne r0, #0x0
- add sp, sp, #0x9c
- ldmia sp!, {r4-r11,lr}
- bx lr
-
- arm_func_start FSi_ReadDirCommand
-FSi_ReadDirCommand: ; 0x020D07AC
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0xc
- mov r5, r0
- ldr r4, [r5, #0x30]
- ldr r1, [r5, #0x8]
- add r0, sp, #0x4
- str r1, [sp, #0x4]
- ldr r3, [r5, #0x28]
- add r1, sp, #0x0
- mov r2, #0x1
- str r3, [sp, #0x8]
- bl FSi_ReadTable
-_020D07DC:
- cmp r0, #0x0
- addne sp, sp, #0xC
- ldmneia sp!, {r4-r5,lr}
- bxne lr
- ldrb r1, [sp]
- and r2, r1, #0x7F
- mov r1, r1, asr #0x7
- str r2, [r4, #0x10]
- and r1, r1, #0x1
- str r1, [r4, #0xC]
- ldr r2, [r4, #0x10]
- cmp r2, #0x0
- addeq sp, sp, #0xC
- moveq r0, #0x1
- ldmeqia sp!, {r4-r5,lr}
- bxeq lr
- ldr r1, [r5, #0x34]
- cmp r1, #0x0
- bne _020D0858
- add r0, sp, #0x4
- add r1, r4, #0x14
- bl FSi_ReadTable
- cmp r0, #0x0
- addne sp, sp, #0xC
- ldmneia sp!, {r4-r5,lr}
- bxne lr
- ldr r1, [r4, #0x10]
- mov r2, #0x0
- add r1, r4, r1
- strb r2, [r1, #0x14]
- b _020D0864
-_020D0858:
- ldr r1, [sp, #0x8]
- add r1, r1, r2
- str r1, [sp, #0x8]
-_020D0864:
- ldr r1, [r4, #0xC]
- cmp r1, #0x0
- beq _020D08B8
- add r0, sp, #0x4
- add r1, sp, #0x2
- mov r2, #0x2
- bl FSi_ReadTable
- cmp r0, #0x0
- addne sp, sp, #0xC
- ldmneia sp!, {r4-r5,lr}
- bxne lr
- ldr r2, [r5, #0x8]
- ldr r1, _020D08E8
- str r2, [r4]
- ldrh r3, [sp, #0x2]
- mov r2, #0x0
- and r1, r3, r1
- strh r1, [r4, #0x4]
- strh r2, [r4, #0x6]
- str r2, [r4, #0x8]
- b _020D08D4
-_020D08B8:
- ldr r1, [r5, #0x8]
- str r1, [r4]
- ldrh r1, [r5, #0x26]
- str r1, [r4, #0x4]
- ldrh r1, [r5, #0x26]
- add r1, r1, #0x1
- strh r1, [r5, #0x26]
-_020D08D4:
- ldr r1, [sp, #0x8]
- str r1, [r5, #0x28]
- add sp, sp, #0xC
- ldmia sp!, {r4-r5,lr}
- bx lr
-_020D08E8: .word 0x00000FFF
-
- arm_func_start FSi_SeekDirCommand
-FSi_SeekDirCommand: ; 0x020D08EC
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x10
- mov r6, r0
- ldr r5, [r6, #0x8]
- add r4, r6, #0x30
- str r5, [sp, #0x8]
- ldrh r1, [r4, #0x4]
- ldr r2, [r5, #0x34]
- add r0, sp, #0x8
- add r3, r2, r1, lsl #0x3
- add r1, sp, #0x0
- mov r2, #0x8
- str r3, [sp, #0xc]
- bl FSi_ReadTable
- movs r3, r0
- bne _020D0978
- add r12, r6, #0x20
- ldmia r4, {r0-r2}
- stmia r12, {r0-r2}
- ldrh r0, [r4, #0x6]
- cmp r0, #0x0
- bne _020D0968
- ldr r0, [r4, #0x8]
- cmp r0, #0x0
- bne _020D0968
- ldrh r0, [sp, #0x4]
- strh r0, [r6, #0x26]
- ldr r1, [r5, #0x34]
- ldr r0, [sp, #0x0]
- add r0, r1, r0
- str r0, [r6, #0x28]
-_020D0968:
- ldrh r1, [sp, #0x6]
- ldr r0, _020D0988 ; =0x00000FFF
- and r0, r1, r0
- str r0, [r6, #0x2c]
-_020D0978:
- mov r0, r3
- add sp, sp, #0x10
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020D0988: .word 0x00000FFF
-
- arm_func_start FSi_WriteFileCommand
-FSi_WriteFileCommand: ; 0x020D098C
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r2, [r0, #0x2c]
- ldr r3, [r0, #0x38]
- ldr lr, [r0, #0x8]
- ldr r1, [r0, #0x30]
- add r12, r2, r3
- str r12, [r0, #0x2c]
- ldr r12, [lr, #0x4c]
- mov r0, lr
- blx r12
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start FSi_ReadFileCommand
-FSi_ReadFileCommand: ; 0x020D09C4
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r2, [r0, #0x2c]
- ldr r3, [r0, #0x38]
- ldr lr, [r0, #0x8]
- ldr r1, [r0, #0x30]
- add r12, r2, r3
- str r12, [r0, #0x2c]
- ldr r12, [lr, #0x48]
- mov r0, lr
- blx r12
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start FSi_SeekDirDirect
-FSi_SeekDirDirect: ; 0x020D09FC
- ldr r3, [r0, #0xc]
- mov r2, #0x0
- orr r3, r3, #0x4
- str r3, [r0, #0xc]
- ldr r3, [r0, #0x8]
- ldr ip, _020D0A2C ; =FSi_TranslateCommand
- str r3, [r0, #0x30]
- str r2, [r0, #0x38]
- strh r2, [r0, #0x36]
- strh r1, [r0, #0x34]
- mov r1, #0x2
- bx r12
- .balign 4
-_020D0A2C: .word FSi_TranslateCommand
-
- arm_func_start FSi_ReadTable
-FSi_ReadTable:
- stmdb sp!, {r4-r8,lr}
- mov r7, r0
- ldr r5, [r7, #0x0]
- mov r6, r2
- ldr r2, [r5, #0x1c]
- mov r0, r5
- orr r2, r2, #0x200
- str r2, [r5, #0x1c]
- ldr r2, [r7, #0x4]
- ldr r4, [r5, #0x50]
- mov r3, r6
- blx r4
- cmp r0, #0x0
- beq _020D0A7C
- cmp r0, #0x1
- beq _020D0A7C
- cmp r0, #0x6
- beq _020D0A8C
- b _020D0AC8
-_020D0A7C:
- ldr r1, [r5, #0x1c]
- bic r1, r1, #0x200
- str r1, [r5, #0x1c]
- b _020D0AC8
-_020D0A8C:
- bl OS_DisableInterrupts
- ldr r1, [r5, #0x1c]
- mov r4, r0
- ands r0, r1, #0x200
- beq _020D0AB8
- add r8, r5, #0xc
-_020D0AA4:
- mov r0, r8
- bl OS_SleepThread
- ldr r0, [r5, #0x1c]
- ands r0, r0, #0x200
- bne _020D0AA4
-_020D0AB8:
- mov r0, r4
- bl OS_RestoreInterrupts
- ldr r0, [r5, #0x24]
- ldr r0, [r0, #0x14]
-_020D0AC8:
- ldr r1, [r7, #0x4]
- add r1, r1, r6
- str r1, [r7, #0x4]
- ldmia sp!, {r4-r8,lr}
- bx lr
-
- arm_func_start FSi_StrNICmp
-FSi_StrNICmp: ; 0x020D0ADC
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- cmp r2, #0x0
- mov lr, #0x0
- bls _020D0B30
-_020D0AF0:
- ldrb r12, [r0, lr]
- ldrb r3, [r1, lr]
- sub r12, r12, #0x41
- cmp r12, #0x19
- sub r3, r3, #0x41
- addls r12, r12, #0x20
- cmp r3, #0x19
- addls r3, r3, #0x20
- cmp r12, r3
- addne sp, sp, #0x4
- subne r0, r12, r3
- ldmneia sp!, {lr}
- bxne lr
- add lr, lr, #0x1
- cmp lr, r2
- blo _020D0AF0
-_020D0B30:
- mov r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start FS_NotifyArchiveAsyncEnd
-FS_NotifyArchiveAsyncEnd: ; 0x020D0B40
- stmdb sp!, {r4-r6,lr}
- mov r4, r0
- ldr r0, [r4, #0x1c]
- mov r6, r1
- ands r0, r0, #0x100
- beq _020D0B8C
- ldr r2, [r4, #0x1c]
- ldr r0, [r4, #0x24]
- bic r2, r2, #0x100
- str r2, [r4, #0x1c]
- bl FSi_ReleaseCommand
- mov r0, r4
- bl FSi_NextCommand
-_020D0B74:
- cmp r0, #0x0
- ldmeqia sp!, {r4-r6,lr}
- bxeq lr
- bl FSi_ExecuteAsyncCommand
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020D0B8C:
- ldr r5, [r4, #0x24]
- bl OS_DisableInterrupts
- str r6, [r5, #0x14]
- ldr r1, [r4, #0x1c]
- mov r5, r0
- bic r1, r1, #0x200
- add r0, r4, #0xc
- str r1, [r4, #0x1c]
- bl OS_WakeupThread
- mov r0, r5
- bl OS_RestoreInterrupts
- ldmia sp!, {r4-r6,lr}
- bx lr
-
- arm_func_start FS_SetArchiveProc
-FS_SetArchiveProc: ; 0x020D0BC0
- cmp r2, #0x0
- moveq r1, #0x0
- beq _020D0BD4
- cmp r1, #0x0
- moveq r2, #0x0
-_020D0BD4:
- str r1, [r0, #0x54]
- str r2, [r0, #0x58]
- bx lr
-
- arm_func_start FS_ResumeArchive
-FS_ResumeArchive:
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r4, r0
- mov r6, #0x0
- bl OS_DisableInterrupts
- ldr r1, [r4, #0x1c]
- mov r5, r0
- ands r0, r1, #0x8
- movne r0, #0x1
- moveq r0, r6
- cmp r0, #0x0
- moveq r7, #0x1
- movne r7, #0x0
- cmp r7, #0x0
- bne _020D0C34
- ldr r1, [r4, #0x1c]
- mov r0, r4
- bic r1, r1, #0x8
- str r1, [r4, #0x1c]
- bl FSi_NextCommand
- mov r6, r0
-_020D0C34:
- mov r0, r5
- bl OS_RestoreInterrupts
-_020D0C3C:
- cmp r6, #0x0
- beq _020D0C4C
- mov r0, r6
- bl FSi_ExecuteAsyncCommand
-_020D0C4C:
- mov r0, r7
- add sp, sp, #0x4
- ldmia sp!, {r4-r7, lr}
- bx lr
-
- arm_func_start FS_SuspendArchive
-FS_SuspendArchive: ; 0x020D0C5C
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r6, r0
- bl OS_DisableInterrupts
- ldr r1, [r6, #0x1c]
- mov r4, r0
- ands r0, r1, #0x8
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- moveq r5, #0x1
- movne r5, #0x0
- cmp r5, #0x0
- beq _020D0CD4
- ldr r0, [r6, #0x1c]
- ands r0, r0, #0x10
- beq _020D0CC8
- ldr r0, [r6, #0x1c]
- orr r0, r0, #0x40
- str r0, [r6, #0x1c]
- add r7, r6, #0x14
-_020D0CB0:
- mov r0, r7
- bl OS_SleepThread
- ldr r0, [r6, #0x1c]
- ands r0, r0, #0x40
- bne _020D0CB0
- b _020D0CD4
-_020D0CC8:
- ldr r0, [r6, #0x1c]
- orr r0, r0, #0x8
- str r0, [r6, #0x1c]
-_020D0CD4:
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, r5
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,lr}
- bx lr
-
- arm_func_start FS_UnloadArchiveTables
-FS_UnloadArchiveTables: ; 0x020D0CEC
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- mov r5, r0
- ldr r0, [r5, #0x1c]
- mov r4, #0x0
- ands r0, r0, #0x2
- movne r0, #0x1
- moveq r0, r4
- cmp r0, #0x0
- beq _020D0D74
- mov r0, r5
- bl FS_SuspendArchive
- ldr r1, [r5, #0x1c]
- ands r1, r1, #0x4
- movne r1, #0x1
- moveq r1, #0x0
- cmp r1, #0x0
- beq _020D0D64
- ldr r2, [r5, #0x1c]
- mov r1, #0x0
- bic r2, r2, #0x4
- str r2, [r5, #0x1c]
- ldr r4, [r5, #0x44]
- str r1, [r5, #0x44]
- ldr r1, [r5, #0x3c]
- str r1, [r5, #0x2c]
- ldr r1, [r5, #0x40]
- str r1, [r5, #0x34]
- ldr r1, [r5, #0x48]
- str r1, [r5, #0x50]
-_020D0D64:
- cmp r0, #0x0
- beq _020D0D74
- mov r0, r5
- bl FS_ResumeArchive
-_020D0D74:
- mov r0, r4
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
-
- arm_func_start FUN_020D0D84
-FUN_020D0D84: ; 0x020D0D84
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4c
- mov r7, r0
- ldr r3, [r7, #0x30]
- ldr r0, [r7, #0x38]
- mov r6, r1
- add r0, r3, r0
- add r0, r0, #0x20
- add r0, r0, #0x1f
- bic r5, r0, #0x1f
- cmp r5, r2
- bhi _020D0E9C
- add r1, r6, #0x1f
- add r0, sp, #0x4
- bic r4, r1, #0x1f
- bl FS_InitFile
- ldr r2, [r7, #0x2c]
- mvn r0, #0x0
- str r0, [sp, #0x0]
- ldr r3, [r7, #0x30]
- add r0, sp, #0x4
- mov r1, r7
- add r3, r2, r3
- bl FS_OpenFileDirect
-_020D0DE4:
- cmp r0, #0x0
- beq _020D0E1C
- ldr r2, [r7, #0x30]
- add r0, sp, #0x4
- mov r1, r4
- bl FS_ReadFile
- cmp r0, #0x0
- bge _020D0E14
- ldr r2, [r7, #0x30]
- mov r0, r4
- mov r1, #0x0
- bl MI_CpuFill8
-_020D0E14:
- add r0, sp, #0x4
- bl FS_CloseFile
-_020D0E1C:
- str r4, [r7, #0x2C]
- ldr ip, [r7, #0x30]
- ldr r2, [r7, #0x34]
- mvn r0, #0x0
- str r0, [sp]
- ldr r3, [r7, #0x38]
- add r0, sp, #0x4
- mov r1, r7
- add r3, r2, r3
- add r4, r4, ip
- bl FS_OpenFileDirect
- cmp r0, #0x0
- beq _020D0E80
- ldr r2, [r7, #0x38]
- add r0, sp, #0x4
- mov r1, r4
- bl FS_ReadFile
- cmp r0, #0x0
- bge _020D0E78
- ldr r2, [r7, #0x38]
- mov r0, r4
- mov r1, #0x0
- bl MI_CpuFill8
-_020D0E78:
- add r0, sp, #0x4
- bl FS_CloseFile
-_020D0E80:
- str r4, [r7, #0x34]
- ldr r0, _020D0EAC
- str r6, [r7, #0x44]
- str r0, [r7, #0x50]
- ldr r0, [r7, #0x1C]
- orr r0, r0, #0x4
- str r0, [r7, #0x1C]
-_020D0E9C:
- mov r0, r5
- add sp, sp, #0x4C
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020D0EAC:
- .word FSi_ReadMemoryCore
-
- arm_func_start FUN_020D0EB0
-FUN_020D0EB0: ; 0x020D0EB0
- stmdb sp!, {r4-r8,lr}
- mov r5, r0
- bl OS_DisableInterrupts
- ldr r1, [r5, #0x1c]
- mov r4, r0
- ands r0, r1, #0x2
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- beq _020D0F64
- mov r0, r5
- ldr r1, [r5, #0x1c]
- bl FS_SuspendArchive
- ldr r1, [r5, #0x1c]
- mov r7, r0
- orr r0, r1, #0x80
- str r0, [r5, #0x1c]
- ldr r0, [r5, #0x24]
- cmp r0, #0x0
- beq _020D0F1C
- mov r6, #0x3
-_020D0F04:
- ldr r8, [r0, #0x4]
- mov r1, r6
- bl FSi_ReleaseCommand
- mov r0, r8
- cmp r8, #0x0
- bne _020D0F04
-_020D0F1C:
- mov r0, #0x0
- str r0, [r5, #0x24]
- cmp r7, #0x0
- beq _020D0F34
- mov r0, r5
- bl FS_ResumeArchive
-_020D0F34:
- mov r0, #0x0
- str r0, [r5, #0x28]
- str r0, [r5, #0x2c]
- str r0, [r5, #0x30]
- str r0, [r5, #0x34]
- str r0, [r5, #0x38]
- str r0, [r5, #0x40]
- ldr r0, [r5, #0x40]
- str r0, [r5, #0x3c]
- ldr r0, [r5, #0x1c]
- bic r0, r0, #0xa2
- str r0, [r5, #0x1c]
-_020D0F64:
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, #0x1
- ldmia sp!, {r4-r8,lr}
- bx lr
-
- arm_func_start FS_LoadArchive
-FS_LoadArchive: ; 0x020D0F78
- str r1, [r0, #0x28]
- str r3, [r0, #0x30]
- str r2, [r0, #0x3c]
- ldr r1, [r0, #0x3c]
- ldr r2, [sp, #0x4]
- str r1, [r0, #0x2c]
- str r2, [r0, #0x38]
- ldr r1, [sp, #0x0]
- ldr r2, [sp, #0x8]
- str r1, [r0, #0x40]
- ldr r1, [r0, #0x40]
- cmp r2, #0x0
- str r1, [r0, #0x34]
- ldreq r2, _020D0FE8 ; =FSi_ReadMemCallback
- ldr r1, [sp, #0xc]
- str r2, [r0, #0x48]
- cmp r1, #0x0
- ldreq r1, _020D0FEC ; =FSi_WriteMemCallback
- str r1, [r0, #0x4c]
- ldr r2, [r0, #0x48]
- mov r1, #0x0
- str r2, [r0, #0x50]
- str r1, [r0, #0x44]
- ldr r1, [r0, #0x1c]
- orr r1, r1, #0x2
- str r1, [r0, #0x1c]
- mov r0, #0x1
- bx lr
- .balign 4
-_020D0FE8: .word FSi_ReadMemCallback
-_020D0FEC: .word FSi_WriteMemCallback
-
- arm_func_start FUN_020D0FF0
-FUN_020D0FF0: ; 0x020D0FF0
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r0, [r4, #0x0]
- cmp r0, #0x0
- ldmeqia sp!, {r4,lr}
- bxeq lr
- bl OS_DisableInterrupts
- ldr r2, [r4, #0x4]
- mov r3, #0x0
- cmp r2, #0x0
- ldrne r1, [r4, #0x8]
- strne r1, [r2, #0x8]
- ldr r2, [r4, #0x8]
- cmp r2, #0x0
- ldrne r1, [r4, #0x4]
- strne r1, [r2, #0x4]
- str r3, [r4, #0x0]
- str r3, [r4, #0x8]
- ldr r1, [r4, #0x8]
- ldr r2, _020D1080 ; =0x021D53EC
- str r1, [r4, #0x4]
- ldr r1, [r4, #0x1c]
- bic r1, r1, #0x1
- str r1, [r4, #0x1c]
- ldr r1, [r2, #0x0]
- cmp r1, r4
- bne _020D1074
- ldr r1, _020D1084 ; =0x021D53E8
- str r3, [r2, #0x8]
- ldr r1, [r1, #0x0]
- strh r3, [r2, #0x6]
- str r1, [r2, #0x0]
- strh r3, [r2, #0x4]
-_020D1074:
- bl OS_RestoreInterrupts
- ldmia sp!, {r4,lr}
- bx lr
- .balign 4
-_020D1080: .word 0x021D53EC
-_020D1084: .word 0x021D53E8
-
- arm_func_start FS_RegisterArchiveName
-FS_RegisterArchiveName: ; 0x020D1088
- stmdb sp!, {r4-r8,lr}
- mov r6, r1
- mov r5, r2
- mov r7, r0
- mov r8, #0x0
- bl OS_DisableInterrupts
- mov r4, r0
- mov r0, r6
- mov r1, r5
- bl FS_FindArchive
-_020D10B0:
- cmp r0, #0x0
- bne _020D112C
- ldr r1, _020D1140
- ldr r2, [r1]
- cmp r2, #0x0
- bne _020D10E8
- ldr r0, _020D1144
- mov r2, r8
- str r7, [r1]
- str r7, [r0]
- str r2, [r0, #0x8]
- strh r2, [r0, #0x6]
- strh r2, [r0, #0x4]
- b _020D110C
-_020D10E8:
- ldr r0, [r2, #0x4]
- cmp r0, #0x0
- beq _020D1104
-_020D10F4:
- mov r2, r0
- ldr r0, [r0, #0x4]
- cmp r0, #0x0
- bne _020D10F4
-_020D1104:
- str r7, [r2, #0x4]
- str r2, [r7, #0x8]
-_020D110C:
- mov r0, r6
- mov r1, r5
- bl FSi_GetPackedName
- str r0, [r7]
- ldr r0, [r7, #0x1C]
- mov r8, #0x1
- orr r0, r0, #0x1
- str r0, [r7, #0x1C]
-_020D112C:
- mov r0, r4
- bl OS_RestoreInterrupts
- mov r0, r8
- ldmia sp!, {r4-r8,lr}
- bx lr
-_020D1140: .word 0x021D53E8
-_020D1144: .word 0x021D53EC
-
- arm_func_start FS_FindArchive
-FS_FindArchive:
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4
- bl FSi_GetPackedName
- mov r5, r0
- bl OS_DisableInterrupts
- ldr r1, _020D1194 ; =0x021D53E8
- ldr r4, [r1, #0x0]
- b _020D116C
-_020D1168:
- ldr r4, [r4, #0x4]
-_020D116C:
- cmp r4, #0x0
- beq _020D1180
- ldr r1, [r4, #0x0]
- cmp r1, r5
- bne _020D1168
-_020D1180:
- bl OS_RestoreInterrupts
- mov r0, r4
- add sp, sp, #0x4
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020D1194: .word 0x021D53E8
-
- arm_func_start FS_InitArchive
-FS_InitArchive: ; 0x020D1198
- stmdb sp!, {r4,lr}
- mov r1, #0x0
- mov r2, #0x5c
- mov r4, r0
- bl MI_CpuFill8
- mov r1, #0x0
- str r1, [r4, #0x10]
- ldr r0, [r4, #0x10]
- str r0, [r4, #0xc]
- str r1, [r4, #0x18]
- ldr r0, [r4, #0x18]
- str r0, [r4, #0x14]
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start FSi_SendCommand
-FSi_SendCommand:
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- ldr r6, [r7, #0x8]
- mov r2, #0x1
- str r1, [r7, #0x10]
- mov r0, #0x2
- str r0, [r7, #0x14]
- ldr r0, [r7, #0xc]
- mov r5, r2, lsl r1
- orr r0, r0, #0x1
- str r0, [r7, #0xc]
- bl OS_DisableInterrupts
- ldr r1, [r6, #0x1c]
- mov r4, r0
- ands r0, r1, #0x80
- beq _020D1238
- mov r0, r7
- mov r1, #0x3
- bl FSi_ReleaseCommand
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #0x4
- mov r0, #0x0
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020D1238:
- ands r0, r5, #0x1fc
- ldrne r0, [r7, #0xc]
- add r2, r6, #0x20
- orrne r0, r0, #0x4
- strne r0, [r7, #0xc]
- ldr r1, [r7, #0x0]
- ldr r0, [r7, #0x4]
- cmp r1, #0x0
- strne r0, [r1, #0x4]
- cmp r0, #0x0
- strne r1, [r0, #0x0]
- ldr r0, [r2, #0x4]
- cmp r0, #0x0
- beq _020D1280
-_020D1270:
- mov r2, r0
- ldr r0, [r0, #0x4]
- cmp r0, #0x0
- bne _020D1270
-_020D1280:
- str r7, [r2, #0x4]
- str r2, [r7, #0x0]
- mov r1, #0x0
- str r1, [r7, #0x4]
- ldr r0, [r6, #0x1c]
- ands r0, r0, #0x8
- movne r1, #0x1
- cmp r1, #0x0
- bne _020D132C
- ldr r0, [r6, #0x1c]
- ands r0, r0, #0x10
- bne _020D132C
- ldr r1, [r6, #0x1c]
- mov r0, r4
- orr r1, r1, #0x10
- str r1, [r6, #0x1c]
- bl OS_RestoreInterrupts
- ldr r0, [r6, #0x58]
- ands r0, r0, #0x200
- beq _020D12E0
- ldr r2, [r6, #0x54]
- mov r0, r7
- mov r1, #0x9
- blx r2
-_020D12E0:
- bl OS_DisableInterrupts
- ldr r1, [r7, #0xc]
- orr r1, r1, #0x40
- str r1, [r7, #0xc]
- ldr r1, [r7, #0xc]
- ands r1, r1, #0x4
- movne r1, #0x1
- moveq r1, #0x0
- cmp r1, #0x0
- bne _020D1324
- bl OS_RestoreInterrupts
- mov r0, r7
- bl FSi_ExecuteAsyncCommand
- add sp, sp, #0x4
- mov r0, #0x1
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020D1324:
- bl OS_RestoreInterrupts
- b _020D1378
-_020D132C:
- ldr r0, [r7, #0xc]
- ands r0, r0, #0x4
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- bne _020D135C
- mov r0, r4
- bl OS_RestoreInterrupts
- add sp, sp, #0x4
- mov r0, #0x1
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020D135C:
- add r0, r7, #0x18
- bl OS_SleepThread
- ldr r0, [r7, #0xc]
- ands r0, r0, #0x40
- beq _020D135C
- mov r0, r4
- bl OS_RestoreInterrupts
-_020D1378:
- mov r0, r7
- bl FSi_ExecuteSyncCommand
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,lr}
- bx lr
-
- arm_func_start FSi_ExecuteSyncCommand
-FSi_ExecuteSyncCommand: ; 0x020D138C
- stmdb sp!, {r4,lr}
- mov r4, r0
- ldr r1, [r4, #0x10]
- bl FSi_TranslateCommand
- mov r1, r0
- mov r0, r4
- bl FSi_ReleaseCommand
- ldr r0, [r4, #0x8]
- bl FSi_NextCommand
-_020D13B0:
- cmp r0, #0x0
- beq _020D13BC
- bl FSi_ExecuteAsyncCommand
-_020D13BC:
- ldr r0, [r4, #0x14]
- cmp r0, #0x0
- moveq r0, #0x1
- movne r0, #0x0
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start FSi_ExecuteAsyncCommand
-FSi_ExecuteAsyncCommand: ; 0x020D13D4
- stmdb sp!, {r4-r8,lr}
- movs r6, r0
- ldr r5, [r6, #0x8]
- ldmeqia sp!, {r4-r8,lr}
- bxeq lr
- mov r7, #0x0
- mov r8, #0x1
-_020D13F0:
- bl OS_DisableInterrupts
- ldr r1, [r6, #0xc]
- mov r4, r0
- orr r0, r1, #0x40
- str r0, [r6, #0xc]
- ldr r0, [r6, #0xc]
- ands r0, r0, #0x4
- movne r0, r8
- moveq r0, r7
- cmp r0, #0x0
- beq _020D1434
- add r0, r6, #0x18
- bl OS_WakeupThread
- mov r0, r4
- bl OS_RestoreInterrupts
- ldmia sp!, {r4-r8,lr}
- bx lr
-_020D1434:
- ldr r1, [r6, #0xc]
- mov r0, r4
- orr r1, r1, #0x8
- str r1, [r6, #0xc]
- bl OS_RestoreInterrupts
- ldr r1, [r6, #0x10]
- mov r0, r6
- bl FSi_TranslateCommand
- cmp r0, #0x6
- ldmeqia sp!, {r4-r8,lr}
- bxeq lr
- mov r0, r5
- bl FSi_NextCommand
- movs r6, r0
- bne _020D13F0
- ldmia sp!, {r4-r8,lr}
- bx lr
-
- arm_func_start FSi_NextCommand
-FSi_NextCommand:
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4c
- mov r6, r0
- bl OS_DisableInterrupts
- ldr r1, [r6, #0x1c]
- mov r5, r0
- ands r0, r1, #0x20
- beq _020D1500
- ldr r0, [r6, #0x1c]
- bic r0, r0, #0x20
- str r0, [r6, #0x1c]
- ldr r0, [r6, #0x24]
- cmp r0, #0x0
- beq _020D1500
- mov r8, #0x0
- mov r9, #0x1
- mov r7, #0x3
-_020D14BC:
- ldr r1, [r0, #0xc]
- ldr r4, [r0, #0x4]
- ands r1, r1, #0x2
- movne r1, r9
- moveq r1, r8
- cmp r1, #0x0
- beq _020D14F4
- ldr r1, [r6, #0x24]
- cmp r1, r0
- mov r1, r7
- streq r4, [r6, #0x24]
- bl FSi_ReleaseCommand
-_020D14EC:
- cmp r4, #0x0
- ldreq r4, [r6, #0x24]
-_020D14F4:
- mov r0, r4
- cmp r4, #0x0
- bne _020D14BC
-_020D1500:
- ldr r0, [r6, #0x1c]
- ands r0, r0, #0x40
- bne _020D15EC
- ldr r0, [r6, #0x1c]
- ands r0, r0, #0x8
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- bne _020D15EC
- ldr r4, [r6, #0x24]
- cmp r4, #0x0
- beq _020D15EC
- ldr r0, [r6, #0x1c]
- ands r0, r0, #0x10
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- moveq r7, #0x1
- movne r7, #0x0
- cmp r7, #0x0
- ldrne r0, [r6, #0x1c]
- orrne r0, r0, #0x10
- strne r0, [r6, #0x1c]
- mov r0, r5
- bl OS_RestoreInterrupts
-_020D1564:
- cmp r7, #0x0
- beq _020D1588
- ldr r0, [r6, #0x58]
- ands r0, r0, #0x200
- beq _020D1588
- ldr r2, [r6, #0x54]
- mov r0, r4
- mov r1, #0x9
- blx r2
-_020D1588:
- bl OS_DisableInterrupts
- ldr r1, [r4, #0xC]
- mov r5, r0
- orr r0, r1, #0x40
- str r0, [r4, #0xC]
- ldr r0, [r4, #0xC]
- ands r0, r0, #0x4
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- beq _020D15D4
- add r0, r4, #0x18
- bl OS_WakeupThread
- mov r0, r5
- bl OS_RestoreInterrupts
- add sp, sp, #0x4c
- mov r0, #0x0
- ldmia sp!, {r4-r9, lr}
- bx lr
-_020D15D4:
- mov r0, r5
- bl OS_RestoreInterrupts
- add sp, sp, #0x4c
- mov r0, r4
- ldmia sp!, {r4-r9, lr}
- bx lr
-_020D15EC:
- ldr r0, [r6, #0x1c]
- ands r0, r0, #0x10
- beq _020D162C
- ldr r0, [r6, #0x1c]
- bic r0, r0, #0x10
- str r0, [r6, #0x1c]
- ldr r0, [r6, #0x58]
- ands r0, r0, #0x400
- beq _020D162C
- add r0, sp, #0x0
- bl FS_InitFile
- str r6, [sp, #0x8]
- ldr r2, [r6, #0x54]
- add r0, sp, #0x0
- mov r1, #0xa
- blx r2
-_020D162C:
- ldr r0, [r6, #0x1c]
- ands r0, r0, #0x40
- beq _020D1658
- ldr r1, [r6, #0x1c]
- add r0, r6, #0x14
- bic r1, r1, #0x40
- str r1, [r6, #0x1c]
- ldr r1, [r6, #0x1c]
- orr r1, r1, #0x8
- str r1, [r6, #0x1c]
- bl OS_WakeupThread
-_020D1658:
- mov r0, r5
- bl OS_RestoreInterrupts
-_020D1660:
- mov r0, #0x0
- add sp, sp, #0x4c
- ldmia sp!, {r4-r9, lr}
- bx lr
-
- arm_func_start FSi_ReadMemoryCore
-FSi_ReadMemoryCore: ; 0x020D1670
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- mov r0, r2
- mov r2, r3
- bl MI_CpuCopy8
-_020D1684:
- mov r0, #0x0
- add sp, sp, #0x4
- ldmfd sp!, {lr}
- bx lr
-
- arm_func_start FSi_WriteMemCallback
-FSi_WriteMemCallback: ; 0x020D1694
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r12, [r0, #0x28]
- mov r0, r1
- add r1, r12, r2
- mov r2, r3
- bl MI_CpuCopy8
-_020D16B0:
- mov r0, #0x0
- add sp, sp, #0x4
- ldmfd sp!, {lr}
- bx lr
-
- arm_func_start FSi_ReadMemCallback
-FSi_ReadMemCallback: ; 0x020D16C0
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r0, [r0, #0x28]
- add r0, r0, r2
- mov r2, r3
- bl MI_CpuCopy8
-_020D16D8:
- mov r0, #0x0
- add sp, sp, #0x4
- ldmfd sp!, {lr}
- bx lr
-
- arm_func_start FSi_GetPackedName
-FSi_GetPackedName: ; 0x020D16E8
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- cmp r1, #0x3
- mov lr, #0x0
- bgt _020D173C
- mov r12, lr
- cmp r1, #0x0
- ble _020D173C
- mov r3, lr
-_020D170C:
- ldrb r2, [r0, r12]
- cmp r2, #0x0
- beq _020D173C
- sub r2, r2, #0x41
- cmp r2, #0x19
- addls r2, r2, #0x61
- addhi r2, r2, #0x41
- add r12, r12, #0x1
- orr lr, lr, r2, lsl r3
- cmp r12, r1
- add r3, r3, #0x8
- blt _020D170C
-_020D173C:
- mov r0, lr
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start FS_ChangeDir
-FS_ChangeDir: ; 0x020D174C
- stmdb sp!, {r4,lr}
- sub sp, sp, #0x58
- mov r4, r0
- add r0, sp, #0xc
- bl FS_InitFile
- add r0, sp, #0xc
- add r3, sp, #0x0
- mov r1, r4
- mov r2, #0x0
- bl FSi_FindPath
-_020D1774:
- cmp r0, #0x0
- moveq r0, #0x0
- addne r0, sp, #0x0
- ldrne r3, _020D179C
- ldmneia r0, {r0, r1, r2}
- stmneia r3, {r0, r1, r2}
- movne r0, #0x1
- add sp, sp, #0x58
- ldmia sp!, {r4, lr}
- bx lr
-_020D179C: .word 0x021D53EC
-
- arm_func_start FS_SeekFile
-FS_SeekFile: ; 0x020D17A0
- cmp r2, #0x0
- beq _020D17BC
- cmp r2, #0x1
- beq _020D17C8
- cmp r2, #0x2
- beq _020D17D4
- b _020D17E0
-_020D17BC:
- ldr r2, [r0, #0x24]
- add r1, r1, r2
- b _020D17E8
-_020D17C8:
- ldr r2, [r0, #0x2c]
- add r1, r1, r2
- b _020D17E8
-_020D17D4:
- ldr r2, [r0, #0x28]
- add r1, r1, r2
- b _020D17E8
-_020D17E0:
- mov r0, #0x0
- bx lr
-_020D17E8:
- ldr r2, [r0, #0x24]
- cmp r1, r2
- movlt r1, r2
- ldr r2, [r0, #0x28]
- cmp r1, r2
- movgt r1, r2
- str r1, [r0, #0x2c]
- mov r0, #0x1
- bx lr
-
- arm_func_start FS_ReadFile
-FS_ReadFile: ; 0x020D180C
- ldr ip, _020D1818 ; =FUN_020D1AAC
- mov r3, #0x0
- bx r12
- .balign 4
-_020D1818: .word FUN_020D1AAC
-
- arm_func_start FS_ReadFileAsync
-FS_ReadFileAsync: ; 0x020D181C
- ldr ip, _020D1828 ; =FUN_020D1AAC
- mov r3, #0x1
- bx r12
- .balign 4
-_020D1828: .word FUN_020D1AAC
-
- arm_func_start FS_WaitAsync
-FS_WaitAsync: ; 0x020D182C
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r6, r0
- mov r5, #0x0
- bl OS_DisableInterrupts
- ldr r1, [r6, #0xc]
- mov r4, r0
- ands r0, r1, #0x1
- movne r0, #0x1
- moveq r0, r5
- cmp r0, #0x0
- beq _020D18BC
- ldr r0, [r6, #0xc]
- ands r0, r0, #0x44
- moveq r5, #0x1
- movne r5, #0x0
- cmp r5, #0x0
- beq _020D189C
- ldr r0, [r6, #0xc]
- orr r0, r0, #0x4
- str r0, [r6, #0xc]
- add r7, r6, #0x18
-_020D1884:
- mov r0, r7
- bl OS_SleepThread
- ldr r0, [r6, #0xc]
- ands r0, r0, #0x40
- beq _020D1884
- b _020D18BC
-_020D189C:
- add r0, r6, #0x18
- bl OS_SleepThread
- ldr r0, [r6, #0xc]
- ands r0, r0, #0x1
- movne r0, #0x1
- moveq r0, #0x0
- cmp r0, #0x0
- bne _020D189C
-_020D18BC:
- mov r0, r4
- bl OS_RestoreInterrupts
-_020D18C4:
- cmp r5, #0x0
- beq _020D18E0
- mov r0, r6
- bl FSi_ExecuteSyncCommand
- add sp, sp, #4
- ldmia sp!, {r4-r7,lr}
- bx lr
-_020D18E0:
- ldr r0, [r6, #0x14]
- cmp r0, #0x0
- moveq r0, #0x1
- movne r0, #0x0
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,lr}
- bx lr
-
- arm_func_start FS_CloseFile
-FS_CloseFile: ; 0x020D18FC
- stmdb sp!, {r4,lr}
- mov r1, #0x8
- mov r4, r0
- bl FSi_SendCommand
-_020D190C:
- cmp r0, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4,lr}
- bxeq lr
- mov r0, #0x0
- str r0, [r4, #0x8]
- mov r0, #0xE
- str r0, [r4, #0x10]
- ldr r1, [r4, #0xC]
- mov r0, #0x1
- bic r1, r1, #0x30
- str r1, [r4, #0xC]
- ldmia sp!, {r4,lr}
- bx lr
-
- arm_func_start FS_OpenFile
-FS_OpenFile: ; 0x020D1944
- stmdb sp!, {r4,lr}
- sub sp, sp, #0x8
- mov r4, r0
- add r0, sp, #0x0
- bl FS_ConvertPathToFileID
-_020D1958:
- cmp r0, #0x0
- beq _020D1984
- add r1, sp, #0x0
- mov r0, r4
- ldmia r1, {r1, r2}
- bl FS_OpenFileFast
- cmp r0, #0x0
- addne sp, sp, #0x8
- movne r0, #0x1
- ldmneia sp!, {r4, lr}
- bxne lr
-_020D1984:
- mov r0, #0x0
- add sp, sp, #0x8
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start FS_OpenFileFast
-FS_OpenFileFast:
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4,lr}
- ldr r1, [sp, #0xc]
- mov r4, r0
- cmp r1, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4,lr}
- addeq sp, sp, #0x10
- bxeq lr
- str r1, [r4, #0x8]
- ldr r3, [sp, #0xc]
- ldr r2, [sp, #0x10]
- mov r1, #0x6
- str r3, [r4, #0x30]
- str r2, [r4, #0x34]
- bl FSi_SendCommand
-_020D19D4:
- cmp r0, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4, lr}
- addeq sp, sp, #0x10
- bxeq lr
- ldr r1, [r4, #0xC]
- mov r0, #0x1
- orr r1, r1, #0x10
- str r1, [r4, #0xC]
- ldr r1, [r4, #0xC]
- bic r1, r1, #0x20
- str r1, [r4, #0xC]
- ldmia sp!, {r4, lr}
- add sp, sp, #0x10
- bx lr
-
- arm_func_start FS_OpenFileDirect
-FS_OpenFileDirect:
- stmdb sp!, {r4,lr}
- mov r4, r0
- str r1, [r4, #0x8]
- ldr r12, [sp, #0x8]
- mov r1, #0x7
- str r12, [r4, #0x38]
- str r2, [r4, #0x30]
- str r3, [r4, #0x34]
- bl FSi_SendCommand
-_020D1A34:
- cmp r0, #0x0
- moveq r0, #0x0
- ldmeqia sp!, {r4, lr}
- bxeq lr
- ldr r1, [r4, #0xC]
- mov r0, #0x1
- orr r1, r1, #0x10
- str r1, [r4, #0xC]
- ldr r1, [r4, #0xC]
- bic r1, r1, #0x20
- str r1, [r4, #0xC]
- ldmia sp!, {r4, lr}
- bx lr
-
- arm_func_start FS_ConvertPathToFileID
-FS_ConvertPathToFileID:
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x4c
- mov r5, r0
- add r0, sp, #0x0
- mov r4, r1
- bl FS_InitFile
-_020D1A80:
- add r0, sp, #0x0
- mov r1, r4
- mov r2, r5
- mov r3, #0x0
- bl FSi_FindPath
- cmp r0, #0x0
- movne r0, #0x1
- moveq r0, #0x0
- add sp, sp, #0x4C
- ldmia sp!, {r4-r5, lr}
- bx lr
-
- arm_func_start FUN_020D1AAC
-FUN_020D1AAC: ; 0x020D1AAC
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r7, r0
- ldr r4, [r7, #0x2c]
- ldr r0, [r7, #0x28]
- mov r6, r2
- str r1, [r7, #0x30]
- sub r0, r0, r4
- cmp r6, r0
- movgt r6, r0
- cmp r6, #0x0
- movlt r6, #0x0
- str r2, [r7, #0x34]
- mov r5, r3
- str r6, [r7, #0x38]
- cmp r5, #0x0
- ldreq r0, [r7, #0xc]
- mov r1, #0x0
- orreq r0, r0, #0x4
- streq r0, [r7, #0xc]
- mov r0, r7
- bl FSi_SendCommand
-_020D1B04:
- cmp r5, #0x0
- bne _020D1B24
- mov r0, r7
- bl FS_WaitAsync
- cmp r0, #0x0
- ldrne r0, [r7, #0x2C]
- subne r6, r0, r4
- mvneq r6, #0x0
-_020D1B24:
- mov r0, r6
- add sp, sp, #0x4
- ldmia sp!, {r4-r7, lr}
- bx lr
-
- arm_func_start FSi_FindPath
-FSi_FindPath:
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0x10
- mov r7, r1
- ldrb r1, [r7, #0x0]
- mov r8, r0
- mov r6, r2
- mov r5, r3
- cmp r1, #0x2f
- beq _020D1B60
- cmp r1, #0x5c
- bne _020D1B84
-_020D1B60:
- ldr r0, _020D1C90 ; =0x021D53EC
- mov r1, #0x0
- ldr r0, [r0, #0x0]
- strh r1, [sp, #0x4]
- str r0, [sp, #0x0]
- str r1, [sp, #0x8]
- strh r1, [sp, #0x6]
- add r7, r7, #0x1
- b _020D1C40
-_020D1B84:
- ldr r0, _020D1C90 ; =0x021D53EC
- add r3, sp, #0x0
- ldmia r0, {r0-r2}
- stmia r3, {r0-r2}
- mov r4, #0x0
-_020D1B98:
- ldrb r0, [r7, r4]
- cmp r0, #0x0
- beq _020D1C40
- cmp r0, #0x2f
- beq _020D1C40
- cmp r0, #0x5c
- beq _020D1C40
- cmp r0, #0x3a
- bne _020D1C34
- mov r0, r7
- mov r1, r4
- bl FS_FindArchive
-_020D1BC8:
- cmp r0, #0x0
- addeq sp, sp, #0x10
- moveq r0, #0x0
- ldmeqia sp!, {r4-r8,lr}
- bxeq lr
- ldr r1, [r0, #0x1C]
- ands r1, r1, #0x2
- movne r1, #0x1
- moveq r1, #0x0
- cmp r1, #0x0
- addeq sp, sp, #0x10
- moveq r0, #0x0
- ldmeqia sp!, {r4-r8,lr}
- bxeq lr
- mov r1, #0x0
- str r0, [sp]
- str r1, [sp, #0x8]
- strh r1, [sp, #0x6]
- strh r1, [sp, #0x4]
- add r0, r4, #0x1
- ldrb r0, [r7, r0]!
- cmp r0, #0x2f
- beq _020D1C2C
- cmp r0, #0x5c
- bne _020D1C40
-_020D1C2C:
- add r7, r7, #0x1
- b _020D1C40
-_020D1C34:
- add r4, r4, #0x1
- cmp r4, #0x3
- ble _020D1B98
-_020D1C40:
- ldr r1, [sp, #0x0]
- add r0, sp, #0x0
- str r1, [r8, #0x8]
- str r7, [r8, #0x3c]
- add r3, r8, #0x30
- ldmia r0, {r0-r2}
- stmia r3, {r0-r2}
- cmp r5, #0x0
- movne r0, #0x1
- strne r0, [r8, #0x40]
- strne r5, [r8, #0x44]
- moveq r0, #0x0
- streq r0, [r8, #0x40]
- mov r0, r8
- mov r1, #0x4
- streq r6, [r8, #0x44]
- bl FSi_SendCommand
- add sp, sp, #0x10
- ldmia sp!, {r4-r8,lr}
- bx lr
- .balign 4
-_020D1C90: .word 0x021D53EC
-
- arm_func_start FS_InitFile
-FS_InitFile:
- mov r3, #0x0
- str r3, [r0, #0x0]
- ldr r2, [r0, #0x0]
- mov r1, #0xe
- str r2, [r0, #0x4]
- str r3, [r0, #0x1c]
- ldr r2, [r0, #0x1c]
- str r2, [r0, #0x18]
- str r3, [r0, #0x8]
- str r1, [r0, #0x10]
- str r3, [r0, #0xc]
- bx lr
-
- arm_func_start FS_IsAvailable
-FS_IsAvailable: ; 0x020D1CC4
- ldr r0, _020D1CD0 ; =0x021D53F8
- ldr r0, [r0, #0x0]
- bx lr
- .balign 4
-_020D1CD0: .word 0x021D53F8
-
- arm_func_start FS_Init
-FS_Init: ; 0x020D1CD4
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- ldr r1, _020D1D0C ; =0x021D53F8
- ldr r2, [r1, #0x0]
- cmp r2, #0x0
- addne sp, sp, #0x4
- ldmneia sp!, {lr}
- bxne lr
- mov r2, #0x1
- str r2, [r1, #0x0]
- bl FSi_InitRom
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020D1D0C: .word 0x021D53F8
-
- arm_func_start FS_TryLoadTable
-FS_TryLoadTable: ; 0x020D1D10
- ldr ip, _020D1D28 ; =FUN_020D0D84
- mov r3, r0
- mov r2, r1
- ldr r0, _020D1D2C ; =0x021D5414
- mov r1, r3
- bx r12
- .balign 4
-_020D1D28: .word FUN_020D0D84
-_020D1D2C: .word 0x021D5414
-
- arm_func_start FS_SetDefaultDMA
-FS_SetDefaultDMA: ; 0x020D1D30
- stmdb sp!, {r4-r6,lr}
- mov r6, r0
- bl OS_DisableInterrupts
- mov r5, r0
- ldr r1, _020D1D7C ; =0x021D5400
- ldr r0, _020D1D80 ; =0x021D5414
- ldr r4, [r1, #0x0]
- bl FS_SuspendArchive
- ldr r1, _020D1D7C ; =0x021D5400
- cmp r0, #0x0
- str r6, [r1, #0x0]
- beq _020D1D68
- ldr r0, _020D1D80 ; =0x021D5414
- bl FS_ResumeArchive
-_020D1D68:
- mov r0, r5
- bl OS_RestoreInterrupts
- mov r0, r4
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020D1D7C: .word 0x021D5400
-_020D1D80: .word 0x021D5414
-
- arm_func_start FSi_InitRom
-FSi_InitRom: ; 0x020D1D84
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x14
- ldr r1, _020D1EE8 ; =0x021D5400
- str r0, [r1, #0x0]
- bl OS_GetLockID
- ldr r3, _020D1EEC ; =0x021D53FC
- ldr r2, _020D1EF0 ; =0x021D5404
- mov r12, #0x0
- ldr r1, _020D1EF4 ; =0x021D540C
- str r0, [r3, #0x0]
- str r12, [r2, #0x0]
- str r12, [r2, #0x4]
- str r12, [r1, #0x0]
- str r12, [r1, #0x4]
- bl CARD_Init
- ldr r0, _020D1EF8 ; =0x021D5414
- bl FS_InitArchive
- ldr r0, _020D1EF8 ; =0x021D5414
- ldr r1, _020D1EFC ; =0x02106830
- mov r2, #0x3
- bl FS_RegisterArchiveName
- ldr r0, _020D1F00 ; =0x027FFC40
- ldrh r0, [r0, #0x0]
- cmp r0, #0x2
- bne _020D1E4C
- ldr ip, _020D1EF0 ; =0x021D5404
- mvn r2, #0x0
- ldr r3, _020D1EF4 ; =0x021D540C
- mov lr, #0x0
- ldr r0, _020D1EF8 ; =0x021D5414
- ldr r1, _020D1F04 ; =FSi_EmptyArchiveProc
- str r2, [r12, #0x0]
- str lr, [r12, #0x4]
- str r2, [r3, #0x0]
- str lr, [r3, #0x4]
- bl FS_SetArchiveProc
- mov r1, #0x0
- str r1, [sp, #0x0]
- ldr r0, _020D1F08 ; =FSi_ReadDummyCallback
- str r1, [sp, #0x4]
- str r0, [sp, #0x8]
- ldr ip, _020D1F0C ; =FSi_WriteDummyCallback
- ldr r0, _020D1EF8 ; =0x021D5414
- mov r2, r1
- mov r3, r1
- str r12, [sp, #0xc]
- bl FS_LoadArchive
- add sp, sp, #0x14
- ldmia sp!, {r4-r5,lr}
- bx lr
-_020D1E4C:
- ldr r5, _020D1F10 ; =0x027FFE40
- ldr r0, _020D1EF8 ; =0x021D5414
- ldr r1, _020D1F14 ; =FSi_RomArchiveProc
- ldr r2, _020D1F18 ; =0x00000602
- ldr r4, _020D1F1C ; =0x027FFE48
- bl FS_SetArchiveProc
- ldr r1, [r5, #0x0]
- mvn r0, #0x0
- cmp r1, r0
- addeq sp, sp, #0x14
- ldmeqia sp!, {r4-r5,lr}
- bxeq lr
- cmp r1, #0x0
- addeq sp, sp, #0x14
- ldmeqia sp!, {r4-r5,lr}
- bxeq lr
- ldr r2, [r4, #0x0]
- cmp r2, r0
- addeq sp, sp, #0x14
- ldmeqia sp!, {r4-r5,lr}
- bxeq lr
- cmp r2, #0x0
- addeq sp, sp, #0x14
- ldmeqia sp!, {r4-r5,lr}
- bxeq lr
- str r1, [sp, #0x0]
- ldr r0, [r5, #0x4]
- ldr r1, _020D1F20 ; =FSi_ReadRomCallback
- str r0, [sp, #0x4]
- ldr r0, _020D1F0C ; =FSi_WriteDummyCallback
- str r1, [sp, #0x8]
- str r0, [sp, #0xc]
- ldr r3, [r4, #0x4]
- ldr r0, _020D1EF8 ; =0x021D5414
- mov r1, #0x0
- bl FS_LoadArchive
- add sp, sp, #0x14
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020D1EE8: .word 0x021D5400
-_020D1EEC: .word 0x021D53FC
-_020D1EF0: .word 0x021D5404
-_020D1EF4: .word 0x021D540C
-_020D1EF8: .word 0x021D5414
-_020D1EFC: .word 0x02106830
-_020D1F00: .word 0x027FFC40
-_020D1F04: .word FSi_EmptyArchiveProc
-_020D1F08: .word FSi_ReadDummyCallback
-_020D1F0C: .word FSi_WriteDummyCallback
-_020D1F10: .word 0x027FFE40
-_020D1F14: .word FSi_RomArchiveProc
-_020D1F18: .word 0x00000602
-_020D1F1C: .word 0x027FFE48
-_020D1F20: .word FSi_ReadRomCallback
-
- arm_func_start FSi_EmptyArchiveProc
-FSi_EmptyArchiveProc: ; 0x020D1F24
- mov r0, #0x4
- bx lr
-
- arm_func_start FSi_ReadDummyCallback
-FSi_ReadDummyCallback: ; 0x020D1F2C
- mov r0, #0x1
- bx lr
-
- arm_func_start FSi_RomArchiveProc
-FSi_RomArchiveProc: ; 0x020D1F34
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- cmp r1, #0x1
- beq _020D1FA0
- cmp r1, #0x9
- beq _020D1F58
- cmp r1, #0xa
- beq _020D1F7C
- b _020D1FB0
-_020D1F58:
- ldr r0, _020D1FC0 ; =0x021D53FC
- ldr r0, [r0, #0x0]
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- bl CARD_LockRom
- add sp, sp, #0x4
- mov r0, #0x0
- ldmia sp!, {lr}
- bx lr
-_020D1F7C:
- ldr r0, _020D1FC0 ; =0x021D53FC
- ldr r0, [r0, #0x0]
- mov r0, r0, lsl #0x10
- mov r0, r0, lsr #0x10
- bl CARD_UnlockRom
- add sp, sp, #0x4
- mov r0, #0x0
- ldmia sp!, {lr}
- bx lr
-_020D1FA0:
- add sp, sp, #0x4
- mov r0, #0x4
- ldmia sp!, {lr}
- bx lr
-_020D1FB0:
- mov r0, #0x8
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020D1FC0: .word 0x021D53FC
-
- arm_func_start FSi_WriteDummyCallback
-FSi_WriteDummyCallback: ; 0x020D1FC4
- mov r0, #0x1
- bx lr
-
- arm_func_start FSi_ReadRomCallback
-FSi_ReadRomCallback: ; 0x020D1FCC
- stmdb sp!, {lr}
- sub sp, sp, #0xc
- ldr ip, _020D2010 ; =FSi_OnRomReadDone
- mov lr, r1
- str r12, [sp, #0x0]
- str r0, [sp, #0x4]
- mov r1, #0x1
- ldr r0, _020D2014 ; =0x021D5400
- str r1, [sp, #0x8]
- mov r1, r2
- ldr r0, [r0, #0x0]
- mov r2, lr
- bl CARDi_ReadRom
- mov r0, #0x6
- add sp, sp, #0xc
- ldmia sp!, {lr}
- bx lr
- .balign 4
-_020D2010: .word FSi_OnRomReadDone
-_020D2014: .word 0x021D5400
-
- arm_func_start FSi_OnRomReadDone
-FSi_OnRomReadDone: ; 0x020D2018
- stmdb sp!, {r4,lr}
- mov r4, r0
- bl CARD_IsPulledOut
-_020D2024:
- cmp r0, #0x0
- movne r1, #0x5
- moveq r1, #0x0
- mov r0, r4
- bl FS_NotifyArchiveAsyncEnd
- ldmia sp!, {r4,lr}
- bx lr
-
-
- arm_func_start FS_UnloadOverlay
-FS_UnloadOverlay: ; 0x020D2040
- stmdb sp!, {lr}
- sub sp, sp, #0x2c
- mov r3, r0
- mov r2, r1
- add r0, sp, #0x0
- mov r1, r3
- bl FS_LoadOverlayInfo
-_020D205C:
- cmp r0, #0x0
- beq _020D2074
- add r0, sp, #0x0
- bl FS_UnloadOverlayImage
- cmp r0, #0x0
- bne _020D2084
-_020D2074:
- add sp, sp, #0x2c
- mov r0, #0x0
- ldmfd sp!, {lr}
- bx lr
-_020D2084:
- mov r0, #0x1
- add sp, sp, #0x2c
- ldmfd sp!, {lr}
- bx lr
-
- arm_func_start FS_LoadOverlay
-FS_LoadOverlay: ; 0x020D2094
- stmdb sp!, {lr}
- sub sp, sp, #0x2c
- mov r3, r0
- mov r2, r1
- add r0, sp, #0x0
- mov r1, r3
- bl FS_LoadOverlayInfo
-_020D20B0:
- cmp r0, #0x0
- beq _020D20C8
- add r0, sp, #0x0
- bl FS_LoadOverlayImage
- cmp r0, #0x0
- bne _020D20D8
-_020D20C8:
- add sp, sp, #0x2c
- mov r0, #0x0
- ldmfd sp!, {lr}
- bx lr
-_020D20D8:
- add r0, sp, #0x0
- bl FS_StartOverlay
- mov r0, #0x1
- add sp, sp, #0x2c
- ldmfd sp!, {lr}
- bx lr
-
- arm_func_start FS_UnloadOverlayImage
-FS_UnloadOverlayImage: ; 0x020D20F0
- stmdb sp!, {lr}
- sub sp, sp, #0x4
- bl FS_EndOverlay
- mov r0, #0x1
- add sp, sp, #0x4
- ldmia sp!, {lr}
- bx lr
-
- arm_func_start FS_EndOverlay
-FS_EndOverlay: ; 0x020D210C
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- ldr r8, _020D220C ; =0x021D74C8
- mov r11, r0
- mov r9, #0x0
-_020D2120:
- ldr r1, [r11, #0x8]
- ldr r0, [r11, #0xc]
- ldr r5, [r11, #0x4]
- add r0, r1, r0
- mov r7, r9
- mov r6, r9
- add r4, r5, r0
- bl OS_DisableInterrupts
- ldr lr, [r8, #0x0]
- mov r10, r9
- mov r12, lr
- cmp lr, #0x0
- beq _020D21C4
-_020D2154:
- ldr r2, [r12, #0x8]
- ldr r3, [r12, #0x0]
- cmp r2, #0x0
- ldr r1, [r12, #0x4]
- bne _020D2178
- cmp r1, r5
- blo _020D2178
- cmp r1, r4
- blo _020D2188
-_020D2178:
- cmp r2, r5
- blo _020D21B4
- cmp r2, r4
- bhs _020D21B4
-_020D2188:
- cmp r6, #0x0
- strne r12, [r6, #0x0]
- moveq r7, r12
- cmp lr, r12
- streq r3, [r8, #0x0]
- moveq lr, r3
- str r9, [r12, #0x0]
- cmp r10, #0x0
- mov r6, r12
- strne r3, [r10, #0x0]
- b _020D21B8
-_020D21B4:
- mov r10, r12
-_020D21B8:
- mov r12, r3
- cmp r3, #0x0
- bne _020D2154
-_020D21C4:
- bl OS_RestoreInterrupts
-_020D21C8:
- cmp r7, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r11, lr}
- bxeq lr
-_020D21D8:
- ldr r1, [r7, #0x4]
- ldr r4, [r7]
- cmp r1, #0x0
- beq _020D21F0
- ldr r0, [r7, #0x8]
- blx r1
-_020D21F0:
- mov r7, r4
- cmp r4, #0x0
- bne _020D21D8
- b _020D2120
- add sp, sp, #0x4
- ldmia sp!, {r4-r11, lr}
- bx lr
-_020D220C: .word 0x021D74C8
-
- arm_func_start FS_StartOverlay
-FS_StartOverlay: ; 0x020D2210
- stmdb sp!, {r4-r6,lr}
- mov r5, r0
- bl FSi_GetOverlayBinarySize
- ldr r1, _020D2300 ; =0x027FFC40
- mov r4, r0
- ldrh r0, [r1, #0x0]
- cmp r0, #0x2
- bne _020D22A4
- ldrb r1, [r5, #0x1f]
- mov r0, #0x0
- ands r1, r1, #0x2
- beq _020D2280
- ldr r1, _020D2304 ; =0x02106F84
- ldr r3, _020D2308 ; =0x02106F84
- ldr r2, _020D230C ; =0x66666667
- sub r12, r1, r3
- smull r1, lr, r2, r12
- mov lr, lr, asr #0x3
- mov r1, r12, lsr #0x1f
- ldr r2, [r5, #0x0]
- add lr, r1, lr
- cmp r2, lr
- bhs _020D2280
- mov r0, #0x14
- mla r0, r2, r0, r3
- ldr r1, [r5, #0x4]
- mov r2, r4
- bl FSi_CompareDigest
-_020D2280:
- cmp r0, #0x0
- bne _020D22A4
- ldr r0, [r5, #0x4]
- mov r2, r4
- mov r1, #0x0
- bl MI_CpuFill8
- bl OS_Terminate
- ldmia sp!, {r4-r6,lr}
- bx lr
-_020D22A4:
- ldrb r0, [r5, #0x1f]
- ands r0, r0, #0x1
- beq _020D22BC
- ldr r0, [r5, #0x4]
- add r0, r0, r4
- bl MIi_UncompressBackward
-_020D22BC:
- ldr r0, [r5, #0x4]
- ldr r1, [r5, #0x8]
- bl DC_FlushRange
- ldr r6, [r5, #0x10]
- ldr r4, [r5, #0x14]
- cmp r6, r4
- ldmcsia sp!, {r4-r6,lr}
- bxcs lr
-_020D22DC:
- ldr r0, [r6, #0x0]
- cmp r0, #0x0
- beq _020D22EC
- blx r0
-_020D22EC:
- add r6, r6, #0x4
- cmp r6, r4
- blo _020D22DC
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020D2300: .word 0x027FFC40
-_020D2304: .word 0x02106F84
-_020D2308: .word 0x02106F84
-_020D230C: .word 0x66666667
-
- arm_func_start FSi_CompareDigest
-FSi_CompareDigest:
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x58
- mov r4, r0
- mov r6, r1
- mov r5, r2
- add r0, sp, #0x4
- mov r1, #0x0
- mov r2, #0x14
- bl MI_CpuFill8
- ldr r0, _020D23AC ; =0x02106834
- ldr r1, _020D23B0 ; =0x02106838
- ldr r0, [r0, #0x0]
- ldr r2, [r1, #0x0]
- add r1, sp, #0x18
- bl MI_CpuCopy8
- ldr r3, _020D23B0 ; =0x02106838
- mov r1, r6
- ldr r12, [r3, #0x0]
- mov r2, r5
- add r0, sp, #0x4
- add r3, sp, #0x18
- str r12, [sp, #0x0]
- bl MATH_CalcHMACSHA1
- add r2, sp, #0x4
- mov r3, #0x0
-_020D2374:
- ldr r1, [r2, #0x0]
- ldr r0, [r4, r3]
- cmp r1, r0
- bne _020D2394
- add r3, r3, #0x4
- cmp r3, #0x14
- add r2, r2, #0x4
- blo _020D2374
-_020D2394:
- cmp r3, #0x14
- moveq r0, #0x1
- movne r0, #0x0
- add sp, sp, #0x58
- ldmia sp!, {r4-r6,lr}
- bx lr
- .balign 4
-_020D23AC: .word 0x02106834
-_020D23B0: .word 0x02106838
-
- arm_func_start FS_LoadOverlayImage
-FS_LoadOverlayImage: ; 0x020D23B4
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x54
- mov r5, r0
- add r0, sp, #0x8
- bl FS_InitFile
-_020D23C8:
- add r0, sp, #0x0
- mov r1, r5
- bl FS_GetOverlayFileID
- add r1, sp, #0x0
- add r0, sp, #0x8
- ldmia r1, {r1, r2}
- bl FS_OpenFileFast
- cmp r0, #0x0
- addeq sp, sp, #0x54
- moveq r0, #0x0
- ldmeqia sp!, {r4-r5, lr}
- bxeq lr
- mov r0, r5
- bl FSi_GetOverlayBinarySize
- mov r4, r0
- mov r0, r5
- bl FS_ClearOverlayImage
- ldr r1, [r5, #0x4]
- add r0, sp, #0x8
- mov r2, r4
- bl FS_ReadFile
- cmp r4, r0
- beq _020D243C
- add r0, sp, #0x8
- bl FS_CloseFile
- add sp, sp, #0x54
- mov r0, #0x0
- ldmia sp!, {r4-r5, lr}
- bx lr
-_020D243C:
- add r0, sp, #0x8
- bl FS_CloseFile
- mov r0, #0x1
- add sp, sp, #0x54
- ldmia sp!, {r4-r5, lr}
- bx lr
-
- arm_func_start FS_LoadOverlayImageAsync
-FS_LoadOverlayImageAsync: ; 0x020D2454
- stmdb sp!, {r4-r6,lr}
- sub sp, sp, #0x8
- mov r5, r1
- mov r6, r0
- mov r0, r5
- bl FS_InitFile
-_020D246C:
- add r0, sp, #0x0
- mov r1, r6
- bl FS_GetOverlayFileID
- add r1, sp, #0x0
- mov r0, r5
- ldmia r1, {r1, r2}
- bl FS_OpenFileFast
- cmp r0, #0x0
- addeq sp, sp, #0x8
- moveq r0, #0x0
- ldmeqia sp!, {r4-r6, lr}
- bxeq lr
- mov r0, r6
- bl FSi_GetOverlayBinarySize
- mov r4, r0
- mov r0, r6
- bl FS_ClearOverlayImage
- ldr r1, [r6, #0x4]
- mov r0, r5
- mov r2, r4
- bl FS_ReadFileAsync
- cmp r4, r0
- addeq sp, sp, #0x8
- moveq r0, #0x1
- ldmeqia sp!, {r4-r6, lr}
- bxeq lr
- mov r0, r5
- bl FS_CloseFile
- mov r0, #0x0
- add sp, sp, #0x8
- ldmia sp!, {r4-r6, lr}
- bx lr
-
- arm_func_start FS_LoadOverlayInfo
-FS_LoadOverlayInfo:
- stmdb sp!, {r4-r5,lr}
- sub sp, sp, #0x64
- movs r4, r1
- mov r5, r0
- ldreq r0, _020D25EC ; =0x021D5404
- ldrne r0, _020D25F0 ; =0x021D540C
- ldr r3, [r0, #0x0]
- cmp r3, #0x0
- beq _020D25A8
- ldr r0, [r0, #0x4]
- mov r2, r2, lsl #0x5
- cmp r2, r0
- addcs sp, sp, #0x64
- movcs r0, #0x0
- ldmcsia sp!, {r4-r5,lr}
- bxcs lr
- add r0, r3, r2
- mov r1, r5
- mov r2, #0x20
- bl MI_CpuCopy8
- add r0, sp, #0x18
- str r4, [r5, #0x20]
- bl FS_InitFile
- add r0, sp, #0x10
- mov r1, r5
- bl FS_GetOverlayFileID
- add r1, sp, #0x10
- add r0, sp, #0x18
- ldmia r1, {r1-r2}
- bl FS_OpenFileFast
-_020D2564:
- cmp r0, #0x0
- addeq sp, sp, #0x64
- moveq r0, #0x0
- ldmeqia sp!, {r4-r5,lr}
- bxeq lr
- ldr r1, [sp, #0x3c]
- add r0, sp, #0x18
- str r1, [r5, #0x24]
- ldr r2, [sp, #0x40]
- ldr r1, [sp, #0x3c]
- sub r1, r2, r1
- str r1, [r5, #0x28]
- bl FS_CloseFile
- add sp, sp, #0x64
- mov r0, #0x1
- ldmia sp!, {r4-r5,lr}
- bx lr
-_020D25A8:
- ldr r1, _020D25F4 ; =0x027FFE50
- ldr ip, _020D25F8 ; =0x027FFE58
- ldr r0, [r1, #0x0]
- ldr r3, _020D25FC ; =0x021D5414
- str r0, [sp, #0x0]
- ldr r1, [r1, #0x4]
- mov r0, r5
- str r1, [sp, #0x4]
- ldr r5, [r12, #0x0]
- mov r1, r4
- str r5, [sp, #0x8]
- ldr r4, [r12, #0x4]
- str r4, [sp, #0xc]
- bl FSi_LoadOverlayInfoCore
- add sp, sp, #0x64
- ldmia sp!, {r4-r5,lr}
- bx lr
- .balign 4
-_020D25EC: .word 0x021D5404
-_020D25F0: .word 0x021D540C
-_020D25F4: .word 0x027FFE50
-_020D25F8: .word 0x027FFE58
-_020D25FC: .word 0x021D5414
-
- arm_func_start FSi_LoadOverlayInfoCore
-FSi_LoadOverlayInfoCore: ; 0x020D2600
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x54
- movs r9, r1
- ldreq r5, [sp, #0x74]
- ldreq r6, [sp, #0x70]
- ldrne r5, [sp, #0x7c]
- ldrne r6, [sp, #0x78]
- mov r7, r2, lsl #0x5
- cmp r7, r5
- mov r4, r0
- mov r8, r3
- addcs sp, sp, #0x54
- movcs r0, #0x0
- ldmcsia sp!, {r4-r9,lr}
- bxcs lr
- add r0, sp, #0xc
- bl FS_InitFile
- mvn r12, #0x0
- add r0, sp, #0xc
- mov r1, r8
- add r2, r6, r7
- add r3, r6, r5
- str r12, [sp, #0x0]
- bl FS_OpenFileDirect
-_020D2660:
- cmp r0, #0
- addeq sp, sp, #0x54
- moveq r0, #0
- ldmeqia sp!, {r4-r9, lr}
- bxeq lr
- add r0, sp, #12
- mov r1, r4
- mov r2, #32
- bl FS_ReadFile
- cmp r0, #32
- beq _020D26A4
- add r0, sp, #12
- bl FS_CloseFile
- add sp, sp, #0x54
- mov r0, #0x0
- ldmia sp!, {r4-r9, lr}
- bx lr
-_020D26A4:
- add r0, sp, #0xC
- bl FS_CloseFile
- add r0, sp, #0x4
- mov r1, r4
- str r9, [r4, #0x20]
- bl FS_GetOverlayFileID
- add r1, sp, #0x4
- add r0, sp, #0xC
- ldmia r1, {r1, r2}
- bl FS_OpenFileFast
- cmp r0, #0x0
- addeq sp, sp, #0x54
- moveq r0, #0x0
- ldmeqia sp!, {r4-r9, lr}
- bxeq lr
- ldr r1, [sp, #0x30]
- add r0, sp, #0xC
- str r1, [r4, #0x24]
- ldr r2, [sp, #0x34]
- ldr r1, [sp, #0x30]
- sub r1, r2, r1
- str r1, [r4, #0x28]
- bl FS_CloseFile
- mov r0, #0x1
- add sp, sp, #0x54
- ldmia sp!, {r4-r9, lr}
- bx lr
-
- arm_func_start FS_GetOverlayFileID
-FS_GetOverlayFileID: ; 0x020D2710
- sub sp, sp, #0x8
- ldr r2, _020D2734 ; =0x021D5414
- str r2, [sp, #0x0]
- ldr r1, [r1, #0x18]
- str r1, [sp, #0x4]
- str r2, [r0, #0x0]
- str r1, [r0, #0x4]
- add sp, sp, #0x8
- bx lr
- .balign 4
-_020D2734: .word 0x021D5414
-
- arm_func_start FS_ClearOverlayImage
-FS_ClearOverlayImage: ; 0x020D2738
- stmdb sp!, {r4-r6,lr}
- ldr r5, [r0, #0x8]
- ldr r1, [r0, #0xc]
- ldr r6, [r0, #0x4]
- add r4, r5, r1
- mov r0, r6
- mov r1, r4
- bl IC_InvalidateRange
- mov r0, r6
- mov r1, r4
- bl DC_InvalidateRange
- add r0, r6, r5
- sub r2, r4, r5
- mov r1, #0x0
- bl MI_CpuFill8
- ldmia sp!, {r4-r6,lr}
- bx lr
-
- arm_func_start FSi_GetOverlayBinarySize
-FSi_GetOverlayBinarySize: ; 0x020D277C
- ldrb r1, [r0, #0x1f]
- ands r1, r1, #0x1
- ldrne r0, [r0, #0x1c]
- movne r0, r0, lsl #0x8
- movne r0, r0, lsr #0x8
- ldreq r0, [r0, #0x8]
- bx lr
diff --git a/arm9/asm/libmath.s b/arm9/asm/libmath.s
index 02dcfbcf..e841f5da 100644
--- a/arm9/asm/libmath.s
+++ b/arm9/asm/libmath.s
@@ -32,16 +32,16 @@ MATH_CalcSHA1: ; 0x020DDCA0
add r0, sp, #0x0
mov r5, r1
mov r4, r2
- bl MATH_SHA1Init
+ bl DGT_Hash2Reset
_020DDCBC: ; 0x020DDCBC
add r0, sp, #0x0
mov r1, r5
mov r2, r4
- bl MATH_SHA1Update
+ bl DGT_Hash2SetSource
_020DDCCC: ; 0x020DDCCC
add r0, sp, #0x0
mov r1, r6
- bl MATH_SHA1GetHash
+ bl DGT_Hash2GetDigest
add sp, sp, #0x68
ldmia sp!, {r4-r6,lr}
bx lr
diff --git a/arm9/asm/libmwcc.s b/arm9/asm/libmwcc.s
index fcabec42..a6013179 100644
--- a/arm9/asm/libmwcc.s
+++ b/arm9/asm/libmwcc.s
@@ -3100,10 +3100,15 @@ __close_console: ; 0x020EC68C
mov r0, #0x0
bx lr
+ .section .rodata
+__static_initializers:
+ .word 0
+
+ .section .text
arm_func_start __call_static_initializers
__call_static_initializers: ; 0x020EC694
stmdb sp!, {r4,lr}
- ldr r4, _020EC6BC ; =0x02104774
+ ldr r4, _020EC6BC ; =__static_initializers
b _020EC6A8
_020EC6A0:
blx r0
@@ -3115,12 +3120,12 @@ _020EC6A8:
bne _020EC6A0
ldmia sp!, {r4,pc}
.balign 4
-_020EC6BC: .word 0x02104774
+_020EC6BC: .word __static_initializers
arm_func_start __destroy_global_chain
__destroy_global_chain: ; 0x020EC6C0
stmdb sp!, {r3-r5,lr}
- ldr r4, _020EC700 ; =0x021D74C8
+ ldr r4, _020EC700 ; =__global_destructor_chain
ldr r2, [r4, #0x0]
cmp r2, #0x0
ldmeqia sp!, {r3-r5,pc}
@@ -3138,7 +3143,7 @@ _020EC6D8:
bne _020EC6D8
ldmia sp!, {r3-r5,pc}
.balign 4
-_020EC700: .word 0x021D74C8
+_020EC700: .word __global_destructor_chain
arm_func_start _ExitProcess
_ExitProcess: ; 0x020EC704
diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s
index d75850de..dfda1697 100644
--- a/arm9/asm/scrcmd.s
+++ b/arm9/asm/scrcmd.s
@@ -898,7 +898,7 @@ FUN_0203A038: ; 0x0203A038
str r1, [r0, #0x8]
ldrb r2, [r2, #0x0]
ldr r1, [r0, #0x78]
- bl FUN_021E2C24
+ bl MOD05_021E2C24
mov r0, #0x0
pop {r3, pc}
@@ -930,7 +930,7 @@ FUN_0203A04C: ; 0x0203A04C
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- bl FUN_021E2C24
+ bl MOD05_021E2C24
add r0, r5, #0x0
bl FUN_0200A8B8
mov r0, #0x0
@@ -968,7 +968,7 @@ FUN_0203A098: ; 0x0203A098
add r1, r5, #0x0
add r2, r6, #0x0
mov r3, #0x1
- bl FUN_021E2BD0
+ bl MOD05_021E2BD0
add r0, r5, #0x0
bl FUN_0200A8B8
ldr r1, _0203A0F8 ; =FUN_0203A2F0
@@ -1004,7 +1004,7 @@ FUN_0203A0FC: ; 0x0203A0FC
add r1, r4, #0x0
add r2, r6, #0x0
add r3, r7, #0x0
- bl FUN_021E2C58
+ bl MOD05_021E2C58
mov r0, #0x0
add sp, #0x8
pop {r3-r7, pc}
@@ -1034,7 +1034,7 @@ FUN_0203A13C: ; 0x0203A13C
add r1, r4, #0x0
add r2, r6, #0x0
add r3, r7, #0x0
- bl FUN_021E2C58
+ bl MOD05_021E2C58
ldr r1, _0203A184 ; =FUN_0203A2F0
add r0, r5, #0x0
bl SetupNativeScript
@@ -1085,7 +1085,7 @@ _0203A1AA:
add r0, r5, #0x0
add r1, r6, #0x0
mov r3, #0x1
- bl FUN_021E2BD0
+ bl MOD05_021E2BD0
add r0, r6, #0x0
bl FUN_0200A8B8
b _0203A1F4
@@ -1097,7 +1097,7 @@ _0203A1E2:
str r2, [sp, #0x4]
ldrh r2, [r4, #0x2]
ldrh r3, [r4, #0x4]
- bl FUN_021E2C58
+ bl MOD05_021E2C58
_0203A1F4:
ldr r1, _0203A20C ; =FUN_0203A2F0
add r0, r5, #0x0
@@ -1143,7 +1143,7 @@ FUN_0203A210: ; 0x0203A210
str r0, [sp, #0x0]
ldr r0, [r6, #0xc]
add r1, r7, #0x0
- bl FUN_02244210
+ bl MOD06_02244210
add r6, r0, #0x0
add r2, sp, #0x4
ldrb r2, [r2, #0x0]
@@ -1153,7 +1153,7 @@ FUN_0203A210: ; 0x0203A210
lsl r2, r2, #0x18
lsr r2, r2, #0x18
mov r3, #0x1
- bl FUN_021E2CBC
+ bl MOD05_021E2CBC
add r0, r6, #0x0
bl FUN_0200AB18
ldr r1, _0203A284 ; =FUN_0203A2F0
@@ -1174,7 +1174,7 @@ FUN_0203A288: ; 0x0203A288
add r4, r0, #0x0
add r0, sp, #0x4
add r1, r5, #0x0
- bl FUN_021E2BB8
+ bl MOD05_021E2BB8
mov r1, #0x3
add r0, sp, #0x4
strb r1, [r0, #0x2]
@@ -1184,7 +1184,7 @@ FUN_0203A288: ; 0x0203A288
add r0, r5, #0x0
add r2, r4, #0x0
mov r3, #0x0
- bl FUN_021E2BD0
+ bl MOD05_021E2BD0
ldr r1, _0203A2C0 ; =FUN_0203A2F0
add r0, r5, #0x0
bl SetupNativeScript
@@ -1207,7 +1207,7 @@ FUN_0203A2C4: ; 0x0203A2C4
str r1, [sp, #0x0]
ldrb r2, [r2, #0x0]
ldr r1, [r4, #0x78]
- bl FUN_021E2BD0
+ bl MOD05_021E2BD0
ldr r1, _0203A2EC ; =FUN_0203A2F0
add r0, r4, #0x0
bl SetupNativeScript
@@ -1247,7 +1247,7 @@ FUN_0203A304: ; 0x0203A304
add r0, r4, #0x0
lsr r2, r2, #0x18
mov r3, #0x1
- bl FUN_021E2BD0
+ bl MOD05_021E2BD0
ldr r1, _0203A33C ; =FUN_0203A2F0
add r0, r4, #0x0
bl SetupNativeScript
@@ -1271,7 +1271,7 @@ FUN_0203A340: ; 0x0203A340
add r4, r0, #0x0
add r0, sp, #0x4
add r1, r5, #0x0
- bl FUN_021E2BB8
+ bl MOD05_021E2BB8
lsl r2, r4, #0x18
mov r3, #0x1
add r0, sp, #0x4
@@ -1281,7 +1281,7 @@ FUN_0203A340: ; 0x0203A340
ldr r1, [r5, #0x78]
add r0, r5, #0x0
lsr r2, r2, #0x18
- bl FUN_021E2BD0
+ bl MOD05_021E2BD0
ldr r1, _0203A384 ; =FUN_0203A2F0
add r0, r5, #0x0
bl SetupNativeScript
@@ -1309,7 +1309,7 @@ FUN_0203A388: ; 0x0203A388
ldr r1, [r4, #0x78]
add r0, r4, #0x0
lsr r2, r2, #0x18
- bl FUN_021E2BD0
+ bl MOD05_021E2BD0
ldr r1, _0203A3C0 ; =FUN_0203A2F0
add r0, r4, #0x0
bl SetupNativeScript
@@ -1337,7 +1337,7 @@ FUN_0203A3C4: ; 0x0203A3C4
ldr r1, [r4, #0x78]
add r0, r4, #0x0
mov r3, #0x1
- bl FUN_021E2BD0
+ bl MOD05_021E2BD0
ldr r1, _0203A3FC ; =FUN_0203A2F0
add r0, r4, #0x0
bl SetupNativeScript
@@ -1365,12 +1365,12 @@ FUN_0203A400: ; 0x0203A400
add r0, r5, #0x0
add r2, r4, #0x0
mov r3, #0x1
- bl FUN_021E2BD0
+ bl MOD05_021E2BD0
b _0203A448
_0203A428:
add r0, sp, #0x4
add r1, r5, #0x0
- bl FUN_021E2BB8
+ bl MOD05_021E2BB8
mov r1, #0x1
add r0, sp, #0x4
strb r1, [r0, #0x0]
@@ -1381,7 +1381,7 @@ _0203A428:
add r0, r5, #0x0
add r2, r4, #0x0
mov r3, #0x0
- bl FUN_021E2BD0
+ bl MOD05_021E2BD0
_0203A448:
ldr r1, _0203A458 ; =FUN_0203A2F0
add r0, r5, #0x0
@@ -1854,12 +1854,12 @@ _0203A7E0:
ldr r0, [r4, #0x60]
ldr r1, [sp, #0x10]
add r2, r6, #0x0
- bl FUN_021E8128
+ bl MOD05_021E8128
ldr r0, [r4, #0x60]
mov r1, #0x1
- bl FUN_021E8130
+ bl MOD05_021E8130
add r0, r4, #0x0
- bl FUN_021E8158
+ bl MOD05_021E8158
ldr r2, [sp, #0x18]
ldr r0, [r5, #0x78]
ldr r1, [sp, #0xc]
@@ -1872,7 +1872,7 @@ _0203A7E0:
ldr r2, [r2, #0x0]
bl FUN_0200B7B8
ldr r0, [r4, #0x60]
- bl FUN_021E8140
+ bl MOD05_021E8140
mov r3, #0x0
str r3, [sp, #0x0]
str r3, [sp, #0x4]
@@ -1899,10 +1899,10 @@ FUN_0203A830: ; 0x0203A830
add r2, r0, #0x0
ldr r0, [r4, #0x60]
add r1, r5, #0x0
- bl FUN_021E8128
+ bl MOD05_021E8128
ldr r0, [r4, #0x60]
mov r1, #0x1
- bl FUN_021E8130
+ bl MOD05_021E8130
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
@@ -1918,7 +1918,7 @@ FUN_0203A85C: ; 0x0203A85C
str r1, [r0, #0x8]
ldrb r1, [r2, #0x0]
ldr r0, [r3, #0x60]
- bl FUN_021E8130
+ bl MOD05_021E8130
mov r0, #0x1
pop {r3, pc}
.balign 4
@@ -1930,7 +1930,7 @@ FUN_0203A878: ; 0x0203A878
add r0, #0x80
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x60]
- bl FUN_021E8148
+ bl MOD05_021E8148
cmp r0, #0x1
bne _0203A88E
mov r0, #0x0
@@ -1950,7 +1950,7 @@ FUN_0203A8A0: ; 0x0203A8A0
add r0, #0x80
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x60]
- bl FUN_021E8148
+ bl MOD05_021E8148
cmp r0, #0x1
bne _0203A8B4
mov r0, #0x1
@@ -2000,7 +2000,7 @@ FUN_0203A8B8: ; 0x0203A8B8
ldr r2, [r6, #0x0]
bl FUN_0200B7B8
ldr r0, [r4, #0x60]
- bl FUN_021E8140
+ bl MOD05_021E8140
add r4, r0, #0x0
add r0, r5, #0x0
add r0, #0x80
@@ -2042,7 +2042,7 @@ FUN_0203A94C: ; 0x0203A94C
bl FUN_020394B8
add r4, r0, #0x0
ldr r0, [r5, #0x60]
- bl FUN_021E8144
+ bl MOD05_021E8144
ldrb r0, [r6, #0x0]
ldr r5, _0203A9E8 ; =0x0000FFFF
bl FUN_020546C8
@@ -2376,7 +2376,7 @@ FUN_0203AB8C: ; 0x0203AB8C
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x14]
add r0, r6, #0x0
- bl FUN_021E1BF8
+ bl MOD05_021E1BF8
ldr r1, [sp, #0x1c]
str r0, [r1, #0x0]
ldr r0, [sp, #0x24]
@@ -2441,7 +2441,7 @@ FUN_0203AC14: ; 0x0203AC14
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x14]
add r0, r6, #0x0
- bl FUN_021E1BF8
+ bl MOD05_021E1BF8
ldr r1, [sp, #0x1c]
str r0, [r1, #0x0]
ldr r0, [sp, #0x24]
@@ -2467,7 +2467,7 @@ FUN_0203AC9C: ; 0x0203AC9C
str r2, [r4, #0x8]
ldrb r2, [r3, #0x0]
ldr r0, [r0, #0x0]
- bl FUN_021E1C4C
+ bl MOD05_021E1C4C
mov r0, #0x0
pop {r4, pc}
.balign 4
@@ -2498,7 +2498,7 @@ FUN_0203ACC4: ; 0x0203ACC4
add r2, r0, #0x0
ldr r0, [r4, #0x0]
add r1, r6, #0x0
- bl FUN_021E1C4C
+ bl MOD05_021E1C4C
mov r0, #0x0
pop {r4-r6, pc}
.balign 4
@@ -2512,7 +2512,7 @@ FUN_0203AD08: ; 0x0203AD08
mov r1, #0x0
bl FUN_02039438
ldr r0, [r0, #0x0]
- bl FUN_021E1C54
+ bl MOD05_021E1C54
ldr r1, _0203AD28 ; =FUN_0203AD2C
add r0, r4, #0x0
bl SetupNativeScript
@@ -2552,7 +2552,7 @@ FUN_0203AD54: ; 0x0203AD54
mov r1, #0x0
bl FUN_02039438
ldr r0, [r0, #0x0]
- bl FUN_021E1C54
+ bl MOD05_021E1C54
ldr r1, _0203AD74 ; =FUN_0203AD78
add r0, r4, #0x0
bl SetupNativeScript
@@ -2588,7 +2588,7 @@ FUN_0203AD78: ; 0x0203AD78
mov r0, #0x8
strh r0, [r4, #0x0]
ldr r0, [r6, #0x0]
- bl FUN_021E1ECC
+ bl MOD05_021E1ECC
mov r0, #0x1
pop {r4-r6, pc}
_0203ADB8:
@@ -2655,7 +2655,7 @@ FUN_0203ADC4: ; 0x0203ADC4
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x14]
add r0, r6, #0x0
- bl FUN_021E1F34
+ bl MOD05_021E1F34
ldr r1, [sp, #0x1c]
str r0, [r1, #0x0]
ldr r0, [sp, #0x24]
@@ -2720,7 +2720,7 @@ FUN_0203AE4C: ; 0x0203AE4C
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x14]
add r0, r6, #0x0
- bl FUN_021E1F34
+ bl MOD05_021E1F34
ldr r1, [sp, #0x1c]
str r0, [r1, #0x0]
ldr r0, [sp, #0x24]
@@ -2769,7 +2769,7 @@ FUN_0203AED4: ; 0x0203AED4
lsr r1, r1, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_021E1F58
+ bl MOD05_021E1F58
mov r0, #0x0
pop {r3-r7, pc}
@@ -2782,7 +2782,7 @@ FUN_0203AF34: ; 0x0203AF34
mov r1, #0x0
bl FUN_02039438
ldr r0, [r0, #0x0]
- bl FUN_021E1F60
+ bl MOD05_021E1F60
ldr r1, _0203AF54 ; =FUN_0203AD2C
add r0, r4, #0x0
bl SetupNativeScript
@@ -2804,7 +2804,7 @@ FUN_0203AF58: ; 0x0203AF58
str r1, [r4, #0x8]
ldrb r1, [r2, #0x0]
ldr r0, [r0, #0x0]
- bl FUN_021E26CC
+ bl MOD05_021E26CC
ldr r1, _0203AF80 ; =FUN_0203AD2C
add r0, r4, #0x0
bl SetupNativeScript
@@ -2826,7 +2826,7 @@ FUN_0203AF84: ; 0x0203AF84
str r1, [r4, #0x8]
ldrb r1, [r2, #0x0]
ldr r0, [r0, #0x0]
- bl FUN_021E2B80
+ bl MOD05_021E2B80
mov r0, #0x1
pop {r4, pc}
@@ -2843,7 +2843,7 @@ FUN_0203AFA4: ; 0x0203AFA4
str r1, [r4, #0x8]
ldrb r1, [r2, #0x0]
ldr r0, [r0, #0x0]
- bl FUN_021E2B9C
+ bl MOD05_021E2B9C
mov r0, #0x1
pop {r4, pc}
@@ -3479,7 +3479,7 @@ FUN_0203B468: ; 0x0203B468
ldr r1, [r1, #0x0]
add r4, r0, #0x0
ldr r1, [r1, #0x24]
- bl FUN_021EF5E0
+ bl MOD05_021EF5E0
add r5, #0x80
ldr r1, [r5, #0x0]
add r0, r4, #0x0
@@ -3512,7 +3512,7 @@ FUN_0203B500: ; 0x0203B500
ldr r1, [r1, #0x0]
add r4, r0, #0x0
ldr r1, [r1, #0x24]
- bl FUN_021EF5E0
+ bl MOD05_021EF5E0
add r5, #0x80
ldr r1, [r5, #0x0]
add r0, r4, #0x0
@@ -3540,7 +3540,7 @@ FUN_0203B544: ; 0x0203B544
pop {r3-r5, pc}
_0203B568:
add r1, r4, #0x0
- bl FUN_021F1EC0
+ bl MOD05_021F1EC0
mov r0, #0x0
pop {r3-r5, pc}
.balign 4
@@ -3669,56 +3669,56 @@ FUN_0203B640: ; 0x0203B640
cmp r7, #0x0
beq _0203B696
lsl r0, r7, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0203B6A4
_0203B696:
lsl r0, r7, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0203B6A4:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x0]
cmp r6, #0x0
beq _0203B6C0
lsl r0, r6, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0203B6CE
_0203B6C0:
lsl r0, r6, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0203B6CE:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x4]
cmp r4, #0x0
beq _0203B6EA
lsl r0, r4, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0203B6F8
_0203B6EA:
lsl r0, r4, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0203B6F8:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x8]
add r0, r5, #0x0
add r0, #0x80
@@ -4254,7 +4254,7 @@ FUN_0203BB34: ; 0x0203BB34
ldr r0, [r5, #0x0]
ldr r1, [r4, #0x0]
add r2, r7, #0x0
- bl FUN_021E1858
+ bl MOD05_021E1858
strh r0, [r6, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
@@ -4446,7 +4446,7 @@ FUN_0203BCBC: ; 0x0203BCBC
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
- bl FUN_021F02C4
+ bl MOD05_021F02C4
mov r0, #0x1
pop {r3, pc}
.balign 4
@@ -4723,7 +4723,7 @@ FUN_0203BECC: ; 0x0203BECC
add r2, r0, #0x0
ldr r0, [r5, #0x74]
ldr r1, [r4, #0x0]
- bl FUN_021E1374
+ bl MOD05_021E1374
mov r0, #0x1
pop {r4-r6, pc}
.balign 4
@@ -4741,7 +4741,7 @@ FUN_0203BF00: ; 0x0203BF00
beq _0203BF1C
add r4, #0x80
ldr r0, [r4, #0x0]
- bl FUN_021E1994
+ bl MOD05_021E1994
_0203BF1C:
mov r0, #0x0
pop {r4, pc}
@@ -5134,7 +5134,7 @@ FUN_0203C200: ; 0x0203C200
mov r2, #0x8
str r0, [r6, #0x0]
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #0x0]
strh r7, [r4, #0x4]
strh r0, [r4, #0x6]
@@ -5889,7 +5889,7 @@ FUN_0203C844: ; 0x0203C844
add r1, r0, #0x0
ldr r0, [r5, #0x74]
add r2, r4, #0x0
- bl FUN_021E6990
+ bl MOD05_021E6990
mov r0, #0x1
pop {r3-r5, pc}
@@ -5918,7 +5918,7 @@ FUN_0203C874: ; 0x0203C874
add r1, r0, #0x0
ldr r0, [r5, #0x74]
add r2, r4, #0x0
- bl FUN_021E6410
+ bl MOD05_021E6410
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
@@ -5942,7 +5942,7 @@ FUN_0203C8B4: ; 0x0203C8B4
add r1, r0, #0x0
ldr r0, [r5, #0x74]
add r2, r4, #0x0
- bl FUN_021E6BF4
+ bl MOD05_021E6BF4
mov r0, #0x1
pop {r3-r5, pc}
@@ -5999,7 +5999,7 @@ FUN_0203C930: ; 0x0203C930
ldr r0, [r4, #0x0]
ldr r0, [r0, #0x4]
ldr r0, [r0, #0xc]
- bl FUN_021DC174
+ bl MOD05_021DC174
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
@@ -6022,7 +6022,7 @@ FUN_0203C960: ; 0x0203C960
ldr r0, [r4, #0x0]
ldr r0, [r0, #0x4]
ldr r0, [r0, #0xc]
- bl FUN_021DC174
+ bl MOD05_021DC174
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
@@ -6063,7 +6063,7 @@ FUN_0203C990: ; 0x0203C990
ldr r0, [r0, #0x0]
mov r1, #0x0
add r2, r6, #0x0
- bl FUN_0224666C
+ bl MOD06_0224666C
str r0, [r4, #0x0]
ldr r1, _0203C9F4 ; =FUN_0203C9F8
add r0, r5, #0x0
@@ -6082,11 +6082,11 @@ FUN_0203C9F8: ; 0x0203C9F8
bl FUN_02039438
add r4, r0, #0x0
ldr r0, [r4, #0x0]
- bl FUN_022466A0
+ bl MOD06_022466A0
cmp r0, #0x1
bne _0203CA1A
ldr r0, [r4, #0x0]
- bl FUN_022466AC
+ bl MOD06_022466AC
mov r0, #0x1
pop {r4, pc}
_0203CA1A:
@@ -6098,7 +6098,7 @@ _0203CA1A:
FUN_0203CA20: ; 0x0203CA20
push {r3, lr}
ldr r0, [r0, #0x74]
- bl FUN_021E7030
+ bl MOD05_021E7030
mov r0, #0x1
pop {r3, pc}
@@ -6156,11 +6156,11 @@ FUN_0203CA5C: ; 0x0203CA5C
ldr r0, [r0, #0x0]
mov r1, #0x2
ldr r0, [r0, #0x38]
- bl FUN_021E5FD8
+ bl MOD05_021E5FD8
add r4, #0x80
ldr r0, [r4, #0x0]
ldr r0, [r0, #0x38]
- bl FUN_021E5FE0
+ bl MOD05_021E5FE0
b _0203CAE4
_0203CAA4:
add r0, r4, #0x0
@@ -6168,12 +6168,12 @@ _0203CAA4:
ldr r0, [r0, #0x0]
mov r1, #0x1
ldr r0, [r0, #0x38]
- bl FUN_021E5FD8
+ bl MOD05_021E5FD8
add r0, r4, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x38]
- bl FUN_021E5FE0
+ bl MOD05_021E5FE0
add r0, r4, #0x0
add r0, #0x80
ldr r0, [r0, #0x0]
@@ -6202,7 +6202,7 @@ FUN_0203CAE8: ; 0x0203CAE8
ldr r0, [r0, #0x0]
mov r1, #0x2
ldr r0, [r0, #0x38]
- bl FUN_021E5FD8
+ bl MOD05_021E5FD8
add r4, #0x80
mov r1, #0x12
ldr r0, [r4, #0x0]
@@ -6264,7 +6264,7 @@ FUN_0203CB60: ; 0x0203CB60
add r0, #0x80
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x38]
- bl FUN_021E5FE0
+ bl MOD05_021E5FE0
mov r0, #0x0
pop {r3, pc}
@@ -6297,7 +6297,7 @@ FUN_0203CB70: ; 0x0203CB70
bl FUN_0202A990
add r1, r6, #0x0
add r2, r4, #0x0
- bl FUN_02245910
+ bl MOD06_02245910
mov r0, #0x0
pop {r4-r6, pc}
.balign 4
@@ -6429,7 +6429,7 @@ FUN_0203CC88: ; 0x0203CC88
ldr r3, [sp, #0x4]
add r0, r4, #0x0
add r1, r7, #0x0
- bl FUN_02240790
+ bl MOD06_02240790
ldr r1, _0203CCF4 ; =FUN_0203CCF8
add r0, r5, #0x0
str r6, [r5, #0x64]
@@ -6451,7 +6451,7 @@ FUN_0203CCF8: ; 0x0203CCF8
lsr r1, r1, #0x10
bl FUN_020394B8
add r4, r0, #0x0
- bl FUN_022407DC
+ bl MOD06_022407DC
cmp r0, #0x0
bne _0203CD18
mov r0, #0x0
@@ -6500,7 +6500,7 @@ FUN_0203CD20: ; 0x0203CD20
ldr r3, [sp, #0x4]
add r0, r4, #0x0
add r1, r7, #0x0
- bl FUN_022407F8
+ bl MOD06_022407F8
ldr r1, _0203CD8C ; =FUN_0203CD90
add r0, r5, #0x0
str r6, [r5, #0x64]
@@ -6522,7 +6522,7 @@ FUN_0203CD90: ; 0x0203CD90
lsr r1, r1, #0x10
bl FUN_020394B8
add r4, r0, #0x0
- bl FUN_02240844
+ bl MOD06_02240844
cmp r0, #0x0
bne _0203CDB0
mov r0, #0x0
@@ -6653,7 +6653,7 @@ FUN_0203CE8C: ; 0x0203CE8C
bl FUN_02034E30
bl FUN_02034DD0
ldr r0, [r0, #0x0]
- bl FUN_021E2608
+ bl MOD05_021E2608
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
@@ -6688,7 +6688,7 @@ FUN_0203CEBC: ; 0x0203CEBC
str r0, [sp, #0x0]
ldr r0, [sp, #0x4]
add r2, r4, #0x0
- bl FUN_021E2464
+ bl MOD05_021E2464
mov r0, #0x0
add sp, #0x8
pop {r3-r7, pc}
@@ -6971,7 +6971,7 @@ FUN_0203D140: ; 0x0203D140
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
- bl FUN_021F4DC8
+ bl MOD05_021F4DC8
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -6990,7 +6990,7 @@ FUN_0203D150: ; 0x0203D150
bl FUN_020394B8
add r5, r0, #0x0
add r0, r4, #0x0
- bl FUN_021F4D80
+ bl MOD05_021F4D80
strh r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
@@ -7016,7 +7016,7 @@ FUN_0203D194: ; 0x0203D194
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
- bl FUN_021F4E7C
+ bl MOD05_021F4E7C
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -7094,7 +7094,7 @@ FUN_0203D214: ; 0x0203D214
bl FUN_020394B8
add r5, r0, #0x0
add r0, r4, #0x0
- bl FUN_021E85FC
+ bl MOD05_021E85FC
strh r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
@@ -7104,7 +7104,7 @@ FUN_0203D214: ; 0x0203D214
FUN_0203D23C: ; 0x0203D23C
push {r3, lr}
ldr r0, [r0, #0x74]
- bl FUN_021E3424
+ bl MOD05_021E3424
mov r0, #0x1
pop {r3, pc}
@@ -8277,7 +8277,7 @@ FUN_0203DB88: ; 0x0203DB88
_0203DBC6:
add r0, r5, #0x0
add r1, r4, #0x0
- bl FUN_021F1EC0
+ bl MOD05_021F1EC0
mov r0, #0x0
pop {r4-r6, pc}
.balign 4
@@ -8340,7 +8340,7 @@ FUN_0203DC00: ; 0x0203DC00
ldr r0, [r5, #0x0]
add r1, r7, r1
add r2, r2, r4
- bl FUN_021DAE40
+ bl MOD05_021DAE40
mov r0, #0x0
pop {r3-r7, pc}
.balign 4
@@ -8354,7 +8354,7 @@ FUN_0203DC58: ; 0x0203DC58
add r0, #0x80
ldrb r1, [r2, #0x0]
ldr r0, [r0, #0x0]
- bl FUN_021DAF78
+ bl MOD05_021DAF78
mov r0, #0x1
pop {r3, pc}
.balign 4
@@ -8368,7 +8368,7 @@ FUN_0203DC70: ; 0x0203DC70
add r0, #0x80
ldrb r1, [r2, #0x0]
ldr r0, [r0, #0x0]
- bl FUN_021DAF98
+ bl MOD05_021DAF98
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -8382,7 +8382,7 @@ FUN_0203DC88: ; 0x0203DC88
add r0, #0x80
ldrb r1, [r2, #0x0]
ldr r0, [r0, #0x0]
- bl FUN_021DAED4
+ bl MOD05_021DAED4
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -8396,7 +8396,7 @@ FUN_0203DCA0: ; 0x0203DCA0
add r0, #0x80
ldrb r1, [r2, #0x0]
ldr r0, [r0, #0x0]
- bl FUN_021DAF28
+ bl MOD05_021DAF28
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -8416,7 +8416,7 @@ FUN_0203DCC8: ; 0x0203DCC8
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
- bl FUN_02241230
+ bl MOD06_02241230
mov r0, #0x1
pop {r3, pc}
.balign 4
@@ -8436,7 +8436,7 @@ FUN_0203DCE8: ; 0x0203DCE8
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
- bl FUN_02241914
+ bl MOD06_02241914
mov r0, #0x1
pop {r3, pc}
.balign 4
@@ -8488,7 +8488,7 @@ FUN_0203DD34: ; 0x0203DD34
str r1, [r0, #0x8]
ldrb r1, [r2, #0x0]
add r0, r3, #0x0
- bl FUN_02242A38
+ bl MOD06_02242A38
mov r0, #0x1
pop {r3, pc}
.balign 4
@@ -8536,7 +8536,7 @@ FUN_0203DD60: ; 0x0203DD60
add r2, r0, #0x0
ldr r1, [r1, #0x0]
add r0, r7, #0x0
- bl FUN_0224CA54
+ bl MOD18_0224CA54
str r0, [r4, #0x0]
ldr r1, _0203DDBC ; =FUN_0203DDC0
add r0, r5, #0x0
@@ -8564,7 +8564,7 @@ FUN_0203DDC0: ; 0x0203DDC0
bl FUN_020394B8
add r5, r0, #0x0
ldr r0, [r4, #0x0]
- bl FUN_0224CA2C
+ bl MOD18_0224CA2C
strh r0, [r5, #0x0]
ldrh r1, [r5, #0x0]
ldr r0, _0203DDFC ; =0x0000FFFE
@@ -8594,7 +8594,7 @@ FUN_0203DE00: ; 0x0203DE00
add r0, #0x80
ldr r0, [r0, #0x0]
bl FUN_020394F0
- bl FUN_0224CA58
+ bl MOD06_0224CA58
strb r0, [r4, #0x0]
ldr r1, _0203DE34 ; =FUN_0203DE38
add r0, r5, #0x0
@@ -8618,7 +8618,7 @@ FUN_0203DE38: ; 0x0203DE38
thumb_func_start FUN_0203DE4C
FUN_0203DE4C: ; 0x0203DE4C
push {r3, lr}
- bl FUN_0224CA94
+ bl MOD11_0224CA94
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -8638,7 +8638,7 @@ FUN_0203DE58: ; 0x0203DE58
bl FUN_020394F0
add r1, r0, #0x0
add r0, r5, #0x0
- bl FUN_0224CAA0
+ bl MOD18_0224CAA0
mov r0, #0x0
pop {r3-r5, pc}
.balign 4
@@ -8658,7 +8658,7 @@ FUN_0203DE80: ; 0x0203DE80
bl FUN_020394F0
add r1, r0, #0x0
add r0, r5, #0x0
- bl FUN_0224CAB4
+ bl MOD18_0224CAB4
mov r0, #0x0
pop {r3-r5, pc}
.balign 4
@@ -8673,7 +8673,7 @@ FUN_0203DEA8: ; 0x0203DEA8
mov r1, #0x1
ldr r0, [r0, #0x74]
add r2, r1, #0x0
- bl FUN_02242BE0
+ bl MOD06_02242BE0
mov r0, #0x1
add sp, #0x8
pop {r3, pc}
@@ -8812,7 +8812,7 @@ FUN_0203DFA8: ; 0x0203DFA8
add r5, r0, #0x0
bl FUN_0201B9EC
add r1, r5, #0x0
- blx _s32_div_f
+ bl _s32_div_f
strh r1, [r4, #0x0]
mov r0, #0x1
pop {r3-r5, pc}
@@ -8837,7 +8837,7 @@ FUN_0203DFE0: ; 0x0203DFE0
add r5, r0, #0x0
bl FUN_0201B9EC
add r1, r5, #0x0
- blx _s32_div_f
+ bl _s32_div_f
strh r1, [r4, #0x0]
mov r0, #0x1
pop {r3-r5, pc}
@@ -8864,7 +8864,7 @@ FUN_0203E018: ; 0x0203E018
bl FUN_020394F0
add r1, r0, #0x0
add r0, r4, #0x0
- bl FUN_021F3A18
+ bl MOD05_021F3A18
strh r0, [r6, #0x0]
mov r0, #0x0
pop {r4-r6, pc}
@@ -8884,7 +8884,7 @@ FUN_0203E054: ; 0x0203E054
bl FUN_020394F0
add r1, r0, #0x0
add r0, r5, #0x0
- bl FUN_021F3AB4
+ bl MOD05_021F3AB4
mov r0, #0x0
pop {r3-r5, pc}
@@ -8922,7 +8922,7 @@ FUN_0203E078: ; 0x0203E078
add r0, r4, #0x0
lsr r1, r1, #0x18
lsr r2, r2, #0x18
- bl FUN_021F3B7C
+ bl MOD05_021F3B7C
mov r0, #0x0
pop {r3-r7, pc}
@@ -8960,7 +8960,7 @@ FUN_0203E0CC: ; 0x0203E0CC
add r0, r4, #0x0
lsr r1, r1, #0x18
lsr r2, r2, #0x18
- bl FUN_021F3B4C
+ bl MOD05_021F3B4C
mov r0, #0x0
pop {r3-r7, pc}
@@ -9394,7 +9394,7 @@ FUN_0203E4A0: ; 0x0203E4A0
add r0, #0x80
ldr r0, [r0, #0x0]
ldr r0, [r0, #0xc]
- bl FUN_0224CBB0
+ bl MOD06_0224CBB0
mov r0, #0x0
pop {r3, pc}
@@ -9412,7 +9412,7 @@ FUN_0203E4B0: ; 0x0203E4B0
add r4, r0, #0x0
ldr r0, [r5, #0x0]
ldr r0, [r0, #0xc]
- bl FUN_0224CC24
+ bl MOD06_0224CC24
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
@@ -9642,7 +9642,7 @@ FUN_0203E684: ; 0x0203E684
add r6, r0, #0x0
ldr r0, [r5, #0x0]
add r1, r4, #0x0
- bl FUN_022456E8
+ bl MOD06_022456E8
strh r0, [r6, #0x0]
mov r0, #0x1
pop {r4-r6, pc}
@@ -9680,7 +9680,7 @@ FUN_0203E6C4: ; 0x0203E6C4
ldrh r1, [r4, #0x0]
ldr r0, [r5, #0x0]
add r2, r6, #0x0
- bl FUN_0224525C
+ bl MOD06_0224525C
mov r0, #0x1
pop {r4-r6, pc}
@@ -9701,7 +9701,7 @@ FUN_0203E6FC: ; 0x0203E6FC
add r4, r0, #0x0
ldr r0, [r5, #0x0]
add r1, r6, #0x0
- bl FUN_02245340
+ bl MOD06_02245340
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r4-r6, pc}
@@ -9765,7 +9765,7 @@ FUN_0203E774: ; 0x0203E774
add r4, r0, #0x0
bl FUN_0201B9EC
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x10
lsr r6, r0, #0x10
ldr r0, [sp, #0x0]
@@ -9885,7 +9885,7 @@ FUN_0203E870: ; 0x0203E870
str r0, [r5, #0x8]
ldrb r1, [r1, #0x0]
mov r0, #0xb
- bl FUN_0224884C
+ bl MOD06_0224884C
str r0, [r4, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
@@ -9907,7 +9907,7 @@ FUN_0203E894: ; 0x0203E894
bl FUN_020394B8
add r5, r0, #0x0
ldr r0, [r4, #0x0]
- bl FUN_022488EC
+ bl MOD06_022488EC
strh r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
@@ -9930,7 +9930,7 @@ FUN_0203E8C4: ; 0x0203E8C4
bl FUN_020394B8
add r5, r0, #0x0
ldr r0, [r4, #0x0]
- bl FUN_022488F4
+ bl MOD06_022488F4
strh r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
@@ -9969,7 +9969,7 @@ FUN_0203E928: ; 0x0203E928
mov r1, #0x14
bl FUN_02039438
ldr r0, [r0, #0x0]
- bl FUN_022488CC
+ bl MOD06_022488CC
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -10144,7 +10144,7 @@ FUN_0203EA90: ; 0x0203EA90
bl FUN_020394B8
add r1, r0, #0x0
ldr r0, [r4, #0x74]
- bl FUN_022411F4
+ bl MOD06_022411F4
mov r0, #0x1
pop {r4, pc}
@@ -10187,10 +10187,10 @@ FUN_0203EAB0: ; 0x0203EAB0
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r5, #0x0
- bl FUN_021F61E8
+ bl MOD05_021F61E8
strh r0, [r4, #0x0]
add r0, r5, #0x0
- bl FUN_021F61DC
+ bl MOD05_021F61DC
strh r0, [r6, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
@@ -10211,7 +10211,7 @@ FUN_0203EB20: ; 0x0203EB20
lsl r1, r1, #0x18
ldr r0, [r4, #0x0]
lsr r1, r1, #0x18
- bl FUN_0224C27C
+ bl MOD06_0224C27C
mov r0, #0x1
pop {r4, pc}
.balign 4
@@ -10241,7 +10241,7 @@ FUN_0203EB48: ; 0x0203EB48
ldr r0, [r5, #0x0]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
- bl FUN_0224C520
+ bl MOD06_0224C520
mov r0, #0x1
pop {r3-r5, pc}
.balign 4
@@ -10349,7 +10349,7 @@ FUN_0203EBE4: ; 0x0203EBE4
ldr r2, [sp, #0x8]
ldr r3, [sp, #0xc]
add r1, r7, #0x0
- bl FUN_0224D14C
+ bl MOD06_0224D14C
add r5, r0, #0x0
mov r0, #0x0
mvn r0, r0
@@ -10415,7 +10415,7 @@ FUN_0203ECD8: ; 0x0203ECD8
str r1, [r0, #0x8]
ldrb r1, [r2, #0x0]
add r0, r3, #0x0
- bl FUN_0224C678
+ bl MOD06_0224C678
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -10431,7 +10431,7 @@ FUN_0203ECF4: ; 0x0203ECF4
str r1, [r0, #0x8]
ldrb r1, [r2, #0x0]
add r0, r3, #0x0
- bl FUN_0224C6E8
+ bl MOD06_0224C6E8
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -10447,7 +10447,7 @@ FUN_0203ED10: ; 0x0203ED10
str r1, [r0, #0x8]
ldrb r1, [r2, #0x0]
add r0, r3, #0x0
- bl FUN_0224C6F4
+ bl MOD06_0224C6F4
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -10521,7 +10521,7 @@ FUN_0203EDA4: ; 0x0203EDA4
add r5, #0x80
str r0, [r4, #0x0]
ldr r0, [r5, #0x0]
- bl FUN_021E7184
+ bl MOD05_021E7184
str r0, [r4, #0x0]
mov r0, #0x1
pop {r3-r5, pc}
@@ -10535,7 +10535,7 @@ FUN_0203EDC8: ; 0x0203EDC8
mov r1, #0x16
bl FUN_02039438
ldr r0, [r0, #0x0]
- bl FUN_021E71E8
+ bl MOD05_021E71E8
mov r0, #0x1
pop {r3, pc}
.balign 4
@@ -10555,7 +10555,7 @@ FUN_0203EDE0: ; 0x0203EDE0
lsl r1, r1, #0x18
ldr r0, [r4, #0x0]
lsr r1, r1, #0x18
- bl FUN_0224E554
+ bl MOD06_0224E554
mov r0, #0x1
pop {r4, pc}
.balign 4
@@ -10611,7 +10611,7 @@ FUN_0203EE58: ; 0x0203EE58
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
- bl FUN_0224E764
+ bl MOD06_0224E764
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -10621,7 +10621,7 @@ FUN_0203EE68: ; 0x0203EE68
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
- bl FUN_0224E7C4
+ bl MOD06_0224E7C4
mov r0, #0x1
pop {r3, pc}
.balign 4
@@ -11059,7 +11059,7 @@ _0203F1E0:
_0203F1F8:
bl FUN_0201B9EC
add r1, r6, #0x0
- blx _s32_div_f
+ bl _s32_div_f
mov r4, #0x0
add r2, sp, #0x4
_0203F206:
@@ -11485,7 +11485,7 @@ _0203F54C:
_0203F556:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0x19
bge _0203F568
ldr r7, _0203F5CC ; =0x0000010D
@@ -11493,7 +11493,7 @@ _0203F556:
_0203F568:
bl FUN_0201B9EC
mov r1, #0x6
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x10
lsr r1, r0, #0x10
mov r0, #0x6
@@ -11900,7 +11900,7 @@ FUN_0203F880: ; 0x0203F880
_0203F8A2:
bl FUN_0201B9EC
mov r1, #0x65
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x10
lsr r0, r0, #0x10
cmp r0, r4
@@ -11945,17 +11945,17 @@ FUN_0203F8C0: ; 0x0203F8C0
_0203F8FC:
mov r2, #0x0
mov r3, #0x20
- bl FUN_0224F12C
+ bl MOD06_0224F12C
b _0203F91E
_0203F906:
mov r2, #0x1
mov r3, #0x20
- bl FUN_0224F12C
+ bl MOD06_0224F12C
b _0203F91E
_0203F910:
mov r2, #0x2
mov r3, #0x20
- bl FUN_0224F12C
+ bl MOD06_0224F12C
b _0203F91E
_0203F91A:
bl ErrorHandling
@@ -12002,13 +12002,13 @@ FUN_0203F954: ; 0x0203F954
add r4, #0x80
ldr r0, [r4, #0x0]
ldr r0, [r0, #0x10]
- bl FUN_02239944
+ bl MOD06_02239944
b _0203F982
_0203F978:
add r4, #0x80
ldr r0, [r4, #0x0]
ldr r0, [r0, #0x10]
- bl FUN_02239AAC
+ bl MOD06_02239AAC
_0203F982:
mov r0, #0x1
pop {r4, pc}
@@ -12389,9 +12389,9 @@ FUN_0203FC80: ; 0x0203FC80
add r0, r5, #0x0
mov r1, #0x4
mov r2, #0x3
- bl FUN_021E8588
+ bl MOD05_021E8588
str r0, [r4, #0x0]
- bl FUN_021E84F4
+ bl MOD05_021E84F4
_0203FCAA:
mov r0, #0x0
pop {r3-r5, pc}
@@ -12411,9 +12411,9 @@ FUN_0203FCB0: ; 0x0203FCB0
cmp r0, #0x0
bne _0203FCD6
ldr r0, [r4, #0x0]
- bl FUN_021E856C
+ bl MOD05_021E856C
ldr r0, [r4, #0x0]
- bl FUN_021E85E4
+ bl MOD05_021E85E4
_0203FCD6:
mov r0, #0x0
pop {r3-r5, pc}
@@ -12535,7 +12535,7 @@ _0203FD8E:
ldr r0, [r7, #0x74]
add r7, #0x80
ldr r1, [r7, #0x0]
- bl FUN_0223D3D0
+ bl MOD06_0223D3D0
mov r0, #0x1
add sp, #0x84
pop {r4-r7, pc}
@@ -12574,7 +12574,7 @@ _0203FDE6:
ldr r2, [r2, r3]
ldr r1, [r4, #0x0]
mov r3, #0x0
- bl FUN_0223D3D0
+ bl MOD06_0223D3D0
mov r0, #0x1
add sp, #0x4
pop {r3-r4, pc}
@@ -12609,7 +12609,7 @@ _0203FE2A:
ldr r2, [r2, r3]
ldr r1, [r4, #0x0]
mov r3, #0x1
- bl FUN_0223D3D0
+ bl MOD06_0223D3D0
mov r0, #0x1
add sp, #0x4
pop {r3-r4, pc}
@@ -12637,7 +12637,7 @@ FUN_0203FE48: ; 0x0203FE48
ldr r2, [r2, r3]
ldr r1, [r4, #0x0]
mov r3, #0x2
- bl FUN_0223D3D0
+ bl MOD06_0223D3D0
mov r0, #0x1
add sp, #0x4
pop {r3-r4, pc}
@@ -13575,7 +13575,7 @@ FUN_02040638: ; 0x02040638
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x4]
ldr r0, [r0, #0x1c]
- bl FUN_021F4608
+ bl MOD05_021F4608
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -13587,7 +13587,7 @@ FUN_0204064C: ; 0x0204064C
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x4]
ldr r0, [r0, #0x1c]
- bl FUN_021F45E8
+ bl MOD05_021F45E8
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -13646,7 +13646,7 @@ _020406BA:
FUN_020406C0: ; 0x020406C0
push {r3, lr}
ldr r0, [r0, #0x74]
- bl FUN_0224D3E8
+ bl MOD06_0224D3E8
mov r0, #0x1
pop {r3, pc}
@@ -13994,11 +13994,11 @@ FUN_02040964: ; 0x02040964
bl FUN_020394F0
add r5, r0, #0x0
mov r1, #0x1e
- blx _s32_div_f
+ bl _s32_div_f
add r7, r0, #0x0
add r0, r5, #0x0
mov r1, #0x1e
- blx _s32_div_f
+ bl _s32_div_f
add r2, r1, #0x0
ldr r0, [sp, #0x0]
add r1, r7, #0x0
@@ -15183,14 +15183,14 @@ FUN_02041354: ; 0x02041354
_02041360:
add r0, r5, #0x0
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x10
lsr r0, r0, #0x10
str r1, [sp, #0x0]
str r0, [sp, #0x4]
add r0, r4, #0x0
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x8]
@@ -15199,12 +15199,12 @@ _02041360:
bne _020413AC
add r0, r5, #0x0
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r5, r0, #0x10
add r0, r4, #0x0
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r6, #0x1
@@ -16556,7 +16556,7 @@ _02041E68:
add r4, #0x80
add r5, r0, #0x0
ldr r0, [r4, #0x0]
- bl FUN_02248CD0
+ bl MOD06_02248CD0
strh r0, [r5, #0x0]
b _02041FD2
_02041E88:
@@ -16584,7 +16584,7 @@ _02041E88:
strh r0, [r5, #0x0]
ldr r0, [r4, #0x0]
add r1, r7, #0x0
- bl FUN_02249038
+ bl MOD06_02249038
strh r0, [r6, #0x0]
b _02041FD2
_02041ECA:
@@ -16623,12 +16623,12 @@ _02041ECA:
ldr r1, [r5, #0x0]
add r2, r6, #0x0
add r3, r7, #0x0
- bl FUN_022490A0
+ bl MOD06_022490A0
b _02041FD2
_02041F24:
add r4, #0x80
ldr r0, [r4, #0x0]
- bl FUN_02248CC0
+ bl MOD06_02248CC0
b _02041FD2
_02041F2E:
add r0, r4, #0x0
@@ -16652,7 +16652,7 @@ _02041F2E:
add r4, #0x80
strh r0, [r5, #0x0]
ldr r0, [r4, #0x0]
- bl FUN_022491FC
+ bl MOD06_022491FC
strh r0, [r6, #0x0]
b _02041FD2
_02041F68:
@@ -16684,7 +16684,7 @@ _02041F68:
ldr r0, [r4, #0x0]
add r1, r6, #0x0
add r2, r7, #0x0
- bl FUN_02248F70
+ bl MOD06_02248F70
strh r0, [r5, #0x0]
b _02041FD2
_02041FB4:
@@ -16698,7 +16698,7 @@ _02041FB4:
add r4, #0x80
add r5, r0, #0x0
ldr r0, [r4, #0x0]
- bl FUN_02248FE0
+ bl MOD06_02248FE0
strh r0, [r5, #0x0]
_02041FD2:
mov r0, #0x0
@@ -17053,7 +17053,7 @@ FUN_020422A8: ; 0x020422A8
ldr r0, [r0, #0x4]
add r4, r1, #0x0
ldr r0, [r0, #0x14]
- bl FUN_02252538
+ bl MOD20_02252538
add r2, r0, #0x0
add r0, r4, #0x0
mov r1, #0x0
@@ -17145,7 +17145,7 @@ FUN_02042354: ; 0x02042354
add r0, #0x80
ldr r0, [r0, #0x0]
add r0, #0xa8
- bl FUN_022434BC
+ bl MOD06_022434BC
mov r0, #0x0
pop {r3, pc}
@@ -17164,7 +17164,7 @@ FUN_02042364: ; 0x02042364
bl FUN_020377AC
add r1, r4, #0x0
add r2, r6, #0x0
- bl FUN_022434D0
+ bl MOD06_022434D0
add r5, #0x80
ldr r1, [r5, #0x0]
add r1, #0xa8
@@ -17180,7 +17180,7 @@ FUN_02042394: ; 0x02042394
ldr r0, [r0, #0x0]
add r0, #0xa8
ldr r0, [r0, #0x0]
- bl FUN_02243694
+ bl MOD06_02243694
add r4, #0x80
ldr r1, [r4, #0x0]
mov r0, #0x0
@@ -17333,7 +17333,7 @@ _02042406: ; jump table (using 16-bit offset)
.short _020426E6 - _02042406 - 2; case 100
_020424D0:
add r0, r6, #0x0
- bl FUN_0224312C
+ bl MOD06_0224312C
strh r0, [r4, #0x0]
b _020426FA
_020424DA:
@@ -17341,76 +17341,76 @@ _020424DA:
bne _020424EA
ldrb r0, [r5, #0xe]
ldr r1, [r1, #0xc]
- bl FUN_022432E4
+ bl MOD06_022432E4
strh r0, [r4, #0x0]
b _020426FA
_020424EA:
ldr r1, [r1, #0xc]
add r0, r6, #0x0
- bl FUN_022432E4
+ bl MOD06_022432E4
strh r0, [r4, #0x0]
b _020426FA
_020424F6:
- bl FUN_0224339C
+ bl MOD06_0224339C
b _020426FA
_020424FC:
ldr r0, [r1, #0xc]
bl FUN_0202A8CC
- bl FUN_022433A8
+ bl MOD06_022433A8
b _020426FA
_02042508:
ldr r0, [r1, #0xc]
bl FUN_0202A8CC
- bl FUN_022433B0
+ bl MOD06_022433B0
strh r0, [r4, #0x0]
b _020426FA
_02042516:
add r0, r1, #0x0
- bl FUN_022433B8
+ bl MOD06_022433B8
b _020426FA
_0204251E:
add r0, r1, #0x0
- bl FUN_022433F8
+ bl MOD06_022433F8
b _020426FA
_02042526:
ldr r0, [r1, #0xc]
add r1, r6, #0x0
- bl FUN_02243408
+ bl MOD06_02243408
strh r0, [r4, #0x0]
b _020426FA
_02042532:
ldr r1, [r1, #0xc]
mov r0, #0x0
mov r2, #0x2
- bl FUN_02243E74
+ bl MOD06_02243E74
strh r0, [r4, #0x0]
b _020426FA
_02042540:
mov r0, #0x0
ldr r1, [r1, #0xc]
add r2, r0, #0x0
- bl FUN_02243E74
+ bl MOD06_02243E74
strh r0, [r4, #0x0]
b _020426FA
_0204254E:
ldr r0, [r1, #0xc]
lsl r1, r6, #0x18
lsr r1, r1, #0x18
- bl FUN_02243428
+ bl MOD06_02243428
b _020426FA
_0204255A:
ldr r0, [r1, #0xc]
- bl FUN_02243448
+ bl MOD06_02243448
strh r0, [r4, #0x0]
b _020426FA
_02042564:
ldr r0, [r1, #0xc]
- bl FUN_0224345C
+ bl MOD06_0224345C
strh r0, [r4, #0x0]
b _020426FA
_0204256E:
ldr r0, [r1, #0xc]
- bl FUN_022434AC
+ bl MOD06_022434AC
strh r0, [r4, #0x0]
b _020426FA
_02042578:
@@ -17429,7 +17429,7 @@ _0204258A:
add r2, r0, #0x0
ldr r1, [r7, #0x74]
add r0, r5, #0x0
- bl FUN_022436C8
+ bl MOD06_022436C8
add sp, #0x8
mov r0, #0x1
pop {r3-r7, pc}
@@ -17442,60 +17442,60 @@ _020425A2:
add r1, r0, #0x0
ldr r2, [r2, #0xc]
add r0, r5, #0x0
- bl FUN_022436E8
+ bl MOD06_022436E8
strh r0, [r4, #0x0]
b _020426FA
_020425BC:
ldr r1, [r1, #0xc]
add r0, r5, #0x0
- bl FUN_02243780
+ bl MOD06_02243780
strh r0, [r4, #0x0]
b _020426FA
_020425C8:
add r0, r5, #0x0
- bl FUN_022438DC
+ bl MOD06_022438DC
strh r0, [r4, #0x0]
b _020426FA
_020425D2:
add r0, r5, #0x0
- bl FUN_022438E0
+ bl MOD06_022438E0
strh r0, [r4, #0x0]
b _020426FA
_020425DC:
add r0, r5, #0x0
- bl FUN_022438FC
+ bl MOD06_022438FC
strh r0, [r4, #0x0]
b _020426FA
_020425E6:
add r0, r5, #0x0
- bl FUN_02243920
+ bl MOD06_02243920
strh r0, [r4, #0x0]
b _020426FA
_020425F0:
add r0, r5, #0x0
- bl FUN_022439F8
+ bl MOD06_022439F8
b _020426FA
_020425F8:
add r0, r5, #0x0
- bl FUN_02243AD8
+ bl MOD06_02243AD8
b _020426FA
_02042600:
add r0, r5, #0x0
- bl FUN_02243BA8
+ bl MOD06_02243BA8
b _020426FA
_02042608:
ldr r1, [r1, #0xc]
add r0, r5, #0x0
- bl FUN_02243C5C
+ bl MOD06_02243C5C
b _020426FA
_02042612:
add r0, r5, #0x0
- bl FUN_02243D3C
+ bl MOD06_02243D3C
b _020426FA
_0204261A:
add r0, r5, #0x0
add r1, r6, #0x0
- bl FUN_02243DA0
+ bl MOD06_02243DA0
strh r0, [r4, #0x0]
b _020426FA
_02042626:
@@ -17507,45 +17507,45 @@ _02042626:
ldr r0, [r7, #0x0]
add r1, r5, #0x0
ldr r0, [r0, #0x10]
- bl FUN_02243DB8
+ bl MOD06_02243DB8
add sp, #0x8
mov r0, #0x1
pop {r3-r7, pc}
_02042642:
add r0, r5, #0x0
- bl FUN_02243DC0
+ bl MOD06_02243DC0
strh r0, [r4, #0x0]
b _020426FA
_0204264C:
add r0, r5, #0x0
add r1, r6, #0x0
- bl FUN_02243DC4
+ bl MOD06_02243DC4
b _020426FA
_02042656:
add r0, r5, #0x0
- bl FUN_02243DD8
+ bl MOD06_02243DD8
strh r0, [r4, #0x0]
b _020426FA
_02042660:
add r0, r5, #0x0
- bl FUN_02243DE0
+ bl MOD06_02243DE0
strh r0, [r4, #0x0]
b _020426FA
_0204266A:
ldr r1, [r1, #0xc]
add r0, r5, #0x0
- bl FUN_02243E34
+ bl MOD06_02243E34
b _020426FA
_02042674:
ldr r1, [r1, #0xc]
add r0, r5, #0x0
- bl FUN_02243F18
+ bl MOD06_02243F18
strh r0, [r4, #0x0]
b _020426FA
_02042680:
ldr r1, [r1, #0xc]
add r0, r5, #0x0
- bl FUN_02243F50
+ bl MOD06_02243F50
strh r0, [r4, #0x0]
b _020426FA
_0204268C:
@@ -17568,7 +17568,7 @@ _020426A0:
_020426AA:
ldr r1, [r1, #0xc]
add r0, r5, #0x0
- bl FUN_02243838
+ bl MOD06_02243838
b _020426FA
_020426B4:
add r0, r5, r6
@@ -17580,7 +17580,7 @@ _020426BE:
ldr r1, [r1, #0xc]
add r0, r5, #0x0
mov r2, #0x1
- bl FUN_02243E74
+ bl MOD06_02243E74
strh r0, [r4, #0x0]
b _020426FA
_020426CC:
@@ -17593,7 +17593,7 @@ _020426CC:
_020426DA:
ldr r1, [r1, #0xc]
add r0, r5, #0x0
- bl FUN_02243F9C
+ bl MOD06_02243F9C
strh r0, [r4, #0x0]
b _020426FA
_020426E6:
@@ -17741,7 +17741,7 @@ FUN_020427D0: ; 0x020427D0
ldr r0, _0204285C ; =0x00000884
mov r2, #0x46
add r0, r6, r0
- blx MI_CpuFill8
+ bl MI_CpuFill8
cmp r4, #0x0
beq _0204281E
cmp r4, #0x1
@@ -17756,14 +17756,14 @@ _0204281E:
add r0, #0xa8
ldr r0, [r0, #0x0]
ldr r1, [r1, #0xc]
- bl FUN_022446FC
+ bl MOD06_022446FC
b _0204284C
_02042830:
add r5, #0x80
ldr r0, [r5, #0x0]
add r0, #0xa8
ldr r0, [r0, #0x0]
- bl FUN_02244758
+ bl MOD06_02244758
b _0204284C
_0204283E:
add r5, #0x80
@@ -17771,7 +17771,7 @@ _0204283E:
add r1, r7, #0x0
add r0, #0xa8
ldr r0, [r0, #0x0]
- bl FUN_02244770
+ bl MOD06_02244770
_0204284C:
bl FUN_02031190
ldr r1, _02042860 ; =0x0000083E
@@ -17924,7 +17924,7 @@ FUN_02042950: ; 0x02042950
ldr r0, [r5, #0x0]
add r1, r6, #0x0
add r2, r4, #0x0
- bl FUN_021E2A70
+ bl MOD05_021E2A70
str r0, [r7, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
@@ -17937,7 +17937,7 @@ FUN_02042980: ; 0x02042980
mov r1, #0x26
bl FUN_02039438
ldr r0, [r0, #0x0]
- bl FUN_021E29B4
+ bl MOD05_021E29B4
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -17954,7 +17954,7 @@ FUN_02042998: ; 0x02042998
add r4, #0x80
ldr r0, [r4, #0x0]
ldr r1, [r1, #0x0]
- bl FUN_021E2AD4
+ bl MOD05_021E2AD4
mov r0, #0x0
pop {r4, pc}
.balign 4
@@ -18698,7 +18698,7 @@ FUN_02042F6C: ; 0x02042F6C
add r2, r7, #0x0
bl FUN_020671BC
add r6, r0, #0x0
- blx OS_GetTick
+ bl OS_GetTick
bl FUN_0201BA10
add r1, r0, #0x0
ldr r0, [sp, #0x14]
@@ -20033,7 +20033,7 @@ FUN_02043A44: ; 0x02043A44
ldr r0, [r4, #0x0]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
- bl FUN_021E2950
+ bl MOD05_021E2950
str r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
@@ -20046,7 +20046,7 @@ FUN_02043A94: ; 0x02043A94
mov r1, #0x26
bl FUN_02039438
ldr r0, [r0, #0x0]
- bl FUN_021E29B4
+ bl MOD05_021E29B4
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -20063,7 +20063,7 @@ FUN_02043AAC: ; 0x02043AAC
add r4, #0x80
ldr r0, [r4, #0x0]
ldr r1, [r1, #0x0]
- bl FUN_021E29C8
+ bl MOD05_021E29C8
mov r0, #0x0
pop {r4, pc}
.balign 4
@@ -20423,7 +20423,7 @@ FUN_02043D78: ; 0x02043D78
ldr r0, [r4, #0x0]
lsr r1, r1, #0x18
lsr r2, r2, #0x18
- bl FUN_021E27E8
+ bl MOD05_021E27E8
str r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
@@ -20436,7 +20436,7 @@ FUN_02043DC8: ; 0x02043DC8
mov r1, #0x27
bl FUN_02039438
ldr r0, [r0, #0x0]
- bl FUN_021E288C
+ bl MOD05_021E288C
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -20453,7 +20453,7 @@ FUN_02043DE0: ; 0x02043DE0
add r4, #0x80
ldr r0, [r4, #0x0]
ldr r1, [r1, #0x0]
- bl FUN_021E28A0
+ bl MOD05_021E28A0
mov r0, #0x0
pop {r4, pc}
.balign 4
@@ -20470,7 +20470,7 @@ FUN_02043E00: ; 0x02043E00
add r0, r5, #0x0
bl FUN_02023D58
ldr r1, [r4, #0x0]
- bl FUN_021ED4E0
+ bl MOD05_021ED4E0
mov r0, #0x0
pop {r3-r5, pc}
@@ -20491,7 +20491,7 @@ FUN_02043E20: ; 0x02043E20
add r0, r4, #0x0
mov r1, #0x8
bl FUN_02022610
- bl FUN_021ED5EC
+ bl MOD05_021ED5EC
strh r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
@@ -20505,7 +20505,7 @@ FUN_02043E50: ; 0x02043E50
mov r1, #0x8
ldr r0, [r0, #0xc]
bl FUN_02022610
- bl FUN_021ECD64
+ bl MOD05_021ECD64
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -20530,7 +20530,7 @@ FUN_02043E68: ; 0x02043E68
add r2, r0, #0x0
add r0, r6, #0x0
add r1, r5, #0x0
- bl FUN_021ED0CC
+ bl MOD05_021ED0CC
mov r0, #0x0
pop {r4-r6, pc}
@@ -20570,7 +20570,7 @@ FUN_02043E9C: ; 0x02043E9C
ldr r1, [r7, #0x0]
add r2, r6, #0x0
lsr r3, r3, #0x18
- bl FUN_021EC71C
+ bl MOD05_021EC71C
ldr r1, [sp, #0x0]
strh r0, [r1, #0x0]
mov r0, #0x0
@@ -20609,7 +20609,7 @@ FUN_02043EFC: ; 0x02043EFC
lsl r1, r4, #0x18
ldr r2, [r7, #0x0]
lsr r1, r1, #0x18
- bl FUN_021EC854
+ bl MOD05_021EC854
strh r0, [r6, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
@@ -20645,7 +20645,7 @@ FUN_02043F50: ; 0x02043F50
bl FUN_02022610
ldr r2, [r6, #0x0]
add r1, r5, #0x0
- bl FUN_021EC864
+ bl MOD05_021EC864
strh r0, [r7, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
@@ -20682,7 +20682,7 @@ FUN_02043FA0: ; 0x02043FA0
bl FUN_0206BB1C
ldr r2, [r6, #0x0]
add r1, r7, #0x0
- bl FUN_021ED5C4
+ bl MOD05_021ED5C4
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r3-r7, pc}
@@ -20713,7 +20713,7 @@ FUN_02043FF4: ; 0x02043FF4
add r0, r4, #0x0
lsr r1, r1, #0x18
add r3, r5, #0x0
- bl FUN_021EC57C
+ bl MOD05_021EC57C
mov r0, #0x0
pop {r4-r6, pc}
.balign 4
@@ -20775,7 +20775,7 @@ FUN_02044034: ; 0x02044034
lsr r1, r1, #0x18
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_021ED52C
+ bl MOD05_021ED52C
mov r0, #0x0
add sp, #0x10
pop {r3-r7, pc}
@@ -20797,7 +20797,7 @@ FUN_020440C0: ; 0x020440C0
add r0, r4, #0x0
mov r1, #0x8
bl FUN_02022610
- bl FUN_021ED644
+ bl MOD05_021ED644
strh r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
@@ -20914,7 +20914,7 @@ FUN_02044198: ; 0x02044198
add r5, r0, #0x0
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x10
lsr r0, r0, #0x10
cmp r0, #0xf
@@ -21263,7 +21263,7 @@ FUN_02044414: ; 0x02044414
add r0, r4, #0x0
mov r2, #0x1
add r3, r7, #0x0
- bl FUN_021ECF14
+ bl MOD05_021ECF14
add r0, r6, #0x0
add r1, r4, #0x0
bl FUN_0206B900
@@ -21824,7 +21824,7 @@ FUN_020448D4: ; 0x020448D4
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0204495A:
diff --git a/arm9/asm/unk_02000E0C.s b/arm9/asm/unk_02000E0C.s
index 50b0dace..15275ac8 100644
--- a/arm9/asm/unk_02000E0C.s
+++ b/arm9/asm/unk_02000E0C.s
@@ -2,337 +2,8 @@
.include "global.inc"
.text
-
- thumb_func_start FUN_02000E0C
-FUN_02000E0C: ; 0x02000E0C
- push {r3, lr}
- ldr r0, _02000E74 ; =0x02106FA0
- ldr r1, [r0, #0xc]
- cmp r1, #0x0
- bne _02000E4A
- ldr r1, [r0, #0x14]
- cmp r1, #0x0
- beq _02000E70
- mov r1, #0x0
- ldr r0, [r0, #0x10]
- mvn r1, r1
- cmp r0, r1
- beq _02000E2C
- mov r1, #0x0
- bl FUN_02005FDC
-_02000E2C:
- ldr r0, _02000E74 ; =0x02106FA0
- mov r2, #0x0
- ldr r1, [r0, #0x10]
- str r1, [r0, #0x8]
- ldr r0, [r0, #0x14]
- ldr r1, _02000E78 ; =0x02106FB8
- bl FUN_02006234
- ldr r1, _02000E74 ; =0x02106FA0
- str r0, [r1, #0xc]
- mov r0, #0x0
- mvn r0, r0
- str r0, [r1, #0x10]
- mov r0, #0x0
- str r0, [r1, #0x14]
-_02000E4A:
- ldr r0, _02000E74 ; =0x02106FA0
- ldr r0, [r0, #0xc]
- bl FUN_02006290
- cmp r0, #0x0
- beq _02000E70
- ldr r0, _02000E74 ; =0x02106FA0
- ldr r0, [r0, #0xc]
- bl FUN_02006260
- ldr r0, _02000E74 ; =0x02106FA0
- mov r1, #0x0
- str r1, [r0, #0xc]
- ldr r0, [r0, #0x8]
- sub r1, r1, #0x1
- cmp r0, r1
- beq _02000E70
- bl FUN_02005F60
-_02000E70:
- pop {r3, pc}
- nop
-_02000E74: .word 0x02106FA0
-_02000E78: .word 0x02106FB8
-
- thumb_func_start FUN_02000E7C
-FUN_02000E7C: ; 0x02000E7C
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r0, _02000E98 ; =0x02106FA0
- add r4, r1, #0x0
- ldr r0, [r0, #0x14]
- cmp r0, #0x0
- beq _02000E8E
- bl ErrorHandling
-_02000E8E:
- ldr r0, _02000E98 ; =0x02106FA0
- str r5, [r0, #0x10]
- str r4, [r0, #0x14]
- pop {r3-r5, pc}
- nop
-_02000E98: .word 0x02106FA0
-
- thumb_func_start FUN_02000E9C
-FUN_02000E9C: ; 0x02000E9C
- push {r3, lr}
- bl FUN_0202FB80
- mov r0, #0x1
- add r1, r0, #0x0
- blx OS_WaitIrq
- ldr r0, _02000EC4 ; =0x021C48B8
- ldr r1, [r0, #0x2c]
- add r1, r1, #0x1
- str r1, [r0, #0x2c]
- mov r1, #0x0
- str r1, [r0, #0x30]
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- beq _02000EC0
- ldr r0, [r0, #0x4]
- blx r1
-_02000EC0:
- pop {r3, pc}
- nop
-_02000EC4: .word 0x021C48B8
-
- thumb_func_start FUN_02000EC8
-FUN_02000EC8: ; 0x02000EC8
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02033678
- cmp r0, #0x0
- beq _02000EE2
- blx CARD_TryWaitBackupAsync
- cmp r0, #0x1
- bne _02000EE2
- add r0, r4, #0x0
- blx OS_ResetSystem
-_02000EE2:
- bl FUN_02000E9C
- pop {r4, pc}
-
- thumb_func_start FUN_02000EE8
-FUN_02000EE8: ; 0x02000EE8
- push {r3, lr}
- bl FUN_020335B8
- add r1, r0, #0x0
- cmp r1, #0x1
- beq _02000EFE
- cmp r1, #0x2
- beq _02000F06
- cmp r1, #0x3
- beq _02000F0E
- pop {r3, pc}
-_02000EFE:
- mov r0, #0x1
- bl FUN_02000F4C
- pop {r3, pc}
-_02000F06:
- mov r0, #0x0
- bl FUN_02000F4C
- pop {r3, pc}
-_02000F0E:
- mov r0, #0x1
- bl FUN_02000F4C
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02000F18
-FUN_02000F18: ; 0x02000F18
- push {r4, lr}
- ldr r1, _02000F48 ; =0x00007FFF
- add r4, r0, #0x0
- mov r0, #0x0
- bl FUN_0200E3A0
- ldr r1, _02000F48 ; =0x00007FFF
- mov r0, #0x1
- bl FUN_0200E3A0
- bl FUN_02032DAC
- cmp r0, #0x0
- beq _02000F3C
- bl FUN_020225F8
- bl FUN_0202287C
-_02000F3C:
- bl FUN_02000FE8
- add r0, r4, #0x0
- bl FUN_02000EC8
- b _02000F3C
- .balign 4
-_02000F48: .word 0x00007FFF
-
- thumb_func_start FUN_02000F4C
-FUN_02000F4C: ; 0x02000F4C
- push {r4-r6, lr}
- add r6, r0, #0x0
- cmp r1, #0x3
- bne _02000F60
- mov r0, #0x0
- mov r1, #0x3
- add r2, r0, #0x0
- bl FUN_02033F70
- b _02000F7A
-_02000F60:
- cmp r6, #0x0
- bne _02000F70
- mov r0, #0x0
- mov r1, #0x2
- add r2, r0, #0x0
- bl FUN_02033F70
- b _02000F7A
-_02000F70:
- mov r0, #0x0
- add r1, r0, #0x0
- add r2, r0, #0x0
- bl FUN_02033F70
-_02000F7A:
- bl FUN_02032DAC
- ldr r5, _02000FA0 ; =0x021C48B8
- mov r4, #0x1
-_02000F82:
- bl FUN_02000FE8
- bl FUN_02016464
- ldr r0, [r5, #0x48]
- tst r0, r4
- bne _02000F96
- bl FUN_02000E9C
- b _02000F82
-_02000F96:
- add r0, r6, #0x0
- bl FUN_02000F18
- pop {r4-r6, pc}
- nop
-_02000FA0: .word 0x021C48B8
-
- thumb_func_start FUN_02000FA4
-FUN_02000FA4: ; 0x02000FA4
- push {r4-r5, lr}
- sub sp, #0x1c
- add r0, sp, #0xc
- add r1, sp, #0x0
- bl FUN_0201265C
- ldr r0, _02000FE4 ; =0x021C48B8
- ldr r3, [sp, #0x10]
- ldr r4, [r0, #0x2c]
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0x8]
- ldr r5, [sp, #0x14]
- add r0, r1, r0
- lsl r2, r0, #0x18
- ldr r0, [sp, #0x0]
- lsl r3, r3, #0x8
- lsl r1, r0, #0x10
- mul r3, r5
- ldr r0, [sp, #0xc]
- lsl r3, r3, #0x10
- add r0, r0, r3
- add r0, r1, r0
- add r5, r2, r0
- add r0, r4, r5
- bl FUN_0201BA1C
- add r0, r4, r5
- bl FUN_0201B9E0
- add sp, #0x1c
- pop {r4-r5, pc}
- nop
-_02000FE4: .word 0x021C48B8
-
- thumb_func_start FUN_02000FE8
-FUN_02000FE8: ; 0x02000FE8
- push {r3-r7, lr}
- sub sp, #0x8
- ldr r0, _0200109C ; =0x027FFFA8
- ldrh r1, [r0, #0x0]
- mov r0, #0x2
- lsl r0, r0, #0xe
- and r0, r1
- asr r0, r0, #0xf
- beq _0200107E
- ldr r0, _020010A0 ; =0x021C4918
- ldrb r0, [r0, #0x7]
- cmp r0, #0x0
- bne _02001064
- bl FUN_0201CE04
- blx CTRDG_IsPulledOut
- cmp r0, #0x1
- bne _02001014
- ldr r0, _020010A4 ; =0x02106FA0
- mov r1, #0x1
- str r1, [r0, #0x4]
-_02001014:
- ldr r6, _020010A4 ; =0x02106FA0
- mov r0, #0xc
- ldr r1, [r6, #0x4]
- ldr r4, _0200109C ; =0x027FFFA8
- mov r2, #0x10
- add r5, r0, #0x0
- ldr r7, _020010A0 ; =0x021C4918
- orr r5, r2
-_02001024:
- ldrb r2, [r7, #0x6]
- mov r0, #0xc
- cmp r2, #0x0
- beq _02001032
- cmp r1, #0x0
- bne _02001032
- add r0, r5, #0x0
-_02001032:
- mov r1, #0x0
- add r2, r1, #0x0
- blx PM_GoSleepMode
- blx CARD_IsPulledOut
- cmp r0, #0x0
- beq _02001048
- blx PM_ForceToPowerOff
- b _0200105C
-_02001048:
- ldrh r1, [r4, #0x0]
- mov r0, #0x2
- lsl r0, r0, #0xe
- and r0, r1
- asr r0, r0, #0xf
- beq _0200105C
- mov r0, #0x1
- str r0, [r6, #0x4]
- add r1, r0, #0x0
- b _02001024
-_0200105C:
- bl FUN_0201CDD0
- add sp, #0x8
- pop {r3-r7, pc}
-_02001064:
- add r0, sp, #0x4
- add r1, sp, #0x0
- blx PM_GetBackLight
- ldr r0, [sp, #0x4]
- cmp r0, #0x1
- bne _02001096
- mov r0, #0x2
- mov r1, #0x0
- blx PM_SetBackLight
- add sp, #0x8
- pop {r3-r7, pc}
-_0200107E:
- add r0, sp, #0x4
- add r1, sp, #0x0
- blx PM_GetBackLight
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- bne _02001096
- ldr r1, _020010A4 ; =0x02106FA0
- mov r0, #0x2
- ldr r1, [r1, #0x0]
- blx PM_SetBackLight
-_02001096:
- add sp, #0x8
- pop {r3-r7, pc}
- nop
-_0200109C: .word 0x027FFFA8
-_020010A0: .word 0x021C4918
-_020010A4: .word 0x02106FA0
+ .extern FUN_02000E9C
+ .extern FUN_02000EC8
thumb_func_start FUN_020010A8
FUN_020010A8: ; 0x020010A8
@@ -2291,7 +1962,7 @@ _02001ECE:
ldrb r4, [r5, #0x15]
add r1, r6, #0x0
add r0, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0x0
bne _02001EF2
ldrb r0, [r5, #0xb]
@@ -2323,7 +1994,7 @@ _02001F08:
ldrb r6, [r5, #0x15]
sub r4, r1, #0x1
add r0, r6, #0x0
- blx _s32_div_f
+ bl _s32_div_f
cmp r4, r1
bne _02001F2A
ldrb r0, [r5, #0xb]
@@ -2393,7 +2064,7 @@ _02001F72:
mov r0, #0x0
pop {r4-r6, pc}
_02001F8A:
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x18
asr r2, r0, #0x18
b _02001F9A
@@ -2563,7 +2234,7 @@ FUN_020020B0: ; 0x020020B0
ldrb r1, [r5, #0xa]
add r0, r7, #0x0
add r6, r2, #0x0
- blx _s32_div_f
+ bl _s32_div_f
ldrb r2, [r5, #0x19]
ldrb r1, [r5, #0x16]
lsl r2, r2, #0x1
@@ -2572,7 +2243,7 @@ FUN_020020B0: ; 0x020020B0
strb r1, [r4, #0x0]
ldrb r1, [r5, #0xa]
add r0, r7, #0x0
- blx _s32_div_f
+ bl _s32_div_f
ldrb r2, [r5, #0xb]
ldrb r3, [r5, #0x1a]
ldrb r0, [r5, #0x18]
diff --git a/arm9/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s
index 2024d9d7..3295bcc9 100644
--- a/arm9/asm/unk_020023C0.s
+++ b/arm9/asm/unk_020023C0.s
@@ -1631,7 +1631,7 @@ FUN_02002FD0: ; 0x02002FD0
mov r1, #0x0
lsl r2, r2, #0x4
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
pop {r4, pc}
.balign 4
@@ -1710,13 +1710,13 @@ FUN_02003054: ; 0x02003054
lsl r4, r3, #0x1
add r1, r1, r4
add r2, r7, #0x0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r1, r5, r6
ldr r1, [r1, #0x4]
ldr r0, [sp, #0x0]
add r1, r1, r4
add r2, r7, #0x0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3-r7, pc}
.balign 4
@@ -1876,7 +1876,7 @@ _0200319A:
lsl r0, r0, #0x1
add r0, r1, r0
ldr r1, [sp, #0x14]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0x0
bl FUN_02016A18
pop {r3-r5, pc}
@@ -1904,7 +1904,7 @@ FUN_020031B8: ; 0x020031B8
ldr r1, [r5, r6]
add r0, r0, r4
add r1, r1, r7
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp, #0x4]
add r1, r5, r6
ldr r0, [r5, r0]
@@ -1912,7 +1912,7 @@ FUN_020031B8: ; 0x020031B8
ldr r2, [sp, #0x0]
add r0, r0, r4
add r1, r1, r7
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add sp, #0x8
pop {r3-r7, pc}
.balign 4
@@ -2156,7 +2156,7 @@ FUN_020033A4: ; 0x020033A4
cmp r2, #0x0
bge _020033D4
add r0, r2, #0x0
- blx abs
+ bl abs
add r0, r0, #0x2
ldrh r1, [r5, #0x6]
mov r2, #0xf
@@ -2659,7 +2659,7 @@ _02003750:
_02003770:
ldr r0, [r4, #0x4]
ldr r1, [r4, #0x8]
- blx DC_FlushRange
+ bl DC_FlushRange
cmp r5, #0xd
bls _0200377E
_0200377C:
@@ -2690,109 +2690,109 @@ _020037A6:
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
mov r1, #0x0
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
b _020038A4
_020037B2:
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
mov r1, #0x0
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
b _020038A4
_020037BE:
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
mov r1, #0x0
- blx GX_LoadOBJPltt
+ bl GX_LoadOBJPltt
b _020038A4
_020037CA:
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
mov r1, #0x0
- blx GXS_LoadOBJPltt
+ bl GXS_LoadOBJPltt
b _020038A4
_020037D6:
- blx GX_BeginLoadBGExtPltt
+ bl GX_BeginLoadBGExtPltt
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
mov r1, #0x0
- blx GX_LoadBGExtPltt
- blx GX_EndLoadBGExtPltt
+ bl GX_LoadBGExtPltt
+ bl GX_EndLoadBGExtPltt
b _020038A4
_020037EA:
- blx GX_BeginLoadBGExtPltt
+ bl GX_BeginLoadBGExtPltt
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
add r1, r7, #0x0
- blx GX_LoadBGExtPltt
- blx GX_EndLoadBGExtPltt
+ bl GX_LoadBGExtPltt
+ bl GX_EndLoadBGExtPltt
b _020038A4
_020037FE:
- blx GX_BeginLoadBGExtPltt
+ bl GX_BeginLoadBGExtPltt
mov r1, #0x1
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
lsl r1, r1, #0xe
- blx GX_LoadBGExtPltt
- blx GX_EndLoadBGExtPltt
+ bl GX_LoadBGExtPltt
+ bl GX_EndLoadBGExtPltt
b _020038A4
_02003814:
- blx GX_BeginLoadBGExtPltt
+ bl GX_BeginLoadBGExtPltt
mov r1, #0x6
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
lsl r1, r1, #0xc
- blx GX_LoadBGExtPltt
- blx GX_EndLoadBGExtPltt
+ bl GX_LoadBGExtPltt
+ bl GX_EndLoadBGExtPltt
b _020038A4
_0200382A:
- blx GXS_BeginLoadBGExtPltt
+ bl GXS_BeginLoadBGExtPltt
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
mov r1, #0x0
- blx GXS_LoadBGExtPltt
- blx GXS_EndLoadBGExtPltt
+ bl GXS_LoadBGExtPltt
+ bl GXS_EndLoadBGExtPltt
b _020038A4
_0200383E:
- blx GXS_BeginLoadBGExtPltt
+ bl GXS_BeginLoadBGExtPltt
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
add r1, r7, #0x0
- blx GXS_LoadBGExtPltt
- blx GXS_EndLoadBGExtPltt
+ bl GXS_LoadBGExtPltt
+ bl GXS_EndLoadBGExtPltt
b _020038A4
_02003852:
- blx GXS_BeginLoadBGExtPltt
+ bl GXS_BeginLoadBGExtPltt
mov r1, #0x1
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
lsl r1, r1, #0xe
- blx GXS_LoadBGExtPltt
- blx GXS_EndLoadBGExtPltt
+ bl GXS_LoadBGExtPltt
+ bl GXS_EndLoadBGExtPltt
b _020038A4
_02003868:
- blx GXS_BeginLoadBGExtPltt
+ bl GXS_BeginLoadBGExtPltt
mov r1, #0x6
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
lsl r1, r1, #0xc
- blx GXS_LoadBGExtPltt
- blx GXS_EndLoadBGExtPltt
+ bl GXS_LoadBGExtPltt
+ bl GXS_EndLoadBGExtPltt
b _020038A4
_0200387E:
- blx GX_BeginLoadOBJExtPltt
+ bl GX_BeginLoadOBJExtPltt
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
mov r1, #0x0
- blx GX_LoadOBJExtPltt
- blx GX_EndLoadOBJExtPltt
+ bl GX_LoadOBJExtPltt
+ bl GX_EndLoadOBJExtPltt
b _020038A4
_02003892:
- blx GXS_BeginLoadOBJExtPltt
+ bl GXS_BeginLoadOBJExtPltt
ldr r0, [r4, #0x4]
ldr r2, [r4, #0x8]
mov r1, #0x0
- blx GXS_LoadOBJExtPltt
- blx GXS_EndLoadOBJExtPltt
+ bl GXS_LoadOBJExtPltt
+ bl GXS_EndLoadOBJExtPltt
_020038A4:
add r5, r5, #0x1
add r4, #0x14
@@ -2887,7 +2887,7 @@ _0200393A:
ldr r0, [sp, #0x0]
sub r2, r2, r5
lsl r2, r2, #0x1
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
_02003952:
cmp r7, #0x0
beq _0200395A
@@ -2902,7 +2902,7 @@ _0200395A:
ldr r0, [sp, #0x0]
sub r2, r2, r5
lsl r2, r2, #0x1
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
_0200396E:
add sp, #0x8
pop {r3-r7, pc}
@@ -3216,14 +3216,14 @@ FUN_02003B98: ; 0x02003B98
add r6, r1, #0x0
bl FUN_02003D30
add r4, r0, #0x0
- blx FUN_020C01D0
+ bl FUN_020C01D0
bl FUN_020040C8
add r0, r4, #0x0
bl FUN_02004064
add r0, r4, #0x0
ldr r1, _02003C00 ; =0x000BBC00
add r0, #0x94
- blx FUN_020C2A94
+ bl FUN_020C2A94
add r1, r4, #0x0
add r1, #0x90
str r0, [r1, #0x0]
@@ -3233,11 +3233,11 @@ FUN_02003B98: ; 0x02003B98
ldr r2, [r2, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- blx FUN_020C26F8
+ bl FUN_020C26F8
add r0, r4, #0x0
add r0, #0x90
ldr r0, [r0, #0x0]
- blx FUN_020C39CC
+ bl FUN_020C39CC
add r0, r4, #0x0
bl FUN_02004088
add r0, r4, #0x0
@@ -3276,7 +3276,7 @@ _02003C2C:
bl FUN_02003C40
_02003C30:
bl FUN_02005CFC
- blx FUN_020C01A0
+ bl FUN_020C01A0
pop {r4, pc}
nop
_02003C3C: .word 0x000BCD00
@@ -3672,7 +3672,7 @@ FUN_02003F3C: ; 0x02003F3C
bl FUN_02003D30
add r0, #0x90
ldr r0, [r0, #0x0]
- blx FUN_020C290C
+ bl FUN_020C290C
add r4, r0, #0x0
mov r0, #0x0
mvn r0, r0
@@ -3695,7 +3695,7 @@ FUN_02003F64: ; 0x02003F64
add r0, #0x90
ldr r0, [r0, #0x0]
add r1, r4, #0x0
- blx FUN_020C2828
+ bl FUN_020C2828
pop {r4, pc}
thumb_func_start FUN_02003F78
@@ -3707,7 +3707,7 @@ FUN_02003F78: ; 0x02003F78
add r1, #0x90
ldr r1, [r1, #0x0]
add r0, r4, #0x0
- blx FUN_020C36A8
+ bl FUN_020C36A8
pop {r4, pc}
.balign 4
@@ -3720,7 +3720,7 @@ FUN_02003F90: ; 0x02003F90
add r1, #0x90
ldr r1, [r1, #0x0]
add r0, r4, #0x0
- blx FUN_020C3674
+ bl FUN_020C3674
pop {r4, pc}
.balign 4
@@ -3735,7 +3735,7 @@ FUN_02003FA8: ; 0x02003FA8
ldr r2, [r2, #0x0]
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_020C35E0
+ bl FUN_020C35E0
pop {r3-r5, pc}
.balign 4
@@ -3748,7 +3748,7 @@ FUN_02003FC4: ; 0x02003FC4
add r1, #0x90
ldr r1, [r1, #0x0]
add r0, r4, #0x0
- blx FUN_020C360C
+ bl FUN_020C360C
pop {r4, pc}
.balign 4
@@ -3761,7 +3761,7 @@ FUN_02003FDC: ; 0x02003FDC
add r1, #0x90
ldr r1, [r1, #0x0]
add r0, r4, #0x0
- blx FUN_020C3640
+ bl FUN_020C3640
pop {r4, pc}
.balign 4
@@ -3840,7 +3840,7 @@ FUN_02004064: ; 0x02004064
ldr r2, _02004080 ; =0x000BCD60
mov r1, #0x0
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _02004084 ; =0x000BCD1C
mov r1, #0x0
_02004074:
@@ -3862,7 +3862,7 @@ FUN_02004088: ; 0x02004088
add r5, r0, r1
_02004090:
add r0, r5, #0x0
- blx FUN_020C0F80
+ bl FUN_020C0F80
add r4, r4, #0x1
add r5, r5, #0x4
cmp r4, #0x9
@@ -3891,11 +3891,11 @@ _020040C4: .word 0x000BCD20
thumb_func_start FUN_020040C8
FUN_020040C8: ; 0x020040C8
push {r3, lr}
- blx MIC_Init
+ bl MIC_Init
mov r0, #0x1
- blx PM_SetAmp
+ bl PM_SetAmp
mov r0, #0x2
- blx PM_SetAmpGain
+ bl PM_SetAmpGain
pop {r3, pc}
thumb_func_start FUN_020040DC
@@ -3903,10 +3903,10 @@ FUN_020040DC: ; 0x020040DC
push {r3, lr}
mov r0, #0x7
mov r1, #0x0
- blx FUN_020C1040
+ bl FUN_020C1040
mov r0, #0x7
bl FUN_02003FF4
- blx FUN_020C0F68
+ bl FUN_020C0F68
pop {r3, pc}
.balign 4
@@ -4814,7 +4814,7 @@ _02004800:
add r0, r4, #0x0
bl FUN_02003FF4
add r1, r5, #0x0
- blx FUN_020C0F8C
+ bl FUN_020C0F8C
strb r5, [r6, #0x0]
_0200480E:
pop {r4-r6, pc}
@@ -4840,7 +4840,7 @@ FUN_02004828: ; 0x02004828
bl FUN_02003FF4
add r1, r5, #0x0
add r2, r4, #0x0
- blx FUN_020C0EF4
+ bl FUN_020C0EF4
pop {r3-r5, pc}
thumb_func_start FUN_0200483C
@@ -4856,7 +4856,7 @@ _02004844:
_0200484A:
bl FUN_02003FF4
add r1, r4, #0x0
- blx FUN_020C0F30
+ bl FUN_020C0F30
pop {r4, pc}
.balign 4
@@ -4864,7 +4864,7 @@ _0200484A:
FUN_02004858: ; 0x02004858
push {r3-r5, lr}
add r5, r1, #0x0
- blx FUN_020C23FC
+ bl FUN_020C23FC
cmp r5, #0x1
beq _02004868
cmp r5, #0x8
@@ -4882,7 +4882,7 @@ _02004872:
bne _0200488A
add r0, r4, #0x0
mov r1, #0x5
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0x0
add r0, r5, #0x0
bl FUN_0200483C
@@ -4910,7 +4910,7 @@ FUN_020048A0: ; 0x020048A0
add r1, r5, #0x0
add r3, r2, #0x0
str r4, [sp, #0x0]
- blx FUN_020C3910
+ bl FUN_020C3910
pop {r3-r5, pc}
.balign 4
@@ -4922,7 +4922,7 @@ FUN_020048BC: ; 0x020048BC
bl ErrorHandling
_020048C6:
add r0, r4, #0x0
- blx FUN_020C0F50
+ bl FUN_020C0F50
pop {r4, pc}
.balign 4
@@ -4934,7 +4934,7 @@ FUN_020048D0: ; 0x020048D0
mov r0, #0xff
pop {r3, pc}
_020048DA:
- blx FUN_020C23FC
+ bl FUN_020C23FC
cmp r0, #0x0
bne _020048E6
mov r0, #0xff
@@ -4955,13 +4955,13 @@ _020048F0: .word FUN_020C0E14
FUN_020048F4: ; 0x020048F4
push {r3, lr}
bl FUN_02004900
- blx FUN_020C22D0
+ bl FUN_020C22D0
pop {r3, pc}
thumb_func_start FUN_02004900
FUN_02004900: ; 0x02004900
push {r3, lr}
- blx FUN_020C23FC
+ bl FUN_020C23FC
cmp r0, #0x0
bne _0200490E
mov r0, #0x0
@@ -4982,13 +4982,13 @@ _02004918: .word MIC_StartAutoSampling
FUN_0200491C: ; 0x0200491C
push {r3, lr}
bl FUN_02003D30
- blx MIC_StopAutoSampling
+ bl MIC_StopAutoSampling
pop {r3, pc}
thumb_func_start FUN_02004928
FUN_02004928: ; 0x02004928
push {r3, lr}
- blx MIC_DoSamplingAsync
+ bl MIC_DoSamplingAsync
pop {r3, pc}
thumb_func_start FUN_02004930
@@ -5058,7 +5058,7 @@ _020049A8:
bl FUN_02003D38
add r4, r0, #0x0
add r0, r5, #0x0
- blx FUN_020C0688
+ bl FUN_020C0688
str r0, [r4, #0x0]
cmp r0, #0x0
bne _020049CA
@@ -5079,7 +5079,7 @@ _020049D6:
bl FUN_02003D38
add r6, r0, #0x0
add r0, r5, #0x0
- blx FUN_020C0688
+ bl FUN_020C0688
str r0, [r6, #0x0]
cmp r0, #0x0
bne _020049F4
@@ -5122,7 +5122,7 @@ _02004A2A:
add r0, r5, #0x0
bl FUN_02004930
ldr r0, [r0, #0x0]
- blx FUN_020C0670
+ bl FUN_020C0670
mov r0, #0x0
strb r0, [r6, #0x0]
pop {r4-r6, pc}
@@ -5136,7 +5136,7 @@ _02004A4C:
add r0, r5, #0x0
bl FUN_02004930
ldr r0, [r0, #0x0]
- blx FUN_020C0670
+ bl FUN_020C0670
mov r0, #0x0
strb r0, [r4, #0x0]
pop {r4-r6, pc}
@@ -5168,7 +5168,7 @@ FUN_02004A6C: ; 0x02004A6C
ldr r2, [r3, #0x8]
ldr r0, [r0, #0x0]
ldr r3, [r3, #0xc]
- blx FUN_020C054C
+ bl FUN_020C054C
add r5, r0, #0x0
bne _02004AA4
add r0, r4, #0x0
@@ -5184,7 +5184,7 @@ FUN_02004AAC: ; 0x02004AAC
push {r3, lr}
bl FUN_02004930
ldr r0, [r0, #0x0]
- blx FUN_020C0510
+ bl FUN_020C0510
pop {r3, pc}
.balign 4
@@ -5193,7 +5193,7 @@ FUN_02004ABC: ; 0x02004ABC
push {r3, lr}
bl FUN_02004930
ldr r0, [r0, #0x0]
- blx FUN_020C03B8
+ bl FUN_020C03B8
pop {r3, pc}
.balign 4
@@ -5208,7 +5208,7 @@ _02004AD6:
bl FUN_02004930
ldr r0, [r0, #0x0]
add r1, r4, #0x0
- blx FUN_020C041C
+ bl FUN_020C041C
pop {r4, pc}
thumb_func_start FUN_02004AE4
@@ -5218,7 +5218,7 @@ FUN_02004AE4: ; 0x02004AE4
bl FUN_02004930
ldr r0, [r0, #0x0]
add r1, r4, #0x0
- blx FUN_020C044C
+ bl FUN_020C044C
pop {r4, pc}
.balign 4
@@ -5235,17 +5235,17 @@ FUN_02004AF8: ; 0x02004AF8
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x5
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0x0
ldr r0, [r4, #0x0]
- blx FUN_020C04DC
+ bl FUN_020C04DC
pop {r3-r5, pc}
_02004B20:
add r0, r4, #0x0
bl FUN_02004930
ldr r0, [r0, #0x0]
add r1, r5, #0x0
- blx FUN_020C04DC
+ bl FUN_020C04DC
pop {r3-r5, pc}
thumb_func_start FUN_02004B30
@@ -5267,7 +5267,7 @@ FUN_02004B30: ; 0x02004B30
bl ErrorHandling
_02004B54:
add r0, r6, #0x0
- blx FUN_020C226C
+ bl FUN_020C226C
add r7, r0, #0x0
bne _02004B68
bl ErrorHandling
@@ -5278,7 +5278,7 @@ _02004B68:
ldr r0, [r7, #0x0]
lsl r0, r0, #0x8
lsr r0, r0, #0x8
- blx FUN_020C217C
+ bl FUN_020C217C
add r6, r0, #0x0
bne _02004B80
bl ErrorHandling
@@ -5301,14 +5301,14 @@ _02004B80:
_02004B9C:
mov r1, #0x0
add r2, r6, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r7, #0x0]
ldr r1, [r4, #0x0]
lsl r0, r0, #0x8
lsr r0, r0, #0x8
add r2, r6, #0x0
mov r3, #0x0
- blx FUN_020C2104
+ bl FUN_020C2104
mov r1, #0x0
mvn r1, r1
cmp r0, r1
@@ -5429,7 +5429,7 @@ FUN_02004C80: ; 0x02004C80
mov r2, #0x0
lsl r3, r3, #0x6
str r4, [sp, #0x0]
- blx FUN_020C1FF0
+ bl FUN_020C1FF0
add sp, #0x4
pop {r3-r4, pc}
@@ -5456,7 +5456,7 @@ FUN_02004CB4: ; 0x02004CB4
bl FUN_02003D38
mov r1, #0x0
mov r2, #0x1c
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x3
bl FUN_02003D38
add r4, r0, #0x0
@@ -5471,7 +5471,7 @@ FUN_02004CB4: ; 0x02004CB4
ldr r3, _02004CF8 ; =0x000055F0
add r0, r4, #0x0
mov r2, #0x0
- blx FUN_020C1EA4
+ bl FUN_020C1EA4
add sp, #0xc
pop {r3-r4, pc}
nop
@@ -5511,7 +5511,7 @@ FUN_02004D20: ; 0x02004D20
bl FUN_02003FF4
add r1, r5, #0x0
add r2, r4, #0x0
- blx FUN_020C0EA4
+ bl FUN_020C0EA4
pop {r3-r5, pc}
thumb_func_start FUN_02004D34
@@ -5534,14 +5534,14 @@ FUN_02004D4C: ; 0x02004D4C
bl FUN_02003FF4
add r1, r5, #0x0
add r2, r4, #0x0
- blx FUN_020C0E7C
+ bl FUN_020C0E7C
pop {r3-r5, pc}
thumb_func_start FUN_02004D60
FUN_02004D60: ; 0x02004D60
push {r4, lr}
add r4, r0, #0x0
- blx FUN_020C0174
+ bl FUN_020C0174
ldr r0, _02004D70 ; =0x021C3DD8
str r4, [r0, #0x0]
pop {r4, pc}
@@ -5758,7 +5758,7 @@ FUN_02004ED0: ; 0x02004ED0
_02004EF0:
mov r0, #0x1
_02004EF2:
- blx FUN_020C226C
+ bl FUN_020C226C
cmp r0, #0x0
bne _02004F02
bl ErrorHandling
@@ -5768,7 +5768,7 @@ _02004F02:
ldr r0, [r0, #0x0]
lsl r0, r0, #0x8
lsr r0, r0, #0x8
- blx FUN_020C20DC
+ bl FUN_020C20DC
cmp r0, #0x0
bne _02004F18
bl ErrorHandling
@@ -5776,7 +5776,7 @@ _02004F02:
pop {r3-r5, pc}
_02004F18:
mov r1, #0x0
- blx SND_GetWaveDataAddress
+ bl SND_GetWaveDataAddress
str r0, [r4, #0x0]
pop {r3-r5, pc}
nop
@@ -5794,11 +5794,11 @@ FUN_02004F28: ; 0x02004F28
add r0, r6, #0x0
lsl r1, r1, #0x8
ldr r5, [r5, #0x8]
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r0, #0x1
bpl _02004F50
mov r0, #0x20
- blx _s32_div_f
+ bl _s32_div_f
neg r0, r0
b _02004F5A
_02004F50:
@@ -5820,7 +5820,7 @@ _02004F62:
FUN_02004F64: ; 0x02004F64
push {r3, lr}
bl FUN_02003FF4
- blx FUN_020C0DD4
+ bl FUN_020C0DD4
pop {r3, pc}
thumb_func_start FUN_02004F70
@@ -6043,7 +6043,7 @@ _020050D8:
blt _020050D8
_020050E6:
add r1, r2, #0x0
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x8]
strh r0, [r1, #0x0]
mov r0, #0x0
@@ -6060,7 +6060,7 @@ _020050FA:
cmp r2, r1
blt _020050FA
_02005108:
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x4]
sub r4, r4, #0x1
strh r0, [r1, #0x0]
@@ -6097,10 +6097,10 @@ _02005130:
_0200514A:
ldr r1, [sp, #0x0]
add r0, r5, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r1, [sp, #0x0]
add r0, r6, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
_0200515A:
add sp, #0x30
pop {r3-r7, pc}
@@ -6188,7 +6188,7 @@ FUN_020051F4: ; 0x020051F4
add r4, r0, #0x0
bl FUN_02003FF4
add r1, r5, #0x0
- blx FUN_020C3980
+ bl FUN_020C3980
add r6, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
@@ -6266,7 +6266,7 @@ FUN_02005288: ; 0x02005288
add r0, r4, #0x0
bl FUN_02003FF4
add r1, r5, #0x0
- blx FUN_020C3980
+ bl FUN_020C3980
pop {r3-r5, pc}
.balign 4
@@ -6299,7 +6299,7 @@ FUN_020052B8: ; 0x020052B8
add r0, r6, #0x0
add r3, r1, #0x0
str r5, [sp, #0x0]
- blx FUN_020C3910
+ bl FUN_020C3910
add sp, #0x4
pop {r3-r6, pc}
.balign 4
@@ -6328,7 +6328,7 @@ _0200532A:
mov r0, #0x7
bl FUN_02003FF4
add r1, r5, #0x0
- blx FUN_020C3980
+ bl FUN_020C3980
add r4, r0, #0x0
add r0, r5, #0x0
bl FUN_02004110
@@ -6341,14 +6341,14 @@ _0200532A:
FUN_02005350: ; 0x02005350
push {r4, lr}
add r4, r0, #0x0
- blx FUN_020C0FDC
+ bl FUN_020C0FDC
add r0, r4, #0x0
bl FUN_020048D0
cmp r0, #0xff
beq _0200536E
bl FUN_02004018
bl FUN_02003FF4
- blx FUN_020C0F68
+ bl FUN_020C0F68
_0200536E:
bl FUN_02005374
pop {r4, pc}
@@ -6446,7 +6446,7 @@ FUN_0200541C: ; 0x0200541C
bl FUN_02003D38
add r4, r0, #0x0
mov r0, #0x0
- blx FUN_020C0F9C
+ bl FUN_020C0F9C
ldrb r0, [r5, #0x0]
cmp r0, #0x1
bne _02005440
@@ -6475,7 +6475,7 @@ FUN_02005454: ; 0x02005454
mov r0, #0x7
bl FUN_02003FF4
mov r1, #0x0
- blx FUN_020C10A4
+ bl FUN_020C10A4
bl FUN_02005374
mov r5, #0x0
add r4, r5, #0x0
@@ -6527,7 +6527,7 @@ FUN_020054C8: ; 0x020054C8
add r4, r0, #0x0
bl FUN_02003FF4
add r1, r5, #0x0
- blx FUN_020C3980
+ bl FUN_020C3980
add r6, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
@@ -6549,7 +6549,7 @@ FUN_020054F8: ; 0x020054F8
add r4, r1, #0x0
bl FUN_02003FF4
add r1, r4, #0x0
- blx FUN_020C10A4
+ bl FUN_020C10A4
pop {r4, pc}
thumb_func_start FUN_02005508
@@ -6587,7 +6587,7 @@ FUN_02005530: ; 0x02005530
bl FUN_02003FF4
add r1, r5, #0x0
add r2, r4, #0x0
- blx FUN_020C0E7C
+ bl FUN_020C0E7C
pop {r3-r5, pc}
thumb_func_start FUN_0200554C
@@ -6604,7 +6604,7 @@ _0200555C:
bl FUN_02003FF4
add r1, r7, #0x0
add r2, r6, #0x0
- blx FUN_020C0E7C
+ bl FUN_020C0E7C
add r5, r5, #0x1
cmp r5, #0x4
blt _0200555C
@@ -6659,7 +6659,7 @@ _020055BC:
sub r1, r1, #0x3
add r2, r5, #0x0
add r3, r1, #0x0
- blx FUN_020C3910
+ bl FUN_020C3910
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x1
@@ -6673,7 +6673,7 @@ _020055E8:
sub r1, r1, #0x3
add r2, r5, #0x0
add r3, r1, #0x0
- blx FUN_020C3910
+ bl FUN_020C3910
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x8
@@ -6701,11 +6701,11 @@ FUN_02005614: ; 0x02005614
mov r0, #0x1
bl FUN_02003FF4
add r1, r5, #0x0
- blx FUN_020C10A4
+ bl FUN_020C10A4
mov r0, #0x8
bl FUN_02003FF4
add r1, r5, #0x0
- blx FUN_020C10A4
+ bl FUN_020C10A4
ldrb r0, [r6, #0x0]
cmp r0, #0x1
bne _02005658
@@ -7415,7 +7415,7 @@ _02005C48:
mov r0, #0x2
bl FUN_02003FF4
add r1, r5, #0x0
- blx FUN_020C3980
+ bl FUN_020C3980
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x2
@@ -7455,7 +7455,7 @@ FUN_02005CA0: ; 0x02005CA0
mov r0, #0x2
bl FUN_02003FF4
add r1, r4, #0x0
- blx FUN_020C10A4
+ bl FUN_020C10A4
mov r0, #0x6
bl FUN_02004748
bl FUN_02003F64
@@ -7792,549 +7792,3 @@ _02005F36:
mov r0, #0x0
bx lr
.balign 4
-
- thumb_func_start FUN_02005F3C
-FUN_02005F3C: ; 0x02005F3C
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x4]
- cmp r0, #0x1
- beq _02005F4A
- bl ErrorHandling
-_02005F4A:
- ldr r1, [r4, #0x0]
- mov r0, #0x0
- blx FS_UnloadOverlay
- cmp r0, #0x1
- beq _02005F5A
- bl ErrorHandling
-_02005F5A:
- mov r0, #0x0
- str r0, [r4, #0x4]
- pop {r4, pc}
-
- thumb_func_start FUN_02005F60
-FUN_02005F60: ; 0x02005F60
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02005F90
- bl FUN_0200610C
- mov r2, #0x0
- add r3, r0, #0x0
-_02005F70:
- ldr r1, [r3, #0x4]
- cmp r1, #0x1
- bne _02005F86
- ldr r1, [r3, #0x0]
- cmp r4, r1
- bne _02005F86
- lsl r1, r2, #0x3
- add r0, r0, r1
- bl FUN_02005F3C
- pop {r4, pc}
-_02005F86:
- add r2, r2, #0x1
- add r3, #0x8
- cmp r2, #0x8
- blt _02005F70
- pop {r4, pc}
-
- thumb_func_start FUN_02005F90
-FUN_02005F90: ; 0x02005F90
- push {lr}
- sub sp, #0x2c
- add r2, r0, #0x0
- add r0, sp, #0x0
- mov r1, #0x0
- blx FS_LoadOverlayInfo
- cmp r0, #0x1
- beq _02005FA6
- bl ErrorHandling
-_02005FA6:
- mov r0, #0x2
- ldr r2, [sp, #0x4]
- lsl r0, r0, #0x18
- cmp r2, r0
- bhi _02005FBC
- lsr r0, r0, #0x1
- cmp r2, r0
- blo _02005FBC
- add sp, #0x2c
- mov r0, #0x1
- pop {pc}
-_02005FBC:
- mov r0, #0x1
- ldr r1, _02005FD8 ; =0x027E0000
- lsl r0, r0, #0xe
- add r0, r1, r0
- cmp r2, r0
- bhi _02005FD2
- cmp r2, r1
- blo _02005FD2
- add sp, #0x2c
- mov r0, #0x2
- pop {pc}
-_02005FD2:
- mov r0, #0x0
- add sp, #0x2c
- pop {pc}
- .balign 4
-_02005FD8: .word 0x027E0000
-
- thumb_func_start FUN_02005FDC
-FUN_02005FDC: ; 0x02005FDC
- push {r3-r7, lr}
- add r4, r1, #0x0
- mov r1, #0x0
- mvn r1, r1
- add r5, r0, #0x0
- str r1, [sp, #0x0]
- bl FUN_02006090
- cmp r0, #0x0
- bne _02005FF4
- mov r0, #0x0
- pop {r3-r7, pc}
-_02005FF4:
- add r0, r5, #0x0
- bl FUN_02005F90
- add r7, r0, #0x0
- bl FUN_0200610C
- add r3, r0, #0x0
- mov r6, #0x0
- add r1, r3, #0x0
-_02006006:
- ldr r0, [r1, #0x4]
- cmp r0, #0x0
- bne _02006018
- lsl r1, r6, #0x3
- add r2, r3, r1
- mov r0, #0x1
- str r0, [r2, #0x4]
- str r5, [r3, r1]
- b _02006020
-_02006018:
- add r6, r6, #0x1
- add r1, #0x8
- cmp r6, #0x8
- blt _02006006
-_02006020:
- cmp r6, #0x8
- blt _0200602C
- bl ErrorHandling
- mov r0, #0x0
- pop {r3-r7, pc}
-_0200602C:
- sub r6, r7, #0x1
- cmp r6, #0x1
- bhi _0200603C
- mov r0, #0x0
- mvn r0, r0
- blx FS_SetDefaultDMA
- str r0, [sp, #0x0]
-_0200603C:
- cmp r4, #0x0
- beq _0200604A
- cmp r4, #0x1
- beq _02006056
- cmp r4, #0x2
- beq _02006062
- b _0200606E
-_0200604A:
- mov r0, #0x0
- add r1, r5, #0x0
- bl FUN_02006168
- add r4, r0, #0x0
- b _02006076
-_02006056:
- mov r0, #0x0
- add r1, r5, #0x0
- bl FUN_02006170
- add r4, r0, #0x0
- b _02006076
-_02006062:
- mov r0, #0x0
- add r1, r5, #0x0
- bl FUN_020061A8
- add r4, r0, #0x0
- b _02006076
-_0200606E:
- bl ErrorHandling
- mov r0, #0x0
- pop {r3-r7, pc}
-_02006076:
- cmp r6, #0x1
- bhi _02006080
- ldr r0, [sp, #0x0]
- blx FS_SetDefaultDMA
-_02006080:
- cmp r4, #0x0
- bne _0200608C
- bl ErrorHandling
- mov r0, #0x0
- pop {r3-r7, pc}
-_0200608C:
- mov r0, #0x1
- pop {r3-r7, pc}
-
- thumb_func_start FUN_02006090
-FUN_02006090: ; 0x02006090
- push {r3-r7, lr}
- sub sp, #0x10
- add r1, sp, #0xc
- add r2, sp, #0x8
- add r4, r0, #0x0
- bl FUN_02006130
- cmp r0, #0x0
- bne _020060A8
- add sp, #0x10
- mov r0, #0x0
- pop {r3-r7, pc}
-_020060A8:
- add r0, r4, #0x0
- bl FUN_02005F90
- bl FUN_0200610C
- add r5, r0, #0x0
- mov r4, #0x0
- add r6, sp, #0x4
- add r7, sp, #0x0
-_020060BA:
- ldr r0, [r5, #0x4]
- cmp r0, #0x1
- bne _020060FC
- ldr r0, [r5, #0x0]
- add r1, r6, #0x0
- add r2, r7, #0x0
- bl FUN_02006130
- cmp r0, #0x1
- bne _020060FC
- ldr r1, [sp, #0x4]
- ldr r2, [sp, #0xc]
- cmp r2, r1
- blo _020060DC
- ldr r0, [sp, #0x0]
- cmp r2, r0
- blo _020060F2
-_020060DC:
- ldr r3, [sp, #0x8]
- cmp r3, r1
- bls _020060E8
- ldr r0, [sp, #0x0]
- cmp r3, r0
- bls _020060F2
-_020060E8:
- cmp r2, r1
- bhi _020060FC
- ldr r0, [sp, #0x0]
- cmp r3, r0
- blo _020060FC
-_020060F2:
- bl ErrorHandling
- add sp, #0x10
- mov r0, #0x0
- pop {r3-r7, pc}
-_020060FC:
- add r4, r4, #0x1
- add r5, #0x8
- cmp r4, #0x8
- blt _020060BA
- mov r0, #0x1
- add sp, #0x10
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200610C
-FUN_0200610C: ; 0x0200610C
- cmp r0, #0x0
- beq _02006118
- cmp r0, #0x1
- beq _0200611C
- cmp r0, #0x2
- beq _02006120
-_02006118:
- ldr r0, _02006124 ; =0x021C45B0
- bx lr
-_0200611C:
- ldr r0, _02006128 ; =0x021C45F0
- bx lr
-_02006120:
- ldr r0, _0200612C ; =0x021C4630
- bx lr
- .balign 4
-_02006124: .word 0x021C45B0
-_02006128: .word 0x021C45F0
-_0200612C: .word 0x021C4630
-
- thumb_func_start FUN_02006130
-FUN_02006130: ; 0x02006130
- push {r4-r5, lr}
- sub sp, #0x2c
- add r3, r0, #0x0
- add r5, r1, #0x0
- add r4, r2, #0x0
- add r0, sp, #0x0
- mov r1, #0x0
- add r2, r3, #0x0
- blx FS_LoadOverlayInfo
- cmp r0, #0x0
- bne _02006152
- bl ErrorHandling
- add sp, #0x2c
- mov r0, #0x0
- pop {r4-r5, pc}
-_02006152:
- ldr r2, [sp, #0x4]
- str r2, [r5, #0x0]
- ldr r1, [sp, #0x8]
- ldr r0, [sp, #0xc]
- add r0, r1, r0
- add r0, r2, r0
- str r0, [r4, #0x0]
- mov r0, #0x1
- add sp, #0x2c
- pop {r4-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02006168
-FUN_02006168: ; 0x02006168
- ldr r3, _0200616C ; =FS_LoadOverlay
- bx r3
- .balign 4
-_0200616C: .word FS_LoadOverlay
-
- thumb_func_start FUN_02006170
-FUN_02006170: ; 0x02006170
- push {lr}
- sub sp, #0x2c
- add r3, r0, #0x0
- add r2, r1, #0x0
- add r0, sp, #0x0
- add r1, r3, #0x0
- blx FS_LoadOverlayInfo
- cmp r0, #0x0
- bne _0200618A
- add sp, #0x2c
- mov r0, #0x0
- pop {pc}
-_0200618A:
- add r0, sp, #0x0
- blx FS_LoadOverlayImage
- cmp r0, #0x0
- bne _0200619A
- add sp, #0x2c
- mov r0, #0x0
- pop {pc}
-_0200619A:
- add r0, sp, #0x0
- blx FS_StartOverlay
- mov r0, #0x1
- add sp, #0x2c
- pop {pc}
- .balign 4
-
- thumb_func_start FUN_020061A8
-FUN_020061A8: ; 0x020061A8
- push {lr}
- sub sp, #0x74
- add r3, r0, #0x0
- add r2, r1, #0x0
- add r0, sp, #0x0
- add r1, r3, #0x0
- blx FS_LoadOverlayInfo
- cmp r0, #0x0
- bne _020061C2
- add sp, #0x74
- mov r0, #0x0
- pop {pc}
-_020061C2:
- add r0, sp, #0x2c
- blx FS_InitFile
- add r0, sp, #0x0
- add r1, sp, #0x2c
- blx FS_LoadOverlayImageAsync
- add r0, sp, #0x2c
- blx FS_WaitAsync
- add r0, sp, #0x2c
- blx FS_CloseFile
- add r0, sp, #0x0
- blx FS_StartOverlay
- mov r0, #0x1
- add sp, #0x74
- pop {pc}
-
- thumb_func_start FUN_020061E8
-FUN_020061E8: ; 0x020061E8
- push {r3-r7, lr}
- add r5, r1, #0x0
- add r6, r0, #0x0
- add r7, r2, #0x0
- cmp r5, #0x0
- beq _0200620C
- add r0, r3, #0x0
- bl FUN_02016998
- add r4, r0, #0x0
- bne _02006202
- mov r0, #0x0
- pop {r3-r7, pc}
-_02006202:
- mov r1, #0x0
- add r2, r5, #0x0
- blx Call_FillMemWithValue
- b _0200620E
-_0200620C:
- mov r4, #0x0
-_0200620E:
- add r0, r6, #0x0
- add r1, r4, #0x0
- add r2, r7, #0x0
- bl FUN_0200CA44
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0200621C
-FUN_0200621C: ; 0x0200621C
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_0201B6C8
- cmp r0, #0x0
- beq _0200622C
- bl FUN_02016A18
-_0200622C:
- add r0, r4, #0x0
- bl FUN_0200CAB4
- pop {r4, pc}
-
- thumb_func_start FUN_02006234
-FUN_02006234: ; 0x02006234
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r0, r2, #0x0
- mov r1, #0x28
- bl FUN_02016998
- add r3, r0, #0x0
- add r2, r3, #0x0
- ldmia r5!, {r0-r1}
- stmia r2!, {r0-r1}
- ldmia r5!, {r0-r1}
- stmia r2!, {r0-r1}
- mov r0, #0x0
- str r0, [r3, #0x10]
- str r0, [r3, #0x14]
- str r4, [r3, #0x18]
- str r0, [r3, #0x1c]
- str r0, [r3, #0x20]
- str r0, [r3, #0x24]
- add r0, r3, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02006260
-FUN_02006260: ; 0x02006260
- ldr r3, _02006264 ; =FUN_02016A18
- bx r3
- .balign 4
-_02006264: .word FUN_02016A18
-
- thumb_func_start FUN_02006268
-FUN_02006268: ; 0x02006268
- push {r4, lr}
- add r4, r0, #0x0
- add r0, r2, #0x0
- bl FUN_02016998
- str r0, [r4, #0x1c]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02006278
-FUN_02006278: ; 0x02006278
- ldr r0, [r0, #0x1c]
- bx lr
-
- thumb_func_start FUN_0200627C
-FUN_0200627C: ; 0x0200627C
- push {r4, lr}
- add r4, r0, #0x0
- ldr r0, [r4, #0x1c]
- bl FUN_02016A18
- mov r0, #0x0
- str r0, [r4, #0x1c]
- pop {r4, pc}
-
- thumb_func_start FUN_0200628C
-FUN_0200628C: ; 0x0200628C
- ldr r0, [r0, #0x18]
- bx lr
-
- thumb_func_start FUN_02006290
-FUN_02006290: ; 0x02006290
- push {r4, lr}
- add r4, r0, #0x0
- ldr r1, [r4, #0x10]
- cmp r1, #0x3
- bhi _0200630E
- add r1, r1, r1
- add r1, pc
- ldrh r1, [r1, #0x6]
- lsl r1, r1, #0x10
- asr r1, r1, #0x10
- add pc, r1
-_020062A6: ; jump table (using 16-bit offset)
- .short _020062AE - _020062A6 - 2; case 0
- .short _020062C2 - _020062A6 - 2; case 1
- .short _020062DA - _020062A6 - 2; case 2
- .short _020062F0 - _020062A6 - 2; case 3
-_020062AE:
- mov r1, #0x0
- ldr r0, [r4, #0xc]
- mvn r1, r1
- cmp r0, r1
- beq _020062BE
- mov r1, #0x2
- bl FUN_02005FDC
-_020062BE:
- mov r0, #0x1
- str r0, [r4, #0x10]
-_020062C2:
- add r1, r4, #0x0
- ldr r2, [r4, #0x0]
- add r0, r4, #0x0
- add r1, #0x14
- blx r2
- cmp r0, #0x1
- bne _0200630E
- mov r0, #0x2
- str r0, [r4, #0x10]
- mov r0, #0x0
- str r0, [r4, #0x14]
- b _0200630E
-_020062DA:
- add r1, r4, #0x0
- ldr r2, [r4, #0x4]
- add r1, #0x14
- blx r2
- cmp r0, #0x1
- bne _0200630E
- mov r0, #0x3
- str r0, [r4, #0x10]
- mov r0, #0x0
- str r0, [r4, #0x14]
- b _0200630E
-_020062F0:
- add r1, r4, #0x0
- ldr r2, [r4, #0x8]
- add r1, #0x14
- blx r2
- cmp r0, #0x1
- bne _0200630E
- mov r1, #0x0
- ldr r0, [r4, #0xc]
- mvn r1, r1
- cmp r0, r1
- beq _0200630A
- bl FUN_02005F60
-_0200630A:
- mov r0, #0x1
- pop {r4, pc}
-_0200630E:
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
diff --git a/arm9/asm/unk_020061E8.s b/arm9/asm/unk_020061E8.s
new file mode 100644
index 00000000..a3c6d702
--- /dev/null
+++ b/arm9/asm/unk_020061E8.s
@@ -0,0 +1,181 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+
+ thumb_func_start FUN_020061E8
+FUN_020061E8: ; 0x020061E8
+ push {r3-r7, lr}
+ add r5, r1, #0x0
+ add r6, r0, #0x0
+ add r7, r2, #0x0
+ cmp r5, #0x0
+ beq _0200620C
+ add r0, r3, #0x0
+ bl FUN_02016998
+ add r4, r0, #0x0
+ bne _02006202
+ mov r0, #0x0
+ pop {r3-r7, pc}
+_02006202:
+ mov r1, #0x0
+ add r2, r5, #0x0
+ bl Call_FillMemWithValue
+ b _0200620E
+_0200620C:
+ mov r4, #0x0
+_0200620E:
+ add r0, r6, #0x0
+ add r1, r4, #0x0
+ add r2, r7, #0x0
+ bl FUN_0200CA44
+ pop {r3-r7, pc}
+ .balign 4
+
+ thumb_func_start FUN_0200621C
+FUN_0200621C: ; 0x0200621C
+ push {r4, lr}
+ add r4, r0, #0x0
+ bl FUN_0201B6C8
+ cmp r0, #0x0
+ beq _0200622C
+ bl FUN_02016A18
+_0200622C:
+ add r0, r4, #0x0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+
+ thumb_func_start FUN_02006234
+FUN_02006234: ; 0x02006234
+ push {r3-r5, lr}
+ add r5, r0, #0x0
+ add r4, r1, #0x0
+ add r0, r2, #0x0
+ mov r1, #0x28
+ bl FUN_02016998
+ add r3, r0, #0x0
+ add r2, r3, #0x0
+ ldmia r5!, {r0-r1}
+ stmia r2!, {r0-r1}
+ ldmia r5!, {r0-r1}
+ stmia r2!, {r0-r1}
+ mov r0, #0x0
+ str r0, [r3, #0x10]
+ str r0, [r3, #0x14]
+ str r4, [r3, #0x18]
+ str r0, [r3, #0x1c]
+ str r0, [r3, #0x20]
+ str r0, [r3, #0x24]
+ add r0, r3, #0x0
+ pop {r3-r5, pc}
+
+ thumb_func_start FUN_02006260
+FUN_02006260: ; 0x02006260
+ ldr r3, _02006264 ; =FUN_02016A18
+ bx r3
+ .balign 4
+_02006264: .word FUN_02016A18
+
+ thumb_func_start FUN_02006268
+FUN_02006268: ; 0x02006268
+ push {r4, lr}
+ add r4, r0, #0x0
+ add r0, r2, #0x0
+ bl FUN_02016998
+ str r0, [r4, #0x1c]
+ pop {r4, pc}
+ .balign 4
+
+ thumb_func_start FUN_02006278
+FUN_02006278: ; 0x02006278
+ ldr r0, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start FUN_0200627C
+FUN_0200627C: ; 0x0200627C
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r0, [r4, #0x1c]
+ bl FUN_02016A18
+ mov r0, #0x0
+ str r0, [r4, #0x1c]
+ pop {r4, pc}
+
+ thumb_func_start FUN_0200628C
+FUN_0200628C: ; 0x0200628C
+ ldr r0, [r0, #0x18]
+ bx lr
+
+ thumb_func_start FUN_02006290
+FUN_02006290: ; 0x02006290
+ push {r4, lr}
+ add r4, r0, #0x0
+ ldr r1, [r4, #0x10]
+ cmp r1, #0x3
+ bhi _0200630E
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #0x6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_020062A6: ; jump table (using 16-bit offset)
+ .short _020062AE - _020062A6 - 2; case 0
+ .short _020062C2 - _020062A6 - 2; case 1
+ .short _020062DA - _020062A6 - 2; case 2
+ .short _020062F0 - _020062A6 - 2; case 3
+_020062AE:
+ mov r1, #0x0
+ ldr r0, [r4, #0xc]
+ mvn r1, r1
+ cmp r0, r1
+ beq _020062BE
+ mov r1, #0x2
+ bl HandleLoadOverlay
+_020062BE:
+ mov r0, #0x1
+ str r0, [r4, #0x10]
+_020062C2:
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x0]
+ add r0, r4, #0x0
+ add r1, #0x14
+ blx r2
+ cmp r0, #0x1
+ bne _0200630E
+ mov r0, #0x2
+ str r0, [r4, #0x10]
+ mov r0, #0x0
+ str r0, [r4, #0x14]
+ b _0200630E
+_020062DA:
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x4]
+ add r1, #0x14
+ blx r2
+ cmp r0, #0x1
+ bne _0200630E
+ mov r0, #0x3
+ str r0, [r4, #0x10]
+ mov r0, #0x0
+ str r0, [r4, #0x14]
+ b _0200630E
+_020062F0:
+ add r1, r4, #0x0
+ ldr r2, [r4, #0x8]
+ add r1, #0x14
+ blx r2
+ cmp r0, #0x1
+ bne _0200630E
+ mov r1, #0x0
+ ldr r0, [r4, #0xc]
+ mvn r1, r1
+ cmp r0, r1
+ beq _0200630A
+ bl UnloadOverlayByID
+_0200630A:
+ mov r0, #0x1
+ pop {r4, pc}
+_0200630E:
+ mov r0, #0x0
+ pop {r4, pc}
+ .balign 4
diff --git a/arm9/asm/unk_02006864.s b/arm9/asm/unk_02006864.s
index fbfb90df..d45448fb 100644
--- a/arm9/asm/unk_02006864.s
+++ b/arm9/asm/unk_02006864.s
@@ -35,7 +35,7 @@ FUN_0200687C: ; 0x0200687C
add r7, r0, #0x0
beq _020068C2
add r1, sp, #0x4
- blx FUN_020B0030
+ bl FUN_020B0030
cmp r0, #0x0
beq _020068BC
cmp r4, #0x0
@@ -75,7 +75,7 @@ FUN_020068C8: ; 0x020068C8
add r7, r0, #0x0
beq _0200692C
add r1, sp, #0x4
- blx FUN_020B0180
+ bl FUN_020B0180
cmp r0, #0x0
beq _02006926
cmp r4, #0x0
@@ -144,7 +144,7 @@ FUN_02006948: ; 0x02006948
cmp r0, #0x0
beq _02006A2A
add r1, sp, #0x8
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0x0
beq _02006A24
ldr r0, [sp, #0x8]
@@ -160,7 +160,7 @@ _02006982:
ldr r0, [sp, #0x8]
add r1, r5, #0x0
ldr r0, [r0, #0xc]
- blx DC_FlushRange
+ bl DC_FlushRange
cmp r4, #0x7
bhi _02006A14
add r0, r4, r4
@@ -179,7 +179,7 @@ _0200699C: ; jump table (using 16-bit offset)
.short _020069C6 - _0200699C - 2; case 6
.short _020069FA - _0200699C - 2; case 7
_020069AC:
- blx GX_BeginLoadBGExtPltt
+ bl GX_BeginLoadBGExtPltt
ldr r0, [sp, #0x8]
ldr r3, _02006A30 ; =0x020ECBB0
lsl r4, r4, #0x2
@@ -188,10 +188,10 @@ _020069AC:
add r1, r6, #0x0
add r2, r5, #0x0
blx r3
- blx GX_EndLoadBGExtPltt
+ bl GX_EndLoadBGExtPltt
b _02006A24
_020069C6:
- blx GXS_BeginLoadBGExtPltt
+ bl GXS_BeginLoadBGExtPltt
ldr r0, [sp, #0x8]
ldr r3, _02006A30 ; =0x020ECBB0
lsl r4, r4, #0x2
@@ -200,10 +200,10 @@ _020069C6:
add r1, r6, #0x0
add r2, r5, #0x0
blx r3
- blx GXS_EndLoadBGExtPltt
+ bl GXS_EndLoadBGExtPltt
b _02006A24
_020069E0:
- blx GX_BeginLoadOBJExtPltt
+ bl GX_BeginLoadOBJExtPltt
ldr r0, [sp, #0x8]
ldr r3, _02006A30 ; =0x020ECBB0
lsl r4, r4, #0x2
@@ -212,10 +212,10 @@ _020069E0:
add r1, r6, #0x0
add r2, r5, #0x0
blx r3
- blx GX_EndLoadOBJExtPltt
+ bl GX_EndLoadOBJExtPltt
b _02006A24
_020069FA:
- blx GXS_BeginLoadOBJExtPltt
+ bl GXS_BeginLoadOBJExtPltt
ldr r0, [sp, #0x8]
ldr r3, _02006A30 ; =0x020ECBB0
lsl r4, r4, #0x2
@@ -224,7 +224,7 @@ _020069FA:
add r1, r6, #0x0
add r2, r5, #0x0
blx r3
- blx GXS_EndLoadOBJExtPltt
+ bl GXS_EndLoadOBJExtPltt
b _02006A24
_02006A14:
ldr r0, [sp, #0x8]
@@ -259,7 +259,7 @@ FUN_02006A34: ; 0x02006A34
add r7, r0, #0x0
beq _02006A80
add r1, sp, #0x4
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r0, #0x0
beq _02006A7A
cmp r4, #0x0
@@ -270,7 +270,7 @@ _02006A60:
ldr r0, [sp, #0x4]
add r1, r4, #0x0
ldr r0, [r0, #0x14]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x4]
ldr r3, _02006A88 ; =0x020ECBA0
lsl r5, r5, #0x2
@@ -303,11 +303,11 @@ FUN_02006A8C: ; 0x02006A8C
add r6, r0, #0x0
beq _02006AE0
add r1, sp, #0x4
- blx FUN_020B00F0
+ bl FUN_020B00F0
add r7, r0, #0x0
add r0, r6, #0x0
add r1, sp, #0x8
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0x0
beq _02006ADA
cmp r7, #0x0
@@ -318,14 +318,14 @@ FUN_02006A8C: ; 0x02006A8C
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x4]
add r3, r5, #0x0
- blx FUN_020B10E8
+ bl FUN_020B10E8
b _02006ADA
_02006ACE:
ldr r0, [sp, #0x8]
ldr r3, [sp, #0x24]
add r1, r4, #0x0
add r2, r5, #0x0
- blx FUN_020B1240
+ bl FUN_020B1240
_02006ADA:
add r0, r6, #0x0
bl FUN_02016A18
@@ -346,7 +346,7 @@ FUN_02006AE4: ; 0x02006AE4
ldr r4, _02006B30 ; =0x00000000
beq _02006B28
add r1, sp, #0x4
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r0, #0x0
beq _02006B22
ldr r1, [sp, #0x18]
@@ -388,7 +388,7 @@ FUN_02006B38: ; 0x02006B38
add r4, r0, #0x0
beq _02006B9E
add r1, sp, #0x4
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r0, #0x0
beq _02006B98
ldr r1, [sp, #0x18]
@@ -450,7 +450,7 @@ FUN_02006BB0: ; 0x02006BB0
add r5, r0, #0x0
beq _02006BD6
add r1, r4, #0x0
- blx FUN_020B0030
+ bl FUN_020B0030
cmp r0, #0x0
bne _02006BD6
add r0, r5, #0x0
@@ -473,7 +473,7 @@ FUN_02006BDC: ; 0x02006BDC
add r5, r0, #0x0
beq _02006C02
add r1, r4, #0x0
- blx FUN_020B0180
+ bl FUN_020B0180
cmp r0, #0x0
bne _02006C02
add r0, r5, #0x0
@@ -495,7 +495,7 @@ FUN_02006C08: ; 0x02006C08
add r4, r0, #0x0
beq _02006C2C
add r1, r5, #0x0
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0x0
bne _02006C2C
add r0, r4, #0x0
@@ -517,7 +517,7 @@ FUN_02006C30: ; 0x02006C30
add r5, r0, #0x0
beq _02006C56
add r1, r4, #0x0
- blx FUN_020AFEB8
+ bl FUN_020AFEB8
cmp r0, #0x0
bne _02006C56
add r0, r5, #0x0
@@ -540,7 +540,7 @@ FUN_02006C5C: ; 0x02006C5C
add r5, r0, #0x0
beq _02006C82
add r1, r4, #0x0
- blx thunk_FUN_020afda0_2
+ bl thunk_FUN_020afda0_2
cmp r0, #0x0
bne _02006C82
add r0, r5, #0x0
@@ -617,7 +617,7 @@ _02006CFC:
beq _02006D10
add r0, r4, #0x0
add r1, r5, #0x0
- blx MI_UncompressLZ8
+ bl MI_UncompressLZ8
add r0, r4, #0x0
bl FUN_02016A18
_02006D10:
@@ -683,7 +683,7 @@ _02006D7C:
beq _02006D90
add r0, r4, #0x0
add r1, r5, #0x0
- blx MI_UncompressLZ8
+ bl MI_UncompressLZ8
add r0, r4, #0x0
bl FUN_02016A18
_02006D90:
@@ -736,7 +736,7 @@ FUN_02006D98: ; 0x02006D98
ldr r1, [r4, r1]
mov r0, #0x0
mov r2, #0x4
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r5, #0x0
mov r1, #0xc0
bl FUN_02016998
@@ -746,7 +746,7 @@ FUN_02006D98: ; 0x02006D98
ldr r1, [r4, r1]
mov r0, #0x0
mov r2, #0x4
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r6, #0x0
add r5, r4, #0x0
add r7, r6, #0x0
@@ -754,12 +754,12 @@ _02006E12:
add r0, r7, #0x0
add r1, r5, #0x0
mov r2, #0x98
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r6, r6, #0x1
add r5, #0x98
cmp r6, #0x4
blt _02006E12
- blx FUN_020B02C8
+ bl FUN_020B02C8
ldr r2, _02006EC8 ; =0x000002E3
mov r0, #0x0
strb r0, [r4, r2]
@@ -770,7 +770,7 @@ _02006E12:
bl LoadFromNarc_2
add r1, sp, #0xc
str r0, [sp, #0x4]
- blx FUN_020B0088
+ bl FUN_020B0088
ldr r0, [sp, #0xc]
mov r1, #0xaf
ldr r0, [r0, #0x4]
@@ -795,7 +795,7 @@ _02006E12:
ldrb r1, [r1, #0x0]
ldr r0, [r4, r0]
lsl r2, r2, #0xe
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
mov r7, #0xab
ldr r6, _02006ECC ; =0x00005050
@@ -850,7 +850,7 @@ FUN_02006ED4: ; 0x02006ED4
bl FUN_020082A8
add r0, r5, #0x0
bl FUN_020086F4
- blx FUN_020BB394
+ bl FUN_020BB394
mov r6, #0x9f
mov r0, #0x0
ldr r4, _02007250 ; =0x04000444
@@ -910,7 +910,7 @@ _02006F48:
add r1, #0x24
blx r2
_02006F56:
- blx FUN_020BB394
+ bl FUN_020BB394
ldr r0, _02007258 ; =0x000002E3
ldrb r0, [r5, r0]
cmp r0, #0x1
@@ -969,7 +969,7 @@ _02006F7E:
ldrsh r0, [r0, r1]
mov r1, #0x2
ldrsh r1, [r2, r1]
- blx G3_RotX
+ bl G3_RotX
ldrh r0, [r4, #0x3a]
asr r0, r0, #0x4
lsl r1, r0, #0x2
@@ -978,7 +978,7 @@ _02006F7E:
ldrsh r0, [r0, r1]
mov r1, #0x2
ldrsh r1, [r2, r1]
- blx G3_RotY
+ bl G3_RotY
ldrh r0, [r4, #0x3c]
asr r0, r0, #0x4
lsl r1, r0, #0x2
@@ -987,7 +987,7 @@ _02006F7E:
ldrsh r0, [r0, r1]
mov r1, #0x2
ldrsh r1, [r2, r1]
- blx G3_RotZ
+ bl G3_RotZ
ldr r0, [r4, #0x28]
lsl r0, r0, #0xc
neg r1, r0
@@ -1120,7 +1120,7 @@ _02006F7E:
add r2, r3, r2
asr r1, r1, #0x10
mov r3, r12
- blx FUN_020B0250
+ bl FUN_020B0250
b _02007174
_02007104:
mov r0, #0x34
@@ -1177,7 +1177,7 @@ _02007104:
lsl r1, r1, #0x10
asr r1, r1, #0x10
add r2, r6, r2
- blx FUN_020B0250
+ bl FUN_020B0250
_02007174:
add r0, r4, #0x0
add r0, #0x6c
@@ -1340,7 +1340,7 @@ _0200727C:
lsl r1, r1, #0x10
ldr r2, _020072E0 ; =0xFFFFFC18
asr r1, r1, #0x10
- blx FUN_020B0250
+ bl FUN_020B0250
_020072BC:
ldr r0, [sp, #0x14]
add r4, #0x98
@@ -1529,7 +1529,7 @@ _02007408:
mov r0, #0x0
add r1, r5, #0x0
mov r2, #0x98
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r1, [r4, r6]
mov r0, #0x1
bic r1, r0
@@ -1658,7 +1658,7 @@ _02007408:
add r1, r4, r6
add r1, #0x84
mov r2, #0x14
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_02007518:
add r0, r4, r6
add sp, #0xc
@@ -3499,7 +3499,7 @@ FUN_020081C4: ; 0x020081C4
strb r1, [r4, r0]
sub r0, #0x81
add r0, r4, r0
- blx FUN_020B1A24
+ bl FUN_020B1A24
mov r3, #0xae
lsl r3, r3, #0x2
mov r1, #0x20
@@ -3525,7 +3525,7 @@ FUN_020081C4: ; 0x020081C4
ldr r1, [r4, r1]
mov r2, #0x0
add r3, r4, r3
- blx FUN_020B1528
+ bl FUN_020B1528
_02008212:
ldr r0, _02008258 ; =0x000002E2
ldrb r1, [r4, r0]
@@ -3535,7 +3535,7 @@ _02008212:
strb r1, [r4, r0]
sub r0, #0x5e
add r0, r4, r0
- blx FUN_020B19DC
+ bl FUN_020B19DC
mov r3, #0xaa
lsl r3, r3, #0x2
add r0, r3, #0x0
@@ -3556,7 +3556,7 @@ _02008212:
add r0, r4, r0
mov r2, #0x0
add r3, r4, r3
- blx FUN_020B1240
+ bl FUN_020B1240
_02008252:
pop {r4, pc}
.balign 4
@@ -3652,7 +3652,7 @@ _020082CC:
bl LoadFromNarc_2
add r1, sp, #0x58
str r0, [sp, #0x4c]
- blx FUN_020B0088
+ bl FUN_020B0088
ldr r0, [sp, #0x58]
mov r1, #0xaf
ldr r0, [r0, #0x4]
@@ -3767,7 +3767,7 @@ _020083C4:
ldr r1, [sp, #0xc]
ldr r0, [sp, #0x14]
lsl r1, r1, #0x1
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _020083F4
mov r0, #0xab
@@ -3786,7 +3786,7 @@ _020083C4:
_020083F4:
ldr r1, [sp, #0xc]
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _02008416
mov r0, #0xab
@@ -3890,7 +3890,7 @@ _020084B4:
ldr r1, [sp, #0x8]
ldr r0, [sp, #0x14]
lsl r1, r1, #0x1
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _020084E4
mov r0, #0xab
@@ -3909,7 +3909,7 @@ _020084B4:
_020084E4:
ldr r1, [sp, #0x8]
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _02008504
mov r0, #0xab
@@ -4086,7 +4086,7 @@ _0200862C:
ldr r1, [sp, #0x4]
ldr r0, [sp, #0x0]
lsl r1, r1, #0x1
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _02008654
mov r0, #0xab
@@ -4101,7 +4101,7 @@ _0200862C:
_02008654:
ldr r1, [sp, #0x4]
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
beq _02008672
mov r0, #0xab
@@ -4215,7 +4215,7 @@ _02008706:
bl LoadFromNarc_2
add r1, sp, #0x18
str r0, [sp, #0x10]
- blx FUN_020B0138
+ bl FUN_020B0138
ldr r0, [sp, #0x18]
mov r7, #0x0
ldr r1, [r0, #0x0]
@@ -4261,7 +4261,7 @@ _0200874A:
bl LoadFromNarc_2
add r1, sp, #0x18
str r0, [sp, #0x4]
- blx FUN_020B0138
+ bl FUN_020B0138
ldr r0, [sp, #0x18]
mov r7, #0xad
ldr r0, [r0, #0xc]
@@ -5035,10 +5035,10 @@ FUN_02008D44: ; 0x02008D44
beq _02008D98
b _02008DC4
_02008D5A:
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x40
beq _02008D6A
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x20
bne _02008D7A
_02008D6A:
@@ -5065,10 +5065,10 @@ _02008D8A:
bl FUN_0201D194
pop {r4, pc}
_02008D98:
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x30
beq _02008DA8
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x50
bne _02008DB6
_02008DA8:
@@ -5127,7 +5127,7 @@ FUN_02008DEC: ; 0x02008DEC
mov r1, #0x0
add r2, r7, #0x0
str r0, [r4, #0x4]
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
str r5, [r4, #0x8]
mov r0, #0x0
str r0, [r4, #0xc]
@@ -6286,7 +6286,7 @@ _0200969C:
mov r2, #0x18
add r1, r5, #0x4
mul r2, r3
- blx memcpy
+ bl memcpy
_020096B0:
pop {r4-r6, pc}
.balign 4
@@ -6558,7 +6558,7 @@ FUN_0200986C: ; 0x0200986C
add r4, r0, #0x0
add r0, r6, #0x0
add r1, r4, #0x0
- blx FUN_020B0088
+ bl FUN_020B0088
str r5, [r4, #0x4]
add r0, r4, #0x0
pop {r4-r6, pc}
@@ -6576,7 +6576,7 @@ FUN_0200988C: ; 0x0200988C
add r4, r0, #0x0
add r0, r7, #0x0
add r1, r4, #0x0
- blx FUN_020B0138
+ bl FUN_020B0138
str r5, [r4, #0x4]
str r6, [r4, #0x8]
add r0, r4, #0x0
@@ -6593,7 +6593,7 @@ FUN_020098B0: ; 0x020098B0
add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_020AFEB8
+ bl FUN_020AFEB8
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -6608,7 +6608,7 @@ FUN_020098CC: ; 0x020098CC
add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- blx thunk_FUN_020afda0_2
+ bl thunk_FUN_020afda0_2
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -6623,7 +6623,7 @@ FUN_020098E8: ; 0x020098E8
add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_020AFFD8
+ bl FUN_020AFFD8
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -6638,7 +6638,7 @@ FUN_02009904: ; 0x02009904
add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
- blx thunk_FUN_020afda0
+ bl thunk_FUN_020afda0
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -6799,7 +6799,7 @@ _02009A34:
beq _02009A48
add r0, r4, #0x0
add r1, r5, #0x0
- blx MI_UncompressLZ8
+ bl MI_UncompressLZ8
add r0, r4, #0x0
bl FUN_02016A18
_02009A48:
@@ -7367,7 +7367,7 @@ FUN_02009E88: ; 0x02009E88
mov r1, #0x0
bl FUN_02009E54
add r1, r4, #0x0
- blx FUN_020B19C4
+ bl FUN_020B19C4
mov r1, #0x0
mvn r1, r1
cmp r0, r1
@@ -7458,7 +7458,7 @@ _02009F1C:
lsl r2, r4, #0x10
lsr r1, r1, #0x10
lsr r2, r2, #0x10
- blx FUN_020B0E34
+ bl FUN_020B0E34
cmp r0, #0x0
bne _02009F48
bl ErrorHandling
@@ -7481,7 +7481,7 @@ _02009F48:
lsr r1, r1, #0x10
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- blx FUN_020B0E34
+ bl FUN_020B0E34
cmp r0, #0x0
bne _02009F78
bl ErrorHandling
@@ -7498,11 +7498,11 @@ FUN_02009F80: ; 0x02009F80
ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _02009F98
- blx FUN_020B0870
+ bl FUN_020B0870
ldr r0, _02009F9C ; =0x021C4670
ldr r0, [r0, #0x0]
add r0, #0x1c
- blx FUN_020B0870
+ bl FUN_020B0870
_02009F98:
pop {r3, pc}
nop
@@ -7627,7 +7627,7 @@ FUN_0200A074: ; 0x0200A074
add r2, r1, #0x0
ldr r0, [r0, #0x0]
add r1, r3, #0x0
- blx FUN_020B0C7C
+ bl FUN_020B0C7C
add r4, r0, #0x0
bne _0200A08C
bl ErrorHandling
@@ -7646,7 +7646,7 @@ FUN_0200A094: ; 0x0200A094
ldr r0, [r0, #0x0]
add r1, r3, #0x0
add r0, #0x1c
- blx FUN_020B0C7C
+ bl FUN_020B0C7C
add r4, r0, #0x0
bne _0200A0AE
bl ErrorHandling
@@ -7662,7 +7662,7 @@ FUN_0200A0B8: ; 0x0200A0B8
add r1, r0, #0x0
ldr r0, _0200A0D4 ; =0x021C4670
ldr r0, [r0, #0x0]
- blx FUN_020B0BB0
+ bl FUN_020B0BB0
add r4, r0, #0x0
ldr r0, _0200A0D8 ; =0x0000FFFE
cmp r4, r0
@@ -7682,7 +7682,7 @@ FUN_0200A0DC: ; 0x0200A0DC
ldr r0, _0200A0FC ; =0x021C4670
ldr r0, [r0, #0x0]
add r0, #0x1c
- blx FUN_020B0BB0
+ bl FUN_020B0BB0
add r4, r0, #0x0
ldr r0, _0200A100 ; =0x0000FFFE
cmp r4, r0
@@ -7757,7 +7757,7 @@ _0200A166:
ldrsh r2, [r5, r2]
ldr r0, _0200A198 ; =0x04000050
ldr r1, [r5, #0x0]
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
b _0200A18E
_0200A17C:
mov r0, #0x2
@@ -7767,7 +7767,7 @@ _0200A17C:
ldrsh r2, [r5, r2]
ldr r0, _0200A19C ; =0x04001050
ldr r1, [r5, #0x0]
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
_0200A18E:
cmp r4, #0x1
bne _0200A196
@@ -7823,12 +7823,12 @@ _0200A1EA:
mov r0, #0x12
ldrsh r0, [r5, r0]
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r5, #0x14]
mov r0, #0x12
ldrsh r0, [r5, r0]
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
strh r1, [r5, #0x16]
mov r0, #0x0
strh r0, [r5, #0x18]
@@ -7850,7 +7850,7 @@ FUN_0200A208: ; 0x0200A208
beq _0200A23A
ldr r0, _0200A264 ; =0x04000050
add r1, r4, #0x0
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
str r4, [sp, #0x0]
mov r0, #0x1
str r0, [sp, #0x4]
@@ -7867,7 +7867,7 @@ _0200A23A:
ldr r0, _0200A26C ; =0x04001050
add r1, r4, #0x0
add r2, r6, #0x0
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
str r4, [sp, #0x0]
mov r0, #0x2
str r0, [sp, #0x4]
@@ -7896,7 +7896,7 @@ FUN_0200A274: ; 0x0200A274
beq _0200A28A
ldr r0, _0200A2A4 ; =0x04000050
add r2, r5, #0x0
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
_0200A28A:
mov r0, #0x2
tst r0, r4
@@ -7904,7 +7904,7 @@ _0200A28A:
ldr r0, _0200A2A8 ; =0x04001050
add r1, r6, #0x0
add r2, r5, #0x0
- blx G2x_SetBlendBrightness_
+ bl G2x_SetBlendBrightness_
_0200A29A:
add r0, r4, #0x0
bl FUN_0200A2D8
@@ -7919,11 +7919,11 @@ FUN_0200A2AC: ; 0x0200A2AC
ldr r0, _0200A2CC ; =0x021C4694
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0200A2D0 ; =0x021C4674
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0200A2D4 ; =0x021C4674
mov r1, #0x0
str r1, [r0, #0x3c]
@@ -7944,7 +7944,7 @@ FUN_0200A2D8: ; 0x0200A2D8
ldr r0, _0200A30C ; =0x021C4694
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0200A310 ; =0x021C4674
mov r1, #0x0
str r1, [r0, #0x3c]
@@ -7955,7 +7955,7 @@ _0200A2F2:
ldr r0, _0200A314 ; =0x021C4674
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0200A310 ; =0x021C4674
mov r1, #0x0
str r1, [r0, #0x1c]
@@ -8245,7 +8245,7 @@ FUN_0200A4D4: ; 0x0200A4D4
ldr r2, [sp, #0x4]
add r0, r5, r0
add r1, r7, #0x0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, _0200A57C ; =0x00091BD3
add r2, r4, #0x1
mul r1, r2
@@ -8332,7 +8332,7 @@ FUN_0200A584: ; 0x0200A584
ldr r2, [sp, #0x4]
add r0, r5, r0
add r1, r7, #0x0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, _0200A640 ; =0x00091BD3
add r2, r4, #0x1
mul r1, r2
@@ -11083,13 +11083,13 @@ _0200BAD8:
add r0, r1, r0
add r1, r6, r5
mov r2, #0x20
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
b _0200BB00
_0200BAF6:
ldr r1, [sp, #0x0]
add r0, r6, r5
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
_0200BB00:
add r4, r4, #0x2
ldrh r1, [r4, #0x8]
@@ -11189,7 +11189,7 @@ _0200BB8A:
ldr r1, [r5, #0x0]
add r0, r7, #0x0
bl FUN_0201E00C
- blx FUN_020B0FC0
+ bl FUN_020B0FC0
ldr r0, [r5, #0x8]
cmp r0, #0x1
bne _0200BBD6
@@ -11577,20 +11577,20 @@ FUN_0200BE74: ; 0x0200BE74
cmp r3, #0x0
ble _0200BEA0
lsl r0, r3, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200BEAE
_0200BEA0:
lsl r0, r3, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200BEAE:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x8]
add r1, sp, #0x28
mov r0, #0x10
@@ -11598,20 +11598,20 @@ _0200BEAE:
cmp r0, #0x0
ble _0200BED0
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200BEDE
_0200BED0:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200BEDE:
- blx _ffix
+ bl _ffix
str r0, [sp, #0xc]
add r1, sp, #0x28
mov r0, #0x14
@@ -11619,20 +11619,20 @@ _0200BEDE:
cmp r0, #0x0
ble _0200BF00
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200BF0E
_0200BF00:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200BF0E:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x10]
ldr r0, [sp, #0x4c]
cmp r0, #0x2
@@ -12069,60 +12069,60 @@ _0200C206:
cmp r0, #0x0
ble _0200C260
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200C26E
_0200C260:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200C26E:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x4c]
mov r0, #0x2
ldrsh r0, [r5, r0]
cmp r0, #0x0
ble _0200C28E
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200C29C
_0200C28E:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200C29C:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x50]
mov r0, #0x4
ldrsh r0, [r5, r0]
cmp r0, #0x0
ble _0200C2BC
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _0200C2CA
_0200C2BC:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_0200C2CA:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x54]
ldr r0, [r5, #0x10]
cmp r0, #0x2
@@ -12965,13 +12965,13 @@ FUN_0200C84C: ; 0x0200C84C
add r4, r0, #0x0
ldr r0, _0200C880 ; =0x45800000
add r1, r6, #0x0
- blx _fmul
- blx _ffix
+ bl _fmul
+ bl _ffix
str r0, [r4, #0x0]
ldr r0, _0200C880 ; =0x45800000
add r1, r7, #0x0
- blx _fmul
- blx _ffix
+ bl _fmul
+ bl _ffix
str r0, [r4, #0x4]
add r0, r5, #0x0
add r1, r4, #0x0
@@ -14203,27 +14203,27 @@ _0200D1E0:
add r0, r5, r6
add r1, r4, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r0, r6, #0x0
ldr r1, [sp, #0x38]
add r0, #0x20
add r0, r5, r0
add r1, r4, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r0, r6, #0x0
ldr r1, [sp, #0x34]
add r0, #0x40
add r0, r5, r0
add r1, r4, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
ldr r1, [sp, #0x38]
add r6, #0x60
add r0, r5, r6
add r1, r4, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r0, r7, #0x1
lsl r0, r0, #0x18
lsr r7, r0, #0x18
@@ -14292,7 +14292,7 @@ FUN_0200D274: ; 0x0200D274
ldr r1, [r1, #0x14]
lsl r2, r2, #0x6
add r4, r0, #0x0
- blx memcpy
+ bl memcpy
mov r0, #0x9
mov r3, #0x0
lsl r0, r0, #0x6
@@ -14359,7 +14359,7 @@ FUN_0200D300: ; 0x0200D300
bl LoadFromNarc_2
add r1, sp, #0x18
str r0, [sp, #0x14]
- blx FUN_020B0138
+ bl FUN_020B0138
add r2, sp, #0x20
ldr r1, [sp, #0x18]
ldrb r2, [r2, #0x10]
@@ -15015,7 +15015,7 @@ FUN_0200D858: ; 0x0200D858
add r0, r4, r0
add r1, r5, r1
mov r2, #0x80
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x28]
mov r1, #0x80
bl FUN_02016998
@@ -15026,7 +15026,7 @@ FUN_0200D858: ; 0x0200D858
str r1, [sp, #0x2c]
add r1, r5, r1
add r6, r0, #0x0
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x24]
mov r2, #0x20
add r0, #0xb
@@ -15034,18 +15034,18 @@ FUN_0200D858: ; 0x0200D858
add r0, r6, #0x0
add r0, #0x20
add r1, r5, r7
- blx memcpy
+ bl memcpy
ldr r1, [sp, #0x2c]
add r0, r6, #0x0
add r0, #0x40
add r1, r5, r1
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r0, r6, #0x0
add r0, #0x60
add r1, r5, r7
mov r2, #0x20
- blx memcpy
+ bl memcpy
mov r5, #0x0
add r7, r4, #0x4
_0200D8DA:
@@ -15053,7 +15053,7 @@ _0200D8DA:
add r0, r7, r0
add r1, r6, #0x0
mov r2, #0x80
- blx memcpy
+ bl memcpy
add r0, r5, #0x1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
@@ -15571,7 +15571,7 @@ _0200DD10:
ldr r0, [r4, r0]
bl FUN_0200C3DC
add r0, r4, #0x0
- bl FUN_021D99F8
+ bl MOD05_021D99F8
add r0, r5, #0x0
bl FUN_0200621C
pop {r3-r5, pc}
@@ -15656,7 +15656,7 @@ FUN_0200DDAC: ; 0x0200DDAC
add r1, r2, #0x0
add r0, r6, #0x0
mov r2, #0x1
- bl FUN_021D959C
+ bl MOD05_021D959C
add sp, #0x18
pop {r4-r6, pc}
.balign 4
@@ -15675,21 +15675,21 @@ FUN_0200DDD8: ; 0x0200DDD8
mov r1, #0x26
mov r3, #0x0
add r4, r0, #0x0
- bl FUN_021D967C
+ bl MOD05_021D967C
ldr r0, _0200DE2C ; =0x00015CD5
mov r1, #0x26
str r0, [sp, #0x0]
add r0, r4, #0x0
mov r2, #0x2f
mov r3, #0x0
- bl FUN_021D96F4
+ bl MOD05_021D96F4
ldr r0, _0200DE2C ; =0x00015CD5
mov r1, #0x26
str r0, [sp, #0x0]
add r0, r4, #0x0
mov r2, #0x2e
mov r3, #0x0
- bl FUN_021D9708
+ bl MOD05_021D9708
mov r0, #0x1
str r0, [sp, #0x0]
ldr r0, _0200DE2C ; =0x00015CD5
@@ -15698,7 +15698,7 @@ FUN_0200DDD8: ; 0x0200DDD8
add r0, r4, #0x0
mov r2, #0x30
mov r3, #0x0
- bl FUN_021D971C
+ bl MOD05_021D971C
add sp, #0xc
pop {r3-r4, pc}
nop
@@ -15730,7 +15730,7 @@ _0200DE40:
strh r1, [r0, #0x2]
add r0, r4, #0x0
add r1, sp, #0x0
- bl FUN_021D9820
+ bl MOD05_021D9820
mov r1, #0x59
lsl r1, r1, #0x2
str r0, [r4, r1]
@@ -15849,17 +15849,17 @@ FUN_0200DEF4: ; 0x0200DEF4
bl FUN_02009C5C
mov r1, #0x1
str r0, [sp, #0x4]
- blx FUN_020B1A14
+ bl FUN_020B1A14
mov r1, #0x19
add r7, r0, #0x0
add r0, r4, #0x0
lsl r1, r1, #0x8
- blx DC_FlushRange
+ bl DC_FlushRange
mov r2, #0x19
add r0, r4, #0x0
add r1, r7, #0x0
lsl r2, r2, #0x8
- blx GX_LoadOBJ
+ bl GX_LoadOBJ
add r0, r4, #0x0
bl FUN_02016A18
ldr r2, _0200DFC8 ; =0x00000162
@@ -15876,15 +15876,15 @@ FUN_0200DEF4: ; 0x0200DEF4
ldr r1, [sp, #0x4]
bl FUN_02009E54
mov r1, #0x1
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r5, r0, #0x0
add r0, r4, #0x0
mov r1, #0x20
- blx DC_FlushRange
+ bl DC_FlushRange
add r0, r4, #0x0
add r1, r5, #0x0
mov r2, #0x20
- blx GX_LoadOBJPltt
+ bl GX_LoadOBJPltt
add r0, r4, #0x0
bl FUN_02016A18
add sp, #0x28
@@ -16385,12 +16385,12 @@ FUN_0200E3BC: ; 0x0200E3BC
bne _0200E3D2
mov r1, #0x0
mov r2, #0x2
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
b _0200E3DA
_0200E3D2:
mov r1, #0x0
mov r2, #0x2
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
_0200E3DA:
ldr r0, _0200E41C ; =0x021C4740
mov r1, #0x1
@@ -16430,11 +16430,11 @@ FUN_0200E420: ; 0x0200E420
add r0, sp, #0x8
mov r1, #0x0
mov r2, #0x2
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
add r0, sp, #0x8
mov r1, #0x0
mov r2, #0x2
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
pop {r3}
pop {r3}
add sp, #0x10
@@ -16446,11 +16446,11 @@ FUN_0200E440: ; 0x0200E440
cmp r0, #0x0
bne _0200E44E
ldr r0, _0200E458 ; =0x0400006C
- blx GXx_SetMasterBrightness_
+ bl GXx_SetMasterBrightness_
pop {r3, pc}
_0200E44E:
ldr r0, _0200E45C ; =0x0400106C
- blx GXx_SetMasterBrightness_
+ bl GXx_SetMasterBrightness_
pop {r3, pc}
nop
_0200E458: .word 0x0400006C
@@ -16994,12 +16994,12 @@ _0200E812:
add r0, #0x14
mov r1, #0x0
mov r2, #0x30
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
add r0, #0x44
mov r1, #0x0
mov r2, #0x30
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r2, r4, #0x0
add r2, #0x74
mov r1, #0x18
@@ -17013,7 +17013,7 @@ _0200E83A:
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
pop {r4, pc}
thumb_func_start FUN_0200E850
@@ -18111,7 +18111,7 @@ FUN_0200F0D0: ; 0x0200F0D0
lsl r2, r4, #0xc
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -18145,7 +18145,7 @@ _0200F116:
ldr r1, [sp, #0x4]
asr r3, r4, #0x1f
add r2, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
lsl r2, r2, #0xa
add r0, r0, r2
@@ -18178,7 +18178,7 @@ FUN_0200F14C: ; 0x0200F14C
add r0, r4, r0
asr r0, r0, #0x1
lsl r0, r0, #0xc
- blx FX_Div
+ bl FX_Div
pop {r4, pc}
thumb_func_start FUN_0200F164
@@ -18829,7 +18829,7 @@ _0200F60C:
bl FUN_0200F5D8
add r1, r0, r6
add r2, r7, #0x0
- blx memcpy
+ bl memcpy
ldr r0, [r5, #0x4]
add r4, r4, #0x1
cmp r4, r0
@@ -18952,7 +18952,7 @@ FUN_0200F6FC: ; 0x0200F6FC
lsl r2, r2, #0x2
add r5, r0, #0x0
add r7, r3, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
cmp r4, #0x1
bne _0200F726
mov r0, #0x6
@@ -19028,7 +19028,7 @@ _0200F78E:
add r0, #0xc0
add r1, r5, #0x0
add r2, r7, #0x0
- blx memcpy
+ bl memcpy
add r4, r4, #0x1
add r5, r5, r6
cmp r4, #0x2
@@ -20289,14 +20289,14 @@ _020100FA:
asr r1, r0, #0x1f
add r2, r0, #0x0
add r3, r1, #0x0
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x8]
ldr r0, [sp, #0x4]
add r6, r1, #0x0
add r1, r7, #0x0
add r2, r0, #0x0
add r3, r7, #0x0
- blx _ll_mul
+ bl _ll_mul
add r2, r0, #0x0
add r3, r1, #0x0
mov r0, #0x2
@@ -20316,7 +20316,7 @@ _020100FA:
lsr r2, r2, #0xc
orr r2, r1
sub r0, r0, r2
- blx FX_Sqrt
+ bl FX_Sqrt
asr r2, r0, #0xc
ldr r0, [sp, #0x0]
sub r0, r0, r2
@@ -20752,7 +20752,7 @@ FUN_0201047C: ; 0x0201047C
str r3, [sp, #0x1c]
ldr r6, [sp, #0x38]
ldr r7, [sp, #0x3c]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x20]
ldrb r1, [r4, #0x8]
ldr r3, [sp, #0x44]
@@ -20896,7 +20896,7 @@ FUN_020105A0: ; 0x020105A0
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -20908,7 +20908,7 @@ FUN_020105A0: ; 0x020105A0
asr r7, r1, #0xc
lsl r0, r7, #0x1
mov r1, #0x15
- blx _s32_div_f
+ bl _s32_div_f
add r0, r0, #0x1
lsl r0, r0, #0x1
mov r1, #0xb4
@@ -20916,7 +20916,7 @@ FUN_020105A0: ; 0x020105A0
ldr r0, _02010684 ; =0x0000FFFF
add r1, #0xb4
mul r0, r2
- blx _s32_div_f
+ bl _s32_div_f
lsr r1, r0, #0x1f
add r1, r0, r1
asr r4, r1, #0x1
@@ -21261,7 +21261,7 @@ FUN_02010894: ; 0x02010894
lsl r2, r2, #0x8
add r0, r0, r2
mov r1, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r6, #0x10]
sub r4, r0, #0x1
bmi _020108C6
@@ -21363,7 +21363,7 @@ FUN_02010948: ; 0x02010948
str r0, [r5, #0x14]
mov r1, #0x0
mov r2, #0x38
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
@@ -21605,7 +21605,7 @@ FUN_02010B40: ; 0x02010B40
str r0, [sp, #0x0]
ldr r0, [r0, #0xc]
ldr r1, _02010C60 ; =0x00003FFF
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x4]
@@ -21758,7 +21758,7 @@ FUN_02010C64: ; 0x02010C64
add r0, r3, #0x0
mul r0, r1
add r1, r2, #0x0
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r4, #0x4]
add r0, r0, r1
str r0, [r4, #0x0]
@@ -21776,7 +21776,7 @@ FUN_02010C7C: ; 0x02010C7C
str r0, [r5, #0x14]
mov r1, #0x0
mov r2, #0x38
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
@@ -22101,7 +22101,7 @@ FUN_02010F14: ; 0x02010F14
add r0, r3, #0x0
mul r0, r1
add r1, r2, #0x0
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r4, #0x4]
add r0, r0, r1
str r0, [r4, #0x0]
@@ -22121,7 +22121,7 @@ FUN_02010F2C: ; 0x02010F2C
str r0, [r5, #0x14]
mov r1, #0x0
lsl r2, r2, #0x2
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0x10]
add r1, r4, #0x0
str r0, [sp, #0x0]
@@ -22213,23 +22213,23 @@ FUN_02010FD0: ; 0x02010FD0
add r0, r5, #0x0
mov r1, #0x1
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
add r0, #0xc0
mov r1, #0x1
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
b _02011020
_0201100A:
add r0, r5, #0x0
mov r1, #0x0
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
add r0, #0xc0
mov r1, #0x0
mov r2, #0xc0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
_02011020:
mov r1, #0xc3
lsl r1, r1, #0x2
@@ -22407,7 +22407,7 @@ FUN_0201115C: ; 0x0201115C
add r1, r3, #0x0
sub r0, r4, r6
mul r0, r2
- blx _s32_div_f
+ bl _s32_div_f
add r0, r0, r6
cmp r6, r4
bhi _0201117C
@@ -22460,7 +22460,7 @@ FUN_020111AC: ; 0x020111AC
mov r1, #0x0
lsl r2, r2, #0x2
str r0, [r5, #0x14]
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r1, r4, #0x0
add r1, #0x23
ldrb r1, [r1, #0x0]
@@ -22567,7 +22567,7 @@ FUN_0201127C: ; 0x0201127C
add r7, r3, #0x0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r2, r0, #0x0
mov r0, #0x2
mov r3, #0x0
@@ -22699,7 +22699,7 @@ FUN_0201137C: ; 0x0201137C
add r7, r3, #0x0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r2, r0, #0x0
mov r0, #0x2
mov r3, #0x0
@@ -23257,7 +23257,7 @@ _020117A4:
str r1, [r0, #0x64]
ldr r0, [r0, #0x60]
mov r1, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [sp, #0x8]
add sp, #0xc
pop {r4-r7, pc}
@@ -23780,7 +23780,7 @@ _02011B60:
ldr r1, [r6, #0xc]
add r1, r1, r2
ldr r2, [sp, #0x8]
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x0]
add r4, r4, #0x1
add r5, r5, r7
@@ -24051,7 +24051,7 @@ _02011D52:
beq _02011D92
_02011D68:
add r0, r5, #0x0
- blx FUN_020B1A24
+ bl FUN_020B1A24
str r7, [sp, #0x0]
ldr r0, [sp, #0x30]
str r6, [sp, #0x4]
@@ -24113,7 +24113,7 @@ _02011DC6:
bl FUN_02011B20
add r0, r7, #0x0
add r1, r4, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x30]
cmp r0, #0x1
bne _02011E08
@@ -24121,7 +24121,7 @@ _02011DC6:
add r0, r7, #0x0
add r1, r6, #0x0
add r2, r4, #0x0
- blx GX_LoadOBJ
+ bl GX_LoadOBJ
mov r0, #0x1
str r6, [r5, #0x4]
lsl r0, r0, #0x1a
@@ -24132,7 +24132,7 @@ _02011E08:
add r0, r7, #0x0
add r1, r6, #0x0
add r2, r4, #0x0
- blx GXS_LoadOBJ
+ bl GXS_LoadOBJ
ldr r0, _02011E4C ; =0x04001000
str r6, [r5, #0x8]
ldr r1, [r0, #0x0]
@@ -24423,7 +24423,7 @@ _02012018:
ldr r1, [sp, #0x0]
add r1, r1, r2
add r2, r6, #0x0
- blx memcpy
+ bl memcpy
ldr r1, [r5, #0x0]
ldr r0, [sp, #0x24]
add r7, r7, #0x1
@@ -24449,7 +24449,7 @@ FUN_02012044: ; 0x02012044
_02012054:
add r0, r4, #0x0
add r1, r5, #0x0
- blx FUN_020B0088
+ bl FUN_020B0088
add r6, r0, #0x0
cmp r5, #0x0
bne _02012066
@@ -24676,7 +24676,7 @@ FUN_020121E8: ; 0x020121E8
_02012204:
ldr r0, [sp, #0x20]
add r1, sp, #0x2c
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r0, #0x0
bne _02012214
bl ErrorHandling
@@ -24842,7 +24842,7 @@ _0201233C:
add r0, r0, r1
ldr r1, [sp, #0x18]
add r1, r1, r4
- blx memcpy
+ bl memcpy
ldr r0, [r5, #0x0]
add r6, r6, #0x1
add r0, #0x20
@@ -25016,7 +25016,7 @@ FUN_02012470: ; 0x02012470
bl LoadFromNarc_2
add r1, sp, #0x0
add r5, r0, #0x0
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r0, #0x1
beq _0201249C
bl ErrorHandling
@@ -25025,7 +25025,7 @@ _0201249C:
add r1, r4, #0x0
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r5, #0x0
bl FUN_02016A18
add r0, r4, #0x0
@@ -25156,7 +25156,7 @@ _02012598: .word 0x020ED3C8
thumb_func_start FUN_0201259C
FUN_0201259C: ; 0x0201259C
push {r3, lr}
- blx RTC_Init
+ bl RTC_Init
ldr r3, _020125CC ; =0x021C4808
mov r0, #0x0
add r2, r3, #0x0
@@ -25246,7 +25246,7 @@ FUN_02012634: ; 0x02012634
add r0, #0x2c
add r1, #0x3c
add r3, r4, #0x0
- blx RTC_GetDateTimeAsync
+ bl RTC_GetDateTimeAsync
str r0, [r4, #0xc]
cmp r0, #0x0
beq _02012656
@@ -25377,14 +25377,14 @@ FUN_02012710: ; 0x02012710
bne _02012742
add r0, r6, #0x0
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0x0
bne _02012750
_02012742:
mov r1, #0x19
add r0, r6, #0x0
lsl r1, r1, #0x4
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0x0
bne _02012752
_02012750:
@@ -25401,9 +25401,9 @@ _02012752:
str r0, [sp, #0x4]
str r0, [sp, #0x8]
add r0, r2, #0x0
- blx RTC_ConvertDateToDay
+ bl RTC_ConvertDateToDay
add r0, r5, #0x0
- blx RTC_ConvertDateToDay
+ bl RTC_ConvertDateToDay
add r0, r4, #0x0
add sp, #0x10
pop {r4-r6, pc}
@@ -25477,7 +25477,7 @@ FUN_020127C0: ; 0x020127C0
ldr r1, [sp, #0x4]
str r0, [r2, #0x0]
ldr r0, [sp, #0x0]
- blx RTC_ConvertDateTimeToSecond
+ bl RTC_ConvertDateTimeToSecond
add r2, r1, #0x0
add r3, r0, #0x0
mov r1, #0x0
@@ -25755,9 +25755,9 @@ _020129C6:
FUN_020129C8: ; 0x020129C8
push {r3, lr}
mov r0, #0x0
- blx MI_StopDma
+ bl MI_StopDma
mov r0, #0x0
- blx MI_WaitDma
+ bl MI_WaitDma
pop {r3, pc}
thumb_func_start FUN_020129D8
@@ -25772,14 +25772,14 @@ FUN_020129D8: ; 0x020129D8
add r1, r6, #0x0
add r2, r5, #0x0
add r3, r4, #0x0
- blx MI_HBlankDmaCopy32
+ bl MI_HBlankDmaCopy32
pop {r4-r6, pc}
_020129F2:
mov r0, #0x0
add r1, r6, #0x0
add r2, r5, #0x0
add r3, r4, #0x0
- blx MI_HBlankDmaCopy16
+ bl MI_HBlankDmaCopy16
pop {r4-r6, pc}
thumb_func_start FUN_02012A00
@@ -25791,7 +25791,7 @@ FUN_02012A00: ; 0x02012A00
ldr r2, _02012A2C ; =0x0000079C
mov r1, #0x0
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r2, #0x3
lsl r2, r2, #0x8
add r0, r5, #0x0
@@ -25860,13 +25860,13 @@ _02012A4E:
add r1, r5, #0x0
ldr r0, [r5, r0]
lsl r2, r2, #0x8
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r0, _02012AC0 ; =0x00000794
mov r2, #0x3
lsl r2, r2, #0x8
ldr r0, [r5, r0]
add r1, r5, r2
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
pop {r3-r7, pc}
.balign 4
_02012AB0: .word 0x00000604
@@ -25897,7 +25897,7 @@ _02012ACE:
mov r2, #0x3
ldr r1, [r4, r1]
lsl r2, r2, #0x8
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
_02012AF4:
pop {r4, pc}
nop
@@ -25950,7 +25950,7 @@ FUN_02012B30: ; 0x02012B30
mov r2, #0x3
ldr r0, [r4, r0]
lsl r2, r2, #0x8
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
_02012B5E:
pop {r4, pc}
.balign 4
@@ -25996,7 +25996,7 @@ _02012BA0:
ldrsh r0, [r0, r1]
ldr r3, [sp, #0x8]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
lsl r2, r2, #0xa
add r0, r0, r2
@@ -26034,7 +26034,7 @@ FUN_02012BE4: ; 0x02012BE4
ldr r0, _02012C80 ; =0x00000798
mov r1, #0x64
ldrsh r0, [r6, r0]
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r3, r0, #0x18
ldr r0, _02012C84 ; =0x0000078C
@@ -26066,7 +26066,7 @@ _02012C12:
stmia r5!, {r0}
add r0, r3, #0x1
mov r1, #0xc0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x18
lsr r3, r0, #0x18
ldr r0, _02012C8C ; =0x0000078D
@@ -26089,7 +26089,7 @@ _02012C4C:
blt _02012C70
mov r0, #0x0
ldrsh r0, [r4, r0]
- blx _s32_div_f
+ bl _s32_div_f
strh r1, [r4, #0x0]
pop {r3-r7, pc}
_02012C70:
@@ -26128,7 +26128,7 @@ _02012CA2:
mov r1, #0x3
lsl r1, r1, #0x8
add r5, r0, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
mov r1, #0x79
lsl r1, r1, #0x4
ldr r1, [r4, r1]
@@ -26187,7 +26187,7 @@ _02012D14:
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0xdc
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r2, r4, #0x0
ldr r0, [sp, #0x8]
str r7, [r4, #0x18]
@@ -26215,7 +26215,7 @@ _02012D14:
str r0, [r2, #0x0]
ldr r2, [sp, #0xc]
add r0, r6, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [sp, #0xc]
str r6, [r4, #0xc]
str r6, [r4, #0x10]
@@ -26263,7 +26263,7 @@ _02012DA8:
ldr r0, [r0, r5]
mov r2, #0xc8
mov r3, #0x5
- blx FUN_0208B4A0
+ bl FUN_0208B4A0
str r0, [r4, #0x0]
ldr r1, _02012DD8 ; =0x020ED4E4
add r0, r4, #0x0
@@ -26291,7 +26291,7 @@ FUN_02012DE4: ; 0x02012DE4
beq _02012E02
add r0, r5, #0x0
add r0, #0x58
- blx FUN_020AE8CC
+ bl FUN_020AE8CC
b _02012E22
_02012E02:
mov r0, #0x2
@@ -26304,7 +26304,7 @@ _02012E0E:
ldr r0, [r4, #0x58]
cmp r0, #0x0
beq _02012E1A
- blx FUN_020AF894
+ bl FUN_020AF894
str r7, [r4, #0x58]
_02012E1A:
add r6, r6, #0x1
@@ -26320,7 +26320,7 @@ _02012E22:
beq _02012E38
add r0, r5, #0x0
add r0, #0x98
- blx FUN_020AEC7C
+ bl FUN_020AEC7C
b _02012E60
_02012E38:
mov r0, #0x8
@@ -26335,7 +26335,7 @@ _02012E44:
ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _02012E58
- blx FUN_020AFA80
+ bl FUN_020AFA80
add r0, r4, #0x0
add r0, #0x98
str r7, [r0, #0x0]
@@ -26852,7 +26852,7 @@ _020131B2:
beq _020131C8
add r0, r5, #0x0
add r0, #0x58
- blx FUN_020AE918
+ bl FUN_020AE918
b _020131DE
_020131C8:
mov r0, #0x2
@@ -26873,7 +26873,7 @@ _020131DE:
beq _020131EE
add r0, r5, #0x0
add r0, #0x98
- blx FUN_020AEC98
+ bl FUN_020AEC98
b _02013208
_020131EE:
mov r0, #0x8
@@ -26912,26 +26912,26 @@ FUN_02013228: ; 0x02013228
add r4, r0, #0x0
ldr r0, [r4, #0x0]
ldr r1, [r4, #0x4]
- blx FUN_0208B128
+ bl FUN_0208B128
ldr r0, _02013264 ; =0x021C4850
str r4, [r0, #0x0]
ldr r1, [r4, #0x18]
ldr r0, [r4, #0x0]
cmp r1, #0x0
bne _02013246
- blx FUN_0208AF94
+ bl FUN_0208AF94
b _0201324A
_02013246:
- blx FUN_0208B05C
+ bl FUN_0208B05C
_0201324A:
ldr r1, [r4, #0x1c]
ldr r0, [r4, #0x0]
cmp r1, #0x0
bne _02013258
- blx FUN_0208AF80
+ bl FUN_0208AF80
b _0201325C
_02013258:
- blx FUN_0208AFA8
+ bl FUN_0208AFA8
_0201325C:
ldr r0, _02013264 ; =0x021C4850
mov r1, #0x0
@@ -27038,16 +27038,16 @@ FUN_02013300: ; 0x02013300
bl FUN_0201EB8C
bl FUN_0201EBA4
_0201331C:
- blx FUN_020B849C
+ bl FUN_020B849C
ldr r0, [r4, #0x0]
ldr r1, _02013338 ; =0x021CED64
- blx FUN_0208AD80
+ bl FUN_0208AD80
ldr r0, [r4, #0x20]
cmp r0, #0x0
beq _02013332
bl FUN_0201EB98
_02013332:
- blx FUN_020B849C
+ bl FUN_020B849C
pop {r4, pc}
.balign 4
_02013338: .word 0x021CED64
@@ -27130,7 +27130,7 @@ FUN_020133AC: ; 0x020133AC
ldr r0, _020133C4 ; =0x021C4850
str r3, [r0, #0x4]
ldr r0, [r4, #0x0]
- blx FUN_0208ACEC
+ bl FUN_0208ACEC
ldr r1, _020133C4 ; =0x021C4850
mov r2, #0x0
str r2, [r1, #0x4]
@@ -28294,7 +28294,7 @@ _02013B8A:
beq _02013BC4
bl FUN_0201B9EC
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
ldr r4, [r5, #0x4]
mov r0, #0x0
mov r2, #0x1
@@ -28859,7 +28859,7 @@ FUN_02013F30: ; 0x02013F30
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x40
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
mov r1, #0x1f
add r0, #0x3e
@@ -29086,7 +29086,7 @@ FUN_020140A4: ; 0x020140A4
add r3, r2, #0x0
lsr r1, r1, #0xd
mov r2, #0x0
- blx FUN_020B1528
+ bl FUN_020B1528
pop {r3, pc}
thumb_func_start FUN_020140B4
@@ -29103,7 +29103,7 @@ FUN_020140B4: ; 0x020140B4
str r2, [r5, #0x8]
lsr r1, r1, #0xd
mov r2, #0x0
- blx FUN_020B1240
+ bl FUN_020B1240
str r4, [r5, #0x8]
pop {r3-r5, pc}
.balign 4
@@ -29220,7 +29220,7 @@ _02014172:
lsl r2, r2, #0x1
ldrsh r0, [r1, r0]
ldrsh r1, [r1, r2]
- blx G3_RotZ
+ bl G3_RotZ
ldr r2, [r5, #0x10]
ldr r0, [r5, #0xc]
ldr r1, _02014210 ; =0x0400046C
@@ -29252,7 +29252,7 @@ _02014172:
str r4, [sp, #0x10]
ldrsh r3, [r5, r3]
add r1, r0, #0x0
- blx FUN_020B0250
+ bl FUN_020B0250
ldr r0, _02014214 ; =0x04000448
mov r1, #0x1
str r1, [r0, #0x0]
@@ -29339,14 +29339,14 @@ _0201424C:
ldr r0, [r5, #0x4]
mov r1, #0x0
add r0, r0, #0x4
- blx FUN_020B1A14
+ bl FUN_020B1A14
add r1, r0, #0x0
add r0, r7, #0x0
bl FUN_02013F14
ldr r0, [r5, #0x8]
mov r1, #0x0
add r0, r0, #0x4
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r1, r0, #0x0
add r0, r7, #0x0
bl FUN_02013F18
@@ -29421,14 +29421,14 @@ _0201434A:
add r1, r4, #0x0
add r1, #0xc
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, [sp, #0x0]
ldr r0, [sp, #0x8]
mov r2, #0x20
add r0, r1, r0
add r1, r4, #0x0
add r1, #0x2c
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp, #0x4]
mov r1, #0x1
str r0, [r4, #0x0]
@@ -29681,7 +29681,7 @@ FUN_02014518: ; 0x02014518
mov r1, #0x0
mov r2, #0x78
add r6, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r2, _02014560 ; =0x0000019E
mov r0, #0x0
mov r1, #0x1a
@@ -29929,7 +29929,7 @@ FUN_020146F0: ; 0x020146F0
add r5, r0, #0x0
mov r1, #0x0
mov r2, #0x9c
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
add r0, #0x9b
ldrb r1, [r0, #0x0]
@@ -30306,7 +30306,7 @@ _020149B4:
add r0, r6, #0x0
mov r1, #0x0
mov r2, #0x38
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add sp, #0x10
pop {r4-r6, pc}
@@ -30463,7 +30463,7 @@ FUN_02014AD4: ; 0x02014AD4
add r5, r0, #0x0
ldr r0, [r1, #0x14]
ldr r1, [r1, #0x10]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r3, [r4, #0x4]
ldr r0, [r4, #0x10]
str r0, [sp, #0x0]
@@ -30491,7 +30491,7 @@ FUN_02014B10: ; 0x02014B10
ldr r0, [r4, #0x0]
ldr r1, [r4, #0x10]
ldr r0, [r0, #0xc]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [r4, #0x8]
cmp r0, #0x0
bne _02014B34
@@ -30499,7 +30499,7 @@ FUN_02014B10: ; 0x02014B10
ldr r1, [r4, #0xc]
ldr r0, [r0, #0xc]
ldr r2, [r4, #0x10]
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
b _02014B44
_02014B34:
cmp r0, #0x4
@@ -30508,7 +30508,7 @@ _02014B34:
ldr r1, [r4, #0xc]
ldr r0, [r0, #0xc]
ldr r2, [r4, #0x10]
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
_02014B44:
add r0, r5, #0x0
bl FUN_0200CAB4
@@ -30628,7 +30628,7 @@ FUN_02014BF4: ; 0x02014BF4
mov r1, #0x0
add r2, r6, #0x0
str r0, [r4, #0x0]
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
pop {r3-r7, pc}
@@ -30692,7 +30692,7 @@ _02014C8C:
add r0, r0, r4
mov r1, #0x0
lsl r2, r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0x0]
mov r1, #0x1
add r0, r0, r4
@@ -31062,7 +31062,7 @@ _02014F3E:
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x54
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x1
str r0, [r4, #0x0]
mov r0, #0xc
@@ -31526,7 +31526,7 @@ FUN_020152B0: ; 0x020152B0
bl FUN_02015050
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x4]
- blx _s32_div_f
+ bl _s32_div_f
add r1, sp, #0x0
ldrb r1, [r1, #0x0]
lsl r1, r1, #0x2
@@ -31547,7 +31547,7 @@ FUN_020152D8: ; 0x020152D8
bl FUN_02015050
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x4]
- blx _s32_div_f
+ bl _s32_div_f
add r0, sp, #0x0
ldrb r0, [r0, #0x0]
lsl r0, r0, #0x2
@@ -32645,7 +32645,7 @@ FUN_02015AEC: ; 0x02015AEC
add r0, r0, #0x1
mul r0, r1
ldr r1, [r4, #0x18]
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r4, #0x14]
add r0, r1, r0
lsl r0, r0, #0x10
@@ -32781,7 +32781,7 @@ FUN_02015BE8: ; 0x02015BE8
ldr r0, [r4, #0x8]
mul r0, r1
ldr r1, [r4, #0xc]
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [r4, #0x24]
str r0, [r1, #0x0]
add r0, r4, #0x0
@@ -33178,7 +33178,7 @@ FUN_02015EA0: ; 0x02015EA0
orr r0, r2
str r0, [r3, r1]
mov r0, #0x3
- blx MI_WaitDma
+ bl MI_WaitDma
ldr r0, _02015ED0 ; =0x021C48B8
ldr r0, [r0, #0x1c]
bl FUN_0201B5CC
@@ -33212,12 +33212,12 @@ _02015EF0: .word MI_WaitDma
FUN_02015EF4: ; 0x02015EF4
push {r3, lr}
mov r0, #0x1
- blx OS_DisableIrqMask
+ bl OS_DisableIrqMask
ldr r1, _02015F0C ; =FUN_02015ED4
mov r0, #0x1
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x1
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
pop {r3, pc}
.balign 4
_02015F0C: .word FUN_02015ED4
@@ -33299,19 +33299,19 @@ FUN_02015F80: ; 0x02015F80
bne _02015F9E
ldr r0, [r2, #0x8]
mov r0, #0x2
- blx OS_DisableIrqMask
+ bl OS_DisableIrqMask
mov r0, #0x0
- blx GX_HBlankIntr
+ bl GX_HBlankIntr
b _02015FB4
_02015F9E:
ldr r0, [r2, #0x8]
ldr r1, _02015FC4 ; =FUN_02015F6C
mov r0, #0x2
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x2
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
mov r0, #0x1
- blx GX_HBlankIntr
+ bl GX_HBlankIntr
_02015FB4:
ldr r1, _02015FC0 ; =0x04000208
ldrh r0, [r1, #0x0]
@@ -33327,11 +33327,11 @@ FUN_02015FC8: ; 0x02015FC8
push {r3, lr}
sub sp, #0x30
add r0, sp, #0x10
- blx OS_GetLowEntropyData
+ bl OS_GetLowEntropyData
add r0, sp, #0x0
add r1, sp, #0x10
mov r2, #0x20
- blx MATH_CalcMD5
+ bl MATH_CalcMD5
mov r3, #0x0
add r1, r3, #0x0
add r2, sp, #0x0
@@ -33366,8 +33366,8 @@ _02016010: .word 0x020EDB10
thumb_func_start InitSystemForTheGame
InitSystemForTheGame: ; 0x02016014
push {r3-r5, lr}
- blx OS_Init
- blx FX_Init
+ bl OS_Init
+ bl FX_Init
ldr r2, _02016124 ; =0x04000304
ldr r0, _02016128 ; =0xFFFFFDF1
ldrh r1, [r2, #0x0]
@@ -33375,15 +33375,15 @@ InitSystemForTheGame: ; 0x02016014
ldr r0, _0201612C ; =0x0000020E
orr r0, r1
strh r0, [r2, #0x0]
- blx GX_Init
- blx OS_InitTick
+ bl GX_Init
+ bl OS_InitTick
bl FUN_02015FC8
mov r0, #0xa0
bl FUN_0201B578
add r1, r0, #0x0
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r1, r0, #0x0
mov r0, #0xa0
bl FUN_0201B580
@@ -33394,7 +33394,7 @@ InitSystemForTheGame: ; 0x02016014
add r1, r0, #0x0
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r1, r0, #0x0
mov r0, #0x10
bl FUN_0201B580
@@ -33405,7 +33405,7 @@ InitSystemForTheGame: ; 0x02016014
add r1, r0, #0x0
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r1, r0, #0x0
mov r0, #0x20
bl FUN_0201B580
@@ -33416,13 +33416,13 @@ InitSystemForTheGame: ; 0x02016014
add r1, r0, #0x0
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r1, r0, #0x0
mov r0, #0x4
bl FUN_0201B580
ldr r1, _02016130 ; =0x021C48B8
str r0, [r1, #0x24]
- blx GX_DispOff
+ bl GX_DispOff
ldr r2, _02016134 ; =0x04001000
ldr r0, _02016138 ; =0xFFFEFFFF
ldr r1, [r2, #0x0]
@@ -33435,35 +33435,35 @@ InitSystemForTheGame: ; 0x02016014
strh r0, [r2, #0x0]
ldr r1, _0201613C ; =FUN_02015EA0
mov r0, #0x1
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x1
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
mov r0, #0x1
lsl r0, r0, #0x12
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
ldr r1, _02016140 ; =0x04000208
ldrh r0, [r1, #0x0]
mov r0, #0x1
strh r0, [r1, #0x0]
- blx GX_VBlankIntr
+ bl GX_VBlankIntr
mov r0, #0x1
- blx FS_Init
+ bl FS_Init
bl FUN_02022450
mov r0, #0x0
add r1, r0, #0x0
- blx FS_TryLoadTable
+ bl FS_TryLoadTable
add r4, r0, #0x0
mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
add r5, r0, #0x0
bne _02016108
bl ErrorHandling
_02016108:
add r0, r5, #0x0
add r1, r4, #0x0
- blx FS_TryLoadTable
+ bl FS_TryLoadTable
ldr r0, _02016130 ; =0x021C48B8
mov r1, #0x0
str r1, [r0, #0x0]
@@ -33489,36 +33489,36 @@ _02016144: .word 0x021C4918
InitGraphicMemory: ; 0x02016148
push {r3, lr}
ldr r0, _02016198 ; =0x000001FF
- blx GX_SetBankForLCDC
+ bl GX_SetBankForLCDC
mov r1, #0x1a
mov r2, #0x29
mov r0, #0x0
lsl r1, r1, #0x16
lsl r2, r2, #0xe
- blx MIi_CpuClearFast
- blx GX_DisableBankForLCDC
+ bl MIi_CpuClearFast
+ bl GX_DisableBankForLCDC
mov r1, #0x7
mov r2, #0x1
mov r0, #0xc0
lsl r1, r1, #0x18
lsl r2, r2, #0xa
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r2, #0x1
ldr r1, _0201619C ; =0x07000400
mov r0, #0xc0
lsl r2, r2, #0xa
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r1, #0x5
mov r2, #0x1
mov r0, #0x0
lsl r1, r1, #0x18
lsl r2, r2, #0xa
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r2, #0x1
ldr r1, _020161A0 ; =0x05000400
mov r0, #0x0
lsl r2, r2, #0xa
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
pop {r3, pc}
.balign 4
_02016198: .word 0x000001FF
@@ -33532,10 +33532,10 @@ FUN_020161A4: ; 0x020161A4
add r6, r0, #0x0
add r4, r1, #0x0
add r0, sp, #0x0
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x0
add r1, r4, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
cmp r0, #0x0
beq _020161F0
ldr r1, [sp, #0x28]
@@ -33549,7 +33549,7 @@ FUN_020161A4: ; 0x020161A4
add r0, sp, #0x0
add r1, r4, #0x0
add r2, r5, #0x0
- blx FS_ReadFile
+ bl FS_ReadFile
cmp r5, r0
beq _020161E8
add r0, r6, #0x0
@@ -33558,7 +33558,7 @@ FUN_020161A4: ; 0x020161A4
mov r4, #0x0
_020161E8:
add r0, sp, #0x0
- blx FS_CloseFile
+ bl FS_CloseFile
b _020161F2
_020161F0:
mov r4, #0x0
@@ -33574,10 +33574,10 @@ FUN_020161F8: ; 0x020161F8
add r5, r0, #0x0
add r0, sp, #0x0
add r4, r1, #0x0
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x0
add r1, r5, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
cmp r0, #0x0
beq _0201622A
ldr r1, [sp, #0x28]
@@ -33587,10 +33587,10 @@ FUN_020161F8: ; 0x020161F8
cmp r1, #0x0
beq _02016224
add r0, sp, #0x0
- blx FS_ReadFile
+ bl FS_ReadFile
_02016224:
add r0, sp, #0x0
- blx FS_CloseFile
+ bl FS_CloseFile
_0201622A:
add sp, #0x48
pop {r3-r5, pc}
@@ -33601,7 +33601,7 @@ FUN_02016230: ; 0x02016230
push {r3-r7, lr}
sub sp, #0x8
str r0, [sp, #0x0]
- blx strlen
+ bl strlen
lsl r0, r0, #0x10
lsr r3, r0, #0x10
lsr r2, r3, #0x1f
@@ -33749,12 +33749,12 @@ FUN_02016324: ; 0x02016324
add r0, sp, #0x0
bne _02016340
add r1, r2, #0x1
- blx strcpy
+ bl strcpy
mov r5, #0x1
b _02016346
_02016340:
add r1, r2, #0x0
- blx strcpy
+ bl strcpy
_02016346:
add r0, sp, #0x0
bl FUN_02016230
@@ -33770,10 +33770,10 @@ _02016346:
b _020163B2
_02016362:
add r0, sp, #0x20
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x20
add r1, sp, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
cmp r0, #0x0
beq _020163B0
ldr r1, [sp, #0x48]
@@ -33787,7 +33787,7 @@ _02016362:
add r0, sp, #0x20
add r1, r4, #0x0
add r2, r6, #0x0
- blx FS_ReadFile
+ bl FS_ReadFile
cmp r6, r0
beq _0201639C
add r0, r4, #0x0
@@ -33795,7 +33795,7 @@ _02016362:
mov r4, #0x0
_0201639C:
add r0, sp, #0x20
- blx FS_CloseFile
+ bl FS_CloseFile
cmp r5, #0x0
bne _020163B2
add r0, r4, #0x0
@@ -33836,13 +33836,13 @@ FUN_020163BC: ; 0x020163BC
strh r2, [r0, #0x22]
ldr r0, _02016424 ; =0x021C4918
strb r2, [r0, #0x4]
- blx TP_Init
+ bl TP_Init
add r0, sp, #0x0
- blx TP_GetUserInfo
+ bl TP_GetUserInfo
cmp r0, #0x1
add r0, sp, #0x0
bne _02016402
- blx TP_SetCalibrateParam
+ bl TP_SetCalibrateParam
add sp, #0x8
pop {r3, pc}
_02016402:
@@ -33855,7 +33855,7 @@ _02016402:
ldr r1, _02016434 ; =0x00001208
strh r1, [r0, #0x6]
add r0, sp, #0x0
- blx TP_SetCalibrateParam
+ bl TP_SetCalibrateParam
add sp, #0x8
pop {r3, pc}
.balign 4
@@ -33965,19 +33965,19 @@ _020164C8:
bne _020164F4
add r4, sp, #0x8
_020164E4:
- blx TP_RequestSamplingAsync
+ bl TP_RequestSamplingAsync
add r0, r4, #0x0
- blx TP_WaitRawResult
+ bl TP_WaitRawResult
cmp r0, #0x0
bne _020164E4
b _020164FA
_020164F4:
add r0, sp, #0x8
- blx TP_GetLatestRawPointInAuto
+ bl TP_GetLatestRawPointInAuto
_020164FA:
add r0, sp, #0x0
add r1, sp, #0x8
- blx TP_GetCalibratedPoint
+ bl TP_GetCalibratedPoint
add r1, sp, #0x0
ldrh r3, [r1, #0x6]
cmp r3, #0x0
@@ -34260,7 +34260,7 @@ _020166F4:
mov r0, #0x0
add r1, r3, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
_020166FE:
ldr r1, [sp, #0x4]
lsl r7, r6, #0x1
@@ -34272,7 +34272,7 @@ _020166FE:
mov r0, #0x0
add r1, r6, r1
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
ldr r1, _020167F0 ; =0x021C4D28
str r0, [r1, #0x0]
ldr r1, [sp, #0x4]
@@ -34313,19 +34313,19 @@ _0201675C:
ldr r1, [r5, #0x0]
mov r0, #0x0
mov r2, #0x4
- blx OS_AllocFromArenaLo
+ bl OS_AllocFromArenaLo
b _02016772
_02016768:
ldr r1, [r5, #0x0]
mov r0, #0x2
mov r2, #0x4
- blx OS_AllocFromArenaHi
+ bl OS_AllocFromArenaHi
_02016772:
cmp r0, #0x0
beq _0201678E
ldr r1, [r5, #0x0]
mov r2, #0x0
- blx tempName_NNS_FndCreateExpHeapEx
+ bl tempName_NNS_FndCreateExpHeapEx
ldr r1, _020167F0 ; =0x021C4D28
ldr r2, [r1, #0x0]
ldr r1, [sp, #0x0]
@@ -34443,7 +34443,7 @@ FUN_02016834: ; 0x02016834
add r5, r1, #0x0
str r2, [sp, #0x0]
add r7, r3, #0x0
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
bne _0201684C
bl ErrorHandling
@@ -34463,7 +34463,7 @@ _0201684C:
ldr r1, [sp, #0x0]
add r0, r6, #0x0
add r2, r7, #0x0
- blx tempName_NNS_FndAllocFromExpHeapEx
+ bl tempName_NNS_FndAllocFromExpHeapEx
str r0, [sp, #0x4]
cmp r0, #0x0
beq _020168B6
@@ -34474,7 +34474,7 @@ _0201684C:
ldr r1, [sp, #0x0]
mov r2, #0x0
lsl r4, r7, #0x2
- blx tempName_NNS_FndCreateExpHeapEx
+ bl tempName_NNS_FndCreateExpHeapEx
ldr r1, _020168CC ; =0x021C4D28
ldr r2, [r1, #0x0]
str r0, [r2, r4]
@@ -34517,7 +34517,7 @@ _020168CC: .word 0x021C4D28
FUN_020168D0: ; 0x020168D0
push {r4, lr}
add r4, r0, #0x0
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
bne _020168E0
bl ErrorHandling
@@ -34530,7 +34530,7 @@ _020168E0:
ldr r0, [r1, r0]
cmp r0, #0x0
beq _0201693E
- blx thunk_FUN_020adc8c
+ bl thunk_FUN_020adc8c
ldr r1, _02016940 ; =0x021C4D28
ldr r0, [r1, #0x10]
ldrb r0, [r0, r4]
@@ -34543,7 +34543,7 @@ _020168E0:
beq _02016912
cmp r1, #0x0
beq _02016912
- blx FUN_020ADDF0
+ bl FUN_020ADDF0
b _02016916
_02016912:
bl ErrorHandling
@@ -34584,16 +34584,16 @@ FUN_02016944: ; 0x02016944
bne _02016956
bl ErrorHandling
_02016956:
- blx OS_DisableInterrupts
+ bl OS_DisableInterrupts
add r4, #0x10
str r0, [sp, #0x0]
add r0, r5, #0x0
add r1, r4, #0x0
add r2, r7, #0x0
- blx tempName_NNS_FndAllocFromExpHeapEx
+ bl tempName_NNS_FndAllocFromExpHeapEx
add r4, r0, #0x0
ldr r0, [sp, #0x0]
- blx OS_RestoreInterrupts
+ bl OS_RestoreInterrupts
cmp r4, #0x0
beq _02016984
ldr r1, [r4, #0xc]
@@ -34732,14 +34732,14 @@ _02016A5E:
ldrh r0, [r1, r5]
sub r0, r0, #0x1
strh r0, [r1, r5]
- blx OS_DisableInterrupts
+ bl OS_DisableInterrupts
sub r6, #0x10
add r4, r0, #0x0
add r0, r7, #0x0
add r1, r6, #0x0
- blx FUN_020ADDF0
+ bl FUN_020ADDF0
add r0, r4, #0x0
- blx OS_RestoreInterrupts
+ bl OS_RestoreInterrupts
pop {r3-r7, pc}
_02016A80:
bl ErrorHandling
@@ -34752,7 +34752,7 @@ FUN_02016A8C: ; 0x02016A8C
push {r4-r6, lr}
add r5, r0, #0x0
add r4, r1, #0x0
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
bne _02016A9E
bl ErrorHandling
@@ -34781,7 +34781,7 @@ _02016AC8:
sub r4, #0x10
add r0, r6, #0x0
add r1, r4, #0x0
- blx FUN_020ADDF0
+ bl FUN_020ADDF0
ldr r0, _02016AF4 ; =0x021C4D28
lsl r4, r5, #0x1
ldr r0, [r0, #0xc]
@@ -34814,7 +34814,7 @@ FUN_02016AF8: ; 0x02016AF8
ldrb r0, [r1, r0]
lsl r0, r0, #0x2
ldr r0, [r2, r0]
- blx FUN_020ADDC8
+ bl FUN_020ADDC8
pop {r3, pc}
_02016B12:
bl ErrorHandling
@@ -34835,7 +34835,7 @@ FUN_02016B20: ; 0x02016B20
ldrb r1, [r4, r1]
lsl r1, r1, #0x2
ldr r1, [r3, r1]
- blx FUN_020AE82C
+ bl FUN_020AE82C
pop {r4, pc}
_02016B3A:
bl ErrorHandling
@@ -34848,14 +34848,14 @@ FUN_02016B44: ; 0x02016B44
push {r3-r5, lr}
add r5, r0, #0x0
add r4, r1, #0x0
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
bne _02016B56
bl ErrorHandling
_02016B56:
add r0, r5, #0x0
sub r0, #0x10
- blx FUN_020ADDC0
+ bl FUN_020ADDC0
add r4, #0x10
cmp r0, r4
blo _02016B84
@@ -34872,7 +34872,7 @@ _02016B56:
lsl r0, r0, #0x2
ldr r0, [r1, r0]
add r1, r5, #0x0
- blx FUN_020ADE2C
+ bl FUN_020ADE2C
pop {r3-r5, pc}
_02016B84:
bl ErrorHandling
@@ -34896,7 +34896,7 @@ FUN_02016B94: ; 0x02016B94
mov r1, #0x0
lsl r2, r2, #0x2
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
str r5, [r4, #0x0]
mov r0, #0x0
strh r0, [r4, #0x4]
@@ -34916,9 +34916,9 @@ FUN_02016BBC: ; 0x02016BBC
ldr r0, [r4, #0x0]
ldr r1, [r4, #0x4]
ldr r2, [r4, #0xc]
- blx GX_SetGraphicsMode
+ bl GX_SetGraphicsMode
ldr r0, [r4, #0x8]
- blx GXS_SetGraphicsMode
+ bl GXS_SetGraphicsMode
mov r2, #0x1
lsl r2, r2, #0x1a
ldr r1, [r2, #0x0]
@@ -34944,12 +34944,12 @@ FUN_02016BF4: ; 0x02016BF4
ldr r0, [r2, #0x0]
ldr r1, [r2, #0x4]
ldr r2, [r2, #0xc]
- blx GX_SetGraphicsMode
+ bl GX_SetGraphicsMode
bl FUN_0201E6D8
pop {r3, pc}
_02016C0C:
ldr r0, [r2, #0x8]
- blx GXS_SetGraphicsMode
+ bl GXS_SetGraphicsMode
bl FUN_0201E740
pop {r3, pc}
@@ -35546,7 +35546,7 @@ _0201705A:
ldr r1, [r6, r5]
ldr r2, [r4, #0x8]
mov r0, #0x0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r0, [sp, #0x0]
ldr r2, [r4, #0x8]
add r1, r0, r5
@@ -37134,7 +37134,7 @@ _02017BFC:
ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldr r0, _02017C5C ; =0x04000020
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
add sp, #0x8
pop {r3-r5, pc}
_02017C14:
@@ -37146,7 +37146,7 @@ _02017C14:
ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldr r0, _02017C60 ; =0x04000030
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
add sp, #0x8
pop {r3-r5, pc}
_02017C2C:
@@ -37158,7 +37158,7 @@ _02017C2C:
ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldr r0, _02017C64 ; =0x04001020
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
add sp, #0x8
pop {r3-r5, pc}
_02017C44:
@@ -37170,7 +37170,7 @@ _02017C44:
ldr r0, [r4, #0x18]
str r0, [sp, #0x4]
ldr r0, _02017C68 ; =0x04001030
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_02017C58:
add sp, #0x8
pop {r3-r5, pc}
@@ -37208,7 +37208,7 @@ FUN_02017C98: ; 0x02017C98
push {r3-r5, lr}
cmp r2, #0x0
bne _02017CA4
- blx MI_UncompressLZ8
+ bl MI_UncompressLZ8
pop {r3-r5, pc}
_02017CA4:
mov r4, #0x3
@@ -37227,10 +37227,10 @@ _02017CA4:
ror r5, r3
add r3, r4, r5
bne _02017CCA
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
pop {r3-r5, pc}
_02017CCA:
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3-r5, pc}
thumb_func_start FUN_02017CD0
@@ -37318,7 +37318,7 @@ FUN_02017D68: ; 0x02017D68
add r0, r4, #0x0
add r1, r6, #0x0
add r5, r2, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
cmp r7, #0x7
bhi _02017DF8
add r0, r7, r7
@@ -37340,49 +37340,49 @@ _02017D9A:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG0Scr
+ bl GX_LoadBG0Scr
pop {r3-r7, pc}
_02017DA6:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG1Scr
+ bl GX_LoadBG1Scr
pop {r3-r7, pc}
_02017DB2:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG2Scr
+ bl GX_LoadBG2Scr
pop {r3-r7, pc}
_02017DBE:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG3Scr
+ bl GX_LoadBG3Scr
pop {r3-r7, pc}
_02017DCA:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG0Scr
+ bl GXS_LoadBG0Scr
pop {r3-r7, pc}
_02017DD6:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG1Scr
+ bl GXS_LoadBG1Scr
pop {r3-r7, pc}
_02017DE2:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG2Scr
+ bl GXS_LoadBG2Scr
pop {r3-r7, pc}
_02017DEE:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG3Scr
+ bl GXS_LoadBG3Scr
_02017DF8:
pop {r3-r7, pc}
.balign 4
@@ -37467,7 +37467,7 @@ FUN_02017E84: ; 0x02017E84
add r0, r4, #0x0
add r1, r6, #0x0
add r5, r2, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
cmp r7, #0x7
bhi _02017F14
add r0, r7, r7
@@ -37489,49 +37489,49 @@ _02017EB6:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG0Char
+ bl GX_LoadBG0Char
pop {r3-r7, pc}
_02017EC2:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG1Char
+ bl GX_LoadBG1Char
pop {r3-r7, pc}
_02017ECE:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG2Char
+ bl GX_LoadBG2Char
pop {r3-r7, pc}
_02017EDA:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GX_LoadBG3Char
+ bl GX_LoadBG3Char
pop {r3-r7, pc}
_02017EE6:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG0Char
+ bl GXS_LoadBG0Char
pop {r3-r7, pc}
_02017EF2:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG1Char
+ bl GXS_LoadBG1Char
pop {r3-r7, pc}
_02017EFE:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG2Char
+ bl GXS_LoadBG2Char
pop {r3-r7, pc}
_02017F0A:
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r6, #0x0
- blx GXS_LoadBG3Char
+ bl GXS_LoadBG3Char
_02017F14:
pop {r3-r7, pc}
.balign 4
@@ -37548,7 +37548,7 @@ FUN_02017F18: ; 0x02017F18
add r4, r0, #0x0
mov r1, #0x0
add r2, r5, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r6, #0x0
add r1, r4, #0x0
add r2, r7, #0x0
@@ -37600,7 +37600,7 @@ _02017F8C:
ldr r1, [sp, #0x4]
ldr r2, [sp, #0x0]
add r0, r5, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
lsl r0, r7, #0x18
ldrb r2, [r4, r6]
ldr r3, [sp, #0x20]
@@ -37623,19 +37623,19 @@ FUN_02017FB4: ; 0x02017FB4
add r0, r5, #0x0
add r1, r4, #0x0
add r7, r3, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
cmp r6, #0x4
bhs _02017FD6
add r0, r5, #0x0
add r1, r7, #0x0
add r2, r4, #0x0
- blx GX_LoadBGPltt
+ bl GX_LoadBGPltt
pop {r3-r7, pc}
_02017FD6:
add r0, r5, #0x0
add r1, r7, #0x0
add r2, r4, #0x0
- blx GXS_LoadBGPltt
+ bl GXS_LoadBGPltt
pop {r3-r7, pc}
.balign 4
@@ -38668,7 +38668,7 @@ FUN_02018744: ; 0x02018744
beq _02018766
ldr r2, [r2, #0xc]
mov r0, #0x0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_02017CD0
@@ -38688,7 +38688,7 @@ FUN_02018768: ; 0x02018768
beq _0201878A
add r0, r2, #0x0
ldr r2, [r3, #0xc]
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_02017CD0
@@ -38708,7 +38708,7 @@ FUN_0201878C: ; 0x0201878C
beq _020187AE
add r0, r2, #0x0
ldr r2, [r3, #0xc]
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_0201AC68
@@ -38736,28 +38736,28 @@ _020187C2: ; jump table (using 16-bit offset)
.short _020187F6 - _020187C2 - 2; case 6
.short _020187FC - _020187C2 - 2; case 7
_020187D2:
- blx G2_GetBG0CharPtr
+ bl G2_GetBG0CharPtr
pop {r3, pc}
_020187D8:
- blx G2_GetBG1CharPtr
+ bl G2_GetBG1CharPtr
pop {r3, pc}
_020187DE:
- blx G2_GetBG2CharPtr
+ bl G2_GetBG2CharPtr
pop {r3, pc}
_020187E4:
- blx G2_GetBG3CharPtr
+ bl G2_GetBG3CharPtr
pop {r3, pc}
_020187EA:
- blx G2S_GetBG0CharPtr
+ bl G2S_GetBG0CharPtr
pop {r3, pc}
_020187F0:
- blx G2S_GetBG1CharPtr
+ bl G2S_GetBG1CharPtr
pop {r3, pc}
_020187F6:
- blx G2S_GetBG2CharPtr
+ bl G2S_GetBG2CharPtr
pop {r3, pc}
_020187FC:
- blx G2S_GetBG3CharPtr
+ bl G2S_GetBG3CharPtr
pop {r3, pc}
_02018802:
mov r0, #0x0
@@ -40023,7 +40023,7 @@ FUN_020190EC: ; 0x020190EC
lsl r1, r1, #0x18
ldr r2, [sp, #0x4]
lsr r1, r1, #0x18
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
cmp r7, #0x0
beq _02019148
str r5, [r4, #0x0]
@@ -40754,7 +40754,7 @@ _0201963C:
ldrb r4, [r4, #0x7]
mul r2, r4
mul r2, r3
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
pop {r3-r5, pc}
thumb_func_start FUN_02019658
@@ -43637,7 +43637,7 @@ FUN_0201AB28: ; 0x0201AB28
bl FUN_020161A4
add r1, sp, #0x0
str r0, [r4, #0x0]
- blx FUN_020B0030
+ bl FUN_020B0030
ldr r0, [sp, #0x0]
add sp, #0x4
pop {r3-r4, pc}
@@ -43652,7 +43652,7 @@ FUN_0201AB44: ; 0x0201AB44
bl FUN_020161A4
add r1, sp, #0x0
str r0, [r4, #0x0]
- blx FUN_020B0138
+ bl FUN_020B0138
ldr r0, [sp, #0x0]
add sp, #0x4
pop {r3-r4, pc}
@@ -43889,7 +43889,7 @@ _0201ACEA:
ldr r2, [r2, #0x0]
ldr r3, [r3, #0x0]
add r1, sp, #0x38
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_0201AD1E:
ldrh r1, [r4, #0x4]
mov r0, #0x8
@@ -43945,7 +43945,7 @@ _0201AD4E:
ldr r2, [r2, #0x0]
ldr r3, [r3, #0x0]
add r1, sp, #0x28
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_0201AD8E:
ldrh r1, [r4, #0x4]
mov r0, #0x10
@@ -44035,7 +44035,7 @@ _0201AE04:
ldr r2, [r4, r2]
ldr r3, [r4, r3]
add r1, sp, #0x18
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_0201AE3E:
ldrh r0, [r4, #0x4]
mov r3, #0x80
@@ -44090,7 +44090,7 @@ _0201AE72:
ldr r2, [r4, r2]
ldr r3, [r4, r3]
add r1, sp, #0x8
- blx G2x_SetBGyAffine_
+ bl G2x_SetBGyAffine_
_0201AEAC:
add sp, #0x48
pop {r4, pc}
@@ -44364,7 +44364,7 @@ _0201B096:
ldr r1, [sp, #0x18]
add r1, r1, r2
mov r2, #0x40
- blx memcpy
+ bl memcpy
ldrh r1, [r4, r6]
add r0, r7, #0x0
asr r2, r1, #0xa
@@ -44454,7 +44454,7 @@ _0201B142:
add r0, r7, #0x0
add r1, r4, #0x0
mov r2, #0x40
- blx memcpy
+ bl memcpy
_0201B166:
ldr r0, [sp, #0x0]
mov r1, #0x2
@@ -44484,7 +44484,7 @@ _0201B17E:
add r0, r7, #0x0
add r1, r4, #0x0
mov r2, #0x40
- blx memcpy
+ bl memcpy
_0201B19E:
add r0, r4, #0x0
bl FUN_02016A18
@@ -44499,7 +44499,7 @@ FUN_0201B1A8: ; 0x0201B1A8
add r4, r2, #0x0
bl FUN_020161A4
str r0, [r5, #0x0]
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
cmp r0, #0x0
beq _0201B1D2
bl FUN_0201B254
@@ -44507,12 +44507,12 @@ FUN_0201B1A8: ; 0x0201B1A8
bne _0201B1D2
ldr r0, [r5, #0x0]
ldr r1, [r0, #0x8]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [r5, #0x0]
- blx FUN_020BB59C
+ bl FUN_020BB59C
_0201B1D2:
ldr r0, [r5, #0x0]
- blx FUN_020BC13C
+ bl FUN_020BC13C
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
@@ -44526,7 +44526,7 @@ FUN_0201B1E4: ; 0x0201B1E4
add r5, r1, #0x0
add r4, r0, #0x0
ldr r0, [r5, #0x0]
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
cmp r0, #0x0
beq _0201B20A
bl FUN_0201B254
@@ -44534,12 +44534,12 @@ FUN_0201B1E4: ; 0x0201B1E4
bne _0201B20A
ldr r0, [r5, #0x0]
ldr r1, [r0, #0x8]
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [r5, #0x0]
- blx FUN_020BB59C
+ bl FUN_020BB59C
_0201B20A:
ldr r0, [r5, #0x0]
- blx FUN_020BC13C
+ bl FUN_020BC13C
ldrh r1, [r0, #0xe]
add r1, r0, r1
ldr r1, [r1, #0xc]
@@ -44557,7 +44557,7 @@ FUN_0201B21C: ; 0x0201B21C
bl FUN_0201B1A8
ldr r1, [r4, #0x0]
add r0, r5, #0x0
- blx FUN_020B80B4
+ bl FUN_020B80B4
pop {r3-r5, pc}
thumb_func_start FUN_0201B234
@@ -44574,7 +44574,7 @@ FUN_0201B234: ; 0x0201B234
_0201B24A:
ldr r1, [r4, #0x0]
add r0, r5, #0x0
- blx FUN_020B80B4
+ bl FUN_020B80B4
pop {r3-r5, pc}
thumb_func_start FUN_0201B254
@@ -44601,20 +44601,20 @@ FUN_0201B26C: ; 0x0201B26C
add r0, r1, #0x0
add r4, r2, #0x0
add r6, r3, #0x0
- blx FUN_020B8474
+ bl FUN_020B8474
ldr r1, _0201B2A0 ; =0x021CEDD4
add r0, r4, #0x0
- blx MI_Copy36B
+ bl MI_Copy36B
ldr r1, _0201B2A4 ; =0x021CED98
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
add r0, r6, #0x0
str r2, [r1, #0x7c]
- blx FUN_020B844C
- blx FUN_020B849C
+ bl FUN_020B844C
+ bl FUN_020B849C
add r0, r5, #0x0
- blx FUN_020BAC98
+ bl FUN_020BAC98
pop {r4-r6, pc}
nop
_0201B2A0: .word 0x021CEDD4
@@ -44627,24 +44627,24 @@ FUN_0201B2A8: ; 0x0201B2A8
add r0, r1, #0x0
add r4, r2, #0x0
add r6, r3, #0x0
- blx FUN_020B8474
+ bl FUN_020B8474
ldr r1, _0201B2E4 ; =0x021CEDD4
add r0, r4, #0x0
- blx MI_Copy36B
+ bl MI_Copy36B
ldr r1, _0201B2E8 ; =0x021CED98
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
str r2, [r1, #0x7c]
add r0, r6, #0x0
- blx FUN_020B844C
- blx FUN_020B849C
+ bl FUN_020B844C
+ bl FUN_020B849C
mov r1, #0x0
ldr r0, [r5, #0x4]
add r2, r1, #0x0
mov r3, #0x1
- blx FUN_020BAFB8
- blx FUN_020BB394
+ bl FUN_020BAFB8
+ bl FUN_020BB394
pop {r4-r6, pc}
.balign 4
_0201B2E4: .word 0x021CEDD4
@@ -44712,13 +44712,13 @@ FUN_0201B314: ; 0x0201B314
add r1, r0, #0x0
add r2, r0, #0x0
add r3, r0, #0x0
- blx G3X_SetFog
+ bl G3X_SetFog
mov r0, #0x0
ldr r2, _0201B38C ; =0x00007FFF
add r1, r0, #0x0
mov r3, #0x3f
str r0, [sp, #0x0]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _0201B390 ; =0xBFFF0000
ldr r0, _0201B394 ; =0x04000580
str r1, [r0, #0x0]
@@ -44745,11 +44745,11 @@ _0201B3A4: .word FUN_020223BC
FUN_0201B3A8: ; 0x0201B3A8
push {r4, lr}
add r4, r1, #0x0
- blx FUN_020BC13C
+ bl FUN_020BC13C
cmp r4, #0x0
beq _0201B3BE
add r1, r4, #0x0
- blx FUN_020B7790
+ bl FUN_020B7790
mov r0, #0x1
pop {r4, pc}
_0201B3BE:
@@ -44775,13 +44775,13 @@ _0201B3D2:
str r1, [sp, #0x0]
cmp r5, #0x0
beq _0201B4D0
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
add r6, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
add r4, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
str r0, [sp, #0xc]
cmp r6, #0x0
beq _0201B412
@@ -44882,19 +44882,19 @@ _0201B4A6:
add r0, r5, #0x0
add r1, r7, #0x0
add r2, r6, #0x0
- blx FUN_020B7DFC
+ bl FUN_020B7DFC
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_020B7CDC
+ bl FUN_020B7CDC
ldr r1, [r5, #0x4]
add r0, r5, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
add r0, r5, #0x0
mov r1, #0x1
- blx FUN_020B7D28
+ bl FUN_020B7D28
add r0, r5, #0x0
mov r1, #0x1
- blx FUN_020B7C78
+ bl FUN_020B7C78
_0201B4D0:
mov r0, #0x1
add sp, #0x10
@@ -45237,22 +45237,22 @@ FUN_0201B6D0: ; 0x0201B6D0
ldrsh r3, [r4, r3]
bl FUN_0201B808
add r0, sp, #0x1c
- blx FUN_020B8474
+ bl FUN_020B8474
ldr r1, _0201B764 ; =0x021CEDD4
add r0, r5, #0x0
- blx MI_Copy36B
+ bl MI_Copy36B
ldr r1, _0201B768 ; =0x021CED98
mov r0, #0xa4
ldr r2, [r1, #0x7c]
bic r2, r0
add r0, r7, #0x0
str r2, [r1, #0x7c]
- blx FUN_020B844C
- blx FUN_020B849C
+ bl FUN_020B844C
+ bl FUN_020B849C
mov r1, #0x0
mov r0, #0x11
add r2, r1, #0x0
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
ldr r0, [r4, #0x24]
add r1, sp, #0x10
str r0, [sp, #0x10]
@@ -45260,7 +45260,7 @@ FUN_0201B6D0: ; 0x0201B6D0
str r0, [sp, #0x18]
mov r0, #0x1b
mov r2, #0x3
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
add r0, sp, #0x28
bl FUN_0201B82C
add r4, r0, #0x0
@@ -45268,7 +45268,7 @@ FUN_0201B6D0: ; 0x0201B6D0
mov r0, #0x12
add r1, sp, #0xc
str r2, [sp, #0xc]
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
add r0, r4, #0x0
add sp, #0x34
pop {r4-r7, pc}
@@ -45296,12 +45296,12 @@ FUN_0201B76C: ; 0x0201B76C
add r2, r0, #0x0
bl FUN_0201B808
add r0, r5, #0x0
- blx FUN_020B8474
- blx FUN_020B849C
+ bl FUN_020B8474
+ bl FUN_020B849C
mov r1, #0x0
mov r0, #0x11
add r2, r1, #0x0
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
ldr r0, [r4, #0x10]
lsl r2, r0, #0xc
ldr r0, [r4, #0xc]
@@ -45314,7 +45314,7 @@ FUN_0201B76C: ; 0x0201B76C
mov r0, #0x1b
add r1, sp, #0x10
mov r2, #0x3
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
add r0, sp, #0x1c
bl FUN_0201B82C
add r4, r0, #0x0
@@ -45322,7 +45322,7 @@ FUN_0201B76C: ; 0x0201B76C
mov r0, #0x12
add r1, sp, #0xc
str r2, [sp, #0xc]
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
add r0, r4, #0x0
add sp, #0x28
pop {r3-r5, pc}
@@ -45382,26 +45382,26 @@ FUN_0201B82C: ; 0x0201B82C
mov r0, #0x29
add r1, sp, #0x4
str r2, [sp, #0x8]
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
mov r0, #0x0
str r0, [sp, #0x0]
mov r0, #0x40
add r1, sp, #0x0
mov r2, #0x1
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
mov r1, #0x0
mov r0, #0x41
add r2, r1, #0x0
- blx FUN_020BB1C0
+ bl FUN_020BB1C0
mov r0, #0x70
add r1, r4, #0x0
mov r2, #0x3
- blx FUN_020BB1C0
- blx FUN_020BB394
+ bl FUN_020BB1C0
+ bl FUN_020BB394
add r4, sp, #0x8
_0201B86A:
add r0, r4, #0x0
- blx G3X_GetBoxTestResult
+ bl G3X_GetBoxTestResult
cmp r0, #0x0
bne _0201B86A
ldr r0, [sp, #0x8]
@@ -45561,7 +45561,7 @@ FUN_0201B970: ; 0x0201B970
push {r3, lr}
mov r1, #0x5a
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0201B984 ; =0x020EDF50
lsl r1, r1, #0x2
ldr r0, [r0, r1]
@@ -45574,7 +45574,7 @@ FUN_0201B988: ; 0x0201B988
push {r3, lr}
mov r1, #0x5a
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
add r1, #0x5a
ldr r0, _0201B99C ; =0x020EDF50
lsl r1, r1, #0x2
@@ -45588,7 +45588,7 @@ FUN_0201B9A0: ; 0x0201B9A0
push {r3, lr}
mov r1, #0x5a
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0201B9B4 ; =0x020EDC7E
lsl r1, r1, #0x1
ldrh r0, [r0, r1]
@@ -45603,7 +45603,7 @@ FUN_0201B9B8: ; 0x0201B9B8
mov r1, #0x5a
lsr r0, r0, #0x10
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0201B9D0 ; =0x020EDF50
lsl r1, r1, #0x2
ldr r0, [r0, r1]
@@ -45845,7 +45845,7 @@ _0201BB8E:
mul r0, r1
mov r1, #0x5a
lsl r1, r1, #0x2
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x10
lsr r1, r0, #0x10
_0201BBA2:
@@ -45863,7 +45863,7 @@ _0201BBA2:
add r1, r5, #0x0
add r2, r4, #0x0
add r3, r6, #0x0
- blx MTX_ScaleApply22
+ bl MTX_ScaleApply22
pop {r4-r6, pc}
nop
_0201BBC8: .word 0x0000FFFF
@@ -45891,14 +45891,14 @@ FUN_0201BBD0: ; 0x0201BBD0
str r5, [sp, #0x2c]
str r4, [sp, #0x30]
str r6, [sp, #0x24]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x4]
add r2, r4, #0x0
ldr r0, [sp, #0x20]
add r7, r1, #0x0
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
ldr r3, [sp, #0x4]
lsl r2, r2, #0xa
@@ -45928,7 +45928,7 @@ FUN_0201BBD0: ; 0x0201BBD0
str r0, [sp, #0x34]
add r0, sp, #0x2c
add r1, sp, #0x14
- blx VEC_Normalize
+ bl VEC_Normalize
mov r1, #0x0
ldr r0, [sp, #0x0]
str r1, [sp, #0x34]
@@ -45940,10 +45940,10 @@ FUN_0201BBD0: ; 0x0201BBD0
str r5, [sp, #0x2c]
str r4, [sp, #0x30]
str r6, [sp, #0x24]
- blx VEC_Subtract
+ bl VEC_Subtract
add r0, sp, #0x14
add r1, sp, #0x8
- blx VEC_DotProduct
+ bl VEC_DotProduct
asr r0, r0, #0xc
bpl _0201BC72
neg r0, r0
@@ -45967,7 +45967,7 @@ FUN_0201BC84: ; 0x0201BC84
ldr r2, _0201BCB4 ; =0x0000323D
asr r1, r0, #0x1f
mov r3, #0x0
- blx _ll_mul
+ bl _ll_mul
add r5, r0, #0x0
ldr r0, _0201BCB8 ; =0x0000FFFF
mov r2, #0x2
@@ -45980,7 +45980,7 @@ FUN_0201BC84: ; 0x0201BC84
lsr r2, r2, #0xc
orr r2, r1
asr r1, r2, #0xc
- blx _s32_div_f
+ bl _s32_div_f
pop {r3-r5, pc}
nop
_0201BCB4: .word 0x0000323D
@@ -46678,7 +46678,7 @@ FUN_0201C1B0: ; 0x0201C1B0
ldr r0, [r0, #0x14]
add r1, r5, #0x0
lsl r2, r2, #0x8
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
add r0, r4, #0x0
bl FUN_02016A18
add r0, r5, #0x0
@@ -46772,7 +46772,7 @@ _0201C272:
ldr r1, [r1, #0x0]
ldr r0, [r1, #0x8]
ldr r1, [r1, #0x0]
- blx FUN_020AEF1C
+ bl FUN_020AEF1C
pop {r3-r5, pc}
nop
_0201C298: .word 0x021C5934
@@ -46831,7 +46831,7 @@ _0201C2FA:
add r1, r4, #0x0
add r2, r6, #0x0
add r3, r7, #0x0
- blx FUN_020AEE40
+ bl FUN_020AEE40
pop {r3-r7, pc}
.balign 4
_0201C308: .word 0x021C5934
@@ -46843,7 +46843,7 @@ FUN_0201C30C: ; 0x0201C30C
ldr r0, [r0, #0x0]
cmp r0, #0x0
beq _0201C322
- blx FUN_020AEEB8
+ bl FUN_020AEEB8
ldr r0, _0201C324 ; =0x021C5934
mov r1, #0x0
ldr r0, [r0, #0x0]
@@ -46864,7 +46864,7 @@ FUN_0201C328: ; 0x0201C328
ldr r2, _0201C344 ; =FUN_0201C358
add r1, r4, #0x0
add r5, r0, #0x0
- blx FUN_020B4568
+ bl FUN_020B4568
add r0, r5, #0x0
pop {r3-r5, pc}
.balign 4
@@ -47208,7 +47208,7 @@ FUN_0201C578: ; 0x0201C578
add r0, r4, #0x0
add r0, #0x3c
add r1, sp, #0x0
- blx FUN_020BC2A0
+ bl FUN_020BC2A0
add r1, r0, #0x0
bne _0201C598
add sp, #0x10
@@ -47270,7 +47270,7 @@ _0201C5DE:
lsl r2, r2, #0x4
lsl r0, r0, #0x4
mul r0, r2
- blx _u32_div_f
+ bl _u32_div_f
pop {r3, pc}
.balign 4
@@ -47284,7 +47284,7 @@ FUN_0201C5FC: ; 0x0201C5FC
add r0, r4, #0x0
add r0, #0x3c
add r1, sp, #0x0
- blx FUN_020BC2A0
+ bl FUN_020BC2A0
add r1, r0, #0x0
add r0, r4, #0x0
bl FUN_0201C5A4
@@ -47550,10 +47550,10 @@ FUN_0201C7B0: ; 0x0201C7B0
sub sp, #0x30
add r4, r1, #0x0
add r1, sp, #0x24
- blx VEC_Normalize
+ bl VEC_Normalize
add r0, r4, #0x0
add r1, sp, #0x18
- blx VEC_Normalize
+ bl VEC_Normalize
ldr r0, [sp, #0x24]
ldr r4, [sp, #0x18]
str r0, [sp, #0x0]
@@ -47570,14 +47570,14 @@ FUN_0201C7B0: ; 0x0201C7B0
ldr r3, [sp, #0xc]
add r1, r7, #0x0
str r0, [sp, #0x10]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x14]
add r5, r1, #0x0
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x4]
add r2, r4, #0x0
add r3, r6, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
ldr r3, [sp, #0x14]
lsl r2, r2, #0xa
@@ -47600,14 +47600,14 @@ FUN_0201C7B0: ; 0x0201C7B0
add r1, r7, #0x0
add r2, r4, #0x0
add r3, r6, #0x0
- blx _ll_mul
+ bl _ll_mul
add r6, r0, #0x0
add r4, r1, #0x0
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x4]
ldr r2, [sp, #0x8]
ldr r3, [sp, #0xc]
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -47636,7 +47636,7 @@ _0201C862:
pop {r3-r7, pc}
_0201C86A:
add r1, r5, #0x0
- blx FX_Atan2
+ bl FX_Atan2
add sp, #0x30
pop {r3-r7, pc}
.balign 4
@@ -47685,7 +47685,7 @@ FUN_0201C878: ; 0x0201C878
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x1c]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
add r6, r1, #0x0
ldr r3, [sp, #0x68]
@@ -47694,14 +47694,14 @@ FUN_0201C878: ; 0x0201C878
sub r2, r3, r2
ldr r1, [sp, #0x34]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r5, r1, #0x0
str r0, [sp, #0x3c]
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x20]
ldr r3, [sp, #0x24]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
str r0, [sp, #0x4c]
add r0, r1, #0x0
@@ -47737,7 +47737,7 @@ FUN_0201C878: ; 0x0201C878
sub r2, r3, r2
ldr r1, [sp, #0x34]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
add r6, r1, #0x0
ldr r3, [sp, #0x68]
@@ -47746,14 +47746,14 @@ FUN_0201C878: ; 0x0201C878
sub r2, r3, r2
ldr r1, [sp, #0x28]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x40]
add r5, r1, #0x0
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x14]
ldr r3, [sp, #0x18]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
str r0, [sp, #0x50]
add r0, r1, #0x0
@@ -47789,7 +47789,7 @@ FUN_0201C878: ; 0x0201C878
sub r2, r3, r2
ldr r1, [sp, #0x28]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
add r6, r1, #0x0
ldr r3, [sp, #0x68]
@@ -47798,14 +47798,14 @@ FUN_0201C878: ; 0x0201C878
sub r2, r3, r2
ldr r1, [sp, #0x1c]
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
add r5, r1, #0x0
str r0, [sp, #0x44]
ldr r1, [sp, #0x38]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r3, #0x2
mov r2, #0x0
lsl r3, r3, #0xa
@@ -47835,21 +47835,21 @@ FUN_0201C878: ; 0x0201C878
ldr r1, [sp, #0x34]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
add r5, r1, #0x0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x28]
ldr r2, [sp, #0x20]
ldr r3, [sp, #0x24]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x48]
add r4, r1, #0x0
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x1c]
ldr r2, [sp, #0x14]
ldr r3, [sp, #0x18]
- blx _ll_mul
+ bl _ll_mul
mov r12, r0
mov r0, #0x2
add r2, r1, #0x0
@@ -47951,7 +47951,7 @@ FUN_0201CAA8: ; 0x0201CAA8
add r0, r5, #0x0
add r1, sp, #0x0
add r2, r5, #0x0
- blx MTX_Concat33
+ bl MTX_Concat33
ldr r0, [r4, #0x8]
ldr r3, _0201CB1C ; =0x020FFA38
lsl r0, r0, #0x10
@@ -47968,7 +47968,7 @@ FUN_0201CAA8: ; 0x0201CAA8
add r0, r5, #0x0
add r1, sp, #0x0
add r2, r5, #0x0
- blx MTX_Concat33
+ bl MTX_Concat33
add sp, #0x24
pop {r4-r5, pc}
nop
@@ -48000,7 +48000,7 @@ FUN_0201CB20: ; 0x0201CB20
add r0, r7, #0x0
add r1, sp, #0x0
add r2, r7, #0x0
- blx MTX_Concat33
+ bl MTX_Concat33
lsl r1, r4, #0x2
ldr r3, _0201CB78 ; =0x020EDF50
add r4, #0x5a
@@ -48012,7 +48012,7 @@ FUN_0201CB20: ; 0x0201CB20
add r0, r7, #0x0
add r1, sp, #0x0
add r2, r7, #0x0
- blx MTX_Concat33
+ bl MTX_Concat33
add sp, #0x24
pop {r4-r7, pc}
.balign 4
@@ -48033,12 +48033,12 @@ FUN_0201CB7C: ; 0x0201CB7C
ldrsh r1, [r1, r2]
add r5, r3, #0x0
ldr r4, [sp, #0x18]
- blx FX_Div
+ bl FX_Div
add r2, r0, #0x0
asr r1, r6, #0x1f
add r0, r6, #0x0
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r6, #0x2
mov r2, #0x0
lsl r6, r6, #0xa
@@ -48061,7 +48061,7 @@ FUN_0201CB7C: ; 0x0201CB7C
asr r3, r7, #0x1f
add r2, r7, #0x0
str r0, [r4, #0x0]
- blx _ll_mul
+ bl _ll_mul
mov r3, #0x0
add r2, r6, #0x0
add r2, r0, r2
@@ -48085,7 +48085,7 @@ FUN_0201CBEC: ; 0x0201CBEC
mul r0, r2
add r0, r1, r0
lsl r0, r0, #0xc
- blx FX_Sqrt
+ bl FX_Sqrt
asr r0, r0, #0xc
pop {r3, pc}
.balign 4
@@ -48207,11 +48207,11 @@ _0201CCD0:
mov r4, #0x4
add r6, r4, #0x0
_0201CCD4:
- blx TP_RequestAutoSamplingStopAsync
+ bl TP_RequestAutoSamplingStopAsync
add r0, r4, #0x0
- blx TP_WaitBusy
+ bl TP_WaitBusy
add r0, r6, #0x0
- blx TP_CheckError
+ bl TP_CheckError
cmp r0, #0x0
beq _0201CCEA
add r5, r5, #0x1
@@ -48276,7 +48276,7 @@ _0201CD4E:
ldrh r0, [r0, #0x18]
cmp r0, #0x0
beq _0201CD88
- blx TP_GetLatestIndexInAuto
+ bl TP_GetLatestIndexInAuto
add r5, r0, #0x0
ldr r0, _0201CD90 ; =0x021C5944
mov r1, #0x9
@@ -48320,7 +48320,7 @@ FUN_0201CD94: ; 0x0201CD94
_0201CDA6:
add r0, sp, #0x4
add r1, r5, #0x0
- blx TP_GetCalibratedPoint
+ bl TP_GetCalibratedPoint
ldrh r0, [r6, #0x0]
add r7, r7, #0x1
add r5, #0x8
@@ -48403,11 +48403,11 @@ _0201CE38:
add r1, r4, #0x0
add r2, r7, #0x0
mov r3, #0x9
- blx TP_RequestAutoSamplingStartAsync
+ bl TP_RequestAutoSamplingStartAsync
mov r0, #0x2
- blx TP_WaitBusy
+ bl TP_WaitBusy
mov r0, #0x2
- blx TP_CheckError
+ bl TP_CheckError
cmp r0, #0x0
beq _0201CE56
add r5, r5, #0x1
@@ -48536,7 +48536,7 @@ _0201CF0C:
ldr r2, [sp, #0x0]
cmp r2, #0x1
bne _0201CF36
- blx _u32_div_f
+ bl _u32_div_f
str r1, [r5, #0x54]
b _0201CF3E
_0201CF36:
@@ -48603,7 +48603,7 @@ _0201CF7C:
blo _0201CFB8
cmp r7, #0x4
bne _0201CFB2
- blx _u32_div_f
+ bl _u32_div_f
str r1, [r5, #0x54]
b _0201CFB8
_0201CFB2:
@@ -48721,7 +48721,7 @@ FUN_0201D060: ; 0x0201D060
mov r2, #0x3c
str r1, [r0, #0x0]
mov r0, #0x0
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r1, _0201D120 ; =0x021C5994
ldr r2, [r5, #0x0]
ldr r0, [r1, #0x0]
@@ -49954,7 +49954,7 @@ FUN_0201D9B0: ; 0x0201D9B0
push {r4, lr}
add r4, r0, #0x0
add r0, #0x10
- blx FUN_020B1A24
+ bl FUN_020B1A24
ldr r1, [r4, #0x4]
cmp r1, #0x3
beq _0201D9C8
@@ -50002,13 +50002,13 @@ _0201DA04:
add r5, #0x10
add r2, r4, #0x0
add r3, r5, #0x0
- blx FUN_020B1528
+ bl FUN_020B1528
b _0201DA20
_0201DA16:
add r5, #0x10
add r2, r4, #0x0
add r3, r5, #0x0
- blx FUN_020B1768
+ bl FUN_020B1768
_0201DA20:
cmp r4, #0x1
bne _0201DA2C
@@ -50028,7 +50028,7 @@ FUN_0201DA38: ; 0x0201DA38
push {r4, lr}
add r4, r0, #0x0
add r0, #0x10
- blx FUN_020B1A24
+ bl FUN_020B1A24
ldr r1, [r4, #0x4]
cmp r1, #0x3
beq _0201DA50
@@ -50071,7 +50071,7 @@ _0201DA88:
add r5, #0x10
add r2, r4, #0x0
add r3, r5, #0x0
- blx FUN_020B1340
+ bl FUN_020B1340
cmp r4, #0x1
bne _0201DAA0
mov r0, #0x1
@@ -50123,7 +50123,7 @@ _0201DAE4: .word 0x021C5994
thumb_func_start FUN_0201DAE8
FUN_0201DAE8: ; 0x0201DAE8
push {r3, lr}
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
cmp r0, #0x30
bgt _0201DB18
bge _0201DB60
@@ -50224,7 +50224,7 @@ _0201DB90:
ldr r0, [r0, #0x0]
str r1, [r0, #0x14]
_0201DB98:
- blx GX_GetBankForSubOBJ
+ bl GX_GetBankForSubOBJ
cmp r0, #0x0
beq _0201DBAE
cmp r0, #0x8
@@ -50427,7 +50427,7 @@ FUN_0201DD00: ; 0x0201DD00
add r0, r4, #0x0
mov r1, #0x0
lsr r2, r2, #0x3
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
_0201DD16:
pop {r4, pc}
@@ -50609,7 +50609,7 @@ FUN_0201DE4C: ; 0x0201DE4C
beq _0201DE8A
add r0, r4, #0x0
add r0, #0x10
- blx FUN_020B1A14
+ bl FUN_020B1A14
ldr r1, _0201DECC ; =0x021C5994
ldr r2, [r1, #0x0]
ldr r1, [r2, #0x1c]
@@ -50635,7 +50635,7 @@ _0201DE8A:
beq _0201DEC4
add r0, r4, #0x0
add r0, #0x10
- blx FUN_020B1A14
+ bl FUN_020B1A14
ldr r1, _0201DECC ; =0x021C5994
ldr r2, [r1, #0x0]
ldr r1, [r2, #0x20]
@@ -50707,7 +50707,7 @@ FUN_0201DF10: ; 0x0201DF10
add r5, r0, #0x0
add r4, r1, #0x0
add r6, r2, #0x0
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0x0
beq _0201DF28
sub r5, r5, r1
@@ -50867,7 +50867,7 @@ FUN_0201E00C: ; 0x0201E00C
mov r2, #0x28
str r1, [r0, #0x0]
mov r0, #0x0
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r0, _0201E064 ; =0x021C5998
mov r1, #0x30
ldr r0, [r0, #0x0]
@@ -51219,9 +51219,9 @@ _0201E2A4:
_0201E2A6:
cmp r4, #0x0
beq _0201E2B6
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
pop {r4, pc}
_0201E2B6:
mov r0, #0x0
@@ -51269,13 +51269,13 @@ FUN_0201E2F8: ; 0x0201E2F8
mov r1, #0x0
mov r2, #0x30
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0x0
mvn r0, r0
str r0, [r4, #0xc]
add r4, #0x10
add r0, r4, #0x0
- blx FUN_020B19DC
+ bl FUN_020B19DC
pop {r4, pc}
thumb_func_start FUN_0201E314
@@ -51463,7 +51463,7 @@ _0201E460: .word 0x021C5998
thumb_func_start FUN_0201E464
FUN_0201E464: ; 0x0201E464
push {r3, lr}
- blx GX_GetBankForOBJExtPltt
+ bl GX_GetBankForOBJExtPltt
cmp r0, #0x20
beq _0201E472
cmp r0, #0x40
@@ -51481,7 +51481,7 @@ _0201E47E:
ldr r0, [r0, #0x0]
str r1, [r0, #0x1c]
_0201E486:
- blx GX_GetBankForSubOBJExtPltt
+ bl GX_GetBankForSubOBJExtPltt
mov r1, #0x1
lsl r1, r1, #0x8
cmp r0, r1
@@ -51516,7 +51516,7 @@ FUN_0201E4BC: ; 0x0201E4BC
push {r4, lr}
add r4, r0, #0x0
add r0, #0x10
- blx FUN_020B19DC
+ bl FUN_020B19DC
ldr r0, [r4, #0x4]
mov r2, #0x1
tst r0, r2
@@ -51525,7 +51525,7 @@ FUN_0201E4BC: ; 0x0201E4BC
ldr r0, [r4, #0x0]
ldr r1, [r4, #0x24]
add r3, #0x10
- blx FUN_020B1240
+ bl FUN_020B1240
_0201E4DA:
ldr r0, [r4, #0x4]
mov r2, #0x2
@@ -51535,7 +51535,7 @@ _0201E4DA:
ldr r1, [r4, #0x28]
add r4, #0x10
add r3, r4, #0x0
- blx FUN_020B1240
+ bl FUN_020B1240
_0201E4EE:
pop {r4, pc}
@@ -51767,36 +51767,36 @@ _0201E666:
FUN_0201E66C: ; 0x0201E66C
push {r4, lr}
add r4, r0, #0x0
- blx GX_ResetBankForBG
- blx GX_ResetBankForBGExtPltt
- blx GX_ResetBankForSubBG
- blx FUN_020C6034
- blx GX_ResetBankForOBJ
- blx GX_ResetBankForOBJExtPltt
- blx FUN_020C605C
- blx GX_ResetBankForSubOBJ
- blx GX_ResetBankForTex
- blx GX_ResetBankForTexPltt
+ bl GX_ResetBankForBG
+ bl GX_ResetBankForBGExtPltt
+ bl GX_ResetBankForSubBG
+ bl FUN_020C6034
+ bl GX_ResetBankForOBJ
+ bl GX_ResetBankForOBJExtPltt
+ bl FUN_020C605C
+ bl GX_ResetBankForSubOBJ
+ bl GX_ResetBankForTex
+ bl GX_ResetBankForTexPltt
ldr r0, [r4, #0x0]
- blx GX_SetBankForBG
+ bl GX_SetBankForBG
ldr r0, [r4, #0x4]
- blx GX_SetBankForBGExtPltt
+ bl GX_SetBankForBGExtPltt
ldr r0, [r4, #0x8]
- blx GX_SetBankForSubBG
+ bl GX_SetBankForSubBG
ldr r0, [r4, #0xc]
- blx GX_SetBankForSubBGExtPltt
+ bl GX_SetBankForSubBGExtPltt
ldr r0, [r4, #0x10]
- blx GX_SetBankForOBJ
+ bl GX_SetBankForOBJ
ldr r0, [r4, #0x14]
- blx GX_SetBankForOBJExtPltt
+ bl GX_SetBankForOBJExtPltt
ldr r0, [r4, #0x18]
- blx GX_SetBankForSubOBJ
+ bl GX_SetBankForSubOBJ
ldr r0, [r4, #0x1c]
- blx GX_SetBankForSubOBJExtPltt
+ bl GX_SetBankForSubOBJExtPltt
ldr r0, [r4, #0x20]
- blx GX_SetBankForTex
+ bl GX_SetBankForTex
ldr r0, [r4, #0x24]
- blx GX_SetBankForTexPltt
+ bl GX_SetBankForTexPltt
pop {r4, pc}
.balign 4
@@ -51906,7 +51906,7 @@ _0201E784: .word 0xFFFFE0FF
thumb_func_start FUN_0201E788
FUN_0201E788: ; 0x0201E788
push {r3, lr}
- blx GX_DispOn
+ bl GX_DispOn
ldr r2, _0201E79C ; =0x04001000
mov r0, #0x1
ldr r1, [r2, #0x0]
@@ -51961,7 +51961,7 @@ FUN_0201E7D8: ; 0x0201E7D8
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -51978,7 +51978,7 @@ FUN_0201E7D8: ; 0x0201E7D8
orr r0, r1
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -51998,7 +51998,7 @@ FUN_0201E7D8: ; 0x0201E7D8
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
lsl r2, r2, #0xa
mov r3, #0x0
@@ -52016,7 +52016,7 @@ FUN_0201E7D8: ; 0x0201E7D8
ldrsh r2, [r2, r3]
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52036,7 +52036,7 @@ FUN_0201E7D8: ; 0x0201E7D8
ldrsh r0, [r0, r1]
asr r3, r2, #0x1f
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52051,7 +52051,7 @@ FUN_0201E7D8: ; 0x0201E7D8
add r5, #0x20
add r1, r5, #0x0
add r2, r0, #0x0
- blx VEC_Add
+ bl VEC_Add
pop {r3-r5, pc}
nop
_0201E8B4: .word 0x020FFA38
@@ -52069,7 +52069,7 @@ FUN_0201E8B8: ; 0x0201E8B8
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52086,7 +52086,7 @@ FUN_0201E8B8: ; 0x0201E8B8
orr r0, r1
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52107,7 +52107,7 @@ FUN_0201E8B8: ; 0x0201E8B8
asr r3, r2, #0x1f
ldrsh r0, [r0, r1]
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
lsl r2, r2, #0xa
mov r3, #0x0
@@ -52125,7 +52125,7 @@ FUN_0201E8B8: ; 0x0201E8B8
ldrsh r2, [r2, r3]
asr r1, r0, #0x1f
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52146,7 +52146,7 @@ FUN_0201E8B8: ; 0x0201E8B8
ldrsh r0, [r0, r1]
asr r3, r2, #0x1f
asr r1, r0, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52162,7 +52162,7 @@ FUN_0201E8B8: ; 0x0201E8B8
add r5, #0x14
add r1, r5, #0x0
add r2, r0, #0x0
- blx VEC_Add
+ bl VEC_Add
pop {r3-r5, pc}
.balign 4
_0201E998: .word 0x020FFA38
@@ -52279,7 +52279,7 @@ _0201EA5C:
ldr r0, [r7, #0x4]
ldr r1, [r1, #0x0]
add r0, r0, #0x1
- blx _s32_div_f
+ bl _s32_div_f
str r1, [r7, #0x4]
ldr r1, [sp, #0x0]
ldr r0, [r5, #0x64]
@@ -52298,7 +52298,7 @@ _0201EA5C:
ldr r0, [r0, #0x0]
ldr r1, [r1, #0x0]
add r0, r0, #0x1
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp, #0x0]
str r1, [r0, #0x0]
ldr r0, [r5, #0x64]
@@ -52477,7 +52477,7 @@ FUN_0201EBA4: ; 0x0201EBA4
beq _0201EBEE
add r1, #0x48
add r2, sp, #0x10
- blx VEC_Subtract
+ bl VEC_Subtract
ldr r0, _0201EC40 ; =0x021C59A4
add r1, sp, #0x10
ldr r0, [r0, #0x0]
@@ -52531,7 +52531,7 @@ _0201EBEE:
str r0, [sp, #0x0]
add r0, r4, #0x0
mov r3, #0x0
- blx G3i_LookAt_
+ bl G3i_LookAt_
ldr r1, _0201EC54 ; =0x021CED98
mov r0, #0xe8
ldr r2, [r1, #0x7c]
@@ -52719,9 +52719,9 @@ FUN_0201ED5C: ; 0x0201ED5C
str r0, [r2, #0x0]
add r0, r6, #0x0
add r2, sp, #0x30
- blx VEC_Subtract
+ bl VEC_Subtract
add r0, sp, #0x30
- blx VEC_Mag
+ bl VEC_Mag
str r0, [r4, #0x38]
mov r6, #0x0
add r0, sp, #0x24
@@ -52813,7 +52813,7 @@ FUN_0201EE2C: ; 0x0201EE2C
ldr r1, [r5, #0x4]
ldr r2, [r5, #0x8]
ldr r3, [r5, #0xc]
- blx G3i_PerspectiveW_
+ bl G3i_PerspectiveW_
ldr r1, _0201EEE8 ; =0x021CED98
mov r0, #0x50
ldr r2, [r1, #0x7c]
@@ -52830,11 +52830,11 @@ _0201EE6C:
ldr r4, [r5, #0x38]
ldr r0, [r5, #0x0]
ldr r1, [r5, #0x4]
- blx FX_Div
+ bl FX_Div
asr r1, r0, #0x1f
asr r3, r4, #0x1f
add r2, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -52847,7 +52847,7 @@ _0201EE6C:
asr r1, r4, #0x1f
add r0, r4, #0x0
asr r3, r2, #0x1f
- blx _ll_mul
+ bl _ll_mul
mov r6, #0x2
mov r2, #0x0
lsl r6, r6, #0xa
@@ -52868,7 +52868,7 @@ _0201EE6C:
neg r2, r3
str r0, [sp, #0x10]
add r0, r4, #0x0
- blx G3i_OrthoW_
+ bl G3i_OrthoW_
ldr r1, _0201EEE8 ; =0x021CED98
mov r0, #0x50
ldr r2, [r1, #0x7c]
@@ -52962,12 +52962,12 @@ FUN_0201EF70: ; 0x0201EF70
add r0, #0x14
add r1, r5, #0x0
add r2, r0, #0x0
- blx VEC_Add
+ bl VEC_Add
add r4, #0x20
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r4, #0x0
- blx VEC_Add
+ bl VEC_Add
pop {r3-r5, pc}
thumb_func_start FUN_0201EF90
@@ -53489,7 +53489,7 @@ FUN_0201F318: ; 0x0201F318
bl ErrorHandling
_0201F324:
add r0, sp, #0x0
- blx MTX_Identity33_
+ bl MTX_Identity33_
add r0, r5, #0x0
add r0, #0xbc
ldr r4, [r0, #0x0]
@@ -53648,13 +53648,13 @@ FUN_0201F454: ; 0x0201F454
add r4, r1, #0x0
add r6, r2, #0x0
add r7, r3, #0x0
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
str r0, [sp, #0x8]
add r0, r5, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
str r0, [sp, #0x4]
add r0, r5, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
str r0, [sp, #0x0]
ldr r0, [sp, #0x8]
cmp r0, #0x0
@@ -53722,9 +53722,9 @@ FUN_0201F4EC: ; 0x0201F4EC
push {r3-r5, lr}
add r5, r0, #0x0
add r4, r3, #0x0
- blx FUN_020B7CF0
+ bl FUN_020B7CF0
add r0, r5, #0x0
- blx FUN_020B7C58
+ bl FUN_020B7C58
str r0, [r4, #0x0]
pop {r3-r5, pc}
@@ -53735,14 +53735,14 @@ FUN_0201F500: ; 0x0201F500
ldr r1, [r2, #0x0]
ldr r2, [r3, #0x0]
add r5, r0, #0x0
- blx FUN_020B7DFC
+ bl FUN_020B7DFC
ldr r1, [sp, #0x10]
add r0, r5, #0x0
ldr r1, [r1, #0x0]
- blx FUN_020B7CDC
+ bl FUN_020B7CDC
add r0, r4, #0x0
add r1, r5, #0x0
- blx FUN_020B7790
+ bl FUN_020B7790
pop {r3-r5, pc}
.balign 4
@@ -53792,22 +53792,22 @@ _0201F568:
mov r0, #0x0
pop {r3-r7, pc}
_0201F56E:
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
str r0, [sp, #0x0]
add r0, r4, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
str r0, [sp, #0x4]
add r0, r4, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
add r4, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
add r6, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
add r7, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
ldr r1, [sp, #0x0]
cmp r1, r6
bne _0201F5AA
@@ -53859,7 +53859,7 @@ FUN_0201F5D4: ; 0x0201F5D4
add r0, r5, #0x0
ldr r1, [r5, #0x7c]
add r0, #0x24
- blx FUN_020B80B4
+ bl FUN_020B80B4
add r0, r5, #0x0
add r0, #0xa8
ldrb r0, [r0, #0x0]
@@ -53961,7 +53961,7 @@ FUN_0201F69C: ; 0x0201F69C
add r0, r5, #0x0
ldr r1, [r5, #0x7c]
add r0, #0x24
- blx FUN_020B80B4
+ bl FUN_020B80B4
add r0, r4, #0x0
bl FUN_0201FBCC
add r5, #0x84
@@ -54681,7 +54681,7 @@ FUN_0201FB9C: ; 0x0201FB9C
add r5, r2, #0x0
bl FUN_0201FC90
add r7, r0, #0x0
- blx FUN_020BC13C
+ bl FUN_020BC13C
add r4, r0, #0x0
ldrh r0, [r4, #0xe]
add r0, r4, r0
@@ -54691,7 +54691,7 @@ FUN_0201FB9C: ; 0x0201FB9C
cmp r5, #0x0
beq _0201FBC6
add r0, r7, #0x0
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
str r0, [r5, #0x0]
_0201FBC6:
add r0, r4, #0x0
@@ -54803,7 +54803,7 @@ FUN_0201FC70: ; 0x0201FC70
sub sp, #0xc
add r4, r0, #0x0
ldr r0, [r4, #0x78]
- blx FUN_020B772C
+ bl FUN_020B772C
add r4, #0x80
ldr r0, [r4, #0x0]
add r1, sp, #0x4
@@ -54907,7 +54907,7 @@ _0201FD0C:
ldr r0, [r4, r1]
add r1, r1, #0x4
add r1, r4, r1
- blx thunk_FUN_020afda0_2
+ bl thunk_FUN_020afda0_2
mov r0, #0x12
mov r1, #0x1
lsl r0, r0, #0x4
@@ -55078,13 +55078,13 @@ FUN_0201FE6C: ; 0x0201FE6C
mov r1, #0x0
lsl r2, r2, #0x2
str r1, [r4, #0x3c]
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
add r0, #0xb4
- blx FUN_020B1A24
+ bl FUN_020B1A24
add r0, r4, #0x0
add r0, #0xd8
- blx FUN_020B19DC
+ bl FUN_020B19DC
mov r0, #0x0
str r0, [r4, #0x30]
pop {r4, pc}
@@ -55151,7 +55151,7 @@ _0201FEA6:
add r1, r4, #0x0
add r1, #0x26
ldrb r1, [r1, #0x0]
- blx FUN_020B502C
+ bl FUN_020B502C
add r0, r4, #0x0
add r0, #0x27
ldrb r2, [r0, #0x0]
@@ -55163,7 +55163,7 @@ _0201FEA6:
mov r3, #0x2
and r1, r2
and r2, r3
- blx FUN_020B4F38
+ bl FUN_020B4F38
add r0, r4, #0x0
mov r2, #0x1
add r0, #0x34
@@ -55272,13 +55272,13 @@ _0201FFE4:
ldr r1, [r1, #0x0]
add r0, #0xb4
add r4, #0x40
- blx FUN_020B1A14
+ bl FUN_020B1A14
mov r1, #0x0
mvn r1, r1
cmp r0, r1
beq _0202000E
ldr r0, [r4, #0x5c]
- blx FUN_020B4358
+ bl FUN_020B4358
_0202000E:
add r0, r5, #0x0
add r0, #0xec
@@ -55488,11 +55488,11 @@ _0202014A:
lsl r1, r1, #0x10
ldr r0, [r4, #0x4]
lsr r1, r1, #0x10
- blx FUN_020AFC04
+ bl FUN_020AFC04
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x8
- blx FUN_020B1EE4
+ bl FUN_020B1EE4
mov r0, #0x1
str r0, [r4, #0x10]
pop {r4, pc}
@@ -55501,11 +55501,11 @@ _02020168:
add r4, #0x40
ldr r0, [r4, #0x6c]
add r1, r3, #0x0
- blx FUN_020AFC04
+ bl FUN_020AFC04
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x8
- blx FUN_020B242C
+ bl FUN_020B242C
mov r0, #0x1
str r0, [r4, #0x10]
pop {r4, pc}
@@ -55538,7 +55538,7 @@ _020201A8:
add r5, #0x40
add r0, r5, #0x0
add r0, #0x8
- blx FUN_020B0448
+ bl FUN_020B0448
mov r0, #0x1
str r0, [r5, #0x10]
add r0, r4, #0x0
@@ -55550,7 +55550,7 @@ _020201C2:
add r5, #0x40
add r0, r5, #0x0
add r0, #0x8
- blx FUN_020B0448
+ bl FUN_020B0448
mov r0, #0x1
str r0, [r5, #0x10]
add r0, r4, #0x0
@@ -55578,12 +55578,12 @@ FUN_020201E4: ; 0x020201E4
_020201F4:
add r0, #0x40
add r0, #0x8
- blx FUN_020B1EC4
+ bl FUN_020B1EC4
pop {r3, pc}
_020201FE:
add r0, #0x40
add r0, #0x8
- blx FUN_020B224C
+ bl FUN_020B224C
pop {r3, pc}
thumb_func_start FUN_02020208
@@ -55599,12 +55599,12 @@ FUN_02020208: ; 0x02020208
_02020218:
add r0, #0x40
add r0, #0x8
- blx FUN_020B1EA4
+ bl FUN_020B1EA4
pop {r3, pc}
_02020222:
add r0, #0x40
add r0, #0x8
- blx FUN_020B2194
+ bl FUN_020B2194
pop {r3, pc}
thumb_func_start FUN_0202022C
@@ -55878,16 +55878,16 @@ FUN_020203CC: ; 0x020203CC
lsl r0, r0, #0x6
add r1, r4, #0x0
lsl r2, r2, #0xa
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
mov r1, #0x1
add r0, r4, #0x0
lsl r1, r1, #0xa
- blx DC_FlushRange
+ bl DC_FlushRange
mov r2, #0x1
add r0, r4, #0x0
mov r1, #0x0
lsl r2, r2, #0xa
- blx GX_LoadOAM
+ bl GX_LoadOAM
add r0, r4, #0x0
bl FUN_02016A18
pop {r4, pc}
@@ -55904,12 +55904,12 @@ FUN_02020404: ; 0x02020404
lsl r0, r0, #0x6
add r1, r4, #0x0
lsl r2, r2, #0xa
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
mov r2, #0x1
add r0, r4, #0x0
mov r1, #0x0
lsl r2, r2, #0xa
- blx GXS_LoadOAM
+ bl GXS_LoadOAM
add r0, r4, #0x0
bl FUN_02016A18
pop {r4, pc}
@@ -56048,12 +56048,12 @@ FUN_0202050C: ; 0x0202050C
add r4, #0x40
ldr r0, [r4, #0x4]
mov r1, #0x0
- blx FUN_020AFC04
+ bl FUN_020AFC04
add r4, #0x8
add r1, r0, #0x0
ldr r2, [r5, #0x40]
add r0, r4, #0x0
- blx FUN_020B1F80
+ bl FUN_020B1F80
pop {r3-r5, pc}
.balign 4
@@ -56065,22 +56065,22 @@ FUN_0202052C: ; 0x0202052C
add r4, r6, #0x0
add r4, #0x40
add r5, r0, #0x0
- blx FUN_020B43A4
+ bl FUN_020B43A4
str r0, [r4, #0x5c]
ldr r0, [r4, #0x4]
mov r1, #0x0
ldr r5, [r5, #0x4]
- blx FUN_020AFC04
+ bl FUN_020AFC04
str r0, [sp, #0x18]
add r0, r6, #0x0
add r0, #0xb4
mov r1, #0x1
- blx FUN_020B1A14
+ bl FUN_020B1A14
add r7, r0, #0x0
add r0, r6, #0x0
add r0, #0xb4
mov r1, #0x2
- blx FUN_020B1A14
+ bl FUN_020B1A14
mov r1, #0x0
mvn r1, r1
str r1, [sp, #0x0]
@@ -56097,7 +56097,7 @@ FUN_0202052C: ; 0x0202052C
ldr r2, [r6, #0x40]
ldr r3, [r4, #0x5c]
add r0, #0x8
- blx FUN_020B1EFC
+ bl FUN_020B1EFC
add sp, #0x1c
pop {r4-r7, pc}
@@ -56111,10 +56111,10 @@ FUN_02020588: ; 0x02020588
ldr r0, [r4, #0x6c]
add r7, r1, #0x0
mov r1, #0x0
- blx FUN_020AFC04
+ bl FUN_020AFC04
str r0, [sp, #0xc]
ldr r0, [r4, #0x68]
- blx FUN_020B23D8
+ bl FUN_020B23D8
add r6, r0, #0x0
mov r1, #0x28
add r0, r7, #0x0
@@ -56137,11 +56137,11 @@ FUN_02020588: ; 0x02020588
ldr r1, [r4, #0x70]
ldr r2, [r4, #0x74]
add r0, #0x8
- blx FUN_020B20C8
+ bl FUN_020B20C8
add r4, #0x8
ldr r1, [sp, #0xc]
add r0, r4, #0x0
- blx FUN_020B242C
+ bl FUN_020B242C
add sp, #0x10
pop {r3-r7, pc}
.balign 4
@@ -56166,9 +56166,9 @@ _02020600:
_02020602:
cmp r4, #0x0
beq _02020612
- blx FUN_020B19C4
+ bl FUN_020B19C4
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
pop {r4, pc}
_02020612:
mov r0, #0x0
@@ -56194,19 +56194,19 @@ FUN_02020618: ; 0x02020618
ldr r0, [r5, r0]
add r1, #0xb4
add r2, #0xd8
- blx thunk_FUN_020b5040
+ bl thunk_FUN_020b5040
mov r0, #0x45
lsl r0, r0, #0x2
ldr r0, [r5, r0]
- blx FUN_020B326C
- blx FUN_020B2B58
+ bl FUN_020B326C
+ bl FUN_020B2B58
add r1, r4, #0x0
mov r0, #0x45
add r1, #0x26
lsl r0, r0, #0x2
ldrb r1, [r1, #0x0]
ldr r0, [r5, r0]
- blx FUN_020B502C
+ bl FUN_020B502C
add r0, r4, #0x0
add r0, #0x26
ldrb r0, [r0, #0x0]
@@ -56222,7 +56222,7 @@ FUN_02020618: ; 0x02020618
mov r3, #0x2
and r1, r2
and r2, r3
- blx FUN_020B4F38
+ bl FUN_020B4F38
b _0202068E
_02020680:
mov r0, #0x45
@@ -56230,12 +56230,12 @@ _02020680:
mov r1, #0x0
ldr r0, [r5, r0]
add r2, r1, #0x0
- blx FUN_020B4F38
+ bl FUN_020B4F38
_0202068E:
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x4]
ldr r2, [sp, #0x8]
- blx FUN_020B2A08
+ bl FUN_020B2A08
add r0, r4, #0x0
add r0, #0x26
ldrb r0, [r0, #0x0]
@@ -56244,11 +56244,11 @@ _0202068E:
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
ldr r2, [r4, #0x14]
- blx FUN_020B2A08
+ bl FUN_020B2A08
ldr r0, [r4, #0x18]
ldr r1, [r4, #0x1c]
ldr r2, [r4, #0x20]
- blx FUN_020B28B4
+ bl FUN_020B28B4
ldrh r0, [r4, #0x24]
ldr r2, _02020770 ; =0x020FFA38
asr r0, r0, #0x4
@@ -56258,14 +56258,14 @@ _0202068E:
lsl r1, r1, #0x1
ldrsh r0, [r2, r0]
ldrsh r1, [r2, r1]
- blx FUN_020B2794
+ bl FUN_020B2794
ldr r0, [r4, #0xc]
ldr r1, [r4, #0x10]
ldr r2, [r4, #0x14]
neg r0, r0
neg r1, r1
neg r2, r2
- blx FUN_020B2A08
+ bl FUN_020B2A08
_020206DC:
add r0, r4, #0x0
add r0, #0x28
@@ -56328,16 +56328,16 @@ _0202074E:
add r4, #0x40
add r4, #0x8
add r0, r4, #0x0
- blx FUN_020B317C
+ bl FUN_020B317C
b _02020764
_0202075A:
add r4, #0x40
add r4, #0x8
add r0, r4, #0x0
- blx FUN_020B2D9C
+ bl FUN_020B2D9C
_02020764:
- blx FUN_020B2B08
- blx FUN_020B31F0
+ bl FUN_020B2B08
+ bl FUN_020B31F0
add sp, #0xc
pop {r3-r6, pc}
.balign 4
@@ -56895,9 +56895,9 @@ FUN_02020AFC: ; 0x02020AFC
strh r0, [r1, #0x0]
ldr r1, _02020B2C ; =FUN_02020B30
mov r0, #0x40
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x40
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
pop {r3, pc}
.balign 4
_02020B24: .word 0x021C59B0
@@ -56946,7 +56946,7 @@ _02020B7C: .word FUN_02020B30
FUN_02020B80: ; 0x02020B80
push {r4-r5, lr}
sub sp, #0xc
- blx OS_DisableInterrupts
+ bl OS_DisableInterrupts
ldr r1, _02020BE4 ; =0x0400010C
add r3, sp, #0x0
ldrh r1, [r1, #0x0]
@@ -56978,7 +56978,7 @@ FUN_02020B80: ; 0x02020B80
str r2, [sp, #0x4]
str r3, [sp, #0x8]
_02020BC4:
- blx OS_RestoreInterrupts
+ bl OS_RestoreInterrupts
ldr r2, [sp, #0x4]
ldr r1, [sp, #0x8]
lsr r0, r2, #0x10
@@ -57015,7 +57015,7 @@ FUN_02020BFC: ; 0x02020BFC
ldr r2, _02020C10 ; =0x000082EA
lsl r0, r0, #0x6
mov r3, #0x0
- blx _ll_udiv
+ bl _ll_udiv
pop {r3, pc}
.balign 4
_02020C10: .word 0x000082EA
@@ -57029,7 +57029,7 @@ FUN_02020C14: ; 0x02020C14
ldr r2, _02020C28 ; =0x01FF6210
lsl r0, r0, #0x6
mov r3, #0x0
- blx _ll_udiv
+ bl _ll_udiv
pop {r3, pc}
.balign 4
_02020C28: .word 0x01FF6210
@@ -57040,7 +57040,7 @@ ErrorHandling: ; 0x02020C2C
bl FUN_02031810
cmp r0, #0x0
beq _02020C42
- blx OS_GetProcMode
+ bl OS_GetProcMode
cmp r0, #0x12
beq _02020C42
bl FUN_0208A9B8
@@ -57881,7 +57881,7 @@ FUN_02021220: ; 0x02021220
push {r3, lr}
ldr r0, [r0, #0x0]
bl FUN_02020E0C
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
pop {r3, pc}
.balign 4
@@ -57897,7 +57897,7 @@ FUN_02021230: ; 0x02021230
_02021240:
ldr r0, [r0, #0x10]
_02021242:
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
pop {r3, pc}
thumb_func_start FUN_02021248
@@ -57908,13 +57908,13 @@ FUN_02021248: ; 0x02021248
str r1, [sp, #0x0]
str r2, [sp, #0x4]
str r3, [sp, #0x8]
- blx FUN_020B7E1C
+ bl FUN_020B7E1C
add r7, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7E10
+ bl FUN_020B7E10
add r6, r0, #0x0
add r0, r5, #0x0
- blx FUN_020B7CE4
+ bl FUN_020B7CE4
add r4, r0, #0x0
cmp r7, #0x0
beq _0202127E
@@ -57969,13 +57969,13 @@ FUN_020212B8: ; 0x020212B8
bl FUN_020212E4
ldr r1, [r4, #0x4]
add r0, r4, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
add r0, r4, #0x0
mov r1, #0x1
- blx FUN_020B7D28
+ bl FUN_020B7D28
add r0, r4, #0x0
mov r1, #0x1
- blx FUN_020B7C78
+ bl FUN_020B7C78
pop {r4, pc}
.balign 4
@@ -57984,10 +57984,10 @@ FUN_020212E4: ; 0x020212E4
push {r3-r5, lr}
add r5, r0, #0x0
add r4, r3, #0x0
- blx FUN_020B7DFC
+ bl FUN_020B7DFC
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_020B7CDC
+ bl FUN_020B7CDC
pop {r3-r5, pc}
thumb_func_start FUN_020212F8
@@ -57997,9 +57997,9 @@ FUN_020212F8: ; 0x020212F8
add r4, r0, #0x0
add r1, sp, #0x4
add r2, sp, #0x0
- blx FUN_020B7CF0
+ bl FUN_020B7CF0
add r0, r4, #0x0
- blx FUN_020B7C58
+ bl FUN_020B7C58
add sp, #0x8
pop {r4, pc}
@@ -58016,7 +58016,7 @@ FUN_02021310: ; 0x02021310
add r1, r6, #0x0
add r2, r5, #0x0
add r4, r0, #0x0
- blx memcpy
+ bl memcpy
add r0, r4, #0x0
pop {r4-r6, pc}
.balign 4
@@ -58025,7 +58025,7 @@ FUN_02021310: ; 0x02021310
FUN_02021334: ; 0x02021334
push {r3-r5, lr}
add r5, r0, #0x0
- blx FUN_020BC0FC
+ bl FUN_020BC0FC
add r4, r0, #0x0
bne _02021344
bl ErrorHandling
@@ -58040,7 +58040,7 @@ FUN_0202134C: ; 0x0202134C
push {r3-r5, lr}
add r5, r0, #0x0
add r4, r1, #0x0
- blx FUN_020B33A0
+ bl FUN_020B33A0
add r5, #0x80
str r4, [r5, #0x0]
pop {r3-r5, pc}
@@ -58052,7 +58052,7 @@ FUN_0202135C: ; 0x0202135C
add r4, r1, #0x0
add r6, r2, #0x0
add r7, r3, #0x0
- blx FUN_020B3334
+ bl FUN_020B3334
add r2, r5, #0x0
ldmia r4!, {r0-r1}
stmia r2!, {r0-r1}
@@ -58068,7 +58068,7 @@ FUN_0202135C: ; 0x0202135C
cmp r0, #0x0
beq _0202138C
add r1, r5, #0x0
- blx FUN_020B3390
+ bl FUN_020B3390
_0202138C:
pop {r3-r7, pc}
.balign 4
@@ -58150,14 +58150,14 @@ _02021400:
ldr r2, [sp, #0x28]
ldr r3, [sp, #0x2c]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
add r7, r1, #0x0
str r0, [sp, #0x30]
ldr r1, [sp, #0x24]
ldr r2, [sp, #0x1c]
ldr r3, [sp, #0x20]
add r0, r4, #0x0
- blx _ll_mul
+ bl _ll_mul
add r2, r0, #0x0
add r3, r1, #0x0
mov r0, #0x2
@@ -58187,14 +58187,14 @@ _02021400:
str r0, [sp, #0x34]
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x34]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x38]
add r4, r1, #0x0
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x34]
ldr r2, [sp, #0x1c]
ldr r3, [sp, #0x20]
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
ldr r3, [sp, #0x38]
lsl r2, r2, #0xa
@@ -58230,14 +58230,14 @@ _02021400:
ldr r0, [sp, #0xc]
ldr r2, [sp, #0x48]
ldr r3, [sp, #0x4c]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x50]
add r5, r1, #0x0
ldr r0, [sp, #0xc]
ldr r1, [sp, #0x44]
ldr r2, [sp, #0x3c]
ldr r3, [sp, #0x40]
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
ldr r3, [sp, #0x50]
lsl r2, r2, #0xa
@@ -58265,14 +58265,14 @@ _02021400:
ldr r1, [sp, #0x54]
ldr r2, [sp, #0x48]
ldr r3, [sp, #0x4c]
- blx _ll_mul
+ bl _ll_mul
str r0, [sp, #0x58]
str r1, [sp, #0x4]
ldr r0, [sp, #0x8]
ldr r1, [sp, #0x54]
ldr r2, [sp, #0x3c]
ldr r3, [sp, #0x40]
- blx _ll_mul
+ bl _ll_mul
mov r12, r0
add r2, r1, #0x0
mov r0, #0x2
@@ -59038,7 +59038,7 @@ _02021AA2:
add r0, #0x8
add r1, #0x8
lsl r2, r2, #0x1
- blx memcpy
+ bl memcpy
ldrh r0, [r4, #0x2]
strh r0, [r5, #0x2]
pop {r3-r5, pc}
@@ -59150,7 +59150,7 @@ _02021B74:
_02021B80:
add r0, r6, #0x0
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x10
lsr r1, r0, #0x10
add r0, r4, #0x0
@@ -59220,7 +59220,7 @@ _02021BEC:
_02021BFA:
add r0, r4, #0x0
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r4, r0, #0x0
bne _02021B80
_02021C06:
@@ -59301,7 +59301,7 @@ _02021C98:
add r1, r2, #0x0
add r2, r7, #0x0
add r3, r5, #0x0
- blx _ll_mul
+ bl _ll_mul
add r2, r1, #0x0
ldr r1, [sp, #0x8]
add r0, r1, r0
@@ -59313,7 +59313,7 @@ _02021C98:
add r1, r5, #0x0
mov r2, #0xa
mov r3, #0x0
- blx _ll_mul
+ bl _ll_mul
add r7, r0, #0x0
ldr r0, [sp, #0x4]
add r5, r1, #0x0
@@ -59589,7 +59589,7 @@ _02021EA8:
add r0, #0x8
add r1, r7, #0x0
add r2, r6, #0x0
- blx memcpy
+ bl memcpy
mov r2, #0x0
cmp r4, #0x0
bls _02021ED4
@@ -59643,7 +59643,7 @@ _02021F0C:
add r0, r6, #0x0
add r1, r5, #0x0
lsl r2, r2, #0x1
- blx memcpy
+ bl memcpy
pop {r4-r6, pc}
_02021F22:
bl ErrorHandling
@@ -59710,7 +59710,7 @@ _02021F7A:
add r2, r2, #0x1
add r1, #0x8
lsl r2, r2, #0x1
- blx memcpy
+ bl memcpy
ldrh r1, [r5, #0x2]
ldrh r0, [r4, #0x2]
add r0, r1, r0
@@ -60242,15 +60242,15 @@ FUN_02022318: ; 0x02022318
bl FUN_02016998
add r4, r0, #0x0
str r6, [r4, #0x0]
- blx FUN_020BB7F4
- blx G3X_InitMtxStack
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
mov r1, #0x2
ldr r0, _020223B8 ; =0x04000540
cmp r7, #0x0
str r1, [r0, #0x0]
bne _02022364
lsl r0, r5, #0x7
- blx FUN_020AFA28
+ bl FUN_020AFA28
add r6, r0, #0x0
ldr r0, [r4, #0x0]
add r1, r6, #0x0
@@ -60262,20 +60262,20 @@ FUN_02022318: ; 0x02022318
lsl r0, r5, #0x11
mov r1, #0x0
add r3, r6, #0x0
- blx FUN_020AF9C4
+ bl FUN_020AF9C4
b _0202236E
_02022364:
lsl r0, r5, #0x10
lsr r0, r0, #0x10
mov r1, #0x1
- blx FUN_020AEB70
+ bl FUN_020AEB70
_0202236E:
ldr r0, [sp, #0x4]
cmp r0, #0x0
bne _02022398
ldr r0, [sp, #0x20]
lsl r0, r0, #0x8
- blx FUN_020AFBFC
+ bl FUN_020AFBFC
add r5, r0, #0x0
ldr r0, [r4, #0x0]
add r1, r5, #0x0
@@ -60286,14 +60286,14 @@ _0202236E:
lsl r0, r0, #0xd
add r2, r5, #0x0
mov r3, #0x1
- blx FUN_020AFBA8
+ bl FUN_020AFBA8
b _020223A4
_02022398:
ldr r0, [sp, #0x20]
mov r1, #0x1
lsl r0, r0, #0x1d
lsr r0, r0, #0x10
- blx FUN_020AEB70
+ bl FUN_020AEB70
_020223A4:
ldr r0, [sp, #0x24]
cmp r0, #0x0
@@ -60359,13 +60359,13 @@ FUN_020223D4: ; 0x020223D4
add r1, r0, #0x0
add r2, r0, #0x0
add r3, r0, #0x0
- blx G3X_SetFog
+ bl G3X_SetFog
mov r0, #0x0
ldr r2, _02022444 ; =0x00007FFF
add r1, r0, #0x0
mov r3, #0x3f
str r0, [sp, #0x0]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _02022448 ; =0xBFFF0000
ldr r0, _0202244C ; =0x04000580
str r1, [r0, #0x0]
@@ -60381,34 +60381,34 @@ _0202244C: .word 0x04000580
thumb_func_start FUN_02022450
FUN_02022450: ; 0x02022450
push {r3, lr}
- blx FS_IsAvailable
+ bl FS_IsAvailable
cmp r0, #0x0
bne _02022460
- blx OS_Terminate
+ bl OS_Terminate
pop {r3, pc}
_02022460:
ldr r0, _020224BC ; =0x027FF00C
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _0202248A
- blx CARD_Init
+ bl CARD_Init
mov r2, #0x16
ldr r0, _020224C0 ; =0x027FFE00
ldr r1, _020224C4 ; =0x027FF000
lsl r2, r2, #0x4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r2, #0x16
ldr r0, _020224C0 ; =0x027FFE00
ldr r1, _020224C8 ; =0x027FFA80
lsl r2, r2, #0x4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r1, _020224CC ; =0x4A414441
ldr r0, _020224BC ; =0x027FF00C
str r1, [r0, #0x0]
_0202248A:
ldr r0, _020224D0 ; =0x020EE6D4
mov r1, #0x3
- blx FS_FindArchive
+ bl FS_FindArchive
ldr r1, _020224C4 ; =0x027FF000
ldr r2, [r1, #0x48]
str r2, [r0, #0x2c]
@@ -60427,7 +60427,7 @@ _0202248A:
cmp r1, r0
beq _020224B8
_020224B4:
- blx OS_Terminate
+ bl OS_Terminate
_020224B8:
pop {r3, pc}
nop
@@ -60445,17 +60445,17 @@ FUN_020224D8: ; 0x020224D8
sub sp, #0x48
add r4, r0, #0x0
add r0, sp, #0x0
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x0
add r1, r4, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
cmp r0, #0x0
beq _020224FC
ldr r1, [sp, #0x24]
ldr r0, _02022500 ; =0x027FFC2C
str r1, [r0, #0x0]
mov r0, #0x0
- blx OS_ResetSystem
+ bl OS_ResetSystem
_020224FC:
add sp, #0x48
pop {r4, pc}
@@ -60521,7 +60521,7 @@ FUN_0202254C: ; 0x0202254C
ldr r2, _020225E0 ; =0x000204A8
mov r0, #0x0
add r1, r4, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, _020225E4 ; =0x021C59C8
str r4, [r0, #0x0]
bl FUN_02023570
@@ -60534,7 +60534,7 @@ FUN_0202254C: ; 0x0202254C
add r0, r4, #0x0
ldr r1, _020225E8 ; =0x00001021
add r0, #0x14
- blx MATHi_CRC16InitTable
+ bl MATHi_CRC16InitTable
ldr r0, _020225EC ; =0x00020224
add r0, r4, r0
bl FUN_020230E4
@@ -60547,7 +60547,7 @@ FUN_0202254C: ; 0x0202254C
mov r0, #0x0
add r1, r4, r1
mov r2, #0x8
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
bl FUN_02022AD8
str r0, [r4, #0x10]
@@ -60686,7 +60686,7 @@ _0202267A:
mvn r0, r0
add r1, r6, #0x0
lsl r2, r2, #0xc
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r4, #0x0
mov r7, #0x1
add r5, r4, #0x0
@@ -61984,18 +61984,18 @@ _02023006:
add r0, r0, #0x4
cmp r3, #0x2
blt _02023006
- blx CARD_TryWaitBackupAsync
+ bl CARD_TryWaitBackupAsync
cmp r0, #0x0
bne _02023034
- blx CARD_CancelBackupAsync
+ bl CARD_CancelBackupAsync
ldr r0, [r4, #0x10]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
ldr r0, [r4, #0x10]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
+ bl OS_ReleaseLockID
_02023034:
mov r0, #0x1
bl FUN_02016454
@@ -62042,7 +62042,7 @@ FUN_02023074: ; 0x02023074
add r0, sp, #0x0
mov r1, #0xff
mov r2, #0x14
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
add r1, r5, #0x0
bl FUN_020228A4
@@ -62243,7 +62243,7 @@ FUN_020231F4: ; 0x020231F4
add r1, r6, #0x0
lsl r2, r2, #0x10
ldr r4, _02023240 ; =0x020EE700
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, _02023244 ; =0x020EE6DC
mov r7, #0x0
ldr r0, [r0, #0x0]
@@ -62257,7 +62257,7 @@ _02023216:
ldr r1, [sp, #0x4]
mov r0, #0x0
add r1, r6, r1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [sp, #0x4]
ldr r1, [r4, #0xc]
add r0, r6, r0
@@ -62290,7 +62290,7 @@ FUN_02023248: ; 0x02023248
add r3, #0xe
strh r2, [r4, #0xc]
add r2, r3, #0x0
- blx MATH_CalcCRC16CCITT
+ bl MATH_CalcCRC16CCITT
strh r0, [r4, #0xe]
pop {r3-r5, pc}
nop
@@ -62323,7 +62323,7 @@ _02023298:
add r3, #0xe
add r0, #0x14
add r2, r3, #0x0
- blx MATH_CalcCRC16CCITT
+ bl MATH_CalcCRC16CCITT
ldrh r1, [r4, #0xe]
cmp r1, r0
bne _020232AC
@@ -62670,7 +62670,7 @@ _0202356C: .word 0x000204A0
thumb_func_start FUN_02023570
FUN_02023570: ; 0x02023570
push {r3-r5, lr}
- blx OS_GetLockID
+ bl OS_GetLockID
add r4, r0, #0x0
mov r0, #0x2
mvn r0, r0
@@ -62680,16 +62680,16 @@ FUN_02023570: ; 0x02023570
_02023584:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_LockBackup
+ bl CARD_LockBackup
ldr r0, _020235C8 ; =0x00001302
- blx CARD_IdentifyBackup
+ bl CARD_IdentifyBackup
cmp r0, #0x0
beq _0202359A
ldr r5, _020235C8 ; =0x00001302
b _020235AA
_0202359A:
ldr r0, _020235CC ; =0x00001202
- blx CARD_IdentifyBackup
+ bl CARD_IdentifyBackup
cmp r0, #0x0
beq _020235A8
ldr r5, _020235CC ; =0x00001202
@@ -62699,10 +62699,10 @@ _020235A8:
_020235AA:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
+ bl OS_ReleaseLockID
cmp r5, #0x0
beq _020235C2
mov r0, #0x1
@@ -62737,7 +62737,7 @@ FUN_020235EC: ; 0x020235EC
add r5, r0, #0x0
add r6, r1, #0x0
add r7, r2, #0x0
- blx OS_GetLockID
+ bl OS_GetLockID
add r4, r0, #0x0
mov r0, #0x2
mvn r0, r0
@@ -62747,7 +62747,7 @@ FUN_020235EC: ; 0x020235EC
_02023608:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_LockBackup
+ bl CARD_LockBackup
mov r3, #0x0
str r3, [sp, #0x0]
mov r1, #0x1
@@ -62759,15 +62759,15 @@ _02023608:
add r1, r6, #0x0
add r2, r7, #0x0
str r3, [sp, #0x10]
- blx CARDi_RequestStreamCommand
- blx CARD_WaitBackupAsync
+ bl CARDi_RequestStreamCommand
+ bl CARD_WaitBackupAsync
add r5, r0, #0x0
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
+ bl OS_ReleaseLockID
cmp r5, #0x0
bne _02023652
ldr r0, _02023658 ; =0x021C59C8
@@ -62798,7 +62798,7 @@ FUN_02023668: ; 0x02023668
add r5, r0, #0x0
add r6, r1, #0x0
add r7, r2, #0x0
- blx OS_GetLockID
+ bl OS_GetLockID
add r4, r0, #0x0
mov r0, #0x2
mvn r0, r0
@@ -62808,7 +62808,7 @@ FUN_02023668: ; 0x02023668
_02023684:
lsl r0, r4, #0x10
lsr r0, r0, #0x10
- blx CARD_LockBackup
+ bl CARD_LockBackup
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
@@ -62820,7 +62820,7 @@ _02023684:
mov r2, #0x4
add r3, r0, #0x0
str r0, [sp, #0x10]
- blx CARDi_RequestStreamCommand
+ bl CARDi_RequestStreamCommand
cmp r0, #0x0
bne _020236B2
add r0, r4, #0x0
@@ -62843,7 +62843,7 @@ _020236B2:
add r0, r6, #0x0
add r1, r5, #0x0
add r2, r7, #0x0
- blx CARDi_RequestStreamCommand
+ bl CARDi_RequestStreamCommand
add r0, r4, #0x0
add sp, #0x18
pop {r3-r7, pc}
@@ -62862,11 +62862,11 @@ FUN_020236E4: ; 0x020236E4
bne _02023738
lsl r0, r5, #0x10
lsr r0, r0, #0x10
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
lsl r0, r5, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
- blx CARD_GetResultCode
+ bl OS_ReleaseLockID
+ bl CARD_GetResultCode
cmp r0, #0x0
beq _02023714
cmp r0, #0x4
@@ -62907,10 +62907,10 @@ FUN_02023740: ; 0x02023740
lsl r0, r5, #0x10
lsr r0, r0, #0x10
add r4, r1, #0x0
- blx CARD_UnlockBackup
+ bl CARD_UnlockBackup
lsl r0, r5, #0x10
lsr r0, r0, #0x10
- blx OS_ReleaseLockID
+ bl OS_ReleaseLockID
ldr r0, _02023768 ; =0x021C59C8
ldr r0, [r0, #0x0]
bl FUN_02016A18
@@ -62933,7 +62933,7 @@ FUN_02023770: ; 0x02023770
mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x5c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r4, #0x10
add r0, r4, #0x0
bl FUN_02023840
@@ -62960,14 +62960,14 @@ FUN_020237A0: ; 0x020237A0
push {r4, lr}
sub sp, #0x50
add r4, r0, #0x0
- blx OS_GetOwnerRtcOffset
+ bl OS_GetOwnerRtcOffset
str r0, [r4, #0x0]
add r0, r4, #0x0
add r0, #0x8
str r1, [r4, #0x4]
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
add r0, sp, #0x0
- blx OS_GetOwnerInfo
+ bl OS_GetOwnerInfo
add r0, sp, #0x0
ldrb r1, [r0, #0x2]
strb r1, [r4, #0xe]
@@ -62983,7 +62983,7 @@ FUN_020237CC: ; 0x020237CC
sub sp, #0x8
add r4, r0, #0x0
add r0, sp, #0x0
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
mov r2, #0x0
add r3, sp, #0x0
_020237DC:
@@ -63009,7 +63009,7 @@ _020237EC:
FUN_020237FC: ; 0x020237FC
push {r4, lr}
add r4, r0, #0x0
- blx OS_GetOwnerRtcOffset
+ bl OS_GetOwnerRtcOffset
ldr r3, [r4, #0x0]
ldr r2, [r4, #0x4]
eor r0, r3
@@ -63072,12 +63072,12 @@ FUN_02023840: ; 0x02023840
add r1, #0x14
bl FUN_0201265C
add r0, r4, #0x4
- blx RTC_ConvertDateToDay
+ bl RTC_ConvertDateToDay
add r1, r4, #0x0
str r0, [r4, #0x20]
add r0, r4, #0x4
add r1, #0x14
- blx RTC_ConvertDateTimeToSecond
+ bl RTC_ConvertDateTimeToSecond
str r0, [r4, #0x24]
str r1, [r4, #0x28]
mov r0, #0x0
@@ -63132,7 +63132,7 @@ FUN_020238A4: ; 0x020238A4
add r1, #0x14
bl FUN_0201265C
add r0, r4, #0x4
- blx RTC_ConvertDateToDay
+ bl RTC_ConvertDateToDay
str r0, [r4, #0x20]
pop {r4, pc}
.balign 4
@@ -63149,7 +63149,7 @@ FUN_020238C8: ; 0x020238C8
mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
bl FUN_02024F50
add r0, r4, #0x4
@@ -63224,7 +63224,7 @@ FUN_02023948: ; 0x02023948
mov r1, #0x0
mov r2, #0x20
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0x2
strb r0, [r4, #0x19]
pop {r4, pc}
@@ -63738,7 +63738,7 @@ FUN_02023C48: ; 0x02023C48
add r4, r0, #0x0
mov r1, #0x0
lsl r2, r2, #0x4
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
bl FUN_020669A0
add r0, r4, #0x0
@@ -64792,7 +64792,7 @@ FUN_02024378: ; 0x02024378
mov r1, #0x0
lsl r2, r2, #0x2
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _020243C0 ; =0xBEEFCAFE
mov r1, #0x0
str r0, [r4, #0x0]
@@ -64802,7 +64802,7 @@ FUN_02024378: ; 0x02024378
sub r0, #0x2d
add r0, r4, r0
mov r1, #0xff
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r1, #0xff
add r0, r1, #0x0
add r0, #0x9
@@ -66285,7 +66285,7 @@ FUN_02024E6C: ; 0x02024E6C
ldr r2, _02024EA4 ; =0x0000074C
mov r0, #0x0
add r1, r4, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
bl FUN_020250A4
mov r0, #0x7
@@ -66296,12 +66296,12 @@ FUN_02024E6C: ; 0x02024E6C
ldr r0, _02024EAC ; =0x0000FFFF
add r1, r4, r1
mov r2, #0x8
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r1, _02024EB0 ; =0x00000734
ldr r0, _02024EAC ; =0x0000FFFF
add r1, r4, r1
mov r2, #0xb
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
pop {r4, pc}
.balign 4
_02024EA4: .word 0x0000074C
@@ -66410,7 +66410,7 @@ FUN_02024F50: ; 0x02024F50
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldrh r1, [r4, #0x0]
mov r0, #0xf
bic r1, r0
@@ -66625,7 +66625,7 @@ FUN_020250A4: ; 0x020250A4
mov r1, #0x0
lsl r2, r2, #0x8
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r1, #0x0
add r0, r1, #0x0
_020250B6:
@@ -67062,12 +67062,12 @@ FUN_02025374: ; 0x02025374
mov r1, #0x3c
str r0, [sp, #0x0]
add r0, r7, r0
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0x0
ldr r0, [sp, #0x0]
mov r1, #0x3c
add r0, r7, r0
- blx _s32_div_f
+ bl _s32_div_f
strh r1, [r5, #0x4]
cmp r4, #0x0
beq _020253DE
@@ -67085,7 +67085,7 @@ _020253BA:
sub r0, r6, #0x1
add r0, r1, r0
add r1, r6, #0x0
- blx _s32_div_f
+ bl _s32_div_f
sub r4, r4, r0
mov r0, #0x0
strb r0, [r5, #0xa]
@@ -67248,7 +67248,7 @@ _020254D6:
add r0, r5, #0x0
add r1, r7, #0x0
mov r2, #0x88
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
strh r6, [r5, #0x0]
add r4, r4, #0x1
add r5, #0x88
@@ -67414,7 +67414,7 @@ _020255F8:
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x10]
lsl r2, r2, #0x6
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x10]
bl FUN_02016A18
add sp, #0x2c
@@ -67936,7 +67936,7 @@ FUN_02025964: ; 0x02025964
mov r1, #0x0
mov r2, #0x3c
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
pop {r4, pc}
.balign 4
@@ -67972,7 +67972,7 @@ FUN_0202597C: ; 0x0202597C
ldr r2, _020259DC ; =0x000009B4
add r0, r4, #0x0
add r1, r7, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
add r0, #0x94
mov r1, #0x9b
@@ -68380,7 +68380,7 @@ _02025C72:
lsl r1, r1, #0x4
add r1, r2, r1
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r6, #0x0
bl FUN_020239BC
ldr r1, [sp, #0x0]
@@ -68620,7 +68620,7 @@ FUN_02025E20: ; 0x02025E20
add r0, r5, r0
add r1, sp, #0xc
mov r2, #0xc8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r2, [sp, #0x8]
add r1, sp, #0xc
add r0, r4, #0x0
@@ -68897,7 +68897,7 @@ FUN_02025FFC: ; 0x02025FFC
add r1, sp, #0x8
mov r2, #0x28
mov r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r2, [sp, #0x4]
add r1, sp, #0x8
add r0, r4, #0x0
@@ -69039,12 +69039,12 @@ FUN_020260EC: ; 0x020260EC
add r1, sp, #0x34
mov r2, #0x28
mov r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _02026168 ; =0x00000978
add r1, sp, #0xc
add r0, r7, r0
mov r2, #0x28
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r3, [sp, #0x0]
add r1, sp, #0x34
add r3, r1, r3
@@ -69182,7 +69182,7 @@ FUN_020261EC: ; 0x020261EC
add r1, sp, #0x8
mov r2, #0x28
mov r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r2, [sp, #0x4]
add r1, sp, #0x8
add r0, r4, #0x0
@@ -69304,7 +69304,7 @@ FUN_020262BC: ; 0x020262BC
add r1, sp, #0x8
mov r2, #0x28
mov r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r2, [sp, #0x4]
add r1, sp, #0x8
add r0, r4, #0x0
@@ -69460,7 +69460,7 @@ _020263D6:
add r0, r4, r0
add r0, r2, r0
mov r2, #0x3
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r3-r5, pc}
.balign 4
_020263F0: .word 0x0000010F
@@ -69737,7 +69737,7 @@ _020265C6:
add r0, r4, r0
add r0, r1, r0
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r3-r5, pc}
nop
_020265DC: .word 0x0000020F
@@ -69910,12 +69910,12 @@ FUN_020266E0: ; 0x020266E0
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x2d
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
add r0, #0x2d
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
mov r1, #0x0
add r0, #0x8c
@@ -70860,9 +70860,9 @@ FUN_02026D34: ; 0x02026D34
add r0, r4, #0x0
add r1, sp, #0x4
add r2, sp, #0x8
- bl FUN_021DB858
+ bl MOD17_021DB858
add r0, r4, #0x0
- bl FUN_021DB7E8
+ bl MOD17_021DB7E8
add r4, r0, #0x0
mov r0, #0x1
ldr r1, [sp, #0x4]
@@ -71169,7 +71169,7 @@ _02026F6A:
add r0, r5, #0x0
mov r1, #0x0
mov r2, #0x74
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
str r6, [r5, #0x0]
add r4, r4, #0x1
add r5, #0x74
@@ -71183,7 +71183,7 @@ _02026F86:
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x98
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r1, _02026FC8 ; =0x00001234
ldr r0, _02026FCC ; =0x000004FC
add r6, r6, #0x1
@@ -71196,7 +71196,7 @@ _02026F86:
mov r1, #0x0
add r0, r7, r0
mov r2, #0x40
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r5, _02026FD4 ; =0x0000081C
mov r4, #0x0
mov r6, #0x12
@@ -71241,7 +71241,7 @@ FUN_02026FE8: ; 0x02026FE8
mov r1, #0x0
mov r2, #0x98
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _02027004 ; =0x00001234
str r0, [r4, #0x0]
add r0, r4, #0x0
@@ -71708,7 +71708,7 @@ _02027330:
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x74
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _02027340 ; =0x00001234
str r0, [r4, #0x0]
pop {r4, pc}
@@ -71938,7 +71938,7 @@ _020274DA:
add r0, r5, #0x0
add r1, r4, #0x0
mov r2, #0x74
- blx memcpy
+ bl memcpy
pop {r3-r5, pc}
nop
_020274E8: .word 0x00001234
@@ -72316,7 +72316,7 @@ _02027760:
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x98
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _02027770 ; =0x00001234
str r0, [r4, #0x0]
pop {r4, pc}
@@ -72540,7 +72540,7 @@ _020278FE:
add r0, r5, #0x0
add r1, r4, #0x0
mov r2, #0x98
- blx memcpy
+ bl memcpy
pop {r3-r5, pc}
nop
_0202790C: .word 0x00001234
@@ -73145,11 +73145,11 @@ FUN_02027D0C: ; 0x02027D0C
bne _02027D6A
ldr r1, _02027D78 ; =0xEDB88320
add r0, sp, #0x4
- blx MATHi_CRC32InitTableRev
+ bl MATHi_CRC32InitTableRev
add r0, sp, #0x4
add r1, r4, #0x0
mov r2, #0x74
- blx MATH_CalcCRC32
+ bl MATH_CalcCRC32
add r6, r0, #0x0
mov r5, #0x0
_02027D3C:
@@ -73159,11 +73159,11 @@ _02027D3C:
add r4, r0, #0x0
ldr r1, _02027D78 ; =0xEDB88320
add r0, sp, #0x4
- blx MATHi_CRC32InitTableRev
+ bl MATHi_CRC32InitTableRev
add r0, sp, #0x4
add r1, r4, #0x0
mov r2, #0x74
- blx MATH_CalcCRC32
+ bl MATH_CalcCRC32
cmp r0, r6
bne _02027D62
mov r0, #0x0
@@ -73398,7 +73398,7 @@ FUN_02027ED0: ; 0x02027ED0
_02027EDC:
bl FUN_0201B9EC
add r1, r7, #0x0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
add r1, r5, r0
@@ -73548,7 +73548,7 @@ FUN_02027FDC: ; 0x02027FDC
add r4, r0, #0x0
ldrb r0, [r4, #0x0]
mov r1, #0x5
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #0x5
@@ -73863,7 +73863,7 @@ FUN_020281E8: ; 0x020281E8
mov r0, #0x0
add r1, r7, #0x0
lsl r2, r2, #0x6
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x1d
lsl r0, r0, #0x4
add r1, r0, #0x0
@@ -74192,7 +74192,7 @@ _0202843A:
add r5, #0x40
mul r0, r4
add r0, r5, r0
- blx FUN_0209700C
+ bl FUN_0209700C
pop {r3-r5, pc}
thumb_func_start FUN_02028448
@@ -74255,7 +74255,7 @@ _020284A2:
mov r2, #0x30
add r0, r0, r1
add r1, r6, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0xc
add r1, r7, #0x0
mul r1, r0
@@ -74263,7 +74263,7 @@ _020284A2:
mov r2, #0xc
add r0, r0, r1
add r1, r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r5, r5, #0x1
add r6, #0x30
add r4, #0xc
@@ -74279,7 +74279,7 @@ _020284D2:
add r1, r2, r1
mov r0, #0x0
mov r2, #0x30
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r2, [sp, #0x0]
mov r1, #0x5d
add r2, #0x40
@@ -74287,7 +74287,7 @@ _020284D2:
add r1, r2, r1
mov r0, #0x0
mov r2, #0xc
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r2, #0x7a
lsl r2, r2, #0x4
add r1, r2, #0x0
@@ -74322,7 +74322,7 @@ FUN_02028518: ; 0x02028518
str r1, [sp, #0x0]
add r0, r4, r5
add r1, r4, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, [sp, #0x4]
add r6, r7, #0x0
mov r3, #0xc
@@ -74336,16 +74336,16 @@ FUN_02028518: ; 0x02028518
mul r2, r3
add r1, r6, r2
add r2, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x0
add r1, r4, r5
mov r2, #0x30
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r1, [sp, #0x8]
mov r0, #0x0
add r1, r6, r1
mov r2, #0xc
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x1d
ldr r1, _02028588 ; =0x0000FFFF
add r2, r7, r5
@@ -74531,7 +74531,7 @@ _020286BC:
mov r0, #0x0
add r1, r6, r4
mov r2, #0x30
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x1d
ldr r1, _020286E8 ; =0x0000FFFF
add r2, r5, r4
@@ -74592,7 +74592,7 @@ FUN_02028724: ; 0x02028724
mov r0, #0x0
add r1, r4, #0x0
lsl r2, r2, #0x2
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, _0202874C ; =0x0000FFFF
mov r1, #0x0
add r2, r4, #0x0
@@ -75445,12 +75445,12 @@ _02028CC0:
add r0, #0x1c
add r1, #0x46
mov r2, #0x2a
- blx memcpy
+ bl memcpy
add r4, #0x46
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x2a
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r4, pc}
.balign 4
@@ -76175,7 +76175,7 @@ FUN_0202918C: ; 0x0202918C
ldr r0, [sp, #0x0]
bl FUN_02029EC0
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
beq _020291DA
@@ -76244,7 +76244,7 @@ FUN_0202920C: ; 0x0202920C
ldr r0, [sp, #0x0]
bl FUN_02029EC0
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #0x1
@@ -76317,7 +76317,7 @@ FUN_020292BC: ; 0x020292BC
mov r1, #0x0
mov r2, #0x3a
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r4, pc}
.balign 4
@@ -76866,7 +76866,7 @@ _020296B4:
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x3a
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldrb r0, [r6, #0x1c]
cmp r0, #0x10
bhi _02029722
@@ -77396,7 +77396,7 @@ FUN_02029A8C: ; 0x02029A8C
add r4, r0, #0x0
mov r1, #0x0
lsl r2, r2, #0x4
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
bl FUN_02029ACC
add r5, r0, #0x0
@@ -77682,7 +77682,7 @@ FUN_02029C60: ; 0x02029C60
add r2, r0, #0x0
add r0, r4, #0x0
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r4, pc}
thumb_func_start FUN_02029C74
@@ -78013,21 +78013,21 @@ _02029E6C:
bls _02029EAE
add r0, r7, #0x0
mov r1, #0x3c
- blx _u32_div_f
+ bl _u32_div_f
add r4, r4, r0
add r0, r7, #0x0
mov r1, #0x3c
- blx _u32_div_f
+ bl _u32_div_f
add r7, r1, #0x0
cmp r4, #0x3b
bls _02029EAE
add r0, r4, #0x0
mov r1, #0x3c
- blx _u32_div_f
+ bl _u32_div_f
add r6, r6, r0
add r0, r4, #0x0
mov r1, #0x3c
- blx _u32_div_f
+ bl _u32_div_f
ldr r0, _02029EB8 ; =0x000003E7
add r4, r1, #0x0
cmp r6, r0
@@ -78069,7 +78069,7 @@ FUN_02029ECC: ; 0x02029ECC
mov r0, #0x0
add r1, r4, #0x0
lsl r2, r2, #0x2
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r0, #0x0
str r0, [r4, #0x0]
pop {r4, pc}
@@ -78527,7 +78527,7 @@ FUN_0202A1F0: ; 0x0202A1F0
mov r1, #0x0
lsl r2, r2, #0x2
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x1
strb r0, [r4, #0x3]
pop {r4, pc}
@@ -78607,14 +78607,14 @@ _0202A280:
add r1, r2, #0x0
add r0, #0x8
mov r2, #0x4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x0
pop {r3, pc}
_0202A28E:
add r1, r2, #0x0
add r0, #0x2c
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x0
pop {r3, pc}
_0202A29C:
@@ -78626,7 +78626,7 @@ _0202A2A4:
add r1, r2, #0x0
add r0, #0xc
mov r2, #0x1c
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x0
pop {r3, pc}
_0202A2B2:
@@ -78697,14 +78697,14 @@ _0202A318:
add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0x4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r4, pc}
_0202A326:
add r3, #0x2c
add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r4, pc}
_0202A334:
ldrb r4, [r3, #0x0]
@@ -78721,7 +78721,7 @@ _0202A346:
add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0x1c
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r4, pc}
_0202A354:
ldr r0, [r2, #0x0]
@@ -78917,14 +78917,14 @@ FUN_0202A474: ; 0x0202A474
add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3, pc}
_0202A48A:
add r3, #0x18
add r0, r2, #0x0
add r1, r3, #0x0
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3, pc}
thumb_func_start FUN_0202A498
@@ -78935,13 +78935,13 @@ FUN_0202A498: ; 0x0202A498
add r1, r2, #0x0
add r0, #0xc0
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3, pc}
_0202A4AA:
add r1, r2, #0x0
add r0, #0x18
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3, pc}
.balign 4
@@ -78990,7 +78990,7 @@ _0202A502:
add r0, #0x1e
sub r0, r0, r1
mov r1, #0x1e
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r1, r0, #0x10
_0202A510:
@@ -79014,7 +79014,7 @@ FUN_0202A524: ; 0x0202A524
ldrh r0, [r0, #0x16]
mov r1, #0xfa
lsl r1, r1, #0x2
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
pop {r3, pc}
@@ -79211,11 +79211,11 @@ FUN_0202A670: ; 0x0202A670
add r0, r4, #0x4
mov r1, #0x0
mov r2, #0xfa
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r4, pc}
.balign 4
@@ -79347,7 +79347,7 @@ FUN_0202A754: ; 0x0202A754
ldr r2, _0202A77C ; =0x0000063C
add r1, r5, r1
add r6, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202A780 ; =0x00000101
strb r4, [r5, r0]
sub r0, r0, #0x1
@@ -79420,30 +79420,30 @@ _0202A7EE:
add r0, #0xa8
add r1, #0x8
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0202A7FC:
add r0, r5, r4
add r1, r6, #0x0
add r0, #0xca
add r1, #0x18
mov r2, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r5, r4
add r1, r6, #0x0
add r0, #0xd2
add r1, #0x20
mov r2, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r5, r4
add r6, #0x28
add r0, #0xda
add r1, r6, #0x0
mov r2, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r5, r4
add r1, r7, #0x0
mov r2, #0xa8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3-r7, pc}
nop
_0202A834: .word 0x00002710
@@ -79460,7 +79460,7 @@ FUN_0202A838: ; 0x0202A838
add r1, r5, r1
lsl r2, r2, #0x2
add r6, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202A860 ; =0x00000103
strb r4, [r5, r0]
sub r0, r0, #0x1
@@ -79499,7 +79499,7 @@ FUN_0202A878: ; 0x0202A878
add r0, r5, r0
add r1, r4, #0x0
lsl r2, r2, #0x2
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0x0
pop {r3-r5, pc}
@@ -79601,7 +79601,7 @@ FUN_0202A92C: ; 0x0202A92C
add r4, r0, #0x0
mov r1, #0x0
lsl r2, r2, #0x2
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
bl FUN_0201BA60
str r0, [r4, #0x0]
bl FUN_0201BA60
@@ -80197,7 +80197,7 @@ _0202ACB4:
ldr r0, [sp, #0x0]
add r1, r1, r6
sub r2, #0x28
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
lsl r0, r4, #0x2
add r1, r5, r0
mov r0, #0x1
@@ -80267,7 +80267,7 @@ _0202AD3C:
mul r1, r2
add r0, r6, #0x0
add r1, r3, r1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
lsl r0, r4, #0x2
add r1, r5, r0
mov r0, #0x12
@@ -80763,7 +80763,7 @@ _0202B07E:
ldr r1, [sp, #0x14]
mov r0, #0x0
lsl r2, r2, #0x2
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r0, [sp, #0x10]
mov r7, #0x0
cmp r0, #0x0
@@ -81145,18 +81145,18 @@ FUN_0202B390: ; 0x0202B390
mov r0, #0x0
add r1, #0xc
mov r2, #0xc0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r1, r4, #0x0
mov r0, #0x0
add r1, #0xcc
mov r2, #0xc0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r1, #0x63
lsl r1, r1, #0x2
mov r0, #0x0
add r1, r4, r1
mov r2, #0xc0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
bl FUN_0202B3F8
pop {r4, pc}
@@ -81175,7 +81175,7 @@ FUN_0202B3C4: ; 0x0202B3C4
_0202B3D4:
add r0, r2, #0x0
mov r1, #0xf
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0xf
sub r1, r0, r1
str r1, [r4, #0x4]
@@ -81307,7 +81307,7 @@ FUN_0202B470: ; 0x0202B470
add r0, r6, #0x0
add r1, r5, #0x0
mov r2, #0x28
- blx MIi_CpuCopyFast
+ bl MIi_CpuCopyFast
add sp, #0x10
pop {r4-r6, pc}
@@ -81686,7 +81686,7 @@ FUN_0202B710: ; 0x0202B710
add r0, sp, #0x8
mov r1, #0x0
mov r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
str r0, [sp, #0x0]
add r0, sp, #0x8
@@ -81939,7 +81939,7 @@ FUN_0202B8B8: ; 0x0202B8B8
mov r1, #0x0
lsl r2, r2, #0x4
add r6, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r7, #0x0
_0202B8C8:
mov r4, #0x0
@@ -82044,7 +82044,7 @@ _0202B968:
mov r1, #0x1d
bl FUN_0202A150
add r1, r7, #0x0
- blx _u32_div_f
+ bl _u32_div_f
add r7, r0, #0x0
_0202B984:
str r7, [r5, #0x0]
@@ -82074,7 +82074,7 @@ _0202B9A0:
ldr r2, [r0, #0x28]
mov r0, #0x64
mul r0, r2
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #0x0
_0202B9C4:
str r1, [r5, #0x0]
@@ -82115,7 +82115,7 @@ FUN_0202B9EC: ; 0x0202B9EC
mov r1, #0x0
lsl r2, r2, #0x2
str r0, [sp, #0x4]
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r5, #0x0
bl FUN_0202881C
mov r1, #0x1
@@ -82232,7 +82232,7 @@ FUN_0202BAD4: ; 0x0202BAD4
mov r1, #0x0
mov r2, #0xe0
add r4, r3, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, sp, #0x10
ldrb r0, [r0, #0x10]
cmp r0, #0x0
@@ -82244,7 +82244,7 @@ FUN_0202BAD4: ; 0x0202BAD4
add r0, r5, r0
add r1, #0x50
str r0, [sp, #0x8]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r1, sp, #0x10
ldrb r3, [r1, #0x18]
mov r0, #0x0
@@ -82305,7 +82305,7 @@ _0202BB64:
add r1, r6, #0x0
add r1, #0x50
str r0, [sp, #0x8]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, sp, #0x10
ldrb r2, [r0, #0x18]
mov r3, #0x0
@@ -82588,7 +82588,7 @@ FUN_0202BD6C: ; 0x0202BD6C
mov r1, #0x0
mov r2, #0x4c
add r7, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
bl FUN_0202881C
mov r1, #0x1
@@ -82646,7 +82646,7 @@ FUN_0202BDF0: ; 0x0202BDF0
mov r1, #0x0
mov r2, #0x4c
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #0x0]
mov r1, #0x90
mul r1, r0
@@ -82715,7 +82715,7 @@ _0202BE7E:
add r0, r6, #0x0
mov r1, #0x0
mov r2, #0x4c
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r6, #0x0
bl FUN_02016A18
pop {r4-r6, pc}
@@ -82734,7 +82734,7 @@ FUN_0202BEA0: ; 0x0202BEA0
ldr r2, _0202BED8 ; =0x00000688
mov r0, #0x0
add r1, r5, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r4, #0x0
mov r6, #0xab
add r7, r4, #0x0
@@ -82764,7 +82764,7 @@ FUN_0202BEDC: ; 0x0202BEDC
ldr r2, _0202BF14 ; =0x00000588
mov r0, #0x0
add r1, r5, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r4, #0x0
mov r6, #0xab
add r7, r4, #0x0
@@ -82873,14 +82873,14 @@ FUN_0202BF90: ; 0x0202BF90
str r0, [r3, r2]
add r0, r2, #0x4
str r1, [r3, r0]
- blx OS_GetOwnerRtcOffset
+ bl OS_GetOwnerRtcOffset
ldr r2, _0202BFD4 ; =0x00000678
str r0, [r5, r2]
add r0, r2, #0x4
add r2, #0x8
str r1, [r5, r0]
add r0, r5, r2
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
pop {r4-r6, pc}
nop
_0202BFCC: .word 0x00000588
@@ -82971,7 +82971,7 @@ FUN_0202C060: ; 0x0202C060
sub sp, #0x8
add r4, r0, #0x0
add r0, sp, #0x0
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
mov r0, #0x1a
mov r3, #0x0
add r5, sp, #0x0
@@ -82999,7 +82999,7 @@ _0202C084:
FUN_0202C094: ; 0x0202C094
push {r4, lr}
add r4, r0, #0x0
- blx OS_GetOwnerRtcOffset
+ bl OS_GetOwnerRtcOffset
ldr r2, _0202C0B4 ; =0x00000678
ldr r3, [r4, r2]
add r2, r2, #0x4
@@ -83178,7 +83178,7 @@ FUN_0202C1C8: ; 0x0202C1C8
ldr r1, _0202C1F0 ; =0x021C59D8
ldr r0, _0202C1F4 ; =FUN_0202C1F8
ldr r1, [r1, #0x4]
- blx WM_SetParentParameter
+ bl WM_SetParentParameter
cmp r0, #0x2
beq _0202C1EC
bl FUN_0202C1AC
@@ -83225,22 +83225,22 @@ FUN_0202C21C: ; 0x0202C21C
mov r0, #0x1
pop {r4, pc}
_0202C230:
- blx WMi_GetStatusAddress
+ bl WMi_GetStatusAddress
add r4, r0, #0x0
mov r0, #0x66
lsl r0, r0, #0x2
add r0, r4, r0
mov r1, #0x4
- blx DC_InvalidateRange
+ bl DC_InvalidateRange
mov r0, #0x66
mov r1, #0x0
lsl r0, r0, #0x2
str r1, [r4, r0]
add r0, r4, r0
mov r1, #0x4
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, _0202C280 ; =FUN_0202C288
- blx WM_StartParent
+ bl WM_StartParent
cmp r0, #0x2
beq _0202C264
bl FUN_0202C1AC
@@ -83334,13 +83334,13 @@ _0202C2DA:
ldr r0, _0202C38C ; =0x02105D54
add r1, #0x15
mov r2, #0x3
- blx memcmp
+ bl memcmp
cmp r0, #0x0
beq _0202C330
_0202C318:
ldrh r1, [r5, #0x10]
mov r0, #0x0
- blx WM_Disconnect
+ bl WM_Disconnect
cmp r0, #0x2
beq _0202C378
bl FUN_0202C1AC
@@ -83429,7 +83429,7 @@ _0202C3AC:
ldr r0, _0202C400 ; =FUN_0202C404
lsr r2, r2, #0x10
add r3, r4, r3
- blx WM_StartMP
+ bl WM_StartMP
cmp r0, #0x2
beq _0202C3E8
bl FUN_0202C1AC
@@ -83502,7 +83502,7 @@ FUN_0202C460: ; 0x0202C460
mov r0, #0x3
bl FUN_0202C198
ldr r0, _0202C480 ; =FUN_0202C484
- blx WM_EndMP
+ bl WM_EndMP
cmp r0, #0x2
beq _0202C47A
bl FUN_0202C1AC
@@ -83535,7 +83535,7 @@ _0202C4A2:
FUN_0202C4A4: ; 0x0202C4A4
push {r3, lr}
ldr r0, _0202C4BC ; =FUN_0202C4C0
- blx WM_EndParent
+ bl WM_EndParent
cmp r0, #0x2
beq _0202C4B8
bl FUN_0202C1AC
@@ -83691,7 +83691,7 @@ _0202C5D4: .word 0x021C59D8
thumb_func_start FUN_0202C5D8
FUN_0202C5D8: ; 0x0202C5D8
push {r3-r7, lr}
- blx WM_GetAllowedChannel
+ bl WM_GetAllowedChannel
add r5, r0, #0x0
mov r0, #0x2
lsl r0, r0, #0xe
@@ -83751,7 +83751,7 @@ _0202C64C:
sub r0, #0x28
strh r2, [r3, r0]
_0202C650:
- blx WM_GetDispersionScanPeriod
+ bl WM_GetDispersionScanPeriod
ldr r2, _0202C684 ; =0x021C59D8
ldr r1, _0202C690 ; =0x000012E6
ldr r3, [r2, #0x4]
@@ -83766,7 +83766,7 @@ _0202C650:
sub r1, r1, #0x6
ldr r0, _0202C694 ; =FUN_0202C698
add r1, r2, r1
- blx WM_StartScan
+ bl WM_StartScan
cmp r0, #0x2
beq _0202C680
bl FUN_0202C1AC
@@ -83820,7 +83820,7 @@ _0202C6D0:
sub r0, #0xf0
add r0, r2, r0
mov r1, #0xc0
- blx DC_InvalidateRange
+ bl DC_InvalidateRange
ldr r0, _0202C760 ; =0x021C59D8
ldr r1, [r0, #0x4]
ldr r0, _0202C768 ; =0x00001320
@@ -83910,7 +83910,7 @@ _0202C790: .word 0x00001310
FUN_0202C794: ; 0x0202C794
push {r3, lr}
ldr r0, _0202C7AC ; =FUN_0202C7B0
- blx WM_EndScan
+ bl WM_EndScan
cmp r0, #0x2
beq _0202C7A8
bl FUN_0202C1AC
@@ -83971,7 +83971,7 @@ _0202C800:
ldr r0, _0202C84C ; =0x02105D54
add r1, #0x1
mov r2, #0x3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
bl FUN_02033534
add r1, sp, #0x4
strb r0, [r1, #0x0]
@@ -83984,7 +83984,7 @@ _0202C800:
mov r3, #0x1
add r1, r2, r1
add r2, sp, #0x4
- blx WM_StartConnectEx
+ bl WM_StartConnectEx
cmp r0, #0x2
beq _0202C83E
bl FUN_0202C1AC
@@ -84109,7 +84109,7 @@ FUN_0202C908: ; 0x0202C908
ldr r0, _0202C954 ; =FUN_0202C958
lsr r2, r2, #0x10
add r3, r4, r3
- blx WM_StartMP
+ bl WM_StartMP
cmp r0, #0x2
beq _0202C942
bl FUN_0202C1AC
@@ -84185,7 +84185,7 @@ FUN_0202C9BC: ; 0x0202C9BC
mov r0, #0x3
bl FUN_0202C198
ldr r0, _0202C9DC ; =FUN_0202C9E0
- blx WM_EndMP
+ bl WM_EndMP
cmp r0, #0x2
beq _0202C9D6
bl FUN_0202C1AC
@@ -84223,7 +84223,7 @@ FUN_0202CA04: ; 0x0202CA04
bl FUN_0202C198
ldr r0, _0202CA28 ; =FUN_0202CA2C
mov r1, #0x0
- blx WM_Disconnect
+ bl WM_Disconnect
cmp r0, #0x2
beq _0202CA24
bl FUN_0202C1AC
@@ -84256,7 +84256,7 @@ FUN_0202CA44: ; 0x0202CA44
mov r0, #0x3
bl FUN_0202C198
ldr r0, _0202CA64 ; =FUN_0202CA68
- blx WM_Reset
+ bl WM_Reset
cmp r0, #0x2
beq _0202CA5E
bl FUN_0202C1AC
@@ -84300,7 +84300,7 @@ FUN_0202CA88: ; 0x0202CA88
add r0, r1, r0
ldr r1, [r1, r2]
add r7, r3, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, _0202CAD8 ; =0x0000FFFF
add r1, r7, #0x0
str r0, [sp, #0x0]
@@ -84312,7 +84312,7 @@ FUN_0202CA88: ; 0x0202CA88
ldr r0, _0202CADC ; =FUN_0202CAE0
add r2, r5, #0x0
add r3, r6, #0x0
- blx WM_SetMPDataToPortEx
+ bl WM_SetMPDataToPortEx
cmp r0, #0x2
bne _0202CACA
add sp, #0xc
@@ -84405,7 +84405,7 @@ FUN_0202CB50: ; 0x0202CB50
_0202CB60:
mov r0, #0x0
add r1, r0, #0x0
- blx FUN_02090CC8
+ bl FUN_02090CC8
mov r0, #0x0
bl FUN_0202C198
pop {r3, pc}
@@ -84497,7 +84497,7 @@ FUN_0202CBFC: ; 0x0202CBFC
push {r3-r5, lr}
sub sp, #0x8
add r0, sp, #0x0
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
ldr r0, _0202CC84 ; =0x027FFC3C
ldr r3, [r0, #0x0]
add r0, sp, #0x0
@@ -84566,7 +84566,7 @@ _0202CC94: .word 0x00003039
FUN_0202CC98: ; 0x0202CC98
push {r4, lr}
add r4, r0, #0x0
- blx WM_GetAllowedChannel
+ bl WM_GetAllowedChannel
mov r1, #0x2
lsl r1, r1, #0xe
cmp r0, r1
@@ -84693,7 +84693,7 @@ FUN_0202CD90: ; 0x0202CD90
str r1, [sp, #0x0]
mov r1, #0x3
mov r2, #0x11
- blx WM_MeasureChannel
+ bl WM_MeasureChannel
pop {r3, pc}
.balign 4
@@ -84900,7 +84900,7 @@ FUN_0202CF0C: ; 0x0202CF0C
ldr r0, [r0, #0x4]
mov r2, #0x2
add r0, #0x40
- blx WM_Initialize
+ bl WM_Initialize
cmp r0, #0x2
beq _0202CF34
bl FUN_0202C1AC
@@ -84929,7 +84929,7 @@ FUN_0202CF40: ; 0x0202CF40
pop {r3, pc}
_0202CF5A:
ldr r0, _0202CF80 ; =FUN_0202CEF4
- blx WM_SetIndCallback
+ bl WM_SetIndCallback
cmp r0, #0x0
beq _0202CF76
bl FUN_0202C1AC
@@ -85073,14 +85073,14 @@ _0202D066:
ldr r1, _0202D09C ; =0x00001220
add r1, r2, r1
mov r2, #0xc0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202D094 ; =0x021C59D8
ldr r1, [r0, #0x4]
ldr r0, _0202D09C ; =0x00001220
add r0, r1, r0
mov r1, #0xc0
- blx DC_FlushRange
- blx DC_WaitWriteBufferEmpty
+ bl DC_FlushRange
+ bl DC_WaitWriteBufferEmpty
bl FUN_0202C7E8
pop {r4-r6, pc}
_0202D08E:
@@ -85102,7 +85102,7 @@ FUN_0202D0A0: ; 0x0202D0A0
ldr r1, _0202D0CC ; =FUN_0202CB08
lsr r0, r0, #0x10
mov r2, #0x0
- blx WM_SetPortCallback
+ bl WM_SetPortCallback
cmp r0, #0x0
beq _0202D0C2
mov r0, #0x9
@@ -85210,7 +85210,7 @@ FUN_0202D178: ; 0x0202D178
mov r0, #0x3
bl FUN_0202C198
ldr r0, _0202D198 ; =FUN_0202CB50
- blx WM_End
+ bl WM_End
cmp r0, #0x2
beq _0202D194
mov r0, #0x9
@@ -85344,7 +85344,7 @@ FUN_0202D240: ; 0x0202D240
add r1, r6, #0x0
lsr r2, r2, #0x10
add r3, r4, #0x0
- blx WM_SetGameInfo
+ bl WM_SetGameInfo
_0202D26E:
add sp, #0x8
pop {r4-r6, pc}
@@ -85383,7 +85383,7 @@ FUN_0202D298: ; 0x0202D298
cmp r0, #0x4
bne _0202D2BE
ldr r0, _0202D2CC ; =FUN_0202D27C
- blx WM_SetEntry
+ bl WM_SetEntry
cmp r0, #0x2
bne _0202D2BE
mov r0, #0x1
@@ -85670,7 +85670,7 @@ FUN_0202D4A8: ; 0x0202D4A8
add r0, r1, #0x0
mov r1, #0xa
ldrsh r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r0, r1, #0x0
pop {r3, pc}
.balign 4
@@ -85922,7 +85922,7 @@ _0202D660:
ldr r0, [r5, #0x0]
ldr r1, [r4, #0x0]
add r2, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0202D66A:
ldrh r0, [r5, #0xc]
ldr r1, [r4, #0x0]
@@ -86096,7 +86096,7 @@ _0202D7A4:
add r0, r6, #0x0
mov r1, #0x0
mov r2, #0x10
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r4, #0x4]
ldr r7, [sp, #0x0]
cmp r0, #0x0
@@ -86130,7 +86130,7 @@ FUN_0202D7D8: ; 0x0202D7D8
mov r1, #0x0
mov r2, #0x20
add r5, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
lsl r7, r4, #0x4
mov r0, #0xf
add r1, r7, #0x0
@@ -86138,7 +86138,7 @@ FUN_0202D7D8: ; 0x0202D7D8
mov r1, #0x0
add r2, r7, #0x0
str r0, [r5, #0x18]
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r4, [r5, #0x1c]
str r6, [r5, #0x14]
pop {r3-r7, pc}
@@ -86152,7 +86152,7 @@ FUN_0202D804: ; 0x0202D804
ldr r0, [r4, #0x18]
mov r1, #0x0
lsl r2, r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
str r0, [r4, #0x0]
str r0, [r4, #0x4]
@@ -86623,7 +86623,7 @@ FUN_0202DB14: ; 0x0202DB14
str r0, [r1, #0x0]
mov r1, #0x0
lsl r2, r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r6, #0x0
ldr r7, _0202DBA0 ; =0x021C59E4
add r4, r6, #0x0
@@ -86746,7 +86746,7 @@ FUN_0202DBE0: ; 0x0202DBE0
ldr r0, [r0, #0x0]
add r0, #0x64
add r0, r0, r5
- blx OS_GetMacAddress
+ bl OS_GetMacAddress
add r0, r7, #0x0
mov r1, #0x1
mov r2, #0x0
@@ -86756,7 +86756,7 @@ FUN_0202DBE0: ; 0x0202DBE0
ldr r1, [r1, #0x0]
add r1, #0x54
add r1, r1, r5
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r6, #0x0
bl FUN_02029B38
ldr r1, _0202DCD8 ; =0x021C59E4
@@ -86791,14 +86791,14 @@ FUN_0202DBE0: ; 0x0202DBE0
ldr r1, [r1, #0x0]
add r1, #0x48
add r1, r1, r5
- blx FUN_02096CCC
+ bl FUN_02096CCC
ldr r0, _0202DCD8 ; =0x021C59E4
mov r1, #0x0
ldr r0, [r0, #0x0]
mov r2, #0x20
add r0, #0x8
add r0, r0, r5
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202DCD8 ; =0x021C59E4
ldr r1, [r0, #0x0]
ldr r0, [r1, #0x0]
@@ -86874,7 +86874,7 @@ FUN_0202DD08: ; 0x0202DD08
add r3, r1, #0x0
mul r3, r2
add r1, r5, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r4, #0x62
ldr r2, _0202DD78 ; =0x021C59E4
ldrb r3, [r4, #0x0]
@@ -86924,7 +86924,7 @@ FUN_0202DD80: ; 0x0202DD80
add r1, #0x8
add r1, r1, r4
add r2, r3, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202DDE0 ; =0x021C59E4
add r1, r5, #0x0
ldr r0, [r0, #0x0]
@@ -87002,7 +87002,7 @@ _0202DE0A:
ldr r0, [r1, r0]
add r6, #0x28
add r1, r6, r5
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r1, _0202DE70 ; =0x021C59E4
mov r0, #0x4
ldr r1, [r1, #0x0]
@@ -87639,7 +87639,7 @@ FUN_0202E29C: ; 0x0202E29C
str r0, [r1, #0x8]
mov r1, #0x0
lsl r2, r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
bl FUN_0202CEEC
add r1, r0, #0x0
mov r0, #0xf
@@ -87655,7 +87655,7 @@ FUN_0202E29C: ; 0x0202E29C
ldr r0, _0202E338 ; =0x00000CA4
ldr r0, [r1, r0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
bl FUN_02023AC4
add r1, r0, #0x0
mov r0, #0xf
@@ -87671,7 +87671,7 @@ FUN_0202E29C: ; 0x0202E29C
ldr r0, _0202E33C ; =0x00000CBC
ldr r0, [r1, r0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r2, _0202E334 ; =0x021C59E8
mov r1, #0x33
ldr r3, _0202E340 ; =0x00000333
@@ -87807,7 +87807,7 @@ _0202E3D2:
mul r1, r2
add r0, r7, #0x0
add r1, r3, r1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3-r7, pc}
_0202E412:
add r6, r6, #0x1
@@ -87844,7 +87844,7 @@ _0202E434:
mul r3, r2
add r0, r7, #0x0
add r1, r4, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0202E464 ; =0x021C59E8
mov r2, #0x1
ldr r1, [r0, #0x8]
@@ -87862,7 +87862,7 @@ FUN_0202E470: ; 0x0202E470
push {r3, lr}
cmp r1, #0x0
beq _0202E47A
- blx OS_Terminate
+ bl OS_Terminate
_0202E47A:
ldr r0, _0202E484 ; =0x021C59E8
mov r1, #0x2
@@ -87894,10 +87894,10 @@ FUN_0202E49C: ; 0x0202E49C
ldr r1, _0202E4C4 ; =FUN_0202E470
mov r0, #0x8
mov r2, #0x0
- blx FUN_02090DB8
+ bl FUN_02090DB8
cmp r0, #0x1
beq _0202E4BC
- blx OS_Terminate
+ bl OS_Terminate
_0202E4BC:
pop {r3, pc}
nop
@@ -87992,7 +87992,7 @@ _0202E544:
ldr r0, [r0, #0x8]
lsl r2, r2, #0xa
add r0, #0x54
- blx MI_CpuFill8
+ bl MI_CpuFill8
pop {r3-r5, pc}
nop
_0202E564: .word 0x021C59E8
@@ -88709,7 +88709,7 @@ _0202EACE:
add r2, r0, #0x0
add r0, r4, #0x0
add r1, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
bl FUN_02023AC4
add r2, r0, #0x0
ldr r0, _0202EB6C ; =0x021C59E8
@@ -88718,7 +88718,7 @@ _0202EACE:
ldr r0, [r1, r0]
add r1, r5, #0x0
add r1, #0x30
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0x0
bl FUN_020239BC
str r0, [r5, #0x0]
@@ -88733,7 +88733,7 @@ _0202EACE:
add r0, r1, r0
add r1, r5, #0x0
add r1, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
bl FUN_0202D358
add r5, #0x54
strb r0, [r5, #0x0]
@@ -88755,14 +88755,14 @@ _0202EB24:
ldr r0, [r0, #0x8]
add r1, r5, #0x0
mov r2, #0x54
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0202EB4E:
ldr r0, _0202EB6C ; =0x021C59E8
ldr r1, [r0, #0x8]
ldr r0, _0202EB70 ; =0x00000CC4
add r0, r1, r0
mov r1, #0x5c
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, _0202EB6C ; =0x021C59E8
ldr r1, [r0, #0x8]
ldr r0, _0202EB70 ; =0x00000CC4
@@ -88794,7 +88794,7 @@ FUN_0202EB7C: ; 0x0202EB7C
ldr r0, _0202EBCC ; =0x00000CC4
add r0, r1, r0
mov r1, #0x5c
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, _0202EBC8 ; =0x021C59E8
ldr r1, [r0, #0x8]
ldr r0, _0202EBCC ; =0x00000CC4
@@ -89240,7 +89240,7 @@ _0202EEE4: .word 0x0000FFFF
FUN_0202EEE8: ; 0x0202EEE8
push {r3-r5, lr}
add r5, r0, #0x0
- blx WM_GetDispersionBeaconPeriod
+ bl WM_GetDispersionBeaconPeriod
add r4, r0, #0x0
cmp r5, #0x1a
blo _0202EEFA
@@ -89369,7 +89369,7 @@ _0202EFC2:
add r1, r4, #0x0
mul r1, r2
add r1, r3, r1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0202EFD8:
pop {r3-r5, pc}
nop
@@ -89484,7 +89484,7 @@ FUN_0202F094: ; 0x0202F094
ldr r1, _0202F0B4 ; =0x00000CBC
add r0, r4, #0x0
ldr r1, [r3, r1]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r4, pc}
nop
_0202F0B0: .word 0x021C59E8
@@ -89545,7 +89545,7 @@ FUN_0202F10C: ; 0x0202F10C
ldr r1, _0202F120 ; =0x021C59E8
mov r2, #0x54
ldr r1, [r1, #0x8]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
bl FUN_0202F0B8
pop {r3, pc}
nop
@@ -89606,7 +89606,7 @@ _0202F178:
ldr r2, _0202F2C0 ; =0x0000068C
str r0, [r1, #0x4]
add r1, r4, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r2, _0202F2BC ; =0x021C59F4
ldr r1, _0202F2C4 ; =0x00000658
ldr r0, [r2, #0x4]
@@ -89795,7 +89795,7 @@ FUN_0202F2F0: ; 0x0202F2F0
ldr r3, [r3, r2]
add r2, r3, #0x0
mul r2, r6
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r4, #0x0
cmp r6, #0x0
ble _0202F360
@@ -89828,7 +89828,7 @@ _0202F360:
ldr r3, [r3, r2]
add r2, r3, #0x0
mul r2, r6
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r5, #0x0
cmp r6, #0x0
ble _0202F3A2
@@ -89860,7 +89860,7 @@ _0202F3A2:
add r0, r1, r0
mov r1, #0x0
lsl r2, r2, #0x6
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F54C ; =0x021C59F4
mov r1, #0xb5
ldr r2, [r0, #0x4]
@@ -89894,7 +89894,7 @@ _0202F3DA:
mov r1, #0x0
add r0, #0x4c
lsl r2, r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F54C ; =0x021C59F4
mov r2, #0x42
ldr r1, [r0, #0x4]
@@ -89930,7 +89930,7 @@ _0202F420:
ldr r0, [r3, r0]
mov r1, #0x0
lsl r2, r2, #0x1
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F54C ; =0x021C59F4
mov r1, #0x47
ldr r3, [r0, #0x4]
@@ -90109,7 +90109,7 @@ FUN_0202F5A4: ; 0x0202F5A4
ldr r3, [r3, r2]
add r2, r3, #0x0
mul r2, r6
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r4, #0x0
cmp r6, #0x0
ble _0202F606
@@ -90142,7 +90142,7 @@ _0202F606:
ldr r3, [r3, r2]
add r2, r3, #0x0
mul r2, r6
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r5, #0x0
cmp r6, #0x0
ble _0202F648
@@ -90174,7 +90174,7 @@ _0202F648:
add r0, r1, r0
mov r1, #0x0
lsl r2, r2, #0x6
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F7D4 ; =0x021C59F4
mov r1, #0xb5
ldr r2, [r0, #0x4]
@@ -90208,7 +90208,7 @@ _0202F680:
mov r1, #0x0
add r0, #0x4c
lsl r2, r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F7D4 ; =0x021C59F4
mov r2, #0x42
ldr r1, [r0, #0x4]
@@ -90244,7 +90244,7 @@ _0202F6C6:
ldr r0, [r3, r0]
mov r1, #0x0
lsl r2, r2, #0x1
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0202F7D4 ; =0x021C59F4
mov r1, #0x47
ldr r3, [r0, #0x4]
@@ -90692,7 +90692,7 @@ FUN_0202FA5C: ; 0x0202FA5C
bl FUN_02033534
cmp r0, #0x13
blt _0202FA78
- bl FUN_021D83C0
+ bl MOD04_021D83C0
mov r4, #0x1
b _0202FA82
_0202FA78:
@@ -90997,7 +90997,7 @@ FUN_0202FCCC: ; 0x0202FCCC
cmp r1, #0x0
beq _0202FCF8
mov r1, #0x26
- bl FUN_021D78FC
+ bl MOD04_021D78FC
cmp r0, #0x0
bne _0202FCFA
_0202FCF8:
@@ -91079,7 +91079,7 @@ _0202FD90:
ldr r0, _0202FE14 ; =0x021C59F4
mov r1, #0x26
ldr r0, [r0, #0x4]
- bl FUN_021D78FC
+ bl MOD04_021D78FC
cmp r0, #0x0
beq _0202FE10
ldr r0, _0202FE20 ; =0x02105D58
@@ -91458,7 +91458,7 @@ FUN_02030074: ; 0x02030074
lsl r0, r0, #0x2
add r0, r1, r0
mov r1, #0x4c
- bl FUN_021D79B4
+ bl MOD04_021D79B4
cmp r0, #0x0
beq _020300DC
ldr r0, _02030228 ; =0x021C59F4
@@ -91552,7 +91552,7 @@ _02030150:
lsl r0, r0, #0x2
add r0, r1, r0
mov r1, #0x4c
- bl FUN_021D79B4
+ bl MOD04_021D79B4
cmp r0, #0x0
beq _02030224
ldr r0, _02030230 ; =0x02105D58
@@ -92269,7 +92269,7 @@ _020306F2:
ldr r1, [r6, #0xc]
ldr r2, [r5, r2]
ldr r3, [r6, #0x4]
- blx _ll_mul
+ bl _ll_mul
add r3, r0, #0x0
add r2, r1, #0x0
ldr r0, [r6, #0x10]
@@ -92316,7 +92316,7 @@ _02030746:
ldr r1, [r6, #0xc]
ldr r2, [r6, #0x0]
ldr r3, [r6, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r3, [r6, #0x10]
ldr r2, [r6, #0x14]
add r0, r3, r0
@@ -93084,7 +93084,7 @@ _02030D22:
ldr r0, [sp, #0x8]
add r1, r2, r1
ldr r2, [sp, #0xc]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_02030D42:
ldr r1, [r5, #0x0]
ldr r0, [sp, #0xc]
@@ -93257,7 +93257,7 @@ _02030E8C:
ldrb r0, [r1, r0]
cmp r0, #0x0
beq _02030EBC
- bl FUN_021D8018
+ bl MOD04_021D8018
mov r1, #0x0
mvn r1, r1
cmp r0, r1
@@ -93669,7 +93669,7 @@ FUN_02031190: ; 0x02031190
bl FUN_02033534
cmp r0, #0x13
blt _020311B4
- bl FUN_021D8018
+ bl MOD04_021D8018
mov r1, #0x0
mvn r1, r1
cmp r0, r1
@@ -93997,7 +93997,7 @@ FUN_020313EC: ; 0x020313EC
mov r0, #0x0
pop {r3, pc}
_020313FA:
- bl FUN_021D8624
+ bl MOD04_021D8624
pop {r3, pc}
thumb_func_start FUN_02031400
@@ -94087,7 +94087,7 @@ FUN_02031480: ; 0x02031480
ldr r2, _020314CC ; =0x00000253
str r0, [r1, #0x0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
_0203149C:
ldr r1, _020314C8 ; =0x021C59FC
mov r3, #0x0
@@ -94363,7 +94363,7 @@ _02031672:
add r1, r7, #0x0
add r0, r0, r5
mov r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r4, r4, #0x1
add r5, r5, #0x2
cmp r4, #0x8
@@ -94405,7 +94405,7 @@ FUN_020316AC: ; 0x020316AC
add r3, #0x18
add r0, r1, #0x0
add r1, r3, r4
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r1, _020316DC ; =0x021C59FC
mov r0, #0x14
ldr r1, [r1, #0x0]
@@ -94459,7 +94459,7 @@ FUN_02031704: ; 0x02031704
add r4, #0x18
mul r3, r2
add r1, r4, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3-r5, pc}
nop
_0203172C: .word 0x021C59FC
@@ -94486,7 +94486,7 @@ FUN_02031734: ; 0x02031734
mov r2, #0x50
str r0, [r1, #0x0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _020317BC ; =0x021C5A00
mov r2, #0x32
ldr r1, [r0, #0x0]
@@ -95240,7 +95240,7 @@ _02031CEE:
bl FUN_02033590
cmp r0, #0x0
beq _02031D04
- bl FUN_021DDB08
+ bl MOD04_021DDB08
mov r1, #0x3
sub r0, r1, r0
bl FUN_02033EEC
@@ -95249,7 +95249,7 @@ _02031D04:
bl FUN_0202EDF8
cmp r0, #0x0
beq _02031D18
- blx WM_GetLinkLevel
+ bl WM_GetLinkLevel
mov r1, #0x3
sub r0, r1, r0
bl FUN_02033EEC
@@ -95320,7 +95320,7 @@ _02031D42:
ldr r1, [r4, #0xc]
ldr r2, [r5, #0xc]
ldr r3, [r4, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r4, #0x10]
ldr r3, [r4, #0x14]
add r0, r2, r0
@@ -95331,7 +95331,7 @@ _02031D42:
mov r1, #0x0
mov r2, #0x14
mov r3, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r0, #0x0
add r5, #0x43
strb r0, [r5, #0x0]
@@ -95404,7 +95404,7 @@ _02031E32:
ldr r1, [r4, #0xc]
ldr r2, [r5, #0xc]
ldr r3, [r4, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r4, #0x10]
ldr r3, [r4, #0x14]
add r0, r2, r0
@@ -95452,7 +95452,7 @@ FUN_02031E8C: ; 0x02031E8C
ldr r1, [r5, #0xc]
ldr r2, [r4, #0xc]
ldr r3, [r5, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r5, #0x10]
ldr r3, [r5, #0x14]
add r0, r2, r0
@@ -95680,7 +95680,7 @@ FUN_02032058: ; 0x02032058
ldr r1, [r4, #0xc]
ldr r2, [r5, #0xc]
ldr r3, [r4, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r4, #0x10]
ldr r3, [r4, #0x14]
add r0, r2, r0
@@ -95691,7 +95691,7 @@ FUN_02032058: ; 0x02032058
mov r1, #0x0
mov r2, #0x14
mov r3, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r0, #0x0
add r5, #0x43
strb r0, [r5, #0x0]
@@ -96289,7 +96289,7 @@ FUN_02032510: ; 0x02032510
ldr r1, [r5, #0xc]
ldr r2, [r4, #0xc]
ldr r3, [r5, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r5, #0x10]
ldr r3, [r5, #0x14]
add r0, r2, r0
@@ -96376,7 +96376,7 @@ FUN_020325D0: ; 0x020325D0
ldr r1, [r5, #0xc]
ldr r2, [r4, #0xc]
ldr r3, [r5, #0x4]
- blx _ll_mul
+ bl _ll_mul
ldr r2, [r5, #0x10]
ldr r3, [r5, #0x14]
add r0, r2, r0
@@ -97388,7 +97388,7 @@ _02032DBE:
lsr r0, r0, #0x18
cmp r0, #0x1
bhi _02032DD4
- bl FUN_021D83C0
+ bl MOD04_021D83C0
mov r0, #0x1
pop {r3, pc}
_02032DD4:
@@ -97482,7 +97482,7 @@ FUN_02032E8C: ; 0x02032E8C
thumb_func_start FUN_02032E90
FUN_02032E90: ; 0x02032E90
push {r3, lr}
- bl FUN_021D7F8C
+ bl MOD04_021D7F8C
cmp r0, #0x0
bge _02032EA2
ldr r0, _02032EA4 ; =FUN_02032E8C
@@ -97508,7 +97508,7 @@ FUN_02032EB0: ; 0x02032EB0
push {r3, lr}
mov r0, #0x1
bl FUN_020313A0
- bl FUN_021D7F8C
+ bl MOD04_021D7F8C
cmp r0, #0xa
blt _02032ECA
ldr r0, _02032F0C ; =FUN_02032EAC
@@ -97573,7 +97573,7 @@ _02032F30: .word 0x021C5A00
FUN_02032F34: ; 0x02032F34
push {r3, lr}
mov r0, #0x0
- bl FUN_021D7800
+ bl MOD04_021D7800
cmp r0, #0xa
blt _02032F4A
ldr r0, _02032F88 ; =FUN_02032EAC
@@ -97620,7 +97620,7 @@ _02032F94: .word FUN_02032EA8
FUN_02032F98: ; 0x02032F98
push {r3, lr}
mov r0, #0x1
- bl FUN_021D7800
+ bl MOD04_021D7800
cmp r0, #0x0
bge _02032FB2
bl FUN_02032F20
@@ -97633,7 +97633,7 @@ _02032FB2:
ldr r0, [r0, #0x0]
add r0, #0x42
ldrb r0, [r0, #0x0]
- bl FUN_021D8494
+ bl MOD04_021D8494
cmp r0, #0x0
beq _02032FCE
bl FUN_0202FC60
@@ -97653,7 +97653,7 @@ FUN_02032FDC: ; 0x02032FDC
add r4, r0, #0x0
ldr r0, _02032FFC ; =FUN_020303BC
ldr r1, _02033000 ; =FUN_02030238
- bl FUN_021D77C4
+ bl MOD04_021D77C4
ldr r0, _02033004 ; =0x021C5A00
mov r1, #0x0
ldr r0, [r0, #0x0]
@@ -97719,10 +97719,10 @@ FUN_02033060: ; 0x02033060
push {r3, lr}
ldr r0, _02033090 ; =FUN_020303BC
ldr r1, _02033094 ; =FUN_02030238
- bl FUN_021D77C4
+ bl MOD04_021D77C4
mov r0, #0x0
mvn r0, r0
- bl FUN_021D8494
+ bl MOD04_021D8494
cmp r0, #0x0
beq _0203308C
ldr r0, _02033098 ; =0x021C5A00
@@ -97751,16 +97751,16 @@ FUN_020330A0: ; 0x020330A0
ldr r0, [r0, #0x0]
add r0, #0x41
ldrb r0, [r0, #0x0]
- bl FUN_021D82BC
+ bl MOD04_021D82BC
cmp r0, #0x0
beq _020330C6
- bl FUN_021D836C
+ bl MOD04_021D836C
ldr r0, _020330DC ; =FUN_02033060
mov r1, #0x0
bl FUN_02031D20
pop {r3, pc}
_020330C6:
- bl FUN_021D7F8C
+ bl MOD04_021D7F8C
cmp r0, #0x0
bge _020330D6
ldr r0, _020330E0 ; =FUN_02032E8C
@@ -97873,15 +97873,15 @@ FUN_0203318C: ; 0x0203318C
mov r0, #0x0
bl FUN_020313A0
mov r0, #0x0
- bl FUN_021D82BC
+ bl MOD04_021D82BC
cmp r0, #0x0
beq _020331AA
- bl FUN_021D836C
+ bl MOD04_021D836C
ldr r0, _020331BC ; =FUN_02032440
mov r1, #0x0
bl FUN_02031D20
_020331AA:
- bl FUN_021D7F8C
+ bl MOD04_021D7F8C
cmp r0, #0x0
bge _020331BA
ldr r0, _020331C0 ; =FUN_02032E8C
@@ -98019,7 +98019,7 @@ FUN_02033288: ; 0x02033288
mov r2, #0x50
str r0, [r1, #0x0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _020332D8 ; =0x021C5A00
mov r2, #0x18
ldr r1, [r0, #0x0]
@@ -98085,7 +98085,7 @@ FUN_02033310: ; 0x02033310
mov r2, #0x50
str r0, [r1, #0x0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _02033360 ; =0x021C5A00
mov r2, #0x19
ldr r1, [r0, #0x0]
@@ -98149,10 +98149,10 @@ _020333AA:
bne _020333C8
add r0, sp, #0x4
add r1, sp, #0x0
- bl FUN_021DD718
+ bl MOD04_021DD718
cmp r0, #0x0
beq _020333E4
- bl FUN_021DD6F0
+ bl MOD04_021DD6F0
add sp, #0x8
mov r0, #0x1
pop {r3, pc}
@@ -98161,7 +98161,7 @@ _020333C8:
bne _020333E4
add r0, sp, #0x4
add r1, sp, #0x0
- bl FUN_021DD718
+ bl MOD04_021DD718
cmp r0, #0x0
beq _020333E4
ldr r0, [sp, #0x0]
@@ -98180,7 +98180,7 @@ _020333EC: .word 0x021C5A00
thumb_func_start FUN_020333F0
FUN_020333F0: ; 0x020333F0
push {r3, lr}
- bl FUN_021D76AC
+ bl MOD04_021D76AC
cmp r0, #0x0
bge _02033408
bl FUN_02032F20
@@ -98220,9 +98220,9 @@ FUN_0203341C: ; 0x0203341C
mov r1, #0x31
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x28]
- bl FUN_021D74E0
+ bl MOD05_021D74E0
ldr r0, _02033464 ; =FUN_020335D0
- bl FUN_021D83A8
+ bl MOD04_021D83A8
bl FUN_0202FA10
ldr r0, _02033468 ; =FUN_020333F0
mov r1, #0x0
@@ -98265,7 +98265,7 @@ _02033482:
mov r1, #0x0
ldr r0, [r0, #0x0]
add r2, r4, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _020334D4 ; =0x021C5A00
mov r1, #0x0
ldr r2, [r0, #0x0]
@@ -98730,7 +98730,7 @@ FUN_020337E8: ; 0x020337E8
add r0, #0x1f
mov r1, #0x1f
bic r0, r1
- blx FUN_02096B14
+ bl FUN_02096B14
add r5, r0, #0x0
add r0, r4, #0x0
bl FUN_02016A18
@@ -98743,14 +98743,14 @@ FUN_0203380C: ; 0x0203380C
push {r4, lr}
bl FUN_02028228
add r4, r0, #0x0
- blx FUN_02096FB0
+ bl FUN_02096FB0
cmp r0, #0x0
bne _0203382A
ldr r1, _0203382C ; =0x4144414A
add r0, r4, #0x0
- blx thunk_FUN_02097190
+ bl thunk_FUN_02097190
add r0, r4, #0x0
- blx thunk_FUN_02096e4c
+ bl thunk_FUN_02096e4c
_0203382A:
pop {r4, pc}
.balign 4
@@ -98763,10 +98763,10 @@ FUN_02033830: ; 0x02033830
bl FUN_02028228
add r4, r0, #0x0
add r1, sp, #0x0
- blx FUN_02096CCC
+ bl FUN_02096CCC
add r0, r4, #0x0
add r1, sp, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
add sp, #0xc
pop {r3-r4, pc}
@@ -98776,11 +98776,11 @@ FUN_0203384C: ; 0x0203384C
bl FUN_020286EC
bl FUN_02028228
add r4, r0, #0x0
- blx FUN_02096F80
+ bl FUN_02096F80
cmp r0, #0x0
beq _0203386E
add r0, r4, #0x0
- blx FUN_02096F18
+ bl FUN_02096F18
cmp r0, #0x0
beq _0203386E
mov r0, #0x1
@@ -98810,7 +98810,7 @@ FUN_02033874: ; 0x02033874
mvn r1, r1
str r1, [r0, #0x0]
add r0, r5, #0x0
- blx FUN_0209700C
+ bl FUN_0209700C
cmp r0, #0x0
bne _020338AE
add sp, #0x8
@@ -98821,7 +98821,7 @@ _020338AE:
_020338B0:
add r0, r5, #0x0
add r1, r4, #0x0
- blx FUN_02096B78
+ bl FUN_02096B78
cmp r0, #0x0
beq _020338C6
ldr r0, [sp, #0x0]
@@ -98832,16 +98832,16 @@ _020338B0:
_020338C6:
add r0, r6, #0x0
add r1, r5, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
cmp r0, #0x0
ble _020338F4
add r0, r6, #0x0
add r1, r5, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
str r0, [sp, #0x4]
add r0, r6, #0x0
add r1, r4, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
ldr r1, [sp, #0x4]
cmp r1, r0
bne _020338F4
@@ -98856,7 +98856,7 @@ _020338F4:
cmp r0, #0x0
bge _0203390A
add r0, r4, #0x0
- blx FUN_0209700C
+ bl FUN_0209700C
cmp r0, #0x0
bne _0203390A
ldr r0, [sp, #0x0]
@@ -98889,7 +98889,7 @@ FUN_02033918: ; 0x02033918
ldr r1, [sp, #0x0]
ldr r2, [sp, #0x4]
add r0, r7, #0x0
- blx FUN_020973B4
+ bl FUN_020973B4
cmp r0, #0x0
bne _02033950
add sp, #0x18
@@ -98899,10 +98899,10 @@ _02033950:
ldr r1, [sp, #0x0]
ldr r2, [sp, #0x4]
add r0, sp, #0xc
- blx FUN_02096D2C
+ bl FUN_02096D2C
add r0, r7, #0x0
add r1, sp, #0xc
- blx FUN_02096DA0
+ bl FUN_02096DA0
cmp r0, #0x0
bgt _0203396C
add sp, #0x18
@@ -98916,11 +98916,11 @@ _0203396C:
_02033974:
add r0, r7, #0x0
add r1, sp, #0xc
- blx FUN_02096DA0
+ bl FUN_02096DA0
str r0, [sp, #0x8]
add r0, r7, #0x0
add r1, r5, #0x0
- blx FUN_02096DA0
+ bl FUN_02096DA0
ldr r1, [sp, #0x8]
cmp r1, r0
bne _02033994
@@ -98933,7 +98933,7 @@ _02033994:
cmp r0, #0x0
bge _020339A6
add r0, r5, #0x0
- blx FUN_0209700C
+ bl FUN_0209700C
cmp r0, #0x0
bne _020339A6
str r4, [r6, #0x0]
@@ -99014,7 +99014,7 @@ _02033A1C:
add r0, r7, #0x0
add r1, r1, r3
mov r2, #0xc
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r5, #0x0
bl FUN_0202E1BC
b _02033A5C
@@ -99058,7 +99058,7 @@ FUN_02033A70: ; 0x02033A70
bl FUN_0202DFD8
ldr r1, [sp, #0x8]
mov r2, #0xc
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_02033AA6:
ldr r0, [sp, #0x28]
cmp r0, #0x0
@@ -99234,7 +99234,7 @@ _02033C06:
ldr r0, _02033CB4 ; =0x00300010
add r7, r1, #0x0
and r7, r0
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
b _02033C2C
_02033C1E:
ldr r0, _02033CB8 ; =0x04001000
@@ -99242,7 +99242,7 @@ _02033C1E:
ldr r0, _02033CB4 ; =0x00300010
add r7, r1, #0x0
and r7, r0
- blx GX_GetBankForSubOBJ
+ bl GX_GetBankForSubOBJ
_02033C2C:
cmp r7, #0x10
beq _02033C38
@@ -99413,24 +99413,24 @@ FUN_02033D3C: ; 0x02033D3C
mov r1, #0x96
ldr r0, [sp, #0x4]
lsl r1, r1, #0x2
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x4]
add r1, sp, #0x0
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r5, #0x1
bne _02033D80
ldr r0, [sp, #0x0]
add r1, r4, #0x0
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx GX_LoadOBJPltt
+ bl GX_LoadOBJPltt
b _02033D8C
_02033D80:
ldr r0, [sp, #0x0]
add r1, r4, #0x0
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx GXS_LoadOBJPltt
+ bl GXS_LoadOBJPltt
_02033D8C:
ldr r0, [sp, #0x4]
bl FUN_02016A18
@@ -99466,10 +99466,10 @@ _02033DC8:
mov r1, #0x96
ldr r0, [sp, #0x4]
lsl r1, r1, #0x2
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r0, [sp, #0x4]
add r1, sp, #0x0
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r5, #0x1
bne _02033DF0
mov r0, #0x1
@@ -99478,7 +99478,7 @@ _02033DC8:
ldr r0, _02033E64 ; =0x00300010
add r4, r1, #0x0
and r4, r0
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
b _02033E00
_02033DF0:
mov r0, #0x1
@@ -99487,7 +99487,7 @@ _02033DF0:
ldr r0, _02033E64 ; =0x00300010
add r4, r1, #0x0
and r4, r0
- blx GX_GetBankForOBJ
+ bl GX_GetBankForOBJ
_02033E00:
cmp r4, #0x10
beq _02033E0C
@@ -99529,14 +99529,14 @@ _02033E34:
mov r2, #0x2
ldr r0, [r0, #0x14]
lsl r2, r2, #0x8
- blx GX_LoadOBJ
+ bl GX_LoadOBJ
b _02033E52
_02033E46:
ldr r0, [sp, #0x0]
mov r2, #0x2
ldr r0, [r0, #0x14]
lsl r2, r2, #0x8
- blx GXS_LoadOBJ
+ bl GXS_LoadOBJ
_02033E52:
ldr r0, [sp, #0x4]
bl FUN_02016A18
@@ -99728,12 +99728,12 @@ _02033FA4:
mov r1, #0x0
bl FUN_0200E3A0
mov r0, #0x1
- blx OS_DisableIrqMask
+ bl OS_DisableIrqMask
ldr r1, _02034154 ; =FUN_02033F50
mov r0, #0x1
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x1
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
mov r0, #0x0
add r1, r0, #0x0
bl FUN_02015F10
@@ -100068,7 +100068,7 @@ _020342E4:
bne _02034308
mov r0, #0x1
add r1, r0, #0x0
- blx OS_WaitIrq
+ bl OS_WaitIrq
b _020342E4
_02034308:
add r0, sp, #0x14
@@ -100180,7 +100180,7 @@ _0203440A:
add r0, r5, #0x0
add r1, r4, r1
add r2, r7, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, [sp, #0x8]
add r5, r5, r7
cmp r0, #0x0
@@ -100191,7 +100191,7 @@ _0203440A:
add r1, r4, #0x2
mul r2, r3
lsl r2, r2, #0x1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldrb r1, [r4, #0x1]
ldrb r0, [r4, #0x0]
mul r0, r1
@@ -100207,7 +100207,7 @@ _0203443A:
mul r2, r3
lsr r0, r0, #0x10
lsl r2, r2, #0x1
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
_0203444E:
ldr r0, [sp, #0x4]
cmp r0, #0x0
@@ -100218,7 +100218,7 @@ _0203444E:
add r0, r5, #0x0
add r1, r4, r1
mul r2, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldrb r1, [r4, #0x1]
ldrb r0, [r4, #0x0]
mul r0, r1
@@ -100231,7 +100231,7 @@ _0203446C:
mul r2, r3
add r1, r4, r1
lsl r2, r2, #0x1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r6, #0x0
bl FUN_02016A18
add sp, #0xc
@@ -100425,7 +100425,7 @@ FUN_020345A8: ; 0x020345A8
ldr r2, _020345D8 ; =0x00000708
add r0, r0, r1
add r1, r5, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0x0
bl FUN_02016A18
add r0, r5, #0x0
@@ -101482,7 +101482,7 @@ FUN_02034CB4: ; 0x02034CB4
mov r1, #0x0
lsl r2, r2, #0x2
add r5, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
bl FUN_020347D8
cmp r0, #0x0
@@ -101518,7 +101518,7 @@ FUN_02034CEC: ; 0x02034CEC
mov r0, #0x0
add r1, r5, r1
lsl r2, r2, #0x8
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0xa
add r1, r4, #0x0
bl LoadFromNARC_7
@@ -101614,7 +101614,7 @@ FUN_02034D98: ; 0x02034D98
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0xa0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
add r0, #0x6c
bl FUN_0204ADE0
@@ -102016,14 +102016,14 @@ _02035010:
bne _0203502A
add r0, r6, #0x0
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
bne _02035038
_0203502A:
mov r1, #0x19
add r0, r6, #0x0
lsl r1, r1, #0x4
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x0
bne _0203503C
_02035038:
@@ -102476,7 +102476,7 @@ _02035398:
add r0, r6, #0x0
bl FUN_02035734
mov r0, #0x1
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0xe
strh r0, [r4, #0x2a]
b _02035484
@@ -102486,7 +102486,7 @@ _020353C0:
cmp r0, #0x0
beq _02035484
mov r0, #0x1
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0x9
strh r0, [r4, #0x2a]
b _02035484
@@ -102511,7 +102511,7 @@ _020353F6:
ldr r0, [r5, #0x34]
bl FUN_02058780
mov r0, #0x1
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0xb
strh r0, [r4, #0x2a]
b _02035484
@@ -103217,7 +103217,7 @@ FUN_020359B8: ; 0x020359B8
add r0, #0x38
mov r2, #0x8
mov r3, #0xb
- bl FUN_021D959C
+ bl MOD05_021D959C
mov r0, #0x2
str r0, [sp, #0x0]
mov r0, #0x1
@@ -103229,7 +103229,7 @@ FUN_020359B8: ; 0x020359B8
mov r2, #0x5
add r0, #0x38
mov r3, #0x0
- bl FUN_021D967C
+ bl MOD05_021D967C
ldr r0, _02035B64 ; =0x000034D8
mov r1, #0x42
str r0, [sp, #0x0]
@@ -103237,7 +103237,7 @@ FUN_020359B8: ; 0x020359B8
mov r2, #0x1
add r0, #0x38
mov r3, #0x0
- bl FUN_021D96F4
+ bl MOD05_021D96F4
ldr r0, _02035B64 ; =0x000034D8
mov r2, #0x0
str r0, [sp, #0x0]
@@ -103245,7 +103245,7 @@ FUN_020359B8: ; 0x020359B8
mov r1, #0x42
add r0, #0x38
add r3, r2, #0x0
- bl FUN_021D9708
+ bl MOD05_021D9708
mov r0, #0x1
str r0, [sp, #0x0]
ldr r0, _02035B64 ; =0x000034D8
@@ -103255,11 +103255,11 @@ FUN_020359B8: ; 0x020359B8
mov r2, #0x2
add r0, #0x38
mov r3, #0x0
- bl FUN_021D971C
+ bl MOD05_021D971C
ldr r0, [sp, #0xc]
ldr r1, _02035B68 ; =0x020F2B14
add r0, #0x38
- bl FUN_021D9820
+ bl MOD05_021D9820
mov r2, #0x67
ldr r1, [sp, #0xc]
lsl r2, r2, #0x2
@@ -103276,7 +103276,7 @@ FUN_020359B8: ; 0x020359B8
mov r2, #0x4
add r0, #0x38
mov r3, #0x0
- bl FUN_021D96F4
+ bl MOD05_021D96F4
ldr r0, _02035B6C ; =0x000034D9
mov r1, #0x42
str r0, [sp, #0x0]
@@ -103284,7 +103284,7 @@ FUN_020359B8: ; 0x020359B8
mov r2, #0x3
add r0, #0x38
mov r3, #0x0
- bl FUN_021D9708
+ bl MOD05_021D9708
mov r0, #0x1
str r0, [sp, #0x0]
ldr r0, _02035B6C ; =0x000034D9
@@ -103294,7 +103294,7 @@ FUN_020359B8: ; 0x020359B8
mov r2, #0x6
add r0, #0x38
mov r3, #0x0
- bl FUN_021D971C
+ bl MOD05_021D971C
ldr r0, [sp, #0x14]
mov r4, #0x0
cmp r0, #0x0
@@ -103352,7 +103352,7 @@ _02035AF2:
ldr r0, [sp, #0xc]
add r1, sp, #0x68
add r0, #0x38
- bl FUN_021D9820
+ bl MOD05_021D9820
mov r1, #0x1a
lsl r1, r1, #0x4
add r2, sp, #0x5c
@@ -103437,7 +103437,7 @@ _02035B90:
_02035BA6:
add r5, #0x38
add r0, r5, #0x0
- bl FUN_021D99F8
+ bl MOD05_021D99F8
pop {r3-r7, pc}
thumb_func_start FUN_02035BB0
@@ -103505,7 +103505,7 @@ FUN_02035C18: ; 0x02035C18
add r6, r2, #0x0
bl FUN_020201DC
mov r1, #0x3
- blx _u32_div_f
+ bl _u32_div_f
add r2, r0, #0x0
lsl r1, r2, #0x1
add r1, r2, r1
@@ -103551,7 +103551,7 @@ FUN_02035C78: ; 0x02035C78
add r4, r0, #0x0
bl FUN_020201DC
mov r1, #0x3
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x1
bne _02035C9E
add r0, r4, #0x0
@@ -103629,7 +103629,7 @@ FUN_02035D10: ; 0x02035D10
bl FUN_0204652C
add r4, r0, #0x0
mov r0, #0x0
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0x72
ldr r1, _02035D30 ; =FUN_02035D34
lsl r0, r0, #0x2
@@ -103736,7 +103736,7 @@ FUN_02035DF8: ; 0x02035DF8
bl FUN_0204652C
add r4, r0, #0x0
mov r0, #0x0
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0x72
ldr r1, _02035E18 ; =FUN_02035E1C
lsl r0, r0, #0x2
@@ -103792,7 +103792,7 @@ FUN_02035E50: ; 0x02035E50
ldr r1, [r4, r1]
mov r2, #0x40
add r6, r0, #0x0
- blx memcpy
+ bl memcpy
mov r0, #0x7e
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -104266,7 +104266,7 @@ FUN_02036284: ; 0x02036284
bl FUN_0204652C
add r4, r0, #0x0
mov r0, #0x0
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0x72
ldr r1, _020362A4 ; =FUN_020362A8
lsl r0, r0, #0x2
@@ -104326,7 +104326,7 @@ FUN_020362E4: ; 0x020362E4
add r2, r0, #0x0
ldr r0, [sp, #0x8]
ldr r1, [r4, r1]
- blx memcpy
+ bl memcpy
mov r0, #0x7e
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -104390,7 +104390,7 @@ _0203638A:
mov r1, #0x0
mov r2, #0x40
add r5, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r6, #0xc]
bl FUN_0206BB1C
str r0, [r5, #0x0]
@@ -104490,7 +104490,7 @@ _02036474:
mov r1, #0x0
mov r2, #0x40
add r5, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [sp, #0x4]
str r0, [r5, #0x0]
ldr r0, [r6, #0xc]
@@ -104561,7 +104561,7 @@ FUN_02036510: ; 0x02036510
bl FUN_0204652C
add r4, r0, #0x0
mov r0, #0x0
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0x72
ldr r1, _02036530 ; =FUN_02036534
lsl r0, r0, #0x2
@@ -104740,7 +104740,7 @@ FUN_02036684: ; 0x02036684
bl FUN_0204652C
add r4, r0, #0x0
mov r0, #0x0
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0x72
ldr r1, _020366A4 ; =FUN_020366A8
lsl r0, r0, #0x2
@@ -104801,7 +104801,7 @@ FUN_02036700: ; 0x02036700
bl FUN_0204652C
add r4, r0, #0x0
mov r0, #0x0
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0x72
ldr r1, _02036720 ; =FUN_02036724
lsl r0, r0, #0x2
@@ -104964,7 +104964,7 @@ FUN_0203684C: ; 0x0203684C
ldr r1, [r4, r1]
mov r2, #0x30
add r7, r0, #0x0
- blx memcpy
+ bl memcpy
mov r0, #0x7e
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -104982,7 +104982,7 @@ FUN_0203684C: ; 0x0203684C
str r1, [sp, #0x0]
mov r1, #0x0
add r5, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r6, #0xc]
bl FUN_0206BB1C
str r0, [r5, #0x0]
@@ -105511,7 +105511,7 @@ FUN_02036CEC: ; 0x02036CEC
mov r1, #0x0
mov r2, #0x40
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0xc]
bl FUN_0206BB1C
str r0, [r4, #0x0]
@@ -106317,8 +106317,8 @@ FUN_02037334: ; 0x02037334
_02037348: .word 0x0000003F
_0203734C: .word 0x021DBAB8
- thumb_func_start FUN_02037350
-FUN_02037350: ; 0x02037350
+ thumb_func_start LoadOverlay_MODULE_05
+LoadOverlay_MODULE_05: ; 0x02037350
push {r4, lr}
add r4, r0, #0x0
ldr r0, [r4, #0x0]
@@ -106333,9 +106333,9 @@ _02037360:
beq _0203736C
bl ErrorHandling
_0203736C:
- ldr r0, _0203738C ; =0x00000005
+ ldr r0, _0203738C ; =SDK_OVERLAY_MODULE_05_ID
mov r1, #0x2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
mov r1, #0x0
str r1, [r4, #0x64]
ldr r0, [r4, #0x0]
@@ -106348,7 +106348,7 @@ _0203736C:
str r0, [r1, #0x0]
pop {r4, pc}
.balign 4
-_0203738C: .word 0x00000005
+_0203738C: .word SDK_OVERLAY_MODULE_05_ID
_02037390: .word 0x021F64C8
thumb_func_start FUN_02037394
@@ -106446,7 +106446,7 @@ FUN_02037400: ; 0x02037400
mov r1, #0x0
mov r2, #0xb8
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0xb
mov r1, #0x10
bl FUN_02016998
@@ -106564,7 +106564,7 @@ FUN_02037524: ; 0x02037524
mov r1, #0x0
add r0, r4, #0x0
add r2, r1, #0x0
- bl FUN_021EFA9C
+ bl MOD05_021EFA9C
_02037546:
ldr r0, [r4, #0x0]
ldr r1, [r0, #0x0]
@@ -106575,8 +106575,8 @@ _02037546:
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _0203756E
- ldr r0, _02037590 ; =0x00000005
- bl FUN_02005F60
+ ldr r0, _02037590 ; =SDK_OVERLAY_MODULE_05_ID
+ bl UnloadOverlayByID
b _0203756E
_02037562:
ldr r1, [r0, #0x4]
@@ -106604,7 +106604,7 @@ _0203758C:
mov r0, #0x0
pop {r4, pc}
.balign 4
-_02037590: .word 0x00000005
+_02037590: .word SDK_OVERLAY_MODULE_05_ID
thumb_func_start FUN_02037594
FUN_02037594: ; 0x02037594
@@ -106637,7 +106637,7 @@ _020375B4:
add r1, r4, #0x0
lsr r2, r2, #0x10
lsr r3, r3, #0x10
- bl FUN_021D8164
+ bl MOD05_021D8164
_020375D4:
ldr r0, [r4, #0x1c]
ldr r2, [r4, #0x6c]
@@ -106669,7 +106669,7 @@ _020375FC:
beq _02037610
add r0, sp, #0x8
add r1, r4, #0x0
- bl FUN_021D85FC
+ bl MOD05_021D85FC
_02037610:
add r0, r4, #0x0
add r1, r5, #0x0
@@ -106684,7 +106684,7 @@ _0203761C:
beq _02037638
add r0, sp, #0x8
add r1, r4, #0x0
- bl FUN_021D865C
+ bl MOD04_021D865C
cmp r0, #0x1
bne _0203763A
mov r5, #0x0
@@ -106704,7 +106704,7 @@ _02037646:
_0203764C:
add r0, sp, #0x8
add r1, r4, #0x0
- bl FUN_021D8758
+ bl MOD05_021D8758
cmp r0, #0x1
beq _02037754
add r3, sp, #0x8
@@ -106724,21 +106724,21 @@ _02037672:
beq _02037754
add r0, sp, #0x8
add r1, r4, #0x0
- bl FUN_021D8820
+ bl MOD05_021D8820
cmp r0, #0x1
bne _020376A6
ldr r0, [r4, #0x4]
ldr r0, [r0, #0x8]
- bl FUN_021E32F0
+ bl MOD05_021E32F0
add r0, r4, #0x0
mov r1, #0x4
- bl FUN_021E81BC
+ bl MOD05_021E81BC
ldr r0, [r4, #0x38]
- bl FUN_021E7138
+ bl MOD05_021E7138
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x1
- bl FUN_021EFA9C
+ bl MOD05_021EFA9C
add sp, #0x10
pop {r3-r5, pc}
_020376A6:
@@ -106749,13 +106749,13 @@ _020376A6:
beq _020376B8
ldr r0, [r4, #0x4]
ldr r0, [r0, #0x8]
- bl FUN_021E32F0
+ bl MOD05_021E32F0
_020376B8:
mov r5, #0x0
bl FUN_02037790
cmp r0, #0x0
beq _020376C8
- bl FUN_02252534
+ bl MOD20_02252534
add r5, r0, #0x0
_020376C8:
add r3, sp, #0x8
@@ -106775,23 +106775,23 @@ _020376E2:
beq _02037754
add r0, sp, #0x8
add r1, r4, #0x0
- bl FUN_021D8320
+ bl MOD05_021D8320
cmp r0, #0x1
bne _0203771C
ldr r0, [r4, #0x4]
ldr r0, [r0, #0x8]
- bl FUN_021E32F0
+ bl MOD05_021E32F0
add r0, r4, #0x0
mov r1, #0x4
- bl FUN_021E81BC
+ bl MOD05_021E81BC
ldr r0, [r4, #0x38]
bl FUN_02055B14
ldr r0, [r4, #0x38]
- bl FUN_021E7138
+ bl MOD05_021E7138
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x1
- bl FUN_021EFA9C
+ bl MOD05_021EFA9C
add sp, #0x10
pop {r3-r5, pc}
_0203771C:
@@ -106802,13 +106802,13 @@ _0203771C:
beq _0203772E
ldr r0, [r4, #0x4]
ldr r0, [r0, #0x8]
- bl FUN_021E32F0
+ bl MOD05_021E32F0
_0203772E:
mov r5, #0x0
bl FUN_02037790
cmp r0, #0x0
beq _0203773E
- bl FUN_02252534
+ bl MOD20_02252534
add r5, r0, #0x0
_0203773E:
add r3, sp, #0x8
@@ -106923,7 +106923,7 @@ FUN_020377F0: ; 0x020377F0
thumb_func_start FUN_020377F4
FUN_020377F4: ; 0x020377F4
push {r3, lr}
- bl FUN_0222D5C0
+ bl MOD11_0222D5C0
cmp r0, #0x0
beq _02037802
mov r0, #0x1
@@ -107138,7 +107138,7 @@ FUN_0203797C: ; 0x0203797C
mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x40
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [r5, #0xc]
bl FUN_0206BB1C
str r0, [r4, #0x0]
@@ -107520,7 +107520,7 @@ FUN_02037C7C: ; 0x02037C7C
mov r1, #0x0
mov r2, #0x30
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r5, #0x0
bl LoadPlayerDataAddress
str r0, [r4, #0x4]
@@ -107569,7 +107569,7 @@ FUN_02037CF0: ; 0x02037CF0
mov r1, #0x0
mov r2, #0x30
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0xc]
bl FUN_0206BB1C
str r0, [r4, #0x0]
@@ -107970,7 +107970,7 @@ FUN_0203800C: ; 0x0203800C
mov r1, #0x0
mov r2, #0x20
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
bl FUN_0206BB1C
add r1, r7, #0x0
@@ -109041,7 +109041,7 @@ FUN_020388B4: ; 0x020388B4
add r4, r0, #0x0
ldr r0, [r4, #0xc]
bl FUN_0206BB1C
- bl FUN_021ED49C
+ bl MOD05_021ED49C
add r5, r0, #0x0
bne _020388CC
bl ErrorHandling
@@ -109131,7 +109131,7 @@ _02038956:
bl FUN_020127C0
mov r2, #0x3c
mov r3, #0x0
- blx _ll_sdiv
+ bl _ll_sdiv
add r3, r0, #0x0
ldr r1, [sp, #0x8]
ldr r2, [r5, #0x0]
@@ -109223,7 +109223,7 @@ FUN_02038A3C: ; 0x02038A3C
ldr r0, _02038AAC ; =0x020F2BE8
add r1, sp, #0x8
mov r2, #0xc
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r4, #0x0
mov r7, #0xc
add r6, sp, #0x8
@@ -109236,7 +109236,7 @@ _02038A68:
_02038A72:
bl FUN_0201B9EC
add r1, r7, #0x0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x18
lsr r2, r0, #0x18
ldrb r1, [r6, r4]
@@ -109269,11 +109269,11 @@ FUN_02038AB0: ; 0x02038AB0
push {r4, lr}
bl FUN_0204652C
add r4, r0, #0x0
- bl FUN_0224D79C
+ bl MOD06_0224D79C
cmp r0, #0x1
bne _02038ACA
add r0, r4, #0x0
- bl FUN_0224D76C
+ bl MOD06_0224D76C
mov r0, #0x1
pop {r4, pc}
_02038ACA:
@@ -109290,7 +109290,7 @@ FUN_02038AD0: ; 0x02038AD0
ldr r1, [r2, #0xc]
ldr r2, [r2, #0x8]
mov r0, #0x4
- bl FUN_0224D70C
+ bl MOD06_0224D70C
add r2, r0, #0x0
ldr r1, _02038AF0 ; =FUN_02038AB0
add r0, r4, #0x0
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index 785e5b48..dadbc8aa 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -224,7 +224,7 @@ _02038E32:
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0xdc
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, _02038E44 ; =0x0003643F
str r0, [r4, #0x0]
add r0, r4, #0x0
@@ -1187,7 +1187,7 @@ FUN_02039564: ; 0x02039564
bl FUN_02046380
mov r1, #0x0
mov r2, #0x40
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
pop {r4, pc}
.balign 4
@@ -1540,14 +1540,14 @@ _020397EC:
sub r1, r0, r1
mov r0, #0x7
sub r0, r0, r1
- blx abs
+ bl abs
strh r0, [r5, #0x0]
ldr r1, [r4, #0x8]
ldr r0, [sp, #0x14]
sub r1, r0, r1
mov r0, #0x7
sub r0, r0, r1
- blx abs
+ bl abs
strh r0, [r5, #0x2]
add r5, r5, #0x6
add r6, r6, #0x1
diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s
index b70ef94e..4b46da9e 100644
--- a/arm9/asm/unk_02046030.s
+++ b/arm9/asm/unk_02046030.s
@@ -597,10 +597,10 @@ _02046496:
thumb_func_start FUN_0204649C
FUN_0204649C: ; 0x0204649C
- ldr r3, _020464A0 ; =FUN_02037350
+ ldr r3, _020464A0 ; =LoadOverlay_MODULE_05
bx r3
.balign 4
-_020464A0: .word FUN_02037350
+_020464A0: .word LoadOverlay_MODULE_05
thumb_func_start FUN_020464A4
FUN_020464A4: ; 0x020464A4
@@ -1231,7 +1231,7 @@ FUN_02046948: ; 0x02046948
bl FUN_02046528
add r1, r0, #0x0
add r0, r4, #0x0
- bl FUN_02244558
+ bl MOD06_02244558
add r4, r0, #0x0
bl FUN_020475A0
add r6, r0, #0x0
@@ -1507,7 +1507,7 @@ _02046BA0:
_02046BAE:
ldr r1, [r4, #0x10]
add r0, r5, #0x0
- bl FUN_02248724
+ bl MOD06_02248724
add r0, r6, #0x0
bl FUN_0204B00C
ldr r0, [r4, #0x0]
@@ -1769,7 +1769,7 @@ FUN_02046DB4: ; 0x02046DB4
str r1, [r4, r0]
add r0, r5, #0x0
add r1, r4, #0x0
- bl FUN_0223CCDC
+ bl MOD06_0223CCDC
ldr r0, [r5, #0xc]
bl FUN_02029FC8
mov r1, #0x7
@@ -1811,7 +1811,7 @@ FUN_02046E18: ; 0x02046E18
add r0, r5, #0x0
add r1, r7, #0x0
add r3, r4, #0x0
- bl FUN_0223CD7C
+ bl MOD06_0223CD7C
ldr r0, [sp, #0x20]
cmp r0, #0x0
beq _02046E60
@@ -1991,7 +1991,7 @@ FUN_02046FA0: ; 0x02046FA0
add r1, r6, #0x0
add r2, r7, #0x0
add r3, r4, #0x0
- bl FUN_0223CD7C
+ bl MOD06_0223CD7C
mov r0, #0x63
mov r1, #0x1
lsl r0, r0, #0x2
@@ -2691,7 +2691,7 @@ _0204756A:
cmp r0, r1
bne _0204757C
add r0, r4, #0x0
- bl FUN_021E495C
+ bl MOD05_021E495C
_0204757C:
pop {r3-r5, pc}
nop
@@ -2910,7 +2910,7 @@ FUN_020476CC: ; 0x020476CC
mov r1, #0x0
lsl r2, r2, #0x2
add r7, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r1, #0x63
str r4, [r7, #0x0]
mov r0, #0x0
@@ -2926,7 +2926,7 @@ _020476FA:
add r1, r4, #0x0
mov r2, #0x34
str r0, [r6, #0x18]
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r0, [sp, #0x0]
add r6, r6, #0x4
add r0, r0, #0x1
@@ -3034,7 +3034,7 @@ _02047774:
add r0, r2, #0x4
add r0, r7, r0
mov r2, #0xc
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r7, #0x0
pop {r3-r7, pc}
@@ -4191,7 +4191,7 @@ _0204817A:
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x24
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0x0
str r0, [r4, #0x0]
str r5, [r4, #0x4]
@@ -4788,7 +4788,7 @@ _02048666:
mov r0, #0x4
bl FUN_020168D0
mov r0, #0x0
- blx OS_ResetSystem
+ bl OS_ResetSystem
add sp, #0xc
mov r0, #0x1
pop {r4-r7, pc}
@@ -5889,7 +5889,7 @@ _02048F9A:
str r1, [r6, #0x0]
add r0, r4, #0x0
add r2, r6, #0x0
- bl FUN_021E7750
+ bl MOD05_021E7750
ldr r0, [r5, #0x0]
add r0, r0, #0x1
str r0, [r5, #0x0]
@@ -6460,7 +6460,7 @@ _02049408:
str r0, [r4, #0x0]
b _0204942C
_02049416:
- bl FUN_021E331C
+ bl MOD05_021E331C
add r0, r5, #0x0
bl FUN_02049430
ldr r0, [r4, #0x0]
@@ -6494,7 +6494,7 @@ _02049452:
bl FUN_020553E8
add r1, r0, #0x0
add r0, r5, #0x0
- bl FUN_022483BC
+ bl MOD06_022483BC
str r0, [r4, #0x4]
ldr r1, _02049470 ; =FUN_02049474
add r0, r6, #0x0
@@ -6510,11 +6510,11 @@ FUN_02049474: ; 0x02049474
bl FUN_0204652C
add r4, r0, #0x0
ldr r0, [r4, #0x4]
- bl FUN_022483E0
+ bl MOD06_022483E0
cmp r0, #0x1
bne _02049490
ldr r0, [r4, #0x4]
- bl FUN_022483EC
+ bl MOD06_022483EC
mov r0, #0x1
pop {r4, pc}
_02049490:
@@ -6710,7 +6710,7 @@ _020495F0:
b _02049616
_020495FE:
add r0, r6, #0x0
- bl FUN_021E331C
+ bl MOD05_021E331C
add r0, r5, #0x0
bl FUN_0204961C
ldr r0, [r4, #0x0]
@@ -6744,7 +6744,7 @@ _0204963E:
ldr r2, [r6, #0x4]
add r0, r4, #0x0
mov r1, #0x4
- bl FUN_0224C8C8
+ bl MOD06_0224C8C8
add r2, r0, #0x0
ldr r1, _02049654 ; =0x0224C8E9
add r0, r5, #0x0
@@ -6785,7 +6785,7 @@ _0204968E:
add r0, r7, #0x0
mov r1, #0x1
add r2, r4, #0x4
- bl FUN_021E7750
+ bl MOD05_021E7750
ldr r0, [r4, #0x0]
add r0, r0, #0x1
str r0, [r4, #0x0]
@@ -6829,7 +6829,7 @@ _020496EA:
str r1, [r4, #0x4]
add r0, r7, #0x0
add r2, r4, #0x4
- bl FUN_021E7750
+ bl MOD05_021E7750
ldr r0, [r4, #0x0]
add r0, r0, #0x1
str r0, [r4, #0x0]
@@ -6863,7 +6863,7 @@ FUN_02049718: ; 0x02049718
mov r1, #0x0
mov r2, #0x1c
add r7, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0x38]
bl FUN_020552F8
mov r1, #0x0
@@ -7152,9 +7152,9 @@ _02049976:
add r0, r5, #0x0
mov r1, #0xb
mov r2, #0x3
- bl FUN_021E8588
+ bl MOD05_021E8588
str r0, [r4, #0x20]
- bl FUN_021E84F4
+ bl MOD05_021E84F4
add r3, r4, #0x0
mov r2, #0x0
ldr r1, _02049AC4 ; =0x000007D5
@@ -7176,9 +7176,9 @@ _020499A2:
b _02049AB2
_020499B2:
ldr r0, [r4, #0x20]
- bl FUN_021E856C
+ bl MOD05_021E856C
ldr r0, [r4, #0x20]
- bl FUN_021E85E4
+ bl MOD05_021E85E4
ldrh r0, [r4, #0x1c]
cmp r0, #0x0
bne _020499CA
@@ -7225,9 +7225,9 @@ _02049A06:
_02049A14:
mov r0, #0x1
str r0, [r5, #0x6c]
- ldr r0, _02049AC8 ; =0x00000012
+ ldr r0, _02049AC8 ; =SDK_OVERLAY_MODULE_18_ID
mov r1, #0x2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
add r0, r5, #0x0
bl FUN_0204FC5C
ldr r0, [r4, #0x14]
@@ -7265,7 +7265,7 @@ _02049A64:
beq _02049AB2
bl FUN_0204FCA0
add r0, r5, #0x0
- bl FUN_02244824
+ bl MOD18_02244824
mov r1, #0x0
str r0, [r5, #0x68]
mov r0, #0x2
@@ -7285,7 +7285,7 @@ _02049A96:
cmp r0, #0x0
beq _02049AB2
mov r0, #0x1
- bl FUN_02247970
+ bl MOD18_02247970
add r0, r4, #0x0
bl FUN_02016A18
add sp, #0x8
@@ -7300,7 +7300,7 @@ _02049AB8: .word 0x000003D9
_02049ABC: .word 0x020F46D8
_02049AC0: .word 0x000007F2
_02049AC4: .word 0x000007D5
-_02049AC8: .word 0x00000012
+_02049AC8: .word SDK_OVERLAY_MODULE_18_ID
thumb_func_start FUN_02049ACC
FUN_02049ACC: ; 0x02049ACC
@@ -7332,10 +7332,10 @@ _02049AF2: ; jump table (using 16-bit offset)
.short _02049BD2 - _02049AF2 - 2; case 7
_02049B02:
mov r0, #0x0
- bl FUN_02247970
+ bl MOD18_02247970
bl FUN_0204FCD8
ldr r0, [r5, #0x68]
- bl FUN_0224484C
+ bl MOD18_0224484C
mov r0, #0x2
str r0, [sp, #0x0]
mov r0, #0x1e
@@ -7386,8 +7386,8 @@ _02049B68:
_02049B76:
mov r0, #0x0
str r0, [r5, #0x6c]
- ldr r0, _02049BE4 ; =0x00000012
- bl FUN_02005F60
+ ldr r0, _02049BE4 ; =SDK_OVERLAY_MODULE_18_ID
+ bl UnloadOverlayByID
ldr r0, [r4, #0x14]
mov r2, #0x1
str r0, [sp, #0x0]
@@ -7435,7 +7435,7 @@ _02049BDC:
add sp, #0x8
pop {r4-r6, pc}
nop
-_02049BE4: .word 0x00000012
+_02049BE4: .word SDK_OVERLAY_MODULE_18_ID
thumb_func_start FUN_02049BE8
FUN_02049BE8: ; 0x02049BE8
@@ -7614,7 +7614,7 @@ _02049D30:
add r0, r7, #0x0
mov r1, #0x1
add r2, r5, #0x4
- bl FUN_021E7750
+ bl MOD05_021E7750
ldr r0, [r4, #0x0]
add r0, r0, #0x1
str r0, [r4, #0x0]
@@ -7675,7 +7675,7 @@ FUN_02049D9C: ; 0x02049D9C
add r6, r0, #0x0
mov r1, #0x0
mov r2, #0x1c
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r2, r6, #0x0
ldmia r4!, {r0-r1}
add r2, #0x8
@@ -7768,7 +7768,7 @@ _02049E74:
str r1, [r5, #0x4]
add r0, r7, #0x0
add r2, r5, #0x4
- bl FUN_021E7750
+ bl MOD05_021E7750
ldr r0, [r4, #0x0]
add r0, r0, #0x1
str r0, [r4, #0x0]
@@ -7806,7 +7806,7 @@ FUN_02049EA4: ; 0x02049EA4
mov r1, #0x0
mov r2, #0x1c
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r7, #0x0
add r1, r5, #0x0
bl FUN_02048CB0
@@ -8074,7 +8074,7 @@ FUN_0204A0C8: ; 0x0204A0C8
add r0, r4, #0x0
add r1, r5, #0x0
add r2, r7, #0x0
- bl FUN_021ECF14
+ bl MOD05_021ECF14
add r0, r6, #0x0
add r1, r4, #0x0
bl FUN_0206B900
@@ -8608,7 +8608,7 @@ FUN_0204A4A4: ; 0x0204A4A4
ldr r2, [r2, #0x0]
add r0, r7, #0x0
add r3, sp, #0x28
- bl FUN_021F4520
+ bl MOD05_021F4520
str r0, [sp, #0x20]
lsr r0, r7, #0x5
str r0, [sp, #0x18]
@@ -8632,7 +8632,7 @@ FUN_0204A4A4: ; 0x0204A4A4
mul r0, r1
ldr r1, [sp, #0xc]
add r0, r7, r0
- bl FUN_021EF620
+ bl MOD05_021EF620
ldr r2, [sp, #0x14]
add r1, r0, #0x0
add r3, r2, #0x0
@@ -8641,7 +8641,7 @@ FUN_0204A4A4: ; 0x0204A4A4
mul r3, r0
ldr r0, [sp, #0x18]
add r0, r0, r3
- bl FUN_021EF654
+ bl MOD05_021EF654
add r1, r0, #0x0
cmp r1, #0x3
bls _0204A53C
@@ -8651,14 +8651,14 @@ _0204A53C:
lsl r1, r1, #0x18
ldr r0, [sp, #0x8]
lsr r1, r1, #0x18
- bl FUN_021EF8C8
+ bl MOD05_021EF8C8
add r3, r0, #0x0
add r0, sp, #0x30
str r0, [sp, #0x0]
ldr r0, [sp, #0x4]
ldr r1, [sp, #0x2c]
ldr r2, [sp, #0x34]
- bl FUN_021F3DA4
+ bl MOD05_021F3DA4
add r4, r0, #0x0
_0204A558:
ldr r0, [sp, #0x20]
@@ -8668,7 +8668,7 @@ _0204A558:
add r5, #0x9c
ldrb r0, [r0, #0x0]
ldr r1, [r5, #0x0]
- bl FUN_021F4568
+ bl MOD05_021F4568
add r5, r0, #0x0
cmp r4, #0x0
beq _0204A59E
@@ -8731,7 +8731,7 @@ FUN_0204A5C0: ; 0x0204A5C0
asr r1, r1, #0x10
asr r2, r2, #0x10
mov r3, #0x0
- bl FUN_021EF844
+ bl MOD05_021EF844
ldr r1, [sp, #0x8]
cmp r1, #0x0
beq _0204A5EE
@@ -8758,7 +8758,7 @@ FUN_0204A5F4: ; 0x0204A5F4
add r3, sp, #0x0
add r5, r1, #0x0
add r6, r2, #0x0
- bl FUN_021EF844
+ bl MOD05_021EF844
cmp r0, #0x0
bne _0204A612
mov r0, #0xff
@@ -8769,7 +8769,7 @@ _0204A612:
add r1, sp, #0x0
ldrb r1, [r1, #0x0]
add r0, r7, #0x0
- bl FUN_021EF8DC
+ bl MOD05_021EF8DC
lsr r2, r5, #0x1f
lsl r1, r5, #0x1b
sub r1, r1, r2
@@ -9114,7 +9114,7 @@ FUN_0204A87C: ; 0x0204A87C
add r4, r2, #0x0
add r0, sp, #0x0
add r1, r3, #0x0
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
ldr r1, [sp, #0x0]
ldr r0, [r4, #0x0]
ldr r2, [sp, #0x8]
@@ -9159,11 +9159,11 @@ _0204A8D4:
ldr r0, [sp, #0x8]
ldr r1, [r1, #0x24]
add r2, sp, #0xc
- bl FUN_021EF604
+ bl MOD05_021EF604
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x8]
ldr r0, [r0, #0x24]
- bl FUN_021EF824
+ bl MOD05_021EF824
add r4, r0, #0x0
ldr r0, [sp, #0x0]
ldr r0, [r0, #0x28]
@@ -9176,7 +9176,7 @@ _0204A8D4:
_0204A900:
ldr r0, [sp, #0xc]
add r1, r5, #0x0
- bl FUN_021E7ED0
+ bl MOD05_021E7ED0
add r1, r7, #0x0
add r2, sp, #0x10
add r4, r0, #0x0
@@ -9184,7 +9184,7 @@ _0204A900:
cmp r0, #0x0
beq _0204A92E
add r0, r4, #0x0
- bl FUN_021E7EC4
+ bl MOD05_021E7EC4
cmp r0, r6
bne _0204A92E
ldr r0, [sp, #0x4]
@@ -9227,11 +9227,11 @@ _0204A95C:
ldr r0, [sp, #0x8]
ldr r1, [r1, #0x24]
add r2, sp, #0xc
- bl FUN_021EF604
+ bl MOD05_021EF604
ldr r0, [sp, #0x0]
ldr r1, [sp, #0x8]
ldr r0, [r0, #0x24]
- bl FUN_021EF824
+ bl MOD05_021EF824
add r6, r0, #0x0
ldr r0, [sp, #0x0]
ldr r0, [r0, #0x28]
@@ -9244,7 +9244,7 @@ _0204A95C:
_0204A988:
ldr r0, [sp, #0xc]
add r1, r6, #0x0
- bl FUN_021E7ED0
+ bl MOD05_021E7ED0
ldr r1, [sp, #0x4]
add r2, sp, #0x10
add r7, r0, #0x0
@@ -9252,7 +9252,7 @@ _0204A988:
cmp r0, #0x0
beq _0204A9D2
add r0, r7, #0x0
- bl FUN_021E7EC4
+ bl MOD05_021E7EC4
mov r1, #0x0
cmp r4, #0x0
bls _0204A9D2
@@ -9311,14 +9311,14 @@ _0204A9FE:
add r0, r7, #0x0
ldr r1, [r1, #0x24]
add r2, sp, #0xc
- bl FUN_021EF604
+ bl MOD05_021EF604
mov r4, #0x0
_0204AA0C:
ldr r0, [sp, #0xc]
add r1, r4, #0x0
- bl FUN_021E7ED0
+ bl MOD05_021E7ED0
add r6, r0, #0x0
- bl FUN_021E7EC4
+ bl MOD05_021E7EC4
cmp r0, r5
bne _0204AA40
ldr r0, [sp, #0x4]
@@ -9332,7 +9332,7 @@ _0204AA26:
ldr r0, [sp, #0x0]
add r1, r7, #0x0
ldr r0, [r0, #0x24]
- bl FUN_021EF824
+ bl MOD05_021EF824
ldr r1, [sp, #0x8]
str r0, [r1, #0x0]
_0204AA3A:
@@ -9370,14 +9370,14 @@ _0204AA6C:
ldr r0, [sp, #0x8]
ldr r1, [r1, #0x24]
add r2, sp, #0xc
- bl FUN_021EF604
+ bl MOD05_021EF604
mov r6, #0x0
_0204AA7A:
ldr r0, [sp, #0xc]
add r1, r6, #0x0
- bl FUN_021E7ED0
+ bl MOD05_021E7ED0
add r7, r0, #0x0
- bl FUN_021E7EC4
+ bl MOD05_021E7EC4
mov r1, #0x0
cmp r4, #0x0
bls _0204AAB6
@@ -9432,7 +9432,7 @@ FUN_0204AAD4: ; 0x0204AAD4
add r5, r0, #0x0
add r6, r1, #0x0
str r2, [r4, #0x8]
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r1, #0x10
lsr r1, r1, #0x10
ldr r0, [r4, #0x0]
@@ -9441,7 +9441,7 @@ FUN_0204AAD4: ; 0x0204AAD4
str r0, [r4, #0x0]
add r0, r5, #0x0
add r1, r6, #0x0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
ldr r1, [r4, #0x8]
@@ -9890,7 +9890,7 @@ _0204AE28:
ldr r0, [r4, #0x0]
mov r1, #0x6
add r0, r0, #0x1
- blx _s32_div_f
+ bl _s32_div_f
str r1, [r4, #0x0]
_0204AE58:
pop {r4, pc}
@@ -9933,7 +9933,7 @@ _0204AE74:
ldr r0, [r4, #0x0]
mov r1, #0x6
add r0, r0, #0x1
- blx _s32_div_f
+ bl _s32_div_f
str r1, [r4, #0x0]
_0204AEA6:
pop {r4, pc}
@@ -9957,7 +9957,7 @@ _0204AEC6:
ldr r0, [r4, #0x8]
add r1, r5, #0x0
add r2, r4, #0x4
- bl FUN_021E3444
+ bl MOD05_021E3444
ldr r1, [r4, #0xc]
mov r0, #0x5
lsl r1, r1, #0x10
@@ -10221,7 +10221,7 @@ _0204B0C0:
str r0, [r4, #0x0]
b _0204B0E4
_0204B0CE:
- bl FUN_021E331C
+ bl MOD05_021E331C
add r0, r5, #0x0
bl FUN_0204B00C
ldr r0, [r4, #0x0]
@@ -10279,7 +10279,7 @@ FUN_0204B130: ; 0x0204B130
add r6, r0, #0x0
add r5, r1, #0x0
add r0, r2, #0x0
- blx RTC_ConvertDateToDay
+ bl RTC_ConvertDateToDay
ldr r1, [r5, #0x20]
add r4, r0, #0x0
cmp r4, r1
@@ -10306,13 +10306,13 @@ FUN_0204B158: ; 0x0204B158
add r5, r1, #0x0
add r0, r4, #0x0
add r1, r6, #0x0
- blx RTC_ConvertDateTimeToSecond
+ bl RTC_ConvertDateTimeToSecond
str r1, [sp, #0x8]
add r1, r5, #0x0
add r7, r0, #0x0
add r0, r5, #0x4
add r1, #0x14
- blx RTC_ConvertDateTimeToSecond
+ bl RTC_ConvertDateTimeToSecond
add r2, r1, #0x0
sub r1, r7, r0
ldr r1, [sp, #0x8]
@@ -10337,7 +10337,7 @@ _0204B19C:
mov r2, #0x3c
mov r3, #0x0
str r1, [sp, #0x8]
- blx _ll_sdiv
+ bl _ll_sdiv
add r7, r0, #0x0
cmp r7, #0x0
ble _0204B1D8
@@ -10505,7 +10505,7 @@ FUN_0204B2F0: ; 0x0204B2F0
ldr r3, [r3, #0x28]
add r0, r5, #0x0
add r1, r4, #0x0
- blx RTC_ConvertSecondToDateTime
+ bl RTC_ConvertSecondToDateTime
pop {r3-r5, pc}
thumb_func_start FUN_0204B30C
@@ -10520,7 +10520,7 @@ FUN_0204B30C: ; 0x0204B30C
ldr r3, [r3, #0x30]
add r0, r5, #0x0
add r1, r4, #0x0
- blx RTC_ConvertSecondToDateTime
+ bl RTC_ConvertSecondToDateTime
pop {r3-r5, pc}
thumb_func_start FUN_0204B328
@@ -10600,7 +10600,7 @@ FUN_0204B388: ; 0x0204B388
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x64
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r6, [r4, #0x0]
add r0, r6, #0x0
bl FUN_02025128
@@ -10661,7 +10661,7 @@ FUN_0204B410: ; 0x0204B410
add r5, r1, #0x0
add r0, r4, #0x0
mov r1, #0x11
- bl FUN_021E4C54
+ bl MOD05_021E4C54
add r1, r0, #0x0
ldr r0, [r5, #0x0]
bl FUN_02016998
@@ -10669,7 +10669,7 @@ FUN_0204B410: ; 0x0204B410
ldr r2, [r5, #0x60]
add r0, r4, #0x0
mov r1, #0x11
- bl FUN_021E4C60
+ bl MOD05_021E4C60
add r0, r5, #0x0
add r1, r5, #0x0
add r5, #0x60
@@ -10700,7 +10700,7 @@ FUN_0204B450: ; 0x0204B450
ldr r0, [r3, #0x0]
str r0, [r2, #0x0]
add r0, sp, #0x0
- blx MTX_Identity33_
+ bl MTX_Identity33_
ldr r0, [r5, #0x4]
add r1, r4, #0x0
ldr r0, [r0, #0x18]
@@ -11203,9 +11203,9 @@ _0204B83E: ; jump table (using 16-bit offset)
_0204B848:
ldr r0, [r5, #0x38]
mov r1, #0x10
- bl FUN_021E5FD8
+ bl MOD05_021E5FD8
ldr r0, [r5, #0x38]
- bl FUN_021E5FE0
+ bl MOD05_021E5FE0
ldr r0, [r5, #0x38]
bl FUN_020553A0
bl FUN_02058914
@@ -11392,9 +11392,9 @@ FUN_0204B9CC: ; 0x0204B9CC
bl FUN_02055648
add r1, r0, #0x0
ldr r0, [r4, #0x38]
- bl FUN_021E5FD8
+ bl MOD05_021E5FD8
ldr r0, [r4, #0x38]
- bl FUN_021E5FE0
+ bl MOD05_021E5FE0
pop {r4, pc}
.balign 4
@@ -11405,7 +11405,7 @@ FUN_0204B9EC: ; 0x0204B9EC
add r4, r0, #0x0
mov r0, #0x0
mov r2, #0x4c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r1, _0204BA14 ; =0x021C5A1C
add r0, r4, #0x0
bl FUN_0204BB20
@@ -11651,7 +11651,7 @@ FUN_0204BBC4: ; 0x0204BBC4
add r4, r0, #0x0
bl FUN_0201B9EC
ldr r1, _0204BBE4 ; =0x0000199A
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r5, r0, #0x10
cmp r5, #0xa
@@ -11780,13 +11780,13 @@ _0204BCA4:
lsl r1, r1, #0x10
ldr r0, _0204BD14 ; =0x0000FFFF
lsr r1, r1, #0x10
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0x0
add r1, r1, #0x1
lsl r1, r1, #0x10
add r0, r4, #0x0
lsr r1, r1, #0x10
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
add r6, #0x14
lsr r4, r0, #0x10
@@ -12410,7 +12410,7 @@ FUN_0204C0D4: ; 0x0204C0D4
beq _0204C0E6
add r0, #0x2a
mov r2, #0x78
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0204C0E6:
pop {r3, pc}
@@ -12422,7 +12422,7 @@ FUN_0204C0E8: ; 0x0204C0E8
add r1, r4, #0x0
add r1, #0x2a
mov r2, #0x78
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldrb r1, [r4, #0x0]
mov r0, #0x4
orr r0, r1
@@ -12581,7 +12581,7 @@ FUN_0204C1F4: ; 0x0204C1F4
_0204C214:
ldr r0, [r5, #0x4]
ldr r0, [r0, #0x1c]
- bl FUN_021F4608
+ bl MOD05_021F4608
ldr r0, [r4, #0x14]
str r0, [sp, #0x0]
ldr r0, [r4, #0x18]
@@ -12603,7 +12603,7 @@ _0204C23C:
beq _0204C258
ldr r0, [r5, #0x4]
ldr r0, [r0, #0x1c]
- bl FUN_021F45E8
+ bl MOD05_021F45E8
add r0, r4, #0x0
bl FUN_02016A18
add sp, #0xc
@@ -12843,7 +12843,7 @@ _0204C41E:
add r0, r7, #0x0
bl FUN_0204AD8C
add r0, r7, #0x0
- bl FUN_021E331C
+ bl MOD05_021E331C
mov r0, #0x0
str r0, [r4, #0x4]
ldr r1, [r4, #0x20]
@@ -12925,7 +12925,7 @@ _0204C4C8: ; jump table (using 16-bit offset)
.short _0204C510 - _0204C4C8 - 2; case 2
.short _0204C51E - _0204C4C8 - 2; case 3
_0204C4D0:
- bl FUN_021DA5B8
+ bl MOD05_021DA5B8
str r0, [r4, #0x1c]
ldr r0, [r5, #0x38]
bl FUN_02055320
@@ -12935,7 +12935,7 @@ _0204C4D0:
add r1, r0, #0x0
ldr r2, [r4, #0x1c]
add r0, r6, #0x0
- bl FUN_021DA5D0
+ bl MOD05_021DA5D0
ldr r0, [r4, #0x4]
add r0, r0, #0x1
str r0, [r4, #0x4]
@@ -12943,11 +12943,11 @@ _0204C4D0:
_0204C4F6:
ldr r1, [r4, #0x1c]
add r0, r5, #0x0
- bl FUN_021DA5D8
+ bl MOD05_021DA5D8
cmp r0, #0x0
beq _0204C522
ldr r0, [r4, #0x1c]
- bl FUN_021DA5C8
+ bl MOD05_021DA5C8
ldr r0, [r4, #0x4]
add r0, r0, #0x1
str r0, [r4, #0x4]
@@ -12985,7 +12985,7 @@ FUN_0204C528: ; 0x0204C528
beq _0204C598
b _0204C59C
_0204C54A:
- bl FUN_021DA5B8
+ bl MOD05_021DA5B8
str r0, [r4, #0x1c]
ldr r0, [r5, #0x38]
bl FUN_02055320
@@ -12995,7 +12995,7 @@ _0204C54A:
add r1, r0, #0x0
ldr r2, [r4, #0x1c]
add r0, r6, #0x0
- bl FUN_021DA5D0
+ bl MOD05_021DA5D0
ldr r0, [r4, #0x4]
add r0, r0, #0x1
str r0, [r4, #0x4]
@@ -13009,11 +13009,11 @@ _0204C570:
add r0, r5, #0x0
add r1, r6, #0x0
lsr r2, r2, #0x18
- bl FUN_021DAC70
+ bl MOD05_021DAC70
cmp r0, #0x0
beq _0204C59C
ldr r0, [r4, #0x1c]
- bl FUN_021DA5C8
+ bl MOD05_021DA5C8
ldr r0, [r4, #0x4]
add r0, r0, #0x1
str r0, [r4, #0x4]
@@ -13089,7 +13089,7 @@ _0204C61C:
ldr r0, _0204C640 ; =0x00000603
bl FUN_020054C8
mov r0, #0x0
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
ldr r0, [r4, #0x4]
add r0, r0, #0x1
str r0, [r4, #0x4]
@@ -13124,7 +13124,7 @@ FUN_0204C644: ; 0x0204C644
beq _0204C67E
b _0204C682
_0204C668:
- bl FUN_021DB030
+ bl MOD05_021DB030
add r2, r0, #0x0
ldr r1, _0204C688 ; =0x021DB1D1
add r0, r5, #0x0
@@ -13160,7 +13160,7 @@ FUN_0204C68C: ; 0x0204C68C
beq _0204C6C6
b _0204C6CA
_0204C6B0:
- bl FUN_021DB030
+ bl MOD05_021DB030
add r2, r0, #0x0
ldr r1, _0204C6D0 ; =0x021DB145
add r0, r5, #0x0
@@ -13224,7 +13224,7 @@ _0204C700:
str r0, [r5, #0x4]
b _0204C798
_0204C736:
- bl FUN_021DB030
+ bl MOD05_021DB030
add r2, r0, #0x0
ldr r1, _0204C79C ; =0x021DB251
add r0, r6, #0x0
@@ -13233,7 +13233,7 @@ _0204C736:
str r0, [r5, #0x4]
b _0204C798
_0204C74A:
- bl FUN_021DA5B8
+ bl MOD05_021DA5B8
str r0, [r5, #0x1c]
ldr r0, [r4, #0x38]
bl FUN_02055320
@@ -13243,7 +13243,7 @@ _0204C74A:
add r1, r0, #0x0
ldr r2, [r5, #0x1c]
add r0, r6, #0x0
- bl FUN_021DA5D0
+ bl MOD05_021DA5D0
ldr r0, [r5, #0x4]
add r0, r0, #0x1
str r0, [r5, #0x4]
@@ -13252,11 +13252,11 @@ _0204C770:
ldr r5, [r5, #0x1c]
add r0, r4, #0x0
add r1, r5, #0x0
- bl FUN_021DA7B4
+ bl MOD05_021DA7B4
cmp r0, #0x0
beq _0204C798
add r0, r5, #0x0
- bl FUN_021DA5C8
+ bl MOD05_021DA5C8
ldr r0, [r4, #0x38]
bl FUN_020553A0
mov r1, #0x0
@@ -13314,7 +13314,7 @@ _0204C7BE:
bl FUN_020463EC
b _0204C818
_0204C7FE:
- bl FUN_021DB030
+ bl MOD05_021DB030
add r2, r0, #0x0
ldr r1, _0204C820 ; =0x021DB381
add r0, r6, #0x0
@@ -13351,7 +13351,7 @@ FUN_0204C824: ; 0x0204C824
beq _0204C894
b _0204C898
_0204C846:
- bl FUN_021DA5B8
+ bl MOD05_021DA5B8
str r0, [r4, #0x1c]
ldr r0, [r5, #0x38]
bl FUN_02055320
@@ -13361,7 +13361,7 @@ _0204C846:
add r1, r0, #0x0
ldr r2, [r4, #0x1c]
add r0, r6, #0x0
- bl FUN_021DA5D0
+ bl MOD05_021DA5D0
ldr r0, [r4, #0x4]
add r0, r0, #0x1
str r0, [r4, #0x4]
@@ -13375,11 +13375,11 @@ _0204C86C:
add r0, r5, #0x0
add r1, r6, #0x0
lsr r2, r2, #0x18
- bl FUN_021DAAA4
+ bl MOD05_021DAAA4
cmp r0, #0x0
beq _0204C898
ldr r0, [r4, #0x1c]
- bl FUN_021DA5C8
+ bl MOD05_021DA5C8
ldr r0, [r4, #0x4]
add r0, r0, #0x1
str r0, [r4, #0x4]
@@ -13416,7 +13416,7 @@ _0204C8C0: ; jump table (using 16-bit offset)
.short _0204C932 - _0204C8C0 - 2; case 3
_0204C8C8:
mov r0, #0x1
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
ldr r0, [r5, #0x38]
bl FUN_020553A0
add r6, r0, #0x0
@@ -13489,7 +13489,7 @@ FUN_0204C93C: ; 0x0204C93C
beq _0204C976
b _0204C97A
_0204C960:
- bl FUN_021DB030
+ bl MOD05_021DB030
add r2, r0, #0x0
ldr r1, _0204C980 ; =0x021DB041
add r0, r5, #0x0
@@ -13740,7 +13740,7 @@ _0204CB32:
str r0, [r1, #0x0]
mov r1, #0x0
lsl r2, r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
_0204CB40:
ldr r1, _0204CC34 ; =0x021C5A68
ldr r0, _0204CC38 ; =0x000002BE
@@ -13751,7 +13751,7 @@ _0204CB40:
cmp r5, #0x0
str r2, [r0, #0x4]
beq _0204CB6C
- bl FUN_02244D1C
+ bl MOD18_02244D1C
add r1, r0, #0x0
mov r0, #0xf
bl FUN_02016998
@@ -13760,7 +13760,7 @@ _0204CB40:
str r0, [r2, #0x4]
ldr r0, [r1, #0x0]
ldr r0, [r0, #0x4]
- bl FUN_02244D20
+ bl MOD18_02244D20
_0204CB6C:
ldr r0, _0204CC34 ; =0x021C5A68
ldr r7, _0204CC3C ; =0x0000FFFF
@@ -14005,7 +14005,7 @@ _0204CD2C:
ldr r0, [r0, #0x4]
cmp r0, #0x0
beq _0204CD60
- bl FUN_02244D3C
+ bl MOD18_02244D3C
ldr r0, _0204CD70 ; =0x021C5A68
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x4]
@@ -14831,7 +14831,7 @@ _0204D3B2:
cmp r0, #0x0
beq _0204D3DC
add r0, r5, #0x0
- bl FUN_0223E4D4
+ bl MOD18_0223E4D4
_0204D3DC:
ldr r0, _0204D430 ; =0x021C5A68
ldr r1, _0204D438 ; =0x000002BE
@@ -14856,7 +14856,7 @@ _0204D3DC:
ldrh r1, [r1, #0x0]
ldrh r3, [r3, #0x0]
mov r2, #0x0
- bl FUN_021E5B30
+ bl MOD05_021E5B30
_0204D40E:
ldr r0, _0204D430 ; =0x021C5A68
mov r1, #0x1
@@ -14894,7 +14894,7 @@ FUN_0204D43C: ; 0x0204D43C
add r0, #0x5a
mov r1, #0x0
mov r2, #0x8
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r5, #0x0
bl FUN_0204CD78
ldr r0, _0204D4CC ; =0x021C5A68
@@ -14995,7 +14995,7 @@ FUN_0204D4F0: ; 0x0204D4F0
ldr r0, [r0, #0x4]
cmp r0, #0x0
beq _0204D52A
- bl FUN_02244D58
+ bl MOD18_02244D58
b _0204D52A
_0204D524:
add r0, r4, #0x0
@@ -15020,7 +15020,7 @@ _0204D536:
cmp r0, #0x0
bne _0204D556
add r0, r5, #0x0
- bl FUN_02245358
+ bl MOD18_02245358
_0204D556:
add r5, r5, #0x1
cmp r5, #0x8
@@ -15057,7 +15057,7 @@ _0204D58A:
cmp r0, #0x0
beq _0204D5A0
add r0, r5, #0x0
- bl FUN_02247614
+ bl MOD18_02247614
_0204D5A0:
lsl r0, r5, #0x10
lsr r0, r0, #0x10
@@ -15091,9 +15091,9 @@ _0204D5C6:
cmp r0, #0x0
beq _0204D5F0
add r0, r5, #0x0
- bl FUN_0223EB8C
+ bl MOD18_0223EB8C
add r0, r5, #0x0
- bl FUN_0223CB08
+ bl MOD18_0223CB08
_0204D5F0:
strb r5, [r6, #0x0]
ldr r3, [r4, #0x0]
@@ -15384,7 +15384,7 @@ _0204D7F6:
beq _0204D812
add r0, r5, #0x0
add r1, r6, #0x0
- bl FUN_02246F1C
+ bl MOD18_02246F1C
cmp r0, #0x0
bne _0204D812
mov r0, #0x1
@@ -15411,8 +15411,8 @@ FUN_0204D830: ; 0x0204D830
ldr r0, [r0, #0x4]
cmp r0, #0x0
beq _0204D852
- bl FUN_02244D40
- bl FUN_02244DA0
+ bl MOD18_02244D40
+ bl MOD18_02244DA0
cmp r0, #0x0
bne _0204D84E
mov r0, #0x1
@@ -15500,7 +15500,7 @@ _0204D8AA:
cmp r0, #0x0
beq _0204D8E0
add r1, r5, #0x0
- bl FUN_02244D40
+ bl MOD18_02244D40
str r0, [sp, #0x4]
_0204D8E0:
ldr r1, [r6, #0x0]
@@ -15509,7 +15509,7 @@ _0204D8E0:
cmp r0, #0x0
beq _0204D8F4
add r0, r5, #0x0
- bl FUN_02245F4C
+ bl MOD18_02245F4C
cmp r0, #0x0
bne _0204D976
_0204D8F4:
@@ -15536,7 +15536,7 @@ _0204D90A:
cmp r0, #0x0
beq _0204D93C
add r0, r5, #0x0
- bl FUN_0223F8D8
+ bl MOD18_0223F8D8
cmp r0, #0x0
bne _0204D976
add r0, r5, #0x0
@@ -15544,14 +15544,14 @@ _0204D90A:
cmp r0, #0x0
bne _0204D93C
add r0, r5, #0x0
- bl FUN_02247544
+ bl MOD06_02247544
cmp r0, #0x0
bne _0204D976
_0204D93C:
ldr r0, [sp, #0x4]
cmp r0, #0x0
beq _0204D94A
- bl FUN_02244DB0
+ bl MOD06_02244DB0
cmp r0, #0x0
beq _0204D976
_0204D94A:
@@ -15693,7 +15693,7 @@ _0204DA44:
ldr r1, [sp, #0xc]
ldr r2, [sp, #0x8]
add r0, r5, #0x0
- bl FUN_0224566C
+ bl MOD18_0224566C
cmp r0, #0x1
beq _0204DAE2
_0204DA66:
@@ -15756,7 +15756,7 @@ _0204DA8E:
add r0, r5, #0x0
add r2, sp, #0x14
mov r3, #0x0
- bl FUN_0224089C
+ bl MOD18_0224089C
_0204DAE2:
ldr r0, [sp, #0x0]
add r5, r5, #0x1
@@ -15889,7 +15889,7 @@ FUN_0204DBCC: ; 0x0204DBCC
cmp r0, #0x0
beq _0204DC14
add r0, r4, #0x0
- bl FUN_0223E554
+ bl MOD18_0223E554
ldr r0, _0204DC28 ; =0x021C5A68
ldr r3, [r0, #0x0]
ldr r0, _0204DC30 ; =0x000002BD
@@ -15905,7 +15905,7 @@ FUN_0204DBCC: ; 0x0204DBCC
ldrh r1, [r1, #0x0]
ldrh r3, [r3, #0x0]
mov r2, #0x0
- bl FUN_021E5B30
+ bl MOD05_021E5B30
_0204DC14:
mov r1, #0x0
add r0, r4, #0x0
@@ -16246,10 +16246,10 @@ _0204DE98:
b _0204DEEC
_0204DEC2:
ldr r0, [sp, #0x10]
- blx abs
+ bl abs
add r6, r0, #0x0
add r0, r7, #0x0
- blx abs
+ bl abs
cmp r6, r0
ble _0204DEE2
ldr r0, [sp, #0x10]
@@ -16269,9 +16269,9 @@ _0204DEEA:
mov r6, #0x80
_0204DEEC:
add r0, r7, #0x0
- blx abs
+ bl abs
ldr r0, [sp, #0x10]
- blx abs
+ bl abs
ldrb r3, [r5, #0x5]
add r0, r4, #0x0
add r1, r6, #0x0
@@ -16566,7 +16566,7 @@ _0204E124:
add r0, r5, #0x0
add r2, sp, #0x4
mov r3, #0x0
- bl FUN_0224089C
+ bl MOD18_0224089C
add sp, #0x8
mov r0, #0x1
pop {r3-r7, pc}
@@ -17428,9 +17428,9 @@ FUN_0204E758: ; 0x0204E758
ldr r0, [r0, #0x0]
add r1, r2, #0x0
ldr r0, [r0, #0x4]
- bl FUN_02244D40
+ bl MOD18_02244D40
add r1, r4, #0x0
- bl FUN_02244D98
+ bl MOD18_02244D98
pop {r4, pc}
nop
_0204E774: .word 0x021C5A68
@@ -17442,9 +17442,9 @@ FUN_0204E778: ; 0x0204E778
ldr r0, _0204E790 ; =0x021C5A68
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x4]
- bl FUN_02244D40
+ bl MOD18_02244D40
mov r1, #0x0
- bl FUN_02244D98
+ bl MOD18_02244D98
pop {r3, pc}
nop
_0204E790: .word 0x021C5A68
@@ -17500,7 +17500,7 @@ FUN_0204E7CC: ; 0x0204E7CC
ldrh r3, [r4, #0x2]
ldr r0, [r0, #0x54]
mov r2, #0x0
- bl FUN_021E5B30
+ bl MOD05_021E5B30
_0204E7FA:
strh r6, [r4, #0x0]
ldr r0, [sp, #0x0]
@@ -17528,7 +17528,7 @@ _0204E81A:
ldrh r1, [r4, #0x0]
ldrh r3, [r4, #0x2]
mov r2, #0x0
- bl FUN_021E5B30
+ bl MOD05_021E5B30
_0204E832:
ldr r0, _0204E848 ; =0x021C5A68
ldr r1, [r0, #0x0]
@@ -17664,7 +17664,7 @@ FUN_0204E8FC: ; 0x0204E8FC
ldr r1, [r1, #0x0]
ldr r0, _0204E968 ; =FUN_0204D308
ldr r1, [r1, #0x54]
- bl FUN_022494C8
+ bl MOD18_022494C8
pop {r4, pc}
_0204E936:
ldrb r0, [r4, #0x0]
@@ -17686,7 +17686,7 @@ _0204E936:
ldr r1, [r1, #0x0]
ldr r0, _0204E968 ; =FUN_0204D308
ldr r1, [r1, #0x54]
- bl FUN_0224A7C8
+ bl MOD06_0224A7C8
_0204E962:
pop {r4, pc}
.balign 4
@@ -17716,11 +17716,11 @@ _0204E988:
cmp r1, r0
bne _0204E9AA
bl FUN_0204F7E4
- bl FUN_0223D638
+ bl MOD18_0223D638
ldr r3, _0204EAD0 ; =FUN_0204E2AC
mov r1, #0x48
mov r2, #0x1
- bl FUN_0224DCB8
+ bl MOD18_0224DCB8
_0204E9AA:
ldrb r0, [r5, #0x0]
cmp r0, #0x1
@@ -17741,7 +17741,7 @@ _0204E9B8:
ldr r2, [r2, #0x0]
ldr r1, _0204EAD4 ; =FUN_0204D308
ldr r2, [r2, #0x54]
- bl FUN_02247A34
+ bl MOD18_02247A34
ldr r0, _0204EACC ; =0x021C5A68
ldrb r4, [r5, #0x1]
ldr r2, [r0, #0x0]
@@ -17831,7 +17831,7 @@ _0204EA7C:
ldr r2, [r2, #0x0]
add r0, r4, #0x0
ldr r2, [r2, #0x54]
- bl FUN_02248DF8
+ bl MOD18_02248DF8
_0204EA9A:
ldrb r0, [r5, #0x0]
cmp r0, #0x2
@@ -17841,18 +17841,18 @@ _0204EA9A:
cmp r1, r0
bne _0204EABC
bl FUN_0204F7E4
- bl FUN_0223D638
+ bl MOD18_0223D638
ldr r3, _0204EAD0 ; =FUN_0204E2AC
mov r1, #0x2
mov r2, #0x1
- bl FUN_0224DCB8
+ bl MOD18_0224DCB8
_0204EABC:
ldrb r0, [r5, #0x0]
cmp r0, #0x1
bne _0204EACA
ldrb r0, [r5, #0x1]
ldrb r1, [r5, #0x2]
- bl FUN_0223E4A8
+ bl MOD18_0223E4A8
_0204EACA:
pop {r4-r6, pc}
.balign 4
@@ -18548,7 +18548,7 @@ _0204F004:
bne _0204F01E
add r0, r1, #0x0
bl FUN_020553A0
- bl FUN_021E5970
+ bl MOD05_021E5970
ldr r1, _0204F06C ; =0x021C5A68
ldr r2, [r1, #0x0]
lsl r1, r4, #0x2
@@ -18568,7 +18568,7 @@ _0204F02C:
bne _0204F068
add r0, r1, #0x0
bl FUN_020553A0
- bl FUN_021E57D4
+ bl MOD05_021E57D4
ldr r1, _0204F06C ; =0x021C5A68
ldr r2, [r1, #0x0]
lsl r1, r4, #0x2
@@ -18581,7 +18581,7 @@ _0204F048:
bne _0204F068
add r0, r1, #0x0
bl FUN_020553A0
- bl FUN_021E5614
+ bl MOD05_021E5614
ldr r1, _0204F06C ; =0x021C5A68
ldr r2, [r1, #0x0]
lsl r1, r4, #0x2
@@ -18689,8 +18689,8 @@ FUN_0204F108: ; 0x0204F108
push {r3, lr}
bl FUN_02031190
bl FUN_0204F0A8
- bl FUN_0223D648
- bl FUN_0224DD94
+ bl MOD18_0223D648
+ bl MOD18_0224DD94
mov r0, #0x4
bl FUN_0204F774
pop {r3, pc}
@@ -18848,18 +18848,18 @@ FUN_0204F23C: ; 0x0204F23C
sub sp, #0x8
add r5, r0, #0x0
add r4, r1, #0x0
- bl FUN_0223E6B8
+ bl MOD18_0223E6B8
mov r0, #0x0
bl FUN_0204D628
mov r0, #0x4
bl FUN_0204F74C
- bl FUN_0223D648
+ bl MOD18_0223D648
add r6, r0, #0x0
ldrb r0, [r5, #0x1]
bl FUN_0202DFA4
add r1, r0, #0x0
add r0, r6, #0x0
- bl FUN_0224DDB8
+ bl MOD18_0224DDB8
cmp r4, #0x0
beq _0204F29C
bl FUN_02031190
@@ -18873,18 +18873,18 @@ FUN_0204F23C: ; 0x0204F23C
bl FUN_0204F0A8
bl FUN_02031190
bl FUN_0204F074
- bl FUN_0223D648
+ bl MOD18_0223D648
ldr r3, _0204F2CC ; =FUN_0204F108
mov r1, #0xa
mov r2, #0x1
- bl FUN_0224DCB8
+ bl MOD18_0224DCB8
b _0204F2AA
_0204F29C:
- bl FUN_0223D648
+ bl MOD18_0223D648
ldr r3, _0204F2CC ; =FUN_0204F108
mov r1, #0xb
mov r2, #0x1
- bl FUN_0224DCB8
+ bl MOD18_0224DCB8
_0204F2AA:
mov r0, #0xff
str r0, [sp, #0x0]
@@ -18965,11 +18965,11 @@ _0204F346:
b _0204F5DA
_0204F348:
bl FUN_0204F7E4
- bl FUN_0223D648
+ bl MOD18_0223D648
ldr r3, _0204F5E4 ; =FUN_0204E2B4
mov r1, #0x2
mov r2, #0x1
- bl FUN_0224DCB8
+ bl MOD18_0224DCB8
mov r0, #0xff
str r0, [sp, #0x0]
mov r3, #0x0
@@ -19033,11 +19033,11 @@ _0204F3AC:
add r0, r4, #0x0
bl FUN_02026C00
bl FUN_0204F7E4
- bl FUN_0223D648
+ bl MOD18_0223D648
ldr r3, _0204F5EC ; =FUN_0204E2AC
mov r1, #0xd
mov r2, #0x1
- bl FUN_0224DCB8
+ bl MOD18_0224DCB8
ldr r0, _0204F5F0 ; =0x00000625
bl FUN_020054C8
b _0204F410
@@ -19052,7 +19052,7 @@ _0204F3FC:
bl FUN_0204F23C
_0204F410:
ldrb r0, [r5, #0x1]
- bl FUN_022472AC
+ bl MOD18_022472AC
add sp, #0xc
pop {r4-r5, pc}
_0204F41A:
@@ -19069,18 +19069,18 @@ _0204F41A:
bl FUN_02026970
mov r0, #0x1
bl FUN_0204F74C
- bl FUN_0223D648
+ bl MOD18_0223D648
add r4, r0, #0x0
ldrb r0, [r5, #0x2]
bl FUN_0202DFA4
add r1, r0, #0x0
add r0, r4, #0x0
- bl FUN_0224DDB8
- bl FUN_0223D648
+ bl MOD18_0224DDB8
+ bl MOD18_0223D648
ldr r3, _0204F5F4 ; =FUN_0204E2D4
mov r1, #0xc
mov r2, #0x1
- bl FUN_0224DCB8
+ bl MOD18_0224DCB8
ldr r0, _0204F5F8 ; =0x00000425
bl FUN_0200521C
ldr r0, _0204F5F0 ; =0x00000625
@@ -19098,7 +19098,7 @@ _0204F46C:
_0204F480:
ldrb r0, [r5, #0x1]
ldrb r1, [r5, #0x2]
- bl FUN_02247294
+ bl MOD18_02247294
add sp, #0xc
pop {r4-r5, pc}
_0204F48C:
@@ -19108,11 +19108,11 @@ _0204F48C:
bne _0204F4B8
mov r0, #0x2
bl FUN_0204F74C
- bl FUN_0223D648
+ bl MOD18_0223D648
ldr r3, _0204F5FC ; =FUN_0204E2BC
mov r1, #0x6
mov r2, #0x1
- bl FUN_0224DCB8
+ bl MOD18_0224DCB8
add sp, #0xc
pop {r4-r5, pc}
_0204F4AE:
@@ -19125,11 +19125,11 @@ _0204F4B8:
_0204F4BA:
mov r0, #0x20
bl FUN_0204F74C
- bl FUN_0223D648
+ bl MOD18_0223D648
ldr r3, _0204F600 ; =FUN_0204E2C8
mov r1, #0x5
mov r2, #0x1
- bl FUN_0224DCB8
+ bl MOD18_0224DCB8
add sp, #0xc
pop {r4-r5, pc}
_0204F4D2:
@@ -19194,11 +19194,11 @@ _0204F54A:
ldrb r1, [r1, #0x0]
cmp r1, r0
bne _0204F572
- bl FUN_0223D648
+ bl MOD18_0223D648
ldr r3, _0204F5EC ; =FUN_0204E2AC
mov r1, #0x7
mov r2, #0x1
- bl FUN_0224DCB8
+ bl MOD18_0224DCB8
b _0204F57A
_0204F572:
mov r0, #0x60
@@ -19569,7 +19569,7 @@ FUN_0204F80C: ; 0x0204F80C
pop {r3, pc}
_0204F832:
bl FUN_02031190
- bl FUN_0223E734
+ bl MOD12_0223E734
cmp r0, #0x0
beq _0204F84C
bl FUN_0204F7FC
@@ -19598,7 +19598,7 @@ FUN_0204F858: ; 0x0204F858
cmp r0, #0x0
beq _0204F880
bl FUN_02031190
- bl FUN_0223E734
+ bl MOD12_0223E734
cmp r0, #0x0
bne _0204F880
mov r0, #0x0
@@ -20040,7 +20040,7 @@ FUN_0204FBB0: ; 0x0204FBB0
mov r2, #0x48
str r0, [r1, #0x0]
mov r1, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _0204FC08 ; =0x021C5A6C
mov r1, #0x32
ldr r0, [r0, #0x0]
@@ -20157,7 +20157,7 @@ FUN_0204FCA0: ; 0x0204FCA0
ldr r0, _0204FCD0 ; =0x021C5A6C
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x18]
- bl FUN_0223E060
+ bl MOD18_0223E060
ldr r0, _0204FCD4 ; =FUN_020500A4
mov r1, #0x0
bl FUN_02050094
@@ -20199,7 +20199,7 @@ FUN_0204FD08: ; 0x0204FD08
bl FUN_0202EDD8
cmp r0, #0x0
bne _0204FD1E
- bl FUN_02245F1C
+ bl MOD18_02245F1C
ldr r0, _0204FD20 ; =FUN_020500A4
mov r1, #0x0
bl FUN_02050094
@@ -20673,12 +20673,12 @@ _020500B6:
ldr r0, _02050108 ; =0x021C5A6C
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x18]
- bl FUN_0223E1E0
+ bl MOD18_0223E1E0
bl FUN_0202DBE0
mov r0, #0x0
bl FUN_0204D168
- bl FUN_0223EF7C
- bl FUN_02245FA0
+ bl MOD18_0223EF7C
+ bl MOD06_02245FA0
ldr r0, _02050108 ; =0x021C5A6C
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x18]
@@ -20748,7 +20748,7 @@ _02050164: .word FUN_02050168
thumb_func_start FUN_02050168
FUN_02050168: ; 0x02050168
push {r3, lr}
- bl FUN_0223DFB4
+ bl MOD06_0223DFB4
bl FUN_0204F80C
bl FUN_020318C4
cmp r0, #0x0
@@ -20756,7 +20756,7 @@ FUN_02050168: ; 0x02050168
bl FUN_02031190
cmp r0, #0x0
bne _02050190
- bl FUN_02245324
+ bl MOD18_02245324
ldr r0, _0205019C ; =FUN_0205024C
mov r1, #0x3c
bl FUN_02050094
@@ -20817,17 +20817,17 @@ _020501DC:
cmp r0, r1
bne _0205023C
_02050202:
- bl FUN_0223E6B8
+ bl MOD18_0223E6B8
mov r0, #0x0
bl FUN_0204D040
mov r0, #0x0
add r1, r0, #0x0
add r2, r0, #0x0
add r3, r0, #0x0
- bl FUN_022408FC
+ bl MOD18_022408FC
mov r0, #0x0
mov r1, #0x1
- bl FUN_0223FCE8
+ bl MOD18_0223FCE8
mov r0, #0x0
bl FUN_0202DE78
mov r0, #0x0
@@ -20848,7 +20848,7 @@ _02050248: .word FUN_02050350
thumb_func_start FUN_0205024C
FUN_0205024C: ; 0x0205024C
push {r3, lr}
- bl FUN_0223DFB4
+ bl MOD06_0223DFB4
ldr r0, _020502A0 ; =0x021C5A6C
ldr r1, [r0, #0x0]
ldrh r0, [r1, #0x3c]
@@ -20866,7 +20866,7 @@ _02050260:
cmp r0, #0x0
bne _0205029E
_02050272:
- bl FUN_0223E6B8
+ bl MOD18_0223E6B8
cmp r0, #0x0
beq _0205027E
bl FUN_0204F7FC
@@ -20876,8 +20876,8 @@ _0205027E:
mov r0, #0x0
bl FUN_0204D168
bl FUN_0204F930
- bl FUN_02245FA0
- bl FUN_0223E7FC
+ bl MOD06_02245FA0
+ bl MOD18_0223E7FC
ldr r0, _020502A8 ; =FUN_020502AC
mov r1, #0x0
bl FUN_02050094
@@ -20891,7 +20891,7 @@ _020502A8: .word FUN_020502AC
thumb_func_start FUN_020502AC
FUN_020502AC: ; 0x020502AC
push {r3, lr}
- bl FUN_0223DFB4
+ bl MOD06_0223DFB4
ldr r0, _02050314 ; =0x021C5A6C
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x18]
@@ -20913,15 +20913,15 @@ FUN_020502AC: ; 0x020502AC
bne _02050310
_020502E2:
mov r0, #0x0
- bl FUN_02245358
+ bl MOD18_02245358
bl FUN_0204F90C
- bl FUN_02247808
+ bl MOD06_02247808
mov r0, #0x2b
bl FUN_020311DC
bl FUN_02031190
mov r1, #0x1
- bl FUN_0223FCE8
- bl FUN_0223E6B8
+ bl MOD18_0223FCE8
+ bl MOD18_0223E6B8
bl FUN_020318B4
ldr r0, _02050318 ; =FUN_02050458
mov r1, #0x0
@@ -20945,15 +20945,15 @@ _0205032C: .word FUN_02050330
thumb_func_start FUN_02050330
FUN_02050330: ; 0x02050330
- ldr r3, _02050334 ; =FUN_0223DFB4
+ ldr r3, _02050334 ; =MOD06_0223DFB4
bx r3
.balign 4
-_02050334: .word FUN_0223DFB4 + 1
+_02050334: .word MOD06_0223DFB4
thumb_func_start FUN_02050338
FUN_02050338: ; 0x02050338
push {r3, lr}
- bl FUN_02245F1C
+ bl MOD18_02245F1C
bl FUN_0204CC9C
ldr r0, _0205034C ; =FUN_020502AC
mov r1, #0x0
@@ -20971,7 +20971,7 @@ FUN_02050350: ; 0x02050350
cmp r0, #0x9
bne _02050364
bl FUN_0202DBE0
- bl FUN_0223E7FC
+ bl MOD18_0223E7FC
_02050364:
ldr r0, _020503A8 ; =0x021C5A6C
ldr r0, [r0, #0x0]
@@ -21014,7 +21014,7 @@ FUN_020503B4: ; 0x020503B4
bl FUN_0204FB00
cmp r0, #0x0
beq _020503CC
- bl FUN_0223EF7C
+ bl MOD18_0223EF7C
ldr r0, _020503E8 ; =FUN_020503F0
mov r1, #0x0
bl FUN_02050094
@@ -21039,13 +21039,13 @@ _020503EC: .word 0x021C5A6C
thumb_func_start FUN_020503F0
FUN_020503F0: ; 0x020503F0
push {r3, lr}
- bl FUN_0223F4D8
+ bl MOD18_0223F4D8
cmp r0, #0x0
beq _02050412
ldr r0, _02050418 ; =0x02105E94
bl FUN_0204FBAC
- bl FUN_0223F4F4
- bl FUN_02245FA0
+ bl MOD18_0223F4F4
+ bl MOD06_02245FA0
ldr r0, _0205041C ; =FUN_02050420
mov r1, #0x0
bl FUN_02050094
@@ -21060,12 +21060,12 @@ _0205041C: .word FUN_02050420
thumb_func_start FUN_02050420
FUN_02050420: ; 0x02050420
push {r3, lr}
- bl FUN_022461A4
+ bl MOD18_022461A4
cmp r0, #0x0
beq _0205044A
ldr r0, _02050450 ; =0x02105EB0
bl FUN_0204FBAC
- bl FUN_022461B8
+ bl MOD18_022461B8
mov r0, #0x1
bl FUN_0204D168
mov r0, #0x1f
@@ -21148,10 +21148,10 @@ _020504CC: .word FUN_020500A4
thumb_func_start FUN_020504D0
FUN_020504D0: ; 0x020504D0
- ldr r3, _020504D4 ; =FUN_0223DFB4
+ ldr r3, _020504D4 ; =MOD06_0223DFB4
bx r3
.balign 4
-_020504D4: .word FUN_0223DFB4 + 1
+_020504D4: .word MOD06_0223DFB4
thumb_func_start FUN_020504D8
FUN_020504D8: ; 0x020504D8
@@ -21162,12 +21162,12 @@ FUN_020504D8: ; 0x020504D8
ldr r0, _02050508 ; =0x021C5A6C
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x18]
- bl FUN_0223E1E0
+ bl MOD18_0223E1E0
bl FUN_0202DBE0
mov r0, #0x0
bl FUN_0204D168
- bl FUN_0223EF7C
- bl FUN_02245FA0
+ bl MOD18_0223EF7C
+ bl MOD06_02245FA0
ldr r0, _0205050C ; =FUN_020504D0
mov r1, #0x0
bl FUN_02050094
@@ -21182,13 +21182,13 @@ FUN_02050510: ; 0x02050510
push {r3, lr}
bl FUN_02031190
mov r1, #0x1
- bl FUN_0223FCE8
+ bl MOD18_0223FCE8
bl FUN_02031190
mov r1, #0x1
- bl FUN_02247728
- bl FUN_0223CACC
+ bl MOD18_02247728
+ bl MOD18_0223CACC
bl FUN_0204CEF8
- bl FUN_0223E6B8
+ bl MOD18_0223E6B8
bl FUN_02031880
bl FUN_0204FB28
ldr r0, _02050544 ; =FUN_020504A4
@@ -21201,7 +21201,7 @@ _02050544: .word FUN_020504A4
thumb_func_start FUN_02050548
FUN_02050548: ; 0x02050548
push {r3, lr}
- bl FUN_0223DFB4
+ bl MOD06_0223DFB4
bl FUN_0204F80C
ldr r0, _02050574 ; =0x021C5A6C
ldr r0, [r0, #0x0]
@@ -21243,7 +21243,7 @@ _02050590: .word 0x02247831
thumb_func_start FUN_02050594
FUN_02050594: ; 0x02050594
push {r3, lr}
- bl FUN_02245F1C
+ bl MOD18_02245F1C
bl FUN_0204CC9C
bl FUN_0202EE44
cmp r0, #0x0
@@ -21252,9 +21252,9 @@ FUN_02050594: ; 0x02050594
cmp r0, #0x0
beq _020505CC
_020505AE:
- bl FUN_022452A4
+ bl MOD18_022452A4
bl FUN_0204CEF8
- bl FUN_0223E6B8
+ bl MOD18_0223E6B8
bl FUN_02031880
bl FUN_0204FB28
ldr r0, _020505D8 ; =FUN_020504A4
@@ -21289,7 +21289,7 @@ FUN_020505F4: ; 0x020505F4
thumb_func_start FUN_020505F8
FUN_020505F8: ; 0x020505F8
push {r3, lr}
- bl FUN_02245F1C
+ bl MOD18_02245F1C
bl FUN_0204CC9C
ldr r0, _0205060C ; =FUN_02050168
mov r1, #0x0
@@ -21317,7 +21317,7 @@ FUN_02050624: ; 0x02050624
thumb_func_start FUN_02050628
FUN_02050628: ; 0x02050628
push {r3, lr}
- bl FUN_02245F1C
+ bl MOD18_02245F1C
bl FUN_0204CC9C
ldr r0, _0205063C ; =FUN_020504D0
mov r1, #0x0
@@ -21333,7 +21333,7 @@ FUN_02050640: ; 0x02050640
bl FUN_02030E7C
cmp r0, #0x0
beq _0205065E
- bl FUN_02240834
+ bl MOD06_02240834
bl FUN_0202DBE0
ldr r0, _02050660 ; =FUN_02050664
mov r1, #0x0
@@ -21354,7 +21354,7 @@ FUN_02050668: ; 0x02050668
bl FUN_0202E4C8
cmp r0, #0x0
beq _0205067E
- bl FUN_022407CC
+ bl MOD06_022407CC
ldr r0, _02050680 ; =FUN_02050684
mov r1, #0x0
bl FUN_02050094
@@ -22247,7 +22247,7 @@ FUN_02050D54: ; 0x02050D54
strh r0, [r1, #0x3c]
pop {r3, pc}
_02050D66:
- bl FUN_0223E1A4
+ bl MOD18_0223E1A4
bl FUN_02031860
mov r0, #0x21
bl FUN_020168D0
@@ -22329,7 +22329,7 @@ _02050E02:
mov r0, #0x0
pop {r3, pc}
_02050E06:
- bl FUN_0223E2AC
+ bl MOD18_0223E2AC
pop {r3, pc}
.balign 4
_02050E0C: .word 0x021C5A6C
@@ -22345,7 +22345,7 @@ FUN_02050E10: ; 0x02050E10
ldrb r0, [r0, #0x0]
cmp r0, #0x0
beq _02050E26
- bl FUN_0223E118
+ bl MOD18_0223E118
_02050E26:
pop {r3, pc}
.balign 4
@@ -22362,7 +22362,7 @@ FUN_02050E2C: ; 0x02050E2C
ldrb r0, [r0, #0x0]
cmp r0, #0x0
beq _02050E42
- bl FUN_0223E154
+ bl MOD18_0223E154
_02050E42:
pop {r3, pc}
.balign 4
@@ -22383,7 +22383,7 @@ FUN_02050E48: ; 0x02050E48
mov r1, #0x0
mov r2, #0x30
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0xc]
bl FUN_020238F4
add r1, r0, #0x0
@@ -22438,7 +22438,7 @@ FUN_02050ED4: ; 0x02050ED4
mov r1, #0x0
mov r2, #0x40
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0x24]
ldr r0, [r0, #0xc]
bl LoadPlayerDataAddress
@@ -22564,7 +22564,7 @@ _02050FDA:
add r0, #0x2c
add r1, #0x3d
mov r2, #0x6
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, [r4, #0x4]
add r0, #0x22
ldrb r0, [r0, #0x0]
@@ -22628,7 +22628,7 @@ FUN_0205104C: ; 0x0205104C
cmp r0, #0x0
beq _02051066
mov r0, #0x1
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
bl FUN_0204CC9C
mov r0, #0x1
pop {r3, pc}
@@ -22921,7 +22921,7 @@ _02051288:
b _020517B8
_0205129C:
mov r0, #0x0
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0xe
str r0, [r4, #0x34]
b _020517B8
@@ -23392,7 +23392,7 @@ _02051642:
b _020517B8
_0205167A:
mov r0, #0x0
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0x21
str r0, [r4, #0x34]
b _020517B8
@@ -23654,7 +23654,7 @@ _0205188E:
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x8c
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
mov r1, #0x5
add r0, #0x43
@@ -23840,7 +23840,7 @@ _02051A16:
bl FUN_0206B9B0
add r1, r4, #0x0
add r2, r6, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r5, r5, #0x1
add r4, r4, r6
cmp r5, #0x3
@@ -24002,7 +24002,7 @@ FUN_02051B1C: ; 0x02051B1C
mul r2, r4
add r1, r3, r2
add r2, r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, [r6, #0x50]
mov r1, #0x3
bl FUN_0206B8CC
@@ -24562,7 +24562,7 @@ _02051F7C:
add r0, #0x8
bl FUN_02019178
mov r0, #0x0
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
ldr r0, [r4, #0x28]
add r0, r0, #0x1
str r0, [r4, #0x28]
@@ -24605,7 +24605,7 @@ _0205200C:
cmp r0, #0x0
bne _0205203A
mov r0, #0x1
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
bl FUN_0204CC9C
ldr r0, [r4, #0x28]
add r0, r0, #0x1
@@ -24746,7 +24746,7 @@ _0205211E:
mov r1, #0x0
lsl r2, r2, #0x4
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
str r0, [r4, #0x10]
mov r0, #0x28
@@ -26131,7 +26131,7 @@ FUN_02052B74: ; 0x02052B74
add r0, sp, #0x0
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
cmp r4, #0xb
bhi _02052BFA
add r0, r4, r4
@@ -26593,7 +26593,7 @@ FUN_02052EE8: ; 0x02052EE8
ldr r2, _02052F58 ; =0x000004E8
mov r0, #0x0
add r1, r4, #0x0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x4e
str r5, [r4, #0x0]
mov r1, #0x1
@@ -27251,7 +27251,7 @@ _020533CC:
cmp r0, #0x1
bne _0205342A
add r0, r4, #0x0
- bl FUN_02249668
+ bl MOD06_02249668
str r0, [r5, #0x14]
b _02053438
_0205342A:
@@ -27259,7 +27259,7 @@ _0205342A:
blo _02053438
add r0, r4, #0x0
mov r1, #0x2
- bl FUN_02249668
+ bl MOD06_02249668
str r0, [r5, #0x14]
_02053438:
mov r0, #0x0
@@ -27306,7 +27306,7 @@ FUN_02053478: ; 0x02053478
cmp r0, #0x0
bne _0205349C
add r0, r1, #0x0
- bl FUN_021EDA48
+ bl MOD05_021EDA48
str r0, [r4, #0x10]
mov r0, #0x1e
strh r0, [r4, #0x6]
@@ -27408,7 +27408,7 @@ _02053524:
bne _02053566
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_02249668
+ bl MOD06_02249668
str r0, [r5, #0x14]
b _02053574
_02053566:
@@ -27416,7 +27416,7 @@ _02053566:
blo _02053574
add r0, r4, #0x0
mov r1, #0x2
- bl FUN_02249668
+ bl MOD06_02249668
str r0, [r5, #0x14]
_02053574:
mov r0, #0x0
@@ -30706,7 +30706,7 @@ FUN_02054C14: ; 0x02054C14
push {r4, lr}
mov r1, #0xa
add r4, r0, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r0, #0x0
bne _02054C26
mov r0, #0x1
@@ -30714,7 +30714,7 @@ FUN_02054C14: ; 0x02054C14
_02054C26:
add r0, r4, #0x0
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
cmp r0, #0x0
bne _02054C36
mov r0, #0x2
@@ -30723,7 +30723,7 @@ _02054C36:
mov r1, #0xfa
add r0, r4, #0x0
lsl r1, r1, #0x2
- blx _u32_div_f
+ bl _u32_div_f
cmp r0, #0x0
bne _02054C48
mov r0, #0x3
@@ -30731,7 +30731,7 @@ _02054C36:
_02054C48:
ldr r1, _02054C9C ; =0x00002710
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r0, #0x0
bne _02054C58
mov r0, #0x4
@@ -30739,7 +30739,7 @@ _02054C48:
_02054C58:
ldr r1, _02054CA0 ; =0x000186A0
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r0, #0x0
bne _02054C68
mov r0, #0x5
@@ -30747,7 +30747,7 @@ _02054C58:
_02054C68:
ldr r1, _02054CA4 ; =0x000F4240
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r0, #0x0
bne _02054C78
mov r0, #0x6
@@ -30755,7 +30755,7 @@ _02054C68:
_02054C78:
ldr r1, _02054CA8 ; =0x00989680
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r0, #0x0
bne _02054C88
mov r0, #0x7
@@ -30763,7 +30763,7 @@ _02054C78:
_02054C88:
ldr r1, _02054CAC ; =0x05F5E100
add r0, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
cmp r0, #0x0
bne _02054C98
mov r0, #0x8
@@ -31092,7 +31092,7 @@ FUN_02054EA0: ; 0x02054EA0
asr r1, r0, #0x1f
asr r3, r5, #0x1f
add r2, r5, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -31108,7 +31108,7 @@ FUN_02054EA0: ; 0x02054EA0
asr r1, r0, #0x1f
asr r3, r5, #0x1f
add r2, r5, #0x0
- blx _ll_mul
+ bl _ll_mul
mov r2, #0x2
mov r3, #0x0
lsl r2, r2, #0xa
@@ -31171,46 +31171,46 @@ FUN_02054F50: ; 0x02054F50
mov r1, #0x0
mov r2, #0x14
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, sp, #0x8
ldrh r0, [r0, #0x10]
cmp r0, #0x0
beq _02054F8A
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _02054F98
_02054F8A:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_02054F98:
- blx _ffix
+ bl _ffix
str r0, [r4, #0x4]
add r0, sp, #0x8
ldrh r0, [r0, #0x14]
cmp r0, #0x0
beq _02054FB8
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _02054FC6
_02054FB8:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_02054FC6:
- blx _ffix
+ bl _ffix
str r0, [r4, #0x8]
strh r6, [r4, #0xc]
strh r7, [r4, #0x10]
@@ -31274,7 +31274,7 @@ FUN_0205502C: ; 0x0205502C
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0xc
- blx MI_CpuFill8
+ bl MI_CpuFill8
strh r6, [r4, #0x4]
strh r7, [r4, #0x6]
str r5, [r4, #0x0]
@@ -31373,7 +31373,7 @@ _02055118:
add r0, r4, #0x0
bl FUN_02058578
add r0, r5, #0x0
- bl FUN_021EDBC8
+ bl MOD05_021EDBC8
add r0, r5, #0x0
bl FUN_020553C4
cmp r0, #0x2
@@ -31392,7 +31392,7 @@ _02055118:
add r0, r4, #0x0
add r1, r6, #0x0
add r2, r7, #0x0
- bl FUN_0224ABAC
+ bl MOD06_0224ABAC
add r1, r0, #0x0
add r0, r5, #0x0
bl FUN_02055450
@@ -31430,7 +31430,7 @@ _0205518E:
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x3c
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r4, pc}
@@ -32477,14 +32477,14 @@ _02055812:
add r2, r6, #0x0
bl FUN_02055900
add r0, r5, #0x0
- bl FUN_021E5FE0
+ bl MOD05_021E5FE0
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_02055BD4
cmp r0, #0x1
bne _0205584E
add r0, r5, #0x0
- bl FUN_021E7138
+ bl MOD05_021E7138
pop {r3-r7, pc}
_0205584E:
add r0, r5, #0x0
@@ -32497,14 +32497,14 @@ _0205584E:
cmp r0, #0x0
beq _0205586C
add r0, r5, #0x0
- bl FUN_021E7138
+ bl MOD05_021E7138
b _02055878
_0205586C:
ldr r0, [sp, #0x1c]
cmp r0, #0x1
bne _02055878
add r0, r5, #0x0
- bl FUN_021E70F0
+ bl MOD05_021E70F0
_02055878:
add r0, sp, #0x8
ldrh r0, [r0, #0x10]
@@ -36009,7 +36009,7 @@ _02057430:
bl FUN_020583A0
add r1, r0, #0x0
ldr r0, [sp, #0x0]
- bl FUN_021F2AF4
+ bl MOD05_021F2AF4
add sp, #0x8
pop {r3-r7, pc}
.balign 4
@@ -36030,7 +36030,7 @@ _0205745A:
add r0, r5, #0x0
mov r1, #0x0
lsl r2, r2, #0x2
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0x4a
lsl r0, r0, #0x2
add r6, r4, #0x0
@@ -36045,7 +36045,7 @@ _0205747E:
add r0, r4, #0x0
mov r1, #0x0
add r2, r6, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
add r1, r4, #0x0
bl FUN_020583B4
@@ -36489,7 +36489,7 @@ _02057846:
add r0, r5, #0x0
mov r1, #0x0
mul r2, r4
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
_02057856:
add sp, #0x8
pop {r3-r7, pc}
@@ -36889,7 +36889,7 @@ _02057BD4:
ldr r2, [sp, #0x4]
add r0, r6, #0x0
add r1, r4, #0x0
- blx memcpy
+ bl memcpy
mov r0, #0xb
mov r1, #0x14
bl FUN_020169D8
@@ -37619,7 +37619,7 @@ FUN_020581B4: ; 0x020581B4
bl FUN_02058544
add r0, r4, #0x0
mov r1, #0x0
- bl FUN_021F2E0C
+ bl MOD05_021F2E0C
add r0, r4, #0x0
bl FUN_02058884
cmp r0, #0x0
@@ -37812,7 +37812,7 @@ FUN_02058348: ; 0x02058348
cmp r0, #0x1
bne _0205835E
add r0, r4, #0x0
- bl FUN_021F1D8C
+ bl MOD05_021F1D8C
_0205835E:
pop {r4, pc}
@@ -38313,7 +38313,7 @@ _0205859A:
mov r1, #0x0
add r2, r5, #0x0
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -38337,7 +38337,7 @@ _020585C2:
mov r1, #0x0
add r2, r5, #0x0
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -38361,7 +38361,7 @@ _020585EA:
mov r1, #0x0
add r2, r5, #0x0
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -38385,7 +38385,7 @@ _02058612:
mov r1, #0x0
add r2, r5, #0x0
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
@@ -40122,7 +40122,7 @@ FUN_02059064: ; 0x02059064
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r5, #0x0
- bl FUN_021F1DC8
+ bl MOD05_021F1DC8
add r7, r0, #0x0
add r0, r5, #0x0
add r1, r6, #0x0
@@ -40185,7 +40185,7 @@ FUN_020590F4: ; 0x020590F4
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r5, #0x0
- bl FUN_021F1DC8
+ bl MOD05_021F1DC8
add r7, r0, #0x0
add r0, r5, #0x0
add r1, r6, #0x0
@@ -40263,7 +40263,7 @@ FUN_020591A8: ; 0x020591A8
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r5, #0x0
- bl FUN_021F1DC8
+ bl MOD05_021F1DC8
add r7, r0, #0x0
add r0, r5, #0x0
add r1, r6, #0x0
@@ -40311,7 +40311,7 @@ FUN_02059214: ; 0x02059214
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r5, #0x0
- bl FUN_021F1DC8
+ bl MOD05_021F1DC8
add r7, r0, #0x0
add r0, r5, #0x0
add r1, r6, #0x0
@@ -40364,7 +40364,7 @@ FUN_0205928C: ; 0x0205928C
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r5, #0x0
- bl FUN_021F1DC8
+ bl MOD05_021F1DC8
add r7, r0, #0x0
add r0, r5, #0x0
add r1, r6, #0x0
@@ -40539,7 +40539,7 @@ FUN_0205941C: ; 0x0205941C
bne _02059432
add r0, r4, #0x0
mov r1, #0x0
- bl FUN_0224B568
+ bl MOD06_0224B568
_02059432:
pop {r4, pc}
@@ -40553,7 +40553,7 @@ FUN_02059434: ; 0x02059434
bne _0205944A
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_0224B568
+ bl MOD06_0224B568
_0205944A:
pop {r4, pc}
@@ -40577,13 +40577,13 @@ FUN_0205944C: ; 0x0205944C
cmp r0, #0x1
bne _02059478
add r0, r5, #0x0
- bl FUN_02249E6C
+ bl MOD06_02249E6C
pop {r4-r6, pc}
_02059478:
cmp r0, #0x2
bne _020594BC
add r0, r5, #0x0
- bl FUN_02249E78
+ bl MOD06_02249E78
pop {r4-r6, pc}
_02059484:
add r0, r4, #0x0
@@ -40600,7 +40600,7 @@ _02059484:
beq _020594AA
_020594A2:
add r0, r5, #0x0
- bl FUN_02249E90
+ bl MOD06_02249E90
pop {r4-r6, pc}
_020594AA:
add r0, r5, #0x0
@@ -40609,7 +40609,7 @@ _020594AA:
cmp r0, #0x1
bne _020594BC
add r0, r5, #0x0
- bl FUN_02249E84
+ bl MOD06_02249E84
_020594BC:
pop {r4-r6, pc}
.balign 4
@@ -40628,7 +40628,7 @@ FUN_020594C0: ; 0x020594C0
bne _020594F2
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_0224B9E0
+ bl MOD06_0224B9E0
add r0, r4, #0x0
mov r1, #0x1
bl FUN_020589E4
@@ -40716,7 +40716,7 @@ _02059584:
cmp r0, #0x0
bne _020595A2
add r0, r5, #0x0
- bl FUN_02249508
+ bl MOD06_02249508
mov r1, #0x2
add r0, r5, #0x0
lsl r1, r1, #0xe
@@ -40816,7 +40816,7 @@ FUN_0205962C: ; 0x0205962C
cmp r0, #0x1
beq _02059674
add r0, r5, #0x0
- bl FUN_0224BBEC
+ bl MOD06_0224BBEC
_02059674:
pop {r3-r5, pc}
.balign 4
@@ -40831,7 +40831,7 @@ FUN_02059678: ; 0x02059678
bne _0205968E
add r0, r4, #0x0
mov r1, #0x0
- bl FUN_0224BD90
+ bl MOD06_0224BD90
_0205968E:
pop {r4, pc}
@@ -40845,7 +40845,7 @@ FUN_02059690: ; 0x02059690
bne _020596A6
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_0224BD90
+ bl MOD06_0224BD90
_020596A6:
pop {r4, pc}
@@ -40859,7 +40859,7 @@ FUN_020596A8: ; 0x020596A8
bne _020596BE
add r0, r4, #0x0
mov r1, #0x0
- bl FUN_0224C038
+ bl MOD06_0224C038
_020596BE:
pop {r4, pc}
@@ -40873,7 +40873,7 @@ FUN_020596C0: ; 0x020596C0
bne _020596D6
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_0224C038
+ bl MOD06_0224C038
_020596D6:
pop {r4, pc}
@@ -40897,7 +40897,7 @@ FUN_020596D8: ; 0x020596D8
add r0, r5, #0x0
add r1, r4, #0x0
add r2, r6, #0x0
- bl FUN_0224B124
+ bl MOD06_0224B124
_02059708:
pop {r4-r6, pc}
.balign 4
@@ -40922,7 +40922,7 @@ FUN_0205970C: ; 0x0205970C
add r0, r5, #0x0
add r1, r4, #0x0
add r2, r6, #0x0
- bl FUN_0224B124
+ bl MOD06_0224B124
_0205973C:
pop {r4-r6, pc}
.balign 4
@@ -40947,7 +40947,7 @@ FUN_02059740: ; 0x02059740
add r0, r5, #0x0
add r1, r4, #0x0
add r2, r6, #0x0
- bl FUN_0224B2C4
+ bl MOD06_0224B2C4
_02059770:
pop {r4-r6, pc}
.balign 4
@@ -40972,7 +40972,7 @@ FUN_02059774: ; 0x02059774
add r0, r5, #0x0
add r1, r4, #0x0
add r2, r6, #0x0
- bl FUN_0224B2C4
+ bl MOD06_0224B2C4
_020597A4:
pop {r4-r6, pc}
.balign 4
@@ -41012,12 +41012,12 @@ _020597DE:
bne _020597FA
add r0, r5, #0x0
mov r1, #0x0
- bl FUN_022497E8
+ bl MOD06_022497E8
pop {r4-r6, pc}
_020597FA:
add r0, r5, #0x0
mov r1, #0x1
- bl FUN_022497E8
+ bl MOD06_022497E8
_02059802:
pop {r4-r6, pc}
@@ -43565,7 +43565,7 @@ FUN_0205AAB0: ; 0x0205AAB0
bl FUN_0205AA90
add r1, r0, #0x0
add r0, r6, #0x0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x2
ldr r0, [r5, r0]
pop {r4-r6, pc}
@@ -43584,7 +43584,7 @@ FUN_0205AAD4: ; 0x0205AAD4
bl FUN_0205AA90
add r1, r0, #0x0
add r0, r6, #0x0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x2
ldr r0, [r4, r0]
pop {r4-r6, pc}
@@ -45936,7 +45936,7 @@ FUN_0205BB90: ; 0x0205BB90
add r0, r5, #0x0
add r1, r6, #0x0
mov r2, #0x1
- bl FUN_021E7AC0
+ bl MOD05_021E7AC0
str r0, [r4, #0x4]
add r0, r5, #0x0
bl FUN_02058700
@@ -45949,7 +45949,7 @@ FUN_0205BBB4: ; 0x0205BBB4
bl FUN_02058600
add r4, r0, #0x0
ldr r0, [r4, #0x4]
- bl FUN_021E799C
+ bl MOD05_021E799C
cmp r0, #0x1
bne _0205BBD8
ldr r0, [r4, #0x4]
@@ -46273,7 +46273,7 @@ _0205BDFE:
add r0, r4, #0x0
bl FUN_02058B94
add r0, r4, #0x0
- bl FUN_0224D2E0
+ bl MOD06_0224D2E0
ldr r1, _0205BE34 ; =0x00010004
add r0, r4, #0x0
bl FUN_02058410
@@ -47060,7 +47060,7 @@ FUN_0205C3B0: ; 0x0205C3B0
mov r1, #0x0
str r1, [r0, #0x4]
add r0, r4, #0x0
- bl FUN_0224A310
+ bl MOD06_0224A310
pop {r4, pc}
nop
_0205C3CC: .word 0x0000FFFF
@@ -47080,7 +47080,7 @@ FUN_0205C3D0: ; 0x0205C3D0
bl FUN_0204B5FC
add r6, r0, #0x0
add r0, r5, #0x0
- bl FUN_021F2E28
+ bl MOD05_021F2E28
cmp r0, #0x1
beq _0205C488
ldr r0, [r4, #0x4]
@@ -47090,7 +47090,7 @@ FUN_0205C3D0: ; 0x0205C3D0
ldr r2, [r4, #0x0]
add r0, r5, #0x0
add r1, #0x8
- bl FUN_021F2094
+ bl MOD05_021F2094
add r0, r5, #0x0
bl FUN_02058738
add r1, r5, #0x0
@@ -47105,13 +47105,13 @@ FUN_0205C3D0: ; 0x0205C3D0
cmp r0, #0x0
beq _0205C432
add r0, r5, #0x0
- bl FUN_0224A528
+ bl MOD06_0224A528
_0205C432:
add r1, r4, #0x0
ldr r2, [r4, #0x0]
add r0, r5, #0x0
add r1, #0x8
- bl FUN_021F1F78
+ bl MOD05_021F1F78
b _0205C450
_0205C440:
cmp r0, #0x0
@@ -47120,23 +47120,23 @@ _0205C440:
cmp r0, #0x0
bne _0205C450
add r0, r5, #0x0
- bl FUN_0224A528
+ bl MOD06_0224A528
_0205C450:
mov r0, #0x0
strh r0, [r7, #0x2]
_0205C454:
add r0, r5, #0x0
str r6, [r4, #0x4]
- bl FUN_021F2E28
+ bl MOD05_021F2E28
cmp r0, #0x1
beq _0205C488
ldr r1, [r4, #0x8]
cmp r1, #0x0
beq _0205C488
add r0, r5, #0x0
- bl FUN_021F2F48
+ bl MOD05_021F2F48
add r0, r5, #0x0
- bl FUN_021F1DFC
+ bl MOD05_021F1DFC
cmp r0, #0x0
bne _0205C480
mov r1, #0x1
@@ -47146,7 +47146,7 @@ _0205C454:
_0205C480:
ldr r1, [r4, #0x8]
add r0, r5, #0x0
- bl FUN_021F2F6C
+ bl MOD05_021F2F6C
_0205C488:
pop {r3-r7, pc}
nop
@@ -47162,7 +47162,7 @@ FUN_0205C490: ; 0x0205C490
ldr r2, [r2, #0x0]
add r0, r4, #0x0
add r1, #0x8
- bl FUN_021F2094
+ bl MOD05_021F2094
pop {r4, pc}
thumb_func_start FUN_0205C4A8
@@ -47176,13 +47176,13 @@ FUN_0205C4A8: ; 0x0205C4A8
beq _0205C4C0
add r1, r4, #0x0
add r1, #0xc
- bl FUN_021F20D8
+ bl MOD05_021F20D8
_0205C4C0:
add r1, r4, #0x0
ldr r2, [r4, #0x0]
add r0, r5, #0x0
add r1, #0x8
- bl FUN_021F2094
+ bl MOD05_021F2094
mov r1, #0x2
add r0, r5, #0x0
lsl r1, r1, #0x14
@@ -47196,7 +47196,7 @@ FUN_0205C4D8: ; 0x0205C4D8
bl FUN_02058628
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_021F2E28
+ bl MOD05_021F2E28
cmp r0, #0x1
beq _0205C536
ldr r0, [r4, #0x8]
@@ -47209,7 +47209,7 @@ FUN_0205C4D8: ; 0x0205C4D8
add r1, r4, #0x0
add r0, r5, #0x0
add r1, #0x8
- bl FUN_021F1F78
+ bl MOD05_021F1F78
b _0205C510
_0205C506:
mov r1, #0x2
@@ -47218,17 +47218,17 @@ _0205C506:
bl FUN_02058418
_0205C510:
add r0, r5, #0x0
- bl FUN_0224A310
+ bl MOD06_0224A310
_0205C516:
ldr r0, [r4, #0x8]
cmp r0, #0x0
beq _0205C536
add r1, r4, #0x0
add r1, #0xc
- bl FUN_021F20F8
+ bl MOD05_021F20F8
ldr r1, [r4, #0x8]
add r0, r5, #0x0
- bl FUN_021F2F48
+ bl MOD05_021F2F48
mov r1, #0x2
add r0, r5, #0x0
lsl r1, r1, #0x14
@@ -47960,7 +47960,7 @@ _0205CA9A:
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x2c
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [sp, #0x0]
str r7, [r4, #0x8]
str r0, [r4, #0xc]
@@ -48052,7 +48052,7 @@ FUN_0205CB30: ; 0x0205CB30
_0205CB44:
ldr r0, [r4, #0x24]
ldr r1, [r4, #0x8]
- bl FUN_021F1EC0
+ bl MOD05_021F1EC0
add r0, r5, #0x0
mov r1, #0x40
bl FUN_02058410
@@ -48154,7 +48154,7 @@ FUN_0205CBF8: ; 0x0205CBF8
mov r1, #0x0
ldr r0, [r4, #0x24]
add r2, r1, #0x0
- bl FUN_021E7AC0
+ bl MOD05_021E7AC0
str r0, [r4, #0x20]
mov r0, #0x6
str r0, [r4, #0x0]
@@ -48166,7 +48166,7 @@ FUN_0205CC10: ; 0x0205CC10
push {r4, lr}
add r4, r0, #0x0
ldr r0, [r4, #0x20]
- bl FUN_021E799C
+ bl MOD05_021E799C
cmp r0, #0x1
bne _0205CC28
ldr r0, [r4, #0x20]
@@ -48724,7 +48724,7 @@ FUN_0205D024: ; 0x0205D024
mov r1, #0x0
mov r2, #0x40
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0xc]
bl FUN_0206BB1C
str r0, [r4, #0x0]
@@ -49024,9 +49024,9 @@ _0205D296:
bl FUN_02058914
ldr r0, [r4, #0x38]
mov r1, #0x1
- bl FUN_021E5FD8
+ bl MOD05_021E5FD8
ldr r0, [r4, #0x38]
- bl FUN_021E5FE0
+ bl MOD05_021E5FE0
add r0, r4, #0x0
mov r1, #0x0
bl FUN_0204AB20
@@ -49054,9 +49054,9 @@ _0205D2D6:
bl FUN_02058914
ldr r0, [r4, #0x38]
mov r1, #0x2
- bl FUN_021E5FD8
+ bl MOD05_021E5FD8
ldr r0, [r4, #0x38]
- bl FUN_021E5FE0
+ bl MOD05_021E5FE0
add r4, #0x90
ldr r0, [r4, #0x0]
bl FUN_0205DD40
@@ -49207,7 +49207,7 @@ FUN_0205D400: ; 0x0205D400
mov r1, #0x0
mov r2, #0x40
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0xc]
bl FUN_0206BB1C
str r0, [r4, #0x0]
@@ -49566,7 +49566,7 @@ FUN_0205D6BC: ; 0x0205D6BC
add r4, r0, #0x0
add r0, r6, #0x0
bl FUN_0204649C
- bl FUN_021F57EC
+ bl MOD05_021F57EC
str r0, [sp, #0x0]
ldr r1, [sp, #0x0]
mov r0, #0xb
@@ -49574,7 +49574,7 @@ FUN_0205D6BC: ; 0x0205D6BC
ldr r2, [sp, #0x0]
mov r1, #0x0
add r7, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0x72
ldr r1, _0205D710 ; =0x021F57F1
lsl r0, r0, #0x2
@@ -49646,7 +49646,7 @@ FUN_0205D74C: ; 0x0205D74C
add r0, r5, #0x0
mov r1, #0xb
mov r2, #0x0
- bl FUN_021F5C44
+ bl MOD05_021F5C44
mov r1, #0x7e
lsl r1, r1, #0x2
str r0, [r4, r1]
@@ -49663,7 +49663,7 @@ FUN_0205D788: ; 0x0205D788
ldr r0, [r4, #0x0]
mov r1, #0x4
mov r2, #0x0
- bl FUN_021F5C44
+ bl MOD05_021F5C44
add r2, r0, #0x0
ldr r0, [r4, #0x0]
ldr r1, _0205D7A4 ; =0x021F5C71
@@ -49692,7 +49692,7 @@ FUN_0205D7A8: ; 0x0205D7A8
add r0, r5, #0x0
mov r1, #0xb
mov r2, #0x1
- bl FUN_021F5C44
+ bl MOD05_021F5C44
mov r1, #0x7e
lsl r1, r1, #0x2
str r0, [r4, r1]
@@ -49709,7 +49709,7 @@ FUN_0205D7E4: ; 0x0205D7E4
ldr r0, [r4, #0x0]
mov r1, #0x4
mov r2, #0x1
- bl FUN_021F5C44
+ bl MOD05_021F5C44
add r2, r0, #0x0
ldr r0, [r4, #0x0]
ldr r1, _0205D800 ; =0x021F5C71
@@ -49738,7 +49738,7 @@ FUN_0205D804: ; 0x0205D804
add r0, r5, #0x0
mov r1, #0xb
mov r2, #0x2
- bl FUN_021F5C44
+ bl MOD05_021F5C44
mov r1, #0x7e
lsl r1, r1, #0x2
str r0, [r4, r1]
@@ -49755,7 +49755,7 @@ FUN_0205D840: ; 0x0205D840
ldr r0, [r4, #0x0]
mov r1, #0x4
mov r2, #0x2
- bl FUN_021F5C44
+ bl MOD05_021F5C44
add r2, r0, #0x0
ldr r0, [r4, #0x0]
ldr r1, _0205D85C ; =0x021F5C71
@@ -49938,7 +49938,7 @@ FUN_0205D9A8: ; 0x0205D9A8
mov r1, #0x0
mov r2, #0x40
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [r5, #0xc]
bl FUN_0206BB1C
str r0, [r4, #0x0]
@@ -50049,7 +50049,7 @@ FUN_0205DAAC: ; 0x0205DAAC
add r4, r0, #0x0
bl FUN_02046528
mov r1, #0xb
- bl FUN_0224C700
+ bl MOD06_0224C700
add r2, r0, #0x0
ldr r1, _0205DAC8 ; =0x0224C721
add r0, r4, #0x0
@@ -50170,7 +50170,7 @@ _0205DB9C:
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x2c
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
str r5, [r4, #0x0]
ldr r0, [sp, #0x0]
add r1, r4, #0x4
@@ -50269,7 +50269,7 @@ _0205DC68:
ldr r0, [r5, #0x34]
bl FUN_02058780
mov r0, #0x0
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0x1
add r4, #0x2a
strb r0, [r4, #0x0]
@@ -50317,7 +50317,7 @@ _0205DCC4:
ldr r0, [r5, #0x34]
bl FUN_02058780
mov r0, #0x1
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0x4
add r4, #0x2a
strb r0, [r4, #0x0]
@@ -50392,7 +50392,7 @@ FUN_0205DD40: ; 0x0205DD40
add r0, #0x1c
mov r2, #0xa0
str r1, [r4, #0x18]
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r3, #0x0
add r2, r3, #0x0
mov r0, #0x28
@@ -50453,13 +50453,13 @@ _0205DDCA:
add r6, r0, #0x0
ldr r0, _0205DED0 ; =0x0000FFFF
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0x0
add r1, r1, #0x1
lsl r1, r1, #0x10
add r0, r6, #0x0
lsr r1, r1, #0x10
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r6, r0, #0x10
cmp r6, r4
@@ -50475,13 +50475,13 @@ _0205DDF2:
lsr r6, r0, #0x18
add r0, r6, #0x0
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bne _0205DE1C
add r0, r6, #0x0
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
add r1, r5, r1
add r0, r5, #0x0
b _0205DE5C
@@ -50490,7 +50490,7 @@ _0205DE1C:
bne _0205DE30
add r0, r6, #0x0
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
add r0, r5, r4
add r1, r5, r1
sub r0, r0, #0x1
@@ -50603,7 +50603,7 @@ _0205DEE0:
bl FUN_0201B9EC
mov r1, #0x29
lsl r1, r1, #0x4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r7, r0, #0x10
cmp r7, #0x64
@@ -50659,7 +50659,7 @@ _0205DF4C:
beq _0205DF6E
add r0, r5, #0x0
mov r3, #0x2
- bl FUN_0224B818
+ bl MOD06_0224B818
str r0, [r4, #0x34]
b _0205DF90
_0205DF6E:
@@ -50668,13 +50668,13 @@ _0205DF6E:
bne _0205DF80
add r0, r5, #0x0
mov r3, #0x0
- bl FUN_0224B818
+ bl MOD06_0224B818
str r0, [r4, #0x34]
b _0205DF90
_0205DF80:
add r0, r5, #0x0
mov r3, #0x1
- bl FUN_0224B818
+ bl MOD06_0224B818
str r0, [r4, #0x34]
b _0205DF90
_0205DF8C:
@@ -50701,7 +50701,7 @@ _0205DFA4:
ldr r0, [r5, #0x34]
cmp r0, #0x0
beq _0205DFCA
- bl FUN_0224B86C
+ bl MOD06_0224B86C
cmp r0, #0x0
beq _0205DFD0
ldr r0, [r5, #0x34]
@@ -51041,7 +51041,7 @@ FUN_0205E1F0: ; 0x0205E1F0
ldr r2, [r5, #0x8]
lsl r1, r1, #0x2
strh r2, [r4, r1]
- bl FUN_02245844
+ bl MOD06_02245844
add r0, r5, #0x0
add r0, #0xd0
ldrb r0, [r0, #0x0]
@@ -51150,7 +51150,7 @@ _0205E2DC:
bl FUN_0201B9EC
mov r1, #0x29
lsl r1, r1, #0x4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
cmp r4, #0x64
@@ -51325,13 +51325,13 @@ _0205E43C:
lsl r1, r5, #0x10
ldr r0, _0205E47C ; =0x0000FFFF
lsr r1, r1, #0x10
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0x0
add r1, r1, #0x1
lsl r1, r1, #0x10
add r0, r4, #0x0
lsr r1, r1, #0x10
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
lsl r0, r5, #0x10
@@ -52131,7 +52131,7 @@ FUN_0205EA64: ; 0x0205EA64
bl FUN_0205EB20
cmp r0, #0x0
beq _0205EA72
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
_0205EA72:
pop {r3, pc}
@@ -52174,7 +52174,7 @@ FUN_0205EAB0: ; 0x0205EAB0
cmp r1, #0x0
bne _0205EACA
ldrb r1, [r4, #0x1]
- bl FUN_0224CECC
+ bl MOD06_0224CECC
add r1, r0, #0x0
add r0, r5, #0x0
bl FUN_0205EB14
@@ -52206,7 +52206,7 @@ FUN_0205EAE0: ; 0x0205EAE0
bne _0205EB0E
ldrb r1, [r4, #0x1]
add r0, r5, #0x0
- bl FUN_0224CECC
+ bl MOD06_0224CECC
add r1, r0, #0x0
add r0, r5, #0x0
bl FUN_0205EB14
@@ -52260,12 +52260,12 @@ FUN_0205EB38: ; 0x0205EB38
add r7, r0, #0x0
mov r1, #0x0
lsl r2, r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r7, #0x0
add r1, sp, #0xc
mov r2, #0x2
mov r3, #0xb
- bl FUN_021D959C
+ bl MOD05_021D959C
mov r0, #0x2
str r0, [sp, #0x0]
mov r0, #0x1
@@ -52276,21 +52276,21 @@ FUN_0205EB38: ; 0x0205EB38
add r0, r7, #0x0
mov r1, #0x55
add r3, r2, #0x0
- bl FUN_021D967C
+ bl MOD05_021D967C
ldr r0, _0205EBE4 ; =0x000034D8
mov r1, #0x55
str r0, [sp, #0x0]
add r0, r7, #0x0
mov r2, #0x2
mov r3, #0x0
- bl FUN_021D96F4
+ bl MOD05_021D96F4
ldr r0, _0205EBE4 ; =0x000034D8
mov r1, #0x55
str r0, [sp, #0x0]
add r0, r7, #0x0
mov r2, #0x3
mov r3, #0x0
- bl FUN_021D9708
+ bl MOD05_021D9708
mov r2, #0x1
ldr r0, _0205EBE4 ; =0x000034D8
str r2, [sp, #0x0]
@@ -52298,14 +52298,14 @@ FUN_0205EB38: ; 0x0205EB38
add r0, r7, #0x0
mov r1, #0x55
mov r3, #0x0
- bl FUN_021D971C
+ bl MOD05_021D971C
ldr r4, _0205EBE8 ; =0x020F73C8
mov r6, #0x0
add r5, r7, #0x0
_0205EBC0:
add r0, r7, #0x0
add r1, r4, #0x0
- bl FUN_021D9820
+ bl MOD05_021D9820
mov r1, #0x59
lsl r1, r1, #0x2
str r0, [r5, r1]
@@ -52341,7 +52341,7 @@ _0205EC02:
cmp r4, #0x2
blt _0205EBF8
add r0, r7, #0x0
- bl FUN_021D99F8
+ bl MOD05_021D99F8
add r0, r7, #0x0
bl FUN_02016A18
pop {r3-r7, pc}
@@ -53787,7 +53787,7 @@ FUN_0205F668: ; 0x0205F668
add r4, r0, #0x0
bl FUN_0201B9EC
mov r1, #0x62
- blx _s32_div_f
+ bl _s32_div_f
add r1, r1, #0x2
lsl r1, r1, #0x10
add r0, r4, #0x0
@@ -53977,7 +53977,7 @@ FUN_0205F7A0: ; 0x0205F7A0
add r0, r5, #0x0
mov r1, #0x0
lsl r2, r2, #0x6
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r0, [sp, #0x0]
ldr r0, [r0, #0x38]
bl FUN_02055320
@@ -54024,7 +54024,7 @@ _0205F812:
ldr r0, [r0, #0x0]
mov r1, #0x6
add r0, r0, #0x4
- blx _s32_div_f
+ bl _s32_div_f
mov r6, #0x0
add r4, r5, #0x0
_0205F83E:
@@ -54046,7 +54046,7 @@ _0205F85A:
strh r0, [r4, #0x28]
add r0, r1, #0x5
mov r1, #0x6
- blx _s32_div_f
+ bl _s32_div_f
add r6, r6, #0x1
add r4, #0xc
cmp r6, #0x5
@@ -54109,10 +54109,10 @@ FUN_0205F8CC: ; 0x0205F8CC
bl FUN_020462AC
str r0, [sp, #0x0]
add r0, sp, #0x28
- blx FS_InitFile
+ bl FS_InitFile
add r0, sp, #0x28
add r1, r4, #0x0
- blx FS_OpenFile
+ bl FS_OpenFile
cmp r0, #0x0
bne _0205F8F8
bl ErrorHandling
@@ -54122,7 +54122,7 @@ _0205F8F8:
add r0, sp, #0x28
add r1, sp, #0x24
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
cmp r0, #0x0
bge _0205F90A
bl ErrorHandling
@@ -54133,7 +54133,7 @@ _0205F90A:
mov r1, #0x0
mov r2, #0x4
add r6, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r1, [sp, #0x24]
ldr r0, _0205FA28 ; =0x0000013A
mov r4, #0x0
@@ -54162,7 +54162,7 @@ _0205F94C:
add r0, sp, #0x28
add r1, r6, #0x0
mov r2, #0x4
- blx FS_ReadFile
+ bl FS_ReadFile
ldrb r0, [r6, #0x0]
cmp r0, #0x1
beq _0205F962
@@ -54263,7 +54263,7 @@ _0205FA0E:
blt _0205F94C
_0205FA16:
add r0, sp, #0x28
- blx FS_CloseFile
+ bl FS_CloseFile
add r0, r6, #0x0
bl FUN_02016A18
add sp, #0x70
@@ -54283,7 +54283,7 @@ FUN_0205FA2C: ; 0x0205FA2C
mov r1, #0x0
mov r2, #0x40
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r6, #0x0
bl LoadPlayerDataAddress
str r0, [r4, #0xc]
@@ -54390,7 +54390,7 @@ _0205FB0C:
add r0, #0x2c
add r1, #0xe
mov r2, #0x6
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0x0
add r0, #0x22
ldrb r0, [r0, #0x0]
@@ -54416,7 +54416,7 @@ FUN_0205FB34: ; 0x0205FB34
mov r1, #0x0
mov r2, #0x30
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r5, #0x0
bl LoadPlayerDataAddress
str r0, [r4, #0x4]
@@ -54554,7 +54554,7 @@ FUN_0205FC50: ; 0x0205FC50
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x18
- blx MI_CpuFill8
+ bl MI_CpuFill8
strb r6, [r4, #0x8]
strb r7, [r4, #0x9]
add r0, sp, #0x8
@@ -54673,7 +54673,7 @@ FUN_0205FD38: ; 0x0205FD38
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x18
- blx MI_CpuFill8
+ bl MI_CpuFill8
strh r5, [r4, #0x12]
strh r7, [r4, #0x14]
ldr r0, [sp, #0x0]
@@ -54719,19 +54719,19 @@ _0205FD96:
_0205FDB0:
add r0, r6, #0x0
add r1, r7, #0x0
- bl FUN_02244660
+ bl MOD06_02244660
strh r0, [r4, #0x0]
b _0205FDD2
_0205FDBC:
add r0, r6, #0x0
add r1, r7, #0x0
- bl FUN_022446BC
+ bl MOD06_022446BC
strh r0, [r4, #0x0]
b _0205FDD2
_0205FDC8:
add r0, r6, #0x0
add r1, r7, #0x0
- bl FUN_022446E0
+ bl MOD06_022446E0
strh r0, [r4, #0x0]
_0205FDD2:
add r0, r5, #0x0
@@ -54752,7 +54752,7 @@ FUN_0205FDDC: ; 0x0205FDDC
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
strh r5, [r4, #0x0]
strh r6, [r4, #0x2]
ldr r0, [r7, #0x10]
@@ -55197,11 +55197,11 @@ FUN_0206015C: ; 0x0206015C
bl FUN_020169D8
add r4, r0, #0x0
mov r0, #0xb
- bl FUN_02244DB0
+ bl MOD06_02244DB0
str r0, [r4, #0x0]
mov r0, #0xb
add r1, r5, #0x0
- bl FUN_02245114
+ bl MOD06_02245114
str r0, [r4, #0x4]
mov r0, #0x0
strb r0, [r4, #0xc]
@@ -55251,9 +55251,9 @@ _020601CE:
bl FUN_0206367C
ldrb r0, [r4, #0xd]
ldr r1, [r4, #0x4]
- bl FUN_02245198
+ bl MOD06_02245198
ldr r0, [r4, #0x4]
- bl FUN_022451F0
+ bl MOD06_022451F0
str r0, [r4, #0x8]
add r0, r5, #0x0
bl FUN_0204AFC8
@@ -55302,16 +55302,16 @@ _02060232:
cmp r1, #0x5
bhi _02060290
add r0, r6, #0x0
- bl FUN_02245088
+ bl MOD06_02245088
add r6, r0, #0x0
add r0, r7, #0x0
mov r1, #0x1
bl FUN_0205889C
ldr r0, [r4, #0x0]
add r1, r6, #0x0
- bl FUN_02244DC4
+ bl MOD06_02244DC4
ldr r0, [r4, #0x0]
- bl FUN_02244EF8
+ bl MOD06_02244EF8
mov r0, #0x0
strb r0, [r4, #0xe]
ldr r0, _02060338 ; =0x00000679
@@ -55355,9 +55355,9 @@ _020602A2:
_020602B8:
ldrb r0, [r4, #0xd]
ldr r1, [r4, #0x4]
- bl FUN_02245198
+ bl MOD06_02245198
ldr r0, [r4, #0x4]
- bl FUN_022451F0
+ bl MOD06_022451F0
str r0, [r4, #0x8]
ldr r0, _02060338 ; =0x00000679
bl FUN_020054C8
@@ -55379,17 +55379,17 @@ _020602B8:
b _02060332
_020602F0:
ldr r0, [r4, #0x0]
- bl FUN_02244F18
+ bl MOD06_02244F18
mov r0, #0x7
strb r0, [r4, #0xc]
b _02060332
_020602FC:
ldr r0, [r4, #0x0]
- bl FUN_02244F24
+ bl MOD06_02244F24
cmp r0, #0x0
beq _02060332
ldr r0, [r4, #0x0]
- bl FUN_02244F2C
+ bl MOD06_02244F2C
mov r0, #0x1
strb r0, [r4, #0xc]
b _02060332
@@ -55398,9 +55398,9 @@ _02060312:
mov r1, #0x0
bl FUN_0206367C
ldr r0, [r4, #0x4]
- bl FUN_02245190
+ bl MOD06_02245190
ldr r0, [r4, #0x0]
- bl FUN_02244DBC
+ bl MOD06_02244DBC
add r0, r4, #0x0
bl FUN_02016A18
add sp, #0x10
@@ -55722,7 +55722,7 @@ FUN_02060588: ; 0x02060588
_0206059C:
bl FUN_0201B9EC
ldr r1, _020605D4 ; =0x000008D4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r5, r0, #0x10
cmp r5, #0x1d
@@ -55796,13 +55796,13 @@ _02060630:
add r6, r0, #0x0
ldr r0, _02060684 ; =0x0000FFFF
add r1, r5, #0x0
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0x0
add r1, r1, #0x1
lsl r1, r1, #0x10
add r0, r6, #0x0
lsr r1, r1, #0x10
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r6, r0, #0x10
cmp r6, r5
@@ -55903,11 +55903,11 @@ _02060704:
ldr r1, [r4, #0x0]
ldr r2, [r4, #0x8]
add r0, r6, #0x0
- bl FUN_0224891C
+ bl MOD06_0224891C
ldr r1, [r4, #0x0]
ldr r2, [r4, #0x8]
add r0, r6, #0x0
- bl FUN_022488FC
+ bl MOD06_022488FC
ldr r0, [r4, #0x4]
add r0, r0, #0x1
str r0, [r4, #0x4]
@@ -55975,7 +55975,7 @@ FUN_02060790: ; 0x02060790
mov r1, #0x0
mov r2, #0x2c
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0x0
str r0, [r4, #0x4]
str r5, [r4, #0x0]
@@ -56277,23 +56277,23 @@ _020609EC:
ldr r0, [r5, #0x50]
mov r1, #0x1
mov r2, #0x0
- bl FUN_021DA4EC
+ bl MOD05_021DA4EC
ldr r0, [r5, #0x50]
mov r1, #0x2
mov r2, #0x0
- bl FUN_021DA4EC
+ bl MOD05_021DA4EC
ldr r0, _02060B08 ; =0x000006DE
bl FUN_020054C8
b _02060B00
_02060A2C:
ldr r0, [r5, #0x50]
mov r1, #0x1
- bl FUN_021DA58C
+ bl MOD05_021DA58C
cmp r0, #0x0
beq _02060B00
ldr r0, [r5, #0x50]
mov r1, #0x2
- bl FUN_021DA58C
+ bl MOD05_021DA58C
cmp r0, #0x0
beq _02060B00
cmp r6, #0x0
@@ -56339,11 +56339,11 @@ _02060A8A:
ldr r0, [r5, #0x4c]
ldr r1, [r5, #0x50]
mov r2, #0x1
- bl FUN_021DA54C
+ bl MOD05_021DA54C
ldr r0, [r5, #0x4c]
ldr r1, [r5, #0x50]
mov r2, #0x2
- bl FUN_021DA54C
+ bl MOD05_021DA54C
_02060AA8:
add r0, r6, #0x0
bl FUN_0204AF3C
@@ -56401,7 +56401,7 @@ FUN_02060B0C: ; 0x02060B0C
add r4, r0, #0x0
ldr r1, [r4, #0x30]
add r0, sp, #0x0
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
ldrb r0, [r4, #0x1]
cmp r0, #0x3
bhi _02060B7C
@@ -56481,7 +56481,7 @@ _02060B86:
_02060BA6:
ldr r0, [r4, #0x30]
add r1, sp, #0x0
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
ldr r1, [r4, #0x14]
ldr r0, [r4, #0x7c]
add r1, r1, r0
@@ -56539,9 +56539,9 @@ _02060BF6:
beq _02060C6A
ldr r1, [r5, #0x2c]
add r0, r4, #0x0
- bl FUN_021F4BD0
+ bl MOD05_021F4BD0
ldr r0, [r0, #0x0]
- blx FUN_020BC13C
+ bl FUN_020BC13C
ldrh r1, [r0, #0xe]
add r2, sp, #0x20
mov r3, #0x0
@@ -56557,10 +56557,10 @@ _02060BF6:
bl ErrorHandling
_02060C38:
ldr r0, [sp, #0x20]
- bl FUN_021E7EC8
+ bl MOD05_021E7EC8
str r0, [sp, #0x1c]
ldr r0, [r5, #0x2c]
- bl FUN_021F4C88
+ bl MOD05_021F4C88
ldr r1, [sp, #0x1c]
add r2, sp, #0x24
str r1, [sp, #0x0]
@@ -56576,7 +56576,7 @@ _02060C38:
ldr r0, [r5, #0x4c]
ldr r1, [r5, #0x50]
add r3, r4, #0x0
- bl FUN_021DA464
+ bl MOD05_021DA464
b _02060C6E
_02060C6A:
bl ErrorHandling
@@ -56665,7 +56665,7 @@ FUN_02060CF8: ; 0x02060CF8
push {r3-r5, lr}
add r5, r0, #0x0
add r0, r1, #0x0
- bl FUN_02248B6C
+ bl MOD06_02248B6C
add r4, r0, #0x0
cmp r4, #0x0
ble _02060D0E
@@ -56781,13 +56781,13 @@ FUN_02060DCC: ; 0x02060DCC
add r5, r0, #0x0
add r0, r6, #0x0
add r4, r1, #0x0
- bl FUN_02248B5C
+ bl MOD06_02248B5C
add r7, r0, #0x0
add r0, r6, #0x0
- bl FUN_02248B54
+ bl MOD06_02248B54
str r0, [sp, #0x8]
add r0, r6, #0x0
- bl FUN_02248B58
+ bl MOD06_02248B58
str r0, [sp, #0x0]
mov r0, #0x1
str r0, [sp, #0x4]
@@ -57077,7 +57077,7 @@ FUN_02061008: ; 0x02061008
mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x24
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
pop {r4, pc}
@@ -57098,7 +57098,7 @@ FUN_02061028: ; 0x02061028
add r1, r5, #0x0
mov r2, #0x24
add r7, r3, #0x0
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
str r6, [r5, #0x0]
add r0, r5, #0x0
add r2, r5, #0x0
@@ -57205,7 +57205,7 @@ FUN_020610F8: ; 0x020610F8
add r6, r2, #0x0
add r0, r6, #0x0
add r5, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldrb r0, [r4, #0xb]
cmp r0, #0x0
@@ -57287,7 +57287,7 @@ FUN_020611A8: ; 0x020611A8
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -57321,7 +57321,7 @@ FUN_020611E8: ; 0x020611E8
bl FUN_02024DA0
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r1, r0, #0x0
ldrh r1, [r1, #0x6]
add r0, r4, #0x0
@@ -57364,7 +57364,7 @@ FUN_0206123C: ; 0x0206123C
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -57400,7 +57400,7 @@ FUN_02061288: ; 0x02061288
push {r3-r5, lr}
add r5, r0, #0x0
add r0, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldr r0, [r4, #0x8]
cmp r0, #0x0
@@ -57426,7 +57426,7 @@ FUN_020612AC: ; 0x020612AC
mov r0, #0x0
add r1, sp, #0x0
mov r2, #0x28
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r6, #0x0
mov r1, #0x1
mov r2, #0x0
@@ -57467,10 +57467,10 @@ FUN_02061304: ; 0x02061304
add r4, r2, #0x0
add r0, r4, #0x0
add r5, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r6, r0, #0x0
add r0, r4, #0x0
- bl FUN_02248B58
+ bl MOD06_02248B58
str r0, [sp, #0x0]
mov r1, #0x1
add r0, r5, #0x0
@@ -57494,10 +57494,10 @@ FUN_0206133C: ; 0x0206133C
add r4, r2, #0x0
add r0, r4, #0x0
add r5, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r6, r0, #0x0
add r0, r4, #0x0
- bl FUN_02248B58
+ bl MOD06_02248B58
str r0, [sp, #0x0]
mov r1, #0x1
add r0, r5, #0x0
@@ -57541,7 +57541,7 @@ FUN_0206139C: ; 0x0206139C
add r6, r2, #0x0
add r0, r6, #0x0
add r5, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldrh r2, [r4, #0x2]
add r0, r5, #0x0
@@ -57593,7 +57593,7 @@ FUN_02061404: ; 0x02061404
add r6, r2, #0x0
add r0, r6, #0x0
add r5, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldrh r2, [r4, #0x6]
add r0, r5, #0x0
@@ -57622,7 +57622,7 @@ FUN_02061444: ; 0x02061444
push {r3-r5, lr}
add r5, r0, #0x0
add r0, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl FUN_02024DA0
@@ -57666,7 +57666,7 @@ FUN_02061498: ; 0x02061498
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -57692,7 +57692,7 @@ FUN_02061498: ; 0x02061498
bl FUN_02060D90
bl FUN_0201B9EC
ldr r1, _020614F8 ; =0x00003334
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
cmp r4, #0x5
@@ -57714,7 +57714,7 @@ FUN_020614FC: ; 0x020614FC
bl FUN_02024DA0
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r1, r0, #0x0
ldrh r1, [r1, #0x0]
add r0, r4, #0x0
@@ -57743,7 +57743,7 @@ FUN_02061534: ; 0x02061534
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -57805,7 +57805,7 @@ FUN_020615B0: ; 0x020615B0
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -57841,7 +57841,7 @@ FUN_020615F8: ; 0x020615F8
bl FUN_02024DA0
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r1, r0, #0x0
ldrh r1, [r1, #0x0]
add r0, r4, #0x0
@@ -57881,7 +57881,7 @@ FUN_02061648: ; 0x02061648
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -57910,7 +57910,7 @@ FUN_02061688: ; 0x02061688
push {r3-r5, lr}
add r5, r0, #0x0
add r0, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl FUN_02024DA0
@@ -57963,7 +57963,7 @@ FUN_020616E8: ; 0x020616E8
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -57993,7 +57993,7 @@ FUN_02061728: ; 0x02061728
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -58014,7 +58014,7 @@ FUN_02061750: ; 0x02061750
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -58051,7 +58051,7 @@ FUN_02061798: ; 0x02061798
strb r2, [r0, #0x6]
bl FUN_0201BA60
mov r1, #0x3
- blx _u32_div_f
+ bl _u32_div_f
add r0, sp, #0x4
strb r1, [r0, #0x5]
add r0, sp, #0x8
@@ -58079,7 +58079,7 @@ FUN_020617D8: ; 0x020617D8
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -58100,7 +58100,7 @@ FUN_020617D8: ; 0x020617D8
bl FUN_02060E70
bl FUN_0201B9EC
ldr r1, _02061830 ; =0x00005556
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
cmp r4, #0x3
@@ -58119,7 +58119,7 @@ FUN_02061834: ; 0x02061834
push {r3-r5, lr}
add r5, r0, #0x0
add r0, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl FUN_02024DA0
@@ -58147,7 +58147,7 @@ FUN_02061868: ; 0x02061868
add r6, r2, #0x0
add r0, r6, #0x0
add r5, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
bl FUN_02023924
ldr r1, [r4, #0x0]
@@ -58261,7 +58261,7 @@ FUN_0206193C: ; 0x0206193C
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -58301,7 +58301,7 @@ FUN_02061990: ; 0x02061990
push {r3-r5, lr}
add r5, r0, #0x0
add r0, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl FUN_02024DA0
@@ -58351,7 +58351,7 @@ FUN_020619F0: ; 0x020619F0
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -58371,13 +58371,13 @@ FUN_020619F0: ; 0x020619F0
lsl r0, r0, #0x2
mul r0, r1
mov r1, #0xfe
- blx _u32_div_f
+ bl _u32_div_f
add r0, r0, #0x5
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
mov r1, #0xa
add r4, r0, #0x0
- blx _u32_div_f
+ bl _u32_div_f
add r2, r0, #0x0
mov r0, #0x0
str r0, [sp, #0x0]
@@ -58389,7 +58389,7 @@ FUN_020619F0: ; 0x020619F0
bl FUN_0200AD38
add r0, r4, #0x0
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
mov r0, #0x0
add r2, r1, #0x0
str r0, [sp, #0x0]
@@ -58407,7 +58407,7 @@ FUN_02061A70: ; 0x02061A70
push {r3-r5, lr}
add r5, r0, #0x0
add r0, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl FUN_02024DA0
@@ -58444,7 +58444,7 @@ FUN_02061AB0: ; 0x02061AB0
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -58502,7 +58502,7 @@ FUN_02061B24: ; 0x02061B24
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -58550,7 +58550,7 @@ FUN_02061B80: ; 0x02061B80
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -58615,7 +58615,7 @@ FUN_02061C00: ; 0x02061C00
add r6, r2, #0x0
add r0, r6, #0x0
add r5, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
mov r1, #0x0
add r4, r0, #0x0
str r1, [sp, #0x0]
@@ -58698,7 +58698,7 @@ FUN_02061CA8: ; 0x02061CA8
add r6, r2, #0x0
add r0, r6, #0x0
add r5, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldrb r0, [r4, #0x5]
cmp r0, #0x0
@@ -58760,7 +58760,7 @@ FUN_02061D30: ; 0x02061D30
push {r3-r5, lr}
add r5, r0, #0x0
add r0, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl FUN_02024DA0
@@ -58777,7 +58777,7 @@ FUN_02061D4C: ; 0x02061D4C
ldr r0, [r5, #0x4]
add r4, r1, #0x0
ldr r0, [r0, #0x14]
- bl FUN_02252538
+ bl MOD20_02252538
str r0, [sp, #0x0]
add r0, sp, #0x0
strh r4, [r0, #0x4]
@@ -58796,7 +58796,7 @@ FUN_02061D74: ; 0x02061D74
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -58852,7 +58852,7 @@ FUN_02061DE4: ; 0x02061DE4
add r6, r2, #0x0
add r0, r6, #0x0
add r5, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldrb r0, [r4, #0x5]
mov r1, #0x0
@@ -58907,7 +58907,7 @@ FUN_02061E60: ; 0x02061E60
push {r3-r5, lr}
add r5, r0, #0x0
add r0, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl FUN_02024DA0
@@ -58945,7 +58945,7 @@ FUN_02061EAC: ; 0x02061EAC
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -58967,7 +58967,7 @@ FUN_02061EDC: ; 0x02061EDC
push {r3-r5, lr}
add r5, r0, #0x0
add r0, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl FUN_02024DA0
@@ -58994,7 +58994,7 @@ FUN_02061F0C: ; 0x02061F0C
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -59037,7 +59037,7 @@ FUN_02061F60: ; 0x02061F60
add r7, r2, #0x0
add r0, r7, #0x0
add r5, r1, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r6, r0, #0x0
ldrb r4, [r6, #0x1]
add r0, r5, #0x0
@@ -59120,7 +59120,7 @@ FUN_02061FF8: ; 0x02061FF8
add r6, r2, #0x0
add r5, r1, #0x0
add r0, r6, #0x0
- bl FUN_02248B60
+ bl MOD06_02248B60
add r4, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0
@@ -59220,7 +59220,7 @@ _020620BE:
ble _020620D0
bl FUN_0201BA60
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
add r5, r1, #0x0
b _020620D2
_020620D0:
@@ -59255,7 +59255,7 @@ _02062100:
bl FUN_0201B9EC
mov r1, #0xf1
lsl r1, r1, #0x4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
cmp r4, #0x11
@@ -59313,7 +59313,7 @@ FUN_02062170: ; 0x02062170
add r7, r1, #0x0
bl FUN_0201B9EC
ldr r1, _02062234 ; =0x00003334
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
cmp r4, #0x5
@@ -59436,7 +59436,7 @@ FUN_02062240: ; 0x02062240
add r1, sp, #0x0
add r1, #0x2
add r2, sp, #0x0
- bl FUN_02245910
+ bl MOD06_02245910
add r0, sp, #0x0
ldrh r0, [r0, #0x2]
bl FUN_02034824
@@ -59499,7 +59499,7 @@ FUN_020622C4: ; 0x020622C4
bl FUN_0201B9EC
mov r1, #0xf1
lsl r1, r1, #0x4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r5, r0, #0x10
cmp r5, #0x11
@@ -59513,7 +59513,7 @@ _020622E6:
bl FUN_0201B9EC
mov r1, #0xf1
lsl r1, r1, #0x4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
cmp r4, #0x11
@@ -59625,13 +59625,13 @@ _020623B0:
lsl r1, r4, #0x10
ldr r0, _020623F0 ; =0x0000FFFF
lsr r1, r1, #0x10
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0x0
add r1, r1, #0x1
lsl r1, r1, #0x10
add r0, r5, #0x0
lsr r1, r1, #0x10
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r5, r0, #0x10
lsl r0, r4, #0x10
@@ -59745,13 +59745,13 @@ _0206249E:
add r5, r0, #0x0
ldr r0, _02062504 ; =0x0000FFFF
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0x0
add r1, r1, #0x1
lsl r1, r1, #0x10
add r0, r5, #0x0
lsr r1, r1, #0x10
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r5, r0, #0x10
cmp r5, r4
@@ -59827,7 +59827,7 @@ FUN_0206252C: ; 0x0206252C
ble _02062552
bl FUN_0201BA60
add r1, r4, #0x0
- blx _u32_div_f
+ bl _u32_div_f
add r5, r1, #0x0
b _02062554
_02062552:
@@ -59925,16 +59925,16 @@ FUN_020625EC: ; 0x020625EC
mov r1, #0x0
lsl r2, r2, #0x4
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x50
str r0, [r4, #0x0]
ldr r0, [sp, #0x0]
mov r1, #0x3
- blx _s32_div_f
+ bl _s32_div_f
strb r1, [r4, #0x16]
ldr r0, [sp, #0x0]
mov r1, #0x3
- blx _s32_div_f
+ bl _s32_div_f
strb r0, [r4, #0x17]
ldrb r0, [r4, #0x16]
bl FUN_0202B870
@@ -60047,7 +60047,7 @@ _020626FE:
add r0, r4, #0x0
mov r1, #0x0
lsl r2, r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r5, #0x0
bl FUN_020168D0
mov r0, #0xc
@@ -60511,7 +60511,7 @@ FUN_02062A70: ; 0x02062A70
mov r2, #0x3c
mov r1, #0x0
mul r2, r3
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldrb r1, [r4, #0x16]
ldr r2, [r4, #0x0]
add r0, r5, #0x0
@@ -61110,7 +61110,7 @@ FUN_02062F3C: ; 0x02062F3C
ldr r3, [r6, #0x0]
add r0, r6, r0
mov r2, #0x2
- bl FUN_021D959C
+ bl MOD05_021D959C
mov r0, #0x3
str r0, [sp, #0x0]
mov r0, #0x1
@@ -61123,7 +61123,7 @@ FUN_02062F3C: ; 0x02062F3C
add r0, r6, r0
mov r1, #0x82
add r3, r2, #0x0
- bl FUN_021D967C
+ bl MOD05_021D967C
ldr r0, _02062FF4 ; =0x000034D8
mov r1, #0x82
str r0, [sp, #0x0]
@@ -61132,7 +61132,7 @@ FUN_02062F3C: ; 0x02062F3C
add r0, r6, r0
mov r2, #0x2
mov r3, #0x0
- bl FUN_021D96F4
+ bl MOD05_021D96F4
ldr r0, _02062FF4 ; =0x000034D8
mov r1, #0x82
str r0, [sp, #0x0]
@@ -61141,7 +61141,7 @@ FUN_02062F3C: ; 0x02062F3C
add r0, r6, r0
mov r2, #0x3
mov r3, #0x0
- bl FUN_021D9708
+ bl MOD05_021D9708
mov r2, #0x1
ldr r0, _02062FF4 ; =0x000034D8
str r2, [sp, #0x0]
@@ -61151,7 +61151,7 @@ FUN_02062F3C: ; 0x02062F3C
add r0, r6, r0
mov r1, #0x82
mov r3, #0x0
- bl FUN_021D971C
+ bl MOD05_021D971C
ldr r4, _02062FF8 ; =0x020F7C7C
mov r7, #0x0
add r5, r6, #0x0
@@ -61160,7 +61160,7 @@ _02062FC4:
lsl r0, r0, #0x2
add r0, r6, r0
add r1, r4, #0x0
- bl FUN_021D9820
+ bl MOD05_021D9820
mov r1, #0xa6
lsl r1, r1, #0x2
str r0, [r5, r1]
@@ -61201,7 +61201,7 @@ _02063012:
mov r0, #0x4d
lsl r0, r0, #0x2
add r0, r7, r0
- bl FUN_021D99F8
+ bl MOD05_021D99F8
pop {r3-r7, pc}
.balign 4
@@ -61269,7 +61269,7 @@ _02063094:
ldr r0, _02063164 ; =0x020F7C2C
add r1, #0xa0
mov r2, #0x20
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r1, r5, #0x0
add r0, r5, #0x0
add r1, #0xd4
@@ -62277,7 +62277,7 @@ _020638DA:
ldr r0, [r4, #0x0]
ldr r2, [r4, #0x10]
mov r1, #0x1
- bl FUN_0224666C
+ bl MOD06_0224666C
str r0, [r4, #0x14]
ldr r0, [r4, #0x4]
add r0, r0, #0x1
@@ -62285,11 +62285,11 @@ _020638DA:
b _02063942
_020638F8:
ldr r0, [r4, #0x14]
- bl FUN_022466A0
+ bl MOD06_022466A0
cmp r0, #0x0
beq _02063942
ldr r0, [r4, #0x14]
- bl FUN_022466AC
+ bl MOD06_022466AC
mov r1, #0xa
mov r2, #0xc
ldrh r0, [r4, #0x8]
@@ -62405,7 +62405,7 @@ _020639B6:
ldr r0, [r5, #0x38]
add r1, r7, #0x0
add r2, r6, #0x0
- bl FUN_021E643C
+ bl MOD05_021E643C
cmp r0, #0x0
beq _020639FE
ldrh r1, [r4, #0xc]
@@ -62417,7 +62417,7 @@ _020639FE:
bl FUN_020552F8
add r1, r0, #0x0
add r0, r6, #0x0
- bl FUN_021E69BC
+ bl MOD05_021E69BC
cmp r0, #0x0
beq _02063A18
ldrh r1, [r4, #0xc]
@@ -63398,7 +63398,7 @@ FUN_02064174: ; 0x02064174
ldr r1, [r4, #0x0]
add r0, r6, #0x0
mov r2, #0x4
- bl FUN_0224CB30
+ bl MOD06_0224CB30
add r6, r0, #0x0
add r0, r4, #0x0
bl FUN_02016A18
@@ -63490,7 +63490,7 @@ FUN_02064230: ; 0x02064230
ldr r1, [r6, #0x0]
add r0, r4, #0x0
mov r2, #0xb
- bl FUN_0224CA88
+ bl MOD06_0224CA88
ldr r1, [r4, #0x1c]
add r7, r0, #0x0
ldr r1, [r1, #0x0]
@@ -63987,7 +63987,7 @@ _02064622:
add r0, r4, #0x0
mov r1, #0x0
add r2, r5, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r3-r5, pc}
@@ -64007,7 +64007,7 @@ FUN_02064640: ; 0x02064640
mov r1, #0x0
mov r2, #0xc8
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r1, _02064680 ; =FUN_0206478C
add r0, r4, #0x0
bl FUN_020646B8
@@ -64166,7 +64166,7 @@ FUN_0206473C: ; 0x0206473C
bl FUN_02064738
mov r1, #0x0
add r2, r4, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
pop {r4, pc}
.balign 4
@@ -64297,12 +64297,12 @@ FUN_020647A4: ; 0x020647A4
ldr r0, [r0, #0x0]
ldr r1, [r4, #0x2c]
mov r3, r12
- bl FUN_021E7FBC
+ bl MOD05_021E7FBC
add r0, r4, #0x0
add r0, #0xa0
ldr r0, [r0, #0x0]
ldr r1, _02064864 ; =0x00000102
- bl FUN_021E7ED8
+ bl MOD05_021E7ED8
str r0, [sp, #0x14]
b _0206482C
_0206480A:
@@ -64324,11 +64324,11 @@ _0206480A:
_0206482C:
ldr r1, [sp, #0x14]
add r0, sp, #0x18
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
ldr r0, [sp, #0x14]
add r1, sp, #0x18
str r5, [sp, #0x1c]
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
mov r0, #0x2
str r0, [sp, #0x0]
str r5, [sp, #0x4]
@@ -64339,7 +64339,7 @@ _0206482C:
ldr r1, [r6, #0x8]
ldr r2, [r6, #0xc]
mov r0, #0x0
- bl FUN_021F44D8
+ bl MOD05_021F44D8
add sp, #0x30
pop {r3-r7, pc}
nop
@@ -64671,7 +64671,7 @@ _02064AB4:
add r0, #0xa0
ldr r0, [r0, #0x0]
ldr r1, _02064B64 ; =0x00000102
- bl FUN_021E7ED8
+ bl MOD05_021E7ED8
str r0, [sp, #0xc]
b _02064AEC
_02064ACA:
@@ -64693,7 +64693,7 @@ _02064ACA:
_02064AEC:
ldr r1, [sp, #0xc]
add r0, sp, #0x10
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
ldr r0, [r4, #0xc]
cmp r0, #0x0
bne _02064AFE
@@ -64721,7 +64721,7 @@ _02064B1C:
bl FUN_02055540
ldr r0, [sp, #0xc]
add r1, sp, #0x10
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
b _02064B5C
_02064B2E:
add r2, r5, #0x0
@@ -64729,7 +64729,7 @@ _02064B2E:
ldr r1, [r4, #0x4]
ldr r2, [r2, #0x0]
mov r0, #0x0
- bl FUN_021F4594
+ bl MOD05_021F4594
ldr r0, [r5, #0x38]
mov r1, #0x1
bl FUN_0205557C
@@ -64795,7 +64795,7 @@ _02064BB4:
add r0, #0xa0
ldr r0, [r0, #0x0]
ldr r1, _02064C58 ; =0x00000102
- bl FUN_021E7ED8
+ bl MOD05_021E7ED8
str r0, [sp, #0xc]
b _02064BEC
_02064BCA:
@@ -64817,7 +64817,7 @@ _02064BCA:
_02064BEC:
ldr r1, [sp, #0xc]
add r0, sp, #0x10
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
mov r0, #0x1
ldr r1, [sp, #0x14]
lsl r0, r0, #0xc
@@ -64838,7 +64838,7 @@ _02064C12:
bl FUN_02055540
ldr r0, [sp, #0xc]
add r1, sp, #0x10
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
b _02064C52
_02064C24:
add r2, r5, #0x0
@@ -64846,7 +64846,7 @@ _02064C24:
ldr r1, [r4, #0x4]
ldr r2, [r2, #0x0]
mov r0, #0x0
- bl FUN_021F4594
+ bl MOD05_021F4594
ldr r0, [r5, #0x38]
mov r1, #0x1
bl FUN_0205557C
@@ -65347,7 +65347,7 @@ FUN_02065054: ; 0x02065054
ldr r2, _0206506C ; =0x0000066C
mov r1, #0x0
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r4, pc}
nop
@@ -65640,7 +65640,7 @@ _02065290:
ldr r0, [sp, #0x10]
add r1, r4, #0x0
lsl r2, r2, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r3-r5, pc}
.balign 4
_020652A0: .word 0x000F423F
@@ -65828,7 +65828,7 @@ FUN_020653EC: ; 0x020653EC
mov r1, #0x0
lsl r2, r2, #0x2
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r5, #0x0
str r6, [r4, #0x4]
bl FUN_020377AC
@@ -66796,7 +66796,7 @@ _02065B9E:
ldr r0, _02065CE4 ; =0x020F7E8C
add r1, r5, r1
mov r2, #0x20
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r1, #0x5d
lsl r1, r1, #0x2
add r0, r1, #0x0
@@ -67096,7 +67096,7 @@ _02065E14:
ldr r0, _02065ED0 ; =0x020F7E8C
add r1, r5, r1
mov r2, #0x20
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x5d
lsl r0, r0, #0x2
add r1, r0, #0x0
@@ -67807,7 +67807,7 @@ FUN_020663D4: ; 0x020663D4
add r0, r4, r0
mov r1, #0x0
mov r2, #0x10
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x17
mov r1, #0x0
lsl r0, r0, #0x4
@@ -68077,12 +68077,12 @@ _020665E6:
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x5a
- bl FUN_0224C678
+ bl MOD06_0224C678
mov r0, #0x5b
lsl r0, r0, #0x2
ldr r0, [r4, r0]
mov r1, #0x5a
- bl FUN_0224C6E8
+ bl MOD06_0224C6E8
ldrh r0, [r4, #0x12]
add r0, r0, #0x1
strh r0, [r4, #0x12]
@@ -68093,7 +68093,7 @@ _02066614:
ldr r0, [r4, r0]
mov r1, #0x5a
ldr r0, [r0, #0x50]
- bl FUN_021DA58C
+ bl MOD05_021DA58C
cmp r0, #0x0
beq _0206662E
mov r0, #0x0
@@ -68114,7 +68114,7 @@ FUN_02066634: ; 0x02066634
add r4, r1, #0x0
ldr r0, [r5, r0]
mov r1, #0x5a
- bl FUN_021DAF98
+ bl MOD05_021DAF98
cmp r4, #0x0
bne _02066652
add r0, r5, #0x0
@@ -68148,7 +68148,7 @@ _02066676:
mov r1, #0x0
mov r2, #0x40
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x5b
lsl r0, r0, #0x2
ldr r0, [r5, r0]
@@ -68387,13 +68387,13 @@ FUN_02066840: ; 0x02066840
add r0, r7, #0x0
mov r1, #0x0
mov r2, #0xe4
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
bl FUN_0202398C
add r1, r7, #0x0
add r1, #0xa8
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0x0
bl FUN_020239BC
add r1, r7, #0x0
@@ -68460,7 +68460,7 @@ _020668FC:
ldr r1, [sp, #0x8]
mov r2, #0x8
add r1, r1, r5
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r4, r4, #0x1
add r5, #0x8
cmp r4, #0x3
@@ -68471,7 +68471,7 @@ _020668FC:
add r1, r7, #0x0
add r1, #0xc0
mov r2, #0x8
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, [sp, #0x0]
cmp r0, #0x0
bne _02066956
@@ -68517,7 +68517,7 @@ FUN_02066978: ; 0x02066978
mov r0, #0x0
add r1, r4, #0x0
mov r2, #0xec
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
ldrh r2, [r4, #0x6]
add r0, #0x8
@@ -68537,7 +68537,7 @@ FUN_020669A0: ; 0x020669A0
mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x88
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
ldrh r2, [r4, #0x6]
add r0, #0x8
@@ -68747,7 +68747,7 @@ FUN_02066ACC: ; 0x02066ACC
mov r0, #0x0
add r1, sp, #0x14
mov r2, #0x18
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r5, #0x0
mov r1, #0xaa
add r2, sp, #0x14
@@ -69083,7 +69083,7 @@ _02066DF4:
orr r0, r1
orr r0, r2
mov r1, #0x1c
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r1, #0x10
lsr r5, r0, #0x10
add r0, r4, #0x0
@@ -69137,7 +69137,7 @@ FUN_02066E74: ; 0x02066E74
cmp r5, #0x0
bne _02066EA0
mov r1, #0x19
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0x1
mov r0, #0x19
mul r0, r1
@@ -69312,7 +69312,7 @@ _02066FFC:
add r0, r0, r1
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, r4, r0
add r0, #0xa
_0206701E:
@@ -69334,7 +69334,7 @@ _0206701E:
add r0, r0, r1
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, r0, #0x5
str r0, [sp, #0x4c]
add r0, r5, #0x0
@@ -69362,7 +69362,7 @@ _0206701E:
add r0, r0, r1
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, r0, #0x5
str r0, [sp, #0x48]
add r0, r5, #0x0
@@ -69390,7 +69390,7 @@ _0206701E:
add r0, r0, r1
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, r0, #0x5
str r0, [sp, #0x44]
add r0, r5, #0x0
@@ -69418,7 +69418,7 @@ _0206701E:
add r0, r0, r1
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, r0, #0x5
str r0, [sp, #0x40]
add r0, r5, #0x0
@@ -69446,7 +69446,7 @@ _0206701E:
add r0, r0, r1
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, r0, #0x5
str r0, [sp, #0x3c]
add r0, r5, #0x0
@@ -70060,7 +70060,7 @@ _020675AA:
sub r2, #0x19
add r1, r4, #0x0
str r2, [sp, #0x4]
- blx _ll_shl
+ bl _ll_shl
ldr r2, [r5, #0x1c]
add r3, r4, #0x0
and r3, r1
@@ -70156,7 +70156,7 @@ _02067654:
sub r2, #0x4e
add r1, r4, #0x0
str r2, [sp, #0x4]
- blx _ll_shl
+ bl _ll_shl
ldr r2, [r6, #0x14]
add r3, r4, #0x0
and r3, r1
@@ -70255,7 +70255,7 @@ _02067706:
sub r2, #0x7a
add r1, r4, #0x0
str r2, [sp, #0x4]
- blx _ll_shl
+ bl _ll_shl
ldr r3, [r7, #0x18]
ldr r2, [r7, #0x1c]
and r3, r0
@@ -71020,7 +71020,7 @@ _02067C98:
sub r2, #0x19
add r0, r4, #0x0
str r2, [sp, #0x4]
- blx _ll_shl
+ bl _ll_shl
cmp r4, #0x0
beq _02067CB6
ldr r1, [r7, #0x1c]
@@ -71158,7 +71158,7 @@ _02067D94:
sub r2, #0x4e
add r0, r4, #0x0
str r2, [sp, #0x4]
- blx _ll_shl
+ bl _ll_shl
cmp r4, #0x0
beq _02067DB2
ldr r1, [r5, #0x14]
@@ -71288,7 +71288,7 @@ _02067E8A:
sub r2, #0x7a
add r0, r4, #0x0
str r2, [sp, #0x4]
- blx _ll_shl
+ bl _ll_shl
cmp r4, #0x0
beq _02067EB2
add r4, r6, #0x0
@@ -72436,7 +72436,7 @@ FUN_02068698: ; 0x02068698
mov r0, #0x64
mul r0, r1
sub r1, r6, r4
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
pop {r3-r7, pc}
@@ -72652,7 +72652,7 @@ FUN_0206885C: ; 0x0206885C
FUN_02068884: ; 0x02068884
push {r3, lr}
mov r1, #0x19
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r1, #0x18
lsr r0, r0, #0x18
pop {r3, pc}
@@ -72686,7 +72686,7 @@ _020688A2:
lsl r0, r0, #0x10
lsr r0, r0, #0x10
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r1, r0, #0x10
b _020688E0
@@ -72696,7 +72696,7 @@ _020688CE:
lsl r0, r0, #0x10
lsr r0, r0, #0x10
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r1, r0, #0x10
_020688E0:
@@ -72798,7 +72798,7 @@ _02068994:
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
asr r4, r0, #0x18
_020689AA:
@@ -73726,7 +73726,7 @@ FUN_02069010: ; 0x02069010
add r0, sp, #0xc
add r1, r4, #0x0
mov r2, #0x14
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add sp, #0x20
pop {r3-r5, pc}
.balign 4
@@ -74006,7 +74006,7 @@ _02069216:
ldr r0, [sp, #0x1c]
mov r1, #0xa
ldr r4, [sp, #0x18]
- blx _s32_div_f
+ bl _s32_div_f
str r1, [sp, #0x8]
_02069246:
ldrh r0, [r4, #0x0]
@@ -74438,20 +74438,20 @@ FUN_02069558: ; 0x02069558
bl ErrorHandling
_0206956E:
add r0, sp, #0x4
- blx FS_InitFile
+ bl FS_InitFile
ldr r1, _020695A4 ; =0x02105FC8
add r0, sp, #0x4
- blx FS_OpenFile
+ bl FS_OpenFile
add r0, sp, #0x4
lsl r1, r4, #0x1
mov r2, #0x0
- blx FS_SeekFile
+ bl FS_SeekFile
add r0, sp, #0x4
add r1, sp, #0x0
mov r2, #0x2
- blx FS_ReadFile
+ bl FS_ReadFile
add r0, sp, #0x4
- blx FS_CloseFile
+ bl FS_CloseFile
add r0, sp, #0x0
ldrh r0, [r0, #0x0]
add sp, #0x4c
@@ -75115,7 +75115,7 @@ _02069A8E:
mov r0, #0x0
add r1, sp, #0x4
mov r2, #0x18
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
mov r1, #0xaa
add r2, sp, #0x4
@@ -75347,7 +75347,7 @@ FUN_02069C4C: ; 0x02069C4C
_02069C70:
bl FUN_0201B9EC
add r1, r6, #0x0
- blx _s32_div_f
+ bl _s32_div_f
add r0, r5, #0x0
add r7, r1, #0x0
bl FUN_0206B9B0
@@ -75529,7 +75529,7 @@ FUN_02069DC8: ; 0x02069DC8
add r7, r0, #0x0
bl FUN_0201B9EC
mov r1, #0x3
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0x0
bne _02069E70
mov r4, #0x0
@@ -75917,7 +75917,7 @@ FUN_0206A094: ; 0x0206A094
bne _0206A12E
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r4, r1, #0x0
add r0, r5, #0x0
mov r1, #0x5
@@ -77385,7 +77385,7 @@ FUN_0206AA84: ; 0x0206AA84
add r1, sp, #0x0
add r1, #0x1
mov r2, #0x18
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0x0
mov r1, #0xa1
add r2, sp, #0x0
@@ -77479,7 +77479,7 @@ _0206AB3A:
mul r0, r4
mul r0, r5
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, r4, r0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
@@ -77970,7 +77970,7 @@ _0206AECE:
mov r0, #0x1f
mul r0, r1
mov r1, #0xff
- blx _s32_div_f
+ bl _s32_div_f
add r3, r0, #0x0
mov r0, #0x1
str r0, [sp, #0x0]
@@ -78054,7 +78054,7 @@ _0206AF76:
mov r0, #0x1f
mul r0, r1
mov r1, #0xff
- blx _s32_div_f
+ bl _s32_div_f
add r3, r0, #0x0
mov r0, #0x1
str r0, [sp, #0x0]
@@ -78147,7 +78147,7 @@ _0206B030:
mov r0, #0x1f
mul r0, r1
mov r1, #0xff
- blx _s32_div_f
+ bl _s32_div_f
add r3, r0, #0x0
mov r0, #0x1
str r0, [sp, #0x0]
@@ -78231,7 +78231,7 @@ _0206B0DA:
mov r0, #0x1f
mul r0, r1
mov r1, #0xff
- blx _s32_div_f
+ bl _s32_div_f
add r3, r0, #0x0
mov r0, #0x1
str r0, [sp, #0x0]
@@ -79377,7 +79377,7 @@ _0206B8DA:
add r0, r5, #0x0
mov r1, #0x0
lsl r2, r2, #0x4
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r4, #0x0
str r4, [r5, #0x4]
str r6, [r5, #0x0]
@@ -80144,7 +80144,7 @@ FUN_0206BE48: ; 0x0206BE48
add r0, sp, #0x30
mov r1, #0x0
mov r2, #0xc
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #0x20]
mov r7, #0x0
cmp r0, #0x0
@@ -80325,10 +80325,10 @@ FUN_0206BF90: ; 0x0206BF90
strb r0, [r6, #0x4]
add r0, r5, #0x0
add r1, r4, #0x4
- bl FUN_02231344
+ bl MOD11_02231344
add r0, r5, #0x0
add r1, r6, #0x4
- bl FUN_02231350
+ bl MOD11_02231350
ldr r0, _0206BFE8 ; =FUN_0206C550
add r1, r4, #0x0
mov r2, #0x0
@@ -80511,13 +80511,13 @@ FUN_0206C0C8: ; 0x0206C0C8
bl FUN_02016998
add r6, r0, #0x0
ldr r0, [sp, #0x0]
- bl FUN_022300D4
+ bl MOD11_022300D4
add r5, r0, #0x0
ldr r0, [sp, #0x0]
- bl FUN_022300F4
+ bl MOD11_022300F4
add r4, r0, #0x0
ldr r0, [sp, #0x0]
- bl FUN_02230100
+ bl MOD11_02230100
mov r12, r0
add r0, sp, #0x10
ldrh r3, [r4, #0x0]
@@ -80577,13 +80577,13 @@ FUN_0206C154: ; 0x0206C154
add r0, r3, #0x0
add r5, r1, #0x0
add r6, r2, #0x0
- bl FUN_022300DC
+ bl MOD11_022300DC
add r7, r0, #0x0
ldr r0, [sp, #0x0]
- bl FUN_02230118
+ bl MOD11_02230118
add r4, r0, #0x0
ldr r0, [sp, #0x0]
- bl FUN_02230124
+ bl MOD11_02230124
ldrh r1, [r4, #0x0]
add r2, r1, r5
add r3, r2, #0x1
@@ -81135,16 +81135,16 @@ FUN_0206C550: ; 0x0206C550
add r5, r1, #0x0
str r0, [sp, #0x0]
ldr r0, [r5, #0x0]
- bl FUN_022300D4
+ bl MOD11_022300D4
add r6, r0, #0x0
ldr r0, [r5, #0x0]
- bl FUN_022300E8
+ bl MOD11_022300E8
add r4, r0, #0x0
ldr r0, [r5, #0x0]
- bl FUN_022300F4
+ bl MOD11_022300F4
str r0, [sp, #0x4]
ldr r0, [r5, #0x0]
- bl FUN_02230100
+ bl MOD11_02230100
add r7, r0, #0x0
ldrb r0, [r5, #0x4]
cmp r0, #0x0
@@ -81203,16 +81203,16 @@ FUN_0206C5DC: ; 0x0206C5DC
add r5, r1, #0x0
str r0, [sp, #0x0]
ldr r0, [r5, #0x0]
- bl FUN_022300DC
+ bl MOD11_022300DC
add r6, r0, #0x0
ldr r0, [r5, #0x0]
- bl FUN_0223010C
+ bl MOD11_0223010C
add r4, r0, #0x0
ldr r0, [r5, #0x0]
- bl FUN_02230118
+ bl MOD11_02230118
add r7, r0, #0x0
ldr r0, [r5, #0x0]
- bl FUN_02230124
+ bl MOD11_02230124
ldrb r1, [r5, #0x4]
cmp r1, #0x0
beq _0206C60A
@@ -81233,7 +81233,7 @@ _0206C61E:
ldrh r1, [r4, #0x0]
ldr r0, [r5, #0x0]
add r1, r6, r1
- bl FUN_022567E0
+ bl MOD11_022567E0
ldrh r0, [r4, #0x0]
add r1, r0, #0x2
ldrb r2, [r6, r1]
@@ -81259,13 +81259,13 @@ FUN_0206C64C: ; 0x0206C64C
add r4, r3, #0x0
add r0, r4, #0x0
mov r1, #0xff
- bl FUN_0223135C
+ bl MOD11_0223135C
add r0, r4, #0x0
mov r1, #0xff
- bl FUN_02231368
+ bl MOD11_02231368
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_02231374
+ bl MOD11_02231374
pop {r4, pc}
.balign 4
@@ -81362,21 +81362,21 @@ FUN_0206C700: ; 0x0206C700
mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x80
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
bl FUN_020222F0
str r0, [sp, #0x1c]
bl FUN_020222E8
add r1, r0, #0x0
ldr r2, [sp, #0x1c]
mov r0, #0x0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
bl FUN_02022300
str r0, [sp, #0x20]
bl FUN_020222F8
add r1, r0, #0x0
ldr r2, [sp, #0x20]
mov r0, #0x0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r0, [sp, #0x14]
str r6, [r4, #0x24]
mov r1, #0x5
@@ -81497,7 +81497,7 @@ FUN_0206C700: ; 0x0206C700
ldr r1, [r4, #0x3c]
mov r0, #0x0
mov r2, #0x30
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r1, [sp, #0x38]
ldr r0, [r4, #0x3c]
str r1, [r0, #0x2c]
@@ -83490,7 +83490,7 @@ _0206D8EA:
mov r0, #0x0
add r1, sp, #0x8
mov r2, #0x18
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r5, #0x0
mov r1, #0xaa
add r2, sp, #0x8
@@ -83559,25 +83559,25 @@ _0206D9C6:
mov r0, #0x0
lsl r1, r1, #0x18
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x62
mov r2, #0x2
mov r0, #0x0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x19
mov r2, #0x1
mov r0, #0x0
lsl r1, r1, #0x16
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x66
mov r2, #0x2
mov r0, #0x0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r6, _0206DC2C ; =0x020F8328
add r3, sp, #0x2c
add r2, r3, #0x0
@@ -84084,14 +84084,14 @@ FUN_0206DE4C: ; 0x0206DE4C
mov r1, #0x0
mov r2, #0xe
mov r3, #0xb
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
mov r0, #0x8
str r0, [sp, #0x0]
ldr r0, _0206DE74 ; =0x04001050
mov r1, #0x0
mov r2, #0xe
mov r3, #0x7
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
pop {r3, pc}
.balign 4
_0206DE70: .word 0x04000050
@@ -84155,13 +84155,13 @@ FUN_0206DE94: ; 0x0206DE94
add r1, r0, #0x0
add r2, r0, #0x0
add r3, r0, #0x0
- blx G3X_SetFog
+ bl G3X_SetFog
mov r0, #0x0
ldr r2, _0206DF0C ; =0x00007FFF
add r1, r0, #0x0
mov r3, #0x3f
str r0, [sp, #0x0]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _0206DF10 ; =0xBFFF0000
ldr r0, _0206DF14 ; =0x04000580
str r1, [r0, #0x0]
@@ -84214,7 +84214,7 @@ FUN_0206DF58: ; 0x0206DF58
cmp r0, #0x0
ble _0206DF6E
bl FUN_020222AC
- blx FUN_020B02C8
+ bl FUN_020B02C8
_0206DF6E:
bl FUN_02013388
mov r0, #0x1
@@ -84720,7 +84720,7 @@ FUN_0206E2F0: ; 0x0206E2F0
mov r1, #0x0
mov r2, #0x78
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
pop {r4, pc}
.balign 4
@@ -86830,7 +86830,7 @@ FUN_0206F164: ; 0x0206F164
mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x24
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
add r0, r4, #0x0
pop {r4, pc}
@@ -87124,9 +87124,9 @@ _0206F34A:
bl FUN_0201681C
bl FUN_02088878
mov r0, #0x36
- bl FUN_02211E60
+ bl MOD07_02211E60
mov r0, #0x0
- blx OS_ResetSystem
+ bl OS_ResetSystem
b _0206F380
_0206F366:
ldr r0, [r4, #0x0]
@@ -87157,14 +87157,14 @@ FUN_0206F38C: ; 0x0206F38C
mov r1, #0x0
mov r2, #0x10
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0xb
mov r1, #0xc
bl FUN_020169D8
mov r1, #0x0
mov r2, #0xc
str r0, [r4, #0x0]
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
pop {r4, pc}
.balign 4
@@ -88362,7 +88362,7 @@ FUN_0206FD24: ; 0x0206FD24
bl LoadFromNarc_2
add r1, sp, #0x10
add r4, r0, #0x0
- blx FUN_020B0138
+ bl FUN_020B0138
ldr r2, [sp, #0x10]
mov r0, #0x3
ldr r1, [r2, #0xc]
@@ -88378,7 +88378,7 @@ FUN_0206FD24: ; 0x0206FD24
add r0, r5, r0
add r1, #0x60
lsl r2, r2, #0x8
- blx memcpy
+ bl memcpy
mov r0, #0xc
add r1, r4, #0x0
bl FUN_02016A8C
@@ -88490,7 +88490,7 @@ FUN_0206FE74: ; 0x0206FE74
ldr r2, _0206FF50 ; =0x00000B38
mov r1, #0x0
add r6, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
bl FUN_0200628C
ldr r1, _0206FF54 ; =0x000005A4
@@ -93292,7 +93292,7 @@ FUN_020724D4: ; 0x020724D4
bl LoadFromNarc_2
add r1, sp, #0xc
str r0, [sp, #0x8]
- blx FUN_020B0180
+ bl FUN_020B0180
ldr r0, [sp, #0xc]
mov r4, #0x0
str r0, [sp, #0x4]
@@ -93303,14 +93303,14 @@ _020724FE:
ldr r1, [sp, #0x0]
add r0, r5, #0x0
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r1, r4, #0x6
lsl r2, r1, #0x6
ldr r1, [sp, #0x4]
add r0, r6, #0x0
add r1, r1, r2
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r1, r4, #0x0
add r1, #0xc
lsl r2, r1, #0x6
@@ -93318,7 +93318,7 @@ _020724FE:
add r0, r7, #0x0
add r1, r1, r2
mov r2, #0x20
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x0]
add r4, r4, #0x1
add r0, #0x40
@@ -97348,13 +97348,13 @@ _02074638:
ldr r1, [sp, #0x14]
add r0, r0, r5
add r1, r1, r7
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x1c]
ldr r1, [sp, #0x10]
add r0, r0, r5
add r1, r1, r7
mov r2, #0x20
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x4]
mov r2, #0x20
add r0, r0, r4
@@ -97366,13 +97366,13 @@ _02074638:
ldr r1, [sp, #0x14]
add r0, r0, r5
add r1, r1, r7
- blx memcpy
+ bl memcpy
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x10]
add r0, r0, r5
add r1, r1, r7
mov r2, #0x20
- blx memcpy
+ bl memcpy
add r0, r4, #0x1
lsl r0, r0, #0x10
lsr r4, r0, #0x10
@@ -99044,7 +99044,7 @@ FUN_020753B4: ; 0x020753B4
ldr r0, _020754AC ; =0x00000708
ldrh r0, [r1, r0]
mov r1, #0x5
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _020754B0 ; =0x00000B28
strh r0, [r4, r1]
sub r0, r1, #0x3
@@ -102727,7 +102727,7 @@ _020772FE:
mov r1, #0x0
lsl r2, r2, #0x4
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0x12
bl FUN_02016B94
mov r1, #0x16
@@ -102890,7 +102890,7 @@ FUN_020774B8: ; 0x020774B8
ldr r1, _020774E8 ; =0x000057E0
add r6, r3, #0x0
lsl r2, r2, #0x8
- blx GX_LoadOBJ
+ bl GX_LoadOBJ
ldr r4, [r4, #0xc]
add r0, r5, #0x0
add r1, r6, #0x0
@@ -102900,7 +102900,7 @@ FUN_020774B8: ; 0x020774B8
add r0, r4, r0
mov r1, #0xc0
mov r2, #0x20
- blx GX_LoadOBJPltt
+ bl GX_LoadOBJPltt
pop {r4-r6, pc}
nop
_020774E8: .word 0x000057E0
@@ -103279,7 +103279,7 @@ FUN_020777D4: ; 0x020777D4
bne _020777FE
bl FUN_0201B9EC
mov r1, #0x12
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x17
lsl r0, r0, #0x4
ldr r0, [r5, r0]
@@ -103291,7 +103291,7 @@ _020777FE:
bne _0207781A
bl FUN_0201B9EC
mov r1, #0x12
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x17
lsl r0, r0, #0x4
ldr r0, [r5, r0]
@@ -103949,7 +103949,7 @@ _02077D88:
mov r0, #0x1
add r1, #0xd8
mov r2, #0x40
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r0, [r4, #0x0]
cmp r0, #0x1
bne _02077DCE
@@ -104394,7 +104394,7 @@ FUN_02078140: ; 0x02078140
push {r4-r7, lr}
sub sp, #0x14
add r5, r0, #0x0
- blx FUN_020B0FC0
+ bl FUN_020B0FC0
mov r0, #0x0
str r0, [sp, #0x0]
mov r1, #0x80
@@ -104516,7 +104516,7 @@ _0207818C:
mov r1, #0x2
ldr r0, [r5, r0]
lsl r1, r1, #0x8
- blx DC_FlushRange
+ bl DC_FlushRange
bl FUN_0206B888
add r1, r0, #0x0
mov r0, #0x13
@@ -104529,7 +104529,7 @@ _0207818C:
add r0, r1, #0x4
ldr r0, [r5, r0]
mov r1, #0x80
- blx DC_FlushRange
+ bl DC_FlushRange
_02078272:
mov r3, #0x1
str r3, [sp, #0x0]
@@ -106027,7 +106027,7 @@ _02078E52:
add r0, sp, #0x0
mov r1, #0x3a
mov r2, #0x2
- blx GX_LoadOBJPltt
+ bl GX_LoadOBJPltt
pop {r3, pc}
thumb_func_start FUN_02078E7C
@@ -106197,7 +106197,7 @@ FUN_02078FA0: ; 0x02078FA0
bl FUN_02078F7C
mov r1, #0x2
lsl r1, r1, #0xa
- blx DC_FlushRange
+ bl DC_FlushRange
add r7, r6, #0x0
mov r4, #0x0
add r7, #0x30
@@ -106213,14 +106213,14 @@ _02078FD0:
mov r1, #0x1
add r0, r5, #0x0
lsl r1, r1, #0x8
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r1, _02079070 ; =0x020F9D28
mov r2, #0x1
ldrb r1, [r1, r4]
add r0, r5, #0x0
lsl r2, r2, #0x8
lsl r1, r1, #0x5
- blx GXS_LoadOBJ
+ bl GXS_LoadOBJ
add r0, r4, #0x1
lsl r0, r0, #0x10
lsr r4, r0, #0x10
@@ -106253,14 +106253,14 @@ _02079012:
bl FUN_02078F7C
mov r1, #0x80
add r7, r0, #0x0
- blx DC_FlushRange
+ bl DC_FlushRange
ldr r1, _02079078 ; =0x020F9D40
lsl r2, r5, #0x2
ldr r1, [r1, r2]
add r0, r7, #0x0
lsl r1, r1, #0x5
mov r2, #0x80
- blx GXS_LoadOBJ
+ bl GXS_LoadOBJ
add r0, r5, #0x1
lsl r0, r0, #0x10
lsr r5, r0, #0x10
@@ -106854,7 +106854,7 @@ _02079470:
mov r1, #0x0
mov r2, #0x7
str r3, [sp, #0x0]
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
mov r0, #0xd3
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -107543,7 +107543,7 @@ FUN_02079A0C: ; 0x02079A0C
push {r4, lr}
add r4, r0, #0x0
mul r0, r2
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x18
lsr r0, r0, #0x18
bne _02079A22
@@ -107566,7 +107566,7 @@ FUN_02079A24: ; 0x02079A24
pop {r4, pc}
_02079A36:
mov r1, #0x5
- blx _u32_div_f
+ bl _u32_div_f
cmp r4, r0
bls _02079A44
mov r0, #0x2
@@ -107767,7 +107767,7 @@ FUN_02079B60: ; 0x02079B60
_02079B9A:
add r0, r7, #0x0
add r1, sp, #0x10
- blx FUN_020B0088
+ bl FUN_020B0088
cmp r4, #0x0
bne _02079BAE
ldr r0, [sp, #0x10]
@@ -107789,7 +107789,7 @@ _02079BAE:
_02079BC6:
add r0, r7, #0x0
add r1, sp, #0xc
- blx FUN_020B0180
+ bl FUN_020B0180
cmp r4, #0x0
bne _02079BDA
ldr r0, [sp, #0xc]
@@ -107825,7 +107825,7 @@ _02079BF8:
_02079C10:
add r0, r7, #0x0
add r1, sp, #0x8
- blx FUN_020B0138
+ bl FUN_020B0138
cmp r4, #0x0
bne _02079C24
ldr r0, [sp, #0x8]
@@ -107866,7 +107866,7 @@ FUN_02079C40: ; 0x02079C40
bl FUN_02006774
add r0, r4, #0x0
add r1, r7, #0x0
- blx FUN_020B0180
+ bl FUN_020B0180
add r0, r4, #0x0
pop {r3-r7, pc}
@@ -107924,7 +107924,7 @@ FUN_02079C7C: ; 0x02079C7C
ldr r2, _02079DAC ; =0x0000069C
mov r1, #0x0
add r5, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r4, #0x0
bl FUN_0200628C
mov r1, #0x93
@@ -108459,7 +108459,7 @@ FUN_0207A188: ; 0x0207A188
mov r1, #0x1
mov r2, #0x1e
mov r3, #0x17
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
pop {r3, pc}
.balign 4
_0207A19C: .word 0x04000050
@@ -110574,7 +110574,7 @@ _0207B256:
bl LoadFromNarc_2
add r1, sp, #0xc
add r4, r0, #0x0
- blx FUN_020B0180
+ bl FUN_020B0180
mov r3, #0x0
str r3, [sp, #0x0]
mov r0, #0x20
@@ -111980,7 +111980,7 @@ FUN_0207BD84: ; 0x0207BD84
bl FUN_0206AB18
bl FUN_02083114
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x18
asr r6, r0, #0x18
mov r4, #0x0
@@ -113920,7 +113920,7 @@ _0207CD3E:
mov r1, #0xa
ldrb r0, [r4, r0]
add r0, r0, #0x1
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0207CE44 ; =0x00000693
strb r1, [r4, r0]
b _0207CDE8
@@ -114375,7 +114375,7 @@ FUN_0207D0C8: ; 0x0207D0C8
lsl r0, r1, #0x10
mov r1, #0x4b
lsl r1, r1, #0x2
- blx _u32_div_f
+ bl _u32_div_f
lsr r0, r0, #0x10
lsl r0, r0, #0x10
asr r0, r0, #0x10
@@ -114390,7 +114390,7 @@ _0207D0EE:
lsl r0, r1, #0x10
mov r1, #0x4b
lsl r1, r1, #0x2
- blx _u32_div_f
+ bl _u32_div_f
lsr r0, r0, #0x10
lsl r0, r0, #0x10
asr r0, r0, #0x10
@@ -118028,9 +118028,9 @@ _0207EF68: .word 0x0001020F
FUN_0207EF6C: ; 0x0207EF6C
push {r3-r4, lr}
sub sp, #0x4
- blx FUN_020BB7F4
- blx G3X_Init
- blx G3X_InitMtxStack
+ bl FUN_020BB7F4
+ bl G3X_Init
+ bl G3X_InitMtxStack
ldr r0, _0207EFEC ; =0x04000060
ldr r1, _0207EFF0 ; =0xFFFFCFFD
ldrh r2, [r0, #0x0]
@@ -118060,13 +118060,13 @@ FUN_0207EF6C: ; 0x0207EF6C
add r1, r0, #0x0
add r2, r0, #0x0
add r3, r0, #0x0
- blx G3X_SetFog
+ bl G3X_SetFog
mov r0, #0x0
ldr r2, _0207EFF8 ; =0x00007FFF
add r1, r0, #0x0
mov r3, #0x3f
str r0, [sp, #0x0]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _0207EFFC ; =0x04000540
mov r0, #0x0
str r0, [r1, #0x0]
@@ -118112,16 +118112,16 @@ FUN_0207F008: ; 0x0207F008
mov r0, #0x2
str r0, [r2, #0x0]
str r3, [r1, #0x0]
- blx FUN_020B849C
+ bl FUN_020B849C
mov r0, #0xb7
lsl r0, r0, #0x2
add r0, r4, r0
bl FUN_0207F108
- blx FUN_020B849C
+ bl FUN_020B849C
add r0, r4, #0x0
bl FUN_0207F1A4
_0207F046:
- blx FUN_020B02C8
+ bl FUN_020B02C8
mov r0, #0xae
lsl r0, r0, #0x2
ldr r0, [r4, r0]
@@ -118682,43 +118682,43 @@ FUN_0207F48C: ; 0x0207F48C
add r6, r2, #0x0
sub r7, r1, r0
add r0, r7, #0x0
- blx _fflt
+ bl _fflt
ldr r1, _0207F600 ; =0x45800000
- blx _fdiv
+ bl _fdiv
ldr r1, _0207F604 ; =0x40800000
- blx _fdiv
+ bl _fdiv
mov r1, #0x0
- blx _fgr
+ bl _fgr
bls _0207F4E0
add r0, r7, #0x0
- blx _fflt
+ bl _fflt
ldr r1, _0207F600 ; =0x45800000
- blx _fdiv
+ bl _fdiv
ldr r1, _0207F604 ; =0x40800000
- blx _fdiv
+ bl _fdiv
add r1, r0, #0x0
ldr r0, _0207F600 ; =0x45800000
- blx _fmul
+ bl _fmul
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
- blx _ffix
+ bl _fadd
+ bl _ffix
b _0207F506
_0207F4E0:
add r0, r7, #0x0
- blx _fflt
+ bl _fflt
ldr r1, _0207F600 ; =0x45800000
- blx _fdiv
+ bl _fdiv
ldr r1, _0207F604 ; =0x40800000
- blx _fdiv
+ bl _fdiv
add r1, r0, #0x0
ldr r0, _0207F600 ; =0x45800000
- blx _fmul
+ bl _fmul
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
- blx _ffix
+ bl _fsub
+ bl _ffix
_0207F506:
lsl r0, r0, #0x10
asr r0, r0, #0x10
@@ -118728,43 +118728,43 @@ _0207F506:
ldrsh r0, [r5, r0]
sub r7, r1, r0
add r0, r7, #0x0
- blx _fflt
+ bl _fflt
ldr r1, _0207F600 ; =0x45800000
- blx _fdiv
+ bl _fdiv
ldr r1, _0207F604 ; =0x40800000
- blx _fdiv
+ bl _fdiv
mov r1, #0x0
- blx _fgr
+ bl _fgr
bls _0207F558
add r0, r7, #0x0
- blx _fflt
+ bl _fflt
ldr r1, _0207F600 ; =0x45800000
- blx _fdiv
+ bl _fdiv
ldr r1, _0207F604 ; =0x40800000
- blx _fdiv
+ bl _fdiv
add r1, r0, #0x0
ldr r0, _0207F600 ; =0x45800000
- blx _fmul
+ bl _fmul
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
- blx _ffix
+ bl _fadd
+ bl _ffix
b _0207F57E
_0207F558:
add r0, r7, #0x0
- blx _fflt
+ bl _fflt
ldr r1, _0207F600 ; =0x45800000
- blx _fdiv
+ bl _fdiv
ldr r1, _0207F604 ; =0x40800000
- blx _fdiv
+ bl _fdiv
add r1, r0, #0x0
ldr r0, _0207F600 ; =0x45800000
- blx _fmul
+ bl _fmul
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
- blx _ffix
+ bl _fsub
+ bl _ffix
_0207F57E:
lsl r0, r0, #0x10
asr r0, r0, #0x10
@@ -118774,43 +118774,43 @@ _0207F57E:
ldrsh r0, [r5, r0]
sub r4, r1, r0
add r0, r4, #0x0
- blx _fflt
+ bl _fflt
ldr r1, _0207F600 ; =0x45800000
- blx _fdiv
+ bl _fdiv
ldr r1, _0207F604 ; =0x40800000
- blx _fdiv
+ bl _fdiv
mov r1, #0x0
- blx _fgr
+ bl _fgr
bls _0207F5D0
add r0, r4, #0x0
- blx _fflt
+ bl _fflt
ldr r1, _0207F600 ; =0x45800000
- blx _fdiv
+ bl _fdiv
ldr r1, _0207F604 ; =0x40800000
- blx _fdiv
+ bl _fdiv
add r1, r0, #0x0
ldr r0, _0207F600 ; =0x45800000
- blx _fmul
+ bl _fmul
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
- blx _ffix
+ bl _fadd
+ bl _ffix
b _0207F5F6
_0207F5D0:
add r0, r4, #0x0
- blx _fflt
+ bl _fflt
ldr r1, _0207F600 ; =0x45800000
- blx _fdiv
+ bl _fdiv
ldr r1, _0207F604 ; =0x40800000
- blx _fdiv
+ bl _fdiv
add r1, r0, #0x0
ldr r0, _0207F600 ; =0x45800000
- blx _fmul
+ bl _fmul
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
- blx _ffix
+ bl _fsub
+ bl _ffix
_0207F5F6:
lsl r0, r0, #0x10
asr r0, r0, #0x10
@@ -120608,7 +120608,7 @@ FUN_0208048C: ; 0x0208048C
add r2, r1, #0x0
bl FUN_020671BC
mov r1, #0x6
- blx _u32_div_f
+ bl _u32_div_f
cmp r1, #0x5
bhi _02080510
add r0, r1, r1
@@ -120819,7 +120819,7 @@ _0208064C:
add r0, r7, #0x0
_02080654:
mov r1, #0x5
- blx _s32_div_f
+ bl _s32_div_f
mov r2, #0xa
add r6, r5, #0x0
mul r6, r2
@@ -121550,7 +121550,7 @@ FUN_02080C38: ; 0x02080C38
mov r1, #0x0
mov r2, #0x8
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r1, _02080C5C ; =FUN_02080C60
add r0, r5, #0x0
add r2, r4, #0x0
@@ -121774,7 +121774,7 @@ FUN_02080E0C: ; 0x02080E0C
mov r1, #0x0
mov r2, #0x8
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _02080E50 ; =0x00000121
str r6, [r4, #0x0]
ldrb r0, [r6, r0]
@@ -122275,7 +122275,7 @@ FUN_020811D8: ; 0x020811D8
ldr r2, _02081204 ; =0x000019C4
mov r1, #0x0
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _02081208 ; =0x00000123
mov r1, #0x0
strb r1, [r4, r0]
@@ -122790,7 +122790,7 @@ FUN_020815D0: ; 0x020815D0
mov r1, #0x0
mov r2, #0x28
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _02081658 ; =0x00000123
ldrb r1, [r5, r0]
lsl r1, r1, #0x2
@@ -123406,7 +123406,7 @@ _02081A8A:
ldr r1, _02081D30 ; =0x00000585
ldr r0, [r4, r0]
add r1, r4, r1
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0xc
bl FUN_02031588
ldr r0, _02081D2C ; =0x00000584
@@ -124765,7 +124765,7 @@ _02082456:
mov r1, #0x0
mov r2, #0x10
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r6, #0x0
bl FUN_020832E4
strb r0, [r4, #0xc]
@@ -125393,7 +125393,7 @@ _0208292A:
mov r1, #0x0
bl LoadFromNARC_7
mov r1, #0x30
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x24]
ldr r1, [sp, #0x24]
add r0, r5, #0x0
@@ -125553,7 +125553,7 @@ _02082A5A:
ldr r0, [sp, #0x4]
bl FUN_02082878
ldr r1, [sp, #0x10]
- blx _s32_div_f
+ bl _s32_div_f
mov r3, #0x0
cmp r6, #0x0
ble _02082AA2
@@ -125597,7 +125597,7 @@ _02082AB0:
ldr r0, [sp, #0x4]
bl FUN_02082878
add r1, r6, #0x0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x10
lsr r2, r0, #0x10
ldrb r3, [r5, r2]
@@ -125658,7 +125658,7 @@ _02082B16:
ldr r0, [sp, #0x4]
bl FUN_02082878
ldr r1, [sp, #0x8]
- blx _s32_div_f
+ bl _s32_div_f
add r0, r4, r1
lsl r0, r0, #0x10
lsr r2, r0, #0x10
@@ -126341,7 +126341,7 @@ _02083058:
ldr r0, [sp, #0x4]
bl FUN_02082878
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r1, #0x10
lsr r1, r0, #0x10
ldr r0, [sp, #0x10]
@@ -126929,7 +126929,7 @@ FUN_02083454: ; 0x02083454
_02083464:
bl FUN_0201B9EC
mov r1, #0xc
- blx _s32_div_f
+ bl _s32_div_f
add sp, #0xc
add r0, r1, #0x0
pop {r4-r5, pc}
@@ -126937,7 +126937,7 @@ _02083474:
add r0, sp, #0x0
add r1, r4, #0x0
mov r2, #0xc
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r1, #0x2
add r0, sp, #0x0
strb r1, [r0, #0x0]
@@ -126974,7 +126974,7 @@ _020834A6:
_020834BE:
bl FUN_0201B9EC
add r1, r4, #0x0
- blx _s32_div_f
+ bl _s32_div_f
add r0, sp, #0x0
ldrb r0, [r0, r1]
add sp, #0xc
@@ -127090,7 +127090,7 @@ _02083578:
add r1, r2, r1
ldr r0, [sp, #0x0]
add r2, r6, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x1
strb r0, [r7, r5]
pop {r3-r7, pc}
@@ -127125,7 +127125,7 @@ FUN_020835B0: ; 0x020835B0
lsl r1, r6, #0x8
add r1, r2, r1
add r2, r5, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r2, _02083628 ; =0x00000584
ldrb r0, [r4, r2]
add r0, r0, #0x1
@@ -127247,7 +127247,7 @@ FUN_02083694: ; 0x02083694
add r0, r5, #0x0
lsl r1, r1, #0x2
ldr r1, [r4, r1]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _020836B8 ; =0x00000584
ldrb r1, [r4, r0]
add r1, r1, #0x1
@@ -127270,7 +127270,7 @@ FUN_020836BC: ; 0x020836BC
add r0, r7, #0x0
add r1, r5, #0x0
add r2, r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x1b
add r1, r5, #0x0
add r2, r4, #0x1
@@ -127304,7 +127304,7 @@ _02083710:
ldr r1, [r4, #0x0]
add r0, r0, r5
add r2, r6, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r7, r7, #0x1
add r4, r4, #0x4
add r5, r5, r6
@@ -127341,7 +127341,7 @@ _02083758:
ldr r0, [r5, #0x0]
add r1, r1, r4
add r2, r6, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r7, r7, #0x1
add r4, r4, r6
add r5, r5, #0x4
@@ -127376,7 +127376,7 @@ FUN_0208378C: ; 0x0208378C
add r5, #0x10
mul r3, r2
add r1, r5, r3
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _020837B0 ; =0x00000584
ldrb r1, [r4, r0]
add r1, r1, #0x1
@@ -127397,7 +127397,7 @@ FUN_020837B4: ; 0x020837B4
add r0, r6, #0x0
add r1, r4, #0x0
mov r2, #0x30
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0x0
add r0, #0x30
strb r5, [r0, #0x0]
@@ -127432,7 +127432,7 @@ _02083802:
add r0, r6, r0
add r1, r5, #0x0
add r2, r7, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r4, r4, #0x1
add r5, #0x8
cmp r4, #0x3
@@ -127467,7 +127467,7 @@ _02083848:
add r0, r5, #0x0
add r1, r6, r1
add r2, r7, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r4, r4, #0x1
add r5, #0x8
cmp r4, #0x3
@@ -127532,7 +127532,7 @@ FUN_020838B4: ; 0x020838B4
add r0, sp, #0x0
add r1, r4, #0x4
mov r2, #0x10
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
strb r5, [r4, #0x0]
mov r0, #0x10
strb r0, [r4, #0x1]
@@ -127569,7 +127569,7 @@ FUN_02083904: ; 0x02083904
add r1, r4, r1
add r1, #0xf8
ldr r1, [r1, #0x0]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _0208392C ; =0x00000584
ldrb r1, [r4, r0]
add r1, r1, #0x1
@@ -127592,7 +127592,7 @@ FUN_02083930: ; 0x02083930
add r0, r7, #0x0
add r1, r5, #0x0
add r2, r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x20
add r1, r5, #0x0
add r2, r4, #0x1
@@ -127635,7 +127635,7 @@ _02083992:
ldr r1, [r1, #0x0]
add r0, r0, r5
add r2, r6, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r7, r7, #0x1
add r4, r4, #0x4
add r5, r5, r6
@@ -127678,7 +127678,7 @@ _020839E8:
ldr r0, [r5, #0x0]
add r1, r1, r4
add r2, r6, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r7, r7, #0x1
add r4, r4, r6
add r5, r5, #0x4
@@ -127708,7 +127708,7 @@ FUN_02083A1C: ; 0x02083A1C
add r0, r2, #0x0
add r1, r3, r1
add r2, r4, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
pop {r4, pc}
nop
_02083A30: .word 0x000019A0
@@ -127796,7 +127796,7 @@ FUN_02083AA8: ; 0x02083AA8
mov r1, #0x57
lsl r1, r1, #0x2
ldr r1, [r3, r1]
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
ldr r0, _02083AD0 ; =0x00000584
ldrb r1, [r4, r0]
add r1, r1, #0x1
@@ -127820,7 +127820,7 @@ FUN_02083AD4: ; 0x02083AD4
add r0, r6, #0x0
add r1, r4, #0x0
add r2, r5, #0x0
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_02083AF4:
mov r0, #0x24
add r1, r4, #0x0
@@ -127879,7 +127879,7 @@ FUN_02083B48: ; 0x02083B48
add r0, r6, #0x0
add r1, r4, #0x0
mov r2, #0x6
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
mov r0, #0x25
add r1, r4, #0x0
mov r2, #0x7
@@ -127939,7 +127939,7 @@ FUN_02083BAC: ; 0x02083BAC
ldr r0, [r4, r0]
add r1, r6, #0x0
lsl r2, r2, #0x4
- blx memcpy
+ bl memcpy
ldr r0, [r4, #0x58]
add r0, r0, #0x1
str r0, [r4, #0x58]
@@ -128115,7 +128115,7 @@ FUN_02083CD8: ; 0x02083CD8
add r0, r6, #0x0
add r1, r3, r1
sub r2, r2, #0x4
- blx MIi_CpuCopyFast
+ bl MIi_CpuCopyFast
mov r0, #0x4
str r0, [r4, #0x54]
mov r0, #0x0
@@ -128205,14 +128205,14 @@ FUN_02083D5C: ; 0x02083D5C
mov r2, #0x19
add r0, r5, #0x0
lsl r2, r2, #0x4
- blx MIi_CpuCopyFast
+ bl MIi_CpuCopyFast
b _02083D9C
_02083D90:
add r2, r4, r2
add r1, r2, r1
add r0, r5, #0x0
sub r2, r3, #0x4
- blx MIi_CpuCopyFast
+ bl MIi_CpuCopyFast
_02083D9C:
mov r1, #0xb5
ldr r0, _02083DE8 ; =0x000043D0
@@ -128221,7 +128221,7 @@ _02083D9C:
ldr r1, [r4, r1]
add r0, r4, r0
lsl r2, r2, #0x6
- blx MIi_CpuCopyFast
+ bl MIi_CpuCopyFast
mov r0, #0xb2
lsl r0, r0, #0x2
add r0, r4, r0
@@ -128316,13 +128316,13 @@ FUN_02083E4C: ; 0x02083E4C
add r0, r4, #0x0
mov r1, #0x3
mov r2, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
ldr r1, _02083E8C ; =0x000043D0
mov r2, #0xe1
mov r0, #0x0
add r1, r4, r1
lsl r2, r2, #0x6
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
bl FUN_02031190
cmp r0, #0x0
bne _02083E8A
@@ -128381,14 +128381,14 @@ _02083ED0:
ldr r1, [r4, r1]
cmp r1, r0
bne _02083EFE
- bl FUN_021D917C
+ bl MOD53_021D917C
mov r1, #0xc6
lsl r1, r1, #0x2
ldr r1, [r4, r1]
cmp r1, r0
bne _02083EFE
bl FUN_0202CB8C
- blx MATH_CountPopulation
+ bl MATH_CountPopulation
mov r1, #0xc6
lsl r1, r1, #0x2
ldr r1, [r4, r1]
@@ -128437,7 +128437,7 @@ _02083F3C:
add r0, r4, #0x0
mov r1, #0x9
add r2, r6, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
add sp, #0x4
pop {r3-r6, pc}
_02083F5A:
@@ -128447,14 +128447,14 @@ _02083F5A:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x8
- bl FUN_021D8B64
+ bl MOD53_021D8B64
add sp, #0x4
pop {r3-r6, pc}
_02083F6E:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x15
- bl FUN_021D8B64
+ bl MOD53_021D8B64
_02083F78:
add sp, #0x4
pop {r3-r6, pc}
@@ -128474,7 +128474,7 @@ FUN_02083F88: ; 0x02083F88
add r4, r3, #0x0
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_021D8B64
+ bl MOD53_021D8B64
bl FUN_02031190
cmp r0, #0x0
bne _02083FB6
@@ -128514,7 +128514,7 @@ FUN_02083FC4: ; 0x02083FC4
add r0, r4, #0x0
mov r1, #0xf
mov r2, #0x0
- bl FUN_021D8B64
+ bl MOD53_021D8B64
_02083FDA:
pop {r4, pc}
@@ -128577,7 +128577,7 @@ FUN_0208402C: ; 0x0208402C
add r0, r1, r0
ldr r1, _02084078 ; =0x00007C10
add r1, r5, r1
- blx MIi_CpuCopyFast
+ bl MIi_CpuCopyFast
ldr r0, _02084078 ; =0x00007C10
mov r2, #0x0
add r1, r2, #0x0
@@ -128674,12 +128674,12 @@ FUN_020840CC: ; 0x020840CC
add r0, r4, #0x0
bl FUN_02084270
add r0, r4, #0x0
- bl FUN_021D844C
+ bl MOD54_021D844C
lsl r2, r5, #0x18
add r0, r4, #0x0
mov r1, #0x19
lsr r2, r2, #0x18
- bl FUN_021D88E4
+ bl MOD54_021D88E4
mov r0, #0x1
add r1, r0, #0x0
bl FUN_020334E8
@@ -128693,12 +128693,12 @@ _02084110: .word 0x00000658
thumb_func_start FUN_02084114
FUN_02084114: ; 0x02084114
add r0, r3, #0x0
- ldr r3, _02084120 ; =FUN_021D88E4
+ ldr r3, _02084120 ; =MOD54_021D88E4
mov r1, #0x2
mov r2, #0x0
bx r3
nop
-_02084120: .word FUN_021D88E4 + 1
+_02084120: .word MOD54_021D88E4
thumb_func_start FUN_02084124
FUN_02084124: ; 0x02084124
@@ -128736,13 +128736,13 @@ _0208415E:
ldr r1, [r4, r1]
cmp r1, r0
bne _02084186
- bl FUN_021D8C24
+ bl MOD54_021D8C24
ldr r1, _02084208 ; =0x00004A48
ldr r1, [r4, r1]
cmp r1, r0
bne _02084186
bl FUN_0202CB8C
- blx MATH_CountPopulation
+ bl MATH_CountPopulation
ldr r1, _02084208 ; =0x00004A48
ldr r2, [r4, r1]
cmp r2, r0
@@ -128792,7 +128792,7 @@ _020841C8:
add r0, r4, #0x0
mov r1, #0x8
add r2, r6, #0x0
- bl FUN_021D88E4
+ bl MOD54_021D88E4
add sp, #0x4
pop {r3-r6, pc}
_020841E6:
@@ -128802,14 +128802,14 @@ _020841E6:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x7
- bl FUN_021D88E4
+ bl MOD54_021D88E4
add sp, #0x4
pop {r3-r6, pc}
_020841FA:
ldrb r2, [r5, #0x0]
add r0, r4, #0x0
mov r1, #0x13
- bl FUN_021D88E4
+ bl MOD54_021D88E4
_02084204:
add sp, #0x4
pop {r3-r6, pc}
@@ -128824,7 +128824,7 @@ FUN_02084210: ; 0x02084210
add r4, r3, #0x0
add r0, r4, #0x0
mov r1, #0x1
- bl FUN_021D89CC
+ bl MOD54_021D89CC
bl FUN_02031190
cmp r0, #0x0
bne _0208422E
@@ -128855,7 +128855,7 @@ FUN_02084238: ; 0x02084238
add r0, r4, #0x0
mov r1, #0xd
mov r2, #0x0
- bl FUN_021D88E4
+ bl MOD54_021D88E4
_0208424E:
pop {r4, pc}
@@ -130682,7 +130682,7 @@ _020850BE:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x18]
_020850EC:
add r0, r5, #0x0
@@ -131327,7 +131327,7 @@ FUN_020854E0: ; 0x020854E0
mov r1, #0x0
mov r2, #0x1c
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #0x0]
strb r0, [r4, #0xf]
ldr r0, [sp, #0x4]
@@ -131365,7 +131365,7 @@ FUN_02085538: ; 0x02085538
mov r1, #0x0
mov r2, #0x1c
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
strh r0, [r4, #0x0]
str r5, [r4, #0x8]
@@ -131395,7 +131395,7 @@ FUN_02085578: ; 0x02085578
mov r1, #0x0
mov r2, #0x1c
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
strh r0, [r4, #0x0]
str r5, [r4, #0x10]
@@ -131422,7 +131422,7 @@ FUN_020855B0: ; 0x020855B0
mov r1, #0x0
mov r2, #0x1c
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
strh r0, [r4, #0x0]
add r0, r7, #0x0
@@ -131582,7 +131582,7 @@ FUN_020856F0: ; 0x020856F0
mov r1, #0x0
mov r2, #0x34
add r6, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x0
strh r0, [r6, #0x0]
add r0, r4, #0x0
@@ -131720,7 +131720,7 @@ FUN_020857F8: ; 0x020857F8
mov r1, #0x0
mov r2, #0x1c
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r1, #0x28
str r1, [r4, #0x0]
ldr r0, [r5, #0x14]
@@ -131946,7 +131946,7 @@ FUN_020859C0: ; 0x020859C0
ldr r2, _02085BA0 ; =0x0000042C
mov r1, #0x0
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
bl FUN_0222E2BC
mov r1, #0x23
lsl r1, r1, #0x4
@@ -132164,7 +132164,7 @@ _02085BCA:
str r0, [r5, #0x0]
b _02085C02
_02085BD8:
- bl FUN_0222F990
+ bl MOD12_0222F990
cmp r0, #0x0
bne _02085BE6
mov r0, #0x2
@@ -132323,7 +132323,7 @@ FUN_02085C08: ; 0x02085C08
mov r0, #0x35
bl FUN_020168D0
ldr r0, _02085D68 ; =0x00000008
- bl FUN_02005F60
+ bl UnloadOverlayByID
mov r0, #0x1
pop {r3-r5, pc}
nop
@@ -132596,7 +132596,7 @@ _02085F5E:
mov r1, #0x0
mov r2, #0x30
str r0, [r4, #0x8]
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
bl LoadPlayerDataAddress
ldr r1, [r4, #0x8]
@@ -132609,7 +132609,7 @@ _02085F5E:
mov r1, #0x0
mov r2, #0x40
str r0, [r4, #0xc]
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
ldr r1, _02085FA8 ; =FUN_02085DA4
add r0, r6, #0x0
add r2, r4, #0x0
@@ -132752,7 +132752,7 @@ FUN_02086084: ; 0x02086084
mov r1, #0x0
mov r2, #0x80
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
add r0, r5, #0x0
bl FUN_0200628C
str r0, [r4, #0x0]
@@ -132974,7 +132974,7 @@ _020862A0: ; jump table (using 16-bit offset)
_020862AE:
ldr r0, [r4, #0xc]
mov r1, #0xb
- bl FUN_021ED940
+ bl MOD05_021ED940
add r0, r5, #0x0
bl FUN_0204AF3C
ldr r0, [r4, #0x0]
@@ -133167,14 +133167,14 @@ FUN_0208643C: ; 0x0208643C
mov r1, #0x0
mov r2, #0xe
mov r3, #0xb
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
mov r0, #0x8
str r0, [sp, #0x0]
ldr r0, _02086464 ; =0x04001050
mov r1, #0x0
mov r2, #0xe
mov r3, #0x7
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
pop {r3, pc}
.balign 4
_02086460: .word 0x04000050
@@ -133239,13 +133239,13 @@ FUN_02086488: ; 0x02086488
add r1, r0, #0x0
add r2, r0, #0x0
add r3, r0, #0x0
- blx G3X_SetFog
+ bl G3X_SetFog
mov r0, #0x0
ldr r2, _02086500 ; =0x00007FFF
add r1, r0, #0x0
mov r3, #0x3f
str r0, [sp, #0x0]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _02086504 ; =0xBFFF0000
ldr r0, _02086508 ; =0x04000580
str r1, [r0, #0x0]
@@ -133311,25 +133311,25 @@ _0208655C:
mov r0, #0x0
lsl r1, r1, #0x18
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x62
mov r2, #0x2
mov r0, #0x0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x19
mov r2, #0x1
mov r0, #0x0
lsl r1, r1, #0x16
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x66
mov r2, #0x2
mov r0, #0x0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r5, _02086654 ; =0x020FCE24
add r3, sp, #0x1c
add r2, r3, #0x0
@@ -133444,7 +133444,7 @@ FUN_02086698: ; 0x02086698
cmp r0, #0x0
ble _020866AE
bl FUN_020222AC
- blx FUN_020B02C8
+ bl FUN_020B02C8
_020866AE:
bl FUN_02013388
mov r0, #0x1
@@ -134325,7 +134325,7 @@ _02086DB4:
bl FUN_0200C82C
mov r0, #0x0
add r1, r7, #0x0
- blx _feq
+ bl _feq
beq _02086DD2
ldr r0, [r6, #0x6c]
ldr r2, [sp, #0x0]
@@ -136295,7 +136295,7 @@ FUN_02087D00: ; 0x02087D00
mov r1, #0x0
lsl r2, r2, #0x2
add r7, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
bl FUN_02028048
str r0, [r7, #0x8]
@@ -136454,7 +136454,7 @@ FUN_02087E40: ; 0x02087E40
mov r1, #0x0
mov r2, #0x18
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x2c
str r0, [r4, #0x0]
str r5, [r4, #0xc]
@@ -136620,7 +136620,7 @@ _02087F86:
mov r1, #0x0
mov r2, #0x40
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0xc]
mov r1, #0x0
ldr r0, [r0, #0x10]
@@ -136761,7 +136761,7 @@ FUN_020880A0: ; 0x020880A0
mov r1, #0x0
mov r2, #0xc
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r1, [r5, #0xc]
ldrb r0, [r1, #0x1]
lsl r0, r0, #0x3
@@ -136992,22 +136992,22 @@ _0208826A:
cmp r0, #0x5
beq _020882B8
ldrb r0, [r4, r0]
- blx _ffltu
+ bl _ffltu
add r1, r0, #0x0
ldr r0, _02088318 ; =0x3F8CCCCD
- blx _fmul
- blx _ffixu
+ bl _fmul
+ bl _ffixu
ldr r1, [sp, #0x4]
strb r0, [r4, r1]
add r4, sp, #0x8
ldr r0, [sp, #0x0]
add r4, #0x1
ldrb r0, [r4, r0]
- blx _ffltu
+ bl _ffltu
add r1, r0, #0x0
ldr r0, _0208831C ; =0x3F666666
- blx _fmul
- blx _ffixu
+ bl _fmul
+ bl _ffixu
ldr r1, [sp, #0x0]
strb r0, [r4, r1]
_020882B8:
@@ -137075,7 +137075,7 @@ FUN_02088320: ; 0x02088320
mov r1, #0x0
lsl r2, r2, #0x2
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r6, [r4, #0x0]
cmp r5, #0x10
bls _0208834A
@@ -137104,7 +137104,7 @@ FUN_02088360: ; 0x02088360
add r0, r4, #0x0
mov r1, #0x0
lsl r2, r2, #0x2
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0x0
bl FUN_02016A18
pop {r4, pc}
@@ -137199,7 +137199,7 @@ _02088402:
ldr r0, [r0, r2]
mov r1, #0x0
mov r2, #0x4
- blx MI_CpuFill8
+ bl MI_CpuFill8
add sp, #0xc
pop {r4-r7, pc}
.balign 4
@@ -137272,7 +137272,7 @@ _020884B4:
str r0, [sp, #0x38]
mov r1, #0x0
mov r2, #0x8
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r1, [sp, #0x3c]
ldr r0, [sp, #0x38]
strh r1, [r0, #0x0]
@@ -137365,59 +137365,59 @@ _020884D8:
str r0, [sp, #0x44]
beq _02088596
lsl r0, r7, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _020885A4
_02088596:
lsl r0, r7, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_020885A4:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x48]
ldr r0, [sp, #0x30]
cmp r0, #0x0
beq _020885C2
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _020885D0
_020885C2:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_020885D0:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x4c]
add r0, sp, #0x78
ldrh r0, [r0, #0x10]
cmp r0, #0x0
beq _020885F0
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
add r1, r0, #0x0
mov r0, #0x3f
lsl r0, r0, #0x18
- blx _fadd
+ bl _fadd
b _020885FE
_020885F0:
lsl r0, r0, #0xc
- blx _fflt
+ bl _fflt
mov r1, #0x3f
lsl r1, r1, #0x18
- blx _fsub
+ bl _fsub
_020885FE:
- blx _ffix
+ bl _ffix
str r0, [sp, #0x50]
cmp r6, #0x2
bne _02088612
@@ -137757,41 +137757,41 @@ FUN_02088854: ; 0x02088854
thumb_func_start FUN_02088858
FUN_02088858: ; 0x02088858
- ldr r3, _02088860 ; =FUN_02005FDC
- ldr r0, _02088864 ; =0x00000004
+ ldr r3, _02088860 ; =HandleLoadOverlay
+ ldr r0, _02088864 ; =SDK_OVERLAY_MODULE_04_ID
mov r1, #0x2
bx r3
.balign 4
-_02088860: .word FUN_02005FDC
-_02088864: .word 0x00000004
+_02088860: .word HandleLoadOverlay
+_02088864: .word SDK_OVERLAY_MODULE_04_ID
thumb_func_start FUN_02088868
FUN_02088868: ; 0x02088868
- ldr r3, _02088870 ; =FUN_02005F60
- ldr r0, _02088874 ; =0x00000004
+ ldr r3, _02088870 ; =UnloadOverlayByID
+ ldr r0, _02088874 ; =SDK_OVERLAY_MODULE_04_ID
bx r3
nop
-_02088870: .word FUN_02005F60
-_02088874: .word 0x00000004
+_02088870: .word UnloadOverlayByID
+_02088874: .word SDK_OVERLAY_MODULE_04_ID
thumb_func_start FUN_02088878
FUN_02088878: ; 0x02088878
- ldr r3, _02088880 ; =FUN_02005FDC
- ldr r0, _02088884 ; =0x0000000D
+ ldr r3, _02088880 ; =HandleLoadOverlay
+ ldr r0, _02088884 ; =SDK_OVERLAY_MODULE_13_ID
mov r1, #0x2
bx r3
.balign 4
-_02088880: .word FUN_02005FDC
-_02088884: .word 0x0000000D
+_02088880: .word HandleLoadOverlay
+_02088884: .word SDK_OVERLAY_MODULE_13_ID
thumb_func_start FUN_02088888
FUN_02088888: ; 0x02088888
- ldr r3, _02088890 ; =FUN_02005F60
- ldr r0, _02088894 ; =0x0000000D
+ ldr r3, _02088890 ; =UnloadOverlayByID
+ ldr r0, _02088894 ; =SDK_OVERLAY_MODULE_13_ID
bx r3
nop
-_02088890: .word FUN_02005F60
-_02088894: .word 0x0000000D
+_02088890: .word UnloadOverlayByID
+_02088894: .word SDK_OVERLAY_MODULE_13_ID
thumb_func_start FUN_02088898
FUN_02088898: ; 0x02088898
@@ -137800,32 +137800,32 @@ FUN_02088898: ; 0x02088898
bl FUN_02088858
bl FUN_02088878
add r0, r4, #0x0
- bl FUN_02211E60
+ bl MOD07_02211E60
bl FUN_02088888
bl FUN_02088868
mov r0, #0x0
- blx OS_ResetSystem
+ bl OS_ResetSystem
pop {r4, pc}
.balign 4
thumb_func_start FUN_020888BC
FUN_020888BC: ; 0x020888BC
- ldr r3, _020888C4 ; =FUN_02005FDC
- ldr r0, _020888C8 ; =0x0000004F
+ ldr r3, _020888C4 ; =HandleLoadOverlay
+ ldr r0, _020888C8 ; =SDK_OVERLAY_MODULE_79_ID
mov r1, #0x2
bx r3
.balign 4
-_020888C4: .word FUN_02005FDC
-_020888C8: .word 0x0000004F
+_020888C4: .word HandleLoadOverlay
+_020888C8: .word SDK_OVERLAY_MODULE_79_ID
thumb_func_start FUN_020888CC
FUN_020888CC: ; 0x020888CC
- ldr r3, _020888D4 ; =FUN_02005F60
- ldr r0, _020888D8 ; =0x0000004F
+ ldr r3, _020888D4 ; =UnloadOverlayByID
+ ldr r0, _020888D8 ; =SDK_OVERLAY_MODULE_79_ID
bx r3
nop
-_020888D4: .word FUN_02005F60
-_020888D8: .word 0x0000004F
+_020888D4: .word UnloadOverlayByID
+_020888D8: .word SDK_OVERLAY_MODULE_79_ID
thumb_func_start FUN_020888DC
FUN_020888DC: ; 0x020888DC
@@ -137844,7 +137844,7 @@ FUN_020888DC: ; 0x020888DC
mov r0, #0x31
bl FUN_020168D0
mov r0, #0x0
- blx OS_ResetSystem
+ bl OS_ResetSystem
mov r0, #0x1
pop {r4, pc}
.balign 4
@@ -137861,7 +137861,7 @@ FUN_0208890C: ; 0x0208890C
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x20
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r5, [r4, #0xc]
add r0, r5, #0x0
bl FUN_02028048
@@ -137950,7 +137950,7 @@ FUN_020889B0: ; 0x020889B0
mov r1, #0x0
mov r2, #0x24
add r4, r0, #0x0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r0, #0x37
str r0, [r4, #0x0]
str r5, [r4, #0x10]
@@ -138050,7 +138050,7 @@ FUN_02088A78: ; 0x02088A78
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x24
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r5, #0x0
bl FUN_0200627C
add r0, r6, #0x0
@@ -138221,7 +138221,7 @@ _02088BBA:
add r2, r0, #0x0
ldr r1, [r4, #0x18]
add r0, r5, #0x0
- blx memcpy
+ bl memcpy
ldr r0, [r4, #0x18]
bl FUN_02016A18
mov r0, #0x0
@@ -139359,7 +139359,7 @@ FUN_020893F0: ; 0x020893F0
bhs _0208940A
add r0, r1, #0x0
ldr r1, _02089410 ; =0x021C5C58
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
ldr r0, _02089414 ; =0x02106154
str r4, [r0, #0x0]
pop {r4, pc}
@@ -139382,7 +139382,7 @@ FUN_02089418: ; 0x02089418
cmp r0, r3
bne _02089438
ldr r0, _02089440 ; =0x021C5C58
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
mov r0, #0x1
pop {r3, pc}
_02089434:
@@ -139404,7 +139404,7 @@ FUN_02089444: ; 0x02089444
bhs _0208945E
add r0, r1, #0x0
ldr r1, _02089464 ; =0x021C5C58
- blx MIi_CpuCopyFast
+ bl MIi_CpuCopyFast
ldr r0, _02089468 ; =0x02106154
str r4, [r0, #0x0]
pop {r4, pc}
@@ -139427,7 +139427,7 @@ FUN_0208946C: ; 0x0208946C
cmp r0, r3
bne _0208948C
ldr r0, _02089494 ; =0x021C5C58
- blx MIi_CpuCopyFast
+ bl MIi_CpuCopyFast
mov r0, #0x1
pop {r3, pc}
_02089488:
@@ -139455,7 +139455,7 @@ FUN_02089498: ; 0x02089498
mov r1, #0x0
mov r2, #0x38
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0x58
str r0, [r4, #0x0]
mov r0, #0x0
@@ -139604,7 +139604,7 @@ FUN_020895F0: ; 0x020895F0
add r0, r4, #0x0
bl FUN_020168D0
mov r0, #0x0
- blx OS_ResetSystem
+ bl OS_ResetSystem
mov r0, #0x1
pop {r3-r5, pc}
@@ -140031,7 +140031,7 @@ FUN_02089960: ; 0x02089960
mov r1, #0x0
mov r2, #0x3c
add r4, r0, #0x0
- blx Call_FillMemWithValue
+ bl Call_FillMemWithValue
mov r0, #0x58
str r0, [r4, #0x0]
mov r0, #0x0
@@ -140667,7 +140667,7 @@ _02089EE4:
bl FUN_02000FE8
add r0, r4, #0x0
add r1, r4, #0x0
- blx OS_WaitIrq
+ bl OS_WaitIrq
b _02089EE4
nop
_02089EF4: .word 0xFFFFE0FF
@@ -140828,7 +140828,7 @@ _0208A078:
bl FUN_02000FE8
add r0, r4, #0x0
add r1, r4, #0x0
- blx OS_WaitIrq
+ bl OS_WaitIrq
b _0208A078
nop
_0208A088: .word 0xFFFFE0FF
@@ -140997,7 +140997,7 @@ _0208A21A:
bl FUN_02000FE8
add r0, r4, #0x0
add r1, r4, #0x0
- blx OS_WaitIrq
+ bl OS_WaitIrq
b _0208A21A
.balign 4
_0208A228: .word 0xFFFFE0FF
@@ -141083,7 +141083,7 @@ FUN_0208A2C4: ; 0x0208A2C4
cmp r0, #0x0
beq _0208A2F6
mov r0, #0x1
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
ldr r1, _0208A2F8 ; =0x0223D4AD
add r0, r5, #0x0
add r2, r4, #0x0
@@ -141406,7 +141406,7 @@ _0208A566:
cmp r0, #0x0
beq _0208A5B0
mov r0, #0x0
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0x5
str r0, [r4, #0x54]
b _0208A6C8
@@ -141447,7 +141447,7 @@ _0208A5BE:
cmp r0, #0x0
beq _0208A6C8
mov r0, #0x1
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
mov r0, #0x8
str r0, [r4, #0x54]
b _0208A6C8
@@ -141956,15 +141956,15 @@ _0208A9C6:
mov r1, #0x1
str r1, [r0, #0x0]
mov r0, #0x0
- blx OS_GetInitArenaHi
+ bl OS_GetInitArenaHi
add r1, r0, #0x0
mov r0, #0x0
- blx OS_SetArenaHi
+ bl OS_SetArenaHi
mov r0, #0x0
- blx OS_GetInitArenaLo
+ bl OS_GetInitArenaLo
add r1, r0, #0x0
mov r0, #0x0
- blx OS_SetArenaLo
+ bl OS_SetArenaLo
mov r1, #0x1
ldr r0, _0208ABCC ; =0x020FF4A4
add r2, r1, #0x0
@@ -141977,12 +141977,12 @@ _0208A9C6:
mov r1, #0x0
bl FUN_0200E3A0
mov r0, #0x1
- blx OS_DisableIrqMask
+ bl OS_DisableIrqMask
ldr r1, _0208ABD0 ; =FUN_0208A998
mov r0, #0x1
- blx OS_SetIrqFunction
+ bl OS_SetIrqFunction
mov r0, #0x1
- blx OS_EnableIrqMask
+ bl OS_EnableIrqMask
mov r0, #0x0
add r1, r0, #0x0
bl FUN_02015F10
@@ -142122,7 +142122,7 @@ _0208AB58:
bne _0208AB72
add r0, r4, #0x0
add r1, r4, #0x0
- blx OS_WaitIrq
+ bl OS_WaitIrq
b _0208AB58
_0208AB72:
ldr r5, _0208AC04 ; =0x04000130
@@ -142143,7 +142143,7 @@ _0208AB7A:
bne _0208AB9C
mov r0, #0x1
add r1, r0, #0x0
- blx OS_WaitIrq
+ bl OS_WaitIrq
b _0208AB7A
_0208AB9C:
ldr r1, _0208AC10 ; =0x00007FFF
@@ -142159,7 +142159,7 @@ _0208AB9C:
ldr r0, [sp, #0x10]
bl FUN_02016A18
mov r0, #0x0
- blx OS_ResetSystem
+ bl OS_ResetSystem
_0208ABC4:
add sp, #0x24
pop {r4-r7, pc}
diff --git a/arm9/asm/unk_0208AC14.s b/arm9/asm/unk_0208AC14.s
index e2ac3396..3c9e95d4 100644
--- a/arm9/asm/unk_0208AC14.s
+++ b/arm9/asm/unk_0208AC14.s
@@ -1950,7 +1950,7 @@ _0208C778:
_0208C79C:
add r0, sp, #0x60
mov r3, r2
- blx MTX_Scale43_
+ bl MTX_Scale43_
add r0, sp, #0x30
add r1, sp, #0x60
add r2, sp, #0x0
@@ -2253,7 +2253,7 @@ _0208CBF4:
_0208CC18:
add r0, sp, #0x60
mov r3, r2
- blx MTX_Scale43_
+ bl MTX_Scale43_
add r0, sp, #0x60
add r1, sp, #0x30
add r2, sp, #0x0
@@ -2479,7 +2479,7 @@ _0208CF4C:
_0208CF70:
add r0, sp, #0x60
mov r3, r2
- blx MTX_Scale43_
+ bl MTX_Scale43_
add r0, sp, #0x30
add r1, sp, #0x60
add r2, sp, #0x0
@@ -2703,7 +2703,7 @@ _0208D29C:
_0208D2C0:
add r0, sp, #0x60
mov r3, r2
- blx MTX_Scale43_
+ bl MTX_Scale43_
add r0, sp, #0x60
add r1, sp, #0x30
add r2, sp, #0x0
@@ -6273,7 +6273,7 @@ _020907AC:
mov r2, r1, lsl #0x1
ldrsh r1, [r3, r12]
ldrsh r2, [r3, r2]
- blx MTX_RotX33_
+ bl MTX_RotX33_
b _02090838
_020907DC:
ldrh r1, [r0, #0x0]
@@ -6286,7 +6286,7 @@ _020907DC:
mov r2, r1, lsl #0x1
ldrsh r1, [r3, r12]
ldrsh r2, [r3, r2]
- blx MTX_RotY33_
+ bl MTX_RotY33_
b _02090838
_0209080C:
ldrh r1, [r0, #0x0]
@@ -6299,7 +6299,7 @@ _0209080C:
mov r2, r1, lsl #0x1
ldrsh r1, [r3, r12]
ldrsh r2, [r3, r2]
- blx MTX_RotZ33_
+ bl MTX_RotZ33_
_02090838:
add r0, r4, #0x8
add r1, sp, #0x0
diff --git a/arm9/asm/unk_020910EC.s b/arm9/asm/unk_020910EC.s
index e5d80405..88bd5a14 100644
--- a/arm9/asm/unk_020910EC.s
+++ b/arm9/asm/unk_020910EC.s
@@ -3,6 +3,8 @@
.text
+ ; Nintendo DWC
+
arm_func_start FUN_020910EC
FUN_020910EC: ; 0x020910EC
stmdb sp!, {r4-r5,lr}
@@ -4770,7 +4772,9 @@ _0209530C:
strb r7, [r0, #-0x4]
strb r6, [r0, #-0x3]
ldmia sp!, {r4-r9,pc}
-_02095324: ; 0x02095324
+
+ arm_func_start FUN_02095324
+FUN_02095324: ; 0x02095324
ldr r0, _0209532C ; =0x021C8C84
bx lr
.balign 4
@@ -4873,7 +4877,7 @@ _02095460:
cmp r0, #0x1
beq _02095488
mov r0, r4
- blx SVC_WaitByLoop
+ bl SVC_WaitByLoop
b _02095460
_02095488:
mov r0, #0x1
@@ -4939,7 +4943,7 @@ _0209552C:
ldmeqia sp!, {r4-r8,pc}
_02095548: ; 0x02095548
mov r0, r4
- blx SVC_WaitByLoop
+ bl SVC_WaitByLoop
b _0209552C
_02095554: ; 0x02095554
ldmia sp!, {r4-r8,pc}
@@ -4980,7 +4984,7 @@ _020955B0:
cmp r0, #0x1
beq _020955D8
mov r0, r7
- blx SVC_WaitByLoop
+ bl SVC_WaitByLoop
b _020955B0
_020955D8:
mov r0, r4
@@ -5337,7 +5341,7 @@ _02095A74:
b _0209574C
_02095A7C:
ldr r0, [sp, #0xbc]
- blx SVC_WaitByLoop
+ bl SVC_WaitByLoop
b _0209574C
_02095A88:
add sp, sp, #0xc4
@@ -6589,11 +6593,13 @@ _02096B08: .word 0x0000FFFF
_02096B0C: .word 0x020FF580
_02096B10: .word 0x020FF578
+ .extern _SDK_NintendoDWC
+
arm_func_start FUN_02096B14
FUN_02096B14: ; 0x02096B14
stmdb sp!, {r4-r6,lr}
mov r6, r0
- ldr r0, _02096B74 ; =0x02000B8C
+ ldr r0, _02096B74 ; =_SDK_NintendoDWC
mov r4, #0x0
bl OSi_ReferSymbol
mov r0, r6
@@ -6619,7 +6625,9 @@ _02096B64:
moveq r0, #0x0
ldmia sp!, {r4-r6,pc}
.balign 4
-_02096B74: .word 0x02000B8C
+_02096B74: .word _SDK_NintendoDWC
+
+ ; Nintendo Wifi (?)
arm_func_start FUN_02096B78
FUN_02096B78: ; 0x02096B78
@@ -7655,11 +7663,13 @@ _02097828: .word 0x021C8CC0
_0209782C: .word 0x021061F4
_02097830: .word 0x021C8CD0
+ .extern _SDK_NintendoWiFi
+
arm_func_start FUN_02097834
FUN_02097834: ; 0x02097834
stmdb sp!, {r4,lr}
mov r4, r0
- ldr r0, _02097870 ; =0x02000BC4
+ ldr r0, _02097870 ; =_SDK_NintendoWiFi
bl OSi_ReferSymbol
ldr r0, _02097874 ; =0x021C8CC0
ldr r1, [r0, #0x0]
@@ -7673,9 +7683,11 @@ FUN_02097834: ; 0x02097834
ldmia sp!, {r4,lr}
bx lr
.balign 4
-_02097870: .word 0x02000BC4
+_02097870: .word _SDK_NintendoWiFi
_02097874: .word 0x021C8CC0
+ ; Ubiquitous CPS (?)
+
arm_func_start FUN_02097878
FUN_02097878: ; 0x02097878
stmdb sp!, {r4-r9,lr}
@@ -17526,12 +17538,14 @@ _0209FD74:
_0209FD8C: .word 0x021C90A0
_0209FD90: .word 0x021C8EF8
+ .extern _SDK_UbiquitousCPS
+
arm_func_start FUN_0209FD94
FUN_0209FD94: ; 0x0209FD94
stmdb sp!, {r4-r6,lr}
sub sp, sp, #0x8
mov r4, r0
- ldr r0, _0209FFD4 ; =0x02000BEC
+ ldr r0, _0209FFD4 ; =_SDK_UbiquitousCPS
bl OSi_ReferSymbol
ldr r12, [r4, #0x14]
ldr r6, [r4, #0x18]
@@ -17677,7 +17691,7 @@ _0209FE60:
ldmia sp!, {r4-r6,lr}
bx lr
.balign 4
-_0209FFD4: .word 0x02000BEC
+_0209FFD4: .word _SDK_UbiquitousCPS
_0209FFD8: .word 0x021C8F24
_0209FFDC: .word 0x6C078965
_0209FFE0: .word 0x5D588B65
@@ -17709,6 +17723,8 @@ _020A0044: .word 0x021C90A0
_020A0048: .word FUN_0209BA80
_020A004C: .word 0x021C9EE0
+ ; Ubiquitous SSL (?)
+
arm_func_start FUN_020A0050
FUN_020A0050: ; 0x020A0050
mov r0, #0x1
@@ -17909,11 +17925,13 @@ _020A02E0: .word 0x021CA6FC
_020A02E4: .word 0x000003BD
_020A02E8: .word 0x021D3498
+ .extern _SDK_UbiquitousSSL
+
arm_func_start FUN_020A02EC
FUN_020A02EC:
stmdb sp!, {r4,lr}
mov r4, r0
- ldr r0, _020A0318 ; =0x02000C04
+ ldr r0, _020A0318 ; =_SDK_UbiquitousSSL
bl OSi_ReferSymbol
ldr r0, _020A031C ; =0x021D3498
ldr r0, [r0, #0x4]
@@ -17923,9 +17941,11 @@ FUN_020A02EC:
ldmia sp!, {r4,lr}
bx lr
.balign 4
-_020A0318: .word 0x02000C04
+_020A0318: .word _SDK_UbiquitousSSL
_020A031C: .word 0x021D3498
+ ; Abiosso libVCT (?)
+
arm_func_start FUN_020A0320
FUN_020A0320: ; 0x020A0320
stmdb sp!, {r4,lr}
@@ -29476,7 +29496,7 @@ _020AA144:
ldr r2, [r6, #0x0]
str r3, [r7, #0x8cc]
and r0, r0, #0xff
- bl FUN_021EAE90
+ bl MOD04_021EAE90
ldr r0, [r7, #0x8cc]
cmp r0, #0x0
bne _020AA1A0
@@ -32174,7 +32194,7 @@ FUN_020AC554:
_020AC57C:
ldrb r0, [r0, #0x4]
mov r2, #0x10
- bl FUN_021EB044
+ bl MOD04_021EB044
_020AC588: ; 0x020AC588
cmp r0, #0x0
addeq sp, sp, #0x4
@@ -32254,7 +32274,7 @@ _020AC654:
mov r1, r10
mov r2, r6
strb r8, [r10, #0x9]
- bl FUN_021EB044
+ bl MOD04_021EB044
_020AC68C: ; 0x020AC68C
cmp r0, #0x0
addne r9, r9, #0x1
@@ -33680,23 +33700,22 @@ FUN_020AD904: ; 0x020AD904
_020AD934: .word 0x021CCD20
_020AD938: .word 0x021CCD1C
+ .extern _SDK_AbiossolibVCT
+
arm_func_start FUN_020AD93C
FUN_020AD93C: ; 0x020AD93C
stmdb sp!, {r4,lr}
mov r4, r0
- ldr r0, _020ADA78 ; =0x02000C1C
+ ldr r0, _020ADA78 ; =_SDK_AbiossolibVCT
bl OSi_ReferSymbol
-_020AD94C: ; 0x020AD94C
cmp r4, #0x0
moveq r0, #0x0
ldmeqia sp!, {r4,pc}
-_020AD958: ; 0x020AD958
ldr r0, _020ADA7C ; =0x021CCD1C
ldr r0, [r0, #0x0]
cmp r0, #0x0
movne r0, #0x1
ldmneia sp!, {r4,pc}
-_020AD96C: ; 0x020AD96C
ldr r0, [r4, #0x8]
cmp r0, #0x1
beq _020AD98C
@@ -33710,7 +33729,6 @@ _020AD98C:
cmp r0, #0x0
moveq r0, #0x0
ldmeqia sp!, {r4,pc}
-_020AD99C: ; 0x020AD99C
ldr r2, [r4, #0x10]
cmp r2, #0x0
beq _020AD9B4
@@ -33726,7 +33744,6 @@ _020AD9BC:
adds r0, r1, r0, ror #0x1b
movne r0, #0x0
ldmneia sp!, {r4,pc}
-_020AD9D0: ; 0x020AD9D0
ldr r0, _020ADA80 ; =0x021CCD20
mov r1, #0x0
mov r2, #0x18
@@ -33743,47 +33760,41 @@ _020AD9D0: ; 0x020AD9D0
ldrb r2, [r4, #0xc]
cmp r2, #0x20
ldmcsia sp!, {r4,pc}
-_020ADA10: ; 0x020ADA10
strb r2, [r1, #0x0]
ldr r0, [r4, #0x10]
ldr r1, [r4, #0x14]
bl FUN_020ACE30
-_020ADA20: ; 0x020ADA20
cmp r0, #0x0
bne _020ADA34
bl FUN_020ACE10
-_020ADA2C: ; 0x020ADA2C
mov r0, #0x0
ldmia sp!, {r4,pc}
_020ADA34:
mov r0, r4
bl FUN_020AC97C
-_020ADA3C: ; 0x020ADA3C
cmp r0, #0x0
bne _020ADA50
bl FUN_020ACE10
-_020ADA48: ; 0x020ADA48
mov r0, #0x0
ldmia sp!, {r4,pc}
_020ADA50:
bl FUN_020AAF58
-_020ADA54: ; 0x020ADA54
cmp r0, #0x0
ldrne r1, _020ADA7C ; =0x021CCD1C
movne r0, #0x1
strne r0, [r1, #0x0]
ldmneia sp!, {r4,pc}
-_020ADA68: ; 0x020ADA68
bl FUN_020AC964
bl FUN_020ACE10
-_020ADA70: ; 0x020ADA70
mov r0, #0x0
ldmia sp!, {r4,pc}
.balign 4
-_020ADA78: .word 0x02000C1C
+_020ADA78: .word _SDK_AbiossolibVCT
_020ADA7C: .word 0x021CCD1C
_020ADA80: .word 0x021CCD20
+ ; unknown
+
arm_func_start FUN_020ADA84
FUN_020ADA84: ; 0x020ADA84
cmp r1, #0x0
diff --git a/arm9/asm/unk_020AF030.s b/arm9/asm/unk_020AF030.s
index ec33e3fa..a107adc3 100644
--- a/arm9/asm/unk_020AF030.s
+++ b/arm9/asm/unk_020AF030.s
@@ -1960,7 +1960,9 @@ _020B0824: ; 0x020B0824
cmp r2, r1
strcc r1, [r4, #0x0]
ldmia sp!, {r4,pc}
-_020B0830: ; 0x020B0830
+
+ arm_func_start FUN_020B0830
+FUN_020B0830: ; 0x020B0830
ldrh r3, [r0, #0x6]
ldrh r2, [r0, #0x8]
mov r12, #0x0
@@ -13214,7 +13216,7 @@ _020BA188:
str r1, [sp, #0x0]
ldrsh r1, [r5, #0x2]
str r1, [sp, #0x4]
- blx MI_Zero36B
+ bl MI_Zero36B
ldrh r0, [r4, #0x0]
add r1, r6, r11, lsl #0x2
add r5, r5, #0x4
@@ -17207,7 +17209,7 @@ FUN_020BD850: ; 0x020BD850
mov r5, r2, asr #0x4
ldrsh r7, [r1, #0x0]
ldrsh r6, [r1, #0x2]
- blx MI_Zero36B
+ bl MI_Zero36B
ldrh r0, [r4, #0x0]
add r1, r8, r5, lsl #0x2
ands r0, r0, #0x100
diff --git a/arm9/data/rom2.s b/arm9/data/rom2.s
index 0f18b45a..6f64388f 100644
--- a/arm9/data/rom2.s
+++ b/arm9/data/rom2.s
@@ -2,6 +2,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .data
+ .section .rodata
-.incbin "baserom.nds", 0xF0710, 0x3F8 ; this does not seem to be code
+ ; 0x020EC710
+ .incbin "baserom.nds", 0xF0710, 0x3F8 ; this does not seem to be code
diff --git a/arm9/data/rom2_2.s b/arm9/data/rom2_2.s
index d5055773..2d01b142 100644
--- a/arm9/data/rom2_2.s
+++ b/arm9/data/rom2_2.s
@@ -3,7 +3,7 @@
/* rom2.s TODO: Disassemble */
-.section .data
+.section .rodata
.incbin "baserom.nds", 0xF0B50, 0x6A0C
@@ -731,4 +731,8 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203AF84
.word FUN_0203AFA4
-.incbin "baserom.nds", 0xF80A0, 0x12F00
+ ; 0x020F40A0
+ .incbin "baserom.nds", 0xF80A0, 0xF998
+ .global FX_AtanTable_
+FX_AtanTable_: ; 0x02103A38
+ .incbin "baserom.nds", 0x107A38, 0x548
diff --git a/arm9/data/rom2_3.s b/arm9/data/rom2_3.s
new file mode 100644
index 00000000..4661d2d9
--- /dev/null
+++ b/arm9/data/rom2_3.s
@@ -0,0 +1,21 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ /* rom2.s TODO: Disassemble */
+
+ .section .rodata
+
+ /* 0x02103FE4 */
+ .incbin "baserom.nds", 0x107FE4, 0x790
+
+ .section .data
+ ; 0x02104780
+ .incbin "baserom.nds", 0x108780, 0x2098
+ .global OSi_IrqCallbackInfoIndex
+OSi_IrqCallbackInfoIndex: ; 0x02106818
+ .incbin "baserom.nds", 0x10A818, 0x10
+ .global OSi_ConsoleTypeCache
+OSi_ConsoleTypeCache: ; 0x02106828
+ .incbin "baserom.nds", 0x10A828, 0x4
+
+
diff --git a/arm9/data/rom2_4.s b/arm9/data/rom2_4.s
new file mode 100644
index 00000000..bcb86fc6
--- /dev/null
+++ b/arm9/data/rom2_4.s
@@ -0,0 +1,33 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ /* rom2.s TODO: Disassemble */
+
+ .section .data
+
+ /* 0x0210683C */
+ .global Unk_0210683C
+Unk_0210683C: ; 0x0210683C
+ .incbin "baserom.nds", 0x10A83C, 0x4
+
+ .global Unk_02106840
+Unk_02106840: ; 0x02106840
+ .incbin "baserom.nds", 0x10A840, 0xC0
+
+ .global Unk_02106900
+Unk_02106900: ; 0x02106900
+ .incbin "baserom.nds", 0x10A900, 0x100
+
+ .global Unk_02106A00
+Unk_02106A00: ; 0x02106A00
+ .incbin "baserom.nds", 0x10AA00, 0x4
+
+ .global Unk_02106A04
+Unk_02106A04: ; 0x02106A04
+ .incbin "baserom.nds", 0x10AA04, 0x580
+
+ .global SDK_OVERLAY_DIGEST
+SDK_OVERLAY_DIGEST: ; 0x02106F84
+ .global SDK_OVERLAY_DIGEST_END
+SDK_OVERLAY_DIGEST_END:
+ .incbin "baserom.nds", 0x10af84, 0x1C
diff --git a/arm9/files/FILE_10C400.s b/arm9/files/FILE_10C400.s
index 5cf27f33..254620ef 100644
--- a/arm9/files/FILE_10C400.s
+++ b/arm9/files/FILE_10C400.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x10C400, 0x20
- .balign 512, 255
+
diff --git a/arm9/files/FILE_10C600.s b/arm9/files/FILE_10C600.s
index d2608c8c..cc95b047 100644
--- a/arm9/files/FILE_10C600.s
+++ b/arm9/files/FILE_10C600.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x10C600, 0x20
- .balign 512, 255
+
diff --git a/arm9/files/FILE_10C800.s b/arm9/files/FILE_10C800.s
index 8cb22116..74fe3237 100644
--- a/arm9/files/FILE_10C800.s
+++ b/arm9/files/FILE_10C800.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x10C800, 0x20
- .balign 512, 255
+
diff --git a/arm9/files/FILE_10CA00.s b/arm9/files/FILE_10CA00.s
index 46e1e03b..ecff1f01 100644
--- a/arm9/files/FILE_10CA00.s
+++ b/arm9/files/FILE_10CA00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x10CA00, 0x20
- .balign 512, 255
+
diff --git a/arm9/files/FILE_10CC00.s b/arm9/files/FILE_10CC00.s
index 2876942a..b2a71be1 100644
--- a/arm9/files/FILE_10CC00.s
+++ b/arm9/files/FILE_10CC00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x10CC00, 0x386E0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_145400.s b/arm9/files/FILE_145400.s
index 31de6e12..69b7e8af 100644
--- a/arm9/files/FILE_145400.s
+++ b/arm9/files/FILE_145400.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x145400, 0x261A0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_16B600.s b/arm9/files/FILE_16B600.s
index 33e75c23..a6fe3459 100644
--- a/arm9/files/FILE_16B600.s
+++ b/arm9/files/FILE_16B600.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x16B600, 0x18D80
- .balign 512, 255
+
diff --git a/arm9/files/FILE_184400.s b/arm9/files/FILE_184400.s
index 936860c0..ebfbae38 100644
--- a/arm9/files/FILE_184400.s
+++ b/arm9/files/FILE_184400.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x184400, 0x32E0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_187800.s b/arm9/files/FILE_187800.s
index 38b64eec..dc6a9524 100644
--- a/arm9/files/FILE_187800.s
+++ b/arm9/files/FILE_187800.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x187800, 0x1B760
- .balign 512, 255
+
diff --git a/arm9/files/FILE_1A3000.s b/arm9/files/FILE_1A3000.s
index 3febcf47..e9931349 100644
--- a/arm9/files/FILE_1A3000.s
+++ b/arm9/files/FILE_1A3000.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x1A3000, 0xA1A0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_1AD200.s b/arm9/files/FILE_1AD200.s
index 24bfcb9b..ab9aa578 100644
--- a/arm9/files/FILE_1AD200.s
+++ b/arm9/files/FILE_1AD200.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x1AD200, 0x20
- .balign 512, 255
+
diff --git a/arm9/files/FILE_1AD400.s b/arm9/files/FILE_1AD400.s
index f66becc6..f4cbb321 100644
--- a/arm9/files/FILE_1AD400.s
+++ b/arm9/files/FILE_1AD400.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x1AD400, 0x329E0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_1DFE00.s b/arm9/files/FILE_1DFE00.s
index 5e5e8a7c..edd9bbad 100644
--- a/arm9/files/FILE_1DFE00.s
+++ b/arm9/files/FILE_1DFE00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x1DFE00, 0x19260
- .balign 512, 255
+
diff --git a/arm9/files/FILE_1F9200.s b/arm9/files/FILE_1F9200.s
index e2e33721..4cc1228a 100644
--- a/arm9/files/FILE_1F9200.s
+++ b/arm9/files/FILE_1F9200.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x1F9200, 0x2EBE0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_227E00.s b/arm9/files/FILE_227E00.s
index ab307e3a..103ad10a 100644
--- a/arm9/files/FILE_227E00.s
+++ b/arm9/files/FILE_227E00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x227E00, 0xF520
- .balign 512, 255
+
diff --git a/arm9/files/FILE_237400.s b/arm9/files/FILE_237400.s
index 45907862..a912c8e4 100644
--- a/arm9/files/FILE_237400.s
+++ b/arm9/files/FILE_237400.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x237400, 0x4680
- .balign 512, 255
+
diff --git a/arm9/files/FILE_23BC00.s b/arm9/files/FILE_23BC00.s
index 72123ecb..ee3f7e21 100644
--- a/arm9/files/FILE_23BC00.s
+++ b/arm9/files/FILE_23BC00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x23BC00, 0x28500
- .balign 512, 255
+
diff --git a/arm9/files/FILE_264200.s b/arm9/files/FILE_264200.s
index 5e654387..d4a20793 100644
--- a/arm9/files/FILE_264200.s
+++ b/arm9/files/FILE_264200.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x264200, 0x6E80
- .balign 512, 255
+
diff --git a/arm9/files/FILE_26B200.s b/arm9/files/FILE_26B200.s
index 0c91220f..66491b3a 100644
--- a/arm9/files/FILE_26B200.s
+++ b/arm9/files/FILE_26B200.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x26B200, 0x17CE0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_283000.s b/arm9/files/FILE_283000.s
index 6b536136..09f585cf 100644
--- a/arm9/files/FILE_283000.s
+++ b/arm9/files/FILE_283000.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x283000, 0x100
- .balign 512, 255
+
diff --git a/arm9/files/FILE_283200.s b/arm9/files/FILE_283200.s
index 461d9ac6..68180b84 100644
--- a/arm9/files/FILE_283200.s
+++ b/arm9/files/FILE_283200.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x283200, 0x2400
- .balign 512, 255
+
diff --git a/arm9/files/FILE_285600.s b/arm9/files/FILE_285600.s
index 02c6eb09..ca6a17ed 100644
--- a/arm9/files/FILE_285600.s
+++ b/arm9/files/FILE_285600.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x285600, 0x5C0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_285C00.s b/arm9/files/FILE_285C00.s
index 70fab4a8..62f45299 100644
--- a/arm9/files/FILE_285C00.s
+++ b/arm9/files/FILE_285C00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x285C00, 0xF00
- .balign 512, 255
+
diff --git a/arm9/files/FILE_286C00.s b/arm9/files/FILE_286C00.s
index 7d4ff42d..65aaf12c 100644
--- a/arm9/files/FILE_286C00.s
+++ b/arm9/files/FILE_286C00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x286C00, 0x1900
- .balign 512, 255
+
diff --git a/arm9/files/FILE_288600.s b/arm9/files/FILE_288600.s
index cdb33573..57c96796 100644
--- a/arm9/files/FILE_288600.s
+++ b/arm9/files/FILE_288600.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x288600, 0x9A0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_289000.s b/arm9/files/FILE_289000.s
index 0d794c29..eeffd74a 100644
--- a/arm9/files/FILE_289000.s
+++ b/arm9/files/FILE_289000.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x289000, 0x560
- .balign 512, 255
+
diff --git a/arm9/files/FILE_289600.s b/arm9/files/FILE_289600.s
index 813f71fe..2a60cc62 100644
--- a/arm9/files/FILE_289600.s
+++ b/arm9/files/FILE_289600.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x289600, 0x800
- .balign 512, 255
+
diff --git a/arm9/files/FILE_289E00.s b/arm9/files/FILE_289E00.s
index 34da6195..f133baff 100644
--- a/arm9/files/FILE_289E00.s
+++ b/arm9/files/FILE_289E00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x289E00, 0xBA0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_28AA00.s b/arm9/files/FILE_28AA00.s
index d8827a3a..4fa54cf0 100644
--- a/arm9/files/FILE_28AA00.s
+++ b/arm9/files/FILE_28AA00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x28AA00, 0x1780
- .balign 512, 255
+
diff --git a/arm9/files/FILE_28C200.s b/arm9/files/FILE_28C200.s
index b69d6856..ae636e3f 100644
--- a/arm9/files/FILE_28C200.s
+++ b/arm9/files/FILE_28C200.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x28C200, 0x900
- .balign 512, 255
+
diff --git a/arm9/files/FILE_28CC00.s b/arm9/files/FILE_28CC00.s
index 8b411001..1382f7cf 100644
--- a/arm9/files/FILE_28CC00.s
+++ b/arm9/files/FILE_28CC00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x28CC00, 0x600
- .balign 512, 255
+
diff --git a/arm9/files/FILE_28D200.s b/arm9/files/FILE_28D200.s
index fe324802..8639f01a 100644
--- a/arm9/files/FILE_28D200.s
+++ b/arm9/files/FILE_28D200.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x28D200, 0x600
- .balign 512, 255
+
diff --git a/arm9/files/FILE_28D800.s b/arm9/files/FILE_28D800.s
index f787e794..01333fec 100644
--- a/arm9/files/FILE_28D800.s
+++ b/arm9/files/FILE_28D800.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x28D800, 0x4A0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_28DE00.s b/arm9/files/FILE_28DE00.s
index 6658c9fc..d75cd7de 100644
--- a/arm9/files/FILE_28DE00.s
+++ b/arm9/files/FILE_28DE00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x28DE00, 0x320
- .balign 512, 255
+
diff --git a/arm9/files/FILE_28E200.s b/arm9/files/FILE_28E200.s
index d36e77ce..78a01f74 100644
--- a/arm9/files/FILE_28E200.s
+++ b/arm9/files/FILE_28E200.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x28E200, 0x4C0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_28E800.s b/arm9/files/FILE_28E800.s
index bdc1ef52..37f22bb0 100644
--- a/arm9/files/FILE_28E800.s
+++ b/arm9/files/FILE_28E800.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x28E800, 0x9A0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_28F200.s b/arm9/files/FILE_28F200.s
index f8b95b6a..7fbec89b 100644
--- a/arm9/files/FILE_28F200.s
+++ b/arm9/files/FILE_28F200.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x28F200, 0xCC0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_290000.s b/arm9/files/FILE_290000.s
index 7e15ff90..63a6e035 100644
--- a/arm9/files/FILE_290000.s
+++ b/arm9/files/FILE_290000.s
@@ -1,4 +1,5 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x290000, 0x560
- .balign 512, 255
+ .section .bss
+ .space 0x20
diff --git a/arm9/files/FILE_290600.s b/arm9/files/FILE_290600.s
index fda50640..35fec2fd 100644
--- a/arm9/files/FILE_290600.s
+++ b/arm9/files/FILE_290600.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x290600, 0xB40
- .balign 512, 255
+
diff --git a/arm9/files/FILE_291200.s b/arm9/files/FILE_291200.s
index ce12a90a..9055004d 100644
--- a/arm9/files/FILE_291200.s
+++ b/arm9/files/FILE_291200.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x291200, 0xCC0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_292000.s b/arm9/files/FILE_292000.s
index d50a3ef1..27028058 100644
--- a/arm9/files/FILE_292000.s
+++ b/arm9/files/FILE_292000.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x292000, 0xC60
- .balign 512, 255
+
diff --git a/arm9/files/FILE_292E00.s b/arm9/files/FILE_292E00.s
index b5a8d36d..f0c68d4e 100644
--- a/arm9/files/FILE_292E00.s
+++ b/arm9/files/FILE_292E00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x292E00, 0x1140
- .balign 512, 255
+
diff --git a/arm9/files/FILE_294000.s b/arm9/files/FILE_294000.s
index 8a03373c..920669f6 100644
--- a/arm9/files/FILE_294000.s
+++ b/arm9/files/FILE_294000.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x294000, 0x900
- .balign 512, 255
+
diff --git a/arm9/files/FILE_294A00.s b/arm9/files/FILE_294A00.s
index 452c8165..ce644972 100644
--- a/arm9/files/FILE_294A00.s
+++ b/arm9/files/FILE_294A00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x294A00, 0x9C0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_295400.s b/arm9/files/FILE_295400.s
index b21be08b..7bc87c21 100644
--- a/arm9/files/FILE_295400.s
+++ b/arm9/files/FILE_295400.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x295400, 0x4A0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_295A00.s b/arm9/files/FILE_295A00.s
index 1017f6aa..25378684 100644
--- a/arm9/files/FILE_295A00.s
+++ b/arm9/files/FILE_295A00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x295A00, 0x940
- .balign 512, 255
+
diff --git a/arm9/files/FILE_296400.s b/arm9/files/FILE_296400.s
index 118ca39a..1f9defa1 100644
--- a/arm9/files/FILE_296400.s
+++ b/arm9/files/FILE_296400.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x296400, 0x320
- .balign 512, 255
+
diff --git a/arm9/files/FILE_296800.s b/arm9/files/FILE_296800.s
index 68ac75b9..256bd99d 100644
--- a/arm9/files/FILE_296800.s
+++ b/arm9/files/FILE_296800.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x296800, 0xCA0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_297600.s b/arm9/files/FILE_297600.s
index 1887c4af..664db335 100644
--- a/arm9/files/FILE_297600.s
+++ b/arm9/files/FILE_297600.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x297600, 0x8A0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_298000.s b/arm9/files/FILE_298000.s
index ffdcde2a..b7181b03 100644
--- a/arm9/files/FILE_298000.s
+++ b/arm9/files/FILE_298000.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x298000, 0x600
- .balign 512, 255
+
diff --git a/arm9/files/FILE_298600.s b/arm9/files/FILE_298600.s
index d4bef86c..2a12d4fc 100644
--- a/arm9/files/FILE_298600.s
+++ b/arm9/files/FILE_298600.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x298600, 0x320
- .balign 512, 255
+
diff --git a/arm9/files/FILE_298A00.s b/arm9/files/FILE_298A00.s
index 258432c2..796aa1a3 100644
--- a/arm9/files/FILE_298A00.s
+++ b/arm9/files/FILE_298A00.s
@@ -1,4 +1,5 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x298A00, 0xFC0
- .balign 512, 255
+ .section .bss
+ .space 0x20
diff --git a/arm9/files/FILE_299A00.s b/arm9/files/FILE_299A00.s
index 71432656..07724718 100644
--- a/arm9/files/FILE_299A00.s
+++ b/arm9/files/FILE_299A00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x299A00, 0x400
- .balign 512, 255
+
diff --git a/arm9/files/FILE_299E00.s b/arm9/files/FILE_299E00.s
index 4fb90fe1..4de78184 100644
--- a/arm9/files/FILE_299E00.s
+++ b/arm9/files/FILE_299E00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x299E00, 0x2480
- .balign 512, 255
+
diff --git a/arm9/files/FILE_29C400.s b/arm9/files/FILE_29C400.s
index 3b880c03..51f17874 100644
--- a/arm9/files/FILE_29C400.s
+++ b/arm9/files/FILE_29C400.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x29C400, 0x2380
- .balign 512, 255
+
diff --git a/arm9/files/FILE_29E800.s b/arm9/files/FILE_29E800.s
index f3cf72cb..658eb523 100644
--- a/arm9/files/FILE_29E800.s
+++ b/arm9/files/FILE_29E800.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x29E800, 0x3040
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2A1A00.s b/arm9/files/FILE_2A1A00.s
index d917b776..f1bae30a 100644
--- a/arm9/files/FILE_2A1A00.s
+++ b/arm9/files/FILE_2A1A00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2A1A00, 0x47A0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2A6200.s b/arm9/files/FILE_2A6200.s
index ae62fcc6..868864db 100644
--- a/arm9/files/FILE_2A6200.s
+++ b/arm9/files/FILE_2A6200.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2A6200, 0x2540
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2A8800.s b/arm9/files/FILE_2A8800.s
index 967d96f3..5c379955 100644
--- a/arm9/files/FILE_2A8800.s
+++ b/arm9/files/FILE_2A8800.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2A8800, 0x15A0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2A9E00.s b/arm9/files/FILE_2A9E00.s
index 21839769..e89790e3 100644
--- a/arm9/files/FILE_2A9E00.s
+++ b/arm9/files/FILE_2A9E00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2A9E00, 0x2C20
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2ACC00.s b/arm9/files/FILE_2ACC00.s
index 2068bd4c..1b79ca62 100644
--- a/arm9/files/FILE_2ACC00.s
+++ b/arm9/files/FILE_2ACC00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2ACC00, 0xD00
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2ADA00.s b/arm9/files/FILE_2ADA00.s
index 9f464dac..820b4821 100644
--- a/arm9/files/FILE_2ADA00.s
+++ b/arm9/files/FILE_2ADA00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2ADA00, 0x1080
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2AEC00.s b/arm9/files/FILE_2AEC00.s
index e6a54fb3..0a0062ff 100644
--- a/arm9/files/FILE_2AEC00.s
+++ b/arm9/files/FILE_2AEC00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2AEC00, 0x3DE0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2B2A00.s b/arm9/files/FILE_2B2A00.s
index 44eba0d2..c7542e17 100644
--- a/arm9/files/FILE_2B2A00.s
+++ b/arm9/files/FILE_2B2A00.s
@@ -1,4 +1,6 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2B2A00, 0x4AC0
- .balign 512, 255
+ .section .bss
+ .space 0x20
+
diff --git a/arm9/files/FILE_2B7600.s b/arm9/files/FILE_2B7600.s
index 8258b44e..f0f81a80 100644
--- a/arm9/files/FILE_2B7600.s
+++ b/arm9/files/FILE_2B7600.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2B7600, 0x1C40
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2B9400.s b/arm9/files/FILE_2B9400.s
index 17ffa8d8..e7245019 100644
--- a/arm9/files/FILE_2B9400.s
+++ b/arm9/files/FILE_2B9400.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2B9400, 0x3000
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2BC400.s b/arm9/files/FILE_2BC400.s
index e34ef7f4..eb62b3a8 100644
--- a/arm9/files/FILE_2BC400.s
+++ b/arm9/files/FILE_2BC400.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2BC400, 0x2660
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2BEC00.s b/arm9/files/FILE_2BEC00.s
index c229a70e..8042a682 100644
--- a/arm9/files/FILE_2BEC00.s
+++ b/arm9/files/FILE_2BEC00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2BEC00, 0x2440
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2C1200.s b/arm9/files/FILE_2C1200.s
index f357627d..332f0c01 100644
--- a/arm9/files/FILE_2C1200.s
+++ b/arm9/files/FILE_2C1200.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2C1200, 0x1600
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2C2800.s b/arm9/files/FILE_2C2800.s
index bddd6f01..6e38ff10 100644
--- a/arm9/files/FILE_2C2800.s
+++ b/arm9/files/FILE_2C2800.s
@@ -1,4 +1,6 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2C2800, 0x23A0
- .balign 512, 255
+ .section .bss
+ .space 0x20
+
diff --git a/arm9/files/FILE_2C4C00.s b/arm9/files/FILE_2C4C00.s
index d41910b0..6764e3f8 100644
--- a/arm9/files/FILE_2C4C00.s
+++ b/arm9/files/FILE_2C4C00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2C4C00, 0xE20
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2C5C00.s b/arm9/files/FILE_2C5C00.s
index c24ed641..d98bfcf3 100644
--- a/arm9/files/FILE_2C5C00.s
+++ b/arm9/files/FILE_2C5C00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2C5C00, 0x3EC0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2C9C00.s b/arm9/files/FILE_2C9C00.s
index 72b30caa..77531a9c 100644
--- a/arm9/files/FILE_2C9C00.s
+++ b/arm9/files/FILE_2C9C00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2C9C00, 0x20
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2C9E00.s b/arm9/files/FILE_2C9E00.s
index 91cc4599..1da6375d 100644
--- a/arm9/files/FILE_2C9E00.s
+++ b/arm9/files/FILE_2C9E00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2C9E00, 0x4AE0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2CEA00.s b/arm9/files/FILE_2CEA00.s
index e9a4ed70..f1e5beab 100644
--- a/arm9/files/FILE_2CEA00.s
+++ b/arm9/files/FILE_2CEA00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2CEA00, 0x1220
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2CFE00.s b/arm9/files/FILE_2CFE00.s
index 513e7dea..ae6d4e43 100644
--- a/arm9/files/FILE_2CFE00.s
+++ b/arm9/files/FILE_2CFE00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2CFE00, 0x5DE0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2D5C00.s b/arm9/files/FILE_2D5C00.s
index adc46cc2..250d2a37 100644
--- a/arm9/files/FILE_2D5C00.s
+++ b/arm9/files/FILE_2D5C00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2D5C00, 0x1E20
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2D7C00.s b/arm9/files/FILE_2D7C00.s
index 4fc876ea..293a4962 100644
--- a/arm9/files/FILE_2D7C00.s
+++ b/arm9/files/FILE_2D7C00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2D7C00, 0x1BE0
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2D9800.s b/arm9/files/FILE_2D9800.s
index 772b6549..0c21e6e4 100644
--- a/arm9/files/FILE_2D9800.s
+++ b/arm9/files/FILE_2D9800.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2D9800, 0x460
- .balign 512, 255
+
diff --git a/arm9/files/FILE_2D9E00.s b/arm9/files/FILE_2D9E00.s
index 934f9168..a358769d 100644
--- a/arm9/files/FILE_2D9E00.s
+++ b/arm9/files/FILE_2D9E00.s
@@ -1,4 +1,5 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2D9E00, 0x52C0
- .balign 512, 255
+ .section .bss
+ .space 0x40
diff --git a/arm9/files/FILE_2DF200.s b/arm9/files/FILE_2DF200.s
index b5761253..93f5cfda 100644
--- a/arm9/files/FILE_2DF200.s
+++ b/arm9/files/FILE_2DF200.s
@@ -1,4 +1,6 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2DF200, 0xA720
- .balign 512, 255
+ .section .bss
+ .space 0x160
+
diff --git a/arm9/files/FILE_2E9A00.s b/arm9/files/FILE_2E9A00.s
index 8b6338f7..1b03c961 100644
--- a/arm9/files/FILE_2E9A00.s
+++ b/arm9/files/FILE_2E9A00.s
@@ -1,4 +1,5 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2E9A00, 0x5580
- .balign 512, 255
+ .section .bss
+ .space 0xa0
diff --git a/arm9/files/FILE_2EF000.s b/arm9/files/FILE_2EF000.s
index b8304264..e29ca1e0 100644
--- a/arm9/files/FILE_2EF000.s
+++ b/arm9/files/FILE_2EF000.s
@@ -1,4 +1,6 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2EF000, 0x2540
- .balign 512, 255
+ .section .bss
+ .space 0x120
+
diff --git a/arm9/files/FILE_2F1600.s b/arm9/files/FILE_2F1600.s
index 643b88fc..7669a577 100644
--- a/arm9/files/FILE_2F1600.s
+++ b/arm9/files/FILE_2F1600.s
@@ -1,4 +1,5 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2F1600, 0xE2A0
- .balign 512, 255
+ .section .bss
+ .space 0x1980
diff --git a/arm9/files/FILE_2FFA00.s b/arm9/files/FILE_2FFA00.s
index 8fb7cb9c..9e8819b8 100644
--- a/arm9/files/FILE_2FFA00.s
+++ b/arm9/files/FILE_2FFA00.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x2FFA00, 0x3920
- .balign 512, 255
+
diff --git a/arm9/files/FILE_303400.s b/arm9/files/FILE_303400.s
index a180411b..52f17ff8 100644
--- a/arm9/files/FILE_303400.s
+++ b/arm9/files/FILE_303400.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x303400, 0x9100
- .balign 512, 255
+
diff --git a/arm9/files/FILE_30C600.s b/arm9/files/FILE_30C600.s
index 72531ed0..faf88157 100644
--- a/arm9/files/FILE_30C600.s
+++ b/arm9/files/FILE_30C600.s
@@ -1,4 +1,4 @@
.include "asm/macros.inc"
- .text
+ .section .text
.incbin "baserom.nds", 0x30C600, 0x820
- .balign 512, 255
+
diff --git a/arm9/global.inc b/arm9/global.inc
index d903402c..b355fcd4 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -28,6 +28,9 @@
.extern DGT_Hash1GetDigest_R
.extern DGT_Hash1Reset
.extern DGT_Hash1SetSource
+.extern DGT_Hash2GetDigest
+.extern DGT_Hash2Reset
+.extern DGT_Hash2SetSource
.extern DGTi_hash2_arm4_small
.extern ErrorHandling
.extern FS_CloseFile
@@ -141,8 +144,8 @@
.extern FUN_02005E80
.extern FUN_02005E90
.extern FUN_02005F14
-.extern FUN_02005F60
-.extern FUN_02005FDC
+.extern UnloadOverlayByID
+.extern HandleLoadOverlay
.extern FUN_020061E8
.extern FUN_0200621C
.extern FUN_02006234
@@ -1130,7 +1133,7 @@
.extern FUN_02036D94
.extern FUN_02036DD4
.extern FUN_02037024
-.extern FUN_02037350
+.extern LoadOverlay_MODULE_05
.extern FUN_02037394
.extern FUN_0203739C
.extern FUN_020373AC
@@ -2648,6 +2651,11 @@
.extern FUN_020C1F54
.extern FUN_020C1FA4
.extern FUN_020C1FF0
+.extern FUN_02013EA8
+.extern FUN_02013EC4
+.extern FUN_02013ED8
+.extern FUN_02013EE0
+.extern FUN_0201EC58
.extern FUN_020C20DC
.extern FUN_020C2104
.extern FUN_020C217C
@@ -2664,286 +2672,322 @@
.extern FUN_020C3674
.extern FUN_020C36A8
.extern FUN_020C3910
+.extern FUN_02020C14
.extern FUN_020C3980
.extern FUN_020C39CC
.extern FUN_020C6034
.extern FUN_020C605C
-.extern FUN_021D74E0
-.extern FUN_021D7660
-.extern FUN_021D76AC
-.extern FUN_021D77C4
-.extern FUN_021D77E0
-.extern FUN_021D7800
-.extern FUN_021D78FC
-.extern FUN_021D79B4
-.extern FUN_021D7A7C
-.extern FUN_021D7B14
-.extern FUN_021D7B48
-.extern FUN_021D7B6C
-.extern FUN_021D7B70
-.extern FUN_021D7BBC
-.extern FUN_021D7BC0
-.extern FUN_021D7C30
-.extern FUN_021D7C4C
-.extern FUN_021D7CA4
-.extern FUN_021D7D68
-.extern FUN_021D7DA8
-.extern FUN_021D7DEC
-.extern FUN_021D7E18
-.extern FUN_021D7F20
-.extern FUN_021D7F8C
-.extern FUN_021D8018
-.extern FUN_021D8044
-.extern FUN_021D8058
-.extern FUN_021D8164
-.extern FUN_021D82BC
-.extern FUN_021D8320
-.extern FUN_021D836C
-.extern FUN_021D83A8
-.extern FUN_021D83C0
-.extern FUN_021D83F0
-.extern FUN_021D844C
-.extern FUN_021D8494
-.extern FUN_021D8558
-.extern FUN_021D8590
-.extern FUN_021D85A0
-.extern FUN_021D85B4
-.extern FUN_021D85FC
-.extern FUN_021D8624
-.extern FUN_021D865C
-.extern FUN_021D868C
-.extern FUN_021D872C
-.extern FUN_021D8730
-.extern FUN_021D8758
-.extern FUN_021D87D0
-.extern FUN_021D8818
-.extern FUN_021D8820
-.extern FUN_021D8860
-.extern FUN_021D88E4
-.extern FUN_021D8910
-.extern FUN_021D8944
-.extern FUN_021D89CC
-.extern FUN_021D8A54
-.extern FUN_021D8A7C
-.extern FUN_021D8B64
-.extern FUN_021D8BF0
-.extern FUN_021D8C08
-.extern FUN_021D8C24
-.extern FUN_021D8C58
-.extern FUN_021D8C6C
-.extern FUN_021D8CC8
-.extern FUN_021D8CF0
-.extern FUN_021D8D04
-.extern FUN_021D8F08
-.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_021D9C2C
-.extern FUN_021D9F78
-.extern FUN_021DA2F4
-.extern FUN_021DA334
-.extern FUN_021DA388
-.extern FUN_021DA3DC
-.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_021DAB68
-.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_021DCA84
-.extern FUN_021DD6F0
-.extern FUN_021DD718
-.extern FUN_021DD968
-.extern FUN_021DDB08
-.extern FUN_021DDBBC
-.extern FUN_021DDC1C
-.extern FUN_021DDCE8
-.extern FUN_021DDD7C
-.extern FUN_021DDDCC
-.extern FUN_021DDE7C
-.extern FUN_021DDEE0
-.extern FUN_021DF95C
-.extern FUN_021DF978
-.extern FUN_021DFA40
-.extern FUN_021DFAF8
-.extern FUN_021DFB20
-.extern FUN_021DFD18
-.extern FUN_021DFDBC
-.extern FUN_021DFE64
-.extern FUN_021DFF74
-.extern FUN_021E0200
-.extern FUN_021E0374
-.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_021E242C
-.extern FUN_021E2454
-.extern FUN_021E2464
-.extern FUN_021E2578
-.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_021EA530
-.extern FUN_021EACF8
-.extern FUN_021EADD8
-.extern FUN_021EADF8
-.extern FUN_021EAE18
-.extern FUN_021EAE38
-.extern FUN_021EAE90
-.extern FUN_021EB044
-.extern FUN_021EB0FC
-.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_02037790
+.extern FUN_0204BF94
+.extern FUN_0204BF9C
+.extern FUN_0204BFB0
+.extern FUN_0204C080
+.extern FUN_0204C0A4
+.extern FUN_020252B8
+.extern FUN_0204BF58
+.extern FUN_0204BFF0
+.extern FUN_0204C02C
+.extern FUN_0204C064
+.extern FUN_0202F0DC
+.extern FUN_02032BD0
+.extern FUN_02032C0C
+.extern FUN_02032C28
+.extern FUN_02034984
+.extern FUN_0204C158
+.extern FUN_0204C174
+.extern MOD06_022457A8
+.extern MOD06_022457CC
+.extern MOD06_022457F8
+.extern MOD06_02245824
+.extern MOD06_0224582C
+.extern MOD20_02253F6C
+.extern MOD20_02254420
+.extern MOD20_02254460
+.extern MOD20_02254488
+.extern MOD20_022542C0
+.extern MOD05_021EC464
+.extern MOD05_021ED9B4
+.extern MOD05_021EC7B4
+.extern MOD20_02253A04
+.extern MOD20_02253FAC
+.extern MOD20_02253FB4
+.extern MOD20_02252BB8
+.extern MOD05_021D74E0
+.extern MOD04_021D7660
+.extern MOD04_021D76AC
+.extern MOD04_021D77C4
+.extern MOD04_021D77E0
+.extern MOD04_021D7800
+.extern MOD04_021D78FC
+.extern MOD04_021D79B4
+.extern MOD04_021D7A7C
+.extern MOD04_021D7B14
+.extern MOD04_021D7B48
+.extern MOD04_021D7B6C
+.extern MOD04_021D7B70
+.extern MOD04_021D7BBC
+.extern MOD04_021D7BC0
+.extern MOD04_021D7C30
+.extern MOD04_021D7C4C
+.extern MOD05_021D7CA4
+.extern MOD04_021D7D68
+.extern MOD04_021D7DA8
+.extern MOD04_021D7DEC
+.extern MOD04_021D7E18
+.extern MOD04_021D7F20
+.extern MOD04_021D7F8C
+.extern MOD04_021D8018
+.extern MOD04_021D8044
+.extern MOD04_021D8058
+.extern MOD05_021D8164
+.extern MOD04_021D82BC
+.extern MOD05_021D8320
+.extern MOD04_021D836C
+.extern MOD04_021D83A8
+.extern MOD04_021D83C0
+.extern MOD04_021D83F0
+.extern MOD54_021D844C
+.extern MOD04_021D8494
+.extern MOD04_021D8558
+.extern MOD04_021D8590
+.extern MOD04_021D85A0
+.extern MOD04_021D85B4
+.extern MOD05_021D85FC
+.extern MOD04_021D8624
+.extern MOD04_021D865C
+.extern MOD04_021D868C
+.extern MOD04_021D872C
+.extern MOD04_021D8730
+.extern MOD05_021D8758
+.extern MOD04_021D87D0
+.extern MOD04_021D8818
+.extern MOD05_021D8820
+.extern MOD04_021D8860
+.extern MOD54_021D88E4
+.extern MOD04_021D8910
+.extern MOD04_021D8944
+.extern MOD54_021D89CC
+.extern MOD04_021D8A54
+.extern MOD04_021D8A7C
+.extern MOD53_021D8B64
+.extern MOD04_021D8BF0
+.extern MOD04_021D8C08
+.extern MOD54_021D8C24
+.extern MOD04_021D8C58
+.extern MOD04_021D8C6C
+.extern MOD04_021D8CC8
+.extern MOD04_021D8CF0
+.extern MOD04_021D8D04
+.extern MOD04_021D8F08
+.extern MOD53_021D917C
+.extern MOD05_021D959C
+.extern MOD05_021D967C
+.extern MOD05_021D96F4
+.extern MOD05_021D9708
+.extern MOD05_021D971C
+.extern MOD05_021D9820
+.extern MOD05_021D99F8
+.extern MOD04_021D9C2C
+.extern MOD04_021D9F78
+.extern MOD04_021DA2F4
+.extern MOD04_021DA334
+.extern MOD04_021DA388
+.extern MOD04_021DA3DC
+.extern MOD05_021DA464
+.extern MOD05_021DA4EC
+.extern MOD05_021DA54C
+.extern MOD05_021DA58C
+.extern MOD05_021DA5B8
+.extern MOD05_021DA5C8
+.extern MOD05_021DA5D0
+.extern MOD05_021DA5D8
+.extern MOD05_021DA7B4
+.extern MOD05_021DAAA4
+.extern MOD04_021DAB68
+.extern MOD05_021DAC70
+.extern MOD05_021DAE40
+.extern MOD05_021DAED4
+.extern MOD05_021DAF28
+.extern MOD05_021DAF78
+.extern MOD05_021DAF98
+.extern MOD05_021DB030
+.extern MOD17_021DB7E8
+.extern MOD17_021DB858
+.extern MOD05_021DC174
+.extern MOD04_021DCA84
+.extern MOD04_021DD6F0
+.extern MOD04_021DD718
+.extern MOD04_021DD968
+.extern MOD04_021DDB08
+.extern MOD04_021DDBBC
+.extern MOD04_021DDC1C
+.extern MOD04_021DDCE8
+.extern MOD04_021DDD7C
+.extern MOD04_021DDDCC
+.extern MOD04_021DDE7C
+.extern MOD04_021DDEE0
+.extern MOD04_021DF95C
+.extern MOD04_021DF978
+.extern MOD04_021DFA40
+.extern MOD04_021DFAF8
+.extern MOD04_021DFB20
+.extern MOD04_021DFD18
+.extern MOD04_021DFDBC
+.extern MOD04_021DFE64
+.extern MOD04_021DFF74
+.extern MOD04_021E0200
+.extern MOD04_021E0374
+.extern MOD05_021E1374
+.extern MOD05_021E1858
+.extern MOD05_021E1994
+.extern MOD05_021E1BF8
+.extern MOD05_021E1C4C
+.extern MOD05_021E1C54
+.extern MOD05_021E1ECC
+.extern MOD05_021E1F34
+.extern MOD05_021E1F58
+.extern MOD05_021E1F60
+.extern MOD04_021E242C
+.extern MOD04_021E2454
+.extern MOD05_021E2464
+.extern MOD04_021E2578
+.extern MOD05_021E2608
+.extern MOD05_021E26CC
+.extern MOD05_021E27E8
+.extern MOD05_021E288C
+.extern MOD05_021E28A0
+.extern MOD05_021E2950
+.extern MOD05_021E29B4
+.extern MOD05_021E29C8
+.extern MOD05_021E2A70
+.extern MOD05_021E2AD4
+.extern MOD05_021E2B80
+.extern MOD05_021E2B9C
+.extern MOD05_021E2BB8
+.extern MOD05_021E2BD0
+.extern MOD05_021E2C24
+.extern MOD05_021E2C58
+.extern MOD05_021E2CBC
+.extern MOD05_021E32F0
+.extern MOD05_021E331C
+.extern MOD05_021E3424
+.extern MOD05_021E3444
+.extern MOD05_021E495C
+.extern MOD05_021E4C54
+.extern MOD05_021E4C60
+.extern MOD05_021E4DE4
+.extern MOD05_021E5614
+.extern MOD05_021E57D4
+.extern MOD05_021E5970
+.extern MOD05_021E5B30
+.extern MOD05_021E5FD8
+.extern MOD05_021E5FE0
+.extern MOD05_021E6410
+.extern MOD05_021E643C
+.extern MOD05_021E6990
+.extern MOD05_021E69BC
+.extern MOD05_021E6BF4
+.extern MOD05_021E7030
+.extern MOD05_021E70F0
+.extern MOD05_021E7138
+.extern MOD05_021E7184
+.extern MOD05_021E71E8
+.extern MOD05_021E7750
+.extern MOD05_021E799C
+.extern MOD05_021E7AC0
+.extern MOD05_021E7EA0
+.extern MOD05_021E7EB0
+.extern MOD05_021E7EC4
+.extern MOD05_021E7EC8
+.extern MOD05_021E7ED0
+.extern MOD05_021E7ED8
+.extern MOD05_021E7FBC
+.extern MOD05_021E8128
+.extern MOD05_021E8130
+.extern MOD05_021E8140
+.extern MOD05_021E8144
+.extern MOD05_021E8148
+.extern MOD05_021E8158
+.extern MOD05_021E81BC
+.extern MOD05_021E84F4
+.extern MOD05_021E856C
+.extern MOD05_021E8588
+.extern MOD05_021E85E4
+.extern MOD05_021E85FC
+.extern MOD04_021EA530
+.extern MOD04_021EACF8
+.extern MOD04_021EADD8
+.extern MOD04_021EADF8
+.extern MOD04_021EAE18
+.extern MOD04_021EAE38
+.extern MOD04_021EAE90
+.extern MOD04_021EB044
+.extern MOD04_021EB0FC
+.extern MOD05_021EC57C
+.extern MOD05_021EC71C
+.extern MOD05_021EC854
+.extern MOD05_021EC864
+.extern MOD05_021ECD64
+.extern MOD05_021ECF14
+.extern MOD05_021ED0CC
+.extern MOD05_021ED49C
+.extern MOD05_021ED4E0
+.extern MOD05_021ED52C
+.extern MOD05_021ED5C4
+.extern MOD05_021ED5EC
+.extern MOD05_021ED644
+.extern MOD05_021ED940
+.extern MOD05_021EDA48
+.extern MOD05_021EDBC8
+.extern MOD05_021EF5E0
+.extern MOD05_021EF604
+.extern MOD05_021EF620
+.extern MOD05_021EF654
+.extern MOD05_021EF824
+.extern MOD05_021EF844
+.extern MOD05_021EF8C8
+.extern MOD05_021EF8DC
+.extern MOD05_021EFA9C
+.extern MOD05_021F02C4
+.extern MOD05_021F1D8C
+.extern MOD05_021F1DC8
+.extern MOD05_021F1DFC
+.extern MOD05_021F1EC0
+.extern MOD05_021F1F78
+.extern MOD05_021F2094
+.extern MOD05_021F20D8
+.extern MOD05_021F20F8
+.extern MOD05_021F2AF4
+.extern MOD05_021F2E0C
+.extern MOD05_021F2E28
+.extern MOD05_021F2F48
+.extern MOD05_021F2F6C
+.extern MOD05_021F3A18
+.extern MOD05_021F3AB4
+.extern MOD05_021F3B4C
+.extern MOD05_021F3B7C
+.extern MOD05_021F3DA4
+.extern MOD05_021F44D8
+.extern MOD05_021F4520
+.extern MOD05_021F4568
+.extern MOD05_021F4594
+.extern MOD05_021F45E8
+.extern MOD05_021F4608
+.extern MOD05_021F4BD0
+.extern MOD05_021F4C88
+.extern MOD05_021F4D80
+.extern MOD05_021F4DC8
+.extern MOD05_021F4E7C
+.extern MOD05_021F57EC
+.extern MOD05_021F5C44
+.extern MOD05_021F61DC
+.extern MOD05_021F61E8
+.extern MOD07_02211E60
.extern FUN_02213B08
.extern FUN_02213D80
.extern FUN_02213DBC
.extern FUN_02213E24
-.extern FUN_0222D5C0
+.extern MOD11_0222D5C0
.extern FUN_0222DAEC
.extern FUN_0222DD1C
.extern FUN_0222DD38
@@ -2958,237 +3002,237 @@
.extern FUN_0222F440
.extern FUN_0222F480
.extern FUN_0222F7E0
-.extern FUN_0222F990
-.extern FUN_022300D4
-.extern FUN_022300DC
+.extern MOD12_0222F990
+.extern MOD11_022300D4
+.extern MOD11_022300DC
.extern FUN_022300E4
-.extern FUN_022300E8
-.extern FUN_022300F4
-.extern FUN_02230100
-.extern FUN_0223010C
-.extern FUN_02230118
-.extern FUN_02230124
+.extern MOD11_022300E8
+.extern MOD11_022300F4
+.extern MOD11_02230100
+.extern MOD11_0223010C
+.extern MOD11_02230118
+.extern MOD11_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 MOD11_02231344
+.extern MOD11_02231350
+.extern MOD11_0223135C
+.extern MOD11_02231368
+.extern MOD11_02231374
+.extern MOD06_02239944
+.extern MOD06_02239AAC
+.extern MOD18_0223CACC
+.extern MOD18_0223CB08
+.extern MOD06_0223CCDC
+.extern MOD06_0223CD7C
+.extern MOD06_0223D3D0
+.extern MOD18_0223D638
+.extern MOD18_0223D648
+.extern MOD06_0223DFB4
+.extern MOD18_0223E060
+.extern MOD18_0223E118
+.extern MOD18_0223E154
+.extern MOD18_0223E1A4
+.extern MOD18_0223E1E0
+.extern MOD18_0223E2AC
+.extern MOD18_0223E4A8
+.extern MOD18_0223E4D4
+.extern MOD18_0223E554
+.extern MOD18_0223E6B8
+.extern MOD12_0223E734
+.extern MOD18_0223E7FC
+.extern MOD18_0223EB8C
+.extern MOD18_0223EF7C
+.extern MOD18_0223F4D8
+.extern MOD18_0223F4F4
+.extern MOD18_0223F8D8
+.extern MOD18_0223FCE8
+.extern MOD06_02240790
+.extern MOD06_022407CC
+.extern MOD06_022407DC
+.extern MOD06_022407F8
+.extern MOD06_02240834
+.extern MOD06_02240844
+.extern MOD18_0224089C
+.extern MOD18_022408FC
+.extern MOD06_022411F4
+.extern MOD06_02241230
+.extern MOD06_02241914
+.extern MOD06_02242A38
+.extern MOD06_02242BE0
+.extern MOD06_0224312C
+.extern MOD06_022432E4
+.extern MOD06_0224339C
+.extern MOD06_022433A8
+.extern MOD06_022433B0
+.extern MOD06_022433B8
+.extern MOD06_022433F8
+.extern MOD06_02243408
+.extern MOD06_02243428
+.extern MOD06_02243448
+.extern MOD06_0224345C
+.extern MOD06_022434AC
+.extern MOD06_022434BC
+.extern MOD06_022434D0
+.extern MOD06_02243694
+.extern MOD06_022436C8
+.extern MOD06_022436E8
+.extern MOD06_02243780
+.extern MOD06_02243838
+.extern MOD06_022438DC
+.extern MOD06_022438E0
+.extern MOD06_022438FC
+.extern MOD06_02243920
+.extern MOD06_022439F8
+.extern MOD06_02243AD8
+.extern MOD06_02243BA8
+.extern MOD06_02243C5C
+.extern MOD06_02243D3C
+.extern MOD06_02243DA0
+.extern MOD06_02243DB8
+.extern MOD06_02243DC0
+.extern MOD06_02243DC4
+.extern MOD06_02243DD8
+.extern MOD06_02243DE0
+.extern MOD06_02243E34
+.extern MOD06_02243E74
+.extern MOD06_02243F18
+.extern MOD06_02243F50
+.extern MOD06_02243F9C
+.extern MOD06_02244210
+.extern MOD06_02244558
+.extern MOD06_02244660
+.extern MOD06_022446BC
+.extern MOD06_022446E0
+.extern MOD06_022446FC
+.extern MOD06_02244758
+.extern MOD06_02244770
+.extern MOD18_02244824
+.extern MOD18_0224484C
+.extern MOD18_02244D1C
+.extern MOD18_02244D20
+.extern MOD18_02244D3C
+.extern MOD18_02244D40
+.extern MOD18_02244D58
+.extern MOD18_02244D98
+.extern MOD18_02244DA0
+.extern MOD06_02244DB0
+.extern MOD06_02244DBC
+.extern MOD06_02244DC4
+.extern MOD06_02244EF8
+.extern MOD06_02244F18
+.extern MOD06_02244F24
+.extern MOD06_02244F2C
+.extern MOD06_02245088
+.extern MOD06_02245114
+.extern MOD06_02245190
+.extern MOD06_02245198
+.extern MOD06_022451F0
+.extern MOD06_0224525C
+.extern MOD18_022452A4
+.extern MOD18_02245324
+.extern MOD06_02245340
+.extern MOD18_02245358
+.extern MOD18_0224566C
+.extern MOD06_022456E8
+.extern MOD06_02245844
+.extern MOD06_02245910
+.extern MOD18_02245F1C
+.extern MOD18_02245F4C
+.extern MOD06_02245FA0
+.extern MOD18_022461A4
+.extern MOD18_022461B8
+.extern MOD06_0224666C
+.extern MOD06_022466A0
+.extern MOD06_022466AC
+.extern MOD18_02246F1C
+.extern MOD18_02247294
+.extern MOD18_022472AC
+.extern MOD06_02247544
+.extern MOD18_02247614
+.extern MOD18_02247728
+.extern MOD06_02247808
+.extern MOD18_02247970
+.extern MOD18_02247A34
+.extern MOD06_022483BC
+.extern MOD06_022483E0
+.extern MOD06_022483EC
+.extern MOD06_02248724
+.extern MOD06_0224884C
+.extern MOD06_022488CC
+.extern MOD06_022488EC
+.extern MOD06_022488F4
+.extern MOD06_022488FC
+.extern MOD06_0224891C
+.extern MOD06_02248B54
+.extern MOD06_02248B58
+.extern MOD06_02248B5C
+.extern MOD06_02248B60
+.extern MOD06_02248B6C
+.extern MOD06_02248CC0
+.extern MOD06_02248CD0
+.extern MOD18_02248DF8
+.extern MOD06_02248F70
+.extern MOD06_02248FE0
+.extern MOD06_02249038
+.extern MOD06_022490A0
+.extern MOD06_022491FC
+.extern MOD18_022494C8
+.extern MOD06_02249508
+.extern MOD06_02249668
+.extern MOD06_022497E8
+.extern MOD06_02249E6C
+.extern MOD06_02249E78
+.extern MOD06_02249E84
+.extern MOD06_02249E90
+.extern MOD06_0224A310
+.extern MOD06_0224A528
+.extern MOD06_0224A7C8
+.extern MOD06_0224ABAC
+.extern MOD06_0224B124
+.extern MOD06_0224B2C4
+.extern MOD06_0224B568
+.extern MOD06_0224B818
+.extern MOD06_0224B86C
+.extern MOD06_0224B9E0
+.extern MOD06_0224BBEC
+.extern MOD06_0224BD90
+.extern MOD06_0224C038
+.extern MOD06_0224C27C
+.extern MOD06_0224C520
+.extern MOD06_0224C678
+.extern MOD06_0224C6E8
+.extern MOD06_0224C6F4
+.extern MOD06_0224C700
+.extern MOD06_0224C8C8
+.extern MOD18_0224CA2C
+.extern MOD18_0224CA54
+.extern MOD06_0224CA58
+.extern MOD06_0224CA88
+.extern MOD11_0224CA94
+.extern MOD18_0224CAA0
+.extern MOD18_0224CAB4
+.extern MOD06_0224CB30
+.extern MOD06_0224CBB0
+.extern MOD06_0224CC24
+.extern MOD06_0224CECC
+.extern MOD06_0224D14C
+.extern MOD06_0224D2E0
+.extern MOD06_0224D3E8
+.extern MOD06_0224D70C
+.extern MOD06_0224D76C
+.extern MOD06_0224D79C
+.extern MOD18_0224DCB8
+.extern MOD18_0224DD94
+.extern MOD18_0224DDB8
+.extern MOD06_0224E554
+.extern MOD06_0224E764
+.extern MOD06_0224E7C4
+.extern MOD06_0224F12C
+.extern MOD20_02252534
+.extern MOD20_02252538
+.extern MOD11_022567E0
.extern FX_Atan2
.extern FX_AtanTable_
.extern FX_Div
@@ -3345,21 +3389,18 @@
.extern MATH_CalcCRC16CCITT
.extern MATH_CalcCRC32
.extern MATH_CalcCRC8
-.extern MATH_CalcHMACSHA1
+.extern DGT_Hash2CalcHmac
.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 DGTi_Hash2CalcHmac
.extern MIC_DoSamplingAsync
.extern MIC_GetLastSamplingAddress
.extern MIC_Init
@@ -3842,6 +3883,7 @@
.extern sys_writec
.extern tempName_NNS_FndAllocFromExpHeapEx
.extern tempName_NNS_FndCreateExpHeapEx
+.extern __global_destructor_chain
.extern thunk_FUN_02096e4c
.extern thunk_FUN_02097190
.extern thunk_FUN_020995dc
@@ -3854,9 +3896,9 @@
.extern wcslen
.extern FUN_0200CA98
.extern FUN_020C5D8C
-.extern FUN_021D7A20
-.extern FUN_021D7A28
-.extern FUN_021E8648
+.extern MOD05_021D7A20
+.extern MOD05_021D7A28
+.extern MOD05_021E8648
.extern GX_GetBankForBGExtPltt
.extern GX_GetBankForBGExtPltt_2
.extern GX_GetBankForSubOBJ
@@ -4296,40 +4338,40 @@
.extern FUN_020BBC34
.extern FUN_020BC094
.extern FUN_020BC4C8
-.extern FUN_0223BA04
-.extern FUN_0223BE70
-.extern FUN_0223C08C
-.extern FUN_0223CDB8
-.extern FUN_0223D8F4
-.extern FUN_0223DC98
-.extern FUN_0223DCB4
-.extern FUN_0223DCD0
-.extern FUN_0223E2C4
-.extern FUN_0223E2DC
-.extern FUN_02242404
-.extern FUN_022426AC
-.extern FUN_02249B7C
-.extern FUN_0224A130
-.extern FUN_0224A6B8
-.extern FUN_0224A6FC
-.extern FUN_0224A8D4
-.extern FUN_0224AA40
-.extern FUN_0224ADF8
-.extern FUN_0224AEE8
-.extern FUN_0224AF68
-.extern FUN_0224ED94
-.extern FUN_0224EDA8
-.extern FUN_0224F0BC
-.extern FUN_0224F0D0
-.extern FUN_02252440
-.extern FUN_02252448
-.extern FUN_022524BC
-.extern FUN_022524D0
-.extern FUN_022524DC
-.extern FUN_022524F4
-.extern FUN_02252504
-.extern FUN_02254A68
-.extern FUN_02254AB8
+.extern MOD06_0223BA04
+.extern MOD06_0223BE70
+.extern MOD06_0223C08C
+.extern MOD06_0223CDB8
+.extern MOD18_0223D8F4
+.extern MOD18_0223DC98
+.extern MOD18_0223DCB4
+.extern MOD18_0223DCD0
+.extern MOD18_0223E2C4
+.extern MOD18_0223E2DC
+.extern MOD06_02242404
+.extern MOD06_022426AC
+.extern MOD06_02249B7C
+.extern MOD06_0224A130
+.extern MOD06_0224A6B8
+.extern MOD06_0224A6FC
+.extern MOD06_0224A8D4
+.extern MOD06_0224AA40
+.extern MOD06_0224ADF8
+.extern MOD06_0224AEE8
+.extern MOD06_0224AF68
+.extern MOD06_0224ED94
+.extern MOD06_0224EDA8
+.extern MOD06_0224F0BC
+.extern MOD06_0224F0D0
+.extern MOD19_02252440
+.extern MOD20_02252448
+.extern MOD20_022524BC
+.extern MOD20_022524D0
+.extern MOD20_022524DC
+.extern MOD19_022524F4
+.extern MOD19_02252504
+.extern MOD51_02254A68
+.extern MOD51_02254AB8
.extern FX_Atan
.extern G3X_SetEdgeColorTable
.extern G3X_SetFogTable
@@ -4371,7 +4413,7 @@
.extern FUN_02055648
.extern FUN_02058544
.extern FUN_02061208
-.extern FUN_0223BD14
+.extern MOD06_0223BD14
.extern FUN_02001328
.extern FUN_020021EC
.extern FUN_020090FC
@@ -4551,83 +4593,83 @@
.extern FUN_02089368
.extern FUN_02089394
.extern FUN_020BC02C
-.extern FUN_021D80E4
-.extern FUN_021D9320
-.extern FUN_021D94B4
-.extern FUN_021D9510
-.extern FUN_021DA03C
-.extern FUN_021DA080
-.extern FUN_021DA0DC
-.extern FUN_021DA0E0
-.extern FUN_021DA0E8
-.extern FUN_021DA118
-.extern FUN_021DA138
-.extern FUN_021DA1A0
-.extern FUN_021DA1A4
-.extern FUN_021DA1A8
-.extern FUN_021DA20C
-.extern FUN_021DA4BC
-.extern FUN_021DB44C
-.extern FUN_021DB4B0
-.extern FUN_021DB52C
-.extern FUN_021DB53C
-.extern FUN_021DBA40
-.extern FUN_021DBA78
-.extern FUN_021DBAA0
-.extern FUN_021E4BE8
-.extern FUN_021E4C00
-.extern FUN_021E4C08
-.extern FUN_021E4C20
-.extern FUN_021E4C24
-.extern FUN_021E4C6C
-.extern FUN_021E4DC4
-.extern FUN_021E4E90
-.extern FUN_021E4EE4
-.extern FUN_021E4EFC
-.extern FUN_021E506C
-.extern FUN_021E5078
-.extern FUN_021E5094
-.extern FUN_021E50A0
-.extern FUN_021E50AC
-.extern FUN_021E50C8
-.extern FUN_021E50D4
-.extern FUN_021E5114
-.extern FUN_021E5198
-.extern FUN_021E51EC
-.extern FUN_021E5224
-.extern FUN_021E5260
-.extern FUN_021E5294
-.extern FUN_021E7C80
-.extern FUN_021E7E9C
-.extern FUN_021E7EC0
-.extern FUN_021E7ECC
-.extern FUN_021E7EEC
-.extern FUN_021E8698
-.extern FUN_021F0514
-.extern FUN_021F1C1C
-.extern FUN_021F1C30
-.extern FUN_021F1E64
-.extern FUN_021F220C
-.extern FUN_021F51D0
-.extern FUN_021F522C
-.extern FUN_021F5268
-.extern FUN_021F52C8
-.extern FUN_021F531C
-.extern FUN_021F5348
-.extern FUN_021F5358
-.extern FUN_021F5384
-.extern FUN_021F53BC
-.extern FUN_021F53F8
-.extern FUN_021F5400
-.extern FUN_021F5424
-.extern FUN_021F5430
-.extern FUN_021F54CC
-.extern FUN_021F54D0
-.extern FUN_021F54D8
-.extern FUN_021F61F4
-.extern FUN_021F6234
-.extern FUN_021F6240
-.extern FUN_021F6254
+.extern MOD05_021D80E4
+.extern MOD05_021D9320
+.extern MOD05_021D94B4
+.extern MOD05_021D9510
+.extern MOD05_021DA03C
+.extern MOD05_021DA080
+.extern MOD05_021DA0DC
+.extern MOD05_021DA0E0
+.extern MOD05_021DA0E8
+.extern MOD05_021DA118
+.extern MOD05_021DA138
+.extern MOD05_021DA1A0
+.extern MOD05_021DA1A4
+.extern MOD05_021DA1A8
+.extern MOD05_021DA20C
+.extern MOD05_021DA4BC
+.extern MOD05_021DB44C
+.extern MOD05_021DB4B0
+.extern MOD05_021DB52C
+.extern MOD05_021DB53C
+.extern MOD05_021DBA40
+.extern MOD05_021DBA78
+.extern MOD05_021DBAA0
+.extern MOD05_021E4BE8
+.extern MOD05_021E4C00
+.extern MOD05_021E4C08
+.extern MOD05_021E4C20
+.extern MOD05_021E4C24
+.extern MOD05_021E4C6C
+.extern MOD05_021E4DC4
+.extern MOD05_021E4E90
+.extern MOD05_021E4EE4
+.extern MOD05_021E4EFC
+.extern MOD05_021E506C
+.extern MOD05_021E5078
+.extern MOD05_021E5094
+.extern MOD05_021E50A0
+.extern MOD05_021E50AC
+.extern MOD05_021E50C8
+.extern MOD05_021E50D4
+.extern MOD05_021E5114
+.extern MOD05_021E5198
+.extern MOD05_021E51EC
+.extern MOD05_021E5224
+.extern MOD05_021E5260
+.extern MOD05_021E5294
+.extern MOD05_021E7C80
+.extern MOD05_021E7E9C
+.extern MOD05_021E7EC0
+.extern MOD05_021E7ECC
+.extern MOD05_021E7EEC
+.extern MOD05_021E8698
+.extern MOD05_021F0514
+.extern MOD05_021F1C1C
+.extern MOD05_021F1C30
+.extern MOD05_021F1E64
+.extern MOD05_021F220C
+.extern MOD05_021F51D0
+.extern MOD05_021F522C
+.extern MOD05_021F5268
+.extern MOD05_021F52C8
+.extern MOD05_021F531C
+.extern MOD05_021F5348
+.extern MOD05_021F5358
+.extern MOD05_021F5384
+.extern MOD05_021F53BC
+.extern MOD05_021F53F8
+.extern MOD05_021F5400
+.extern MOD05_021F5424
+.extern MOD05_021F5430
+.extern MOD05_021F54CC
+.extern MOD05_021F54D0
+.extern MOD05_021F54D8
+.extern MOD05_021F61F4
+.extern MOD05_021F6234
+.extern MOD05_021F6240
+.extern MOD05_021F6254
.extern FUN_020031B8
.extern FUN_02003204
.extern FUN_020039E8
@@ -4692,14 +4734,14 @@
.extern FUN_02069FB0
.extern FUN_02085FF4
.extern FUN_02086018
-.extern FUN_02230078
-.extern FUN_02230080
-.extern FUN_022300CC
-.extern FUN_022312D0
-.extern FUN_02231504
-.extern FUN_02231534
-.extern FUN_02231678
-.extern FUN_02233560
+.extern MOD11_02230078
+.extern MOD11_02230080
+.extern MOD11_022300CC
+.extern MOD11_022312D0
+.extern MOD11_02231504
+.extern MOD11_02231534
+.extern MOD11_02231678
+.extern MOD12_02233560
.extern FX_Modf
.extern FUN_02002F40
.extern FUN_0200B144
@@ -4744,36 +4786,36 @@
.extern FUN_0207C2D0
.extern FUN_02083114
.extern FUN_0208315C
-.extern FUN_0222FF68
-.extern FUN_0222FF74
-.extern FUN_0222FF78
-.extern FUN_0222FF88
-.extern FUN_02230014
-.extern FUN_02230188
-.extern FUN_02230214
-.extern FUN_02230218
-.extern FUN_02230260
-.extern FUN_02230290
-.extern FUN_022302BC
-.extern FUN_02230370
-.extern FUN_02230E44
-.extern FUN_02230E54
-.extern FUN_02231238
-.extern FUN_0224C474
-.extern FUN_0225D3EC
-.extern FUN_0225D45C
-.extern FUN_0225D484
-.extern FUN_0225D508
-.extern FUN_0225D5DC
-.extern FUN_0225D648
-.extern FUN_0225D6A4
-.extern FUN_0225D714
-.extern FUN_0225D73C
-.extern FUN_0225D7B8
-.extern FUN_0225D800
-.extern FUN_0225D80C
-.extern FUN_0225D820
-.extern FUN_0225D824
+.extern MOD11_0222FF68
+.extern MOD11_0222FF74
+.extern MOD11_0222FF78
+.extern MOD11_0222FF88
+.extern MOD11_02230014
+.extern MOD11_02230188
+.extern MOD11_02230214
+.extern MOD11_02230218
+.extern MOD11_02230260
+.extern MOD11_02230290
+.extern MOD11_022302BC
+.extern MOD11_02230370
+.extern MOD11_02230E44
+.extern MOD11_02230E54
+.extern MOD11_02231238
+.extern MOD11_0224C474
+.extern MOD11_0225D3EC
+.extern MOD11_0225D45C
+.extern MOD11_0225D484
+.extern MOD11_0225D508
+.extern MOD11_0225D5DC
+.extern MOD11_0225D648
+.extern MOD11_0225D6A4
+.extern MOD11_0225D714
+.extern MOD11_0225D73C
+.extern MOD11_0225D7B8
+.extern MOD11_0225D800
+.extern MOD11_0225D80C
+.extern MOD11_0225D820
+.extern MOD11_0225D824
.extern FUN_02002BD4
.extern FUN_02002BE4
.extern FUN_02002BF4
@@ -4882,30 +4924,30 @@
.extern FUN_020799E8
.extern FUN_02079A24
.extern FUN_02087B78
-.extern FUN_021EEF0C
-.extern FUN_021EEF68
-.extern FUN_021EEF84
-.extern FUN_021EEF98
-.extern FUN_021EEF9C
-.extern FUN_021EFBF4
-.extern FUN_021EFD8C
-.extern FUN_021F45A4
-.extern FUN_021F4698
-.extern FUN_021F4A30
-.extern FUN_02211E7C
-.extern FUN_02211F5C
-.extern FUN_02212024
-.extern FUN_02212048
-.extern FUN_02212384
-.extern FUN_022123A0
-.extern FUN_022123B0
-.extern FUN_022156C0
-.extern FUN_0221590C
-.extern FUN_02215918
-.extern FUN_0221594C
-.extern FUN_02215988
-.extern FUN_02215A44
-.extern FUN_022186F0
+.extern MOD16_021EEF0C
+.extern MOD05_021EEF68
+.extern MOD16_021EEF84
+.extern MOD16_021EEF98
+.extern MOD05_021EEF9C
+.extern MOD16_021EFBF4
+.extern MOD16_021EFD8C
+.extern MOD16_021F45A4
+.extern MOD16_021F4698
+.extern MOD16_021F4A30
+.extern MOD08_02211E7C
+.extern MOD08_02211F5C
+.extern MOD08_02212024
+.extern MOD08_02212048
+.extern MOD08_02212384
+.extern MOD08_022123A0
+.extern MOD08_022123B0
+.extern MOD08_022156C0
+.extern MOD08_0221590C
+.extern MOD08_02215918
+.extern MOD08_0221594C
+.extern MOD08_02215988
+.extern MOD08_02215A44
+.extern MOD09_022186F0
.extern FX_ModS32
.extern MOD08_02228218
.extern MOD08_02228524
@@ -4936,3 +4978,837 @@
.extern MOD08_0222A494
.extern MOD08_0222A568
.extern MOD08_0222A6A4
+.extern FUN_02003084
+.extern FUN_0200317C
+.extern FUN_02003A30
+.extern FUN_02004D34
+.extern FUN_02004F64
+.extern FUN_0200C7F0
+.extern FUN_02011A90
+.extern FUN_02011AF0
+.extern FUN_02013450
+.extern FUN_0201B954
+.extern FUN_0201B9B8
+.extern FUN_02027A14
+.extern FUN_02027BDC
+.extern FUN_020799F4
+.extern FUN_02082878
+.extern FUN_02082880
+.extern FUN_020828BC
+.extern FUN_02082E64
+.extern FUN_02083130
+.extern FUN_02083170
+.extern FUN_02083228
+.extern FUN_020832A4
+.extern FUN_020832DC
+.extern FUN_020832EC
+.extern FUN_02083308
+.extern FUN_0208336C
+.extern FUN_020833D4
+.extern FUN_02083404
+.extern MOD17_021DD4F4
+.extern MOD17_021DD518
+.extern MOD17_021DD540
+.extern MOD17_021DD58C
+.extern MOD17_021DD594
+.extern MOD17_021DD59C
+.extern MOD17_021DD604
+.extern MOD05_021DD60C
+.extern MOD17_021DD620
+.extern MOD17_021DD678
+.extern MOD17_021DD6B8
+.extern MOD17_021DD6CC
+.extern MOD08_02211FF0
+.extern FUN_0202E49C
+.extern MOD08_02228574
+.extern MOD08_0222A6C8
+.extern MOD13_02223494
+.extern MOD13_02213174
+.extern MOD13_02213270
+.extern MOD13_022132CC
+.extern MOD13_02213368
+.extern MOD13_02213944
+.extern MOD13_02213CB0
+.extern MOD13_0221411C
+.extern MOD13_02214D6C
+.extern MOD13_02214F18
+.extern MOD13_02215028
+.extern MOD13_02215360
+.extern MOD13_02215474
+.extern MOD13_02219798
+.extern MOD13_02219C9C
+.extern MOD13_02219D58
+.extern MOD13_0221A794
+.extern MOD13_0221A7EC
+.extern MOD13_0221A8A4
+.extern FS_OpenFileDirect
+.extern FUN_020D9564
+.extern WM_GetNextTgid
+.extern WM_ReadMPData
+.extern WM_StartMPEx
+.extern FUN_020A8358
+.extern FUN_020A83D0
+.extern FUN_020A846C
+.extern FUN_020A84D8
+.extern disableBankForX_
+.extern FS_ChangeDir
+.extern FS_InitArchive
+.extern FS_LoadArchive
+.extern FS_RegisterArchiveName
+.extern FS_SetArchiveProc
+.extern FS_UnloadArchiveTables
+.extern FUN_0200D06C
+.extern FUN_02013870
+.extern FUN_02013974
+.extern FUN_020139B0
+.extern FUN_02013A58
+.extern FUN_02021E8C
+.extern FUN_0208540C
+.extern FUN_02085424
+.extern FUN_02085428
+.extern FUN_0208545C
+.extern FUN_020854A0
+.extern FUN_02088F0C
+.extern FUN_02088F4C
+.extern FUN_020892C4
+.extern FUN_020892CC
+.extern FUN_020892EC
+.extern FUN_02089300
+.extern FUN_02089310
+.extern FUN_02089338
+.extern FUN_02095324
+.extern FUN_02095330
+.extern FUN_02095AE0
+.extern FUN_02095B0C
+.extern FUN_02095BB0
+.extern FUN_02095BE0
+.extern FUN_02095CDC
+.extern FUN_02095D68
+.extern FUN_02096190
+.extern FUN_020967A4
+.extern FUN_020B5C88
+.extern FUN_020B5CE4
+.extern FUN_020B5D3C
+.extern FUN_020B5E50
+.extern FUN_020B6180
+.extern FUN_020B6240
+.extern FUN_020B62F8
+.extern FUN_020B6388
+.extern FUN_020B63CC
+.extern FUN_020B7168
+.extern FUN_020B7218
+.extern FUN_020C2444
+.extern FUN_020C5E04
+.extern FS_LoadArchiveTables
+.extern FS_UnloadArchive
+.extern FS_ReleaseArchiveName
+.extern MOD04_021EB9A4
+.extern MOD04_021EB9D8
+.extern MOD04_021EBAE8
+.extern MOD04_021EBB80
+.extern MOD04_021EBC60
+.extern FUN_020051EC
+.extern FUN_02006D18
+.extern FUN_020081A8
+.extern FUN_02011938
+.extern FUN_02011A00
+.extern FUN_02013CD4
+.extern FUN_02013D18
+.extern FUN_02013D5C
+.extern FUN_02024594
+.extern FUN_020246DC
+.extern FUN_02024748
+.extern FUN_020247C8
+.extern FUN_0202484C
+.extern FUN_020248BC
+.extern FUN_02024D00
+.extern FUN_02024D58
+.extern FUN_0208A328
+.extern FUN_0208A32C
+.extern FUN_0208A330
+.extern FUN_0208A334
+.extern FUN_020AEAF4
+.extern FUN_020AEC60
+.extern FUN_020AEDF4
+.extern G2x_SetBlendBrightnessExt_
+.extern FUN_02002F90
+.extern FUN_02004C80
+.extern FUN_02004CA4
+.extern FUN_02004CAC
+.extern FUN_02004CB4
+.extern FUN_02004CFC
+.extern FUN_02004D04
+.extern FUN_02004D20
+.extern FUN_02004D4C
+.extern FUN_02004E80
+.extern FUN_02004E8C
+.extern FUN_02004E98
+.extern FUN_02004F28
+.extern FUN_02004F70
+.extern FUN_02007EEC
+.extern FUN_0200955C
+.extern FUN_02011A30
+.extern FUN_02013D98
+.extern FUN_02013DD4
+.extern FUN_02013E14
+.extern FUN_02013E44
+.extern FUN_02013E84
+.extern FUN_02013EB0
+.extern FUN_02013F2C
+.extern FUN_0201AB24
+.extern FUN_0201AF08
+.extern FUN_0201AF50
+.extern FUN_0201BBD0
+.extern FUN_0201BC84
+.extern FUN_020202A8
+.extern FUN_02020300
+.extern FUN_020203CC
+.extern FUN_0206B88C
+.extern FUN_0206B898
+.extern FUN_02087B98
+.extern FUN_02087BB8
+.extern FUN_02087BD8
+.extern FUN_02087BF8
+.extern MOD11_0222FF84
+.extern MOD11_0222FFC8
+.extern MOD11_0223022C
+.extern MOD11_02230270
+.extern MOD11_02243420
+.extern MOD11_02244248
+.extern MOD11_02245D38
+.extern MOD11_02246274
+.extern MOD11_022465A0
+.extern MOD11_02246870
+.extern MOD11_02246B9C
+.extern MOD11_02246D1C
+.extern MOD11_022473F8
+.extern MOD11_022476C0
+.extern MOD11_022482A4
+.extern MOD11_02249D90
+.extern MOD11_02249E04
+.extern MOD11_02249E58
+.extern MOD11_0224B310
+.extern MOD11_0224C12C
+.extern FSi_ExecuteSyncCommand
+.extern FSi_InitRom
+.extern FSi_SendCommand
+.extern FSi_TranslateCommand
+.extern FS_NotifyArchiveAsyncEnd
+.extern FS_ResumeArchive
+.extern FS_SuspendArchive
+.extern FS_ReadFileAsync
+.extern FSi_ReleaseCommand
+.extern FX_DivS32
+.extern G2x_ChangeBlendBrightness_
+.extern GX_DisableBankForARM7
+.extern GX_DisableBankForBGExtPltt
+.extern GX_DisableBankForClearImage
+.extern GX_DisableBankForOBJExtPltt
+.extern GX_DisableBankForOBJExtPltt_2
+.extern GX_DisableBankForSubBGExtPltt
+.extern GX_DisableBankForSubOBJExtPltt
+.extern GX_DisableBankForSubOBJExtPltt_2
+.extern GX_DisableBankForTexPltt
+.extern GX_DisableBankForTexPltt_2
+.extern GX_SetBankForARM7
+.extern OS_WaitVBlankIntr
+.extern PM_GetLEDPattern
+.extern PMi_SendLEDPatternCommand
+.extern swprintf
+.extern WM_EndKeySharing
+.extern WM_GetOtherElements
+.extern WM_ReadStatus
+.extern WM_SetWEPKeyEx2
+.extern WM_StartDataSharing
+.extern WM_StartKeySharing
+.extern WM_StepDataSharing
+.extern FUN_02002218
+.extern FUN_02006A34
+.extern FUN_02006A8C
+.extern FUN_02006AE4
+.extern FUN_02006B38
+.extern FUN_02006C30
+.extern FUN_02006C5C
+.extern FUN_02018F4C
+.extern FUN_02019270
+.extern FUN_0201928C
+.extern FUN_020192B8
+.extern FUN_02019684
+.extern FUN_02020240
+.extern FUN_0202032C
+.extern FUN_02020334
+.extern FUN_02020A40
+.extern FUN_02020AB0
+.extern FUN_02021B04
+.extern FUN_020220C4
+.extern FUN_02022144
+.extern FUN_020669BC
+.extern FUN_02066A6C
+.extern FUN_02066A94
+.extern FUN_02068824
+.extern FUN_0206885C
+.extern FUN_02068A44
+.extern FUN_02068B70
+.extern FUN_020690C8
+.extern FUN_02069ECC
+.extern FUN_0206B2B0
+.extern FUN_0206B2FC
+.extern FUN_0206B43C
+.extern FUN_0206B458
+.extern FUN_0206B4B4
+.extern FUN_0206B4E4
+.extern FUN_0206B598
+.extern FUN_0206B668
+.extern FUN_0206B688
+.extern FUN_0206BB48
+.extern FUN_0206E108
+.extern FUN_0206E10C
+.extern FUN_0206E768
+.extern FUN_020B1A1C
+.extern G3X_ResetMtxStack_2
+.extern FUN_0200825C
+.extern FUN_02013DEC
+.extern FUN_02001658
+.extern FUN_02001B80
+.extern FUN_02004928
+.extern FUN_02009BB8
+.extern FUN_0200B2E0
+.extern FUN_0200B318
+.extern FUN_0200E31C
+.extern FUN_020128C4
+.extern FUN_0201B21C
+.extern FUN_0201D2AC
+.extern FUN_0201E1B4
+.extern FUN_02020184
+.extern FUN_0202595C
+.extern FUN_02025960
+.extern FUN_02025964
+.extern FUN_02025C00
+.extern FUN_02025C18
+.extern FUN_02025C38
+.extern FUN_02025CD8
+.extern FUN_02025D40
+.extern FUN_02025D48
+.extern FUN_02025DC8
+.extern FUN_02025DD4
+.extern FUN_02025EDC
+.extern FUN_02025F0C
+.extern FUN_02025F30
+.extern FUN_02025F44
+.extern FUN_02025F80
+.extern FUN_02025F98
+.extern FUN_02025FA4
+.extern FUN_02025FD8
+.extern FUN_02026050
+.extern FUN_02026068
+.extern FUN_02026074
+.extern FUN_02026080
+.extern FUN_0202616C
+.extern FUN_02026188
+.extern FUN_02026194
+.extern FUN_020261C8
+.extern FUN_0202623C
+.extern FUN_02026258
+.extern FUN_02026264
+.extern FUN_0202630C
+.extern FUN_02026354
+.extern FUN_02026370
+.extern FUN_0202639C
+.extern FUN_020263C8
+.extern FUN_020263F4
+.extern FUN_02026444
+.extern FUN_02026450
+.extern FUN_02026470
+.extern FUN_02026490
+.extern FUN_0202649C
+.extern FUN_020264F0
+.extern FUN_020264FC
+.extern FUN_0202651C
+.extern FUN_0202653C
+.extern FUN_02026548
+.extern FUN_02026554
+.extern FUN_020265B8
+.extern FUN_020265E0
+.extern FUN_02026600
+.extern FUN_02026620
+.extern FUN_02026634
+.extern FUN_02026648
+.extern FUN_02026654
+.extern FUN_02026664
+.extern FUN_02026688
+.extern FUN_020266D4
+.extern FUN_020266E0
+.extern FUN_02026714
+.extern FUN_0202671C
+.extern FUN_02026778
+.extern FUN_02026874
+.extern FUN_020268A0
+.extern FUN_020268E8
+.extern FUN_02026940
+.extern FUN_02026A0C
+.extern FUN_02026A58
+.extern FUN_02026A9C
+.extern FUN_02026AE8
+.extern FUN_02026B20
+.extern FUN_02026B58
+.extern FUN_02026B90
+.extern FUN_02026C38
+.extern FUN_02026C68
+.extern FUN_02026C88
+.extern FUN_02026C90
+.extern FUN_02026C98
+.extern FUN_02026CA0
+.extern FUN_02026CA8
+.extern FUN_02026CC0
+.extern FUN_02029160
+.extern FUN_0202916C
+.extern FUN_0202D31C
+.extern FUN_0202D344
+.extern FUN_0202D380
+.extern FUN_0202DEC0
+.extern FUN_0202DEF4
+.extern FUN_0202E068
+.extern FUN_020307A8
+.extern FUN_020307BC
+.extern FUN_020307D0
+.extern FUN_0203086C
+.extern FUN_02031000
+.extern FUN_0203105C
+.extern FUN_02031354
+.extern FUN_020318A4
+.extern FUN_020335A4
+.extern FUN_02049824
+.extern FUN_02049CB0
+.extern FUN_0204CAA0
+.extern FUN_0204CAB0
+.extern FUN_0204CAC0
+.extern FUN_0204CAD0
+.extern FUN_0204CAF0
+.extern FUN_0204CB00
+.extern FUN_0204CB10
+.extern FUN_0204CB20
+.extern FUN_0204CC48
+.extern FUN_0204CC9C
+.extern FUN_0204CCE0
+.extern FUN_0204CDB4
+.extern FUN_0204CF60
+.extern FUN_0204D118
+.extern FUN_0204D168
+.extern FUN_0204D320
+.extern FUN_0204D610
+.extern FUN_0204D76C
+.extern FUN_0204D830
+.extern FUN_0204E1E8
+.extern FUN_0204E200
+.extern FUN_0204E214
+.extern FUN_0204E254
+.extern FUN_0204E34C
+.extern FUN_0204E35C
+.extern FUN_0204E3A4
+.extern FUN_0204E3EC
+.extern FUN_0204E440
+.extern FUN_0204E494
+.extern FUN_0204E4B4
+.extern FUN_0204E4D4
+.extern FUN_0204E50C
+.extern FUN_0204E544
+.extern FUN_0204E598
+.extern FUN_0204E5EC
+.extern FUN_0204E60C
+.extern FUN_0204E62C
+.extern FUN_0204E664
+.extern FUN_0204E69C
+.extern FUN_0204E6CC
+.extern FUN_0204E6FC
+.extern FUN_0204E758
+.extern FUN_0204E778
+.extern FUN_0204E794
+.extern FUN_0204E7CC
+.extern FUN_0204E8B0
+.extern FUN_0204EAD8
+.extern FUN_0204EB14
+.extern FUN_0204EE9C
+.extern FUN_0204EEBC
+.extern FUN_0204F074
+.extern FUN_0204F08C
+.extern FUN_0204F0A8
+.extern FUN_0204F0C8
+.extern FUN_0204F1B0
+.extern FUN_0204F210
+.extern FUN_0204F610
+.extern FUN_0204F63C
+.extern FUN_0204F660
+.extern FUN_0204F678
+.extern FUN_0204F69C
+.extern FUN_0204F6C8
+.extern FUN_0204F70C
+.extern FUN_0204F72C
+.extern FUN_0204F74C
+.extern FUN_0204F774
+.extern FUN_0204F7D4
+.extern FUN_0204F7E4
+.extern FUN_0204F7FC
+.extern FUN_0204FB14
+.extern FUN_0204FCF4
+.extern FUN_0204FD24
+.extern FUN_0204FD38
+.extern FUN_0204FDE4
+.extern FUN_0205537C
+.extern FUN_0205EB38
+.extern FUN_0205EBEC
+.extern FUN_0205EC18
+.extern FUN_0205EC48
+.extern FUN_0205EC6C
+.extern FUN_0205EDAC
+.extern FUN_0205EDBC
+.extern FUN_0205EDCC
+.extern FUN_0205EDD8
+.extern FUN_0205EDE8
+.extern FUN_0205F730
+.extern FUN_0205F750
+.extern FUN_0205F770
+.extern FUN_0206151C
+.extern FUN_02061B0C
+.extern FUN_020BB408
+.extern MOD05_021D8024
+.extern MOD05_021D80A4
+.extern MOD05_021E53B4
+.extern MOD05_021E5420
+.extern MOD05_021E5D0C
+.extern MOD05_021E5E8C
+.extern MOD05_021E7C1C
+.extern MOD05_021EF4F8
+.extern MOD05_021F0318
+.extern MOD05_021F043C
+.extern MOD05_021F04F8
+.extern MOD05_021F4CD4
+.extern FUN_02006948
+.extern FUN_02006C88
+.extern FUN_02020A6C
+.extern FUN_02012690
+.extern FUN_02020BF4
+.extern FUN_02020BFC
+.extern FUN_020893F0
+.extern FUN_02089418
+.extern FUN_02069B60
+.extern FUN_02089444
+.extern FUN_0208946C
+.extern MOD20_02252978
+.extern MOD20_02253AA4
+.extern MOD20_02252B68
+.extern MOD20_02252C08
+.extern MOD20_02253794
+.extern MOD20_022537B8
+.extern MOD20_02252B48
+.extern MOD20_02252C40
+.extern MOD20_022538BC
+.extern MOD20_02252B28
+.extern MOD20_02252D24
+.extern MOD20_022538A4
+.extern MOD20_022538A8
+.extern MOD20_022538AC
+.extern MOD20_022538B0
+.extern MOD20_02253E74
+.extern MOD20_02253F14
+.extern MOD20_02253F28
+.extern MOD20_02253F78
+.extern MOD20_02253FBC
+.extern MOD20_02254014
+.extern MOD20_022542AC
+.extern MOD20_0225298C
+.extern MOD20_022529A0
+.extern MOD20_02252C14
+.extern MOD20_02252D34
+.extern MOD20_02252D7C
+.extern MOD20_022536F4
+.extern MOD20_022537E0
+.extern MOD20_02253888
+.extern MOD20_022538A0
+.extern MOD20_02254130
+.extern MOD20_02254198
+.extern MOD20_02252DB4
+.extern MOD11_02252DB4
+.extern FUN_02039754
+.extern MOD20_02252C30
+.extern MOD20_02252C38
+.extern MOD20_02252DEC
+.extern MOD20_022538B8
+.extern MOD20_02253F44
+.extern MOD20_02252C34
+.extern FUN_0204C0CC
+.extern FUN_0204C0D4
+.extern FUN_0204C0E8
+.extern MOD20_022529B4
+.extern MOD20_02252C3C
+.extern MOD20_0225396C
+.extern MOD20_02253F80
+.extern MOD20_022539C4
+.extern MOD20_02253F64
+.extern MOD20_02253F9C
+.extern MOD20_02253FA4
+.extern FUN_02020A98
+.extern FUN_02020ACC
+.extern FUN_0204BF14
+.extern FUN_0204BF1C
+.extern FUN_0204BF44
+.extern FUN_0204BF84
+.extern FUN_0204BF88
+.extern FUN_020893E0
+.extern FUN_020B0830
+.extern FUN_020B0888
+.extern FUN_020B0D58
+.extern FUN_020B1AF8
+.extern FUN_02013E5C
+.extern FUN_02013ECC
+.extern FUN_02013EF0
+.extern FUN_02013F0C
+.extern FUN_02014590
+.extern FUN_020145A8
+.extern FUN_020145C8
+.extern FUN_0201466C
+.extern FUN_020146C4
+.extern FUN_0201D324
+.extern FUN_0201E1C8
+.extern FUN_0201FD98
+.extern FUN_02020AE8
+.extern FUN_02020C44
+.extern FUN_02020C90
+.extern FUN_02020CB0
+.extern FUN_02020CD4
+.extern FUN_0202714C
+.extern FUN_020272D4
+.extern FUN_02027310
+.extern FUN_02027348
+.extern FUN_02027380
+.extern FUN_02027448
+.extern FUN_020274F0
+.extern FUN_02027528
+.extern FUN_02027564
+.extern FUN_02027590
+.extern FUN_0202766C
+.extern FUN_02027778
+.extern FUN_020277B4
+.extern FUN_02027A58
+.extern FUN_02027A94
+.extern FUN_02027AC4
+.extern FUN_02027B0C
+.extern FUN_02027B44
+.extern FUN_02027B78
+.extern FUN_02027C28
+.extern FUN_02027C58
+.extern FUN_02027CA0
+.extern FUN_02027CA8
+.extern FUN_02027CB0
+.extern FUN_02027CB8
+.extern FUN_02027CF8
+.extern FUN_02027CFC
+.extern FUN_02027D00
+.extern FUN_02027D04
+.extern FUN_02083268
+.extern FUN_02083298
+.extern FUN_02083A34
+.extern FUN_02083A7C
+.extern FUN_020254F0
+.extern FUN_020254F8
+.extern FUN_0202EF70
+.extern FUN_02052CF0
+.extern FUN_02015E3C
+.extern FUN_020226FC
+.extern FUN_020227DC
+.extern FUN_020237A0
+.extern FUN_020237CC
+.extern FUN_020237FC
+.extern FUN_02023840
+.extern FUN_020238A4
+.extern FUN_020239B8
+.extern FUN_02023A14
+.extern FUN_02024F9C
+.extern FUN_020250C4
+.extern FUN_020377E0
+.extern FUN_0206007C
+.extern FUN_0201CD38
+.extern FUN_020294A8
+.extern FUN_0202EEB0
+.extern MOD08_02217E80
+.extern MOD08_02217ECC
+.extern MOD08_02217F08
+.extern MOD08_0222A02C
+.extern FUN_0200C6D8
+.extern FUN_02029CA4
+.extern FUN_02029CF4
+.extern FUN_02029CF8
+.extern FUN_02029D40
+.extern FUN_02029D84
+.extern FUN_02085D9C
+.extern FUN_02085FAC
+.extern FUN_02031370
+.extern FUN_02016B44
+.extern FUN_02017BD0
+.extern FUN_0201ED5C
+.extern FUN_0201EE2C
+.extern FUN_0201EFB4
+.extern FUN_0201F05C
+.extern FUN_0200A064
+.extern FUN_0200C918
+.extern FUN_02031388
+.extern FUN_02052F8C
+.extern FUN_02083D48
+.extern FUN_02026FE0
+.extern FUN_02027D7C
+.extern FUN_0202888C
+.extern FUN_020288AC
+.extern FUN_020013C8
+.extern FUN_02001538
+.extern FUN_02004828
+.extern FUN_0200DC24
+.extern FUN_0201291C
+.extern FUN_020281E8
+.extern FUN_0202858C
+.extern FUN_020285D0
+.extern FUN_0202DB14
+.extern FUN_0202DBA4
+.extern FUN_02032FDC
+.extern FUN_0203300C
+.extern FUN_02033128
+.extern FUN_02033138
+.extern FUN_02033154
+.extern FUN_02033180
+.extern FUN_020331C4
+.extern FUN_020331E8
+.extern FUN_02033208
+.extern FUN_0203323C
+.extern FUN_02033250
+.extern FUN_0203346C
+.extern FUN_020334DC
+.extern FUN_02088858
+.extern FUN_02088868
+.extern MOD04_021D80E0
+.extern MOD04_021D83D4
+.extern MOD04_021D8478
+.extern MOD04_021D8480
+.extern MOD04_021D853C
+.extern MOD04_021D861C
+.extern MOD04_021D8640
+.extern MOD04_021D8678
+.extern FUN_020294F4
+.extern FUN_02021C38
+.extern FUN_0202822C
+.extern FUN_020282E8
+.extern FUN_020283C0
+.extern FUN_020283E8
+.extern FUN_02033918
+.extern FUN_02096D68
+.extern FUN_02096E24
+.extern FUN_0202B390
+.extern FUN_0202B3F8
+.extern FUN_0202BCF4
+.extern FUN_020328E4
+.extern FUN_020336C0
+.extern FUN_020336C8
+.extern FUN_020536C8
+.extern FUN_02053708
+.extern FUN_02066840
+.extern FUN_02084098
+.extern FUN_020048A0
+.extern FUN_020048BC
+.extern FUN_02014630
+.extern FUN_02024EF4
+.extern FUN_02004D60
+.extern FUN_020181EC
+.extern FUN_02024FD8
+.extern FUN_02024FE0
+.extern FUN_02025010
+.extern FUN_02025018
+.extern FUN_02025034
+.extern FUN_02025048
+.extern FUN_02025050
+.extern FUN_02025064
+.extern FUN_0202506C
+.extern FUN_0202508C
+.extern SDK_OVERLAY_MODULE_00_ID
+.extern SDK_OVERLAY_MODULE_01_ID
+.extern SDK_OVERLAY_MODULE_02_ID
+.extern SDK_OVERLAY_MODULE_03_ID
+.extern SDK_OVERLAY_MODULE_04_ID
+.extern SDK_OVERLAY_MODULE_05_ID
+.extern SDK_OVERLAY_MODULE_06_ID
+.extern SDK_OVERLAY_MODULE_07_ID
+.extern SDK_OVERLAY_MODULE_08_ID
+.extern SDK_OVERLAY_MODULE_09_ID
+.extern SDK_OVERLAY_MODULE_10_ID
+.extern SDK_OVERLAY_MODULE_11_ID
+.extern SDK_OVERLAY_MODULE_12_ID
+.extern SDK_OVERLAY_MODULE_13_ID
+.extern SDK_OVERLAY_MODULE_14_ID
+.extern SDK_OVERLAY_MODULE_15_ID
+.extern SDK_OVERLAY_MODULE_16_ID
+.extern SDK_OVERLAY_MODULE_17_ID
+.extern SDK_OVERLAY_MODULE_18_ID
+.extern SDK_OVERLAY_MODULE_19_ID
+.extern SDK_OVERLAY_MODULE_20_ID
+.extern SDK_OVERLAY_MODULE_21_ID
+.extern SDK_OVERLAY_MODULE_22_ID
+.extern SDK_OVERLAY_MODULE_23_ID
+.extern SDK_OVERLAY_MODULE_24_ID
+.extern SDK_OVERLAY_MODULE_25_ID
+.extern SDK_OVERLAY_MODULE_26_ID
+.extern SDK_OVERLAY_MODULE_27_ID
+.extern SDK_OVERLAY_MODULE_28_ID
+.extern SDK_OVERLAY_MODULE_29_ID
+.extern SDK_OVERLAY_MODULE_30_ID
+.extern SDK_OVERLAY_MODULE_31_ID
+.extern SDK_OVERLAY_MODULE_32_ID
+.extern SDK_OVERLAY_MODULE_33_ID
+.extern SDK_OVERLAY_MODULE_34_ID
+.extern SDK_OVERLAY_MODULE_35_ID
+.extern SDK_OVERLAY_MODULE_36_ID
+.extern SDK_OVERLAY_MODULE_37_ID
+.extern SDK_OVERLAY_MODULE_38_ID
+.extern SDK_OVERLAY_MODULE_39_ID
+.extern SDK_OVERLAY_MODULE_40_ID
+.extern SDK_OVERLAY_MODULE_41_ID
+.extern SDK_OVERLAY_MODULE_42_ID
+.extern SDK_OVERLAY_MODULE_43_ID
+.extern SDK_OVERLAY_MODULE_44_ID
+.extern SDK_OVERLAY_MODULE_45_ID
+.extern SDK_OVERLAY_MODULE_46_ID
+.extern SDK_OVERLAY_MODULE_47_ID
+.extern SDK_OVERLAY_MODULE_48_ID
+.extern SDK_OVERLAY_MODULE_49_ID
+.extern SDK_OVERLAY_MODULE_50_ID
+.extern SDK_OVERLAY_MODULE_51_ID
+.extern SDK_OVERLAY_MODULE_52_ID
+.extern SDK_OVERLAY_MODULE_53_ID
+.extern SDK_OVERLAY_MODULE_54_ID
+.extern SDK_OVERLAY_MODULE_55_ID
+.extern SDK_OVERLAY_MODULE_56_ID
+.extern SDK_OVERLAY_MODULE_57_ID
+.extern SDK_OVERLAY_MODULE_58_ID
+.extern SDK_OVERLAY_MODULE_59_ID
+.extern SDK_OVERLAY_MODULE_60_ID
+.extern SDK_OVERLAY_MODULE_61_ID
+.extern SDK_OVERLAY_MODULE_62_ID
+.extern SDK_OVERLAY_MODULE_63_ID
+.extern SDK_OVERLAY_MODULE_64_ID
+.extern SDK_OVERLAY_MODULE_65_ID
+.extern SDK_OVERLAY_MODULE_66_ID
+.extern SDK_OVERLAY_MODULE_67_ID
+.extern SDK_OVERLAY_MODULE_68_ID
+.extern SDK_OVERLAY_MODULE_69_ID
+.extern SDK_OVERLAY_MODULE_70_ID
+.extern SDK_OVERLAY_MODULE_71_ID
+.extern SDK_OVERLAY_MODULE_72_ID
+.extern SDK_OVERLAY_MODULE_73_ID
+.extern SDK_OVERLAY_MODULE_74_ID
+.extern SDK_OVERLAY_MODULE_75_ID
+.extern SDK_OVERLAY_MODULE_76_ID
+.extern SDK_OVERLAY_MODULE_77_ID
+.extern SDK_OVERLAY_MODULE_78_ID
+.extern SDK_OVERLAY_MODULE_79_ID
+.extern SDK_OVERLAY_MODULE_80_ID
+.extern SDK_OVERLAY_MODULE_81_ID
+.extern SDK_OVERLAY_MODULE_82_ID
+.extern SDK_OVERLAY_MODULE_83_ID
+.extern SDK_OVERLAY_MODULE_84_ID
+.extern SDK_OVERLAY_MODULE_85_ID
+.extern SDK_OVERLAY_MODULE_86_ID
diff --git a/arm9/lib/include/CARD_backup.h b/arm9/lib/include/CARD_backup.h
new file mode 100644
index 00000000..de594beb
--- /dev/null
+++ b/arm9/lib/include/CARD_backup.h
@@ -0,0 +1,6 @@
+#ifndef NITRO_CARD_BACKUP_H_
+#define NITRO_CARD_BACKUP_H_
+
+BOOL CARD_TryWaitBackupAsync(void);
+
+#endif //NITRO_CARD_BACKUP_H_
diff --git a/arm9/lib/include/CARD_common.h b/arm9/lib/include/CARD_common.h
new file mode 100644
index 00000000..1396de12
--- /dev/null
+++ b/arm9/lib/include/CARD_common.h
@@ -0,0 +1,6 @@
+#ifndef NITRO_CARD_COMMON_H_
+#define NITRO_CARD_COMMON_H_
+
+void CARD_Init(void);
+
+#endif //NITRO_CARD_COMMON_H_
diff --git a/arm9/lib/include/CARD_pullOut.h b/arm9/lib/include/CARD_pullOut.h
new file mode 100644
index 00000000..4a64f5ae
--- /dev/null
+++ b/arm9/lib/include/CARD_pullOut.h
@@ -0,0 +1,6 @@
+#ifndef NITRO_CARD_PULLOUT_H_
+#define NITRO_CARD_PULLOUT_H_
+
+BOOL CARD_IsPulledOut(void);
+
+#endif //NITRO_CARD_PULLOUT_H_
diff --git a/arm9/lib/include/CARD_rom.h b/arm9/lib/include/CARD_rom.h
new file mode 100644
index 00000000..4c2e9dd5
--- /dev/null
+++ b/arm9/lib/include/CARD_rom.h
@@ -0,0 +1,39 @@
+#ifndef NITRO_CARD_ROM_H_
+#define NITRO_CARD_ROM_H_
+
+#include "MI_exMemory.h"
+#include "MI_dma.h"
+
+typedef struct
+{
+ u32 offset;
+ u32 length;
+}
+CARDRomRegion;
+
+static inline const CARDRomRegion * CARD_GetRomRegionOVT(MIProcessor target)
+{
+ return (target == MI_PROCESSOR_ARM9)
+ ? (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x50)
+ : (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x58);
+}
+
+void CARDi_ReadRom(u32 dma, const void * src, void * dst, u32 len, MIDmaCallback done_cb, void * arg, BOOL is_async);
+
+static inline void CARD_ReadRomAsync(u32 dma, const void * src, void * dst, u32 len, MIDmaCallback callback, void * arg)
+{
+ CARDi_ReadRom(dma, src, dst, len, callback, arg, TRUE);
+}
+
+void CARD_LockRom(u16 lock_id);
+void CARD_UnlockRom(u16 lock_id);
+
+static inline const CARDRomRegion * CARD_GetRomRegionFNT() {
+ return (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x40);
+}
+
+static inline const CARDRomRegion * CARD_GetRomRegionFAT() {
+ return (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x48);
+}
+
+#endif //NITRO_CARD_ROM_H_
diff --git a/arm9/lib/include/CTRDG_common.h b/arm9/lib/include/CTRDG_common.h
new file mode 100644
index 00000000..c83602b8
--- /dev/null
+++ b/arm9/lib/include/CTRDG_common.h
@@ -0,0 +1,6 @@
+#ifndef NITRO_CTRDG_COMMON_H_
+#define NITRO_CTRDG_COMMON_H_
+
+BOOL CTRDG_IsPulledOut(void);
+
+#endif //NITRO_CTRDG_COMMON_H_
diff --git a/arm9/lib/include/DGT_common.h b/arm9/lib/include/DGT_common.h
new file mode 100644
index 00000000..c74ae7cd
--- /dev/null
+++ b/arm9/lib/include/DGT_common.h
@@ -0,0 +1,6 @@
+#ifndef NITRO_DGT_COMMON_H_
+#define NITRO_DGT_COMMON_H_
+
+#define DGT_HASH2_DIGEST_SIZE (160/8)
+
+#endif //NITRO_DGT_COMMON_H_
diff --git a/arm9/lib/include/DGT_dgt.h b/arm9/lib/include/DGT_dgt.h
new file mode 100644
index 00000000..1c48531c
--- /dev/null
+++ b/arm9/lib/include/DGT_dgt.h
@@ -0,0 +1,6 @@
+#ifndef NITRO_DGT_DGT_H_
+#define NITRO_DGT_DGT_H_
+
+void DGT_Hash2CalcHmac(void* digest, void* bin_ptr, int bin_len, void* key_ptr, int keylen);
+
+#endif //NITRO_DGT_DGT_H_
diff --git a/arm9/lib/include/FS_archive.h b/arm9/lib/include/FS_archive.h
new file mode 100644
index 00000000..d30081d7
--- /dev/null
+++ b/arm9/lib/include/FS_archive.h
@@ -0,0 +1,212 @@
+#ifndef NITRO_FS_ARCHIVE_H_
+#define NITRO_FS_ARCHIVE_H_
+
+#include "nitro.h"
+
+#include "OS_thread.h"
+
+struct FSFile;
+struct FSArchive;
+
+#define FS_ARCHIVE_NAME_LEN_MAX 3
+
+#define FS_ARCHIVE_FLAG_REGISTER 0x00000001
+#define FS_ARCHIVE_FLAG_LOADED 0x00000002
+#define FS_ARCHIVE_FLAG_TABLE_LOAD 0x00000004
+#define FS_ARCHIVE_FLAG_SUSPEND 0x00000008
+#define FS_ARCHIVE_FLAG_RUNNING 0x00000010
+#define FS_ARCHIVE_FLAG_CANCELING 0x00000020
+#define FS_ARCHIVE_FLAG_SUSPENDING 0x00000040
+#define FS_ARCHIVE_FLAG_UNLOADING 0x00000080
+#define FS_ARCHIVE_FLAG_IS_ASYNC 0x00000100
+#define FS_ARCHIVE_FLAG_IS_SYNC 0x00000200
+
+typedef enum {
+ FS_COMMAND_ASYNC_BEGIN = 0,
+ FS_COMMAND_READFILE = FS_COMMAND_ASYNC_BEGIN,
+ FS_COMMAND_WRITEFILE,
+ FS_COMMAND_ASYNC_END,
+
+ FS_COMMAND_SYNC_BEGIN = FS_COMMAND_ASYNC_END,
+ FS_COMMAND_SEEKDIR = FS_COMMAND_SYNC_BEGIN,
+ FS_COMMAND_READDIR,
+ FS_COMMAND_FINDPATH,
+ FS_COMMAND_GETPATH,
+ FS_COMMAND_OPENFILEFAST,
+ FS_COMMAND_OPENFILEDIRECT,
+ FS_COMMAND_CLOSEFILE,
+ FS_COMMAND_SYNC_END,
+
+ FS_COMMAND_STATUS_BEGIN = FS_COMMAND_SYNC_END,
+ FS_COMMAND_ACTIVATE = FS_COMMAND_STATUS_BEGIN,
+ FS_COMMAND_IDLE,
+ FS_COMMAND_SUSPEND,
+ FS_COMMAND_RESUME,
+ FS_COMMAND_STATUS_END,
+
+ FS_COMMAND_INVALID
+} FSCommandType;
+
+/* Asynchronous commands*/
+#define FS_ARCHIVE_PROC_READFILE (1 << FS_COMMAND_READFILE)
+#define FS_ARCHIVE_PROC_WRITEFILE (1 << FS_COMMAND_WRITEFILE)
+/* All asynchronous commands*/
+#define FS_ARCHIVE_PROC_ASYNC \
+ (FS_ARCHIVE_PROC_READFILE | FS_ARCHIVE_PROC_WRITEFILE)
+
+/* Synchronous commands*/
+#define FS_ARCHIVE_PROC_SEEKDIR (1 << FS_COMMAND_SEEKDIR)
+#define FS_ARCHIVE_PROC_READDIR (1 << FS_COMMAND_READDIR)
+#define FS_ARCHIVE_PROC_FINDPATH (1 << FS_COMMAND_FINDPATH)
+#define FS_ARCHIVE_PROC_GETPATH (1 << FS_COMMAND_GETPATH)
+#define FS_ARCHIVE_PROC_OPENFILEFAST (1 << FS_COMMAND_OPENFILEFAST)
+#define FS_ARCHIVE_PROC_OPENFILEDIRECT (1 << FS_COMMAND_OPENFILEDIRECT)
+#define FS_ARCHIVE_PROC_CLOSEFILE (1 << FS_COMMAND_CLOSEFILE)
+/* All synchronous commands*/
+#define FS_ARCHIVE_PROC_SYNC \
+ (FS_ARCHIVE_PROC_SEEKDIR | FS_ARCHIVE_PROC_READDIR | \
+ FS_ARCHIVE_PROC_FINDPATH | FS_ARCHIVE_PROC_GETPATH | \
+ FS_ARCHIVE_PROC_OPENFILEFAST | FS_ARCHIVE_PROC_OPENFILEDIRECT | FS_ARCHIVE_PROC_CLOSEFILE)
+
+/* Messages when status changes*/
+#define FS_ARCHIVE_PROC_ACTIVATE (1 << FS_COMMAND_ACTIVATE)
+#define FS_ARCHIVE_PROC_IDLE (1 << FS_COMMAND_IDLE)
+#define FS_ARCHIVE_PROC_SUSPENDING (1 << FS_COMMAND_SUSPEND)
+#define FS_ARCHIVE_PROC_RESUME (1 << FS_COMMAND_RESUME)
+/* All messages when status changes*/
+#define FS_ARCHIVE_PROC_STATUS \
+ (FS_ARCHIVE_PROC_ACTIVATE | FS_ARCHIVE_PROC_IDLE | \
+ FS_ARCHIVE_PROC_SUSPENDING | FS_ARCHIVE_PROC_RESUME)
+
+#define FS_ARCHIVE_PROC_ALL (~0)
+
+typedef enum {
+ FS_RESULT_SUCCESS = 0,
+ FS_RESULT_FAILURE,
+ FS_RESULT_BUSY,
+ FS_RESULT_CANCELED,
+ FS_RESULT_CANCELLED = FS_RESULT_CANCELED, // SDK alias
+ FS_RESULT_UNSUPPORTED,
+ FS_RESULT_ERROR,
+ FS_RESULT_PROC_ASYNC,
+ FS_RESULT_PROC_DEFAULT,
+ FS_RESULT_PROC_UNKNOWN
+}
+FSResult;
+
+typedef FSResult (*FS_ARCHIVE_READ_FUNC) (struct FSArchive *p, void *dst, u32 pos, u32 size);
+typedef FSResult (*FS_ARCHIVE_WRITE_FUNC) (struct FSArchive *p, const void *src, u32 pos, u32 size);
+typedef FSResult (*FS_ARCHIVE_PROC_FUNC) (struct FSFile *, FSCommandType);
+
+typedef struct
+{
+ struct FSFile * prev;
+ struct FSFile * next;
+}
+FSFileLink;
+
+typedef struct
+{
+ u32 start;
+ u16 index;
+ u16 parent;
+} FSArchiveFNT;
+
+typedef struct
+{
+ u32 top;
+ u32 bottom;
+} FSArchiveFAT;
+
+typedef struct FSArchive
+{
+ union
+ {
+ char ptr[4];
+ u32 pack;
+ } name;
+ struct FSArchive * next;
+ struct FSArchive * prev;
+ OSThreadQueue sync_q;
+ OSThreadQueue stat_q;
+ u32 flag;
+ FSFileLink list;
+ u32 base;
+ u32 fat;
+ u32 fat_size;
+ u32 fnt;
+ u32 fnt_size;
+ u32 fat_bak;
+ u32 fnt_bak;
+ void * load_mem;
+ FS_ARCHIVE_READ_FUNC read_func;
+ FS_ARCHIVE_WRITE_FUNC write_func;
+ FS_ARCHIVE_READ_FUNC table_func;
+ FS_ARCHIVE_PROC_FUNC proc;
+ u32 proc_flag;
+} FSArchive;
+
+FSArchive * const FS_FindArchive(const char * path, int offset);
+
+static inline BOOL FS_IsArchiveLoaded(volatile const FSArchive * p_arc)
+{
+ return (p_arc->flag & FS_ARCHIVE_FLAG_LOADED) ? TRUE : FALSE;
+}
+
+static inline u32 FS_GetArchiveOffset(const FSArchive * p_arc, u32 pos)
+{
+ return p_arc->base + pos;
+}
+
+static inline BOOL FSi_IsArchiveCanceling(volatile const FSArchive * p_arc)
+{
+ return (p_arc->flag & FS_ARCHIVE_FLAG_CANCELING) != 0;
+}
+
+static inline BOOL FS_IsArchiveSuspended(volatile const FSArchive * p_arc)
+{
+ return (p_arc->flag & FS_ARCHIVE_FLAG_SUSPEND) ? TRUE : FALSE;
+}
+
+static inline BOOL FSi_IsArchiveSuspending(volatile const FSArchive * p_arc)
+{
+ return (p_arc->flag & FS_ARCHIVE_FLAG_SUSPENDING) != 0;
+}
+
+static inline BOOL FSi_IsArchiveRunning(volatile const FSArchive * p_arc)
+{
+ return (p_arc->flag & FS_ARCHIVE_FLAG_RUNNING) != 0;
+}
+
+static inline BOOL FSi_IsArchiveUnloading(volatile const FSArchive * p_arc)
+{
+ return (p_arc->flag & FS_ARCHIVE_FLAG_UNLOADING) != 0;
+}
+
+static inline BOOL FSi_IsArchiveAsync(volatile const FSArchive * p_arc)
+{
+ return (p_arc->flag & FS_ARCHIVE_FLAG_IS_ASYNC) != 0;
+}
+
+static inline BOOL FSi_IsArchiveSync(volatile const FSArchive * p_arc)
+{
+ return (p_arc->flag & FS_ARCHIVE_FLAG_IS_SYNC) != 0;
+}
+
+static inline BOOL FS_IsArchiveTableLoaded(volatile const FSArchive * p_arc)
+{
+ return (p_arc->flag & FS_ARCHIVE_FLAG_TABLE_LOAD) ? TRUE : FALSE;
+}
+
+BOOL FSi_SendCommand(struct FSFile * file, FSCommandType command);
+BOOL FSi_ExecuteSyncCommand(struct FSFile * file);
+BOOL FS_SuspendArchive(FSArchive * p_arc);
+BOOL FS_ResumeArchive(FSArchive * p_arc);
+void FS_NotifyArchiveAsyncEnd(FSArchive *p_arc, FSResult ret);
+BOOL FS_RegisterArchiveName(FSArchive * p_arc, const char * name, int name_len);
+void FS_InitArchive(FSArchive * p_arc);
+void FS_SetArchiveProc(struct FSArchive * p_arc, FS_ARCHIVE_PROC_FUNC proc, u32 flags);
+BOOL FS_LoadArchive(FSArchive * p_arc, u32 base, u32 fat, u32 fat_size, u32 fnt, u32 fnt_size, FS_ARCHIVE_READ_FUNC read_func, FS_ARCHIVE_WRITE_FUNC write_func);
+u32 FS_LoadArchiveTables(FSArchive *p_arc, void *p_mem, u32 max_size);
+
+#endif //NITRO_FS_ARCHIVE_H_
diff --git a/arm9/lib/include/FS_command.h b/arm9/lib/include/FS_command.h
new file mode 100644
index 00000000..b5e73bcf
--- /dev/null
+++ b/arm9/lib/include/FS_command.h
@@ -0,0 +1,11 @@
+#ifndef NITRO_FS_COMMAND_H_
+#define NITRO_FS_COMMAND_H_
+
+#include "FS_file.h"
+
+extern FSResult (*const fsi_default_command[])(FSFile *);
+
+void FSi_ReleaseCommand(FSFile * file, FSResult signal);
+FSResult FSi_TranslateCommand(FSFile * file, FSCommandType command);
+
+#endif //NITRO_FS_COMMAND_H_
diff --git a/arm9/lib/include/FS_file.h b/arm9/lib/include/FS_file.h
new file mode 100644
index 00000000..3a7d8730
--- /dev/null
+++ b/arm9/lib/include/FS_file.h
@@ -0,0 +1,222 @@
+#ifndef NITRO_FS_FILE_H_
+#define NITRO_FS_FILE_H_
+
+#include "nitro.h"
+
+#include "FS_archive.h"
+
+#define FS_FILE_STATUS_BUSY 0x00000001
+#define FS_FILE_STATUS_CANCEL 0x00000002
+#define FS_FILE_STATUS_SYNC 0x00000004
+#define FS_FILE_STATUS_ASYNC 0x00000008
+#define FS_FILE_STATUS_IS_FILE 0x00000010
+#define FS_FILE_STATUS_IS_DIR 0x00000020
+#define FS_FILE_STATUS_OPERATING 0x00000040
+
+#define FS_FILE_NAME_MAX 127
+
+typedef enum FSSeekFileMode
+{
+ FS_SEEK_SET = 0,
+ FS_SEEK_CUR,
+ FS_SEEK_END
+} FSSeekFileMode;
+
+struct FSFile;
+
+#define FS_DMA_NOT_USE ((u32)~0)
+
+typedef struct FSDirPos
+{
+ struct FSArchive *arc;
+ u16 own_id;
+ u16 index;
+ u32 pos;
+}
+FSDirPos;
+
+typedef struct FSFileID
+{
+ struct FSArchive *arc;
+ u32 file_id;
+}
+FSFileID;
+
+typedef struct
+{
+ union
+ {
+ FSFileID file_id;
+ FSDirPos dir_id;
+ };
+ u32 is_directory;
+ u32 name_len;
+ char name[128];
+}
+FSDirEntry;
+
+
+typedef struct
+{
+ FSDirPos pos;
+}
+FSSeekDirInfo;
+
+
+typedef struct
+{
+ FSDirEntry *p_entry;
+ BOOL skip_string;
+}
+FSReadDirInfo;
+
+
+typedef struct
+{
+ FSDirPos pos;
+ const char *path;
+ BOOL find_directory;
+ union
+ {
+ FSFileID *file;
+ FSDirPos *dir;
+ }
+ result;
+}
+FSFindPathInfo;
+
+
+typedef struct
+{
+ u8 *buf;
+ u32 buf_len;
+ u16 total_len;
+ u16 dir_id;
+}
+FSGetPathInfo;
+
+
+typedef struct
+{
+ FSFileID id;
+}
+FSOpenFileFastInfo;
+
+
+typedef struct
+{
+ u32 top;
+ u32 bottom;
+ u32 index;
+}
+FSOpenFileDirectInfo;
+
+
+typedef struct
+{
+ u32 reserved;
+}
+FSCloseFileInfo;
+
+
+typedef struct
+{
+ void *dst;
+ u32 len_org;
+ u32 len;
+}
+FSReadFileInfo;
+
+
+typedef struct
+{
+ const void *src;
+ u32 len_org;
+ u32 len;
+}
+FSWriteFileInfo;
+
+typedef struct FSFile
+{
+ FSFileLink link;
+ struct FSArchive *arc;
+ u32 stat;
+ FSCommandType command;
+ FSResult error;
+ OSThreadQueue queue[1];
+ union {
+ struct
+ {
+ u32 own_id;
+ u32 top;
+ u32 bottom;
+ u32 pos;
+ } file;
+ struct
+ {
+ FSDirPos pos;
+ u32 parent;
+ } dir;
+ } prop;
+
+ union {
+ FSReadFileInfo readfile;
+ FSWriteFileInfo writefile;
+
+ FSSeekDirInfo seekdir;
+ FSReadDirInfo readdir;
+ FSFindPathInfo findpath;
+ FSGetPathInfo getpath;
+ FSOpenFileFastInfo openfilefast;
+ FSOpenFileDirectInfo openfiledirect;
+ FSCloseFileInfo closefile;
+ } arg;
+}
+FSFile;
+
+u32 FS_SetDefaultDMA(u32 dma_no); // returns the previous selection
+void FS_InitFile(FSFile * p_file);
+BOOL FS_WaitAsync(FSFile * p_file);
+BOOL FS_OpenFileDirect(FSFile * p_file, FSArchive * p_arc, u32 image_top, u32 image_bottom, u32 file_index);
+int FS_ReadFile(FSFile * p_file, void * dst, s32 len);
+int FS_ReadFileAsync(FSFile * p_file, void * dst, s32 len);
+BOOL FS_OpenFile(FSFile * p_file, const char * path);
+BOOL FS_OpenFileFast(FSFile * p_file, FSFileID file_id);
+BOOL FS_CloseFile(FSFile * p_file);
+BOOL FS_SeekFile(FSFile * p_file, int offset, FSSeekFileMode origin);
+
+static inline u32 const FS_GetFileImageTop(volatile const FSFile * p_file) {
+ return p_file->prop.file.top;
+}
+
+static inline u32 const FS_GetLength(volatile const FSFile * p_file)
+{
+ return p_file->prop.file.bottom - p_file->prop.file.top;
+}
+
+static inline BOOL FS_IsCanceling(volatile const FSFile * p_file)
+{
+ return (p_file->stat & FS_FILE_STATUS_CANCEL) ? TRUE : FALSE;
+}
+
+static inline BOOL FS_IsFileSyncMode(volatile const FSFile * p_file)
+{
+ return (p_file->stat & FS_FILE_STATUS_SYNC) ? TRUE : FALSE;
+}
+
+static inline BOOL FS_IsBusy(volatile const FSFile * p_file)
+{
+ return p_file->stat & FS_FILE_STATUS_BUSY ? TRUE : FALSE;
+}
+
+static inline BOOL FS_IsSucceeded(volatile const FSFile * p_file)
+{
+ return (p_file->error == FS_RESULT_SUCCESS) ? TRUE : FALSE;
+}
+
+static inline BOOL FS_IsDir(volatile const FSFile * p_file)
+{
+ return (p_file->stat & FS_FILE_STATUS_IS_DIR) ? TRUE : FALSE;
+}
+
+#endif //NITRO_FS_FILE_H_
diff --git a/arm9/lib/include/FS_mw_dtor.h b/arm9/lib/include/FS_mw_dtor.h
new file mode 100644
index 00000000..a746ed19
--- /dev/null
+++ b/arm9/lib/include/FS_mw_dtor.h
@@ -0,0 +1,16 @@
+#ifndef NITRO_FS_MW_DTOR_H_
+#define NITRO_FS_MW_DTOR_H_
+
+typedef void (*MWI_DESTRUCTOR_FUNC) (void *);
+
+typedef struct MWiDestructorChain
+{
+ struct MWiDestructorChain *next;
+ MWI_DESTRUCTOR_FUNC dtor;
+ void *obj;
+}
+MWiDestructorChain;
+
+extern MWiDestructorChain *__global_destructor_chain;
+
+#endif //NITRO_FS_MW_DTOR_H_
diff --git a/arm9/lib/include/FS_overlay.h b/arm9/lib/include/FS_overlay.h
new file mode 100644
index 00000000..14c7ce66
--- /dev/null
+++ b/arm9/lib/include/FS_overlay.h
@@ -0,0 +1,71 @@
+#ifndef NITRO_FS_OVERLAY_H_
+#define NITRO_FS_OVERLAY_H_
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#include "nitro.h"
+#include "MI_exMemory.h"
+#include "FS_file.h"
+#include "CARD_rom.h"
+
+typedef u32 FSOverlayID;
+
+#define FS_EXTERN_OVERLAY(name) extern u32 SDK_OVERLAY_ ## name ## _ID[1]
+#define FS_OVERLAY_ID(name) ((u32)&(SDK_OVERLAY_ ## name ## _ID))
+
+typedef void (*FSOverlayInitFunc)(void);
+
+typedef struct FSOverlayInfoHeader
+{
+ u32 id;
+ u8 *ram_address;
+ u32 ram_size;
+ u32 bss_size;
+ FSOverlayInitFunc *sinit_init;
+ FSOverlayInitFunc *sinit_init_end;
+ u32 file_id;
+ u32 compressed: 24;
+ u32 flag: 8;
+} FSOverlayInfoHeader;
+
+typedef struct FSOverlayInfo
+{
+ FSOverlayInfoHeader header;
+ MIProcessor target;
+ CARDRomRegion file_pos;
+} FSOverlayInfo;
+
+static inline u8 *const FS_GetOverlayAddress(FSOverlayInfo *p_ovi)
+{
+ return p_ovi->header.ram_address;
+}
+
+static inline u32 const FS_GetOverlayImageSize(FSOverlayInfo *p_ovi)
+{
+ return p_ovi->header.ram_size;
+}
+
+static inline u32 const FS_GetOverlayTotalSize(FSOverlayInfo *p_ovi)
+{
+ return p_ovi->header.ram_size + p_ovi->header.bss_size;
+}
+
+BOOL FS_LoadOverlayInfo(FSOverlayInfo *p_ovi, MIProcessor target, FSOverlayID id);
+
+BOOL FS_LoadOverlay(MIProcessor target, FSOverlayID id);
+
+BOOL FS_UnloadOverlay(MIProcessor target, FSOverlayID id);
+
+BOOL FS_LoadOverlayImage(FSOverlayInfo *p_ovi);
+
+void FS_StartOverlay(FSOverlayInfo *p_ovi);
+
+BOOL FS_LoadOverlayImageAsync(FSOverlayInfo *p_ovi, FSFile *p_file);
+
+#if defined(__cplusplus)
+};
+#endif
+
+#endif //NITRO_FS_OVERLAY_H_
diff --git a/arm9/lib/include/FS_rom.h b/arm9/lib/include/FS_rom.h
new file mode 100644
index 00000000..ac8ad8fb
--- /dev/null
+++ b/arm9/lib/include/FS_rom.h
@@ -0,0 +1,14 @@
+#ifndef NITRO_FS_ROM_H_
+#define NITRO_FS_ROM_H_
+
+#include "FS_archive.h"
+#include "CARD_rom.h"
+
+extern FSArchive fsi_arc_rom;
+extern s32 fsi_card_lock_id;
+extern CARDRomRegion fsi_ovt7;
+extern CARDRomRegion fsi_ovt9;
+
+void FSi_InitRom(u32 default_dma_no);
+
+#endif //NITRO_FS_ROM_H_
diff --git a/arm9/lib/include/FSi_util.h b/arm9/lib/include/FSi_util.h
new file mode 100644
index 00000000..6e96681e
--- /dev/null
+++ b/arm9/lib/include/FSi_util.h
@@ -0,0 +1,46 @@
+#ifndef NITRO_FSI_UTIL_H_
+#define NITRO_FSI_UTIL_H_
+
+#define ALIGN_MASK(a) ((u32)((a) - 1))
+
+#define ALIGN_BYTE(n, a) (((u32)(n) + ALIGN_MASK(a)) & ~ALIGN_MASK(a))
+
+#define BIT_MASK(a) ((u32)((1 << (a)) - 1))
+
+static inline BOOL FSi_IsSlash(u32 c)
+{
+ return (c == '/') || (c == '\\');
+}
+
+static inline void FSi_CutFromListCore(FSFileLink *trg)
+{
+ FSFile *const pr = trg->prev;
+ FSFile *const nx = trg->next;
+ if (pr)
+ pr->link.next = nx;
+ if (nx)
+ nx->link.prev = pr;
+}
+
+static inline void FSi_CutFromList(FSFile *elem)
+{
+ FSFileLink *const trg = &elem->link;
+ FSi_CutFromListCore(trg);
+ trg->next = trg->prev = NULL;
+}
+
+static inline void FSi_AppendToList(FSFile *elem, FSFile *list)
+{
+ FSFileLink *const trg = &elem->link;
+ FSi_CutFromListCore(trg);
+ {
+ while (list->link.next)
+ list = list->link.next;
+ list->link.next = elem;
+ trg->prev = list;
+ trg->next = NULL;
+ }
+}
+
+
+#endif //NITRO_FSI_UTIL_H_
diff --git a/arm9/lib/include/MB_mb.h b/arm9/lib/include/MB_mb.h
new file mode 100644
index 00000000..128ea480
--- /dev/null
+++ b/arm9/lib/include/MB_mb.h
@@ -0,0 +1,45 @@
+//
+// Created by red031000 on 2020-05-06.
+//
+
+#ifndef POKEDIAMOND_MB_MB_H
+#define POKEDIAMOND_MB_MB_H
+
+#include "consts.h"
+
+#define MB_TYPE_ILLEGAL 0
+#define MB_TYPE_NORMAL 1
+#define MB_TYPE_MULTIBOOT 2
+
+typedef struct {
+ u16 length;
+ u16 rssi;
+ u16 bssid[3];
+ u16 ssidLength;
+ u8 ssid[32];
+ u16 capaInfo;
+ struct {
+ u16 basic;
+ u16 support;
+ } rateSet;
+ u16 beaconperiod;
+ u16 dtimPeriod;
+ u16 channel;
+ u16 cfpPeriod;
+ u16 cfpMaxDuration;
+} MBParentBssDesc;
+
+typedef struct {
+ u16 boot_type;
+ MBParentBssDesc parent_bss_desc;
+} MBParam;
+
+static inline const MBParam *MB_GetMultiBootParam() {
+ return (const MBParam *)HW_WM_BOOT_BUF;
+}
+
+static inline BOOL MB_IsMultiBootChild() {
+ return MB_GetMultiBootParam()->boot_type == MB_TYPE_MULTIBOOT;
+}
+
+#endif //POKEDIAMOND_MB_MB_H
diff --git a/arm9/lib/include/MI_byteAccess.h b/arm9/lib/include/MI_byteAccess.h
new file mode 100644
index 00000000..cad4d518
--- /dev/null
+++ b/arm9/lib/include/MI_byteAccess.h
@@ -0,0 +1,14 @@
+#ifndef NITRO_MI_BYTEACCESS_H_
+#define NITRO_MI_BYTEACCESS_H_
+
+static inline u8 MI_ReadByte(const void *address)
+{
+ return *(u8 *)address;
+}
+
+static inline void MI_WriteByte(void *address, u8 value)
+{
+ *(u8 *)address = value;
+}
+
+#endif //NITRO_MI_BYTEACCESS_H_
diff --git a/arm9/lib/include/MI_dma.h b/arm9/lib/include/MI_dma.h
new file mode 100644
index 00000000..eddcedbb
--- /dev/null
+++ b/arm9/lib/include/MI_dma.h
@@ -0,0 +1,6 @@
+#ifndef NITRO_MI_DMA_H_
+#define NITRO_MI_DMA_H_
+
+typedef void (*MIDmaCallback)(void *);
+
+#endif //NITRO_MI_DMA_H_
diff --git a/arm9/lib/include/MI_exMemory.h b/arm9/lib/include/MI_exMemory.h
new file mode 100644
index 00000000..4a8a10a8
--- /dev/null
+++ b/arm9/lib/include/MI_exMemory.h
@@ -0,0 +1,9 @@
+#ifndef NITRO_MI_EXMEMORY_H_
+#define NITRO_MI_EXMEMORY_H_
+
+typedef enum {
+ MI_PROCESSOR_ARM9 = 0,
+ MI_PROCESSOR_ARM7 = 1
+} MIProcessor;
+
+#endif //NITRO_MI_EXMEMORY_H_
diff --git a/arm9/lib/include/MI_memory.h b/arm9/lib/include/MI_memory.h
new file mode 100644
index 00000000..d9935a5f
--- /dev/null
+++ b/arm9/lib/include/MI_memory.h
@@ -0,0 +1,10 @@
+#ifndef NITRO_MI_MEMORY_H_
+#define NITRO_MI_MEMORY_H_
+
+void MI_CpuFill8(void *dest, u8 data, u32 size);
+void MI_CpuCopy8(void const *src, void *dest, u32 size);
+static inline void MI_CpuClear8(void *dest, u32 size) {
+ MI_CpuFill8(dest, 0, size);
+}
+
+#endif //NITRO_MI_MEMORY_H_
diff --git a/arm9/lib/include/MI_uncompress.h b/arm9/lib/include/MI_uncompress.h
new file mode 100644
index 00000000..55f28e27
--- /dev/null
+++ b/arm9/lib/include/MI_uncompress.h
@@ -0,0 +1,6 @@
+#ifndef NITRO_MI_UNCOMPRESS_H_
+#define NITRO_MI_UNCOMPRESS_H_
+
+void MIi_UncompressBackward(void * bottom);
+
+#endif //NITRO_MI_UNCOMPRESS_H_
diff --git a/arm9/lib/include/OS_cache.h b/arm9/lib/include/OS_cache.h
new file mode 100644
index 00000000..bee42d45
--- /dev/null
+++ b/arm9/lib/include/OS_cache.h
@@ -0,0 +1,9 @@
+#ifndef NITRO_OS_CACHE_H_
+#define NITRO_OS_CACHE_H_
+
+void IC_InvalidateRange(void *startAddr, u32 nBytes);
+void IC_FlushRange(void *startAddr, u32 nBytes);
+void DC_InvalidateRange(void *startAddr, u32 nBytes);
+void DC_FlushRange(void *startAddr, u32 nBytes);
+
+#endif //NITRO_OS_CACHE_H_
diff --git a/arm9/lib/include/OS_emulator.h b/arm9/lib/include/OS_emulator.h
new file mode 100644
index 00000000..54105258
--- /dev/null
+++ b/arm9/lib/include/OS_emulator.h
@@ -0,0 +1,13 @@
+//
+// Created by red031000 on 2020-05-05.
+//
+
+#ifndef POKEDIAMOND_OS_EMULATOR_H
+#define POKEDIAMOND_OS_EMULATOR_H
+
+#include "consts.h"
+
+BOOL OS_IsRunOnEmulator();
+u32 OS_GetConsoleType();
+
+#endif //POKEDIAMOND_OS_EMULATOR_H
diff --git a/arm9/lib/include/OS_init.h b/arm9/lib/include/OS_init.h
index 1ff2837c..dd2b20c7 100644
--- a/arm9/lib/include/OS_init.h
+++ b/arm9/lib/include/OS_init.h
@@ -7,13 +7,18 @@
#include "types.h"
#include "consts.h"
+#include "OS_tcm.h"
#include "OS_spinLock.h"
#include "OS_thread.h"
#include "OS_protectionRegion.h"
#include "OS_entropy.h"
+#include "OS_emulator.h"
#include "OS_arena.h"
#include "OS_alloc.h"
#include "OS_system.h"
+#include "OS_terminate_proc.h"
+#include "OS_interrupt.h"
+#include "OS_reset.h"
void OS_Init();
diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/include/OS_interrupt.h
new file mode 100644
index 00000000..21ce2ea0
--- /dev/null
+++ b/arm9/lib/include/OS_interrupt.h
@@ -0,0 +1,30 @@
+//
+// Created by red031000 on 2020-05-07.
+//
+
+#ifndef POKEDIAMOND_OS_INTERRUPT_H
+#define POKEDIAMOND_OS_INTERRUPT_H
+
+#include "types.h"
+
+typedef void (*OSIrqFunction) (void);
+
+typedef struct
+{
+ void (*func) (void *);
+ u32 enable;
+ void* arg;
+} OSIrqCallbackInfo;
+
+typedef u32 OSIrqMask;
+
+extern OSIrqFunction OS_IRQTable[];
+extern OSIrqCallbackInfo OSi_IrqCallbackInfo[8];
+
+void OS_InitIrqTable();
+void OS_SetIrqFunction(OSIrqMask intrBit, OSIrqFunction function);
+OSIrqFunction OS_GetIrqFunction(OSIrqMask intrBit);
+void OSi_EnterDmaCallback(u32 dmaNo, void (*callback) (void *), void *arg);
+void OSi_EnterTimerCallback(u32 timerNo, void (*callback) (void *), void *arg);
+
+#endif //POKEDIAMOND_OS_INTERRUPT_H
diff --git a/arm9/lib/include/OS_printf.h b/arm9/lib/include/OS_printf.h
new file mode 100644
index 00000000..7c2e09b4
--- /dev/null
+++ b/arm9/lib/include/OS_printf.h
@@ -0,0 +1,15 @@
+#ifndef NITRO_OS_PRINTF_H_
+#define NITRO_OS_PRINTF_H_
+
+#define OS_Warning( ... ) ((void)0)
+#define OS_TPanic(...) OS_Terminate()
+#define OS_TWarning(...) ((void)0)
+
+#include "types.h"
+
+s32 OS_SPrintf(s8 *buffer, const s8 *format, ...);
+s32 OS_VSPrintf(s8 *buffer, const s8 *format, void *args);
+s32 OS_SNPrintf(s8 *buffer, s32 bufsz, const s8 *format, ...);
+s32 OS_VSNPrintf(s8 *buffer, s32 bufsz, const s8 *format, void *args);
+
+#endif //NITRO_OS_PRINTF_H_
diff --git a/arm9/lib/include/OS_reset.h b/arm9/lib/include/OS_reset.h
new file mode 100644
index 00000000..c3b60c98
--- /dev/null
+++ b/arm9/lib/include/OS_reset.h
@@ -0,0 +1,20 @@
+//
+// Created by red031000 on 2020-05-06.
+//
+
+#ifndef POKEDIAMOND_OS_RESET_H
+#define POKEDIAMOND_OS_RESET_H
+
+#include "consts.h"
+#include "PXI_fifo.h"
+
+#define OS_PXI_COMMAND_MASK 0x7f00
+#define OS_PXI_COMMAND_SHIFT 8
+#define OS_PXI_COMMAND_RESET 0x10
+
+void OS_InitReset();
+void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err);
+void OSi_SendToPxi(u16 data);
+void OS_ResetSystem(u32 parameter);
+
+#endif //POKEDIAMOND_OS_RESET_H
diff --git a/arm9/lib/include/OS_spinLock.h b/arm9/lib/include/OS_spinLock.h
index b7f0a571..3bb8a1c2 100644
--- a/arm9/lib/include/OS_spinLock.h
+++ b/arm9/lib/include/OS_spinLock.h
@@ -11,4 +11,6 @@ typedef volatile struct OSLockWord {
u16 extension;
} OSLockWord;
+s32 OS_GetLockID(void);
+
#endif //POKEDIAMOND_OS_SPINLOCK_H
diff --git a/arm9/lib/include/OS_system.h b/arm9/lib/include/OS_system.h
index 93903315..794e16d2 100644
--- a/arm9/lib/include/OS_system.h
+++ b/arm9/lib/include/OS_system.h
@@ -5,6 +5,7 @@
#ifndef POKEDIAMOND_OS_SYSTEM_H
#define POKEDIAMOND_OS_SYSTEM_H
+#include "function_target.h"
#include "consts.h"
typedef enum {
diff --git a/arm9/lib/include/OS_tcm.h b/arm9/lib/include/OS_tcm.h
new file mode 100644
index 00000000..7112ca0e
--- /dev/null
+++ b/arm9/lib/include/OS_tcm.h
@@ -0,0 +1,12 @@
+//
+// Created by red031000 on 2020-05-05.
+//
+
+#ifndef POKEDIAMOND_OS_TCM_H
+#define POKEDIAMOND_OS_TCM_H
+
+#include "consts.h"
+
+u32 OS_GetDTCMAddress();
+
+#endif //POKEDIAMOND_OS_TCM_H
diff --git a/arm9/lib/include/OS_terminate_proc.h b/arm9/lib/include/OS_terminate_proc.h
new file mode 100644
index 00000000..26741e5d
--- /dev/null
+++ b/arm9/lib/include/OS_terminate_proc.h
@@ -0,0 +1,11 @@
+//
+// Created by red031000 on 2020-05-07.
+//
+
+#ifndef POKEDIAMOND_OS_TERMINATE_PROC_H
+#define POKEDIAMOND_OS_TERMINATE_PROC_H
+
+void OS_Terminate();
+void OS_Halt();
+
+#endif //POKEDIAMOND_OS_TERMINATE_PROC_H
diff --git a/arm9/lib/include/OS_thread.h b/arm9/lib/include/OS_thread.h
index 4fb70bf7..15cec0c9 100644
--- a/arm9/lib/include/OS_thread.h
+++ b/arm9/lib/include/OS_thread.h
@@ -7,6 +7,14 @@
typedef struct _OSThread OSThread;
+struct _OSThreadQueue
+{
+ OSThread *head;
+ OSThread *tail;
+};
+
+typedef struct _OSThreadQueue OSThreadQueue;
+
typedef struct OSThreadInfo {
u16 isNeedRescheduling;
u16 irqDepth;
@@ -20,4 +28,12 @@ struct _OSThread
u8 padding[0x80]; //todo: not the correct size but idfk
};
+void OS_SleepThread(OSThreadQueue * queue);
+void OS_WakeupThread(OSThreadQueue * queue);
+
+static inline void OS_InitThreadQueue(OSThreadQueue * queue)
+{
+ queue->head = queue->tail = NULL;
+}
+
#endif //POKEDIAMOND_OS_THREAD_H
diff --git a/arm9/lib/include/PAD_pad.h b/arm9/lib/include/PAD_pad.h
new file mode 100644
index 00000000..0cb8a6f0
--- /dev/null
+++ b/arm9/lib/include/PAD_pad.h
@@ -0,0 +1,38 @@
+#ifndef NITRO_PAD_PAD_H_
+#define NITRO_PAD_PAD_H_
+
+
+//================================================================================
+// BUTTONS
+
+//---- masked value
+#define PAD_PLUS_KEY_MASK 0x00f0 // mask : cross keys
+#define PAD_BUTTON_MASK 0x2f0f // mask : buttons
+#define PAD_DEBUG_BUTTON_MASK 0x2000 // mask : debug button
+#define PAD_ALL_MASK 0x2fff // mask : all buttons
+#define PAD_RCNTPORT_MASK 0x2c00 // mask : factors ARM7 can read from RCNT register
+#define PAD_KEYPORT_MASK 0x03ff // mask : factors ARM7/9 can read from KEY register
+
+#define PAD_DETECT_FOLD_MASK 0x8000 // mask : folding
+
+//---- button and key
+#define PAD_BUTTON_A 0x0001 // A
+#define PAD_BUTTON_B 0x0002 // B
+#define PAD_BUTTON_SELECT 0x0004 // SELECT
+#define PAD_BUTTON_START 0x0008 // START
+#define PAD_KEY_RIGHT 0x0010 // RIGHT of cross key
+#define PAD_KEY_LEFT 0x0020 // LEFT of cross key
+#define PAD_KEY_UP 0x0040 // UP of cross key
+#define PAD_KEY_DOWN 0x0080 // DOWN of cross key
+#define PAD_BUTTON_R 0x0100 // R
+#define PAD_BUTTON_L 0x0200 // L
+#define PAD_BUTTON_X 0x0400 // X
+#define PAD_BUTTON_Y 0x0800 // Y
+#define PAD_BUTTON_DEBUG 0x2000 // Debug button
+
+static inline BOOL PAD_DetectFold(void)
+{
+ return (BOOL)((*(vu16 *)HW_BUTTON_XY_BUF & PAD_DETECT_FOLD_MASK) >> 15);
+}
+
+#endif //NITRO_PAD_PAD_H_
diff --git a/arm9/lib/include/PXI_fifo.h b/arm9/lib/include/PXI_fifo.h
new file mode 100644
index 00000000..1d45dda2
--- /dev/null
+++ b/arm9/lib/include/PXI_fifo.h
@@ -0,0 +1,33 @@
+//
+// Created by red031000 on 2020-05-06.
+//
+
+#ifndef POKEDIAMOND_PXI_FIFO_H
+#define POKEDIAMOND_PXI_FIFO_H
+
+#include "function_target.h"
+
+ENUMS_ALWAYS_INT_ON
+typedef enum {
+ PXI_FIFO_TAG_EX = 0, // Extension format
+ PXI_FIFO_TAG_USER_0, // for application programmer, use it in free
+ PXI_FIFO_TAG_USER_1, // for application programmer, use it in free
+ PXI_FIFO_TAG_SYSTEM, // SDK inner usage
+ PXI_FIFO_TAG_NVRAM, // NVRAM
+ PXI_FIFO_TAG_RTC, // RTC
+ PXI_FIFO_TAG_TOUCHPANEL, // Touch Panel
+ PXI_FIFO_TAG_SOUND, // Sound
+ PXI_FIFO_TAG_PM, // Power Management
+ PXI_FIFO_TAG_MIC, // Microphone
+ PXI_FIFO_TAG_WM, // Wireless Manager
+ PXI_FIFO_TAG_FS, // File System
+ PXI_FIFO_TAG_OS, // OS
+ PXI_FIFO_TAG_CTRDG, // Cartridge
+ PXI_FIFO_TAG_CARD, // Card
+ PXI_FIFO_TAG_WVR, // Control driving wireless library
+ PXI_FIFO_TAG_CTRDG_Ex, // Cartridge Ex
+ PXI_MAX_FIFO_TAG = 32 // MAX FIFO TAG
+} PXIFifoTag;
+ENUMS_ALWAYS_INT_RESET
+
+#endif //POKEDIAMOND_PXI_FIFO_H
diff --git a/arm9/lib/include/SPI_pm.h b/arm9/lib/include/SPI_pm.h
new file mode 100644
index 00000000..b5063ed8
--- /dev/null
+++ b/arm9/lib/include/SPI_pm.h
@@ -0,0 +1,38 @@
+#ifndef NITRO_SPI_PM_H_
+#define NITRO_SPI_PM_H_
+
+ENUMS_ALWAYS_INT_ON
+
+#define PM_TRIGGER_KEY (1 << 0)
+#define PM_TRIGGER_RTC_ALARM (1 << 1)
+#define PM_TRIGGER_COVER_OPEN (1 << 2)
+#define PM_TRIGGER_CARD (1 << 3)
+#define PM_TRIGGER_CARTRIDGE (1 << 4)
+typedef u32 PMWakeUpTrigger;
+
+#define PM_PAD_LOGIC_OR (0 << REG_PAD_KEYCNT_LOGIC_SHIFT)
+#define PM_PAD_LOGIC_AND (1 << REG_PAD_KEYCNT_LOGIC_SHIFT)
+typedef u32 PMLogic;
+
+typedef enum
+{
+ PM_BACKLIGHT_OFF = 0,
+ PM_BACKLIGHT_ON = 1
+} PMBackLightSwitch;
+
+typedef enum
+{
+ PM_LCD_TOP = 0,
+ PM_LCD_BOTTOM = 1,
+ PM_LCD_ALL = 2
+}
+PMLCDTarget;
+
+void PM_GetBackLight(PMBackLightSwitch * top, PMBackLightSwitch * bottom);
+void PM_GoSleepMode(PMWakeUpTrigger trigger, PMLogic logic, u16 keyPattern);
+u32 PM_SetBackLight(PMLCDTarget target, PMBackLightSwitch status);
+void PM_ForceToPowerOff(void);
+
+ENUMS_ALWAYS_INT_RESET
+
+#endif //NITRO_SPI_PM_H_
diff --git a/arm9/lib/include/consts.h b/arm9/lib/include/consts.h
index e07fe323..b99b4148 100644
--- a/arm9/lib/include/consts.h
+++ b/arm9/lib/include/consts.h
@@ -6,6 +6,7 @@
#define POKEDIAMOND_CONSTS_H
#include "mmap.h"
+#include "registers.h"
#define HW_PSR_CPU_MODE_MASK 0x1f // CPU mode
@@ -13,19 +14,6 @@
#define HW_PSR_DISABLE_IRQ 0x80 // Disable IRQ
#define HW_PSR_DISABLE_IRQ_FIQ 0xc0 // Disable FIQ and IRQ
-#define HW_REG_BASE 0x04000000
-#define REG_VCOUNT_OFFSET 0x006
-#define REG_VCOUNT_ADDR (HW_REG_BASE + REG_VCOUNT_OFFSET)
-#define reg_GX_VCOUNT (*(REGType16v *)REG_VCOUNT_ADDR)
-
-#define REG_KEYINPUT_OFFSET 0x130
-#define REG_KEYINPUT_ADDR (HW_REG_BASE + REG_KEYINPUT_OFFSET)
-#define reg_PAD_KEYINPUT (*(REGType16v *)REG_KEYINPUT_ADDR)
-
-#define REG_GXSTAT_OFFSET 0x600
-#define REG_GXSTAT_ADDR (HW_REG_BASE + REG_GXSTAT_OFFSET)
-#define reg_G3X_GXSTAT (*(REGType32v *)REG_GXSTAT_ADDR)
-
#define HW_C6_PR_4KB 0x16
#define HW_C6_PR_8KB 0x18
#define HW_C6_PR_16KB 0x1a
@@ -48,9 +36,17 @@
#define HW_C6_PR_2GB 0x3c
#define HW_C6_PR_4GB 0x3e
+#define PXI_PROC_ARM7 0x01
+
+#define OSi_CONSOLE_NOT_DETECT 0xffffffff
+
+#define OS_CONSOLE_NITRO 0x80000000
+#define OS_CONSOLE_DEV_CARD 0x02000000
#define OS_CONSOLE_SIZE_MASK 0x00000003
#define OS_CONSOLE_SIZE_4MB 0x00000001
+#define OSi_TCM_REGION_BASE_MASK 0xfffff000
+
#define OSi_GetArenaInfo() (*(OSArenaInfo*)HW_ARENA_INFO_BUF)
#define OSi_TRUNC(n, a) (((u32) (n)) & ~((a) - 1))
#define OSi_ROUND(n, a) (((u32) (n) + (a) - 1) & ~((a) - 1))
diff --git a/arm9/lib/include/fx.h b/arm9/lib/include/fx.h
index 7e74d079..b1c3aa88 100644
--- a/arm9/lib/include/fx.h
+++ b/arm9/lib/include/fx.h
@@ -46,24 +46,6 @@ typedef s64 fx64c;
#define FX64C_INT_ABS(x) FX_INT_ABS(FX64C, x)
#define FX64C_FRAC(x) FX_FRAC(FX64C, x)
-
-#define HW_REG_DIVCNT 0x04000280
-#define HW_REG_DIV_NUMER 0x04000290
-#define HW_REG_DIV_DENOM 0x04000298
-#define HW_REG_DIV_RESULT 0x040002A0
-#define HW_REG_DIVREM_RESULT 0x040002A8
-
-#define HW_REG_SQRTCNT 0x040002B0
-#define HW_REG_SQRT_RESULT 0x040002B4
-#define HW_REG_SQRT_PARAM 0x040002B8
-
-#define SETREG16(x, y) ((*(vu16 *)x) = y)
-#define SETREG32(x, y) ((*(vu32 *)x) = y)
-#define SETREG64(x, y) ((*(vu64 *)x) = y)
-#define READREG16(x) (*(vu16 *)x)
-#define READREG32(x) (*(vu32 *)x)
-#define READREG64(x) (*(vu64 *)x)
-
#define FX32_MUL(a, b) ((fx32)(((fx64)a * b) >> FX32_INT_SHIFT))
#define FX32_MUL_ADD_MUL(a, b, c, d) ((fx32)(((fx64)a * b + (fx64)c * d) >> FX32_INT_SHIFT))
//the extra term here is for rounding
diff --git a/arm9/lib/include/mmap.h b/arm9/lib/include/mmap.h
index d94df843..27255115 100644
--- a/arm9/lib/include/mmap.h
+++ b/arm9/lib/include/mmap.h
@@ -12,8 +12,10 @@ extern u32 SDK_AUTOLOAD_DTCM_START[];
#define HW_MAIN_MEM_SHARED_SIZE 0x00001000
#define HW_MAIN_MEM_DEBUGGER_OFFSET 0x00700000
+#define HW_ITCM_IMAGE 0x01000000
#define HW_ITCM 0x01FF8000
#define HW_ITCM_SIZE 0x00008000
+#define HW_ITCM_END (HW_ITCM + HW_ITCM_SIZE)
#define HW_WRAM 0x037F8000
@@ -23,6 +25,8 @@ extern u32 SDK_AUTOLOAD_DTCM_START[];
#define HW_CARD_ROM_HEADER_SIZE 0x00000160
#define HW_DOWNLOAD_PARAMETER_SIZE 0x00000020
+#define HW_RESET_PARAMETER_BUF (HW_MAIN_MEM + 0x007ffc20)
+#define HW_WM_BOOT_BUF (HW_MAIN_MEM + 0x007ffc40)
#define HW_ARENA_INFO_BUF (HW_MAIN_MEM + 0x007ffda0) // Arena data structure
#define HW_ROM_HEADER_BUF (HW_MAIN_MEM + 0x007ffe00) // ROM registration area data buffer
#define HW_RED_RESERVED (HW_MAIN_MEM + 0x007ff800) // Some kind of reserved data for shared memory
diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h
new file mode 100644
index 00000000..d1cc7792
--- /dev/null
+++ b/arm9/lib/include/registers.h
@@ -0,0 +1,361 @@
+//
+// Created by red031000 on 2020-05-06.
+//
+
+#ifndef POKEDIAMOND_REGISTERS_H
+#define POKEDIAMOND_REGISTERS_H
+
+#include "types.h"
+
+#define reg_GX_DISPCNT (*(REGType32v *)0x4000000)
+#define reg_GX_DISPSTAT (*(REGType16v *)0x4000004)
+#define reg_GX_VCOUNT (*(REGType16v *)0x4000006)
+
+#define reg_G3X_DISP3DCNT (*(REGType16v *)0x4000060)
+
+#define reg_GX_DISPCAPCNT (*(REGType32v *)0x4000064)
+#define reg_GX_DISP_MMEM_FIFO (*(REGType32v *)0x4000068)
+#define reg_GX_DISP_MMEM_FIFO_L (*(REGType16v *)0x4000068)
+#define reg_GX_DISP_MMEM_FIFO_H (*(REGType16v *)0x400006a)
+#define reg_GX_MASTER_BRIGHT (*(REGType16v *)0x400006c)
+#define reg_GX_TVOUTCNT (*(REGType16v *)0x4000070)
+
+#define reg_MI_DMA0SAD (*(REGType32v *)0x40000b0)
+#define reg_MI_DMA0DAD (*(REGType32v *)0x40000b4)
+#define reg_MI_DMA0CNT (*(REGType32v *)0x40000b8)
+#define reg_MI_DMA1SAD (*(REGType32v *)0x40000bc)
+#define reg_MI_DMA1DAD (*(REGType32v *)0x40000c0)
+#define reg_MI_DMA1CNT (*(REGType32v *)0x40000c4)
+#define reg_MI_DMA2SAD (*(REGType32v *)0x40000c8)
+#define reg_MI_DMA2DAD (*(REGType32v *)0x40000cc)
+#define reg_MI_DMA2CNT (*(REGType32v *)0x40000d0)
+#define reg_MI_DMA3SAD (*(REGType32v *)0x40000d4)
+#define reg_MI_DMA3DAD (*(REGType32v *)0x40000d8)
+#define reg_MI_DMA3CNT (*(REGType32v *)0x40000dc)
+#define reg_MI_DMA0_CLR_DATA (*(REGType32v *)0x40000e0)
+#define reg_MI_DMA1_CLR_DATA (*(REGType32v *)0x40000e4)
+#define reg_MI_DMA2_CLR_DATA (*(REGType32v *)0x40000e8)
+#define reg_MI_DMA3_CLR_DATA (*(REGType32v *)0x40000ec)
+
+#define reg_PAD_KEYINPUT (*(REGType16v *)0x4000130)
+
+#define reg_MI_MCCNT0 (*(REGType16v *)0x40001a0)
+#define reg_MI_MCD0 (*(REGType16v *)0x40001a2)
+#define reg_MI_MCCNT1 (*(REGType32v *)0x40001a4)
+#define reg_MI_MCCMD0 (*(REGType32v *)0x40001a8)
+#define reg_MI_MCCMD1 (*(REGType32v *)0x40001ac)
+#define reg_MI_EXMEMCNT (*(REGType16v *)0x4000204)
+
+#define reg_GX_VRAMCNT (*(REGType32v *)0x4000240)
+#define reg_GX_VRAMCNT_A (*(REGType8v *)0x4000240)
+#define reg_GX_VRAMCNT_B (*(REGType8v *)0x4000241)
+#define reg_GX_VRAMCNT_C (*(REGType8v *)0x4000242)
+#define reg_GX_VRAMCNT_D (*(REGType8v *)0x4000243)
+#define reg_GX_WVRAMCNT (*(REGType32v *)0x4000244)
+#define reg_GX_VRAMCNT_E (*(REGType8v *)0x4000244)
+#define reg_GX_VRAMCNT_F (*(REGType8v *)0x4000245)
+#define reg_GX_VRAMCNT_G (*(REGType8v *)0x4000246)
+#define reg_GX_VRAMCNT_WRAM (*(REGType8v *)0x4000247)
+#define reg_GX_VRAM_HI_CNT (*(REGType16v *)0x4000248)
+#define reg_GX_VRAMCNT_H (*(REGType8v *)0x4000248)
+#define reg_GX_VRAMCNT_I (*(REGType8v *)0x4000249)
+
+#define reg_CP_DIVCNT (*(REGType16v *)0x4000280)
+#define reg_CP_DIV_NUMER (*(REGType64v *)0x4000290)
+#define reg_CP_DIV_DENOM (*(REGType64v *)0x4000298)
+#define reg_CP_DIV_RESULT (*(REGType64v *)0x40002A0)
+#define reg_CP_DIVREM_RESULT (*(REGType64v *)0x40002A8)
+#define reg_CP_SQRTCNT (*(REGType16v *)0x40002B0)
+#define reg_CP_SQRT_RESULT (*(REGType32v *)0x40002B4)
+#define reg_CP_SQRT_PARAM (*(REGType64v *)0x40002B8)
+
+#define reg_GX_POWCNT (*(REGType16v *)0x4000304)
+
+#define reg_G3X_RDLINES_COUNT (*(const REGType16v *)0x4000320)
+#define reg_G3X_EDGE_COLOR_0 (*(REGType32v *)0x4000330)
+#define reg_G3X_EDGE_COLOR_0_L (*(REGType16v *)0x4000330)
+#define reg_G3X_EDGE_COLOR_0_H (*(REGType16v *)0x4000332)
+#define reg_G3X_EDGE_COLOR_1 (*(REGType32v *)0x4000334)
+#define reg_G3X_EDGE_COLOR_1_L (*(REGType16v *)0x4000334)
+#define reg_G3X_EDGE_COLOR_1_H (*(REGType16v *)0x4000336)
+#define reg_G3X_EDGE_COLOR_2 (*(REGType32v *)0x4000338)
+#define reg_G3X_EDGE_COLOR_2_L (*(REGType16v *)0x4000338)
+#define reg_G3X_EDGE_COLOR_2_H (*(REGType16v *)0x400033a)
+#define reg_G3X_EDGE_COLOR_3 (*(REGType32v *)0x400033c)
+#define reg_G3X_EDGE_COLOR_3_L (*(REGType16v *)0x400033c)
+#define reg_G3X_EDGE_COLOR_3_H (*(REGType16v *)0x400033e)
+#define reg_G3X_ALPHA_TEST_REF (*(REGType16v *)0x4000340)
+#define reg_G3X_CLEAR_COLOR (*(REGType32v *)0x4000350)
+#define reg_G3X_CLEAR_DEPTH (*(REGType16v *)0x4000354)
+#define reg_G3X_CLRIMAGE_OFFSET (*(REGType16v *)0x4000356)
+#define reg_G3X_FOG_COLOR (*(REGType32v *)0x4000358)
+#define reg_G3X_FOG_OFFSET (*(REGType16v *)0x400035c)
+#define reg_G3X_FOG_TABLE_0 (*(REGType32v *)0x4000360)
+#define reg_G3X_FOG_TABLE_0_L (*(REGType16v *)0x4000360)
+#define reg_G3X_FOG_TABLE_0_H (*(REGType16v *)0x4000362)
+#define reg_G3X_FOG_TABLE_1 (*(REGType32v *)0x4000364)
+#define reg_G3X_FOG_TABLE_1_L (*(REGType16v *)0x4000364)
+#define reg_G3X_FOG_TABLE_1_H (*(REGType16v *)0x4000366)
+#define reg_G3X_FOG_TABLE_2 (*(REGType32v *)0x4000368)
+#define reg_G3X_FOG_TABLE_2_L (*(REGType16v *)0x4000368)
+#define reg_G3X_FOG_TABLE_2_H (*(REGType16v *)0x400036a)
+#define reg_G3X_FOG_TABLE_3 (*(REGType32v *)0x400036c)
+#define reg_G3X_FOG_TABLE_3_L (*(REGType16v *)0x400036c)
+#define reg_G3X_FOG_TABLE_3_H (*(REGType16v *)0x400036e)
+#define reg_G3X_FOG_TABLE_4 (*(REGType32v *)0x4000370)
+#define reg_G3X_FOG_TABLE_4_L (*(REGType16v *)0x4000370)
+#define reg_G3X_FOG_TABLE_4_H (*(REGType16v *)0x4000372)
+#define reg_G3X_FOG_TABLE_5 (*(REGType32v *)0x4000374)
+#define reg_G3X_FOG_TABLE_5_L (*(REGType16v *)0x4000374)
+#define reg_G3X_FOG_TABLE_5_H (*(REGType16v *)0x4000376)
+#define reg_G3X_FOG_TABLE_6 (*(REGType32v *)0x4000378)
+#define reg_G3X_FOG_TABLE_6_L (*(REGType16v *)0x4000378)
+#define reg_G3X_FOG_TABLE_6_H (*(REGType16v *)0x400037a)
+#define reg_G3X_FOG_TABLE_7 (*(REGType32v *)0x400037c)
+#define reg_G3X_FOG_TABLE_7_L (*(REGType16v *)0x400037c)
+#define reg_G3X_FOG_TABLE_7_H (*(REGType16v *)0x400037e)
+#define reg_G3X_TOON_TABLE_0 (*(REGType32v *)0x4000380)
+#define reg_G3X_TOON_TABLE_0_L (*(REGType16v *)0x4000380)
+#define reg_G3X_TOON_TABLE_0_H (*(REGType16v *)0x4000382)
+#define reg_G3X_TOON_TABLE_1 (*(REGType32v *)0x4000384)
+#define reg_G3X_TOON_TABLE_1_L (*(REGType16v *)0x4000384)
+#define reg_G3X_TOON_TABLE_1_H (*(REGType16v *)0x4000386)
+#define reg_G3X_TOON_TABLE_2 (*(REGType32v *)0x4000388)
+#define reg_G3X_TOON_TABLE_2_L (*(REGType16v *)0x4000388)
+#define reg_G3X_TOON_TABLE_2_H (*(REGType16v *)0x400038a)
+#define reg_G3X_TOON_TABLE_3 (*(REGType32v *)0x400038c)
+#define reg_G3X_TOON_TABLE_3_L (*(REGType16v *)0x400038c)
+#define reg_G3X_TOON_TABLE_3_H (*(REGType16v *)0x400038e)
+#define reg_G3X_TOON_TABLE_4 (*(REGType32v *)0x4000390)
+#define reg_G3X_TOON_TABLE_4_L (*(REGType16v *)0x4000390)
+#define reg_G3X_TOON_TABLE_4_H (*(REGType16v *)0x4000392)
+#define reg_G3X_TOON_TABLE_5 (*(REGType32v *)0x4000394)
+#define reg_G3X_TOON_TABLE_5_L (*(REGType16v *)0x4000394)
+#define reg_G3X_TOON_TABLE_5_H (*(REGType16v *)0x4000396)
+#define reg_G3X_TOON_TABLE_7 (*(REGType32v *)0x400039c)
+#define reg_G3X_TOON_TABLE_7_L (*(REGType16v *)0x400039c)
+#define reg_G3X_TOON_TABLE_7_H (*(REGType16v *)0x400039e)
+#define reg_G3X_TOON_TABLE_8 (*(REGType32v *)0x40003a0)
+#define reg_G3X_TOON_TABLE_8_L (*(REGType16v *)0x40003a0)
+#define reg_G3X_TOON_TABLE_8_H (*(REGType16v *)0x40003a2)
+#define reg_G3X_TOON_TABLE_9 (*(REGType32v *)0x40003a4)
+#define reg_G3X_TOON_TABLE_9_L (*(REGType16v *)0x40003a4)
+#define reg_G3X_TOON_TABLE_9_H (*(REGType16v *)0x40003a6)
+#define reg_G3X_TOON_TABLE_10 (*(REGType32v *)0x40003a8)
+#define reg_G3X_TOON_TABLE_10_L (*(REGType16v *)0x40003a8)
+#define reg_G3X_TOON_TABLE_10_H (*(REGType16v *)0x40003aa)
+#define reg_G3X_TOON_TABLE_11 (*(REGType32v *)0x40003ac)
+#define reg_G3X_TOON_TABLE_11_L (*(REGType16v *)0x40003ac)
+#define reg_G3X_TOON_TABLE_11_H (*(REGType16v *)0x40003ae)
+#define reg_G3X_TOON_TABLE_12 (*(REGType32v *)0x40003b0)
+#define reg_G3X_TOON_TABLE_12_L (*(REGType16v *)0x40003b0)
+#define reg_G3X_TOON_TABLE_12_H (*(REGType16v *)0x40003b2)
+#define reg_G3X_TOON_TABLE_13 (*(REGType32v *)0x40003b4)
+#define reg_G3X_TOON_TABLE_13_L (*(REGType16v *)0x40003b4)
+#define reg_G3X_TOON_TABLE_13_H (*(REGType16v *)0x40003b6)
+#define reg_G3X_TOON_TABLE_14 (*(REGType32v *)0x40003b8)
+#define reg_G3X_TOON_TABLE_14_L (*(REGType16v *)0x40003b8)
+#define reg_G3X_TOON_TABLE_14_H (*(REGType16v *)0x40003ba)
+#define reg_G3X_TOON_TABLE_15 (*(REGType32v *)0x40003bc)
+#define reg_G3X_TOON_TABLE_15_L (*(REGType16v *)0x40003bc)
+#define reg_G3X_TOON_TABLE_15_H (*(REGType16v *)0x40003be)
+#define reg_G3X_GXFIFO (*(REGType32v *)0x4000400)
+
+#define reg_G3_MTX_MODE (*(REGType32v *)0x4000440)
+#define reg_G3_MTX_PUSH (*(REGType32v *)0x4000444)
+#define reg_G3_MTX_POP (*(REGType32v *)0x4000448)
+#define reg_G3_MTX_STORE (*(REGType32v *)0x400044c)
+#define reg_G3_MTX_RESTORE (*(REGType32v *)0x4000450)
+#define reg_G3_MTX_IDENTITY (*(REGType32v *)0x4000454)
+#define reg_G3_MTX_LOAD_4x4 (*(REGType32v *)0x4000458)
+#define reg_G3_MTX_LOAD_4x3 (*(REGType32v *)0x400045c)
+#define reg_G3_MTX_MULT_4x4 (*(REGType32v *)0x4000460)
+#define reg_G3_MTX_MULT_4x3 (*(REGType32v *)0x4000464)
+#define reg_G3_MTX_MULT_3x3 (*(REGType32v *)0x4000468)
+#define reg_G3_MTX_SCALE (*(REGType32v *)0x400046c)
+#define reg_G3_MTX_TRANS (*(REGType32v *)0x4000470)
+#define reg_G3_COLOR (*(REGType32v *)0x4000480)
+#define reg_G3_NORMAL (*(REGType32v *)0x4000484)
+#define reg_G3_TEXCOORD (*(REGType32v *)0x4000488)
+#define reg_G3_VTX_16 (*(REGType32v *)0x400048c)
+#define reg_G3_VTX_10 (*(REGType32v *)0x4000490)
+#define reg_G3_VTX_XY (*(REGType32v *)0x4000494)
+#define reg_G3_VTX_XZ (*(REGType32v *)0x4000498)
+#define reg_G3_VTX_YZ (*(REGType32v *)0x400049c)
+#define reg_G3_VTX_DIFF (*(REGType32v *)0x40004a0)
+#define reg_G3_POLYGON_ATTR (*(REGType32v *)0x40004a4)
+#define reg_G3_TEXIMAGE_PARAM (*(REGType32v *)0x40004a8)
+#define reg_G3_TEXPLTT_BASE (*(REGType32v *)0x40004ac)
+#define reg_G3_DIF_AMB (*(REGType32v *)0x40004c0)
+#define reg_G3_SPE_EMI (*(REGType32v *)0x40004c4)
+#define reg_G3_LIGHT_VECTOR (*(REGType32v *)0x40004c8)
+#define reg_G3_LIGHT_COLOR (*(REGType32v *)0x40004cc)
+#define reg_G3_SHININESS (*(REGType32v *)0x40004d0)
+#define reg_G3_BEGIN_VTXS (*(REGType32v *)0x4000500)
+#define reg_G3_END_VTXS (*(REGType32v *)0x4000504)
+#define reg_G3_SWAP_BUFFERS (*(REGType32v *)0x4000540)
+#define reg_G3_VIEWPORT (*(REGType32v *)0x4000580)
+#define reg_G3_BOX_TEST (*(REGType32v *)0x40005c0)
+#define reg_G3_POS_TEST (*(REGType32v *)0x40005c4)
+#define reg_G3_VEC_TEST (*(REGType32v *)0x40005c8)
+
+#define reg_G3X_GXSTAT (*(REGType32v *)0x4000600)
+#define reg_G3X_LISTRAM_COUNT (*(REGType16v *)0x4000604)
+#define reg_G3X_VTXRAM_COUNT (*(REGType16v *)0x4000606)
+#define reg_G3X_DISP_1DOT_DEPTH (*(REGType16v *)0x4000610)
+#define reg_G3X_POS_RESULT_X (*(const REGType32v *)0x4000620)
+#define reg_G3X_POS_RESULT_Y (*(const REGType32v *)0x4000624)
+#define reg_G3X_POS_RESULT_Z (*(const REGType32v *)0x4000628)
+#define reg_G3X_POS_RESULT_W (*(const REGType32v *)0x400062c)
+#define reg_G3X_VEC_RESULT_X (*(const REGType16v *)0x4000630)
+#define reg_G3X_VEC_RESULT_Y (*(const REGType16v *)0x4000632)
+#define reg_G3X_VEC_RESULT_Z (*(const REGType16v *)0x4000634)
+#define reg_G3X_CLIPMTX_RESULT_0 (*(const REGType32v *)0x4000640)
+#define reg_G3X_CLIPMTX_RESULT_1 (*(const REGType32v *)0x4000644)
+#define reg_G3X_CLIPMTX_RESULT_2 (*(const REGType32v *)0x4000648)
+#define reg_G3X_CLIPMTX_RESULT_3 (*(const REGType32v *)0x400064c)
+#define reg_G3X_CLIPMTX_RESULT_4 (*(const REGType32v *)0x4000650)
+#define reg_G3X_CLIPMTX_RESULT_5 (*(const REGType32v *)0x4000654)
+#define reg_G3X_CLIPMTX_RESULT_6 (*(const REGType32v *)0x4000658)
+#define reg_G3X_CLIPMTX_RESULT_7 (*(const REGType32v *)0x400065c)
+#define reg_G3X_CLIPMTX_RESULT_8 (*(const REGType32v *)0x4000660)
+#define reg_G3X_CLIPMTX_RESULT_9 (*(const REGType32v *)0x4000664)
+#define reg_G3X_CLIPMTX_RESULT_10 (*(const REGType32v *)0x4000668)
+#define reg_G3X_CLIPMTX_RESULT_11 (*(const REGType32v *)0x400066c)
+#define reg_G3X_CLIPMTX_RESULT_12 (*(const REGType32v *)0x4000670)
+#define reg_G3X_CLIPMTX_RESULT_13 (*(const REGType32v *)0x4000674)
+#define reg_G3X_CLIPMTX_RESULT_14 (*(const REGType32v *)0x4000678)
+#define reg_G3X_CLIPMTX_RESULT_15 (*(const REGType32v *)0x400067c)
+#define reg_G3X_VECMTX_RESULT_0 (*(const REGType32v *)0x4000680)
+#define reg_G3X_VECMTX_RESULT_1 (*(const REGType32v *)0x4000684)
+#define reg_G3X_VECMTX_RESULT_2 (*(const REGType32v *)0x4000688)
+#define reg_G3X_VECMTX_RESULT_3 (*(const REGType32v *)0x400068c)
+#define reg_G3X_VECMTX_RESULT_4 (*(const REGType32v *)0x4000690)
+#define reg_G3X_VECMTX_RESULT_5 (*(const REGType32v *)0x4000694)
+#define reg_G3X_VECMTX_RESULT_6 (*(const REGType32v *)0x4000698)
+#define reg_G3X_VECMTX_RESULT_7 (*(const REGType32v *)0x400069c)
+#define reg_G3X_VECMTX_RESULT_8 (*(const REGType32v *)0x40006a0)
+
+#define reg_MI_MCD1 (*(REGType32v *)0x4100010)
+
+#define REG_PAD_KEYINPUT_L_SHIFT 9
+#define REG_PAD_KEYINPUT_L_SIZE 1
+#define REG_PAD_KEYINPUT_L_MASK 0x0200
+
+#define REG_PAD_KEYINPUT_R_SHIFT 8
+#define REG_PAD_KEYINPUT_R_SIZE 1
+#define REG_PAD_KEYINPUT_R_MASK 0x0100
+
+#define REG_PAD_KEYINPUT_DOWN_SHIFT 7
+#define REG_PAD_KEYINPUT_DOWN_SIZE 1
+#define REG_PAD_KEYINPUT_DOWN_MASK 0x0080
+
+#define REG_PAD_KEYINPUT_UP_SHIFT 6
+#define REG_PAD_KEYINPUT_UP_SIZE 1
+#define REG_PAD_KEYINPUT_UP_MASK 0x0040
+
+#define REG_PAD_KEYINPUT_LEFT_SHIFT 5
+#define REG_PAD_KEYINPUT_LEFT_SIZE 1
+#define REG_PAD_KEYINPUT_LEFT_MASK 0x0020
+
+#define REG_PAD_KEYINPUT_RIGHT_SHIFT 4
+#define REG_PAD_KEYINPUT_RIGHT_SIZE 1
+#define REG_PAD_KEYINPUT_RIGHT_MASK 0x0010
+
+#define REG_PAD_KEYINPUT_START_SHIFT 3
+#define REG_PAD_KEYINPUT_START_SIZE 1
+#define REG_PAD_KEYINPUT_START_MASK 0x0008
+
+#define REG_PAD_KEYINPUT_SEL_SHIFT 2
+#define REG_PAD_KEYINPUT_SEL_SIZE 1
+#define REG_PAD_KEYINPUT_SEL_MASK 0x0004
+
+#define REG_PAD_KEYINPUT_B_SHIFT 1
+#define REG_PAD_KEYINPUT_B_SIZE 1
+#define REG_PAD_KEYINPUT_B_MASK 0x0002
+
+#define REG_PAD_KEYINPUT_A_SHIFT 0
+#define REG_PAD_KEYINPUT_A_SIZE 1
+#define REG_PAD_KEYINPUT_A_MASK 0x0001
+
+#ifndef SDK_ASM
+#define REG_PAD_KEYINPUT_FIELD( l, r, down, up, left, right, start, sel, b, a ) \
+ (u16)( \
+ ((u32)(l) << REG_PAD_KEYINPUT_L_SHIFT) | \
+ ((u32)(r) << REG_PAD_KEYINPUT_R_SHIFT) | \
+ ((u32)(down) << REG_PAD_KEYINPUT_DOWN_SHIFT) | \
+ ((u32)(up) << REG_PAD_KEYINPUT_UP_SHIFT) | \
+ ((u32)(left) << REG_PAD_KEYINPUT_LEFT_SHIFT) | \
+ ((u32)(right) << REG_PAD_KEYINPUT_RIGHT_SHIFT) | \
+ ((u32)(start) << REG_PAD_KEYINPUT_START_SHIFT) | \
+ ((u32)(sel) << REG_PAD_KEYINPUT_SEL_SHIFT) | \
+ ((u32)(b) << REG_PAD_KEYINPUT_B_SHIFT) | \
+ ((u32)(a) << REG_PAD_KEYINPUT_A_SHIFT))
+#endif
+
+#define REG_PAD_KEYCNT_LOGIC_SHIFT 15
+#define REG_PAD_KEYCNT_LOGIC_SIZE 1
+#define REG_PAD_KEYCNT_LOGIC_MASK 0x8000
+
+#define REG_PAD_KEYCNT_INTR_SHIFT 14
+#define REG_PAD_KEYCNT_INTR_SIZE 1
+#define REG_PAD_KEYCNT_INTR_MASK 0x4000
+
+#define REG_PAD_KEYCNT_L_SHIFT 9
+#define REG_PAD_KEYCNT_L_SIZE 1
+#define REG_PAD_KEYCNT_L_MASK 0x0200
+
+#define REG_PAD_KEYCNT_R_SHIFT 8
+#define REG_PAD_KEYCNT_R_SIZE 1
+#define REG_PAD_KEYCNT_R_MASK 0x0100
+
+#define REG_PAD_KEYCNT_DOWN_SHIFT 7
+#define REG_PAD_KEYCNT_DOWN_SIZE 1
+#define REG_PAD_KEYCNT_DOWN_MASK 0x0080
+
+#define REG_PAD_KEYCNT_UP_SHIFT 6
+#define REG_PAD_KEYCNT_UP_SIZE 1
+#define REG_PAD_KEYCNT_UP_MASK 0x0040
+
+#define REG_PAD_KEYCNT_LEFT_SHIFT 5
+#define REG_PAD_KEYCNT_LEFT_SIZE 1
+#define REG_PAD_KEYCNT_LEFT_MASK 0x0020
+
+#define REG_PAD_KEYCNT_RIGHT_SHIFT 4
+#define REG_PAD_KEYCNT_RIGHT_SIZE 1
+#define REG_PAD_KEYCNT_RIGHT_MASK 0x0010
+
+#define REG_PAD_KEYCNT_START_SHIFT 3
+#define REG_PAD_KEYCNT_START_SIZE 1
+#define REG_PAD_KEYCNT_START_MASK 0x0008
+
+#define REG_PAD_KEYCNT_SEL_SHIFT 2
+#define REG_PAD_KEYCNT_SEL_SIZE 1
+#define REG_PAD_KEYCNT_SEL_MASK 0x0004
+
+#define REG_PAD_KEYCNT_B_SHIFT 1
+#define REG_PAD_KEYCNT_B_SIZE 1
+#define REG_PAD_KEYCNT_B_MASK 0x0002
+
+#define REG_PAD_KEYCNT_A_SHIFT 0
+#define REG_PAD_KEYCNT_A_SIZE 1
+#define REG_PAD_KEYCNT_A_MASK 0x0001
+
+#ifndef SDK_ASM
+#define REG_PAD_KEYCNT_FIELD( logic, intr, l, r, down, up, left, right, start, sel, b, a ) \
+ (u16)( \
+ ((u32)(logic) << REG_PAD_KEYCNT_LOGIC_SHIFT) | \
+ ((u32)(intr) << REG_PAD_KEYCNT_INTR_SHIFT) | \
+ ((u32)(l) << REG_PAD_KEYCNT_L_SHIFT) | \
+ ((u32)(r) << REG_PAD_KEYCNT_R_SHIFT) | \
+ ((u32)(down) << REG_PAD_KEYCNT_DOWN_SHIFT) | \
+ ((u32)(up) << REG_PAD_KEYCNT_UP_SHIFT) | \
+ ((u32)(left) << REG_PAD_KEYCNT_LEFT_SHIFT) | \
+ ((u32)(right) << REG_PAD_KEYCNT_RIGHT_SHIFT) | \
+ ((u32)(start) << REG_PAD_KEYCNT_START_SHIFT) | \
+ ((u32)(sel) << REG_PAD_KEYCNT_SEL_SHIFT) | \
+ ((u32)(b) << REG_PAD_KEYCNT_B_SHIFT) | \
+ ((u32)(a) << REG_PAD_KEYCNT_A_SHIFT))
+#endif
+
+#endif //POKEDIAMOND_REGISTERS_H
diff --git a/arm9/lib/src/FS_archive.c b/arm9/lib/src/FS_archive.c
new file mode 100644
index 00000000..6c0f01f1
--- /dev/null
+++ b/arm9/lib/src/FS_archive.c
@@ -0,0 +1,445 @@
+#include "FS_archive.h"
+#include "FS_file.h"
+#include "FS_command.h"
+#include "FSi_util.h"
+#include "MI_memory.h"
+#include "MI_byteAccess.h"
+#include "OS_printf.h"
+
+FSArchive * arc_list = NULL;
+FSDirPos current_dir_pos;
+
+ARM_FUNC u32 FSi_GetPackedName(const char * name, int name_len)
+{
+ u32 ret = 0;
+ if (name_len <= FS_ARCHIVE_NAME_LEN_MAX)
+ {
+ int i = 0;
+ for (; i < name_len; i++)
+ {
+ u32 c = MI_ReadByte(name + i);
+ if (!c)
+ break;
+ c = (u32)(c - 'A');
+ if (c <= (u32)('Z' - 'A'))
+ c = (u32)(c + 'a');
+ else
+ c = (u32)(c + 'A');
+ ret |= (u32)(c << (i * 8));
+ }
+ }
+ return ret;
+}
+
+ARM_FUNC FSResult FSi_ReadMemCallback(struct FSArchive * p_arc, void * dest, u32 pos, u32 size)
+{
+ MI_CpuCopy8((const void *)FS_GetArchiveOffset(p_arc, pos), dest, size);
+ return FS_RESULT_SUCCESS;
+}
+
+ARM_FUNC FSResult FSi_WriteMemCallback(struct FSArchive * p_arc, const void * src, u32 pos, u32 size)
+{
+ MI_CpuCopy8(src, (void *)FS_GetArchiveOffset(p_arc, pos), size);
+ return FS_RESULT_SUCCESS;
+}
+
+ARM_FUNC FSResult FSi_ReadMemoryCore(FSArchive * p_arc, void * dest, u32 pos, u32 size)
+{
+ MI_CpuCopy8((const void *)pos, dest, size);
+ return FS_RESULT_SUCCESS;
+}
+
+ARM_FUNC FSFile * FSi_NextCommand(FSArchive * p_arc)
+{
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ if (FSi_IsArchiveCanceling(p_arc))
+ {
+ FSFile *p, *q;
+ p_arc->flag &= ~FS_ARCHIVE_FLAG_CANCELING;
+ for (p = p_arc->list.next; p; p = q)
+ {
+ q = p->link.next;
+ if (FS_IsCanceling(p))
+ {
+ if (p_arc->list.next == p)
+ p_arc->list.next = q;
+ FSi_ReleaseCommand(p, FS_RESULT_CANCELED);
+ if (!q)
+ q = p_arc->list.next;
+ }
+ }
+ }
+ if (!FSi_IsArchiveSuspending(p_arc) && !FS_IsArchiveSuspended(p_arc))
+ {
+ FSFile * p_file = p_arc->list.next;
+ if (p_file != NULL)
+ {
+ const BOOL is_start = !FSi_IsArchiveRunning(p_arc);
+ if (is_start)
+ p_arc->flag |= FS_ARCHIVE_FLAG_RUNNING;
+ OS_RestoreInterrupts(bak_psr);
+ if (is_start)
+ {
+ if ((p_arc->proc_flag & FS_ARCHIVE_PROC_ACTIVATE) != 0)
+ (*p_arc->proc) (p_file, FS_COMMAND_ACTIVATE);
+ }
+ bak_psr = OS_DisableInterrupts();
+ p_file->stat |= FS_FILE_STATUS_OPERATING;
+ if (FS_IsFileSyncMode(p_file))
+ {
+ OS_WakeupThread(p_file->queue);
+ OS_RestoreInterrupts(bak_psr);
+ return NULL;
+ }
+ OS_RestoreInterrupts(bak_psr);
+ return p_file;
+ }
+ }
+ if (FSi_IsArchiveRunning(p_arc))
+ {
+ p_arc->flag &= ~FS_ARCHIVE_FLAG_RUNNING;
+ if (p_arc->proc_flag & FS_ARCHIVE_PROC_IDLE)
+ {
+ FSFile tmp;
+ FS_InitFile(&tmp);
+ tmp.arc = p_arc;
+ (*p_arc->proc)(&tmp, FS_COMMAND_IDLE);
+ }
+ }
+ if (FSi_IsArchiveSuspending(p_arc))
+ {
+ p_arc->flag &= ~FS_ARCHIVE_FLAG_SUSPENDING;
+ p_arc->flag |= FS_ARCHIVE_FLAG_SUSPEND;
+ OS_WakeupThread(&p_arc->stat_q);
+ }
+ OS_RestoreInterrupts(bak_psr);
+ return NULL;
+}
+
+ARM_FUNC void FSi_ExecuteAsyncCommand(FSFile * p_file)
+{
+ FSArchive *const p_arc = p_file->arc;
+ while (p_file)
+ {
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ p_file->stat |= FS_FILE_STATUS_OPERATING;
+ if (FS_IsFileSyncMode(p_file))
+ {
+ OS_WakeupThread(p_file->queue);
+ OS_RestoreInterrupts(bak_psr);
+ break;
+ }
+ p_file->stat |= FS_FILE_STATUS_ASYNC;
+ OS_RestoreInterrupts(bak_psr);
+ if (FSi_TranslateCommand(p_file, p_file->command) == FS_RESULT_PROC_ASYNC)
+ break;
+ p_file = FSi_NextCommand(p_arc);
+ }
+}
+
+ARM_FUNC BOOL FSi_ExecuteSyncCommand(FSFile * p_file)
+{
+ FSFile * p_target;
+ FSResult ret = FSi_TranslateCommand(p_file, p_file->command);
+ FSi_ReleaseCommand(p_file, ret);
+ p_target = FSi_NextCommand(p_file->arc);
+ if (p_target)
+ FSi_ExecuteAsyncCommand(p_target);
+ return FS_IsSucceeded(p_file);
+}
+
+ARM_FUNC BOOL FSi_SendCommand(FSFile * p_file, FSCommandType command)
+{
+ FSArchive * p_arc = p_file->arc;
+ const int bit = 1 << command;
+ p_file->command = command;
+ p_file->error = FS_RESULT_BUSY;
+ p_file->stat |= FS_FILE_STATUS_BUSY;
+ {
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ if (FSi_IsArchiveUnloading(p_arc))
+ {
+ FSi_ReleaseCommand(p_file, FS_RESULT_CANCELLED);
+ OS_RestoreInterrupts(bak_psr);
+ return FALSE;
+ }
+ if ((bit & FS_ARCHIVE_PROC_SYNC) != 0)
+ p_file->stat |= FS_FILE_STATUS_SYNC;
+ FSi_AppendToList(p_file, (FSFile *)&p_arc->list);
+ if (!FS_IsArchiveSuspended(p_arc) && !FSi_IsArchiveRunning(p_arc))
+ {
+ p_arc->flag |= FS_ARCHIVE_FLAG_RUNNING;
+ OS_RestoreInterrupts(bak_psr);
+ if ((p_arc->proc_flag & FS_ARCHIVE_PROC_ACTIVATE))
+ (*p_arc->proc)(p_file, FS_COMMAND_ACTIVATE);
+ bak_psr = OS_DisableInterrupts();
+ p_file->stat |= FS_FILE_STATUS_OPERATING;
+ if (!FS_IsFileSyncMode(p_file))
+ {
+ OS_RestoreInterrupts(bak_psr);
+ FSi_ExecuteAsyncCommand(p_file);
+ return TRUE;
+ }
+ OS_RestoreInterrupts(bak_psr);
+ }
+ else if (!FS_IsFileSyncMode(p_file))
+ {
+ OS_RestoreInterrupts(bak_psr);
+ return TRUE;
+ }
+ else
+ {
+ do
+ {
+ OS_SleepThread(p_file->queue);
+ } while (!(p_file->stat & FS_FILE_STATUS_OPERATING));
+ OS_RestoreInterrupts(bak_psr);
+ }
+ }
+ return FSi_ExecuteSyncCommand(p_file);
+}
+
+ARM_FUNC void FS_InitArchive(FSArchive * p_arc)
+{
+ MI_CpuClear8(p_arc, sizeof(FSArchive));
+ p_arc->sync_q.head = p_arc->sync_q.tail = NULL;
+ p_arc->stat_q.head = p_arc->stat_q.tail = NULL;
+}
+
+ARM_FUNC FSArchive * const FS_FindArchive(const char * name, int name_len)
+{
+ u32 pack = FSi_GetPackedName(name, name_len);
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ FSArchive * p_arc = arc_list;
+ while (p_arc && (p_arc->name.pack != pack))
+ p_arc = p_arc->next;
+ OS_RestoreInterrupts(bak_psr);
+ return p_arc;
+}
+
+ARM_FUNC BOOL FS_RegisterArchiveName(FSArchive * p_arc, const char * name, int name_len)
+{
+ BOOL ret = FALSE;
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ if (!FS_FindArchive(name, name_len))
+ {
+ FSArchive * p_tail = arc_list;
+ if (!p_tail)
+ {
+ arc_list = p_arc;
+ current_dir_pos.arc = p_arc;
+ current_dir_pos.pos = 0;
+ current_dir_pos.index = 0;
+ current_dir_pos.own_id = 0;
+ }
+ else
+ {
+ while (p_tail->next)
+ p_tail = p_tail->next;
+ p_tail->next = p_arc;
+ p_arc->prev = p_tail;
+ }
+ p_arc->name.pack = FSi_GetPackedName(name, name_len);
+ p_arc->flag |= FS_ARCHIVE_FLAG_REGISTER;
+ ret = TRUE;
+ }
+ OS_RestoreInterrupts(bak_psr);
+ return ret;
+}
+
+ARM_FUNC void FS_ReleaseArchiveName(FSArchive * p_arc)
+{
+ if (p_arc->name.pack)
+ {
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ if (p_arc->next)
+ p_arc->next->prev = p_arc->prev;
+ if (p_arc->prev)
+ p_arc->prev->next = p_arc->next;
+ p_arc->name.pack = 0;
+ p_arc->next = p_arc->prev = NULL;
+ p_arc->flag &= ~FS_ARCHIVE_FLAG_REGISTER;
+ if (current_dir_pos.arc == p_arc)
+ {
+ current_dir_pos.arc = arc_list;
+ current_dir_pos.pos = 0;
+ current_dir_pos.index = 0;
+ current_dir_pos.own_id = 0;
+ }
+ OS_RestoreInterrupts(bak_psr);
+ }
+}
+
+ARM_FUNC BOOL FS_LoadArchive(FSArchive * p_arc, u32 base, u32 fat, u32 fat_size, u32 fnt, u32 fnt_size, FS_ARCHIVE_READ_FUNC read_func, FS_ARCHIVE_WRITE_FUNC write_func)
+{
+ p_arc->base = base;
+ p_arc->fat_size = fat_size;
+ p_arc->fat = p_arc->fat_bak = fat;
+ p_arc->fnt_size = fnt_size;
+ p_arc->fnt = p_arc->fnt_bak = fnt;
+ p_arc->read_func = (read_func != NULL) ? read_func : FSi_ReadMemCallback;
+ p_arc->write_func = (write_func != NULL) ? write_func : FSi_WriteMemCallback;
+ p_arc->table_func = p_arc->read_func;
+ p_arc->load_mem = NULL;
+ p_arc->flag |= FS_ARCHIVE_FLAG_LOADED;
+ return TRUE;
+}
+
+ARM_FUNC BOOL FS_UnloadArchive(FSArchive * p_arc)
+{
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ if (FS_IsArchiveLoaded(p_arc))
+ {
+ if (FS_IsArchiveTableLoaded(p_arc))
+ {
+ OS_TWarning("memory may leak. preloaded-table of archive \"%s\" (0x%08X)", p_arc->name.ptr, p_arc->load_mem);
+ }
+ {
+ FSFile *p, *q;
+ BOOL bak_state = FS_SuspendArchive(p_arc);
+ p_arc->flag |= FS_ARCHIVE_FLAG_UNLOADING;
+ for (p = p_arc->list.next; p; p = q)
+ {
+ q = p->link.next;
+ FSi_ReleaseCommand(p, FS_RESULT_CANCELED);
+ }
+ p_arc->list.next = NULL;
+ if (bak_state)
+ FS_ResumeArchive(p_arc);
+ }
+ p_arc->base = 0;
+ p_arc->fat = 0;
+ p_arc->fat_size = 0;
+ p_arc->fnt = 0;
+ p_arc->fnt_size = 0;
+ p_arc->fat_bak = p_arc->fnt_bak = 0;
+ p_arc->flag &= ~(FS_ARCHIVE_FLAG_CANCELING | FS_ARCHIVE_FLAG_LOADED | FS_ARCHIVE_FLAG_UNLOADING);
+ }
+ OS_RestoreInterrupts(bak_psr);
+ return TRUE;
+}
+
+ARM_FUNC u32 FS_LoadArchiveTables(FSArchive *p_arc, void *p_mem, u32 max_size)
+{
+ u32 total_size = ALIGN_BYTE(p_arc->fat_size + p_arc->fnt_size + 32, 32);
+ if (total_size <= max_size)
+ {
+ u8 *p_cache = (u8 *)ALIGN_BYTE((u32)p_mem, 32);
+ FSFile tmp;
+ FS_InitFile(&tmp);
+ if (FS_OpenFileDirect(&tmp, p_arc, p_arc->fat, p_arc->fat + p_arc->fat_size, (u32)~0))
+ {
+ if (FS_ReadFile(&tmp, p_cache, (s32)p_arc->fat_size) < 0)
+ {
+ MI_CpuFill8(p_cache, 0x00, p_arc->fat_size);
+ }
+ FS_CloseFile(&tmp);
+ }
+ p_arc->fat = (u32)p_cache;
+ p_cache += p_arc->fat_size;
+ if (FS_OpenFileDirect(&tmp, p_arc, p_arc->fnt, p_arc->fnt + p_arc->fnt_size, (u32)~0))
+ {
+ if (FS_ReadFile(&tmp, p_cache, (s32)p_arc->fnt_size) < 0)
+ {
+ MI_CpuFill8(p_cache, 0x00, p_arc->fnt_size);
+ }
+ FS_CloseFile(&tmp);
+ }
+ p_arc->fnt = (u32)p_cache;
+ p_arc->load_mem = p_mem;
+ p_arc->table_func = FSi_ReadMemoryCore;
+ p_arc->flag |= FS_ARCHIVE_FLAG_TABLE_LOAD;
+ }
+ return total_size;
+}
+
+ARM_FUNC void * FS_UnloadArchiveTables(FSArchive * p_arc)
+{
+ void *ret = NULL;
+ if (FS_IsArchiveLoaded(p_arc))
+ {
+ BOOL bak_stat = FS_SuspendArchive(p_arc);
+ if (FS_IsArchiveTableLoaded(p_arc))
+ {
+ p_arc->flag &= ~FS_ARCHIVE_FLAG_TABLE_LOAD;
+ ret = p_arc->load_mem;
+ p_arc->load_mem = NULL;
+ p_arc->fat = p_arc->fat_bak;
+ p_arc->fnt = p_arc->fnt_bak;
+ p_arc->table_func = p_arc->read_func;
+ }
+ if (bak_stat)
+ FS_ResumeArchive(p_arc);
+ }
+ return ret;
+}
+
+ARM_FUNC BOOL FS_SuspendArchive(FSArchive * p_arc)
+{
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ const BOOL bak_stat = !FS_IsArchiveSuspended(p_arc);
+ if (bak_stat)
+ {
+ if (FSi_IsArchiveRunning(p_arc))
+ {
+ p_arc->flag |= FS_ARCHIVE_FLAG_SUSPENDING;
+ do {
+ OS_SleepThread(&p_arc->stat_q);
+ } while (FSi_IsArchiveSuspending(p_arc));
+ }
+ else
+ {
+ p_arc->flag |= FS_ARCHIVE_FLAG_SUSPEND;
+ }
+ }
+ OS_RestoreInterrupts(bak_psr);
+ return bak_stat;
+}
+
+ARM_FUNC BOOL FS_ResumeArchive(FSArchive * p_arc)
+{
+ FSFile * p_target = NULL;
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ const BOOL bak_stat = !FS_IsArchiveSuspended(p_arc);
+ if (!bak_stat)
+ {
+ p_arc->flag &= ~FS_ARCHIVE_FLAG_SUSPEND;
+ p_target = FSi_NextCommand(p_arc);
+ }
+ OS_RestoreInterrupts(bak_psr);
+ if (p_target)
+ FSi_ExecuteAsyncCommand(p_target);
+ return bak_stat;
+}
+
+ARM_FUNC void FS_SetArchiveProc(struct FSArchive * p_arc, FS_ARCHIVE_PROC_FUNC proc, u32 flags)
+{
+ if (!flags)
+ proc = NULL;
+ else if (!proc)
+ flags = 0;
+ p_arc->proc = proc;
+ p_arc->proc_flag = flags;
+}
+
+ARM_FUNC void FS_NotifyArchiveAsyncEnd(FSArchive *p_arc, FSResult ret)
+{
+ if (FSi_IsArchiveAsync(p_arc))
+ {
+ FSFile *p_file = p_arc->list.next;
+ p_arc->flag &= ~FS_ARCHIVE_FLAG_IS_ASYNC;
+ FSi_ReleaseCommand(p_file, ret);
+ p_file = FSi_NextCommand(p_arc);
+ if (p_file)
+ FSi_ExecuteAsyncCommand(p_file);
+ }
+ else
+ {
+ FSFile *p_file = p_arc->list.next;
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ p_file->error = ret;
+ p_arc->flag &= ~FS_ARCHIVE_FLAG_IS_SYNC;
+ OS_WakeupThread(&p_arc->sync_q);
+ (void)OS_RestoreInterrupts(bak_psr);
+ }
+}
diff --git a/arm9/lib/src/FS_command.c b/arm9/lib/src/FS_command.c
new file mode 100644
index 00000000..818a65ea
--- /dev/null
+++ b/arm9/lib/src/FS_command.c
@@ -0,0 +1,75 @@
+#include "FS_file.h"
+#include "FS_archive.h"
+#include "FSi_util.h"
+#include "FS_command.h"
+
+ARM_FUNC void FSi_ReleaseCommand(FSFile * p_file, FSResult ret)
+{
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ FSi_CutFromList(p_file);
+ p_file->stat &= ~(FS_FILE_STATUS_CANCEL | FS_FILE_STATUS_BUSY | FS_FILE_STATUS_SYNC | FS_FILE_STATUS_ASYNC | FS_FILE_STATUS_OPERATING);
+ p_file->error = ret;
+ OS_WakeupThread(p_file->queue);
+ OS_RestoreInterrupts(bak_psr);
+}
+
+ARM_FUNC FSResult FSi_TranslateCommand(FSFile *p_file, FSCommandType command)
+{
+ FSResult ret;
+
+ FSArchive *const p_arc = p_file->arc;
+ const int bit = (1 << command);
+
+ if (FS_IsFileSyncMode(p_file))
+ p_arc->flag |= FS_ARCHIVE_FLAG_IS_SYNC;
+ else
+ p_arc->flag |= FS_ARCHIVE_FLAG_IS_ASYNC;
+
+ if ((p_arc->proc_flag & bit) != 0)
+ {
+ switch (ret = (*p_arc->proc) (p_file, command))
+ {
+ case FS_RESULT_SUCCESS:
+ case FS_RESULT_FAILURE:
+ case FS_RESULT_UNSUPPORTED:
+ p_file->error = ret;
+ break;
+ case FS_RESULT_PROC_ASYNC:
+ break;
+ case FS_RESULT_PROC_UNKNOWN:
+ ret = FS_RESULT_PROC_DEFAULT;
+ p_arc->proc_flag &= ~bit;
+ break;
+ }
+ }
+ else
+ {
+ ret = FS_RESULT_PROC_DEFAULT;
+ }
+ if (ret == FS_RESULT_PROC_DEFAULT)
+ {
+ ret = (*fsi_default_command[command]) (p_file);
+ }
+ if (ret == FS_RESULT_PROC_ASYNC)
+ {
+ if (FS_IsFileSyncMode(p_file))
+ {
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ while (FSi_IsArchiveSync(p_arc))
+ OS_SleepThread(&p_arc->sync_q);
+ ret = p_file->error;
+ OS_RestoreInterrupts(bak_psr);
+ }
+ }
+ else if (!FS_IsFileSyncMode(p_file))
+ {
+ p_arc->flag &= ~FS_ARCHIVE_FLAG_IS_ASYNC;
+ FSi_ReleaseCommand(p_file, ret);
+ }
+ else
+ {
+ p_arc->flag &= ~FS_ARCHIVE_FLAG_IS_SYNC;
+ p_file->error = ret;
+ }
+ return ret;
+}
diff --git a/arm9/lib/src/FS_command_default.c b/arm9/lib/src/FS_command_default.c
new file mode 100644
index 00000000..002e1d53
--- /dev/null
+++ b/arm9/lib/src/FS_command_default.c
@@ -0,0 +1,468 @@
+#include "nitro.h"
+#include "FS_file.h"
+#include "FS_command.h"
+#include "FS_archive.h"
+#include "MI_byteAccess.h"
+#include "MI_memory.h"
+#include "FSi_util.h"
+
+typedef struct
+{
+ FSArchive *arc;
+ u32 pos;
+}
+FSiSyncReadParam;
+
+ARM_FUNC FSResult FSi_ReadFileCommand(FSFile * p_file);
+ARM_FUNC FSResult FSi_WriteFileCommand(FSFile * p_file);
+ARM_FUNC FSResult FSi_SeekDirCommand(FSFile * p_file);
+ARM_FUNC FSResult FSi_ReadDirCommand(FSFile * p_file);
+ARM_FUNC FSResult FSi_FindPathCommand(FSFile * p_file);
+ARM_FUNC FSResult FSi_GetPathCommand(FSFile * p_file);
+ARM_FUNC FSResult FSi_OpenFileFastCommand(FSFile * p_file);
+ARM_FUNC FSResult FSi_OpenFileDirectCommand(FSFile * p_file);
+ARM_FUNC FSResult FSi_CloseFileCommand(FSFile * p_file);
+
+FSResult (*const fsi_default_command[])(FSFile *) = {
+ [FS_COMMAND_READFILE] = FSi_ReadFileCommand,
+ [FS_COMMAND_WRITEFILE] = FSi_WriteFileCommand,
+ [FS_COMMAND_SEEKDIR] = FSi_SeekDirCommand,
+ [FS_COMMAND_READDIR] = FSi_ReadDirCommand,
+ [FS_COMMAND_FINDPATH] = FSi_FindPathCommand,
+ [FS_COMMAND_GETPATH] = FSi_GetPathCommand,
+ [FS_COMMAND_OPENFILEFAST] = FSi_OpenFileFastCommand,
+ [FS_COMMAND_OPENFILEDIRECT] = FSi_OpenFileDirectCommand,
+ [FS_COMMAND_CLOSEFILE] = FSi_CloseFileCommand,
+};
+
+// Case-insensitive string comparison
+ARM_FUNC u32 FSi_StrNICmp(const char * str1, const char * str2, u32 len)
+{
+ int i;
+ for (i = 0; i < len; i++)
+ {
+ u32 c = MI_ReadByte(str1 + i) - 'A';
+ u32 d = MI_ReadByte(str2 + i) - 'A';
+ if (c <= 'Z' - 'A')
+ c += 'a' - 'A';
+ if (d <= 'Z' - 'A')
+ d += 'a' - 'A';
+ if (c != d)
+ return c - d;
+ }
+ return 0;
+}
+
+ARM_FUNC FSResult FSi_ReadTable(FSiSyncReadParam * p, void * dst, u32 len)
+{
+ FSResult ret;
+ FSArchive * const p_arc = p->arc;
+ p_arc->flag |= FS_ARCHIVE_FLAG_IS_SYNC;
+ switch (ret = (*p_arc->table_func)(p_arc, dst, p->pos, len))
+ {
+ case FS_RESULT_SUCCESS:
+ case FS_RESULT_FAILURE:
+ p_arc->flag &= ~FS_ARCHIVE_FLAG_IS_SYNC;
+ break;
+ case FS_RESULT_PROC_ASYNC:
+ {
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ while (FSi_IsArchiveSync(p_arc))
+ OS_SleepThread(&p_arc->sync_q);
+ OS_RestoreInterrupts(bak_psr);
+ ret = p_arc->list.next->error;
+ }
+ break;
+ }
+ p->pos += len;
+ return ret;
+}
+
+ARM_FUNC FSResult FSi_SeekDirDirect(FSFile * p_dir, u32 id)
+{
+ p_dir->stat |= FS_FILE_STATUS_SYNC;
+ p_dir->arg.seekdir.pos.arc = p_dir->arc;
+ p_dir->arg.seekdir.pos.pos = 0;
+ p_dir->arg.seekdir.pos.index = 0;
+ p_dir->arg.seekdir.pos.own_id = (u16)id;
+ return FSi_TranslateCommand(p_dir, FS_COMMAND_SEEKDIR);
+}
+
+// The actual commands
+ARM_FUNC FSResult FSi_ReadFileCommand(FSFile * p_file)
+{
+ FSArchive *const p_arc = p_file->arc;
+ const u32 pos = p_file->prop.file.pos;
+ const u32 len = p_file->arg.readfile.len;
+ void *const dst = p_file->arg.readfile.dst;
+ p_file->prop.file.pos += len;
+ return (*p_arc->read_func)(p_arc, dst, pos, len);
+}
+
+ARM_FUNC FSResult FSi_WriteFileCommand(FSFile * p_file)
+{
+ FSArchive *const p_arc = p_file->arc;
+ const u32 pos = p_file->prop.file.pos;
+ const u32 len = p_file->arg.writefile.len;
+ const void *const src = p_file->arg.writefile.src;
+ p_file->prop.file.pos += len;
+ return (*p_arc->write_func)(p_arc, src, pos, len);
+}
+
+ARM_FUNC FSResult FSi_SeekDirCommand(FSFile * p_dir)
+{
+ FSResult ret;
+ FSArchive *const p_arc = p_dir->arc;
+ const FSDirPos *const arg = &p_dir->arg.seekdir.pos;
+
+ FSArchiveFNT fnt_entry;
+ FSiSyncReadParam param;
+ param.arc = p_arc;
+ param.pos = p_arc->fnt + arg->own_id * sizeof(fnt_entry);
+ ret = FSi_ReadTable(&param, &fnt_entry, sizeof(fnt_entry));
+ if (ret == FS_RESULT_SUCCESS)
+ {
+ p_dir->prop.dir.pos = *arg;
+ if ((arg->index == 0) && (arg->pos == 0))
+ {
+ p_dir->prop.dir.pos.index = fnt_entry.index;
+ p_dir->prop.dir.pos.pos = p_arc->fnt + fnt_entry.start;
+ }
+ p_dir->prop.dir.parent = (u32) (fnt_entry.parent & BIT_MASK(12));
+ }
+ return ret;
+}
+
+ARM_FUNC FSResult FSi_ReadDirCommand(FSFile *p_dir)
+{
+ FSDirEntry *p_entry = p_dir->arg.readdir.p_entry;
+ FSResult ret;
+
+ FSiSyncReadParam param;
+ param.arc = p_dir->arc;
+ param.pos = p_dir->prop.dir.pos.pos;
+
+ {
+ u8 len;
+ ret = FSi_ReadTable(&param, &len, sizeof(len));
+ if (ret != FS_RESULT_SUCCESS)
+ return ret;
+ p_entry->name_len = (u32)(len & BIT_MASK(7));
+ p_entry->is_directory = (u32)((len >> 7) & 1);
+ }
+ if (p_entry->name_len == 0)
+ return FS_RESULT_FAILURE;
+
+ if (!p_dir->arg.readdir.skip_string)
+ {
+ ret = FSi_ReadTable(&param, p_entry->name, p_entry->name_len);
+ if (ret != FS_RESULT_SUCCESS)
+ return ret;
+ MI_WriteByte((u8 *)p_entry->name + p_entry->name_len, (u8)'\0');
+ }
+ else
+ {
+ param.pos += p_entry->name_len;
+ }
+
+ if (p_entry->is_directory)
+ {
+ u16 id;
+ ret = FSi_ReadTable(&param, &id, sizeof(id));
+ if (ret != FS_RESULT_SUCCESS)
+ return ret;
+ p_entry->dir_id.arc = p_dir->arc;
+ p_entry->dir_id.own_id = (u16)(id & BIT_MASK(12));
+ p_entry->dir_id.index = 0;
+ p_entry->dir_id.pos = 0;
+ }
+ else
+ {
+ p_entry->file_id.arc = p_dir->arc;
+ p_entry->file_id.file_id = p_dir->prop.dir.pos.index;
+ ++p_dir->prop.dir.pos.index;
+ }
+ p_dir->prop.dir.pos.pos = param.pos;
+
+ return ret;
+}
+
+ARM_FUNC FSResult FSi_FindPathCommand(FSFile *p_dir)
+{
+ const char *path = p_dir->arg.findpath.path;
+ const BOOL is_dir = p_dir->arg.findpath.find_directory;
+ p_dir->arg.seekdir.pos = p_dir->arg.findpath.pos;
+ (void)FSi_TranslateCommand(p_dir, FS_COMMAND_SEEKDIR);
+ for (; MI_ReadByte(path); path += (MI_ReadByte(path) ? 1 : 0))
+ {
+ u32 is_directory;
+ int name_len = 0;
+ while ((is_directory = MI_ReadByte(path + name_len)),
+ (is_directory && !FSi_IsSlash(is_directory)))
+ ++name_len;
+ if (is_directory || is_dir)
+ is_directory = 1;
+ if (name_len == 0)
+ {
+ return FS_RESULT_FAILURE;
+ }
+ else if (MI_ReadByte(path) == '.')
+ {
+ if (name_len == 1)
+ {
+ path += 1;
+ continue;
+ }
+ else if ((name_len == 2) & (MI_ReadByte(path + 1) == '.'))
+ {
+ if (p_dir->prop.dir.pos.own_id != 0)
+ FSi_SeekDirDirect(p_dir, p_dir->prop.dir.parent);
+ path += 2;
+ continue;
+ }
+ }
+ if (name_len > FS_FILE_NAME_MAX)
+ {
+ return FS_RESULT_FAILURE;
+ }
+ else
+ {
+ FSDirEntry etr;
+ p_dir->arg.readdir.p_entry = &etr;
+ p_dir->arg.readdir.skip_string = FALSE;
+ for (;;)
+ {
+ if (FSi_TranslateCommand(p_dir, FS_COMMAND_READDIR) != FS_RESULT_SUCCESS)
+ return FS_RESULT_FAILURE;
+ if ((is_directory != etr.is_directory) ||
+ (name_len != etr.name_len) || FSi_StrNICmp(path, etr.name, (u32)name_len))
+ continue;
+ if (is_directory)
+ {
+ path += name_len;
+ p_dir->arg.seekdir.pos = etr.dir_id;
+ (void)FSi_TranslateCommand(p_dir, FS_COMMAND_SEEKDIR);
+ break;
+ }
+ else if (is_dir)
+ {
+ return FS_RESULT_FAILURE;
+ }
+ else
+ {
+ *p_dir->arg.findpath.result.file = etr.file_id;
+ return FS_RESULT_SUCCESS;
+ }
+ }
+ }
+ }
+ if (!is_dir)
+ return FS_RESULT_FAILURE;
+ *p_dir->arg.findpath.result.dir = p_dir->prop.dir.pos;
+ return FS_RESULT_SUCCESS;
+}
+
+ARM_FUNC FSResult FSi_GetPathCommand(FSFile *p_file)
+{
+ FSArchive *const p_arc = p_file->arc;
+
+ FSGetPathInfo *p_info = &p_file->arg.getpath;
+
+ FSDirEntry entry;
+ FSFile tmp;
+ u32 dir_id;
+ u32 file_id;
+ u32 id;
+ u32 len;
+
+ enum
+ { INVALID_ID = 0x10000 };
+
+ FS_InitFile(&tmp);
+ tmp.arc = p_file->arc;
+
+ if (FS_IsDir(p_file))
+ {
+ dir_id = p_file->prop.dir.pos.own_id;
+ file_id = INVALID_ID;
+ }
+ else
+ {
+ file_id = p_file->prop.file.own_id;
+ if (p_info->total_len != 0)
+ {
+ dir_id = p_info->dir_id;
+ }
+ else
+ {
+ u32 pos = 0;
+ u32 num_dir = 0;
+ dir_id = INVALID_ID;
+ do
+ {
+ FSi_SeekDirDirect(&tmp, pos);
+ if (!pos)
+ num_dir = tmp.prop.dir.parent;
+ tmp.arg.readdir.p_entry = &entry;
+ tmp.arg.readdir.skip_string = TRUE;
+ while (FSi_TranslateCommand(&tmp, FS_COMMAND_READDIR) == FS_RESULT_SUCCESS)
+ {
+ if (!entry.is_directory && (entry.file_id.file_id == file_id))
+ {
+ dir_id = tmp.prop.dir.pos.own_id;
+ break;
+ }
+ }
+ }
+ while ((dir_id == INVALID_ID) && (++pos < num_dir));
+ }
+ }
+ if (dir_id == INVALID_ID)
+ {
+ p_info->total_len = 0;
+ return FS_RESULT_FAILURE;
+ }
+ if (p_info->total_len == 0)
+ {
+ len = 0;
+ if (p_arc->name.pack <= 0x000000FF)
+ len += 1;
+ else if (p_arc->name.pack <= 0x0000FF00)
+ len += 2;
+ else
+ len += 3;
+ len += 1 + 1;
+ if (file_id != INVALID_ID)
+ len += entry.name_len;
+ id = dir_id;
+ if (id != 0)
+ {
+ FSi_SeekDirDirect(&tmp, id);
+ do
+ {
+ FSi_SeekDirDirect(&tmp, tmp.prop.dir.parent);
+ tmp.arg.readdir.p_entry = &entry;
+ tmp.arg.readdir.skip_string = TRUE;
+ while (FSi_TranslateCommand(&tmp, FS_COMMAND_READDIR) == FS_RESULT_SUCCESS)
+ {
+ if (entry.is_directory && (entry.dir_id.own_id == id))
+ {
+ len += entry.name_len + 1;
+ break;
+ }
+ }
+ id = tmp.prop.dir.pos.own_id;
+ }
+ while (id != 0);
+ }
+ p_info->total_len = (u16)(len + 1);
+ p_info->dir_id = (u16)dir_id;
+ }
+ if (!p_info->buf)
+ return FS_RESULT_SUCCESS;
+ if (p_info->buf_len < p_info->total_len)
+ return FS_RESULT_FAILURE;
+ else
+ {
+ u8 *dst = p_info->buf;
+ u32 total = p_info->total_len;
+ u32 pos = 0;
+ if (p_arc->name.pack <= 0x000000FF)
+ len = 1;
+ else if (p_arc->name.pack <= 0x0000FF00)
+ len = 2;
+ else
+ len = 3;
+ MI_CpuCopy8(p_arc->name.ptr, dst + pos, len);
+ pos += len;
+ MI_CpuCopy8(":/", dst + pos, 2);
+ pos += 2;
+ id = dir_id;
+ FSi_SeekDirDirect(&tmp, id);
+ if (file_id != INVALID_ID)
+ {
+ tmp.arg.readdir.p_entry = &entry;
+ tmp.arg.readdir.skip_string = FALSE;
+ while (FSi_TranslateCommand(&tmp, FS_COMMAND_READDIR) == FS_RESULT_SUCCESS)
+ {
+ if (!entry.is_directory && (entry.file_id.file_id == file_id))
+ break;
+ }
+ len = entry.name_len + 1;
+ MI_CpuCopy8(entry.name, dst + total - len, len);
+ total -= len;
+ }
+ else
+ {
+ MI_WriteByte(dst + total - 1, '\0');
+ total -= 1;
+ }
+ if (id != 0)
+ {
+ do
+ {
+ FSi_SeekDirDirect(&tmp, tmp.prop.dir.parent);
+ tmp.arg.readdir.p_entry = &entry;
+ tmp.arg.readdir.skip_string = FALSE;
+ MI_WriteByte(dst + total - 1, '/');
+ total -= 1;
+ while (FSi_TranslateCommand(&tmp, FS_COMMAND_READDIR) == FS_RESULT_SUCCESS)
+ {
+ if (entry.is_directory && (entry.dir_id.own_id == id))
+ {
+ len = entry.name_len;
+ MI_CpuCopy8(entry.name, dst + total - len, len);
+ total -= len;
+ break;
+ }
+ }
+ id = tmp.prop.dir.pos.own_id;
+ }
+ while (id != 0);
+ }
+ }
+
+ return FS_RESULT_SUCCESS;
+}
+
+ARM_FUNC FSResult FSi_OpenFileFastCommand(FSFile * p_file)
+{
+ FSArchive *const p_arc = p_file->arc;
+ const FSFileID *p_id = &p_file->arg.openfilefast.id;
+ const u32 index = p_id->file_id;
+ FSResult ret;
+
+ {
+ u32 pos = (u32)(index * sizeof(FSArchiveFAT));
+ if (pos >= p_arc->fat_size)
+ return FS_RESULT_FAILURE;
+ else
+ {
+ FSArchiveFAT fat;
+ FSiSyncReadParam param;
+ param.arc = p_arc;
+ param.pos = p_arc->fat + pos;
+ ret = FSi_ReadTable(&param, &fat, sizeof(fat));
+ if (ret != FS_RESULT_SUCCESS)
+ return ret;
+ p_file->arg.openfiledirect.top = fat.top;
+ p_file->arg.openfiledirect.bottom = fat.bottom;
+ p_file->arg.openfiledirect.index = index;
+ return FSi_TranslateCommand(p_file, FS_COMMAND_OPENFILEDIRECT);
+ }
+ }
+}
+
+ARM_FUNC FSResult FSi_OpenFileDirectCommand(FSFile * p_file)
+{
+ p_file->prop.file.top = p_file->arg.openfiledirect.top;
+ p_file->prop.file.pos = p_file->arg.openfiledirect.top;
+ p_file->prop.file.bottom = p_file->arg.openfiledirect.bottom;
+ p_file->prop.file.own_id = p_file->arg.openfiledirect.index;
+ return FS_RESULT_SUCCESS;
+}
+
+ARM_FUNC FSResult FSi_CloseFileCommand(FSFile * p_file)
+{
+ return FS_RESULT_SUCCESS;
+}
diff --git a/arm9/lib/src/FS_file.c b/arm9/lib/src/FS_file.c
new file mode 100644
index 00000000..8bca5c8e
--- /dev/null
+++ b/arm9/lib/src/FS_file.c
@@ -0,0 +1,242 @@
+#include "nitro.h"
+#include "MI_byteAccess.h"
+#include "FS_rom.h"
+#include "FS_file.h"
+#include "FSi_util.h"
+
+extern FSDirPos current_dir_pos;
+BOOL is_init = FALSE;
+
+ARM_FUNC void FS_Init(u32 default_dma_no)
+{
+ if (!is_init)
+ {
+ is_init = TRUE;
+ FSi_InitRom(default_dma_no);
+ }
+}
+
+ARM_FUNC BOOL FS_IsAvailable(void)
+{
+ return is_init;
+}
+
+ARM_FUNC void FS_InitFile(FSFile * p_file)
+{
+ p_file->link.next = p_file->link.prev = NULL;
+ OS_InitThreadQueue(p_file->queue);
+ p_file->arc = NULL;
+ p_file->command = FS_COMMAND_INVALID;
+ p_file->stat = 0;
+}
+
+static BOOL FSi_FindPath(FSFile * p_dir, const char * path, FSFileID * p_file_id, FSDirPos * p_dir_pos)
+{
+ FSDirPos pos;
+ if (FSi_IsSlash(MI_ReadByte(path)))
+ {
+ pos.arc = current_dir_pos.arc;
+ pos.own_id = 0;
+ pos.pos = 0;
+ pos.index = 0;
+ path++;
+ }
+ else
+ {
+ int i;
+ pos = current_dir_pos;
+ for (i = 0; i <= FS_ARCHIVE_NAME_LEN_MAX; ++i)
+ {
+ u32 c = MI_ReadByte(path + i);
+ if (!c || FSi_IsSlash(c))
+ break;
+ else if (c == ':')
+ {
+ FSArchive * const p_arc = FS_FindArchive(path, i);
+ if (!p_arc)
+ {
+ return FALSE;
+ }
+ else if (!FS_IsArchiveLoaded(p_arc))
+ {
+ return FALSE;
+ }
+ pos.arc = p_arc;
+ pos.pos = 0;
+ pos.index = 0;
+ pos.own_id = 0;
+ path += i + 1;
+ if (FSi_IsSlash(MI_ReadByte(path)))
+ ++path;
+ break;
+ }
+ }
+ }
+ p_dir->arc = pos.arc;
+ p_dir->arg.findpath.path = path;
+ p_dir->arg.findpath.pos = pos;
+ if (p_dir_pos)
+ {
+ p_dir->arg.findpath.find_directory = TRUE;
+ p_dir->arg.findpath.result.dir = p_dir_pos;
+ }
+ else
+ {
+ p_dir->arg.findpath.find_directory = FALSE;
+ p_dir->arg.findpath.result.file = p_file_id;
+ }
+ return FSi_SendCommand(p_dir, FS_COMMAND_FINDPATH);
+}
+
+ARM_FUNC int FSi_ReadFileCore(FSFile * p_file, void * dst, s32 len, BOOL async)
+{
+ const s32 pos = p_file->prop.file.pos;
+ const s32 rest = p_file->prop.file.bottom - pos;
+ const u32 org = len;
+ if (len > rest)
+ len = rest;
+ if (len < 0)
+ len = 0;
+ p_file->arg.readfile.dst = dst;
+ p_file->arg.readfile.len_org = org;
+ p_file->arg.readfile.len = len;
+ if (!async)
+ p_file->stat |= FS_FILE_STATUS_SYNC;
+ FSi_SendCommand(p_file, FS_COMMAND_READFILE);
+ if (!async)
+ {
+ if (FS_WaitAsync(p_file))
+ len = p_file->prop.file.pos - pos;
+ else
+ len = -1;
+ }
+ return len;
+}
+
+ARM_FUNC BOOL FS_ConvertPathToFileID(FSFileID * p_file_id, const char * path)
+{
+ FSFile dir;
+ FS_InitFile(&dir);
+ if (!FSi_FindPath(&dir, path, p_file_id, NULL))
+ return FALSE;
+ return TRUE;
+}
+
+ARM_FUNC BOOL FS_OpenFileDirect(FSFile * p_file, FSArchive * p_arc, u32 image_top, u32 image_bottom, u32 file_index)
+{
+ p_file->arc = p_arc;
+ p_file->arg.openfiledirect.index = file_index;
+ p_file->arg.openfiledirect.top = image_top;
+ p_file->arg.openfiledirect.bottom = image_bottom;
+ if (!FSi_SendCommand(p_file, FS_COMMAND_OPENFILEDIRECT))
+ return FALSE;
+ p_file->stat |= FS_FILE_STATUS_IS_FILE;
+ p_file->stat &= ~FS_FILE_STATUS_IS_DIR;
+ return TRUE;
+}
+
+ARM_FUNC BOOL FS_OpenFileFast(FSFile * p_file, FSFileID file_id)
+{
+ if (!file_id.arc)
+ return FALSE;
+ p_file->arc = file_id.arc;
+ p_file->arg.openfilefast.id = file_id;
+ if (!FSi_SendCommand(p_file, FS_COMMAND_OPENFILEFAST))
+ return FALSE;
+ p_file->stat |= FS_FILE_STATUS_IS_FILE;
+ p_file->stat &= ~FS_FILE_STATUS_IS_DIR;
+ return TRUE;
+}
+
+ARM_FUNC BOOL FS_OpenFile(FSFile * p_file, const char * path)
+{
+ FSFileID file_id;
+ return FS_ConvertPathToFileID(&file_id, path) && FS_OpenFileFast(p_file, file_id);
+}
+
+ARM_FUNC BOOL FS_CloseFile(FSFile * p_file)
+{
+ if (!FSi_SendCommand(p_file, FS_COMMAND_CLOSEFILE))
+ return FALSE;
+ p_file->arc = NULL;
+ p_file->command = FS_COMMAND_INVALID;
+ p_file->stat &= ~(FS_FILE_STATUS_IS_FILE | FS_FILE_STATUS_IS_DIR);
+ return TRUE;
+}
+
+ARM_FUNC BOOL FS_WaitAsync(FSFile * p_file)
+{
+ BOOL is_owner = FALSE;
+ OSIntrMode bak_par = OS_DisableInterrupts();
+ if (FS_IsBusy(p_file))
+ {
+ is_owner = !(p_file->stat & (FS_FILE_STATUS_SYNC | FS_FILE_STATUS_OPERATING));
+ if (is_owner)
+ {
+ p_file->stat |= FS_FILE_STATUS_SYNC;
+ do
+ {
+ OS_SleepThread(p_file->queue);
+ } while (!(p_file->stat & FS_FILE_STATUS_OPERATING));
+ }
+ else
+ {
+ do
+ {
+ OS_SleepThread(p_file->queue);
+ } while (FS_IsBusy(p_file));
+ }
+ }
+ (void)OS_RestoreInterrupts(bak_par);
+ if (is_owner)
+ {
+ return FSi_ExecuteSyncCommand(p_file);
+ }
+
+ return FS_IsSucceeded(p_file);
+}
+
+ARM_FUNC int FS_ReadFileAsync(FSFile * p_file, void * dst, s32 len)
+{
+ return FSi_ReadFileCore(p_file, dst, len, TRUE);
+}
+
+ARM_FUNC int FS_ReadFile(FSFile * p_file, void * dst, s32 len)
+{
+ return FSi_ReadFileCore(p_file, dst, len, FALSE);
+}
+
+ARM_FUNC BOOL FS_SeekFile(FSFile * p_file, int offset, FSSeekFileMode origin)
+{
+ switch (origin)
+ {
+ case FS_SEEK_SET:
+ offset += p_file->prop.file.top;
+ break;
+ case FS_SEEK_CUR:
+ offset += p_file->prop.file.pos;
+ break;
+ case FS_SEEK_END:
+ offset += p_file->prop.file.bottom;
+ break;
+ default:
+ return FALSE;
+ }
+ if (offset < (s32)p_file->prop.file.top)
+ offset = (s32)p_file->prop.file.top;
+ if (offset > (s32)p_file->prop.file.bottom)
+ offset = (s32)p_file->prop.file.bottom;
+ p_file->prop.file.pos = offset;
+ return TRUE;
+}
+
+ARM_FUNC BOOL FS_ChangeDir(const char * path)
+{
+ FSDirPos pos;
+ FSFile dir;
+ FS_InitFile(&dir);
+ if (!FSi_FindPath(&dir, path, NULL, &pos))
+ return FALSE;
+ current_dir_pos = pos;
+ return TRUE;
+}
diff --git a/arm9/lib/src/FS_overlay.c b/arm9/lib/src/FS_overlay.c
new file mode 100644
index 00000000..79a3b43e
--- /dev/null
+++ b/arm9/lib/src/FS_overlay.c
@@ -0,0 +1,320 @@
+#include "nitro.h"
+#include "DGT_common.h"
+#include "DGT_dgt.h"
+#include "OS_cache.h"
+#include "OS_system.h"
+#include "OS_printf.h"
+#include "MI_memory.h"
+#include "MI_uncompress.h"
+#include "FS_rom.h"
+#include "FS_overlay.h"
+#include "FS_mw_dtor.h"
+#include "MB_mb.h"
+
+#define FS_OVERLAY_FLAG_COMP 0x0001
+#define FS_OVERLAY_FLAG_AUTH 0x0002
+#define FS_OVERLAY_DIGEST_SIZE DGT_HASH2_DIGEST_SIZE
+
+ARM_FUNC u32 FSi_GetOverlayBinarySize(FSOverlayInfo * p_ovi)
+{
+ u32 size = (p_ovi->header.flag & FS_OVERLAY_FLAG_COMP)
+ ? p_ovi->header.compressed
+ : p_ovi->header.ram_size;
+ return size;
+}
+
+ARM_FUNC void FS_ClearOverlayImage(FSOverlayInfo * p_ovi)
+{
+ u8 * const im_start = FS_GetOverlayAddress(p_ovi);
+ u32 const ram_size = FS_GetOverlayImageSize(p_ovi);
+ u32 const total_size = FS_GetOverlayTotalSize(p_ovi);
+
+ IC_InvalidateRange(im_start, total_size);
+ DC_InvalidateRange(im_start, total_size);
+ MI_CpuFill8(im_start + ram_size, 0, total_size - ram_size);
+}
+
+ARM_FUNC FSFileID FS_GetOverlayFileID(FSOverlayInfo * p_ovi)
+{
+ FSFileID ret;
+ ret.arc = &fsi_arc_rom;
+ ret.file_id = p_ovi->header.file_id;
+ return ret;
+}
+
+ARM_FUNC BOOL FSi_LoadOverlayInfoCore(FSOverlayInfo * p_ovi, MIProcessor target, FSOverlayID id, FSArchive * arc, u32 offset_arm9, u32 len_arm9, u32 offset_arm7, u32 len_arm7)
+{
+ CARDRomRegion pr[1];
+ u32 pos;
+ if (target == MI_PROCESSOR_ARM9)
+ {
+ pr->offset = offset_arm9;
+ pr->length = len_arm9;
+ }
+ else
+ {
+ pr->offset = offset_arm7;
+ pr->length = len_arm7;
+ }
+ pos = (u32) id * sizeof(FSOverlayInfoHeader);
+ if (pos >= pr->length)
+ return FALSE;
+
+ FSFile file[1];
+ FS_InitFile(file);
+ // BOOL FS_OpenFileDirect(FSFile * p_file, FSArchive * p_arc, u32 image_top, u32 image_bottom, u32 file_index)
+ if (!FS_OpenFileDirect(file, arc, pr->offset + pos, pr->offset + pr->length, (u32)~0))
+ return FALSE;
+ if (FS_ReadFile(file, p_ovi, sizeof(FSOverlayInfoHeader)) != sizeof(FSOverlayInfoHeader))
+ {
+ FS_CloseFile(file);
+ return FALSE;
+ }
+ FS_CloseFile(file);
+ p_ovi->target = target;
+ if (!FS_OpenFileFast(file, FS_GetOverlayFileID(p_ovi)))
+ return FALSE;
+ p_ovi->file_pos.offset = FS_GetFileImageTop(file);
+ p_ovi->file_pos.length = FS_GetLength(file);
+ FS_CloseFile(file);
+ return TRUE;
+}
+
+ARM_FUNC BOOL FS_LoadOverlayInfo(FSOverlayInfo * p_ovi, MIProcessor target, FSOverlayID id)
+{
+ CARDRomRegion * const pr = (target == MI_PROCESSOR_ARM9) ? &fsi_ovt9 : &fsi_ovt7;
+ if (pr->offset)
+ {
+ FSFile file[1];
+ const u32 pos = id * sizeof(FSOverlayInfoHeader);
+ if (pos >= pr->length)
+ return FALSE;
+ MI_CpuCopy8((const void *)(pr->offset + pos), p_ovi, sizeof(FSOverlayInfoHeader));
+ p_ovi->target = target;
+ FS_InitFile(file);
+ if (!FS_OpenFileFast(file, FS_GetOverlayFileID(p_ovi)))
+ return FALSE;
+ p_ovi->file_pos.offset = FS_GetFileImageTop(file);
+ p_ovi->file_pos.length = FS_GetLength(file);
+ FS_CloseFile(file);
+ return TRUE;
+ }
+ else
+ {
+ const CARDRomRegion * const p_ovt9 = CARD_GetRomRegionOVT(MI_PROCESSOR_ARM9);
+ const CARDRomRegion * const p_ovt7 = CARD_GetRomRegionOVT(MI_PROCESSOR_ARM7);
+ return FSi_LoadOverlayInfoCore(p_ovi, target, id, &fsi_arc_rom, p_ovt9->offset, p_ovt9->length, p_ovt7->offset, p_ovt7->length);
+ }
+}
+
+ARM_FUNC BOOL FS_LoadOverlayImageAsync(FSOverlayInfo * p_ovi, FSFile * p_file)
+{
+ FS_InitFile(p_file);
+ if (!FS_OpenFileFast(p_file, FS_GetOverlayFileID(p_ovi)))
+ return FALSE;
+ else
+ {
+ s32 size = FSi_GetOverlayBinarySize(p_ovi);
+ FS_ClearOverlayImage(p_ovi);
+ if (FS_ReadFileAsync(p_file, FS_GetOverlayAddress(p_ovi), size) != size)
+ {
+ FS_CloseFile(p_file);
+ return FALSE;
+ }
+ return TRUE;
+ }
+}
+
+ARM_FUNC BOOL FS_LoadOverlayImage(FSOverlayInfo * p_ovi)
+{
+ FSFile file[1];
+ FS_InitFile(file);
+ if (!FS_OpenFileFast(file, FS_GetOverlayFileID(p_ovi)))
+ return FALSE;
+ else
+ {
+ s32 size = FSi_GetOverlayBinarySize(p_ovi);
+ FS_ClearOverlayImage(p_ovi);
+ if (FS_ReadFile(file, FS_GetOverlayAddress(p_ovi), size) != size)
+ {
+ FS_CloseFile(file);
+ return FALSE;
+ }
+ FS_CloseFile(file);
+ return TRUE;
+ }
+}
+
+static const u8 fsi_def_digest_key[64] = {
+ 0x21, 0x06, 0xc0, 0xde,
+ 0xba, 0x98, 0xce, 0x3f,
+ 0xa6, 0x92, 0xe3, 0x9d,
+ 0x46, 0xf2, 0xed, 0x01,
+
+ 0x76, 0xe3, 0xcc, 0x08,
+ 0x56, 0x23, 0x63, 0xfa,
+ 0xca, 0xd4, 0xec, 0xdf,
+ 0x9a, 0x62, 0x78, 0x34,
+
+ 0x8f, 0x6d, 0x63, 0x3c,
+ 0xfe, 0x22, 0xca, 0x92,
+ 0x20, 0x88, 0x97, 0x23,
+ 0xd2, 0xcf, 0xae, 0xc2,
+
+ 0x32, 0x67, 0x8d, 0xfe,
+ 0xca, 0x83, 0x64, 0x98,
+ 0xac, 0xfd, 0x3e, 0x37,
+ 0x87, 0x46, 0x58, 0x24,
+};
+
+static const void *fsi_digest_key_ptr = fsi_def_digest_key;
+static int fsi_digest_key_len = sizeof(fsi_def_digest_key);
+
+ARM_FUNC BOOL FSi_CompareDigest(const u8 *spec_digest, void *src, int len)
+{
+ int i;
+ u8 digest[FS_OVERLAY_DIGEST_SIZE];
+ u8 digest_key[64];
+
+ MI_CpuClear8(digest, sizeof(digest));
+ MI_CpuCopy8(fsi_digest_key_ptr, digest_key, fsi_digest_key_len);
+ DGT_Hash2CalcHmac(digest, src, len, digest_key, fsi_digest_key_len);
+ for (i = 0; i < sizeof(digest); i += sizeof(u32))
+ {
+ if (*(const u32 *)(digest + i) != *(const u32 *)(spec_digest + i))
+ break;
+ }
+ return i == sizeof(digest);
+}
+
+extern u8 SDK_OVERLAY_DIGEST[];
+extern u8 SDK_OVERLAY_DIGEST_END[];
+
+ARM_FUNC void FS_StartOverlay(FSOverlayInfo * p_ovi)
+{
+ u32 rare_size = FSi_GetOverlayBinarySize(p_ovi);
+ if (MB_IsMultiBootChild())
+ {
+ BOOL ret = FALSE;
+
+ if (p_ovi->header.flag & FS_OVERLAY_FLAG_AUTH)
+ {
+ const u32 odt_max = (u32)((SDK_OVERLAY_DIGEST_END - SDK_OVERLAY_DIGEST) / FS_OVERLAY_DIGEST_SIZE);
+ if (p_ovi->header.id < odt_max)
+ {
+ const u8 * spec_digest = SDK_OVERLAY_DIGEST + FS_OVERLAY_DIGEST_SIZE * p_ovi->header.id;
+ ret = FSi_CompareDigest(spec_digest, p_ovi->header.ram_address, (int)rare_size);
+ }
+ }
+ if (!ret)
+ {
+ MI_CpuClear8(p_ovi->header.ram_address, rare_size);
+ OS_TPanic("FS_StartOverlay() failed! (invalid overlay-segment data)");
+ return;
+ }
+ }
+ if (p_ovi->header.flag & FS_OVERLAY_FLAG_COMP)
+ {
+ MIi_UncompressBackward(p_ovi->header.ram_address + rare_size);
+ }
+ DC_FlushRange(p_ovi->header.ram_address, p_ovi->header.ram_size);
+
+ {
+ FSOverlayInitFunc *p = p_ovi->header.sinit_init;
+ FSOverlayInitFunc *q = p_ovi->header.sinit_init_end;
+ for (; p < q; ++p)
+ {
+ if (*p)
+ (**p)();
+ }
+ }
+}
+
+ARM_FUNC void FS_EndOverlay(FSOverlayInfo *p_ovi)
+{
+ for (;;)
+ {
+ MWiDestructorChain *head = NULL, *tail = NULL;
+ const u32 region_top = (u32)FS_GetOverlayAddress(p_ovi);
+ const u32 region_bottom = region_top + FS_GetOverlayTotalSize(p_ovi);
+
+ {
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ MWiDestructorChain *prev = NULL;
+ MWiDestructorChain *base = __global_destructor_chain;
+ MWiDestructorChain *p = base;
+ while (p)
+ {
+ MWiDestructorChain *next = p->next;
+ const u32 dtor = (u32)p->dtor;
+ const u32 obj = (u32)p->obj;
+ if (((obj == 0) && (dtor >= region_top) && (dtor < region_bottom)) ||
+ ((obj >= region_top) && (obj < region_bottom)))
+ {
+ /* If appropriate, extract*/
+ if (!tail)
+ {
+ head = p;
+ }
+ else
+ {
+ tail->next = p;
+ }
+ if (base == p)
+ {
+ base = __global_destructor_chain = next;
+ }
+ tail = p, p->next = NULL;
+ if (prev)
+ {
+ prev->next = next;
+ }
+ }
+ else
+ {
+ prev = p;
+ }
+ p = next;
+ }
+ OS_RestoreInterrupts(bak_psr);
+ }
+
+ if (!head)
+ {
+ break;
+ }
+ do
+ {
+ MWiDestructorChain *next = head->next;
+ if (head->dtor)
+ {
+ (*head->dtor) (head->obj);
+ }
+ head = next;
+ }
+ while (head);
+ }
+}
+
+ARM_FUNC BOOL FS_UnloadOverlayImage(FSOverlayInfo * p_ovi)
+{
+ FS_EndOverlay(p_ovi);
+ return TRUE;
+}
+
+ARM_FUNC BOOL FS_LoadOverlay(MIProcessor target, FSOverlayID id)
+{
+ FSOverlayInfo ovi;
+ if (!FS_LoadOverlayInfo(&ovi, target, id) || !FS_LoadOverlayImage(&ovi))
+ return FALSE;
+ FS_StartOverlay(&ovi);
+ return TRUE;
+}
+
+ARM_FUNC BOOL FS_UnloadOverlay(MIProcessor target, FSOverlayID id)
+{
+ FSOverlayInfo ovi;
+ if (!FS_LoadOverlayInfo(&ovi, target, id) || !FS_UnloadOverlayImage(&ovi))
+ return FALSE;
+ return TRUE;
+}
diff --git a/arm9/lib/src/FS_rom.c b/arm9/lib/src/FS_rom.c
new file mode 100644
index 00000000..32f66c10
--- /dev/null
+++ b/arm9/lib/src/FS_rom.c
@@ -0,0 +1,118 @@
+#include "FS_rom.h"
+#include "FS_archive.h"
+#include "FS_file.h"
+#include "CARD_pullOut.h"
+#include "CARD_rom.h"
+#include "CARD_common.h"
+#include "MB_mb.h"
+#include "OS_printf.h"
+
+u32 fsi_default_dma_no;
+
+ARM_FUNC void FSi_OnRomReadDone(void * p_arc)
+{
+ FS_NotifyArchiveAsyncEnd(p_arc, CARD_IsPulledOut() ? FS_RESULT_ERROR : FS_RESULT_SUCCESS);
+}
+
+ARM_FUNC FSResult FSi_ReadRomCallback(FSArchive * p_arc, void * dst, u32 src, u32 len)
+{
+ CARD_ReadRomAsync(fsi_default_dma_no, (const void *)src, dst, len, FSi_OnRomReadDone, p_arc);
+ return FS_RESULT_PROC_ASYNC;
+}
+
+ARM_FUNC FSResult FSi_WriteDummyCallback(FSArchive * p_arc, const void *src, u32 dst, u32 len)
+{
+ return FS_RESULT_FAILURE;
+}
+
+ARM_FUNC FSResult FSi_RomArchiveProc(FSFile * p_arc, FSCommandType cmd)
+{
+ switch (cmd)
+ {
+ case FS_COMMAND_ACTIVATE:
+ CARD_LockRom(fsi_card_lock_id);
+ return FS_RESULT_SUCCESS;
+ case FS_COMMAND_IDLE:
+ CARD_UnlockRom(fsi_card_lock_id);
+ return FS_RESULT_SUCCESS;
+ case FS_COMMAND_WRITEFILE:
+ return FS_RESULT_UNSUPPORTED;
+ default:
+ return FS_RESULT_PROC_UNKNOWN;
+ }
+}
+
+ARM_FUNC FSResult FSi_ReadDummyCallback(FSArchive *p_arc, void *dst, u32 src, u32 len)
+{
+ return FS_RESULT_FAILURE;
+}
+
+ARM_FUNC FSResult FSi_EmptyArchiveProc(FSFile *p_file, FSCommandType cmd)
+{
+ return FS_RESULT_UNSUPPORTED;
+}
+
+ARM_FUNC void FSi_InitRom(u32 default_dma_no)
+{
+ fsi_default_dma_no = default_dma_no;
+ fsi_card_lock_id = OS_GetLockID();
+ fsi_ovt9.offset = 0;
+ fsi_ovt9.length = 0;
+ fsi_ovt7.offset = 0;
+ fsi_ovt7.length = 0;
+
+ CARD_Init();
+
+ FS_InitArchive(&fsi_arc_rom);
+ FS_RegisterArchiveName(&fsi_arc_rom, "rom", 3);
+
+ if (MB_IsMultiBootChild())
+ {
+ fsi_ovt9.offset = (u32)~0;
+ fsi_ovt9.length = 0;
+ fsi_ovt7.offset = (u32)~0;
+ fsi_ovt7.length = 0;
+ FS_SetArchiveProc(&fsi_arc_rom, FSi_EmptyArchiveProc, (u32)FS_ARCHIVE_PROC_ALL);
+ FS_LoadArchive(&fsi_arc_rom, 0x00000000, 0, 0, 0, 0, FSi_ReadDummyCallback, FSi_WriteDummyCallback);
+ }
+ else
+ {
+ const CARDRomRegion *const fnt = CARD_GetRomRegionFNT();
+ const CARDRomRegion *const fat = CARD_GetRomRegionFAT();
+
+ FS_SetArchiveProc(&fsi_arc_rom, FSi_RomArchiveProc,
+ FS_ARCHIVE_PROC_WRITEFILE |
+ FS_ARCHIVE_PROC_ACTIVATE | FS_ARCHIVE_PROC_IDLE);
+
+ if ((fnt->offset == 0xFFFFFFFF) || (fnt->offset == 0x00000000) ||
+ (fat->offset == 0xFFFFFFFF) || (fat->offset == 0x00000000))
+ {
+ OS_Warning("file-system : no MAKEROM-information in rom header.");
+ }
+ else
+ {
+ FS_LoadArchive(&fsi_arc_rom, 0x00000000,
+ fat->offset, fat->length,
+ fnt->offset, fnt->length,
+ FSi_ReadRomCallback, FSi_WriteDummyCallback);
+ }
+ }
+}
+
+ARM_FUNC u32 FS_SetDefaultDMA(u32 dma_no)
+{
+ OSIntrMode bak_psr = OS_DisableInterrupts();
+ u32 bak_dma_no = fsi_default_dma_no;
+ BOOL bak_stat = FS_SuspendArchive(&fsi_arc_rom);
+ fsi_default_dma_no = dma_no;
+ if (bak_stat)
+ FS_ResumeArchive(&fsi_arc_rom);
+ OS_RestoreInterrupts(bak_psr);
+ return bak_dma_no;
+}
+
+ARM_FUNC u32 FS_TryLoadTable(void * p_mem, u32 size)
+{
+ return FS_LoadArchiveTables(&fsi_arc_rom, p_mem, size);
+}
+
diff --git a/arm9/lib/src/FX_cp.c b/arm9/lib/src/FX_cp.c
index 2ca9d720..3b6e6c96 100644
--- a/arm9/lib/src/FX_cp.c
+++ b/arm9/lib/src/FX_cp.c
@@ -16,8 +16,8 @@ ARM_FUNC fx32 FX_Inv(fx32 x){
ARM_FUNC fx32 FX_Sqrt(fx32 x){
if (x > 0)
{
- SETREG16(HW_REG_SQRTCNT, 0x1);
- SETREG64(HW_REG_SQRT_PARAM, (fx64)x << 32);
+ reg_CP_SQRTCNT = 0x1;
+ reg_CP_SQRT_PARAM = (fx64)x << 32;
return FX_GetSqrtResult();
}
else
@@ -27,44 +27,44 @@ ARM_FUNC fx32 FX_Sqrt(fx32 x){
}
ARM_FUNC fx64c FX_GetDivResultFx64c(){
- while (READREG16(HW_REG_DIVCNT) & 0x8000);
- return READREG64(HW_REG_DIV_RESULT);
+ while (reg_CP_DIVCNT & 0x8000);
+ return reg_CP_DIV_RESULT;
}
ARM_FUNC fx32 FX_GetDivResult(){
- while (READREG16(HW_REG_DIVCNT) & 0x8000);
- return (READREG64(HW_REG_DIV_RESULT) + (1 << (0x14 - 1))) >> 0x14;
+ while (reg_CP_DIVCNT & 0x8000);
+ return (reg_CP_DIV_RESULT + (1 << (0x14 - 1))) >> 0x14;
}
ARM_FUNC void FX_InvAsync(fx32 x){
- SETREG16(HW_REG_DIVCNT, 0x1);
- SETREG64(HW_REG_DIV_NUMER, (fx64)0x00001000 << 32);
- SETREG64(HW_REG_DIV_DENOM, (u32)x);
+ reg_CP_DIVCNT = 0x1;
+ reg_CP_DIV_NUMER = (fx64)0x00001000 << 32;
+ reg_CP_DIV_DENOM = (u32)x;
}
ARM_FUNC fx32 FX_GetSqrtResult(){
- while (READREG16(HW_REG_SQRTCNT) & 0x8000);
- return (READREG32(HW_REG_SQRT_RESULT) + (1 << (0xA - 1))) >> 0xA;
+ while (reg_CP_SQRTCNT & 0x8000);
+ return (reg_CP_SQRT_RESULT + (1 << (0xA - 1))) >> 0xA;
}
ARM_FUNC void FX_DivAsync(fx32 numerator, fx32 denominator){
- SETREG16(HW_REG_DIVCNT, 0x1);
- SETREG64(HW_REG_DIV_NUMER, (fx64)numerator << 32);
- SETREG64(HW_REG_DIV_DENOM, (u32)denominator);
+ reg_CP_DIVCNT = 0x1;
+ reg_CP_DIV_NUMER = (fx64)numerator << 32;
+ reg_CP_DIV_DENOM = (u32)denominator;
}
ARM_FUNC fx32 FX_DivS32(fx32 numerator, fx32 denominator){
- SETREG16(HW_REG_DIVCNT, 0x0);
- SETREG32(HW_REG_DIV_NUMER, (u32)numerator); //32bit write for some reason
- SETREG64(HW_REG_DIV_DENOM, (u32)denominator);
- while (READREG16(HW_REG_DIVCNT) & 0x8000);
- return READREG32(HW_REG_DIV_RESULT);
+ reg_CP_DIVCNT = 0x0;
+ *(REGType32v *)&reg_CP_DIV_NUMER = (u32)numerator; //32bit write for some reason
+ reg_CP_DIV_DENOM = (u32)denominator;
+ while (reg_CP_DIVCNT & 0x8000);
+ return *(REGType32v *)&reg_CP_DIV_RESULT;
}
ARM_FUNC fx32 FX_ModS32(fx32 num, fx32 mod){
- SETREG16(HW_REG_DIVCNT, 0x0);
- SETREG32(HW_REG_DIV_NUMER, (u32)num); //32bit write for some reason
- SETREG64(HW_REG_DIV_DENOM, (u32)mod);
- while (READREG16(HW_REG_DIVCNT) & 0x8000);
- return READREG32(HW_REG_DIVREM_RESULT);
+ reg_CP_DIVCNT = 0x0;
+ *(REGType32v *)&reg_CP_DIV_NUMER = (u32)num; //32bit write for some reason
+ reg_CP_DIV_DENOM = (u32)mod;
+ while (reg_CP_DIVCNT & 0x8000);
+ return *(REGType32v *)&reg_CP_DIVREM_RESULT;
}
diff --git a/arm9/lib/src/FX_vec.c b/arm9/lib/src/FX_vec.c
index af36fe89..95805f33 100644
--- a/arm9/lib/src/FX_vec.c
+++ b/arm9/lib/src/FX_vec.c
@@ -55,10 +55,10 @@ ARM_FUNC fx32 VEC_Mag(struct Vecx32 *a){
fx64 l2 = (fx64)a->x * a->x;
l2 += (fx64)a->y * a->y;
l2 += (fx64)a->z * a->z;
- SETREG16(HW_REG_SQRTCNT, 0x1);
- SETREG64(HW_REG_SQRT_PARAM, l2 * 4);
- while (READREG16(HW_REG_SQRTCNT) & 0x8000); //wait for coprocessor to finish
- return ((fx32)READREG32(HW_REG_SQRT_RESULT) + 1) >> 1;
+ reg_CP_SQRTCNT = 0x1;
+ reg_CP_SQRT_PARAM = l2 * 4;
+ while (reg_CP_SQRTCNT & 0x8000); //wait for coprocessor to finish
+ return ((fx32)reg_CP_SQRT_RESULT + 1) >> 1;
}
ARM_FUNC void VEC_Normalize(struct Vecx32 *a, struct Vecx32 *dst){
@@ -66,15 +66,15 @@ ARM_FUNC void VEC_Normalize(struct Vecx32 *a, struct Vecx32 *dst){
l2 += (fx64)a->y * a->y;
l2 += (fx64)a->z * a->z;
//1/sqrt(l) is computed by calculating sqrt(l)*(1/l)
- SETREG16(HW_REG_DIVCNT, 0x2);
- SETREG64(HW_REG_DIV_NUMER, 0x0100000000000000);
- SETREG64(HW_REG_DIV_DENOM, l2);
- SETREG16(HW_REG_SQRTCNT, 0x1);
- SETREG64(HW_REG_SQRT_PARAM, l2 * 4);
- while (READREG16(HW_REG_SQRTCNT) & 0x8000); //wait for sqrt to finish
- fx32 sqrtresult = READREG32(HW_REG_SQRT_RESULT);
- while (READREG16(HW_REG_DIVCNT) & 0x8000); //wait for division to finish
- l2 = READREG64(HW_REG_DIV_RESULT);
+ reg_CP_DIVCNT = 0x2;
+ reg_CP_DIV_NUMER = 0x0100000000000000;
+ reg_CP_DIV_DENOM = l2;
+ reg_CP_SQRTCNT = 0x1;
+ reg_CP_SQRT_PARAM = l2 * 4;
+ while (reg_CP_SQRTCNT & 0x8000); //wait for sqrt to finish
+ fx32 sqrtresult = reg_CP_SQRT_RESULT;
+ while (reg_CP_DIVCNT & 0x8000); //wait for division to finish
+ l2 = reg_CP_DIV_RESULT;
l2 = sqrtresult * l2;
dst->x = (l2 * a->x + (1LL << (0x2D - 1))) >> 0x2D;
dst->y = (l2 * a->y + (1LL << (0x2D - 1))) >> 0x2D;
@@ -86,15 +86,15 @@ ARM_FUNC void VEC_Fx16Normalize(struct Vecx16 *a, struct Vecx16 *dst){
l2 += a->y * a->y;
l2 += a->z * a->z;
//1/sqrt(l) is computed by calculating sqrt(l)*(1/l)
- SETREG16(HW_REG_DIVCNT, 0x2);
- SETREG64(HW_REG_DIV_NUMER, 0x0100000000000000);
- SETREG64(HW_REG_DIV_DENOM, l2);
- SETREG16(HW_REG_SQRTCNT, 0x1);
- SETREG64(HW_REG_SQRT_PARAM, l2 * 4);
- while (READREG16(HW_REG_SQRTCNT) & 0x8000); //wait for sqrt to finish
- fx32 sqrtresult = READREG32(HW_REG_SQRT_RESULT);
- while (READREG16(HW_REG_DIVCNT) & 0x8000); //wait for division to finish
- l2 = READREG64(HW_REG_DIV_RESULT);
+ reg_CP_DIVCNT = 0x2;
+ reg_CP_DIV_NUMER = 0x0100000000000000;
+ reg_CP_DIV_DENOM = l2;
+ reg_CP_SQRTCNT = 0x1;
+ reg_CP_SQRT_PARAM = l2 * 4;
+ while (reg_CP_SQRTCNT & 0x8000); //wait for sqrt to finish
+ fx32 sqrtresult = reg_CP_SQRT_RESULT;
+ while (reg_CP_DIVCNT & 0x8000); //wait for division to finish
+ l2 = reg_CP_DIV_RESULT;
l2 = sqrtresult * l2;
dst->x = (l2 * a->x + (1LL << (0x2D - 1))) >> 0x2D;
dst->y = (l2 * a->y + (1LL << (0x2D - 1))) >> 0x2D;
diff --git a/arm9/lib/src/OS_arena.c b/arm9/lib/src/OS_arena.c
index eb04e60b..ae05b49c 100644
--- a/arm9/lib/src/OS_arena.c
+++ b/arm9/lib/src/OS_arena.c
@@ -5,8 +5,8 @@
#include "consts.h"
#include "OS_arena.h"
#include "OS_protectionRegion.h"
+#include "OS_emulator.h"
-extern u32 OS_GetConsoleType();
extern BOOL OSi_MainExArenaEnabled;
extern BOOL OSi_Initialized; // TODO: located at 0x021d36f0
void SDK_MAIN_ARENA_LO(); // TODO: technically this should be defined in the lcf
diff --git a/arm9/lib/src/OS_emulator.c b/arm9/lib/src/OS_emulator.c
new file mode 100644
index 00000000..1be0e163
--- /dev/null
+++ b/arm9/lib/src/OS_emulator.c
@@ -0,0 +1,18 @@
+//
+// Created by red031000 on 2020-05-05.
+//
+
+#include "OS_emulator.h"
+#include "function_target.h"
+
+extern u32 OSi_ConsoleTypeCache; //todo fix bss
+
+ARM_FUNC BOOL OS_IsRunOnEmulator() {
+ return FALSE;
+}
+
+ARM_FUNC u32 OS_GetConsoleType() {
+ OSi_ConsoleTypeCache = OS_CONSOLE_NITRO | OS_CONSOLE_DEV_CARD | OS_CONSOLE_SIZE_4MB;
+
+ return OSi_ConsoleTypeCache;
+}
diff --git a/arm9/lib/src/OS_init.c b/arm9/lib/src/OS_init.c
index 90b01ffa..7467c672 100644
--- a/arm9/lib/src/OS_init.c
+++ b/arm9/lib/src/OS_init.c
@@ -7,14 +7,12 @@
extern void PXI_Init();
extern void OS_InitLock();
-extern void OS_InitIrqTable();
extern void OS_SetIrqStackChecker();
extern void OS_InitException();
extern void MI_Init();
extern void OS_InitVAlarm();
extern void OSi_InitVramExclusive();
extern void OS_InitThread();
-extern void OS_InitReset();
extern void CTRDG_Init();
extern void CARD_Init();
extern void PM_Init();
diff --git a/arm9/lib/src/OS_interrupt.c b/arm9/lib/src/OS_interrupt.c
new file mode 100644
index 00000000..1fb43821
--- /dev/null
+++ b/arm9/lib/src/OS_interrupt.c
@@ -0,0 +1,89 @@
+//
+// Created by red031000 on 2020-05-07.
+//
+
+#include "consts.h"
+#include "function_target.h"
+#include "OS_interrupt.h"
+#include "OS_thread.h"
+
+#pragma optimize_for_size on
+
+extern OSThreadQueue OSi_IrqThreadQueue;
+extern OSIrqMask OS_EnableIrqMask(OSIrqMask intr);
+
+ARM_FUNC void OS_InitIrqTable() {
+ OS_InitThreadQueue(&OSi_IrqThreadQueue);
+}
+
+ARM_FUNC void OS_SetIrqFunction(OSIrqMask intrBit, OSIrqFunction function) {
+ s32 i;
+ OSIrqCallbackInfo *info;
+
+ for (i = 0; i < 0x16; i++) {
+ if (intrBit & 1) {
+ info = NULL;
+
+ if (8 <= i && i <= 11) {
+ info = &OSi_IrqCallbackInfo[i - 8];
+ }
+ else if (3 <= i && i <= 6) {
+ info = &OSi_IrqCallbackInfo[i - 3 + 4];
+ }
+ else {
+ OS_IRQTable[i] = function;
+ }
+
+ if (info) {
+ info->func = (void (*)(void *))function;
+ info->arg = 0;
+ info->enable = TRUE;
+ }
+ }
+ intrBit >>= 1;
+ }
+}
+
+ARM_FUNC OSIrqFunction OS_GetIrqFunction(OSIrqMask intrBit) {
+ s32 i = 0;
+ OSIrqFunction *funcPtr = &OS_IRQTable[0];
+
+ do {
+ if (intrBit & 1)
+ {
+ if (8 <= i && i <= 11) {
+ i = i - 8;
+ return (void (*)(void))OSi_IrqCallbackInfo[i].func;
+ }
+ else if (3 <= i && i <= 6) {
+ i++;
+ return (void (*)(void))OSi_IrqCallbackInfo[i].func;
+ }
+
+ return *funcPtr;
+ }
+ intrBit >>= 1;
+ funcPtr++;
+ i++;
+ } while (i < 0x16);
+ return 0;
+}
+
+ARM_FUNC void OSi_EnterDmaCallback(u32 dmaNo, void (*callback) (void *), void *arg)
+{
+ OSIrqMask mask = 1UL << (dmaNo + 8);
+ OSi_IrqCallbackInfo[dmaNo].func = callback;
+ OSi_IrqCallbackInfo[dmaNo].arg = arg;
+
+ OSi_IrqCallbackInfo[dmaNo].enable = OS_EnableIrqMask(mask) & mask;
+}
+
+ARM_FUNC void OSi_EnterTimerCallback(u32 timerNo, void (*callback) (void *), void *arg)
+{
+ OSIrqMask mask = 1UL << (timerNo + 3);
+ OSi_IrqCallbackInfo[timerNo + 4].func = callback;
+ OSi_IrqCallbackInfo[timerNo + 4].arg = arg;
+
+ (void)OS_EnableIrqMask(mask);
+ OSi_IrqCallbackInfo[timerNo + 4].enable = TRUE;
+}
diff --git a/arm9/lib/src/OS_printf.c b/arm9/lib/src/OS_printf.c
new file mode 100644
index 00000000..ba484df8
--- /dev/null
+++ b/arm9/lib/src/OS_printf.c
@@ -0,0 +1,1248 @@
+#include "global.h"
+#include "OS_printf.h"
+
+struct printfStr
+{
+ s32 spaceLeft;
+ s8 *stringEnd;
+ s8 *stringStart;
+};
+
+void string_put_char(struct printfStr *dest, s8 value);
+void string_fill_char(struct printfStr *dest, s8 value, s32 count);
+void string_put_string(struct printfStr *dest, const s8 *src, s32 count);
+
+
+#ifndef NONMATCHING
+// c definition is at the bottom of the file
+u64 _ll_udiv(u64 a, u64 b);
+
+ARM_FUNC asm s32 OS_VSNPrintf(s8 *buffer, s32 bufsz, const s8 *format, void *args)
+{
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x64
+ mov r9, r2
+ str r1, [sp, #0x54]
+ str r0, [sp, #0x5c]
+ str r0, [sp, #0x58]
+ ldrsb r0, [r9, #0x0]
+ str r1, [sp, #0x0]
+ mov r11, r3
+ cmp r0, #0x0
+ beq _020CAD18
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ mov r0, #0x0
+ str r0, [sp, #0x4]
+ mov r0, #0x20
+ str r0, [sp, #0x1c]
+ mov r0, #0x30
+ str r0, [sp, #0x20]
+ mvn r0, #0x0
+ str r0, [sp, #0x8]
+ mov r0, #0x57
+ str r0, [sp, #0x10]
+ mov r0, #0x8
+ str r0, [sp, #0x14]
+ mov r0, #0x37
+ str r0, [sp, #0x18]
+ mov r0, #0x10
+ str r0, [sp, #0x24]
+ mov r0, #0x1
+ str r0, [sp, #0x28]
+ mov r0, #0x2b
+ str r0, [sp, #0x34]
+ mov r0, #0x2d
+ str r0, [sp, #0x30]
+ mov r0, #0x2
+ str r0, [sp, #0x2c]
+_020CA530:
+ ldrsb r1, [r9, #0x0]
+ and r0, r1, #0xff
+ eor r0, r0, #0x20
+ sub r0, r0, #0xa1
+ cmp r0, #0x3c
+ bhs _020CA56C
+ add r0, sp, #0x54
+ bl string_put_char
+ ldrsb r1, [r9, #0x1]!
+ cmp r1, #0x0
+ beq _020CAD0C
+ add r0, sp, #0x54
+ add r9, r9, #0x1
+ bl string_put_char
+ b _020CAD0C
+_020CA56C:
+ cmp r1, #0x25
+ beq _020CA584
+ add r0, sp, #0x54
+ add r9, r9, #0x1
+ bl string_put_char
+ b _020CAD0C
+_020CA584:
+ ldr r6, [sp, #0x4]
+ ldr r5, [sp, #0x8]
+ ldr r2, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ mov r10, r6
+ mov r3, r9
+_020CA59C:
+ ldrsb r4, [r9, #0x1]!
+ cmp r4, #0x20
+ bgt _020CA5B4
+ cmp r4, #0x20
+ beq _020CA5F4
+ b _020CA60C
+_020CA5B4:
+ cmp r4, #0x30
+ bgt _020CA60C
+ cmp r4, #0x2b
+ blt _020CA60C
+ cmp r4, #0x2b
+ beq _020CA5E0
+ cmp r4, #0x2d
+ beq _020CA5FC
+ cmp r4, #0x30
+ beq _020CA604
+ b _020CA60C
+_020CA5E0:
+ ldrsb r1, [r9, #-0x1]
+ cmp r1, #0x20
+ bne _020CA60C
+ orr r6, r6, #0x2
+ b _020CA59C
+_020CA5F4:
+ orr r6, r6, #0x1
+ b _020CA59C
+_020CA5FC:
+ orr r6, r6, #0x8
+ b _020CA59C
+_020CA604:
+ orr r6, r6, #0x10
+ b _020CA59C
+_020CA60C:
+ cmp r4, #0x2a
+ bne _020CA640
+ add r11, r11, #0x4
+ ldr r10, [r11, #-0x4]
+ add r9, r9, #0x1
+ cmp r10, #0x0
+ rsblt r10, r10, #0x0
+ orrlt r6, r6, #0x8
+ b _020CA654
+_020CA630:
+ ldrsb r4, [r9], #0x1
+ mov r1, #0xa
+ mla r1, r10, r1, r4
+ sub r10, r1, #0x30
+_020CA640:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x30
+ blt _020CA654
+ cmp r1, #0x39
+ ble _020CA630
+_020CA654:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x2e
+ bne _020CA6AC
+ ldrsb r1, [r9, #0x1]!
+ ldr r5, [sp, #0x4]
+ cmp r1, #0x2a
+ bne _020CA698
+ add r11, r11, #0x4
+ ldr r5, [r11, #-0x4]
+ add r9, r9, #0x1
+ cmp r5, #0x0
+ ldrlt r5, [sp, #0x8]
+ b _020CA6AC
+_020CA688:
+ ldrsb r4, [r9], #0x1
+ mov r1, #0xa
+ mla r1, r5, r1, r4
+ sub r5, r1, #0x30
+_020CA698:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x30
+ blt _020CA6AC
+ cmp r1, #0x39
+ ble _020CA688
+_020CA6AC:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x68
+ beq _020CA6C4
+ cmp r1, #0x6c
+ beq _020CA6DC
+ b _020CA6F0
+_020CA6C4: // h
+ ldrsb r1, [r9, #0x1]!
+ cmp r1, #0x68
+ orrne r6, r6, #0x40
+ addeq r9, r9, #0x1
+ orreq r6, r6, #0x100
+ b _020CA6F0
+_020CA6DC: // l
+ ldrsb r1, [r9, #0x1]!
+ cmp r1, #0x6c
+ orrne r6, r6, #0x20
+ addeq r9, r9, #0x1
+ orreq r6, r6, #0x80
+_020CA6F0:
+ ldrsb r1, [r9, #0x0]
+ cmp r1, #0x69
+ bgt _020CA740
+ cmp r1, #0x63
+ blt _020CA720
+ cmp r1, #0x63
+ beq _020CA7B4
+ cmp r1, #0x64
+ beq _020CA96C
+ cmp r1, #0x69
+ beq _020CA96C
+ b _020CA950
+_020CA720:
+ cmp r1, #0x25
+ bgt _020CA734
+ cmp r1, #0x25
+ beq _020CA934
+ b _020CA950
+_020CA734:
+ cmp r1, #0x58
+ beq _020CA7A0
+ b _020CA950
+_020CA740:
+ cmp r1, #0x6e
+ bgt _020CA754
+ cmp r1, #0x6e
+ beq _020CA8DC
+ b _020CA950
+_020CA754:
+ sub r1, r1, #0x6f
+ cmp r1, #0x9
+ addls pc, pc, r1, lsl #0x2
+ b _020CA950
+_020CA764:
+ b _020CA78C
+ b _020CA7A8
+ b _020CA950
+ b _020CA950
+ b _020CA828
+ b _020CA950
+ b _020CA798
+ b _020CA950
+ b _020CA950
+ b _020CA964
+_020CA78C:
+ ldr r2, [sp, #0x14]
+ orr r6, r6, #0x1000
+ b _020CA96C
+_020CA798:
+ orr r6, r6, #0x1000
+ b _020CA96C
+_020CA7A0:
+ ldr r0, [sp, #0x18]
+ b _020CA964
+_020CA7A8:
+ orr r6, r6, #0x4
+ ldr r5, [sp, #0x14]
+ b _020CA964
+_020CA7B4:
+ cmp r5, #0x0
+ bge _020CA950
+ ands r0, r6, #0x8
+ add r11, r11, #0x4
+ ldr r4, [r11, #-0x4]
+ beq _020CA7F0
+ mov r0, r4, lsl #0x18
+ mov r1, r0, asr #0x18
+ add r0, sp, #0x54
+ bl string_put_char
+ ldr r1, [sp, #0x1c]
+ sub r2, r10, #0x1
+ add r0, sp, #0x54
+ bl string_fill_char
+ b _020CA820
+_020CA7F0:
+ ands r0, r6, #0x10
+ ldrne r0, [sp, #0x20]
+ sub r2, r10, #0x1
+ ldreq r0, [sp, #0x1c]
+ mov r0, r0, lsl #0x18
+ mov r1, r0, asr #0x18
+ add r0, sp, #0x54
+ bl string_fill_char
+ mov r0, r4, lsl #0x18
+ mov r1, r0, asr #0x18
+ add r0, sp, #0x54
+ bl string_put_char
+_020CA820:
+ add r9, r9, #0x1
+ b _020CAD0C
+_020CA828:
+ add r11, r11, #0x4
+ cmp r5, #0x0
+ ldr r7, [sp, #0x4]
+ ldr r4, [r11, #-0x4]
+ bge _020CA860
+ ldrsb r0, [r4]
+ cmp r0, #0x0
+ beq _020CA874
+_020CA848:
+ add r7, r7, #0x1
+ ldrsb r0, [r4, r7]
+ cmp r0, #0x0
+ bne _020CA848
+ b _020CA874
+_020CA85C:
+ add r7, r7, #0x1
+_020CA860:
+ cmp r7, r5
+ bge _020CA874
+ ldrsb r0, [r4, r7]
+ cmp r0, #0x0
+ bne _020CA85C
+_020CA874:
+ ands r0, r6, #0x8
+ sub r10, r10, r7
+ beq _020CA8A4
+ mov r1, r4
+ mov r2, r7
+ add r0, sp, #0x54
+ bl string_put_string
+ ldr r1, [sp, #0x1C]
+ mov r2, r10
+ add r0, sp, #0x54
+ bl string_fill_char
+ b _020CA8D4
+_020CA8A4:
+ ands r0, r6, #0x10
+ ldrne r0, [sp, #0x20]
+ mov r2, r10
+ ldreq r0, [sp, #0x1C]
+ mov r0, r0, lsl #0x18
+ mov r1, r0, asr #0x18
+ add r0, sp, #0x54
+ bl string_fill_char
+ mov r1, r4
+ mov r2, r7
+ add r0, sp, #0x54
+ bl string_put_string
+_020CA8D4:
+ add r9, r9, #0x1
+ b _020CAD0C
+_020CA8DC:
+ ands r0, r6, #0x100
+ ldr r1, [sp, #0x58]
+ ldr r0, [sp, #0x5c]
+ sub r2, r1, r0
+ bne _020CA92C
+ ands r0, r6, #0x40
+ addne r11, r11, #0x4
+ ldrne r0, [r11, #-0x4]
+ strneh r2, [r0, #0x0]
+ bne _020CA92C
+ ands r0, r6, #0x80
+ addeq r11, r11, #0x4
+ ldreq r0, [r11, #-0x4]
+ streq r2, [r0, #0x0]
+ beq _020CA92C
+ add r11, r11, #0x4
+ ldr r0, [r11, #-0x4]
+ mov r1, r2, asr #0x1f
+ str r2, [r0, #0x0]
+ str r1, [r0, #0x4]
+_020CA92C:
+ add r9, r9, #0x1
+ b _020CAD0C
+_020CA934:
+ add r0, r3, #0x1
+ cmp r0, r9
+ bne _020CA950
+ add r0, sp, #0x54
+ add r9, r9, #0x1
+ bl string_put_char
+ b _020CAD0C
+_020CA950:
+ add r0, sp, #0x54
+ mov r1, r3
+ sub r2, r9, r3
+ bl string_put_string
+ b _020CAD0C
+_020CA964:
+ ldr r2, [sp, #0x24]
+ orr r6, r6, #0x1000
+_020CA96C:
+ ands r1, r6, #0x8
+ bicne r6, r6, #0x10
+ cmp r5, #0x0
+ bicge r6, r6, #0x10
+ ldrlt r5, [sp, #0x28]
+ ldr r7, [sp, #0x4]
+ ands r1, r6, #0x1000
+ beq _020CAA20
+ ands r1, r6, #0x100
+ addne r11, r11, #0x4
+ ldrneb r4, [r11, #-0x4]
+ movne r1, #0x0
+ bne _020CA9D0
+ ands r1, r6, #0x40
+ addne r11, r11, #0x4
+ ldrneh r4, [r11, #-0x4]
+ movne r1, #0x0
+ bne _020CA9D0
+ ands r1, r6, #0x80
+ addne r11, r11, #0x8
+ ldrne r1, [r11, #-0x4]
+ ldrne r4, [r11, #-0x8]
+ addeq r11, r11, #0x4
+ ldreq r4, [r11, #-0x4]
+ moveq r1, #0x0
+_020CA9D0:
+ bic r6, r6, #0x3
+ ands r3, r6, #0x4
+ beq _020CAAD8
+ cmp r2, #0x10
+ bne _020CAA0C
+ mov r3, #0x0
+ cmp r1, r3
+ cmpeq r4, r3
+ beq _020CAAD8
+ ldr r3, [sp, #0x20]
+ ldr r7, [sp, #0x2c]
+ strb r3, [sp, #0x39]
+ add r3, r0, #0x21
+ strb r3, [sp, #0x38]
+ b _020CAAD8
+_020CAA0C:
+ cmp r2, #0x8
+ ldreq r3, [sp, #0x20]
+ ldreq r7, [sp, #0x28]
+ streqb r3, [sp, #0x38]
+ b _020CAAD8
+_020CAA20:
+ ands r1, r6, #0x100
+ addne r11, r11, #0x4
+ ldrnesb r4, [r11, #-0x4]
+ movne r1, r4, asr #0x1f
+ bne _020CAA64
+ ands r1, r6, #0x40
+ addne r11, r11, #0x4
+ ldrnesh r4, [r11, #-0x4]
+ movne r1, r4, asr #0x1f
+ bne _020CAA64
+ ands r1, r6, #0x80
+ addne r11, r11, #0x8
+ ldrne r4, [r11, #-0x8]
+ ldrne r1, [r11, #-0x4]
+ addeq r11, r11, #0x4
+ ldreq r4, [r11, #-0x4]
+ moveq r1, r4, asr #0x1f
+_020CAA64:
+ mov r3, #0x0
+ and r8, r3, #0x0
+ cmp r8, r3
+ and r8, r1, #0x80000000
+ cmpeq r8, r3
+ beq _020CAAA0
+ ldr r7, [sp, #0x30]
+ mvn r4, r4
+ strb r7, [sp, #0x38]
+ mvn r7, r1
+ mov r1, #0x1
+ adds r4, r4, r1
+ adc r1, r7, r3
+ ldr r7, [sp, #0x28]
+ b _020CAAD8
+_020CAAA0:
+ cmp r1, r3
+ cmpeq r4, r3
+ bne _020CAAB4
+ cmp r5, #0x0
+ beq _020CAAD8
+_020CAAB4:
+ ands r3, r6, #0x2
+ ldrne r3, [sp, #0x34]
+ ldrne r7, [sp, #0x28]
+ strneb r3, [sp, #0x38]
+ bne _020CAAD8
+ ands r3, r6, #0x1
+ ldrne r3, [sp, #0x1c]
+ ldrne r7, [sp, #0x28]
+ strneb r3, [sp, #0x38]
+_020CAAD8:
+ cmp r2, #0x8
+ ldr r8, [sp, #0x4]
+ beq _020CAAF8
+ cmp r2, #0xa
+ beq _020CAB40
+ cmp r2, #0x10
+ beq _020CABDC
+ b _020CAC28
+_020CAAF8:
+ mov r0, #0x0
+ cmp r1, r0
+ cmpeq r4, r0
+ beq _020CAC28
+_020CAB08:
+ and r0, r4, #0x7
+ add r3, r0, #0x30
+ add r0, sp, #0x3a
+ strb r3, [r0, r8]
+ mov r4, r4, lsr #0x3
+ mov r2, #0x0
+ mov r0, r1, lsr #0x3
+ orr r4, r4, r1, lsl #0x1d
+ cmp r0, r2
+ cmpeq r4, r2
+ mov r1, r0
+ add r8, r8, #0x1
+ bne _020CAB08
+ b _020CAC28
+_020CAB40:
+ mov r0, #0x0
+ cmp r0, r0
+ cmpeq r1, r0
+ bne _020CAB8C
+ cmp r4, #0x0
+ beq _020CAC28
+_020CAB58:
+ ldr r0, =0xCCCCCCCD
+ umull r1, r0, r4, r0
+ movs r0, r0, lsr #0x3
+ mov r1, #0xa
+ mul r1, r0, r1
+ sub r1, r4, r1
+ mov r4, r0
+ add r1, r1, #0x30
+ add r0, sp, #0x3a
+ strb r1, [r0, r8]
+ add r8, r8, #0x1
+ bne _020CAB58
+ b _020CAC28
+_020CAB8C:
+ cmp r1, r0
+ cmpeq r4, r0
+ beq _020CAC28
+_020CAB98:
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x4]
+ mov r0, r4
+ bl _ll_udiv
+ mov r3, #0xa
+ umull r3, r12, r0, r3
+ subs r3, r4, r3
+ mov r2, #0x0
+ add r4, r3, #0x30
+ add r3, sp, #0x3a
+ strb r4, [r3, r8]
+ cmp r1, r2
+ cmpeq r0, r2
+ mov r4, r0
+ add r8, r8, #0x1
+ bne _020CAB98
+ b _020CAC28
+_020CABDC:
+ mov r2, #0x0
+ cmp r1, r2
+ cmpeq r4, r2
+ beq _020CAC28
+_020CABEC:
+ and r3, r4, #0xf
+ cmp r3, #0xa
+ mov r4, r4, lsr #0x4
+ addlt r3, r3, #0x30
+ mov r2, r1, lsr #0x4
+ orr r4, r4, r1, lsl #0x1c
+ mov r1, r2
+ addge r3, r3, r0
+ add r2, sp, #0x3a
+ strb r3, [r2, r8]
+ mov r2, #0x0
+ cmp r1, r2
+ add r8, r8, #0x1
+ cmpeq r4, r2
+ bne _020CABEC
+_020CAC28:
+ cmp r7, #0x0
+ ble _020CAC4C
+ ldrsb r0, [sp, #0x38]
+ cmp r0, #0x30
+ ldreq r1, [sp, #0x20]
+ addeq r0, sp, #0x3a
+ streqb r1, [r0, r8]
+ ldreq r7, [sp, #0x4]
+ addeq r8, r8, #0x1
+_020CAC4C:
+ sub r5, r5, r8
+ ands r0, r6, #0x10
+ beq _020CAC68
+ sub r0, r10, r8
+ sub r0, r0, r7
+ cmp r5, r0
+ movlt r5, r0
+_020CAC68:
+ cmp r5, #0x0
+ subgt r10, r10, r5
+ add r0, r7, r8
+ ands r6, r6, #0x8
+ sub r10, r10, r0
+ bne _020CAC90
+ ldr r1, [sp, #0x1c]
+ add r0, sp, #0x54
+ mov r2, r10
+ bl string_fill_char
+_020CAC90:
+ cmp r7, #0x0
+ ble _020CACB8
+ add r0, sp, #0x38
+ add r4, r0, r7
+_020CACA0:
+ ldrsb r1, [r4, #-0x1]!
+ sub r7, r7, #0x1
+ add r0, sp, #0x54
+ bl string_put_char
+_020CACB0:
+ cmp r7, #0x0
+ bgt _020CACA0
+_020CACB8:
+ ldr r1, [sp, #0x20]
+ mov r2, r5
+ add r0, sp, #0x54
+ bl string_fill_char
+ cmp r8, #0x0
+ ble _020CACF0
+ add r0, sp, #0x3A
+ add r4, r0, r8
+_020CACD8:
+ ldrsb r1, [r4, #-0x1]!
+ sub r8, r8, #0x1
+ add r0, sp, #0x54
+ bl string_put_char
+ cmp r8, #0x0
+ bgt _020CACD8
+_020CACF0:
+ cmp r6, #0x0
+ beq _020CAD08
+ ldr r1, [sp, #0x1C]
+ mov r2, r10
+ add r0, sp, #0x54
+ bl string_fill_char
+_020CAD08:
+ add r9, r9, #0x1
+_020CAD0C:
+ ldrsb r0, [r9, #0x0]
+ cmp r0, #0x0
+ bne _020CA530
+_020CAD18:
+ ldr r0, [sp, #0x54]
+ cmp r0, #0x0
+ ldrne r0, [sp, #0x58]
+ movne r1, #0x0
+ strneb r1, [r0, #0x0]
+ bne _020CAD48
+ ldr r0, [sp, #0x0]
+ cmp r0, #0x0
+ ldrne r1, [sp, #0x5c]
+ movne r2, #0x0
+ addne r0, r1, r0
+ strneb r2, [r0, #-0x1]
+_020CAD48:
+ ldr r1, [sp, #0x58]
+ ldr r0, [sp, #0x5c]
+ sub r0, r1, r0
+ add sp, sp, #0x64
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+}
+#endif
+
+ARM_FUNC void string_put_char(struct printfStr *dest, s8 value)
+{
+ if (dest->spaceLeft != 0)
+ {
+ dest->stringEnd[0] = value;
+ dest->spaceLeft--;
+ }
+ dest->stringEnd++;
+}
+
+ARM_FUNC void string_fill_char(struct printfStr *dest, s8 value, s32 count)
+{
+ if (count <= 0)
+ return;
+
+ u32 written = 0;
+ u32 spaceLeft = (u32)dest->spaceLeft;
+ u32 toWrite = spaceLeft > (u32)count ? count : spaceLeft;
+
+ while (written < toWrite)
+ {
+ dest->stringEnd[written] = value;
+ written++;
+ }
+
+ dest->spaceLeft -= toWrite;
+ dest->stringEnd += count; // this is wrong but matching...
+}
+
+ARM_FUNC void string_put_string(struct printfStr *dest, const s8 *src, s32 count)
+{
+ if (count <= 0)
+ return;
+
+ u32 written = 0;
+ u32 spaceLeft = (u32)dest->spaceLeft;
+ u32 toWrite = spaceLeft > (u32)count ? count : spaceLeft;
+
+ while (written < toWrite)
+ {
+ dest->stringEnd[written] = src[written];
+ written++;
+ }
+
+ dest->spaceLeft -= toWrite;
+ dest->stringEnd += count; // this is wrong but matching...
+}
+
+ARM_FUNC s32 OS_SPrintf(s8 *buffer, const s8 *format, ...)
+{
+ void *args = (void *)((u32 *)((u32)&format & ~0x3) + 1); // hack since mwccarm doesn't have <stdarg.h> apparently
+ return OS_VSPrintf(buffer, format, args);
+}
+
+ARM_FUNC s32 OS_VSPrintf(s8 *buffer, const s8 *format, void *args)
+{
+ return OS_VSNPrintf(buffer, 0x7FFFFFFF, format, args);
+}
+
+ARM_FUNC s32 OS_SNPrintf(s8 *buffer, s32 bufsz, const s8 *format, ...)
+{
+ void *args = (void *)((u32 *)((u32)&format & ~0x3) + 1); // hack since mwccarm doesn't have <stdarg.h> apparently
+ return OS_VSNPrintf(buffer, bufsz, format, args);
+}
+
+#ifdef NONMATCHING
+
+struct Unk
+{
+ s32 unk00;
+ s32 unk04;
+ s32 unk08;
+ s32 unk0C;
+ s32 unk10;
+ s32 unk14;
+ s32 unk18;
+ s32 unk1C;
+ s32 unk20;
+ s32 unk24;
+ s32 unk28;
+ s32 unk2C;
+ s32 unk30;
+ s32 unk34;
+ s8 unk38;
+ s8 unk39;
+ s8 unk3A;
+ // not sure about this struct's size or even if it's a single struct
+};
+
+#define va_arg(list, ty) *(ty *)((u32 *)(list = (void *)((u32 *)(list) + 1)) - 1)
+#define va_arg_64(list, sgn) *((sgn##64 *)(list = (void *)((sgn##64 *)(list) + 1)) - 1)
+
+ARM_FUNC s32 OS_VSNPrintf(s8 *buffer, s32 bufsz, const s8 *format, void *args)
+{
+ struct printfStr str;
+ struct Unk unk;
+ str.spaceLeft = bufsz;
+ str.stringStart = buffer;
+ str.stringEnd = buffer;
+
+ if (*format != 0)
+ {
+ // these assignments are likely wrong
+ unk.unk04 = 0;
+ unk.unk0C = 10;
+ unk.unk1C = 32;
+ unk.unk20 = 48;
+ unk.unk08 = 0;
+ unk.unk10 = 87;
+ unk.unk14 = 8;
+ unk.unk18 = 55;
+ unk.unk24 = 16;
+ unk.unk28 = 1;
+ unk.unk34 = 43;
+ unk.unk30 = 45;
+ unk.unk2C = 2;
+
+
+ do
+ {
+ s8 c = *format;
+ u32 x = (u8)c;
+
+ // matches:
+ // binary range (hex range) [dec range]
+ // 1000 0001-1001 1111 (0x81-0x9F) [129-159]
+ // 1110 0000-1111 1100 (0xE0-0xFC) [224-252]
+ if ((x ^ 0x20) - 0xa1 < 0x3c)
+ {
+ string_put_char(&str, c);
+ c = *(++format);
+ if (c != 0)
+ {
+ format++;
+ string_put_char(&str, c);
+ }
+ }
+ else if (c != '%')
+ {
+ format++;
+ string_put_char(&str, c);
+ }
+ else
+ {
+ s32 flags = unk.unk04;
+ s32 r5 = unk.unk08;
+ s32 r2 = unk.unk0C;
+ s32 r0 = unk.unk10;
+ s32 r10 = flags;
+ const s8 *r3 = format;
+ s8 r4;
+ while (1)
+ {
+ r4 = *(++format);
+ switch (r4)
+ {
+ case '+':
+ c = *(format - 1);
+ if (c == ' ')
+ goto post_padding;
+ flags |= 0x2;
+ break;
+ case ' ':
+ flags |= 0x1;
+ break;
+ case '-':
+ flags |= 0x8;
+ break;
+ case '0':
+ flags |= 0x10;
+ break;
+ default:
+ goto post_padding;
+ }
+ }
+ post_padding:
+ if (r4 == '*')
+ {
+ u32 v = va_arg(args, u32);
+ format++;
+ if (v < 0)
+ {
+ r10 = -r10;
+ flags |= 0x8;
+ }
+ }
+ else
+ {
+ for (c = *format; c >= '0' && c <= '9'; c = *format)
+ {
+ s8 d = *(format++);
+ r10 = (r10 * 10 + d) - '0';
+ }
+ }
+
+ c = *format;
+ if (c == '.')
+ {
+ c = *(++format);
+ r5 = unk.unk04;
+ if (c == '*')
+ {
+ u32 v = va_arg(args, u32);
+ format++;
+ if (v < 0)
+ {
+ r5 = unk.unk08;
+ }
+ }
+ for (c = *format; c >= '0' && c <= '9'; c = *format)
+ {
+ s8 d = *(format++);
+ r5 = (r5 * 10 + d) - '0';
+ }
+ }
+
+ c = *format;
+ switch (c)
+ {
+ case 'h':
+ c = *format++;
+ if (c != 'h')
+ {
+ flags |= 0x40;
+ format++;
+ flags |= 0x100;
+ }
+ break;
+ case 'l':
+ c = *format++;
+ if (c != 'l')
+ {
+ flags |= 0x20;
+ format++;
+ flags |= 0x80;
+ }
+ break;
+ }
+
+ c = *format;
+ switch (c)
+ {
+ case 'o':
+ r2 = unk.unk14;
+ flags |= 0x1000;
+ break;
+ case 'u':
+ flags |= 0x1000;
+ break;
+ case 'X':
+ r0 = unk.unk18;
+ goto case_x;
+ case 'p':
+ flags |= 0x4;
+ r5 = unk.unk14;
+ case 'c':
+ if ((s32)r5 < 0)
+ {
+ r0 = flags & 0x8;
+ u32 v = va_arg(args, u32);
+ if (r0)
+ {
+ string_put_char(&str, (s8)v);
+ string_fill_char(&str, (s8)unk.unk1C, r10 - 1);
+ }
+ else
+ {
+ r0 = flags & 0x10;
+ if (r0)
+ r0 = unk.unk20;
+ else
+ r0 = unk.unk1C;
+ string_fill_char(&str, (s8)r0, r10 - 1);
+ string_put_char(&str, (s8)v);
+ }
+ format++;
+ }
+ break;
+ case 's':
+ {
+ s8 *v = *(((s8 **)args)++);
+ s32 count = unk.unk04;
+ if (r5 < 0)
+ {
+ while (v[count] != 0)
+ {
+ count++;
+ }
+ }
+ else
+ {
+ while (count < r5 && v[count] != 0)
+ {
+ count++;
+ }
+ }
+ r0 = flags & 0x8;
+ r10 = r10 - count;
+ if (r0)
+ {
+ string_put_string(&str, v, count);
+ string_fill_char(&str, (s8)unk.unk1C, r10);
+ }
+ else
+ {
+ r0 = flags & 0x10;
+ if (r0)
+ r0 = unk.unk20;
+ else
+ r0 = unk.unk1C;
+ string_fill_char(&str, (s8)r0, r10 - 1);
+ string_put_string(&str, v, count);
+ }
+ format++;
+ break;
+ }
+ case 'n':
+ {
+ r0 = flags & 0x100;
+ s32 count = str.stringEnd - str.stringStart;
+ if (!r0)
+ {
+ if (flags & 0x40)
+ {
+ s16 *v = va_arg(args, s16 *);
+ *v = (s16)count;
+ }
+ else if (flags & 0x80)
+ {
+ s64 *v = va_arg(args, s64 *);
+ *v = count;
+ }
+ else
+ {
+ s64 *v = va_arg(args, s64 *);
+ *v = count;
+ }
+ }
+ format++;
+ }
+ case '%':
+ if (r3 + 1 == format)
+ {
+ format++;
+ string_put_char(&str, c);
+ break;
+ }
+ else
+ {
+ string_put_string(&str, r3, format - r3);
+ break;
+ }
+ case 'x':
+ case_x:
+ r2 = unk.unk24;
+ flags |= 0x1000;
+ case 'd':
+ case 'i':
+ if (flags & 0x8)
+ {
+ flags = flags & ~0x10;
+ }
+ if (r5 >= 0)
+ {
+ flags = flags & ~0x10;
+ }
+ else
+ {
+ r5 = unk.unk28;
+ }
+ s32 r7 = unk.unk04;
+ u64 value;
+ if (flags & 0x1000)
+ {
+ if (flags & 0x100)
+ {
+ value = va_arg(args, u8);
+ }
+ else if (flags & 0x40)
+ {
+ value = va_arg(args, u16);
+ }
+ else if (flags & 0x80)
+ {
+ value = va_arg_64(args, u);
+ }
+ else
+ {
+ value = va_arg(args, u32);
+ }
+ flags = flags & ~0x3;
+ if (flags & 0x4)
+ {
+ if (r2 == 0x10)
+ {
+ if (value != 0)
+ {
+ s32 something = unk.unk20;
+ s32 somethingElse = unk.unk2C;
+ unk.unk39 = (s8)something;
+ unk.unk38 = (s8)(something + 0x21);
+ // 0x21 could be 'a'-'A'+1
+ }
+ }
+ else
+ {
+ if (r2 == 0x8)
+ {
+ s32 something = unk.unk20;
+ r7 = unk.unk28;
+ unk.unk38 = (s8)(something);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (flags & 0x100)
+ {
+ s32 x = (s32)va_arg(args, s8);
+ value = (u64)x;
+ }
+ else if (flags & 0x40)
+ {
+ s32 x = (s32)va_arg(args, s16);
+ value = (u64)x;
+ }
+ else if (flags & 0x80)
+ {
+ s64 dWord = va_arg_64(args, s);
+ value = (u64)dWord;
+ }
+ else
+ {
+ s32 x = va_arg(args, s32);
+ value = (u64)value;
+ }
+
+ if (value & 0x8000000000000000)
+ {
+ unk.unk38 = (s8)unk.unk30;
+ value = ~value + 1;
+ r7 = unk.unk28;
+ }
+ else
+ {
+ if (value || r5)
+ {
+ if (flags & 0x2)
+ {
+ r7 = unk.unk28;
+ unk.unk38 = (s8)unk.unk34;
+ }
+ else if (flags & 0x1)
+ {
+ r7 = unk.unk28;
+ unk.unk38 = (s8)unk.unk1C;
+ }
+ }
+ }
+ s32 r8 = flags;
+ switch (r2)
+ {
+ case 8:
+ while (value != 0)
+ {
+ u32 octDig = ((u32)value & 0x7) + '0';
+ s8 *p = &unk.unk3A;
+ p[r8] = (s8)octDig;
+ value = value >> 3;
+ r8++;
+ }
+ break;
+ case 10:
+ if (value >> 32 == 0)
+ {
+ u32 v = (u32)value;
+ while (v)
+ {
+ u32 div10 = v / 10;
+ u32 dig = v - div10;
+ v = div10;
+ s8 *p = &unk.unk3A;
+ p[r8] = (s8)dig;
+ r8++;
+ }
+ }
+ else
+ {
+ while (value)
+ {
+ u64 div10 = value / 10;
+ u32 dig = (u32)(value - div10);
+ value = div10;
+ s8 *p = &unk.unk3A;
+ p[r8] = (s8)dig;
+ r8++;
+ }
+ }
+ break;
+ case 16:
+ while (value != 0)
+ {
+ u32 hexDig = ((u32)value & 0xf);
+ value = value >> 4;
+ if (hexDig < 10)
+ hexDig = hexDig + '0';
+ else
+ hexDig = hexDig + r0;
+ s8 *p = &unk.unk3A;
+ p[r8] = (s8)hexDig;
+ r8++;
+ }
+ break;
+ }
+ if (r7 > 0)
+ {
+ if (unk.unk38 == '0')
+ {
+ s8 *p = &unk.unk3A;
+ p[r8] = (s8)unk.unk20;
+ r7 = flags;
+ r8++;
+ }
+ r5 = r5 - r8;
+ if (flags & 0x10)
+ {
+ if (r5 < r10 - r8 - r7)
+ {
+ r5 = r10 - r8 - r7;
+ }
+ }
+ if (r5 > 0)
+ {
+ r10 = r10 - r5;
+ }
+
+ r10 = r10 - (r7 + r8);
+ flags = flags & 0x8;
+ if (!flags)
+ {
+ string_fill_char(&str, (s8)unk.unk1C, r10);
+ }
+ s8 *x = &unk.unk38 + r7;
+ while (r7 > 0)
+ {
+ s8 ch = *(x--);
+ r7--;
+ string_put_char(&str, ch);
+ }
+ string_fill_char(&str, (s8)unk.unk20, r5);
+ x = &unk.unk3A + r8;
+ while (r8 > 0)
+ {
+ s8 ch = *(x--);
+ r8--;
+ string_put_char(&str, ch);
+ }
+ if (flags)
+ {
+ string_fill_char(&str, (s8)unk.unk1C, r10);
+ }
+ }
+ }
+ format++;
+ break;
+ }
+ if (str.spaceLeft != 0)
+ {
+ *str.stringEnd = 0;
+ }
+ else if (unk.unk00 != 0)
+ {
+ *(str.stringStart + unk.unk00 - 1) = 0;
+ }
+ }
+ } while (*format != 0);
+ }
+
+ if (str.spaceLeft != 0)
+ {
+ *str.stringEnd = 0;
+ }
+ else if (unk.unk00 != 0)
+ {
+ str.stringStart[unk.unk00] = 0;
+ }
+ return str.stringEnd - str.stringStart;
+}
+
+#endif
diff --git a/arm9/lib/src/OS_reset.c b/arm9/lib/src/OS_reset.c
new file mode 100644
index 00000000..c21d20ab
--- /dev/null
+++ b/arm9/lib/src/OS_reset.c
@@ -0,0 +1,62 @@
+//
+// Created by red031000 on 2020-05-06.
+//
+
+#include "function_target.h"
+#include "OS_reset.h"
+#include "MB_mb.h"
+#include "OS_terminate_proc.h"
+
+extern u16 OSi_IsInitReset;
+extern vu16 OSi_IsResetOccurred;
+extern void PXI_Init();
+extern u32 PXI_IsCallbackReady(u32 param1, u32 param2);
+extern void PXI_SetFifoRecvCallback(u32 param1, void* callback);
+extern u32 PXI_SendWordByFifo(u32 param1, u32 data, u32 param2);
+extern void CARD_LockRom(u16 lockId);
+extern void MI_StopDma(u32 dma);
+extern void OS_SetIrqMask(u32 mask);
+extern void OS_ResetRequestIrqMask(u32 mask);
+extern void OSi_DoResetSystem(); //in itcm, should technically be in this file
+
+ARM_FUNC void OS_InitReset() {
+ if (OSi_IsInitReset) {
+ return;
+ }
+ OSi_IsInitReset = TRUE;
+ PXI_Init();
+ while (!PXI_IsCallbackReady(PXI_FIFO_TAG_OS, PXI_PROC_ARM7)) { }
+
+ PXI_SetFifoRecvCallback(PXI_FIFO_TAG_OS, OSi_CommonCallback);
+}
+
+ARM_FUNC static void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err) {
+#pragma unused(tag, err) //needed because otherwise -W all errors
+ u16 command = (u16)((data & OS_PXI_COMMAND_MASK) >> OS_PXI_COMMAND_SHIFT);
+ if (command == OS_PXI_COMMAND_RESET)
+ {
+ OSi_IsResetOccurred = TRUE;
+ return;
+ }
+ OS_Terminate();
+}
+
+ARM_FUNC static void OSi_SendToPxi(u16 data) {
+ while (PXI_SendWordByFifo(PXI_FIFO_TAG_OS, (u32)data << 0x8, FALSE)) {}
+}
+
+ARM_FUNC void OS_ResetSystem(u32 parameter) {
+ if (MB_IsMultiBootChild()) {
+ OS_Terminate();
+ }
+ CARD_LockRom((u16)OS_GetLockID());
+ MI_StopDma(0);
+ MI_StopDma(1);
+ MI_StopDma(2);
+ MI_StopDma(3);
+ OS_SetIrqMask(0x40000);
+ OS_ResetRequestIrqMask((u32)~0);
+ *(u32 *)HW_RESET_PARAMETER_BUF = parameter;
+ OSi_SendToPxi(OS_PXI_COMMAND_RESET);
+ OSi_DoResetSystem(); //oh boy this is in itcm, that's gonna be fun to deal with Kappa
+}
diff --git a/arm9/lib/src/OS_system.c b/arm9/lib/src/OS_system.c
index c2b08681..e5dfcb47 100644
--- a/arm9/lib/src/OS_system.c
+++ b/arm9/lib/src/OS_system.c
@@ -2,7 +2,6 @@
// Created by mart on 4/23/20.
//
-#include "function_target.h"
#include "OS_system.h"
ARM_FUNC asm OSIntrMode OS_EnableInterrupts() {
diff --git a/arm9/lib/src/OS_tcm.c b/arm9/lib/src/OS_tcm.c
new file mode 100644
index 00000000..5a168c58
--- /dev/null
+++ b/arm9/lib/src/OS_tcm.c
@@ -0,0 +1,13 @@
+//
+// Created by red031000 on 2020-05-05.
+//
+
+#include "OS_tcm.h"
+#include "function_target.h"
+
+ARM_FUNC asm u32 OS_GetDTCMAddress() {
+ mrc p15, 0x0, r0, c9, c1, 0x0
+ ldr r1, =OSi_TCM_REGION_BASE_MASK
+ and r0, r0, r1
+ bx lr
+}
diff --git a/arm9/lib/src/OS_terminate_proc.c b/arm9/lib/src/OS_terminate_proc.c
new file mode 100644
index 00000000..eb267c6b
--- /dev/null
+++ b/arm9/lib/src/OS_terminate_proc.c
@@ -0,0 +1,21 @@
+//
+// Created by red031000 on 2020-05-07.
+//
+
+#include "types.h"
+#include "OS_terminate_proc.h"
+#include "function_target.h"
+#include "OS_system.h"
+
+ARM_FUNC void OS_Terminate() {
+ while (TRUE) {
+ (void)OS_DisableInterrupts();
+ OS_Halt();
+ }
+}
+
+ARM_FUNC asm void OS_Halt() {
+ mov r0, #0x0
+ mcr p15, 0x0, r0, c7, c0, 0x4
+ bx lr
+}
diff --git a/arm9/macros.lcf.inc b/arm9/macros.lcf.inc
index f72f93fa..f58c2432 100644
--- a/arm9/macros.lcf.inc
+++ b/arm9/macros.lcf.inc
@@ -1,15 +1,9 @@
-#define OVERLAY_TABLE(module, number) \
-WRITEW number; \
-WRITEW module##_START; \
-WRITEW module##_SIZE; \
-WRITEW module##_BSSSIZE; \
-WRITEW module##_STATIC_INIT_START; \
-WRITEW module##_STATIC_INIT_END; \
-WRITEW number; \
+#define OVERLAY_TABLE(module, number) \
+WRITEW number; \
+WRITEW SDK_OVERLAY_##module##_START; \
+WRITEW SDK_OVERLAY_##module##_SIZE; \
+WRITEW SDK_OVERLAY_##module##_BSSSIZE; \
+WRITEW SDK_OVERLAY_##module##_STATIC_INIT_START; \
+WRITEW SDK_OVERLAY_##module##_STATIC_INIT_END; \
+WRITEW number; \
WRITEW 0;
-
-#define OVERLAY_FILE(number, offset, filename) \
-.MODULE.##number : AT (offset) { \
- . = ALIGN(512); \
- filename (.text) \
-} > MODULE_##number
diff --git a/arm9/modules/00/asm/module_00_dummy.s b/arm9/modules/00/asm/module_00_dummy.s
index e8a42167..8b137891 100644
--- a/arm9/modules/00/asm/module_00_dummy.s
+++ b/arm9/modules/00/asm/module_00_dummy.s
@@ -1,2 +1 @@
- .section .data
- .space 32
+
diff --git a/arm9/modules/01/src/module_01.c b/arm9/modules/01/src/module_01.c
deleted file mode 100644
index ae2e9d1f..00000000
--- a/arm9/modules/01/src/module_01.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "global.h"
-
-u32 UNK_021D7500[8];
-
-THUMB_FUNC void MOD01_021D74E0(void)
-{
- UNK_021D7500[1]++;
-}
-
-THUMB_FUNC void (*UNK_021D74F0[4])(void) = {
- MOD01_021D74E0
-};
diff --git a/arm9/modules/01/src/module_01.cpp b/arm9/modules/01/src/module_01.cpp
new file mode 100644
index 00000000..9da5f8d5
--- /dev/null
+++ b/arm9/modules/01/src/module_01.cpp
@@ -0,0 +1,11 @@
+#include "global.h"
+#include "FS_overlay.h"
+
+class Unk021D7500 {
+ u32 unk0;
+ u32 unk4;
+public:
+ THUMB_FUNC Unk021D7500() { unk4++; }
+};
+
+static Unk021D7500 UNK_021D7500;
diff --git a/arm9/modules/02/asm/module_02_dummy.s b/arm9/modules/02/asm/module_02_dummy.s
index e8a42167..8b137891 100644
--- a/arm9/modules/02/asm/module_02_dummy.s
+++ b/arm9/modules/02/asm/module_02_dummy.s
@@ -1,2 +1 @@
- .section .data
- .space 32
+
diff --git a/arm9/modules/03/asm/module_03_dummy.s b/arm9/modules/03/asm/module_03_dummy.s
index 70f9f9c2..8b137891 100644
--- a/arm9/modules/03/asm/module_03_dummy.s
+++ b/arm9/modules/03/asm/module_03_dummy.s
@@ -1,4 +1 @@
- .section .data
- .space 32
- .section .bss
- .space 32
+
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s
index 8d1d699b..132857e1 100644
--- a/arm9/modules/04/asm/arm_04.s
+++ b/arm9/modules/04/asm/arm_04.s
@@ -3,8 +3,8 @@
.section .text
.balign 4, 0
- arm_func_start FUN_021D8D18
-FUN_021D8D18: ; 0x021D8D18
+ arm_func_start MOD04_021D8D18
+MOD04_021D8D18: ; 0x021D8D18
stmdb sp!, {r4, lr}
ldr r2, _021D8D58 ; =0x02210468
ldr r1, _021D8D5C ; =0x000013D8
@@ -25,8 +25,8 @@ FUN_021D8D18: ; 0x021D8D18
_021D8D58: .word 0x02210468
_021D8D5C: .word 0x000013D8
- arm_func_start FUN_021D8D60
-FUN_021D8D60: ; 0x021D8D60
+ arm_func_start MOD04_021D8D60
+MOD04_021D8D60: ; 0x021D8D60
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x98
ldr r4, _021D8EE0 ; =0x0221046C
@@ -45,7 +45,7 @@ FUN_021D8D60: ; 0x021D8D60
ldr r1, _021D8EE8 ; =0x0220BF04
ldr r2, _021D8EE4 ; =0x0220BEF8
mov r0, r5
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
beq _021D8E18
add sp, sp, #0x98
@@ -58,7 +58,7 @@ _021D8DC0:
ldr r1, _021D8EE8 ; =0x0220BF04
ldr r2, _021D8EEC ; =0x0220BF0C
mov r0, r5
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x98
movne r0, #8
@@ -69,7 +69,7 @@ _021D8DC0:
ldr r1, _021D8EF0 ; =0x0220BF14
mov r0, r5
mov r2, r6
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x98
movne r0, #8
@@ -77,7 +77,7 @@ _021D8DC0:
_021D8E18:
ldr r1, _021D8EE0 ; =0x0221046C
add r0, sp, #0
- bl FUN_021D9F78
+ bl MOD04_021D9F78
cmp r0, #0
addeq sp, sp, #0x98
moveq r0, #5
@@ -86,7 +86,7 @@ _021D8E18:
add r1, sp, #0
ldr r2, [r0]
mov r0, r5
- bl FUN_021D9C2C
+ bl MOD04_021D9C2C
cmp r0, #0
addeq sp, sp, #0x98
moveq r0, #8
@@ -101,7 +101,7 @@ _021D8E18:
ldr r1, _021D8F00 ; =0x0220BF20
ldr r2, _021D8EFC ; =0x0220BF1C
mov r0, r5
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x98
movne r0, #8
@@ -118,7 +118,7 @@ _021D8E94:
mov r0, r5
mov r2, r4
mov r3, r3, lsl #1
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x98
movne r0, #8
@@ -139,8 +139,8 @@ _021D8EFC: .word 0x0220BF1C
_021D8F00: .word 0x0220BF20
_021D8F04: .word 0x0220BF28
- arm_func_start FUN_021D8F08
-FUN_021D8F08: ; 0x021D8F08
+ arm_func_start MOD04_021D8F08
+MOD04_021D8F08: ; 0x021D8F08
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r0, _021D91BC ; =0x02210468
@@ -150,11 +150,11 @@ FUN_021D8F08: ; 0x021D8F08
add r0, r0, #0x1000
ldr r0, [r0, #0x314]
ldr r1, _021D91C0 ; =0x0220BF34
- bl FUN_021DA388
+ bl MOD04_021DA388
str r0, [sp]
cmp r0, #0
beq _021D8F40
- bl FUN_021DCA84
+ bl MOD04_021DCA84
_021D8F40:
ldr r0, _021D91BC ; =0x02210468
mov r2, #0
@@ -165,7 +165,7 @@ _021D8F40:
add r0, r1, #0x1000
ldr r0, [r0, #0x314]
ldr r1, _021D91C8 ; =0x0220BF3C
- bl FUN_021DA388
+ bl MOD04_021DA388
bl atol
ldr r1, _021D91C4 ; =0x021D74A8
ldr r1, [r1]
@@ -200,7 +200,7 @@ _021D8FC8:
ldr r0, [r0, #0x314]
add r2, r3, r2
mov r3, #4
- bl FUN_021DA334
+ bl MOD04_021DA334
cmp r0, #0
bgt _021D9014
ldr r0, _021D91BC ; =0x02210468
@@ -266,7 +266,7 @@ _021D9014:
add r0, r2, #0x1000
ldr r0, [r0, #0x314]
add r2, r2, r5
- bl FUN_021DA334
+ bl MOD04_021DA334
ldr r0, _021D91BC ; =0x02210468
ldr r2, _021D91EC ; =0x0000101F
ldr r3, [r0]
@@ -275,7 +275,7 @@ _021D9014:
add r2, r3, r2
ldr r0, [r0, #0x314]
mov r3, #0x33
- bl FUN_021DA334
+ bl MOD04_021DA334
ldr r0, _021D91BC ; =0x02210468
ldr r2, _021D91F4 ; =0x0000117F
ldr r3, [r0]
@@ -284,7 +284,7 @@ _021D9014:
add r2, r3, r2
ldr r0, [r0, #0x314]
mov r3, #9
- bl FUN_021DA334
+ bl MOD04_021DA334
ldr r0, _021D91BC ; =0x02210468
ldr r2, _021D91FC ; =0x00001010
ldr r3, [r0]
@@ -293,7 +293,7 @@ _021D9014:
add r2, r3, r2
ldr r0, [r0, #0x314]
mov r3, #0xf
- bl FUN_021DA334
+ bl MOD04_021DA334
ldr r0, _021D91BC ; =0x02210468
ldr r2, _021D9204 ; =0x00001188
ldr r3, [r0]
@@ -302,7 +302,7 @@ _021D9014:
add r2, r3, r2
ldr r0, [r0, #0x314]
mov r3, #0x41
- bl FUN_021DA2F4
+ bl MOD04_021DA2F4
ldr r0, _021D91BC ; =0x02210468
mov r1, #0
ldr r0, [r0]
@@ -342,8 +342,8 @@ _021D9204: .word 0x00001188
_021D9208: .word 0x0220BF7C
_021D920C: .word 0x02210464
- arm_func_start FUN_021D9210
-FUN_021D9210: ; 0x021D9210
+ arm_func_start MOD04_021D9210
+MOD04_021D9210: ; 0x021D9210
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r0, _021D93F4 ; =0x02210468
@@ -353,7 +353,7 @@ FUN_021D9210: ; 0x021D9210
ldr r0, [r2, #0x314]
ldr r5, [r2, #0x20c]
ldr r4, [r2, #0x210]
- bl FUN_021DA3DC
+ bl MOD04_021DA3DC
cmp r0, #1
beq _021D9260
ldr r0, _021D93F4 ; =0x02210468
@@ -365,7 +365,7 @@ FUN_021D9210: ; 0x021D9210
mov r0, #0xe
ldmia sp!, {r4, r5, pc}
_021D9260:
- bl FUN_021D8F08
+ bl MOD04_021D8F08
cmp r0, #0
addne sp, sp, #4
movne r0, #0xe
@@ -485,8 +485,8 @@ _021D940C: .word 0x0220BF98
_021D9410: .word 0x00004E88
_021D9414: .word 0x00004E8C
- arm_func_start FUN_021D9418
-FUN_021D9418: ; 0x021D9418
+ arm_func_start MOD04_021D9418
+MOD04_021D9418: ; 0x021D9418
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x14
mov sb, #0
@@ -528,7 +528,7 @@ _021D9470:
cmp r0, #7
bne _021D94C0
mov r0, #0x14
- bl FUN_021D8D18
+ bl MOD04_021D8D18
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021D94C0:
@@ -537,19 +537,19 @@ _021D94C0:
cmp r0, #2
bne _021D94E0
mov r0, #9
- bl FUN_021D8D18
+ bl MOD04_021D8D18
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021D94E0:
cmp r0, #3
bne _021D94F8
mov r0, #0xb
- bl FUN_021D8D18
+ bl MOD04_021D8D18
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021D94F8:
mov r0, #0xd
- bl FUN_021D8D18
+ bl MOD04_021D8D18
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021D9508:
@@ -558,7 +558,7 @@ _021D9508:
str r0, [sp]
b _021D9598
_021D9518:
- bl FUN_021D9210
+ bl MOD04_021D9210
cmp r0, #0x10
beq _021D9544
cmp r0, #0x11
@@ -566,14 +566,14 @@ _021D9518:
cmp r0, #0x15
bne _021D9578
mov r0, #0x15
- bl FUN_021D8D18
+ bl MOD04_021D8D18
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021D9544:
cmp sb, #2
ble _021D955C
mov r0, #0x10
- bl FUN_021D8D18
+ bl MOD04_021D8D18
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021D955C:
@@ -582,13 +582,13 @@ _021D955C:
str r0, [sp]
b _021D9598
_021D956C:
- bl FUN_021D8D18
+ bl MOD04_021D8D18
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021D9578:
cmp sb, #2
blt _021D958C
- bl FUN_021D8D18
+ bl MOD04_021D8D18
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021D958C:
@@ -627,7 +627,7 @@ _021D95D4:
add r0, r1, r0
bl OS_UnlockMutex
mov r0, #0x14
- bl FUN_021D8D18
+ bl MOD04_021D8D18
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021D961C:
@@ -651,12 +651,12 @@ _021D965C:
ldr r0, [r5]
add r0, r0, #0x1000
ldr r0, [r0, #0x314]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
ldr r0, [r5]
add r0, r0, r4
bl OS_LockMutex
ldr r0, [sp]
- bl FUN_021D96EC
+ bl MOD04_021D96EC
ldr r1, [r5]
add r1, r1, #0x1000
str r0, [r1, #4]
@@ -678,8 +678,8 @@ _021D96C0:
bl OS_UnlockMutex
b _021D9448
- arm_func_start FUN_021D96CC
-FUN_021D96CC: ; 0x021D96CC
+ arm_func_start MOD04_021D96CC
+MOD04_021D96CC: ; 0x021D96CC
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
@@ -690,8 +690,8 @@ _021D96E0: .word 0x000013D8
_021D96E4: .word 0x00001B34
_021D96E8: .word 0x00004E84
- arm_func_start FUN_021D96EC
-FUN_021D96EC: ; 0x021D96EC
+ arm_func_start MOD04_021D96EC
+MOD04_021D96EC: ; 0x021D96EC
stmdb sp!, {r4, lr}
ldr r1, _021D97E0 ; =0x0220BEB4
mov r4, r0
@@ -711,7 +711,7 @@ FUN_021D96EC: ; 0x021D96EC
ldr r2, [r0, #0x210]
str r2, [r1, #0x10]
ldr r0, [r0, #0x314]
- bl FUN_021DB608
+ bl MOD04_021DB608
cmp r0, #0
movne r0, #4
ldmneia sp!, {r4, pc}
@@ -727,7 +727,7 @@ _021D9758:
ldr r0, [r0, #0x314]
add r1, r3, #0x1200
add r2, r3, r2
- bl FUN_021D8D60
+ bl MOD04_021D8D60
ldr r2, _021D97E8 ; =0x02210468
ldr r1, [r2]
add r1, r1, #0x1000
@@ -739,7 +739,7 @@ _021D9758:
movne r0, #4
ldmneia sp!, {r4, pc}
ldr r0, [r0, #0x314]
- bl FUN_021DB570
+ bl MOD04_021DB570
cmp r0, #0
movne r0, #4
ldmneia sp!, {r4, pc}
@@ -751,7 +751,7 @@ _021D9758:
sub r1, r0, #1
add r0, r2, #0x1000
ldr r0, [r0, #0x314]
- bl FUN_021DB4A4
+ bl MOD04_021DB4A4
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
@@ -762,8 +762,8 @@ _021D97EC: .word 0x0221046C
_021D97F0: .word 0x000011CC
_021D97F4: .word 0x021D3498
- arm_func_start FUN_021D97F8
-FUN_021D97F8: ; 0x021D97F8
+ arm_func_start MOD04_021D97F8
+MOD04_021D97F8: ; 0x021D97F8
stmdb sp!, {r4, lr}
ldr r1, _021D9874 ; =0x02210468
mov r4, r0
@@ -806,8 +806,8 @@ _021D9880: .word 0x00007530
_021D9884: .word 0x00005206
_021D9888: .word 0x00004E84
- arm_func_start FUN_021D988C
-FUN_021D988C: ; 0x021D988C
+ arm_func_start MOD04_021D988C
+MOD04_021D988C: ; 0x021D988C
stmdb sp!, {r4, lr}
ldr r0, _021D98D4 ; =0x02210468
ldr r1, [r0]
@@ -830,8 +830,8 @@ FUN_021D988C: ; 0x021D988C
_021D98D4: .word 0x02210468
_021D98D8: .word 0x000013D8
- arm_func_start FUN_021D98DC
-FUN_021D98DC: ; 0x021D98DC
+ arm_func_start MOD04_021D98DC
+MOD04_021D98DC: ; 0x021D98DC
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021D9914 ; =0x02210468
@@ -850,8 +850,8 @@ FUN_021D98DC: ; 0x021D98DC
_021D9914: .word 0x02210468
_021D9918: .word 0x00001318
- arm_func_start FUN_021D991C
-FUN_021D991C: ; 0x021D991C
+ arm_func_start MOD04_021D991C
+MOD04_021D991C: ; 0x021D991C
stmdb sp!, {r4, lr}
ldr r0, _021D996C ; =0x02210468
ldr r0, [r0]
@@ -862,7 +862,7 @@ FUN_021D991C: ; 0x021D991C
ldr r4, [r1, #0x210]
cmp r0, #0
beq _021D9948
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
_021D9948:
ldr r1, _021D996C ; =0x02210468
ldr r0, _021D9970 ; =0x0220BFC4
@@ -877,8 +877,8 @@ _021D9948:
_021D996C: .word 0x02210468
_021D9970: .word 0x0220BFC4
- arm_func_start FUN_021D9974
-FUN_021D9974: ; 0x021D9974
+ arm_func_start MOD04_021D9974
+MOD04_021D9974: ; 0x021D9974
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021D9A0C ; =0x02210468
@@ -904,7 +904,7 @@ FUN_021D9974: ; 0x021D9974
ldr r0, [r0, #0x314]
cmp r0, #0
beq _021D99DC
- bl FUN_021DB440
+ bl MOD04_021DB440
_021D99DC:
ldr r0, _021D9A0C ; =0x02210468
ldr r1, [r0]
@@ -923,8 +923,8 @@ _021D9A0C: .word 0x02210468
_021D9A10: .word 0x000013D8
_021D9A14: .word 0x00001318
- arm_func_start FUN_021D9A18
-FUN_021D9A18: ; 0x021D9A18
+ arm_func_start MOD04_021D9A18
+MOD04_021D9A18: ; 0x021D9A18
stmdb sp!, {lr}
sub sp, sp, #0xc
ldr r1, _021D9ABC ; =0x02210468
@@ -953,7 +953,7 @@ _021D9A74:
ldr r0, _021D9AC4 ; =0x00001318
ldr lr, [r2]
mov r3, #0x1000
- ldr r1, _021D9AC8 ; =FUN_021D9418
+ ldr r1, _021D9AC8 ; =MOD04_021D9418
str r3, [sp]
mov ip, #0x10
add r0, lr, r0
@@ -971,10 +971,10 @@ _021D9A74:
_021D9ABC: .word 0x02210468
_021D9AC0: .word 0x000013D8
_021D9AC4: .word 0x00001318
-_021D9AC8: .word FUN_021D9418
+_021D9AC8: .word MOD04_021D9418
- arm_func_start FUN_021D9ACC
-FUN_021D9ACC: ; 0x021D9ACC
+ arm_func_start MOD04_021D9ACC
+MOD04_021D9ACC: ; 0x021D9ACC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r2, _021D9BFC ; =0x02210468
@@ -1034,7 +1034,7 @@ _021D9B7C:
ldr r1, [r1]
add r1, r1, #0x1000
strb r2, [r1, #0x20b]
- bl FUN_021D96EC
+ bl MOD04_021D96EC
ldr r2, _021D9BFC ; =0x02210468
ldr r1, [r2]
add r1, r1, #0x1000
@@ -1048,7 +1048,7 @@ _021D9B7C:
ldr r0, _021D9C18 ; =0x02210460
mov r1, #0
str r1, [r0]
- bl FUN_021D9A18
+ bl MOD04_021D9A18
mov r0, #0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
@@ -1062,16 +1062,16 @@ _021D9C10: .word 0x00004E84
_021D9C14: .word 0x000011CC
_021D9C18: .word 0x02210460
- arm_func_start FUN_021D9C1C
-FUN_021D9C1C: ; 0x021D9C1C
+ arm_func_start MOD04_021D9C1C
+MOD04_021D9C1C: ; 0x021D9C1C
ldr r1, _021D9C28 ; =0x0220BEB4
str r0, [r1]
bx lr
.align 2, 0
_021D9C28: .word 0x0220BEB4
- arm_func_start FUN_021D9C2C
-FUN_021D9C2C: ; 0x021D9C2C
+ arm_func_start MOD04_021D9C2C
+MOD04_021D9C2C: ; 0x021D9C2C
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x28
mov r4, r2
@@ -1090,7 +1090,7 @@ FUN_021D9C2C: ; 0x021D9C2C
ldr r1, _021D9F34 ; =0x0220BFF0
mov r0, r6
add r2, sp, #4
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1101,7 +1101,7 @@ FUN_021D9C2C: ; 0x021D9C2C
ldr r1, _021D9F38 ; =0x0220BFF8
mov r0, r6
mov r2, r5
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1112,7 +1112,7 @@ FUN_021D9C2C: ; 0x021D9C2C
ldr r1, _021D9F3C ; =0x0220C000
mov r0, r6
add r2, r5, #0xe
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1123,7 +1123,7 @@ FUN_021D9C2C: ; 0x021D9C2C
ldr r1, _021D9F40 ; =0x0220C008
mov r0, r6
add r2, r5, #0x41
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1134,7 +1134,7 @@ FUN_021D9C2C: ; 0x021D9C2C
ldr r1, _021D9F44 ; =0x0220C010
mov r0, r6
add r2, r5, #0x6f
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1145,7 +1145,7 @@ FUN_021D9C2C: ; 0x021D9C2C
ldr r1, _021D9F48 ; =0x0220C018
mov r0, r6
add r2, r5, #0x15
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1156,7 +1156,7 @@ FUN_021D9C2C: ; 0x021D9C2C
ldr r1, _021D9F4C ; =0x0220C020
mov r0, r6
add r2, r5, #0x1a
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1167,7 +1167,7 @@ FUN_021D9C2C: ; 0x021D9C2C
ldr r1, _021D9F50 ; =0x0220C028
mov r0, r6
add r2, r5, #0x1d
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1178,7 +1178,7 @@ FUN_021D9C2C: ; 0x021D9C2C
ldr r1, _021D9F54 ; =0x0220C030
mov r0, r6
add r2, r5, #0x1f
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1189,7 +1189,7 @@ FUN_021D9C2C: ; 0x021D9C2C
ldr r1, _021D9F58 ; =0x0220C038
mov r0, r6
add r2, r5, #0x2c
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1200,7 +1200,7 @@ FUN_021D9C2C: ; 0x021D9C2C
ldr r1, _021D9F5C ; =0x0220C040
mov r0, r6
add r2, r5, #0x2f
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1211,7 +1211,7 @@ FUN_021D9C2C: ; 0x021D9C2C
ldr r1, _021D9F60 ; =0x0220C048
mov r0, r6
add r2, r5, #0x34
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1223,7 +1223,7 @@ FUN_021D9C2C: ; 0x021D9C2C
mov r0, r6
add r2, r5, #0x7e
mov r3, r3, lsl #1
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1236,7 +1236,7 @@ FUN_021D9C2C: ; 0x021D9C2C
ldr r1, _021D9F68 ; =0x0220C058
mov r0, r6
add r2, r5, #0x4e
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1252,7 +1252,7 @@ _021D9ED0:
ldr r1, _021D9F70 ; =0x0220C078
add r2, sp, #4
mov r0, r6
- bl FUN_021DAC98
+ bl MOD04_021DAC98
cmp r0, #0
addne sp, sp, #0x28
movne r0, #0
@@ -1260,7 +1260,7 @@ _021D9ED0:
ldr r1, _021D9F74 ; =0x0220C084
mov r0, r6
add r2, r5, #0x15
- bl FUN_021DAC98
+ bl MOD04_021DAC98
cmp r0, #0
moveq r0, #1
movne r0, #0
@@ -1286,8 +1286,8 @@ _021D9F6C: .word 0x0220C060
_021D9F70: .word 0x0220C078
_021D9F74: .word 0x0220C084
- arm_func_start FUN_021D9F78
-FUN_021D9F78: ; 0x021D9F78
+ arm_func_start MOD04_021D9F78
+MOD04_021D9F78: ; 0x021D9F78
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x8c
mov r6, r1
@@ -1435,7 +1435,7 @@ _021DA180:
cmp r6, #6
add r7, r7, #2
blt _021DA180
- bl FUN_021EBAB8
+ bl MOD04_021EBAB8
mov r3, r0
ldr r2, _021DA234 ; =0x0220C0D4
add r0, r4, #0x6f
@@ -1456,7 +1456,7 @@ _021DA180:
_021DA1E8:
mov r0, r5
add r1, r4, #0x72
- bl FUN_021EE5F4
+ bl MOD04_021EE5F4
mov r0, r5
add r1, r4, #0x4e
mov r2, #0x20
@@ -1476,8 +1476,8 @@ _021DA22C: .word 0x0220C0AC
_021DA230: .word 0x0220C0B8
_021DA234: .word 0x0220C0D4
- arm_func_start FUN_021DA238
-FUN_021DA238: ; 0x021DA238
+ arm_func_start MOD04_021DA238
+MOD04_021DA238: ; 0x021DA238
stmdb sp!, {r4, lr}
sub sp, sp, #0x18
mov r4, r0
@@ -1485,12 +1485,12 @@ FUN_021DA238: ; 0x021DA238
bl FUN_02095EC8
add r1, sp, #0
mov r0, r4
- bl FUN_021D9F78
+ bl MOD04_021D9F78
add sp, sp, #0x18
ldmia sp!, {r4, pc}
- arm_func_start FUN_021DA260
-FUN_021DA260: ; 0x021DA260
+ arm_func_start MOD04_021DA260
+MOD04_021DA260: ; 0x021DA260
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
add r0, r0, #0x1000
@@ -1533,12 +1533,12 @@ _021DA2D8:
_021DA2EC: .word 0x0220C110
_021DA2F0: .word 0x0220C12C
- arm_func_start FUN_021DA2F4
-FUN_021DA2F4: ; 0x021DA2F4
+ arm_func_start MOD04_021DA2F4
+MOD04_021DA2F4: ; 0x021DA2F4
stmdb sp!, {r4, r5, r6, lr}
mov r6, r2
mov r5, r3
- bl FUN_021DA388
+ bl MOD04_021DA388
movs r4, r0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
@@ -1552,12 +1552,12 @@ FUN_021DA2F4: ; 0x021DA2F4
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021DA334
-FUN_021DA334: ; 0x021DA334
+ arm_func_start MOD04_021DA334
+MOD04_021DA334: ; 0x021DA334
stmdb sp!, {r4, r5, r6, lr}
mov r6, r2
mov r5, r3
- bl FUN_021DA388
+ bl MOD04_021DA388
movs r4, r0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
@@ -1566,7 +1566,7 @@ FUN_021DA334: ; 0x021DA334
mov r0, r4
mov r2, r6
mov r3, r5
- bl FUN_021DD36C
+ bl MOD04_021DD36C
mvn r1, #0
cmp r0, r1
ldmeqia sp!, {r4, r5, r6, pc}
@@ -1576,8 +1576,8 @@ FUN_021DA334: ; 0x021DA334
strb r1, [r6, r0]
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021DA388
-FUN_021DA388: ; 0x021DA388
+ arm_func_start MOD04_021DA388
+MOD04_021DA388: ; 0x021DA388
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
@@ -1602,8 +1602,8 @@ _021DA3D4:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021DA3DC
-FUN_021DA3DC: ; 0x021DA3DC
+ arm_func_start MOD04_021DA3DC
+MOD04_021DA3DC: ; 0x021DA3DC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x14
ldr r2, _021DA668 ; =0x00001A34
@@ -1648,7 +1648,7 @@ FUN_021DA3DC: ; 0x021DA3DC
mov r0, fp
mov r3, r8
strb r5, [r8, #3]
- bl FUN_021DA68C
+ bl MOD04_021DA68C
cmp r0, #1
addne sp, sp, #0x14
strneb r7, [r8, #3]
@@ -1699,7 +1699,7 @@ _021DA4FC:
strb r6, [r5]
add r1, sp, #8
mov r3, r8
- bl FUN_021DA68C
+ bl MOD04_021DA68C
cmp r0, #1
strneb sl, [r7]
addne sp, sp, #0x14
@@ -1752,7 +1752,7 @@ _021DA5F4:
add r1, sp, #8
mov r3, sb
strneb r5, [r6]
- bl FUN_021DA68C
+ bl MOD04_021DA68C
cmp r0, #1
beq _021DA634
strb r7, [sl]
@@ -1787,8 +1787,8 @@ _021DA680: .word 0x0220C168
_021DA684: .word 0x0220C16C
_021DA688: .word 0x0220C170
- arm_func_start FUN_021DA68C
-FUN_021DA68C: ; 0x021DA68C
+ arm_func_start MOD04_021DA68C
+MOD04_021DA68C: ; 0x021DA68C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r1
ldr r4, [r8, #8]
@@ -1881,8 +1881,8 @@ _021DA7DC: .word 0x0220C194
_021DA7E0: .word 0x0220C1B4
_021DA7E4: .word 0x0220C1D0
- arm_func_start FUN_021DA7E8
-FUN_021DA7E8: ; 0x021DA7E8
+ arm_func_start MOD04_021DA7E8
+MOD04_021DA7E8: ; 0x021DA7E8
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r5, r0
@@ -1978,8 +1978,8 @@ _021DA944: .word 0x000001BB
_021DA948: .word 0x0220C200
_021DA94C: .word 0x0220C204
- arm_func_start FUN_021DA950
-FUN_021DA950: ; 0x021DA950
+ arm_func_start MOD04_021DA950
+MOD04_021DA950: ; 0x021DA950
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
add r0, r0, #0x1000
@@ -2030,8 +2030,8 @@ FUN_021DA950: ; 0x021DA950
_021DAA08: .word 0x0220C208
_021DAA0C: .word 0x0220C218
- arm_func_start FUN_021DAA10
-FUN_021DAA10: ; 0x021DAA10
+ arm_func_start MOD04_021DAA10
+MOD04_021DAA10: ; 0x021DAA10
stmdb sp!, {r4, lr}
mov r4, r1
ldr r1, [r4]
@@ -2051,8 +2051,8 @@ _021DAA38:
.align 2, 0
_021DAA4C: .word 0x0220C218
- arm_func_start FUN_021DAA50
-FUN_021DAA50: ; 0x021DAA50
+ arm_func_start MOD04_021DAA50
+MOD04_021DAA50: ; 0x021DAA50
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r5, r2
@@ -2083,14 +2083,14 @@ FUN_021DAA50: ; 0x021DAA50
.align 2, 0
_021DAABC: .word 0x0220C22C
- arm_func_start FUN_021DAAC0
-FUN_021DAAC0: ; 0x021DAAC0
+ arm_func_start MOD04_021DAAC0
+MOD04_021DAAC0: ; 0x021DAAC0
ands r1, r0, #0x8000
bicne r0, r0, #0x8000
bx lr
- arm_func_start FUN_021DAACC
-FUN_021DAACC: ; 0x021DAACC
+ arm_func_start MOD04_021DAACC
+MOD04_021DAACC: ; 0x021DAACC
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
ldr r2, _021DAB60 ; =0x000019F4
@@ -2109,7 +2109,7 @@ FUN_021DAACC: ; 0x021DAACC
mov r0, r7
mov r1, r4
add r2, r2, #1
- bl FUN_021DA950
+ bl MOD04_021DA950
cmp r0, #0
addeq sp, sp, #4
moveq r0, #1
@@ -2133,8 +2133,8 @@ _021DAB34:
_021DAB60: .word 0x000019F4
_021DAB64: .word 0x0220C240
- arm_func_start FUN_021DAB68
-FUN_021DAB68: ; 0x021DAB68
+ arm_func_start MOD04_021DAB68
+MOD04_021DAB68: ; 0x021DAB68
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
mov sl, r0
@@ -2156,7 +2156,7 @@ FUN_021DAB68: ; 0x021DAB68
mov r1, r7
mov r3, r2
str fp, [r5, #0x9f0]
- bl FUN_021DD4FC
+ bl MOD04_021DD4FC
mov r5, r0
mov r0, r6
bl strlen
@@ -2175,7 +2175,7 @@ FUN_021DAB68: ; 0x021DAB68
mov r0, sl
mov r1, r4
add r2, r2, #1
- bl FUN_021DA950
+ bl MOD04_021DA950
cmp r0, #0
addeq sp, sp, #4
moveq r0, #1
@@ -2196,7 +2196,7 @@ _021DAC28:
mov r0, r8
sub r3, r3, r2
sub r3, r3, #1
- bl FUN_021DD4FC
+ bl MOD04_021DD4FC
cmp r0, #0
addlt sp, sp, #4
movlt r0, #1
@@ -2214,8 +2214,8 @@ _021DAC8C: .word 0x000019F4
_021DAC90: .word 0x0220C244
_021DAC94: .word 0x0220C248
- arm_func_start FUN_021DAC98
-FUN_021DAC98: ; 0x021DAC98
+ arm_func_start MOD04_021DAC98
+MOD04_021DAC98: ; 0x021DAC98
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
mov r6, r2
@@ -2244,7 +2244,7 @@ FUN_021DAC98: ; 0x021DAC98
mov r0, r8
mov r1, r5
add r2, r2, #1
- bl FUN_021DA950
+ bl MOD04_021DA950
cmp r0, #0
addeq sp, sp, #4
moveq r0, #1
@@ -2279,8 +2279,8 @@ _021DAD7C: .word 0x000019F4
_021DAD80: .word 0x0220C250
_021DAD84: .word 0x0220C148
- arm_func_start FUN_021DAD88
-FUN_021DAD88: ; 0x021DAD88
+ arm_func_start MOD04_021DAD88
+MOD04_021DAD88: ; 0x021DAD88
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #8
mov r7, r0
@@ -2308,7 +2308,7 @@ FUN_021DAD88: ; 0x021DAD88
add r2, r1, #0x400
add r1, r7, r0
mov r0, r7
- bl FUN_021DAA50
+ bl MOD04_021DAA50
cmp r0, #1
addne sp, sp, #8
movne r0, #1
@@ -2332,8 +2332,8 @@ _021DAE40: .word 0x000019F4
_021DAE44: .word 0x0220C25C
_021DAE48: .word 0x0220C2B0
- arm_func_start FUN_021DAE4C
-FUN_021DAE4C: ; 0x021DAE4C
+ arm_func_start MOD04_021DAE4C
+MOD04_021DAE4C: ; 0x021DAE4C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r5, r0
@@ -2344,15 +2344,15 @@ FUN_021DAE4C: ; 0x021DAE4C
ldr r1, _021DAF00 ; =0x00001A34
mov r2, #0x20
add r1, r5, r1
- bl FUN_021DA260
+ bl MOD04_021DA260
ldr r1, _021DAF04 ; =0x00001A04
mov r0, r5
add r1, r5, r1
- bl FUN_021DAA10
+ bl MOD04_021DAA10
ldr r1, _021DAF08 ; =0x000019F4
mov r0, r5
add r1, r5, r1
- bl FUN_021DAA10
+ bl MOD04_021DAA10
add r0, r5, #0x1000
ldr r1, [r0, #0x9c8]
cmp r1, #0
@@ -2389,8 +2389,8 @@ _021DAF0C: .word 0x0220C2D0
_021DAF10: .word 0x0220C2E8
_021DAF14: .word 0x00001C10
- arm_func_start FUN_021DAF18
-FUN_021DAF18: ; 0x021DAF18
+ arm_func_start MOD04_021DAF18
+MOD04_021DAF18: ; 0x021DAF18
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov sl, r0
@@ -2406,9 +2406,9 @@ FUN_021DAF18: ; 0x021DAF18
add r7, sl, r2
mov r5, #0
ldrle fp, _021DB230 ; =0x0000EA60
- bl FUN_021DB35C
+ bl MOD04_021DB35C
mov r0, sl
- bl FUN_021DB348
+ bl MOD04_021DB348
movs r4, r0
addeq r0, sl, #0x1000
moveq r1, #2
@@ -2424,7 +2424,7 @@ FUN_021DAF18: ; 0x021DAF18
mov r1, #0
mov r2, #0x830
bl MI_CpuFill8
- ldr r1, _021DB234 ; =FUN_021DAAC0
+ ldr r1, _021DB234 ; =MOD04_021DAAC0
add r0, sl, #0x1000
str r1, [r6, #0x810]
ldr r1, [r0, #0x124]
@@ -2467,7 +2467,7 @@ _021DB004:
ble _021DB20C
bl FUN_0209BF4C
mov r0, sl
- bl FUN_021DB3B8
+ bl MOD04_021DB3B8
cmp r0, #0
addeq r0, sl, #0x1000
moveq r1, #7
@@ -2535,7 +2535,7 @@ _021DB088:
b _021DB150
_021DB144:
mov r0, sl
- bl FUN_021DB248
+ bl MOD04_021DB248
mov r5, r0
_021DB150:
ldr r0, [sp, #8]
@@ -2572,7 +2572,7 @@ _021DB188:
strhi r1, [r0, #0x20]
bhi _021DB20C
mov r0, sl
- bl FUN_021DB3B8
+ bl MOD04_021DB3B8
cmp r0, #0
bne _021DB088
add r0, sl, #0x1000
@@ -2601,14 +2601,14 @@ _021DB224: .word 0x00001134
_021DB228: .word 0x00001198
_021DB22C: .word 0x00001A04
_021DB230: .word 0x0000EA60
-_021DB234: .word FUN_021DAAC0
+_021DB234: .word MOD04_021DAAC0
_021DB238: .word 0x0220C0E4
_021DB23C: .word 0x021C8F04
_021DB240: .word 0x00001A14
_021DB244: .word 0x000082EA
- arm_func_start FUN_021DB248
-FUN_021DB248: ; 0x021DB248
+ arm_func_start MOD04_021DB248
+MOD04_021DB248: ; 0x021DB248
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r5, r0
@@ -2675,8 +2675,8 @@ _021DB33C: .word 0x00001A14
_021DB340: .word 0x0220C300
_021DB344: .word 0x0220C164
- arm_func_start FUN_021DB348
-FUN_021DB348: ; 0x021DB348
+ arm_func_start MOD04_021DB348
+MOD04_021DB348: ; 0x021DB348
ldr ip, _021DB358 ; =0x0209AB80
add r0, r0, #0x1000
ldr r0, [r0, #0x124]
@@ -2684,8 +2684,8 @@ FUN_021DB348: ; 0x021DB348
.align 2, 0
_021DB358: .word 0x0209AB80
- arm_func_start FUN_021DB35C
-FUN_021DB35C: ; 0x021DB35C
+ arm_func_start MOD04_021DB35C
+MOD04_021DB35C: ; 0x021DB35C
stmdb sp!, {r4, lr}
ldr r1, _021DB3AC ; =0x00001134
mov r4, r0
@@ -2711,8 +2711,8 @@ _021DB3AC: .word 0x00001134
_021DB3B0: .word 0x00000B68
_021DB3B4: .word 0x000005EA
- arm_func_start FUN_021DB3B8
-FUN_021DB3B8: ; 0x021DB3B8
+ arm_func_start MOD04_021DB3B8
+MOD04_021DB3B8: ; 0x021DB3B8
stmdb sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x1000
@@ -2751,8 +2751,8 @@ _021DB41C:
_021DB438: .word 0x000019D0
_021DB43C: .word 0x00001BF4
- arm_func_start FUN_021DB440
-FUN_021DB440: ; 0x021DB440
+ arm_func_start MOD04_021DB440
+MOD04_021DB440: ; 0x021DB440
stmdb sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x1000
@@ -2780,8 +2780,8 @@ FUN_021DB440: ; 0x021DB440
_021DB49C: .word 0x00001BF4
_021DB4A0: .word 0x00001B34
- arm_func_start FUN_021DB4A4
-FUN_021DB4A4: ; 0x021DB4A4
+ arm_func_start MOD04_021DB4A4
+MOD04_021DB4A4: ; 0x021DB4A4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
ldr r3, _021DB55C ; =0x00001BF4
@@ -2818,7 +2818,7 @@ _021DB524:
ldr r0, _021DB568 ; =0x00001B34
mov r1, #0x1000
str r1, [sp]
- ldr r1, _021DB56C ; =FUN_021DAF18
+ ldr r1, _021DB56C ; =MOD04_021DAF18
mov r2, r5
add r0, r5, r0
add r3, r5, #0x1000
@@ -2834,16 +2834,16 @@ _021DB55C: .word 0x00001BF4
_021DB560: .word 0x00001A14
_021DB564: .word 0x02210480
_021DB568: .word 0x00001B34
-_021DB56C: .word FUN_021DAF18
+_021DB56C: .word MOD04_021DAF18
- arm_func_start FUN_021DB570
-FUN_021DB570: ; 0x021DB570
+ arm_func_start MOD04_021DB570
+MOD04_021DB570: ; 0x021DB570
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr r1, _021DB5F4 ; =0x0220C314
ldr r2, _021DB5F8 ; =0x0220C320
mov r4, r0
- bl FUN_021DAC98
+ bl MOD04_021DAC98
cmp r0, #0
addne sp, sp, #8
movne r0, #1
@@ -2863,7 +2863,7 @@ FUN_021DB570: ; 0x021DB570
ldr r1, _021DB604 ; =0x0220C32C
add r2, sp, #0
mov r0, r4
- bl FUN_021DAC98
+ bl MOD04_021DAC98
cmp r0, #0
addne sp, sp, #8
movne r0, #1
@@ -2879,8 +2879,8 @@ _021DB5FC: .word 0x0220C148
_021DB600: .word 0x0220C328
_021DB604: .word 0x0220C32C
- arm_func_start FUN_021DB608
-FUN_021DB608: ; 0x021DB608
+ arm_func_start MOD04_021DB608
+MOD04_021DB608: ; 0x021DB608
stmdb sp!, {r4, r5, r6, lr}
mov r5, r1
ldr r2, _021DB714 ; =0x00001C10
@@ -2923,7 +2923,7 @@ FUN_021DB608: ; 0x021DB608
ldr r2, [r2, #0xc]
mov r0, r6
add r1, r6, r1
- bl FUN_021DAA50
+ bl MOD04_021DAA50
cmp r0, #0
addeq r1, r6, #0x1000
moveq r0, #1
@@ -2931,14 +2931,14 @@ FUN_021DB608: ; 0x021DB608
ldmeqia sp!, {r4, r5, r6, pc}
ldr r1, [r5]
mov r0, r6
- bl FUN_021DA7E8
+ bl MOD04_021DA7E8
cmp r0, #0
addeq r1, r6, #0x1000
moveq r0, #1
streq r0, [r1, #0x20]
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r6
- bl FUN_021DAD88
+ bl MOD04_021DAD88
add r1, r6, #0x1000
str r0, [r1, #0x20]
ldr r0, [r1, #0x20]
@@ -2957,8 +2957,8 @@ _021DB724: .word 0x0220C354
_021DB728: .word 0x000005EA
_021DB72C: .word 0x00001A04
- arm_func_start FUN_021DB730
-FUN_021DB730: ; 0x021DB730
+ arm_func_start MOD04_021DB730
+MOD04_021DB730: ; 0x021DB730
stmdb sp!, {r4, lr}
ldr r2, _021DB770 ; =0x02210484
ldr r1, _021DB774 ; =0x000011DC
@@ -2979,8 +2979,8 @@ FUN_021DB730: ; 0x021DB730
_021DB770: .word 0x02210484
_021DB774: .word 0x000011DC
- arm_func_start FUN_021DB778
-FUN_021DB778: ; 0x021DB778
+ arm_func_start MOD04_021DB778
+MOD04_021DB778: ; 0x021DB778
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x2d4
ldr r5, _021DC670 ; =0x02210484
@@ -3046,25 +3046,25 @@ _021DB830:
str r0, [r1, #4]
ldr r0, [r4]
ldr r1, _021DC678 ; =0x02210494
- bl FUN_021DB608
+ bl MOD04_021DB608
cmp r0, #0
beq _021DB89C
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #1
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DB89C:
ldr r0, [r4]
- bl FUN_021DB570
+ bl MOD04_021DB570
cmp r0, #0
beq _021DB8C4
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #1
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DB8C4:
ldr r0, _021DC684 ; =0x021D3498
@@ -3072,7 +3072,7 @@ _021DB8C4:
bl OS_GetThreadPriority
sub r1, r0, #1
ldr r0, [r4]
- bl FUN_021DB4A4
+ bl MOD04_021DB4A4
ldr r1, [r4]
add r0, r1, #0x1000
ldr r0, [r0, #0xba0]
@@ -3099,25 +3099,25 @@ _021DB91C:
_021DB930:
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #3
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DB948:
ldr r1, [sp, #0x1c]
- bl FUN_021DA3DC
+ bl MOD04_021DA3DC
cmp r0, #1
beq _021DB970
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #2
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DB970:
ldr r0, [r4]
ldr r1, _021DC68C ; =0x0220C418
- bl FUN_021DA388
+ bl MOD04_021DA388
bl atol
mov sl, r0
ldr r0, _021DC690 ; =0x021D74A8
@@ -3125,7 +3125,7 @@ _021DB970:
cmp r0, #0x22
bne _021DB9A0
mov r0, #2
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DB9A0:
cmp sl, #0xc8
@@ -3144,7 +3144,7 @@ _021DB9A0:
mvn r2, #5
str r2, [r0, #4]
ldr r0, [r1]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
ldr r2, _021DC678 ; =0x02210494
ldr r0, _021DC69C ; =0x0220BEB4
ldr r3, _021DC67C ; =0x00004E20
@@ -3166,33 +3166,33 @@ _021DB9A0:
ldr r0, _021DC674 ; =0x02210490
ldr r1, _021DC678 ; =0x02210494
ldr r0, [r0]
- bl FUN_021DB608
+ bl MOD04_021DB608
cmp r0, #0
beq _021DBA5C
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #1
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBA5C:
add r0, sp, #0x240
- bl FUN_021DA238
+ bl MOD04_021DA238
cmp r0, #0
beq _021DBA88
ldr r0, _021DC674 ; =0x02210490
add r1, sp, #0x240
ldr r0, [r0]
mov r2, #1
- bl FUN_021D9C2C
+ bl MOD04_021D9C2C
cmp r0, #0
bne _021DBAA0
_021DBA88:
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #8
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBAA0:
ldr r0, _021DC674 ; =0x02210490
@@ -3200,7 +3200,7 @@ _021DBAA0:
ldr r0, [r0]
ldr r2, _021DC6A8 ; =0x0220C44C
mov r3, #7
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
bne _021DBAF8
ldr r0, _021DC670 ; =0x02210484
@@ -3214,15 +3214,15 @@ _021DBAA0:
ldr r0, [r1]
ldr r1, _021DC6AC ; =0x0220C454
mov r2, r4
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
beq _021DBB10
_021DBAF8:
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #8
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBB10:
ldr r1, _021DC670 ; =0x02210484
@@ -3239,14 +3239,14 @@ _021DBB10:
add r0, r0, #0x1000
str r2, [r0, #0x118]
ldr r0, [r1]
- bl FUN_021DB570
+ bl MOD04_021DB570
cmp r0, #0
beq _021DBB6C
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #1
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBB6C:
ldr r0, _021DC684 ; =0x021D3498
@@ -3255,7 +3255,7 @@ _021DBB6C:
ldr r2, _021DC674 ; =0x02210490
sub r1, r0, #1
ldr r0, [r2]
- bl FUN_021DB4A4
+ bl MOD04_021DB4A4
ldr r0, _021DC674 ; =0x02210490
ldr r1, [r0]
add r0, r1, #0x1000
@@ -3284,14 +3284,14 @@ _021DBBD0:
_021DBBE4:
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #3
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBBFC:
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #7
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBC0C:
ldr r0, [r4]
@@ -3299,9 +3299,9 @@ _021DBC0C:
ldr fp, [r1, #0xa04]
cmp fp, #0
bne _021DBC30
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #2
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBC30:
mov r0, fp
@@ -3320,9 +3320,9 @@ _021DBC30:
bne _021DBC80
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #4
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBC80:
mov r0, fp
@@ -3335,13 +3335,13 @@ _021DBC80:
_021DBC9C:
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #0xa
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBCB4:
ldr r0, [r4]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
add r0, sp, #0x68
bl FUN_02095EC8
ldr r2, [sp, #0x68]
@@ -3367,18 +3367,18 @@ _021DBCB4:
str fp, [r2, #0x40]
ldr r3, [r3, #0x10c]
str r3, [r2, #0x44]
- bl FUN_021D9ACC
+ bl MOD04_021D9ACC
cmp r0, #0
beq _021DBD38
mov r0, #5
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBD38:
- bl FUN_021D98DC
- bl FUN_021D988C
+ bl MOD04_021D98DC
+ bl MOD04_021D988C
cmp r0, #0x15
beq _021DBDE8
- bl FUN_021D988C
+ bl MOD04_021D988C
cmp r0, #9
bne _021DBD6C
ldr r0, _021DC670 ; =0x02210484
@@ -3389,7 +3389,7 @@ _021DBD38:
b _021DBDD8
_021DBD6C:
add r0, sp, #0x7c
- bl FUN_021D97F8
+ bl MOD04_021D97F8
ldr r0, _021DC6BC ; =0x02210488
ldr r0, [r0]
cmp r0, #1
@@ -3398,7 +3398,7 @@ _021DBD6C:
ldr r0, _021DC6C0 ; =0xFFFFA4FA
cmp r1, r0
beq _021DBDA0
- bl FUN_021D988C
+ bl MOD04_021D988C
cmp r0, #0xb
bne _021DBDC4
_021DBDA0:
@@ -3407,9 +3407,9 @@ _021DBDA0:
ldr r0, [r0]
add r0, r0, #0x1000
str r1, [r0, #4]
- bl FUN_021D991C
+ bl MOD04_021D991C
mov r0, #0xb
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBDC4:
ldr r0, _021DC670 ; =0x02210484
@@ -3418,12 +3418,12 @@ _021DBDC4:
add r0, r0, #0x1000
str r1, [r0, #4]
_021DBDD8:
- bl FUN_021D991C
+ bl MOD04_021D991C
mov r0, #6
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBDE8:
- bl FUN_021D991C
+ bl MOD04_021D991C
_021DBDEC:
cmp sl, #0xc8
bne _021DBE14
@@ -3433,7 +3433,7 @@ _021DBDEC:
mov r0, #0xb
add r1, r1, #0x1000
str r2, [r1, #4]
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBE14:
ldr r0, [r5]
@@ -3460,39 +3460,39 @@ _021DBE14:
ldr r1, _021DC678 ; =0x02210494
strne r6, [r0, #0x14]
ldr r0, [r4]
- bl FUN_021DB608
+ bl MOD04_021DB608
cmp r0, #0
beq _021DBE98
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #1
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBE98:
add r0, sp, #0x240
- bl FUN_021DA238
+ bl MOD04_021DA238
cmp r0, #0
beq _021DBEC0
ldr r0, [r4]
add r1, sp, #0x240
mov r2, r6
- bl FUN_021D9C2C
+ bl MOD04_021D9C2C
cmp r0, #0
bne _021DBED8
_021DBEC0:
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #8
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBED8:
ldr r0, [r4]
ldr r1, _021DC6A4 ; =0x0220C444
ldr r2, _021DC6C8 ; =0x0220C484
ldr r3, [sp, #0x30]
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
bne _021DBF24
ldr r0, [r5]
@@ -3504,15 +3504,15 @@ _021DBED8:
ldr r0, [r4]
ldr r1, _021DC6CC ; =0x0220C48C
mov r2, sl
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
beq _021DBF3C
_021DBF24:
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #8
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBF3C:
ldr r1, [r5]
@@ -3526,14 +3526,14 @@ _021DBF3C:
ldr r0, [sp, #0x38]
str r0, [r1, #0x114]
ldr r0, [r4]
- bl FUN_021DB570
+ bl MOD04_021DB570
cmp r0, #0
beq _021DBF8C
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #1
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DBF8C:
ldr r0, _021DC684 ; =0x021D3498
@@ -3541,7 +3541,7 @@ _021DBF8C:
bl OS_GetThreadPriority
sub r1, r0, #1
ldr r0, [r4]
- bl FUN_021DB4A4
+ bl MOD04_021DB4A4
ldr r1, [r4]
add r0, r1, #0x1000
ldr r0, [r0, #0xba0]
@@ -3562,7 +3562,7 @@ _021DBFC4:
beq _021DC058
b _021DC040
_021DBFEC:
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
ldr r0, _021DC6BC ; =0x02210488
ldr r0, [r0]
cmp r0, #1
@@ -3573,11 +3573,11 @@ _021DBFEC:
mov r0, #0xb
add r1, r1, #0x1000
str r2, [r1, #4]
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC020:
mov r0, #3
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC02C:
ldr r0, _021DC670 ; =0x02210484
@@ -3588,25 +3588,25 @@ _021DC02C:
_021DC040:
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #3
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC058:
ldr r1, [sp, #0x3c]
- bl FUN_021DA3DC
+ bl MOD04_021DA3DC
cmp r0, #1
beq _021DC080
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #2
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC080:
ldr r0, [r4]
ldr r1, _021DC68C ; =0x0220C418
- bl FUN_021DA388
+ bl MOD04_021DA388
bl atol
mov sl, r0
ldr r0, _021DC690 ; =0x021D74A8
@@ -3615,16 +3615,16 @@ _021DC080:
bne _021DC0BC
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #2
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC0BC:
cmp sl, #0xc8
beq _021DC118
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
ldr r0, _021DC6BC ; =0x02210488
ldr r0, [r0]
cmp r0, #1
@@ -3638,25 +3638,25 @@ _021DC0BC:
mov r0, #0xb
add r1, r1, #0x1000
str r2, [r1, #4]
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC10C:
mov r0, #2
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC118:
ldr r0, [r4]
ldr r1, _021DC6D4 ; =0x0220C494
ldr r3, [sp, #0x40]
add r2, sp, #0x64
- bl FUN_021DA334
+ bl MOD04_021DA334
cmp r0, #0
bgt _021DC14C
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #9
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC14C:
add r0, sp, #0x64
@@ -3667,9 +3667,9 @@ _021DC14C:
bne _021DC17C
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #9
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC17C:
ldr r1, _021DC6BC ; =0x02210488
@@ -3684,53 +3684,53 @@ _021DC17C:
mov r0, #0xb
add r1, r1, #0x1000
str r2, [r1, #4]
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC1B4:
cmp r0, #0x64
blt _021DC1D4
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #6
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC1D4:
ldr r2, [sp, #0x44]
ldr r0, [r4]
ldr r1, _021DC6D8 ; =0x0220C4A0
mov r3, r2
- bl FUN_021DA334
+ bl MOD04_021DA334
mov fp, r0
cmp fp, #0
bgt _021DC20C
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #9
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC20C:
ldr r2, [sp, #0x48]
ldr r0, [r4]
ldr r1, _021DC6DC ; =0x0220C4A4
mov r3, r2
- bl FUN_021DA334
+ bl MOD04_021DA334
str r0, [sp, #4]
cmp r0, #0
bgt _021DC244
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #9
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC244:
ldr r2, [sp, #0x4c]
ldr r0, [r4]
ldr r1, _021DC6E0 ; =0x0220C4AC
mov r3, r2
- bl FUN_021DA334
+ bl MOD04_021DA334
mov sl, r0
ldr r0, _021DC6E4 ; =0x0220C3CC
add r1, fp, #1
@@ -3740,9 +3740,9 @@ _021DC244:
bne _021DC28C
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #4
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC28C:
ldr r1, [sp, #4]
@@ -3753,9 +3753,9 @@ _021DC28C:
bne _021DC2BC
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #4
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC2BC:
cmp sl, #0
@@ -3768,23 +3768,23 @@ _021DC2BC:
bne _021DC2F4
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #4
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC2F4:
ldr r0, [r4]
ldr r1, _021DC6D8 ; =0x0220C4A0
ldr r2, [sp]
add r3, fp, #1
- bl FUN_021DA334
+ bl MOD04_021DA334
cmp r0, #0
bge _021DC328
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #9
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC328:
ldr r1, [sp, #4]
@@ -3795,14 +3795,14 @@ _021DC328:
ldr r0, [r4]
ldr r1, _021DC6DC ; =0x0220C4A4
mov r2, r7
- bl FUN_021DA334
+ bl MOD04_021DA334
cmp r0, #0
bge _021DC36C
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #9
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC36C:
ldr r1, [sp, #0x54]
@@ -3814,14 +3814,14 @@ _021DC36C:
ldr r1, _021DC6E0 ; =0x0220C4AC
ldr r2, [sp, #8]
add r3, sl, #1
- bl FUN_021DA334
+ bl MOD04_021DA334
cmp r0, #0
bge _021DC3B4
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #9
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC3B4:
ldr r2, [sp, #0x58]
@@ -3835,9 +3835,9 @@ _021DC3B4:
bne _021DC3F0
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #9
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC3F0:
mov r1, #0x3e8
@@ -3847,7 +3847,7 @@ _021DC3F0:
movgt fp, r0
_021DC404:
ldr r0, [r4]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
ldr r0, [r5]
ldr r1, _021DC678 ; =0x02210494
add r2, r0, #0x1000
@@ -3865,37 +3865,37 @@ _021DC404:
ldr r2, _021DC6F4 ; =0x0001D4C0
str r2, [r0, #0x18]
ldr r0, [r4]
- bl FUN_021DB608
+ bl MOD04_021DB608
cmp r0, #0
beq _021DC474
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #1
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC474:
ldr r0, [r4]
mov r1, r7
- bl FUN_021DAACC
+ bl MOD04_021DAACC
cmp r0, #0
beq _021DC4A0
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #8
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC4A0:
ldr r0, [r4]
- bl FUN_021DB570
+ bl MOD04_021DB570
cmp r0, #0
beq _021DC4C8
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #1
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC4C8:
ldr r0, _021DC684 ; =0x021D3498
@@ -3903,7 +3903,7 @@ _021DC4C8:
bl OS_GetThreadPriority
sub r1, r0, #1
ldr r0, [r4]
- bl FUN_021DB4A4
+ bl MOD04_021DB4A4
ldr r1, [r4]
add r0, r1, #0x1000
ldr r0, [r0, #0xba0]
@@ -3930,20 +3930,20 @@ _021DC520:
_021DC534:
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #3
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC54C:
mov r1, r6
- bl FUN_021DA3DC
+ bl MOD04_021DA3DC
cmp r0, #1
beq _021DC574
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #2
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC574:
ldr r0, [r4]
@@ -3951,9 +3951,9 @@ _021DC574:
ldr sl, [r1, #0xa04]
cmp sl, #0
bne _021DC598
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #2
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC598:
mov r0, sl
@@ -3972,9 +3972,9 @@ _021DC598:
bne _021DC5E8
ldr r0, _021DC674 ; =0x02210490
ldr r0, [r0]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, #4
- bl FUN_021DB730
+ bl MOD04_021DB730
b _021DC614
_021DC5E8:
mov r0, sl
@@ -3984,7 +3984,7 @@ _021DC5E8:
mov r1, sl
bl strncpy
ldr r0, [r4]
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
mov r0, fp
bl OS_Sleep
b _021DB830
@@ -4054,8 +4054,8 @@ _021DC6FC: .word 0x0220C4B4
_021DC700: .word 0x0220C4C0
_021DC704: .word 0x0220C4CC
- arm_func_start FUN_021DC708
-FUN_021DC708: ; 0x021DC708
+ arm_func_start MOD04_021DC708
+MOD04_021DC708: ; 0x021DC708
stmdb sp!, {lr}
sub sp, sp, #0xc
ldr r0, _021DC788 ; =0x02210484
@@ -4075,7 +4075,7 @@ _021DC740:
ldr r0, _021DC78C ; =0x0000111C
ldr r2, [r1]
mov r3, #0x1000
- ldr r1, _021DC790 ; =FUN_021DB778
+ ldr r1, _021DC790 ; =MOD04_021DB778
str r3, [sp]
mov ip, #0x10
add r0, r2, r0
@@ -4092,10 +4092,10 @@ _021DC740:
.align 2, 0
_021DC788: .word 0x02210484
_021DC78C: .word 0x0000111C
-_021DC790: .word FUN_021DB778
+_021DC790: .word MOD04_021DB778
- arm_func_start FUN_021DC794
-FUN_021DC794: ; 0x021DC794
+ arm_func_start MOD04_021DC794
+MOD04_021DC794: ; 0x021DC794
ldr r0, _021DC7A8 ; =0x02210484
ldr r0, [r0]
add r0, r0, #0x1000
@@ -4104,8 +4104,8 @@ FUN_021DC794: ; 0x021DC794
.align 2, 0
_021DC7A8: .word 0x02210484
- arm_func_start FUN_021DC7AC
-FUN_021DC7AC: ; 0x021DC7AC
+ arm_func_start MOD04_021DC7AC
+MOD04_021DC7AC: ; 0x021DC7AC
stmdb sp!, {r4, lr}
ldr r1, _021DC7E8 ; =0x02210484
ldr r0, _021DC7EC ; =0x000011DC
@@ -4125,8 +4125,8 @@ FUN_021DC7AC: ; 0x021DC7AC
_021DC7E8: .word 0x02210484
_021DC7EC: .word 0x000011DC
- arm_func_start FUN_021DC7F0
-FUN_021DC7F0: ; 0x021DC7F0
+ arm_func_start MOD04_021DC7F0
+MOD04_021DC7F0: ; 0x021DC7F0
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021DC864 ; =0x02210484
@@ -4138,9 +4138,9 @@ FUN_021DC7F0: ; 0x021DC7F0
ldr r0, [r0]
cmp r0, #0
beq _021DC820
- bl FUN_021DB440
+ bl MOD04_021DB440
_021DC820:
- bl FUN_021D9974
+ bl MOD04_021D9974
ldr r0, _021DC864 ; =0x02210484
ldr r1, [r0]
add r0, r1, #0x1000
@@ -4163,8 +4163,8 @@ _021DC864: .word 0x02210484
_021DC868: .word 0x02210490
_021DC86C: .word 0x0000111C
- arm_func_start FUN_021DC870
-FUN_021DC870: ; 0x021DC870
+ arm_func_start MOD04_021DC870
+MOD04_021DC870: ; 0x021DC870
stmdb sp!, {r4, lr}
ldr r1, _021DC958 ; =0x02210484
ldr r0, _021DC95C ; =0x02210490
@@ -4174,7 +4174,7 @@ FUN_021DC870: ; 0x021DC870
cmp r0, #0
ldr r4, [r1, #0x10c]
beq _021DC8B8
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
ldr r1, _021DC95C ; =0x02210490
ldr r0, _021DC960 ; =0x0220C4D8
ldr r1, [r1]
@@ -4184,7 +4184,7 @@ FUN_021DC870: ; 0x021DC870
mov r1, #0
str r1, [r0]
_021DC8B8:
- bl FUN_021D991C
+ bl MOD04_021D991C
ldr r0, _021DC958 ; =0x02210484
ldr r0, [r0]
cmp r0, #0
@@ -4234,8 +4234,8 @@ _021DC964: .word 0x0220C3B0
_021DC968: .word 0x0220C464
_021DC96C: .word 0x0220C4E8
- arm_func_start FUN_021DC970
-FUN_021DC970: ; 0x021DC970
+ arm_func_start MOD04_021DC970
+MOD04_021DC970: ; 0x021DC970
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r1, _021DCA5C ; =0x02210484
@@ -4291,7 +4291,7 @@ FUN_021DC970: ; 0x021DC970
add r0, r2, r0
str r3, [r1]
bl OS_InitMutex
- bl FUN_021DC708
+ bl MOD04_021DC708
mov r0, #0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
@@ -4307,8 +4307,8 @@ _021DCA78: .word 0x00001C10
_021DCA7C: .word 0x000011DC
_021DCA80: .word 0x0221048C
- arm_func_start FUN_021DCA84
-FUN_021DCA84: ; 0x021DCA84
+ arm_func_start MOD04_021DCA84
+MOD04_021DCA84: ; 0x021DCA84
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x40
mov r6, r0
@@ -4459,8 +4459,8 @@ _021DCCBC: .word 0x0220C550
_021DCCC0: .word 0x022104FC
_021DCCC4: .word 0x022104F8
- arm_func_start FUN_021DCCC8
-FUN_021DCCC8: ; 0x021DCCC8
+ arm_func_start MOD04_021DCCC8
+MOD04_021DCCC8: ; 0x021DCCC8
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr r0, _021DCED4 ; =0x02210504
@@ -4468,31 +4468,31 @@ FUN_021DCCC8: ; 0x021DCCC8
ldr r0, [r0]
add r4, r0, #8
mov r0, r4
- bl FUN_021DA3DC
+ bl MOD04_021DA3DC
cmp r0, #0
bne _021DCD08
ldr r1, _021DCED8 ; =0xFFFF9DF3
mov r0, #0x10
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #8
mov r0, #0
ldmia sp!, {r4, pc}
_021DCD08:
ldr r1, _021DCEDC ; =0x0220C5A0
mov r0, r4
- bl FUN_021DA388
+ bl MOD04_021DA388
cmp r0, #0
beq _021DCD20
- bl FUN_021DCA84
+ bl MOD04_021DCA84
_021DCD20:
ldr r1, _021DCEE0 ; =0x0220C5A8
mov r0, r4
- bl FUN_021DA388
+ bl MOD04_021DA388
cmp r0, #0
bne _021DCD4C
ldr r1, _021DCED8 ; =0xFFFF9DF3
mov r0, #0x10
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #8
mov r0, #0
ldmia sp!, {r4, pc}
@@ -4505,7 +4505,7 @@ _021DCD4C:
bne _021DCD7C
ldr r1, _021DCED8 ; =0xFFFF9DF3
mov r0, #0x10
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #8
mov r0, #0
ldmia sp!, {r4, pc}
@@ -4515,7 +4515,7 @@ _021DCD7C:
ldr r1, _021DCEE8 ; =0xFFFF9E58
mov r0, #0x10
sub r1, r1, r2
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #8
mov r0, #0
ldmia sp!, {r4, pc}
@@ -4524,12 +4524,12 @@ _021DCDA0:
add r2, sp, #0
mov r0, r4
mov r3, #4
- bl FUN_021DA334
+ bl MOD04_021DA334
cmp r0, #0
bgt _021DCDD4
ldr r1, _021DCED8 ; =0xFFFF9DF3
mov r0, #0x10
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #8
mov r0, #0
ldmia sp!, {r4, pc}
@@ -4543,7 +4543,7 @@ _021DCDD4:
bne _021DCE08
ldr r1, _021DCED8 ; =0xFFFF9DF3
mov r0, #0x10
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #8
mov r0, #0
ldmia sp!, {r4, pc}
@@ -4553,7 +4553,7 @@ _021DCE08:
ldr r1, _021DCEF0 ; =0xFFFFA240
mov r0, #0x10
sub r1, r1, r2
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #8
mov r0, #0
ldmia sp!, {r4, pc}
@@ -4566,7 +4566,7 @@ _021DCE2C:
ldr r2, [r2, #0xc18]
mov r3, #0x40
add r2, r2, #4
- bl FUN_021DA334
+ bl MOD04_021DA334
ldr r0, _021DCED4 ; =0x02210504
ldr r1, _021DCEF8 ; =0x0220C5C8
ldr r2, [r0]
@@ -4575,12 +4575,12 @@ _021DCE2C:
ldr r2, [r2, #0xc18]
mov r3, #0x12c
add r2, r2, #0x45
- bl FUN_021DA334
+ bl MOD04_021DA334
ldr r1, _021DCEFC ; =0x0220C5D8
add r2, sp, #0
mov r0, r4
mov r3, #1
- bl FUN_021DA334
+ bl MOD04_021DA334
ldrsb r0, [sp]
cmp r0, #0x59
bne _021DCEB0
@@ -4615,8 +4615,8 @@ _021DCEF4: .word 0x0220C5C0
_021DCEF8: .word 0x0220C5C8
_021DCEFC: .word 0x0220C5D8
- arm_func_start FUN_021DCF00
-FUN_021DCF00: ; 0x021DCF00
+ arm_func_start MOD04_021DCF00
+MOD04_021DCF00: ; 0x021DCF00
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021DCFF0 ; =0x02210504
@@ -4644,13 +4644,13 @@ FUN_021DCF00: ; 0x021DCF00
beq _021DCFB0
cmp r0, #8
bne _021DCFC4
- bl FUN_021DCCC8
+ bl MOD04_021DCCC8
cmp r0, #0
bne _021DCF94
ldr r0, _021DCFF0 ; =0x02210504
ldr r0, [r0]
add r0, r0, #8
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
add sp, sp, #4
mov r0, #4
ldmfd sp!, {pc}
@@ -4658,22 +4658,22 @@ _021DCF94:
ldr r0, _021DCFF0 ; =0x02210504
ldr r0, [r0]
add r0, r0, #8
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
add sp, sp, #4
mov r0, #3
ldmfd sp!, {pc}
_021DCFB0:
add r0, r1, #8
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
add sp, sp, #4
mov r0, #5
ldmfd sp!, {pc}
_021DCFC4:
add r0, r1, #8
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
ldr r1, _021DCFF8 ; =0xFFFFA1DB
mov r0, #0x11
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #4
mov r0, #4
ldmfd sp!, {pc}
@@ -4686,8 +4686,8 @@ _021DCFF0: .word 0x02210504
_021DCFF4: .word 0x00001B3C
_021DCFF8: .word 0xFFFFA1DB
- arm_func_start FUN_021DCFFC
-FUN_021DCFFC: ; 0x021DCFFC
+ arm_func_start MOD04_021DCFFC
+MOD04_021DCFFC: ; 0x021DCFFC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xb4
ldr r2, _021DD244 ; =0x02210504
@@ -4736,18 +4736,18 @@ _021DD058:
add r1, sp, #0
add r0, r4, #8
str r2, [sp, #0x18]
- bl FUN_021DB608
+ bl MOD04_021DB608
cmp r0, #0
beq _021DD0DC
ldr r1, _021DD258 ; =0xFFFFA1DC
mov r0, #9
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #0xb4
mov r0, #0
ldmia sp!, {r4, r5, pc}
_021DD0DC:
add r0, sp, #0x1c
- bl FUN_021DA238
+ bl MOD04_021DA238
cmp r0, #0
beq _021DD10C
ldr r0, _021DD244 ; =0x02210504
@@ -4755,17 +4755,17 @@ _021DD0DC:
ldr r0, [r0]
mov r2, #0
add r0, r0, #8
- bl FUN_021D9C2C
+ bl MOD04_021D9C2C
cmp r0, #0
bne _021DD134
_021DD10C:
ldr r0, _021DD244 ; =0x02210504
ldr r0, [r0]
add r0, r0, #8
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
ldr r1, _021DD258 ; =0xFFFFA1DC
mov r0, #9
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #0xb4
mov r0, #0
ldmia sp!, {r4, r5, pc}
@@ -4776,7 +4776,7 @@ _021DD134:
ldr r2, _021DD260 ; =0x0220C60C
add r0, r0, #8
mov r3, #6
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
bne _021DD17C
ldr r0, _021DD244 ; =0x02210504
@@ -4785,17 +4785,17 @@ _021DD134:
mov r2, r5
add r0, r0, #8
mov r3, #4
- bl FUN_021DAB68
+ bl MOD04_021DAB68
cmp r0, #0
beq _021DD1A4
_021DD17C:
ldr r0, _021DD244 ; =0x02210504
ldr r0, [r0]
add r0, r0, #8
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
ldr r1, _021DD258 ; =0xFFFFA1DC
mov r0, #9
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #0xb4
mov r0, #0
ldmia sp!, {r4, r5, pc}
@@ -4803,16 +4803,16 @@ _021DD1A4:
ldr r0, _021DD244 ; =0x02210504
ldr r0, [r0]
add r0, r0, #8
- bl FUN_021DB570
+ bl MOD04_021DB570
cmp r0, #0
beq _021DD1E4
ldr r0, _021DD244 ; =0x02210504
ldr r0, [r0]
add r0, r0, #8
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
ldr r1, _021DD258 ; =0xFFFFA1DC
mov r0, #9
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #0xb4
mov r0, #0
ldmia sp!, {r4, r5, pc}
@@ -4824,7 +4824,7 @@ _021DD1E4:
ldr r2, [r1]
sub r1, r0, #1
add r0, r2, #8
- bl FUN_021DB4A4
+ bl MOD04_021DB4A4
ldr r0, _021DD244 ; =0x02210504
ldr r1, [r0]
add r0, r1, #0x1000
@@ -4834,10 +4834,10 @@ _021DD1E4:
movne r0, #1
ldmneia sp!, {r4, r5, pc}
add r0, r1, #8
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
ldr r1, _021DD258 ; =0xFFFFA1DC
mov r0, #9
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
mov r0, #0
add sp, sp, #0xb4
ldmia sp!, {r4, r5, pc}
@@ -4853,8 +4853,8 @@ _021DD260: .word 0x0220C60C
_021DD264: .word 0x0220C614
_021DD268: .word 0x021D3498
- arm_func_start FUN_021DD26C
-FUN_021DD26C: ; 0x021DD26C
+ arm_func_start MOD04_021DD26C
+MOD04_021DD26C: ; 0x021DD26C
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021DD2BC ; =0x02210504
@@ -4863,7 +4863,7 @@ FUN_021DD26C: ; 0x021DD26C
addeq sp, sp, #4
ldmeqia sp!, {pc}
add r0, r0, #8
- bl FUN_021DAE4C
+ bl MOD04_021DAE4C
ldr r1, _021DD2BC ; =0x02210504
ldr r0, _021DD2C0 ; =0x0220C618
ldr r1, [r1]
@@ -4879,8 +4879,8 @@ FUN_021DD26C: ; 0x021DD26C
_021DD2BC: .word 0x02210504
_021DD2C0: .word 0x0220C618
- arm_func_start FUN_021DD2C4
-FUN_021DD2C4: ; 0x021DD2C4
+ arm_func_start MOD04_021DD2C4
+MOD04_021DD2C4: ; 0x021DD2C4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r2, _021DD35C ; =0x02210504
@@ -4891,7 +4891,7 @@ FUN_021DD2C4: ; 0x021DD2C4
beq _021DD2FC
ldr r1, _021DD360 ; =0xFFFFA1DC
mov r0, #9
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #4
mov r0, #0
ldmia sp!, {r4, r5, pc}
@@ -4905,7 +4905,7 @@ _021DD2FC:
bne _021DD330
ldr r1, _021DD360 ; =0xFFFFA1DC
mov r0, #9
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #4
mov r0, #0
ldmia sp!, {r4, r5, pc}
@@ -4927,8 +4927,8 @@ _021DD360: .word 0xFFFFA1DC
_021DD364: .word 0x0220C628
_021DD368: .word 0x00001C1C
- arm_func_start FUN_021DD36C
-FUN_021DD36C: ; 0x021DD36C
+ arm_func_start MOD04_021DD36C
+MOD04_021DD36C: ; 0x021DD36C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #8
ands r4, r1, #3
@@ -5039,8 +5039,8 @@ _021DD4F0:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
- arm_func_start FUN_021DD4FC
-FUN_021DD4FC: ; 0x021DD4FC
+ arm_func_start MOD04_021DD4FC
+MOD04_021DD4FC: ; 0x021DD4FC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
ldr r4, _021DD69C ; =0xAAAAAAAB
@@ -5157,8 +5157,8 @@ _021DD6A4: .word 0x2AAAAAAB
_021DD6A8: .word 0x00000006
_021DD6AC: .word 0x0220C638
- arm_func_start FUN_021DD6B0
-FUN_021DD6B0: ; 0x021DD6B0
+ arm_func_start MOD04_021DD6B0
+MOD04_021DD6B0: ; 0x021DD6B0
ldr r3, _021DD6CC ; =0x02210508
ldr r2, [r3]
cmp r2, #9
@@ -5170,8 +5170,8 @@ FUN_021DD6B0: ; 0x021DD6B0
_021DD6CC: .word 0x02210508
_021DD6D0: .word 0x0221050C
- arm_func_start FUN_021DD6D4
-FUN_021DD6D4: ; 0x021DD6D4
+ arm_func_start MOD04_021DD6D4
+MOD04_021DD6D4: ; 0x021DD6D4
ldr r0, _021DD6EC ; =0x02210508
ldr r0, [r0]
cmp r0, #0
@@ -5181,8 +5181,8 @@ FUN_021DD6D4: ; 0x021DD6D4
.align 2, 0
_021DD6EC: .word 0x02210508
- arm_func_start FUN_021DD6F0
-FUN_021DD6F0: ; 0x021DD6F0
+ arm_func_start MOD04_021DD6F0
+MOD04_021DD6F0: ; 0x021DD6F0
ldr r1, _021DD710 ; =0x02210508
ldr r0, [r1]
cmp r0, #9
@@ -5195,8 +5195,8 @@ FUN_021DD6F0: ; 0x021DD6F0
_021DD710: .word 0x02210508
_021DD714: .word 0x0221050C
- arm_func_start FUN_021DD718
-FUN_021DD718: ; 0x021DD718
+ arm_func_start MOD04_021DD718
+MOD04_021DD718: ; 0x021DD718
cmp r0, #0
ldrne r2, _021DD800 ; =0x0221050C
ldrne r2, [r2]
@@ -5270,8 +5270,8 @@ _021DD7F4:
_021DD800: .word 0x0221050C
_021DD804: .word 0x02210508
- arm_func_start FUN_021DD808
-FUN_021DD808: ; 0x021DD808
+ arm_func_start MOD04_021DD808
+MOD04_021DD808: ; 0x021DD808
cmp r0, #0
ldrne r1, _021DD824 ; =0x0221050C
ldrne r1, [r1]
@@ -5283,38 +5283,38 @@ FUN_021DD808: ; 0x021DD808
_021DD824: .word 0x0221050C
_021DD828: .word 0x02210508
- arm_func_start FUN_021DD82C
-FUN_021DD82C: ; 0x021DD82C
- ldr ip, _021DD840 ; =FUN_021DD904
+ arm_func_start MOD04_021DD82C
+MOD04_021DD82C: ; 0x021DD82C
+ ldr ip, _021DD840 ; =MOD04_021DD904
mov r1, r0
mov r0, #5
mov r2, #0
bx ip
.align 2, 0
-_021DD840: .word FUN_021DD904
+_021DD840: .word MOD04_021DD904
- arm_func_start FUN_021DD844
-FUN_021DD844: ; 0x021DD844
- ldr ip, _021DD85C ; =FUN_021DD8E8
+ arm_func_start MOD04_021DD844
+MOD04_021DD844: ; 0x021DD844
+ ldr ip, _021DD85C ; =MOD04_021DD8E8
mov r2, r1
mov r1, r0
mov r3, r2
mov r0, #5
bx ip
.align 2, 0
-_021DD85C: .word FUN_021DD8E8
+_021DD85C: .word MOD04_021DD8E8
- arm_func_start FUN_021DD860
-FUN_021DD860: ; 0x021DD860
- ldr ip, _021DD870 ; =FUN_021DD944
+ arm_func_start MOD04_021DD860
+MOD04_021DD860: ; 0x021DD860
+ ldr ip, _021DD870 ; =MOD04_021DD944
mov r1, r0
mov r0, #5
bx ip
.align 2, 0
-_021DD870: .word FUN_021DD944
+_021DD870: .word MOD04_021DD944
- arm_func_start FUN_021DD874
-FUN_021DD874: ; 0x021DD874
+ arm_func_start MOD04_021DD874
+MOD04_021DD874: ; 0x021DD874
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr ip, _021DD8E0 ; =0x02210514
mov r4, r2
@@ -5347,18 +5347,18 @@ _021DD8D8:
_021DD8E0: .word 0x02210514
_021DD8E4: .word 0x02210510
- arm_func_start FUN_021DD8E8
-FUN_021DD8E8: ; 0x021DD8E8
+ arm_func_start MOD04_021DD8E8
+MOD04_021DD8E8: ; 0x021DD8E8
stmdb sp!, {lr}
sub sp, sp, #4
mov ip, #0x20
str ip, [sp]
- bl FUN_021DD874
+ bl MOD04_021DD874
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021DD904
-FUN_021DD904: ; 0x021DD904
+ arm_func_start MOD04_021DD904
+MOD04_021DD904: ; 0x021DD904
stmdb sp!, {lr}
sub sp, sp, #4
ldr r3, _021DD920 ; =0x02210510
@@ -5369,8 +5369,8 @@ FUN_021DD904: ; 0x021DD904
.align 2, 0
_021DD920: .word 0x02210510
- arm_func_start FUN_021DD924
-FUN_021DD924: ; 0x021DD924
+ arm_func_start MOD04_021DD924
+MOD04_021DD924: ; 0x021DD924
stmdb sp!, {lr}
sub sp, sp, #4
ldr r3, _021DD940 ; =0x02210514
@@ -5381,8 +5381,8 @@ FUN_021DD924: ; 0x021DD924
.align 2, 0
_021DD940: .word 0x02210514
- arm_func_start FUN_021DD944
-FUN_021DD944: ; 0x021DD944
+ arm_func_start MOD04_021DD944
+MOD04_021DD944: ; 0x021DD944
stmdb sp!, {lr}
sub sp, sp, #4
ldr r3, _021DD964 ; =0x02210514
@@ -5394,8 +5394,8 @@ FUN_021DD944: ; 0x021DD944
.align 2, 0
_021DD964: .word 0x02210514
- arm_func_start FUN_021DD968
-FUN_021DD968: ; 0x021DD968
+ arm_func_start MOD04_021DD968
+MOD04_021DD968: ; 0x021DD968
ldr r3, _021DD97C ; =0x02210514
ldr r2, _021DD980 ; =0x02210510
str r0, [r3]
@@ -5405,23 +5405,23 @@ FUN_021DD968: ; 0x021DD968
_021DD97C: .word 0x02210514
_021DD980: .word 0x02210510
- arm_func_start FUN_021DD984
-FUN_021DD984: ; 0x021DD984
+ arm_func_start MOD04_021DD984
+MOD04_021DD984: ; 0x021DD984
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021DDCE8
- bl FUN_021DDB14
+ bl MOD04_021DDCE8
+ bl MOD04_021DDB14
cmp r0, #0
beq _021DD9CC
- bl FUN_021EBAB8
+ bl MOD04_021EBAB8
mov r2, r0
cmp r2, #0x63
ldr r1, _021DD9D8 ; =0xFFFF2D10
movhi r2, #0x63
mov r0, #8
sub r1, r1, r2
- bl FUN_021DD6B0
- bl FUN_021DDBBC
+ bl MOD04_021DD6B0
+ bl MOD04_021DDBBC
add sp, sp, #4
mov r0, #1
ldmfd sp!, {pc}
@@ -5432,8 +5432,8 @@ _021DD9CC:
.align 2, 0
_021DD9D8: .word 0xFFFF2D10
- arm_func_start FUN_021DD9DC
-FUN_021DD9DC: ; 0x021DD9DC
+ arm_func_start MOD04_021DD9DC
+MOD04_021DD9DC: ; 0x021DD9DC
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x18
mov r1, #0
@@ -5442,12 +5442,12 @@ FUN_021DD9DC: ; 0x021DD9DC
bl MI_CpuFill8
mov r0, #0xff
str r0, [r4, #4]
- bl FUN_021DDC1C
+ bl MOD04_021DDC1C
cmp r0, #4
addne sp, sp, #0x18
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
- bl FUN_021EBAB8
+ bl MOD04_021EBAB8
str r0, [r4]
bl OS_DisableInterrupts
mov r6, r0
@@ -5497,7 +5497,7 @@ _021DDAB0:
mov r2, #0x10
bl MI_CpuFill8
add r0, sp, #2
- bl FUN_021EBA28
+ bl MOD04_021EBA28
cmp r0, #1
bne _021DDAFC
ldrb r1, [sp, #8]
@@ -5514,15 +5514,15 @@ _021DDAFC:
add sp, sp, #0x18
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021DDB08
-FUN_021DDB08: ; 0x021DDB08
+ arm_func_start MOD04_021DDB08
+MOD04_021DDB08: ; 0x021DDB08
ldr ip, _021DDB10 ; =0x020A8B28
bx ip
.align 2, 0
_021DDB10: .word 0x020A8B28
- arm_func_start FUN_021DDB14
-FUN_021DDB14: ; 0x021DDB14
+ arm_func_start MOD04_021DDB14
+MOD04_021DDB14: ; 0x021DDB14
ldr r0, _021DDB3C ; =0x02210518
ldr r0, [r0]
cmp r0, #0
@@ -5537,8 +5537,8 @@ _021DDB34:
.align 2, 0
_021DDB3C: .word 0x02210518
- arm_func_start FUN_021DDB40
-FUN_021DDB40: ; 0x021DDB40
+ arm_func_start MOD04_021DDB40
+MOD04_021DDB40: ; 0x021DDB40
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021DDBB8 ; =0x02210518
@@ -5560,7 +5560,7 @@ FUN_021DDB40: ; 0x021DDB40
ldmeqia sp!, {pc}
mov r0, #5
strh r0, [r2, #4]
- bl FUN_021EB9D8
+ bl MOD04_021EB9D8
cmp r0, #0
ldrne r0, _021DDBB8 ; =0x02210518
movne r1, #0
@@ -5572,8 +5572,8 @@ FUN_021DDB40: ; 0x021DDB40
.align 2, 0
_021DDBB8: .word 0x02210518
- arm_func_start FUN_021DDBBC
-FUN_021DDBBC: ; 0x021DDBBC
+ arm_func_start MOD04_021DDBBC
+MOD04_021DDBBC: ; 0x021DDBBC
stmdb sp!, {r4, lr}
ldr r0, _021DDC18 ; =0x02210518
ldr r1, [r0]
@@ -5584,14 +5584,14 @@ FUN_021DDBBC: ; 0x021DDBBC
moveq r1, #0
streq r1, [r0]
ldmeqia sp!, {r4, pc}
- bl FUN_021EB9D8
+ bl MOD04_021EB9D8
cmp r0, #0
bne _021DDC08
mov r4, #0xa
_021DDBF4:
mov r0, r4
bl OS_Sleep
- bl FUN_021EB9D8
+ bl MOD04_021EB9D8
cmp r0, #0
beq _021DDBF4
_021DDC08:
@@ -5602,8 +5602,8 @@ _021DDC08:
.align 2, 0
_021DDC18: .word 0x02210518
- arm_func_start FUN_021DDC1C
-FUN_021DDC1C: ; 0x021DDC1C
+ arm_func_start MOD04_021DDC1C
+MOD04_021DDC1C: ; 0x021DDC1C
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021DDCE4 ; =0x02210518
@@ -5616,7 +5616,7 @@ FUN_021DDC1C: ; 0x021DDC1C
cmp r0, #1
addeq sp, sp, #4
ldmeqia sp!, {pc}
- bl FUN_021EBAE8
+ bl MOD04_021EBAE8
mov r1, r0
cmp r1, #5
bne _021DDC80
@@ -5637,7 +5637,7 @@ _021DDC80:
blt _021DDCB8
sub r1, r1, #0x2bc
mov r0, #9
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
ldr r1, _021DDCE4 ; =0x02210518
mov r0, #8
ldr r1, [r1]
@@ -5646,7 +5646,7 @@ _021DDC80:
ldmfd sp!, {pc}
_021DDCB8:
mov r0, #5
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
ldr r1, _021DDCE4 ; =0x02210518
mov r0, #7
ldr r1, [r1]
@@ -5660,8 +5660,8 @@ _021DDCD8:
.align 2, 0
_021DDCE4: .word 0x02210518
- arm_func_start FUN_021DDCE8
-FUN_021DDCE8: ; 0x021DDCE8
+ arm_func_start MOD04_021DDCE8
+MOD04_021DDCE8: ; 0x021DDCE8
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021DDD78 ; =0x02210518
@@ -5672,7 +5672,7 @@ FUN_021DDCE8: ; 0x021DDCE8
ldrh r0, [r1, #4]
cmp r0, #2
bne _021DDD28
- bl FUN_021EBB80
+ bl MOD04_021EBB80
ldr r1, _021DDD78 ; =0x02210518
add sp, sp, #4
ldr r1, [r1]
@@ -5702,8 +5702,8 @@ _021DDD28:
.align 2, 0
_021DDD78: .word 0x02210518
- arm_func_start FUN_021DDD7C
-FUN_021DDD7C: ; 0x021DDD7C
+ arm_func_start MOD04_021DDD7C
+MOD04_021DDD7C: ; 0x021DDD7C
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021DDDC8 ; =0x02210518
@@ -5719,15 +5719,15 @@ FUN_021DDD7C: ; 0x021DDD7C
ldmeqia sp!, {pc}
mov r0, #3
strh r0, [r1, #4]
- bl FUN_021DDC1C
+ bl MOD04_021DDC1C
mov r0, #1
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
_021DDDC8: .word 0x02210518
- arm_func_start FUN_021DDDCC
-FUN_021DDDCC: ; 0x021DDDCC
+ arm_func_start MOD04_021DDDCC
+MOD04_021DDDCC: ; 0x021DDDCC
stmdb sp!, {lr}
sub sp, sp, #0xc
ldr r0, _021DDE70 ; =0x02210518
@@ -5743,9 +5743,9 @@ FUN_021DDDCC: ; 0x021DDDCC
mov r2, #0xc
bl MI_CpuFill8
ldr r0, _021DDE70 ; =0x02210518
- ldr r3, _021DDE74 ; =FUN_021DD944
+ ldr r3, _021DDE74 ; =MOD04_021DD944
ldr lr, [r0]
- ldr r2, _021DDE78 ; =FUN_021DD904
+ ldr r2, _021DDE78 ; =MOD04_021DD904
ldrh ip, [lr, #8]
add r0, sp, #0
mov r1, #2
@@ -5755,28 +5755,28 @@ FUN_021DDDCC: ; 0x021DDDCC
str r3, [sp]
str r2, [sp, #4]
strh r1, [lr, #4]
- bl FUN_021EBC60
+ bl MOD04_021EBC60
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {pc}
mov r0, #9
mvn r1, #5
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #0xc
ldmfd sp!, {pc}
_021DDE5C:
mov r0, #9
mvn r1, #3
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #0xc
ldmfd sp!, {pc}
.align 2, 0
_021DDE70: .word 0x02210518
-_021DDE74: .word FUN_021DD944
-_021DDE78: .word FUN_021DD904
+_021DDE74: .word MOD04_021DD944
+_021DDE78: .word MOD04_021DD904
- arm_func_start FUN_021DDE7C
-FUN_021DDE7C: ; 0x021DDE7C
+ arm_func_start MOD04_021DDE7C
+MOD04_021DDE7C: ; 0x021DDE7C
stmdb sp!, {lr}
sub sp, sp, #4
cmp r0, #0
@@ -5789,17 +5789,17 @@ FUN_021DDE7C: ; 0x021DDE7C
ldmfd sp!, {pc}
_021DDEA4:
ldr r0, _021DDED4 ; =0x0220D280
- bl FUN_021D9C1C
+ bl MOD04_021D9C1C
add sp, sp, #4
ldmfd sp!, {pc}
_021DDEB4:
ldr r0, _021DDED8 ; =0x0220D2A8
- bl FUN_021D9C1C
+ bl MOD04_021D9C1C
add sp, sp, #4
ldmfd sp!, {pc}
_021DDEC4:
ldr r0, _021DDEDC ; =0x0220D2CC
- bl FUN_021D9C1C
+ bl MOD04_021D9C1C
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
@@ -5807,8 +5807,8 @@ _021DDED4: .word 0x0220D280
_021DDED8: .word 0x0220D2A8
_021DDEDC: .word 0x0220D2CC
- arm_func_start FUN_021DDEE0
-FUN_021DDEE0: ; 0x021DDEE0
+ arm_func_start MOD04_021DDEE0
+MOD04_021DDEE0: ; 0x021DDEE0
stmdb sp!, {r4, r5, r6, lr}
ldr r2, _021DDF3C ; =0x02210518
mov r6, r0
@@ -5828,22 +5828,22 @@ FUN_021DDEE0: ; 0x021DDEE0
ldr r1, _021DDF3C ; =0x02210518
strh r0, [r6, #6]
str r6, [r1]
- bl FUN_021DDE7C
+ bl MOD04_021DDE7C
mov r0, r4
bl FUN_020A374C
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021DDF3C: .word 0x02210518
- arm_func_start FUN_021DDF40
-FUN_021DDF40: ; 0x021DDF40
- ldr ip, _021DDF48 ; =FUN_021D9974
+ arm_func_start MOD04_021DDF40
+MOD04_021DDF40: ; 0x021DDF40
+ ldr ip, _021DDF48 ; =MOD04_021D9974
bx ip
.align 2, 0
-_021DDF48: .word FUN_021D9974
+_021DDF48: .word MOD04_021D9974
- arm_func_start FUN_021DDF4C
-FUN_021DDF4C: ; 0x021DDF4C
+ arm_func_start MOD04_021DDF4C
+MOD04_021DDF4C: ; 0x021DDF4C
stmdb sp!, {lr}
sub sp, sp, #0x1c4
ldr r0, _021DE054 ; =0x0221051C
@@ -5858,7 +5858,7 @@ FUN_021DDF4C: ; 0x021DDF4C
addeq sp, sp, #0x1c4
moveq r0, #1
ldmeqia sp!, {pc}
- bl FUN_021D988C
+ bl MOD04_021D988C
cmp r0, #0
beq _021DDFA4
cmp r0, #0x14
@@ -5871,12 +5871,12 @@ _021DDFA4:
mov r0, #2
ldmfd sp!, {pc}
_021DDFB0:
- bl FUN_021D991C
+ bl MOD04_021D991C
ldr r0, _021DE054 ; =0x0221051C
ldr r2, _021DE058 ; =0x00001E1C
ldr r1, [r0]
mov r0, #4
- bl FUN_021DD904
+ bl MOD04_021DD904
ldr r0, _021DE054 ; =0x0221051C
mov r1, #0
str r1, [r0]
@@ -5884,12 +5884,12 @@ _021DDFB0:
mov r0, #3
ldmfd sp!, {pc}
_021DDFE0:
- bl FUN_021D991C
+ bl MOD04_021D991C
ldr r0, _021DE054 ; =0x0221051C
ldr r2, _021DE058 ; =0x00001E1C
ldr r1, [r0]
mov r0, #4
- bl FUN_021DD904
+ bl MOD04_021DD904
ldr r0, _021DE054 ; =0x0221051C
mov r1, #0
str r1, [r0]
@@ -5898,19 +5898,19 @@ _021DDFE0:
ldmfd sp!, {pc}
_021DE010:
add r0, sp, #0
- bl FUN_021D97F8
- bl FUN_021D991C
+ bl MOD04_021D97F8
+ bl MOD04_021D991C
ldr r0, _021DE054 ; =0x0221051C
ldr r2, _021DE058 ; =0x00001E1C
ldr r1, [r0]
mov r0, #4
- bl FUN_021DD904
+ bl MOD04_021DD904
ldr r1, [sp]
ldr r2, _021DE054 ; =0x0221051C
mov r3, #0
mov r0, #2
str r3, [r2]
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
mov r0, #4
add sp, sp, #0x1c4
ldmfd sp!, {pc}
@@ -5918,8 +5918,8 @@ _021DE010:
_021DE054: .word 0x0221051C
_021DE058: .word 0x00001E1C
- arm_func_start FUN_021DE05C
-FUN_021DE05C: ; 0x021DE05C
+ arm_func_start MOD04_021DE05C
+MOD04_021DE05C: ; 0x021DE05C
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021DE130 ; =0x0221051C
@@ -5930,14 +5930,14 @@ FUN_021DE05C: ; 0x021DE05C
_021DE078:
ldr r1, _021DE134 ; =0x00001E1C
mov r0, #4
- bl FUN_021DD944
+ bl MOD04_021DD944
ldr r1, _021DE130 ; =0x0221051C
cmp r0, #0
str r0, [r1]
bne _021DE0AC
ldr r1, _021DE138 ; =0xFFFFB17C
mov r0, #9
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #4
mov r0, #0
ldmfd sp!, {pc}
@@ -5953,9 +5953,9 @@ _021DE0AC:
mov r2, #9
bl MI_CpuCopy8
ldr r1, _021DE130 ; =0x0221051C
- ldr r2, _021DE144 ; =FUN_021DD944
+ ldr r2, _021DE144 ; =MOD04_021DD944
ldr r0, [r1]
- ldr r3, _021DE148 ; =FUN_021DD904
+ ldr r3, _021DE148 ; =MOD04_021DD904
add r0, r0, #0x1000
str r2, [r0, #0xc50]
ldr r0, [r1]
@@ -5964,14 +5964,14 @@ _021DE0AC:
str r3, [r0, #0xc54]
ldr r1, [r1]
add r0, r1, r2
- bl FUN_021D9ACC
+ bl MOD04_021D9ACC
cmp r0, #0
addeq sp, sp, #4
moveq r0, #1
ldmeqia sp!, {pc}
ldr r1, _021DE138 ; =0xFFFFB17C
mov r0, #9
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
mov r0, #0
add sp, sp, #4
ldmfd sp!, {pc}
@@ -5981,32 +5981,32 @@ _021DE134: .word 0x00001E1C
_021DE138: .word 0xFFFFB17C
_021DE13C: .word 0x00001C44
_021DE140: .word 0x0220D2EC
-_021DE144: .word FUN_021DD944
-_021DE148: .word FUN_021DD904
+_021DE144: .word MOD04_021DD944
+_021DE148: .word MOD04_021DD904
_021DE14C: .word 0x00001C10
- arm_func_start FUN_021DE150
-FUN_021DE150: ; 0x021DE150
+ arm_func_start MOD04_021DE150
+MOD04_021DE150: ; 0x021DE150
stmdb sp!, {r4, lr}
- bl FUN_021DCF00
+ bl MOD04_021DCF00
mov r4, r0
sub r0, r4, #3
cmp r0, #2
bhi _021DE16C
- bl FUN_021DD26C
+ bl MOD04_021DD26C
_021DE16C:
mov r0, r4
ldmia sp!, {r4, pc}
- arm_func_start FUN_021DE174
-FUN_021DE174: ; 0x021DE174
+ arm_func_start MOD04_021DE174
+MOD04_021DE174: ; 0x021DE174
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
mov r4, r1
- ldr r0, _021DE1EC ; =FUN_021DD944
- ldr r1, _021DE1F0 ; =FUN_021DD904
- bl FUN_021DD2C4
+ ldr r0, _021DE1EC ; =MOD04_021DD944
+ ldr r1, _021DE1F0 ; =MOD04_021DD904
+ bl MOD04_021DD2C4
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
@@ -6017,28 +6017,28 @@ FUN_021DE174: ; 0x021DE174
bne _021DE1C0
ldr r0, _021DE1F4 ; =0x0220D2F0
mov r1, r4
- bl FUN_021DCFFC
+ bl MOD04_021DCFFC
b _021DE1CC
_021DE1C0:
mov r0, r5
mov r1, r4
- bl FUN_021DCFFC
+ bl MOD04_021DCFFC
_021DE1CC:
cmp r0, #0
addne sp, sp, #4
movne r0, #1
ldmneia sp!, {r4, r5, pc}
- bl FUN_021DD26C
+ bl MOD04_021DD26C
mov r0, #0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
-_021DE1EC: .word FUN_021DD944
-_021DE1F0: .word FUN_021DD904
+_021DE1EC: .word MOD04_021DD944
+_021DE1F0: .word MOD04_021DD904
_021DE1F4: .word 0x0220D2F0
- arm_func_start FUN_021DE1F8
-FUN_021DE1F8: ; 0x021DE1F8
+ arm_func_start MOD04_021DE1F8
+MOD04_021DE1F8: ; 0x021DE1F8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r2, _021DE2C4 ; =0x022104F8
@@ -6099,56 +6099,56 @@ _021DE2C4: .word 0x022104F8
_021DE2C8: .word 0x022104FC
_021DE2CC: .word 0xBC19137F
- arm_func_start FUN_021DE2D0
-FUN_021DE2D0: ; 0x021DE2D0
+ arm_func_start MOD04_021DE2D0
+MOD04_021DE2D0: ; 0x021DE2D0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
mov r4, r1
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
addne sp, sp, #4
movne r0, #0
ldmneia sp!, {r4, r5, pc}
mov r0, r5
mov r1, r4
- bl FUN_02207330
+ bl MOD04_02207330
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021DE308
-FUN_021DE308: ; 0x021DE308
+ arm_func_start MOD04_021DE308
+MOD04_021DE308: ; 0x021DE308
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
addne sp, sp, #4
movne r0, #0
ldmneia sp!, {pc}
- bl FUN_02207158
+ bl MOD04_02207158
add sp, sp, #4
ldmfd sp!, {pc}
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r6
mov r1, r5
mov r2, r4
- bl FUN_0220733C
+ bl MOD04_0220733C
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021DE364
-FUN_021DE364: ; 0x021DE364
+ arm_func_start MOD04_021DE364
+MOD04_021DE364: ; 0x021DE364
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
@@ -6160,39 +6160,39 @@ FUN_021DE364: ; 0x021DE364
mov r0, r6
mov r1, r5
mov r2, r4
- bl FUN_022074EC
+ bl MOD04_022074EC
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021DE3AC
-FUN_021DE3AC: ; 0x021DE3AC
+ arm_func_start MOD04_021DE3AC
+MOD04_021DE3AC: ; 0x021DE3AC
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, pc}
mov r0, r4
- bl FUN_022077A8
+ bl MOD04_022077A8
ldmia sp!, {r4, pc}
- arm_func_start FUN_021DE3D0
-FUN_021DE3D0: ; 0x021DE3D0
+ arm_func_start MOD04_021DE3D0
+MOD04_021DE3D0: ; 0x021DE3D0
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r6
mov r1, r5
mov r2, r4
- bl FUN_022069DC
+ bl MOD04_022069DC
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021DE404
-FUN_021DE404: ; 0x021DE404
+ arm_func_start MOD04_021DE404
+MOD04_021DE404: ; 0x021DE404
stmdb sp!, {lr}
sub sp, sp, #4
ldr r1, _021DE454 ; =0x02210520
@@ -6206,34 +6206,34 @@ FUN_021DE404: ; 0x021DE404
ldr r0, [r0, #0x48]
cmp r0, #0
bne _021DE440
- bl FUN_021DE730
+ bl MOD04_021DE730
b _021DE448
_021DE440:
- ldr r0, _021DE458 ; =FUN_021DE730
- bl FUN_02206E6C
+ ldr r0, _021DE458 ; =MOD04_021DE730
+ bl MOD04_02206E6C
_021DE448:
mov r0, #1
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
_021DE454: .word 0x02210520
-_021DE458: .word FUN_021DE730
+_021DE458: .word MOD04_021DE730
- arm_func_start FUN_021DE45C
-FUN_021DE45C: ; 0x021DE45C
+ arm_func_start MOD04_021DE45C
+MOD04_021DE45C: ; 0x021DE45C
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r6, r0
mov r5, r1
mov r4, r2
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
addne sp, sp, #8
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
mov r0, #0xa80
mov r1, #0x20
- bl FUN_021DE884
+ bl MOD04_021DE884
ldr r2, _021DE568 ; =0x02210520
mov r1, #0
str r0, [r2]
@@ -6259,12 +6259,12 @@ FUN_021DE45C: ; 0x021DE45C
ldr r0, _021DE56C ; =0x0220D2F8
ldr r1, [r1]
add r1, r1, #0x4c
- bl FUN_021DE174
+ bl MOD04_021DE174
cmp r0, #0
bne _021DE520
ldr r0, _021DE568 ; =0x02210520
ldr r0, [r0]
- bl FUN_021DE86C
+ bl MOD04_021DE86C
ldr r1, _021DE568 ; =0x02210520
mov r0, #0
str r0, [r1]
@@ -6274,7 +6274,7 @@ _021DE520:
ldr r0, _021DE568 ; =0x02210520
mov r2, #0x800
ldr r0, [r0]
- ldr r1, _021DE570 ; =FUN_021DE574
+ ldr r1, _021DE570 ; =MOD04_021DE574
add r0, r0, #0x9c0
mov r3, r0
str r2, [sp]
@@ -6292,10 +6292,10 @@ _021DE520:
.align 2, 0
_021DE568: .word 0x02210520
_021DE56C: .word 0x0220D2F8
-_021DE570: .word FUN_021DE574
+_021DE570: .word MOD04_021DE574
- arm_func_start FUN_021DE574
-FUN_021DE574: ; 0x021DE574
+ arm_func_start MOD04_021DE574
+MOD04_021DE574: ; 0x021DE574
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x2a4
mov r7, #0
@@ -6303,7 +6303,7 @@ FUN_021DE574: ; 0x021DE574
mvn r5, #0
mov r4, #0x64
_021DE58C:
- bl FUN_021DE150
+ bl MOD04_021DE150
cmp r0, #3
bne _021DE6AC
ldr r0, _021DE718 ; =0x02210520
@@ -6319,7 +6319,7 @@ _021DE58C:
mov r0, #0
mov r1, #8
mvn r2, #0
- bl FUN_021DE774
+ bl MOD04_021DE774
add sp, sp, #0x2a4
ldmia sp!, {r4, r5, r6, r7, pc}
_021DE5D8:
@@ -6336,35 +6336,35 @@ _021DE5D8:
add r2, sp, #0x110
add r0, r4, #0x91
mov r3, #0x190
- bl FUN_021DD4FC
+ bl MOD04_021DD4FC
cmp r0, #0
bge _021DE630
mov r0, #0
mov r1, #8
mvn r2, #0
- bl FUN_021DE774
+ bl MOD04_021DE774
add sp, sp, #0x2a4
ldmia sp!, {r4, r5, r6, r7, pc}
_021DE630:
ldr r0, _021DE718 ; =0x02210520
- ldr r4, _021DE724 ; =FUN_021DE774
+ ldr r4, _021DE724 ; =MOD04_021DE774
ldr r2, [r0]
- ldr r0, _021DE728 ; =FUN_021DE884
+ ldr r0, _021DE728 ; =MOD04_021DE884
add r1, r2, #8
str r1, [sp]
add r1, r2, #0x28
str r1, [sp, #4]
- ldr r1, _021DE72C ; =FUN_021DE86C
+ ldr r1, _021DE72C ; =MOD04_021DE86C
add r2, sp, #0x10
add r3, sp, #0x110
str r4, [sp, #8]
- bl FUN_02206EFC
+ bl MOD04_02206EFC
cmp r0, #0
bne _021DE684
mov r0, #0
mov r1, #8
mvn r2, #0
- bl FUN_021DE774
+ bl MOD04_021DE774
add sp, sp, #0x2a4
ldmia sp!, {r4, r5, r6, r7, pc}
_021DE684:
@@ -6375,17 +6375,17 @@ _021DE684:
mov r1, r0
mvn r2, #0
str r4, [r3, #0x48]
- bl FUN_021DE774
+ bl MOD04_021DE774
add sp, sp, #0x2a4
ldmia sp!, {r4, r5, r6, r7, pc}
_021DE6AC:
cmp r0, #4
bne _021DE6EC
add r0, sp, #0xc
- bl FUN_021DD808
+ bl MOD04_021DD808
ldr r1, [sp, #0xc]
mov r0, #0xe
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
ldr r1, _021DE718 ; =0x02210520
mov r0, #0
ldr r2, [r1]
@@ -6401,26 +6401,26 @@ _021DE6EC:
mov r0, r7
mov r1, r6
mov r2, r5
- bl FUN_021DE774
+ bl MOD04_021DE774
_021DE704:
mov r0, r4
bl OS_Sleep
b _021DE58C
- arm_func_start FUN_021DE710
-FUN_021DE710: ; 0x021DE710
+ arm_func_start MOD04_021DE710
+MOD04_021DE710: ; 0x021DE710
add sp, sp, #0x2a4
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_021DE718: .word 0x02210520
_021DE71C: .word 0x0220D300
_021DE720: .word 0x0220D314
-_021DE724: .word FUN_021DE774
-_021DE728: .word FUN_021DE884
-_021DE72C: .word FUN_021DE86C
+_021DE724: .word MOD04_021DE774
+_021DE728: .word MOD04_021DE884
+_021DE72C: .word MOD04_021DE86C
- arm_func_start FUN_021DE730
-FUN_021DE730: ; 0x021DE730
+ arm_func_start MOD04_021DE730
+MOD04_021DE730: ; 0x021DE730
stmdb sp!, {r4, lr}
ldr r0, _021DE770 ; =0x02210520
ldr r0, [r0]
@@ -6429,7 +6429,7 @@ FUN_021DE730: ; 0x021DE730
ldr r0, _021DE770 ; =0x02210520
ldr r0, [r0]
ldr r4, [r0, #4]
- bl FUN_021DE86C
+ bl MOD04_021DE86C
ldr r0, _021DE770 ; =0x02210520
mov r1, #0
str r1, [r0]
@@ -6440,8 +6440,8 @@ FUN_021DE730: ; 0x021DE730
.align 2, 0
_021DE770: .word 0x02210520
- arm_func_start FUN_021DE774
-FUN_021DE774: ; 0x021DE774
+ arm_func_start MOD04_021DE774
+MOD04_021DE774: ; 0x021DE774
stmdb sp!, {r4, r5, r6, lr}
movs r5, r1
mov r6, r0
@@ -6469,7 +6469,7 @@ _021DE7A8: ; jump table
_021DE7CC:
ldr r1, _021DE858 ; =0xFFFF86E7
mov r0, #9
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
b _021DE834
_021DE7DC:
bl OS_Terminate
@@ -6477,18 +6477,18 @@ _021DE7DC:
_021DE7E4:
ldr r1, _021DE85C ; =0xFFFF86D4
mov r0, #0xf
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
b _021DE834
_021DE7F4:
ldr r1, _021DE860 ; =0xFFFF86CA
mov r0, #0xe
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
b _021DE834
_021DE804:
ldr r1, _021DE864 ; =0xFFFF86E8
mov r0, #0xe
sub r1, r1, r4
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
b _021DE834
_021DE818:
bl OS_Terminate
@@ -6496,7 +6496,7 @@ _021DE818:
_021DE820:
ldr r1, _021DE868 ; =0xFFFF86DF
mov r0, #9
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
b _021DE834
_021DE830:
bl OS_Terminate
@@ -6517,28 +6517,28 @@ _021DE860: .word 0xFFFF86CA
_021DE864: .word 0xFFFF86E8
_021DE868: .word 0xFFFF86DF
- arm_func_start FUN_021DE86C
-FUN_021DE86C: ; 0x021DE86C
- ldr ip, _021DE880 ; =FUN_021DD904
+ arm_func_start MOD04_021DE86C
+MOD04_021DE86C: ; 0x021DE86C
+ ldr ip, _021DE880 ; =MOD04_021DD904
mov r1, r0
mov r0, #6
mov r2, #0
bx ip
.align 2, 0
-_021DE880: .word FUN_021DD904
+_021DE880: .word MOD04_021DD904
- arm_func_start FUN_021DE884
-FUN_021DE884: ; 0x021DE884
- ldr ip, _021DE898 ; =FUN_021DD924
+ arm_func_start MOD04_021DE884
+MOD04_021DE884: ; 0x021DE884
+ ldr ip, _021DE898 ; =MOD04_021DD924
mov r2, r1
mov r1, r0
mov r0, #6
bx ip
.align 2, 0
-_021DE898: .word FUN_021DD924
+_021DE898: .word MOD04_021DD924
- arm_func_start FUN_021DE89C
-FUN_021DE89C: ; 0x021DE89C
+ arm_func_start MOD04_021DE89C
+MOD04_021DE89C: ; 0x021DE89C
ldrh r1, [r0]
mov r2, #0
cmp r1, #0
@@ -6553,8 +6553,8 @@ _021DE8C0:
mov r0, r2
bx lr
- arm_func_start FUN_021DE8C8
-FUN_021DE8C8: ; 0x021DE8C8
+ arm_func_start MOD04_021DE8C8
+MOD04_021DE8C8: ; 0x021DE8C8
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr r2, _021DE9E4 ; =0x02210524
@@ -6633,8 +6633,8 @@ _021DE9E8: .word 0x6C078965
_021DE9EC: .word 0x5D588B65
_021DE9F0: .word 0x00269EC3
- arm_func_start FUN_021DE9F4
-FUN_021DE9F4: ; 0x021DE9F4
+ arm_func_start MOD04_021DE9F4
+MOD04_021DE9F4: ; 0x021DE9F4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
movs r4, r1
@@ -6710,8 +6710,8 @@ _021DEAE8:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_021DEB0C
-FUN_021DEB0C: ; 0x021DEB0C
+ arm_func_start MOD04_021DEB0C
+MOD04_021DEB0C: ; 0x021DEB0C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r5, r2
@@ -6725,14 +6725,14 @@ FUN_021DEB0C: ; 0x021DEB0C
mov r0, r7
mov r1, r6
mov r3, r4
- bl FUN_021DEB54
+ bl MOD04_021DEB54
mov r0, r5
bl strlen
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_021DEB54
-FUN_021DEB54: ; 0x021DEB54
+ arm_func_start MOD04_021DEB54
+MOD04_021DEB54: ; 0x021DEB54
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
str r0, [sp]
@@ -6750,17 +6750,17 @@ FUN_021DEB54: ; 0x021DEB54
.align 2, 0
_021DEB8C: .word 0x0220D328
- arm_func_start FUN_021DEB90
-FUN_021DEB90: ; 0x021DEB90
+ arm_func_start MOD04_021DEB90
+MOD04_021DEB90: ; 0x021DEB90
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021FD43C
- bl FUN_021EFB28
+ bl MOD04_021FD43C
+ bl MOD04_021EFB28
ldr r2, _021DEBCC ; =0x02210540
ldr r1, _021DEBD0 ; =0xFFFE8515
str r0, [r2]
mov r0, #9
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
ldr r0, _021DEBD4 ; =0x0221053C
mov r1, #0
ldr r0, [r0]
@@ -6772,22 +6772,22 @@ _021DEBCC: .word 0x02210540
_021DEBD0: .word 0xFFFE8515
_021DEBD4: .word 0x0221053C
- arm_func_start FUN_021DEBD8
-FUN_021DEBD8: ; 0x021DEBD8
- ldr ip, _021DEBE0 ; =FUN_021EAC1C
+ arm_func_start MOD04_021DEBD8
+MOD04_021DEBD8: ; 0x021DEBD8
+ ldr ip, _021DEBE0 ; =MOD04_021EAC1C
bx ip
.align 2, 0
-_021DEBE0: .word FUN_021EAC1C
+_021DEBE0: .word MOD04_021EAC1C
- arm_func_start FUN_021DEBE4
-FUN_021DEBE4: ; 0x021DEBE4
+ arm_func_start MOD04_021DEBE4
+MOD04_021DEBE4: ; 0x021DEBE4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov r7, #0
mov fp, r0
mov sb, r1
mov sl, r7
- bl FUN_021E852C
+ bl MOD04_021E852C
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -6814,7 +6814,7 @@ _021DEC48:
cmp r4, #0
bne _021DED00
mov r0, fp
- bl FUN_021FD3C4
+ bl MOD04_021FD3C4
movs r7, r0
addeq sp, sp, #0xc
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -6827,7 +6827,7 @@ _021DEC48:
ands r0, r1, r0
mov r0, r8
moveq r5, #0
- bl FUN_021EA9D8
+ bl MOD04_021EA9D8
ldr r0, _021DEF54 ; =0x0221053C
ldr r1, [r0]
ldrb r0, [r1, #0x369]
@@ -6845,7 +6845,7 @@ _021DECBC:
mov sl, #1
_021DECC0:
mov r0, r8
- bl FUN_021DF56C
+ bl MOD04_021DF56C
ldr r1, _021DEF54 ; =0x0221053C
ldrb r7, [r7]
ldr r2, _021DEF58 ; =0x02210544
@@ -6878,16 +6878,16 @@ _021DED00:
cmp r4, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl FUN_021E85D4
+ bl MOD04_021E85D4
mov r0, r7
- bl FUN_021E8A50
+ bl MOD04_021E8A50
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021DED58:
mov r0, r4
mov r1, r6
mov r2, r7
- bl FUN_021E8A74
+ bl MOD04_021E8A74
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -6895,7 +6895,7 @@ _021DED58:
beq _021DED90
mov r0, r4
mov r1, r6
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021DED90:
@@ -6928,7 +6928,7 @@ _021DEDBC:
ldrb r1, [r0, #0x361]
add r0, r1, #1
add r1, r1, #3
- bl FUN_021E8830
+ bl MOD04_021E8830
_021DEE04:
ldr r0, _021DEF54 ; =0x0221053C
ldr r1, [r0]
@@ -6938,7 +6938,7 @@ _021DEE04:
ldrb r0, [r1, #0x2d]
cmp r0, #0
bne _021DEE2C
- bl FUN_021E85D4
+ bl MOD04_021E85D4
b _021DEE68
_021DEE2C:
ldrb r0, [r1, #0x361]
@@ -6947,7 +6947,7 @@ _021DEE2C:
ldr r1, _021DEF5C ; =0x0220D334
mov r0, #1
mov r2, #0
- bl FUN_021E1E30
+ bl MOD04_021E1E30
b _021DEE68
_021DEE4C:
ldrb r0, [r1, #0x361]
@@ -6956,7 +6956,7 @@ _021DEE4C:
ldr r1, _021DEF5C ; =0x0220D334
mov r0, #1
mov r2, #0
- bl FUN_021E1E30
+ bl MOD04_021E1E30
_021DEE68:
ldr r0, _021DEF54 ; =0x0221053C
ldr r1, [r0]
@@ -6973,7 +6973,7 @@ _021DEE88:
strb r1, [r2, #0x36a]
ldr r0, [r0]
ldr r0, [r0, #0x364]
- bl FUN_02202308
+ bl MOD04_02202308
_021DEEA4:
ldr r0, _021DEF54 ; =0x0221053C
ldr r6, [r0]
@@ -6986,7 +6986,7 @@ _021DEEA4:
moveq r5, #1
mov r0, r7
movne r5, #0
- bl FUN_021E1F18
+ bl MOD04_021E1F18
str r0, [sp]
ldr r1, [r6, #0x94]
ldr r0, _021DEF54 ; =0x0221053C
@@ -7013,10 +7013,10 @@ _021DEF24:
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl FUN_02200D6C
- bl FUN_021E8DC0
+ bl MOD04_02200D6C
+ bl MOD04_021E8DC0
mov r0, #3
- bl FUN_021DF5CC
+ bl MOD04_021DF5CC
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
@@ -7026,15 +7026,15 @@ _021DEF54: .word 0x0221053C
_021DEF58: .word 0x02210544
_021DEF5C: .word 0x0220D334
- arm_func_start FUN_021DEF60
-FUN_021DEF60: ; 0x021DEF60
- ldr ip, _021DEF68 ; =FUN_021EAC5C
+ arm_func_start MOD04_021DEF60
+MOD04_021DEF60: ; 0x021DEF60
+ ldr ip, _021DEF68 ; =MOD04_021EAC5C
bx ip
.align 2, 0
-_021DEF68: .word FUN_021EAC5C
+_021DEF68: .word MOD04_021EAC5C
- arm_func_start FUN_021DEF6C
-FUN_021DEF6C: ; 0x021DEF6C
+ arm_func_start MOD04_021DEF6C
+MOD04_021DEF6C: ; 0x021DEF6C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
add r4, sp, #0
@@ -7054,7 +7054,7 @@ FUN_021DEF6C: ; 0x021DEF6C
strb r3, [r4, #0xb]
ldr r4, [r5, #8]
mov r6, r0
- bl FUN_021E2068
+ bl MOD04_021E2068
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, pc}
@@ -7120,7 +7120,7 @@ _021DF0A8:
add r2, r4, r0
ldr r1, [r5]
mov r0, r6
- bl FUN_021E8EF4
+ bl MOD04_021E8EF4
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
@@ -7128,8 +7128,8 @@ _021DF0C8: .word 0x0220D338
_021DF0CC: .word 0x0220D340
_021DF0D0: .word 0x0221053C
- arm_func_start FUN_021DF0D4
-FUN_021DF0D4: ; 0x021DF0D4
+ arm_func_start MOD04_021DF0D4
+MOD04_021DF0D4: ; 0x021DF0D4
stmdb sp!, {lr}
sub sp, sp, #4
ldr r1, [r1, #4]
@@ -7146,7 +7146,7 @@ FUN_021DF0D4: ; 0x021DF0D4
addeq sp, sp, #4
ldmeqia sp!, {pc}
mov r0, #3
- bl FUN_021DF414
+ bl MOD04_021DF414
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
@@ -7154,8 +7154,8 @@ _021DF120: .word 0x00000603
_021DF124: .word 0x00000901
_021DF128: .word 0x00000B01
- arm_func_start FUN_021DF12C
-FUN_021DF12C: ; 0x021DF12C
+ arm_func_start MOD04_021DF12C
+MOD04_021DF12C: ; 0x021DF12C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
movs r7, r0
@@ -7170,15 +7170,15 @@ FUN_021DF12C: ; 0x021DF12C
ldr r0, [r0, #0x4f4]
cmp r0, #0
bne _021DF1D8
- bl FUN_021E8DC0
+ bl MOD04_021E8DC0
mov r0, #3
- bl FUN_021DF5CC
+ bl MOD04_021DF5CC
b _021DF1D8
_021DF174:
cmp r7, #0
bne _021DF1D8
mov r0, #6
- bl FUN_021DF5CC
+ bl MOD04_021DF5CC
ldr r1, _021DF2AC ; =0x0221053C
mov r0, #0
ldr r3, [r1]
@@ -7209,11 +7209,11 @@ _021DF1D8:
ldrb r1, [r2, #0x361]
add r0, r2, r0
add r1, r1, #1
- bl FUN_021DF530
+ bl MOD04_021DF530
ldr r1, _021DF2AC ; =0x0221053C
ldr r1, [r1]
str r0, [r1, #0x644]
- bl FUN_021E8780
+ bl MOD04_021E8780
ldr r0, _021DF2AC ; =0x0221053C
ldr r1, [r0]
ldrb r0, [r1, #0x369]
@@ -7256,15 +7256,15 @@ _021DF26C:
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, pc}
mov r0, #3
- bl FUN_021DF5CC
+ bl MOD04_021DF5CC
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_021DF2AC: .word 0x0221053C
_021DF2B0: .word 0x00000624
- arm_func_start FUN_021DF2B4
-FUN_021DF2B4: ; 0x021DF2B4
+ arm_func_start MOD04_021DF2B4
+MOD04_021DF2B4: ; 0x021DF2B4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r2, _021DF300 ; =0x0221053C
@@ -7274,7 +7274,7 @@ FUN_021DF2B4: ; 0x021DF2B4
ldr r0, [r0, #0x28]
cmp r0, #4
beq _021DF2DC
- bl FUN_021DF5CC
+ bl MOD04_021DF5CC
_021DF2DC:
ldr r1, _021DF300 ; =0x0221053C
mov r0, r5
@@ -7288,8 +7288,8 @@ _021DF2DC:
.align 2, 0
_021DF300: .word 0x0221053C
- arm_func_start FUN_021DF304
-FUN_021DF304: ; 0x021DF304
+ arm_func_start MOD04_021DF304
+MOD04_021DF304: ; 0x021DF304
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r5, r0
@@ -7299,12 +7299,12 @@ FUN_021DF304: ; 0x021DF304
mov r0, #3
ldr r1, [r1]
str r4, [r1, #0x64]
- bl FUN_021DF5CC
- bl FUN_021E1ED4
+ bl MOD04_021DF5CC
+ bl MOD04_021E1ED4
b _021DF33C
_021DF334:
mov r0, #0
- bl FUN_021DF5CC
+ bl MOD04_021DF5CC
_021DF33C:
ldr r0, _021DF36C ; =0x0221053C
ldr r0, [r0]
@@ -7321,8 +7321,8 @@ _021DF33C:
.align 2, 0
_021DF36C: .word 0x0221053C
- arm_func_start FUN_021DF370
-FUN_021DF370: ; 0x021DF370
+ arm_func_start MOD04_021DF370
+MOD04_021DF370: ; 0x021DF370
stmdb sp!, {r4, lr}
movs r4, r0
moveq r0, #0
@@ -7368,15 +7368,15 @@ _021DF3F4:
beq _021DF408
ldr r1, _021DF410 ; =0xFFFEFA48
add r1, r2, r1
- bl FUN_021E0EAC
+ bl MOD04_021E0EAC
_021DF408:
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_021DF410: .word 0xFFFEFA48
- arm_func_start FUN_021DF414
-FUN_021DF414: ; 0x021DF414
+ arm_func_start MOD04_021DF414
+MOD04_021DF414: ; 0x021DF414
stmdb sp!, {r4, r5, r6, lr}
movs r6, r0
moveq r0, #0
@@ -7424,7 +7424,7 @@ _021DF4A0:
mov r0, r4
add r5, r5, r1
mov r1, r5
- bl FUN_021E0EAC
+ bl MOD04_021E0EAC
b _021DF508
_021DF4B8:
ldr r1, [r1, #0x9c]
@@ -7434,14 +7434,14 @@ _021DF4B8:
bge _021DF508
mov r0, r4
mov r1, r5
- bl FUN_021E0EAC
+ bl MOD04_021E0EAC
b _021DF508
_021DF4DC:
ldr r1, _021DF524 ; =0xFFFEC398
mov r0, r4
add r5, r5, r1
mov r1, r5
- bl FUN_021E8E08
+ bl MOD04_021E8E08
b _021DF508
_021DF4F4:
ldr r0, _021DF528 ; =0xFFFEEAA8
@@ -7453,7 +7453,7 @@ _021DF500:
_021DF508:
mov r0, r4
mov r1, r5
- bl FUN_021E2114
+ bl MOD04_021E2114
mov r0, r6
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
@@ -7463,8 +7463,8 @@ _021DF524: .word 0xFFFEC398
_021DF528: .word 0xFFFEEAA8
_021DF52C: .word 0xFFFE9C88
- arm_func_start FUN_021DF530
-FUN_021DF530: ; 0x021DF530
+ arm_func_start MOD04_021DF530
+MOD04_021DF530: ; 0x021DF530
stmdb sp!, {lr}
sub sp, sp, #4
mov lr, #0
@@ -7483,13 +7483,13 @@ _021DF560:
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021DF56C
-FUN_021DF56C: ; 0x021DF56C
+ arm_func_start MOD04_021DF56C
+MOD04_021DF56C: ; 0x021DF56C
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r4, r0
add r0, sp, #0
- bl FUN_021E874C
+ bl MOD04_021E874C
mov r1, r0
cmp r1, #0
mov r0, #0
@@ -7508,12 +7508,12 @@ _021DF5B0:
addeq sp, sp, #8
moveq r0, #0
ldmeqia sp!, {r4, pc}
- bl FUN_021E8830
+ bl MOD04_021E8830
add sp, sp, #8
ldmia sp!, {r4, pc}
- arm_func_start FUN_021DF5CC
-FUN_021DF5CC: ; 0x021DF5CC
+ arm_func_start MOD04_021DF5CC
+MOD04_021DF5CC: ; 0x021DF5CC
ldr r1, _021DF5E8 ; =0x0221053C
ldr r3, [r1]
ldr r2, [r3, #0x24]
@@ -7524,12 +7524,12 @@ FUN_021DF5CC: ; 0x021DF5CC
.align 2, 0
_021DF5E8: .word 0x0221053C
- arm_func_start FUN_021DF5EC
-FUN_021DF5EC: ; 0x021DF5EC
+ arm_func_start MOD04_021DF5EC
+MOD04_021DF5EC: ; 0x021DF5EC
bx lr
- arm_func_start FUN_021DF5F0
-FUN_021DF5F0: ; 0x021DF5F0
+ arm_func_start MOD04_021DF5F0
+MOD04_021DF5F0: ; 0x021DF5F0
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, #0
@@ -7538,7 +7538,7 @@ _021DF600:
ldr r0, [r4, r5, lsl #2]
cmp r0, #0
beq _021DF620
- bl FUN_021FD3C4
+ bl MOD04_021FD3C4
ldrb r0, [r0, #1]
cmp r6, r0
moveq r0, #1
@@ -7552,16 +7552,16 @@ _021DF620:
.align 2, 0
_021DF634: .word 0x02210544
- arm_func_start FUN_021DF638
-FUN_021DF638: ; 0x021DF638
+ arm_func_start MOD04_021DF638
+MOD04_021DF638: ; 0x021DF638
ldr r1, _021DF644 ; =0x022105C4
add r0, r1, r0, lsl #3
bx lr
.align 2, 0
_021DF644: .word 0x022105C4
- arm_func_start FUN_021DF648
-FUN_021DF648: ; 0x021DF648
+ arm_func_start MOD04_021DF648
+MOD04_021DF648: ; 0x021DF648
stmdb sp!, {lr}
sub sp, sp, #4
cmp r1, #0
@@ -7587,24 +7587,24 @@ _021DF684:
ldr r0, [r0]
add r0, r0, ip
ldrb r0, [r0, #0x624]
- bl FUN_021DF760
- bl FUN_021DF730
- bl FUN_021DF6BC
+ bl MOD04_021DF760
+ bl MOD04_021DF730
+ bl MOD04_021DF6BC
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
_021DF6B8: .word 0x0221053C
- arm_func_start FUN_021DF6BC
-FUN_021DF6BC: ; 0x021DF6BC
+ arm_func_start MOD04_021DF6BC
+MOD04_021DF6BC: ; 0x021DF6BC
ldr r1, _021DF6C8 ; =0x02210544
add r0, r1, r0, lsl #2
bx lr
.align 2, 0
_021DF6C8: .word 0x02210544
- arm_func_start FUN_021DF6CC
-FUN_021DF6CC: ; 0x021DF6CC
+ arm_func_start MOD04_021DF6CC
+MOD04_021DF6CC: ; 0x021DF6CC
stmdb sp!, {lr}
sub sp, sp, #4
ldr r1, _021DF6FC ; =0x02210544
@@ -7621,8 +7621,8 @@ FUN_021DF6CC: ; 0x021DF6CC
_021DF6FC: .word 0x02210544
_021DF700: .word 0x022105C4
- arm_func_start FUN_021DF704
-FUN_021DF704: ; 0x021DF704
+ arm_func_start MOD04_021DF704
+MOD04_021DF704: ; 0x021DF704
ldr r2, _021DF72C ; =0x02210544
mov r0, #0
_021DF70C:
@@ -7637,26 +7637,26 @@ _021DF70C:
.align 2, 0
_021DF72C: .word 0x02210544
- arm_func_start FUN_021DF730
-FUN_021DF730: ; 0x021DF730
+ arm_func_start MOD04_021DF730
+MOD04_021DF730: ; 0x021DF730
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021FD3C4
+ bl MOD04_021FD3C4
ldrb r0, [r0]
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021DF748
-FUN_021DF748: ; 0x021DF748
+ arm_func_start MOD04_021DF748
+MOD04_021DF748: ; 0x021DF748
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021FD3C4
+ bl MOD04_021FD3C4
ldrb r0, [r0, #1]
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021DF760
-FUN_021DF760: ; 0x021DF760
+ arm_func_start MOD04_021DF760
+MOD04_021DF760: ; 0x021DF760
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _021DF7BC ; =0x0221053C
mov r6, r0
@@ -7670,7 +7670,7 @@ _021DF784:
ldr r0, [r4, r5, lsl #2]
cmp r0, #0
beq _021DF7A8
- bl FUN_021FD3C4
+ bl MOD04_021FD3C4
ldrb r0, [r0, #1]
cmp r6, r0
ldreq r0, _021DF7C0 ; =0x02210544
@@ -7686,8 +7686,8 @@ _021DF7A8:
_021DF7BC: .word 0x0221053C
_021DF7C0: .word 0x02210544
- arm_func_start FUN_021DF7C4
-FUN_021DF7C4: ; 0x021DF7C4
+ arm_func_start MOD04_021DF7C4
+MOD04_021DF7C4: ; 0x021DF7C4
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr r0, _021DF87C ; =0x0221053C
@@ -7698,7 +7698,7 @@ FUN_021DF7C4: ; 0x021DF7C4
movne r0, #0
ldmneia sp!, {r4, pc}
mov r0, #0x4000
- bl FUN_021DE8C8
+ bl MOD04_021DE8C8
add r0, r0, #0xc000
mov r1, r0, lsl #0x10
ldr r3, _021DF87C ; =0x0221053C
@@ -7706,42 +7706,42 @@ FUN_021DF7C4: ; 0x021DF7C4
mov r2, r0
mov r1, r1, lsr #0x10
ldr r4, [r3]
- bl FUN_021FFEB0
- ldr r1, _021DF880 ; =FUN_021DEB90
+ bl MOD04_021FFEB0
+ ldr r1, _021DF880 ; =MOD04_021DEB90
ldr r2, _021DF87C ; =0x0221053C
str r1, [sp]
mov r1, r0
ldr r0, [r2]
ldr r2, [r4, #0x14]
ldr r3, [r4, #0x18]
- bl FUN_021FD71C
+ bl MOD04_021FD71C
mov r4, r0
- bl FUN_021DF370
+ bl MOD04_021DF370
cmp r0, #0
addne sp, sp, #8
movne r0, r4
ldmneia sp!, {r4, pc}
ldr r0, _021DF87C ; =0x0221053C
- ldr r1, _021DF884 ; =FUN_021E9204
+ ldr r1, _021DF884 ; =MOD04_021E9204
ldr r0, [r0]
ldr r0, [r0]
- bl FUN_021FD6C8
+ bl MOD04_021FD6C8
ldr r0, _021DF87C ; =0x0221053C
- ldr r1, _021DF888 ; =FUN_021E9464
+ ldr r1, _021DF888 ; =MOD04_021E9464
ldr r0, [r0]
ldr r0, [r0]
- bl FUN_021FD434
+ bl MOD04_021FD434
mov r0, r4
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_021DF87C: .word 0x0221053C
-_021DF880: .word FUN_021DEB90
-_021DF884: .word FUN_021E9204
-_021DF888: .word FUN_021E9464
+_021DF880: .word MOD04_021DEB90
+_021DF884: .word MOD04_021E9204
+_021DF888: .word MOD04_021E9464
- arm_func_start FUN_021DF88C
-FUN_021DF88C: ; 0x021DF88C
+ arm_func_start MOD04_021DF88C
+MOD04_021DF88C: ; 0x021DF88C
ldr r0, _021DF8A4 ; =0x0221053C
ldr r0, [r0]
cmp r0, #0
@@ -7751,8 +7751,8 @@ FUN_021DF88C: ; 0x021DF88C
.align 2, 0
_021DF8A4: .word 0x0221053C
- arm_func_start FUN_021DF8A8
-FUN_021DF8A8: ; 0x021DF8A8
+ arm_func_start MOD04_021DF8A8
+MOD04_021DF8A8: ; 0x021DF8A8
stmdb sp!, {lr}
sub sp, sp, #4
ldr r1, _021DF8F0 ; =0x0221053C
@@ -7768,14 +7768,14 @@ FUN_021DF8A8: ; 0x021DF8A8
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {pc}
- bl FUN_021DF5F0
+ bl MOD04_021DF5F0
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
_021DF8F0: .word 0x0221053C
- arm_func_start FUN_021DF8F4
-FUN_021DF8F4: ; 0x021DF8F4
+ arm_func_start MOD04_021DF8F4
+MOD04_021DF8F4: ; 0x021DF8F4
stmdb sp!, {lr}
sub sp, sp, #4
ldr r2, _021DF954 ; =0x0221053C
@@ -7795,19 +7795,19 @@ FUN_021DF8F4: ; 0x021DF8F4
cmp r1, #3
bne _021DF948
_021DF93C:
- bl FUN_021E86A4
+ bl MOD04_021E86A4
add sp, sp, #4
ldmfd sp!, {pc}
_021DF948:
- bl FUN_021E874C
+ bl MOD04_021E874C
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
_021DF954: .word 0x0221053C
_021DF958: .word 0x00000624
- arm_func_start FUN_021DF95C
-FUN_021DF95C: ; 0x021DF95C
+ arm_func_start MOD04_021DF95C
+MOD04_021DF95C: ; 0x021DF95C
ldr r0, _021DF974 ; =0x0221053C
ldr r0, [r0]
cmp r0, #0
@@ -7817,8 +7817,8 @@ FUN_021DF95C: ; 0x021DF95C
.align 2, 0
_021DF974: .word 0x0221053C
- arm_func_start FUN_021DF978
-FUN_021DF978: ; 0x021DF978
+ arm_func_start MOD04_021DF978
+MOD04_021DF978: ; 0x021DF978
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021DF9D0 ; =0x0221053C
@@ -7834,27 +7834,27 @@ FUN_021DF978: ; 0x021DF978
cmp r0, #3
bne _021DF9C0
_021DF9B0:
- bl FUN_021E87D8
+ bl MOD04_021E87D8
add sp, sp, #4
add r0, r0, #1
ldmfd sp!, {pc}
_021DF9C0:
- bl FUN_021E8804
+ bl MOD04_021E8804
add r0, r0, #1
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
_021DF9D0: .word 0x0221053C
- arm_func_start FUN_021DF9D4
-FUN_021DF9D4: ; 0x021DF9D4
+ arm_func_start MOD04_021DF9D4
+MOD04_021DF9D4: ; 0x021DF9D4
stmdb sp!, {r4, lr}
ldr r1, _021DFA3C ; =0x0221053C
mov r4, r0
ldr r0, [r1]
cmp r0, #0
beq _021DFA14
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
bne _021DFA14
ldr r0, _021DFA3C ; =0x0221053C
@@ -7869,25 +7869,25 @@ _021DFA14:
ldmia sp!, {r4, pc}
_021DFA1C:
mov r0, r4
- bl FUN_021DF760
+ bl MOD04_021DF760
cmp r0, #0
mvneq r0, #1
ldmeqia sp!, {r4, pc}
- bl FUN_021FD488
+ bl MOD04_021FD488
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_021DFA3C: .word 0x0221053C
- arm_func_start FUN_021DFA40
-FUN_021DFA40: ; 0x021DFA40
+ arm_func_start MOD04_021DFA40
+MOD04_021DFA40: ; 0x021DFA40
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021DFAF0 ; =0x0221053C
ldr r0, [r0]
cmp r0, #0
beq _021DFA80
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
bne _021DFA80
ldr r0, _021DFAF0 ; =0x0221053C
@@ -7908,10 +7908,10 @@ _021DFA8C:
ldr r1, _021DFAF4 ; =0x0220D334
mov r0, #1
mov r2, #0
- bl FUN_021E1E30
- bl FUN_02200D6C
+ bl MOD04_021E1E30
+ bl MOD04_02200D6C
mov r0, #3
- bl FUN_021DF5CC
+ bl MOD04_021DF5CC
add sp, sp, #4
mov r0, #1
ldmfd sp!, {pc}
@@ -7921,7 +7921,7 @@ _021DFAC0:
strb r1, [r2, #0x2d]
ldr r0, [r0]
ldr r0, [r0]
- bl FUN_021FD45C
+ bl MOD04_021FD45C
ldr r1, _021DFAF0 ; =0x0221053C
mov r0, #0
ldr r1, [r1]
@@ -7932,8 +7932,8 @@ _021DFAC0:
_021DFAF0: .word 0x0221053C
_021DFAF4: .word 0x0220D334
- arm_func_start FUN_021DFAF8
-FUN_021DFAF8: ; 0x021DFAF8
+ arm_func_start MOD04_021DFAF8
+MOD04_021DFAF8: ; 0x021DFAF8
ldr r2, _021DFB1C ; =0x0221053C
ldr r3, [r2]
cmp r3, #0
@@ -7946,8 +7946,8 @@ FUN_021DFAF8: ; 0x021DFAF8
.align 2, 0
_021DFB1C: .word 0x0221053C
- arm_func_start FUN_021DFB20
-FUN_021DFB20: ; 0x021DFB20
+ arm_func_start MOD04_021DFB20
+MOD04_021DFB20: ; 0x021DFB20
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x224
mvn ip, #0
@@ -7956,7 +7956,7 @@ FUN_021DFB20: ; 0x021DFB20
mov r4, r2
mov r5, r3
str ip, [sp, #8]
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
bne _021DFB60
ldr r0, _021DFD04 ; =0x0221053C
@@ -7969,23 +7969,23 @@ _021DFB60:
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
_021DFB6C:
- bl FUN_021DF6CC
+ bl MOD04_021DF6CC
ldr r1, _021DFD04 ; =0x0221053C
mov r0, #5
ldr r2, [r1]
str r6, [r2, #0x88]
ldr r1, [r1]
str r4, [r1, #0x8c]
- bl FUN_021DF5CC
+ bl MOD04_021DF5CC
mov r0, r7
- bl FUN_021E1F84
+ bl MOD04_021E1F84
movs r4, r0
beq _021DFBB8
ldr r0, _021DFD04 ; =0x0221053C
mov r1, r4
ldr r0, [r0]
add r0, r0, #0x1c
- bl FUN_021F05F4
+ bl MOD04_021F05F4
cmp r0, #0
bne _021DFBC0
_021DFBB8:
@@ -7997,13 +7997,13 @@ _021DFBC0:
ldr r0, [r0]
mov r1, r4
add r0, r0, #0x1c
- bl FUN_021F0664
+ bl MOD04_021F0664
ldr r0, _021DFD04 ; =0x0221053C
ldr r1, [sp, #8]
ldr r0, [r0]
add r2, sp, #0x10
add r0, r0, #0x1c
- bl FUN_021F06E4
+ bl MOD04_021F06E4
ldr r0, [sp, #0x14]
cmp r0, #6
movne r5, #0xb
@@ -8014,7 +8014,7 @@ _021DFBC0:
add r2, sp, #0x18
mov r3, #0x2f
strb r6, [sp, #0xc]
- bl FUN_021DE9F4
+ bl MOD04_021DE9F4
add r0, sp, #0xc
mov r1, #0
mov r2, #0xa
@@ -8024,7 +8024,7 @@ _021DFBC0:
add r1, sp, #0xc
add r2, sp, #0x18
mov r3, #0x2f
- bl FUN_021DE9F4
+ bl MOD04_021DE9F4
add r0, sp, #0xc
mov r1, #0
mov r2, #0xa
@@ -8034,19 +8034,19 @@ _021DFBC0:
moveq r5, #0xd
beq _021DFC8C
ldr r6, [sp, #0x238]
- ldr r1, _021DFD10 ; =FUN_021DF12C
+ ldr r1, _021DFD10 ; =MOD04_021DF12C
mov r0, r4
mov r3, r5
mov r2, #0
str r6, [sp]
- bl FUN_021E9FD0
+ bl MOD04_021E9FD0
add sp, sp, #0x224
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, pc}
_021DFC8C:
mov r0, r5
mov r1, #0
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
ldr r0, _021DFD04 ; =0x0221053C
mov r1, #0
ldr r4, [r0]
@@ -8066,11 +8066,11 @@ _021DFC8C:
cmp r0, #5
bne _021DFCF8
mov r0, #3
- bl FUN_021DF5CC
+ bl MOD04_021DF5CC
ldr r1, _021DFD14 ; =0x0220D334
mov r0, #1
mov r2, #0
- bl FUN_021E1E30
+ bl MOD04_021E1E30
_021DFCF8:
mov r0, #1
add sp, sp, #0x224
@@ -8079,18 +8079,18 @@ _021DFCF8:
_021DFD04: .word 0x0221053C
_021DFD08: .word 0x0220D344
_021DFD0C: .word 0x0220D348
-_021DFD10: .word FUN_021DF12C
+_021DFD10: .word MOD04_021DF12C
_021DFD14: .word 0x0220D334
- arm_func_start FUN_021DFD18
-FUN_021DFD18: ; 0x021DFD18
+ arm_func_start MOD04_021DFD18
+MOD04_021DFD18: ; 0x021DFD18
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
bne _021DFD50
ldr r0, _021DFDB4 ; =0x0221053C
@@ -8103,7 +8103,7 @@ _021DFD50:
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
_021DFD5C:
- bl FUN_021DF6CC
+ bl MOD04_021DF6CC
ldr r1, _021DFDB4 ; =0x0221053C
mov r2, #0
ldr r3, [r1]
@@ -8113,30 +8113,30 @@ _021DFD5C:
str r5, [r3, #0x8c]
ldr r1, [r1]
strb r2, [r1, #0x2c]
- bl FUN_021DF5CC
+ bl MOD04_021DF5CC
sub r0, r7, #1
ldr r5, [sp, #0x18]
- ldr r1, _021DFDB8 ; =FUN_021DF12C
+ ldr r1, _021DFDB8 ; =MOD04_021DF12C
mov r3, r4
and r0, r0, #0xff
mov r2, #0
str r5, [sp]
- bl FUN_021EA138
+ bl MOD04_021EA138
mov r0, #1
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_021DFDB4: .word 0x0221053C
-_021DFDB8: .word FUN_021DF12C
+_021DFDB8: .word MOD04_021DF12C
- arm_func_start FUN_021DFDBC
-FUN_021DFDBC: ; 0x021DFDBC
+ arm_func_start MOD04_021DFDBC
+MOD04_021DFDBC: ; 0x021DFDBC
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x10
mov r6, r1
mov r5, r2
mov r4, r3
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
bne _021DFDF8
ldr r0, _021DFE5C ; =0x0221053C
@@ -8155,7 +8155,7 @@ _021DFE04:
ldr r1, [r0]
mov r0, #4
str r5, [r1, #0x7c]
- bl FUN_021DF5CC
+ bl MOD04_021DF5CC
ldr r0, _021DFE5C ; =0x0221053C
ldr r1, [sp, #0x20]
ldr r3, [r0]
@@ -8164,28 +8164,28 @@ _021DFE04:
str r1, [sp, #4]
ldr r4, [sp, #0x28]
str r0, [sp, #8]
- ldr r2, _021DFE60 ; =FUN_021DF2B4
+ ldr r2, _021DFE60 ; =MOD04_021DF2B4
add r0, r3, #0xe0
add r1, r3, #0x1e0
mov r3, #0
str r4, [sp, #0xc]
- bl FUN_021E2174
+ bl MOD04_021E2174
mov r0, #1
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021DFE5C: .word 0x0221053C
-_021DFE60: .word FUN_021DF2B4
+_021DFE60: .word MOD04_021DF2B4
- arm_func_start FUN_021DFE64
-FUN_021DFE64: ; 0x021DFE64
+ arm_func_start MOD04_021DFE64
+MOD04_021DFE64: ; 0x021DFE64
stmdb sp!, {r4, r5, r6, lr}
movs r4, r0
mov r6, r2
mov r5, r3
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
bne _021DFE9C
ldr r0, _021DFF6C ; =0x0221053C
@@ -8215,12 +8215,12 @@ _021DFECC:
mov r2, #0x34
bl MIi_CpuClear16
mov r0, r4
- bl FUN_021DE89C
+ bl MOD04_021DE89C
cmp r0, #0x19
movhi r5, #0x19
bhi _021DFF00
mov r0, r4
- bl FUN_021DE89C
+ bl MOD04_021DE89C
mov r5, r0
_021DFF00:
ldr r1, _021DFF6C ; =0x0221053C
@@ -8235,35 +8235,35 @@ _021DFF18:
ldr r0, [r0]
add r0, r0, r5, lsl #1
strh r1, [r0, #0x2e]
- bl FUN_021DDC1C
+ bl MOD04_021DDC1C
cmp r0, #4
beq _021DFF4C
ldr r1, _021DFF70 ; =0xFFFF1596
mov r0, #2
- bl FUN_021E0EAC
+ bl MOD04_021E0EAC
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
_021DFF4C:
mov r0, #1
- bl FUN_021DF5CC
+ bl MOD04_021DF5CC
ldr r0, _021DFF6C ; =0x0221053C
ldr r0, [r0]
ldr r0, [r0, #0x68]
- bl FUN_021EE898
+ bl MOD04_021EE898
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021DFF6C: .word 0x0221053C
_021DFF70: .word 0xFFFF1596
- arm_func_start FUN_021DFF74
-FUN_021DFF74: ; 0x021DFF74
+ arm_func_start MOD04_021DFF74
+MOD04_021DFF74: ; 0x021DFF74
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021DD984
+ bl MOD04_021DD984
cmp r0, #0
beq _021DFF8C
- bl FUN_021DF5EC
+ bl MOD04_021DF5EC
_021DFF8C:
ldr r0, _021E01E4 ; =0x0221053C
ldr r0, [r0]
@@ -8274,7 +8274,7 @@ _021DFF8C:
cmp r0, #0
addeq sp, sp, #4
ldmeqia sp!, {pc}
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {pc}
@@ -8293,7 +8293,7 @@ _021DFFD8: ; jump table
b _021E013C ; case 5
b _021E014C ; case 6
_021DFFF4:
- bl FUN_021EE6A0
+ bl MOD04_021EE6A0
cmp r0, #1
beq _021E0014
cmp r0, #2
@@ -8307,87 +8307,87 @@ _021E0014:
ldr r0, [r0]
ldr r1, [r0, #0xa0]
add r0, r0, #0x1c
- bl FUN_021F0F94
- bl FUN_021DF414
+ bl MOD04_021F0F94
+ bl MOD04_021DF414
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {pc}
ldr r0, _021E01E4 ; =0x0221053C
mov r1, #0
ldr r0, [r0]
- ldr r2, _021E01E8 ; =FUN_021DF0D4
+ ldr r2, _021E01E8 ; =MOD04_021DF0D4
mov r3, r1
add r0, r0, #0x1c
- bl FUN_021F0EB0
- bl FUN_021DF414
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {pc}
ldr r0, _021E01E4 ; =0x0221053C
- ldr r2, _021E01EC ; =FUN_021DEF6C
+ ldr r2, _021E01EC ; =MOD04_021DEF6C
ldr r0, [r0]
mov r1, #3
add r0, r0, #0x1c
mov r3, #0
- bl FUN_021F0EB0
- bl FUN_021DF414
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {pc}
ldr r0, _021E01E4 ; =0x0221053C
- ldr r2, _021E01F0 ; =FUN_021E20C8
+ ldr r2, _021E01F0 ; =MOD04_021E20C8
ldr r0, [r0]
mov r1, #1
add r0, r0, #0x1c
mov r3, #0
- bl FUN_021F0EB0
- bl FUN_021DF414
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {pc}
ldr r0, _021E01E4 ; =0x0221053C
- ldr r2, _021E01F4 ; =FUN_021E1FE4
+ ldr r2, _021E01F4 ; =MOD04_021E1FE4
ldr r0, [r0]
mov r1, #2
add r0, r0, #0x1c
mov r3, #0
- bl FUN_021F0EB0
- bl FUN_021DF414
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {pc}
mov r0, #2
- bl FUN_021DF5CC
- bl FUN_021E1034
+ bl MOD04_021DF5CC
+ bl MOD04_021E1034
b _021E0194
_021E00FC:
ldr r1, _021E01F8 ; =0xFFFFB172
mov r0, #3
- bl FUN_021E0EAC
+ bl MOD04_021E0EAC
add sp, sp, #4
ldmfd sp!, {pc}
_021E0110:
ldr r1, _021E01FC ; =0xFFFFB17B
mov r0, #4
- bl FUN_021E0EAC
+ bl MOD04_021E0EAC
add sp, sp, #4
ldmfd sp!, {pc}
_021E0124:
- bl FUN_021E0F1C
+ bl MOD04_021E0F1C
b _021E0194
_021E012C:
- bl FUN_021E2228
+ bl MOD04_021E2228
mov r0, #0
- bl FUN_021E9568
+ bl MOD04_021E9568
b _021E0194
_021E013C:
mov r0, #1
- bl FUN_021E9568
- bl FUN_021E2228
+ bl MOD04_021E9568
+ bl MOD04_021E2228
b _021E0194
_021E014C:
- bl FUN_021EAA64
- bl FUN_021E2228
+ bl MOD04_021EAA64
+ bl MOD04_021E2228
ldr r0, _021E01E4 ; =0x0221053C
ldr r1, [r0]
ldrb r0, [r1, #0x369]
@@ -8398,14 +8398,14 @@ _021E014C:
bne _021E0180
_021E0174:
mov r0, #1
- bl FUN_021E9568
+ bl MOD04_021E9568
b _021E0194
_021E0180:
ldr r0, [r1]
cmp r0, #0
beq _021E0194
mov r0, #0
- bl FUN_021E9568
+ bl MOD04_021E9568
_021E0194:
ldr r0, _021E01E4 ; =0x0221053C
ldr r1, [r0]
@@ -8416,7 +8416,7 @@ _021E0194:
ldr r0, [r1, #0x364]
cmp r0, #0
beq _021E01CC
- bl FUN_02202280
+ bl MOD04_02202280
ldr r0, _021E01E4 ; =0x0221053C
mov r1, #0
ldr r0, [r0]
@@ -8430,15 +8430,15 @@ _021E01CC:
ldmfd sp!, {pc}
.align 2, 0
_021E01E4: .word 0x0221053C
-_021E01E8: .word FUN_021DF0D4
-_021E01EC: .word FUN_021DEF6C
-_021E01F0: .word FUN_021E20C8
-_021E01F4: .word FUN_021E1FE4
+_021E01E8: .word MOD04_021DF0D4
+_021E01EC: .word MOD04_021DEF6C
+_021E01F0: .word MOD04_021E20C8
+_021E01F4: .word MOD04_021E1FE4
_021E01F8: .word 0xFFFFB172
_021E01FC: .word 0xFFFFB17B
- arm_func_start FUN_021E0200
-FUN_021E0200: ; 0x021E0200
+ arm_func_start MOD04_021E0200
+MOD04_021E0200: ; 0x021E0200
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021E0370 ; =0x0221053C
@@ -8449,7 +8449,7 @@ FUN_021E0200: ; 0x021E0200
ldr r0, [r0, #0x364]
cmp r0, #0
beq _021E023C
- bl FUN_02202280
+ bl MOD04_02202280
ldr r0, _021E0370 ; =0x0221053C
mov r1, #0
ldr r0, [r0]
@@ -8463,14 +8463,14 @@ _021E023C:
ldr r0, [r0, #0x438]
cmp r0, #0
beq _021E0270
- bl FUN_02203E80
+ bl MOD04_02203E80
ldr r0, _021E0370 ; =0x0221053C
mov r1, #0
ldr r0, [r0]
str r1, [r0, #0x438]
_021E0270:
- bl FUN_02200D6C
- bl FUN_021FBE7C
+ bl MOD04_02200D6C
+ bl MOD04_021FBE7C
ldr r0, _021E0370 ; =0x0221053C
ldr ip, [r0]
ldr r0, [ip, #0x1c]
@@ -8480,51 +8480,51 @@ _021E0270:
mov r2, r1
mov r3, r1
add r0, ip, #0x1c
- bl FUN_021F0EB0
+ bl MOD04_021F0EB0
ldr r0, _021E0370 ; =0x0221053C
mov r2, #0
ldr r0, [r0]
mov r3, r2
add r0, r0, #0x1c
mov r1, #3
- bl FUN_021F0EB0
+ bl MOD04_021F0EB0
ldr r0, _021E0370 ; =0x0221053C
mov r2, #0
ldr r0, [r0]
mov r3, r2
add r0, r0, #0x1c
mov r1, #1
- bl FUN_021F0EB0
+ bl MOD04_021F0EB0
ldr r0, _021E0370 ; =0x0221053C
mov r2, #0
ldr r0, [r0]
mov r1, #2
add r0, r0, #0x1c
mov r3, r2
- bl FUN_021F0EB0
+ bl MOD04_021F0EB0
ldr r0, _021E0370 ; =0x0221053C
ldr r0, [r0]
add r0, r0, #0x1c
- bl FUN_021F0F18
+ bl MOD04_021F0F18
ldr r0, _021E0370 ; =0x0221053C
ldr r0, [r0]
add r0, r0, #0x1c
- bl FUN_021F0F64
+ bl MOD04_021F0F64
mov r1, #0
ldr r0, _021E0370 ; =0x0221053C
ldr r0, [r0]
str r1, [r0, #0x1c]
_021E0324:
- bl FUN_021E0E48
- bl FUN_021E1D90
- bl FUN_021E854C
- bl FUN_021EA9C4
+ bl MOD04_021E0E48
+ bl MOD04_021E1D90
+ bl MOD04_021E854C
+ bl MOD04_021EA9C4
ldr r0, _021E0370 ; =0x0221053C
ldr r0, [r0]
ldr r0, [r0]
cmp r0, #0
beq _021E035C
- bl FUN_021FD704
+ bl MOD04_021FD704
ldr r0, _021E0370 ; =0x0221053C
mov r1, #0
ldr r0, [r0]
@@ -8538,8 +8538,8 @@ _021E035C:
.align 2, 0
_021E0370: .word 0x0221053C
- arm_func_start FUN_021E0374
-FUN_021E0374: ; 0x021E0374
+ arm_func_start MOD04_021E0374
+MOD04_021E0374: ; 0x021E0374
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x10
ldr ip, _021E05D8 ; =0x0221053C
@@ -8547,22 +8547,22 @@ FUN_021E0374: ; 0x021E0374
mov r5, r2
mov r4, r3
str r0, [ip]
- bl FUN_021DD6F0
+ bl MOD04_021DD6F0
ldr r0, _021E05D8 ; =0x0221053C
mov r2, #0
ldr r1, [r0]
- ldr r3, _021E05DC ; =FUN_021E8F80
+ ldr r3, _021E05DC ; =MOD04_021E8F80
str r2, [r1]
ldr r1, [r0]
- ldr r2, _021E05E0 ; =FUN_021DEF60
+ ldr r2, _021E05E0 ; =MOD04_021DEF60
str r3, [r1, #4]
ldr r1, [r0]
ldr ip, [sp, #0x24]
str r2, [r1, #8]
cmp ip, #0
ldr r2, [r0]
- ldr r3, _021E05E4 ; =FUN_021DEBE4
- ldr r1, _021E05E8 ; =FUN_021DEBD8
+ ldr r3, _021E05E4 ; =MOD04_021DEBE4
+ ldr r1, _021E05E8 ; =MOD04_021DEBD8
str r3, [r2, #0xc]
ldr r0, [r0]
ldr r3, [sp, #0x28]
@@ -8617,12 +8617,12 @@ FUN_021E0374: ; 0x021E0374
str r0, [r2, #0x90]
ldr r1, [r1]
str r0, [r1, #0x94]
- bl FUN_021DF6CC
+ bl MOD04_021DF6CC
ldr r0, _021E05D8 ; =0x0221053C
mov r3, r5
ldr r2, [r0]
ldr r1, [r6, #0x24]
- ldr r0, _021E05F4 ; =FUN_021DF304
+ ldr r0, _021E05F4 ; =MOD04_021DF304
str r1, [sp]
add r1, r2, #0x2e
str r1, [sp, #4]
@@ -8632,7 +8632,7 @@ FUN_021E0374: ; 0x021E0374
mov r1, r6
add r2, r2, #0x1c
str r5, [sp, #0xc]
- bl FUN_021E1074
+ bl MOD04_021E1074
ldr r0, _021E05D8 ; =0x0221053C
ldr r2, [sp, #0x30]
ldr r5, [r0]
@@ -8641,7 +8641,7 @@ FUN_021E0374: ; 0x021E0374
add r0, r5, #0x2f8
add r1, r5, #0x1c
add r2, r5, #0x2e
- bl FUN_021E234C
+ bl MOD04_021E234C
ldr r0, _021E05D8 ; =0x0221053C
ldr r1, _021E05EC ; =0x02210F94
ldr r2, [r0]
@@ -8655,12 +8655,12 @@ FUN_021E0374: ; 0x021E0374
add r0, r2, #0x354
add r1, r2, #0x1c
add r3, r2, #4
- bl FUN_021EA368
+ bl MOD04_021EA368
ldr r1, _021E05D8 ; =0x0221053C
ldr r0, _021E05F8 ; =0x000007D8
ldr r1, [r1]
add r0, r1, r0
- bl FUN_021EACB4
+ bl MOD04_021EACB4
mov r0, r4
bl strlen
cmp r0, #0x100
@@ -8697,17 +8697,17 @@ _021E05B4:
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021E05D8: .word 0x0221053C
-_021E05DC: .word FUN_021E8F80
-_021E05E0: .word FUN_021DEF60
-_021E05E4: .word FUN_021DEBE4
-_021E05E8: .word FUN_021DEBD8
+_021E05DC: .word MOD04_021E8F80
+_021E05E0: .word MOD04_021DEF60
+_021E05E4: .word MOD04_021DEBE4
+_021E05E8: .word MOD04_021DEBD8
_021E05EC: .word 0x02210F94
_021E05F0: .word 0x02211094
-_021E05F4: .word FUN_021DF304
+_021E05F4: .word MOD04_021DF304
_021E05F8: .word 0x000007D8
- arm_func_start FUN_021E05FC
-FUN_021E05FC: ; 0x021E05FC
+ arm_func_start MOD04_021E05FC
+MOD04_021E05FC: ; 0x021E05FC
ldr r0, _021E0624 ; =0x022106C8
ldr r0, [r0]
cmp r0, #0
@@ -8722,8 +8722,8 @@ _021E061C:
.align 2, 0
_021E0624: .word 0x022106C8
- arm_func_start FUN_021E0628
-FUN_021E0628: ; 0x021E0628
+ arm_func_start MOD04_021E0628
+MOD04_021E0628: ; 0x021E0628
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x4c
mov r4, r1
@@ -8748,15 +8748,15 @@ FUN_021E0628: ; 0x021E0628
ldr r1, _021E07D0 ; =0x00000705
add r2, sp, #8
mov r0, r5
- bl FUN_021F0B30
- bl FUN_021E0DB0
+ bl MOD04_021F0B30
+ bl MOD04_021E0DB0
cmp r0, #0
addne sp, sp, #0x4c
ldmneia sp!, {r4, r5, pc}
ldr r0, _021E07CC ; =0x022106C8
mov r3, #4
ldr r1, [r0]
- ldr r0, _021E07D4 ; =FUN_021E0628
+ ldr r0, _021E07D4 ; =MOD04_021E0628
str r3, [r1, #4]
mov r2, #0
str r0, [sp]
@@ -8764,16 +8764,16 @@ FUN_021E0628: ; 0x021E0628
ldr r1, [r4, #4]
mov r0, r5
mov r3, r2
- bl FUN_021F0B9C
- bl FUN_021E0DB0
+ bl MOD04_021F0B9C
+ bl MOD04_021E0DB0
add sp, sp, #0x4c
cmp r0, #0
ldmia sp!, {r4, r5, pc}
_021E06DC:
- bl FUN_021F0D54
- ldr r0, _021E07D8 ; =FUN_021E0C80
+ bl MOD04_021F0D54
+ ldr r0, _021E07D8 ; =MOD04_021E0C80
mov r1, #0
- bl FUN_021E0A00
+ bl MOD04_021E0A00
ldr r0, _021E07CC ; =0x022106C8
mov r1, #1
ldr r0, [r0]
@@ -8807,7 +8807,7 @@ _021E0704:
add r1, r1, #0x3c
bl FUN_02096EC0
mov r0, r5
- bl FUN_021F0D54
+ bl MOD04_021F0D54
ldr r0, _021E07CC ; =0x022106C8
ldr r1, _021E07DC ; =0x022106C4
ldr r4, [r0]
@@ -8820,35 +8820,35 @@ _021E0704:
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
_021E079C:
- ldr r0, _021E07D4 ; =FUN_021E0628
+ ldr r0, _021E07D4 ; =MOD04_021E0628
mov r2, #0
str r0, [sp]
str r2, [sp, #4]
ldr r1, [r4, #4]
mov r0, r5
mov r3, r2
- bl FUN_021F0B9C
- bl FUN_021E0DB0
+ bl MOD04_021F0B9C
+ bl MOD04_021E0DB0
cmp r0, #0
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
.align 2, 0
_021E07CC: .word 0x022106C8
_021E07D0: .word 0x00000705
-_021E07D4: .word FUN_021E0628
-_021E07D8: .word FUN_021E0C80
+_021E07D4: .word MOD04_021E0628
+_021E07D8: .word MOD04_021E0C80
_021E07DC: .word 0x022106C4
_021E07E0: .word 0x022106CC
- arm_func_start FUN_021E07E4
-FUN_021E07E4: ; 0x021E07E4
+ arm_func_start MOD04_021E07E4
+MOD04_021E07E4: ; 0x021E07E4
stmdb sp!, {lr}
sub sp, sp, #0x3d4
- bl FUN_021D988C
+ bl MOD04_021D988C
cmp r0, #0x15
bne _021E08BC
add r0, sp, #0
- bl FUN_021D97F8
+ bl MOD04_021D97F8
ldr r0, _021E09DC ; =0x022106C8
add r1, sp, #0x4a
ldr r0, [r0]
@@ -8860,13 +8860,13 @@ FUN_021E07E4: ; 0x021E07E4
add r1, r1, #0x77
add r0, r0, #0x148
bl strcpy
- bl FUN_021D991C
+ bl MOD04_021D991C
ldr r1, _021E09DC ; =0x022106C8
mov r0, #0
ldr r1, [r1]
mov r2, r0
ldr r1, [r1, #0x24]
- bl FUN_021DD904
+ bl MOD04_021DD904
ldr r0, _021E09DC ; =0x022106C8
mov r2, #0
ldr r1, [r0]
@@ -8889,16 +8889,16 @@ FUN_021E07E4: ; 0x021E07E4
ldmfd sp!, {pc}
_021E0898:
ldr r0, _021E09DC ; =0x022106C8
- ldr r2, _021E09E8 ; =FUN_021E0C98
+ ldr r2, _021E09E8 ; =MOD04_021E0C98
ldr r1, [r0]
mov r3, #3
add r0, r1, #0x48
add r1, r1, #0x148
- bl FUN_021E0BE0
+ bl MOD04_021E0BE0
add sp, sp, #0x3d4
ldmfd sp!, {pc}
_021E08BC:
- bl FUN_021D988C
+ bl MOD04_021D988C
cmp r0, #0
addeq sp, sp, #0x3d4
ldmeqia sp!, {pc}
@@ -8920,25 +8920,25 @@ _021E08BC:
cmpeq r0, r2
bls _021E0958
add r0, sp, #0x1c4
- bl FUN_021D97F8
- bl FUN_021D991C
+ bl MOD04_021D97F8
+ bl MOD04_021D991C
ldr r1, _021E09DC ; =0x022106C8
mov r0, #0
ldr r1, [r1]
mov r2, r0
ldr r1, [r1, #0x24]
- bl FUN_021DD904
+ bl MOD04_021DD904
ldr r0, _021E09DC ; =0x022106C8
mov r2, #0
ldr r1, [r0]
mov r0, #2
str r2, [r1, #0x24]
ldr r1, [sp, #0x1c4]
- bl FUN_021E0EAC
+ bl MOD04_021E0EAC
add sp, sp, #0x3d4
ldmfd sp!, {pc}
_021E0958:
- bl FUN_021D991C
+ bl MOD04_021D991C
add r0, sp, #0x388
mov r1, #0
mov r2, #0x48
@@ -8946,7 +8946,7 @@ _021E0958:
ldr r0, _021E09DC ; =0x022106C8
ldr r0, [r0]
ldr r0, [r0, #0x10]
- bl FUN_021DE89C
+ bl MOD04_021DE89C
ldr r1, _021E09DC ; =0x022106C8
mov r2, r0, lsl #1
ldr r1, [r1]
@@ -8960,30 +8960,30 @@ _021E0958:
add r0, sp, #0x3bc
add r1, r2, r1
bl strcpy
- ldr r2, _021E09F8 ; =FUN_021DD944
+ ldr r2, _021E09F8 ; =MOD04_021DD944
ldr r0, _021E09DC ; =0x022106C8
str r2, [sp, #0x3c8]
- ldr r2, _021E09FC ; =FUN_021DD904
+ ldr r2, _021E09FC ; =MOD04_021DD904
ldr r1, [r0]
str r2, [sp, #0x3cc]
ldr r1, [r1, #0x24]
add r0, sp, #0x388
- bl FUN_021D9ACC
+ bl MOD04_021D9ACC
add sp, sp, #0x3d4
ldmfd sp!, {pc}
.align 2, 0
_021E09DC: .word 0x022106C8
_021E09E0: .word 0x022106C4
_021E09E4: .word 0x022106CC
-_021E09E8: .word FUN_021E0C98
+_021E09E8: .word MOD04_021E0C98
_021E09EC: .word 0x000082EA
_021E09F0: .word 0x00002710
_021E09F4: .word 0x00000251
-_021E09F8: .word FUN_021DD944
-_021E09FC: .word FUN_021DD904
+_021E09F8: .word MOD04_021DD944
+_021E09FC: .word MOD04_021DD904
- arm_func_start FUN_021E0A00
-FUN_021E0A00: ; 0x021E0A00
+ arm_func_start MOD04_021E0A00
+MOD04_021E0A00: ; 0x021E0A00
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x4c
mov r5, r0
@@ -9063,7 +9063,7 @@ _021E0B1C:
ldr r0, _021E0BB8 ; =0x022106C8
ldr r0, [r0]
ldr r0, [r0, #0x10]
- bl FUN_021DE89C
+ bl MOD04_021DE89C
ldr r1, _021E0BB8 ; =0x022106C8
mov r2, r0, lsl #1
ldr r1, [r1]
@@ -9077,14 +9077,14 @@ _021E0B1C:
add r0, sp, #0x34
add r1, r2, r1
bl strcpy
- ldr r4, _021E0BD4 ; =FUN_021DD944
- ldr r3, _021E0BD8 ; =FUN_021DD904
+ ldr r4, _021E0BD4 ; =MOD04_021DD944
+ ldr r3, _021E0BD8 ; =MOD04_021DD904
ldr r1, _021E0BDC ; =0x00001C10
mov r0, #0
mov r2, #4
str r4, [sp, #0x40]
str r3, [sp, #0x44]
- bl FUN_021DD924
+ bl MOD04_021DD924
ldr r1, _021E0BB8 ; =0x022106C8
mov r4, r0
ldr r0, [r1]
@@ -9096,7 +9096,7 @@ _021E0B1C:
str r1, [r2, #0x2c]
mov r1, r4
add r0, sp, #0
- bl FUN_021D9ACC
+ bl MOD04_021D9ACC
add sp, sp, #0x4c
ldmia sp!, {r4, r5, pc}
.align 2, 0
@@ -9107,12 +9107,12 @@ _021E0BC4: .word 0x6C078965
_021E0BC8: .word 0x5D588B65
_021E0BCC: .word 0x00269EC3
_021E0BD0: .word 0x00000251
-_021E0BD4: .word FUN_021DD944
-_021E0BD8: .word FUN_021DD904
+_021E0BD4: .word MOD04_021DD944
+_021E0BD8: .word MOD04_021DD904
_021E0BDC: .word 0x00001C10
- arm_func_start FUN_021E0BE0
-FUN_021E0BE0: ; 0x021E0BE0
+ arm_func_start MOD04_021E0BE0
+MOD04_021E0BE0: ; 0x021E0BE0
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x10
ldr r4, _021E0C7C ; =0x022106C8
@@ -9144,8 +9144,8 @@ FUN_021E0BE0: ; 0x021E0BE0
ldr r0, [r2]
add r1, r2, #0x48
add r2, r2, #0x148
- bl FUN_021F0D8C
- bl FUN_021E0DB0
+ bl MOD04_021F0D8C
+ bl MOD04_021E0DB0
cmp r0, #0
ldreq r0, _021E0C7C ; =0x022106C8
ldreq r0, [r0]
@@ -9155,18 +9155,18 @@ FUN_021E0BE0: ; 0x021E0BE0
.align 2, 0
_021E0C7C: .word 0x022106C8
- arm_func_start FUN_021E0C80
-FUN_021E0C80: ; 0x021E0C80
- ldr ip, _021E0C90 ; =FUN_021E0BE0
- ldr r2, _021E0C94 ; =FUN_021E0C98
+ arm_func_start MOD04_021E0C80
+MOD04_021E0C80: ; 0x021E0C80
+ ldr ip, _021E0C90 ; =MOD04_021E0BE0
+ ldr r2, _021E0C94 ; =MOD04_021E0C98
mov r3, #2
bx ip
.align 2, 0
-_021E0C90: .word FUN_021E0BE0
-_021E0C94: .word FUN_021E0C98
+_021E0C90: .word MOD04_021E0BE0
+_021E0C94: .word MOD04_021E0C98
- arm_func_start FUN_021E0C98
-FUN_021E0C98: ; 0x021E0C98
+ arm_func_start MOD04_021E0C98
+MOD04_021E0C98: ; 0x021E0C98
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr r3, _021E0DA0 ; =0x022106C8
@@ -9190,8 +9190,8 @@ FUN_021E0C98: ; 0x021E0C98
mov r3, #5
mov r0, #1
str r3, [ip, #4]
- bl FUN_021E1E30
- bl FUN_021E0DB0
+ bl MOD04_021E1E30
+ bl MOD04_021E0DB0
cmp r0, #0
addne sp, sp, #8
ldmneia sp!, {r4, pc}
@@ -9202,48 +9202,48 @@ FUN_021E0C98: ; 0x021E0C98
ldr r2, [r3, #0x18]
ldr r3, [r3, #0x14]
blx r3
- bl FUN_021DF7C4
+ bl MOD04_021DF7C4
cmp r0, #0
addne sp, sp, #8
ldmneia sp!, {r4, pc}
ldr r0, [r4, #4]
- bl FUN_021EA1E0
+ bl MOD04_021EA1E0
add sp, sp, #8
cmp r0, #0
ldmia sp!, {r4, pc}
_021E0D48:
ldr r1, _021E0DA8 ; =0xFFFF15A0
mov r0, #6
- bl FUN_021E0EAC
+ bl MOD04_021E0EAC
add sp, sp, #8
ldmia sp!, {r4, pc}
_021E0D5C:
cmp r1, #3
addne sp, sp, #8
ldmneia sp!, {r4, pc}
- ldr r1, _021E0DAC ; =FUN_021E0628
+ ldr r1, _021E0DAC ; =MOD04_021E0628
mov r3, r2
str r1, [sp]
str r2, [sp, #4]
ldr r1, [r4, #4]
- bl FUN_021F0B9C
- bl FUN_021E0DB0
+ bl MOD04_021F0B9C
+ bl MOD04_021E0DB0
add sp, sp, #8
cmp r0, #0
ldmia sp!, {r4, pc}
_021E0D90:
mov r0, r1
- bl FUN_021E0DB0
+ bl MOD04_021E0DB0
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_021E0DA0: .word 0x022106C8
_021E0DA4: .word 0x0220D34C
_021E0DA8: .word 0xFFFF15A0
-_021E0DAC: .word FUN_021E0628
+_021E0DAC: .word MOD04_021E0628
- arm_func_start FUN_021E0DB0
-FUN_021E0DB0: ; 0x021E0DB0
+ arm_func_start MOD04_021E0DB0
+MOD04_021E0DB0: ; 0x021E0DB0
stmdb sp!, {r4, lr}
movs r4, r0
moveq r0, #0
@@ -9275,14 +9275,14 @@ _021E0E04:
_021E0E0C:
ldr r1, _021E0E20 ; =0xFFFF11B8
add r1, r2, r1
- bl FUN_021E0EAC
+ bl MOD04_021E0EAC
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_021E0E20: .word 0xFFFF11B8
- arm_func_start FUN_021E0E24
-FUN_021E0E24: ; 0x021E0E24
+ arm_func_start MOD04_021E0E24
+MOD04_021E0E24: ; 0x021E0E24
ldr r0, _021E0E44 ; =0x022106C8
ldr r2, [r0]
cmp r2, #0
@@ -9294,8 +9294,8 @@ FUN_021E0E24: ; 0x021E0E24
.align 2, 0
_021E0E44: .word 0x022106C8
- arm_func_start FUN_021E0E48
-FUN_021E0E48: ; 0x021E0E48
+ arm_func_start MOD04_021E0E48
+MOD04_021E0E48: ; 0x021E0E48
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021E0EA8 ; =0x022106C8
@@ -9303,14 +9303,14 @@ FUN_021E0E48: ; 0x021E0E48
ldr r0, [r0, #0x24]
cmp r0, #0
beq _021E0E94
- bl FUN_021D9974
- bl FUN_021D991C
+ bl MOD04_021D9974
+ bl MOD04_021D991C
ldr r1, _021E0EA8 ; =0x022106C8
mov r0, #0
ldr r1, [r1]
mov r2, r0
ldr r1, [r1, #0x24]
- bl FUN_021DD904
+ bl MOD04_021DD904
ldr r0, _021E0EA8 ; =0x022106C8
mov r1, #0
ldr r0, [r0]
@@ -9324,8 +9324,8 @@ _021E0E94:
.align 2, 0
_021E0EA8: .word 0x022106C8
- arm_func_start FUN_021E0EAC
-FUN_021E0EAC: ; 0x021E0EAC
+ arm_func_start MOD04_021E0EAC
+MOD04_021E0EAC: ; 0x021E0EAC
stmdb sp!, {r4, lr}
ldr r2, _021E0EFC ; =0x022106C8
mov r4, r0
@@ -9334,7 +9334,7 @@ FUN_021E0EAC: ; 0x021E0EAC
ldmeqia sp!, {r4, pc}
cmp r4, #0
ldmeqia sp!, {r4, pc}
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
ldr r0, _021E0EFC ; =0x022106C8
ldr r0, [r0]
ldr r3, [r0, #0x14]
@@ -9345,13 +9345,13 @@ FUN_021E0EAC: ; 0x021E0EAC
mov r1, #0
blx r3
_021E0EF4:
- bl FUN_021E0E24
+ bl MOD04_021E0E24
ldmia sp!, {r4, pc}
.align 2, 0
_021E0EFC: .word 0x022106C8
- arm_func_start FUN_021E0F00
-FUN_021E0F00: ; 0x021E0F00
+ arm_func_start MOD04_021E0F00
+MOD04_021E0F00: ; 0x021E0F00
ldr r0, _021E0F18 ; =0x022106C8
ldr r0, [r0]
cmp r0, #0
@@ -9361,8 +9361,8 @@ FUN_021E0F00: ; 0x021E0F00
.align 2, 0
_021E0F18: .word 0x022106C8
- arm_func_start FUN_021E0F1C
-FUN_021E0F1C: ; 0x021E0F1C
+ arm_func_start MOD04_021E0F1C
+MOD04_021E0F1C: ; 0x021E0F1C
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021E1024 ; =0x022106C8
@@ -9370,7 +9370,7 @@ FUN_021E0F1C: ; 0x021E0F1C
cmp r0, #0
addeq sp, sp, #4
ldmeqia sp!, {pc}
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {pc}
@@ -9388,7 +9388,7 @@ _021E0F60: ; jump table
b _021E0F84 ; case 4
b _021E101C ; case 5
_021E0F78:
- bl FUN_021E07E4
+ bl MOD04_021E07E4
add sp, sp, #4
ldmfd sp!, {pc}
_021E0F84:
@@ -9398,7 +9398,7 @@ _021E0F84:
ldr r1, [r0]
cmp r1, #0
beq _021E0FA0
- bl FUN_021F0F18
+ bl MOD04_021F0F18
_021E0FA0:
ldr r0, _021E1024 ; =0x022106C8
ldr r0, [r0]
@@ -9426,7 +9426,7 @@ _021E0FA0:
ldmlsia sp!, {pc}
ldr r1, _021E1030 ; =0xFFFF1172
mov r0, #6
- bl FUN_021E0EAC
+ bl MOD04_021E0EAC
ldr r0, _021E1024 ; =0x022106C8
mov r1, #0
ldr r0, [r0]
@@ -9440,13 +9440,13 @@ _021E1028: .word 0x000082EA
_021E102C: .word 0x0000EA60
_021E1030: .word 0xFFFF1172
- arm_func_start FUN_021E1034
-FUN_021E1034: ; 0x021E1034
+ arm_func_start MOD04_021E1034
+MOD04_021E1034: ; 0x021E1034
stmdb sp!, {lr}
sub sp, sp, #4
- ldr r0, _021E106C ; =FUN_021E0C80
+ ldr r0, _021E106C ; =MOD04_021E0C80
mov r1, #0
- bl FUN_021E0A00
+ bl MOD04_021E0A00
ldr r0, _021E1070 ; =0x022106C8
mov r3, #1
ldr r2, [r0]
@@ -9457,11 +9457,11 @@ FUN_021E1034: ; 0x021E1034
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
-_021E106C: .word FUN_021E0C80
+_021E106C: .word MOD04_021E0C80
_021E1070: .word 0x022106C8
- arm_func_start FUN_021E1074
-FUN_021E1074: ; 0x021E1074
+ arm_func_start MOD04_021E1074
+MOD04_021E1074: ; 0x021E1074
stmdb sp!, {r4, r5, r6, lr}
ldr ip, _021E10F4 ; =0x022106C8
mov r6, r1
@@ -9497,8 +9497,8 @@ FUN_021E1074: ; 0x021E1074
.align 2, 0
_021E10F4: .word 0x022106C8
- arm_func_start FUN_021E10F8
-FUN_021E10F8: ; 0x021E10F8
+ arm_func_start MOD04_021E10F8
+MOD04_021E10F8: ; 0x021E10F8
ldr r0, _021E1108 ; =0x022106D0
ldr r0, [r0]
ldr r0, [r0, #0x20]
@@ -9506,8 +9506,8 @@ FUN_021E10F8: ; 0x021E10F8
.align 2, 0
_021E1108: .word 0x022106D0
- arm_func_start FUN_021E110C
-FUN_021E110C: ; 0x021E110C
+ arm_func_start MOD04_021E110C
+MOD04_021E110C: ; 0x021E110C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x24
mov sl, r1
@@ -9534,7 +9534,7 @@ _021E115C:
bl FUN_02097484
cmp r0, #1
bne _021E11C8
- bl FUN_021E0F00
+ bl MOD04_021E0F00
ldr r1, [r4]
add r2, sp, #8
ldr r1, [r1, #0x18]
@@ -9578,7 +9578,7 @@ _021E11F8:
streq fp, [sp]
beq _021E125C
ldr r6, [sl, #4]
- bl FUN_021E0F00
+ bl MOD04_021E0F00
ldr r1, [r4]
ldr r1, [r1, #0x18]
add r1, r1, r7
@@ -9608,11 +9608,11 @@ _021E1274:
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
ldr r0, [r2, #0x18]
ldr r2, [sl, #4]
- bl FUN_021E17F0
+ bl MOD04_021E17F0
ldr r1, [sp]
cmp r1, #0
beq _021E129C
- bl FUN_021E1DA4
+ bl MOD04_021E1DA4
_021E129C:
ldr r0, _021E12B4 ; =0x022106D0
mov r1, #1
@@ -9623,8 +9623,8 @@ _021E129C:
.align 2, 0
_021E12B4: .word 0x022106D0
- arm_func_start FUN_021E12B8
-FUN_021E12B8: ; 0x021E12B8
+ arm_func_start MOD04_021E12B8
+MOD04_021E12B8: ; 0x021E12B8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x1c
mov sb, r1
@@ -9650,7 +9650,7 @@ _021E1304:
bl FUN_02097484
cmp r0, #1
bne _021E136C
- bl FUN_021E0F00
+ bl MOD04_021E0F00
ldr r1, [r4]
add r2, sp, #4
ldr r1, [r1, #0x18]
@@ -9663,7 +9663,7 @@ _021E1304:
bne _021E13CC
ldr r1, [sb, #4]
mov r0, sl
- bl FUN_021F0944
+ bl MOD04_021F0944
ldr r0, [r4]
ldr r1, [sb, #4]
ldr r0, [r0, #0x18]
@@ -9686,7 +9686,7 @@ _021E136C:
bne _021E13CC
_021E139C:
ldr r6, [sb, #4]
- bl FUN_021E0F00
+ bl MOD04_021E0F00
ldr r1, [r4]
ldr r1, [r1, #0x18]
add r1, r1, r7
@@ -9695,7 +9695,7 @@ _021E139C:
bne _021E13CC
mov r0, sl
mov r1, r6
- bl FUN_021F0944
+ bl MOD04_021F0944
mov fp, r5
_021E13CC:
ldr r1, [r4]
@@ -9708,20 +9708,20 @@ _021E13E4:
cmp fp, #0
beq _021E13FC
ldr r0, [sb, #4]
- bl FUN_021E17BC
+ bl MOD04_021E17BC
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021E13FC:
ldr r1, [sb, #4]
mov r0, sl
- bl FUN_021F0864
+ bl MOD04_021F0864
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_021E1410: .word 0x022106D0
- arm_func_start FUN_021E1414
-FUN_021E1414: ; 0x021E1414
+ arm_func_start MOD04_021E1414
+MOD04_021E1414: ; 0x021E1414
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
mov sb, r1
@@ -9761,7 +9761,7 @@ _021E1498:
ldr r0, [r0, #0x18]
ldr r2, [r1, r4]
mov r1, r8
- bl FUN_021E1900
+ bl MOD04_021E1900
cmp r0, #0
beq _021E14E8
ldr r0, _021E1670 ; =0x022106D0
@@ -9794,14 +9794,14 @@ _021E1514:
mov r0, sl
ldr r1, [r1, r7]
mov r2, fp
- bl FUN_021F0664
- bl FUN_021E1678
+ bl MOD04_021F0664
+ bl MOD04_021E1678
ldr r0, [sp]
cmp r0, r4
bne _021E1548
ldr r0, [sb, #0xc]
ldr r0, [r0, r7]
- bl FUN_021E17BC
+ bl MOD04_021E17BC
b _021E15B0
_021E1548:
ldr r0, _021E1670 ; =0x022106D0
@@ -9817,7 +9817,7 @@ _021E1548:
add r0, r0, r6
bl FUN_02097414
mov r0, r8
- bl FUN_021E1DA4
+ bl MOD04_021E1DA4
ldr r0, _021E1670 ; =0x022106D0
mov r2, #1
ldr r4, [r0]
@@ -9855,7 +9855,7 @@ _021E15FC:
ldr r0, [sb]
cmp r0, #0
beq _021E1618
- bl FUN_021E1678
+ bl MOD04_021E1678
add sp, sp, #4
cmp r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -9887,8 +9887,8 @@ _021E1648:
_021E1670: .word 0x022106D0
_021E1674: .word 0x00000601
- arm_func_start FUN_021E1678
-FUN_021E1678: ; 0x021E1678
+ arm_func_start MOD04_021E1678
+MOD04_021E1678: ; 0x021E1678
stmdb sp!, {r4, lr}
movs r4, r0
moveq r0, #0
@@ -9920,14 +9920,14 @@ _021E16CC:
_021E16D4:
ldr r1, _021E16E8 ; =0xFFFEEAA8
add r1, r2, r1
- bl FUN_021E2114
+ bl MOD04_021E2114
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_021E16E8: .word 0xFFFEEAA8
- arm_func_start FUN_021E16EC
-FUN_021E16EC: ; 0x021E16EC
+ arm_func_start MOD04_021E16EC
+MOD04_021E16EC: ; 0x021E16EC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r2, _021E17B8 ; =0x022106D0
@@ -9938,7 +9938,7 @@ FUN_021E16EC: ; 0x021E16EC
str r3, [sp]
cmp r2, #0
beq _021E1720
- bl FUN_021E05FC
+ bl MOD04_021E05FC
cmp r0, #0
bne _021E172C
_021E1720:
@@ -9946,7 +9946,7 @@ _021E1720:
mov r0, #0
ldmia sp!, {r4, r5, pc}
_021E172C:
- bl FUN_021E0F00
+ bl MOD04_021E0F00
mov r1, r5
bl FUN_02096DA0
mov r5, r0
@@ -9957,7 +9957,7 @@ _021E172C:
ldr r0, [r0]
mov r1, r5
ldr r0, [r0, #4]
- bl FUN_021F0664
+ bl MOD04_021F0664
cmp r0, #0
addne sp, sp, #4
movne r0, #0
@@ -9978,7 +9978,7 @@ _021E1790:
mov r2, r4
ldr r0, [r0]
ldr r0, [r0, #4]
- bl FUN_021F06E4
+ bl MOD04_021F06E4
cmp r0, #0
movne r0, #0
moveq r0, #1
@@ -9987,25 +9987,25 @@ _021E1790:
.align 2, 0
_021E17B8: .word 0x022106D0
- arm_func_start FUN_021E17BC
-FUN_021E17BC: ; 0x021E17BC
+ arm_func_start MOD04_021E17BC
+MOD04_021E17BC: ; 0x021E17BC
stmdb sp!, {r4, lr}
ldr r2, _021E17E8 ; =0x022106D0
mov r1, r0
ldr r0, [r2]
ldr r2, _021E17EC ; =0x0220D350
ldr r0, [r0, #4]
- bl FUN_021F09B0
+ bl MOD04_021F09B0
mov r4, r0
- bl FUN_021E1678
+ bl MOD04_021E1678
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_021E17E8: .word 0x022106D0
_021E17EC: .word 0x0220D350
- arm_func_start FUN_021E17F0
-FUN_021E17F0: ; 0x021E17F0
+ arm_func_start MOD04_021E17F0
+MOD04_021E17F0: ; 0x021E17F0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov sl, r1
@@ -10022,7 +10022,7 @@ FUN_021E17F0: ; 0x021E17F0
str r0, [sp, #8]
_021E1828:
mov r0, r8
- bl FUN_021E1F84
+ bl MOD04_021E1F84
movs sb, r0
beq _021E18DC
ldr r0, [sp]
@@ -10035,7 +10035,7 @@ _021E1828:
mla r4, r7, r0, fp
_021E1858:
mov r0, r7
- bl FUN_021E1F84
+ bl MOD04_021E1F84
cmp sb, r0
bne _021E18CC
mov r0, r6
@@ -10060,7 +10060,7 @@ _021E18AC:
mov r0, fp
mov r1, r7
mov r2, r8
- bl FUN_021E19B8
+ bl MOD04_021E19B8
ldr r0, _021E18FC ; =0x022106D0
ldr r1, [r0]
ldr r0, [sp, #8]
@@ -10083,8 +10083,8 @@ _021E18F0:
.align 2, 0
_021E18FC: .word 0x022106D0
- arm_func_start FUN_021E1900
-FUN_021E1900: ; 0x021E1900
+ arm_func_start MOD04_021E1900
+MOD04_021E1900: ; 0x021E1900
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r6, r1
@@ -10095,7 +10095,7 @@ FUN_021E1900: ; 0x021E1900
ble _021E19A8
_021E1920:
mov r0, r4
- bl FUN_021E1F84
+ bl MOD04_021E1F84
cmp r0, #0
beq _021E199C
cmp r0, r5
@@ -10113,13 +10113,13 @@ _021E1920:
mov r0, r7
mov r1, r4
mov r2, r6
- bl FUN_021E19B8
+ bl MOD04_021E19B8
b _021E1984
_021E1974:
mov r0, r7
mov r1, r6
mov r2, r4
- bl FUN_021E19B8
+ bl MOD04_021E19B8
_021E1984:
ldr r1, _021E19B4 ; =0x022106D0
mov r0, #1
@@ -10138,8 +10138,8 @@ _021E19A8:
.align 2, 0
_021E19B4: .word 0x022106D0
- arm_func_start FUN_021E19B8
-FUN_021E19B8: ; 0x021E19B8
+ arm_func_start MOD04_021E19B8
+MOD04_021E19B8: ; 0x021E19B8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r3, _021E1A1C ; =0x022106D0
@@ -10168,8 +10168,8 @@ FUN_021E19B8: ; 0x021E19B8
.align 2, 0
_021E1A1C: .word 0x022106D0
- arm_func_start FUN_021E1A20
-FUN_021E1A20: ; 0x021E1A20
+ arm_func_start MOD04_021E1A20
+MOD04_021E1A20: ; 0x021E1A20
stmdb sp!, {lr}
sub sp, sp, #4
ldr r1, _021E1A5C ; =0x022106D0
@@ -10188,8 +10188,8 @@ FUN_021E1A20: ; 0x021E1A20
.align 2, 0
_021E1A5C: .word 0x022106D0
- arm_func_start FUN_021E1A60
-FUN_021E1A60: ; 0x021E1A60
+ arm_func_start MOD04_021E1A60
+MOD04_021E1A60: ; 0x021E1A60
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x24c
ldr r2, _021E1CC4 ; =0x022106D0
@@ -10201,8 +10201,8 @@ FUN_021E1A60: ; 0x021E1A60
bne _021E1B8C
ldr r0, [r2, #4]
add r1, sp, #0x18
- bl FUN_021F0828
- bl FUN_021E1678
+ bl MOD04_021F0828
+ bl MOD04_021E1678
ldr r0, [sp, #0x18]
mov fp, #0
str fp, [sp, #0x1c]
@@ -10216,14 +10216,14 @@ _021E1AB4:
ldr r1, [sp, #0x1c]
ldr r0, [r0, #4]
add r2, sp, #0x38
- bl FUN_021F06E4
- bl FUN_021E1678
+ bl MOD04_021F06E4
+ bl MOD04_021E1678
mov r4, fp
cmp r5, #0
ble _021E1B30
_021E1AD8:
mov r0, r4
- bl FUN_021E1F84
+ bl MOD04_021E1F84
ldr r1, [sp, #0x38]
cmp r1, r0
bne _021E1B24
@@ -10251,8 +10251,8 @@ _021E1B30:
ldr r0, [r8]
ldr r1, [sp, #0x38]
ldr r0, [r0, #4]
- bl FUN_021F0580
- bl FUN_021E1678
+ bl MOD04_021F0580
+ bl MOD04_021E1678
ldr r1, [sp, #0x18]
ldr r0, [sp, #0x1c]
sub r1, r1, #1
@@ -10282,37 +10282,37 @@ _021E1B8C:
mov r8, #0xc
mvn sb, #0
_021E1BB0:
- bl FUN_021E1F84
+ bl MOD04_021E1F84
movs r7, r0
beq _021E1C08
ldr r1, [sl]
mov r0, r6
ldrb r1, [r1, #0x1c]
mov r2, r7
- bl FUN_021E1900
+ bl MOD04_021E1900
cmp r0, #0
bne _021E1C9C
ldr r0, [sl]
mov r1, r7
ldr r0, [r0, #4]
mov r2, r4
- bl FUN_021F0664
- bl FUN_021E1678
+ bl MOD04_021F0664
+ bl MOD04_021E1678
ldr r0, [sp, #0x1c]
cmp r0, sb
bne _021E1C9C
mov r0, r7
- bl FUN_021E17BC
+ bl MOD04_021E17BC
b _021E1C9C
_021E1C08:
- bl FUN_021E0F00
+ bl MOD04_021E0F00
ldr r1, [sl]
ldrb r2, [r1, #0x1c]
mla r1, r2, r8, r6
bl FUN_02096DA0
cmp r0, sb
bne _021E1C9C
- bl FUN_021E0F00
+ bl MOD04_021E0F00
ldr r2, _021E1CC4 ; =0x022106D0
mov r1, #0xc
ldr r3, [r2]
@@ -10327,7 +10327,7 @@ _021E1C08:
str r1, [sp]
str r2, [sp, #4]
str r1, [sp, #8]
- ldr r0, _021E1CC8 ; =FUN_021E1414
+ ldr r0, _021E1CC8 ; =MOD04_021E1414
str r1, [sp, #0xc]
str r0, [sp, #0x10]
ldrb r0, [r4, #0x1c]
@@ -10335,7 +10335,7 @@ _021E1C08:
mov r3, r1
str r0, [sp, #0x14]
ldr r0, [r4, #4]
- bl FUN_021F0C84
+ bl MOD04_021F0C84
ldr r0, _021E1CC4 ; =0x022106D0
mov r1, #2
ldr r0, [r0]
@@ -10355,10 +10355,10 @@ _021E1C9C:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_021E1CC4: .word 0x022106D0
-_021E1CC8: .word FUN_021E1414
+_021E1CC8: .word MOD04_021E1414
- arm_func_start FUN_021E1CCC
-FUN_021E1CCC: ; 0x021E1CCC
+ arm_func_start MOD04_021E1CCC
+MOD04_021E1CCC: ; 0x021E1CCC
ldr r0, _021E1CF8 ; =0x022106D0
ldr r1, [r0]
cmp r1, #0
@@ -10373,8 +10373,8 @@ FUN_021E1CCC: ; 0x021E1CCC
.align 2, 0
_021E1CF8: .word 0x022106D0
- arm_func_start FUN_021E1CFC
-FUN_021E1CFC: ; 0x021E1CFC
+ arm_func_start MOD04_021E1CFC
+MOD04_021E1CFC: ; 0x021E1CFC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r0, _021E1D88 ; =0x022106D0
@@ -10400,7 +10400,7 @@ FUN_021E1CFC: ; 0x021E1CFC
str r1, [r4, #8]
ldr r0, [r0]
ldr r0, [r0, #4]
- bl FUN_021F0F18
+ bl MOD04_021F0F18
mov r5, r0
bl OS_GetTick
ldr r2, _021E1D88 ; =0x022106D0
@@ -10415,8 +10415,8 @@ _021E1D7C:
_021E1D88: .word 0x022106D0
_021E1D8C: .word 0x000082EA
- arm_func_start FUN_021E1D90
-FUN_021E1D90: ; 0x021E1D90
+ arm_func_start MOD04_021E1D90
+MOD04_021E1D90: ; 0x021E1D90
ldr r0, _021E1DA0 ; =0x022106D0
mov r1, #0
str r1, [r0]
@@ -10424,8 +10424,8 @@ FUN_021E1D90: ; 0x021E1D90
.align 2, 0
_021E1DA0: .word 0x022106D0
- arm_func_start FUN_021E1DA4
-FUN_021E1DA4: ; 0x021E1DA4
+ arm_func_start MOD04_021E1DA4
+MOD04_021E1DA4: ; 0x021E1DA4
stmdb sp!, {r4, lr}
sub sp, sp, #0x210
ldr r1, _021E1E2C ; =0x022106D0
@@ -10450,7 +10450,7 @@ _021E1DD8:
mov r0, #0xc
mla r0, r4, r0, r1
add r1, sp, #0x108
- bl FUN_021E26B8
+ bl MOD04_021E26B8
ldr r2, _021E1E2C ; =0x022106D0
mov r1, r0
ldr r0, [r2]
@@ -10464,8 +10464,8 @@ _021E1DD8:
.align 2, 0
_021E1E2C: .word 0x022106D0
- arm_func_start FUN_021E1E30
-FUN_021E1E30: ; 0x021E1E30
+ arm_func_start MOD04_021E1E30
+MOD04_021E1E30: ; 0x021E1E30
stmdb sp!, {r4, r5, r6, lr}
ldr r3, _021E1ED0 ; =0x022106D0
mov r6, r0
@@ -10474,7 +10474,7 @@ FUN_021E1E30: ; 0x021E1E30
mov r4, r2
cmp r0, #0
beq _021E1E5C
- bl FUN_021E05FC
+ bl MOD04_021E05FC
cmp r0, #0
bne _021E1E64
_021E1E5C:
@@ -10506,13 +10506,13 @@ _021E1E64:
mov r3, r4
ldr r0, [r0]
ldr r0, [r0, #4]
- bl FUN_021F034C
+ bl MOD04_021F034C
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021E1ED0: .word 0x022106D0
- arm_func_start FUN_021E1ED4
-FUN_021E1ED4: ; 0x021E1ED4
+ arm_func_start MOD04_021E1ED4
+MOD04_021E1ED4: ; 0x021E1ED4
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021E1F14 ; =0x022106D0
@@ -10532,8 +10532,8 @@ FUN_021E1ED4: ; 0x021E1ED4
.align 2, 0
_021E1F14: .word 0x022106D0
- arm_func_start FUN_021E1F18
-FUN_021E1F18: ; 0x021E1F18
+ arm_func_start MOD04_021E1F18
+MOD04_021E1F18: ; 0x021E1F18
stmdb sp!, {r4, r5, r6, lr}
ldr r4, _021E1F80 ; =0x022106D0
mov r6, r0
@@ -10552,7 +10552,7 @@ _021E1F40:
ble _021E1F78
_021E1F50:
mov r0, r5
- bl FUN_021E1F84
+ bl MOD04_021E1F84
cmp r6, r0
moveq r0, r5
ldmeqia sp!, {r4, r5, r6, pc}
@@ -10567,8 +10567,8 @@ _021E1F78:
.align 2, 0
_021E1F80: .word 0x022106D0
- arm_func_start FUN_021E1F84
-FUN_021E1F84: ; 0x021E1F84
+ arm_func_start MOD04_021E1F84
+MOD04_021E1F84: ; 0x021E1F84
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r1, _021E1FE0 ; =0x022106D0
@@ -10579,7 +10579,7 @@ FUN_021E1F84: ; 0x021E1F84
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {r4, r5, pc}
- bl FUN_021E0F00
+ bl MOD04_021E0F00
mov r1, #0xc
mla r1, r5, r1, r4
bl FUN_02096DA0
@@ -10596,8 +10596,8 @@ _021E1FD4:
.align 2, 0
_021E1FE0: .word 0x022106D0
- arm_func_start FUN_021E1FE4
-FUN_021E1FE4: ; 0x021E1FE4
+ arm_func_start MOD04_021E1FE4
+MOD04_021E1FE4: ; 0x021E1FE4
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x210
ldr r2, _021E2064 ; =0x022106D0
@@ -10609,7 +10609,7 @@ FUN_021E1FE4: ; 0x021E1FE4
addeq sp, sp, #0x210
ldmeqia sp!, {r4, r5, r6, pc}
ldr r0, [r5]
- bl FUN_021E1F18
+ bl MOD04_021E1F18
mov r4, r0
mvn r0, #0
cmp r4, r0
@@ -10618,7 +10618,7 @@ FUN_021E1FE4: ; 0x021E1FE4
ldr r1, [r5, #8]
add r2, sp, #0
mov r0, r6
- bl FUN_021F06E4
+ bl MOD04_021F06E4
ldr r0, _021E2064 ; =0x022106D0
ldr r1, [sp, #4]
ldr r0, [r0]
@@ -10633,8 +10633,8 @@ FUN_021E1FE4: ; 0x021E1FE4
.align 2, 0
_021E2064: .word 0x022106D0
- arm_func_start FUN_021E2068
-FUN_021E2068: ; 0x021E2068
+ arm_func_start MOD04_021E2068
+MOD04_021E2068: ; 0x021E2068
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
mov r4, r1
@@ -10646,23 +10646,23 @@ FUN_021E2068: ; 0x021E2068
addne sp, sp, #0xc
movne r0, #0
ldmneia sp!, {r4, r5, pc}
- ldr r0, _021E20C4 ; =FUN_021E110C
+ ldr r0, _021E20C4 ; =MOD04_021E110C
mov r2, #0
str r0, [sp]
str r2, [sp, #4]
ldr r1, [r4]
mov r0, r5
mov r3, r2
- bl FUN_021F0B9C
+ bl MOD04_021F0B9C
mov r0, #1
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
.align 2, 0
_021E20C0: .word 0x0220D354
-_021E20C4: .word FUN_021E110C
+_021E20C4: .word MOD04_021E110C
- arm_func_start FUN_021E20C8
-FUN_021E20C8: ; 0x021E20C8
+ arm_func_start MOD04_021E20C8
+MOD04_021E20C8: ; 0x021E20C8
stmdb sp!, {lr}
sub sp, sp, #0xc
ldr r2, _021E210C ; =0x022106D0
@@ -10671,21 +10671,21 @@ FUN_021E20C8: ; 0x021E20C8
cmp r2, #0
addeq sp, sp, #0xc
ldmeqia sp!, {pc}
- ldr r3, _021E2110 ; =FUN_021E12B8
+ ldr r3, _021E2110 ; =MOD04_021E12B8
mov r2, #0
str r3, [sp]
str r2, [sp, #4]
ldr r1, [r1]
mov r3, r2
- bl FUN_021F0B9C
+ bl MOD04_021F0B9C
add sp, sp, #0xc
ldmfd sp!, {pc}
.align 2, 0
_021E210C: .word 0x022106D0
-_021E2110: .word FUN_021E12B8
+_021E2110: .word MOD04_021E12B8
- arm_func_start FUN_021E2114
-FUN_021E2114: ; 0x021E2114
+ arm_func_start MOD04_021E2114
+MOD04_021E2114: ; 0x021E2114
stmdb sp!, {r4, lr}
ldr r2, _021E2170 ; =0x022106D0
mov r4, r0
@@ -10694,7 +10694,7 @@ FUN_021E2114: ; 0x021E2114
ldmeqia sp!, {r4, pc}
cmp r4, #0
ldmeqia sp!, {r4, pc}
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
ldr r0, _021E2170 ; =0x022106D0
ldr r3, [r0]
ldr r0, [r3]
@@ -10708,13 +10708,13 @@ FUN_021E2114: ; 0x021E2114
mov r0, r4
blx r3
_021E2168:
- bl FUN_021E1CCC
+ bl MOD04_021E1CCC
ldmia sp!, {r4, pc}
.align 2, 0
_021E2170: .word 0x022106D0
- arm_func_start FUN_021E2174
-FUN_021E2174: ; 0x021E2174
+ arm_func_start MOD04_021E2174
+MOD04_021E2174: ; 0x021E2174
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r0, _021E2224 ; =0x022106D0
@@ -10762,8 +10762,8 @@ FUN_021E2174: ; 0x021E2174
.align 2, 0
_021E2224: .word 0x022106D0
- arm_func_start FUN_021E2228
-FUN_021E2228: ; 0x021E2228
+ arm_func_start MOD04_021E2228
+MOD04_021E2228: ; 0x021E2228
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021E2348 ; =0x022106D0
@@ -10775,18 +10775,18 @@ FUN_021E2228: ; 0x021E2228
cmp r0, #0
addeq sp, sp, #4
ldmeqia sp!, {pc}
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {pc}
- bl FUN_021E10F8
+ bl MOD04_021E10F8
cmp r0, #0
bne _021E227C
- bl FUN_021FBE5C
+ bl MOD04_021FBE5C
cmp r0, #0
beq _021E2280
_021E227C:
- bl FUN_021FBD00
+ bl MOD04_021FBD00
_021E2280:
ldr r0, _021E2348 ; =0x022106D0
ldr r0, [r0]
@@ -10796,7 +10796,7 @@ _021E2280:
ldr r0, [r0]
cmp r0, #0
beq _021E231C
- bl FUN_021E1CFC
+ bl MOD04_021E1CFC
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {pc}
@@ -10814,7 +10814,7 @@ _021E2280:
cmp r2, #1
bhi _021E22EC
ldr r1, [r3, #0x14]
- bl FUN_021E1A60
+ bl MOD04_021E1A60
_021E22EC:
ldr r0, _021E2348 ; =0x022106D0
ldr r3, [r0]
@@ -10837,14 +10837,14 @@ _021E231C:
ldmloia sp!, {pc}
mov r0, #0
strb r0, [r1, #0x1f]
- bl FUN_021E1A20
+ bl MOD04_021E1A20
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
_021E2348: .word 0x022106D0
- arm_func_start FUN_021E234C
-FUN_021E234C: ; 0x021E234C
+ arm_func_start MOD04_021E234C
+MOD04_021E234C: ; 0x021E234C
stmdb sp!, {r4, lr}
ldr lr, _021E2428 ; =0x022106D0
mov ip, #0
@@ -10903,8 +10903,8 @@ FUN_021E234C: ; 0x021E234C
.align 2, 0
_021E2428: .word 0x022106D0
- arm_func_start FUN_021E242C
-FUN_021E242C: ; 0x021E242C
+ arm_func_start MOD04_021E242C
+MOD04_021E242C: ; 0x021E242C
ldr r2, _021E2450 ; =0x022106D0
ldr r3, [r2]
cmp r3, #0
@@ -10917,8 +10917,8 @@ FUN_021E242C: ; 0x021E242C
.align 2, 0
_021E2450: .word 0x022106D0
- arm_func_start FUN_021E2454
-FUN_021E2454: ; 0x021E2454
+ arm_func_start MOD04_021E2454
+MOD04_021E2454: ; 0x021E2454
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x104
ldr r2, _021E24DC ; =0x022106D0
@@ -10927,7 +10927,7 @@ FUN_021E2454: ; 0x021E2454
mov r4, r1
cmp r0, #0
beq _021E2480
- bl FUN_021E05FC
+ bl MOD04_021E05FC
cmp r0, #0
bne _021E248C
_021E2480:
@@ -10939,7 +10939,7 @@ _021E248C:
mov r0, r5
mov r1, r4
mov r3, #0xff
- bl FUN_021DD4FC
+ bl MOD04_021DD4FC
mvn r3, #0
cmp r0, r3
addeq sp, sp, #0x104
@@ -10949,7 +10949,7 @@ _021E248C:
mov r1, #0
strb r1, [r2, r0]
mov r0, r3
- bl FUN_021E1E30
+ bl MOD04_021E1E30
cmp r0, #0
moveq r0, #1
movne r0, #0
@@ -10958,14 +10958,14 @@ _021E248C:
.align 2, 0
_021E24DC: .word 0x022106D0
- arm_func_start FUN_021E24E0
-FUN_021E24E0: ; 0x021E24E0
+ arm_func_start MOD04_021E24E0
+MOD04_021E24E0: ; 0x021E24E0
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x100
mov r6, r3
add r3, sp, #0
ldr r4, [sp, #0x110]
- bl FUN_021E259C
+ bl MOD04_021E259C
movs r5, r0
mvneq r1, #0
addeq sp, sp, #0x100
@@ -10977,7 +10977,7 @@ FUN_021E24E0: ; 0x021E24E0
mov r1, r0
add r0, sp, #0
mov r3, r2
- bl FUN_021DD36C
+ bl MOD04_021DD36C
str r0, [r4]
cmp r6, #0
beq _021E2544
@@ -10996,32 +10996,32 @@ _021E2550:
add r0, sp, #0
mov r2, r6
mov r3, r4
- bl FUN_021DD36C
+ bl MOD04_021DD36C
mov r0, r5
add sp, sp, #0x100
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021E2578
-FUN_021E2578: ; 0x021E2578
+ arm_func_start MOD04_021E2578
+MOD04_021E2578: ; 0x021E2578
stmdb sp!, {lr}
sub sp, sp, #4
mov r3, r1
mov r1, #0
str r2, [sp]
mov r2, r1
- bl FUN_021E24E0
+ bl MOD04_021E24E0
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021E259C
-FUN_021E259C: ; 0x021E259C
+ arm_func_start MOD04_021E259C
+MOD04_021E259C: ; 0x021E259C
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x218
mov r6, r1
add r1, sp, #4
mov r4, r2
mov r5, r3
- bl FUN_021E16EC
+ bl MOD04_021E16EC
cmp r0, #0
beq _021E268C
ldr r0, [sp, #8]
@@ -11033,7 +11033,7 @@ FUN_021E259C: ; 0x021E259C
add r1, sp, #0
add r2, sp, #0xc
mov r3, #0x2f
- bl FUN_021DE9F4
+ bl MOD04_021DE9F4
cmp r0, #0
movle r0, #0
strleb r0, [r6]
@@ -11050,7 +11050,7 @@ _021E260C:
add r1, sp, #0
add r2, sp, #0xc
mov r3, #0x2f
- bl FUN_021DE9F4
+ bl MOD04_021DE9F4
cmp r0, #0
movle r0, #0
strleb r0, [r4]
@@ -11093,18 +11093,18 @@ _021E268C:
_021E26B0: .word 0x0220D38C
_021E26B4: .word 0x0220D390
- arm_func_start FUN_021E26B8
-FUN_021E26B8: ; 0x021E26B8
- ldr ip, _021E26CC ; =FUN_021E259C
+ arm_func_start MOD04_021E26B8
+MOD04_021E26B8: ; 0x021E26B8
+ ldr ip, _021E26CC ; =MOD04_021E259C
mov r3, r1
mov r1, #0
mov r2, r1
bx ip
.align 2, 0
-_021E26CC: .word FUN_021E259C
+_021E26CC: .word MOD04_021E259C
- arm_func_start FUN_021E26D0
-FUN_021E26D0: ; 0x021E26D0
+ arm_func_start MOD04_021E26D0
+MOD04_021E26D0: ; 0x021E26D0
ldr r1, _021E26E0 ; =0x022106D8
ldr r1, [r1]
str r0, [r1, #0x1a0]
@@ -11112,51 +11112,51 @@ FUN_021E26D0: ; 0x021E26D0
.align 2, 0
_021E26E0: .word 0x022106D8
- arm_func_start FUN_021E26E4
-FUN_021E26E4: ; 0x021E26E4
+ arm_func_start MOD04_021E26E4
+MOD04_021E26E4: ; 0x021E26E4
ldr r0, _021E26F0 ; =0x022106D8
ldr r0, [r0]
bx lr
.align 2, 0
_021E26F0: .word 0x022106D8
- arm_func_start FUN_021E26F4
-FUN_021E26F4: ; 0x021E26F4
+ arm_func_start MOD04_021E26F4
+MOD04_021E26F4: ; 0x021E26F4
ldr r1, _021E2700 ; =0x022106D8
str r0, [r1]
bx lr
.align 2, 0
_021E2700: .word 0x022106D8
- arm_func_start FUN_021E2704
-FUN_021E2704: ; 0x021E2704
+ arm_func_start MOD04_021E2704
+MOD04_021E2704: ; 0x021E2704
stmdb sp!, {lr}
sub sp, sp, #4
cmp r0, #0
addne sp, sp, #4
movne r0, #1
ldmneia sp!, {pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
beq _021E273C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x17d]
add r1, r1, #1
strb r1, [r0, #0x17d]
_021E273C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
beq _021E275C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x17d]
cmp r0, #5
blo _021E2774
_021E275C:
ldr r1, _021E2780 ; =0xFFFEAE6C
mov r0, #6
- bl FUN_021E8E08
+ bl MOD04_021E8E08
add sp, sp, #4
mov r0, #0
ldmfd sp!, {pc}
@@ -11167,18 +11167,18 @@ _021E2774:
.align 2, 0
_021E2780: .word 0xFFFEAE6C
- arm_func_start FUN_021E2784
-FUN_021E2784: ; 0x021E2784
+ arm_func_start MOD04_021E2784
+MOD04_021E2784: ; 0x021E2784
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x20
mov r5, r0
mov r6, r2
mov r4, r3
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #6
beq _021E27BC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xb
addne sp, sp, #0x20
@@ -11191,21 +11191,21 @@ _021E27BC:
bne _021E29B8
mov r0, #0
str r0, [r4, #8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x14]
add r1, r1, #1
strb r1, [r0, #0x14]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r4]
ldrb r5, [r0, #0x14]
cmp r1, #0
beq _021E2950
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r6, #4]
add r0, r0, r5, lsl #2
str r1, [r0, #0x210]
ldrh r4, [r6, #2]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r2, r4, asr #8
mov r1, r4, lsl #8
add r0, r0, r5, lsl #1
@@ -11214,41 +11214,41 @@ _021E27BC:
orr r1, r2, r1
add r0, r0, #0x200
strh r1, [r0, #0x90]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x17c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x180]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x184]
str r1, [r0, #0x188]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xb
bne _021E2878
mov r0, #0xc
- bl FUN_021E26D0
+ bl MOD04_021E26D0
b _021E2880
_021E2878:
mov r0, #7
- bl FUN_021E26D0
+ bl MOD04_021E26D0
_021E2880:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0xc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r3, [r0, #0x200]
ldr r2, _021E2B58 ; =0x0220D394
add r0, sp, #0x10
mov r1, #0xc
bl OS_SNPrintf
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r6, r5, lsl #2
mov r2, r0
ldr r0, [r1, #0x210]
@@ -11256,9 +11256,9 @@ _021E2880:
add r1, r1, #0x200
ldrh r1, [r1, #0x90]
mov r2, #0
- bl FUN_021FFEB0
+ bl MOD04_021FFEB0
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mvn r1, #0
str r1, [sp]
ldr r3, _021E2B5C ; =0x00001388
@@ -11271,20 +11271,20 @@ _021E2880:
ldr r0, [r4, #4]
add r3, sp, #0x10
ldr r0, [r0]
- bl FUN_021FD52C
+ bl MOD04_021FD52C
cmp r0, #1
bne _021E2928
- bl FUN_021E36B0
+ bl MOD04_021E36B0
add sp, sp, #0x20
ldmia sp!, {r4, r5, r6, pc}
_021E2928:
cmp r0, #0
addeq sp, sp, #0x20
ldmeqia sp!, {r4, r5, r6, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r5, lsl #2
ldr r0, [r0, #0xf4]
- bl FUN_021E59D4
+ bl MOD04_021E59D4
add sp, sp, #0x20
cmp r0, #0
ldmia sp!, {r4, r5, r6, pc}
@@ -11292,12 +11292,12 @@ _021E2950:
cmp r6, #0
beq _021E2994
sub r4, r5, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r6, #4]
add r0, r0, r4, lsl #2
str r1, [r0, #0x210]
ldrh r5, [r6, #2]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r2, r5, asr #8
mov r1, r5, lsl #8
add r0, r0, r4, lsl #1
@@ -11307,13 +11307,13 @@ _021E2950:
add r0, r0, #0x200
strh r1, [r0, #0x90]
_021E2994:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0x18c]
mov r0, #7
str r1, [r4, #0x190]
- bl FUN_021E26D0
+ bl MOD04_021E26D0
add sp, sp, #0x20
ldmia sp!, {r4, r5, r6, pc}
_021E29B8:
@@ -11322,7 +11322,7 @@ _021E29B8:
addeq sp, sp, #0x20
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r5
- bl FUN_021E3754
+ bl MOD04_021E3754
mov r6, r0
cmp r6, #2
beq _021E29E8
@@ -11343,17 +11343,17 @@ _021E29E8:
_021E2A10:
mov r0, #0
str r0, [r4, #8]
- bl FUN_021E2704
+ bl MOD04_021E2704
cmp r0, #0
addeq sp, sp, #0x20
ldmeqia sp!, {r4, r5, r6, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r4, r0, lsl #2
ldr r0, [r0, #0xf4]
- bl FUN_021E5908
+ bl MOD04_021E5908
add sp, sp, #0x20
cmp r0, #0
ldmia sp!, {r4, r5, r6, pc}
@@ -11362,13 +11362,13 @@ _021E2A50:
mov r0, r4
add r1, r1, #1
strb r1, [r4, #1]
- bl FUN_021E7A44
- bl FUN_021E37A4
+ bl MOD04_021E7A44
+ bl MOD04_021E37A4
add sp, sp, #0x20
cmp r0, #0
ldmia sp!, {r4, r5, r6, pc}
_021E2A74:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
bl OS_GetTick
str r0, [r5, #0x184]
@@ -11378,7 +11378,7 @@ _021E2A74:
cmp r6, #2
addne sp, sp, #0x20
ldmneia sp!, {r4, r5, r6, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x17c]
cmp r0, #1
addlo sp, sp, #0x20
@@ -11386,46 +11386,46 @@ _021E2A74:
_021E2AB0:
mov r0, #0
str r0, [r4, #8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
beq _021E2AD8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
bne _021E2AF0
_021E2AD8:
mov r0, #1
- bl FUN_021E2704
+ bl MOD04_021E2704
cmp r0, #0
bne _021E2B04
add sp, sp, #0x20
ldmia sp!, {r4, r5, r6, pc}
_021E2AF0:
mov r0, #0
- bl FUN_021E2704
+ bl MOD04_021E2704
cmp r0, #0
addeq sp, sp, #0x20
ldmeqia sp!, {r4, r5, r6, pc}
_021E2B04:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x17c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x180]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x184]
str r1, [r0, #0x188]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r0, #1
add r0, r4, r0, lsl #2
ldr r0, [r0, #0xf4]
- bl FUN_021E59D4
+ bl MOD04_021E59D4
cmp r0, #0
add sp, sp, #0x20
ldmia sp!, {r4, r5, r6, pc}
@@ -11433,29 +11433,29 @@ _021E2B04:
_021E2B58: .word 0x0220D394
_021E2B5C: .word 0x00001388
- arm_func_start FUN_021E2B60
-FUN_021E2B60: ; 0x021E2B60
+ arm_func_start MOD04_021E2B60
+MOD04_021E2B60: ; 0x021E2B60
bx lr
- arm_func_start FUN_021E2B64
-FUN_021E2B64: ; 0x021E2B64
+ arm_func_start MOD04_021E2B64
+MOD04_021E2B64: ; 0x021E2B64
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x9c
mov sl, r0
mov sb, r1
mov r8, #0
- bl FUN_021DF88C
+ bl MOD04_021DF88C
cmp r0, #5
beq _021E2BB8
- bl FUN_021DF88C
+ bl MOD04_021DF88C
cmp r0, #6
addne sp, sp, #0x9c
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
beq _021E2BB8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
addne sp, sp, #0x9c
@@ -11497,7 +11497,7 @@ _021E2BD8:
ldrh r3, [sp, #0x12]
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x14]
- bl FUN_021E6730
+ bl MOD04_021E6730
cmp r0, #0
addeq sp, sp, #0x9c
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -11512,85 +11512,85 @@ _021E2BD8:
.align 2, 0
_021E2C74: .word 0x0220D398
- arm_func_start FUN_021E2C78
-FUN_021E2C78: ; 0x021E2C78
+ arm_func_start MOD04_021E2C78
+MOD04_021E2C78: ; 0x021E2C78
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #1
bne _021E2C9C
mov r0, #6
- bl FUN_021E26D0
+ bl MOD04_021E26D0
b _021E2CBC
_021E2C9C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #6
beq _021E2CBC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xb
ldmneia sp!, {r4, pc}
_021E2CBC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x180]
cmp r4, r0
bne _021E2CE0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x17c]
add r1, r1, #1
strb r1, [r0, #0x17c]
b _021E2CF4
_021E2CE0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x17c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r4, [r0, #0x180]
_021E2CF4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r2, #0
str r2, [r0, #0x184]
str r2, [r0, #0x188]
mov r1, r4
mov r0, #1
- bl FUN_021E7B04
- bl FUN_021E37A4
+ bl MOD04_021E7B04
+ bl MOD04_021E37A4
cmp r0, #0
ldmneia sp!, {r4, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0xff
strb r1, [r0, #0x3cc]
ldmia sp!, {r4, pc}
- arm_func_start FUN_021E2D2C
-FUN_021E2D2C: ; 0x021E2D2C
+ arm_func_start MOD04_021E2D2C
+MOD04_021E2D2C: ; 0x021E2D2C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
mov r4, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r5, [r0, #0x1c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
strh r4, [r0, #0x1a]
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021E2D54
-FUN_021E2D54: ; 0x021E2D54
- ldr ip, _021E2D5C ; =FUN_021E3800
+ arm_func_start MOD04_021E2D54
+MOD04_021E2D54: ; 0x021E2D54
+ ldr ip, _021E2D5C ; =MOD04_021E3800
bx ip
.align 2, 0
-_021E2D5C: .word FUN_021E3800
+_021E2D5C: .word MOD04_021E3800
- arm_func_start FUN_021E2D60
-FUN_021E2D60: ; 0x021E2D60
+ arm_func_start MOD04_021E2D60
+MOD04_021E2D60: ; 0x021E2D60
mov r0, #0
bx lr
- arm_func_start FUN_021E2D68
-FUN_021E2D68: ; 0x021E2D68
+ arm_func_start MOD04_021E2D68
+MOD04_021E2D68: ; 0x021E2D68
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
cmp r0, #0
@@ -11602,25 +11602,25 @@ FUN_021E2D68: ; 0x021E2D68
_021E2D88:
mov r0, r6
mov r1, #8
- bl FUN_02202254
+ bl MOD04_02202254
mov r0, r6
mov r1, #0xa
- bl FUN_02202254
+ bl MOD04_02202254
mov r0, r6
mov r1, #0x32
- bl FUN_02202254
+ bl MOD04_02202254
mov r0, r6
mov r1, #0x33
- bl FUN_02202254
+ bl MOD04_02202254
mov r0, r6
mov r1, #0x34
- bl FUN_02202254
+ bl MOD04_02202254
mov r0, r6
mov r1, #0x35
- bl FUN_02202254
+ bl MOD04_02202254
mov r0, r6
mov r1, #0x36
- bl FUN_02202254
+ bl MOD04_02202254
ldr r4, _021E2E0C ; =0x02210704
mov r5, #0
_021E2DE4:
@@ -11628,7 +11628,7 @@ _021E2DE4:
cmp r1, #0
beq _021E2DF8
mov r0, r6
- bl FUN_02202254
+ bl MOD04_02202254
_021E2DF8:
add r5, r5, #1
cmp r5, #0x9a
@@ -11638,16 +11638,16 @@ _021E2DF8:
.align 2, 0
_021E2E0C: .word 0x02210704
- arm_func_start FUN_021E2E10
-FUN_021E2E10: ; 0x021E2E10
+ arm_func_start MOD04_021E2E10
+MOD04_021E2E10: ; 0x021E2E10
bx lr
- arm_func_start FUN_021E2E14
-FUN_021E2E14: ; 0x021E2E14
+ arm_func_start MOD04_021E2E14
+MOD04_021E2E14: ; 0x021E2E14
bx lr
- arm_func_start FUN_021E2E18
-FUN_021E2E18: ; 0x021E2E18
+ arm_func_start MOD04_021E2E18
+MOD04_021E2E18: ; 0x021E2E18
stmdb sp!, {r4, lr}
mov r4, r1
cmp r0, #0x32
@@ -11674,44 +11674,44 @@ _021E2E64: ; jump table
b _021E2ED8 ; case 2
b _021E2EE8 ; case 3
_021E2E74:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x14]
mov r0, r4
- bl FUN_02202220
+ bl MOD04_02202220
ldmia sp!, {r4, pc}
_021E2E88:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x16]
mov r0, r4
- bl FUN_02202220
+ bl MOD04_02202220
ldmia sp!, {r4, pc}
_021E2E9C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x200]
mov r0, r4
- bl FUN_02202220
+ bl MOD04_02202220
ldmia sp!, {r4, pc}
_021E2EB0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x15]
mov r0, r4
- bl FUN_02202220
+ bl MOD04_02202220
ldmia sp!, {r4, pc}
_021E2EC4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x20]
mov r0, r4
- bl FUN_02202220
+ bl MOD04_02202220
ldmia sp!, {r4, pc}
_021E2ED8:
mov r0, r4
mov r1, #3
- bl FUN_02202220
+ bl MOD04_02202220
ldmia sp!, {r4, pc}
_021E2EE8:
mov r0, r4
mov r1, #1
- bl FUN_02202220
+ bl MOD04_02202220
ldmia sp!, {r4, pc}
_021E2EF8:
subs r1, r0, #0x64
@@ -11731,76 +11731,76 @@ _021E2EF8:
ldr r1, _021E2F64 ; =0x0221070C
mov r0, r4
ldr r1, [r1, r2]
- bl FUN_022021C0
+ bl MOD04_022021C0
ldmia sp!, {r4, pc}
_021E2F44:
ldr r1, _021E2F64 ; =0x0221070C
mov r0, r4
ldr r1, [r1, r2]
ldr r1, [r1]
- bl FUN_02202220
+ bl MOD04_02202220
ldmia sp!, {r4, pc}
.align 2, 0
_021E2F5C: .word 0x02210704
_021E2F60: .word 0x02210705
_021E2F64: .word 0x0221070C
- arm_func_start FUN_021E2F68
-FUN_021E2F68: ; 0x021E2F68
+ arm_func_start MOD04_021E2F68
+MOD04_021E2F68: ; 0x021E2F68
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x1c
mov r8, #0
mov r7, r8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r0, #1
addle sp, sp, #0x1c
ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov sb, r8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r0, #0
ble _021E2FF8
ldr r4, _021E30D8 ; =0x0220BAC4
ldr r6, _021E30DC ; =0x0220D3A0
mvn r5, #0
_021E2FB4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
mov r1, sb
- bl FUN_02203BF4
+ bl MOD04_02203BF4
mov r1, r6
mov r2, r5
- bl FUN_0220394C
+ bl MOD04_0220394C
cmp r0, r8
movgt r8, r0
ldr r0, [r4, sb, lsl #2]
add sb, sb, #1
add r7, r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp sb, r0
blt _021E2FB4
_021E2FF8:
mov r0, #0x64
- bl FUN_021DE8C8
+ bl MOD04_021DE8C8
mov sb, r0
mov r6, #0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r0, #0
ble _021E3090
add r5, sp, #0
mov fp, r6
mov r4, #0x64
_021E3028:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203BE4
+ bl MOD04_02203BE4
sub r0, r0, #1
cmp r6, r0
beq _021E3090
@@ -11819,45 +11819,45 @@ _021E3028:
cmp sb, r0
blo _021E3090
add r6, r6, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r6, r0
blt _021E3028
_021E3090:
mvn r0, #0x80000000
cmp r8, r0
addlt r8, r8, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
mov r1, r6
- bl FUN_02203BF4
+ bl MOD04_02203BF4
ldr r1, _021E30DC ; =0x0220D3A0
mov r2, r8
- bl FUN_02203A48
- bl FUN_021E26E4
+ bl MOD04_02203A48
+ bl MOD04_021E26E4
mov r1, #0
ldr r0, [r0, #0xe4]
ldr r2, _021E30DC ; =0x0220D3A0
mov r3, r1
- bl FUN_02203BD4
+ bl MOD04_02203BD4
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_021E30D8: .word 0x0220BAC4
_021E30DC: .word 0x0220D3A0
- arm_func_start FUN_021E30E0
-FUN_021E30E0: ; 0x021E30E0
+ arm_func_start MOD04_021E30E0
+MOD04_021E30E0: ; 0x021E30E0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov r1, #0
str r1, [sp, #4]
str r0, [sp]
mov r8, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r0, #0
ble _021E3268
mov r0, #0x80
@@ -11866,42 +11866,42 @@ FUN_021E30E0: ; 0x021E30E0
str r0, [sp, #8]
mov fp, #0x100
_021E3120:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
mov r1, r8
- bl FUN_02203BF4
+ bl MOD04_02203BF4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E31BC
ldr r1, _021E32D4 ; =0x0220D3AC
mov r0, r6
mov r2, r5
- bl FUN_0220394C
+ bl MOD04_0220394C
mov sb, r0
mov sl, r5
mov r7, r4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E31B4
_021E3170:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r7, lsl #2
ldr r0, [r0, #0xf4]
cmp sb, r0
bne _021E31A0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
mov r1, r6
- bl FUN_02203C50
+ bl MOD04_02203C50
mov sl, r4
sub r8, r8, #1
b _021E31B4
_021E31A0:
add r7, r7, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r7, r0
ble _021E3170
@@ -11909,13 +11909,13 @@ _021E31B4:
cmp sl, #0
bne _021E3250
_021E31BC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x474]
cmp r0, #0
beq _021E3238
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x478]
ldr r2, [r7, #0x474]
mov r0, r8
@@ -11927,56 +11927,56 @@ _021E31BC:
cmp r7, r0
movgt r7, r0
mov r0, fp
- bl FUN_021DE8C8
+ bl MOD04_021DE8C8
orr r2, r0, r7, lsl #8
ldr r1, _021E32DC ; =0x0220D3A0
mov r0, r6
- bl FUN_02203A48
+ bl MOD04_02203A48
b _021E3250
_021E321C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
mov r1, r6
- bl FUN_02203C50
+ bl MOD04_02203C50
str r4, [sp, #4]
sub r8, r8, #1
b _021E3250
_021E3238:
ldr r0, [sp, #8]
- bl FUN_021DE8C8
+ bl MOD04_021DE8C8
mov r2, r0
ldr r1, _021E32DC ; =0x0220D3A0
mov r0, r6
- bl FUN_02203A48
+ bl MOD04_02203A48
_021E3250:
add r8, r8, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r8, r0
blt _021E3120
_021E3268:
ldr r0, [sp]
cmp r0, #0
beq _021E32A0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r0, #0
beq _021E32A0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
ldr r0, [r0, #0xe4]
ldr r2, _021E32DC ; =0x0220D3A0
mov r3, r1
- bl FUN_02203BD4
+ bl MOD04_02203BD4
_021E32A0:
ldr r0, [sp, #4]
cmp r0, #0
beq _021E32C8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r0, #0
addeq sp, sp, #0xc
moveq r0, #0
@@ -11990,12 +11990,12 @@ _021E32D4: .word 0x0220D3AC
_021E32D8: .word 0x007FFFFF
_021E32DC: .word 0x0220D3A0
- arm_func_start FUN_021E32E0
-FUN_021E32E0: ; 0x021E32E0
+ arm_func_start MOD04_021E32E0
+MOD04_021E32E0: ; 0x021E32E0
bx lr
- arm_func_start FUN_021E32E4
-FUN_021E32E4: ; 0x021E32E4
+ arm_func_start MOD04_021E32E4
+MOD04_021E32E4: ; 0x021E32E4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r6, r0
@@ -12008,34 +12008,34 @@ FUN_021E32E4: ; 0x021E32E4
ldmia sp!, {r4, r5, r6, r7, pc}
_021E330C:
mov r0, r2
- bl FUN_021E32E0
+ bl MOD04_021E32E0
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
_021E331C:
mov r5, #0
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r0, #0
ble _021E336C
_021E332C:
mov r0, r6
mov r1, r5
- bl FUN_02203BF4
+ bl MOD04_02203BF4
mov r4, r0
- bl FUN_021E3F98
+ bl MOD04_021E3F98
cmp r0, #0
bne _021E3358
mov r0, r6
mov r1, r4
- bl FUN_02203C50
+ bl MOD04_02203C50
sub r5, r5, #1
_021E3358:
mov r0, r6
add r5, r5, #1
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r5, r0
blt _021E332C
_021E336C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #2
beq _021E3394
@@ -12048,64 +12048,64 @@ _021E336C:
_021E3394:
mov r0, r6
mov r5, #0
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r0, #0
ble _021E3424
_021E33A8:
mov r0, r6
mov r1, r5
- bl FUN_02203BF4
+ bl MOD04_02203BF4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1c]
cmp r0, #0
beq _021E3410
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
mov r0, r4
- bl FUN_02203908
+ bl MOD04_02203908
ldr r1, [r7, #0x1c]
cmp r1, r0
bne _021E3410
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrh r0, [r0, #0x1a]
cmp r0, #0
beq _021E3410
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
mov r0, r4
- bl FUN_022038E4
+ bl MOD04_022038E4
ldrh r1, [r7, #0x1a]
cmp r1, r0
beq _021E3424
_021E3410:
mov r0, r6
add r5, r5, #1
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r5, r0
blt _021E33A8
_021E3424:
mov r0, r6
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r5, r0
bge _021E3464
mov r0, #3
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x204]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x204]
- bl FUN_021E7E5C
- bl FUN_021E38E8
+ bl MOD04_021E7E5C
+ bl MOD04_021E38E8
add sp, sp, #4
cmp r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
_021E3464:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #2
str r1, [r0, #0xe8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0xec]
@@ -12114,31 +12114,31 @@ _021E3464:
ldmia sp!, {r4, r5, r6, r7, pc}
_021E348C:
mov r0, #1
- bl FUN_021E30E0
- bl FUN_021E2F68
+ bl MOD04_021E30E0
+ bl MOD04_021E2F68
mov r0, r6
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r0, #0
beq _021E34E0
mov r0, #0
mov r1, r0
- bl FUN_021E6038
- bl FUN_021E61EC
+ bl MOD04_021E6038
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {r4, r5, r6, r7, pc}
mov r0, #4
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0xe8]
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
_021E34E0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #2
str r1, [r0, #0xe8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0xec]
@@ -12147,25 +12147,25 @@ _021E34E0:
ldmia sp!, {r4, r5, r6, r7, pc}
_021E3508:
mov r0, r6
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r0, #0
beq _021E3580
mov r4, #0
_021E351C:
mov r0, r6
mov r1, r4
- bl FUN_02203BF4
+ bl MOD04_02203BF4
mov r5, r0
- bl FUN_02203908
+ bl MOD04_02203908
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1b8]
cmp r7, r0
bne _021E3564
mov r0, r5
- bl FUN_022038E4
+ bl MOD04_022038E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x100
ldrh r0, [r0, #0xb4]
cmp r7, r0
@@ -12173,84 +12173,84 @@ _021E351C:
_021E3564:
mov r0, r6
mov r1, r5
- bl FUN_02203C50
+ bl MOD04_02203C50
mov r0, r6
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r0, #0
bne _021E351C
_021E3580:
mov r0, r6
- bl FUN_02203BE4
+ bl MOD04_02203BE4
cmp r0, #0
beq _021E3684
mov r0, r6
mov r1, #0
- bl FUN_02203BF4
+ bl MOD04_02203BF4
ldr r1, _021E36AC ; =0x0220D3AC
mov r2, #0
- bl FUN_0220394C
+ bl MOD04_0220394C
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E3650
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
cmp r4, r0
bne _021E3650
mov r0, #0
- bl FUN_021E30E0
+ bl MOD04_021E30E0
cmp r0, #0
beq _021E3604
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0
beq _021E3650
- bl FUN_021E5824
- bl FUN_021E61EC
+ bl MOD04_021E5824
+ bl MOD04_021E61EC
cmp r0, #0
beq _021E3650
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
_021E3604:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
- bl FUN_021E5BF0
- bl FUN_021E61EC
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {r4, r5, r6, r7, pc}
mov r0, #4
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
mov r1, r0
mov r0, #0
ldr r2, [r1, #0xf4]
mov r1, r0
- bl FUN_021E5D30
- bl FUN_021E61EC
+ bl MOD04_021E5D30
+ bl MOD04_021E61EC
add sp, sp, #4
cmp r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
_021E3650:
mov r0, #6
- bl FUN_021E26D0
+ bl MOD04_021E26D0
mov r0, r6
mov r1, #0
- bl FUN_02203BF4
+ bl MOD04_02203BF4
mov r2, r0
mov r0, #0
mov r1, r0
- bl FUN_021E7B04
- bl FUN_021E37A4
+ bl MOD04_021E7B04
+ bl MOD04_021E37A4
add sp, sp, #4
cmp r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
_021E3684:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #2
str r1, [r0, #0xe8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0xec]
@@ -12260,8 +12260,8 @@ _021E3684:
.align 2, 0
_021E36AC: .word 0x0220D3AC
- arm_func_start FUN_021E36B0
-FUN_021E36B0: ; 0x021E36B0
+ arm_func_start MOD04_021E36B0
+MOD04_021E36B0: ; 0x021E36B0
stmdb sp!, {r4, lr}
movs r4, r0
moveq r0, #0
@@ -12307,15 +12307,15 @@ _021E3734:
beq _021E3748
ldr r1, _021E3750 ; =0xFFFEAC28
add r1, r2, r1
- bl FUN_021E8E08
+ bl MOD04_021E8E08
_021E3748:
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_021E3750: .word 0xFFFEAC28
- arm_func_start FUN_021E3754
-FUN_021E3754: ; 0x021E3754
+ arm_func_start MOD04_021E3754
+MOD04_021E3754: ; 0x021E3754
stmdb sp!, {r4, lr}
movs r4, r0
moveq r0, #0
@@ -12335,15 +12335,15 @@ _021E3788:
movs r0, #6
beq _021E3798
ldr r1, _021E37A0 ; =0xFFFEB007
- bl FUN_021E8E08
+ bl MOD04_021E8E08
_021E3798:
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_021E37A0: .word 0xFFFEB007
- arm_func_start FUN_021E37A4
-FUN_021E37A4: ; 0x021E37A4
+ arm_func_start MOD04_021E37A4
+MOD04_021E37A4: ; 0x021E37A4
stmdb sp!, {r4, lr}
movs r4, r0
moveq r0, #0
@@ -12366,14 +12366,14 @@ _021E37E0:
_021E37E8:
ldr r1, _021E37FC ; =0xFFFEB010
add r1, r2, r1
- bl FUN_021E8E08
+ bl MOD04_021E8E08
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_021E37FC: .word 0xFFFEB010
- arm_func_start FUN_021E3800
-FUN_021E3800: ; 0x021E3800
+ arm_func_start MOD04_021E3800
+MOD04_021E3800: ; 0x021E3800
stmdb sp!, {r4, r5, r6, lr}
movs r6, r0
moveq r0, #0
@@ -12408,7 +12408,7 @@ _021E3864:
mov r4, #6
mvn r5, #0x13
_021E386C:
- bl FUN_021DF88C
+ bl MOD04_021DF88C
cmp r0, #2
beq _021E388C
cmp r0, #4
@@ -12419,25 +12419,25 @@ _021E386C:
_021E388C:
mov r0, r4
sub r1, r5, #0xfa00
- bl FUN_021E0EAC
+ bl MOD04_021E0EAC
b _021E38D4
_021E389C:
ldr r1, _021E38DC ; =0xFFFEDEF0
mov r0, r4
add r1, r5, r1
- bl FUN_021E2114
+ bl MOD04_021E2114
b _021E38D4
_021E38B0:
ldr r1, _021E38E0 ; =0xFFFEB7E0
mov r0, r4
add r1, r5, r1
- bl FUN_021E8E08
+ bl MOD04_021E8E08
b _021E38D4
_021E38C4:
ldr r1, _021E38E4 ; =0xFFFE90D0
mov r0, r4
add r1, r5, r1
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
_021E38D4:
mov r0, r6
ldmia sp!, {r4, r5, r6, pc}
@@ -12446,8 +12446,8 @@ _021E38DC: .word 0xFFFEDEF0
_021E38E0: .word 0xFFFEB7E0
_021E38E4: .word 0xFFFE90D0
- arm_func_start FUN_021E38E8
-FUN_021E38E8: ; 0x021E38E8
+ arm_func_start MOD04_021E38E8
+MOD04_021E38E8: ; 0x021E38E8
stmdb sp!, {r4, lr}
movs r4, r0
moveq r0, #0
@@ -12489,14 +12489,14 @@ _021E395C:
_021E3964:
ldr r1, _021E3978 ; =0xFFFEB3F8
add r1, r2, r1
- bl FUN_021E8E08
+ bl MOD04_021E8E08
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_021E3978: .word 0xFFFEB3F8
- arm_func_start FUN_021E397C
-FUN_021E397C: ; 0x021E397C
+ arm_func_start MOD04_021E397C
+MOD04_021E397C: ; 0x021E397C
stmdb sp!, {r4, lr}
movs r4, r0
moveq r0, #0
@@ -12528,14 +12528,14 @@ _021E39D0:
_021E39D8:
ldr r1, _021E39EC ; =0xFFFEC398
add r1, r2, r1
- bl FUN_021E8E08
+ bl MOD04_021E8E08
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
_021E39EC: .word 0xFFFEC398
- arm_func_start FUN_021E39F0
-FUN_021E39F0: ; 0x021E39F0
+ arm_func_start MOD04_021E39F0
+MOD04_021E39F0: ; 0x021E39F0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #8
ldr r0, _021E3E1C ; =0x022106D4
@@ -12547,22 +12547,22 @@ FUN_021E39F0: ; 0x021E39F0
cmp r0, #0
addeq sp, sp, #8
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
addeq sp, sp, #8
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
addeq sp, sp, #8
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0x13
bne _021E3C58
mov r0, #0
- bl FUN_021E3EC4
+ bl MOD04_021E3EC4
ldr r1, _021E3E1C ; =0x022106D4
ldr r5, [r1]
ldr r1, [r5, #8]
@@ -12571,19 +12571,19 @@ FUN_021E39F0: ; 0x021E39F0
ldr r1, [r5, #0xc]
cmp r1, r0
bne _021E3AB8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
strb r0, [r4, #0x16]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0xd]
mov r0, #0
sub r1, r1, #1
strb r1, [r4, #0x1a4]
- bl FUN_021E51C0
+ bl MOD04_021E51C0
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E3AB8:
@@ -12592,16 +12592,16 @@ _021E3AB8:
str r1, [r5, #0x1c]
mov r0, #0
str r0, [r5, #8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E3B0C
mov r0, #3
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
mov r1, #2
str r1, [r0, #0xe8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0xec]
@@ -12610,11 +12610,11 @@ _021E3AB8:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E3B0C:
mov r0, #4
- bl FUN_021E26D0
+ bl MOD04_021E26D0
mov r1, #0
mov r2, r1
mov r0, #1
- bl FUN_021E5D30
+ bl MOD04_021E5D30
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E3B2C:
@@ -12639,15 +12639,15 @@ _021E3B2C:
cmp r4, #5
bls _021E3B98
mov r0, #1
- bl FUN_021E3E28
- bl FUN_021E4B40
+ bl MOD04_021E3E28
+ bl MOD04_021E4B40
mov r0, #1
- bl FUN_021E4CF8
+ bl MOD04_021E4CF8
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E3B98:
mov r7, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E3C3C
@@ -12656,7 +12656,7 @@ _021E3B98:
mov r4, #0x11
mov r6, r7
_021E3BBC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r7
ldrb r0, [r0, #0x2d0]
ldr r1, [r8]
@@ -12664,11 +12664,11 @@ _021E3BBC:
ldr r1, [r1, #8]
ands r0, r1, r0
bne _021E3C28
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sl, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sb, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r5, [sp]
str r5, [sp, #4]
add r0, r0, r7, lsl #1
@@ -12678,14 +12678,14 @@ _021E3BBC:
ldr r1, [r1, #0xf4]
ldr r2, [r2, #0x24]
mov r0, r4
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #8
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E3C28:
add r7, r7, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r7, r0
ble _021E3BBC
@@ -12698,11 +12698,11 @@ _021E3C3C:
strb r0, [r1, #2]
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E3C58:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #4
beq _021E3C7C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #3
addne sp, sp, #8
@@ -12710,7 +12710,7 @@ _021E3C58:
_021E3C7C:
ldr r0, _021E3E1C ; =0x022106D4
ldr r4, [r0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r4, #1]
ldrb r2, [r0, #0xd]
sub r0, r1, #1
@@ -12761,33 +12761,33 @@ _021E3CF0:
addlo sp, sp, #8
ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E3D48:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x204]
cmp r0, #0
beq _021E3D74
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x204]
- bl FUN_021E5BF0
- bl FUN_021E61EC
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #8
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E3D74:
mov r0, #0x13
- bl FUN_021E26D0
+ bl MOD04_021E26D0
mov r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E3DF8
mov r6, #0
mov r5, #0x11
_021E3D98:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r8, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r6, [sp]
str r6, [sp, #4]
add r0, r0, r4, lsl #1
@@ -12797,13 +12797,13 @@ _021E3D98:
ldr r1, [r1, #0xf4]
ldr r2, [r2, #0x24]
mov r0, r5
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #8
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
add r4, r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r4, r0
ble _021E3D98
@@ -12822,8 +12822,8 @@ _021E3E1C: .word 0x022106D4
_021E3E20: .word 0x000082EA
_021E3E24: .word 0x00001770
- arm_func_start FUN_021E3E28
-FUN_021E3E28: ; 0x021E3E28
+ arm_func_start MOD04_021E3E28
+MOD04_021E3E28: ; 0x021E3E28
stmdb sp!, {r4, lr}
ldr r1, _021E3E98 ; =0x022106D4
mov r4, r0
@@ -12855,43 +12855,43 @@ FUN_021E3E28: ; 0x021E3E28
.align 2, 0
_021E3E98: .word 0x022106D4
- arm_func_start FUN_021E3E9C
-FUN_021E3E9C: ; 0x021E3E9C
+ arm_func_start MOD04_021E3E9C
+MOD04_021E3E9C: ; 0x021E3E9C
stmdb sp!, {r4, lr}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1ad]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0x1f8]
str r1, [r4, #0x1fc]
ldmia sp!, {r4, pc}
- arm_func_start FUN_021E3EC4
-FUN_021E3EC4: ; 0x021E3EC4
+ arm_func_start MOD04_021E3EC4
+MOD04_021E3EC4: ; 0x021E3EC4
stmdb sp!, {r4, r5, r6, lr}
cmp r0, #0
mov r6, #0
beq _021E3EE4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x2f0]
bic r0, r0, #1
ldmia sp!, {r4, r5, r6, pc}
_021E3EE4:
mov r5, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E3F20
mov r4, r5
_021E3EFC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r5
ldrb r0, [r0, #0x2d0]
add r5, r5, #1
orr r6, r6, r4, lsl r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r5, r0
ble _021E3EFC
@@ -12899,32 +12899,32 @@ _021E3F20:
mov r0, r6
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021E3F28
-FUN_021E3F28: ; 0x021E3F28
+ arm_func_start MOD04_021E3F28
+MOD04_021E3F28: ; 0x021E3F28
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
cmp r1, #0
moveq r4, #1
mov r5, r0
movne r4, #0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r4, r0
bgt _021E3F8C
_021E3F50:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4, lsl #2
ldr r0, [r0, #0xf4]
cmp r5, r0
bne _021E3F78
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4
add sp, sp, #4
ldrb r0, [r0, #0x2d0]
ldmia sp!, {r4, r5, pc}
_021E3F78:
add r4, r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r4, r0
ble _021E3F50
@@ -12933,41 +12933,41 @@ _021E3F8C:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021E3F98
-FUN_021E3F98: ; 0x021E3F98
+ arm_func_start MOD04_021E3F98
+MOD04_021E3F98: ; 0x021E3F98
stmdb sp!, {r4, lr}
ldr r1, _021E405C ; =0x0220D3B4
mvn r2, #0
mov r4, r0
- bl FUN_0220394C
+ bl MOD04_0220394C
mvn r2, #0
cmp r0, r2
moveq r0, #0
ldmeqia sp!, {r4, pc}
ldr r1, _021E4060 ; =0x0220D3C0
mov r0, r4
- bl FUN_0220394C
+ bl MOD04_0220394C
mvn r2, #0
cmp r0, r2
moveq r0, #0
ldmeqia sp!, {r4, pc}
ldr r1, _021E4064 ; =0x0220D3CC
mov r0, r4
- bl FUN_0220394C
+ bl MOD04_0220394C
mvn r2, #0
cmp r0, r2
moveq r0, #0
ldmeqia sp!, {r4, pc}
ldr r1, _021E4068 ; =0x0220D3D8
mov r0, r4
- bl FUN_0220394C
+ bl MOD04_0220394C
mvn r1, #0
cmp r0, r1
bne _021E4028
ldr r1, _021E4068 ; =0x0220D3D8
mov r0, r4
mov r2, #0
- bl FUN_0220394C
+ bl MOD04_0220394C
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
@@ -12975,7 +12975,7 @@ _021E4028:
ldr r1, _021E406C ; =0x0220D3E4
mov r0, r4
mvn r2, #0
- bl FUN_0220394C
+ bl MOD04_0220394C
mvn r1, #0
cmp r0, r1
moveq r0, #0
@@ -12983,7 +12983,7 @@ _021E4028:
ldr r1, _021E4070 ; =0x0220D3AC
mov r0, r4
mov r2, #0
- bl FUN_0220394C
+ bl MOD04_0220394C
ldmia sp!, {r4, pc}
.align 2, 0
_021E405C: .word 0x0220D3B4
@@ -12993,27 +12993,27 @@ _021E4068: .word 0x0220D3D8
_021E406C: .word 0x0220D3E4
_021E4070: .word 0x0220D3AC
- arm_func_start FUN_021E4074
-FUN_021E4074: ; 0x021E4074
+ arm_func_start MOD04_021E4074
+MOD04_021E4074: ; 0x021E4074
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x2fc]
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {r4, r5, pc}
mov r4, #0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x344]
cmp r0, #0
ble _021E40E8
_021E40AC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4
ldrb r0, [r0, #0x304]
- bl FUN_021E1F84
+ bl MOD04_021E1F84
cmp r0, #0
ble _021E40D4
cmp r0, r5
@@ -13022,7 +13022,7 @@ _021E40AC:
ldmeqia sp!, {r4, r5, pc}
_021E40D4:
add r4, r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x344]
cmp r4, r0
blt _021E40AC
@@ -13031,30 +13031,30 @@ _021E40E8:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021E40F4
-FUN_021E40F4: ; 0x021E40F4
+ arm_func_start MOD04_021E40F4
+MOD04_021E40F4: ; 0x021E40F4
stmdb sp!, {r4, r5, r6, lr}
mov r6, #0
mov r4, r6
_021E4100:
mov r5, r4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
cmp r0, #0
blt _021E413C
_021E4114:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r5
ldrb r0, [r0, #0x2d0]
cmp r6, r0
beq _021E413C
add r5, r5, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
cmp r5, r0
ble _021E4114
_021E413C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
cmp r5, r0
bgt _021E415C
@@ -13066,8 +13066,8 @@ _021E415C:
mov r0, r6
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021E4164
-FUN_021E4164: ; 0x021E4164
+ arm_func_start MOD04_021E4164
+MOD04_021E4164: ; 0x021E4164
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
ldr r6, _021E41BC ; =0x02210704
@@ -13080,7 +13080,7 @@ _021E417C:
beq _021E4194
mov r0, r5
mov r2, r4
- bl FUN_021DD904
+ bl MOD04_021DD904
_021E4194:
add r7, r7, #1
cmp r7, #0x9a
@@ -13096,19 +13096,19 @@ _021E4194:
_021E41BC: .word 0x02210704
_021E41C0: .word 0x00000738
- arm_func_start FUN_021E41C4
-FUN_021E41C4: ; 0x021E41C4
+ arm_func_start MOD04_021E41C4
+MOD04_021E41C4: ; 0x021E41C4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #8
beq _021E41FC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xe
beq _021E41FC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xf
bne _021E4240
@@ -13116,7 +13116,7 @@ _021E41FC:
bl OS_GetTick
mov r4, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x1e8]
ldr r0, [r0, #0x1ec]
subs r3, r4, r1
@@ -13135,7 +13135,7 @@ _021E4240:
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, pc}
_021E424C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #8
beq _021E4270
@@ -13149,10 +13149,10 @@ _021E4270:
cmp r5, #0
cmpeq r4, r0
bls _021E43CC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
mov r1, #0xe
- bl FUN_021E4604
+ bl MOD04_021E4604
cmp r0, #0
bne _021E43CC
add sp, sp, #4
@@ -13163,29 +13163,29 @@ _021E42A4:
cmp r5, #0
cmpeq r4, r0
bls _021E43CC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x1ac]
add r1, r1, #1
strb r1, [r0, #0x1ac]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1ac]
cmp r0, #5
bls _021E4330
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1d8]
- bl FUN_021E4A00
+ bl MOD04_021E4A00
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0
beq _021E4324
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1ac]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0x1e8]
@@ -13193,51 +13193,51 @@ _021E42A4:
b _021E43CC
_021E4324:
mov r0, #2
- bl FUN_021E4CF8
+ bl MOD04_021E4CF8
b _021E43CC
_021E4330:
mov r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E43CC
mov r5, #0xd
mov r6, r4
_021E434C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4
ldrb r0, [r0, #0x2d0]
ldr r1, [r7, #0x1d8]
mov r0, r6,lsl r0
ands r0, r1, r0
bne _021E4394
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4, lsl #2
ldr r0, [r0, #0xf4]
mov r1, r5
- bl FUN_021E4604
+ bl MOD04_021E4604
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, pc}
_021E4394:
add r4, r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r4, r0
ble _021E434C
b _021E43CC
_021E43AC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x100
ldrh r0, [r0, #0xb2]
cmp r5, r0, asr #31
cmpeq r4, r0
bls _021E43CC
mov r0, #2
- bl FUN_021E4CF8
+ bl MOD04_021E4CF8
_021E43CC:
mov r0, #1
add sp, sp, #4
@@ -13246,13 +13246,13 @@ _021E43CC:
_021E43D8: .word 0x000082EA
_021E43DC: .word 0x00001770
- arm_func_start FUN_021E43E0
-FUN_021E43E0: ; 0x021E43E0
+ arm_func_start MOD04_021E43E0
+MOD04_021E43E0: ; 0x021E43E0
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
- bl FUN_021DF88C
+ bl MOD04_021DF88C
cmp r0, #6
movne r0, #1
ldmneia sp!, {r4, r5, r6, pc}
@@ -13264,31 +13264,31 @@ FUN_021E43E0: ; 0x021E43E0
beq _021E45E0
b _021E45F8
_021E441C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #8
beq _021E443C
mov r0, #8
- bl FUN_021E26D0
+ bl MOD04_021E26D0
mov r0, r4
- bl FUN_021E4B78
+ bl MOD04_021E4B78
_021E443C:
mov r0, r6
mov r1, #0xe
- bl FUN_021E4604
+ bl MOD04_021E4604
cmp r0, #0
bne _021E45F8
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
_021E4458:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xe
bne _021E45C4
bl OS_GetTick
mov r4, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x1e8]
ldr r0, [r0, #0x1ec]
subs r3, r4, r1
@@ -13305,7 +13305,7 @@ _021E4458:
orr r2, r2, r1, lsl #31
cmpeq r2, #0x12c
bls _021E4524
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x1e8]
ldr r0, [r0, #0x1ec]
subs r3, r4, r1
@@ -13323,82 +13323,82 @@ _021E4458:
mvn r2, #0
adds r5, r3, r0
adc r4, r2, r1, lsr #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x100
ldrh r0, [r0, #0xb2]
cmp r4, r0, asr #31
cmpeq r5, r0
bls _021E4524
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x100
strh r5, [r0, #0xb2]
_021E4524:
mov r0, r6
mov r1, #0
- bl FUN_021E3F28
+ bl MOD04_021E3F28
mov r4, r0
cmp r4, #0xff
beq _021E4550
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r2, [r0, #0x1d8]
mov r1, #1
orr r1, r2, r1, lsl r4
str r1, [r0, #0x1d8]
_021E4550:
mov r0, #1
- bl FUN_021E3EC4
+ bl MOD04_021E3EC4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1d8]
cmp r4, r0
bne _021E45F8
mov r5, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E45B8
mov r4, #0xf
_021E4584:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r5, lsl #2
ldr r0, [r0, #0xf4]
mov r1, r4
- bl FUN_021E4604
+ bl MOD04_021E4604
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
add r5, r5, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r5, r0
ble _021E4584
_021E45B8:
mov r0, #0xf
- bl FUN_021E26D0
+ bl MOD04_021E26D0
b _021E45F8
_021E45C4:
mov r0, r6
mov r1, #0xf
- bl FUN_021E4604
+ bl MOD04_021E4604
cmp r0, #0
bne _021E45F8
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
_021E45E0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #8
bne _021E45F8
mov r0, #2
- bl FUN_021E4CF8
+ bl MOD04_021E4CF8
_021E45F8:
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021E4600: .word 0x000082EA
- arm_func_start FUN_021E4604
-FUN_021E4604: ; 0x021E4604
+ arm_func_start MOD04_021E4604
+MOD04_021E4604: ; 0x021E4604
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x10
mov r5, r1
@@ -13406,7 +13406,7 @@ FUN_021E4604: ; 0x021E4604
mov r6, r0
movne r4, #0
bne _021E4630
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20c]
mov r4, #1
str r0, [sp, #8]
@@ -13418,13 +13418,13 @@ _021E4630:
mov r1, r6
mov r3, r2
str r4, [sp, #4]
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #0x10
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0x1e8]
@@ -13433,19 +13433,19 @@ _021E4630:
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021E4684
-FUN_021E4684: ; 0x021E4684
+ arm_func_start MOD04_021E4684
+MOD04_021E4684: ; 0x021E4684
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #9
beq _021E46BC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0x10
beq _021E46BC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0x11
bne _021E4700
@@ -13453,7 +13453,7 @@ _021E46BC:
bl OS_GetTick
mov r4, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x1e0]
ldr r0, [r0, #0x1e4]
subs r3, r4, r1
@@ -13472,7 +13472,7 @@ _021E4700:
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, pc}
_021E470C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #9
beq _021E4730
@@ -13486,82 +13486,82 @@ _021E4730:
cmp r5, #0
cmpeq r4, r0
bls _021E48FC
- bl FUN_021DF88C
+ bl MOD04_021DF88C
cmp r0, #5
bne _021E477C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1ad]
cmp r0, #5
blo _021E477C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
- bl FUN_021E5908
+ bl MOD04_021E5908
cmp r0, #0
bne _021E48FC
add sp, sp, #4
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
_021E477C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x1ad]
add r1, r1, #1
strb r1, [r0, #0x1ad]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x2d0]
mov r1, #3
- bl FUN_021E4910
+ bl MOD04_021E4910
b _021E48FC
_021E47A0:
ldr r0, _021E490C ; =0x00001770
cmp r5, #0
cmpeq r4, r0
bls _021E48FC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x1ab]
add r1, r1, #1
strb r1, [r0, #0x1ab]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1ab]
cmp r0, #5
bls _021E4870
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
beq _021E47F0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E4800
_021E47F0:
- bl FUN_021E4B40
+ bl MOD04_021E4B40
mov r0, #1
- bl FUN_021E4CF8
+ bl MOD04_021E4CF8
b _021E48FC
_021E4800:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1d4]
- bl FUN_021E4A00
+ bl MOD04_021E4A00
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0
beq _021E4850
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1ab]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0x1e0]
str r1, [r4, #0x1e4]
b _021E48FC
_021E4850:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20c]
- bl FUN_021E59D4
+ bl MOD04_021E59D4
cmp r0, #0
bne _021E48FC
add sp, sp, #4
@@ -13569,43 +13569,43 @@ _021E4850:
ldmia sp!, {r4, r5, r6, r7, pc}
_021E4870:
mov r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E48FC
mov r5, #2
mov r6, r4
_021E488C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4
ldrb r0, [r0, #0x2d0]
ldr r1, [r7, #0x1d4]
mov r0, r6,lsl r0
ands r0, r1, r0
bne _021E48C4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4
ldrb r0, [r0, #0x2d0]
mov r1, r5
- bl FUN_021E4910
+ bl MOD04_021E4910
_021E48C4:
add r4, r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r4, r0
ble _021E488C
b _021E48FC
_021E48DC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x100
ldrh r0, [r0, #0xb0]
cmp r5, r0, asr #31
cmpeq r4, r0
bls _021E48FC
mov r0, #4
- bl FUN_021E51C0
+ bl MOD04_021E51C0
_021E48FC:
mov r0, #1
add sp, sp, #4
@@ -13614,8 +13614,8 @@ _021E48FC:
_021E4908: .word 0x000082EA
_021E490C: .word 0x00001770
- arm_func_start FUN_021E4910
-FUN_021E4910: ; 0x021E4910
+ arm_func_start MOD04_021E4910
+MOD04_021E4910: ; 0x021E4910
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r4, r1
@@ -13626,9 +13626,9 @@ FUN_021E4910: ; 0x021E4910
beq _021E49AC
b _021E49D0
_021E4934:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r6, r0
ldrb r0, [r0, #0x2d0]
@@ -13638,12 +13638,12 @@ _021E4934:
streqb r0, [sp]
movne r0, #0
strneb r0, [sp]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blo _021E49D0
_021E4974:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r6
ldrb r0, [r0, #0x2d0]
cmp r5, r0
@@ -13652,17 +13652,17 @@ _021E4974:
beq _021E49D0
add r0, r6, #1
and r6, r0, #0xff
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r6, r0
bls _021E4974
b _021E49D0
_021E49AC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x100
ldrh r0, [r0, #0xb0]
strb r0, [sp]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x100
ldrh r0, [r0, #0xb0]
mov r0, r0, asr #8
@@ -13672,8 +13672,8 @@ _021E49D0:
mov r0, r4
mov r1, r5
mov r3, #4
- bl FUN_021EAF20
- bl FUN_021E26E4
+ bl MOD04_021EAF20
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0x1e0]
@@ -13681,15 +13681,15 @@ _021E49D0:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021E4A00
-FUN_021E4A00: ; 0x021E4A00
+ arm_func_start MOD04_021E4A00
+MOD04_021E4A00: ; 0x021E4A00
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x108
mov sb, #0
mov sl, r0
mov r8, sb
mov r7, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E4A8C
@@ -13697,27 +13697,27 @@ FUN_021E4A00: ; 0x021E4A00
add r5, sp, #0x88
mov r6, r7
_021E4A34:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r7
ldrb r0, [r0, #0x2d0]
mov r0, r6,lsl r0
ands r0, sl, r0
beq _021E4A64
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r7, lsl #2
ldr r0, [r0, #0xf4]
str r0, [r5, r8, lsl #2]
add r8, r8, #1
b _021E4A78
_021E4A64:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r7, lsl #2
ldr r0, [r0, #0xf4]
str r0, [r4, sb, lsl #2]
add sb, sb, #1
_021E4A78:
add r7, r7, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r7, r0
ble _021E4A34
@@ -13736,8 +13736,8 @@ _021E4AA8:
mov r0, r6
mov r2, r4
mov r3, r4
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #0x108
movne r0, #0
@@ -13746,7 +13746,7 @@ _021E4AA8:
cmp sl, r8
blt _021E4AA8
_021E4AE4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #2
strb r1, [r0, #0x1a8]
cmp sb, #0
@@ -13757,180 +13757,180 @@ _021E4AE4:
_021E4B04:
ldr r0, [r5, r6, lsl #2]
mov r1, r4
- bl FUN_021E3F28
+ bl MOD04_021E3F28
cmp r0, #0xff
beq _021E4B1C
- bl FUN_021DF9D4
+ bl MOD04_021DF9D4
_021E4B1C:
add r6, r6, #1
cmp r6, sb
blt _021E4B04
_021E4B28:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a8]
mov r0, #1
add sp, sp, #0x108
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- arm_func_start FUN_021E4B40
-FUN_021E4B40: ; 0x021E4B40
+ arm_func_start MOD04_021E4B40
+MOD04_021E4B40: ; 0x021E4B40
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #2
strb r1, [r0, #0x1a8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD45C
- bl FUN_021E26E4
+ bl MOD04_021FD45C
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a8]
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021E4B78
-FUN_021E4B78: ; 0x021E4B78
+ arm_func_start MOD04_021E4B78
+MOD04_021E4B78: ; 0x021E4B78
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r5, [r0, #0x20c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0xd]
mov r0, r5
add r1, r1, #1
- bl FUN_021DF648
+ bl MOD04_021DF648
movs r4, r0
beq _021E4BD4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #2
strb r1, [r0, #0x1a8]
ldr r0, [r4]
- bl FUN_021FD488
- bl FUN_021E26E4
+ bl MOD04_021FD488
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a8]
add sp, sp, #4
mov r0, #1
ldmia sp!, {r4, r5, pc}
_021E4BD4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0xd]
mov r0, r5
add r1, r1, #1
- bl FUN_021E89EC
+ bl MOD04_021E89EC
mov r0, #0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021E4BF4
-FUN_021E4BF4: ; 0x021E4BF4
+ arm_func_start MOD04_021E4BF4
+MOD04_021E4BF4: ; 0x021E4BF4
stmdb sp!, {r4, lr}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x17]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x20]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x208]
cmp r0, #0
beq _021E4CA4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E4C64
mov r0, #3
- bl FUN_021E26D0
+ bl MOD04_021E26D0
mov r0, #0
- bl FUN_021E7E5C
+ bl MOD04_021E7E5C
mov r4, r0
- bl FUN_021E38E8
+ bl MOD04_021E38E8
cmp r0, #0
beq _021E4CAC
mov r0, r4
ldmia sp!, {r4, pc}
_021E4C64:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E4CAC
mov r0, #4
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
ldr r0, [r0, #0x208]
mov r1, #0
- bl FUN_021E6038
+ bl MOD04_021E6038
mov r4, r0
- bl FUN_021E61EC
+ bl MOD04_021E61EC
cmp r0, #0
beq _021E4CAC
mov r0, r4
ldmia sp!, {r4, pc}
_021E4CA4:
mov r0, #1
- bl FUN_021E4CF8
+ bl MOD04_021E4CF8
_021E4CAC:
mov r0, #0
ldmia sp!, {r4, pc}
- arm_func_start FUN_021E4CB4
-FUN_021E4CB4: ; 0x021E4CB4
+ arm_func_start MOD04_021E4CB4
+MOD04_021E4CB4: ; 0x021E4CB4
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
addeq sp, sp, #4
ldmeqia sp!, {pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
addeq sp, sp, #4
ldmeqia sp!, {pc}
- bl FUN_021E4B40
+ bl MOD04_021E4B40
mov r0, #1
- bl FUN_021E4CF8
+ bl MOD04_021E4CF8
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021E4CF8
-FUN_021E4CF8: ; 0x021E4CF8
+ arm_func_start MOD04_021E4CF8
+MOD04_021E4CF8: ; 0x021E4CF8
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
movs r4, r0
bne _021E4D14
- bl FUN_021E4ED4
+ bl MOD04_021E4ED4
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
_021E4D14:
- bl FUN_021E8174
- bl FUN_021E26E4
+ bl MOD04_021E8174
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
beq _021E4D38
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
bne _021E4D94
_021E4D38:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20c]
cmp r0, #0
moveq r6, #1
movne r6, #0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20c]
- bl FUN_021E1F18
+ bl MOD04_021E1F18
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r4, [sp]
ldr r1, [r0, #0x468]
mov r0, #0
@@ -13943,7 +13943,7 @@ _021E4D38:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
_021E4D94:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E4DC8
@@ -13951,13 +13951,13 @@ _021E4D94:
addne sp, sp, #8
ldmneia sp!, {r4, r5, r6, pc}
mov r0, #0
- bl FUN_021E7E5C
- bl FUN_021E38E8
+ bl MOD04_021E7E5C
+ bl MOD04_021E38E8
add sp, sp, #8
cmp r0, #0
ldmia sp!, {r4, r5, r6, pc}
_021E4DC8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
addne sp, sp, #8
@@ -13968,40 +13968,40 @@ _021E4DC8:
mov r0, #0
mov r1, r0
mov r2, r0
- bl FUN_021E5D30
+ bl MOD04_021E5D30
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021E4E00
-FUN_021E4E00: ; 0x021E4E00
+ arm_func_start MOD04_021E4E00
+MOD04_021E4E00: ; 0x021E4E00
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
mov r4, #0
str r4, [sp, #8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x17]
cmp r0, #0
beq _021E4EC8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20]
cmp r0, #0
beq _021E4EC8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r5, #0x20]
ldr r0, [r0, #0x200]
cmp r1, r0
beq _021E4EC8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r2, sp, #8
mov r1, #1
str r2, [sp]
@@ -14016,12 +14016,12 @@ FUN_021E4E00: ; 0x021E4E00
ldrh r3, [r3, #0xa4]
ldr r2, [r2, #0x24]
mov r0, #0xc
- bl FUN_021E7884
+ bl MOD04_021E7884
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x17]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x20]
_021E4EC8:
@@ -14029,42 +14029,42 @@ _021E4EC8:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_021E4ED4
-FUN_021E4ED4: ; 0x021E4ED4
+ arm_func_start MOD04_021E4ED4
+MOD04_021E4ED4: ; 0x021E4ED4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
ldr r1, _021E4F90 ; =0x0220D3F0
mov r0, #1
mov r2, #0
- bl FUN_021E1E30
- bl FUN_021E397C
+ bl MOD04_021E1E30
+ bl MOD04_021E397C
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E8034
- bl FUN_021E26E4
+ bl MOD04_021E8034
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20c]
cmp r0, #0
movne r6, #1
bne _021E4F28
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
moveq r6, #1
movne r6, #0
_021E4F28:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20c]
cmp r0, #0
moveq r7, #1
movne r7, #0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20c]
- bl FUN_021E1F18
+ bl MOD04_021E1F18
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r4, [sp]
ldr r1, [r0, #0x468]
mov r2, r7
@@ -14074,7 +14074,7 @@ _021E4F28:
mov r0, #0
mov r1, #1
blx ip
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a9]
add sp, sp, #0xc
@@ -14082,133 +14082,133 @@ _021E4F28:
.align 2, 0
_021E4F90: .word 0x0220D3F0
- arm_func_start FUN_021E4F94
-FUN_021E4F94: ; 0x021E4F94
+ arm_func_start MOD04_021E4F94
+MOD04_021E4F94: ; 0x021E4F94
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x20c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #2
bne _021E4FC4
- bl FUN_021E4ED4
+ bl MOD04_021E4ED4
add sp, sp, #4
ldmfd sp!, {pc}
_021E4FC4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #1
strb r1, [r0, #0x1a9]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
bne _021E5038
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #1
strb r1, [r0, #0x1a9]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0
beq _021E5010
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD45C
+ bl MOD04_021FD45C
b _021E502C
_021E5010:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
- bl FUN_021E5BF0
- bl FUN_021E61EC
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {pc}
_021E502C:
- bl FUN_021E4ED4
+ bl MOD04_021E4ED4
add sp, sp, #4
ldmfd sp!, {pc}
_021E5038:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #4
beq _021E5098
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #5
beq _021E5098
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #6
beq _021E5098
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #7
beq _021E5098
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xb
beq _021E5098
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xc
bne _021E50D8
_021E5098:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x204]
cmp r0, #0
beq _021E50C4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
- bl FUN_021E5BF0
- bl FUN_021E61EC
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {pc}
_021E50C4:
- bl FUN_021E4E00
- bl FUN_021E61EC
+ bl MOD04_021E4E00
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {pc}
_021E50D8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x19c]
cmp r0, #0
beq _021E5100
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x19c]
- bl FUN_022006B4
- bl FUN_021E26E4
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x19c]
_021E5100:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0
beq _021E512C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #1
strb r1, [r0, #0x1a9]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD45C
+ bl MOD04_021FD45C
_021E512C:
- bl FUN_021E4ED4
+ bl MOD04_021E4ED4
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021E5138
-FUN_021E5138: ; 0x021E5138
+ arm_func_start MOD04_021E5138
+MOD04_021E5138: ; 0x021E5138
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a6]
cmp r0, #0
beq _021E5168
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #4
moveq r0, #1
@@ -14219,15 +14219,15 @@ _021E5168:
bls _021E51B8
_021E5174:
ldr r0, [r6, r4, lsl #2]
- bl FUN_021E4074
+ bl MOD04_021E4074
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a6]
cmp r0, #0
beq _021E51AC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #1
moveq r0, #1
@@ -14240,8 +14240,8 @@ _021E51B8:
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021E51C0
-FUN_021E51C0: ; 0x021E51C0
+ arm_func_start MOD04_021E51C0
+MOD04_021E51C0: ; 0x021E51C0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x20
cmp r0, #4
@@ -14256,47 +14256,47 @@ _021E51DC: ; jump table
b _021E569C ; case 3
b _021E56BC ; case 4
_021E51F0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
ldrb r1, [r6, #0x1a4]
sub r0, r0, #1
cmp r1, r0
bge _021E52B0
mov r0, #0xd
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a4]
add r0, r0, #1
add r0, r5, r0, lsl #2
ldr r0, [r0, #0xf4]
str r0, [sp, #8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a4]
add r0, r0, #1
str r0, [sp, #0xc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a4]
add r0, r0, #1
add r0, r5, r0
ldrb r0, [r0, #0x2d0]
str r0, [sp, #0x10]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a4]
add r0, r0, #1
add r0, r5, r0, lsl #2
ldr r0, [r0, #0x24]
str r0, [sp, #0x14]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a4]
mov r5, #5
add r0, r0, #1
@@ -14305,92 +14305,92 @@ _021E51F0:
str r0, [sp, #0x18]
b _021E54FC
_021E52B0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, r4
strb r1, [r0, #0x17]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, r4
str r1, [r0, #0x20]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- bl FUN_02202308
- bl FUN_021E26E4
+ bl MOD04_02202308
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E52F0
mov r0, r5
- bl FUN_021E26D0
+ bl MOD04_021E26D0
b _021E5314
_021E52F0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E530C
mov r0, #4
- bl FUN_021E26D0
+ bl MOD04_021E26D0
b _021E5314
_021E530C:
mov r0, #0xa
- bl FUN_021E26D0
+ bl MOD04_021E26D0
_021E5314:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
beq _021E534C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r6, #0xd]
ldrb r0, [r0, #0x16]
cmp r1, r0
bne _021E53FC
_021E534C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
bne _021E5384
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r6, r0, lsl #2
ldr r0, [r0, #0xf4]
str r0, [r7, #0x20c]
b _021E53A4
_021E5384:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x20c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x200]
str r0, [r6, #0xf4]
_021E53A4:
mov r0, #0x10
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1d4]
mov r7, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E54EC
mov r6, #2
_021E53D0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r7
ldrb r0, [r0, #0x2d0]
mov r1, r6
- bl FUN_021E4910
+ bl MOD04_021E4910
add r7, r7, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r7, r0
ble _021E53D0
@@ -14398,54 +14398,54 @@ _021E53D0:
_021E53FC:
mov r0, #0
str r0, [sp, #8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
str r0, [sp, #0xc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r6, r0
ldrb r0, [r0, #0x2d0]
str r0, [sp, #0x10]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E5460
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #2
str r1, [r0, #0xe8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
bl OS_GetTick
str r0, [r6, #0xec]
str r1, [r6, #0xf0]
b _021E54EC
_021E5460:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E54EC
mov r1, #0
mov r2, r1
mov r0, #1
- bl FUN_021E5D30
- bl FUN_021E26E4
+ bl MOD04_021E5D30
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a6]
cmp r0, #0
bne _021E54EC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #2
blo _021E54EC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r8, r0
mov r0, #0
- bl FUN_021E3EC4
+ bl MOD04_021E3EC4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
mov r1, #1
ldr r2, [r8, #0x1dc]
@@ -14455,29 +14455,29 @@ _021E5460:
and r0, r6, r0
cmp r2, r0
beq _021E54EC
- bl FUN_021E4CB4
+ bl MOD04_021E4CB4
b _021E57E8
_021E54EC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
movne r4, #1
_021E54FC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0x10
beq _021E57E8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sl, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sb, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r8, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, sp, #8
str r1, [sp]
str r5, [sp, #4]
@@ -14492,27 +14492,27 @@ _021E54FC:
ldr r1, [r5, #0xf4]
ldr r2, [r2, #0x24]
mov r0, #8
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #0x20
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x3cd]
b _021E57E8
_021E5594:
mov r0, #1
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
bne _021E55D0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r4, r0, lsl #2
ldr r0, [r0, #0xf4]
@@ -14522,39 +14522,39 @@ _021E55D0:
b _021E57E8
_021E55D8:
mov r0, #1
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
beq _021E5600
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E5620
_021E5600:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #1
strb r1, [r0, #0x17]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x200]
str r0, [r5, #0x20]
_021E5620:
- bl FUN_021E3E9C
- bl FUN_021E26E4
+ bl MOD04_021E3E9C
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
bls _021E57E8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r8, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r3, r8, #0xf4
ldrb r2, [r0, #0xd]
mov r1, #1
@@ -14566,43 +14566,43 @@ _021E5620:
ldr r1, [r7, #0xf4]
ldr r2, [r6, #0x24]
ldrh r3, [r5, #0xa4]
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
beq _021E57E8
add sp, sp, #0x20
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E569C:
mov r0, #1
- bl FUN_021E26D0
- bl FUN_021E3E9C
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E3E9C
+ bl MOD04_021E26E4
mov r1, r4
str r1, [r0, #0x20c]
mov r4, #1
b _021E57E8
_021E56BC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
beq _021E56DC
ldr r1, _021E581C ; =0x0220D3F0
mov r0, #2
mov r2, r4
- bl FUN_021E1E30
+ bl MOD04_021E1E30
_021E56DC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20c]
cmp r0, #0
moveq r7, #1
movne r7, #0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20c]
- bl FUN_021E1F18
+ bl MOD04_021E1F18
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r5, [sp]
ldr r1, [r0, #0x468]
mov r0, #0
@@ -14612,36 +14612,36 @@ _021E56DC:
mov r1, r0
mov r3, r0
blx r5
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
beq _021E5750
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E5758
_021E5750:
- bl FUN_021E8034
+ bl MOD04_021E8034
b _021E57DC
_021E5758:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
cmp r0, #0
beq _021E5780
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203E80
- bl FUN_021E26E4
+ bl MOD04_02203E80
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0xe4]
_021E5780:
- bl FUN_02200D6C
- bl FUN_021E26E4
+ bl MOD04_02200D6C
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
bne _021E57C8
- bl FUN_021E85D4
- bl FUN_021E397C
+ bl MOD04_021E85D4
+ bl MOD04_021E397C
cmp r0, #0
addne sp, sp, #0x20
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
@@ -14651,57 +14651,57 @@ _021E5780:
moveq r1, #1
streqb r1, [r0, #1]
mov r0, #0xa
- bl FUN_021E26D0
+ bl MOD04_021E26D0
b _021E57D0
_021E57C8:
mov r0, #1
- bl FUN_021E26D0
+ bl MOD04_021E26D0
_021E57D0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x20c]
_021E57DC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a9]
_021E57E8:
cmp r4, #0
addeq sp, sp, #0x20
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
addeq sp, sp, #0x20
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203C04
+ bl MOD04_02203C04
add sp, sp, #0x20
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_021E581C: .word 0x0220D3F0
_021E5820: .word 0x022106DC
- arm_func_start FUN_021E5824
-FUN_021E5824: ; 0x021E5824
+ arm_func_start MOD04_021E5824
+MOD04_021E5824: ; 0x021E5824
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0xc
mov r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E58BC
mov r5, #0xa
_021E5844:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sb, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r8, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r6, #0x348
str r1, [sp]
ldr ip, [r0, #0x348]
@@ -14714,88 +14714,88 @@ _021E5844:
ldr r1, [r1, #0xf4]
ldr r2, [r2, #0x24]
mov r0, r5
- bl FUN_021E7884
+ bl MOD04_021E7884
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
add r4, r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r4, r0
ble _021E5844
_021E58BC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x17]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x20]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #1
strb r1, [r0, #0x1a8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD45C
- bl FUN_021E26E4
+ bl MOD04_021FD45C
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a8]
mov r0, r1
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- arm_func_start FUN_021E5908
-FUN_021E5908: ; 0x021E5908
+ arm_func_start MOD04_021E5908
+MOD04_021E5908: ; 0x021E5908
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
bne _021E5950
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0
beq _021E5938
- bl FUN_021E4B40
+ bl MOD04_021E4B40
_021E5938:
ldr r1, _021E59D0 ; =0xFFFEC5D2
mov r0, #6
- bl FUN_021E8E08
+ bl MOD04_021E8E08
add sp, sp, #4
mov r0, #0
ldmia sp!, {r4, r5, pc}
_021E5950:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
strb r0, [r5, #0x14]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x208]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x19c]
cmp r0, #0
beq _021E5998
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x19c]
- bl FUN_022006B4
- bl FUN_021E26E4
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x19c]
_021E5998:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0
beq _021E59B0
- bl FUN_021E4CB4
+ bl MOD04_021E4CB4
b _021E59C4
_021E59B0:
mov r0, #4
- bl FUN_021E26D0
+ bl MOD04_021E26D0
mov r0, #0
- bl FUN_021E5C44
+ bl MOD04_021E5C44
mov r4, r0
_021E59C4:
mov r0, r4
@@ -14804,17 +14804,17 @@ _021E59C4:
.align 2, 0
_021E59D0: .word 0xFFFEC5D2
- arm_func_start FUN_021E59D4
-FUN_021E59D4: ; 0x021E59D4
+ arm_func_start MOD04_021E59D4
+MOD04_021E59D4: ; 0x021E59D4
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x17]
cmp r0, #0
beq _021E5A0C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r4, #0x20]
ldr r0, [r0, #0x200]
cmp r1, r0
@@ -14825,142 +14825,142 @@ _021E5A0C:
_021E5A10:
cmp r4, #0
beq _021E5A3C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x17]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x20]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- bl FUN_02202308
+ bl MOD04_02202308
_021E5A3C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0x1f
bhs _021E5A6C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
mov r1, #0
add r0, r0, #1
add r0, r6, r0, lsl #2
str r1, [r0, #0xf4]
_021E5A6C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0xff
strb r1, [r0, #0x3cc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x19c]
cmp r0, #0
beq _021E5AA0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x19c]
- bl FUN_022006B4
- bl FUN_021E26E4
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x19c]
_021E5AA0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
strb r0, [r6, #0x14]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x204]
cmp r4, #0
bne _021E5AE0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
beq _021E5BE8
- bl FUN_021E4CB4
+ bl MOD04_021E4CB4
b _021E5BE8
_021E5AE0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E5B1C
mov r0, #3
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
mov r1, #2
str r1, [r0, #0xe8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0xec]
str r1, [r4, #0xf0]
b _021E5BE8
_021E5B1C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E5B48
mov r0, #4
- bl FUN_021E26D0
+ bl MOD04_021E26D0
mov r1, #0
mov r2, r1
mov r0, #1
- bl FUN_021E5D30
+ bl MOD04_021E5D30
b _021E5BE8
_021E5B48:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
bne _021E5BE8
mov r0, #0xe
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1d8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, #0x100
mov r2, #0
mov r0, r5
strh r2, [r1, #0xb2]
- bl FUN_021E4B78
+ bl MOD04_021E4B78
mov r5, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E5BD0
mov r4, #0xd
_021E5B9C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r5, lsl #2
ldr r0, [r0, #0xf4]
mov r1, r4
- bl FUN_021E4604
+ bl MOD04_021E4604
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
add r5, r5, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r5, r0
ble _021E5B9C
_021E5BD0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0
bne _021E5BE8
mov r0, #2
- bl FUN_021E4CF8
+ bl MOD04_021E4CF8
_021E5BE8:
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021E5BF0
-FUN_021E5BF0: ; 0x021E5BF0
+ arm_func_start MOD04_021E5BF0
+MOD04_021E5BF0: ; 0x021E5BF0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -14968,71 +14968,71 @@ FUN_021E5BF0: ; 0x021E5BF0
ldr r2, [r4, #0x24]
mov r1, r5
mov r0, #5
- bl FUN_021E7884
+ bl MOD04_021E7884
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x204]
mov r0, r4
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021E5C44
-FUN_021E5C44: ; 0x021E5C44
+ arm_func_start MOD04_021E5C44
+MOD04_021E5C44: ; 0x021E5C44
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x208]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x204]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a7]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0x1cc]
str r1, [r4, #0x1d0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E5CC0
mov r0, #3
- bl FUN_021E26D0
+ bl MOD04_021E26D0
mov r0, #0
- bl FUN_021E7E5C
- bl FUN_021E38E8
+ bl MOD04_021E7E5C
+ bl MOD04_021E38E8
cmp r0, #0
beq _021E5D20
add sp, sp, #4
mov r0, #0
ldmia sp!, {r4, r5, pc}
_021E5CC0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E5CF8
mov r0, #0
mov r1, r0
mov r2, r5
- bl FUN_021E5D30
- bl FUN_021E61EC
+ bl MOD04_021E5D30
+ bl MOD04_021E61EC
cmp r0, #0
beq _021E5D20
add sp, sp, #4
mov r0, #0
ldmia sp!, {r4, r5, pc}
_021E5CF8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
bne _021E5D20
ldr r1, _021E5D2C ; =0xFFFEC5E6
mov r0, #6
- bl FUN_021E8E08
+ bl MOD04_021E8E08
add sp, sp, #4
mov r0, #0
ldmia sp!, {r4, r5, pc}
@@ -15043,22 +15043,22 @@ _021E5D20:
.align 2, 0
_021E5D2C: .word 0xFFFEC5E6
- arm_func_start FUN_021E5D30
-FUN_021E5D30: ; 0x021E5D30
+ arm_func_start MOD04_021E5D30
+MOD04_021E5D30: ; 0x021E5D30
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x23c
movs r4, r1
str r0, [sp]
str r2, [sp, #4]
beq _021E5D58
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a5]
str r0, [sp, #0xc]
b _021E5D90
_021E5D58:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x344]
ldrb r1, [r5, #0x1a5]
sub r0, r0, #1
@@ -15066,7 +15066,7 @@ _021E5D58:
movge r0, #0
strge r0, [sp, #0xc]
bge _021E5D90
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a5]
add r0, r0, #1
str r0, [sp, #0xc]
@@ -15087,36 +15087,36 @@ _021E5DB4:
cmp sb, #0
beq _021E5DFC
_021E5DC8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x1a5]
add r1, r1, #1
strb r1, [r0, #0x1a5]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r6, #0x1a5]
ldr r0, [r0, #0x344]
cmp r1, r0
blt _021E5DFC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
strb r8, [r0, #0x1a5]
_021E5DFC:
cmp sb, #0
beq _021E5E50
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x1a5]
ldr r0, [sp, #0xc]
cmp r0, r1
bne _021E5E50
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, _021E6028 ; =0x00000BB8
str r1, [r0, #0x1c8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0x1cc]
str r1, [r4, #0x1d0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1bc]
add sp, sp, #0x23c
@@ -15124,13 +15124,13 @@ _021E5DFC:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021E5E50:
mov sb, r7
- bl FUN_021E0F00
+ bl MOD04_021E0F00
mov fp, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sl, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, r0
ldrb r2, [r1, #0x1a5]
ldr r3, [sl, #0x2fc]
@@ -15145,11 +15145,11 @@ _021E5E50:
mvn r0, #0
cmp sl, r0
beq _021E5DB4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov fp, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r2, [r6, #0x2fc]
ldrb r1, [r0, #0x1a5]
mov r0, #0xc
@@ -15160,37 +15160,37 @@ _021E5E50:
cmp r0, #0
beq _021E5DB4
mov r6, r7
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E5F1C
_021E5EF4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r6, lsl #2
ldr r0, [r0, #0xf4]
cmp sl, r0
beq _021E5F1C
add r6, r6, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r6, r0
ble _021E5EF4
_021E5F1C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r6, r0
ble _021E5DB4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0]
mov r1, sl
add r2, sp, #0x18
- bl FUN_021F0664
+ bl MOD04_021F0664
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0]
ldr r1, [sp, #0x18]
add r2, sp, #0x28
- bl FUN_021F06E4
+ bl MOD04_021F06E4
orrs r0, r6, r0
bne _021E5DB4
ldr r0, [sp, #0x2c]
@@ -15200,19 +15200,19 @@ _021E5F1C:
add r1, sp, #0x1c
add r2, sp, #0x30
mov r3, r5
- bl FUN_021DE9F4
+ bl MOD04_021DE9F4
mov r6, r0
ldr r0, _021E6030 ; =0x0220D3F8
add r1, sp, #0x12
add r2, sp, #0x30
mov r3, r5
- bl FUN_021DE9F4
+ bl MOD04_021DE9F4
mov fp, r0
ldr r0, _021E6034 ; =0x0220D3FC
add r1, sp, #0x10
add r2, sp, #0x30
mov r3, r5
- bl FUN_021DE9F4
+ bl MOD04_021DE9F4
cmp r6, #0
ble _021E5DB4
cmp fp, #0
@@ -15230,7 +15230,7 @@ _021E5F1C:
mov r2, r4
bl strtoul
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x16]
cmp r6, r0
bne _021E5DB4
@@ -15240,7 +15240,7 @@ _021E5F1C:
streq r0, [sp]
ldr r1, [sp]
mov r0, sl
- bl FUN_021E6038
+ bl MOD04_021E6038
add sp, sp, #0x23c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
@@ -15249,109 +15249,109 @@ _021E602C: .word 0x0220D3F4
_021E6030: .word 0x0220D3F8
_021E6034: .word 0x0220D3FC
- arm_func_start FUN_021E6038
-FUN_021E6038: ; 0x021E6038
+ arm_func_start MOD04_021E6038
+MOD04_021E6038: ; 0x021E6038
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x14
mov r5, r0
cmp r1, #0
bne _021E606C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1c]
cmp r0, #0
bne _021E60A0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrh r0, [r0, #0x1a]
cmp r0, #0
bne _021E60A0
_021E606C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #1
str r1, [r0, #0x1bc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0x1c0]
str r1, [r4, #0x1c4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r5, [r0, #0xf4]
add sp, sp, #0x14
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
_021E60A0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E6124
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
mov r1, #0
- bl FUN_02203BF4
+ bl MOD04_02203BF4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
ldr r1, _021E61E4 ; =0x0220D3AC
mov r0, r6
mov r2, #0
- bl FUN_0220394C
+ bl MOD04_0220394C
str r0, [r4, #0xf4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
mov r0, r6
- bl FUN_02203908
+ bl MOD04_02203908
str r0, [r4, #0x24]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
mov r0, r6
- bl FUN_022038E4
+ bl MOD04_022038E4
strh r0, [r4, #0xa4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
mov r4, #1
str r0, [r6, #0x204]
b _021E6160
_021E6124:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E613C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r5, [r0, #0xf4]
_021E613C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r5, [r0, #0x204]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1c]
str r0, [sp, #0xc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrh r0, [r0, #0x1a]
mov r4, #3
str r0, [sp, #0x10]
_021E6160:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, _021E61E8 ; =0x00001770
str r1, [r0, #0x1c8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
bl OS_GetTick
str r0, [r6, #0x1cc]
str r1, [r6, #0x1d0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1bc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x208]
cmp r0, #0
movne r7, #0xb
moveq r7, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
str r0, [sp, #8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r2, sp, #8
str r2, [sp]
mov r3, r0
@@ -15360,31 +15360,31 @@ _021E6160:
ldr r2, [r6, #0x24]
mov r1, r5
mov r0, r7
- bl FUN_021E7884
+ bl MOD04_021E7884
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_021E61E4: .word 0x0220D3AC
_021E61E8: .word 0x00001770
- arm_func_start FUN_021E61EC
-FUN_021E61EC: ; 0x021E61EC
+ arm_func_start MOD04_021E61EC
+MOD04_021E61EC: ; 0x021E61EC
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E6210
mov r0, r4
- bl FUN_021E38E8
+ bl MOD04_021E38E8
ldmia sp!, {r4, pc}
_021E6210:
mov r0, r4
- bl FUN_021E397C
+ bl MOD04_021E397C
ldmia sp!, {r4, pc}
- arm_func_start FUN_021E621C
-FUN_021E621C: ; 0x021E621C
+ arm_func_start MOD04_021E621C
+MOD04_021E621C: ; 0x021E621C
stmdb sp!, {r4, r5, r6, lr}
mov r5, r1
ldr r1, [r5]
@@ -15392,101 +15392,101 @@ FUN_021E621C: ; 0x021E621C
add r4, r1, #2
cmp r4, #2
bls _021E6250
- bl FUN_021E26E4
+ bl MOD04_021E26E4
sub r2, r4, #2
add r1, r0, #0x350
add r0, r5, #4
mov r2, r2, lsl #2
bl MIi_CpuCopy32
_021E6250:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
sub r1, r4, #1
str r1, [r0, #0x348]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r6, [r0, #0x34c]
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021E6268
-FUN_021E6268: ; 0x021E6268
+ arm_func_start MOD04_021E6268
+MOD04_021E6268: ; 0x021E6268
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x14
mov r6, r0
mov r5, r1
mov r4, r2
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x17]
cmp r0, #0
beq _021E62A4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20]
cmp r6, r0
addeq sp, sp, #0x14
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
_021E62A4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #1
strb r1, [r0, #0x17]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r6, [r0, #0x20]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1bc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1c8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- bl FUN_02202308
- bl FUN_021E26E4
+ bl MOD04_02202308
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x204]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
add r0, r0, #1
add r0, r7, r0, lsl #2
str r6, [r0, #0xf4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
add r0, r0, #1
add r0, r7, r0, lsl #2
str r5, [r0, #0x24]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
add r0, r0, #1
add r0, r7, r0, lsl #1
strh r4, [r0, #0xa4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r5, [r0, #0x1b8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x100
strh r4, [r0, #0xb4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E40F4
+ bl MOD04_021E40F4
ldrb r1, [r4, #0x14]
add r1, r1, #1
add r1, r5, r1
strb r0, [r1, #0x2d0]
str r6, [sp, #8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
mov r7, #1
add r0, r0, #1
add r0, r4, r0
ldrb r0, [r0, #0x2d0]
str r0, [sp, #0xc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
cmp r0, #1
blt _021E6414
@@ -15494,11 +15494,11 @@ _021E62A4:
mov r5, #2
mov r4, #7
_021E63B8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sb, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r8, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r6, [sp]
str r5, [sp, #4]
add r0, r0, r7, lsl #1
@@ -15508,30 +15508,30 @@ _021E63B8:
ldr r1, [r1, #0xf4]
ldr r2, [r2, #0x24]
mov r0, r4
- bl FUN_021E7884
+ bl MOD04_021E7884
cmp r0, #0
addne sp, sp, #0x14
ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
add r7, r7, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
cmp r7, r0
ble _021E63B8
_021E6414:
mov r0, #1
- bl FUN_021E3E28
+ bl MOD04_021E3E28
mov r0, #0
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- arm_func_start FUN_021E6428
-FUN_021E6428: ; 0x021E6428
+ arm_func_start MOD04_021E6428
+MOD04_021E6428: ; 0x021E6428
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r7, r0
mov r6, r1
mov r5, r2
mov r8, r3
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
beq _021E6490
@@ -15541,86 +15541,86 @@ FUN_021E6428: ; 0x021E6428
beq _021E6670
b _021E6724
_021E6460:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0]
mov r1, r7
- bl FUN_021F05F4
+ bl MOD04_021F05F4
cmp r0, #0
moveq r4, #0xff
beq _021E6724
mov r0, r7
- bl FUN_021E4074
+ bl MOD04_021E4074
cmp r0, #0
moveq r4, #3
beq _021E6724
_021E6490:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r8, r0
bne _021E64F8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a9]
cmp r0, #0
bne _021E64F8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r4, #0x14]
ldrb r0, [r0, #0x16]
cmp r1, r0
beq _021E64F8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x17]
cmp r0, #0
beq _021E655C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r4, #0x20]
ldr r0, [r0, #0x200]
cmp r1, r0
bne _021E655C
_021E64F8:
mov r4, #3
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E6724
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
ldr r0, [r0, #0xb4]
cmp r0, #0
bne _021E6724
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x17]
cmp r0, #0
beq _021E6724
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r5, #0x20]
ldr r0, [r0, #0x200]
cmp r1, r0
bne _021E6724
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- bl FUN_02202308
+ bl MOD04_02202308
b _021E6724
_021E655C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #3
beq _021E657C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #4
bne _021E65AC
_021E657C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1c]
cmp r0, #0
bne _021E659C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrh r0, [r0, #0x1a]
cmp r0, #0
beq _021E65AC
@@ -15633,22 +15633,22 @@ _021E65AC:
mov r4, #4
b _021E6724
_021E65B4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x204]
cmp r0, #0
beq _021E6668
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x204]
cmp r7, r0
bne _021E6610
ldr r0, [sp, #0x18]
cmp r0, #0
bne _021E6600
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x200]
cmp r0, r7
bge _021E6608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x208]
cmp r7, r0
beq _021E6608
@@ -15662,19 +15662,19 @@ _021E6610:
ldr r0, [sp, #0x18]
cmp r0, #0
bne _021E663C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x200]
cmp r0, r7
bge _021E6660
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x208]
cmp r0, #0
bne _021E6660
_021E663C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x204]
- bl FUN_021E5BF0
- bl FUN_021E61EC
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
cmp r0, #0
movne r0, #0xff
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
@@ -15687,18 +15687,18 @@ _021E6668:
mov r4, #2
b _021E6724
_021E6670:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0]
mov r1, r7
- bl FUN_021F05F4
+ bl MOD04_021F05F4
cmp r0, #0
moveq r4, #0xff
beq _021E6724
cmp r8, #3
bne _021E66B0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r4, #0x14]
ldrb r0, [r0, #0x16]
cmp r1, r0
@@ -15716,15 +15716,15 @@ _021E66B8:
moveq r4, #0x13
beq _021E6724
_021E66D8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xa
bne _021E6718
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1c]
cmp r0, #0
bne _021E6708
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrh r0, [r0, #0x1a]
cmp r0, #0
beq _021E6718
@@ -15744,8 +15744,8 @@ _021E6724:
.align 2, 0
_021E672C: .word 0x022106DC
- arm_func_start FUN_021E6730
-FUN_021E6730: ; 0x021E6730
+ arm_func_start MOD04_021E6730
+MOD04_021E6730: ; 0x021E6730
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x118
mov sb, r0
@@ -15755,10 +15755,10 @@ FUN_021E6730: ; 0x021E6730
ldr r6, [sp, #0x138]
ldr r5, [sp, #0x13c]
mov r4, #0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
beq _021E6770
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0
bne _021E677C
@@ -15767,18 +15767,18 @@ _021E6770:
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E677C:
- bl FUN_021DF88C
+ bl MOD04_021DF88C
cmp r0, #5
bne _021E67AC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #1
bne _021E67AC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
cmp r8, r0
bne _021E67AC
- bl FUN_021E3E9C
+ bl MOD04_021E3E9C
_021E67AC:
cmp sb, #0x40
bgt _021E684C
@@ -15825,7 +15825,7 @@ _021E684C:
cmp sb, #0x41
b _021E7608
_021E6854:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
ldrne r0, [r6, #8]
@@ -15840,89 +15840,89 @@ _021E6854:
mov r0, r8
mov r1, r7
mov r2, sl
- bl FUN_021E6428
+ bl MOD04_021E6428
mov r5, r0
cmp r5, #2
bne _021E6994
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1dc]
mov r0, r8
mov r1, r7
mov r2, sl
- bl FUN_021E6268
- bl FUN_021E61EC
+ bl MOD04_021E6268
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #0x118
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
bne _021E6918
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x46c]
cmp r0, #0
beq _021E6918
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
mov r0, r8
- bl FUN_021E1F18
+ bl MOD04_021E1F18
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x470]
ldr r2, [r6, #0x46c]
mov r0, r4
blx r2
_021E6918:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
mov r4, #1
str r0, [sp, #0x14]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
cmp r0, #1
blt _021E6960
add r6, sp, #0x14
_021E693C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4, lsl #2
ldr r0, [r0, #0xf4]
str r0, [r6, r4, lsl #2]
add r4, r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
cmp r4, r0
ble _021E693C
_021E6960:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x1c]
add r0, sp, #0x14
str r1, [r0, r4, lsl #2]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrh r2, [r0, #0x1a]
add r3, r4, #1
add r1, sp, #0x14
mov r0, #0xb
str r2, [r1, r3, lsl #2]
add r4, r4, #2
- bl FUN_021E26D0
+ bl MOD04_021E26D0
b _021E69E0
_021E6994:
cmp r5, #3
bne _021E69E0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x16]
cmp r0, #0
beq _021E69E0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r6, #0x14]
ldrb r0, [r0, #0x16]
cmp r1, r0
bne _021E69E0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
moveq r0, #0x10
@@ -15938,76 +15938,76 @@ _021E69E0:
mov r2, r7
mov r3, sl
str r4, [sp, #4]
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
beq _021E7608
add sp, sp, #0x118
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E6A20:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #4
bne _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x204]
cmp r8, r0
bne _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x208]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a7]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1c8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1bc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r6]
add r1, r6, r1, lsl #2
ldr r1, [r1, #4]
str r1, [r0, #0x24]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r6]
add r1, r6, r1, lsl #2
ldr r1, [r1, #8]
strh r1, [r0, #0xa4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r6]
add r1, r6, r1, lsl #2
ldr r1, [r1, #4]
str r1, [r0, #0x1b8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r6]
add r0, r0, #0x100
add r1, r6, r1, lsl #2
ldr r1, [r1, #8]
strh r1, [r0, #0xb4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E6B4C
ldr r1, [r6]
add r0, r6, #4
- bl FUN_021E5138
+ bl MOD04_021E5138
cmp r0, #0
beq _021E6B08
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0
beq _021E6B4C
mov r0, r8
mov r1, r6
- bl FUN_021E621C
+ bl MOD04_021E621C
b _021E6B4C
_021E6B08:
mov r0, r8
- bl FUN_021E5BF0
- bl FUN_021E61EC
+ bl MOD04_021E5BF0
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #0x118
movne r0, #0
@@ -16015,43 +16015,43 @@ _021E6B08:
mov r0, #0
mov r1, r0
mov r2, r8
- bl FUN_021E5D30
- bl FUN_021E61EC
+ bl MOD04_021E5D30
+ bl MOD04_021E61EC
cmp r0, #0
beq _021E7608
add sp, sp, #0x118
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E6B4C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E6BD0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0
beq _021E6B90
mov r0, r8
mov r1, r6
- bl FUN_021E621C
- bl FUN_021E5824
- bl FUN_021E61EC
+ bl MOD04_021E621C
+ bl MOD04_021E5824
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #0x118
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E6B90:
mov r0, #6
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
mov r1, #0
- bl FUN_02203BF4
+ bl MOD04_02203BF4
mov r2, r0
mov r0, #0
mov r1, r0
- bl FUN_021E7B04
- bl FUN_021E37A4
+ bl MOD04_021E7B04
+ bl MOD04_021E37A4
cmp r0, #0
beq _021E7608
add sp, sp, #0x118
@@ -16059,21 +16059,21 @@ _021E6B90:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E6BD0:
mov r0, #5
- bl FUN_021E26D0
+ bl MOD04_021E26D0
mov r0, r8
- bl FUN_021E7E5C
- bl FUN_021E38E8
+ bl MOD04_021E7E5C
+ bl MOD04_021E38E8
cmp r0, #0
beq _021E7608
add sp, sp, #0x118
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E6BF8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #4
bne _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x204]
cmp r8, r0
bne _021E7608
@@ -16084,121 +16084,121 @@ _021E6BF8:
bne _021E6C44
mov r0, #0xd
mov r1, #0
- bl FUN_021E8E08
+ bl MOD04_021E8E08
add sp, sp, #0x118
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E6C44:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x204]
- bl FUN_021E5C44
+ bl MOD04_021E5C44
add sp, sp, #0x118
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E6C58:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #4
bne _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x204]
cmp r8, r0
bne _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0x1cc]
str r1, [r4, #0x1d0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x208]
cmp r0, #0
beq _021E6CAC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a7]
cmp r0, #0x10
blo _021E6CBC
_021E6CAC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
bne _021E6D00
_021E6CBC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #1
str r1, [r0, #0x1bc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0x1c0]
str r1, [r4, #0x1c4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
beq _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x1a7]
add r1, r1, #1
strb r1, [r0, #0x1a7]
b _021E7608
_021E6D00:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x208]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a7]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E6D54
mov r0, #3
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
mov r1, #1
str r1, [r0, #0xe8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0xec]
str r1, [r4, #0xf0]
b _021E7608
_021E6D54:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E7608
mov r1, #0
mov r2, r1
mov r0, #1
- bl FUN_021E5D30
+ bl MOD04_021E5D30
b _021E7608
_021E6D78:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x17]
cmp r0, #0
beq _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20]
cmp r8, r0
bne _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
bne _021E6DD8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
bne _021E6DD8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf8]
cmp r8, r0
bne _021E6DD8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD45C
+ bl MOD04_021FD45C
_021E6DD8:
mov r0, r8
- bl FUN_021E59D4
+ bl MOD04_021E59D4
cmp r0, #0
bne _021E7608
add sp, sp, #0x118
@@ -16209,43 +16209,43 @@ _021E6DF4:
ldr r4, [r6]
mov r0, r0, lsl #0x10
mov r5, r0, lsr #0x10
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #1
bne _021E6E20
mov r0, #6
- bl FUN_021E26D0
+ bl MOD04_021E26D0
b _021E6E50
_021E6E20:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #6
beq _021E6E40
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xb
bne _021E7608
_021E6E40:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20]
cmp r8, r0
bne _021E7608
_021E6E50:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0xff
strb r1, [r0, #0x3cc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r0, #1
add r0, r6, r0, lsl #2
ldr r0, [r0, #0xf4]
cmp r8, r0
beq _021E6E9C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r0, #1
add r0, r6, r0, lsl #2
@@ -16258,31 +16258,31 @@ _021E6E9C:
orr r0, r1, r0
str r4, [sp, #0x10]
strh r0, [sp, #0xe]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #1
strb r1, [r0, #0x194]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD43C
+ bl MOD04_021FD43C
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r3, r0, #0x194
mov r1, r4
mov r0, #0
add r2, sp, #0xc
- bl FUN_021E2784
- bl FUN_021E26E4
+ bl MOD04_021E2784
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x18c]
str r1, [r0, #0x190]
b _021E7608
_021E6F04:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #1
bne _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
cmp r8, r0
bne _021E7608
@@ -16290,16 +16290,16 @@ _021E6F04:
str r0, [sp, #8]
ldr r0, [r6, #4]
and r4, r0, #0xff
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E6F98
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a6]
cmp r0, #0
bne _021E6F98
ldr r0, [sp, #8]
- bl FUN_021E4074
+ bl MOD04_021E4074
str r0, [sp, #0x14]
add r0, sp, #0x14
str r0, [sp]
@@ -16309,52 +16309,52 @@ _021E6F04:
mov r3, sl
mov r0, #0x20
str r5, [sp, #4]
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #0x118
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E6F98:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
ldr r1, [sp, #8]
add r0, r0, #1
add r0, r5, r0, lsl #2
str r1, [r0, #0xf4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
add r0, r0, #1
add r0, r5, r0
strb r4, [r0, #0x2d0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- bl FUN_02202308
- bl FUN_021E26E4
+ bl MOD04_02202308
+ bl MOD04_021E26E4
ldr r0, [r0, #0x46c]
cmp r0, #0
beq _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
ldr r0, [sp, #8]
- bl FUN_021E1F18
+ bl MOD04_021E1F18
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x470]
ldr r2, [r5, #0x46c]
mov r0, r4
blx r2
b _021E7608
_021E701C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #1
bne _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
cmp r8, r0
bne _021E7608
@@ -16364,36 +16364,36 @@ _021E701C:
bne _021E7084
ldr r5, [r6, #4]
ldr r4, [r6, #8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r5, r0
strb r4, [r0, #0x2d0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r2, [r0, #0x200]
add r1, r4, r5, lsl #2
mov r0, #3
str r2, [r1, #0xf4]
- bl FUN_021E51C0
+ bl MOD04_021E51C0
b _021E7608
_021E7084:
ldr r0, [r6, #8]
ldr r4, [r6, #4]
and r5, r0, #0xff
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4, lsl #2
ldr r1, [sp, #8]
ldr r0, [r0, #0xf4]
cmp r1, r0
bne _021E7104
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
sub r0, r0, #1
cmp r4, r0
bne _021E7104
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, sp, #8
str r1, [sp]
mov r1, #1
@@ -16402,60 +16402,60 @@ _021E7084:
ldr r2, [r4, #0x24]
mov r1, r8
mov r0, #9
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
beq _021E7608
add sp, sp, #0x118
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E7104:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [sp, #8]
add r0, r0, r4, lsl #2
str r1, [r0, #0xf4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r4, r0
strb r5, [r0, #0x2d0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r6, #0xc]
add r0, r0, r4, lsl #2
str r1, [r0, #0x24]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r6, #0x10]
add r0, r0, r4, lsl #1
strh r1, [r0, #0xa4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r6, #0xc]
str r1, [r0, #0x1b8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, #0x100
ldr r2, [r6, #0x10]
mov r0, #5
strh r2, [r1, #0xb4]
- bl FUN_021E26D0
+ bl MOD04_021E26D0
ldr r0, [sp, #8]
- bl FUN_021E7E5C
- bl FUN_021E38E8
+ bl MOD04_021E7E5C
+ bl MOD04_021E38E8
cmp r0, #0
addne sp, sp, #0x118
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1c8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1bc]
b _021E7608
_021E719C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xd
bne _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a4]
ldr r1, [r6]
add r0, r0, #1
@@ -16463,105 +16463,105 @@ _021E719C:
ldr r0, [r0, #0xf4]
cmp r1, r0
bne _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x1a4]
add r1, r1, #1
strb r1, [r0, #0x1a4]
mov r0, #0
- bl FUN_021E51C0
+ bl MOD04_021E51C0
b _021E7608
_021E71F0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #1
beq _021E7210
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0x12
bne _021E7608
_021E7210:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
beq _021E7234
ldr r1, [r6]
add r0, r6, #4
- bl FUN_021E5138
+ bl MOD04_021E5138
cmp r0, #0
beq _021E7250
_021E7234:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r6, #4]
str r1, [r0, #0x208]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a7]
b _021E725C
_021E7250:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x208]
_021E725C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0
beq _021E7280
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD45C
+ bl MOD04_021FD45C
b _021E7608
_021E7280:
- bl FUN_021E4BF4
+ bl MOD04_021E4BF4
cmp r0, #0
beq _021E7608
add sp, sp, #0x118
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E7298:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
cmp r8, r0
bne _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
beq _021E72C8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E72E4
_021E72C8:
mov r0, r8
- bl FUN_021E5908
+ bl MOD04_021E5908
cmp r0, #0
bne _021E7608
add sp, sp, #0x118
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E72E4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
bne _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r8, [r0, #0x20c]
- bl FUN_021E4B40
+ bl MOD04_021E4B40
mov r0, #0
- bl FUN_021E4CF8
+ bl MOD04_021E4CF8
b _021E7608
_021E730C:
ldr r2, [r6]
mov r0, r8
mov r1, sb
- bl FUN_021E43E0
+ bl MOD04_021E43E0
cmp r0, #0
bne _021E7608
add sp, sp, #0x118
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E7330:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
cmp r8, r0
addne sp, sp, #0x118
@@ -16574,10 +16574,10 @@ _021E7330:
_021E7358:
ldr r0, [r6, r7, lsl #2]
mov r1, r4
- bl FUN_021E3F28
+ bl MOD04_021E3F28
cmp r0, #0xff
beq _021E7370
- bl FUN_021DF9D4
+ bl MOD04_021DF9D4
_021E7370:
add r7, r7, #1
cmp r7, r5
@@ -16620,21 +16620,21 @@ _021E73E8:
mov r3, sl
mov r0, #0x12
str r4, [sp, #4]
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
beq _021E7608
add sp, sp, #0x118
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E7424:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0x13
bne _021E7608
mov r0, r8
mov r1, #0
- bl FUN_021E3F28
+ bl MOD04_021E3F28
cmp r0, #0xff
beq _021E7608
ldr r1, _021E7614 ; =0x022106D4
@@ -16654,26 +16654,26 @@ _021E7424:
_021E7480:
mov r0, #0xc
mov r1, #0
- bl FUN_021E8E08
+ bl MOD04_021E8E08
add sp, sp, #0x118
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E7498:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E7608
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a6]
cmp r0, #0
bne _021E7608
mov r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E7608
_021E74CC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4, lsl #2
ldr r0, [r0, #0xf4]
cmp r8, r0
@@ -16681,41 +16681,41 @@ _021E74CC:
ldr r0, [r6]
cmp r0, #0
bne _021E7554
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xb
beq _021E750C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xc
bne _021E7524
_021E750C:
- bl FUN_021E4E00
- bl FUN_021E61EC
+ bl MOD04_021E4E00
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #0x118
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E7524:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x19c]
cmp r0, #0
beq _021E754C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x19c]
- bl FUN_022006B4
- bl FUN_021E26E4
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x19c]
_021E754C:
- bl FUN_021E4CB4
+ bl MOD04_021E4CB4
b _021E7608
_021E7554:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
mov r0, r8
mov r1, #0
- bl FUN_021E3F28
+ bl MOD04_021E3F28
ldr r2, [r4, #0x1dc]
mov r1, #1
orr r0, r2, r1, lsl r0
@@ -16723,19 +16723,19 @@ _021E7554:
b _021E7608
_021E757C:
add r4, r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r4, r0
ble _021E74CC
b _021E7608
_021E7594:
mov r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E7608
_021E75A8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4, lsl #2
ldr r0, [r0, #0xf4]
cmp r8, r0
@@ -16747,8 +16747,8 @@ _021E75A8:
mov r3, sl
mov r0, #0x41
str r4, [sp, #4]
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
beq _021E7608
add sp, sp, #0x118
@@ -16756,7 +16756,7 @@ _021E75A8:
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021E75F4:
add r4, r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r4, r0
ble _021E75A8
@@ -16768,8 +16768,8 @@ _021E7608:
_021E7614: .word 0x022106D4
_021E7618: .word 0x000082EA
- arm_func_start FUN_021E761C
-FUN_021E761C: ; 0x021E761C
+ arm_func_start MOD04_021E761C
+MOD04_021E761C: ; 0x021E761C
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
mov sb, r1
@@ -16816,8 +16816,8 @@ _021E767C:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- arm_func_start FUN_021E76C8
-FUN_021E76C8: ; 0x021E76C8
+ arm_func_start MOD04_021E76C8
+MOD04_021E76C8: ; 0x021E76C8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x208
mov r7, r0
@@ -16854,7 +16854,7 @@ _021E7748:
add r2, sp, #8
mov r0, r7
mov r1, r5
- bl FUN_021F02B8
+ bl MOD04_021F02B8
add sp, sp, #0x208
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
@@ -16862,8 +16862,8 @@ _021E7760: .word 0x0220D410
_021E7764: .word 0x0220D400
_021E7768: .word 0x0220D408
- arm_func_start FUN_021E776C
-FUN_021E776C: ; 0x021E776C
+ arm_func_start MOD04_021E776C
+MOD04_021E776C: ; 0x021E776C
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x9c
mov r5, r0
@@ -16899,24 +16899,24 @@ _021E77AC:
str r1, [sp, #8]
strb r5, [sp, #0xc]
strb r0, [sp, #0xd]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrh r0, [r0, #0x1a]
strh r0, [sp, #0xe]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1c]
str r0, [sp, #0x10]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x200]
mov r6, #0
str r0, [sp, #0x14]
mov r4, r6
_021E781C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
mov r0, r8
mov r1, r4
mov r2, r4
- bl FUN_021FFEB0
+ bl MOD04_021FFEB0
mov r1, r0
ldrb r0, [sp, #0xd]
mov r2, r7
@@ -16924,7 +16924,7 @@ _021E781C:
add r0, r0, #0x14
str r0, [sp]
ldr r0, [r5, #0xe4]
- bl FUN_02203CC4
+ bl MOD04_02203CC4
cmp r0, #0
addeq sp, sp, #0x9c
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
@@ -16939,8 +16939,8 @@ _021E781C:
.align 2, 0
_021E7880: .word 0x0220D398
- arm_func_start FUN_021E7884
-FUN_021E7884: ; 0x021E7884
+ arm_func_start MOD04_021E7884
+MOD04_021E7884: ; 0x021E7884
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x224
mov fp, r0
@@ -16950,15 +16950,15 @@ FUN_021E7884: ; 0x021E7884
ldr sl, [sp, #0x248]
ldr sb, [sp, #0x24c]
mov r8, #0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
beq _021E78E0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
beq _021E78D8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a6]
cmp r0, #0
beq _021E7900
@@ -16971,7 +16971,7 @@ _021E78E0:
mov r0, fp
mov r3, sl
str sb, [sp]
- bl FUN_021E776C
+ bl MOD04_021E776C
mov r4, r0
b _021E79A0
_021E7900:
@@ -17010,12 +17010,12 @@ _021E7978:
add r0, sp, #0x20
mov r1, #0
strb r1, [r0, r8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0]
ldr r2, [sp, #4]
add r3, sp, #0x20
mov r1, fp
- bl FUN_021E76C8
+ bl MOD04_021E76C8
mov r4, r0
_021E79A0:
cmp fp, #2
@@ -17027,21 +17027,21 @@ _021E79A0:
cmp r0, #1
bhi _021E7A30
_021E79C0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
strb fp, [r0, #0x3cc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, #0x300
ldr r0, [sp, #0xc]
strh r0, [r1, #0xce]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [sp, #8]
str r1, [r0, #0x3d0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [sp, #4]
str r1, [r0, #0x454]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str sb, [r0, #0x458]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
bl OS_GetTick
str r0, [r5, #0x45c]
@@ -17050,7 +17050,7 @@ _021E79C0:
beq _021E7A30
cmp sb, #0
beq _021E7A30
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, #0x3d4
mov r0, sl
mov r2, sb, lsl #2
@@ -17063,45 +17063,45 @@ _021E7A30:
_021E7A3C: .word 0x0220D394
_021E7A40: .word 0x0220D414
- arm_func_start FUN_021E7A44
-FUN_021E7A44: ; 0x021E7A44
+ arm_func_start MOD04_021E7A44
+MOD04_021E7A44: ; 0x021E7A44
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
mov r7, r0
ldrb r0, [r7]
cmp r0, #0
bne _021E7A9C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
mov r1, #0
ldr r0, [r7, #4]
mov r2, r1
- bl FUN_021FFEB0
+ bl MOD04_021FFEB0
mov r1, r0
ldrh r2, [r7, #2]
ldr r0, [r4, #0xe4]
ldr r3, [r7, #8]
- bl FUN_02203C7C
- bl FUN_021E38E8
+ bl MOD04_02203C7C
+ bl MOD04_021E38E8
cmp r0, #0
addne sp, sp, #0xc
movne r0, #2
ldmneia sp!, {r4, r5, r6, r7, pc}
_021E7A9C:
- ldr r5, _021E7AFC ; =FUN_021E2784
- ldr r4, _021E7B00 ; =FUN_021E2B60
+ ldr r5, _021E7AFC ; =MOD04_021E2784
+ ldr r4, _021E7B00 ; =MOD04_021E2B60
mov r6, #0
_021E7AA8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD43C
+ bl MOD04_021FD43C
str r5, [sp]
str r7, [sp, #4]
ldrb r2, [r7]
ldr r1, [r7, #8]
mov r3, r4
- bl FUN_022006EC
+ bl MOD04_022006EC
cmp r0, #0
addeq sp, sp, #0xc
ldmeqia sp!, {r4, r5, r6, r7, pc}
@@ -17114,24 +17114,24 @@ _021E7AA8:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
-_021E7AFC: .word FUN_021E2784
-_021E7B00: .word FUN_021E2B60
+_021E7AFC: .word MOD04_021E2784
+_021E7B00: .word MOD04_021E2B60
- arm_func_start FUN_021E7B04
-FUN_021E7B04: ; 0x021E7B04
+ arm_func_start MOD04_021E7B04
+MOD04_021E7B04: ; 0x021E7B04
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x14
mov r4, r0
mov r8, r1
mov r7, r2
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r4, #0
ldrb r6, [r0, #0x14]
mov r4, #0
bne _021E7D48
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, #0x100
ldr r2, [r5, #0x200]
ldr r0, _021E7DEC ; =0x0000FFFF
@@ -17139,28 +17139,28 @@ FUN_021E7B04: ; 0x021E7B04
and r2, r2, r0
mov r0, r7
orr r8, r2, r1, lsl #16
- bl FUN_022038C4
+ bl MOD04_022038C4
cmp r0, #0
beq _021E7BC0
mov r0, r7
- bl FUN_02203908
+ bl MOD04_02203908
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203BCC
+ bl MOD04_02203BCC
cmp r5, r0
movne r5, #1
bne _021E7C48
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
mov r0, r7
- bl FUN_022038BC
+ bl MOD04_022038BC
add r1, r5, r6, lsl #2
str r0, [r1, #0x210]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
mov r0, r7
- bl FUN_02203898
+ bl MOD04_02203898
add r1, r5, r6, lsl #1
add r1, r1, #0x200
strh r0, [r1, #0x90]
@@ -17190,16 +17190,16 @@ _021E7C08:
mov r5, #1
b _021E7C48
_021E7C10:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
mov r0, r7
- bl FUN_02203908
+ bl MOD04_02203908
add r1, r5, r6, lsl #2
str r0, [r1, #0x210]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
mov r0, r7
- bl FUN_022038E4
+ bl MOD04_022038E4
add r1, r5, r6, lsl #1
add r1, r1, #0x200
strh r0, [r1, #0x90]
@@ -17207,30 +17207,30 @@ _021E7C10:
_021E7C48:
cmp r5, #0
beq _021E7C74
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
mov r0, #0x10000
- bl FUN_021DE8C8
+ bl MOD04_021DE8C8
add r1, r6, #0x100
strh r0, [r1, #0x7e]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r8, [r0, #0x19c]
b _021E7D00
_021E7C74:
bl FUN_0209A60C
str r0, [sp, #8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD454
+ bl MOD04_021FD454
str r0, [sp, #0xc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sb, r0
mov r0, r7
- bl FUN_02203908
+ bl MOD04_02203908
mov r8, r0
mov r0, r7
- bl FUN_022038E4
+ bl MOD04_022038E4
add r1, sb, r6, lsl #2
add r6, sp, #8
mov r3, r0
@@ -17240,75 +17240,75 @@ _021E7C74:
ldr r1, [r1, #0xf4]
mov r2, r8
mov r0, #6
- bl FUN_021E7884
+ bl MOD04_021E7884
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
cmp r6, #0
strb r1, [r0, #0x3cd]
addne sp, sp, #0x14
movne r0, #2
ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x19c]
_021E7D00:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x194]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x195]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
mov r0, r7
- bl FUN_022038E4
+ bl MOD04_022038E4
add r1, r6, #0x100
strh r0, [r1, #0x96]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
mov r0, r7
- bl FUN_02203908
+ bl MOD04_02203908
str r0, [r6, #0x198]
b _021E7D88
_021E7D48:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #1
strb r1, [r0, #0x194]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, r4
strb r1, [r0, #0x195]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x100
mov r1, r4
strh r1, [r0, #0x96]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, r4
str r1, [r0, #0x198]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r8, [r0, #0x19c]
mov r5, #1
_021E7D88:
cmp r5, #0
beq _021E7DA4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x194
- bl FUN_021E7A44
+ bl MOD04_021E7A44
mov r4, r0
b _021E7DE0
_021E7DA4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD43C
+ bl MOD04_021FD43C
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r3, r0, #0x194
mov r0, #0
mov r1, r5
mov r2, r0
- bl FUN_021E2784
- bl FUN_021E26E4
+ bl MOD04_021E2784
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x18c]
str r1, [r0, #0x190]
@@ -17320,8 +17320,8 @@ _021E7DE0:
_021E7DEC: .word 0x0000FFFF
_021E7DF0: .word 0x0000A8C0
- arm_func_start FUN_021E7DF4
-FUN_021E7DF4: ; 0x021E7DF4
+ arm_func_start MOD04_021E7DF4
+MOD04_021E7DF4: ; 0x021E7DF4
stmdb sp!, {lr}
sub sp, sp, #0x24
mov lr, #3
@@ -17350,8 +17350,8 @@ _021E7E50: .word 0x0220D3D8
_021E7E54: .word 0x0220D418
_021E7E58: .word 0x0220D3E4
- arm_func_start FUN_021E7E5C
-FUN_021E7E5C: ; 0x021E7E5C
+ arm_func_start MOD04_021E7E5C
+MOD04_021E7E5C: ; 0x021E7E5C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x1b0
mov r7, #8
@@ -17370,11 +17370,11 @@ FUN_021E7E5C: ; 0x021E7E5C
strb r1, [sp, #0x112]
mov r5, r0
mov r4, #7
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
beq _021E7EC4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E7EF4
@@ -17393,7 +17393,7 @@ _021E7ED4:
cmp r3, #0x9a
blt _021E7ED4
_021E7EF4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #5
addls pc, pc, r0, lsl #2
@@ -17406,20 +17406,20 @@ _021E7F08: ; jump table
b _021E7F8C ; case 4
b _021E7F8C ; case 5
_021E7F20:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x208]
cmp r0, #0
bne _021E7F84
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r6, #0x200]
ldrb r2, [r5, #0x16]
ldrb r3, [r0, #0x15]
add r0, sp, #0xc
- bl FUN_021E7DF4
+ bl MOD04_021E7DF4
ldr r0, _021E8024 ; =0x022106E0
ldr r5, [r0]
cmp r5, #0
@@ -17432,7 +17432,7 @@ _021E7F20:
bl OS_SNPrintf
b _021E7FAC
_021E7F84:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r5, [r0, #0x208]
_021E7F8C:
ldr r2, _021E802C ; =0x0220D47C
@@ -17441,12 +17441,12 @@ _021E7F8C:
mov r1, #0x100
str r5, [sp]
bl OS_SNPrintf
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r5, [r0, #0x204]
_021E7FAC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203C04
+ bl MOD04_02203C04
mov sl, #0
add sb, sp, #0xc
add r5, sp, #0x10c
@@ -17454,7 +17454,7 @@ _021E7FAC:
mov r8, #6
mov r7, #1
_021E7FD0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r4, [sp]
str sb, [sp, #4]
str r8, [sp, #8]
@@ -17462,7 +17462,7 @@ _021E7FD0:
mov r1, r7
mov r2, r6
mov r3, r5
- bl FUN_02203D1C
+ bl MOD04_02203D1C
cmp r0, #0
addeq sp, sp, #0x1b0
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
@@ -17481,41 +17481,41 @@ _021E8028: .word 0x0220D470
_021E802C: .word 0x0220D47C
_021E8030: .word 0x0220D3AC
- arm_func_start FUN_021E8034
-FUN_021E8034: ; 0x021E8034
+ arm_func_start MOD04_021E8034
+MOD04_021E8034: ; 0x021E8034
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
addeq sp, sp, #4
ldmeqia sp!, {pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
cmp r0, #0
beq _021E8074
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203E80
- bl FUN_021E26E4
+ bl MOD04_02203E80
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0xe4]
_021E8074:
- bl FUN_02200D6C
+ bl MOD04_02200D6C
mov r0, #0
- bl FUN_021E26D0
+ bl MOD04_021E26D0
ldr r0, _021E80C0 ; =0x022106E0
ldr r1, [r0]
cmp r1, #0
beq _021E80A8
mov r0, #4
mov r2, #0
- bl FUN_021DD904
+ bl MOD04_021DD904
ldr r0, _021E80C0 ; =0x022106E0
mov r1, #0
str r1, [r0]
_021E80A8:
- bl FUN_021E4164
- bl FUN_021E26E4
+ bl MOD04_021E4164
+ bl MOD04_021E26E4
mov r1, #1
strb r1, [r0, #0x18]
add sp, sp, #4
@@ -17523,8 +17523,8 @@ _021E80A8:
.align 2, 0
_021E80C0: .word 0x022106E0
- arm_func_start FUN_021E80C4
-FUN_021E80C4: ; 0x021E80C4
+ arm_func_start MOD04_021E80C4
+MOD04_021E80C4: ; 0x021E80C4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r7, r0
@@ -17532,36 +17532,36 @@ FUN_021E80C4: ; 0x021E80C4
mov r6, r1
mov r5, r2
mov r4, r3
- bl FUN_021E8174
- bl FUN_021E26E4
+ bl MOD04_021E8174
+ bl MOD04_021E26E4
strb r7, [r0, #0x15]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
strb r6, [r0, #0x16]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r5, [r0, #0x464]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r4, [r0, #0x468]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x17d]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x2d0]
mov r0, #0x32
ldr r1, _021E8160 ; =0x0220D3AC
- bl FUN_0220277C
+ bl MOD04_0220277C
mov r0, #0x33
ldr r1, _021E8164 ; =0x0220D3CC
- bl FUN_0220277C
+ bl MOD04_0220277C
mov r0, #0x34
ldr r1, _021E8168 ; =0x0220D3D8
- bl FUN_0220277C
+ bl MOD04_0220277C
mov r0, #0x35
ldr r1, _021E816C ; =0x0220D3E4
- bl FUN_0220277C
+ bl MOD04_0220277C
mov r0, #0x36
ldr r1, _021E8170 ; =0x0220D3A0
- bl FUN_0220277C
+ bl MOD04_0220277C
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
@@ -17571,287 +17571,287 @@ _021E8168: .word 0x0220D3D8
_021E816C: .word 0x0220D3E4
_021E8170: .word 0x0220D3A0
- arm_func_start FUN_021E8174
-FUN_021E8174: ; 0x021E8174
+ arm_func_start MOD04_021E8174
+MOD04_021E8174: ; 0x021E8174
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0xc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x17c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
mov r0, #0x10000
- bl FUN_021DE8C8
+ bl MOD04_021DE8C8
add r1, r5, #0x100
strh r0, [r1, #0x7e]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x180]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x184]
str r1, [r0, #0x188]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x18c]
str r1, [r0, #0x190]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a9]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1aa]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1ab]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1ac]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a7]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
add r0, r0, #0x100
strh r1, [r0, #0xb2]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
add r0, r0, #0x100
strh r1, [r0, #0xb4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1b8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1e0]
str r1, [r0, #0x1e4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1f0]
str r1, [r0, #0x1f4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, #0x3cc
mov r0, #0
mov r2, #0x98
bl MIi_CpuClear32
cmp r4, #2
bne _021E82F0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
strb r0, [r4, #0x14]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
bne _021E82CC
mov r0, #1
- bl FUN_021E26D0
+ bl MOD04_021E26D0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
_021E82CC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
addne sp, sp, #4
ldmneia sp!, {r4, r5, pc}
mov r0, #0xa
- bl FUN_021E26D0
+ bl MOD04_021E26D0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
_021E82F0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0xd]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0xe]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x14]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x17]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x20]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0xe8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a5]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
add r0, r0, #0x100
strh r1, [r0, #0xb0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1bc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1c0]
str r1, [r0, #0x1c4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1c8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1cc]
str r1, [r0, #0x1d0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1d4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x204]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x208]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x2f0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, #0x24
mov r0, #0
mov r2, #0x80
bl MIi_CpuClear32
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, #0xa4
mov r0, #0
mov r2, #0x40
bl MIi_CpuClear16
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, #0xf4
mov r0, #0
mov r2, #0x80
bl MIi_CpuClear32
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, #0x194
mov r0, #0
mov r2, #0xc
bl MIi_CpuClear32
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, #0x210
mov r0, #0
mov r2, #0x80
bl MIi_CpuClear32
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, #0x290
mov r0, #0
mov r2, #0x40
bl MIi_CpuClear16
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x2d0
mov r1, #0
mov r2, #0x20
bl MI_CpuFill8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, #0x348
mov r0, #0
mov r2, #0x84
bl MIi_CpuClear32
cmp r4, #1
bne _021E84A8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E8484
mov r0, #3
- bl FUN_021E26D0
+ bl MOD04_021E26D0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
_021E8484:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
addne sp, sp, #4
ldmneia sp!, {r4, r5, pc}
mov r0, #4
- bl FUN_021E26D0
+ bl MOD04_021E26D0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
_021E84A8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x15]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x16]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x18]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x20c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1a6]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1ae]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1ad]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1f8]
str r1, [r0, #0x1fc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x46c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x470]
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021E852C
-FUN_021E852C: ; 0x021E852C
+ arm_func_start MOD04_021E852C
+MOD04_021E852C: ; 0x021E852C
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
moveq r0, #1
movne r0, #0
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021E854C
-FUN_021E854C: ; 0x021E854C
+ arm_func_start MOD04_021E854C
+MOD04_021E854C: ; 0x021E854C
stmdb sp!, {lr}
sub sp, sp, #4
mov r0, #0
- bl FUN_021E26F4
+ bl MOD04_021E26F4
ldr r0, _021E85C8 ; =0x022106E0
ldr r1, [r0]
cmp r1, #0
beq _021E8584
mov r0, #4
mov r2, #0
- bl FUN_021DD904
+ bl MOD04_021DD904
ldr r0, _021E85C8 ; =0x022106E0
mov r1, #0
str r1, [r0]
_021E8584:
- bl FUN_021E4164
+ bl MOD04_021E4164
ldr r0, _021E85CC ; =0x022106D4
ldr r1, [r0]
cmp r1, #0
beq _021E85B0
mov r0, #4
mov r2, #0
- bl FUN_021DD904
+ bl MOD04_021DD904
ldr r0, _021E85CC ; =0x022106D4
mov r1, #0
str r1, [r0]
@@ -17867,17 +17867,17 @@ _021E85C8: .word 0x022106E0
_021E85CC: .word 0x022106D4
_021E85D0: .word 0x022106DC
- arm_func_start FUN_021E85D4
-FUN_021E85D4: ; 0x021E85D4
+ arm_func_start MOD04_021E85D4
+MOD04_021E85D4: ; 0x021E85D4
stmdb sp!, {lr}
sub sp, sp, #0x2c
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
addne sp, sp, #0x2c
movne r0, #0
ldmneia sp!, {pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x16]
ldr r2, _021E8694 ; =0x0220D394
add r0, sp, #0
@@ -17888,8 +17888,8 @@ FUN_021E85D4: ; 0x021E85D4
add r1, sp, #0
add r2, sp, #0xc
mov r3, #0x2f
- bl FUN_021DEB54
- bl FUN_021E26E4
+ bl MOD04_021DEB54
+ bl MOD04_021E26E4
ldrb r2, [r0, #0xd]
add r0, sp, #0
mov r1, #0xc
@@ -17900,7 +17900,7 @@ FUN_021E85D4: ; 0x021E85D4
add r1, sp, #0
add r2, sp, #0xc
mov r3, #0x2f
- bl FUN_021DEB0C
+ bl MOD04_021DEB0C
ldr r2, _021E8694 ; =0x0220D394
add r0, sp, #0
mov r1, #0xc
@@ -17910,11 +17910,11 @@ FUN_021E85D4: ; 0x021E85D4
add r1, sp, #0
add r2, sp, #0xc
mov r3, #0x2f
- bl FUN_021DEB0C
+ bl MOD04_021DEB0C
mov r0, #6
add r1, sp, #0xc
mov r2, #0
- bl FUN_021E1E30
+ bl MOD04_021E1E30
add sp, sp, #0x2c
ldmfd sp!, {pc}
.align 2, 0
@@ -17923,11 +17923,11 @@ _021E8698: .word 0x0220D484
_021E869C: .word 0x0220D488
_021E86A0: .word 0x0220D3F4
- arm_func_start FUN_021E86A4
-FUN_021E86A4: ; 0x021E86A4
+ arm_func_start MOD04_021E86A4
+MOD04_021E86A4: ; 0x021E86A4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
@@ -17936,65 +17936,65 @@ FUN_021E86A4: ; 0x021E86A4
mov r2, #0x20
bl MI_CpuFill8
mov r6, #0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xe]
cmp r0, #0
blt _021E8730
ldr r5, _021E8748 ; =0x022106E4
mov r4, #1
_021E86E8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r8, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r6
ldrb r0, [r0, #0x2d0]
ldr r1, [r8, #0x2f0]
mov r0, r4,lsl r0
ands r0, r1, r0
beq _021E8730
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r6
ldrb r0, [r0, #0x2d0]
add r6, r6, #1
strb r0, [r5], #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xe]
cmp r6, r0
ble _021E86E8
_021E8730:
ldr r0, _021E8748 ; =0x022106E4
str r0, [r7]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xe]
add r0, r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_021E8748: .word 0x022106E4
- arm_func_start FUN_021E874C
-FUN_021E874C: ; 0x021E874C
+ arm_func_start MOD04_021E874C
+MOD04_021E874C: ; 0x021E874C
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x2d0
str r0, [r4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r0, #1
ldmia sp!, {r4, pc}
- arm_func_start FUN_021E8780
-FUN_021E8780: ; 0x021E8780
+ arm_func_start MOD04_021E8780
+MOD04_021E8780: ; 0x021E8780
stmdb sp!, {r4, r5, r6, lr}
mvn r6, #0
mov r5, #0
mov r4, #1
_021E8790:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, r4,lsl r5
ldr r0, [r0, #0x2f0]
add r5, r5, #1
@@ -18005,60 +18005,60 @@ _021E8790:
mvn r0, #0
cmp r6, r0
bne _021E87CC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0xe]
ldmia sp!, {r4, r5, r6, pc}
_021E87CC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
strb r6, [r0, #0xe]
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021E87D8
-FUN_021E87D8: ; 0x021E87D8
+ arm_func_start MOD04_021E87D8
+MOD04_021E87D8: ; 0x021E87D8
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xe]
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021E8804
-FUN_021E8804: ; 0x021E8804
+ arm_func_start MOD04_021E8804
+MOD04_021E8804: ; 0x021E8804
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021E8830
-FUN_021E8830: ; 0x021E8830
+ arm_func_start MOD04_021E8830
+MOD04_021E8830: ; 0x021E8830
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
mov sb, r0
mov r8, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, sb, lsl #2
ldr fp, [r0, #0xf4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, sb
ldrb r0, [r0, #0x2d0]
mov r1, #1
@@ -18066,7 +18066,7 @@ FUN_021E8830: ; 0x021E8830
mvn r0, r1, lsl r0
and r0, r2, r0
str r0, [r4, #0x2f0]
- bl FUN_021E8780
+ bl MOD04_021E8780
sub r0, r8, #1
cmp sb, r0
bge _021E8970
@@ -18078,46 +18078,46 @@ FUN_021E8830: ; 0x021E8830
_021E88AC:
add r4, sb, r7
add r5, r4, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sl, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r5, lsl #2
ldr r1, [r0, #0x24]
add r0, sl, r4, lsl #2
str r1, [r0, #0x24]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sl, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r5, lsl #1
ldrh r1, [r0, #0xa4]
add r0, sl, r4, lsl #1
strh r1, [r0, #0xa4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sl, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, sl, r4, lsl #2
add r0, r0, r5, lsl #2
ldr r0, [r0, #0xf4]
str r0, [r1, #0xf4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sl, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, sl, r4, lsl #2
add r0, r0, r5, lsl #2
ldr r0, [r0, #0x210]
str r0, [r1, #0x210]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sl, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, sl, r4, lsl #1
add r1, r1, #0x200
add r0, r0, r5, lsl #1
add r0, r0, #0x200
ldrh r0, [r0, #0x90]
strh r0, [r1, #0x90]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sl, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r0, r5
add r0, sl, r4
ldrb r1, [r1, #0x2d0]
@@ -18129,28 +18129,28 @@ _021E8970:
cmp r8, #0
ble _021E89E0
sub r4, r8, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4, lsl #2
mov r1, #0
str r1, [r0, #0x24]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4, lsl #1
mov r1, #0
strh r1, [r0, #0xa4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4, lsl #2
mov r1, #0
str r1, [r0, #0xf4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4, lsl #2
mov r1, #0
str r1, [r0, #0x210]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4, lsl #1
add r0, r0, #0x200
mov r1, #0
strh r1, [r0, #0x90]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4
mov r1, #0
strb r1, [r0, #0x2d0]
@@ -18159,12 +18159,12 @@ _021E89E0:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_021E89EC
-FUN_021E89EC: ; 0x021E89EC
+ arm_func_start MOD04_021E89EC
+MOD04_021E89EC: ; 0x021E89EC
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
@@ -18172,14 +18172,14 @@ FUN_021E89EC: ; 0x021E89EC
mov r4, #0
ble _021E8A48
_021E8A14:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r4, lsl #2
ldr r0, [r0, #0xf4]
cmp r6, r0
bne _021E8A3C
mov r0, r4
mov r1, r5
- bl FUN_021E8830
+ bl MOD04_021E8830
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
_021E8A3C:
@@ -18190,30 +18190,30 @@ _021E8A48:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021E8A50
-FUN_021E8A50: ; 0x021E8A50
+ arm_func_start MOD04_021E8A50
+MOD04_021E8A50: ; 0x021E8A50
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a8]
cmp r0, #2
ldmeqia sp!, {r4, pc}
mov r0, r4
- bl FUN_021E59D4
+ bl MOD04_021E59D4
ldmia sp!, {r4, pc}
- arm_func_start FUN_021E8A74
-FUN_021E8A74: ; 0x021E8A74
+ arm_func_start MOD04_021E8A74
+MOD04_021E8A74: ; 0x021E8A74
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
mov r4, r1
- bl FUN_021DF88C
+ bl MOD04_021DF88C
cmp r0, #5
addne sp, sp, #4
movne r0, #0
ldmneia sp!, {r4, r5, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
addeq sp, sp, #4
@@ -18224,23 +18224,23 @@ FUN_021E8A74: ; 0x021E8A74
ldr r1, _021E8C00 ; =0xFFFEC780
mov r0, r5
add r1, r4, r1
- bl FUN_021E8E08
+ bl MOD04_021E8E08
add sp, sp, #4
mov r0, #1
ldmia sp!, {r4, r5, pc}
_021E8AD4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x2d0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a9]
cmp r0, #1
beq _021E8B10
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a8]
cmp r0, #1
beq _021E8B10
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a8]
cmp r0, #2
bne _021E8B1C
@@ -18249,57 +18249,57 @@ _021E8B10:
mov r0, #1
ldmia sp!, {r4, r5, pc}
_021E8B1C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x19c]
cmp r0, #0
beq _021E8B44
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x19c]
- bl FUN_022006B4
- bl FUN_021E26E4
+ bl MOD04_022006B4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x19c]
_021E8B44:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0
beq _021E8B84
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a8]
cmp r0, #0
bne _021E8BF4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #3
strb r1, [r0, #0x1a8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD45C
+ bl MOD04_021FD45C
b _021E8BF4
_021E8B84:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
bne _021E8BA4
ldr r1, _021E8C04 ; =0xFFFEC5D2
mov r0, #6
- bl FUN_021E8E08
+ bl MOD04_021E8E08
b _021E8BF4
_021E8BA4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x208]
cmp r0, #0
beq _021E8BBC
- bl FUN_021E4BF4
+ bl MOD04_021E4BF4
b _021E8BF4
_021E8BBC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #1
bne _021E8BEC
mov r0, #0x12
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
str r0, [r4, #0x1f0]
@@ -18307,7 +18307,7 @@ _021E8BBC:
b _021E8BF4
_021E8BEC:
mov r0, #1
- bl FUN_021E4CF8
+ bl MOD04_021E4CF8
_021E8BF4:
mov r0, #1
add sp, sp, #4
@@ -18316,8 +18316,8 @@ _021E8BF4:
_021E8C00: .word 0xFFFEC780
_021E8C04: .word 0xFFFEC5D2
- arm_func_start FUN_021E8C08
-FUN_021E8C08: ; 0x021E8C08
+ arm_func_start MOD04_021E8C08
+MOD04_021E8C08: ; 0x021E8C08
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
mov r4, r2
@@ -18329,59 +18329,59 @@ FUN_021E8C08: ; 0x021E8C08
beq _021E8DA4
ldmia sp!, {r4, r5, r6, pc}
_021E8C30:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #1
bne _021E8CCC
ldrb r0, [r4]
cmp r0, #1
bne _021E8C58
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x20c]
_021E8C58:
ldrb r6, [r4, #1]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r4, #2]
add r0, r0, r6
strb r1, [r0, #0x2d0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x200]
add r0, r4, r6, lsl #2
str r1, [r0, #0xf4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
beq _021E8CA4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #1
bne _021E8CB8
_021E8CA4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
strb r0, [r4, #0x16]
_021E8CB8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1ad]
mov r0, #9
- bl FUN_021E26D0
+ bl MOD04_021E26D0
_021E8CCC:
mov r0, r5
mov r1, #3
- bl FUN_021E4910
+ bl MOD04_021E4910
ldmia sp!, {r4, r5, r6, pc}
_021E8CDC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0x10
bne _021E8D94
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r2, [r0, #0x1d4]
mov r1, #1
orr r1, r2, r1, lsl r5
@@ -18389,116 +18389,116 @@ _021E8CDC:
ldrb r1, [r4]
ldrb r0, [r4, #1]
orr r4, r1, r0, lsl #8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x100
ldrh r0, [r0, #0xb0]
cmp r4, r0
ble _021E8D2C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x100
strh r4, [r0, #0xb0]
_021E8D2C:
mov r0, #0
- bl FUN_021E3EC4
+ bl MOD04_021E3EC4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1d4]
cmp r4, r0
ldmneia sp!, {r4, r5, r6, pc}
mov r5, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #1
blt _021E8D88
mov r4, #4
_021E8D60:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, r5
ldrb r0, [r0, #0x2d0]
mov r1, r4
- bl FUN_021E4910
+ bl MOD04_021E4910
add r5, r5, #1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r5, r0
ble _021E8D60
_021E8D88:
mov r0, #0x11
- bl FUN_021E26D0
+ bl MOD04_021E26D0
ldmia sp!, {r4, r5, r6, pc}
_021E8D94:
mov r0, r5
mov r1, #4
- bl FUN_021E4910
+ bl MOD04_021E4910
ldmia sp!, {r4, r5, r6, pc}
_021E8DA4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #9
ldmneia sp!, {r4, r5, r6, pc}
mov r0, #4
- bl FUN_021E51C0
+ bl MOD04_021E51C0
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021E8DC0
-FUN_021E8DC0: ; 0x021E8DC0
+ arm_func_start MOD04_021E8DC0
+MOD04_021E8DC0: ; 0x021E8DC0
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
addeq sp, sp, #4
ldmeqia sp!, {pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x14]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x16]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- bl FUN_02202308
+ bl MOD04_02202308
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021E8E08
-FUN_021E8E08: ; 0x021E8E08
+ arm_func_start MOD04_021E8E08
+MOD04_021E8E08: ; 0x021E8E08
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #8
mov r4, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
addeq sp, sp, #8
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
cmp r4, #0
addeq sp, sp, #8
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
- bl FUN_021E4B40
+ bl MOD04_021E4B40
mov r0, r4
mov r1, r5
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
ldr r1, _021E8EC8 ; =0x0220D3F0
mov r0, #1
mov r2, #0
- bl FUN_021E1E30
- bl FUN_021E26E4
+ bl MOD04_021E1E30
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
moveq r7, #1
movne r7, #0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20c]
cmp r0, #0
moveq r8, #1
movne r8, #0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x20c]
- bl FUN_021E1F18
+ bl MOD04_021E1F18
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r5, [sp]
ldr r1, [r0, #0x468]
mov r0, r4
@@ -18508,27 +18508,27 @@ FUN_021E8E08: ; 0x021E8E08
mov r3, r7
mov r1, #0
blx r4
- bl FUN_021E8034
+ bl MOD04_021E8034
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_021E8EC8: .word 0x0220D3F0
- arm_func_start FUN_021E8ECC
-FUN_021E8ECC: ; 0x021E8ECC
+ arm_func_start MOD04_021E8ECC
+MOD04_021E8ECC: ; 0x021E8ECC
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0xff
strb r1, [r0, #0x3cc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x3cd]
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021E8EF4
-FUN_021E8EF4: ; 0x021E8EF4
+ arm_func_start MOD04_021E8EF4
+MOD04_021E8EF4: ; 0x021E8EF4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x21c
mov fp, r2
@@ -18544,7 +18544,7 @@ _021E8F20:
mov r0, sb
mov r1, r8
mov r2, sl
- bl FUN_021E761C
+ bl MOD04_021E761C
cmp r0, r4
beq _021E8F58
mov r0, sb
@@ -18563,25 +18563,25 @@ _021E8F58:
mov r2, #0
ldr r1, [sp, #8]
mov r3, r2
- bl FUN_021E6730
+ bl MOD04_021E6730
add sp, sp, #0x21c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_021E8F80
-FUN_021E8F80: ; 0x021E8F80
+ arm_func_start MOD04_021E8F80
+MOD04_021E8F80: ; 0x021E8F80
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x1c
mov r6, r0
mov r4, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
addeq sp, sp, #0x1c
ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #7
beq _021E8FC4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xc
addne sp, sp, #0x1c
@@ -18594,42 +18594,42 @@ _021E8FC4:
ldmeqia sp!, {r4, r5, r6, r7, pc}
cmp r4, #6
bne _021E9114
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0xc]
add r1, r1, #1
strb r1, [r0, #0xc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xc]
cmp r0, #5
bls _021E9030
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0xc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
add r0, r4, r0, lsl #2
ldr r0, [r0, #0xf4]
- bl FUN_021E59D4
+ bl MOD04_021E59D4
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, pc}
_021E9030:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r3, [r0, #0x200]
ldr r2, _021E91F8 ; =0x0220D394
add r0, sp, #0x10
mov r1, #0xc
bl OS_SNPrintf
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r2, [r6, #0x14]
ldrb r1, [r0, #0x14]
add r0, r7, r2, lsl #2
@@ -18638,9 +18638,9 @@ _021E9030:
ldrh r1, [r1, #0x90]
ldr r0, [r0, #0x210]
mov r2, #0
- bl FUN_021FFEB0
+ bl MOD04_021FFEB0
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mvn r1, #0
str r1, [sp]
ldr r3, _021E91FC ; =0x00001388
@@ -18653,57 +18653,57 @@ _021E9030:
ldr r0, [r4, #4]
add r3, sp, #0x10
ldr r0, [r0]
- bl FUN_021FD52C
+ bl MOD04_021FD52C
cmp r0, #1
bne _021E90E0
- bl FUN_021E36B0
+ bl MOD04_021E36B0
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, pc}
_021E90E0:
cmp r0, #0
addeq sp, sp, #0x1c
ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x14]
add r0, r4, r0, lsl #2
ldr r0, [r0, #0xf4]
- bl FUN_021E59D4
+ bl MOD04_021E59D4
add sp, sp, #0x1c
cmp r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
_021E9114:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r0, #1
add r0, r4, r0, lsl #2
ldr r0, [r0, #0xf4]
- bl FUN_021E59D4
+ bl MOD04_021E59D4
add sp, sp, #0x1c
cmp r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
_021E9140:
- bl FUN_021DF704
+ bl MOD04_021DF704
mov r5, r0
mvn r1, #0
cmp r5, r1
bne _021E9168
ldr r1, _021E9200 ; =0xFFFEABC4
mov r0, #6
- bl FUN_021E8E08
+ bl MOD04_021E8E08
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, pc}
_021E9168:
- bl FUN_021DF6BC
+ bl MOD04_021DF6BC
mov r4, r0
mov r0, r5
- bl FUN_021DF638
+ bl MOD04_021DF638
str r6, [r4]
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r2, [r0, #0xd]
mov r1, #0
add r2, r2, #1
@@ -18711,27 +18711,27 @@ _021E9168:
strb r5, [r4]
strh r1, [r4, #2]
str r1, [r4, #4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r2, [r0, #0xd]
mov r0, r6
mov r1, r4
add r2, r5, r2
ldrb r2, [r2, #0x2d0]
strb r2, [r4, #1]
- bl FUN_021FD3F8
- bl FUN_021E26E4
+ bl MOD04_021FD3F8
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xc
bne _021E91E8
mov r0, #0
- bl FUN_021E51C0
+ bl MOD04_021E51C0
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, pc}
_021E91E8:
mov r0, #1
- bl FUN_021E51C0
+ bl MOD04_021E51C0
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
@@ -18739,21 +18739,21 @@ _021E91F8: .word 0x0220D394
_021E91FC: .word 0x00001388
_021E9200: .word 0xFFFEABC4
- arm_func_start FUN_021E9204
-FUN_021E9204: ; 0x021E9204
+ arm_func_start MOD04_021E9204
+MOD04_021E9204: ; 0x021E9204
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
mov r8, r1
mov r7, r2
mov r6, r3
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
beq _021E9244
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #7
bne _021E9244
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a9]
cmp r0, #0
beq _021E925C
@@ -18761,35 +18761,35 @@ _021E9244:
ldr r1, _021E944C ; =0x0220D48C
mov r0, r8
mvn r2, #0
- bl FUN_021FD6B0
+ bl MOD04_021FD6B0
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
_021E925C:
- bl FUN_021DF704
+ bl MOD04_021DF704
mov r5, r0
mvn r2, #0
cmp r5, r2
bne _021E9290
ldr r1, _021E9450 ; =0x0220D498
mov r0, r8
- bl FUN_021FD6B0
+ bl MOD04_021FD6B0
ldr r1, _021E9454 ; =0xFFFEABC4
mov r0, #6
- bl FUN_021E8E08
+ bl MOD04_021E8E08
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
_021E9290:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r4, r0, lsl #2
ldr r0, [r0, #0x210]
cmp r7, r0
bne _021E92D4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r4, r0, lsl #1
add r0, r0, #0x200
@@ -18805,23 +18805,23 @@ _021E92D4:
mov r2, #0xa
bl strtoul
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sb, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, sb, r0, lsl #2
ldr r0, [r0, #0xf4]
cmp r4, r0
bne _021E934C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r4, r0, lsl #2
str r7, [r0, #0x210]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r4, r0, lsl #1
add r0, r0, #0x200
@@ -18831,28 +18831,28 @@ _021E934C:
ldr r1, _021E9458 ; =0x0220D4A4
mov r0, r8
mvn r2, #0
- bl FUN_021FD6B0
+ bl MOD04_021FD6B0
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
_021E9364:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x18c]
str r1, [r0, #0x190]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #8]
mov r0, r8
- bl FUN_021FD6BC
+ bl MOD04_021FD6BC
cmp r0, #0
bne _021E93A0
ldr r1, _021E945C ; =0xFFFEC5E6
mov r0, #6
- bl FUN_021E8E08
+ bl MOD04_021E8E08
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
_021E93A0:
- bl FUN_021E8ECC
- bl FUN_021E26E4
+ bl MOD04_021E8ECC
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
cmp r0, #0
bne _021E93D4
@@ -18861,25 +18861,25 @@ _021E93A0:
mov r4, r1, asr #1
cmp r4, r0
movge r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x100
strh r4, [r0, #0xb0]
_021E93D4:
mov r0, r5
- bl FUN_021DF6BC
+ bl MOD04_021DF6BC
mov r4, r0
mov r0, r5
- bl FUN_021DF638
+ bl MOD04_021DF638
str r8, [r4]
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0xd]
add r1, r1, #1
strb r1, [r0, #0xd]
strb r5, [r4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0xd]
mov r0, r8
mov r2, #0
@@ -18890,9 +18890,9 @@ _021E93D4:
strb r3, [r4, #1]
strh r2, [r4, #2]
str r2, [r4, #4]
- bl FUN_021FD3F8
+ bl MOD04_021FD3F8
mov r0, #2
- bl FUN_021E51C0
+ bl MOD04_021E51C0
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
@@ -18903,8 +18903,8 @@ _021E9458: .word 0x0220D4A4
_021E945C: .word 0xFFFEC5E6
_021E9460: .word 0x0000FFFF
- arm_func_start FUN_021E9464
-FUN_021E9464: ; 0x021E9464
+ arm_func_start MOD04_021E9464
+MOD04_021E9464: ; 0x021E9464
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
ldr r0, [sp, #0x18]
@@ -18943,16 +18943,16 @@ _021E94E4:
cmp r5, #0x5c
bne _021E9518
_021E94EC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
cmp r0, #0
beq _021E9558
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
ldr r2, [sp, #0x18]
add r3, sp, #0
mov r1, r4
- bl FUN_022011A8
+ bl MOD04_022011A8
b _021E9558
_021E9518:
ldr r1, _021E9564 ; =0x0220F018
@@ -18964,7 +18964,7 @@ _021E9518:
ldr r1, [sp, #0x18]
add r2, sp, #0
mov r0, r4
- bl FUN_021FFF78
+ bl MOD04_021FFF78
b _021E9558
_021E9544:
cmp r5, #0xfe
@@ -18979,47 +18979,47 @@ _021E9558:
.align 2, 0
_021E9564: .word 0x0220F018
- arm_func_start FUN_021E9568
-FUN_021E9568: ; 0x021E9568
+ arm_func_start MOD04_021E9568
+MOD04_021E9568: ; 0x021E9568
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
addeq sp, sp, #0xc
ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, pc}
cmp r4, #0
bne _021E95E4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
cmp r0, #0
beq _021E95B8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- bl FUN_02202534
+ bl MOD04_02202534
_021E95B8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
cmp r0, #0
addeq sp, sp, #0xc
ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD6D4
+ bl MOD04_021FD6D4
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
_021E95E4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0
addeq sp, sp, #0xc
ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xd
addls pc, pc, r0, lsl #2
@@ -19040,16 +19040,16 @@ _021E960C: ; jump table
b _021E9D04 ; case 12
b _021E9AEC ; case 13
_021E9644:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1c8]
cmp r0, #0
beq _021E9730
bl OS_GetTick
mov r6, r0
mov r7, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
ldr r1, [r5, #0x1cc]
ldr r0, [r5, #0x1d0]
@@ -19065,55 +19065,55 @@ _021E9644:
ldr r1, [r4, #0x1c8]
cmpeq r0, r1
bls _021E9730
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1c8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #3
bne _021E971C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x1aa]
add r1, r1, #1
strb r1, [r0, #0x1aa]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1aa]
cmp r0, #5
bls _021E96F8
ldr r1, _021E9EFC ; =0xFFFEC5D2
mov r0, #6
- bl FUN_021E8E08
+ bl MOD04_021E8E08
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
_021E96F8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
mov r1, #0
- bl FUN_021E6038
- bl FUN_021E61EC
+ bl MOD04_021E6038
+ bl MOD04_021E61EC
cmp r0, #0
beq _021E9730
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
_021E971C:
mov r0, #0
- bl FUN_021E5C44
+ bl MOD04_021E5C44
cmp r0, #0
addeq sp, sp, #0xc
ldmeqia sp!, {r4, r5, r6, r7, pc}
_021E9730:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1bc]
cmp r0, #0
beq _021E9D04
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0xd]
ldr r0, _021E9F00 ; =0x00000BB8
mla r5, r1, r0, r0
bl OS_GetTick
mov r4, r0
mov r6, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x1c0]
ldr r0, [r0, #0x1c4]
subs r2, r4, r1
@@ -19127,31 +19127,31 @@ _021E9730:
cmp r1, #0
cmpeq r0, r5
blo _021E9D04
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
mov r1, #0
- bl FUN_021E6038
- bl FUN_021E61EC
+ bl MOD04_021E6038
+ bl MOD04_021E61EC
cmp r0, #0
beq _021E9D04
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
_021E97B8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe8]
cmp r0, #0
ble _021E9D04
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #3
bne _021E97EC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0xd]
ldr r0, _021E9F00 ; =0x00000BB8
mla r5, r1, r0, r0
b _021E9800
_021E97EC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe8]
cmp r0, #1
moveq r5, #0x3e8
@@ -19160,7 +19160,7 @@ _021E9800:
bl OS_GetTick
mov r4, r0
mov r6, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0xec]
ldr r0, [r0, #0xf0]
subs r3, r4, r1
@@ -19174,19 +19174,19 @@ _021E9800:
cmp r1, #0
cmpeq r0, r5
bls _021E9D04
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x204]
- bl FUN_021E7E5C
- bl FUN_021E38E8
+ bl MOD04_021E7E5C
+ bl MOD04_021E38E8
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0xe8]
b _021E9D04
_021E9870:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r2, [r0, #0x18c]
ldr r1, [r0, #0x190]
mov r0, #0
@@ -19196,7 +19196,7 @@ _021E9870:
bl OS_GetTick
mov r4, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x18c]
ldr r0, [r0, #0x190]
subs r3, r4, r1
@@ -19211,26 +19211,26 @@ _021E9870:
cmp r1, #0
cmpeq r0, r2
bls _021E9D04
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x18c]
str r1, [r0, #0x190]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
- bl FUN_021E5908
+ bl MOD04_021E5908
cmp r0, #0
bne _021E9D04
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
_021E9900:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x3cc]
cmp r0, #6
bne _021E9D04
bl OS_GetTick
mov r4, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x45c]
ldr r0, [r0, #0x460]
subs r3, r4, r1
@@ -19245,32 +19245,32 @@ _021E9900:
cmp r1, #0
cmpeq r0, r2
bls _021E9D04
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x3cd]
add r1, r1, #1
strb r1, [r0, #0x3cd]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x3cd]
cmp r0, #5
bls _021E9998
- bl FUN_021E8ECC
- bl FUN_021E26E4
+ bl MOD04_021E8ECC
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
- bl FUN_021E5908
+ bl MOD04_021E5908
cmp r0, #0
bne _021E9D04
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
_021E9998:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r4, #0x3d4
str r1, [sp]
add r3, r5, #0x300
@@ -19280,25 +19280,25 @@ _021E9998:
ldr r1, [r7, #0x454]
ldr r2, [r6, #0x3d0]
ldrh r3, [r3, #0xce]
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
beq _021E9D04
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
_021E99F8:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x3cc]
cmp r0, #2
bne _021E9D04
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
bne _021E9A60
bl OS_GetTick
mov r4, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x45c]
ldr r0, [r0, #0x460]
subs r3, r4, r1
@@ -19314,14 +19314,14 @@ _021E99F8:
cmpeq r0, r2
bhi _021E9AB8
_021E9A60:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
beq _021E9D04
bl OS_GetTick
mov r4, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x45c]
ldr r0, [r0, #0x460]
subs r3, r4, r1
@@ -19337,28 +19337,28 @@ _021E9A60:
cmpeq r0, r2
bls _021E9D04
_021E9AB8:
- bl FUN_021E8ECC
- bl FUN_021E26E4
+ bl MOD04_021E8ECC
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r0, #1
add r0, r4, r0, lsl #2
ldr r0, [r0, #0xf4]
- bl FUN_021E59D4
+ bl MOD04_021E59D4
cmp r0, #0
bne _021E9D04
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
_021E9AEC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x3cc]
cmp r0, #8
bne _021E9D04
bl OS_GetTick
mov r4, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x45c]
ldr r0, [r0, #0x460]
subs r3, r4, r1
@@ -19373,43 +19373,43 @@ _021E9AEC:
cmp r1, #0
cmpeq r0, r2
bls _021E9D04
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x3cd]
add r1, r1, #1
strb r1, [r0, #0x3cd]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x3cd]
cmp r0, #0
beq _021E9BAC
- bl FUN_021E8ECC
- bl FUN_021E26E4
+ bl MOD04_021E8ECC
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #2
bne _021E9BA4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
add r0, r4, r0, lsl #2
ldr r0, [r0, #0xf4]
- bl FUN_021E59D4
+ bl MOD04_021E59D4
cmp r0, #0
bne _021E9D04
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
_021E9BA4:
- bl FUN_021E4CB4
+ bl MOD04_021E4CB4
b _021E9D04
_021E9BAC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r1, r4, #0x3d4
str r1, [sp]
add r3, r5, #0x300
@@ -19419,20 +19419,20 @@ _021E9BAC:
ldr r1, [r7, #0x454]
ldr r2, [r6, #0x3d0]
ldrh r3, [r3, #0xce]
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
beq _021E9D04
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
_021E9C0C:
- bl FUN_021DF88C
+ bl MOD04_021DF88C
cmp r0, #5
bne _021E9D04
bl OS_GetTick
mov r4, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x1f8]
ldr r0, [r0, #0x1fc]
subs r3, r4, r1
@@ -19447,23 +19447,23 @@ _021E9C0C:
cmp r1, #0
cmpeq r0, r2
bls _021E9D04
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1ad]
cmp r0, #5
blo _021E9C8C
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
- bl FUN_021E5908
+ bl MOD04_021E5908
cmp r0, #0
bne _021E9D04
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, pc}
_021E9C8C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [sp]
str r1, [sp, #4]
@@ -19471,16 +19471,16 @@ _021E9C8C:
ldr r1, [r5, #0xf4]
ldr r2, [r4, #0x24]
mov r0, #0x40
- bl FUN_021E7884
- bl FUN_021E61EC
+ bl MOD04_021E7884
+ bl MOD04_021E61EC
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r1, [r0, #0x1ad]
add r1, r1, #1
strb r1, [r0, #0x1ad]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
bl OS_GetTick
ldr r2, _021E9F14 ; =0xFF403B3A
@@ -19490,16 +19490,16 @@ _021E9C8C:
adc r0, r1, r3
str r0, [r4, #0x1fc]
_021E9D04:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xb
beq _021E9D24
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #6
bne _021E9DA0
_021E9D24:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r2, [r0, #0x184]
ldr r1, [r0, #0x188]
mov r0, #0
@@ -19509,7 +19509,7 @@ _021E9D24:
bl OS_GetTick
mov r4, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x184]
ldr r0, [r0, #0x188]
subs r3, r4, r1
@@ -19524,42 +19524,42 @@ _021E9D24:
cmp r1, #0
cmpeq r0, r2
bls _021E9DA0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
add r3, r0, #0x194
mov r2, r1
mov r0, #1
- bl FUN_021E2784
+ bl MOD04_021E2784
_021E9DA0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
cmp r0, #0
beq _021E9DBC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
- bl FUN_02203C38
+ bl MOD04_02203C38
_021E9DBC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- bl FUN_021E9F1C
- bl FUN_02200468
- bl FUN_021E26E4
+ bl MOD04_021E9F1C
+ bl MOD04_02200468
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
cmp r0, #0
beq _021E9DEC
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD6D4
+ bl MOD04_021FD6D4
_021E9DEC:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0x12
bne _021E9E54
bl OS_GetTick
mov r4, r0
mov r5, r1
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [r0, #0x1f0]
ldr r0, [r0, #0x1f4]
subs r3, r4, r1
@@ -19574,47 +19574,47 @@ _021E9DEC:
cmp r1, #0
cmpeq r0, r2
bls _021E9E54
- bl FUN_021E4BF4
+ bl MOD04_021E4BF4
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, pc}
_021E9E54:
- bl FUN_021E4684
+ bl MOD04_021E4684
cmp r0, #0
addeq sp, sp, #0xc
ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E41C4
+ bl MOD04_021E41C4
cmp r0, #0
addeq sp, sp, #0xc
ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E39F0
- bl FUN_021E26E4
+ bl MOD04_021E39F0
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1ae]
cmp r0, #0
addeq sp, sp, #0xc
ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xa
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0xd]
strb r0, [r4, #0x16]
- bl FUN_021E85D4
- bl FUN_021E26E4
+ bl MOD04_021E85D4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1ae]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x47c]
cmp r0, #0
addeq sp, sp, #0xc
ldmeqia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x480]
ldr r1, [r4, #0x47c]
blx r1
@@ -19631,16 +19631,16 @@ _021E9F10: .word 0x00007530
_021E9F14: .word 0xFF403B3A
_021E9F18: .word 0x00002710
- arm_func_start FUN_021E9F1C
-FUN_021E9F1C: ; 0x021E9F1C
+ arm_func_start MOD04_021E9F1C
+MOD04_021E9F1C: ; 0x021E9F1C
stmdb sp!, {r4, lr}
movs r4, r0
ldmeqia sp!, {r4, pc}
- bl FUN_02202534
+ bl MOD04_02202534
ldr r0, [r4, #0xb4]
cmp r0, #0
ldmneia sp!, {r4, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x15]
cmp r0, #0
beq _021E9F5C
@@ -19650,7 +19650,7 @@ FUN_021E9F1C: ; 0x021E9F1C
beq _021E9FB0
ldmia sp!, {r4, pc}
_021E9F5C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xb
addls pc, pc, r0, lsl #2
@@ -19669,22 +19669,22 @@ _021E9F70: ; jump table
ldmia sp!, {r4, pc} ; case 10
b _021E9FA0 ; case 11
_021E9FA0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- bl FUN_02202308
+ bl MOD04_02202308
ldmia sp!, {r4, pc}
_021E9FB0:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x1a0]
cmp r0, #0xb
ldmneia sp!, {r4, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- bl FUN_02202308
+ bl MOD04_02202308
ldmia sp!, {r4, pc}
- arm_func_start FUN_021E9FD0
-FUN_021E9FD0: ; 0x021E9FD0
+ arm_func_start MOD04_021E9FD0
+MOD04_021E9FD0: ; 0x021E9FD0
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x18
mov r5, r2
@@ -19694,35 +19694,35 @@ FUN_021E9FD0: ; 0x021E9FD0
mov r3, r5
mov r0, #3
mov r1, #0
- bl FUN_021E80C4
- bl FUN_021E26E4
+ bl MOD04_021E80C4
+ bl MOD04_021E26E4
str r4, [r0, #0x46c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [sp, #0x28]
str r1, [r0, #0x470]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #1
strb r1, [r0, #0x17]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x200]
str r0, [r4, #0x20]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r6, [r0, #0xf4]
mov r0, #4
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
cmp r0, #0
bne _021EA0A4
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r5, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r2, r0
mov r0, #0x14
str r0, [sp]
@@ -19730,21 +19730,21 @@ FUN_021E9FD0: ; 0x021E9FD0
str r0, [sp, #4]
mov r3, #0
str r3, [sp, #8]
- ldr r0, _021EA130 ; =FUN_021E32E4
+ ldr r0, _021EA130 ; =MOD04_021E32E4
str r0, [sp, #0xc]
str r3, [sp, #0x10]
ldr r0, [r5, #0x2f4]
ldr r1, [r4, #0x2f4]
ldr r2, [r2, #0x2f8]
- bl FUN_02203EA4
+ bl MOD04_02203EA4
str r0, [r6, #0xe4]
_021EA0A4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xe4]
cmp r0, #0
bne _021EA0C8
mov r0, #5
- bl FUN_021E38E8
+ bl MOD04_021E38E8
cmp r0, #0
addne sp, sp, #0x18
ldmneia sp!, {r4, r5, r6, pc}
@@ -19752,36 +19752,36 @@ _021EA0C8:
ldr r1, _021EA134 ; =0x0220D3F0
mov r0, #5
mov r2, #0
- bl FUN_021E1E30
- bl FUN_021E397C
+ bl MOD04_021E1E30
+ bl MOD04_021E397C
cmp r0, #0
addne sp, sp, #0x18
ldmneia sp!, {r4, r5, r6, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
cmp r0, #0
bne _021EA110
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x200]
- bl FUN_021EA1E0
+ bl MOD04_021EA1E0
cmp r0, #0
addne sp, sp, #0x18
ldmneia sp!, {r4, r5, r6, pc}
_021EA110:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0xf4]
mov r1, #0
- bl FUN_021E6038
- bl FUN_021E61EC
+ bl MOD04_021E6038
+ bl MOD04_021E61EC
cmp r0, #0
add sp, sp, #0x18
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
-_021EA130: .word FUN_021E32E4
+_021EA130: .word MOD04_021E32E4
_021EA134: .word 0x0220D3F0
- arm_func_start FUN_021EA138
-FUN_021EA138: ; 0x021EA138
+ arm_func_start MOD04_021EA138
+MOD04_021EA138: ; 0x021EA138
stmdb sp!, {r4, lr}
mov lr, r1
mov ip, r2
@@ -19790,96 +19790,96 @@ FUN_021EA138: ; 0x021EA138
mov r2, lr
mov r3, ip
mov r0, #2
- bl FUN_021E80C4
- bl FUN_021E26E4
+ bl MOD04_021E80C4
+ bl MOD04_021E26E4
str r4, [r0, #0x46c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [sp, #8]
str r1, [r0, #0x470]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x200]
str r0, [r4, #0xf4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #1
str r1, [r0, #0x2f0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r2, #0
strb r2, [r0, #0xe]
ldr r1, _021EA1DC ; =0x022106DC
mov r0, #0xa
strb r2, [r1, #1]
- bl FUN_021E26D0
- bl FUN_021E85D4
- bl FUN_021E397C
+ bl MOD04_021E26D0
+ bl MOD04_021E85D4
+ bl MOD04_021E397C
cmp r0, #0
ldmneia sp!, {r4, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
cmp r0, #0
ldmneia sp!, {r4, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x200]
- bl FUN_021EA1E0
+ bl MOD04_021EA1E0
ldmia sp!, {r4, pc}
.align 2, 0
_021EA1DC: .word 0x022106DC
- arm_func_start FUN_021EA1E0
-FUN_021EA1E0: ; 0x021EA1E0
+ arm_func_start MOD04_021EA1E0
+MOD04_021EA1E0: ; 0x021EA1E0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x2c
mov r4, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
cmp r0, #0
addne sp, sp, #0x2c
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r4, [r0, #0x200]
mov sl, #0
- ldr fp, _021EA344 ; =FUN_021E2E18
+ ldr fp, _021EA344 ; =MOD04_021E2E18
mov r4, sl
mov r5, #1
_021EA21C:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov sb, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD43C
+ bl MOD04_021FD43C
mov r8, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #4]
ldr r0, [r0]
- bl FUN_021FD454
+ bl MOD04_021FD454
mov r7, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r6, r0
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r3, [r0, #0x2f8]
mov r1, r8
str r3, [sp]
str r5, [sp, #4]
str r5, [sp, #8]
- ldr r3, _021EA348 ; =FUN_021E2E14
+ ldr r3, _021EA348 ; =MOD04_021E2E14
str fp, [sp, #0xc]
str r3, [sp, #0x10]
- ldr r3, _021EA34C ; =FUN_021E2E10
+ ldr r3, _021EA34C ; =MOD04_021E2E10
mov r2, r7
str r3, [sp, #0x14]
- ldr r3, _021EA350 ; =FUN_021E2D68
+ ldr r3, _021EA350 ; =MOD04_021E2D68
add r0, sb, #0x10
str r3, [sp, #0x18]
- ldr r3, _021EA354 ; =FUN_021E2D60
+ ldr r3, _021EA354 ; =MOD04_021E2D60
str r3, [sp, #0x1c]
- ldr r3, _021EA358 ; =FUN_021E2D54
+ ldr r3, _021EA358 ; =MOD04_021E2D54
str r3, [sp, #0x20]
str r4, [sp, #0x24]
ldr r3, [r6, #0x2f4]
- bl FUN_022025B0
+ bl MOD04_022025B0
movs r6, r0
beq _021EA2E4
cmp r6, #3
@@ -19888,7 +19888,7 @@ _021EA21C:
bne _021EA2D8
_021EA2C4:
mov r0, r6
- bl FUN_021E3800
+ bl MOD04_021E3800
add sp, sp, #0x2c
mov r0, r6
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -19897,152 +19897,152 @@ _021EA2D8:
cmp sl, #5
blt _021EA21C
_021EA2E4:
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strh r1, [r0, #0x1a]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- ldr r1, _021EA35C ; =FUN_021E2D2C
- bl FUN_02202568
- bl FUN_021E26E4
+ ldr r1, _021EA35C ; =MOD04_021E2D2C
+ bl MOD04_02202568
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- ldr r1, _021EA360 ; =FUN_021E2C78
- bl FUN_02202598
- bl FUN_021E26E4
+ ldr r1, _021EA360 ; =MOD04_021E2C78
+ bl MOD04_02202598
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- ldr r1, _021EA364 ; =FUN_021E2B64
- bl FUN_02202580
- bl FUN_021E26E4
+ ldr r1, _021EA364 ; =MOD04_021E2B64
+ bl MOD04_02202580
+ bl MOD04_021E26E4
ldr r0, [r0, #0x10]
- bl FUN_02202308
+ bl MOD04_02202308
mov r0, r6
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
-_021EA344: .word FUN_021E2E18
-_021EA348: .word FUN_021E2E14
-_021EA34C: .word FUN_021E2E10
-_021EA350: .word FUN_021E2D68
-_021EA354: .word FUN_021E2D60
-_021EA358: .word FUN_021E2D54
-_021EA35C: .word FUN_021E2D2C
-_021EA360: .word FUN_021E2C78
-_021EA364: .word FUN_021E2B64
-
- arm_func_start FUN_021EA368
-FUN_021EA368: ; 0x021EA368
+_021EA344: .word MOD04_021E2E18
+_021EA348: .word MOD04_021E2E14
+_021EA34C: .word MOD04_021E2E10
+_021EA350: .word MOD04_021E2D68
+_021EA354: .word MOD04_021E2D60
+_021EA358: .word MOD04_021E2D54
+_021EA35C: .word MOD04_021E2D2C
+_021EA360: .word MOD04_021E2C78
+_021EA364: .word MOD04_021E2B64
+
+ arm_func_start MOD04_021EA368
+MOD04_021EA368: ; 0x021EA368
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r5, r2
mov r4, r3
- bl FUN_021E26F4
- bl FUN_021E26E4
+ bl MOD04_021E26F4
+ bl MOD04_021E26E4
str r6, [r0]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r5, [r0, #4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
str r4, [r0, #8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x10]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strh r1, [r0, #0x1a]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0xe4]
mov r0, r1
- bl FUN_021E26D0
- bl FUN_021E26E4
+ bl MOD04_021E26D0
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0xf]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x19]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
strb r1, [r0, #0x1af]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
add r0, r0, #0x100
strh r1, [r0, #0xb6]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x1dc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x200]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [sp, #0x10]
str r1, [r0, #0x2f4]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [sp, #0x14]
str r1, [r0, #0x2f8]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [sp, #0x18]
str r1, [r0, #0x2fc]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldr r1, [sp, #0x1c]
str r1, [r0, #0x300]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
add r0, r0, #0x304
mov r1, #0
mov r2, #0x40
bl MI_CpuFill8
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x344]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x464]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x468]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x474]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x478]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x47c]
- bl FUN_021E26E4
+ bl MOD04_021E26E4
mov r1, #0
str r1, [r0, #0x480]
- bl FUN_021E4164
+ bl MOD04_021E4164
ldr r1, _021EA4D0 ; =0x022106DC
mov r0, #0
strb r0, [r1]
strb r0, [r1, #1]
strh r0, [r1, #2]
- bl FUN_021E8174
+ bl MOD04_021E8174
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021EA4D0: .word 0x022106DC
- arm_func_start FUN_021EA4D4
-FUN_021EA4D4: ; 0x021EA4D4
+ arm_func_start MOD04_021EA4D4
+MOD04_021EA4D4: ; 0x021EA4D4
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
addne sp, sp, #4
movne r0, #0
ldmneia sp!, {pc}
- bl FUN_021E26E4
+ bl MOD04_021E26E4
cmp r0, #0
beq _021EA518
- bl FUN_021DF88C
+ bl MOD04_021DF88C
cmp r0, #5
bne _021EA518
- bl FUN_021E26E4
+ bl MOD04_021E26E4
ldrb r0, [r0, #0x1a9]
cmp r0, #0
beq _021EA524
@@ -20055,26 +20055,26 @@ _021EA524:
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EA530
-FUN_021EA530: ; 0x021EA530
+ arm_func_start MOD04_021EA530
+MOD04_021EA530: ; 0x021EA530
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021EA4D4
+ bl MOD04_021EA4D4
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {pc}
- bl FUN_021E4F94
+ bl MOD04_021E4F94
mov r0, #1
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EA55C
-FUN_021EA55C: ; 0x021EA55C
+ arm_func_start MOD04_021EA55C
+MOD04_021EA55C: ; 0x021EA55C
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021DF760
- bl FUN_021FD444
+ bl MOD04_021DF760
+ bl MOD04_021FD444
ldr r1, _021EA584 ; =0xFFFFFDF9
add r0, r0, r1
cmp r0, #0
@@ -20084,13 +20084,13 @@ FUN_021EA55C: ; 0x021EA55C
.align 2, 0
_021EA584: .word 0xFFFFFDF9
- arm_func_start FUN_021EA588
-FUN_021EA588: ; 0x021EA588
+ arm_func_start MOD04_021EA588
+MOD04_021EA588: ; 0x021EA588
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
mov r4, r1
- bl FUN_021EA9AC
+ bl MOD04_021EA9AC
ldrb r1, [r0, #0x1e]
strb r1, [r0, #0x1d]
ldrh r1, [r0, #0x22]
@@ -20104,12 +20104,12 @@ FUN_021EA588: ; 0x021EA588
_021EA5C4:
mov r0, r5
mov r2, r4
- bl FUN_021E8C08
+ bl MOD04_021E8C08
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EA5D8
-FUN_021EA5D8: ; 0x021EA5D8
+ arm_func_start MOD04_021EA5D8
+MOD04_021EA5D8: ; 0x021EA5D8
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
ldr r3, _021EA6D0 ; =0x02210E3C
@@ -20119,7 +20119,7 @@ FUN_021EA5D8: ; 0x021EA5D8
mla r4, r7, r3, r4
mov r6, r1
mov r5, r2
- bl FUN_021EA974
+ bl MOD04_021EA974
cmp r0, #2
bne _021EA644
ldr r3, [r4, #0x10]
@@ -20129,7 +20129,7 @@ FUN_021EA5D8: ; 0x021EA5D8
ble _021EA630
ldr r1, _021EA6D4 ; =0xFFFE82AC
mov r0, #6
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
_021EA630:
@@ -20179,8 +20179,8 @@ _021EA694:
_021EA6D0: .word 0x02210E3C
_021EA6D4: .word 0xFFFE82AC
- arm_func_start FUN_021EA6D8
-FUN_021EA6D8: ; 0x021EA6D8
+ arm_func_start MOD04_021EA6D8
+MOD04_021EA6D8: ; 0x021EA6D8
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
ldr r4, _021EA79C ; =0x02210E3C
@@ -20189,10 +20189,10 @@ FUN_021EA6D8: ; 0x021EA6D8
mov r7, r1
mla r5, r0, r3, r4
mov r6, r2
- bl FUN_021EA974
+ bl MOD04_021EA974
strb r0, [r5, #0x1e]
mov r0, r7
- bl FUN_021EAD6C
+ bl MOD04_021EAD6C
mov r4, r0
cmp r4, #4
addls pc, pc, r4, lsl #2
@@ -20238,13 +20238,13 @@ _021EA790:
.align 2, 0
_021EA79C: .word 0x02210E3C
- arm_func_start FUN_021EA7A0
-FUN_021EA7A0: ; 0x021EA7A0
+ arm_func_start MOD04_021EA7A0
+MOD04_021EA7A0: ; 0x021EA7A0
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r7, r1
mov r6, r2
- bl FUN_021DF748
+ bl MOD04_021DF748
ldr r1, _021EA854 ; =0x02210E3C
mov r4, r0
ldr r1, [r1]
@@ -20289,14 +20289,14 @@ _021EA818:
.align 2, 0
_021EA854: .word 0x02210E3C
- arm_func_start FUN_021EA858
-FUN_021EA858: ; 0x021EA858
+ arm_func_start MOD04_021EA858
+MOD04_021EA858: ; 0x021EA858
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r5, r2
- bl FUN_021DF748
+ bl MOD04_021DF748
mov r4, r0
- bl FUN_021EA974
+ bl MOD04_021EA974
cmp r0, #4
addls pc, pc, r0, lsl #2
b _021EA934
@@ -20308,7 +20308,7 @@ _021EA87C: ; jump table
b _021EA8F8 ; case 4
_021EA890:
mov r0, r6
- bl FUN_021EAD6C
+ bl MOD04_021EAD6C
cmp r0, #2
ldmloia sp!, {r4, r5, r6, pc}
cmp r0, #4
@@ -20316,25 +20316,25 @@ _021EA890:
mov r0, r4
mov r1, r6
mov r2, r5
- bl FUN_021EA6D8
+ bl MOD04_021EA6D8
ldmia sp!, {r4, r5, r6, pc}
_021EA8BC:
mov r0, r4
mov r1, r6
mov r2, r5
- bl FUN_021EA6D8
+ bl MOD04_021EA6D8
ldmia sp!, {r4, r5, r6, pc}
_021EA8D0:
mov r0, r4
mov r1, r6
mov r2, r5
- bl FUN_021EA5D8
+ bl MOD04_021EA5D8
ldmia sp!, {r4, r5, r6, pc}
_021EA8E4:
mov r0, r4
mov r1, r6
mov r2, r5
- bl FUN_021EA588
+ bl MOD04_021EA588
ldmia sp!, {r4, r5, r6, pc}
_021EA8F8:
mov r0, #0x30
@@ -20355,27 +20355,27 @@ _021EA8F8:
_021EA934:
ldr r1, _021EA948 ; =0xFFFE82B6
mov r0, #6
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021EA944: .word 0x02210E3C
_021EA948: .word 0xFFFE82B6
- arm_func_start FUN_021EA94C
-FUN_021EA94C: ; 0x021EA94C
+ arm_func_start MOD04_021EA94C
+MOD04_021EA94C: ; 0x021EA94C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r5, r2
mov r4, r3
- bl FUN_021DF760
+ bl MOD04_021DF760
mov r1, r6
mov r2, r5
mov r3, r4
- bl FUN_021FD498
+ bl MOD04_021FD498
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021EA974
-FUN_021EA974: ; 0x021EA974
+ arm_func_start MOD04_021EA974
+MOD04_021EA974: ; 0x021EA974
ldr r2, _021EA98C ; =0x02210E3C
mov r1, #0x30
ldr r2, [r2]
@@ -20385,8 +20385,8 @@ FUN_021EA974: ; 0x021EA974
.align 2, 0
_021EA98C: .word 0x02210E3C
- arm_func_start FUN_021EA990
-FUN_021EA990: ; 0x021EA990
+ arm_func_start MOD04_021EA990
+MOD04_021EA990: ; 0x021EA990
ldr r2, _021EA9A8 ; =0x02210E3C
mov r1, #0x30
ldr r2, [r2]
@@ -20396,8 +20396,8 @@ FUN_021EA990: ; 0x021EA990
.align 2, 0
_021EA9A8: .word 0x02210E3C
- arm_func_start FUN_021EA9AC
-FUN_021EA9AC: ; 0x021EA9AC
+ arm_func_start MOD04_021EA9AC
+MOD04_021EA9AC: ; 0x021EA9AC
ldr r2, _021EA9C0 ; =0x02210E3C
mov r1, #0x30
ldr r2, [r2]
@@ -20406,8 +20406,8 @@ FUN_021EA9AC: ; 0x021EA9AC
.align 2, 0
_021EA9C0: .word 0x02210E3C
- arm_func_start FUN_021EA9C4
-FUN_021EA9C4: ; 0x021EA9C4
+ arm_func_start MOD04_021EA9C4
+MOD04_021EA9C4: ; 0x021EA9C4
ldr r0, _021EA9D4 ; =0x02210E3C
mov r1, #0
str r1, [r0]
@@ -20415,8 +20415,8 @@ FUN_021EA9C4: ; 0x021EA9C4
.align 2, 0
_021EA9D4: .word 0x02210E3C
- arm_func_start FUN_021EA9D8
-FUN_021EA9D8: ; 0x021EA9D8
+ arm_func_start MOD04_021EA9D8
+MOD04_021EA9D8: ; 0x021EA9D8
ldr r2, _021EAA60 ; =0x02210E3C
ldr r3, [r2]
cmp r3, #0
@@ -20454,8 +20454,8 @@ FUN_021EA9D8: ; 0x021EA9D8
.align 2, 0
_021EAA60: .word 0x02210E3C
- arm_func_start FUN_021EAA64
-FUN_021EAA64: ; 0x021EAA64
+ arm_func_start MOD04_021EAA64
+MOD04_021EAA64: ; 0x021EAA64
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
ldr r0, _021EAC14 ; =0x02210E3C
@@ -20464,7 +20464,7 @@ FUN_021EAA64: ; 0x021EAA64
addeq sp, sp, #0xc
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
add r0, sp, #8
- bl FUN_021DF8F4
+ bl MOD04_021DF8F4
mov sb, r0
cmp sb, #0
mov r8, #0
@@ -20478,11 +20478,11 @@ _021EAAAC:
ldr r0, [sp, #8]
ldrb r7, [r0, r8]
mov r0, r7
- bl FUN_021DF8A8
+ bl MOD04_021DF8A8
cmp r0, #0
beq _021EAB44
mov r0, r7
- bl FUN_021EA9AC
+ bl MOD04_021EA9AC
ldr r1, [r4]
mov r6, r0
ldr r0, [r1, #0x608]
@@ -20514,15 +20514,15 @@ _021EAAAC:
str r5, [r6, #0x24]
str sl, [r6, #0x28]
_021EAB44:
- bl FUN_021DF95C
+ bl MOD04_021DF95C
cmp r7, r0
beq _021EAC00
mov r0, r7
- bl FUN_021EA990
+ bl MOD04_021EA990
cmp r0, #1
bne _021EAC00
mov r0, r7
- bl FUN_021EA9AC
+ bl MOD04_021EA9AC
mov r5, r0
ldr r0, [r4]
ldr r2, [r5, #0x14]
@@ -20533,7 +20533,7 @@ _021EAB44:
cmp r0, r6
movle r6, r0
mov r0, r7
- bl FUN_021EA55C
+ bl MOD04_021EA55C
cmp r0, r6
blt _021EAC00
ldr r3, [r5]
@@ -20542,7 +20542,7 @@ _021EAB44:
mov r2, r6
add r1, r3, r1
mov r3, fp
- bl FUN_021EA94C
+ bl MOD04_021EA94C
ldr r0, [r5, #0xc]
add r0, r0, r6
str r0, [r5, #0xc]
@@ -20571,8 +20571,8 @@ _021EAC00:
_021EAC14: .word 0x02210E3C
_021EAC18: .word 0x000082EA
- arm_func_start FUN_021EAC1C
-FUN_021EAC1C: ; 0x021EAC1C
+ arm_func_start MOD04_021EAC1C
+MOD04_021EAC1C: ; 0x021EAC1C
stmdb sp!, {r4, lr}
ldr r2, _021EAC58 ; =0x02210E3C
mov r4, r1
@@ -20580,7 +20580,7 @@ FUN_021EAC1C: ; 0x021EAC1C
ldr r1, [r1, #0x60c]
cmp r1, #0
ldmeqia sp!, {r4, pc}
- bl FUN_021DF748
+ bl MOD04_021DF748
ldr r2, _021EAC58 ; =0x02210E3C
mov r1, r0
ldr r2, [r2]
@@ -20591,8 +20591,8 @@ FUN_021EAC1C: ; 0x021EAC1C
.align 2, 0
_021EAC58: .word 0x02210E3C
- arm_func_start FUN_021EAC5C
-FUN_021EAC5C: ; 0x021EAC5C
+ arm_func_start MOD04_021EAC5C
+MOD04_021EAC5C: ; 0x021EAC5C
stmdb sp!, {lr}
sub sp, sp, #4
ldr ip, _021EACB0 ; =0x02210E3C
@@ -20608,18 +20608,18 @@ FUN_021EAC5C: ; 0x021EAC5C
ldmeqia sp!, {pc}
cmp r3, #0
beq _021EACA4
- bl FUN_021EA858
+ bl MOD04_021EA858
add sp, sp, #4
ldmfd sp!, {pc}
_021EACA4:
- bl FUN_021EA7A0
+ bl MOD04_021EA7A0
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
_021EACB0: .word 0x02210E3C
- arm_func_start FUN_021EACB4
-FUN_021EACB4: ; 0x021EACB4
+ arm_func_start MOD04_021EACB4
+MOD04_021EACB4: ; 0x021EACB4
stmdb sp!, {lr}
sub sp, sp, #4
ldr r3, _021EACEC ; =0x02210E3C
@@ -20639,8 +20639,8 @@ _021EACEC: .word 0x02210E3C
_021EACF0: .word 0x00000614
_021EACF4: .word 0x000005B9
- arm_func_start FUN_021EACF8
-FUN_021EACF8: ; 0x021EACF8
+ arm_func_start MOD04_021EACF8
+MOD04_021EACF8: ; 0x021EACF8
stmdb sp!, {r4, lr}
ldr r2, _021EAD40 ; =0x02210E3C
ldr r3, [r2]
@@ -20662,8 +20662,8 @@ FUN_021EACF8: ; 0x021EACF8
.align 2, 0
_021EAD40: .word 0x02210E3C
- arm_func_start FUN_021EAD44
-FUN_021EAD44: ; 0x021EAD44
+ arm_func_start MOD04_021EAD44
+MOD04_021EAD44: ; 0x021EAD44
cmp r0, #2
beq _021EAD5C
cmp r0, #3
@@ -20677,8 +20677,8 @@ _021EAD64:
mov r0, #8
bx lr
- arm_func_start FUN_021EAD6C
-FUN_021EAD6C: ; 0x021EAD6C
+ arm_func_start MOD04_021EAD6C
+MOD04_021EAD6C: ; 0x021EAD6C
stmdb sp!, {lr}
sub sp, sp, #0xc
add r1, sp, #0
@@ -20696,8 +20696,8 @@ FUN_021EAD6C: ; 0x021EAD6C
.align 2, 0
_021EADA4: .word 0x0220D4BC
- arm_func_start FUN_021EADA8
-FUN_021EADA8: ; 0x021EADA8
+ arm_func_start MOD04_021EADA8
+MOD04_021EADA8: ; 0x021EADA8
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
@@ -20712,8 +20712,8 @@ FUN_021EADA8: ; 0x021EADA8
.align 2, 0
_021EADD4: .word 0x0220D4BC
- arm_func_start FUN_021EADD8
-FUN_021EADD8: ; 0x021EADD8
+ arm_func_start MOD04_021EADD8
+MOD04_021EADD8: ; 0x021EADD8
ldr r1, _021EADF4 ; =0x02210E3C
ldr r1, [r1]
cmp r1, #0
@@ -20724,8 +20724,8 @@ FUN_021EADD8: ; 0x021EADD8
.align 2, 0
_021EADF4: .word 0x02210E3C
- arm_func_start FUN_021EADF8
-FUN_021EADF8: ; 0x021EADF8
+ arm_func_start MOD04_021EADF8
+MOD04_021EADF8: ; 0x021EADF8
ldr r1, _021EAE14 ; =0x02210E3C
ldr r1, [r1]
cmp r1, #0
@@ -20736,8 +20736,8 @@ FUN_021EADF8: ; 0x021EADF8
.align 2, 0
_021EAE14: .word 0x02210E3C
- arm_func_start FUN_021EAE18
-FUN_021EAE18: ; 0x021EAE18
+ arm_func_start MOD04_021EAE18
+MOD04_021EAE18: ; 0x021EAE18
ldr r1, _021EAE34 ; =0x02210E3C
ldr r1, [r1]
cmp r1, #0
@@ -20748,17 +20748,17 @@ FUN_021EAE18: ; 0x021EAE18
.align 2, 0
_021EAE34: .word 0x02210E3C
- arm_func_start FUN_021EAE38
-FUN_021EAE38: ; 0x021EAE38
+ arm_func_start MOD04_021EAE38
+MOD04_021EAE38: ; 0x021EAE38
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r7, r0
mov r6, r1
mov r5, r2
- bl FUN_021EA9AC
+ bl MOD04_021EA9AC
mov r4, r0
mov r0, r7
- bl FUN_021EA974
+ bl MOD04_021EA974
cmp r0, #2
addeq sp, sp, #4
moveq r0, #0
@@ -20773,18 +20773,18 @@ FUN_021EAE38: ; 0x021EAE38
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_021EAE90
-FUN_021EAE90: ; 0x021EAE90
+ arm_func_start MOD04_021EAE90
+MOD04_021EAE90: ; 0x021EAE90
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
mov r6, r1
mov r4, r2
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
movne r0, #0
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r5
- bl FUN_021DF8A8
+ bl MOD04_021DF8A8
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
@@ -20799,7 +20799,7 @@ FUN_021EAE90: ; 0x021EAE90
mov r1, r6
mov r2, r4
mov r3, #0
- bl FUN_021EA94C
+ bl MOD04_021EA94C
ldr r0, _021EAF1C ; =0x02210E3C
ldr r0, [r0]
ldr r2, [r0, #0x600]
@@ -20814,8 +20814,8 @@ _021EAF14:
.align 2, 0
_021EAF1C: .word 0x02210E3C
- arm_func_start FUN_021EAF20
-FUN_021EAF20: ; 0x021EAF20
+ arm_func_start MOD04_021EAF20
+MOD04_021EAF20: ; 0x021EAF20
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0xc
mov r7, r1
@@ -20823,11 +20823,11 @@ FUN_021EAF20: ; 0x021EAF20
mov r0, r7
mov r6, r2
mov r5, r3
- bl FUN_021EA9AC
+ bl MOD04_021EA9AC
mov r4, r0
mov r0, r7
mov r1, r8
- bl FUN_021EB06C
+ bl MOD04_021EB06C
cmp r0, #0
addeq sp, sp, #0xc
moveq r0, #0
@@ -20841,12 +20841,12 @@ FUN_021EAF20: ; 0x021EAF20
mov r1, r8
mov r2, r5
str r5, [r4, #0x14]
- bl FUN_021EADA8
+ bl MOD04_021EADA8
add r1, sp, #0
mov r0, r7
mov r2, #8
mov r3, #1
- bl FUN_021EA94C
+ bl MOD04_021EA94C
ldr r0, _021EB040 ; =0x02210E3C
ldr r0, [r0]
add r0, r0, #0x600
@@ -20854,7 +20854,7 @@ FUN_021EAF20: ; 0x021EAF20
mov r0, r7
cmp r5, sb
movle sb, r5
- bl FUN_021EA55C
+ bl MOD04_021EA55C
cmp sb, r0
addgt sp, sp, #0xc
movgt r0, #1
@@ -20863,7 +20863,7 @@ FUN_021EAF20: ; 0x021EAF20
mov r1, r6
mov r2, sb
mov r3, #1
- bl FUN_021EA94C
+ bl MOD04_021EA94C
ldr r0, [r4, #0xc]
add r0, r0, sb
str r0, [r4, #0xc]
@@ -20892,8 +20892,8 @@ _021EB034:
.align 2, 0
_021EB040: .word 0x02210E3C
- arm_func_start FUN_021EB044
-FUN_021EB044: ; 0x021EB044
+ arm_func_start MOD04_021EB044
+MOD04_021EB044: ; 0x021EB044
stmdb sp!, {lr}
sub sp, sp, #4
mov ip, r1
@@ -20901,28 +20901,28 @@ FUN_021EB044: ; 0x021EB044
mov r1, r0
mov r2, ip
mov r0, #1
- bl FUN_021EAF20
+ bl MOD04_021EAF20
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EB06C
-FUN_021EB06C: ; 0x021EB06C
+ arm_func_start MOD04_021EB06C
+MOD04_021EB06C: ; 0x021EB06C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r0
mov r5, r1
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
bne _021EB0B0
cmp r5, #1
bne _021EB0A0
mov r0, r4
- bl FUN_021DF8A8
+ bl MOD04_021DF8A8
cmp r0, #0
beq _021EB0B0
_021EB0A0:
mov r0, r4
- bl FUN_021DF5F0
+ bl MOD04_021DF5F0
cmp r0, #0
bne _021EB0BC
_021EB0B0:
@@ -20931,32 +20931,32 @@ _021EB0B0:
ldmia sp!, {r4, r5, pc}
_021EB0BC:
mov r0, r4
- bl FUN_021EA990
+ bl MOD04_021EA990
cmp r0, #1
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {r4, r5, pc}
mov r0, r4
- bl FUN_021EA55C
+ bl MOD04_021EA55C
mov r4, r0
mov r0, r5
- bl FUN_021EAD44
+ bl MOD04_021EAD44
cmp r4, r0
movge r0, #1
movlt r0, #0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EB0FC
-FUN_021EB0FC: ; 0x021EB0FC
- ldr ip, _021EB108 ; =FUN_021EB06C
+ arm_func_start MOD04_021EB0FC
+MOD04_021EB0FC: ; 0x021EB0FC
+ ldr ip, _021EB108 ; =MOD04_021EB06C
mov r1, #1
bx ip
.align 2, 0
-_021EB108: .word FUN_021EB06C
+_021EB108: .word MOD04_021EB06C
- arm_func_start FUN_021EB10C
-FUN_021EB10C: ; 0x021EB10C
+ arm_func_start MOD04_021EB10C
+MOD04_021EB10C: ; 0x021EB10C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
ldr r0, _021EB178 ; =0x02210E40
@@ -20973,12 +20973,12 @@ _021EB12C:
beq _021EB14C
mov r0, r5
mov r2, r4
- bl FUN_021DD904
+ bl MOD04_021DD904
_021EB14C:
mov r0, r5
mov r1, r6
mov r2, r4
- bl FUN_021DD904
+ bl MOD04_021DD904
cmp r7, #0
bne _021EB12C
_021EB164:
@@ -20990,8 +20990,8 @@ _021EB164:
.align 2, 0
_021EB178: .word 0x02210E40
- arm_func_start FUN_021EB17C
-FUN_021EB17C: ; 0x021EB17C
+ arm_func_start MOD04_021EB17C
+MOD04_021EB17C: ; 0x021EB17C
stmdb sp!, {r4, lr}
ldr r1, _021EB1FC ; =0x02210E40
ldr r1, [r1]
@@ -21002,7 +21002,7 @@ FUN_021EB17C: ; 0x021EB17C
mov r0, #4
mov r2, #0
ldr r4, [r1, #0x18]
- bl FUN_021DD904
+ bl MOD04_021DD904
ldr r0, _021EB1FC ; =0x02210E40
str r4, [r0]
ldmia sp!, {r4, pc}
@@ -21020,7 +21020,7 @@ _021EB1C0:
mov r2, #0
str r3, [r1, #0x18]
mov r1, ip
- bl FUN_021DD904
+ bl MOD04_021DD904
ldmia sp!, {r4, pc}
_021EB1EC:
ldr r2, [r2, #0x18]
@@ -21030,13 +21030,13 @@ _021EB1EC:
.align 2, 0
_021EB1FC: .word 0x02210E40
- arm_func_start FUN_021EB200
-FUN_021EB200: ; 0x021EB200
+ arm_func_start MOD04_021EB200
+MOD04_021EB200: ; 0x021EB200
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #4
mov r1, #0x1c
- bl FUN_021DD944
+ bl MOD04_021DD944
movs ip, r0
moveq r0, #0
ldmeqia sp!, {r4, pc}
@@ -21057,8 +21057,8 @@ FUN_021EB200: ; 0x021EB200
.align 2, 0
_021EB258: .word 0x02210E40
- arm_func_start FUN_021EB25C
-FUN_021EB25C: ; 0x021EB25C
+ arm_func_start MOD04_021EB25C
+MOD04_021EB25C: ; 0x021EB25C
stmdb sp!, {r4, lr}
movs r4, r0
mov r0, #7
@@ -21155,7 +21155,7 @@ _021EB388:
ldr r2, _021EB3B4 ; =0xFFFFFC72
add r1, r1, r2
_021EB390:
- bl FUN_021DD6B0
+ bl MOD04_021DD6B0
mov r0, r4
ldmia sp!, {r4, pc}
.align 2, 0
@@ -21167,14 +21167,14 @@ _021EB3AC: .word 0xFFFFFC9A
_021EB3B0: .word 0xFFFFFC86
_021EB3B4: .word 0xFFFFFC72
- arm_func_start FUN_021EB3B8
-FUN_021EB3B8: ; 0x021EB3B8
+ arm_func_start MOD04_021EB3B8
+MOD04_021EB3B8: ; 0x021EB3B8
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x14
mov r5, r0
mov r7, r1
mov r6, r2
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
addne sp, sp, #0x14
mvnne r0, #7
@@ -21186,11 +21186,11 @@ FUN_021EB3B8: ; 0x021EB3B8
str r7, [sp, #4]
str r2, [sp, #8]
str r1, [sp, #0xc]
- bl FUN_021EB200
+ bl MOD04_021EB200
movs r4, r0
bne _021EB430
mvn r0, #4
- bl FUN_021EB25C
+ bl MOD04_021EB25C
mov r0, #0
mov r1, r0
mov r3, r6
@@ -21200,31 +21200,31 @@ FUN_021EB3B8: ; 0x021EB3B8
mvn r0, #4
ldmia sp!, {r4, r5, r6, r7, pc}
_021EB430:
- ldr r2, _021EB47C ; =FUN_021EB480
+ ldr r2, _021EB47C ; =MOD04_021EB480
mov r0, r5
mov r3, r4
mov r1, #0
bl FUN_02213D80
movs r5, r0
bpl _021EB46C
- bl FUN_021EB25C
+ bl MOD04_021EB25C
mov r0, #0
mov r1, r0
mov r2, r5
mov r3, r6
blx r7
mov r0, r4
- bl FUN_021EB17C
+ bl MOD04_021EB17C
_021EB46C:
mov r0, r5
str r5, [r4, #0x14]
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
-_021EB47C: .word FUN_021EB480
+_021EB47C: .word MOD04_021EB480
- arm_func_start FUN_021EB480
-FUN_021EB480: ; 0x021EB480
+ arm_func_start MOD04_021EB480
+MOD04_021EB480: ; 0x021EB480
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
ldr r6, [sp, #0x18]
@@ -21243,7 +21243,7 @@ FUN_021EB480: ; 0x021EB480
b _021EB4DC
_021EB4C0:
mov r0, r7
- bl FUN_021EB25C
+ bl MOD04_021EB25C
mov r0, #0
ldr r3, [r6]
mov r1, r0
@@ -21261,21 +21261,21 @@ _021EB4EC:
beq _021EB508
mov r0, #4
mov r2, #0
- bl FUN_021DD904
+ bl MOD04_021DD904
_021EB508:
mov r0, r6
- bl FUN_021EB17C
+ bl MOD04_021EB17C
cmp r4, #0
movne r0, #1
moveq r0, #0
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_021EB524
-FUN_021EB524: ; 0x021EB524
+ arm_func_start MOD04_021EB524
+MOD04_021EB524: ; 0x021EB524
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021DD6D4
+ bl MOD04_021DD6D4
cmp r0, #0
addne sp, sp, #4
movne r0, #0
@@ -21298,7 +21298,7 @@ FUN_021EB524: ; 0x021EB524
subs r1, r1, #1
str r1, [r0]
bne _021EB58C
- bl FUN_021EB10C
+ bl MOD04_021EB10C
_021EB58C:
mov r0, #1
add sp, sp, #4
@@ -21306,8 +21306,8 @@ _021EB58C:
.align 2, 0
_021EB598: .word 0x02210E44
- arm_func_start FUN_021EB59C
-FUN_021EB59C: ; 0x021EB59C
+ arm_func_start MOD04_021EB59C
+MOD04_021EB59C: ; 0x021EB59C
stmdb sp!, {lr}
sub sp, sp, #4
bl FUN_02213E24
@@ -21321,8 +21321,8 @@ FUN_021EB59C: ; 0x021EB59C
.align 2, 0
_021EB5C4: .word 0x02210E44
- arm_func_start FUN_021EB5C8
-FUN_021EB5C8: ; 0x021EB5C8
+ arm_func_start MOD04_021EB5C8
+MOD04_021EB5C8: ; 0x021EB5C8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r1, _021EB660 ; =0x02210E48
ldr r0, _021EB664 ; =0x00000474
@@ -21368,20 +21368,20 @@ _021EB658:
_021EB660: .word 0x02210E48
_021EB664: .word 0x00000474
- arm_func_start FUN_021EB668
-FUN_021EB668: ; 0x021EB668
+ arm_func_start MOD04_021EB668
+MOD04_021EB668: ; 0x021EB668
stmdb sp!, {lr}
sub sp, sp, #4
ldr r1, _021EB6A0 ; =0x02210E54
mov r0, #8
ldr r1, [r1]
mov r2, #0xc
- bl FUN_021EB910
+ bl MOD04_021EB910
ldr r0, _021EB6A4 ; =0x02210E48
ldr r2, _021EB6A8 ; =0x00000D18
ldr r1, [r0]
mov r0, #0x10
- bl FUN_021EB910
+ bl MOD04_021EB910
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
@@ -21389,18 +21389,18 @@ _021EB6A0: .word 0x02210E54
_021EB6A4: .word 0x02210E48
_021EB6A8: .word 0x00000D18
- arm_func_start FUN_021EB6AC
-FUN_021EB6AC: ; 0x021EB6AC
+ arm_func_start MOD04_021EB6AC
+MOD04_021EB6AC: ; 0x021EB6AC
cmp r0, #2
subhi r0, r0, #3
andhi r0, r0, #0xff
bx lr
- arm_func_start FUN_021EB6BC
-FUN_021EB6BC: ; 0x021EB6BC
+ arm_func_start MOD04_021EB6BC
+MOD04_021EB6BC: ; 0x021EB6BC
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021EB6AC
+ bl MOD04_021EB6AC
ldr r1, _021EB6DC ; =0x02210E58
ldr r1, [r1]
strb r0, [r1, #0x17]
@@ -21409,8 +21409,8 @@ FUN_021EB6BC: ; 0x021EB6BC
.align 2, 0
_021EB6DC: .word 0x02210E58
- arm_func_start FUN_021EB6E0
-FUN_021EB6E0: ; 0x021EB6E0
+ arm_func_start MOD04_021EB6E0
+MOD04_021EB6E0: ; 0x021EB6E0
ldr r0, _021EB6F0 ; =0x02210E58
ldr r0, [r0]
ldr r0, [r0, #0xc]
@@ -21418,22 +21418,22 @@ FUN_021EB6E0: ; 0x021EB6E0
.align 2, 0
_021EB6F0: .word 0x02210E58
- arm_func_start FUN_021EB6F4
-FUN_021EB6F4: ; 0x021EB6F4
+ arm_func_start MOD04_021EB6F4
+MOD04_021EB6F4: ; 0x021EB6F4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
mov r0, #1
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r4, r0
str r5, [r4, #0xc]
- bl FUN_021EB720
+ bl MOD04_021EB720
strb r0, [r4, #0xa]
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EB720
-FUN_021EB720: ; 0x021EB720
+ arm_func_start MOD04_021EB720
+MOD04_021EB720: ; 0x021EB720
ldr r0, _021EB730 ; =0x02210E58
ldr r0, [r0]
ldrb r0, [r0, #9]
@@ -21441,15 +21441,15 @@ FUN_021EB720: ; 0x021EB720
.align 2, 0
_021EB730: .word 0x02210E58
- arm_func_start FUN_021EB734
-FUN_021EB734: ; 0x021EB734
+ arm_func_start MOD04_021EB734
+MOD04_021EB734: ; 0x021EB734
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, #1
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r5, r0
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r4, r0
strb r6, [r5, #9]
cmp r6, #0x10
@@ -21461,7 +21461,7 @@ FUN_021EB734: ; 0x021EB734
cmp r6, #7
ldmlsia sp!, {r4, r5, r6, pc}
ldrb r0, [r4, #0xd0d]
- bl FUN_021EB6AC
+ bl MOD04_021EB6AC
strb r0, [r5, #0x15]
ldrb r0, [r4, #0xd13]
add r0, r4, r0, lsl #2
@@ -21469,8 +21469,8 @@ FUN_021EB734: ; 0x021EB734
strb r0, [r5, #0x14]
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021EB798
-FUN_021EB798: ; 0x021EB798
+ arm_func_start MOD04_021EB798
+MOD04_021EB798: ; 0x021EB798
ands r1, r0, #1
ldrne r0, _021EB7EC ; =0x02210E58
ldrne r0, [r0]
@@ -21499,17 +21499,17 @@ _021EB7F4: .word 0x02210E50
_021EB7F8: .word 0x02210E54
_021EB7FC: .word 0x02210E48
- arm_func_start FUN_021EB800
-FUN_021EB800: ; 0x021EB800
+ arm_func_start MOD04_021EB800
+MOD04_021EB800: ; 0x021EB800
stmdb sp!, {r4, lr}
mov r0, #1
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r4, r0
ldrb r0, [r4, #8]
ands r0, r0, #0x10
beq _021EB844
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
ldrb r3, [r4, #8]
mov r1, r0
ldr r2, _021EB90C ; =0x00000D18
@@ -21523,7 +21523,7 @@ _021EB844:
ands r0, r0, #8
beq _021EB878
mov r0, #8
- bl FUN_021EB798
+ bl MOD04_021EB798
ldrb r2, [r4, #8]
mov r1, r0
mov r0, #8
@@ -21537,7 +21537,7 @@ _021EB878:
ands r0, r0, #4
beq _021EB8AC
mov r0, #4
- bl FUN_021EB798
+ bl MOD04_021EB798
ldrb r2, [r4, #8]
mov r1, r0
mov r0, #4
@@ -21551,7 +21551,7 @@ _021EB8AC:
ands r0, r0, #2
beq _021EB8E0
mov r0, #2
- bl FUN_021EB798
+ bl MOD04_021EB798
ldrb r2, [r4, #8]
mov r1, r0
mov r0, #2
@@ -21575,14 +21575,14 @@ _021EB8E0:
.align 2, 0
_021EB90C: .word 0x00000D18
- arm_func_start FUN_021EB910
-FUN_021EB910: ; 0x021EB910
+ arm_func_start MOD04_021EB910
+MOD04_021EB910: ; 0x021EB910
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, #1
mov r5, r1
mov r4, r2
- bl FUN_021EB798
+ bl MOD04_021EB798
ldrb r2, [r0, #8]
ands r1, r2, r6
ldmeqia sp!, {r4, r5, r6, pc}
@@ -21596,14 +21596,14 @@ FUN_021EB910: ; 0x021EB910
blx r3
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021EB958
-FUN_021EB958: ; 0x021EB958
+ arm_func_start MOD04_021EB958
+MOD04_021EB958: ; 0x021EB958
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
mov r0, #1
mov r4, r1
- bl FUN_021EB798
+ bl MOD04_021EB798
ldrb r1, [r0, #8]
ands r2, r1, r5
addne sp, sp, #4
@@ -21618,14 +21618,14 @@ FUN_021EB958: ; 0x021EB958
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EB9A4
-FUN_021EB9A4: ; 0x021EB9A4
+ arm_func_start MOD04_021EB9A4
+MOD04_021EB9A4: ; 0x021EB9A4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
mov r0, #0x10
mov r4, r1
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r1, r0
mov r0, r4
add r1, r1, r5, lsl #8
@@ -21634,11 +21634,11 @@ FUN_021EB9A4: ; 0x021EB9A4
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EB9D8
-FUN_021EB9D8: ; 0x021EB9D8
+ arm_func_start MOD04_021EB9D8
+MOD04_021EB9D8: ; 0x021EB9D8
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021EB720
+ bl MOD04_021EB720
strb r0, [sp]
ldrb r0, [sp]
cmp r0, #0
@@ -21646,27 +21646,27 @@ FUN_021EB9D8: ; 0x021EB9D8
cmp r0, #0x12
bne _021EBA0C
_021EB9FC:
- bl FUN_021EB800
+ bl MOD04_021EB800
add sp, sp, #4
mov r0, #1
ldmfd sp!, {pc}
_021EBA0C:
add r0, sp, #0
- bl FUN_021ECB38
+ bl MOD04_021ECB38
ldrb r0, [sp]
- bl FUN_021EB734
+ bl MOD04_021EB734
mov r0, #0
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EBA28
-FUN_021EBA28: ; 0x021EBA28
+ arm_func_start MOD04_021EBA28
+MOD04_021EBA28: ; 0x021EBA28
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, #1
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r5, r0
- bl FUN_021EB720
+ bl MOD04_021EB720
cmp r0, #0xa
blo _021EBAB0
cmp r0, #0x10
@@ -21692,7 +21692,7 @@ FUN_021EBA28: ; 0x021EBA28
bl DC_InvalidateRange
mov r0, r4
add r1, r6, #6
- bl FUN_021EE5F4
+ bl MOD04_021EE5F4
_021EBAA8:
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
@@ -21700,11 +21700,11 @@ _021EBAB0:
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021EBAB8
-FUN_021EBAB8: ; 0x021EBAB8
+ arm_func_start MOD04_021EBAB8
+MOD04_021EBAB8: ; 0x021EBAB8
stmdb sp!, {r4, lr}
mov r4, #0xff
- bl FUN_021EB720
+ bl MOD04_021EB720
cmp r0, #0xa
blo _021EBADC
cmp r0, #0x10
@@ -21717,11 +21717,11 @@ _021EBADC:
.align 2, 0
_021EBAE4: .word 0x02210E58
- arm_func_start FUN_021EBAE8
-FUN_021EBAE8: ; 0x021EBAE8
+ arm_func_start MOD04_021EBAE8
+MOD04_021EBAE8: ; 0x021EBAE8
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021EB720
+ bl MOD04_021EB720
cmp r0, #1
addls sp, sp, #4
movls r0, #0
@@ -21754,19 +21754,19 @@ FUN_021EBAE8: ; 0x021EBAE8
addeq sp, sp, #4
moveq r0, #4
ldmeqia sp!, {pc}
- bl FUN_021ECD54
+ bl MOD04_021ECD54
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EBB80
-FUN_021EBB80: ; 0x021EBB80
+ arm_func_start MOD04_021EBB80
+MOD04_021EBB80: ; 0x021EBB80
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
- bl FUN_021EB720
+ bl MOD04_021EB720
mov r5, r0
cmp r5, #1
bne _021EBBA4
- bl FUN_021EDB44
+ bl MOD04_021EDB44
mov r5, r0
b _021EBC18
_021EBBA4:
@@ -21774,43 +21774,43 @@ _021EBBA4:
bhs _021EBBCC
bl OS_DisableInterrupts
mov r4, r0
- bl FUN_021EDA70
+ bl MOD04_021EDA70
mov r5, r0
- bl FUN_021EB734
+ bl MOD04_021EB734
mov r0, r4
bl OS_RestoreInterrupts
b _021EBC18
_021EBBCC:
cmp r5, #9
bhs _021EBBE0
- bl FUN_021ECA08
+ bl MOD04_021ECA08
mov r5, r0
b _021EBC18
_021EBBE0:
cmp r5, #0xa
bhs _021EBBF4
- bl FUN_021ED218
+ bl MOD04_021ED218
mov r5, r0
b _021EBC18
_021EBBF4:
cmp r5, #0x10
bhs _021EBC08
- bl FUN_021EDFBC
+ bl MOD04_021EDFBC
mov r5, r0
b _021EBC18
_021EBC08:
cmp r5, #0x11
bne _021EBC18
- bl FUN_021ECDA8
+ bl MOD04_021ECDA8
mov r5, r0
_021EBC18:
mov r0, r5
- bl FUN_021EB734
+ bl MOD04_021EB734
cmp r5, #0x10
bne _021EBC40
- bl FUN_021EB5C8
+ bl MOD04_021EB5C8
mov r4, r0
- bl FUN_021EB668
+ bl MOD04_021EB668
add sp, sp, #4
mov r0, r4
ldmia sp!, {r4, r5, pc}
@@ -21819,13 +21819,13 @@ _021EBC40:
addne sp, sp, #4
movne r0, #0
ldmneia sp!, {r4, r5, pc}
- bl FUN_021EB668
+ bl MOD04_021EB668
mvn r0, #0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EBC60
-FUN_021EBC60: ; 0x021EBC60
+ arm_func_start MOD04_021EBC60
+MOD04_021EBC60: ; 0x021EBC60
stmdb sp!, {r4, lr}
mov r4, r0
ldr r2, [r4]
@@ -21850,22 +21850,22 @@ FUN_021EBC60: ; 0x021EBC60
strb r2, [r3, #0x16]
mov r0, #0x10
strb r2, [r3, #8]
- bl FUN_021EB958
+ bl MOD04_021EB958
ldr r2, _021EBE10 ; =0x02210E48
mov r1, #0x2300
str r0, [r2]
mov r0, #2
- bl FUN_021EB958
+ bl MOD04_021EB958
ldr r2, _021EBE14 ; =0x02210E4C
mov r1, #0x58
str r0, [r2]
mov r0, #4
- bl FUN_021EB958
+ bl MOD04_021EB958
ldr r2, _021EBE18 ; =0x02210E50
mov r1, #0xc
str r0, [r2]
mov r0, #8
- bl FUN_021EB958
+ bl MOD04_021EB958
ldr r2, _021EBE1C ; =0x02210E54
ldr r1, _021EBE10 ; =0x02210E48
str r0, [r2]
@@ -21928,7 +21928,7 @@ FUN_021EBC60: ; 0x021EBC60
cmp r0, #4
blt _021EBE00
_021EBDF4:
- bl FUN_021EB800
+ bl MOD04_021EB800
mov r0, #0
ldmia sp!, {r4, pc}
_021EBE00:
@@ -21942,8 +21942,8 @@ _021EBE14: .word 0x02210E4C
_021EBE18: .word 0x02210E50
_021EBE1C: .word 0x02210E54
- arm_func_start FUN_021EBE20
-FUN_021EBE20: ; 0x021EBE20
+ arm_func_start MOD04_021EBE20
+MOD04_021EBE20: ; 0x021EBE20
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xcc
ldr r2, _021EBF1C ; =0x00000444
@@ -22012,8 +22012,8 @@ _021EBEF0:
.align 2, 0
_021EBF1C: .word 0x00000444
- arm_func_start FUN_021EBF20
-FUN_021EBF20: ; 0x021EBF20
+ arm_func_start MOD04_021EBF20
+MOD04_021EBF20: ; 0x021EBF20
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldrh r4, [r1, #2]
@@ -22049,8 +22049,8 @@ _021EBF84:
.align 2, 0
_021EBF9C: .word 0x00000444
- arm_func_start FUN_021EBFA0
-FUN_021EBFA0: ; 0x021EBFA0
+ arm_func_start MOD04_021EBFA0
+MOD04_021EBFA0: ; 0x021EBFA0
stmdb sp!, {lr}
sub sp, sp, #4
ldr lr, _021EC004 ; =0x0000046C
@@ -22079,8 +22079,8 @@ FUN_021EBFA0: ; 0x021EBFA0
.align 2, 0
_021EC004: .word 0x0000046C
- arm_func_start FUN_021EC008
-FUN_021EC008: ; 0x021EC008
+ arm_func_start MOD04_021EC008
+MOD04_021EC008: ; 0x021EC008
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r6, r3
ldrb r3, [r6, #0xd12]
@@ -22127,7 +22127,7 @@ _021EC0A0:
bne _021EC0D0
mov r3, r6
and r0, r0, #0xff
- bl FUN_021EBFA0
+ bl MOD04_021EBFA0
ldrb r0, [r6, #0xd12]
mov r4, #0xa
cmp r0, #0xa
@@ -22137,22 +22137,22 @@ _021EC0A0:
_021EC0D0:
mov r0, r4
mov r3, r6
- bl FUN_021EBF20
+ bl MOD04_021EBF20
_021EC0DC:
mov r0, r4
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_021EC0E4: .word 0x00000474
- arm_func_start FUN_021EC0E8
-FUN_021EC0E8: ; 0x021EC0E8
+ arm_func_start MOD04_021EC0E8
+MOD04_021EC0E8: ; 0x021EC0E8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov r4, r0
ldrh r2, [r4, #0xa]
mov sl, r1
cmp r2, #0x20
bne _021EC10C
- bl FUN_021EC210
+ bl MOD04_021EC210
cmp r0, #0
ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021EC10C:
@@ -22190,8 +22190,8 @@ _021EC174:
.align 2, 0
_021EC17C: .word 0x0000047C
- arm_func_start FUN_021EC180
-FUN_021EC180: ; 0x021EC180
+ arm_func_start MOD04_021EC180
+MOD04_021EC180: ; 0x021EC180
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
mov r6, r0
@@ -22200,7 +22200,7 @@ FUN_021EC180: ; 0x021EC180
mov r4, r2
cmp r3, #0x20
bne _021EC1B0
- bl FUN_021EC210
+ bl MOD04_021EC210
cmp r0, #0
addgt sp, sp, #4
ldmgtia sp!, {r4, r5, r6, r7, r8, sb, pc}
@@ -22233,13 +22233,13 @@ _021EC204:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- arm_func_start FUN_021EC210
-FUN_021EC210: ; 0x021EC210
+ arm_func_start MOD04_021EC210
+MOD04_021EC210: ; 0x021EC210
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r4, r0
ldrb r0, [r4, #0xd0c]
mov r0, r0, lsl #0x1c
@@ -22255,7 +22255,7 @@ _021EC240:
cmp r0, #1
bne _021EC270
add r0, r5, #0xc
- bl FUN_021EE5C8
+ bl MOD04_021EE5C8
cmp r0, #1
addeq sp, sp, #4
moveq r0, #6
@@ -22275,7 +22275,7 @@ _021EC288:
cmp r0, #1
bne _021EC2B8
add r0, r5, #0xc
- bl FUN_021EE668
+ bl MOD04_021EE668
cmp r0, #1
addeq sp, sp, #4
moveq r0, #7
@@ -22285,20 +22285,20 @@ _021EC2B8:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EC2C4
-FUN_021EC2C4: ; 0x021EC2C4
+ arm_func_start MOD04_021EC2C4
+MOD04_021EC2C4: ; 0x021EC2C4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r7, r0
mov r0, #0x10
mvn r6, #0
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r4, r0
mov r0, #1
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r1, #1
strb r1, [r0, #0xb]
- bl FUN_021EB720
+ bl MOD04_021EB720
cmp r0, #3
beq _021EC314
cmp r0, #4
@@ -22317,7 +22317,7 @@ _021EC314:
bne _021EC33C
_021EC330:
ldrh r0, [r7, #0x36]
- bl FUN_021EDA3C
+ bl MOD04_021EDA3C
b _021EC418
_021EC33C:
cmp r1, #1
@@ -22326,18 +22326,18 @@ _021EC33C:
bne _021EC36C
_021EC34C:
ldrh r0, [r7, #0x36]
- bl FUN_021EDA3C
+ bl MOD04_021EDA3C
ldrb r1, [r4, #0xd10]
mov r0, r7
add r2, r4, #0x300
- bl FUN_021EC180
+ bl MOD04_021EC180
mov r6, r0
b _021EC418
_021EC36C:
ldrb r1, [r4, #0xd10]
mov r0, r7
add r2, r4, #0x300
- bl FUN_021EC180
+ bl MOD04_021EC180
mov r6, r0
b _021EC418
_021EC384:
@@ -22350,7 +22350,7 @@ _021EC384:
mov r1, r4
sub r2, r2, #1
and r5, r2, #0xff
- bl FUN_021EC0E8
+ bl MOD04_021EC0E8
movs r6, r0
bmi _021EC418
ldr r0, _021EC448 ; =0x00000447
@@ -22368,7 +22368,7 @@ _021EC3D0:
mov r0, r7
mov r1, #1
ldrb r5, [r4, #0xd11]
- bl FUN_021EC180
+ bl MOD04_021EC180
movs r6, r0
bmi _021EC418
ldrb r1, [r4, #0xd0f]
@@ -22387,20 +22387,20 @@ _021EC418:
mov r1, r7
mov r2, r5
mov r3, r4
- bl FUN_021EC008
+ bl MOD04_021EC008
mov r1, r4
- bl FUN_021EBE20
+ bl MOD04_021EBE20
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_021EC448: .word 0x00000447
- arm_func_start FUN_021EC44C
-FUN_021EC44C: ; 0x021EC44C
+ arm_func_start MOD04_021EC44C
+MOD04_021EC44C: ; 0x021EC44C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
ldrsh r1, [r4]
cmp r1, #5
bne _021EC4C4
@@ -22435,11 +22435,11 @@ _021EC4C4:
cmp r1, #7
ldmneia sp!, {r4, pc}
ldr r0, [r4, #4]
- bl FUN_021EC2C4
+ bl MOD04_021EC2C4
ldmia sp!, {r4, pc}
- arm_func_start FUN_021EC4D8
-FUN_021EC4D8: ; 0x021EC4D8
+ arm_func_start MOD04_021EC4D8
+MOD04_021EC4D8: ; 0x021EC4D8
stmdb sp!, {r4, lr}
mov r4, r2
cmp r1, #9
@@ -22493,7 +22493,7 @@ _021EC56C:
mov r0, #0xc0
mla r0, r2, r0, r1
add r1, r4, #2
- bl FUN_021EE5B8
+ bl MOD04_021EE5B8
b _021EC5B8
_021EC594:
mov r1, #2
@@ -22504,7 +22504,7 @@ _021EC594:
mov r0, #0xc0
mla r0, r2, r0, r1
add r1, r4, #2
- bl FUN_021EE640
+ bl MOD04_021EE640
_021EC5B8:
ldrb r0, [r4]
cmp r0, #0
@@ -22514,8 +22514,8 @@ _021EC5B8:
.align 2, 0
_021EC5CC: .word 0x0000047C
- arm_func_start FUN_021EC5D0
-FUN_021EC5D0: ; 0x021EC5D0
+ arm_func_start MOD04_021EC5D0
+MOD04_021EC5D0: ; 0x021EC5D0
ldrb r0, [r0, #0xd0b]
mov r0, r0, lsl #0x1c
mov r0, r0, lsr #0x1e
@@ -22524,8 +22524,8 @@ FUN_021EC5D0: ; 0x021EC5D0
movne r0, #0x80000
bx lr
- arm_func_start FUN_021EC5EC
-FUN_021EC5EC: ; 0x021EC5EC
+ arm_func_start MOD04_021EC5EC
+MOD04_021EC5EC: ; 0x021EC5EC
ldrb r0, [r0, #0xd0b]
mov r0, r0, lsl #0x1e
mov r0, r0, lsr #0x1e
@@ -22534,8 +22534,8 @@ FUN_021EC5EC: ; 0x021EC5EC
movne r0, #0x20000
bx lr
- arm_func_start FUN_021EC608
-FUN_021EC608: ; 0x021EC608
+ arm_func_start MOD04_021EC608
+MOD04_021EC608: ; 0x021EC608
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
mov sl, r0
@@ -22554,7 +22554,7 @@ FUN_021EC608: ; 0x021EC608
cmp r0, #0x20
bne _021EC66C
mov r0, sb
- bl FUN_021EC210
+ bl MOD04_021EC210
cmp r0, #0
str r0, [sp]
movle r0, #0
@@ -22565,7 +22565,7 @@ _021EC66C:
cmp r0, #8
bne _021EC690
mov r0, sb
- bl FUN_021ED12C
+ bl MOD04_021ED12C
cmp r0, #0
str r0, [sp]
moveq r0, #0
@@ -22654,8 +22654,8 @@ _021EC79C:
.align 2, 0
_021EC7AC: .word 0x00000D0C
- arm_func_start FUN_021EC7B0
-FUN_021EC7B0: ; 0x021EC7B0
+ arm_func_start MOD04_021EC7B0
+MOD04_021EC7B0: ; 0x021EC7B0
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
bl FUN_020A71F8
@@ -22666,7 +22666,7 @@ FUN_021EC7B0: ; 0x021EC7B0
cmp r0, #3
bne _021EC8BC
mov r0, r6
- bl FUN_021EC5EC
+ bl MOD04_021EC5EC
ldrb r1, [r6, #0xd15]
mov r4, r0
add r0, r1, #1
@@ -22719,7 +22719,7 @@ _021EC888:
streqb r0, [r6, #0xd0b]
_021EC898:
mov r0, r6
- bl FUN_021EC5D0
+ bl MOD04_021EC5D0
mov r2, r0
ldr r1, _021EC8E8 ; =0x00000CB8
mov r0, r5
@@ -22743,8 +22743,8 @@ _021EC8E0:
.align 2, 0
_021EC8E8: .word 0x00000CB8
- arm_func_start FUN_021EC8EC
-FUN_021EC8EC: ; 0x021EC8EC
+ arm_func_start MOD04_021EC8EC
+MOD04_021EC8EC: ; 0x021EC8EC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -22752,7 +22752,7 @@ FUN_021EC8EC: ; 0x021EC8EC
add r3, r5, #0x470
mov r1, #0xc0
mla r4, r2, r1, r3
- bl FUN_021EC608
+ bl MOD04_021EC608
ldr r1, _021ECA04 ; =0x00000CB8
strb r0, [r5, #0xd0d]
add r0, r5, r1
@@ -22763,7 +22763,7 @@ FUN_021EC8EC: ; 0x021EC8EC
ldrb r1, [r5, #0xd0d]
mov r0, r5
add r2, r5, r2
- bl FUN_021EC4D8
+ bl MOD04_021EC4D8
cmp r0, #0
beq _021EC9B0
ldrb r0, [r5, #0xd0b]
@@ -22821,31 +22821,31 @@ _021EC9EC:
.align 2, 0
_021ECA04: .word 0x00000CB8
- arm_func_start FUN_021ECA08
-FUN_021ECA08: ; 0x021ECA08
+ arm_func_start MOD04_021ECA08
+MOD04_021ECA08: ; 0x021ECA08
stmdb sp!, {r4, lr}
- bl FUN_021EB720
+ bl MOD04_021EB720
mov r4, r0
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
cmp r4, #7
beq _021ECA30
cmp r4, #8
beq _021ECA3C
b _021ECA44
_021ECA30:
- bl FUN_021EC8EC
+ bl MOD04_021EC8EC
mov r4, r0
b _021ECA44
_021ECA3C:
- bl FUN_021EC7B0
+ bl MOD04_021EC7B0
mov r4, r0
_021ECA44:
mov r0, r4
ldmia sp!, {r4, pc}
- arm_func_start FUN_021ECA4C
-FUN_021ECA4C: ; 0x021ECA4C
+ arm_func_start MOD04_021ECA4C
+MOD04_021ECA4C: ; 0x021ECA4C
stmdb sp!, {lr}
sub sp, sp, #4
bl FUN_02099A94
@@ -22868,8 +22868,8 @@ _021ECA8C:
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021ECA98
-FUN_021ECA98: ; 0x021ECA98
+ arm_func_start MOD04_021ECA98
+MOD04_021ECA98: ; 0x021ECA98
stmdb sp!, {lr}
sub sp, sp, #4
bl FUN_020A71F8
@@ -22911,7 +22911,7 @@ _021ECB10:
b _021ECB2C
_021ECB18:
mov r0, #0
- bl FUN_021EB6F4
+ bl MOD04_021EB6F4
add sp, sp, #4
mvn r0, #0
ldmfd sp!, {pc}
@@ -22920,14 +22920,14 @@ _021ECB2C:
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021ECB38
-FUN_021ECB38: ; 0x021ECB38
+ arm_func_start MOD04_021ECB38
+MOD04_021ECB38: ; 0x021ECB38
stmdb sp!, {r4, lr}
mov r4, r0
ldrb r0, [r4]
cmp r0, #0xa
bhi _021ECB80
- bl FUN_021ECA98
+ bl MOD04_021ECA98
cmp r0, #1
moveq r0, #0
streqb r0, [r4]
@@ -22943,15 +22943,15 @@ FUN_021ECB38: ; 0x021ECB38
_021ECB80:
cmp r0, #0xe
bne _021ECB9C
- bl FUN_021DC7F0
- bl FUN_021DC870
+ bl MOD04_021DC7F0
+ bl MOD04_021DC870
mov r0, #0xc
strb r0, [r4]
b _021ECBB4
_021ECB9C:
cmp r0, #0x12
bhs _021ECBB4
- bl FUN_021ECA4C
+ bl MOD04_021ECA4C
cmp r0, #1
moveq r0, #0xa
streqb r0, [r4]
@@ -22959,8 +22959,8 @@ _021ECBB4:
mov r0, #0
ldmia sp!, {r4, pc}
- arm_func_start FUN_021ECBBC
-FUN_021ECBBC: ; 0x021ECBBC
+ arm_func_start MOD04_021ECBBC
+MOD04_021ECBBC: ; 0x021ECBBC
ldrb r1, [r0, #0x16]
cmp r1, #0xa
bhs _021ECC04
@@ -23041,8 +23041,8 @@ _021ECCE0: .word 0xFFFF30F8
_021ECCE4: .word 0xFFFF3094
_021ECCE8: .word 0xFFFF3030
- arm_func_start FUN_021ECCEC
-FUN_021ECCEC: ; 0x021ECCEC
+ arm_func_start MOD04_021ECCEC
+MOD04_021ECCEC: ; 0x021ECCEC
ldrb r0, [r0, #0xb]
cmp r0, #0
ldreq r0, _021ECD00 ; =0xFFFF3C4D
@@ -23052,13 +23052,13 @@ FUN_021ECCEC: ; 0x021ECCEC
_021ECD00: .word 0xFFFF3C4D
_021ECD04: .word 0xFFFF3865
- arm_func_start FUN_021ECD08
-FUN_021ECD08: ; 0x021ECD08
+ arm_func_start MOD04_021ECD08
+MOD04_021ECD08: ; 0x021ECD08
mvn r0, #5
bx lr
- arm_func_start FUN_021ECD10
-FUN_021ECD10: ; 0x021ECD10
+ arm_func_start MOD04_021ECD10
+MOD04_021ECD10: ; 0x021ECD10
cmp r0, #3
addls pc, pc, r0, lsl #2
b _021ECD4C
@@ -23083,49 +23083,49 @@ _021ECD4C:
mov r0, #0
bx lr
- arm_func_start FUN_021ECD54
-FUN_021ECD54: ; 0x021ECD54
+ arm_func_start MOD04_021ECD54
+MOD04_021ECD54: ; 0x021ECD54
stmdb sp!, {r4, lr}
mov r0, #1
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r4, r0
- bl FUN_021EB6E0
+ bl MOD04_021EB6E0
cmp r0, #4
bge _021ECD78
- bl FUN_021ECD10
+ bl MOD04_021ECD10
ldmia sp!, {r4, pc}
_021ECD78:
cmp r0, #5
bge _021ECD88
- bl FUN_021ECD08
+ bl MOD04_021ECD08
ldmia sp!, {r4, pc}
_021ECD88:
cmp r0, #5
bne _021ECD9C
mov r0, r4
- bl FUN_021ECCEC
+ bl MOD04_021ECCEC
ldmia sp!, {r4, pc}
_021ECD9C:
mov r0, r4
- bl FUN_021ECBBC
+ bl MOD04_021ECBBC
ldmia sp!, {r4, pc}
- arm_func_start FUN_021ECDA8
-FUN_021ECDA8: ; 0x021ECDA8
+ arm_func_start MOD04_021ECDA8
+MOD04_021ECDA8: ; 0x021ECDA8
stmdb sp!, {lr}
sub sp, sp, #4
mov r0, #1
- bl FUN_021EB798
+ bl MOD04_021EB798
add r0, r0, #0xa
- bl FUN_021ECB38
+ bl MOD04_021ECB38
cmp r0, #1
moveq r0, #0x12
movne r0, #0x11
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021ECDD4
-FUN_021ECDD4: ; 0x021ECDD4
+ arm_func_start MOD04_021ECDD4
+MOD04_021ECDD4: ; 0x021ECDD4
ldrb r2, [r0, #0xd12]
mov r3, #0
mov ip, r3
@@ -23146,8 +23146,8 @@ _021ECE10:
mov r0, r3
bx lr
- arm_func_start FUN_021ECE18
-FUN_021ECE18: ; 0x021ECE18
+ arm_func_start MOD04_021ECE18
+MOD04_021ECE18: ; 0x021ECE18
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldrb r1, [r0, #0xd12]
@@ -23192,8 +23192,8 @@ _021ECEA0:
.align 2, 0
_021ECEAC: .word 0x00000447
- arm_func_start FUN_021ECEB0
-FUN_021ECEB0: ; 0x021ECEB0
+ arm_func_start MOD04_021ECEB0
+MOD04_021ECEB0: ; 0x021ECEB0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov r5, #0
mov r4, r0
@@ -23272,12 +23272,12 @@ _021ECFB0:
mov r0, r5
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- arm_func_start FUN_021ECFC8
-FUN_021ECFC8: ; 0x021ECFC8
+ arm_func_start MOD04_021ECFC8
+MOD04_021ECFC8: ; 0x021ECFC8
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
add r4, r6, #0x300
- bl FUN_021ECEB0
+ bl MOD04_021ECEB0
ldrb r1, [r6, #0xd0c]
mov r5, r0
mov r0, #0x24
@@ -23344,13 +23344,13 @@ _021ED0B4: .word 0x0220D4C0
_021ED0B8: .word 0x0220BADC
_021ED0BC: .word 0x0220BAEC
- arm_func_start FUN_021ED0C0
-FUN_021ED0C0: ; 0x021ED0C0
+ arm_func_start MOD04_021ED0C0
+MOD04_021ED0C0: ; 0x021ED0C0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
add r4, r5, #0x300
- bl FUN_021ECEB0
+ bl MOD04_021ECEB0
ldrb r1, [r5, #0xd0c]
mov r5, r0
mov r0, #0x24
@@ -23377,12 +23377,12 @@ _021ED11C:
.align 2, 0
_021ED128: .word 0x0220BAE4
- arm_func_start FUN_021ED12C
-FUN_021ED12C: ; 0x021ED12C
+ arm_func_start MOD04_021ED12C
+MOD04_021ED12C: ; 0x021ED12C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
ldrb r0, [r0, #0xd0c]
mov r0, r0, lsl #0x1c
movs r0, r0, lsr #0x1c
@@ -23403,13 +23403,13 @@ _021ED170:
.align 2, 0
_021ED178: .word 0x0220BAE4
- arm_func_start FUN_021ED17C
-FUN_021ED17C: ; 0x021ED17C
+ arm_func_start MOD04_021ED17C
+MOD04_021ED17C: ; 0x021ED17C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r4, r0
cmp r5, #0
beq _021ED1B0
@@ -23424,14 +23424,14 @@ _021ED1B0:
mov r2, #0x144
bl MIi_CpuClear32
mov r0, r4
- bl FUN_021ED0C0
+ bl MOD04_021ED0C0
strb r0, [r4, #0xd10]
b _021ED20C
_021ED1D0:
- bl FUN_021ECE18
+ bl MOD04_021ECE18
strb r0, [r4, #0xd10]
mov r0, r4
- bl FUN_021ECDD4
+ bl MOD04_021ECDD4
strb r0, [r4, #0xd0f]
b _021ED20C
_021ED1E8:
@@ -23442,19 +23442,19 @@ _021ED1E8:
mov r1, #0
mov r0, r4
strb r1, [r4, #0xd0f]
- bl FUN_021ECFC8
+ bl MOD04_021ECFC8
strb r0, [r4, #0xd10]
_021ED20C:
ldrb r0, [r4, #0xd10]
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021ED218
-FUN_021ED218: ; 0x021ED218
+ arm_func_start MOD04_021ED218
+MOD04_021ED218: ; 0x021ED218
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r4, r0
mov r5, #9
bl FUN_020A71F8
@@ -23494,7 +23494,7 @@ _021ED2A4:
cmp r5, #5
bhi _021ED2F0
mov r0, r5
- bl FUN_021ED8D4
+ bl MOD04_021ED8D4
b _021ED2F0
_021ED2C0:
bl FUN_020A7820
@@ -23505,20 +23505,20 @@ _021ED2C8:
_021ED2D0:
bl FUN_020A722C
mov r0, #4
- bl FUN_021EB6F4
+ bl MOD04_021EB6F4
mov r5, #0x11
b _021ED2F0
_021ED2E4:
mov r0, #0
- bl FUN_021EB6F4
+ bl MOD04_021EB6F4
mov r5, #0x11
_021ED2F0:
mov r0, r5
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021ED2FC
-FUN_021ED2FC: ; 0x021ED2FC
+ arm_func_start MOD04_021ED2FC
+MOD04_021ED2FC: ; 0x021ED2FC
stmdb sp!, {lr}
sub sp, sp, #4
ldr ip, _021ED324 ; =0x0220BAF8
@@ -23532,8 +23532,8 @@ FUN_021ED2FC: ; 0x021ED2FC
.align 2, 0
_021ED324: .word 0x0220BAF8
- arm_func_start FUN_021ED328
-FUN_021ED328: ; 0x021ED328
+ arm_func_start MOD04_021ED328
+MOD04_021ED328: ; 0x021ED328
stmdb sp!, {r4, lr}
mov r4, r0
add r0, r4, #0xd00
@@ -23541,11 +23541,11 @@ FUN_021ED328: ; 0x021ED328
cmp r0, #0
beq _021ED364
mov r0, #2
- bl FUN_021ED17C
+ bl MOD04_021ED17C
cmp r0, #0
beq _021ED364
mov r0, #0
- bl FUN_021ED9D0
+ bl MOD04_021ED9D0
strb r0, [r4, #0xd11]
mov r0, #5
ldmia sp!, {r4, pc}
@@ -23557,11 +23557,11 @@ _021ED364:
movhs r0, #6
ldmhsia sp!, {r4, pc}
mov r0, r4
- bl FUN_021ED798
+ bl MOD04_021ED798
ldmia sp!, {r4, pc}
- arm_func_start FUN_021ED388
-FUN_021ED388: ; 0x021ED388
+ arm_func_start MOD04_021ED388
+MOD04_021ED388: ; 0x021ED388
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r1
@@ -23591,11 +23591,11 @@ _021ED3D8:
cmp r2, #0
bne _021ED3FC
mov r0, #5
- bl FUN_021EB6F4
+ bl MOD04_021EB6F4
b _021ED404
_021ED3FC:
mov r0, #6
- bl FUN_021EB6F4
+ bl MOD04_021EB6F4
_021ED404:
add sp, sp, #4
mov r0, #0x11
@@ -23625,8 +23625,8 @@ _021ED448:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021ED468
-FUN_021ED468: ; 0x021ED468
+ arm_func_start MOD04_021ED468
+MOD04_021ED468: ; 0x021ED468
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r1
@@ -23648,12 +23648,12 @@ _021ED494:
beq _021ED4D4
_021ED4B0:
mov r0, #1
- bl FUN_021ED17C
+ bl MOD04_021ED17C
cmp r0, #0
movne r4, #4
bne _021ED524
mov r0, r5
- bl FUN_021ED328
+ bl MOD04_021ED328
mov r4, r0
b _021ED524
_021ED4D4:
@@ -23663,11 +23663,11 @@ _021ED4D4:
cmp r1, #1
movhs r4, #6
bhs _021ED524
- bl FUN_021ED798
+ bl MOD04_021ED798
mov r4, r0
b _021ED524
_021ED4F8:
- bl FUN_021ED328
+ bl MOD04_021ED328
mov r4, r0
b _021ED524
_021ED504:
@@ -23677,17 +23677,17 @@ _021ED504:
cmp r1, #1
movhs r4, #6
bhs _021ED524
- bl FUN_021ED798
+ bl MOD04_021ED798
mov r4, r0
_021ED524:
mov r0, r4
- bl FUN_021ED8D4
+ bl MOD04_021ED8D4
mov r0, r4
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021ED538
-FUN_021ED538: ; 0x021ED538
+ arm_func_start MOD04_021ED538
+MOD04_021ED538: ; 0x021ED538
stmdb sp!, {r4, lr}
mov r4, r0
bl OS_GetTick
@@ -23733,7 +23733,7 @@ _021ED598:
strb r1, [r4, #0xd15]
strb r0, [r4, #0xd0f]
ldrb r0, [r4, #0xd15]
- bl FUN_021ED9D0
+ bl MOD04_021ED9D0
strb r0, [r4, #0xd11]
_021ED5F0:
add r0, r4, #0xd00
@@ -23744,7 +23744,7 @@ _021ED5F0:
mov r0, r4
mov r1, #5
strb r2, [r4, #0xd15]
- bl FUN_021ED468
+ bl MOD04_021ED468
ldmia sp!, {r4, pc}
_021ED618:
bl OS_GetTick
@@ -23758,7 +23758,7 @@ _021ED618:
ldrsb r2, [r2, #0x11]
ldr r0, _021ED654 ; =0x020FF590
mov r3, #0x300000
- bl FUN_021ED2FC
+ bl MOD04_021ED2FC
_021ED648:
mov r0, #5
ldmia sp!, {r4, pc}
@@ -23766,8 +23766,8 @@ _021ED648:
_021ED650: .word 0x000082EA
_021ED654: .word 0x020FF590
- arm_func_start FUN_021ED658
-FUN_021ED658: ; 0x021ED658
+ arm_func_start MOD04_021ED658
+MOD04_021ED658: ; 0x021ED658
stmdb sp!, {r4, lr}
mov r4, r0
bl OS_GetTick
@@ -23824,7 +23824,7 @@ _021ED714:
mov r0, r4
mov r1, #4
strb r2, [r4, #0xd0f]
- bl FUN_021ED468
+ bl MOD04_021ED468
ldmia sp!, {r4, pc}
_021ED734:
bl OS_GetTick
@@ -23844,7 +23844,7 @@ _021ED734:
add r1, r1, ip
sub r2, r2, #1
mov r3, #0x300000
- bl FUN_021ED2FC
+ bl MOD04_021ED2FC
_021ED77C:
mov r0, #4
ldmia sp!, {r4, pc}
@@ -23855,8 +23855,8 @@ _021ED78C: .word 0x00000D0F
_021ED790: .word 0x00000474
_021ED794: .word 0x0000047C
- arm_func_start FUN_021ED798
-FUN_021ED798: ; 0x021ED798
+ arm_func_start MOD04_021ED798
+MOD04_021ED798: ; 0x021ED798
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0
@@ -23870,14 +23870,14 @@ FUN_021ED798: ; 0x021ED798
and r1, r1, #0xf
orr r1, r2, r1, lsl #4
strb r1, [r4, #0xd0b]
- bl FUN_021ED17C
+ bl MOD04_021ED17C
mov r0, #1
strb r0, [r4, #0xd11]
mov r0, #3
ldmia sp!, {r4, pc}
- arm_func_start FUN_021ED7E0
-FUN_021ED7E0: ; 0x021ED7E0
+ arm_func_start MOD04_021ED7E0
+MOD04_021ED7E0: ; 0x021ED7E0
stmdb sp!, {r4, lr}
mov r4, r0
bl OS_GetTick
@@ -23903,7 +23903,7 @@ FUN_021ED7E0: ; 0x021ED7E0
blt _021ED84C
mov r0, r4
mov r1, #3
- bl FUN_021ED468
+ bl MOD04_021ED468
ldmia sp!, {r4, pc}
_021ED84C:
bl OS_GetTick
@@ -23914,7 +23914,7 @@ _021ED84C:
ldr r0, _021ED87C ; =0x020FF590
ldr r1, _021ED880 ; =0x020FF598
mov r3, #0x200000
- bl FUN_021ED2FC
+ bl MOD04_021ED2FC
_021ED870:
mov r0, #3
ldmia sp!, {r4, pc}
@@ -23923,8 +23923,8 @@ _021ED878: .word 0x000082EA
_021ED87C: .word 0x020FF590
_021ED880: .word 0x020FF598
- arm_func_start FUN_021ED884
-FUN_021ED884: ; 0x021ED884
+ arm_func_start MOD04_021ED884
+MOD04_021ED884: ; 0x021ED884
stmdb sp!, {r4, lr}
mov r4, r0
bl OS_GetTick
@@ -23940,20 +23940,20 @@ FUN_021ED884: ; 0x021ED884
ldr r0, _021ED8CC ; =0x020FF590
ldr r1, _021ED8D0 ; =0x020FF598
mov r3, #0x200000
- bl FUN_021ED2FC
+ bl MOD04_021ED2FC
mov r0, #3
ldmia sp!, {r4, pc}
.align 2, 0
_021ED8CC: .word 0x020FF590
_021ED8D0: .word 0x020FF598
- arm_func_start FUN_021ED8D4
-FUN_021ED8D4: ; 0x021ED8D4
+ arm_func_start MOD04_021ED8D4
+MOD04_021ED8D4: ; 0x021ED8D4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r4, r0
cmp r5, #3
beq _021ED90C
@@ -23972,7 +23972,7 @@ _021ED90C:
ldr r0, _021ED9C0 ; =0x020FF590
ldr r1, _021ED9C4 ; =0x020FF598
mov r3, #0x200000
- bl FUN_021ED2FC
+ bl MOD04_021ED2FC
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
_021ED938:
@@ -23993,7 +23993,7 @@ _021ED938:
add r1, r1, ip
sub r2, r2, #1
mov r3, #0x300000
- bl FUN_021ED2FC
+ bl MOD04_021ED2FC
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
_021ED988:
@@ -24008,7 +24008,7 @@ _021ED988:
ldrsb r2, [r2, #0x11]
ldr r0, _021ED9C0 ; =0x020FF590
mov r3, #0x300000
- bl FUN_021ED2FC
+ bl MOD04_021ED2FC
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
@@ -24017,12 +24017,12 @@ _021ED9C4: .word 0x020FF598
_021ED9C8: .word 0x00000474
_021ED9CC: .word 0x0000047C
- arm_func_start FUN_021ED9D0
-FUN_021ED9D0: ; 0x021ED9D0
+ arm_func_start MOD04_021ED9D0
+MOD04_021ED9D0: ; 0x021ED9D0
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
add r0, r0, #0xd00
ldrh r2, [r0, #0x16]
cmp r2, #0
@@ -24049,12 +24049,12 @@ _021EDA24:
mvn r0, #0
ldmia sp!, {r4, pc}
- arm_func_start FUN_021EDA3C
-FUN_021EDA3C: ; 0x021EDA3C
+ arm_func_start MOD04_021EDA3C
+MOD04_021EDA3C: ; 0x021EDA3C
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
add r0, r0, #0xd00
cmp r4, #0xd
movhi r4, #0xd
@@ -24065,14 +24065,14 @@ FUN_021EDA3C: ; 0x021EDA3C
strh r1, [r0, #0x16]
ldmia sp!, {r4, pc}
- arm_func_start FUN_021EDA70
-FUN_021EDA70: ; 0x021EDA70
+ arm_func_start MOD04_021EDA70
+MOD04_021EDA70: ; 0x021EDA70
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r5, r0
- bl FUN_021EB720
+ bl MOD04_021EB720
mov r4, r0
bl FUN_020A71F8
cmp r4, #2
@@ -24080,7 +24080,7 @@ FUN_021EDA70: ; 0x021EDA70
cmp r0, #3
bne _021EDAB0
mov r0, r5
- bl FUN_021ED884
+ bl MOD04_021ED884
mov r4, r0
b _021EDB38
_021EDAB0:
@@ -24088,7 +24088,7 @@ _021EDAB0:
bne _021EDACC
mov r0, r5
mov r1, r4
- bl FUN_021ED388
+ bl MOD04_021ED388
mov r4, r0
b _021EDB38
_021EDACC:
@@ -24099,42 +24099,42 @@ _021EDACC:
_021EDADC:
mov r0, r5
mov r1, r4
- bl FUN_021ED388
+ bl MOD04_021ED388
mov r4, r0
cmp r4, #7
beq _021EDB38
cmp r4, #3
bne _021EDB0C
mov r0, r5
- bl FUN_021ED7E0
+ bl MOD04_021ED7E0
mov r4, r0
b _021EDB38
_021EDB0C:
cmp r4, #4
bne _021EDB24
mov r0, r5
- bl FUN_021ED658
+ bl MOD04_021ED658
mov r4, r0
b _021EDB38
_021EDB24:
cmp r4, #5
bne _021EDB38
mov r0, r5
- bl FUN_021ED538
+ bl MOD04_021ED538
mov r4, r0
_021EDB38:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EDB44
-FUN_021EDB44: ; 0x021EDB44
+ arm_func_start MOD04_021EDB44
+MOD04_021EDB44: ; 0x021EDB44
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
bl FUN_020A71F8
mov r4, r0
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
cmp r4, #1
bne _021EDBB0
ldrb r1, [r0, #0xd0a]
@@ -24143,8 +24143,8 @@ FUN_021EDB44: ; 0x021EDB44
str r0, [sp, #4]
str r0, [sp, #8]
str r0, [sp, #0xc]
- bl FUN_021ED17C
- ldr r1, _021EDBC8 ; =FUN_021EC44C
+ bl MOD04_021ED17C
+ ldr r1, _021EDBC8 ; =MOD04_021EC44C
add r0, sp, #0
bl FUN_020A7BD4
cmp r0, #1
@@ -24153,7 +24153,7 @@ FUN_021EDB44: ; 0x021EDB44
blt _021EDBBC
_021EDB9C:
mov r0, #1
- bl FUN_021EB6F4
+ bl MOD04_021EB6F4
add sp, sp, #0x10
mov r0, #0x11
ldmia sp!, {r4, pc}
@@ -24166,10 +24166,10 @@ _021EDBBC:
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
-_021EDBC8: .word FUN_021EC44C
+_021EDBC8: .word MOD04_021EC44C
- arm_func_start FUN_021EDBCC
-FUN_021EDBCC: ; 0x021EDBCC
+ arm_func_start MOD04_021EDBCC
+MOD04_021EDBCC: ; 0x021EDBCC
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r4, r0
@@ -24177,7 +24177,7 @@ FUN_021EDBCC: ; 0x021EDBCC
cmp r0, #6
addhs sp, sp, #8
ldmhsia sp!, {r4, pc}
- bl FUN_021EB6AC
+ bl MOD04_021EB6AC
add r4, r4, r0, lsl #8
ldrb r0, [r4, #0xc0]
ldrb r2, [r4, #0xc8]
@@ -24194,10 +24194,10 @@ FUN_021EDBCC: ; 0x021EDBCC
addeq sp, sp, #8
ldmeqia sp!, {r4, pc}
add r0, r4, #0xc8
- bl FUN_021EDCA8
+ bl MOD04_021EDCA8
str r0, [sp]
add r0, r4, #0xcc
- bl FUN_021EDCA8
+ bl MOD04_021EDCA8
str r0, [sp, #4]
add r0, sp, #0
add r1, sp, #4
@@ -24205,8 +24205,8 @@ FUN_021EDBCC: ; 0x021EDBCC
add sp, sp, #8
ldmia sp!, {r4, pc}
- arm_func_start FUN_021EDC54
-FUN_021EDC54: ; 0x021EDC54
+ arm_func_start MOD04_021EDC54
+MOD04_021EDC54: ; 0x021EDC54
rsb r0, r0, #0x20
cmp r0, #0
mvn r3, #0
@@ -24231,8 +24231,8 @@ _021EDC78:
orr r0, r1, r0
bx lr
- arm_func_start FUN_021EDCA8
-FUN_021EDCA8: ; 0x021EDCA8
+ arm_func_start MOD04_021EDCA8
+MOD04_021EDCA8: ; 0x021EDCA8
ldrb r1, [r0]
ldrb r2, [r0, #1]
mov r3, #0
@@ -24255,8 +24255,8 @@ FUN_021EDCA8: ; 0x021EDCA8
orr r0, r1, r0
bx lr
- arm_func_start FUN_021EDCFC
-FUN_021EDCFC: ; 0x021EDCFC
+ arm_func_start MOD04_021EDCFC
+MOD04_021EDCFC: ; 0x021EDCFC
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r4, r2
@@ -24272,7 +24272,7 @@ FUN_021EDCFC: ; 0x021EDCFC
ldrb r0, [r5, #0xd0d]
cmp r0, #6
ldmhsia sp!, {r4, r5, r6, pc}
- bl FUN_021EB6AC
+ bl MOD04_021EB6AC
add r5, r5, r0, lsl #8
ldrb r0, [r5, #0xc0]
cmp r0, #0
@@ -24280,19 +24280,19 @@ FUN_021EDCFC: ; 0x021EDCFC
mov r0, #0
str r0, [r4, #0xc]
add r0, r5, #0xc0
- bl FUN_021EDCA8
+ bl MOD04_021EDCA8
str r0, [r4, #0x10]
ldrb r0, [r5, #0xd0]
- bl FUN_021EDC54
+ bl MOD04_021EDC54
str r0, [r4, #0x14]
add r0, r5, #0xc4
- bl FUN_021EDCA8
+ bl MOD04_021EDCA8
str r0, [r4, #0x18]
add r0, r5, #0xc8
- bl FUN_021EDCA8
+ bl MOD04_021EDCA8
str r0, [r4, #0x1c]
add r0, r5, #0xcc
- bl FUN_021EDCA8
+ bl MOD04_021EDCA8
str r0, [r4, #0x20]
ldmia sp!, {r4, r5, r6, pc}
_021EDD94:
@@ -24308,8 +24308,8 @@ _021EDD94:
.align 2, 0
_021EDDB8: .word 0x0220BB2C
- arm_func_start FUN_021EDDBC
-FUN_021EDDBC: ; 0x021EDDBC
+ arm_func_start MOD04_021EDDBC
+MOD04_021EDDBC: ; 0x021EDDBC
stmdb sp!, {lr}
sub sp, sp, #4
bl FUN_02099A94
@@ -24332,35 +24332,35 @@ _021EDDFC:
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EDE08
-FUN_021EDE08: ; 0x021EDE08
+ arm_func_start MOD04_021EDE08
+MOD04_021EDE08: ; 0x021EDE08
stmdb sp!, {lr}
sub sp, sp, #4
ldrb r0, [r0, #0xd0d]
- bl FUN_021EB6BC
+ bl MOD04_021EB6BC
mov r0, #0x10
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EDE24
-FUN_021EDE24: ; 0x021EDE24
+ arm_func_start MOD04_021EDE24
+MOD04_021EDE24: ; 0x021EDE24
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, #1
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r4, r0
- bl FUN_021DC7AC
+ bl MOD04_021DC7AC
movs r5, r0
beq _021EDE88
ldrb r0, [r6, #0xd0d]
- bl FUN_021EB6AC
+ bl MOD04_021EB6AC
ldrb r1, [r4, #0x15]
cmp r1, r0
bne _021EDE60
- bl FUN_021DC794
+ bl MOD04_021DC794
str r0, [r4, #0x10]
_021EDE60:
- bl FUN_021DC870
+ bl MOD04_021DC870
cmp r5, #0xb
moveq r0, #0xf
ldmeqia sp!, {r4, r5, r6, pc}
@@ -24374,32 +24374,32 @@ _021EDE88:
mov r0, #0xe
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021EDE90
-FUN_021EDE90: ; 0x021EDE90
+ arm_func_start MOD04_021EDE90
+MOD04_021EDE90: ; 0x021EDE90
stmdb sp!, {lr}
sub sp, sp, #4
mov r0, #8
- bl FUN_021EB798
- bl FUN_021DC970
+ bl MOD04_021EB798
+ bl MOD04_021DC970
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0xe
ldmeqia sp!, {pc}
mov r0, #3
- bl FUN_021EB6F4
+ bl MOD04_021EB6F4
mov r0, #0x11
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EDEC8
-FUN_021EDEC8: ; 0x021EDEC8
+ arm_func_start MOD04_021EDEC8
+MOD04_021EDEC8: ; 0x021EDEC8
stmdb sp!, {r4, lr}
mov r4, r0
bl FUN_0209A60C
cmp r0, #0
beq _021EDF00
mov r0, r4
- bl FUN_021EDBCC
+ bl MOD04_021EDBCC
ldrb r0, [r4, #0xd0c]
mov r0, r0, lsl #0x1a
mov r0, r0, lsr #0x1e
@@ -24432,20 +24432,20 @@ _021EDF00:
.align 2, 0
_021EDF54: .word 0x01FF6210
- arm_func_start FUN_021EDF58
-FUN_021EDF58: ; 0x021EDF58
+ arm_func_start MOD04_021EDF58
+MOD04_021EDF58: ; 0x021EDF58
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, #1
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r5, r0
mov r0, #4
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r4, r0
mov r0, r5
mov r1, r6
mov r2, r4
- bl FUN_021EDCFC
+ bl MOD04_021EDCFC
ldr r1, _021EDFB8 ; =0x021C8CC4
mov r2, #4
mov r0, r4
@@ -24455,20 +24455,20 @@ FUN_021EDF58: ; 0x021EDF58
moveq r0, #0xc
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, #2
- bl FUN_021EB6F4
+ bl MOD04_021EB6F4
mov r0, #0x11
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021EDFB8: .word 0x021C8CC4
- arm_func_start FUN_021EDFBC
-FUN_021EDFBC: ; 0x021EDFBC
+ arm_func_start MOD04_021EDFBC
+MOD04_021EDFBC: ; 0x021EDFBC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
- bl FUN_021EB720
+ bl MOD04_021EB720
mov r5, r0
mov r0, #0x10
- bl FUN_021EB798
+ bl MOD04_021EB798
mov r4, r0
bl FUN_020A71F8
cmp r0, #9
@@ -24486,30 +24486,30 @@ _021EDFF4: ; jump table
b _021EE048 ; case 5
_021EE00C:
mov r0, r4
- bl FUN_021EDF58
+ bl MOD04_021EDF58
mov r5, r0
b _021EE0B4
_021EE01C:
mov r0, r4
- bl FUN_021EDEC8
+ bl MOD04_021EDEC8
mov r5, r0
b _021EE0B4
_021EE02C:
- bl FUN_021EDE90
+ bl MOD04_021EDE90
mov r5, r0
b _021EE0B4
_021EE038:
mov r0, r4
- bl FUN_021EDE24
+ bl MOD04_021EDE24
mov r5, r0
b _021EE0B4
_021EE048:
mov r0, r4
- bl FUN_021EDE08
+ bl MOD04_021EDE08
mov r5, r0
b _021EE0B4
_021EE058:
- bl FUN_021EDDBC
+ bl MOD04_021EDDBC
mov r5, r0
b _021EE0B4
_021EE064:
@@ -24520,16 +24520,16 @@ _021EE064:
cmp r5, #0xf
bne _021EE0A0
mov r0, r4
- bl FUN_021EDE08
+ bl MOD04_021EDE08
mov r5, r0
b _021EE0B4
_021EE08C:
- bl FUN_021EDDBC
+ bl MOD04_021EDDBC
mov r5, r0
b _021EE0B4
_021EE098:
- bl FUN_021DC7F0
- bl FUN_021DC870
+ bl MOD04_021DC7F0
+ bl MOD04_021DC870
_021EE0A0:
ldrb r0, [r4, #0xd13]
mov r1, #2
@@ -24541,8 +24541,8 @@ _021EE0B4:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EE0C0
-FUN_021EE0C0: ; 0x021EE0C0
+ arm_func_start MOD04_021EE0C0
+MOD04_021EE0C0: ; 0x021EE0C0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x1c
mov r4, #3
@@ -24574,7 +24574,7 @@ _021EE120:
_021EE128:
add r0, r7, r6
ldrb r0, [sl, r0]
- bl FUN_021EE234
+ bl MOD04_021EE234
rsb r2, r6, #3
mov r1, #6
mul r1, r2, r1
@@ -24612,7 +24612,7 @@ _021EE1B0:
ldr r0, [sp]
add r0, r0, r4
ldrb r0, [sl, r0]
- bl FUN_021EE234
+ bl MOD04_021EE234
rsb r1, r4, #3
mul r2, r1, r6
orr r5, r5, r0, lsl r2
@@ -24646,8 +24646,8 @@ _021EE228:
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_021EE234
-FUN_021EE234: ; 0x021EE234
+ arm_func_start MOD04_021EE234
+MOD04_021EE234: ; 0x021EE234
cmp r0, #0x41
blo _021EE248
cmp r0, #0x5a
@@ -24680,8 +24680,8 @@ _021EE278:
rsb r0, r0, #0
bx lr
- arm_func_start FUN_021EE2A4
-FUN_021EE2A4: ; 0x021EE2A4
+ arm_func_start MOD04_021EE2A4
+MOD04_021EE2A4: ; 0x021EE2A4
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r1
@@ -24805,8 +24805,8 @@ _021EE460: .word 0x0220BB84
_021EE464: .word 0x0220D4E0
_021EE468: .word 0x0220BB94
- arm_func_start FUN_021EE46C
-FUN_021EE46C: ; 0x021EE46C
+ arm_func_start MOD04_021EE46C
+MOD04_021EE46C: ; 0x021EE46C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x6c
mov r5, r0
@@ -24827,8 +24827,8 @@ FUN_021EE46C: ; 0x021EE46C
add sp, sp, #0x6c
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EE4B8
-FUN_021EE4B8: ; 0x021EE4B8
+ arm_func_start MOD04_021EE4B8
+MOD04_021EE4B8: ; 0x021EE4B8
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x1c
ldr lr, _021EE5AC ; =0x0220BBA4
@@ -24845,7 +24845,7 @@ _021EE4D0:
mov r1, r4
mov r2, #0x20
mov r3, #0x18
- bl FUN_021EE0C0
+ bl MOD04_021EE0C0
mov r3, #0
ldr r0, _021EE5B0 ; =0x0220D4E4
_021EE500:
@@ -24901,16 +24901,16 @@ _021EE5AC: .word 0x0220BBA4
_021EE5B0: .word 0x0220D4E4
_021EE5B4: .word 0x0220D4D8
- arm_func_start FUN_021EE5B8
-FUN_021EE5B8: ; 0x021EE5B8
- ldr ip, _021EE5C4 ; =FUN_021EE2A4
+ arm_func_start MOD04_021EE5B8
+MOD04_021EE5B8: ; 0x021EE5B8
+ ldr ip, _021EE5C4 ; =MOD04_021EE2A4
add r0, r0, #0xc
bx ip
.align 2, 0
-_021EE5C4: .word FUN_021EE2A4
+_021EE5C4: .word MOD04_021EE2A4
- arm_func_start FUN_021EE5C8
-FUN_021EE5C8: ; 0x021EE5C8
+ arm_func_start MOD04_021EE5C8
+MOD04_021EE5C8: ; 0x021EE5C8
stmdb sp!, {lr}
sub sp, sp, #4
ldr r1, _021EE5F0 ; =0x0220D540
@@ -24924,13 +24924,13 @@ FUN_021EE5C8: ; 0x021EE5C8
.align 2, 0
_021EE5F0: .word 0x0220D540
- arm_func_start FUN_021EE5F4
-FUN_021EE5F4: ; 0x021EE5F4
+ arm_func_start MOD04_021EE5F4
+MOD04_021EE5F4: ; 0x021EE5F4
stmdb sp!, {r4, lr}
sub sp, sp, #0x18
mov r4, r1
add r1, sp, #0
- bl FUN_021EE4B8
+ bl MOD04_021EE4B8
ldr r1, _021EE63C ; =0x0220D54C
add r0, sp, #0
mov r2, #8
@@ -24947,25 +24947,25 @@ FUN_021EE5F4: ; 0x021EE5F4
.align 2, 0
_021EE63C: .word 0x0220D54C
- arm_func_start FUN_021EE640
-FUN_021EE640: ; 0x021EE640
+ arm_func_start MOD04_021EE640
+MOD04_021EE640: ; 0x021EE640
stmdb sp!, {r4, lr}
sub sp, sp, #0x18
mov r4, r1
add r1, sp, #0
- bl FUN_021EE4B8
+ bl MOD04_021EE4B8
add r0, sp, #0
mov r1, r4
- bl FUN_021EE46C
+ bl MOD04_021EE46C
add sp, sp, #0x18
ldmia sp!, {r4, pc}
- arm_func_start FUN_021EE668
-FUN_021EE668: ; 0x021EE668
+ arm_func_start MOD04_021EE668
+MOD04_021EE668: ; 0x021EE668
stmdb sp!, {lr}
sub sp, sp, #0x1c
add r1, sp, #0
- bl FUN_021EE4B8
+ bl MOD04_021EE4B8
ldr r1, _021EE69C ; =0x0220D54C
add r0, sp, #0
mov r2, #8
@@ -24978,8 +24978,8 @@ FUN_021EE668: ; 0x021EE668
.align 2, 0
_021EE69C: .word 0x0220D54C
- arm_func_start FUN_021EE6A0
-FUN_021EE6A0: ; 0x021EE6A0
+ arm_func_start MOD04_021EE6A0
+MOD04_021EE6A0: ; 0x021EE6A0
stmdb sp!, {lr}
sub sp, sp, #0x5c
ldr r0, _021EE7D4 ; =0x02210EE0
@@ -24993,7 +24993,7 @@ FUN_021EE6A0: ; 0x021EE6A0
streq r0, [r1]
addeq sp, sp, #0x5c
ldmeqia sp!, {pc}
- bl FUN_021EFF2C
+ bl MOD04_021EFF2C
cmp r0, #0
beq _021EE774
add r0, sp, #8
@@ -25005,17 +25005,17 @@ FUN_021EE6A0: ; 0x021EE6A0
ldr r0, [r0]
mov r2, #0x40
mov r3, #0
- bl FUN_021EFC40
+ bl MOD04_021EFC40
mov r1, r0
add r0, sp, #0x18
add r2, sp, #8
add r3, sp, #0x14
- bl FUN_021EE7DC
+ bl MOD04_021EE7DC
cmp r0, #0
bne _021EE774
ldr r0, _021EE7D4 ; =0x02210EE0
ldr r0, [r0]
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
ldr r1, [sp, #0x14]
ands r0, r1, #1
ldrne r0, _021EE7D8 ; =0x02210E5C
@@ -25035,7 +25035,7 @@ _021EE764:
ldr r0, [r0]
ldmfd sp!, {pc}
_021EE774:
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r1, _021EE7D4 ; =0x02210EE0
ldr r2, [r1, #0x50]
add r2, r2, #0x7d0
@@ -25045,14 +25045,14 @@ _021EE774:
cmp r0, #1
bne _021EE7B4
ldr r0, [r1]
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
ldr r1, _021EE7D8 ; =0x02210E5C
mov r0, #1
str r0, [r1]
add sp, sp, #0x5c
ldmfd sp!, {pc}
_021EE7B4:
- bl FUN_021EE990
+ bl MOD04_021EE990
ldr r0, _021EE7D4 ; =0x02210EE0
ldr r1, [r0, #0x54]
add r1, r1, #1
@@ -25065,8 +25065,8 @@ _021EE7C8:
_021EE7D4: .word 0x02210EE0
_021EE7D8: .word 0x02210E5C
- arm_func_start FUN_021EE7DC
-FUN_021EE7DC: ; 0x021EE7DC
+ arm_func_start MOD04_021EE7DC
+MOD04_021EE7DC: ; 0x021EE7DC
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
cmp r1, #7
@@ -25116,8 +25116,8 @@ _021EE88C: .word 0x02210EE8
_021EE890: .word 0x02210EE0
_021EE894: .word 0x0220D558
- arm_func_start FUN_021EE898
-FUN_021EE898: ; 0x021EE898
+ arm_func_start MOD04_021EE898
+MOD04_021EE898: ; 0x021EE898
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x44
mov r4, r0
@@ -25127,7 +25127,7 @@ FUN_021EE898: ; 0x021EE898
ldr r0, _021EE978 ; =0x02210EE0
mvn r1, #0
str r1, [r0]
- bl FUN_021F024C
+ bl MOD04_021F024C
ldr r0, _021EE97C ; =0x02210E60
ldrsb r5, [r0]
cmp r5, #0
@@ -25142,14 +25142,14 @@ _021EE8E0:
ldr r1, _021EE984 ; =0x00006CFC
ldr r2, _021EE988 ; =0x02210EE4
addeq r0, sp, #0
- bl FUN_021EE9E0
+ bl MOD04_021EE9E0
cmp r0, #0
addeq sp, sp, #0x44
ldmeqia sp!, {r4, r5, pc}
mov r0, #2
mov r1, r0
mov r2, #0
- bl FUN_021EFDB8
+ bl MOD04_021EFDB8
ldr r2, _021EE978 ; =0x02210EE0
mvn r1, #0
cmp r0, r1
@@ -25168,7 +25168,7 @@ _021EE8E0:
ldr r0, _021EE978 ; =0x02210EE0
add r1, r5, #6
str r1, [r0, #0x4c]
- bl FUN_021EE990
+ bl MOD04_021EE990
ldr r0, _021EE978 ; =0x02210EE0
mov r1, #0
str r1, [r0, #0x54]
@@ -25183,8 +25183,8 @@ _021EE984: .word 0x00006CFC
_021EE988: .word 0x02210EE4
_021EE98C: .word 0x02210EF1
- arm_func_start FUN_021EE990
-FUN_021EE990: ; 0x021EE990
+ arm_func_start MOD04_021EE990
+MOD04_021EE990: ; 0x021EE990
stmdb sp!, {lr}
sub sp, sp, #0xc
ldr r1, _021EE9D4 ; =0x02210EE4
@@ -25196,8 +25196,8 @@ FUN_021EE990: ; 0x021EE990
ldr r2, [r1, #0x4c]
ldr r1, _021EE9DC ; =0x02210EEC
mov r3, #0
- bl FUN_021EFBD4
- bl FUN_021F025C
+ bl MOD04_021EFBD4
+ bl MOD04_021F025C
ldr r1, _021EE9D8 ; =0x02210EE0
str r0, [r1, #0x50]
add sp, sp, #0xc
@@ -25207,8 +25207,8 @@ _021EE9D4: .word 0x02210EE4
_021EE9D8: .word 0x02210EE0
_021EE9DC: .word 0x02210EEC
- arm_func_start FUN_021EE9E0
-FUN_021EE9E0: ; 0x021EE9E0
+ arm_func_start MOD04_021EE9E0
+MOD04_021EE9E0: ; 0x021EE9E0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r1, r1, lsl #0x10
@@ -25223,7 +25223,7 @@ FUN_021EE9E0: ; 0x021EE9E0
orr r1, r2, r1
strh r1, [r4, #2]
mov r5, r0
- bl FUN_021EFB38
+ bl MOD04_021EFB38
str r0, [r4, #4]
ldr r1, [r4, #4]
mvn r0, #0
@@ -25244,8 +25244,8 @@ _021EEA58:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EEA64
-FUN_021EEA64: ; 0x021EEA64
+ arm_func_start MOD04_021EEA64
+MOD04_021EEA64: ; 0x021EEA64
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
ldr r7, [sp, #0x2c]
@@ -25276,8 +25276,8 @@ _021EEAC4:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_021EEAD0
-FUN_021EEAD0: ; 0x021EEAD0
+ arm_func_start MOD04_021EEAD0
+MOD04_021EEAD0: ; 0x021EEAD0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov r8, r2
mov sl, r0
@@ -25303,26 +25303,26 @@ _021EEB20:
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- arm_func_start FUN_021EEB28
-FUN_021EEB28: ; 0x021EEB28
+ arm_func_start MOD04_021EEB28
+MOD04_021EEB28: ; 0x021EEB28
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
- bl FUN_021EF06C
+ bl MOD04_021EF06C
subs r4, r0, #1
addmi sp, sp, #4
ldmmiia sp!, {r4, r5, pc}
_021EEB44:
mov r0, r5
mov r1, r4
- bl FUN_021EED84
+ bl MOD04_021EED84
subs r4, r4, #1
bpl _021EEB44
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EEB60
-FUN_021EEB60: ; 0x021EEB60
+ arm_func_start MOD04_021EEB60
+MOD04_021EEB60: ; 0x021EEB60
stmdb sp!, {r4, r5, r6, r7, r8, lr}
movs r7, r1
mov r8, r0
@@ -25340,7 +25340,7 @@ _021EEB88:
_021EEB94:
mov r0, r8
mov r1, r5
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
mov r1, r6
mov r4, r0
blx r7
@@ -25357,8 +25357,8 @@ _021EEBC8: .word 0x0220D580
_021EEBCC: .word 0x0220D584
_021EEBD0: .word 0x00000121
- arm_func_start FUN_021EEBD4
-FUN_021EEBD4: ; 0x021EEBD4
+ arm_func_start MOD04_021EEBD4
+MOD04_021EEBD4: ; 0x021EEBD4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
movs r6, r1
@@ -25378,7 +25378,7 @@ _021EEC00:
_021EEC10:
mov r0, r7
mov r1, r4
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
mov r1, r5
blx r6
subs r4, r4, #1
@@ -25389,8 +25389,8 @@ _021EEC10:
_021EEC34: .word 0x0220D580
_021EEC38: .word 0x0220D584
- arm_func_start FUN_021EEC3C
-FUN_021EEC3C: ; 0x021EEC3C
+ arm_func_start MOD04_021EEC3C
+MOD04_021EEC3C: ; 0x021EEC3C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov ip, #1
@@ -25412,7 +25412,7 @@ _021EEC78:
cmp r1, #0
beq _021EECB0
mov r1, r4
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
add r1, sp, #8
str r5, [sp]
str r1, [sp, #4]
@@ -25420,17 +25420,17 @@ _021EEC78:
ldr r3, [r7, #8]
mov r0, r6
sub r2, r8, r4
- bl FUN_021EEA64
+ bl MOD04_021EEA64
b _021EECD0
_021EECB0:
mov r1, r4
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
str r5, [sp]
mov r1, r0
ldr r3, [r7, #8]
mov r0, r6
sub r2, r8, r4
- bl FUN_021EEAD0
+ bl MOD04_021EEAD0
_021EECD0:
cmp r0, #0
beq _021EECFC
@@ -25448,8 +25448,8 @@ _021EECFC:
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
- arm_func_start FUN_021EED08
-FUN_021EED08: ; 0x021EED08
+ arm_func_start MOD04_021EED08
+MOD04_021EED08: ; 0x021EED08
ldr ip, _021EED24 ; =0x020E1888
mov r2, r0
mov r3, r1
@@ -25460,8 +25460,8 @@ FUN_021EED08: ; 0x021EED08
.align 2, 0
_021EED24: .word 0x020E1888
- arm_func_start FUN_021EED28
-FUN_021EED28: ; 0x021EED28
+ arm_func_start MOD04_021EED28
+MOD04_021EED28: ; 0x021EED28
stmdb sp!, {r4, r5, r6, lr}
movs r4, r2
mov r6, r0
@@ -25479,18 +25479,18 @@ _021EED48:
_021EED5C:
mov r0, r6
mov r1, r4
- bl FUN_021EF240
+ bl MOD04_021EF240
mov r0, r6
mov r1, r5
mov r2, r4
- bl FUN_021EF1B8
+ bl MOD04_021EF1B8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021EED7C: .word 0x0220D590
_021EED80: .word 0x0220D584
- arm_func_start FUN_021EED84
-FUN_021EED84: ; 0x021EED84
+ arm_func_start MOD04_021EED84
+MOD04_021EED84: ; 0x021EED84
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r4, r1
@@ -25508,18 +25508,18 @@ _021EEDA4:
_021EEDB8:
mov r0, r5
mov r1, r4
- bl FUN_021EF240
+ bl MOD04_021EF240
mov r0, r5
mov r1, r4
- bl FUN_021EEDE0
+ bl MOD04_021EEDE0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
_021EEDD8: .word 0x0220D590
_021EEDDC: .word 0x0220D584
- arm_func_start FUN_021EEDE0
-FUN_021EEDE0: ; 0x021EEDE0
+ arm_func_start MOD04_021EEDE0
+MOD04_021EEDE0: ; 0x021EEDE0
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
movs r7, r1
@@ -25541,11 +25541,11 @@ _021EEE14:
bge _021EEE58
mov r0, r4
mov r1, r7
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
mov r5, r0
mov r0, r4
add r1, r7, #1
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
mov r1, r0
ldr r3, [r4, #8]
sub r0, r6, r7
@@ -25562,8 +25562,8 @@ _021EEE58:
_021EEE6C: .word 0x0220D590
_021EEE70: .word 0x0220D584
- arm_func_start FUN_021EEE74
-FUN_021EEE74: ; 0x021EEE74
+ arm_func_start MOD04_021EEE74
+MOD04_021EEE74: ; 0x021EEE74
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x10
movs r4, r2
@@ -25583,7 +25583,7 @@ _021EEEA0:
ldr r2, [r6]
ldr r3, [r6, #8]
mov r0, r5
- bl FUN_021EEA64
+ bl MOD04_021EEA64
ldr r2, [r6, #0x14]
ldr r1, [r6, #8]
sub r0, r0, r2
@@ -25591,15 +25591,15 @@ _021EEEA0:
mov r2, r0
mov r0, r6
mov r1, r5
- bl FUN_021EEEF0
+ bl MOD04_021EEEF0
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021EEEE8: .word 0x0220D5B0
_021EEEEC: .word 0x0220D584
- arm_func_start FUN_021EEEF0
-FUN_021EEEF0: ; 0x021EEEF0
+ arm_func_start MOD04_021EEEF0
+MOD04_021EEEF0: ; 0x021EEEF0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
movs r4, r2
mov r6, r0
@@ -25620,7 +25620,7 @@ _021EEF24:
cmp r1, r0
bne _021EEF3C
mov r0, r6
- bl FUN_021EF1E4
+ bl MOD04_021EF1E4
_021EEF3C:
ldr r0, [r6]
add r0, r0, #1
@@ -25631,11 +25631,11 @@ _021EEF3C:
bge _021EEF8C
mov r0, r6
add r1, r4, #1
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
mov r7, r0
mov r0, r6
mov r1, r4
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
mov r1, r0
ldr r3, [r6, #8]
sub r0, r8, r4
@@ -25646,14 +25646,14 @@ _021EEF8C:
mov r0, r6
mov r1, r5
mov r2, r4
- bl FUN_021EF1B8
+ bl MOD04_021EF1B8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_021EEFA0: .word 0x0220D5BC
_021EEFA4: .word 0x0220D584
- arm_func_start FUN_021EEFA8
-FUN_021EEFA8: ; 0x021EEFA8
+ arm_func_start MOD04_021EEFA8
+MOD04_021EEFA8: ; 0x021EEFA8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r5, r0
@@ -25671,15 +25671,15 @@ _021EEFD0:
ldr r2, [r5]
mov r0, r5
mov r1, r4
- bl FUN_021EEEF0
+ bl MOD04_021EEEF0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
_021EEFF4: .word 0x0220D5DC
_021EEFF8: .word 0x0220D584
- arm_func_start FUN_021EEFFC
-FUN_021EEFFC: ; 0x021EEFFC
+ arm_func_start MOD04_021EEFFC
+MOD04_021EEFFC: ; 0x021EEFFC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r4, r1
@@ -25714,13 +25714,13 @@ _021EF050:
_021EF064: .word 0x0220D590
_021EF068: .word 0x0220D584
- arm_func_start FUN_021EF06C
-FUN_021EF06C: ; 0x021EF06C
+ arm_func_start MOD04_021EF06C
+MOD04_021EF06C: ; 0x021EF06C
ldr r0, [r0]
bx lr
- arm_func_start FUN_021EF074
-FUN_021EF074: ; 0x021EF074
+ arm_func_start MOD04_021EF074
+MOD04_021EF074: ; 0x021EF074
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r5, r0
@@ -25738,31 +25738,31 @@ _021EF098:
_021EF0A8:
mov r0, r5
mov r1, r4
- bl FUN_021EF240
+ bl MOD04_021EF240
ldr r0, [r5]
add r4, r4, #1
cmp r4, r0
blt _021EF0A8
_021EF0C4:
ldr r0, [r5, #0x14]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, r5
- bl FUN_021DD82C
+ bl MOD04_021DD82C
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
_021EF0DC: .word 0x0220D5DC
_021EF0E0: .word 0x0220D584
- arm_func_start FUN_021EF0E4
-FUN_021EF0E4: ; 0x021EF0E4
+ arm_func_start MOD04_021EF0E4
+MOD04_021EF0E4: ; 0x021EF0E4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r7, r0
mov r0, #0x18
mov r6, r1
mov r5, r2
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
bne _021EF11C
ldr r0, _021EF1A8 ; =0x0220D5DC
@@ -25792,7 +25792,7 @@ _021EF138:
beq _021EF198
ldr r0, [r4, #8]
mul r0, r1, r0
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [r4, #0x14]
ldr r0, [r4, #0x14]
cmp r0, #0
@@ -25815,22 +25815,22 @@ _021EF1AC: .word 0x0220D584
_021EF1B0: .word 0x0220D5E4
_021EF1B4: .word 0x0220D5F0
- arm_func_start FUN_021EF1B8
-FUN_021EF1B8: ; 0x021EF1B8
+ arm_func_start MOD04_021EF1B8
+MOD04_021EF1B8: ; 0x021EF1B8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r1
mov r5, r0
mov r1, r2
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r2, [r5, #8]
mov r1, r4
bl memcpy
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EF1E4
-FUN_021EF1E4: ; 0x021EF1E4
+ arm_func_start MOD04_021EF1E4
+MOD04_021EF1E4: ; 0x021EF1E4
stmdb sp!, {r4, lr}
mov r4, r0
ldr r1, [r4, #4]
@@ -25841,7 +25841,7 @@ FUN_021EF1E4: ; 0x021EF1E4
ldr r1, [r4, #8]
ldr r0, [r4, #0x14]
mul r1, r2, r1
- bl FUN_021DD844
+ bl MOD04_021DD844
str r0, [r4, #0x14]
ldr r0, [r4, #0x14]
cmp r0, #0
@@ -25856,20 +25856,20 @@ FUN_021EF1E4: ; 0x021EF1E4
_021EF238: .word 0x0220D5F0
_021EF23C: .word 0x0220D584
- arm_func_start FUN_021EF240
-FUN_021EF240: ; 0x021EF240
+ arm_func_start MOD04_021EF240
+MOD04_021EF240: ; 0x021EF240
stmdb sp!, {r4, lr}
mov r4, r0
ldr r2, [r4, #0x10]
cmp r2, #0
ldmeqia sp!, {r4, pc}
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r1, [r4, #0x10]
blx r1
ldmia sp!, {r4, pc}
- arm_func_start FUN_021EF264
-FUN_021EF264: ; 0x021EF264
+ arm_func_start MOD04_021EF264
+MOD04_021EF264: ; 0x021EF264
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
movs r6, r1
@@ -25891,7 +25891,7 @@ _021EF2A0:
mov r1, r6
ldr r0, [r0, r4, lsl #2]
mov r2, r5
- bl FUN_021EEB60
+ bl MOD04_021EEB60
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {r4, r5, r6, r7, pc}
@@ -25907,8 +25907,8 @@ _021EF2D0:
_021EF2DC: .word 0x0220D5FC
_021EF2E0: .word 0x0220D600
- arm_func_start FUN_021EF2E4
-FUN_021EF2E4: ; 0x021EF2E4
+ arm_func_start MOD04_021EF2E4
+MOD04_021EF2E4: ; 0x021EF2E4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
movs r6, r1
@@ -25931,7 +25931,7 @@ _021EF324:
mov r1, r6
ldr r0, [r0, r4, lsl #2]
mov r2, r5
- bl FUN_021EEBD4
+ bl MOD04_021EEBD4
ldr r0, [r7, #4]
add r4, r4, #1
cmp r4, r0
@@ -25942,8 +25942,8 @@ _021EF324:
_021EF350: .word 0x0220D5FC
_021EF354: .word 0x0220D600
- arm_func_start FUN_021EF358
-FUN_021EF358: ; 0x021EF358
+ arm_func_start MOD04_021EF358
+MOD04_021EF358: ; 0x021EF358
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
movs r6, r0
@@ -25970,7 +25970,7 @@ _021EF380:
ldr r0, [r1, r4, lsl #2]
ldr r2, [r6, #0x10]
mov r1, r5
- bl FUN_021EEC3C
+ bl MOD04_021EEC3C
mov r1, r0
mvn r0, #0
cmp r1, r0
@@ -25979,15 +25979,15 @@ _021EF380:
ldmeqia sp!, {r4, r5, r6, pc}
ldr r0, [r6]
ldr r0, [r0, r4, lsl #2]
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021EF3EC: .word 0x0220D60C
_021EF3F0: .word 0x0220D600
- arm_func_start FUN_021EF3F4
-FUN_021EF3F4: ; 0x021EF3F4
+ arm_func_start MOD04_021EF3F4
+MOD04_021EF3F4: ; 0x021EF3F4
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
movs r6, r0
@@ -26014,7 +26014,7 @@ _021EF41C:
ldr r0, [r1, r4, lsl #2]
ldr r2, [r6, #0x10]
mov r1, r5
- bl FUN_021EEC3C
+ bl MOD04_021EEC3C
mov r1, r0
mvn r0, #0
cmp r1, r0
@@ -26023,7 +26023,7 @@ _021EF41C:
ldmeqia sp!, {r4, r5, r6, pc}
ldr r0, [r6]
ldr r0, [r0, r4, lsl #2]
- bl FUN_021EED84
+ bl MOD04_021EED84
mov r0, #1
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
@@ -26031,8 +26031,8 @@ _021EF41C:
_021EF48C: .word 0x0220D60C
_021EF490: .word 0x0220D600
- arm_func_start FUN_021EF494
-FUN_021EF494: ; 0x021EF494
+ arm_func_start MOD04_021EF494
+MOD04_021EF494: ; 0x021EF494
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
movs r6, r0
@@ -26058,7 +26058,7 @@ _021EF4BC:
ldr r0, [r1, r4, lsl #2]
ldr r2, [r6, #0x10]
mov r1, r5
- bl FUN_021EEC3C
+ bl MOD04_021EEC3C
mov r2, r0
mvn r0, #0
cmp r2, r0
@@ -26066,22 +26066,22 @@ _021EF4BC:
ldr r0, [r6]
mov r1, r5
ldr r0, [r0, r4, lsl #2]
- bl FUN_021EEFA8
+ bl MOD04_021EEFA8
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
_021EF520:
ldr r0, [r6]
mov r1, r5
ldr r0, [r0, r4, lsl #2]
- bl FUN_021EED28
+ bl MOD04_021EED28
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021EF538: .word 0x0220D60C
_021EF53C: .word 0x0220D600
- arm_func_start FUN_021EF540
-FUN_021EF540: ; 0x021EF540
+ arm_func_start MOD04_021EF540
+MOD04_021EF540: ; 0x021EF540
stmdb sp!, {r4, r5, r6, lr}
movs r6, r0
mov r4, #0
@@ -26102,7 +26102,7 @@ _021EF564:
_021EF580:
ldr r0, [r6]
ldr r0, [r0, r5, lsl #2]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
ldr r1, [r6, #4]
add r5, r5, #1
cmp r5, r1
@@ -26115,8 +26115,8 @@ _021EF5A0:
_021EF5A8: .word 0x0220D60C
_021EF5AC: .word 0x0220D600
- arm_func_start FUN_021EF5B0
-FUN_021EF5B0: ; 0x021EF5B0
+ arm_func_start MOD04_021EF5B0
+MOD04_021EF5B0: ; 0x021EF5B0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r5, r0
@@ -26137,24 +26137,24 @@ _021EF5D4:
_021EF5F0:
ldr r0, [r5]
ldr r0, [r0, r4, lsl #2]
- bl FUN_021EF074
+ bl MOD04_021EF074
ldr r0, [r5, #4]
add r4, r4, #1
cmp r4, r0
blt _021EF5F0
_021EF60C:
ldr r0, [r5]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, r5
- bl FUN_021DD82C
+ bl MOD04_021DD82C
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
_021EF624: .word 0x0220D60C
_021EF628: .word 0x0220D600
- arm_func_start FUN_021EF62C
-FUN_021EF62C: ; 0x021EF62C
+ arm_func_start MOD04_021EF62C
+MOD04_021EF62C: ; 0x021EF62C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
movs r7, r3
mov sl, r0
@@ -26194,7 +26194,7 @@ _021EF698:
bl __msl_assertion_failed
_021EF6B4:
mov r0, #0x14
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r5, r0
bne _021EF6D8
ldr r0, _021EF764 ; =0x0220D60C
@@ -26204,7 +26204,7 @@ _021EF6B4:
bl __msl_assertion_failed
_021EF6D8:
mov r0, sb, lsl #2
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [r5]
ldr r0, [r5]
cmp r0, #0
@@ -26222,7 +26222,7 @@ _021EF710:
mov r0, sl
mov r1, r8
mov r2, r6
- bl FUN_021EF0E4
+ bl MOD04_021EF0E4
ldr r1, [r5]
str r0, [r1, r4, lsl #2]
add r4, r4, #1
@@ -26245,8 +26245,8 @@ _021EF760: .word 0x0220D630
_021EF764: .word 0x0220D60C
_021EF768: .word 0x0220D63C
- arm_func_start FUN_021EF76C
-FUN_021EF76C: ; 0x021EF76C
+ arm_func_start MOD04_021EF76C
+MOD04_021EF76C: ; 0x021EF76C
stmdb sp!, {lr}
sub sp, sp, #0xc
ldr ip, [sp, #0x10]
@@ -26254,12 +26254,12 @@ FUN_021EF76C: ; 0x021EF76C
mov r3, r2
mov r2, #4
str ip, [sp, #4]
- bl FUN_021EF62C
+ bl MOD04_021EF62C
add sp, sp, #0xc
ldmfd sp!, {pc}
- arm_func_start FUN_021EF794
-FUN_021EF794: ; 0x021EF794
+ arm_func_start MOD04_021EF794
+MOD04_021EF794: ; 0x021EF794
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x68
mov r6, r0
@@ -26276,12 +26276,12 @@ FUN_021EF794: ; 0x021EF794
bl FUN_020A8BA4
add r0, sp, #0
mov r1, r4
- bl FUN_021EF7E0
+ bl MOD04_021EF7E0
add sp, sp, #0x68
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021EF7E0
-FUN_021EF7E0: ; 0x021EF7E0
+ arm_func_start MOD04_021EF7E0
+MOD04_021EF7E0: ; 0x021EF7E0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r6, #0
mov r8, r0
@@ -26301,8 +26301,8 @@ _021EF7F8:
.align 2, 0
_021EF81C: .word 0x0220D64C
- arm_func_start FUN_021EF820
-FUN_021EF820: ; 0x021EF820
+ arm_func_start MOD04_021EF820
+MOD04_021EF820: ; 0x021EF820
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov r7, r1
mov r6, r2
@@ -26332,7 +26332,7 @@ _021EF86C:
movlt r2, r6
mov r0, sl
mov r1, r7
- bl FUN_021EF95C
+ bl MOD04_021EF95C
sub sb, sb, #3
cmp sb, #0
add r7, r7, #4
@@ -26393,8 +26393,8 @@ _021EF950: .word 0x0220BBC4
_021EF954: .word 0x55555556
_021EF958: .word 0x00000003
- arm_func_start FUN_021EF95C
-FUN_021EF95C: ; 0x021EF95C
+ arm_func_start MOD04_021EF95C
+MOD04_021EF95C: ; 0x021EF95C
stmdb sp!, {lr}
sub sp, sp, #4
cmp r2, #0
@@ -26440,23 +26440,23 @@ _021EF9AC:
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EF9FC
-FUN_021EF9FC: ; 0x021EF9FC
+ arm_func_start MOD04_021EF9FC
+MOD04_021EF9FC: ; 0x021EF9FC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
subs r4, r1, r5
addeq sp, sp, #4
ldmeqia sp!, {r4, r5, pc}
- bl FUN_021EFA48
+ bl MOD04_021EFA48
mov r1, r4
bl _s32_div_f
add r0, r1, r5
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EFA2C
-FUN_021EFA2C: ; 0x021EFA2C
+ arm_func_start MOD04_021EFA2C
+MOD04_021EFA2C: ; 0x021EFA2C
cmp r0, #0
bicne r1, r0, #0x80000000
ldr r0, _021EFA44 ; =0x0220D654
@@ -26466,13 +26466,13 @@ FUN_021EFA2C: ; 0x021EFA2C
.align 2, 0
_021EFA44: .word 0x0220D654
- arm_func_start FUN_021EFA48
-FUN_021EFA48: ; 0x021EFA48
+ arm_func_start MOD04_021EFA48
+MOD04_021EFA48: ; 0x021EFA48
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021EFA6C ; =0x0220D654
ldr r0, [r0]
- bl FUN_021EFA70
+ bl MOD04_021EFA70
ldr r1, _021EFA6C ; =0x0220D654
str r0, [r1]
add sp, sp, #4
@@ -26480,8 +26480,8 @@ FUN_021EFA48: ; 0x021EFA48
.align 2, 0
_021EFA6C: .word 0x0220D654
- arm_func_start FUN_021EFA70
-FUN_021EFA70: ; 0x021EFA70
+ arm_func_start MOD04_021EFA70
+MOD04_021EFA70: ; 0x021EFA70
ldr r1, _021EFABC ; =0x0000FFFF
ldr r2, _021EFAC0 ; =0x000041A7
mov r3, r0, lsr #0x10
@@ -26506,8 +26506,8 @@ _021EFABC: .word 0x0000FFFF
_021EFAC0: .word 0x000041A7
_021EFAC4: .word 0x00007FFF
- arm_func_start FUN_021EFAC8
-FUN_021EFAC8: ; 0x021EFAC8
+ arm_func_start MOD04_021EFAC8
+MOD04_021EFAC8: ; 0x021EFAC8
stmdb sp!, {r4, lr}
mov r4, r0
bl OS_IsTickAvailable
@@ -26535,16 +26535,16 @@ _021EFB1C: .word 0x0220D678
_021EFB20: .word 0x00000667
_021EFB24: .word 0x01FF6210
- arm_func_start FUN_021EFB28
-FUN_021EFB28: ; 0x021EFB28
+ arm_func_start MOD04_021EFB28
+MOD04_021EFB28: ; 0x021EFB28
ldr r0, _021EFB34 ; =0x02210F3C
ldr r0, [r0]
bx lr
.align 2, 0
_021EFB34: .word 0x02210F3C
- arm_func_start FUN_021EFB38
-FUN_021EFB38: ; 0x021EFB38
+ arm_func_start MOD04_021EFB38
+MOD04_021EFB38: ; 0x021EFB38
stmdb sp!, {lr}
sub sp, sp, #4
add r1, sp, #0
@@ -26555,8 +26555,8 @@ FUN_021EFB38: ; 0x021EFB38
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EFB5C
-FUN_021EFB5C: ; 0x021EFB5C
+ arm_func_start MOD04_021EFB5C
+MOD04_021EFB5C: ; 0x021EFB5C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r2
@@ -26567,21 +26567,21 @@ FUN_021EFB5C: ; 0x021EFB5C
ldrb r2, [r5]
mvn r1, #0
str r2, [r4]
- bl FUN_021EFDD4
+ bl MOD04_021EFDD4
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EFB90
-FUN_021EFB90: ; 0x021EFB90
- ldr ip, _021EFBA0 ; =FUN_021EFDD4
+ arm_func_start MOD04_021EFB90
+MOD04_021EFB90: ; 0x021EFB90
+ ldr ip, _021EFBA0 ; =MOD04_021EFDD4
mov r0, #0
mvn r1, #0
bx ip
.align 2, 0
-_021EFBA0: .word FUN_021EFDD4
+_021EFBA0: .word MOD04_021EFDD4
- arm_func_start FUN_021EFBA4
-FUN_021EFBA4: ; 0x021EFBA4
+ arm_func_start MOD04_021EFBA4
+MOD04_021EFBA4: ; 0x021EFBA4
stmdb sp!, {lr}
sub sp, sp, #4
ldr r1, [sp, #8]
@@ -26591,12 +26591,12 @@ FUN_021EFBA4: ; 0x021EFBA4
bl MI_CpuFill8
mov r0, #0
mvn r1, #0
- bl FUN_021EFDD4
+ bl MOD04_021EFDD4
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EFBD4
-FUN_021EFBD4: ; 0x021EFBD4
+ arm_func_start MOD04_021EFBD4
+MOD04_021EFBD4: ; 0x021EFBD4
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x10
ldr r5, [sp, #0x20]
@@ -26615,22 +26615,22 @@ _021EFBE8:
str ip, [sp]
bl FUN_0209A7D0
mvn r1, #0
- bl FUN_021EFDD4
+ bl MOD04_021EFDD4
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021EFC24
-FUN_021EFC24: ; 0x021EFC24
+ arm_func_start MOD04_021EFC24
+MOD04_021EFC24: ; 0x021EFC24
stmdb sp!, {lr}
sub sp, sp, #4
bl FUN_0209A858
mvn r1, #0
- bl FUN_021EFDD4
+ bl MOD04_021EFDD4
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EFC40
-FUN_021EFC40: ; 0x021EFC40
+ arm_func_start MOD04_021EFC40
+MOD04_021EFC40: ; 0x021EFC40
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r4, [sp, #0x14]
@@ -26642,22 +26642,22 @@ FUN_021EFC40: ; 0x021EFC40
ldrb r2, [r5]
mvn r1, #0
str r2, [r4]
- bl FUN_021EFDD4
+ bl MOD04_021EFDD4
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EFC78
-FUN_021EFC78: ; 0x021EFC78
+ arm_func_start MOD04_021EFC78
+MOD04_021EFC78: ; 0x021EFC78
stmdb sp!, {lr}
sub sp, sp, #4
bl FUN_0209A91C
mvn r1, #0
- bl FUN_021EFDD4
+ bl MOD04_021EFDD4
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EFC94
-FUN_021EFC94: ; 0x021EFC94
+ arm_func_start MOD04_021EFC94
+MOD04_021EFC94: ; 0x021EFC94
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r2
@@ -26668,22 +26668,22 @@ FUN_021EFC94: ; 0x021EFC94
ldrb r2, [r5]
mvn r1, #0
str r2, [r4]
- bl FUN_021EFDD4
+ bl MOD04_021EFDD4
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021EFCC8
-FUN_021EFCC8: ; 0x021EFCC8
+ arm_func_start MOD04_021EFCC8
+MOD04_021EFCC8: ; 0x021EFCC8
stmdb sp!, {lr}
sub sp, sp, #4
bl FUN_0209A588
mvn r1, #0
- bl FUN_021EFDD4
+ bl MOD04_021EFDD4
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EFCE4
-FUN_021EFCE4: ; 0x021EFCE4
+ arm_func_start MOD04_021EFCE4
+MOD04_021EFCE4: ; 0x021EFCE4
stmdb sp!, {r4, lr}
sub sp, sp, #8
add r4, sp, #0
@@ -26699,12 +26699,12 @@ _021EFCF4:
strb r2, [sp]
bl FUN_0209A944
mvn r1, #0
- bl FUN_021EFDD4
+ bl MOD04_021EFDD4
add sp, sp, #8
ldmia sp!, {r4, pc}
- arm_func_start FUN_021EFD28
-FUN_021EFD28: ; 0x021EFD28
+ arm_func_start MOD04_021EFD28
+MOD04_021EFD28: ; 0x021EFD28
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldrh r3, [r1, #2]
@@ -26725,42 +26725,42 @@ _021EFD4C:
strb r2, [sp]
bl FUN_0209A9A4
mvn r1, #0
- bl FUN_021EFDD4
+ bl MOD04_021EFDD4
add sp, sp, #8
ldmia sp!, {r4, pc}
- arm_func_start FUN_021EFD80
-FUN_021EFD80: ; 0x021EFD80
+ arm_func_start MOD04_021EFD80
+MOD04_021EFD80: ; 0x021EFD80
stmdb sp!, {lr}
sub sp, sp, #4
bl thunk_FUN_020995dc
mvn r1, #0
- bl FUN_021EFDD4
+ bl MOD04_021EFDD4
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EFD9C
-FUN_021EFD9C: ; 0x021EFD9C
+ arm_func_start MOD04_021EFD9C
+MOD04_021EFD9C: ; 0x021EFD9C
stmdb sp!, {lr}
sub sp, sp, #4
bl thunk_FUN_0209996c
mvn r1, #0
- bl FUN_021EFDD4
+ bl MOD04_021EFDD4
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EFDB8
-FUN_021EFDB8: ; 0x021EFDB8
+ arm_func_start MOD04_021EFDB8
+MOD04_021EFDB8: ; 0x021EFDB8
stmdb sp!, {lr}
sub sp, sp, #4
bl FUN_0209A9D0
mvn r1, #0
- bl FUN_021EFDD4
+ bl MOD04_021EFDD4
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EFDD4
-FUN_021EFDD4: ; 0x021EFDD4
+ arm_func_start MOD04_021EFDD4
+MOD04_021EFDD4: ; 0x021EFDD4
cmp r0, #0
ldrlt r2, _021EFDE8 ; =0x02210F3C
strlt r0, [r2]
@@ -26769,8 +26769,8 @@ FUN_021EFDD4: ; 0x021EFDD4
.align 2, 0
_021EFDE8: .word 0x02210F3C
- arm_func_start FUN_021EFDEC
-FUN_021EFDEC: ; 0x021EFDEC
+ arm_func_start MOD04_021EFDEC
+MOD04_021EFDEC: ; 0x021EFDEC
ldr r3, [r0]
mov r1, r3, lsr #0x18
mov r0, r3, lsr #8
@@ -26807,8 +26807,8 @@ _021EFE68:
mov r0, #0
bx lr
- arm_func_start FUN_021EFE70
-FUN_021EFE70: ; 0x021EFE70
+ arm_func_start MOD04_021EFE70
+MOD04_021EFE70: ; 0x021EFE70
stmdb sp!, {r4, lr}
ldr r4, _021EFEE8 ; =0x0220D684
ldr r1, _021EFEEC ; =0x02210F40
@@ -26846,38 +26846,38 @@ _021EFEF0: .word 0x02210F38
_021EFEF4: .word 0x02210F64
_021EFEF8: .word 0x02210F50
- arm_func_start FUN_021EFEFC
-FUN_021EFEFC: ; 0x021EFEFC
+ arm_func_start MOD04_021EFEFC
+MOD04_021EFEFC: ; 0x021EFEFC
stmdb sp!, {lr}
sub sp, sp, #4
mov r1, #0
add r2, sp, #0
mov r3, r1
str r1, [sp]
- bl FUN_021EFF5C
+ bl MOD04_021EFF5C
cmp r0, #1
ldreq r0, [sp]
movne r0, #0
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EFF2C
-FUN_021EFF2C: ; 0x021EFF2C
+ arm_func_start MOD04_021EFF2C
+MOD04_021EFF2C: ; 0x021EFF2C
stmdb sp!, {lr}
sub sp, sp, #4
mov r2, #0
add r1, sp, #0
mov r3, r2
str r2, [sp]
- bl FUN_021EFF5C
+ bl MOD04_021EFF5C
cmp r0, #1
ldreq r0, [sp]
movne r0, #0
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021EFF5C
-FUN_021EFF5C: ; 0x021EFF5C
+ arm_func_start MOD04_021EFF5C
+MOD04_021EFF5C: ; 0x021EFF5C
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
movs r6, r1
@@ -26946,8 +26946,8 @@ _021F0044:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021F0054
-FUN_021F0054: ; 0x021F0054
+ arm_func_start MOD04_021F0054
+MOD04_021F0054: ; 0x021F0054
stmdb sp!, {lr}
sub sp, sp, #0xc
mov r1, #4
@@ -26957,7 +26957,7 @@ FUN_021F0054: ; 0x021F0054
ldr r2, _021F0098 ; =0x00001001
add r3, sp, #4
str ip, [sp]
- bl FUN_021EFBA4
+ bl MOD04_021EFBA4
mvn r1, #0
cmp r0, r1
ldrne r1, [sp, #4]
@@ -26968,8 +26968,8 @@ FUN_021F0054: ; 0x021F0054
_021F0094: .word 0x0000FFFF
_021F0098: .word 0x00001001
- arm_func_start FUN_021F009C
-FUN_021F009C: ; 0x021F009C
+ arm_func_start MOD04_021F009C
+MOD04_021F009C: ; 0x021F009C
stmdb sp!, {lr}
sub sp, sp, #0xc
mov r1, #4
@@ -26979,7 +26979,7 @@ FUN_021F009C: ; 0x021F009C
ldr r2, _021F00E0 ; =0x00001002
add r3, sp, #4
str ip, [sp]
- bl FUN_021EFBA4
+ bl MOD04_021EFBA4
mvn r1, #0
cmp r0, r1
ldrne r1, [sp, #4]
@@ -26990,8 +26990,8 @@ FUN_021F009C: ; 0x021F009C
_021F00DC: .word 0x0000FFFF
_021F00E0: .word 0x00001002
- arm_func_start FUN_021F00E4
-FUN_021F00E4: ; 0x021F00E4
+ arm_func_start MOD04_021F00E4
+MOD04_021F00E4: ; 0x021F00E4
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {lr}
sub sp, sp, #4
@@ -27000,7 +27000,7 @@ FUN_021F00E4: ; 0x021F00E4
ldr r2, _021F012C ; =0x00001001
add r3, sp, #0xc
str ip, [sp]
- bl FUN_021EFB90
+ bl MOD04_021EFB90
mvn r1, #0
cmp r0, r1
movne r0, #1
@@ -27013,8 +27013,8 @@ FUN_021F00E4: ; 0x021F00E4
_021F0128: .word 0x0000FFFF
_021F012C: .word 0x00001001
- arm_func_start FUN_021F0130
-FUN_021F0130: ; 0x021F0130
+ arm_func_start MOD04_021F0130
+MOD04_021F0130: ; 0x021F0130
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {lr}
sub sp, sp, #4
@@ -27023,7 +27023,7 @@ FUN_021F0130: ; 0x021F0130
ldr r2, _021F0178 ; =0x00001002
add r3, sp, #0xc
str ip, [sp]
- bl FUN_021EFB90
+ bl MOD04_021EFB90
mvn r1, #0
cmp r0, r1
movne r0, #1
@@ -27036,8 +27036,8 @@ FUN_021F0130: ; 0x021F0130
_021F0174: .word 0x0000FFFF
_021F0178: .word 0x00001002
- arm_func_start FUN_021F017C
-FUN_021F017C: ; 0x021F017C
+ arm_func_start MOD04_021F017C
+MOD04_021F017C: ; 0x021F017C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r1
@@ -27057,8 +27057,8 @@ FUN_021F017C: ; 0x021F017C
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021F01C4
-FUN_021F01C4: ; 0x021F01C4
+ arm_func_start MOD04_021F01C4
+MOD04_021F01C4: ; 0x021F01C4
ldrsb r3, [r0]
mov r2, r0
cmp r3, #0
@@ -27081,8 +27081,8 @@ _021F01FC:
.align 2, 0
_021F0204: .word 0x0210420C
- arm_func_start FUN_021F0208
-FUN_021F0208: ; 0x021F0208
+ arm_func_start MOD04_021F0208
+MOD04_021F0208: ; 0x021F0208
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r5, r0
@@ -27091,7 +27091,7 @@ FUN_021F0208: ; 0x021F0208
ldmeqia sp!, {r4, r5, pc}
bl strlen
add r0, r0, #1
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
beq _021F023C
mov r1, r5
@@ -27101,23 +27101,23 @@ _021F023C:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021F0248
-FUN_021F0248: ; 0x021F0248
+ arm_func_start MOD04_021F0248
+MOD04_021F0248: ; 0x021F0248
bx lr
- arm_func_start FUN_021F024C
-FUN_021F024C: ; 0x021F024C
+ arm_func_start MOD04_021F024C
+MOD04_021F024C: ; 0x021F024C
bx lr
- arm_func_start FUN_021F0250
-FUN_021F0250: ; 0x021F0250
+ arm_func_start MOD04_021F0250
+MOD04_021F0250: ; 0x021F0250
ldr ip, _021F0258 ; =0x020CAFC0
bx ip
.align 2, 0
_021F0258: .word 0x020CAFC0
- arm_func_start FUN_021F025C
-FUN_021F025C: ; 0x021F025C
+ arm_func_start MOD04_021F025C
+MOD04_021F025C: ; 0x021F025C
stmdb sp!, {lr}
sub sp, sp, #4
bl OS_IsTickAvailable
@@ -27144,8 +27144,8 @@ _021F02AC: .word 0x0220D678
_021F02B0: .word 0x00000109
_021F02B4: .word 0x000082EA
- arm_func_start FUN_021F02B8
-FUN_021F02B8: ; 0x021F02B8
+ arm_func_start MOD04_021F02B8
+MOD04_021F02B8: ; 0x021F02B8
stmdb sp!, {lr}
sub sp, sp, #4
mov r3, r2
@@ -27168,7 +27168,7 @@ _021F02E4:
cmp r2, #4
bne _021F0318
ldr r1, _021F0344 ; =0x0220D690
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #4
mov r0, #2
ldmfd sp!, {pc}
@@ -27176,21 +27176,21 @@ _021F0318:
cmp r3, #0
bne _021F0334
ldr r1, _021F0348 ; =0x0220D6E4
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #4
mov r0, #2
ldmfd sp!, {pc}
_021F0334:
mov r2, #1
- bl FUN_021F1A64
+ bl MOD04_021F1A64
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
_021F0344: .word 0x0220D690
_021F0348: .word 0x0220D6E4
- arm_func_start FUN_021F034C
-FUN_021F034C: ; 0x021F034C
+ arm_func_start MOD04_021F034C
+MOD04_021F034C: ; 0x021F034C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x204
movs r7, r0
@@ -27214,7 +27214,7 @@ _021F037C:
cmp r1, #4
bne _021F03B0
ldr r1, _021F0560 ; =0x0220D690
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x204
mov r0, #2
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -27222,7 +27222,7 @@ _021F03B0:
cmp r2, #0
bne _021F03CC
ldr r1, _021F0564 ; =0x0220D6F8
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x204
mov r0, #2
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -27230,7 +27230,7 @@ _021F03CC:
cmp r5, #0
bne _021F03E8
ldr r1, _021F0568 ; =0x0220D710
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x204
mov r0, #2
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -27238,7 +27238,7 @@ _021F03E8:
mov r1, r2
add r0, sp, #0
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldrsb r0, [sp]
cmp r0, #0
beq _021F0424
@@ -27255,7 +27255,7 @@ _021F0424:
add r0, sp, #0x100
mov r1, r5
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
add r0, sp, #0x100
ldrsb r0, [r0]
cmp r0, #0
@@ -27290,47 +27290,47 @@ _021F04A0:
add r0, r4, #0x218
mov r2, #0x100
str r6, [r4, #0x214]
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
add r1, sp, #0x100
add r0, r4, #0x318
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r2, _021F056C ; =0x0220D728
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r7
mov r2, r6
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F0570 ; =0x0220D6C0
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r4, #0x198]
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F0574 ; =0x0220D734
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r7
add r1, r4, #0x1f4
add r2, sp, #0
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F0578 ; =0x0220D744
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r7
add r1, r4, #0x1f4
add r2, sp, #0x100
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F057C ; =0x0220D6CC
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, #0
add sp, sp, #0x204
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -27344,8 +27344,8 @@ _021F0574: .word 0x0220D734
_021F0578: .word 0x0220D744
_021F057C: .word 0x0220D6CC
- arm_func_start FUN_021F0580
-FUN_021F0580: ; 0x021F0580
+ arm_func_start MOD04_021F0580
+MOD04_021F0580: ; 0x021F0580
stmdb sp!, {lr}
sub sp, sp, #4
cmp r0, #0
@@ -27367,12 +27367,12 @@ _021F05A8:
cmp r2, #4
bne _021F05DC
ldr r1, _021F05F0 ; =0x0220D690
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #4
mov r0, #2
ldmfd sp!, {pc}
_021F05DC:
- bl FUN_021F17B0
+ bl MOD04_021F17B0
cmp r0, #0
moveq r0, #0
add sp, sp, #4
@@ -27380,8 +27380,8 @@ _021F05DC:
.align 2, 0
_021F05F0: .word 0x0220D690
- arm_func_start FUN_021F05F4
-FUN_021F05F4: ; 0x021F05F4
+ arm_func_start MOD04_021F05F4
+MOD04_021F05F4: ; 0x021F05F4
stmdb sp!, {lr}
sub sp, sp, #4
cmp r0, #0
@@ -27400,7 +27400,7 @@ _021F061C:
movne r0, #0
ldmneia sp!, {pc}
add r2, sp, #0
- bl FUN_021F85E8
+ bl MOD04_021F85E8
cmp r0, #0
beq _021F0658
ldr r0, [sp]
@@ -27414,8 +27414,8 @@ _021F0658:
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021F0664
-FUN_021F0664: ; 0x021F0664
+ arm_func_start MOD04_021F0664
+MOD04_021F0664: ; 0x021F0664
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r4, r2
@@ -27436,7 +27436,7 @@ _021F0690:
strne r0, [r4]
ldmneia sp!, {r4, pc}
add r2, sp, #0
- bl FUN_021F85E8
+ bl MOD04_021F85E8
cmp r0, #0
beq _021F06D0
ldr r0, [sp]
@@ -27453,8 +27453,8 @@ _021F06D8:
add sp, sp, #8
ldmia sp!, {r4, pc}
- arm_func_start FUN_021F06E4
-FUN_021F06E4: ; 0x021F06E4
+ arm_func_start MOD04_021F06E4
+MOD04_021F06E4: ; 0x021F06E4
stmdb sp!, {r4, r5, r6, lr}
movs r5, r0
mov r4, r2
@@ -27479,7 +27479,7 @@ _021F072C:
cmp r4, #0
bne _021F0744
ldr r1, _021F0814 ; =0x0220D750
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
mov r0, #2
ldmia sp!, {r4, r5, r6, pc}
_021F0744:
@@ -27491,16 +27491,16 @@ _021F0744:
_021F0758:
ldr r1, _021F0818 ; =0x0220D760
mov r0, r5
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
mov r0, #2
ldmia sp!, {r4, r5, r6, pc}
_021F076C:
- bl FUN_021F8430
+ bl MOD04_021F8430
movs r6, r0
bne _021F078C
ldr r1, _021F0818 ; =0x0220D760
mov r0, r5
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
mov r0, #2
ldmia sp!, {r4, r5, r6, pc}
_021F078C:
@@ -27524,7 +27524,7 @@ _021F07AC:
beq _021F07DC
add r0, r4, #8
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F07DC:
ldr r1, [r5, #0xc]
cmp r1, #0
@@ -27533,7 +27533,7 @@ _021F07DC:
beq _021F07FC
add r0, r4, #0x108
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F07FC:
ldr r1, [r5, #0x10]
mov r0, #0
@@ -27548,8 +27548,8 @@ _021F081C: .word 0x0220D770
_021F0820: .word 0x0220D77C
_021F0824: .word 0x000005CF
- arm_func_start FUN_021F0828
-FUN_021F0828: ; 0x021F0828
+ arm_func_start MOD04_021F0828
+MOD04_021F0828: ; 0x021F0828
cmp r0, #0
beq _021F083C
ldr r2, [r0]
@@ -27568,8 +27568,8 @@ _021F0844:
streq r2, [r1]
bx lr
- arm_func_start FUN_021F0864
-FUN_021F0864: ; 0x021F0864
+ arm_func_start MOD04_021F0864
+MOD04_021F0864: ; 0x021F0864
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r4, r0
@@ -27591,13 +27591,13 @@ _021F088C:
cmp r2, #4
bne _021F08C0
ldr r1, _021F0940 ; =0x0220D690
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #4
mov r0, #2
ldmia sp!, {r4, r5, pc}
_021F08C0:
add r2, sp, #0
- bl FUN_021F85E8
+ bl MOD04_021F85E8
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
@@ -27614,17 +27614,17 @@ _021F08C0:
cmp r0, #0
bgt _021F0934
ldr r0, [r1, #0x10]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [sp]
mov r1, #0
str r1, [r0, #0x10]
ldr r0, [sp]
- bl FUN_021F83EC
+ bl MOD04_021F83EC
cmp r0, #0
beq _021F0934
ldr r1, [sp]
mov r0, r4
- bl FUN_021F85A0
+ bl MOD04_021F85A0
_021F0934:
mov r0, #0
add sp, sp, #4
@@ -27632,8 +27632,8 @@ _021F0934:
.align 2, 0
_021F0940: .word 0x0220D690
- arm_func_start FUN_021F0944
-FUN_021F0944: ; 0x021F0944
+ arm_func_start MOD04_021F0944
+MOD04_021F0944: ; 0x021F0944
stmdb sp!, {lr}
sub sp, sp, #4
cmp r0, #0
@@ -27655,19 +27655,19 @@ _021F096C:
cmp r2, #4
bne _021F09A0
ldr r1, _021F09AC ; =0x0220D690
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #4
mov r0, #2
ldmfd sp!, {pc}
_021F09A0:
- bl FUN_021F1984
+ bl MOD04_021F1984
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
_021F09AC: .word 0x0220D690
- arm_func_start FUN_021F09B0
-FUN_021F09B0: ; 0x021F09B0
+ arm_func_start MOD04_021F09B0
+MOD04_021F09B0: ; 0x021F09B0
stmdb sp!, {r4, r5, r6, lr}
ldr ip, _021F0B0C ; =0x00000408
sub sp, sp, ip
@@ -27693,7 +27693,7 @@ _021F09E4:
cmp r1, #4
bne _021F0A20
ldr r1, _021F0B10 ; =0x0220D690
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F0B0C ; =0x00000408
mov r0, #2
add sp, sp, ip
@@ -27702,7 +27702,7 @@ _021F0A20:
cmp r2, #0
bne _021F0A40
ldr r1, _021F0B14 ; =0x0220D784
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F0B0C ; =0x00000408
mov r0, #2
add sp, sp, ip
@@ -27711,7 +27711,7 @@ _021F0A40:
mov r1, r2
ldr r2, _021F0B18 ; =0x00000401
add r0, sp, #0
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldrsb r0, [sp]
cmp r0, #0
beq _021F0A7C
@@ -27728,35 +27728,35 @@ _021F0A7C:
ldr r2, _021F0B1C ; =0x0220D794
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F0B20 ; =0x0220D6C0
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r4, #0x198]
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F0B24 ; =0x0220D7A0
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r2, r5
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F0B28 ; =0x0220D7B0
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r6
add r1, r4, #0x1f4
add r2, sp, #0
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F0B2C ; =0x0220D6CC
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, #0
ldr ip, _021F0B0C ; =0x00000408
add sp, sp, ip
@@ -27772,8 +27772,8 @@ _021F0B24: .word 0x0220D7A0
_021F0B28: .word 0x0220D7B0
_021F0B2C: .word 0x0220D6CC
- arm_func_start FUN_021F0B30
-FUN_021F0B30: ; 0x021F0B30
+ arm_func_start MOD04_021F0B30
+MOD04_021F0B30: ; 0x021F0B30
stmdb sp!, {lr}
sub sp, sp, #4
cmp r0, #0
@@ -27795,19 +27795,19 @@ _021F0B58:
cmp r3, #4
bne _021F0B8C
ldr r1, _021F0B98 ; =0x0220D690
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #4
mov r0, #2
ldmfd sp!, {pc}
_021F0B8C:
- bl FUN_021F50B8
+ bl MOD04_021F50B8
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
_021F0B98: .word 0x0220D690
- arm_func_start FUN_021F0B9C
-FUN_021F0B9C: ; 0x021F0B9C
+ arm_func_start MOD04_021F0B9C
+MOD04_021F0B9C: ; 0x021F0B9C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x20c
movs r5, r0
@@ -27826,7 +27826,7 @@ _021F0BCC:
cmp lr, #0
bne _021F0BEC
ldr r1, _021F0C7C ; =0x0220D6D4
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x20c
mov r0, #2
ldmia sp!, {r4, r5, pc}
@@ -27859,7 +27859,7 @@ _021F0C44:
cmp ip, #4
bne _021F0C64
ldr r1, _021F0C80 ; =0x0220D690
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x20c
mov r0, #2
ldmia sp!, {r4, r5, pc}
@@ -27867,15 +27867,15 @@ _021F0C64:
ldr ip, [sp, #0x21c]
str lr, [sp]
str ip, [sp, #4]
- bl FUN_021F4E64
+ bl MOD04_021F4E64
add sp, sp, #0x20c
ldmia sp!, {r4, r5, pc}
.align 2, 0
_021F0C7C: .word 0x0220D6D4
_021F0C80: .word 0x0220D690
- arm_func_start FUN_021F0C84
-FUN_021F0C84: ; 0x021F0C84
+ arm_func_start MOD04_021F0C84
+MOD04_021F0C84: ; 0x021F0C84
stmdb sp!, {r4, lr}
sub sp, sp, #0x30
cmp r0, #0
@@ -27892,7 +27892,7 @@ _021F0CAC:
cmp ip, #0
bne _021F0CCC
ldr r1, _021F0D4C ; =0x0220D6D4
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x30
mov r0, #2
ldmia sp!, {r4, pc}
@@ -27927,15 +27927,15 @@ _021F0D0C:
ldr lr, [sp, #0x4c]
str ip, [sp, #0x14]
str lr, [sp, #0x18]
- bl FUN_021FA770
+ bl MOD04_021FA770
add sp, sp, #0x30
ldmia sp!, {r4, pc}
.align 2, 0
_021F0D4C: .word 0x0220D6D4
_021F0D50: .word 0x00000601
- arm_func_start FUN_021F0D54
-FUN_021F0D54: ; 0x021F0D54
+ arm_func_start MOD04_021F0D54
+MOD04_021F0D54: ; 0x021F0D54
stmdb sp!, {r4, lr}
movs r4, r0
ldmeqia sp!, {r4, pc}
@@ -27946,13 +27946,13 @@ FUN_021F0D54: ; 0x021F0D54
cmp r1, #0
ldmneia sp!, {r4, pc}
mov r1, #1
- bl FUN_021F35F4
+ bl MOD04_021F35F4
mov r0, r4
- bl FUN_021F14C0
+ bl MOD04_021F14C0
ldmia sp!, {r4, pc}
- arm_func_start FUN_021F0D8C
-FUN_021F0D8C: ; 0x021F0D8C
+ arm_func_start MOD04_021F0D8C
+MOD04_021F0D8C: ; 0x021F0D8C
stmdb sp!, {r4, lr}
sub sp, sp, #0x48
movs lr, r0
@@ -27989,7 +27989,7 @@ _021F0DF4:
cmp r4, #0
bne _021F0E14
ldr r1, _021F0EA8 ; =0x0220D6D4
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x48
mov r0, #2
ldmia sp!, {r4, pc}
@@ -28029,15 +28029,15 @@ _021F0E5C:
mov r2, lr
mov r3, lr
str ip, [sp, #0x20]
- bl FUN_021F4670
+ bl MOD04_021F4670
add sp, sp, #0x48
ldmia sp!, {r4, pc}
.align 2, 0
_021F0EA8: .word 0x0220D6D4
_021F0EAC: .word 0x0220D7BC
- arm_func_start FUN_021F0EB0
-FUN_021F0EB0: ; 0x021F0EB0
+ arm_func_start MOD04_021F0EB0
+MOD04_021F0EB0: ; 0x021F0EB0
stmdb sp!, {lr}
sub sp, sp, #4
cmp r0, #0
@@ -28056,7 +28056,7 @@ _021F0ED8:
blt _021F0EFC
_021F0EE8:
ldr r1, _021F0F14 ; =0x0220D7C0
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #4
mov r0, #2
ldmfd sp!, {pc}
@@ -28070,8 +28070,8 @@ _021F0EFC:
.align 2, 0
_021F0F14: .word 0x0220D7C0
- arm_func_start FUN_021F0F18
-FUN_021F0F18: ; 0x021F0F18
+ arm_func_start MOD04_021F0F18
+MOD04_021F0F18: ; 0x021F0F18
stmdb sp!, {lr}
sub sp, sp, #4
cmp r0, #0
@@ -28090,12 +28090,12 @@ _021F0F40:
movne r0, #0
ldmneia sp!, {pc}
mov r1, #0
- bl FUN_021F0FD4
+ bl MOD04_021F0FD4
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021F0F64
-FUN_021F0F64: ; 0x021F0F64
+ arm_func_start MOD04_021F0F64
+MOD04_021F0F64: ; 0x021F0F64
stmdb sp!, {lr}
sub sp, sp, #4
cmp r0, #0
@@ -28105,12 +28105,12 @@ FUN_021F0F64: ; 0x021F0F64
cmp r1, #0
addeq sp, sp, #4
ldmeqia sp!, {pc}
- bl FUN_021F1620
+ bl MOD04_021F1620
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021F0F94
-FUN_021F0F94: ; 0x021F0F94
+ arm_func_start MOD04_021F0F94
+MOD04_021F0F94: ; 0x021F0F94
stmdb sp!, {lr}
sub sp, sp, #4
ldr r3, _021F0FD0 ; =0x02210E5C
@@ -28123,14 +28123,14 @@ FUN_021F0F94: ; 0x021F0F94
addeq sp, sp, #4
moveq r0, #2
ldmeqia sp!, {pc}
- bl FUN_021F1668
+ bl MOD04_021F1668
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
_021F0FD0: .word 0x02210E5C
- arm_func_start FUN_021F0FD4
-FUN_021F0FD4: ; 0x021F0FD4
+ arm_func_start MOD04_021F0FD4
+MOD04_021F0FD4: ; 0x021F0FD4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
mov sl, r0
@@ -28154,7 +28154,7 @@ _021F100C:
mov fp, #0xa
_021F1024:
mov r0, sl
- bl FUN_021F3880
+ bl MOD04_021F3880
movs r6, r0
bne _021F104C
cmp sb, #0
@@ -28169,7 +28169,7 @@ _021F1050:
cmp r8, #0
beq _021F1060
mov r0, fp
- bl FUN_021F0250
+ bl MOD04_021F0250
_021F1060:
cmp r8, #0
bne _021F1024
@@ -28178,7 +28178,7 @@ _021F1060:
add r1, sp, #0
mov r0, sl
mov r2, #1
- bl FUN_021F6C38
+ bl MOD04_021F6C38
cmp r0, #0
ldrne r0, [sp]
movne r1, #4
@@ -28197,19 +28197,19 @@ _021F10A8:
cmp r6, #0
bne _021F10CC
mov r0, sl
- bl FUN_021F1190
+ bl MOD04_021F1190
mov r6, r0
_021F10CC:
cmp r6, #0
bne _021F10E0
mov r0, sl
- bl FUN_021F775C
+ bl MOD04_021F775C
mov r6, r0
_021F10E0:
cmp r6, #0
bne _021F10F4
mov r0, sl
- bl FUN_021F8974
+ bl MOD04_021F8974
mov r6, r0
_021F10F4:
ldr r1, [r7, #0x424]
@@ -28223,12 +28223,12 @@ _021F1104:
streq r0, [sp]
beq _021F1134
mov r0, sl
- bl FUN_021F6E44
+ bl MOD04_021F6E44
ldr r1, [sp]
mov r0, sl
ldr r2, [r1, #0x20]
str r2, [sp]
- bl FUN_021F6C84
+ bl MOD04_021F6C84
_021F1134:
ldr r1, [sp]
cmp r1, #0
@@ -28236,7 +28236,7 @@ _021F1134:
_021F1140:
mov r0, sl
mov r1, sb
- bl FUN_021F3170
+ bl MOD04_021F3170
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -28245,7 +28245,7 @@ _021F1140:
beq _021F1170
mov r0, sl
mov r1, #0
- bl FUN_021F35F4
+ bl MOD04_021F35F4
_021F1170:
mov r0, r6
add sp, sp, #4
@@ -28257,8 +28257,8 @@ _021F1184: .word 0x000001B5
_021F1188: .word 0x0220D8D0
_021F118C: .word 0x000001DB
- arm_func_start FUN_021F1190
-FUN_021F1190: ; 0x021F1190
+ arm_func_start MOD04_021F1190
+MOD04_021F1190: ; 0x021F1190
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x1c
mov fp, #0
@@ -28276,7 +28276,7 @@ FUN_021F1190: ; 0x021F1190
_021F11C8:
mov r0, r5
add r1, r4, #0x1f4
- bl FUN_021F5DF8
+ bl MOD04_021F5DF8
ldr r0, _021F1494 ; =0x0220D8D4
str sl, [sp]
str r0, [sp, #4]
@@ -28284,7 +28284,7 @@ _021F11C8:
mov r0, r5
add r2, r4, #0x1f4
add r3, sp, #0x18
- bl FUN_021F28AC
+ bl MOD04_021F28AC
cmp r0, #0
addne sp, sp, #0x1c
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -28296,7 +28296,7 @@ _021F11C8:
ldr r1, [r4, #0x1d4]
mov r0, r5
add r3, sp, #0x14
- bl FUN_021F2A2C
+ bl MOD04_021F2A2C
cmp r0, #0
beq _021F1264
cmp r0, #3
@@ -28305,11 +28305,11 @@ _021F11C8:
ldr r2, _021F1498 ; =0x0220D8D8
mov r0, r5
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r5
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x1c
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -28324,7 +28324,7 @@ _021F1278:
ldr r1, _021F14A0 ; =0x0220D90C
ldr r2, [r4, #0x1dc]
mov r0, r5
- bl FUN_021FB3D0
+ bl MOD04_021FB3D0
ldr r0, [r4, #0x1dc]
sub r1, r7, r0
str r1, [sp, #0x14]
@@ -28339,12 +28339,12 @@ _021F1278:
ldr r1, [r4, #0x1f0]
ldr r0, [r4, #0x1ec]
add r1, r1, #1
- bl FUN_021DD844
+ bl MOD04_021DD844
cmp r0, #0
bne _021F12E8
ldr r1, _021F14A4 ; =0x0220D918
mov r0, r5
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x1c
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -28378,19 +28378,19 @@ _021F12EC:
mov r0, r5
add r1, sp, #0x10
mov r2, r7
- bl FUN_021F6C38
+ bl MOD04_021F6C38
cmp r0, #0
bne _021F1378
ldr r1, _021F14AC ; =0x0220D930
mov r2, r7
mov r0, r5
- bl FUN_021FB3D0
+ bl MOD04_021FB3D0
b _021F1414
_021F1378:
mov r0, r5
ldr r1, [sp, #0x10]
ldr r2, [r4, #0x1ec]
- bl FUN_021F6B50
+ bl MOD04_021F6B50
cmp r0, #0
beq _021F1414
add sp, sp, #0x1c
@@ -28399,7 +28399,7 @@ _021F1398:
mov r1, r7
mov r0, r5
mov r2, sl
- bl FUN_021FB2F8
+ bl MOD04_021FB2F8
cmp r0, #0
addne sp, sp, #0x1c
movne r0, #4
@@ -28413,7 +28413,7 @@ _021F1398:
bne _021F13F0
mov r1, r7
mov r0, r5
- bl FUN_021F1C48
+ bl MOD04_021F1C48
cmp r0, #0
beq _021F1414
add sp, sp, #0x1c
@@ -28427,7 +28427,7 @@ _021F13F0:
beq _021F1414
ldr r1, _021F14B8 ; =0x0220D968
mov r0, r5
- bl FUN_021FB3D0
+ bl MOD04_021FB3D0
_021F1414:
ldr r0, [r4, #0x1dc]
ldr r1, _021F149C ; =0x0220D904
@@ -28443,21 +28443,21 @@ _021F1428:
mov r0, r5
mov r1, #7
str r3, [r4, #0x1d8]
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r5
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x1c
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021F1468:
mov r0, r5
- bl FUN_021F6BF8
+ bl MOD04_021F6BF8
movs r7, r0
beq _021F1480
mov r0, r6
- bl FUN_021F0250
+ bl MOD04_021F0250
_021F1480:
cmp r7, #0
bne _021F11C8
@@ -28477,8 +28477,8 @@ _021F14B4: .word 0x0220D960
_021F14B8: .word 0x0220D968
_021F14BC: .word 0x0220D998
- arm_func_start FUN_021F14C0
-FUN_021F14C0: ; 0x021F14C0
+ arm_func_start MOD04_021F14C0
+MOD04_021F14C0: ; 0x021F14C0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -28494,13 +28494,13 @@ FUN_021F14C0: ; 0x021F14C0
str r1, [r4, #0x1e8]
str r1, [r4, #0x1e0]
ldr r0, [r4, #0x1dc]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x1dc]
str r0, [r4, #0x1dc]
str r0, [r4, #0x1f0]
ldr r0, [r4, #0x1ec]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x1ec]
str r0, [r4, #0x1ec]
@@ -28508,7 +28508,7 @@ FUN_021F14C0: ; 0x021F14C0
str r0, [r4, #0x200]
str r0, [r4, #0x1f8]
ldr r0, [r4, #0x1f4]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x1f4]
str r0, [r4, #0x1f4]
@@ -28516,7 +28516,7 @@ FUN_021F14C0: ; 0x021F14C0
str r0, [r4, #0x44c]
str r0, [r4, #0x444]
ldr r0, [r4, #0x440]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x440]
str r0, [r4, #0x440]
@@ -28524,7 +28524,7 @@ FUN_021F14C0: ; 0x021F14C0
str r0, [r4, #0x45c]
str r0, [r4, #0x454]
ldr r0, [r4, #0x450]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x450]
str r0, [r4, #0x450]
@@ -28537,17 +28537,17 @@ FUN_021F14C0: ; 0x021F14C0
beq _021F15B4
_021F15A0:
mov r0, r5
- bl FUN_021F6C84
+ bl MOD04_021F6C84
ldr r1, [r4, #0x424]
cmp r1, #0
bne _021F15A0
_021F15B4:
mov r2, #0
str r2, [r4, #0x424]
- ldr r1, _021F1600 ; =FUN_021F1604
+ ldr r1, _021F1600 ; =MOD04_021F1604
mov r0, r5
str r2, [r4, #0x430]
- bl FUN_021F848C
+ bl MOD04_021F848C
mov r0, #0
str r0, [r4, #0x19c]
str r0, [r4, #0x1a0]
@@ -28562,10 +28562,10 @@ _021F15B4:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
-_021F1600: .word FUN_021F1604
+_021F1600: .word MOD04_021F1604
- arm_func_start FUN_021F1604
-FUN_021F1604: ; 0x021F1604
+ arm_func_start MOD04_021F1604
+MOD04_021F1604: ; 0x021F1604
mov r0, #0
str r0, [r1, #8]
str r0, [r1, #0x10]
@@ -28574,29 +28574,29 @@ FUN_021F1604: ; 0x021F1604
mov r0, #1
bx lr
- arm_func_start FUN_021F1620
-FUN_021F1620: ; 0x021F1620
+ arm_func_start MOD04_021F1620
+MOD04_021F1620: ; 0x021F1620
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
ldr r4, [r5]
mov r1, #1
- bl FUN_021F35F4
+ bl MOD04_021F35F4
ldr r0, [r4, #0x460]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x460]
ldr r0, [r4, #0x428]
- bl FUN_021EF5B0
+ bl MOD04_021EF5B0
mov r0, r4
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r5]
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021F1668
-FUN_021F1668: ; 0x021F1668
+ arm_func_start MOD04_021F1668
+MOD04_021F1668: ; 0x021F1668
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r6, r0
@@ -28605,7 +28605,7 @@ FUN_021F1668: ; 0x021F1668
mov r0, #0x490
mov r5, r1
mov r4, r2
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [sp]
cmp r0, #0
addeq sp, sp, #8
@@ -28633,11 +28633,11 @@ FUN_021F1668: ; 0x021F1668
str r5, [r1, #0x46c]
ldr r1, [sp]
str r4, [r1, #0x470]
- bl FUN_021F8870
+ bl MOD04_021F8870
cmp r0, #0
bne _021F1720
ldr r0, [sp]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [sp]
add sp, sp, #8
@@ -28662,19 +28662,19 @@ _021F1730:
ldr r1, _021F17AC ; =0x0220D9C0
add r0, sp, #0
str r3, [r2, #0x460]
- bl FUN_021FB3D0
+ bl MOD04_021FB3D0
add r0, sp, #0
- bl FUN_021F14C0
+ bl MOD04_021F14C0
movs r4, r0
beq _021F178C
add r0, sp, #0
- bl FUN_021F1620
+ bl MOD04_021F1620
add sp, sp, #8
mov r0, r4
ldmia sp!, {r4, r5, r6, pc}
_021F178C:
- bl FUN_021F024C
- bl FUN_021F025C
+ bl MOD04_021F024C
+ bl MOD04_021F025C
bl srand
ldr r1, [sp]
mov r0, #0
@@ -28684,19 +28684,19 @@ _021F178C:
.align 2, 0
_021F17AC: .word 0x0220D9C0
- arm_func_start FUN_021F17B0
-FUN_021F17B0: ; 0x021F17B0
+ arm_func_start MOD04_021F17B0
+MOD04_021F17B0: ; 0x021F17B0
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r6, r0
add r2, sp, #0
ldr r5, [r6]
- bl FUN_021F85E8
+ bl MOD04_021F85E8
cmp r0, #0
bne _021F17E8
ldr r1, _021F1938 ; =0x0220D9E4
mov r0, r6
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #8
mov r0, #2
ldmia sp!, {r4, r5, r6, pc}
@@ -28704,28 +28704,28 @@ _021F17E8:
ldr r2, _021F193C ; =0x0220D9F8
mov r0, r6
add r1, r5, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F1940 ; =0x0220DA04
mov r0, r6
add r1, r5, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r5, #0x198]
mov r0, r6
add r1, r5, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F1944 ; =0x0220DA10
mov r0, r6
add r1, r5, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r6
add r1, r5, #0x1f4
ldr r2, [sp]
ldr r2, [r2]
- bl FUN_021F2F64
+ bl MOD04_021F2F64
mov r0, r6
add r1, r5, #0x1f4
ldr r2, _021F1948 ; =0x0220DA20
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r0, [sp]
ldr r0, [r0, #8]
cmp r0, #0
@@ -28742,7 +28742,7 @@ _021F187C:
ldr r0, [sp]
ldr r0, [r0, #8]
ldr r0, [r0, #8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [sp]
mov r1, #0
ldr r0, [r0, #8]
@@ -28750,24 +28750,24 @@ _021F187C:
ldr r0, [sp]
ldr r0, [r0, #8]
ldr r0, [r0, #0xc]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [sp]
mov r1, #0
ldr r0, [r0, #8]
str r1, [r0, #0xc]
ldr r0, [sp]
ldr r0, [r0, #8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [sp]
mov r1, #0
str r1, [r0, #8]
ldr r0, [sp]
- bl FUN_021F83EC
+ bl MOD04_021F83EC
cmp r0, #0
beq _021F18F0
ldr r1, [sp]
mov r0, r6
- bl FUN_021F85A0
+ bl MOD04_021F85A0
_021F18F0:
ldr r0, [r5, #0x430]
sub r0, r0, #1
@@ -28781,10 +28781,10 @@ _021F18F0:
mov r3, #0x204
bl __msl_assertion_failed
_021F191C:
- ldr r1, _021F195C ; =FUN_021F1960
+ ldr r1, _021F195C ; =MOD04_021F1960
mov r0, r6
mov r2, r4
- bl FUN_021F848C
+ bl MOD04_021F848C
_021F192C:
mov r0, #0
add sp, sp, #8
@@ -28799,10 +28799,10 @@ _021F194C: .word 0x0220DA28
_021F1950: .word 0x0220DA34
_021F1954: .word 0x000001FD
_021F1958: .word 0x0220DA40
-_021F195C: .word FUN_021F1960
+_021F195C: .word MOD04_021F1960
- arm_func_start FUN_021F1960
-FUN_021F1960: ; 0x021F1960
+ arm_func_start MOD04_021F1960
+MOD04_021F1960: ; 0x021F1960
ldr r1, [r1, #8]
cmp r1, #0
beq _021F197C
@@ -28814,19 +28814,19 @@ _021F197C:
mov r0, #1
bx lr
- arm_func_start FUN_021F1984
-FUN_021F1984: ; 0x021F1984
+ arm_func_start MOD04_021F1984
+MOD04_021F1984: ; 0x021F1984
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r0
add r2, sp, #0
ldr r5, [r4]
- bl FUN_021F85E8
+ bl MOD04_021F85E8
cmp r0, #0
bne _021F19BC
ldr r1, _021F1A60 ; =0x0220D9E4
mov r0, r4
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #4
mov r0, #2
ldmia sp!, {r4, r5, pc}
@@ -28837,13 +28837,13 @@ _021F19BC:
bne _021F19E4
ldr r1, _021F1A60 ; =0x0220D9E4
mov r0, r4
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #4
mov r0, #2
ldmia sp!, {r4, r5, pc}
_021F19E4:
mov r0, r4
- bl FUN_021F265C
+ bl MOD04_021F265C
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {r4, r5, pc}
@@ -28859,17 +28859,17 @@ _021F19E4:
cmp r0, #0
bgt _021F1A54
ldr r0, [r1, #0x10]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [sp]
mov r1, #0
str r1, [r0, #0x10]
ldr r0, [sp]
- bl FUN_021F83EC
+ bl MOD04_021F83EC
cmp r0, #0
beq _021F1A54
ldr r1, [sp]
mov r0, r4
- bl FUN_021F85A0
+ bl MOD04_021F85A0
_021F1A54:
mov r0, #0
add sp, sp, #4
@@ -28877,21 +28877,21 @@ _021F1A54:
.align 2, 0
_021F1A60: .word 0x0220D9E4
- arm_func_start FUN_021F1A64
-FUN_021F1A64: ; 0x021F1A64
+ arm_func_start MOD04_021F1A64
+MOD04_021F1A64: ; 0x021F1A64
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #8
mov r7, r0
mov r6, r1
mov r5, r2
mov r4, r3
- bl FUN_021F7720
+ bl MOD04_021F7720
movs r8, r0
bne _021F1B3C
add r2, sp, #0
mov r0, r7
mov r1, r6
- bl FUN_021F85E8
+ bl MOD04_021F85E8
cmp r0, #0
beq _021F1ABC
ldr r0, [sp]
@@ -28906,14 +28906,14 @@ _021F1ABC:
mov r1, r6
mov r2, r5
mov r3, r4
- bl FUN_021F1B60
+ bl MOD04_021F1B60
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_021F1AD8:
mov r0, r7
mov r1, r6
mov r2, #1
- bl FUN_021F7674
+ bl MOD04_021F7674
movs r8, r0
addeq sp, sp, #8
moveq r0, #1
@@ -28924,7 +28924,7 @@ _021F1AD8:
bne _021F1B24
mov r0, r7
mov r1, r8
- bl FUN_021F7610
+ bl MOD04_021F7610
cmp r0, #0
beq _021F1B3C
add sp, sp, #8
@@ -28932,7 +28932,7 @@ _021F1AD8:
_021F1B24:
mov r0, r7
mov r1, r8
- bl FUN_021F7478
+ bl MOD04_021F7478
cmp r0, #0
addne sp, sp, #8
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
@@ -28941,14 +28941,14 @@ _021F1B3C:
mov r1, r8
mov r2, r5
mov r3, r4
- bl FUN_021F72EC
+ bl MOD04_021F72EC
cmp r0, #0
moveq r0, #0
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
- arm_func_start FUN_021F1B60
-FUN_021F1B60: ; 0x021F1B60
+ arm_func_start MOD04_021F1B60
+MOD04_021F1B60: ; 0x021F1B60
stmdb sp!, {r4, r5, r6, r7, lr}
ldr ip, _021F1C2C ; =0x00000DB4
sub sp, sp, ip
@@ -28959,43 +28959,43 @@ FUN_021F1B60: ; 0x021F1B60
add r0, sp, #0
mov r1, r3
ldr r4, [r7]
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r2, _021F1C34 ; =0x0220DA6C
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r7
mov r2, r5
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F1C38 ; =0x0220DA04
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r4, #0x198]
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F1C3C ; =0x0220DA74
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r2, r6
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F1C40 ; =0x0220DA78
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r7
add r1, r4, #0x1f4
add r2, sp, #0
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F1C44 ; =0x0220DA20
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, #0
ldr ip, _021F1C2C ; =0x00000DB4
add sp, sp, ip
@@ -29009,8 +29009,8 @@ _021F1C3C: .word 0x0220DA74
_021F1C40: .word 0x0220DA78
_021F1C44: .word 0x0220DA20
- arm_func_start FUN_021F1C48
-FUN_021F1C48: ; 0x021F1C48
+ arm_func_start MOD04_021F1C48
+MOD04_021F1C48: ; 0x021F1C48
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr ip, _021F2618 ; =0x0000113C
sub sp, sp, ip
@@ -29021,17 +29021,17 @@ FUN_021F1C48: ; 0x021F1C48
mov r0, r4
mov r3, #0x1000
ldr r6, [sl]
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F1CAC
ldr r2, _021F2620 ; =0x0220DA80
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F2618 ; =0x0000113C
mov r0, #3
add sp, sp, ip
@@ -29044,17 +29044,17 @@ _021F1CAC:
add r2, sp, #0x38
mov r0, r4
mov r3, #0x1000
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F1D04
ldr r2, _021F2620 ; =0x0220DA80
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F2618 ; =0x0000113C
mov r0, #3
add sp, sp, ip
@@ -29067,7 +29067,7 @@ _021F1D04:
add r2, sp, #0x38
mov r0, r4
mov r3, #0x1000
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
beq _021F1D3C
add r0, sp, #0x38
@@ -29076,7 +29076,7 @@ _021F1D04:
b _021F1D48
_021F1D3C:
mov r0, #0
- bl FUN_021EFAC8
+ bl MOD04_021EFAC8
mov sb, r0
_021F1D48:
cmp r5, #0x64
@@ -29110,12 +29110,12 @@ _021F1DA0:
str r0, [sp, #0xc]
beq _021F2608
mov r0, #0xc
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r5, r0
bne _021F1DE4
ldr r1, _021F262C ; =0x0220DABC
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F2618 ; =0x0000113C
mov r0, #1
add sp, sp, ip
@@ -29125,17 +29125,17 @@ _021F1DE4:
add r2, sp, #0x38
mov r0, r4
mov r3, #0x1000
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F1E30
ldr r2, _021F2620 ; =0x0220DA80
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F2618 ; =0x0000113C
mov r0, #3
add sp, sp, ip
@@ -29144,14 +29144,14 @@ _021F1E30:
add r0, sp, #0x38
bl strlen
add r0, r0, #1
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [r5, #8]
ldr r0, [r5, #8]
cmp r0, #0
bne _021F1E6C
ldr r1, _021F262C ; =0x0220DABC
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F2618 ; =0x0000113C
mov r0, #1
add sp, sp, ip
@@ -29169,7 +29169,7 @@ _021F1E6C:
mov r0, sl
mov r3, r5
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021F2608
ldr ip, _021F2618 ; =0x0000113C
@@ -29178,12 +29178,12 @@ _021F1E6C:
_021F1EB4:
mov r0, sl
mov r1, r8
- bl FUN_021F8624
+ bl MOD04_021F8624
movs r5, r0
bne _021F1EE4
ldr r1, _021F262C ; =0x0220DABC
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F2618 ; =0x0000113C
mov r0, #1
add sp, sp, ip
@@ -29193,17 +29193,17 @@ _021F1EE4:
add r2, sp, #0x38
mov r0, r4
mov r3, #0x1000
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F1F30
ldr r2, _021F2620 ; =0x0220DA80
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F2618 ; =0x0000113C
mov r0, #3
add sp, sp, ip
@@ -29217,11 +29217,11 @@ _021F1F30:
ldr r2, _021F2620 ; =0x0220DA80
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F2618 ; =0x0000113C
mov r0, #3
add sp, sp, ip
@@ -29236,22 +29236,22 @@ _021F1F74:
ldr r2, _021F2620 ; =0x0220DA80
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F2618 ; =0x0000113C
mov r0, #3
add sp, sp, ip
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021F1FBC:
ldr r0, [r5, #0x10]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r5, #0x10]
add r0, r4, #8
- bl FUN_021F0208
+ bl MOD04_021F0208
str r0, [r5, #0x10]
ldr r0, [r5, #0x14]
add r0, r0, #1
@@ -29263,12 +29263,12 @@ _021F1FBC:
str r0, [sp, #0x24]
beq _021F2608
ldr r0, _021F2638 ; =0x0000040C
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
bne _021F2028
ldr r1, _021F262C ; =0x0220DABC
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F2618 ; =0x0000113C
mov r0, #1
add sp, sp, ip
@@ -29277,7 +29277,7 @@ _021F2028:
ldr r2, _021F263C ; =0x00000401
add r1, sp, #0x38
add r0, r4, #8
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
str r8, [r4]
str sb, [r4, #4]
mov r0, #0
@@ -29288,7 +29288,7 @@ _021F2028:
mov r0, sl
mov r3, r4
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021F2608
ldr ip, _021F2618 ; =0x0000113C
@@ -29297,12 +29297,12 @@ _021F2028:
_021F2078:
mov r0, sl
mov r1, r8
- bl FUN_021F8624
+ bl MOD04_021F8624
movs r5, r0
bne _021F20A8
ldr r1, _021F262C ; =0x0220DABC
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F2618 ; =0x0000113C
mov r0, #1
add sp, sp, ip
@@ -29312,14 +29312,14 @@ _021F20A8:
cmp r0, #0
bne _021F211C
mov r0, #0x18
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [r5, #8]
ldr r2, [r5, #8]
cmp r2, #0
bne _021F20E8
ldr r1, _021F262C ; =0x0220DABC
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F2618 ; =0x0000113C
mov r0, #1
add sp, sp, ip
@@ -29345,17 +29345,17 @@ _021F211C:
mov r0, r4
mov r3, #0x1000
ldr r7, [r5, #8]
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F216C
ldr r2, _021F2620 ; =0x0220DA80
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F2618 ; =0x0000113C
mov r0, #3
add sp, sp, ip
@@ -29365,17 +29365,17 @@ _021F216C:
add r0, sp, #0x38
add r2, sp, #0x28
mov r3, #0x10
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F21B8
ldr r2, _021F2620 ; =0x0220DA80
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F2618 ; =0x0000113C
mov r0, #3
add sp, sp, ip
@@ -29385,7 +29385,7 @@ _021F21B8:
bl atol
str r0, [r7, #4]
ldr r0, [r7, #8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
add r2, sp, #0x1000
str r0, [r7, #8]
@@ -29393,7 +29393,7 @@ _021F21B8:
add r0, sp, #0x38
add r2, r2, #0x38
mov r3, #0x100
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
addeq r0, sp, #0x1000
moveq r1, #0
@@ -29401,21 +29401,21 @@ _021F21B8:
streqb r1, [r0, #0x30]
add r0, sp, #0x1000
add r0, r0, #0x38
- bl FUN_021F0208
+ bl MOD04_021F0208
str r0, [r7, #8]
ldr r0, [r7, #8]
cmp r0, #0
bne _021F2238
ldr r1, _021F262C ; =0x0220DABC
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F2618 ; =0x0000113C
mov r0, #1
add sp, sp, ip
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021F2238:
ldr r0, [r7, #0xc]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
add r2, sp, #0x1000
mov r4, #0
ldr r1, _021F2648 ; =0x0220DAE4
@@ -29423,7 +29423,7 @@ _021F2238:
add r2, r2, #0x38
mov r3, #0x100
str r4, [r7, #0xc]
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
addeq r0, sp, #0x1000
moveq r1, r4
@@ -29431,14 +29431,14 @@ _021F2238:
streqb r1, [r0, #0x30]
add r0, sp, #0x1000
add r0, r0, #0x38
- bl FUN_021F0208
+ bl MOD04_021F0208
str r0, [r7, #0xc]
ldr r0, [r7, #0xc]
cmp r0, #0
bne _021F22AC
ldr r1, _021F262C ; =0x0220DABC
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F2618 ; =0x0000113C
mov r0, #1
add sp, sp, ip
@@ -29448,7 +29448,7 @@ _021F22AC:
add r0, sp, #0x38
add r2, sp, #0x28
mov r3, #0x10
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [r7, #0x10]
@@ -29481,7 +29481,7 @@ _021F232C:
add r0, sp, #0x38
add r2, sp, #0x28
mov r3, #0x10
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [r7, #0x14]
@@ -29506,12 +29506,12 @@ _021F2380:
str r0, [sp, #0x1c]
beq _021F2608
mov r0, #0xc
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r3, r0
bne _021F23C4
ldr r1, _021F262C ; =0x0220DABC
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F2618 ; =0x0000113C
mov r0, #1
add sp, sp, ip
@@ -29528,7 +29528,7 @@ _021F23C4:
add r1, sp, #0x18
mov r0, sl
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021F2608
ldr ip, _021F2618 ; =0x0000113C
@@ -29539,17 +29539,17 @@ _021F2408:
add r2, sp, #0x38
mov r0, r4
mov r3, #0x1000
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F2454
ldr r2, _021F2620 ; =0x0220DA80
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F2618 ; =0x0000113C
mov r0, #3
add sp, sp, ip
@@ -29563,11 +29563,11 @@ _021F2454:
ldr r2, _021F2620 ; =0x0220DA80
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F2618 ; =0x0000113C
mov r0, #3
add sp, sp, ip
@@ -29579,11 +29579,11 @@ _021F2498:
ldr r2, _021F2620 ; =0x0220DA80
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F2618 ; =0x0000113C
mov r0, #3
add sp, sp, ip
@@ -29605,7 +29605,7 @@ _021F24D4:
add r0, r0, #0x38
add r1, r1, #3
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F2518:
ldr r1, [r6, #0x1c4]
ldr r0, [r6, #0x1c8]
@@ -29614,12 +29614,12 @@ _021F2518:
str r0, [sp, #0x14]
beq _021F2608
mov r0, #0x108
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r5, r0
bne _021F255C
ldr r1, _021F262C ; =0x0220DABC
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F2618 ; =0x0000113C
mov r0, #1
add sp, sp, ip
@@ -29638,7 +29638,7 @@ _021F255C:
mov r0, sl
mov r3, r5
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021F2608
ldr ip, _021F2618 ; =0x0000113C
@@ -29649,17 +29649,17 @@ _021F25A8:
add r2, sp, #0x38
mov r0, r4
mov r3, #0x1000
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F25F4
ldr r2, _021F2620 ; =0x0220DA80
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F2618 ; =0x0000113C
mov r0, #3
add sp, sp, ip
@@ -29669,7 +29669,7 @@ _021F25F4:
mov r0, sl
mov r1, r8
mov r2, #0x67
- bl FUN_021F1A64
+ bl MOD04_021F1A64
_021F2608:
mov r0, #0
ldr ip, _021F2618 ; =0x0000113C
@@ -29694,43 +29694,43 @@ _021F2650: .word 0x0220DAF4
_021F2654: .word 0x0220DAF8
_021F2658: .word 0x0220DAFC
- arm_func_start FUN_021F265C
-FUN_021F265C: ; 0x021F265C
+ arm_func_start MOD04_021F265C
+MOD04_021F265C: ; 0x021F265C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r4, [r6]
ldr r2, _021F26F0 ; =0x0220DB00
mov r5, r1
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F26F4 ; =0x0220DA04
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r4, #0x198]
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F26F8 ; =0x0220DB0C
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r6
add r1, r4, #0x1f4
ldr r2, [r5]
- bl FUN_021F2F64
+ bl MOD04_021F2F64
mov r0, r6
add r1, r4, #0x1f4
ldr r2, _021F26FC ; =0x0220DB1C
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r5, #0x10]
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r6
add r1, r4, #0x1f4
ldr r2, _021F2700 ; =0x0220DA20
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
@@ -29740,8 +29740,8 @@ _021F26F8: .word 0x0220DB0C
_021F26FC: .word 0x0220DB1C
_021F2700: .word 0x0220DA20
- arm_func_start FUN_021F2704
-FUN_021F2704: ; 0x021F2704
+ arm_func_start MOD04_021F2704
+MOD04_021F2704: ; 0x021F2704
stmdb sp!, {r4, lr}
movs r4, r1
beq _021F2728
@@ -29773,8 +29773,8 @@ _021F2758:
str r0, [r4, #0xc]
ldmia sp!, {r4, pc}
- arm_func_start FUN_021F2770
-FUN_021F2770: ; 0x021F2770
+ arm_func_start MOD04_021F2770
+MOD04_021F2770: ; 0x021F2770
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x14
mov r5, r2
@@ -29805,7 +29805,7 @@ FUN_021F2770: ; 0x021F2770
ldr r1, _021F28A4 ; =0x0220DB2C
add r2, sp, #0
mov r3, #0x10
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
addeq sp, sp, #0x14
moveq r0, #3
@@ -29817,7 +29817,7 @@ FUN_021F2770: ; 0x021F2770
ldr r1, _021F28A8 ; =0x0220DB30
add r2, sp, #0
mov r3, #0x10
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
addeq sp, sp, #0x14
moveq r0, #3
@@ -29858,8 +29858,8 @@ _021F28A0: .word 0x0220DB24
_021F28A4: .word 0x0220DB2C
_021F28A8: .word 0x0220DB30
- arm_func_start FUN_021F28AC
-FUN_021F28AC: ; 0x021F28AC
+ arm_func_start MOD04_021F28AC
+MOD04_021F28AC: ; 0x021F28AC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x1c
mov sl, r0
@@ -29895,7 +29895,7 @@ _021F2908:
mov r3, r6
add r2, r5, r2
str r8, [sp, #8]
- bl FUN_021F2E68
+ bl MOD04_021F2E68
cmp r0, #0
addne sp, sp, #0x1c
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -29966,8 +29966,8 @@ _021F2A20: .word 0x0220DB68
_021F2A24: .word 0x000001DF
_021F2A28: .word 0x0220DB74
- arm_func_start FUN_021F2A2C
-FUN_021F2A2C: ; 0x021F2A2C
+ arm_func_start MOD04_021F2A2C
+MOD04_021F2A2C: ; 0x021F2A2C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x14
mov fp, r0
@@ -30029,12 +30029,12 @@ _021F2AF4:
mov r7, r0
add r1, r0, #1
mov r0, sb
- bl FUN_021DD844
+ bl MOD04_021DD844
movs sb, r0
bne _021F2B30
ldr r1, _021F2C48 ; =0x0220DBD4
mov r0, fp
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x14
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -30043,13 +30043,13 @@ _021F2B30:
mov r0, sl
add r1, sb, r8
sub r2, r7, r8
- bl FUN_021EFC78
+ bl MOD04_021EFC78
mov r6, r0
mvn r0, #0
cmp r6, r0
bne _021F2B98
mov r0, sl
- bl FUN_021EFB28
+ bl MOD04_021EFB28
mvn r1, #5
cmp r0, r1
beq _021F2BBC
@@ -30061,7 +30061,7 @@ _021F2B30:
beq _021F2BBC
ldr r1, _021F2C4C ; =0x0220DBE4
mov r0, fp
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x14
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -30074,7 +30074,7 @@ _021F2B98:
ldr r2, [sp, #0x3c]
mov r0, fp
ldr r4, [sp, #0xc]
- bl FUN_021FB3D0
+ bl MOD04_021FB3D0
_021F2BBC:
ldr r0, [sp, #0x10]
strb r0, [sb, r8]
@@ -30092,7 +30092,7 @@ _021F2BE0:
ldr r2, [sp, #0x3c]
mov r0, fp
mov r3, r5
- bl FUN_021FB3D0
+ bl MOD04_021FB3D0
_021F2BFC:
ldr r0, [sp]
ldr r1, [sp, #0x38]
@@ -30119,8 +30119,8 @@ _021F2C4C: .word 0x0220DBE4
_021F2C50: .word 0x0220DC10
_021F2C54: .word 0x0220DC34
- arm_func_start FUN_021F2C58
-FUN_021F2C58: ; 0x021F2C58
+ arm_func_start MOD04_021F2C58
+MOD04_021F2C58: ; 0x021F2C58
stmdb sp!, {r4, r5, r6, lr}
mov r4, r2
mov r6, r0
@@ -30131,11 +30131,11 @@ FUN_021F2C58: ; 0x021F2C58
mov r0, r6
mov r1, r5
mov r2, r4
- bl FUN_021F2C88
+ bl MOD04_021F2C88
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021F2C88
-FUN_021F2C88: ; 0x021F2C88
+ arm_func_start MOD04_021F2C88
+MOD04_021F2C88: ; 0x021F2C88
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x14
mov sb, r1
@@ -30161,7 +30161,7 @@ _021F2CC0:
subs r0, r1, r0
bne _021F2D4C
ldr r0, [sb, #0x38]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
bne _021F2D4C
ldr fp, _021F2D88 ; =0x0220DC70
@@ -30175,7 +30175,7 @@ _021F2D00:
mov r0, sl
mov r3, r7
add r2, r8, r6
- bl FUN_021F2E68
+ bl MOD04_021F2E68
cmp r0, #0
addne sp, sp, #0x14
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -30194,7 +30194,7 @@ _021F2D4C:
mov r3, r7
add r1, sb, #0x28
add r2, r8, r6
- bl FUN_021F2FCC
+ bl MOD04_021F2FCC
cmp r0, #0
addne sp, sp, #0x14
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -30207,8 +30207,8 @@ _021F2D80: .word 0x0220DC4C
_021F2D84: .word 0x0220DB50
_021F2D88: .word 0x0220DC70
- arm_func_start FUN_021F2D8C
-FUN_021F2D8C: ; 0x021F2D8C
+ arm_func_start MOD04_021F2D8C
+MOD04_021F2D8C: ; 0x021F2D8C
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x14
@@ -30228,7 +30228,7 @@ _021F2DC0:
subs r0, r1, r0
bne _021F2E3C
ldr r0, [r4, #0x38]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
bne _021F2E3C
add r0, sp, #0xc
@@ -30241,7 +30241,7 @@ _021F2DC0:
add r2, sp, #0x28
mov r0, r5
mov r3, #1
- bl FUN_021F2E68
+ bl MOD04_021F2E68
cmp r0, #0
addne sp, sp, #0x14
ldmneia sp!, {r4, r5, lr}
@@ -30258,7 +30258,7 @@ _021F2E3C:
ldrsb r2, [sp, #0x28]
mov r0, r5
add r1, r4, #0x28
- bl FUN_021F30D4
+ bl MOD04_021F30D4
add sp, sp, #0x14
ldmia sp!, {r4, r5, lr}
add sp, sp, #0x10
@@ -30268,8 +30268,8 @@ _021F2E5C: .word 0x0220DC4C
_021F2E60: .word 0x0220DB50
_021F2E64: .word 0x0220DC70
- arm_func_start FUN_021F2E68
-FUN_021F2E68: ; 0x021F2E68
+ arm_func_start MOD04_021F2E68
+MOD04_021F2E68: ; 0x021F2E68
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r1
mov r7, r0
@@ -30280,12 +30280,12 @@ FUN_021F2E68: ; 0x021F2E68
ldr r6, [sp, #0x18]
ldr r5, [sp, #0x1c]
ldr r4, [sp, #0x20]
- bl FUN_021EFC24
+ bl MOD04_021EFC24
mvn r1, #0
cmp r0, r1
bne _021F2F20
mov r0, r8
- bl FUN_021EFB28
+ bl MOD04_021EFB28
mvn r1, #5
cmp r0, r1
beq _021F2F10
@@ -30306,11 +30306,11 @@ _021F2EE8:
ldr r2, _021F2F5C ; =0x0220DC74
mov r0, r7
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r7
mov r1, #3
mov r2, #0
- bl FUN_021F3500
+ bl MOD04_021F3500
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_021F2F10:
@@ -30327,7 +30327,7 @@ _021F2F20:
ldr r1, _021F2F60 ; =0x0220DC9C
mov r0, r7
mov r2, r4
- bl FUN_021FB3D0
+ bl MOD04_021FB3D0
mov r0, #0
str r0, [r5]
mov r0, #1
@@ -30339,8 +30339,8 @@ _021F2F54:
_021F2F5C: .word 0x0220DC74
_021F2F60: .word 0x0220DC9C
- arm_func_start FUN_021F2F64
-FUN_021F2F64: ; 0x021F2F64
+ arm_func_start MOD04_021F2F64
+MOD04_021F2F64: ; 0x021F2F64
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x14
mov r4, r1
@@ -30351,14 +30351,14 @@ FUN_021F2F64: ; 0x021F2F64
add r2, sp, #0
mov r0, r5
mov r1, r4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
add sp, sp, #0x14
ldmia sp!, {r4, r5, pc}
.align 2, 0
_021F2F98: .word 0x0220DC48
- arm_func_start FUN_021F2F9C
-FUN_021F2F9C: ; 0x021F2F9C
+ arm_func_start MOD04_021F2F9C
+MOD04_021F2F9C: ; 0x021F2F9C
stmdb sp!, {r4, r5, r6, lr}
mov r4, r2
mov r6, r0
@@ -30369,11 +30369,11 @@ FUN_021F2F9C: ; 0x021F2F9C
mov r0, r6
mov r1, r5
mov r2, r4
- bl FUN_021F2FCC
+ bl MOD04_021F2FCC
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021F2FCC
-FUN_021F2FCC: ; 0x021F2FCC
+ arm_func_start MOD04_021F2FCC
+MOD04_021F2FCC: ; 0x021F2FCC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
movs r8, r2
mov sl, r0
@@ -30417,12 +30417,12 @@ _021F3030:
add r5, r5, r0
mov r0, r4
add r1, r5, #1
- bl FUN_021DD844
+ bl MOD04_021DD844
movs r4, r0
bne _021F308C
ldr r1, _021F30D0 ; =0x0220DBD4
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021F308C:
@@ -30446,8 +30446,8 @@ _021F30C8: .word 0x0220DCD0
_021F30CC: .word 0x0220DB38
_021F30D0: .word 0x0220DBD4
- arm_func_start FUN_021F30D4
-FUN_021F30D4: ; 0x021F30D4
+ arm_func_start MOD04_021F30D4
+MOD04_021F30D4: ; 0x021F30D4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
movs r4, r1
mov r8, r0
@@ -30466,12 +30466,12 @@ _021F30FC:
bne _021F3138
add r5, r5, #0x800
add r1, r5, #1
- bl FUN_021DD844
+ bl MOD04_021DD844
cmp r0, #0
bne _021F3138
ldr r1, _021F316C ; =0x0220DBD4
mov r0, r8
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_021F3138:
@@ -30491,8 +30491,8 @@ _021F3164: .word 0x0220DB38
_021F3168: .word 0x0220DB50
_021F316C: .word 0x0220DBD4
- arm_func_start FUN_021F3170
-FUN_021F3170: ; 0x021F3170
+ arm_func_start MOD04_021F3170
+MOD04_021F3170: ; 0x021F3170
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov sl, r0
movs sb, r1
@@ -30521,7 +30521,7 @@ _021F31C0:
moveq r7, r4
cmp r6, r1
moveq r6, r5
- bl FUN_021F3260
+ bl MOD04_021F3260
b _021F31E4
_021F31E0:
mov r5, r1
@@ -30552,7 +30552,7 @@ _021F3224:
_021F3234:
ldr r5, [r1, #0x14]
mov r0, sl
- bl FUN_021F3260
+ bl MOD04_021F3260
mov r1, r5
cmp r5, #0
bne _021F3234
@@ -30564,8 +30564,8 @@ _021F3258:
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- arm_func_start FUN_021F3260
-FUN_021F3260: ; 0x021F3260
+ arm_func_start MOD04_021F3260
+MOD04_021F3260: ; 0x021F3260
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r7, r1
ldr r1, [r7]
@@ -30597,7 +30597,7 @@ _021F32AC:
bne _021F32E8
ldr r0, [r7, #8]
ldr r0, [r0, #8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r7, #8]
mov r1, #0
str r1, [r0, #8]
@@ -30615,12 +30615,12 @@ _021F32E8:
_021F330C:
ldr r0, [r5, #0x3c]
ldr r0, [r0, r6, lsl #2]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r5, #0x3c]
str r4, [r0, r6, lsl #2]
ldr r0, [r5, #0x40]
ldr r0, [r0, r6, lsl #2]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r5, #0x40]
str r8, [r0, r6, lsl #2]
ldr r0, [r5, #0x38]
@@ -30629,11 +30629,11 @@ _021F330C:
blt _021F330C
_021F3344:
ldr r0, [r5, #0x3c]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r5, #0x3c]
ldr r0, [r5, #0x40]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r5, #0x40]
b _021F342C
@@ -30642,7 +30642,7 @@ _021F3368:
bne _021F3388
ldr r4, [r7, #8]
ldr r0, [r4, #0xc]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0xc]
b _021F342C
@@ -30653,7 +30653,7 @@ _021F3388:
ldr r0, [r4, #0x10]
cmp r0, #0
beq _021F342C
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x10]
b _021F342C
@@ -30664,7 +30664,7 @@ _021F33B0:
ldr r0, [r4, #8]
cmp r0, #0
beq _021F342C
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #8]
b _021F342C
@@ -30680,7 +30680,7 @@ _021F33D8:
_021F33F8:
ldr r0, [r4, #8]
ldr r0, [r0, r5, lsl #2]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r4, #8]
str r6, [r0, r5, lsl #2]
ldr r0, [r4, #4]
@@ -30689,36 +30689,36 @@ _021F33F8:
blt _021F33F8
_021F341C:
ldr r0, [r4, #8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #8]
_021F342C:
ldr r0, [r7, #8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r1, #0
mov r0, r7
str r1, [r7, #8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_021F3448: .word 0x0220DCE0
_021F344C: .word 0x0220DD00
_021F3450: .word 0x0220DD10
- arm_func_start FUN_021F3454
-FUN_021F3454: ; 0x021F3454
+ arm_func_start MOD04_021F3454
+MOD04_021F3454: ; 0x021F3454
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, #0x18
mov r5, r3
ldr r4, [r6]
- bl FUN_021DD860
+ bl MOD04_021DD860
cmp r0, #0
bne _021F3494
ldr r1, _021F34FC ; =0x0220DD24
mov r0, r6
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
mov r0, #1
ldmia sp!, {r4, r5, r6, lr}
add sp, sp, #0x10
@@ -30753,8 +30753,8 @@ _021F3494:
.align 2, 0
_021F34FC: .word 0x0220DD24
- arm_func_start FUN_021F3500
-FUN_021F3500: ; 0x021F3500
+ arm_func_start MOD04_021F3500
+MOD04_021F3500: ; 0x021F3500
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x14
mov r4, r0
@@ -30798,7 +30798,7 @@ _021F3574:
addeq sp, sp, #0x14
ldmeqia sp!, {r4, r5, r6, r7, pc}
mov r0, #0x10
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r3, r0
strne r7, [r3]
strne r6, [r3, #0xc]
@@ -30812,7 +30812,7 @@ _021F3574:
str r0, [sp, #4]
mov r0, r4
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
@@ -30821,8 +30821,8 @@ _021F35E8: .word 0x0220DD00
_021F35EC: .word 0x0220DD48
_021F35F0: .word 0x0220DD60
- arm_func_start FUN_021F35F4
-FUN_021F35F4: ; 0x021F35F4
+ arm_func_start MOD04_021F35F4
+MOD04_021F35F4: ; 0x021F35F4
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x10
mov r5, r0
@@ -30839,15 +30839,15 @@ FUN_021F35F4: ; 0x021F35F4
bne _021F3658
ldr r2, _021F37A8 ; =0x0220DDD0
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r4, #0x198]
mov r0, r5
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F37AC ; =0x0220DDE4
mov r0, r5
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
_021F3658:
mov r1, #1
ldr r0, _021F37B0 ; =0x0220DDEC
@@ -30857,15 +30857,15 @@ _021F3658:
add r3, sp, #8
mov r0, r5
add r2, r4, #0x1f4
- bl FUN_021F28AC
+ bl MOD04_021F28AC
ldr r0, [r4, #0x1d4]
mvn r1, #0
cmp r0, r1
beq _021F36A4
mov r1, #2
- bl FUN_021EFD80
+ bl MOD04_021EFD80
ldr r0, [r4, #0x1d4]
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
mvn r0, #0
str r0, [r4, #0x1d4]
_021F36A4:
@@ -30874,9 +30874,9 @@ _021F36A4:
cmp r0, r1
beq _021F36CC
mov r1, #2
- bl FUN_021EFD80
+ bl MOD04_021EFD80
ldr r0, [r4, #0x204]
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
mvn r0, #0
str r0, [r4, #0x204]
_021F36CC:
@@ -30887,23 +30887,23 @@ _021F36CC:
str r0, [r4, #0x1a0]
_021F36E0:
ldr r0, [r4, #0x1dc]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x1dc]
ldr r0, [r4, #0x1ec]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x1ec]
ldr r0, [r4, #0x1f4]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x1f4]
ldr r0, [r4, #0x440]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x440]
ldr r0, [r4, #0x450]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x450]
ldr r1, [r4, #0x424]
@@ -30911,7 +30911,7 @@ _021F36E0:
beq _021F3750
_021F373C:
mov r0, r5
- bl FUN_021F6C84
+ bl MOD04_021F6C84
ldr r1, [r4, #0x424]
cmp r1, #0
bne _021F373C
@@ -30925,18 +30925,18 @@ _021F3764:
mov r1, r6
ldr r6, [r6, #0x3c]
mov r0, r5
- bl FUN_021F79E0
+ bl MOD04_021F79E0
cmp r6, #0
bne _021F3764
_021F377C:
mov r6, #0
str r6, [r4, #0x434]
- ldr r4, _021F37B4 ; =FUN_021F37B8
+ ldr r4, _021F37B4 ; =MOD04_021F37B8
_021F3788:
mov r0, r5
mov r1, r4
mov r2, r6
- bl FUN_021F848C
+ bl MOD04_021F848C
cmp r0, #0
beq _021F3788
add sp, sp, #0x10
@@ -30945,10 +30945,10 @@ _021F3788:
_021F37A8: .word 0x0220DDD0
_021F37AC: .word 0x0220DDE4
_021F37B0: .word 0x0220DDEC
-_021F37B4: .word FUN_021F37B8
+_021F37B4: .word MOD04_021F37B8
- arm_func_start FUN_021F37B8
-FUN_021F37B8: ; 0x021F37B8
+ arm_func_start MOD04_021F37B8
+MOD04_021F37B8: ; 0x021F37B8
stmdb sp!, {r4, r5, r6, lr}
mov r5, r1
ldr r1, [r5, #8]
@@ -30960,27 +30960,27 @@ FUN_021F37B8: ; 0x021F37B8
cmp r0, #0
bne _021F381C
ldr r0, [r1, #8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r5, #8]
mov r1, #0
str r1, [r0, #8]
ldr r0, [r5, #8]
ldr r0, [r0, #0xc]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r5, #8]
mov r1, #0
str r1, [r0, #0xc]
ldr r0, [r5, #8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r5, #8]
_021F381C:
ldr r0, [r5, #0x10]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r5, #0x10]
ldr r0, [r5, #0x18]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r5, #0x18]
str r0, [r5, #0x14]
@@ -30996,22 +30996,22 @@ _021F381C:
_021F3864:
mov r0, r6
mov r1, r5
- bl FUN_021F85A0
+ bl MOD04_021F85A0
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
_021F3878:
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021F3880
-FUN_021F3880: ; 0x021F3880
+ arm_func_start MOD04_021F3880
+MOD04_021F3880: ; 0x021F3880
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
ldr r4, [r5]
add r2, sp, #0
ldr r1, [r4, #0x1d4]
- bl FUN_021FB0FC
+ bl MOD04_021FB0FC
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {r4, r5, pc}
@@ -31021,11 +31021,11 @@ FUN_021F3880: ; 0x021F3880
ldr r1, _021F3920 ; =0x00000107
ldr r2, _021F3924 ; =0x0220DDF0
mov r0, r5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r5
mov r1, #4
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #4
mov r0, #4
ldmia sp!, {r4, r5, pc}
@@ -31054,8 +31054,8 @@ _021F3928: .word 0x0220DE18
_021F392C: .word 0x0220DE30
_021F3930: .word 0x000002EF
- arm_func_start FUN_021F3934
-FUN_021F3934: ; 0x021F3934
+ arm_func_start MOD04_021F3934
+MOD04_021F3934: ; 0x021F3934
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x2a0
mov r6, r2
@@ -31064,7 +31064,7 @@ FUN_021F3934: ; 0x021F3934
mov r1, r6
mov r2, #0
ldr r5, [r8]
- bl FUN_021FB2F8
+ bl MOD04_021FB2F8
cmp r0, #0
beq _021F3A34
ldr r2, [r5, #0x418]
@@ -31075,7 +31075,7 @@ FUN_021F3934: ; 0x021F3934
cmp r1, #0
beq _021F3994
mov r0, r8
- bl FUN_021F85B4
+ bl MOD04_021F85B4
mov r0, #0
str r0, [r5, #0x19c]
str r0, [r5, #0x1a0]
@@ -31088,7 +31088,7 @@ _021F3994:
add r2, sp, #0x4e
mov r0, r6
mov r3, #0x200
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
beq _021F39C8
add r0, sp, #0x4e
@@ -31103,11 +31103,11 @@ _021F39C8:
ldr r1, [r5, #0x418]
mov r0, r8
mov r2, r5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #4
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x2a0
mov r0, #4
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31115,11 +31115,11 @@ _021F3A08:
ldr r1, [r5, #0x418]
mov r0, r8
mov r2, r5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #4
mov r2, #0
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x2a0
mov r0, #4
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31143,11 +31143,11 @@ _021F3A58:
ldr r2, _021F3FD4 ; =0x0220DE58
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x2a0
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31156,17 +31156,17 @@ _021F3A9C:
mov r0, r6
mov r2, r4
mov r3, #0x80
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F3AE4
ldr r2, _021F3FD4 ; =0x0220DE58
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x2a0
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31176,7 +31176,7 @@ _021F3AE4:
beq _021F3B14
mov r0, r8
mov r1, r4
- bl FUN_021F401C
+ bl MOD04_021F401C
cmp r0, #0
addne sp, sp, #0x2a0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31186,7 +31186,7 @@ _021F3AE4:
_021F3B14:
mov r0, r8
mov r1, r4
- bl FUN_021F42B8
+ bl MOD04_021F42B8
cmp r0, #0
addne sp, sp, #0x2a0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31203,11 +31203,11 @@ _021F3B38:
ldr r2, _021F3FD4 ; =0x0220DE58
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x2a0
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31216,17 +31216,17 @@ _021F3B7C:
add r2, sp, #0x4e
mov r0, r6
mov r3, #0x200
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F3BC4
ldr r2, _021F3FE4 ; =0x0220DEA8
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x2a0
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31238,17 +31238,17 @@ _021F3BC4:
add r2, sp, #0x4e
mov r0, r6
mov r3, #0x200
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F3C18
ldr r2, _021F3FE4 ; =0x0220DEA8
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x2a0
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31258,7 +31258,7 @@ _021F3C18:
str r0, [r5, #0x1a0]
mov r0, r8
mov r1, r4
- bl FUN_021F42B8
+ bl MOD04_021F42B8
cmp r0, #0
addne sp, sp, #0x2a0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31275,11 +31275,11 @@ _021F3C48:
ldr r2, _021F3FD4 ; =0x0220DE58
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x2a0
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31288,17 +31288,17 @@ _021F3C8C:
add r2, sp, #0x4e
mov r0, r6
mov r3, #0x200
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F3CD4
ldr r2, _021F3FE4 ; =0x0220DEA8
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x2a0
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31310,17 +31310,17 @@ _021F3CD4:
add r2, sp, #0x4e
mov r0, r6
mov r3, #0x200
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F3D28
ldr r2, _021F3FE4 ; =0x0220DEA8
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x2a0
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31332,17 +31332,17 @@ _021F3D28:
add r2, sp, #0x4e
mov r0, r6
mov r3, #0x200
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F3D7C
ldr r2, _021F3FE4 ; =0x0220DEA8
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x2a0
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31354,7 +31354,7 @@ _021F3D7C:
add r2, sp, #0x39
mov r0, r6
mov r3, #0x15
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
ldr r2, _021F3FF8 ; =0x00000474
cmp r0, #0
moveq r0, #0
@@ -31363,7 +31363,7 @@ _021F3D7C:
mov r0, r6
add r2, r5, r2
mov r3, #0x19
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streqb r0, [r5, #0x474]
@@ -31401,22 +31401,22 @@ _021F3E14:
mov r1, r0
add r0, sp, #0x4e
add r2, sp, #0x18
- bl FUN_021EF794
+ bl MOD04_021EF794
ldr r1, _021F4010 ; =0x0220DF5C
mov r0, r6
add r2, sp, #0x4e
mov r3, #0x200
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F3E9C
ldr r2, _021F3FE4 ; =0x0220DEA8
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x2a0
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31430,11 +31430,11 @@ _021F3E9C:
ldr r2, _021F4014 ; =0x0220DF64
mov r0, r8
mov r1, #0x108
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x2a0
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31444,7 +31444,7 @@ _021F3EE0:
beq _021F3F08
ldr r1, [r5, #0x1a0]
mov r0, r8
- bl FUN_021F8624
+ bl MOD04_021F8624
ldr r1, [r5, #0x1a0]
str r1, [r0]
ldr r1, [r5, #0x19c]
@@ -31459,12 +31459,12 @@ _021F3F08:
str r0, [sp, #0x14]
beq _021F3FA8
mov r0, #0x20
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
bne _021F3F50
ldr r1, _021F4018 ; =0x0220DF84
mov r0, r8
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x2a0
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31479,7 +31479,7 @@ _021F3F50:
add r1, sp, #0x39
add r0, r4, #8
mov r2, #0x15
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
str r7, [sp]
mov r0, #0
str r0, [sp, #4]
@@ -31487,14 +31487,14 @@ _021F3F50:
mov r0, r8
mov r3, r4
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
addne sp, sp, #0x2a0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
_021F3FA8:
mov r0, r8
mov r1, r7
- bl FUN_021F6C84
+ bl MOD04_021F6C84
_021F3FB4:
mov r0, #0
add sp, sp, #0x2a0
@@ -31524,8 +31524,8 @@ _021F4010: .word 0x0220DF5C
_021F4014: .word 0x0220DF64
_021F4018: .word 0x0220DF84
- arm_func_start FUN_021F401C
-FUN_021F401C: ; 0x021F401C
+ arm_func_start MOD04_021F401C
+MOD04_021F401C: ; 0x021F401C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xec
mov fp, r0
@@ -31536,7 +31536,7 @@ FUN_021F401C: ; 0x021F401C
bl strlen
mov sb, r0
ldr r0, _021F427C ; =0x79707367
- bl FUN_021EFA2C
+ bl MOD04_021EFA2C
cmp sb, #0
mov sl, #0
bls _021F4090
@@ -31546,7 +31546,7 @@ FUN_021F401C: ; 0x021F401C
_021F4060:
mov r0, r7
mov r1, r6
- bl FUN_021EF9FC
+ bl MOD04_021EF9FC
add r1, r4, sl
add r1, r1, #0x100
add sl, sl, #1
@@ -31563,68 +31563,68 @@ _021F4090:
mov r2, sb
mov r3, #1
strb r6, [r0, sl]
- bl FUN_021EF820
+ bl MOD04_021EF820
ldr r2, _021F4280 ; =0x0220DF94
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F4284 ; =0x0220DFA0
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, fp
add r1, r4, #0x1f4
add r2, r4, #0x144
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F4288 ; =0x0220DFA8
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, fp
add r1, r4, #0x1f4
add r2, r4, #0x110
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F428C ; =0x0220DFB0
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, fp
add r1, r4, #0x1f4
add r2, sp, #0x1f
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F4290 ; =0x0220DFC0
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r4, #0x46c]
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F4294 ; =0x0220DFCC
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F4298 ; =0x02210EA0
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F429C ; =0x0220DFD8
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r4, #0x470]
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F42A0 ; =0x0220DEF8
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F42A4 ; =0x0000012F
mov r0, fp
add r1, r4, #0x1f4
add r2, r4, r2
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
add r0, r5, #0x200
ldrsb r0, [r0, #0xc2]
cmp r0, #0
@@ -31634,7 +31634,7 @@ _021F4090:
bl strlen
mov sl, r0
ldr r0, _021F427C ; =0x79707367
- bl FUN_021EFA2C
+ bl MOD04_021EFA2C
cmp sl, #0
mov r8, r6
bls _021F4210
@@ -31644,7 +31644,7 @@ _021F4090:
_021F41E0:
mov r0, r7
mov r1, r6
- bl FUN_021EF9FC
+ bl MOD04_021EF9FC
add r1, r5, r8
add r1, r1, #0x200
add r8, r8, #1
@@ -31661,24 +31661,24 @@ _021F4210:
mov r2, sl
mov r3, #1
strb r5, [r0, r8]
- bl FUN_021EF820
+ bl MOD04_021EF820
ldr r2, _021F42AC ; =0x0220DFE8
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
add r2, sp, #0x8d
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
_021F424C:
ldr r2, _021F42B0 ; =0x0220DFF4
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F42B4 ; =0x0220DDE4
mov r0, fp
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, #0
add sp, sp, #0xec
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -31700,8 +31700,8 @@ _021F42AC: .word 0x0220DFE8
_021F42B0: .word 0x0220DFF4
_021F42B4: .word 0x0220DDE4
- arm_func_start FUN_021F42B8
-FUN_021F42B8: ; 0x021F42B8
+ arm_func_start MOD04_021F42B8
+MOD04_021F42B8: ; 0x021F42B8
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x28c
mov r5, r1
@@ -31709,7 +31709,7 @@ FUN_021F42B8: ; 0x021F42B8
add r0, r5, #0x80
mov r1, #0x20
ldr r4, [r6]
- bl FUN_021F4C48
+ bl MOD04_021F4C48
add r0, r5, #0x100
ldrsb r0, [r0, #0xc2]
cmp r0, #0
@@ -31722,7 +31722,7 @@ FUN_021F42B8: ; 0x021F42B8
mov r1, r0
mov r0, r7
add r2, r5, #0xa1
- bl FUN_021EF794
+ bl MOD04_021EF794
ldrsb r0, [r5, #0xc2]
cmp r0, #0
addne r0, r5, #0xc2
@@ -31757,7 +31757,7 @@ _021F4354:
mov r1, r0
add r0, sp, #0x35
add r2, sp, #0x14
- bl FUN_021EF794
+ bl MOD04_021EF794
ldr r0, [r4, #0x100]
cmp r0, #0
beq _021F43D0
@@ -31765,7 +31765,7 @@ _021F4354:
mov r0, r6
add r1, r4, #0x110
add r2, r4, #0x144
- bl FUN_021F84F4
+ bl MOD04_021F84F4
ldr r0, [sp, #0x10]
cmp r0, #0
ldrne r0, [r0, #4]
@@ -31777,26 +31777,26 @@ _021F43D0:
ldr r2, _021F462C ; =0x0220DFFC
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F4630 ; =0x0220DE88
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r6
add r1, r4, #0x1f4
add r2, r5, #0x80
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldrsb r0, [r5, #0xc2]
cmp r0, #0
beq _021F4430
ldr r2, _021F4634 ; =0x0220E004
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r6
add r1, r4, #0x1f4
add r2, r5, #0xc2
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
b _021F44A8
_021F4430:
add r0, r4, #0x100
@@ -31806,30 +31806,30 @@ _021F4430:
ldr r2, _021F4638 ; =0x0220DEF8
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F461C ; =0x0000012F
mov r0, r6
add r1, r4, #0x1f4
add r2, r4, r2
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
b _021F44A8
_021F4468:
ldr r2, _021F463C ; =0x0220E010
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r6
add r1, r4, #0x1f4
add r2, r4, #0x110
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F4640 ; =0x0220E018
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r6
add r1, r4, #0x1f4
add r2, r4, #0x144
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
_021F44A8:
ldr r0, [r4, #0x19c]
cmp r0, #0
@@ -31837,11 +31837,11 @@ _021F44A8:
ldr r2, _021F4644 ; =0x0220DE9C
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r4, #0x19c]
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
_021F44D4:
ldr r0, [r4, #0x1a0]
cmp r0, #0
@@ -31849,32 +31849,32 @@ _021F44D4:
ldr r2, _021F4648 ; =0x0220DED8
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r4, #0x1a0]
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
_021F4500:
ldr r2, _021F464C ; =0x0220E01C
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
add r2, sp, #0x14
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r0, [r4, #0x10c]
cmp r0, #1
bne _021F453C
ldr r2, _021F4650 ; =0x0220E028
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
_021F453C:
ldr r2, _021F4654 ; =0x0220E034
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r1, [r4, #0x208]
mov r0, r6
mov r1, r1, lsl #0x10
@@ -31889,39 +31889,39 @@ _021F453C:
mov r2, r1, lsl #0x10
add r1, r4, #0x1f4
mov r2, r2, asr #0x10
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F4658 ; =0x0220DFC0
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r4, #0x46c]
mov r0, r6
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
mov r0, r6
add r1, r4, #0x1f4
ldr r2, _021F465C ; =0x0220DFCC
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r6
add r1, r4, #0x1f4
ldr r2, _021F4660 ; =0x02210EA0
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r6
add r1, r4, #0x1f4
ldr r2, _021F4664 ; =0x0220DFD8
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r6
add r1, r4, #0x1f4
ldr r2, [r4, #0x470]
- bl FUN_021F2F64
+ bl MOD04_021F2F64
mov r0, r6
add r1, r4, #0x1f4
ldr r2, _021F4668 ; =0x0220DFF4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r6
add r1, r4, #0x1f4
ldr r2, _021F466C ; =0x0220DDE4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, #0
add sp, sp, #0x28c
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -31950,8 +31950,8 @@ _021F4664: .word 0x0220DFD8
_021F4668: .word 0x0220DFF4
_021F466C: .word 0x0220DDE4
- arm_func_start FUN_021F4670
-FUN_021F4670: ; 0x021F4670
+ arm_func_start MOD04_021F4670
+MOD04_021F4670: ; 0x021F4670
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r8, r0
@@ -31962,7 +31962,7 @@ FUN_021F4670: ; 0x021F4670
mov r5, r3
cmp r1, #4
bne _021F46A8
- bl FUN_021F14C0
+ bl MOD04_021F14C0
cmp r0, #0
addne sp, sp, #0x10
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31972,7 +31972,7 @@ _021F46A8:
beq _021F46CC
ldr r1, _021F48AC ; =0x0220E03C
mov r0, r8
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x10
mov r0, #2
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -31992,7 +31992,7 @@ _021F46EC:
_021F46F8:
ldr r1, _021F48B0 ; =0x0220E050
mov r0, r8
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x10
mov r0, #2
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -32002,30 +32002,30 @@ _021F4710:
add r0, r4, #0x110
mov r2, #0x1f
str r3, [r4, #0x10c]
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r0, _021F48B4 ; =0x0000012F
mov r1, r6
add r0, r4, r0
mov r2, #0x15
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
mov r1, r5
add r0, r4, #0x144
mov r2, #0x33
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r0, _021F48B8 ; =0x00000177
ldr r1, [sp, #0x28]
add r0, r4, r0
mov r2, #0x1f
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
add r0, r4, #0x144
- bl FUN_021F01C4
+ bl MOD04_021F01C4
mov r0, #0x308
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
bne _021F4790
ldr r1, _021F48BC ; =0x0220DF84
mov r0, r8
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x10
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -32045,12 +32045,12 @@ _021F4790:
beq _021F47E4
add r0, r4, #0xc2
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r0, _021F48C0 ; =0x000001C2
ldr r1, [sp, #0x30]
add r0, r4, r0
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F47E4:
ldr r1, [sp, #0x34]
cmp r1, #0
@@ -32058,7 +32058,7 @@ _021F47E4:
ldr r0, _021F48C4 ; =0x000002C2
mov r2, #0x41
add r0, r4, r0
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F4800:
ldr r1, [sp, #0x40]
ldr r0, [sp, #0x44]
@@ -32070,23 +32070,23 @@ _021F4800:
mov r2, r4
mov r1, #0
str r5, [sp, #8]
- bl FUN_021F6D8C
+ bl MOD04_021F6D8C
cmp r0, #0
addne sp, sp, #0x10
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
ldr r1, [sp, #0xc]
mov r0, r8
- bl FUN_021F48C8
+ bl MOD04_021F48C8
movs r4, r0
beq _021F4878
ldr r1, [sp, #0xc]
mov r0, r8
str r4, [r1, #0x1c]
ldr r1, [sp, #0xc]
- bl FUN_021F6E44
+ bl MOD04_021F6E44
mov r0, r8
mov r1, #0
- bl FUN_021F35F4
+ bl MOD04_021F35F4
add sp, sp, #0x10
mov r0, r4
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -32097,7 +32097,7 @@ _021F4878:
beq _021F48A0
ldr r1, [r1, #0x18]
mov r0, r8
- bl FUN_021F0FD4
+ bl MOD04_021F0FD4
cmp r0, #0
addne sp, sp, #0x10
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
@@ -32114,8 +32114,8 @@ _021F48BC: .word 0x0220DF84
_021F48C0: .word 0x000001C2
_021F48C4: .word 0x000002C2
- arm_func_start FUN_021F48C8
-FUN_021F48C8: ; 0x021F48C8
+ arm_func_start MOD04_021F48C8
+MOD04_021F48C8: ; 0x021F48C8
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x10
mov r6, r0
@@ -32127,7 +32127,7 @@ FUN_021F48C8: ; 0x021F48C8
mov r0, #2
mov r1, #1
mov r2, #0
- bl FUN_021EFDB8
+ bl MOD04_021EFDB8
str r0, [r4, #0x204]
ldr r0, [r4, #0x204]
mvn r1, #0
@@ -32136,27 +32136,27 @@ FUN_021F48C8: ; 0x021F48C8
ldr r2, _021F4C1C ; =0x0220E064
mov r0, r6
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x10
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
_021F4938:
mov r1, #0
- bl FUN_021F017C
+ bl MOD04_021F017C
cmp r0, #0
bne _021F4974
ldr r2, _021F4C20 ; =0x0220E08C
mov r0, r6
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x10
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
@@ -32169,36 +32169,36 @@ _021F4974:
strb r0, [sp, #1]
ldr r0, [r4, #0x204]
mov r2, #8
- bl FUN_021EFD28
+ bl MOD04_021EFD28
mvn r1, #0
cmp r0, r1
bne _021F49D0
ldr r2, _021F4C24 ; =0x0220E0C0
mov r0, r6
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x10
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
_021F49D0:
ldr r0, [r4, #0x204]
mov r1, #5
- bl FUN_021EFCC8
+ bl MOD04_021EFCC8
mvn r1, #0
cmp r0, r1
bne _021F4A14
ldr r2, _021F4C28 ; =0x0220E0E8
mov r0, r6
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x10
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
@@ -32208,18 +32208,18 @@ _021F4A14:
ldr r0, [r4, #0x204]
add r1, sp, #0
add r2, sp, #8
- bl FUN_021EFB5C
+ bl MOD04_021EFB5C
mvn r1, #0
cmp r0, r1
bne _021F4A64
ldr r2, _021F4C2C ; =0x0220E114
mov r0, r6
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x10
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
@@ -32236,7 +32236,7 @@ _021F4A80:
mov r0, #2
mov r1, #1
mov r2, #0
- bl FUN_021EFDB8
+ bl MOD04_021EFDB8
str r0, [r4, #0x1d4]
ldr r0, [r4, #0x1d4]
mvn r1, #0
@@ -32245,27 +32245,27 @@ _021F4A80:
ldr r2, _021F4C1C ; =0x0220E064
mov r0, r6
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x10
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
_021F4AD0:
mov r1, #0
- bl FUN_021F017C
+ bl MOD04_021F017C
cmp r0, #0
bne _021F4B0C
ldr r2, _021F4C20 ; =0x0220E08C
mov r0, r6
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x10
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
@@ -32277,11 +32277,11 @@ _021F4B0C:
ldr r2, _021F4C34 ; =0x0220E144
mov r0, r6
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x10
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
@@ -32308,12 +32308,12 @@ _021F4B88:
strh r0, [sp, #2]
ldr r0, [r4, #0x1d4]
mov r2, #8
- bl FUN_021EFCE4
+ bl MOD04_021EFCE4
mvn r1, #0
cmp r0, r1
bne _021F4C04
ldr r0, [r4, #0x1d4]
- bl FUN_021EFB28
+ bl MOD04_021EFB28
mvn r1, #5
cmp r0, r1
beq _021F4C04
@@ -32326,11 +32326,11 @@ _021F4B88:
ldr r2, _021F4C44 ; =0x0220E198
mov r0, r6
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x10
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
@@ -32354,8 +32354,8 @@ _021F4C3C: .word 0x0220DE30
_021F4C40: .word 0x0000CC74
_021F4C44: .word 0x0220E198
- arm_func_start FUN_021F4C48
-FUN_021F4C48: ; 0x021F4C48
+ arm_func_start MOD04_021F4C48
+MOD04_021F4C48: ; 0x021F4C48
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
mov r8, r1
@@ -32389,62 +32389,62 @@ _021F4CB0: .word 0x0220E1C0
_021F4CB4: .word 0x08421085
_021F4CB8: .word 0x0000003E
- arm_func_start FUN_021F4CBC
-FUN_021F4CBC: ; 0x021F4CBC
+ arm_func_start MOD04_021F4CBC
+MOD04_021F4CBC: ; 0x021F4CBC
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0xc]
cmp r0, #0
ldmeqia sp!, {r4, pc}
ldr r0, [r0]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r4, #0xc]
mov r1, #0
str r1, [r0]
ldr r0, [r4, #0xc]
ldr r0, [r0, #4]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r4, #0xc]
mov r1, #0
str r1, [r0, #4]
ldr r0, [r4, #0xc]
ldr r0, [r0, #8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r4, #0xc]
mov r1, #0
str r1, [r0, #8]
ldr r0, [r4, #0xc]
ldr r0, [r0, #0xc]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r4, #0xc]
mov r1, #0
str r1, [r0, #0xc]
ldr r0, [r4, #0xc]
ldr r0, [r0, #0x10]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r4, #0xc]
mov r1, #0
str r1, [r0, #0x10]
ldr r0, [r4, #0xc]
ldr r0, [r0, #0x14]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r4, #0xc]
mov r1, #0
str r1, [r0, #0x14]
ldr r0, [r4, #0xc]
ldr r0, [r0, #0xc8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r4, #0xc]
mov r1, #0
str r1, [r0, #0xc8]
ldr r0, [r4, #0xc]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0xc]
ldmia sp!, {r4, pc}
- arm_func_start FUN_021F4D88
-FUN_021F4D88: ; 0x021F4D88
+ arm_func_start MOD04_021F4D88
+MOD04_021F4D88: ; 0x021F4D88
stmdb sp!, {r4, r5, r6, lr}
ldr r0, [r0]
mov r5, r1
@@ -32454,9 +32454,9 @@ FUN_021F4D88: ; 0x021F4D88
moveq r0, #1
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r5
- bl FUN_021F4CBC
+ bl MOD04_021F4CBC
mov r0, #0xf0
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [r5, #0xc]
ldr r6, [r5, #0xc]
cmp r6, #0
@@ -32469,31 +32469,31 @@ _021F4DD0:
subs ip, ip, #1
bne _021F4DD0
ldr r0, [r4]
- bl FUN_021F0208
+ bl MOD04_021F0208
ldr r1, [r5, #0xc]
str r0, [r1]
ldr r0, [r4, #4]
- bl FUN_021F0208
+ bl MOD04_021F0208
ldr r1, [r5, #0xc]
str r0, [r1, #4]
ldr r0, [r4, #8]
- bl FUN_021F0208
+ bl MOD04_021F0208
ldr r1, [r5, #0xc]
str r0, [r1, #8]
ldr r0, [r4, #0xc]
- bl FUN_021F0208
+ bl MOD04_021F0208
ldr r1, [r5, #0xc]
str r0, [r1, #0xc]
ldr r0, [r4, #0x10]
- bl FUN_021F0208
+ bl MOD04_021F0208
ldr r1, [r5, #0xc]
str r0, [r1, #0x10]
ldr r0, [r4, #0x14]
- bl FUN_021F0208
+ bl MOD04_021F0208
ldr r1, [r5, #0xc]
str r0, [r1, #0x14]
ldr r0, [r4, #0xc8]
- bl FUN_021F0208
+ bl MOD04_021F0208
ldr r1, [r5, #0xc]
str r0, [r1, #0xc8]
_021F4E50:
@@ -32503,8 +32503,8 @@ _021F4E50:
moveq r0, #0
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021F4E64
-FUN_021F4E64: ; 0x021F4E64
+ arm_func_start MOD04_021F4E64
+MOD04_021F4E64: ; 0x021F4E64
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x20
mov r8, r0
@@ -32526,7 +32526,7 @@ FUN_021F4E64: ; 0x021F4E64
add r2, sp, #0xc
mov r0, r8
mov r1, r7
- bl FUN_021F85E8
+ bl MOD04_021F85E8
cmp r0, #0
beq _021F4F94
ldr r0, [sp, #0xc]
@@ -32534,12 +32534,12 @@ FUN_021F4E64: ; 0x021F4E64
cmp r0, #0
beq _021F4F94
mov r0, #0x204
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
bne _021F4EFC
ldr r1, _021F5014 ; =0x0220E200
mov r0, r8
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x20
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -32547,7 +32547,7 @@ _021F4EFC:
ldr r0, [sp, #0xc]
mov r1, r4
ldr r0, [r0, #0xc]
- bl FUN_021F66D4
+ bl MOD04_021F66D4
mov r2, #0
str r2, [r4]
str r7, [r4, #4]
@@ -32561,7 +32561,7 @@ _021F4EFC:
mov r0, r8
mov r1, #2
str r7, [sp, #8]
- bl FUN_021F6D8C
+ bl MOD04_021F6D8C
cmp r0, #0
addne sp, sp, #0x20
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
@@ -32574,13 +32574,13 @@ _021F4EFC:
mov r0, r8
mov r3, r4
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
addne sp, sp, #0x20
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
ldr r1, [sp, #0x10]
mov r0, r8
- bl FUN_021F6C84
+ bl MOD04_021F6C84
b _021F4FE8
_021F4F94:
str r6, [sp]
@@ -32591,7 +32591,7 @@ _021F4F94:
mov r1, #2
mov r2, #0
str r4, [sp, #8]
- bl FUN_021F6D8C
+ bl MOD04_021F6D8C
cmp r0, #0
addne sp, sp, #0x20
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
@@ -32600,7 +32600,7 @@ _021F4F94:
ldr r5, [r1, #0x18]
mov r1, r7
mov r2, r5
- bl FUN_021F5018
+ bl MOD04_021F5018
cmp r0, #0
addne sp, sp, #0x20
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
@@ -32609,7 +32609,7 @@ _021F4FE8:
beq _021F5008
mov r0, r8
mov r1, r5
- bl FUN_021F0FD4
+ bl MOD04_021F0FD4
cmp r0, #0
addne sp, sp, #0x20
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
@@ -32620,8 +32620,8 @@ _021F5008:
.align 2, 0
_021F5014: .word 0x0220E200
- arm_func_start FUN_021F5018
-FUN_021F5018: ; 0x021F5018
+ arm_func_start MOD04_021F5018
+MOD04_021F5018: ; 0x021F5018
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r7, r0
@@ -32630,31 +32630,31 @@ FUN_021F5018: ; 0x021F5018
mov r6, r1
ldr r2, _021F50A8 ; =0x0220E210
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r4, #0x198]
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F50AC ; =0x0220E228
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r2, r6
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
mov r0, r7
add r1, r4, #0x1f4
ldr r2, _021F50B0 ; =0x0220E234
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r2, r5
mov r0, r7
add r1, r4, #0x1f4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
mov r0, r7
add r1, r4, #0x1f4
ldr r2, _021F50B4 ; =0x0220E23C
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, #0
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -32664,8 +32664,8 @@ _021F50AC: .word 0x0220E228
_021F50B0: .word 0x0220E234
_021F50B4: .word 0x0220E23C
- arm_func_start FUN_021F50B8
-FUN_021F50B8: ; 0x021F50B8
+ arm_func_start MOD04_021F50B8
+MOD04_021F50B8: ; 0x021F50B8
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x100
mov r6, r0
@@ -32673,7 +32673,7 @@ FUN_021F50B8: ; 0x021F50B8
ldr r4, [r6]
bne _021F50E4
ldr r1, _021F5810 ; =0x0220E264
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x100
mov r0, #2
ldmia sp!, {r4, r5, r6, pc}
@@ -32719,7 +32719,7 @@ _021F5170:
cmp r1, #0
bne _021F5190
ldr r1, _021F5810 ; =0x0220E264
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x100
mov r0, #2
ldmia sp!, {r4, r5, r6, pc}
@@ -32727,15 +32727,15 @@ _021F5190:
add r0, sp, #0
mov r1, r5
mov r2, #0x1f
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
add r1, sp, #0
add r0, r4, #0x110
mov r2, #0x1f
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5814 ; =0x0220E274
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32745,7 +32745,7 @@ _021F51D0:
cmp r1, #0
bne _021F51F0
ldr r1, _021F5810 ; =0x0220E264
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x100
mov r0, #2
ldmia sp!, {r4, r5, r6, pc}
@@ -32753,16 +32753,16 @@ _021F51F0:
add r0, sp, #0
mov r1, r5
mov r2, #0x15
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r0, _021F5818 ; =0x0000012F
add r1, sp, #0
add r0, r4, r0
mov r2, #0x15
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F581C ; =0x0220E27C
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32772,7 +32772,7 @@ _021F5234:
cmp r1, #0
bne _021F5254
ldr r1, _021F5810 ; =0x0220E264
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x100
mov r0, #2
ldmia sp!, {r4, r5, r6, pc}
@@ -32780,17 +32780,17 @@ _021F5254:
add r0, sp, #0
mov r1, r5
mov r2, #0x33
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
add r0, sp, #0
- bl FUN_021F01C4
+ bl MOD04_021F01C4
add r1, sp, #0
add r0, r4, #0x144
mov r2, #0x33
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5820 ; =0x0220E28C
add r2, sp, #0
mov r0, r6
- bl FUN_021F5D78
+ bl MOD04_021F5D78
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32800,7 +32800,7 @@ _021F529C:
cmp r1, #0
bne _021F52BC
ldr r1, _021F5810 ; =0x0220E264
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x100
mov r0, #2
ldmia sp!, {r4, r5, r6, pc}
@@ -32808,16 +32808,16 @@ _021F52BC:
add r0, sp, #0
mov r1, r5
mov r2, #0x1f
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r0, _021F5824 ; =0x00000177
add r1, sp, #0
add r0, r4, r0
mov r2, #0x1f
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5828 ; =0x0220E294
add r2, sp, #0
mov r0, r6
- bl FUN_021F5D78
+ bl MOD04_021F5D78
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32826,11 +32826,11 @@ _021F5300:
add r0, sp, #0
mov r1, r5
mov r2, #0x1f
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F582C ; =0x0220E2A0
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32839,11 +32839,11 @@ _021F5330:
add r0, sp, #0
mov r1, r5
mov r2, #0x1f
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5830 ; =0x0220E2AC
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32852,11 +32852,11 @@ _021F5360:
add r0, sp, #0
mov r1, r5
mov r2, #0x4c
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5834 ; =0x0220E2B8
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32865,11 +32865,11 @@ _021F5390:
add r0, sp, #0
mov r1, r5
mov r2, #0xb
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5838 ; =0x0220E2C4
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32881,7 +32881,7 @@ _021F53C0:
beq _021F53E8
ldr r1, _021F583C ; =0x0220E2D0
mov r0, r6
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x100
mov r0, #2
ldmia sp!, {r4, r5, r6, pc}
@@ -32889,11 +32889,11 @@ _021F53E8:
add r0, sp, #0
mov r1, r5
mov r2, #3
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5840 ; =0x0220E2E8
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32939,7 +32939,7 @@ _021F549C:
ldr r1, _021F5854 ; =0x0220E304
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32948,11 +32948,11 @@ _021F54BC:
add r0, sp, #0
mov r1, r5
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5858 ; =0x0220E30C
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32963,7 +32963,7 @@ _021F54EC:
mov r2, r0
ldr r1, _021F585C ; =0x0000070D
mov r0, r6
- bl FUN_021F58A0
+ bl MOD04_021F58A0
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32974,7 +32974,7 @@ _021F5514:
mov r2, r0
ldr r1, _021F5860 ; =0x0000070E
mov r0, r6
- bl FUN_021F58A0
+ bl MOD04_021F58A0
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32983,11 +32983,11 @@ _021F553C:
add r0, sp, #0
mov r1, r5
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5864 ; =0x0220E318
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -32998,7 +32998,7 @@ _021F556C:
mov r2, r0
mov r0, r6
mov r1, #0x710
- bl FUN_021F58A0
+ bl MOD04_021F58A0
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33007,11 +33007,11 @@ _021F5594:
add r0, sp, #0
mov r1, r5
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5868 ; =0x0220E32C
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33022,7 +33022,7 @@ _021F55C4:
mov r2, r0
ldr r1, _021F586C ; =0x00000712
mov r0, r6
- bl FUN_021F58A0
+ bl MOD04_021F58A0
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33033,7 +33033,7 @@ _021F55EC:
mov r2, r0
ldr r1, _021F5870 ; =0x00000714
mov r0, r6
- bl FUN_021F58A0
+ bl MOD04_021F58A0
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33044,7 +33044,7 @@ _021F5614:
mov r2, r0
ldr r1, _021F5874 ; =0x00000715
mov r0, r6
- bl FUN_021F58A0
+ bl MOD04_021F58A0
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33053,11 +33053,11 @@ _021F563C:
add r0, sp, #0
mov r1, r5
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5878 ; =0x0220E340
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33066,11 +33066,11 @@ _021F566C:
add r0, sp, #0
mov r1, r5
mov r2, #0x33
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F587C ; =0x0220E34C
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33079,11 +33079,11 @@ _021F569C:
add r0, sp, #0
mov r1, r5
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5880 ; =0x0220E354
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33092,11 +33092,11 @@ _021F56CC:
add r0, sp, #0
mov r1, r5
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5884 ; =0x0220E35C
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33105,11 +33105,11 @@ _021F56FC:
add r0, sp, #0
mov r1, r5
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5888 ; =0x0220E364
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33118,11 +33118,11 @@ _021F572C:
add r0, sp, #0
mov r1, r5
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F588C ; =0x0220E36C
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33131,11 +33131,11 @@ _021F575C:
add r0, sp, #0
mov r1, r5
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5890 ; =0x0220E374
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33144,11 +33144,11 @@ _021F578C:
add r0, sp, #0
mov r1, r5
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5894 ; =0x0220E37C
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33157,11 +33157,11 @@ _021F57BC:
add r0, sp, #0
mov r1, r5
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r1, _021F5898 ; =0x0220E384
add r2, sp, #0
mov r0, r6
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5804
add sp, sp, #0x100
@@ -33169,7 +33169,7 @@ _021F57BC:
_021F57EC:
ldr r1, _021F589C ; =0x0220E248
mov r0, r6
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x100
mov r0, #2
ldmia sp!, {r4, r5, r6, pc}
@@ -33215,8 +33215,8 @@ _021F5894: .word 0x0220E37C
_021F5898: .word 0x0220E384
_021F589C: .word 0x0220E248
- arm_func_start FUN_021F58A0
-FUN_021F58A0: ; 0x021F58A0
+ arm_func_start MOD04_021F58A0
+MOD04_021F58A0: ; 0x021F58A0
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r3, _021F5D08 ; =0x00000706
@@ -33255,7 +33255,7 @@ _021F5924:
cmp r2, #0
bge _021F5940
ldr r1, _021F5D0C ; =0x0220E38C
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x10
mov r0, #2
ldmia sp!, {r4, pc}
@@ -33266,7 +33266,7 @@ _021F5940:
ldr r1, _021F5D14 ; =0x0220E2C4
add r2, sp, #0
mov r0, r4
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33284,7 +33284,7 @@ _021F596C:
_021F5990:
ldr r1, _021F5D20 ; =0x0220E304
ldr r2, _021F5D24 ; =0x0220E2F8
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33292,7 +33292,7 @@ _021F5990:
_021F59AC:
ldr r1, _021F5D20 ; =0x0220E304
ldr r2, _021F5D28 ; =0x0220E2FC
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33300,14 +33300,14 @@ _021F59AC:
_021F59C8:
ldr r1, _021F5D20 ; =0x0220E304
ldr r2, _021F5D2C ; =0x0220E300
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
ldmia sp!, {r4, pc}
_021F59E4:
ldr r1, _021F5D30 ; =0x0220E3A0
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x10
mov r0, #2
ldmia sp!, {r4, pc}
@@ -33318,7 +33318,7 @@ _021F59F8:
ldr r1, _021F5D34 ; =0x0220E30C
add r2, sp, #0
mov r0, r4
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33330,7 +33330,7 @@ _021F5A24:
ldr r1, _021F5D38 ; =0x0220E3B0
add r2, sp, #0
mov r0, r4
- bl FUN_021F5D78
+ bl MOD04_021F5D78
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33342,7 +33342,7 @@ _021F5A50:
ldr r1, _021F5D3C ; =0x0220E3C0
add r2, sp, #0
mov r0, r4
- bl FUN_021F5D78
+ bl MOD04_021F5D78
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33357,7 +33357,7 @@ _021F5A7C:
ldr r1, _021F5D40 ; =0x0220E3CC
add r2, sp, #0
mov r0, r4
- bl FUN_021F5D78
+ bl MOD04_021F5D78
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33372,7 +33372,7 @@ _021F5AB4:
ldr r1, _021F5D44 ; =0x0220E3D8
add r2, sp, #0
mov r0, r4
- bl FUN_021F5D78
+ bl MOD04_021F5D78
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33387,7 +33387,7 @@ _021F5AEC:
ldr r1, _021F5D48 ; =0x0220E3E8
add r2, sp, #0
mov r0, r4
- bl FUN_021F5D78
+ bl MOD04_021F5D78
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33399,7 +33399,7 @@ _021F5B24:
ldr r1, _021F5D4C ; =0x0220E3F8
add r2, sp, #0
mov r0, r4
- bl FUN_021F5D78
+ bl MOD04_021F5D78
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33411,7 +33411,7 @@ _021F5B50:
ldr r1, _021F5D50 ; =0x0220E408
add r2, sp, #0
mov r0, r4
- bl FUN_021F5D78
+ bl MOD04_021F5D78
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33425,7 +33425,7 @@ _021F5B7C:
ldr r1, _021F5D54 ; =0x0220E41C
add r2, sp, #0
mov r0, r4
- bl FUN_021F5D78
+ bl MOD04_021F5D78
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33437,7 +33437,7 @@ _021F5BB0:
ldr r1, _021F5D58 ; =0x0220E354
add r2, sp, #0
mov r0, r4
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33449,7 +33449,7 @@ _021F5BDC:
ldr r1, _021F5D5C ; =0x0220E35C
add r2, sp, #0
mov r0, r4
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33461,7 +33461,7 @@ _021F5C08:
ldr r1, _021F5D60 ; =0x0220E364
add r2, sp, #0
mov r0, r4
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33473,7 +33473,7 @@ _021F5C34:
ldr r1, _021F5D64 ; =0x0220E36C
add r2, sp, #0
mov r0, r4
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33485,7 +33485,7 @@ _021F5C60:
ldr r1, _021F5D68 ; =0x0220E374
add r2, sp, #0
mov r0, r4
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33497,7 +33497,7 @@ _021F5C8C:
ldr r1, _021F5D6C ; =0x0220E37C
add r2, sp, #0
mov r0, r4
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33509,7 +33509,7 @@ _021F5CB8:
ldr r1, _021F5D70 ; =0x0220E384
add r2, sp, #0
mov r0, r4
- bl FUN_021F5DB8
+ bl MOD04_021F5DB8
cmp r0, #0
beq _021F5CFC
add sp, sp, #0x10
@@ -33517,7 +33517,7 @@ _021F5CB8:
_021F5CE4:
ldr r1, _021F5D74 ; =0x0220E248
mov r0, r4
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x10
mov r0, #2
ldmia sp!, {r4, pc}
@@ -33555,46 +33555,46 @@ _021F5D6C: .word 0x0220E37C
_021F5D70: .word 0x0220E384
_021F5D74: .word 0x0220E248
- arm_func_start FUN_021F5D78
-FUN_021F5D78: ; 0x021F5D78
+ arm_func_start MOD04_021F5D78
+MOD04_021F5D78: ; 0x021F5D78
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r4, [r6]
mov r5, r2
mov r2, r1
add r1, r4, #0x450
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
cmp r0, #0
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r6
mov r2, r5
add r1, r4, #0x450
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
cmp r0, #0
moveq r0, #0
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021F5DB8
-FUN_021F5DB8: ; 0x021F5DB8
+ arm_func_start MOD04_021F5DB8
+MOD04_021F5DB8: ; 0x021F5DB8
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r4, [r6]
mov r5, r2
mov r2, r1
add r1, r4, #0x440
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
cmp r0, #0
ldmneia sp!, {r4, r5, r6, pc}
mov r0, r6
mov r2, r5
add r1, r4, #0x440
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
cmp r0, #0
moveq r0, #0
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021F5DF8
-FUN_021F5DF8: ; 0x021F5DF8
+ arm_func_start MOD04_021F5DF8
+MOD04_021F5DF8: ; 0x021F5DF8
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r4, [r6]
@@ -33603,19 +33603,19 @@ FUN_021F5DF8: ; 0x021F5DF8
cmp r2, #0
ble _021F5E54
ldr r2, _021F5EB0 ; =0x0220E42C
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r4, #0x198]
mov r0, r6
mov r1, r5
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, [r4, #0x440]
mov r0, r6
mov r1, r5
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F5EB4 ; =0x0220E23C
mov r0, r6
mov r1, r5
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, #0
str r0, [r4, #0x448]
_021F5E54:
@@ -33625,19 +33625,19 @@ _021F5E54:
ldr r2, _021F5EB8 ; =0x0220E444
mov r0, r6
mov r1, r5
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r4, #0x198]
mov r0, r6
mov r1, r5
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, [r4, #0x450]
mov r0, r6
mov r1, r5
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F5EB4 ; =0x0220E23C
mov r0, r6
mov r1, r5
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, #0
str r0, [r4, #0x458]
_021F5EA8:
@@ -33648,8 +33648,8 @@ _021F5EB0: .word 0x0220E42C
_021F5EB4: .word 0x0220E23C
_021F5EB8: .word 0x0220E444
- arm_func_start FUN_021F5EBC
-FUN_021F5EBC: ; 0x021F5EBC
+ arm_func_start MOD04_021F5EBC
+MOD04_021F5EBC: ; 0x021F5EBC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x26c
mov r4, r2
@@ -33658,7 +33658,7 @@ FUN_021F5EBC: ; 0x021F5EBC
mov r1, r4
mov r2, #1
ldr r8, [sl]
- bl FUN_021FB2F8
+ bl MOD04_021FB2F8
cmp r0, #0
addne sp, sp, #0x26c
movne r0, #4
@@ -33672,11 +33672,11 @@ FUN_021F5EBC: ; 0x021F5EBC
ldr r2, _021F664C ; =0x0220E460
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x26c
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -33685,17 +33685,17 @@ _021F5F34:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F5F7C
ldr r2, _021F664C ; =0x0220E460
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x26c
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -33714,7 +33714,7 @@ _021F5FA4:
add r2, sp, #8
mov r0, sl
mov r1, sb
- bl FUN_021F85E8
+ bl MOD04_021F85E8
mov r0, #0
add r6, sp, #0x12c
mov r1, r0
@@ -33744,7 +33744,7 @@ _021F5FCC:
mov r3, #0x1f
str r2, [sp, #0x12c]
str r5, [sp, #0x1f4]
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
ldreq r0, [sp, #0x12c]
moveq r1, #0
@@ -33753,7 +33753,7 @@ _021F5FCC:
ldr r1, _021F6664 ; =0x0220E27C
mov r0, r4
mov r3, #0x15
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
ldreq r0, [sp, #0x130]
moveq r1, #0
@@ -33762,7 +33762,7 @@ _021F5FCC:
ldr r1, _021F6668 ; =0x0220E28C
mov r0, r4
mov r3, #0x33
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
ldreq r0, [sp, #0x134]
moveq r1, #0
@@ -33771,7 +33771,7 @@ _021F5FCC:
ldr r1, _021F666C ; =0x0220E2A0
mov r0, r4
mov r3, #0x1f
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
ldreq r0, [sp, #0x138]
moveq r1, #0
@@ -33780,7 +33780,7 @@ _021F5FCC:
ldr r1, _021F6670 ; =0x0220E2AC
mov r0, r4
mov r3, #0x1f
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
ldreq r0, [sp, #0x13c]
moveq r1, #0
@@ -33789,7 +33789,7 @@ _021F5FCC:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
mvneq r0, #0
streq r0, [sp, #0x144]
@@ -33802,7 +33802,7 @@ _021F60F8:
ldr r1, _021F6678 ; =0x0220E2B8
mov r0, r4
mov r3, #0x4c
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
ldreq r0, [sp, #0x140]
moveq r1, #0
@@ -33811,7 +33811,7 @@ _021F60F8:
add r2, sp, #0x148
mov r0, r4
mov r3, #0xb
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
add r2, sp, #0x100
@@ -33820,7 +33820,7 @@ _021F60F8:
add r2, r2, #0x53
mov r0, r4
mov r3, #3
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streqb r0, [sp, #0x153]
@@ -33828,7 +33828,7 @@ _021F60F8:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [sp, #0x158]
@@ -33842,7 +33842,7 @@ _021F6194:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [sp, #0x15c]
@@ -33856,7 +33856,7 @@ _021F61C8:
add r2, sp, #0x160
mov r0, r4
mov r3, #0x80
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streqb r0, [sp, #0x160]
@@ -33864,7 +33864,7 @@ _021F61C8:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [sp, #0x1e0]
@@ -33879,7 +33879,7 @@ _021F61C8:
add r3, sp, #0x1e4
mov r0, sl
str r5, [sp]
- bl FUN_021F68D8
+ bl MOD04_021F68D8
cmp r0, #0
addne sp, sp, #0x26c
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -33888,7 +33888,7 @@ _021F6244:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
ldreq r0, _021F6698 ; =0x00000502
streq r0, [sp, #0x1ec]
@@ -33908,7 +33908,7 @@ _021F6290:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
mvneq r0, #0
streq r0, [sp, #0x1f0]
@@ -33921,7 +33921,7 @@ _021F62C0:
ldr r1, _021F66A4 ; =0x0220E34C
mov r0, r4
mov r3, #0x33
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
ldreq r0, [sp, #0x1f4]
moveq r1, #0
@@ -33930,7 +33930,7 @@ _021F62C0:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [sp, #0x1f8]
@@ -33943,7 +33943,7 @@ _021F6314:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [sp, #0x1fc]
@@ -33956,7 +33956,7 @@ _021F6344:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [sp, #0x200]
@@ -33969,7 +33969,7 @@ _021F6374:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [sp, #0x204]
@@ -33982,7 +33982,7 @@ _021F63A4:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [sp, #0x208]
@@ -33995,7 +33995,7 @@ _021F63D4:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [sp, #0x20c]
@@ -34008,7 +34008,7 @@ _021F6404:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [sp, #0x210]
@@ -34021,7 +34021,7 @@ _021F6434:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [sp, #0x214]
@@ -34034,7 +34034,7 @@ _021F6464:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streq r0, [sp, #0x218]
@@ -34047,17 +34047,17 @@ _021F6494:
add r2, sp, #0x14
mov r0, r4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F64DC
ldr r2, _021F664C ; =0x0220E460
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x26c
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -34080,7 +34080,7 @@ _021F64F4:
bne _021F6528
mov r0, sl
mov r1, sb
- bl FUN_021F8624
+ bl MOD04_021F8624
str r0, [sp, #8]
_021F6528:
mov r6, r4
@@ -34098,19 +34098,19 @@ _021F653C:
beq _021F6564
mov r0, sl
mov r1, sb
- bl FUN_021F8624
+ bl MOD04_021F8624
str r0, [sp, #8]
_021F6564:
cmp r6, #0
beq _021F6594
ldr r0, [sp, #8]
ldr r0, [r0, #0x18]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r1, [sp, #8]
mov r2, #0
add r0, sp, #0x14
str r2, [r1, #0x18]
- bl FUN_021F0208
+ bl MOD04_021F0208
ldr r1, [sp, #8]
str r0, [r1, #0x18]
_021F6594:
@@ -34120,7 +34120,7 @@ _021F6594:
ldr r1, [sp, #8]
add r2, sp, #0x12c
mov r0, sl
- bl FUN_021F4D88
+ bl MOD04_021F4D88
_021F65B0:
ldr r1, [fp, #0xc]
ldr r0, [fp, #0x10]
@@ -34129,19 +34129,19 @@ _021F65B0:
str r0, [sp, #0x10]
beq _021F6630
mov r0, #0x204
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
bne _021F65F0
ldr r1, _021F66D0 ; =0x0220E200
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x26c
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021F65F0:
add r0, sp, #0x12c
mov r1, r4
- bl FUN_021F66D4
+ bl MOD04_021F66D4
mov r0, #0
str r0, [r4]
str sb, [r4, #4]
@@ -34151,14 +34151,14 @@ _021F65F0:
mov r0, sl
mov r3, r4
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
addne sp, sp, #0x26c
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021F6630:
mov r0, sl
mov r1, fp
- bl FUN_021F6C84
+ bl MOD04_021F6C84
mov r0, #0
add sp, sp, #0x26c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -34199,8 +34199,8 @@ _021F66C8: .word 0x0220E4D4
_021F66CC: .word 0x0220E4DC
_021F66D0: .word 0x0220E200
- arm_func_start FUN_021F66D4
-FUN_021F66D4: ; 0x021F66D4
+ arm_func_start MOD04_021F66D4
+MOD04_021F66D4: ; 0x021F66D4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -34212,7 +34212,7 @@ FUN_021F66D4: ; 0x021F66D4
beq _021F6704
add r0, r4, #8
mov r2, #0x1f
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F6704:
ldr r1, [r5, #4]
cmp r1, #0
@@ -34221,7 +34221,7 @@ _021F6704:
beq _021F6724
add r0, r4, #0x27
mov r2, #0x15
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F6724:
ldr r1, [r5, #8]
cmp r1, #0
@@ -34230,7 +34230,7 @@ _021F6724:
beq _021F6744
add r0, r4, #0x3c
mov r2, #0x33
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F6744:
ldr r1, [r5, #0xc]
cmp r1, #0
@@ -34239,7 +34239,7 @@ _021F6744:
beq _021F6764
add r0, r4, #0x6f
mov r2, #0x1f
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F6764:
ldr r1, [r5, #0x10]
cmp r1, #0
@@ -34248,7 +34248,7 @@ _021F6764:
beq _021F6784
add r0, r4, #0x8e
mov r2, #0x1f
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F6784:
ldr r1, [r5, #0x14]
cmp r1, #0
@@ -34257,19 +34257,19 @@ _021F6784:
beq _021F67A4
add r0, r4, #0xad
mov r2, #0x4c
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F67A4:
ldr r3, [r5, #0x18]
add r0, r4, #0x100
add r1, r5, #0x1c
mov r2, #0xb
str r3, [r4, #0xfc]
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r0, _021F68D4 ; =0x0000010B
add r1, r5, #0x27
add r0, r4, r0
mov r2, #3
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r0, [r5, #0x2c]
adds r1, r5, #0x34
str r0, [r4, #0x110]
@@ -34280,7 +34280,7 @@ _021F67A4:
beq _021F67FC
add r0, r4, #0x118
mov r2, #0x80
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F67FC:
ldr r0, [r5, #0xb4]
str r0, [r4, #0x198]
@@ -34299,7 +34299,7 @@ _021F67FC:
beq _021F6844
add r0, r4, #0x1ac
mov r2, #0x33
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F6844:
ldr r0, [r5, #0x18]
str r0, [r4, #0xfc]
@@ -34340,8 +34340,8 @@ _021F6844:
.align 2, 0
_021F68D4: .word 0x0000010B
- arm_func_start FUN_021F68D8
-FUN_021F68D8: ; 0x021F68D8
+ arm_func_start MOD04_021F68D8
+MOD04_021F68D8: ; 0x021F68D8
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
ldr ip, _021F6978 ; =0x0000FFFF
@@ -34356,7 +34356,7 @@ FUN_021F68D8: ; 0x021F68D8
mov r1, r6
mov r2, r5
mov r8, r3
- bl FUN_021F6988
+ bl MOD04_021F6988
cmp r0, #0
bne _021F6930
ldr r0, _021F697C ; =0x0220E4E4
@@ -34368,7 +34368,7 @@ _021F6930:
mov r0, r7
mov r1, r6
mov r2, r5
- bl FUN_021F6988
+ bl MOD04_021F6988
cmp r0, #0
strne r7, [sb]
ldrne r0, [sp, #0x20]
@@ -34379,7 +34379,7 @@ _021F6930:
ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
ldr r1, _021F6984 ; =0x0220E4FC
mov r0, r4
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
mov r0, #2
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
@@ -34389,8 +34389,8 @@ _021F697C: .word 0x0220E4E4
_021F6980: .word 0x0220E4A0
_021F6984: .word 0x0220E4FC
- arm_func_start FUN_021F6988
-FUN_021F6988: ; 0x021F6988
+ arm_func_start MOD04_021F6988
+MOD04_021F6988: ; 0x021F6988
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
cmp r0, #0
@@ -34521,8 +34521,8 @@ _021F6B44: .word 0x00000190
_021F6B48: .word 0x0000076C
_021F6B4C: .word 0x0000081F
- arm_func_start FUN_021F6B50
-FUN_021F6B50: ; 0x021F6B50
+ arm_func_start MOD04_021F6B50
+MOD04_021F6B50: ; 0x021F6B50
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r1
@@ -34538,25 +34538,25 @@ _021F6B70: ; jump table
b _021F6BB4 ; case 3
b _021F6BA8 ; case 4
_021F6B84:
- bl FUN_021F3934
+ bl MOD04_021F3934
mov r4, r0
b _021F6BD4
_021F6B90:
- bl FUN_021F8710
+ bl MOD04_021F8710
mov r4, r0
b _021F6BD4
_021F6B9C:
- bl FUN_021F5EBC
+ bl MOD04_021F5EBC
mov r4, r0
b _021F6BD4
_021F6BA8:
- bl FUN_021FADE8
+ bl MOD04_021FADE8
mov r4, r0
b _021F6BD4
_021F6BB4:
ldr r1, _021F6BE8 ; =0x0220E50C
mov r2, r3
- bl FUN_021FB3D0
+ bl MOD04_021FB3D0
ldr r0, _021F6BEC ; =0x0220E554
ldr r1, _021F6BF0 ; =0x0220E558
ldr r3, _021F6BF4 ; =0x00000146
@@ -34574,8 +34574,8 @@ _021F6BEC: .word 0x0220E554
_021F6BF0: .word 0x0220E558
_021F6BF4: .word 0x00000146
- arm_func_start FUN_021F6BF8
-FUN_021F6BF8: ; 0x021F6BF8
+ arm_func_start MOD04_021F6BF8
+MOD04_021F6BF8: ; 0x021F6BF8
ldr r0, [r0]
ldr r1, [r0, #0x424]
cmp r1, #0
@@ -34596,8 +34596,8 @@ _021F6C30:
mov r0, #0
bx lr
- arm_func_start FUN_021F6C38
-FUN_021F6C38: ; 0x021F6C38
+ arm_func_start MOD04_021F6C38
+MOD04_021F6C38: ; 0x021F6C38
ldr r0, [r0]
ldr r3, [r0, #0x424]
cmp r3, #0
@@ -34621,8 +34621,8 @@ _021F6C70:
mov r0, #0
bx lr
- arm_func_start FUN_021F6C84
-FUN_021F6C84: ; 0x021F6C84
+ arm_func_start MOD04_021F6C84
+MOD04_021F6C84: ; 0x021F6C84
stmdb sp!, {lr}
sub sp, sp, #4
ldr ip, [r0]
@@ -34639,7 +34639,7 @@ _021F6CA4:
streq r2, [ip, #0x424]
ldrne r2, [r1, #0x20]
strne r2, [r3, #0x20]
- bl FUN_021F6CE4
+ bl MOD04_021F6CE4
add sp, sp, #4
ldmfd sp!, {pc}
_021F6CCC:
@@ -34650,8 +34650,8 @@ _021F6CCC:
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021F6CE4
-FUN_021F6CE4: ; 0x021F6CE4
+ arm_func_start MOD04_021F6CE4
+MOD04_021F6CE4: ; 0x021F6CE4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r1
@@ -34674,32 +34674,32 @@ FUN_021F6CE4: ; 0x021F6CE4
_021F6D30:
ldr r0, [r4, #4]
mov r1, #2
- bl FUN_021EFD80
+ bl MOD04_021EFD80
ldr r0, [r4, #4]
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
ldr r0, [r4, #0x18]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x18]
ldr r0, [r4, #8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #8]
_021F6D64:
ldr r0, [r5, #4]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r1, #0
mov r0, r5
str r1, [r5, #4]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
_021F6D84: .word 0x0220E568
_021F6D88: .word 0x0220E558
- arm_func_start FUN_021F6D8C
-FUN_021F6D8C: ; 0x021F6D8C
+ arm_func_start MOD04_021F6D8C
+MOD04_021F6D8C: ; 0x021F6D8C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
mov r0, #0x24
@@ -34707,12 +34707,12 @@ FUN_021F6D8C: ; 0x021F6D8C
mov r6, r2
mov r5, r3
ldr r4, [r8]
- bl FUN_021DD860
+ bl MOD04_021DD860
cmp r0, #0
bne _021F6DC8
ldr r1, _021F6E40 ; =0x0220E588
mov r0, r8
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_021F6DC8:
@@ -34750,8 +34750,8 @@ _021F6E10:
.align 2, 0
_021F6E40: .word 0x0220E588
- arm_func_start FUN_021F6E44
-FUN_021F6E44: ; 0x021F6E44
+ arm_func_start MOD04_021F6E44
+MOD04_021F6E44: ; 0x021F6E44
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x14
movs r7, r0
@@ -34799,12 +34799,12 @@ _021F6ED4: ; jump table
b _021F70DC ; case 4
_021F6EE8:
mov r0, #0x20
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
bne _021F6F10
ldr r1, _021F7178 ; =0x0220E588
mov r0, r7
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x14
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -34828,19 +34828,19 @@ _021F6F10:
add r1, sp, #8
mov r0, r7
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021F715C
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, pc}
_021F6F70:
mov r0, #8
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r3, r0
bne _021F6F98
ldr r1, _021F7178 ; =0x0220E588
mov r0, r7
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x14
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -34861,19 +34861,19 @@ _021F6F98:
str r2, [sp, #4]
mov r0, r7
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021F715C
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, pc}
_021F6FEC:
mov r0, #0x204
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
bne _021F7014
ldr r1, _021F7178 ; =0x0220E588
mov r0, r7
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x14
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -34890,19 +34890,19 @@ _021F7014:
mov r0, r7
mov r3, r4
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021F715C
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, pc}
_021F7058:
mov r0, #0x10
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r3, r0
bne _021F7080
ldr r1, _021F7178 ; =0x0220E588
mov r0, r7
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x14
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -34926,19 +34926,19 @@ _021F708C:
add r1, sp, #8
mov r0, r7
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021F715C
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, pc}
_021F70DC:
mov r0, #4
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r3, r0
bne _021F7104
ldr r1, _021F7178 ; =0x0220E588
mov r0, r7
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x14
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -34955,7 +34955,7 @@ _021F7104:
str r2, [sp, #4]
mov r0, r7
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021F715C
add sp, sp, #0x14
@@ -34979,8 +34979,8 @@ _021F7178: .word 0x0220E588
_021F717C: .word 0x00000201
_021F7180: .word 0x0220E554
- arm_func_start FUN_021F7184
-FUN_021F7184: ; 0x021F7184
+ arm_func_start MOD04_021F7184
+MOD04_021F7184: ; 0x021F7184
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x24
movs r6, r1
@@ -35010,7 +35010,7 @@ _021F71D4:
add r2, sp, #0
mov r0, r7
mov r1, r6
- bl FUN_021F2C58
+ bl MOD04_021F2C58
cmp r0, #0
addne sp, sp, #0x24
ldmneia sp!, {r4, r5, r6, r7, pc}
@@ -35018,19 +35018,19 @@ _021F71D4:
mov r1, r6
mov r2, r5
mov r3, r4
- bl FUN_021F2C88
+ bl MOD04_021F2C88
cmp r0, #0
addne sp, sp, #0x24
ldmneia sp!, {r4, r5, r6, r7, pc}
mov r0, r7
mov r1, r6
mov r2, #0
- bl FUN_021F2D8C
+ bl MOD04_021F2D8C
cmp r0, #0
addne sp, sp, #0x24
ldmneia sp!, {r4, r5, r6, r7, pc}
mov r0, #0
- bl FUN_021EFAC8
+ bl MOD04_021EFAC8
add r0, r0, #0x12c
str r0, [r6, #0x10]
mov r0, #0
@@ -35043,8 +35043,8 @@ _021F7260: .word 0x00000389
_021F7264: .word 0x0220E5F0
_021F7268: .word 0x0220E5F4
- arm_func_start FUN_021F726C
-FUN_021F726C: ; 0x021F726C
+ arm_func_start MOD04_021F726C
+MOD04_021F726C: ; 0x021F726C
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x4c
mov sb, r0
@@ -35071,7 +35071,7 @@ _021F72A8:
add r2, sp, #8
mov r0, sb
mov r1, r8
- bl FUN_021F2C58
+ bl MOD04_021F2C58
add sp, sp, #0x4c
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
@@ -35080,8 +35080,8 @@ _021F72E0: .word 0x0220E5E4
_021F72E4: .word 0x00000376
_021F72E8: .word 0x0220E610
- arm_func_start FUN_021F72EC
-FUN_021F72EC: ; 0x021F72EC
+ arm_func_start MOD04_021F72EC
+MOD04_021F72EC: ; 0x021F72EC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x18
movs r7, r1
@@ -35117,35 +35117,35 @@ _021F7338:
ldr r2, _021F746C ; =0x0220E634
mov r0, r8
str r6, [sp, #0x10]
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
cmp r0, #0
addne sp, sp, #0x18
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
add r1, sp, #0
mov r0, r8
mov r2, r6
- bl FUN_021F2F64
+ bl MOD04_021F2F64
cmp r0, #0
addne sp, sp, #0x18
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
ldr r2, _021F7470 ; =0x0220E638
add r1, sp, #0
mov r0, r8
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
cmp r0, #0
addne sp, sp, #0x18
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
add r1, sp, #0
mov r0, r8
mov r2, r4
- bl FUN_021F2F64
+ bl MOD04_021F2F64
cmp r0, #0
addne sp, sp, #0x18
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
ldr r2, _021F7474 ; =0x0220E640
add r1, sp, #0
mov r0, r8
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
cmp r0, #0
addne sp, sp, #0x18
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
@@ -35155,22 +35155,22 @@ _021F7338:
mov r2, r5
mov r3, r4
str ip, [sp, #0x14]
- bl FUN_021F2FCC
+ bl MOD04_021F2FCC
cmp r0, #0
addne sp, sp, #0x18
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
add r1, sp, #0
mov r0, r8
mov r2, #0
- bl FUN_021F30D4
+ bl MOD04_021F30D4
cmp r0, #0
addne sp, sp, #0x18
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
ldr r0, [r7, #0x38]
add r1, sp, #0
- bl FUN_021EEFA8
+ bl MOD04_021EEFA8
mov r0, #0
- bl FUN_021EFAC8
+ bl MOD04_021EFAC8
add r0, r0, #0x12c
str r0, [r7, #0x10]
mov r0, #0
@@ -35185,20 +35185,20 @@ _021F746C: .word 0x0220E634
_021F7470: .word 0x0220E638
_021F7474: .word 0x0220E640
- arm_func_start FUN_021F7478
-FUN_021F7478: ; 0x021F7478
+ arm_func_start MOD04_021F7478
+MOD04_021F7478: ; 0x021F7478
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
mov r4, r1
ldr r1, [r4, #0xc]
add r2, sp, #8
mov r5, r0
- bl FUN_021F85E8
+ bl MOD04_021F85E8
cmp r0, #0
bne _021F74B4
ldr r1, _021F7600 ; =0x0220E648
mov r0, r5
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0xc
mov r0, #3
ldmia sp!, {r4, r5, pc}
@@ -35206,7 +35206,7 @@ _021F74B4:
mov r0, #2
mov r1, #1
mov r2, #0
- bl FUN_021EFDB8
+ bl MOD04_021EFDB8
str r0, [r4, #8]
ldr r0, [r4, #8]
mvn r1, #0
@@ -35215,33 +35215,33 @@ _021F74B4:
ldr r2, _021F7604 ; =0x0220E664
mov r0, r5
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r5
mov r1, #3
mov r2, #0
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0xc
mov r0, #3
ldmia sp!, {r4, r5, pc}
_021F7504:
mov r1, #0
- bl FUN_021F017C
+ bl MOD04_021F017C
cmp r0, #0
bne _021F7540
ldr r2, _021F7608 ; =0x0220E68C
mov r0, r5
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r5
mov r1, #3
mov r2, #0
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0xc
mov r0, #3
ldmia sp!, {r4, r5, pc}
_021F7540:
ldr r0, [r4, #8]
- bl FUN_021F7854
+ bl MOD04_021F7854
add r1, sp, #0
mov r0, #0
str r0, [r1]
@@ -35257,12 +35257,12 @@ _021F7540:
ldr r0, [r0, #0x14]
strh r0, [sp, #2]
ldr r0, [r4, #8]
- bl FUN_021EFCE4
+ bl MOD04_021EFCE4
mvn r1, #0
cmp r0, r1
bne _021F75EC
ldr r0, [r4, #8]
- bl FUN_021EFB28
+ bl MOD04_021EFB28
mvn r1, #5
cmp r0, r1
beq _021F75EC
@@ -35275,11 +35275,11 @@ _021F7540:
ldr r2, _021F760C ; =0x0220E6C0
mov r0, r5
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r5
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0xc
mov r0, #3
ldmia sp!, {r4, r5, pc}
@@ -35295,8 +35295,8 @@ _021F7604: .word 0x0220E664
_021F7608: .word 0x0220E68C
_021F760C: .word 0x0220E6C0
- arm_func_start FUN_021F7610
-FUN_021F7610: ; 0x021F7610
+ arm_func_start MOD04_021F7610
+MOD04_021F7610: ; 0x021F7610
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x14
mov r2, #0
@@ -35307,7 +35307,7 @@ FUN_021F7610: ; 0x021F7610
mov r1, #2
mov r5, r0
str r2, [sp, #8]
- bl FUN_021F6D8C
+ bl MOD04_021F6D8C
cmp r0, #0
addne sp, sp, #0x14
ldmneia sp!, {r4, r5, pc}
@@ -35315,7 +35315,7 @@ FUN_021F7610: ; 0x021F7610
ldr r1, [r4, #0xc]
ldr r2, [r0, #0x18]
mov r0, r5
- bl FUN_021F5018
+ bl MOD04_021F5018
cmp r0, #0
moveq r0, #0x65
streq r0, [r4]
@@ -35323,15 +35323,15 @@ FUN_021F7610: ; 0x021F7610
add sp, sp, #0x14
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021F7674
-FUN_021F7674: ; 0x021F7674
+ arm_func_start MOD04_021F7674
+MOD04_021F7674: ; 0x021F7674
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
ldr r5, [r0]
mov r0, #0x40
mov r7, r1
mov r6, r2
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
addeq sp, sp, #4
moveq r0, #0
@@ -35346,35 +35346,35 @@ FUN_021F7674: ; 0x021F7674
str r0, [r4, #8]
mov r0, #0
str r7, [r4, #0xc]
- bl FUN_021EFAC8
+ bl MOD04_021EFAC8
add r0, r0, #0x12c
str r0, [r4, #0x10]
ldr r3, [r5, #0x434]
- ldr r2, _021F7700 ; =FUN_021F7704
+ ldr r2, _021F7700 ; =MOD04_021F7704
mov r0, #0x18
mov r1, #0
str r3, [r4, #0x3c]
- bl FUN_021EF0E4
+ bl MOD04_021EF0E4
str r0, [r4, #0x38]
mov r0, r4
str r4, [r5, #0x434]
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
-_021F7700: .word FUN_021F7704
+_021F7700: .word MOD04_021F7704
- arm_func_start FUN_021F7704
-FUN_021F7704: ; 0x021F7704
+ arm_func_start MOD04_021F7704
+MOD04_021F7704: ; 0x021F7704
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4]
ldmia sp!, {r4, pc}
- arm_func_start FUN_021F7720
-FUN_021F7720: ; 0x021F7720
+ arm_func_start MOD04_021F7720
+MOD04_021F7720: ; 0x021F7720
ldr r0, [r0]
ldr r0, [r0, #0x434]
cmp r0, #0
@@ -35394,8 +35394,8 @@ _021F7754:
mov r0, #0
bx lr
- arm_func_start FUN_021F775C
-FUN_021F775C: ; 0x021F775C
+ arm_func_start MOD04_021F775C
+MOD04_021F775C: ; 0x021F775C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r4, r0
@@ -35404,20 +35404,20 @@ FUN_021F775C: ; 0x021F775C
ldr r0, [r7, #0x204]
cmp r0, r1
beq _021F77E8
- bl FUN_021EFF2C
+ bl MOD04_021EFF2C
cmp r0, #0
beq _021F77E8
mov r1, #0
ldr r0, [r7, #0x204]
mov r2, r1
- bl FUN_021EFC94
+ bl MOD04_021EFC94
mov r6, r0
mvn r1, #0
cmp r6, r1
beq _021F77E8
mov r0, r4
mov r2, #0
- bl FUN_021F7674
+ bl MOD04_021F7674
movs r5, r0
beq _021F77E0
mov r0, #0x68
@@ -35425,13 +35425,13 @@ FUN_021F775C: ; 0x021F775C
mov r0, r6
str r6, [r5, #8]
mov r1, #0
- bl FUN_021F017C
+ bl MOD04_021F017C
ldr r0, [r5, #8]
- bl FUN_021F7854
+ bl MOD04_021F7854
b _021F77E8
_021F77E0:
mov r0, r6
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
_021F77E8:
ldr r6, [r7, #0x434]
cmp r6, #0
@@ -35441,21 +35441,21 @@ _021F77F8:
mov r0, r4
mov r1, r6
ldr r7, [r6, #0x3c]
- bl FUN_021F7A40
+ bl MOD04_021F7A40
ldr r1, [r6]
cmp r1, #0x6a
beq _021F7830
cmp r0, #0
bne _021F7830
mov r0, r5
- bl FUN_021EFAC8
+ bl MOD04_021EFAC8
ldr r1, [r6, #0x10]
cmp r0, r1
ble _021F783C
_021F7830:
mov r0, r4
mov r1, r6
- bl FUN_021F78CC
+ bl MOD04_021F78CC
_021F783C:
mov r6, r7
cmp r7, #0
@@ -35465,41 +35465,41 @@ _021F7848:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_021F7854
-FUN_021F7854: ; 0x021F7854
+ arm_func_start MOD04_021F7854
+MOD04_021F7854: ; 0x021F7854
stmdb sp!, {r4, lr}
mov r4, r0
mov r1, #0x4000
- bl FUN_021F0130
+ bl MOD04_021F0130
mov r0, r4
mov r1, #0x8000
- bl FUN_021F0130
+ bl MOD04_021F0130
mov r0, r4
mov r1, #0x10000
- bl FUN_021F0130
+ bl MOD04_021F0130
mov r0, r4
mov r1, #0x20000
- bl FUN_021F0130
+ bl MOD04_021F0130
mov r0, r4
mov r1, #0x40000
- bl FUN_021F0130
+ bl MOD04_021F0130
mov r0, r4
mov r1, #0x4000
- bl FUN_021F00E4
+ bl MOD04_021F00E4
mov r0, r4
mov r1, #0x8000
- bl FUN_021F00E4
+ bl MOD04_021F00E4
mov r0, r4
mov r1, #0x10000
- bl FUN_021F00E4
+ bl MOD04_021F00E4
mov r0, r4
- bl FUN_021F009C
+ bl MOD04_021F009C
mov r0, r4
- bl FUN_021F0054
+ bl MOD04_021F0054
ldmia sp!, {r4, pc}
- arm_func_start FUN_021F78CC
-FUN_021F78CC: ; 0x021F78CC
+ arm_func_start MOD04_021F78CC
+MOD04_021F78CC: ; 0x021F78CC
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
movs r4, r1
@@ -35529,7 +35529,7 @@ _021F7914:
bl __msl_assertion_failed
ldr r1, _021F79DC ; =0x0220E6EC
mov r0, r5
- bl FUN_021FB3D0
+ bl MOD04_021FB3D0
ldmia sp!, {r4, r5, r6, pc}
_021F7940:
mov r1, r0
@@ -35541,14 +35541,14 @@ _021F7950:
str r0, [r1, #0x3c]
_021F7958:
ldr r0, [r4, #0x38]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
beq _021F79B8
mov r6, #0
_021F796C:
ldr r0, [r4, #0x38]
mov r1, r6
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r2, [r0, #0x10]
cmp r2, #0x64
bge _021F799C
@@ -35557,19 +35557,19 @@ _021F796C:
ldr r1, [r4, #0xc]
mov r0, r5
add r3, ip, r3
- bl FUN_021F1B60
+ bl MOD04_021F1B60
_021F799C:
ldr r0, [r4, #0x38]
mov r1, r6
- bl FUN_021EED84
+ bl MOD04_021EED84
ldr r0, [r4, #0x38]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
bne _021F796C
_021F79B8:
mov r0, r5
mov r1, r4
- bl FUN_021F79E0
+ bl MOD04_021F79E0
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_021F79C8: .word 0x0220E5D4
@@ -35579,36 +35579,36 @@ _021F79D4: .word 0x0220E6E8
_021F79D8: .word 0x00000225
_021F79DC: .word 0x0220E6EC
- arm_func_start FUN_021F79E0
-FUN_021F79E0: ; 0x021F79E0
+ arm_func_start MOD04_021F79E0
+MOD04_021F79E0: ; 0x021F79E0
stmdb sp!, {r4, lr}
mov r4, r1
ldr r0, [r4, #8]
mov r1, #2
- bl FUN_021EFD80
+ bl MOD04_021EFD80
ldr r0, [r4, #8]
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
ldr r0, [r4, #0x18]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x18]
ldr r0, [r4, #0x28]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x28]
ldr r0, [r4, #0x38]
cmp r0, #0
beq _021F7A34
- bl FUN_021EF074
+ bl MOD04_021EF074
mov r0, #0
str r0, [r4, #0x38]
_021F7A34:
mov r0, r4
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldmia sp!, {r4, pc}
- arm_func_start FUN_021F7A40
-FUN_021F7A40: ; 0x021F7A40
+ arm_func_start MOD04_021F7A40
+MOD04_021F7A40: ; 0x021F7A40
stmdb sp!, {r4, r5, r6, lr}
mov r5, r1
ldr r1, [r5]
@@ -35630,13 +35630,13 @@ _021F7A70:
beq _021F7A9C
mov r0, r6
mov r1, r5
- bl FUN_021F8088
+ bl MOD04_021F8088
mov r4, r0
b _021F7AAC
_021F7A9C:
mov r0, r6
mov r1, r5
- bl FUN_021F7E3C
+ bl MOD04_021F7E3C
mov r4, r0
_021F7AAC:
cmp r4, #0
@@ -35646,7 +35646,7 @@ _021F7AAC:
bne _021F7AD0
mov r0, r6
mov r1, r5
- bl FUN_021F7AE4
+ bl MOD04_021F7AE4
mov r4, r0
_021F7AD0:
mov r0, r4
@@ -35656,8 +35656,8 @@ _021F7AD8: .word 0x0220E710
_021F7ADC: .word 0x0220E5E4
_021F7AE0: .word 0x000001D9
- arm_func_start FUN_021F7AE4
-FUN_021F7AE4: ; 0x021F7AE4
+ arm_func_start MOD04_021F7AE4
+MOD04_021F7AE4: ; 0x021F7AE4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x24
mov r6, r1
@@ -35673,7 +35673,7 @@ FUN_021F7AE4: ; 0x021F7AE4
str r1, [sp, #4]
ldr r1, [r6, #8]
add r2, r6, #0x28
- bl FUN_021F28AC
+ bl MOD04_021F28AC
ldr r1, [sp, #0xc]
cmp r1, #0
bne _021F7B38
@@ -35691,7 +35691,7 @@ _021F7B4C:
bne _021F7B84
mov r0, r7
mov r1, r6
- bl FUN_021F7D6C
+ bl MOD04_021F7D6C
cmp r0, #0
addne sp, sp, #0x24
ldmneia sp!, {r4, r5, r6, r7, pc}
@@ -35709,7 +35709,7 @@ _021F7B84:
add r3, sp, #8
mov r0, r7
add r2, r6, #0x18
- bl FUN_021F2A2C
+ bl MOD04_021F2A2C
cmp r0, #0
movne r0, #0x6a
strne r0, [r6]
@@ -35720,7 +35720,7 @@ _021F7B84:
cmp r0, #0
ble _021F7BDC
mov r0, #0
- bl FUN_021EFAC8
+ bl MOD04_021EFAC8
add r0, r0, #0x12c
str r0, [r6, #0x10]
_021F7BDC:
@@ -35730,7 +35730,7 @@ _021F7BDC:
mov r0, r7
add r1, r6, #0x18
str r4, [sp]
- bl FUN_021F2770
+ bl MOD04_021F2770
cmp r0, #0
addne sp, sp, #0x24
ldmneia sp!, {r4, r5, r6, r7, pc}
@@ -35768,12 +35768,12 @@ _021F7C64:
str r0, [sp, #0x14]
beq _021F7D2C
mov r0, #0xc
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
bne _021F7CA4
ldr r1, _021F7D64 ; =0x0220E73C
mov r0, r7
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x24
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -35781,10 +35781,10 @@ _021F7CA4:
ldr r0, [r6, #0xc]
str r0, [r4]
ldr r0, [sp, #0x18]
- bl FUN_021F0208
+ bl MOD04_021F0208
str r0, [r4, #8]
mov r0, #0
- bl FUN_021EFAC8
+ bl MOD04_021EFAC8
str r0, [r4, #4]
mov r0, #0
str r0, [sp]
@@ -35794,7 +35794,7 @@ _021F7CA4:
mov r0, r7
mov r3, r4
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021F7D2C
add sp, sp, #0x24
@@ -35804,7 +35804,7 @@ _021F7CF8:
ldr r3, _021F7D68 ; =0x0220E74C
mov r0, r7
mov r2, #0x67
- bl FUN_021F1A64
+ bl MOD04_021F1A64
b _021F7D2C
_021F7D10:
str r1, [sp]
@@ -35813,11 +35813,11 @@ _021F7D10:
str r1, [sp, #4]
ldr r3, [r6, #0x18]
mov r1, r6
- bl FUN_021FACC0
+ bl MOD04_021FACC0
_021F7D2C:
mov r0, r7
add r1, r6, #0x18
- bl FUN_021F2704
+ bl MOD04_021F2704
_021F7D38:
ldr r0, [sp, #0x18]
cmp r0, #0
@@ -35834,8 +35834,8 @@ _021F7D60: .word 0x0220E738
_021F7D64: .word 0x0220E73C
_021F7D68: .word 0x0220E74C
- arm_func_start FUN_021F7D6C
-FUN_021F7D6C: ; 0x021F7D6C
+ arm_func_start MOD04_021F7D6C
+MOD04_021F7D6C: ; 0x021F7D6C
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0xc
mov r8, r1
@@ -35846,7 +35846,7 @@ FUN_021F7D6C: ; 0x021F7D6C
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
ldr r0, [r8, #0x38]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
beq _021F7E2C
ldr r5, _021F7E38 ; =0x0220E738
@@ -35855,7 +35855,7 @@ FUN_021F7D6C: ; 0x021F7D6C
_021F7DAC:
ldr r0, [r8, #0x38]
mov r1, r7
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
mov r6, r0
str r7, [sp]
str r5, [sp, #4]
@@ -35863,7 +35863,7 @@ _021F7DAC:
mov r0, sb
mov r2, r6
mov r3, r4
- bl FUN_021F28AC
+ bl MOD04_021F28AC
ldr r1, [sp, #8]
cmp r1, #0
bne _021F7DEC
@@ -35882,9 +35882,9 @@ _021F7E00:
bne _021F7E2C
ldr r0, [r8, #0x38]
mov r1, r7
- bl FUN_021EED84
+ bl MOD04_021EED84
ldr r0, [r8, #0x38]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
bne _021F7DAC
_021F7E2C:
@@ -35894,8 +35894,8 @@ _021F7E2C:
.align 2, 0
_021F7E38: .word 0x0220E738
- arm_func_start FUN_021F7E3C
-FUN_021F7E3C: ; 0x021F7E3C
+ arm_func_start MOD04_021F7E3C
+MOD04_021F7E3C: ; 0x021F7E3C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x184
mov r5, r1
@@ -35918,7 +35918,7 @@ _021F7E70:
add r3, sp, #8
mov r0, r6
add r2, r5, #0x18
- bl FUN_021F2A2C
+ bl MOD04_021F2A2C
cmp r0, #0
addne sp, sp, #0x184
ldmneia sp!, {r4, r5, r6, r7, pc}
@@ -35947,7 +35947,7 @@ _021F7E70:
add r2, sp, #0x10
mov r0, r7
mov r3, #0x10
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0x6a
streq r0, [r5]
@@ -35961,7 +35961,7 @@ _021F7E70:
ldr r1, _021F8070 ; =0x0220E788
add r2, sp, #0x20
mov r3, #0x1f
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0x6a
streq r0, [r5]
@@ -35972,7 +35972,7 @@ _021F7E70:
ldr r1, _021F8074 ; =0x0220E790
add r2, sp, #0x3f
mov r3, #0x21
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0x6a
streq r0, [r5]
@@ -35991,7 +35991,7 @@ _021F7E70:
mov r1, r0
add r0, sp, #0x81
add r2, sp, #0x60
- bl FUN_021EF794
+ bl MOD04_021EF794
add r0, sp, #0x3f
add r1, sp, #0x60
bl strcmp
@@ -36000,11 +36000,11 @@ _021F7E70:
ldr r2, _021F8080 ; =0x0220E7A0
mov r0, r6
add r1, r5, #0x28
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F8064 ; =0x0220E770
mov r0, r6
add r1, r5, #0x28
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, #0x6a
str r0, [r5]
add sp, sp, #0x184
@@ -36014,11 +36014,11 @@ _021F8000:
ldr r2, _021F8084 ; =0x0220E7A8
mov r0, r6
add r1, r5, #0x28
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F8064 ; =0x0220E770
mov r0, r6
add r1, r5, #0x28
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, #0x69
str r0, [r5]
str r7, [r5, #0xc]
@@ -36050,8 +36050,8 @@ _021F807C: .word 0x0220E798
_021F8080: .word 0x0220E7A0
_021F8084: .word 0x0220E7A8
- arm_func_start FUN_021F8088
-FUN_021F8088: ; 0x021F8088
+ arm_func_start MOD04_021F8088
+MOD04_021F8088: ; 0x021F8088
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x1c
mov r6, r1
@@ -36068,7 +36068,7 @@ _021F80B0: ; jump table
b _021F80D4 ; case 2
b _021F8258 ; case 3
_021F80C0:
- bl FUN_021F7478
+ bl MOD04_021F7478
cmp r0, #0
beq _021F8360
add sp, sp, #0x1c
@@ -36076,7 +36076,7 @@ _021F80C0:
_021F80D4:
ldr r1, [r6, #8]
add r2, sp, #8
- bl FUN_021FB0FC
+ bl MOD04_021FB0FC
cmp r0, #0
addne sp, sp, #0x1c
ldmneia sp!, {r4, r5, r6, r7, pc}
@@ -36085,7 +36085,7 @@ _021F80D4:
bne _021F8110
ldr r1, _021F83B8 ; =0x0220E648
mov r0, r7
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x1c
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -36096,12 +36096,12 @@ _021F8110:
add r2, sp, #0x14
mov r0, r7
mov r4, #1
- bl FUN_021F85E8
+ bl MOD04_021F85E8
cmp r0, #0
bne _021F814C
ldr r1, _021F83B8 ; =0x0220E648
mov r0, r7
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x1c
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -36109,36 +36109,36 @@ _021F814C:
ldr r2, _021F83BC ; =0x0220E778
mov r0, r7
add r1, r6, #0x28
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F83C0 ; =0x0220E780
mov r0, r7
add r1, r6, #0x28
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [r5, #0x1a0]
mov r0, r7
add r1, r6, #0x28
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F83C4 ; =0x0220E788
mov r0, r7
add r1, r6, #0x28
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r7
add r1, r6, #0x28
add r2, r5, #0x110
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r7
add r1, r6, #0x28
ldr r2, _021F83C8 ; =0x0220E790
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r7
add r1, r6, #0x28
ldr r2, [sp, #0x14]
ldr r2, [r2, #0x18]
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, r7
add r1, r6, #0x28
ldr r2, _021F83CC ; =0x0220E770
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r3, [r5, #0x434]
cmp r3, #0
beq _021F8210
@@ -36162,17 +36162,17 @@ _021F8210:
beq _021F824C
ldr r0, [sp, #0x14]
ldr r0, [r0, #0x18]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [sp, #0x14]
mov r1, #0
str r1, [r0, #0x18]
ldr r0, [sp, #0x14]
- bl FUN_021F83EC
+ bl MOD04_021F83EC
cmp r0, #0
beq _021F824C
ldr r1, [sp, #0x14]
mov r0, r7
- bl FUN_021F85A0
+ bl MOD04_021F85A0
_021F824C:
mov r0, #0x68
str r0, [r6]
@@ -36185,7 +36185,7 @@ _021F8258:
str r1, [sp, #4]
ldr r1, [r6, #8]
add r2, r6, #0x18
- bl FUN_021F2A2C
+ bl MOD04_021F2A2C
cmp r0, #0
addne sp, sp, #0x1c
ldmneia sp!, {r4, r5, r6, r7, pc}
@@ -36211,14 +36211,14 @@ _021F8258:
ble _021F82EC
ldr r1, _021F83D8 ; =0x0220E7B0
mov r0, r7
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x1c
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, pc}
_021F82EC:
mov r0, r7
mov r1, r6
- bl FUN_021F7610
+ bl MOD04_021F7610
cmp r0, #0
beq _021F8338
add sp, sp, #0x1c
@@ -36232,7 +36232,7 @@ _021F8308:
beq _021F8338
ldr r1, _021F83E0 ; =0x0220E7D4
mov r0, r7
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x1c
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -36260,7 +36260,7 @@ _021F8360:
add r3, sp, #0x10
mov r0, r7
add r2, r6, #0x28
- bl FUN_021F28AC
+ bl MOD04_021F28AC
ldr r1, [sp, #0x10]
cmp r1, #0
bne _021F83A4
@@ -36288,8 +36288,8 @@ _021F83E0: .word 0x0220E7D4
_021F83E4: .word 0x0220E6E8
_021F83E8: .word 0x0220E5E4
- arm_func_start FUN_021F83EC
-FUN_021F83EC: ; 0x021F83EC
+ arm_func_start MOD04_021F83EC
+MOD04_021F83EC: ; 0x021F83EC
cmp r0, #0
beq _021F8428
ldr r1, [r0, #0xc]
@@ -36309,24 +36309,24 @@ _021F8428:
mov r0, #0
bx lr
- arm_func_start FUN_021F8430
-FUN_021F8430: ; 0x021F8430
+ arm_func_start MOD04_021F8430
+MOD04_021F8430: ; 0x021F8430
stmdb sp!, {lr}
sub sp, sp, #0xc
str r1, [sp]
mov r3, #0
- ldr r1, _021F845C ; =FUN_021F8460
+ ldr r1, _021F845C ; =MOD04_021F8460
add r2, sp, #0
str r3, [sp, #4]
- bl FUN_021F848C
+ bl MOD04_021F848C
ldr r0, [sp, #4]
add sp, sp, #0xc
ldmfd sp!, {pc}
.align 2, 0
-_021F845C: .word FUN_021F8460
+_021F845C: .word MOD04_021F8460
- arm_func_start FUN_021F8460
-FUN_021F8460: ; 0x021F8460
+ arm_func_start MOD04_021F8460
+MOD04_021F8460: ; 0x021F8460
ldr r0, [r1, #8]
cmp r0, #0
beq _021F8484
@@ -36340,8 +36340,8 @@ _021F8484:
mov r0, #1
bx lr
- arm_func_start FUN_021F848C
-FUN_021F848C: ; 0x021F848C
+ arm_func_start MOD04_021F848C
+MOD04_021F848C: ; 0x021F848C
stmdb sp!, {lr}
sub sp, sp, #0xc
ldr r3, [r0]
@@ -36349,19 +36349,19 @@ FUN_021F848C: ; 0x021F848C
str r2, [sp, #8]
str r0, [sp]
ldr r0, [r3, #0x428]
- ldr r1, _021F84C8 ; =FUN_021F84CC
+ ldr r1, _021F84C8 ; =MOD04_021F84CC
add r2, sp, #0
- bl FUN_021EF264
+ bl MOD04_021EF264
cmp r0, #0
moveq r0, #1
movne r0, #0
add sp, sp, #0xc
ldmfd sp!, {pc}
.align 2, 0
-_021F84C8: .word FUN_021F84CC
+_021F84C8: .word MOD04_021F84CC
- arm_func_start FUN_021F84CC
-FUN_021F84CC: ; 0x021F84CC
+ arm_func_start MOD04_021F84CC
+MOD04_021F84CC: ; 0x021F84CC
stmdb sp!, {lr}
sub sp, sp, #4
mov ip, r0
@@ -36373,19 +36373,19 @@ FUN_021F84CC: ; 0x021F84CC
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021F84F4
-FUN_021F84F4: ; 0x021F84F4
+ arm_func_start MOD04_021F84F4
+MOD04_021F84F4: ; 0x021F84F4
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
str r1, [sp]
mov ip, #0
str r2, [sp, #4]
mov r4, r3
- ldr r1, _021F853C ; =FUN_021F8540
+ ldr r1, _021F853C ; =MOD04_021F8540
add r2, sp, #0
str ip, [sp, #0xc]
str r4, [sp, #8]
- bl FUN_021F848C
+ bl MOD04_021F848C
ldr r0, [sp, #0xc]
cmp r0, #0
moveq r0, #0
@@ -36394,10 +36394,10 @@ FUN_021F84F4: ; 0x021F84F4
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
-_021F853C: .word FUN_021F8540
+_021F853C: .word MOD04_021F8540
- arm_func_start FUN_021F8540
-FUN_021F8540: ; 0x021F8540
+ arm_func_start MOD04_021F8540
+MOD04_021F8540: ; 0x021F8540
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
ldr r4, [r6, #0xc]
@@ -36424,33 +36424,33 @@ _021F8598:
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021F85A0
-FUN_021F85A0: ; 0x021F85A0
+ arm_func_start MOD04_021F85A0
+MOD04_021F85A0: ; 0x021F85A0
ldr r0, [r0]
- ldr ip, _021F85B0 ; =FUN_021EF3F4
+ ldr ip, _021F85B0 ; =MOD04_021EF3F4
ldr r0, [r0, #0x428]
bx ip
.align 2, 0
-_021F85B0: .word FUN_021EF3F4
+_021F85B0: .word MOD04_021EF3F4
- arm_func_start FUN_021F85B4
-FUN_021F85B4: ; 0x021F85B4
+ arm_func_start MOD04_021F85B4
+MOD04_021F85B4: ; 0x021F85B4
stmdb sp!, {r4, lr}
sub sp, sp, #8
add r2, sp, #0
ldr r4, [r0]
- bl FUN_021F85E8
+ bl MOD04_021F85E8
cmp r0, #0
addeq sp, sp, #8
ldmeqia sp!, {r4, pc}
ldr r0, [r4, #0x428]
ldr r1, [sp]
- bl FUN_021EF3F4
+ bl MOD04_021EF3F4
add sp, sp, #8
ldmia sp!, {r4, pc}
- arm_func_start FUN_021F85E8
-FUN_021F85E8: ; 0x021F85E8
+ arm_func_start MOD04_021F85E8
+MOD04_021F85E8: ; 0x021F85E8
stmdb sp!, {r4, lr}
sub sp, sp, #0x20
ldr r0, [r0]
@@ -36458,7 +36458,7 @@ FUN_021F85E8: ; 0x021F85E8
str r1, [sp]
ldr r0, [r0, #0x428]
add r1, sp, #0
- bl FUN_021EF358
+ bl MOD04_021EF358
cmp r4, #0
strne r0, [r4]
cmp r0, #0
@@ -36467,8 +36467,8 @@ FUN_021F85E8: ; 0x021F85E8
add sp, sp, #0x20
ldmia sp!, {r4, pc}
- arm_func_start FUN_021F8624
-FUN_021F8624: ; 0x021F8624
+ arm_func_start MOD04_021F8624
+MOD04_021F8624: ; 0x021F8624
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x20
mov r5, r0
@@ -36491,7 +36491,7 @@ _021F865C:
add r2, sp, #0
mov r0, r5
mov r1, r4
- bl FUN_021F85E8
+ bl MOD04_021F85E8
cmp r0, #0
ldrne r0, [sp]
addne sp, sp, #0x20
@@ -36512,14 +36512,14 @@ _021F865C:
str r0, [sp, #0x1c]
str r0, [sp, #0x18]
ldr r0, [r6]
- bl FUN_021EF494
+ bl MOD04_021EF494
ldr r0, [r6, #4]
add r2, sp, #0
add r3, r0, #1
mov r0, r5
mov r1, r4
str r3, [r6, #4]
- bl FUN_021F85E8
+ bl MOD04_021F85E8
cmp r0, #0
ldrne r0, [sp]
moveq r0, #0
@@ -36531,8 +36531,8 @@ _021F8704: .word 0x0220E7F4
_021F8708: .word 0x0220E7FC
_021F870C: .word 0x000002B5
- arm_func_start FUN_021F8710
-FUN_021F8710: ; 0x021F8710
+ arm_func_start MOD04_021F8710
+MOD04_021F8710: ; 0x021F8710
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x20
mov r6, r2
@@ -36540,7 +36540,7 @@ FUN_021F8710: ; 0x021F8710
mov r1, r6
mov r2, #1
mov r5, r0
- bl FUN_021FB2F8
+ bl MOD04_021FB2F8
cmp r0, #0
addne sp, sp, #0x20
movne r0, #4
@@ -36554,11 +36554,11 @@ FUN_021F8710: ; 0x021F8710
ldr r2, _021F8864 ; =0x0220E814
mov r0, r5
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r5
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x20
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
@@ -36567,17 +36567,17 @@ _021F8784:
add r2, sp, #0x10
mov r0, r6
mov r3, #0x10
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F87CC
ldr r2, _021F8864 ; =0x0220E814
mov r0, r5
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r5
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x20
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
@@ -36592,12 +36592,12 @@ _021F87CC:
cmp r2, #0
beq _021F8848
mov r0, #8
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r3, r0
bne _021F8818
ldr r1, _021F886C ; =0x0220E850
mov r0, r5
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x20
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
@@ -36610,14 +36610,14 @@ _021F8818:
add r1, sp, #8
mov r0, r5
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
addne sp, sp, #0x20
ldmneia sp!, {r4, r5, r6, pc}
_021F8848:
mov r0, r5
mov r1, r4
- bl FUN_021F6C84
+ bl MOD04_021F6C84
mov r0, #0
add sp, sp, #0x20
ldmia sp!, {r4, r5, r6, pc}
@@ -36627,21 +36627,21 @@ _021F8864: .word 0x0220E814
_021F8868: .word 0x0220E844
_021F886C: .word 0x0220E850
- arm_func_start FUN_021F8870
-FUN_021F8870: ; 0x021F8870
+ arm_func_start MOD04_021F8870
+MOD04_021F8870: ; 0x021F8870
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr r4, [r0]
mov r1, #0
str r1, [r4, #0x430]
str r1, [r4, #0x42c]
- ldr r0, _021F88C0 ; =FUN_021F88CC
- ldr r2, _021F88C4 ; =FUN_021F8958
+ ldr r0, _021F88C0 ; =MOD04_021F88CC
+ ldr r2, _021F88C4 ; =MOD04_021F8958
str r0, [sp]
- ldr r3, _021F88C8 ; =FUN_021F8948
+ ldr r3, _021F88C8 ; =MOD04_021F8948
mov r0, #0x1c
mov r1, #4
- bl FUN_021EF76C
+ bl MOD04_021EF76C
str r0, [r4, #0x428]
ldr r0, [r4, #0x428]
cmp r0, #0
@@ -36650,54 +36650,54 @@ FUN_021F8870: ; 0x021F8870
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
-_021F88C0: .word FUN_021F88CC
-_021F88C4: .word FUN_021F8958
-_021F88C8: .word FUN_021F8948
+_021F88C0: .word MOD04_021F88CC
+_021F88C4: .word MOD04_021F8958
+_021F88C8: .word MOD04_021F8948
- arm_func_start FUN_021F88CC
-FUN_021F88CC: ; 0x021F88CC
+ arm_func_start MOD04_021F88CC
+MOD04_021F88CC: ; 0x021F88CC
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #8]
cmp r0, #0
beq _021F891C
ldr r0, [r0, #8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r4, #8]
mov r1, #0
str r1, [r0, #8]
ldr r0, [r4, #8]
ldr r0, [r0, #0xc]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [r4, #8]
mov r1, #0
str r1, [r0, #0xc]
ldr r0, [r4, #8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #8]
_021F891C:
mov r0, r4
- bl FUN_021F4CBC
+ bl MOD04_021F4CBC
ldr r0, [r4, #0x10]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x10]
ldr r0, [r4, #0x18]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r4, #0x18]
ldmia sp!, {r4, pc}
- arm_func_start FUN_021F8948
-FUN_021F8948: ; 0x021F8948
+ arm_func_start MOD04_021F8948
+MOD04_021F8948: ; 0x021F8948
ldr r2, [r0]
ldr r0, [r1]
sub r0, r2, r0
bx lr
- arm_func_start FUN_021F8958
-FUN_021F8958: ; 0x021F8958
+ arm_func_start MOD04_021F8958
+MOD04_021F8958: ; 0x021F8958
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, [r0]
@@ -36706,8 +36706,8 @@ FUN_021F8958: ; 0x021F8958
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021F8974
-FUN_021F8974: ; 0x021F8974
+ arm_func_start MOD04_021F8974
+MOD04_021F8974: ; 0x021F8974
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
mov sl, r0
@@ -36717,12 +36717,12 @@ FUN_021F8974: ; 0x021F8974
cmp r0, #0
ble _021F8AB4
mov r0, r0, lsl #2
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r8, r0
bne _021F89BC
ldr r1, _021F8AC0 ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #4
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -36768,7 +36768,7 @@ _021F8A38:
_021F8A44:
ldr r1, [r8, r4, lsl #2]
mov r0, sl
- bl FUN_021F8AD0
+ bl MOD04_021F8AD0
cmp r0, #0
ldrne r1, [r8, r4, lsl #2]
add r4, r4, #1
@@ -36790,14 +36790,14 @@ _021F8A78:
beq _021F8AA0
ldr r1, [r8, r1]
mov r0, sl
- bl FUN_021F6C84
+ bl MOD04_021F6C84
_021F8AA0:
add r4, r4, #1
cmp r4, r6
blt _021F8A78
_021F8AAC:
mov r0, r8
- bl FUN_021DD82C
+ bl MOD04_021DD82C
_021F8AB4:
mov r0, #0
add sp, sp, #4
@@ -36808,8 +36808,8 @@ _021F8AC4: .word 0x0220E8B0
_021F8AC8: .word 0x0220E8D0
_021F8ACC: .word 0x00000563
- arm_func_start FUN_021F8AD0
-FUN_021F8AD0: ; 0x021F8AD0
+ arm_func_start MOD04_021F8AD0
+MOD04_021F8AD0: ; 0x021F8AD0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr ip, _021F99B4 ; =0x000004EC
sub sp, sp, ip
@@ -36832,7 +36832,7 @@ _021F8B04:
add r3, sp, #0xa0
mov r0, sl
add r2, sb, #0x18
- bl FUN_021F28AC
+ bl MOD04_021F28AC
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -36844,7 +36844,7 @@ _021F8B04:
ldr r1, [sb, #4]
add r2, sp, #0x8c
mov r0, sl
- bl FUN_021FB0FC
+ bl MOD04_021FB0FC
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -36855,11 +36855,11 @@ _021F8B04:
ldr r1, _021F99BC ; =0x00000D01
ldr r2, _021F99C0 ; =0x0220E8E0
mov r0, sl
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #4
mov r2, #0
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #4
add sp, sp, ip
@@ -36873,45 +36873,45 @@ _021F8BA4:
ldr r2, _021F99C4 ; =0x0220E90C
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F99C8 ; =0x0220E918
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r0, [sp, #0x24]
add r1, sb, #0x18
ldr r2, [r0, #0x198]
mov r0, sl
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F99CC ; =0x0220E924
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [sp, #0x24]
mov r0, sl
ldr r2, [r2, #0x1a0]
add r1, sb, #0x18
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F99D0 ; =0x0220E930
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [sp, #0x24]
mov r0, sl
ldr r2, [r2, #0x470]
add r1, sb, #0x18
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldrsb r0, [sb, #0x28]
cmp r0, #0
beq _021F8C60
ldr r2, _021F99D4 ; =0x0220E940
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0x28
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
_021F8C60:
ldrsb r0, [sb, #0x47]
cmp r0, #0
@@ -36919,11 +36919,11 @@ _021F8C60:
ldr r2, _021F99D8 ; =0x0220E948
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0x47
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
_021F8C8C:
ldrsb r0, [sb, #0x5c]
cmp r0, #0
@@ -36931,11 +36931,11 @@ _021F8C8C:
ldr r2, _021F99DC ; =0x0220E958
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0x5c
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
_021F8CB8:
ldrsb r0, [sb, #0x8f]
cmp r0, #0
@@ -36943,11 +36943,11 @@ _021F8CB8:
ldr r2, _021F99E0 ; =0x0220E960
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0x8f
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
_021F8CE4:
ldrsb r0, [sb, #0xae]
cmp r0, #0
@@ -36955,11 +36955,11 @@ _021F8CE4:
ldr r2, _021F99E4 ; =0x0220E96C
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0xae
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
_021F8D10:
ldr r0, [sb, #0x130]
cmp r0, #0
@@ -36967,11 +36967,11 @@ _021F8D10:
ldr r2, _021F99E8 ; =0x0220E978
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [sb, #0x130]
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F64
+ bl MOD04_021F2F64
_021F8D3C:
ldr r0, [sb, #0x134]
cmp r0, #0
@@ -36979,11 +36979,11 @@ _021F8D3C:
ldr r2, _021F99EC ; =0x0220E984
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [sb, #0x134]
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F64
+ bl MOD04_021F2F64
b _021F9134
_021F8D6C:
cmp r0, #2
@@ -36991,15 +36991,15 @@ _021F8D6C:
ldr r2, _021F99F0 ; =0x0220E98C
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F99DC ; =0x0220E958
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0x5c
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
b _021F9134
_021F8DA8:
cmp r0, #3
@@ -37007,32 +37007,32 @@ _021F8DA8:
ldr r2, _021F99F4 ; =0x0220E994
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F99DC ; =0x0220E958
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0x5c
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F99F8 ; =0x0220E99C
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0xcd
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F99D0 ; =0x0220E930
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [sp, #0x24]
mov r0, sl
ldr r2, [r2, #0x470]
add r1, sb, #0x18
- bl FUN_021F2F64
+ bl MOD04_021F2F64
b _021F9134
_021F8E28:
cmp r0, #4
@@ -37040,33 +37040,33 @@ _021F8E28:
ldr r2, _021F99FC ; =0x0220E9A4
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F99C8 ; =0x0220E918
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r0, [sp, #0x24]
add r1, sb, #0x18
ldr r2, [r0, #0x198]
mov r0, sl
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F99CC ; =0x0220E924
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [sp, #0x24]
mov r0, sl
ldr r2, [r2, #0x1a0]
add r1, sb, #0x18
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F9A00 ; =0x0220E9B0
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [sb, #0x138]
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F64
+ bl MOD04_021F2F64
b _021F9134
_021F8EAC:
cmp r0, #5
@@ -37074,31 +37074,31 @@ _021F8EAC:
ldr r2, _021F9A04 ; =0x0220E9BC
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F99D4 ; =0x0220E940
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0x28
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
ldr r2, _021F99DC ; =0x0220E958
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0x5c
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
ldr r2, _021F99F8 ; =0x0220E99C
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0xcd
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
b _021F9134
_021F8F28:
cmp r0, #6
@@ -37106,68 +37106,68 @@ _021F8F28:
ldr r2, _021F9A08 ; =0x0220E9C4
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F99D4 ; =0x0220E940
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0x28
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F99DC ; =0x0220E958
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0x5c
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F99F8 ; =0x0220E99C
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0xcd
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F9A0C ; =0x0220E9D0
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [sp, #0x24]
mov r0, sl
ldr r2, [r2, #0x46c]
add r1, sb, #0x18
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F99D0 ; =0x0220E930
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [sp, #0x24]
mov r0, sl
ldr r2, [r2, #0x470]
add r1, sb, #0x18
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F99D8 ; =0x0220E948
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0x47
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldrsb r0, [sb, #0xec]
cmp r0, #0
beq _021F9134
ldr r2, _021F9A10 ; =0x0220E9DC
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0xec
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
b _021F9134
_021F9038:
cmp r0, #7
@@ -37175,34 +37175,34 @@ _021F9038:
ldr r2, _021F9A14 ; =0x0220E9E4
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F99C8 ; =0x0220E918
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r0, [sp, #0x24]
add r1, sb, #0x18
ldr r2, [r0, #0x198]
mov r0, sl
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F99CC ; =0x0220E924
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [sp, #0x24]
mov r0, sl
ldr r2, [r2, #0x1a0]
add r1, sb, #0x18
- bl FUN_021F2F64
+ bl MOD04_021F2F64
ldr r2, _021F99D0 ; =0x0220E930
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [sp, #0x24]
mov r0, sl
ldr r2, [r2, #0x470]
add r1, sb, #0x18
- bl FUN_021F2F64
+ bl MOD04_021F2F64
b _021F9134
_021F90C0:
cmp r0, #8
@@ -37210,24 +37210,24 @@ _021F90C0:
ldr r2, _021F9A18 ; =0x0220E9F0
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F9A1C ; =0x0220EA00
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
mov r0, sl
add r1, sb, #0x18
add r2, sb, #0x47
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F99D0 ; =0x0220E930
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, [sp, #0x24]
mov r0, sl
ldr r2, [r2, #0x470]
add r1, sb, #0x18
- bl FUN_021F2F64
+ bl MOD04_021F2F64
b _021F9134
_021F9120:
ldr r0, _021F9A20 ; =0x0220EA10
@@ -37239,15 +37239,15 @@ _021F9134:
ldr r2, _021F9A2C ; =0x0220EA14
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F9A30 ; =0x02210EA0
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r2, _021F9A34 ; =0x0220EA20
mov r0, sl
add r1, sb, #0x18
- bl FUN_021F2F9C
+ bl MOD04_021F2F9C
ldr r0, [sp, #0x1c]
mov r1, #4
str r1, [r0, #0x14]
@@ -37263,7 +37263,7 @@ _021F9174:
add r3, sp, #0x9c
mov r0, sl
add r2, sb, #8
- bl FUN_021F2A2C
+ bl MOD04_021F2A2C
cmp r0, #0
beq _021F91E8
cmp r0, #3
@@ -37273,11 +37273,11 @@ _021F9174:
ldr r1, _021F99BC ; =0x00000D01
ldr r2, _021F9A38 ; =0x0220EA28
mov r0, sl
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #0
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
@@ -37296,7 +37296,7 @@ _021F91E8:
ldr r1, [sb, #8]
mov r0, sl
mov r2, #1
- bl FUN_021FB2F8
+ bl MOD04_021FB2F8
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
movne r0, #1
@@ -37337,7 +37337,7 @@ _021F92A8:
mov r0, sl
add r2, sp, #0x90
mov r3, r5
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -37352,7 +37352,7 @@ _021F92A8:
mov r0, sl
add r2, sp, #0x90
mov r3, r5
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -37384,13 +37384,13 @@ _021F9344:
mov r1, #0xac
mul r1, r2, r1
str r2, [sp, #0xe0]
- bl FUN_021DD844
+ bl MOD04_021DD844
movs r8, r0
str r8, [sp, #0xe8]
bne _021F939C
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -37416,7 +37416,7 @@ _021F93D0:
ldr r1, [sb, #8]
add r2, sp, #0x90
mov r3, r5
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -37429,7 +37429,7 @@ _021F93D0:
add r0, r7, #4
mov r1, r6
mov r2, r4
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
b _021F94F4
_021F9424:
ldr r1, _021F9A54 ; =0x0220EA70
@@ -37440,7 +37440,7 @@ _021F9424:
ldr r2, [sp, #0x4c]
add r0, r7, #0x23
mov r1, r6
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
b _021F94F4
_021F944C:
ldr r1, _021F9A58 ; =0x0220EA7C
@@ -37451,7 +37451,7 @@ _021F944C:
add r0, r7, #0x38
mov r1, r6
mov r2, r4
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
b _021F94F4
_021F9474:
ldr r1, _021F9A5C ; =0x0220EA88
@@ -37462,7 +37462,7 @@ _021F9474:
add r0, r7, #0x57
mov r1, r6
mov r2, r4
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
b _021F94F4
_021F949C:
ldr r1, _021F9A60 ; =0x0220EA94
@@ -37473,7 +37473,7 @@ _021F949C:
ldr r2, [sp, #0x50]
add r0, r7, #0x76
mov r1, r6
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
b _021F94F4
_021F94C4:
ldr r1, _021F9A48 ; =0x0220EA64
@@ -37497,11 +37497,11 @@ _021F9500:
ldr r2, _021F9A64 ; =0x0220EA9C
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
@@ -37550,14 +37550,14 @@ _021F9568:
ldr r4, [sp, #0x1c]
ldr r4, [r4, #0x10]
str r4, [sp, #0x18]
- bl FUN_021FA770
+ bl MOD04_021FA770
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021F95EC:
ldr r0, [sp, #0xe8]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [sp, #0xe8]
b _021FA6F8
@@ -37577,7 +37577,7 @@ _021F9600:
add r2, sp, #0x90
add r3, sp, #0xec
mov r0, sl
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -37590,23 +37590,23 @@ _021F9600:
ldr r2, _021F9A64 ; =0x0220EA9C
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021F9694:
mov r0, #0x3c
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
bne _021F96C0
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -37617,7 +37617,7 @@ _021F96C0:
add r0, r4, #4
add r1, sb, #0x5c
mov r2, #0x33
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
add r0, sp, #0x28c
ldrsb r0, [r0, #0x60]
add r1, sp, #0xd4
@@ -37633,7 +37633,7 @@ _021F96C0:
str r0, [sp, #4]
mov r0, sl
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021FA6F8
ldr ip, _021F99B4 ; =0x000004EC
@@ -37650,12 +37650,12 @@ _021F972C:
str r0, [sp, #0xd0]
beq _021FA6F8
mov r0, #0x44
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r8, r0
bne _021F977C
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -37676,7 +37676,7 @@ _021F977C:
add r2, sp, #0x90
add r3, sp, #0xec
mov r0, sl
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -37689,11 +37689,11 @@ _021F977C:
ldr r2, _021F9A64 ; =0x0220EA9C
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
@@ -37712,7 +37712,7 @@ _021F982C:
mov r0, sl
add r2, sp, #0x90
mov r3, r6
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -37726,12 +37726,12 @@ _021F982C:
ldr r1, [r8, #0x38]
add r1, r1, #1
mov r1, r1, lsl #2
- bl FUN_021DD844
+ bl MOD04_021DD844
cmp r0, #0
bne _021F98A0
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -37739,12 +37739,12 @@ _021F982C:
_021F98A0:
str r0, [r8, #0x3c]
mov r0, r5
- bl FUN_021DD860
+ bl MOD04_021DD860
cmp r0, #0
bne _021F98D0
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -37758,7 +37758,7 @@ _021F98D0:
ldr r0, [r8, #0x38]
mov r2, r5
ldr r0, [r3, r0, lsl #2]
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
ldr r0, [r8, #0x38]
add r0, r0, #1
str r0, [r8, #0x38]
@@ -37774,12 +37774,12 @@ _021F9904:
ble _021F9ABC
mov r1, r0, lsl #2
ldr r0, [r8, #0x40]
- bl FUN_021DD844
+ bl MOD04_021DD844
cmp r0, #0
bne _021F9954
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -37787,12 +37787,12 @@ _021F9904:
_021F9954:
str r0, [r8, #0x40]
mov r0, r4
- bl FUN_021DD860
+ bl MOD04_021DD860
cmp r0, #0
bne _021F9984
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -37808,7 +37808,7 @@ _021F9984:
mov r2, r4
sub r0, r0, #1
ldr r0, [r3, r0, lsl #2]
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
b _021F9ABC
.align 2, 0
_021F99B4: .word 0x000004EC
@@ -37869,11 +37869,11 @@ _021F9A74:
ldr r2, _021F9A64 ; =0x0220EA9C
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
@@ -37889,7 +37889,7 @@ _021F9ABC:
mov r0, sl
mov r3, r8
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021FA6F8
ldr ip, _021F99B4 ; =0x000004EC
@@ -37906,13 +37906,13 @@ _021F9AFC:
str r0, [sp, #0xc8]
beq _021FA6F8
mov r0, #0x10
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [sp, #0x28]
cmp r0, #0
bne _021F9B50
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -37946,7 +37946,7 @@ _021F9BA8:
mov r0, sl
add r2, sp, #0x90
mov r3, r4
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -37972,7 +37972,7 @@ _021F9BA8:
ldr r0, [r0, #0xc]
ldr r3, [r1, #8]
mul r1, r3, r2
- bl FUN_021DD844
+ bl MOD04_021DD844
ldr r1, [sp, #0x28]
str r0, [r1, #0xc]
mov r0, r1
@@ -37981,7 +37981,7 @@ _021F9BA8:
bne _021F9C5C
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -38008,7 +38008,7 @@ _021F9C94:
ldr r1, [sb, #8]
add r2, sp, #0x90
mov r3, r4
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -38021,7 +38021,7 @@ _021F9C94:
ldr r2, [sp, #0x64]
add r0, r8, #0x28
mov r1, r5
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
b _021F9D0C
_021F9CE8:
ldr r1, _021F9A50 ; =0x0220EA68
@@ -38032,7 +38032,7 @@ _021F9CE8:
ldr r2, [sp, #0x68]
add r0, r8, #4
mov r1, r5
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021F9D0C:
ldr r1, _021FA738 ; =0x0220EAE8
mov r0, r4
@@ -38065,11 +38065,11 @@ _021F9D6C:
ldr r2, _021F9A64 ; =0x0220EA9C
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
@@ -38086,7 +38086,7 @@ _021F9D9C:
add r1, sp, #0xc4
mov r0, sl
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021FA6F8
ldr ip, _021F99B4 ; =0x000004EC
@@ -38108,7 +38108,7 @@ _021F9DE0:
add r2, sp, #0x90
add r3, sp, #0xec
mov r0, sl
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -38121,11 +38121,11 @@ _021F9DE0:
ldr r2, _021F9A64 ; =0x0220EA9C
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
@@ -38142,17 +38142,17 @@ _021F9E74:
ldr r1, _021FA740 ; =0x0220EAF8
add r2, sp, #0x2ec
mov r3, #0x200
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021F9EDC
ldr r2, _021F9A64 ; =0x0220EA9C
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
@@ -38163,12 +38163,12 @@ _021F9EDC:
mov r4, r0
_021F9EE8:
mov r0, #8
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r3, r0
bne _021F9F14
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -38183,7 +38183,7 @@ _021F9F14:
add r1, sp, #0xbc
mov r0, sl
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021FA6F8
ldr ip, _021F99B4 ; =0x000004EC
@@ -38205,7 +38205,7 @@ _021F9F50:
add r2, sp, #0x90
add r3, sp, #0xec
mov r0, sl
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -38218,11 +38218,11 @@ _021F9F50:
ldr r2, _021F9A64 ; =0x0220EA9C
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
@@ -38237,7 +38237,7 @@ _021F9FE4:
ldr r0, [sb, #8]
add r2, sp, #0x2ec
mov r3, #0x200
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
bne _021FA054
cmp r5, #0
@@ -38245,11 +38245,11 @@ _021F9FE4:
ldr r2, _021F9A64 ; =0x0220EA9C
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
@@ -38263,12 +38263,12 @@ _021FA054:
mov r4, r0
_021FA060:
mov r0, #8
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r3, r0
bne _021FA08C
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -38283,7 +38283,7 @@ _021FA08C:
add r1, sp, #0xb4
mov r0, sl
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021FA6F8
ldr ip, _021F99B4 ; =0x000004EC
@@ -38300,13 +38300,13 @@ _021FA0C8:
str r0, [sp, #0xb0]
beq _021FA6F8
mov r0, #0xc
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [sp, #0x2c]
cmp r0, #0
bne _021FA11C
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -38322,7 +38322,7 @@ _021FA11C:
add r2, sp, #0x90
add r3, sp, #0xec
mov r0, sl
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -38335,11 +38335,11 @@ _021FA11C:
ldr r2, _021F9A64 ; =0x0220EA9C
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
@@ -38368,7 +38368,7 @@ _021FA1E0:
mov r0, sl
add r2, sp, #0x90
mov r3, r5
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -38392,12 +38392,12 @@ _021FA1E0:
add r2, r2, #1
mul r1, r2, r1
ldr r0, [r0, #8]
- bl FUN_021DD844
+ bl MOD04_021DD844
cmp r0, #0
bne _021FA27C
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -38431,7 +38431,7 @@ _021FA2D0:
ldr r1, [sb, #8]
add r2, sp, #0x90
mov r3, r5
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -38444,7 +38444,7 @@ _021FA2D0:
add r0, r8, #4
mov r1, r6
mov r2, r4
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
b _021FA3F4
_021FA324:
ldr r1, _021F9A54 ; =0x0220EA70
@@ -38455,7 +38455,7 @@ _021FA324:
ldr r2, [sp, #0x7c]
add r0, r8, #0x23
mov r1, r6
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
b _021FA3F4
_021FA34C:
ldr r1, _021FA754 ; =0x0220EB18
@@ -38466,7 +38466,7 @@ _021FA34C:
add r0, r8, #0x38
mov r1, r6
mov r2, r4
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
b _021FA3F4
_021FA374:
ldr r1, _021FA758 ; =0x0220EB20
@@ -38477,7 +38477,7 @@ _021FA374:
add r0, r8, #0x57
mov r1, r6
mov r2, r4
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
b _021FA3F4
_021FA39C:
ldr r1, _021F9A60 ; =0x0220EA94
@@ -38488,7 +38488,7 @@ _021FA39C:
ldr r2, [sp, #0x80]
add r0, r8, #0x76
mov r1, r6
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
b _021FA3F4
_021FA3C4:
ldr r1, _021FA750 ; =0x0220EB14
@@ -38512,11 +38512,11 @@ _021FA400:
ldr r2, _021F9A64 ; =0x0220EA9C
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
@@ -38533,7 +38533,7 @@ _021FA430:
add r1, sp, #0xac
mov r0, sl
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021FA6F8
ldr ip, _021F99B4 ; =0x000004EC
@@ -38551,12 +38551,12 @@ _021FA474:
beq _021FA6F8
mov r0, #0xc
mov r8, #0
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r7, r0
bne _021FA4C8
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -38572,7 +38572,7 @@ _021FA4C8:
add r2, sp, #0x90
add r3, sp, #0xec
mov r0, sl
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -38585,11 +38585,11 @@ _021FA4C8:
ldr r2, _021F9A64 ; =0x0220EA9C
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
@@ -38600,14 +38600,14 @@ _021FA548:
str r0, [r7, #4]
ldr r0, [r7, #4]
mov r0, r0, lsl #2
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [r7, #8]
ldr r0, [r7, #8]
cmp r0, #0
bne _021FA58C
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -38626,7 +38626,7 @@ _021FA5A8:
mov r0, sl
add r2, sp, #0x90
mov r3, r5
- bl FUN_021FAF2C
+ bl MOD04_021FAF2C
cmp r0, #0
ldrne ip, _021F99B4 ; =0x000004EC
addne sp, sp, ip
@@ -38637,7 +38637,7 @@ _021FA5A8:
cmp r0, #0
bne _021FA634
mov r0, r4
- bl FUN_021DD860
+ bl MOD04_021DD860
ldr r1, [r7, #8]
str r0, [r1, r8, lsl #2]
ldr r0, [r7, #8]
@@ -38646,7 +38646,7 @@ _021FA5A8:
bne _021FA620
ldr r1, _021F9A4C ; =0x0220E8A0
mov r0, sl
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #1
add sp, sp, ip
@@ -38654,7 +38654,7 @@ _021FA5A8:
_021FA620:
mov r1, fp
mov r2, r4
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
add r8, r8, #1
b _021FA6A4
_021FA634:
@@ -38679,11 +38679,11 @@ _021FA674:
ldr r2, _021F9A64 ; =0x0220EA9C
mov r0, sl
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, sl
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
ldr ip, _021F99B4 ; =0x000004EC
mov r0, #3
add sp, sp, ip
@@ -38699,7 +38699,7 @@ _021FA6A4:
mov r0, sl
mov r3, r7
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
beq _021FA6F8
ldr ip, _021F99B4 ; =0x000004EC
@@ -38719,7 +38719,7 @@ _021FA704:
cmp r4, #0
beq _021FA714
mov r0, #0xa
- bl FUN_021F0250
+ bl MOD04_021F0250
_021FA714:
cmp r4, #0
bne _021F8B04
@@ -38746,8 +38746,8 @@ _021FA764: .word 0x0220EB34
_021FA768: .word 0x00000515
_021FA76C: .word 0x0000052A
- arm_func_start FUN_021FA770
-FUN_021FA770: ; 0x021FA770
+ arm_func_start MOD04_021FA770
+MOD04_021FA770: ; 0x021FA770
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0xc
movs r8, r1
@@ -38790,7 +38790,7 @@ _021FA7DC:
_021FA7FC:
ldr r1, _021FA958 ; =0x0220EB54
mov r0, sb
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0xc
mov r0, #2
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
@@ -38798,7 +38798,7 @@ _021FA814:
add r1, sp, #4
mov r0, sb
mov r2, #1
- bl FUN_021FA9F0
+ bl MOD04_021FA9F0
cmp r0, #0
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc}
@@ -38811,7 +38811,7 @@ _021FA814:
mov r1, r8
add r0, r0, #0x28
mov r2, #0x1f
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021FA858:
cmp r7, #0
ldreq r0, [sp, #4]
@@ -38822,7 +38822,7 @@ _021FA858:
mov r1, r7
add r0, r0, #0x47
mov r2, #0x15
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021FA880:
cmp r6, #0
ldreq r0, [sp, #4]
@@ -38833,11 +38833,11 @@ _021FA880:
mov r1, r6
add r0, r0, #0x5c
mov r2, #0x33
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021FA8A8:
ldr r0, [sp, #4]
add r0, r0, #0x5c
- bl FUN_021F01C4
+ bl MOD04_021F01C4
cmp r5, #0
ldreq r0, [sp, #4]
moveq r1, #0
@@ -38847,7 +38847,7 @@ _021FA8A8:
mov r1, r5
add r0, r0, #0x8f
mov r2, #0x1f
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021FA8DC:
cmp r4, #0
ldreq r0, [sp, #4]
@@ -38858,7 +38858,7 @@ _021FA8DC:
mov r1, r4
add r0, r0, #0xae
mov r2, #0x1f
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
_021FA904:
ldr r0, [sp, #0x34]
ldr r2, [sp, #0x30]
@@ -38876,7 +38876,7 @@ _021FA904:
ldr r2, [sp, #0x38]
ldr r3, [sp, #0x3c]
mov r0, sb
- bl FUN_021FA95C
+ bl MOD04_021FA95C
cmp r0, #0
moveq r0, #0
add sp, sp, #0xc
@@ -38884,8 +38884,8 @@ _021FA904:
.align 2, 0
_021FA958: .word 0x0220EB54
- arm_func_start FUN_021FA95C
-FUN_021FA95C: ; 0x021FA95C
+ arm_func_start MOD04_021FA95C
+MOD04_021FA95C: ; 0x021FA95C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x14
mov r5, r0
@@ -38900,13 +38900,13 @@ FUN_021FA95C: ; 0x021FA95C
add r3, sp, #0xc
mov r1, #3
str ip, [sp, #8]
- bl FUN_021F6D8C
+ bl MOD04_021F6D8C
cmp r0, #0
addne sp, sp, #0x14
ldmneia sp!, {r4, r5, pc}
ldr r1, [sp, #0xc]
mov r0, r5
- bl FUN_021FAAB4
+ bl MOD04_021FAAB4
cmp r0, #0
addne sp, sp, #0x14
ldmneia sp!, {r4, r5, pc}
@@ -38916,7 +38916,7 @@ FUN_021FA95C: ; 0x021FA95C
beq _021FA9E4
ldr r1, [r1, #0x18]
mov r0, r5
- bl FUN_021F0FD4
+ bl MOD04_021F0FD4
cmp r0, #0
addne sp, sp, #0x14
ldmneia sp!, {r4, r5, pc}
@@ -38925,20 +38925,20 @@ _021FA9E4:
add sp, sp, #0x14
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021FA9F0
-FUN_021FA9F0: ; 0x021FA9F0
+ arm_func_start MOD04_021FA9F0
+MOD04_021FA9F0: ; 0x021FA9F0
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r6, r0
mov r0, #0x144
mov r5, r1
mov r7, r2
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
bne _021FAA2C
ldr r1, _021FAAB0 ; =0x0220E8A0
mov r0, r6
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #4
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -38960,7 +38960,7 @@ _021FAA2C:
str r0, [r4, #0x1c]
ldr r0, [r4, #0x1c]
add r0, r0, #1
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [r4, #0x18]
ldr r0, [r4, #0x18]
cmp r0, #0
@@ -38972,15 +38972,15 @@ _021FAA2C:
ldmneia sp!, {r4, r5, r6, r7, pc}
ldr r1, _021FAAB0 ; =0x0220E8A0
mov r0, r6
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
mov r0, #1
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_021FAAB0: .word 0x0220E8A0
- arm_func_start FUN_021FAAB4
-FUN_021FAAB4: ; 0x021FAAB4
+ arm_func_start MOD04_021FAAB4
+MOD04_021FAAB4: ; 0x021FAAB4
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r5, r1
@@ -38990,14 +38990,14 @@ FUN_021FAAB4: ; 0x021FAAB4
ldr r1, [r4, #0xc]
mov r6, r0
add r0, r1, #1
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [r4, #8]
ldr r0, [r4, #8]
cmp r0, #0
bne _021FAB04
ldr r1, _021FAC9C ; =0x0220E8A0
mov r0, r6
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #8
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
@@ -39005,7 +39005,7 @@ _021FAB04:
mov r0, #2
mov r1, #1
mov r2, #0
- bl FUN_021EFDB8
+ bl MOD04_021EFDB8
str r0, [r4, #4]
ldr r0, [r4, #4]
mvn r1, #0
@@ -39014,27 +39014,27 @@ _021FAB04:
ldr r2, _021FACA0 ; =0x0220EB68
mov r0, r6
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #8
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
_021FAB54:
mov r1, #0
- bl FUN_021F017C
+ bl MOD04_021F017C
cmp r0, #0
bne _021FAB90
ldr r2, _021FACA4 ; =0x0220EB90
mov r0, r6
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #8
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
@@ -39046,11 +39046,11 @@ _021FAB90:
ldr r2, _021FACAC ; =0x0220EBC4
mov r0, r6
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #8
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
@@ -39077,12 +39077,12 @@ _021FAC0C:
strh r0, [sp, #2]
ldr r0, [r4, #4]
mov r2, #8
- bl FUN_021EFCE4
+ bl MOD04_021EFCE4
mvn r1, #0
cmp r0, r1
bne _021FAC88
ldr r0, [r4, #4]
- bl FUN_021EFB28
+ bl MOD04_021EFB28
mvn r1, #5
cmp r0, r1
beq _021FAC88
@@ -39095,11 +39095,11 @@ _021FAC0C:
ldr r2, _021FACBC ; =0x0220EC14
mov r0, r6
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #8
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
@@ -39120,8 +39120,8 @@ _021FACB4: .word 0x0220E8D0
_021FACB8: .word 0x0000CD74
_021FACBC: .word 0x0220EC14
- arm_func_start FUN_021FACC0
-FUN_021FACC0: ; 0x021FACC0
+ arm_func_start MOD04_021FACC0
+MOD04_021FACC0: ; 0x021FACC0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x54
mov r4, r1
@@ -39130,7 +39130,7 @@ FUN_021FACC0: ; 0x021FACC0
ldr r1, _021FAD3C ; =0x0220EC3C
add r2, sp, #4
mov r3, #0x40
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
addeq sp, sp, #0x54
ldmeqia sp!, {r4, r5, pc}
@@ -39150,15 +39150,15 @@ FUN_021FACC0: ; 0x021FACC0
mov r2, r4
mov r3, #2
str ip, [sp]
- bl FUN_021FAD44
+ bl MOD04_021FAD44
add sp, sp, #0x54
ldmia sp!, {r4, r5, pc}
.align 2, 0
_021FAD3C: .word 0x0220EC3C
_021FAD40: .word 0x0220EC44
- arm_func_start FUN_021FAD44
-FUN_021FAD44: ; 0x021FAD44
+ arm_func_start MOD04_021FAD44
+MOD04_021FAD44: ; 0x021FAD44
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x20
ldr ip, [sp, #0x30]
@@ -39173,7 +39173,7 @@ FUN_021FAD44: ; 0x021FAD44
mov r1, r5
mov r3, lr
mov r2, #0xc9
- bl FUN_021F726C
+ bl MOD04_021F726C
cmp r0, #0
addne sp, sp, #0x20
ldmneia sp!, {r4, r5, r6, pc}
@@ -39185,7 +39185,7 @@ FUN_021FAD44: ; 0x021FAD44
add r2, sp, #0
mov r0, r6
mov r1, r5
- bl FUN_021F2C58
+ bl MOD04_021F2C58
cmp r0, #0
addne sp, sp, #0x20
ldmneia sp!, {r4, r5, r6, pc}
@@ -39193,7 +39193,7 @@ FUN_021FAD44: ; 0x021FAD44
mov r0, r6
mov r1, r5
mvn r3, #0
- bl FUN_021F7184
+ bl MOD04_021F7184
cmp r0, #0
moveq r0, #0
add sp, sp, #0x20
@@ -39202,8 +39202,8 @@ FUN_021FAD44: ; 0x021FAD44
_021FADE0: .word 0x0220EC50
_021FADE4: .word 0x0220EC54
- arm_func_start FUN_021FADE8
-FUN_021FADE8: ; 0x021FADE8
+ arm_func_start MOD04_021FADE8
+MOD04_021FADE8: ; 0x021FADE8
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x10
mov r4, r2
@@ -39211,7 +39211,7 @@ FUN_021FADE8: ; 0x021FADE8
mov r1, r4
mov r2, #1
mov r6, r0
- bl FUN_021FB2F8
+ bl MOD04_021FB2F8
cmp r0, #0
addne sp, sp, #0x10
movne r0, #4
@@ -39225,11 +39225,11 @@ FUN_021FADE8: ; 0x021FADE8
ldr r2, _021FAEE4 ; =0x0220EC74
mov r0, r6
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r6
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0x10
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
@@ -39241,12 +39241,12 @@ _021FAE5C:
str r0, [sp, #0xc]
beq _021FAEC8
mov r0, #4
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r3, r0
bne _021FAE9C
ldr r1, _021FAEE8 ; =0x0220ECA4
mov r0, r6
- bl FUN_021FAEEC
+ bl MOD04_021FAEEC
add sp, sp, #0x10
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
@@ -39258,14 +39258,14 @@ _021FAE9C:
add r1, sp, #8
mov r0, r6
ldmia r1, {r1, r2}
- bl FUN_021F3454
+ bl MOD04_021F3454
cmp r0, #0
addne sp, sp, #0x10
ldmneia sp!, {r4, r5, r6, pc}
_021FAEC8:
mov r0, r6
mov r1, r5
- bl FUN_021F6C84
+ bl MOD04_021F6C84
mov r0, #0
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, pc}
@@ -39274,17 +39274,17 @@ _021FAEE0: .word 0x0220EC6C
_021FAEE4: .word 0x0220EC74
_021FAEE8: .word 0x0220ECA4
- arm_func_start FUN_021FAEEC
-FUN_021FAEEC: ; 0x021FAEEC
- ldr ip, _021FAEFC ; =FUN_021FB3DC
+ arm_func_start MOD04_021FAEEC
+MOD04_021FAEEC: ; 0x021FAEEC
+ ldr ip, _021FAEFC ; =MOD04_021FB3DC
ldr r0, [r0]
mov r2, #0x100
bx ip
.align 2, 0
-_021FAEFC: .word FUN_021FB3DC
+_021FAEFC: .word MOD04_021FB3DC
- arm_func_start FUN_021FAF00
-FUN_021FAF00: ; 0x021FAF00
+ arm_func_start MOD04_021FAF00
+MOD04_021FAF00: ; 0x021FAF00
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r4, [r0]
@@ -39292,13 +39292,13 @@ FUN_021FAF00: ; 0x021FAF00
mov r1, r2
mov r0, r4
mov r2, #0x100
- bl FUN_021FB3DC
+ bl MOD04_021FB3DC
str r5, [r4, #0x418]
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021FAF2C
-FUN_021FAF2C: ; 0x021FAF2C
+ arm_func_start MOD04_021FAF2C
+MOD04_021FAF2C: ; 0x021FAF2C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
movs r7, r1
mov r8, r0
@@ -39336,11 +39336,11 @@ _021FAF94:
ldr r2, _021FB0F4 ; =0x0220ECF0
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_021FAFD0:
@@ -39356,11 +39356,11 @@ _021FAFE8:
ldr r2, _021FB0F4 ; =0x0220ECF0
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_021FB018:
@@ -39369,11 +39369,11 @@ _021FB018:
ldr r2, _021FB0F4 ; =0x0220ECF0
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_021FB048:
@@ -39393,11 +39393,11 @@ _021FB06C:
ldr r2, _021FB0F4 ; =0x0220ECF0
mov r0, r8
mov r1, #1
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r8
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_021FB09C:
@@ -39429,8 +39429,8 @@ _021FB0F0: .word 0x0000019B
_021FB0F4: .word 0x0220ECF0
_021FB0F8: .word 0x000001FF
- arm_func_start FUN_021FB0FC
-FUN_021FB0FC: ; 0x021FB0FC
+ arm_func_start MOD04_021FB0FC
+MOD04_021FB0FC: ; 0x021FB0FC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
mov ip, #0
@@ -39442,21 +39442,21 @@ FUN_021FB0FC: ; 0x021FB0FC
mov r1, ip
str ip, [sp]
str ip, [sp, #4]
- bl FUN_021EFF5C
+ bl MOD04_021EFF5C
mvn r1, #0
cmp r0, r1
bne _021FB170
ldr r1, _021FB1E0 ; =0x0220ED00
mov r0, r5
- bl FUN_021FB3D0
+ bl MOD04_021FB3D0
ldr r2, _021FB1E4 ; =0x0220ED14
mov r0, r5
mov r1, #5
- bl FUN_021FAF00
+ bl MOD04_021FAF00
mov r0, r5
mov r1, #3
mov r2, #1
- bl FUN_021F3500
+ bl MOD04_021F3500
add sp, sp, #0xc
mov r0, #3
ldmia sp!, {r4, r5, pc}
@@ -39468,7 +39468,7 @@ _021FB170:
beq _021FB1A4
ldr r1, _021FB1E8 ; =0x0220ED4C
mov r0, r5
- bl FUN_021FB3D0
+ bl MOD04_021FB3D0
mov r0, #4
str r0, [r4]
add sp, sp, #0xc
@@ -39480,7 +39480,7 @@ _021FB1A4:
beq _021FB1D0
ldr r1, _021FB1EC ; =0x0220ED64
mov r0, r5
- bl FUN_021FB3D0
+ bl MOD04_021FB3D0
mov r0, #3
str r0, [r4]
add sp, sp, #0xc
@@ -39497,8 +39497,8 @@ _021FB1E4: .word 0x0220ED14
_021FB1E8: .word 0x0220ED4C
_021FB1EC: .word 0x0220ED64
- arm_func_start FUN_021FB1F0
-FUN_021FB1F0: ; 0x021FB1F0
+ arm_func_start MOD04_021FB1F0
+MOD04_021FB1F0: ; 0x021FB1F0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
movs r5, r0
mov r8, r1
@@ -39574,8 +39574,8 @@ _021FB2EC: .word 0x0220ECE0
_021FB2F0: .word 0x0000010F
_021FB2F4: .word 0x0220ED8C
- arm_func_start FUN_021FB2F8
-FUN_021FB2F8: ; 0x021FB2F8
+ arm_func_start MOD04_021FB2F8
+MOD04_021FB2F8: ; 0x021FB2F8
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x14
mov r6, r1
@@ -39592,7 +39592,7 @@ FUN_021FB2F8: ; 0x021FB2F8
add r2, sp, #0
mov r0, r6
mov r3, #0x10
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
beq _021FB350
add r0, sp, #0
@@ -39603,7 +39603,7 @@ _021FB350:
mov r0, r6
mov r2, r4
mov r3, #0x100
- bl FUN_021FB1F0
+ bl MOD04_021FB1F0
cmp r0, #0
moveq r0, #0
streqb r0, [r4]
@@ -39620,7 +39620,7 @@ _021FB350:
moveq r2, #0
mov r0, r7
mov r1, #4
- bl FUN_021F3500
+ bl MOD04_021F3500
_021FB3A8:
add sp, sp, #0x14
mov r0, #1
@@ -39635,14 +39635,14 @@ _021FB3C4: .word 0x0220ED9C
_021FB3C8: .word 0x0220EDA4
_021FB3CC: .word 0x0220EDB0
- arm_func_start FUN_021FB3D0
-FUN_021FB3D0: ; 0x021FB3D0
+ arm_func_start MOD04_021FB3D0
+MOD04_021FB3D0: ; 0x021FB3D0
stmdb sp!, {r0, r1, r2, r3}
add sp, sp, #0x10
bx lr
- arm_func_start FUN_021FB3DC
-FUN_021FB3DC: ; 0x021FB3DC
+ arm_func_start MOD04_021FB3DC
+MOD04_021FB3DC: ; 0x021FB3DC
stmdb sp!, {r4, r5, r6, lr}
movs r6, r0
mov r5, r1
@@ -39675,8 +39675,8 @@ _021FB440: .word 0x0220EDB8
_021FB444: .word 0x0220ECC4
_021FB448: .word 0x0220EDC8
- arm_func_start FUN_021FB44C
-FUN_021FB44C: ; 0x021FB44C
+ arm_func_start MOD04_021FB44C
+MOD04_021FB44C: ; 0x021FB44C
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x24
ldr r0, _021FB520 ; =0x02210F84
@@ -39684,7 +39684,7 @@ FUN_021FB44C: ; 0x021FB44C
cmp r0, #0
addeq sp, sp, #0x24
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
- bl FUN_021EF06C
+ bl MOD04_021EF06C
subs r4, r0, #1
bmi _021FB500
ldr r5, _021FB524 ; =0x0220BBC8
@@ -39716,19 +39716,19 @@ _021FB4B8:
mov r0, r8
mov r1, r7
str sb, [r5]
- bl FUN_021FBCB8
+ bl MOD04_021FBCB8
mov r0, r4
mov r1, r6
mov r2, r6
mov r3, r8
str r6, [sp]
- bl FUN_021FB530
+ bl MOD04_021FB530
subs r4, r4, #1
bpl _021FB4AC
_021FB500:
ldr r0, _021FB520 ; =0x02210F84
ldr r0, [r0]
- bl FUN_021EF074
+ bl MOD04_021EF074
ldr r0, _021FB520 ; =0x02210F84
mov r1, #0
str r1, [r0]
@@ -39740,8 +39740,8 @@ _021FB524: .word 0x0220BBC8
_021FB528: .word 0x0220EDEC
_021FB52C: .word 0x0220EDD8
- arm_func_start FUN_021FB530
-FUN_021FB530: ; 0x021FB530
+ arm_func_start MOD04_021FB530
+MOD04_021FB530: ; 0x021FB530
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x14
movs r7, r0
@@ -39752,14 +39752,14 @@ FUN_021FB530: ; 0x021FB530
ldmmiia sp!, {r4, r5, r6, r7, pc}
ldr r0, _021FB650 ; =0x02210F84
ldr r0, [r0]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r7, r0
addge sp, sp, #0x14
ldmgeia sp!, {r4, r5, r6, r7, pc}
ldr r0, _021FB650 ; =0x02210F84
mov r1, r7
ldr r0, [r0]
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
mov r3, r0
ldr ip, [r3, #0x18]
cmp ip, #0
@@ -39817,19 +39817,19 @@ _021FB638:
ldr r0, _021FB650 ; =0x02210F84
mov r1, r7
ldr r0, [r0]
- bl FUN_021EED84
+ bl MOD04_021EED84
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_021FB650: .word 0x02210F84
- arm_func_start FUN_021FB654
-FUN_021FB654: ; 0x021FB654
+ arm_func_start MOD04_021FB654
+MOD04_021FB654: ; 0x021FB654
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov sb, r1
mov sl, r0
mov r7, sb
- bl FUN_021FBB3C
+ bl MOD04_021FBB3C
mov r8, r0
ldr r5, _021FB6D4 ; =0x0220EDDC
ldr r4, _021FB6D8 ; =0x0220EDD8
@@ -39839,10 +39839,10 @@ _021FB678:
mov r0, sl
mov r1, r6
str r5, [r4]
- bl FUN_021FBCB8
+ bl MOD04_021FBCB8
mov r0, sl
mov r1, r6
- bl FUN_021FB6DC
+ bl MOD04_021FB6DC
add r0, r6, #7
sub sb, sb, r0
cmp sb, #0
@@ -39850,7 +39850,7 @@ _021FB678:
ble _021FB6BC
mov r0, sl
mov r1, sb
- bl FUN_021FBB3C
+ bl MOD04_021FBB3C
mov r8, r0
_021FB6BC:
cmp sb, #0
@@ -39864,8 +39864,8 @@ _021FB6CC:
_021FB6D4: .word 0x0220EDDC
_021FB6D8: .word 0x0220EDD8
- arm_func_start FUN_021FB6DC
-FUN_021FB6DC: ; 0x021FB6DC
+ arm_func_start MOD04_021FB6DC
+MOD04_021FB6DC: ; 0x021FB6DC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r1
@@ -39879,7 +39879,7 @@ FUN_021FB6DC: ; 0x021FB6DC
bne _021FB71C
mov r0, r5
mov r1, r4
- bl FUN_021FBA00
+ bl MOD04_021FBA00
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
_021FB71C:
@@ -39891,7 +39891,7 @@ _021FB71C:
bne _021FB748
mov r0, r5
mov r1, r4
- bl FUN_021FB968
+ bl MOD04_021FB968
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
_021FB748:
@@ -39903,7 +39903,7 @@ _021FB748:
bne _021FB774
mov r0, r5
mov r1, r4
- bl FUN_021FB968
+ bl MOD04_021FB968
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
_021FB774:
@@ -39915,7 +39915,7 @@ _021FB774:
bne _021FB7A0
mov r0, r5
mov r1, r4
- bl FUN_021FB884
+ bl MOD04_021FB884
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
_021FB7A0:
@@ -39928,7 +39928,7 @@ _021FB7A0:
ldmneia sp!, {r4, r5, pc}
mov r0, r5
mov r1, r4
- bl FUN_021FB7E0
+ bl MOD04_021FB7E0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
@@ -39937,34 +39937,34 @@ _021FB7D4: .word 0x0220EE08
_021FB7D8: .word 0x0220EE14
_021FB7DC: .word 0x0220EE20
- arm_func_start FUN_021FB7E0
-FUN_021FB7E0: ; 0x021FB7E0
+ arm_func_start MOD04_021FB7E0
+MOD04_021FB7E0: ; 0x021FB7E0
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
ldr r1, _021FB874 ; =0x0220EE2C
mov r7, r0
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
bl atol
mov r6, r0
ldr r1, _021FB878 ; =0x0220EE34
mov r0, r7
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
bl atol
mov r5, r0
ldr r1, _021FB87C ; =0x0220EE38
mov r0, r7
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
bl atol
mov r4, r0
ldr r1, _021FB880 ; =0x0220EE3C
mov r0, r7
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
bl atol
mov r1, r4
mov r4, r0
mov r2, r5
mov r0, #2
- bl FUN_021FBAB0
+ bl MOD04_021FBAB0
mvn r1, #0
cmp r0, r1
addeq sp, sp, #4
@@ -39973,7 +39973,7 @@ FUN_021FB7E0: ; 0x021FB7E0
mov r1, r6
mov r2, r4
str r3, [sp]
- bl FUN_021FB530
+ bl MOD04_021FB530
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
@@ -39982,34 +39982,34 @@ _021FB878: .word 0x0220EE34
_021FB87C: .word 0x0220EE38
_021FB880: .word 0x0220EE3C
- arm_func_start FUN_021FB884
-FUN_021FB884: ; 0x021FB884
+ arm_func_start MOD04_021FB884
+MOD04_021FB884: ; 0x021FB884
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #8
ldr r1, _021FB94C ; =0x0220EE40
mov r4, r0
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
bl atol
mov r7, r0
ldr r1, _021FB950 ; =0x0220EE38
mov r0, r4
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
bl atol
mov r6, r0
ldr r1, _021FB954 ; =0x0220EE34
mov r0, r4
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
bl atol
mov r5, r0
ldr r1, _021FB958 ; =0x0220EE3C
mov r0, r4
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
bl atol
mov r2, r5
mov r5, r0
mov r1, r6
mov r0, #1
- bl FUN_021FBAB0
+ bl MOD04_021FBAB0
mov r8, r0
mvn r0, #0
cmp r8, r0
@@ -40017,7 +40017,7 @@ FUN_021FB884: ; 0x021FB884
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
ldr r1, _021FB95C ; =0x0220EE48
mov r0, r4
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
bl atol
mov r6, r0
ldr r1, _021FB960 ; =0x0220EE50
@@ -40031,7 +40031,7 @@ FUN_021FB884: ; 0x021FB884
mov r1, r7
mov r2, r5
str r6, [sp]
- bl FUN_021FB530
+ bl MOD04_021FB530
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
@@ -40043,23 +40043,23 @@ _021FB95C: .word 0x0220EE48
_021FB960: .word 0x0220EE50
_021FB964: .word 0x0220EE58
- arm_func_start FUN_021FB968
-FUN_021FB968: ; 0x021FB968
+ arm_func_start MOD04_021FB968
+MOD04_021FB968: ; 0x021FB968
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r1, _021FB9F4 ; =0x0220EE5C
mov r5, r0
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
bl atol
mov r4, r0
ldr r1, _021FB9F8 ; =0x0220EE38
mov r0, r5
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
bl atol
mov r1, r0
mov r0, #3
mov r2, #0
- bl FUN_021FBAB0
+ bl MOD04_021FBAB0
mov r5, r0
mvn r0, #0
cmp r5, r0
@@ -40068,7 +40068,7 @@ FUN_021FB968: ; 0x021FB968
ldr r0, _021FB9FC ; =0x02210F84
mov r1, r5
ldr r0, [r0]
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
cmp r4, #0
movgt r1, #1
mov r2, #0
@@ -40077,7 +40077,7 @@ FUN_021FB968: ; 0x021FB968
mov r0, r5
mov r3, r2
str r2, [sp]
- bl FUN_021FB530
+ bl MOD04_021FB530
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
@@ -40085,28 +40085,28 @@ _021FB9F4: .word 0x0220EE5C
_021FB9F8: .word 0x0220EE38
_021FB9FC: .word 0x02210F84
- arm_func_start FUN_021FBA00
-FUN_021FBA00: ; 0x021FBA00
+ arm_func_start MOD04_021FBA00
+MOD04_021FBA00: ; 0x021FBA00
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
ldr r1, _021FBAA0 ; =0x0220EE64
mov r6, r0
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
bl atol
mov r5, r0
ldr r1, _021FBAA4 ; =0x0220EE38
mov r0, r6
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
bl atol
mov r4, r0
ldr r1, _021FBAA8 ; =0x0220EE6C
mov r0, r6
- bl FUN_021FBBC8
+ bl MOD04_021FBBC8
mov r1, r4
mov r4, r0
mov r0, #0
mov r2, r0
- bl FUN_021FBAB0
+ bl MOD04_021FBAB0
mov r6, r0
mvn r0, #0
cmp r6, r0
@@ -40115,7 +40115,7 @@ FUN_021FBA00: ; 0x021FBA00
ldr r0, _021FBAAC ; =0x02210F84
mov r1, r6
ldr r0, [r0]
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
cmp r5, #0
movgt r1, #1
str r5, [r0, #8]
@@ -40124,7 +40124,7 @@ FUN_021FBA00: ; 0x021FBA00
mov r0, r6
mov r3, r4
str r2, [sp]
- bl FUN_021FB530
+ bl MOD04_021FB530
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
@@ -40133,8 +40133,8 @@ _021FBAA4: .word 0x0220EE38
_021FBAA8: .word 0x0220EE6C
_021FBAAC: .word 0x02210F84
- arm_func_start FUN_021FBAB0
-FUN_021FBAB0: ; 0x021FBAB0
+ arm_func_start MOD04_021FBAB0
+MOD04_021FBAB0: ; 0x021FBAB0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr r3, _021FBB38 ; =0x02210F84
mov r7, r0
@@ -40145,14 +40145,14 @@ FUN_021FBAB0: ; 0x021FBAB0
mvneq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
mov r4, #0
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
ble _021FBB30
ldr r8, _021FBB38 ; =0x02210F84
_021FBAE8:
ldr r0, [r8]
mov r1, r4
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r1, [r0]
cmp r1, r7
bne _021FBB1C
@@ -40166,7 +40166,7 @@ _021FBAE8:
_021FBB1C:
ldr r0, [r8]
add r4, r4, #1
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r4, r0
blt _021FBAE8
_021FBB30:
@@ -40175,8 +40175,8 @@ _021FBB30:
.align 2, 0
_021FBB38: .word 0x02210F84
- arm_func_start FUN_021FBB3C
-FUN_021FBB3C: ; 0x021FBB3C
+ arm_func_start MOD04_021FBB3C
+MOD04_021FBB3C: ; 0x021FBB3C
sub r2, r1, #6
mov r3, r0
cmp r2, #0
@@ -40213,18 +40213,18 @@ _021FBBB4:
mov r0, #0
bx lr
- arm_func_start FUN_021FBBBC
-FUN_021FBBBC: ; 0x021FBBBC
- ldr ip, _021FBBC4 ; =FUN_021EFF2C
+ arm_func_start MOD04_021FBBBC
+MOD04_021FBBBC: ; 0x021FBBBC
+ ldr ip, _021FBBC4 ; =MOD04_021EFF2C
bx ip
.align 2, 0
-_021FBBC4: .word FUN_021EFF2C
+_021FBBC4: .word MOD04_021EFF2C
- arm_func_start FUN_021FBBC8
-FUN_021FBBC8: ; 0x021FBBC8
+ arm_func_start MOD04_021FBBC8
+MOD04_021FBBC8: ; 0x021FBBC8
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_021FBBE8
+ bl MOD04_021FBBE8
cmp r0, #0
ldreq r0, _021FBBE4 ; =0x0220EE58
add sp, sp, #4
@@ -40232,8 +40232,8 @@ FUN_021FBBC8: ; 0x021FBBC8
.align 2, 0
_021FBBE4: .word 0x0220EE58
- arm_func_start FUN_021FBBE8
-FUN_021FBBE8: ; 0x021FBBE8
+ arm_func_start MOD04_021FBBE8
+MOD04_021FBBE8: ; 0x021FBBE8
stmdb sp!, {r4, lr}
sub sp, sp, #0x100
ldr lr, _021FBCA8 ; =0x0220BBD8
@@ -40292,8 +40292,8 @@ _021FBCAC: .word 0x02210F8C
_021FBCB0: .word 0x0220EE74
_021FBCB4: .word 0x02211194
- arm_func_start FUN_021FBCB8
-FUN_021FBCB8: ; 0x021FBCB8
+ arm_func_start MOD04_021FBCB8
+MOD04_021FBCB8: ; 0x021FBCB8
stmdb sp!, {r4, lr}
ldr r2, _021FBCFC ; =0x0220EDD8
mov r4, #0
@@ -40315,8 +40315,8 @@ _021FBCD0:
.align 2, 0
_021FBCFC: .word 0x0220EDD8
- arm_func_start FUN_021FBD00
-FUN_021FBD00: ; 0x021FBD00
+ arm_func_start MOD04_021FBD00
+MOD04_021FBD00: ; 0x021FBD00
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
ldr r0, _021FBE48 ; =0x0220EDD4
mvn r1, #0
@@ -40329,7 +40329,7 @@ FUN_021FBD00: ; 0x021FBD00
cmp r1, #5
movne r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl FUN_021FBBBC
+ bl MOD04_021FBBBC
cmp r0, #0
beq _021FBE2C
ldr r8, _021FBE50 ; =0x02210F80
@@ -40351,7 +40351,7 @@ _021FBD54:
ldr r1, [sl]
ldr r0, [r8]
add r1, r1, #1
- bl FUN_021DD844
+ bl MOD04_021DD844
str r0, [r8]
cmp r0, #0
moveq r0, #0
@@ -40364,10 +40364,10 @@ _021FBD98:
mov r3, r5
add r1, r1, r4
sub r2, r2, r4
- bl FUN_021EFC78
+ bl MOD04_021EFC78
cmp r0, #0
bgt _021FBDCC
- bl FUN_021FBE7C
+ bl MOD04_021FBE7C
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_021FBDCC:
@@ -40378,7 +40378,7 @@ _021FBDCC:
strb r5, [r1, r0]
ldr r0, [r8]
ldr r1, [sb]
- bl FUN_021FB654
+ bl MOD04_021FB654
ldr r1, [sb]
mov r4, r0
cmp r4, r1
@@ -40393,7 +40393,7 @@ _021FBDCC:
str r0, [sb]
_021FBE1C:
ldr r0, [r7]
- bl FUN_021FBBBC
+ bl MOD04_021FBBBC
cmp r0, #0
bne _021FBD54
_021FBE2C:
@@ -40411,8 +40411,8 @@ _021FBE50: .word 0x02210F80
_021FBE54: .word 0x02210F90
_021FBE58: .word 0x02210F7C
- arm_func_start FUN_021FBE5C
-FUN_021FBE5C: ; 0x021FBE5C
+ arm_func_start MOD04_021FBE5C
+MOD04_021FBE5C: ; 0x021FBE5C
ldr r1, _021FBE78 ; =0x0220EDD4
mvn r0, #0
ldr r1, [r1]
@@ -40423,8 +40423,8 @@ FUN_021FBE5C: ; 0x021FBE5C
.align 2, 0
_021FBE78: .word 0x0220EDD4
- arm_func_start FUN_021FBE7C
-FUN_021FBE7C: ; 0x021FBE7C
+ arm_func_start MOD04_021FBE7C
+MOD04_021FBE7C: ; 0x021FBE7C
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _021FBEF8 ; =0x0220EDD4
@@ -40433,21 +40433,21 @@ FUN_021FBE7C: ; 0x021FBE7C
cmp r0, r1
beq _021FBEAC
mov r1, #2
- bl FUN_021EFD80
+ bl MOD04_021EFD80
ldr r0, _021FBEF8 ; =0x0220EDD4
ldr r0, [r0]
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
_021FBEAC:
ldr r0, _021FBEF8 ; =0x0220EDD4
mvn r1, #0
str r1, [r0]
- bl FUN_021FB44C
+ bl MOD04_021FB44C
ldr r0, _021FBEFC ; =0x02210F80
ldr r0, [r0]
cmp r0, #0
addeq sp, sp, #4
ldmeqia sp!, {pc}
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r2, _021FBEFC ; =0x02210F80
mov r3, #0
ldr r1, _021FBF00 ; =0x02210F90
@@ -40463,8 +40463,8 @@ _021FBEFC: .word 0x02210F80
_021FBF00: .word 0x02210F90
_021FBF04: .word 0x02210F7C
- arm_func_start FUN_021FBF08
-FUN_021FBF08: ; 0x021FBF08
+ arm_func_start MOD04_021FBF08
+MOD04_021FBF08: ; 0x021FBF08
mov ip, #0
_021FBF0C:
cmp ip, #0
@@ -40483,8 +40483,8 @@ _021FBF30:
mov r0, #1
bx lr
- arm_func_start FUN_021FBF44
-FUN_021FBF44: ; 0x021FBF44
+ arm_func_start MOD04_021FBF44
+MOD04_021FBF44: ; 0x021FBF44
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
mov r5, r0
@@ -40493,7 +40493,7 @@ FUN_021FBF44: ; 0x021FBF44
bl strlen
mov r8, r0
mov r0, r4
- bl FUN_021FC1BC
+ bl MOD04_021FC1BC
mov sl, #0
mov fp, r0
mov r7, sl
@@ -40572,8 +40572,8 @@ _021FC070: .word 0x2C0B02C1
_021FC074: .word 0x0000005D
_021FC078: .word 0x00004647
- arm_func_start FUN_021FC07C
-FUN_021FC07C: ; 0x021FC07C
+ arm_func_start MOD04_021FC07C
+MOD04_021FC07C: ; 0x021FC07C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
movs sl, r0
@@ -40584,7 +40584,7 @@ FUN_021FC07C: ; 0x021FC07C
mov r3, #0x2b
bl __msl_assertion_failed
_021FC0A0:
- bl FUN_021F025C
+ bl MOD04_021F025C
bl srand
bl rand
ldr r1, _021FC1B4 ; =0x2C0B02C1
@@ -40661,8 +40661,8 @@ _021FC1B0: .word 0x0220EEA4
_021FC1B4: .word 0x2C0B02C1
_021FC1B8: .word 0x0000005D
- arm_func_start FUN_021FC1BC
-FUN_021FC1BC: ; 0x021FC1BC
+ arm_func_start MOD04_021FC1BC
+MOD04_021FC1BC: ; 0x021FC1BC
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
ldrb r4, [r0]
@@ -40711,8 +40711,8 @@ _021FC250:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- arm_func_start FUN_021FC268
-FUN_021FC268: ; 0x021FC268
+ arm_func_start MOD04_021FC268
+MOD04_021FC268: ; 0x021FC268
stmdb sp!, {r4, r5, r6, lr}
mov r5, r1
mvn r1, #0
@@ -40756,8 +40756,8 @@ _021FC2F8: .word 0x0220EEB0
_021FC2FC: .word 0x0220EEC8
_021FC300: .word 0x0220EED4
- arm_func_start FUN_021FC304
-FUN_021FC304: ; 0x021FC304
+ arm_func_start MOD04_021FC304
+MOD04_021FC304: ; 0x021FC304
stmdb sp!, {r4, r5, r6, lr}
movs r5, r1
mov r6, r0
@@ -40797,8 +40797,8 @@ _021FC360:
_021FC388: .word 0x0220EEF8
_021FC38C: .word 0x0220EEC8
- arm_func_start FUN_021FC390
-FUN_021FC390: ; 0x021FC390
+ arm_func_start MOD04_021FC390
+MOD04_021FC390: ; 0x021FC390
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -40831,8 +40831,8 @@ _021FC3C8:
_021FC3FC: .word 0x0220EF1C
_021FC400: .word 0x0220EEC8
- arm_func_start FUN_021FC404
-FUN_021FC404: ; 0x021FC404
+ arm_func_start MOD04_021FC404
+MOD04_021FC404: ; 0x021FC404
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -40858,21 +40858,21 @@ _021FC438:
_021FC454: .word 0x0220EF40
_021FC458: .word 0x0220EEC8
- arm_func_start FUN_021FC45C
-FUN_021FC45C: ; 0x021FC45C
+ arm_func_start MOD04_021FC45C
+MOD04_021FC45C: ; 0x021FC45C
ldr r1, [r0, #4]
ldr r0, [r0, #8]
sub r0, r1, r0
bx lr
- arm_func_start FUN_021FC46C
-FUN_021FC46C: ; 0x021FC46C
+ arm_func_start MOD04_021FC46C
+MOD04_021FC46C: ; 0x021FC46C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r1
mov r5, r0
mov r0, r4
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [r5]
ldr r0, [r5]
cmp r0, #0
@@ -40882,8 +40882,8 @@ FUN_021FC46C: ; 0x021FC46C
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021FC4A4
-FUN_021FC4A4: ; 0x021FC4A4
+ arm_func_start MOD04_021FC4A4
+MOD04_021FC4A4: ; 0x021FC4A4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #8
ldr r4, [sp, #0x24]
@@ -40939,7 +40939,7 @@ _021FC51C:
cmp r0, #0
bne _021FC584
mov r0, r8
- bl FUN_021FF9CC
+ bl MOD04_021FF9CC
add sp, sp, #8
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -40952,8 +40952,8 @@ _021FC590: .word 0x0220EF5C
_021FC594: .word 0x0220EF64
_021FC598: .word 0x00000197
- arm_func_start FUN_021FC59C
-FUN_021FC59C: ; 0x021FC59C
+ arm_func_start MOD04_021FC59C
+MOD04_021FC59C: ; 0x021FC59C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
movs r7, r0
@@ -41022,7 +41022,7 @@ _021FC620:
cmp r0, #0
bne _021FC6B0
mov r0, r7
- bl FUN_021FF9CC
+ bl MOD04_021FF9CC
add sp, sp, #0xc
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -41034,8 +41034,8 @@ _021FC6B0:
_021FC6BC: .word 0x0220EF5C
_021FC6C0: .word 0x0220EF64
- arm_func_start FUN_021FC6C4
-FUN_021FC6C4: ; 0x021FC6C4
+ arm_func_start MOD04_021FC6C4
+MOD04_021FC6C4: ; 0x021FC6C4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
movs r7, r0
@@ -41055,7 +41055,7 @@ _021FC6F4:
ldmeqia sp!, {r4, r5, r6, r7, pc}
ldr r0, [r7, #0x9c]
mov r1, r6
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
movs lr, r0
addeq sp, sp, #4
moveq r0, #1
@@ -41097,7 +41097,7 @@ _021FC738:
ldr r1, [r0, #0x1c]
cmp r1, #0
bne _021FC7BC
- bl FUN_021FF9CC
+ bl MOD04_021FF9CC
add sp, sp, #4
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -41110,8 +41110,8 @@ _021FC7C8: .word 0x0220EF74
_021FC7CC: .word 0x0220EF64
_021FC7D0: .word 0x0000012D
- arm_func_start FUN_021FC7D4
-FUN_021FC7D4: ; 0x021FC7D4
+ arm_func_start MOD04_021FC7D4
+MOD04_021FC7D4: ; 0x021FC7D4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
movs r7, r0
@@ -41131,7 +41131,7 @@ _021FC804:
ldmeqia sp!, {r4, r5, r6, r7, pc}
ldr r0, [r7, #0x98]
mov r1, r6
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
movs lr, r0
addeq sp, sp, #4
moveq r0, #1
@@ -41173,7 +41173,7 @@ _021FC848:
ldr r1, [r0, #0x1c]
cmp r1, #0
bne _021FC8CC
- bl FUN_021FF9CC
+ bl MOD04_021FF9CC
add sp, sp, #4
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -41186,8 +41186,8 @@ _021FC8D8: .word 0x0220EF74
_021FC8DC: .word 0x0220EF64
_021FC8E0: .word 0x00000101
- arm_func_start FUN_021FC8E4
-FUN_021FC8E4: ; 0x021FC8E4
+ arm_func_start MOD04_021FC8E4
+MOD04_021FC8E4: ; 0x021FC8E4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r4, r0
@@ -41233,7 +41233,7 @@ _021FC90C:
ldr r1, [r0, #0x1c]
cmp r1, #0
bne _021FC9A4
- bl FUN_021FF9CC
+ bl MOD04_021FF9CC
add sp, sp, #4
mov r0, #0
ldmia sp!, {r4, r5, pc}
@@ -41245,8 +41245,8 @@ _021FC9A4:
_021FC9B0: .word 0x0220EF74
_021FC9B4: .word 0x0220EF64
- arm_func_start FUN_021FC9B8
-FUN_021FC9B8: ; 0x021FC9B8
+ arm_func_start MOD04_021FC9B8
+MOD04_021FC9B8: ; 0x021FC9B8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r4, r0
@@ -41292,7 +41292,7 @@ _021FC9E0:
ldr r1, [r0, #0x1c]
cmp r1, #0
bne _021FCA78
- bl FUN_021FF9CC
+ bl MOD04_021FF9CC
add sp, sp, #4
mov r0, #0
ldmia sp!, {r4, r5, pc}
@@ -41304,8 +41304,8 @@ _021FCA78:
_021FCA84: .word 0x0220EF74
_021FCA88: .word 0x0220EF64
- arm_func_start FUN_021FCA8C
-FUN_021FCA8C: ; 0x021FCA8C
+ arm_func_start MOD04_021FCA8C
+MOD04_021FCA8C: ; 0x021FCA8C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
movs r7, r0
@@ -41363,7 +41363,7 @@ _021FCAF8:
ldr r1, [r0, #0x1c]
cmp r1, #0
bne _021FCB74
- bl FUN_021FF9CC
+ bl MOD04_021FF9CC
add sp, sp, #4
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -41375,8 +41375,8 @@ _021FCB74:
_021FCB80: .word 0x0220EF74
_021FCB84: .word 0x0220EF64
- arm_func_start FUN_021FCB88
-FUN_021FCB88: ; 0x021FCB88
+ arm_func_start MOD04_021FCB88
+MOD04_021FCB88: ; 0x021FCB88
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
movs r7, r0
@@ -41435,7 +41435,7 @@ _021FCBF8:
ldr r1, [r0, #0x1c]
cmp r1, #0
bne _021FCC74
- bl FUN_021FF9CC
+ bl MOD04_021FF9CC
add sp, sp, #4
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -41447,8 +41447,8 @@ _021FCC74:
_021FCC80: .word 0x0220EF74
_021FCC84: .word 0x0220EF64
- arm_func_start FUN_021FCC88
-FUN_021FCC88: ; 0x021FCC88
+ arm_func_start MOD04_021FCC88
+MOD04_021FCC88: ; 0x021FCC88
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
movs r7, r0
@@ -41521,7 +41521,7 @@ _021FCD14:
cmp r0, #0
bne _021FCDA0
mov r0, r7
- bl FUN_021FF9CC
+ bl MOD04_021FF9CC
add sp, sp, #0xc
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -41533,8 +41533,8 @@ _021FCDA0:
_021FCDAC: .word 0x0220EF80
_021FCDB0: .word 0x0220EF64
- arm_func_start FUN_021FCDB4
-FUN_021FCDB4: ; 0x021FCDB4
+ arm_func_start MOD04_021FCDB4
+MOD04_021FCDB4: ; 0x021FCDB4
stmdb sp!, {r4, lr}
movs r4, r0
bne _021FCDD4
@@ -41567,7 +41567,7 @@ _021FCDD4:
cmp r0, #0
bne _021FCE3C
mov r0, r4
- bl FUN_021FF9CC
+ bl MOD04_021FF9CC
mov r0, #0
ldmia sp!, {r4, pc}
_021FCE3C:
@@ -41577,51 +41577,51 @@ _021FCE3C:
_021FCE44: .word 0x0220EF5C
_021FCE48: .word 0x0220EF64
- arm_func_start FUN_021FCE4C
-FUN_021FCE4C: ; 0x021FCE4C
+ arm_func_start MOD04_021FCE4C
+MOD04_021FCE4C: ; 0x021FCE4C
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0x38]
cmp r0, #0
beq _021FCE64
- bl FUN_021DD82C
+ bl MOD04_021DD82C
_021FCE64:
ldr r0, [r4, #0x44]
cmp r0, #0
beq _021FCE74
- bl FUN_021DD82C
+ bl MOD04_021DD82C
_021FCE74:
ldr r0, [r4, #0x50]
cmp r0, #0
beq _021FCE84
- bl FUN_021DD82C
+ bl MOD04_021DD82C
_021FCE84:
ldr r0, [r4, #0x5c]
cmp r0, #0
beq _021FCE94
- bl FUN_021EF074
+ bl MOD04_021EF074
_021FCE94:
ldr r0, [r4, #0x60]
cmp r0, #0
beq _021FCEA4
- bl FUN_021EF074
+ bl MOD04_021EF074
_021FCEA4:
ldr r0, [r4, #0x98]
cmp r0, #0
beq _021FCEB4
- bl FUN_021EF074
+ bl MOD04_021EF074
_021FCEB4:
ldr r0, [r4, #0x9c]
cmp r0, #0
beq _021FCEC4
- bl FUN_021EF074
+ bl MOD04_021EF074
_021FCEC4:
mov r0, r4
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FCED0
-FUN_021FCED0: ; 0x021FCED0
+ arm_func_start MOD04_021FCED0
+MOD04_021FCED0: ; 0x021FCED0
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {lr}
sub sp, sp, #4
@@ -41638,19 +41638,19 @@ FUN_021FCED0: ; 0x021FCED0
add r1, sp, #8
ldr r0, [r0, #8]
ldr r0, [r0, #0xc]
- bl FUN_021EF3F4
+ bl MOD04_021EF3F4
ldr r0, [sp, #8]
add r1, sp, #8
ldr r0, [r0, #8]
ldr r0, [r0, #0x10]
- bl FUN_021EEFA8
+ bl MOD04_021EEFA8
add sp, sp, #4
ldmia sp!, {lr}
add sp, sp, #0x10
bx lr
- arm_func_start FUN_021FCF38
-FUN_021FCF38: ; 0x021FCF38
+ arm_func_start MOD04_021FCF38
+MOD04_021FCF38: ; 0x021FCF38
stmdb sp!, {r4, lr}
mov r4, r0
cmp r1, #0
@@ -41658,57 +41658,57 @@ FUN_021FCF38: ; 0x021FCF38
ldr r1, [r4, #0xc]
cmp r1, #7
ldmgeia sp!, {r4, pc}
- bl FUN_021FCED0
+ bl MOD04_021FCED0
mov r0, r4
- bl FUN_021FD828
+ bl MOD04_021FD828
mov r0, r4
mov r1, #0
- bl FUN_021FC9B8
+ bl MOD04_021FC9B8
mov r0, r4
- bl FUN_021FF6BC
+ bl MOD04_021FF6BC
ldmia sp!, {r4, pc}
_021FCF78:
mov r1, #6
str r1, [r4, #0xc]
- bl FUN_021FDA74
+ bl MOD04_021FDA74
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FCF88
-FUN_021FCF88: ; 0x021FCF88
+ arm_func_start MOD04_021FCF88
+MOD04_021FCF88: ; 0x021FCF88
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
mov r4, r1
- bl FUN_021FD108
+ bl MOD04_021FD108
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {r4, r5, pc}
mov r0, r5
mov r1, r4
- bl FUN_021FD004
+ bl MOD04_021FD004
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {r4, r5, pc}
mov r0, r5
mov r1, r4
- bl FUN_021FD090
+ bl MOD04_021FD090
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
ldmeqia sp!, {r4, r5, pc}
mov r0, r5
mov r1, r4
- bl FUN_021FD044
+ bl MOD04_021FD044
cmp r0, #0
movne r0, #1
moveq r0, #0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021FD004
-FUN_021FD004: ; 0x021FD004
+ arm_func_start MOD04_021FD004
+MOD04_021FD004: ; 0x021FD004
stmdb sp!, {lr}
sub sp, sp, #4
ldr r3, [r0, #0x88]
@@ -41716,7 +41716,7 @@ FUN_021FD004: ; 0x021FD004
sub r1, r1, r3
cmp r1, r2
bls _021FD034
- bl FUN_021FDA18
+ bl MOD04_021FDA18
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
@@ -41728,8 +41728,8 @@ _021FD034:
.align 2, 0
_021FD040: .word 0x00007530
- arm_func_start FUN_021FD044
-FUN_021FD044: ; 0x021FD044
+ arm_func_start MOD04_021FD044
+MOD04_021FD044: ; 0x021FD044
stmdb sp!, {lr}
sub sp, sp, #4
ldr r2, [r0, #0x90]
@@ -41741,7 +41741,7 @@ FUN_021FD044: ; 0x021FD044
sub r1, r1, r2
cmp r1, #0x64
bls _021FD084
- bl FUN_021FD8E4
+ bl MOD04_021FD8E4
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
@@ -41751,14 +41751,14 @@ _021FD084:
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021FD090
-FUN_021FD090: ; 0x021FD090
+ arm_func_start MOD04_021FD090
+MOD04_021FD090: ; 0x021FD090
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r7, r0
ldr r0, [r7, #0x60]
mov r6, r1
- bl FUN_021EF06C
+ bl MOD04_021EF06C
mov r4, r0
cmp r4, #0
mov r5, #0
@@ -41766,14 +41766,14 @@ FUN_021FD090: ; 0x021FD090
_021FD0B8:
ldr r0, [r7, #0x60]
mov r1, r5
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
mov r1, r0
ldr r0, [r1, #0xc]
sub r0, r6, r0
cmp r0, #0x3e8
bls _021FD0F0
mov r0, r7
- bl FUN_021FD760
+ bl MOD04_021FD760
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
@@ -41787,8 +41787,8 @@ _021FD0FC:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_021FD108
-FUN_021FD108: ; 0x021FD108
+ arm_func_start MOD04_021FD108
+MOD04_021FD108: ; 0x021FD108
stmdb sp!, {r4, lr}
mov r4, r0
ldr r2, [r4, #0xc]
@@ -41818,14 +41818,14 @@ _021FD168:
cmp r3, #0
beq _021FD1A0
mov r0, r4
- bl FUN_021FD828
+ bl MOD04_021FD828
mov r0, r4
- bl FUN_021FCED0
+ bl MOD04_021FCED0
mov r2, #0
mov r0, r4
mov r3, r2
mov r1, #6
- bl FUN_021FCB88
+ bl MOD04_021FCB88
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
@@ -41835,8 +41835,8 @@ _021FD1A0:
.align 2, 0
_021FD1A8: .word 0x0000EA60
- arm_func_start FUN_021FD1AC
-FUN_021FD1AC: ; 0x021FD1AC
+ arm_func_start MOD04_021FD1AC
+MOD04_021FD1AC: ; 0x021FD1AC
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r4, r0
@@ -41845,19 +41845,19 @@ FUN_021FD1AC: ; 0x021FD1AC
ldrh r2, [r4, #4]
ldr r0, [r4, #8]
ldr r1, [r4]
- bl FUN_021FF50C
+ bl MOD04_021FF50C
cmp r0, #0
addeq sp, sp, #8
moveq r0, #0
ldmeqia sp!, {r4, pc}
- bl FUN_021F025C
+ bl MOD04_021F025C
str r0, [r4, #0x88]
mov r0, #1
add sp, sp, #8
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FD1F4
-FUN_021FD1F4: ; 0x021FD1F4
+ arm_func_start MOD04_021FD1F4
+MOD04_021FD1F4: ; 0x021FD1F4
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
mov r4, r0
@@ -41870,19 +41870,19 @@ FUN_021FD1F4: ; 0x021FD1F4
bxne lr
add r0, sp, #0xc
add r1, sp, #0x10
- bl FUN_021FFCDC
+ bl MOD04_021FFCDC
ldr r1, [sp, #0xc]
ldr r2, [sp, #0x10]
mov r0, r4
- bl FUN_021FDAD0
+ bl MOD04_021FDAD0
mov r0, #6
str r0, [r4, #0xc]
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
- arm_func_start FUN_021FD24C
-FUN_021FD24C: ; 0x021FD24C
+ arm_func_start MOD04_021FD24C
+MOD04_021FD24C: ; 0x021FD24C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -41900,7 +41900,7 @@ FUN_021FD24C: ; 0x021FD24C
addne sp, sp, #4
movne r0, r2
ldmneia sp!, {r4, r5, pc}
- bl FUN_021FDB44
+ bl MOD04_021FDB44
mov r0, #5
cmp r4, #0
str r0, [r5, #0xc]
@@ -41911,8 +41911,8 @@ FUN_021FD24C: ; 0x021FD24C
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021FD2B8
-FUN_021FD2B8: ; 0x021FD2B8
+ arm_func_start MOD04_021FD2B8
+MOD04_021FD2B8: ; 0x021FD2B8
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x24
@@ -41920,11 +41920,11 @@ FUN_021FD2B8: ; 0x021FD2B8
add r0, sp, #0x34
add r1, sp, #0x38
mov r4, r3
- bl FUN_021FFCDC
+ bl MOD04_021FFCDC
ldr r0, [sp, #0x38]
cmp r0, #0
ble _021FD31C
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [r5, #0x38]
ldr r0, [r5, #0x38]
cmp r0, #0
@@ -41944,13 +41944,13 @@ _021FD31C:
ldmneia r4, {r0, r1, r2, r3}
stmneia ip, {r0, r1, r2, r3}
add r0, sp, #0
- bl FUN_021FC07C
+ bl MOD04_021FC07C
add r1, sp, #0
add r0, r5, #0x68
- bl FUN_021FBF44
+ bl MOD04_021FBF44
add r1, sp, #0
mov r0, r5
- bl FUN_021FDCB4
+ bl MOD04_021FDCB4
mov r0, #0
str r0, [r5, #0xc]
add sp, sp, #0x24
@@ -41958,11 +41958,11 @@ _021FD31C:
add sp, sp, #0x10
bx lr
- arm_func_start FUN_021FD364
-FUN_021FD364: ; 0x021FD364
+ arm_func_start MOD04_021FD364
+MOD04_021FD364: ; 0x021FD364
stmdb sp!, {r4, lr}
mov r4, r1
- bl FUN_021FF790
+ bl MOD04_021FF790
cmp r0, #0
ldmneia sp!, {r4, pc}
ldr r0, [r4]
@@ -41973,11 +41973,11 @@ FUN_021FD364: ; 0x021FD364
str r0, [r1, #0x10]
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FD394
-FUN_021FD394: ; 0x021FD394
+ arm_func_start MOD04_021FD394
+MOD04_021FD394: ; 0x021FD394
stmdb sp!, {r4, lr}
mov r4, r1
- bl FUN_021FF790
+ bl MOD04_021FF790
cmp r0, #0
ldmneia sp!, {r4, pc}
ldr r1, [r4]
@@ -41988,8 +41988,8 @@ FUN_021FD394: ; 0x021FD394
str r2, [r1, #0x10]
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FD3C4
-FUN_021FD3C4: ; 0x021FD3C4
+ arm_func_start MOD04_021FD3C4
+MOD04_021FD3C4: ; 0x021FD3C4
stmdb sp!, {r4, lr}
movs r4, r0
bne _021FD3E4
@@ -42006,8 +42006,8 @@ _021FD3EC: .word 0x0220EF98
_021FD3F0: .word 0x0220EFA4
_021FD3F4: .word 0x000001A3
- arm_func_start FUN_021FD3F8
-FUN_021FD3F8: ; 0x021FD3F8
+ arm_func_start MOD04_021FD3F8
+MOD04_021FD3F8: ; 0x021FD3F8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r5, r0
@@ -42026,57 +42026,57 @@ _021FD420:
_021FD42C: .word 0x0220EF98
_021FD430: .word 0x0220EFA4
- arm_func_start FUN_021FD434
-FUN_021FD434: ; 0x021FD434
+ arm_func_start MOD04_021FD434
+MOD04_021FD434: ; 0x021FD434
str r1, [r0, #0x30]
bx lr
- arm_func_start FUN_021FD43C
-FUN_021FD43C: ; 0x021FD43C
+ arm_func_start MOD04_021FD43C
+MOD04_021FD43C: ; 0x021FD43C
ldr r0, [r0]
bx lr
- arm_func_start FUN_021FD444
-FUN_021FD444: ; 0x021FD444
+ arm_func_start MOD04_021FD444
+MOD04_021FD444: ; 0x021FD444
ldr r1, [r0, #0x54]
ldr r0, [r0, #0x58]
sub r0, r1, r0
bx lr
- arm_func_start FUN_021FD454
-FUN_021FD454: ; 0x021FD454
+ arm_func_start MOD04_021FD454
+MOD04_021FD454: ; 0x021FD454
ldrh r0, [r0, #8]
bx lr
- arm_func_start FUN_021FD45C
-FUN_021FD45C: ; 0x021FD45C
- ldr ip, _021FD470 ; =FUN_021EF2E4
+ arm_func_start MOD04_021FD45C
+MOD04_021FD45C: ; 0x021FD45C
+ ldr ip, _021FD470 ; =MOD04_021EF2E4
ldr r0, [r0, #0xc]
- ldr r1, _021FD474 ; =FUN_021FD478
+ ldr r1, _021FD474 ; =MOD04_021FD478
mov r2, #0
bx ip
.align 2, 0
-_021FD470: .word FUN_021EF2E4
-_021FD474: .word FUN_021FD478
+_021FD470: .word MOD04_021EF2E4
+_021FD474: .word MOD04_021FD478
- arm_func_start FUN_021FD478
-FUN_021FD478: ; 0x021FD478
- ldr ip, _021FD484 ; =FUN_021FD488
+ arm_func_start MOD04_021FD478
+MOD04_021FD478: ; 0x021FD478
+ ldr ip, _021FD484 ; =MOD04_021FD488
ldr r0, [r0]
bx ip
.align 2, 0
-_021FD484: .word FUN_021FD488
+_021FD484: .word MOD04_021FD488
- arm_func_start FUN_021FD488
-FUN_021FD488: ; 0x021FD488
- ldr ip, _021FD494 ; =FUN_021FCF38
+ arm_func_start MOD04_021FD488
+MOD04_021FD488: ; 0x021FD488
+ ldr ip, _021FD494 ; =MOD04_021FCF38
mov r1, #1
bx ip
.align 2, 0
-_021FD494: .word FUN_021FCF38
+_021FD494: .word MOD04_021FCF38
- arm_func_start FUN_021FD498
-FUN_021FD498: ; 0x021FD498
+ arm_func_start MOD04_021FD498
+MOD04_021FD498: ; 0x021FD498
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
@@ -42090,9 +42090,9 @@ FUN_021FD498: ; 0x021FD498
bxne lr
add r0, sp, #0x14
add r1, sp, #0x18
- bl FUN_021FFCDC
+ bl MOD04_021FFCDC
ldr r0, [r5, #0x98]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
beq _021FD508
str r4, [sp]
@@ -42100,7 +42100,7 @@ FUN_021FD498: ; 0x021FD498
ldr r3, [sp, #0x18]
mov r0, r5
mov r1, #0
- bl FUN_021FC7D4
+ bl MOD04_021FC7D4
add sp, sp, #4
ldmia sp!, {r4, r5, lr}
add sp, sp, #0x10
@@ -42110,14 +42110,14 @@ _021FD508:
ldr r2, [sp, #0x18]
mov r0, r5
mov r3, r4
- bl FUN_021FD738
+ bl MOD04_021FD738
add sp, sp, #4
ldmia sp!, {r4, r5, lr}
add sp, sp, #0x10
bx lr
- arm_func_start FUN_021FD52C
-FUN_021FD52C: ; 0x021FD52C
+ arm_func_start MOD04_021FD52C
+MOD04_021FD52C: ; 0x021FD52C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r6, r0
@@ -42126,7 +42126,7 @@ FUN_021FD52C: ; 0x021FD52C
add r1, sp, #8
add r2, sp, #0
mov r4, r3
- bl FUN_021FFD28
+ bl MOD04_021FFD28
cmp r0, #0
beq _021FD570
ldr r2, [sp, #8]
@@ -42158,7 +42158,7 @@ _021FD57C:
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
add r1, sp, #4
mov r0, r6
- bl FUN_021FD394
+ bl MOD04_021FD394
cmp r0, #0
addne sp, sp, #0x10
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
@@ -42169,11 +42169,11 @@ _021FD57C:
ldr r0, [sp, #4]
ldr r3, [sp, #0x30]
mov r1, r4
- bl FUN_021FD2B8
+ bl MOD04_021FD2B8
movs r4, r0
beq _021FD610
ldr r0, [sp, #4]
- bl FUN_021FF6BC
+ bl MOD04_021FF6BC
add sp, sp, #0x10
mov r0, r4
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -42196,7 +42196,7 @@ _021FD634:
mov r7, #1
_021FD64C:
mov r0, r6
- bl FUN_021FD6D4
+ bl MOD04_021FD6D4
ldr r0, [sp, #4]
ldr r0, [r0, #0xc]
cmp r0, #5
@@ -42205,7 +42205,7 @@ _021FD64C:
cmp r8, #0
bne _021FD678
mov r0, r7
- bl FUN_021F0250
+ bl MOD04_021F0250
_021FD678:
cmp r8, #0
beq _021FD64C
@@ -42222,77 +42222,77 @@ _021FD678:
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
- arm_func_start FUN_021FD6B0
-FUN_021FD6B0: ; 0x021FD6B0
- ldr ip, _021FD6B8 ; =FUN_021FD1F4
+ arm_func_start MOD04_021FD6B0
+MOD04_021FD6B0: ; 0x021FD6B0
+ ldr ip, _021FD6B8 ; =MOD04_021FD1F4
bx ip
.align 2, 0
-_021FD6B8: .word FUN_021FD1F4
+_021FD6B8: .word MOD04_021FD1F4
- arm_func_start FUN_021FD6BC
-FUN_021FD6BC: ; 0x021FD6BC
- ldr ip, _021FD6C4 ; =FUN_021FD24C
+ arm_func_start MOD04_021FD6BC
+MOD04_021FD6BC: ; 0x021FD6BC
+ ldr ip, _021FD6C4 ; =MOD04_021FD24C
bx ip
.align 2, 0
-_021FD6C4: .word FUN_021FD24C
+_021FD6C4: .word MOD04_021FD24C
- arm_func_start FUN_021FD6C8
-FUN_021FD6C8: ; 0x021FD6C8
- ldr ip, _021FD6D0 ; =FUN_021FF9C4
+ arm_func_start MOD04_021FD6C8
+MOD04_021FD6C8: ; 0x021FD6C8
+ ldr ip, _021FD6D0 ; =MOD04_021FF9C4
bx ip
.align 2, 0
-_021FD6D0: .word FUN_021FF9C4
+_021FD6D0: .word MOD04_021FF9C4
- arm_func_start FUN_021FD6D4
-FUN_021FD6D4: ; 0x021FD6D4
+ arm_func_start MOD04_021FD6D4
+MOD04_021FD6D4: ; 0x021FD6D4
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_021FDF60
+ bl MOD04_021FDF60
cmp r0, #0
ldmeqia sp!, {r4, pc}
mov r0, r4
- bl FUN_021FF470
+ bl MOD04_021FF470
cmp r0, #0
ldmeqia sp!, {r4, pc}
mov r0, r4
- bl FUN_021FF42C
+ bl MOD04_021FF42C
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FD704
-FUN_021FD704: ; 0x021FD704
+ arm_func_start MOD04_021FD704
+MOD04_021FD704: ; 0x021FD704
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_021FD45C
+ bl MOD04_021FD45C
mov r0, r4
- bl FUN_021FF9CC
+ bl MOD04_021FF9CC
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FD71C
-FUN_021FD71C: ; 0x021FD71C
+ arm_func_start MOD04_021FD71C
+MOD04_021FD71C: ; 0x021FD71C
stmdb sp!, {lr}
sub sp, sp, #4
ldr ip, [sp, #8]
str ip, [sp]
- bl FUN_021FFA10
+ bl MOD04_021FFA10
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021FD738
-FUN_021FD738: ; 0x021FD738
+ arm_func_start MOD04_021FD738
+MOD04_021FD738: ; 0x021FD738
stmdb sp!, {lr}
sub sp, sp, #4
cmp r3, #0
beq _021FD754
- bl FUN_021FDD24
+ bl MOD04_021FDD24
add sp, sp, #4
ldmfd sp!, {pc}
_021FD754:
- bl FUN_021FD94C
+ bl MOD04_021FD94C
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021FD760
-FUN_021FD760: ; 0x021FD760
+ arm_func_start MOD04_021FD760
+MOD04_021FD760: ; 0x021FD760
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r0
@@ -42301,13 +42301,13 @@ FUN_021FD760: ; 0x021FD760
ldrh r2, [r4, #0x66]
ldr r0, [r4, #0x50]
add r1, r1, #5
- bl FUN_021FF3BC
+ bl MOD04_021FF3BC
ldr r3, [r4, #0x50]
ldr r1, [r5]
ldr r2, [r5, #4]
mov r0, r4
add r1, r3, r1
- bl FUN_021FD1AC
+ bl MOD04_021FD1AC
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
@@ -42325,8 +42325,8 @@ FUN_021FD760: ; 0x021FD760
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021FD7DC
-FUN_021FD7DC: ; 0x021FD7DC
+ arm_func_start MOD04_021FD7DC
+MOD04_021FD7DC: ; 0x021FD7DC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
ldr r4, _021FD824 ; =0x0220EFB0
@@ -42339,7 +42339,7 @@ FUN_021FD7DC: ; 0x021FD7DC
strb r4, [r3, #1]
strb lr, [sp, #6]
str ip, [sp]
- bl FUN_021FF50C
+ bl MOD04_021FF50C
cmp r0, #0
movne r0, #1
moveq r0, #0
@@ -42348,28 +42348,28 @@ FUN_021FD7DC: ; 0x021FD7DC
.align 2, 0
_021FD824: .word 0x0220EFB0
- arm_func_start FUN_021FD828
-FUN_021FD828: ; 0x021FD828
- ldr ip, _021FD840 ; =FUN_021FD7DC
+ arm_func_start MOD04_021FD828
+MOD04_021FD828: ; 0x021FD828
+ ldr ip, _021FD840 ; =MOD04_021FD7DC
mov r1, r0
ldrh r2, [r1, #4]
ldr r0, [r1, #8]
ldr r1, [r1]
bx ip
.align 2, 0
-_021FD840: .word FUN_021FD7DC
+_021FD840: .word MOD04_021FD7DC
- arm_func_start FUN_021FD844
-FUN_021FD844: ; 0x021FD844
- ldr ip, _021FD854 ; =FUN_021FD1AC
+ arm_func_start MOD04_021FD844
+MOD04_021FD844: ; 0x021FD844
+ ldr ip, _021FD854 ; =MOD04_021FD1AC
mov r3, #0x67
strb r3, [r1, #2]
bx ip
.align 2, 0
-_021FD854: .word FUN_021FD1AC
+_021FD854: .word MOD04_021FD1AC
- arm_func_start FUN_021FD858
-FUN_021FD858: ; 0x021FD858
+ arm_func_start MOD04_021FD858
+MOD04_021FD858: ; 0x021FD858
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
ldr r3, _021FD8E0 ; =0x0220EFB0
@@ -42386,20 +42386,20 @@ FUN_021FD858: ; 0x021FD858
mov r5, #0
mov r1, #3
strb r3, [sp, #2]
- bl FUN_021FF3BC
+ bl MOD04_021FF3BC
cmp r7, r6
add r5, r5, #5
beq _021FD8BC
add r0, sp, #0
mov r1, r5
mov r2, r6
- bl FUN_021FF3BC
+ bl MOD04_021FF3BC
add r5, r5, #2
_021FD8BC:
add r1, sp, #0
mov r0, r4
mov r2, r5
- bl FUN_021FD1AC
+ bl MOD04_021FD1AC
cmp r0, #0
moveq r0, #0
movne r0, #1
@@ -42408,8 +42408,8 @@ _021FD8BC:
.align 2, 0
_021FD8E0: .word 0x0220EFB0
- arm_func_start FUN_021FD8E4
-FUN_021FD8E4: ; 0x021FD8E4
+ arm_func_start MOD04_021FD8E4
+MOD04_021FD8E4: ; 0x021FD8E4
stmdb sp!, {r4, lr}
sub sp, sp, #8
ldr r1, _021FD948 ; =0x0220EFB0
@@ -42423,11 +42423,11 @@ FUN_021FD8E4: ; 0x021FD8E4
strb r1, [sp, #2]
ldrh r2, [r4, #0x66]
mov r1, #3
- bl FUN_021FF3BC
+ bl MOD04_021FF3BC
add r1, sp, #0
mov r0, r4
mov r2, #5
- bl FUN_021FD1AC
+ bl MOD04_021FD1AC
cmp r0, #0
moveq r0, #0
movne r0, #0
@@ -42438,8 +42438,8 @@ FUN_021FD8E4: ; 0x021FD8E4
.align 2, 0
_021FD948: .word 0x0220EFB0
- arm_func_start FUN_021FD94C
-FUN_021FD94C: ; 0x021FD94C
+ arm_func_start MOD04_021FD94C
+MOD04_021FD94C: ; 0x021FD94C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r6, r2
mov r8, r0
@@ -42456,7 +42456,7 @@ _021FD97C:
mov r0, r8
mov r1, r7
mov r2, r6
- bl FUN_021FD1AC
+ bl MOD04_021FD1AC
cmp r0, #0
moveq r0, #0
movne r0, #1
@@ -42464,7 +42464,7 @@ _021FD97C:
_021FD99C:
add r5, r6, #2
add r0, r8, #0x50
- bl FUN_021FC45C
+ bl MOD04_021FC45C
cmp r0, r5
movlt r0, #1
ldmltia sp!, {r4, r5, r6, r7, r8, pc}
@@ -42474,36 +42474,36 @@ _021FD99C:
add r0, r8, #0x50
mov r2, #2
add r4, ip, r3
- bl FUN_021FC304
+ bl MOD04_021FC304
mov r1, r7
mov r2, r6
add r0, r8, #0x50
- bl FUN_021FC304
+ bl MOD04_021FC304
mov r0, r8
mov r1, r4
mov r2, r5
- bl FUN_021FD1AC
+ bl MOD04_021FD1AC
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
mov r2, r5
add r0, r8, #0x50
mvn r1, #0
- bl FUN_021FC268
+ bl MOD04_021FC268
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_021FDA14: .word 0x0220EFB0
- arm_func_start FUN_021FDA18
-FUN_021FDA18: ; 0x021FDA18
+ arm_func_start MOD04_021FDA18
+MOD04_021FDA18: ; 0x021FDA18
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r1, #7
add r3, sp, #0
mov r2, r1
mov r4, r0
- bl FUN_021FDE18
+ bl MOD04_021FDE18
cmp r0, #0
addeq sp, sp, #8
moveq r0, #0
@@ -42514,22 +42514,22 @@ FUN_021FDA18: ; 0x021FDA18
movne r0, #1
ldmneia sp!, {r4, pc}
mov r0, r4
- bl FUN_021FDD98
+ bl MOD04_021FDD98
cmp r0, #0
movne r0, #1
moveq r0, #0
add sp, sp, #8
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FDA74
-FUN_021FDA74: ; 0x021FDA74
+ arm_func_start MOD04_021FDA74
+MOD04_021FDA74: ; 0x021FDA74
stmdb sp!, {r4, lr}
sub sp, sp, #8
add r3, sp, #0
mov r1, #6
mov r2, #7
mov r4, r0
- bl FUN_021FDE18
+ bl MOD04_021FDE18
cmp r0, #0
addeq sp, sp, #8
moveq r0, #0
@@ -42540,15 +42540,15 @@ FUN_021FDA74: ; 0x021FDA74
movne r0, #1
ldmneia sp!, {r4, pc}
mov r0, r4
- bl FUN_021FDD98
+ bl MOD04_021FDD98
cmp r0, #0
movne r0, #1
moveq r0, #0
add sp, sp, #8
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FDAD0
-FUN_021FDAD0: ; 0x021FDAD0
+ arm_func_start MOD04_021FDAD0
+MOD04_021FDAD0: ; 0x021FDAD0
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r4, r2
@@ -42557,7 +42557,7 @@ FUN_021FDAD0: ; 0x021FDAD0
add r2, r4, #7
mov r1, #5
mov r6, r0
- bl FUN_021FDE18
+ bl MOD04_021FDE18
cmp r0, #0
addeq sp, sp, #8
moveq r0, #0
@@ -42570,24 +42570,24 @@ FUN_021FDAD0: ; 0x021FDAD0
mov r1, r5
mov r2, r4
add r0, r6, #0x50
- bl FUN_021FC304
+ bl MOD04_021FC304
mov r0, r6
- bl FUN_021FDD98
+ bl MOD04_021FDD98
cmp r0, #0
movne r0, #1
moveq r0, #0
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021FDB44
-FUN_021FDB44: ; 0x021FDB44
+ arm_func_start MOD04_021FDB44
+MOD04_021FDB44: ; 0x021FDB44
stmdb sp!, {r4, lr}
sub sp, sp, #8
add r3, sp, #0
mov r1, #4
mov r2, #7
mov r4, r0
- bl FUN_021FDE18
+ bl MOD04_021FDE18
cmp r0, #0
addeq sp, sp, #8
moveq r0, #0
@@ -42598,15 +42598,15 @@ FUN_021FDB44: ; 0x021FDB44
movne r0, #1
ldmneia sp!, {r4, pc}
mov r0, r4
- bl FUN_021FDD98
+ bl MOD04_021FDD98
cmp r0, #0
movne r0, #1
moveq r0, #0
add sp, sp, #8
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FDBA0
-FUN_021FDBA0: ; 0x021FDBA0
+ arm_func_start MOD04_021FDBA0
+MOD04_021FDBA0: ; 0x021FDBA0
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r4, r3
@@ -42616,7 +42616,7 @@ FUN_021FDBA0: ; 0x021FDBA0
add r2, r4, #0x27
mov r1, #3
mov r7, r0
- bl FUN_021FDE18
+ bl MOD04_021FDE18
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
@@ -42629,21 +42629,21 @@ FUN_021FDBA0: ; 0x021FDBA0
mov r1, r6
add r0, r7, #0x50
mov r2, #0x20
- bl FUN_021FC304
+ bl MOD04_021FC304
mov r1, r5
mov r2, r4
add r0, r7, #0x50
- bl FUN_021FC304
+ bl MOD04_021FC304
mov r0, r7
- bl FUN_021FDD98
+ bl MOD04_021FDD98
cmp r0, #0
movne r0, #1
moveq r0, #0
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_021FDC28
-FUN_021FDC28: ; 0x021FDC28
+ arm_func_start MOD04_021FDC28
+MOD04_021FDC28: ; 0x021FDC28
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r5, r1
@@ -42652,7 +42652,7 @@ FUN_021FDC28: ; 0x021FDC28
mov r1, #2
mov r2, #0x47
mov r6, r0
- bl FUN_021FDE18
+ bl MOD04_021FDE18
cmp r0, #0
addeq sp, sp, #8
moveq r0, #0
@@ -42665,13 +42665,13 @@ FUN_021FDC28: ; 0x021FDC28
mov r1, r5
add r0, r6, #0x50
mov r2, #0x20
- bl FUN_021FC304
+ bl MOD04_021FC304
mov r1, r4
add r0, r6, #0x50
mov r2, #0x20
- bl FUN_021FC304
+ bl MOD04_021FC304
mov r0, r6
- bl FUN_021FDD98
+ bl MOD04_021FDD98
cmp r0, #0
ldrne r1, [r6, #0x88]
moveq r0, #0
@@ -42680,8 +42680,8 @@ FUN_021FDC28: ; 0x021FDC28
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021FDCB4
-FUN_021FDCB4: ; 0x021FDCB4
+ arm_func_start MOD04_021FDCB4
+MOD04_021FDCB4: ; 0x021FDCB4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r1
@@ -42689,7 +42689,7 @@ FUN_021FDCB4: ; 0x021FDCB4
mov r1, #1
mov r2, #0x27
mov r5, r0
- bl FUN_021FDE18
+ bl MOD04_021FDE18
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
@@ -42702,17 +42702,17 @@ FUN_021FDCB4: ; 0x021FDCB4
mov r1, r4
add r0, r5, #0x50
mov r2, #0x20
- bl FUN_021FC304
+ bl MOD04_021FC304
mov r0, r5
- bl FUN_021FDD98
+ bl MOD04_021FDD98
cmp r0, #0
movne r0, #1
moveq r0, #0
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021FDD24
-FUN_021FDD24: ; 0x021FDD24
+ arm_func_start MOD04_021FDD24
+MOD04_021FDD24: ; 0x021FDD24
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r4, r2
@@ -42721,7 +42721,7 @@ FUN_021FDD24: ; 0x021FDD24
add r2, r4, #7
mov r1, #0
mov r6, r0
- bl FUN_021FDE18
+ bl MOD04_021FDE18
cmp r0, #0
addeq sp, sp, #8
moveq r0, #0
@@ -42734,22 +42734,22 @@ FUN_021FDD24: ; 0x021FDD24
mov r1, r5
mov r2, r4
add r0, r6, #0x50
- bl FUN_021FC304
+ bl MOD04_021FC304
mov r0, r6
- bl FUN_021FDD98
+ bl MOD04_021FDD98
cmp r0, #0
movne r0, #1
moveq r0, #0
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021FDD98
-FUN_021FDD98: ; 0x021FDD98
+ arm_func_start MOD04_021FDD98
+MOD04_021FDD98: ; 0x021FDD98
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
ldr r0, [r5, #0x60]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
mov r4, r0
cmp r4, #0
bgt _021FDDCC
@@ -42761,13 +42761,13 @@ FUN_021FDD98: ; 0x021FDD98
_021FDDCC:
ldr r0, [r5, #0x60]
sub r1, r4, #1
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r3, [r5, #0x50]
ldr r1, [r0]
ldr r2, [r0, #4]
mov r0, r5
add r1, r3, r1
- bl FUN_021FD1AC
+ bl MOD04_021FD1AC
cmp r0, #0
moveq r0, #0
movne r0, #0
@@ -42780,8 +42780,8 @@ _021FDE0C: .word 0x0220EFBC
_021FDE10: .word 0x0220EFC4
_021FDE14: .word 0x00000475
- arm_func_start FUN_021FDE18
-FUN_021FDE18: ; 0x021FDE18
+ arm_func_start MOD04_021FDE18
+MOD04_021FDE18: ; 0x021FDE18
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r7, r0
@@ -42789,11 +42789,11 @@ FUN_021FDE18: ; 0x021FDE18
add r0, r7, #0x50
mov r6, r1
mov r4, r3
- bl FUN_021FC45C
+ bl MOD04_021FC45C
cmp r0, r5
bge _021FDE60
mov r0, r7
- bl FUN_021FF2D8
+ bl MOD04_021FF2D8
cmp r0, #0
moveq r0, #0
movne r0, #1
@@ -42804,11 +42804,11 @@ _021FDE60:
ldrh r1, [r7, #0x64]
mov r0, r7
mov r2, r5
- bl FUN_021FDEEC
+ bl MOD04_021FDEEC
cmp r0, #0
bne _021FDE98
mov r0, r7
- bl FUN_021FF2D8
+ bl MOD04_021FF2D8
cmp r0, #0
moveq r0, #0
movne r0, #1
@@ -42819,18 +42819,18 @@ _021FDE98:
ldr r1, _021FDEE8 ; =0x0220EFB0
add r0, r7, #0x50
mov r2, #2
- bl FUN_021FC304
+ bl MOD04_021FC304
add r0, r7, #0x50
and r1, r6, #0xff
- bl FUN_021FC404
+ bl MOD04_021FC404
ldrh r1, [r7, #0x64]
add r0, r7, #0x50
add r2, r1, #1
strh r2, [r7, #0x64]
- bl FUN_021FC390
+ bl MOD04_021FC390
ldrh r1, [r7, #0x66]
add r0, r7, #0x50
- bl FUN_021FC390
+ bl MOD04_021FC390
mov r0, #0
str r0, [r4]
mov r0, #1
@@ -42839,8 +42839,8 @@ _021FDE98:
.align 2, 0
_021FDEE8: .word 0x0220EFB0
- arm_func_start FUN_021FDEEC
-FUN_021FDEEC: ; 0x021FDEEC
+ arm_func_start MOD04_021FDEEC
+MOD04_021FDEEC: ; 0x021FDEEC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x14
add r4, sp, #0
@@ -42854,16 +42854,16 @@ FUN_021FDEEC: ; 0x021FDEEC
str r0, [sp]
str r2, [sp, #4]
strh r1, [sp, #8]
- bl FUN_021F025C
+ bl MOD04_021F025C
str r0, [sp, #0xc]
ldr r0, [r5, #0x60]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
mov r4, r0
ldr r0, [r5, #0x60]
add r1, sp, #0
- bl FUN_021EEFA8
+ bl MOD04_021EEFA8
ldr r0, [r5, #0x60]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
add r1, r4, #1
cmp r1, r0
moveq r0, #1
@@ -42871,14 +42871,14 @@ FUN_021FDEEC: ; 0x021FDEEC
add sp, sp, #0x14
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021FDF60
-FUN_021FDF60: ; 0x021FDF60
+ arm_func_start MOD04_021FDF60
+MOD04_021FDF60: ; 0x021FDF60
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr ip, _021FE0AC ; =0x000005F4
sub sp, sp, ip
mov sl, r0
ldr r0, [sl]
- bl FUN_021EFF2C
+ bl MOD04_021EFF2C
cmp r0, #0
beq _021FE09C
ldr fp, _021FE0B0 ; =0x000005DC
@@ -42896,13 +42896,13 @@ _021FDF9C:
mov r1, r6
mov r2, fp
mov r3, r5
- bl FUN_021EFC40
+ bl MOD04_021EFC40
mov r2, r0
mvn r0, #0
cmp r2, r0
bne _021FE044
ldr r0, [sl]
- bl FUN_021EFB28
+ bl MOD04_021EFB28
cmp r0, r4
bne _021FE020
ldrh r2, [sp, #0xa]
@@ -42915,7 +42915,7 @@ _021FDF9C:
orr r2, r3, r2
mov r2, r2, lsl #0x10
mov r2, r2, lsr #0x10
- bl FUN_021FE0B4
+ bl MOD04_021FE0B4
cmp r0, #0
bne _021FE08C
ldr ip, _021FE0AC ; =0x000005F4
@@ -42927,7 +42927,7 @@ _021FE020:
cmp r0, r1
beq _021FE08C
mov r0, sl
- bl FUN_021FF3F0
+ bl MOD04_021FF3F0
ldr ip, _021FE0AC ; =0x000005F4
mov r0, #0
add sp, sp, ip
@@ -42945,7 +42945,7 @@ _021FE044:
mov r3, r3, lsr #0x10
str r3, [sp]
ldr r3, [sp, #0xc]
- bl FUN_021FE1B4
+ bl MOD04_021FE1B4
cmp r0, #0
ldreq ip, _021FE0AC ; =0x000005F4
moveq r0, #0
@@ -42953,7 +42953,7 @@ _021FE044:
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_021FE08C:
ldr r0, [sl]
- bl FUN_021EFF2C
+ bl MOD04_021EFF2C
cmp r0, #0
bne _021FDF9C
_021FE09C:
@@ -42965,14 +42965,14 @@ _021FE09C:
_021FE0AC: .word 0x000005F4
_021FE0B0: .word 0x000005DC
- arm_func_start FUN_021FE0B4
-FUN_021FE0B4: ; 0x021FE0B4
+ arm_func_start MOD04_021FE0B4
+MOD04_021FE0B4: ; 0x021FE0B4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x14
mov r7, r0
mov r6, r1
mov r5, r2
- bl FUN_021FFC3C
+ bl MOD04_021FFC3C
ldr r1, [r7, #0x2c]
mov r4, r0
cmp r1, #0
@@ -42987,7 +42987,7 @@ FUN_021FE0B4: ; 0x021FE0B4
mov r2, r6
mov r3, r5
str ip, [sp, #0xc]
- bl FUN_021FC59C
+ bl MOD04_021FC59C
cmp r0, #0
addeq sp, sp, #0x14
moveq r0, #0
@@ -43003,7 +43003,7 @@ _021FE118:
ldr r0, [r4, #0x20]
cmp r0, #0
beq _021FE158
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r2, [r4, #0x1c]
ldr r1, [r4, #0x20]
sub r0, r0, r2
@@ -43017,7 +43017,7 @@ _021FE164:
mov r0, r4
mov r1, #6
mov r2, #1
- bl FUN_021FF318
+ bl MOD04_021FF318
cmp r0, #0
bne _021FE1A8
add sp, sp, #0x14
@@ -43027,7 +43027,7 @@ _021FE188:
mov r0, r4
mov r1, #2
mov r2, #1
- bl FUN_021FF318
+ bl MOD04_021FF318
cmp r0, #0
addeq sp, sp, #0x14
moveq r0, #0
@@ -43037,8 +43037,8 @@ _021FE1A8:
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_021FE1B4
-FUN_021FE1B4: ; 0x021FE1B4
+ arm_func_start MOD04_021FE1B4
+MOD04_021FE1B4: ; 0x021FE1B4
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x1c
ldr r5, [sp, #0x38]
@@ -43048,7 +43048,7 @@ FUN_021FE1B4: ; 0x021FE1B4
mov r1, r6
mov r2, r5
mov sb, r0
- bl FUN_021FFC3C
+ bl MOD04_021FFC3C
str r0, [sp, #0x10]
ldr r0, [sb, #0x2c]
cmp r0, #0
@@ -43062,7 +43062,7 @@ FUN_021FE1B4: ; 0x021FE1B4
mov r0, sb
mov r2, r6
mov r3, r5
- bl FUN_021FC59C
+ bl MOD04_021FC59C
cmp r0, #0
addeq sp, sp, #0x1c
moveq r0, #0
@@ -43090,7 +43090,7 @@ _021FE24C:
mov r2, r5
mov r3, r8
str ip, [sp, #4]
- bl FUN_021FC4A4
+ bl MOD04_021FC4A4
cmp r0, #0
addeq sp, sp, #0x1c
moveq r0, #0
@@ -43115,7 +43115,7 @@ _021FE2C4:
mov r0, sb
mov r1, r6
mov r2, r5
- bl FUN_021FD7DC
+ bl MOD04_021FD7DC
cmp r0, #0
addeq sp, sp, #0x1c
moveq r0, #0
@@ -43134,7 +43134,7 @@ _021FE2F0:
mov r0, sb
mov r2, r6
mov r3, r5
- bl FUN_021FD364
+ bl MOD04_021FD364
cmp r0, #0
beq _021FE354
cmp r0, #5
@@ -43142,7 +43142,7 @@ _021FE2F0:
mov r0, sb
mov r1, r6
mov r2, r5
- bl FUN_021FD7DC
+ bl MOD04_021FD7DC
cmp r0, #0
addeq sp, sp, #0x1c
moveq r0, #0
@@ -43163,7 +43163,7 @@ _021FE354:
beq _021FE390
_021FE378:
mov r0, r5
- bl FUN_021FD828
+ bl MOD04_021FD828
cmp r0, #0
addeq sp, sp, #0x1c
moveq r0, #0
@@ -43191,7 +43191,7 @@ _021FE3CC:
mov r0, r5
mov r1, r8
mov r2, r7
- bl FUN_021FF134
+ bl MOD04_021FF134
cmp r0, #0
movne r0, #1
add sp, sp, #0x1c
@@ -43202,7 +43202,7 @@ _021FE3F8:
cmp r1, #0
bge _021FE420
mov r0, r5
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
add sp, sp, #0x1c
@@ -43214,7 +43214,7 @@ _021FE420:
mov r0, r5
mov r2, r8
mov r3, r7
- bl FUN_021FE780
+ bl MOD04_021FE780
cmp r0, #0
movne r0, #1
add sp, sp, #0x1c
@@ -43224,7 +43224,7 @@ _021FE44C:
mov r0, r5
mov r2, r8
mov r3, r7
- bl FUN_021FE474
+ bl MOD04_021FE474
cmp r0, #0
movne r0, #1
moveq r0, #0
@@ -43233,8 +43233,8 @@ _021FE44C:
.align 2, 0
_021FE470: .word 0x0220EFB0
- arm_func_start FUN_021FE474
-FUN_021FE474: ; 0x021FE474
+ arm_func_start MOD04_021FE474
+MOD04_021FE474: ; 0x021FE474
stmdb sp!, {lr}
sub sp, sp, #4
cmp r1, #0x64
@@ -43243,7 +43243,7 @@ FUN_021FE474: ; 0x021FE474
bne _021FE4AC
mov r1, lr
mov r2, ip
- bl FUN_021FE734
+ bl MOD04_021FE734
cmp r0, #0
bne _021FE540
add sp, sp, #4
@@ -43254,7 +43254,7 @@ _021FE4AC:
bne _021FE4D4
mov r1, lr
mov r2, ip
- bl FUN_021FE648
+ bl MOD04_021FE648
cmp r0, #0
bne _021FE540
add sp, sp, #4
@@ -43265,7 +43265,7 @@ _021FE4D4:
bne _021FE4FC
mov r1, r2
mov r2, r3
- bl FUN_021FE63C
+ bl MOD04_021FE63C
cmp r0, #0
bne _021FE540
add sp, sp, #4
@@ -43276,7 +43276,7 @@ _021FE4FC:
bne _021FE524
mov r1, lr
mov r2, ip
- bl FUN_021FE590
+ bl MOD04_021FE590
cmp r0, #0
bne _021FE540
add sp, sp, #4
@@ -43285,7 +43285,7 @@ _021FE4FC:
_021FE524:
cmp r1, #0x68
bne _021FE540
- bl FUN_021FE54C
+ bl MOD04_021FE54C
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
@@ -43295,8 +43295,8 @@ _021FE540:
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021FE54C
-FUN_021FE54C: ; 0x021FE54C
+ arm_func_start MOD04_021FE54C
+MOD04_021FE54C: ; 0x021FE54C
stmdb sp!, {lr}
sub sp, sp, #4
ldr r1, [r0, #0xc]
@@ -43308,15 +43308,15 @@ FUN_021FE54C: ; 0x021FE54C
moveq r2, #0
movne r2, #1
mov r1, #2
- bl FUN_021FF318
+ bl MOD04_021FF318
cmp r0, #0
moveq r0, #0
movne r0, #1
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021FE590
-FUN_021FE590: ; 0x021FE590
+ arm_func_start MOD04_021FE590
+MOD04_021FE590: ; 0x021FE590
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r0
@@ -43348,12 +43348,12 @@ FUN_021FE590: ; 0x021FE590
ldrb r0, [r2, #3]
strb r1, [r3, #2]
strb r0, [r3, #3]
- bl FUN_021F025C
+ bl MOD04_021F025C
mov r2, r0
ldr r1, [sp]
mov r0, r4
sub r1, r2, r1
- bl FUN_021FC8E4
+ bl MOD04_021FC8E4
cmp r0, #0
movne r0, #1
moveq r0, #0
@@ -43362,15 +43362,15 @@ FUN_021FE590: ; 0x021FE590
.align 2, 0
_021FE638: .word 0x0220EFB4
- arm_func_start FUN_021FE63C
-FUN_021FE63C: ; 0x021FE63C
- ldr ip, _021FE644 ; =FUN_021FD844
+ arm_func_start MOD04_021FE63C
+MOD04_021FE63C: ; 0x021FE63C
+ ldr ip, _021FE644 ; =MOD04_021FD844
bx ip
.align 2, 0
-_021FE644: .word FUN_021FD844
+_021FE644: .word MOD04_021FD844
- arm_func_start FUN_021FE648
-FUN_021FE648: ; 0x021FE648
+ arm_func_start MOD04_021FE648
+MOD04_021FE648: ; 0x021FE648
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
mov r6, r1
@@ -43378,7 +43378,7 @@ FUN_021FE648: ; 0x021FE648
mov r0, r6
mov r1, #0
mov r5, r2
- bl FUN_021FF3D0
+ bl MOD04_021FF3D0
mov sb, r0
cmp r5, #2
moveq r8, sb
@@ -43387,12 +43387,12 @@ FUN_021FE648: ; 0x021FE648
bne _021FE694
mov r0, r6
mov r1, #2
- bl FUN_021FF3D0
+ bl MOD04_021FF3D0
mov r8, r0
b _021FE6B0
_021FE694:
mov r0, r4
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
add sp, sp, #4
@@ -43400,7 +43400,7 @@ _021FE694:
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
_021FE6B0:
ldr r0, [r4, #0x60]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
mov r7, r0
cmp r7, #0
mov r6, #0
@@ -43408,21 +43408,21 @@ _021FE6B0:
_021FE6C8:
ldr r0, [r4, #0x60]
mov r1, r6
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
mov r5, r0
ldrh r0, [r5, #8]
mov r1, sb
- bl FUN_021FF3AC
+ bl MOD04_021FF3AC
cmp r0, #0
blt _021FE71C
ldrh r0, [r5, #8]
mov r1, r8
- bl FUN_021FF3AC
+ bl MOD04_021FF3AC
cmp r0, #0
bgt _021FE71C
mov r0, r4
mov r1, r5
- bl FUN_021FD760
+ bl MOD04_021FD760
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
@@ -43436,13 +43436,13 @@ _021FE728:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- arm_func_start FUN_021FE734
-FUN_021FE734: ; 0x021FE734
+ arm_func_start MOD04_021FE734
+MOD04_021FE734: ; 0x021FE734
stmdb sp!, {r4, lr}
mov r4, r0
cmp r2, #2
beq _021FE758
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
moveq r0, #0
@@ -43450,17 +43450,17 @@ FUN_021FE734: ; 0x021FE734
_021FE758:
mov r0, r1
mov r1, #0
- bl FUN_021FF3D0
+ bl MOD04_021FF3D0
mov r1, r0
mov r0, r4
- bl FUN_021FF1C8
+ bl MOD04_021FF1C8
cmp r0, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FE780
-FUN_021FE780: ; 0x021FE780
+ arm_func_start MOD04_021FE780
+MOD04_021FE780: ; 0x021FE780
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r6, r3
@@ -43469,7 +43469,7 @@ FUN_021FE780: ; 0x021FE780
mov r7, r2
cmp r6, #7
bge _021FE7B8
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
add sp, sp, #0x10
@@ -43478,14 +43478,14 @@ FUN_021FE780: ; 0x021FE780
_021FE7B8:
mov r0, r7
mov r1, #3
- bl FUN_021FF3D0
+ bl MOD04_021FF3D0
mov r5, r0
mov r0, r7
mov r1, #5
- bl FUN_021FF3D0
+ bl MOD04_021FF3D0
mov r1, r0
mov r0, r4
- bl FUN_021FF1C8
+ bl MOD04_021FF1C8
cmp r0, #0
addeq sp, sp, #0x10
moveq r0, #0
@@ -43494,18 +43494,18 @@ _021FE7B8:
cmp r5, r1
bne _021FE844
mov r0, r4
- bl FUN_021FE8CC
+ bl MOD04_021FE8CC
mov r0, r4
mov r1, r8
add r2, r7, #7
sub r3, r6, #7
- bl FUN_021FEBD0
+ bl MOD04_021FEBD0
cmp r0, #0
addeq sp, sp, #0x10
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
mov r0, r4
- bl FUN_021FE8F4
+ bl MOD04_021FE8F4
cmp r0, #0
movne r0, #1
add sp, sp, #0x10
@@ -43513,11 +43513,11 @@ _021FE7B8:
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_021FE844:
mov r0, r5
- bl FUN_021FF3AC
+ bl MOD04_021FF3AC
cmp r0, #0
bge _021FE868
mov r0, r4
- bl FUN_021FE8CC
+ bl MOD04_021FE8CC
add sp, sp, #0x10
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, r8, pc}
@@ -43530,7 +43530,7 @@ _021FE868:
mov r2, r5
add r3, r7, #7
str ip, [sp, #4]
- bl FUN_021FEA0C
+ bl MOD04_021FEA0C
cmp r0, #0
addeq sp, sp, #0x10
moveq r0, #0
@@ -43539,7 +43539,7 @@ _021FE868:
cmp r0, #0
beq _021FE8C0
mov r0, r4
- bl FUN_021FF2D8
+ bl MOD04_021FF2D8
cmp r0, #0
addeq sp, sp, #0x10
moveq r0, #0
@@ -43549,8 +43549,8 @@ _021FE8C0:
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
- arm_func_start FUN_021FE8CC
-FUN_021FE8CC: ; 0x021FE8CC
+ arm_func_start MOD04_021FE8CC
+MOD04_021FE8CC: ; 0x021FE8CC
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0x90]
@@ -43558,23 +43558,23 @@ FUN_021FE8CC: ; 0x021FE8CC
ldmneia sp!, {r4, pc}
mov r0, #1
str r0, [r4, #0x90]
- bl FUN_021F025C
+ bl MOD04_021F025C
str r0, [r4, #0x94]
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FE8F4
-FUN_021FE8F4: ; 0x021FE8F4
+ arm_func_start MOD04_021FE8F4
+MOD04_021FE8F4: ; 0x021FE8F4
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
_021FE8FC:
ldr r0, [r6, #0x5c]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
subs r5, r0, #1
bmi _021FE970
_021FE90C:
ldr r0, [r6, #0x5c]
mov r1, r5
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
mov r4, r0
ldrh r1, [r4, #0xc]
ldrh r0, [r6, #0x66]
@@ -43586,14 +43586,14 @@ _021FE90C:
ldr r3, [r4, #4]
mov r0, r6
add r2, ip, r2
- bl FUN_021FEBD0
+ bl MOD04_021FEBD0
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r6
mov r1, r4
mov r2, r5
- bl FUN_021FE978
+ bl MOD04_021FE978
b _021FE8FC
_021FE968:
subs r5, r5, #1
@@ -43602,8 +43602,8 @@ _021FE970:
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021FE978
-FUN_021FE978: ; 0x021FE978
+ arm_func_start MOD04_021FE978
+MOD04_021FE978: ; 0x021FE978
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
mov sb, r0
@@ -43612,9 +43612,9 @@ FUN_021FE978: ; 0x021FE978
ldr r6, [r1, #4]
mov r1, r2
mov r8, #0
- bl FUN_021EED84
+ bl MOD04_021EED84
ldr r0, [sb, #0x5c]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
mov r5, r0
cmp r5, #0
mov r4, r8
@@ -43622,7 +43622,7 @@ FUN_021FE978: ; 0x021FE978
_021FE9B4:
ldr r0, [sb, #0x5c]
mov r1, r4
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r1, [r0]
cmp r1, r7
ble _021FE9E8
@@ -43641,12 +43641,12 @@ _021FE9F4:
mov r1, r7
mov r2, r6
add r0, sb, #0x44
- bl FUN_021FC268
+ bl MOD04_021FC268
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- arm_func_start FUN_021FEA0C
-FUN_021FEA0C: ; 0x021FEA0C
+ arm_func_start MOD04_021FEA0C
+MOD04_021FEA0C: ; 0x021FEA0C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x10
mov sb, r0
@@ -43655,7 +43655,7 @@ FUN_021FEA0C: ; 0x021FEA0C
mov r7, r2
mov r6, r3
ldr r5, [sp, #0x34]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
mov r4, r0
cmp r4, #0
mov sl, #0
@@ -43663,7 +43663,7 @@ FUN_021FEA0C: ; 0x021FEA0C
_021FEA40:
ldr r0, [sb, #0x5c]
mov r1, sl
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldrh r0, [r0, #0xc]
cmp r0, r7
moveq r0, #0
@@ -43672,7 +43672,7 @@ _021FEA40:
moveq r0, #1
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
mov r1, r7
- bl FUN_021FF3AC
+ bl MOD04_021FF3AC
cmp r0, #0
bgt _021FEA84
add sl, sl, #1
@@ -43680,7 +43680,7 @@ _021FEA40:
blt _021FEA40
_021FEA84:
add r0, sb, #0x44
- bl FUN_021FC45C
+ bl MOD04_021FC45C
ldr r2, [sp, #0x30]
cmp r0, r2
movlt r0, #1
@@ -43694,10 +43694,10 @@ _021FEA84:
strh r7, [sp, #0xc]
str r0, [sp]
ldr r0, [sb, #0x5c]
- ldr r2, _021FEBB8 ; =FUN_021FEBBC
- bl FUN_021EEE74
+ ldr r2, _021FEBB8 ; =MOD04_021FEBBC
+ bl MOD04_021EEE74
ldr r0, [sb, #0x5c]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
add r1, r4, #1
cmp r1, r0
movne r0, #1
@@ -43707,7 +43707,7 @@ _021FEA84:
ldr r2, [sp, #0x30]
mov r1, r6
add r0, sb, #0x44
- bl FUN_021FC304
+ bl MOD04_021FC304
cmp r4, #0
bne _021FEB2C
sub r0, r7, #1
@@ -43715,7 +43715,7 @@ _021FEA84:
ldrh r1, [sb, #0x66]
mov r0, sb
mov r2, r2, lsr #0x10
- bl FUN_021FD858
+ bl MOD04_021FD858
cmp r0, #0
bne _021FEBA4
add sp, sp, #0x10
@@ -43724,17 +43724,17 @@ _021FEA84:
_021FEB2C:
ldr r0, [sb, #0x5c]
mov r1, r4
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldrh r0, [r0, #0xc]
cmp r0, r7
bne _021FEBA4
ldr r0, [sb, #0x5c]
sub r1, r4, #1
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
mov r4, r0
ldrh r1, [r4, #0xc]
mov r0, r7
- bl FUN_021FF3AC
+ bl MOD04_021FF3AC
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
@@ -43747,7 +43747,7 @@ _021FEB2C:
mov r0, sb
mov r1, r1, lsr #0x10
mov r2, r2, lsr #0x10
- bl FUN_021FD858
+ bl MOD04_021FD858
cmp r0, #0
addeq sp, sp, #0x10
moveq r0, #0
@@ -43759,19 +43759,19 @@ _021FEBA4:
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
-_021FEBB8: .word FUN_021FEBBC
+_021FEBB8: .word MOD04_021FEBBC
- arm_func_start FUN_021FEBBC
-FUN_021FEBBC: ; 0x021FEBBC
- ldr ip, _021FEBCC ; =FUN_021FF3AC
+ arm_func_start MOD04_021FEBBC
+MOD04_021FEBBC: ; 0x021FEBBC
+ ldr ip, _021FEBCC ; =MOD04_021FF3AC
ldrh r0, [r0, #0xc]
ldrh r1, [r1, #0xc]
bx ip
.align 2, 0
-_021FEBCC: .word FUN_021FF3AC
+_021FEBCC: .word MOD04_021FF3AC
- arm_func_start FUN_021FEBD0
-FUN_021FEBD0: ; 0x021FEBD0
+ arm_func_start MOD04_021FEBD0
+MOD04_021FEBD0: ; 0x021FEBD0
stmdb sp!, {lr}
sub sp, sp, #4
ldrh ip, [r0, #0x66]
@@ -43781,7 +43781,7 @@ FUN_021FEBD0: ; 0x021FEBD0
bne _021FEC0C
mov r1, r2
mov r2, r3
- bl FUN_021FF084
+ bl MOD04_021FF084
cmp r0, #0
bne _021FECE8
add sp, sp, #4
@@ -43792,7 +43792,7 @@ _021FEC0C:
bne _021FEC34
mov r1, r2
mov r2, r3
- bl FUN_021FEFEC
+ bl MOD04_021FEFEC
cmp r0, #0
bne _021FECE8
add sp, sp, #4
@@ -43803,7 +43803,7 @@ _021FEC34:
bne _021FEC5C
mov r1, r2
mov r2, r3
- bl FUN_021FEF10
+ bl MOD04_021FEF10
cmp r0, #0
bne _021FECE8
add sp, sp, #4
@@ -43814,7 +43814,7 @@ _021FEC5C:
bne _021FEC84
mov r1, r2
mov r2, r3
- bl FUN_021FEDFC
+ bl MOD04_021FEDFC
cmp r0, #0
bne _021FECE8
add sp, sp, #4
@@ -43823,7 +43823,7 @@ _021FEC5C:
_021FEC84:
cmp r1, #4
bne _021FECA4
- bl FUN_021FEDA4
+ bl MOD04_021FEDA4
cmp r0, #0
bne _021FECE8
add sp, sp, #4
@@ -43834,7 +43834,7 @@ _021FECA4:
bne _021FECCC
mov r1, r2
mov r2, r3
- bl FUN_021FED38
+ bl MOD04_021FED38
cmp r0, #0
bne _021FECE8
add sp, sp, #4
@@ -43843,7 +43843,7 @@ _021FECA4:
_021FECCC:
cmp r1, #6
bne _021FECE8
- bl FUN_021FECF4
+ bl MOD04_021FECF4
cmp r0, #0
addeq sp, sp, #4
moveq r0, #0
@@ -43853,11 +43853,11 @@ _021FECE8:
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021FECF4
-FUN_021FECF4: ; 0x021FECF4
+ arm_func_start MOD04_021FECF4
+MOD04_021FECF4: ; 0x021FECF4
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_021FD828
+ bl MOD04_021FD828
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
@@ -43867,14 +43867,14 @@ FUN_021FECF4: ; 0x021FECF4
moveq r2, #0
movne r2, #1
mov r0, r4
- bl FUN_021FF318
+ bl MOD04_021FF318
cmp r0, #0
moveq r0, #0
movne r0, #1
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FED38
-FUN_021FED38: ; 0x021FED38
+ arm_func_start MOD04_021FED38
+MOD04_021FED38: ; 0x021FED38
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r3, [r6, #0xc]
@@ -43882,15 +43882,15 @@ FUN_021FED38: ; 0x021FED38
mov r4, r2
cmp r3, #1
beq _021FED68
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r4, r5, r6, pc}
_021FED68:
- bl FUN_021FCED0
+ bl MOD04_021FCED0
mov r0, r6
- bl FUN_021FD828
+ bl MOD04_021FD828
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
@@ -43898,20 +43898,20 @@ _021FED68:
mov r2, r5
mov r3, r4
mov r1, #2
- bl FUN_021FCB88
+ bl MOD04_021FCB88
cmp r0, #0
movne r0, #1
moveq r0, #0
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021FEDA4
-FUN_021FEDA4: ; 0x021FEDA4
+ arm_func_start MOD04_021FEDA4
+MOD04_021FEDA4: ; 0x021FEDA4
stmdb sp!, {lr}
sub sp, sp, #4
ldr r1, [r0, #0xc]
cmp r1, #1
beq _021FEDD0
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
add sp, sp, #4
@@ -43923,15 +43923,15 @@ _021FEDD0:
mov r2, r1
mov r3, r1
str ip, [r0, #0xc]
- bl FUN_021FCB88
+ bl MOD04_021FCB88
cmp r0, #0
movne r0, #1
moveq r0, #0
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021FEDFC
-FUN_021FEDFC: ; 0x021FEDFC
+ arm_func_start MOD04_021FEDFC
+MOD04_021FEDFC: ; 0x021FEDFC
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x10
mov r6, r0
@@ -43940,7 +43940,7 @@ FUN_021FEDFC: ; 0x021FEDFC
mov r4, r2
cmp r3, #3
beq _021FEE34
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
add sp, sp, #0x10
@@ -43949,7 +43949,7 @@ FUN_021FEDFC: ; 0x021FEDFC
_021FEE34:
cmp r4, #0x20
bge _021FEE54
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
add sp, sp, #0x10
@@ -43958,11 +43958,11 @@ _021FEE34:
_021FEE54:
mov r0, r5
add r1, r6, #0x68
- bl FUN_021FBF08
+ bl MOD04_021FBF08
cmp r0, #0
bne _021FEE84
mov r0, r6
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
add sp, sp, #0x10
@@ -43974,20 +43974,20 @@ _021FEE84:
cmp r0, #0
bne _021FEEC0
mov r0, r6
- bl FUN_021FD828
+ bl MOD04_021FD828
cmp r0, #0
addeq sp, sp, #0x10
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
mov r0, r6
- bl FUN_021FCED0
+ bl MOD04_021FCED0
add sp, sp, #0x10
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
_021FEEC0:
mov r0, #4
str r0, [r6, #0xc]
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r2, [r6, #0x8c]
add r1, r5, #0x20
sub r0, r0, r2
@@ -43999,15 +43999,15 @@ _021FEEC0:
ldr r0, [r6, #8]
ldr r2, [r6]
mov r1, r6
- bl FUN_021FCC88
+ bl MOD04_021FCC88
cmp r0, #0
movne r0, #1
moveq r0, #0
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021FEF10
-FUN_021FEF10: ; 0x021FEF10
+ arm_func_start MOD04_021FEF10
+MOD04_021FEF10: ; 0x021FEF10
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x24
mov r5, r0
@@ -44015,7 +44015,7 @@ FUN_021FEF10: ; 0x021FEF10
mov r4, r1
cmp r3, #0
beq _021FEF44
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
add sp, sp, #0x24
@@ -44024,7 +44024,7 @@ FUN_021FEF10: ; 0x021FEF10
_021FEF44:
cmp r2, #0x40
bge _021FEF64
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
add sp, sp, #0x24
@@ -44033,11 +44033,11 @@ _021FEF44:
_021FEF64:
mov r0, r4
add r1, r5, #0x68
- bl FUN_021FBF08
+ bl MOD04_021FBF08
cmp r0, #0
bne _021FEF94
mov r0, r5
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
add sp, sp, #0x24
@@ -44046,12 +44046,12 @@ _021FEF64:
_021FEF94:
add r0, sp, #0
add r1, r4, #0x20
- bl FUN_021FBF44
+ bl MOD04_021FBF44
ldr r2, [r5, #0x38]
ldr r3, [r5, #0x3c]
add r1, sp, #0
mov r0, r5
- bl FUN_021FDBA0
+ bl MOD04_021FDBA0
cmp r0, #0
addeq sp, sp, #0x24
moveq r0, #0
@@ -44059,7 +44059,7 @@ _021FEF94:
ldr r0, [r5, #0x38]
cmp r0, #0
beq _021FEFDC
- bl FUN_021DD82C
+ bl MOD04_021DD82C
mov r0, #0
str r0, [r5, #0x38]
_021FEFDC:
@@ -44068,15 +44068,15 @@ _021FEFDC:
add sp, sp, #0x24
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021FEFEC
-FUN_021FEFEC: ; 0x021FEFEC
+ arm_func_start MOD04_021FEFEC
+MOD04_021FEFEC: ; 0x021FEFEC
stmdb sp!, {r4, lr}
sub sp, sp, #0x40
mov r4, r0
ldr r3, [r4, #0xc]
cmp r3, #2
beq _021FF01C
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
add sp, sp, #0x40
@@ -44085,7 +44085,7 @@ FUN_021FEFEC: ; 0x021FEFEC
_021FF01C:
cmp r2, #0x20
bge _021FF03C
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
movne r0, #1
add sp, sp, #0x40
@@ -44093,16 +44093,16 @@ _021FF01C:
ldmia sp!, {r4, pc}
_021FF03C:
add r0, sp, #0
- bl FUN_021FBF44
+ bl MOD04_021FBF44
add r0, sp, #0x20
- bl FUN_021FC07C
+ bl MOD04_021FC07C
add r1, sp, #0x20
add r0, r4, #0x68
- bl FUN_021FBF44
+ bl MOD04_021FBF44
add r1, sp, #0
add r2, sp, #0x20
mov r0, r4
- bl FUN_021FDC28
+ bl MOD04_021FDC28
cmp r0, #0
moveq r0, #0
movne r0, #3
@@ -44111,8 +44111,8 @@ _021FF03C:
add sp, sp, #0x40
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FF084
-FUN_021FF084: ; 0x021FF084
+ arm_func_start MOD04_021FF084
+MOD04_021FF084: ; 0x021FF084
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r6, r0
@@ -44123,7 +44123,7 @@ FUN_021FF084: ; 0x021FF084
beq _021FF0C4
cmp r3, #6
beq _021FF0C4
- bl FUN_021FF304
+ bl MOD04_021FF304
cmp r0, #0
bne _021FF128
add sp, sp, #8
@@ -44131,7 +44131,7 @@ FUN_021FF084: ; 0x021FF084
ldmia sp!, {r4, r5, r6, pc}
_021FF0C4:
ldr r0, [r6, #0x9c]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
beq _021FF104
mov ip, #1
@@ -44140,7 +44140,7 @@ _021FF0C4:
mov r3, r4
mov r1, #0
str ip, [sp]
- bl FUN_021FC6C4
+ bl MOD04_021FC6C4
cmp r0, #0
movne r0, #1
add sp, sp, #8
@@ -44151,7 +44151,7 @@ _021FF104:
mov r1, r5
mov r2, r4
mov r3, #1
- bl FUN_021FCA8C
+ bl MOD04_021FCA8C
cmp r0, #0
addeq sp, sp, #8
moveq r0, #0
@@ -44161,8 +44161,8 @@ _021FF128:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021FF134
-FUN_021FF134: ; 0x021FF134
+ arm_func_start MOD04_021FF134
+MOD04_021FF134: ; 0x021FF134
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r6, r0
@@ -44177,7 +44177,7 @@ FUN_021FF134: ; 0x021FF134
ldmneia sp!, {r4, r5, r6, pc}
_021FF164:
ldr r0, [r6, #0x9c]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
beq _021FF1A0
mov r1, #0
@@ -44185,7 +44185,7 @@ _021FF164:
mov r2, r5
mov r3, r4
str r1, [sp]
- bl FUN_021FC6C4
+ bl MOD04_021FC6C4
cmp r0, #0
movne r0, #1
add sp, sp, #8
@@ -44196,21 +44196,21 @@ _021FF1A0:
mov r1, r5
mov r2, r4
mov r3, #0
- bl FUN_021FCA8C
+ bl MOD04_021FCA8C
cmp r0, #0
movne r0, #1
moveq r0, #0
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021FF1C8
-FUN_021FF1C8: ; 0x021FF1C8
+ arm_func_start MOD04_021FF1C8
+MOD04_021FF1C8: ; 0x021FF1C8
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r4, r0
ldr r0, [r4, #0x60]
mov r7, r1
- bl FUN_021EF06C
+ bl MOD04_021EF06C
movs r6, r0
addeq sp, sp, #4
moveq r0, #1
@@ -44221,10 +44221,10 @@ FUN_021FF1C8: ; 0x021FF1C8
_021FF1FC:
ldr r0, [r4, #0x60]
mov r1, r5
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldrh r0, [r0, #8]
mov r1, r7
- bl FUN_021FF3AC
+ bl MOD04_021FF3AC
cmp r0, #0
bge _021FF228
add r5, r5, #1
@@ -44241,13 +44241,13 @@ _021FF228:
_021FF244:
ldr r0, [r4, #0x60]
mov r1, r5
- bl FUN_021EED84
+ bl MOD04_021EED84
cmp r5, #0
sub r5, r5, #1
bne _021FF244
_021FF25C:
ldr r0, [r4, #0x60]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
movs r6, r0
moveq r0, #0
streq r0, [r4, #0x58]
@@ -44256,7 +44256,7 @@ _021FF25C:
ldmeqia sp!, {r4, r5, r6, r7, pc}
ldr r0, [r4, #0x60]
mov r1, #0
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
cmp r6, #0
ldr r7, [r0]
mov r5, #0
@@ -44264,7 +44264,7 @@ _021FF25C:
_021FF298:
ldr r0, [r4, #0x60]
mov r1, r5
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r1, [r0]
add r5, r5, #1
sub r1, r1, r7
@@ -44275,36 +44275,36 @@ _021FF2BC:
mov r2, r7
add r0, r4, #0x50
mov r1, #0
- bl FUN_021FC268
+ bl MOD04_021FC268
mov r0, #1
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_021FF2D8
-FUN_021FF2D8: ; 0x021FF2D8
+ arm_func_start MOD04_021FF2D8
+MOD04_021FF2D8: ; 0x021FF2D8
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_021FD828
+ bl MOD04_021FD828
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
mov r0, r4
mov r1, #1
mov r2, #4
- bl FUN_021FF318
+ bl MOD04_021FF318
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FF304
-FUN_021FF304: ; 0x021FF304
- ldr ip, _021FF314 ; =FUN_021FF318
+ arm_func_start MOD04_021FF304
+MOD04_021FF304: ; 0x021FF304
+ ldr ip, _021FF314 ; =MOD04_021FF318
mov r1, #7
mov r2, #2
bx ip
.align 2, 0
-_021FF314: .word FUN_021FF318
+_021FF314: .word MOD04_021FF318
- arm_func_start FUN_021FF318
-FUN_021FF318: ; 0x021FF318
+ arm_func_start MOD04_021FF318
+MOD04_021FF318: ; 0x021FF318
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r3, [r6, #0xc]
@@ -44315,12 +44315,12 @@ FUN_021FF318: ; 0x021FF318
ldr r1, [r6, #0x10]
cmp r1, #0
beq _021FF368
- bl FUN_021FCED0
+ bl MOD04_021FCED0
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, r2
- bl FUN_021FCB88
+ bl MOD04_021FCB88
cmp r0, #0
bne _021FF3A4
mov r0, #0
@@ -44330,15 +44330,15 @@ _021FF368:
moveq r0, #1
streq r0, [r6, #0x14]
mov r0, r6
- bl FUN_021FCED0
+ bl MOD04_021FCED0
b _021FF3A4
_021FF380:
cmp r3, #7
beq _021FF3A4
- bl FUN_021FCED0
+ bl MOD04_021FCED0
mov r0, r6
mov r1, r4
- bl FUN_021FC9B8
+ bl MOD04_021FC9B8
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
@@ -44346,23 +44346,23 @@ _021FF3A4:
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_021FF3AC
-FUN_021FF3AC: ; 0x021FF3AC
+ arm_func_start MOD04_021FF3AC
+MOD04_021FF3AC: ; 0x021FF3AC
sub r0, r0, r1
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
bx lr
- arm_func_start FUN_021FF3BC
-FUN_021FF3BC: ; 0x021FF3BC
+ arm_func_start MOD04_021FF3BC
+MOD04_021FF3BC: ; 0x021FF3BC
mov r3, r2, asr #8
strb r3, [r0, r1]
add r1, r1, #1
strb r2, [r0, r1]
bx lr
- arm_func_start FUN_021FF3D0
-FUN_021FF3D0: ; 0x021FF3D0
+ arm_func_start MOD04_021FF3D0
+MOD04_021FF3D0: ; 0x021FF3D0
ldrb r2, [r0, r1]
add r1, r1, #1
ldrb r1, [r0, r1]
@@ -44372,8 +44372,8 @@ FUN_021FF3D0: ; 0x021FF3D0
orr r0, r1, r0, lsr #16
bx lr
- arm_func_start FUN_021FF3F0
-FUN_021FF3F0: ; 0x021FF3F0
+ arm_func_start MOD04_021FF3F0
+MOD04_021FF3F0: ; 0x021FF3F0
stmdb sp!, {r4, lr}
mov r4, r0
ldr r1, [r4, #0x18]
@@ -44381,57 +44381,57 @@ FUN_021FF3F0: ; 0x021FF3F0
ldmneia sp!, {r4, pc}
mov r1, #1
str r1, [r4, #0x18]
- bl FUN_021FD45C
+ bl MOD04_021FD45C
mov r0, r4
- bl FUN_021FCDB4
+ bl MOD04_021FCDB4
cmp r0, #0
ldmeqia sp!, {r4, pc}
mov r0, r4
- bl FUN_021FF9CC
+ bl MOD04_021FF9CC
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FF42C
-FUN_021FF42C: ; 0x021FF42C
+ arm_func_start MOD04_021FF42C
+MOD04_021FF42C: ; 0x021FF42C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
ldr r0, [r5, #0x10]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
subs r4, r0, #1
addmi sp, sp, #4
ldmmiia sp!, {r4, r5, pc}
_021FF44C:
ldr r0, [r5, #0x10]
mov r1, r4
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r0, [r0]
- bl FUN_021FF6BC
+ bl MOD04_021FF6BC
subs r4, r4, #1
bpl _021FF44C
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_021FF470
-FUN_021FF470: ; 0x021FF470
+ arm_func_start MOD04_021FF470
+MOD04_021FF470: ; 0x021FF470
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r4, r0
- bl FUN_021F025C
+ bl MOD04_021F025C
str r0, [sp]
ldr r0, [r4, #0xc]
- ldr r1, _021FF4A8 ; =FUN_021FF4AC
+ ldr r1, _021FF4A8 ; =MOD04_021FF4AC
add r2, sp, #0
- bl FUN_021EF264
+ bl MOD04_021EF264
cmp r0, #0
moveq r0, #1
movne r0, #0
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
-_021FF4A8: .word FUN_021FF4AC
+_021FF4A8: .word MOD04_021FF4AC
- arm_func_start FUN_021FF4AC
-FUN_021FF4AC: ; 0x021FF4AC
+ arm_func_start MOD04_021FF4AC
+MOD04_021FF4AC: ; 0x021FF4AC
stmdb sp!, {r4, lr}
ldr r4, [r0]
ldr r1, [r1]
@@ -44439,7 +44439,7 @@ FUN_021FF4AC: ; 0x021FF4AC
cmp r0, #7
beq _021FF4D8
mov r0, r4
- bl FUN_021FCF88
+ bl MOD04_021FCF88
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, pc}
@@ -44454,13 +44454,13 @@ _021FF4D8:
cmp r0, #0
bne _021FF504
mov r0, r4
- bl FUN_021FF6BC
+ bl MOD04_021FF6BC
_021FF504:
mov r0, #1
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FF50C
-FUN_021FF50C: ; 0x021FF50C
+ arm_func_start MOD04_021FF50C
+MOD04_021FF50C: ; 0x021FF50C
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x18
@@ -44469,9 +44469,9 @@ FUN_021FF50C: ; 0x021FF50C
add r0, sp, #0x34
add r1, sp, #0x38
mov r4, r2
- bl FUN_021FFCDC
+ bl MOD04_021FFCDC
ldr r0, [r6]
- bl FUN_021EFEFC
+ bl MOD04_021EFEFC
cmp r0, #0
addeq sp, sp, #0x18
moveq r0, #1
@@ -44497,19 +44497,19 @@ FUN_021FF50C: ; 0x021FF50C
ldr r0, [r6]
ldr r1, [sp, #0x34]
ldr r2, [sp, #0x38]
- bl FUN_021EFBD4
+ bl MOD04_021EFBD4
mvn r1, #0
cmp r0, r1
bne _021FF640
ldr r0, [r6]
- bl FUN_021EFB28
+ bl MOD04_021EFB28
mvn r1, #0xe
cmp r0, r1
bne _021FF5EC
mov r0, r6
mov r1, r5
mov r2, r4
- bl FUN_021FE0B4
+ bl MOD04_021FE0B4
cmp r0, #0
bne _021FF6A8
add sp, sp, #0x18
@@ -44535,7 +44535,7 @@ _021FF618:
cmp r0, r1
beq _021FF6A8
mov r0, r6
- bl FUN_021FF3F0
+ bl MOD04_021FF3F0
add sp, sp, #0x18
mov r0, #0
ldmia sp!, {r4, r5, r6, lr}
@@ -44548,7 +44548,7 @@ _021FF640:
mov r0, r6
mov r1, r5
mov r2, r4
- bl FUN_021FFC3C
+ bl MOD04_021FFC3C
mov r1, #0
str r1, [sp]
ldr r2, [sp, #0x34]
@@ -44561,7 +44561,7 @@ _021FF640:
str ip, [sp, #8]
mov r4, #1
str r4, [sp, #0xc]
- bl FUN_021FC59C
+ bl MOD04_021FC59C
cmp r0, #0
addeq sp, sp, #0x18
moveq r0, #0
@@ -44575,8 +44575,8 @@ _021FF6A8:
add sp, sp, #0x10
bx lr
- arm_func_start FUN_021FF6BC
-FUN_021FF6BC: ; 0x021FF6BC
+ arm_func_start MOD04_021FF6BC
+MOD04_021FF6BC: ; 0x021FF6BC
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, r6, lr}
ldr r1, [sp, #0x10]
@@ -44595,7 +44595,7 @@ FUN_021FF6BC: ; 0x021FF6BC
bne _021FF774
ldr r0, [r1, #8]
ldr r0, [r0, #0x10]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
mov r6, r0
mov r5, #0
cmp r6, #0
@@ -44607,14 +44607,14 @@ _021FF720:
mov r1, r5
ldr r0, [r4, #8]
ldr r0, [r0, #0x10]
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r0, [r0]
cmp r4, r0
bne _021FF75C
ldr r0, [r4, #8]
mov r1, r5
ldr r0, [r0, #0x10]
- bl FUN_021EED84
+ bl MOD04_021EED84
ldmia sp!, {r4, r5, r6, lr}
add sp, sp, #0x10
bx lr
@@ -44629,13 +44629,13 @@ _021FF774:
ldr r0, [r1, #8]
add r1, sp, #0x10
ldr r0, [r0, #0xc]
- bl FUN_021EF3F4
+ bl MOD04_021EF3F4
ldmia sp!, {r4, r5, r6, lr}
add sp, sp, #0x10
bx lr
- arm_func_start FUN_021FF790
-FUN_021FF790: ; 0x021FF790
+ arm_func_start MOD04_021FF790
+MOD04_021FF790: ; 0x021FF790
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r4, r3
@@ -44646,12 +44646,12 @@ FUN_021FF790: ; 0x021FF790
mov r2, r4
mov r7, r0
str r3, [sp]
- bl FUN_021FFC3C
+ bl MOD04_021FFC3C
cmp r0, #0
addne sp, sp, #4
movne r0, #5
ldmneia sp!, {r4, r5, r6, r7, pc}
- bl FUN_021FF9B4
+ bl MOD04_021FF9B4
str r0, [sp]
cmp r0, #0
beq _021FF930
@@ -44664,7 +44664,7 @@ FUN_021FF790: ; 0x021FF790
strh r4, [r0, #4]
ldr r0, [sp]
str r7, [r0, #8]
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r2, [sp]
mov r1, #0
str r0, [r2, #0x1c]
@@ -44678,19 +44678,19 @@ FUN_021FF790: ; 0x021FF790
ldr r0, [sp]
ldr r1, [r7, #0x3c]
add r0, r0, #0x44
- bl FUN_021FC46C
+ bl MOD04_021FC46C
cmp r0, #0
beq _021FF930
ldr r0, [sp]
ldr r1, [r7, #0x38]
add r0, r0, #0x50
- bl FUN_021FC46C
+ bl MOD04_021FC46C
cmp r0, #0
beq _021FF930
mov r0, #0x10
mov r1, #0x40
mov r2, #0
- bl FUN_021EF0E4
+ bl MOD04_021EF0E4
ldr r1, [sp]
str r0, [r1, #0x5c]
ldr r0, [sp]
@@ -44700,7 +44700,7 @@ FUN_021FF790: ; 0x021FF790
mov r0, #0x10
mov r1, #0x40
mov r2, #0
- bl FUN_021EF0E4
+ bl MOD04_021EF0E4
ldr r1, [sp]
str r0, [r1, #0x60]
ldr r0, [sp]
@@ -44710,7 +44710,7 @@ FUN_021FF790: ; 0x021FF790
mov r0, #4
mov r1, #2
mov r2, #0
- bl FUN_021EF0E4
+ bl MOD04_021EF0E4
ldr r1, [sp]
str r0, [r1, #0x98]
ldr r0, [sp]
@@ -44720,7 +44720,7 @@ FUN_021FF790: ; 0x021FF790
mov r0, #4
mov r1, #2
mov r2, #0
- bl FUN_021EF0E4
+ bl MOD04_021EF0E4
ldr r1, [sp]
str r0, [r1, #0x9c]
ldr r0, [sp]
@@ -44729,11 +44729,11 @@ FUN_021FF790: ; 0x021FF790
beq _021FF930
ldr r0, [r7, #0xc]
add r1, sp, #0
- bl FUN_021EF494
+ bl MOD04_021EF494
mov r0, r7
mov r1, r5
mov r2, r4
- bl FUN_021FFC3C
+ bl MOD04_021FFC3C
str r0, [r6]
ldr r0, [r6]
cmp r0, #0
@@ -44745,56 +44745,56 @@ _021FF930:
cmp r0, #0
beq _021FF9A8
ldr r0, [r0, #0x44]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [sp]
ldr r0, [r0, #0x50]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldr r0, [sp]
ldr r0, [r0, #0x5c]
cmp r0, #0
beq _021FF964
- bl FUN_021EF074
+ bl MOD04_021EF074
_021FF964:
ldr r0, [sp]
ldr r0, [r0, #0x60]
cmp r0, #0
beq _021FF978
- bl FUN_021EF074
+ bl MOD04_021EF074
_021FF978:
ldr r0, [sp]
ldr r0, [r0, #0x98]
cmp r0, #0
beq _021FF98C
- bl FUN_021EF074
+ bl MOD04_021EF074
_021FF98C:
ldr r0, [sp]
ldr r0, [r0, #0x9c]
cmp r0, #0
beq _021FF9A0
- bl FUN_021EF074
+ bl MOD04_021EF074
_021FF9A0:
ldr r0, [sp]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
_021FF9A8:
mov r0, #1
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_021FF9B4
-FUN_021FF9B4: ; 0x021FF9B4
- ldr ip, _021FF9C0 ; =FUN_021DD860
+ arm_func_start MOD04_021FF9B4
+MOD04_021FF9B4: ; 0x021FF9B4
+ ldr ip, _021FF9C0 ; =MOD04_021DD860
mov r0, #0xa0
bx ip
.align 2, 0
-_021FF9C0: .word FUN_021DD860
+_021FF9C0: .word MOD04_021DD860
- arm_func_start FUN_021FF9C4
-FUN_021FF9C4: ; 0x021FF9C4
+ arm_func_start MOD04_021FF9C4
+MOD04_021FF9C4: ; 0x021FF9C4
str r1, [r0, #0x20]
bx lr
- arm_func_start FUN_021FF9CC
-FUN_021FF9CC: ; 0x021FF9CC
+ arm_func_start MOD04_021FF9CC
+MOD04_021FF9CC: ; 0x021FF9CC
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0x1c]
@@ -44803,25 +44803,25 @@ FUN_021FF9CC: ; 0x021FF9CC
strne r0, [r4, #0x14]
ldmneia sp!, {r4, pc}
ldr r0, [r4]
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
ldr r0, [r4, #0xc]
- bl FUN_021EF5B0
+ bl MOD04_021EF5B0
ldr r0, [r4, #0x10]
- bl FUN_021EF074
+ bl MOD04_021EF074
mov r0, r4
- bl FUN_021DD82C
- bl FUN_021F0248
+ bl MOD04_021DD82C
+ bl MOD04_021F0248
ldmia sp!, {r4, pc}
- arm_func_start FUN_021FFA10
-FUN_021FFA10: ; 0x021FFA10
+ arm_func_start MOD04_021FFA10
+MOD04_021FFA10: ; 0x021FFA10
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x1c
mov r4, r1
mov r6, r3
mov r5, r0
mov r7, r2
- bl FUN_021F024C
+ bl MOD04_021F024C
cmp r6, #0
moveq r6, #0x10000
cmp r7, #0
@@ -44829,13 +44829,13 @@ FUN_021FFA10: ; 0x021FFA10
add r2, sp, #8
mov r0, r4
moveq r7, #0x10000
- bl FUN_021FFD28
+ bl MOD04_021FFD28
cmp r0, #0
addeq sp, sp, #0x1c
moveq r0, #4
ldmeqia sp!, {r4, r5, r6, r7, pc}
mov r0, #0x44
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
addeq sp, sp, #0x1c
moveq r0, #1
@@ -44848,22 +44848,22 @@ FUN_021FFA10: ; 0x021FFA10
str r6, [r4, #0x3c]
ldr r1, [sp, #0x30]
str r7, [r4, #0x38]
- ldr r0, _021FFC30 ; =FUN_021FFC84
+ ldr r0, _021FFC30 ; =MOD04_021FFC84
str r1, [r4, #0x24]
str r0, [sp]
mov r0, #0
- ldr r3, _021FFC34 ; =FUN_021FFCB4
+ ldr r3, _021FFC34 ; =MOD04_021FFCB4
str r0, [sp, #4]
mov r0, #4
mov r1, #0x20
mov r2, #2
- bl FUN_021EF62C
+ bl MOD04_021EF62C
str r0, [r4, #0xc]
ldr r0, [r4, #0xc]
cmp r0, #0
bne _021FFAE0
mov r0, r4
- bl FUN_021DD82C
+ bl MOD04_021DD82C
add sp, sp, #0x1c
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -44871,15 +44871,15 @@ _021FFAE0:
mov r0, #4
ldr r2, _021FFC38 ; =0x021FFC74
mov r1, r0
- bl FUN_021EF0E4
+ bl MOD04_021EF0E4
str r0, [r4, #0x10]
ldr r0, [r4, #0x10]
cmp r0, #0
bne _021FFB1C
ldr r0, [r4, #0xc]
- bl FUN_021EF5B0
+ bl MOD04_021EF5B0
mov r0, r4
- bl FUN_021DD82C
+ bl MOD04_021DD82C
add sp, sp, #0x1c
mov r0, #1
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -44887,18 +44887,18 @@ _021FFB1C:
mov r0, #2
mov r1, r0
mov r2, #0
- bl FUN_021EFDB8
+ bl MOD04_021EFDB8
str r0, [r4]
ldr r1, [r4]
mvn r0, #0
cmp r1, r0
bne _021FFB64
ldr r0, [r4, #0xc]
- bl FUN_021EF5B0
+ bl MOD04_021EF5B0
ldr r0, [r4, #0x10]
- bl FUN_021EF074
+ bl MOD04_021EF074
mov r0, r4
- bl FUN_021DD82C
+ bl MOD04_021DD82C
add sp, sp, #0x1c
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -44920,18 +44920,18 @@ _021FFB64:
strh r0, [sp, #0xe]
ldr r0, [r4]
mov r2, #8
- bl FUN_021EFD28
+ bl MOD04_021EFD28
mvn r1, #0
cmp r0, r1
bne _021FFBE4
ldr r0, [r4]
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
ldr r0, [r4, #0xc]
- bl FUN_021EF5B0
+ bl MOD04_021EF5B0
ldr r0, [r4, #0x10]
- bl FUN_021EF074
+ bl MOD04_021EF074
mov r0, r4
- bl FUN_021DD82C
+ bl MOD04_021DD82C
add sp, sp, #0x1c
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -44941,7 +44941,7 @@ _021FFBE4:
ldr r0, [r4]
add r1, sp, #0xc
add r2, sp, #0x18
- bl FUN_021EFB5C
+ bl MOD04_021EFB5C
ldr r1, [sp, #0x10]
mov r0, #0
str r1, [r4, #4]
@@ -44956,12 +44956,12 @@ _021FFBE4:
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
-_021FFC30: .word FUN_021FFC84
-_021FFC34: .word FUN_021FFCB4
+_021FFC30: .word MOD04_021FFC84
+_021FFC34: .word MOD04_021FFCB4
_021FFC38: .word 0x021FFC74
- arm_func_start FUN_021FFC3C
-FUN_021FFC3C: ; 0x021FFC3C
+ arm_func_start MOD04_021FFC3C
+MOD04_021FFC3C: ; 0x021FFC3C
stmdb sp!, {lr}
sub sp, sp, #0xa4
add r3, sp, #4
@@ -44970,20 +44970,20 @@ FUN_021FFC3C: ; 0x021FFC3C
str r3, [sp]
ldr r0, [r0, #0xc]
add r1, sp, #0
- bl FUN_021EF358
+ bl MOD04_021EF358
cmp r0, #0
ldrne r0, [r0]
moveq r0, #0
add sp, sp, #0xa4
ldmfd sp!, {pc}
- ldr ip, _021FFC80 ; =FUN_021FCE4C
+ ldr ip, _021FFC80 ; =MOD04_021FCE4C
ldr r0, [r0]
bx ip
.align 2, 0
-_021FFC80: .word FUN_021FCE4C
+_021FFC80: .word MOD04_021FCE4C
- arm_func_start FUN_021FFC84
-FUN_021FFC84: ; 0x021FFC84
+ arm_func_start MOD04_021FFC84
+MOD04_021FFC84: ; 0x021FFC84
ldr r3, [r0]
ldr r2, [r1]
ldr r0, [r3]
@@ -44997,8 +44997,8 @@ FUN_021FFC84: ; 0x021FFC84
moveq r0, r0, asr #0x10
bx lr
- arm_func_start FUN_021FFCB4
-FUN_021FFCB4: ; 0x021FFCB4
+ arm_func_start MOD04_021FFCB4
+MOD04_021FFCB4: ; 0x021FFCB4
stmdb sp!, {lr}
sub sp, sp, #4
ldr r2, [r0]
@@ -45010,8 +45010,8 @@ FUN_021FFCB4: ; 0x021FFCB4
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_021FFCDC
-FUN_021FFCDC: ; 0x021FFCDC
+ arm_func_start MOD04_021FFCDC
+MOD04_021FFCDC: ; 0x021FFCDC
stmdb sp!, {r4, lr}
ldr r2, [r0]
mov r4, r1
@@ -45033,8 +45033,8 @@ FUN_021FFCDC: ; 0x021FFCDC
.align 2, 0
_021FFD24: .word 0x0220EFD4
- arm_func_start FUN_021FFD28
-FUN_021FFD28: ; 0x021FFD28
+ arm_func_start MOD04_021FFD28
+MOD04_021FFD28: ; 0x021FFD28
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x104
movs r8, r0
@@ -45120,7 +45120,7 @@ _021FFE40:
cmp r8, #0
beq _021FFE84
mov r0, r8
- bl FUN_021EFB38
+ bl MOD04_021EFB38
mov r5, r0
mvn r0, #0
cmp r5, r0
@@ -45148,8 +45148,8 @@ _021FFEA4: .word 0x0220EFF8
_021FFEA8: .word 0x0210430C
_021FFEAC: .word 0x0000FFFF
- arm_func_start FUN_021FFEB0
-FUN_021FFEB0: ; 0x021FFEB0
+ arm_func_start MOD04_021FFEB0
+MOD04_021FFEB0: ; 0x021FFEB0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
movs r5, r2
@@ -45206,14 +45206,14 @@ _021FFF6C: .word 0x0220F008
_021FFF70: .word 0x0220F010
_021FFF74: .word 0x0220F014
- arm_func_start FUN_021FFF78
-FUN_021FFF78: ; 0x021FFF78
+ arm_func_start MOD04_021FFF78
+MOD04_021FFF78: ; 0x021FFF78
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x2c
mov r6, r0
mov r7, r1
mov r5, r2
- bl FUN_02200D40
+ bl MOD04_02200D40
cmp r0, #0
addeq sp, sp, #0x2c
ldmeqia sp!, {r4, r5, r6, r7, pc}
@@ -45247,7 +45247,7 @@ _021FFFC4:
and r1, r3, #0xff000000
orr r0, r2, r0
orr r0, r1, r0
- bl FUN_02200ED4
+ bl MOD04_02200ED4
cmp r0, #0
addeq sp, sp, #0x2c
ldmeqia sp!, {r4, r5, r6, r7, pc}
@@ -45255,13 +45255,13 @@ _021FFFC4:
bne _02200038
add r1, sp, #0
mov r2, r5
- bl FUN_022002CC
+ bl MOD04_022002CC
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, pc}
_02200038:
add r1, sp, #0
mov r2, r5
- bl FUN_022001E4
+ bl MOD04_022001E4
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, pc}
_0220004C:
@@ -45291,18 +45291,18 @@ _02200060:
and r1, r3, #0xff000000
orr r0, r2, r0
orr r0, r1, r0
- bl FUN_02200ED4
+ bl MOD04_02200ED4
cmp r0, #0
addeq sp, sp, #0x2c
ldmeqia sp!, {r4, r5, r6, r7, pc}
add r1, sp, #0x14
mov r2, r5
- bl FUN_022000D4
+ bl MOD04_022000D4
add sp, sp, #0x2c
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_022000D4
-FUN_022000D4: ; 0x022000D4
+ arm_func_start MOD04_022000D4
+MOD04_022000D4: ; 0x022000D4
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r3, r1
@@ -45345,7 +45345,7 @@ _02200100:
_0220016C:
mov r0, #1
str r0, [r4, #0x10]
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r1, _022001E0 ; =0x00002710
add r0, r0, r1
str r0, [r4, #0x28]
@@ -45370,14 +45370,14 @@ _0220019C:
ldr r1, [r2, #4]
ldr r0, [r4]
mov r2, ip, lsr #0x10
- bl FUN_02200CEC
+ bl MOD04_02200CEC
add sp, sp, #8
ldmia sp!, {r4, pc}
.align 2, 0
_022001E0: .word 0x00002710
- arm_func_start FUN_022001E4
-FUN_022001E4: ; 0x022001E4
+ arm_func_start MOD04_022001E4
+MOD04_022001E4: ; 0x022001E4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -45400,7 +45400,7 @@ FUN_022001E4: ; 0x022001E4
ldrb r2, [r1, #0x12]
cmp r2, #0
bne _02200248
- bl FUN_022008D8
+ bl MOD04_022008D8
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
_02200248:
@@ -45410,11 +45410,11 @@ _02200248:
ldrb r1, [r5, #0x33]
cmp r1, #0
bne _02200264
- bl FUN_022008D8
+ bl MOD04_022008D8
_02200264:
mov r0, #3
str r0, [r5, #0x10]
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r1, _022002C8 ; =0x00001388
mvn r2, #0
add r0, r0, r1
@@ -45435,14 +45435,14 @@ _022002AC:
cmp r1, #0
addne sp, sp, #4
ldmneia sp!, {r4, r5, pc}
- bl FUN_022008D8
+ bl MOD04_022008D8
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
_022002C8: .word 0x00001388
- arm_func_start FUN_022002CC
-FUN_022002CC: ; 0x022002CC
+ arm_func_start MOD04_022002CC
+MOD04_022002CC: ; 0x022002CC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r1
@@ -45451,7 +45451,7 @@ FUN_022002CC: ; 0x022002CC
cmp r1, #0
bne _022002F0
mov r1, r2
- bl FUN_0220039C
+ bl MOD04_0220039C
_022002F0:
ldr r0, [r4, #0x10]
cmp r0, #2
@@ -45473,7 +45473,7 @@ _02200324:
mov r2, #0
blx ip
ldr r0, [r4, #8]
- bl FUN_022006B4
+ bl MOD04_022006B4
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
_02200348:
@@ -45495,12 +45495,12 @@ _02200348:
ldr r2, [r4, #0x34]
blx r2
mov r0, r4
- bl FUN_022008D8
+ bl MOD04_022008D8
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_0220039C
-FUN_0220039C: ; 0x0220039C
+ arm_func_start MOD04_0220039C
+MOD04_0220039C: ; 0x0220039C
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x20
ldr r6, _02200464 ; =0x0220F018
@@ -45548,14 +45548,14 @@ FUN_0220039C: ; 0x0220039C
ldr r0, [r0]
ldr r1, [r1, #4]
mov r2, r2, lsr #0x10
- bl FUN_02200CEC
+ bl MOD04_02200CEC
add sp, sp, #0x20
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02200464: .word 0x0220F018
- arm_func_start FUN_02200468
-FUN_02200468: ; 0x02200468
+ arm_func_start MOD04_02200468
+MOD04_02200468: ; 0x02200468
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r0, _022004B8 ; =0x022113D4
@@ -45563,7 +45563,7 @@ FUN_02200468: ; 0x02200468
cmp r0, #0
addeq sp, sp, #4
ldmeqia sp!, {r4, r5, pc}
- bl FUN_021EF06C
+ bl MOD04_021EF06C
subs r5, r0, #1
addmi sp, sp, #4
ldmmiia sp!, {r4, r5, pc}
@@ -45571,8 +45571,8 @@ FUN_02200468: ; 0x02200468
_02200498:
ldr r0, [r4]
mov r1, r5
- bl FUN_021EEFFC
- bl FUN_022004BC
+ bl MOD04_021EEFFC
+ bl MOD04_022004BC
subs r5, r5, #1
bpl _02200498
add sp, sp, #4
@@ -45580,8 +45580,8 @@ _02200498:
.align 2, 0
_022004B8: .word 0x022113D4
- arm_func_start FUN_022004BC
-FUN_022004BC: ; 0x022004BC
+ arm_func_start MOD04_022004BC
+MOD04_022004BC: ; 0x022004BC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x20
mov r1, #8
@@ -45590,7 +45590,7 @@ FUN_022004BC: ; 0x022004BC
ldr r1, [sb, #0x10]
cmp r1, #4
bne _022004E8
- bl FUN_02200DA4
+ bl MOD04_02200DA4
add sp, sp, #0x20
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
_022004E8:
@@ -45604,7 +45604,7 @@ _022004E8:
mov r5, #0x200
mov r4, #0
_0220050C:
- bl FUN_021EFF2C
+ bl MOD04_021EFF2C
cmp r0, #0
beq _02200564
str r8, [sp]
@@ -45613,13 +45613,13 @@ _0220050C:
mov r1, r6
mov r2, r5
mov r3, r4
- bl FUN_021EFC40
+ bl MOD04_021EFC40
mov r1, r0
cmp r1, sl
beq _02200564
mov r0, r6
mov r2, r8
- bl FUN_021FFF78
+ bl MOD04_021FFF78
ldr r0, [sb, #0x10]
cmp r0, #4
beq _02200564
@@ -45633,7 +45633,7 @@ _02200564:
cmp r0, #2
bne _022005E4
_02200578:
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r1, [sb, #0x28]
cmp r0, r1
bls _022005E4
@@ -45648,7 +45648,7 @@ _02200578:
mov r2, #0
blx r4
ldr r0, [sb, #8]
- bl FUN_022006B4
+ bl MOD04_022006B4
b _022005E4
_022005BC:
add r0, r1, #1
@@ -45657,16 +45657,16 @@ _022005BC:
cmp r0, #0
bne _022005DC
mov r0, sb
- bl FUN_022009F8
+ bl MOD04_022009F8
b _022005E4
_022005DC:
mov r0, sb
- bl FUN_022008D8
+ bl MOD04_022008D8
_022005E4:
ldr r0, [sb, #0x10]
cmp r0, #3
bne _02200664
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r1, [sb, #0x28]
cmp r0, r1
bls _02200664
@@ -45695,13 +45695,13 @@ _022005E4:
str r0, [sb]
_0220065C:
ldr r0, [sb, #8]
- bl FUN_022006B4
+ bl MOD04_022006B4
_02200664:
ldr r0, [sb, #0x10]
cmp r0, #1
addne sp, sp, #0x20
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r1, [sb, #0x28]
cmp r0, r1
addls sp, sp, #0x20
@@ -45713,23 +45713,23 @@ _02200664:
mov r2, #0
blx r4
ldr r0, [sb, #8]
- bl FUN_022006B4
+ bl MOD04_022006B4
add sp, sp, #0x20
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_022006B0: .word 0x022113D8
- arm_func_start FUN_022006B4
-FUN_022006B4: ; 0x022006B4
+ arm_func_start MOD04_022006B4
+MOD04_022006B4: ; 0x022006B4
stmdb sp!, {r4, lr}
- bl FUN_02200ED4
+ bl MOD04_02200ED4
movs r4, r0
ldmeqia sp!, {r4, pc}
ldr r0, [r4]
mvn r1, #0
cmp r0, r1
beq _022006D8
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
_022006D8:
mvn r0, #0
str r0, [r4]
@@ -45737,8 +45737,8 @@ _022006D8:
str r0, [r4, #0x10]
ldmia sp!, {r4, pc}
- arm_func_start FUN_022006EC
-FUN_022006EC: ; 0x022006EC
+ arm_func_start MOD04_022006EC
+MOD04_022006EC: ; 0x022006EC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
ldr ip, _022007B4 ; =0x02210E5C
mov r8, r0
@@ -45749,11 +45749,11 @@ FUN_022006EC: ; 0x022006EC
mov r5, r3
movne r0, #2
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
- bl FUN_022007B8
+ bl MOD04_022007B8
cmp r0, #0
moveq r0, #3
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
- bl FUN_02200E0C
+ bl MOD04_02200E0C
movs r4, r0
moveq r0, #1
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
@@ -45768,7 +45768,7 @@ FUN_022006EC: ; 0x022006EC
mov r1, r0
str r2, [r4, #0x3c]
mov r2, #0
- bl FUN_021EFDB8
+ bl MOD04_021EFDB8
str r0, [r4]
mov r0, #0
str r0, [r4, #0x20]
@@ -45782,19 +45782,19 @@ FUN_022006EC: ; 0x022006EC
cmp r1, r0
bne _022007A4
mov r0, r4
- bl FUN_02200DA4
+ bl MOD04_02200DA4
mov r0, #2
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_022007A4:
mov r0, r4
- bl FUN_022009F8
+ bl MOD04_022009F8
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_022007B4: .word 0x02210E5C
- arm_func_start FUN_022007B8
-FUN_022007B8: ; 0x022007B8
+ arm_func_start MOD04_022007B8
+MOD04_022007B8: ; 0x022007B8
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _02200848 ; =0x022113D0
@@ -45804,7 +45804,7 @@ FUN_022007B8: ; 0x022007B8
ldr r0, _0220084C ; =0x022113C8
ldr r1, _02200850 ; =0x0220F020
ldr r0, [r0]
- bl FUN_02200860
+ bl MOD04_02200860
ldr r1, _02200848 ; =0x022113D0
str r0, [r1]
_022007E8:
@@ -45815,7 +45815,7 @@ _022007E8:
ldr r0, _02200858 ; =0x022113C4
ldr r1, _0220085C ; =0x0220F03C
ldr r0, [r0]
- bl FUN_02200860
+ bl MOD04_02200860
ldr r1, _02200854 ; =0x022113CC
str r0, [r1]
_02200810:
@@ -45843,8 +45843,8 @@ _02200854: .word 0x022113CC
_02200858: .word 0x022113C4
_0220085C: .word 0x0220F03C
- arm_func_start FUN_02200860
-FUN_02200860: ; 0x02200860
+ arm_func_start MOD04_02200860
+MOD04_02200860: ; 0x02200860
stmdb sp!, {lr}
sub sp, sp, #0x84
cmp r0, #0
@@ -45857,18 +45857,18 @@ FUN_02200860: ; 0x02200860
bl snprintf
add r0, sp, #4
_0220088C:
- bl FUN_022008A0
+ bl MOD04_022008A0
add sp, sp, #0x84
ldmfd sp!, {pc}
.align 2, 0
_02200898: .word 0x0220F058
_0220089C: .word 0x02210EA0
- arm_func_start FUN_022008A0
-FUN_022008A0: ; 0x022008A0
+ arm_func_start MOD04_022008A0
+MOD04_022008A0: ; 0x022008A0
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_021EFB38
+ bl MOD04_021EFB38
mvn r1, #0
cmp r0, r1
ldmneia sp!, {r4, pc}
@@ -45881,8 +45881,8 @@ FUN_022008A0: ; 0x022008A0
ldrne r0, [r0]
ldmia sp!, {r4, pc}
- arm_func_start FUN_022008D8
-FUN_022008D8: ; 0x022008D8
+ arm_func_start MOD04_022008D8
+MOD04_022008D8: ; 0x022008D8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x1c
ldr lr, _022009F4 ; =0x0220F018
@@ -45942,8 +45942,8 @@ FUN_022008D8: ; 0x022008D8
str r1, [sp]
ldrh r2, [r4, #0x30]
ldr r1, [r4, #0x2c]
- bl FUN_02200CEC
- bl FUN_021F025C
+ bl MOD04_02200CEC
+ bl MOD04_021F025C
add r0, r0, #0x2bc
str r0, [r4, #0x28]
mov r0, #0xc
@@ -45957,8 +45957,8 @@ FUN_022008D8: ; 0x022008D8
.align 2, 0
_022009F4: .word 0x0220F018
- arm_func_start FUN_022009F8
-FUN_022009F8: ; 0x022009F8
+ arm_func_start MOD04_022009F8
+MOD04_022009F8: ; 0x022009F8
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x60
ldr r7, _02200C30 ; =0x0220F018
@@ -46000,13 +46000,13 @@ FUN_022009F8: ; 0x022009F8
cmp r2, r0
movne r1, #1
strb r1, [r5, #0xe]
- bl FUN_02200C78
+ bl MOD04_02200C78
mov r7, r0
- bl FUN_02200C78
+ bl MOD04_02200C78
mov r8, r0
- bl FUN_02200C78
+ bl MOD04_02200C78
mov r4, r0
- bl FUN_02200C78
+ bl MOD04_02200C78
mov r2, #0
mov r1, r7, lsl #0x18
and r7, r1, #0xff000000
@@ -46048,7 +46048,7 @@ FUN_022009F8: ; 0x022009F8
ldr r1, [r1]
ldr r2, _02200C3C ; =0x00006CFD
mov r3, r5
- bl FUN_02200CEC
+ bl MOD04_02200CEC
_02200B60:
ldr r0, [r6, #0x18]
cmp r0, #0
@@ -46061,7 +46061,7 @@ _02200B60:
ldr r1, [r1]
ldr r2, _02200C3C ; =0x00006CFD
mov r3, r5
- bl FUN_02200CEC
+ bl MOD04_02200CEC
_02200B90:
ldrb r0, [r5, #0xe]
cmp r0, #0
@@ -46070,10 +46070,10 @@ _02200B90:
cmp r0, #0
ldrne r0, [r6, #4]
ldreq r0, [r6]
- bl FUN_02200C44
+ bl MOD04_02200C44
mov r7, r0
mov r0, r8
- bl FUN_02200C44
+ bl MOD04_02200C44
mov r1, r7, asr #8
mov r0, r0, lsl #8
and r1, r1, #0xff
@@ -46095,9 +46095,9 @@ _02200B90:
ldr r1, [r1]
ldr r2, _02200C3C ; =0x00006CFD
mov r3, r5
- bl FUN_02200CEC
+ bl MOD04_02200CEC
_02200C14:
- bl FUN_021F025C
+ bl MOD04_021F025C
add r0, r0, #0x1f4
str r0, [r6, #0x28]
mov r0, #0x1e
@@ -46111,15 +46111,15 @@ _02200C38: .word 0x022113D0
_02200C3C: .word 0x00006CFD
_02200C40: .word 0x022113CC
- arm_func_start FUN_02200C44
-FUN_02200C44: ; 0x02200C44
+ arm_func_start MOD04_02200C44
+MOD04_02200C44: ; 0x02200C44
stmdb sp!, {lr}
sub sp, sp, #0xc
mov r3, #8
add r1, sp, #0
add r2, sp, #8
str r3, [sp, #8]
- bl FUN_021EFB5C
+ bl MOD04_021EFB5C
mvn r1, #0
cmp r0, r1
moveq r0, #0
@@ -46127,12 +46127,12 @@ FUN_02200C44: ; 0x02200C44
add sp, sp, #0xc
ldmfd sp!, {pc}
- arm_func_start FUN_02200C78
-FUN_02200C78: ; 0x02200C78
+ arm_func_start MOD04_02200C78
+MOD04_02200C78: ; 0x02200C78
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r5, #0
- bl FUN_021EFE70
+ bl MOD04_021EFE70
movs r6, r0
addeq sp, sp, #4
moveq r0, r5
@@ -46148,7 +46148,7 @@ _02200CA0:
cmp r1, r4
beq _02200CD4
mov r5, r1
- bl FUN_021EFDEC
+ bl MOD04_021EFDEC
cmp r0, #0
addne sp, sp, #4
movne r0, r5
@@ -46163,8 +46163,8 @@ _02200CDC:
.align 2, 0
_02200CE8: .word 0x0100007F
- arm_func_start FUN_02200CEC
-FUN_02200CEC: ; 0x02200CEC
+ arm_func_start MOD04_02200CEC
+MOD04_02200CEC: ; 0x02200CEC
stmdb sp!, {lr}
sub sp, sp, #0x14
mov ip, r2, asr #8
@@ -46183,12 +46183,12 @@ FUN_02200CEC: ; 0x02200CEC
ldr r2, [sp, #0x18]
mov r3, #0
str ip, [sp, #4]
- bl FUN_021EFBD4
+ bl MOD04_021EFBD4
add sp, sp, #0x14
ldmfd sp!, {pc}
- arm_func_start FUN_02200D40
-FUN_02200D40: ; 0x02200D40
+ arm_func_start MOD04_02200D40
+MOD04_02200D40: ; 0x02200D40
stmdb sp!, {lr}
sub sp, sp, #4
ldr r1, _02200D68 ; =0x0220F018
@@ -46202,8 +46202,8 @@ FUN_02200D40: ; 0x02200D40
.align 2, 0
_02200D68: .word 0x0220F018
- arm_func_start FUN_02200D6C
-FUN_02200D6C: ; 0x02200D6C
+ arm_func_start MOD04_02200D6C
+MOD04_02200D6C: ; 0x02200D6C
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _02200DA0 ; =0x022113D4
@@ -46211,7 +46211,7 @@ FUN_02200D6C: ; 0x02200D6C
cmp r0, #0
addeq sp, sp, #4
ldmeqia sp!, {pc}
- bl FUN_021EF074
+ bl MOD04_021EF074
ldr r0, _02200DA0 ; =0x022113D4
mov r1, #0
str r1, [r0]
@@ -46220,40 +46220,40 @@ FUN_02200D6C: ; 0x02200D6C
.align 2, 0
_02200DA0: .word 0x022113D4
- arm_func_start FUN_02200DA4
-FUN_02200DA4: ; 0x02200DA4
+ arm_func_start MOD04_02200DA4
+MOD04_02200DA4: ; 0x02200DA4
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02200E08 ; =0x022113D4
mov r6, r0
ldr r0, [r1]
mov r5, #0
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
ldmleia sp!, {r4, r5, r6, pc}
ldr r4, _02200E08 ; =0x022113D4
_02200DC8:
ldr r0, [r4]
mov r1, r5
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
cmp r6, r0
bne _02200DF0
ldr r0, _02200E08 ; =0x022113D4
mov r1, r5
ldr r0, [r0]
- bl FUN_021EEDE0
+ bl MOD04_021EEDE0
ldmia sp!, {r4, r5, r6, pc}
_02200DF0:
ldr r0, [r4]
add r5, r5, #1
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r5, r0
blt _02200DC8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02200E08: .word 0x022113D4
- arm_func_start FUN_02200E0C
-FUN_02200E0C: ; 0x02200E0C
+ arm_func_start MOD04_02200E0C
+MOD04_02200E0C: ; 0x02200E0C
stmdb sp!, {lr}
sub sp, sp, #0x44
mov r0, #0
@@ -46271,39 +46271,39 @@ FUN_02200E0C: ; 0x02200E0C
ldr r0, [r0]
cmp r0, #0
bne _02200E68
- ldr r2, _02200EA0 ; =FUN_02200EA4
+ ldr r2, _02200EA0 ; =MOD04_02200EA4
mov r0, #0x40
mov r1, #4
- bl FUN_021EF0E4
+ bl MOD04_021EF0E4
ldr r1, _02200E9C ; =0x022113D4
str r0, [r1]
_02200E68:
ldr r0, _02200E9C ; =0x022113D4
add r1, sp, #0
ldr r0, [r0]
- bl FUN_021EEFA8
+ bl MOD04_021EEFA8
ldr r0, _02200E9C ; =0x022113D4
ldr r0, [r0]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
ldr r2, _02200E9C ; =0x022113D4
sub r1, r0, #1
ldr r0, [r2]
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
add sp, sp, #0x44
ldmfd sp!, {pc}
.align 2, 0
_02200E9C: .word 0x022113D4
-_02200EA0: .word FUN_02200EA4
+_02200EA0: .word MOD04_02200EA4
- arm_func_start FUN_02200EA4
-FUN_02200EA4: ; 0x02200EA4
+ arm_func_start MOD04_02200EA4
+MOD04_02200EA4: ; 0x02200EA4
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4]
mvn r1, #0
cmp r0, r1
beq _02200EC0
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
_02200EC0:
mvn r0, #0
str r0, [r4]
@@ -46311,8 +46311,8 @@ _02200EC0:
str r0, [r4, #0x10]
ldmia sp!, {r4, pc}
- arm_func_start FUN_02200ED4
-FUN_02200ED4: ; 0x02200ED4
+ arm_func_start MOD04_02200ED4
+MOD04_02200ED4: ; 0x02200ED4
stmdb sp!, {r4, r5, r6, lr}
ldr r1, _02200F38 ; =0x022113D4
mov r6, r0
@@ -46321,20 +46321,20 @@ FUN_02200ED4: ; 0x02200ED4
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
mov r5, #0
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
ble _02200F30
ldr r4, _02200F38 ; =0x022113D4
_02200F04:
ldr r0, [r4]
mov r1, r5
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r1, [r0, #8]
cmp r1, r6
ldmeqia sp!, {r4, r5, r6, pc}
ldr r0, [r4]
add r5, r5, #1
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r5, r0
blt _02200F04
_02200F30:
@@ -46343,8 +46343,8 @@ _02200F30:
.align 2, 0
_02200F38: .word 0x022113D4
- arm_func_start FUN_02200F3C
-FUN_02200F3C: ; 0x02200F3C
+ arm_func_start MOD04_02200F3C
+MOD04_02200F3C: ; 0x02200F3C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr ip, _02201120 ; =0x0000082C
sub sp, sp, ip
@@ -46355,7 +46355,7 @@ FUN_02200F3C: ; 0x02200F3C
add r2, sl, #0x84
mov r1, #3
str r3, [sp, #0x824]
- bl FUN_02201DCC
+ bl MOD04_02201DCC
ldr r4, _02201124 ; =0x022115D8
mov r8, #0
ldr r0, [r4]
@@ -46372,13 +46372,13 @@ _02200F8C:
bl sprintf
mov r0, r6
mov r1, r7
- bl FUN_022021C0
+ bl MOD04_022021C0
add r0, r5, r8, lsl #2
ldmia r0, {r0}
bl FUN_0209A27C
mov r1, r0
mov r0, r6
- bl FUN_022021C0
+ bl MOD04_022021C0
add r8, r8, #1
ldr r0, [r4]
cmp r8, r0
@@ -46386,50 +46386,50 @@ _02200F8C:
_02200FD0:
ldr r1, _02201130 ; =0x0220F180
add r0, sp, #0x24
- bl FUN_022021C0
+ bl MOD04_022021C0
ldr r1, [sl, #0xc0]
add r0, sp, #0x24
- bl FUN_02202220
+ bl MOD04_02202220
ldr r1, _02201134 ; =0x0220F18C
add r0, sp, #0x24
- bl FUN_022021C0
+ bl MOD04_022021C0
ldr r0, [sl, #0xc8]
cmp r0, #0
ldrne r1, _02201138 ; =0x0220F194
add r0, sp, #0x24
ldreq r1, _0220113C ; =0x0220F198
- bl FUN_022021C0
+ bl MOD04_022021C0
cmp sb, #0
beq _0220102C
ldr r1, _02201140 ; =0x0220F19C
add r0, sp, #0x24
- bl FUN_022021C0
+ bl MOD04_022021C0
add r0, sp, #0x24
mov r1, sb
- bl FUN_02202220
+ bl MOD04_02202220
_0220102C:
ldr r1, _02201144 ; =0x0220F1AC
add r0, sp, #0x24
- bl FUN_022021C0
+ bl MOD04_022021C0
add r0, sp, #0x24
add r1, sl, #4
- bl FUN_022021C0
+ bl MOD04_022021C0
ldr r0, [sl, #0xa8]
cmp r0, #0
beq _02201084
ldr r1, _02201148 ; =0x0220F1B8
add r0, sp, #0x24
- bl FUN_022021C0
+ bl MOD04_022021C0
ldr r1, [sl, #0x104]
add r0, sp, #0x24
- bl FUN_02202220
+ bl MOD04_02202220
ldr r1, _0220114C ; =0x0220F1C4
add r0, sp, #0x24
- bl FUN_022021C0
+ bl MOD04_022021C0
add r0, sl, #0x100
ldrh r1, [r0, #8]
add r0, sp, #0x24
- bl FUN_02202220
+ bl MOD04_02202220
_02201084:
cmp sb, #2
beq _022010B4
@@ -46441,7 +46441,7 @@ _02201084:
add r1, sp, #0x24
mov r0, sl
str r3, [sp, #0xc]
- bl FUN_022019B4
+ bl MOD04_022019B4
b _022010D4
_022010B4:
ldr r2, [sp, #0x824]
@@ -46461,8 +46461,8 @@ _022010D4:
ldr r2, [sp, #0x824]
add r1, sp, #0x24
mov r3, #0
- bl FUN_021EFBD4
- bl FUN_021F025C
+ bl MOD04_021EFBD4
+ bl MOD04_021F025C
str r0, [sl, #0xac]
ldr r0, [sl, #0xac]
cmp sb, #0
@@ -46486,8 +46486,8 @@ _02201144: .word 0x0220F1AC
_02201148: .word 0x0220F1B8
_0220114C: .word 0x0220F1C4
- arm_func_start FUN_02201150
-FUN_02201150: ; 0x02201150
+ arm_func_start MOD04_02201150
+MOD04_02201150: ; 0x02201150
stmdb sp!, {r4, lr}
sub sp, sp, #0x810
mov r4, r0
@@ -46496,7 +46496,7 @@ FUN_02201150: ; 0x02201150
add r2, r4, #0x84
mov r1, #8
str r3, [sp, #0x808]
- bl FUN_02201DCC
+ bl MOD04_02201DCC
add r0, r4, #0xcc
str r0, [sp]
mov r0, #8
@@ -46505,14 +46505,14 @@ FUN_02201150: ; 0x02201150
ldr r2, [sp, #0x808]
add r1, sp, #8
mov r3, #0
- bl FUN_021EFBD4
- bl FUN_021F025C
+ bl MOD04_021EFBD4
+ bl MOD04_021F025C
str r0, [r4, #0xb0]
add sp, sp, #0x810
ldmia sp!, {r4, pc}
- arm_func_start FUN_022011A8
-FUN_022011A8: ; 0x022011A8
+ arm_func_start MOD04_022011A8
+MOD04_022011A8: ; 0x022011A8
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
ldr ip, _02201504 ; =0x00000814
sub sp, sp, ip
@@ -46543,7 +46543,7 @@ _0220120C:
bne _0220124C
add r1, sp, #0xc
mov r0, r8
- bl FUN_022016A8
+ bl MOD04_022016A8
str r6, [sp]
mov r0, #8
str r0, [sp, #4]
@@ -46551,7 +46551,7 @@ _0220120C:
ldr r2, [sp, #0x80c]
add r1, sp, #0xc
mov r3, #0
- bl FUN_021EFBD4
+ bl MOD04_021EFBD4
ldr ip, _02201504 ; =0x00000814
add sp, sp, ip
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
@@ -46581,7 +46581,7 @@ _0220124C:
mov r1, sb
mov r2, r5
sub r7, r7, #7
- bl FUN_02201DCC
+ bl MOD04_02201DCC
cmp sb, #8
addls pc, pc, sb, lsl #2
b _022014CC
@@ -46600,7 +46600,7 @@ _022012E4:
mov r0, r8
mov r2, r4
mov r3, r7
- bl FUN_022018F0
+ bl MOD04_022018F0
b _022014D8
_022012FC:
cmp r7, #0xd
@@ -46611,13 +46611,13 @@ _022012FC:
add r1, r4, r7
mov r0, r8
sub r1, r1, #0xd
- bl FUN_02201C70
+ bl MOD04_02201C70
_02201320:
add r1, sp, #0xc
mov r0, r8
mov r2, r4
mov r3, r7
- bl FUN_02201D2C
+ bl MOD04_02201D2C
b _022014D8
_02201338:
ldr r0, [sp, #0x80c]
@@ -46717,13 +46717,13 @@ _02201400:
strb r2, [r3, #2]
strb r1, [r3, #3]
ldr r1, [sp, #8]
- bl FUN_0220150C
+ bl MOD04_0220150C
cmp r0, #0
bne _022014D8
mov r0, r8
add r1, r4, #4
sub r2, r7, #4
- bl FUN_0220157C
+ bl MOD04_0220157C
b _022014D8
_022014CC:
ldr ip, _02201504 ; =0x00000814
@@ -46737,7 +46737,7 @@ _022014D8:
ldr r2, [sp, #0x80c]
add r1, sp, #0xc
mov r3, #0
- bl FUN_021EFBD4
+ bl MOD04_021EFBD4
ldr ip, _02201504 ; =0x00000814
add sp, sp, ip
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
@@ -46745,8 +46745,8 @@ _022014D8:
_02201504: .word 0x00000814
_02201508: .word 0x0220F060
- arm_func_start FUN_0220150C
-FUN_0220150C: ; 0x0220150C
+ arm_func_start MOD04_0220150C
+MOD04_0220150C: ; 0x0220150C
stmdb sp!, {r4, lr}
mov r3, #0
_02201514:
@@ -46778,8 +46778,8 @@ _02201514:
_02201574: .word 0x66666667
_02201578: .word 0x0000000A
- arm_func_start FUN_0220157C
-FUN_0220157C: ; 0x0220157C
+ arm_func_start MOD04_0220157C
+MOD04_0220157C: ; 0x0220157C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0xc
ldr ip, _022016A4 ; =0x0220BCD8
@@ -46861,8 +46861,8 @@ _0220167C:
.align 2, 0
_022016A4: .word 0x0220BCD8
- arm_func_start FUN_022016A8
-FUN_022016A8: ; 0x022016A8
+ arm_func_start MOD04_022016A8
+MOD04_022016A8: ; 0x022016A8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r1
@@ -46872,18 +46872,18 @@ FUN_022016A8: ; 0x022016A8
mov r3, #0x5c
mov r2, #0
strb r3, [r4]
- bl FUN_02201714
+ bl MOD04_02201714
mov r0, r5
mov r1, r4
mov r2, #1
- bl FUN_02201714
+ bl MOD04_02201714
mov r0, r5
mov r1, r4
mov r2, #2
- bl FUN_02201714
+ bl MOD04_02201714
ldr r1, _02201710 ; =0x0220F1D0
mov r0, r4
- bl FUN_022021C0
+ bl MOD04_022021C0
ldr r0, [r4, #0x800]
sub r0, r0, #1
str r0, [r4, #0x800]
@@ -46892,8 +46892,8 @@ FUN_022016A8: ; 0x022016A8
.align 2, 0
_02201710: .word 0x0220F1D0
- arm_func_start FUN_02201714
-FUN_02201714: ; 0x02201714
+ arm_func_start MOD04_02201714
+MOD04_02201714: ; 0x02201714
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x194
mov r8, r2
@@ -46936,7 +46936,7 @@ _02201790:
bne _02201804
mov r1, fp
mov r0, sb
- bl FUN_022021C0
+ bl MOD04_022021C0
ldr r0, [sb, #0x800]
mov r1, sb
sub r0, r0, #1
@@ -46951,7 +46951,7 @@ _02201790:
bne _022017F4
ldr r1, _022018E8 ; =0x0220F1EC
mov r0, sb
- bl FUN_022021C0
+ bl MOD04_022021C0
_022017F4:
ldr r0, [sb, #0x800]
sub r0, r0, #1
@@ -46970,7 +46970,7 @@ _02201814:
bl sprintf
mov r0, sb
add r1, sp, #0xc
- bl FUN_022021C0
+ bl MOD04_022021C0
ldr r0, [sb, #0x800]
cmp r8, #1
sub r0, r0, #1
@@ -46999,7 +46999,7 @@ _02201888:
bne _022018A0
ldr r1, _022018E8 ; =0x0220F1EC
mov r0, sb
- bl FUN_022021C0
+ bl MOD04_022021C0
_022018A0:
ldr r0, [sb, #0x800]
add r7, r7, #1
@@ -47024,8 +47024,8 @@ _022018E4: .word 0x0220F1E4
_022018E8: .word 0x0220F1EC
_022018EC: .word 0x0220F1F0
- arm_func_start FUN_022018F0
-FUN_022018F0: ; 0x022018F0
+ arm_func_start MOD04_022018F0
+MOD04_022018F0: ; 0x022018F0
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x14
mov r4, #0
@@ -47075,12 +47075,12 @@ _02201984:
mov r2, r7
mov r3, r4
str ip, [sp, #0xc]
- bl FUN_022019B4
+ bl MOD04_022019B4
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_022019B4
-FUN_022019B4: ; 0x022019B4
+ arm_func_start MOD04_022019B4
+MOD04_022019B4: ; 0x022019B4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
str r3, [sp]
@@ -47088,26 +47088,26 @@ FUN_022019B4: ; 0x022019B4
mov r2, #0
mov r5, r0
mov r4, r1
- bl FUN_02201A14
+ bl MOD04_02201A14
ldr ip, [sp, #0x14]
ldr r3, [sp, #0x10]
mov r0, r5
mov r1, r4
mov r2, #1
str ip, [sp]
- bl FUN_02201A14
+ bl MOD04_02201A14
ldr r0, [sp, #0x1c]
ldr r3, [sp, #0x18]
str r0, [sp]
mov r0, r5
mov r1, r4
mov r2, #2
- bl FUN_02201A14
+ bl MOD04_02201A14
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_02201A14
-FUN_02201A14: ; 0x02201A14
+ arm_func_start MOD04_02201A14
+MOD04_02201A14: ; 0x02201A14
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x114
movs fp, r3
@@ -47175,7 +47175,7 @@ _02201B00:
mov r0, sb
cmp r1, #0
moveq r1, fp
- bl FUN_022021C0
+ bl MOD04_022021C0
cmp r8, #0
bne _02201B50
ldrb r0, [r5]
@@ -47189,7 +47189,7 @@ _02201B00:
bne _02201B50
ldr r1, _02201C6C ; =0x0220F1EC
mov r0, sb
- bl FUN_022021C0
+ bl MOD04_022021C0
_02201B50:
ldr r0, [sp, #0x10c]
add r7, r7, #1
@@ -47257,7 +47257,7 @@ _02201C28:
bne _02201C40
ldr r1, _02201C6C ; =0x0220F1EC
mov r0, sb
- bl FUN_022021C0
+ bl MOD04_022021C0
_02201C40:
add r5, r5, #1
cmp r5, fp
@@ -47274,8 +47274,8 @@ _02201C64: .word 0x0220F1E4
_02201C68: .word 0x0220F3A8
_02201C6C: .word 0x0220F1EC
- arm_func_start FUN_02201C70
-FUN_02201C70: ; 0x02201C70
+ arm_func_start MOD04_02201C70
+MOD04_02201C70: ; 0x02201C70
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r4, r0
@@ -47326,8 +47326,8 @@ _02201D04:
.align 2, 0
_02201D28: .word 0x0220F1F8
- arm_func_start FUN_02201D2C
-FUN_02201D2C: ; 0x02201D2C
+ arm_func_start MOD04_02201D2C
+MOD04_02201D2C: ; 0x02201D2C
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x48
mov r5, r3
@@ -47353,12 +47353,12 @@ FUN_02201D2C: ; 0x02201D2C
add r2, sp, #0
add r0, r6, #0x44
sub r3, r5, #1
- bl FUN_02201E0C
+ bl MOD04_02201E0C
ldr r2, [r4, #0x800]
sub r1, r5, #1
add r0, sp, #0
add r2, r4, r2
- bl FUN_02201F50
+ bl MOD04_02201F50
ldr r0, [r4, #0x800]
add r0, r4, r0
bl strlen
@@ -47369,8 +47369,8 @@ FUN_02201D2C: ; 0x02201D2C
add sp, sp, #0x48
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_02201DCC
-FUN_02201DCC: ; 0x02201DCC
+ arm_func_start MOD04_02201DCC
+MOD04_02201DCC: ; 0x02201DCC
stmdb sp!, {lr}
sub sp, sp, #4
strb r1, [r0]
@@ -47388,8 +47388,8 @@ FUN_02201DCC: ; 0x02201DCC
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_02201E0C
-FUN_02201E0C: ; 0x02201E0C
+ arm_func_start MOD04_02201E0C
+MOD04_02201E0C: ; 0x02201E0C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x104
str r1, [sp]
@@ -47425,7 +47425,7 @@ _02201E58:
and r7, r1, #0xff
mov r0, r5
add r1, fp, r6
- bl FUN_0220206C
+ bl MOD04_0220206C
add r0, r4, #1
mov r0, r0, lsl #0x10
mov r4, r0, asr #0x10
@@ -47455,7 +47455,7 @@ _02201EC8:
add r1, r2, r1, ror #24
and r5, r1, #0xff
add r1, r4, r5
- bl FUN_0220206C
+ bl MOD04_0220206C
ldrb r2, [r4, r6]
ldrb r1, [r4, r5]
add r3, r7, #1
@@ -47475,8 +47475,8 @@ _02201EC8:
add sp, sp, #0x104
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_02201F50
-FUN_02201F50: ; 0x02201F50
+ arm_func_start MOD04_02201F50
+MOD04_02201F50: ; 0x02201F50
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov sb, r1
@@ -47520,7 +47520,7 @@ _02201F84:
strb r0, [sp, #0xa]
_02201FEC:
ldrb r0, [r6]
- bl FUN_02202020
+ bl MOD04_02202020
add r5, r5, #1
cmp r5, #3
strb r0, [r8], #1
@@ -47534,8 +47534,8 @@ _02202010:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_02202020
-FUN_02202020: ; 0x02202020
+ arm_func_start MOD04_02202020
+MOD04_02202020: ; 0x02202020
cmp r0, #0x1a
addlo r0, r0, #0x41
andlo r0, r0, #0xff
@@ -47556,16 +47556,16 @@ FUN_02202020: ; 0x02202020
movne r0, #0
bx lr
- arm_func_start FUN_0220206C
-FUN_0220206C: ; 0x0220206C
+ arm_func_start MOD04_0220206C
+MOD04_0220206C: ; 0x0220206C
ldrb r3, [r0]
ldrb r2, [r1]
strb r2, [r0]
strb r3, [r1]
bx lr
- arm_func_start FUN_02202080
-FUN_02202080: ; 0x02202080
+ arm_func_start MOD04_02202080
+MOD04_02202080: ; 0x02202080
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r1, r1, lsl #0x10
@@ -47584,7 +47584,7 @@ FUN_02202080: ; 0x02202080
mov r5, r3
streq r4, [r6, #4]
beq _022020D0
- bl FUN_021EFB38
+ bl MOD04_021EFB38
str r0, [r6, #4]
_022020D0:
ldr r1, [r6, #4]
@@ -47615,11 +47615,11 @@ _0220211C:
.align 2, 0
_02202130: .word 0x0220F204
- arm_func_start FUN_02202134
-FUN_02202134: ; 0x02202134
+ arm_func_start MOD04_02202134
+MOD04_02202134: ; 0x02202134
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
- bl FUN_021EFE70
+ bl MOD04_021EFE70
cmp r0, #0
addeq sp, sp, #4
ldmeqia sp!, {r4, r5, pc}
@@ -47655,8 +47655,8 @@ _0220215C:
_022021B8: .word 0x022115D8
_022021BC: .word 0x022115DC
- arm_func_start FUN_022021C0
-FUN_022021C0: ; 0x022021C0
+ arm_func_start MOD04_022021C0
+MOD04_022021C0: ; 0x022021C0
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
mov r4, r0
@@ -47682,8 +47682,8 @@ FUN_022021C0: ; 0x022021C0
strb r1, [r4, r0]
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_02202220
-FUN_02202220: ; 0x02202220
+ arm_func_start MOD04_02202220
+MOD04_02202220: ; 0x02202220
stmdb sp!, {r4, lr}
sub sp, sp, #0x18
mov r2, r1
@@ -47693,14 +47693,14 @@ FUN_02202220: ; 0x02202220
bl sprintf
add r1, sp, #0
mov r0, r4
- bl FUN_022021C0
+ bl MOD04_022021C0
add sp, sp, #0x18
ldmia sp!, {r4, pc}
.align 2, 0
_02202250: .word 0x0220F214
- arm_func_start FUN_02202254
-FUN_02202254: ; 0x02202254
+ arm_func_start MOD04_02202254
+MOD04_02202254: ; 0x02202254
ldr r3, [r0, #0x100]
cmp r3, #0xfe
bxge lr
@@ -47713,8 +47713,8 @@ FUN_02202254: ; 0x02202254
strb r1, [r0, r3]
bx lr
- arm_func_start FUN_02202280
-FUN_02202280: ; 0x02202280
+ arm_func_start MOD04_02202280
+MOD04_02202280: ; 0x02202280
stmdb sp!, {r4, lr}
movs r4, r0
ldreq r0, _02202300 ; =0x0220F060
@@ -47724,7 +47724,7 @@ FUN_02202280: ; 0x02202280
beq _022022A8
mov r0, r4
mov r1, #2
- bl FUN_02200F3C
+ bl MOD04_02200F3C
_022022A8:
ldr r0, [r4]
mvn r1, #0
@@ -47733,7 +47733,7 @@ _022022A8:
ldr r1, [r4, #0xc4]
cmp r1, #0
beq _022022C8
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
_022022C8:
mvn r0, #0
str r0, [r4]
@@ -47742,20 +47742,20 @@ _022022C8:
ldr r0, [r4, #0xc4]
cmp r0, #0
beq _022022E8
- bl FUN_021F0248
+ bl MOD04_021F0248
_022022E8:
ldr r0, _02202304 ; =0x0220F064
cmp r4, r0
ldmeqia sp!, {r4, pc}
mov r0, r4
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldmia sp!, {r4, pc}
.align 2, 0
_02202300: .word 0x0220F060
_02202304: .word 0x0220F064
- arm_func_start FUN_02202308
-FUN_02202308: ; 0x02202308
+ arm_func_start MOD04_02202308
+MOD04_02202308: ; 0x02202308
stmdb sp!, {r4, lr}
movs r4, r0
ldreq r0, _0220235C ; =0x0220F060
@@ -47763,7 +47763,7 @@ FUN_02202308: ; 0x02202308
ldr r0, [r4, #0xbc]
cmp r0, #0
ldmeqia sp!, {r4, pc}
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r2, [r4, #0xac]
ldr r1, _02202360 ; =0x00002710
sub r0, r0, r2
@@ -47773,7 +47773,7 @@ FUN_02202308: ; 0x02202308
ldmloia sp!, {r4, pc}
mov r0, r4
mov r1, #1
- bl FUN_02200F3C
+ bl MOD04_02200F3C
mov r0, #0
str r0, [r4, #0xb4]
ldmia sp!, {r4, pc}
@@ -47781,12 +47781,12 @@ FUN_02202308: ; 0x02202308
_0220235C: .word 0x0220F060
_02202360: .word 0x00002710
- arm_func_start FUN_02202364
-FUN_02202364: ; 0x02202364
+ arm_func_start MOD04_02202364
+MOD04_02202364: ; 0x02202364
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r2, [r5]
mvn r1, #0
cmp r2, r1
@@ -47815,7 +47815,7 @@ FUN_02202364: ; 0x02202364
_022023D8:
mov r0, r5
mov r1, #3
- bl FUN_02200F3C
+ bl MOD04_02200F3C
ldr r0, [r5, #0xb8]
add r0, r0, #1
str r0, [r5, #0xb8]
@@ -47831,7 +47831,7 @@ _022023F4:
bls _02202424
mov r0, r5
mov r1, #1
- bl FUN_02200F3C
+ bl MOD04_02200F3C
b _02202454
_02202424:
ldr r2, [r5, #0xac]
@@ -47846,7 +47846,7 @@ _02202424:
_02202448:
mov r0, r5
mov r1, #0
- bl FUN_02200F3C
+ bl MOD04_02200F3C
_02202454:
ldr r1, [r5, #0xb0]
ldr r0, _02202488 ; =0x00004E20
@@ -47855,7 +47855,7 @@ _02202454:
addls sp, sp, #4
ldmlsia sp!, {r4, r5, pc}
mov r0, r5
- bl FUN_02201150
+ bl MOD04_02201150
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
@@ -47864,8 +47864,8 @@ _02202480: .word 0x0220F218
_02202484: .word 0x0000EA60
_02202488: .word 0x00004E20
- arm_func_start FUN_0220248C
-FUN_0220248C: ; 0x0220248C
+ arm_func_start MOD04_0220248C
+MOD04_0220248C: ; 0x0220248C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x18
mov r1, #8
@@ -47876,7 +47876,7 @@ FUN_0220248C: ; 0x0220248C
addeq sp, sp, #0x18
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
ldr r0, [r4]
- bl FUN_021EFF2C
+ bl MOD04_021EFF2C
cmp r0, #0
addeq sp, sp, #0x18
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
@@ -47893,7 +47893,7 @@ _022024DC:
mov r1, r8
mov r2, r7
mov r3, r6
- bl FUN_021EFC40
+ bl MOD04_021EFC40
mov r2, r0
cmp r2, r5
beq _02202518
@@ -47901,10 +47901,10 @@ _022024DC:
mov r1, r8
mov r3, sl
strb r6, [r8, r2]
- bl FUN_022011A8
+ bl MOD04_022011A8
_02202518:
ldr r0, [r4]
- bl FUN_021EFF2C
+ bl MOD04_021EFF2C
cmp r0, #0
bne _022024DC
add sp, sp, #0x18
@@ -47912,8 +47912,8 @@ _02202518:
.align 2, 0
_02202530: .word 0x02211630
- arm_func_start FUN_02202534
-FUN_02202534: ; 0x02202534
+ arm_func_start MOD04_02202534
+MOD04_02202534: ; 0x02202534
stmdb sp!, {r4, lr}
movs r4, r0
ldreq r0, _02202564 ; =0x0220F060
@@ -47922,16 +47922,16 @@ FUN_02202534: ; 0x02202534
cmp r0, #0
beq _02202558
mov r0, r4
- bl FUN_02202364
+ bl MOD04_02202364
_02202558:
mov r0, r4
- bl FUN_0220248C
+ bl MOD04_0220248C
ldmia sp!, {r4, pc}
.align 2, 0
_02202564: .word 0x0220F060
- arm_func_start FUN_02202568
-FUN_02202568: ; 0x02202568
+ arm_func_start MOD04_02202568
+MOD04_02202568: ; 0x02202568
cmp r0, #0
ldreq r0, _0220257C ; =0x0220F060
ldreq r0, [r0]
@@ -47940,8 +47940,8 @@ FUN_02202568: ; 0x02202568
.align 2, 0
_0220257C: .word 0x0220F060
- arm_func_start FUN_02202580
-FUN_02202580: ; 0x02202580
+ arm_func_start MOD04_02202580
+MOD04_02202580: ; 0x02202580
cmp r0, #0
ldreq r0, _02202594 ; =0x0220F060
ldreq r0, [r0]
@@ -47950,8 +47950,8 @@ FUN_02202580: ; 0x02202580
.align 2, 0
_02202594: .word 0x0220F060
- arm_func_start FUN_02202598
-FUN_02202598: ; 0x02202598
+ arm_func_start MOD04_02202598
+MOD04_02202598: ; 0x02202598
cmp r0, #0
ldreq r0, _022025AC ; =0x0220F060
ldreq r0, [r0]
@@ -47960,8 +47960,8 @@ FUN_02202598: ; 0x02202598
.align 2, 0
_022025AC: .word 0x0220F060
- arm_func_start FUN_022025B0
-FUN_022025B0: ; 0x022025B0
+ arm_func_start MOD04_022025B0
+MOD04_022025B0: ; 0x022025B0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x40
movs r5, r0
@@ -47971,11 +47971,11 @@ FUN_022025B0: ; 0x022025B0
ldreq r5, _02202760 ; =0x0220F064
beq _022025E0
mov r0, #0x110
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [r5]
ldr r5, [r5]
_022025E0:
- bl FUN_021F025C
+ bl MOD04_021F025C
bl srand
mov r1, r7
add r0, r5, #4
@@ -48047,7 +48047,7 @@ _022026CC:
ldr r0, [r0]
cmp r0, #0
bne _022026FC
- bl FUN_02202134
+ bl MOD04_02202134
_022026FC:
ldr r0, [sp, #0x5c]
cmp r0, #0
@@ -48067,7 +48067,7 @@ _02202728:
addeq r0, sp, #0
add r2, r5, #0xcc
mov r3, #0
- bl FUN_02202080
+ bl MOD04_02202080
b _0220274C
_02202748:
mov r0, #1
@@ -48086,8 +48086,8 @@ _02202770: .word 0x022115F0
_02202774: .word 0x0220F250
_02202778: .word 0x00006CFC
- arm_func_start FUN_0220277C
-FUN_0220277C: ; 0x0220277C
+ arm_func_start MOD04_0220277C
+MOD04_0220277C: ; 0x0220277C
cmp r0, #0x32
bxlt lr
cmp r0, #0xfe
@@ -48098,8 +48098,8 @@ FUN_0220277C: ; 0x0220277C
.align 2, 0
_02202798: .word 0x0220F3A8
- arm_func_start FUN_0220279C
-FUN_0220279C: ; 0x0220279C
+ arm_func_start MOD04_0220279C
+MOD04_0220279C: ; 0x0220279C
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r5, r2
@@ -48112,7 +48112,7 @@ FUN_0220279C: ; 0x0220279C
_022027C0:
ldrb r1, [r6, r4]
mov r0, r7
- bl FUN_022027E4
+ bl MOD04_022027E4
strb r0, [r6, r4]
add r4, r4, #1
cmp r4, r5
@@ -48120,8 +48120,8 @@ _022027C0:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_022027E4
-FUN_022027E4: ; 0x022027E4
+ arm_func_start MOD04_022027E4
+MOD04_022027E4: ; 0x022027E4
stmdb sp!, {r4, lr}
ldrb r4, [r0, #0x100]
add r2, r4, #1
@@ -48174,8 +48174,8 @@ FUN_022027E4: ; 0x022027E4
ldrb r0, [r0, #0x103]
ldmia sp!, {r4, pc}
- arm_func_start FUN_022028B0
-FUN_022028B0: ; 0x022028B0
+ arm_func_start MOD04_022028B0
+MOD04_022028B0: ; 0x022028B0
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x14
mov r7, r2
@@ -48183,7 +48183,7 @@ FUN_022028B0: ; 0x022028B0
mov r8, r1
cmp r7, #1
bhs _022028D8
- bl FUN_02202978
+ bl MOD04_02202978
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
_022028D8:
@@ -48206,7 +48206,7 @@ _02202904:
mov r2, r8
mov r3, r7
str r4, [sp, #4]
- bl FUN_022029C0
+ bl MOD04_022029C0
ldrb r2, [sb, r6]
ldrb r1, [sb, r0]
strb r1, [sb, r6]
@@ -48230,8 +48230,8 @@ _02202904:
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- arm_func_start FUN_02202978
-FUN_02202978: ; 0x02202978
+ arm_func_start MOD04_02202978
+MOD04_02202978: ; 0x02202978
mov r1, #1
strb r1, [r0, #0x100]
mov r1, #3
@@ -48252,8 +48252,8 @@ _022029A8:
blt _022029A8
bx lr
- arm_func_start FUN_022029C0
-FUN_022029C0: ; 0x022029C0
+ arm_func_start MOD04_022029C0
+MOD04_022029C0: ; 0x022029C0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
ldr r8, [sp, #0x28]
@@ -48307,25 +48307,25 @@ _02202A6C:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_02202A80
-FUN_02202A80: ; 0x02202A80
+ arm_func_start MOD04_02202A80
+MOD04_02202A80: ; 0x02202A80
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
add r0, r5, #8
mov r4, r1
- bl FUN_022032AC
+ bl MOD04_022032AC
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {r4, r5, pc}
mov r1, r4
add r0, r5, #0x14
- bl FUN_022032AC
+ bl MOD04_022032AC
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_02202AB8
-FUN_02202AB8: ; 0x02202AB8
+ arm_func_start MOD04_02202AB8
+MOD04_02202AB8: ; 0x02202AB8
ldr r3, [r0, #0x40]
cmp r3, #0x14
addlt r2, r3, #1
@@ -48334,22 +48334,22 @@ FUN_02202AB8: ; 0x02202AB8
strltb r1, [r0, #0x2c]
bx lr
- arm_func_start FUN_02202AD4
-FUN_02202AD4: ; 0x02202AD4
+ arm_func_start MOD04_02202AD4
+MOD04_02202AD4: ; 0x02202AD4
stmdb sp!, {r4, lr}
mov r4, r0
ldr r1, [r4, #0x10]
cmp r1, #0
ldmeqia sp!, {r4, pc}
mov r1, #0
- bl FUN_02202C14
+ bl MOD04_02202C14
mov r0, r4
- bl FUN_02202B84
+ bl MOD04_02202B84
ldr r0, [r4, #0x1c]
cmp r0, #0
ble _02202B0C
mov r0, r4
- bl FUN_02202B34
+ bl MOD04_02202B34
_02202B0C:
ldr r0, [r4, #0x10]
cmp r0, #0
@@ -48362,8 +48362,8 @@ _02202B0C:
blx ip
ldmia sp!, {r4, pc}
- arm_func_start FUN_02202B34
-FUN_02202B34: ; 0x02202B34
+ arm_func_start MOD04_02202B34
+MOD04_02202B34: ; 0x02202B34
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -48371,10 +48371,10 @@ FUN_02202B34: ; 0x02202B34
b _02202B5C
_02202B48:
mov r0, r4
- bl FUN_02203318
+ bl MOD04_02203318
mov r1, r0
mov r0, r5
- bl FUN_022030C0
+ bl MOD04_022030C0
_02202B5C:
ldr r1, [r5, #0x10]
ldr r0, [r5, #4]
@@ -48387,11 +48387,11 @@ _02202B5C:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_02202B84
-FUN_02202B84: ; 0x02202B84
+ arm_func_start MOD04_02202B84
+MOD04_02202B84: ; 0x02202B84
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r6, r0
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r3, [r6, #8]
mov r5, r0
cmp r3, #0
@@ -48420,7 +48420,7 @@ _02202BAC:
ldr ip, [r6, #0x44]
blx ip
mov r0, r7
- bl FUN_02203318
+ bl MOD04_02203318
ldr r3, [r6, #8]
cmp r3, #0
bne _02202BAC
@@ -48428,8 +48428,8 @@ _02202BAC:
.align 2, 0
_02202C10: .word 0x000009C4
- arm_func_start FUN_02202C14
-FUN_02202C14: ; 0x02202C14
+ arm_func_start MOD04_02202C14
+MOD04_02202C14: ; 0x02202C14
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr ip, _02202DB0 ; =0x00000814
sub sp, sp, ip
@@ -48440,7 +48440,7 @@ FUN_02202C14: ; 0x02202C14
ldrne r8, [sl, #0x24]
ldreq r8, [sl, #0x20]
mov r0, r8
- bl FUN_021EFF2C
+ bl MOD04_021EFF2C
cmp r0, #0
ldreq ip, _02202DB0 ; =0x00000814
addeq sp, sp, ip
@@ -48456,7 +48456,7 @@ _02202C5C:
mov r1, r5
mov r3, r4
str r6, [sp, #4]
- bl FUN_021EFC40
+ bl MOD04_021EFC40
mov r7, r0
mvn r0, #0
cmp r7, r0
@@ -48509,7 +48509,7 @@ _02202D24:
mov r1, r6
mov r2, r5
mov r3, r7
- bl FUN_02202DB8
+ bl MOD04_02202DB8
cmp r0, #0
beq _02202D88
b _02202D94
@@ -48521,14 +48521,14 @@ _02202D4C:
mov r1, r6
mov r2, r5
mov r3, r7
- bl FUN_02202E68
+ bl MOD04_02202E68
b _02202D94
_02202D70:
mov r0, sl
mov r1, r6
mov r2, r5
mov r3, r7
- bl FUN_02202DC0
+ bl MOD04_02202DC0
b _02202D94
_02202D88:
ldr r6, [r6, #0x20]
@@ -48536,7 +48536,7 @@ _02202D88:
bne _02202CA4
_02202D94:
mov r0, r8
- bl FUN_021EFF2C
+ bl MOD04_021EFF2C
cmp r0, #0
bne _02202C5C
ldr ip, _02202DB0 ; =0x00000814
@@ -48546,13 +48546,13 @@ _02202D94:
_02202DB0: .word 0x00000814
_02202DB4: .word 0x000007FF
- arm_func_start FUN_02202DB8
-FUN_02202DB8: ; 0x02202DB8
+ arm_func_start MOD04_02202DB8
+MOD04_02202DB8: ; 0x02202DB8
mov r0, #1
bx lr
- arm_func_start FUN_02202DC0
-FUN_02202DC0: ; 0x02202DC0
+ arm_func_start MOD04_02202DC0
+MOD04_02202DC0: ; 0x02202DC0
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r4, r1
@@ -48566,7 +48566,7 @@ FUN_02202DC0: ; 0x02202DC0
moveq r6, #0
mov r0, r4
mov r1, r7
- bl FUN_02203738
+ bl MOD04_02203738
cmp r6, #0
addeq sp, sp, #4
ldmeqia sp!, {r4, r5, r6, r7, pc}
@@ -48579,13 +48579,13 @@ FUN_02202DC0: ; 0x02202DC0
ldrb r0, [r4, #0x14]
and r0, r0, #0xf3
strb r0, [r4, #0x14]
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r2, [r4, #0x1c]
mov r1, r4
sub r0, r0, r2
str r0, [r4, #0x1c]
add r0, r5, #8
- bl FUN_022032AC
+ bl MOD04_022032AC
ldr r3, [r5, #0x48]
ldr ip, [r5, #0x44]
mov r0, r5
@@ -48597,8 +48597,8 @@ FUN_02202DC0: ; 0x02202DC0
.align 2, 0
_02202E64: .word 0x0220F7A0
- arm_func_start FUN_02202E68
-FUN_02202E68: ; 0x02202E68
+ arm_func_start MOD04_02202E68
+MOD04_02202E68: ; 0x02202E68
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov r8, r2
ldrsb r2, [r8]
@@ -48620,7 +48620,7 @@ FUN_02202E68: ; 0x02202E68
_02202EB0:
mov r0, r8
mov r1, r7
- bl FUN_02206378
+ bl MOD04_02206378
movs r5, r0
bmi _02202EF4
add r0, sl, r6
@@ -48628,7 +48628,7 @@ _02202EB0:
mov r0, sb
mov r2, r8
ldr r1, [r4, r1, lsl #2]
- bl FUN_02203A80
+ bl MOD04_02203A80
ldr r0, [sl, #0x40]
add r6, r6, #1
cmp r6, r0
@@ -48644,7 +48644,7 @@ _02202F04:
mov r0, sb
mov r1, r8
mov r2, r7
- bl FUN_02203554
+ bl MOD04_02203554
ldrb r0, [sb, #0x14]
orr r0, r0, #0x43
strb r0, [sb, #0x14]
@@ -48652,13 +48652,13 @@ _02202F20:
ldrb r0, [sb, #0x14]
and r0, r0, #0xf3
strb r0, [sb, #0x14]
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r2, [sb, #0x1c]
mov r1, sb
sub r0, r0, r2
str r0, [sb, #0x1c]
add r0, sl, #8
- bl FUN_022032AC
+ bl MOD04_022032AC
ldr r3, [sl, #0x48]
ldr r4, [sl, #0x44]
mov r0, sl
@@ -48669,8 +48669,8 @@ _02202F20:
.align 2, 0
_02202F64: .word 0x0220F3A8
- arm_func_start FUN_02202F68
-FUN_02202F68: ; 0x02202F68
+ arm_func_start MOD04_02202F68
+MOD04_02202F68: ; 0x02202F68
stmdb sp!, {lr}
sub sp, sp, #4
ldrb ip, [r1, #0x14]
@@ -48695,53 +48695,53 @@ _02202FB4:
ldr r3, [r0, #4]
cmp ip, r3
bge _02202FD0
- bl FUN_022030C0
+ bl MOD04_022030C0
add sp, sp, #4
ldmfd sp!, {pc}
_02202FD0:
cmp r2, #0
beq _02202FE8
add r0, r0, #0x14
- bl FUN_02203350
+ bl MOD04_02203350
add sp, sp, #4
ldmfd sp!, {pc}
_02202FE8:
add r0, r0, #0x14
- bl FUN_02203378
+ bl MOD04_02203378
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_02202FF8
-FUN_02202FF8: ; 0x02202FF8
+ arm_func_start MOD04_02202FF8
+MOD04_02202FF8: ; 0x02202FF8
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0x20]
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
mvn r1, #0
add r0, r4, #0x14
str r1, [r4, #0x20]
- bl FUN_02203294
+ bl MOD04_02203294
add r0, r4, #8
- bl FUN_02203294
+ bl MOD04_02203294
ldmia sp!, {r4, pc}
- arm_func_start FUN_02203024
-FUN_02203024: ; 0x02203024
+ arm_func_start MOD04_02203024
+MOD04_02203024: ; 0x02203024
stmdb sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x14
- bl FUN_02203294
+ bl MOD04_02203294
add r0, r4, #8
- bl FUN_02203294
+ bl MOD04_02203294
ldmia sp!, {r4, pc}
- arm_func_start FUN_02203040
-FUN_02203040: ; 0x02203040
+ arm_func_start MOD04_02203040
+MOD04_02203040: ; 0x02203040
str r1, [r0, #0x28]
bx lr
- arm_func_start FUN_02203048
-FUN_02203048: ; 0x02203048
+ arm_func_start MOD04_02203048
+MOD04_02203048: ; 0x02203048
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
@@ -48753,7 +48753,7 @@ FUN_02203048: ; 0x02203048
cmp r0, #1
ldmneia sp!, {r4, r5, r6, pc}
_02203070:
- bl FUN_021F024C
+ bl MOD04_021F024C
str r4, [r6]
mov r0, #2
str r5, [r6, #4]
@@ -48765,25 +48765,25 @@ _02203070:
str r1, [r6, #0x48]
mov r1, r0
str r2, [r6, #0x28]
- bl FUN_021EFDB8
+ bl MOD04_021EFDB8
str r0, [r6, #0x20]
add r0, r6, #0x14
- bl FUN_02203294
+ bl MOD04_02203294
add r0, r6, #8
- bl FUN_02203294
+ bl MOD04_02203294
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022030BC: .word 0x02210E5C
- arm_func_start FUN_022030C0
-FUN_022030C0: ; 0x022030C0
+ arm_func_start MOD04_022030C0
+MOD04_022030C0: ; 0x022030C0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x114
mov r5, r0
mov r4, r1
add r0, r5, #8
- bl FUN_02203378
- bl FUN_021F025C
+ bl MOD04_02203378
+ bl MOD04_021F025C
str r0, [r4, #0x1c]
mov r0, #2
strb r0, [sp, #9]
@@ -48899,15 +48899,15 @@ _02203264:
ldr r0, [r5, #0x20]
add r1, sp, #0x10
mov r3, #0
- bl FUN_021EFBD4
+ bl MOD04_021EFBD4
add sp, sp, #0x114
ldmia sp!, {r4, r5, pc}
.align 2, 0
_0220328C: .word 0x0220F7A8
_02203290: .word 0x0220F7B8
- arm_func_start FUN_02203294
-FUN_02203294: ; 0x02203294
+ arm_func_start MOD04_02203294
+MOD04_02203294: ; 0x02203294
mov r2, #0
str r2, [r0, #4]
ldr r1, [r0, #4]
@@ -48915,8 +48915,8 @@ FUN_02203294: ; 0x02203294
str r2, [r0, #8]
bx lr
- arm_func_start FUN_022032AC
-FUN_022032AC: ; 0x022032AC
+ arm_func_start MOD04_022032AC
+MOD04_022032AC: ; 0x022032AC
ldr r3, [r0]
mov r2, #0
cmp r3, #0
@@ -48948,8 +48948,8 @@ _02203310:
mov r0, #0
bx lr
- arm_func_start FUN_02203318
-FUN_02203318: ; 0x02203318
+ arm_func_start MOD04_02203318
+MOD04_02203318: ; 0x02203318
ldr r2, [r0]
cmp r2, #0
beq _02203348
@@ -48966,8 +48966,8 @@ _02203348:
mov r0, r2
bx lr
- arm_func_start FUN_02203350
-FUN_02203350: ; 0x02203350
+ arm_func_start MOD04_02203350
+MOD04_02203350: ; 0x02203350
ldr r2, [r0]
str r2, [r1, #0x20]
str r1, [r0]
@@ -48979,8 +48979,8 @@ FUN_02203350: ; 0x02203350
str r1, [r0, #8]
bx lr
- arm_func_start FUN_02203378
-FUN_02203378: ; 0x02203378
+ arm_func_start MOD04_02203378
+MOD04_02203378: ; 0x02203378
ldr r2, [r0, #4]
cmp r2, #0
strne r1, [r2, #0x20]
@@ -48995,8 +48995,8 @@ FUN_02203378: ; 0x02203378
str r1, [r0, #8]
bx lr
- arm_func_start FUN_022033AC
-FUN_022033AC: ; 0x022033AC
+ arm_func_start MOD04_022033AC
+MOD04_022033AC: ; 0x022033AC
ldr r1, _022033C4 ; =0x02211738
ldr r1, [r1]
cmp r0, r1
@@ -49006,59 +49006,59 @@ FUN_022033AC: ; 0x022033AC
.align 2, 0
_022033C4: .word 0x02211738
- arm_func_start FUN_022033C8
-FUN_022033C8: ; 0x022033C8
+ arm_func_start MOD04_022033C8
+MOD04_022033C8: ; 0x022033C8
ldrb r0, [r0, #0x14]
bx lr
- arm_func_start FUN_022033D0
-FUN_022033D0: ; 0x022033D0
+ arm_func_start MOD04_022033D0
+MOD04_022033D0: ; 0x022033D0
strb r1, [r0, #0x14]
bx lr
- arm_func_start FUN_022033D8
-FUN_022033D8: ; 0x022033D8
+ arm_func_start MOD04_022033D8
+MOD04_022033D8: ; 0x022033D8
str r1, [r0, #0x10]
bx lr
- arm_func_start FUN_022033E0
-FUN_022033E0: ; 0x022033E0
+ arm_func_start MOD04_022033E0
+MOD04_022033E0: ; 0x022033E0
str r1, [r0, #8]
strh r2, [r0, #0xc]
bx lr
- arm_func_start FUN_022033EC
-FUN_022033EC: ; 0x022033EC
+ arm_func_start MOD04_022033EC
+MOD04_022033EC: ; 0x022033EC
strb r1, [r0, #0x15]
bx lr
- arm_func_start FUN_022033F4
-FUN_022033F4: ; 0x022033F4
+ arm_func_start MOD04_022033F4
+MOD04_022033F4: ; 0x022033F4
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r0, #0x24
mov r6, r1
mov r5, r2
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
addeq sp, sp, #8
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
- ldr r0, _02203498 ; =FUN_022034AC
- ldr r2, _0220349C ; =FUN_022034D0
+ ldr r0, _02203498 ; =MOD04_022034AC
+ ldr r2, _0220349C ; =MOD04_022034D0
str r0, [sp]
mov r0, #8
- ldr r3, _022034A0 ; =FUN_022034C0
+ ldr r3, _022034A0 ; =MOD04_022034C0
mov r1, r0
str r2, [sp, #4]
mov r2, #4
- bl FUN_021EF62C
+ bl MOD04_021EF62C
str r0, [r4, #0x18]
ldr r0, [r4, #0x18]
cmp r0, #0
bne _02203464
mov r0, r4
- bl FUN_021DD82C
+ bl MOD04_021DD82C
add sp, sp, #8
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
@@ -49077,17 +49077,17 @@ _02203464:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
-_02203498: .word FUN_022034AC
-_0220349C: .word FUN_022034D0
-_022034A0: .word FUN_022034C0
+_02203498: .word MOD04_022034AC
+_0220349C: .word MOD04_022034D0
+_022034A0: .word MOD04_022034C0
- arm_func_start FUN_022034A4
-FUN_022034A4: ; 0x022034A4
+ arm_func_start MOD04_022034A4
+MOD04_022034A4: ; 0x022034A4
ldr r0, [r0, #0x1c]
bx lr
- arm_func_start FUN_022034AC
-FUN_022034AC: ; 0x022034AC
+ arm_func_start MOD04_022034AC
+MOD04_022034AC: ; 0x022034AC
ldr ip, _022034BC ; =0x020E9B38
ldr r0, [r0]
ldr r1, [r1]
@@ -49095,28 +49095,28 @@ FUN_022034AC: ; 0x022034AC
.align 2, 0
_022034BC: .word 0x020E9B38
- arm_func_start FUN_022034C0
-FUN_022034C0: ; 0x022034C0
- ldr ip, _022034CC ; =FUN_022034F4
+ arm_func_start MOD04_022034C0
+MOD04_022034C0: ; 0x022034C0
+ ldr ip, _022034CC ; =MOD04_022034F4
ldr r0, [r0]
bx ip
.align 2, 0
-_022034CC: .word FUN_022034F4
+_022034CC: .word MOD04_022034F4
- arm_func_start FUN_022034D0
-FUN_022034D0: ; 0x022034D0
+ arm_func_start MOD04_022034D0
+MOD04_022034D0: ; 0x022034D0
stmdb sp!, {r4, lr}
mov r4, r0
ldr r1, [r4]
mov r0, #0
- bl FUN_022063A8
+ bl MOD04_022063A8
ldr r1, [r4, #4]
mov r0, #0
- bl FUN_022063A8
+ bl MOD04_022063A8
ldmia sp!, {r4, pc}
- arm_func_start FUN_022034F4
-FUN_022034F4: ; 0x022034F4
+ arm_func_start MOD04_022034F4
+MOD04_022034F4: ; 0x022034F4
stmdb sp!, {lr}
sub sp, sp, #4
ldrsb lr, [r0]
@@ -49146,8 +49146,8 @@ _02203538:
_0220354C: .word 0x0210420C
_02203550: .word 0x9CCF9319
- arm_func_start FUN_02203554
-FUN_02203554: ; 0x02203554
+ arm_func_start MOD04_02203554
+MOD04_02203554: ; 0x02203554
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x9c
mov sl, r1
@@ -49159,7 +49159,7 @@ FUN_02203554: ; 0x02203554
_02203574:
mov r0, sl
mov r1, sb
- bl FUN_02206378
+ bl MOD04_02206378
cmp r0, #0
addlt sp, sp, #0x9c
ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -49168,7 +49168,7 @@ _02203574:
add sl, sl, r0
mov r0, sl
mov r1, sb
- bl FUN_02206378
+ bl MOD04_02206378
cmp r0, #0
addlt sp, sp, #0x9c
ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -49177,7 +49177,7 @@ _02203574:
add sl, sl, r0
sub sb, sb, r0
mov r0, fp
- bl FUN_02203A80
+ bl MOD04_02203A80
ldrsb r0, [sl]
cmp r0, #0
bne _02203574
@@ -49215,7 +49215,7 @@ _022035F0:
_02203648:
mov r0, sl
mov r1, sb
- bl FUN_02206378
+ bl MOD04_02206378
cmp r0, #0
addlt sp, sp, #0x9c
ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -49242,7 +49242,7 @@ _02203698:
_022036A8:
mov r0, sl
mov r1, sb
- bl FUN_02206378
+ bl MOD04_02206378
movs r4, r0
addmi sp, sp, #0x9c
ldmmiia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -49254,7 +49254,7 @@ _022036A8:
mov r0, fp
add r1, sp, #0x16
mov r2, sl
- bl FUN_02203A80
+ bl MOD04_02203A80
mov r0, r5
add sl, sl, r4
sub sb, sb, r4
@@ -49280,14 +49280,14 @@ _02203718:
.align 2, 0
_02203734: .word 0x0220F7D4
- arm_func_start FUN_02203738
-FUN_02203738: ; 0x02203738
+ arm_func_start MOD04_02203738
+MOD04_02203738: ; 0x02203738
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
mov sb, r0
add r0, r1, #1
mov r1, #0x5c
- bl FUN_022037BC
+ bl MOD04_022037BC
movs r8, r0
addeq sp, sp, #4
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc}
@@ -49297,21 +49297,21 @@ FUN_02203738: ; 0x02203738
_02203768:
mov r0, r6
mov r1, r5
- bl FUN_022037BC
+ bl MOD04_022037BC
movs r7, r0
mov r0, r8
moveq r7, r4
- bl FUN_02203828
+ bl MOD04_02203828
cmp r0, #0
beq _0220379C
mov r0, sb
mov r1, r8
mov r2, r7
- bl FUN_02203A80
+ bl MOD04_02203A80
_0220379C:
mov r0, r6
mov r1, r5
- bl FUN_022037BC
+ bl MOD04_022037BC
movs r8, r0
bne _02203768
add sp, sp, #4
@@ -49319,8 +49319,8 @@ _0220379C:
.align 2, 0
_022037B8: .word 0x0220F7DC
- arm_func_start FUN_022037BC
-FUN_022037BC: ; 0x022037BC
+ arm_func_start MOD04_022037BC
+MOD04_022037BC: ; 0x022037BC
cmp r0, #0
ldrne r2, _02203824 ; =0x02211730
strne r0, [r2]
@@ -49353,8 +49353,8 @@ _022037F8:
.align 2, 0
_02203824: .word 0x02211730
- arm_func_start FUN_02203828
-FUN_02203828: ; 0x02203828
+ arm_func_start MOD04_02203828
+MOD04_02203828: ; 0x02203828
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
ldr r1, _02203884 ; =0x0220BCE0
@@ -49382,18 +49382,18 @@ _02203850:
.align 2, 0
_02203884: .word 0x0220BCE0
- arm_func_start FUN_02203888
-FUN_02203888: ; 0x02203888
+ arm_func_start MOD04_02203888
+MOD04_02203888: ; 0x02203888
ldr r0, [r0, #0x20]
bx lr
- arm_func_start FUN_02203890
-FUN_02203890: ; 0x02203890
+ arm_func_start MOD04_02203890
+MOD04_02203890: ; 0x02203890
str r1, [r0, #0x20]
bx lr
- arm_func_start FUN_02203898
-FUN_02203898: ; 0x02203898
+ arm_func_start MOD04_02203898
+MOD04_02203898: ; 0x02203898
ldrh r0, [r0, #0xc]
mov r1, r0, asr #8
mov r0, r0, lsl #8
@@ -49404,13 +49404,13 @@ FUN_02203898: ; 0x02203898
mov r0, r0, lsr #0x10
bx lr
- arm_func_start FUN_022038BC
-FUN_022038BC: ; 0x022038BC
+ arm_func_start MOD04_022038BC
+MOD04_022038BC: ; 0x022038BC
ldr r0, [r0, #8]
bx lr
- arm_func_start FUN_022038C4
-FUN_022038C4: ; 0x022038C4
+ arm_func_start MOD04_022038C4
+MOD04_022038C4: ; 0x022038C4
ldrb r0, [r0, #0x15]
and r0, r0, #2
cmp r0, #2
@@ -49418,13 +49418,13 @@ FUN_022038C4: ; 0x022038C4
movne r0, #0
bx lr
- arm_func_start FUN_022038DC
-FUN_022038DC: ; 0x022038DC
+ arm_func_start MOD04_022038DC
+MOD04_022038DC: ; 0x022038DC
ldrh r0, [r0, #4]
bx lr
- arm_func_start FUN_022038E4
-FUN_022038E4: ; 0x022038E4
+ arm_func_start MOD04_022038E4
+MOD04_022038E4: ; 0x022038E4
ldrh r0, [r0, #4]
mov r1, r0, asr #8
mov r0, r0, lsl #8
@@ -49435,19 +49435,19 @@ FUN_022038E4: ; 0x022038E4
mov r0, r0, lsr #0x10
bx lr
- arm_func_start FUN_02203908
-FUN_02203908: ; 0x02203908
+ arm_func_start MOD04_02203908
+MOD04_02203908: ; 0x02203908
ldr r0, [r0]
bx lr
- arm_func_start FUN_02203910
-FUN_02203910: ; 0x02203910
+ arm_func_start MOD04_02203910
+MOD04_02203910: ; 0x02203910
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r2
mov r2, #0
mov r4, r3
- bl FUN_022039E0
+ bl MOD04_022039E0
cmp r0, #0
beq _0220393C
bl atod
@@ -49459,8 +49459,8 @@ _0220393C:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_0220394C
-FUN_0220394C: ; 0x0220394C
+ arm_func_start MOD04_0220394C
+MOD04_0220394C: ; 0x0220394C
stmdb sp!, {r4, r5, r6, lr}
mov r5, r1
mov r6, r0
@@ -49471,13 +49471,13 @@ FUN_0220394C: ; 0x0220394C
cmp r0, #0
bne _0220397C
mov r0, r6
- bl FUN_022034A4
+ bl MOD04_022034A4
ldmia sp!, {r4, r5, r6, pc}
_0220397C:
mov r0, r6
mov r1, r5
mov r2, #0
- bl FUN_022039E0
+ bl MOD04_022039E0
cmp r0, #0
beq _022039C8
ldrb r2, [r0]
@@ -49506,8 +49506,8 @@ _022039D0:
_022039D8: .word 0x0220F7E0
_022039DC: .word 0x0210430C
- arm_func_start FUN_022039E0
-FUN_022039E0: ; 0x022039E0
+ arm_func_start MOD04_022039E0
+MOD04_022039E0: ; 0x022039E0
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
movs r6, r0
@@ -49527,7 +49527,7 @@ _02203A0C:
str r5, [sp]
ldr r0, [r6, #0x18]
add r1, sp, #0
- bl FUN_021EF358
+ bl MOD04_021EF358
cmp r0, #0
ldrne r4, [r0, #4]
mov r0, r4
@@ -49537,8 +49537,8 @@ _02203A0C:
_02203A40: .word 0x0220F7E8
_02203A44: .word 0x0220F7F0
- arm_func_start FUN_02203A48
-FUN_02203A48: ; 0x02203A48
+ arm_func_start MOD04_02203A48
+MOD04_02203A48: ; 0x02203A48
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x14
mov r4, r1
@@ -49549,45 +49549,45 @@ FUN_02203A48: ; 0x02203A48
add r2, sp, #0
mov r0, r5
mov r1, r4
- bl FUN_02203A80
+ bl MOD04_02203A80
add sp, sp, #0x14
ldmia sp!, {r4, r5, pc}
.align 2, 0
_02203A7C: .word 0x0220F7FC
- arm_func_start FUN_02203A80
-FUN_02203A80: ; 0x02203A80
+ arm_func_start MOD04_02203A80
+MOD04_02203A80: ; 0x02203A80
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
mov r5, r0
mov r4, r2
mov r0, #0
- bl FUN_02206428
+ bl MOD04_02206428
str r0, [sp]
mov r1, r4
mov r0, #0
- bl FUN_02206428
+ bl MOD04_02206428
str r0, [sp, #4]
ldr r0, [r5, #0x18]
add r1, sp, #0
- bl FUN_021EF494
+ bl MOD04_021EF494
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_02203AC0
-FUN_02203AC0: ; 0x02203AC0
+ arm_func_start MOD04_02203AC0
+MOD04_02203AC0: ; 0x02203AC0
stmdb sp!, {r4, lr}
ldr r4, [r0]
ldr r0, [r4, #0x18]
- bl FUN_021EF5B0
+ bl MOD04_021EF5B0
mov r1, #0
mov r0, r4
str r1, [r4, #0x18]
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldmia sp!, {r4, pc}
- arm_func_start FUN_02203AE4
-FUN_02203AE4: ; 0x02203AE4
+ arm_func_start MOD04_02203AE4
+MOD04_02203AE4: ; 0x02203AE4
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _02203B30 ; =0x02211734
@@ -49595,13 +49595,13 @@ FUN_02203AE4: ; 0x02203AE4
cmp r0, #0
addeq sp, sp, #4
ldmeqia sp!, {pc}
- bl FUN_021EF540
+ bl MOD04_021EF540
cmp r0, #0
addne sp, sp, #4
ldmneia sp!, {pc}
ldr r0, _02203B30 ; =0x02211734
ldr r0, [r0]
- bl FUN_021EF5B0
+ bl MOD04_021EF5B0
ldr r0, _02203B30 ; =0x02211734
mov r1, #0
str r1, [r0]
@@ -49610,23 +49610,23 @@ FUN_02203AE4: ; 0x02203AE4
.align 2, 0
_02203B30: .word 0x02211734
- arm_func_start FUN_02203B34
-FUN_02203B34: ; 0x02203B34
+ arm_func_start MOD04_02203B34
+MOD04_02203B34: ; 0x02203B34
stmdb sp!, {lr}
sub sp, sp, #0xc
ldr r0, _02203B88 ; =0x02211734
ldr r0, [r0]
cmp r0, #0
bne _02203B78
- ldr r0, _02203B8C ; =FUN_02203BA8
- ldr ip, _02203B90 ; =FUN_02203B98
+ ldr r0, _02203B8C ; =MOD04_02203BA8
+ ldr ip, _02203B90 ; =MOD04_02203B98
str r0, [sp]
- ldr r3, _02203B94 ; =FUN_02203BBC
+ ldr r3, _02203B94 ; =MOD04_02203BBC
mov r0, #8
mov r1, #0x64
mov r2, #2
str ip, [sp, #4]
- bl FUN_021EF62C
+ bl MOD04_021EF62C
ldr r1, _02203B88 ; =0x02211734
str r0, [r1]
_02203B78:
@@ -49636,20 +49636,20 @@ _02203B78:
ldmfd sp!, {pc}
.align 2, 0
_02203B88: .word 0x02211734
-_02203B8C: .word FUN_02203BA8
-_02203B90: .word FUN_02203B98
-_02203B94: .word FUN_02203BBC
+_02203B8C: .word MOD04_02203BA8
+_02203B90: .word MOD04_02203B98
+_02203B94: .word MOD04_02203BBC
- arm_func_start FUN_02203B98
-FUN_02203B98: ; 0x02203B98
- ldr ip, _02203BA4 ; =FUN_021DD82C
+ arm_func_start MOD04_02203B98
+MOD04_02203B98: ; 0x02203B98
+ ldr ip, _02203BA4 ; =MOD04_021DD82C
ldr r0, [r0]
bx ip
.align 2, 0
-_02203BA4: .word FUN_021DD82C
+_02203BA4: .word MOD04_021DD82C
- arm_func_start FUN_02203BA8
-FUN_02203BA8: ; 0x02203BA8
+ arm_func_start MOD04_02203BA8
+MOD04_02203BA8: ; 0x02203BA8
ldr ip, _02203BB8 ; =0x020E9B38
ldr r0, [r0]
ldr r1, [r1]
@@ -49657,93 +49657,93 @@ FUN_02203BA8: ; 0x02203BA8
.align 2, 0
_02203BB8: .word 0x020E9B38
- arm_func_start FUN_02203BBC
-FUN_02203BBC: ; 0x02203BBC
- ldr ip, _02203BC8 ; =FUN_022034F4
+ arm_func_start MOD04_02203BBC
+MOD04_02203BBC: ; 0x02203BBC
+ ldr ip, _02203BC8 ; =MOD04_022034F4
ldr r0, [r0]
bx ip
.align 2, 0
-_02203BC8: .word FUN_022034F4
+_02203BC8: .word MOD04_022034F4
- arm_func_start FUN_02203BCC
-FUN_02203BCC: ; 0x02203BCC
+ arm_func_start MOD04_02203BCC
+MOD04_02203BCC: ; 0x02203BCC
ldr r0, [r0, #0x4ec]
bx lr
- arm_func_start FUN_02203BD4
-FUN_02203BD4: ; 0x02203BD4
- ldr ip, _02203BE0 ; =FUN_02206740
+ arm_func_start MOD04_02203BD4
+MOD04_02203BD4: ; 0x02203BD4
+ ldr ip, _02203BE0 ; =MOD04_02206740
add r0, r0, #0x4c
bx ip
.align 2, 0
-_02203BE0: .word FUN_02206740
+_02203BE0: .word MOD04_02206740
- arm_func_start FUN_02203BE4
-FUN_02203BE4: ; 0x02203BE4
+ arm_func_start MOD04_02203BE4
+MOD04_02203BE4: ; 0x02203BE4
ldr ip, _02203BF0 ; =0x0220658C
add r0, r0, #0x4c
bx ip
.align 2, 0
_02203BF0: .word 0x0220658C
- arm_func_start FUN_02203BF4
-FUN_02203BF4: ; 0x02203BF4
- ldr ip, _02203C00 ; =FUN_02206570
+ arm_func_start MOD04_02203BF4
+MOD04_02203BF4: ; 0x02203BF4
+ ldr ip, _02203C00 ; =MOD04_02206570
add r0, r0, #0x4c
bx ip
.align 2, 0
-_02203C00: .word FUN_02206570
+_02203C00: .word MOD04_02206570
- arm_func_start FUN_02203C04
-FUN_02203C04: ; 0x02203C04
+ arm_func_start MOD04_02203C04
+MOD04_02203C04: ; 0x02203C04
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_02203C1C
+ bl MOD04_02203C1C
add r0, r4, #0x4c
- bl FUN_022064BC
+ bl MOD04_022064BC
ldmia sp!, {r4, pc}
- arm_func_start FUN_02203C1C
-FUN_02203C1C: ; 0x02203C1C
+ arm_func_start MOD04_02203C1C
+MOD04_02203C1C: ; 0x02203C1C
stmdb sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x4c
- bl FUN_02205994
+ bl MOD04_02205994
mov r0, r4
- bl FUN_02203024
+ bl MOD04_02203024
ldmia sp!, {r4, pc}
- arm_func_start FUN_02203C38
-FUN_02203C38: ; 0x02203C38
+ arm_func_start MOD04_02203C38
+MOD04_02203C38: ; 0x02203C38
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_02202AD4
+ bl MOD04_02202AD4
add r0, r4, #0x4c
- bl FUN_022041FC
+ bl MOD04_022041FC
ldmia sp!, {r4, pc}
- arm_func_start FUN_02203C50
-FUN_02203C50: ; 0x02203C50
+ arm_func_start MOD04_02203C50
+MOD04_02203C50: ; 0x02203C50
stmdb sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x4c
- bl FUN_022066A4
+ bl MOD04_022066A4
mov r1, r0
mvn r0, #0
cmp r1, r0
ldmeqia sp!, {r4, pc}
add r0, r4, #0x4c
- bl FUN_0220659C
+ bl MOD04_0220659C
ldmia sp!, {r4, pc}
- arm_func_start FUN_02203C7C
-FUN_02203C7C: ; 0x02203C7C
+ arm_func_start MOD04_02203C7C
+MOD04_02203C7C: ; 0x02203C7C
stmdb sp!, {r4, r5, r6, lr}
mov r5, r0
mov r6, r2
mov r0, r1
mov r4, r3
- bl FUN_021EFB38
+ bl MOD04_021EFB38
mov r3, r6, asr #8
mov r2, r6, lsl #8
mov r1, r0
@@ -49754,18 +49754,18 @@ FUN_02203C7C: ; 0x02203C7C
mov r3, r4
add r0, r5, #0x4c
mov r2, r2, lsr #0x10
- bl FUN_02204380
+ bl MOD04_02204380
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_02203CC4
-FUN_02203CC4: ; 0x02203CC4
+ arm_func_start MOD04_02203CC4
+MOD04_02203CC4: ; 0x02203CC4
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r5, r0
mov r6, r2
mov r0, r1
mov r4, r3
- bl FUN_021EFB38
+ bl MOD04_021EFB38
mov r3, r6, asr #8
mov r2, r6, lsl #8
ldr ip, [sp, #0x18]
@@ -49778,12 +49778,12 @@ FUN_02203CC4: ; 0x02203CC4
mov r3, r4
add r0, r5, #0x4c
mov r2, r2, lsr #0x10
- bl FUN_02204438
+ bl MOD04_02204438
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_02203D1C
-FUN_02203D1C: ; 0x02203D1C
+ arm_func_start MOD04_02203D1C
+MOD04_02203D1C: ; 0x02203D1C
stmdb sp!, {lr}
sub sp, sp, #0x14
ldr lr, [sp, #0x18]
@@ -49794,12 +49794,12 @@ FUN_02203D1C: ; 0x02203D1C
ldr ip, [sp, #0x20]
str lr, [sp, #8]
str ip, [sp, #0xc]
- bl FUN_02203D50
+ bl MOD04_02203D50
add sp, sp, #0x14
ldmfd sp!, {pc}
- arm_func_start FUN_02203D50
-FUN_02203D50: ; 0x02203D50
+ arm_func_start MOD04_02203D50
+MOD04_02203D50: ; 0x02203D50
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x10c
ldr r8, [sp, #0x130]
@@ -49841,7 +49841,7 @@ _02203DA8:
add r7, r7, r0
ldrb r1, [r4]
mov r0, sl
- bl FUN_02202AB8
+ bl MOD04_02202AB8
add r6, r6, #1
cmp r6, r8
blt _02203DA8
@@ -49852,7 +49852,7 @@ _02203DFC:
add r1, sp, #8
add r0, sl, #0x4c
str r4, [sp]
- bl FUN_02205AB4
+ bl MOD04_02205AB4
cmp r0, #0
addne sp, sp, #0x10c
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -49864,9 +49864,9 @@ _02203DFC:
b _02203E4C
_02203E3C:
mov r0, r4
- bl FUN_021F0250
+ bl MOD04_021F0250
mov r0, sl
- bl FUN_02203C38
+ bl MOD04_02203C38
_02203E4C:
ldr r1, [sl, #0x4c]
cmp r1, #3
@@ -49883,20 +49883,20 @@ _02203E4C:
_02203E78: .word 0x0220F3A8
_02203E7C: .word 0x0220F800
- arm_func_start FUN_02203E80
-FUN_02203E80: ; 0x02203E80
+ arm_func_start MOD04_02203E80
+MOD04_02203E80: ; 0x02203E80
stmdb sp!, {r4, lr}
mov r4, r0
add r0, r4, #0x4c
- bl FUN_0220595C
+ bl MOD04_0220595C
mov r0, r4
- bl FUN_02202FF8
+ bl MOD04_02202FF8
mov r0, r4
- bl FUN_021DD82C
+ bl MOD04_021DD82C
ldmia sp!, {r4, pc}
- arm_func_start FUN_02203EA4
-FUN_02203EA4: ; 0x02203EA4
+ arm_func_start MOD04_02203EA4
+MOD04_02203EA4: ; 0x02203EA4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
ldr r4, [sp, #0x30]
@@ -49914,7 +49914,7 @@ FUN_02203EA4: ; 0x02203EA4
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
_02203EE0:
ldr r0, _02203F6C ; =0x00000638
- bl FUN_021DD860
+ bl MOD04_021DD860
movs r4, r0
addeq sp, sp, #0x10
moveq r0, #0
@@ -49927,7 +49927,7 @@ _02203EE0:
str r0, [r4, #0x624]
ldr r1, [sp, #0x30]
str r5, [sp]
- ldr r0, _02203F70 ; =FUN_02204028
+ ldr r0, _02203F70 ; =MOD04_02204028
str r1, [sp, #4]
str r0, [sp, #8]
mov r1, r8
@@ -49935,26 +49935,26 @@ _02203EE0:
mov r3, r6
add r0, r4, #0x4c
str r4, [sp, #0xc]
- bl FUN_02206248
- ldr r0, _02203F74 ; =FUN_02203F78
+ bl MOD04_02206248
+ ldr r0, _02203F74 ; =MOD04_02203F78
ldr r1, [sp, #0x28]
str r0, [sp]
ldr r2, [sp, #0x2c]
ldr r3, [sp, #0x30]
mov r0, r4
str r4, [sp, #4]
- bl FUN_02203048
+ bl MOD04_02203048
mov r0, r4
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02203F68: .word 0x02210E5C
_02203F6C: .word 0x00000638
-_02203F70: .word FUN_02204028
-_02203F74: .word FUN_02203F78
+_02203F70: .word MOD04_02204028
+_02203F74: .word MOD04_02203F78
- arm_func_start FUN_02203F78
-FUN_02203F78: ; 0x02203F78
+ arm_func_start MOD04_02203F78
+MOD04_02203F78: ; 0x02203F78
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r2
@@ -50004,8 +50004,8 @@ _02203FE8:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_02204028
-FUN_02204028: ; 0x02204028
+ arm_func_start MOD04_02204028
+MOD04_02204028: ; 0x02204028
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r2
@@ -50059,7 +50059,7 @@ _022040D4:
mov r0, r4
mov r1, r5
mov r2, #0
- bl FUN_02202F68
+ bl MOD04_02202F68
b _022041C8
_022040E8:
ldrb r0, [r5, #0x14]
@@ -50084,7 +50084,7 @@ _02204124:
beq _0220413C
mov r0, r4
mov r1, r5
- bl FUN_02202A80
+ bl MOD04_02202A80
_0220413C:
ldr r3, [r4, #0x634]
ldr ip, [r4, #0x630]
@@ -50097,10 +50097,10 @@ _02204158:
ldr r1, [r4, #0x620]
cmp r1, #0
beq _02204168
- bl FUN_02205994
+ bl MOD04_02205994
_02204168:
ldr r0, [r6, #4]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
beq _02204184
ldr r0, [r4, #0x10]
@@ -50125,7 +50125,7 @@ _022041A0:
_022041BC:
ldr r1, [r4, #0x4ec]
mov r0, r4
- bl FUN_02203040
+ bl MOD04_02203040
_022041C8:
cmp r5, #0
ldmeqia sp!, {r4, r5, r6, pc}
@@ -50141,11 +50141,11 @@ _022041C8:
streq r0, [r4, #0x628]
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_022041FC
-FUN_022041FC: ; 0x022041FC
+ arm_func_start MOD04_022041FC
+MOD04_022041FC: ; 0x022041FC
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_02206514
+ bl MOD04_02206514
ldr r0, [r4]
cmp r0, #3
addls pc, pc, r0, lsl #2
@@ -50157,18 +50157,18 @@ _02204218: ; jump table
b _02204228 ; case 3
_02204228:
mov r0, r4
- bl FUN_02204560
+ bl MOD04_02204560
ldmia sp!, {r4, pc}
_02204234:
mov r0, r4
- bl FUN_02204248
+ bl MOD04_02204248
ldmia sp!, {r4, pc}
_02204240:
mov r0, #0
ldmia sp!, {r4, pc}
- arm_func_start FUN_02204248
-FUN_02204248: ; 0x02204248
+ arm_func_start MOD04_02204248
+MOD04_02204248: ; 0x02204248
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr ip, _02204374 ; =0x000005F4
sub sp, sp, ip
@@ -50176,7 +50176,7 @@ FUN_02204248: ; 0x02204248
mov sl, r0
str r1, [sp, #0x10]
ldr r0, [sl, #0x4b0]
- bl FUN_021EFF2C
+ bl MOD04_021EFF2C
cmp r0, #0
beq _0220431C
add sb, sp, #8
@@ -50192,22 +50192,22 @@ _02204288:
ldr r2, _02204378 ; =0x000005DB
mov r1, fp
mov r3, r7
- bl FUN_021EFC40
+ bl MOD04_021EFC40
mvn r1, #0
cmp r0, r1
beq _0220430C
ldrh r2, [sp, #0xa]
ldr r1, [sp, #0xc]
mov r0, sl
- bl FUN_02206628
+ bl MOD04_02206628
cmp r0, r4
bne _0220430C
ldrh r2, [sp, #0xa]
ldr r1, [sp, #0xc]
mov r0, sl
- bl FUN_022033F4
+ bl MOD04_022033F4
mov r6, r0
- bl FUN_022033AC
+ bl MOD04_022033AC
cmp r0, #0
ldrne ip, _02204374 ; =0x000005F4
movne r0, #5
@@ -50215,23 +50215,23 @@ _02204288:
ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov r0, r6
mov r1, r5
- bl FUN_022033EC
+ bl MOD04_022033EC
mov r0, sl
mov r1, r6
- bl FUN_02206704
+ bl MOD04_02206704
_0220430C:
ldr r0, [sl, #0x4b0]
- bl FUN_021EFF2C
+ bl MOD04_021EFF2C
cmp r0, #0
bne _02204288
_0220431C:
- bl FUN_021F025C
+ bl MOD04_021F025C
ldr r1, [sl, #0x4b4]
sub r0, r0, r1
cmp r0, #0x7d0
bls _02204364
ldr r0, [sl, #0x4b0]
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
mvn r0, #0
str r0, [sl, #0x4b0]
mov r0, #1
@@ -50253,8 +50253,8 @@ _02204374: .word 0x000005F4
_02204378: .word 0x000005DB
_0220437C: .word 0x02211738
- arm_func_start FUN_02204380
-FUN_02204380: ; 0x02204380
+ arm_func_start MOD04_02204380
+MOD04_02204380: ; 0x02204380
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x10
@@ -50296,14 +50296,14 @@ FUN_02204380: ; 0x02204380
strb r6, [r7, #2]
strb r5, [r7, #3]
str r4, [sp]
- bl FUN_02204438
+ bl MOD04_02204438
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
add sp, sp, #0x10
bx lr
- arm_func_start FUN_02204438
-FUN_02204438: ; 0x02204438
+ arm_func_start MOD04_02204438
+MOD04_02204438: ; 0x02204438
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #0x18
@@ -50316,7 +50316,7 @@ FUN_02204438: ; 0x02204438
mov r2, r1
mov r3, #2
str r1, [sp]
- bl FUN_02205AB4
+ bl MOD04_02205AB4
_0220446C:
ldr r0, [r5]
cmp r0, #1
@@ -50361,7 +50361,7 @@ _0220446C:
mov r2, #9
strb ip, [lr]
strb r3, [lr, #1]
- bl FUN_02205D28
+ bl MOD04_02205D28
cmp r0, #0
addne sp, sp, #0x18
ldmneia sp!, {r4, r5, r6, lr}
@@ -50371,7 +50371,7 @@ _0220446C:
ldr r2, [sp, #0x38]
mov r1, r4
mov r3, #0
- bl FUN_021EFC24
+ bl MOD04_021EFC24
cmp r0, #0
movlt r0, #3
movge r0, #0
@@ -50380,12 +50380,12 @@ _0220446C:
add sp, sp, #0x10
bx lr
- arm_func_start FUN_02204560
-FUN_02204560: ; 0x02204560
+ arm_func_start MOD04_02204560
+MOD04_02204560: ; 0x02204560
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r0, [r6, #0x4b0]
- bl FUN_021EFF2C
+ bl MOD04_021EFF2C
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, pc}
@@ -50395,12 +50395,12 @@ FUN_02204560: ; 0x02204560
add r1, r1, r4
rsb r2, r4, #0x1000
mov r3, #0
- bl FUN_021EFC78
+ bl MOD04_021EFC78
add r1, r0, #1
cmp r1, #1
bhi _022045B4
mov r0, r6
- bl FUN_02206184
+ bl MOD04_02206184
mov r0, #3
ldmia sp!, {r4, r5, r6, pc}
_022045B4:
@@ -50421,13 +50421,13 @@ _022045DC:
add r1, r1, r4
add r0, r6, r0
sub r2, r2, r4
- bl FUN_0220279C
+ bl MOD04_0220279C
_022045F8:
ldr r0, [r6]
cmp r0, #3
bne _02204610
mov r0, r6
- bl FUN_02204DF0
+ bl MOD04_02204DF0
mov r5, r0
_02204610:
cmp r5, #0
@@ -50440,7 +50440,7 @@ _02204610:
cmp r0, #0
ble _02204640
mov r0, r6
- bl FUN_0220464C
+ bl MOD04_0220464C
ldmia sp!, {r4, r5, r6, pc}
_02204640:
mov r0, #0
@@ -50448,8 +50448,8 @@ _02204640:
.align 2, 0
_02204648: .word 0x000004BC
- arm_func_start FUN_0220464C
-FUN_0220464C: ; 0x0220464C
+ arm_func_start MOD04_0220464C
+MOD04_0220464C: ; 0x0220464C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
mov sb, r0
@@ -50502,20 +50502,20 @@ _02204704:
mov r0, sb
add r1, r1, #3
sub r2, r2, #3
- bl FUN_02204D10
+ bl MOD04_02204D10
mov r8, r0
b _02204798
_0220471C:
mov r0, sb
add r1, r1, #3
sub r2, r2, #3
- bl FUN_02204828
+ bl MOD04_02204828
mov r8, r0
b _02204798
_02204734:
ldr r0, [sb, #0x4b0]
mov r3, r6
- bl FUN_021EFC24
+ bl MOD04_021EFC24
cmp r0, #0
bgt _02204798
add sp, sp, #4
@@ -50525,21 +50525,21 @@ _02204754:
mov r0, sb
add r1, r1, #3
sub r2, r2, #3
- bl FUN_02204920
+ bl MOD04_02204920
mov r8, r0
b _02204798
_0220476C:
mov r0, sb
add r1, r1, #3
sub r2, r2, #3
- bl FUN_022049B0
+ bl MOD04_022049B0
mov r8, r0
b _02204798
_02204784:
mov r0, sb
add r1, r1, #3
sub r2, r2, #3
- bl FUN_02204B40
+ bl MOD04_02204B40
mov r8, r0
_02204798:
ldrh r0, [sp]
@@ -50574,7 +50574,7 @@ _02204800:
cmp r8, #0
beq _02204810
mov r0, sb
- bl FUN_02206184
+ bl MOD04_02206184
_02204810:
mov r0, r8
add sp, sp, #4
@@ -50584,8 +50584,8 @@ _0220481C: .word 0x0220F818
_02204820: .word 0x0220F830
_02204824: .word 0x000005B4
- arm_func_start FUN_02204828
-FUN_02204828: ; 0x02204828
+ arm_func_start MOD04_02204828
+MOD04_02204828: ; 0x02204828
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r6, r2
@@ -50598,11 +50598,11 @@ FUN_02204828: ; 0x02204828
add r4, sp, #4
add r3, sp, #8
str r4, [sp]
- bl FUN_02205650
+ bl MOD04_02205650
ldrh r2, [sp, #4]
ldr r1, [sp, #8]
mov r0, r8
- bl FUN_02206628
+ bl MOD04_02206628
mov r4, r0
mvn r0, #0
cmp r4, r0
@@ -50610,9 +50610,9 @@ FUN_02204828: ; 0x02204828
ldrh r2, [sp, #4]
ldr r1, [sp, #8]
mov r0, r8
- bl FUN_022033F4
+ bl MOD04_022033F4
mov r5, r0
- bl FUN_022033AC
+ bl MOD04_022033AC
cmp r0, #0
beq _022048B8
add sp, sp, #0x10
@@ -50621,7 +50621,7 @@ FUN_02204828: ; 0x02204828
_022048A8:
mov r0, r8
mov r1, r4
- bl FUN_02206570
+ bl MOD04_02206570
mov r5, r0
_022048B8:
mov ip, #0
@@ -50630,7 +50630,7 @@ _022048B8:
mov r2, r7
mov r3, r6
str ip, [sp]
- bl FUN_02205378
+ bl MOD04_02205378
cmp r0, #0
addlt sp, sp, #0x10
movlt r0, #4
@@ -50640,7 +50640,7 @@ _022048B8:
bne _022048FC
mov r0, r8
mov r1, r5
- bl FUN_02206704
+ bl MOD04_02206704
_022048FC:
ldr r3, [r8, #0x494]
ldr r4, [r8, #0x488]
@@ -50652,8 +50652,8 @@ _022048FC:
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
- arm_func_start FUN_02204920
-FUN_02204920: ; 0x02204920
+ arm_func_start MOD04_02204920
+MOD04_02204920: ; 0x02204920
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
cmp r2, #6
@@ -50678,7 +50678,7 @@ FUN_02204920: ; 0x02204920
strb r1, [ip, #1]
ldrh r2, [sp]
ldr r1, [sp, #4]
- bl FUN_02206628
+ bl MOD04_02206628
mov r1, r0
mvn r0, #0
cmp r1, r0
@@ -50686,13 +50686,13 @@ FUN_02204920: ; 0x02204920
moveq r0, #0
ldmeqia sp!, {r4, r5, pc}
mov r0, r4
- bl FUN_0220659C
+ bl MOD04_0220659C
mov r0, #0
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_022049B0
-FUN_022049B0: ; 0x022049B0
+ arm_func_start MOD04_022049B0
+MOD04_022049B0: ; 0x022049B0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x54
mov r8, r2
@@ -50719,7 +50719,7 @@ FUN_022049B0: ; 0x022049B0
strb r1, [r3, #1]
ldrh r2, [sp, #8]
ldr r1, [sp, #0x10]
- bl FUN_02206628
+ bl MOD04_02206628
mov r1, r0
mvn r0, #0
cmp r1, r0
@@ -50727,7 +50727,7 @@ FUN_022049B0: ; 0x022049B0
moveq r0, #0
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
mov r0, sl
- bl FUN_02206570
+ bl MOD04_02206570
add r3, sb, #6
ldrb r2, [sb, #6]
ldrb r1, [r3, #1]
@@ -50764,7 +50764,7 @@ _02204AB8:
blt _02204AFC
mov r0, sb
mov r1, r8
- bl FUN_02206378
+ bl MOD04_02206378
cmp r0, r4
addeq sp, sp, #0x54
moveq r0, #4
@@ -50797,8 +50797,8 @@ _02204AFC:
add sp, sp, #0x54
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_02204B40
-FUN_02204B40: ; 0x02204B40
+ arm_func_start MOD04_02204B40
+MOD04_02204B40: ; 0x02204B40
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x24
mov r7, r2
@@ -50824,7 +50824,7 @@ _02204B94:
mov r0, r8
mov r1, r7
mov fp, r8
- bl FUN_02206378
+ bl MOD04_02206378
mvn r1, #0
cmp r0, r1
addeq sp, sp, #0x24
@@ -50876,7 +50876,7 @@ _02204B94:
orr r2, r3, r2
orr r2, sl, r2
str r2, [sp, #0x1c]
- bl FUN_02206378
+ bl MOD04_02206378
mov sl, r0
mvn r0, #0
cmp sl, r0
@@ -50919,8 +50919,8 @@ _02204D04:
add sp, sp, #0x24
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_02204D10
-FUN_02204D10: ; 0x02204D10
+ arm_func_start MOD04_02204D10
+MOD04_02204D10: ; 0x02204D10
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov sl, r0
@@ -50931,12 +50931,12 @@ FUN_02204D10: ; 0x02204D10
sub r8, r8, #1
ldrb r6, [sb], #1
beq _02204D3C
- bl FUN_022059F8
+ bl MOD04_022059F8
_02204D3C:
mov r1, r6
mov r0, #8
mov r2, #0
- bl FUN_021EF0E4
+ bl MOD04_021EF0E4
str r0, [sl, #8]
ldr r0, [sl, #8]
cmp r0, #0
@@ -50955,7 +50955,7 @@ _02204D78:
ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
add r0, sb, #1
sub r1, r8, #1
- bl FUN_02206378
+ bl MOD04_02206378
mov r5, r0
cmp r5, r4
addeq sp, sp, #0xc
@@ -50965,11 +50965,11 @@ _02204D78:
mov r0, sl
add r1, sb, #1
str r2, [sp, #4]
- bl FUN_02206428
+ bl MOD04_02206428
str r0, [sp]
ldr r0, [sl, #8]
mov r1, fp
- bl FUN_021EEFA8
+ bl MOD04_021EEFA8
add r0, r5, #1
add r7, r7, #1
cmp r7, r6
@@ -50981,8 +50981,8 @@ _02204DE4:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_02204DF0
-FUN_02204DF0: ; 0x02204DF0
+ arm_func_start MOD04_02204DF0
+MOD04_02204DF0: ; 0x02204DF0
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0xc
mov r8, r0
@@ -51013,7 +51013,7 @@ _02204E28:
cmp r6, r4
blt _022051D0
add r1, r7, r3
- bl FUN_022058B0
+ bl MOD04_022058B0
ldr r0, _02205224 ; =0x000004BC
add r7, r7, r4
sub r6, r6, r4
@@ -51022,7 +51022,7 @@ _02204E28:
mov r2, r6
add r0, r8, r0
str r3, [r8, #0x5c8]
- bl FUN_0220279C
+ bl MOD04_0220279C
_02204E88:
cmp r6, #6
blt _022051D0
@@ -51056,13 +51056,13 @@ _02204E88:
bne _02204F4C
add r0, r7, #6
sub r1, r6, #6
- bl FUN_02206378
+ bl MOD04_02206378
mvn r1, #0
cmp r0, r1
beq _022051D0
mov r0, r8
add r1, r7, #6
- bl FUN_02205240
+ bl MOD04_02205240
ldr r0, _02205228 ; =0x02211738
ldr r3, [r8, #0x494]
ldr r2, [r0]
@@ -51107,7 +51107,7 @@ _02204F98:
mov r2, #0
str r1, [r8, #0x484]
ldr r1, [r8, #0x484]
- bl FUN_021EF0E4
+ bl MOD04_021EF0E4
str r0, [r8, #8]
ldr r0, [r8, #8]
cmp r0, #0
@@ -51118,7 +51118,7 @@ _02204F98:
sub r6, r6, #1
_02204FE8:
ldr r0, [r8, #8]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
ldr r1, [r8, #0x484]
cmp r1, r0
ble _02205068
@@ -51129,7 +51129,7 @@ _02205004:
blt _02205068
add r0, r7, #1
sub r1, r6, #1
- bl FUN_02206378
+ bl MOD04_02206378
mov sb, r0
cmp sb, r4
beq _02205068
@@ -51137,22 +51137,22 @@ _02205004:
mov r0, r8
add r1, r7, #1
str r2, [sp, #4]
- bl FUN_02206428
+ bl MOD04_02206428
str r0, [sp]
ldr r0, [r8, #8]
mov r1, r5
- bl FUN_021EEFA8
+ bl MOD04_021EEFA8
add r1, sb, #1
ldr r0, [r8, #8]
add r7, r7, r1
sub r6, r6, r1
- bl FUN_021EF06C
+ bl MOD04_021EF06C
ldr r1, [r8, #0x484]
cmp r1, r0
bgt _02205004
_02205068:
ldr r0, [r8, #8]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
ldr r1, [r8, #0x484]
cmp r1, r0
bgt _022051D0
@@ -51183,13 +51183,13 @@ _022050BC:
_022050D4:
mov r0, r7
mov r1, r6
- bl FUN_02206378
+ bl MOD04_02206378
mov r5, r0
cmp r5, sb
beq _02205128
mov r0, r8
mov r1, r7
- bl FUN_02206428
+ bl MOD04_02206428
ldr r1, [r4]
ldr r2, [r8, #0x480]
add r1, r1, #1
@@ -51219,7 +51219,7 @@ _02205154:
mov r0, r8
mov r1, r7
mov r2, r6
- bl FUN_02205248
+ bl MOD04_02205248
cmp r0, r5
addeq sp, sp, #0xc
moveq r0, #5
@@ -51281,13 +51281,13 @@ _02205234: .word 0x0220F840
_02205238: .word 0x0220F830
_0220523C: .word 0x000004AF
- arm_func_start FUN_02205240
-FUN_02205240: ; 0x02205240
+ arm_func_start MOD04_02205240
+MOD04_02205240: ; 0x02205240
str r1, [r0, #0x4ac]
bx lr
- arm_func_start FUN_02205248
-FUN_02205248: ; 0x02205248
+ arm_func_start MOD04_02205248
+MOD04_02205248: ; 0x02205248
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r4, r2
@@ -51299,7 +51299,7 @@ FUN_02205248: ; 0x02205248
ldmltia sp!, {r4, r5, r6, r7, r8, pc}
ldrb r7, [r5]
mov r0, r7
- bl FUN_02205884
+ bl MOD04_02205884
mov r8, r0
cmp r4, r8
addlt sp, sp, #0x10
@@ -51310,7 +51310,7 @@ FUN_02205248: ; 0x02205248
mov r0, r6
add r1, r5, r8
sub r2, r4, r8
- bl FUN_022056DC
+ bl MOD04_022056DC
cmp r0, #0
addeq sp, sp, #0x10
moveq r0, #0
@@ -51320,7 +51320,7 @@ _022052B4:
beq _022052D8
add r0, r5, r8
sub r1, r4, r8
- bl FUN_022057EC
+ bl MOD04_022057EC
cmp r0, #0
addeq sp, sp, #0x10
moveq r0, #0
@@ -51340,13 +51340,13 @@ _022052D8:
mov r1, r5
mov r2, r4
str r7, [sp]
- bl FUN_02205650
+ bl MOD04_02205650
ldrh r2, [sp, #4]
ldr r1, [sp, #8]
mov r0, r6
- bl FUN_022033F4
+ bl MOD04_022033F4
mov r7, r0
- bl FUN_022033AC
+ bl MOD04_022033AC
cmp r0, #0
addne sp, sp, #0x10
mvnne r0, #1
@@ -51357,19 +51357,19 @@ _022052D8:
mov r2, r5
mov r3, r4
str ip, [sp]
- bl FUN_02205378
+ bl MOD04_02205378
mov r4, r0
mov r0, r6
mov r1, r7
- bl FUN_02206704
+ bl MOD04_02206704
mov r0, r4
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02205374: .word 0x0220F84C
- arm_func_start FUN_02205378
-FUN_02205378: ; 0x02205378
+ arm_func_start MOD04_02205378
+MOD04_02205378: ; 0x02205378
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x14
mov r8, r2
@@ -51382,7 +51382,7 @@ FUN_02205378: ; 0x02205378
mov r1, r2
str r7, [sp]
ldr r6, [sp, #0x38]
- bl FUN_022033EC
+ bl MOD04_022033EC
ldr r0, [sp, #4]
add r8, r8, #5
ands r0, r0, #0x10
@@ -51423,7 +51423,7 @@ _02205438:
ldrh r2, [sp, #0xa]
ldr r1, [sp, #0xc]
mov r0, sb
- bl FUN_022033E0
+ bl MOD04_022033E0
ldr r0, [sp, #4]
ands r0, r0, #8
beq _0220548C
@@ -51440,13 +51440,13 @@ _02205438:
strb r2, [r3, #2]
strb r1, [r3, #3]
ldr r1, [sp, #0xc]
- bl FUN_022033D8
+ bl MOD04_022033D8
_0220548C:
ldr r0, [sp, #4]
ands r0, r0, #0x40
beq _022055C4
ldr r0, [sl, #8]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
mov r5, r0
cmp r5, #0
mov r4, #0
@@ -51455,7 +51455,7 @@ _0220548C:
_022054B4:
ldr r0, [sl, #8]
mov r1, r4
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
mov r1, r0
ldr r0, [r1, #4]
cmp r0, #0
@@ -51469,7 +51469,7 @@ _022054E4:
ldrb r2, [r8]
ldr r1, [r1]
mov r0, sb
- bl FUN_02203A48
+ bl MOD04_02203A48
add r8, r8, #1
sub r7, r7, #1
b _022055A0
@@ -51489,7 +51489,7 @@ _02205500:
orr r2, r2, r3
mov r2, r2, lsl #0x10
mov r2, r2, lsr #0x10
- bl FUN_02203A48
+ bl MOD04_02203A48
add r8, r8, #2
sub r7, r7, #2
b _022055A0
@@ -51503,7 +51503,7 @@ _0220554C:
ldr r1, [r1]
mov r0, sb
mov r2, r8
- bl FUN_02203A80
+ bl MOD04_02203A80
mov r0, r8
bl strlen
add r0, r0, #1
@@ -51515,18 +51515,18 @@ _0220558C:
ldr r1, [r1]
ldr r2, [r0, #0x84]
mov r0, sb
- bl FUN_02203A80
+ bl MOD04_02203A80
_022055A0:
add r4, r4, #1
cmp r4, r5
blt _022054B4
_022055AC:
mov r0, sb
- bl FUN_022033C8
+ bl MOD04_022033C8
orr r1, r0, #1
mov r0, sb
and r1, r1, #0xff
- bl FUN_022033D0
+ bl MOD04_022033D0
_022055C4:
ldr r0, [sp, #4]
ands r0, r0, #0x80
@@ -51542,7 +51542,7 @@ _022055D4:
mov r1, r4
mov r2, r8
sub r7, r7, r3
- bl FUN_02203A80
+ bl MOD04_02203A80
mov r0, r8
bl strlen
add r0, r0, #1
@@ -51557,19 +51557,19 @@ _02205610:
_02205624:
mov r0, sb
sub r7, r7, #1
- bl FUN_022033C8
+ bl MOD04_022033C8
orr r1, r0, #2
mov r0, sb
and r1, r1, #0xff
- bl FUN_022033D0
+ bl MOD04_022033D0
_02205640:
ldr r0, [sp]
sub r0, r0, r7
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_02205650
-FUN_02205650: ; 0x02205650
+ arm_func_start MOD04_02205650
+MOD04_02205650: ; 0x02205650
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
cmp r2, #5
@@ -51607,15 +51607,15 @@ _022056C4:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_022056DC
-FUN_022056DC: ; 0x022056DC
+ arm_func_start MOD04_022056DC
+MOD04_022056DC: ; 0x022056DC
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
mov r8, r0
ldr r0, [r8, #8]
mov r7, r1
mov r6, r2
- bl FUN_021EF06C
+ bl MOD04_021EF06C
mov r5, r0
cmp r5, #0
mov r4, #0
@@ -51624,7 +51624,7 @@ FUN_022056DC: ; 0x022056DC
_0220570C:
ldr r0, [r8, #8]
mov r1, r4
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r0, [r0, #4]
cmp r0, #0
beq _02205750
@@ -51652,7 +51652,7 @@ _02205750:
bne _022057B8
mov r0, r7
mov r1, r6
- bl FUN_02206378
+ bl MOD04_02206378
cmp r0, sb
addeq sp, sp, #4
moveq r0, #0
@@ -51686,8 +51686,8 @@ _022057E0: .word 0x0220F854
_022057E4: .word 0x0220F830
_022057E8: .word 0x00000317
- arm_func_start FUN_022057EC
-FUN_022057EC: ; 0x022057EC
+ arm_func_start MOD04_022057EC
+MOD04_022057EC: ; 0x022057EC
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -51696,7 +51696,7 @@ FUN_022057EC: ; 0x022057EC
_02205800:
mov r0, r5
mov r1, r4
- bl FUN_02206378
+ bl MOD04_02206378
cmp r0, #0
addlt sp, sp, #4
movlt r0, #0
@@ -51705,7 +51705,7 @@ _02205800:
add r5, r5, r0
mov r0, r5
mov r1, r4
- bl FUN_02206378
+ bl MOD04_02206378
cmp r0, #0
addlt sp, sp, #4
movlt r0, #0
@@ -51730,8 +51730,8 @@ _0220585C:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_02205884
-FUN_02205884: ; 0x02205884
+ arm_func_start MOD04_02205884
+MOD04_02205884: ; 0x02205884
mov r2, #5
ands r1, r0, #2
addne r2, r2, #4
@@ -51744,8 +51744,8 @@ FUN_02205884: ; 0x02205884
mov r0, r2
bx lr
- arm_func_start FUN_022058B0
-FUN_022058B0: ; 0x022058B0
+ arm_func_start MOD04_022058B0
+MOD04_022058B0: ; 0x022058B0
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
mov sb, r0
@@ -51787,38 +51787,38 @@ _0220593C:
add r1, sb, #0x74
add r0, sb, r0
mov r2, #8
- bl FUN_022028B0
+ bl MOD04_022028B0
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_02205958: .word 0x000004BC
- arm_func_start FUN_0220595C
-FUN_0220595C: ; 0x0220595C
+ arm_func_start MOD04_0220595C
+MOD04_0220595C: ; 0x0220595C
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_02205994
+ bl MOD04_02205994
mov r0, r4
- bl FUN_022064BC
+ bl MOD04_022064BC
mov r0, r4
- bl FUN_02203AE4
+ bl MOD04_02203AE4
ldr r0, [r4, #4]
cmp r0, #0
beq _02205988
- bl FUN_021EF074
+ bl MOD04_021EF074
_02205988:
mov r0, #0
str r0, [r4, #4]
ldmia sp!, {r4, pc}
- arm_func_start FUN_02205994
-FUN_02205994: ; 0x02205994
+ arm_func_start MOD04_02205994
+MOD04_02205994: ; 0x02205994
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0x7c]
cmp r0, #0
beq _022059AC
- bl FUN_021DD82C
+ bl MOD04_021DD82C
_022059AC:
mov r0, #0
str r0, [r4, #0x7c]
@@ -51827,22 +51827,22 @@ _022059AC:
mvn r1, #0
cmp r0, r1
beq _022059CC
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
_022059CC:
mvn r1, #0
mov r0, r4
str r1, [r4, #0x4b0]
mov r1, #1
str r1, [r4]
- bl FUN_022059F8
+ bl MOD04_022059F8
mvn r1, #0
mov r0, r4
str r1, [r4, #0x484]
- bl FUN_02205A68
+ bl MOD04_02205A68
ldmia sp!, {r4, pc}
- arm_func_start FUN_022059F8
-FUN_022059F8: ; 0x022059F8
+ arm_func_start MOD04_022059F8
+MOD04_022059F8: ; 0x022059F8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -51851,31 +51851,31 @@ FUN_022059F8: ; 0x022059F8
addeq sp, sp, #4
ldmeqia sp!, {r4, r5, pc}
mov r4, #0
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r0, #0
ble _02205A50
_02205A24:
ldr r0, [r5, #8]
mov r1, r4
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r1, [r0]
mov r0, r5
- bl FUN_022063A8
+ bl MOD04_022063A8
ldr r0, [r5, #8]
add r4, r4, #1
- bl FUN_021EF06C
+ bl MOD04_021EF06C
cmp r4, r0
blt _02205A24
_02205A50:
ldr r0, [r5, #8]
- bl FUN_021EF074
+ bl MOD04_021EF074
mov r0, #0
str r0, [r5, #8]
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_02205A68
-FUN_02205A68: ; 0x02205A68
+ arm_func_start MOD04_02205A68
+MOD04_02205A68: ; 0x02205A68
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -51887,7 +51887,7 @@ _02205A84:
add r0, r5, r4, lsl #2
ldr r1, [r0, #0x84]
mov r0, r5
- bl FUN_022063A8
+ bl MOD04_022063A8
ldr r0, [r5, #0x480]
add r4, r4, #1
cmp r4, r0
@@ -51898,8 +51898,8 @@ _02205AA4:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_02205AB4
-FUN_02205AB4: ; 0x02205AB4
+ arm_func_start MOD04_02205AB4
+MOD04_02205AB4: ; 0x02205AB4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x30c
mov r5, r0
@@ -51932,13 +51932,13 @@ _02205AEC:
movhi r0, #6
ldmhiia sp!, {r4, r5, r6, r7, pc}
mov r0, r5
- bl FUN_02205FF0
+ bl MOD04_02205FF0
cmp r0, #0
addne sp, sp, #0x30c
ldmneia sp!, {r4, r5, r6, r7, pc}
mov r0, r5
str r4, [r5, #0x5c4]
- bl FUN_02205DCC
+ bl MOD04_02205DCC
add r3, sp, #0xe
mov ip, #2
add r0, sp, #8
@@ -51946,40 +51946,40 @@ _02205AEC:
mov r1, #0
str ip, [sp, #4]
str r3, [sp, #8]
- bl FUN_02205F74
+ bl MOD04_02205F74
add r0, sp, #8
add r2, sp, #4
mov r1, #1
- bl FUN_02205F74
+ bl MOD04_02205F74
add r0, sp, #8
mov r1, #3
add r2, sp, #4
- bl FUN_02205F74
+ bl MOD04_02205F74
ldr r1, [r5, #0x4b8]
add r0, sp, #8
add r2, sp, #4
- bl FUN_02205F18
+ bl MOD04_02205F18
add r0, sp, #8
add r1, r5, #0xc
add r2, sp, #4
- bl FUN_02205F98
+ bl MOD04_02205F98
add r0, sp, #8
add r1, r5, #0x30
add r2, sp, #4
- bl FUN_02205F98
+ bl MOD04_02205F98
add r0, sp, #8
add r1, r5, #0x74
mov r2, #8
add r3, sp, #4
- bl FUN_02205EE4
+ bl MOD04_02205EE4
mov r1, r6
add r0, sp, #8
add r2, sp, #4
- bl FUN_02205F98
+ bl MOD04_02205F98
mov r1, r7
add r0, sp, #8
add r2, sp, #4
- bl FUN_02205F98
+ bl MOD04_02205F98
mov r1, r4, lsl #0x18
and ip, r1, #0xff000000
mov r1, r4, lsl #8
@@ -51993,14 +51993,14 @@ _02205AEC:
add r0, sp, #8
orr r1, ip, r1
add r2, sp, #4
- bl FUN_02205F18
+ bl MOD04_02205F18
ldr r0, [r5, #0x5c4]
ands r0, r0, #8
beq _02205C44
ldr r1, [r5, #0x4a4]
add r0, sp, #8
add r2, sp, #4
- bl FUN_02205F18
+ bl MOD04_02205F18
_02205C44:
ldr r0, [r5, #0x5c4]
ands r0, r0, #0x80
@@ -52008,7 +52008,7 @@ _02205C44:
ldr r1, [sp, #0x320]
add r0, sp, #8
add r2, sp, #4
- bl FUN_02205F18
+ bl MOD04_02205F18
_02205C60:
ldr r0, [sp, #4]
add r1, sp, #0
@@ -52028,11 +52028,11 @@ _02205C60:
strb r0, [r1, #1]
ldr r0, [r5, #0x4b0]
ldr r2, [sp, #4]
- bl FUN_021EFC24
+ bl MOD04_021EFC24
cmp r0, #0
bgt _02205CC8
mov r0, r5
- bl FUN_02205994
+ bl MOD04_02205994
add sp, sp, #0x30c
mov r0, #3
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -52045,7 +52045,7 @@ _02205CC8:
cmp r0, #0
bne _02205D0C
mov r0, #0x1000
- bl FUN_021DD860
+ bl MOD04_021DD860
str r0, [r5, #0x7c]
ldr r0, [r5, #0x7c]
cmp r0, #0
@@ -52064,8 +52064,8 @@ _02205D1C: .word 0x0220F830
_02205D20: .word 0x0000020A
_02205D24: .word 0x0220F878
- arm_func_start FUN_02205D28
-FUN_02205D28: ; 0x02205D28
+ arm_func_start MOD04_02205D28
+MOD04_02205D28: ; 0x02205D28
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
mov sl, r0
@@ -52080,24 +52080,24 @@ _02205D48:
mov r2, r8
mov r3, r5
sub r6, r6, #1
- bl FUN_021EFC24
+ bl MOD04_021EFC24
mov r7, r0
cmp r7, #0
bgt _02205DB8
cmp r6, #0
blt _02205DB8
mov r0, sl
- bl FUN_02205994
+ bl MOD04_02205994
mov r0, sl
mov r1, r5
mov r2, r5
mov r3, r4
str r5, [sp]
- bl FUN_02205AB4
+ bl MOD04_02205AB4
movs fp, r0
beq _02205DB0
mov r0, sl
- bl FUN_02206184
+ bl MOD04_02206184
add sp, sp, #4
mov r0, fp
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -52111,8 +52111,8 @@ _02205DB8:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_02205DCC
-FUN_02205DCC: ; 0x02205DCC
+ arm_func_start MOD04_02205DCC
+MOD04_02205DCC: ; 0x02205DCC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
mov sl, r0
@@ -52189,8 +52189,8 @@ _02205EC8:
_02205EDC: .word 0x2C0B02C1
_02205EE0: .word 0x0000005D
- arm_func_start FUN_02205EE4
-FUN_02205EE4: ; 0x02205EE4
+ arm_func_start MOD04_02205EE4
+MOD04_02205EE4: ; 0x02205EE4
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r0, [r6]
@@ -52205,8 +52205,8 @@ FUN_02205EE4: ; 0x02205EE4
str r0, [r6]
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_02205F18
-FUN_02205F18: ; 0x02205F18
+ arm_func_start MOD04_02205F18
+MOD04_02205F18: ; 0x02205F18
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {lr}
sub sp, sp, #4
@@ -52231,8 +52231,8 @@ FUN_02205F18: ; 0x02205F18
add sp, sp, #0x10
bx lr
- arm_func_start FUN_02205F74
-FUN_02205F74: ; 0x02205F74
+ arm_func_start MOD04_02205F74
+MOD04_02205F74: ; 0x02205F74
ldr r3, [r0]
strb r1, [r3]
ldr r1, [r2]
@@ -52243,8 +52243,8 @@ FUN_02205F74: ; 0x02205F74
str r1, [r0]
bx lr
- arm_func_start FUN_02205F98
-FUN_02205F98: ; 0x02205F98
+ arm_func_start MOD04_02205F98
+MOD04_02205F98: ; 0x02205F98
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
movs r7, r1
@@ -52269,14 +52269,14 @@ FUN_02205F98: ; 0x02205F98
.align 2, 0
_02205FEC: .word 0x0220F878
- arm_func_start FUN_02205FF0
-FUN_02205FF0: ; 0x02205FF0
+ arm_func_start MOD04_02205FF0
+MOD04_02205FF0: ; 0x02205FF0
stmdb sp!, {r4, lr}
sub sp, sp, #0x88
mov r4, r0
add r0, r4, #0xc
mov r1, #0x14
- bl FUN_02206124
+ bl MOD04_02206124
ldr r1, _02206118 ; =0x0221173C
mov r3, r0
ldr r1, [r1]
@@ -52296,7 +52296,7 @@ _02206038:
add r0, sp, #8
strb r2, [sp, #1]
strh r1, [sp, #2]
- bl FUN_021EFB38
+ bl MOD04_021EFB38
mvn r1, #0
str r0, [sp, #4]
cmp r0, r1
@@ -52326,7 +52326,7 @@ _022060A4:
mov r0, #2
mov r1, #1
mov r2, #0
- bl FUN_021EFDB8
+ bl MOD04_021EFDB8
str r0, [r4, #0x4b0]
ldr r0, [r4, #0x4b0]
mvn r1, #0
@@ -52337,13 +52337,13 @@ _022060A4:
_022060E0:
add r1, sp, #0
mov r2, #8
- bl FUN_021EFCE4
+ bl MOD04_021EFCE4
cmp r0, #0
addeq sp, sp, #0x88
moveq r0, #0
ldmeqia sp!, {r4, pc}
ldr r0, [r4, #0x4b0]
- bl FUN_021EFD9C
+ bl MOD04_021EFD9C
mvn r0, #0
str r0, [r4, #0x4b0]
mov r0, #3
@@ -52354,8 +52354,8 @@ _02206118: .word 0x0221173C
_0220611C: .word 0x0220F87C
_02206120: .word 0x0000EE70
- arm_func_start FUN_02206124
-FUN_02206124: ; 0x02206124
+ arm_func_start MOD04_02206124
+MOD04_02206124: ; 0x02206124
stmdb sp!, {lr}
sub sp, sp, #4
ldrsb lr, [r0]
@@ -52385,8 +52385,8 @@ _02206168:
_0220617C: .word 0x0210420C
_02206180: .word 0x9CCF9319
- arm_func_start FUN_02206184
-FUN_02206184: ; 0x02206184
+ arm_func_start MOD04_02206184
+MOD04_02206184: ; 0x02206184
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r4, r0
@@ -52415,7 +52415,7 @@ FUN_02206184: ; 0x02206184
mov r1, r0
mov r0, r4
add r1, r7, r1
- bl FUN_02205240
+ bl MOD04_02205240
ldr r0, _02206244 ; =0x02211738
ldr r3, [r4, #0x494]
ldr r2, [r0]
@@ -52432,15 +52432,15 @@ _02206214:
mov r1, #4
blx ip
mov r0, r4
- bl FUN_02205994
+ bl MOD04_02205994
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_02206240: .word 0x0220F804
_02206244: .word 0x02211738
- arm_func_start FUN_02206248
-FUN_02206248: ; 0x02206248
+ arm_func_start MOD04_02206248
+MOD04_02206248: ; 0x02206248
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
movs r7, r0
@@ -52466,9 +52466,9 @@ _02206298:
mov r1, #1
mov r0, r7
str r1, [r7]
- bl FUN_02206494
+ bl MOD04_02206494
mov r0, r7
- bl FUN_02203B34
+ bl MOD04_02203B34
mov r1, r6
add r0, r7, #0xc
bl strcpy
@@ -52506,12 +52506,12 @@ _022062FC:
str r3, [r7, #0x4a4]
mov r0, r7
str r2, [r7, #0x4b8]
- bl FUN_02205240
+ bl MOD04_02205240
mov r0, #0
str r0, [r7, #0x5cc]
- bl FUN_021F025C
+ bl MOD04_021F025C
bl srand
- bl FUN_021F024C
+ bl MOD04_021F024C
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
@@ -52522,8 +52522,8 @@ _0220636C: .word 0x0220F8A8
_02206370: .word 0x00000132
_02206374: .word 0x0220F878
- arm_func_start FUN_02206378
-FUN_02206378: ; 0x02206378
+ arm_func_start MOD04_02206378
+MOD04_02206378: ; 0x02206378
cmp r1, #0
mov r3, #0
ble _022063A0
@@ -52539,15 +52539,15 @@ _022063A0:
mvn r0, #0
bx lr
- arm_func_start FUN_022063A8
-FUN_022063A8: ; 0x022063A8
+ arm_func_start MOD04_022063A8
+MOD04_022063A8: ; 0x022063A8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
mov r5, r0
str r1, [sp]
- bl FUN_02203B34
+ bl MOD04_02203B34
add r1, sp, #0
- bl FUN_021EF358
+ bl MOD04_021EF358
movs r4, r0
bne _022063E0
ldr r0, _02206420 ; =0x0220F8BC
@@ -52567,25 +52567,25 @@ _022063E0:
addne sp, sp, #0xc
ldmneia sp!, {r4, r5, pc}
mov r0, r5
- bl FUN_02203B34
+ bl MOD04_02203B34
add r1, sp, #0
- bl FUN_021EF3F4
+ bl MOD04_021EF3F4
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
.align 2, 0
_02206420: .word 0x0220F8BC
_02206424: .word 0x0220F830
- arm_func_start FUN_02206428
-FUN_02206428: ; 0x02206428
+ arm_func_start MOD04_02206428
+MOD04_02206428: ; 0x02206428
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
mov r4, r1
mov r5, r0
str r4, [sp]
- bl FUN_02203B34
+ bl MOD04_02203B34
add r1, sp, #0
- bl FUN_021EF358
+ bl MOD04_021EF358
cmp r0, #0
ldrne r1, [r0, #4]
addne sp, sp, #0xc
@@ -52594,37 +52594,37 @@ FUN_02206428: ; 0x02206428
ldrne r0, [r0]
ldmneia sp!, {r4, r5, pc}
mov r0, r4
- bl FUN_021F0208
+ bl MOD04_021F0208
str r0, [sp]
mov r1, #1
mov r0, r5
str r1, [sp, #4]
- bl FUN_02203B34
+ bl MOD04_02203B34
add r1, sp, #0
- bl FUN_021EF494
+ bl MOD04_021EF494
ldr r0, [sp]
add sp, sp, #0xc
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_02206494
-FUN_02206494: ; 0x02206494
+ arm_func_start MOD04_02206494
+MOD04_02206494: ; 0x02206494
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, #4
mov r1, #0x64
mov r2, #0
- bl FUN_021EF0E4
+ bl MOD04_021EF0E4
str r0, [r4, #4]
mov r0, #0
str r0, [r4, #0x5d0]
ldmia sp!, {r4, pc}
- arm_func_start FUN_022064BC
-FUN_022064BC: ; 0x022064BC
+ arm_func_start MOD04_022064BC
+MOD04_022064BC: ; 0x022064BC
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r0, [r6, #4]
- bl FUN_021EF06C
+ bl MOD04_021EF06C
mov r4, r0
cmp r4, #0
mov r5, #0
@@ -52632,22 +52632,22 @@ FUN_022064BC: ; 0x022064BC
_022064DC:
ldr r0, [r6, #4]
mov r1, r5
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r1, [r0]
mov r0, r6
- bl FUN_022065E8
+ bl MOD04_022065E8
add r5, r5, #1
cmp r5, r4
blt _022064DC
_02206500:
ldr r0, [r6, #4]
- bl FUN_021EEB28
+ bl MOD04_021EEB28
mov r0, r6
- bl FUN_02206514
+ bl MOD04_02206514
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_02206514
-FUN_02206514: ; 0x02206514
+ arm_func_start MOD04_02206514
+MOD04_02206514: ; 0x02206514
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r6, r0
@@ -52661,10 +52661,10 @@ FUN_02206514: ; 0x02206514
add r4, sp, #0
_02206540:
ldr r0, [sp]
- bl FUN_02203888
+ bl MOD04_02203888
mov r5, r0
mov r0, r4
- bl FUN_02203AC0
+ bl MOD04_02203AC0
str r5, [sp]
cmp r5, #0
bne _02206540
@@ -52674,28 +52674,28 @@ _02206560:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_02206570
-FUN_02206570: ; 0x02206570
+ arm_func_start MOD04_02206570
+MOD04_02206570: ; 0x02206570
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, [r0, #4]
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r0, [r0]
add sp, sp, #4
ldmfd sp!, {pc}
- ldr ip, _02206598 ; =FUN_021EF06C
+ ldr ip, _02206598 ; =MOD04_021EF06C
ldr r0, [r0, #4]
bx ip
.align 2, 0
-_02206598: .word FUN_021EF06C
+_02206598: .word MOD04_021EF06C
- arm_func_start FUN_0220659C
-FUN_0220659C: ; 0x0220659C
+ arm_func_start MOD04_0220659C
+MOD04_0220659C: ; 0x0220659C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
ldr r0, [r6, #4]
mov r5, r1
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r4, [r0]
ldr r3, [r6, #0x494]
ldr ip, [r6, #0x488]
@@ -52705,14 +52705,14 @@ FUN_0220659C: ; 0x0220659C
blx ip
ldr r0, [r6, #4]
mov r1, r5
- bl FUN_021EED84
+ bl MOD04_021EED84
mov r0, r6
mov r1, r4
- bl FUN_022065E8
+ bl MOD04_022065E8
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_022065E8
-FUN_022065E8: ; 0x022065E8
+ arm_func_start MOD04_022065E8
+MOD04_022065E8: ; 0x022065E8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -52722,25 +52722,25 @@ FUN_022065E8: ; 0x022065E8
bne _02206614
mov r0, r4
mov r1, #0
- bl FUN_02203890
+ bl MOD04_02203890
b _0220661C
_02206614:
mov r0, r4
- bl FUN_02203890
+ bl MOD04_02203890
_0220661C:
str r4, [r5, #0x5d0]
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
- arm_func_start FUN_02206628
-FUN_02206628: ; 0x02206628
+ arm_func_start MOD04_02206628
+MOD04_02206628: ; 0x02206628
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
mov sb, r0
ldr r0, [sb, #4]
mov r8, r1
mov r7, r2
- bl FUN_021EF06C
+ bl MOD04_021EF06C
mov r6, r0
cmp r6, #0
mov r4, #0
@@ -52748,14 +52748,14 @@ FUN_02206628: ; 0x02206628
_02206654:
ldr r0, [sb, #4]
mov r1, r4
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r5, [r0]
mov r0, r5
- bl FUN_02203908
+ bl MOD04_02203908
cmp r8, r0
bne _0220668C
mov r0, r5
- bl FUN_022038DC
+ bl MOD04_022038DC
cmp r7, r0
addeq sp, sp, #4
moveq r0, r4
@@ -52769,14 +52769,14 @@ _02206698:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- arm_func_start FUN_022066A4
-FUN_022066A4: ; 0x022066A4
+ arm_func_start MOD04_022066A4
+MOD04_022066A4: ; 0x022066A4
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r7, r0
ldr r0, [r7, #4]
mov r6, r1
- bl FUN_021EF06C
+ bl MOD04_021EF06C
mov r5, r0
cmp r5, #0
mov r4, #0
@@ -52784,7 +52784,7 @@ FUN_022066A4: ; 0x022066A4
_022066CC:
ldr r0, [r7, #4]
mov r1, r4
- bl FUN_021EEFFC
+ bl MOD04_021EEFFC
ldr r0, [r0]
cmp r6, r0
addeq sp, sp, #4
@@ -52798,14 +52798,14 @@ _022066F8:
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
- arm_func_start FUN_02206704
-FUN_02206704: ; 0x02206704
+ arm_func_start MOD04_02206704
+MOD04_02206704: ; 0x02206704
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #4]
add r1, sp, #0xc
- bl FUN_021EEFA8
+ bl MOD04_021EEFA8
ldr r2, [sp, #0xc]
ldr r3, [r4, #0x494]
ldr ip, [r4, #0x488]
@@ -52816,8 +52816,8 @@ FUN_02206704: ; 0x02206704
add sp, sp, #0x10
bx lr
- arm_func_start FUN_02206740
-FUN_02206740: ; 0x02206740
+ arm_func_start MOD04_02206740
+MOD04_02206740: ; 0x02206740
cmp r3, #3
addls pc, pc, r3, lsl #2
b _0220677C
@@ -52827,38 +52827,38 @@ _0220674C: ; jump table
b _0220676C ; case 2
b _02206774 ; case 3
_0220675C:
- ldr r3, _022067A0 ; =FUN_02206978
+ ldr r3, _022067A0 ; =MOD04_02206978
b _02206780
_02206764:
- ldr r3, _022067A4 ; =FUN_02206898
+ ldr r3, _022067A4 ; =MOD04_02206898
b _02206780
_0220676C:
- ldr r3, _022067A8 ; =FUN_02206828
+ ldr r3, _022067A8 ; =MOD04_02206828
b _02206780
_02206774:
- ldr r3, _022067AC ; =FUN_022067B8
+ ldr r3, _022067AC ; =MOD04_022067B8
b _02206780
_0220677C:
- ldr r3, _022067AC ; =FUN_022067B8
+ ldr r3, _022067AC ; =MOD04_022067B8
_02206780:
str r2, [r0, #0x498]
str r1, [r0, #0x49c]
ldr r2, _022067B0 ; =0x02211740
- ldr ip, _022067B4 ; =FUN_021EED08
+ ldr ip, _022067B4 ; =MOD04_021EED08
str r0, [r2]
mov r1, r3
ldr r0, [r0, #4]
bx ip
.align 2, 0
-_022067A0: .word FUN_02206978
-_022067A4: .word FUN_02206898
-_022067A8: .word FUN_02206828
-_022067AC: .word FUN_022067B8
+_022067A0: .word MOD04_02206978
+_022067A4: .word MOD04_02206898
+_022067A8: .word MOD04_02206828
+_022067AC: .word MOD04_022067B8
_022067B0: .word 0x02211740
-_022067B4: .word FUN_021EED08
+_022067B4: .word MOD04_021EED08
- arm_func_start FUN_022067B8
-FUN_022067B8: ; 0x022067B8
+ arm_func_start MOD04_022067B8
+MOD04_022067B8: ; 0x022067B8
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r2, _02206820 ; =0x02211740
@@ -52867,14 +52867,14 @@ FUN_022067B8: ; 0x022067B8
ldr r0, [r0]
ldr r1, [r1, #0x498]
ldr r2, _02206824 ; =0x0220F878
- bl FUN_022039E0
+ bl MOD04_022039E0
ldr r1, _02206820 ; =0x02211740
mov r4, r0
ldr r1, [r1]
ldr r0, [r5]
ldr r1, [r1, #0x498]
ldr r2, _02206824 ; =0x0220F878
- bl FUN_022039E0
+ bl MOD04_022039E0
mov r1, r0
mov r0, r4
bl strnicmp
@@ -52889,8 +52889,8 @@ FUN_022067B8: ; 0x022067B8
_02206820: .word 0x02211740
_02206824: .word 0x0220F878
- arm_func_start FUN_02206828
-FUN_02206828: ; 0x02206828
+ arm_func_start MOD04_02206828
+MOD04_02206828: ; 0x02206828
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r2, _02206890 ; =0x02211740
@@ -52899,14 +52899,14 @@ FUN_02206828: ; 0x02206828
ldr r0, [r0]
ldr r1, [r1, #0x498]
ldr r2, _02206894 ; =0x0220F878
- bl FUN_022039E0
+ bl MOD04_022039E0
ldr r1, _02206890 ; =0x02211740
mov r4, r0
ldr r1, [r1]
ldr r0, [r5]
ldr r1, [r1, #0x498]
ldr r2, _02206894 ; =0x0220F878
- bl FUN_022039E0
+ bl MOD04_022039E0
mov r1, r0
mov r0, r4
bl strcmp
@@ -52921,8 +52921,8 @@ FUN_02206828: ; 0x02206828
_02206890: .word 0x02211740
_02206894: .word 0x0220F878
- arm_func_start FUN_02206898
-FUN_02206898: ; 0x02206898
+ arm_func_start MOD04_02206898
+MOD04_02206898: ; 0x02206898
stmdb sp!, {r4, r5, r6, lr}
ldr r3, _02206974 ; =0x02211740
mov r2, #0
@@ -52931,7 +52931,7 @@ FUN_02206898: ; 0x02206898
ldr r0, [r0]
ldr r1, [r3, #0x498]
mov r3, r2
- bl FUN_02203910
+ bl MOD04_02203910
ldr r3, _02206974 ; =0x02211740
mov r2, #0
mov r4, r0
@@ -52940,7 +52940,7 @@ FUN_02206898: ; 0x02206898
ldr r1, [r0, #0x498]
mov r0, r5
mov r3, r2
- bl FUN_02203910
+ bl MOD04_02203910
mov r2, r0
mov r3, r1
mov r0, r4
@@ -52982,8 +52982,8 @@ _0220692C:
.align 2, 0
_02206974: .word 0x02211740
- arm_func_start FUN_02206978
-FUN_02206978: ; 0x02206978
+ arm_func_start MOD04_02206978
+MOD04_02206978: ; 0x02206978
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r2, _022069D8 ; =0x02211740
@@ -52992,14 +52992,14 @@ FUN_02206978: ; 0x02206978
ldr r5, [r1]
ldr r1, [r2, #0x498]
mov r2, #0
- bl FUN_0220394C
+ bl MOD04_0220394C
ldr r1, _022069D8 ; =0x02211740
mov r4, r0
ldr r1, [r1]
mov r0, r5
ldr r1, [r1, #0x498]
mov r2, #0
- bl FUN_0220394C
+ bl MOD04_0220394C
ldr r1, _022069D8 ; =0x02211740
sub r0, r4, r0
ldr r1, [r1]
@@ -53011,40 +53011,40 @@ FUN_02206978: ; 0x02206978
.align 2, 0
_022069D8: .word 0x02211740
- arm_func_start FUN_022069DC
-FUN_022069DC: ; 0x022069DC
+ arm_func_start MOD04_022069DC
+MOD04_022069DC: ; 0x022069DC
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r5, r1
mov r4, r2
- bl FUN_02208364
- bl FUN_02206B14
+ bl MOD04_02208364
+ bl MOD04_02206B14
mov r1, r6
mov r0, #0
- bl FUN_02206A4C
+ bl MOD04_02206A4C
cmp r0, #0
beq _02206A3C
mov r1, r5
mov r0, #1
- bl FUN_02206A4C
+ bl MOD04_02206A4C
cmp r0, #0
beq _02206A3C
mov r1, r4
mov r0, #2
- bl FUN_02206A4C
+ bl MOD04_02206A4C
cmp r0, #0
beq _02206A3C
- bl FUN_02208350
+ bl MOD04_02208350
mov r0, #1
ldmia sp!, {r4, r5, r6, pc}
_02206A3C:
- bl FUN_02206B14
- bl FUN_02208350
+ bl MOD04_02206B14
+ bl MOD04_02208350
mov r0, #0
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_02206A4C
-FUN_02206A4C: ; 0x02206A4C
+ arm_func_start MOD04_02206A4C
+MOD04_02206A4C: ; 0x02206A4C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r1
ldrsb r1, [r6]
@@ -53052,7 +53052,7 @@ FUN_02206A4C: ; 0x02206A4C
cmp r1, #0
beq _02206B00
mov r0, r6
- bl FUN_022083D4
+ bl MOD04_022083D4
cmp r0, #0xa
ldrgt r0, _02206B08 ; =0x02211760
movgt r1, #7
@@ -53060,7 +53060,7 @@ FUN_02206A4C: ; 0x02206A4C
movgt r0, #0
ldmgtia sp!, {r4, r5, r6, pc}
mov r0, r6
- bl FUN_022083D4
+ bl MOD04_022083D4
mov r5, r0
cmp r5, #0xa
ldrgt r0, _02206B08 ; =0x02211760
@@ -53068,7 +53068,7 @@ FUN_02206A4C: ; 0x02206A4C
strgt r1, [r0]
movgt r0, #0
ldmgtia sp!, {r4, r5, r6, pc}
- bl FUN_02206DA4
+ bl MOD04_02206DA4
ldr r1, _02206B0C ; =0x02211750
add r0, r0, #1
ldr r2, [r1]
@@ -53085,7 +53085,7 @@ FUN_02206A4C: ; 0x02206A4C
ldmeqia sp!, {r4, r5, r6, pc}
mov r1, r6
mov r2, r5
- bl FUN_02206C98
+ bl MOD04_02206C98
ldr r1, _02206B10 ; =0x02211778
mov r2, #0
ldr r1, [r1, r4, lsl #2]
@@ -53098,8 +53098,8 @@ _02206B08: .word 0x02211760
_02206B0C: .word 0x02211750
_02206B10: .word 0x02211778
- arm_func_start FUN_02206B14
-FUN_02206B14: ; 0x02206B14
+ arm_func_start MOD04_02206B14
+MOD04_02206B14: ; 0x02206B14
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r7, #0
@@ -53123,8 +53123,8 @@ _02206B44:
_02206B58: .word 0x02211764
_02206B5C: .word 0x02211778
- arm_func_start FUN_02206B60
-FUN_02206B60: ; 0x02206B60
+ arm_func_start MOD04_02206B60
+MOD04_02206B60: ; 0x02206B60
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov sl, r0
@@ -53133,7 +53133,7 @@ FUN_02206B60: ; 0x02206B60
mov r2, #4
mov r5, #0
mov sb, r1
- bl FUN_02206E28
+ bl MOD04_02206E28
mov r7, r5
mov r6, r0
mov r4, r7
@@ -53145,13 +53145,13 @@ _02206B9C:
strb r4, [sp, #8]
strb r4, [sp, #9]
strb r4, [sp, #0xa]
- bl FUN_02206DD0
+ bl MOD04_02206DD0
movs r7, r0
bmi _02206C20
ldrb r0, [sp, #5]
mov r1, r7, lsl #2
strb r1, [sp, #8]
- bl FUN_02206DD0
+ bl MOD04_02206DD0
movs r7, r0
bmi _02206C20
ldrsb r2, [sp, #8]
@@ -53160,7 +53160,7 @@ _02206B9C:
strb r1, [sp, #9]
orr r1, r2, r7, asr #4
strb r1, [sp, #8]
- bl FUN_02206DD0
+ bl MOD04_02206DD0
movs r7, r0
bmi _02206C20
ldrsb r2, [sp, #9]
@@ -53169,7 +53169,7 @@ _02206B9C:
strb r1, [sp, #0xa]
orr r1, r2, r7, asr #2
strb r1, [sp, #9]
- bl FUN_02206DD0
+ bl MOD04_02206DD0
movs r7, r0
ldrplsb r0, [sp, #0xa]
orrpl r0, r0, r7
@@ -53196,7 +53196,7 @@ _02206C48:
add r0, sp, #4
mov r1, sb
mov r2, fp
- bl FUN_02206E28
+ bl MOD04_02206E28
mov r6, r0
_02206C74:
cmp r6, #0
@@ -53210,8 +53210,8 @@ _02206C84:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_02206C98
-FUN_02206C98: ; 0x02206C98
+ arm_func_start MOD04_02206C98
+MOD04_02206C98: ; 0x02206C98
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
mov r8, r2
@@ -53222,7 +53222,7 @@ FUN_02206C98: ; 0x02206C98
add r0, sp, #0
mov r1, sb
mov r7, #0
- bl FUN_02206E28
+ bl MOD04_02206E28
cmp r0, #0
ble _02206D8C
ldr r5, _02206DA0 ; =0x0220BCE8
@@ -53271,7 +53271,7 @@ _02206CDC:
movle r2, r8
add r0, sp, #0
mov r1, sb
- bl FUN_02206E28
+ bl MOD04_02206E28
cmp r0, #0
bgt _02206CDC
_02206D8C:
@@ -53283,8 +53283,8 @@ _02206D8C:
.align 2, 0
_02206DA0: .word 0x0220BCE8
- arm_func_start FUN_02206DA4
-FUN_02206DA4: ; 0x02206DA4
+ arm_func_start MOD04_02206DA4
+MOD04_02206DA4: ; 0x02206DA4
ldr r1, _02206DBC ; =0x55555556
add r2, r0, #2
smull r0, r3, r1, r2
@@ -53294,15 +53294,15 @@ FUN_02206DA4: ; 0x02206DA4
.align 2, 0
_02206DBC: .word 0x55555556
- arm_func_start FUN_02206DC0
-FUN_02206DC0: ; 0x02206DC0
+ arm_func_start MOD04_02206DC0
+MOD04_02206DC0: ; 0x02206DC0
mov r1, r0, asr #2
mov r0, #3
mul r0, r1, r0
bx lr
- arm_func_start FUN_02206DD0
-FUN_02206DD0: ; 0x02206DD0
+ arm_func_start MOD04_02206DD0
+MOD04_02206DD0: ; 0x02206DD0
cmp r0, #0x41
blo _02206DE4
cmp r0, #0x5a
@@ -53329,8 +53329,8 @@ _02206E0C:
mvnne r0, #0
bx lr
- arm_func_start FUN_02206E28
-FUN_02206E28: ; 0x02206E28
+ arm_func_start MOD04_02206E28
+MOD04_02206E28: ; 0x02206E28
stmdb sp!, {r4, lr}
mov lr, #0
mov r4, lr
@@ -53351,29 +53351,29 @@ _02206E64:
mov r0, lr
ldmia sp!, {r4, pc}
- arm_func_start FUN_02206E6C
-FUN_02206E6C: ; 0x02206E6C
+ arm_func_start MOD04_02206E6C
+MOD04_02206E6C: ; 0x02206E6C
ldr r1, _02206E8C ; =0x02211744
ldr r2, _02206E90 ; =0x02211758
str r0, [r1]
mov r1, #0
- ldr ip, _02206E94 ; =FUN_02208570
- ldr r0, _02206E98 ; =FUN_02206E9C
+ ldr ip, _02206E94 ; =MOD04_02208570
+ ldr r0, _02206E98 ; =MOD04_02206E9C
str r1, [r2]
bx ip
.align 2, 0
_02206E8C: .word 0x02211744
_02206E90: .word 0x02211758
-_02206E94: .word FUN_02208570
-_02206E98: .word FUN_02206E9C
+_02206E94: .word MOD04_02208570
+_02206E98: .word MOD04_02206E9C
- arm_func_start FUN_02206E9C
-FUN_02206E9C: ; 0x02206E9C
+ arm_func_start MOD04_02206E9C
+MOD04_02206E9C: ; 0x02206E9C
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_02206B14
- bl FUN_02208378
- bl FUN_0220831C
+ bl MOD04_02206B14
+ bl MOD04_02208378
+ bl MOD04_0220831C
ldr r0, _02206EEC ; =0x0221174C
ldr r1, _02206EF0 ; =0x02211764
ldr r0, [r0]
@@ -53395,8 +53395,8 @@ _02206EF0: .word 0x02211764
_02206EF4: .word 0x02211754
_02206EF8: .word 0x02211744
- arm_func_start FUN_02206EFC
-FUN_02206EFC: ; 0x02206EFC
+ arm_func_start MOD04_02206EFC
+MOD04_02206EFC: ; 0x02206EFC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
mov r7, r0
@@ -53427,17 +53427,17 @@ FUN_02206EFC: ; 0x02206EFC
str sb, [ip]
str r1, [sl]
str r1, [fp]
- bl FUN_02208228
+ bl MOD04_02208228
ldr r0, _022070F8 ; =0x022117CC
- bl FUN_02207194
+ bl MOD04_02207194
mov r0, r5
- bl FUN_0220710C
+ bl MOD04_0220710C
mov r1, fp
cmp r0, #0
str r0, [r1]
beq _02207080
mov r0, r4
- bl FUN_0220710C
+ bl MOD04_0220710C
mov r1, sl
cmp r0, #0
str r0, [r1]
@@ -53445,31 +53445,31 @@ FUN_02206EFC: ; 0x02206EFC
ldr r1, [sp, #0x28]
ldr r0, _022070FC ; =0x0221176C
mov r2, #4
- bl FUN_02206C98
+ bl MOD04_02206C98
ldr r1, _022070FC ; =0x0221176C
mov r2, #0
strb r2, [r1, r0]
ldr r1, [sp, #0x2c]
ldr r0, _02207100 ; =0x022117B0
mov r2, #0x10
- bl FUN_02206C98
+ bl MOD04_02206C98
ldr r1, _02207100 ; =0x022117B0
mov r2, #0
strb r2, [r1, r0]
- bl FUN_02208320
+ bl MOD04_02208320
cmp r0, #0
beq _02207040
- bl FUN_0220837C
+ bl MOD04_0220837C
cmp r0, #0
beq _02207040
mov r0, r7
mov r1, r6
mov r2, #0xa
- bl FUN_022085B8
+ bl MOD04_022085B8
cmp r0, #0
beq _0220703C
ldr r0, _02207104 ; =0x02211798
- bl FUN_0220724C
+ bl MOD04_0220724C
ldr r2, _022070E4 ; =0x02211748
ldr r1, _02207108 ; =0x02211758
str r0, [r2]
@@ -53478,7 +53478,7 @@ FUN_02206EFC: ; 0x02206EFC
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
_0220703C:
- bl FUN_02208378
+ bl MOD04_02208378
_02207040:
ldr r0, _022070E8 ; =0x0221174C
ldr r1, _022070D8 ; =0x02211764
@@ -53536,11 +53536,11 @@ _02207100: .word 0x022117B0
_02207104: .word 0x02211798
_02207108: .word 0x02211758
- arm_func_start FUN_0220710C
-FUN_0220710C: ; 0x0220710C
+ arm_func_start MOD04_0220710C
+MOD04_0220710C: ; 0x0220710C
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
- bl FUN_022083D4
+ bl MOD04_022083D4
ldr r1, _02207154 ; =0x02211750
mov r4, r0
ldr r2, [r1]
@@ -53551,7 +53551,7 @@ FUN_0220710C: ; 0x0220710C
beq _0220714C
mov r1, r6
mov r2, r4
- bl FUN_0220839C
+ bl MOD04_0220839C
mov r0, #0
strb r0, [r5, r4]
_0220714C:
@@ -53560,28 +53560,28 @@ _0220714C:
.align 2, 0
_02207154: .word 0x02211750
- arm_func_start FUN_02207158
-FUN_02207158: ; 0x02207158
+ arm_func_start MOD04_02207158
+MOD04_02207158: ; 0x02207158
stmdb sp!, {r4, lr}
- bl FUN_022082D4
+ bl MOD04_022082D4
cmp r0, #0
bne _02207184
- bl FUN_02208364
+ bl MOD04_02208364
ldr r0, _02207190 ; =0x02211768
ldr r4, [r0]
- bl FUN_02208350
+ bl MOD04_02208350
mov r0, r4
- bl FUN_02209218
+ bl MOD04_02209218
ldmia sp!, {r4, pc}
_02207184:
- bl FUN_022082A0
+ bl MOD04_022082A0
mov r0, #0
ldmia sp!, {r4, pc}
.align 2, 0
_02207190: .word 0x02211768
- arm_func_start FUN_02207194
-FUN_02207194: ; 0x02207194
+ arm_func_start MOD04_02207194
+MOD04_02207194: ; 0x02207194
stmdb sp!, {lr}
sub sp, sp, #4
ldr r2, _022071BC ; =0x0220F9B0
@@ -53595,15 +53595,15 @@ FUN_02207194: ; 0x02207194
.align 2, 0
_022071BC: .word 0x0220F9B0
- arm_func_start FUN_022071C0
-FUN_022071C0: ; 0x022071C0
+ arm_func_start MOD04_022071C0
+MOD04_022071C0: ; 0x022071C0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0x24
mov r5, r0
mov r4, r1
add r0, sp, #0
mov r1, #0x14
- bl FUN_022083B4
+ bl MOD04_022083B4
add r0, sp, #0
bl FUN_02095EC8
ldr r1, [sp]
@@ -53615,7 +53615,7 @@ FUN_022071C0: ; 0x022071C0
ldmeqia sp!, {r4, r5, pc}
add r0, sp, #0x14
mov r3, #0xd
- bl FUN_0220844C
+ bl MOD04_0220844C
cmp r0, #0
addlt sp, sp, #0x24
movlt r0, #0
@@ -53623,19 +53623,19 @@ FUN_022071C0: ; 0x022071C0
add r1, sp, #0x14
mov r0, r4
mov r2, #0xd
- bl FUN_02206C98
+ bl MOD04_02206C98
ldr r1, _02207248 ; =0x027FFE0C
mov r0, r5
mov r2, #4
- bl FUN_02206C98
+ bl MOD04_02206C98
mov r0, #1
add sp, sp, #0x24
ldmia sp!, {r4, r5, pc}
.align 2, 0
_02207248: .word 0x027FFE0C
- arm_func_start FUN_0220724C
-FUN_0220724C: ; 0x0220724C
+ arm_func_start MOD04_0220724C
+MOD04_0220724C: ; 0x0220724C
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr ip, _02207324 ; =0x0220BD2C
@@ -53652,7 +53652,7 @@ _02207264:
ldrb r1, [ip]
ldr r0, _02207328 ; =0x022117F0
strb r1, [r3]
- bl FUN_021DD9DC
+ bl MOD04_021DD9DC
cmp r0, #0
beq _02207318
ldr r0, _02207328 ; =0x022117F0
@@ -53662,7 +53662,7 @@ _02207264:
cmp r1, #0xa
blt _022072B8
add r0, sp, #0
- bl FUN_02208558
+ bl MOD04_02208558
b _022072CC
_022072B8:
cmp r1, #0
@@ -53682,12 +53682,12 @@ _022072CC:
add r0, sp, #4
mov r2, #9
strb r3, [sp, #3]
- bl FUN_0220839C
+ bl MOD04_0220839C
_022072FC:
add r1, sp, #0
mov r0, r4
mov r2, #0xd
- bl FUN_02206C98
+ bl MOD04_02206C98
add sp, sp, #0x10
mov r0, #1
ldmia sp!, {r4, pc}
@@ -53700,15 +53700,15 @@ _02207324: .word 0x0220BD2C
_02207328: .word 0x022117F0
_0220732C: .word 0x022117F8
- arm_func_start FUN_02207330
-FUN_02207330: ; 0x02207330
- ldr ip, _02207338 ; =FUN_0220B55C
+ arm_func_start MOD04_02207330
+MOD04_02207330: ; 0x02207330
+ ldr ip, _02207338 ; =MOD04_0220B55C
bx ip
.align 2, 0
-_02207338: .word FUN_0220B55C
+_02207338: .word MOD04_0220B55C
- arm_func_start FUN_0220733C
-FUN_0220733C: ; 0x0220733C
+ arm_func_start MOD04_0220733C
+MOD04_0220733C: ; 0x0220733C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r8, r0
@@ -53721,7 +53721,7 @@ FUN_0220733C: ; 0x0220733C
addlo sp, sp, #0x10
movlo r0, #0
ldmloia sp!, {r4, r5, r6, r7, r8, pc}
- bl FUN_022083D4
+ bl MOD04_022083D4
mov r5, r0
cmp r5, #0x20
ldrgt r0, _022074D8 ; =0x02211760
@@ -53733,7 +53733,7 @@ FUN_0220733C: ; 0x0220733C
cmp r5, #0
movle r6, #0
ble _022073A4
- bl FUN_02206DA4
+ bl MOD04_02206DA4
mov r6, r0
_022073A4:
ldr r1, _022074DC ; =0x02211750
@@ -53754,7 +53754,7 @@ _022073A4:
add r1, sp, #8
mov r3, r7
str ip, [sp]
- bl FUN_0220788C
+ bl MOD04_0220788C
cmp r0, #0
bne _02207414
ldr r1, _022074E4 ; =0x02211764
@@ -53770,13 +53770,13 @@ _02207414:
mov r0, r4
mov r1, r8
mov r2, r5
- bl FUN_02206C98
+ bl MOD04_02206C98
mov r1, #0
strb r1, [r4, r0]
ldr r0, [sp, #8]
ldr r1, _022074E8 ; =0x0220F9CC
mov r2, r4
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _022074A4
_0220744C:
@@ -53790,7 +53790,7 @@ _0220744C:
str r1, [r0, #0x14]
ldr r0, [sp, #4]
ldr r1, [sp, #8]
- bl FUN_0220781C
+ bl MOD04_0220781C
cmp r0, #0
addne sp, sp, #0x10
movne r0, #1
@@ -53805,7 +53805,7 @@ _0220744C:
_022074A4:
ldr r0, [sp, #4]
ldr r1, [sp, #8]
- bl FUN_02207BB4
+ bl MOD04_02207BB4
ldr r1, _022074E4 ; =0x02211764
mov r0, r4
ldr r1, [r1]
@@ -53823,8 +53823,8 @@ _022074E0: .word 0x0220BD54
_022074E4: .word 0x02211764
_022074E8: .word 0x0220F9CC
- arm_func_start FUN_022074EC
-FUN_022074EC: ; 0x022074EC
+ arm_func_start MOD04_022074EC
+MOD04_022074EC: ; 0x022074EC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x18
mov r7, r2
@@ -53847,9 +53847,9 @@ FUN_022074EC: ; 0x022074EC
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
add r0, sp, #0xc
mov r1, r4
- bl FUN_02208558
+ bl MOD04_02208558
mov sb, r0
- bl FUN_02206DA4
+ bl MOD04_02206DA4
ldr r1, _02207790 ; =0x02211750
add r0, r0, #1
ldr r2, [r1]
@@ -53870,14 +53870,14 @@ FUN_022074EC: ; 0x022074EC
_02207594:
add r1, sp, #0xc
mov r2, sb
- bl FUN_02206C98
+ bl MOD04_02206C98
mov r1, #0
strb r1, [r4, r0]
add r0, sp, #0xc
mov r1, r7
- bl FUN_02208558
+ bl MOD04_02208558
mov sb, r0
- bl FUN_02206DA4
+ bl MOD04_02206DA4
ldr r1, _02207790 ; =0x02211750
add r0, r0, #1
ldr r2, [r1]
@@ -53902,7 +53902,7 @@ _02207594:
_02207610:
add r1, sp, #0xc
mov r2, sb
- bl FUN_02206C98
+ bl MOD04_02206C98
mov r1, #0
strb r1, [sl, r0]
ldr r2, _0220779C ; =0x0220BD3C
@@ -53910,7 +53910,7 @@ _02207610:
add r1, sp, #8
mov r3, r5
str r6, [sp]
- bl FUN_0220788C
+ bl MOD04_0220788C
cmp r0, #0
bne _02207680
ldr r1, _02207798 ; =0x02211764
@@ -53932,13 +53932,13 @@ _02207680:
ldr r0, [sp, #8]
ldr r1, _022077A0 ; =0x0220F9D8
mov r2, r4
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _0220773C
ldr r0, [sp, #8]
ldr r1, _022077A4 ; =0x0220F9E0
mov r2, sl
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _0220773C
ldr r0, [sp, #4]
@@ -53956,7 +53956,7 @@ _02207680:
str r5, [r0, #0x18]
ldr r0, [sp, #4]
ldr r1, [sp, #8]
- bl FUN_0220781C
+ bl MOD04_0220781C
cmp r0, #0
addne sp, sp, #0x18
movne r0, #1
@@ -53991,7 +53991,7 @@ _0220773C:
blx r1
ldr r0, [sp, #4]
ldr r1, [sp, #8]
- bl FUN_02207BB4
+ bl MOD04_02207BB4
ldr r0, _02207794 ; =0x02211760
mov r1, #1
str r1, [r0]
@@ -54006,8 +54006,8 @@ _0220779C: .word 0x0220BD3C
_022077A0: .word 0x0220F9D8
_022077A4: .word 0x0220F9E0
- arm_func_start FUN_022077A8
-FUN_022077A8: ; 0x022077A8
+ arm_func_start MOD04_022077A8
+MOD04_022077A8: ; 0x022077A8
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r2, _02207814 ; =0x0220BD48
@@ -54017,7 +54017,7 @@ FUN_022077A8: ; 0x022077A8
add r0, sp, #4
add r1, sp, #8
str ip, [sp]
- bl FUN_0220788C
+ bl MOD04_0220788C
cmp r0, #0
addeq sp, sp, #0x10
moveq r0, #0
@@ -54029,7 +54029,7 @@ FUN_022077A8: ; 0x022077A8
str r4, [r0, #0x10]
ldr r0, [sp, #4]
ldr r1, [sp, #8]
- bl FUN_0220781C
+ bl MOD04_0220781C
cmp r0, #0
movne r0, #1
moveq r0, #0
@@ -54039,20 +54039,20 @@ FUN_022077A8: ; 0x022077A8
_02207814: .word 0x0220BD48
_02207818: .word 0x02211850
- arm_func_start FUN_0220781C
-FUN_0220781C: ; 0x0220781C
+ arm_func_start MOD04_0220781C
+MOD04_0220781C: ; 0x0220781C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r1
mov r5, r0
- bl FUN_02208364
+ bl MOD04_02208364
mov r0, r4
- bl FUN_022092A0
+ bl MOD04_022092A0
str r0, [r5]
ldr r1, [r5]
ldr r0, _02207884 ; =0x02211768
str r1, [r0]
- bl FUN_02208350
+ bl MOD04_02208350
ldr r0, [r5]
cmp r0, #0
addge sp, sp, #4
@@ -54060,7 +54060,7 @@ FUN_0220781C: ; 0x0220781C
ldmgeia sp!, {r4, r5, pc}
mov r0, r5
mov r1, r4
- bl FUN_02207BB4
+ bl MOD04_02207BB4
ldr r0, _02207888 ; =0x02211760
mov r1, #3
str r1, [r0]
@@ -54071,8 +54071,8 @@ FUN_0220781C: ; 0x0220781C
_02207884: .word 0x02211768
_02207888: .word 0x02211760
- arm_func_start FUN_0220788C
-FUN_0220788C: ; 0x0220788C
+ arm_func_start MOD04_0220788C
+MOD04_0220788C: ; 0x0220788C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #8
mov r8, r0
@@ -54081,7 +54081,7 @@ FUN_0220788C: ; 0x0220788C
ldr r1, _02207B44 ; =0x02211838
mov r6, r2
mov r4, r3
- bl FUN_022071C0
+ bl MOD04_022071C0
cmp r0, #0
ldreq r0, _02207B48 ; =0x02211760
moveq r1, #8
@@ -54106,7 +54106,7 @@ FUN_0220788C: ; 0x0220788C
ldr r0, [r0]
str r0, [r5, #8]
str r1, [r5, #0xc]
- bl FUN_022082D4
+ bl MOD04_022082D4
cmp r0, #0
bne _02207944
ldr r1, _02207B54 ; =0x02211764
@@ -54120,7 +54120,7 @@ FUN_0220788C: ; 0x0220788C
mov r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
_02207944:
- ldr r1, _02207B58 ; =FUN_02207BE0
+ ldr r1, _02207B58 ; =MOD04_02207BE0
ldr r0, _02207B5C ; =0x02211754
str r1, [sp]
str r5, [sp, #4]
@@ -54128,10 +54128,10 @@ _02207944:
ldr r3, [sp, #0x20]
mov r2, r4
mov r1, #1
- bl FUN_02209438
+ bl MOD04_02209438
movs r4, r0
bne _0220799C
- bl FUN_022082A0
+ bl MOD04_022082A0
ldr r1, _02207B54 ; =0x02211764
mov r0, r5
ldr r1, [r1]
@@ -54147,56 +54147,56 @@ _0220799C:
str r5, [r8]
mov r2, #1
str r4, [r7]
- bl FUN_022086D4
+ bl MOD04_022086D4
cmp r0, #0
beq _02207B1C
ldr r1, _02207B64 ; =0x0220F9E4
ldr r2, _02207B68 ; =0x022117CC
mov r0, r4
- bl FUN_02208764
+ bl MOD04_02208764
cmp r0, #0
beq _02207B1C
ldr r1, _02207B6C ; =0x0220F9F0
ldr r2, _02207B70 ; =0x0221176C
mov r0, r4
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _02207B1C
ldr r1, _02207B74 ; =0x0220F9F8
ldr r2, _02207B40 ; =0x0221182C
mov r0, r4
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _02207B1C
ldr r1, _02207B78 ; =0x0220FA04
ldr r2, _02207B7C ; =0x022117B0
mov r0, r4
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _02207B1C
ldr r0, _02207B80 ; =0x0221174C
ldr r1, _02207B84 ; =0x0220FA0C
ldr r2, [r0]
mov r0, r4
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _02207B1C
ldr r1, _02207B88 ; =0x0220FA14
ldr r2, _02207B44 ; =0x02211838
mov r0, r4
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _02207B1C
ldr r1, _02207B8C ; =0x0220FA1C
ldr r2, _02207B90 ; =0x02211784
mov r0, r4
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _02207B1C
ldr r1, _02207B94 ; =0x0220FA24
mov r0, r4
mov r2, r6
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _02207B1C
ldr r0, _02207B98 ; =0x02211778
@@ -54205,7 +54205,7 @@ _0220799C:
beq _02207AA0
ldr r1, _02207B9C ; =0x0220FA2C
mov r0, r4
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _02207B1C
_02207AA0:
@@ -54215,7 +54215,7 @@ _02207AA0:
beq _02207AC4
ldr r1, _02207BA0 ; =0x0220FA34
mov r0, r4
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _02207B1C
_02207AC4:
@@ -54225,7 +54225,7 @@ _02207AC4:
beq _02207AE8
ldr r1, _02207BA4 ; =0x0220FA3C
mov r0, r4
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _02207B1C
_02207AE8:
@@ -54236,7 +54236,7 @@ _02207AE8:
ldr r1, _02207BAC ; =0x0220FA44
ldr r2, _02207BB0 ; =0x02211798
mov r0, r4
- bl FUN_022086F0
+ bl MOD04_022086F0
cmp r0, #0
beq _02207B1C
_02207B10:
@@ -54246,7 +54246,7 @@ _02207B10:
_02207B1C:
mov r0, r5
mov r1, r4
- bl FUN_02207BB4
+ bl MOD04_02207BB4
ldr r0, _02207B48 ; =0x02211760
mov r1, #1
str r1, [r0]
@@ -54260,7 +54260,7 @@ _02207B48: .word 0x02211760
_02207B4C: .word 0x02211750
_02207B50: .word 0x0221175C
_02207B54: .word 0x02211764
-_02207B58: .word FUN_02207BE0
+_02207B58: .word MOD04_02207BE0
_02207B5C: .word 0x02211754
_02207B60: .word 0x0220F9C8
_02207B64: .word 0x0220F9E4
@@ -54284,13 +54284,13 @@ _02207BA8: .word 0x02211748
_02207BAC: .word 0x0220FA44
_02207BB0: .word 0x02211798
- arm_func_start FUN_02207BB4
-FUN_02207BB4: ; 0x02207BB4
+ arm_func_start MOD04_02207BB4
+MOD04_02207BB4: ; 0x02207BB4
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, r1
- bl FUN_02209410
- bl FUN_022082A0
+ bl MOD04_02209410
+ bl MOD04_022082A0
ldr r1, _02207BDC ; =0x02211764
mov r0, r4
ldr r1, [r1]
@@ -54299,8 +54299,8 @@ FUN_02207BB4: ; 0x02207BB4
.align 2, 0
_02207BDC: .word 0x02211764
- arm_func_start FUN_02207BE0
-FUN_02207BE0: ; 0x02207BE0
+ arm_func_start MOD04_02207BE0
+MOD04_02207BE0: ; 0x02207BE0
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x1c
mov sl, r2
@@ -54323,20 +54323,20 @@ _02207C28:
ldr r1, _02207F04 ; =0x0220FA4C
ldr r0, [sp]
add r2, sp, #0x10
- bl FUN_02209A98
+ bl MOD04_02209A98
cmp r0, #3
movne r4, #3
bne _02207E1C
ldr r0, [sp, #0x10]
mov r1, #3
- bl FUN_02208564
+ bl MOD04_02208564
ldr r1, _02207F08 ; =0x0000012E
cmp r0, r1
bne _02207D80
ldr r0, [sp]
add r1, sp, #0x14
mov sb, #0
- bl FUN_02209A68
+ bl MOD04_02209A68
movs r8, r0
movmi r4, #3
bmi _02207E1C
@@ -54368,7 +54368,7 @@ _02207CBC:
add r0, r1, r3
ldr r1, _02207F0C ; =0x0220FA5C
mov r2, r6
- bl FUN_022083C8
+ bl MOD04_022083C8
cmp r0, #0
moveq sb, r5
movne sb, r4
@@ -54399,12 +54399,12 @@ _02207D24:
bne _02207D6C
add r0, sp, #0x18
add r1, r3, r1
- bl FUN_02206B60
+ bl MOD04_02206B60
mov r1, r0
add r0, sp, #0x18
mov r2, #0
strb r2, [r0, r1]
- bl FUN_02208564
+ bl MOD04_02208564
str r0, [sp, #0xc]
b _02207D6C
_02207D64:
@@ -54435,7 +54435,7 @@ _02207D98:
_02207DB4:
ldr r0, [sp]
mov r1, sl
- bl FUN_02207F1C
+ bl MOD04_02207F1C
cmp r0, #0
movne r4, #0
moveq r4, #3
@@ -54443,7 +54443,7 @@ _02207DB4:
_02207DD0:
ldr r0, [sp]
mov r1, sl
- bl FUN_02207F9C
+ bl MOD04_02207F9C
cmp r0, #0
movne r4, #0
moveq r4, #3
@@ -54451,7 +54451,7 @@ _02207DD0:
_02207DEC:
ldr r0, [sp]
mov r1, sl
- bl FUN_02207F70
+ bl MOD04_02207F70
cmp r0, #0
movne r4, #0
moveq r4, #3
@@ -54498,18 +54498,18 @@ _02207E7C:
ldr r1, [r1]
blx r1
_02207E8C:
- bl FUN_02208364
+ bl MOD04_02208364
ldr r0, _02207F14 ; =0x02211768
mvn r1, #0
str r1, [r0]
- bl FUN_02208350
+ bl MOD04_02208350
ldr r0, [sp]
- bl FUN_02209CC4
+ bl MOD04_02209CC4
ldr r1, _02207F10 ; =0x02211764
mov r0, sl
ldr r1, [r1]
blx r1
- bl FUN_022082A0
+ bl MOD04_022082A0
cmp r4, #0
ldrne r0, _02207F18 ; =0x02211760
strne r4, [r0]
@@ -54526,7 +54526,7 @@ _02207EE8:
cmp r0, #0
addeq sp, sp, #0x1c
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl FUN_0220828C
+ bl MOD04_0220828C
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
@@ -54537,17 +54537,17 @@ _02207F10: .word 0x02211764
_02207F14: .word 0x02211768
_02207F18: .word 0x02211760
- arm_func_start FUN_02207F1C
-FUN_02207F1C: ; 0x02207F1C
+ arm_func_start MOD04_02207F1C
+MOD04_02207F1C: ; 0x02207F1C
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r4, r1
add r1, sp, #0
- bl FUN_02209A68
+ bl MOD04_02209A68
movs r1, r0
bmi _02207F64
ldr r0, [sp]
- bl FUN_02208564
+ bl MOD04_02208564
ldr r1, [r4, #0x10]
add sp, sp, #8
str r0, [r1]
@@ -54562,13 +54562,13 @@ _02207F64:
add sp, sp, #8
ldmia sp!, {r4, pc}
- arm_func_start FUN_02207F70
-FUN_02207F70: ; 0x02207F70
+ arm_func_start MOD04_02207F70
+MOD04_02207F70: ; 0x02207F70
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r4, r1
add r1, sp, #0
- bl FUN_02209A68
+ bl MOD04_02209A68
ldr r1, [r4, #0x14]
cmp r0, r1
moveq r0, #1
@@ -54576,8 +54576,8 @@ FUN_02207F70: ; 0x02207F70
add sp, sp, #8
ldmia sp!, {r4, pc}
- arm_func_start FUN_02207F9C
-FUN_02207F9C: ; 0x02207F9C
+ arm_func_start MOD04_02207F9C
+MOD04_02207F9C: ; 0x02207F9C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x24
ldr r2, [r1, #0x14]
@@ -54589,11 +54589,11 @@ FUN_02207F9C: ; 0x02207F9C
mov r2, #0
ldr r0, [r0, #0x10]
str r2, [sp, #4]
- bl FUN_022083B4
+ bl MOD04_022083B4
ldr r1, _02208224 ; =0x0220FA68
add r2, sp, #0x1c
mov r0, r4
- bl FUN_02209A98
+ bl MOD04_02209A98
cmp r0, #0
ble _02208008
ldr r1, [sp, #0x1c]
@@ -54608,7 +54608,7 @@ FUN_02207F9C: ; 0x02207F9C
_02208008:
add r1, sp, #0x18
mov r0, r4
- bl FUN_02209A68
+ bl MOD04_02209A68
mov sb, r0
cmp sb, #0
ble _02208218
@@ -54656,7 +54656,7 @@ _02208088:
cmp r1, #8
bgt _02208218
add r0, r0, r6
- bl FUN_02208564
+ bl MOD04_02208564
cmp r0, #0
blt _02208218
str r0, [r5, #0xac]
@@ -54686,19 +54686,19 @@ _0220811C:
bhs _02208218
add r1, r0, r6
mov r0, r5
- bl FUN_0220839C
+ bl MOD04_0220839C
b _022081D8
_02208138:
sub r4, r8, r6
mov r0, r4
- bl FUN_02206DC0
+ bl MOD04_02206DC0
cmp r0, #0x64
bhs _02208218
mov r2, r4
add r0, r5, #0x22
ldr r1, [sp, #0x18]
add r1, r1, r6
- bl FUN_02206B60
+ bl MOD04_02206B60
b _022081D8
_02208164:
sub r2, r8, r6
@@ -54706,7 +54706,7 @@ _02208164:
bhs _02208218
add r1, r0, r6
add r0, r5, #0x88
- bl FUN_0220839C
+ bl MOD04_0220839C
b _022081D8
_02208180:
sub r2, r8, r6
@@ -54714,7 +54714,7 @@ _02208180:
bhs _02208218
add r1, r0, r6
add r0, r5, #0x93
- bl FUN_0220839C
+ bl MOD04_0220839C
b _022081D8
_0220819C:
sub r2, r8, r6
@@ -54722,14 +54722,14 @@ _0220819C:
bhs _02208218
add r1, r0, r6
add r0, r5, #0x9e
- bl FUN_0220839C
+ bl MOD04_0220839C
b _022081D8
_022081B8:
sub r1, r8, r6
cmp r1, #8
bgt _02208218
add r0, r0, r6
- bl FUN_02208564
+ bl MOD04_02208564
cmp r0, #0
blt _02208218
str r0, [r5, #0xac]
@@ -54760,8 +54760,8 @@ _02208218:
.align 2, 0
_02208224: .word 0x0220FA68
- arm_func_start FUN_02208228
-FUN_02208228: ; 0x02208228
+ arm_func_start MOD04_02208228
+MOD04_02208228: ; 0x02208228
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x14
mov sb, r0
@@ -54776,7 +54776,7 @@ _02208250:
ldrb r1, [r7]
mov r2, r4
add r0, r5, r6
- bl FUN_022083E0
+ bl MOD04_022083E0
add r8, r8, #1
cmp r8, #6
add r7, r7, #1
@@ -54785,12 +54785,12 @@ _02208250:
add r1, sp, #6
mov r0, sb
mov r2, #0xc
- bl FUN_02206C98
+ bl MOD04_02206C98
add sp, sp, #0x14
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
- arm_func_start FUN_0220828C
-FUN_0220828C: ; 0x0220828C
+ arm_func_start MOD04_0220828C
+MOD04_0220828C: ; 0x0220828C
ldr ip, _0220829C ; =0x020CBDC4
mov r1, #0
mov r2, r1
@@ -54798,8 +54798,8 @@ FUN_0220828C: ; 0x0220828C
.align 2, 0
_0220829C: .word 0x020CBDC4
- arm_func_start FUN_022082A0
-FUN_022082A0: ; 0x022082A0
+ arm_func_start MOD04_022082A0
+MOD04_022082A0: ; 0x022082A0
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _022082CC ; =0x022118D4
@@ -54815,8 +54815,8 @@ FUN_022082A0: ; 0x022082A0
_022082CC: .word 0x022118D4
_022082D0: .word 0x022118D0
- arm_func_start FUN_022082D4
-FUN_022082D4: ; 0x022082D4
+ arm_func_start MOD04_022082D4
+MOD04_022082D4: ; 0x022082D4
stmdb sp!, {r4, lr}
ldr r0, _02208314 ; =0x022118D4
bl OS_LockMutex
@@ -54837,12 +54837,12 @@ FUN_022082D4: ; 0x022082D4
_02208314: .word 0x022118D4
_02208318: .word 0x022118D0
- arm_func_start FUN_0220831C
-FUN_0220831C: ; 0x0220831C
+ arm_func_start MOD04_0220831C
+MOD04_0220831C: ; 0x0220831C
bx lr
- arm_func_start FUN_02208320
-FUN_02208320: ; 0x02208320
+ arm_func_start MOD04_02208320
+MOD04_02208320: ; 0x02208320
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _02208348 ; =0x022118D4
@@ -54857,8 +54857,8 @@ FUN_02208320: ; 0x02208320
_02208348: .word 0x022118D4
_0220834C: .word 0x022118D0
- arm_func_start FUN_02208350
-FUN_02208350: ; 0x02208350
+ arm_func_start MOD04_02208350
+MOD04_02208350: ; 0x02208350
ldr ip, _0220835C ; =0x020CBFA0
ldr r0, _02208360 ; =0x022118EC
bx ip
@@ -54866,8 +54866,8 @@ FUN_02208350: ; 0x02208350
_0220835C: .word 0x020CBFA0
_02208360: .word 0x022118EC
- arm_func_start FUN_02208364
-FUN_02208364: ; 0x02208364
+ arm_func_start MOD04_02208364
+MOD04_02208364: ; 0x02208364
ldr ip, _02208370 ; =0x020CC010
ldr r0, _02208374 ; =0x022118EC
bx ip
@@ -54875,12 +54875,12 @@ FUN_02208364: ; 0x02208364
_02208370: .word 0x020CC010
_02208374: .word 0x022118EC
- arm_func_start FUN_02208378
-FUN_02208378: ; 0x02208378
+ arm_func_start MOD04_02208378
+MOD04_02208378: ; 0x02208378
bx lr
- arm_func_start FUN_0220837C
-FUN_0220837C: ; 0x0220837C
+ arm_func_start MOD04_0220837C
+MOD04_0220837C: ; 0x0220837C
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _02208398 ; =0x022118EC
@@ -54891,8 +54891,8 @@ FUN_0220837C: ; 0x0220837C
.align 2, 0
_02208398: .word 0x022118EC
- arm_func_start FUN_0220839C
-FUN_0220839C: ; 0x0220839C
+ arm_func_start MOD04_0220839C
+MOD04_0220839C: ; 0x0220839C
ldr ip, _022083B0 ; =0x020CE3E0
mov r3, r0
mov r0, r1
@@ -54901,8 +54901,8 @@ FUN_0220839C: ; 0x0220839C
.align 2, 0
_022083B0: .word 0x020CE3E0
- arm_func_start FUN_022083B4
-FUN_022083B4: ; 0x022083B4
+ arm_func_start MOD04_022083B4
+MOD04_022083B4: ; 0x022083B4
ldr ip, _022083C4 ; =0x020CE34C
mov r2, r1
mov r1, #0
@@ -54910,22 +54910,22 @@ FUN_022083B4: ; 0x022083B4
.align 2, 0
_022083C4: .word 0x020CE34C
- arm_func_start FUN_022083C8
-FUN_022083C8: ; 0x022083C8
+ arm_func_start MOD04_022083C8
+MOD04_022083C8: ; 0x022083C8
ldr ip, _022083D0 ; =0x020DE03C
bx ip
.align 2, 0
_022083D0: .word 0x020DE03C
- arm_func_start FUN_022083D4
-FUN_022083D4: ; 0x022083D4
+ arm_func_start MOD04_022083D4
+MOD04_022083D4: ; 0x022083D4
ldr ip, _022083DC ; =0x020DE0BC
bx ip
.align 2, 0
_022083DC: .word 0x020DE0BC
- arm_func_start FUN_022083E0
-FUN_022083E0: ; 0x022083E0
+ arm_func_start MOD04_022083E0
+MOD04_022083E0: ; 0x022083E0
stmdb sp!, {lr}
sub sp, sp, #4
cmp r2, #8
@@ -54956,8 +54956,8 @@ _02208440:
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_0220844C
-FUN_0220844C: ; 0x0220844C
+ arm_func_start MOD04_0220844C
+MOD04_0220844C: ; 0x0220844C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
ldr r4, _02208554 ; =0x0220BD64
@@ -55031,32 +55031,32 @@ _02208530:
.align 2, 0
_02208554: .word 0x0220BD64
- arm_func_start FUN_02208558
-FUN_02208558: ; 0x02208558
- ldr ip, _02208560 ; =FUN_0220B788
+ arm_func_start MOD04_02208558
+MOD04_02208558: ; 0x02208558
+ ldr ip, _02208560 ; =MOD04_0220B788
bx ip
.align 2, 0
-_02208560: .word FUN_0220B788
+_02208560: .word MOD04_0220B788
- arm_func_start FUN_02208564
-FUN_02208564: ; 0x02208564
- ldr ip, _0220856C ; =FUN_0220B844
+ arm_func_start MOD04_02208564
+MOD04_02208564: ; 0x02208564
+ ldr ip, _0220856C ; =MOD04_0220B844
bx ip
.align 2, 0
-_0220856C: .word FUN_0220B844
+_0220856C: .word MOD04_0220B844
- arm_func_start FUN_02208570
-FUN_02208570: ; 0x02208570
+ arm_func_start MOD04_02208570
+MOD04_02208570: ; 0x02208570
stmdb sp!, {r4, lr}
mov r4, r0
- bl FUN_022091BC
- bl FUN_02208C24
+ bl MOD04_022091BC
+ bl MOD04_02208C24
ldr r0, _022085AC ; =0x0221191C
ldr r1, _022085B0 ; =0x02211904
ldr r0, [r0]
ldr r1, [r1]
blx r1
- bl FUN_02208CF4
+ bl MOD04_02208CF4
ldr r0, _022085B4 ; =0x02211920
mov r1, #0
str r1, [r0]
@@ -55067,8 +55067,8 @@ _022085AC: .word 0x0221191C
_022085B0: .word 0x02211904
_022085B4: .word 0x02211920
- arm_func_start FUN_022085B8
-FUN_022085B8: ; 0x022085B8
+ arm_func_start MOD04_022085B8
+MOD04_022085B8: ; 0x022085B8
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
ldr r3, _022086B0 ; =0x02211908
@@ -55087,7 +55087,7 @@ FUN_022085B8: ; 0x022085B8
str r7, [lr]
str r7, [ip]
str r7, [r3]
- bl FUN_02208CF8
+ bl MOD04_02208CF8
cmp r0, #0
ldreq r0, _022086B0 ; =0x02211908
moveq r1, #9
@@ -55107,13 +55107,13 @@ FUN_022085B8: ; 0x022085B8
ldr r0, _022086B0 ; =0x02211908
mov r1, #1
str r1, [r0]
- bl FUN_02208CF4
+ bl MOD04_02208CF4
add sp, sp, #4
mov r0, r7
ldmia sp!, {r4, r5, r6, r7, pc}
_02208660:
mov r0, r4
- bl FUN_02208C54
+ bl MOD04_02208C54
cmp r0, #0
ldrne r1, _022086D0 ; =0x02211920
movne r0, #1
@@ -55128,7 +55128,7 @@ _02208660:
mov r3, #9
str r3, [r1]
blx r2
- bl FUN_02208CF4
+ bl MOD04_02208CF4
mov r0, r7
add sp, sp, #4
ldmia sp!, {r4, r5, r6, r7, pc}
@@ -55143,8 +55143,8 @@ _022086C8: .word 0x02211918
_022086CC: .word 0x0221191C
_022086D0: .word 0x02211920
- arm_func_start FUN_022086D4
-FUN_022086D4: ; 0x022086D4
+ arm_func_start MOD04_022086D4
+MOD04_022086D4: ; 0x022086D4
ldr r3, [r0]
cmp r3, #0
movne r0, #0
@@ -55153,8 +55153,8 @@ FUN_022086D4: ; 0x022086D4
moveq r0, #1
bx lr
- arm_func_start FUN_022086F0
-FUN_022086F0: ; 0x022086F0
+ arm_func_start MOD04_022086F0
+MOD04_022086F0: ; 0x022086F0
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
ldr r0, [r8]
@@ -55165,19 +55165,19 @@ FUN_022086F0: ; 0x022086F0
movne r0, r5
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
mov r0, r6
- bl FUN_02209FBC
+ bl MOD04_02209FBC
mov r4, r0
mov r0, r8
mov r1, r6
mov r2, r4
- bl FUN_02208794
+ bl MOD04_02208794
cmp r0, #0
beq _0220875C
mov r1, r7
mov r2, r6
add r0, r8, #0x38
mov r3, #0x18
- bl FUN_022088CC
+ bl MOD04_022088CC
movs r5, r0
ldrne r0, [r8, #0x38]
ldrne r0, [r0]
@@ -55186,8 +55186,8 @@ _0220875C:
mov r0, r5
ldmia sp!, {r4, r5, r6, r7, r8, pc}
- arm_func_start FUN_02208764
-FUN_02208764: ; 0x02208764
+ arm_func_start MOD04_02208764
+MOD04_02208764: ; 0x02208764
stmdb sp!, {lr}
sub sp, sp, #4
ldr r3, [r0]
@@ -55197,12 +55197,12 @@ FUN_02208764: ; 0x02208764
ldmneia sp!, {pc}
add r0, r0, #0x34
mov r3, #0x18
- bl FUN_022088CC
+ bl MOD04_022088CC
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_02208794
-FUN_02208794: ; 0x02208794
+ arm_func_start MOD04_02208794
+MOD04_02208794: ; 0x02208794
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
str r0, [sp]
@@ -55213,7 +55213,7 @@ FUN_02208794: ; 0x02208794
mov r1, sb
add r2, r2, #0x46
mov r3, #0x12
- bl FUN_0220B604
+ bl MOD04_0220B604
cmp r0, #0
addlt sp, sp, #4
movlt r0, #1
@@ -55229,7 +55229,7 @@ _022087E4:
ldrsb r8, [r6, #0x44]
_022087F0:
and r0, r8, #0xff
- bl FUN_02208854
+ bl MOD04_02208854
mov r8, r0
strb r8, [r6, #0x44]
ldrsb r0, [r7]
@@ -55239,7 +55239,7 @@ _022087F0:
mov r1, sb
mov r2, r5
mov r3, r4
- bl FUN_0220B604
+ bl MOD04_0220B604
cmp r0, #0
bge _022087F0
add sp, sp, #4
@@ -55256,8 +55256,8 @@ _02208834:
.align 2, 0
_02208850: .word 0x0220BDF7
- arm_func_start FUN_02208854
-FUN_02208854: ; 0x02208854
+ arm_func_start MOD04_02208854
+MOD04_02208854: ; 0x02208854
add r0, r0, #1
and r0, r0, #0xff
cmp r0, #0x7b
@@ -55273,8 +55273,8 @@ _0220887C:
mov r0, r0, asr #0x18
bx lr
- arm_func_start FUN_02208888
-FUN_02208888: ; 0x02208888
+ arm_func_start MOD04_02208888
+MOD04_02208888: ; 0x02208888
ldr r3, [r0]
cmp r3, #0
beq _022088C4
@@ -55294,8 +55294,8 @@ _022088C4:
mov r0, r3
bx lr
- arm_func_start FUN_022088CC
-FUN_022088CC: ; 0x022088CC
+ arm_func_start MOD04_022088CC
+MOD04_022088CC: ; 0x022088CC
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
mov sb, r0
ldr sl, [sb]
@@ -55308,7 +55308,7 @@ FUN_022088CC: ; 0x022088CC
ldr r1, [sl, #8]
mov r0, r8
mov r4, sl
- bl FUN_0220B704
+ bl MOD04_0220B704
cmp r0, #0
beq _02208944
ldr r4, [sl, #4]
@@ -55318,7 +55318,7 @@ FUN_022088CC: ; 0x022088CC
_02208918:
ldr r1, [r4, #8]
mov r0, r8
- bl FUN_0220B704
+ bl MOD04_0220B704
cmp r0, #0
moveq r5, #1
beq _02208948
@@ -55371,17 +55371,17 @@ _022089D0:
_022089D8: .word 0x02211924
_022089DC: .word 0x02211908
- arm_func_start FUN_022089E0
-FUN_022089E0: ; 0x022089E0
- ldr ip, _022089EC ; =FUN_02208888
+ arm_func_start MOD04_022089E0
+MOD04_022089E0: ; 0x022089E0
+ ldr ip, _022089EC ; =MOD04_02208888
ldr r0, _022089F0 ; =0x02211910
bx ip
.align 2, 0
-_022089EC: .word FUN_02208888
+_022089EC: .word MOD04_02208888
_022089F0: .word 0x02211910
- arm_func_start FUN_022089F4
-FUN_022089F4: ; 0x022089F4
+ arm_func_start MOD04_022089F4
+MOD04_022089F4: ; 0x022089F4
stmdb sp!, {r4, lr}
ldr r4, _02208A20 ; =0x02211910
ldr r0, [r4]
@@ -55389,7 +55389,7 @@ FUN_022089F4: ; 0x022089F4
ldmeqia sp!, {r4, pc}
_02208A08:
ldr r0, [r0, #8]
- bl FUN_02208A24
+ bl MOD04_02208A24
ldr r0, [r4]
cmp r0, #0
bne _02208A08
@@ -55397,12 +55397,12 @@ _02208A08:
.align 2, 0
_02208A20: .word 0x02211910
- arm_func_start FUN_02208A24
-FUN_02208A24: ; 0x02208A24
+ arm_func_start MOD04_02208A24
+MOD04_02208A24: ; 0x02208A24
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r5, #0
- bl FUN_02208AD0
+ bl MOD04_02208AD0
movs r4, r0
beq _02208ABC
ldr r0, _02208AC8 ; =0x02211910
@@ -55429,7 +55429,7 @@ _02208A84:
ldr r7, [r0, #0x3c]
ldr r6, [r0, #0x30]
ldr r5, [r0, #0x2c]
- bl FUN_02209338
+ bl MOD04_02209338
ldr r1, _02208ACC ; =0x02211904
mov r0, r4
ldr r1, [r1]
@@ -55447,8 +55447,8 @@ _02208ABC:
_02208AC8: .word 0x02211910
_02208ACC: .word 0x02211904
- arm_func_start FUN_02208AD0
-FUN_02208AD0: ; 0x02208AD0
+ arm_func_start MOD04_02208AD0
+MOD04_02208AD0: ; 0x02208AD0
ldr r1, _02208B24 ; =0x02211910
mov ip, #0
ldr r3, [r1]
@@ -55475,8 +55475,8 @@ _02208B1C:
.align 2, 0
_02208B24: .word 0x02211910
- arm_func_start FUN_02208B28
-FUN_02208B28: ; 0x02208B28
+ arm_func_start MOD04_02208B28
+MOD04_02208B28: ; 0x02208B28
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
ldr r1, _02208BD8 ; =0x02211924
@@ -55528,8 +55528,8 @@ _02208BD8: .word 0x02211924
_02208BDC: .word 0x02211910
_02208BE0: .word 0x0221190C
- arm_func_start FUN_02208BE4
-FUN_02208BE4: ; 0x02208BE4
+ arm_func_start MOD04_02208BE4
+MOD04_02208BE4: ; 0x02208BE4
ldr ip, _02208BF8 ; =0x020CBDC4
mov r1, #0
ldr r0, _02208BFC ; =0x02211944
@@ -55539,8 +55539,8 @@ FUN_02208BE4: ; 0x02208BE4
_02208BF8: .word 0x020CBDC4
_02208BFC: .word 0x02211944
- arm_func_start FUN_02208C00
-FUN_02208C00: ; 0x02208C00
+ arm_func_start MOD04_02208C00
+MOD04_02208C00: ; 0x02208C00
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _02208C20 ; =0x02211944
@@ -55552,14 +55552,14 @@ FUN_02208C00: ; 0x02208C00
.align 2, 0
_02208C20: .word 0x02211944
- arm_func_start FUN_02208C24
-FUN_02208C24: ; 0x02208C24
+ arm_func_start MOD04_02208C24
+MOD04_02208C24: ; 0x02208C24
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _02208C4C ; =0x02211918
mov r1, #1
str r1, [r0]
- bl FUN_02208BE4
+ bl MOD04_02208BE4
ldr r0, _02208C50 ; =0x02211964
bl OS_JoinThread
add sp, sp, #4
@@ -55568,8 +55568,8 @@ FUN_02208C24: ; 0x02208C24
_02208C4C: .word 0x02211918
_02208C50: .word 0x02211964
- arm_func_start FUN_02208C54
-FUN_02208C54: ; 0x02208C54
+ arm_func_start MOD04_02208C54
+MOD04_02208C54: ; 0x02208C54
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
mov r5, r0
@@ -55586,7 +55586,7 @@ FUN_02208C54: ; 0x02208C54
mov r0, #0x2000
str r0, [sp]
ldr r0, _02208CC4 ; =0x02211964
- ldr r1, _02208CC8 ; =FUN_0220A044
+ ldr r1, _02208CC8 ; =MOD04_0220A044
add r3, r4, #0x2000
mov r2, #0
str r5, [sp, #4]
@@ -55600,10 +55600,10 @@ FUN_02208C54: ; 0x02208C54
_02208CBC: .word 0x02211944
_02208CC0: .word 0x02211928
_02208CC4: .word 0x02211964
-_02208CC8: .word FUN_0220A044
+_02208CC8: .word MOD04_0220A044
- arm_func_start FUN_02208CCC
-FUN_02208CCC: ; 0x02208CCC
+ arm_func_start MOD04_02208CCC
+MOD04_02208CCC: ; 0x02208CCC
ldr ip, _02208CD8 ; =0x020CBFA0
ldr r0, _02208CDC ; =0x0221192C
bx ip
@@ -55611,8 +55611,8 @@ FUN_02208CCC: ; 0x02208CCC
_02208CD8: .word 0x020CBFA0
_02208CDC: .word 0x0221192C
- arm_func_start FUN_02208CE0
-FUN_02208CE0: ; 0x02208CE0
+ arm_func_start MOD04_02208CE0
+MOD04_02208CE0: ; 0x02208CE0
ldr ip, _02208CEC ; =0x020CC010
ldr r0, _02208CF0 ; =0x0221192C
bx ip
@@ -55620,12 +55620,12 @@ FUN_02208CE0: ; 0x02208CE0
_02208CEC: .word 0x020CC010
_02208CF0: .word 0x0221192C
- arm_func_start FUN_02208CF4
-FUN_02208CF4: ; 0x02208CF4
+ arm_func_start MOD04_02208CF4
+MOD04_02208CF4: ; 0x02208CF4
bx lr
- arm_func_start FUN_02208CF8
-FUN_02208CF8: ; 0x02208CF8
+ arm_func_start MOD04_02208CF8
+MOD04_02208CF8: ; 0x02208CF8
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _02208D14 ; =0x0221192C
@@ -55636,8 +55636,8 @@ FUN_02208CF8: ; 0x02208CF8
.align 2, 0
_02208D14: .word 0x0221192C
- arm_func_start FUN_02208D18
-FUN_02208D18: ; 0x02208D18
+ arm_func_start MOD04_02208D18
+MOD04_02208D18: ; 0x02208D18
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #8
mov r8, r0
@@ -55647,7 +55647,7 @@ FUN_02208D18: ; 0x02208D18
mov r0, r4
mov r1, r6
mov r5, r3
- bl FUN_02208DB8
+ bl MOD04_02208DB8
cmp r0, #0
addne sp, sp, #8
ldrne r0, _02208D84 ; =0xFFFFFC15
@@ -55662,14 +55662,14 @@ FUN_02208D18: ; 0x02208D18
mov r0, r8
mov r1, r7
add r2, r2, r6
- bl FUN_02209DB4
+ bl MOD04_02209DB4
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02208D84: .word 0xFFFFFC15
- arm_func_start FUN_02208D88
-FUN_02208D88: ; 0x02208D88
+ arm_func_start MOD04_02208D88
+MOD04_02208D88: ; 0x02208D88
stmdb sp!, {lr}
sub sp, sp, #4
ldr ip, [r0, #0x30]
@@ -55679,20 +55679,20 @@ FUN_02208D88: ; 0x02208D88
ldr r3, [ip, #0xc]
add r2, r2, lr
sub r3, r3, lr
- bl FUN_02209DB4
+ bl MOD04_02209DB4
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_02208DB8
-FUN_02208DB8: ; 0x02208DB8
+ arm_func_start MOD04_02208DB8
+MOD04_02208DB8: ; 0x02208DB8
ldr r0, [r0, #0xc]
cmp r0, r1
movls r0, #1
movhi r0, #0
bx lr
- arm_func_start FUN_02208DCC
-FUN_02208DCC: ; 0x02208DCC
+ arm_func_start MOD04_02208DCC
+MOD04_02208DCC: ; 0x02208DCC
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #4
mov r4, r0
@@ -55714,7 +55714,7 @@ FUN_02208DCC: ; 0x02208DCC
mov r0, r8
mov r2, r5
add r1, r1, r7
- bl FUN_02209F90
+ bl MOD04_02209F90
add r7, r7, r5
sub r6, r6, r5
add r8, r8, r5
@@ -55745,7 +55745,7 @@ _02208E70:
mov r0, r8
mov r2, r4
add r1, r1, r7
- bl FUN_02209F90
+ bl MOD04_02209F90
add r0, r7, r4
and r7, r0, sb
subs r6, r6, r4
@@ -55763,8 +55763,8 @@ _02208EB4:
.align 2, 0
_02208EC0: .word 0x000001FF
- arm_func_start FUN_02208EC4
-FUN_02208EC4: ; 0x02208EC4
+ arm_func_start MOD04_02208EC4
+MOD04_02208EC4: ; 0x02208EC4
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov sb, r1
@@ -55776,11 +55776,11 @@ FUN_02208EC4: ; 0x02208EC4
bge _02208F98
add r2, sp, #0
add r3, sp, #4
- bl FUN_02209158
+ bl MOD04_02209158
add r1, sp, #0
add r2, sp, #4
mov r0, sl
- bl FUN_022090E4
+ bl MOD04_022090E4
sub r6, r4, #1
mov r4, #1
add fp, sp, #0
@@ -55803,7 +55803,7 @@ _02208F44:
mov r0, sl
mov r1, fp
add r2, sp, #4
- bl FUN_022090E4
+ bl MOD04_022090E4
add sb, sb, #1
add r8, r8, #1
_02208F5C:
@@ -55829,8 +55829,8 @@ _02208F98:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_02208FA4
-FUN_02208FA4: ; 0x02208FA4
+ arm_func_start MOD04_02208FA4
+MOD04_02208FA4: ; 0x02208FA4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #8
mov r7, r1
@@ -55840,7 +55840,7 @@ FUN_02208FA4: ; 0x02208FA4
bge _02209008
add r2, sp, #0
add r3, sp, #4
- bl FUN_02209158
+ bl MOD04_02209158
cmp r7, r6
bge _02209008
add r5, sp, #0
@@ -55849,7 +55849,7 @@ _02208FDC:
mov r0, r8
mov r1, r5
mov r2, r4
- bl FUN_022090E4
+ bl MOD04_022090E4
cmp r0, #0x20
addne sp, sp, #8
movne r0, r7
@@ -55862,8 +55862,8 @@ _02209008:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, pc}
- arm_func_start FUN_02209014
-FUN_02209014: ; 0x02209014
+ arm_func_start MOD04_02209014
+MOD04_02209014: ; 0x02209014
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
movs r7, r3
@@ -55879,7 +55879,7 @@ FUN_02209014: ; 0x02209014
add r3, sp, #4
mov r0, sl
mov r1, sb
- bl FUN_02209158
+ bl MOD04_02209158
cmp sb, r8
bge _022090D8
add fp, sp, #0
@@ -55889,7 +55889,7 @@ _02209068:
mov r0, sl
mov r1, fp
add r2, sp, #4
- bl FUN_022090E4
+ bl MOD04_022090E4
cmp r0, #0x3a
bne _02209094
cmp r7, #0
@@ -55923,8 +55923,8 @@ _022090D8:
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- arm_func_start FUN_022090E4
-FUN_022090E4: ; 0x022090E4
+ arm_func_start MOD04_022090E4
+MOD04_022090E4: ; 0x022090E4
ldr r3, [r1]
cmp r3, #0
bne _02209120
@@ -55957,8 +55957,8 @@ _0220913C:
ldrsb r0, [r0, #4]
bx lr
- arm_func_start FUN_02209158
-FUN_02209158: ; 0x02209158
+ arm_func_start MOD04_02209158
+MOD04_02209158: ; 0x02209158
stmdb sp!, {lr}
sub sp, sp, #4
cmp r1, #0x400
@@ -55988,11 +55988,11 @@ _0220919C:
.align 2, 0
_022091B8: .word 0x000001FF
- arm_func_start FUN_022091BC
-FUN_022091BC: ; 0x022091BC
+ arm_func_start MOD04_022091BC
+MOD04_022091BC: ; 0x022091BC
stmdb sp!, {lr}
sub sp, sp, #4
- bl FUN_02208CE0
+ bl MOD04_02208CE0
ldr r0, _02209214 ; =0x02211914
ldr r2, [r0]
cmp r2, #0
@@ -56007,22 +56007,22 @@ FUN_022091BC: ; 0x022091BC
ldr r1, [r0]
ldr r0, [r1, #0xc]
ldr r1, [r1, #0x10]
- bl FUN_02209D40
+ bl MOD04_02209D40
_02209204:
- bl FUN_022089F4
- bl FUN_02208CCC
+ bl MOD04_022089F4
+ bl MOD04_02208CCC
add sp, sp, #4
ldmfd sp!, {pc}
.align 2, 0
_02209214: .word 0x02211914
- arm_func_start FUN_02209218
-FUN_02209218: ; 0x02209218
+ arm_func_start MOD04_02209218
+MOD04_02209218: ; 0x02209218
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r4, r0
mov r5, #0
- bl FUN_02208CE0
+ bl MOD04_02208CE0
ldr r0, _0220929C ; =0x02211914
ldr r2, [r0]
cmp r2, #0
@@ -56040,24 +56040,24 @@ FUN_02209218: ; 0x02209218
ldr r1, [r0]
ldr r0, [r1, #0xc]
ldr r1, [r1, #0x10]
- bl FUN_02209D40
+ bl MOD04_02209D40
mov r5, #1
_02209278:
cmp r5, #0
bne _0220928C
mov r0, r4
- bl FUN_02208A24
+ bl MOD04_02208A24
mov r5, r0
_0220928C:
- bl FUN_02208CCC
+ bl MOD04_02208CCC
mov r0, r5
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
_0220929C: .word 0x02211914
- arm_func_start FUN_022092A0
-FUN_022092A0: ; 0x022092A0
+ arm_func_start MOD04_022092A0
+MOD04_022092A0: ; 0x022092A0
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -56081,9 +56081,9 @@ FUN_022092A0: ; 0x022092A0
mvneq r0, #0
ldmeqia sp!, {r4, r5, pc}
_022092F8:
- bl FUN_02208CE0
+ bl MOD04_02208CE0
mov r0, r5
- bl FUN_02208B28
+ bl MOD04_02208B28
movs r4, r0
ldrmi r0, _02209334 ; =0x02211908
movmi r1, #1
@@ -56091,23 +56091,23 @@ _022092F8:
bmi _02209324
mov r0, #1
str r0, [r5]
- bl FUN_02208BE4
+ bl MOD04_02208BE4
_02209324:
- bl FUN_02208CCC
+ bl MOD04_02208CCC
mov r0, r4
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
_02209334: .word 0x02211908
- arm_func_start FUN_02209338
-FUN_02209338: ; 0x02209338
+ arm_func_start MOD04_02209338
+MOD04_02209338: ; 0x02209338
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, [r4, #0x34]
- bl FUN_022093B0
+ bl MOD04_022093B0
ldr r0, [r4, #0x38]
- bl FUN_022093B0
+ bl MOD04_022093B0
ldr r0, [r4, #0x20]
cmp r0, #0
beq _02209384
@@ -56136,8 +56136,8 @@ _02209384:
.align 2, 0
_022093AC: .word 0x02211904
- arm_func_start FUN_022093B0
-FUN_022093B0: ; 0x022093B0
+ arm_func_start MOD04_022093B0
+MOD04_022093B0: ; 0x022093B0
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
movs r7, r0
@@ -56167,8 +56167,8 @@ _022093FC:
.align 2, 0
_0220940C: .word 0x02211904
- arm_func_start FUN_02209410
-FUN_02209410: ; 0x02209410
+ arm_func_start MOD04_02209410
+MOD04_02209410: ; 0x02209410
stmdb sp!, {r4, lr}
ldr r1, _02209434 ; =0x02211904
mov r4, r0
@@ -56176,13 +56176,13 @@ FUN_02209410: ; 0x02209410
ldr r1, [r1]
blx r1
mov r0, r4
- bl FUN_02209338
+ bl MOD04_02209338
ldmia sp!, {r4, pc}
.align 2, 0
_02209434: .word 0x02211904
- arm_func_start FUN_02209438
-FUN_02209438: ; 0x02209438
+ arm_func_start MOD04_02209438
+MOD04_02209438: ; 0x02209438
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov fp, r0
@@ -56216,7 +56216,7 @@ _02209478:
streq r1, [r0]
beq _02209918
mov r1, #0x58
- bl FUN_02209FA8
+ bl MOD04_02209FA8
ldr r1, _022099A4 ; =0x02211924
mov r0, #0x420
ldr r2, [r1]
@@ -56230,13 +56230,13 @@ _02209478:
streq r1, [r0]
beq _02209918
mov r1, #0x420
- bl FUN_02209FA8
+ bl MOD04_02209FA8
ldr r1, [r7, #0x30]
mov r0, fp
str r5, [r1, #0x18]
ldr r1, [r7, #0x30]
str r4, [r1, #0xc]
- bl FUN_02209FBC
+ bl MOD04_02209FBC
mov r4, r0
cmp r4, #7
ldrle r0, _022099A0 ; =0x02211908
@@ -56249,13 +56249,13 @@ _02209478:
mov r0, fp
mov r2, sl
str r3, [r7, #0x28]
- bl FUN_02209FC8
+ bl MOD04_02209FC8
cmp r0, #0
beq _02209580
ldr r1, _022099AC ; =0x0220FA80
mov r0, fp
mov r2, #8
- bl FUN_02209FC8
+ bl MOD04_02209FC8
cmp r0, #0
ldrne r0, _022099A0 ; =0x02211908
movne r1, #4
@@ -56289,7 +56289,7 @@ _022095B4:
sub r0, sb, #1
mov r1, r4
add r0, r8, r0
- bl FUN_0220B8E4
+ bl MOD04_0220B8E4
mov r0, r0, lsl #0x18
movs r0, r0, asr #0x18
ldrmi r0, _022099A0 ; =0x02211908
@@ -56337,7 +56337,7 @@ _0220962C:
beq _02209918
mov r1, fp
mov r2, sl
- bl FUN_02209F90
+ bl MOD04_02209F90
mov r6, #0
ldr r0, [sp, #4]
mov sb, r6
@@ -56356,7 +56356,7 @@ _022096AC:
sub r0, r6, #1
mov r1, fp
add r0, r8, r0
- bl FUN_0220B8E4
+ bl MOD04_0220B8E4
mov r0, r0, lsl #0x18
mov r3, r0, asr #0x18
add r1, sl, sb
@@ -56447,7 +56447,7 @@ _022097E4:
ldr r1, [r7, #0x10]
add r0, r0, r2
sub r1, r1, r2
- bl FUN_0220B688
+ bl MOD04_0220B688
cmp r0, #0
ldrlt r0, [r7, #0x28]
blt _02209834
@@ -56480,7 +56480,7 @@ _02209840:
streq r1, [r0]
beq _02209918
mov r1, #0x830
- bl FUN_02209FA8
+ bl MOD04_02209FA8
ldr r1, _022099A4 ; =0x02211924
add r0, r4, #1
ldr r2, [r1]
@@ -56498,7 +56498,7 @@ _02209840:
ldr r1, [r7, #0x24]
mov r2, r4
add r1, r1, sl
- bl FUN_02209F90
+ bl MOD04_02209F90
ldr r0, [r7, #0x20]
mov r1, #0
ldr r0, [r0, #0x800]
@@ -56507,7 +56507,7 @@ _022098E4:
ldr r1, _022099B8 ; =0x0220BDE4
add r0, r7, #0x44
mov r2, #0x14
- bl FUN_02209F90
+ bl MOD04_02209F90
ldr r0, [sp, #0x34]
ldr r1, [sp, #0x30]
str r0, [r7, #0x2c]
@@ -56567,8 +56567,8 @@ _022099B4: .word 0x0000FFFF
_022099B8: .word 0x0220BDE4
_022099BC: .word 0x02211904
- arm_func_start FUN_022099C0
-FUN_022099C0: ; 0x022099C0
+ arm_func_start MOD04_022099C0
+MOD04_022099C0: ; 0x022099C0
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
mov r5, r0
@@ -56613,8 +56613,8 @@ _02209A54:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_02209A68
-FUN_02209A68: ; 0x02209A68
+ arm_func_start MOD04_02209A68
+MOD04_02209A68: ; 0x02209A68
ldr r2, [r0, #8]
cmp r2, #0
beq _02209A80
@@ -56630,8 +56630,8 @@ _02209A88:
ldr r0, [r0, #4]
bx lr
- arm_func_start FUN_02209A98
-FUN_02209A98: ; 0x02209A98
+ arm_func_start MOD04_02209A98
+MOD04_02209A98: ; 0x02209A98
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #4
mov r7, r0
@@ -56654,7 +56654,7 @@ _02209AE0:
add r2, sp, #0
mov r0, r7
mov r1, r6
- bl FUN_02209BB8
+ bl MOD04_02209BB8
movs r4, r0
bmi _02209B44
ldr r1, _02209BB0 ; =0x02211924
@@ -56670,7 +56670,7 @@ _02209AE0:
ldr r2, [sp]
mov r0, r7
mov r3, r4
- bl FUN_02208DCC
+ bl MOD04_02208DCC
ldr r1, [r7, #0x14]
add sp, sp, #4
mov r0, r4
@@ -56679,7 +56679,7 @@ _02209AE0:
_02209B44:
ldr r0, _02209BB4 ; =0x0220FA8C
mov r1, r6
- bl FUN_0220A038
+ bl MOD04_0220A038
cmp r0, #0
addne sp, sp, #4
mvnne r0, #0
@@ -56697,7 +56697,7 @@ _02209B44:
mov r0, r7
mov r2, #9
mov r3, #3
- bl FUN_02208DCC
+ bl MOD04_02208DCC
ldr r1, [r7, #0x14]
mov r0, #3
str r1, [r5]
@@ -56708,8 +56708,8 @@ _02209BAC: .word 0x02211904
_02209BB0: .word 0x02211924
_02209BB4: .word 0x0220FA8C
- arm_func_start FUN_02209BB8
-FUN_02209BB8: ; 0x02209BB8
+ arm_func_start MOD04_02209BB8
+MOD04_02209BB8: ; 0x02209BB8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #8
mov r5, r0
@@ -56718,7 +56718,7 @@ FUN_02209BB8: ; 0x02209BB8
ldr r2, [r5]
add r3, sp, #4
mov r1, #0xc
- bl FUN_02209014
+ bl MOD04_02209014
mov sb, r0
cmp sb, #0
ble _02209CB8
@@ -56729,7 +56729,7 @@ _02209BF0:
mov r0, r5
mov r1, sb
mov r3, r7
- bl FUN_02209014
+ bl MOD04_02209014
ldr r2, [sp, #4]
mov r8, r0
cmp r2, #0
@@ -56738,7 +56738,7 @@ _02209BF0:
mov r1, sb
mov r3, sl
str r6, [sp]
- bl FUN_02208EC4
+ bl MOD04_02208EC4
cmp r0, #0
bne _02209CAC
ldr r1, [sp, #4]
@@ -56749,7 +56749,7 @@ _02209BF0:
ldr r2, [r5]
mov r0, r5
mov r3, #0
- bl FUN_02209014
+ bl MOD04_02209014
cmp r0, #0
ldrle r6, [r5]
ble _02209C74
@@ -56763,7 +56763,7 @@ _02209C74:
mov r0, r5
mov r2, r6
add r1, r1, #1
- bl FUN_02208FA4
+ bl MOD04_02208FA4
cmp r0, #0
movlt r0, r6
str r0, [r4]
@@ -56783,8 +56783,8 @@ _02209CB8:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- arm_func_start FUN_02209CC4
-FUN_02209CC4: ; 0x02209CC4
+ arm_func_start MOD04_02209CC4
+MOD04_02209CC4: ; 0x02209CC4
stmdb sp!, {r4, r5, r6, lr}
mov r4, r0
ldr r0, [r4, #0x1c]
@@ -56822,8 +56822,8 @@ _02209D28:
.align 2, 0
_02209D3C: .word 0x02211904
- arm_func_start FUN_02209D40
-FUN_02209D40: ; 0x02209D40
+ arm_func_start MOD04_02209D40
+MOD04_02209D40: ; 0x02209D40
stmdb sp!, {lr}
sub sp, sp, #4
cmp r1, #0
@@ -56835,8 +56835,8 @@ FUN_02209D40: ; 0x02209D40
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_02209D68
-FUN_02209D68: ; 0x02209D68
+ arm_func_start MOD04_02209D68
+MOD04_02209D68: ; 0x02209D68
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, r1
@@ -56858,8 +56858,8 @@ FUN_02209D68: ; 0x02209D68
.align 2, 0
_02209DB0: .word 0xFFFFFC16
- arm_func_start FUN_02209DB4
-FUN_02209DB4: ; 0x02209DB4
+ arm_func_start MOD04_02209DB4
+MOD04_02209DB4: ; 0x02209DB4
stmdb sp!, {r4, lr}
mov r4, r0
mov r0, r1
@@ -56881,8 +56881,8 @@ FUN_02209DB4: ; 0x02209DB4
.align 2, 0
_02209DFC: .word 0xFFFFFC16
- arm_func_start FUN_02209E00
-FUN_02209E00: ; 0x02209E00
+ arm_func_start MOD04_02209E00
+MOD04_02209E00: ; 0x02209E00
stmdb sp!, {r4, r5, lr}
sub sp, sp, #0xc
mov r3, r3, lsl #0x10
@@ -56917,8 +56917,8 @@ _02209E6C:
.align 2, 0
_02209E78: .word 0xFFFFFC16
- arm_func_start FUN_02209E7C
-FUN_02209E7C: ; 0x02209E7C
+ arm_func_start MOD04_02209E7C
+MOD04_02209E7C: ; 0x02209E7C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r1
mov r0, r8
@@ -56945,8 +56945,8 @@ _02209EB4:
.align 2, 0
_02209ED0: .word 0x00002710
- arm_func_start FUN_02209ED4
-FUN_02209ED4: ; 0x02209ED4
+ arm_func_start MOD04_02209ED4
+MOD04_02209ED4: ; 0x02209ED4
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -56959,10 +56959,10 @@ FUN_02209ED4: ; 0x02209ED4
ldr r0, [r5, #8]
cmp r0, #0
beq _02209F4C
- bl FUN_02209F5C
+ bl MOD04_02209F5C
ldr r1, [r5, #0x1c]
ldr r0, [r5, #0x20]
- ldr r2, _02209F58 ; =FUN_02209F84
+ ldr r2, _02209F58 ; =MOD04_02209F84
str r1, [r0, #0x814]
ldr r3, [r5, #0x18]
ldr r1, [r5, #0x20]
@@ -56982,10 +56982,10 @@ _02209F4C:
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
.align 2, 0
-_02209F58: .word FUN_02209F84
+_02209F58: .word MOD04_02209F84
- arm_func_start FUN_02209F5C
-FUN_02209F5C: ; 0x02209F5C
+ arm_func_start MOD04_02209F5C
+MOD04_02209F5C: ; 0x02209F5C
stmdb sp!, {lr}
sub sp, sp, #4
ldr r0, _02209F80 ; =0x02211A24
@@ -56998,14 +56998,14 @@ FUN_02209F5C: ; 0x02209F5C
.align 2, 0
_02209F80: .word 0x02211A24
- arm_func_start FUN_02209F84
-FUN_02209F84: ; 0x02209F84
+ arm_func_start MOD04_02209F84
+MOD04_02209F84: ; 0x02209F84
ands r1, r0, #0x8000
bicne r0, r0, #0x8000
bx lr
- arm_func_start FUN_02209F90
-FUN_02209F90: ; 0x02209F90
+ arm_func_start MOD04_02209F90
+MOD04_02209F90: ; 0x02209F90
ldr ip, _02209FA4 ; =0x020CE3E0
mov r3, r0
mov r0, r1
@@ -57014,8 +57014,8 @@ FUN_02209F90: ; 0x02209F90
.align 2, 0
_02209FA4: .word 0x020CE3E0
- arm_func_start FUN_02209FA8
-FUN_02209FA8: ; 0x02209FA8
+ arm_func_start MOD04_02209FA8
+MOD04_02209FA8: ; 0x02209FA8
ldr ip, _02209FB8 ; =0x020CE34C
mov r2, r1
mov r1, #0
@@ -57023,15 +57023,15 @@ FUN_02209FA8: ; 0x02209FA8
.align 2, 0
_02209FB8: .word 0x020CE34C
- arm_func_start FUN_02209FBC
-FUN_02209FBC: ; 0x02209FBC
+ arm_func_start MOD04_02209FBC
+MOD04_02209FBC: ; 0x02209FBC
ldr ip, _02209FC4 ; =0x020DE0BC
bx ip
.align 2, 0
_02209FC4: .word 0x020DE0BC
- arm_func_start FUN_02209FC8
-FUN_02209FC8: ; 0x02209FC8
+ arm_func_start MOD04_02209FC8
+MOD04_02209FC8: ; 0x02209FC8
cmp r2, #0
ble _0220A030
_02209FD0:
@@ -57067,15 +57067,15 @@ _0220A030:
mov r0, r2
bx lr
- arm_func_start FUN_0220A038
-FUN_0220A038: ; 0x0220A038
+ arm_func_start MOD04_0220A038
+MOD04_0220A038: ; 0x0220A038
ldr ip, _0220A040 ; =0x020DE090
bx ip
.align 2, 0
_0220A040: .word 0x020DE090
- arm_func_start FUN_0220A044
-FUN_0220A044: ; 0x0220A044
+ arm_func_start MOD04_0220A044
+MOD04_0220A044: ; 0x0220A044
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x124
mov r0, #0
@@ -57179,18 +57179,18 @@ FUN_0220A044: ; 0x0220A044
str r0, [sp, #0xfc]
str r0, [sp, #0x104]
_0220A1DC:
- bl FUN_02208CE0
- bl FUN_022089E0
+ bl MOD04_02208CE0
+ bl MOD04_022089E0
cmp r0, #0
ldrne sb, [r0, #8]
ldrne r4, [r0, #0xc]
ldrne r1, _0220B000 ; =0x02211914
ldreq sb, [sp, #0x20]
strne r0, [r1]
- bl FUN_02208CCC
+ bl MOD04_02208CCC
cmp sb, #0
bge _0220A210
- bl FUN_02208C00
+ bl MOD04_02208C00
b _0220B3E8
_0220A210:
ldr fp, [r4, #0x30]
@@ -57198,7 +57198,7 @@ _0220A210:
cmp r0, #0
bne _0220B348
mov r0, r4
- bl FUN_022099C0
+ bl MOD04_022099C0
str r0, [sp, #0xc]
cmp r0, #0
ldreq r0, [sp, #0x24]
@@ -57233,7 +57233,7 @@ _0220A284:
blt _0220A2C8
mov r1, r5
mov r0, r4
- bl FUN_02209E7C
+ bl MOD04_02209E7C
cmp r0, #0
ldrlt r0, [sp, #0x34]
ldr r5, [sp, #0x38]
@@ -57243,16 +57243,16 @@ _0220A284:
bne _0220B348
_0220A2C8:
mov r0, r4
- bl FUN_02209ED4
+ bl MOD04_02209ED4
movs r5, r0
ldrmi r0, [sp, #0x3c]
strmi r0, [sp, #4]
bmi _0220B348
- bl FUN_02208CE0
+ bl MOD04_02208CE0
ldr r0, _0220B000 ; =0x02211914
ldr r0, [r0]
str r5, [r0, #0x10]
- bl FUN_02208CCC
+ bl MOD04_02208CCC
ldr r0, [r4, #4]
cmp r0, #0
bne _0220B348
@@ -57260,7 +57260,7 @@ _0220A2C8:
ldr r3, [r4, #0x28]
mov r0, r4
mov r1, r5
- bl FUN_02209E00
+ bl MOD04_02209E00
cmp r0, #0
ldrge r0, [sp, #0x2c]
strge r0, [sp, #8]
@@ -57268,12 +57268,12 @@ _0220A2C8:
strlt r0, [sp, #8]
b _0220A344
_0220A32C:
- bl FUN_02209F5C
- bl FUN_02208CE0
+ bl MOD04_02209F5C
+ bl MOD04_02208CE0
ldr r0, _0220B000 ; =0x02211914
ldr r0, [r0]
str r5, [r0, #0x10]
- bl FUN_02208CCC
+ bl MOD04_02208CCC
_0220A344:
ldr r0, [r4, #4]
cmp r0, #0
@@ -57287,7 +57287,7 @@ _0220A344:
str r0, [sp, #0x108]
str r0, [sp, #8]
ldr r0, [r4, #0x24]
- bl FUN_02209FBC
+ bl MOD04_02209FBC
mov sb, r0
ldr r0, [sp, #0x34]
str r0, [sp, #4]
@@ -57306,7 +57306,7 @@ _0220A3A4:
mov r0, r4
mov r1, r5
mov r2, r8
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57319,7 +57319,7 @@ _0220A3D4:
mov r0, r4
mov r1, r5
mov r2, r8
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57332,7 +57332,7 @@ _0220A404:
mov r0, r4
mov r1, r5
mov r2, r8
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57349,7 +57349,7 @@ _0220A430:
mov r2, r8
ldr r3, [r4, #0x24]
add r3, r3, sl
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57362,7 +57362,7 @@ _0220A474:
mov r0, r4
mov r1, r5
mov r2, r8
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57374,7 +57374,7 @@ _0220A4A0:
mov r0, r4
mov r1, r5
mov r2, r8
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57390,7 +57390,7 @@ _0220A4A0:
ldr r0, [sp, #0x58]
str r0, [sp]
mov r0, r4
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57405,7 +57405,7 @@ _0220A4A0:
mov r2, r8
ldr r3, [r4, #0x24]
add r3, r3, sb
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57416,18 +57416,18 @@ _0220A548:
mov r1, r5
mov r2, r8
str r7, [sp]
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
beq _0220A284
add r0, r4, #0x34
- bl FUN_02208888
+ bl MOD04_02208888
movs sb, r0
beq _0220A660
_0220A580:
ldr r0, [sb, #8]
- bl FUN_02209FBC
+ bl MOD04_02209FBC
cmp r0, #0
beq _0220A5B8
str r0, [sp]
@@ -57435,7 +57435,7 @@ _0220A580:
mov r1, r5
mov r2, r8
ldr r3, [sb, #8]
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57446,13 +57446,13 @@ _0220A5B8:
mov r1, r5
mov r2, r8
str r7, [sp]
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
beq _0220A284
ldr r0, [sb, #0xc]
- bl FUN_02209FBC
+ bl MOD04_02209FBC
cmp r0, #0
beq _0220A618
str r0, [sp]
@@ -57460,7 +57460,7 @@ _0220A5B8:
mov r1, r5
mov r2, r8
ldr r3, [sb, #0xc]
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57471,7 +57471,7 @@ _0220A618:
mov r1, r5
mov r2, r8
str r7, [sp]
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57481,7 +57481,7 @@ _0220A618:
ldr r1, [r1]
blx r1
add r0, r4, #0x34
- bl FUN_02208888
+ bl MOD04_02208888
movs sb, r0
bne _0220A580
_0220A660:
@@ -57516,7 +57516,7 @@ _0220A6B4:
_0220A6C8:
ldr r0, [sb, #8]
add sl, sl, #0x16
- bl FUN_02209FBC
+ bl MOD04_02209FBC
add r0, r0, #0x29
add sl, sl, r0
ldr r0, [sb, #0x14]
@@ -57541,7 +57541,7 @@ _0220A714:
mov r1, r5
mov r2, r8
add sl, sl, #0x18
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57552,7 +57552,7 @@ _0220A714:
mov r0, r4
mov r2, r8
add r3, r4, #0x46
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57562,7 +57562,7 @@ _0220A714:
mov r1, r5
mov r2, r8
str r7, [sp]
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57573,11 +57573,11 @@ _0220A79C:
beq _0220A7E0
_0220A7A4:
ldr r0, [sb, #8]
- bl FUN_0220BA58
+ bl MOD04_0220BA58
add r0, sl, r0
add sl, r0, #1
ldr r0, [sb, #0xc]
- bl FUN_0220BA58
+ bl MOD04_0220BA58
add sl, sl, r0
ldr r0, [r4, #0x38]
ldr r0, [r0]
@@ -57594,7 +57594,7 @@ _0220A7E0:
mov r0, r4
mov r1, r5
mov r2, r8
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57606,14 +57606,14 @@ _0220A80C:
mov r0, r4
mov r1, r5
mov r2, r8
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
beq _0220A284
mov r1, sl
mov r0, r6
- bl FUN_0220B788
+ bl MOD04_0220B788
str r0, [sp, #0x10c]
cmp r0, #0
beq _0220A878
@@ -57622,7 +57622,7 @@ _0220A80C:
mov r1, r5
mov r2, r8
mov r3, r6
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57633,7 +57633,7 @@ _0220A878:
mov r1, r5
mov r2, r8
str r7, [sp]
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57644,7 +57644,7 @@ _0220A8A0:
mov r1, r5
mov r2, r8
str r7, [sp]
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57665,7 +57665,7 @@ _0220A8EC:
mov r0, r4
mov r2, r8
add r3, r4, #0x44
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57675,7 +57675,7 @@ _0220A8EC:
mov r1, r5
mov r2, r8
str r7, [sp]
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57686,13 +57686,13 @@ _0220A8EC:
mov r0, r4
mov r1, r5
mov r2, r8
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
beq _0220A284
ldr r0, [sb, #8]
- bl FUN_02209FBC
+ bl MOD04_02209FBC
cmp r0, #0
beq _0220A9A4
str r0, [sp]
@@ -57700,7 +57700,7 @@ _0220A8EC:
mov r1, r5
mov r2, r8
ldr r3, [sb, #8]
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57712,7 +57712,7 @@ _0220A9A4:
mov r0, r4
mov r1, r5
mov r2, r8
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57726,7 +57726,7 @@ _0220A9A4:
mov r0, r4
mov r1, r5
mov r2, r8
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57737,7 +57737,7 @@ _0220AA08:
mov r1, r5
mov r2, r8
str r7, [sp]
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57750,7 +57750,7 @@ _0220AA08:
mov r1, r5
mov r2, r8
ldr r3, [sb, #0xc]
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57761,7 +57761,7 @@ _0220AA64:
mov r1, r5
mov r2, r8
str r7, [sp]
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57780,7 +57780,7 @@ _0220AAA8:
mov r0, r4
mov r2, r8
add r3, r4, #0x44
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57791,7 +57791,7 @@ _0220AAA8:
mov r0, r4
mov r1, r5
mov r2, r8
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57810,7 +57810,7 @@ _0220AB10:
_0220AB24:
ldrsb r1, [r1, sb]
mov r0, r6
- bl FUN_0220B9CC
+ bl MOD04_0220B9CC
str r0, [sp, #0x10c]
cmp r0, #0
beq _0220AB64
@@ -57819,7 +57819,7 @@ _0220AB24:
mov r1, r5
mov r2, r8
mov r3, r6
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57837,7 +57837,7 @@ _0220AB78:
mov r0, r4
mov r1, r5
mov r2, r8
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57850,7 +57850,7 @@ _0220AB78:
_0220ABB8:
ldrsb r1, [r1, sb]
mov r0, r6
- bl FUN_0220B9CC
+ bl MOD04_0220B9CC
str r0, [sp, #0x10c]
cmp r0, #0
beq _0220ABF8
@@ -57859,7 +57859,7 @@ _0220ABB8:
mov r1, r5
mov r2, r8
mov r3, r6
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57881,7 +57881,7 @@ _0220AC0C:
mov r0, r4
mov r1, r5
mov r2, r8
- bl FUN_0220B490
+ bl MOD04_0220B490
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57898,7 +57898,7 @@ _0220AC54:
str r0, [sp]
mov r0, r4
mov r1, r5
- bl FUN_02209D68
+ bl MOD04_02209D68
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -57929,7 +57929,7 @@ _0220ACB4:
ldr r3, [sp, #0x2c]
mov r0, r4
mov r1, r5
- bl FUN_02209DB4
+ bl MOD04_02209DB4
ldr r3, [sp, #0x108]
add r1, fp, r3
ldrsb r2, [r1, #0x20]
@@ -57973,7 +57973,7 @@ _0220AD6C:
mov r0, r4
mov r1, r5
add r2, r2, sl
- bl FUN_02209DB4
+ bl MOD04_02209DB4
add r1, sb, sl
ldrsb r2, [r1, #4]
ldr r1, [sp, #0x108]
@@ -58015,13 +58015,13 @@ _0220ADA0:
ldr r2, [sp, #0x9c]
ldr r3, [sp, #0xa0]
mov r0, fp
- bl FUN_02208DCC
+ bl MOD04_02208DCC
cmp r0, #0
beq _0220B348
ldr r0, _0220B04C ; =0x02211A44
ldr r1, _0220B058 ; =0x0220FB60
ldr r2, [sp, #0x44]
- bl FUN_02209FC8
+ bl MOD04_02209FC8
cmp r0, #0
bne _0220B348
ldr r0, _0220B04C ; =0x02211A44
@@ -58030,20 +58030,20 @@ _0220ADA0:
bne _0220B348
ldr r0, _0220B05C ; =0x02211A4D
ldr r1, [sp, #0x3c]
- bl FUN_0220B844
+ bl MOD04_0220B844
cmp r0, #0
blt _0220B348
ldr r1, [sp, #0xa4]
ldr r2, [fp]
mov r0, fp
add r3, sp, #0x110
- bl FUN_02209014
+ bl MOD04_02209014
cmp r0, #0
blt _0220B348
ldr r1, _0220B060 ; =0x0220FB68
mov r0, fp
add r2, sp, #0x10c
- bl FUN_02209BB8
+ bl MOD04_02209BB8
movs sb, r0
ldreq r0, [sp, #0xa8]
streq r0, [sp, #4]
@@ -58056,12 +58056,12 @@ _0220ADA0:
ldr r2, [sp, #0x10c]
mov r0, fp
mov r3, sb
- bl FUN_02208DCC
+ bl MOD04_02208DCC
cmp r0, #0
beq _0220B348
ldr r0, _0220B04C ; =0x02211A44
mov r1, sb
- bl FUN_0220B844
+ bl MOD04_0220B844
movs sb, r0
bmi _0220B348
str sb, [r4, #0x14]
@@ -58078,7 +58078,7 @@ _0220AF00:
ldr r1, _0220B064 ; =0x0220FB78
mov r0, fp
add r2, sp, #0x10c
- bl FUN_02209BB8
+ bl MOD04_02209BB8
str r0, [sp, #8]
cmp r0, #0
beq _0220B348
@@ -58095,7 +58095,7 @@ _0220AF00:
ldr r3, _0220B068 ; =0x0220FB84
mov r0, fp
add r2, r1, r2
- bl FUN_02208EC4
+ bl MOD04_02208EC4
cmp r0, #0
ldreq r0, [sp, #0x2c]
streq r0, [sp, #8]
@@ -58109,7 +58109,7 @@ _0220AF88:
ldr r1, _0220B06C ; =0x0220FB90
mov r0, fp
add r2, sp, #0x10c
- bl FUN_02209BB8
+ bl MOD04_02209BB8
movs r2, r0
beq _0220B348
cmp r2, #0x400
@@ -58123,7 +58123,7 @@ _0220AF88:
str r3, [sp]
ldr r3, _0220B070 ; =0x0220FBA4
add r2, r1, r2
- bl FUN_02208EC4
+ bl MOD04_02208EC4
cmp r0, #0
ldreq r1, [sp, #0x2c]
ldrne r1, [sp, #0xcc]
@@ -58175,7 +58175,7 @@ _0220B074:
ldr r2, [fp, #4]
mov r0, r4
mov r3, sb
- bl FUN_02208D18
+ bl MOD04_02208D18
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -58189,7 +58189,7 @@ _0220B0B0:
ble _0220B0CC
mov r0, fp
ldr r1, [fp, #4]
- bl FUN_02208DB8
+ bl MOD04_02208DB8
cmp r0, #0
beq _0220B074
_0220B0CC:
@@ -58197,7 +58197,7 @@ _0220B0CC:
beq _0220B0F8
ldr r1, [fp, #4]
mov r0, fp
- bl FUN_02208DB8
+ bl MOD04_02208DB8
cmp r0, #0
ldrne r0, [sp, #0x58]
strne r0, [sp, #4]
@@ -58227,7 +58227,7 @@ _0220B124:
mov r0, r4
mov r1, r5
add r2, r2, sb
- bl FUN_02209DB4
+ bl MOD04_02209DB4
cmp r0, #0
blt _0220B348
ldr r2, [sp, #0x108]
@@ -58253,7 +58253,7 @@ _0220B18C:
str r2, [sp, #0x10c]
mov r0, r4
mov r1, r5
- bl FUN_0220B404
+ bl MOD04_0220B404
cmp r0, #0
ble _0220B348
_0220B1B4:
@@ -58261,7 +58261,7 @@ _0220B1B4:
cmp r1, #0
beq _0220B348
ldr r0, _0220B04C ; =0x02211A44
- bl FUN_0220B8E4
+ bl MOD04_0220B8E4
str r0, [sp, #0x1c]
cmp r0, #0
bge _0220B1EC
@@ -58290,7 +58290,7 @@ _0220B214:
ldr r2, [fp, #4]
mov r0, r4
mov r1, r5
- bl FUN_02208D18
+ bl MOD04_02208D18
cmp r0, #0
ble _0220B348
ldr r1, [sp, #0x1c]
@@ -58306,7 +58306,7 @@ _0220B214:
mov r0, r4
mov r1, r5
mov r3, r7
- bl FUN_02209DB4
+ bl MOD04_02209DB4
cmp r0, #0
ble _0220B348
_0220B278:
@@ -58317,14 +58317,14 @@ _0220B278:
_0220B288:
mov r0, r4
mov r1, r5
- bl FUN_0220B404
+ bl MOD04_0220B404
ldr r0, [sp, #0xec]
str r0, [sp, #4]
b _0220B348
_0220B2A0:
mov r0, fp
ldr r1, [fp, #4]
- bl FUN_02208DB8
+ bl MOD04_02208DB8
cmp r0, #0
bne _0220B348
_0220B2B4:
@@ -58332,7 +58332,7 @@ _0220B2B4:
ldr r3, [sp, #0xf0]
mov r0, r4
mov r1, r5
- bl FUN_02208D88
+ bl MOD04_02208D88
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -58344,7 +58344,7 @@ _0220B2B4:
str r0, [fp, #4]
mov r0, fp
ldr r1, [fp, #4]
- bl FUN_02208DB8
+ bl MOD04_02208DB8
cmp r0, #0
beq _0220B334
ldr r0, [sp, #0xf8]
@@ -58353,7 +58353,7 @@ _0220B2B4:
ldr r3, [sp, #0x2c]
mov r0, r4
mov r1, r5
- bl FUN_02209DB4
+ bl MOD04_02209DB4
cmp r0, #0
blt _0220B348
cmp r0, #0
@@ -58363,11 +58363,11 @@ _0220B2B4:
_0220B334:
mov r0, fp
ldr r1, [fp, #4]
- bl FUN_02208DB8
+ bl MOD04_02208DB8
cmp r0, #0
beq _0220B2B4
_0220B348:
- bl FUN_02208CE0
+ bl MOD04_02208CE0
ldr r0, _0220B000 ; =0x02211914
ldr r1, _0220B024 ; =0x02211904
ldr r0, [r0]
@@ -58376,7 +58376,7 @@ _0220B348:
ldr r1, [sp, #0xfc]
ldr r0, _0220B000 ; =0x02211914
str r1, [r0]
- bl FUN_02208CCC
+ bl MOD04_02208CCC
ldr r0, [r4, #4]
cmp r0, #0
ldrne r0, [sp, #0x50]
@@ -58385,7 +58385,7 @@ _0220B348:
blt _0220B3A4
mov r1, r5
mov r0, r4
- bl FUN_02209E7C
+ bl MOD04_02209E7C
cmp r0, #0
ldrlt r0, [sp, #0x34]
ldr r5, [sp, #0x100]
@@ -58403,7 +58403,7 @@ _0220B3A4:
ldr sl, [r4, #0x2c]
mov r0, r4
ldr sb, [r4, #0x3c]
- bl FUN_02209338
+ bl MOD04_02209338
ldr r0, [sp, #4]
mov r1, fp
mov r2, sl
@@ -58418,8 +58418,8 @@ _0220B3E8:
.align 2, 0
_0220B400: .word 0x02211908
- arm_func_start FUN_0220B404
-FUN_0220B404: ; 0x0220B404
+ arm_func_start MOD04_0220B404
+MOD04_0220B404: ; 0x0220B404
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #8
mov r7, #0
@@ -58437,7 +58437,7 @@ _0220B434:
mov r1, sb
mov r3, r5
str r6, [sp]
- bl FUN_02209DB4
+ bl MOD04_02209DB4
cmp r0, #0
addle sp, sp, #8
ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
@@ -58458,8 +58458,8 @@ _0220B45C:
add sp, sp, #8
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
- arm_func_start FUN_0220B490
-FUN_0220B490: ; 0x0220B490
+ arm_func_start MOD04_0220B490
+MOD04_0220B490: ; 0x0220B490
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #4
ldr r7, [sp, #0x28]
@@ -58485,7 +58485,7 @@ _0220B4BC:
mov r1, r8
mov r2, r6
add r0, r0, r3
- bl FUN_02209F90
+ bl MOD04_02209F90
ldr r0, [sb]
add r8, r8, r6
add r0, r0, r6
@@ -58499,7 +58499,7 @@ _0220B4BC:
mov r1, fp
mov r3, r4
str r5, [sp]
- bl FUN_02209D68
+ bl MOD04_02209D68
cmp r0, #0
addle sp, sp, #4
ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
@@ -58516,8 +58516,8 @@ _0220B54C:
.align 2, 0
_0220B558: .word 0x02211A44
- arm_func_start FUN_0220B55C
-FUN_0220B55C: ; 0x0220B55C
+ arm_func_start MOD04_0220B55C
+MOD04_0220B55C: ; 0x0220B55C
stmdb sp!, {r4, r5, lr}
sub sp, sp, #4
mov r5, r0
@@ -58525,7 +58525,7 @@ FUN_0220B55C: ; 0x0220B55C
mov r4, r1
str r0, [r5]
str r0, [r4]
- bl FUN_02208CE0
+ bl MOD04_02208CE0
ldr r1, _0220B5FC ; =0x02211914
ldr r2, [r1]
cmp r2, #0
@@ -58557,7 +58557,7 @@ _0220B5D8:
movne r4, #1
moveq r4, #0
_0220B5EC:
- bl FUN_02208CCC
+ bl MOD04_02208CCC
mov r0, r4
add sp, sp, #4
ldmia sp!, {r4, r5, pc}
@@ -58565,8 +58565,8 @@ _0220B5EC:
_0220B5FC: .word 0x02211914
_0220B600: .word 0x02211910
- arm_func_start FUN_0220B604
-FUN_0220B604: ; 0x0220B604
+ arm_func_start MOD04_0220B604
+MOD04_0220B604: ; 0x0220B604
stmdb sp!, {r4, r5, r6, r7, r8, lr}
cmp r1, r3
mvnlt r0, #0
@@ -58606,8 +58606,8 @@ _0220B680:
mvn r0, #0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
- arm_func_start FUN_0220B688
-FUN_0220B688: ; 0x0220B688
+ arm_func_start MOD04_0220B688
+MOD04_0220B688: ; 0x0220B688
stmdb sp!, {lr}
sub sp, sp, #4
mov ip, #0
@@ -58643,8 +58643,8 @@ _0220B6F0:
add sp, sp, #4
ldmfd sp!, {pc}
- arm_func_start FUN_0220B704
-FUN_0220B704: ; 0x0220B704
+ arm_func_start MOD04_0220B704
+MOD04_0220B704: ; 0x0220B704
stmdb sp!, {r4, lr}
mov r2, #1
mov r3, #0
@@ -58685,8 +58685,8 @@ _0220B76C:
mvn r0, #0
ldmia sp!, {r4, pc}
- arm_func_start FUN_0220B788
-FUN_0220B788: ; 0x0220B788
+ arm_func_start MOD04_0220B788
+MOD04_0220B788: ; 0x0220B788
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x24
ldr r6, _0220B840 ; =0x0220BE70
@@ -58739,8 +58739,8 @@ _0220B81C:
.align 2, 0
_0220B840: .word 0x0220BE70
- arm_func_start FUN_0220B844
-FUN_0220B844: ; 0x0220B844
+ arm_func_start MOD04_0220B844
+MOD04_0220B844: ; 0x0220B844
stmdb sp!, {r4, r5, r6, lr}
cmp r1, #0xa
mvngt r0, #0
@@ -58789,8 +58789,8 @@ _0220B8DC:
mov r0, r5
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_0220B8E4
-FUN_0220B8E4: ; 0x0220B8E4
+ arm_func_start MOD04_0220B8E4
+MOD04_0220B8E4: ; 0x0220B8E4
stmdb sp!, {r4, r5, r6, lr}
cmp r1, #8
mvngt r0, #0
@@ -58859,8 +58859,8 @@ _0220B9C4:
mov r0, r4
ldmia sp!, {r4, r5, r6, pc}
- arm_func_start FUN_0220B9CC
-FUN_0220B9CC: ; 0x0220B9CC
+ arm_func_start MOD04_0220B9CC
+MOD04_0220B9CC: ; 0x0220B9CC
cmp r1, #0x20
moveq r1, #0x2b
streqb r1, [r0]
@@ -58901,8 +58901,8 @@ _0220BA1C:
mov r0, #3
bx lr
- arm_func_start FUN_0220BA58
-FUN_0220BA58: ; 0x0220BA58
+ arm_func_start MOD04_0220BA58
+MOD04_0220BA58: ; 0x0220BA58
ldrsb r1, [r0], #1
mov r2, #0
cmp r1, #0
@@ -58938,9 +58938,12 @@ _0220BAB8:
mov r0, r2
bx lr
- .section .data
+ .section .rodata
; 0x0220BAC0
- .incbin "baserom.nds", 0x1411e0, 0x4100
+ .incbin "baserom.nds", 0x1411e0, 0x3D4
+
+ .section .data
+ .incbin "baserom.nds", 0x1415C0, 0x3D20
.section .bss
; 0x0220FBC0
diff --git a/arm9/modules/04/asm/thumb_04.s b/arm9/modules/04/asm/thumb_04.s
index 51ee9793..fd1f2483 100644
--- a/arm9/modules/04/asm/thumb_04.s
+++ b/arm9/modules/04/asm/thumb_04.s
@@ -154,7 +154,7 @@ _021D7608:
strb r4, [r3, r1]
cmp r0, #0x20
blt _021D7608
- bl FUN_021D85B4
+ bl MOD04_021D85B4
ldr r0, _021D7644 ; =0x0220FBC0
ldr r1, [r0]
ldr r0, _021D7658 ; =0x00001EF0
@@ -186,8 +186,8 @@ _021D7654: .word 0x00001F08
_021D7658: .word 0x00001EF0
_021D765C: .word 0x00001F38
- thumb_func_start FUN_021D7660
-FUN_021D7660: ; 0x021D7660
+ thumb_func_start MOD04_021D7660
+MOD04_021D7660: ; 0x021D7660
push {r3, lr}
ldr r0, _021D76A0 ; =0x0220FBC0
ldr r1, [r0]
@@ -214,15 +214,15 @@ FUN_021D7660: ; 0x021D7660
str r1, [r0, #4]
str r1, [r0]
_021D7698:
- bl FUN_021DD6F0
+ bl MOD04_021DD6F0
pop {r3, pc}
nop
_021D76A0: .word 0x0220FBC0
_021D76A4: .word 0x00001F08
_021D76A8: .word 0x00001F54
- thumb_func_start FUN_021D76AC
-FUN_021D76AC: ; 0x021D76AC
+ thumb_func_start MOD04_021D76AC
+MOD04_021D76AC: ; 0x021D76AC
push {lr}
sub sp, #0x64
ldr r0, _021D779C ; =0x0220FBC0
@@ -244,9 +244,9 @@ _021D76C8: ; jump table
.short _021D7784 - _021D76C8 - 2 ; case 3
.short _021D778A - _021D76C8 - 2 ; case 4
_021D76D2:
- ldr r0, _021D77A4 ; =FUN_021D7DA8
- ldr r1, _021D77A8 ; =FUN_021D7DEC
- bl FUN_021DD968
+ ldr r0, _021D77A4 ; =MOD04_021D7DA8
+ ldr r1, _021D77A8 ; =MOD04_021D7DEC
+ bl MOD04_021DD968
ldr r0, _021D779C ; =0x0220FBC0
mov r2, #1
ldr r1, [r0]
@@ -254,10 +254,10 @@ _021D76D2:
mov r3, #0x14
add r0, r1, r0
mov r1, #2
- bl FUN_021DDEE0
+ bl MOD04_021DDEE0
mov r0, #2
- bl FUN_021DDE7C
- bl FUN_021DDDCC
+ bl MOD04_021DDE7C
+ bl MOD04_021DDDCC
ldr r1, _021D779C ; =0x0220FBC0
ldr r0, _021D77A0 ; =0x00001F44
ldr r2, [r1]
@@ -268,10 +268,10 @@ _021D76D2:
add r0, #0x14
str r2, [r1, r0]
_021D7708:
- bl FUN_021DDD7C
+ bl MOD04_021DDD7C
cmp r0, #0
beq _021D7730
- bl FUN_021DDC1C
+ bl MOD04_021DDC1C
cmp r0, #4
bne _021D7724
ldr r0, _021D779C ; =0x0220FBC0
@@ -288,10 +288,10 @@ _021D7724:
str r2, [r1, r0]
b _021D7736
_021D7730:
- bl FUN_021DDCE8
+ bl MOD04_021DDCE8
b _021D7794
_021D7736:
- bl FUN_021D7E18
+ bl MOD04_021D7E18
cmp r0, #0
blt _021D7798
ldr r0, _021D779C ; =0x0220FBC0
@@ -313,46 +313,46 @@ _021D7736:
add r0, r1, r0
ldr r1, [r1, r2]
ldr r2, _021D77BC ; =0x000029E7
- bl FUN_021E0374
+ bl MOD04_021E0374
add r0, sp, #0x14
bl OS_GetOwnerInfo
mov r1, #0
- ldr r2, _021D77C0 ; =FUN_021D7A7C
+ ldr r2, _021D77C0 ; =MOD04_021D7A7C
add r0, sp, #0x18
add r3, r1, #0
- bl FUN_021DFE64
+ bl MOD04_021DFE64
ldr r0, _021D779C ; =0x0220FBC0
mov r2, #3
ldr r1, [r0]
ldr r0, _021D77A0 ; =0x00001F44
str r2, [r1, r0]
_021D7784:
- bl FUN_021DFF74
+ bl MOD04_021DFF74
b _021D7794
_021D778A:
- bl FUN_021DFF74
+ bl MOD04_021DFF74
add sp, #0x64
mov r0, #1
pop {pc}
_021D7794:
- bl FUN_021D7E18
+ bl MOD04_021D7E18
_021D7798:
add sp, #0x64
pop {pc}
.align 2, 0
_021D779C: .word 0x0220FBC0
_021D77A0: .word 0x00001F44
-_021D77A4: .word FUN_021D7DA8
-_021D77A8: .word FUN_021D7DEC
+_021D77A4: .word MOD04_021D7DA8
+_021D77A8: .word MOD04_021D7DEC
_021D77AC: .word 0x00001EF4
_021D77B0: .word 0x0220BEA0
_021D77B4: .word 0x0220BEAC
_021D77B8: .word 0x00001EF0
_021D77BC: .word 0x000029E7
-_021D77C0: .word FUN_021D7A7C
+_021D77C0: .word MOD04_021D7A7C
- thumb_func_start FUN_021D77C4
-FUN_021D77C4: ; 0x021D77C4
+ thumb_func_start MOD04_021D77C4
+MOD04_021D77C4: ; 0x021D77C4
push {r3, r4}
ldr r3, _021D77D8 ; =0x0220FBC0
ldr r2, _021D77DC ; =0x00001F0C
@@ -367,8 +367,8 @@ FUN_021D77C4: ; 0x021D77C4
_021D77D8: .word 0x0220FBC0
_021D77DC: .word 0x00001F0C
- thumb_func_start FUN_021D77E0
-FUN_021D77E0: ; 0x021D77E0
+ thumb_func_start MOD04_021D77E0
+MOD04_021D77E0: ; 0x021D77E0
ldr r0, _021D77F8 ; =0x0220FBC0
ldr r2, [r0]
ldr r0, _021D77FC ; =0x00001F44
@@ -386,8 +386,8 @@ _021D77F2:
_021D77F8: .word 0x0220FBC0
_021D77FC: .word 0x00001F44
- thumb_func_start FUN_021D7800
-FUN_021D7800: ; 0x021D7800
+ thumb_func_start MOD04_021D7800
+MOD04_021D7800: ; 0x021D7800
push {r3, r4, r5, lr}
ldr r2, _021D78EC ; =0x0220FBC0
ldr r1, _021D78F0 ; =0x00001F44
@@ -444,24 +444,24 @@ _021D783A:
_021D7864:
cmp r3, #0
bne _021D786E
- bl FUN_021EA530
+ bl MOD04_021EA530
b _021D78E4
_021D786E:
- bl FUN_021DFA40
+ bl MOD04_021DFA40
cmp r0, #1
bne _021D787C
- bl FUN_021D77E0
+ bl MOD04_021D77E0
b _021D78E4
_021D787C:
cmp r0, #0
beq _021D78E4
- bl FUN_021D77E0
+ bl MOD04_021D77E0
b _021D78E4
_021D7886:
mov r0, #1
add r1, #0x40
strh r0, [r4, r1]
- bl FUN_021D8058
+ bl MOD04_021D8058
ldr r0, _021D78EC ; =0x0220FBC0
ldr r2, [r0]
ldr r0, _021D78F8 ; =0x00001F68
@@ -506,10 +506,10 @@ _021D78C4:
mov r0, #3
pop {r3, r4, r5, pc}
_021D78DE:
- bl FUN_021D7E18
+ bl MOD04_021D7E18
pop {r3, r4, r5, pc}
_021D78E4:
- bl FUN_021D7F8C
+ bl MOD04_021D7F8C
pop {r3, r4, r5, pc}
nop
_021D78EC: .word 0x0220FBC0
@@ -517,8 +517,8 @@ _021D78F0: .word 0x00001F44
_021D78F4: .word 0x00001F48
_021D78F8: .word 0x00001F68
- thumb_func_start FUN_021D78FC
-FUN_021D78FC: ; 0x021D78FC
+ thumb_func_start MOD04_021D78FC
+MOD04_021D78FC: ; 0x021D78FC
push {r4, r5, r6, lr}
add r5, r0, #0
mov r0, #1
@@ -529,7 +529,7 @@ FUN_021D78FC: ; 0x021D78FC
mov r0, #0
pop {r4, r5, r6, pc}
_021D790E:
- bl FUN_021DF95C
+ bl MOD04_021DF95C
cmp r0, #0
bne _021D7930
ldr r0, _021D79A0 ; =0x0220FBC0
@@ -554,7 +554,7 @@ _021D7930:
cmp r0, #0
bne _021D7946
mov r0, #0
- bl FUN_021EB0FC
+ bl MOD04_021EB0FC
cmp r0, #0
bne _021D794A
_021D7946:
@@ -599,7 +599,7 @@ _021D794A:
add r1, r2, r1
mov r0, #0
add r2, r4, #4
- bl FUN_021EB044
+ bl MOD04_021EB044
mov r0, #1
pop {r4, r5, r6, pc}
.align 2, 0
@@ -609,8 +609,8 @@ _021D79A8: .word 0x00001F4C
_021D79AC: .word 0x00001F78
_021D79B0: .word 0x00001002
- thumb_func_start FUN_021D79B4
-FUN_021D79B4: ; 0x021D79B4
+ thumb_func_start MOD04_021D79B4
+MOD04_021D79B4: ; 0x021D79B4
push {r4, r5, r6, lr}
add r5, r0, #0
mov r0, #1
@@ -621,7 +621,7 @@ FUN_021D79B4: ; 0x021D79B4
mov r0, #0
pop {r4, r5, r6, pc}
_021D79C6:
- bl FUN_021DF95C
+ bl MOD04_021DF95C
cmp r0, #0
beq _021D79D2
mov r0, #0
@@ -634,7 +634,7 @@ _021D79D2:
cmp r0, #0
bne _021D79E8
mov r0, #1
- bl FUN_021EB0FC
+ bl MOD04_021EB0FC
cmp r0, #0
bne _021D79EC
_021D79E8:
@@ -678,7 +678,7 @@ _021D79EC:
lsl r1, r0, #0xc
add r1, r2, r1
add r2, r4, #4
- bl FUN_021EB044
+ bl MOD04_021EB044
cmp r0, #0
bne _021D7A4C
ldr r1, _021D7A68 ; =0x0220FBC0
@@ -709,8 +709,8 @@ _021D7A70: .word 0x00001F78
_021D7A74: .word 0x00001002
_021D7A78: .word 0x00001F10
- thumb_func_start FUN_021D7A7C
-FUN_021D7A7C: ; 0x021D7A7C
+ thumb_func_start MOD04_021D7A7C
+MOD04_021D7A7C: ; 0x021D7A7C
push {r4, r5, lr}
sub sp, #0xc
add r5, r0, #0
@@ -737,18 +737,18 @@ FUN_021D7A7C: ; 0x021D7A7C
_021D7AB0:
cmp r5, #0
bne _021D7AE8
- ldr r0, _021D7B00 ; =FUN_021D7B70
+ ldr r0, _021D7B00 ; =MOD04_021D7B70
str r4, [sp]
str r0, [sp, #4]
ldr r2, _021D7AF8 ; =0x0220FBC0
str r4, [sp, #8]
ldr r3, [r2]
ldr r2, _021D7AFC ; =0x00001EF0
- ldr r1, _021D7B04 ; =FUN_021D7B48
+ ldr r1, _021D7B04 ; =MOD04_021D7B48
ldr r2, [r3, r2]
- ldr r3, _021D7B08 ; =FUN_021D7B6C
+ ldr r3, _021D7B08 ; =MOD04_021D7B6C
mov r0, #0
- bl FUN_021DFDBC
+ bl MOD04_021DFDBC
cmp r0, #0
bne _021D7ADC
mov r0, #1
@@ -756,9 +756,9 @@ _021D7AB0:
add sp, #0xc
pop {r4, r5, pc}
_021D7ADC:
- ldr r0, _021D7B0C ; =FUN_021D7BBC
+ ldr r0, _021D7B0C ; =MOD04_021D7BBC
mov r1, #0
- bl FUN_021E242C
+ bl MOD04_021E242C
add sp, #0xc
pop {r4, r5, pc}
_021D7AE8:
@@ -772,14 +772,14 @@ _021D7AE8:
nop
_021D7AF8: .word 0x0220FBC0
_021D7AFC: .word 0x00001EF0
-_021D7B00: .word FUN_021D7B70
-_021D7B04: .word FUN_021D7B48
-_021D7B08: .word FUN_021D7B6C
-_021D7B0C: .word FUN_021D7BBC
+_021D7B00: .word MOD04_021D7B70
+_021D7B04: .word MOD04_021D7B48
+_021D7B08: .word MOD04_021D7B6C
+_021D7B0C: .word MOD04_021D7BBC
_021D7B10: .word 0x00001F44
- thumb_func_start FUN_021D7B14
-FUN_021D7B14: ; 0x021D7B14
+ thumb_func_start MOD04_021D7B14
+MOD04_021D7B14: ; 0x021D7B14
push {r3, lr}
ldr r0, _021D7B3C ; =0x0220FBC0
ldr r1, [r0]
@@ -787,7 +787,7 @@ FUN_021D7B14: ; 0x021D7B14
ldr r0, [r1, r0]
cmp r0, #0
beq _021D7B3A
- bl FUN_021DFA40
+ bl MOD04_021DFA40
ldr r1, _021D7B3C ; =0x0220FBC0
mov r3, #0
ldr r2, [r1]
@@ -805,8 +805,8 @@ _021D7B3C: .word 0x0220FBC0
_021D7B40: .word 0x00001F70
_021D7B44: .word 0x00001F60
- thumb_func_start FUN_021D7B48
-FUN_021D7B48: ; 0x021D7B48
+ thumb_func_start MOD04_021D7B48
+MOD04_021D7B48: ; 0x021D7B48
cmp r0, #0
bne _021D7B58
ldr r0, _021D7B64 ; =0x0220FBC0
@@ -826,13 +826,13 @@ _021D7B58:
_021D7B64: .word 0x0220FBC0
_021D7B68: .word 0x00001F44
- thumb_func_start FUN_021D7B6C
-FUN_021D7B6C: ; 0x021D7B6C
+ thumb_func_start MOD04_021D7B6C
+MOD04_021D7B6C: ; 0x021D7B6C
bx lr
.align 2, 0
- thumb_func_start FUN_021D7B70
-FUN_021D7B70: ; 0x021D7B70
+ thumb_func_start MOD04_021D7B70
+MOD04_021D7B70: ; 0x021D7B70
push {r3, r4, r5, lr}
add r5, r0, #0
ldr r0, _021D7BB8 ; =0x0220FBC0
@@ -866,20 +866,20 @@ FUN_021D7B70: ; 0x021D7B70
nop
_021D7BB8: .word 0x0220FBC0
- thumb_func_start FUN_021D7BBC
-FUN_021D7BBC: ; 0x021D7BBC
+ thumb_func_start MOD04_021D7BBC
+MOD04_021D7BBC: ; 0x021D7BBC
bx lr
.align 2, 0
- thumb_func_start FUN_021D7BC0
-FUN_021D7BC0: ; 0x021D7BC0
+ thumb_func_start MOD04_021D7BC0
+MOD04_021D7BC0: ; 0x021D7BC0
push {r3, lr}
ldr r0, _021D7C1C ; =0x0220FBC0
mov r2, #7
ldr r1, [r0]
ldr r0, _021D7C20 ; =0x00001F44
str r2, [r1, r0]
- bl FUN_021DF95C
+ bl MOD04_021DF95C
cmp r0, #0
bne _021D7BDA
mov r2, #1
@@ -900,7 +900,7 @@ _021D7BDE:
ldr r0, [r1, r0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
- bl FUN_021EAE38
+ bl MOD04_021EAE38
ldr r0, _021D7C1C ; =0x0220FBC0
ldr r1, [r0]
ldr r0, _021D7C24 ; =0x00001F50
@@ -908,7 +908,7 @@ _021D7BDE:
ldr r1, _021D7C28 ; =0x00002710
lsl r0, r0, #0x18
lsr r0, r0, #0x18
- bl FUN_021EACF8
+ bl MOD04_021EACF8
ldr r1, _021D7C1C ; =0x0220FBC0
ldr r0, _021D7C2C ; =0x00001F70
ldr r2, [r1]
@@ -925,8 +925,8 @@ _021D7C24: .word 0x00001F50
_021D7C28: .word 0x00002710
_021D7C2C: .word 0x00001F70
- thumb_func_start FUN_021D7C30
-FUN_021D7C30: ; 0x021D7C30
+ thumb_func_start MOD04_021D7C30
+MOD04_021D7C30: ; 0x021D7C30
ldr r1, _021D7C44 ; =0x0220FBC0
ldr r0, _021D7C48 ; =0x00001F4C
ldr r2, [r1]
@@ -940,8 +940,8 @@ FUN_021D7C30: ; 0x021D7C30
_021D7C44: .word 0x0220FBC0
_021D7C48: .word 0x00001F4C
- thumb_func_start FUN_021D7C4C
-FUN_021D7C4C: ; 0x021D7C4C
+ thumb_func_start MOD04_021D7C4C
+MOD04_021D7C4C: ; 0x021D7C4C
push {r3, r4, r5, r6, r7, lr}
sub sp, #8
str r0, [sp]
@@ -997,7 +997,7 @@ _021D7CA0:
strb r6, [r5, r2]
b _021D7CE4
_021D7CB4:
- bl FUN_021D8A54
+ bl MOD04_021D8A54
cmp r0, #0
bne _021D7D4E
mov r0, #1
@@ -1030,14 +1030,14 @@ _021D7CE4:
mov r2, #4
sub r6, r1, #4
add r1, r6, #0
- bl FUN_021D7DA8
+ bl MOD04_021D7DA8
add r5, r0, #0
beq _021D7D4E
add r0, r4, #4
add r1, r5, #0
add r2, r6, #0
bl MI_CpuCopy8
- bl FUN_021DF95C
+ bl MOD04_021DF95C
cmp r0, #0
bne _021D7D2A
ldr r0, _021D7D54 ; =0x0220FBC0
@@ -1072,7 +1072,7 @@ _021D7D44:
mov r0, #0
add r1, r5, #0
add r2, r6, #0
- bl FUN_021D7DEC
+ bl MOD04_021D7DEC
_021D7D4E:
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
@@ -1083,12 +1083,12 @@ _021D7D5C: .word 0x00001F84
_021D7D60: .word 0x00001F0C
_021D7D64: .word 0x00001F10
- thumb_func_start FUN_021D7D68
-FUN_021D7D68: ; 0x021D7D68
+ thumb_func_start MOD04_021D7D68
+MOD04_021D7D68: ; 0x021D7D68
push {r3, lr}
cmp r0, #0
bne _021D7D9A
- bl FUN_021DF978
+ bl MOD04_021DF978
cmp r0, #1
bne _021D7D9A
ldr r0, _021D7D9C ; =0x0220FBC0
@@ -1109,7 +1109,7 @@ _021D7D88:
ldr r0, [r1, r0]
cmp r0, #0
beq _021D7D9A
- bl FUN_021D8C6C
+ bl MOD04_021D8C6C
_021D7D9A:
pop {r3, pc}
.align 2, 0
@@ -1117,8 +1117,8 @@ _021D7D9C: .word 0x0220FBC0
_021D7DA0: .word 0x00001F44
_021D7DA4: .word 0x00001F58
- thumb_func_start FUN_021D7DA8
-FUN_021D7DA8: ; 0x021D7DA8
+ thumb_func_start MOD04_021D7DA8
+MOD04_021D7DA8: ; 0x021D7DA8
push {r4, r5, r6, lr}
add r5, r1, #0
add r6, r2, #0
@@ -1148,8 +1148,8 @@ _021D7DD8:
_021D7DE4: .word 0x0220FBC0
_021D7DE8: .word 0x00001F08
- thumb_func_start FUN_021D7DEC
-FUN_021D7DEC: ; 0x021D7DEC
+ thumb_func_start MOD04_021D7DEC
+MOD04_021D7DEC: ; 0x021D7DEC
push {r3, r4, r5, lr}
add r5, r1, #0
beq _021D7E0C
@@ -1169,13 +1169,13 @@ _021D7E0C:
_021D7E10: .word 0x0220FBC0
_021D7E14: .word 0x00001F08
- thumb_func_start FUN_021D7E18
-FUN_021D7E18: ; 0x021D7E18
+ thumb_func_start MOD04_021D7E18
+MOD04_021D7E18: ; 0x021D7E18
push {r4, lr}
sub sp, #8
add r0, sp, #4
add r1, sp, #0
- bl FUN_021DD718
+ bl MOD04_021DD718
add r4, r0, #0
beq _021D7EFA
ldr r0, [sp]
@@ -1197,7 +1197,7 @@ _021D7E3A: ; jump table
.short _021D7E66 - _021D7E3A - 2 ; case 6
.short _021D7ECE - _021D7E3A - 2 ; case 7
_021D7E4A:
- bl FUN_021DD6F0
+ bl MOD04_021DD6F0
cmp r4, #0xa
blt _021D7E58
add sp, #8
@@ -1246,11 +1246,11 @@ _021D7E82: ; jump table
.short _021D7EA6 - _021D7E82 - 2 ; case 16
.short _021D7EA6 - _021D7E82 - 2 ; case 17
_021D7EA6:
- bl FUN_021E0200
+ bl MOD04_021E0200
_021D7EAA:
- bl FUN_021DDBBC
+ bl MOD04_021DDBBC
_021D7EAE:
- bl FUN_021DD6F0
+ bl MOD04_021DD6F0
_021D7EB2:
ldr r0, _021D7F14 ; =0x0220FBC0
ldr r2, [r0]
@@ -1312,8 +1312,8 @@ _021D7F14: .word 0x0220FBC0
_021D7F18: .word 0x00001F44
_021D7F1C: .word 0x00001F82
- thumb_func_start FUN_021D7F20
-FUN_021D7F20: ; 0x021D7F20
+ thumb_func_start MOD04_021D7F20
+MOD04_021D7F20: ; 0x021D7F20
push {r3, r4, r5, lr}
ldr r0, _021D7F80 ; =0x0220FBC0
ldr r1, [r0]
@@ -1321,12 +1321,12 @@ FUN_021D7F20: ; 0x021D7F20
ldr r0, [r1, r0]
cmp r0, #0
bne _021D7F7E
- bl FUN_021DF95C
+ bl MOD04_021DF95C
mov r1, #1
sub r0, r1, r0
lsl r0, r0, #0x18
lsr r0, r0, #0x18
- bl FUN_021EB0FC
+ bl MOD04_021EB0FC
cmp r0, #0
beq _021D7F7E
ldr r4, _021D7F80 ; =0x0220FBC0
@@ -1352,7 +1352,7 @@ FUN_021D7F20: ; 0x021D7F20
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r2, #4
- bl FUN_021EB044
+ bl MOD04_021EB044
add r0, r4, #0
ldr r1, [r0]
ldr r0, _021D7F88 ; =0x00001F74
@@ -1365,11 +1365,11 @@ _021D7F80: .word 0x0220FBC0
_021D7F84: .word 0x00001F4C
_021D7F88: .word 0x00001F74
- thumb_func_start FUN_021D7F8C
-FUN_021D7F8C: ; 0x021D7F8C
+ thumb_func_start MOD04_021D7F8C
+MOD04_021D7F8C: ; 0x021D7F8C
push {r3, r4, r5, lr}
- bl FUN_021DFF74
- bl FUN_021D83F0
+ bl MOD04_021DFF74
+ bl MOD04_021D83F0
ldr r0, _021D800C ; =0x0220FBC0
ldr r1, _021D8010 ; =0x00001F58
ldr r2, [r0]
@@ -1385,12 +1385,12 @@ FUN_021D7F8C: ; 0x021D7F8C
ldr r0, [r2, r1]
cmp r0, #1
bne _021D7FBA
- bl FUN_021D8D04
+ bl MOD04_021D8D04
b _021D7FBE
_021D7FBA:
- bl FUN_021D8CF0
+ bl MOD04_021D8CF0
_021D7FBE:
- bl FUN_021D8944
+ bl MOD04_021D8944
_021D7FC2:
ldr r4, _021D800C ; =0x0220FBC0
ldr r3, _021D8014 ; =0x00001F44
@@ -1425,17 +1425,17 @@ _021D7FDA:
ldr r0, [r0, r3]
cmp r0, #0
bne _021D8004
- bl FUN_021D7F20
+ bl MOD04_021D7F20
_021D8004:
- bl FUN_021D7E18
+ bl MOD04_021D7E18
pop {r3, r4, r5, pc}
nop
_021D800C: .word 0x0220FBC0
_021D8010: .word 0x00001F58
_021D8014: .word 0x00001F44
- thumb_func_start FUN_021D8018
-FUN_021D8018: ; 0x021D8018
+ thumb_func_start MOD04_021D8018
+MOD04_021D8018: ; 0x021D8018
push {r3, lr}
ldr r0, _021D803C ; =0x0220FBC0
ldr r1, [r0]
@@ -1448,7 +1448,7 @@ FUN_021D8018: ; 0x021D8018
cmp r0, #0xf
bne _021D8034
_021D802E:
- bl FUN_021DF95C
+ bl MOD04_021DF95C
pop {r3, pc}
_021D8034:
mov r0, #0
@@ -1458,8 +1458,8 @@ _021D8034:
_021D803C: .word 0x0220FBC0
_021D8040: .word 0x00001F44
- thumb_func_start FUN_021D8044
-FUN_021D8044: ; 0x021D8044
+ thumb_func_start MOD04_021D8044
+MOD04_021D8044: ; 0x021D8044
ldr r0, _021D8050 ; =0x0220FBC0
mov r2, #0
ldr r1, [r0]
@@ -1470,8 +1470,8 @@ FUN_021D8044: ; 0x021D8044
_021D8050: .word 0x0220FBC0
_021D8054: .word 0x00001F58
- thumb_func_start FUN_021D8058
-FUN_021D8058: ; 0x021D8058
+ thumb_func_start MOD04_021D8058
+MOD04_021D8058: ; 0x021D8058
push {r3, lr}
ldr r0, _021D80CC ; =0x0220FBC0
ldr r2, _021D80D0 ; =0x00001F6C
@@ -1496,34 +1496,34 @@ _021D807E:
sub r2, #0x18
ldr r0, [r0, r2]
mov r1, #1
- bl FUN_021D8A7C
+ bl MOD04_021D8A7C
b _021D80B8
_021D808A:
sub r2, #0x18
ldr r0, [r0, r2]
mov r1, #2
- bl FUN_021D8A7C
+ bl MOD04_021D8A7C
b _021D80B8
_021D8096:
sub r2, #0x18
ldr r0, [r0, r2]
mov r1, #3
- bl FUN_021D8A7C
+ bl MOD04_021D8A7C
b _021D80B8
_021D80A2:
sub r2, #0x18
ldr r0, [r0, r2]
mov r1, #4
- bl FUN_021D8A7C
+ bl MOD04_021D8A7C
b _021D80B8
_021D80AE:
ldr r1, _021D80D4 ; =0x00001F54
ldr r0, [r0, r1]
mov r1, #4
- bl FUN_021D8A7C
+ bl MOD04_021D8A7C
_021D80B8:
- ldr r0, _021D80D8 ; =FUN_021D8044
- bl FUN_021D8C58
+ ldr r0, _021D80D8 ; =MOD04_021D8044
+ bl MOD04_021D8C58
ldr r0, _021D80CC ; =0x0220FBC0
mov r2, #1
ldr r1, [r0]
@@ -1534,11 +1534,11 @@ _021D80B8:
_021D80CC: .word 0x0220FBC0
_021D80D0: .word 0x00001F6C
_021D80D4: .word 0x00001F54
-_021D80D8: .word FUN_021D8044
+_021D80D8: .word MOD04_021D8044
_021D80DC: .word 0x00001F58
- thumb_func_start FUN_021D80E0
-FUN_021D80E0: ; 0x021D80E0
+ thumb_func_start MOD04_021D80E0
+MOD04_021D80E0: ; 0x021D80E0
push {r3, r4, r5, lr}
mov r1, #0x64
add r5, r0, #0
@@ -1789,8 +1789,8 @@ _021D82B0: .word 0x0000EA60
_021D82B4: .word 0x0001869F
_021D82B8: .word 0x00002710
- thumb_func_start FUN_021D82BC
-FUN_021D82BC: ; 0x021D82BC
+ thumb_func_start MOD04_021D82BC
+MOD04_021D82BC: ; 0x021D82BC
push {r3, lr}
cmp r0, #0
bne _021D8346
@@ -1830,7 +1830,7 @@ _021D82FE:
ldr r0, [r0, r2]
cmp r0, #0
beq _021D8316
- bl FUN_021D8C08
+ bl MOD04_021D8C08
ldr r0, _021D8364 ; =0x0220FBC0
mov r2, #0xf
ldr r1, [r0]
@@ -1838,7 +1838,7 @@ _021D82FE:
str r2, [r1, r0]
b _021D835E
_021D8316:
- bl FUN_021DFA40
+ bl MOD04_021DFA40
ldr r0, _021D8364 ; =0x0220FBC0
mov r2, #0x10
ldr r1, [r0]
@@ -1851,7 +1851,7 @@ _021D8328:
ldr r0, [r0, r2]
cmp r0, #0
bne _021D835E
- bl FUN_021DFA40
+ bl MOD04_021DFA40
ldr r0, _021D8364 ; =0x0220FBC0
mov r2, #0x10
ldr r1, [r0]
@@ -1883,8 +1883,8 @@ _021D835E:
_021D8364: .word 0x0220FBC0
_021D8368: .word 0x00001F44
- thumb_func_start FUN_021D836C
-FUN_021D836C: ; 0x021D836C
+ thumb_func_start MOD04_021D836C
+MOD04_021D836C: ; 0x021D836C
push {r3, r4}
ldr r2, _021D83A0 ; =0x0220FBC0
ldr r1, _021D83A4 ; =0x00001F44
@@ -1915,8 +1915,8 @@ _021D8398:
_021D83A0: .word 0x0220FBC0
_021D83A4: .word 0x00001F44
- thumb_func_start FUN_021D83A8
-FUN_021D83A8: ; 0x021D83A8
+ thumb_func_start MOD04_021D83A8
+MOD04_021D83A8: ; 0x021D83A8
ldr r1, _021D83B8 ; =0x0220FBC0
ldr r2, [r1]
cmp r2, #0
@@ -1929,17 +1929,17 @@ _021D83B4:
_021D83B8: .word 0x0220FBC0
_021D83BC: .word 0x00001F14
- thumb_func_start FUN_021D83C0
-FUN_021D83C0: ; 0x021D83C0
+ thumb_func_start MOD04_021D83C0
+MOD04_021D83C0: ; 0x021D83C0
push {r3, lr}
- bl FUN_021E0200
- bl FUN_021DDBBC
- bl FUN_021D8C6C
- bl FUN_021D7660
+ bl MOD04_021E0200
+ bl MOD04_021DDBBC
+ bl MOD04_021D8C6C
+ bl MOD04_021D7660
pop {r3, pc}
- thumb_func_start FUN_021D83D4
-FUN_021D83D4: ; 0x021D83D4
+ thumb_func_start MOD04_021D83D4
+MOD04_021D83D4: ; 0x021D83D4
push {r3, r4}
ldr r3, _021D83E8 ; =0x0220FBC0
ldr r2, _021D83EC ; =0x00001F38
@@ -1954,8 +1954,8 @@ FUN_021D83D4: ; 0x021D83D4
_021D83E8: .word 0x0220FBC0
_021D83EC: .word 0x00001F38
- thumb_func_start FUN_021D83F0
-FUN_021D83F0: ; 0x021D83F0
+ thumb_func_start MOD04_021D83F0
+MOD04_021D83F0: ; 0x021D83F0
push {r3, r4, r5, r6, r7, lr}
ldr r6, _021D8468 ; =0x0220FBC0
ldr r0, _021D846C ; =0x00001F38
@@ -1995,7 +1995,7 @@ _021D8400:
mul r3, r5
add r1, r1, r3
add r2, sp, #0
- bl FUN_021E2578
+ bl MOD04_021E2578
ldr r1, [r6]
add r2, r1, r5
ldr r1, _021D8474 ; =0x00001F18
@@ -2022,15 +2022,15 @@ _021D846C: .word 0x00001F38
_021D8470: .word 0x00001F3C
_021D8474: .word 0x00001F18
- thumb_func_start FUN_021D8478
-FUN_021D8478: ; 0x021D8478
- ldr r3, _021D847C ; =FUN_021E2454
+ thumb_func_start MOD04_021D8478
+MOD04_021D8478: ; 0x021D8478
+ ldr r3, _021D847C ; =MOD04_021E2454
bx r3
.align 2, 0
-_021D847C: .word FUN_021E2454
+_021D847C: .word MOD04_021E2454
- thumb_func_start FUN_021D8480
-FUN_021D8480: ; 0x021D8480
+ thumb_func_start MOD04_021D8480
+MOD04_021D8480: ; 0x021D8480
ldr r1, _021D848C ; =0x0220FBC0
ldr r1, [r1]
add r1, r1, r0
@@ -2041,8 +2041,8 @@ FUN_021D8480: ; 0x021D8480
_021D848C: .word 0x0220FBC0
_021D8490: .word 0x00001F18
- thumb_func_start FUN_021D8494
-FUN_021D8494: ; 0x021D8494
+ thumb_func_start MOD04_021D8494
+MOD04_021D8494: ; 0x021D8494
push {r3, lr}
ldr r1, _021D8510 ; =0x0220FBC0
ldr r3, [r1]
@@ -2057,21 +2057,21 @@ _021D84A6:
str r0, [r3, r1]
cmp r0, #0
bge _021D84C2
- ldr r1, _021D8518 ; =FUN_021D8558
+ ldr r1, _021D8518 ; =MOD04_021D8558
mov r2, #0
- ldr r3, _021D851C ; =FUN_021D85A0
+ ldr r3, _021D851C ; =MOD04_021D85A0
mov r0, #2
str r2, [sp]
- bl FUN_021DFD18
+ bl MOD04_021DFD18
mov r2, #1
ldr r0, _021D8510 ; =0x0220FBC0
b _021D84D2
_021D84C2:
- ldr r1, _021D8520 ; =FUN_021D8590
+ ldr r1, _021D8520 ; =MOD04_021D8590
mov r2, #0
- ldr r3, _021D851C ; =FUN_021D85A0
+ ldr r3, _021D851C ; =MOD04_021D85A0
str r2, [sp]
- bl FUN_021DFB20
+ bl MOD04_021DFB20
ldr r0, _021D8510 ; =0x0220FBC0
mov r2, #2
_021D84D2:
@@ -2083,15 +2083,15 @@ _021D84D2:
ldr r1, [r0]
ldr r0, _021D8514 ; =0x00001F44
str r2, [r1, r0]
- ldr r0, _021D8528 ; =FUN_021D7C30
- bl FUN_021EAE18
- ldr r0, _021D852C ; =FUN_021D7C4C
- bl FUN_021EADF8
- ldr r0, _021D8530 ; =FUN_021D7D68
+ ldr r0, _021D8528 ; =MOD04_021D7C30
+ bl MOD04_021EAE18
+ ldr r0, _021D852C ; =MOD04_021D7C4C
+ bl MOD04_021EADF8
+ ldr r0, _021D8530 ; =MOD04_021D7D68
mov r1, #0
- bl FUN_021DFAF8
- ldr r0, _021D8534 ; =FUN_021D7B14
- bl FUN_021EADD8
+ bl MOD04_021DFAF8
+ ldr r0, _021D8534 ; =MOD04_021D7B14
+ bl MOD04_021EADD8
ldr r1, _021D8510 ; =0x0220FBC0
ldr r0, _021D8538 ; =0x00001F4C
ldr r2, [r1]
@@ -2105,18 +2105,18 @@ _021D84D2:
.align 2, 0
_021D8510: .word 0x0220FBC0
_021D8514: .word 0x00001F44
-_021D8518: .word FUN_021D8558
-_021D851C: .word FUN_021D85A0
-_021D8520: .word FUN_021D8590
+_021D8518: .word MOD04_021D8558
+_021D851C: .word MOD04_021D85A0
+_021D8520: .word MOD04_021D8590
_021D8524: .word 0x00001F48
-_021D8528: .word FUN_021D7C30
-_021D852C: .word FUN_021D7C4C
-_021D8530: .word FUN_021D7D68
-_021D8534: .word FUN_021D7B14
+_021D8528: .word MOD04_021D7C30
+_021D852C: .word MOD04_021D7C4C
+_021D8530: .word MOD04_021D7D68
+_021D8534: .word MOD04_021D7B14
_021D8538: .word 0x00001F4C
- thumb_func_start FUN_021D853C
-FUN_021D853C: ; 0x021D853C
+ thumb_func_start MOD04_021D853C
+MOD04_021D853C: ; 0x021D853C
ldr r0, _021D8550 ; =0x0220FBC0
ldr r1, [r0]
cmp r1, #0
@@ -2132,8 +2132,8 @@ _021D854A:
_021D8550: .word 0x0220FBC0
_021D8554: .word 0x00001F5C
- thumb_func_start FUN_021D8558
-FUN_021D8558: ; 0x021D8558
+ thumb_func_start MOD04_021D8558
+MOD04_021D8558: ; 0x021D8558
push {r3, lr}
cmp r0, #0
bne _021D8582
@@ -2144,7 +2144,7 @@ FUN_021D8558: ; 0x021D8558
ldr r1, [r0]
ldr r0, _021D8588 ; =0x00001F5C
str r2, [r1, r0]
- bl FUN_021D7BC0
+ bl MOD04_021D7BC0
pop {r3, pc}
_021D8572:
cmp r2, #0
@@ -2162,19 +2162,19 @@ _021D8584: .word 0x0220FBC0
_021D8588: .word 0x00001F5C
_021D858C: .word 0x00001F60
- thumb_func_start FUN_021D8590
-FUN_021D8590: ; 0x021D8590
+ thumb_func_start MOD04_021D8590
+MOD04_021D8590: ; 0x021D8590
push {r3, lr}
cmp r0, #0
bne _021D859E
cmp r1, #0
bne _021D859E
- bl FUN_021D7BC0
+ bl MOD04_021D7BC0
_021D859E:
pop {r3, pc}
- thumb_func_start FUN_021D85A0
-FUN_021D85A0: ; 0x021D85A0
+ thumb_func_start MOD04_021D85A0
+MOD04_021D85A0: ; 0x021D85A0
ldr r1, _021D85AC ; =0x0220FBC0
ldr r2, [r1]
ldr r1, _021D85B0 ; =0x00001F60
@@ -2184,8 +2184,8 @@ FUN_021D85A0: ; 0x021D85A0
_021D85AC: .word 0x0220FBC0
_021D85B0: .word 0x00001F60
- thumb_func_start FUN_021D85B4
-FUN_021D85B4: ; 0x021D85B4
+ thumb_func_start MOD04_021D85B4
+MOD04_021D85B4: ; 0x021D85B4
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
ldr r0, _021D8614 ; =0x0220FBC0
@@ -2236,15 +2236,15 @@ _021D85F0:
_021D8614: .word 0x0220FBC0
_021D8618: .word 0x00001EF0
- thumb_func_start FUN_021D861C
-FUN_021D861C: ; 0x021D861C
- ldr r3, _021D8620 ; =FUN_021D8CC8
+ thumb_func_start MOD04_021D861C
+MOD04_021D861C: ; 0x021D861C
+ ldr r3, _021D8620 ; =MOD04_021D8CC8
bx r3
.align 2, 0
-_021D8620: .word FUN_021D8CC8
+_021D8620: .word MOD04_021D8CC8
- thumb_func_start FUN_021D8624
-FUN_021D8624: ; 0x021D8624
+ thumb_func_start MOD04_021D8624
+MOD04_021D8624: ; 0x021D8624
ldr r0, _021D8638 ; =0x0220FBC0
ldr r1, [r0]
cmp r1, #0
@@ -2259,8 +2259,8 @@ _021D8632:
_021D8638: .word 0x0220FBC0
_021D863C: .word 0x00001F68
- thumb_func_start FUN_021D8640
-FUN_021D8640: ; 0x021D8640
+ thumb_func_start MOD04_021D8640
+MOD04_021D8640: ; 0x021D8640
ldr r0, _021D8654 ; =0x0220FBC0
ldr r1, [r0]
cmp r1, #0
@@ -2275,8 +2275,8 @@ _021D864E:
_021D8654: .word 0x0220FBC0
_021D8658: .word 0x00001F60
- thumb_func_start FUN_021D865C
-FUN_021D865C: ; 0x021D865C
+ thumb_func_start MOD04_021D865C
+MOD04_021D865C: ; 0x021D865C
ldr r0, _021D8670 ; =0x0220FBC0
ldr r2, [r0]
cmp r2, #0
@@ -2291,8 +2291,8 @@ _021D866C:
_021D8670: .word 0x0220FBC0
_021D8674: .word 0x00001F60
- thumb_func_start FUN_021D8678
-FUN_021D8678: ; 0x021D8678
+ thumb_func_start MOD04_021D8678
+MOD04_021D8678: ; 0x021D8678
ldr r1, _021D8684 ; =0x0220FBC0
ldr r2, [r1]
ldr r1, _021D8688 ; =0x00001F68
@@ -2302,8 +2302,8 @@ FUN_021D8678: ; 0x021D8678
_021D8684: .word 0x0220FBC0
_021D8688: .word 0x00001F68
- thumb_func_start FUN_021D868C
-FUN_021D868C: ; 0x021D868C
+ thumb_func_start MOD04_021D868C
+MOD04_021D868C: ; 0x021D868C
push {r3, r4, r5, lr}
bl MIC_Init
bl PM_Init
@@ -2373,13 +2373,13 @@ _021D8720: .word 0x00003598
_021D8724: .word 0x000035B8
_021D8728: .word 0x00003504
- thumb_func_start FUN_021D872C
-FUN_021D872C: ; 0x021D872C
+ thumb_func_start MOD04_021D872C
+MOD04_021D872C: ; 0x021D872C
bx lr
.align 2, 0
- thumb_func_start FUN_021D8730
-FUN_021D8730: ; 0x021D8730
+ thumb_func_start MOD04_021D8730
+MOD04_021D8730: ; 0x021D8730
push {r4, r5, r6, lr}
add r6, r2, #0
add r5, r3, #0
@@ -2400,7 +2400,7 @@ _021D8748:
beq _021D876A
add r0, r0, #3
add r0, r2, r0
- ldr r1, _021D87C0 ; =FUN_021D872C
+ ldr r1, _021D87C0 ; =MOD04_021D872C
mov r2, #0
bl MIC_StartAutoSamplingAsync
ldr r0, _021D87B8 ; =0x0220FBC8
@@ -2451,13 +2451,13 @@ _021D87A2:
.align 2, 0
_021D87B8: .word 0x0220FBC8
_021D87BC: .word 0x00003565
-_021D87C0: .word FUN_021D872C
+_021D87C0: .word MOD04_021D872C
_021D87C4: .word 0x027FFFA8
_021D87C8: .word 0x000034FC
_021D87CC: .word 0x00003564
- thumb_func_start FUN_021D87D0
-FUN_021D87D0: ; 0x021D87D0
+ thumb_func_start MOD04_021D87D0
+MOD04_021D87D0: ; 0x021D87D0
push {r4, lr}
ldr r1, _021D8810 ; =0x0220FBC8
ldr r2, [r1, #4]
@@ -2493,8 +2493,8 @@ _021D880A:
_021D8810: .word 0x0220FBC8
_021D8814: .word 0x00003560
- thumb_func_start FUN_021D8818
-FUN_021D8818: ; 0x021D8818
+ thumb_func_start MOD04_021D8818
+MOD04_021D8818: ; 0x021D8818
push {r3, lr}
ldr r0, _021D8858 ; =0x0220FBC8
ldr r1, [r0, #4]
@@ -2531,8 +2531,8 @@ _021D8852:
_021D8858: .word 0x0220FBC8
_021D885C: .word 0x00003560
- thumb_func_start FUN_021D8860
-FUN_021D8860: ; 0x021D8860
+ thumb_func_start MOD04_021D8860
+MOD04_021D8860: ; 0x021D8860
push {r4, lr}
add r4, r2, #0
cmp r1, #0xc
@@ -2578,20 +2578,20 @@ _021D88AE:
mov r1, #0
bl FUN_020ACAB0
add r0, r4, #0
- bl FUN_021D8910
- bl FUN_021D8C6C
+ bl MOD04_021D8910
+ bl MOD04_021D8C6C
pop {r4, pc}
_021D88C2:
add r0, r4, #0
- bl FUN_021D8910
- bl FUN_021D8C6C
+ bl MOD04_021D8910
+ bl MOD04_021D8C6C
pop {r4, pc}
_021D88CE:
add r0, r4, #0
mov r1, #4
bl FUN_020ACAB0
add r0, r4, #0
- bl FUN_021D8910
+ bl MOD04_021D8910
pop {r4, pc}
_021D88DE:
add r0, r4, #0
@@ -2606,11 +2606,11 @@ _021D88DE:
pop {r4, pc}
_021D88F4:
add r0, r4, #0
- bl FUN_021D8910
+ bl MOD04_021D8910
pop {r4, pc}
_021D88FC:
add r0, r4, #0
- bl FUN_021D8910
+ bl MOD04_021D8910
_021D8902:
pop {r4, pc}
.align 2, 0
@@ -2618,8 +2618,8 @@ _021D8904: .word 0x0220FBC8
_021D8908: .word 0x00003560
_021D890C: .word 0x000034F8
- thumb_func_start FUN_021D8910
-FUN_021D8910: ; 0x021D8910
+ thumb_func_start MOD04_021D8910
+MOD04_021D8910: ; 0x021D8910
push {r4, lr}
ldr r1, _021D893C ; =0x0220FBC8
add r4, r0, #0
@@ -2644,8 +2644,8 @@ _021D8936:
_021D893C: .word 0x0220FBC8
_021D8940: .word 0x00003560
- thumb_func_start FUN_021D8944
-FUN_021D8944: ; 0x021D8944
+ thumb_func_start MOD04_021D8944
+MOD04_021D8944: ; 0x021D8944
push {r4, r5, r6, lr}
bl OS_GetTick
add r4, r0, #0
@@ -2743,11 +2743,11 @@ _021D89EC:
cmp r0, #2
pop {r4, r5, r6, pc}
_021D8A00:
- bl FUN_021D8018
+ bl MOD04_021D8018
cmp r0, #0
bne _021D8A1E
mov r0, #1
- bl FUN_021D87D0
+ bl MOD04_021D87D0
cmp r0, #0
beq _021D8A3A
ldr r0, _021D8A3C ; =0x0220FBC8
@@ -2757,11 +2757,11 @@ _021D8A00:
str r2, [r1, r0]
pop {r4, r5, r6, pc}
_021D8A1E:
- bl FUN_021D8018
+ bl MOD04_021D8018
cmp r0, #1
bne _021D8A3A
mov r0, #0
- bl FUN_021D8818
+ bl MOD04_021D8818
cmp r0, #0
beq _021D8A3A
ldr r0, _021D8A3C ; =0x0220FBC8
@@ -2779,8 +2779,8 @@ _021D8A48: .word 0xFFFFD8F0
_021D8A4C: .word 0x0000358C
_021D8A50: .word 0x000034F8
- thumb_func_start FUN_021D8A54
-FUN_021D8A54: ; 0x021D8A54
+ thumb_func_start MOD04_021D8A54
+MOD04_021D8A54: ; 0x021D8A54
push {r3, lr}
ldr r3, _021D8A78 ; =0x0220FBC8
ldr r3, [r3, #4]
@@ -2802,8 +2802,8 @@ _021D8A72:
nop
_021D8A78: .word 0x0220FBC8
- thumb_func_start FUN_021D8A7C
-FUN_021D8A7C: ; 0x021D8A7C
+ thumb_func_start MOD04_021D8A7C
+MOD04_021D8A7C: ; 0x021D8A7C
push {r4, r5, r6, r7, lr}
sub sp, #0x34
ldr r2, _021D8BC8 ; =0x0220BAC0
@@ -2840,7 +2840,7 @@ FUN_021D8A7C: ; 0x021D8A7C
mov r3, #0
sub r1, #0x3c
str r3, [r0, r1]
- bl FUN_021D868C
+ bl MOD04_021D868C
_021D8ACA:
ldr r5, _021D8BCC ; =0x0220FBC8
mov r7, #0x11
@@ -2898,7 +2898,7 @@ _021D8ACA:
str r0, [sp]
mov r0, #2
str r0, [sp, #4]
- ldr r0, _021D8BE0 ; =FUN_021D8730
+ ldr r0, _021D8BE0 ; =MOD04_021D8730
add r1, r5, #0
str r0, [sp, #8]
mov r0, #0xd3
@@ -2932,10 +2932,10 @@ _021D8ACA:
str r0, [sp, #0x14]
mov r0, #2
str r0, [sp, #0x18]
- bl FUN_021D8018
+ bl MOD04_021D8018
add r1, sp, #0x10
strb r0, [r1, #0x10]
- ldr r0, _021D8BE8 ; =FUN_021D8860
+ ldr r0, _021D8BE8 ; =MOD04_021D8860
str r0, [sp, #0x2c]
add r0, r5, #0
str r0, [sp, #0x30]
@@ -2955,7 +2955,7 @@ _021D8ACA:
str r2, [r1, r0]
add r0, r4, #0
bl FUN_020AA7A0
- bl FUN_021D8BF0
+ bl MOD04_021D8BF0
mov r0, #1
bl FUN_020AA760
add sp, #0x34
@@ -2967,13 +2967,13 @@ _021D8BD0: .word 0x000035DC
_021D8BD4: .word 0x0220FBE0
_021D8BD8: .word 0x00003568
_021D8BDC: .word 0x00003504
-_021D8BE0: .word FUN_021D8730
+_021D8BE0: .word MOD04_021D8730
_021D8BE4: .word 0x000034F8
-_021D8BE8: .word FUN_021D8860
+_021D8BE8: .word MOD04_021D8860
_021D8BEC: .word 0x000034FC
- thumb_func_start FUN_021D8BF0
-FUN_021D8BF0: ; 0x021D8BF0
+ thumb_func_start MOD04_021D8BF0
+MOD04_021D8BF0: ; 0x021D8BF0
ldr r0, _021D8BFC ; =0x0220FBC8
ldr r3, _021D8C00 ; =0x020C1458
ldr r1, [r0, #4]
@@ -2985,8 +2985,8 @@ _021D8BFC: .word 0x0220FBC8
_021D8C00: .word 0x020C1458
_021D8C04: .word 0x00003504
- thumb_func_start FUN_021D8C08
-FUN_021D8C08: ; 0x021D8C08
+ thumb_func_start MOD04_021D8C08
+MOD04_021D8C08: ; 0x021D8C08
push {r3, lr}
ldr r0, _021D8C50 ; =0x0220FBC8
ldr r1, _021D8C54 ; =0x00003560
@@ -2999,7 +2999,7 @@ FUN_021D8C08: ; 0x021D8C08
cmp r1, #0
bne _021D8C24
_021D8C1E:
- bl FUN_021D8C6C
+ bl MOD04_021D8C6C
pop {r3, pc}
_021D8C24:
cmp r1, #1
@@ -3008,7 +3008,7 @@ _021D8C24:
bl FUN_020ACBA0
cmp r0, #0
beq _021D8C38
- bl FUN_021D8C6C
+ bl MOD04_021D8C6C
pop {r3, pc}
_021D8C38:
ldr r0, _021D8C50 ; =0x0220FBC8
@@ -3019,15 +3019,15 @@ _021D8C38:
bl FUN_020ACBA0
cmp r0, #0
beq _021D8C4E
- bl FUN_021D8C6C
+ bl MOD04_021D8C6C
_021D8C4E:
pop {r3, pc}
.align 2, 0
_021D8C50: .word 0x0220FBC8
_021D8C54: .word 0x00003560
- thumb_func_start FUN_021D8C58
-FUN_021D8C58: ; 0x021D8C58
+ thumb_func_start MOD04_021D8C58
+MOD04_021D8C58: ; 0x021D8C58
ldr r1, _021D8C64 ; =0x0220FBC8
ldr r2, [r1, #4]
ldr r1, _021D8C68 ; =0x000034C4
@@ -3037,8 +3037,8 @@ FUN_021D8C58: ; 0x021D8C58
_021D8C64: .word 0x0220FBC8
_021D8C68: .word 0x000034C4
- thumb_func_start FUN_021D8C6C
-FUN_021D8C6C: ; 0x021D8C6C
+ thumb_func_start MOD04_021D8C6C
+MOD04_021D8C6C: ; 0x021D8C6C
push {r4, lr}
ldr r0, _021D8CBC ; =0x0220FBC8
ldr r1, [r0]
@@ -3080,8 +3080,8 @@ _021D8CBC: .word 0x0220FBC8
_021D8CC0: .word 0x000034C4
_021D8CC4: .word 0x00003504
- thumb_func_start FUN_021D8CC8
-FUN_021D8CC8: ; 0x021D8CC8
+ thumb_func_start MOD04_021D8CC8
+MOD04_021D8CC8: ; 0x021D8CC8
push {r3, lr}
sub sp, #0x10
ldr r0, _021D8CEC ; =0x0220FBC8
@@ -3103,8 +3103,8 @@ _021D8CE6:
.align 2, 0
_021D8CEC: .word 0x0220FBC8
- thumb_func_start FUN_021D8CF0
-FUN_021D8CF0: ; 0x021D8CF0
+ thumb_func_start MOD04_021D8CF0
+MOD04_021D8CF0: ; 0x021D8CF0
ldr r0, _021D8CFC ; =0x0220FBC8
mov r2, #1
ldr r1, [r0, #4]
@@ -3115,8 +3115,8 @@ FUN_021D8CF0: ; 0x021D8CF0
_021D8CFC: .word 0x0220FBC8
_021D8D00: .word 0x000034FC
- thumb_func_start FUN_021D8D04
-FUN_021D8D04: ; 0x021D8D04
+ thumb_func_start MOD04_021D8D04
+MOD04_021D8D04: ; 0x021D8D04
ldr r0, _021D8D10 ; =0x0220FBC8
mov r2, #0
ldr r1, [r0, #4]
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index e4c836c6..cbfe382b 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -61,9 +61,9 @@ _021D752C:
lsl r0, r0, #8
lsr r0, r0, #0x1c
beq _021D7564
- ldr r0, _021D7678 ; =0x00000006
+ ldr r0, _021D7678 ; =SDK_OVERLAY_MODULE_06_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
_021D7564:
ldr r2, [r4, #0x70]
mov r0, #3
@@ -174,7 +174,7 @@ _021D7666:
.balign 4, 0
_021D7670: .word 0x04000050
_021D7674: .word 0x04001050
-_021D7678: .word 0x00000006
+_021D7678: .word SDK_OVERLAY_MODULE_06_ID
thumb_func_start MOD05_021D767C
MOD05_021D767C: ; 0x021D767C
@@ -367,8 +367,8 @@ _021D7806:
lsl r0, r0, #8
lsr r0, r0, #0x1c
beq _021D7856
- ldr r0, _021D7860 ; =0x00000006
- bl FUN_02005F60
+ ldr r0, _021D7860 ; =SDK_OVERLAY_MODULE_06_ID
+ bl UnloadOverlayByID
_021D7856:
mov r0, #1
pop {r3, r4, r5, pc}
@@ -376,7 +376,7 @@ _021D785A:
mov r0, #0
pop {r3, r4, r5, pc}
nop
-_021D7860: .word 0x00000006
+_021D7860: .word SDK_OVERLAY_MODULE_06_ID
thumb_func_start MOD05_021D7864
MOD05_021D7864: ; 0x021D7864
@@ -2091,24 +2091,24 @@ _021D862C:
mov r0, #0
pop {r4, pc}
_021D8630:
- bl FUN_0223DCB4
+ bl MOD18_0223DCB4
ldrh r0, [r4]
lsl r1, r0, #0x1f
lsr r1, r1, #0x1f
beq _021D8646
mov r0, #0
- bl FUN_0223DCD0
+ bl MOD18_0223DCD0
mov r0, #0
pop {r4, pc}
_021D8646:
lsl r0, r0, #0x1d
lsr r0, r0, #0x1f
beq _021D8654
- bl FUN_0223DC98
+ bl MOD18_0223DC98
mov r0, #0
pop {r4, pc}
_021D8654:
- bl FUN_0223D8F4
+ bl MOD18_0223D8F4
mov r0, #0
pop {r4, pc}
@@ -2508,7 +2508,7 @@ _021D8998:
cmp r0, #0
beq _021D89B4
add r0, r4, #0
- bl FUN_0223BA04
+ bl MOD06_0223BA04
cmp r0, #1
bne _021D89B4
add sp, #8
@@ -2535,7 +2535,7 @@ MOD05_021D89BC: ; 0x021D89BC
mov r0, #0
pop {r4, r5, r6, pc}
_021D89D4:
- bl FUN_022426AC
+ bl MOD06_022426AC
cmp r0, #0
beq _021D89E2
add sp, #0x28
@@ -2932,7 +2932,7 @@ _021D8D20: .word 0x0000FFFF
MOD05_021D8D24: ; 0x021D8D24
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
- bl FUN_02242404
+ bl MOD06_02242404
cmp r0, #0
beq _021D8D34
mov r0, #1
@@ -9485,16 +9485,16 @@ _021DBE9C: .word 0x02050E2D
MOD05_021DBEA0: ; 0x021DBEA0
push {r4, lr}
add r4, r0, #0
- ldr r0, _021DBEB8 ; =0x00000033
+ ldr r0, _021DBEB8 ; =SDK_OVERLAY_MODULE_51_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
add r0, r4, #0
- bl FUN_02254A68
+ bl MOD51_02254A68
add r4, #0x80
str r0, [r4]
pop {r4, pc}
.balign 4, 0
-_021DBEB8: .word 0x00000033
+_021DBEB8: .word SDK_OVERLAY_MODULE_51_ID
thumb_func_start MOD05_021DBEBC
MOD05_021DBEBC: ; 0x021DBEBC
@@ -9515,12 +9515,12 @@ MOD05_021DBECC: ; 0x021DBECC
push {r3, lr}
add r0, #0x80
ldr r0, [r0]
- bl FUN_02254AB8
- ldr r0, _021DBEE0 ; =0x00000033
- bl FUN_02005F60
+ bl MOD51_02254AB8
+ ldr r0, _021DBEE0 ; =SDK_OVERLAY_MODULE_51_ID
+ bl UnloadOverlayByID
pop {r3, pc}
nop
-_021DBEE0: .word 0x00000033
+_021DBEE0: .word SDK_OVERLAY_MODULE_51_ID
thumb_func_start MOD05_021DBEE4
MOD05_021DBEE4: ; 0x021DBEE4
@@ -24563,24 +24563,24 @@ _021E3388:
cmp r0, #0
beq _021E3414
ldr r0, [r5, #8]
- bl FUN_022524F4
+ bl MOD19_022524F4
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
b _021E3414
_021E33A0:
ldr r0, [r5, #8]
- bl FUN_02252504
+ bl MOD19_02252504
cmp r0, #0
beq _021E3414
ldr r0, [r5, #0xc]
bl FUN_0204C1A8
add r6, r0, #0
- ldr r0, _021E341C ; =0x00000013
- bl FUN_02005F60
- ldr r0, _021E3420 ; =0x00000014
+ ldr r0, _021E341C ; =SDK_OVERLAY_MODULE_19_ID
+ bl UnloadOverlayByID
+ ldr r0, _021E3420 ; =SDK_OVERLAY_MODULE_20_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
add r0, r6, #0
bl FUN_0204BEB8
mov r0, #1
@@ -24591,7 +24591,7 @@ _021E33A0:
ldr r3, [r5, #8]
add r0, r5, #0
add r1, #0x14
- bl FUN_02252448
+ bl MOD20_02252448
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -24624,8 +24624,8 @@ _021E3414:
add sp, #4
pop {r3, r4, r5, r6, pc}
nop
-_021E341C: .word 0x00000013
-_021E3420: .word 0x00000014
+_021E341C: .word SDK_OVERLAY_MODULE_19_ID
+_021E3420: .word SDK_OVERLAY_MODULE_20_ID
thumb_func_start MOD05_021E3424
MOD05_021E3424: ; 0x021E3424
@@ -30566,7 +30566,7 @@ _021E60D2:
add r0, r6, #0
add r2, r1, #0
add r3, r4, #0
- bl FUN_0224ABAC
+ bl MOD06_0224ABAC
add r1, r0, #0
add r0, r5, #0
bl FUN_02055450
@@ -31119,7 +31119,7 @@ _021E6514:
ldr r3, [r4, #4]
add r1, r5, r6
add r2, r7, r2
- bl FUN_0224ABAC
+ bl MOD06_0224ABAC
str r0, [r4, #0x28]
ldr r0, [r4, #0x20]
ldr r1, [r4, #0x28]
@@ -31175,7 +31175,7 @@ _021E65AC:
bl FUN_0205AE50
ldr r0, [r4, #0x28]
mov r1, #1
- bl FUN_0224ADF8
+ bl MOD06_0224ADF8
ldr r0, [r4, #0x20]
bl FUN_020553E8
add r1, r0, #0
@@ -31297,7 +31297,7 @@ _021E668C:
bl FUN_0205ADDC
ldr r0, [r4, #0x14]
mov r1, #0
- bl FUN_0224ADF8
+ bl MOD06_0224ADF8
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -31509,7 +31509,7 @@ _021E682A:
bl FUN_02046528
add r1, sp, #8
str r0, [sp, #4]
- bl FUN_0223C08C
+ bl MOD06_0223C08C
cmp r0, #1
bne _021E68A2
ldr r0, [r4, #0xc]
@@ -31776,10 +31776,10 @@ MOD05_021E6A58: ; 0x021E6A58
ldr r3, [r5, #4]
add r1, r4, r6
add r2, r7, r2
- bl FUN_0224AEE8
+ bl MOD06_0224AEE8
str r0, [r5, #0x18]
ldr r0, [r5, #0xc]
- bl FUN_0224F0BC
+ bl MOD06_0224F0BC
str r0, [r5, #0x2c]
ldr r0, _021E6AA8 ; =0x00000627
bl FUN_020054C8
@@ -31825,7 +31825,7 @@ MOD05_021E6AD4: ; 0x021E6AD4
add r0, r0, #1
str r0, [r4]
ldr r0, [r4, #0x18]
- bl FUN_0224AF68
+ bl MOD06_0224AF68
_021E6AF0:
mov r0, #0
pop {r4, pc}
@@ -31891,9 +31891,9 @@ _021E6B54:
add r0, r0, #1
str r0, [r5]
ldr r0, [r5, #0x18]
- bl FUN_0224AF68
+ bl MOD06_0224AF68
ldr r0, [r5, #0x2c]
- bl FUN_0224F0D0
+ bl MOD06_0224F0D0
mov r0, #0
str r0, [r5, #0x2c]
pop {r3, r4, r5, pc}
@@ -32151,7 +32151,7 @@ _021E6D36:
ldr r0, [r3]
str r0, [r2]
ldr r0, [r5, #0x34]
- bl FUN_0224ED94
+ bl MOD06_0224ED94
str r0, [r5, #0x50]
ldr r0, [r5]
add r0, r0, #1
@@ -32257,7 +32257,7 @@ _021E6E1E:
ldr r0, [r4, #0x3c]
bl FUN_02059C60
ldr r0, [r4, #0x50]
- bl FUN_0224EDA8
+ bl MOD06_0224EDA8
mov r0, #1
add sp, #0xc
pop {r3, r4, pc}
@@ -32384,7 +32384,7 @@ _021E6F06:
ldr r0, [r3]
str r0, [r2]
ldr r0, [r5, #0x34]
- bl FUN_0224ED94
+ bl MOD06_0224ED94
str r0, [r5, #0x50]
ldr r0, [r5]
add r0, r0, #1
@@ -32503,7 +32503,7 @@ _021E7004:
ldr r0, [r4, #0x3c]
bl FUN_02059C60
ldr r0, [r4, #0x50]
- bl FUN_0224EDA8
+ bl MOD06_0224EDA8
mov r0, #1
add sp, #0xc
pop {r3, r4, pc}
@@ -32762,7 +32762,7 @@ MOD05_021E723C: ; 0x021E723C
ldr r2, [r4, #8]
ldr r3, [r4, #4]
mov r1, #0
- bl FUN_0224666C
+ bl MOD06_0224666C
str r0, [r4, #0xc]
pop {r4, pc}
.balign 4, 0
@@ -32772,11 +32772,11 @@ MOD05_021E7250: ; 0x021E7250
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
- bl FUN_022466A0
+ bl MOD06_022466A0
cmp r0, #1
bne _021E7268
ldr r0, [r4, #0xc]
- bl FUN_022466AC
+ bl MOD06_022466AC
mov r0, #1
pop {r4, pc}
_021E7268:
@@ -50062,7 +50062,7 @@ MOD05_021EFA9C: ; 0x021EFA9C
ldr r0, [r0, #0x14]
cmp r0, #0
beq _021EFAAA
- bl FUN_022524DC
+ bl MOD20_022524DC
_021EFAAA:
pop {r3, pc}
@@ -50085,9 +50085,9 @@ MOD05_021EFAAC: ; 0x021EFAAC
bl FUN_0205F1E4
cmp r0, #0
bne _021EFAF8
- ldr r0, _021EFB0C ; =0x00000014
+ ldr r0, _021EFB0C ; =SDK_OVERLAY_MODULE_20_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
mov r0, #1
bl FUN_0200A03C
str r0, [sp]
@@ -50096,20 +50096,20 @@ MOD05_021EFAAC: ; 0x021EFAAC
ldr r3, [r5, #8]
add r0, r5, #0
add r1, #0x14
- bl FUN_02252448
+ bl MOD20_02252448
add sp, #4
pop {r3, r4, r5, r6, pc}
_021EFAF8:
- ldr r0, _021EFB10 ; =0x00000013
+ ldr r0, _021EFB10 ; =SDK_OVERLAY_MODULE_19_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
ldr r0, [r5, #8]
- bl FUN_02252440
+ bl MOD19_02252440
add sp, #4
pop {r3, r4, r5, r6, pc}
nop
-_021EFB0C: .word 0x00000014
-_021EFB10: .word 0x00000013
+_021EFB0C: .word SDK_OVERLAY_MODULE_20_ID
+_021EFB10: .word SDK_OVERLAY_MODULE_19_ID
thumb_func_start MOD05_021EFB14
MOD05_021EFB14: ; 0x021EFB14
@@ -50131,11 +50131,11 @@ MOD05_021EFB14: ; 0x021EFB14
bne _021EFB46
ldr r0, [r5, #4]
ldr r0, [r0, #0x14]
- bl FUN_022524BC
+ bl MOD20_022524BC
pop {r4, r5, r6, pc}
_021EFB46:
ldr r0, [r5, #8]
- bl FUN_022524F4
+ bl MOD19_022524F4
pop {r4, r5, r6, pc}
.balign 4, 0
@@ -50159,69 +50159,69 @@ MOD05_021EFB50: ; 0x021EFB50
bne _021EFB94
ldr r0, [r5, #4]
ldr r0, [r0, #0x14]
- bl FUN_022524D0
+ bl MOD20_022524D0
cmp r0, #0
beq _021EFBA8
ldr r0, [r5, #4]
mov r1, #0
str r1, [r0, #0x14]
- ldr r0, _021EFBAC ; =0x00000014
- bl FUN_02005F60
+ ldr r0, _021EFBAC ; =SDK_OVERLAY_MODULE_20_ID
+ bl UnloadOverlayByID
mov r0, #1
pop {r4, r5, r6, pc}
_021EFB94:
ldr r0, [r5, #8]
- bl FUN_02252504
+ bl MOD19_02252504
cmp r0, #0
beq _021EFBA8
- ldr r0, _021EFBB0 ; =0x00000013
- bl FUN_02005F60
+ ldr r0, _021EFBB0 ; =SDK_OVERLAY_MODULE_19_ID
+ bl UnloadOverlayByID
mov r0, #1
pop {r4, r5, r6, pc}
_021EFBA8:
mov r0, #0
pop {r4, r5, r6, pc}
.balign 4, 0
-_021EFBAC: .word 0x00000014
-_021EFBB0: .word 0x00000013
+_021EFBAC: .word SDK_OVERLAY_MODULE_20_ID
+_021EFBB0: .word SDK_OVERLAY_MODULE_19_ID
thumb_func_start MOD05_021EFBB4
MOD05_021EFBB4: ; 0x021EFBB4
push {r4, lr}
add r4, r0, #0
- ldr r0, _021EFBC8 ; =0x00000013
+ ldr r0, _021EFBC8 ; =SDK_OVERLAY_MODULE_19_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
ldr r0, [r4, #8]
- bl FUN_02252440
+ bl MOD19_02252440
pop {r4, pc}
.balign 4, 0
-_021EFBC8: .word 0x00000013
+_021EFBC8: .word SDK_OVERLAY_MODULE_19_ID
thumb_func_start MOD05_021EFBCC
MOD05_021EFBCC: ; 0x021EFBCC
- ldr r3, _021EFBD4 ; =FUN_022524F4
+ ldr r3, _021EFBD4 ; =MOD19_022524F4
ldr r0, [r0, #8]
bx r3
nop
-_021EFBD4: .word FUN_022524F4 + 1
+_021EFBD4: .word MOD19_022524F4
thumb_func_start MOD05_021EFBD8
MOD05_021EFBD8: ; 0x021EFBD8
push {r3, lr}
ldr r0, [r0, #8]
- bl FUN_02252504
+ bl MOD19_02252504
cmp r0, #0
beq _021EFBEE
- ldr r0, _021EFBF4 ; =0x00000013
- bl FUN_02005F60
+ ldr r0, _021EFBF4 ; =SDK_OVERLAY_MODULE_19_ID
+ bl UnloadOverlayByID
mov r0, #1
pop {r3, pc}
_021EFBEE:
mov r0, #0
pop {r3, pc}
nop
-_021EFBF4: .word 0x00000013
+_021EFBF4: .word SDK_OVERLAY_MODULE_19_ID
thumb_func_start MOD05_021EFBF8
MOD05_021EFBF8: ; 0x021EFBF8
@@ -53980,7 +53980,7 @@ MOD05_021F19E4: ; 0x021F19E4
bl FUN_02058604
add r4, r0, #0
add r0, r5, #0
- bl FUN_0224A130
+ bl MOD06_0224A130
str r0, [r4]
pop {r3, r4, r5, pc}
.balign 4, 0
@@ -53993,7 +53993,7 @@ MOD05_021F19FC: ; 0x021F19FC
bl FUN_02058604
add r4, r0, #0
add r0, r5, #0
- bl FUN_0224A6B8
+ bl MOD06_0224A6B8
str r0, [r4]
pop {r3, r4, r5, pc}
.balign 4, 0
@@ -54006,7 +54006,7 @@ MOD05_021F1A14: ; 0x021F1A14
bl FUN_02058604
add r4, r0, #0
add r0, r5, #0
- bl FUN_0224A8D4
+ bl MOD06_0224A8D4
str r0, [r4]
pop {r3, r4, r5, pc}
.balign 4, 0
@@ -54019,7 +54019,7 @@ MOD05_021F1A2C: ; 0x021F1A2C
bl FUN_02058604
add r4, r0, #0
add r0, r5, #0
- bl FUN_0224AA40
+ bl MOD06_0224AA40
str r0, [r4]
pop {r3, r4, r5, pc}
.balign 4, 0
@@ -54069,7 +54069,7 @@ MOD05_021F1A78: ; 0x021F1A78
bl ErrorHandling
_021F1A8C:
add r0, r5, #0
- bl FUN_0224A130
+ bl MOD06_0224A130
str r0, [r4]
pop {r3, r4, r5, pc}
.balign 4, 0
@@ -54086,7 +54086,7 @@ MOD05_021F1A98: ; 0x021F1A98
bl ErrorHandling
_021F1AAC:
add r0, r5, #0
- bl FUN_0224A6B8
+ bl MOD06_0224A6B8
str r0, [r4]
pop {r3, r4, r5, pc}
.balign 4, 0
@@ -54103,7 +54103,7 @@ MOD05_021F1AB8: ; 0x021F1AB8
bl ErrorHandling
_021F1ACC:
add r0, r5, #0
- bl FUN_0224A8D4
+ bl MOD06_0224A8D4
str r0, [r4]
pop {r3, r4, r5, pc}
.balign 4, 0
@@ -54120,7 +54120,7 @@ MOD05_021F1AD8: ; 0x021F1AD8
bl ErrorHandling
_021F1AEC:
add r0, r5, #0
- bl FUN_0224AA40
+ bl MOD06_0224AA40
str r0, [r4]
pop {r3, r4, r5, pc}
.balign 4, 0
@@ -54131,7 +54131,7 @@ MOD05_021F1AF8: ; 0x021F1AF8
bl FUN_02058628
add r4, r0, #0
ldr r0, [r4]
- bl FUN_0224A6FC
+ bl MOD06_0224A6FC
mov r0, #0
str r0, [r4]
pop {r4, pc}
@@ -57801,7 +57801,7 @@ _021F3658:
ldr r2, [r5, #0x24]
add r1, #0x28
add r3, sp, #0x1c
- bl FUN_02249B7C
+ bl MOD06_02249B7C
str r0, [r5, #0x54]
_021F367A:
add r0, r7, #0
@@ -62383,7 +62383,7 @@ _021F5888:
bl FUN_0204A6E0
add r1, r0, #0
add r0, r5, #0
- bl FUN_0223CDB8
+ bl MOD06_0223CDB8
cmp r0, #0
beq _021F58CE
mov r0, #6
@@ -62433,7 +62433,7 @@ _021F5914:
_021F5924:
add r0, r5, #0
add r1, r6, #0
- bl FUN_0223BE70
+ bl MOD06_0223BE70
cmp r0, #0
bne _021F5980
bl ErrorHandling
@@ -62797,9 +62797,9 @@ MOD05_021F5B9C: ; 0x021F5B9C
bl FUN_02050DF0
add r7, r0, #0
beq _021F5C40
- bl FUN_0223E2C4
+ bl MOD18_0223E2C4
add r6, r0, #0
- bl FUN_0223E2DC
+ bl MOD18_0223E2DC
lsl r1, r6, #0x15
lsl r0, r0, #0x15
mov r4, #0
@@ -62917,7 +62917,7 @@ _021F5C8E:
ldr r1, [r5, #0xc]
add r0, r4, #0
add r2, #0x10
- bl FUN_0223BD14
+ bl MOD06_0223BD14
str r0, [r5, #8]
ldr r1, [r5, #0xc]
ldr r2, [r5, #8]
@@ -63909,7 +63909,7 @@ _021F63CC:
ldr r0, [sp]
ldr r2, [r6]
mov r1, #0
- bl FUN_0224666C
+ bl MOD06_0224666C
str r0, [r5]
ldr r0, [r4]
add r0, r0, #1
@@ -63917,11 +63917,11 @@ _021F63CC:
b _021F6424
_021F63EA:
ldr r0, [r5]
- bl FUN_022466A0
+ bl MOD06_022466A0
cmp r0, #0
beq _021F6424
ldr r0, [r5]
- bl FUN_022466AC
+ bl MOD06_022466AC
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -63948,9 +63948,13 @@ _021F6424:
.align 2, 0
_021F6428: .word MOD05_021F57F0
- .section .data
+ .section .rodata
; 0x021F642C
- .incbin "baserom.nds", 0x16434c, 0x7254
+ .incbin "baserom.nds", 0x16434c, 0x6d9c
+
+ .section .data
+ ; 0x021FD1E0
+ .incbin "baserom.nds", 0x16b100, 0x4A0
.section .bss
; 0x021FD680
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index ac7d6b48..b439e37b 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -246,7 +246,7 @@ _02239868: .word 0x021D7A29
thumb_func_start MOD06_0223986C
MOD06_0223986C: ; 0x0223986C
push {r3, lr}
- bl FUN_021D7A20
+ bl MOD05_021D7A20
mov r0, #1
add r1, r0, #0
bl FUN_0201E6E4
@@ -271,7 +271,7 @@ _0223988A:
add r0, sp, #0
str r3, [sp, #0x20]
str r2, [sp, #0x24]
- bl FUN_021E8648
+ bl MOD05_021E8648
add sp, #0x2c
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -298,7 +298,7 @@ MOD06_022398BC: ; 0x022398BC
mov r1, #1
mov r2, #0
add r3, r1, #0
- bl FUN_021E8698
+ bl MOD05_021E8698
add r0, r4, #0
bl FUN_0200CAB4
pop {r4, pc}
@@ -840,7 +840,7 @@ _02239D00: .word 0x021D80A5
thumb_func_start MOD06_02239D04
MOD06_02239D04: ; 0x02239D04
push {r3, lr}
- bl FUN_021D80E4
+ bl MOD05_021D80E4
ldr r0, [r0]
cmp r0, #0xb
bne _02239D14
@@ -1291,10 +1291,10 @@ MOD06_0223A020: ; 0x0223A020
bl FUN_0201EC94
add r0, r5, #0
add r0, #0x48
- bl FUN_021DB4B0
+ bl MOD05_021DB4B0
ldr r0, [r5, #0x40]
mov r1, #2
- bl FUN_021DB44C
+ bl MOD05_021DB44C
str r0, [r5, #0x48]
mov r0, #4
bl MOD06_0223B574
@@ -1365,10 +1365,10 @@ MOD06_0223A0D4: ; 0x0223A0D4
bl FUN_0201EC94
add r0, r5, #0
add r0, #0x48
- bl FUN_021DB4B0
+ bl MOD05_021DB4B0
ldr r0, [r5, #0x40]
mov r1, #2
- bl FUN_021DB44C
+ bl MOD05_021DB44C
str r0, [r5, #0x48]
mov r0, #4
bl MOD06_0223B574
@@ -1603,7 +1603,7 @@ _0223A300: .word 0x021D80A5
thumb_func_start MOD06_0223A304
MOD06_0223A304: ; 0x0223A304
push {r3, lr}
- bl FUN_021D80E4
+ bl MOD05_021D80E4
mov r1, #3
str r1, [r0]
pop {r3, pc}
@@ -1611,7 +1611,7 @@ MOD06_0223A304: ; 0x0223A304
thumb_func_start MOD06_0223A310
MOD06_0223A310: ; 0x0223A310
push {r3, lr}
- bl FUN_021D80E4
+ bl MOD05_021D80E4
ldr r0, [r0]
pop {r3, pc}
.align 2, 0
@@ -1696,7 +1696,7 @@ _0223A370:
thumb_func_start MOD06_0223A39C
MOD06_0223A39C: ; 0x0223A39C
push {r3, lr}
- bl FUN_021F5268
+ bl MOD05_021F5268
pop {r3, pc}
thumb_func_start MOD06_0223A3A4
@@ -1714,7 +1714,7 @@ MOD06_0223A3AC: ; 0x0223A3AC
str r4, [sp]
ldr r4, [sp, #0x14]
str r4, [sp, #4]
- bl FUN_021F531C
+ bl MOD05_021F531C
add sp, #8
pop {r4, pc}
@@ -1788,13 +1788,13 @@ _0223A40C: .word 0x021F54CD
thumb_func_start MOD06_0223A410
MOD06_0223A410: ; 0x0223A410
push {r3, lr}
- bl FUN_021F54D0
+ bl MOD05_021F54D0
pop {r3, pc}
thumb_func_start MOD06_0223A418
MOD06_0223A418: ; 0x0223A418
push {r3, lr}
- bl FUN_021F54D8
+ bl MOD05_021F54D8
pop {r3, pc}
thumb_func_start MOD06_0223A420
@@ -3245,8 +3245,8 @@ _0223AEE0:
MOD06_0223AEE8: ; 0x0223AEE8
push {r3, lr}
ldr r0, [r0]
- bl FUN_021F1C1C
- bl FUN_021F1C30
+ bl MOD05_021F1C1C
+ bl MOD05_021F1C30
pop {r3, pc}
.align 2, 0
@@ -4441,7 +4441,7 @@ _0223B7AE:
add r0, r1, r0
ldr r1, [r4]
ldr r1, [r1, #0x40]
- bl FUN_021DB53C
+ bl MOD05_021DB53C
pop {r3, r4, r5, pc}
_0223B7C0:
ldr r0, [r4, #0xc]
@@ -4468,7 +4468,7 @@ _0223B7C0:
ldr r2, [r4, #4]
ldr r1, [r1, #0x40]
add r0, r2, r0
- bl FUN_021DB53C
+ bl MOD05_021DB53C
pop {r3, r4, r5, pc}
_0223B7F6:
ldr r0, [r4, #0xc]
@@ -4477,7 +4477,7 @@ _0223B7F6:
ldr r0, [r4]
mov r1, #1
ldr r0, [r0, #0x48]
- bl FUN_021DB52C
+ bl MOD05_021DB52C
ldr r0, [r4, #0x14]
add r0, r0, #1
str r0, [r4, #0x14]
@@ -7113,7 +7113,7 @@ MOD06_0223CCDC: ; 0x0223CCDC
sub sp, #0x24
add r5, r0, #0
add r4, r1, #0
- bl FUN_021F51D0
+ bl MOD05_021F51D0
str r0, [sp, #8]
ldr r0, [r5, #0xc]
bl FUN_0206BB1C
@@ -7161,7 +7161,7 @@ _0223CD46:
mov r7, #0xf
_0223CD4C:
add r0, r5, #0
- bl FUN_021F522C
+ bl MOD05_021F522C
mov r1, #0x63
lsl r1, r1, #2
ldr r2, [r4, r1]
@@ -10913,7 +10913,7 @@ MOD06_0223EB90: ; 0x0223EB90
add r0, #0x94
mov r2, #4
mov r3, #0xb
- bl FUN_021D9320
+ bl MOD05_021D9320
add r7, r5, #0
ldr r4, _0223EBD0 ; =0x0224F3DC
mov r6, #0
@@ -10921,7 +10921,7 @@ MOD06_0223EB90: ; 0x0223EB90
_0223EBA8:
add r0, r7, #0
add r1, r4, #0
- bl FUN_021D9510
+ bl MOD05_021D9510
mov r1, #0x7e
lsl r1, r1, #2
str r0, [r5, r1]
@@ -10955,7 +10955,7 @@ _0223EBE0:
blo _0223EBE0
add r7, #0x94
add r0, r7, #0
- bl FUN_021D94B4
+ bl MOD05_021D94B4
pop {r3, r4, r5, r6, r7, pc}
thumb_func_start MOD06_0223EBF8
@@ -11072,7 +11072,7 @@ MOD06_0223ECD8: ; 0x0223ECD8
push {r4, lr}
mov r0, #0
add r4, r1, #0
- bl FUN_021D7CA4
+ bl MOD05_021D7CA4
ldr r0, _0223ECEC ; =0x0000022F
mov r1, #0xf
strb r1, [r4, r0]
@@ -15765,36 +15765,36 @@ _02241376:
_02241386:
ldr r1, [r4, #0x4c]
mov r0, #1
- bl FUN_021DA03C
+ bl MOD05_021DA03C
add r6, r0, #0
ldr r1, [r4, #0x4c]
mov r0, #2
- bl FUN_021DA03C
+ bl MOD05_021DA03C
add r7, r0, #0
ldr r1, [r4, #0x4c]
mov r0, #3
- bl FUN_021DA03C
+ bl MOD05_021DA03C
str r0, [sp]
add r0, r6, #0
- bl FUN_021DA20C
+ bl MOD05_021DA20C
cmp r0, #0
beq _0224141E
add r0, r7, #0
- bl FUN_021DA20C
+ bl MOD05_021DA20C
cmp r0, #0
beq _0224141E
ldr r0, [sp]
- bl FUN_021DA20C
+ bl MOD05_021DA20C
cmp r0, #0
beq _0224141E
add r4, #0xa0
ldr r0, [r4]
mov r1, #0xf2
- bl FUN_021E7ED8
+ bl MOD05_021E7ED8
add r4, r0, #0
add r0, sp, #4
add r1, r4, #0
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
mov r0, #1
ldr r1, [sp, #8]
lsl r0, r0, #0xc
@@ -15810,14 +15810,14 @@ _02241386:
_022413EE:
add r0, r4, #0
add r1, sp, #4
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
b _0224141E
_022413F8:
add r4, #0x9c
mov r0, #0
ldr r2, [r4]
add r1, r0, #0
- bl FUN_021F4594
+ bl MOD05_021F4594
ldr r0, _02241424 ; =0x0000065A
mov r1, #0
bl FUN_020054F0
@@ -15876,35 +15876,35 @@ _0224145C:
_0224146C:
ldr r1, [r4, #0x4c]
mov r0, #1
- bl FUN_021DA03C
+ bl MOD05_021DA03C
add r6, r0, #0
ldr r1, [r4, #0x4c]
mov r0, #2
- bl FUN_021DA03C
+ bl MOD05_021DA03C
add r7, r0, #0
ldr r1, [r4, #0x4c]
mov r0, #3
- bl FUN_021DA03C
+ bl MOD05_021DA03C
str r0, [sp]
add r0, r6, #0
- bl FUN_021DA20C
+ bl MOD05_021DA20C
cmp r0, #0
beq _02241580
add r0, r7, #0
- bl FUN_021DA20C
+ bl MOD05_021DA20C
cmp r0, #0
beq _02241580
ldr r0, [sp]
- bl FUN_021DA20C
+ bl MOD05_021DA20C
cmp r0, #0
beq _02241580
add r4, #0xa0
ldr r0, [r4]
mov r1, #0xf2
- bl FUN_021E7ED8
+ bl MOD05_021E7ED8
add r1, r0, #0
add r0, sp, #0x1c
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
ldr r1, [sp, #0x20]
cmp r1, #0
bne _022414C6
@@ -15935,11 +15935,11 @@ _022414EC:
add r4, #0xa0
ldr r0, [r4]
mov r1, #0xf2
- bl FUN_021E7ED8
+ bl MOD05_021E7ED8
add r4, r0, #0
add r0, sp, #0x10
add r1, r4, #0
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
mov r0, #1
ldr r1, [sp, #0x14]
lsl r0, r0, #0xc
@@ -15955,17 +15955,17 @@ _022414EC:
_02241518:
add r0, r4, #0
add r1, sp, #0x10
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
b _02241580
_02241522:
add r4, #0xa0
ldr r0, [r4]
mov r1, #0xf2
- bl FUN_021E7ED8
+ bl MOD05_021E7ED8
add r4, r0, #0
add r0, sp, #4
add r1, r4, #0
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
mov r0, #1
ldr r1, [sp, #8]
lsl r0, r0, #0xc
@@ -15981,7 +15981,7 @@ _02241522:
_0224154E:
add r0, r4, #0
add r1, sp, #4
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
b _02241580
_02241558:
add r4, #0x9c
@@ -15989,7 +15989,7 @@ _02241558:
ldr r2, [r4]
mov r0, #0
lsl r1, r1, #0x10
- bl FUN_021F4594
+ bl MOD05_021F4594
ldr r0, _02241588 ; =0x0000065A
mov r1, #0
bl FUN_020054F0
@@ -16044,36 +16044,36 @@ _022415BA:
_022415CA:
ldr r1, [r4, #0x4c]
mov r0, #1
- bl FUN_021DA03C
+ bl MOD05_021DA03C
add r6, r0, #0
ldr r1, [r4, #0x4c]
mov r0, #2
- bl FUN_021DA03C
+ bl MOD05_021DA03C
add r7, r0, #0
ldr r1, [r4, #0x4c]
mov r0, #3
- bl FUN_021DA03C
+ bl MOD05_021DA03C
str r0, [sp]
add r0, r6, #0
- bl FUN_021DA20C
+ bl MOD05_021DA20C
cmp r0, #0
beq _02241666
add r0, r7, #0
- bl FUN_021DA20C
+ bl MOD05_021DA20C
cmp r0, #0
beq _02241666
ldr r0, [sp]
- bl FUN_021DA20C
+ bl MOD05_021DA20C
cmp r0, #0
beq _02241666
add r4, #0xa0
ldr r0, [r4]
mov r1, #0xf2
- bl FUN_021E7ED8
+ bl MOD05_021E7ED8
add r4, r0, #0
add r0, sp, #4
add r1, r4, #0
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
mov r0, #1
ldr r1, [sp, #8]
lsl r0, r0, #0xc
@@ -16090,7 +16090,7 @@ _022415CA:
_02241634:
add r0, r4, #0
add r1, sp, #4
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
b _02241666
_0224163E:
add r4, #0x9c
@@ -16098,7 +16098,7 @@ _0224163E:
ldr r2, [r4]
mov r0, #0
lsl r1, r1, #0x12
- bl FUN_021F4594
+ bl MOD05_021F4594
ldr r0, _0224166C ; =0x0000065A
mov r1, #0
bl FUN_020054F0
@@ -16144,7 +16144,7 @@ MOD06_02241670: ; 0x02241670
add r0, #0xa0
ldr r0, [r0]
ldr r1, [r4, #0x2c]
- bl FUN_021E7FBC
+ bl MOD05_021E7FBC
mov r0, #0x26
str r0, [sp]
mov r0, #0
@@ -16156,7 +16156,7 @@ MOD06_02241670: ; 0x02241670
str r1, [sp, #8]
mov r1, #1
mov r3, #0x19
- bl FUN_021F44D8
+ bl MOD05_021F44D8
ldrb r0, [r5]
cmp r0, #0
beq _022416D4
@@ -16196,75 +16196,75 @@ _02241702:
add r0, #0xa0
ldr r0, [r0]
mov r1, #0xf2
- bl FUN_021E7ED8
+ bl MOD05_021E7ED8
str r0, [sp, #0x10]
ldr r1, [sp, #0x10]
add r0, sp, #0x14
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
ldr r0, [sp, #0x10]
add r1, sp, #0x14
str r5, [sp, #0x18]
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
add r2, r4, #0
add r2, #0x9c
ldr r2, [r2]
mov r0, #0
add r1, r5, #0
- bl FUN_021F4594
+ bl MOD05_021F4594
ldr r2, [r4, #0x4c]
mov r0, #0xef
mov r1, #0
- bl FUN_021DA080
+ bl MOD05_021DA080
add r5, r0, #0
mov r1, #1
- bl FUN_021DA1A8
+ bl MOD05_021DA1A8
add r0, r5, #0
add r1, r6, #0
- bl FUN_021DA1A0
+ bl MOD05_021DA1A0
add r0, r5, #0
mov r1, #1
- bl FUN_021DA1A4
+ bl MOD05_021DA1A4
add r0, r5, #0
mov r1, #1
- bl FUN_021DA0DC
+ bl MOD05_021DA0DC
add r0, r5, #0
- bl FUN_021DA138
+ bl MOD05_021DA138
ldr r2, [r4, #0x4c]
mov r0, #0xf0
mov r1, #0
- bl FUN_021DA080
+ bl MOD05_021DA080
add r5, r0, #0
mov r1, #2
- bl FUN_021DA1A8
+ bl MOD05_021DA1A8
add r0, r5, #0
add r1, r7, #0
- bl FUN_021DA1A0
+ bl MOD05_021DA1A0
add r0, r5, #0
mov r1, #1
- bl FUN_021DA1A4
+ bl MOD05_021DA1A4
add r0, r5, #0
mov r1, #1
- bl FUN_021DA0DC
+ bl MOD05_021DA0DC
add r0, r5, #0
- bl FUN_021DA138
+ bl MOD05_021DA138
ldr r2, [r4, #0x4c]
mov r0, #0xf1
mov r1, #0
- bl FUN_021DA080
+ bl MOD05_021DA080
mov r1, #3
add r4, r0, #0
- bl FUN_021DA1A8
+ bl MOD05_021DA1A8
ldr r1, [sp, #0xc]
add r0, r4, #0
- bl FUN_021DA1A0
+ bl MOD05_021DA1A0
add r0, r4, #0
mov r1, #1
- bl FUN_021DA1A4
+ bl MOD05_021DA1A4
add r0, r4, #0
mov r1, #1
- bl FUN_021DA0DC
+ bl MOD05_021DA0DC
add r0, r4, #0
- bl FUN_021DA138
+ bl MOD05_021DA138
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -16299,43 +16299,43 @@ _022417F0:
_022417F4:
add r0, r6, #0
add r1, r7, #0
- bl FUN_021DA03C
+ bl MOD05_021DA03C
add r6, r0, #0
mov r1, #0
- bl FUN_021DA1A0
+ bl MOD05_021DA1A0
add r0, r6, #0
- bl FUN_021DA118
+ bl MOD05_021DA118
add r0, r6, #0
mov r1, #0
- bl FUN_021DA0DC
+ bl MOD05_021DA0DC
add r0, r6, #0
- bl FUN_021DA0E0
+ bl MOD05_021DA0E0
add r0, r4, #0
add r1, r7, #0
- bl FUN_021DA03C
+ bl MOD05_021DA03C
add r4, r0, #0
mov r1, #1
- bl FUN_021DA1A0
+ bl MOD05_021DA1A0
add r0, r4, #0
- bl FUN_021DA118
+ bl MOD05_021DA118
add r0, r4, #0
mov r1, #0
- bl FUN_021DA0DC
+ bl MOD05_021DA0DC
add r0, r4, #0
- bl FUN_021DA0E0
+ bl MOD05_021DA0E0
add r0, r5, #0
add r1, r7, #0
- bl FUN_021DA03C
+ bl MOD05_021DA03C
add r4, r0, #0
mov r1, #1
- bl FUN_021DA1A0
+ bl MOD05_021DA1A0
add r0, r4, #0
- bl FUN_021DA118
+ bl MOD05_021DA118
add r0, r4, #0
mov r1, #0
- bl FUN_021DA0DC
+ bl MOD05_021DA0DC
add r0, r4, #0
- bl FUN_021DA0E0
+ bl MOD05_021DA0E0
ldr r0, _02241868 ; =0x0000065A
bl FUN_020054C8
pop {r3, r4, r5, r6, r7, pc}
@@ -16368,7 +16368,7 @@ MOD06_0224186C: ; 0x0224186C
add r0, #0xa0
ldr r0, [r0]
ldr r1, [r5, #0x2c]
- bl FUN_021E7FBC
+ bl MOD05_021E7FBC
mov r0, #2
str r0, [sp]
mov r0, #0
@@ -16380,7 +16380,7 @@ MOD06_0224186C: ; 0x0224186C
str r1, [sp, #8]
mov r1, #8
mov r3, #3
- bl FUN_021F44D8
+ bl MOD05_021F44D8
ldrb r0, [r4]
cmp r0, #0
beq _022418CC
@@ -16402,20 +16402,20 @@ _022418DC:
add r0, #0xa0
ldr r0, [r0]
ldr r1, _02241910 ; =0x00000102
- bl FUN_021E7ED8
+ bl MOD05_021E7ED8
add r6, r0, #0
add r0, sp, #0xc
add r1, r6, #0
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
add r0, r6, #0
add r1, sp, #0xc
str r4, [sp, #0x10]
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
add r5, #0x9c
ldr r2, [r5]
mov r0, #0
add r1, r4, #0
- bl FUN_021F4594
+ bl MOD05_021F4594
add sp, #0x24
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -16504,11 +16504,11 @@ _022419B8:
add r0, #0xa0
ldr r0, [r0]
ldr r1, _02241A3C ; =0x00000102
- bl FUN_021E7ED8
+ bl MOD05_021E7ED8
add r6, r0, #0
add r0, sp, #0
add r1, r6, #0
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
mov r0, #1
ldr r1, [sp, #4]
lsl r0, r0, #0xc
@@ -16531,7 +16531,7 @@ _022419F0:
bl FUN_02055540
add r0, r6, #0
add r1, sp, #0
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
b _02241A32
_02241A02:
add r2, r5, #0
@@ -16540,7 +16540,7 @@ _02241A02:
ldr r2, [r2]
mov r0, #0
lsl r1, r1, #0x10
- bl FUN_021F4594
+ bl MOD05_021F4594
ldr r0, [r5, #0x38]
mov r1, #1
bl FUN_0205557C
@@ -16603,11 +16603,11 @@ _02241A88:
add r0, #0xa0
ldr r0, [r0]
ldr r1, _02241B08 ; =0x00000102
- bl FUN_021E7ED8
+ bl MOD05_021E7ED8
add r6, r0, #0
add r0, sp, #0
add r1, r6, #0
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
mov r0, #1
ldr r1, [sp, #4]
lsl r0, r0, #0xc
@@ -16628,7 +16628,7 @@ _02241ABC:
bl FUN_02055540
add r0, r6, #0
add r1, sp, #0
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
b _02241AFC
_02241ACE:
add r2, r5, #0
@@ -16636,7 +16636,7 @@ _02241ACE:
mov r0, #0
ldr r2, [r2]
add r1, r0, #0
- bl FUN_021F4594
+ bl MOD05_021F4594
ldr r0, [r5, #0x38]
mov r1, #1
bl FUN_0205557C
@@ -16677,9 +16677,9 @@ _02241B1A:
add r0, #0xa0
ldrb r1, [r1]
ldr r0, [r0]
- bl FUN_021E7ED0
+ bl MOD05_021E7ED0
add r1, r7, #0
- bl FUN_021E7EC0
+ bl MOD05_021E7EC0
_02241B36:
add r4, r4, #1
cmp r4, #0x18
@@ -16990,7 +16990,7 @@ MOD06_02241D90: ; 0x02241D90
lsl r1, r1, #0x18
ldr r0, [r0]
lsr r1, r1, #0x18
- bl FUN_021E7ED0
+ bl MOD05_021E7ED0
str r0, [sp]
ldr r0, [r5]
ldr r1, [r5, #8]
@@ -16998,7 +16998,7 @@ MOD06_02241D90: ; 0x02241D90
lsl r1, r1, #0x18
ldr r0, [r0]
lsr r1, r1, #0x18
- bl FUN_021E7ED0
+ bl MOD05_021E7ED0
add r7, r0, #0
ldr r0, [r5]
ldr r1, [r5, #0xc]
@@ -17006,7 +17006,7 @@ MOD06_02241D90: ; 0x02241D90
lsl r1, r1, #0x18
ldr r0, [r0]
lsr r1, r1, #0x18
- bl FUN_021E7ED0
+ bl MOD05_021E7ED0
add r6, r0, #0
mov r0, #1
lsl r0, r0, #0x10
@@ -17014,7 +17014,7 @@ MOD06_02241D90: ; 0x02241D90
blt _02241DE8
ldr r0, [sp]
mov r1, #0
- bl FUN_021E7EC0
+ bl MOD05_021E7EC0
add r0, r5, #0
mov r1, #0
mov r2, #1
@@ -17023,7 +17023,7 @@ MOD06_02241D90: ; 0x02241D90
_02241DE8:
ldr r0, [sp]
mov r1, #1
- bl FUN_021E7EC0
+ bl MOD05_021E7EC0
mov r1, #1
add r0, r5, #0
add r2, r1, #0
@@ -17035,7 +17035,7 @@ _02241DFA:
blt _02241E16
add r0, r7, #0
mov r1, #0
- bl FUN_021E7EC0
+ bl MOD05_021E7EC0
add r0, r5, #0
mov r1, #0
mov r2, #2
@@ -17044,7 +17044,7 @@ _02241DFA:
_02241E16:
add r0, r7, #0
mov r1, #1
- bl FUN_021E7EC0
+ bl MOD05_021E7EC0
add r0, r5, #0
mov r1, #1
mov r2, #2
@@ -17056,7 +17056,7 @@ _02241E28:
blt _02241E44
add r0, r6, #0
mov r1, #0
- bl FUN_021E7EC0
+ bl MOD05_021E7EC0
add r0, r5, #0
mov r1, #0
mov r2, #3
@@ -17065,7 +17065,7 @@ _02241E28:
_02241E44:
add r0, r6, #0
mov r1, #1
- bl FUN_021E7EC0
+ bl MOD05_021E7EC0
add r0, r5, #0
mov r1, #1
mov r2, #3
@@ -17118,11 +17118,11 @@ _02241EA0:
add r1, #0x28
ldrb r1, [r1]
ldr r0, [r0]
- bl FUN_021E7ED0
+ bl MOD05_021E7ED0
add r7, r0, #0
add r0, sp, #0
add r1, r7, #0
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
add r0, r5, #0
add r0, #0xf0
ldr r0, [r0]
@@ -17183,7 +17183,7 @@ _02241F2E:
bl FUN_02055540
add r0, r7, #0
add r1, sp, #0
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
ldr r1, [sp, #4]
add r0, r5, #0
bl MOD06_02241D90
@@ -17267,11 +17267,11 @@ _02241FD8:
add r1, #0x28
ldrb r1, [r1]
ldr r0, [r0]
- bl FUN_021E7ED0
+ bl MOD05_021E7ED0
str r0, [sp]
ldr r1, [sp]
add r0, sp, #0x10
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
ldr r0, [r7, #0x38]
add r1, sp, #4
bl FUN_02055350
@@ -17332,7 +17332,7 @@ _0224206E:
_02242072:
ldr r0, [sp]
add r1, sp, #0x10
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
b _022420BC
_0224207C:
bl FUN_0205AD98
@@ -17427,11 +17427,11 @@ _02242128:
add r1, #0x28
ldrb r1, [r1]
ldr r0, [r0]
- bl FUN_021E7ED0
+ bl MOD05_021E7ED0
str r0, [sp]
ldr r1, [sp]
add r0, sp, #0x10
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
ldr r0, [r6, #0x38]
add r1, sp, #4
bl FUN_02055350
@@ -17492,7 +17492,7 @@ _022421BE:
_022421C2:
ldr r0, [sp]
add r1, sp, #0x10
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
b _02242214
_022421CC:
bl FUN_0205AD98
@@ -17573,7 +17573,7 @@ MOD06_02242224: ; 0x02242224
ldr r0, [r0]
ldr r1, [r6, #0x2c]
lsl r2, r2, #2
- bl FUN_021E7FBC
+ bl MOD05_021E7FBC
ldr r1, [sp, #0x14]
ldr r2, _022423F0 ; =0x0000012D
str r0, [r1, #4]
@@ -17589,7 +17589,7 @@ MOD06_02242224: ; 0x02242224
add r0, #0xa0
ldr r0, [r0]
ldr r1, [r6, #0x2c]
- bl FUN_021E7FBC
+ bl MOD05_021E7FBC
ldr r1, [sp, #0x14]
ldr r2, _022423F4 ; =0x0000012E
str r0, [r1, #8]
@@ -17605,7 +17605,7 @@ MOD06_02242224: ; 0x02242224
add r0, #0xa0
ldr r0, [r0]
ldr r1, [r6, #0x2c]
- bl FUN_021E7FBC
+ bl MOD05_021E7FBC
ldr r1, [sp, #0x14]
ldr r4, _022423F8 ; =0x0224FA80
str r0, [r1, #0xc]
@@ -17695,7 +17695,7 @@ _02242342:
ldr r0, [r0]
ldr r1, [r6, #0x2c]
ldr r2, [r4]
- bl FUN_021E7FBC
+ bl MOD05_021E7FBC
ldr r1, [sp, #8]
add r7, r7, #1
add r1, #0x28
@@ -17731,13 +17731,13 @@ _02242342:
ldr r0, [r6, #0x44]
mov r2, #1
mov r3, #0
- bl FUN_021DBA40
+ bl MOD05_021DBA40
mov r1, #0
mov r2, #0
ldr r0, [r6, #0x44]
mvn r1, r1
add r3, r2, #0
- bl FUN_021DBA78
+ bl MOD05_021DBA78
mov r0, #0
add r1, r0, #0
add r2, sp, #0x18
@@ -17750,7 +17750,7 @@ _022423D4:
blt _022423D4
ldr r0, [r6, #0x44]
add r1, sp, #0x18
- bl FUN_021DBAA0
+ bl MOD05_021DBAA0
add sp, #0x5c
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -18076,7 +18076,7 @@ _02242648:
add r0, #0xa0
ldr r0, [r0]
ldr r2, [r5]
- bl FUN_021E7FBC
+ bl MOD05_021E7FBC
ldr r1, [sp, #0xc]
add r4, r4, #1
strb r0, [r1, #4]
@@ -18241,11 +18241,11 @@ _022427A4:
ldr r0, [r6]
add r1, r5, r1
ldrb r1, [r1, #4]
- bl FUN_021E7ED0
+ bl MOD05_021E7ED0
add r6, r0, #0
add r0, sp, #0
add r1, r6, #0
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
ldr r0, [r5, #0x24]
cmp r0, #4
bne _022427DC
@@ -18283,7 +18283,7 @@ _022427FA:
_022427FE:
add r0, r6, #0
add r1, sp, #0
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
b _0224283A
_02242808:
ldr r0, [r6, #0x38]
@@ -18493,7 +18493,7 @@ _02242966:
ldr r0, [r0]
ldr r1, [r5, #0x2c]
ldr r2, [r4]
- bl FUN_021E7FBC
+ bl MOD05_021E7FBC
ldr r1, [sp, #0x10]
add r7, #8
add r1, r1, r6
@@ -18732,8 +18732,8 @@ _02242B56:
add r0, #0xa0
ldrb r1, [r1, #4]
ldr r0, [r0]
- bl FUN_021E7ED0
- bl FUN_021E7E9C
+ bl MOD05_021E7ED0
+ bl MOD05_021E7E9C
ldrb r1, [r4, #0x11]
lsl r2, r1, #2
ldr r1, _02242BDC ; =0x0224F798
@@ -23794,7 +23794,7 @@ _0224523A:
ldr r0, [r0]
ldr r1, [r4, #0x2c]
add r3, sp, #8
- bl FUN_021E7FBC
+ bl MOD05_021E7FBC
add sp, #0x14
pop {r3, r4, pc}
nop
@@ -23968,12 +23968,12 @@ _02245392:
add r0, #0xa0
ldr r0, [r0]
ldr r1, _02245470 ; =0x000001DB
- bl FUN_021E7ED8
- bl FUN_021E7EC8
+ bl MOD05_021E7ED8
+ bl MOD05_021E7EC8
add r7, r0, #0
ldr r0, _02245470 ; =0x000001DB
ldr r1, [r5, #0x2c]
- bl FUN_021F4BD0
+ bl MOD05_021F4BD0
ldr r0, [r0]
bl FUN_020BC13C
ldrh r1, [r0, #0xe]
@@ -23981,7 +23981,7 @@ _02245392:
ldr r1, [r1, #0xc]
add r6, r0, r1
ldr r0, [r5, #0x2c]
- bl FUN_021F4C88
+ bl MOD05_021F4C88
str r7, [sp]
str r6, [sp, #4]
str r0, [sp, #8]
@@ -23995,11 +23995,11 @@ _02245392:
ldr r1, [r5, #0x50]
mov r2, #0x10
add r3, #0xdc
- bl FUN_021DA464
+ bl MOD05_021DA464
ldr r0, [r5, #0x50]
mov r1, #0x10
mov r2, #0
- bl FUN_021DA4EC
+ bl MOD05_021DA4EC
ldrb r0, [r4, #5]
add r0, r0, #1
strb r0, [r4, #5]
@@ -24028,11 +24028,11 @@ _02245414:
add r0, #0xa0
ldr r0, [r0]
ldr r1, _02245470 ; =0x000001DB
- bl FUN_021E7ED8
+ bl MOD05_021E7ED8
add r6, r0, #0
add r0, sp, #0x18
add r1, r6, #0
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
add r0, r5, #0
add r2, r4, #0
ldr r5, [r4]
@@ -24048,13 +24048,13 @@ _02245414:
_02245442:
add r0, r6, #0
add r1, sp, #0x18
- bl FUN_021E7EB0
+ bl MOD05_021E7EB0
b _02245468
_0224544C:
ldr r0, [r5, #0x4c]
ldr r1, [r5, #0x50]
mov r2, #0x10
- bl FUN_021DA54C
+ bl MOD05_021DA54C
ldrb r0, [r4, #5]
add r0, r0, #1
strb r0, [r4, #5]
@@ -25614,7 +25614,7 @@ _02245FE4:
ldr r0, [r4, #0x70]
cmp r0, #0
beq _02245FEE
- bl FUN_021F6240
+ bl MOD05_021F6240
_02245FEE:
add r0, r5, #0
bl FUN_02064520
@@ -25773,12 +25773,12 @@ MOD06_02246034: ; 0x02246034
str r0, [r4, #0x6c]
ldr r0, [r4, #0x5c]
mov r1, #4
- bl FUN_021F61F4
+ bl MOD05_021F61F4
ldr r2, _02246194 ; =0xFFF88000
mov r1, #1
mov r3, #0xc
str r0, [r4, #0x70]
- bl FUN_021F6254
+ bl MOD05_021F6254
add r1, sp, #0xc
mov r0, #0
str r0, [r1]
@@ -25961,7 +25961,7 @@ MOD06_0224629C: ; 0x0224629C
mov r1, #2
mov r2, #0
mov r3, #0xc
- bl FUN_021F6254
+ bl MOD05_021F6254
mov r0, #1
lsl r0, r0, #0xa
str r0, [r4, #0x50]
@@ -26372,7 +26372,7 @@ _022465DC:
cmp r0, #0xf
ble _022465FA
ldr r0, [r4, #0x70]
- bl FUN_021F6234
+ bl MOD05_021F6234
cmp r0, #1
bne _022465FA
mov r0, #0
@@ -29258,7 +29258,7 @@ _02247B8A:
ldr r0, [r5, #0x64]
cmp r0, #0
beq _02247B94
- bl FUN_021F6240
+ bl MOD05_021F6240
_02247B94:
mov r0, #0x7b
lsl r0, r0, #2
@@ -29670,12 +29670,12 @@ MOD06_02247DC4: ; 0x02247DC4
str r0, [r5, #0x1c]
ldr r0, [r5, #0x60]
mov r1, #4
- bl FUN_021F61F4
+ bl MOD05_021F61F4
ldr r2, _02247F28 ; =0xFFF88000
add r1, r7, #0
mov r3, #0xc
str r0, [r4, #0x64]
- bl FUN_021F6254
+ bl MOD05_021F6254
add r1, sp, #0xc
mov r0, #0
str r0, [r1]
@@ -29927,7 +29927,7 @@ MOD06_022480A0: ; 0x022480A0
mov r1, #2
mov r2, #0
mov r3, #0xc
- bl FUN_021F6254
+ bl MOD05_021F6254
mov r1, #1
lsl r1, r1, #8
str r1, [r5, #0x50]
@@ -32280,7 +32280,7 @@ MOD06_022492B0: ; 0x022492B0
lsl r1, r1, #2
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4, #0x20]
bl MOD06_02249460
@@ -32298,7 +32298,7 @@ MOD06_022492D4: ; 0x022492D4
add r0, r4, #0
bl MOD06_022494C0
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
.align 2, 0
@@ -32307,7 +32307,7 @@ MOD06_022492EC: ; 0x022492EC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x20]
- bl FUN_021E4C20
+ bl MOD05_021E4C20
ldr r0, [r0, #0x34]
bl FUN_0205839C
sub r2, r0, #1
@@ -32515,7 +32515,7 @@ MOD06_02249460: ; 0x02249460
mov r1, #0x11
mov r2, #0
add r3, #0x28
- bl FUN_021E51EC
+ bl MOD05_021E51EC
mov r0, #0x4a
lsl r0, r0, #2
add r1, r4, r0
@@ -32528,7 +32528,7 @@ MOD06_02249460: ; 0x02249460
mov r1, #0x12
mov r2, #0
add r3, #0x7c
- bl FUN_021E51EC
+ bl MOD05_021E51EC
mov r0, #0x4b
lsl r0, r0, #2
add r1, r4, r0
@@ -32541,7 +32541,7 @@ MOD06_02249460: ; 0x02249460
mov r1, #0x13
mov r2, #0
add r3, r4, #0
- bl FUN_021E51EC
+ bl MOD05_021E51EC
add sp, #8
pop {r4, pc}
.align 2, 0
@@ -32553,15 +32553,15 @@ MOD06_022494C0: ; 0x022494C0
mov r0, #0x13
lsl r0, r0, #4
ldr r0, [r4, r0]
- bl FUN_021E4C00
+ bl MOD05_021E4C00
mov r0, #0x4d
lsl r0, r0, #2
ldr r0, [r4, r0]
- bl FUN_021E4C00
+ bl MOD05_021E4C00
mov r0, #0x4e
lsl r0, r0, #2
ldr r0, [r4, r0]
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_022494E4
@@ -32588,11 +32588,11 @@ MOD06_02249508: ; 0x02249508
push {r3, r4, r5, lr}
sub sp, #0x20
add r5, r0, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
add r4, r0, #0
mov r1, #0
str r4, [sp, #0x14]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x18]
add r0, r5, #0
add r1, sp, #8
@@ -32608,7 +32608,7 @@ MOD06_02249508: ; 0x02249508
add r0, r4, #0
add r2, sp, #8
mov r3, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x20
pop {r3, r4, r5, pc}
nop
@@ -32670,7 +32670,7 @@ MOD06_0224959C: ; 0x0224959C
cmp r0, #0
bne _022495C0
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0xc
pop {r3, r4, r5, r6, pc}
_022495C0:
@@ -32680,7 +32680,7 @@ _022495C0:
cmp r0, #0
beq _022495D6
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0xc
pop {r3, r4, r5, r6, pc}
_022495D6:
@@ -32763,11 +32763,11 @@ MOD06_02249668: ; 0x02249668
sub sp, #0x20
add r5, r0, #0
add r4, r1, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
add r6, r0, #0
mov r1, #0
str r6, [sp, #0x14]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x18]
add r0, r5, #0
add r1, sp, #8
@@ -32783,7 +32783,7 @@ MOD06_02249668: ; 0x02249668
add r0, r6, #0
add r2, sp, #8
add r3, r4, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x20
pop {r4, r5, r6, pc}
.align 2, 0
@@ -32804,7 +32804,7 @@ MOD06_022496AC: ; 0x022496AC
cmp r0, #0
bne _022496D0
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0xc
pop {r3, r4, r5, r6, pc}
_022496D0:
@@ -32920,7 +32920,7 @@ MOD06_022497A0: ; 0x022497A0
mov r1, #4
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_022497CC
@@ -32934,7 +32934,7 @@ MOD06_022497BC: ; 0x022497BC
add r4, r0, #0
bl MOD06_022497DC
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_022497CC
@@ -32965,10 +32965,10 @@ MOD06_022497E8: ; 0x022497E8
bl FUN_02058738
str r0, [sp, #8]
add r0, r5, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
mov r1, #1
str r0, [sp, #0xc]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x10]
add r0, r5, #0
add r1, sp, #0x18
@@ -32984,7 +32984,7 @@ MOD06_022497E8: ; 0x022497E8
ldr r1, _02249830 ; =0x02251958
add r2, sp, #0x18
add r3, r4, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x24
pop {r4, r5, pc}
nop
@@ -33087,7 +33087,7 @@ _022498DE:
bne _02249906
_022498FC:
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_02249906:
@@ -33163,7 +33163,7 @@ _02249976:
bne _0224999E
_02249994:
add r0, r6, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0xc
pop {r4, r5, r6, r7, pc}
_0224999E:
@@ -33193,7 +33193,7 @@ _022499BE:
add r1, #0x28
bl FUN_0201F7F0
ldr r0, [r5, #0x20]
- bl FUN_021F0514
+ bl MOD05_021F0514
add r4, r0, #0
bl FUN_0201F844
add r1, r0, #0
@@ -33271,16 +33271,16 @@ MOD06_02249A68: ; 0x02249A68
bl FUN_02058578
ldr r1, [r4, #8]
add r2, sp, #0
- bl FUN_021F220C
+ bl MOD05_021F220C
cmp r0, #0
beq _02249AAE
ldr r0, [r4, #0x20]
- bl FUN_021F2E28
+ bl MOD05_021F2E28
cmp r0, #1
beq _02249AAE
ldr r0, [r4, #0x18]
mov r1, #2
- bl FUN_021E5094
+ bl MOD05_021E5094
str r0, [sp]
add r0, r5, #0
add r1, sp, #0x28
@@ -33288,7 +33288,7 @@ MOD06_02249A68: ; 0x02249A68
ldr r0, [r4, #0x18]
add r1, sp, #0
add r2, sp, #0x28
- bl FUN_021E4E90
+ bl MOD05_021E4E90
str r0, [r4, #0x24]
mov r0, #1
str r0, [r4, #0xc]
@@ -33314,7 +33314,7 @@ _02249AC4:
bne _02249AC4
ldr r0, [r4, #8]
mov r1, #2
- bl FUN_021E5094
+ bl MOD05_021E5094
str r0, [sp]
add r0, r5, #0
add r1, sp, #0x28
@@ -33322,7 +33322,7 @@ _02249AC4:
ldr r0, [r4, #8]
add r1, sp, #0
add r2, sp, #0x28
- bl FUN_021E4E90
+ bl MOD05_021E4E90
str r0, [r4, #0x3c]
ldr r5, [r4, #0x38]
add r0, r5, #0
@@ -33401,12 +33401,12 @@ MOD06_02249B7C: ; 0x02249B7C
add r4, r1, #0
add r6, r2, #0
add r7, r3, #0
- bl FUN_021E4C20
+ bl MOD05_021E4C20
str r0, [sp, #8]
add r0, r5, #0
mov r1, #1
str r5, [sp, #0xc]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x10]
add r3, sp, #0x14
mov r2, #5
@@ -33424,7 +33424,7 @@ _02249B9E:
ldr r3, [sp, #0x58]
add r0, r5, #0
add r2, r7, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x40
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -33545,7 +33545,7 @@ MOD06_02249C98: ; 0x02249C98
ldr r1, _02249CB4 ; =0x00000734
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_02249CC8
@@ -33560,7 +33560,7 @@ MOD06_02249CB8: ; 0x02249CB8
add r4, r0, #0
bl MOD06_02249D60
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_02249CC8
@@ -33601,14 +33601,14 @@ _02249CFC:
ldr r0, [r5]
ldr r1, [r1]
mov r2, #0
- bl FUN_021E51EC
+ bl MOD05_021E51EC
str r6, [sp]
str r7, [sp, #4]
ldr r0, [r5]
ldr r1, [r4]
ldr r3, [sp, #8]
mov r2, #0
- bl FUN_021E51EC
+ bl MOD05_021E51EC
ldr r0, [sp, #0x18]
add r7, r7, #4
add r0, r0, #4
@@ -33649,9 +33649,9 @@ MOD06_02249D60: ; 0x02249D60
add r6, #0x28
_02249D6C:
ldr r0, [r5, r7]
- bl FUN_021E4C00
+ bl MOD05_021E4C00
ldr r0, [r5, r6]
- bl FUN_021E4C00
+ bl MOD05_021E4C00
add r4, r4, #1
add r5, r5, #4
cmp r4, #0xa
@@ -33846,10 +33846,10 @@ MOD06_02249E9C: ; 0x02249E9C
bl FUN_0205829C
add r7, r0, #0
add r0, r5, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
mov r1, #0xb
str r0, [sp, #8]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
ldr r2, [sp, #0x14]
ldr r3, [sp, #0x18]
add r1, r4, #0
@@ -33928,7 +33928,7 @@ _02249F6A:
add r2, sp, #0x28
mov r3, #0
str r7, [sp, #4]
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x34
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -33984,7 +33984,7 @@ _02249FD0:
sub r2, r2, #2
str r2, [r1, #0xc]
bpl _02249FDC
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
_02249FDC:
pop {r3, pc}
.align 2, 0
@@ -34045,7 +34045,7 @@ MOD06_0224A040: ; 0x0224A040
lsl r1, r1, #2
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224A06C
@@ -34058,7 +34058,7 @@ MOD06_0224A05C: ; 0x0224A05C
add r4, r0, #0
bl MOD06_0224A0B4
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224A06C
@@ -34084,7 +34084,7 @@ _0224A086:
ldr r0, [r0]
mov r2, #0
add r3, r7, #0
- bl FUN_021E51EC
+ bl MOD05_021E51EC
ldr r0, [sp, #0xc]
add r6, r6, #4
add r0, r0, #1
@@ -34108,7 +34108,7 @@ MOD06_0224A0B4: ; 0x0224A0B4
lsl r6, r6, #2
_0224A0BE:
ldr r0, [r5, r6]
- bl FUN_021E4C00
+ bl MOD05_021E4C00
add r4, r4, #1
add r5, r5, #4
cmp r4, #6
@@ -34183,10 +34183,10 @@ MOD06_0224A130: ; 0x0224A130
push {r4, r5, r6, lr}
sub sp, #0xc8
add r5, r0, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
mov r1, #0xc
add r4, r0, #0
- bl FUN_021E4C08
+ bl MOD05_021E4C08
add r6, r0, #0
add r0, r5, #0
bl FUN_02058458
@@ -34223,7 +34223,7 @@ _0224A160:
add r0, r4, #0
add r2, sp, #8
mov r3, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0xc8
pop {r4, r5, r6, pc}
.align 2, 0
@@ -34279,7 +34279,7 @@ MOD06_0224A1DC: ; 0x0224A1DC
cmp r0, #0
bne _0224A1FE
add r0, r4, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0x18
pop {r3, r4, r5, pc}
_0224A1FE:
@@ -34355,7 +34355,7 @@ MOD06_0224A280: ; 0x0224A280
lsl r1, r1, #2
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224A2AC
@@ -34368,7 +34368,7 @@ MOD06_0224A29C: ; 0x0224A29C
add r4, r0, #0
bl MOD06_0224A2F4
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224A2AC
@@ -34394,7 +34394,7 @@ _0224A2C6:
ldr r0, [r0]
mov r2, #0
add r3, r7, #0
- bl FUN_021E51EC
+ bl MOD05_021E51EC
ldr r0, [sp, #0xc]
add r6, r6, #4
add r0, r0, #1
@@ -34418,7 +34418,7 @@ MOD06_0224A2F4: ; 0x0224A2F4
lsl r6, r6, #2
_0224A2FE:
ldr r0, [r5, r6]
- bl FUN_021E4C00
+ bl MOD05_021E4C00
add r4, r4, #1
add r5, r5, #4
cmp r4, #3
@@ -34431,11 +34431,11 @@ MOD06_0224A310: ; 0x0224A310
push {r3, r4, r5, lr}
sub sp, #0x20
add r5, r0, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
add r4, r0, #0
mov r1, #0xd
str r4, [sp, #0x14]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x18]
add r0, r5, #0
add r1, sp, #8
@@ -34451,7 +34451,7 @@ MOD06_0224A310: ; 0x0224A310
add r0, r4, #0
add r2, sp, #8
mov r3, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x20
pop {r3, r4, r5, pc}
nop
@@ -34498,7 +34498,7 @@ MOD06_0224A384: ; 0x0224A384
cmp r0, #0
bne _0224A3A6
add r0, r6, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0xc
pop {r3, r4, r5, r6, pc}
_0224A3A6:
@@ -34589,7 +34589,7 @@ MOD06_0224A44C: ; 0x0224A44C
mov r1, #0xc
add r3, r2, #0
add r4, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
str r4, [r0, #8]
pop {r4, pc}
.align 2, 0
@@ -34600,7 +34600,7 @@ MOD06_0224A460: ; 0x0224A460
add r4, r0, #0
bl MOD06_0224A4D8
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224A470
@@ -34634,16 +34634,16 @@ MOD06_0224A488: ; 0x0224A488
ldr r0, [r4, #8]
mov r1, #0xb
mov r2, #0x6d
- bl FUN_021E5078
+ bl MOD05_021E5078
ldr r0, [r4, #8]
mov r1, #0xb
mov r2, #0x80
- bl FUN_021E50AC
+ bl MOD05_021E50AC
ldr r0, [r4, #8]
mov r1, #0xc
mov r2, #0xe
mov r3, #1
- bl FUN_021E50D4
+ bl MOD05_021E50D4
mov r0, #0xc
str r0, [sp]
mov r0, #0
@@ -34654,7 +34654,7 @@ MOD06_0224A488: ; 0x0224A488
ldr r0, [r4, #8]
mov r1, #0xd
add r3, r2, #0
- bl FUN_021E4EFC
+ bl MOD05_021E4EFC
_0224A4D0:
add sp, #0xc
pop {r3, r4, pc}
@@ -34672,16 +34672,16 @@ MOD06_0224A4D8: ; 0x0224A4D8
str r0, [r4, #4]
ldr r0, [r4, #8]
mov r1, #0xb
- bl FUN_021E50A0
+ bl MOD05_021E50A0
ldr r0, [r4, #8]
mov r1, #0xb
- bl FUN_021E50C8
+ bl MOD05_021E50C8
ldr r0, [r4, #8]
mov r1, #0xc
- bl FUN_021E5114
+ bl MOD05_021E5114
ldr r0, [r4, #8]
mov r1, #0xd
- bl FUN_021E506C
+ bl MOD05_021E506C
_0224A506:
pop {r4, pc}
@@ -34712,11 +34712,11 @@ MOD06_0224A528: ; 0x0224A528
push {r3, r4, r5, lr}
sub sp, #0x20
add r5, r0, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
add r4, r0, #0
add r0, r5, #0
add r1, sp, #0x14
- bl FUN_021F1E64
+ bl MOD05_021F1E64
mov r0, #2
ldr r1, [sp, #0x1c]
lsl r0, r0, #0xe
@@ -34725,7 +34725,7 @@ MOD06_0224A528: ; 0x0224A528
add r0, r4, #0
mov r1, #0x1e
str r4, [sp, #8]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0xc]
add r0, sp, #8
str r0, [sp]
@@ -34735,7 +34735,7 @@ MOD06_0224A528: ; 0x0224A528
add r0, r4, #0
add r2, sp, #0x14
mov r3, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x20
pop {r3, r4, r5, pc}
nop
@@ -34763,7 +34763,7 @@ MOD06_0224A570: ; 0x0224A570
ldr r0, [r4, #0xc]
mov r1, #0xd
add r2, sp, #0
- bl FUN_021E4EE4
+ bl MOD05_021E4EE4
str r0, [r4, #0x18]
ldr r0, [r4, #0x10]
bl MOD06_0224A470
@@ -34808,7 +34808,7 @@ MOD06_0224A5C8: ; 0x0224A5C8
cmp r0, #5
blt _0224A5FE
add r0, r2, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0x14
pop {r4, r5, pc}
_0224A5FE:
@@ -34851,7 +34851,7 @@ MOD06_0224A63C: ; 0x0224A63C
mov r1, #0x38
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224A668
@@ -34865,7 +34865,7 @@ MOD06_0224A658: ; 0x0224A658
add r4, r0, #0
bl MOD06_0224A6A0
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224A668
@@ -34876,12 +34876,12 @@ MOD06_0224A668: ; 0x0224A668
add r1, r4, #0
ldr r0, [r4]
add r1, #0x28
- bl FUN_021E5294
+ bl MOD05_021E5294
ldr r0, [r4]
add r1, r4, #4
mov r2, #0x4e
mov r3, #0
- bl FUN_021E5224
+ bl MOD05_021E5224
mov r0, #0x74
str r0, [sp]
mov r0, #0
@@ -34892,7 +34892,7 @@ MOD06_0224A668: ; 0x0224A668
add r4, #0x28
add r1, #0x14
add r3, r4, #0
- bl FUN_021E5260
+ bl MOD05_021E5260
add sp, #8
pop {r4, pc}
@@ -34901,12 +34901,12 @@ MOD06_0224A6A0: ; 0x0224A6A0
push {r4, lr}
add r4, r0, #0
add r0, r4, #4
- bl FUN_021F52C8
+ bl MOD05_021F52C8
add r0, r4, #0
add r4, #0x28
add r0, #0x14
add r1, r4, #0
- bl FUN_021F5358
+ bl MOD05_021F5358
pop {r4, pc}
thumb_func_start MOD06_0224A6B8
@@ -34914,10 +34914,10 @@ MOD06_0224A6B8: ; 0x0224A6B8
push {r3, r4, r5, lr}
sub sp, #0x20
add r5, r0, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
mov r1, #0xe
add r4, r0, #0
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x18]
add r1, sp, #8
mov r0, #0
@@ -34936,7 +34936,7 @@ MOD06_0224A6B8: ; 0x0224A6B8
add r0, r4, #0
add r2, sp, #8
mov r3, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x20
pop {r3, r4, r5, pc}
.align 2, 0
@@ -34972,12 +34972,12 @@ MOD06_0224A710: ; 0x0224A710
ldr r0, [r5, #0x10]
mov r2, #1
mov r3, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r4, [r5, #0x1c]
ldr r0, [r5, #0x10]
add r1, r4, #4
- bl FUN_021E5294
+ bl MOD05_021E5294
ldr r2, [r5, #0x14]
add r0, r4, #4
ldr r1, [r2, #0x18]
@@ -34993,7 +34993,7 @@ MOD06_0224A710: ; 0x0224A710
add r0, r4, #0
add r0, #0x18
add r1, r1, #4
- bl FUN_021F5400
+ bl MOD05_021F5400
add r0, r4, #0
ldr r1, [r4]
add r0, #0x18
@@ -35031,7 +35031,7 @@ MOD06_0224A710: ; 0x0224A710
ldr r2, [sp, #0x10]
ldr r3, [sp, #0x14]
add r0, r4, #0
- bl FUN_021F54D0
+ bl MOD05_021F54D0
mov r0, #1
add sp, #0x18
pop {r4, r5, r6, pc}
@@ -35044,7 +35044,7 @@ MOD06_0224A7C8: ; 0x0224A7C8
add r0, r4, #4
bl thunk_FUN_020ae84c
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224A7DC
@@ -35065,7 +35065,7 @@ MOD06_0224A7DC: ; 0x0224A7DC
cmp r0, #0
bne _0224A828
add r0, r7, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
_0224A806:
@@ -35080,7 +35080,7 @@ _0224A806:
str r1, [r4, #0x14]
cmp r1, r3
ble _0224A824
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
_0224A824:
@@ -35116,7 +35116,7 @@ _0224A828:
ldr r2, [sp, #0x10]
ldr r3, [sp, #0x14]
add r0, r4, #0
- bl FUN_021F54D0
+ bl MOD05_021F54D0
_0224A86C:
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
@@ -35137,7 +35137,7 @@ MOD06_0224A87C: ; 0x0224A87C
mov r1, #0x60
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224A8A8
@@ -35151,7 +35151,7 @@ MOD06_0224A898: ; 0x0224A898
add r4, r0, #0
bl MOD06_0224A8C8
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224A8A8
@@ -35168,7 +35168,7 @@ MOD06_0224A8A8: ; 0x0224A8A8
mov r1, #0x4f
mov r2, #0
add r3, r3, #4
- bl FUN_021E51EC
+ bl MOD05_021E51EC
add sp, #8
pop {r3, pc}
@@ -35185,10 +35185,10 @@ MOD06_0224A8D4: ; 0x0224A8D4
push {r3, r4, r5, lr}
sub sp, #0x20
add r5, r0, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
mov r1, #0xf
add r4, r0, #0
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x18]
add r1, sp, #8
mov r0, #0
@@ -35207,7 +35207,7 @@ MOD06_0224A8D4: ; 0x0224A8D4
add r0, r4, #0
add r2, sp, #8
mov r3, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x20
pop {r3, r4, r5, pc}
.align 2, 0
@@ -35254,7 +35254,7 @@ MOD06_0224A948: ; 0x0224A948
cmp r0, #0
bne _0224A96A
add r0, r4, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0x18
pop {r3, r4, r5, pc}
_0224A96A:
@@ -35327,7 +35327,7 @@ MOD06_0224A9E8: ; 0x0224A9E8
mov r1, #0x60
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224AA14
@@ -35341,7 +35341,7 @@ MOD06_0224AA04: ; 0x0224AA04
add r4, r0, #0
bl MOD06_0224AA34
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224AA14
@@ -35358,7 +35358,7 @@ MOD06_0224AA14: ; 0x0224AA14
mov r1, #0x6e
mov r2, #0
add r3, r3, #4
- bl FUN_021E51EC
+ bl MOD05_021E51EC
add sp, #8
pop {r3, pc}
@@ -35375,10 +35375,10 @@ MOD06_0224AA40: ; 0x0224AA40
push {r3, r4, r5, lr}
sub sp, #0x20
add r5, r0, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
mov r1, #0x1f
add r4, r0, #0
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x18]
add r1, sp, #8
mov r0, #0
@@ -35397,7 +35397,7 @@ MOD06_0224AA40: ; 0x0224AA40
add r0, r4, #0
add r2, sp, #8
mov r3, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x20
pop {r3, r4, r5, pc}
.align 2, 0
@@ -35444,7 +35444,7 @@ MOD06_0224AAB4: ; 0x0224AAB4
cmp r0, #0
bne _0224AAD6
add r0, r4, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0x18
pop {r3, r4, r5, pc}
_0224AAD6:
@@ -35517,7 +35517,7 @@ MOD06_0224AB54: ; 0x0224AB54
mov r1, #0x60
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224AB80
@@ -35531,7 +35531,7 @@ MOD06_0224AB70: ; 0x0224AB70
add r4, r0, #0
bl MOD06_0224ABA0
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224AB80
@@ -35548,7 +35548,7 @@ MOD06_0224AB80: ; 0x0224AB80
mov r1, #0x51
mov r2, #0
add r3, r3, #4
- bl FUN_021E51EC
+ bl MOD05_021E51EC
add sp, #8
pop {r3, pc}
@@ -35573,10 +35573,10 @@ MOD06_0224ABAC: ; 0x0224ABAC
add r5, r0, #0
str r1, [r2, #8]
str r3, [sp, #0x20]
- bl FUN_021E4C24
+ bl MOD05_021E4C24
mov r1, #0x11
str r0, [sp, #0x24]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x28]
ldr r0, [sp, #0x40]
str r5, [sp, #0x2c]
@@ -35619,7 +35619,7 @@ _0224AC12:
ldr r1, _0224AC34 ; =0x02251BF4
ldr r3, [sp, #0x40]
add r2, sp, #0x14
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x30
pop {r4, r5, r6, pc}
.align 2, 0
@@ -35689,7 +35689,7 @@ MOD06_0224AC98: ; 0x0224AC98
cmp r0, #0
bne _0224ACBA
add r0, r6, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0x18
pop {r4, r5, r6, pc}
_0224ACBA:
@@ -35876,7 +35876,7 @@ MOD06_0224AE10: ; 0x0224AE10
mov r1, #0x70
add r3, r2, #0
add r4, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
str r4, [r0, #0x10]
pop {r4, pc}
.align 2, 0
@@ -35887,7 +35887,7 @@ MOD06_0224AE24: ; 0x0224AE24
add r4, r0, #0
bl MOD06_0224AE78
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224AE34
@@ -35918,7 +35918,7 @@ MOD06_0224AE4C: ; 0x0224AE4C
ldr r0, [r4, #0x10]
mov r1, #0x52
mov r2, #1
- bl FUN_021E4C6C
+ bl MOD05_021E4C6C
str r0, [r4, #0x6c]
ldr r0, _0224AE74 ; =MOD06_0224AEC0
add r1, r4, #0
@@ -35950,7 +35950,7 @@ _0224AE8C:
mov r0, #0
str r0, [r4, #4]
ldr r0, [r4, #0x6c]
- bl FUN_021E4C00
+ bl MOD05_021E4C00
_0224AE9C:
pop {r4, pc}
.align 2, 0
@@ -35988,7 +35988,7 @@ MOD06_0224AEC0: ; 0x0224AEC0
add r1, #0x14
add r2, #0x68
add r3, #0x6c
- bl FUN_021E5198
+ bl MOD05_021E5198
mov r0, #0
str r0, [r4, #0xc]
mov r0, #1
@@ -36011,7 +36011,7 @@ MOD06_0224AEE8: ; 0x0224AEE8
str r3, [sp, #8]
add r5, r0, #0
str r1, [r2, #8]
- bl FUN_021E4C24
+ bl MOD05_021E4C24
add r4, r0, #0
ldr r0, [sp, #8]
str r4, [sp, #0x1c]
@@ -36021,7 +36021,7 @@ MOD06_0224AEE8: ; 0x0224AEE8
str r0, [sp, #0x20]
add r0, r4, #0
mov r1, #0x12
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x24]
ldr r0, [sp, #0x40]
str r5, [sp, #0x28]
@@ -36054,7 +36054,7 @@ _0224AF46:
ldr r3, [sp, #0x40]
add r0, r4, #0
add r2, sp, #0xc
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -36233,7 +36233,7 @@ MOD06_0224B0A8: ; 0x0224B0A8
mov r1, #0x38
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224B0D4
@@ -36247,7 +36247,7 @@ MOD06_0224B0C4: ; 0x0224B0C4
add r4, r0, #0
bl MOD06_0224B10C
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224B0D4
@@ -36258,12 +36258,12 @@ MOD06_0224B0D4: ; 0x0224B0D4
add r1, r4, #0
ldr r0, [r4]
add r1, #0x28
- bl FUN_021E5294
+ bl MOD05_021E5294
ldr r0, [r4]
add r1, r4, #4
mov r2, #0xf
mov r3, #0
- bl FUN_021E5224
+ bl MOD05_021E5224
mov r0, #0x6f
str r0, [sp]
mov r0, #0
@@ -36274,7 +36274,7 @@ MOD06_0224B0D4: ; 0x0224B0D4
add r4, #0x28
add r1, #0x14
add r3, r4, #0
- bl FUN_021E5260
+ bl MOD05_021E5260
add sp, #8
pop {r4, pc}
@@ -36283,12 +36283,12 @@ MOD06_0224B10C: ; 0x0224B10C
push {r4, lr}
add r4, r0, #0
add r0, r4, #4
- bl FUN_021F52C8
+ bl MOD05_021F52C8
add r0, r4, #0
add r4, #0x28
add r0, #0x14
add r1, r4, #0
- bl FUN_021F5358
+ bl MOD05_021F5358
pop {r4, pc}
thumb_func_start MOD06_0224B124
@@ -36299,10 +36299,10 @@ MOD06_0224B124: ; 0x0224B124
add r6, r1, #0
add r4, r2, #0
add r7, r3, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
mov r1, #0x13
str r0, [sp, #8]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0xc]
add r0, r6, #0
add r1, r7, #0
@@ -36332,7 +36332,7 @@ MOD06_0224B124: ; 0x0224B124
ldr r1, _0224B184 ; =0x02251C70
add r2, sp, #0x10
mov r3, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -36353,12 +36353,12 @@ MOD06_0224B188: ; 0x0224B188
ldr r0, [r0]
mov r1, #0x90
mov r3, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r4, [r5]
ldr r0, [r5, #4]
add r1, r4, #4
- bl FUN_021E5294
+ bl MOD05_021E5294
ldr r2, [r5, #8]
add r0, r4, #4
ldr r1, [r2, #0x18]
@@ -36374,7 +36374,7 @@ MOD06_0224B188: ; 0x0224B188
add r0, r4, #0
add r0, #0x18
add r1, r1, #4
- bl FUN_021F5400
+ bl MOD05_021F5400
add r0, r4, #0
ldr r1, [r4]
add r0, #0x18
@@ -36387,7 +36387,7 @@ MOD06_0224B188: ; 0x0224B188
ldr r2, [sp, #4]
ldr r3, [sp, #8]
add r0, r4, #0
- bl FUN_021F54D0
+ bl MOD05_021F54D0
mov r0, #1
add sp, #0xc
pop {r3, r4, r5, r6, pc}
@@ -36400,7 +36400,7 @@ MOD06_0224B200: ; 0x0224B200
add r0, r4, #4
bl thunk_FUN_020ae84c
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224B214
@@ -36418,7 +36418,7 @@ MOD06_0224B214: ; 0x0224B214
str r2, [r1, #0x14]
cmp r2, r4
ble _0224B234
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
pop {r4, pc}
_0224B234:
ldr r0, [r1]
@@ -36442,7 +36442,7 @@ MOD06_0224B248: ; 0x0224B248
mov r1, #0x38
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224B274
@@ -36456,7 +36456,7 @@ MOD06_0224B264: ; 0x0224B264
add r4, r0, #0
bl MOD06_0224B2AC
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224B274
@@ -36467,12 +36467,12 @@ MOD06_0224B274: ; 0x0224B274
add r1, r4, #0
ldr r0, [r4]
add r1, #0x28
- bl FUN_021E5294
+ bl MOD05_021E5294
ldr r0, [r4]
add r1, r4, #4
mov r2, #0x10
mov r3, #0
- bl FUN_021E5224
+ bl MOD05_021E5224
mov r0, #0x70
str r0, [sp]
mov r0, #0
@@ -36483,7 +36483,7 @@ MOD06_0224B274: ; 0x0224B274
add r4, #0x28
add r1, #0x14
add r3, r4, #0
- bl FUN_021E5260
+ bl MOD05_021E5260
add sp, #8
pop {r4, pc}
@@ -36492,12 +36492,12 @@ MOD06_0224B2AC: ; 0x0224B2AC
push {r4, lr}
add r4, r0, #0
add r0, r4, #4
- bl FUN_021F52C8
+ bl MOD05_021F52C8
add r0, r4, #0
add r4, #0x28
add r0, #0x14
add r1, r4, #0
- bl FUN_021F5358
+ bl MOD05_021F5358
pop {r4, pc}
thumb_func_start MOD06_0224B2C4
@@ -36508,10 +36508,10 @@ MOD06_0224B2C4: ; 0x0224B2C4
add r6, r1, #0
add r4, r2, #0
add r7, r3, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
mov r1, #0x14
str r0, [sp, #8]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0xc]
add r0, r6, #0
add r1, r7, #0
@@ -36538,7 +36538,7 @@ MOD06_0224B2C4: ; 0x0224B2C4
ldr r1, _0224B320 ; =0x02251C84
add r2, sp, #0x10
mov r3, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
nop
@@ -36559,12 +36559,12 @@ MOD06_0224B324: ; 0x0224B324
ldr r0, [r0]
mov r1, #0x90
mov r3, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r4, [r5]
ldr r0, [r5, #4]
add r1, r4, #4
- bl FUN_021E5294
+ bl MOD05_021E5294
ldr r2, [r5, #8]
add r0, r4, #4
ldr r1, [r2, #0x18]
@@ -36580,7 +36580,7 @@ MOD06_0224B324: ; 0x0224B324
add r0, r4, #0
add r0, #0x18
add r1, r1, #4
- bl FUN_021F5400
+ bl MOD05_021F5400
add r0, r4, #0
ldr r1, [r4]
add r0, #0x18
@@ -36593,7 +36593,7 @@ MOD06_0224B324: ; 0x0224B324
ldr r2, [sp, #4]
ldr r3, [sp, #8]
add r0, r4, #0
- bl FUN_021F54D0
+ bl MOD05_021F54D0
mov r0, #1
add sp, #0xc
pop {r3, r4, r5, r6, pc}
@@ -36606,7 +36606,7 @@ MOD06_0224B39C: ; 0x0224B39C
add r0, r4, #4
bl thunk_FUN_020ae84c
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224B3B0
@@ -36624,7 +36624,7 @@ MOD06_0224B3B0: ; 0x0224B3B0
str r2, [r1, #0x14]
cmp r2, r4
ble _0224B3D0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
pop {r4, pc}
_0224B3D0:
ldr r0, [r1]
@@ -36648,7 +36648,7 @@ MOD06_0224B3E4: ; 0x0224B3E4
mov r1, #4
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224B410
@@ -36662,7 +36662,7 @@ MOD06_0224B400: ; 0x0224B400
add r4, r0, #0
bl MOD06_0224B4F0
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224B410
@@ -36673,47 +36673,47 @@ MOD06_0224B410: ; 0x0224B410
ldr r0, [r4]
mov r1, #0
mov r2, #0x53
- bl FUN_021E5078
+ bl MOD05_021E5078
ldr r0, [r4]
mov r1, #5
mov r2, #0x54
- bl FUN_021E5078
+ bl MOD05_021E5078
ldr r0, [r4]
mov r1, #0
mov r2, #0x75
- bl FUN_021E50AC
+ bl MOD05_021E50AC
ldr r0, [r4]
mov r1, #3
mov r2, #0x76
- bl FUN_021E50AC
+ bl MOD05_021E50AC
ldr r0, [r4]
mov r1, #4
mov r2, #0x77
- bl FUN_021E50AC
+ bl MOD05_021E50AC
ldr r0, [r4]
mov r1, #5
mov r2, #0x78
- bl FUN_021E50AC
+ bl MOD05_021E50AC
mov r1, #0
ldr r0, [r4]
add r2, r1, #0
mov r3, #1
- bl FUN_021E50D4
+ bl MOD05_021E50D4
mov r2, #1
ldr r0, [r4]
mov r1, #4
add r3, r2, #0
- bl FUN_021E50D4
+ bl MOD05_021E50D4
ldr r0, [r4]
mov r1, #5
mov r2, #2
mov r3, #1
- bl FUN_021E50D4
+ bl MOD05_021E50D4
ldr r0, [r4]
mov r1, #6
mov r2, #3
mov r3, #1
- bl FUN_021E50D4
+ bl MOD05_021E50D4
mov r1, #0
str r1, [sp]
ldr r0, _0224B4E0 ; =0x02251CEC
@@ -36722,7 +36722,7 @@ MOD06_0224B410: ; 0x0224B410
ldr r0, [r4]
add r2, r1, #0
add r3, r1, #0
- bl FUN_021E4EFC
+ bl MOD05_021E4EFC
mov r0, #4
str r0, [sp]
mov r0, #0
@@ -36733,7 +36733,7 @@ MOD06_0224B410: ; 0x0224B410
ldr r0, [r4]
add r2, r1, #0
mov r3, #3
- bl FUN_021E4EFC
+ bl MOD05_021E4EFC
mov r2, #5
str r2, [sp]
mov r0, #0
@@ -36743,7 +36743,7 @@ MOD06_0224B410: ; 0x0224B410
str r0, [sp, #8]
ldr r0, [r4]
mov r3, #4
- bl FUN_021E4EFC
+ bl MOD05_021E4EFC
mov r0, #6
str r0, [sp]
mov r0, #0
@@ -36754,7 +36754,7 @@ MOD06_0224B410: ; 0x0224B410
ldr r0, [r4]
mov r1, #7
add r3, r2, #0
- bl FUN_021E4EFC
+ bl MOD05_021E4EFC
add sp, #0xc
pop {r3, r4, pc}
.align 2, 0
@@ -36769,46 +36769,46 @@ MOD06_0224B4F0: ; 0x0224B4F0
add r4, r0, #0
ldr r0, [r4]
mov r1, #0
- bl FUN_021E50A0
+ bl MOD05_021E50A0
ldr r0, [r4]
mov r1, #5
- bl FUN_021E50A0
+ bl MOD05_021E50A0
ldr r0, [r4]
mov r1, #0
- bl FUN_021E50C8
+ bl MOD05_021E50C8
ldr r0, [r4]
mov r1, #3
- bl FUN_021E50C8
+ bl MOD05_021E50C8
ldr r0, [r4]
mov r1, #4
- bl FUN_021E50C8
+ bl MOD05_021E50C8
ldr r0, [r4]
mov r1, #5
- bl FUN_021E50C8
+ bl MOD05_021E50C8
ldr r0, [r4]
mov r1, #0
- bl FUN_021E5114
+ bl MOD05_021E5114
ldr r0, [r4]
mov r1, #4
- bl FUN_021E5114
+ bl MOD05_021E5114
ldr r0, [r4]
mov r1, #5
- bl FUN_021E5114
+ bl MOD05_021E5114
ldr r0, [r4]
mov r1, #6
- bl FUN_021E5114
+ bl MOD05_021E5114
ldr r0, [r4]
mov r1, #0
- bl FUN_021E506C
+ bl MOD05_021E506C
ldr r0, [r4]
mov r1, #5
- bl FUN_021E506C
+ bl MOD05_021E506C
ldr r0, [r4]
mov r1, #6
- bl FUN_021E506C
+ bl MOD05_021E506C
ldr r0, [r4]
mov r1, #7
- bl FUN_021E506C
+ bl MOD05_021E506C
pop {r4, pc}
.align 2, 0
@@ -36818,7 +36818,7 @@ MOD06_0224B568: ; 0x0224B568
sub sp, #0x30
add r5, r0, #0
add r6, r1, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
add r4, r0, #0
add r0, r5, #0
bl FUN_02058B2C
@@ -36831,11 +36831,11 @@ MOD06_0224B568: ; 0x0224B568
str r0, [sp, #0x10]
add r0, r4, #0
str r4, [sp, #0x18]
- bl FUN_021E4C20
+ bl MOD05_021E4C20
str r0, [sp, #0x14]
add r0, r4, #0
mov r1, #0x15
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x1c]
add r0, r5, #0
add r1, sp, #0x24
@@ -36851,7 +36851,7 @@ MOD06_0224B568: ; 0x0224B568
add r0, r4, #0
add r2, sp, #0x24
add r3, r6, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x30
pop {r4, r5, r6, pc}
nop
@@ -36913,7 +36913,7 @@ MOD06_0224B5D0: ; 0x0224B5D0
ldr r0, [r4, #0x28]
mov r1, #0
add r2, sp, #0
- bl FUN_021E4EE4
+ bl MOD05_021E4EE4
str r0, [r4, #0x34]
add r0, r5, #0
bl FUN_02064754
@@ -36949,7 +36949,7 @@ MOD06_0224B670: ; 0x0224B670
cmp r0, #0
bne _0224B694
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
_0224B694:
@@ -37021,7 +37021,7 @@ _0224B710:
cmp r0, #0
bne _0224B72A
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
_0224B72A:
@@ -37038,7 +37038,7 @@ _0224B72A:
beq _0224B74A
_0224B744:
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
_0224B74A:
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
@@ -37058,7 +37058,7 @@ MOD06_0224B750: ; 0x0224B750
cmp r0, #0
bne _0224B772
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0xc
pop {r4, r5, pc}
_0224B772:
@@ -37094,7 +37094,7 @@ MOD06_0224B788: ; 0x0224B788
ldr r0, [r4, #0x14]
mov r1, #0
add r2, sp, #0
- bl FUN_021E4EE4
+ bl MOD05_021E4EE4
str r0, [r4, #0x1c]
mov r0, #1
add sp, #0xc
@@ -37164,7 +37164,7 @@ MOD06_0224B818: ; 0x0224B818
str r5, [sp, #8]
str r4, [sp, #0xc]
str r6, [sp, #0x14]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x18]
mov r0, #2
lsl r1, r5, #0x10
@@ -37186,7 +37186,7 @@ MOD06_0224B818: ; 0x0224B818
add r0, r6, #0
add r2, sp, #0x1c
add r3, r7, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x28
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -37262,7 +37262,7 @@ _0224B8EA:
_0224B8EC:
ldr r0, [r4, #0x1c]
add r2, sp, #0
- bl FUN_021E4EE4
+ bl MOD05_021E4EE4
str r0, [r4, #0x24]
mov r0, #1
add sp, #0xc
@@ -37320,7 +37320,7 @@ MOD06_0224B948: ; 0x0224B948
mov r1, #4
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224B974
@@ -37334,7 +37334,7 @@ MOD06_0224B964: ; 0x0224B964
add r4, r0, #0
bl MOD06_0224B9B8
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224B974
@@ -37345,16 +37345,16 @@ MOD06_0224B974: ; 0x0224B974
ldr r0, [r4]
mov r1, #3
mov r2, #0x56
- bl FUN_021E5078
+ bl MOD05_021E5078
ldr r0, [r4]
mov r1, #2
mov r2, #0x79
- bl FUN_021E50AC
+ bl MOD05_021E50AC
ldr r0, [r4]
mov r1, #2
mov r2, #5
mov r3, #1
- bl FUN_021E50D4
+ bl MOD05_021E50D4
mov r3, #2
mov r1, #3
str r3, [sp]
@@ -37364,7 +37364,7 @@ MOD06_0224B974: ; 0x0224B974
add r2, r1, #0
str r0, [sp, #8]
ldr r0, [r4]
- bl FUN_021E4EFC
+ bl MOD05_021E4EFC
add sp, #0xc
pop {r3, r4, pc}
.align 2, 0
@@ -37376,16 +37376,16 @@ MOD06_0224B9B8: ; 0x0224B9B8
add r4, r0, #0
ldr r0, [r4]
mov r1, #3
- bl FUN_021E50A0
+ bl MOD05_021E50A0
ldr r0, [r4]
mov r1, #2
- bl FUN_021E50C8
+ bl MOD05_021E50C8
ldr r0, [r4]
mov r1, #2
- bl FUN_021E5114
+ bl MOD05_021E5114
ldr r0, [r4]
mov r1, #3
- bl FUN_021E506C
+ bl MOD05_021E506C
pop {r4, pc}
.align 2, 0
@@ -37395,7 +37395,7 @@ MOD06_0224B9E0: ; 0x0224B9E0
sub sp, #0x24
add r5, r0, #0
add r6, r1, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
add r4, r0, #0
add r0, r5, #0
bl FUN_02058738
@@ -37403,7 +37403,7 @@ MOD06_0224B9E0: ; 0x0224B9E0
add r0, r4, #0
mov r1, #0x17
str r4, [sp, #0x18]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x1c]
add r1, sp, #8
mov r0, #0
@@ -37421,7 +37421,7 @@ MOD06_0224B9E0: ; 0x0224B9E0
add r0, r4, #0
add r2, sp, #8
add r3, r6, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x24
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -37461,7 +37461,7 @@ MOD06_0224BA30: ; 0x0224BA30
ldr r0, [r4, #0x18]
mov r1, #3
add r2, sp, #0
- bl FUN_021E4EE4
+ bl MOD05_021E4EE4
str r0, [r4, #0x24]
mov r0, #1
add sp, #0xc
@@ -37490,7 +37490,7 @@ MOD06_0224BA94: ; 0x0224BA94
cmp r0, #0
bne _0224BAB4
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
pop {r3, r4, r5, r6, r7, pc}
_0224BAB4:
add r0, r5, #0
@@ -37503,7 +37503,7 @@ _0224BAB4:
cmp r0, #0
bne _0224BAD2
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
pop {r3, r4, r5, r6, r7, pc}
_0224BAD2:
ldr r0, [r4]
@@ -37524,7 +37524,7 @@ _0224BAD2:
cmp r6, #0
bne _0224BB00
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
pop {r3, r4, r5, r6, r7, pc}
_0224BB00:
ldr r0, [r4, #0x24]
@@ -37549,7 +37549,7 @@ MOD06_0224BB0C: ; 0x0224BB0C
cmp r0, #0
bne _0224BB30
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0xc
pop {r3, r4, r5, r6, pc}
_0224BB30:
@@ -37575,7 +37575,7 @@ MOD06_0224BB50: ; 0x0224BB50
mov r1, #4
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224BB7C
@@ -37589,7 +37589,7 @@ MOD06_0224BB6C: ; 0x0224BB6C
add r4, r0, #0
bl MOD06_0224BBC4
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224BB7C
@@ -37600,16 +37600,16 @@ MOD06_0224BB7C: ; 0x0224BB7C
ldr r0, [r4]
mov r1, #6
mov r2, #0x58
- bl FUN_021E5078
+ bl MOD05_021E5078
ldr r0, [r4]
mov r1, #6
mov r2, #0x7a
- bl FUN_021E50AC
+ bl MOD05_021E50AC
mov r1, #7
ldr r0, [r4]
add r2, r1, #0
mov r3, #1
- bl FUN_021E50D4
+ bl MOD05_021E50D4
mov r0, #7
str r0, [sp]
mov r0, #0
@@ -37620,7 +37620,7 @@ MOD06_0224BB7C: ; 0x0224BB7C
ldr r0, [r4]
mov r1, #8
add r3, r2, #0
- bl FUN_021E4EFC
+ bl MOD05_021E4EFC
add sp, #0xc
pop {r3, r4, pc}
nop
@@ -37632,16 +37632,16 @@ MOD06_0224BBC4: ; 0x0224BBC4
add r4, r0, #0
ldr r0, [r4]
mov r1, #6
- bl FUN_021E50A0
+ bl MOD05_021E50A0
ldr r0, [r4]
mov r1, #6
- bl FUN_021E50C8
+ bl MOD05_021E50C8
ldr r0, [r4]
mov r1, #7
- bl FUN_021E5114
+ bl MOD05_021E5114
ldr r0, [r4]
mov r1, #8
- bl FUN_021E506C
+ bl MOD05_021E506C
pop {r4, pc}
.align 2, 0
@@ -37650,7 +37650,7 @@ MOD06_0224BBEC: ; 0x0224BBEC
push {r3, r4, r5, r6, lr}
sub sp, #0x24
add r5, r0, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
add r4, r0, #0
add r0, r5, #0
bl FUN_02058738
@@ -37658,7 +37658,7 @@ MOD06_0224BBEC: ; 0x0224BBEC
add r0, r4, #0
mov r1, #0x19
str r4, [sp, #0x18]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x1c]
add r0, r5, #0
add r1, sp, #8
@@ -37683,7 +37683,7 @@ MOD06_0224BBEC: ; 0x0224BBEC
add r0, r4, #0
add r2, sp, #8
mov r3, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x24
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -37715,7 +37715,7 @@ MOD06_0224BC50: ; 0x0224BC50
ldr r0, [r4, #0x14]
mov r1, #8
add r2, sp, #0
- bl FUN_021E4EE4
+ bl MOD05_021E4EE4
str r0, [r4, #0x20]
mov r0, #1
add sp, #0xc
@@ -37750,7 +37750,7 @@ MOD06_0224BCA0: ; 0x0224BCA0
cmp r0, #9
blt _0224BCCE
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
_0224BCCE:
pop {r3, r4, r5, pc}
@@ -37780,7 +37780,7 @@ MOD06_0224BCF4: ; 0x0224BCF4
mov r1, #4
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224BD20
@@ -37794,7 +37794,7 @@ MOD06_0224BD10: ; 0x0224BD10
add r4, r0, #0
bl MOD06_0224BD68
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224BD20
@@ -37805,16 +37805,16 @@ MOD06_0224BD20: ; 0x0224BD20
ldr r0, [r4]
mov r1, #7
mov r2, #0x59
- bl FUN_021E5078
+ bl MOD05_021E5078
ldr r0, [r4]
mov r1, #7
mov r2, #0x7b
- bl FUN_021E50AC
+ bl MOD05_021E50AC
mov r1, #8
ldr r0, [r4]
add r2, r1, #0
mov r3, #1
- bl FUN_021E50D4
+ bl MOD05_021E50D4
mov r0, #8
str r0, [sp]
mov r0, #0
@@ -37825,7 +37825,7 @@ MOD06_0224BD20: ; 0x0224BD20
ldr r0, [r4]
mov r1, #9
add r3, r2, #0
- bl FUN_021E4EFC
+ bl MOD05_021E4EFC
add sp, #0xc
pop {r3, r4, pc}
nop
@@ -37837,16 +37837,16 @@ MOD06_0224BD68: ; 0x0224BD68
add r4, r0, #0
ldr r0, [r4]
mov r1, #7
- bl FUN_021E50A0
+ bl MOD05_021E50A0
ldr r0, [r4]
mov r1, #7
- bl FUN_021E50C8
+ bl MOD05_021E50C8
ldr r0, [r4]
mov r1, #8
- bl FUN_021E5114
+ bl MOD05_021E5114
ldr r0, [r4]
mov r1, #9
- bl FUN_021E506C
+ bl MOD05_021E506C
pop {r4, pc}
.align 2, 0
@@ -37856,7 +37856,7 @@ MOD06_0224BD90: ; 0x0224BD90
sub sp, #0x30
add r5, r0, #0
add r6, r1, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
add r4, r0, #0
add r0, r5, #0
bl FUN_02058B2C
@@ -37869,11 +37869,11 @@ MOD06_0224BD90: ; 0x0224BD90
str r0, [sp, #0x10]
add r0, r4, #0
str r4, [sp, #0x18]
- bl FUN_021E4C20
+ bl MOD05_021E4C20
str r0, [sp, #0x14]
add r0, r4, #0
mov r1, #0x1a
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x1c]
add r0, r5, #0
add r1, sp, #0x24
@@ -37889,7 +37889,7 @@ MOD06_0224BD90: ; 0x0224BD90
add r0, r4, #0
add r2, sp, #0x24
add r3, r6, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x30
pop {r4, r5, r6, pc}
nop
@@ -37951,7 +37951,7 @@ MOD06_0224BDF8: ; 0x0224BDF8
ldr r0, [r4, #0x28]
mov r1, #9
add r2, sp, #0
- bl FUN_021E4EE4
+ bl MOD05_021E4EE4
str r0, [r4, #0x34]
add r0, r5, #0
bl FUN_02064754
@@ -37987,7 +37987,7 @@ MOD06_0224BE98: ; 0x0224BE98
cmp r0, #0
bne _0224BEBC
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
_0224BEBC:
@@ -38067,7 +38067,7 @@ _0224BF40:
beq _0224BF60
_0224BF5A:
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
_0224BF60:
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
@@ -38086,7 +38086,7 @@ MOD06_0224BF64: ; 0x0224BF64
cmp r0, #0
bne _0224BF86
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0xc
pop {r4, r5, pc}
_0224BF86:
@@ -38107,7 +38107,7 @@ MOD06_0224BF9C: ; 0x0224BF9C
mov r1, #4
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224BFC8
@@ -38121,7 +38121,7 @@ MOD06_0224BFB8: ; 0x0224BFB8
add r4, r0, #0
bl MOD06_0224C010
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224BFC8
@@ -38132,16 +38132,16 @@ MOD06_0224BFC8: ; 0x0224BFC8
ldr r0, [r4]
mov r1, #8
mov r2, #0x5a
- bl FUN_021E5078
+ bl MOD05_021E5078
ldr r0, [r4]
mov r1, #8
mov r2, #0x7c
- bl FUN_021E50AC
+ bl MOD05_021E50AC
mov r1, #9
ldr r0, [r4]
add r2, r1, #0
mov r3, #1
- bl FUN_021E50D4
+ bl MOD05_021E50D4
mov r0, #9
str r0, [sp]
mov r0, #0
@@ -38152,7 +38152,7 @@ MOD06_0224BFC8: ; 0x0224BFC8
ldr r0, [r4]
mov r1, #0xa
add r3, r2, #0
- bl FUN_021E4EFC
+ bl MOD05_021E4EFC
add sp, #0xc
pop {r3, r4, pc}
nop
@@ -38164,16 +38164,16 @@ MOD06_0224C010: ; 0x0224C010
add r4, r0, #0
ldr r0, [r4]
mov r1, #8
- bl FUN_021E50A0
+ bl MOD05_021E50A0
ldr r0, [r4]
mov r1, #8
- bl FUN_021E50C8
+ bl MOD05_021E50C8
ldr r0, [r4]
mov r1, #9
- bl FUN_021E5114
+ bl MOD05_021E5114
ldr r0, [r4]
mov r1, #0xa
- bl FUN_021E506C
+ bl MOD05_021E506C
pop {r4, pc}
.align 2, 0
@@ -38183,7 +38183,7 @@ MOD06_0224C038: ; 0x0224C038
sub sp, #0x30
add r5, r0, #0
add r6, r1, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
add r4, r0, #0
add r0, r5, #0
bl FUN_02058B2C
@@ -38196,11 +38196,11 @@ MOD06_0224C038: ; 0x0224C038
str r0, [sp, #0x10]
add r0, r4, #0
str r4, [sp, #0x18]
- bl FUN_021E4C20
+ bl MOD05_021E4C20
str r0, [sp, #0x14]
add r0, r4, #0
mov r1, #0x1b
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x1c]
add r0, r5, #0
add r1, sp, #0x24
@@ -38216,7 +38216,7 @@ MOD06_0224C038: ; 0x0224C038
add r0, r4, #0
add r2, sp, #0x24
add r3, r6, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x30
pop {r4, r5, r6, pc}
nop
@@ -38283,7 +38283,7 @@ MOD06_0224C0A0: ; 0x0224C0A0
ldr r0, [r4, #0x28]
mov r1, #0xa
add r2, sp, #0
- bl FUN_021E4EE4
+ bl MOD05_021E4EE4
str r0, [r4, #0x34]
add r0, r5, #0
bl FUN_02064754
@@ -38320,7 +38320,7 @@ MOD06_0224C14C: ; 0x0224C14C
cmp r0, #0
bne _0224C170
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
_0224C170:
@@ -38400,7 +38400,7 @@ _0224C1F4:
beq _0224C214
_0224C20E:
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
_0224C214:
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
@@ -38418,7 +38418,7 @@ MOD06_0224C218: ; 0x0224C218
cmp r0, #0
bne _0224C238
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
add sp, #0xc
pop {r4, r5, pc}
_0224C238:
@@ -38485,7 +38485,7 @@ MOD06_0224C27C: ; 0x0224C27C
bl FUN_0204AAD4
ldr r1, [sp, #4]
add r0, sp, #8
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
add r3, sp, #8
ldmia r3!, {r0, r1}
add r2, r4, #0
@@ -38544,11 +38544,11 @@ _0224C31C: ; jump table
_0224C328:
ldr r0, _0224C508 ; =0x00000205
ldr r1, [r5, #0x2c]
- bl FUN_021F4BD0
+ bl MOD05_021F4BD0
add r6, r0, #0
ldr r1, [r5, #0x2c]
mov r0, #0x7c
- bl FUN_021F4BD0
+ bl MOD05_021F4BD0
str r0, [sp, #0x18]
ldr r0, [r6]
bl FUN_020BC13C
@@ -38564,7 +38564,7 @@ _0224C328:
ldr r1, [r1, #0xc]
add r6, r0, r1
ldr r0, [r5, #0x2c]
- bl FUN_021F4C88
+ bl MOD05_021F4C88
mov r1, #0
str r1, [sp]
str r7, [sp, #4]
@@ -38577,7 +38577,7 @@ _0224C328:
ldr r1, [r5, #0x50]
ldr r3, _0224C508 ; =0x00000205
mov r2, #0x10
- bl FUN_021DA464
+ bl MOD05_021DA464
add r0, r5, #0
mov r1, #0x7c
add r2, sp, #0x1c
@@ -38588,10 +38588,10 @@ _0224C328:
bl ErrorHandling
_0224C390:
ldr r0, [sp, #0x1c]
- bl FUN_021E7EC8
+ bl MOD05_021E7EC8
add r7, r0, #0
ldr r0, [r5, #0x2c]
- bl FUN_021F4C88
+ bl MOD05_021F4C88
str r7, [sp]
str r6, [sp, #4]
str r0, [sp, #8]
@@ -38604,7 +38604,7 @@ _0224C390:
ldr r1, [r5, #0x50]
mov r2, #0x20
mov r3, #0x7c
- bl FUN_021DA464
+ bl MOD05_021DA464
ldrb r0, [r4, #0xf]
add r0, r0, #1
strb r0, [r4, #0xf]
@@ -38652,7 +38652,7 @@ _0224C3C2:
ldr r0, [r0]
ldr r1, [r5, #0x2c]
add r3, sp, #0x2c
- bl FUN_021E7FBC
+ bl MOD05_021E7FBC
ldrb r1, [r4, #0xd]
add r1, r4, r1
strb r0, [r1, #0x10]
@@ -38662,13 +38662,13 @@ _0224C3C2:
add r1, r4, r1
ldrb r1, [r1, #0x10]
ldr r0, [r0]
- bl FUN_021E7EEC
- bl FUN_021E7EC8
+ bl MOD05_021E7EEC
+ bl MOD05_021E7EC8
add r3, r0, #0
ldrb r2, [r4, #0xd]
ldr r0, [r5, #0x50]
mov r1, #0x10
- bl FUN_021DA4BC
+ bl MOD05_021DA4BC
ldrb r0, [r4, #0xf]
add r0, r0, #1
strb r0, [r4, #0xf]
@@ -38702,11 +38702,11 @@ _0224C476:
ldr r0, [r5, #0x50]
mov r1, #0x10
mov r2, #0
- bl FUN_021DA4EC
+ bl MOD05_021DA4EC
ldr r0, [r5, #0x50]
mov r1, #0x20
mov r2, #0
- bl FUN_021DA4EC
+ bl MOD05_021DA4EC
ldr r0, _0224C51C ; =0x0000048E
bl FUN_02005C28
ldrb r0, [r4, #0xf]
@@ -38716,12 +38716,12 @@ _0224C476:
_0224C498:
ldr r0, [r5, #0x50]
mov r1, #0x10
- bl FUN_021DA58C
+ bl MOD05_021DA58C
cmp r0, #0
beq _0224C500
ldr r0, [r5, #0x50]
mov r1, #0x20
- bl FUN_021DA58C
+ bl MOD05_021DA58C
cmp r0, #0
beq _0224C500
bl FUN_02005CBC
@@ -38730,11 +38730,11 @@ _0224C498:
ldr r0, [r5, #0x4c]
ldr r1, [r5, #0x50]
mov r2, #0x20
- bl FUN_021DA54C
+ bl MOD05_021DA54C
ldr r0, [r5, #0x4c]
ldr r1, [r5, #0x50]
mov r2, #0x10
- bl FUN_021DA54C
+ bl MOD05_021DA54C
ldrb r0, [r4, #0xc]
mov r6, #0
cmp r0, #0
@@ -38745,7 +38745,7 @@ _0224C4D4:
add r1, #0xa0
ldrb r0, [r0, #0x10]
ldr r1, [r1]
- bl FUN_021E7C80
+ bl MOD05_021E7C80
add r0, r6, #1
lsl r0, r0, #0x18
lsr r6, r0, #0x18
@@ -38833,7 +38833,7 @@ _0224C586: ; jump table
_0224C590:
ldr r0, _0224C66C ; =0x000001F2
ldr r1, [r5, #0x2c]
- bl FUN_021F4BD0
+ bl MOD05_021F4BD0
ldr r0, [r0]
bl FUN_020BC13C
ldrh r1, [r0, #0xe]
@@ -38850,10 +38850,10 @@ _0224C590:
bl ErrorHandling
_0224C5BA:
ldr r0, [sp, #0x18]
- bl FUN_021E7EC8
+ bl MOD05_021E7EC8
add r7, r0, #0
ldr r0, [r5, #0x2c]
- bl FUN_021F4C88
+ bl MOD05_021F4C88
str r7, [sp]
str r6, [sp, #4]
str r0, [sp, #8]
@@ -38867,7 +38867,7 @@ _0224C5BA:
str r0, [sp, #0x14]
ldr r0, [r5, #0x4c]
ldr r1, [r5, #0x50]
- bl FUN_021DA464
+ bl MOD05_021DA464
ldrb r0, [r4, #2]
add r0, r0, #1
strb r0, [r4, #2]
@@ -38888,7 +38888,7 @@ _0224C604:
ldrb r2, [r4, #1]
ldr r0, [r5, #0x50]
mov r1, #1
- bl FUN_021DA4EC
+ bl MOD05_021DA4EC
ldr r0, _0224C670 ; =0x00000612
bl FUN_020054C8
ldrb r0, [r4, #2]
@@ -38898,7 +38898,7 @@ _0224C604:
_0224C61C:
ldr r0, [r5, #0x50]
mov r1, #1
- bl FUN_021DA58C
+ bl MOD05_021DA58C
cmp r0, #0
beq _0224C664
ldr r0, _0224C670 ; =0x00000612
@@ -38909,7 +38909,7 @@ _0224C61C:
ldr r0, [r5, #0x4c]
ldr r1, [r5, #0x50]
mov r2, #1
- bl FUN_021DA54C
+ bl MOD05_021DA54C
ldrb r0, [r4, #2]
add r0, r0, #1
strb r0, [r4, #2]
@@ -38960,13 +38960,13 @@ MOD06_0224C678: ; 0x0224C678
cmp r0, #0
beq _0224C6DA
ldr r0, [r5, #0x2c]
- bl FUN_021F4C88
+ bl MOD05_021F4C88
add r4, r0, #0
ldr r0, [sp, #0x1c]
- bl FUN_021E7EC8
+ bl MOD05_021E7EC8
add r6, r0, #0
ldr r0, [sp, #0x1c]
- bl FUN_021E7ECC
+ bl MOD05_021E7ECC
str r6, [sp]
str r0, [sp, #4]
str r4, [sp, #8]
@@ -38980,7 +38980,7 @@ MOD06_0224C678: ; 0x0224C678
ldr r1, [r5, #0x50]
ldr r3, [sp, #0x18]
add r2, r7, #0
- bl FUN_021DA464
+ bl MOD05_021DA464
add sp, #0x30
pop {r3, r4, r5, r6, r7, pc}
_0224C6DA:
@@ -39062,12 +39062,12 @@ MOD06_0224C75C: ; 0x0224C75C
add r0, r1, #0
mov r1, #4
add r4, r2, #0
- bl FUN_021F61F4
+ bl MOD05_021F61F4
ldr r2, _0224C7B0 ; =0xFFF6A000
str r0, [r4, #0x14]
mov r1, #1
mov r3, #0xf
- bl FUN_021F6254
+ bl MOD05_021F6254
ldr r0, [r4, #0x18]
ldr r1, _0224C7B4 ; =0x02251E40
bl FUN_0205AEA4
@@ -39193,7 +39193,7 @@ _0224C86E:
ldr r0, [r4, #0xc]
bl FUN_0205AEFC
ldr r0, [r4, #0x14]
- bl FUN_021F6240
+ bl MOD05_021F6240
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -39341,12 +39341,12 @@ _0224C97A:
_0224C990:
add r0, r5, #0
mov r1, #4
- bl FUN_021F61F4
+ bl MOD05_021F61F4
mov r1, #1
ldr r2, _0224C9C0 ; =0xFFF6A000
str r0, [r4, #0x14]
add r3, r1, #0
- bl FUN_021F6254
+ bl MOD05_021F6254
ldr r0, [r4, #0x18]
ldr r1, _0224C9C4 ; =0x02251E14
bl FUN_0205AEA4
@@ -39387,7 +39387,7 @@ _0224C9F2:
mov r1, #2
mov r2, #0
mov r3, #0x3c
- bl FUN_021F6254
+ bl MOD05_021F6254
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -39445,14 +39445,14 @@ MOD06_0224CA58: ; 0x0224CA58
pop {r4, pc}
_0224CA6A:
ldr r0, [r4, #0x14]
- bl FUN_021F6234
+ bl MOD05_021F6234
cmp r0, #0
bne _0224CA78
mov r0, #0
pop {r4, pc}
_0224CA78:
ldr r0, [r4, #0x14]
- bl FUN_021F6240
+ bl MOD05_021F6240
ldr r0, [r4, #0xc]
bl FUN_0205AEFC
mov r0, #2
@@ -39961,7 +39961,7 @@ MOD06_0224CE30: ; 0x0224CE30
lsl r1, r1, #2
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224CE5C
@@ -39974,7 +39974,7 @@ MOD06_0224CE4C: ; 0x0224CE4C
add r4, r0, #0
bl MOD06_0224CEA4
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224CE5C
@@ -40000,7 +40000,7 @@ _0224CE76:
ldr r0, [r0]
mov r2, #0
add r3, r7, #0
- bl FUN_021E51EC
+ bl MOD05_021E51EC
ldr r0, [sp, #0xc]
add r6, r6, #4
add r0, r0, #1
@@ -40024,7 +40024,7 @@ MOD06_0224CEA4: ; 0x0224CEA4
lsl r6, r6, #2
_0224CEAE:
ldr r0, [r5, r6]
- bl FUN_021E4C00
+ bl MOD05_021E4C00
add r4, r4, #1
add r5, r5, #4
cmp r4, #4
@@ -40047,9 +40047,9 @@ MOD06_0224CECC: ; 0x0224CECC
sub sp, #0x2c
add r5, r0, #0
add r4, r1, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
add r6, r0, #0
- bl FUN_021E4C20
+ bl MOD05_021E4C20
add r7, r0, #0
add r0, r5, #0
bl FUN_02058B2C
@@ -40067,7 +40067,7 @@ MOD06_0224CECC: ; 0x0224CECC
mov r1, #0x1c
str r4, [sp, #0xc]
str r6, [sp, #0x10]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
add r1, r4, #0
str r0, [sp, #0x14]
str r5, [sp, #0x18]
@@ -40083,7 +40083,7 @@ MOD06_0224CECC: ; 0x0224CECC
add r0, r6, #0
add r2, sp, #0x20
mov r3, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x2c
pop {r4, r5, r6, r7, pc}
nop
@@ -40507,7 +40507,7 @@ MOD06_0224D244: ; 0x0224D244
mov r1, #4
add r3, r2, #0
add r5, r0, #0
- bl FUN_021E4BE8
+ bl MOD05_021E4BE8
add r4, r0, #0
str r5, [r4]
bl MOD06_0224D270
@@ -40521,7 +40521,7 @@ MOD06_0224D260: ; 0x0224D260
add r4, r0, #0
bl MOD06_0224D2B8
add r0, r4, #0
- bl FUN_021E4C00
+ bl MOD05_021E4C00
pop {r4, pc}
thumb_func_start MOD06_0224D270
@@ -40532,16 +40532,16 @@ MOD06_0224D270: ; 0x0224D270
ldr r0, [r4]
mov r1, #9
mov r2, #0x6b
- bl FUN_021E5078
+ bl MOD05_021E5078
ldr r0, [r4]
mov r1, #9
mov r2, #0x7f
- bl FUN_021E50AC
+ bl MOD05_021E50AC
ldr r0, [r4]
mov r1, #0xa
mov r2, #0xc
mov r3, #1
- bl FUN_021E50D4
+ bl MOD05_021E50D4
mov r0, #0xa
str r0, [sp]
mov r0, #0
@@ -40552,7 +40552,7 @@ MOD06_0224D270: ; 0x0224D270
ldr r0, [r4]
mov r1, #0xb
add r3, r2, #0
- bl FUN_021E4EFC
+ bl MOD05_021E4EFC
add sp, #0xc
pop {r3, r4, pc}
nop
@@ -40564,16 +40564,16 @@ MOD06_0224D2B8: ; 0x0224D2B8
add r4, r0, #0
ldr r0, [r4]
mov r1, #9
- bl FUN_021E50A0
+ bl MOD05_021E50A0
ldr r0, [r4]
mov r1, #9
- bl FUN_021E50C8
+ bl MOD05_021E50C8
ldr r0, [r4]
mov r1, #0xa
- bl FUN_021E5114
+ bl MOD05_021E5114
ldr r0, [r4]
mov r1, #0xb
- bl FUN_021E506C
+ bl MOD05_021E506C
pop {r4, pc}
.align 2, 0
@@ -40582,7 +40582,7 @@ MOD06_0224D2E0: ; 0x0224D2E0
push {r3, r4, r5, r6, lr}
sub sp, #0x24
add r5, r0, #0
- bl FUN_021E4C24
+ bl MOD05_021E4C24
add r4, r0, #0
add r0, r5, #0
bl FUN_02058738
@@ -40590,7 +40590,7 @@ MOD06_0224D2E0: ; 0x0224D2E0
add r0, r4, #0
mov r1, #0x1d
str r4, [sp, #0x18]
- bl FUN_021E4C08
+ bl MOD05_021E4C08
str r0, [sp, #0x1c]
add r0, r5, #0
add r1, sp, #8
@@ -40615,7 +40615,7 @@ MOD06_0224D2E0: ; 0x0224D2E0
add r0, r4, #0
add r2, sp, #8
mov r3, #0
- bl FUN_021E4DC4
+ bl MOD05_021E4DC4
add sp, #0x24
pop {r3, r4, r5, r6, pc}
.align 2, 0
@@ -40647,7 +40647,7 @@ MOD06_0224D344: ; 0x0224D344
ldr r0, [r4, #0x14]
mov r1, #0xb
add r2, sp, #0
- bl FUN_021E4EE4
+ bl MOD05_021E4EE4
str r0, [r4, #0x20]
mov r0, #1
add sp, #0xc
@@ -40682,7 +40682,7 @@ MOD06_0224D394: ; 0x0224D394
cmp r0, #7
blt _0224D3C2
add r0, r5, #0
- bl FUN_021E4DE4
+ bl MOD05_021E4DE4
_0224D3C2:
pop {r3, r4, r5, pc}
@@ -42884,7 +42884,7 @@ MOD06_0224E554: ; 0x0224E554
bl FUN_0204AAD4
ldr r1, [sp, #4]
add r0, sp, #8
- bl FUN_021E7EA0
+ bl MOD05_021E7EA0
add r3, sp, #8
ldmia r3!, {r0, r1}
add r2, r4, #0
@@ -42944,7 +42944,7 @@ _0224E5F8: ; jump table
_0224E604:
ldr r0, _0224E754 ; =0x00000205
ldr r1, [r6, #0x2c]
- bl FUN_021F4BD0
+ bl MOD05_021F4BD0
ldr r0, [r0]
bl FUN_020BC13C
ldrh r1, [r0, #0xe]
@@ -42952,7 +42952,7 @@ _0224E604:
ldr r1, [r1, #0xc]
add r5, r0, r1
ldr r0, [r6, #0x2c]
- bl FUN_021F4C88
+ bl MOD05_021F4C88
mov r1, #0
str r1, [sp]
str r5, [sp, #4]
@@ -42965,7 +42965,7 @@ _0224E604:
ldr r1, [r6, #0x50]
ldr r3, _0224E754 ; =0x00000205
mov r2, #0x10
- bl FUN_021DA464
+ bl MOD05_021DA464
ldrb r0, [r4, #0xf]
add r0, r0, #1
strb r0, [r4, #0xf]
@@ -43010,7 +43010,7 @@ _0224E644:
add r0, #0xa0
ldr r0, [r0]
ldr r1, [r6, #0x2c]
- bl FUN_021E7FBC
+ bl MOD05_021E7FBC
ldrb r1, [r4, #0xd]
add r1, r4, r1
strb r0, [r1, #0x10]
@@ -43020,13 +43020,13 @@ _0224E644:
add r1, r4, r1
ldrb r1, [r1, #0x10]
ldr r0, [r0]
- bl FUN_021E7EEC
- bl FUN_021E7EC8
+ bl MOD05_021E7EEC
+ bl MOD05_021E7EC8
add r3, r0, #0
ldrb r2, [r4, #0xd]
ldr r0, [r6, #0x50]
mov r1, #0x10
- bl FUN_021DA4BC
+ bl MOD05_021DA4BC
ldrb r0, [r4, #0xf]
add r0, r0, #1
strb r0, [r4, #0xf]
@@ -43060,7 +43060,7 @@ _0224E6F0:
ldr r0, [r6, #0x50]
mov r1, #0x10
mov r2, #0
- bl FUN_021DA4EC
+ bl MOD05_021DA4EC
ldrb r0, [r4, #0xf]
add r0, r0, #1
strb r0, [r4, #0xf]
@@ -43068,13 +43068,13 @@ _0224E6F0:
_0224E702:
ldr r0, [r6, #0x50]
mov r1, #0x10
- bl FUN_021DA58C
+ bl MOD05_021DA58C
cmp r0, #0
beq _0224E74C
ldr r0, [r6, #0x4c]
ldr r1, [r6, #0x50]
mov r2, #0x10
- bl FUN_021DA54C
+ bl MOD05_021DA54C
ldrb r0, [r4, #0xc]
mov r5, #0
cmp r0, #0
@@ -43085,7 +43085,7 @@ _0224E720:
add r1, #0xa0
ldrb r0, [r0, #0x10]
ldr r1, [r1]
- bl FUN_021E7C80
+ bl MOD05_021E7C80
add r0, r5, #1
lsl r0, r0, #0x18
lsr r5, r0, #0x18
@@ -43125,32 +43125,32 @@ MOD06_0224E764: ; 0x0224E764
ldr r2, [r4, #0x4c]
lsl r0, r0, #4
mov r1, #1
- bl FUN_021DA080
+ bl MOD05_021DA080
add r4, r0, #0
mov r1, #1
- bl FUN_021DA1A4
+ bl MOD05_021DA1A4
add r0, r4, #0
mov r1, #1
- bl FUN_021DA0DC
+ bl MOD05_021DA0DC
pop {r4, pc}
_0224E794:
mov r0, #0x1f
ldr r2, [r4, #0x4c]
lsl r0, r0, #4
mov r1, #0
- bl FUN_021DA080
+ bl MOD05_021DA080
mov r1, #1
- bl FUN_021DA0DC
+ bl MOD05_021DA0DC
mov r0, #0x1f
ldr r2, [r4, #0x4c]
lsl r0, r0, #4
mov r1, #1
- bl FUN_021DA080
+ bl MOD05_021DA080
add r4, r0, #0
- bl FUN_021DA138
+ bl MOD05_021DA138
add r0, r4, #0
mov r1, #1
- bl FUN_021DA0DC
+ bl MOD05_021DA0DC
pop {r4, pc}
.align 2, 0
@@ -43187,14 +43187,14 @@ _0224E7FA:
ldr r2, [r5, #0x4c]
lsl r0, r0, #4
mov r1, #0
- bl FUN_021DA080
+ bl MOD05_021DA080
add r5, r0, #0
- bl FUN_021DA0E8
+ bl MOD05_021DA0E8
cmp r0, #0
beq _0224E852
add r0, r5, #0
mov r1, #1
- bl FUN_021DA0DC
+ bl MOD05_021DA0DC
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -43204,9 +43204,9 @@ _0224E820:
ldr r2, [r5, #0x4c]
lsl r0, r0, #4
mov r1, #1
- bl FUN_021DA080
+ bl MOD05_021DA080
mov r1, #0
- bl FUN_021DA0DC
+ bl MOD05_021DA0DC
ldr r0, [r4]
add r0, r0, #1
str r0, [r4]
@@ -43216,8 +43216,8 @@ _0224E83A:
ldr r2, [r5, #0x4c]
lsl r0, r0, #4
mov r1, #1
- bl FUN_021DA080
- bl FUN_021DA20C
+ bl MOD05_021DA080
+ bl MOD05_021DA20C
cmp r0, #0
beq _0224E852
mov r0, #1
@@ -43280,7 +43280,7 @@ _0224E8AC:
add r1, r1, r3
add r0, r7, #0
add r3, r4, r3
- bl FUN_021F54D0
+ bl MOD05_021F54D0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
@@ -43336,7 +43336,7 @@ _0224E914:
add r1, r1, r3
add r0, r7, #0
add r3, r4, r3
- bl FUN_021F54D0
+ bl MOD05_021F54D0
add sp, #0xc
pop {r4, r5, r6, r7, pc}
@@ -43351,7 +43351,7 @@ MOD06_0224E92C: ; 0x0224E92C
ldr r2, [sp, #4]
ldr r3, [sp, #8]
add r0, r4, #0
- bl FUN_021F54D0
+ bl MOD05_021F54D0
add sp, #0xc
pop {r3, r4, pc}
@@ -43372,11 +43372,11 @@ MOD06_0224E948: ; 0x0224E948
mov r1, #0x8d
add r2, r5, #0
mov r3, #4
- bl FUN_021F5268
+ bl MOD05_021F5268
add r1, r6, #0
add r0, r6, #0
add r1, #0x78
- bl FUN_021F5400
+ bl MOD05_021F5400
add r0, r6, #0
add r0, #0xd8
str r4, [r0]
@@ -43401,10 +43401,10 @@ _0224E994:
mov r2, #0x8d
add r3, r3, r4
str r7, [sp, #4]
- bl FUN_021F531C
+ bl MOD05_021F531C
add r0, r6, #0
add r1, r5, #0
- bl FUN_021F5424
+ bl MOD05_021F5424
add r0, r6, #0
add r0, #0xd8
ldr r0, [r0]
@@ -43423,7 +43423,7 @@ MOD06_0224E9C4: ; 0x0224E9C4
add r6, r0, #0
add r0, #0x78
add r7, r1, #0
- bl FUN_021F52C8
+ bl MOD05_021F52C8
add r0, r6, #0
add r0, #0xd8
ldr r0, [r0]
@@ -43435,7 +43435,7 @@ MOD06_0224E9C4: ; 0x0224E9C4
_0224E9E0:
add r0, r5, #0
add r1, r7, #0
- bl FUN_021F5358
+ bl MOD05_021F5358
add r0, r6, #0
add r0, #0xd8
ldr r0, [r0]
@@ -43462,7 +43462,7 @@ _0224EA0C:
mov r1, #1
add r0, r5, #0
lsl r1, r1, #0xc
- bl FUN_021F53BC
+ bl MOD05_021F53BC
and r6, r0
add r0, r7, #0
add r0, #0xd8
@@ -43492,7 +43492,7 @@ MOD06_0224EA2C: ; 0x0224EA2C
_0224EA42:
add r0, r5, #0
add r1, r7, #0
- bl FUN_021F5384
+ bl MOD05_021F5384
add r0, r6, #0
add r0, #0xd8
ldr r0, [r0]
@@ -43573,7 +43573,7 @@ _0224EACE:
bne _0224EAEC
add r0, r4, #0
mov r1, #0
- bl FUN_021F54CC
+ bl MOD05_021F54CC
add r0, r4, #0
add r0, #0xec
ldr r0, [r0]
@@ -43613,7 +43613,7 @@ _0224EB14: .word 0x021D80A5
thumb_func_start MOD06_0224EB18
MOD06_0224EB18: ; 0x0224EB18
push {r3, lr}
- bl FUN_021D80E4
+ bl MOD05_021D80E4
add r0, #0xec
ldr r0, [r0]
cmp r0, #1
@@ -43722,7 +43722,7 @@ _0224EBE6:
bne _0224EC04
add r0, r4, #0
mov r1, #0
- bl FUN_021F54CC
+ bl MOD05_021F54CC
add r0, r4, #0
add r0, #0xec
ldr r0, [r0]
@@ -43773,7 +43773,7 @@ _0224EC40: .word 0x021D80A5
thumb_func_start MOD06_0224EC44
MOD06_0224EC44: ; 0x0224EC44
push {r3, lr}
- bl FUN_021D80E4
+ bl MOD05_021D80E4
add r0, #0xec
ldr r0, [r0]
cmp r0, #1
@@ -43844,7 +43844,7 @@ _0224ECA8:
ldr r0, [sp, #8]
mov r1, #0
add r0, #0xdc
- bl FUN_021F54CC
+ bl MOD05_021F54CC
ldr r0, _0224ECF0 ; =0x0000064D
bl FUN_020054C8
mov r1, #0x72
@@ -43902,10 +43902,10 @@ _0224ED2A:
add r0, r4, #0
add r0, #0xdc
mov r1, #1
- bl FUN_021F54CC
+ bl MOD05_021F54CC
add r0, r4, #0
mov r1, #0
- bl FUN_021F54CC
+ bl MOD05_021F54CC
add r1, r4, #0
ldr r0, [r5, #0x38]
add r1, #0xdc
@@ -43987,7 +43987,7 @@ _0224EDC8:
add r0, r7, #0
add r2, r2, r4
add r3, r3, r5
- bl FUN_021F54D0
+ bl MOD05_021F54D0
add r0, r7, #0
mov r4, #0
add r5, r7, #0
@@ -43999,14 +43999,14 @@ _0224EDC8:
_0224EDF0:
add r0, r5, #0
add r1, r6, #0
- bl FUN_021F53F8
+ bl MOD05_021F53F8
add r4, r4, #1
add r5, #0x14
cmp r4, #4
blt _0224EDF0
add r0, r7, #0
mov r1, #1
- bl FUN_021F54CC
+ bl MOD05_021F54CC
ldr r0, _0224EE14 ; =0x00000627
bl FUN_020054C8
add sp, #0xc
@@ -44030,7 +44030,7 @@ MOD06_0224EE18: ; 0x0224EE18
_0224EE2E:
add r0, r5, #0
add r1, r7, #0
- bl FUN_021F53BC
+ bl MOD05_021F53BC
add r6, r6, #1
and r4, r0
add r5, #0x14
@@ -44043,7 +44043,7 @@ _0224EE2E:
add r0, #0xc8
str r1, [r0]
ldr r0, [sp]
- bl FUN_021F54CC
+ bl MOD05_021F54CC
_0224EE52:
pop {r3, r4, r5, r6, r7, pc}
@@ -44060,7 +44060,7 @@ MOD06_0224EE54: ; 0x0224EE54
bl Call_FillMemWithValue
ldr r1, [sp]
add r0, r7, #0
- bl FUN_021F5400
+ bl MOD05_021F5400
add r4, r7, #0
mov r6, #0
add r4, #0x78
@@ -44069,10 +44069,10 @@ _0224EE76:
ldr r2, [r5]
ldr r3, [sp, #4]
add r0, r4, #0
- bl FUN_021F5348
+ bl MOD05_021F5348
add r0, r7, #0
add r1, r4, #0
- bl FUN_021F5424
+ bl MOD05_021F5424
add r6, r6, #1
add r5, r5, #4
add r4, #0x14
@@ -44080,7 +44080,7 @@ _0224EE76:
blt _0224EE76
add r0, r7, #0
mov r1, #0
- bl FUN_021F54CC
+ bl MOD05_021F54CC
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
@@ -44095,7 +44095,7 @@ MOD06_0224EEA0: ; 0x0224EEA0
_0224EEAC:
add r0, r5, #0
add r1, r6, #0
- bl FUN_021F5358
+ bl MOD05_021F5358
add r4, r4, #1
add r5, #0x14
cmp r4, #4
@@ -44238,7 +44238,7 @@ MOD06_0224EF98: ; 0x0224EF98
mov r1, #0x8d
mov r2, #8
mov r3, #4
- bl FUN_021F5268
+ bl MOD05_021F5268
mov r7, #0xcd
mov r4, #0
add r6, r5, #0
@@ -44307,7 +44307,7 @@ _0224F038:
cmp r6, #0x10
blt _0224F038
add r0, r5, #0
- bl FUN_021F52C8
+ bl MOD05_021F52C8
mov r6, #0xcd
mov r4, #0
lsl r6, r6, #4
@@ -44363,7 +44363,7 @@ MOD06_0224F0A4: ; 0x0224F0A4
add r5, #0x10
_0224F0AC:
add r0, r5, #0
- bl FUN_021F5430
+ bl MOD05_021F5430
add r4, r4, #1
add r5, #0xcc
cmp r4, #0x10
@@ -44468,9 +44468,13 @@ _0224F144:
_0224F16C: .word 0x02252210
_0224F170: .word MOD06_0224F0D8
- .section .data
+ .section .rodata
; 0x0224F174
- .incbin "baserom.nds", 0x1810D4, 0x32AC
+ .incbin "baserom.nds", 0x1810D4, 0x30B4
+
+ .section .data
+ ; 0x022252240
+ .incbin "baserom.nds", 0x1841a0, 0x1e0
.section .bss
; 0x02252420
diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s
index 39869410..e71b9bfe 100644
--- a/arm9/modules/07/asm/module_07.s
+++ b/arm9/modules/07/asm/module_07.s
@@ -7,7 +7,7 @@
MOD07_02211E60: ; 0x02211E60
push {r3, r4, r5, lr}
add r5, r0, #0
- ldr r0, _02211E88 ; =FUN_02211E94
+ ldr r0, _02211E88 ; =MOD07_02211E94
ldr r1, _02211E8C ; =0x00000B84
ldr r3, [r5, #0x24]
mov r2, #0x64
@@ -23,12 +23,12 @@ MOD07_02211E60: ; 0x02211E60
strb r1, [r4, r0]
pop {r3, r4, r5, pc}
.align 2, 0
-_02211E88: .word FUN_02211E94
+_02211E88: .word MOD07_02211E94
_02211E8C: .word 0x00000B84
_02211E90: .word 0x00000B7F
- thumb_func_start FUN_02211E94
-FUN_02211E94: ; 0x02211E94
+ thumb_func_start MOD07_02211E94
+MOD07_02211E94: ; 0x02211E94
push {r4, r5, r6, lr}
ldr r2, _02211F0C ; =0x00000B7F
add r5, r1, #0
@@ -42,7 +42,7 @@ FUN_02211E94: ; 0x02211E94
b _02211EE0
_02211EAA:
add r0, r5, #0
- bl FUN_02211F34
+ bl MOD07_02211F34
ldr r1, _02211F0C ; =0x00000B7F
strb r0, [r5, r1]
b _02211EE0
@@ -67,7 +67,7 @@ _02211ED2:
beq _02211EBC
b _02211EE0
_02211ED8:
- bl FUN_02212B64
+ bl MOD07_02212B64
cmp r0, #1
beq _02211F0A
_02211EE0:
@@ -77,7 +77,7 @@ _02211EE0:
cmp r0, #0
beq _02211EFA
add r0, r5, #0
- bl FUN_02212D30
+ bl MOD07_02212D30
mov r0, #0x65
lsl r0, r0, #2
ldr r0, [r5, r0]
@@ -97,8 +97,8 @@ _02211F0A:
_02211F0C: .word 0x00000B7F
_02211F10: .word 0x04000540
- thumb_func_start FUN_02211F14
-FUN_02211F14: ; 0x02211F14
+ thumb_func_start MOD07_02211F14
+MOD07_02211F14: ; 0x02211F14
push {r4, lr}
sub sp, #0x28
ldr r4, _02211F30 ; =0x02214AD8
@@ -116,8 +116,8 @@ _02211F1E:
.align 2, 0
_02211F30: .word 0x02214AD8
- thumb_func_start FUN_02211F34
-FUN_02211F34: ; 0x02211F34
+ thumb_func_start MOD07_02211F34
+MOD07_02211F34: ; 0x02211F34
push {r4, lr}
ldr r1, _02211FE0 ; =0x04000050
add r4, r0, #0
@@ -143,7 +143,7 @@ FUN_02211F34: ; 0x02211F34
strh r1, [r0]
add r3, #0x50
strh r1, [r3]
- bl FUN_02211F14
+ bl MOD07_02211F14
ldr r0, [r4]
ldr r0, [r0, #0x24]
bl FUN_02016B94
@@ -196,7 +196,7 @@ _02211FD0:
_02211FD2:
str r0, [r4, #4]
ldr r0, [r4]
- bl FUN_02214720
+ bl MOD07_02214720
_02211FDA:
mov r0, #1
pop {r4, pc}
@@ -210,8 +210,8 @@ _02211FF4: .word 0x022149B4
_02211FF8: .word 0x02214B00
_02211FFC: .word 0x02214B64
- thumb_func_start FUN_02212000
-FUN_02212000: ; 0x02212000
+ thumb_func_start MOD07_02212000
+MOD07_02212000: ; 0x02212000
push {r4, lr}
ldr r1, _02212074 ; =0x00000B82
add r4, r0, #0
@@ -224,14 +224,14 @@ FUN_02212000: ; 0x02212000
beq _0221202E
b _02212068
_02212016:
- bl FUN_02213858
+ bl MOD07_02213858
add r0, r4, #0
- bl FUN_02213924
+ bl MOD07_02213924
b _02212068
_02212022:
- bl FUN_02213D30
+ bl MOD07_02213D30
add r0, r4, #0
- bl FUN_02213F28
+ bl MOD07_02213F28
b _02212068
_0221202E:
mov r2, #0
@@ -239,19 +239,19 @@ _0221202E:
mov r2, #0x20
sub r1, r1, #1
strb r2, [r4, r1]
- bl FUN_022139BC
+ bl MOD07_022139BC
add r0, r4, #0
- bl FUN_0221424C
+ bl MOD07_0221424C
add r0, r4, #0
- bl FUN_0221469C
+ bl MOD07_0221469C
add r0, r4, #0
- bl FUN_02213AEC
+ bl MOD07_02213AEC
bl FUN_02033E74
ldr r1, [r4]
mov r0, #0
ldr r1, [r1, #0x24]
bl FUN_02079A70
- ldr r0, _02212078 ; =FUN_02212D68
+ ldr r0, _02212078 ; =MOD07_02212D68
add r1, r4, #0
bl FUN_02015F10
mov r0, #1
@@ -265,10 +265,10 @@ _02212068:
pop {r4, pc}
.align 2, 0
_02212074: .word 0x00000B82
-_02212078: .word FUN_02212D68
+_02212078: .word MOD07_02212D68
- thumb_func_start FUN_0221207C
-FUN_0221207C: ; 0x0221207C
+ thumb_func_start MOD07_0221207C
+MOD07_0221207C: ; 0x0221207C
push {r4, lr}
ldr r1, _022120F4 ; =0x00000B82
add r4, r0, #0
@@ -281,25 +281,25 @@ FUN_0221207C: ; 0x0221207C
beq _022120B8
b _022120E6
_02212092:
- bl FUN_02212D98
+ bl MOD07_02212D98
add r0, r4, #0
- bl FUN_02212E90
- bl FUN_02212F2C
+ bl MOD07_02212E90
+ bl MOD07_02212F2C
b _022120E6
_022120A2:
- bl FUN_022133B4
+ bl MOD07_022133B4
add r0, r4, #0
- bl FUN_02212F44
+ bl MOD07_02212F44
bl FUN_02033E74
add r0, r4, #0
- bl FUN_022136B4
+ bl MOD07_022136B4
b _022120E6
_022120B8:
ldr r1, [r4]
mov r0, #0
ldr r1, [r1, #0x24]
bl FUN_02079A70
- ldr r0, _022120F8 ; =FUN_02212D68
+ ldr r0, _022120F8 ; =MOD07_02212D68
add r1, r4, #0
bl FUN_02015F10
ldr r1, _022120F4 ; =0x00000B82
@@ -325,10 +325,10 @@ _022120E6:
pop {r4, pc}
nop
_022120F4: .word 0x00000B82
-_022120F8: .word FUN_02212D68
+_022120F8: .word MOD07_02212D68
- thumb_func_start FUN_022120FC
-FUN_022120FC: ; 0x022120FC
+ thumb_func_start MOD07_022120FC
+MOD07_022120FC: ; 0x022120FC
push {r4, lr}
ldr r1, _0221216C ; =0x00000B82
add r4, r0, #0
@@ -341,15 +341,15 @@ FUN_022120FC: ; 0x022120FC
beq _02212132
b _02212160
_02212112:
- bl FUN_02212D98
+ bl MOD07_02212D98
add r0, r4, #0
- bl FUN_02212E90
- bl FUN_02212F2C
+ bl MOD07_02212E90
+ bl MOD07_02212F2C
b _02212160
_02212122:
- bl FUN_022133B4
+ bl MOD07_022133B4
add r0, r4, #0
- bl FUN_02213484
+ bl MOD07_02213484
bl FUN_02033E74
b _02212160
_02212132:
@@ -357,7 +357,7 @@ _02212132:
mov r0, #0
ldr r1, [r1, #0x24]
bl FUN_02079A70
- ldr r0, _02212170 ; =FUN_02212D68
+ ldr r0, _02212170 ; =MOD07_02212D68
add r1, r4, #0
bl FUN_02015F10
ldr r1, _0221216C ; =0x00000B82
@@ -383,10 +383,10 @@ _02212160:
pop {r4, pc}
.align 2, 0
_0221216C: .word 0x00000B82
-_02212170: .word FUN_02212D68
+_02212170: .word MOD07_02212D68
- thumb_func_start FUN_02212174
-FUN_02212174: ; 0x02212174
+ thumb_func_start MOD07_02212174
+MOD07_02212174: ; 0x02212174
push {r4, lr}
add r4, r0, #0
bl FUN_0200E308
@@ -417,8 +417,8 @@ _0221219A:
.align 2, 0
_022121A8: .word 0x00000B81
- thumb_func_start FUN_022121AC
-FUN_022121AC: ; 0x022121AC
+ thumb_func_start MOD07_022121AC
+MOD07_022121AC: ; 0x022121AC
push {r3, r4, r5, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
@@ -448,42 +448,42 @@ FUN_022121AC: ; 0x022121AC
add r0, r4, #0
add r2, r1, #0
add r3, r1, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r2, #0
add r0, r4, #0
mov r1, #1
add r3, r2, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r2, #0
add r0, r4, #0
mov r1, #2
add r3, r2, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r2, #0
add r0, r4, #0
mov r1, #3
add r3, r2, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r1, #0
add r0, r4, #0
add r2, r1, #0
add r3, r1, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r2, #0
add r0, r4, #0
mov r1, #1
add r3, r2, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r2, #0
add r0, r4, #0
mov r1, #2
add r3, r2, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r2, #0
add r0, r4, #0
mov r1, #3
add r3, r2, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r0, #1
pop {r3, r4, r5, pc}
_02212248:
@@ -517,7 +517,7 @@ _02212248:
lsl r2, r2, #0x10
asr r2, r2, #0x10
add r3, r1, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _02212374 ; =0x00000B74
mov r1, #1
ldr r3, [r4, r2]
@@ -532,7 +532,7 @@ _02212248:
sub r2, r5, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _02212374 ; =0x00000B74
mov r1, #2
ldr r3, [r4, r2]
@@ -547,7 +547,7 @@ _02212248:
sub r2, r2, r5
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _02212374 ; =0x00000B74
mov r1, #3
ldr r3, [r4, r2]
@@ -562,7 +562,7 @@ _02212248:
sub r2, r2, r5
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _02212374 ; =0x00000B74
mov r1, #0
ldr r3, [r4, r2]
@@ -577,7 +577,7 @@ _02212248:
sub r2, r5, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_02213354
+ bl MOD07_02213354
ldr r2, _02212374 ; =0x00000B74
mov r1, #1
ldr r3, [r4, r2]
@@ -592,7 +592,7 @@ _02212248:
sub r2, r5, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_02213354
+ bl MOD07_02213354
ldr r2, _02212374 ; =0x00000B74
mov r1, #2
ldr r3, [r4, r2]
@@ -607,7 +607,7 @@ _02212248:
sub r2, r2, r5
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_02213354
+ bl MOD07_02213354
ldr r2, _02212374 ; =0x00000B74
add r0, r4, #0
ldr r3, [r4, r2]
@@ -622,18 +622,18 @@ _02212248:
lsl r2, r2, #0x10
asr r2, r2, #0x10
mov r3, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r0, #0
pop {r3, r4, r5, pc}
.align 2, 0
_02212370: .word 0x00000B82
_02212374: .word 0x00000B74
- thumb_func_start FUN_02212378
-FUN_02212378: ; 0x02212378
+ thumb_func_start MOD07_02212378
+MOD07_02212378: ; 0x02212378
push {r4, r5, r6, lr}
add r5, r0, #0
- bl FUN_022137A4
+ bl MOD07_022137A4
cmp r0, #0
bne _02212394
ldr r0, _02212574 ; =0x00000B82
@@ -690,42 +690,42 @@ _022123B4:
add r0, r5, #0
add r2, r1, #0
add r3, r1, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r2, #0
add r0, r5, #0
mov r1, #1
add r3, r2, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r2, #0
add r0, r5, #0
mov r1, #2
add r3, r2, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r2, #0
add r0, r5, #0
mov r1, #3
add r3, r2, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r1, #0
add r0, r5, #0
add r2, r1, #0
add r3, r1, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r2, #0
add r0, r5, #0
mov r1, #1
add r3, r2, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r2, #0
add r0, r5, #0
mov r1, #2
add r3, r2, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r2, #0
add r0, r5, #0
mov r1, #3
add r3, r2, #0
- bl FUN_02213354
+ bl MOD07_02213354
b _02212568
_02212450:
blo _02212454
@@ -819,42 +819,42 @@ _022124CC:
mov r1, #0
add r2, r6, #0
add r3, r4, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
add r0, r5, #0
mov r1, #1
add r2, r6, #0
add r3, r4, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
add r0, r5, #0
mov r1, #2
add r2, r6, #0
add r3, r4, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
add r0, r5, #0
mov r1, #3
add r2, r6, #0
add r3, r4, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
add r0, r5, #0
mov r1, #0
add r2, r6, #0
add r3, r4, #0
- bl FUN_02213354
+ bl MOD07_02213354
add r0, r5, #0
mov r1, #1
add r2, r6, #0
add r3, r4, #0
- bl FUN_02213354
+ bl MOD07_02213354
add r0, r5, #0
mov r1, #2
add r2, r6, #0
add r3, r4, #0
- bl FUN_02213354
+ bl MOD07_02213354
add r0, r5, #0
mov r1, #3
add r2, r6, #0
add r3, r4, #0
- bl FUN_02213354
+ bl MOD07_02213354
ldr r0, _02212584 ; =0x00000B78
strh r6, [r5, r0]
add r0, r0, #2
@@ -874,8 +874,8 @@ _02212580: .word 0x00000B7D
_02212584: .word 0x00000B78
_02212588: .word 0x00000B7A
- thumb_func_start FUN_0221258C
-FUN_0221258C: ; 0x0221258C
+ thumb_func_start MOD07_0221258C
+MOD07_0221258C: ; 0x0221258C
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
@@ -939,7 +939,7 @@ _022125DE:
neg r2, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _022126A4 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -949,7 +949,7 @@ _022125DE:
neg r2, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _022126A4 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -957,7 +957,7 @@ _022125DE:
mov r3, #0
lsl r2, r2, #0x14
asr r2, r2, #0x10
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _022126A4 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -965,7 +965,7 @@ _022125DE:
mov r3, #0
lsl r2, r2, #0x14
asr r2, r2, #0x10
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _022126A4 ; =0x00000B82
mov r1, #0
ldrb r2, [r4, r2]
@@ -975,7 +975,7 @@ _022125DE:
neg r2, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_02213354
+ bl MOD07_02213354
ldr r2, _022126A4 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -985,7 +985,7 @@ _022125DE:
neg r2, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_02213354
+ bl MOD07_02213354
ldr r2, _022126A4 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -993,7 +993,7 @@ _022125DE:
mov r3, #0
lsl r2, r2, #0x14
asr r2, r2, #0x10
- bl FUN_02213354
+ bl MOD07_02213354
ldr r2, _022126A4 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -1001,7 +1001,7 @@ _022125DE:
mov r3, #0
lsl r2, r2, #0x14
asr r2, r2, #0x10
- bl FUN_02213354
+ bl MOD07_02213354
mov r0, #0
add sp, #0xc
pop {r3, r4, pc}
@@ -1011,8 +1011,8 @@ _022126A8: .word 0x00007FFF
_022126AC: .word 0x00000B7F
_022126B0: .word 0x00000719
- thumb_func_start FUN_022126B4
-FUN_022126B4: ; 0x022126B4
+ thumb_func_start MOD07_022126B4
+MOD07_022126B4: ; 0x022126B4
ldr r1, _022126C0 ; =0x00000B81
mov r2, #0x10
strb r2, [r0, r1]
@@ -1021,11 +1021,11 @@ FUN_022126B4: ; 0x022126B4
nop
_022126C0: .word 0x00000B81
- thumb_func_start FUN_022126C4
-FUN_022126C4: ; 0x022126C4
+ thumb_func_start MOD07_022126C4
+MOD07_022126C4: ; 0x022126C4
push {r4, lr}
add r4, r0, #0
- bl FUN_02212BD4
+ bl MOD07_02212BD4
cmp r0, #1
ldr r0, [r4]
bne _022126E8
@@ -1059,23 +1059,23 @@ _022126FC:
.align 2, 0
_02212700: .word 0x00000B7E
- thumb_func_start FUN_02212704
-FUN_02212704: ; 0x02212704
+ thumb_func_start MOD07_02212704
+MOD07_02212704: ; 0x02212704
push {r3, lr}
ldr r1, _0221271C ; =0x00000B7E
ldrb r1, [r0, r1]
cmp r1, #0
bne _02212714
- bl FUN_02212720
+ bl MOD07_02212720
pop {r3, pc}
_02212714:
- bl FUN_02212824
+ bl MOD07_02212824
pop {r3, pc}
nop
_0221271C: .word 0x00000B7E
- thumb_func_start FUN_02212720
-FUN_02212720: ; 0x02212720
+ thumb_func_start MOD07_02212720
+MOD07_02212720: ; 0x02212720
push {r3, r4, r5, lr}
ldr r3, _02212814 ; =0x00000B82
add r4, r0, #0
@@ -1104,7 +1104,7 @@ FUN_02212720: ; 0x02212720
ldr r2, _0221281C ; =0x02214961
ldrb r2, [r2, r3]
add r3, r1, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _02212814 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -1113,7 +1113,7 @@ FUN_02212720: ; 0x02212720
ldr r2, _0221281C ; =0x02214961
ldrb r2, [r2, r3]
mov r3, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _02212814 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -1122,7 +1122,7 @@ FUN_02212720: ; 0x02212720
ldr r2, _0221281C ; =0x02214961
ldrb r2, [r2, r3]
mov r3, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _02212814 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -1131,7 +1131,7 @@ FUN_02212720: ; 0x02212720
ldr r2, _0221281C ; =0x02214961
ldrb r2, [r2, r3]
mov r3, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _02212814 ; =0x00000B82
mov r1, #0
ldrb r2, [r4, r2]
@@ -1140,7 +1140,7 @@ FUN_02212720: ; 0x02212720
ldr r2, _0221281C ; =0x02214961
ldrb r2, [r2, r3]
add r3, r1, #0
- bl FUN_02213354
+ bl MOD07_02213354
ldr r2, _02212814 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -1149,7 +1149,7 @@ FUN_02212720: ; 0x02212720
ldr r2, _0221281C ; =0x02214961
ldrb r2, [r2, r3]
mov r3, #0
- bl FUN_02213354
+ bl MOD07_02213354
ldr r2, _02212814 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -1158,7 +1158,7 @@ FUN_02212720: ; 0x02212720
ldr r2, _0221281C ; =0x02214961
ldrb r2, [r2, r3]
mov r3, #0
- bl FUN_02213354
+ bl MOD07_02213354
ldr r2, _02212814 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -1167,7 +1167,7 @@ FUN_02212720: ; 0x02212720
ldr r2, _0221281C ; =0x02214961
ldrb r2, [r2, r3]
mov r3, #0
- bl FUN_02213354
+ bl MOD07_02213354
ldr r0, _02212814 ; =0x00000B82
ldrb r0, [r4, r0]
cmp r0, #0
@@ -1194,8 +1194,8 @@ _02212818: .word 0x02214960
_0221281C: .word 0x02214961
_02212820: .word 0x00000853
- thumb_func_start FUN_02212824
-FUN_02212824: ; 0x02212824
+ thumb_func_start MOD07_02212824
+MOD07_02212824: ; 0x02212824
push {r3, r4, r5, lr}
ldr r3, _02212948 ; =0x00000B82
add r4, r0, #0
@@ -1227,7 +1227,7 @@ FUN_02212824: ; 0x02212824
neg r2, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _02212948 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -1239,7 +1239,7 @@ FUN_02212824: ; 0x02212824
neg r2, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _02212948 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -1251,7 +1251,7 @@ FUN_02212824: ; 0x02212824
neg r2, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _02212948 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -1263,7 +1263,7 @@ FUN_02212824: ; 0x02212824
neg r2, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_0221309C
+ bl MOD07_0221309C
ldr r2, _02212948 ; =0x00000B82
mov r1, #0
ldrb r2, [r4, r2]
@@ -1275,7 +1275,7 @@ FUN_02212824: ; 0x02212824
neg r2, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_02213354
+ bl MOD07_02213354
ldr r2, _02212948 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -1287,7 +1287,7 @@ FUN_02212824: ; 0x02212824
neg r2, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_02213354
+ bl MOD07_02213354
ldr r2, _02212948 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -1299,7 +1299,7 @@ FUN_02212824: ; 0x02212824
neg r2, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_02213354
+ bl MOD07_02213354
ldr r2, _02212948 ; =0x00000B82
add r0, r4, #0
ldrb r2, [r4, r2]
@@ -1311,7 +1311,7 @@ FUN_02212824: ; 0x02212824
neg r2, r2
lsl r2, r2, #0x10
asr r2, r2, #0x10
- bl FUN_02213354
+ bl MOD07_02213354
ldr r0, _02212948 ; =0x00000B82
ldrb r0, [r4, r0]
cmp r0, #0
@@ -1338,8 +1338,8 @@ _0221294C: .word 0x02214960
_02212950: .word 0x02214961
_02212954: .word 0x00000853
- thumb_func_start FUN_02212958
-FUN_02212958: ; 0x02212958
+ thumb_func_start MOD07_02212958
+MOD07_02212958: ; 0x02212958
ldr r1, _02212964 ; =0x00000B81
mov r2, #0x10
strb r2, [r0, r1]
@@ -1348,8 +1348,8 @@ FUN_02212958: ; 0x02212958
nop
_02212964: .word 0x00000B81
- thumb_func_start FUN_02212968
-FUN_02212968: ; 0x02212968
+ thumb_func_start MOD07_02212968
+MOD07_02212968: ; 0x02212968
push {r4, r5, r6, lr}
add r4, r0, #0
ldr r0, _022129F0 ; =0x00000B82
@@ -1424,8 +1424,8 @@ _022129F0: .word 0x00000B82
_022129F4: .word 0xFFFF1FFF
_022129F8: .word 0x04000040
- thumb_func_start FUN_022129FC
-FUN_022129FC: ; 0x022129FC
+ thumb_func_start MOD07_022129FC
+MOD07_022129FC: ; 0x022129FC
push {r4, lr}
add r4, r0, #0
ldr r0, _02212A34 ; =0x0000071A
@@ -1454,8 +1454,8 @@ FUN_022129FC: ; 0x022129FC
_02212A34: .word 0x0000071A
_02212A38: .word 0x00000B81
- thumb_func_start FUN_02212A3C
-FUN_02212A3C: ; 0x02212A3C
+ thumb_func_start MOD07_02212A3C
+MOD07_02212A3C: ; 0x02212A3C
push {r4, lr}
add r4, r0, #0
ldr r0, _02212A5C ; =0x0000071A
@@ -1474,12 +1474,12 @@ FUN_02212A3C: ; 0x02212A3C
_02212A5C: .word 0x0000071A
_02212A60: .word 0x00000B81
- thumb_func_start FUN_02212A64
-FUN_02212A64: ; 0x02212A64
+ thumb_func_start MOD07_02212A64
+MOD07_02212A64: ; 0x02212A64
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
- bl FUN_02212BD4
+ bl MOD07_02212BD4
cmp r0, #1
ldr r0, [r4]
bne _02212AA8
@@ -1546,8 +1546,8 @@ _02212ADA:
_02212AEC: .word 0x0000071B
_02212AF0: .word 0x00000B81
- thumb_func_start FUN_02212AF4
-FUN_02212AF4: ; 0x02212AF4
+ thumb_func_start MOD07_02212AF4
+MOD07_02212AF4: ; 0x02212AF4
push {r4, lr}
add r4, r0, #0
ldr r0, _02212B40 ; =0x00000B82
@@ -1577,19 +1577,19 @@ _02212B1C:
sub r1, r1, r2
lsl r1, r1, #0x10
asr r1, r1, #0x10
- bl FUN_022141CC
+ bl MOD07_022141CC
ldr r1, _02212B40 ; =0x00000B82
add r0, r4, #0
ldrb r1, [r4, r1]
- bl FUN_02213B20
+ bl MOD07_02213B20
mov r0, #0
pop {r4, pc}
nop
_02212B40: .word 0x00000B82
_02212B44: .word 0x00000719
- thumb_func_start FUN_02212B48
-FUN_02212B48: ; 0x02212B48
+ thumb_func_start MOD07_02212B48
+MOD07_02212B48: ; 0x02212B48
push {r4, lr}
add r4, r0, #0
ldr r1, [r4]
@@ -1604,8 +1604,8 @@ FUN_02212B48: ; 0x02212B48
.align 2, 0
_02212B60: .word 0x00000B7F
- thumb_func_start FUN_02212B64
-FUN_02212B64: ; 0x02212B64
+ thumb_func_start MOD07_02212B64
+MOD07_02212B64: ; 0x02212B64
push {r3, r4, r5, lr}
add r5, r0, #0
add r4, r1, #0
@@ -1624,20 +1624,20 @@ _02212B76:
cmp r0, #0
beq _02212B9C
add r0, r4, #0
- bl FUN_02212E64
+ bl MOD07_02212E64
add r0, r4, #0
- bl FUN_022137DC
+ bl MOD07_022137DC
add r0, r4, #0
- bl FUN_02213380
+ bl MOD07_02213380
b _02212BA8
_02212B9C:
add r0, r4, #0
- bl FUN_022138F8
+ bl MOD07_022138F8
add r0, r4, #0
- bl FUN_02214274
+ bl MOD07_02214274
_02212BA8:
add r0, r4, #0
- bl FUN_02212CEC
+ bl MOD07_02212CEC
bl FUN_0201C29C
ldr r0, [r4, #8]
mov r1, #0
@@ -1654,8 +1654,8 @@ _02212BA8:
pop {r3, r4, r5, pc}
.align 2, 0
- thumb_func_start FUN_02212BD4
-FUN_02212BD4: ; 0x02212BD4
+ thumb_func_start MOD07_02212BD4
+MOD07_02212BD4: ; 0x02212BD4
push {r3, lr}
bl FUN_02031190
bl FUN_020313CC
@@ -1683,8 +1683,8 @@ _02212BFE:
pop {r3, pc}
.align 2, 0
- thumb_func_start FUN_02212C04
-FUN_02212C04: ; 0x02212C04
+ thumb_func_start MOD07_02212C04
+MOD07_02212C04: ; 0x02212C04
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x38
add r5, r0, #0
@@ -1757,8 +1757,8 @@ FUN_02212C04: ; 0x02212C04
_02212C9C: .word 0x02214AB8
_02212CA0: .word 0x0221498C
- thumb_func_start FUN_02212CA4
-FUN_02212CA4: ; 0x02212CA4
+ thumb_func_start MOD07_02212CA4
+MOD07_02212CA4: ; 0x02212CA4
push {lr}
sub sp, #0x34
add r2, r0, #0
@@ -1795,8 +1795,8 @@ FUN_02212CA4: ; 0x02212CA4
add sp, #0x34
pop {pc}
- thumb_func_start FUN_02212CEC
-FUN_02212CEC: ; 0x02212CEC
+ thumb_func_start MOD07_02212CEC
+MOD07_02212CEC: ; 0x02212CEC
push {r3, r4, r5, r6, r7, lr}
add r6, r0, #0
mov r0, #0x21
@@ -1831,8 +1831,8 @@ _02212D16:
bl FUN_0200BD04
pop {r3, r4, r5, r6, r7, pc}
- thumb_func_start FUN_02212D30
-FUN_02212D30: ; 0x02212D30
+ thumb_func_start MOD07_02212D30
+MOD07_02212D30: ; 0x02212D30
push {r3, r4, r5, r6, r7, lr}
add r5, r0, #0
mov r0, #0x21
@@ -1863,8 +1863,8 @@ _02212D64:
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
- thumb_func_start FUN_02212D68
-FUN_02212D68: ; 0x02212D68
+ thumb_func_start MOD07_02212D68
+MOD07_02212D68: ; 0x02212D68
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
@@ -1884,8 +1884,8 @@ FUN_02212D68: ; 0x02212D68
_02212D90: .word 0x027E0000
_02212D94: .word 0x00003FF8
- thumb_func_start FUN_02212D98
-FUN_02212D98: ; 0x02212D98
+ thumb_func_start MOD07_02212D98
+MOD07_02212D98: ; 0x02212D98
push {r4, r5, lr}
sub sp, #0x64
ldr r5, _02212E54 ; =0x0221496C
@@ -1975,8 +1975,8 @@ _02212E58: .word 0x02214A2C
_02212E5C: .word 0x02214A48
_02212E60: .word 0x02214A64
- thumb_func_start FUN_02212E64
-FUN_02212E64: ; 0x02212E64
+ thumb_func_start MOD07_02212E64
+MOD07_02212E64: ; 0x02212E64
push {r4, lr}
add r4, r0, #0
mov r0, #0x1f
@@ -1995,8 +1995,8 @@ FUN_02212E64: ; 0x02212E64
bl FUN_02016A18
pop {r4, pc}
- thumb_func_start FUN_02212E90
-FUN_02212E90: ; 0x02212E90
+ thumb_func_start MOD07_02212E90
+MOD07_02212E90: ; 0x02212E90
push {r4, lr}
sub sp, #0x10
mov r1, #0
@@ -2069,8 +2069,8 @@ FUN_02212E90: ; 0x02212E90
.align 2, 0
_02212F28: .word 0x000018C6
- thumb_func_start FUN_02212F2C
-FUN_02212F2C: ; 0x02212F2C
+ thumb_func_start MOD07_02212F2C
+MOD07_02212F2C: ; 0x02212F2C
push {r3, lr}
mov r0, #8
str r0, [sp]
@@ -2083,8 +2083,8 @@ FUN_02212F2C: ; 0x02212F2C
.align 2, 0
_02212F40: .word 0x04000050
- thumb_func_start FUN_02212F44
-FUN_02212F44: ; 0x02212F44
+ thumb_func_start MOD07_02212F44
+MOD07_02212F44: ; 0x02212F44
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
ldr r4, _02213014 ; =0x022149E0
@@ -2100,16 +2100,16 @@ FUN_02212F44: ; 0x02212F44
add r1, r2, #0
add r0, r6, #0
mov r2, #0x15
- bl FUN_02212C04
+ bl MOD07_02212C04
add r0, r6, #0
- bl FUN_0221301C
+ bl MOD07_0221301C
ldr r4, _02213018 ; =0x02214C64
mov r7, #0
add r5, r6, #0
_02212F72:
add r0, r6, #0
add r1, r4, #0
- bl FUN_02212CA4
+ bl MOD07_02212CA4
mov r1, #0x66
lsl r1, r1, #2
str r0, [r5, r1]
@@ -2123,65 +2123,65 @@ _02212F72:
add r0, r6, #0
mvn r2, r2
add r3, r1, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r2, #0xff
add r0, r6, #0
mov r1, #1
mvn r2, r2
mov r3, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r1, #2
add r2, r1, #0
add r0, r6, #0
add r2, #0xfe
mov r3, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r1, #3
add r2, r1, #0
add r0, r6, #0
add r2, #0xfd
mov r3, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
add r0, r6, #0
- bl FUN_022131C0
+ bl MOD07_022131C0
mov r0, #0x21
mov r1, #0xc
lsl r0, r0, #4
str r1, [r6, r0]
add r0, r6, #0
- bl FUN_022132CC
+ bl MOD07_022132CC
mov r1, #0
mov r2, #0xff
add r0, r6, #0
mvn r2, r2
add r3, r1, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r2, #0xff
add r0, r6, #0
mov r1, #1
mvn r2, r2
mov r3, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r1, #2
add r2, r1, #0
add r0, r6, #0
add r2, #0xfe
mov r3, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r1, #3
add r2, r1, #0
add r0, r6, #0
add r2, #0xfd
mov r3, #0
- bl FUN_02213354
+ bl MOD07_02213354
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
nop
_02213014: .word 0x022149E0
_02213018: .word 0x02214C64
- thumb_func_start FUN_0221301C
-FUN_0221301C: ; 0x0221301C
+ thumb_func_start MOD07_0221301C
+MOD07_0221301C: ; 0x0221301C
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
@@ -2243,8 +2243,8 @@ FUN_0221301C: ; 0x0221301C
.align 2, 0
_02213098: .word 0x0000B807
- thumb_func_start FUN_0221309C
-FUN_0221309C: ; 0x0221309C
+ thumb_func_start MOD07_0221309C
+MOD07_0221309C: ; 0x0221309C
push {r4, r5, r6, r7, lr}
sub sp, #0xc
ldr r4, _022130F8 ; =0x02214950
@@ -2296,8 +2296,8 @@ _022130F8: .word 0x02214950
_022130FC: .word 0x00000B64
_02213100: .word 0x00000B68
- thumb_func_start FUN_02213104
-FUN_02213104: ; 0x02213104
+ thumb_func_start MOD07_02213104
+MOD07_02213104: ; 0x02213104
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r6, r0, #0
@@ -2390,8 +2390,8 @@ _022131BC:
add sp, #0xc
pop {r4, r5, r6, r7, pc}
- thumb_func_start FUN_022131C0
-FUN_022131C0: ; 0x022131C0
+ thumb_func_start MOD07_022131C0
+MOD07_022131C0: ; 0x022131C0
push {r4, lr}
add r4, r0, #0
ldr r2, [r4]
@@ -2403,41 +2403,41 @@ FUN_022131C0: ; 0x022131C0
bne _022131EA
mov r2, #6
mov r3, #0
- bl FUN_02213104
+ bl MOD07_02213104
ldr r1, [r4]
mov r2, #6
ldr r1, [r1, #8]
add r0, r4, #0
add r3, r2, #0
- bl FUN_02213104
+ bl MOD07_02213104
pop {r4, pc}
_022131EA:
mov r2, #3
mov r3, #0
- bl FUN_02213104
+ bl MOD07_02213104
ldr r1, [r4]
mov r2, #3
ldr r1, [r1, #0xc]
add r0, r4, #0
add r3, r2, #0
- bl FUN_02213104
+ bl MOD07_02213104
ldr r1, [r4]
add r0, r4, #0
ldr r1, [r1, #8]
mov r2, #3
mov r3, #6
- bl FUN_02213104
+ bl MOD07_02213104
ldr r1, [r4]
add r0, r4, #0
ldr r1, [r1, #0x10]
mov r2, #3
mov r3, #9
- bl FUN_02213104
+ bl MOD07_02213104
pop {r4, pc}
.align 2, 0
- thumb_func_start FUN_02213220
-FUN_02213220: ; 0x02213220
+ thumb_func_start MOD07_02213220
+MOD07_02213220: ; 0x02213220
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x40
add r4, r0, #0
@@ -2516,8 +2516,8 @@ _022132C0: .word 0x00000B44
_022132C4: .word 0x0000B807
_022132C8: .word 0x00000B48
- thumb_func_start FUN_022132CC
-FUN_022132CC: ; 0x022132CC
+ thumb_func_start MOD07_022132CC
+MOD07_022132CC: ; 0x022132CC
push {r4, lr}
add r4, r0, #0
ldr r1, [r4]
@@ -2530,12 +2530,12 @@ FUN_022132CC: ; 0x022132CC
add r0, r4, #0
ldr r2, [r2, #0x14]
mov r1, #0
- bl FUN_02213220
+ bl MOD07_02213220
ldr r2, [r4]
add r0, r4, #0
ldr r2, [r2, #0x18]
mov r1, #2
- bl FUN_02213220
+ bl MOD07_02213220
ldr r2, [r4]
add r0, r2, #0
add r0, #0x29
@@ -2545,23 +2545,23 @@ FUN_022132CC: ; 0x022132CC
ldr r2, [r2, #0x1c]
add r0, r4, #0
mov r1, #1
- bl FUN_02213220
+ bl MOD07_02213220
ldr r2, [r4]
add r0, r4, #0
ldr r2, [r2, #0x20]
mov r1, #3
- bl FUN_02213220
+ bl MOD07_02213220
pop {r4, pc}
_0221331A:
ldr r2, [r2, #0x14]
add r0, r4, #0
mov r1, #1
- bl FUN_02213220
+ bl MOD07_02213220
ldr r2, [r4]
add r0, r4, #0
ldr r2, [r2, #0x18]
mov r1, #3
- bl FUN_02213220
+ bl MOD07_02213220
ldr r0, _0221334C ; =0x00000B4C
mov r1, #0
ldr r0, [r4, r0]
@@ -2576,8 +2576,8 @@ _02213348: .word 0x00000B44
_0221334C: .word 0x00000B4C
_02213350: .word 0x00000B54
- thumb_func_start FUN_02213354
-FUN_02213354: ; 0x02213354
+ thumb_func_start MOD07_02213354
+MOD07_02213354: ; 0x02213354
push {r3, r4, r5, lr}
add r5, r1, #0
add r1, r2, #0
@@ -2600,8 +2600,8 @@ FUN_02213354: ; 0x02213354
.align 2, 0
_0221337C: .word 0x00000B48
- thumb_func_start FUN_02213380
-FUN_02213380: ; 0x02213380
+ thumb_func_start MOD07_02213380
+MOD07_02213380: ; 0x02213380
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
ldr r0, [r7]
@@ -2628,8 +2628,8 @@ _022133AA:
_022133AC: .word 0x00000B48
_022133B0: .word 0x00000B44
- thumb_func_start FUN_022133B4
-FUN_022133B4: ; 0x022133B4
+ thumb_func_start MOD07_022133B4
+MOD07_022133B4: ; 0x022133B4
push {r3, r4}
ldr r1, [r0]
add r1, #0x29
@@ -2735,8 +2735,8 @@ _02213432:
nop
_02213480: .word 0x00000B64
- thumb_func_start FUN_02213484
-FUN_02213484: ; 0x02213484
+ thumb_func_start MOD07_02213484
+MOD07_02213484: ; 0x02213484
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
ldr r4, _02213560 ; =0x022149C8
@@ -2752,18 +2752,18 @@ FUN_02213484: ; 0x02213484
add r1, r2, #0
add r0, r6, #0
mov r2, #0x17
- bl FUN_02212C04
+ bl MOD07_02212C04
add r0, r6, #0
- bl FUN_0221301C
+ bl MOD07_0221301C
add r0, r6, #0
- bl FUN_02213568
+ bl MOD07_02213568
ldr r4, _02213564 ; =0x02214C64
mov r7, #0
add r5, r6, #0
_022134B8:
add r0, r6, #0
add r1, r4, #0
- bl FUN_02212CA4
+ bl MOD07_02212CA4
mov r1, #0x66
lsl r1, r1, #2
str r0, [r5, r1]
@@ -2777,55 +2777,55 @@ _022134B8:
add r0, r6, #0
mvn r2, r2
add r3, r1, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r2, #0xff
add r0, r6, #0
mov r1, #1
mvn r2, r2
mov r3, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r1, #2
add r2, r1, #0
add r0, r6, #0
add r2, #0xfe
mov r3, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
mov r1, #3
add r2, r1, #0
add r0, r6, #0
add r2, #0xfd
mov r3, #0
- bl FUN_0221309C
+ bl MOD07_0221309C
add r0, r6, #0
- bl FUN_022131C0
+ bl MOD07_022131C0
add r0, r6, #0
- bl FUN_022135C8
+ bl MOD07_022135C8
add r0, r6, #0
- bl FUN_022132CC
+ bl MOD07_022132CC
mov r1, #0
mov r2, #0xff
add r0, r6, #0
mvn r2, r2
add r3, r1, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r2, #0xff
add r0, r6, #0
mov r1, #1
mvn r2, r2
mov r3, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r1, #2
add r2, r1, #0
add r0, r6, #0
add r2, #0xfe
mov r3, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r1, #3
add r2, r1, #0
add r0, r6, #0
add r2, #0xfd
mov r3, #0
- bl FUN_02213354
+ bl MOD07_02213354
mov r0, #0x21
mov r1, #0xe
lsl r0, r0, #4
@@ -2836,8 +2836,8 @@ _022134B8:
_02213560: .word 0x022149C8
_02213564: .word 0x02214C64
- thumb_func_start FUN_02213568
-FUN_02213568: ; 0x02213568
+ thumb_func_start MOD07_02213568
+MOD07_02213568: ; 0x02213568
push {r3, r4, lr}
sub sp, #0xc
add r4, r0, #0
@@ -2884,8 +2884,8 @@ FUN_02213568: ; 0x02213568
.align 2, 0
_022135C4: .word 0x0000B808
- thumb_func_start FUN_022135C8
-FUN_022135C8: ; 0x022135C8
+ thumb_func_start MOD07_022135C8
+MOD07_022135C8: ; 0x022135C8
push {r4, lr}
add r4, r0, #0
mov r0, #0x72
@@ -2916,7 +2916,7 @@ FUN_022135C8: ; 0x022135C8
bl FUN_0200C5C0
pop {r4, pc}
_0221360A:
- bl FUN_02212BD4
+ bl MOD07_02212BD4
cmp r0, #1
ldr r0, [r4]
bne _02213658
@@ -2995,8 +2995,8 @@ _0221369A:
bl FUN_0200C5C0
pop {r4, pc}
- thumb_func_start FUN_022136B4
-FUN_022136B4: ; 0x022136B4
+ thumb_func_start MOD07_022136B4
+MOD07_022136B4: ; 0x022136B4
push {r4, lr}
sub sp, #8
add r4, r0, #0
@@ -3032,9 +3032,9 @@ FUN_022136B4: ; 0x022136B4
ldr r0, [r4]
mov r3, #0x12
ldr r0, [r0, #0x24]
- ldr r1, _02213798 ; =FUN_02213834
+ ldr r1, _02213798 ; =MOD07_02213834
str r0, [sp, #4]
- ldr r0, _0221379C ; =FUN_02213810
+ ldr r0, _0221379C ; =MOD07_02213810
ldr r2, [r4, r2]
lsl r3, r3, #0xa
bl FUN_02012CDC
@@ -3095,12 +3095,12 @@ FUN_022136B4: ; 0x022136B4
_0221378C: .word 0x00000B58
_02213790: .word 0x04000060
_02213794: .word 0xFFFFCFFF
-_02213798: .word FUN_02213834
-_0221379C: .word FUN_02213810
+_02213798: .word MOD07_02213834
+_0221379C: .word MOD07_02213810
_022137A0: .word 0x00000B5C
- thumb_func_start FUN_022137A4
-FUN_022137A4: ; 0x022137A4
+ thumb_func_start MOD07_022137A4
+MOD07_022137A4: ; 0x022137A4
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
@@ -3127,8 +3127,8 @@ _022137CA:
nop
_022137D8: .word 0x00000B5C
- thumb_func_start FUN_022137DC
-FUN_022137DC: ; 0x022137DC
+ thumb_func_start MOD07_022137DC
+MOD07_022137DC: ; 0x022137DC
push {r4, lr}
add r4, r0, #0
ldr r0, [r4]
@@ -3152,8 +3152,8 @@ _02213804:
_02213808: .word 0x00000B5C
_0221380C: .word 0x00000B58
- thumb_func_start FUN_02213810
-FUN_02213810: ; 0x02213810
+ thumb_func_start MOD07_02213810
+MOD07_02213810: ; 0x02213810
push {r4, lr}
ldr r3, _02213830 ; =0x021064B8
mov r2, #0
@@ -3171,8 +3171,8 @@ _02213828:
nop
_02213830: .word 0x021064B8
- thumb_func_start FUN_02213834
-FUN_02213834: ; 0x02213834
+ thumb_func_start MOD07_02213834
+MOD07_02213834: ; 0x02213834
push {r4, lr}
ldr r3, _02213854 ; =0x021064C0
mov r2, #1
@@ -3190,8 +3190,8 @@ _0221384C:
nop
_02213854: .word 0x021064C0
- thumb_func_start FUN_02213858
-FUN_02213858: ; 0x02213858
+ thumb_func_start MOD07_02213858
+MOD07_02213858: ; 0x02213858
push {r4, r5, lr}
sub sp, #0x64
ldr r5, _022138E8 ; =0x0221497C
@@ -3263,8 +3263,8 @@ _022138EC: .word 0x02214A9C
_022138F0: .word 0x02214A10
_022138F4: .word 0x02214A80
- thumb_func_start FUN_022138F8
-FUN_022138F8: ; 0x022138F8
+ thumb_func_start MOD07_022138F8
+MOD07_022138F8: ; 0x022138F8
push {r4, lr}
add r4, r0, #0
mov r0, #0x1e
@@ -3283,8 +3283,8 @@ FUN_022138F8: ; 0x022138F8
bl FUN_02016A18
pop {r4, pc}
- thumb_func_start FUN_02213924
-FUN_02213924: ; 0x02213924
+ thumb_func_start MOD07_02213924
+MOD07_02213924: ; 0x02213924
push {r4, r5, lr}
sub sp, #0x14
add r5, r0, #0
@@ -3353,8 +3353,8 @@ FUN_02213924: ; 0x02213924
_022139B4: .word 0x000004E4
_022139B8: .word 0x00000424
- thumb_func_start FUN_022139BC
-FUN_022139BC: ; 0x022139BC
+ thumb_func_start MOD07_022139BC
+MOD07_022139BC: ; 0x022139BC
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r5, r0, #0
@@ -3471,8 +3471,8 @@ _02213A94: .word 0x00000424
_02213A98: .word 0x00000504
_02213A9C: .word 0x000004E4
- thumb_func_start FUN_02213AA0
-FUN_02213AA0: ; 0x02213AA0
+ thumb_func_start MOD07_02213AA0
+MOD07_02213AA0: ; 0x02213AA0
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
ldr r0, [r4, #0xc]
@@ -3512,19 +3512,19 @@ _02213AC2:
blo _02213AC2
pop {r3, r4, r5, r6, r7, pc}
- thumb_func_start FUN_02213AEC
-FUN_02213AEC: ; 0x02213AEC
+ thumb_func_start MOD07_02213AEC
+MOD07_02213AEC: ; 0x02213AEC
push {r4, lr}
ldr r1, _02213B18 ; =0x00000544
add r4, r0, #0
add r1, r4, r1
mov r2, #1
- bl FUN_02213AA0
+ bl MOD07_02213AA0
ldr r1, _02213B1C ; =0x00000844
add r0, r4, #0
add r1, r4, r1
mov r2, #2
- bl FUN_02213AA0
+ bl MOD07_02213AA0
ldr r0, [r4, #0xc]
mov r1, #1
bl FUN_0201AC68
@@ -3536,8 +3536,8 @@ FUN_02213AEC: ; 0x02213AEC
_02213B18: .word 0x00000544
_02213B1C: .word 0x00000844
- thumb_func_start FUN_02213B20
-FUN_02213B20: ; 0x02213B20
+ thumb_func_start MOD07_02213B20
+MOD07_02213B20: ; 0x02213B20
push {r3, r4, r5, r6, lr}
sub sp, #0x1c
add r5, r0, #0
@@ -3635,8 +3635,8 @@ _02213BCE:
_02213BE4: .word 0x00000544
_02213BE8: .word 0x00000844
- thumb_func_start FUN_02213BEC
-FUN_02213BEC: ; 0x02213BEC
+ thumb_func_start MOD07_02213BEC
+MOD07_02213BEC: ; 0x02213BEC
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r4, r0, #0
@@ -3786,8 +3786,8 @@ _02213D24: .word 0x00000225
_02213D28: .word 0x00000222
_02213D2C: .word 0x00000221
- thumb_func_start FUN_02213D30
-FUN_02213D30: ; 0x02213D30
+ thumb_func_start MOD07_02213D30
+MOD07_02213D30: ; 0x02213D30
push {r4, lr}
add r4, r0, #0
mov r0, #0x85
@@ -3800,16 +3800,16 @@ FUN_02213D30: ; 0x02213D30
add r0, r4, #0
ldr r1, [r1, #4]
mov r2, #0
- bl FUN_02213BEC
+ bl MOD07_02213BEC
ldr r1, [r4]
add r0, r4, #0
ldr r1, [r1, #0xc]
mov r2, #3
- bl FUN_02213BEC
+ bl MOD07_02213BEC
pop {r4, pc}
- thumb_func_start FUN_02213D5C
-FUN_02213D5C: ; 0x02213D5C
+ thumb_func_start MOD07_02213D5C
+MOD07_02213D5C: ; 0x02213D5C
push {r4, lr}
add r3, r0, #0
add r2, r1, #0
@@ -3870,8 +3870,8 @@ _02213DBC:
.align 2, 0
_02213DC0: .word 0x0000021A
- thumb_func_start FUN_02213DC4
-FUN_02213DC4: ; 0x02213DC4
+ thumb_func_start MOD07_02213DC4
+MOD07_02213DC4: ; 0x02213DC4
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
@@ -3897,7 +3897,7 @@ _02213DE8:
ldr r1, _02213F20 ; =0x02214DEC
add r0, r5, #0
add r1, r1, r2
- bl FUN_02212CA4
+ bl MOD07_02212CA4
mov r1, #0x66
lsl r1, r1, #2
str r0, [r4, r1]
@@ -3959,7 +3959,7 @@ _02213E50:
bl FUN_0200C66C
ldr r1, [sp]
add r0, r5, #0
- bl FUN_02213D5C
+ bl MOD07_02213D5C
add r1, r0, #0
ldr r0, [r7, r4]
bl FUN_0200C5C0
@@ -4043,8 +4043,8 @@ _02213F1C: .word 0x02214B28
_02213F20: .word 0x02214DEC
_02213F24: .word 0x0000021E
- thumb_func_start FUN_02213F28
-FUN_02213F28: ; 0x02213F28
+ thumb_func_start MOD07_02213F28
+MOD07_02213F28: ; 0x02213F28
push {r3, r4, r5, lr}
sub sp, #0x18
ldr r5, _02213F88 ; =0x022149F8
@@ -4060,26 +4060,26 @@ FUN_02213F28: ; 0x02213F28
add r1, r2, #0
add r0, r4, #0
mov r2, #0x1f
- bl FUN_02212C04
+ bl MOD07_02212C04
add r0, r4, #0
- bl FUN_02213F8C
+ bl MOD07_02213F8C
add r0, r4, #0
- bl FUN_02214034
+ bl MOD07_02214034
add r0, r4, #0
- bl FUN_022140BC
+ bl MOD07_022140BC
add r0, r4, #0
- bl FUN_02214144
+ bl MOD07_02214144
mov r5, #0
_02213F64:
add r0, r4, #0
add r1, r5, #0
- bl FUN_02213DC4
+ bl MOD07_02213DC4
add r5, r5, #1
cmp r5, #6
blo _02213F64
add r0, r4, #0
mov r1, #0x10
- bl FUN_022141CC
+ bl MOD07_022141CC
mov r0, #0x21
mov r1, #0x1e
lsl r0, r0, #4
@@ -4089,8 +4089,8 @@ _02213F64:
nop
_02213F88: .word 0x022149F8
- thumb_func_start FUN_02213F8C
-FUN_02213F8C: ; 0x02213F8C
+ thumb_func_start MOD07_02213F8C
+MOD07_02213F8C: ; 0x02213F8C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
add r5, r0, #0
@@ -4168,8 +4168,8 @@ _02213FFA:
_0221402C: .word 0x0000B808
_02214030: .word 0x0000B809
- thumb_func_start FUN_02214034
-FUN_02214034: ; 0x02214034
+ thumb_func_start MOD07_02214034
+MOD07_02214034: ; 0x02214034
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
@@ -4233,8 +4233,8 @@ _022140B0: .word 0x0000B80F
_022140B4: .word 0x0000B809
_022140B8: .word 0x0000B80A
- thumb_func_start FUN_022140BC
-FUN_022140BC: ; 0x022140BC
+ thumb_func_start MOD07_022140BC
+MOD07_022140BC: ; 0x022140BC
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
@@ -4298,8 +4298,8 @@ _02214138: .word 0x0000B810
_0221413C: .word 0x0000B80A
_02214140: .word 0x0000B80B
- thumb_func_start FUN_02214144
-FUN_02214144: ; 0x02214144
+ thumb_func_start MOD07_02214144
+MOD07_02214144: ; 0x02214144
push {r4, lr}
sub sp, #0x10
add r4, r0, #0
@@ -4363,8 +4363,8 @@ _022141C0: .word 0x0000B811
_022141C4: .word 0x0000B80B
_022141C8: .word 0x0000B80C
- thumb_func_start FUN_022141CC
-FUN_022141CC: ; 0x022141CC
+ thumb_func_start MOD07_022141CC
+MOD07_022141CC: ; 0x022141CC
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
str r0, [sp]
@@ -4433,8 +4433,8 @@ _02214216:
.align 2, 0
_02214248: .word 0x02214B28
- thumb_func_start FUN_0221424C
-FUN_0221424C: ; 0x0221424C
+ thumb_func_start MOD07_0221424C
+MOD07_0221424C: ; 0x0221424C
push {r3, r4, r5, r6, r7, lr}
add r7, r0, #0
add r5, r7, #0
@@ -4455,8 +4455,8 @@ _02214258:
nop
_02214270: .word 0x02214BA4
- thumb_func_start FUN_02214274
-FUN_02214274: ; 0x02214274
+ thumb_func_start MOD07_02214274
+MOD07_02214274: ; 0x02214274
push {r3, r4, r5, lr}
add r5, r0, #0
mov r4, #0
@@ -4470,8 +4470,8 @@ _0221427C:
blo _0221427C
pop {r3, r4, r5, pc}
- thumb_func_start FUN_0221428C
-FUN_0221428C: ; 0x0221428C
+ thumb_func_start MOD07_0221428C
+MOD07_0221428C: ; 0x0221428C
push {r4, r5, r6, r7, lr}
sub sp, #0x24
ldr r4, [sp, #0x3c]
@@ -4583,8 +4583,8 @@ _02214370: .word 0x000F0E00
_02214374: .word 0x00000222
_02214378: .word 0x00050600
- thumb_func_start FUN_0221437C
-FUN_0221437C: ; 0x0221437C
+ thumb_func_start MOD07_0221437C
+MOD07_0221437C: ; 0x0221437C
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r6, r0, #0
@@ -4644,8 +4644,8 @@ FUN_0221437C: ; 0x0221437C
.align 2, 0
_022143F8: .word 0x000F0E00
- thumb_func_start FUN_022143FC
-FUN_022143FC: ; 0x022143FC
+ thumb_func_start MOD07_022143FC
+MOD07_022143FC: ; 0x022143FC
push {r4, r5, r6, r7, lr}
sub sp, #0x2c
ldr r5, [sp, #0x44]
@@ -4769,8 +4769,8 @@ FUN_022143FC: ; 0x022143FC
_02214508: .word 0x0000021A
_0221450C: .word 0x000F0E00
- thumb_func_start FUN_02214510
-FUN_02214510: ; 0x02214510
+ thumb_func_start MOD07_02214510
+MOD07_02214510: ; 0x02214510
push {r4, r5, r6, r7, lr}
sub sp, #0xc
add r5, r0, #0
@@ -4886,8 +4886,8 @@ _022145F4: .word 0x000004F6
_022145F8: .word 0x00000516
_022145FC: .word 0x00000536
- thumb_func_start FUN_02214600
-FUN_02214600: ; 0x02214600
+ thumb_func_start MOD07_02214600
+MOD07_02214600: ; 0x02214600
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r7, r0, #0
@@ -4920,7 +4920,7 @@ FUN_02214600: ; 0x02214600
ldr r3, [sp, #0x10]
add r0, r7, #0
str r6, [sp, #4]
- bl FUN_0221428C
+ bl MOD07_0221428C
ldr r0, [sp, #0x28]
ldr r1, [sp, #8]
str r0, [sp]
@@ -4928,7 +4928,7 @@ FUN_02214600: ; 0x02214600
ldr r3, [sp, #0x10]
add r0, r7, #0
str r6, [sp, #4]
- bl FUN_0221437C
+ bl MOD07_0221437C
ldr r0, [sp, #0x28]
ldr r1, [sp, #8]
str r0, [sp]
@@ -4936,10 +4936,10 @@ FUN_02214600: ; 0x02214600
ldr r3, [sp, #0x10]
add r0, r7, #0
str r6, [sp, #4]
- bl FUN_022143FC
+ bl MOD07_022143FC
add r0, r7, #0
add r1, r6, #0
- bl FUN_02214510
+ bl MOD07_02214510
add r0, r5, r4
bl FUN_02019220
add r0, r5, r4
@@ -4955,8 +4955,8 @@ FUN_02214600: ; 0x02214600
pop {r4, r5, r6, r7, pc}
.align 2, 0
- thumb_func_start FUN_0221469C
-FUN_0221469C: ; 0x0221469C
+ thumb_func_start MOD07_0221469C
+MOD07_0221469C: ; 0x0221469C
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r6, r0, #0
@@ -4997,7 +4997,7 @@ _022146DC:
ldr r3, [sp, #8]
add r0, r6, #0
str r4, [sp, #4]
- bl FUN_02214600
+ bl MOD07_02214600
_022146F6:
add r4, r4, #1
add r5, #0x18
@@ -5016,8 +5016,8 @@ _022146F6:
nop
_0221471C: .word 0x00000192
- thumb_func_start FUN_02214720
-FUN_02214720: ; 0x02214720
+ thumb_func_start MOD07_02214720
+MOD07_02214720: ; 0x02214720
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x20
add r4, r0, #0
@@ -5199,7 +5199,7 @@ _022148A0:
mov r1, #0x10
bl FUN_02016998
add r7, r0, #0
- bl FUN_02212BD4
+ bl MOD07_02212BD4
cmp r0, #1
ldr r0, [r4]
bne _022148EA
@@ -5270,6 +5270,6 @@ _0221494A:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
- .section .data
+ .section .rodata
; 0x02214950
- .incbin "baserom.nds", 0x186EF0, 0x7F0
+ .incbin "baserom.nds", 0x186EF0, 0x7E4
diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s
index 50ed884f..ec645354 100644
--- a/arm9/modules/08/asm/module_08.s
+++ b/arm9/modules/08/asm/module_08.s
@@ -1803,7 +1803,7 @@ _02212AE8:
bl MOD08_02212004
cmp r0, #0
bne _02212B3C
- bl FUN_02231678
+ bl MOD11_02231678
add r0, r5, #0
mov r1, #1
bl MOD08_02215588
@@ -1833,7 +1833,7 @@ _02212AE8:
bl FUN_0201797C
b _02212B40
_02212B3C:
- bl FUN_02233560
+ bl MOD12_02233560
_02212B40:
mov r1, #0x1a
lsl r1, r1, #4
@@ -4691,10 +4691,10 @@ _022140F8:
bl MOD08_02212004
cmp r0, #0
bne _02214108
- bl FUN_02231678
+ bl MOD11_02231678
b _0221410C
_02214108:
- bl FUN_02233560
+ bl MOD12_02233560
_0221410C:
ldr r0, [r4, #0x48]
mov r1, #2
@@ -7633,13 +7633,13 @@ MOD08_022156C0: ; 0x022156C0
str r5, [r4]
str r6, [r4, #4]
add r0, r7, #0
- bl FUN_02230078
+ bl MOD11_02230078
str r0, [r4, #8]
add r0, r7, #0
- bl FUN_02230080
+ bl MOD11_02230080
str r0, [r4, #0xc]
add r0, r7, #0
- bl FUN_022300CC
+ bl MOD11_022300CC
str r0, [r4, #0x10]
mov r6, #0
add r5, r4, #0
@@ -7648,7 +7648,7 @@ _02215704:
str r0, [r5, #0x24]
add r0, r7, #0
add r1, r6, #0
- bl FUN_022312D0
+ bl MOD11_022312D0
str r0, [r5, #0x34]
add r6, r6, #1
add r5, r5, #4
@@ -7657,11 +7657,11 @@ _02215704:
add r1, r4, #0
add r0, r7, #0
add r1, #0x44
- bl FUN_02231504
+ bl MOD11_02231504
add r1, r4, #0
add r0, r7, #0
add r1, #0x48
- bl FUN_02231534
+ bl MOD11_02231534
mov r6, #0
add r7, r6, #0
_02215732:
@@ -49976,6 +49976,9 @@ _0222A758:
.align 2, 0
_0222A75C: .word 0x0000013B
- .section .data
+ .section .rodata
; 0x0222A760
- .incbin "baserom.nds", 0x1A0100, 0x2E60
+ .incbin "baserom.nds", 0x1A0100, 0x2E38
+
+ .section .data
+ .incbin "baserom.nds", 0x1A2F40, 0x20
diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s
index 7e5ad9c1..04792e97 100644
--- a/arm9/modules/09/asm/module_09.s
+++ b/arm9/modules/09/asm/module_09.s
@@ -25,12 +25,12 @@ _02211E6E:
bl Call_FillMemWithValue
str r5, [r4]
ldr r0, [r5, #8]
- bl FUN_0222FF68
+ bl MOD11_0222FF68
mov r1, #0x79
lsl r1, r1, #2
str r0, [r4, r1]
ldr r0, [r5, #8]
- bl FUN_022300CC
+ bl MOD11_022300CC
mov r1, #0x7a
lsl r1, r1, #2
str r0, [r4, r1]
@@ -41,7 +41,7 @@ _02211E6E:
sub r0, r0, #2
strb r1, [r4, r0]
ldr r0, [r5, #8]
- bl FUN_02231238
+ bl MOD11_02231238
ldr r3, _02211EE4 ; =0x00002077
lsl r0, r0, #0x18
lsr r0, r0, #0x18
@@ -54,7 +54,7 @@ _02211E6E:
strb r0, [r4, r3]
ldr r0, [r5, #8]
ldr r1, [r5, #0x28]
- bl FUN_02230260
+ bl MOD11_02230260
ldr r1, _02211EE8 ; =0x0000208F
strb r0, [r4, r1]
pop {r3, r4, r5, pc}
@@ -525,7 +525,7 @@ _0221228A:
add r2, r4, r2
add r2, #0x2c
ldrb r2, [r2]
- bl FUN_02230370
+ bl MOD11_02230370
cmp r0, #1
bne _0221233A
ldrh r0, [r4, #0x22]
@@ -563,7 +563,7 @@ _022122BA:
add r2, r4, r2
add r2, #0x2c
ldrb r2, [r2]
- bl FUN_02230014
+ bl MOD11_02230014
ldrb r2, [r4, #0x11]
mov r1, #0x50
add r3, r2, #0
@@ -1310,7 +1310,7 @@ _022128B6:
add r2, r6, r2
add r2, #0x2c
ldrb r2, [r2]
- bl FUN_02230370
+ bl MOD11_02230370
cmp r0, #1
bne _0221290E
ldr r0, _02212960 ; =0x0000207C
@@ -1609,7 +1609,7 @@ _02212B0A:
add r2, r5, r2
add r2, #0x2c
ldrb r2, [r2]
- bl FUN_02230014
+ bl MOD11_02230014
ldrb r2, [r5, #0x11]
mov r1, #0x50
mul r1, r2
@@ -1817,7 +1817,7 @@ _02212CA8:
add r2, #0x2c
ldrb r2, [r2]
ldr r1, [r1, #0x28]
- bl FUN_02230014
+ bl MOD11_02230014
ldr r1, [sp, #4]
mov r7, #0
ldrb r2, [r1, #0x11]
@@ -2262,7 +2262,7 @@ MOD09_02212F8C: ; 0x02212F8C
bl FUN_020030E8
ldr r0, [r5]
ldr r0, [r0, #8]
- bl FUN_02230E44
+ bl MOD11_02230E44
add r4, r0, #0
bl FUN_0200CD60
add r1, r0, #0
@@ -3465,11 +3465,11 @@ MOD09_022139D4: ; 0x022139D4
add r4, r0, #0
ldr r0, [r1, #8]
ldr r1, [r1, #0x28]
- bl FUN_022302BC
+ bl MOD11_022302BC
add r1, r0, #0
ldr r0, [r5]
ldr r0, [r0, #8]
- bl FUN_02230188
+ bl MOD11_02230188
add r2, r0, #0
ldr r0, _02213B74 ; =0x00001FAC
mov r1, #0
@@ -3661,7 +3661,7 @@ MOD09_02213B9C: ; 0x02213B9C
push {r3, lr}
ldr r0, [r0]
ldr r0, [r0, #8]
- bl FUN_0222FF74
+ bl MOD11_0222FF74
cmp r0, #0x4a
beq _02213BB8
cmp r0, #0x4b
@@ -3680,7 +3680,7 @@ MOD09_02213BBC: ; 0x02213BBC
push {r3, lr}
ldr r0, [r0]
ldr r0, [r0, #8]
- bl FUN_0222FF74
+ bl MOD11_0222FF74
cmp r0, #0x4a
beq _02213BD8
cmp r0, #0x4b
@@ -3798,14 +3798,14 @@ MOD09_02213C84: ; 0x02213C84
beq _02213CA8
cmp r4, #0x42
beq _02213CA8
- bl FUN_02230214
+ bl MOD11_02230214
add r1, r4, #0
mov r2, #1
add r3, r7, #0
bl FUN_0206EDD4
_02213CA8:
add r0, r5, #0
- bl FUN_02230218
+ bl MOD11_02230218
add r1, r4, #0
add r2, r6, #0
bl FUN_0206F1E4
@@ -8291,7 +8291,7 @@ MOD09_0221633C: ; 0x0221633C
bl FUN_02002B60
ldr r0, [r4]
ldr r0, [r0, #8]
- bl FUN_02230E54
+ bl MOD11_02230E54
mov r3, #0
str r3, [sp]
str r0, [sp, #4]
@@ -8332,7 +8332,7 @@ MOD09_02216378: ; 0x02216378
ldrb r2, [r2]
ldr r0, [r0, #8]
ldr r1, [r1, #0x28]
- bl FUN_02230014
+ bl MOD11_02230014
mov r1, #0xa2
mov r2, #0
add r7, r0, #0
@@ -8705,7 +8705,7 @@ MOD09_022166D0: ; 0x022166D0
add r2, r3, r2
add r2, #0x2c
ldrb r2, [r2]
- bl FUN_02230014
+ bl MOD11_02230014
add r6, r0, #0
ldr r0, _02216728 ; =0x00001FA8
mov r1, #0x5f
@@ -8777,7 +8777,7 @@ MOD09_02216770: ; 0x02216770
stmia r2!, {r0, r1}
ldr r0, [r5]
ldr r0, [r0, #8]
- bl FUN_02230078
+ bl MOD11_02230078
add r4, r0, #0
bl FUN_0200BB34
ldr r1, _022167B8 ; =0x00001FB4
@@ -8804,7 +8804,7 @@ MOD09_022167BC: ; 0x022167BC
add r6, r0, #0
ldr r0, [r6]
ldr r0, [r0, #8]
- bl FUN_02230078
+ bl MOD11_02230078
add r7, r0, #0
bl FUN_0206B888
mov r1, #0x13
@@ -8905,7 +8905,7 @@ MOD09_02216894: ; 0x02216894
add r5, r0, #0
ldr r0, [r5]
ldr r0, [r0, #8]
- bl FUN_02230078
+ bl MOD11_02230078
add r4, r0, #0
bl FUN_0207C2C8
mov r1, #0x27
@@ -8976,7 +8976,7 @@ MOD09_02216934: ; 0x02216934
add r5, r0, #0
ldr r0, [r5]
ldr r0, [r0, #8]
- bl FUN_02230078
+ bl MOD11_02230078
add r6, r0, #0
mov r0, #2
str r0, [sp]
@@ -9032,7 +9032,7 @@ MOD09_022169AC: ; 0x022169AC
add r5, r0, #0
ldr r0, [r5]
ldr r0, [r0, #8]
- bl FUN_02230078
+ bl MOD11_02230078
add r4, r0, #0
bl FUN_020724C8
mov r1, #0x14
@@ -9103,7 +9103,7 @@ MOD09_02216A4C: ; 0x02216A4C
add r5, r0, #0
ldr r0, [r5]
ldr r0, [r0, #8]
- bl FUN_02230078
+ bl MOD11_02230078
add r4, r0, #0
mov r0, #0x48
str r0, [sp]
@@ -9172,7 +9172,7 @@ MOD09_02216ADC: ; 0x02216ADC
ldr r0, [r5]
add r4, r1, #0
ldr r0, [r0, #8]
- bl FUN_02230078
+ bl MOD11_02230078
mov r2, #0
add r1, sp, #0
strh r2, [r1]
@@ -9244,7 +9244,7 @@ MOD09_02216B74: ; 0x02216B74
add r7, r0, #0
ldr r0, [r7]
ldr r0, [r0, #8]
- bl FUN_02230078
+ bl MOD11_02230078
ldr r6, _02216BA8 ; =0x00001FB8
str r0, [sp]
mov r4, #0
@@ -9328,7 +9328,7 @@ MOD09_02216C10: ; 0x02216C10
ldr r0, [r0, #8]
add r7, r1, #0
add r4, r2, #0
- bl FUN_02230078
+ bl MOD11_02230078
str r0, [sp, #8]
bl FUN_0206E12C
str r0, [sp, #0xc]
@@ -9363,7 +9363,7 @@ MOD09_02216C60: ; 0x02216C60
add r4, r2, #0
ldr r0, [r0, #8]
add r6, r1, #0
- bl FUN_02230078
+ bl MOD11_02230078
add r7, r0, #0
bl FUN_0206E2A8
str r0, [sp, #8]
@@ -10707,7 +10707,7 @@ MOD09_02217750: ; 0x02217750
add r5, r0, #0
ldr r0, [r5]
ldr r0, [r0, #8]
- bl FUN_02230078
+ bl MOD11_02230078
ldr r3, _022177A8 ; =0x0000B00C
mov r2, #0x7a
str r3, [sp]
@@ -10719,7 +10719,7 @@ MOD09_02217750: ; 0x02217750
ldr r2, [r5, r2]
add r3, #0xc
add r4, r0, #0
- bl FUN_0225D3EC
+ bl MOD11_0225D3EC
ldr r3, _022177A8 ; =0x0000B00C
mov r0, #0
str r3, [sp]
@@ -10734,7 +10734,7 @@ MOD09_02217750: ; 0x02217750
ldr r2, [r2, #0xc]
add r0, r4, #0
add r3, #0xc
- bl FUN_0225D484
+ bl MOD11_0225D484
add r1, r0, #0
ldr r0, _022177B0 ; =0x00002088
ldr r0, [r5, r0]
@@ -10754,7 +10754,7 @@ MOD09_022177B4: ; 0x022177B4
ldr r0, _022177DC ; =0x00002088
ldr r0, [r4, r0]
bl MOD09_0221AC24
- bl FUN_0225D508
+ bl MOD11_0225D508
ldr r2, _022177E0 ; =0x0000B00C
ldr r0, _022177E4 ; =0x00001FB4
str r2, [sp]
@@ -10762,7 +10762,7 @@ MOD09_022177B4: ; 0x022177B4
ldr r0, [r4, r0]
add r1, #0xc
add r3, r2, #0
- bl FUN_0225D45C
+ bl MOD11_0225D45C
add sp, #4
pop {r3, r4, pc}
.align 2, 0
@@ -10914,7 +10914,7 @@ MOD09_022178E4: ; 0x022178E4
ldr r0, _02217908 ; =0x00002088
ldr r0, [r4, r0]
bl MOD09_0221AC24
- bl FUN_0225D648
+ bl MOD11_0225D648
pop {r4, pc}
.align 2, 0
_02217908: .word 0x00002088
@@ -12664,16 +12664,16 @@ MOD09_022186F0: ; 0x022186F0
bl Call_FillMemWithValue
str r5, [r4]
ldr r0, [r5]
- bl FUN_0222FF68
+ bl MOD11_0222FF68
str r0, [r4, #4]
ldr r0, [r5]
- bl FUN_022300CC
+ bl MOD11_022300CC
str r0, [r4, #8]
ldr r0, _02218788 ; =0x0000114A
mov r1, #0
strb r1, [r4, r0]
ldr r0, [r5]
- bl FUN_02230218
+ bl MOD11_02230218
add r6, r0, #0
mov r5, #0
_02218730:
@@ -12703,7 +12703,7 @@ _02218730:
bl MOD09_02219C38
ldr r0, [r4]
ldr r0, [r0]
- bl FUN_0222FF74
+ bl MOD11_0222FF74
mov r1, #1
lsl r1, r1, #0xa
tst r0, r1
@@ -12872,7 +12872,7 @@ MOD09_02218888: ; 0x02218888
bl FUN_02002C50
ldr r0, [r4]
ldr r0, [r0]
- bl FUN_02230218
+ bl MOD11_02230218
bl FUN_0206F1B4
ldr r1, _02218950 ; =0x0000114D
strb r0, [r4, r1]
@@ -13340,7 +13340,7 @@ _02218C68:
ldr r0, [r4]
ldr r1, [r4, #0x10]
add r2, r7, #0
- bl FUN_02230014
+ bl MOD11_02230014
add r6, r0, #0
ldr r0, [r5, #0x10]
mov r1, #0x2e
@@ -13376,7 +13376,7 @@ _02218CDA:
str r0, [sp]
ldr r0, [r4]
ldr r1, [r4, #0x10]
- bl FUN_02230370
+ bl MOD11_02230370
cmp r0, #1
bne _02218D00
ldr r2, _02218E38 ; =0x0000114D
@@ -13391,7 +13391,7 @@ _02218D00:
cmp r6, #3
bne _02218D68
ldr r0, [r4]
- bl FUN_0222FF74
+ bl MOD11_0222FF74
mov r1, #1
tst r0, r1
bne _02218D22
@@ -13500,10 +13500,10 @@ _02218DCE:
_02218DF2:
ldr r0, [r4]
ldr r1, [r4, #0x10]
- bl FUN_0222FF88
+ bl MOD11_0222FF88
add r6, r0, #0
ldr r0, [r4]
- bl FUN_02230290
+ bl MOD11_02230290
add r4, r0, #0
add r0, r6, #0
bl FUN_0206B9AC
@@ -13674,7 +13674,7 @@ _02218F0C:
cmp r0, #0
beq _02218F78
ldr r0, [r1]
- bl FUN_02230218
+ bl MOD11_02230218
add r6, r0, #0
mov r4, #0
_02218F4E:
@@ -13740,7 +13740,7 @@ _02218FB8: ; jump table
.short _0221906E - _02218FB8 - 2 ; case 4
_02218FC2:
ldr r0, [r4, #0x38]
- bl FUN_0225D824
+ bl MOD11_0225D824
cmp r0, #1
bne _02218FFA
ldr r0, _022190C0 ; =0x000005DD
@@ -13780,7 +13780,7 @@ _02219004:
b _022190B6
_02219014:
ldr r0, [r4, #0x38]
- bl FUN_0225D824
+ bl MOD11_0225D824
cmp r0, #1
bne _02219054
ldr r0, _022190C0 ; =0x000005DD
@@ -13824,7 +13824,7 @@ _0221905E:
b _022190B6
_0221906E:
ldr r0, [r4, #0x38]
- bl FUN_0225D824
+ bl MOD11_0225D824
cmp r0, #1
bne _022190AE
ldr r0, _022190C0 ; =0x000005DD
@@ -14044,7 +14044,7 @@ MOD09_022191C0: ; 0x022191C0
bl FUN_020030E8
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02230E44
+ bl MOD11_02230E44
add r4, r0, #0
bl FUN_0200CD60
add r1, r0, #0
@@ -14275,13 +14275,13 @@ MOD09_02219430: ; 0x02219430
add r5, r0, #0
ldr r4, [r5]
ldr r0, [r4]
- bl FUN_0222FF78
+ bl MOD11_0222FF78
add r1, r0, #0
ldr r0, [r5]
ldr r3, [r4, #0x10]
ldr r0, [r0]
mov r2, #2
- bl FUN_0224C474
+ bl MOD11_0224C474
pop {r3, r4, r5, pc}
thumb_func_start MOD09_0221944C
@@ -14291,13 +14291,13 @@ MOD09_0221944C: ; 0x0221944C
add r7, r3, #0
add r5, r0, #0
add r6, r2, #0
- bl FUN_02230214
+ bl MOD11_02230214
add r1, r4, #0
mov r2, #1
add r3, r7, #0
bl FUN_0206EDD4
add r0, r5, #0
- bl FUN_02230218
+ bl MOD11_02230218
add r1, r4, #0
add r2, r6, #0
bl FUN_0206F1E4
@@ -15246,7 +15246,7 @@ MOD09_02219C08: ; 0x02219C08
bl FUN_02002B60
ldr r0, [r4]
ldr r0, [r0]
- bl FUN_02230E54
+ bl MOD11_02230E54
mov r3, #0
str r3, [sp]
str r0, [sp, #4]
@@ -15514,7 +15514,7 @@ MOD09_02219DF4: ; 0x02219DF4
stmia r2!, {r0, r1}
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02230078
+ bl MOD11_02230078
add r4, r0, #0
bl FUN_0200BB34
mov r1, #0xc3
@@ -15542,7 +15542,7 @@ MOD09_02219E40: ; 0x02219E40
add r6, r0, #0
ldr r0, [r6]
ldr r0, [r0]
- bl FUN_02230078
+ bl MOD11_02230078
add r7, r0, #0
mov r4, #0
_02219E52:
@@ -15624,7 +15624,7 @@ MOD09_02219EEC: ; 0x02219EEC
add r6, r1, #0
ldr r0, [r0]
add r4, r2, #0
- bl FUN_02230078
+ bl MOD11_02230078
add r7, r0, #0
add r0, r6, #0
mov r1, #1
@@ -15676,7 +15676,7 @@ MOD09_02219F54: ; 0x02219F54
ldr r0, [r5]
add r4, r1, #0
ldr r0, [r0]
- bl FUN_02230078
+ bl MOD11_02230078
mov r2, #0
add r1, sp, #0
strh r2, [r1]
@@ -15745,7 +15745,7 @@ MOD09_02219FE4: ; 0x02219FE4
add r7, r0, #0
ldr r0, [r7]
ldr r0, [r0]
- bl FUN_02230078
+ bl MOD11_02230078
mov r6, #0x31
str r0, [sp]
mov r4, #0
@@ -15933,7 +15933,7 @@ MOD09_0221A158: ; 0x0221A158
add r5, r0, #0
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02230078
+ bl MOD11_02230078
ldr r3, _0221A1AC ; =0x0000B4BE
add r4, r0, #0
str r3, [sp]
@@ -15944,7 +15944,7 @@ MOD09_0221A158: ; 0x0221A158
lsl r1, r1, #2
ldr r1, [r5, r1]
ldr r2, [r5, #8]
- bl FUN_0225D3EC
+ bl MOD11_0225D3EC
ldr r3, _0221A1AC ; =0x0000B4BE
mov r1, #0xc3
str r3, [sp]
@@ -15960,7 +15960,7 @@ MOD09_0221A158: ; 0x0221A158
ldr r1, [r5, r1]
ldr r2, [r2, #0xc]
add r0, r4, #0
- bl FUN_0225D484
+ bl MOD11_0225D484
add r1, r0, #0
ldr r0, [r5, #0x34]
bl MOD09_0221AC30
@@ -15976,7 +15976,7 @@ MOD09_0221A1B0: ; 0x0221A1B0
add r4, r0, #0
ldr r0, [r4, #0x34]
bl MOD09_0221AC24
- bl FUN_0225D508
+ bl MOD11_0225D508
ldr r3, _0221A1D8 ; =0x0000B4B9
mov r0, #0xc3
add r1, r3, #5
@@ -15984,7 +15984,7 @@ MOD09_0221A1B0: ; 0x0221A1B0
lsl r0, r0, #2
ldr r0, [r4, r0]
add r2, r1, #0
- bl FUN_0225D45C
+ bl MOD11_0225D45C
add sp, #4
pop {r3, r4, pc}
nop
@@ -16037,7 +16037,7 @@ MOD09_0221A224: ; 0x0221A224
bl MOD09_0221AC5C
ldr r0, [r4, #0x34]
bl MOD09_0221AC24
- bl FUN_0225D648
+ bl MOD11_0225D648
pop {r4, pc}
.align 2, 0
@@ -16048,7 +16048,7 @@ MOD09_0221A244: ; 0x0221A244
add r5, r0, #0
ldr r0, [r5]
ldr r0, [r0]
- bl FUN_02230078
+ bl MOD11_02230078
ldr r3, _0221A290 ; =0x0000B4BD
add r4, r0, #0
str r3, [sp]
@@ -16059,7 +16059,7 @@ MOD09_0221A244: ; 0x0221A244
lsl r1, r1, #2
ldr r1, [r5, r1]
ldr r2, [r5, #8]
- bl FUN_0225D6A4
+ bl MOD11_0225D6A4
ldr r3, _0221A290 ; =0x0000B4BD
mov r1, #0xc3
str r3, [sp]
@@ -16074,7 +16074,7 @@ MOD09_0221A244: ; 0x0221A244
ldr r1, [r5, r1]
ldr r2, [r2, #0xc]
add r0, r4, #0
- bl FUN_0225D73C
+ bl MOD11_0225D73C
str r0, [r5, #0x38]
add sp, #0x14
pop {r4, r5, pc}
@@ -16087,7 +16087,7 @@ MOD09_0221A294: ; 0x0221A294
sub sp, #4
add r4, r0, #0
ldr r0, [r4, #0x38]
- bl FUN_0225D7B8
+ bl MOD11_0225D7B8
ldr r3, _0221A2B8 ; =0x0000B4B8
mov r0, #0xc3
add r1, r3, #5
@@ -16095,7 +16095,7 @@ MOD09_0221A294: ; 0x0221A294
lsl r0, r0, #2
ldr r0, [r4, r0]
add r2, r1, #0
- bl FUN_0225D714
+ bl MOD11_0225D714
add sp, #4
pop {r3, r4, pc}
nop
@@ -16115,14 +16115,14 @@ MOD09_0221A2BC: ; 0x0221A2BC
ldr r0, [r4, #0x38]
ldr r1, [r1, r3]
ldr r2, [r2, r3]
- bl FUN_0225D800
+ bl MOD11_0225D800
ldr r0, [r4, #0x38]
mov r1, #0x3c
- bl FUN_0225D820
+ bl MOD11_0225D820
pop {r4, pc}
_0221A2E2:
ldr r0, [r4, #0x38]
- bl FUN_0225D80C
+ bl MOD11_0225D80C
pop {r4, pc}
nop
_0221A2EC: .word 0x0221BDC8
@@ -17318,7 +17318,7 @@ MOD09_0221AC34: ; 0x0221AC34
ldrb r2, [r3, #2]
ldrb r3, [r3, #1]
ldr r0, [r0]
- bl FUN_0225D5DC
+ bl MOD11_0225D5DC
_0221AC58:
add sp, #4
pop {r3, r4, pc}
@@ -17352,7 +17352,7 @@ MOD09_0221AC68: ; 0x0221AC68
ldrb r2, [r3, #2]
ldrb r3, [r3, #1]
ldr r0, [r4]
- bl FUN_0225D5DC
+ bl MOD11_0225D5DC
_0221AC92:
pop {r3, r4, r5, pc}
@@ -17389,7 +17389,7 @@ _0221ACA8:
ldrb r2, [r3, #2]
ldrb r3, [r3, #1]
ldr r0, [r0]
- bl FUN_0225D5DC
+ bl MOD11_0225D5DC
ldr r0, _0221ACE0 ; =0x000005DC
bl FUN_020054C8
_0221ACD4:
@@ -17622,7 +17622,7 @@ _0221AE70:
ldrb r2, [r3, #1]
ldrb r3, [r3, #2]
ldr r0, [r5]
- bl FUN_0225D5DC
+ bl MOD11_0225D5DC
ldr r0, _0221AEC0 ; =0x000005DC
bl FUN_020054C8
_0221AE8A:
@@ -17658,6 +17658,6 @@ _0221AEBC: .word 0x021C48B8
_0221AEC0: .word 0x000005DC
_0221AEC4: .word 0x000005DD
- .section .data
+ .section .rodata
; 0x0221AEC8
- .incbin "baserom.nds", 0x1AC068, 0x1138
+ .incbin "baserom.nds", 0x1AC068, 0x1120
diff --git a/arm9/modules/10/asm/module_10_dummy.s b/arm9/modules/10/asm/module_10_dummy.s
index bae0dc2d..8b137891 100644
--- a/arm9/modules/10/asm/module_10_dummy.s
+++ b/arm9/modules/10/asm/module_10_dummy.s
@@ -1,5 +1 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .section .data
- .balign 4, 0
- .space 32
+
diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s
index 7f7ae7cf..37f1b829 100644
--- a/arm9/modules/11/asm/module_11.s
+++ b/arm9/modules/11/asm/module_11.s
@@ -128,8 +128,8 @@ _0222D6AC:
bl MOD11_0222FC38
cmp r0, #1
bne _0222D6D2
- ldr r0, _0222D7F0 ; =0x00000007
- bl FUN_02005F60
+ ldr r0, _0222D7F0 ; =SDK_OVERLAY_MODULE_07_ID
+ bl UnloadOverlayByID
mov r0, #7
str r0, [r4]
mov r0, #0x3d
@@ -147,9 +147,9 @@ _0222D6D4:
str r0, [r4]
b _0222D7EA
_0222D6DA:
- ldr r0, _0222D7F4 ; =0x00000008
+ ldr r0, _0222D7F4 ; =SDK_OVERLAY_MODULE_08_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
add r0, r6, #0
bl MOD11_0222DB50
mov r0, #9
@@ -184,8 +184,8 @@ _0222D720:
bl MOD11_0222FE58
cmp r0, #1
bne _0222D7EA
- ldr r0, _0222D7F0 ; =0x00000007
- bl FUN_02005F60
+ ldr r0, _0222D7F0 ; =SDK_OVERLAY_MODULE_07_ID
+ bl UnloadOverlayByID
mov r0, #5
bl FUN_020168D0
mov r0, #0x3e
@@ -279,8 +279,8 @@ _0222D7EA:
add sp, #0x28
pop {r4, r5, r6, pc}
.align 2, 0
-_0222D7F0: .word 0x00000007
-_0222D7F4: .word 0x00000008
+_0222D7F0: .word SDK_OVERLAY_MODULE_07_ID
+_0222D7F4: .word SDK_OVERLAY_MODULE_08_ID
thumb_func_start MOD11_0222D7F8
MOD11_0222D7F8: ; 0x0222D7F8
@@ -302,16 +302,16 @@ MOD11_0222D7F8: ; 0x0222D7F8
add r0, r4, #0
mov r1, #3
bl MOD11_02231338
- ldr r0, _0222D838 ; =0x00000008
- bl FUN_02005F60
- ldr r0, _0222D83C ; =0x00000009
+ ldr r0, _0222D838 ; =SDK_OVERLAY_MODULE_08_ID
+ bl UnloadOverlayByID
+ ldr r0, _0222D83C ; =SDK_OVERLAY_MODULE_09_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
pop {r4, pc}
.align 2, 0
_0222D834: .word 0x000023FB
-_0222D838: .word 0x00000008
-_0222D83C: .word 0x00000009
+_0222D838: .word SDK_OVERLAY_MODULE_08_ID
+_0222D83C: .word SDK_OVERLAY_MODULE_09_ID
thumb_func_start MOD11_0222D840
MOD11_0222D840: ; 0x0222D840
@@ -349,11 +349,11 @@ MOD11_0222D840: ; 0x0222D840
MOD11_0222D88C: ; 0x0222D88C
push {r3, r4, r5, lr}
add r4, r0, #0
- ldr r0, _0222D938 ; =0x00000009
- bl FUN_02005F60
- ldr r0, _0222D93C ; =0x00000008
+ ldr r0, _0222D938 ; =SDK_OVERLAY_MODULE_09_ID
+ bl UnloadOverlayByID
+ ldr r0, _0222D93C ; =SDK_OVERLAY_MODULE_08_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
add r0, r4, #0
mov r1, #0
bl MOD11_02231338
@@ -363,7 +363,7 @@ MOD11_0222D88C: ; 0x0222D88C
add r1, r0, #0
mov r0, #0
add r2, r5, #0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
bl FUN_02031190
add r1, r0, #0
add r0, r4, #0
@@ -415,8 +415,8 @@ MOD11_0222D88C: ; 0x0222D88C
bl FUN_02008D24
pop {r3, r4, r5, pc}
.align 2, 0
-_0222D938: .word 0x00000009
-_0222D93C: .word 0x00000008
+_0222D938: .word SDK_OVERLAY_MODULE_09_ID
+_0222D93C: .word SDK_OVERLAY_MODULE_08_ID
_0222D940: .word 0x000023FB
thumb_func_start MOD11_0222D944
@@ -663,14 +663,14 @@ MOD11_0222DB50: ; 0x0222DB50
add r1, r0, #0
mov r0, #0
add r2, r5, #0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
bl FUN_02022300
add r5, r0, #0
bl FUN_020222F8
add r1, r0, #0
mov r0, #0
add r2, r5, #0
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
bl FUN_0201B9D4
ldr r1, _0222DF0C ; =0x00002430
str r0, [r4, r1]
@@ -879,7 +879,7 @@ _0222DC42:
bl MOD11_02231390
bl MOD11_0222EFDC
mov r0, #5
- bl FUN_02211F5C
+ bl MOD08_02211F5C
add r1, r4, #0
add r1, #0x8c
str r0, [r1]
@@ -915,14 +915,14 @@ _0222DC42:
ldr r1, _0222DF24 ; =0x00002224
mov r2, #0xe0
add r1, r4, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [r4, #0x28]
mov r1, #2
bl FUN_020031FC
ldr r1, _0222DF28 ; =0x00002304
mov r2, #0xe0
add r1, r4, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl MOD11_02230C68
mov r1, #0
@@ -1316,7 +1316,7 @@ _0222E10A:
add r0, r4, #0
add r0, #0x8c
ldr r0, [r0]
- bl FUN_02212024
+ bl MOD08_02212024
ldr r0, [r4, #0x30]
bl MOD11_0223D284
ldr r0, [r4, #0x44]
@@ -1396,13 +1396,13 @@ _0222E220:
bl FUN_0201C350
add r0, r4, #0
bl FUN_02016A18
- ldr r0, _0222E25C ; =0x00000008
- bl FUN_02005F60
+ ldr r0, _0222E25C ; =SDK_OVERLAY_MODULE_08_ID
+ bl UnloadOverlayByID
bl FUN_02033590
cmp r0, #0
bne _0222E244
- ldr r0, _0222E260 ; =0x00000010
- bl FUN_02005F60
+ ldr r0, _0222E260 ; =SDK_OVERLAY_MODULE_16_ID
+ bl UnloadOverlayByID
_0222E244:
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -1411,8 +1411,8 @@ _0222E24C: .word 0x00002410
_0222E250: .word 0x000023F9
_0222E254: .word 0x00002430
_0222E258: .word 0x00000704
-_0222E25C: .word 0x00000008
-_0222E260: .word 0x00000010
+_0222E25C: .word SDK_OVERLAY_MODULE_08_ID
+_0222E260: .word SDK_OVERLAY_MODULE_16_ID
thumb_func_start MOD11_0222E264
MOD11_0222E264: ; 0x0222E264
@@ -1440,25 +1440,25 @@ _0222E282:
mov r0, #0
lsl r1, r1, #0x18
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x62
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x19
mov r2, #1
mov r0, #0
lsl r1, r1, #0x16
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x66
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
ldr r6, _0222E454 ; =0x0225D9A8
add r3, sp, #0x10
add r2, r3, #0
@@ -3032,13 +3032,13 @@ MOD11_0222EF50: ; 0x0222EF50
add r1, r0, #0
add r2, r0, #0
add r3, r0, #0
- blx G3X_SetFog
+ bl G3X_SetFog
mov r0, #0
ldr r2, _0222EFC8 ; =0x00007FFF
add r1, r0, #0
mov r3, #0x3f
str r0, [sp]
- blx G3X_SetClearColor
+ bl G3X_SetClearColor
ldr r1, _0222EFCC ; =0xBFFF0000
ldr r0, _0222EFD0 ; =0x04000580
str r1, [r0]
@@ -3211,7 +3211,7 @@ MOD11_0222F100: ; 0x0222F100
_0222F118:
cmp r0, #0
bne _0222F120
- bl FUN_02215A44
+ bl MOD08_02215A44
_0222F120:
add r0, r4, #0
add r0, #0x88
@@ -3379,18 +3379,18 @@ _0222F27C:
_0222F280: .word 0x00002434
thumb_func_start MOD11_0222F284
-MOD11_0222F284: ; 0x0222F284
+MOD11_0222F284: ; 0x0222F284 __sinit
push {r3, lr}
bl FUN_02033590
cmp r0, #0
bne _0222F296
- ldr r0, _0222F298 ; =0x00000010
+ ldr r0, _0222F298 ; =SDK_OVERLAY_MODULE_16_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
_0222F296:
pop {r3, pc}
.align 2, 0
-_0222F298: .word 0x00000010
+_0222F298: .word SDK_OVERLAY_MODULE_16_ID
thumb_func_start MOD11_0222F29C
MOD11_0222F29C: ; 0x0222F29C
@@ -3454,31 +3454,31 @@ _0222F30E:
mov r0, #0
lsl r1, r1, #0x18
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x62
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x19
mov r2, #1
mov r0, #0
lsl r1, r1, #0x16
lsl r2, r2, #0x12
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #0x66
mov r2, #2
mov r0, #0
lsl r1, r1, #0x14
lsl r2, r2, #0x10
- blx MIi_CpuClear32
+ bl MIi_CpuClear32
mov r1, #5
mov r2, #2
mov r0, #0
lsl r1, r1, #0x18
lsl r2, r2, #8
- blx MIi_CpuClear16
+ bl MIi_CpuClear16
ldr r6, _0222F4CC ; =0x0225D9B8
add r3, sp, #0x30
add r2, r3, #0
@@ -4229,7 +4229,7 @@ MOD11_0222F988: ; 0x0222F988
ldr r2, _0222FAB4 ; =0x00002444
mov r0, #0
add r1, r4, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0
add r1, r6, #0
bl MOD11_0222E520
@@ -4244,9 +4244,9 @@ _0222F9C6:
mov r0, #0
pop {r4, r5, r6, pc}
_0222F9CA:
- ldr r0, _0222FAB8 ; =0x00000007
+ ldr r0, _0222FAB8 ; =SDK_OVERLAY_MODULE_07_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
ldr r1, [r4, #0x2c]
mov r0, #8
tst r0, r1
@@ -4263,7 +4263,7 @@ _0222F9DE:
ldr r1, [r4, r1]
mov r0, #0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r5, #0
bl FUN_020313CC
cmp r0, #3
@@ -4358,12 +4358,12 @@ _0222FAA4:
mov r0, #7
lsl r0, r0, #6
ldr r0, [r4, r0]
- bl FUN_02211E60
+ bl MOD07_02211E60
mov r0, #1
pop {r4, r5, r6, pc}
nop
_0222FAB4: .word 0x00002444
-_0222FAB8: .word 0x00000007
+_0222FAB8: .word SDK_OVERLAY_MODULE_07_ID
thumb_func_start MOD11_0222FABC
MOD11_0222FABC: ; 0x0222FABC
@@ -4435,7 +4435,7 @@ _0222FB2E:
ldr r1, [r4, r1]
mov r0, #0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r1, [r4, #0x2c]
mov r0, #8
tst r0, r1
@@ -4547,7 +4547,7 @@ _0222FC2A:
mov r0, #7
lsl r0, r0, #6
ldr r0, [r4, r0]
- bl FUN_02211E60
+ bl MOD07_02211E60
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
@@ -4612,9 +4612,9 @@ _0222FCA2:
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
_0222FCA8:
- ldr r0, _0222FE54 ; =0x00000007
+ ldr r0, _0222FE54 ; =SDK_OVERLAY_MODULE_07_ID
mov r1, #2
- bl FUN_02005FDC
+ bl HandleLoadOverlay
mov r0, #5
mov r1, #0x2c
bl FUN_02016998
@@ -4625,7 +4625,7 @@ _0222FCA8:
mov r0, #0
add r1, r6, #0
mov r2, #0x2c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
str r7, [r6]
ldr r0, [r7, #0x14]
cmp r0, #5
@@ -4813,12 +4813,12 @@ _0222FE40:
strb r1, [r0]
_0222FE48:
add r0, r6, #0
- bl FUN_02211E60
+ bl MOD07_02211E60
mov r0, #1
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
-_0222FE54: .word 0x00000007
+_0222FE54: .word SDK_OVERLAY_MODULE_07_ID
thumb_func_start MOD11_0222FE58
MOD11_0222FE58: ; 0x0222FE58
@@ -6514,7 +6514,7 @@ _02230AA2:
mul r1, r0
add r0, r1, #0
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x20]
cmp r0, #0
bne _02230AC2
@@ -6686,7 +6686,7 @@ _02230BFC:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #8]
_02230C28:
ldr r0, [sp, #0x18]
@@ -7242,7 +7242,7 @@ MOD11_02230FCC: ; 0x02230FCC
ldr r0, _02231224 ; =0x06010000
ldr r1, [r4, r1]
lsl r2, r2, #0x10
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
mov r0, #0x22
lsl r0, r0, #4
ldr r5, [r4, r0]
@@ -7252,7 +7252,7 @@ MOD11_02230FCC: ; 0x02230FCC
mov r2, #2
add r1, r5, #0
lsl r2, r2, #8
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
mov r0, #0x19
lsl r0, r0, #0x16
str r0, [sp, #0x24]
@@ -11434,7 +11434,7 @@ _02232FB4:
ldr r1, [r5, r1]
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _022330E4 ; =0x00002144
str r0, [r5, r1]
_02233040:
@@ -11456,7 +11456,7 @@ _02233040:
add r0, #0xa
mul r0, r1
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _022330E4 ; =0x00002144
str r0, [r5, r1]
_0223306E:
@@ -11497,7 +11497,7 @@ _02233094:
mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _022330E4 ; =0x00002144
add sp, #0x1c
str r0, [r5, r1]
@@ -12655,7 +12655,7 @@ _022339C6:
ldrb r0, [r2, r0]
mul r0, r1
mov r1, #7
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
ldr r1, [sp]
lsr r0, r0, #0x10
@@ -12664,7 +12664,7 @@ _022339C6:
lsr r4, r0, #1
ldr r1, [sp, #4]
add r0, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
add r1, r5, #0
add r1, #0x9c
str r0, [r1]
@@ -12680,7 +12680,7 @@ _022339C6:
_02233A1E:
ldr r1, [sp]
add r0, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
add r1, r5, #0
add r1, #0xa0
str r0, [r1]
@@ -12695,7 +12695,7 @@ _02233A1E:
b _02233A6A
_02233A3E:
ldr r1, [sp, #4]
- blx _s32_div_f
+ bl _s32_div_f
add r1, r5, #0
add r1, #0x9c
str r0, [r1]
@@ -13311,7 +13311,7 @@ _02233EEA:
_02233EF4:
ldr r0, [r4]
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r4]
b _02233F42
_02233F00:
@@ -14219,7 +14219,7 @@ _022345FE:
b _02234648
_02234606:
add r1, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0xc]
b _02234648
_02234610:
@@ -14442,7 +14442,7 @@ MOD11_022347B0: ; 0x022347B0
add r6, r0, #0
bl FUN_0201B9EC
add r1, r4, #1
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x4d
add r1, r6, r1
lsl r0, r0, #2
@@ -14548,7 +14548,7 @@ _02234890:
_0223489A:
ldr r0, [r4]
ldr r1, [r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r4]
b _022348F6
_022348A6:
@@ -14709,7 +14709,7 @@ _022349C0:
_022349CA:
ldr r0, [sp, #0xc]
ldr r1, [r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0xc]
b _02234A26
_022349D6:
@@ -15703,7 +15703,7 @@ _0223519E:
_022351A0:
bl FUN_0201B9EC
add r1, r6, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r2, [r4, #0x64]
mov r0, #0xc0
mul r0, r2
@@ -16388,7 +16388,7 @@ _022356AA:
lsr r5, r0, #0x10
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r5
bge _0223572C
ldr r1, [r4, #0x64]
@@ -16476,7 +16476,7 @@ _02235784:
lsr r5, r0, #0x10
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r5
bge _022357DA
ldr r1, [r4, #0x64]
@@ -16623,7 +16623,7 @@ _022358DE:
_022358E0:
ldr r0, [r4]
ldr r1, [r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r4]
cmp r0, #0
bne _022358F0
@@ -16802,7 +16802,7 @@ MOD11_02235A2C: ; 0x02235A2C
_02235A3C:
bl FUN_0201B9EC
ldr r1, _02235A80 ; =0x000001D3
- blx _s32_div_f
+ bl _s32_div_f
add r0, r1, #1
ldr r1, [r6, #0x64]
lsl r0, r0, #0x10
@@ -17258,7 +17258,7 @@ _02235D7E:
add r5, r2, #0
mul r5, r1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
ldr r2, [r4, r5]
mov r0, #0x38
bic r2, r0
@@ -18521,7 +18521,7 @@ _022367DE:
_022367EA:
bl FUN_0201B9EC
add r1, r6, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp, #0xc]
add r5, r1, #0
add r5, r5, r0
@@ -19867,7 +19867,7 @@ MOD11_02237290: ; 0x02237290
bne _0223731C
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, _0223732C ; =0x00003120
strb r1, [r4, r0]
ldrb r1, [r4, r0]
@@ -20322,7 +20322,7 @@ MOD11_02237584: ; 0x02237584
mov r0, #0x28
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237668 ; =0x00002154
add r0, #0x1e
str r0, [r4, r1]
@@ -20331,7 +20331,7 @@ MOD11_02237584: ; 0x02237584
mov r0, #0xf
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #1
ldr r0, _0223766C ; =0x00002160
str r1, [r4, r0]
@@ -20496,7 +20496,7 @@ MOD11_022376D0: ; 0x022376D0
mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [r5, r4]
b _022377AC
_022377A4:
@@ -20701,7 +20701,7 @@ _02237900:
str r2, [r5, r1]
lsl r0, r4, #1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237AB0 ; =0x00002144
add r0, r0, #2
ldr r2, [r5, r1]
@@ -20723,12 +20723,12 @@ _02237900:
add r1, r0, #0
ldr r0, _02237AB0 ; =0x00002144
ldr r0, [r5, r0]
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _02237AB0 ; =0x00002144
str r0, [r5, r1]
ldr r0, [r5, r1]
mov r1, #0x32
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237AB0 ; =0x00002144
str r0, [r5, r1]
ldr r0, [r5, r1]
@@ -20753,7 +20753,7 @@ _02237900:
mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _02237AB0 ; =0x00002144
str r0, [r5, r1]
_022379CC:
@@ -21220,7 +21220,7 @@ _02237D8A:
beq _02237DA8
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r1, #1
add r0, sp, #0x18
ldrh r2, [r0, r1]
@@ -21713,7 +21713,7 @@ MOD11_02238130: ; 0x02238130
add r1, r1, #4
ldr r1, [r2, r1]
mul r0, r3
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _02238178 ; =0x00002154
str r0, [r4, r1]
ldr r0, [r4, r1]
@@ -22681,7 +22681,7 @@ MOD11_022388C0: ; 0x022388C0
lsl r2, r2, #2
add r2, r4, r2
ldr r1, [r2, r1]
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #1
ldr r0, _02238900 ; =0x00002154
str r1, [r4, r0]
@@ -22743,7 +22743,7 @@ MOD11_02238904: ; 0x02238904
mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _022389F4 ; =0x00002144
str r0, [r5, r1]
mov r0, #0x71
@@ -22906,7 +22906,7 @@ MOD11_02238A84: ; 0x02238A84
add r1, r1, #4
ldr r1, [r3, r1]
mul r0, r2
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #1
ldr r0, _02238AB8 ; =0x00002154
str r1, [r4, r0]
@@ -23905,12 +23905,12 @@ _02239222:
bne _022392EC
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _022392EC
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r5, r1, #0
add r0, r4, #0
mov r1, #0xa0
@@ -23918,7 +23918,7 @@ _02239222:
bl FUN_020671BC
sub r0, r0, #1
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x18
lsr r2, r0, #0x18
cmp r2, #0xa
@@ -23999,7 +23999,7 @@ _02239324:
_0223932E:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r2, [sp, #0xc]
ldr r0, _02239378 ; =0x0225E15C
ldrb r0, [r0, r2]
@@ -24716,7 +24716,7 @@ _022398F0:
_022398F8:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r4
bge _0223991E
add r0, r5, #0
@@ -24799,7 +24799,7 @@ _022399A0:
_022399A2:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r4
ble _022399C2
add r0, r5, #0
@@ -25529,7 +25529,7 @@ _02239F82:
beq _02239FB0
bl FUN_0201B9EC
add r1, r4, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0
ldr r0, [r0, r1]
@@ -25721,7 +25721,7 @@ MOD11_0223A0D8: ; 0x0223A0D8
bne _0223A126
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp]
cmp r1, r0
bge _0223A126
@@ -26840,7 +26840,7 @@ _0223A96C:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
_0223A980:
ldr r0, [sp, #0x1c]
@@ -26850,7 +26850,7 @@ _0223A980:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
_0223A994:
ldr r0, [r4]
@@ -26870,7 +26870,7 @@ _0223A994:
mov r0, #0xaa
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
b _0223A9D0
_0223A9C2:
@@ -26878,7 +26878,7 @@ _0223A9C2:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp, #0x34]
_0223A9D0:
mov r1, #2
@@ -28775,7 +28775,7 @@ _0223B916:
bl FUN_0201D658
str r0, [r4, #0x54]
add r0, sp, #0xd0
- bl FUN_021EEF0C
+ bl MOD16_021EEF0C
str r0, [r4, #0x50]
mov r0, #0xd
add sp, #0x158
@@ -28783,7 +28783,7 @@ _0223B916:
pop {r3, r4, r5, r6, r7, pc}
_0223B990:
ldr r0, [r4, #0x50]
- bl FUN_021EEF84
+ bl MOD16_021EEF84
cmp r0, #0
beq _0223BA4C
ldr r0, _0223BBE0 ; =0x021C48B8
@@ -28818,12 +28818,12 @@ _0223B9BC:
bl FUN_02003210
ldr r0, [r4, #0x50]
mov r1, #0
- bl FUN_021EEF9C
+ bl MOD05_021EEF9C
add sp, #0x158
pop {r3, r4, r5, r6, r7, pc}
_0223B9E4:
ldr r0, [r4, #0x50]
- bl FUN_021EEF98
+ bl MOD16_021EEF98
add r5, r0, #0
mov r1, #0
mov r2, #4
@@ -28843,7 +28843,7 @@ _0223B9E4:
pop {r3, r4, r5, r6, r7, pc}
_0223BA12:
ldr r0, [r4, #0x50]
- bl FUN_021EEF68
+ bl MOD05_021EEF68
ldr r0, [r4, #0x54]
bl FUN_0201D674
ldr r0, [r4]
@@ -29543,7 +29543,7 @@ _0223BFEE:
add r0, r2, #0
ldr r2, _0223C208 ; =0x0225DCF1
ldrb r1, [r2, r1]
- blx _u32_div_f
+ bl _u32_div_f
str r0, [sp]
b _0223C03A
_0223C026:
@@ -29697,7 +29697,7 @@ _0223C12E:
add r0, r1, #0
mul r0, r5
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _0223C218 ; =0x00002D8C
add r2, r4, r6
ldr r1, [r2, r1]
@@ -29706,7 +29706,7 @@ _0223C12E:
mul r1, r0
add r0, r1, #0
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #0
ldr r0, _0223C21C ; =0x00002DAC
add r2, r4, r6
@@ -29722,7 +29722,7 @@ _0223C170:
mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r1, r0, #0
_0223C182:
cmp r1, #0xff
@@ -29735,7 +29735,7 @@ _0223C18A:
strh r2, [r0]
mov r0, #0xff
lsl r0, r0, #0x10
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, _0223C224 ; =0x040002B8
add r2, r1, #0
str r0, [r1]
@@ -29772,7 +29772,7 @@ _0223C1CC:
ldr r1, _0223C228 ; =0x040002B4
ldr r0, _0223C22C ; =0x000FFFF0
ldr r1, [r1]
- blx _u32_div_f
+ bl _u32_div_f
add r6, r0, #0
mov r5, #0
_0223C1E0:
@@ -31753,7 +31753,7 @@ MOD11_0223D1DC: ; 0x0223D1DC
ldr r2, _0223D22C ; =0x0000314C
mov r0, #0
add r1, r4, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r0, r4, #0
bl MOD11_02245494
add r0, r5, #0
@@ -31766,7 +31766,7 @@ MOD11_0223D1DC: ; 0x0223D1DC
add r0, r5, #0
add r1, r4, #0
add r3, r2, #0
- bl FUN_021EFBF4
+ bl MOD16_021EFBF4
_0223D216:
ldr r0, _0223D230 ; =0x000003DE
add r0, r4, r0
@@ -36663,7 +36663,7 @@ MOD11_0223F770: ; 0x0223F770
str r0, [r4, #0xc]
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x4e
lsl r0, r0, #2
str r1, [r4, r0]
@@ -36709,7 +36709,7 @@ MOD11_0223F7CC: ; 0x0223F7CC
str r0, [r4, #0xc]
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0x4e
lsl r0, r0, #2
str r1, [r4, r0]
@@ -37667,7 +37667,7 @@ _0223FF42:
beq _0223FF9E
bl FUN_0201B9EC
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
beq _0223FF82
ldr r0, [sp, #0x1c]
@@ -38595,7 +38595,7 @@ _02240688:
ldr r2, _02240880 ; =0x0225E179
ldrb r1, [r2, r1]
mul r0, r4
- blx _u32_div_f
+ bl _u32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, r5, #0
@@ -38606,7 +38606,7 @@ _02240688:
mov r0, #0x82
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022406B6:
@@ -38644,7 +38644,7 @@ _022406B6:
mov r0, #0x50
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240708:
@@ -38664,7 +38664,7 @@ _02240708:
mov r0, #0x50
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240732:
@@ -38678,7 +38678,7 @@ _02240732:
mov r0, #6
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224074E:
@@ -38693,7 +38693,7 @@ _0224074E:
mov r0, #0x50
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224076E:
@@ -38713,7 +38713,7 @@ _0224076E:
mov r0, #0x32
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240798:
@@ -38730,7 +38730,7 @@ _02240798:
mov r1, #0x64
sub r0, r1, r0
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022407BE:
@@ -38748,7 +38748,7 @@ _022407BE:
add r0, #0x64
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_022407E6:
@@ -38763,7 +38763,7 @@ _022407E6:
add r0, r4, #0
mul r0, r6
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240806:
@@ -38781,7 +38781,7 @@ _02240806:
mov r0, #0x78
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224082A:
@@ -38795,13 +38795,13 @@ _0224082A:
mov r0, #0xa
mul r0, r4
mov r1, #6
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_02240846:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, r1, #1
cmp r0, r4
ble _02240860
@@ -39876,7 +39876,7 @@ _0224106A:
bne _022410A4
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [sp]
cmp r1, r0
bge _022410A4
@@ -42997,7 +42997,7 @@ MOD11_02242870: ; 0x02242870
_022428B8:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r6
bge _0224290A
ldr r0, _02242918 ; =0x00003044
@@ -46522,7 +46522,7 @@ _02244356:
mul r0, r2
ldr r2, _0224456C ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r6, r0, #0
ldr r0, [sp, #0x14]
lsl r1, r7, #1
@@ -46534,7 +46534,7 @@ _02244356:
mul r0, r2
ldr r2, _0224456C ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
mov r0, #0xd
str r0, [sp]
@@ -46630,7 +46630,7 @@ _0224442E:
mov r0, #0xf
mul r0, r6
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r6, r0, #0
_02244440:
ldr r0, [sp, #0x58]
@@ -46658,7 +46658,7 @@ _02244456:
mov r0, #0xf
mul r0, r6
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r6, r0, #0
b _02244488
_02244478:
@@ -46721,14 +46721,14 @@ _022444DE:
bne _0224451C
ldr r1, [sp, #0x54]
mov r0, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
ldr r0, [sp, #8]
lsl r0, r0, #1
add r2, r5, r0
ldr r0, _02244584 ; =0x0000310C
ldrh r0, [r2, r0]
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _0224451C
mov r0, #1
@@ -46806,7 +46806,7 @@ _02244594:
mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r4, r0, #0
_022445A6:
ldr r0, [sp, #0x50]
@@ -46834,7 +46834,7 @@ _022445BC:
mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _u32_div_f
+ bl _u32_div_f
add r4, r0, #0
b _022445EE
_022445DE:
@@ -46897,14 +46897,14 @@ _02244644:
bne _02244682
ldr r1, [sp, #0x4c]
mov r0, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
ldr r0, [sp, #0xc]
lsl r0, r0, #1
add r2, r5, r0
ldr r0, _022448A0 ; =0x0000310C
ldrh r0, [r2, r0]
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _02244682
mov r0, #1
@@ -47517,7 +47517,7 @@ _02244AF4:
_02244AFC:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r6
bge _02244B16
ldr r1, _02244C1C ; =0x0000213C
@@ -47586,7 +47586,7 @@ _02244B7C:
_02244B84:
bl FUN_0201B9EC
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r7
bge _02244C00
ldr r2, _02244C04 ; =0x00002174
@@ -48866,7 +48866,7 @@ _02245558:
mov r0, #0
add r1, r6, #0
mov r2, #0x1c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
add r1, r5, r4
ldr r0, _02245584 ; =0x000021A4
add r4, r4, #1
@@ -49765,11 +49765,11 @@ _02245C7A:
mov r0, #0
add r1, r7, #0
mov r2, #0x40
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0
add r1, r6, #0
mov r2, #4
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, _02245D24 ; =0x00002DB0
ldr r1, [r4, r0]
ldr r0, [sp, #8]
@@ -50618,7 +50618,7 @@ _02246346:
mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x50]
_02246354:
add r0, r5, #0
@@ -50866,7 +50866,7 @@ _02246532:
str r0, [sp, #0x1c]
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x50]
_0224654A:
ldr r0, [sp, #0x54]
@@ -51718,7 +51718,7 @@ MOD11_02246B58: ; 0x02246B58
blo _02246B76
bl FUN_0201B9EC
mov r1, #0x70
- blx _u32_div_f
+ bl _u32_div_f
add r6, r1, #0
mov r0, #0
_02246B76:
@@ -51758,7 +51758,7 @@ _02246BA8:
ldrb r0, [r4, #2]
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
_02246BC2:
cmp r6, r7
@@ -51768,7 +51768,7 @@ _02246BC2:
ldrb r0, [r4, #2]
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #0
_02246BD6:
add r4, r4, #3
@@ -52481,7 +52481,7 @@ _0224711C:
cmp r2, r1
bhs _02247164
lsl r0, r2, #7
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, _0224718C ; =0x0000311E
ldrb r2, [r5, r1]
mov r1, #0x1e
@@ -53156,7 +53156,7 @@ _02247616:
beq _02247696
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02247696
ldr r0, [sp, #4]
@@ -53237,7 +53237,7 @@ MOD11_022476C0: ; 0x022476C0
_022476CC:
mov r4, #1
_022476CE:
- blx _s32_div_f
+ bl _s32_div_f
cmp r0, #0
bne _022476D8
add r0, r4, #0
@@ -53740,7 +53740,7 @@ _02247A56:
ldr r0, _02247D6C ; =0x0225E284
ldrb r0, [r0, r2]
mul r0, r3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x78]
add r0, r1, r0
str r0, [sp, #0x78]
@@ -53755,7 +53755,7 @@ _02247A56:
ldr r0, _02247D6C ; =0x0225E284
ldrb r0, [r0, r2]
mul r0, r3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x74]
add r0, r1, r0
str r0, [sp, #0x74]
@@ -54211,7 +54211,7 @@ _02247E08:
add r6, r0, #0
bl FUN_0201B9EC
add r1, r6, #0
- blx _s32_div_f
+ bl _s32_div_f
mov r0, #0xc0
add r2, r5, #0
mul r2, r0
@@ -54974,7 +54974,7 @@ _022483C6:
beq _022483E6
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
blt _022483E8
_022483E6:
@@ -55214,12 +55214,12 @@ _0224859A:
beq _02248650
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02248650
bl FUN_0201B9EC
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
beq _022485D0
cmp r1, #1
@@ -55322,7 +55322,7 @@ _02248688:
beq _02248770
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02248770
add r0, r5, #0
@@ -55396,7 +55396,7 @@ _02248712:
beq _02248770
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _02248770
add r0, r5, #0
@@ -55482,7 +55482,7 @@ _022487AC:
beq _0224887A
bl FUN_0201B9EC
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #3
bge _0224887A
add r0, r5, #0
@@ -56527,7 +56527,7 @@ _02248F98:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56561,7 +56561,7 @@ _02248FDC:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56599,7 +56599,7 @@ _02249024:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56634,7 +56634,7 @@ _0224906A:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56669,7 +56669,7 @@ _022490B0:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56704,7 +56704,7 @@ _022490F6:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56740,7 +56740,7 @@ _0224913A:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56765,7 +56765,7 @@ _02249168:
_02249172:
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
add r0, r5, r1
ldrsb r0, [r0, r6]
cmp r0, #0xc
@@ -56833,7 +56833,7 @@ _022491EA:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -56859,7 +56859,7 @@ _0224921E:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57417,7 +57417,7 @@ _0224965C:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57444,7 +57444,7 @@ _02249692:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57654,7 +57654,7 @@ _02249838:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57689,7 +57689,7 @@ _0224987E:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57725,7 +57725,7 @@ _022498C6:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57761,7 +57761,7 @@ _0224990E:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57800,7 +57800,7 @@ _02249958:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57836,7 +57836,7 @@ _022499A0:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57870,7 +57870,7 @@ _022499E4:
add r1, r4, r1
ldr r0, [r1, r0]
add r1, r7, #0
- blx _u32_div_f
+ bl _u32_div_f
ldr r1, [sp, #0x14]
ldr r1, [r1, r5]
cmp r1, r0
@@ -57894,7 +57894,7 @@ _02249A12:
_02249A1A:
bl FUN_0201B9EC
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
add r0, r5, r1
ldrsb r0, [r0, r7]
cmp r0, #0xc
@@ -59203,7 +59203,7 @@ _0224A3F2:
_0224A3FC:
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [r4, #0x64]
add r2, r0, #0
mul r2, r6
@@ -60053,7 +60053,7 @@ _0224AA5A:
_0224AA64:
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
ldr r0, [r4, #0x6c]
add r2, r0, #0
mul r2, r6
@@ -61458,7 +61458,7 @@ _0224B564:
mov r1, #0xa
ldr r0, [r5, r0]
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
add r0, sp, #0x90
@@ -61489,7 +61489,7 @@ _0224B594:
mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B5B2:
@@ -61503,7 +61503,7 @@ _0224B5B2:
mov r0, #0xf
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B5CE:
@@ -61561,7 +61561,7 @@ _0224B620:
mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
b _0224B648
@@ -61578,7 +61578,7 @@ _0224B648:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -61590,7 +61590,7 @@ _0224B660:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61613,7 +61613,7 @@ _0224B678:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61636,7 +61636,7 @@ _0224B6A6:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
@@ -61727,7 +61727,7 @@ _0224B774:
mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B78A:
@@ -61748,7 +61748,7 @@ _0224B798:
mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B7B2:
@@ -61762,7 +61762,7 @@ _0224B7B2:
mov r1, #0x64
add r0, #0x64
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B7CE:
@@ -61777,7 +61777,7 @@ _0224B7CE:
add r0, #0x64
str r0, [sp, #0x2c]
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B7EC:
@@ -61802,7 +61802,7 @@ _0224B808:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -61816,7 +61816,7 @@ _0224B81E:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -61835,7 +61835,7 @@ _0224B83A:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x78]
@@ -61855,7 +61855,7 @@ _0224B862:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61875,7 +61875,7 @@ _0224B88C:
mov r0, #0x96
mul r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -61910,14 +61910,14 @@ _0224B8E6:
bne _0224B90A
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B90A
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B90A:
@@ -61927,14 +61927,14 @@ _0224B90A:
bne _0224B92E
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B92E
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B92E:
@@ -61944,14 +61944,14 @@ _0224B92E:
bne _0224B952
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B952
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B952:
@@ -61961,14 +61961,14 @@ _0224B952:
bne _0224B976
ldr r0, [sp, #0x4c]
mov r1, #3
- blx _s32_div_f
+ bl _s32_div_f
ldr r1, [sp, #0x50]
cmp r1, r0
bgt _0224B976
mov r0, #0x96
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B976:
@@ -61996,7 +61996,7 @@ _0224B98E:
mov r0, #0x7d
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224B9B0:
@@ -62129,7 +62129,7 @@ _0224BA5C:
mov r0, #0x7d
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224BAAA:
@@ -62148,7 +62148,7 @@ _0224BAAA:
mov r0, #0x4b
mul r0, r4
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
_0224BAD0:
@@ -62164,7 +62164,7 @@ _0224BAD4:
mov r0, #0xc
mul r0, r4
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r4, r0, #0x10
b _0224BAF8
@@ -62203,7 +62203,7 @@ _0224BAF8:
mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x74]
@@ -62223,7 +62223,7 @@ _0224BB54:
mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
@@ -62244,7 +62244,7 @@ _0224BB66:
mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x7c]
@@ -62270,7 +62270,7 @@ _0224BB92:
mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
@@ -62303,7 +62303,7 @@ _0224BBE0:
mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BC24
_0224BC08:
@@ -62319,7 +62319,7 @@ _0224BC0E:
mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BC24:
ldr r0, [sp, #0x84]
@@ -62329,7 +62329,7 @@ _0224BC24:
str r1, [sp, #0x84]
lsl r0, r0, #1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #2
ldr r0, [sp, #0x84]
mul r1, r0
@@ -62347,7 +62347,7 @@ _0224BC24:
mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x78]
b _0224BC76
_0224BC60:
@@ -62359,14 +62359,14 @@ _0224BC60:
mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x78]
_0224BC76:
ldr r0, [sp, #0x84]
ldr r1, [sp, #0x78]
- blx _s32_div_f
+ bl _s32_div_f
mov r1, #0x32
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
ldr r0, [sp, #0x48]
mov r1, #0x10
@@ -62406,7 +62406,7 @@ _0224BCB2:
ldr r0, [sp, #0x84]
mov r1, #3
lsl r0, r0, #1
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BDC8
_0224BCD6:
@@ -62432,7 +62432,7 @@ _0224BCE2:
mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BD24
_0224BD08:
@@ -62448,7 +62448,7 @@ _0224BD0E:
mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BD24:
ldr r0, [sp, #0x84]
@@ -62458,7 +62458,7 @@ _0224BD24:
str r1, [sp, #0x84]
lsl r0, r0, #1
mov r1, #5
- blx _s32_div_f
+ bl _s32_div_f
add r1, r0, #2
ldr r0, [sp, #0x84]
mul r1, r0
@@ -62476,7 +62476,7 @@ _0224BD24:
mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x10]
b _0224BD76
_0224BD60:
@@ -62488,14 +62488,14 @@ _0224BD60:
mul r0, r2
ldr r2, _0224BDE8 ; =0x0225E285
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x10]
_0224BD76:
ldr r0, [sp, #0x84]
ldr r1, [sp, #0x10]
- blx _s32_div_f
+ bl _s32_div_f
mov r1, #0x32
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
ldr r0, [sp, #0xc]
mov r1, #2
@@ -62520,7 +62520,7 @@ _0224BD76:
ldr r0, [sp, #0x84]
mov r1, #3
lsl r0, r0, #1
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BDC8
_0224BDBE:
@@ -62628,7 +62628,7 @@ _0224BE8C:
mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BE9A:
ldr r1, _0224BF0C ; =0x000080CF
@@ -62658,7 +62658,7 @@ _0224BEC4:
mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
b _0224BEDE
_0224BED4:
@@ -62681,7 +62681,7 @@ _0224BEDE:
mov r0, #0xf
mul r0, r1
mov r1, #0xa
- blx _s32_div_f
+ bl _s32_div_f
str r0, [sp, #0x84]
_0224BF00:
ldr r0, [sp, #0x84]
@@ -62707,7 +62707,7 @@ MOD11_0224BF10: ; 0x0224BF10
mov r1, #0x64
sub r0, r1, r0
mul r0, r4
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
bne _0224BF36
mov r4, #1
@@ -62812,7 +62812,7 @@ _0224BFE0:
bl FUN_0201B9EC
ldr r1, _0224C040 ; =0x0225E244
ldrb r1, [r1, r5]
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, #0
bne _0224C026
ldr r1, [sp]
@@ -64223,7 +64223,7 @@ _0224C9A6:
mov r0, #0xf
mul r0, r1
mov r1, #0x3f
- blx _s32_div_f
+ bl _s32_div_f
add r5, r0, #1
cmp r5, #9
blt _0224CA54
@@ -64295,7 +64295,7 @@ MOD11_0224CA64: ; 0x0224CA64
mov r0, #0
add r1, r4, #0
lsl r2, r2, #2
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
ldrb r1, [r5]
lsl r0, r0, #2
@@ -66824,7 +66824,7 @@ MOD11_0224DE50: ; 0x0224DE50
mov r0, #0
add r1, r4, #0
mov r2, #1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
str r7, [r4, #0xc]
lsl r0, r0, #2
@@ -66918,7 +66918,7 @@ MOD11_0224DF18: ; 0x0224DF18
mov r0, #0
add r1, r4, #0
mov r2, #1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
str r6, [r4, #0xc]
lsl r0, r0, #2
@@ -66957,7 +66957,7 @@ MOD11_0224DF60: ; 0x0224DF60
mov r0, #0
add r1, r4, #0
mov r2, #0x3c
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r7, #0
strb r7, [r4, #0xa]
strb r7, [r4, #0xb]
@@ -67569,7 +67569,7 @@ _0224E422:
add r0, r4, #0
mov r1, #0
mov r2, #1
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r7, [r4, #0xc]
add r0, r4, #0
ldrb r1, [r5]
@@ -67637,7 +67637,7 @@ _0224E4AE:
add r0, r4, #0
mov r1, #0
mov r2, #1
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r7, [r4, #0xc]
add r0, r4, #0
ldrb r1, [r5]
@@ -68275,7 +68275,7 @@ MOD11_0224E9C0: ; 0x0224E9C0
mov r0, #0
add r1, r4, #0
mov r2, #1
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
mov r0, #0x65
str r7, [r4, #0xc]
lsl r0, r0, #2
@@ -69264,16 +69264,16 @@ _0224F1AA:
strb r0, [r4, #0x12]
pop {r3, r4, r5, r6, pc}
_0224F1B2:
- bl FUN_02212384
+ bl MOD08_02212384
add r0, r5, #0
- bl FUN_022123A0
+ bl MOD08_022123A0
cmp r0, #0
beq _0224F1C2
_0224F1C0:
b _0224F2D8
_0224F1C2:
add r0, r5, #0
- bl FUN_022123B0
+ bl MOD08_022123B0
mov r0, #0xff
add sp, #0x6c
strb r0, [r4, #0x12]
@@ -69929,7 +69929,7 @@ _0224F6F6:
cmp r0, #0
beq _0224F772
mov r0, #5
- bl FUN_02211F5C
+ bl MOD08_02211F5C
str r0, [r4, #0x24]
add r0, r4, #0
add r0, #0x81
@@ -69962,15 +69962,15 @@ _0224F772:
pop {r4, r5, pc}
_0224F77C:
ldr r0, [r4, #0x24]
- bl FUN_02212384
+ bl MOD08_02212384
ldr r0, [r4, #0x24]
- bl FUN_022123A0
+ bl MOD08_022123A0
cmp r0, #0
bne _0224F7C0
ldr r0, [r4, #0x24]
- bl FUN_022123B0
+ bl MOD08_022123B0
ldr r0, [r4, #0x24]
- bl FUN_02212024
+ bl MOD08_02212024
mov r0, #0xff
add r4, #0x83
add sp, #0x9c
@@ -70142,7 +70142,7 @@ _0224F84C:
bl FUN_02007558
ldr r0, [r4]
mov r1, #5
- bl FUN_0221590C
+ bl MOD08_0221590C
str r0, [r4, #0x10]
add r0, r4, #0
add r0, #0x83
@@ -70211,7 +70211,7 @@ _0224F980:
b _0224FD86
_0224F982:
ldr r0, [r4, #0x10]
- bl FUN_02215918
+ bl MOD08_02215918
add r0, r4, #0
add r0, #0x8e
ldrh r0, [r0]
@@ -70576,13 +70576,13 @@ _0224FC92:
strb r0, [r4]
pop {r3, r4, r5, r6, pc}
_0224FC9C:
- bl FUN_02212384
+ bl MOD08_02212384
add r0, r5, #0
- bl FUN_022123A0
+ bl MOD08_022123A0
cmp r0, #0
bne _0224FD86
add r0, r5, #0
- bl FUN_022123B0
+ bl MOD08_022123B0
add r0, r4, #0
add r0, #0x83
ldrb r0, [r0]
@@ -70801,16 +70801,16 @@ _0224FE10:
strb r0, [r4]
pop {r4, r5, r6, pc}
_0224FE6C:
- bl FUN_02212384
+ bl MOD08_02212384
add r0, r5, #0
- bl FUN_022123A0
+ bl MOD08_022123A0
cmp r0, #0
beq _0224FE7C
_0224FE7A:
b _0224FFDE
_0224FE7C:
add r0, r5, #0
- bl FUN_022123B0
+ bl MOD08_022123B0
add r0, r4, #0
add r0, #0x6b
ldrb r0, [r0]
@@ -72875,7 +72875,7 @@ MOD11_02250F44: ; 0x02250F44
ldrb r1, [r4, #9]
add r5, r0, #0
ldr r0, [r4]
- bl FUN_021F45A4
+ bl MOD16_021F45A4
add r2, r0, #0
ldrb r1, [r4, #9]
ldr r0, [r4]
@@ -72931,11 +72931,11 @@ MOD11_02250F94: ; 0x02250F94
add r0, r2, #0
ldr r2, _02251010 ; =0x0225E831
ldrb r1, [r2, r1]
- blx _s32_div_f
+ bl _s32_div_f
add r5, r0, #0
bl FUN_0201B9EC
mov r1, #0xff
- blx _s32_div_f
+ bl _s32_div_f
cmp r1, r5
ldr r0, [r4]
bgt _02250FEA
@@ -73200,7 +73200,7 @@ _022511FA:
_02251206:
ldrb r1, [r6, #0x1d]
ldr r0, [r6]
- bl FUN_021EFD8C
+ bl MOD16_021EFD8C
cmp r0, #0xff
beq _0225128C
add r4, r0, #1
@@ -73224,7 +73224,7 @@ _0225122E:
blt _0225121C
bl FUN_0201B9EC
add r1, r7, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r1, #2
add r0, sp, #0x10
ldr r4, [r0, r1]
@@ -73651,7 +73651,7 @@ _02251540:
ldr r0, [r4, #4]
str r1, [r0, #0x18]
ldr r0, [r4, #4]
- bl FUN_022186F0
+ bl MOD09_022186F0
add sp, #0x1fc
mov r0, #3
add sp, #0x14
@@ -73663,7 +73663,7 @@ _022515C2:
add r0, #0x25
strb r1, [r0]
ldr r0, [r4, #4]
- bl FUN_022186F0
+ bl MOD09_022186F0
ldrb r0, [r4, #0xe]
add r0, r0, #1
strb r0, [r4, #0xe]
@@ -73872,7 +73872,7 @@ _0225175C:
str r1, [r0, #0x1c]
ldr r0, [r4, #8]
ldr r0, [r0, #4]
- bl FUN_02211E60
+ bl MOD07_02211E60
ldrb r0, [r4, #0xe]
add sp, #0x1fc
add sp, #0x14
@@ -74576,7 +74576,7 @@ _02251CEC:
mov r1, #0
mov r2, #1
add r5, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r4]
add r1, r6, #0
bl MOD11_02230260
@@ -74908,15 +74908,15 @@ _02251F76:
_02251FA2:
ldr r0, [r4]
bl MOD11_02230070
- bl FUN_02212384
+ bl MOD08_02212384
ldr r0, [r4]
bl MOD11_02230070
- bl FUN_022123A0
+ bl MOD08_022123A0
cmp r0, #0
bne _02251FEA
ldr r0, [r4]
bl MOD11_02230070
- bl FUN_022123B0
+ bl MOD08_022123B0
ldrb r0, [r4, #0xe]
add sp, #0x1fc
add sp, #0x14
@@ -75381,7 +75381,7 @@ _0225239C:
strb r1, [r0, #0x15]
_022523A2:
ldr r0, [r4, #4]
- bl FUN_02211E60
+ bl MOD07_02211E60
ldrb r0, [r4, #0xa]
add sp, #0x24
add r0, r0, #1
@@ -75499,13 +75499,13 @@ _02252490:
_0225249A:
ldr r0, [r5]
add r1, r6, #0
- bl FUN_021F4A30
+ bl MOD16_021F4A30
add r4, r0, #0
cmp r4, #6
bne _022524FE
ldr r0, [r5]
add r1, r6, #0
- bl FUN_021F4698
+ bl MOD16_021F4698
add r4, r0, #0
cmp r4, #6
bne _022524FE
@@ -76114,13 +76114,13 @@ _02252974:
pop {r3, r4, r5, pc}
_02252996:
ldr r0, [r4, #0xc]
- bl FUN_02212384
+ bl MOD08_02212384
ldr r0, [r4, #0xc]
- bl FUN_022123A0
+ bl MOD08_022123A0
cmp r0, #0
bne _022529B8
ldr r0, [r4, #0xc]
- bl FUN_022123B0
+ bl MOD08_022123B0
add r0, r4, #0
add r0, #0x6a
ldrb r0, [r0]
@@ -76437,13 +76437,13 @@ _02252BBA:
strb r0, [r4]
pop {r4, r5, r6, pc}
_02252C16:
- bl FUN_02212384
+ bl MOD08_02212384
add r0, r5, #0
- bl FUN_022123A0
+ bl MOD08_022123A0
cmp r0, #0
bne _02252C8A
add r0, r5, #0
- bl FUN_022123B0
+ bl MOD08_022123B0
add r0, r4, #0
add r0, #0x66
ldrb r0, [r0]
@@ -76862,13 +76862,13 @@ _02252F18:
strb r0, [r4]
pop {r4, r5, r6, pc}
_02252F74:
- bl FUN_02212384
+ bl MOD08_02212384
add r0, r5, #0
- bl FUN_022123A0
+ bl MOD08_022123A0
cmp r0, #0
bne _02252FB6
add r0, r5, #0
- bl FUN_022123B0
+ bl MOD08_022123B0
add r0, r4, #0
add r0, #0x62
ldrb r0, [r0]
@@ -77140,7 +77140,7 @@ _0225319A:
bl MOD11_02231244
add r1, r7, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [r4]
bl MOD11_0222FF74
cmp r0, #0x4a
@@ -77153,7 +77153,7 @@ _0225319A:
bl MOD11_02231250
add r1, r7, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _0225323E
_022531DC:
ldr r0, [r4]
@@ -77168,7 +77168,7 @@ _022531DC:
bl MOD11_02231250
add r1, r7, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _0225323E
_02253200:
ldr r0, [r4]
@@ -77184,7 +77184,7 @@ _02253200:
bl MOD11_02231250
add r1, r7, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _0225323E
_02253226:
add r0, r5, #0
@@ -77195,7 +77195,7 @@ _02253226:
bl MOD11_02231250
add r1, r7, #0
mov r2, #0x80
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_0225323E:
mov r0, #0x10
str r0, [sp]
@@ -77292,7 +77292,7 @@ _022532F6:
bl MOD11_02231244
add r1, r6, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [r4]
bl MOD11_0222FF74
cmp r0, #0x4a
@@ -77305,7 +77305,7 @@ _022532F6:
bl MOD11_02231250
add r1, r6, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02253394
_02253332:
ldr r0, [r4]
@@ -77320,7 +77320,7 @@ _02253332:
bl MOD11_02231250
add r1, r6, #0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02253394
_02253356:
ldr r0, [r4]
@@ -77336,7 +77336,7 @@ _02253356:
bl MOD11_02231250
add r1, r6, #0
mov r2, #0xa0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02253394
_0225337C:
add r0, r5, #0
@@ -77347,7 +77347,7 @@ _0225337C:
bl MOD11_02231250
add r1, r6, #0
mov r2, #0x80
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_02253394:
mov r3, #0
str r3, [sp]
@@ -77477,7 +77477,7 @@ _02253440:
add r1, #0x32
strb r0, [r1]
ldr r0, [r4, #4]
- bl FUN_02211E60
+ bl MOD07_02211E60
ldrb r0, [r4, #0xa]
add sp, #0xc
add r0, r0, #1
@@ -77782,7 +77782,7 @@ _022536EE:
ldrb r2, [r4, #0xd]
ldr r0, [r4]
mov r1, #5
- bl FUN_022156C0
+ bl MOD08_022156C0
ldr r1, [r4, #4]
add r1, #0x8c
str r0, [r1]
@@ -77817,7 +77817,7 @@ _02253734:
ldr r0, [r4, #4]
add r0, #0x8c
ldr r0, [r0]
- bl FUN_02215988
+ bl MOD08_02215988
cmp r0, #3
bne _0225374E
ldrb r0, [r4, #0xe]
@@ -77831,7 +77831,7 @@ _0225374E:
ldrb r1, [r4, #0xd]
add r0, #0x8c
ldr r0, [r0]
- bl FUN_0221594C
+ bl MOD08_0221594C
ldr r0, [r4, #4]
mov r1, #0
add r0, #0x8c
@@ -79584,7 +79584,7 @@ _02254452:
ldr r1, [sp, #0xc]
lsr r2, r2, #0x10
add r3, sp, #0x1c
- bl FUN_02212048
+ bl MOD08_02212048
add sp, #0xac
pop {r4, r5, r6, r7, pc}
@@ -79823,7 +79823,7 @@ _022546D4:
asr r1, r0, #0x1f
lsl r2, r2, #0xa
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
add r2, r1, #0
mov r1, #4
add r5, r0, #0
@@ -81204,7 +81204,7 @@ MOD11_02255188: ; 0x02255188
add r1, sp, #0x28
mov r2, #0x2c
add r6, r3, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [sp, #4]
bl MOD11_0222FF78
ldr r1, [sp, #0xc]
@@ -82911,7 +82911,7 @@ MOD11_02255EAC: ; 0x02255EAC
mov r0, #0x64
mul r0, r1
add r1, r2, #0
- blx _s32_div_f
+ bl _s32_div_f
add r1, sp, #4
strh r0, [r1, #2]
mov r0, #4
@@ -82952,7 +82952,7 @@ _02255F12:
mul r0, r1
add r1, r2, #4
ldr r1, [r6, r1]
- blx _u32_div_f
+ bl _u32_div_f
add r1, sp, #4
strh r0, [r1, #2]
_02255F24:
@@ -84395,7 +84395,7 @@ MOD11_022569DC: ; 0x022569DC
add r1, r5, #0
mov r2, #8
add r6, r3, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
ldr r0, [sp]
bl MOD11_0222FF74
add r4, r0, #0
@@ -85259,7 +85259,7 @@ _0225705C:
add r1, r1, r3
ldr r3, _0225713C ; =0x0225E9B2
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x45
bl MOD11_02257F60
add r1, r5, #0
@@ -85273,7 +85273,7 @@ _0225705C:
add r1, r1, r3
ldr r3, _02257144 ; =0x0225EA12
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, [r5, #0x28]
add r0, r5, #0
mov r2, #6
@@ -85295,7 +85295,7 @@ _022570E8:
add r1, r1, r3
ldr r3, _0225713C ; =0x0225E9B2
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x44
bl MOD11_02257F60
add r1, r5, #0
@@ -85309,7 +85309,7 @@ _022570E8:
add r1, r1, r3
ldr r3, _0225714C ; =0x0225E9E2
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r1, [r5, #0x28]
add r0, r5, #0
mov r2, #1
@@ -85908,7 +85908,7 @@ MOD11_022574F0: ; 0x022574F0
add r0, r6, #0
ldrh r2, [r2, r7]
add r1, r3, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r5, #0
add r0, #0x25
ldrb r0, [r0]
@@ -85923,7 +85923,7 @@ MOD11_022574F0: ; 0x022574F0
ldr r0, [sp, #0x20]
ldrh r2, [r2, r7]
add r1, r3, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r5, #0
add r0, #0x25
ldrb r0, [r0]
@@ -85940,7 +85940,7 @@ MOD11_022574F0: ; 0x022574F0
add r1, r1, r3
ldr r3, _02257648 ; =0x0225EC92
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r5, #0x25
ldrb r0, [r5]
ldr r4, [r4, #4]
@@ -85957,7 +85957,7 @@ MOD11_022574F0: ; 0x022574F0
ldr r3, _02257650 ; =0x0225EC96
add r1, r4, r1
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, sp, #0x24
bl FUN_02019178
ldr r0, [sp, #0x18]
@@ -86022,7 +86022,7 @@ _02257670:
ldrh r2, [r3, r2]
add r0, r0, r1
add r1, r7, #0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp]
ldr r1, _02257754 ; =0x0225EABC
add r0, #0x25
@@ -86039,7 +86039,7 @@ _02257670:
add r0, r0, r1
add r1, r7, #0
add r1, #0x40
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0
add r1, r2, #0
_022576D6:
@@ -86077,7 +86077,7 @@ _022576DA:
ldr r3, _02257750 ; =0x0225EABA
add r0, r7, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp]
ldr r3, _02257754 ; =0x0225EABC
add r0, #0x25
@@ -86095,7 +86095,7 @@ _022576DA:
ldr r3, _02257758 ; =0x0225EABE
add r0, #0x40
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r7, #0
bl FUN_02016A18
add sp, #8
@@ -86122,7 +86122,7 @@ MOD11_0225775C: ; 0x0225775C
add r0, r4, #0
mov r1, #0xff
mov r2, #0x60
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #4]
ldr r0, [r0, #0xc]
bl MOD11_022300BC
@@ -86153,7 +86153,7 @@ MOD11_0225775C: ; 0x0225775C
ldrh r2, [r3, r2]
add r0, r0, r1
add r1, r7, #0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp, #4]
ldr r1, _02257874 ; =0x0225EA2C
add r0, #0x25
@@ -86170,7 +86170,7 @@ MOD11_0225775C: ; 0x0225775C
add r0, r0, r1
add r1, r7, #0
add r1, #0x60
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0
add r1, r2, #0
_022577EE:
@@ -86208,7 +86208,7 @@ _022577F2:
ldr r3, _02257870 ; =0x0225EA2A
add r0, r7, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
ldr r0, [sp, #4]
ldr r3, _02257874 ; =0x0225EA2C
add r0, #0x25
@@ -86226,7 +86226,7 @@ _022577F2:
ldr r3, _02257878 ; =0x0225EA2E
add r0, #0x60
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
add r0, r7, #0
@@ -86250,7 +86250,7 @@ MOD11_0225787C: ; 0x0225787C
mov r1, #0xff
mov r2, #0x60
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0xc]
bl MOD11_022300B4
str r4, [sp]
@@ -86276,7 +86276,7 @@ MOD11_0225787C: ; 0x0225787C
ldr r3, _022578FC ; =0x0225EA5A
add r0, r4, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r5, #0x25
ldrb r0, [r5]
ldr r3, _02257900 ; =0x0225EA5C
@@ -86290,7 +86290,7 @@ MOD11_0225787C: ; 0x0225787C
ldr r3, _02257904 ; =0x0225EA5E
ldrh r2, [r3, r2]
add r0, r4, r0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
pop {r3, r4, r5, r6, r7, pc}
@@ -86310,7 +86310,7 @@ MOD11_02257908: ; 0x02257908
mov r1, #0xff
mov r2, #0x60
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [r5, #0xc]
bl MOD11_022300B4
str r4, [sp]
@@ -86335,7 +86335,7 @@ MOD11_02257908: ; 0x02257908
ldr r3, _02257964 ; =0x0225E9FA
add r0, r4, #0
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
pop {r3, r4, r5, pc}
@@ -86376,7 +86376,7 @@ _02257982:
ldr r3, _022579B4 ; =0x0225E9CA
add r1, r4, r1
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3, r4, r5, pc}
nop
_022579B0: .word 0x0225E9C8
@@ -86406,7 +86406,7 @@ MOD11_022579B8: ; 0x022579B8
ldr r3, _022579F4 ; =0x0225E99A
add r1, r4, r1
ldrh r2, [r3, r2]
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3, r4, r5, pc}
nop
_022579F0: .word 0x0225E998
@@ -86473,7 +86473,7 @@ _02257A26:
add r1, r1, r2
add r0, r5, #0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0xd
mov r0, #0x1a
lsl r2, r2, #6
@@ -86483,7 +86483,7 @@ _02257A26:
add r1, r1, r2
add r0, r5, r0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0xa
lsl r2, r2, #8
add r0, r5, #0
@@ -86492,7 +86492,7 @@ _02257A26:
add r1, r1, r2
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x1a
mov r1, #0xb
lsl r0, r0, #4
@@ -86503,7 +86503,7 @@ _02257A26:
add r1, r2, r1
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, sp, #0x18
bl FUN_02019178
add r0, r7, #0
@@ -86598,7 +86598,7 @@ _02257B1E:
add r1, r1, r2
add r0, r5, #0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #0x15
mov r0, #0x1a
lsl r2, r2, #6
@@ -86608,7 +86608,7 @@ _02257B1E:
add r1, r1, r2
add r0, r5, r0
mov r2, #0xc0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r2, #3
lsl r2, r2, #0xa
add r0, r5, #0
@@ -86617,7 +86617,7 @@ _02257B1E:
add r1, r1, r2
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #0x1a
mov r1, #0xd
lsl r0, r0, #4
@@ -86628,7 +86628,7 @@ _02257B1E:
add r1, r2, r1
add r0, #0xc0
mov r2, #0xe0
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, sp, #0x24
bl FUN_02019178
add r0, r6, #0
@@ -86671,8 +86671,8 @@ _02257C10:
_02257C22:
ldr r6, [r5, #0x40]
add r0, r6, #0
- blx _s32_div_f
- blx abs
+ bl _s32_div_f
+ bl abs
mov r1, #0xb
lsl r0, r0, #0x10
add r3, r5, #0
@@ -86793,7 +86793,7 @@ _02257CE6:
add r2, r3, r2
add r1, r1, r2
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02257D42
_02257D16:
ldrb r0, [r0, r4]
@@ -86816,7 +86816,7 @@ _02257D16:
add r1, r1, r3
add r1, r2, r1
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_02257D42:
add r0, r4, #1
lsl r0, r0, #0x18
@@ -86877,7 +86877,7 @@ _02257D9C:
add r0, r6, r0
add r1, r3, r1
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
b _02257DD0
_02257DBA:
ldrb r0, [r0, r4]
@@ -86889,7 +86889,7 @@ _02257DBA:
add r1, r1, r2
add r0, r6, r0
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_02257DD0:
add r0, r4, #1
lsl r0, r0, #0x18
@@ -86957,7 +86957,7 @@ _02257E3E:
bge _02257E7E
lsl r0, r0, #8
add r1, r2, #0
- blx _s32_div_f
+ bl _s32_div_f
cmp r6, #0
ldr r1, [r5]
bge _02257E62
@@ -87043,14 +87043,14 @@ _02257ECE:
add r0, r1, #0
mul r0, r2
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
lsr r0, r0, #8
b _02257EEC
_02257EE2:
add r0, r1, #0
mul r0, r2
add r1, r6, #0
- blx _u32_div_f
+ bl _u32_div_f
_02257EEC:
add r2, r0, #0
cmp r0, #0
@@ -87103,18 +87103,18 @@ _02257F38:
add r0, r7, #0
mul r0, r6
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
add r7, r0, #0
add r0, r4, #0
mul r0, r6
add r1, r5, #0
- blx _s32_div_f
+ bl _s32_div_f
lsl r1, r7, #0x18
lsl r0, r0, #0x18
asr r1, r1, #0x18
asr r0, r0, #0x18
sub r0, r1, r0
- blx abs
+ bl abs
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
@@ -87281,7 +87281,7 @@ MOD11_0225805C: ; 0x0225805C
mov r1, #0
mov r2, #0xc
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r2, #0xfa
str r5, [r4]
ldr r0, _0225808C ; =MOD11_02258090
@@ -87493,7 +87493,7 @@ _022581FC:
asr r1, r0, #0x1f
lsl r2, r2, #0xa
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
mov r2, #2
add r3, r0, #0
add r5, r1, #0
@@ -87722,7 +87722,7 @@ MOD11_022583D8: ; 0x022583D8
add r1, r5, #0
mov r2, #0x10
add r7, r3, #0
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
str r4, [r5, #4]
strb r6, [r5, #8]
strb r7, [r5, #9]
@@ -87748,7 +87748,7 @@ MOD11_0225840C: ; 0x0225840C
mov r0, #0
add r1, r4, #0
mov r2, #0x10
- blx MIi_CpuClearFast
+ bl MIi_CpuClearFast
pop {r4, pc}
.align 2, 0
@@ -87763,7 +87763,7 @@ MOD11_02258428: ; 0x02258428
mov r1, #0
lsl r2, r2, #8
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
mov r1, #0
ldr r0, _0225844C ; =0x0000069F
mvn r1, r1
@@ -87891,7 +87891,7 @@ _02258512:
ldr r0, [sp, #0x18]
add r2, r7, #0
add r0, #0xc
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
add r0, r5, #0
bl FUN_02016A18
add r4, r4, #1
@@ -87919,7 +87919,7 @@ _0225854E:
mov r2, #2
ldr r1, [r6, #0x58]
lsl r2, r2, #8
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r5, r6, #0
mov r7, #0x46
mov r4, #0
@@ -87932,7 +87932,7 @@ _02258592:
add r0, r5, r0
mov r1, #0xff
mov r2, #0x18
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r4, r4, #1
_022585A2:
cmp r4, #4
@@ -87981,7 +87981,7 @@ _022585DE:
ldr r1, [r6, #0x5c]
ldr r0, [r6, #0x58]
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
mov r0, #7
mov r1, #0xca
add r2, sp, #0x14
@@ -87992,7 +87992,7 @@ _022585DE:
ldr r1, [r6, #0x60]
ldr r0, [r0, #0xc]
mov r2, #0x20
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
add r0, r4, #0
bl FUN_02016A18
bl FUN_02002BE4
@@ -88226,7 +88226,7 @@ MOD11_02258820: ; 0x02258820
add r0, r3, #0
add r1, #0x18
mov r2, #0x22
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
_0225883A:
ldr r0, _0225893C ; =0x000006A2
mov r1, #0
@@ -88333,7 +88333,7 @@ _022588D0:
ldr r0, _02258950 ; =0x04001050
mov r1, #2
mov r3, #0x1b
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
add r0, r7, #0
bl MOD11_0225ACB0
ldr r0, [sp, #0x2c]
@@ -89077,7 +89077,7 @@ _02258F20:
add r0, r5, r0
mov r1, #0
mov r2, #4
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, _02258F54 ; =0x000006EC
ldr r0, [r5, r0]
bl MOD11_0225D648
@@ -89445,7 +89445,7 @@ MOD11_0225916C: ; 0x0225916C
add r4, r0, #0
mov r1, #0
mov r2, #0x14
- blx MI_CpuFill8
+ bl MI_CpuFill8
str r5, [r4]
ldr r0, _02259254 ; =0xFFFF9C64
strb r6, [r4, #0x12]
@@ -89458,7 +89458,7 @@ MOD11_0225916C: ; 0x0225916C
ldr r0, _02259258 ; =0x0000639C
sub r0, r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r4, #0xc]
mov r0, #0xa
ldrsh r1, [r4, r0]
@@ -89466,7 +89466,7 @@ MOD11_0225916C: ; 0x0225916C
lsl r0, r0, #4
sub r0, r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r4, #0xe]
ldr r0, _0225925C ; =0x0000070E
bl FUN_020054C8
@@ -91621,7 +91621,7 @@ MOD11_0225A428: ; 0x0225A428
add r1, r4, r1
asr r5, r1, #3
mov r1, #8
- blx FX_ModS32
+ bl FX_ModS32
cmp r0, #0
beq _0225A450
add r5, r5, #1
@@ -92109,7 +92109,7 @@ _0225A7CE:
ldr r0, [r0, #0x14]
ldr r1, [r1, #0x18]
ldr r2, [sp, #0xc]
- blx MIi_CpuCopy32
+ bl MIi_CpuCopy32
ldr r0, [sp, #0x44]
bl FUN_02016A18
_0225A814:
@@ -92426,7 +92426,7 @@ _0225AA24:
lsl r3, r3, #0x14
ldr r0, [r0, #0x18]
add r1, r3, r1
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_0225AA9E:
add r4, r4, #1
_0225AAA0:
@@ -92513,7 +92513,7 @@ MOD11_0225AB34: ; 0x0225AB34
mov r2, #5
mov r3, #1
str r4, [sp]
- bl FUN_02211E7C
+ bl MOD08_02211E7C
pop {r3, r4, r5, pc}
thumb_func_start MOD11_0225AB50
@@ -92821,7 +92821,7 @@ _0225AD90:
add r0, r4, r0
mov r1, #0
mov r2, #0x24
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r2, _0225ADAC ; =0x00000514
add r0, r5, #0
add r1, r4, #0
@@ -92845,7 +92845,7 @@ MOD11_0225ADB0: ; 0x0225ADB0
add r0, r4, r0
mov r2, #0x24
str r1, [r4, #8]
- blx MI_CpuFill8
+ bl MI_CpuFill8
_0225ADCE:
pop {r4, pc}
@@ -93706,13 +93706,13 @@ _0225B454:
lsl r0, r0, #2
sub r0, r0, r1
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r5, #0xc]
mov r0, #0xa
ldrsh r0, [r5, r0]
mov r1, #0x64
neg r0, r0
- blx _s32_div_f
+ bl _s32_div_f
strh r0, [r5, #0xe]
mov r0, #8
ldrsh r0, [r5, r0]
@@ -93829,7 +93829,7 @@ _0225B55A:
ldrsh r0, [r5, r0]
mov r1, #0x64
neg r0, r0
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
b _0225B5B6
_0225B586:
@@ -93852,7 +93852,7 @@ _0225B590:
mov r0, #8
ldrsh r0, [r5, r0]
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r4, r0, #0
add r4, #0xff
_0225B5B6:
@@ -93869,7 +93869,7 @@ _0225B5B6:
mov r0, #0xa
ldrsh r0, [r5, r0]
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
add r0, #0x90
cmp r4, #0
bge _0225B5E2
@@ -94210,7 +94210,7 @@ _0225B866:
add r0, #0x16
add r1, #0x16
mov r2, #0xa
- blx memcmp
+ bl memcmp
cmp r0, #0
bne _0225B8A8
ldr r0, [r5, #0x60]
@@ -94218,7 +94218,7 @@ _0225B866:
add r0, #0x16
add r1, r4, #0
mov r2, #0xa
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
pop {r3, r4, r5, r6, r7, pc}
_0225B888:
ldr r1, [r5, #0x60]
@@ -94226,7 +94226,7 @@ _0225B888:
add r0, #0x16
add r1, #0x16
mov r2, #0xa
- blx memcmp
+ bl memcmp
cmp r0, #0
bne _0225B8A8
ldr r0, [r5, #0x5c]
@@ -94234,7 +94234,7 @@ _0225B888:
add r0, #0x16
add r1, r4, #0
mov r2, #0xa
- blx MIi_CpuCopy16
+ bl MIi_CpuCopy16
_0225B8A8:
pop {r3, r4, r5, r6, r7, pc}
nop
@@ -94819,7 +94819,7 @@ _0225BD10:
ldr r0, _0225BDD8 ; =0x0225F6A0
add r1, sp, #8
mov r2, #6
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r0, r4, #0
mov r1, #2
mov r2, #3
@@ -95001,7 +95001,7 @@ MOD11_0225BE30: ; 0x0225BE30
str r0, [sp, #0x48]
ldr r0, _0225C13C ; =0x0225F690
add r1, sp, #0x50
- blx MI_CpuCopy8
+ bl MI_CpuCopy8
add r1, sp, #0x58
add r0, r6, #0
add r1, #2
@@ -96552,7 +96552,7 @@ MOD11_0225C9D4: ; 0x0225C9D4
mov r1, #0
lsl r2, r2, #6
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
add r0, r4, #0
pop {r4, pc}
.align 2, 0
@@ -96741,7 +96741,7 @@ _0225CB32:
add r0, r5, #0
mov r1, #0
mov r2, #0x1c
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r1, [sp, #0x18]
ldr r2, _0225CBA8 ; =0x0225FE48
add r0, r7, #0
@@ -96958,7 +96958,7 @@ _0225CCBC:
sub r0, r0, r3
str r0, [sp]
ldr r0, _0225CDA0 ; =0x04000050
- blx G2x_SetBlendAlpha_
+ bl G2x_SetBlendAlpha_
ldrb r0, [r4, #0x1a]
add r0, r0, #1
strb r0, [r4, #0x1a]
@@ -97076,7 +97076,7 @@ _0225CDD4:
add r0, r5, #0
mov r1, #0
mov r2, #0x30
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r0, [sp, #0x24]
ldr r1, [sp, #0x28]
ldr r2, _0225CEA4 ; =0x0225FE7C
@@ -98000,7 +98000,7 @@ _0225D496:
mov r1, #0
mov r2, #0x18
str r0, [sp]
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r5, [sp]
mov r4, #0
_0225D4CE:
@@ -98351,7 +98351,7 @@ _0225D74C:
mov r1, #0
mov r2, #0x20
add r4, r0, #0
- blx MI_CpuFill8
+ bl MI_CpuFill8
ldr r1, [sp]
add r0, r7, #0
add r2, sp, #4
@@ -98497,7 +98497,7 @@ _0225D886:
bne _0225D8DA
ldr r0, [r4, #0x10]
mov r1, #0x64
- blx _s32_div_f
+ bl _s32_div_f
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bl FUN_0201B93C
@@ -98505,7 +98505,7 @@ _0225D886:
asr r1, r0, #0x1f
lsl r2, r2, #0xc
mov r3, #0
- blx _ll_mul
+ bl _ll_mul
add r5, r1, #0
ldr r1, [r4, #8]
mov r2, #2
@@ -98632,6 +98632,20 @@ MOD11_0225D98C: ; 0x0225D98C
strb r1, [r0, #0x1e]
bx lr
- .section .data
+ .section .rodata
; 0x0225D998
- .incbin "baserom.nds", 0x1dd7d8, 0x2608
+ .incbin "baserom.nds", 0x1dd7d8, 0x2580
+
+ ; Stupid hack to override alignment
+ ; .section .sinit
+ ; 0x0225FF18
+ .global SDK_OVERLAY.MODULE_11.SINIT_START
+ .global SDK_OVERLAY.MODULE_11.SINIT_END
+SDK_OVERLAY.MODULE_11.SINIT_START:
+ .word MOD11_0222F284
+ .word 0
+SDK_OVERLAY.MODULE_11.SINIT_END:
+
+ .section .data
+ ; 0x0225FF20
+ .incbin "baserom.nds", 0x1dfd60, 0x80
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s
new file mode 100644
index 00000000..cb6807a6
--- /dev/null
+++ b/arm9/modules/12/asm/module_12.s
@@ -0,0 +1,48111 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD12_0222D5C0
+MOD12_0222D5C0: ; 0x0222D5C0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r1, #1
+ lsl r1, r1, #0x1a
+ ldr r0, [r1]
+ ldr r2, _0222D85C ; =0xFFFFE0FF
+ and r0, r2
+ str r0, [r1]
+ ldr r0, _0222D860 ; =0x04001000
+ ldr r3, [r0]
+ and r2, r3
+ str r2, [r0]
+ ldr r3, [r1]
+ ldr r2, _0222D864 ; =0xFFFF1FFF
+ and r3, r2
+ str r3, [r1]
+ ldr r3, [r0]
+ add r1, #0x50
+ and r2, r3
+ str r2, [r0]
+ mov r2, #0
+ strh r2, [r1]
+ add r0, #0x50
+ strh r2, [r0]
+ mov r2, #7
+ mov r0, #3
+ mov r1, #0x15
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ ldr r1, _0222D868 ; =0x00001658
+ add r0, r5, #0
+ mov r2, #0x15
+ bl FUN_02006268
+ ldr r2, _0222D868 ; =0x00001658
+ mov r1, #0
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x15
+ bl MOD12_022312D8
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl FUN_0200628C
+ mov r1, #0x5b
+ str r0, [r4]
+ lsl r1, r1, #2
+ str r4, [r0, r1]
+ ldr r2, [r4]
+ mov r3, #2
+ add r0, r1, #4
+ strb r3, [r2, r0]
+ ldr r0, [r4]
+ str r0, [r4, #0xc]
+ add r0, r4, #0
+ bl MOD12_0222DCEC
+ mov r0, #0x15
+ bl FUN_02002FD0
+ str r0, [r4, #0x5c]
+ mov r1, #1
+ bl FUN_020038F0
+ mov r2, #2
+ ldr r0, [r4, #0x5c]
+ mov r1, #0
+ lsl r2, r2, #8
+ mov r3, #0x15
+ bl FUN_02003008
+ mov r1, #1
+ ldr r0, [r4, #0x5c]
+ lsl r2, r1, #9
+ mov r3, #0x15
+ bl FUN_02003008
+ mov r2, #7
+ ldr r0, [r4, #0x5c]
+ mov r1, #2
+ lsl r2, r2, #6
+ mov r3, #0x15
+ bl FUN_02003008
+ mov r2, #2
+ ldr r0, [r4, #0x5c]
+ mov r1, #3
+ lsl r2, r2, #8
+ mov r3, #0x15
+ bl FUN_02003008
+ mov r0, #0x15
+ bl FUN_02016B94
+ str r0, [r4, #0x30]
+ mov r0, #0x40
+ mov r1, #0x15
+ bl FUN_0201C24C
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ mov r2, #0x23
+ add r1, r4, #0
+ lsl r2, r2, #4
+ ldr r0, [r4]
+ add r1, #0xc
+ add r2, r4, r2
+ bl MOD12_02231A24
+ ldr r1, _0222D86C ; =0x0000081C
+ str r0, [r4, r1]
+ ldr r0, [r4, #0x30]
+ bl MOD12_0222DB50
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ mov r0, #2
+ mov r1, #0x15
+ bl FUN_02002C50
+ mov r0, #0x15
+ bl FUN_0200BB14
+ ldr r1, _0222D870 ; =0x022449C8
+ ldr r2, _0222D874 ; =0x0224499C
+ mov r3, #0x20
+ str r0, [r4, #0x24]
+ bl FUN_0200BB6C
+ ldr r1, _0222D878 ; =0x00100010
+ mov r0, #1
+ bl FUN_02008D44
+ mov r0, #1
+ bl FUN_02008DDC
+ ldr r0, [r4, #0x24]
+ bl FUN_0200BB34
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x28]
+ mov r2, #0x80
+ bl FUN_0200BBF0
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x28]
+ ldr r2, _0222D87C ; =0x022449B0
+ bl FUN_0200BF60
+ ldr r0, [r4, #0x24]
+ bl FUN_0200BB68
+ mov r2, #0x11
+ mov r1, #0
+ lsl r2, r2, #0x10
+ bl FUN_02008D24
+ mov r0, #0x15
+ bl FUN_02006D98
+ str r0, [r4, #0x10]
+ bl MOD12_0222DCAC
+ mov r0, #0x15
+ bl MOD08_02211F5C
+ mov r1, #1
+ str r0, [r4, #0x2c]
+ bl MOD08_02211FF0
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xbf
+ mov r3, #0x15
+ bl FUN_0200A86C
+ str r0, [r4, #0x44]
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xc0
+ mov r3, #0x15
+ bl FUN_0200A86C
+ str r0, [r4, #0x48]
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xc5
+ mov r3, #0x15
+ bl FUN_0200A86C
+ str r0, [r4, #0x4c]
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xc6
+ mov r3, #0x15
+ bl FUN_0200A86C
+ str r0, [r4, #0x50]
+ mov r0, #8
+ mov r1, #0x15
+ bl FUN_02011744
+ str r0, [r4, #0x60]
+ mov r0, #0x15
+ bl FUN_0200AA80
+ str r0, [r4, #0x54]
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ mov r1, #0x15
+ bl FUN_020219F4
+ str r0, [r4, #0x58]
+ add r0, r4, #0
+ bl MOD12_0222DFC4
+ add r0, r4, #0
+ bl MOD12_0222E0F8
+ add r0, r4, #0
+ bl MOD12_0222DC80
+ add r0, r4, #0
+ bl MOD12_022335B0
+ add r0, r4, #0
+ bl MOD12_0222DD20
+ add r0, r4, #0
+ bl MOD12_0222DE30
+ ldr r7, _0222D880 ; =0x00000123
+ mov r6, #0
+ add r5, sp, #0xc
+_0222D7BC:
+ ldr r1, [r4]
+ mov r2, #0
+ ldrb r0, [r1, r7]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, r6, #0
+ add r1, #0x36
+ bl FUN_020671BC
+ strh r0, [r5]
+ add r6, r6, #1
+ add r5, r5, #2
+ cmp r6, #4
+ blt _0222D7BC
+ ldr r0, _0222D86C ; =0x0000081C
+ add r1, sp, #0xc
+ ldr r0, [r4, r0]
+ bl MOD12_02232C08
+ ldr r0, _0222D86C ; =0x0000081C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ mov r2, #1
+ add r3, r1, #0
+ bl MOD12_02231B4C
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD12_02233758
+ bl FUN_02033E74
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0x15
+ str r1, [sp, #8]
+ mov r1, #0x1f
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldr r0, _0222D884 ; =MOD12_0222DB18
+ ldr r2, _0222D888 ; =0x0000EA60
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #4]
+ ldr r0, _0222D88C ; =0x00000824
+ mov r1, #1
+ strb r1, [r4, r0]
+ bl FUN_0201E788
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ ldr r1, _0222D890 ; =0x0000046F
+ mov r0, #6
+ mov r2, #1
+ bl FUN_0200433C
+ ldr r1, [r4]
+ ldr r0, _0222D894 ; =0x00000171
+ ldrb r0, [r1, r0]
+ bl FUN_020833D4
+ ldr r0, _0222D898 ; =MOD12_0222DAE4
+ add r1, r4, #0
+ bl FUN_02015F10
+ mov r0, #1
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222D85C: .word 0xFFFFE0FF
+_0222D860: .word 0x04001000
+_0222D864: .word 0xFFFF1FFF
+_0222D868: .word 0x00001658
+_0222D86C: .word 0x0000081C
+_0222D870: .word 0x022449C8
+_0222D874: .word 0x0224499C
+_0222D878: .word 0x00100010
+_0222D87C: .word 0x022449B0
+_0222D880: .word 0x00000123
+_0222D884: .word MOD12_0222DB18
+_0222D888: .word 0x0000EA60
+_0222D88C: .word 0x00000824
+_0222D890: .word 0x0000046F
+_0222D894: .word 0x00000171
+_0222D898: .word MOD12_0222DAE4
+
+ thumb_func_start MOD12_0222D89C
+MOD12_0222D89C: ; 0x0222D89C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02082878
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _0222D8BE
+ cmp r0, #1
+ beq _0222D8CC
+ cmp r0, #2
+ beq _0222D986
+ b _0222D994
+_0222D8BE:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _0222D994
+ mov r0, #1
+ str r0, [r5]
+ b _0222D994
+_0222D8CC:
+ ldr r0, [r4]
+ bl FUN_020828BC
+ cmp r0, #1
+ bne _0222D93E
+ ldr r2, _0222D99C ; =0x00000822
+ ldr r1, _0222D9A0 ; =0x00001648
+ ldrh r2, [r4, r2]
+ add r0, r4, #0
+ add r1, r4, r1
+ lsl r3, r2, #2
+ ldr r2, _0222D9A4 ; =0x02244A10
+ ldr r2, [r2, r3]
+ blx r2
+ sub r1, r0, #1
+ cmp r1, #1
+ bhi _0222D910
+ cmp r0, #1
+ bne _0222D8FA
+ ldr r0, _0222D99C ; =0x00000822
+ ldrh r1, [r4, r0]
+ add r1, r1, #1
+ b _0222D900
+_0222D8FA:
+ ldr r0, _0222D9A8 ; =0x0000164A
+ ldrh r1, [r4, r0]
+ ldr r0, _0222D99C ; =0x00000822
+_0222D900:
+ strh r1, [r4, r0]
+ ldr r0, _0222D9A0 ; =0x00001648
+ mov r1, #0
+ add r0, r4, r0
+ mov r2, #8
+ bl MI_CpuFill8
+ b _0222D93E
+_0222D910:
+ cmp r0, #3
+ bne _0222D93E
+ mov r0, #2
+ str r0, [r5]
+ ldr r0, _0222D9A0 ; =0x00001648
+ mov r1, #0
+ add r0, r4, r0
+ mov r2, #8
+ bl MI_CpuFill8
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x15
+ mov r1, #0x20
+ str r0, [sp, #8]
+ mov r0, #2
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ b _0222D994
+_0222D93E:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD12_022410A0
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ add r0, r4, r0
+ add r1, r4, #0
+ bl MOD12_02241114
+ ldr r0, _0222D9AC ; =0x00001650
+ ldrb r1, [r4, r0]
+ cmp r1, #1
+ bne _0222D994
+ mov r1, #2
+ sub r0, #8
+ str r1, [r5]
+ add r0, r4, r0
+ mov r1, #0
+ mov r2, #8
+ bl MI_CpuFill8
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x15
+ mov r1, #0x20
+ str r0, [sp, #8]
+ mov r0, #2
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ b _0222D994
+_0222D986:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _0222D994
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_0222D994:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_0222D99C: .word 0x00000822
+_0222D9A0: .word 0x00001648
+_0222D9A4: .word 0x02244A10
+_0222D9A8: .word 0x0000164A
+_0222D9AC: .word 0x00001650
+
+ thumb_func_start MOD12_0222D9B0
+MOD12_0222D9B0: ; 0x0222D9B0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ bl FUN_02012EAC
+ ldr r0, [r4, #0x2c]
+ bl MOD08_02212024
+ add r0, r4, #0
+ bl MOD12_0222DDC4
+ add r0, r4, #0
+ bl MOD12_0222DEEC
+ add r0, r4, #0
+ bl MOD12_0222E0F4
+ add r0, r4, #0
+ bl MOD12_0222E0FC
+ add r0, r4, #0
+ add r0, #0x34
+ bl FUN_02019178
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x30]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x30]
+ bl MOD12_022319FC
+ ldr r0, _0222DAD8 ; =0x0000081C
+ ldr r0, [r4, r0]
+ bl MOD12_02231AE8
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x28]
+ bl FUN_0200C398
+ ldr r0, [r4, #0x24]
+ bl FUN_0200BD04
+ bl FUN_0201C29C
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD12_02233848
+ ldr r0, [r4, #0x10]
+ bl FUN_020072E8
+ mov r0, #2
+ bl FUN_02002CF8
+ ldr r0, [r4, #0x60]
+ bl FUN_020117BC
+ ldr r0, [r4, #0x5c]
+ mov r1, #0
+ bl FUN_02003038
+ ldr r0, [r4, #0x5c]
+ mov r1, #1
+ bl FUN_02003038
+ ldr r0, [r4, #0x5c]
+ mov r1, #2
+ bl FUN_02003038
+ ldr r0, [r4, #0x5c]
+ mov r1, #3
+ bl FUN_02003038
+ ldr r0, [r4, #0x5c]
+ bl FUN_02002FEC
+ ldr r0, [r4, #0x58]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x54]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0x44]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x48]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x4c]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x50]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x30]
+ bl FUN_02016A18
+ ldr r0, [r4, #4]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #8]
+ bl MOD12_02231378
+ bl FUN_0201CD04
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ mov r0, #0x15
+ bl FUN_020168D0
+ bl FUN_02083404
+ bl FUN_02033ED0
+ ldr r0, _0222DADC ; =SDK_OVERLAY_MODULE_08_ID
+ bl UnloadOverlayByID
+ ldr r0, _0222DAE0 ; =SDK_OVERLAY_MODULE_17_ID
+ bl UnloadOverlayByID
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_0222DAD8: .word 0x0000081C
+_0222DADC: .word SDK_OVERLAY_MODULE_08_ID
+_0222DAE0: .word SDK_OVERLAY_MODULE_17_ID
+
+ thumb_func_start MOD12_0222DAE4
+MOD12_0222DAE4: ; 0x0222DAE4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ bl FUN_020081C4
+ bl FUN_0201C30C
+ bl FUN_0200BC30
+ ldr r0, [r4, #0x5c]
+ bl FUN_0200372C
+ ldr r0, [r4, #0x30]
+ bl FUN_0201AB60
+ ldr r3, _0222DB10 ; =0x027E0000
+ ldr r1, _0222DB14 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ .align 2, 0
+_0222DB10: .word 0x027E0000
+_0222DB14: .word 0x00003FF8
+
+ thumb_func_start MOD12_0222DB18
+MOD12_0222DB18: ; 0x0222DB18
+ push {r4, lr}
+ ldr r0, _0222DB48 ; =0x00000824
+ add r4, r1, #0
+ ldrb r0, [r4, r0]
+ cmp r0, #1
+ bne _0222DB3E
+ ldr r0, [r4, #0x10]
+ bl FUN_02006ED4
+ bl MOD08_02215A44
+ ldr r0, [r4, #0x28]
+ bl FUN_0200BC1C
+ bl FUN_0200BC38
+ ldr r0, _0222DB4C ; =0x04000540
+ mov r1, #1
+ str r1, [r0]
+_0222DB3E:
+ ldr r1, [r4, #0x30]
+ mov r0, #0x15
+ bl FUN_020335F0
+ pop {r4, pc}
+ .align 2, 0
+_0222DB48: .word 0x00000824
+_0222DB4C: .word 0x04000540
+
+ thumb_func_start MOD12_0222DB50
+MOD12_0222DB50: ; 0x0222DB50
+ push {r4, r5, lr}
+ sub sp, #0x8c
+ add r4, r0, #0
+ bl FUN_0201E6D8
+ ldr r5, _0222DC70 ; =0x022449E8
+ add r3, sp, #0x10
+ mov r2, #5
+_0222DB60:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0222DB60
+ add r0, sp, #0x10
+ bl FUN_0201E66C
+ mov r1, #6
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x12
+ bl MIi_CpuClear32
+ mov r1, #0x62
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ bl MIi_CpuClear32
+ mov r1, #0x19
+ mov r2, #1
+ mov r0, #0
+ lsl r1, r1, #0x16
+ lsl r2, r2, #0x12
+ bl MIi_CpuClear32
+ mov r1, #0x66
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ bl MIi_CpuClear32
+ ldr r5, _0222DC74 ; =0x0224498C
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _0222DC78 ; =0x02244A50
+ add r3, sp, #0x38
+ mov r2, #0xa
+_0222DBC0:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0222DBC0
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ add r2, sp, #0x38
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #2
+ add r2, sp, #0x54
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #3
+ add r2, sp, #0x70
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r1, #3
+ add r0, r4, #0
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ ldr r1, _0222DC7C ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #2
+ orr r0, r2
+ strh r0, [r1]
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ add r0, r4, #0
+ bl MOD12_022319A4
+ add sp, #0x8c
+ pop {r4, r5, pc}
+ .align 2, 0
+_0222DC70: .word 0x022449E8
+_0222DC74: .word 0x0224498C
+_0222DC78: .word 0x02244A50
+_0222DC7C: .word 0x04000008
+
+ thumb_func_start MOD12_0222DC80
+MOD12_0222DC80: ; 0x0222DC80
+ push {lr}
+ sub sp, #0x14
+ add r1, r0, #0
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x14
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #3
+ lsl r0, r0, #8
+ str r0, [sp, #0x10]
+ ldr r0, [r1, #0x30]
+ add r1, #0x34
+ mov r2, #1
+ mov r3, #0xb
+ bl FUN_02019064
+ add sp, #0x14
+ pop {pc}
+
+ thumb_func_start MOD12_0222DCAC
+MOD12_0222DCAC: ; 0x0222DCAC
+ push {r3, r4, r5, lr}
+ ldr r3, _0222DCE4 ; =0x021064B8
+ mov r0, #2
+ mov r1, #0
+ ldr r3, [r3]
+ lsl r0, r0, #0xe
+ add r2, r1, #0
+ blx r3
+ ldr r3, _0222DCE8 ; =0x021064C0
+ mov r1, #0
+ add r4, r0, #0
+ ldr r3, [r3]
+ mov r0, #0x80
+ add r2, r1, #0
+ blx r3
+ add r5, r0, #0
+ cmp r4, #0
+ bne _0222DCD4
+ bl ErrorHandling
+_0222DCD4:
+ cmp r5, #0
+ bne _0222DCDC
+ bl ErrorHandling
+_0222DCDC:
+ bl FUN_02012CC8
+ pop {r3, r4, r5, pc}
+ nop
+_0222DCE4: .word 0x021064B8
+_0222DCE8: .word 0x021064C0
+
+ thumb_func_start MOD12_0222DCEC
+MOD12_0222DCEC: ; 0x0222DCEC
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _0222DCFA
+ bl ErrorHandling
+_0222DCFA:
+ ldr r1, _0222DD1C ; =0x00000172
+ mov r0, #0
+ add r2, r1, #0
+ add r2, #0xbf
+_0222DD02:
+ ldr r3, [r4]
+ add r3, r3, r0
+ ldrb r5, [r3, r1]
+ add r3, r4, r0
+ add r0, r0, #1
+ strb r5, [r3, r2]
+ cmp r0, #4
+ blt _0222DD02
+ add r0, r4, #0
+ bl MOD12_02235D7C
+ pop {r3, r4, r5, pc}
+ nop
+_0222DD1C: .word 0x00000172
+
+ thumb_func_start MOD12_0222DD20
+MOD12_0222DD20: ; 0x0222DD20
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ mov r0, #0x2e
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #6
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, _0222DDB8 ; =0x000080E9
+ mov r1, #2
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0x5c]
+ ldr r2, [r4, #0x24]
+ ldr r3, [r4, #0x28]
+ bl FUN_0200C0DC
+ mov r0, #0x2e
+ str r0, [sp]
+ mov r0, #9
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, _0222DDBC ; =0x000080ED
+ mov r1, #2
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0x5c]
+ ldr r2, [r4, #0x24]
+ ldr r3, [r4, #0x28]
+ bl FUN_0200C0DC
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x28]
+ bl MOD12_02235194
+ add r0, r4, #0
+ bl MOD12_022350F8
+ add r0, r4, #0
+ ldr r1, [r4]
+ add r0, #0xc
+ bl MOD12_02233A8C
+ add r0, r4, #0
+ ldr r2, [r4]
+ ldr r1, _0222DDC0 ; =0x0000011E
+ add r0, #0xc
+ ldrb r1, [r2, r1]
+ bl MOD12_02233EEC
+ ldr r0, [r4, #0x5c]
+ ldr r1, [r4, #0x24]
+ ldr r2, [r4, #0x28]
+ bl MOD12_02233B04
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD12_02233B7C
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x28]
+ bl MOD12_02233FAC
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x28]
+ bl MOD12_022342A8
+ add sp, #0x18
+ pop {r4, pc}
+ nop
+_0222DDB8: .word 0x000080E9
+_0222DDBC: .word 0x000080ED
+_0222DDC0: .word 0x0000011E
+
+ thumb_func_start MOD12_0222DDC4
+MOD12_0222DDC4: ; 0x0222DDC4
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xc
+ bl MOD12_02233F78
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD12_02233AD4
+ add r0, r4, #0
+ bl MOD12_02235114
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD12_0223524C
+ ldr r0, [r4, #0x28]
+ bl MOD12_022351E0
+ ldr r0, [r4, #0x28]
+ ldr r1, _0222DE28 ; =0x000080E9
+ bl FUN_0200C368
+ ldr r0, [r4, #0x28]
+ ldr r1, _0222DE2C ; =0x000080ED
+ bl FUN_0200C368
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD12_02233BBC
+ ldr r0, [r4, #0x28]
+ bl MOD12_02233B58
+ ldr r0, [r4, #0x28]
+ bl MOD12_02233FF8
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD12_02234044
+ ldr r0, [r4, #0x28]
+ bl MOD12_02234334
+ add r4, #0xc
+ add r0, r4, #0
+ bl MOD12_0223439C
+ pop {r4, pc}
+ nop
+_0222DE28: .word 0x000080E9
+_0222DE2C: .word 0x000080ED
+
+ thumb_func_start MOD12_0222DE30
+MOD12_0222DE30: ; 0x0222DE30
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ mov r0, #0x2e
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r1, #3
+ str r1, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _0222DED8 ; =0x000080EF
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x5c]
+ ldr r2, [r5, #0x24]
+ ldr r3, [r5, #0x28]
+ bl FUN_0200C0DC
+ mov r0, #0x2e
+ str r0, [sp]
+ mov r0, #9
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _0222DEDC ; =0x000080F0
+ mov r1, #3
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x5c]
+ ldr r2, [r5, #0x24]
+ ldr r3, [r5, #0x28]
+ bl FUN_0200C0DC
+ ldr r0, [r5, #0x24]
+ ldr r1, [r5, #0x28]
+ bl MOD12_022334A4
+ ldr r0, [r5, #0x24]
+ ldr r1, [r5, #0x28]
+ bl MOD12_022333F8
+ ldr r2, _0222DEE0 ; =0x000080F4
+ ldr r0, [r5, #0x24]
+ ldr r1, [r5, #0x28]
+ add r3, r2, #0
+ bl MOD12_02240E34
+ ldr r7, _0222DEE4 ; =0x000080F6
+ ldr r6, _0222DEE8 ; =0x00000123
+ mov r4, #0
+_0222DE9E:
+ ldr r1, [r5]
+ mov r2, #0
+ ldrb r0, [r1, r6]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, r4, #0
+ add r1, #0x36
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _0222DEBE
+ mov r1, #0xb
+ bl FUN_0206AB18
+ add r3, r0, #0
+ b _0222DEC0
+_0222DEBE:
+ mov r3, #0
+_0222DEC0:
+ add r0, r4, r7
+ str r0, [sp]
+ ldr r0, [r5, #0x24]
+ ldr r1, [r5, #0x28]
+ mov r2, #2
+ bl MOD12_02240E00
+ add r4, r4, #1
+ cmp r4, #4
+ blt _0222DE9E
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222DED8: .word 0x000080EF
+_0222DEDC: .word 0x000080F0
+_0222DEE0: .word 0x000080F4
+_0222DEE4: .word 0x000080F6
+_0222DEE8: .word 0x00000123
+
+ thumb_func_start MOD12_0222DEEC
+MOD12_0222DEEC: ; 0x0222DEEC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x28]
+ ldr r1, _0222DF24 ; =0x000080EF
+ bl FUN_0200C368
+ ldr r0, [r5, #0x28]
+ bl MOD12_0223353C
+ ldr r0, [r5, #0x28]
+ bl MOD12_02233478
+ ldr r1, _0222DF28 ; =0x000080F4
+ ldr r0, [r5, #0x28]
+ add r2, r1, #0
+ bl MOD12_02240E84
+ ldr r6, _0222DF2C ; =0x000080F6
+ mov r4, #0
+_0222DF12:
+ ldr r0, [r5, #0x28]
+ add r1, r4, r6
+ bl MOD12_02240E7C
+ add r4, r4, #1
+ cmp r4, #4
+ blt _0222DF12
+ pop {r4, r5, r6, pc}
+ nop
+_0222DF24: .word 0x000080EF
+_0222DF28: .word 0x000080F4
+_0222DF2C: .word 0x000080F6
+
+ thumb_func_start MOD12_0222DF30
+MOD12_0222DF30: ; 0x0222DF30
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r2, #0
+ cmp r1, #0
+ bne _0222DF9A
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xe
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x15
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x30]
+ mov r0, #0x2d
+ mov r1, #3
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x15
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x30]
+ mov r0, #0x2d
+ mov r1, #5
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #0
+ bl FUN_020178BC
+ add r0, r5, #0
+ bl MOD12_022335B0
+ cmp r4, #1
+ bne _0222DFBE
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_0222DF9A:
+ mov r0, #2
+ lsl r1, r0, #0xd
+ mov r2, #0
+ mov r3, #0x15
+ bl FUN_02017F18
+ ldr r0, [r5, #0x30]
+ mov r1, #2
+ bl FUN_02018744
+ mov r0, #1
+ mov r1, #0
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #1
+ bl FUN_020178BC
+_0222DFBE:
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0222DFC4
+MOD12_0222DFC4: ; 0x0222DFC4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ mov r0, #0x15
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x30]
+ mov r0, #0x2d
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x15
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x30]
+ mov r0, #0x2d
+ mov r1, #2
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x15
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x30]
+ mov r0, #0x2d
+ mov r1, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x15
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x30]
+ mov r0, #0x2d
+ mov r1, #4
+ bl FUN_020068C8
+ mov r1, #0
+ add r0, r5, #0
+ add r2, r1, #0
+ bl MOD12_0222DF30
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x5c]
+ mov r1, #0x2d
+ mov r2, #0x1d
+ mov r3, #0x15
+ bl FUN_020030E8
+ mov r0, #0x15
+ mov r1, #0x20
+ bl FUN_02016998
+ add r7, r0, #0
+ mov r0, #0x15
+ mov r1, #0x20
+ bl FUN_02016998
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x5c]
+ mov r1, #0
+ bl FUN_020031FC
+ add r4, r0, #0
+ ldr r0, [r5, #0x5c]
+ mov r1, #0
+ bl FUN_02003204
+ str r0, [sp, #0x14]
+ ldr r0, _0222E0EC ; =0x022451D0
+ add r1, r7, #0
+ ldrb r0, [r0]
+ mov r2, #0x20
+ lsl r6, r0, #5
+ add r0, r4, r6
+ bl MIi_CpuCopy16
+ ldr r1, [r5]
+ ldr r0, _0222E0F0 ; =0x00000123
+ mov r2, #0x20
+ ldrb r1, [r1, r0]
+ ldr r0, _0222E0EC ; =0x022451D0
+ ldrb r0, [r0, r1]
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #5
+ add r0, r4, r0
+ bl MIi_CpuCopy16
+ ldr r2, [r5]
+ ldr r1, _0222E0F0 ; =0x00000123
+ add r0, r7, #0
+ ldrb r2, [r2, r1]
+ ldr r1, _0222E0EC ; =0x022451D0
+ ldrb r1, [r1, r2]
+ mov r2, #0x20
+ lsl r1, r1, #5
+ add r1, r4, r1
+ bl MIi_CpuCopy16
+ ldr r0, [sp, #0x10]
+ add r1, r4, r6
+ mov r2, #0x20
+ bl MIi_CpuCopy16
+ ldr r2, [r5]
+ ldr r1, _0222E0F0 ; =0x00000123
+ add r0, r7, #0
+ ldrb r2, [r2, r1]
+ ldr r1, _0222E0EC ; =0x022451D0
+ ldrb r1, [r1, r2]
+ lsl r2, r1, #5
+ ldr r1, [sp, #0x14]
+ add r1, r1, r2
+ mov r2, #0x20
+ bl MIi_CpuCopy16
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ add r1, r1, r6
+ mov r2, #0x20
+ bl MIi_CpuCopy16
+ add r0, r7, #0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x10]
+ bl FUN_02016A18
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222E0EC: .word 0x022451D0
+_0222E0F0: .word 0x00000123
+
+ thumb_func_start MOD12_0222E0F4
+MOD12_0222E0F4: ; 0x0222E0F4
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0222E0F8
+MOD12_0222E0F8: ; 0x0222E0F8
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0222E0FC
+MOD12_0222E0FC: ; 0x0222E0FC
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0222E100
+MOD12_0222E100: ; 0x0222E100
+ push {r4, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ bne _0222E128
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ add r0, r2, r0
+ add r1, r2, #0
+ mov r2, #2
+ mov r3, #0
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222E148
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E148
+_0222E128:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ ldr r3, [r2]
+ ldr r4, _0222E14C ; =0x00000127
+ add r0, r2, r0
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222E148
+ mov r0, #1
+ pop {r4, pc}
+_0222E148:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_0222E14C: .word 0x00000127
+
+ thumb_func_start MOD12_0222E150
+MOD12_0222E150: ; 0x0222E150
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ bl FUN_020832EC
+ cmp r0, #0
+ bne _0222E164
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222E164:
+ ldrh r0, [r4]
+ cmp r0, #0
+ bne _0222E196
+ ldr r3, _0222E1BC ; =0x0000040C
+ mov r1, #0
+ strb r1, [r5, r3]
+ add r0, r3, #2
+ strb r1, [r5, r0]
+ add r0, r3, #3
+ strb r1, [r5, r0]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ sub r3, #0xe4
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #0x14
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222E1B6
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E1B6
+_0222E196:
+ ldr r4, _0222E1C0 ; =0x00000127
+ ldr r3, [r5]
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ add r0, r5, r0
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222E1B6
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222E1B6:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_0222E1BC: .word 0x0000040C
+_0222E1C0: .word 0x00000127
+
+ thumb_func_start MOD12_0222E1C4
+MOD12_0222E1C4: ; 0x0222E1C4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ bne _0222E218
+ ldr r0, [r5]
+ bl FUN_020832EC
+ cmp r0, #1
+ bne _0222E1E2
+ ldr r0, _0222E23C ; =0x0000040C
+ mov r1, #0x2d
+ strb r1, [r5, r0]
+ b _0222E1F0
+_0222E1E2:
+ ldr r1, [r5]
+ ldr r0, _0222E240 ; =0x0000011F
+ ldrb r0, [r1, r0]
+ bl MOD12_02235A98
+ ldr r1, _0222E23C ; =0x0000040C
+ strb r0, [r5, r1]
+_0222E1F0:
+ ldr r3, _0222E244 ; =0x0000040E
+ mov r1, #0
+ strb r1, [r5, r3]
+ add r0, r3, #1
+ strb r1, [r5, r0]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ sub r3, #0xe6
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #0x14
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222E238
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E238
+_0222E218:
+ ldr r4, _0222E248 ; =0x00000127
+ ldr r3, [r5]
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ add r0, r5, r0
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222E238
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222E238:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222E23C: .word 0x0000040C
+_0222E240: .word 0x0000011F
+_0222E244: .word 0x0000040E
+_0222E248: .word 0x00000127
+
+ thumb_func_start MOD12_0222E24C
+MOD12_0222E24C: ; 0x0222E24C
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD12_0222E250
+MOD12_0222E250: ; 0x0222E250
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r1, [sp]
+ ldrh r1, [r1]
+ add r4, r0, #0
+ cmp r1, #0
+ beq _0222E268
+ cmp r1, #1
+ beq _0222E288
+ cmp r1, #2
+ beq _0222E2B0
+ b _0222E2F0
+_0222E268:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ add r0, r4, r0
+ add r1, r4, #0
+ mov r2, #8
+ mov r3, #0
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222E300
+ ldr r0, [sp]
+ ldrh r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp]
+ strh r1, [r0]
+ b _0222E300
+_0222E288:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _0222E308 ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222E300
+ ldr r0, [sp]
+ ldrh r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp]
+ strh r1, [r0]
+ b _0222E300
+_0222E2B0:
+ add r1, sp, #4
+ bl MOD12_0223900C
+ ldr r1, [r4]
+ ldr r0, _0222E308 ; =0x00000127
+ ldrb r0, [r1, r0]
+ cmp r0, #4
+ bge _0222E2E4
+ lsl r2, r0, #1
+ add r3, sp, #4
+ add r1, r3, r2
+ ldr r7, _0222E30C ; =0x0000023E
+ add r2, r4, r2
+ add r3, r3, r0
+_0222E2CC:
+ ldrh r6, [r1]
+ ldr r5, _0222E310 ; =0x00000236
+ add r1, r1, #2
+ strh r6, [r2, r5]
+ ldrb r6, [r3, #8]
+ add r5, r4, r0
+ add r0, r0, #1
+ strb r6, [r5, r7]
+ add r2, r2, #2
+ add r3, r3, #1
+ cmp r0, #4
+ blt _0222E2CC
+_0222E2E4:
+ ldr r0, [sp]
+ ldrh r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp]
+ strh r1, [r0]
+ b _0222E300
+_0222E2F0:
+ mov r1, #0xce
+ lsl r1, r1, #2
+ add r1, r4, r1
+ bl MOD12_0223808C
+ add sp, #0x10
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0222E300:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E308: .word 0x00000127
+_0222E30C: .word 0x0000023E
+_0222E310: .word 0x00000236
+
+ thumb_func_start MOD12_0222E314
+MOD12_0222E314: ; 0x0222E314
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r2, _0222E394 ; =0x00000235
+ add r4, r0, #0
+ ldrb r0, [r4, r2]
+ add r1, r4, r0
+ sub r0, r2, #4
+ ldrb r0, [r1, r0]
+ add r1, r2, #0
+ add r1, #0xf3
+ strb r0, [r4, r1]
+ str r0, [sp]
+ add r0, r2, #0
+ ldrb r1, [r4, r2]
+ add r0, #0xf4
+ strb r1, [r4, r0]
+ ldr r0, [sp]
+ add r1, r4, r0
+ add r0, r2, #0
+ add r0, #9
+ ldrb r3, [r1, r0]
+ add r0, r2, #0
+ add r0, #0xf5
+ strb r3, [r4, r0]
+ add r3, r2, #0
+ mov r0, #0
+ add r3, #0xf6
+ strb r0, [r4, r3]
+ ldrb r2, [r4, r2]
+ cmp r2, #0
+ ble _0222E374
+ ldr r7, _0222E398 ; =0x0000023E
+ mov r5, #1
+ add r3, r7, #0
+_0222E356:
+ ldr r2, _0222E39C ; =0x00000231
+ add r6, r4, r0
+ ldrb r2, [r6, r2]
+ add r2, r4, r2
+ ldrb r6, [r2, r7]
+ ldrb r2, [r1, r3]
+ cmp r6, r2
+ bne _0222E36A
+ ldr r2, _0222E3A0 ; =0x0000032B
+ strb r5, [r4, r2]
+_0222E36A:
+ ldr r2, _0222E394 ; =0x00000235
+ add r0, r0, #1
+ ldrb r2, [r4, r2]
+ cmp r0, r2
+ blt _0222E356
+_0222E374:
+ mov r1, #1
+ lsl r1, r1, #0xa
+ ldr r2, [sp]
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD12_02235274
+ ldr r1, _0222E3A4 ; =0x00000406
+ ldr r2, [sp]
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD12_02235274
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E394: .word 0x00000235
+_0222E398: .word 0x0000023E
+_0222E39C: .word 0x00000231
+_0222E3A0: .word 0x0000032B
+_0222E3A4: .word 0x00000406
+
+ thumb_func_start MOD12_0222E3A8
+MOD12_0222E3A8: ; 0x0222E3A8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ bne _0222E3D4
+ mov r0, #0xc3
+ mov r3, #0xca
+ lsl r0, r0, #4
+ lsl r3, r3, #2
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #4
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222E3F4
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E3F4
+_0222E3D4:
+ ldr r4, _0222E3F8 ; =0x00000127
+ ldr r3, [r5]
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ add r0, r5, r0
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222E3F4
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222E3F4:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222E3F8: .word 0x00000127
+
+ thumb_func_start MOD12_0222E3FC
+MOD12_0222E3FC: ; 0x0222E3FC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldrh r0, [r5]
+ cmp r0, #0
+ bne _0222E42C
+ ldr r3, _0222E458 ; =0x0000040C
+ mov r0, #0
+ strb r0, [r4, r3]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ sub r3, #0xe4
+ add r0, r4, r0
+ add r1, r4, #0
+ mov r2, #6
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222E452
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _0222E452
+_0222E42C:
+ ldr r5, _0222E45C ; =0x00000127
+ ldr r3, [r4]
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ add r0, r4, r0
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222E452
+ ldr r0, _0222E458 ; =0x0000040C
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222E452:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_0222E458: .word 0x0000040C
+_0222E45C: .word 0x00000127
+
+ thumb_func_start MOD12_0222E460
+MOD12_0222E460: ; 0x0222E460
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldrh r0, [r5]
+ cmp r0, #0
+ beq _0222E472
+ cmp r0, #1
+ beq _0222E4A2
+ b _0222E4C2
+_0222E472:
+ ldr r0, _0222E4F0 ; =0x0000040C
+ mov r1, #4
+ strb r1, [r4, r0]
+ add r1, r0, #0
+ sub r1, #0xe1
+ ldrb r1, [r4, r1]
+ cmp r1, #1
+ bne _0222E486
+ mov r1, #5
+ b _0222E488
+_0222E486:
+ mov r1, #0
+_0222E488:
+ mov r2, #0xce
+ add r0, r0, #1
+ strb r1, [r4, r0]
+ lsl r2, r2, #2
+ add r1, r4, r2
+ sub r2, #0x10
+ ldrb r2, [r4, r2]
+ add r0, r4, #0
+ bl MOD12_02238224
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+_0222E4A2:
+ mov r0, #0xc3
+ mov r3, #0xca
+ lsl r0, r0, #4
+ lsl r3, r3, #2
+ add r0, r4, r0
+ add r1, r4, #0
+ mov r2, #7
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222E4EC
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _0222E4EC
+_0222E4C2:
+ ldr r5, _0222E4F4 ; =0x00000127
+ ldr r3, [r4]
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ add r0, r4, r0
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222E4EC
+ ldr r0, _0222E4F0 ; =0x0000040C
+ mov r1, #0
+ strb r1, [r4, r0]
+ add r0, r0, #1
+ strb r1, [r4, r0]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222E4EC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222E4F0: .word 0x0000040C
+_0222E4F4: .word 0x00000127
+
+ thumb_func_start MOD12_0222E4F8
+MOD12_0222E4F8: ; 0x0222E4F8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrh r1, [r4]
+ add r5, r0, #0
+ cmp r1, #0xc
+ bls _0222E506
+ b _0222E6B6
+_0222E506:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0222E512: ; jump table
+ .short _0222E52C - _0222E512 - 2 ; case 0
+ .short _0222E542 - _0222E512 - 2 ; case 1
+ .short _0222E556 - _0222E512 - 2 ; case 2
+ .short _0222E576 - _0222E512 - 2 ; case 3
+ .short _0222E59C - _0222E512 - 2 ; case 4
+ .short _0222E5B6 - _0222E512 - 2 ; case 5
+ .short _0222E5D6 - _0222E512 - 2 ; case 6
+ .short _0222E5FA - _0222E512 - 2 ; case 7
+ .short _0222E614 - _0222E512 - 2 ; case 8
+ .short _0222E634 - _0222E512 - 2 ; case 9
+ .short _0222E658 - _0222E512 - 2 ; case 10
+ .short _0222E672 - _0222E512 - 2 ; case 11
+ .short _0222E692 - _0222E512 - 2 ; case 12
+_0222E52C:
+ mov r2, #0xce
+ lsl r2, r2, #2
+ add r1, r5, r2
+ sub r2, #0x10
+ ldrb r2, [r5, r2]
+ bl MOD12_022380FC
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E6CA
+_0222E542:
+ mov r2, #0xce
+ lsl r2, r2, #2
+ add r1, r5, r2
+ sub r2, #0x10
+ ldrb r2, [r5, r2]
+ bl MOD12_02238280
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+_0222E556:
+ mov r0, #0xc3
+ mov r3, #0xca
+ lsl r0, r0, #4
+ lsl r3, r3, #2
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #0xa
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222E592
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E6CA
+_0222E576:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ ldr r3, [r5]
+ add r0, r5, r0
+ ldr r5, _0222E6D0 ; =0x00000127
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ bl MOD12_022411F4
+ cmp r0, #1
+ beq _0222E594
+_0222E592:
+ b _0222E6CA
+_0222E594:
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E6CA
+_0222E59C:
+ mov r3, #0xce
+ lsl r3, r3, #2
+ add r2, r3, #0
+ add r1, r5, r3
+ sub r2, #0x10
+ sub r3, #0xf
+ ldrb r2, [r5, r2]
+ ldrb r3, [r5, r3]
+ bl MOD12_022382A8
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+_0222E5B6:
+ mov r0, #0xc3
+ mov r3, #0xca
+ lsl r0, r0, #4
+ lsl r3, r3, #2
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #0xb
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222E6CA
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E6CA
+_0222E5D6:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ ldr r3, [r5]
+ add r0, r5, r0
+ ldr r5, _0222E6D0 ; =0x00000127
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222E6CA
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E6CA
+_0222E5FA:
+ mov r3, #0xce
+ lsl r3, r3, #2
+ add r2, r3, #0
+ add r1, r5, r3
+ sub r2, #0x10
+ sub r3, #0xf
+ ldrb r2, [r5, r2]
+ ldrb r3, [r5, r3]
+ bl MOD12_02238370
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+_0222E614:
+ mov r0, #0xc3
+ mov r3, #0xca
+ lsl r0, r0, #4
+ lsl r3, r3, #2
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #0xc
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222E6CA
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E6CA
+_0222E634:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ ldr r3, [r5]
+ add r0, r5, r0
+ ldr r5, _0222E6D0 ; =0x00000127
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222E6CA
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E6CA
+_0222E658:
+ mov r3, #0xce
+ lsl r3, r3, #2
+ add r2, r3, #0
+ sub r2, #0x10
+ ldrb r2, [r5, r2]
+ add r1, r5, r3
+ add r3, #0xc8
+ add r3, r5, r3
+ bl MOD12_0223850C
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+_0222E672:
+ mov r0, #0xc3
+ mov r3, #0xca
+ lsl r0, r0, #4
+ lsl r3, r3, #2
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #0xd
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222E6CA
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E6CA
+_0222E692:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ ldr r3, [r5]
+ add r0, r5, r0
+ ldr r5, _0222E6D0 ; =0x00000127
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222E6CA
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E6CA
+_0222E6B6:
+ mov r2, #0xce
+ lsl r2, r2, #2
+ add r1, r5, r2
+ sub r2, #0x10
+ ldrb r2, [r5, r2]
+ add r0, r5, #0
+ bl MOD12_02238160
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222E6CA:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_0222E6D0: .word 0x00000127
+
+ thumb_func_start MOD12_0222E6D4
+MOD12_0222E6D4: ; 0x0222E6D4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ bne _0222E700
+ mov r0, #0xc3
+ mov r3, #0xca
+ lsl r0, r0, #4
+ lsl r3, r3, #2
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #5
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222E720
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222E720
+_0222E700:
+ ldr r4, _0222E724 ; =0x00000127
+ ldr r3, [r5]
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ add r0, r5, r0
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222E720
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222E720:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222E724: .word 0x00000127
+
+ thumb_func_start MOD12_0222E728
+MOD12_0222E728: ; 0x0222E728
+ ldr r2, _0222E744 ; =0x00000235
+ ldrb r3, [r0, r2]
+ add r3, r3, #1
+ strb r3, [r0, r2]
+ ldrb r0, [r0, r2]
+ cmp r0, #4
+ blo _0222E73A
+ mov r0, #1
+ bx lr
+_0222E73A:
+ mov r0, #5
+ strh r0, [r1, #2]
+ mov r0, #2
+ bx lr
+ nop
+_0222E744: .word 0x00000235
+
+ thumb_func_start MOD12_0222E748
+MOD12_0222E748: ; 0x0222E748
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ add r7, r1, #0
+ ldrh r1, [r7]
+ str r0, [sp]
+ cmp r1, #0x18
+ bls _0222E758
+ b _0222EBFA
+_0222E758:
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222E764: ; jump table
+ .short _0222E796 - _0222E764 - 2 ; case 0
+ .short _0222E79C - _0222E764 - 2 ; case 1
+ .short _0222E7BA - _0222E764 - 2 ; case 2
+ .short _0222E7E8 - _0222E764 - 2 ; case 3
+ .short _0222E80C - _0222E764 - 2 ; case 4
+ .short _0222E834 - _0222E764 - 2 ; case 5
+ .short _0222E850 - _0222E764 - 2 ; case 6
+ .short _0222E878 - _0222E764 - 2 ; case 7
+ .short _0222E9CE - _0222E764 - 2 ; case 8
+ .short _0222E9D6 - _0222E764 - 2 ; case 9
+ .short _0222E9FA - _0222E764 - 2 ; case 10
+ .short _0222EA2C - _0222E764 - 2 ; case 11
+ .short _0222EA44 - _0222E764 - 2 ; case 12
+ .short _0222EA50 - _0222E764 - 2 ; case 13
+ .short _0222EA6E - _0222E764 - 2 ; case 14
+ .short _0222EA9C - _0222E764 - 2 ; case 15
+ .short _0222EAC0 - _0222E764 - 2 ; case 16
+ .short _0222EB12 - _0222E764 - 2 ; case 17
+ .short _0222EB2A - _0222E764 - 2 ; case 18
+ .short _0222EB36 - _0222E764 - 2 ; case 19
+ .short _0222EB48 - _0222E764 - 2 ; case 20
+ .short _0222EB66 - _0222E764 - 2 ; case 21
+ .short _0222EB94 - _0222E764 - 2 ; case 22
+ .short _0222EBB8 - _0222E764 - 2 ; case 23
+ .short _0222EBDE - _0222E764 - 2 ; case 24
+_0222E796:
+ add r0, r1, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222E79C:
+ ldr r1, [r7, #4]
+ ldr r0, [sp]
+ ldr r2, _0222EAE4 ; =0x00000231
+ add r0, r0, r1
+ ldrb r3, [r0, r2]
+ add r1, r2, #0
+ ldr r0, [sp]
+ add r1, #0xf7
+ strb r3, [r0, r1]
+ ldr r1, [r7, #4]
+ add r2, #0xf8
+ strb r1, [r0, r2]
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+_0222E7BA:
+ mov r3, #0xce
+ ldr r0, [sp]
+ lsl r3, r3, #2
+ add r4, r3, #0
+ add r1, r0, #0
+ add r1, r1, r3
+ sub r4, #0x10
+ add r2, r0, #0
+ ldrb r2, [r2, r4]
+ sub r3, #0xf
+ add r4, r0, #0
+ ldrb r3, [r4, r3]
+ bl MOD12_022383EC
+ cmp r0, #1
+ bne _0222E7E2
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222E7E2:
+ mov r0, #5
+ strh r0, [r7]
+ b _0222EC00
+_0222E7E8:
+ mov r1, #0xc3
+ ldr r0, [sp]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ ldr r1, [sp]
+ mov r4, #0xca
+ lsl r4, r4, #2
+ add r3, r1, #0
+ mov r2, #0xe
+ add r3, r3, r4
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222E82A
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222E80C:
+ ldr r0, [sp]
+ mov r1, #0xc3
+ ldr r4, _0222EAE8 ; =0x00000127
+ ldr r3, [r0]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ beq _0222E82C
+_0222E82A:
+ b _0222EC00
+_0222E82C:
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222E834:
+ ldr r0, [r7, #4]
+ add r0, r0, #1
+ str r0, [r7, #4]
+ cmp r0, #4
+ blt _0222E84A
+ mov r0, #0
+ str r0, [r7, #4]
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222E84A:
+ mov r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222E850:
+ mov r6, #0xce
+ lsl r6, r6, #2
+ add r5, r6, #0
+ mov r4, #0
+ add r5, #0xc8
+_0222E85A:
+ ldr r0, [sp]
+ add r2, r4, #0
+ add r1, r0, #0
+ add r3, r0, #0
+ add r1, r1, r6
+ add r3, r3, r5
+ bl MOD12_02238660
+ add r4, r4, #1
+ cmp r4, #4
+ blt _0222E85A
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222E878:
+ mov r5, #0
+ add r2, sp, #0x40
+ add r3, sp, #0x34
+ add r6, sp, #4
+ mov r0, #4
+_0222E882:
+ mov r1, #0
+ str r1, [r2]
+ str r5, [r3]
+ add r4, r6, #0
+_0222E88A:
+ add r1, r1, #1
+ stmia r4!, {r0}
+ cmp r1, #4
+ blt _0222E88A
+ add r5, r5, #1
+ add r2, r2, #4
+ add r3, r3, #4
+ add r6, #0x10
+ cmp r5, #3
+ blt _0222E882
+ mov r3, #0
+ add r6, sp, #0x40
+_0222E8A2:
+ ldr r0, [sp]
+ add r1, r0, r3
+ ldr r0, _0222EAE4 ; =0x00000231
+ ldrb r1, [r1, r0]
+ ldr r0, [sp]
+ add r2, r0, r1
+ ldr r0, _0222EAEC ; =0x0000023E
+ ldrb r0, [r2, r0]
+ lsl r0, r0, #2
+ ldr r4, [r6, r0]
+ add r4, r4, #1
+ str r4, [r6, r0]
+ ldr r0, _0222EAEC ; =0x0000023E
+ mov r4, #0
+ ldrb r0, [r2, r0]
+ lsl r2, r0, #4
+ add r0, sp, #4
+ add r5, r0, r2
+ add r2, r5, #0
+_0222E8C8:
+ ldr r0, [r2]
+ cmp r0, #4
+ bne _0222E8D4
+ lsl r0, r4, #2
+ str r1, [r5, r0]
+ b _0222E8DC
+_0222E8D4:
+ add r4, r4, #1
+ add r2, r2, #4
+ cmp r4, #4
+ blt _0222E8C8
+_0222E8DC:
+ add r3, r3, #1
+ cmp r3, #4
+ blt _0222E8A2
+ mov r6, #0
+_0222E8E4:
+ mov r2, #2
+ cmp r6, #2
+ bge _0222E910
+ add r0, sp, #0x48
+ add r1, sp, #0x3c
+_0222E8EE:
+ sub r3, r0, #4
+ ldr r5, [r0]
+ ldr r4, [r3]
+ cmp r4, r5
+ bge _0222E906
+ str r4, [r0]
+ str r5, [r3]
+ sub r3, r1, #4
+ ldr r5, [r1]
+ ldr r4, [r3]
+ str r4, [r1]
+ str r5, [r3]
+_0222E906:
+ sub r2, r2, #1
+ sub r0, r0, #4
+ sub r1, r1, #4
+ cmp r2, r6
+ bgt _0222E8EE
+_0222E910:
+ add r6, r6, #1
+ cmp r6, #2
+ blt _0222E8E4
+ ldr r0, [r7, #4]
+ mov r2, #0x41
+ lsl r0, r0, #2
+ add r1, sp, #0x34
+ ldr r3, [r1, r0]
+ ldr r0, [sp]
+ lsl r2, r2, #4
+ strb r3, [r0, r2]
+ mov r3, #0
+ ldr r6, _0222EAF0 ; =0x00000411
+ add r2, r3, #0
+ add r5, sp, #4
+_0222E92E:
+ ldr r0, [r7, #4]
+ ldr r4, [sp]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r4, r4, r3
+ lsl r0, r0, #4
+ add r0, r5, r0
+ ldr r0, [r2, r0]
+ add r3, r3, #1
+ add r2, r2, #4
+ strb r0, [r4, r6]
+ cmp r3, #4
+ blt _0222E92E
+ ldr r0, [r7, #4]
+ lsl r1, r0, #2
+ add r0, sp, #0x40
+ ldr r0, [r0, r1]
+ cmp r0, #4
+ bhi _0222E992
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222E960: ; jump table
+ .short _0222E992 - _0222E960 - 2 ; case 0
+ .short _0222E96A - _0222E960 - 2 ; case 1
+ .short _0222E974 - _0222E960 - 2 ; case 2
+ .short _0222E97E - _0222E960 - 2 ; case 3
+ .short _0222E988 - _0222E960 - 2 ; case 4
+_0222E96A:
+ ldr r1, _0222EAF4 ; =0x0000040C
+ ldr r0, [sp]
+ mov r2, #0xa
+ strb r2, [r0, r1]
+ b _0222E99C
+_0222E974:
+ ldr r1, _0222EAF4 ; =0x0000040C
+ ldr r0, [sp]
+ mov r2, #7
+ strb r2, [r0, r1]
+ b _0222E99C
+_0222E97E:
+ ldr r1, _0222EAF4 ; =0x0000040C
+ ldr r0, [sp]
+ mov r2, #8
+ strb r2, [r0, r1]
+ b _0222E99C
+_0222E988:
+ ldr r1, _0222EAF4 ; =0x0000040C
+ ldr r0, [sp]
+ mov r2, #9
+ strb r2, [r0, r1]
+ b _0222E99C
+_0222E992:
+ mov r0, #0xc
+ strh r0, [r7]
+ add sp, #0x4c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_0222E99C:
+ ldr r2, _0222EAF8 ; =0x0000040D
+ ldr r0, [sp]
+ mov r1, #0
+ add r3, r2, #0
+ strb r1, [r0, r2]
+ sub r3, #0xd
+ add r1, r0, #0
+ add r1, r1, r3
+ sub r2, #0xe5
+ add r3, r0, #0
+ ldrb r2, [r3, r2]
+ bl MOD12_02235274
+ ldr r0, [sp]
+ ldr r3, _0222EAFC ; =0x00000406
+ add r1, r0, #0
+ add r1, r1, r3
+ sub r3, #0xde
+ add r2, r0, #0
+ ldrb r2, [r2, r3]
+ bl MOD12_02235274
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+_0222E9CE:
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222E9D6:
+ mov r1, #0xc3
+ ldr r0, [sp]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ ldr r1, [sp]
+ mov r4, #0xca
+ lsl r4, r4, #2
+ add r3, r1, #0
+ mov r2, #0x10
+ add r3, r3, r4
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222EADE
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222E9FA:
+ ldr r0, [sp]
+ mov r1, #0xc3
+ ldr r4, _0222EAE8 ; =0x00000127
+ ldr r3, [r0]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222EADE
+ ldr r1, _0222EAF4 ; =0x0000040C
+ ldr r0, [sp]
+ mov r2, #0
+ strb r2, [r0, r1]
+ add r1, r1, #1
+ strb r2, [r0, r1]
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222EA2C:
+ ldr r0, [r7, #4]
+ add r0, r0, #1
+ str r0, [r7, #4]
+ cmp r0, #3
+ bge _0222EA3C
+ mov r0, #7
+ strh r0, [r7]
+ b _0222EC00
+_0222EA3C:
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222EA44:
+ mov r0, #0
+ str r0, [r7, #4]
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222EA50:
+ ldr r1, [r7, #4]
+ ldr r0, [sp]
+ ldr r2, _0222EAE4 ; =0x00000231
+ add r0, r0, r1
+ ldrb r3, [r0, r2]
+ add r1, r2, #0
+ ldr r0, [sp]
+ add r1, #0xf7
+ strb r3, [r0, r1]
+ ldr r1, [r7, #4]
+ add r2, #0xf8
+ strb r1, [r0, r2]
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+_0222EA6E:
+ mov r3, #0xce
+ ldr r0, [sp]
+ lsl r3, r3, #2
+ add r4, r3, #0
+ add r1, r0, #0
+ add r1, r1, r3
+ sub r4, #0x10
+ add r2, r0, #0
+ ldrb r2, [r2, r4]
+ sub r3, #0xf
+ add r4, r0, #0
+ ldrb r3, [r4, r3]
+ bl MOD12_0223844C
+ cmp r0, #0
+ bne _0222EA94
+ mov r0, #0x11
+ strh r0, [r7]
+ b _0222EC00
+_0222EA94:
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222EA9C:
+ mov r1, #0xc3
+ ldr r0, [sp]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ ldr r1, [sp]
+ mov r4, #0xca
+ lsl r4, r4, #2
+ add r3, r1, #0
+ mov r2, #0x11
+ add r3, r3, r4
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222EADE
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222EAC0:
+ ldr r0, [sp]
+ mov r1, #0xc3
+ ldr r4, _0222EAE8 ; =0x00000127
+ ldr r3, [r0]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ beq _0222EAE0
+_0222EADE:
+ b _0222EC00
+_0222EAE0:
+ ldr r1, _0222EAF4 ; =0x0000040C
+ b _0222EB00
+ .align 2, 0
+_0222EAE4: .word 0x00000231
+_0222EAE8: .word 0x00000127
+_0222EAEC: .word 0x0000023E
+_0222EAF0: .word 0x00000411
+_0222EAF4: .word 0x0000040C
+_0222EAF8: .word 0x0000040D
+_0222EAFC: .word 0x00000406
+_0222EB00:
+ ldr r0, [sp]
+ mov r2, #0
+ strb r2, [r0, r1]
+ add r1, r1, #1
+ strb r2, [r0, r1]
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222EB12:
+ ldr r0, [r7, #4]
+ add r0, r0, #1
+ str r0, [r7, #4]
+ cmp r0, #4
+ bge _0222EB22
+ mov r0, #0xd
+ strh r0, [r7]
+ b _0222EC00
+_0222EB22:
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222EB2A:
+ mov r0, #0
+ str r0, [r7, #4]
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222EB36:
+ mov r1, #0xce
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ add r0, r0, r1
+ bl MOD12_02238210
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+_0222EB48:
+ ldr r1, [r7, #4]
+ ldr r0, [sp]
+ ldr r2, _0222EC08 ; =0x00000231
+ add r0, r0, r1
+ ldrb r3, [r0, r2]
+ add r1, r2, #0
+ ldr r0, [sp]
+ add r1, #0xf7
+ strb r3, [r0, r1]
+ ldr r1, [r7, #4]
+ add r2, #0xf8
+ strb r1, [r0, r2]
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+_0222EB66:
+ mov r3, #0xce
+ ldr r0, [sp]
+ lsl r3, r3, #2
+ add r4, r3, #0
+ add r1, r0, #0
+ add r1, r1, r3
+ sub r4, #0x10
+ add r2, r0, #0
+ ldrb r2, [r2, r4]
+ sub r3, #0xf
+ add r4, r0, #0
+ ldrb r3, [r4, r3]
+ bl MOD12_022384AC
+ cmp r0, #1
+ bne _0222EB8E
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222EB8E:
+ mov r0, #0x18
+ strh r0, [r7]
+ b _0222EC00
+_0222EB94:
+ mov r1, #0xc3
+ ldr r0, [sp]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ ldr r1, [sp]
+ mov r4, #0xca
+ lsl r4, r4, #2
+ add r3, r1, #0
+ mov r2, #0xf
+ add r3, r3, r4
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222EC00
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222EBB8:
+ ldr r0, [sp]
+ mov r1, #0xc3
+ ldr r4, _0222EC0C ; =0x00000127
+ ldr r3, [r0]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222EC00
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222EBDE:
+ ldr r0, [r7, #4]
+ add r0, r0, #1
+ str r0, [r7, #4]
+ cmp r0, #4
+ blt _0222EBF4
+ mov r0, #0
+ str r0, [r7, #4]
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _0222EC00
+_0222EBF4:
+ mov r0, #0x14
+ strh r0, [r7]
+ b _0222EC00
+_0222EBFA:
+ add sp, #0x4c
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0222EC00:
+ mov r0, #0
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222EC08: .word 0x00000231
+_0222EC0C: .word 0x00000127
+
+ thumb_func_start MOD12_0222EC10
+MOD12_0222EC10: ; 0x0222EC10
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _0222EC26
+ cmp r0, #1
+ beq _0222EC2C
+ cmp r0, #2
+ beq _0222EC4C
+ b _0222EC70
+_0222EC26:
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222EC74
+_0222EC2C:
+ mov r0, #0xc3
+ mov r3, #0xca
+ lsl r0, r0, #4
+ lsl r3, r3, #2
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #0x12
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222EC74
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222EC74
+_0222EC4C:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ ldr r3, [r5]
+ add r0, r5, r0
+ ldr r5, _0222EC78 ; =0x00000127
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222EC74
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222EC74
+_0222EC70:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222EC74:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222EC78: .word 0x00000127
+
+ thumb_func_start MOD12_0222EC7C
+MOD12_0222EC7C: ; 0x0222EC7C
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldrh r1, [r5]
+ add r4, r0, #0
+ cmp r1, #6
+ bls _0222EC8A
+ b _0222EDEE
+_0222EC8A:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0222EC96: ; jump table
+ .short _0222ECA4 - _0222EC96 - 2 ; case 0
+ .short _0222ECC4 - _0222EC96 - 2 ; case 1
+ .short _0222ECEA - _0222EC96 - 2 ; case 2
+ .short _0222ED4A - _0222EC96 - 2 ; case 3
+ .short _0222ED6E - _0222EC96 - 2 ; case 4
+ .short _0222EDAA - _0222EC96 - 2 ; case 5
+ .short _0222EDCA - _0222EC96 - 2 ; case 6
+_0222ECA4:
+ mov r0, #0xc3
+ mov r3, #0xca
+ lsl r0, r0, #4
+ lsl r3, r3, #2
+ add r0, r4, r0
+ add r1, r4, #0
+ mov r2, #0x15
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222ECE0
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _0222EE0E
+_0222ECC4:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _0222EE14 ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ beq _0222ECE2
+_0222ECE0:
+ b _0222EE0E
+_0222ECE2:
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _0222EE0E
+_0222ECEA:
+ mov r2, #0x36
+ mov r1, #0
+ lsl r2, r2, #4
+ add r0, r1, #0
+ add r2, r4, r2
+_0222ECF4:
+ ldr r3, [r2]
+ lsl r3, r3, #0x1a
+ lsr r3, r3, #0x1e
+ beq _0222ECFE
+ add r1, r1, #1
+_0222ECFE:
+ add r0, r0, #1
+ add r2, #0x2c
+ cmp r0, #4
+ blt _0222ECF4
+ mov r0, #0x23
+ lsl r0, r0, #4
+ ldrb r0, [r4, r0]
+ cmp r0, #3
+ bhs _0222ED1C
+ cmp r1, #4
+ bge _0222ED1C
+ ldr r0, _0222EE18 ; =0x0000040C
+ mov r1, #0x2a
+ strb r1, [r4, r0]
+ b _0222ED22
+_0222ED1C:
+ ldr r0, _0222EE18 ; =0x0000040C
+ mov r1, #0
+ strb r1, [r4, r0]
+_0222ED22:
+ ldr r3, _0222EE1C ; =0x0000040E
+ mov r1, #0
+ strb r1, [r4, r3]
+ add r0, r3, #1
+ strb r1, [r4, r0]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ sub r3, #0xe6
+ add r0, r4, r0
+ add r1, r4, #0
+ mov r2, #0x14
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222EE0E
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _0222EE0E
+_0222ED4A:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _0222EE14 ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222EE0E
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _0222EE0E
+_0222ED6E:
+ mov r1, #0xce
+ lsl r1, r1, #2
+ add r1, r4, r1
+ bl MOD12_0223818C
+ mov r0, #0x23
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD12_02235C60
+ ldr r0, _0222EE20 ; =0x00000236
+ mov r6, #0
+ add r1, r0, #0
+ add r3, r4, #0
+ add r1, #0x20
+_0222ED8C:
+ ldrh r2, [r3, r0]
+ add r6, r6, #1
+ strh r2, [r3, r1]
+ add r3, r3, #2
+ cmp r6, #4
+ blt _0222ED8C
+ mov r0, #0x23
+ lsl r0, r0, #4
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _0222EE0E
+_0222EDAA:
+ mov r0, #0xc3
+ mov r3, #0x23
+ lsl r0, r0, #4
+ lsl r3, r3, #4
+ add r0, r4, r0
+ add r1, r4, #0
+ mov r2, #0x13
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222EE0E
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _0222EE0E
+_0222EDCA:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _0222EE14 ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222EE0E
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _0222EE0E
+_0222EDEE:
+ mov r0, #0x23
+ lsl r0, r0, #4
+ ldrb r1, [r4, r0]
+ cmp r1, #4
+ blo _0222EE00
+ mov r0, #0xf
+ strh r0, [r5, #2]
+ mov r0, #2
+ pop {r4, r5, r6, pc}
+_0222EE00:
+ mov r1, #0
+ add r0, r0, #5
+ strb r1, [r4, r0]
+ mov r0, #3
+ strh r0, [r5, #2]
+ mov r0, #2
+ pop {r4, r5, r6, pc}
+_0222EE0E:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_0222EE14: .word 0x00000127
+_0222EE18: .word 0x0000040C
+_0222EE1C: .word 0x0000040E
+_0222EE20: .word 0x00000236
+
+ thumb_func_start MOD12_0222EE24
+MOD12_0222EE24: ; 0x0222EE24
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r3, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #3
+ bhi _0222EED0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222EE3C: ; jump table
+ .short _0222EE44 - _0222EE3C - 2 ; case 0
+ .short _0222EE66 - _0222EE3C - 2 ; case 1
+ .short _0222EE90 - _0222EE3C - 2 ; case 2
+ .short _0222EEB4 - _0222EE3C - 2 ; case 3
+_0222EE44:
+ mov r1, #0
+ ldr r7, _0222EEF4 ; =0x0000012E
+ add r2, r3, #0
+ add r5, r1, #0
+_0222EE4C:
+ ldr r0, _0222EEF8 ; =0x00000242
+ ldr r6, [r3]
+ ldrsh r0, [r2, r0]
+ add r6, r6, r5
+ add r1, r1, #1
+ strh r0, [r6, r7]
+ add r2, r2, #2
+ add r5, #0xc
+ cmp r1, #4
+ blt _0222EE4C
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+_0222EE66:
+ ldr r5, _0222EEFC ; =0x0000040C
+ mov r0, #0x2b
+ strb r0, [r3, r5]
+ add r0, r5, #1
+ mov r1, #0
+ strb r1, [r3, r0]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ sub r5, #0xe4
+ add r0, r3, r0
+ add r1, r3, #0
+ mov r2, #3
+ add r3, r3, r5
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222EEF0
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222EEF0
+_0222EE90:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ ldr r5, [r3]
+ add r0, r3, r0
+ ldr r3, _0222EF00 ; =0x00000127
+ sub r2, r3, #4
+ ldrb r1, [r5, r3]
+ sub r3, #0xb
+ ldrb r2, [r5, r2]
+ ldrb r3, [r5, r3]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222EEF0
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222EEF0
+_0222EEB4:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ add r0, r3, r0
+ add r1, r3, #0
+ mov r2, #1
+ mov r3, #0
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222EEF0
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222EEF0
+_0222EED0:
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ ldr r4, [r3]
+ add r0, r3, r0
+ ldr r3, _0222EF00 ; =0x00000127
+ sub r2, r3, #4
+ ldrb r1, [r4, r3]
+ sub r3, #0xb
+ ldrb r2, [r4, r2]
+ ldrb r3, [r4, r3]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222EEF0
+ mov r0, #3
+ pop {r3, r4, r5, r6, r7, pc}
+_0222EEF0:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222EEF4: .word 0x0000012E
+_0222EEF8: .word 0x00000242
+_0222EEFC: .word 0x0000040C
+_0222EF00: .word 0x00000127
+
+ thumb_func_start MOD12_0222EF04
+MOD12_0222EF04: ; 0x0222EF04
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r1, #1
+ lsl r1, r1, #0x1a
+ ldr r0, [r1]
+ ldr r2, _0222F15C ; =0xFFFFE0FF
+ and r0, r2
+ str r0, [r1]
+ ldr r0, _0222F160 ; =0x04001000
+ ldr r3, [r0]
+ and r2, r3
+ str r2, [r0]
+ ldr r3, [r1]
+ ldr r2, _0222F164 ; =0xFFFF1FFF
+ and r3, r2
+ str r3, [r1]
+ ldr r3, [r0]
+ add r1, #0x50
+ and r2, r3
+ str r2, [r0]
+ mov r2, #0
+ strh r2, [r1]
+ add r0, #0x50
+ strh r2, [r0]
+ mov r2, #7
+ mov r0, #3
+ mov r1, #0x16
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ ldr r1, _0222F168 ; =0x00000F68
+ add r0, r4, #0
+ mov r2, #0x16
+ bl FUN_02006268
+ ldr r2, _0222F168 ; =0x00000F68
+ mov r1, #0
+ add r5, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x16
+ bl MOD12_022312D8
+ str r0, [r5, #8]
+ add r0, r4, #0
+ bl FUN_0200628C
+ mov r1, #0x5b
+ str r0, [r5]
+ lsl r1, r1, #2
+ str r5, [r0, r1]
+ ldr r2, [r5]
+ mov r3, #0
+ add r0, r1, #4
+ strb r3, [r2, r0]
+ ldr r0, [r5]
+ str r0, [r5, #0xc]
+ add r0, r5, #0
+ bl MOD12_0222F720
+ mov r0, #0x16
+ bl FUN_02002FD0
+ str r0, [r5, #0x50]
+ mov r1, #1
+ bl FUN_020038F0
+ mov r2, #2
+ ldr r0, [r5, #0x50]
+ mov r1, #0
+ lsl r2, r2, #8
+ mov r3, #0x16
+ bl FUN_02003008
+ mov r1, #1
+ ldr r0, [r5, #0x50]
+ lsl r2, r1, #9
+ mov r3, #0x16
+ bl FUN_02003008
+ mov r2, #7
+ ldr r0, [r5, #0x50]
+ mov r1, #2
+ lsl r2, r2, #6
+ mov r3, #0x16
+ bl FUN_02003008
+ mov r2, #2
+ ldr r0, [r5, #0x50]
+ mov r1, #3
+ lsl r2, r2, #8
+ mov r3, #0x16
+ bl FUN_02003008
+ mov r0, #0x16
+ bl FUN_02016B94
+ str r0, [r5, #0x30]
+ mov r0, #0x40
+ mov r1, #0x16
+ bl FUN_0201C24C
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ ldr r0, [r5, #0x30]
+ bl MOD12_0222F548
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ mov r0, #2
+ mov r1, #0x16
+ bl FUN_02002C50
+ mov r0, #0x16
+ bl FUN_0200BB14
+ ldr r1, _0222F16C ; =0x02244AFC
+ ldr r2, _0222F170 ; =0x02244AB4
+ mov r3, #0x20
+ str r0, [r5, #0x28]
+ bl FUN_0200BB6C
+ ldr r1, _0222F174 ; =0x00100010
+ mov r0, #1
+ bl FUN_02008D44
+ mov r0, #1
+ bl FUN_02008DDC
+ ldr r0, [r5, #0x28]
+ bl FUN_0200BB34
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ mov r2, #0x80
+ bl FUN_0200BBF0
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ ldr r2, _0222F178 ; =0x02244AC8
+ bl FUN_0200BF60
+ ldr r0, [r5, #0x28]
+ bl FUN_0200BB68
+ mov r2, #1
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ mov r0, #0x16
+ bl FUN_02006D98
+ str r0, [r5, #0x10]
+ bl MOD12_0222F6E0
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xc4
+ mov r3, #0x16
+ bl FUN_0200A86C
+ str r0, [r5, #0x44]
+ mov r0, #0x16
+ bl FUN_0200AA80
+ str r0, [r5, #0x48]
+ mov r0, #5
+ lsl r0, r0, #6
+ mov r1, #0x16
+ bl FUN_020219F4
+ str r0, [r5, #0x4c]
+ add r0, r5, #0
+ bl MOD12_0222F834
+ add r0, r5, #0
+ bl MOD12_0222F938
+ add r0, r5, #0
+ bl MOD12_0222F6B4
+ add r0, r5, #0
+ bl MOD12_0222F748
+ add r0, r5, #0
+ bl MOD12_0222F7F4
+ mov r0, #1
+ str r0, [sp]
+ add r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ ldr r0, [r5, #0x50]
+ ldr r3, _0222F17C ; =0x00007FFF
+ add r2, r1, #0
+ bl FUN_02003914
+ mov r1, #1
+ add r0, r1, #0
+ str r1, [sp]
+ add r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x50]
+ ldr r3, _0222F17C ; =0x00007FFF
+ mov r2, #0
+ bl FUN_02003914
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0xe0
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x50]
+ ldr r3, _0222F17C ; =0x00007FFF
+ mov r1, #2
+ bl FUN_02003914
+ mov r2, #0
+ mov r0, #1
+ str r2, [sp]
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x50]
+ ldr r3, _0222F17C ; =0x00007FFF
+ mov r1, #3
+ bl FUN_02003914
+ bl FUN_02033E74
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0x16
+ str r1, [sp, #8]
+ mov r1, #0x1b
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldr r0, _0222F180 ; =MOD12_0222F4F4
+ ldr r2, _0222F184 ; =0x0000EA60
+ add r1, r5, #0
+ bl FUN_0200CA44
+ str r0, [r5, #4]
+ ldr r0, _0222F188 ; =0x000004F8
+ mov r1, #1
+ strb r1, [r5, r0]
+ bl FUN_0201E788
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #0
+ bl FUN_0200415C
+ ldr r1, _0222F18C ; =0x0000046F
+ mov r0, #6
+ mov r2, #1
+ bl FUN_0200433C
+ ldr r1, [r5]
+ ldr r0, _0222F190 ; =0x00000171
+ ldrb r0, [r1, r0]
+ bl FUN_020833D4
+ ldr r0, _0222F194 ; =MOD12_0222F458
+ add r1, r5, #0
+ bl FUN_02015F10
+ ldr r0, _0222F198 ; =0x00000605
+ bl FUN_020054C8
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_0222F15C: .word 0xFFFFE0FF
+_0222F160: .word 0x04001000
+_0222F164: .word 0xFFFF1FFF
+_0222F168: .word 0x00000F68
+_0222F16C: .word 0x02244AFC
+_0222F170: .word 0x02244AB4
+_0222F174: .word 0x00100010
+_0222F178: .word 0x02244AC8
+_0222F17C: .word 0x00007FFF
+_0222F180: .word MOD12_0222F4F4
+_0222F184: .word 0x0000EA60
+_0222F188: .word 0x000004F8
+_0222F18C: .word 0x0000046F
+_0222F190: .word 0x00000171
+_0222F194: .word MOD12_0222F458
+_0222F198: .word 0x00000605
+
+ thumb_func_start MOD12_0222F19C
+MOD12_0222F19C: ; 0x0222F19C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02082878
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _0222F1C0
+ cmp r0, #1
+ beq _0222F236
+ cmp r0, #2
+ bne _0222F1BE
+ b _0222F2EC
+_0222F1BE:
+ b _0222F2FA
+_0222F1C0:
+ bl FUN_0200E308
+ cmp r0, #1
+ beq _0222F1CA
+ b _0222F2FA
+_0222F1CA:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _0222F300 ; =0x00007FFF
+ ldr r2, _0222F304 ; =0x0000FFFF
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x50]
+ mov r1, #1
+ mov r3, #6
+ bl FUN_02003210
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _0222F300 ; =0x00007FFF
+ ldr r2, _0222F304 ; =0x0000FFFF
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x50]
+ mov r1, #2
+ mov r3, #6
+ bl FUN_02003210
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ ldr r2, _0222F300 ; =0x00007FFF
+ str r0, [sp, #4]
+ str r2, [sp, #8]
+ ldr r0, [r4, #0x50]
+ mov r1, #4
+ lsr r2, r2, #1
+ mov r3, #6
+ bl FUN_02003210
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _0222F300 ; =0x00007FFF
+ ldr r2, _0222F304 ; =0x0000FFFF
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x50]
+ mov r1, #8
+ mov r3, #6
+ bl FUN_02003210
+ ldr r0, _0222F308 ; =0x000006E5
+ bl FUN_020054C8
+ mov r0, #1
+ str r0, [r5]
+ b _0222F2FA
+_0222F236:
+ ldr r0, [r4]
+ bl FUN_020828BC
+ cmp r0, #1
+ bne _0222F2A8
+ ldr r2, _0222F30C ; =0x000004F6
+ ldr r1, _0222F310 ; =0x00000F14
+ ldrh r2, [r4, r2]
+ add r0, r4, #0
+ add r1, r4, r1
+ lsl r3, r2, #2
+ ldr r2, _0222F314 ; =0x02244B44
+ ldr r2, [r2, r3]
+ blx r2
+ sub r1, r0, #1
+ cmp r1, #1
+ bhi _0222F27A
+ cmp r0, #1
+ bne _0222F264
+ ldr r0, _0222F30C ; =0x000004F6
+ ldrh r1, [r4, r0]
+ add r1, r1, #1
+ b _0222F26A
+_0222F264:
+ ldr r0, _0222F318 ; =0x00000F16
+ ldrh r1, [r4, r0]
+ ldr r0, _0222F30C ; =0x000004F6
+_0222F26A:
+ strh r1, [r4, r0]
+ ldr r0, _0222F310 ; =0x00000F14
+ mov r1, #0
+ add r0, r4, r0
+ mov r2, #8
+ bl MI_CpuFill8
+ b _0222F2A8
+_0222F27A:
+ cmp r0, #3
+ bne _0222F2A8
+ mov r0, #2
+ str r0, [r5]
+ ldr r0, _0222F310 ; =0x00000F14
+ mov r1, #0
+ add r0, r4, r0
+ mov r2, #8
+ bl MI_CpuFill8
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x16
+ str r0, [sp, #8]
+ mov r0, #2
+ mov r1, #0x10
+ mov r2, #0x24
+ mov r3, #0
+ bl FUN_0200E1D0
+ b _0222F2FA
+_0222F2A8:
+ ldr r0, _0222F31C ; =0x000004FC
+ add r0, r4, r0
+ bl MOD12_022410A0
+ ldr r0, _0222F31C ; =0x000004FC
+ add r1, r4, #0
+ add r0, r4, r0
+ bl MOD12_02241114
+ ldr r0, _0222F320 ; =0x00000F1C
+ ldrb r1, [r4, r0]
+ cmp r1, #1
+ bne _0222F2FA
+ mov r1, #2
+ sub r0, #8
+ str r1, [r5]
+ add r0, r4, r0
+ mov r1, #0
+ mov r2, #8
+ bl MI_CpuFill8
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x16
+ str r0, [sp, #8]
+ mov r0, #2
+ mov r1, #0x10
+ mov r2, #0x24
+ mov r3, #0
+ bl FUN_0200E1D0
+ b _0222F2FA
+_0222F2EC:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _0222F2FA
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_0222F2FA:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_0222F300: .word 0x00007FFF
+_0222F304: .word 0x0000FFFF
+_0222F308: .word 0x000006E5
+_0222F30C: .word 0x000004F6
+_0222F310: .word 0x00000F14
+_0222F314: .word 0x02244B44
+_0222F318: .word 0x00000F16
+_0222F31C: .word 0x000004FC
+_0222F320: .word 0x00000F1C
+
+ thumb_func_start MOD12_0222F324
+MOD12_0222F324: ; 0x0222F324
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ bl FUN_02006278
+ add r4, r0, #0
+ bl FUN_02012EAC
+ add r0, r4, #0
+ bl MOD12_0222F7C0
+ add r0, r4, #0
+ bl MOD12_0222F824
+ add r0, r4, #0
+ bl MOD12_0222F934
+ add r0, r4, #0
+ bl MOD12_0222F98C
+ add r0, r4, #0
+ add r0, #0x34
+ bl FUN_02019178
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x30]
+ mov r1, #3
+ bl FUN_020178A0
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201797C
+ ldr r0, [r4, #0x30]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ bl FUN_0200C398
+ ldr r0, [r4, #0x28]
+ bl FUN_0200BD04
+ bl FUN_0201C29C
+ mov r7, #0xf2
+ mov r6, #0
+ add r5, r4, #0
+ lsl r7, r7, #4
+_0222F3A4:
+ ldr r0, [r5, r7]
+ cmp r0, #0
+ beq _0222F3AE
+ bl MOD17_021DD540
+_0222F3AE:
+ add r6, r6, #1
+ add r5, #0x10
+ cmp r6, #4
+ blt _0222F3A4
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD12_02239874
+ add r0, r4, #0
+ bl MOD12_02239A58
+ ldr r0, [r4, #0x10]
+ bl FUN_020072E8
+ mov r0, #2
+ bl FUN_02002CF8
+ ldr r0, [r4, #0x50]
+ mov r1, #0
+ bl FUN_02003038
+ ldr r0, [r4, #0x50]
+ mov r1, #1
+ bl FUN_02003038
+ ldr r0, [r4, #0x50]
+ mov r1, #2
+ bl FUN_02003038
+ ldr r0, [r4, #0x50]
+ mov r1, #3
+ bl FUN_02003038
+ ldr r0, [r4, #0x50]
+ bl FUN_02002FEC
+ ldr r0, [r4, #0x48]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0x4c]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x44]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x30]
+ bl FUN_02016A18
+ ldr r0, [r4, #4]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #8]
+ bl MOD12_02231378
+ bl FUN_0201CD04
+ ldr r0, [sp]
+ bl FUN_0200627C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ mov r0, #0x16
+ bl FUN_020168D0
+ bl FUN_02083404
+ bl FUN_02033ED0
+ ldr r0, _0222F450 ; =SDK_OVERLAY_MODULE_08_ID
+ bl UnloadOverlayByID
+ ldr r0, _0222F454 ; =SDK_OVERLAY_MODULE_17_ID
+ bl UnloadOverlayByID
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222F450: .word SDK_OVERLAY_MODULE_08_ID
+_0222F454: .word SDK_OVERLAY_MODULE_17_ID
+
+ thumb_func_start MOD12_0222F458
+MOD12_0222F458: ; 0x0222F458
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, _0222F4E4 ; =0x00000F63
+ sub r1, r0, #2
+ ldrb r3, [r6, r1]
+ sub r1, r0, #3
+ ldrb r1, [r6, r1]
+ sub r5, r0, #1
+ ldrb r5, [r6, r5]
+ lsl r2, r1, #8
+ mov r1, #0xff
+ lsl r1, r1, #8
+ and r2, r1
+ orr r2, r5
+ ldrb r4, [r6, r0]
+ ldr r5, _0222F4E8 ; =0x04000040
+ strh r2, [r5]
+ lsl r2, r3, #8
+ and r2, r1
+ orr r2, r4
+ strh r2, [r5, #4]
+ add r2, r0, #4
+ ldrb r4, [r6, r2]
+ add r2, r0, #2
+ ldrb r3, [r6, r2]
+ add r2, r0, #1
+ ldrb r2, [r6, r2]
+ add r0, r0, #3
+ ldrb r0, [r6, r0]
+ lsl r2, r2, #8
+ and r2, r1
+ orr r0, r2
+ strh r0, [r5, #2]
+ lsl r0, r3, #8
+ and r0, r1
+ orr r0, r4
+ strh r0, [r5, #6]
+ ldr r0, [r6, #0x10]
+ bl FUN_020081C4
+ mov r7, #0xf2
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #4
+_0222F4B0:
+ ldr r0, [r5, r7]
+ cmp r0, #0
+ beq _0222F4BA
+ bl MOD17_021DD58C
+_0222F4BA:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #4
+ blt _0222F4B0
+ bl FUN_0201C30C
+ bl FUN_0200BC30
+ ldr r0, [r6, #0x50]
+ bl FUN_0200372C
+ ldr r0, [r6, #0x30]
+ bl FUN_0201AB60
+ ldr r3, _0222F4EC ; =0x027E0000
+ ldr r1, _0222F4F0 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222F4E4: .word 0x00000F63
+_0222F4E8: .word 0x04000040
+_0222F4EC: .word 0x027E0000
+_0222F4F0: .word 0x00003FF8
+
+ thumb_func_start MOD12_0222F4F4
+MOD12_0222F4F4: ; 0x0222F4F4
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r0, _0222F540 ; =0x000004F8
+ add r6, r1, #0
+ ldrb r0, [r6, r0]
+ cmp r0, #1
+ bne _0222F534
+ ldr r0, [r6, #0x10]
+ bl FUN_02006ED4
+ mov r7, #0xf2
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #4
+_0222F50E:
+ ldr r0, [r5, r7]
+ cmp r0, #0
+ beq _0222F518
+ bl MOD17_021DD518
+_0222F518:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #4
+ blt _0222F50E
+ bl MOD08_02215A44
+ ldr r0, [r6, #0x2c]
+ bl FUN_0200BC1C
+ bl FUN_0200BC38
+ ldr r0, _0222F544 ; =0x04000540
+ mov r1, #1
+ str r1, [r0]
+_0222F534:
+ ldr r1, [r6, #0x30]
+ mov r0, #0x16
+ bl FUN_020335F0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222F540: .word 0x000004F8
+_0222F544: .word 0x04000540
+
+ thumb_func_start MOD12_0222F548
+MOD12_0222F548: ; 0x0222F548
+ push {r3, r4, r5, lr}
+ sub sp, #0xa8
+ add r4, r0, #0
+ bl FUN_0201E6D8
+ ldr r5, _0222F6A0 ; =0x02244B1C
+ add r3, sp, #0x2c
+ mov r2, #5
+_0222F558:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0222F558
+ add r0, sp, #0x2c
+ bl FUN_0201E66C
+ mov r1, #6
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x12
+ bl MIi_CpuClear32
+ mov r1, #0x62
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ bl MIi_CpuClear32
+ mov r1, #0x19
+ mov r2, #1
+ mov r0, #0
+ lsl r1, r1, #0x16
+ lsl r2, r2, #0x12
+ bl MIi_CpuClear32
+ mov r1, #0x66
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ bl MIi_CpuClear32
+ ldr r5, _0222F6A4 ; =0x02244AA4
+ add r3, sp, #0x1c
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _0222F6A8 ; =0x02244B70
+ add r3, sp, #0x54
+ mov r2, #0xa
+_0222F5B8:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0222F5B8
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ add r2, sp, #0x54
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #2
+ add r2, sp, #0x70
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #3
+ add r2, sp, #0x8c
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r1, #3
+ add r0, r4, #0
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ ldr r1, _0222F6AC ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #1
+ orr r2, r0
+ strh r2, [r1]
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r5, _0222F6B0 ; =0x02244AE0
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #4
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #4
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add sp, #0xa8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222F6A0: .word 0x02244B1C
+_0222F6A4: .word 0x02244AA4
+_0222F6A8: .word 0x02244B70
+_0222F6AC: .word 0x04000008
+_0222F6B0: .word 0x02244AE0
+
+ thumb_func_start MOD12_0222F6B4
+MOD12_0222F6B4: ; 0x0222F6B4
+ push {lr}
+ sub sp, #0x14
+ add r1, r0, #0
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x1f
+ str r0, [sp, #0x10]
+ ldr r0, [r1, #0x30]
+ add r1, #0x34
+ mov r2, #1
+ mov r3, #2
+ bl FUN_02019064
+ add sp, #0x14
+ pop {pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0222F6E0
+MOD12_0222F6E0: ; 0x0222F6E0
+ push {r3, r4, r5, lr}
+ ldr r3, _0222F718 ; =0x021064B8
+ mov r0, #2
+ mov r1, #0
+ ldr r3, [r3]
+ lsl r0, r0, #0xe
+ add r2, r1, #0
+ blx r3
+ ldr r3, _0222F71C ; =0x021064C0
+ mov r1, #0
+ add r4, r0, #0
+ ldr r3, [r3]
+ mov r0, #0x80
+ add r2, r1, #0
+ blx r3
+ add r5, r0, #0
+ cmp r4, #0
+ bne _0222F708
+ bl ErrorHandling
+_0222F708:
+ cmp r5, #0
+ bne _0222F710
+ bl ErrorHandling
+_0222F710:
+ bl FUN_02012CC8
+ pop {r3, r4, r5, pc}
+ nop
+_0222F718: .word 0x021064B8
+_0222F71C: .word 0x021064C0
+
+ thumb_func_start MOD12_0222F720
+MOD12_0222F720: ; 0x0222F720
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _0222F72E
+ bl ErrorHandling
+_0222F72E:
+ mov r3, #0
+ mov r0, #3
+_0222F732:
+ add r1, r4, r3
+ sub r2, r0, r3
+ add r1, #0xd4
+ add r3, r3, #1
+ strb r2, [r1]
+ cmp r3, #4
+ blt _0222F732
+ add r0, r4, #0
+ bl MOD12_02239B88
+ pop {r4, pc}
+
+ thumb_func_start MOD12_0222F748
+MOD12_0222F748: ; 0x0222F748
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ mov r0, #0x2e
+ str r0, [sp]
+ mov r0, #7
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, _0222F7B8 ; =0x000080E9
+ mov r1, #2
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0x50]
+ ldr r2, [r4, #0x28]
+ ldr r3, [r4, #0x2c]
+ bl FUN_0200C0DC
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ bl MOD12_0223988C
+ mov r0, #0
+ mvn r0, r0
+ ldr r3, _0222F7B8 ; =0x000080E9
+ str r0, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ ldr r2, [r4, #0x50]
+ bl MOD12_022316F8
+ ldr r3, _0222F7B8 ; =0x000080E9
+ mov r0, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #0xc8
+ str r0, [sp, #0x10]
+ mov r0, #3
+ str r0, [sp, #0x14]
+ ldr r0, _0222F7BC ; =0x0000C350
+ str r0, [sp, #0x18]
+ add r0, r4, #0
+ ldr r1, [r4, #0x28]
+ ldr r2, [r4, #0x2c]
+ add r0, #0xb4
+ bl MOD12_022317C8
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ .align 2, 0
+_0222F7B8: .word 0x000080E9
+_0222F7BC: .word 0x0000C350
+
+ thumb_func_start MOD12_0222F7C0
+MOD12_0222F7C0: ; 0x0222F7C0
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ bl MOD12_022398D8
+ add r0, r4, #0
+ add r0, #0xb4
+ bl MOD12_0223185C
+ ldr r1, _0222F7F0 ; =0x000080E9
+ mov r2, #0
+ str r1, [sp]
+ ldr r0, [r4, #0x2c]
+ mvn r2, r2
+ add r3, r1, #0
+ bl MOD12_02231780
+ ldr r0, [r4, #0x2c]
+ ldr r1, _0222F7F0 ; =0x000080E9
+ bl FUN_0200C368
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_0222F7F0: .word 0x000080E9
+
+ thumb_func_start MOD12_0222F7F4
+MOD12_0222F7F4: ; 0x0222F7F4
+ push {r3, lr}
+ sub sp, #0x18
+ add r3, r0, #0
+ mov r0, #0x2e
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, _0222F820 ; =0x000080EA
+ mov r1, #3
+ str r0, [sp, #0x14]
+ ldr r0, [r3, #0x50]
+ ldr r2, [r3, #0x28]
+ ldr r3, [r3, #0x2c]
+ bl FUN_0200C0DC
+ add sp, #0x18
+ pop {r3, pc}
+ .align 2, 0
+_0222F820: .word 0x000080EA
+
+ thumb_func_start MOD12_0222F824
+MOD12_0222F824: ; 0x0222F824
+ ldr r3, _0222F82C ; =0x0200C369
+ ldr r0, [r0, #0x2c]
+ ldr r1, _0222F830 ; =0x000080EA
+ bx r3
+ .align 2, 0
+_0222F82C: .word 0x0200C369
+_0222F830: .word 0x000080EA
+
+ thumb_func_start MOD12_0222F834
+MOD12_0222F834: ; 0x0222F834
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r1, #0x16
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #0x30]
+ mov r0, #0x2d
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x16
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x30]
+ mov r0, #0x2d
+ mov r1, #0x15
+ mov r3, #3
+ bl FUN_020068C8
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl FUN_02018744
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x50]
+ mov r1, #0x2d
+ mov r2, #0x22
+ mov r3, #0x16
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xd0
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x50]
+ mov r1, #0x2d
+ mov r2, #0x23
+ mov r3, #0x16
+ bl FUN_020030E8
+ ldr r1, [r5]
+ ldr r0, _0222F930 ; =0x00001988
+ ldr r0, [r1, r0]
+ bl FUN_02025084
+ add r4, r0, #0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x16
+ str r0, [sp, #4]
+ mov r1, #1
+ ldr r0, [r5, #0x30]
+ add r2, r1, #0
+ mov r3, #0xf
+ bl FUN_0200CD68
+ add r0, r4, #0
+ bl FUN_0200CD64
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xe0
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x50]
+ mov r1, #0x26
+ mov r3, #0x16
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x16
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x30]
+ mov r0, #0x2d
+ mov r1, #0x17
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x16
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x30]
+ mov r0, #0x2d
+ mov r1, #0x14
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xc0
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x50]
+ mov r1, #0x2d
+ mov r2, #0x24
+ mov r3, #0x16
+ bl FUN_020030E8
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222F930: .word 0x00001988
+
+ thumb_func_start MOD12_0222F934
+MOD12_0222F934: ; 0x0222F934
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0222F938
+MOD12_0222F938: ; 0x0222F938
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x16
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x30]
+ mov r0, #0x2d
+ mov r1, #0x12
+ mov r3, #4
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x16
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x30]
+ mov r0, #0x2d
+ mov r1, #0x13
+ mov r3, #4
+ bl FUN_020068C8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x50]
+ mov r1, #0x2d
+ mov r2, #0x21
+ mov r3, #0x16
+ bl FUN_020030E8
+ add sp, #0x10
+ pop {r4, pc}
+
+ thumb_func_start MOD12_0222F98C
+MOD12_0222F98C: ; 0x0222F98C
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0222F990
+MOD12_0222F990: ; 0x0222F990
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ bne _0222F9BC
+ ldr r0, [r5, #0x50]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _0222F9C0
+ ldr r0, [r5]
+ mov r1, #0x16
+ bl MOD12_022314CC
+ ldr r0, [r5]
+ bl MOD12_0223150C
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222F9C0
+_0222F9BC:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222F9C0:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_0222F9C4
+MOD12_0222F9C4: ; 0x0222F9C4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldrh r0, [r5]
+ cmp r0, #0
+ bne _0222FA10
+ ldr r0, [r4]
+ bl FUN_020832EC
+ cmp r0, #1
+ bne _0222F9DE
+ mov r1, #2
+ b _0222F9E0
+_0222F9DE:
+ mov r1, #1
+_0222F9E0:
+ add r0, r4, #0
+ add r0, #0xe9
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xea
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0xeb
+ strb r1, [r0]
+ ldr r0, _0222FA34 ; =0x000004FC
+ add r1, r4, #0
+ add r0, r4, r0
+ add r4, #0xe2
+ mov r2, #0xd
+ add r3, r4, #0
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222FA2E
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _0222FA2E
+_0222FA10:
+ ldr r0, _0222FA34 ; =0x000004FC
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _0222FA38 ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222FA2E
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222FA2E:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_0222FA34: .word 0x000004FC
+_0222FA38: .word 0x00000127
+
+ thumb_func_start MOD12_0222FA3C
+MOD12_0222FA3C: ; 0x0222FA3C
+ push {r4, lr}
+ add r4, r1, #0
+ add r3, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ bne _0222FA74
+ add r0, r3, #0
+ add r0, #0xd8
+ ldrb r0, [r0]
+ mov r2, #0
+ add r0, r3, r0
+ add r0, #0xd4
+ ldrb r1, [r0]
+ add r0, r3, #0
+ add r0, #0xe2
+ strb r1, [r0]
+ ldr r0, _0222FA98 ; =0x000004FC
+ add r1, r3, #0
+ add r0, r3, r0
+ add r3, #0xe2
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222FA92
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222FA92
+_0222FA74:
+ ldr r0, _0222FA98 ; =0x000004FC
+ ldr r4, [r3]
+ add r0, r3, r0
+ ldr r3, _0222FA9C ; =0x00000127
+ sub r2, r3, #4
+ ldrb r1, [r4, r3]
+ sub r3, #0xb
+ ldrb r2, [r4, r2]
+ ldrb r3, [r4, r3]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222FA92
+ mov r0, #1
+ pop {r4, pc}
+_0222FA92:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_0222FA98: .word 0x000004FC
+_0222FA9C: .word 0x00000127
+
+ thumb_func_start MOD12_0222FAA0
+MOD12_0222FAA0: ; 0x0222FAA0
+ push {r4, lr}
+ add r4, r1, #0
+ add r3, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ bne _0222FAE6
+ add r1, r3, #0
+ mov r0, #0
+ add r1, #0xec
+ strb r0, [r1]
+ add r2, r0, #0
+ add r1, r3, #0
+ sub r2, #0x10
+ add r1, #0xed
+ strb r2, [r1]
+ add r1, r3, #0
+ mov r2, #0x10
+ add r1, #0xee
+ strb r2, [r1]
+ add r1, r3, #0
+ add r1, #0xf0
+ strh r0, [r1]
+ ldr r0, _0222FB08 ; =0x000004FC
+ add r1, r3, #0
+ add r0, r3, r0
+ mov r2, #0xe
+ add r3, #0xe2
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222FB04
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222FB04
+_0222FAE6:
+ ldr r0, _0222FB08 ; =0x000004FC
+ ldr r4, [r3]
+ add r0, r3, r0
+ ldr r3, _0222FB0C ; =0x00000127
+ sub r2, r3, #4
+ ldrb r1, [r4, r3]
+ sub r3, #0xb
+ ldrb r2, [r4, r2]
+ ldrb r3, [r4, r3]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222FB04
+ mov r0, #1
+ pop {r4, pc}
+_0222FB04:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_0222FB08: .word 0x000004FC
+_0222FB0C: .word 0x00000127
+
+ thumb_func_start MOD12_0222FB10
+MOD12_0222FB10: ; 0x0222FB10
+ push {r4, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ ldr r0, _0222FB58 ; =0x000004FC
+ bne _0222FB36
+ add r0, r2, r0
+ add r1, r2, #0
+ mov r2, #0xf
+ mov r3, #0
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222FB52
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222FB52
+_0222FB36:
+ ldr r3, [r2]
+ ldr r4, _0222FB5C ; =0x00000127
+ add r0, r2, r0
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222FB52
+ mov r0, #1
+ pop {r4, pc}
+_0222FB52:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_0222FB58: .word 0x000004FC
+_0222FB5C: .word 0x00000127
+
+ thumb_func_start MOD12_0222FB60
+MOD12_0222FB60: ; 0x0222FB60
+ push {r4, lr}
+ add r4, r1, #0
+ add r3, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ ldr r0, _0222FBA8 ; =0x000004FC
+ bne _0222FB86
+ add r0, r3, r0
+ add r1, r3, #0
+ mov r2, #2
+ add r3, #0xe2
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222FBA2
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222FBA2
+_0222FB86:
+ ldr r4, [r3]
+ add r0, r3, r0
+ ldr r3, _0222FBAC ; =0x00000127
+ sub r2, r3, #4
+ ldrb r1, [r4, r3]
+ sub r3, #0xb
+ ldrb r2, [r4, r2]
+ ldrb r3, [r4, r3]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222FBA2
+ mov r0, #1
+ pop {r4, pc}
+_0222FBA2:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_0222FBA8: .word 0x000004FC
+_0222FBAC: .word 0x00000127
+
+ thumb_func_start MOD12_0222FBB0
+MOD12_0222FBB0: ; 0x0222FBB0
+ push {r4, lr}
+ add r4, r1, #0
+ add r3, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _0222FBC2
+ cmp r0, #1
+ beq _0222FC1C
+ b _0222FC36
+_0222FBC2:
+ add r0, r3, #0
+ add r0, #0xd8
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _0222FBD6
+ cmp r0, #1
+ beq _0222FBE0
+ cmp r0, #2
+ beq _0222FBEA
+ b _0222FBF4
+_0222FBD6:
+ add r0, r3, #0
+ mov r1, #3
+ add r0, #0xe9
+ strb r1, [r0]
+ b _0222FBFC
+_0222FBE0:
+ add r0, r3, #0
+ mov r1, #4
+ add r0, #0xe9
+ strb r1, [r0]
+ b _0222FBFC
+_0222FBEA:
+ add r0, r3, #0
+ mov r1, #5
+ add r0, #0xe9
+ strb r1, [r0]
+ b _0222FBFC
+_0222FBF4:
+ add r0, r3, #0
+ mov r1, #6
+ add r0, #0xe9
+ strb r1, [r0]
+_0222FBFC:
+ add r0, r3, #0
+ mov r1, #0
+ add r0, #0xea
+ strb r1, [r0]
+ add r0, r3, #0
+ add r0, #0xeb
+ strb r1, [r0]
+ add r0, r3, #0
+ add r0, #0xe2
+ ldrb r1, [r0]
+ add r0, r3, #0
+ add r0, #0xe5
+ strb r1, [r0]
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+_0222FC1C:
+ ldr r0, _0222FC58 ; =0x000004FC
+ add r1, r3, #0
+ add r0, r3, r0
+ mov r2, #0xd
+ add r3, #0xe2
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222FC54
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222FC54
+_0222FC36:
+ ldr r0, _0222FC58 ; =0x000004FC
+ ldr r4, [r3]
+ add r0, r3, r0
+ ldr r3, _0222FC5C ; =0x00000127
+ sub r2, r3, #4
+ ldrb r1, [r4, r3]
+ sub r3, #0xb
+ ldrb r2, [r4, r2]
+ ldrb r3, [r4, r3]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222FC54
+ mov r0, #1
+ pop {r4, pc}
+_0222FC54:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_0222FC58: .word 0x000004FC
+_0222FC5C: .word 0x00000127
+
+ thumb_func_start MOD12_0222FC60
+MOD12_0222FC60: ; 0x0222FC60
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _0222FC76
+ cmp r0, #1
+ beq _0222FCA0
+ cmp r0, #2
+ beq _0222FCBC
+ b _0222FCDE
+_0222FC76:
+ add r1, r5, #0
+ add r1, #0xe2
+ ldrb r1, [r1]
+ ldr r0, [r5]
+ bl FUN_02083308
+ add r1, r5, #0
+ add r1, #0xe3
+ strb r0, [r1]
+ add r1, r5, #0
+ add r1, #0xe2
+ ldrb r1, [r1]
+ ldr r0, [r5]
+ bl FUN_0208336C
+ add r1, r5, #0
+ add r1, #0xe4
+ strb r0, [r1]
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+_0222FCA0:
+ ldr r0, _0222FCE8 ; =0x000004FC
+ add r1, r5, #0
+ add r0, r5, r0
+ add r5, #0xe2
+ mov r2, #6
+ add r3, r5, #0
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222FCE2
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222FCE2
+_0222FCBC:
+ ldr r0, _0222FCE8 ; =0x000004FC
+ ldr r3, [r5]
+ add r0, r5, r0
+ ldr r5, _0222FCEC ; =0x00000127
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222FCE2
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222FCE2
+_0222FCDE:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222FCE2:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_0222FCE8: .word 0x000004FC
+_0222FCEC: .word 0x00000127
+
+ thumb_func_start MOD12_0222FCF0
+MOD12_0222FCF0: ; 0x0222FCF0
+ ldrh r2, [r1]
+ cmp r2, #0
+ bne _0222FD0A
+ add r2, r0, #0
+ add r2, #0xd8
+ ldrb r2, [r2]
+ add r0, #0xd8
+ add r2, r2, #1
+ strb r2, [r0]
+ ldrh r0, [r1]
+ add r0, r0, #1
+ strh r0, [r1]
+ b _0222FD1C
+_0222FD0A:
+ add r0, #0xd8
+ ldrb r0, [r0]
+ cmp r0, #4
+ blo _0222FD16
+ mov r0, #1
+ bx lr
+_0222FD16:
+ mov r0, #2
+ strh r0, [r1, #2]
+ bx lr
+_0222FD1C:
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_0222FD20
+MOD12_0222FD20: ; 0x0222FD20
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r3, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #3
+ bhi _0222FDC8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222FD38: ; jump table
+ .short _0222FD40 - _0222FD38 - 2 ; case 0
+ .short _0222FD62 - _0222FD38 - 2 ; case 1
+ .short _0222FD84 - _0222FD38 - 2 ; case 2
+ .short _0222FDAE - _0222FD38 - 2 ; case 3
+_0222FD40:
+ add r0, r3, #0
+ ldr r1, _0222FDEC ; =0x000006E5
+ add r0, #0xf2
+ strh r1, [r0]
+ ldr r0, _0222FDF0 ; =0x000004FC
+ add r1, r3, #0
+ add r0, r3, r0
+ mov r2, #0x10
+ add r3, #0xe2
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222FDE6
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222FDE6
+_0222FD62:
+ ldr r0, _0222FDF0 ; =0x000004FC
+ ldr r5, [r3]
+ add r0, r3, r0
+ ldr r3, _0222FDF4 ; =0x00000127
+ sub r2, r3, #4
+ ldrb r1, [r5, r3]
+ sub r3, #0xb
+ ldrb r2, [r5, r2]
+ ldrb r3, [r5, r3]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222FDE6
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222FDE6
+_0222FD84:
+ ldr r1, [r3]
+ ldr r0, _0222FDF8 ; =0x00000121
+ ldrb r0, [r1, r0]
+ cmp r0, #2
+ bne _0222FD92
+ mov r1, #7
+ b _0222FD94
+_0222FD92:
+ mov r1, #0
+_0222FD94:
+ add r0, r3, #0
+ add r0, #0xe9
+ strb r1, [r0]
+ add r0, r3, #0
+ mov r1, #0
+ add r0, #0xea
+ strb r1, [r0]
+ add r0, r3, #0
+ add r0, #0xeb
+ strb r1, [r0]
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+_0222FDAE:
+ ldr r0, _0222FDF0 ; =0x000004FC
+ add r1, r3, #0
+ add r0, r3, r0
+ mov r2, #0xd
+ add r3, #0xe2
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222FDE6
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222FDE6
+_0222FDC8:
+ ldr r0, _0222FDF0 ; =0x000004FC
+ ldr r4, [r3]
+ add r0, r3, r0
+ ldr r3, _0222FDF4 ; =0x00000127
+ sub r2, r3, #4
+ ldrb r1, [r4, r3]
+ sub r3, #0xb
+ ldrb r2, [r4, r2]
+ ldrb r3, [r4, r3]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222FDE6
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0222FDE6:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_0222FDEC: .word 0x000006E5
+_0222FDF0: .word 0x000004FC
+_0222FDF4: .word 0x00000127
+_0222FDF8: .word 0x00000121
+
+ thumb_func_start MOD12_0222FDFC
+MOD12_0222FDFC: ; 0x0222FDFC
+ push {r4, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ ldr r0, _0222FE44 ; =0x000004FC
+ bne _0222FE22
+ add r0, r2, r0
+ add r1, r2, #0
+ mov r2, #1
+ mov r3, #0
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _0222FE3E
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _0222FE3E
+_0222FE22:
+ ldr r3, [r2]
+ ldr r4, _0222FE48 ; =0x00000127
+ add r0, r2, r0
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _0222FE3E
+ mov r0, #3
+ pop {r4, pc}
+_0222FE3E:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_0222FE44: .word 0x000004FC
+_0222FE48: .word 0x00000127
+
+ thumb_func_start MOD12_0222FE4C
+MOD12_0222FE4C: ; 0x0222FE4C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r1, #1
+ lsl r1, r1, #0x1a
+ ldr r0, [r1]
+ ldr r2, _022300E0 ; =0xFFFFE0FF
+ and r0, r2
+ str r0, [r1]
+ ldr r0, _022300E4 ; =0x04001000
+ ldr r3, [r0]
+ and r2, r3
+ str r2, [r0]
+ ldr r3, [r1]
+ ldr r2, _022300E8 ; =0xFFFF1FFF
+ and r3, r2
+ str r3, [r1]
+ ldr r3, [r0]
+ add r1, #0x50
+ and r2, r3
+ str r2, [r0]
+ mov r2, #0
+ strh r2, [r1]
+ add r0, #0x50
+ strh r2, [r0]
+ mov r2, #0xa
+ mov r0, #3
+ mov r1, #0x17
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ ldr r1, _022300EC ; =0x00001BF4
+ add r0, r4, #0
+ mov r2, #0x17
+ bl FUN_02006268
+ ldr r2, _022300EC ; =0x00001BF4
+ mov r1, #0
+ add r5, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x17
+ bl MOD12_022312D8
+ str r0, [r5, #0x10]
+ add r0, r4, #0
+ bl FUN_0200628C
+ mov r1, #0x5b
+ str r0, [r5]
+ lsl r1, r1, #2
+ str r5, [r0, r1]
+ ldr r2, [r5]
+ mov r3, #1
+ add r0, r1, #4
+ strb r3, [r2, r0]
+ ldr r0, [r5]
+ str r0, [r5, #0x14]
+ add r0, r5, #0
+ bl MOD12_022306F8
+ mov r0, #0x17
+ bl FUN_02002FD0
+ add r1, r5, #0
+ add r1, #0xa4
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_020038F0
+ add r0, r5, #0
+ add r0, #0xa4
+ mov r2, #2
+ ldr r0, [r0]
+ mov r1, #0
+ lsl r2, r2, #8
+ mov r3, #0x17
+ bl FUN_02003008
+ add r0, r5, #0
+ add r0, #0xa4
+ mov r1, #1
+ ldr r0, [r0]
+ lsl r2, r1, #9
+ mov r3, #0x17
+ bl FUN_02003008
+ add r0, r5, #0
+ add r0, #0xa4
+ mov r2, #7
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r2, r2, #6
+ mov r3, #0x17
+ bl FUN_02003008
+ add r0, r5, #0
+ add r0, #0xa4
+ mov r2, #2
+ ldr r0, [r0]
+ mov r1, #3
+ lsl r2, r2, #8
+ mov r3, #0x17
+ bl FUN_02003008
+ mov r1, #2
+ mov r0, #0x17
+ lsl r1, r1, #8
+ bl FUN_02016998
+ ldr r1, _022300F0 ; =0x0000110C
+ str r0, [r5, r1]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD12_0223EC7C
+ mov r0, #0x17
+ bl FUN_02016B94
+ str r0, [r5, #0x74]
+ mov r0, #0x40
+ mov r1, #0x17
+ bl FUN_0201C24C
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ add r1, r5, #0
+ ldr r0, [r5]
+ add r1, #0x14
+ bl MOD12_0223B49C
+ ldr r1, _022300F4 ; =0x00001130
+ str r0, [r5, r1]
+ ldr r0, [r5, #0x74]
+ bl MOD12_02230574
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ mov r0, #2
+ mov r1, #0x17
+ bl FUN_02002C50
+ mov r0, #0x17
+ bl FUN_0200BB14
+ ldr r1, _022300F8 ; =0x02244C18
+ ldr r2, _022300FC ; =0x02244BD4
+ mov r3, #0x20
+ str r0, [r5, #0x6c]
+ bl FUN_0200BB6C
+ ldr r1, _02230100 ; =0x00100010
+ mov r0, #1
+ bl FUN_02008D44
+ mov r0, #1
+ bl FUN_02008DDC
+ ldr r0, [r5, #0x6c]
+ bl FUN_0200BB34
+ str r0, [r5, #0x70]
+ ldr r0, [r5, #0x6c]
+ ldr r1, [r5, #0x70]
+ mov r2, #0x80
+ bl FUN_0200BBF0
+ ldr r0, [r5, #0x6c]
+ ldr r1, [r5, #0x70]
+ ldr r2, _02230104 ; =0x02244C00
+ bl FUN_0200BF60
+ ldr r0, [r5, #0x6c]
+ bl FUN_0200BB68
+ mov r2, #1
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ mov r0, #0x17
+ bl FUN_02006D98
+ str r0, [r5, #0x58]
+ bl MOD12_022306F0
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xc1
+ mov r3, #0x17
+ bl FUN_0200A86C
+ add r1, r5, #0
+ add r1, #0x98
+ str r0, [r1]
+ mov r0, #0x17
+ bl FUN_0200AA80
+ add r1, r5, #0
+ add r1, #0x9c
+ str r0, [r1]
+ mov r0, #5
+ lsl r0, r0, #6
+ mov r1, #0x17
+ bl FUN_020219F4
+ add r1, r5, #0
+ add r1, #0xa0
+ str r0, [r1]
+ mov r0, #9
+ mov r1, #0x17
+ bl FUN_02011744
+ add r1, r5, #0
+ add r1, #0xa8
+ str r0, [r1]
+ add r0, r5, #0
+ bl MOD12_022308F0
+ add r0, r5, #0
+ bl MOD12_022309D0
+ add r0, r5, #0
+ bl MOD12_022306A4
+ add r0, r5, #0
+ bl MOD12_02230750
+ add r0, r5, #0
+ bl MOD12_02230880
+ ldr r0, _022300F4 ; =0x00001130
+ mov r1, #0
+ ldr r0, [r5, r0]
+ mov r2, #1
+ add r3, r1, #0
+ bl MOD12_0223B758
+ add r0, r5, #0
+ bl MOD12_0223C248
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD12_0223D0CC
+ add r0, r5, #0
+ bl MOD12_022309D8
+ add r0, r5, #0
+ bl MOD12_0223CAF8
+ add r0, r5, #0
+ bl MOD12_0223D55C
+ bl FUN_02033E74
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0x17
+ str r1, [sp, #8]
+ mov r1, #0x11
+ mov r2, #0x25
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldr r0, _02230108 ; =MOD12_02230520
+ ldr r2, _0223010C ; =0x00013880
+ add r1, r5, #0
+ bl FUN_0200CA44
+ str r0, [r5, #4]
+ ldr r0, _02230110 ; =0x00001154
+ mov r1, #1
+ strb r1, [r5, r0]
+ bl FUN_0201E788
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ ldr r1, _02230114 ; =0x0000046F
+ mov r0, #6
+ mov r2, #1
+ bl FUN_0200433C
+ ldr r1, [r5]
+ ldr r0, _02230118 ; =0x00000171
+ ldrb r0, [r1, r0]
+ bl FUN_020833D4
+ mov r1, #0x39
+ add r2, r1, #0
+ ldr r0, _0223011C ; =0x04000050
+ sub r2, #0x3f
+ bl G2x_SetBlendBrightness_
+ ldr r0, _02230120 ; =0x000006E5
+ bl FUN_020054C8
+ ldr r0, _02230124 ; =MOD12_022303C0
+ add r1, r5, #0
+ bl FUN_02015F10
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_022300E0: .word 0xFFFFE0FF
+_022300E4: .word 0x04001000
+_022300E8: .word 0xFFFF1FFF
+_022300EC: .word 0x00001BF4
+_022300F0: .word 0x0000110C
+_022300F4: .word 0x00001130
+_022300F8: .word 0x02244C18
+_022300FC: .word 0x02244BD4
+_02230100: .word 0x00100010
+_02230104: .word 0x02244C00
+_02230108: .word MOD12_02230520
+_0223010C: .word 0x00013880
+_02230110: .word 0x00001154
+_02230114: .word 0x0000046F
+_02230118: .word 0x00000171
+_0223011C: .word 0x04000050
+_02230120: .word 0x000006E5
+_02230124: .word MOD12_022303C0
+
+ thumb_func_start MOD12_02230128
+MOD12_02230128: ; 0x02230128
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02082878
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _0223014A
+ cmp r0, #1
+ beq _02230158
+ cmp r0, #2
+ beq _0223020E
+ b _0223021C
+_0223014A:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _0223021C
+ mov r0, #1
+ str r0, [r5]
+ b _0223021C
+_02230158:
+ ldr r0, [r4]
+ bl FUN_020828BC
+ cmp r0, #1
+ bne _022301CA
+ ldr r2, _02230224 ; =0x00001152
+ ldr r1, _02230228 ; =0x00001BE8
+ ldrh r2, [r4, r2]
+ add r0, r4, #0
+ add r1, r4, r1
+ lsl r3, r2, #2
+ ldr r2, _0223022C ; =0x02244C60
+ ldr r2, [r2, r3]
+ blx r2
+ sub r1, r0, #1
+ cmp r1, #1
+ bhi _0223019C
+ cmp r0, #1
+ bne _02230186
+ ldr r0, _02230224 ; =0x00001152
+ ldrh r1, [r4, r0]
+ add r1, r1, #1
+ b _0223018C
+_02230186:
+ ldr r0, _02230230 ; =0x00001BEA
+ ldrh r1, [r4, r0]
+ ldr r0, _02230224 ; =0x00001152
+_0223018C:
+ strh r1, [r4, r0]
+ ldr r0, _02230228 ; =0x00001BE8
+ mov r1, #0
+ add r0, r4, r0
+ mov r2, #8
+ bl MI_CpuFill8
+ b _022301CA
+_0223019C:
+ cmp r0, #3
+ bne _022301CA
+ mov r0, #2
+ str r0, [r5]
+ ldr r0, _02230228 ; =0x00001BE8
+ mov r1, #0
+ add r0, r4, r0
+ mov r2, #8
+ bl MI_CpuFill8
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x17
+ mov r1, #0x1e
+ str r0, [sp, #8]
+ mov r0, #2
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ b _0223021C
+_022301CA:
+ ldr r0, _02230234 ; =0x00001158
+ add r0, r4, r0
+ bl MOD12_022410A0
+ ldr r0, _02230234 ; =0x00001158
+ add r1, r4, #0
+ add r0, r4, r0
+ bl MOD12_02241114
+ ldr r0, _02230238 ; =0x00001BF0
+ ldrb r1, [r4, r0]
+ cmp r1, #1
+ bne _0223021C
+ mov r1, #2
+ sub r0, #8
+ str r1, [r5]
+ add r0, r4, r0
+ mov r1, #0
+ mov r2, #8
+ bl MI_CpuFill8
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x17
+ mov r1, #0x1e
+ str r0, [sp, #8]
+ mov r0, #2
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ b _0223021C
+_0223020E:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _0223021C
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_0223021C:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_02230224: .word 0x00001152
+_02230228: .word 0x00001BE8
+_0223022C: .word 0x02244C60
+_02230230: .word 0x00001BEA
+_02230234: .word 0x00001158
+_02230238: .word 0x00001BF0
+
+ thumb_func_start MOD12_0223023C
+MOD12_0223023C: ; 0x0223023C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_020133C8
+ cmp r0, #0
+ beq _02230254
+ bl ErrorHandling
+_02230254:
+ add r0, r4, #0
+ bl MOD12_02230A40
+ bl FUN_02012EAC
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD12_0223CA1C
+ add r0, r4, #0
+ bl MOD12_0223CB18
+ add r0, r4, #0
+ bl MOD12_0223D578
+ add r0, r4, #0
+ bl MOD12_0223DCC0
+ add r0, r4, #0
+ bl MOD12_02230808
+ add r0, r4, #0
+ bl MOD12_022308EC
+ add r0, r4, #0
+ bl MOD12_022309CC
+ add r0, r4, #0
+ bl MOD12_022309D4
+ add r5, r4, #0
+ mov r6, #0
+ add r5, #0x78
+_02230296:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r6, r6, #1
+ add r5, #0x10
+ cmp r6, #2
+ blt _02230296
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ ldr r0, [r4, #0x74]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x74]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x74]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x74]
+ bl MOD12_0223B474
+ ldr r0, _022303B0 ; =0x00001130
+ ldr r0, [r4, r0]
+ bl MOD12_0223B4C0
+ ldr r0, [r4, #0x6c]
+ ldr r1, [r4, #0x70]
+ bl FUN_0200C398
+ ldr r0, [r4, #0x6c]
+ bl FUN_0200BD04
+ bl FUN_0201C29C
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD12_0223C300
+ ldr r0, [r4, #0x58]
+ bl FUN_020072E8
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ bl FUN_020117BC
+ mov r0, #2
+ bl FUN_02002CF8
+ ldr r0, _022303B4 ; =0x0000110C
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_02003038
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_02003038
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ mov r1, #2
+ bl FUN_02003038
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ mov r1, #3
+ bl FUN_02003038
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ bl FUN_02002FEC
+ add r0, r4, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ bl FUN_02021A20
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl FUN_0200AB18
+ add r0, r4, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x74]
+ bl FUN_02016A18
+ ldr r0, [r4, #4]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x10]
+ bl MOD12_02231378
+ bl FUN_0201CD04
+ add r0, r7, #0
+ bl FUN_0200627C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ mov r0, #0x17
+ bl FUN_020168D0
+ bl FUN_02083404
+ bl FUN_02033ED0
+ ldr r0, _022303B8 ; =SDK_OVERLAY_MODULE_08_ID
+ bl UnloadOverlayByID
+ ldr r0, _022303BC ; =SDK_OVERLAY_MODULE_17_ID
+ bl UnloadOverlayByID
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022303B0: .word 0x00001130
+_022303B4: .word 0x0000110C
+_022303B8: .word SDK_OVERLAY_MODULE_08_ID
+_022303BC: .word SDK_OVERLAY_MODULE_17_ID
+
+ thumb_func_start MOD12_022303C0
+MOD12_022303C0: ; 0x022303C0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r0, _02230494 ; =0x00001134
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _02230450
+ add r1, r0, #4
+ add r3, r4, r1
+ ldr r2, [r4, r1]
+ mov r5, #0
+ ldr r1, [r3, #4]
+ add r2, r2, #1
+ adc r1, r5
+ add r0, r0, #4
+ str r2, [r4, r0]
+ mov r0, #7
+ str r1, [r3, #4]
+ bl FUN_02004F64
+ ldr r1, _02230498 ; =0x00000AF8
+ ldr r1, [r4, r1]
+ mul r0, r1
+ ldr r1, _0223049C ; =0x00001388
+ add r0, r0, r1
+ lsl r1, r1, #1
+ bl _u32_div_f
+ ldr r7, _022304A0 ; =0x0000114C
+ add r5, r0, #1
+ add r1, r7, #0
+ str r0, [r4, r7]
+ sub r1, #0x14
+ ldr r2, [r4, r1]
+ add r1, r7, #0
+ sub r1, #0x10
+ add r0, r5, #0
+ ldr r6, [r4, r1]
+ mov r3, #0
+ add r1, r3, #0
+ eor r1, r6
+ eor r0, r2
+ orr r0, r1
+ beq _0223044C
+ sub r0, r7, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0x12
+ bhi _02230430
+ mov ip, r3
+ mov r0, ip
+ sub r1, r5, r2
+ sbc r0, r6
+ mov r6, #0
+ mov r2, #1
+ sub r1, r2, r1
+ sbc r6, r0
+ bhs _02230440
+_02230430:
+ ldr r1, _022304A4 ; =0x00001138
+ str r5, [r4, r1]
+ add r0, r1, #4
+ str r3, [r4, r0]
+ mov r0, #0
+ add r1, #0x10
+ str r0, [r4, r1]
+ b _02230450
+_02230440:
+ sub r0, r7, #4
+ ldr r0, [r4, r0]
+ add r1, r0, #1
+ sub r0, r7, #4
+ str r1, [r4, r0]
+ b _02230450
+_0223044C:
+ sub r0, r7, #4
+ str r3, [r4, r0]
+_02230450:
+ ldr r0, [r4, #0x58]
+ bl FUN_020081C4
+ mov r6, #0
+ add r5, r4, #0
+_0223045A:
+ ldr r0, [r5, #0x18]
+ cmp r0, #0
+ beq _02230464
+ bl MOD17_021DD58C
+_02230464:
+ add r6, r6, #1
+ add r5, #0x10
+ cmp r6, #4
+ blt _0223045A
+ bl FUN_0201C30C
+ bl FUN_0200BC30
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ bl FUN_0200372C
+ ldr r0, [r4, #0x74]
+ bl FUN_0201AB60
+ ldr r3, _022304A8 ; =0x027E0000
+ ldr r1, _022304AC ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02230494: .word 0x00001134
+_02230498: .word 0x00000AF8
+_0223049C: .word 0x00001388
+_022304A0: .word 0x0000114C
+_022304A4: .word 0x00001138
+_022304A8: .word 0x027E0000
+_022304AC: .word 0x00003FF8
+
+ thumb_func_start MOD12_022304B0
+MOD12_022304B0: ; 0x022304B0
+ push {r3, r4, r5, lr}
+ ldr r1, _0223051C ; =0x0000110C
+ add r5, r0, r1
+ ldrb r1, [r5, #0x11]
+ cmp r1, #0
+ beq _02230518
+ add r0, #0xa4
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_02003204
+ add r4, r0, #0
+ mov r2, #2
+ ldr r0, [r5]
+ add r1, r4, #0
+ lsl r2, r2, #8
+ bl MIi_CpuCopy16
+ ldrb r0, [r5, #0x10]
+ cmp r0, #1
+ bne _02230518
+ ldrh r0, [r5, #0xe]
+ add r1, r4, #0
+ str r0, [sp]
+ ldrh r3, [r5, #8]
+ ldrh r2, [r5, #6]
+ ldr r0, [r5]
+ asr r3, r3, #8
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02003A30
+ ldrh r3, [r5, #0xa]
+ ldrh r1, [r5, #8]
+ cmp r1, r3
+ bne _022304FE
+ mov r0, #0
+ strb r0, [r5, #0x10]
+ pop {r3, r4, r5, pc}
+_022304FE:
+ mov r0, #0xc
+ ldrsh r2, [r5, r0]
+ add r0, r1, r2
+ cmp r2, #0
+ ble _0223050C
+ cmp r0, r3
+ bge _02230514
+_0223050C:
+ cmp r2, #0
+ bge _02230516
+ cmp r0, r3
+ bgt _02230516
+_02230514:
+ add r0, r3, #0
+_02230516:
+ strh r0, [r5, #8]
+_02230518:
+ pop {r3, r4, r5, pc}
+ nop
+_0223051C: .word 0x0000110C
+
+ thumb_func_start MOD12_02230520
+MOD12_02230520: ; 0x02230520
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD12_022304B0
+ ldr r0, _0223056C ; =0x00001154
+ ldrb r0, [r6, r0]
+ cmp r0, #1
+ bne _02230562
+ ldr r0, [r6, #0x58]
+ bl FUN_02006ED4
+ mov r4, #0
+ add r5, r6, #0
+_0223053C:
+ ldr r0, [r5, #0x18]
+ cmp r0, #0
+ beq _02230546
+ bl MOD17_021DD518
+_02230546:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #4
+ blt _0223053C
+ bl MOD08_02215A44
+ ldr r0, [r6, #0x70]
+ bl FUN_0200BC1C
+ bl FUN_0200BC38
+ ldr r0, _02230570 ; =0x04000540
+ mov r1, #1
+ str r1, [r0]
+_02230562:
+ ldr r1, [r6, #0x74]
+ mov r0, #0x17
+ bl FUN_020335F0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223056C: .word 0x00001154
+_02230570: .word 0x04000540
+
+ thumb_func_start MOD12_02230574
+MOD12_02230574: ; 0x02230574
+ push {r4, r5, lr}
+ sub sp, #0x8c
+ add r4, r0, #0
+ bl FUN_0201E6D8
+ ldr r5, _02230694 ; =0x02244C38
+ add r3, sp, #0x10
+ mov r2, #5
+_02230584:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02230584
+ add r0, sp, #0x10
+ bl FUN_0201E66C
+ mov r1, #6
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x12
+ bl MIi_CpuClear32
+ mov r1, #0x62
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ bl MIi_CpuClear32
+ mov r1, #0x19
+ mov r2, #1
+ mov r0, #0
+ lsl r1, r1, #0x16
+ lsl r2, r2, #0x12
+ bl MIi_CpuClear32
+ mov r1, #0x66
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ bl MIi_CpuClear32
+ ldr r5, _02230698 ; =0x02244BC4
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _0223069C ; =0x02244C94
+ add r3, sp, #0x38
+ mov r2, #0xa
+_022305E4:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _022305E4
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ add r2, sp, #0x38
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #2
+ add r2, sp, #0x54
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #3
+ add r2, sp, #0x70
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r1, #3
+ add r0, r4, #0
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ ldr r1, _022306A0 ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #2
+ orr r0, r2
+ strh r0, [r1]
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ add r0, r4, #0
+ bl MOD12_0223B41C
+ add sp, #0x8c
+ pop {r4, r5, pc}
+ .align 2, 0
+_02230694: .word 0x02244C38
+_02230698: .word 0x02244BC4
+_0223069C: .word 0x02244C94
+_022306A0: .word 0x04000008
+
+ thumb_func_start MOD12_022306A4
+MOD12_022306A4: ; 0x022306A4
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x1f
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ ldr r0, [r4, #0x74]
+ add r1, #0x78
+ mov r2, #1
+ mov r3, #2
+ bl FUN_02019064
+ mov r0, #0xb
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r3, #2
+ str r3, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x1f
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x74]
+ add r4, #0x88
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_02019064
+ add sp, #0x14
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD12_022306F0
+MOD12_022306F0: ; 0x022306F0
+ ldr r3, _022306F4 ; =0x02012CC9
+ bx r3
+ .align 2, 0
+_022306F4: .word 0x02012CC9
+
+ thumb_func_start MOD12_022306F8
+MOD12_022306F8: ; 0x022306F8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ cmp r0, #0
+ bne _02230706
+ bl ErrorHandling
+_02230706:
+ mov r4, #0xad
+ lsl r4, r4, #4
+ mov r1, #0
+ mov r2, #3
+ add r6, r4, #5
+_02230710:
+ sub r3, r2, r1
+ lsl r3, r3, #0x18
+ add r0, r5, r1
+ lsr r3, r3, #0x18
+ strb r3, [r0, r4]
+ add r1, r1, #1
+ strb r3, [r0, r6]
+ cmp r1, #4
+ blt _02230710
+ add r0, r5, #0
+ bl MOD12_0223EE80
+ mov r4, #0
+ ldr r7, _0223074C ; =0x00000AB4
+ add r6, r4, #0
+_0223072E:
+ ldr r0, [r5]
+ mov r1, #5
+ ldr r0, [r0, r6]
+ mov r2, #0
+ bl FUN_020671BC
+ bl MOD12_0223EE70
+ add r1, r5, r4
+ add r4, r4, #1
+ add r6, r6, #4
+ strb r0, [r1, r7]
+ cmp r4, #4
+ blt _0223072E
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223074C: .word 0x00000AB4
+
+ thumb_func_start MOD12_02230750
+MOD12_02230750: ; 0x02230750
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ mov r0, #0x2e
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, _02230804 ; =0x000080E9
+ mov r1, #2
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ ldr r2, [r4, #0x6c]
+ ldr r3, [r4, #0x70]
+ bl FUN_0200C0DC
+ ldr r0, [r4, #0x6c]
+ ldr r1, [r4, #0x70]
+ bl MOD12_0223C320
+ ldr r0, [r4, #0x6c]
+ ldr r1, [r4, #0x70]
+ bl MOD12_0223C450
+ ldr r0, [r4, #0x6c]
+ ldr r1, [r4, #0x70]
+ bl MOD12_0223C668
+ add r0, r4, #0
+ ldr r1, [r4, #0x6c]
+ ldr r2, [r4, #0x70]
+ add r0, #0x14
+ bl MOD12_0223C6DC
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD12_0223C734
+ ldr r0, [r4, #0x6c]
+ ldr r1, [r4, #0x70]
+ bl MOD12_0223CA44
+ add r0, r4, #0
+ ldr r1, [r4, #0x6c]
+ ldr r2, [r4, #0x70]
+ add r0, #0x14
+ bl MOD12_0223CAB8
+ ldr r0, [r4, #0x6c]
+ ldr r1, [r4, #0x70]
+ bl MOD12_0223E2B8
+ ldr r1, [r4, #0x6c]
+ ldr r2, [r4, #0x70]
+ add r0, r4, #0
+ bl MOD12_0223E32C
+ ldr r0, [r4, #0x6c]
+ ldr r1, [r4, #0x70]
+ bl MOD12_0223CB54
+ add r0, r4, #0
+ ldr r1, [r4, #0x6c]
+ ldr r2, [r4, #0x70]
+ add r0, #0x14
+ bl MOD12_0223CBC8
+ ldr r0, [r4, #0x6c]
+ ldr r1, [r4, #0x70]
+ bl MOD12_0223CD40
+ add r0, r4, #0
+ ldr r1, [r4, #0x6c]
+ ldr r2, [r4, #0x70]
+ add r0, #0x14
+ bl MOD12_0223CDB4
+ ldr r0, [r4, #0x6c]
+ ldr r1, [r4, #0x70]
+ bl MOD12_0223CDBC
+ add sp, #0x18
+ pop {r4, pc}
+ .align 2, 0
+_02230804: .word 0x000080E9
+
+ thumb_func_start MOD12_02230808
+MOD12_02230808: ; 0x02230808
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x70]
+ bl MOD12_0223C324
+ ldr r0, [r4, #0x70]
+ bl MOD12_0223C4E8
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD12_0223C640
+ ldr r0, [r4, #0x70]
+ bl MOD12_0223C6B8
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD12_0223C710
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD12_0223C878
+ ldr r0, [r4, #0x70]
+ bl MOD12_0223CA94
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD12_0223CADC
+ add r0, r4, #0
+ bl MOD12_0223E38C
+ ldr r0, [r4, #0x70]
+ bl MOD12_0223E308
+ ldr r0, [r4, #0x70]
+ bl MOD12_0223CBA4
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD12_0223CC70
+ ldr r0, [r4, #0x70]
+ bl MOD12_0223CD90
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD12_0223CDB8
+ ldr r0, [r4, #0x70]
+ bl MOD12_0223CE0C
+ ldr r0, [r4, #0x70]
+ ldr r1, _0223087C ; =0x000080E9
+ bl FUN_0200C368
+ pop {r4, pc}
+ .align 2, 0
+_0223087C: .word 0x000080E9
+
+ thumb_func_start MOD12_02230880
+MOD12_02230880: ; 0x02230880
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ mov r0, #0x2e
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, _022308E0 ; =0x000080EA
+ mov r1, #3
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ ldr r2, [r4, #0x6c]
+ ldr r3, [r4, #0x70]
+ bl FUN_0200C0DC
+ mov r0, #0x2e
+ str r0, [sp]
+ mov r0, #9
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _022308E4 ; =0x000080EB
+ mov r1, #3
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ ldr r2, [r4, #0x6c]
+ ldr r3, [r4, #0x70]
+ bl FUN_0200C0DC
+ ldr r0, _022308E8 ; =0x00001130
+ ldr r0, [r4, r0]
+ bl MOD12_0223B4E0
+ add sp, #0x18
+ pop {r4, pc}
+ .align 2, 0
+_022308E0: .word 0x000080EA
+_022308E4: .word 0x000080EB
+_022308E8: .word 0x00001130
+
+ thumb_func_start MOD12_022308EC
+MOD12_022308EC: ; 0x022308EC
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_022308F0
+MOD12_022308F0: ; 0x022308F0
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x17
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x74]
+ mov r0, #0x2d
+ mov r1, #0xd
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x17
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x74]
+ mov r0, #0x2d
+ mov r1, #0xe
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ mov r1, #0x2d
+ mov r2, #0x1f
+ mov r3, #0x17
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xd0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ mov r1, #0x2d
+ mov r2, #0x23
+ mov r3, #0x17
+ bl FUN_020030E8
+ ldr r1, [r5]
+ ldr r0, _022309C4 ; =0x00001988
+ ldr r0, [r1, r0]
+ bl FUN_02025084
+ add r4, r0, #0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #4]
+ mov r1, #1
+ ldr r0, [r5, #0x74]
+ add r2, r1, #0
+ mov r3, #0xf
+ bl FUN_0200CD68
+ add r0, r4, #0
+ bl FUN_0200CD64
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xe0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ mov r1, #0x26
+ mov r3, #0x17
+ bl FUN_020030E8
+ add r0, r5, #0
+ bl MOD12_0223E734
+ add r0, r5, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_020031FC
+ ldr r1, _022309C8 ; =0x0000110C
+ mov r2, #2
+ ldr r1, [r5, r1]
+ lsl r2, r2, #8
+ bl MIi_CpuCopy16
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022309C4: .word 0x00001988
+_022309C8: .word 0x0000110C
+
+ thumb_func_start MOD12_022309CC
+MOD12_022309CC: ; 0x022309CC
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_022309D0
+MOD12_022309D0: ; 0x022309D0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_022309D4
+MOD12_022309D4: ; 0x022309D4
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_022309D8
+MOD12_022309D8: ; 0x022309D8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _022309E8
+ bl ErrorHandling
+_022309E8:
+ mov r1, #0x12
+ mov r0, #0x17
+ lsl r1, r1, #0xa
+ bl FUN_02016998
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #4]
+ mov r3, #0x12
+ ldr r0, _02230A38 ; =MOD12_02230A60
+ ldr r1, _02230A3C ; =MOD12_02230A7C
+ lsl r3, r3, #0xa
+ bl FUN_02012CDC
+ str r0, [r4, #0xc]
+ bl FUN_0201343C
+ add r2, r0, #0
+ mov r0, #1
+ mov r1, #0xe1
+ lsl r0, r0, #0xc
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+ mov r0, #0x3d
+ mov r1, #3
+ mov r2, #0x17
+ bl FUN_0201318C
+ add r1, r0, #0
+ ldr r0, [r4, #0xc]
+ mov r2, #0xa
+ mov r3, #1
+ bl FUN_02013194
+ add sp, #8
+ pop {r4, pc}
+ nop
+_02230A38: .word MOD12_02230A60
+_02230A3C: .word MOD12_02230A7C
+
+ thumb_func_start MOD12_02230A40
+MOD12_02230A40: ; 0x02230A40
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_020133E8
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_02012DE4
+ add r0, r5, #0
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02230A60
+MOD12_02230A60: ; 0x02230A60
+ push {r4, lr}
+ ldr r3, _02230A78 ; =0x021064B8
+ mov r2, #0
+ ldr r3, [r3]
+ blx r3
+ add r4, r0, #0
+ bl FUN_0201327C
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0xd
+ pop {r4, pc}
+ nop
+_02230A78: .word 0x021064B8
+
+ thumb_func_start MOD12_02230A7C
+MOD12_02230A7C: ; 0x02230A7C
+ push {r4, lr}
+ ldr r3, _02230A94 ; =0x021064C0
+ mov r2, #0
+ ldr r3, [r3]
+ blx r3
+ add r4, r0, #0
+ bl FUN_020132BC
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0xd
+ pop {r4, pc}
+ nop
+_02230A94: .word 0x021064C0
+
+ thumb_func_start MOD12_02230A98
+MOD12_02230A98: ; 0x02230A98
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ ldr r0, _02230AE4 ; =0x00001158
+ bne _02230AC2
+ mov r3, #0xad
+ lsl r3, r3, #4
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #0xa
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02230ADE
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02230ADE
+_02230AC2:
+ ldr r4, _02230AE8 ; =0x00000127
+ ldr r3, [r5]
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ add r0, r5, r0
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02230ADE
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02230ADE:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02230AE4: .word 0x00001158
+_02230AE8: .word 0x00000127
+
+ thumb_func_start MOD12_02230AEC
+MOD12_02230AEC: ; 0x02230AEC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _02230AFE
+ cmp r0, #1
+ beq _02230B52
+ b _02230B74
+_02230AFE:
+ ldr r0, _02230B7C ; =0x00000B37
+ mov r2, #0
+ strb r2, [r5, r0]
+ add r1, r0, #1
+ strb r2, [r5, r1]
+ ldr r2, [r5]
+ ldr r1, _02230B80 ; =0x00000123
+ sub r0, r0, #7
+ ldrb r2, [r2, r1]
+ strb r2, [r5, r0]
+ ldr r2, [r5]
+ sub r0, r1, #3
+ ldrb r0, [r2, r0]
+ bl MOD12_0223E464
+ ldr r1, _02230B84 ; =0x00000B34
+ strb r0, [r5, r1]
+ ldr r0, [r5]
+ bl FUN_020832EC
+ cmp r0, #1
+ bne _02230B2E
+ mov r1, #2
+ b _02230B30
+_02230B2E:
+ mov r1, #1
+_02230B30:
+ ldr r0, _02230B88 ; =0x00000B36
+ mov r3, #0xb
+ strb r1, [r5, r0]
+ ldr r0, _02230B8C ; =0x00001158
+ lsl r3, r3, #8
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #9
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02230B78
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02230B78
+_02230B52:
+ ldr r0, _02230B8C ; =0x00001158
+ ldr r3, [r5]
+ add r0, r5, r0
+ ldr r5, _02230B90 ; =0x00000127
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02230B78
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02230B78
+_02230B74:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02230B78:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02230B7C: .word 0x00000B37
+_02230B80: .word 0x00000123
+_02230B84: .word 0x00000B34
+_02230B88: .word 0x00000B36
+_02230B8C: .word 0x00001158
+_02230B90: .word 0x00000127
+
+ thumb_func_start MOD12_02230B94
+MOD12_02230B94: ; 0x02230B94
+ push {r4, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ ldr r0, _02230BDC ; =0x00001158
+ bne _02230BBA
+ add r0, r2, r0
+ add r1, r2, #0
+ mov r2, #3
+ mov r3, #0
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02230BD6
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02230BD6
+_02230BBA:
+ ldr r3, [r2]
+ ldr r4, _02230BE0 ; =0x00000127
+ add r0, r2, r0
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02230BD6
+ mov r0, #1
+ pop {r4, pc}
+_02230BD6:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02230BDC: .word 0x00001158
+_02230BE0: .word 0x00000127
+
+ thumb_func_start MOD12_02230BE4
+MOD12_02230BE4: ; 0x02230BE4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldrh r0, [r5]
+ cmp r0, #4
+ bls _02230BF2
+ b _02230D7C
+_02230BF2:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02230BFE: ; jump table
+ .short _02230C08 - _02230BFE - 2 ; case 0
+ .short _02230CFE - _02230BFE - 2 ; case 1
+ .short _02230D1C - _02230BFE - 2 ; case 2
+ .short _02230D3E - _02230BFE - 2 ; case 3
+ .short _02230D5A - _02230BFE - 2 ; case 4
+_02230C08:
+ mov r0, #0x12
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _02230C18
+ cmp r0, #1
+ bne _02230C1C
+_02230C18:
+ mov r1, #0
+ b _02230C1E
+_02230C1C:
+ mov r1, #1
+_02230C1E:
+ mov r0, #0xc
+ add r6, r1, #0
+ mul r6, r0
+ ldr r0, _02230D84 ; =0x02244BE8
+ add r1, r0, r6
+ mov r0, #0xab
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ ldr r0, _02230D88 ; =0x02244BEA
+ ldrh r7, [r0, r6]
+ ldr r0, _02230D8C ; =0x0112A880
+ add r1, r7, #0
+ bl _s32_div_f
+ ldr r1, _02230D90 ; =0x00000AE8
+ mov r3, #0
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ ldr r2, _02230D94 ; =0x00001388
+ lsl r0, r0, #4
+ mov ip, r3
+ mov r1, ip
+ add r0, r0, r2
+ adc r1, r3
+ lsl r2, r2, #1
+ bl _ll_udiv
+ ldr r1, _02230D98 ; =0x00000AEC
+ str r0, [r4, r1]
+ add r0, r1, #0
+ add r0, #0x10
+ strh r7, [r4, r0]
+ sub r0, r1, #4
+ ldr r2, [r4, r0]
+ ldr r0, _02230D9C ; =0x02244BEE
+ add r3, r2, #0
+ ldrb r0, [r0, r6]
+ mul r3, r0
+ add r0, r1, #4
+ str r3, [r4, r0]
+ sub r0, r1, #4
+ ldr r2, [r4, r0]
+ ldr r0, _02230DA0 ; =0x02244BEF
+ add r3, r2, #0
+ ldrb r0, [r0, r6]
+ mul r3, r0
+ add r0, r1, #0
+ add r0, #8
+ str r3, [r4, r0]
+ sub r0, r1, #4
+ ldr r0, [r4, r0]
+ mov r1, #0x30
+ bl _u32_div_f
+ ldr r1, _02230DA4 ; =0x00000AF8
+ str r0, [r4, r1]
+ ldr r0, _02230DA8 ; =0x02244BED
+ ldrb r2, [r0, r6]
+ add r0, r1, #6
+ strb r2, [r4, r0]
+ ldr r0, _02230D84 ; =0x02244BE8
+ ldrh r2, [r0, r6]
+ add r0, r1, #0
+ sub r0, #0x14
+ str r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0x48
+ ldr r0, [r4, r0]
+ add r2, r1, #0
+ ldrh r3, [r0]
+ add r2, #0x2c
+ strh r3, [r4, r2]
+ add r2, r1, #0
+ ldrh r3, [r0, #2]
+ add r2, #0x2e
+ strh r3, [r4, r2]
+ add r2, r1, #0
+ ldrh r3, [r0, #4]
+ add r2, #0x30
+ strh r3, [r4, r2]
+ add r2, r1, #0
+ ldrh r3, [r0, #6]
+ add r2, #0x32
+ strh r3, [r4, r2]
+ add r2, r1, #0
+ ldrh r3, [r0, #8]
+ add r2, #0x34
+ strh r3, [r4, r2]
+ ldrh r2, [r0, #0xa]
+ add r0, r1, #0
+ add r0, #0x36
+ strh r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0x10
+ ldr r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #0x10
+ str r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xc
+ ldr r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #0x14
+ str r2, [r4, r0]
+ add r0, r1, #4
+ ldrh r0, [r4, r0]
+ add r1, #0x18
+ strh r0, [r4, r1]
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _02230D80
+_02230CFE:
+ ldr r0, _02230DAC ; =0x00001158
+ mov r3, #0xad
+ lsl r3, r3, #4
+ add r0, r4, r0
+ add r1, r4, #0
+ mov r2, #0xa
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02230D80
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _02230D80
+_02230D1C:
+ ldr r0, _02230DAC ; =0x00001158
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _02230DB0 ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02230D80
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _02230D80
+_02230D3E:
+ ldr r0, _02230DAC ; =0x00001158
+ mov r2, #0xb
+ lsl r3, r2, #8
+ add r0, r4, r0
+ add r1, r4, #0
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02230D80
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _02230D80
+_02230D5A:
+ ldr r0, _02230DAC ; =0x00001158
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _02230DB0 ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02230D80
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _02230D80
+_02230D7C:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02230D80:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02230D84: .word 0x02244BE8
+_02230D88: .word 0x02244BEA
+_02230D8C: .word 0x0112A880
+_02230D90: .word 0x00000AE8
+_02230D94: .word 0x00001388
+_02230D98: .word 0x00000AEC
+_02230D9C: .word 0x02244BEE
+_02230DA0: .word 0x02244BEF
+_02230DA4: .word 0x00000AF8
+_02230DA8: .word 0x02244BED
+_02230DAC: .word 0x00001158
+_02230DB0: .word 0x00000127
+
+ thumb_func_start MOD12_02230DB4
+MOD12_02230DB4: ; 0x02230DB4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldrh r0, [r1]
+ str r1, [sp]
+ cmp r0, #0
+ bne _02230E0E
+ ldr r1, _02230E18 ; =0x00000AD4
+ mov r4, #0
+ ldrb r0, [r5, r1]
+ add r2, r5, r0
+ sub r0, r1, #4
+ ldrb r0, [r2, r0]
+ add r1, #0x2c
+ strb r0, [r5, r1]
+ ldr r0, _02230E1C ; =0x00000AD5
+ add r1, r0, #0
+ add r1, #0x2d
+_02230DD6:
+ add r3, r5, r4
+ ldrb r2, [r3, r0]
+ add r4, r4, #1
+ cmp r4, #4
+ strb r2, [r3, r1]
+ blt _02230DD6
+ ldr r1, [r5]
+ ldr r0, _02230E20 ; =0x00000127
+ ldrb r6, [r1, r0]
+ cmp r6, #4
+ bge _02230E02
+ lsl r0, r6, #2
+ ldr r7, _02230E24 ; =0x00000B14
+ add r4, r5, r0
+_02230DF2:
+ ldr r0, [r5]
+ bl FUN_02082878
+ str r0, [r4, r7]
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _02230DF2
+_02230E02:
+ ldr r0, [sp]
+ ldrh r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp]
+ strh r1, [r0]
+ b _02230E12
+_02230E0E:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02230E12:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02230E18: .word 0x00000AD4
+_02230E1C: .word 0x00000AD5
+_02230E20: .word 0x00000127
+_02230E24: .word 0x00000B14
+
+ thumb_func_start MOD12_02230E28
+MOD12_02230E28: ; 0x02230E28
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ ldr r0, _02230E74 ; =0x00001158
+ bne _02230E52
+ mov r3, #0xb
+ lsl r3, r3, #8
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #7
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02230E6E
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02230E6E
+_02230E52:
+ ldr r4, _02230E78 ; =0x00000127
+ ldr r3, [r5]
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ add r0, r5, r0
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02230E6E
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02230E6E:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02230E74: .word 0x00001158
+_02230E78: .word 0x00000127
+
+ thumb_func_start MOD12_02230E7C
+MOD12_02230E7C: ; 0x02230E7C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ ldr r0, _02230EC8 ; =0x00001158
+ bne _02230EA6
+ mov r3, #0xb
+ lsl r3, r3, #8
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #5
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02230EC2
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02230EC2
+_02230EA6:
+ ldr r4, _02230ECC ; =0x00000127
+ ldr r3, [r5]
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ add r0, r5, r0
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02230EC2
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02230EC2:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02230EC8: .word 0x00001158
+_02230ECC: .word 0x00000127
+
+ thumb_func_start MOD12_02230ED0
+MOD12_02230ED0: ; 0x02230ED0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ ldr r0, _02230F1C ; =0x00001158
+ bne _02230EFA
+ mov r3, #0xb
+ lsl r3, r3, #8
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #8
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02230F16
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02230F16
+_02230EFA:
+ ldr r4, _02230F20 ; =0x00000127
+ ldr r3, [r5]
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ add r0, r5, r0
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02230F16
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02230F16:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02230F1C: .word 0x00001158
+_02230F20: .word 0x00000127
+
+ thumb_func_start MOD12_02230F24
+MOD12_02230F24: ; 0x02230F24
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ bne _02230F76
+ ldr r1, _02230F98 ; =0x00000AD4
+ ldrb r0, [r5, r1]
+ cmp r0, #3
+ blo _02230F3C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02230F3C:
+ add r0, r1, #2
+ ldrb r0, [r5, r0]
+ add r1, #0x5c
+ strb r0, [r5, r1]
+ mov r0, #0x12
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ bl MOD12_0223E464
+ ldr r3, _02230F9C ; =0x00000B34
+ mov r1, #0
+ strb r0, [r5, r3]
+ add r0, r3, #2
+ strb r1, [r5, r0]
+ ldr r0, _02230FA0 ; =0x00001158
+ sub r3, #0x34
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #6
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02230F94
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02230F94
+_02230F76:
+ ldr r4, _02230FA4 ; =0x00000127
+ ldr r3, [r5]
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ ldr r0, _02230FA0 ; =0x00001158
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ add r0, r5, r0
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02230F94
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02230F94:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02230F98: .word 0x00000AD4
+_02230F9C: .word 0x00000B34
+_02230FA0: .word 0x00001158
+_02230FA4: .word 0x00000127
+
+ thumb_func_start MOD12_02230FA8
+MOD12_02230FA8: ; 0x02230FA8
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r3, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _02230FBE
+ cmp r0, #1
+ beq _02230FE8
+ cmp r0, #2
+ beq _02231006
+ b _02231028
+_02230FBE:
+ ldr r0, _0223104C ; =0x00000AD5
+ ldr r1, _0223104C ; =0x00000AD5
+ ldrb r7, [r3, r0]
+ mov r6, #0
+ add r0, r0, #1
+_02230FC8:
+ add r5, r3, r6
+ ldrb r2, [r5, r0]
+ add r6, r6, #1
+ cmp r6, #3
+ strb r2, [r5, r1]
+ blt _02230FC8
+ ldr r0, _02231050 ; =0x00000AD8
+ strb r7, [r3, r0]
+ sub r1, r0, #4
+ ldrb r1, [r3, r1]
+ sub r0, r0, #4
+ add r1, r1, #1
+ strb r1, [r3, r0]
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+_02230FE8:
+ ldr r0, _02231054 ; =0x00001158
+ mov r5, #0xad
+ lsl r5, r5, #4
+ add r0, r3, r0
+ add r1, r3, #0
+ mov r2, #0xa
+ add r3, r3, r5
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02231048
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02231048
+_02231006:
+ ldr r0, _02231054 ; =0x00001158
+ ldr r5, [r3]
+ add r0, r3, r0
+ ldr r3, _02231058 ; =0x00000127
+ sub r2, r3, #4
+ ldrb r1, [r5, r3]
+ sub r3, #0xb
+ ldrb r2, [r5, r2]
+ ldrb r3, [r5, r3]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02231048
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02231048
+_02231028:
+ ldr r1, _0223105C ; =0x00000AD4
+ ldrb r0, [r3, r1]
+ cmp r0, #4
+ bhs _02231044
+ add r0, r1, #0
+ add r0, #0x2d
+ ldrb r0, [r3, r0]
+ add r1, #0x2d
+ add r0, r0, #1
+ strb r0, [r3, r1]
+ mov r0, #4
+ strh r0, [r4, #2]
+ mov r0, #2
+ pop {r3, r4, r5, r6, r7, pc}
+_02231044:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02231048:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223104C: .word 0x00000AD5
+_02231050: .word 0x00000AD8
+_02231054: .word 0x00001158
+_02231058: .word 0x00000127
+_0223105C: .word 0x00000AD4
+
+ thumb_func_start MOD12_02231060
+MOD12_02231060: ; 0x02231060
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _02231072
+ cmp r0, #1
+ beq _02231090
+ b _022310B2
+_02231072:
+ ldr r0, _022310BC ; =0x00001158
+ mov r3, #0xb
+ lsl r3, r3, #8
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #0xc
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _022310B6
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _022310B6
+_02231090:
+ ldr r0, _022310BC ; =0x00001158
+ ldr r3, [r5]
+ add r0, r5, r0
+ ldr r5, _022310C0 ; =0x00000127
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _022310B6
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _022310B6
+_022310B2:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022310B6:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_022310BC: .word 0x00001158
+_022310C0: .word 0x00000127
+
+ thumb_func_start MOD12_022310C4
+MOD12_022310C4: ; 0x022310C4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r0, [sp]
+ ldrh r0, [r1]
+ str r1, [sp, #4]
+ cmp r0, #0
+ beq _022310DE
+ cmp r0, #1
+ beq _022311D4
+ cmp r0, #2
+ bne _022310DC
+ b _022311FA
+_022310DC:
+ b _02231222
+_022310DE:
+ mov r1, #0
+ mov r6, #0x4b
+ ldr r2, [sp]
+ ldr r5, _02231230 ; =0x00000ADA
+ add r3, r1, #0
+ lsl r6, r6, #2
+_022310EA:
+ ldr r4, [sp]
+ ldrsh r0, [r2, r5]
+ ldr r4, [r4]
+ add r1, r1, #1
+ add r4, r4, r3
+ strh r0, [r4, r6]
+ add r2, r2, #2
+ add r3, #0xc
+ cmp r1, #4
+ blt _022310EA
+ ldr r0, [sp]
+ mov r1, #0
+ ldr r0, [r0]
+ add r2, sp, #0x1c
+ bl MOD12_022435E4
+ ldr r0, [sp]
+ mov r1, #1
+ ldr r0, [r0]
+ add r2, sp, #0x14
+ bl MOD12_022435E4
+ mov r6, #0
+ add r2, sp, #0x14
+ add r3, sp, #0x1c
+ add r4, sp, #0xc
+ add r5, sp, #8
+ add r7, r6, #0
+_02231122:
+ mov r0, #0
+ ldrsh r1, [r3, r0]
+ ldrsh r0, [r2, r7]
+ strb r6, [r5]
+ add r6, r6, #1
+ add r0, r1, r0
+ strh r0, [r4]
+ add r2, r2, #2
+ add r3, r3, #2
+ add r4, r4, #2
+ add r5, r5, #1
+ cmp r6, #4
+ blt _02231122
+ mov r6, #0
+ sub r7, r6, #2
+_02231140:
+ mov r3, #3
+ cmp r6, #3
+ bge _02231172
+ add r4, sp, #0x10
+ add r5, sp, #8
+ add r4, #2
+ add r5, #3
+_0223114E:
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ ldrsh r1, [r4, r7]
+ cmp r1, r0
+ bge _02231168
+ strh r1, [r4]
+ sub r1, r4, #2
+ strh r0, [r1]
+ sub r0, r5, #1
+ ldrb r2, [r5]
+ ldrb r1, [r0]
+ strb r1, [r5]
+ strb r2, [r0]
+_02231168:
+ sub r3, r3, #1
+ sub r4, r4, #2
+ sub r5, r5, #1
+ cmp r3, r6
+ bgt _0223114E
+_02231172:
+ add r6, r6, #1
+ cmp r6, #3
+ blt _02231140
+ ldr r1, _02231234 ; =0x00000172
+ mov r4, #0
+ add r3, sp, #8
+_0223117E:
+ ldr r0, [sp]
+ ldrb r2, [r3]
+ ldr r0, [r0]
+ add r3, r3, #1
+ add r0, r0, r4
+ add r4, r4, #1
+ strb r2, [r0, r1]
+ cmp r4, #4
+ blt _0223117E
+ ldr r2, _02231238 ; =0x00000B37
+ ldr r1, [sp]
+ mov r0, #0
+ strb r0, [r1, r2]
+ add r3, r2, #1
+ strb r0, [r1, r3]
+ ldr r1, [r1]
+ ldr r4, _02231234 ; =0x00000172
+ sub r3, r2, #7
+ ldrb r5, [r1, r4]
+ ldr r1, [sp]
+ sub r4, #0x51
+ strb r5, [r1, r3]
+ ldr r1, [r1]
+ ldrb r1, [r1, r4]
+ cmp r1, #0
+ beq _022311BA
+ cmp r1, #1
+ beq _022311BA
+ cmp r1, #2
+ bne _022311C4
+_022311BA:
+ ldr r1, _0223123C ; =0x00000B36
+ ldr r0, [sp]
+ mov r2, #6
+ strb r2, [r0, r1]
+ b _022311CA
+_022311C4:
+ ldr r1, [sp]
+ sub r2, r2, #1
+ strb r0, [r1, r2]
+_022311CA:
+ ldr r0, [sp, #4]
+ ldrh r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #4]
+ strh r1, [r0]
+_022311D4:
+ ldr r1, _02231240 ; =0x00001158
+ ldr r0, [sp]
+ mov r4, #0xb
+ add r0, r0, r1
+ ldr r1, [sp]
+ lsl r4, r4, #8
+ add r3, r1, #0
+ mov r2, #9
+ add r3, r3, r4
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02231228
+ ldr r0, [sp, #4]
+ ldrh r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #4]
+ strh r1, [r0]
+ b _02231228
+_022311FA:
+ ldr r0, [sp]
+ ldr r4, _02231244 ; =0x00000127
+ ldr r3, [r0]
+ ldr r1, _02231240 ; =0x00001158
+ sub r2, r4, #4
+ add r0, r0, r1
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02231228
+ ldr r0, [sp, #4]
+ ldrh r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #4]
+ strh r1, [r0]
+ b _02231228
+_02231222:
+ add sp, #0x24
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_02231228:
+ mov r0, #0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02231230: .word 0x00000ADA
+_02231234: .word 0x00000172
+_02231238: .word 0x00000B37
+_0223123C: .word 0x00000B36
+_02231240: .word 0x00001158
+_02231244: .word 0x00000127
+
+ thumb_func_start MOD12_02231248
+MOD12_02231248: ; 0x02231248
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _0223125A
+ cmp r0, #1
+ beq _0223125E
+ b _0223128E
+_0223125A:
+ add r0, r0, #1
+ strh r0, [r4]
+_0223125E:
+ ldr r3, _022312B0 ; =0x00000172
+ mov r0, #0
+ add r1, sp, #0
+_02231264:
+ ldr r5, [r2]
+ add r5, r5, r0
+ ldrb r5, [r5, r3]
+ add r0, r0, #1
+ strb r5, [r1]
+ add r1, r1, #1
+ cmp r0, #4
+ blt _02231264
+ ldr r0, _022312B4 ; =0x00001158
+ add r1, r2, #0
+ add r0, r2, r0
+ mov r2, #4
+ add r3, sp, #0
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _022312AC
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _022312AC
+_0223128E:
+ ldr r0, _022312B4 ; =0x00001158
+ ldr r3, [r2]
+ ldr r4, _022312B8 ; =0x00000127
+ add r0, r2, r0
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _022312AC
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_022312AC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022312B0: .word 0x00000172
+_022312B4: .word 0x00001158
+_022312B8: .word 0x00000127
+
+ thumb_func_start MOD12_022312BC
+MOD12_022312BC: ; 0x022312BC __sinit
+ push {r3, lr}
+ ldr r0, _022312D0 ; =SDK_OVERLAY_MODULE_08_ID
+ mov r1, #2
+ bl HandleLoadOverlay
+ ldr r0, _022312D4 ; =SDK_OVERLAY_MODULE_17_ID
+ mov r1, #2
+ bl HandleLoadOverlay
+ pop {r3, pc}
+ .align 2, 0
+_022312D0: .word SDK_OVERLAY_MODULE_08_ID
+_022312D4: .word SDK_OVERLAY_MODULE_17_ID
+
+ thumb_func_start MOD12_022312D8
+MOD12_022312D8: ; 0x022312D8
+ push {r3, lr}
+ sub sp, #8
+ mov r2, #2
+ ldr r1, _022312F0 ; =MOD12_022312F4
+ str r2, [sp]
+ str r1, [sp, #4]
+ mov r1, #0
+ add r3, r1, #0
+ bl FUN_02022318
+ add sp, #8
+ pop {r3, pc}
+ .align 2, 0
+_022312F0: .word MOD12_022312F4
+
+ thumb_func_start MOD12_022312F4
+MOD12_022312F4: ; 0x022312F4
+ push {r3, lr}
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r0, _02231360 ; =0x04000008
+ mov r1, #3
+ ldrh r2, [r0]
+ bic r2, r1
+ mov r1, #1
+ orr r1, r2
+ strh r1, [r0]
+ add r0, #0x58
+ ldrh r2, [r0]
+ ldr r1, _02231364 ; =0xFFFFCFFD
+ and r2, r1
+ strh r2, [r0]
+ add r2, r1, #2
+ ldrh r3, [r0]
+ add r1, r1, #2
+ and r3, r2
+ mov r2, #0x10
+ orr r2, r3
+ strh r2, [r0]
+ ldrh r3, [r0]
+ ldr r2, _02231368 ; =0x0000CFFB
+ and r3, r2
+ strh r3, [r0]
+ ldrh r3, [r0]
+ sub r2, #0x1c
+ and r3, r1
+ mov r1, #8
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r1, [r0]
+ and r1, r2
+ strh r1, [r0]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl G3X_SetFog
+ mov r0, #0
+ ldr r2, _0223136C ; =0x00007FFF
+ add r1, r0, #0
+ mov r3, #0x3f
+ str r0, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _02231370 ; =0xBFFF0000
+ ldr r0, _02231374 ; =0x04000580
+ str r1, [r0]
+ pop {r3, pc}
+ .align 2, 0
+_02231360: .word 0x04000008
+_02231364: .word 0xFFFFCFFD
+_02231368: .word 0x0000CFFB
+_0223136C: .word 0x00007FFF
+_02231370: .word 0xBFFF0000
+_02231374: .word 0x04000580
+
+ thumb_func_start MOD12_02231378
+MOD12_02231378: ; 0x02231378
+ ldr r3, _0223137C ; =0x020223BD
+ bx r3
+ .align 2, 0
+_0223137C: .word 0x020223BD
+
+ thumb_func_start MOD12_02231380
+MOD12_02231380: ; 0x02231380
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x74
+ str r0, [sp, #0x18]
+ str r1, [sp, #0x1c]
+ str r2, [sp, #0x20]
+ ldr r0, [sp, #0x90]
+ ldr r1, [sp, #0x8c]
+ mov r2, #0
+ str r3, [sp, #0x24]
+ ldr r5, [sp, #0x88]
+ ldr r4, [sp, #0xa0]
+ bl FUN_02002E14
+ add r7, r0, #0
+ asr r1, r7, #2
+ lsr r1, r1, #0x1d
+ add r1, r7, r1
+ asr r6, r1, #3
+ mov r1, #8
+ bl FX_ModS32
+ cmp r0, #0
+ beq _022313B0
+ add r6, r6, #1
+_022313B0:
+ add r0, sp, #0x34
+ bl FUN_0201901C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ lsl r2, r6, #0x18
+ ldr r0, [sp, #0x1c]
+ add r1, sp, #0x34
+ lsr r2, r2, #0x18
+ mov r3, #2
+ bl FUN_020190EC
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x94]
+ ldr r1, [sp, #0x90]
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ str r3, [sp, #0x10]
+ ldr r2, [sp, #0x8c]
+ add r0, sp, #0x34
+ str r3, [sp, #0x14]
+ bl FUN_0201BE3C
+ ldr r2, [sp, #0x18]
+ add r0, sp, #0x34
+ mov r1, #1
+ bl FUN_02011898
+ mov r1, #1
+ add r2, r1, #0
+ add r3, sp, #0x28
+ bl FUN_0201D568
+ ldr r0, [sp, #0xa8]
+ cmp r0, #1
+ bne _02231408
+ lsr r0, r7, #0x1f
+ add r0, r7, r0
+ asr r0, r0, #1
+ sub r4, r4, r0
+_02231408:
+ ldr r0, [sp, #0x24]
+ str r0, [sp, #0x44]
+ add r0, sp, #0x34
+ str r0, [sp, #0x48]
+ ldr r0, [sp, #0x20]
+ bl FUN_0200CA40
+ str r0, [sp, #0x4c]
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x9c]
+ bl FUN_0200C334
+ str r0, [sp, #0x50]
+ mov r0, #0
+ str r0, [sp, #0x54]
+ ldr r0, [sp, #0x2c]
+ str r4, [sp, #0x5c]
+ str r0, [sp, #0x58]
+ ldr r0, [sp, #0xa4]
+ sub r0, #8
+ str r0, [sp, #0x60]
+ ldr r0, [sp, #0xac]
+ str r0, [sp, #0x64]
+ ldr r0, [sp, #0xb0]
+ str r0, [sp, #0x68]
+ mov r0, #1
+ str r0, [sp, #0x6c]
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #0x70]
+ add r0, sp, #0x44
+ bl FUN_020117E8
+ ldr r1, [sp, #0x98]
+ add r6, r0, #0
+ cmp r1, #0
+ beq _02231454
+ bl FUN_02011A90
+_02231454:
+ ldr r2, [sp, #0xa4]
+ add r0, r6, #0
+ add r1, r4, #0
+ sub r2, #8
+ bl FUN_020118C4
+ add r0, sp, #0x34
+ bl FUN_02019178
+ str r6, [r5]
+ add r3, sp, #0x28
+ ldmia r3!, {r0, r1}
+ add r2, r5, #4
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ strh r7, [r5, #0x10]
+ add sp, #0x74
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223147C
+MOD12_0223147C: ; 0x0223147C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02011870
+ add r0, r4, #4
+ bl FUN_0201D5E8
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02231490
+MOD12_02231490: ; 0x02231490
+ cmp r3, #1
+ bne _0223149A
+ ldrh r3, [r0, #0x10]
+ lsr r3, r3, #1
+ sub r1, r1, r3
+_0223149A:
+ ldr r3, _022314A4 ; =0x020118C5
+ ldr r0, [r0]
+ sub r2, #8
+ bx r3
+ nop
+_022314A4: .word 0x020118C5
+
+ thumb_func_start MOD12_022314A8
+MOD12_022314A8: ; 0x022314A8
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r3, r1, #0
+ mov r0, #1
+ mov r1, #0x1a
+ mov r2, #0xc2
+ bl FUN_0200A86C
+ add r5, r0, #0
+ add r1, r4, #0
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_022314CC
+MOD12_022314CC: ; 0x022314CC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ ldr r1, _02231504 ; =0x00000122
+ ldrb r1, [r5, r1]
+ bl MOD12_0224473C
+ add r7, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+_022314E0:
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ add r1, r7, #0
+ bl MOD12_02244710
+ ldr r1, _02231508 ; =0x0000012A
+ add r6, r6, #1
+ strh r0, [r4, r1]
+ add r5, r5, #4
+ add r4, #0xc
+ cmp r6, #4
+ blt _022314E0
+ add r0, r7, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02231504: .word 0x00000122
+_02231508: .word 0x0000012A
+
+ thumb_func_start MOD12_0223150C
+MOD12_0223150C: ; 0x0223150C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp]
+ ldr r4, [sp]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ str r0, [sp, #4]
+_0223151C:
+ ldr r0, [r4]
+ mov r1, #6
+ mov r2, #0
+ bl FUN_020671BC
+ mov r6, #0x64
+ add r5, r0, #0
+ add r0, r6, #0
+ ldr r1, [sp]
+ add r0, #0xbb
+ ldrb r0, [r1, r0]
+ cmp r0, #4
+ bls _02231538
+ b _022316AA
+_02231538:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02231544: ; jump table
+ .short _0223154E - _02231544 - 2 ; case 0
+ .short _02231594 - _02231544 - 2 ; case 1
+ .short _022315DA - _02231544 - 2 ; case 2
+ .short _02231620 - _02231544 - 2 ; case 3
+ .short _02231666 - _02231544 - 2 ; case 4
+_0223154E:
+ ldr r0, [r4]
+ mov r1, #0x13
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0xc]
+ ldr r0, [r4]
+ mov r1, #0x17
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x14
+ mov r2, #0
+ bl FUN_020671BC
+ add r7, r0, #0
+ add r0, r6, #0
+ add r0, #0xa0
+ cmp r5, r0
+ beq _0223158C
+ add r0, r6, #0
+ add r0, #0xa1
+ cmp r5, r0
+ beq _02231590
+ add r0, r6, #0
+ add r0, #0xa4
+ cmp r5, r0
+ beq _02231590
+ b _022316B2
+_0223158C:
+ mov r6, #0x6e
+ b _022316B2
+_02231590:
+ mov r6, #0x69
+ b _022316B2
+_02231594:
+ ldr r0, [r4]
+ mov r1, #0x14
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0xc]
+ ldr r0, [r4]
+ mov r1, #0x13
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x15
+ mov r2, #0
+ bl FUN_020671BC
+ add r7, r0, #0
+ add r0, r6, #0
+ add r0, #0xa0
+ cmp r5, r0
+ beq _022315D6
+ add r0, r6, #0
+ add r0, #0xa1
+ cmp r5, r0
+ beq _022315D2
+ add r0, r6, #0
+ add r0, #0xa2
+ cmp r5, r0
+ beq _022315D6
+ b _022316B2
+_022315D2:
+ mov r6, #0x6e
+ b _022316B2
+_022315D6:
+ mov r6, #0x69
+ b _022316B2
+_022315DA:
+ ldr r0, [r4]
+ mov r1, #0x15
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0xc]
+ ldr r0, [r4]
+ mov r1, #0x14
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x16
+ mov r2, #0
+ bl FUN_020671BC
+ add r7, r0, #0
+ add r0, r6, #0
+ add r0, #0xa1
+ cmp r5, r0
+ beq _0223161C
+ add r0, r6, #0
+ add r0, #0xa2
+ cmp r5, r0
+ beq _02231618
+ add r0, r6, #0
+ add r0, #0xa3
+ cmp r5, r0
+ beq _0223161C
+ b _022316B2
+_02231618:
+ mov r6, #0x6e
+ b _022316B2
+_0223161C:
+ mov r6, #0x69
+ b _022316B2
+_02231620:
+ ldr r0, [r4]
+ mov r1, #0x16
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0xc]
+ ldr r0, [r4]
+ mov r1, #0x15
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x17
+ mov r2, #0
+ bl FUN_020671BC
+ add r7, r0, #0
+ add r0, r6, #0
+ add r0, #0xa2
+ cmp r5, r0
+ beq _02231662
+ add r0, r6, #0
+ add r0, #0xa3
+ cmp r5, r0
+ beq _0223165E
+ add r0, r6, #0
+ add r0, #0xa4
+ cmp r5, r0
+ beq _02231662
+ b _022316B2
+_0223165E:
+ mov r6, #0x6e
+ b _022316B2
+_02231662:
+ mov r6, #0x69
+ b _022316B2
+_02231666:
+ ldr r0, [r4]
+ mov r1, #0x17
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0xc]
+ ldr r0, [r4]
+ mov r1, #0x16
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x13
+ mov r2, #0
+ bl FUN_020671BC
+ add r7, r0, #0
+ add r0, r6, #0
+ add r0, #0xa0
+ cmp r5, r0
+ beq _022316A6
+ add r0, r6, #0
+ add r0, #0xa3
+ cmp r5, r0
+ beq _022316A6
+ add r0, r6, #0
+ add r0, #0xa4
+ cmp r5, r0
+ bne _022316B2
+ mov r6, #0x6e
+ b _022316B2
+_022316A6:
+ mov r6, #0x69
+ b _022316B2
+_022316AA:
+ bl ErrorHandling
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_022316B2:
+ ldr r0, [r4]
+ mov r1, #0x18
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, [sp, #8]
+ add r1, r1, r7
+ add r1, r0, r1
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r1, r0, #1
+ ldr r0, [sp, #0xc]
+ add r1, r0, r1
+ add r0, r1, #0
+ mul r0, r6
+ mov r1, #0x64
+ bl _s32_div_f
+ mov r1, #0x4a
+ ldr r2, [sp, #4]
+ lsl r1, r1, #2
+ strh r0, [r2, r1]
+ add r0, r2, #0
+ add r0, #0xc
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x10]
+ add r4, r4, #4
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #4
+ bge _022316F2
+ b _0223151C
+_022316F2:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022316F8
+MOD12_022316F8: ; 0x022316F8
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r6, r2, #0
+ mov r2, #0
+ mvn r2, r2
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r3, r2
+ beq _0223171A
+ mov r2, #1
+ str r2, [sp]
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ mov r2, #0x2e
+ mov r3, #0x49
+ bl FUN_0200C00C
+_0223171A:
+ mov r1, #0
+ ldr r0, [sp, #0x28]
+ mvn r1, r1
+ cmp r0, r1
+ beq _02231744
+ mov r1, #0x2e
+ str r1, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ mov r1, #0
+ str r1, [sp, #8]
+ mov r1, #1
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ mov r1, #2
+ add r2, r5, #0
+ add r3, r4, #0
+ bl FUN_0200C0DC
+_02231744:
+ mov r0, #0
+ ldr r1, [sp, #0x2c]
+ mvn r0, r0
+ cmp r1, r0
+ beq _02231760
+ mov r0, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x2e
+ mov r3, #0x4a
+ bl FUN_0200C124
+_02231760:
+ mov r0, #0
+ ldr r1, [sp, #0x30]
+ mvn r0, r0
+ cmp r1, r0
+ beq _0223177C
+ mov r0, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x2e
+ mov r3, #0x4b
+ bl FUN_0200C13C
+_0223177C:
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_02231780
+MOD12_02231780: ; 0x02231780
+ push {r4, r5, r6, lr}
+ add r4, r2, #0
+ mov r2, #0
+ mvn r2, r2
+ add r5, r0, #0
+ add r6, r3, #0
+ cmp r1, r2
+ beq _02231794
+ bl FUN_0200C358
+_02231794:
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ beq _022317A4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0200C368
+_022317A4:
+ mov r0, #0
+ mvn r0, r0
+ cmp r6, r0
+ beq _022317B4
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_0200C378
+_022317B4:
+ mov r0, #0
+ ldr r1, [sp, #0x10]
+ mvn r0, r0
+ cmp r1, r0
+ beq _022317C4
+ add r0, r5, #0
+ bl FUN_0200C388
+_022317C4:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022317C8
+MOD12_022317C8: ; 0x022317C8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ ldr r5, _02231850 ; =0x02244D18
+ str r2, [sp, #4]
+ str r0, [sp]
+ add r7, r1, #0
+ add r4, sp, #8
+ mov r2, #6
+_022317D8:
+ ldmia r5!, {r0, r1}
+ stmia r4!, {r0, r1}
+ sub r2, r2, #1
+ bne _022317D8
+ ldr r0, [r5]
+ ldr r5, _02231854 ; =0x02244CE8
+ str r0, [r4]
+ ldr r0, [sp, #0x50]
+ ldr r4, [sp]
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x54]
+ str r3, [sp, #0x1c]
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x58]
+ mov r6, #0
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x5c]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x60]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x64]
+ str r0, [sp, #0x34]
+_02231804:
+ ldr r1, [sp, #4]
+ add r0, r7, #0
+ add r2, sp, #8
+ bl FUN_0200C154
+ str r0, [r4]
+ mov r1, #0
+ mov r2, #2
+ ldrsh r1, [r5, r1]
+ ldrsh r2, [r5, r2]
+ bl FUN_0200C714
+ ldrb r1, [r5, #6]
+ ldr r0, [r4]
+ bl FUN_0200C5C0
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_0200C840
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_0200C59C
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, #8
+ cmp r6, #6
+ blt _02231804
+ ldr r0, _02231858 ; =MOD12_02231880
+ ldr r1, [sp]
+ ldr r2, [sp, #0x68]
+ bl FUN_0200CA44
+ ldr r1, [sp]
+ str r0, [r1, #0x18]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02231850: .word 0x02244D18
+_02231854: .word 0x02244CE8
+_02231858: .word MOD12_02231880
+
+ thumb_func_start MOD12_0223185C
+MOD12_0223185C: ; 0x0223185C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02231864:
+ ldr r0, [r5]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _02231864
+ ldr r0, [r6, #0x18]
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r6, #0x18]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02231880
+MOD12_02231880: ; 0x02231880
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, _022318A0 ; =0x02244CE8
+ add r5, r1, #0
+ mov r6, #0
+ mov r7, #4
+_0223188A:
+ ldrsh r1, [r4, r7]
+ ldr r0, [r5]
+ bl FUN_0200C8BC
+ add r6, r6, #1
+ add r4, #8
+ add r5, r5, #4
+ cmp r6, #6
+ blt _0223188A
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022318A0: .word 0x02244CE8
+
+ thumb_func_start MOD12_022318A4
+MOD12_022318A4: ; 0x022318A4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ mov r1, #0x14
+ add r6, r2, #0
+ add r7, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x14
+ bl MI_CpuFill8
+ str r5, [r4, #4]
+ str r6, [r4, #0xc]
+ ldr r0, [sp, #0x18]
+ strb r7, [r4, #0x10]
+ strb r0, [r4, #0x12]
+ ldr r0, _022318D8 ; =MOD12_0223190C
+ ldr r2, [sp, #0x1c]
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022318D8: .word MOD12_0223190C
+
+ thumb_func_start MOD12_022318DC
+MOD12_022318DC: ; 0x022318DC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _022318EA
+ bl ErrorHandling
+_022318EA:
+ ldr r0, [r4]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD12_022318F8
+MOD12_022318F8: ; 0x022318F8
+ push {r3, lr}
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _02231908
+ mov r0, #1
+ pop {r3, pc}
+_02231908:
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD12_0223190C
+MOD12_0223190C: ; 0x0223190C
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r0, #1
+ add r4, r1, #0
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _02231972
+ ldr r0, [r4, #8]
+ add r2, r0, #1
+ str r2, [r4, #8]
+ ldrb r0, [r4, #0x11]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #1
+ ldrh r0, [r1, r0]
+ cmp r2, r0
+ ble _02231972
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #6
+ mov r1, #0
+ mov r2, #4
+ mov r3, #0x3f
+ bl FUN_0200A208
+ ldr r0, _02231978 ; =0x000005F8
+ bl FUN_020054C8
+ mov r0, #0
+ str r0, [r4, #8]
+ ldrb r0, [r4, #0x11]
+ add r0, r0, #1
+ strb r0, [r4, #0x11]
+ ldrb r1, [r4, #0x11]
+ ldrb r0, [r4, #0x10]
+ cmp r1, r0
+ blo _02231972
+ ldrb r0, [r4, #0x12]
+ cmp r0, #0
+ bne _02231966
+ add r0, r4, #0
+ bl MOD12_022318DC
+ add sp, #4
+ pop {r3, r4, pc}
+_02231966:
+ cmp r0, #0xff
+ beq _0223196E
+ sub r0, r0, #1
+ strb r0, [r4, #0x12]
+_0223196E:
+ mov r0, #0
+ strb r0, [r4, #0x11]
+_02231972:
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_02231978: .word 0x000005F8
+
+ thumb_func_start MOD12_0223197C
+MOD12_0223197C: ; 0x0223197C
+ push {r4, lr}
+ mov r1, #0x32
+ mov r0, #0x15
+ lsl r1, r1, #4
+ bl FUN_02016998
+ mov r2, #0x32
+ mov r1, #0
+ lsl r2, r2, #4
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r1, #0
+ mov r0, #0x2e
+ mvn r1, r1
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022319A4
+MOD12_022319A4: ; 0x022319A4
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ ldr r6, _022319F8 ; =0x02244F64
+ add r5, r0, #0
+ add r7, r4, #0
+_022319AE:
+ add r1, r4, #4
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ add r2, r6, #0
+ add r3, r7, #0
+ bl FUN_02016C18
+ add r1, r4, #4
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ mov r2, #0
+ bl FUN_02018768
+ add r1, r4, #4
+ lsl r1, r1, #0x18
+ mov r2, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r1, r4, #4
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add r4, r4, #1
+ add r6, #0x1c
+ cmp r4, #4
+ blo _022319AE
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022319F8: .word 0x02244F64
+
+ thumb_func_start MOD12_022319FC
+MOD12_022319FC: ; 0x022319FC
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_02231A04:
+ add r0, r4, #4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r1, r6, #0
+ bl FUN_0201797C
+ add r1, r4, #4
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl FUN_020178A0
+ add r4, r4, #1
+ cmp r4, #4
+ blo _02231A04
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_02231A24
+MOD12_02231A24: ; 0x02231A24
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ bl MOD12_0223197C
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x15
+ str r7, [r4, #8]
+ bl FUN_02011744
+ mov r7, #2
+ str r0, [r4, #0x3c]
+ mov r5, #0
+ lsl r7, r7, #0xa
+ b _02231A88
+_02231A4C:
+ mov r0, #0x15
+ add r1, r7, #0
+ bl FUN_02016998
+ lsl r1, r5, #2
+ add r1, r4, r1
+ str r0, [r1, #0x20]
+ mov r0, #0x15
+ str r0, [sp]
+ ldr r1, _02231AE0 ; =0x02244D6C
+ lsl r2, r5, #1
+ ldrh r1, [r1, r2]
+ mov r0, #0x2d
+ mov r2, #1
+ add r3, sp, #0xc
+ bl FUN_02006BDC
+ add r6, r0, #0
+ lsl r0, r5, #2
+ add r0, r4, r0
+ ldr r1, [r0, #0x20]
+ ldr r0, [sp, #0xc]
+ add r2, r7, #0
+ add r0, #0xc
+ bl MIi_CpuCopy32
+ add r0, r6, #0
+ bl FUN_02016A18
+ add r5, r5, #1
+_02231A88:
+ cmp r5, #5
+ blt _02231A4C
+ ldr r0, [r4, #4]
+ mov r7, #2
+ ldr r6, [r0, #0x50]
+ mov r5, #0
+ lsl r7, r7, #8
+ b _02231AD6
+_02231A98:
+ mov r0, #0x15
+ add r1, r7, #0
+ bl FUN_02016998
+ lsl r1, r5, #2
+ add r1, r4, r1
+ str r0, [r1, #0x34]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r2, _02231AE4 ; =0x02244D54
+ lsl r3, r5, #1
+ ldrh r2, [r2, r3]
+ add r0, r6, #0
+ mov r1, #0x2d
+ mov r3, #0x15
+ bl FUN_020030E8
+ add r0, r6, #0
+ mov r1, #1
+ bl FUN_020031FC
+ lsl r1, r5, #2
+ add r1, r4, r1
+ ldr r1, [r1, #0x34]
+ add r2, r7, #0
+ bl MIi_CpuCopy16
+ add r5, r5, #1
+_02231AD6:
+ cmp r5, #2
+ blt _02231A98
+ add r0, r4, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02231AE0: .word 0x02244D6C
+_02231AE4: .word 0x02244D54
+
+ thumb_func_start MOD12_02231AE8
+MOD12_02231AE8: ; 0x02231AE8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r0, #0
+ bl MOD12_02232638
+ ldr r0, [r6, #0x3c]
+ bl FUN_020117BC
+ ldr r3, _02231B48 ; =0x000080F8
+ str r3, [sp]
+ ldr r0, [r6, #4]
+ add r1, r3, #5
+ ldr r0, [r0, #0x1c]
+ sub r2, r3, #7
+ bl MOD12_022447C0
+ mov r0, #0xc5
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl MOD12_0224486C
+ mov r4, #0
+ add r5, r6, #0
+_02231B16:
+ ldr r0, [r5, #0x20]
+ bl FUN_02016A18
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _02231B16
+ mov r5, #0
+ add r4, r6, #0
+_02231B28:
+ ldr r0, [r4, #0x34]
+ bl FUN_02016A18
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #2
+ blt _02231B28
+ add r0, r6, #0
+ bl MOD12_02232B7C
+ add r0, r6, #0
+ bl FUN_02016A18
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02231B48: .word 0x000080F8
+
+ thumb_func_start MOD12_02231B4C
+MOD12_02231B4C: ; 0x02231B4C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r0, #0
+ str r3, [r7, #0xc]
+ ldr r0, [r7, #4]
+ str r2, [sp, #8]
+ ldr r0, [r0, #0x24]
+ str r1, [sp, #4]
+ str r0, [sp, #0xc]
+ mov r0, #0x2e
+ lsl r0, r0, #4
+ ldrsb r2, [r7, r0]
+ mov r0, #0
+ mvn r0, r0
+ cmp r2, r0
+ bne _02231B76
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ b _02231B80
+_02231B76:
+ mov r0, #0x30
+ ldr r1, _02231C70 ; =0x02245074
+ mul r0, r2
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+_02231B80:
+ ldr r0, [sp, #4]
+ mov r1, #0x30
+ ldr r2, _02231C70 ; =0x02245074
+ mul r1, r0
+ add r0, r2, r1
+ str r0, [sp, #0x14]
+ mov r4, #0
+ add r5, r0, #0
+_02231B90:
+ ldrh r1, [r5, #0xc]
+ add r0, r4, #4
+ lsl r0, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, #4
+ blt _02231B90
+ mov r0, #2
+ lsl r0, r0, #8
+ str r0, [sp]
+ ldr r1, [sp, #0x14]
+ ldr r0, [r7, #4]
+ ldrh r1, [r1, #2]
+ ldr r0, [r0, #0x50]
+ mov r2, #1
+ lsl r1, r1, #2
+ add r1, r7, r1
+ ldr r1, [r1, #0x34]
+ mov r3, #0
+ bl FUN_02003054
+ ldr r6, [sp, #0x14]
+ ldr r4, [sp, #0x10]
+ mov r5, #0
+_02231BCA:
+ ldrh r2, [r6, #4]
+ ldr r0, _02231C74 ; =0x0000FFFF
+ cmp r2, r0
+ beq _02231C00
+ ldr r0, [sp, #8]
+ cmp r0, #1
+ beq _02231BDE
+ ldrh r0, [r4, #4]
+ cmp r2, r0
+ beq _02231C00
+_02231BDE:
+ lsl r2, r2, #2
+ add r1, r5, #4
+ add r2, r7, r2
+ lsl r1, r1, #0x18
+ mov r3, #2
+ ldr r0, [sp, #0xc]
+ ldr r2, [r2, #0x20]
+ lsr r1, r1, #0x18
+ lsl r3, r3, #0xa
+ bl FUN_02017DFC
+ add r1, r5, #4
+ lsl r1, r1, #0x18
+ ldr r0, [sp, #0xc]
+ lsr r1, r1, #0x18
+ bl FUN_0201AC68
+_02231C00:
+ add r5, r5, #1
+ add r6, r6, #2
+ add r4, r4, #2
+ cmp r5, #4
+ blt _02231BCA
+ mov r1, #0x2e
+ ldr r0, [sp, #4]
+ lsl r1, r1, #4
+ strb r0, [r7, r1]
+ add r0, r7, #0
+ bl MOD12_02232638
+ ldr r0, [sp, #0x14]
+ ldr r3, [r0, #0x28]
+ cmp r3, #0
+ beq _02231C28
+ ldr r1, [sp, #4]
+ ldr r2, [sp, #8]
+ add r0, r7, #0
+ blx r3
+_02231C28:
+ ldr r0, [sp, #0x14]
+ ldrh r1, [r0]
+ ldr r0, _02231C74 ; =0x0000FFFF
+ cmp r1, r0
+ beq _02231C62
+ ldr r0, [sp, #8]
+ cmp r0, #1
+ beq _02231C40
+ ldr r0, [sp, #0x10]
+ ldrh r0, [r0]
+ cmp r1, r0
+ beq _02231C62
+_02231C40:
+ mov r3, #0xb7
+ mov r0, #0x15
+ lsl r3, r3, #2
+ str r0, [sp]
+ mov r0, #0x2d
+ mov r2, #1
+ add r3, r7, r3
+ bl FUN_02006BB0
+ mov r1, #0xb6
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ ldr r0, _02231C78 ; =MOD12_0223336C
+ add r1, r7, #0
+ mov r2, #0xa
+ bl FUN_0200CA98
+_02231C62:
+ ldr r0, _02231C7C ; =MOD12_022333A8
+ add r1, r7, #0
+ mov r2, #0xa
+ bl FUN_0200CA98
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02231C70: .word 0x02245074
+_02231C74: .word 0x0000FFFF
+_02231C78: .word MOD12_0223336C
+_02231C7C: .word MOD12_022333A8
+
+ thumb_func_start MOD12_02231C80
+MOD12_02231C80: ; 0x02231C80
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0x2e
+ lsl r0, r0, #4
+ ldrsb r1, [r5, r0]
+ mov r6, #0
+ sub r0, r6, #1
+ cmp r1, r0
+ bne _02231C96
+ bl ErrorHandling
+_02231C96:
+ mov r0, #0x2e
+ lsl r0, r0, #4
+ ldrsb r1, [r5, r0]
+ ldr r3, _02231D44 ; =0x02245074
+ mov r0, #0x30
+ add r2, r1, #0
+ mul r2, r0
+ add r4, r3, r2
+ ldr r1, [r4, #0x14]
+ cmp r1, #0
+ bne _02231CB0
+ sub r0, #0x31
+ pop {r3, r4, r5, r6, r7, pc}
+_02231CB0:
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ bne _02231CBA
+ bl ErrorHandling
+_02231CBA:
+ ldr r0, [r4, #0x14]
+ bl FUN_02020988
+ add r7, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r7, r0
+ bne _02231CD4
+ add r0, r5, #0
+ bl MOD12_02232E18
+ add r7, r0, #0
+ add r6, r6, #1
+_02231CD4:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp]
+ cmp r7, r0
+ bne _02231CE2
+ mov r2, #0xff
+ b _02231CEE
+_02231CE2:
+ ldr r1, [r4, #0x18]
+ lsl r0, r7, #2
+ ldr r0, [r1, r0]
+ str r0, [sp]
+ ldr r0, [r4, #0x1c]
+ ldrb r2, [r0, r7]
+_02231CEE:
+ ldr r3, [r4, #0x2c]
+ cmp r3, #0
+ beq _02231D3E
+ ldr r1, [sp]
+ add r0, r5, #0
+ blx r3
+ mov r1, #0
+ mvn r1, r1
+ str r0, [sp]
+ cmp r0, r1
+ beq _02231D3E
+ ldr r2, [r4, #0x24]
+ cmp r2, #0
+ beq _02231D10
+ add r0, r5, #0
+ add r1, r7, #0
+ blx r2
+_02231D10:
+ mov r0, #0xc6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ mov r2, #4
+ bl MI_CpuFill8
+ mov r0, #0xc5
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl MOD12_0224493C
+ cmp r6, #0
+ ble _02231D36
+ mov r0, #0xc7
+ mov r1, #1
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ b _02231D3E
+_02231D36:
+ mov r0, #0xc7
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+_02231D3E:
+ ldr r0, [sp]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02231D44: .word 0x02245074
+
+ thumb_func_start MOD12_02231D48
+MOD12_02231D48: ; 0x02231D48
+ ldr r1, [r0, #0x10]
+ cmp r1, #0
+ bne _02231D58
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ bne _02231D58
+ mov r0, #1
+ bx lr
+_02231D58:
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_02231D5C
+MOD12_02231D5C: ; 0x02231D5C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ mov r2, #0x12
+ lsl r2, r2, #4
+ ldr r3, [r0]
+ add r1, r2, #1
+ ldrb r0, [r3, r2]
+ ldrb r1, [r3, r1]
+ ldr r3, [r5]
+ add r2, #0x51
+ ldrb r2, [r3, r2]
+ bl FUN_02083228
+ add r4, r0, #0
+ ldr r0, [r5, #4]
+ ldr r1, _02231E28 ; =0x0000011F
+ ldr r2, [r0]
+ ldrb r0, [r2, r1]
+ add r1, r1, #2
+ ldrb r1, [r2, r1]
+ bl FUN_020832A4
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ ldr r0, [r0, #0x38]
+ bl FUN_0200A914
+ add r4, r0, #0
+ ldr r0, [r5, #4]
+ add r1, r6, #0
+ ldr r0, [r0, #0x38]
+ bl FUN_0200A914
+ add r6, r0, #0
+ ldr r0, _02231E2C ; =0x00010200
+ add r1, r5, #0
+ str r0, [sp]
+ mov r3, #0
+ ldr r0, _02231E30 ; =0x000080F0
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x80
+ str r0, [sp, #0xc]
+ mov r0, #0x7f
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r1, #0x40
+ add r2, r4, #0
+ str r3, [sp, #0x18]
+ bl MOD12_022322C0
+ ldr r0, _02231E2C ; =0x00010200
+ add r1, r5, #0
+ str r0, [sp]
+ mov r3, #0
+ ldr r0, _02231E30 ; =0x000080F0
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x80
+ str r0, [sp, #0xc]
+ mov r0, #0x9f
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r1, #0x54
+ add r2, r6, #0
+ str r3, [sp, #0x18]
+ bl MOD12_022322C0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r2, [r5, #4]
+ mov r0, #1
+ str r0, [sp]
+ mov r1, #0x20
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r2]
+ add r1, #0xff
+ ldrb r0, [r0, r1]
+ mov r1, #0x2d
+ mov r3, #0x15
+ lsl r0, r0, #0x14
+ lsr r0, r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [r2, #0x50]
+ mov r2, #0x25
+ bl FUN_02003084
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02231E28: .word 0x0000011F
+_02231E2C: .word 0x00010200
+_02231E30: .word 0x000080F0
+
+ thumb_func_start MOD12_02231E34
+MOD12_02231E34: ; 0x02231E34
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ add r6, r0, #0
+ mov r0, #0x69
+ lsl r0, r0, #2
+ add r5, r6, r0
+ ldr r0, _022320A0 ; =0x000002E1
+ mov r1, #0xff
+ strb r1, [r6, r0]
+ add r0, r5, #0
+ str r0, [sp, #0x24]
+ add r0, #0x50
+ str r0, [sp, #0x24]
+ add r0, r5, #0
+ add r7, r6, #0
+ str r0, [sp, #0x28]
+ add r0, #0xa0
+ mov r4, #0
+ add r7, #0x40
+ str r0, [sp, #0x28]
+ b _02231F80
+_02231E5E:
+ ldr r0, [r6, #4]
+ ldr r1, _022320A4 ; =0x00000123
+ ldr r0, [r0]
+ mov r2, #0
+ ldrb r1, [r0, r1]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ add r1, r4, #0
+ add r1, #0x36
+ bl FUN_020671BC
+ lsl r1, r4, #1
+ add r2, sp, #0x3c
+ strh r0, [r2, r1]
+ add r0, r2, #0
+ ldrh r0, [r0, r1]
+ cmp r0, #0
+ beq _02231E8C
+ mov r0, #0x4b
+ add r2, r5, r4
+ lsl r0, r0, #2
+ ldrb r2, [r2, r0]
+ b _02231E8E
+_02231E8C:
+ mov r2, #0
+_02231E8E:
+ add r0, sp, #0x34
+ strh r2, [r0, r1]
+ ldr r0, _022320A8 ; =0x00010708
+ ldr r1, _022320AC ; =0x02244D94
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _022320B0 ; =0x000080F0
+ mov r2, #0
+ str r0, [sp, #8]
+ lsl r0, r4, #2
+ ldrh r1, [r1, r0]
+ mov r3, #2
+ str r1, [sp, #0xc]
+ ldr r1, _022320AC ; =0x02244D94
+ add r0, r1, r0
+ ldrh r0, [r0, #2]
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r0, #0x14
+ mul r1, r0
+ add r0, r5, r1
+ str r0, [sp, #0x18]
+ add r0, r6, #0
+ add r1, r7, r1
+ bl MOD12_022322C0
+ ldr r0, _022320B4 ; =0x00010200
+ ldr r1, _022320B8 ; =0x02244E30
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _022320B0 ; =0x000080F0
+ add r2, r4, #4
+ str r0, [sp, #8]
+ lsl r0, r4, #3
+ ldrh r1, [r1, r0]
+ str r1, [sp, #0xc]
+ ldr r1, _022320B8 ; =0x02244E30
+ add r0, r1, r0
+ ldrh r0, [r0, #2]
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r0, #0x14
+ mul r1, r0
+ ldr r0, [sp, #0x24]
+ add r0, r0, r1
+ mov r1, #0x14
+ mul r1, r2
+ mov r2, #0
+ str r0, [sp, #0x18]
+ add r0, r6, #0
+ add r1, r7, r1
+ add r3, r2, #0
+ bl MOD12_022322C0
+ ldr r0, _022320B4 ; =0x00010200
+ add r2, r4, #0
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _022320B0 ; =0x000080F0
+ lsl r1, r4, #3
+ str r0, [sp, #8]
+ ldr r0, _022320B8 ; =0x02244E30
+ add r2, #8
+ add r1, r0, r1
+ ldrh r0, [r1, #4]
+ str r0, [sp, #0xc]
+ ldrh r0, [r1, #6]
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r0, #0x14
+ mul r1, r0
+ ldr r0, [sp, #0x28]
+ add r0, r0, r1
+ mov r1, #0x14
+ mul r1, r2
+ mov r2, #0
+ str r0, [sp, #0x18]
+ add r0, r6, #0
+ add r1, r7, r1
+ add r3, r2, #0
+ bl MOD12_022322C0
+ lsl r1, r4, #1
+ add r0, sp, #0x3c
+ ldrh r0, [r0, r1]
+ cmp r0, #0
+ bne _02231F7E
+ mov r0, #0x14
+ mul r0, r4
+ add r0, r6, r0
+ ldr r0, [r0, #0x40]
+ mov r1, #0
+ bl FUN_020119D0
+ add r1, r4, #4
+ mov r0, #0x14
+ mul r0, r1
+ add r0, r6, r0
+ ldr r0, [r0, #0x40]
+ mov r1, #0
+ bl FUN_020119D0
+ add r1, r4, #0
+ add r1, #8
+ mov r0, #0x14
+ mul r0, r1
+ add r0, r6, r0
+ ldr r0, [r0, #0x40]
+ mov r1, #0
+ bl FUN_020119D0
+_02231F7E:
+ add r4, r4, #1
+_02231F80:
+ cmp r4, #4
+ bge _02231F86
+ b _02231E5E
+_02231F86:
+ mov r4, #0
+ add r7, sp, #0x3c
+ b _02231FB4
+_02231F8C:
+ lsl r0, r4, #1
+ ldrh r0, [r7, r0]
+ cmp r0, #0
+ beq _02231FA6
+ mov r0, #0x13
+ add r1, r5, r4
+ lsl r0, r0, #4
+ ldrb r1, [r1, r0]
+ add r0, r6, #0
+ add r2, r4, #0
+ bl MOD12_022325AC
+ b _02231FB2
+_02231FA6:
+ mov r1, #0
+ add r0, r6, #0
+ mvn r1, r1
+ add r2, r4, #0
+ bl MOD12_022325AC
+_02231FB2:
+ add r4, r4, #1
+_02231FB4:
+ cmp r4, #4
+ blt _02231F8C
+ mov r4, #0
+ mov r7, #0x20
+ add r5, sp, #0x3c
+ b _02232006
+_02231FC0:
+ lsl r0, r4, #1
+ ldrh r2, [r5, r0]
+ cmp r2, #0
+ beq _02232004
+ ldr r1, [r6, #4]
+ ldr r0, [r6, #8]
+ ldr r3, [r1]
+ ldr r1, _022320A4 ; =0x00000123
+ ldrb r1, [r3, r1]
+ bl MOD12_02235BEC
+ cmp r0, #0
+ bne _02232004
+ str r7, [sp]
+ ldr r0, [r6, #4]
+ mov r1, #1
+ add r3, r4, #4
+ lsl r3, r3, #0x14
+ ldr r2, [r6, #0x38]
+ lsl r1, r1, #8
+ add r1, r2, r1
+ ldr r0, [r0, #0x50]
+ mov r2, #1
+ lsr r3, r3, #0x10
+ bl FUN_02003054
+ ldr r0, _022320A0 ; =0x000002E1
+ ldrb r0, [r6, r0]
+ cmp r0, #0xff
+ beq _02232000
+ bl ErrorHandling
+_02232000:
+ ldr r0, _022320A0 ; =0x000002E1
+ strb r4, [r6, r0]
+_02232004:
+ add r4, r4, #1
+_02232006:
+ cmp r4, #4
+ blt _02231FC0
+ add r0, r6, #0
+ add r1, sp, #0x3c
+ bl MOD12_02232470
+ mov r4, #0
+ b _02232096
+_02232016:
+ lsl r1, r4, #1
+ add r0, sp, #0x3c
+ ldrh r0, [r0, r1]
+ cmp r0, #0
+ beq _02232094
+ add r0, sp, #0x34
+ ldrh r0, [r0, r1]
+ bl FUN_02083114
+ str r0, [sp, #0x20]
+ cmp r0, #0
+ bge _02232030
+ neg r0, r0
+_02232030:
+ mov r1, #0xa
+ bl _s32_div_f
+ str r0, [sp, #0x1c]
+ cmp r0, #6
+ ble _02232040
+ bl ErrorHandling
+_02232040:
+ mov r0, #0x18
+ mul r0, r4
+ add r7, r6, r0
+ lsl r0, r4, #3
+ ldr r1, _022320BC ; =0x02244E50
+ str r0, [sp, #0x2c]
+ add r0, r1, r0
+ mov r5, #0
+ str r0, [sp, #0x30]
+ b _0223208E
+_02232054:
+ lsl r0, r5, #2
+ add r1, r7, r0
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _02232066
+ bl ErrorHandling
+_02232066:
+ ldr r0, [sp, #0x20]
+ ldr r3, _022320BC ; =0x02244E50
+ str r0, [sp]
+ ldr r2, [sp, #0x2c]
+ ldr r1, [r6, #4]
+ ldr r3, [r3, r2]
+ lsl r2, r5, #3
+ add r2, r3, r2
+ ldr r3, [sp, #0x30]
+ ldr r0, [r1, #0x18]
+ ldr r1, [r1, #0x1c]
+ ldr r3, [r3, #4]
+ bl MOD12_022334F4
+ lsl r1, r5, #2
+ add r2, r7, r1
+ mov r1, #0x51
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ add r5, r5, #1
+_0223208E:
+ ldr r0, [sp, #0x1c]
+ cmp r5, r0
+ blt _02232054
+_02232094:
+ add r4, r4, #1
+_02232096:
+ cmp r4, #4
+ blt _02232016
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022320A0: .word 0x000002E1
+_022320A4: .word 0x00000123
+_022320A8: .word 0x00010708
+_022320AC: .word 0x02244D94
+_022320B0: .word 0x000080F0
+_022320B4: .word 0x00010200
+_022320B8: .word 0x02244E30
+_022320BC: .word 0x02244E50
+
+ thumb_func_start MOD12_022320C0
+MOD12_022320C0: ; 0x022320C0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ mov r0, #0x69
+ lsl r0, r0, #2
+ add r6, r5, r0
+ add r7, r5, #0
+ mov r4, #0
+ add r6, #0xf0
+ add r7, #0x40
+ b _0223210E
+_022320D6:
+ ldr r0, _0223216C ; =0x0001090A
+ ldr r1, _02232170 ; =0x02244D78
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _02232174 ; =0x000080F0
+ mov r2, #0
+ str r0, [sp, #8]
+ lsl r0, r4, #2
+ ldrh r1, [r1, r0]
+ mov r3, #2
+ str r1, [sp, #0xc]
+ ldr r1, _02232170 ; =0x02244D78
+ add r0, r1, r0
+ ldrh r0, [r0, #2]
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ mov r0, #0x14
+ mul r1, r0
+ add r0, r6, r1
+ str r0, [sp, #0x18]
+ add r0, r5, #0
+ add r1, r7, r1
+ bl MOD12_022322C0
+ add r4, r4, #1
+_0223210E:
+ cmp r4, #3
+ blt _022320D6
+ ldr r0, [r5, #4]
+ mov r1, #0x35
+ ldr r0, [r0, #0x38]
+ bl FUN_0200A914
+ add r6, r0, #0
+ ldr r0, _0223216C ; =0x0001090A
+ ldr r1, _02232174 ; =0x000080F0
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r1, #0x80
+ str r1, [sp, #0xc]
+ mov r1, #0xa4
+ str r1, [sp, #0x10]
+ mov r1, #1
+ str r1, [sp, #0x14]
+ add r2, r5, #0
+ mov r1, #0x14
+ str r0, [sp, #0x18]
+ add r2, #0x40
+ mul r1, r4
+ add r1, r2, r1
+ add r0, r5, #0
+ add r2, r6, #0
+ mov r3, #2
+ bl MOD12_022322C0
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r2, [r5, #4]
+ ldr r0, [r2, #0x18]
+ ldr r1, [r2, #0x1c]
+ ldr r3, [r2]
+ ldr r2, _02232178 ; =0x0000011E
+ ldrb r2, [r3, r2]
+ bl MOD12_02233448
+ mov r1, #5
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223216C: .word 0x0001090A
+_02232170: .word 0x02244D78
+_02232174: .word 0x000080F0
+_02232178: .word 0x0000011E
+
+ thumb_func_start MOD12_0223217C
+MOD12_0223217C: ; 0x0223217C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ add r0, r5, #1
+ str r2, [sp]
+ cmp r0, #4
+ bhi _022321A0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02232196: ; jump table
+ .short _022321A0 - _02232196 - 2 ; case 0
+ .short _022321A6 - _02232196 - 2 ; case 1
+ .short _022321A6 - _02232196 - 2 ; case 2
+ .short _022321A6 - _02232196 - 2 ; case 3
+ .short _022321A6 - _02232196 - 2 ; case 4
+_022321A0:
+ mov r0, #0
+ mvn r0, r0
+ pop {r3, r4, r5, r6, r7, pc}
+_022321A6:
+ ldr r0, [r4, #4]
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _02232208 ; =0x00000123
+ ldrb r0, [r1, r0]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, r5, #0
+ add r1, #0x36
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _022321C8
+ ldr r0, _0223220C ; =0x000002E1
+ ldrb r0, [r4, r0]
+ cmp r0, r5
+ bne _022321CE
+_022321C8:
+ mov r0, #0
+ mvn r0, r0
+ pop {r3, r4, r5, r6, r7, pc}
+_022321CE:
+ mov r0, #6
+ ldr r1, _02232210 ; =0x02244E00
+ mul r0, r5
+ add r7, r1, r0
+ ldr r1, _02232214 ; =0x02244EA4
+ lsl r0, r5, #4
+ add r6, r1, r0
+ ldr r1, [sp]
+ add r0, r4, #0
+ bl MOD12_02232AB8
+ ldr r0, _02232218 ; =MOD12_022327E0
+ add r1, r4, #0
+ bl MOD12_02232654
+ mov r1, #0xbd
+ lsl r1, r1, #2
+ str r7, [r4, r1]
+ add r0, r1, #4
+ str r6, [r4, r0]
+ add r0, r1, #0
+ mov r2, #2
+ add r0, #0xc
+ strb r2, [r4, r0]
+ add r1, #8
+ str r5, [r4, r1]
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02232208: .word 0x00000123
+_0223220C: .word 0x000002E1
+_02232210: .word 0x02244E00
+_02232214: .word 0x02244EA4
+_02232218: .word MOD12_022327E0
+
+ thumb_func_start MOD12_0223221C
+MOD12_0223221C: ; 0x0223221C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ add r0, r5, #1
+ cmp r0, #4
+ bhi _0223223E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02232234: ; jump table
+ .short _0223223E - _02232234 - 2 ; case 0
+ .short _02232242 - _02232234 - 2 ; case 1
+ .short _02232246 - _02232234 - 2 ; case 2
+ .short _0223224A - _02232234 - 2 ; case 3
+ .short _0223224E - _02232234 - 2 ; case 4
+_0223223E:
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02232242:
+ mov r6, #0
+ b _02232250
+_02232246:
+ mov r6, #1
+ b _02232250
+_0223224A:
+ mov r6, #2
+ b _02232250
+_0223224E:
+ mov r6, #3
+_02232250:
+ ldr r0, [r4, #4]
+ ldr r1, [r0]
+ ldr r0, _022322B0 ; =0x0000011E
+ ldrb r0, [r1, r0]
+ cmp r5, r0
+ bne _02232260
+ mov r7, #1
+ b _02232262
+_02232260:
+ mov r7, #0
+_02232262:
+ add r0, r4, #0
+ add r1, r2, #0
+ bl MOD12_02232AB8
+ ldr r0, _022322B4 ; =MOD12_022326A4
+ add r1, r4, #0
+ bl MOD12_02232654
+ mov r0, #6
+ ldr r1, _022322B8 ; =0x02244E18
+ mul r0, r5
+ add r0, r1, r0
+ mov r1, #0xbd
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r2, _022322BC ; =0x02244EE4
+ lsl r0, r5, #4
+ add r2, r2, r0
+ add r0, r1, #4
+ str r2, [r4, r0]
+ mov r2, #3
+ lsl r0, r2, #8
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #8
+ str r5, [r4, r0]
+ add r0, r1, #0
+ add r0, #0xd
+ strb r6, [r4, r0]
+ cmp r7, #1
+ bne _022322AA
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ sub r1, #0xc
+ str r0, [r4, r1]
+_022322AA:
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022322B0: .word 0x0000011E
+_022322B4: .word MOD12_022326A4
+_022322B8: .word 0x02244E18
+_022322BC: .word 0x02244EE4
+
+ thumb_func_start MOD12_022322C0
+MOD12_022322C0: ; 0x022322C0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x7c
+ add r5, r1, #0
+ add r7, r0, #0
+ ldr r0, [r5]
+ str r2, [sp, #0x18]
+ str r3, [sp, #0x1c]
+ ldr r6, [sp, #0x9c]
+ ldr r4, [sp, #0xa8]
+ cmp r0, #0
+ beq _022322DA
+ bl ErrorHandling
+_022322DA:
+ ldr r1, [r7, #4]
+ cmp r4, #0
+ ldr r0, [r1, #0x24]
+ str r0, [sp, #0x24]
+ ldr r0, [r1, #0x1c]
+ str r0, [sp, #0x20]
+ bne _022322F6
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r2, sp, #0x2c
+ add r3, sp, #0x28
+ bl MOD12_02232DE8
+ b _022322FE
+_022322F6:
+ ldrh r0, [r4, #0x12]
+ str r0, [sp, #0x2c]
+ ldrh r0, [r4, #0x10]
+ str r0, [sp, #0x28]
+_022322FE:
+ cmp r4, #0
+ bne _0223233C
+ add r0, sp, #0x3c
+ bl FUN_0201901C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x28]
+ ldr r0, [sp, #0x24]
+ lsl r2, r2, #0x18
+ add r1, sp, #0x3c
+ lsr r2, r2, #0x18
+ mov r3, #2
+ bl FUN_020190EC
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x90]
+ ldr r1, [sp, #0x1c]
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ str r3, [sp, #0x10]
+ ldr r2, [sp, #0x18]
+ add r0, sp, #0x3c
+ str r3, [sp, #0x14]
+ bl FUN_0201BE3C
+ b _02232348
+_0223233C:
+ add r3, r4, #0
+ add r2, sp, #0x3c
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+_02232348:
+ add r0, sp, #0x3c
+ mov r1, #2
+ mov r2, #0x15
+ bl FUN_02011898
+ mov r1, #1
+ mov r2, #2
+ add r3, sp, #0x30
+ bl FUN_0201D568
+ ldr r0, [sp, #0xa4]
+ cmp r0, #1
+ bne _0223236C
+ ldr r1, [sp, #0x2c]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ sub r6, r6, r0
+_0223236C:
+ ldr r0, [r7, #0x3c]
+ str r0, [sp, #0x4c]
+ add r0, sp, #0x3c
+ str r0, [sp, #0x50]
+ ldr r0, [sp, #0x20]
+ bl FUN_0200CA40
+ str r0, [sp, #0x54]
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x98]
+ bl FUN_0200C334
+ str r0, [sp, #0x58]
+ mov r0, #0
+ ldr r1, [sp, #0x34]
+ str r0, [sp, #0x5c]
+ str r0, [sp, #0x6c]
+ mov r0, #0x64
+ str r1, [sp, #0x60]
+ mov r1, #0x42
+ str r0, [sp, #0x70]
+ mov r0, #2
+ str r0, [sp, #0x74]
+ mov r0, #0x15
+ str r0, [sp, #0x78]
+ ldr r2, [sp, #0xa0]
+ lsl r1, r1, #2
+ add r1, r2, r1
+ add r0, sp, #0x4c
+ str r6, [sp, #0x64]
+ str r1, [sp, #0x68]
+ bl FUN_020117E8
+ ldr r1, [sp, #0x94]
+ add r7, r0, #0
+ bl FUN_02011AC0
+ mov r2, #0x42
+ ldr r3, [sp, #0xa0]
+ lsl r2, r2, #2
+ add r0, r7, #0
+ add r1, r6, #0
+ add r2, r3, r2
+ bl FUN_020118C4
+ cmp r4, #0
+ bne _022323D0
+ add r0, sp, #0x3c
+ bl FUN_02019178
+_022323D0:
+ str r7, [r5]
+ add r3, sp, #0x30
+ ldmia r3!, {r0, r1}
+ add r2, r5, #4
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [sp, #0x2c]
+ strh r0, [r5, #0x10]
+ add sp, #0x7c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022323E8
+MOD12_022323E8: ; 0x022323E8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+ add r4, #0x44
+ add r7, r6, #0
+_022323F4:
+ ldr r0, [r5, #0x40]
+ cmp r0, #0
+ beq _02232406
+ bl FUN_02011870
+ add r0, r4, #0
+ bl FUN_0201D5E8
+ str r7, [r5, #0x40]
+_02232406:
+ add r6, r6, #1
+ add r5, #0x14
+ add r4, #0x14
+ cmp r6, #0xc
+ blt _022323F4
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02232414
+MOD12_02232414: ; 0x02232414
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _0223242E
+ bl MOD12_0223349C
+ mov r0, #5
+ mov r1, #0
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+_0223242E:
+ pop {r4, pc}
+
+ thumb_func_start MOD12_02232430
+MOD12_02232430: ; 0x02232430
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp]
+ mov r0, #0
+ mov r7, #0x51
+ str r0, [sp, #4]
+ add r6, r0, #0
+ lsl r7, r7, #2
+_02232440:
+ ldr r5, [sp]
+ mov r4, #0
+_02232444:
+ ldr r0, [r5, r7]
+ cmp r0, #0
+ beq _02232454
+ bl MOD12_02233534
+ mov r0, #0x51
+ lsl r0, r0, #2
+ str r6, [r5, r0]
+_02232454:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _02232444
+ ldr r0, [sp]
+ add r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #4
+ blt _02232440
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_02232470
+MOD12_02232470: ; 0x02232470
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ add r5, r0, #0
+ add r7, r1, #0
+ ldr r1, [r5, #4]
+ ldr r4, _02232504 ; =0x02244E70
+ ldr r0, [r1, #0x18]
+ add r3, sp, #8
+ str r0, [sp, #4]
+ ldr r0, [r1, #0x1c]
+ mov r2, #6
+ str r0, [sp]
+_02232488:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02232488
+ ldr r0, [r4]
+ mov r4, #0
+ str r0, [r3]
+ add r6, sp, #8
+ b _022324FC
+_0223249A:
+ lsl r0, r4, #2
+ add r1, r5, r0
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _022324AC
+ bl ErrorHandling
+_022324AC:
+ lsl r0, r4, #1
+ ldrh r0, [r7, r0]
+ cmp r0, #0
+ beq _022324FA
+ mov r0, #0xb5
+ add r1, r5, r4
+ lsl r0, r0, #2
+ ldrb r2, [r1, r0]
+ ldr r0, _02232508 ; =0x000080F6
+ ldr r1, _0223250C ; =0x02244DB4
+ add r0, r4, r0
+ str r0, [sp, #0x1c]
+ lsl r0, r4, #2
+ ldrh r1, [r1, r0]
+ add r3, sp, #8
+ strh r1, [r6]
+ ldr r1, _0223250C ; =0x02244DB4
+ add r0, r1, r0
+ ldrh r0, [r0, #2]
+ ldr r1, [sp]
+ strh r0, [r6, #2]
+ ldr r0, [sp, #4]
+ bl MOD12_02240E98
+ lsl r1, r4, #2
+ mov r2, #0x13
+ mov r3, #0x11
+ add r1, r5, r1
+ lsl r2, r2, #4
+ str r0, [r1, r2]
+ add r0, r2, #0
+ ldr r0, [r1, r0]
+ mov r1, #0
+ mov r2, #2
+ ldrsh r1, [r6, r1]
+ ldrsh r2, [r6, r2]
+ lsl r3, r3, #0x10
+ bl FUN_0200C750
+_022324FA:
+ add r4, r4, #1
+_022324FC:
+ cmp r4, #4
+ blt _0223249A
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02232504: .word 0x02244E70
+_02232508: .word 0x000080F6
+_0223250C: .word 0x02244DB4
+
+ thumb_func_start MOD12_02232510
+MOD12_02232510: ; 0x02232510
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ mov r7, #0x13
+ add r5, r0, #0
+ add r6, r4, #0
+ lsl r7, r7, #4
+_0223251C:
+ ldr r0, [r5, r7]
+ cmp r0, #0
+ beq _0223252C
+ bl MOD12_02240EC8
+ mov r0, #0x13
+ lsl r0, r0, #4
+ str r6, [r5, r0]
+_0223252C:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _0223251C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02232538
+MOD12_02232538: ; 0x02232538
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r6, r1, #0
+ ldr r0, [r0, #0x24]
+ add r7, r3, #0
+ mov r1, #4
+ add r4, r2, #0
+ str r0, [sp, #4]
+ bl FUN_0201886C
+ mov ip, r0
+ lsl r0, r7, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x20]
+ ldr r7, [r4]
+ str r0, [sp]
+ ldr r0, [sp, #0x20]
+ lsl r0, r0, #1
+ ldrsh r1, [r6, r0]
+ ldr r0, [r4, #4]
+ cmp r7, r0
+ bgt _0223259E
+ lsl r6, r7, #5
+_0223256A:
+ lsl r2, r6, #1
+ mov r0, ip
+ add r5, r0, r2
+ ldr r0, [sp]
+ ldr r3, [r4, #0xc]
+ add r2, r0, r2
+ ldr r0, [r4, #8]
+ cmp r0, r3
+ bgt _02232594
+ lsl r3, r0, #1
+ add r2, r2, r3
+ add r3, r5, r3
+_02232582:
+ ldrh r5, [r2]
+ add r0, r0, #1
+ add r2, r2, #2
+ add r5, r1, r5
+ strh r5, [r3]
+ ldr r5, [r4, #0xc]
+ add r3, r3, #2
+ cmp r0, r5
+ ble _02232582
+_02232594:
+ ldr r0, [r4, #4]
+ add r7, r7, #1
+ add r6, #0x20
+ cmp r7, r0
+ ble _0223256A
+_0223259E:
+ ldr r0, [sp, #4]
+ mov r1, #4
+ bl FUN_0201AC68
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022325AC
+MOD12_022325AC: ; 0x022325AC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ ldr r6, _02232624 ; =0x02244DD8
+ add r5, r2, #0
+ add r4, r0, #0
+ add r3, r1, #0
+ add r2, sp, #4
+ ldmia r6!, {r0, r1}
+ add r7, r2, #0
+ stmia r2!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r2]
+ mov r0, #0
+ mvn r0, r0
+ cmp r3, r0
+ beq _022325EC
+ mov r0, #0x20
+ str r0, [sp]
+ lsl r1, r3, #2
+ ldr r0, [r4, #4]
+ add r3, r5, #4
+ lsl r3, r3, #0x14
+ ldr r0, [r0, #0x50]
+ ldr r1, [r7, r1]
+ mov r2, #1
+ lsr r3, r3, #0x10
+ bl FUN_02003054
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_022325EC:
+ ldr r2, _02232628 ; =0x02244D64
+ lsl r1, r5, #1
+ mov r0, #0
+ add r1, r2, r1
+ str r0, [sp]
+ ldr r3, _0223262C ; =0x02244F24
+ lsl r2, r5, #4
+ add r2, r3, r2
+ add r0, r4, #0
+ mov r3, #2
+ bl MOD12_02232538
+ mov r2, #0x20
+ str r2, [sp]
+ ldr r0, [r4, #4]
+ add r3, r5, #4
+ lsl r3, r3, #0x14
+ ldr r1, [r4, #0x38]
+ add r2, #0xe0
+ add r1, r1, r2
+ ldr r0, [r0, #0x50]
+ mov r2, #1
+ lsr r3, r3, #0x10
+ bl FUN_02003054
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02232624: .word 0x02244DD8
+_02232628: .word 0x02244D64
+_0223262C: .word 0x02244F24
+
+ thumb_func_start MOD12_02232630
+MOD12_02232630: ; 0x02232630
+ ldr r3, _02232634 ; =MOD12_02232638
+ bx r3
+ .align 2, 0
+_02232634: .word MOD12_02232638
+
+ thumb_func_start MOD12_02232638
+MOD12_02232638: ; 0x02232638
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD12_02232414
+ add r0, r4, #0
+ bl MOD12_02232430
+ add r0, r4, #0
+ bl MOD12_02232510
+ add r0, r4, #0
+ bl MOD12_022323E8
+ pop {r4, pc}
+
+ thumb_func_start MOD12_02232654
+MOD12_02232654: ; 0x02232654
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _02232664
+ bl ErrorHandling
+_02232664:
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ mov r2, #0x20
+ bl MI_CpuFill8
+ ldr r2, _02232680 ; =0x00000514
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02232680: .word 0x00000514
+
+ thumb_func_start MOD12_02232684
+MOD12_02232684: ; 0x02232684
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _022326A2
+ bl FUN_0200CAB4
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ mov r1, #0
+ add r0, r4, r0
+ mov r2, #0x20
+ str r1, [r4, #0x10]
+ bl MI_CpuFill8
+_022326A2:
+ pop {r4, pc}
+
+ thumb_func_start MOD12_022326A4
+MOD12_022326A4: ; 0x022326A4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ mov r3, #0xb9
+ add r5, r1, #0
+ lsl r3, r3, #2
+ ldrsh r0, [r5, r3]
+ cmp r0, #0
+ beq _022326BE
+ cmp r0, #1
+ beq _02232730
+ cmp r0, #2
+ beq _0223274C
+ b _022327BC
+_022326BE:
+ mov r0, #2
+ str r0, [sp]
+ add r1, r3, #0
+ add r2, r3, #0
+ add r3, #0x1c
+ add r1, #0x10
+ add r2, #0x14
+ ldrb r3, [r5, r3]
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ add r0, r5, #0
+ bl MOD12_02232538
+ ldr r0, _022327DC ; =0x00000301
+ add r2, sp, #4
+ ldrb r1, [r5, r0]
+ mov r0, #0x14
+ mul r0, r1
+ add r0, r5, r0
+ ldr r0, [r0, #0x40]
+ add r1, sp, #8
+ bl FUN_020119A4
+ ldr r0, _022327DC ; =0x00000301
+ ldr r2, [sp, #4]
+ ldrb r1, [r5, r0]
+ mov r0, #0x14
+ sub r2, r2, #2
+ mul r0, r1
+ add r0, r5, r0
+ ldr r0, [r0, #0x40]
+ ldr r1, [sp, #8]
+ bl FUN_020118C4
+ mov r7, #0xba
+ mov r6, #0
+ add r4, r5, #0
+ lsl r7, r7, #2
+_0223270A:
+ ldr r0, [r4, r7]
+ cmp r0, #0
+ beq _0223271A
+ mov r1, #0
+ ldr r0, [r0]
+ sub r2, r1, #2
+ bl FUN_0200C7FC
+_0223271A:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #3
+ blt _0223270A
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ ldrsh r1, [r5, r0]
+ add sp, #0xc
+ add r1, r1, #1
+ strh r1, [r5, r0]
+ pop {r4, r5, r6, r7, pc}
+_02232730:
+ add r0, r3, #2
+ ldrsh r0, [r5, r0]
+ add r1, r0, #1
+ add r0, r3, #2
+ strh r1, [r5, r0]
+ ldrsh r0, [r5, r0]
+ cmp r0, #0
+ ble _022327D8
+ mov r1, #0
+ add r0, r3, #2
+ strh r1, [r5, r0]
+ ldrsh r0, [r5, r3]
+ add r0, r0, #1
+ strh r0, [r5, r3]
+_0223274C:
+ mov r0, #1
+ mov r3, #0xbd
+ str r0, [sp]
+ lsl r3, r3, #2
+ add r2, r3, #4
+ ldr r1, [r5, r3]
+ add r3, #0xc
+ ldrb r3, [r5, r3]
+ ldr r2, [r5, r2]
+ add r0, r5, #0
+ bl MOD12_02232538
+ ldr r0, _022327DC ; =0x00000301
+ add r2, sp, #4
+ ldrb r1, [r5, r0]
+ mov r0, #0x14
+ mul r0, r1
+ add r0, r5, r0
+ ldr r0, [r0, #0x40]
+ add r1, sp, #8
+ bl FUN_020119A4
+ ldr r0, _022327DC ; =0x00000301
+ ldr r2, [sp, #4]
+ ldrb r1, [r5, r0]
+ mov r0, #0x14
+ add r2, r2, #1
+ mul r0, r1
+ add r0, r5, r0
+ ldr r0, [r0, #0x40]
+ ldr r1, [sp, #8]
+ bl FUN_020118C4
+ mov r7, #0xba
+ mov r6, #0
+ add r4, r5, #0
+ lsl r7, r7, #2
+_02232796:
+ ldr r0, [r4, r7]
+ cmp r0, #0
+ beq _022327A6
+ ldr r0, [r0]
+ mov r1, #0
+ mov r2, #1
+ bl FUN_0200C7FC
+_022327A6:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #3
+ blt _02232796
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ ldrsh r1, [r5, r0]
+ add sp, #0xc
+ add r1, r1, #1
+ strh r1, [r5, r0]
+ pop {r4, r5, r6, r7, pc}
+_022327BC:
+ add r0, r3, #2
+ ldrsh r0, [r5, r0]
+ add r1, r0, #1
+ add r0, r3, #2
+ strh r1, [r5, r0]
+ ldrsh r0, [r5, r0]
+ cmp r0, #0
+ ble _022327D8
+ add r0, r5, #0
+ bl MOD12_02232630
+ add r0, r5, #0
+ bl MOD12_02232684
+_022327D8:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022327DC: .word 0x00000301
+
+ thumb_func_start MOD12_022327E0
+MOD12_022327E0: ; 0x022327E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ ldr r7, _02232A64 ; =0x00000123
+ add r4, r1, #0
+ mov r6, #0
+ add r5, sp, #0x20
+_022327EC:
+ ldr r0, [r4, #4]
+ mov r2, #0
+ ldr r0, [r0]
+ ldrb r1, [r0, r7]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ add r1, r6, #0
+ add r1, #0x36
+ bl FUN_020671BC
+ strh r0, [r5]
+ add r6, r6, #1
+ add r5, r5, #2
+ cmp r6, #4
+ blt _022327EC
+ mov r0, #0xbf
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #3
+ bhi _02232870
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02232820: ; jump table
+ .short _02232828 - _02232820 - 2 ; case 0
+ .short _0223283A - _02232820 - 2 ; case 1
+ .short _0223284C - _02232820 - 2 ; case 2
+ .short _0223285E - _02232820 - 2 ; case 3
+_02232828:
+ mov r0, #8
+ str r0, [sp, #0xc]
+ add r0, sp, #0x20
+ ldrh r0, [r0]
+ mov r5, #0
+ mov r6, #4
+ str r0, [sp, #8]
+ str r5, [sp, #4]
+ b _02232878
+_0223283A:
+ mov r0, #9
+ str r0, [sp, #0xc]
+ add r0, sp, #0x20
+ ldrh r0, [r0, #2]
+ mov r5, #1
+ mov r6, #5
+ str r0, [sp, #8]
+ str r5, [sp, #4]
+ b _02232878
+_0223284C:
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ add r0, sp, #0x20
+ ldrh r0, [r0, #4]
+ mov r5, #2
+ mov r6, #6
+ str r0, [sp, #8]
+ str r5, [sp, #4]
+ b _02232878
+_0223285E:
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ add r0, sp, #0x20
+ ldrh r0, [r0, #6]
+ mov r5, #3
+ mov r6, #7
+ str r0, [sp, #8]
+ str r5, [sp, #4]
+ b _02232878
+_02232870:
+ mov r5, #0
+ add r6, r5, #0
+ str r5, [sp, #0xc]
+ str r5, [sp, #8]
+_02232878:
+ mov r3, #0xb9
+ lsl r3, r3, #2
+ ldrsh r0, [r4, r3]
+ cmp r0, #0
+ beq _0223288C
+ cmp r0, #1
+ beq _0223295A
+ cmp r0, #2
+ beq _02232976
+ b _02232A42
+_0223288C:
+ mov r0, #2
+ str r0, [sp]
+ add r1, r3, #0
+ add r2, r3, #0
+ add r3, #0x1c
+ add r1, #0x10
+ add r2, #0x14
+ ldrb r3, [r4, r3]
+ ldr r1, [r4, r1]
+ ldr r2, [r4, r2]
+ add r0, r4, #0
+ bl MOD12_02232538
+ add r7, r4, #0
+ mov r0, #0x14
+ mul r0, r5
+ add r7, #0x40
+ str r0, [sp, #0x10]
+ ldr r0, [r7, r0]
+ add r1, sp, #0x2c
+ add r2, sp, #0x28
+ bl FUN_020119A4
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x28]
+ ldr r0, [r7, r0]
+ ldr r1, [sp, #0x2c]
+ sub r2, r2, #2
+ bl FUN_020118C4
+ add r7, r4, #0
+ mov r0, #0x14
+ mul r0, r6
+ add r7, #0x40
+ str r0, [sp, #0x14]
+ ldr r0, [r7, r0]
+ add r1, sp, #0x2c
+ add r2, sp, #0x28
+ bl FUN_020119A4
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x28]
+ ldr r0, [r7, r0]
+ ldr r1, [sp, #0x2c]
+ sub r2, r2, #2
+ bl FUN_020118C4
+ ldr r0, [sp, #0xc]
+ add r6, r4, #0
+ mov r1, #0x14
+ add r7, r0, #0
+ mul r7, r1
+ add r6, #0x40
+ ldr r0, [r6, r7]
+ add r1, sp, #0x2c
+ add r2, sp, #0x28
+ bl FUN_020119A4
+ ldr r2, [sp, #0x28]
+ ldr r0, [r6, r7]
+ ldr r1, [sp, #0x2c]
+ sub r2, r2, #2
+ bl FUN_020118C4
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ beq _0223294C
+ lsl r0, r5, #2
+ add r1, r4, r0
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0
+ ldr r0, [r0]
+ sub r2, r1, #2
+ bl FUN_0200C7FC
+ mov r7, #0x51
+ ldr r0, [sp, #4]
+ mov r1, #0x18
+ mul r1, r0
+ mov r6, #0
+ add r5, r4, r1
+ lsl r7, r7, #2
+_02232934:
+ ldr r0, [r5, r7]
+ cmp r0, #0
+ beq _02232944
+ mov r1, #0
+ ldr r0, [r0]
+ sub r2, r1, #2
+ bl FUN_0200C7FC
+_02232944:
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #6
+ blt _02232934
+_0223294C:
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ ldrsh r1, [r4, r0]
+ add sp, #0x30
+ add r1, r1, #1
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223295A:
+ add r0, r3, #2
+ ldrsh r0, [r4, r0]
+ add r1, r0, #1
+ add r0, r3, #2
+ strh r1, [r4, r0]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ ble _02232A5E
+ mov r1, #0
+ add r0, r3, #2
+ strh r1, [r4, r0]
+ ldrsh r0, [r4, r3]
+ add r0, r0, #1
+ strh r0, [r4, r3]
+_02232976:
+ mov r0, #1
+ mov r3, #0xbd
+ str r0, [sp]
+ lsl r3, r3, #2
+ add r2, r3, #4
+ ldr r1, [r4, r3]
+ add r3, #0xc
+ ldrb r3, [r4, r3]
+ ldr r2, [r4, r2]
+ add r0, r4, #0
+ bl MOD12_02232538
+ add r7, r4, #0
+ mov r0, #0x14
+ mul r0, r5
+ add r7, #0x40
+ str r0, [sp, #0x18]
+ ldr r0, [r7, r0]
+ add r1, sp, #0x2c
+ add r2, sp, #0x28
+ bl FUN_020119A4
+ ldr r0, [sp, #0x18]
+ ldr r2, [sp, #0x28]
+ ldr r0, [r7, r0]
+ ldr r1, [sp, #0x2c]
+ add r2, r2, #1
+ bl FUN_020118C4
+ add r7, r4, #0
+ mov r0, #0x14
+ mul r0, r6
+ add r7, #0x40
+ str r0, [sp, #0x1c]
+ ldr r0, [r7, r0]
+ add r1, sp, #0x2c
+ add r2, sp, #0x28
+ bl FUN_020119A4
+ ldr r0, [sp, #0x1c]
+ ldr r2, [sp, #0x28]
+ ldr r0, [r7, r0]
+ ldr r1, [sp, #0x2c]
+ add r2, r2, #1
+ bl FUN_020118C4
+ ldr r0, [sp, #0xc]
+ add r6, r4, #0
+ mov r1, #0x14
+ add r7, r0, #0
+ mul r7, r1
+ add r6, #0x40
+ ldr r0, [r6, r7]
+ add r1, sp, #0x2c
+ add r2, sp, #0x28
+ bl FUN_020119A4
+ ldr r2, [sp, #0x28]
+ ldr r0, [r6, r7]
+ ldr r1, [sp, #0x2c]
+ add r2, r2, #1
+ bl FUN_020118C4
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ beq _02232A34
+ lsl r0, r5, #2
+ add r1, r4, r0
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0
+ ldr r0, [r0]
+ mov r2, #1
+ bl FUN_0200C7FC
+ mov r7, #0x51
+ ldr r0, [sp, #4]
+ mov r1, #0x18
+ mul r1, r0
+ mov r6, #0
+ add r5, r4, r1
+ lsl r7, r7, #2
+_02232A1C:
+ ldr r0, [r5, r7]
+ cmp r0, #0
+ beq _02232A2C
+ ldr r0, [r0]
+ mov r1, #0
+ mov r2, #1
+ bl FUN_0200C7FC
+_02232A2C:
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #6
+ blt _02232A1C
+_02232A34:
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ ldrsh r1, [r4, r0]
+ add sp, #0x30
+ add r1, r1, #1
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_02232A42:
+ add r0, r3, #2
+ ldrsh r0, [r4, r0]
+ add r1, r0, #1
+ add r0, r3, #2
+ strh r1, [r4, r0]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ ble _02232A5E
+ add r0, r4, #0
+ bl MOD12_02232630
+ add r0, r4, #0
+ bl MOD12_02232684
+_02232A5E:
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02232A64: .word 0x00000123
+
+ thumb_func_start MOD12_02232A68
+MOD12_02232A68: ; 0x02232A68
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02232A78
+ bl ErrorHandling
+_02232A78:
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ mov r2, #0xc
+ bl MI_CpuFill8
+ ldr r2, _02232A94 ; =0x00000528
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x14]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02232A94: .word 0x00000528
+
+ thumb_func_start MOD12_02232A98
+MOD12_02232A98: ; 0x02232A98
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02232AB6
+ bl FUN_0200CAB4
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ mov r1, #0
+ add r0, r4, r0
+ mov r2, #0xc
+ str r1, [r4, #0x14]
+ bl MI_CpuFill8
+_02232AB6:
+ pop {r4, pc}
+
+ thumb_func_start MOD12_02232AB8
+MOD12_02232AB8: ; 0x02232AB8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ cmp r4, #0xff
+ beq _02232ACE
+ ldr r0, _02232AD0 ; =MOD12_02232AD8
+ add r1, r5, #0
+ bl MOD12_02232A68
+ ldr r0, _02232AD4 ; =0x0000030D
+ strb r4, [r5, r0]
+_02232ACE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02232AD0: .word MOD12_02232AD8
+_02232AD4: .word 0x0000030D
+
+ thumb_func_start MOD12_02232AD8
+MOD12_02232AD8: ; 0x02232AD8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r0, #0xc1
+ add r5, r1, #0
+ lsl r0, r0, #2
+ add r2, r5, r0
+ ldr r0, [r5, #4]
+ mov r4, #0
+ ldr r3, [r0, #0x50]
+ ldrb r0, [r2, #8]
+ cmp r0, #0
+ beq _02232AF8
+ cmp r0, #1
+ beq _02232B14
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02232AF8:
+ mov r0, #0xa
+ lsl r0, r0, #8
+ strh r0, [r2, #4]
+ ldr r0, _02232B74 ; =0xFFFFFB00
+ strh r0, [r2, #6]
+ mov r0, #4
+ ldrsh r1, [r2, r0]
+ mov r0, #6
+ ldrsh r0, [r2, r0]
+ sub r0, r1, r0
+ strh r0, [r2, #4]
+ ldrb r0, [r2, #8]
+ add r0, r0, #1
+ strb r0, [r2, #8]
+_02232B14:
+ mov r7, #4
+ mov r6, #6
+ ldrsh r1, [r2, r7]
+ ldrsh r0, [r2, r6]
+ add r0, r1, r0
+ strh r0, [r2, #4]
+ ldrsh r6, [r2, r6]
+ cmp r6, #0
+ blt _02232B34
+ ldrsh r1, [r2, r7]
+ lsl r0, r7, #0xa
+ cmp r1, r0
+ blt _02232B34
+ strh r0, [r2, #4]
+ mov r4, #1
+ b _02232B46
+_02232B34:
+ cmp r6, #0
+ bge _02232B46
+ mov r0, #4
+ ldrsh r0, [r2, r0]
+ cmp r0, #0
+ bgt _02232B46
+ mov r0, #0
+ strh r0, [r2, #4]
+ mov r4, #1
+_02232B46:
+ mov r0, #4
+ ldrsh r0, [r2, r0]
+ mov r1, #1
+ asr r0, r0, #8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, _02232B78 ; =0x00007FFF
+ str r0, [sp, #4]
+ ldrb r2, [r2, #9]
+ add r0, r3, #0
+ mov r3, #0x10
+ lsl r2, r2, #0x14
+ lsr r2, r2, #0x10
+ bl FUN_020039E8
+ cmp r4, #1
+ bne _02232B70
+ add r0, r5, #0
+ bl MOD12_02232A98
+_02232B70:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02232B74: .word 0xFFFFFB00
+_02232B78: .word 0x00007FFF
+
+ thumb_func_start MOD12_02232B7C
+MOD12_02232B7C: ; 0x02232B7C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r1, #0x69
+ add r5, r0, #0
+ mov r0, #0
+ lsl r1, r1, #2
+ str r0, [sp, #4]
+ add r0, r5, r1
+ str r0, [sp]
+ add r0, r1, #0
+ add r0, #0x50
+ add r1, #0xa0
+ add r4, r5, #0
+ add r7, r5, r0
+ add r6, r5, r1
+_02232B9A:
+ mov r0, #0x1b
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02232BAA
+ ldr r0, [sp]
+ bl FUN_02019178
+_02232BAA:
+ mov r0, #2
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02232BBA
+ add r0, r7, #0
+ bl FUN_02019178
+_02232BBA:
+ mov r0, #0x25
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02232BCA
+ add r0, r6, #0
+ bl FUN_02019178
+_02232BCA:
+ ldr r0, [sp]
+ add r4, #0x14
+ add r0, #0x14
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r7, #0x14
+ add r0, r0, #1
+ add r6, #0x14
+ str r0, [sp, #4]
+ cmp r0, #4
+ blt _02232B9A
+ mov r0, #0xa5
+ lsl r0, r0, #2
+ add r7, r0, #0
+ mov r6, #0
+ add r4, r5, r0
+ add r7, #0xc
+_02232BEC:
+ ldr r0, [r5, r7]
+ cmp r0, #0
+ beq _02232BF8
+ add r0, r4, #0
+ bl FUN_02019178
+_02232BF8:
+ add r6, r6, #1
+ add r5, #0x14
+ add r4, #0x14
+ cmp r6, #3
+ blt _02232BEC
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02232C08
+MOD12_02232C08: ; 0x02232C08
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r5, r0, #0
+ mov r0, #0x69
+ lsl r0, r0, #2
+ add r6, r5, r0
+ mov r0, #0
+ str r0, [sp, #0x20]
+ add r0, r6, #0
+ str r0, [sp, #0x18]
+ add r0, #0x50
+ str r0, [sp, #0x18]
+ add r0, r6, #0
+ str r0, [sp, #0x14]
+ add r0, #0xa0
+ add r7, r1, #0
+ str r6, [sp, #0x1c]
+ str r0, [sp, #0x14]
+_02232C2C:
+ ldrh r0, [r7]
+ cmp r0, #0
+ beq _02232C52
+ ldr r1, [sp, #0x20]
+ add r4, r6, r1
+ mov r1, #0xa
+ bl FUN_0206AB18
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ strb r0, [r4, r1]
+ ldrh r0, [r7]
+ mov r1, #0xb
+ bl FUN_0206AB18
+ mov r1, #0x13
+ lsl r1, r1, #4
+ strb r0, [r4, r1]
+ b _02232C62
+_02232C52:
+ ldr r0, [sp, #0x20]
+ mov r1, #0
+ add r4, r6, r0
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ strb r1, [r4, r0]
+ add r0, r0, #4
+ strb r1, [r4, r0]
+_02232C62:
+ ldrh r0, [r7]
+ mov r1, #0x15
+ bl FUN_0200AA14
+ str r0, [sp, #0x24]
+ ldr r0, _02232D6C ; =0x00010708
+ ldr r1, [sp, #0x24]
+ str r0, [sp]
+ ldr r3, [sp, #0x1c]
+ add r0, r5, #0
+ mov r2, #2
+ bl MOD12_02232D7C
+ ldr r0, [sp, #0x24]
+ bl FUN_02021A20
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ add r1, sp, #0x34
+ add r2, sp, #0x30
+ bl FUN_02083130
+ ldr r0, [r5, #4]
+ ldr r1, [sp, #0x34]
+ ldr r0, [r0, #0x40]
+ bl FUN_0200A914
+ str r0, [sp, #0x28]
+ ldr r0, [r5, #4]
+ ldr r1, [sp, #0x30]
+ ldr r0, [r0, #0x40]
+ bl FUN_0200A914
+ add r4, r0, #0
+ ldr r0, _02232D70 ; =0x00010200
+ ldr r1, [sp, #0x28]
+ str r0, [sp]
+ ldr r3, [sp, #0x18]
+ add r0, r5, #0
+ mov r2, #0
+ bl MOD12_02232D7C
+ ldr r0, _02232D70 ; =0x00010200
+ ldr r3, [sp, #0x14]
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD12_02232D7C
+ ldr r0, [sp, #0x28]
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x1c]
+ add r7, r7, #2
+ add r0, #0x14
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r0, #0x14
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ add r0, #0x14
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ cmp r0, #4
+ blt _02232C2C
+ mov r7, #0
+ add r4, r7, #0
+ add r6, #0xf0
+_02232CF8:
+ ldr r0, [r5, #4]
+ mov r1, #0x15
+ ldr r0, [r0]
+ add r0, r0, r4
+ add r0, #0xd0
+ ldrh r0, [r0]
+ bl MOD12_022314A8
+ str r0, [sp, #0x2c]
+ ldr r0, _02232D74 ; =0x0001090A
+ ldr r1, [sp, #0x2c]
+ str r0, [sp]
+ add r0, r5, #0
+ mov r2, #2
+ add r3, r6, #0
+ bl MOD12_02232D7C
+ ldr r0, [sp, #0x2c]
+ bl FUN_02021A20
+ add r7, r7, #1
+ add r4, #8
+ add r6, #0x14
+ cmp r7, #3
+ blt _02232CF8
+ ldr r3, _02232D78 ; =0x000080F1
+ ldr r2, [r5, #4]
+ add r0, r3, #7
+ str r3, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r2, #0x18]
+ ldr r1, [r2, #0x1c]
+ ldr r2, [r2, #0x50]
+ add r3, #0xc
+ bl MOD12_02244750
+ ldr r3, _02232D78 ; =0x000080F1
+ ldr r1, [r5, #4]
+ add r0, r3, #7
+ str r3, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #5
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r1, #0x18]
+ ldr r1, [r1, #0x1c]
+ mov r2, #0x15
+ add r3, #0xc
+ bl MOD12_022447E8
+ mov r1, #0xc5
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02232D6C: .word 0x00010708
+_02232D70: .word 0x00010200
+_02232D74: .word 0x0001090A
+_02232D78: .word 0x000080F1
+
+ thumb_func_start MOD12_02232D7C
+MOD12_02232D7C: ; 0x02232D7C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r7, r2, #0
+ add r6, r1, #0
+ add r5, r0, #0
+ add r4, r3, #0
+ add r0, r6, #0
+ add r1, r7, #0
+ add r2, sp, #0x1c
+ add r3, sp, #0x18
+ bl MOD12_02232DE8
+ ldr r0, [sp, #0x1c]
+ strh r0, [r4, #0x12]
+ ldr r0, [sp, #0x18]
+ strh r0, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _02232DA8
+ add r0, r4, #0
+ bl FUN_02019178
+_02232DA8:
+ add r0, r4, #0
+ bl FUN_0201901C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r5, #4]
+ ldr r2, [sp, #0x18]
+ ldr r0, [r0, #0x24]
+ lsl r2, r2, #0x18
+ add r1, r4, #0
+ lsr r2, r2, #0x18
+ mov r3, #2
+ bl FUN_020190EC
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x38]
+ add r1, r7, #0
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ str r3, [sp, #0x10]
+ add r0, r4, #0
+ add r2, r6, #0
+ str r3, [sp, #0x14]
+ bl FUN_0201BE3C
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02232DE8
+MOD12_02232DE8: ; 0x02232DE8
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r6, r2, #0
+ add r0, r1, #0
+ add r1, r4, #0
+ mov r2, #0
+ add r7, r3, #0
+ bl FUN_02002E14
+ add r4, r0, #0
+ asr r1, r4, #2
+ lsr r1, r1, #0x1d
+ add r1, r4, r1
+ asr r5, r1, #3
+ mov r1, #8
+ bl FX_ModS32
+ cmp r0, #0
+ beq _02232E10
+ add r5, r5, #1
+_02232E10:
+ str r4, [r6]
+ str r5, [r7]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02232E18
+MOD12_02232E18: ; 0x02232E18
+ push {r4, r5, r6, lr}
+ mov r6, #0xc6
+ lsl r6, r6, #2
+ add r2, r6, #0
+ add r5, r0, #0
+ sub r2, #0x38
+ ldrsb r2, [r5, r2]
+ ldr r1, _02232E7C ; =0x02245074
+ mov r3, #0x30
+ add r4, r2, #0
+ mul r4, r3
+ add r4, r1, r4
+ ldr r2, [r4, #0x20]
+ cmp r2, #0
+ bne _02232E3C
+ sub r3, #0x31
+ add r0, r3, #0
+ pop {r4, r5, r6, pc}
+_02232E3C:
+ ldrb r1, [r5, r6]
+ cmp r1, #0
+ bne _02232E76
+ add r0, r6, #4
+ ldrb r0, [r5, r0]
+ cmp r0, #1
+ beq _02232E54
+ ldr r1, _02232E80 ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ ldr r1, _02232E84 ; =0x00000CF3
+ tst r1, r2
+ beq _02232E70
+_02232E54:
+ cmp r0, #0
+ bne _02232E5E
+ ldr r0, _02232E88 ; =0x000005DC
+ bl FUN_020054C8
+_02232E5E:
+ mov r1, #1
+ mov r0, #0xc7
+ strb r1, [r5, r6]
+ mov r2, #0
+ lsl r0, r0, #2
+ strb r2, [r5, r0]
+ ldr r2, [r4, #0x20]
+ add r0, r5, #0
+ blx r2
+_02232E70:
+ mov r0, #0
+ mvn r0, r0
+ pop {r4, r5, r6, pc}
+_02232E76:
+ mov r1, #0
+ blx r2
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02232E7C: .word 0x02245074
+_02232E80: .word 0x021C48B8
+_02232E84: .word 0x00000CF3
+_02232E88: .word 0x000005DC
+
+ thumb_func_start MOD12_02232E8C
+MOD12_02232E8C: ; 0x02232E8C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ str r1, [sp, #8]
+ mov r1, #0x31
+ add r5, r0, #0
+ lsl r1, r1, #4
+ add r0, r5, r1
+ str r0, [sp, #0xc]
+ add r0, r1, #0
+ sub r1, #0x30
+ add r0, #8
+ add r6, r5, r0
+ ldrsb r1, [r5, r1]
+ mov r0, #0x30
+ ldr r2, _02232FE4 ; =0x02245074
+ mul r0, r1
+ add r7, r2, r0
+ mov r4, #0
+ b _02232ED0
+_02232EB2:
+ ldr r0, [r5, #4]
+ ldr r1, _02232FE8 ; =0x00000123
+ ldr r0, [r0]
+ mov r2, #0
+ ldrb r1, [r0, r1]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ add r1, r4, #0
+ add r1, #0x36
+ bl FUN_020671BC
+ lsl r2, r4, #1
+ add r1, sp, #0x10
+ strh r0, [r1, r2]
+ add r4, r4, #1
+_02232ED0:
+ cmp r4, #4
+ blt _02232EB2
+ ldr r0, [sp, #8]
+ cmp r0, #1
+ bne _02232F4E
+ ldr r0, [sp, #0xc]
+ mov r1, #0
+ ldrsb r0, [r0, r1]
+ mov r4, #1
+ strb r0, [r6, #2]
+ ldr r0, [sp, #0xc]
+ ldrsb r0, [r0, r4]
+ strb r0, [r6, #1]
+ ldrsb r0, [r6, r4]
+ lsl r3, r0, #1
+ mov r0, #2
+ ldrsb r2, [r6, r0]
+ ldr r0, _02232FEC ; =0x02244D58
+ add r0, r0, r3
+ ldrb r3, [r2, r0]
+ add r0, sp, #0x10
+ lsl r2, r3, #1
+ ldrh r0, [r0, r2]
+ cmp r0, #0
+ bne _02232F1A
+ ldr r0, [sp, #0xc]
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ strb r1, [r6, #2]
+ strb r1, [r6, #1]
+ ldrsb r0, [r6, r4]
+ lsl r2, r0, #1
+ mov r0, #2
+ ldrsb r1, [r6, r0]
+ ldr r0, _02232FEC ; =0x02244D58
+ add r0, r0, r2
+ ldrb r3, [r1, r0]
+_02232F1A:
+ ldr r0, [r7, #0x14]
+ lsl r3, r3, #2
+ add r0, r0, r3
+ ldrb r0, [r0, #1]
+ sub r0, #8
+ str r0, [sp]
+ mov r0, #0x11
+ lsl r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r4, [r7, #0x14]
+ mov r0, #0xc5
+ add r2, r4, r3
+ ldrb r1, [r2, #2]
+ ldrb r2, [r2, #3]
+ ldrb r3, [r4, r3]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, #8
+ sub r2, #8
+ add r3, #8
+ bl MOD12_02244918
+ mov r0, #0
+ add sp, #0x1c
+ mvn r0, r0
+ pop {r4, r5, r6, r7, pc}
+_02232F4E:
+ ldr r0, _02232FEC ; =0x02244D58
+ add r1, sp, #0x18
+ mov r2, #4
+ bl MI_CpuCopy8
+ mov r1, #2
+ add r0, r6, #0
+ add r2, r1, #0
+ add r3, sp, #0x18
+ bl MOD12_0223318C
+ cmp r0, #0x20
+ bhi _02232F7E
+ bhs _02232F8A
+ cmp r0, #2
+ bhi _02232F78
+ cmp r0, #1
+ blo _02232FDC
+ beq _02232FC8
+ cmp r0, #2
+ b _02232FDC
+_02232F78:
+ cmp r0, #0x10
+ beq _02232F8A
+ b _02232FDC
+_02232F7E:
+ cmp r0, #0x40
+ bhi _02232F86
+ beq _02232F8A
+ b _02232FDC
+_02232F86:
+ cmp r0, #0x80
+ bne _02232FDC
+_02232F8A:
+ mov r0, #1
+ ldrsb r0, [r6, r0]
+ ldr r2, _02232FEC ; =0x02244D58
+ lsl r3, r0, #1
+ mov r0, #2
+ ldrsb r1, [r6, r0]
+ add r0, r2, r3
+ ldrb r1, [r1, r0]
+ ldr r0, [r7, #0x14]
+ lsl r3, r1, #2
+ add r0, r0, r3
+ ldrb r0, [r0, #1]
+ sub r0, #8
+ str r0, [sp]
+ mov r0, #0x11
+ lsl r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r4, [r7, #0x14]
+ mov r0, #0xc5
+ add r2, r4, r3
+ ldrb r1, [r2, #2]
+ ldrb r2, [r2, #3]
+ ldrb r3, [r4, r3]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, #8
+ sub r2, #8
+ add r3, #8
+ bl MOD12_02244918
+ b _02232FDC
+_02232FC8:
+ mov r0, #1
+ ldrsb r0, [r6, r0]
+ ldr r2, _02232FEC ; =0x02244D58
+ add sp, #0x1c
+ lsl r3, r0, #1
+ mov r0, #2
+ ldrsb r1, [r6, r0]
+ add r0, r2, r3
+ ldrb r0, [r1, r0]
+ pop {r4, r5, r6, r7, pc}
+_02232FDC:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02232FE4: .word 0x02245074
+_02232FE8: .word 0x00000123
+_02232FEC: .word 0x02244D58
+
+ thumb_func_start MOD12_02232FF0
+MOD12_02232FF0: ; 0x02232FF0
+ push {r4, r5, r6, r7}
+ mov r2, #0x31
+ lsl r2, r2, #4
+ mov r4, #0
+ add r2, r0, r2
+ ldr r7, _02233028 ; =0x02244D58
+ add r0, r4, #0
+ b _0223301E
+_02233000:
+ lsl r5, r4, #1
+ add r3, r0, #0
+ add r6, r7, r5
+ b _02233018
+_02233008:
+ ldrb r5, [r3, r6]
+ cmp r1, r5
+ bne _02233016
+ strb r3, [r2]
+ strb r4, [r2, #1]
+ pop {r4, r5, r6, r7}
+ bx lr
+_02233016:
+ add r3, r3, #1
+_02233018:
+ cmp r3, #2
+ blt _02233008
+ add r4, r4, #1
+_0223301E:
+ cmp r4, #2
+ blt _02233000
+ pop {r4, r5, r6, r7}
+ bx lr
+ nop
+_02233028: .word 0x02244D58
+
+ thumb_func_start MOD12_0223302C
+MOD12_0223302C: ; 0x0223302C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r7, #0x31
+ lsl r7, r7, #4
+ add r3, r7, #0
+ add r5, r0, #0
+ sub r3, #0x30
+ add r0, r7, #0
+ ldrsb r6, [r5, r3]
+ add r0, #8
+ add r4, r5, r0
+ mov r3, #0x30
+ add r2, r1, #0
+ ldr r0, _02233144 ; =0x02245074
+ mul r3, r6
+ add r1, r5, r7
+ add r6, r0, r3
+ cmp r2, #1
+ bne _022330A0
+ mov r0, #2
+ ldrsb r2, [r1, r0]
+ strb r2, [r4, #2]
+ mov r2, #3
+ ldrsb r1, [r1, r2]
+ strb r1, [r4, #1]
+ mov r1, #1
+ ldrsb r2, [r4, r1]
+ ldrsb r3, [r4, r0]
+ lsl r1, r2, #1
+ add r2, r2, r1
+ ldr r1, _02233148 ; =0x02244D5C
+ add r0, r1, r2
+ ldrb r1, [r3, r0]
+ ldr r0, [r6, #0x14]
+ lsl r3, r1, #2
+ add r0, r0, r3
+ ldrb r0, [r0, #1]
+ sub r0, #8
+ str r0, [sp]
+ mov r0, #0x11
+ lsl r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r4, [r6, #0x14]
+ add r0, r7, #4
+ add r2, r4, r3
+ ldrb r1, [r2, #2]
+ ldrb r2, [r2, #3]
+ ldrb r3, [r4, r3]
+ ldr r0, [r5, r0]
+ add r1, #8
+ sub r2, #8
+ add r3, #8
+ bl MOD12_02244918
+ mov r0, #0
+ add sp, #0x10
+ mvn r0, r0
+ pop {r3, r4, r5, r6, r7, pc}
+_022330A0:
+ ldr r0, _02233148 ; =0x02244D5C
+ add r1, sp, #8
+ mov r2, #6
+ bl MI_CpuCopy8
+ add r0, r4, #0
+ mov r1, #3
+ mov r2, #2
+ add r3, sp, #8
+ bl MOD12_0223318C
+ cmp r0, #0x20
+ bhi _022330D2
+ bhs _022330DE
+ cmp r0, #2
+ bhi _022330CC
+ cmp r0, #1
+ blo _0223313A
+ beq _0223311E
+ cmp r0, #2
+ beq _02233134
+ b _0223313A
+_022330CC:
+ cmp r0, #0x10
+ beq _022330DE
+ b _0223313A
+_022330D2:
+ cmp r0, #0x40
+ bhi _022330DA
+ beq _022330DE
+ b _0223313A
+_022330DA:
+ cmp r0, #0x80
+ bne _0223313A
+_022330DE:
+ mov r0, #1
+ ldrsb r1, [r4, r0]
+ ldr r2, _02233148 ; =0x02244D5C
+ lsl r0, r1, #1
+ add r3, r1, r0
+ mov r0, #2
+ ldrsb r1, [r4, r0]
+ add r0, r2, r3
+ ldrb r1, [r1, r0]
+ ldr r0, [r6, #0x14]
+ lsl r3, r1, #2
+ add r0, r0, r3
+ ldrb r0, [r0, #1]
+ sub r0, #8
+ str r0, [sp]
+ mov r0, #0x11
+ lsl r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r4, [r6, #0x14]
+ mov r0, #0xc5
+ add r2, r4, r3
+ ldrb r1, [r2, #2]
+ ldrb r2, [r2, #3]
+ ldrb r3, [r4, r3]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, #8
+ sub r2, #8
+ add r3, #8
+ bl MOD12_02244918
+ b _0223313A
+_0223311E:
+ mov r0, #1
+ ldrsb r1, [r4, r0]
+ ldr r2, _02233148 ; =0x02244D5C
+ add sp, #0x10
+ lsl r0, r1, #1
+ add r3, r1, r0
+ mov r0, #2
+ ldrsb r1, [r4, r0]
+ add r0, r2, r3
+ ldrb r0, [r1, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_02233134:
+ add sp, #0x10
+ mov r0, #3
+ pop {r3, r4, r5, r6, r7, pc}
+_0223313A:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02233144: .word 0x02245074
+_02233148: .word 0x02244D5C
+
+ thumb_func_start MOD12_0223314C
+MOD12_0223314C: ; 0x0223314C
+ push {r4, r5, r6, r7}
+ cmp r1, #3
+ beq _02233184
+ mov r2, #0x31
+ lsl r2, r2, #4
+ add r3, r0, r2
+ mov r5, #0
+ ldr r0, _02233188 ; =0x02244D5C
+ add r2, r5, #0
+ b _02233180
+_02233160:
+ lsl r6, r5, #1
+ add r6, r5, r6
+ add r4, r2, #0
+ add r7, r0, r6
+ b _0223317A
+_0223316A:
+ ldrb r6, [r4, r7]
+ cmp r1, r6
+ bne _02233178
+ strb r4, [r3, #2]
+ strb r5, [r3, #3]
+ pop {r4, r5, r6, r7}
+ bx lr
+_02233178:
+ add r4, r4, #1
+_0223317A:
+ cmp r4, #3
+ blt _0223316A
+ add r5, r5, #1
+_02233180:
+ cmp r5, #2
+ blt _02233160
+_02233184:
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+_02233188: .word 0x02244D5C
+
+ thumb_func_start MOD12_0223318C
+MOD12_0223318C: ; 0x0223318C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #2
+ add r4, r1, #0
+ ldrsb r1, [r0, r7]
+ mov r5, #1
+ add r6, r2, #0
+ str r1, [sp]
+ ldrsb r1, [r0, r5]
+ add r2, r3, #0
+ mov r3, #0x40
+ mov ip, r1
+ ldr r1, _02233364 ; =0x021C48B8
+ ldr r1, [r1, #0x48]
+ tst r3, r1
+ beq _022331FA
+ mov r1, ip
+ sub r1, r1, #1
+ strb r1, [r0, #1]
+ ldrsb r1, [r0, r5]
+ cmp r1, #0
+ bge _022331BA
+ mov r1, #0
+ strb r1, [r0, #1]
+_022331BA:
+ cmp r2, #0
+ beq _022331F6
+ mov r3, #1
+ mov r1, #2
+ ldrsb r3, [r0, r3]
+ ldrsb r1, [r0, r1]
+ mul r3, r4
+ add r1, r1, r3
+ ldrb r1, [r2, r1]
+ cmp r1, #0xff
+ bne _022331F6
+ add r1, r0, #1
+ mov r7, #0
+ mov r6, #1
+_022331D6:
+ ldrsb r3, [r1, r7]
+ sub r3, r3, #1
+ strb r3, [r1]
+ ldrsb r3, [r0, r6]
+ cmp r3, #0
+ bge _022331E8
+ mov r1, ip
+ strb r1, [r0, #1]
+ b _022331F6
+_022331E8:
+ mov r5, #2
+ ldrsb r5, [r0, r5]
+ mul r3, r4
+ add r5, r2, r5
+ ldrb r3, [r3, r5]
+ cmp r3, #0xff
+ beq _022331D6
+_022331F6:
+ mov r5, #0x40
+ b _0223330E
+_022331FA:
+ mov r3, #0x80
+ tst r3, r1
+ beq _02233250
+ mov r1, ip
+ add r1, r1, #1
+ strb r1, [r0, #1]
+ ldrsb r1, [r0, r5]
+ cmp r1, r6
+ blt _02233210
+ sub r1, r6, #1
+ strb r1, [r0, #1]
+_02233210:
+ cmp r2, #0
+ beq _0223324C
+ mov r3, #1
+ mov r1, #2
+ ldrsb r3, [r0, r3]
+ ldrsb r1, [r0, r1]
+ mul r3, r4
+ add r1, r1, r3
+ ldrb r1, [r2, r1]
+ cmp r1, #0xff
+ bne _0223324C
+ add r1, r0, #1
+ mov r7, #1
+_0223322A:
+ mov r3, #0
+ ldrsb r3, [r1, r3]
+ add r3, r3, #1
+ strb r3, [r1]
+ ldrsb r3, [r0, r7]
+ cmp r3, r6
+ blt _0223323E
+ mov r1, ip
+ strb r1, [r0, #1]
+ b _0223324C
+_0223323E:
+ mov r5, #2
+ ldrsb r5, [r0, r5]
+ mul r3, r4
+ add r5, r2, r5
+ ldrb r3, [r3, r5]
+ cmp r3, #0xff
+ beq _0223322A
+_0223324C:
+ mov r5, #0x80
+ b _0223330E
+_02233250:
+ mov r3, #0x20
+ tst r3, r1
+ beq _022332A6
+ ldr r1, [sp]
+ sub r1, r1, #1
+ strb r1, [r0, #2]
+ ldrsb r1, [r0, r7]
+ cmp r1, #0
+ bge _02233266
+ mov r1, #0
+ strb r1, [r0, #2]
+_02233266:
+ cmp r2, #0
+ beq _022332A2
+ mov r3, #1
+ mov r1, #2
+ ldrsb r3, [r0, r3]
+ ldrsb r1, [r0, r1]
+ mul r3, r4
+ add r1, r1, r3
+ ldrb r1, [r2, r1]
+ cmp r1, #0xff
+ bne _022332A2
+ add r5, r0, #2
+ mov r7, #0
+ mov r6, #2
+_02233282:
+ ldrsb r1, [r5, r7]
+ sub r1, r1, #1
+ strb r1, [r5]
+ ldrsb r3, [r0, r6]
+ cmp r3, #0
+ bge _02233294
+ ldr r1, [sp]
+ strb r1, [r0, #2]
+ b _022332A2
+_02233294:
+ mov r1, #1
+ ldrsb r1, [r0, r1]
+ add r3, r2, r3
+ mul r1, r4
+ ldrb r1, [r1, r3]
+ cmp r1, #0xff
+ beq _02233282
+_022332A2:
+ mov r5, #0x20
+ b _0223330E
+_022332A6:
+ mov r3, #0x10
+ tst r3, r1
+ beq _022332FC
+ ldr r1, [sp]
+ add r1, r1, #1
+ strb r1, [r0, #2]
+ ldrsb r1, [r0, r7]
+ cmp r1, r4
+ blt _022332BC
+ sub r1, r4, #1
+ strb r1, [r0, #2]
+_022332BC:
+ cmp r2, #0
+ beq _022332F8
+ mov r3, #1
+ mov r1, #2
+ ldrsb r3, [r0, r3]
+ ldrsb r1, [r0, r1]
+ mul r3, r4
+ add r1, r1, r3
+ ldrb r1, [r2, r1]
+ cmp r1, #0xff
+ bne _022332F8
+ add r5, r0, #2
+ mov r7, #0
+ mov r6, #2
+_022332D8:
+ ldrsb r1, [r5, r7]
+ add r1, r1, #1
+ strb r1, [r5]
+ ldrsb r3, [r0, r6]
+ cmp r3, r4
+ blt _022332EA
+ ldr r1, [sp]
+ strb r1, [r0, #2]
+ b _022332F8
+_022332EA:
+ mov r1, #1
+ ldrsb r1, [r0, r1]
+ add r3, r2, r3
+ mul r1, r4
+ ldrb r1, [r1, r3]
+ cmp r1, #0xff
+ beq _022332D8
+_022332F8:
+ mov r5, #0x10
+ b _0223330E
+_022332FC:
+ add r3, r1, #0
+ tst r3, r5
+ bne _0223330E
+ tst r1, r7
+ beq _0223330A
+ add r5, r7, #0
+ b _0223330E
+_0223330A:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0223330E:
+ cmp r2, #0
+ beq _02233338
+ mov r1, ip
+ add r3, r4, #0
+ mul r3, r1
+ ldr r1, [sp]
+ add r1, r1, r3
+ mov r3, #2
+ ldrsb r6, [r0, r3]
+ mov r3, #1
+ ldrsb r3, [r0, r3]
+ ldrb r1, [r2, r1]
+ mul r3, r4
+ add r3, r6, r3
+ ldrb r2, [r2, r3]
+ cmp r1, r2
+ bne _02233338
+ ldr r1, [sp]
+ strb r1, [r0, #2]
+ mov r1, ip
+ strb r1, [r0, #1]
+_02233338:
+ mov r1, #2
+ ldrsb r2, [r0, r1]
+ ldr r1, [sp]
+ cmp r2, r1
+ bne _0223334C
+ mov r1, #1
+ ldrsb r1, [r0, r1]
+ mov r0, ip
+ cmp r1, r0
+ beq _02233354
+_0223334C:
+ ldr r0, _02233368 ; =0x000005DC
+ bl FUN_020054C8
+ b _0223335E
+_02233354:
+ mov r0, #0xf0
+ tst r0, r5
+ beq _0223335E
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0223335E:
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02233364: .word 0x021C48B8
+_02233368: .word 0x000005DC
+
+ thumb_func_start MOD12_0223336C
+MOD12_0223336C: ; 0x0223336C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0
+ mov r2, #0xb7
+ add r4, r1, #0
+ str r0, [sp]
+ lsl r2, r2, #2
+ ldr r0, [r4, #4]
+ ldr r2, [r4, r2]
+ mov r3, #6
+ ldr r0, [r0, #0x24]
+ ldr r2, [r2, #0x14]
+ mov r1, #4
+ lsl r3, r3, #0xc
+ bl FUN_02017E14
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0xb6
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022333A8
+MOD12_022333A8: ; 0x022333A8
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ mov r0, #0x2e
+ lsl r0, r0, #4
+ ldrsb r1, [r1, r0]
+ mov r0, #0x30
+ mov r4, #0
+ ldr r2, _022333F0 ; =0x02245074
+ mul r0, r1
+ ldr r6, _022333F4 ; =0x0000FFFF
+ add r5, r2, r0
+ add r7, r4, #0
+_022333C0:
+ ldrh r0, [r5, #4]
+ cmp r0, r6
+ bne _022333D4
+ add r0, r4, #4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r1, r7, #0
+ bl FUN_0201797C
+ b _022333E0
+_022333D4:
+ add r0, r4, #4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #1
+ bl FUN_0201797C
+_022333E0:
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, #4
+ blt _022333C0
+ ldr r0, [sp]
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022333F0: .word 0x02245074
+_022333F4: .word 0x0000FFFF
+
+ thumb_func_start MOD12_022333F8
+MOD12_022333F8: ; 0x022333F8
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #1
+ str r2, [sp]
+ mov r2, #2
+ str r2, [sp, #4]
+ ldr r2, _02233440 ; =0x000080FB
+ mov r3, #0x2a
+ str r2, [sp, #8]
+ mov r2, #0x2e
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02233444 ; =0x000080F6
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x2b
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02233444 ; =0x000080F6
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x2c
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02233440: .word 0x000080FB
+_02233444: .word 0x000080F6
+
+ thumb_func_start MOD12_02233448
+MOD12_02233448: ; 0x02233448
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ ldr r2, _02233474 ; =0x02245168
+ bl FUN_0200C154
+ mov r1, #0x58
+ mul r1, r5
+ add r1, #0x28
+ lsl r1, r1, #0x10
+ mov r3, #0x11
+ add r4, r0, #0
+ asr r1, r1, #0x10
+ mov r2, #0x60
+ lsl r3, r3, #0x10
+ bl FUN_0200C750
+ ldr r0, [r4]
+ bl FUN_0200C59C
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02233474: .word 0x02245168
+
+ thumb_func_start MOD12_02233478
+MOD12_02233478: ; 0x02233478
+ push {r4, lr}
+ ldr r1, _02233494 ; =0x000080FB
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _02233498 ; =0x000080F6
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _02233498 ; =0x000080F6
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_02233494: .word 0x000080FB
+_02233498: .word 0x000080F6
+
+ thumb_func_start MOD12_0223349C
+MOD12_0223349C: ; 0x0223349C
+ ldr r3, _022334A0 ; =0x0200C3DD
+ bx r3
+ .align 2, 0
+_022334A0: .word 0x0200C3DD
+
+ thumb_func_start MOD12_022334A4
+MOD12_022334A4: ; 0x022334A4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #1
+ str r2, [sp]
+ mov r2, #2
+ str r2, [sp, #4]
+ ldr r2, _022334EC ; =0x000080FA
+ mov r3, #0x2d
+ str r2, [sp, #8]
+ mov r2, #0x2e
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _022334F0 ; =0x000080F5
+ mov r2, #0x2e
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _022334F0 ; =0x000080F5
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x2f
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_022334EC: .word 0x000080FA
+_022334F0: .word 0x000080F5
+
+ thumb_func_start MOD12_022334F4
+MOD12_022334F4: ; 0x022334F4
+ push {r4, r5, r6, lr}
+ add r5, r2, #0
+ ldr r2, [sp, #0x10]
+ add r6, r3, #0
+ cmp r2, #0
+ blt _02233508
+ ldr r2, _0223352C ; =0x02245134
+ bl FUN_0200C154
+ b _0223350E
+_02233508:
+ ldr r2, _02233530 ; =0x0224519C
+ bl FUN_0200C154
+_0223350E:
+ add r4, r0, #0
+ lsl r1, r5, #0x10
+ lsl r2, r6, #0x10
+ mov r3, #0x11
+ add r0, r4, #0
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ lsl r3, r3, #0x10
+ bl FUN_0200C750
+ ldr r0, [r4]
+ bl FUN_0200C59C
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223352C: .word 0x02245134
+_02233530: .word 0x0224519C
+
+ thumb_func_start MOD12_02233534
+MOD12_02233534: ; 0x02233534
+ ldr r3, _02233538 ; =0x0200C3DD
+ bx r3
+ .align 2, 0
+_02233538: .word 0x0200C3DD
+
+ thumb_func_start MOD12_0223353C
+MOD12_0223353C: ; 0x0223353C
+ push {r4, lr}
+ ldr r1, _02233558 ; =0x000080FA
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _0223355C ; =0x000080F5
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _0223355C ; =0x000080F5
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_02233558: .word 0x000080FA
+_0223355C: .word 0x000080F5
+
+ thumb_func_start MOD12_02233560
+MOD12_02233560: ; 0x02233560
+ ldr r0, _02233568 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ bx lr
+ .align 2, 0
+_02233568: .word 0x04000050
+
+ thumb_func_start MOD12_0223356C
+MOD12_0223356C: ; 0x0223356C
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r0, [r0, #0x30]
+ add r5, r1, #0
+ mov r1, #2
+ add r4, r2, #0
+ bl FUN_0201886C
+ mov r1, #0xc0
+ mul r1, r5
+ lsl r1, r1, #1
+ mov r2, #0
+ ldr r6, _022335AC ; =0x00000FFF
+ add r0, r0, r1
+ add r3, r2, #0
+ lsl r4, r4, #0xc
+_0223358A:
+ lsl r5, r3, #1
+ mov r1, #0
+ add r5, r0, r5
+_02233590:
+ ldrh r7, [r5]
+ add r1, r1, #1
+ and r7, r6
+ orr r7, r4
+ strh r7, [r5]
+ add r5, r5, #2
+ cmp r1, #0xa
+ blt _02233590
+ add r2, r2, #1
+ add r3, #0x20
+ cmp r2, #6
+ blt _0223358A
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022335AC: .word 0x00000FFF
+
+ thumb_func_start MOD12_022335B0
+MOD12_022335B0: ; 0x022335B0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r4, #0
+ ldr r6, _022335DC ; =0x022451D0
+ ldr r7, _022335E0 ; =0x00000231
+ b _022335CC
+_022335BC:
+ add r2, r5, r4
+ ldrb r2, [r2, r7]
+ add r0, r5, #0
+ add r1, r4, #0
+ ldrb r2, [r6, r2]
+ bl MOD12_0223356C
+ add r4, r4, #1
+_022335CC:
+ cmp r4, #4
+ blt _022335BC
+ ldr r0, [r5, #0x30]
+ mov r1, #2
+ bl FUN_0201AC68
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022335DC: .word 0x022451D0
+_022335E0: .word 0x00000231
+
+ thumb_func_start MOD12_022335E4
+MOD12_022335E4: ; 0x022335E4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x15
+ mov r1, #0xc
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0xc
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [r5, #0x5c]
+ ldr r2, _02233614 ; =0x00009CA4
+ str r0, [r4]
+ ldr r0, _02233618 ; =MOD12_02233648
+ add r1, r4, #0
+ strb r6, [r4, #0xa]
+ bl FUN_0200CA44
+ str r0, [r4, #4]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02233614: .word 0x00009CA4
+_02233618: .word MOD12_02233648
+
+ thumb_func_start MOD12_0223361C
+MOD12_0223361C: ; 0x0223361C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #0xb]
+ cmp r0, #0
+ beq _0223362A
+ bl ErrorHandling
+_0223362A:
+ ldr r0, [r4, #4]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD12_02233638
+MOD12_02233638: ; 0x02233638
+ mov r1, #1
+ strb r1, [r0, #0xb]
+ mov r1, #0xa
+ lsl r1, r1, #8
+ strh r1, [r0, #8]
+ bx lr
+
+ thumb_func_start MOD12_02233644
+MOD12_02233644: ; 0x02233644
+ ldrb r0, [r0, #0xb]
+ bx lr
+
+ thumb_func_start MOD12_02233648
+MOD12_02233648: ; 0x02233648
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldrb r0, [r4, #0xb]
+ cmp r0, #0
+ beq _0223369E
+ mov r0, #8
+ ldrsh r0, [r4, r0]
+ ldr r2, _022336A4 ; =0x022451D0
+ mov r1, #0
+ asr r0, r0, #8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, _022336A8 ; =0x00007FFF
+ str r0, [sp, #4]
+ ldrb r3, [r4, #0xa]
+ ldr r0, [r4]
+ ldrb r2, [r2, r3]
+ mov r3, #4
+ lsl r2, r2, #4
+ add r2, r2, #1
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_020039E8
+ mov r1, #8
+ ldrsh r2, [r4, r1]
+ cmp r2, #0
+ bne _0223368C
+ mov r0, #0
+ add sp, #8
+ strb r0, [r4, #0xb]
+ pop {r4, pc}
+_0223368C:
+ mov r0, #0xa
+ lsl r0, r0, #6
+ sub r0, r2, r0
+ strh r0, [r4, #8]
+ ldrsh r0, [r4, r1]
+ cmp r0, #0
+ bge _0223369E
+ mov r0, #0
+ strh r0, [r4, #8]
+_0223369E:
+ add sp, #8
+ pop {r4, pc}
+ nop
+_022336A4: .word 0x022451D0
+_022336A8: .word 0x00007FFF
+
+ thumb_func_start MOD12_022336AC
+MOD12_022336AC: ; 0x022336AC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ str r0, [sp, #0x18]
+ add r0, #8
+ str r0, [sp, #0x18]
+ add r6, r1, #0
+ lsl r0, r6, #2
+ ldr r1, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ ldr r0, [r1, r0]
+ bl FUN_02007534
+ lsl r0, r6, #4
+ add r0, r5, r0
+ ldr r0, [r0, #0x58]
+ cmp r0, #0
+ bne _022336D4
+ bl ErrorHandling
+_022336D4:
+ add r2, r5, #0
+ add r2, #0x58
+ lsl r1, r6, #4
+ add r0, r2, r1
+ str r0, [sp, #0x14]
+ ldr r0, [r2, r1]
+ mov r2, #0x32
+ mov r1, #0
+ lsl r2, r2, #6
+ bl MI_CpuFill8
+ ldr r1, [sp, #0x14]
+ lsl r0, r6, #5
+ str r1, [sp]
+ mov r1, #0x15
+ str r1, [sp, #4]
+ mov r1, #0xd8
+ sub r1, r1, r0
+ str r1, [sp, #8]
+ mov r1, #0x70
+ sub r0, r1, r0
+ str r0, [sp, #0xc]
+ ldr r0, _02233754 ; =0xFFFFFE00
+ add r7, r5, #0
+ str r0, [sp, #0x10]
+ ldr r2, [r5]
+ lsl r4, r6, #2
+ ldr r0, [r5, #4]
+ ldr r2, [r2, r4]
+ add r7, #8
+ add r1, r6, #0
+ mov r3, #0
+ bl FUN_02082E64
+ str r0, [r7, r4]
+ ldr r0, [r7, r4]
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ ldr r0, [r7, r4]
+ mov r1, #0x25
+ mov r2, #1
+ bl FUN_02007558
+ ldr r0, [r5]
+ mov r1, #5
+ ldr r0, [r0, r4]
+ mov r2, #0
+ bl FUN_020671BC
+ bl MOD08_0222A6C8
+ cmp r0, #1
+ bne _02233750
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ mov r2, #1
+ ldr r0, [r1, r0]
+ mov r1, #0x23
+ bl FUN_02007558
+_02233750:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02233754: .word 0xFFFFFE00
+
+ thumb_func_start MOD12_02233758
+MOD12_02233758: ; 0x02233758
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #0x14]
+ ldr r7, [sp, #0x14]
+ mov r0, #0
+ str r0, [sp, #0x1c]
+ add r6, r0, #0
+ add r0, r7, #0
+ str r0, [sp, #0x18]
+ add r0, #0x58
+ ldr r4, [sp, #0x1c]
+ str r0, [sp, #0x18]
+ add r5, r7, #0
+_02233772:
+ ldr r0, [r7, #0x58]
+ cmp r0, #0
+ beq _0223377C
+ bl ErrorHandling
+_0223377C:
+ mov r1, #0x32
+ mov r0, #0x15
+ lsl r1, r1, #6
+ bl FUN_02016998
+ str r0, [r7, #0x58]
+ ldr r0, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ str r0, [sp]
+ mov r0, #0x15
+ str r0, [sp, #4]
+ mov r0, #0xd8
+ sub r0, r0, r6
+ str r0, [sp, #8]
+ mov r0, #0x70
+ sub r0, r0, r6
+ str r0, [sp, #0xc]
+ ldr r0, _02233844 ; =0xFFFFFE00
+ ldr r1, [sp, #0x1c]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ ldr r2, [r2]
+ ldr r0, [r0, #4]
+ ldr r2, [r2, r4]
+ mov r3, #0
+ bl FUN_02082E64
+ str r0, [r5, #8]
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ ldr r0, [r5, #8]
+ mov r1, #0x25
+ mov r2, #1
+ bl FUN_02007558
+ ldr r0, [sp, #0x14]
+ mov r1, #5
+ ldr r0, [r0]
+ mov r2, #0
+ ldr r0, [r0, r4]
+ bl FUN_020671BC
+ bl MOD08_0222A6C8
+ cmp r0, #1
+ bne _022337E6
+ ldr r0, [r5, #8]
+ mov r1, #0x23
+ mov r2, #1
+ bl FUN_02007558
+_022337E6:
+ ldr r0, [sp, #0x18]
+ add r7, #0x10
+ add r0, #0x10
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ add r6, #0x20
+ add r0, r0, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ str r0, [sp, #0x1c]
+ cmp r0, #4
+ blt _02233772
+ ldr r0, [sp, #0x14]
+ add r0, #0x98
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223380C
+ bl ErrorHandling
+_0223380C:
+ mov r1, #0x32
+ mov r0, #0x15
+ lsl r1, r1, #6
+ bl FUN_02016998
+ ldr r1, [sp, #0x14]
+ mov r2, #0x32
+ add r1, #0x98
+ str r0, [r1]
+ ldr r0, [sp, #0x14]
+ lsl r2, r2, #6
+ ldr r1, [r0, #0x60]
+ add r0, #0xa0
+ str r1, [r0]
+ ldr r0, [sp, #0x14]
+ ldr r1, [r0, #0x5c]
+ add r0, #0x9c
+ str r1, [r0]
+ ldr r1, [sp, #0x14]
+ mov r0, #0
+ add r1, #0x98
+ str r1, [sp, #0x14]
+ ldr r1, [r1]
+ bl MIi_CpuClear32
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02233844: .word 0xFFFFFE00
+
+ thumb_func_start MOD12_02233848
+MOD12_02233848: ; 0x02233848
+ push {r3, r4, r5, r6, r7, lr}
+ mov r6, #0
+ str r0, [sp]
+ add r4, r0, #0
+ add r5, r0, #0
+ add r7, r6, #0
+_02233854:
+ ldr r0, [r4, #8]
+ bl FUN_02007534
+ ldr r0, [r5, #0x58]
+ bl FUN_02016A18
+ str r7, [r5, #0x58]
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, #0x10
+ cmp r6, #4
+ blt _02233854
+ ldr r0, [sp]
+ add r0, #0x98
+ ldr r0, [r0]
+ bl FUN_02016A18
+ ldr r0, [sp]
+ mov r1, #0
+ add r0, #0x98
+ str r0, [sp]
+ str r1, [r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02233884
+MOD12_02233884: ; 0x02233884
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x58
+ ldr r4, [sp, #0x70]
+ str r0, [sp, #0x18]
+ add r5, r1, #0
+ add r7, r2, #0
+ cmp r4, #0
+ beq _0223389A
+ cmp r4, #1
+ beq _022338A8
+ b _022338B6
+_0223389A:
+ mov r0, #0x20
+ str r0, [sp, #0x20]
+ mov r0, #0x1e
+ mov r3, #0x1f
+ mov r6, #1
+ str r0, [sp, #0x1c]
+ b _022338C2
+_022338A8:
+ mov r0, #0x26
+ str r0, [sp, #0x20]
+ mov r0, #0x24
+ mov r3, #0x25
+ mov r6, #3
+ str r0, [sp, #0x1c]
+ b _022338C2
+_022338B6:
+ mov r0, #0x23
+ str r0, [sp, #0x20]
+ mov r0, #0x21
+ mov r3, #0x22
+ mov r6, #2
+ str r0, [sp, #0x1c]
+_022338C2:
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0223396C ; =0x000080E9
+ add r1, r7, #0
+ add r0, r4, r0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r2, #0x2e
+ bl FUN_0200C00C
+ mov r0, #0x2e
+ str r0, [sp]
+ str r6, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, _02233970 ; =0x000080EA
+ mov r1, #2
+ add r0, r4, r0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r2, r5, #0
+ add r3, r7, #0
+ bl FUN_0200C0DC
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223396C ; =0x000080E9
+ ldr r3, [sp, #0x20]
+ add r0, r4, r0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #0x2e
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223396C ; =0x000080E9
+ ldr r3, [sp, #0x1c]
+ add r0, r4, r0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #0x2e
+ bl FUN_0200C13C
+ ldr r6, _02233974 ; =0x022453D8
+ add r3, sp, #0x24
+ mov r2, #6
+_0223392C:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0223392C
+ ldr r0, [r6]
+ add r2, sp, #0x24
+ str r0, [r3]
+ ldr r0, _0223396C ; =0x000080E9
+ add r1, r4, r0
+ add r0, r0, #1
+ add r0, r4, r0
+ str r0, [sp, #0x3c]
+ str r1, [sp, #0x38]
+ str r1, [sp, #0x40]
+ str r1, [sp, #0x44]
+ lsl r1, r4, #5
+ add r1, #0x60
+ add r0, sp, #0x24
+ strh r1, [r0]
+ mov r1, #0x28
+ strh r1, [r0, #2]
+ add r0, r5, #0
+ add r1, r7, #0
+ bl FUN_0200C154
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0200C59C
+ add r0, r4, #0
+ add sp, #0x58
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223396C: .word 0x000080E9
+_02233970: .word 0x000080EA
+_02233974: .word 0x022453D8
+
+ thumb_func_start MOD12_02233978
+MOD12_02233978: ; 0x02233978
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ add r4, r2, #0
+ bl FUN_0200C3DC
+ ldr r1, _022339B0 ; =0x000080E9
+ add r0, r5, #0
+ add r1, r4, r1
+ bl FUN_0200C358
+ ldr r1, _022339B4 ; =0x000080EA
+ add r0, r5, #0
+ add r1, r4, r1
+ bl FUN_0200C368
+ ldr r1, _022339B0 ; =0x000080E9
+ add r0, r5, #0
+ add r1, r4, r1
+ bl FUN_0200C378
+ ldr r1, _022339B0 ; =0x000080E9
+ add r0, r5, #0
+ add r1, r4, r1
+ bl FUN_0200C388
+ pop {r3, r4, r5, pc}
+ nop
+_022339B0: .word 0x000080E9
+_022339B4: .word 0x000080EA
+
+ thumb_func_start MOD12_022339B8
+MOD12_022339B8: ; 0x022339B8
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02233A04 ; =0x000080EC
+ add r4, r2, #0
+ add r5, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x2e
+ mov r3, #0x27
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02233A04 ; =0x000080EC
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x28
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02233A04 ; =0x000080EC
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x29
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_02233A04: .word 0x000080EC
+
+ thumb_func_start MOD12_02233A08
+MOD12_02233A08: ; 0x02233A08
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ ldr r4, _02233A5C ; =0x0224520C
+ add r6, r2, #0
+ add r3, r0, #0
+ add r7, r1, #0
+ ldmia r4!, {r0, r1}
+ add r2, sp, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r4]
+ ldr r5, _02233A60 ; =0x0224533C
+ str r0, [r2]
+ add r4, sp, #0xc
+ mov r2, #6
+_02233A24:
+ ldmia r5!, {r0, r1}
+ stmia r4!, {r0, r1}
+ sub r2, r2, #1
+ bne _02233A24
+ ldr r0, [r5]
+ lsl r1, r6, #5
+ str r0, [r4]
+ add r1, #0x60
+ add r0, sp, #0
+ strh r1, [r0, #0xc]
+ mov r1, #0x20
+ strh r1, [r0, #0xe]
+ lsl r1, r6, #2
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ add r1, r7, #0
+ str r0, [sp, #0x18]
+ add r0, r3, #0
+ add r2, sp, #0xc
+ bl FUN_0200C154
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0200C59C
+ add r0, r4, #0
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02233A5C: .word 0x0224520C
+_02233A60: .word 0x0224533C
+
+ thumb_func_start MOD12_02233A64
+MOD12_02233A64: ; 0x02233A64
+ ldr r3, _02233A68 ; =0x0200C3DD
+ bx r3
+ .align 2, 0
+_02233A68: .word 0x0200C3DD
+
+ thumb_func_start MOD12_02233A6C
+MOD12_02233A6C: ; 0x02233A6C
+ push {r4, lr}
+ ldr r1, _02233A88 ; =0x000080EC
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _02233A88 ; =0x000080EC
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _02233A88 ; =0x000080EC
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_02233A88: .word 0x000080EC
+
+ thumb_func_start MOD12_02233A8C
+MOD12_02233A8C: ; 0x02233A8C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r6, r1, #0
+ ldr r0, [r7, #0x50]
+ ldr r1, [r7, #0x18]
+ ldr r2, [r7, #0x1c]
+ bl MOD12_022339B8
+ mov r4, #0
+ add r5, r7, #0
+ add r6, #0xd0
+_02233AA2:
+ ldr r0, [r7, #0x18]
+ ldr r1, [r7, #0x1c]
+ add r2, r4, #0
+ bl MOD12_02233A08
+ add r1, r5, #0
+ add r1, #0xb4
+ str r0, [r1]
+ str r4, [sp]
+ ldr r0, [r7, #0x50]
+ ldr r1, [r7, #0x18]
+ ldr r2, [r7, #0x1c]
+ add r3, r6, #0
+ bl MOD12_02233884
+ add r1, r5, #0
+ add r1, #0xa8
+ add r4, r4, #1
+ str r0, [r1]
+ add r5, r5, #4
+ add r6, #8
+ cmp r4, #3
+ blt _02233AA2
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02233AD4
+MOD12_02233AD4: ; 0x02233AD4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02233ADC:
+ add r1, r5, #0
+ add r1, #0xa8
+ ldr r0, [r6, #0x1c]
+ ldr r1, [r1]
+ add r2, r4, #0
+ bl MOD12_02233978
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ bl MOD12_02233A64
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _02233ADC
+ ldr r0, [r6, #0x1c]
+ bl MOD12_02233A6C
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_02233B04
+MOD12_02233B04: ; 0x02233B04
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02233B50 ; =0x000080F5
+ add r4, r2, #0
+ add r5, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x2e
+ mov r3, #0xe
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02233B54 ; =0x000080F3
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0xd
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02233B54 ; =0x000080F3
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0xc
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_02233B50: .word 0x000080F5
+_02233B54: .word 0x000080F3
+
+ thumb_func_start MOD12_02233B58
+MOD12_02233B58: ; 0x02233B58
+ push {r4, lr}
+ ldr r1, _02233B74 ; =0x000080F5
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _02233B78 ; =0x000080F3
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _02233B78 ; =0x000080F3
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_02233B74: .word 0x000080F5
+_02233B78: .word 0x000080F3
+
+ thumb_func_start MOD12_02233B7C
+MOD12_02233B7C: ; 0x02233B7C
+ push {r4, r5, lr}
+ sub sp, #0x34
+ ldr r4, _02233BB8 ; =0x022452D4
+ add r5, r0, #0
+ add r3, sp, #0
+ mov r2, #6
+_02233B88:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02233B88
+ ldr r0, [r4]
+ add r2, sp, #0
+ str r0, [r3]
+ ldr r0, [r5, #0x18]
+ ldr r1, [r5, #0x1c]
+ bl FUN_0200C154
+ add r4, r0, #0
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r4]
+ bl FUN_0200C59C
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ str r4, [r5, r0]
+ add sp, #0x34
+ pop {r4, r5, pc}
+ nop
+_02233BB8: .word 0x022452D4
+
+ thumb_func_start MOD12_02233BBC
+MOD12_02233BBC: ; 0x02233BBC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _02233BCE
+ bl ErrorHandling
+_02233BCE:
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200C3DC
+ mov r0, #0x5f
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02233BE4
+MOD12_02233BE4: ; 0x02233BE4
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r6, r1, #0
+ add r5, r2, #0
+ cmp r0, #0
+ bne _02233BFA
+ bl ErrorHandling
+_02233BFA:
+ ldr r1, _02233C60 ; =0x02245200
+ lsl r2, r6, #2
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r3, _02233C64 ; =0x02245202
+ ldrsh r1, [r1, r2]
+ ldrsh r2, [r3, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0200C714
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r5, #0
+ bl FUN_0200C5C0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C644
+ cmp r5, #3
+ bhi _02233C5C
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02233C36: ; jump table
+ .short _02233C3E - _02233C36 - 2 ; case 0
+ .short _02233C46 - _02233C36 - 2 ; case 1
+ .short _02233C4E - _02233C36 - 2 ; case 2
+ .short _02233C56 - _02233C36 - 2 ; case 3
+_02233C3E:
+ ldr r0, _02233C68 ; =0x000006E1
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_02233C46:
+ ldr r0, _02233C6C ; =0x000006DF
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_02233C4E:
+ ldr r0, _02233C70 ; =0x000005DD
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_02233C56:
+ ldr r0, _02233C70 ; =0x000005DD
+ bl FUN_020054C8
+_02233C5C:
+ pop {r4, r5, r6, pc}
+ nop
+_02233C60: .word 0x02245200
+_02233C64: .word 0x02245202
+_02233C68: .word 0x000006E1
+_02233C6C: .word 0x000006DF
+_02233C70: .word 0x000005DD
+
+ thumb_func_start MOD12_02233C74
+MOD12_02233C74: ; 0x02233C74
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _02233C86
+ bl ErrorHandling
+_02233C86:
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ pop {r4, pc}
+
+ thumb_func_start MOD12_02233C94
+MOD12_02233C94: ; 0x02233C94
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r1, [sp]
+ mov r0, #0x15
+ mov r1, #0x28
+ add r6, r2, #0
+ add r7, r3, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x28
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ strb r0, [r7]
+ str r7, [r4, #4]
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [sp]
+ str r5, [r4]
+ strb r0, [r4, #8]
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r1, #0xc
+ add r2, #0xe
+ bl FUN_0200C7A0
+ cmp r6, #6
+ bhi _02233CEE
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02233CE0: ; jump table
+ .short _02233CEE - _02233CE0 - 2 ; case 0
+ .short _02233D04 - _02233CE0 - 2 ; case 1
+ .short _02233D10 - _02233CE0 - 2 ; case 2
+ .short _02233D20 - _02233CE0 - 2 ; case 3
+ .short _02233D30 - _02233CE0 - 2 ; case 4
+ .short _02233D40 - _02233CE0 - 2 ; case 5
+ .short _02233D50 - _02233CE0 - 2 ; case 6
+_02233CEE:
+ mov r0, #1
+ strb r0, [r4, #0x18]
+ ldr r0, _02233D64 ; =0xFFFFFE00
+ ldr r2, _02233D68 ; =0x00009C40
+ strh r0, [r4, #0x24]
+ strh r0, [r4, #0x26]
+ ldr r0, _02233D6C ; =MOD12_02233E48
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+_02233D04:
+ ldr r0, _02233D70 ; =MOD12_02233D84
+ ldr r2, _02233D68 ; =0x00009C40
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+_02233D10:
+ ldr r0, _02233D74 ; =0xFFFFFD00
+ ldr r2, _02233D68 ; =0x00009C40
+ strh r0, [r4, #0x24]
+ ldr r0, _02233D6C ; =MOD12_02233E48
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+_02233D20:
+ ldr r0, _02233D78 ; =0xFFFFFC00
+ ldr r2, _02233D68 ; =0x00009C40
+ strh r0, [r4, #0x24]
+ ldr r0, _02233D6C ; =MOD12_02233E48
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+_02233D30:
+ ldr r0, _02233D7C ; =0xFFFFFB80
+ ldr r2, _02233D68 ; =0x00009C40
+ strh r0, [r4, #0x24]
+ ldr r0, _02233D6C ; =MOD12_02233E48
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+_02233D40:
+ ldr r0, _02233D80 ; =0xFFFFFD80
+ ldr r2, _02233D68 ; =0x00009C40
+ strh r0, [r4, #0x24]
+ ldr r0, _02233D6C ; =MOD12_02233E48
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+_02233D50:
+ mov r0, #0xff
+ mvn r0, r0
+ strh r0, [r4, #0x24]
+ ldr r0, _02233D6C ; =MOD12_02233E48
+ ldr r2, _02233D68 ; =0x00009C40
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02233D64: .word 0xFFFFFE00
+_02233D68: .word 0x00009C40
+_02233D6C: .word MOD12_02233E48
+_02233D70: .word MOD12_02233D84
+_02233D74: .word 0xFFFFFD00
+_02233D78: .word 0xFFFFFC00
+_02233D7C: .word 0xFFFFFB80
+_02233D80: .word 0xFFFFFD80
+
+ thumb_func_start MOD12_02233D84
+MOD12_02233D84: ; 0x02233D84
+ push {r4, lr}
+ add r2, r1, #0
+ add r4, r0, #0
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0
+ beq _02233D9A
+ cmp r0, #1
+ beq _02233DB0
+ cmp r0, #2
+ beq _02233DF0
+ b _02233E0A
+_02233D9A:
+ mov r0, #0xc
+ ldrsh r0, [r2, r0]
+ lsl r0, r0, #8
+ str r0, [r2, #0x10]
+ mov r0, #0xe
+ ldrsh r0, [r2, r0]
+ lsl r0, r0, #8
+ str r0, [r2, #0x14]
+ ldrb r0, [r2, #0xa]
+ add r0, r0, #1
+ strb r0, [r2, #0xa]
+_02233DB0:
+ ldrb r0, [r2, #0x18]
+ mov r1, #1
+ tst r0, r1
+ beq _02233DC4
+ mov r0, #0xc
+ ldrsh r0, [r2, r0]
+ lsl r3, r0, #8
+ lsl r0, r1, #9
+ add r0, r3, r0
+ b _02233DCE
+_02233DC4:
+ mov r0, #0xc
+ ldrsh r0, [r2, r0]
+ lsl r3, r0, #8
+ lsl r0, r1, #9
+ sub r0, r3, r0
+_02233DCE:
+ str r0, [r2, #0x10]
+ ldrb r0, [r2, #0x18]
+ add r0, r0, #1
+ strb r0, [r2, #0x18]
+ ldrb r0, [r2, #0x18]
+ cmp r0, #4
+ bls _02233E1E
+ mov r0, #0xc
+ ldrsh r0, [r2, r0]
+ lsl r0, r0, #8
+ str r0, [r2, #0x10]
+ mov r0, #0
+ strb r0, [r2, #0x18]
+ ldrb r0, [r2, #0xa]
+ add r0, r0, #1
+ strb r0, [r2, #0xa]
+ b _02233E1E
+_02233DF0:
+ mov r0, #9
+ ldrsb r1, [r2, r0]
+ add r1, r1, #1
+ strb r1, [r2, #9]
+ ldrsb r0, [r2, r0]
+ cmp r0, #0xf
+ ble _02233E1E
+ mov r0, #0
+ strb r0, [r2, #9]
+ ldrb r0, [r2, #0xa]
+ add r0, r0, #1
+ strb r0, [r2, #0xa]
+ b _02233E1E
+_02233E0A:
+ ldr r0, [r2, #4]
+ mov r1, #1
+ strb r1, [r0]
+ add r0, r2, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+_02233E1E:
+ ldrb r0, [r2, #8]
+ ldr r1, [r2]
+ ldr r3, [r2, #0x10]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ asr r1, r3, #7
+ lsr r1, r1, #0x18
+ add r1, r3, r1
+ ldr r3, [r2, #0x14]
+ add r0, #0xb4
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ lsl r1, r1, #8
+ lsl r2, r2, #8
+ ldr r0, [r0]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ pop {r4, pc}
+
+ thumb_func_start MOD12_02233E48
+MOD12_02233E48: ; 0x02233E48
+ push {r4, lr}
+ add r2, r1, #0
+ add r4, r0, #0
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0
+ beq _02233E5A
+ cmp r0, #1
+ beq _02233E70
+ b _02233ED8
+_02233E5A:
+ mov r0, #0xc
+ ldrsh r0, [r2, r0]
+ lsl r0, r0, #8
+ str r0, [r2, #0x10]
+ mov r0, #0xe
+ ldrsh r0, [r2, r0]
+ lsl r0, r0, #8
+ str r0, [r2, #0x14]
+ ldrb r0, [r2, #0xa]
+ add r0, r0, #1
+ strb r0, [r2, #0xa]
+_02233E70:
+ mov r0, #0x24
+ ldrsh r1, [r2, r0]
+ ldr r3, [r2, #0x14]
+ add r1, r3, r1
+ str r1, [r2, #0x14]
+ ldrsh r0, [r2, r0]
+ add r0, #0x80
+ strh r0, [r2, #0x24]
+ mov r0, #0xe
+ ldrsh r0, [r2, r0]
+ lsl r1, r0, #8
+ ldr r0, [r2, #0x14]
+ cmp r0, r1
+ blt _02233EAE
+ str r1, [r2, #0x14]
+ ldrb r0, [r2, #0x18]
+ cmp r0, #0
+ beq _02233EA8
+ mov r0, #0x26
+ ldrsh r0, [r2, r0]
+ strh r0, [r2, #0x24]
+ ldrb r0, [r2, #0x18]
+ sub r0, r0, #1
+ strb r0, [r2, #0x18]
+ ldrb r0, [r2, #0xa]
+ sub r0, r0, #1
+ strb r0, [r2, #0xa]
+ b _02233EAE
+_02233EA8:
+ ldrb r0, [r2, #0xa]
+ add r0, r0, #1
+ strb r0, [r2, #0xa]
+_02233EAE:
+ ldrb r0, [r2, #8]
+ ldr r1, [r2]
+ ldr r3, [r2, #0x10]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ asr r1, r3, #7
+ lsr r1, r1, #0x18
+ add r1, r3, r1
+ ldr r3, [r2, #0x14]
+ add r0, #0xb4
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ lsl r1, r1, #8
+ lsl r2, r2, #8
+ ldr r0, [r0]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ pop {r4, pc}
+_02233ED8:
+ ldr r0, [r2, #4]
+ mov r1, #1
+ strb r1, [r0]
+ add r0, r2, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+
+ thumb_func_start MOD12_02233EEC
+MOD12_02233EEC: ; 0x02233EEC
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _02233F00
+ bl ErrorHandling
+_02233F00:
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02233F70 ; =0x000080ED
+ mov r2, #0x2e
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x18]
+ ldr r1, [r5, #0x1c]
+ mov r3, #0x14
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02233F70 ; =0x000080ED
+ mov r2, #0x2e
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x18]
+ ldr r1, [r5, #0x1c]
+ mov r3, #0x13
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02233F70 ; =0x000080ED
+ mov r2, #0x2e
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x18]
+ ldr r1, [r5, #0x1c]
+ mov r3, #0x12
+ bl FUN_0200C13C
+ ldr r0, [r5, #0x18]
+ ldr r1, [r5, #0x1c]
+ ldr r2, _02233F74 ; =0x02245370
+ bl FUN_0200C154
+ add r1, r5, #0
+ add r1, #0xc0
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_0200C59C
+ lsl r1, r4, #5
+ add r5, #0xc0
+ add r1, #0x60
+ lsl r1, r1, #0x10
+ ldr r0, [r5]
+ asr r1, r1, #0x10
+ mov r2, #0x38
+ bl FUN_0200C714
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02233F70: .word 0x000080ED
+_02233F74: .word 0x02245370
+
+ thumb_func_start MOD12_02233F78
+MOD12_02233F78: ; 0x02233F78
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x1c]
+ ldr r1, _02233FA8 ; =0x000080ED
+ bl FUN_0200C358
+ ldr r0, [r4, #0x1c]
+ ldr r1, _02233FA8 ; =0x000080ED
+ bl FUN_0200C378
+ ldr r0, [r4, #0x1c]
+ ldr r1, _02233FA8 ; =0x000080ED
+ bl FUN_0200C388
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ bl FUN_0200C3DC
+ mov r0, #0
+ add r4, #0xc0
+ str r0, [r4]
+ pop {r4, pc}
+ nop
+_02233FA8: .word 0x000080ED
+
+ thumb_func_start MOD12_02233FAC
+MOD12_02233FAC: ; 0x02233FAC
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #1
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r2, _02233FF4 ; =0x000080EE
+ mov r3, #0x11
+ str r2, [sp, #8]
+ mov r2, #0x2e
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02233FF4 ; =0x000080EE
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x10
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02233FF4 ; =0x000080EE
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0xf
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_02233FF4: .word 0x000080EE
+
+ thumb_func_start MOD12_02233FF8
+MOD12_02233FF8: ; 0x02233FF8
+ push {r4, lr}
+ ldr r1, _02234014 ; =0x000080EE
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _02234014 ; =0x000080EE
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _02234014 ; =0x000080EE
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_02234014: .word 0x000080EE
+
+ thumb_func_start MOD12_02234018
+MOD12_02234018: ; 0x02234018
+ push {r4, r5, r6, lr}
+ mov r2, #0x18
+ mov r4, #0
+ mul r2, r1
+ add r5, r0, r2
+ add r6, r4, #0
+_02234024:
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02234038
+ bl FUN_0200C3DC
+ add r0, r5, #0
+ add r0, #0xc4
+ str r6, [r0]
+_02234038:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _02234024
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02234044
+MOD12_02234044: ; 0x02234044
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_0223404A:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD12_02234018
+ add r4, r4, #1
+ cmp r4, #4
+ blt _0223404A
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223405C
+MOD12_0223405C: ; 0x0223405C
+ push {r4, r5, r6, lr}
+ add r5, r2, #0
+ ldr r2, _02234084 ; =0x022453A4
+ add r4, r3, #0
+ bl FUN_0200C154
+ add r6, r0, #0
+ ldr r0, [r6]
+ bl FUN_0200C59C
+ lsl r1, r5, #0x10
+ lsl r2, r4, #0x10
+ add r0, r6, #0
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02234084: .word 0x022453A4
+
+ thumb_func_start MOD12_02234088
+MOD12_02234088: ; 0x02234088
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r0, [sp]
+ add r7, r1, #0
+ add r0, r3, #0
+ mov r1, #0xa
+ str r2, [sp, #4]
+ bl _s32_div_f
+ str r0, [sp, #8]
+ cmp r0, #0x18
+ ble _022340A4
+ mov r0, #0x18
+ str r0, [sp, #8]
+_022340A4:
+ mov r0, #0x18
+ add r1, r7, #0
+ mul r1, r0
+ ldr r0, [sp]
+ ldr r4, [sp, #8]
+ mov r6, #0
+ add r5, r0, r1
+ b _022340CE
+_022340B4:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022340CC
+ bl FUN_0200C3DC
+ lsl r0, r4, #2
+ add r0, r5, r0
+ add r0, #0xc4
+ str r6, [r0]
+_022340CC:
+ add r4, r4, #1
+_022340CE:
+ cmp r4, #6
+ blt _022340B4
+ ldr r0, [sp, #8]
+ add r1, r7, #0
+ sub r4, r0, #1
+ mov r0, #0x18
+ mul r1, r0
+ ldr r0, [sp]
+ add r7, r0, r1
+ ldr r0, [sp, #4]
+ ldr r1, _02234190 ; =0x02245228
+ lsl r0, r0, #2
+ str r0, [sp, #0xc]
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ b _02234170
+_022340EE:
+ add r0, r4, #0
+ mov r1, #6
+ bl _s32_div_f
+ add r5, r1, #0
+ add r0, r4, #0
+ mov r1, #6
+ bl _s32_div_f
+ str r0, [sp, #0x14]
+ lsl r0, r5, #2
+ add r0, r7, r0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0223414C
+ ldr r3, _02234190 ; =0x02245228
+ ldr r2, [sp, #0xc]
+ ldr r0, [sp]
+ ldrsh r3, [r3, r2]
+ lsl r2, r5, #3
+ ldr r1, [sp]
+ add r2, r3, r2
+ ldr r6, [sp, #0x10]
+ mov r3, #2
+ ldrsh r3, [r6, r3]
+ ldr r0, [r0, #0x18]
+ ldr r1, [r1, #0x1c]
+ bl MOD12_0223405C
+ lsl r2, r5, #2
+ add r1, r7, r2
+ add r1, #0xc4
+ str r0, [r1]
+ add r0, r7, r2
+ add r0, #0xc4
+ ldr r0, [r0]
+ ldr r1, [sp, #0x14]
+ bl FUN_0200C5C0
+ lsl r0, r5, #2
+ add r0, r7, r0
+ add r0, #0xc4
+ ldr r0, [r0]
+ bl MOD12_0223419C
+ b _0223416E
+_0223414C:
+ bl FUN_0200C5CC
+ ldr r1, [sp, #0x14]
+ cmp r0, r1
+ bhs _0223416E
+ lsl r0, r5, #2
+ add r0, r7, r0
+ add r0, #0xc4
+ ldr r0, [r0]
+ bl FUN_0200C5C0
+ lsl r0, r5, #2
+ add r0, r7, r0
+ add r0, #0xc4
+ ldr r0, [r0]
+ bl MOD12_0223419C
+_0223416E:
+ sub r4, r4, #1
+_02234170:
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bgt _022340EE
+ ldr r0, _02234194 ; =0x000006E1
+ bl FUN_020054C8
+ ldr r2, [sp, #8]
+ ldr r0, _02234194 ; =0x000006E1
+ sub r2, r2, #1
+ ldr r1, _02234198 ; =0x0000FFFF
+ lsl r2, r2, #6
+ bl FUN_02004D34
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02234190: .word 0x02245228
+_02234194: .word 0x000006E1
+_02234198: .word 0x0000FFFF
+
+ thumb_func_start MOD12_0223419C
+MOD12_0223419C: ; 0x0223419C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x15
+ mov r1, #0x10
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x10
+ add r4, r0, #0
+ bl MI_CpuFill8
+ add r0, r5, #0
+ mov r1, #0
+ str r5, [r4]
+ bl FUN_0200C644
+ ldr r0, _022341C8 ; =MOD12_022341D0
+ ldr r2, _022341CC ; =0x00009C40
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022341C8: .word MOD12_022341D0
+_022341CC: .word 0x00009C40
+
+ thumb_func_start MOD12_022341D0
+MOD12_022341D0: ; 0x022341D0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #0
+ beq _022341E6
+ cmp r0, #1
+ beq _02234202
+ cmp r0, #2
+ beq _0223423C
+ b _0223428A
+_022341E6:
+ ldr r0, [r4]
+ mov r1, #2
+ bl FUN_0200C840
+ ldr r0, _022342A0 ; =0x3DCCCCCD
+ mov r1, #1
+ str r0, [r4, #4]
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ bl FUN_0200C644
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02234202:
+ ldr r0, [r4, #4]
+ ldr r1, _022342A4 ; =0x3E99999A
+ bl _fadd
+ str r0, [r4, #4]
+ ldr r0, [r4, #8]
+ ldr r1, _022342A4 ; =0x3E99999A
+ bl _fadd
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ bl FUN_0200C884
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_0200C8BC
+ mov r1, #0xff
+ ldr r0, [r4, #4]
+ lsl r1, r1, #0x16
+ bl _fgeq
+ blo _0223429E
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223423C:
+ ldr r0, [r4, #4]
+ ldr r1, _022342A4 ; =0x3E99999A
+ bl _fsub
+ str r0, [r4, #4]
+ ldr r0, [r4, #8]
+ ldr r1, _022342A4 ; =0x3E99999A
+ bl _fsub
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ bl FUN_0200C884
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_0200C8BC
+ mov r1, #0xfe
+ ldr r0, [r4, #4]
+ lsl r1, r1, #0x16
+ bl _fleq
+ bhi _0223429E
+ mov r1, #0xfe
+ lsl r1, r1, #0x16
+ ldr r0, [r4]
+ add r2, r1, #0
+ bl FUN_0200C884
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_0200C898
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223428A:
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_0200C840
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0223429E:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022342A0: .word 0x3DCCCCCD
+_022342A4: .word 0x3E99999A
+
+ thumb_func_start MOD12_022342A8
+MOD12_022342A8: ; 0x022342A8
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #1
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r2, _0223432C ; =0x000080F0
+ mov r3, #0x1a
+ str r2, [sp, #8]
+ mov r2, #0x2e
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223432C ; =0x000080F0
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x19
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223432C ; =0x000080F0
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x18
+ bl FUN_0200C13C
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02234330 ; =0x000080EF
+ add r1, r4, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x1d
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02234330 ; =0x000080EF
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x1c
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02234330 ; =0x000080EF
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x1b
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_0223432C: .word 0x000080F0
+_02234330: .word 0x000080EF
+
+ thumb_func_start MOD12_02234334
+MOD12_02234334: ; 0x02234334
+ push {r4, lr}
+ ldr r1, _02234368 ; =0x000080F0
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _02234368 ; =0x000080F0
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _02234368 ; =0x000080F0
+ add r0, r4, #0
+ bl FUN_0200C388
+ ldr r1, _0223436C ; =0x000080EF
+ add r0, r4, #0
+ bl FUN_0200C358
+ ldr r1, _0223436C ; =0x000080EF
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _0223436C ; =0x000080EF
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_02234368: .word 0x000080F0
+_0223436C: .word 0x000080EF
+
+ thumb_func_start MOD12_02234370
+MOD12_02234370: ; 0x02234370
+ push {r3, r4, r5, r6, r7, lr}
+ mov r2, #0x14
+ mov r4, #0
+ mul r2, r1
+ mov r7, #0x49
+ add r5, r0, r2
+ add r6, r4, #0
+ lsl r7, r7, #2
+_02234380:
+ ldr r0, [r5, r7]
+ cmp r0, #0
+ beq _02234390
+ bl FUN_0200C3DC
+ mov r0, #0x49
+ lsl r0, r0, #2
+ str r6, [r5, r0]
+_02234390:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _02234380
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223439C
+MOD12_0223439C: ; 0x0223439C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_022343A2:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD12_02234370
+ add r4, r4, #1
+ cmp r4, #3
+ blt _022343A2
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022343B4
+MOD12_022343B4: ; 0x022343B4
+ push {r4, r5, r6, lr}
+ add r5, r2, #0
+ ldr r2, _022343DC ; =0x02245308
+ add r4, r3, #0
+ bl FUN_0200C154
+ add r6, r0, #0
+ ldr r0, [r6]
+ bl FUN_0200C59C
+ lsl r1, r5, #0x10
+ lsl r2, r4, #0x10
+ add r0, r6, #0
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ nop
+_022343DC: .word 0x02245308
+
+ thumb_func_start MOD12_022343E0
+MOD12_022343E0: ; 0x022343E0
+ push {r4, r5, r6, lr}
+ add r5, r2, #0
+ ldr r2, _02234408 ; =0x02245238
+ add r4, r3, #0
+ bl FUN_0200C154
+ add r6, r0, #0
+ ldr r0, [r6]
+ bl FUN_0200C59C
+ lsl r1, r5, #0x10
+ lsl r2, r4, #0x10
+ add r0, r6, #0
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02234408: .word 0x02245238
+
+ thumb_func_start MOD12_0223440C
+MOD12_0223440C: ; 0x0223440C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0x2e
+ ldrb r0, [r0]
+ cmp r0, #5
+ bls _0223441E
+ b _022345AC
+_0223441E:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223442A: ; jump table
+ .short _02234436 - _0223442A - 2 ; case 0
+ .short _0223447C - _0223442A - 2 ; case 1
+ .short _022344BC - _0223442A - 2 ; case 2
+ .short _022344EC - _0223442A - 2 ; case 3
+ .short _0223452A - _0223442A - 2 ; case 4
+ .short _0223457C - _0223442A - 2 ; case 5
+_02234436:
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_0200C840
+ mov r0, #2
+ ldr r1, [r4, #0x10]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [r4, #0x20]
+ mov r0, #0x12
+ ldr r1, [r4, #0x14]
+ lsl r0, r0, #0xa
+ add r0, r1, r0
+ str r0, [r4, #0x24]
+ ldr r1, [r4, #0x20]
+ ldr r0, [r4, #0x10]
+ sub r0, r1, r0
+ mov r1, #0xa
+ bl _s32_div_f
+ strh r0, [r4, #0x28]
+ ldr r1, [r4, #0x24]
+ ldr r0, [r4, #0x14]
+ sub r0, r1, r0
+ mov r1, #0xa
+ bl _s32_div_f
+ strh r0, [r4, #0x2a]
+ add r0, r4, #0
+ add r0, #0x2e
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x2e
+ strb r1, [r0]
+_0223447C:
+ mov r1, #0x28
+ ldrsh r0, [r4, r1]
+ ldr r2, [r4, #0x10]
+ add r0, r2, r0
+ str r0, [r4, #0x10]
+ mov r0, #0x2a
+ ldrsh r0, [r4, r0]
+ ldr r2, [r4, #0x14]
+ add r0, r2, r0
+ str r0, [r4, #0x14]
+ ldrsh r2, [r4, r1]
+ cmp r2, #0
+ ble _0223449E
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x20]
+ cmp r1, r0
+ bge _022344AC
+_0223449E:
+ cmp r2, #0
+ bge _022344AA
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x20]
+ cmp r1, r0
+ ble _022344AC
+_022344AA:
+ b _022345D0
+_022344AC:
+ add r0, r4, #0
+ add r0, #0x2e
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x2e
+ strb r1, [r0]
+ b _022345D0
+_022344BC:
+ add r0, r4, #0
+ add r0, #0x2f
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x2f
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x2f
+ ldrb r0, [r0]
+ cmp r0, #3
+ bls _022345D0
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x2f
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x2e
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x2e
+ strb r1, [r0]
+ b _022345D0
+_022344EC:
+ add r0, r4, #0
+ add r0, #0x2c
+ ldrb r0, [r0]
+ lsl r0, r0, #8
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ add r0, #0x2d
+ ldrb r0, [r0]
+ lsl r0, r0, #8
+ str r0, [r4, #0x24]
+ ldr r1, [r4, #0x20]
+ ldr r0, [r4, #0x10]
+ sub r0, r1, r0
+ mov r1, #6
+ bl _s32_div_f
+ strh r0, [r4, #0x28]
+ ldr r1, [r4, #0x24]
+ ldr r0, [r4, #0x14]
+ sub r0, r1, r0
+ mov r1, #6
+ bl _s32_div_f
+ strh r0, [r4, #0x2a]
+ add r0, r4, #0
+ add r0, #0x2e
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x2e
+ strb r1, [r0]
+_0223452A:
+ mov r1, #0x28
+ ldrsh r0, [r4, r1]
+ ldr r2, [r4, #0x10]
+ add r0, r2, r0
+ str r0, [r4, #0x10]
+ mov r0, #0x2a
+ ldrsh r0, [r4, r0]
+ ldr r2, [r4, #0x14]
+ add r0, r2, r0
+ str r0, [r4, #0x14]
+ ldrsh r2, [r4, r1]
+ cmp r2, #0
+ ble _0223454C
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x20]
+ cmp r1, r0
+ bge _02234558
+_0223454C:
+ cmp r2, #0
+ bge _022345D0
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x20]
+ cmp r1, r0
+ bgt _022345D0
+_02234558:
+ add r0, r4, #0
+ add r0, #0x2c
+ ldrb r0, [r0]
+ lsl r0, r0, #8
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ add r0, #0x2d
+ ldrb r0, [r0]
+ lsl r0, r0, #8
+ str r0, [r4, #0x14]
+ add r0, r4, #0
+ add r0, #0x2e
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x2e
+ strb r1, [r0]
+ b _022345D0
+_0223457C:
+ add r0, r4, #0
+ add r0, #0x2f
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x2f
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x2f
+ ldrb r0, [r0]
+ cmp r0, #2
+ bls _022345D0
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x2f
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x2e
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x2e
+ strb r1, [r0]
+ b _022345D0
+_022345AC:
+ ldr r0, [r4, #4]
+ bl FUN_0200C3DC
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl FUN_0200C644
+ mov r0, #0x6e
+ lsl r0, r0, #4
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+_022345D0:
+ mov r1, #2
+ ldr r0, [r4, #4]
+ lsl r1, r1, #0xc
+ bl FUN_0200C8BC
+ ldr r2, [r4, #0x10]
+ ldr r3, [r4, #0x14]
+ asr r1, r2, #7
+ lsr r1, r1, #0x18
+ add r1, r2, r1
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ lsl r1, r1, #8
+ lsl r2, r2, #8
+ ldr r0, [r4, #4]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022345FC
+MOD12_022345FC: ; 0x022345FC
+ push {r4, r5, r6, lr}
+ mov r2, #0x14
+ mul r2, r1
+ mov r6, #0x49
+ mov r4, #0
+ add r5, r0, r2
+ lsl r6, r6, #2
+_0223460A:
+ ldr r0, [r5, r6]
+ cmp r0, #0
+ beq _0223461C
+ bl FUN_0200C658
+ cmp r0, #0
+ bne _0223461C
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0223461C:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _0223460A
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_02234628
+MOD12_02234628: ; 0x02234628
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r4, r2, #0
+ str r0, [sp, #0x1c]
+ str r1, [sp]
+ add r0, r4, #0
+ mov r1, #0xa
+ bl _s32_div_f
+ str r0, [sp, #4]
+ cmp r0, #5
+ ble _02234644
+ bl ErrorHandling
+_02234644:
+ ldr r0, [sp]
+ mov r1, #0x14
+ lsl r7, r0, #2
+ ldr r0, _02234770 ; =0x022451F4
+ mov r5, #0
+ add r0, r0, r7
+ str r0, [sp, #0xc]
+ ldr r0, [sp]
+ mul r1, r0
+ ldr r0, [sp, #0x1c]
+ add r0, r0, r1
+ str r0, [sp, #8]
+ ldr r0, _02234774 ; =0x02245200
+ add r0, r0, r7
+ str r0, [sp, #0x10]
+ ldr r0, [sp]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x14]
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ b _02234738
+_02234672:
+ ldr r0, [sp, #8]
+ lsl r2, r5, #2
+ add r1, r0, r2
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ bne _02234736
+ ldr r3, _02234770 ; =0x022451F4
+ ldr r0, [sp, #0x1c]
+ ldrsh r3, [r3, r7]
+ add r2, r5, r2
+ ldr r4, [sp, #0xc]
+ ldr r1, [sp, #0x1c]
+ add r2, r3, r2
+ mov r3, #2
+ ldrsh r3, [r4, r3]
+ ldr r0, [r0, #0x18]
+ ldr r1, [r1, #0x1c]
+ bl MOD12_022343B4
+ ldr r1, [sp, #8]
+ lsl r2, r5, #2
+ add r2, r1, r2
+ mov r1, #0x49
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ add r0, r1, #0
+ ldr r0, [r2, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ mov r0, #0x15
+ mov r1, #0x34
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x34
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp, #0x1c]
+ lsl r1, r5, #2
+ str r0, [r4]
+ ldr r0, [sp, #8]
+ ldr r2, _02234774 ; =0x02245200
+ add r1, r0, r1
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r6, [sp, #0x10]
+ str r0, [r4, #8]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x1c]
+ mov r3, #2
+ ldrsh r2, [r2, r7]
+ ldrsh r3, [r6, r3]
+ ldr r0, [r0, #0x18]
+ ldr r1, [r1, #0x1c]
+ bl MOD12_022343E0
+ str r0, [r4, #4]
+ ldr r0, _02234774 ; =0x02245200
+ ldr r1, [sp, #0x10]
+ ldrsh r0, [r0, r7]
+ ldr r2, _02234778 ; =0x00009C40
+ lsl r0, r0, #8
+ str r0, [r4, #0x10]
+ mov r0, #2
+ ldrsh r0, [r1, r0]
+ lsl r0, r0, #8
+ str r0, [r4, #0x14]
+ ldr r0, _02234770 ; =0x022451F4
+ ldrsh r1, [r0, r7]
+ lsl r0, r5, #2
+ add r0, r5, r0
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x2c
+ strb r1, [r0]
+ ldr r1, [sp, #0xc]
+ mov r0, #2
+ ldrsh r1, [r1, r0]
+ add r0, r4, #0
+ add r0, #0x2d
+ strb r1, [r0]
+ add r1, r4, #0
+ ldr r0, [sp, #0x14]
+ add r1, #0x30
+ strb r0, [r1]
+ add r1, r4, #0
+ ldr r0, [sp, #0x18]
+ add r1, #0x31
+ strb r0, [r1]
+ ldr r0, _0223477C ; =MOD12_0223440C
+ add r1, r4, #0
+ bl FUN_0200CA44
+_02234736:
+ add r5, r5, #1
+_02234738:
+ ldr r0, [sp, #4]
+ cmp r5, r0
+ blt _02234672
+ ldr r0, [sp]
+ mov r1, #0x14
+ mul r1, r0
+ ldr r0, [sp, #0x1c]
+ mov r7, #0x49
+ lsl r7, r7, #2
+ add r4, r0, r1
+ add r6, r7, #0
+ b _02234768
+_02234750:
+ lsl r0, r5, #2
+ add r0, r4, r0
+ ldr r0, [r0, r6]
+ cmp r0, #0
+ beq _02234766
+ bl FUN_0200C3DC
+ lsl r0, r5, #2
+ add r1, r4, r0
+ mov r0, #0
+ str r0, [r1, r7]
+_02234766:
+ add r5, r5, #1
+_02234768:
+ cmp r5, #5
+ blt _02234750
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02234770: .word 0x022451F4
+_02234774: .word 0x02245200
+_02234778: .word 0x00009C40
+_0223477C: .word MOD12_0223440C
+
+ thumb_func_start MOD12_02234780
+MOD12_02234780: ; 0x02234780
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r1, #0
+ str r0, [sp]
+ cmp r2, #1
+ bne _02234790
+ mov r6, #1
+ b _02234792
+_02234790:
+ mov r6, #0
+_02234792:
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp]
+ str r0, [sp, #8]
+ str r0, [sp, #4]
+_0223479C:
+ ldr r5, [sp]
+ mov r4, #0
+_022347A0:
+ add r0, r5, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022347BC
+ add r1, r7, #0
+ bl FUN_0200C90C
+ add r0, r5, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ add r1, r6, #0
+ bl FUN_0200C644
+_022347BC:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _022347A0
+ mov r1, #0x5b
+ ldr r0, [sp, #8]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ beq _022347E4
+ add r1, r7, #0
+ bl FUN_0200C90C
+ mov r1, #0x5b
+ ldr r0, [sp, #8]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ add r1, r6, #0
+ bl FUN_0200C644
+_022347E4:
+ mov r1, #0x63
+ ldr r0, [sp, #4]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ add r1, r7, #0
+ bl FUN_02011AF0
+ mov r1, #0x77
+ ldr r0, [sp, #4]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ add r1, r7, #0
+ bl FUN_02011AF0
+ mov r1, #0x63
+ ldr r0, [sp, #4]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ add r1, r6, #0
+ bl FUN_020119D0
+ mov r1, #0x77
+ ldr r0, [sp, #4]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ add r1, r6, #0
+ bl FUN_020119D0
+ ldr r0, [sp]
+ add r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ add r0, r0, #4
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ add r0, #0x14
+ str r0, [sp, #4]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+ cmp r0, #4
+ blt _0223479C
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_0223483C
+MOD12_0223483C: ; 0x0223483C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ mov r0, #0
+ strb r0, [r7]
+ mov r0, #0x15
+ mov r1, #0x10
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x10
+ bl MI_CpuFill8
+ str r5, [r4]
+ mov r2, #0xfa
+ strb r6, [r4, #0xd]
+ ldr r0, _02234870 ; =MOD12_02234874
+ add r1, r4, #0
+ lsl r2, r2, #2
+ str r7, [r4, #4]
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02234870: .word MOD12_02234874
+
+ thumb_func_start MOD12_02234874
+MOD12_02234874: ; 0x02234874
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #3
+ bls _02234882
+ b _022349B8
+_02234882:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223488E: ; jump table
+ .short _02234896 - _0223488E - 2 ; case 0
+ .short _022348F2 - _0223488E - 2 ; case 1
+ .short _02234926 - _0223488E - 2 ; case 2
+ .short _0223497A - _0223488E - 2 ; case 3
+_02234896:
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0
+ bne _022348BE
+ mov r0, #1
+ lsl r0, r0, #0xc
+ strh r0, [r4, #8]
+ mov r1, #0
+ strh r1, [r4, #0xa]
+ ldr r0, _022349D0 ; =0x04000050
+ str r1, [sp]
+ mov r2, #0xe
+ mov r3, #0x10
+ bl G2x_SetBlendAlpha_
+ mov r1, #1
+ ldr r0, [r4]
+ add r2, r1, #0
+ bl MOD12_02234780
+ b _022348E0
+_022348BE:
+ mov r3, #0
+ mov r0, #1
+ strh r3, [r4, #8]
+ lsl r0, r0, #0xc
+ strh r0, [r4, #0xa]
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _022349D0 ; =0x04000050
+ mov r1, #4
+ mov r2, #0xe
+ bl G2x_SetBlendAlpha_
+ ldr r0, [r4]
+ mov r1, #0
+ mov r2, #1
+ bl MOD12_0222DF30
+_022348E0:
+ ldr r0, _022349D4 ; =MOD12_022349D8
+ add r1, r4, #0
+ mov r2, #0xa
+ bl FUN_0200CA98
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_022348F2:
+ ldrb r1, [r4, #0xd]
+ cmp r1, #0
+ bne _02234912
+ mov r0, #8
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bne _02234912
+ mov r1, #0
+ ldr r0, [r4]
+ add r2, r1, #0
+ bl MOD12_02234780
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02234912:
+ cmp r1, #1
+ bne _022349CE
+ mov r0, #0xa
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bne _022349CE
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02234926:
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0
+ bne _02234946
+ mov r0, #1
+ lsl r0, r0, #0xc
+ strh r0, [r4, #8]
+ mov r0, #0
+ strh r0, [r4, #0xa]
+ str r0, [sp]
+ ldr r0, _022349D0 ; =0x04000050
+ mov r1, #4
+ mov r2, #0xe
+ mov r3, #0x10
+ bl G2x_SetBlendAlpha_
+ b _02234968
+_02234946:
+ mov r1, #0
+ mov r0, #1
+ strh r1, [r4, #8]
+ lsl r0, r0, #0xc
+ strh r0, [r4, #0xa]
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _022349D0 ; =0x04000050
+ mov r2, #0xe
+ add r3, r1, #0
+ bl G2x_SetBlendAlpha_
+ mov r1, #1
+ ldr r0, [r4]
+ add r2, r1, #0
+ bl MOD12_02234780
+_02234968:
+ ldr r0, _022349D4 ; =MOD12_022349D8
+ add r1, r4, #0
+ mov r2, #0xa
+ bl FUN_0200CA98
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223497A:
+ ldrb r1, [r4, #0xd]
+ cmp r1, #0
+ bne _0223499A
+ mov r0, #8
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bne _0223499A
+ mov r1, #1
+ ldr r0, [r4]
+ add r2, r1, #0
+ bl MOD12_0222DF30
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223499A:
+ cmp r1, #1
+ bne _022349CE
+ mov r0, #0xa
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ bne _022349CE
+ ldr r0, [r4]
+ mov r1, #0
+ mov r2, #1
+ bl MOD12_02234780
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_022349B8:
+ bl MOD12_02233560
+ ldr r0, [r4, #4]
+ mov r1, #1
+ strb r1, [r0]
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_022349CE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022349D0: .word 0x04000050
+_022349D4: .word MOD12_022349D8
+
+ thumb_func_start MOD12_022349D8
+MOD12_022349D8: ; 0x022349D8
+ push {r3, r4, r5, lr}
+ ldrb r3, [r1, #0xd]
+ mov r2, #0
+ cmp r3, #0
+ bne _02234A10
+ mov r4, #8
+ ldrsh r5, [r1, r4]
+ lsl r3, r4, #8
+ sub r3, r5, r3
+ strh r3, [r1, #8]
+ mov r3, #0xa
+ ldrsh r5, [r1, r3]
+ lsl r3, r4, #8
+ add r3, r5, r3
+ strh r3, [r1, #0xa]
+ ldrsh r3, [r1, r4]
+ cmp r3, #0
+ bgt _02234A00
+ strh r2, [r1, #8]
+ add r2, r2, #1
+_02234A00:
+ mov r3, #0xa
+ ldrsh r4, [r1, r3]
+ mov r3, #1
+ lsl r3, r3, #0xc
+ cmp r4, r3
+ blt _02234A3C
+ strh r3, [r1, #0xa]
+ b _02234A3C
+_02234A10:
+ mov r4, #8
+ ldrsh r5, [r1, r4]
+ lsl r3, r4, #8
+ add r3, r5, r3
+ strh r3, [r1, #8]
+ mov r3, #0xa
+ ldrsh r5, [r1, r3]
+ lsl r3, r4, #8
+ sub r3, r5, r3
+ strh r3, [r1, #0xa]
+ ldrsh r5, [r1, r4]
+ lsl r3, r4, #9
+ cmp r5, r3
+ blt _02234A30
+ strh r3, [r1, #8]
+ add r2, r2, #1
+_02234A30:
+ mov r3, #0xa
+ ldrsh r3, [r1, r3]
+ cmp r3, #0
+ bgt _02234A3C
+ mov r3, #0
+ strh r3, [r1, #0xa]
+_02234A3C:
+ mov r3, #8
+ ldrsh r3, [r1, r3]
+ asr r4, r3, #8
+ mov r3, #0xa
+ ldrsh r3, [r1, r3]
+ mov r1, #0xff
+ bic r3, r1
+ orr r3, r4
+ ldr r1, _02234A5C ; =0x04000052
+ cmp r2, #0
+ strh r3, [r1]
+ ble _02234A58
+ bl FUN_0200CAB4
+_02234A58:
+ pop {r3, r4, r5, pc}
+ nop
+_02234A5C: .word 0x04000052
+
+ thumb_func_start MOD12_02234A60
+MOD12_02234A60: ; 0x02234A60
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r1, #0
+ add r4, r0, #0
+ add r5, r2, #0
+ add r6, r3, #0
+ cmp r7, #2
+ blt _02234A78
+ cmp r5, #0
+ bne _02234A78
+ bl ErrorHandling
+_02234A78:
+ cmp r7, #0x1c
+ bls _02234A7E
+ b _02234EF2
+_02234A7E:
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02234A8A: ; jump table
+ .short _02234EF6 - _02234A8A - 2 ; case 0
+ .short _02234AC4 - _02234A8A - 2 ; case 1
+ .short _02234AE2 - _02234A8A - 2 ; case 2
+ .short _02234AFC - _02234A8A - 2 ; case 3
+ .short _02234B16 - _02234A8A - 2 ; case 4
+ .short _02234B24 - _02234A8A - 2 ; case 5
+ .short _02234B38 - _02234A8A - 2 ; case 6
+ .short _02234B50 - _02234A8A - 2 ; case 7
+ .short _02234B80 - _02234A8A - 2 ; case 8
+ .short _02234BA4 - _02234A8A - 2 ; case 9
+ .short _02234BD0 - _02234A8A - 2 ; case 10
+ .short _02234BFE - _02234A8A - 2 ; case 11
+ .short _02234C2E - _02234A8A - 2 ; case 12
+ .short _02234C52 - _02234A8A - 2 ; case 13
+ .short _02234C7E - _02234A8A - 2 ; case 14
+ .short _02234CAE - _02234A8A - 2 ; case 15
+ .short _02234CD2 - _02234A8A - 2 ; case 16
+ .short _02234CF6 - _02234A8A - 2 ; case 17
+ .short _02234D16 - _02234A8A - 2 ; case 18
+ .short _02234D3A - _02234A8A - 2 ; case 19
+ .short _02234D64 - _02234A8A - 2 ; case 20
+ .short _02234D8E - _02234A8A - 2 ; case 21
+ .short _02234DAC - _02234A8A - 2 ; case 22
+ .short _02234DD6 - _02234A8A - 2 ; case 23
+ .short _02234E04 - _02234A8A - 2 ; case 24
+ .short _02234E32 - _02234A8A - 2 ; case 25
+ .short _02234E54 - _02234A8A - 2 ; case 26
+ .short _02234E7E - _02234A8A - 2 ; case 27
+ .short _02234EB6 - _02234A8A - 2 ; case 28
+_02234AC4:
+ mov r0, #0xca
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234AE2:
+ ldrb r0, [r5]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234AFC:
+ ldrb r0, [r5, #1]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234B16:
+ ldrh r2, [r5, #2]
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200AD5C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234B24:
+ mov r1, #0
+ str r1, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ ldrb r2, [r5, #4]
+ ldr r0, [r4, #0x54]
+ bl FUN_0200AD38
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234B38:
+ ldrb r2, [r5, #5]
+ ldr r3, [r4, #0xc]
+ ldr r0, [r4, #0x54]
+ lsl r2, r2, #3
+ add r2, r3, r2
+ add r2, #0xd0
+ ldrh r2, [r2]
+ mov r1, #0
+ bl FUN_0200B244
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234B50:
+ ldrb r0, [r5]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200ACF8
+ ldrb r0, [r5, #1]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234B80:
+ ldrb r0, [r5]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200ACF8
+ ldrh r2, [r5, #2]
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200AD5C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234BA4:
+ ldrb r0, [r5]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200ACF8
+ mov r0, #0
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldrb r2, [r5, #4]
+ ldr r0, [r4, #0x54]
+ add r3, r1, #0
+ bl FUN_0200AD38
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234BD0:
+ ldrb r0, [r5]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200ACF8
+ ldrb r2, [r5, #5]
+ ldr r3, [r4, #0xc]
+ ldr r0, [r4, #0x54]
+ lsl r2, r2, #3
+ add r2, r3, r2
+ add r2, #0xd0
+ ldrh r2, [r2]
+ mov r1, #1
+ bl FUN_0200B244
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234BFE:
+ ldrb r0, [r5, #1]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200ACF8
+ ldrb r0, [r5]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234C2E:
+ ldrb r0, [r5, #1]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200ACF8
+ ldrh r2, [r5, #2]
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200AD5C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234C52:
+ ldrb r0, [r5, #1]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200ACF8
+ mov r0, #0
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldrb r2, [r5, #4]
+ ldr r0, [r4, #0x54]
+ add r3, r1, #0
+ bl FUN_0200AD38
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234C7E:
+ ldrb r0, [r5, #1]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200ACF8
+ ldrb r0, [r5]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234CAE:
+ ldrh r2, [r5, #2]
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200AD5C
+ ldrb r0, [r5]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234CD2:
+ ldrh r2, [r5, #2]
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200AD5C
+ ldrb r0, [r5, #1]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234CF6:
+ ldrh r2, [r5, #2]
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200AD5C
+ mov r0, #0
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldrb r2, [r5, #4]
+ ldr r0, [r4, #0x54]
+ add r3, r1, #0
+ bl FUN_0200AD38
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234D16:
+ ldrh r2, [r5, #2]
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200AD5C
+ ldrb r0, [r5]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234D3A:
+ mov r1, #0
+ str r1, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ ldrb r2, [r5, #4]
+ ldr r0, [r4, #0x54]
+ bl FUN_0200AD38
+ ldrb r0, [r5]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234D64:
+ mov r1, #0
+ str r1, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ ldrb r2, [r5, #4]
+ ldr r0, [r4, #0x54]
+ bl FUN_0200AD38
+ ldrb r0, [r5, #1]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234D8E:
+ mov r1, #0
+ str r1, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ ldrb r2, [r5, #4]
+ ldr r0, [r4, #0x54]
+ bl FUN_0200AD38
+ ldrh r2, [r5, #2]
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200AD5C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234DAC:
+ mov r1, #0
+ str r1, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ ldrb r2, [r5, #4]
+ ldr r0, [r4, #0x54]
+ bl FUN_0200AD38
+ ldrb r0, [r5]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234DD6:
+ ldrb r2, [r5, #5]
+ ldr r3, [r4, #0xc]
+ ldr r0, [r4, #0x54]
+ lsl r2, r2, #3
+ add r2, r3, r2
+ add r2, #0xd0
+ ldrh r2, [r2]
+ mov r1, #0
+ bl FUN_0200B244
+ ldrb r0, [r5]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234E04:
+ ldrb r2, [r5, #5]
+ ldr r3, [r4, #0xc]
+ ldr r0, [r4, #0x54]
+ lsl r2, r2, #3
+ add r2, r3, r2
+ add r2, #0xd0
+ ldrh r2, [r2]
+ mov r1, #0
+ bl FUN_0200B244
+ ldrb r0, [r5, #1]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234E32:
+ ldrb r2, [r5, #5]
+ ldr r3, [r4, #0xc]
+ ldr r0, [r4, #0x54]
+ lsl r2, r2, #3
+ add r2, r3, r2
+ add r2, #0xd0
+ ldrh r2, [r2]
+ mov r1, #0
+ bl FUN_0200B244
+ ldrh r2, [r5, #2]
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ bl FUN_0200AD5C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234E54:
+ ldrb r2, [r5, #5]
+ ldr r3, [r4, #0xc]
+ ldr r0, [r4, #0x54]
+ lsl r2, r2, #3
+ add r2, r3, r2
+ add r2, #0xd0
+ ldrh r2, [r2]
+ mov r1, #0
+ bl FUN_0200B244
+ mov r0, #0
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldrb r2, [r5, #4]
+ ldr r0, [r4, #0x54]
+ add r3, r1, #0
+ bl FUN_0200AD38
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234E7E:
+ ldrb r0, [r5]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_0200ACF8
+ ldrb r2, [r5, #5]
+ ldr r3, [r4, #0xc]
+ ldr r0, [r4, #0x54]
+ lsl r2, r2, #3
+ add r2, r3, r2
+ add r2, #0xd0
+ ldrh r2, [r2]
+ mov r1, #1
+ bl FUN_0200B244
+ ldrh r2, [r5, #2]
+ ldr r0, [r4, #0x54]
+ mov r1, #2
+ bl FUN_0200AD5C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234EB6:
+ ldrb r2, [r6]
+ ldr r3, [r4, #0xc]
+ ldr r0, [r4, #0x54]
+ lsl r2, r2, #3
+ add r2, r3, r2
+ add r2, #0xd0
+ ldrh r2, [r2]
+ mov r1, #0
+ bl FUN_0200B244
+ mov r5, #0
+_02234ECC:
+ add r0, r6, r5
+ ldrb r0, [r0, #1]
+ cmp r0, #4
+ beq _02234EF6
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r4, #0x54]
+ add r1, r5, #1
+ bl FUN_0200ACF8
+ add r5, r5, #1
+ cmp r5, #4
+ blt _02234ECC
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02234EF2:
+ bl ErrorHandling
+_02234EF6:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02234EFC
+MOD12_02234EFC: ; 0x02234EFC
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x34
+ mov r1, #0xff
+ bl FUN_02019620
+ add r4, #0x34
+ add r0, r4, #0
+ bl FUN_020191D0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02234F14
+MOD12_02234F14: ; 0x02234F14
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [sp, #0x30]
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp, #0xc]
+ cmp r0, #1
+ bne _02234F2A
+ mov r4, #0
+ b _02234F42
+_02234F2A:
+ ldr r1, [r5]
+ ldr r0, _02234FA8 ; =0x00000171
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _02234F40
+ ldr r0, _02234FAC ; =0x00001988
+ ldr r0, [r1, r0]
+ bl FUN_02024FF4
+ add r4, r0, #0
+ b _02234F42
+_02234F40:
+ mov r4, #1
+_02234F42:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl FUN_0200A914
+ add r6, r0, #0
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x2c]
+ add r0, r5, #0
+ bl MOD12_02234A60
+ ldr r0, [r5, #0x54]
+ ldr r1, [r5, #0x58]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r5, #0
+ add r0, #0x34
+ mov r1, #0xff
+ bl FUN_02019620
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r5, #0
+ ldr r2, [r5, #0x58]
+ add r0, #0x34
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ strb r0, [r5, r1]
+ cmp r4, #0
+ bne _02234F96
+ mov r0, #0xff
+ strb r0, [r5, r1]
+ add r0, r5, #0
+ add r0, #0x34
+ bl FUN_020191D0
+_02234F96:
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl FUN_02017B48
+ add r0, r6, #0
+ bl FUN_02021A20
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02234FA8: .word 0x00000171
+_02234FAC: .word 0x00001988
+
+ thumb_func_start MOD12_02234FB0
+MOD12_02234FB0: ; 0x02234FB0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r7, r0, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ cmp r5, #0x2f
+ blo _02234FC4
+ bl ErrorHandling
+_02234FC4:
+ ldr r0, _02234FE4 ; =0x0224540F
+ lsl r3, r5, #2
+ ldrb r0, [r0, r3]
+ str r4, [sp]
+ ldr r2, _02234FE8 ; =0x0224540C
+ str r6, [sp, #4]
+ str r0, [sp, #8]
+ ldr r4, _02234FEC ; =0x0224540E
+ ldrh r2, [r2, r3]
+ ldrb r3, [r4, r3]
+ ldr r1, [r7, #0x44]
+ add r0, r7, #0
+ bl MOD12_02234F14
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02234FE4: .word 0x0224540F
+_02234FE8: .word 0x0224540C
+_02234FEC: .word 0x0224540E
+
+ thumb_func_start MOD12_02234FF0
+MOD12_02234FF0: ; 0x02234FF0
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ add r5, r3, #0
+ add r0, r1, #0
+ add r1, r2, #0
+ add r2, sp, #0x10
+ add r3, sp, #0xc
+ bl FUN_02083170
+ ldr r0, [sp, #0x20]
+ str r5, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r1, [r4, #0x50]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ add r0, r4, #0
+ bl MOD12_02234F14
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02235020
+MOD12_02235020: ; 0x02235020
+ push {r3, lr}
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ cmp r0, #0xff
+ bne _02235030
+ mov r0, #0
+ pop {r3, pc}
+_02235030:
+ bl FUN_0201BD70
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02235038
+MOD12_02235038: ; 0x02235038
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #0xc
+ mov r1, #0x15
+ bl FUN_020219F4
+ str r0, [sp, #0x30]
+ lsl r0, r4, #2
+ ldr r1, [r5, #0xc]
+ str r0, [sp, #0x2c]
+ ldr r0, [r1, r0]
+ ldr r2, [sp, #0x30]
+ mov r1, #0x76
+ bl FUN_020671BC
+ ldr r1, [r5]
+ ldr r0, _022350E8 ; =0x00000123
+ ldrb r0, [r1, r0]
+ cmp r4, r0
+ bne _02235068
+ ldr r6, _022350EC ; =0x00010200
+ b _0223506A
+_02235068:
+ ldr r6, _022350F0 ; =0x00050600
+_0223506A:
+ mov r0, #0x14
+ add r7, r4, #0
+ mul r7, r0
+ mov r0, #0x77
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r0, r0, r7
+ str r0, [sp]
+ ldr r0, [sp, #0x30]
+ mov r1, #0
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ str r6, [sp, #0xc]
+ ldr r0, _022350F4 ; =0x000080ED
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x18]
+ str r1, [sp, #0x1c]
+ str r1, [sp, #0x20]
+ str r1, [sp, #0x24]
+ mov r0, #0xf
+ str r0, [sp, #0x28]
+ ldr r1, [r5, #0x30]
+ ldr r2, [r5, #0x28]
+ ldr r3, [r5, #0x60]
+ mov r0, #0x15
+ bl MOD12_02231380
+ mov r0, #0x63
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r0, r0, r7
+ str r0, [sp]
+ ldr r1, [r5]
+ ldr r0, [sp, #0x2c]
+ add r0, r1, r0
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r1, #0
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ str r6, [sp, #0xc]
+ ldr r0, _022350F4 ; =0x000080ED
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x18]
+ str r1, [sp, #0x1c]
+ str r1, [sp, #0x20]
+ str r1, [sp, #0x24]
+ mov r0, #0xf
+ str r0, [sp, #0x28]
+ ldr r1, [r5, #0x30]
+ ldr r2, [r5, #0x28]
+ ldr r3, [r5, #0x60]
+ mov r0, #0x15
+ bl MOD12_02231380
+ ldr r0, [sp, #0x30]
+ bl FUN_02021A20
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022350E8: .word 0x00000123
+_022350EC: .word 0x00010200
+_022350F0: .word 0x00050600
+_022350F4: .word 0x000080ED
+
+ thumb_func_start MOD12_022350F8
+MOD12_022350F8: ; 0x022350F8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_022350FE:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD12_02235038
+ add r4, r4, #1
+ cmp r4, #4
+ blt _022350FE
+ add r0, r5, #0
+ bl MOD12_0223513C
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_02235114
+MOD12_02235114: ; 0x02235114
+ push {r4, r5, r6, lr}
+ mov r1, #0x77
+ lsl r1, r1, #2
+ add r4, r0, r1
+ sub r1, #0x50
+ mov r6, #0
+ add r5, r0, r1
+_02235122:
+ add r0, r4, #0
+ bl MOD12_0223147C
+ add r0, r5, #0
+ bl MOD12_0223147C
+ add r6, r6, #1
+ add r4, #0x14
+ add r5, #0x14
+ cmp r6, #4
+ blt _02235122
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223513C
+MOD12_0223513C: ; 0x0223513C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ mov r1, #0x77
+ lsl r1, r1, #2
+ str r0, [sp]
+ add r0, r0, r1
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ sub r1, #0x50
+ add r0, r0, r1
+ mov r4, #0
+ mov r6, #0xc
+ mov r5, #0x1c
+ str r0, [sp, #8]
+_02235158:
+ ldr r0, [sp]
+ add r2, r6, #0
+ add r1, r0, r4
+ ldr r0, _02235190 ; =0x00000231
+ mov r3, #0
+ ldrb r1, [r1, r0]
+ mov r0, #0x14
+ add r7, r1, #0
+ mul r7, r0
+ ldr r0, [sp, #4]
+ mov r1, #1
+ add r0, r0, r7
+ bl MOD12_02231490
+ ldr r0, [sp, #8]
+ mov r1, #1
+ add r0, r0, r7
+ add r2, r5, #0
+ mov r3, #0
+ bl MOD12_02231490
+ add r4, r4, #1
+ add r6, #0x30
+ add r5, #0x30
+ cmp r4, #4
+ blt _02235158
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02235190: .word 0x00000231
+
+ thumb_func_start MOD12_02235194
+MOD12_02235194: ; 0x02235194
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #1
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r2, _022351DC ; =0x000080F1
+ mov r3, #0x17
+ str r2, [sp, #8]
+ mov r2, #0x2e
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _022351DC ; =0x000080F1
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x16
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _022351DC ; =0x000080F1
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x15
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_022351DC: .word 0x000080F1
+
+ thumb_func_start MOD12_022351E0
+MOD12_022351E0: ; 0x022351E0
+ push {r4, lr}
+ ldr r1, _022351FC ; =0x000080F1
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _022351FC ; =0x000080F1
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _022351FC ; =0x000080F1
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_022351FC: .word 0x000080F1
+
+ thumb_func_start MOD12_02235200
+MOD12_02235200: ; 0x02235200
+ push {r3, r4, r5, r6, r7, lr}
+ add r3, r0, #0
+ mov r0, #0x16
+ add r6, r1, #0
+ lsl r0, r0, #4
+ lsl r5, r6, #2
+ add r4, r3, r0
+ ldr r0, [r4, r5]
+ add r7, r2, #0
+ cmp r0, #0
+ bne _02235222
+ ldr r0, [r3, #0x18]
+ ldr r1, [r3, #0x1c]
+ ldr r2, _02235248 ; =0x0224526C
+ bl FUN_0200C154
+ str r0, [r4, r5]
+_02235222:
+ ldr r0, [r4, r5]
+ add r1, r7, #0
+ bl FUN_0200C5C0
+ mov r2, #0x30
+ mul r2, r6
+ add r2, #0x2a
+ lsl r2, r2, #0x10
+ ldr r0, [r4, r5]
+ mov r1, #0x40
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ ldr r0, [r4, r5]
+ ldr r0, [r0]
+ bl FUN_0200C59C
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02235248: .word 0x0224526C
+
+ thumb_func_start MOD12_0223524C
+MOD12_0223524C: ; 0x0223524C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ mov r7, #0x16
+ add r5, r0, #0
+ add r6, r4, #0
+ lsl r7, r7, #4
+_02235258:
+ ldr r0, [r5, r7]
+ cmp r0, #0
+ beq _02235268
+ bl FUN_0200C3DC
+ mov r0, #0x16
+ lsl r0, r0, #4
+ str r6, [r5, r0]
+_02235268:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02235258
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02235274
+MOD12_02235274: ; 0x02235274
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #6
+ bl MI_CpuFill8
+ lsl r0, r6, #1
+ add r1, r5, r0
+ ldr r0, _0223529C ; =0x00000236
+ strb r6, [r4]
+ ldrh r1, [r1, r0]
+ add r0, #8
+ strh r1, [r4, #2]
+ add r1, r5, r6
+ ldrb r0, [r1, r0]
+ strb r0, [r4, #5]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223529C: .word 0x00000236
+
+ thumb_func_start MOD12_022352A0
+MOD12_022352A0: ; 0x022352A0
+ strb r0, [r2]
+ cmp r1, #0
+ bgt _022352AA
+ mov r0, #0x1f
+ bx lr
+_022352AA:
+ cmp r1, #0x14
+ bgt _022352B2
+ mov r0, #0x20
+ bx lr
+_022352B2:
+ cmp r1, #0x32
+ bgt _022352BA
+ mov r0, #0x21
+ bx lr
+_022352BA:
+ cmp r1, #0x5a
+ bgt _022352C2
+ mov r0, #0x22
+ bx lr
+_022352C2:
+ mov r0, #0x23
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_022352C8
+MOD12_022352C8: ; 0x022352C8
+ push {r4, lr}
+ mov r1, #0x32
+ bl _s32_div_f
+ cmp r0, #4
+ blo _022352D6
+ mov r0, #3
+_022352D6:
+ lsl r1, r0, #2
+ ldr r0, _022352F0 ; =0x02245218
+ ldr r4, [r0, r1]
+ cmp r4, #0
+ bge _022352E4
+ bl ErrorHandling
+_022352E4:
+ cmp r4, #0x7f
+ ble _022352EC
+ bl ErrorHandling
+_022352EC:
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+_022352F0: .word 0x02245218
+
+ thumb_func_start MOD12_022352F4
+MOD12_022352F4: ; 0x022352F4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ ldr r0, [sp, #0x1c]
+ mov r1, #0
+ strb r1, [r0]
+ mov r0, #0x15
+ mov r1, #0x14
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x14
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp, #0x1c]
+ str r5, [r4]
+ str r0, [r4, #0x10]
+ strb r7, [r4, #0xd]
+ ldr r0, [sp]
+ strb r6, [r4, #0xb]
+ str r0, [r4, #4]
+ ldr r0, [sp, #0x18]
+ ldr r2, _02235334 ; =0x00000BB8
+ strb r0, [r4, #0xe]
+ ldr r0, _02235338 ; =MOD12_0223533C
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02235334: .word 0x00000BB8
+_02235338: .word MOD12_0223533C
+
+ thumb_func_start MOD12_0223533C
+MOD12_0223533C: ; 0x0223533C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _02235354
+ cmp r0, #1
+ beq _02235376
+ cmp r0, #2
+ beq _022353A6
+ b _0223541C
+_02235354:
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0
+ beq _02235362
+ sub r0, r0, #1
+ add sp, #0x10
+ strb r0, [r4, #0xd]
+ pop {r3, r4, r5, pc}
+_02235362:
+ ldr r0, _02235468 ; =0x000006E5
+ bl FUN_020054C8
+ ldr r0, _02235468 ; =0x000006E5
+ ldr r1, [r4, #4]
+ bl FUN_0200488C
+ ldrb r0, [r4, #8]
+ add r0, r0, #1
+ strb r0, [r4, #8]
+_02235376:
+ ldrb r0, [r4, #9]
+ cmp r0, #0
+ bne _02235380
+ mov r1, #0
+ b _02235382
+_02235380:
+ mov r1, #2
+_02235382:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x15
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x2d
+ ldr r2, [r2, #0x30]
+ mov r3, #3
+ bl FUN_020068C8
+ ldrb r0, [r4, #8]
+ add sp, #0x10
+ add r0, r0, #1
+ strb r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_022353A6:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ ldrb r0, [r4, #0xc]
+ cmp r0, #2
+ bls _022353DE
+ mov r0, #0
+ strb r0, [r4, #0xc]
+ ldrb r1, [r4, #9]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r4, #9]
+ ldrb r0, [r4, #8]
+ sub r0, r0, #1
+ strb r0, [r4, #8]
+ ldrb r0, [r4, #9]
+ cmp r0, #0
+ bne _022353DE
+ ldrb r0, [r4, #0xa]
+ add r0, r0, #1
+ strb r0, [r4, #0xa]
+ ldrb r0, [r4, #0xa]
+ cmp r0, #2
+ bls _022353DE
+ mov r0, #0xff
+ add sp, #0x10
+ strb r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_022353DE:
+ ldrb r0, [r4, #0xe]
+ cmp r0, #1
+ bne _02235464
+ ldrb r0, [r4, #0xb]
+ mov r1, #0x32
+ lsl r0, r0, #4
+ bl _s32_div_f
+ mov r1, #0xf
+ ldrsb r2, [r4, r1]
+ cmp r2, r0
+ bge _02235464
+ add r2, r2, #2
+ strb r2, [r4, #0xf]
+ ldrsb r1, [r4, r1]
+ cmp r1, r0
+ ble _02235402
+ strb r0, [r4, #0xf]
+_02235402:
+ ldrb r0, [r4, #0xf]
+ mov r1, #0
+ mov r2, #1
+ str r0, [sp]
+ ldr r0, _0223546C ; =0x0000237E
+ mov r3, #2
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x5c]
+ bl FUN_020039E8
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_0223541C:
+ ldrb r0, [r4, #0xe]
+ cmp r0, #1
+ bne _02235452
+ mov r0, #0xf
+ ldrsb r1, [r4, r0]
+ cmp r1, #0
+ beq _02235452
+ sub r1, r1, #2
+ strb r1, [r4, #0xf]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bge _02235438
+ mov r0, #0
+ strb r0, [r4, #0xf]
+_02235438:
+ ldrb r0, [r4, #0xf]
+ mov r1, #0
+ mov r2, #1
+ str r0, [sp]
+ ldr r0, _0223546C ; =0x0000237E
+ mov r3, #2
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x5c]
+ bl FUN_020039E8
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_02235452:
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ strb r1, [r0]
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02235464:
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02235468: .word 0x000006E5
+_0223546C: .word 0x0000237E
+
+ thumb_func_start MOD12_02235470
+MOD12_02235470: ; 0x02235470
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r3, #0
+ ldr r3, [sp, #0x38]
+ add r6, sp, #0x1c
+ str r3, [sp, #0x38]
+ mov r3, #0
+ str r3, [sp, #8]
+ strb r3, [r5]
+ mov r3, #0x30
+ mul r3, r2
+ ldr r2, [sp, #8]
+ str r3, [sp, #0x10]
+ add r3, #0x18
+ str r2, [sp, #4]
+ str r2, [sp, #0xc]
+ mov r2, #0x18
+ mul r2, r1
+ add r7, r0, r2
+ add r0, r3, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r3, [sp, #0x10]
+ str r0, [sp, #0x18]
+_022354A0:
+ add r0, r7, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _022354AC
+ b _0223560C
+_022354AC:
+ ldrb r1, [r5]
+ cmp r1, #0
+ bne _02235576
+ add r1, sp, #0x20
+ add r1, #2
+ add r2, sp, #0x20
+ bl FUN_0200C7A0
+ mov r0, #4
+ ldrsh r1, [r6, r0]
+ ldr r0, [sp, #0x10]
+ sub r1, r1, r0
+ bpl _022354C8
+ neg r1, r1
+_022354C8:
+ mov r0, #6
+ ldrsh r0, [r6, r0]
+ sub r0, #0x28
+ bpl _022354D2
+ neg r0, r0
+_022354D2:
+ bl FUN_020799F4
+ lsl r0, r0, #8
+ str r0, [sp, #8]
+ mov r0, #6
+ ldrsh r0, [r6, r0]
+ sub r0, #0x28
+ bl _fflt
+ str r0, [sp, #0x14]
+ mov r0, #4
+ ldrsh r1, [r6, r0]
+ ldr r0, [sp, #0x10]
+ sub r0, r1, r0
+ bl _fflt
+ add r4, r0, #0
+ ldr r0, [sp, #0x14]
+ mov r1, #0
+ bl _fgr
+ ldr r0, _02235620 ; =0x45800000
+ bls _02235514
+ ldr r1, [sp, #0x14]
+ bl _fmul
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ str r0, [sp]
+ b _02235524
+_02235514:
+ ldr r1, [sp, #0x14]
+ bl _fmul
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+ str r0, [sp]
+_02235524:
+ add r0, r4, #0
+ mov r1, #0
+ bl _fgr
+ ldr r0, _02235620 ; =0x45800000
+ bls _02235542
+ add r1, r4, #0
+ bl _fmul
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _02235550
+_02235542:
+ add r1, r4, #0
+ bl _fmul
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_02235550:
+ bl _ffix
+ add r4, r0, #0
+ ldr r0, [sp]
+ bl _ffix
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FX_Atan2
+ ldr r1, _02235624 ; =0x00008CA0
+ mul r1, r0
+ add r0, r1, #0
+ ldr r1, _02235628 ; =0x0000FFFF
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+_02235576:
+ mov r0, #0x15
+ mov r1, #0x28
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x28
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp, #0x38]
+ add r1, r4, #0
+ str r0, [r4, #4]
+ add r0, r7, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ add r1, #0x21
+ str r0, [r4, #8]
+ ldr r0, [sp, #8]
+ add r2, sp, #0x1c
+ str r0, [r4, #0x10]
+ ldr r0, [sp, #4]
+ strh r0, [r4, #0x1e]
+ mov r0, #2
+ lsl r0, r0, #0xa
+ str r0, [r4, #0x14]
+ mov r0, #0x28
+ strb r0, [r1]
+ add r1, r4, #0
+ ldr r0, [sp, #0x18]
+ add r1, #0x22
+ strb r0, [r1]
+ str r5, [r4, #0xc]
+ mov r0, #6
+ ldrsh r1, [r6, r0]
+ add r0, r4, #0
+ add r0, #0x23
+ strb r1, [r0]
+ mov r0, #4
+ ldrsh r1, [r6, r0]
+ add r0, r4, #0
+ add r0, #0x24
+ strb r1, [r0]
+ add r0, r7, #0
+ add r0, #0xd0
+ add r1, sp, #0x1c
+ ldr r0, [r0]
+ add r1, #2
+ bl FUN_0200C7A0
+ mov r0, #6
+ ldrsh r1, [r6, r0]
+ mov r0, #2
+ ldrsh r0, [r6, r0]
+ sub r0, r1, r0
+ bpl _022355E6
+ neg r0, r0
+_022355E6:
+ ldrb r2, [r5]
+ lsl r0, r0, #8
+ lsl r1, r2, #1
+ add r1, r2, r1
+ bl _s32_div_f
+ strh r0, [r4, #0x1c]
+ mov r0, #2
+ ldrsh r0, [r6, r0]
+ ldr r2, _0223562C ; =0x00009C40
+ add r1, r4, #0
+ lsl r0, r0, #8
+ str r0, [r4, #0x18]
+ ldr r0, _02235630 ; =MOD12_02235634
+ bl FUN_0200CA44
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+_0223560C:
+ ldr r0, [sp, #0xc]
+ add r7, r7, #4
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+ cmp r0, #6
+ bge _0223561A
+ b _022354A0
+_0223561A:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02235620: .word 0x45800000
+_02235624: .word 0x00008CA0
+_02235628: .word 0x0000FFFF
+_0223562C: .word 0x00009C40
+_02235630: .word MOD12_02235634
+
+ thumb_func_start MOD12_02235634
+MOD12_02235634: ; 0x02235634
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _0223564C
+ cmp r0, #1
+ beq _02235696
+ b _02235778
+_0223564C:
+ ldrh r0, [r5, #0x1c]
+ ldr r1, [r5, #0x18]
+ sub r1, r1, r0
+ add r0, r5, #0
+ str r1, [r5, #0x18]
+ add r0, #0x23
+ ldrb r0, [r0]
+ lsl r0, r0, #8
+ cmp r1, r0
+ bgt _02235670
+ str r0, [r5, #0x18]
+ add r0, r5, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x20
+ strb r1, [r0]
+_02235670:
+ add r1, sp, #0xc
+ ldr r0, [r5, #8]
+ add r1, #2
+ add r2, sp, #0xc
+ bl FUN_0200C7A0
+ ldr r0, [r5, #0x18]
+ add r3, sp, #0xc
+ asr r0, r0, #8
+ strh r0, [r3, #2]
+ mov r1, #2
+ mov r2, #0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ ldr r0, [r5, #8]
+ bl FUN_0200C714
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_02235696:
+ ldrh r2, [r5, #0x1e]
+ ldr r1, [r5, #0x14]
+ add r0, r5, #0
+ add r1, r2, r1
+ strh r1, [r5, #0x1e]
+ ldrh r2, [r5, #0x1e]
+ ldr r1, _022357A4 ; =0x00008CA0
+ add r0, #0x1e
+ cmp r2, r1
+ blo _022356B0
+ ldrh r2, [r0]
+ sub r1, r2, r1
+ strh r1, [r0]
+_022356B0:
+ mov r0, #3
+ ldr r1, [r5, #0x10]
+ lsl r0, r0, #8
+ cmp r1, r0
+ bls _022356BE
+ sub r0, r1, r0
+ b _022356C0
+_022356BE:
+ mov r0, #0
+_022356C0:
+ str r0, [r5, #0x10]
+ mov r0, #2
+ ldr r1, [r5, #0x10]
+ lsl r0, r0, #8
+ cmp r1, r0
+ bhi _022356DA
+ add r0, r5, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x20
+ strb r1, [r0]
+_022356DA:
+ ldr r0, [r5, #0x10]
+ mov r1, #0x64
+ lsr r4, r0, #8
+ ldrh r0, [r5, #0x1e]
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0201B954
+ str r0, [sp]
+ lsl r6, r4, #0xc
+ ldrh r0, [r5, #0x1e]
+ mov r1, #0x64
+ asr r7, r6, #0x1f
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0201B93C
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ add r2, r6, #0
+ asr r1, r0, #0x1f
+ add r3, r7, #0
+ bl _ll_mul
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ add r4, r1, #0
+ asr r1, r0, #0x1f
+ add r2, r6, #0
+ add r3, r7, #0
+ bl _ll_mul
+ mov r3, #2
+ add r2, r1, #0
+ add r1, r5, #0
+ add r7, r0, #0
+ add r1, #0x21
+ ldr r6, [sp, #8]
+ lsl r3, r3, #0xa
+ add r6, r6, r3
+ ldr r3, _022357A8 ; =0x00000000
+ ldrb r1, [r1]
+ adc r4, r3
+ lsl r3, r4, #0x14
+ lsr r4, r6, #0xc
+ orr r4, r3
+ asr r3, r4, #0xb
+ lsr r3, r3, #0x14
+ add r3, r4, r3
+ asr r3, r3, #0xc
+ add r1, r1, r3
+ mov r4, #2
+ ldr r0, [r5, #8]
+ lsl r1, r1, #0x10
+ add r5, #0x22
+ lsl r4, r4, #0xa
+ asr r1, r1, #0x10
+ ldrb r3, [r5]
+ add r5, r7, r4
+ ldr r4, _022357A8 ; =0x00000000
+ adc r2, r4
+ lsl r2, r2, #0x14
+ lsr r4, r5, #0xc
+ orr r4, r2
+ asr r2, r4, #0xb
+ lsr r2, r2, #0x14
+ add r2, r4, r2
+ asr r2, r2, #0xc
+ add r2, r3, r2
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_02235778:
+ ldr r0, [r5, #8]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, _022357AC ; =0x000005E1
+ bl FUN_020054C8
+ ldr r0, [r5, #4]
+ bl MOD12_02233638
+ ldr r1, [r5, #0xc]
+ ldrb r0, [r1]
+ sub r0, r0, #1
+ strb r0, [r1]
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022357A4: .word 0x00008CA0
+_022357A8: .word 0x00000000
+_022357AC: .word 0x000005E1
+
+ thumb_func_start MOD12_022357B0
+MOD12_022357B0: ; 0x022357B0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x15
+ mov r1, #0xc
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0xc
+ add r4, r0, #0
+ bl MI_CpuFill8
+ str r5, [r4]
+ ldr r0, _022357DC ; =MOD12_022357F8
+ ldr r2, _022357E0 ; =0x00009C40
+ add r1, r4, #0
+ strb r6, [r4, #8]
+ bl FUN_0200CA44
+ str r0, [r4, #4]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022357DC: .word MOD12_022357F8
+_022357E0: .word 0x00009C40
+
+ thumb_func_start MOD12_022357E4
+MOD12_022357E4: ; 0x022357E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022357F8
+MOD12_022357F8: ; 0x022357F8
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ mov r7, #0x13
+ add r6, r1, #0
+ add r5, r4, #0
+ lsl r7, r7, #4
+_02235804:
+ ldrb r2, [r6, #8]
+ mov r1, #0x14
+ ldr r0, [r6]
+ mul r1, r2
+ add r0, r0, r1
+ add r0, r5, r0
+ ldr r0, [r0, r7]
+ cmp r0, #0
+ beq _0223581A
+ bl FUN_0200C5A8
+_0223581A:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _02235804
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_02235824
+MOD12_02235824: ; 0x02235824
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp]
+ mov r0, #0x30
+ mul r0, r2
+ add r0, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x14
+ add r2, r3, #0
+ mul r2, r1
+ ldr r1, [sp]
+ ldr r5, [sp, #0x20]
+ mov r7, #0
+ strb r7, [r5]
+ add r6, r1, r2
+ str r0, [sp, #4]
+_02235846:
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ beq _02235890
+ mov r0, #0x15
+ mov r1, #0x28
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x28
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ ldr r2, _0223589C ; =0x00009C40
+ str r0, [r4]
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r0, [r6, r0]
+ str r0, [r4, #4]
+ str r5, [r4, #8]
+ mov r0, #0x28
+ strb r0, [r4, #0xf]
+ ldr r0, [sp, #4]
+ strb r0, [r4, #0x10]
+ ldrb r1, [r5]
+ mov r0, #0xc
+ mul r0, r1
+ strh r0, [r4, #0x24]
+ ldr r0, _022358A0 ; =MOD12_022358A4
+ add r1, r4, #0
+ bl FUN_0200CA44
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+_02235890:
+ add r7, r7, #1
+ add r6, r6, #4
+ cmp r7, #5
+ blt _02235846
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223589C: .word 0x00009C40
+_022358A0: .word MOD12_022358A4
+
+ thumb_func_start MOD12_022358A4
+MOD12_022358A4: ; 0x022358A4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r1, #0
+ add r4, r0, #0
+ ldrb r0, [r5, #0xe]
+ cmp r0, #0
+ beq _022358BE
+ cmp r0, #1
+ beq _022358FE
+ cmp r0, #2
+ bne _022358BC
+ b _02235A26
+_022358BC:
+ b _02235A5E
+_022358BE:
+ mov r0, #0x24
+ ldrsh r0, [r5, r0]
+ cmp r0, #0
+ ble _022358CE
+ sub r0, r0, #1
+ add sp, #8
+ strh r0, [r5, #0x24]
+ pop {r3, r4, r5, r6, r7, pc}
+_022358CE:
+ add r1, sp, #4
+ ldr r0, [r5, #4]
+ add r1, #2
+ add r2, sp, #4
+ bl FUN_0200C7A0
+ add r2, sp, #4
+ mov r1, #0
+ ldrsh r0, [r2, r1]
+ add r0, r0, #6
+ strh r0, [r2]
+ mov r0, #2
+ ldrsh r0, [r2, r0]
+ lsl r0, r0, #8
+ str r0, [r5, #0x1c]
+ ldrsh r0, [r2, r1]
+ lsl r0, r0, #8
+ str r0, [r5, #0x20]
+ ldr r0, _02235A84 ; =0x000007F9
+ bl FUN_020054C8
+ ldrb r0, [r5, #0xe]
+ add r0, r0, #1
+ strb r0, [r5, #0xe]
+_022358FE:
+ ldrh r2, [r5, #0xc]
+ mov r1, #2
+ lsl r1, r1, #0xa
+ add r1, r2, r1
+ strh r1, [r5, #0xc]
+ ldrh r2, [r5, #0xc]
+ ldr r1, _02235A88 ; =0x00008CA0
+ add r0, r5, #0
+ add r0, #0xc
+ cmp r2, r1
+ blo _0223591A
+ ldrh r2, [r0]
+ sub r1, r2, r1
+ strh r1, [r0]
+_0223591A:
+ ldrh r0, [r5, #0xc]
+ mov r1, #0x64
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0201B93C
+ add r4, r0, #0
+ ldrh r0, [r5, #0xc]
+ mov r1, #0x64
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0201B954
+ add r6, r0, #0
+ ldr r0, [r5, #0x20]
+ mov r2, #3
+ add r0, #0x80
+ str r0, [r5, #0x20]
+ asr r1, r4, #0x1f
+ add r0, r4, #0
+ lsl r2, r2, #0xe
+ mov r3, #0
+ bl _ll_mul
+ mov r2, #6
+ str r0, [sp]
+ add r4, r1, #0
+ asr r1, r6, #0x1f
+ add r0, r6, #0
+ lsl r2, r2, #0xc
+ mov r3, #0
+ bl _ll_mul
+ add r2, r1, #0
+ ldr r1, [r5, #0x1c]
+ mov r6, #2
+ add r7, r0, #0
+ ldr r3, [sp]
+ lsl r6, r6, #0xa
+ asr r1, r1, #8
+ add r6, r3, r6
+ ldr r3, _02235A8C ; =0x00000000
+ ldr r0, [r5, #4]
+ adc r4, r3
+ lsl r3, r4, #0x14
+ lsr r4, r6, #0xc
+ orr r4, r3
+ asr r3, r4, #0xb
+ lsr r3, r3, #0x14
+ add r3, r4, r3
+ asr r3, r3, #0xc
+ add r1, r1, r3
+ ldr r3, [r5, #0x20]
+ mov r4, #2
+ lsl r1, r1, #0x10
+ ldr r6, _02235A8C ; =0x00000000
+ lsl r4, r4, #0xa
+ asr r1, r1, #0x10
+ asr r3, r3, #8
+ add r4, r7, r4
+ adc r2, r6
+ lsl r6, r2, #0x14
+ lsr r2, r4, #0xc
+ orr r2, r6
+ asr r4, r2, #0xb
+ lsr r4, r4, #0x14
+ add r4, r2, r4
+ asr r2, r4, #0xc
+ add r2, r3, r2
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ mov r0, #0x24
+ ldrsh r1, [r5, r0]
+ add r1, r1, #1
+ strh r1, [r5, #0x24]
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x50
+ ble _02235A80
+ mov r0, #0
+ strh r0, [r5, #0x24]
+ add r1, sp, #4
+ ldr r0, [r5, #4]
+ add r1, #2
+ add r2, sp, #4
+ bl FUN_0200C7A0
+ add r2, sp, #4
+ mov r0, #2
+ ldrsh r0, [r2, r0]
+ lsl r1, r0, #8
+ str r1, [r5, #0x1c]
+ mov r1, #0
+ ldrsh r6, [r2, r1]
+ lsl r1, r6, #8
+ str r1, [r5, #0x20]
+ ldrb r1, [r5, #0xf]
+ sub r0, r0, r1
+ bpl _022359EC
+ neg r0, r0
+_022359EC:
+ ldrb r1, [r5, #0x10]
+ lsl r0, r0, #8
+ sub r4, r6, r1
+ bpl _022359F6
+ neg r4, r4
+_022359F6:
+ mov r1, #3
+ lsl r1, r1, #8
+ str r1, [r5, #0x14]
+ bl _s32_div_f
+ add r1, r0, #0
+ lsl r0, r4, #8
+ bl _s32_div_f
+ str r0, [r5, #0x18]
+ ldrb r0, [r5, #0x10]
+ cmp r0, r6
+ bge _02235A16
+ ldr r0, [r5, #0x18]
+ neg r0, r0
+ str r0, [r5, #0x18]
+_02235A16:
+ ldr r0, _02235A90 ; =0x000006EA
+ bl FUN_020054C8
+ ldrb r0, [r5, #0xe]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r5, #0xe]
+ pop {r3, r4, r5, r6, r7, pc}
+_02235A26:
+ ldr r1, [r5, #0x1c]
+ ldr r0, [r5, #0x14]
+ sub r0, r1, r0
+ str r0, [r5, #0x1c]
+ ldr r1, [r5, #0x20]
+ ldr r0, [r5, #0x18]
+ add r0, r1, r0
+ str r0, [r5, #0x20]
+ ldrb r0, [r5, #0xf]
+ lsl r1, r0, #8
+ ldr r0, [r5, #0x1c]
+ cmp r0, r1
+ bgt _02235A48
+ str r1, [r5, #0x1c]
+ ldrb r0, [r5, #0xe]
+ add r0, r0, #1
+ strb r0, [r5, #0xe]
+_02235A48:
+ ldr r1, [r5, #0x1c]
+ ldr r2, [r5, #0x20]
+ lsl r1, r1, #8
+ lsl r2, r2, #8
+ ldr r0, [r5, #4]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02235A5E:
+ ldr r0, [r5, #4]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, _02235A94 ; =0x000005E1
+ bl FUN_020054C8
+ ldr r1, [r5, #8]
+ ldrb r0, [r1]
+ sub r0, r0, #1
+ strb r0, [r1]
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_02235A80:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02235A84: .word 0x000007F9
+_02235A88: .word 0x00008CA0
+_02235A8C: .word 0x00000000
+_02235A90: .word 0x000006EA
+_02235A94: .word 0x000005E1
+
+ thumb_func_start MOD12_02235A98
+MOD12_02235A98: ; 0x02235A98
+ push {r4}
+ sub sp, #0xc
+ ldr r3, _02235AC0 ; =0x022451D4
+ add r2, sp, #0
+ ldrh r4, [r3, #0x14]
+ add r1, sp, #0
+ lsl r0, r0, #1
+ strh r4, [r2]
+ ldrh r4, [r3, #0x16]
+ strh r4, [r2, #2]
+ ldrh r4, [r3, #0x18]
+ strh r4, [r2, #4]
+ ldrh r4, [r3, #0x1a]
+ ldrh r3, [r3, #0x1c]
+ strh r4, [r2, #6]
+ strh r3, [r2, #8]
+ ldrh r0, [r1, r0]
+ add sp, #0xc
+ pop {r4}
+ bx lr
+ .align 2, 0
+_02235AC0: .word 0x022451D4
+
+ thumb_func_start MOD12_02235AC4
+MOD12_02235AC4: ; 0x02235AC4
+ push {r4}
+ sub sp, #0xc
+ ldr r3, _02235AEC ; =0x022451D4
+ add r2, sp, #0
+ ldrh r4, [r3, #0xa]
+ add r1, sp, #0
+ lsl r0, r0, #1
+ strh r4, [r2]
+ ldrh r4, [r3, #0xc]
+ strh r4, [r2, #2]
+ ldrh r4, [r3, #0xe]
+ strh r4, [r2, #4]
+ ldrh r4, [r3, #0x10]
+ ldrh r3, [r3, #0x12]
+ strh r4, [r2, #6]
+ strh r3, [r2, #8]
+ ldrh r0, [r1, r0]
+ add sp, #0xc
+ pop {r4}
+ bx lr
+ .align 2, 0
+_02235AEC: .word 0x022451D4
+
+ thumb_func_start MOD12_02235AF0
+MOD12_02235AF0: ; 0x02235AF0
+ push {r4}
+ sub sp, #0xc
+ ldr r3, _02235B18 ; =0x022451D4
+ add r2, sp, #0
+ ldrh r4, [r3]
+ add r1, sp, #0
+ lsl r0, r0, #1
+ strh r4, [r2]
+ ldrh r4, [r3, #2]
+ strh r4, [r2, #2]
+ ldrh r4, [r3, #4]
+ strh r4, [r2, #4]
+ ldrh r4, [r3, #6]
+ ldrh r3, [r3, #8]
+ strh r4, [r2, #6]
+ strh r3, [r2, #8]
+ ldrh r0, [r1, r0]
+ add sp, #0xc
+ pop {r4}
+ bx lr
+ .align 2, 0
+_02235B18: .word 0x022451D4
+
+ thumb_func_start MOD12_02235B1C
+MOD12_02235B1C: ; 0x02235B1C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r3, #0
+ add r6, r0, #0
+ add r7, r1, #0
+ add r5, r2, #0
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0xc
+ bl MI_CpuFill8
+ strh r5, [r4, #4]
+ cmp r5, #0x8f
+ bgt _02235B52
+ bge _02235B8A
+ cmp r5, #0x4c
+ bgt _02235B44
+ bge _02235B8A
+ cmp r5, #0xd
+ beq _02235B8A
+ pop {r3, r4, r5, r6, r7, pc}
+_02235B44:
+ cmp r5, #0x77
+ bgt _02235B4C
+ beq _02235BC8
+ pop {r3, r4, r5, r6, r7, pc}
+_02235B4C:
+ cmp r5, #0x82
+ beq _02235B8A
+ pop {r3, r4, r5, r6, r7, pc}
+_02235B52:
+ ldr r1, _02235BE4 ; =0x0000010B
+ cmp r5, r1
+ bgt _02235B72
+ bge _02235BCE
+ cmp r5, #0xae
+ bgt _02235B62
+ beq _02235B9C
+ pop {r3, r4, r5, r6, r7, pc}
+_02235B62:
+ cmp r5, #0xda
+ bgt _02235BE2
+ cmp r5, #0xd8
+ blt _02235BE2
+ beq _02235B90
+ cmp r5, #0xda
+ beq _02235B96
+ pop {r3, r4, r5, r6, r7, pc}
+_02235B72:
+ add r0, r1, #0
+ add r0, #0xd
+ cmp r5, r0
+ bgt _02235B82
+ add r1, #0xd
+ cmp r5, r1
+ beq _02235BD4
+ pop {r3, r4, r5, r6, r7, pc}
+_02235B82:
+ add r1, #0xc8
+ cmp r5, r1
+ beq _02235BDA
+ pop {r3, r4, r5, r6, r7, pc}
+_02235B8A:
+ mov r0, #1
+ strb r0, [r4, #6]
+ pop {r3, r4, r5, r6, r7, pc}
+_02235B90:
+ mov r0, #0xff
+ strb r0, [r4, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+_02235B96:
+ mov r0, #0
+ strb r0, [r4, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+_02235B9C:
+ lsl r5, r7, #2
+ ldr r0, [r6, r5]
+ mov r1, #0xb0
+ mov r2, #0
+ bl FUN_020671BC
+ add r7, r0, #0
+ ldr r0, [r6, r5]
+ mov r1, #0xb1
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r7, #7
+ beq _02235BBC
+ cmp r0, #7
+ bne _02235BC2
+_02235BBC:
+ mov r0, #1
+ strb r0, [r4, #7]
+ pop {r3, r4, r5, r6, r7, pc}
+_02235BC2:
+ mov r0, #0
+ strb r0, [r4, #7]
+ pop {r3, r4, r5, r6, r7, pc}
+_02235BC8:
+ mov r0, #1
+ strh r0, [r4, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02235BCE:
+ mov r0, #0xa1
+ strh r0, [r4, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02235BD4:
+ mov r0, #1
+ strb r0, [r4, #7]
+ pop {r3, r4, r5, r6, r7, pc}
+_02235BDA:
+ mov r0, #1
+ strb r0, [r4, #6]
+ ldr r0, _02235BE8 ; =0x200400C0
+ str r0, [r4]
+_02235BE2:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02235BE4: .word 0x0000010B
+_02235BE8: .word 0x200400C0
+
+ thumb_func_start MOD12_02235BEC
+MOD12_02235BEC: ; 0x02235BEC
+ cmp r2, #0
+ bne _02235BF4
+ mov r0, #0
+ bx lr
+_02235BF4:
+ lsl r3, r1, #1
+ add r3, r0, r3
+ ldrh r3, [r3, #0x26]
+ cmp r2, r3
+ bne _02235C12
+ lsl r1, r1, #2
+ add r0, r0, r1
+ add r0, #0xe0
+ ldr r0, [r0]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r2, r0
+ beq _02235C12
+ mov r0, #0
+ bx lr
+_02235C12:
+ mov r0, #1
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02235C18
+MOD12_02235C18: ; 0x02235C18
+ push {r3, r4}
+ add r1, r0, r1
+ ldrb r4, [r1, #0xe]
+ mov r3, #0
+ add r2, r3, #0
+_02235C22:
+ add r1, r0, r2
+ ldrb r1, [r1, #0xe]
+ cmp r1, r4
+ bne _02235C2C
+ add r3, r3, #1
+_02235C2C:
+ add r2, r2, #1
+ cmp r2, #4
+ blt _02235C22
+ sub r0, r3, #1
+ pop {r3, r4}
+ bx lr
+
+ thumb_func_start MOD12_02235C38
+MOD12_02235C38: ; 0x02235C38
+ ldr r1, _02235C40 ; =0x022454C8
+ ldrb r0, [r1, r0]
+ bx lr
+ nop
+_02235C40: .word 0x022454C8
+
+ thumb_func_start MOD12_02235C44
+MOD12_02235C44: ; 0x02235C44
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ mov r1, #0xb
+ bl FUN_0206AB18
+ lsl r1, r4, #2
+ add r2, r4, r1
+ ldr r1, _02235C5C ; =0x022454E4
+ add r1, r1, r2
+ ldrsb r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_02235C5C: .word 0x022454E4
+
+ thumb_func_start MOD12_02235C60
+MOD12_02235C60: ; 0x02235C60
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r3, #0
+ mov lr, r0
+ add r2, sp, #8
+ add r1, sp, #4
+ add r7, r3, #0
+ add r0, sp, #0
+ mov r6, #0x1a
+ b _02235C9A
+_02235C74:
+ lsl r4, r3, #1
+ mov r5, lr
+ add r5, r5, r4
+ ldrsh r5, [r5, r6]
+ strb r3, [r1, r3]
+ strh r5, [r2, r4]
+ add r4, r7, #0
+ b _02235C94
+_02235C84:
+ mov r5, lr
+ add r5, r5, r4
+ ldrb r5, [r5, #1]
+ cmp r3, r5
+ bne _02235C92
+ strb r4, [r0, r3]
+ b _02235C98
+_02235C92:
+ add r4, r4, #1
+_02235C94:
+ cmp r4, #4
+ blt _02235C84
+_02235C98:
+ add r3, r3, #1
+_02235C9A:
+ cmp r3, #4
+ blt _02235C74
+ mov r3, #0
+ ldr r6, _02235D70 ; =0x022454D4
+ add r1, sp, #8
+ ldr r0, _02235D74 ; =0x022454CC
+ ldr r2, _02235D78 ; =0x022454DC
+ mov r7, #0x2c
+ b _02235CFC
+_02235CAC:
+ add r5, r3, #0
+ mul r5, r7
+ mov r4, lr
+ add r4, r4, r5
+ ldr r4, [r4, #0x58]
+ lsl r5, r4, #0x1a
+ lsr r5, r5, #0x1e
+ cmp r5, #3
+ bhi _02235CFA
+ add r5, r5, r5
+ add r5, pc
+ ldrh r5, [r5, #6]
+ lsl r5, r5, #0x10
+ asr r5, r5, #0x10
+ add pc, r5
+_02235CCA: ; jump table
+ .short _02235CFA - _02235CCA - 2 ; case 0
+ .short _02235CD2 - _02235CCA - 2 ; case 1
+ .short _02235CE0 - _02235CCA - 2 ; case 2
+ .short _02235CEE - _02235CCA - 2 ; case 3
+_02235CD2:
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x1e
+ lsl r4, r4, #1
+ ldrsh r5, [r2, r4]
+ lsl r4, r3, #1
+ strh r5, [r1, r4]
+ b _02235CFA
+_02235CE0:
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x1e
+ lsl r4, r4, #1
+ ldrsh r5, [r0, r4]
+ lsl r4, r3, #1
+ strh r5, [r1, r4]
+ b _02235CFA
+_02235CEE:
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x1e
+ lsl r4, r4, #1
+ ldrsh r5, [r6, r4]
+ lsl r4, r3, #1
+ strh r5, [r1, r4]
+_02235CFA:
+ add r3, r3, #1
+_02235CFC:
+ cmp r3, #4
+ blt _02235CAC
+ mov r3, #0
+ b _02235D52
+_02235D04:
+ mov r4, #3
+ add r2, sp, #8
+ add r7, sp, #0
+ b _02235D4C
+_02235D0C:
+ sub r1, r4, #1
+ lsl r0, r1, #1
+ lsl r5, r4, #1
+ ldrsh r0, [r2, r0]
+ ldrsh r5, [r2, r5]
+ cmp r0, r5
+ bgt _02235D26
+ cmp r0, r5
+ bne _02235D4A
+ ldrb r1, [r7, r1]
+ ldrb r0, [r7, r4]
+ cmp r1, r0
+ bhs _02235D4A
+_02235D26:
+ sub r0, r4, #1
+ lsl r1, r4, #1
+ lsl r5, r0, #1
+ mov ip, r5
+ ldrsh r6, [r2, r1]
+ ldrsh r5, [r2, r5]
+ strh r5, [r2, r1]
+ mov r1, ip
+ strh r6, [r2, r1]
+ add r1, sp, #4
+ ldrb r6, [r1, r4]
+ ldrb r5, [r1, r0]
+ strb r5, [r1, r4]
+ strb r6, [r1, r0]
+ ldrb r5, [r7, r4]
+ ldrb r1, [r7, r0]
+ strb r1, [r7, r4]
+ strb r5, [r7, r0]
+_02235D4A:
+ sub r4, r4, #1
+_02235D4C:
+ cmp r4, r3
+ bgt _02235D0C
+ add r3, r3, #1
+_02235D52:
+ cmp r3, #3
+ blt _02235D04
+ mov r3, #0
+ add r2, sp, #4
+ b _02235D66
+_02235D5C:
+ ldrb r1, [r2, r3]
+ mov r0, lr
+ add r0, r0, r3
+ strb r1, [r0, #1]
+ add r3, r3, #1
+_02235D66:
+ cmp r3, #4
+ blt _02235D5C
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02235D70: .word 0x022454D4
+_02235D74: .word 0x022454CC
+_02235D78: .word 0x022454DC
+
+ thumb_func_start MOD12_02235D7C
+MOD12_02235D7C: ; 0x02235D7C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r1, _02235DB4 ; =0x02245500
+ add r3, sp, #0
+ str r1, [sp]
+ mov r1, #0x16
+ strh r1, [r3, #4]
+ ldr r1, [r0]
+ ldr r2, _02235DB8 ; =0x00000123
+ ldrb r1, [r1, r2]
+ strb r1, [r3, #6]
+ sub r1, r2, #7
+ ldr r4, [r0]
+ add r2, #0x4e
+ ldrb r1, [r4, r1]
+ strb r1, [r3, #8]
+ ldr r1, [r0]
+ ldrb r1, [r1, r2]
+ strb r1, [r3, #7]
+ mov r1, #0xc3
+ lsl r1, r1, #4
+ add r0, r0, r1
+ add r1, sp, #0
+ bl MOD12_02240ED0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_02235DB4: .word 0x02245500
+_02235DB8: .word 0x00000123
+
+ thumb_func_start MOD12_02235DBC
+MOD12_02235DBC: ; 0x02235DBC
+ push {r3, lr}
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ mov r3, #0
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02235DD4
+MOD12_02235DD4: ; 0x02235DD4
+ push {r3, lr}
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r2, #0
+ mov r2, #0
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02235DE8
+MOD12_02235DE8: ; 0x02235DE8
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02235DEC
+MOD12_02235DEC: ; 0x02235DEC
+ push {r3, lr}
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ mov r3, #0
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02235E04
+MOD12_02235E04: ; 0x02235E04
+ push {r3, lr}
+ ldr r0, _02235E20 ; =0x00001650
+ mov r3, #1
+ strb r3, [r1, r0]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r2, #0
+ mov r2, #0
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ pop {r3, pc}
+ nop
+_02235E20: .word 0x00001650
+
+ thumb_func_start MOD12_02235E24
+MOD12_02235E24: ; 0x02235E24
+ push {r3, lr}
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ mov r3, #0
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02235E3C
+MOD12_02235E3C: ; 0x02235E3C
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ mov r0, #0x15
+ mov r1, #0x10
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x10
+ bl MI_CpuFill8
+ str r6, [r4]
+ ldrh r0, [r5]
+ ldr r2, _02235E74 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, _02235E78 ; =MOD12_02235E7C
+ bl FUN_0200CA44
+ pop {r4, r5, r6, pc}
+ nop
+_02235E74: .word 0x00007530
+_02235E78: .word MOD12_02235E7C
+
+ thumb_func_start MOD12_02235E7C
+MOD12_02235E7C: ; 0x02235E7C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldrb r1, [r4, #0xf]
+ add r5, r0, #0
+ cmp r1, #0
+ beq _02235E94
+ cmp r1, #1
+ beq _02235EB2
+ cmp r1, #2
+ beq _02235ECC
+ b _02235EDA
+_02235E94:
+ mov r1, #0
+ add r0, r4, #0
+ str r1, [sp]
+ add r0, #0xe
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ mov r3, #0x46
+ bl MOD12_022352F4
+ ldrb r0, [r4, #0xf]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xf]
+ pop {r3, r4, r5, pc}
+_02235EB2:
+ ldrh r0, [r4, #0xc]
+ add r0, r0, #1
+ strh r0, [r4, #0xc]
+ ldrh r0, [r4, #0xc]
+ cmp r0, #0x1e
+ bls _02235EF8
+ mov r0, #0
+ strh r0, [r4, #0xc]
+ ldrb r0, [r4, #0xf]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xf]
+ pop {r3, r4, r5, pc}
+_02235ECC:
+ ldrb r0, [r4, #0xe]
+ cmp r0, #1
+ bne _02235EF8
+ add r0, r1, #1
+ add sp, #8
+ strb r0, [r4, #0xf]
+ pop {r3, r4, r5, pc}
+_02235EDA:
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02235EF8:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_02235EFC
+MOD12_02235EFC: ; 0x02235EFC
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02235F14
+MOD12_02235F14: ; 0x02235F14
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ mov r0, #0x15
+ mov r1, #0x1c
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x1c
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _02235F6C ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ add r0, r6, #0
+ add r0, #0xe4
+ ldrb r0, [r0]
+ strb r0, [r4, #0x18]
+ add r0, r6, #0
+ add r0, #0xd8
+ ldrh r0, [r0]
+ strh r0, [r4, #0x12]
+ add r0, r6, #0
+ add r0, #0xda
+ ldrh r0, [r0]
+ add r6, #0xdc
+ strh r0, [r4, #0x14]
+ ldrh r0, [r6]
+ strh r0, [r4, #0x16]
+ ldr r0, _02235F70 ; =MOD12_02235F74
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02235F6C: .word 0x00007530
+_02235F70: .word MOD12_02235F74
+
+ thumb_func_start MOD12_02235F74
+MOD12_02235F74: ; 0x02235F74
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #4
+ bhi _0223601A
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02235F8E: ; jump table
+ .short _02235F98 - _02235F8E - 2 ; case 0
+ .short _02235FBA - _02235F8E - 2 ; case 1
+ .short _02235FD4 - _02235F8E - 2 ; case 2
+ .short _02235FEE - _02235F8E - 2 ; case 3
+ .short _0223600C - _02235F8E - 2 ; case 4
+_02235F98:
+ ldrb r1, [r4, #0x18]
+ cmp r1, #0
+ beq _02235FAA
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r2, #0x12
+ mov r3, #0
+ bl MOD12_02234FB0
+_02235FAA:
+ ldr r0, _0223603C ; =0x000006F9
+ bl FUN_020054C8
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02235FBA:
+ ldrb r0, [r4, #0x18]
+ cmp r0, #0
+ beq _02235FCA
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02236038
+_02235FCA:
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02235FD4:
+ ldrh r0, [r4, #0xe]
+ add r0, r0, #1
+ strh r0, [r4, #0xe]
+ ldrh r0, [r4, #0xe]
+ cmp r0, #0x1e
+ bls _02236038
+ mov r0, #0
+ strh r0, [r4, #0xe]
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02235FEE:
+ mov r1, #0
+ add r0, r4, #0
+ str r1, [sp]
+ add r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ mov r3, #0x46
+ bl MOD12_022352F4
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223600C:
+ ldrb r1, [r4, #0x10]
+ cmp r1, #1
+ bne _02236038
+ add r0, r0, #1
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223601A:
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02236038:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223603C: .word 0x000006F9
+
+ thumb_func_start MOD12_02236040
+MOD12_02236040: ; 0x02236040
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02236058
+MOD12_02236058: ; 0x02236058
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r0, #0x15
+ mov r1, #0x1c
+ add r5, r2, #0
+ add r7, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x1c
+ bl MI_CpuFill8
+ str r6, [r4]
+ ldrh r0, [r5]
+ add r2, r4, #0
+ mov r1, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ add r2, #0x16
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldrb r0, [r7]
+ strb r0, [r4, #0x15]
+ add r0, r6, #0
+ bl MOD12_0223483C
+ ldr r0, _022360A8 ; =MOD12_022360B0
+ ldr r2, _022360AC ; =0x00007530
+ add r1, r4, #0
+ bl FUN_0200CA44
+ add r0, r6, #0
+ bl MOD12_02234EFC
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022360A8: .word MOD12_022360B0
+_022360AC: .word 0x00007530
+
+ thumb_func_start MOD12_022360B0
+MOD12_022360B0: ; 0x022360B0
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r1, [r0, #0xc]
+ ldrb r0, [r4, #0x15]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_02068E14
+ add r5, r0, #0
+ ldrb r0, [r4, #0x14]
+ cmp r0, #3
+ bls _022360D0
+ b _022361DA
+_022360D0:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022360DC: ; jump table
+ .short _022360E4 - _022360DC - 2 ; case 0
+ .short _02236100 - _022360DC - 2 ; case 1
+ .short _02236162 - _022360DC - 2 ; case 2
+ .short _0223617C - _022360DC - 2 ; case 3
+_022360E4:
+ mov r0, #0x18
+ ldrsh r1, [r4, r0]
+ add r1, r1, #1
+ strh r1, [r4, #0x18]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0xa
+ bgt _022360F4
+ b _022361FE
+_022360F4:
+ mov r0, #0
+ strh r0, [r4, #0x18]
+ ldrb r0, [r4, #0x14]
+ add r0, r0, #1
+ strb r0, [r4, #0x14]
+ pop {r4, r5, r6, pc}
+_02236100:
+ ldrb r0, [r4, #0x15]
+ mov r1, #0
+ lsl r5, r0, #2
+ ldr r0, [r4]
+ ldr r0, [r0, #0xc]
+ ldr r0, [r0, r5]
+ bl FUN_02068E14
+ add r6, r0, #0
+ ldr r0, [r4]
+ mov r1, #0x25
+ add r0, r0, r5
+ ldr r0, [r0, #0x14]
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4]
+ mov r1, #6
+ add r0, r0, r5
+ ldr r0, [r0, #0x14]
+ mov r2, #0
+ bl FUN_02007558
+ ldr r0, [r4]
+ mov r2, #1
+ add r0, r0, r5
+ ldr r0, [r0, #0x14]
+ mov r1, #0
+ lsl r2, r2, #8
+ bl FUN_02007558
+ ldr r0, [r4]
+ add r6, #0xac
+ add r0, r0, r5
+ ldr r0, [r0, #0x14]
+ mov r1, #1
+ add r2, r6, #0
+ bl FUN_02007558
+ mov r0, #1
+ lsl r0, r0, #0x10
+ str r0, [r4, #0xc]
+ mov r0, #0x2b
+ lsl r0, r0, #0xa
+ str r0, [r4, #0x10]
+ ldrb r0, [r4, #0x14]
+ add r0, r0, #1
+ strb r0, [r4, #0x14]
+ pop {r4, r5, r6, pc}
+_02236162:
+ ldr r0, [r4]
+ ldrb r2, [r4, #0x15]
+ ldr r1, [r0]
+ ldr r0, _02236200 ; =0x00000123
+ ldrb r0, [r1, r0]
+ cmp r2, r0
+ bne _02236176
+ ldr r0, _02236204 ; =0x000006F8
+ bl FUN_020054C8
+_02236176:
+ ldrb r0, [r4, #0x14]
+ add r0, r0, #1
+ strb r0, [r4, #0x14]
+_0223617C:
+ ldr r1, [r4, #0xc]
+ ldr r0, _02236208 ; =0x000005B6
+ sub r0, r1, r0
+ str r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ ldr r0, _0223620C ; =0x00000892
+ sub r0, r1, r0
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ asr r0, r0, #8
+ cmp r0, #0xd8
+ ble _0223619C
+ ldr r0, [r4, #0x10]
+ asr r0, r0, #8
+ cmp r0, #0x70
+ bgt _022361AE
+_0223619C:
+ mov r0, #0x36
+ lsl r0, r0, #0xa
+ str r0, [r4, #0xc]
+ mov r0, #7
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x10]
+ ldrb r0, [r4, #0x14]
+ add r0, r0, #1
+ strb r0, [r4, #0x14]
+_022361AE:
+ ldrb r0, [r4, #0x15]
+ ldr r2, [r4, #0xc]
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #0x14]
+ mov r1, #0
+ asr r2, r2, #8
+ bl FUN_02007558
+ ldrb r0, [r4, #0x15]
+ ldr r2, [r4, #0x10]
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ asr r2, r2, #8
+ ldr r0, [r0, #0x14]
+ mov r1, #1
+ add r2, r2, r5
+ bl FUN_02007558
+ pop {r4, r5, r6, pc}
+_022361DA:
+ ldrb r0, [r4, #0x16]
+ cmp r0, #1
+ bne _022361FE
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r6, #0
+ bl FUN_0200CAB4
+_022361FE:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02236200: .word 0x00000123
+_02236204: .word 0x000006F8
+_02236208: .word 0x000005B6
+_0223620C: .word 0x00000892
+
+ thumb_func_start MOD12_02236210
+MOD12_02236210: ; 0x02236210
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02236228
+MOD12_02236228: ; 0x02236228
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r0, #0x15
+ mov r1, #0x1c
+ add r5, r2, #0
+ add r7, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x1c
+ bl MI_CpuFill8
+ str r6, [r4]
+ ldrh r0, [r5]
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldrb r0, [r7]
+ strb r0, [r4, #0x15]
+ ldr r1, [r6, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_02068E14
+ mov r0, #0x36
+ lsl r0, r0, #0xa
+ str r0, [r4, #0xc]
+ mov r0, #7
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x10]
+ ldr r0, _0223627C ; =MOD12_02236284
+ ldr r2, _02236280 ; =0x00007530
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223627C: .word MOD12_02236284
+_02236280: .word 0x00007530
+
+ thumb_func_start MOD12_02236284
+MOD12_02236284: ; 0x02236284
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r7, r0, #0
+ ldrb r0, [r5, #0x15]
+ mov r1, #0
+ lsl r4, r0, #2
+ ldr r0, [r5]
+ ldr r0, [r0, #0xc]
+ ldr r0, [r0, r4]
+ bl FUN_02068E14
+ add r6, r0, #0
+ ldrb r0, [r5, #0x14]
+ cmp r0, #0
+ beq _022362A8
+ cmp r0, #1
+ beq _0223631A
+ b _02236342
+_022362A8:
+ ldr r1, [r5, #0xc]
+ ldr r0, _02236364 ; =0x000005B6
+ add r0, r1, r0
+ str r0, [r5, #0xc]
+ ldr r1, [r5, #0x10]
+ ldr r0, _02236368 ; =0x00000892
+ add r0, r1, r0
+ str r0, [r5, #0x10]
+ ldr r0, [r5, #0xc]
+ asr r1, r0, #8
+ mov r0, #1
+ lsl r0, r0, #8
+ cmp r1, r0
+ bge _022362CC
+ ldr r0, [r5, #0x10]
+ asr r0, r0, #8
+ cmp r0, #0xac
+ blt _022362EE
+_022362CC:
+ ldr r0, [r5]
+ mov r1, #0x25
+ add r0, r0, r4
+ ldr r0, [r0, #0x14]
+ mov r2, #1
+ bl FUN_02007558
+ ldr r0, [r5]
+ mov r1, #6
+ add r0, r0, r4
+ ldr r0, [r0, #0x14]
+ mov r2, #1
+ bl FUN_02007558
+ ldrb r0, [r5, #0x14]
+ add r0, r0, #1
+ strb r0, [r5, #0x14]
+_022362EE:
+ ldrb r0, [r5, #0x15]
+ ldr r2, [r5, #0xc]
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #0x14]
+ mov r1, #0
+ asr r2, r2, #8
+ bl FUN_02007558
+ ldrb r0, [r5, #0x15]
+ ldr r2, [r5, #0x10]
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ asr r2, r2, #8
+ ldr r0, [r0, #0x14]
+ mov r1, #1
+ add r2, r2, r6
+ bl FUN_02007558
+ pop {r3, r4, r5, r6, r7, pc}
+_0223631A:
+ ldrb r1, [r5, #0x15]
+ ldr r0, [r5]
+ ldr r2, _0223636C ; =0x00001652
+ add r3, r0, r1
+ ldrb r2, [r3, r2]
+ cmp r2, #1
+ bne _0223633A
+ add r0, #0xc
+ bl MOD12_022336AC
+ ldrb r0, [r5, #0x15]
+ ldr r1, [r5]
+ mov r2, #0
+ add r1, r1, r0
+ ldr r0, _0223636C ; =0x00001652
+ strb r2, [r1, r0]
+_0223633A:
+ ldrb r0, [r5, #0x14]
+ add r0, r0, #1
+ strb r0, [r5, #0x14]
+ pop {r3, r4, r5, r6, r7, pc}
+_02236342:
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r5, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r7, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02236364: .word 0x000005B6
+_02236368: .word 0x00000892
+_0223636C: .word 0x00001652
+
+ thumb_func_start MOD12_02236370
+MOD12_02236370: ; 0x02236370
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02236388
+MOD12_02236388: ; 0x02236388
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ mov r0, #0x15
+ mov r1, #0x1c
+ add r6, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x1c
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r6]
+ ldr r2, _022363EC ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ ldrb r0, [r5]
+ strb r0, [r4, #0xd]
+ ldrb r0, [r5, #2]
+ strb r0, [r4, #0xe]
+ add r0, r5, #0
+ add r0, #0xe4
+ ldrb r0, [r0]
+ strb r0, [r4, #0x1a]
+ add r0, r5, #0
+ add r0, #0xd8
+ ldrh r0, [r0]
+ strh r0, [r4, #0x14]
+ add r0, r5, #0
+ add r0, #0xda
+ ldrh r0, [r0]
+ strh r0, [r4, #0x16]
+ add r0, r5, #0
+ add r0, #0xdc
+ ldrh r0, [r0]
+ strh r0, [r4, #0x18]
+ ldrb r0, [r5, #3]
+ strb r0, [r4, #0x10]
+ ldr r0, _022363F0 ; =MOD12_022363F4
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022363EC: .word 0x00007530
+_022363F0: .word MOD12_022363F4
+
+ thumb_func_start MOD12_022363F4
+MOD12_022363F4: ; 0x022363F4
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #8
+ bhi _02236502
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223640E: ; jump table
+ .short _02236420 - _0223640E - 2 ; case 0
+ .short _0223645C - _0223640E - 2 ; case 1
+ .short _0223646A - _0223640E - 2 ; case 2
+ .short _02236472 - _0223640E - 2 ; case 3
+ .short _02236496 - _0223640E - 2 ; case 4
+ .short _022364AA - _0223640E - 2 ; case 5
+ .short _022364B2 - _0223640E - 2 ; case 6
+ .short _022364D6 - _0223640E - 2 ; case 7
+ .short _022364E4 - _0223640E - 2 ; case 8
+_02236420:
+ ldrb r0, [r4, #0xd]
+ ldr r1, [r4]
+ lsl r0, r0, #1
+ add r1, r1, r0
+ ldr r0, _02236524 ; =0x00000242
+ ldrsh r0, [r1, r0]
+ bl MOD12_022352C8
+ add r3, r0, #0
+ cmp r3, #0
+ ble _0223644A
+ mov r1, #0
+ add r0, r4, #0
+ str r1, [sp]
+ add r0, #0x12
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ bl MOD12_022352F4
+ b _02236452
+_0223644A:
+ mov r0, #2
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02236452:
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223645C:
+ ldrb r1, [r4, #0x12]
+ cmp r1, #1
+ bne _02236520
+ add r0, r0, #1
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223646A:
+ add r0, r0, #1
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02236472:
+ ldrb r1, [r4, #0x1a]
+ cmp r1, #0
+ beq _0223648E
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r2, #0x14
+ mov r3, #0
+ bl MOD12_02234FB0
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223648E:
+ mov r0, #5
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02236496:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02236520
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_022364AA:
+ add r0, r0, #1
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_022364B2:
+ ldr r0, [r4]
+ ldrb r1, [r4, #0xe]
+ ldrb r2, [r4, #0x10]
+ add r0, #0xc
+ bl MOD12_02233BE4
+ add r3, r4, #0
+ ldrb r1, [r4, #0xe]
+ ldrb r2, [r4, #0x10]
+ ldr r0, [r4]
+ add r3, #0xf
+ bl MOD12_02233C94
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_022364D6:
+ ldrb r1, [r4, #0xf]
+ cmp r1, #1
+ bne _02236520
+ add r0, r0, #1
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_022364E4:
+ ldrb r0, [r4, #0x11]
+ add r0, r0, #1
+ strb r0, [r4, #0x11]
+ ldrb r0, [r4, #0x11]
+ cmp r0, #5
+ bls _02236520
+ ldr r0, [r4]
+ add r0, #0xc
+ bl MOD12_02233C74
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02236502:
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02236520:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02236524: .word 0x00000242
+
+ thumb_func_start MOD12_02236528
+MOD12_02236528: ; 0x02236528
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02236540
+MOD12_02236540: ; 0x02236540
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ mov r1, #0x49
+ mov r0, #0x15
+ lsl r1, r1, #2
+ add r6, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ mov r2, #0x49
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r6]
+ add r3, r4, #0
+ add r3, #0x14
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ ldrb r0, [r5]
+ strb r0, [r4, #0xd]
+ ldrb r1, [r5]
+ mov r0, #0x2c
+ add r2, r1, #0
+ mul r2, r0
+ add r1, r5, r2
+ ldrh r1, [r1, #0x10]
+ strh r1, [r4, #0xe]
+ add r1, r5, #0
+ add r1, #0xe4
+ ldrb r2, [r1]
+ add r1, r0, #0
+ add r1, #0xe2
+ strb r2, [r4, r1]
+ add r1, r5, #0
+ add r1, #0xd8
+ ldrh r2, [r1]
+ add r1, r0, #0
+ add r1, #0xdc
+ strh r2, [r4, r1]
+ add r1, r5, #0
+ add r1, #0xda
+ ldrh r2, [r1]
+ add r1, r0, #0
+ add r1, #0xde
+ strh r2, [r4, r1]
+ add r1, r5, #0
+ add r1, #0xdc
+ ldrh r2, [r1]
+ add r1, r0, #0
+ add r1, #0xe0
+ strh r2, [r4, r1]
+ add r1, r5, #0
+ add r1, #0xe5
+ ldrb r2, [r1]
+ add r1, r0, #0
+ add r1, #0xea
+ strb r2, [r4, r1]
+ add r1, r5, #0
+ add r1, #0xde
+ ldrh r2, [r1]
+ add r1, r0, #0
+ add r1, #0xe4
+ strh r2, [r4, r1]
+ add r1, r5, #0
+ add r1, #0xe0
+ ldrh r2, [r1]
+ add r1, r0, #0
+ add r1, #0xe6
+ strh r2, [r4, r1]
+ add r1, r5, #0
+ add r1, #0xe2
+ ldrh r1, [r1]
+ add r0, #0xe8
+ mov r2, #0x1e
+ strh r1, [r4, r0]
+_022365E6:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _022365E6
+ ldr r0, [r5]
+ add r1, r4, #0
+ str r0, [r3]
+ ldr r0, _02236600 ; =MOD12_02236604
+ mov r2, #5
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02236600: .word MOD12_02236604
+
+ thumb_func_start MOD12_02236604
+MOD12_02236604: ; 0x02236604
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x114
+ add r4, r1, #0
+ ldrb r1, [r4, #0xd]
+ add r6, r0, #0
+ add r2, r4, #0
+ mov r5, #0x2c
+ add r0, r1, #0
+ add r2, #0x24
+ mul r0, r5
+ add r3, r2, r0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #0xe
+ bls _02236622
+ b _02236A70
+_02236622:
+ add r2, r0, r0
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0223662E: ; jump table
+ .short _0223664C - _0223662E - 2 ; case 0
+ .short _02236674 - _0223662E - 2 ; case 1
+ .short _02236688 - _0223662E - 2 ; case 2
+ .short _02236690 - _0223662E - 2 ; case 3
+ .short _022366B6 - _0223662E - 2 ; case 4
+ .short _022366CA - _0223662E - 2 ; case 5
+ .short _022366D2 - _0223662E - 2 ; case 6
+ .short _022366FA - _0223662E - 2 ; case 7
+ .short _02236710 - _0223662E - 2 ; case 8
+ .short _02236718 - _0223662E - 2 ; case 9
+ .short _0223672C - _0223662E - 2 ; case 10
+ .short _022369D6 - _0223662E - 2 ; case 11
+ .short _02236A2C - _0223662E - 2 ; case 12
+ .short _02236A4C - _0223662E - 2 ; case 13
+ .short _02236A62 - _0223662E - 2 ; case 14
+_0223664C:
+ add r0, r5, #0
+ add r0, #0xe2
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _0223666C
+ add r5, #0xdc
+ ldr r0, [r4]
+ add r2, r4, r5
+ mov r3, #0
+ bl MOD12_02234FB0
+ ldrb r0, [r4, #0xc]
+ add sp, #0x114
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_0223666C:
+ mov r0, #2
+ add sp, #0x114
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_02236674:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02236704
+ ldrb r0, [r4, #0xc]
+ add sp, #0x114
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_02236688:
+ add r0, r0, #1
+ add sp, #0x114
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_02236690:
+ ldrb r1, [r3, #0x12]
+ cmp r1, #0
+ beq _022366AE
+ mov r0, #0
+ str r0, [sp]
+ ldrb r2, [r3, #0x13]
+ ldr r0, [r4]
+ add r3, #0xc
+ bl MOD12_02234FF0
+ ldrb r0, [r4, #0xc]
+ add sp, #0x114
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_022366AE:
+ mov r0, #5
+ add sp, #0x114
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_022366B6:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02236704
+ ldrb r0, [r4, #0xc]
+ add sp, #0x114
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_022366CA:
+ add r0, r0, #1
+ add sp, #0x114
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_022366D2:
+ add r0, r5, #0
+ add r0, #0xea
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _022366F2
+ add r5, #0xdc
+ ldr r0, [r4]
+ add r2, r4, r5
+ mov r3, #0
+ bl MOD12_02234FB0
+ ldrb r0, [r4, #0xc]
+ add sp, #0x114
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_022366F2:
+ mov r0, #8
+ add sp, #0x114
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_022366FA:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ beq _02236706
+_02236704:
+ b _02236A8E
+_02236706:
+ ldrb r0, [r4, #0xc]
+ add sp, #0x114
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_02236710:
+ add r0, r0, #1
+ add sp, #0x114
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_02236718:
+ ldr r0, [r4]
+ ldrh r2, [r4, #0xe]
+ add r5, #0xec
+ ldr r0, [r0]
+ add r3, r4, r5
+ bl MOD12_02235B1C
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_0223672C:
+ ldrb r0, [r4, #0xd]
+ add r5, r0, #1
+ cmp r5, #4
+ blt _02236736
+ mov r5, #0
+_02236736:
+ add r0, sp, #0xbc
+ mov r1, #0
+ mov r2, #0x58
+ bl MI_CpuFill8
+ add r0, sp, #0x2c
+ mov r1, #0
+ mov r2, #0x90
+ bl MI_CpuFill8
+ ldr r0, [r4]
+ mov r2, #0
+ ldr r1, [r0, #0xc]
+ ldrb r0, [r4, #0xd]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #5
+ bl FUN_020671BC
+ add r6, r0, #0
+ ldr r0, [r4]
+ mov r2, #0
+ ldr r1, [r0, #0xc]
+ ldrb r0, [r4, #0xd]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x6f
+ bl FUN_020671BC
+ add r7, r0, #0
+ ldr r0, [r4]
+ ldr r1, [r0, #0xc]
+ ldrb r0, [r4, #0xd]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02068A80
+ str r0, [sp, #0x20]
+ ldr r0, [r4]
+ mov r2, #0
+ ldr r1, [r0, #0xc]
+ ldrb r0, [r4, #0xd]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x70
+ bl FUN_020671BC
+ str r0, [sp, #0x1c]
+ ldr r0, [r4]
+ ldr r1, [r0, #0xc]
+ ldrb r0, [r4, #0xd]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ add r2, r1, #0
+ bl FUN_020671BC
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ lsl r5, r5, #2
+ ldr r0, [r0, #0xc]
+ mov r1, #5
+ ldr r0, [r0, r5]
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0x18]
+ ldr r0, [r4]
+ mov r1, #0x6f
+ ldr r0, [r0, #0xc]
+ mov r2, #0
+ ldr r0, [r0, r5]
+ bl FUN_020671BC
+ str r0, [sp, #0x14]
+ ldr r0, [r4]
+ ldr r0, [r0, #0xc]
+ ldr r0, [r0, r5]
+ bl FUN_02068A80
+ str r0, [sp, #0x10]
+ ldr r0, [r4]
+ mov r1, #0x70
+ ldr r0, [r0, #0xc]
+ mov r2, #0
+ ldr r0, [r0, r5]
+ bl FUN_020671BC
+ str r0, [sp, #0xc]
+ ldr r0, [r4]
+ mov r1, #0
+ ldr r0, [r0, #0xc]
+ add r2, r1, #0
+ ldr r0, [r0, r5]
+ bl FUN_020671BC
+ str r0, [sp, #4]
+ mov r2, #0x47
+ mov r0, #0
+ add r1, sp, #0xbc
+ strb r0, [r1]
+ strb r0, [r1, #1]
+ lsl r2, r2, #2
+ ldrh r3, [r4, r2]
+ mov r5, #1
+ strh r3, [r1, #2]
+ str r5, [sp, #0xc0]
+ mov r3, #0xa
+ strh r3, [r1, #8]
+ add r3, r2, #3
+ ldrb r3, [r4, r3]
+ add r2, r2, #4
+ strh r3, [r1, #0xa]
+ ldrb r2, [r4, r2]
+ strh r2, [r1, #0xc]
+ str r0, [sp, #0xcc]
+ strh r0, [r1, #0x14]
+ strh r5, [r1, #0x16]
+ mov r2, #9
+ str r2, [sp, #0x110]
+ lsl r2, r6, #0x10
+ lsr r2, r2, #0x10
+_0223682A:
+ add r0, r0, #1
+ strh r2, [r1, #0x18]
+ add r1, r1, #2
+ cmp r0, #4
+ blt _0223682A
+ ldr r0, [sp, #0x18]
+ add r1, sp, #0xbc
+ strh r0, [r1, #0x1a]
+ ldr r0, [r4]
+ mov r5, #0
+ ldr r0, [r0, #0x30]
+ str r0, [sp, #0x30]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x5c]
+ str r0, [sp, #0x34]
+ ldrb r0, [r4, #0xd]
+ ldr r1, [r4]
+ add r1, #0x64
+ lsl r0, r0, #4
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ ldr r0, [r4]
+ add r1, sp, #0x2c
+ add r0, #0xa4
+ str r0, [sp, #0x3c]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x28]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x20]
+ add r2, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov ip, r0
+ ldr r0, [sp, #0x1c]
+ add r3, r1, #0
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+_0223687A:
+ mov r0, #0xff
+ strb r0, [r1, #0x1c]
+ ldr r0, [sp, #0x28]
+ add r6, r1, #0
+ strh r0, [r2, #0x34]
+ ldr r0, [sp, #0x24]
+ add r6, #0x3c
+ strb r0, [r6]
+ add r6, r1, #0
+ add r6, #0x40
+ mov r0, ip
+ strb r0, [r6]
+ add r0, r1, #0
+ add r0, #0x44
+ strb r7, [r0]
+ ldr r0, [sp, #8]
+ add r5, r5, #1
+ str r0, [r3, #0x48]
+ mov r0, #0
+ str r0, [r3, #0x58]
+ add r1, r1, #1
+ add r2, r2, #2
+ add r3, r3, #4
+ cmp r5, #4
+ blt _0223687A
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r2, sp, #0x2c
+ str r0, [sp, #0x84]
+ mov r0, #0
+ strb r0, [r2, #0x1c]
+ mov r0, #1
+ ldr r1, [sp, #0x18]
+ strb r0, [r2, #0x1d]
+ strh r1, [r2, #0x36]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #0x4c
+ strb r1, [r2, #0x1d]
+ ldr r1, [sp, #0x10]
+ add r2, sp, #0x6c
+ strb r1, [r2, #1]
+ ldr r1, [sp, #0xc]
+ strb r1, [r2, #5]
+ ldr r1, [sp, #4]
+ str r1, [sp, #0x78]
+ ldrb r1, [r4, #0xd]
+ ldr r2, [r4]
+ lsl r1, r1, #2
+ add r1, r2, r1
+ ldr r1, [r1, #0x14]
+ str r1, [sp, #0x4c]
+ ldrb r1, [r4, #0xd]
+ cmp r1, #0
+ beq _022368EA
+ mov r0, #0
+_022368EA:
+ lsl r5, r0, #2
+ ldr r0, [r4]
+ mov r2, #0x57
+ add r0, r0, r5
+ ldr r0, [r0, #0x14]
+ mov r1, #8
+ str r1, [sp, #0x94]
+ mov r1, #0x2d
+ str r1, [sp, #0x98]
+ mov r1, #1
+ str r1, [sp, #0x9c]
+ mov r1, #0x1d
+ str r0, [sp, #0x50]
+ mov r0, #0
+ str r1, [sp, #0xa0]
+ mov r1, #2
+ str r0, [sp, #0x5c]
+ str r0, [sp, #0xa8]
+ mov r0, #3
+ str r1, [sp, #0xa4]
+ str r0, [sp, #0xac]
+ ldr r0, [r4]
+ lsl r2, r2, #2
+ ldr r0, [r0, #0x24]
+ add r3, sp, #0x2c
+ str r0, [sp, #0x2c]
+ ldr r0, [r4]
+ ldr r1, [r0]
+ ldrb r0, [r4, #0xd]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, r2]
+ sub r2, #0x40
+ str r0, [sp, #0xb0]
+ ldr r0, [r4]
+ ldrh r2, [r4, r2]
+ ldr r0, [r0, #0x2c]
+ add r1, sp, #0xbc
+ bl MOD08_02212048
+ ldr r0, [r4]
+ ldr r1, [r0, #0xc]
+ ldrb r0, [r4, #0xd]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_02068E14
+ add r6, r0, #0
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ ldr r0, _02236A94 ; =0xDFFBFF3F
+ cmp r1, r0
+ beq _0223696A
+ ldrb r0, [r4, #0xd]
+ ldr r1, [r4]
+ mov r2, #0
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #0x14]
+ mov r1, #6
+ bl FUN_02007558
+_0223696A:
+ ldrb r0, [r4, #0xd]
+ ldr r1, [r4]
+ mov r2, #0
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #0x14]
+ mov r1, #0x25
+ bl FUN_02007558
+ ldrb r0, [r4, #0xd]
+ ldr r1, [r4]
+ mov r2, #0xd8
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #0x14]
+ mov r1, #0
+ bl FUN_02007558
+ ldrb r0, [r4, #0xd]
+ add r6, #0x70
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #0x14]
+ mov r1, #1
+ add r2, r6, #0
+ bl FUN_02007558
+ ldr r0, [r4]
+ mov r1, #0x25
+ add r0, r0, r5
+ ldr r0, [r0, #0x14]
+ mov r2, #1
+ bl FUN_02007558
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, r0, r5
+ ldr r0, [r0, #0x14]
+ mov r2, #0x50
+ bl FUN_02007558
+ ldr r0, [r4]
+ mov r1, #1
+ add r0, r0, r5
+ ldr r0, [r0, #0x14]
+ mov r2, #0x2a
+ bl FUN_02007558
+ ldrb r0, [r4, #0xc]
+ add sp, #0x114
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_022369D6:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x2c]
+ bl MOD08_02212384
+ ldr r0, [r4]
+ ldr r0, [r0, #0x2c]
+ bl MOD08_022123A0
+ cmp r0, #0
+ bne _02236A8E
+ ldr r0, [r4]
+ ldr r0, [r0, #0x2c]
+ bl MOD08_022123B0
+ add r1, r5, #0
+ add r1, #0xf2
+ ldrb r0, [r4, r1]
+ cmp r0, #0
+ beq _02236A22
+ sub r0, r0, #1
+ strb r0, [r4, r1]
+ add r0, r1, #1
+ ldrb r0, [r4, r0]
+ add r2, r0, #1
+ add r0, r1, #1
+ strb r2, [r4, r0]
+ sub r0, r1, #6
+ ldr r2, [r4, r0]
+ ldr r0, _02236A98 ; =0x200400C0
+ cmp r2, r0
+ bne _02236A1A
+ ldr r2, _02236A94 ; =0xDFFBFF3F
+ sub r0, r1, #6
+ str r2, [r4, r0]
+_02236A1A:
+ mov r0, #0xa
+ add sp, #0x114
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_02236A22:
+ ldrb r0, [r4, #0xc]
+ add sp, #0x114
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_02236A2C:
+ add r5, #0xf0
+ ldrh r0, [r4, r5]
+ cmp r0, #0x90
+ beq _02236A38
+ cmp r0, #0xa4
+ bne _02236A42
+_02236A38:
+ ldr r0, [r4]
+ mov r2, #1
+ add r1, r0, r1
+ ldr r0, _02236A9C ; =0x00001652
+ strb r2, [r1, r0]
+_02236A42:
+ ldrb r0, [r4, #0xc]
+ add sp, #0x114
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_02236A4C:
+ add r2, r4, #0
+ ldr r0, [r4]
+ mov r1, #1
+ add r2, #0x10
+ bl MOD12_0223483C
+ ldrb r0, [r4, #0xc]
+ add sp, #0x114
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_02236A62:
+ ldrb r1, [r4, #0x10]
+ cmp r1, #1
+ bne _02236A8E
+ add r0, r0, #1
+ add sp, #0x114
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_02236A70:
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r6, #0
+ bl FUN_0200CAB4
+_02236A8E:
+ add sp, #0x114
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02236A94: .word 0xDFFBFF3F
+_02236A98: .word 0x200400C0
+_02236A9C: .word 0x00001652
+
+ thumb_func_start MOD12_02236AA0
+MOD12_02236AA0: ; 0x02236AA0
+ push {r3, lr}
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ mov r3, #0
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02236AB8
+MOD12_02236AB8: ; 0x02236AB8
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ mov r0, #0x15
+ mov r1, #0x14
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x14
+ bl MI_CpuFill8
+ str r6, [r4]
+ ldrh r0, [r5]
+ mov r2, #0x64
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r1, [r6, #0xc]
+ ldr r0, _02236AF8 ; =0x00000123
+ ldrb r0, [r1, r0]
+ add r1, r4, #0
+ strb r0, [r4, #0xd]
+ ldr r0, _02236AFC ; =MOD12_02236B00
+ bl FUN_0200CA44
+ pop {r4, r5, r6, pc}
+ nop
+_02236AF8: .word 0x00000123
+_02236AFC: .word MOD12_02236B00
+
+ thumb_func_start MOD12_02236B00
+MOD12_02236B00: ; 0x02236B00
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #0xa
+ bls _02236B10
+ b _02236C9E
+_02236B10:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02236B1C: ; jump table
+ .short _02236B32 - _02236B1C - 2 ; case 0
+ .short _02236B4C - _02236B1C - 2 ; case 1
+ .short _02236BAA - _02236B1C - 2 ; case 2
+ .short _02236BBA - _02236B1C - 2 ; case 3
+ .short _02236BF4 - _02236B1C - 2 ; case 4
+ .short _02236C08 - _02236B1C - 2 ; case 5
+ .short _02236C0E - _02236B1C - 2 ; case 6
+ .short _02236C42 - _02236B1C - 2 ; case 7
+ .short _02236C52 - _02236B1C - 2 ; case 8
+ .short _02236C76 - _02236B1C - 2 ; case 9
+ .short _02236C98 - _02236B1C - 2 ; case 10
+_02236B32:
+ ldr r1, [r4]
+ ldr r0, _02236CE8 ; =0x0000081C
+ mov r2, #0
+ ldr r0, [r1, r0]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD12_02231B4C
+ ldrb r0, [r4, #0xc]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, pc}
+_02236B4C:
+ ldr r1, [r4]
+ ldr r0, _02236CE8 ; =0x0000081C
+ mov r2, #0
+ ldr r0, [r1, r0]
+ mov r1, #2
+ add r3, r2, #0
+ bl MOD12_02231B4C
+ mov r0, #0x23
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ add r2, r0, #1
+ cmp r2, #4
+ bne _02236B6E
+ mov r1, #3
+ b _02236B70
+_02236B6E:
+ mov r1, #2
+_02236B70:
+ add r0, sp, #0
+ strb r2, [r0, #0xa]
+ add r2, sp, #4
+ ldr r0, [r4]
+ add r2, #2
+ mov r3, #0
+ bl MOD12_02234FB0
+ mov r0, #0x23
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ add r0, r0, #1
+ cmp r0, #4
+ bne _02236BA0
+ ldrb r0, [r4, #0xe]
+ cmp r0, #0
+ bne _02236BA0
+ ldr r0, _02236CEC ; =0x000006F6
+ bl FUN_020054C8
+ ldrb r0, [r4, #0xe]
+ add r0, r0, #1
+ strb r0, [r4, #0xe]
+_02236BA0:
+ ldrb r0, [r4, #0xc]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, pc}
+_02236BAA:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02236BCE
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02236BBA:
+ ldr r1, [r4]
+ ldr r0, _02236CE8 ; =0x0000081C
+ ldr r0, [r1, r0]
+ bl MOD12_02231C80
+ add r1, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ bne _02236BD0
+_02236BCE:
+ b _02236CE4
+_02236BD0:
+ ldr r0, [r4]
+ add r1, #0x36
+ ldr r2, [r0, #0xc]
+ ldrb r0, [r4, #0xd]
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x10]
+ ldr r0, _02236CF0 ; =0x000005DD
+ bl FUN_020054C8
+ ldrb r0, [r4, #0xc]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, pc}
+_02236BF4:
+ ldr r1, [r4]
+ ldr r0, _02236CE8 ; =0x0000081C
+ ldr r0, [r1, r0]
+ bl MOD12_02231D48
+ cmp r0, #0
+ beq _02236CE4
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02236C08:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02236C0E:
+ ldr r1, [r4]
+ ldr r0, _02236CE8 ; =0x0000081C
+ mov r2, #0
+ ldr r0, [r1, r0]
+ mov r1, #3
+ add r3, r2, #0
+ bl MOD12_02231B4C
+ mov r0, #0x23
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ add r2, sp, #0
+ mov r3, #0
+ add r1, r0, #1
+ add r0, sp, #0
+ strb r1, [r0, #4]
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD12_02234FB0
+ ldrb r0, [r4, #0xc]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, pc}
+_02236C42:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02236CE4
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02236C52:
+ ldr r1, [r4]
+ ldr r0, _02236CE8 ; =0x0000081C
+ ldr r0, [r1, r0]
+ bl MOD12_02231C80
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02236CE4
+ strh r0, [r4, #0x12]
+ ldr r0, _02236CF0 ; =0x000005DD
+ bl FUN_020054C8
+ ldrb r0, [r4, #0xc]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, pc}
+_02236C76:
+ ldr r1, [r4]
+ ldr r0, _02236CE8 ; =0x0000081C
+ ldr r0, [r1, r0]
+ bl MOD12_02231D48
+ cmp r0, #0
+ beq _02236CE4
+ ldrh r0, [r4, #0x12]
+ cmp r0, #3
+ bne _02236C92
+ mov r0, #1
+ add sp, #0xc
+ strb r0, [r4, #0xc]
+ pop {r4, r5, pc}
+_02236C92:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02236C98:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02236C9E:
+ ldr r0, [r4]
+ ldr r1, _02236CF4 ; =0x00000171
+ ldr r2, [r0]
+ ldrb r1, [r2, r1]
+ cmp r1, #1
+ bne _02236CB4
+ mov r2, #0
+ mov r1, #0x2e
+ add r3, r2, #0
+ bl MOD12_02234FB0
+_02236CB4:
+ mov r0, #0xc3
+ add r2, r4, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r2, #0x10
+ mov r3, #4
+ bl MOD12_02240FB0
+ ldr r1, [r4]
+ ldr r0, _02236CE8 ; =0x0000081C
+ ldr r0, [r1, r0]
+ mov r1, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD12_02231B4C
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02236CE4:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02236CE8: .word 0x0000081C
+_02236CEC: .word 0x000006F6
+_02236CF0: .word 0x000005DD
+_02236CF4: .word 0x00000171
+
+ thumb_func_start MOD12_02236CF8
+MOD12_02236CF8: ; 0x02236CF8
+ push {r4, r5}
+ ldr r0, [sp, #8]
+ lsl r2, r0, #2
+ ldr r5, [r3, r2]
+ lsl r2, r0, #1
+ ldrh r4, [r5]
+ add r3, r1, r2
+ ldr r2, _02236D18 ; =0x00000236
+ add r0, r1, r0
+ strh r4, [r3, r2]
+ ldrh r3, [r5, #2]
+ add r2, #8
+ strb r3, [r0, r2]
+ pop {r4, r5}
+ bx lr
+ nop
+_02236D18: .word 0x00000236
+
+ thumb_func_start MOD12_02236D1C
+MOD12_02236D1C: ; 0x02236D1C
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02236D34
+MOD12_02236D34: ; 0x02236D34
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02236D38
+MOD12_02236D38: ; 0x02236D38
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02236D50
+MOD12_02236D50: ; 0x02236D50
+ push {r3, r4, r5, r6, r7, lr}
+ mov r0, #0x15
+ add r7, r1, #0
+ add r1, r0, #0
+ add r1, #0xff
+ add r6, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ mov r2, #0x45
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r6]
+ add r3, r4, #0
+ add r3, #0x14
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ mov r2, #0x1e
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ ldrb r0, [r5]
+ strb r0, [r4, #0xd]
+ ldrb r0, [r5, #1]
+ strb r0, [r4, #0xe]
+_02236D8E:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02236D8E
+ ldr r0, [r5]
+ ldr r2, _02236DA8 ; =0x00007530
+ str r0, [r3]
+ ldr r0, _02236DAC ; =MOD12_02236DB0
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02236DA8: .word 0x00007530
+_02236DAC: .word MOD12_02236DB0
+
+ thumb_func_start MOD12_02236DB0
+MOD12_02236DB0: ; 0x02236DB0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4, #0xd]
+ add r5, r0, #0
+ add r3, r4, #0
+ add r2, r1, #0
+ mov r0, #0x2c
+ ldrb r1, [r4, #0xc]
+ add r3, #0x24
+ mul r2, r0
+ add r2, r3, r2
+ cmp r1, #4
+ bhi _02236E48
+ add r3, r1, r1
+ add r3, pc
+ ldrh r3, [r3, #6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_02236DD6: ; jump table
+ .short _02236DE0 - _02236DD6 - 2 ; case 0
+ .short _02236DF0 - _02236DD6 - 2 ; case 1
+ .short _02236DF6 - _02236DD6 - 2 ; case 2
+ .short _02236E2E - _02236DD6 - 2 ; case 3
+ .short _02236E48 - _02236DD6 - 2 ; case 4
+_02236DE0:
+ mov r0, #0x1a
+ ldrsh r1, [r2, r0]
+ add r0, #0xee
+ strh r1, [r4, r0]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02236DF0:
+ add r0, r1, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02236DF6:
+ add r0, #0xdc
+ mov r3, #0x18
+ ldrsh r1, [r4, r0]
+ ldrsh r0, [r2, r3]
+ cmp r1, r0
+ bge _02236E28
+ add r0, r3, #0
+ add r0, #0xf0
+ ldrsh r1, [r4, r0]
+ add r0, r3, #0
+ add r0, #0xf0
+ add r1, #0xa
+ strh r1, [r4, r0]
+ add r3, #0xf0
+ ldr r0, [r4]
+ ldrb r1, [r4, #0xd]
+ ldrb r2, [r4, #0xe]
+ ldrsh r3, [r4, r3]
+ add r0, #0xc
+ bl MOD12_02234088
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02236E28:
+ mov r0, #4
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02236E2E:
+ mov r0, #0xf
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #0xf]
+ ldrsb r0, [r4, r0]
+ cmp r0, #2
+ ble _02236E66
+ mov r0, #0
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #0xc]
+ sub r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02236E48:
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02236E66:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_02236E68
+MOD12_02236E68: ; 0x02236E68
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02236E80
+MOD12_02236E80: ; 0x02236E80
+ push {r3, r4, r5, r6, r7, lr}
+ mov r0, #0x15
+ add r7, r1, #0
+ add r1, r0, #0
+ add r1, #0xff
+ add r6, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ mov r2, #0x45
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r6]
+ add r3, r4, #0
+ add r3, #0x14
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ mov r2, #0x1e
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ ldrb r0, [r5]
+ strb r0, [r4, #0xd]
+ ldrb r0, [r5, #1]
+ strb r0, [r4, #0xe]
+_02236EBE:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02236EBE
+ ldr r0, [r5]
+ ldr r2, _02236ED8 ; =0x00007530
+ str r0, [r3]
+ ldr r0, _02236EDC ; =MOD12_02236EE0
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02236ED8: .word 0x00007530
+_02236EDC: .word MOD12_02236EE0
+
+ thumb_func_start MOD12_02236EE0
+MOD12_02236EE0: ; 0x02236EE0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldrb r1, [r4, #0xd]
+ str r0, [sp, #4]
+ add r2, r4, #0
+ mov r0, #0x2c
+ add r2, #0x24
+ mul r0, r1
+ add r3, r2, r0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #0x10
+ bls _02236EFC
+ b _022370D4
+_02236EFC:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02236F08: ; jump table
+ .short _02236F2A - _02236F08 - 2 ; case 0
+ .short _02236F3C - _02236F08 - 2 ; case 1
+ .short _02236F62 - _02236F08 - 2 ; case 2
+ .short _02236F76 - _02236F08 - 2 ; case 3
+ .short _02236F7A - _02236F08 - 2 ; case 4
+ .short _02236F80 - _02236F08 - 2 ; case 5
+ .short _02236FB2 - _02236F08 - 2 ; case 6
+ .short _02236FD0 - _02236F08 - 2 ; case 7
+ .short _02236FD4 - _02236F08 - 2 ; case 8
+ .short _02237000 - _02236F08 - 2 ; case 9
+ .short _02237052 - _02236F08 - 2 ; case 10
+ .short _0223706E - _02236F08 - 2 ; case 11
+ .short _02237072 - _02236F08 - 2 ; case 12
+ .short _02237078 - _02236F08 - 2 ; case 13
+ .short _022370C8 - _02236F08 - 2 ; case 14
+ .short _022370CE - _02236F08 - 2 ; case 15
+ .short _022370D4 - _02236F08 - 2 ; case 16
+_02236F2A:
+ mov r0, #0x1a
+ ldrsh r1, [r3, r0]
+ add r0, #0xee
+ add sp, #8
+ strh r1, [r4, r0]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02236F3C:
+ ldrb r1, [r3, #0x12]
+ cmp r1, #0
+ beq _02236F5A
+ mov r0, #0
+ str r0, [sp]
+ ldrb r2, [r3, #0x13]
+ ldr r0, [r4]
+ add r3, #0xc
+ bl MOD12_02234FF0
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02236F5A:
+ mov r0, #3
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02236F62:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02236FC0
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02236F76:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02236F7A:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02236F80:
+ mov r5, #0x42
+ lsl r5, r5, #2
+ mov r0, #0x18
+ ldrsh r1, [r4, r5]
+ ldrsh r0, [r3, r0]
+ cmp r1, r0
+ bge _02236FAA
+ add r1, #0xa
+ strh r1, [r4, r5]
+ ldr r0, [r4]
+ ldrb r1, [r4, #0xd]
+ ldrb r2, [r4, #0xe]
+ ldrsh r3, [r4, r5]
+ add r0, #0xc
+ bl MOD12_02234088
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02236FAA:
+ mov r0, #7
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02236FB2:
+ mov r0, #0xf
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #0xf]
+ ldrsb r0, [r4, r0]
+ cmp r0, #2
+ bgt _02236FC2
+_02236FC0:
+ b _022370F2
+_02236FC2:
+ mov r0, #0
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ sub r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02236FD0:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02236FD4:
+ ldr r0, [r3, #0x28]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _02236FF8
+ ldrb r0, [r3, #3]
+ add sp, #8
+ add r1, r4, r0
+ mov r0, #0xe4
+ ldrsb r1, [r1, r0]
+ add r0, #0x26
+ strh r1, [r4, r0]
+ mov r0, #0
+ strb r0, [r4, #0x10]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02236FF8:
+ mov r0, #0xb
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237000:
+ mov r0, #0x10
+ ldrsb r0, [r4, r0]
+ mov r6, #0
+ add r5, r6, #0
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ mov r7, #0xe7
+_0223700E:
+ mov r2, #0x10
+ ldrsb r3, [r4, r2]
+ add r1, r4, r5
+ mov r0, #0xe4
+ mov r2, #0xa
+ ldrsb r0, [r1, r0]
+ mul r2, r3
+ sub r2, r0, r2
+ ldrsb r0, [r1, r7]
+ cmp r0, r2
+ bgt _02237036
+ ldr r0, [r4]
+ add r1, r5, #0
+ add r0, #0xc
+ add r6, r6, #1
+ bl MOD12_02234628
+ ldr r0, _022370F8 ; =0x000006DF
+ bl FUN_020054C8
+_02237036:
+ add r5, r5, #1
+ cmp r5, #3
+ blt _0223700E
+ cmp r6, #0
+ ble _0223704A
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223704A:
+ mov r0, #0xb
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237052:
+ mov r0, #0xf
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #0xf]
+ ldrsb r0, [r4, r0]
+ cmp r0, #2
+ ble _022370F2
+ mov r0, #0
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ sub r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223706E:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02237072:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02237078:
+ add r6, r4, #0
+ mov r5, #0
+ add r6, #0x4c
+_0223707E:
+ ldr r2, [r4]
+ ldr r0, _022370FC ; =0x00000231
+ add r1, r2, r5
+ ldrb r1, [r1, r0]
+ mov r0, #0x2c
+ add r7, r1, #0
+ mul r7, r0
+ ldr r0, [r6, r7]
+ lsl r1, r0, #0x1a
+ lsl r3, r0, #0x16
+ lsr r1, r1, #0x1e
+ lsr r3, r3, #0x1e
+ cmp r1, r3
+ bne _022370A6
+ lsl r1, r0, #0x18
+ lsl r0, r0, #0x14
+ lsr r1, r1, #0x1e
+ lsr r0, r0, #0x1e
+ cmp r1, r0
+ beq _022370BC
+_022370A6:
+ add r2, #0xc
+ add r0, r2, #0
+ ldr r2, [r6, r7]
+ add r1, r5, #0
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x1e
+ bl MOD12_02235200
+ ldr r0, _02237100 ; =0x000006E2
+ bl FUN_020054C8
+_022370BC:
+ add r5, r5, #1
+ cmp r5, #4
+ blt _0223707E
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_022370C8:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_022370CE:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_022370D4:
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [sp, #4]
+ bl FUN_0200CAB4
+_022370F2:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022370F8: .word 0x000006DF
+_022370FC: .word 0x00000231
+_02237100: .word 0x000006E2
+
+ thumb_func_start MOD12_02237104
+MOD12_02237104: ; 0x02237104
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_0223711C
+MOD12_0223711C: ; 0x0223711C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r0, #0x15
+ add r7, r1, #0
+ add r1, r0, #0
+ add r1, #0xff
+ add r6, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ mov r2, #0x45
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r6]
+ add r3, r4, #0
+ add r3, #0x14
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ mov r2, #0x1e
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ ldrb r0, [r5]
+ strb r0, [r4, #0xd]
+ ldrb r0, [r5, #1]
+ strb r0, [r4, #0xe]
+_0223715A:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0223715A
+ ldr r0, [r5]
+ ldr r2, _02237174 ; =0x00007530
+ str r0, [r3]
+ ldr r0, _02237178 ; =MOD12_0223717C
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02237174: .word 0x00007530
+_02237178: .word MOD12_0223717C
+
+ thumb_func_start MOD12_0223717C
+MOD12_0223717C: ; 0x0223717C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4, #0xd]
+ add r5, r0, #0
+ add r2, r4, #0
+ mov r0, #0x2c
+ add r2, #0x24
+ mul r0, r1
+ add r3, r2, r0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #8
+ bhi _0223724C
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022371A0: ; jump table
+ .short _022371B2 - _022371A0 - 2 ; case 0
+ .short _022371C2 - _022371A0 - 2 ; case 1
+ .short _022371E4 - _022371A0 - 2 ; case 2
+ .short _022371F6 - _022371A0 - 2 ; case 3
+ .short _022371FA - _022371A0 - 2 ; case 4
+ .short _02237200 - _022371A0 - 2 ; case 5
+ .short _0223722E - _022371A0 - 2 ; case 6
+ .short _02237248 - _022371A0 - 2 ; case 7
+ .short _0223724C - _022371A0 - 2 ; case 8
+_022371B2:
+ mov r0, #0x1a
+ ldrsh r1, [r3, r0]
+ add r0, #0xee
+ strh r1, [r4, r0]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_022371C2:
+ ldrb r1, [r3, #0x12]
+ cmp r1, #0
+ beq _022371DE
+ mov r0, #0
+ str r0, [sp]
+ ldrb r2, [r3, #0x13]
+ ldr r0, [r4]
+ add r3, #0xc
+ bl MOD12_02234FF0
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_022371DE:
+ mov r0, #3
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_022371E4:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _0223726A
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_022371F6:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_022371FA:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02237200:
+ mov r5, #0x42
+ lsl r5, r5, #2
+ mov r0, #0x18
+ ldrsh r1, [r4, r5]
+ ldrsh r0, [r3, r0]
+ cmp r1, r0
+ bge _02237228
+ add r1, #0xa
+ strh r1, [r4, r5]
+ ldr r0, [r4]
+ ldrb r1, [r4, #0xd]
+ ldrb r2, [r4, #0xe]
+ ldrsh r3, [r4, r5]
+ add r0, #0xc
+ bl MOD12_02234088
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237228:
+ mov r0, #7
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223722E:
+ mov r0, #0xf
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #0xf]
+ ldrsb r0, [r4, r0]
+ cmp r0, #2
+ ble _0223726A
+ mov r0, #0
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #0xc]
+ sub r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237248:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_0223724C:
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0223726A:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_0223726C
+MOD12_0223726C: ; 0x0223726C
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02237284
+MOD12_02237284: ; 0x02237284
+ push {r3, r4, r5, r6, r7, lr}
+ mov r0, #0x15
+ add r7, r1, #0
+ add r1, r0, #0
+ add r1, #0xff
+ add r6, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ mov r2, #0x45
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r6]
+ add r3, r4, #0
+ add r3, #0x14
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ mov r2, #0x1e
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ ldrb r0, [r5]
+ strb r0, [r4, #0xd]
+ ldrb r0, [r5, #1]
+ strb r0, [r4, #0xe]
+_022372C2:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _022372C2
+ ldr r0, [r5]
+ ldr r2, _022372DC ; =0x00007530
+ str r0, [r3]
+ ldr r0, _022372E0 ; =MOD12_022372E4
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022372DC: .word 0x00007530
+_022372E0: .word MOD12_022372E4
+
+ thumb_func_start MOD12_022372E4
+MOD12_022372E4: ; 0x022372E4
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldrb r1, [r4, #0xd]
+ add r6, r0, #0
+ add r3, r4, #0
+ add r2, r1, #0
+ mov r0, #0x2c
+ ldrb r1, [r4, #0xc]
+ add r3, #0x24
+ mul r2, r0
+ add r5, r3, r2
+ cmp r1, #0x19
+ bls _02237302
+ b _02237624
+_02237302:
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0223730E: ; jump table
+ .short _02237342 - _0223730E - 2 ; case 0
+ .short _02237358 - _0223730E - 2 ; case 1
+ .short _0223739C - _0223730E - 2 ; case 2
+ .short _022373AC - _0223730E - 2 ; case 3
+ .short _022373B0 - _0223730E - 2 ; case 4
+ .short _022373D8 - _0223730E - 2 ; case 5
+ .short _022373EC - _0223730E - 2 ; case 6
+ .short _022373F0 - _0223730E - 2 ; case 7
+ .short _02237424 - _0223730E - 2 ; case 8
+ .short _02237442 - _0223730E - 2 ; case 9
+ .short _02237446 - _0223730E - 2 ; case 10
+ .short _0223744C - _0223730E - 2 ; case 11
+ .short _022374B8 - _0223730E - 2 ; case 12
+ .short _022374D0 - _0223730E - 2 ; case 13
+ .short _022374EA - _0223730E - 2 ; case 14
+ .short _0223750A - _0223730E - 2 ; case 15
+ .short _02237532 - _0223730E - 2 ; case 16
+ .short _02237548 - _0223730E - 2 ; case 17
+ .short _0223754C - _0223730E - 2 ; case 18
+ .short _02237578 - _0223730E - 2 ; case 19
+ .short _02237586 - _0223730E - 2 ; case 20
+ .short _0223758A - _0223730E - 2 ; case 21
+ .short _0223759C - _0223730E - 2 ; case 22
+ .short _022375E0 - _0223730E - 2 ; case 23
+ .short _022375FC - _0223730E - 2 ; case 24
+ .short _02237624 - _0223730E - 2 ; case 25
+_02237342:
+ ldrb r0, [r5, #3]
+ add sp, #8
+ add r1, r4, r0
+ mov r0, #0xe4
+ ldrsb r1, [r1, r0]
+ add r0, #0x26
+ strh r1, [r4, r0]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_02237358:
+ ldrb r1, [r5, #3]
+ mov r0, #0xe7
+ add r3, r4, r1
+ ldrsb r2, [r3, r0]
+ mov r0, #0xe4
+ ldrsb r0, [r3, r0]
+ cmp r2, r0
+ ble _02237394
+ cmp r2, #0x32
+ blt _02237370
+ mov r6, #3
+ b _02237372
+_02237370:
+ mov r6, #2
+_02237372:
+ ldr r0, [r4]
+ add r2, r6, #0
+ add r0, #0xc
+ bl MOD12_02233BE4
+ ldr r3, _0223764C ; =0x0000010E
+ ldrb r1, [r5, #3]
+ ldr r0, [r4]
+ add r2, r6, #0
+ add r3, r4, r3
+ bl MOD12_02233C94
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_02237394:
+ mov r0, #3
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_0223739C:
+ add r0, #0xe2
+ ldrb r0, [r4, r0]
+ cmp r0, #1
+ bne _02237432
+ add r0, r1, #1
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_022373AC:
+ add r0, r1, #1
+ strb r0, [r4, #0xc]
+_022373B0:
+ add r0, r4, #0
+ add r0, #0xf8
+ ldrb r1, [r0]
+ cmp r1, #0
+ beq _022373D0
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r2, #0xec
+ mov r3, #0
+ bl MOD12_02234FB0
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_022373D0:
+ mov r0, #6
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_022373D8:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02237432
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_022373EC:
+ add r0, r1, #1
+ strb r0, [r4, #0xc]
+_022373F0:
+ ldrb r0, [r5, #3]
+ add r2, r4, r0
+ mov r0, #0xe7
+ ldrsb r1, [r2, r0]
+ mov r0, #0xe4
+ ldrsb r0, [r2, r0]
+ cmp r1, r0
+ ble _02237416
+ mov r0, #1
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x11
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ mov r2, #0
+ mov r3, #0x46
+ bl MOD12_022352F4
+ b _0223741A
+_02237416:
+ mov r0, #1
+ strb r0, [r4, #0x11]
+_0223741A:
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_02237424:
+ mov r0, #0xf
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #0xf]
+ ldrsb r0, [r4, r0]
+ cmp r0, #8
+ bgt _02237434
+_02237432:
+ b _02237648
+_02237434:
+ mov r0, #0
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_02237442:
+ add r0, r1, #1
+ strb r0, [r4, #0xc]
+_02237446:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_0223744C:
+ ldrb r0, [r5, #3]
+ add r3, r4, r0
+ mov r0, #0xe7
+ ldrsb r1, [r3, r0]
+ add r0, #0x23
+ ldrsh r0, [r4, r0]
+ cmp r0, r1
+ beq _022374B0
+ mov r2, #0xe4
+ ldrsb r0, [r3, r2]
+ sub r0, r1, r0
+ cmp r0, #0
+ ble _02237484
+ add r0, r2, #0
+ add r0, #0x26
+ ldrsh r1, [r4, r0]
+ add r0, r2, #0
+ add r0, #0x26
+ add r1, #0xa
+ strh r1, [r4, r0]
+ add r2, #0x26
+ ldr r0, [r4]
+ ldrb r1, [r5, #3]
+ ldrsh r2, [r4, r2]
+ add r0, #0xc
+ bl MOD12_02234628
+ b _022374A6
+_02237484:
+ add r0, r2, #0
+ add r0, #0x26
+ ldrsh r1, [r4, r0]
+ add r0, r2, #0
+ add r0, #0x26
+ sub r1, #0xa
+ strh r1, [r4, r0]
+ add r2, #0x26
+ ldr r0, [r4]
+ ldrb r1, [r5, #3]
+ ldrsh r2, [r4, r2]
+ add r0, #0xc
+ bl MOD12_02234628
+ ldr r0, _02237650 ; =0x000006DF
+ bl FUN_020054C8
+_022374A6:
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_022374B0:
+ mov r0, #0xe
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_022374B8:
+ ldr r0, [r4]
+ ldrb r1, [r5, #3]
+ add r0, #0xc
+ bl MOD12_022345FC
+ cmp r0, #1
+ bne _0223753C
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_022374D0:
+ mov r0, #0xf
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #0xf]
+ ldrsb r0, [r4, r0]
+ cmp r0, #2
+ ble _0223753C
+ mov r0, #0
+ strb r0, [r4, #0xf]
+ mov r0, #0xb
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_022374EA:
+ add r0, #0xde
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x32
+ blt _02237500
+ ldrb r1, [r5, #3]
+ ldr r0, [r4]
+ bl MOD12_022357B0
+ mov r1, #0x11
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+_02237500:
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_0223750A:
+ add r0, r4, #0
+ add r0, #0xf9
+ ldrb r1, [r0]
+ cmp r1, #0
+ beq _0223752A
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r2, #0xf2
+ mov r3, #0
+ bl MOD12_02234FB0
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_0223752A:
+ mov r0, #0x11
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_02237532:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ beq _0223753E
+_0223753C:
+ b _02237648
+_0223753E:
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_02237548:
+ add r0, r1, #1
+ strb r0, [r4, #0xc]
+_0223754C:
+ ldr r0, _02237654 ; =0x0000010A
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x32
+ blt _02237570
+ add r0, r4, #0
+ add r0, #0x12
+ str r0, [sp]
+ ldrb r1, [r4, #0xd]
+ ldrb r2, [r4, #0xe]
+ ldrb r3, [r5, #3]
+ ldr r0, [r4]
+ bl MOD12_02235824
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_02237570:
+ mov r0, #0x14
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_02237578:
+ ldrb r0, [r4, #0x12]
+ cmp r0, #0
+ bne _02237648
+ add r0, r1, #1
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_02237586:
+ add r0, r1, #1
+ strb r0, [r4, #0xc]
+_0223758A:
+ mov r0, #0x1a
+ ldrsh r1, [r5, r0]
+ add r0, #0xee
+ add sp, #8
+ strh r1, [r4, r0]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_0223759C:
+ add r0, #0xdc
+ mov r3, #0x18
+ ldrsh r1, [r4, r0]
+ ldrsh r0, [r5, r3]
+ cmp r1, r0
+ bge _022375D0
+ add r0, r3, #0
+ add r0, #0xf0
+ ldrsh r1, [r4, r0]
+ add r0, r3, #0
+ add r0, #0xf0
+ add r1, #0xa
+ strh r1, [r4, r0]
+ add r3, #0xf0
+ ldr r0, [r4]
+ ldrb r1, [r4, #0xd]
+ ldrb r2, [r4, #0xe]
+ ldrsh r3, [r4, r3]
+ add r0, #0xc
+ bl MOD12_02234088
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_022375D0:
+ ldr r0, [r4]
+ add r0, #0xc
+ bl MOD12_02233C74
+ mov r0, #0x18
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_022375E0:
+ mov r0, #0xf
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #0xf]
+ ldrsb r0, [r4, r0]
+ cmp r0, #2
+ ble _02237648
+ mov r0, #0
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ sub r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_022375FC:
+ add r1, r0, #0
+ add r1, #0xde
+ ldrsh r1, [r4, r1]
+ cmp r1, #0x32
+ blt _0223761A
+ add r0, #0xe4
+ ldr r0, [r4, r0]
+ bl MOD12_022357E4
+ ldr r0, [r4]
+ ldrb r1, [r5, #3]
+ add r0, #0xc
+ mov r2, #0
+ bl MOD12_02234628
+_0223761A:
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r4, r5, r6, pc}
+_02237624:
+ ldrb r0, [r4, #0x11]
+ cmp r0, #1
+ bne _02237648
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r6, #0
+ bl FUN_0200CAB4
+_02237648:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223764C: .word 0x0000010E
+_02237650: .word 0x000006DF
+_02237654: .word 0x0000010A
+
+ thumb_func_start MOD12_02237658
+MOD12_02237658: ; 0x02237658
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02237670
+MOD12_02237670: ; 0x02237670
+ push {r3, r4, r5, r6, r7, lr}
+ mov r0, #0x15
+ add r7, r1, #0
+ add r1, r0, #0
+ add r1, #0xff
+ add r6, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ mov r2, #0x45
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r6]
+ add r3, r4, #0
+ add r3, #0x14
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ mov r2, #0x1e
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ ldrb r0, [r5]
+ strb r0, [r4, #0xd]
+ ldrb r0, [r5, #1]
+ strb r0, [r4, #0xe]
+_022376AE:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _022376AE
+ ldr r0, [r5]
+ ldr r2, _022376C8 ; =0x00007530
+ str r0, [r3]
+ ldr r0, _022376CC ; =MOD12_022376D0
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022376C8: .word 0x00007530
+_022376CC: .word MOD12_022376D0
+
+ thumb_func_start MOD12_022376D0
+MOD12_022376D0: ; 0x022376D0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4, #0xd]
+ add r5, r0, #0
+ add r2, r4, #0
+ mov r0, #0x2c
+ add r2, #0x24
+ mul r0, r1
+ add r3, r2, r0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #8
+ bhi _022377A0
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022376F4: ; jump table
+ .short _02237706 - _022376F4 - 2 ; case 0
+ .short _02237716 - _022376F4 - 2 ; case 1
+ .short _02237738 - _022376F4 - 2 ; case 2
+ .short _0223774A - _022376F4 - 2 ; case 3
+ .short _0223774E - _022376F4 - 2 ; case 4
+ .short _02237754 - _022376F4 - 2 ; case 5
+ .short _02237782 - _022376F4 - 2 ; case 6
+ .short _0223779C - _022376F4 - 2 ; case 7
+ .short _022377A0 - _022376F4 - 2 ; case 8
+_02237706:
+ mov r0, #0x1a
+ ldrsh r1, [r3, r0]
+ add r0, #0xee
+ strh r1, [r4, r0]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237716:
+ ldrb r1, [r3, #0x12]
+ cmp r1, #0
+ beq _02237732
+ mov r0, #0
+ str r0, [sp]
+ ldrb r2, [r3, #0x13]
+ ldr r0, [r4]
+ add r3, #0xc
+ bl MOD12_02234FF0
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237732:
+ mov r0, #3
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237738:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _022377BE
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223774A:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_0223774E:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02237754:
+ mov r5, #0x42
+ lsl r5, r5, #2
+ mov r0, #0x18
+ ldrsh r1, [r4, r5]
+ ldrsh r0, [r3, r0]
+ cmp r1, r0
+ bge _02237776
+ add r1, #0xa
+ strh r1, [r4, r5]
+ ldr r0, [r4]
+ ldrb r1, [r4, #0xd]
+ ldrb r2, [r4, #0xe]
+ ldrsh r3, [r4, r5]
+ add r0, #0xc
+ bl MOD12_02234088
+ b _0223777A
+_02237776:
+ mov r0, #7
+ strb r0, [r4, #0xc]
+_0223777A:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237782:
+ mov r0, #0xf
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #0xf]
+ ldrsb r0, [r4, r0]
+ cmp r0, #2
+ ble _022377BE
+ mov r0, #0
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #0xc]
+ sub r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223779C:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_022377A0:
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_022377BE:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_022377C0
+MOD12_022377C0: ; 0x022377C0
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_022377D8
+MOD12_022377D8: ; 0x022377D8
+ push {r3, r4, r5, r6, r7, lr}
+ mov r0, #0x15
+ add r7, r1, #0
+ add r1, r0, #0
+ add r1, #0xf7
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ mov r2, #0x43
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ add r3, r4, #0
+ add r3, #0x10
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ mov r2, #0x1e
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+_0223780E:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0223780E
+ ldr r0, [r6]
+ ldr r2, _02237828 ; =0x00007530
+ str r0, [r3]
+ ldr r0, _0223782C ; =MOD12_02237830
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02237828: .word 0x00007530
+_0223782C: .word MOD12_02237830
+
+ thumb_func_start MOD12_02237830
+MOD12_02237830: ; 0x02237830
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp, #4]
+ ldr r0, _02237A8C ; =0x00000106
+ add r4, r1, #0
+ ldrb r0, [r4, r0]
+ mov r7, #0
+ add r0, r4, r0
+ add r0, #0xf9
+ ldrb r1, [r0]
+ cmp r1, #4
+ beq _0223786C
+ add r2, r4, #0
+ mov r0, #0x2c
+ add r2, #0x20
+ mul r0, r1
+ add r5, r2, r0
+ ldr r3, [r4]
+ ldr r6, _02237A90 ; =0x00000231
+ add r2, r7, #0
+_02237858:
+ ldrb r0, [r3, r6]
+ cmp r1, r0
+ bne _02237862
+ add r7, r2, #0
+ b _0223786E
+_02237862:
+ add r2, r2, #1
+ add r3, r3, #1
+ cmp r2, #4
+ blt _02237858
+ b _0223786E
+_0223786C:
+ add r5, r7, #0
+_0223786E:
+ ldrb r0, [r4, #0xc]
+ cmp r0, #0x11
+ bls _02237876
+ b _02237A6A
+_02237876:
+ add r2, r0, r0
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02237882: ; jump table
+ .short _022378A6 - _02237882 - 2 ; case 0
+ .short _022378B4 - _02237882 - 2 ; case 1
+ .short _02237908 - _02237882 - 2 ; case 2
+ .short _02237918 - _02237882 - 2 ; case 3
+ .short _0223791C - _02237882 - 2 ; case 4
+ .short _02237944 - _02237882 - 2 ; case 5
+ .short _0223795A - _02237882 - 2 ; case 6
+ .short _0223795E - _02237882 - 2 ; case 7
+ .short _02237988 - _02237882 - 2 ; case 8
+ .short _0223799C - _02237882 - 2 ; case 9
+ .short _022379A0 - _02237882 - 2 ; case 10
+ .short _022379C8 - _02237882 - 2 ; case 11
+ .short _022379DC - _02237882 - 2 ; case 12
+ .short _022379E0 - _02237882 - 2 ; case 13
+ .short _022379F2 - _02237882 - 2 ; case 14
+ .short _02237A24 - _02237882 - 2 ; case 15
+ .short _02237A40 - _02237882 - 2 ; case 16
+ .short _02237A6A - _02237882 - 2 ; case 17
+_022378A6:
+ mov r0, #0x1a
+ ldrsh r1, [r5, r0]
+ add r0, #0xea
+ strh r1, [r4, r0]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_022378B4:
+ ldrb r0, [r5, #9]
+ cmp r0, #0
+ bne _022378C6
+ mov r0, #0x6f
+ lsl r0, r0, #4
+ mov r6, #4
+ bl FUN_020054C8
+ b _022378F0
+_022378C6:
+ cmp r0, #1
+ bne _022378D4
+ ldr r0, _02237A94 ; =0x000006EF
+ mov r6, #5
+ bl FUN_020054C8
+ b _022378F0
+_022378D4:
+ cmp r0, #2
+ bne _022378E2
+ ldr r0, _02237A98 ; =0x000006EE
+ mov r6, #6
+ bl FUN_020054C8
+ b _022378F0
+_022378E2:
+ mov r0, #3
+ strb r0, [r4, #0xc]
+ ldr r0, _02237A9C ; =0x000006DF
+ bl FUN_020054C8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_022378F0:
+ ldr r3, _02237AA0 ; =0x00000107
+ ldrb r1, [r5, #3]
+ ldr r0, [r4]
+ add r2, r6, #0
+ add r3, r4, r3
+ bl MOD12_02233C94
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237908:
+ ldr r1, _02237AA0 ; =0x00000107
+ ldrb r1, [r4, r1]
+ cmp r1, #1
+ bne _0223794E
+ add r0, r0, #1
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237918:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_0223791C:
+ ldrb r1, [r5, #0x12]
+ cmp r1, #0
+ beq _0223793C
+ mov r0, #0
+ str r0, [sp]
+ ldrb r2, [r5, #0x13]
+ add r5, #0xc
+ ldr r0, [r4]
+ add r3, r5, #0
+ bl MOD12_02234FF0
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223793C:
+ mov r0, #6
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237944:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ beq _02237950
+_0223794E:
+ b _02237A88
+_02237950:
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223795A:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_0223795E:
+ add r0, r4, #0
+ add r0, #0xf4
+ ldrb r1, [r0]
+ cmp r1, #0
+ beq _02237980
+ add r2, r4, #0
+ add r3, r4, #0
+ ldr r0, [r4]
+ add r2, #0xe8
+ add r3, #0xf8
+ bl MOD12_02234FB0
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237980:
+ mov r0, #9
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237988:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02237A88
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223799C:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_022379A0:
+ add r0, r4, #0
+ add r0, #0xf5
+ ldrb r1, [r0]
+ cmp r1, #0
+ beq _022379C0
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r2, #0xee
+ mov r3, #0
+ bl MOD12_02234FB0
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_022379C0:
+ mov r0, #0xc
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_022379C8:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02237A88
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_022379DC:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_022379E0:
+ mov r0, #0x1a
+ ldrsh r1, [r5, r0]
+ add r0, #0xea
+ add sp, #8
+ strh r1, [r4, r0]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_022379F2:
+ mov r3, #0x41
+ lsl r3, r3, #2
+ mov r2, #0x18
+ ldrsh r0, [r4, r3]
+ ldrsh r2, [r5, r2]
+ cmp r0, r2
+ bge _02237A12
+ add r0, #0xa
+ strh r0, [r4, r3]
+ ldr r0, [r4]
+ ldrsh r3, [r4, r3]
+ add r0, #0xc
+ add r2, r7, #0
+ bl MOD12_02234088
+ b _02237A1A
+_02237A12:
+ mov r0, #0x10
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237A1A:
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237A24:
+ mov r0, #0xd
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #0xd]
+ ldrsb r0, [r4, r0]
+ cmp r0, #2
+ ble _02237A88
+ mov r0, #0
+ strb r0, [r4, #0xd]
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ sub r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237A40:
+ ldr r0, _02237A8C ; =0x00000106
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ ldrb r0, [r4, r0]
+ cmp r0, #4
+ bhs _02237A60
+ add r0, r4, r0
+ add r0, #0xf9
+ ldrb r0, [r0]
+ cmp r0, #4
+ beq _02237A60
+ mov r0, #0xd
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237A60:
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237A6A:
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [sp, #4]
+ bl FUN_0200CAB4
+_02237A88:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02237A8C: .word 0x00000106
+_02237A90: .word 0x00000231
+_02237A94: .word 0x000006EF
+_02237A98: .word 0x000006EE
+_02237A9C: .word 0x000006DF
+_02237AA0: .word 0x00000107
+
+ thumb_func_start MOD12_02237AA4
+MOD12_02237AA4: ; 0x02237AA4
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02237ABC
+MOD12_02237ABC: ; 0x02237ABC
+ push {r3, r4, r5, r6, r7, lr}
+ mov r0, #0x15
+ add r7, r1, #0
+ add r1, r0, #0
+ add r1, #0xff
+ add r6, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ mov r2, #0x45
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r6]
+ add r3, r4, #0
+ add r3, #0x14
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ mov r2, #0x1e
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ ldrb r0, [r5]
+ strb r0, [r4, #0xd]
+ ldrb r0, [r5, #1]
+ strb r0, [r4, #0xe]
+_02237AFA:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02237AFA
+ ldr r0, [r5]
+ ldr r2, _02237B14 ; =0x00007530
+ str r0, [r3]
+ ldr r0, _02237B18 ; =MOD12_02237B1C
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02237B14: .word 0x00007530
+_02237B18: .word MOD12_02237B1C
+
+ thumb_func_start MOD12_02237B1C
+MOD12_02237B1C: ; 0x02237B1C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4, #0xd]
+ add r5, r0, #0
+ add r2, r4, #0
+ mov r0, #0x2c
+ add r2, #0x24
+ mul r0, r1
+ add r3, r2, r0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #0xe
+ bls _02237B36
+ b _02237C6E
+_02237B36:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02237B42: ; jump table
+ .short _02237B60 - _02237B42 - 2 ; case 0
+ .short _02237B70 - _02237B42 - 2 ; case 1
+ .short _02237B92 - _02237B42 - 2 ; case 2
+ .short _02237BA4 - _02237B42 - 2 ; case 3
+ .short _02237BA8 - _02237B42 - 2 ; case 4
+ .short _02237BCC - _02237B42 - 2 ; case 5
+ .short _02237BDE - _02237B42 - 2 ; case 6
+ .short _02237BE2 - _02237B42 - 2 ; case 7
+ .short _02237C06 - _02237B42 - 2 ; case 8
+ .short _02237C18 - _02237B42 - 2 ; case 9
+ .short _02237C1C - _02237B42 - 2 ; case 10
+ .short _02237C22 - _02237B42 - 2 ; case 11
+ .short _02237C50 - _02237B42 - 2 ; case 12
+ .short _02237C6A - _02237B42 - 2 ; case 13
+ .short _02237C6E - _02237B42 - 2 ; case 14
+_02237B60:
+ mov r0, #0x1a
+ ldrsh r1, [r3, r0]
+ add r0, #0xee
+ strh r1, [r4, r0]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237B70:
+ ldrb r1, [r3, #0x12]
+ cmp r1, #0
+ beq _02237B8C
+ mov r0, #0
+ str r0, [sp]
+ ldrb r2, [r3, #0x13]
+ ldr r0, [r4]
+ add r3, #0xc
+ bl MOD12_02234FF0
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237B8C:
+ mov r0, #3
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237B92:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02237C8C
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237BA4:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02237BA8:
+ add r0, r4, #0
+ add r0, #0xf8
+ ldrb r1, [r0]
+ cmp r1, #0
+ beq _02237BC6
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r2, #0xec
+ mov r3, #0
+ bl MOD12_02234FB0
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237BC6:
+ mov r0, #6
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237BCC:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02237C8C
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237BDE:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02237BE2:
+ add r0, r4, #0
+ add r0, #0xf9
+ ldrb r1, [r0]
+ cmp r1, #0
+ beq _02237C00
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r2, #0xf2
+ mov r3, #0
+ bl MOD12_02234FB0
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237C00:
+ mov r0, #9
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237C06:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02237C8C
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237C18:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02237C1C:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02237C22:
+ mov r5, #0x42
+ lsl r5, r5, #2
+ mov r0, #0x18
+ ldrsh r1, [r4, r5]
+ ldrsh r0, [r3, r0]
+ cmp r1, r0
+ bge _02237C44
+ add r1, #0xa
+ strh r1, [r4, r5]
+ ldr r0, [r4]
+ ldrb r1, [r4, #0xd]
+ ldrb r2, [r4, #0xe]
+ ldrsh r3, [r4, r5]
+ add r0, #0xc
+ bl MOD12_02234088
+ b _02237C48
+_02237C44:
+ mov r0, #0xd
+ strb r0, [r4, #0xc]
+_02237C48:
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237C50:
+ mov r0, #0xf
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #0xf]
+ ldrsb r0, [r4, r0]
+ cmp r0, #2
+ ble _02237C8C
+ mov r0, #0
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #0xc]
+ sub r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237C6A:
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_02237C6E:
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02237C8C:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02237C90
+MOD12_02237C90: ; 0x02237C90
+ push {r3, lr}
+ mov r0, #0xf4
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02237CA8
+MOD12_02237CA8: ; 0x02237CA8
+ push {r3, r4, r5, r6, r7, lr}
+ mov r0, #0x15
+ add r7, r1, #0
+ add r1, r0, #0
+ add r1, #0xff
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ mov r2, #0x45
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ add r3, r4, #0
+ add r3, #0x14
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ mov r2, #0x1e
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r1, [r7, #0xc]
+ ldr r0, _02237D04 ; =0x00000123
+ ldrb r0, [r1, r0]
+ strb r0, [r4, #0xd]
+ ldrb r0, [r6, #1]
+ strb r0, [r4, #0xe]
+_02237CEA:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02237CEA
+ ldr r0, [r6]
+ ldr r2, _02237D08 ; =0x00007530
+ str r0, [r3]
+ ldr r0, _02237D0C ; =MOD12_02237D10
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02237D04: .word 0x00000123
+_02237D08: .word 0x00007530
+_02237D0C: .word MOD12_02237D10
+
+ thumb_func_start MOD12_02237D10
+MOD12_02237D10: ; 0x02237D10
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0xd]
+ add r2, r4, #0
+ mov r1, #0x2c
+ add r2, #0x24
+ mul r1, r0
+ add r2, r2, r1
+ ldrb r1, [r4, #0xc]
+ cmp r1, #0
+ beq _02237D34
+ cmp r1, #1
+ beq _02237D54
+ cmp r1, #2
+ beq _02237D68
+ b _02237D70
+_02237D34:
+ mov r1, #0x18
+ ldrsh r1, [r2, r1]
+ add r2, sp, #0
+ bl MOD12_022352A0
+ add r1, r0, #0
+ ldr r0, [r4]
+ add r2, sp, #0
+ mov r3, #0
+ bl MOD12_02234FB0
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237D54:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02237D8E
+ ldrb r0, [r4, #0xc]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237D68:
+ add r0, r1, #1
+ add sp, #8
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_02237D70:
+ mov r0, #0xc3
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02237D8E:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02237D94
+MOD12_02237D94: ; 0x02237D94
+ push {r3, lr}
+ mov r1, #0xf4
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02237DA8
+MOD12_02237DA8: ; 0x02237DA8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x15
+ mov r1, #0x28
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x28
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _02237DE4 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, _02237DE8 ; =MOD12_02237DEC
+ str r6, [r4, #0xc]
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02237DE4: .word 0x00007530
+_02237DE8: .word MOD12_02237DEC
+
+ thumb_func_start MOD12_02237DEC
+MOD12_02237DEC: ; 0x02237DEC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #3
+ bhi _02237EC2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02237E0A: ; jump table
+ .short _02237E12 - _02237E0A - 2 ; case 0
+ .short _02237E36 - _02237E0A - 2 ; case 1
+ .short _02237E78 - _02237E0A - 2 ; case 2
+ .short _02237EC2 - _02237E0A - 2 ; case 3
+_02237E12:
+ mov r1, #0
+ add r0, r4, #0
+ str r1, [sp]
+ add r0, #0x27
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ mov r3, #0x46
+ bl MOD12_022352F4
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add r4, #0x20
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237E36:
+ add r7, r4, #0
+ mov r5, #0
+ add r6, r4, #0
+ add r7, #0x23
+_02237E3E:
+ ldr r0, [r4]
+ ldr r1, _02237EE8 ; =0x00000231
+ add r2, r0, r5
+ ldrb r1, [r2, r1]
+ bl MOD12_022335E4
+ str r0, [r6, #0x10]
+ ldr r1, [r4]
+ add r3, r7, r5
+ str r0, [sp]
+ add r0, r1, #0
+ add r2, r1, r5
+ ldr r1, _02237EE8 ; =0x00000231
+ ldrb r1, [r2, r1]
+ add r2, r5, #0
+ bl MOD12_02235470
+ add r5, r5, #1
+ add r6, r6, #4
+ cmp r5, #4
+ blt _02237E3E
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add r4, #0x20
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237E78:
+ mov r7, #0
+ add r6, r7, #0
+ add r5, r4, #0
+_02237E7E:
+ add r0, r4, r6
+ add r0, #0x23
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02237E94
+ ldr r0, [r5, #0x10]
+ bl MOD12_02233644
+ cmp r0, #0
+ bne _02237E94
+ add r7, r7, #1
+_02237E94:
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _02237E7E
+ cmp r7, #4
+ bne _02237EE4
+ mov r6, #0
+ add r5, r4, #0
+_02237EA4:
+ ldr r0, [r5, #0x10]
+ bl MOD12_0223361C
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _02237EA4
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add r4, #0x20
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02237EC2:
+ add r0, r4, #0
+ add r0, #0x27
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _02237EE4
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02237EE4:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02237EE8: .word 0x00000231
+
+ thumb_func_start MOD12_02237EEC
+MOD12_02237EEC: ; 0x02237EEC
+ push {r3, lr}
+ mov r0, #0xf8
+ str r0, [sp]
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ lsl r2, r2, #0x10
+ add r0, r1, r0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+
+ thumb_func_start MOD12_02237F04
+MOD12_02237F04: ; 0x02237F04
+ push {r4, r5, r6, lr}
+ mov r0, #0x23
+ add r5, r1, #0
+ lsl r0, r0, #4
+ add r4, r2, #0
+ add r6, r5, r0
+ mov r2, #0x1f
+_02237F12:
+ ldmia r3!, {r0, r1}
+ stmia r6!, {r0, r1}
+ sub r2, r2, #1
+ bne _02237F12
+ add r0, r5, #0
+ add r0, #0xc
+ bl MOD12_02234044
+ add r0, r5, #0
+ add r0, #0xc
+ bl MOD12_0223524C
+ add r0, r5, #0
+ bl MOD12_0223513C
+ add r0, r5, #0
+ bl MOD12_022335B0
+ mov r0, #0xc3
+ lsl r0, r0, #4
+ mov r2, #0
+ add r0, r5, r0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_02237F48
+MOD12_02237F48: ; 0x02237F48
+ push {r3, lr}
+ mov r1, #0xf4
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02237F5C
+MOD12_02237F5C: ; 0x02237F5C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #0x15
+ mov r1, #0x20
+ add r6, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x20
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ ldr r2, _02237FCC ; =0x00007530
+ str r0, [r4]
+ ldrh r0, [r6]
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ str r7, [r4, #0xc]
+ ldrb r0, [r5]
+ strb r0, [r4, #0x11]
+ add r0, r5, #0
+ add r0, #0xd8
+ ldrh r0, [r0]
+ strh r0, [r4, #0x14]
+ add r0, r5, #0
+ add r0, #0xda
+ ldrh r0, [r0]
+ strh r0, [r4, #0x16]
+ add r0, r5, #0
+ add r0, #0xdc
+ ldrh r0, [r0]
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ add r0, #0xe4
+ ldrb r0, [r0]
+ strb r0, [r4, #0x1a]
+ add r0, r5, #0
+ add r0, #0xe7
+ ldrb r0, [r0]
+ add r5, #0xe6
+ strb r0, [r4, #0x1c]
+ ldrb r0, [r5]
+ strb r0, [r4, #0x1b]
+ ldr r0, _02237FD0 ; =MOD12_02237FD4
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02237FCC: .word 0x00007530
+_02237FD0: .word MOD12_02237FD4
+
+ thumb_func_start MOD12_02237FD4
+MOD12_02237FD4: ; 0x02237FD4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _02237FEA
+ cmp r0, #1
+ beq _0223800A
+ cmp r0, #2
+ beq _0223801C
+ b _02238040
+_02237FEA:
+ ldrb r1, [r4, #0x1a]
+ cmp r1, #0
+ beq _02238004
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r2, #0x14
+ mov r3, #0
+ bl MOD12_02234FB0
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02238004:
+ mov r0, #0x64
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223800A:
+ ldr r0, [r4]
+ bl MOD12_02235020
+ cmp r0, #0
+ bne _02238058
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223801C:
+ ldrb r0, [r4, #0x12]
+ add r0, r0, #1
+ strb r0, [r4, #0x12]
+ ldrb r0, [r4, #0x1c]
+ cmp r0, #1
+ bne _02238030
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02238030:
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x1b]
+ cmp r1, r0
+ blo _02238058
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02238040:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02238058:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223805C
+MOD12_0223805C: ; 0x0223805C
+ strb r1, [r0, #0x12]
+ ldr r1, _02238088 ; =0x00007530
+ strb r2, [r0, #0x13]
+ cmp r3, r1
+ beq _02238068
+ strb r3, [r0, #0xc]
+_02238068:
+ ldr r2, [sp]
+ ldr r1, _02238088 ; =0x00007530
+ cmp r2, r1
+ beq _02238072
+ strb r2, [r0, #0xd]
+_02238072:
+ ldr r2, [sp, #4]
+ ldr r1, _02238088 ; =0x00007530
+ cmp r2, r1
+ beq _0223807C
+ strh r2, [r0, #0xe]
+_0223807C:
+ ldr r2, [sp, #8]
+ ldr r1, _02238088 ; =0x00007530
+ cmp r2, r1
+ beq _02238086
+ strb r2, [r0, #0x10]
+_02238086:
+ bx lr
+ .align 2, 0
+_02238088: .word 0x00007530
+
+ thumb_func_start MOD12_0223808C
+MOD12_0223808C: ; 0x0223808C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x26
+ add r5, r1, #0
+ lsl r0, r0, #4
+ add r4, r6, r0
+ add r3, r5, #0
+ mov r2, #0x19
+_0223809C:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0223809C
+ add r0, r5, #0
+ bl MOD12_02238688
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #0xb0
+ bl MI_CpuFill8
+ mov r4, #0
+ add r7, r6, #0
+_022380B8:
+ add r1, r5, #0
+ add r0, r6, #0
+ add r1, #0xc
+ add r2, r4, #0
+ bl MOD12_02235274
+ ldr r0, _022380F4 ; =0x0000023E
+ add r1, r6, r4
+ ldrb r0, [r1, r0]
+ mov r1, #0xa
+ strb r0, [r5, #3]
+ ldr r0, _022380F8 ; =0x00000236
+ ldrh r0, [r7, r0]
+ strh r0, [r5]
+ bl FUN_0206AB18
+ strb r0, [r5, #2]
+ mov r0, #0x23
+ lsl r0, r0, #4
+ add r0, r6, r0
+ add r1, r4, #0
+ bl MOD12_02235C18
+ strb r0, [r5, #9]
+ add r4, r4, #1
+ add r5, #0x2c
+ add r7, r7, #2
+ cmp r4, #4
+ blt _022380B8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022380F4: .word 0x0000023E
+_022380F8: .word 0x00000236
+
+ thumb_func_start MOD12_022380FC
+MOD12_022380FC: ; 0x022380FC
+ push {r4, r5, r6, r7}
+ add r3, r1, #0
+ ldr r5, _02238154 ; =0xFFFFFCFF
+ ldr r6, _02238158 ; =0xFFFFF3FF
+ add r4, r0, #0
+ mov r1, #0
+ add r2, r3, #0
+_0223810A:
+ ldr r7, [r2, #0x28]
+ add r1, r1, #1
+ add r0, r7, #0
+ lsl r7, r7, #0x1a
+ lsr r7, r7, #0x1e
+ lsl r7, r7, #0x1e
+ and r0, r5
+ lsr r7, r7, #0x16
+ orr r7, r0
+ add r0, r7, #0
+ lsl r7, r7, #0x18
+ lsr r7, r7, #0x1e
+ lsl r7, r7, #0x1e
+ and r0, r6
+ lsr r7, r7, #0x14
+ orr r0, r7
+ str r0, [r2, #0x28]
+ add r2, #0x2c
+ cmp r1, #4
+ blt _0223810A
+ ldr r1, _0223815C ; =0x00000252
+ mov r0, #0
+ add r5, r1, #0
+_02238138:
+ add r7, r4, r0
+ ldrsb r6, [r7, r1]
+ add r2, r3, r0
+ add r2, #0xc0
+ strb r6, [r2]
+ add r2, r3, r0
+ ldrsb r6, [r7, r5]
+ add r2, #0xc3
+ add r0, r0, #1
+ strb r6, [r2]
+ cmp r0, #3
+ blt _02238138
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+_02238154: .word 0xFFFFFCFF
+_02238158: .word 0xFFFFF3FF
+_0223815C: .word 0x00000252
+
+ thumb_func_start MOD12_02238160
+MOD12_02238160: ; 0x02238160
+ push {r4, r5, r6, r7}
+ mov r5, #0
+ ldr r2, _02238188 ; =0x00000252
+ add r3, r5, #0
+_02238168:
+ add r7, r1, r5
+ mov r6, #0xc3
+ ldrsb r7, [r7, r6]
+ ldr r6, _02238188 ; =0x00000252
+ add r4, r0, r5
+ strb r7, [r4, r6]
+ ldrsb r6, [r4, r2]
+ cmp r6, #0x32
+ blt _0223817E
+ ldr r6, _02238188 ; =0x00000252
+ strb r3, [r4, r6]
+_0223817E:
+ add r5, r5, #1
+ cmp r5, #3
+ blt _02238168
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+_02238188: .word 0x00000252
+
+ thumb_func_start MOD12_0223818C
+MOD12_0223818C: ; 0x0223818C
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r7, _022381D4 ; =0x00000242
+ mov ip, r1
+ add r5, r7, #0
+ mov lr, r0
+ mov r1, #0
+ mov r2, ip
+ add r3, r0, #0
+ mov r6, #0x18
+ add r5, #8
+_022381A0:
+ ldr r0, _022381D4 ; =0x00000242
+ mov r4, #0x18
+ ldrsh r0, [r3, r0]
+ ldrsh r4, [r2, r4]
+ add r1, r1, #1
+ add r0, r0, r4
+ strh r0, [r3, r7]
+ ldrsh r0, [r2, r6]
+ add r2, #0x2c
+ strh r0, [r3, r5]
+ add r3, r3, #2
+ cmp r1, #4
+ blt _022381A0
+ mov r1, #0x26
+ lsl r1, r1, #4
+ mov r0, lr
+ add r4, r0, r1
+ mov r3, #0x19
+_022381C4:
+ mov r2, ip
+ ldmia r2!, {r0, r1}
+ mov ip, r2
+ stmia r4!, {r0, r1}
+ sub r3, r3, #1
+ bne _022381C4
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022381D4: .word 0x00000242
+
+ thumb_func_start MOD12_022381D8
+MOD12_022381D8: ; 0x022381D8
+ push {r3, r4}
+ mov r2, #0x2c
+ mul r2, r1
+ add r2, r0, r2
+ mov r1, #0x18
+ ldrsh r1, [r2, r1]
+ mov r4, #0
+ strh r1, [r2, #0x1a]
+ strh r4, [r2, #0x1e]
+ strh r4, [r2, #0x20]
+ mov r1, #0xc3
+_022381EE:
+ add r3, r0, r4
+ ldrsb r2, [r3, r1]
+ add r3, #0xc0
+ add r4, r4, #1
+ strb r2, [r3]
+ cmp r4, #3
+ blt _022381EE
+ mov r2, #0
+ add r1, r2, #0
+_02238200:
+ strb r1, [r0, #0x14]
+ strb r1, [r0, #0x12]
+ add r2, r2, #1
+ add r0, #0x2c
+ cmp r2, #4
+ blt _02238200
+ pop {r3, r4}
+ bx lr
+
+ thumb_func_start MOD12_02238210
+MOD12_02238210: ; 0x02238210
+ mov r3, #0
+ mov r1, #0x18
+_02238214:
+ ldrsh r2, [r0, r1]
+ add r3, r3, #1
+ strh r2, [r0, #0x1c]
+ add r0, #0x2c
+ cmp r3, #4
+ blt _02238214
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02238224
+MOD12_02238224: ; 0x02238224
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r7, r2, #0
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD12_022381D8
+ mov r0, #0x2c
+ add r4, r7, #0
+ mul r4, r0
+ add r6, r5, #2
+ ldrb r0, [r6, r4]
+ ldr r1, _02238274 ; =0x02245619
+ lsl r2, r0, #3
+ ldrb r1, [r1, r2]
+ cmp r1, #0
+ bne _0223826E
+ mov r1, #4
+ add r2, sp, #0x10
+ add r3, sp, #0xc
+ bl FUN_02083170
+ ldr r1, [sp, #0x10]
+ ldr r0, _02238278 ; =0x0000FFFF
+ cmp r1, r0
+ beq _0223826E
+ ldr r0, _0223827C ; =0x00007530
+ mov r2, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldrb r1, [r6, r4]
+ add r0, r5, r4
+ add r3, r7, #0
+ bl MOD12_0223805C
+_0223826E:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02238274: .word 0x02245619
+_02238278: .word 0x0000FFFF
+_0223827C: .word 0x00007530
+
+ thumb_func_start MOD12_02238280
+MOD12_02238280: ; 0x02238280
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r2, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD12_022381D8
+ add r4, r6, #0
+ mov r0, #0x2c
+ mul r4, r0
+ add r0, r5, r4
+ ldrb r0, [r0, #2]
+ add r6, r5, #4
+ bl FUN_02083114
+ strb r0, [r6, r4]
+ ldrb r1, [r6, r4]
+ add r0, r5, r4
+ strh r1, [r0, #0x18]
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_022382A8
+MOD12_022382A8: ; 0x022382A8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r1, #0
+ str r0, [sp, #4]
+ str r2, [sp, #8]
+ add r0, r7, #0
+ add r1, r2, #0
+ str r3, [sp, #0xc]
+ bl MOD12_022381D8
+ ldr r0, [sp, #8]
+ mov r1, #0x2c
+ add r4, r0, #0
+ mul r4, r1
+ add r0, r7, r4
+ ldrb r0, [r0, #2]
+ lsl r6, r0, #3
+ ldr r0, _02238364 ; =0x02245618
+ ldrb r0, [r0, r6]
+ cmp r0, #3
+ bne _022382FE
+ ldr r0, [sp, #0xc]
+ ldr r5, _02238368 ; =0x02245614
+ str r0, [sp]
+ ldr r2, [sp, #8]
+ ldr r0, [sp, #4]
+ ldr r5, [r5, r6]
+ add r1, r7, #0
+ add r3, r2, #0
+ blx r5
+ add r2, r7, #0
+ mov r0, #1
+ add r3, r7, r4
+ strb r0, [r3, #0x14]
+ mov r0, #0x1e
+ add r2, #0x18
+ mov r5, #0x20
+ ldrsh r0, [r3, r0]
+ ldrsh r3, [r3, r5]
+ ldrsh r1, [r2, r4]
+ add r0, r0, r3
+ add r0, r1, r0
+ strh r0, [r2, r4]
+_022382FE:
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ blt _02238360
+_02238308:
+ ldr r1, [sp, #4]
+ ldr r0, [sp, #0x10]
+ add r1, r1, r0
+ ldr r0, _0223836C ; =0x00000231
+ ldrb r5, [r1, r0]
+ mov r0, #0x2c
+ mul r0, r5
+ add r4, r7, r0
+ ldrb r0, [r4, #2]
+ lsl r1, r0, #3
+ ldr r0, _02238368 ; =0x02245614
+ add r0, r0, r1
+ ldrb r0, [r0, #4]
+ cmp r0, #2
+ bne _02238354
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD12_022381D8
+ ldr r0, [sp, #0xc]
+ add r3, r5, #0
+ str r0, [sp]
+ ldrb r5, [r4, #2]
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #8]
+ lsl r6, r5, #3
+ ldr r5, _02238368 ; =0x02245614
+ add r1, r7, #0
+ ldr r5, [r5, r6]
+ blx r5
+ mov r0, #1
+ strb r0, [r4, #0x14]
+ mov r0, #0x18
+ ldrsh r1, [r4, r0]
+ mov r0, #0x1e
+ ldrsh r0, [r4, r0]
+ add r0, r1, r0
+ strh r0, [r4, #0x18]
+_02238354:
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0xc]
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, r1
+ ble _02238308
+_02238360:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02238364: .word 0x02245618
+_02238368: .word 0x02245614
+_0223836C: .word 0x00000231
+
+ thumb_func_start MOD12_02238370
+MOD12_02238370: ; 0x02238370
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r6, r2, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD12_022381D8
+ add r7, r5, #0
+ lsl r0, r6, #2
+ add r7, #0xb0
+ str r0, [sp, #0xc]
+ ldr r0, [r7, r0]
+ lsl r0, r0, #8
+ lsr r0, r0, #0x18
+ beq _022383C6
+ mov r0, #0x2c
+ add r4, r6, #0
+ mul r4, r0
+ add r1, r5, r4
+ mov r0, #0x18
+ ldrsh r0, [r1, r0]
+ add r1, r5, #0
+ add r1, #0x1e
+ ldrsh r2, [r1, r4]
+ add r2, r2, r0
+ strh r2, [r1, r4]
+ mov r1, #0xa
+ bl _s32_div_f
+ ldr r1, _022383E8 ; =0x00007530
+ mov r2, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ ldr r1, [sp, #0xc]
+ add r0, r5, r4
+ ldr r1, [r7, r1]
+ add r3, r6, #0
+ lsl r1, r1, #8
+ lsr r1, r1, #0x18
+ bl MOD12_0223805C
+_022383C6:
+ mov r0, #0x2c
+ add r2, r6, #0
+ add r1, r5, #0
+ mul r2, r0
+ add r1, #0x18
+ add r5, r5, r2
+ mov r3, #0x1e
+ ldrsh r4, [r5, r3]
+ mov r3, #0x20
+ ldrsh r3, [r5, r3]
+ ldrsh r0, [r1, r2]
+ add r3, r4, r3
+ add r0, r0, r3
+ strh r0, [r1, r2]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022383E8: .word 0x00007530
+
+ thumb_func_start MOD12_022383EC
+MOD12_022383EC: ; 0x022383EC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r6, r2, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r6, #0
+ str r3, [sp, #8]
+ bl MOD12_022381D8
+ mov r0, #0x2c
+ add r4, r6, #0
+ mul r4, r0
+ add r0, r5, r4
+ ldrb r0, [r0, #2]
+ lsl r7, r0, #3
+ ldr r0, _02238444 ; =0x02245618
+ ldrb r0, [r0, r7]
+ cmp r0, #4
+ bne _0223843C
+ ldr r0, [sp, #8]
+ add r2, r6, #0
+ add r3, r6, #0
+ ldr r6, _02238448 ; =0x02245614
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ ldr r6, [r6, r7]
+ add r1, r5, #0
+ blx r6
+ add r3, r5, r4
+ mov r0, #1
+ strb r0, [r3, #0x14]
+ add r5, #0x18
+ mov r1, #0x1e
+ ldrsh r2, [r5, r4]
+ ldrsh r1, [r3, r1]
+ add sp, #0xc
+ add r1, r2, r1
+ strh r1, [r5, r4]
+ pop {r4, r5, r6, r7, pc}
+_0223843C:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02238444: .word 0x02245618
+_02238448: .word 0x02245614
+
+ thumb_func_start MOD12_0223844C
+MOD12_0223844C: ; 0x0223844C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r6, r2, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r6, #0
+ str r3, [sp, #8]
+ bl MOD12_022381D8
+ mov r0, #0x2c
+ add r4, r6, #0
+ mul r4, r0
+ add r0, r5, r4
+ ldrb r0, [r0, #2]
+ lsl r7, r0, #3
+ ldr r0, _022384A4 ; =0x02245618
+ ldrb r0, [r0, r7]
+ cmp r0, #5
+ bne _0223849C
+ ldr r0, [sp, #8]
+ add r2, r6, #0
+ add r3, r6, #0
+ ldr r6, _022384A8 ; =0x02245614
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ ldr r6, [r6, r7]
+ add r1, r5, #0
+ blx r6
+ add r3, r5, r4
+ mov r0, #1
+ strb r0, [r3, #0x14]
+ add r5, #0x18
+ mov r1, #0x1e
+ ldrsh r2, [r5, r4]
+ ldrsh r1, [r3, r1]
+ add sp, #0xc
+ add r1, r2, r1
+ strh r1, [r5, r4]
+ pop {r4, r5, r6, r7, pc}
+_0223849C:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022384A4: .word 0x02245618
+_022384A8: .word 0x02245614
+
+ thumb_func_start MOD12_022384AC
+MOD12_022384AC: ; 0x022384AC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r6, r2, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r6, #0
+ str r3, [sp, #8]
+ bl MOD12_022381D8
+ mov r0, #0x2c
+ add r4, r6, #0
+ mul r4, r0
+ add r0, r5, r4
+ ldrb r0, [r0, #2]
+ lsl r7, r0, #3
+ ldr r0, _02238504 ; =0x02245618
+ ldrb r0, [r0, r7]
+ cmp r0, #6
+ bne _022384FC
+ ldr r0, [sp, #8]
+ add r2, r6, #0
+ add r3, r6, #0
+ ldr r6, _02238508 ; =0x02245614
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ ldr r6, [r6, r7]
+ add r1, r5, #0
+ blx r6
+ add r3, r5, r4
+ mov r0, #1
+ strb r0, [r3, #0x14]
+ add r5, #0x18
+ mov r1, #0x1e
+ ldrsh r2, [r5, r4]
+ ldrsh r1, [r3, r1]
+ add sp, #0xc
+ add r1, r2, r1
+ strh r1, [r5, r4]
+ pop {r4, r5, r6, r7, pc}
+_022384FC:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02238504: .word 0x02245618
+_02238508: .word 0x02245614
+
+ thumb_func_start MOD12_0223850C
+MOD12_0223850C: ; 0x0223850C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ str r0, [sp]
+ add r0, r4, #0
+ add r1, r2, #0
+ str r2, [sp, #4]
+ add r7, r3, #0
+ bl MOD12_022381D8
+ mov r0, #0
+ strb r0, [r7, #0xc]
+ strb r0, [r7, #0xd]
+ ldr r1, [sp]
+ ldr r0, [sp, #4]
+ mov r6, #0x2c
+ add r1, r1, r0
+ ldr r0, _02238658 ; =0x0000023E
+ ldrb r5, [r1, r0]
+ ldr r0, [sp]
+ ldr r3, [r0]
+ ldr r0, [sp, #4]
+ add r2, r5, #0
+ add r1, r0, #0
+ mul r1, r6
+ add r0, r4, r1
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r0, #0xf3
+ str r1, [sp, #0x10]
+ add r6, #0xf2
+ ldrb r0, [r3, r0]
+ ldrh r1, [r4, r1]
+ ldrb r3, [r3, r6]
+ bl MOD12_02235C44
+ add r6, r0, #0
+ cmp r6, #0
+ ble _0223857A
+ ldr r0, [sp, #0xc]
+ ldr r0, [r0, #0x28]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bne _0223857A
+ add r0, r4, #0
+ add r0, #0xc3
+ ldrsb r1, [r0, r5]
+ add r1, r1, r6
+ strb r1, [r0, r5]
+ ldrsb r1, [r0, r5]
+ cmp r1, #0x32
+ blt _022385A6
+ mov r1, #0x32
+ strb r1, [r0, r5]
+ b _022385A6
+_0223857A:
+ cmp r6, #0
+ bge _022385A4
+ ldr r0, [sp, #0xc]
+ ldr r0, [r0, #0x28]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ bne _022385A4
+ add r0, r4, #0
+ add r0, #0xc3
+ add r1, r0, r5
+ ldrsb r0, [r0, r5]
+ cmp r0, #0
+ ble _022385A4
+ add r0, r0, r6
+ mov r2, #0
+ strb r0, [r1]
+ ldrsb r0, [r1, r2]
+ cmp r0, #0
+ bgt _022385A6
+ strb r2, [r1]
+ b _022385A6
+_022385A4:
+ mov r6, #0
+_022385A6:
+ add r1, r4, #0
+ add r1, #0xc3
+ add r0, r1, r5
+ str r0, [sp, #8]
+ ldrsb r0, [r1, r5]
+ cmp r0, #0x32
+ blt _022385D2
+ ldr r0, [sp]
+ ldr r1, [r0]
+ ldr r0, _0223865C ; =0x0000011E
+ ldrb r0, [r1, r0]
+ cmp r5, r0
+ bne _022385CA
+ ldr r0, [sp, #0x10]
+ mov r1, #0x50
+ add r0, r4, r0
+ strb r1, [r0, #8]
+ b _022385D2
+_022385CA:
+ ldr r0, [sp, #0x10]
+ mov r1, #0x32
+ add r0, r4, r0
+ strb r1, [r0, #8]
+_022385D2:
+ add r0, r4, #0
+ ldr r1, [sp, #0x10]
+ add r0, #8
+ add r5, r0, r1
+ ldrsb r0, [r0, r1]
+ mov r1, #0xa
+ bl _s32_div_f
+ strb r0, [r7, #0xa]
+ cmp r6, #0
+ ble _0223862C
+ ldr r0, [sp, #0xc]
+ mov r1, #0xb
+ ldrh r0, [r0]
+ bl FUN_0206AB18
+ bl MOD12_02235AC4
+ strb r0, [r7, #0xc]
+ ldr r0, [sp, #8]
+ mov r1, #0
+ ldrsb r0, [r0, r1]
+ mov r1, #0xa
+ bl _s32_div_f
+ cmp r0, #5
+ bhi _0223863E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02238614: ; jump table
+ .short _0223863E - _02238614 - 2 ; case 0
+ .short _0223863E - _02238614 - 2 ; case 1
+ .short _0223863E - _02238614 - 2 ; case 2
+ .short _0223863E - _02238614 - 2 ; case 3
+ .short _02238620 - _02238614 - 2 ; case 4
+ .short _02238626 - _02238614 - 2 ; case 5
+_02238620:
+ mov r0, #0x19
+ strb r0, [r7, #0xd]
+ b _0223863E
+_02238626:
+ mov r0, #0x1a
+ strb r0, [r7, #0xd]
+ b _0223863E
+_0223862C:
+ bge _0223863E
+ ldr r0, [sp, #0xc]
+ mov r1, #0xb
+ ldrh r0, [r0]
+ bl FUN_0206AB18
+ bl MOD12_02235AF0
+ strb r0, [r7, #0xc]
+_0223863E:
+ ldr r0, [sp, #4]
+ mov r1, #0x2c
+ add r2, r0, #0
+ mov r0, #0
+ add r4, #0x18
+ mul r2, r1
+ ldrsh r1, [r4, r2]
+ ldrsb r0, [r5, r0]
+ add r0, r1, r0
+ strh r0, [r4, r2]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02238658: .word 0x0000023E
+_0223865C: .word 0x0000011E
+
+ thumb_func_start MOD12_02238660
+MOD12_02238660: ; 0x02238660
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r2, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD12_022381D8
+ mov r0, #0x2c
+ add r4, r6, #0
+ mul r4, r0
+ add r0, r5, r4
+ ldrb r0, [r0, #9]
+ bl MOD12_02235C38
+ add r5, #0x18
+ ldrsh r1, [r5, r4]
+ add r0, r1, r0
+ strh r0, [r5, r4]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02238688
+MOD12_02238688: ; 0x02238688
+ push {r3, r4, r5, r6}
+ add r3, r0, #0
+ ldr r4, _022386B8 ; =0xFFFF0000
+ ldr r5, _022386BC ; =0xFF00FFFF
+ mov r2, #0
+ add r3, #0xb0
+_02238694:
+ ldr r1, [r3]
+ add r2, r2, #1
+ and r1, r4
+ str r1, [r3]
+ ldr r6, [r0, #0x28]
+ and r1, r5
+ lsl r6, r6, #0xc
+ lsr r6, r6, #0x18
+ lsl r6, r6, #0x18
+ lsr r6, r6, #8
+ orr r1, r6
+ add r0, #0x2c
+ stmia r3!, {r1}
+ cmp r2, #4
+ blt _02238694
+ pop {r3, r4, r5, r6}
+ bx lr
+ nop
+_022386B8: .word 0xFFFF0000
+_022386BC: .word 0xFF00FFFF
+
+ thumb_func_start MOD12_022386C0
+MOD12_022386C0: ; 0x022386C0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r0, #4
+ str r3, [sp, #0xc]
+ mov ip, r0
+ add r7, r1, #0
+ mov r0, #0
+ add r2, sp, #0x10
+ mov r3, #0xff
+_022386D2:
+ ldr r4, [r1, #0x28]
+ lsl r5, r4, #0x1a
+ lsr r5, r5, #0x1e
+ bne _022386DE
+ strb r3, [r2]
+ b _022386F2
+_022386DE:
+ cmp r5, #1
+ bne _022386EA
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x1e
+ bne _022386EA
+ mov ip, r0
+_022386EA:
+ ldr r4, [r1, #0x28]
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x1e
+ strb r4, [r2]
+_022386F2:
+ add r0, r0, #1
+ add r1, #0x2c
+ add r2, r2, #1
+ cmp r0, #4
+ blt _022386D2
+ ldr r0, [sp, #0xc]
+ mov r1, #0xff
+ add r6, sp, #0x10
+ strb r1, [r6, r0]
+ mov r4, #0
+_02238706:
+ mov r1, #0
+ add r2, r6, #0
+ add r3, r7, #0
+_0223870C:
+ ldrb r0, [r2]
+ cmp r0, #0xff
+ beq _02238728
+ cmp r4, r0
+ bne _02238728
+ ldr r5, [r3, #0x28]
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x1e
+ cmp r0, r5
+ bne _02238728
+ ldrb r0, [r6, r1]
+ add r0, r0, #1
+ strb r0, [r6, r1]
+ b _02238732
+_02238728:
+ add r1, r1, #1
+ add r2, r2, #1
+ add r3, #0x2c
+ cmp r1, #4
+ blt _0223870C
+_02238732:
+ cmp r1, #4
+ beq _0223873C
+ add r4, r4, #1
+ cmp r4, #4
+ blt _02238706
+_0223873C:
+ mov r3, #0
+ add r1, sp, #0x10
+ add r2, r7, #0
+ mov r4, #0xc0
+_02238744:
+ ldrb r5, [r1]
+ cmp r5, #0xff
+ beq _02238756
+ ldr r0, [r2, #0x28]
+ lsl r5, r5, #0x1e
+ bic r0, r4
+ lsr r5, r5, #0x18
+ orr r0, r5
+ str r0, [r2, #0x28]
+_02238756:
+ add r3, r3, #1
+ add r1, r1, #1
+ add r2, #0x2c
+ cmp r3, #4
+ blt _02238744
+ ldr r0, [sp, #0xc]
+ mov r1, #0x2c
+ mul r1, r0
+ add r0, r7, r1
+ ldr r2, [r0, #0x28]
+ mov r1, #0x30
+ bic r2, r1
+ mov r1, #0x10
+ orr r2, r1
+ mov r1, #0xc0
+ bic r2, r1
+ mov r1, ip
+ str r2, [r0, #0x28]
+ cmp r1, #4
+ beq _02238794
+ mov r1, ip
+ str r1, [sp]
+ ldr r1, _022387AC ; =0x00007530
+ ldr r3, [sp, #0xc]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldrb r1, [r0, #2]
+ mov r2, #1
+ bl MOD12_0223805C
+ b _022387A6
+_02238794:
+ ldr r1, _022387AC ; =0x00007530
+ ldr r3, [sp, #0xc]
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldrb r1, [r0, #2]
+ mov r2, #0
+ bl MOD12_0223805C
+_022387A6:
+ mov r0, #1
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022387AC: .word 0x00007530
+
+ thumb_func_start MOD12_022387B0
+MOD12_022387B0: ; 0x022387B0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r0, #4
+ str r3, [sp, #0xc]
+ mov ip, r0
+ add r7, r1, #0
+ mov r0, #0
+ add r2, sp, #0x10
+ mov r3, #0xff
+_022387C2:
+ ldr r4, [r1, #0x28]
+ lsl r5, r4, #0x1a
+ lsr r5, r5, #0x1e
+ bne _022387CE
+ strb r3, [r2]
+ b _022387E4
+_022387CE:
+ cmp r5, #2
+ bne _022387DC
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x1e
+ cmp r4, #3
+ bne _022387DC
+ mov ip, r0
+_022387DC:
+ ldr r4, [r1, #0x28]
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x1e
+ strb r4, [r2]
+_022387E4:
+ add r0, r0, #1
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ add r1, #0x2c
+ add r2, r2, #1
+ cmp r0, #4
+ blt _022387C2
+ ldr r0, [sp, #0xc]
+ mov r1, #0xff
+ add r6, sp, #0x10
+ strb r1, [r6, r0]
+ mov r4, #3
+_022387FC:
+ mov r1, #0
+ add r2, r6, #0
+ add r3, r7, #0
+_02238802:
+ ldrb r0, [r2]
+ cmp r0, #0xff
+ beq _0223881E
+ cmp r4, r0
+ bne _0223881E
+ ldr r5, [r3, #0x28]
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x1e
+ cmp r0, r5
+ bne _0223881E
+ ldrb r0, [r6, r1]
+ sub r0, r0, #1
+ strb r0, [r6, r1]
+ b _0223882C
+_0223881E:
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ add r2, r2, #1
+ add r3, #0x2c
+ cmp r1, #4
+ blt _02238802
+_0223882C:
+ cmp r1, #4
+ beq _0223883E
+ sub r0, r4, #1
+ lsl r0, r0, #0x18
+ asr r4, r0, #0x18
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bgt _022387FC
+_0223883E:
+ mov r3, #0
+ add r1, sp, #0x10
+ add r2, r7, #0
+ mov r4, #0xc0
+_02238846:
+ ldrb r5, [r1]
+ cmp r5, #0xff
+ beq _02238858
+ ldr r0, [r2, #0x28]
+ lsl r5, r5, #0x1e
+ bic r0, r4
+ lsr r5, r5, #0x18
+ orr r0, r5
+ str r0, [r2, #0x28]
+_02238858:
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ asr r3, r0, #0x18
+ add r1, r1, #1
+ add r2, #0x2c
+ cmp r3, #4
+ blt _02238846
+ ldr r0, [sp, #0xc]
+ mov r1, #0x2c
+ mul r1, r0
+ add r0, r7, r1
+ ldr r2, [r0, #0x28]
+ mov r1, #0x30
+ bic r2, r1
+ mov r1, #0x20
+ orr r2, r1
+ mov r1, #0xc0
+ bic r2, r1
+ mov r1, #0xc0
+ orr r1, r2
+ str r1, [r0, #0x28]
+ mov r1, ip
+ cmp r1, #4
+ bne _0223889C
+ ldr r1, _022388B8 ; =0x00007530
+ ldr r3, [sp, #0xc]
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldrb r1, [r0, #2]
+ mov r2, #0
+ bl MOD12_0223805C
+ b _022388B0
+_0223889C:
+ mov r1, ip
+ str r1, [sp]
+ ldr r1, _022388B8 ; =0x00007530
+ ldr r3, [sp, #0xc]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldrb r1, [r0, #2]
+ mov r2, #1
+ bl MOD12_0223805C
+_022388B0:
+ mov r0, #1
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022388B8: .word 0x00007530
+
+ thumb_func_start MOD12_022388BC
+MOD12_022388BC: ; 0x022388BC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r2, r4, #0
+ mov r0, #0x2c
+ add r7, r3, #0
+ mul r3, r0
+ add r2, #9
+ add r1, #0x1e
+ ldrb r6, [r2, r3]
+ mov r5, #0x14
+ ldrsh r0, [r1, r3]
+ mul r5, r6
+ add r0, r0, r5
+ strh r0, [r1, r3]
+ ldrb r0, [r2, r3]
+ cmp r0, #0
+ beq _022388EA
+ cmp r0, #1
+ beq _022388EE
+ cmp r0, #2
+ beq _022388F2
+ b _022388F6
+_022388EA:
+ mov r2, #0
+ b _022388F8
+_022388EE:
+ mov r2, #1
+ b _022388F8
+_022388F2:
+ mov r2, #2
+ b _022388F8
+_022388F6:
+ mov r2, #3
+_022388F8:
+ ldr r0, _02238910 ; =0x00007530
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r4, r3
+ ldrb r1, [r0, #2]
+ add r3, r7, #0
+ bl MOD12_0223805C
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02238910: .word 0x00007530
+
+ thumb_func_start MOD12_02238914
+MOD12_02238914: ; 0x02238914
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r3, [sp, #0xc]
+ ldr r3, [r0]
+ ldr r0, [sp, #0xc]
+ mov r6, #0x2c
+ add r4, r0, #0
+ add r0, r6, #0
+ mul r4, r6
+ add r5, r1, #0
+ add r7, r5, r4
+ add r0, #0xf3
+ add r6, #0xf2
+ ldrb r0, [r3, r0]
+ ldrh r1, [r5, r4]
+ ldrb r2, [r7, #3]
+ ldrb r3, [r3, r6]
+ bl MOD12_02235C44
+ cmp r0, #0
+ ble _0223896C
+ ldr r0, [r7, #0x28]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bne _0223896C
+ add r1, r5, #0
+ add r1, #0x1e
+ ldrsh r0, [r1, r4]
+ ldr r2, _02238974 ; =0x00007530
+ ldr r3, [sp, #0xc]
+ add r0, #0x14
+ strh r0, [r1, r4]
+ str r2, [sp]
+ ldrh r1, [r5, r4]
+ add r0, r7, #0
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ ldrb r1, [r0, #2]
+ mov r2, #0
+ bl MOD12_0223805C
+ add sp, #0x10
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223896C:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02238974: .word 0x00007530
+
+ thumb_func_start MOD12_02238978
+MOD12_02238978: ; 0x02238978
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD12_0223897C
+MOD12_0223897C: ; 0x0223897C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ mov r0, #0x2c
+ add r4, r3, #0
+ mul r4, r0
+ add r0, r1, r4
+ ldrb r2, [r0, #9]
+ cmp r2, #0
+ bne _022389A8
+ add r1, #0x1e
+ ldrsh r2, [r1, r4]
+ add r2, #0x1e
+ strh r2, [r1, r4]
+ ldr r1, _022389C0 ; =0x00007530
+ mov r2, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldrb r1, [r0, #2]
+ bl MOD12_0223805C
+ b _022389B8
+_022389A8:
+ ldr r1, _022389C0 ; =0x00007530
+ mov r2, #1
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldrb r1, [r0, #2]
+ bl MOD12_0223805C
+_022389B8:
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_022389C0: .word 0x00007530
+
+ thumb_func_start MOD12_022389C4
+MOD12_022389C4: ; 0x022389C4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ lsl r4, r3, #1
+ add r2, r1, #0
+ add r4, r0, r4
+ ldr r0, _02238A10 ; =0x00000256
+ mov r1, #0x2c
+ add r7, r3, #0
+ mul r7, r1
+ ldrh r1, [r2, r7]
+ ldrh r0, [r4, r0]
+ cmp r1, r0
+ beq _02238A0A
+ add r6, r2, #0
+ add r6, #0xb0
+ lsl r5, r3, #2
+ lsl r1, r1, #0x10
+ ldr r4, [r6, r5]
+ ldr r0, _02238A14 ; =0xFFFF0000
+ lsr r1, r1, #0x10
+ and r0, r4
+ orr r0, r1
+ str r0, [r6, r5]
+ ldr r0, _02238A18 ; =0x00007530
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r2, r7
+ ldrb r1, [r0, #2]
+ mov r2, #0
+ bl MOD12_0223805C
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_02238A0A:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02238A10: .word 0x00000256
+_02238A14: .word 0xFFFF0000
+_02238A18: .word 0x00007530
+
+ thumb_func_start MOD12_02238A1C
+MOD12_02238A1C: ; 0x02238A1C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r0, #0x2c
+ add r4, r3, #0
+ add r5, r1, #0
+ mul r4, r0
+ add r0, r5, r4
+ ldrb r0, [r0, #3]
+ add r2, r5, #0
+ add r2, #0x1e
+ add r1, r5, r0
+ mov r0, #0xc0
+ ldrsb r0, [r1, r0]
+ ldrsh r1, [r2, r4]
+ add r1, r1, r0
+ strh r1, [r2, r4]
+ mov r1, #0xa
+ bl _s32_div_f
+ ldr r3, _02238A5C ; =0x00007530
+ mov r2, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, r4
+ ldrb r1, [r0, #2]
+ bl MOD12_0223805C
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_02238A5C: .word 0x00007530
+
+ thumb_func_start MOD12_02238A60
+MOD12_02238A60: ; 0x02238A60
+ push {r3, r4, lr}
+ sub sp, #0xc
+ mov r0, #0x2c
+ add r4, r3, #0
+ mul r4, r0
+ add r0, r1, r4
+ ldrb r2, [r0, #9]
+ cmp r2, #3
+ bne _02238A8C
+ add r1, #0x1e
+ ldrsh r2, [r1, r4]
+ add r2, #0x96
+ strh r2, [r1, r4]
+ ldr r1, _02238AA4 ; =0x00007530
+ mov r2, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldrb r1, [r0, #2]
+ bl MOD12_0223805C
+ b _02238A9C
+_02238A8C:
+ ldr r1, _02238AA4 ; =0x00007530
+ mov r2, #1
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldrb r1, [r0, #2]
+ bl MOD12_0223805C
+_02238A9C:
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_02238AA4: .word 0x00007530
+
+ thumb_func_start MOD12_02238AA8
+MOD12_02238AA8: ; 0x02238AA8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ mov r0, #0x2c
+ add r7, r3, #0
+ add r4, r1, #0
+ mul r7, r0
+ add r1, r4, r7
+ ldr r0, [r1, #0x28]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _02238AC6
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_02238AC6:
+ mov r3, #0
+ mov r0, #0xc3
+_02238ACA:
+ add r2, r4, r3
+ ldrsb r2, [r2, r0]
+ cmp r2, #0
+ bne _02238AD8
+ add r3, r3, #1
+ cmp r3, #3
+ blt _02238ACA
+_02238AD8:
+ cmp r3, #3
+ bne _02238AE2
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_02238AE2:
+ ldr r2, [r1, #0x28]
+ mov r0, #8
+ orr r0, r2
+ mov r3, #0xc3
+ str r0, [r1, #0x28]
+ mov r2, #0
+ add r5, r3, #0
+_02238AF0:
+ add r0, r4, r2
+ ldrsb r6, [r0, r5]
+ cmp r6, #0
+ ble _02238B00
+ ldrsb r6, [r0, r3]
+ add r0, #0xc3
+ sub r6, #0xa
+ strb r6, [r0]
+_02238B00:
+ add r2, r2, #1
+ cmp r2, #3
+ blt _02238AF0
+ ldr r3, _02238B20 ; =0x00007530
+ add r0, r1, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ add r1, r4, r7
+ ldrb r1, [r1, #2]
+ mov r2, #0
+ bl MOD12_0223805C
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02238B20: .word 0x00007530
+
+ thumb_func_start MOD12_02238B24
+MOD12_02238B24: ; 0x02238B24
+ mov r0, #0x2c
+ mul r0, r3
+ add r2, r1, r0
+ ldr r1, [r2, #0x28]
+ ldr r0, _02238B40 ; =0xFFF00FFF
+ and r1, r0
+ ldrb r0, [r2, #2]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0xc
+ orr r0, r1
+ str r0, [r2, #0x28]
+ mov r0, #1
+ bx lr
+ nop
+_02238B40: .word 0xFFF00FFF
+
+ thumb_func_start MOD12_02238B44
+MOD12_02238B44: ; 0x02238B44
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r2, r1, #0
+ ldr r1, [sp, #0x20]
+ add r4, r0, #0
+ mov ip, r3
+ cmp r1, #4
+ bge _02238B70
+ ldr r7, _02238B90 ; =0x00000231
+ mov r6, #0x2c
+ mov r3, #2
+_02238B5A:
+ add r0, r4, r1
+ ldrb r0, [r0, r7]
+ add r1, r1, #1
+ add r5, r0, #0
+ mul r5, r6
+ add r0, r2, r5
+ ldr r5, [r0, #0x28]
+ orr r5, r3
+ str r5, [r0, #0x28]
+ cmp r1, #4
+ blt _02238B5A
+_02238B70:
+ ldr r3, _02238B94 ; =0x00007530
+ mov r1, #0x2c
+ mov r0, ip
+ str r3, [sp]
+ mul r1, r0
+ str r3, [sp, #4]
+ add r0, r2, r1
+ str r3, [sp, #8]
+ ldrb r1, [r0, #2]
+ mov r2, #0
+ bl MOD12_0223805C
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02238B90: .word 0x00000231
+_02238B94: .word 0x00007530
+
+ thumb_func_start MOD12_02238B98
+MOD12_02238B98: ; 0x02238B98
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, [sp, #0x20]
+ cmp r1, #0
+ bne _02238BAA
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, r5, r6, pc}
+_02238BAA:
+ sub r1, r1, #1
+ add r1, r0, r1
+ ldr r0, _02238BF0 ; =0x00000231
+ ldrb r4, [r1, r0]
+ mov r0, #0x2c
+ add r1, r4, #0
+ mul r1, r0
+ add r2, r5, r1
+ mov r1, #8
+ ldrsb r2, [r2, r1]
+ cmp r2, #0
+ bne _02238BC8
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, r5, r6, pc}
+_02238BC8:
+ add r1, r3, #0
+ mul r1, r0
+ add r0, r5, #0
+ add r0, #0x1e
+ ldrsh r6, [r0, r1]
+ add r2, r6, r2
+ strh r2, [r0, r1]
+ ldr r0, _02238BF4 ; =0x00007530
+ str r4, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, r1
+ ldrb r1, [r0, #2]
+ mov r2, #0
+ bl MOD12_0223805C
+ mov r0, #1
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02238BF0: .word 0x00000231
+_02238BF4: .word 0x00007530
+
+ thumb_func_start MOD12_02238BF8
+MOD12_02238BF8: ; 0x02238BF8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ str r1, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r3, #0
+ add r0, sp, #0x18
+ add r1, sp, #0x14
+_02238C08:
+ lsl r2, r3, #0x18
+ lsr r2, r2, #0x18
+ strb r2, [r0]
+ strb r2, [r1]
+ add r2, r3, #1
+ lsl r2, r2, #0x18
+ asr r3, r2, #0x18
+ add r0, r0, #1
+ add r1, r1, #1
+ cmp r3, #4
+ blt _02238C08
+ mov r4, #0
+ add r7, sp, #0x18
+ add r6, sp, #0x14
+_02238C24:
+ ldr r0, [r5]
+ bl FUN_02082878
+ mov r1, #4
+ sub r1, r1, r4
+ bl _s32_div_f
+ lsl r0, r1, #0x18
+ lsr r2, r0, #0x18
+ mov r1, #0
+ add r3, r6, #0
+_02238C3A:
+ ldrb r0, [r3]
+ cmp r0, #0xff
+ beq _02238C52
+ cmp r2, #0
+ bne _02238C4C
+ mov r0, #0xff
+ strb r4, [r7, r1]
+ strb r0, [r6, r1]
+ b _02238C5E
+_02238C4C:
+ sub r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+_02238C52:
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ add r3, r3, #1
+ cmp r1, #4
+ blt _02238C3A
+_02238C5E:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ asr r4, r0, #0x18
+ cmp r4, #4
+ blt _02238C24
+ ldr r1, [sp, #0xc]
+ mov r3, #0
+ add r2, sp, #0x18
+ mov r4, #0x30
+ mov r7, #0x30
+ mov r5, #0xc0
+_02238C74:
+ ldr r0, [r1, #0x28]
+ bic r0, r4
+ orr r0, r7
+ str r0, [r1, #0x28]
+ ldrb r6, [r2]
+ bic r0, r5
+ add r2, r2, #1
+ lsl r6, r6, #0x1e
+ lsr r6, r6, #0x18
+ orr r0, r6
+ str r0, [r1, #0x28]
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ asr r3, r0, #0x18
+ add r1, #0x2c
+ cmp r3, #4
+ blt _02238C74
+ ldr r3, _02238CB8 ; =0x00007530
+ ldr r0, [sp, #0x10]
+ mov r1, #0x2c
+ mul r1, r0
+ str r3, [sp]
+ ldr r0, [sp, #0xc]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r0, r1
+ ldrb r1, [r0, #2]
+ mov r2, #0
+ bl MOD12_0223805C
+ mov r0, #1
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02238CB8: .word 0x00007530
+
+ thumb_func_start MOD12_02238CBC
+MOD12_02238CBC: ; 0x02238CBC
+ push {r4, r5, lr}
+ sub sp, #0xc
+ ldr r0, [sp, #0x18]
+ add r5, r1, #0
+ cmp r0, #3
+ bne _02238CFE
+ add r4, r3, #0
+ mov r0, #0x2c
+ add r3, r5, #0
+ add r2, r5, #0
+ mul r4, r0
+ add r3, #0x18
+ add r2, #0x1e
+ ldrsh r1, [r2, r4]
+ ldrsh r0, [r3, r4]
+ add r0, r1, r0
+ strh r0, [r2, r4]
+ ldrsh r0, [r3, r4]
+ mov r1, #0xa
+ bl _s32_div_f
+ ldr r3, _02238D04 ; =0x00007530
+ mov r2, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, r4
+ ldrb r1, [r0, #2]
+ bl MOD12_0223805C
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_02238CFE:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02238D04: .word 0x00007530
+
+ thumb_func_start MOD12_02238D08
+MOD12_02238D08: ; 0x02238D08
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r0, #0x2c
+ add r4, r3, #0
+ add r5, r1, #0
+ mul r4, r0
+ add r0, r5, r4
+ ldrb r0, [r0, #3]
+ add r1, r5, r0
+ mov r0, #0xc0
+ ldrsb r0, [r1, r0]
+ mov r1, #0xa
+ bl _s32_div_f
+ ldr r1, _02238D50 ; =0x0224560C
+ add r2, r5, #0
+ add r2, #0x1e
+ ldrb r0, [r1, r0]
+ ldrsh r1, [r2, r4]
+ add r1, r1, r0
+ strh r1, [r2, r4]
+ mov r1, #0xa
+ bl _s32_div_f
+ ldr r3, _02238D54 ; =0x00007530
+ mov r2, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, r4
+ ldrb r1, [r0, #2]
+ bl MOD12_0223805C
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02238D50: .word 0x0224560C
+_02238D54: .word 0x00007530
+
+ thumb_func_start MOD12_02238D58
+MOD12_02238D58: ; 0x02238D58
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ bne _02238D8A
+ add r4, r3, #0
+ mov r0, #0x2c
+ add r2, r1, #0
+ mul r4, r0
+ add r2, #0x1e
+ ldrsh r0, [r2, r4]
+ ldr r3, _02238D90 ; =0x00007530
+ add r0, #0x14
+ strh r0, [r2, r4]
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r1, r4
+ ldrb r1, [r0, #2]
+ mov r2, #0
+ bl MOD12_0223805C
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, pc}
+_02238D8A:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_02238D90: .word 0x00007530
+
+ thumb_func_start MOD12_02238D94
+MOD12_02238D94: ; 0x02238D94
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r0, [sp, #0x18]
+ cmp r0, #3
+ bne _02238DC6
+ add r4, r3, #0
+ mov r0, #0x2c
+ add r2, r1, #0
+ mul r4, r0
+ add r2, #0x1e
+ ldrsh r0, [r2, r4]
+ ldr r3, _02238DCC ; =0x00007530
+ add r0, #0x14
+ strh r0, [r2, r4]
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r1, r4
+ ldrb r1, [r0, #2]
+ mov r2, #0
+ bl MOD12_0223805C
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, pc}
+_02238DC6:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_02238DCC: .word 0x00007530
+
+ thumb_func_start MOD12_02238DD0
+MOD12_02238DD0: ; 0x02238DD0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r2, r1, #0
+ ldr r1, [sp, #0x20]
+ add r4, r0, #0
+ mov ip, r3
+ cmp r1, #4
+ bge _02238DFC
+ ldr r7, _02238E1C ; =0x00000231
+ mov r6, #0x2c
+ mov r3, #4
+_02238DE6:
+ add r0, r4, r1
+ ldrb r0, [r0, r7]
+ add r1, r1, #1
+ add r5, r0, #0
+ mul r5, r6
+ add r0, r2, r5
+ ldr r5, [r0, #0x28]
+ orr r5, r3
+ str r5, [r0, #0x28]
+ cmp r1, #4
+ blt _02238DE6
+_02238DFC:
+ ldr r3, _02238E20 ; =0x00007530
+ mov r1, #0x2c
+ mov r0, ip
+ str r3, [sp]
+ mul r1, r0
+ str r3, [sp, #4]
+ add r0, r2, r1
+ str r3, [sp, #8]
+ ldrb r1, [r0, #2]
+ mov r2, #0
+ bl MOD12_0223805C
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02238E1C: .word 0x00000231
+_02238E20: .word 0x00007530
+
+ thumb_func_start MOD12_02238E24
+MOD12_02238E24: ; 0x02238E24
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r6, r0, #0
+ ldr r0, [sp, #0x38]
+ add r5, r1, #0
+ str r3, [sp, #0xc]
+ cmp r0, #0
+ bne _02238E3A
+ add sp, #0x24
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_02238E3A:
+ sub r0, r0, #1
+ add r1, r6, r0
+ ldr r0, _02238EDC ; =0x00000231
+ mov r3, #0x2c
+ ldrb r0, [r1, r0]
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0xc]
+ add r4, r0, #0
+ mul r4, r3
+ add r0, r5, r4
+ str r0, [sp, #0x18]
+ ldr r0, [r0, #0x28]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ bne _02238E6C
+ ldr r0, [sp, #0x1c]
+ add r1, r0, #0
+ mul r1, r3
+ add r0, r5, r1
+ str r0, [sp, #0x14]
+ ldr r0, [r0, #0x28]
+ str r1, [sp, #0x10]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ beq _02238E72
+_02238E6C:
+ add sp, #0x24
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_02238E72:
+ add r0, r3, #0
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x18]
+ ldr r7, [r6]
+ add r0, #0xf3
+ add r3, #0xf2
+ ldrb r0, [r7, r0]
+ ldrh r1, [r1]
+ ldrb r2, [r2, #3]
+ ldrb r3, [r7, r3]
+ bl MOD12_02235C44
+ ldr r2, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, r5, r2
+ ldr r6, [r6]
+ ldr r3, _02238EE0 ; =0x0000011F
+ str r0, [sp, #0x20]
+ ldrb r0, [r6, r3]
+ sub r3, r3, #1
+ ldrh r1, [r1]
+ ldrb r2, [r2, #3]
+ ldrb r3, [r6, r3]
+ bl MOD12_02235C44
+ cmp r0, #0
+ ble _02238ED6
+ ldr r0, [sp, #0x20]
+ cmp r0, #0
+ ble _02238ED6
+ add r1, r5, #0
+ add r1, #0x1e
+ ldrsh r0, [r1, r4]
+ ldr r3, [sp, #0xc]
+ mov r2, #0
+ add r0, #0x1e
+ strh r0, [r1, r4]
+ ldr r0, [sp, #0x1c]
+ add r1, r5, r4
+ str r0, [sp]
+ ldr r0, _02238EE4 ; =0x00007530
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldrb r1, [r1, #2]
+ ldr r0, [sp, #0x18]
+ bl MOD12_0223805C
+ add sp, #0x24
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_02238ED6:
+ mov r0, #0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02238EDC: .word 0x00000231
+_02238EE0: .word 0x0000011F
+_02238EE4: .word 0x00007530
+
+ thumb_func_start MOD12_02238EE8
+MOD12_02238EE8: ; 0x02238EE8
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r0, r1, #0
+ mov r1, #0x2c
+ mul r1, r3
+ add r4, r0, r1
+ mov r1, #0x1e
+ ldrsh r2, [r4, r1]
+ ldr r1, [sp, #0x18]
+ ldr r5, _02238F44 ; =0x02245608
+ ldrb r5, [r5, r1]
+ add r2, r2, r5
+ strh r2, [r4, #0x1e]
+ cmp r1, #3
+ bhi _02238F26
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02238F12: ; jump table
+ .short _02238F1A - _02238F12 - 2 ; case 0
+ .short _02238F1E - _02238F12 - 2 ; case 1
+ .short _02238F22 - _02238F12 - 2 ; case 2
+ .short _02238F26 - _02238F12 - 2 ; case 3
+_02238F1A:
+ mov r2, #0
+ b _02238F28
+_02238F1E:
+ mov r2, #1
+ b _02238F28
+_02238F22:
+ mov r2, #2
+ b _02238F28
+_02238F26:
+ mov r2, #3
+_02238F28:
+ ldr r1, _02238F48 ; =0x00007530
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ mov r1, #0x2c
+ mul r1, r3
+ add r0, r0, r1
+ ldrb r1, [r0, #2]
+ bl MOD12_0223805C
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_02238F44: .word 0x02245608
+_02238F48: .word 0x00007530
+
+ thumb_func_start MOD12_02238F4C
+MOD12_02238F4C: ; 0x02238F4C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r2, [sp, #0x18]
+ cmp r2, #0
+ bne _02238F5C
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_02238F5C:
+ sub r2, r2, #1
+ add r2, r0, r2
+ ldr r0, _02238FA4 ; =0x00000231
+ ldrb r2, [r2, r0]
+ mov r0, #0x2c
+ mul r0, r2
+ add r2, r1, r0
+ mov r0, #8
+ ldrsb r0, [r2, r0]
+ cmp r0, #0x32
+ bge _02238F76
+ cmp r0, #0x50
+ blt _02238F9E
+_02238F76:
+ add r2, r1, #0
+ mov r0, #0x2c
+ add r4, r3, #0
+ mul r4, r0
+ add r2, #0x1e
+ ldrsh r0, [r2, r4]
+ add r0, #0x1e
+ strh r0, [r2, r4]
+ ldr r0, _02238FA8 ; =0x00007530
+ mov r2, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r1, r4
+ ldrb r1, [r0, #2]
+ bl MOD12_0223805C
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, pc}
+_02238F9E:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_02238FA4: .word 0x00000231
+_02238FA8: .word 0x00007530
+
+ thumb_func_start MOD12_02238FAC
+MOD12_02238FAC: ; 0x02238FAC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ mov ip, r1
+ mov r0, #0x2c
+ add r6, r3, #0
+ mul r6, r0
+ mov r0, ip
+ mov r2, #0
+ add r4, r1, #0
+ add r5, r0, r6
+ mov r7, #0x1c
+_02238FC2:
+ cmp r2, r3
+ beq _02238FD0
+ mov r0, #0x1a
+ ldrsh r1, [r4, r0]
+ ldrsh r0, [r5, r7]
+ cmp r1, r0
+ blt _02238FD8
+_02238FD0:
+ add r2, r2, #1
+ add r4, #0x2c
+ cmp r2, #4
+ blt _02238FC2
+_02238FD8:
+ cmp r2, #4
+ beq _02238FE2
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_02238FE2:
+ mov r1, ip
+ add r1, #0x1e
+ ldrsh r0, [r1, r6]
+ mov r2, #0
+ add r0, #0x1e
+ strh r0, [r1, r6]
+ ldr r0, _02239008 ; =0x00007530
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, ip
+ add r0, r0, r6
+ ldrb r1, [r0, #2]
+ bl MOD12_0223805C
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02239008: .word 0x00007530
+
+ thumb_func_start MOD12_0223900C
+MOD12_0223900C: ; 0x0223900C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ str r1, [sp, #4]
+ mov r0, #0x15
+ mov r1, #0x32
+ bl FUN_02016998
+ add r7, r0, #0
+ ldr r1, [r6]
+ ldr r0, _02239060 ; =0x00000127
+ ldrb r4, [r1, r0]
+ cmp r4, #4
+ bge _02239056
+ ldr r0, [sp, #4]
+ lsl r1, r4, #1
+ add r5, r0, r1
+ add r0, #8
+ str r0, [sp, #4]
+_02239032:
+ add r0, r6, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD12_02239064
+ ldr r0, [sp, #4]
+ add r1, r7, #0
+ add r0, r0, r4
+ str r0, [sp]
+ add r0, r6, #0
+ add r2, r4, #0
+ add r3, r5, #0
+ bl MOD12_022390DC
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, #4
+ blt _02239032
+_02239056:
+ add r0, r7, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02239060: .word 0x00000127
+
+ thumb_func_start MOD12_02239064
+MOD12_02239064: ; 0x02239064
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ add r7, r2, #0
+ str r1, [sp]
+ add r0, r1, #0
+ mov r1, #0
+ mov r2, #0x32
+ bl MI_CpuFill8
+ lsl r0, r7, #2
+ ldr r5, [sp]
+ mov r4, #0
+ str r0, [sp, #4]
+_02239080:
+ ldr r1, [r6]
+ ldr r0, [sp, #4]
+ mov r2, #0
+ ldr r0, [r0, r1]
+ add r1, r4, #0
+ add r1, #0x36
+ bl FUN_020671BC
+ strh r0, [r5]
+ mov r0, #0x23
+ lsl r0, r0, #4
+ ldrh r2, [r5]
+ add r0, r6, r0
+ add r1, r7, #0
+ bl MOD12_02235BEC
+ cmp r0, #1
+ bne _022390BA
+ ldrh r0, [r5]
+ mov r1, #0xa
+ bl FUN_0206AB18
+ strb r0, [r5, #0xa]
+ ldrh r0, [r5]
+ mov r1, #0xb
+ bl FUN_0206AB18
+ strb r0, [r5, #0xb]
+ b _022390BE
+_022390BA:
+ mov r0, #0
+ strh r0, [r5]
+_022390BE:
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, #4
+ blt _02239080
+ ldr r0, [r6]
+ add r1, r0, r7
+ mov r0, #0x43
+ lsl r0, r0, #2
+ ldrb r1, [r1, r0]
+ ldr r0, [sp]
+ add r0, #0x30
+ str r0, [sp]
+ strb r1, [r0]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_022390DC
+MOD12_022390DC: ; 0x022390DC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x58]
+ str r1, [sp, #8]
+ str r0, [sp, #0x58]
+ mov r1, #0x23
+ ldr r0, [sp, #4]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ str r0, [sp, #0x1c]
+ mov r0, #0
+ str r2, [sp, #0xc]
+ str r3, [sp, #0x10]
+ str r0, [sp, #0x20]
+_022390FA:
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x20]
+ add r0, r1, r0
+ ldrb r1, [r0, #1]
+ ldr r0, [sp, #0xc]
+ cmp r0, r1
+ beq _02239112
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ cmp r0, #4
+ blt _022390FA
+_02239112:
+ mov r0, #0
+ str r0, [sp, #0x14]
+ ldr r0, _022393A4 ; =0x0224574C
+ str r0, [sp, #0x18]
+_0223911A:
+ ldr r0, [sp, #0x20]
+ add r1, r0, #1
+ ldr r0, [sp, #0x18]
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne _0223920C
+ mov r1, #0
+ add r2, sp, #0x3c
+ add r2, #2
+ add r0, r1, #0
+_0223912E:
+ add r1, r1, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ cmp r1, #3
+ blt _0223912E
+ ldr r0, [sp, #4]
+ add r3, sp, #0x3c
+ ldr r1, [r0]
+ ldr r0, _022393A8 ; =0x0000011F
+ ldr r4, [sp, #0x18]
+ ldrb r0, [r1, r0]
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #8]
+ str r0, [sp]
+ ldrb r4, [r4, #1]
+ ldr r0, [sp, #0x1c]
+ add r3, #2
+ lsl r5, r4, #2
+ ldr r4, _022393AC ; =0x022456D8
+ ldr r4, [r4, r5]
+ blx r4
+ cmp r0, #1
+ bne _0223920C
+ ldr r0, [sp, #0x18]
+ mov r1, #3
+ ldrsb r0, [r0, r1]
+ cmp r0, #0
+ beq _02239170
+ cmp r0, #2
+ beq _02239184
+ cmp r0, #3
+ beq _02239184
+ b _0223919A
+_02239170:
+ mov r2, #0
+ add r1, sp, #0x3c
+ add r1, #2
+ add r0, r2, #0
+_02239178:
+ add r2, r2, #1
+ strb r0, [r1]
+ add r1, r1, #1
+ cmp r2, #3
+ blt _02239178
+ b _0223919A
+_02239184:
+ add r2, sp, #0x3c
+ mov r3, #0
+ add r2, #2
+ mov r0, #1
+_0223918C:
+ ldrb r1, [r2]
+ add r3, r3, #1
+ eor r1, r0
+ strb r1, [r2]
+ add r2, r2, #1
+ cmp r3, #3
+ blt _0223918C
+_0223919A:
+ ldr r0, [sp, #4]
+ ldr r1, [r0]
+ ldr r0, [sp, #0xc]
+ add r1, r0, r1
+ mov r0, #0x43
+ lsl r0, r0, #2
+ ldrb r2, [r1, r0]
+ ldr r0, [sp, #0x18]
+ lsl r1, r2, #1
+ add r0, r0, r1
+ mov r1, #4
+ ldrsh r4, [r0, r1]
+ cmp r2, #0
+ beq _022391BC
+ ldr r0, [sp, #0x18]
+ ldrsh r0, [r0, r1]
+ add r4, r4, r0
+_022391BC:
+ ldr r0, [sp, #0x18]
+ ldrb r0, [r0, #2]
+ cmp r0, #0xf0
+ beq _022391CA
+ cmp r0, #0xf1
+ beq _0223920E
+ b _0223924E
+_022391CA:
+ ldr r0, [sp, #8]
+ mov r7, #0
+ mov r5, #4
+_022391D0:
+ ldr r1, [sp, #4]
+ ldr r2, [r1]
+ ldr r1, _022393A8 ; =0x0000011F
+ ldrb r2, [r2, r1]
+ ldrb r1, [r0, #0xb]
+ cmp r2, r1
+ bne _02239204
+ mov r1, #2
+ ldrsh r1, [r0, r1]
+ mov r3, #0
+ add r2, r0, #0
+ add r1, r1, r4
+ strh r1, [r0, #2]
+ add r1, sp, #0x3c
+ add r1, #2
+_022391EE:
+ ldrb r6, [r1]
+ cmp r6, #1
+ bne _022391FA
+ ldrsh r6, [r2, r5]
+ add r6, r6, r4
+ strh r6, [r2, #4]
+_022391FA:
+ add r3, r3, #1
+ add r1, r1, #1
+ add r2, r2, #2
+ cmp r3, #3
+ blt _022391EE
+_02239204:
+ add r7, r7, #1
+ add r0, #0xc
+ cmp r7, #4
+ blt _022391D0
+_0223920C:
+ b _0223928C
+_0223920E:
+ ldr r5, [sp, #8]
+ mov r7, #0
+ mov r6, #4
+_02239214:
+ ldrb r0, [r5, #0xa]
+ bl FUN_02083114
+ cmp r0, #0x14
+ blt _02239244
+ mov r0, #2
+ ldrsh r0, [r5, r0]
+ mov r2, #0
+ add r1, r5, #0
+ add r0, r0, r4
+ strh r0, [r5, #2]
+ add r0, sp, #0x3c
+ add r0, #2
+_0223922E:
+ ldrb r3, [r0]
+ cmp r3, #1
+ bne _0223923A
+ ldrsh r3, [r1, r6]
+ add r3, r3, r4
+ strh r3, [r1, #4]
+_0223923A:
+ add r2, r2, #1
+ add r0, r0, #1
+ add r1, r1, #2
+ cmp r2, #3
+ blt _0223922E
+_02239244:
+ add r7, r7, #1
+ add r5, #0xc
+ cmp r7, #4
+ blt _02239214
+ b _0223928C
+_0223924E:
+ ldr r0, [sp, #8]
+ mov r7, #0
+ mov r5, #4
+_02239254:
+ ldr r1, [sp, #0x18]
+ ldrb r2, [r1, #2]
+ ldrb r1, [r0, #0xa]
+ cmp r2, r1
+ bne _02239284
+ mov r1, #2
+ ldrsh r1, [r0, r1]
+ mov r3, #0
+ add r2, r0, #0
+ add r1, r1, r4
+ strh r1, [r0, #2]
+ add r1, sp, #0x3c
+ add r1, #2
+_0223926E:
+ ldrb r6, [r1]
+ cmp r6, #1
+ bne _0223927A
+ ldrsh r6, [r2, r5]
+ add r6, r6, r4
+ strh r6, [r2, #4]
+_0223927A:
+ add r3, r3, #1
+ add r1, r1, #1
+ add r2, r2, #2
+ cmp r3, #3
+ blt _0223926E
+_02239284:
+ add r7, r7, #1
+ add r0, #0xc
+ cmp r7, #4
+ blt _02239254
+_0223928C:
+ ldr r0, [sp, #0x18]
+ add r0, #0xc
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ cmp r0, #0xa5
+ bge _0223929E
+ b _0223911A
+_0223929E:
+ add r4, sp, #0x34
+ mov r5, #0
+ add r4, #2
+_022392A4:
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ bl FUN_02082878
+ strh r0, [r4]
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r5, #4
+ blt _022392A4
+ mov r5, #0
+ add r4, sp, #0x30
+_022392BA:
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ bl FUN_02082878
+ strh r0, [r4]
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r5, #3
+ blt _022392BA
+ ldr r0, [sp, #8]
+ mov r7, #0
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _022392E2
+ ldr r1, [sp, #8]
+_022392D8:
+ add r1, #0xc
+ ldrh r0, [r1]
+ add r7, r7, #1
+ cmp r0, #0
+ beq _022392D8
+_022392E2:
+ mov r2, #0xc
+ add r1, r7, #0
+ ldr r0, [sp, #8]
+ mul r1, r2
+ add r1, r0, r1
+ mov r0, #2
+ add r4, r7, #1
+ ldrsh r1, [r1, r0]
+ cmp r4, #4
+ bge _02239336
+ ldr r0, [sp, #8]
+ mul r2, r4
+ add r2, r0, r2
+ add r0, sp, #0x34
+ lsl r3, r4, #1
+ add r0, #2
+ add r3, r0, r3
+_02239304:
+ ldrh r0, [r2]
+ cmp r0, #0
+ beq _0223932C
+ mov r0, #2
+ ldrsh r0, [r2, r0]
+ cmp r0, r1
+ bgt _02239328
+ cmp r0, r1
+ bne _0223932C
+ ldrh r5, [r3]
+ lsl r6, r7, #1
+ str r5, [sp, #0x28]
+ add r5, sp, #0x34
+ add r5, #2
+ ldrh r6, [r5, r6]
+ ldr r5, [sp, #0x28]
+ cmp r5, r6
+ bls _0223932C
+_02239328:
+ add r7, r4, #0
+ add r1, r0, #0
+_0223932C:
+ add r4, r4, #1
+ add r2, #0xc
+ add r3, r3, #2
+ cmp r4, #4
+ blt _02239304
+_02239336:
+ ldr r0, [sp, #4]
+ ldr r5, [r0]
+ ldr r0, _022393B0 ; =0x00000171
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ bne _022393CA
+ mov r0, #0xc
+ add r6, r7, #0
+ mul r6, r0
+ ldr r0, [sp, #8]
+ mov r2, #0
+ add r4, r0, r6
+ add r3, r2, #0
+ mov r0, #4
+_02239352:
+ ldrsh r1, [r4, r0]
+ cmp r1, #0
+ bne _0223935A
+ add r2, r2, #1
+_0223935A:
+ add r3, r3, #1
+ add r4, r4, #2
+ cmp r3, #3
+ blt _02239352
+ cmp r2, #3
+ bne _022393CA
+ ldr r1, _022393B4 ; =0x022456D4
+ add r0, sp, #0x2c
+ ldrb r2, [r1]
+ strb r2, [r0]
+ ldrb r2, [r1, #1]
+ strb r2, [r0, #1]
+ ldrb r2, [r1, #2]
+ ldrb r1, [r1, #3]
+ strb r2, [r0, #2]
+ strb r1, [r0, #3]
+ add r0, r5, #0
+ bl FUN_02082878
+ ldr r1, [sp, #4]
+ mov r2, #0x12
+ lsl r0, r0, #0x18
+ ldr r1, [r1]
+ lsl r2, r2, #4
+ ldrb r4, [r1, r2]
+ add r3, sp, #0x2c
+ lsr r0, r0, #0x18
+ ldrb r3, [r3, r4]
+ cmp r0, r3
+ bge _022393CA
+ add r2, r2, #3
+ ldrb r2, [r1, r2]
+ ldr r1, [sp, #4]
+ ldr r0, [sp, #8]
+ add r2, r1, r2
+ ldr r1, _022393B8 ; =0x0000023E
+ b _022393BC
+ .align 2, 0
+_022393A4: .word 0x0224574C
+_022393A8: .word 0x0000011F
+_022393AC: .word 0x022456D8
+_022393B0: .word 0x00000171
+_022393B4: .word 0x022456D4
+_022393B8: .word 0x0000023E
+_022393BC:
+ add r0, r0, #4
+ ldrb r1, [r2, r1]
+ add r0, r0, r6
+ lsl r2, r1, #1
+ ldrsh r1, [r0, r2]
+ sub r1, #0x64
+ strh r1, [r0, r2]
+_022393CA:
+ mov r0, #0
+ str r0, [sp, #0x24]
+ mov r0, #0xc
+ add r1, r7, #0
+ mul r1, r0
+ ldr r0, [sp, #8]
+ add r3, sp, #0x30
+ add r0, r0, r1
+ mov r1, #4
+ ldrsh r5, [r0, r1]
+ mov ip, r0
+ mov r4, #1
+ add r2, r0, #2
+ add r3, #2
+_022393E6:
+ mov r0, #4
+ ldrsh r6, [r2, r0]
+ cmp r6, r5
+ bgt _02239400
+ cmp r6, r5
+ bne _02239404
+ ldr r0, [sp, #0x24]
+ ldrh r7, [r3]
+ lsl r1, r0, #1
+ add r0, sp, #0x30
+ ldrh r0, [r0, r1]
+ cmp r7, r0
+ bls _02239404
+_02239400:
+ str r4, [sp, #0x24]
+ add r5, r6, #0
+_02239404:
+ add r4, r4, #1
+ add r2, r2, #2
+ add r3, r3, #2
+ cmp r4, #3
+ blt _022393E6
+ mov r0, ip
+ ldrh r1, [r0]
+ ldr r0, [sp, #0x10]
+ strh r1, [r0]
+ ldr r1, [sp, #0x58]
+ ldr r0, [sp, #0x24]
+ strb r0, [r1]
+ ldr r0, [sp, #0x10]
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _02239428
+ bl ErrorHandling
+_02239428:
+ ldr r0, [sp, #0x58]
+ ldrb r0, [r0]
+ cmp r0, #3
+ blo _02239434
+ bl ErrorHandling
+_02239434:
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_02239438
+MOD12_02239438: ; 0x02239438
+ ldrb r0, [r0]
+ cmp r0, #4
+ bne _02239442
+ mov r0, #1
+ bx lr
+_02239442:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02239448
+MOD12_02239448: ; 0x02239448
+ lsl r1, r1, #2
+ add r0, r0, r1
+ add r0, #0xe0
+ ldr r0, [r0]
+ lsl r0, r0, #8
+ lsr r0, r0, #0x18
+ beq _0223945A
+ mov r0, #1
+ bx lr
+_0223945A:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02239460
+MOD12_02239460: ; 0x02239460
+ mov r1, #0
+_02239462:
+ ldrb r0, [r2, #0xa]
+ cmp r0, #5
+ bne _0223946C
+ mov r0, #1
+ bx lr
+_0223946C:
+ add r1, r1, #1
+ add r2, #0xc
+ cmp r1, #4
+ blt _02239462
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_02239478
+MOD12_02239478: ; 0x02239478
+ mov r1, #0
+_0223947A:
+ ldrb r0, [r2, #0xa]
+ cmp r0, #9
+ bne _02239484
+ mov r0, #1
+ bx lr
+_02239484:
+ add r1, r1, #1
+ add r2, #0xc
+ cmp r1, #4
+ blt _0223947A
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_02239490
+MOD12_02239490: ; 0x02239490
+ mov r1, #0
+_02239492:
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0xc
+ bne _0223949C
+ mov r0, #1
+ bx lr
+_0223949C:
+ add r1, r1, #1
+ add r2, #0xc
+ cmp r1, #4
+ blt _02239492
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_022394A8
+MOD12_022394A8: ; 0x022394A8
+ mov r1, #0
+_022394AA:
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0xf
+ bne _022394B4
+ mov r0, #1
+ bx lr
+_022394B4:
+ add r1, r1, #1
+ add r2, #0xc
+ cmp r1, #4
+ blt _022394AA
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_022394C0
+MOD12_022394C0: ; 0x022394C0
+ mov r1, #0
+_022394C2:
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0x11
+ bne _022394CC
+ mov r0, #1
+ bx lr
+_022394CC:
+ add r1, r1, #1
+ add r2, #0xc
+ cmp r1, #4
+ blt _022394C2
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_022394D8
+MOD12_022394D8: ; 0x022394D8
+ mov r1, #0
+_022394DA:
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0x12
+ bne _022394E4
+ mov r0, #1
+ bx lr
+_022394E4:
+ add r1, r1, #1
+ add r2, #0xc
+ cmp r1, #4
+ blt _022394DA
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_022394F0
+MOD12_022394F0: ; 0x022394F0
+ mov r1, #0
+_022394F2:
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0x13
+ bne _022394FC
+ mov r0, #1
+ bx lr
+_022394FC:
+ add r1, r1, #1
+ add r2, #0xc
+ cmp r1, #4
+ blt _022394F2
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_02239508
+MOD12_02239508: ; 0x02239508
+ mov r1, #0
+_0223950A:
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0x14
+ bne _02239514
+ mov r0, #1
+ bx lr
+_02239514:
+ add r1, r1, #1
+ add r2, #0xc
+ cmp r1, #4
+ blt _0223950A
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_02239520
+MOD12_02239520: ; 0x02239520
+ mov r1, #0
+_02239522:
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0x15
+ bne _0223952C
+ mov r0, #1
+ bx lr
+_0223952C:
+ add r1, r1, #1
+ add r2, #0xc
+ cmp r1, #4
+ blt _02239522
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_02239538
+MOD12_02239538: ; 0x02239538
+ push {r3, r4}
+ lsl r1, r1, #1
+ add r2, r0, r1
+ mov r1, #0x12
+ ldrsh r3, [r2, r1]
+ mov r4, #0
+_02239544:
+ ldrsh r2, [r0, r1]
+ cmp r3, r2
+ bgt _02239552
+ add r4, r4, #1
+ add r0, r0, #2
+ cmp r4, #4
+ blt _02239544
+_02239552:
+ cmp r4, #4
+ bne _0223955C
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_0223955C:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02239564
+MOD12_02239564: ; 0x02239564
+ push {r3, r4}
+ ldrb r2, [r0]
+ cmp r2, #4
+ bne _0223958E
+ lsl r1, r1, #1
+ add r2, r0, r1
+ mov r1, #0x12
+ ldrsh r3, [r2, r1]
+ mov r4, #0
+_02239576:
+ ldrsh r2, [r0, r1]
+ cmp r3, r2
+ bgt _02239584
+ add r4, r4, #1
+ add r0, r0, #2
+ cmp r4, #4
+ blt _02239576
+_02239584:
+ cmp r4, #4
+ bne _0223958E
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_0223958E:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+
+ thumb_func_start MOD12_02239594
+MOD12_02239594: ; 0x02239594
+ ldr r3, [sp]
+ mov r1, #0
+_02239598:
+ ldrb r0, [r2, #0xa]
+ cmp r0, #4
+ bne _022395A8
+ ldrb r0, [r2, #0xb]
+ cmp r3, r0
+ bne _022395A8
+ mov r0, #1
+ bx lr
+_022395A8:
+ add r1, r1, #1
+ add r2, #0xc
+ cmp r1, #4
+ blt _02239598
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_022395B4
+MOD12_022395B4: ; 0x022395B4
+ ldr r3, [sp]
+ mov r1, #0
+_022395B8:
+ ldrb r0, [r2, #0xb]
+ cmp r3, r0
+ bne _022395C2
+ mov r0, #1
+ bx lr
+_022395C2:
+ add r1, r1, #1
+ add r2, #0xc
+ cmp r1, #4
+ blt _022395B8
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_022395D0
+MOD12_022395D0: ; 0x022395D0
+ push {r3, r4, r5, r6}
+ ldr r5, [sp, #0x10]
+ mov r4, #0
+_022395D6:
+ ldrb r1, [r2, #0xb]
+ cmp r5, r1
+ beq _022395E4
+ add r4, r4, #1
+ add r2, #0xc
+ cmp r4, #4
+ blt _022395D6
+_022395E4:
+ cmp r4, #4
+ bne _022395EE
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+_022395EE:
+ mov r5, #0
+ add r6, r5, #0
+ mov r2, #1
+ mov r1, #0x22
+_022395F6:
+ add r4, r0, r6
+ ldrsb r4, [r4, r1]
+ cmp r4, #0x28
+ bne _02239602
+ strb r2, [r3, r6]
+ add r5, r5, #1
+_02239602:
+ add r6, r6, #1
+ cmp r6, #3
+ blt _022395F6
+ cmp r5, #0
+ ble _02239612
+ mov r0, #1
+ pop {r3, r4, r5, r6}
+ bx lr
+_02239612:
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+
+ thumb_func_start MOD12_02239618
+MOD12_02239618: ; 0x02239618
+ push {r3, r4, r5, r6}
+ ldr r5, [sp, #0x10]
+ mov r4, #0
+_0223961E:
+ ldrb r1, [r2, #0xb]
+ cmp r5, r1
+ beq _0223962C
+ add r4, r4, #1
+ add r2, #0xc
+ cmp r4, #4
+ blt _0223961E
+_0223962C:
+ cmp r4, #4
+ bne _02239636
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+_02239636:
+ mov r5, #0
+ add r6, r5, #0
+ mov r2, #1
+ mov r1, #0x22
+_0223963E:
+ add r4, r0, r6
+ ldrsb r4, [r4, r1]
+ cmp r4, #0x1e
+ bne _0223964A
+ add r5, r5, #1
+ strb r2, [r3, r6]
+_0223964A:
+ add r6, r6, #1
+ cmp r6, #3
+ blt _0223963E
+ cmp r5, #0
+ ble _0223965A
+ mov r0, #1
+ pop {r3, r4, r5, r6}
+ bx lr
+_0223965A:
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+
+ thumb_func_start MOD12_02239660
+MOD12_02239660: ; 0x02239660
+ mov r1, #0
+_02239662:
+ ldrb r0, [r2, #0xa]
+ cmp r0, #8
+ bne _0223966C
+ mov r0, #1
+ bx lr
+_0223966C:
+ add r1, r1, #1
+ add r2, #0xc
+ cmp r1, #4
+ blt _02239662
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_02239678
+MOD12_02239678: ; 0x02239678
+ mov r1, #0
+_0223967A:
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0xd
+ bne _02239684
+ mov r0, #1
+ bx lr
+_02239684:
+ add r1, r1, #1
+ add r2, #0xc
+ cmp r1, #4
+ blt _0223967A
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_02239690
+MOD12_02239690: ; 0x02239690
+ push {r3, r4, r5, r6}
+ mov r6, #0
+ add r5, r6, #0
+ mov r2, #1
+ mov r1, #0x22
+_0223969A:
+ add r4, r0, r5
+ ldrsb r4, [r4, r1]
+ cmp r4, #0x28
+ bne _022396A6
+ add r6, r6, #1
+ strb r2, [r3, r5]
+_022396A6:
+ add r5, r5, #1
+ cmp r5, #3
+ blt _0223969A
+ cmp r6, #0
+ ble _022396B6
+ mov r0, #1
+ pop {r3, r4, r5, r6}
+ bx lr
+_022396B6:
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+
+ thumb_func_start MOD12_022396BC
+MOD12_022396BC: ; 0x022396BC
+ push {r3, r4, r5, r6}
+ mov r6, #0
+ add r5, r6, #0
+ mov r2, #1
+ mov r1, #0x22
+_022396C6:
+ add r4, r0, r5
+ ldrsb r4, [r4, r1]
+ cmp r4, #0x1e
+ bne _022396D2
+ add r6, r6, #1
+ strb r2, [r3, r5]
+_022396D2:
+ add r5, r5, #1
+ cmp r5, #3
+ blt _022396C6
+ cmp r6, #0
+ ble _022396E2
+ mov r0, #1
+ pop {r3, r4, r5, r6}
+ bx lr
+_022396E2:
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+
+ thumb_func_start MOD12_022396E8
+MOD12_022396E8: ; 0x022396E8
+ push {r3, r4, r5, r6}
+ mov r6, #0
+ add r5, r6, #0
+ mov r2, #1
+ mov r1, #0x22
+_022396F2:
+ add r4, r0, r5
+ ldrsb r4, [r4, r1]
+ cmp r4, #0xa
+ bgt _022396FE
+ add r6, r6, #1
+ strb r2, [r3, r5]
+_022396FE:
+ add r5, r5, #1
+ cmp r5, #3
+ blt _022396F2
+ cmp r6, #0
+ ble _0223970E
+ mov r0, #1
+ pop {r3, r4, r5, r6}
+ bx lr
+_0223970E:
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+
+ thumb_func_start MOD12_02239714
+MOD12_02239714: ; 0x02239714
+ push {r3, r4}
+ mov r4, #0
+ mov r1, #0x22
+_0223971A:
+ add r2, r0, r4
+ ldrsb r2, [r2, r1]
+ cmp r2, #0x14
+ bge _02239728
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+_02239728:
+ add r4, r4, #1
+ cmp r4, #3
+ blt _0223971A
+ mov r1, #0
+ mov r0, #1
+_02239732:
+ strb r0, [r3, r1]
+ add r1, r1, #1
+ cmp r1, #3
+ blt _02239732
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02239740
+MOD12_02239740: ; 0x02239740
+ push {r3, r4}
+ mov r4, #0
+ mov r1, #0x22
+_02239746:
+ add r2, r0, r4
+ ldrsb r2, [r2, r1]
+ cmp r2, #0x14
+ ble _02239754
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+_02239754:
+ add r4, r4, #1
+ cmp r4, #3
+ blt _02239746
+ mov r1, #0
+ mov r0, #1
+_0223975E:
+ strb r0, [r3, r1]
+ add r1, r1, #1
+ cmp r1, #3
+ blt _0223975E
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0223976C
+MOD12_0223976C: ; 0x0223976C
+ push {r3, r4, r5, r6}
+ mov r6, #0
+ add r5, r6, #0
+ mov r2, #1
+ mov r1, #0x22
+_02239776:
+ add r4, r0, r5
+ ldrsb r4, [r4, r1]
+ cmp r4, #0x14
+ bgt _02239782
+ strb r2, [r3, r5]
+ add r6, r6, #1
+_02239782:
+ add r5, r5, #1
+ cmp r5, #3
+ blt _02239776
+ cmp r6, #1
+ bne _02239792
+ mov r0, #1
+ pop {r3, r4, r5, r6}
+ bx lr
+_02239792:
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+
+ thumb_func_start MOD12_02239798
+MOD12_02239798: ; 0x02239798
+ push {r3, r4, r5, r6}
+ mov r6, #0
+ add r5, r6, #0
+ mov r2, #1
+ mov r1, #0x22
+_022397A2:
+ add r4, r0, r5
+ ldrsb r4, [r4, r1]
+ cmp r4, #0x28
+ bne _022397AE
+ strb r2, [r3, r5]
+ add r6, r6, #1
+_022397AE:
+ add r5, r5, #1
+ cmp r5, #3
+ blt _022397A2
+ cmp r6, #2
+ bne _022397BE
+ mov r0, #1
+ pop {r3, r4, r5, r6}
+ bx lr
+_022397BE:
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+
+ thumb_func_start MOD12_022397C4
+MOD12_022397C4: ; 0x022397C4
+ push {r3, r4, r5, r6}
+ mov r6, #0
+ add r5, r6, #0
+ mov r2, #1
+ mov r1, #0x22
+_022397CE:
+ add r4, r0, r5
+ ldrsb r4, [r4, r1]
+ cmp r4, #0
+ bne _022397DA
+ strb r2, [r3, r5]
+ add r6, r6, #1
+_022397DA:
+ add r5, r5, #1
+ cmp r5, #3
+ blt _022397CE
+ cmp r6, #1
+ bne _022397EA
+ mov r0, #1
+ pop {r3, r4, r5, r6}
+ bx lr
+_022397EA:
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+
+ thumb_func_start MOD12_022397F0
+MOD12_022397F0: ; 0x022397F0
+ push {r3, r4, r5, r6}
+ ldr r5, [sp, #0x10]
+ mov r4, #0
+_022397F6:
+ ldrb r1, [r2, #0xb]
+ cmp r5, r1
+ beq _02239804
+ add r4, r4, #1
+ add r2, #0xc
+ cmp r4, #4
+ blt _022397F6
+_02239804:
+ cmp r4, #4
+ bne _0223980E
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+_0223980E:
+ mov r5, #0
+ add r6, r5, #0
+ mov r2, #1
+ mov r1, #0x22
+_02239816:
+ add r4, r0, r6
+ ldrsb r4, [r4, r1]
+ cmp r4, #0x28
+ bne _02239822
+ strb r2, [r3, r6]
+ add r5, r5, #1
+_02239822:
+ add r6, r6, #1
+ cmp r6, #3
+ blt _02239816
+ cmp r5, #0
+ ble _02239832
+ mov r0, #1
+ pop {r3, r4, r5, r6}
+ bx lr
+_02239832:
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+
+ thumb_func_start MOD12_02239838
+MOD12_02239838: ; 0x02239838
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ bne _02239858
+ lsl r0, r4, #4
+ add r0, r5, r0
+ ldr r0, [r0, #0x48]
+ cmp r0, #0
+ beq _02239872
+ bl ErrorHandling
+ pop {r3, r4, r5, r6, r7, pc}
+_02239858:
+ bl FUN_02007534
+ add r6, r5, #0
+ add r6, #0x48
+ lsl r7, r4, #4
+ ldr r0, [r6, r7]
+ bl FUN_02016A18
+ lsl r0, r4, #2
+ mov r1, #0
+ add r0, r5, r0
+ str r1, [r0, #8]
+ str r1, [r6, r7]
+_02239872:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_02239874
+MOD12_02239874: ; 0x02239874
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_0223987A:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD12_02239838
+ add r4, r4, #1
+ cmp r4, #4
+ blt _0223987A
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223988C
+MOD12_0223988C: ; 0x0223988C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #1
+ str r2, [sp]
+ mov r2, #2
+ str r2, [sp, #4]
+ ldr r2, _022398D4 ; =0x000080EA
+ mov r3, #0x43
+ str r2, [sp, #8]
+ mov r2, #0x2e
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _022398D4 ; =0x000080EA
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x44
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _022398D4 ; =0x000080EA
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x45
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_022398D4: .word 0x000080EA
+
+ thumb_func_start MOD12_022398D8
+MOD12_022398D8: ; 0x022398D8
+ push {r4, lr}
+ ldr r1, _022398F4 ; =0x000080EA
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _022398F4 ; =0x000080EA
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _022398F4 ; =0x000080EA
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_022398F4: .word 0x000080EA
+
+ thumb_func_start MOD12_022398F8
+MOD12_022398F8: ; 0x022398F8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x16
+ mov r1, #0x18
+ add r7, r2, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x18
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ ldr r2, _0223996C ; =0x02245F14
+ bl FUN_0200C154
+ lsl r1, r6, #0x10
+ lsl r2, r7, #0x10
+ mov r3, #1
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ lsl r3, r3, #0x14
+ str r0, [r4, #4]
+ bl FUN_0200C750
+ ldr r0, [sp, #0x18]
+ cmp r0, #1
+ bne _0223993C
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_0200C5C0
+_0223993C:
+ ldr r0, [r4, #4]
+ ldr r0, [r0]
+ bl FUN_0200C59C
+ lsl r0, r6, #8
+ str r0, [r4, #8]
+ lsl r0, r7, #8
+ str r0, [r4, #0xc]
+ ldr r0, _02239970 ; =0x000004F9
+ ldr r2, _02239974 ; =0x0000C350
+ add r1, r5, r0
+ str r1, [r4]
+ ldrb r0, [r1]
+ add r0, r0, #1
+ strb r0, [r1]
+ ldr r0, _02239978 ; =MOD12_02239980
+ add r1, r4, #0
+ bl FUN_0200CA44
+ ldr r0, _0223997C ; =0x000006E1
+ bl FUN_020054C8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223996C: .word 0x02245F14
+_02239970: .word 0x000004F9
+_02239974: .word 0x0000C350
+_02239978: .word MOD12_02239980
+_0223997C: .word 0x000006E1
+
+ thumb_func_start MOD12_02239980
+MOD12_02239980: ; 0x02239980
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x14]
+ cmp r0, #0
+ bne _022399EE
+ ldr r0, [r4, #0x10]
+ bl FUN_0201B9B8
+ lsl r1, r0, #3
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r5, r0, #0xc
+ mov r0, #6
+ mov r3, #1
+ ldr r1, [r4, #0x10]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ lsl r3, r3, #8
+ sub r2, r0, r3
+ str r2, [r4, #0xc]
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #4]
+ asr r6, r1, #7
+ lsr r6, r6, #0x18
+ add r6, r1, r6
+ asr r1, r6, #8
+ add r1, r1, r5
+ asr r5, r2, #7
+ lsr r5, r5, #0x18
+ add r5, r2, r5
+ lsl r1, r1, #0x10
+ lsl r2, r5, #8
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ lsl r3, r3, #0xc
+ bl FUN_0200C750
+ ldrh r0, [r4, #0x16]
+ add r0, r0, #1
+ strh r0, [r4, #0x16]
+ ldrh r0, [r4, #0x16]
+ cmp r0, #0x3c
+ bhs _022399E6
+ ldr r1, [r4, #0xc]
+ ldr r0, _02239A0C ; =0xFFFFE000
+ cmp r1, r0
+ bgt _02239A08
+_022399E6:
+ ldrb r0, [r4, #0x14]
+ add r0, r0, #1
+ strb r0, [r4, #0x14]
+ pop {r4, r5, r6, pc}
+_022399EE:
+ ldr r0, [r4, #4]
+ bl FUN_0200C3DC
+ ldr r1, [r4]
+ ldrb r0, [r1]
+ sub r0, r0, #1
+ strb r0, [r1]
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02239A08:
+ pop {r4, r5, r6, pc}
+ nop
+_02239A0C: .word 0xFFFFE000
+
+ thumb_func_start MOD12_02239A10
+MOD12_02239A10: ; 0x02239A10
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ ldr r0, [r5, #0x24]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _02239A22
+ bl ErrorHandling
+_02239A22:
+ mov r1, #0x30
+ ldr r2, [r5]
+ mul r1, r4
+ add r1, r2, r1
+ ldrh r1, [r1, #0x1a]
+ add r0, sp, #0x10
+ bl FUN_020690AC
+ ldr r0, _02239A54 ; =0xFFFFFDC0
+ mov r2, #5
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x10]
+ add r1, sp, #0x10
+ lsl r2, r2, #6
+ mov r3, #0x20
+ bl FUN_020073A0
+ str r0, [r5, #0x24]
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02239A54: .word 0xFFFFFDC0
+
+ thumb_func_start MOD12_02239A58
+MOD12_02239A58: ; 0x02239A58
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _02239A6A
+ bl FUN_02007534
+ mov r0, #0
+ str r0, [r4, #0x24]
+_02239A6A:
+ pop {r4, pc}
+
+ thumb_func_start MOD12_02239A6C
+MOD12_02239A6C: ; 0x02239A6C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ cmp r4, #0
+ beq _02239A82
+ cmp r6, #0
+ bne _02239A82
+ bl ErrorHandling
+_02239A82:
+ cmp r4, #0
+ beq _02239ACC
+ cmp r4, #1
+ bne _02239AC8
+ ldrb r4, [r6]
+ ldr r3, [r5]
+ mov r0, #1
+ lsl r2, r4, #2
+ str r0, [sp]
+ mov r0, #2
+ add r2, r3, r2
+ add r4, r3, r4
+ mov r3, #0x42
+ str r0, [sp, #4]
+ lsl r3, r3, #2
+ add r2, #0xe8
+ ldrb r3, [r4, r3]
+ ldr r0, [r5, #0x48]
+ ldr r2, [r2]
+ mov r1, #0
+ bl FUN_0200ABB4
+ ldrb r0, [r6]
+ ldr r1, [r5, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ ldr r0, [r5, #0x48]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_02239AC8:
+ bl ErrorHandling
+_02239ACC:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_02239AD0
+MOD12_02239AD0: ; 0x02239AD0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r6, r1, #0
+ ldr r1, [r5]
+ ldr r0, _02239B40 ; =0x00000171
+ add r7, r2, #0
+ ldrb r0, [r1, r0]
+ str r3, [sp, #0xc]
+ cmp r0, #0
+ bne _02239AF2
+ ldr r0, _02239B44 ; =0x00001988
+ ldr r0, [r1, r0]
+ bl FUN_02024FF4
+ add r4, r0, #0
+ b _02239AF4
+_02239AF2:
+ mov r4, #1
+_02239AF4:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl FUN_0200A914
+ add r6, r0, #0
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #0x28]
+ add r0, r5, #0
+ bl MOD12_02239A6C
+ ldr r0, [r5, #0x48]
+ ldr r1, [r5, #0x4c]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r5, #0
+ add r0, #0x34
+ mov r1, #0xff
+ bl FUN_02019620
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r5, #0
+ ldr r2, [r5, #0x4c]
+ add r0, #0x34
+ mov r1, #1
+ bl FUN_0201BD84
+ add r5, #0xd0
+ strb r0, [r5]
+ add r0, r6, #0
+ bl FUN_02021A20
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02239B40: .word 0x00000171
+_02239B44: .word 0x00001988
+
+ thumb_func_start MOD12_02239B48
+MOD12_02239B48: ; 0x02239B48
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r1, #0
+ add r6, r0, #0
+ add r4, r2, #0
+ cmp r5, #0xf
+ blo _02239B5A
+ bl ErrorHandling
+_02239B5A:
+ str r4, [sp]
+ ldr r2, _02239B74 ; =0x02245F48
+ lsl r3, r5, #2
+ ldr r4, _02239B78 ; =0x02245F4A
+ ldrh r2, [r2, r3]
+ ldrb r3, [r4, r3]
+ ldr r1, [r6, #0x44]
+ add r0, r6, #0
+ bl MOD12_02239AD0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02239B74: .word 0x02245F48
+_02239B78: .word 0x02245F4A
+
+ thumb_func_start MOD12_02239B7C
+MOD12_02239B7C: ; 0x02239B7C
+ ldr r3, _02239B84 ; =0x0201BD71
+ add r0, #0xd0
+ ldrb r0, [r0]
+ bx r3
+ .align 2, 0
+_02239B84: .word 0x0201BD71
+
+ thumb_func_start MOD12_02239B88
+MOD12_02239B88: ; 0x02239B88
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r1, _02239BBC ; =0x02245FA4
+ add r3, sp, #0
+ str r1, [sp]
+ mov r1, #0x11
+ strh r1, [r3, #4]
+ ldr r1, [r0]
+ ldr r2, _02239BC0 ; =0x00000123
+ ldrb r1, [r1, r2]
+ strb r1, [r3, #6]
+ sub r1, r2, #7
+ ldr r4, [r0]
+ add r2, #0x4e
+ ldrb r1, [r4, r1]
+ strb r1, [r3, #8]
+ ldr r1, [r0]
+ ldrb r1, [r1, r2]
+ strb r1, [r3, #7]
+ ldr r1, _02239BC4 ; =0x000004FC
+ add r0, r0, r1
+ add r1, sp, #0
+ bl MOD12_02240ED0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_02239BBC: .word 0x02245FA4
+_02239BC0: .word 0x00000123
+_02239BC4: .word 0x000004FC
+
+ thumb_func_start MOD12_02239BC8
+MOD12_02239BC8: ; 0x02239BC8
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02239BDC
+MOD12_02239BDC: ; 0x02239BDC
+ push {r3, lr}
+ add r1, r2, #0
+ mov r2, #0
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02239BEC
+MOD12_02239BEC: ; 0x02239BEC
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02239BF0
+MOD12_02239BF0: ; 0x02239BF0
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02239C04
+MOD12_02239C04: ; 0x02239C04
+ push {r4, lr}
+ ldr r3, _02239C18 ; =0x00000F1C
+ mov r4, #1
+ strb r4, [r1, r3]
+ add r1, r2, #0
+ mov r2, #0
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ pop {r4, pc}
+ .align 2, 0
+_02239C18: .word 0x00000F1C
+
+ thumb_func_start MOD12_02239C1C
+MOD12_02239C1C: ; 0x02239C1C
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02239C30
+MOD12_02239C30: ; 0x02239C30
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r0, [sp, #0x10]
+ add r6, r1, #0
+ mov r0, #0x16
+ mov r1, #0x1c
+ add r5, r2, #0
+ add r7, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x1c
+ bl MI_CpuFill8
+ str r6, [r4]
+ ldrh r0, [r5]
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ mov r5, #0
+ strh r0, [r4, #0xa]
+ ldr r0, [sp, #0x10]
+ str r0, [r4, #0xc]
+ ldrb r0, [r7]
+ strb r0, [r4, #0x11]
+ b _02239C90
+_02239C6C:
+ ldr r1, [r4]
+ lsl r0, r5, #4
+ add r1, r1, r0
+ mov r0, #0xf2
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _02239C8E
+ bl MOD17_021DD540
+ ldr r1, [r4]
+ lsl r0, r5, #4
+ add r2, r1, r0
+ mov r0, #0xf2
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r2, r0]
+_02239C8E:
+ add r5, r5, #1
+_02239C90:
+ cmp r5, #4
+ blt _02239C6C
+ ldrb r0, [r7]
+ ldr r1, [r6, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #2
+ bl FUN_02068E14
+ add r0, sp, #0x14
+ mov r1, #0
+ mov r2, #0x10
+ bl MI_CpuFill8
+ mov r0, #0x16
+ str r0, [sp, #0x20]
+ mov r1, #0x80
+ mov r0, #0x68
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ ldrb r2, [r7]
+ lsl r2, r2, #4
+ add r3, r6, r2
+ ldr r2, _02239D74 ; =0x00000F24
+ str r1, [r3, r2]
+ ldrb r1, [r7]
+ lsl r1, r1, #4
+ add r3, r6, r1
+ add r1, r2, #4
+ str r0, [r3, r1]
+ ldrb r1, [r7]
+ ldr r2, [r6]
+ add r0, sp, #0x14
+ lsl r1, r1, #2
+ add r1, r2, r1
+ add r1, #0xf8
+ ldr r1, [r1]
+ bl MOD17_021DD4F4
+ ldrb r1, [r7]
+ lsl r1, r1, #4
+ add r2, r6, r1
+ mov r1, #0xf2
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ ldrb r0, [r7]
+ lsl r0, r0, #4
+ add r0, r6, r0
+ ldr r0, [r0, r1]
+ mov r1, #0
+ bl MOD17_021DD594
+ ldr r0, _02239D78 ; =0x04000048
+ mov r2, #0x3f
+ ldrh r1, [r0]
+ mov r3, #0x1f
+ bic r1, r2
+ add r5, r1, #0
+ orr r5, r3
+ mov r1, #0x20
+ orr r1, r5
+ strh r1, [r0]
+ ldrh r1, [r0, #2]
+ bic r1, r2
+ orr r1, r3
+ strh r1, [r0, #2]
+ mov r1, #1
+ add r2, r1, #0
+ add r0, #8
+ sub r2, #0x11
+ bl G2x_SetBlendBrightness_
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _02239D7C ; =0xFFFF1FFF
+ mov r3, #0xff
+ and r1, r0
+ lsr r0, r2, #0xd
+ orr r0, r1
+ mov r1, #0xf6
+ str r0, [r2]
+ lsl r1, r1, #4
+ mov r0, #0
+ strb r0, [r6, r1]
+ add r2, r1, #1
+ strb r0, [r6, r2]
+ add r2, r1, #2
+ strb r3, [r6, r2]
+ ldr r2, _02239D80 ; =0x02245F84
+ add r1, r1, #3
+ ldrsb r2, [r2, r0]
+ mov r3, #2
+ add r2, r2, #4
+ lsl r2, r2, #3
+ strb r2, [r6, r1]
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x16
+ str r0, [sp, #0xc]
+ ldr r2, [r6, #0x30]
+ mov r0, #0x2d
+ mov r1, #0x14
+ bl FUN_020068C8
+ ldr r0, _02239D84 ; =MOD12_02239D8C
+ ldr r2, _02239D88 ; =0x00007530
+ add r1, r4, #0
+ bl FUN_0200CA44
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02239D74: .word 0x00000F24
+_02239D78: .word 0x04000048
+_02239D7C: .word 0xFFFF1FFF
+_02239D80: .word 0x02245F84
+_02239D84: .word MOD12_02239D8C
+_02239D88: .word 0x00007530
+
+ thumb_func_start MOD12_02239D8C
+MOD12_02239D8C: ; 0x02239D8C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #4
+ bhi _02239E6E
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02239DA4: ; jump table
+ .short _02239DAE - _02239DA4 - 2 ; case 0
+ .short _02239DB4 - _02239DA4 - 2 ; case 1
+ .short _02239E0E - _02239DA4 - 2 ; case 2
+ .short _02239E14 - _02239DA4 - 2 ; case 3
+ .short _02239E54 - _02239DA4 - 2 ; case 4
+_02239DAE:
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02239DB4:
+ ldr r1, _02239E88 ; =0x04000048
+ mov r0, #0x3f
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #0x1e
+ orr r2, r0
+ mov r0, #0x20
+ orr r0, r2
+ strh r0, [r1]
+ ldr r0, [r4]
+ ldr r1, [r0, #0xc]
+ ldrb r0, [r4, #0x11]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #2
+ bl FUN_02068E14
+ add r3, r0, #0
+ ldrb r0, [r4, #0x11]
+ mov r2, #0xf2
+ lsl r2, r2, #4
+ lsl r1, r0, #4
+ ldr r0, [r4]
+ add r5, r0, r1
+ add r1, r2, #4
+ ldr r0, [r5, r2]
+ add r2, #8
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ bl MOD17_021DD678
+ ldrb r0, [r4, #0x11]
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r1, r1, r0
+ mov r0, #0xf2
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl MOD17_021DD594
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02239E0E:
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02239E14:
+ ldr r1, _02239E88 ; =0x04000048
+ mov r0, #0x3f
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #0x1f
+ orr r2, r0
+ mov r0, #0x20
+ orr r0, r2
+ strh r0, [r1]
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4]
+ ldr r2, _02239E8C ; =0x00001FFF
+ ldr r0, [r0, #0x50]
+ add r3, r1, #0
+ bl FUN_02003A64
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, [r4]
+ ldr r2, _02239E90 ; =0x00003FFF
+ ldr r0, [r0, #0x50]
+ mov r1, #2
+ bl FUN_02003A64
+ ldr r0, _02239E94 ; =0x000006EC
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02239E54:
+ mov r0, #0x12
+ ldrsh r1, [r4, r0]
+ add r1, r1, #1
+ strh r1, [r4, #0x12]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0xa
+ ble _02239E86
+ mov r0, #0
+ strh r0, [r4, #0x12]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02239E6E:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02239E86:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02239E88: .word 0x04000048
+_02239E8C: .word 0x00001FFF
+_02239E90: .word 0x00003FFF
+_02239E94: .word 0x000006EC
+
+ thumb_func_start MOD12_02239E98
+MOD12_02239E98: ; 0x02239E98
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02239EAC
+MOD12_02239EAC: ; 0x02239EAC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x16
+ mov r1, #0x1c
+ add r5, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x1c
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _02239EF0 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, [sp]
+ str r6, [r4, #0xc]
+ ldrb r0, [r0]
+ strb r0, [r4, #0x11]
+ ldr r0, _02239EF4 ; =MOD12_02239EF8
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02239EF0: .word 0x00007530
+_02239EF4: .word MOD12_02239EF8
+
+ thumb_func_start MOD12_02239EF8
+MOD12_02239EF8: ; 0x02239EF8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _02239F0A
+ cmp r0, #1
+ beq _02239F3A
+ b _02239F8E
+_02239F0A:
+ ldrb r0, [r4, #0x11]
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #0x14]
+ mov r1, #0
+ bl FUN_0200782C
+ lsl r0, r0, #8
+ str r0, [r4, #0x14]
+ ldrb r0, [r4, #0x11]
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #0x14]
+ mov r1, #1
+ bl FUN_0200782C
+ lsl r0, r0, #8
+ str r0, [r4, #0x18]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02239F3A:
+ ldr r0, [r4]
+ ldr r1, [r0, #0xc]
+ ldrb r0, [r4, #0x11]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #2
+ bl FUN_02068E14
+ mov r0, #1
+ ldr r1, [r4, #0x18]
+ lsl r0, r0, #8
+ add r2, r1, r0
+ lsl r1, r0, #6
+ str r2, [r4, #0x18]
+ cmp r2, r1
+ blt _02239F64
+ lsl r0, r0, #6
+ str r0, [r4, #0x18]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_02239F64:
+ ldrb r0, [r4, #0x11]
+ ldr r2, [r4, #0x14]
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #0x14]
+ mov r1, #0
+ asr r2, r2, #8
+ bl FUN_02007558
+ ldrb r0, [r4, #0x11]
+ ldr r2, [r4, #0x18]
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #0x14]
+ mov r1, #1
+ asr r2, r2, #8
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+_02239F8E:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_02239FA8
+MOD12_02239FA8: ; 0x02239FA8
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02239FBC
+MOD12_02239FBC: ; 0x02239FBC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x16
+ mov r1, #0x1c
+ add r5, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x1c
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _0223A004 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, [sp]
+ str r6, [r4, #0xc]
+ ldrb r0, [r0, #1]
+ strb r0, [r4, #0x12]
+ mov r0, #0
+ strb r0, [r4, #0x1a]
+ ldr r0, _0223A008 ; =MOD12_0223A0BC
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223A004: .word 0x00007530
+_0223A008: .word MOD12_0223A0BC
+
+ thumb_func_start MOD12_0223A00C
+MOD12_0223A00C: ; 0x0223A00C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x16
+ mov r1, #0x1c
+ add r5, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x1c
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _0223A054 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, [sp]
+ str r6, [r4, #0xc]
+ ldrb r0, [r0, #2]
+ strb r0, [r4, #0x12]
+ mov r0, #1
+ strb r0, [r4, #0x1a]
+ ldr r0, _0223A058 ; =MOD12_0223A0BC
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223A054: .word 0x00007530
+_0223A058: .word MOD12_0223A0BC
+
+ thumb_func_start MOD12_0223A05C
+MOD12_0223A05C: ; 0x0223A05C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #0x16
+ mov r1, #0x1c
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x1c
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ ldr r2, _0223A0B4 ; =0x00007530
+ str r0, [r4]
+ ldrh r0, [r5]
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ str r7, [r4, #0xc]
+ ldrb r1, [r6, #1]
+ ldrb r0, [r6, #2]
+ add r0, r1, r0
+ strb r0, [r4, #0x12]
+ ldrb r0, [r6, #1]
+ add r1, r4, #0
+ strb r0, [r4, #0x14]
+ ldrb r0, [r6, #2]
+ strb r0, [r4, #0x15]
+ mov r0, #0
+ strb r0, [r4, #0x1a]
+ mov r0, #1
+ strb r0, [r4, #0x1b]
+ ldr r0, _0223A0B8 ; =MOD12_0223A0BC
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223A0B4: .word 0x00007530
+_0223A0B8: .word MOD12_0223A0BC
+
+ thumb_func_start MOD12_0223A0BC
+MOD12_0223A0BC: ; 0x0223A0BC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r1, #0
+ add r4, r0, #0
+ ldrb r0, [r5, #0x10]
+ cmp r0, #0
+ beq _0223A0D6
+ cmp r0, #1
+ beq _0223A0E6
+ cmp r0, #2
+ bne _0223A0D4
+ b _0223A22E
+_0223A0D4:
+ b _0223A248
+_0223A0D6:
+ ldr r0, _0223A264 ; =0x000006E5
+ bl FUN_020054C8
+ mov r0, #0xf
+ strb r0, [r5, #0x11]
+ ldrb r0, [r5, #0x10]
+ add r0, r0, #1
+ strb r0, [r5, #0x10]
+_0223A0E6:
+ ldrb r1, [r5, #0x13]
+ ldrb r0, [r5, #0x12]
+ cmp r1, r0
+ blo _0223A102
+ mov r0, #0
+ strb r0, [r5, #0x11]
+ ldr r0, _0223A264 ; =0x000006E5
+ bl FUN_020054C8
+ ldrb r0, [r5, #0x10]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r5, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223A102:
+ ldrb r0, [r5, #0x1b]
+ cmp r0, #1
+ bne _0223A112
+ ldrb r0, [r5, #0x14]
+ cmp r1, r0
+ blo _0223A112
+ mov r0, #1
+ strb r0, [r5, #0x1a]
+_0223A112:
+ ldrb r0, [r5, #0x11]
+ cmp r0, #0
+ beq _0223A120
+ sub r0, r0, #1
+ add sp, #8
+ strb r0, [r5, #0x11]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223A120:
+ mov r0, #3
+ strb r0, [r5, #0x11]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02082878
+ mov r1, #0x60
+ bl _s32_div_f
+ lsl r0, r1, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02082878
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1a
+ sub r1, r1, r2
+ mov r0, #0x1a
+ ror r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #0x10
+ asr r7, r0, #0x10
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02082878
+ mov r1, #1
+ tst r0, r1
+ beq _0223A164
+ ldr r0, [sp, #4]
+ add r0, #0x80
+ b _0223A16A
+_0223A164:
+ ldr r0, [sp, #4]
+ mov r1, #0x80
+ sub r0, r1, r0
+_0223A16A:
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02082878
+ mov r1, #1
+ tst r0, r1
+ beq _0223A182
+ add r0, r7, #0
+ add r0, #0x60
+ b _0223A186
+_0223A182:
+ mov r0, #0x60
+ sub r0, r0, r7
+_0223A186:
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ ldrb r0, [r5, #0x13]
+ cmp r0, #0
+ beq _0223A1F6
+ mov r0, #0x16
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x80
+ bge _0223A19C
+ cmp r6, #0x80
+ blt _0223A1A4
+_0223A19C:
+ cmp r0, #0x80
+ ble _0223A1F6
+ cmp r6, #0x80
+ ble _0223A1F6
+_0223A1A4:
+ mov r0, #0x18
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x60
+ bge _0223A1B0
+ cmp r4, #0x60
+ blt _0223A1B8
+_0223A1B0:
+ cmp r0, #0x60
+ ble _0223A1F6
+ cmp r4, #0x60
+ ble _0223A1F6
+_0223A1B8:
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02082878
+ mov r1, #1
+ tst r0, r1
+ beq _0223A1E2
+ cmp r6, #0x80
+ bge _0223A1D6
+ ldr r0, [sp, #4]
+ add r0, #0x80
+ str r0, [sp, #4]
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ b _0223A1F6
+_0223A1D6:
+ ldr r0, [sp, #4]
+ mov r1, #0x80
+ sub r0, r1, r0
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ b _0223A1F6
+_0223A1E2:
+ cmp r4, #0x60
+ bge _0223A1EE
+ add r7, #0x60
+ lsl r0, r7, #0x10
+ asr r4, r0, #0x10
+ b _0223A1F6
+_0223A1EE:
+ mov r0, #0x60
+ sub r0, r0, r7
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+_0223A1F6:
+ ldrb r1, [r5, #0x13]
+ mov r0, #1
+ tst r0, r1
+ ldrb r0, [r5, #0x1a]
+ beq _0223A212
+ str r0, [sp]
+ mov r3, #0x2d
+ ldr r0, [r5]
+ add r1, r6, #0
+ add r2, r4, #0
+ lsl r3, r3, #0xe
+ bl MOD12_022398F8
+ b _0223A220
+_0223A212:
+ str r0, [sp]
+ ldr r0, [r5]
+ add r1, r6, #0
+ add r2, r4, #0
+ mov r3, #0
+ bl MOD12_022398F8
+_0223A220:
+ strh r6, [r5, #0x16]
+ strh r4, [r5, #0x18]
+ ldrb r0, [r5, #0x13]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r5, #0x13]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223A22E:
+ ldrb r0, [r5, #0x11]
+ add r0, r0, #1
+ strb r0, [r5, #0x11]
+ ldrb r0, [r5, #0x11]
+ cmp r0, #0x1e
+ bls _0223A260
+ mov r0, #0
+ strb r0, [r5, #0x11]
+ ldrb r0, [r5, #0x10]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r5, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223A248:
+ mov r2, #0
+ ldr r0, [r5, #0xc]
+ add r1, r5, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_0223A260:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223A264: .word 0x000006E5
+
+ thumb_func_start MOD12_0223A268
+MOD12_0223A268: ; 0x0223A268
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223A27C
+MOD12_0223A27C: ; 0x0223A27C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x16
+ mov r1, #0x1c
+ add r5, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x1c
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _0223A2C0 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, [sp]
+ str r6, [r4, #0xc]
+ ldrb r0, [r0]
+ strb r0, [r4, #0x11]
+ ldr r0, _0223A2C4 ; =MOD12_0223A2C8
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223A2C0: .word 0x00007530
+_0223A2C4: .word MOD12_0223A2C8
+
+ thumb_func_start MOD12_0223A2C8
+MOD12_0223A2C8: ; 0x0223A2C8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ ldr r1, [r0, #0xc]
+ ldrb r0, [r4, #0x11]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #2
+ bl FUN_02068E14
+ add r3, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _0223A2EC
+ cmp r0, #1
+ beq _0223A314
+ b _0223A348
+_0223A2EC:
+ ldrb r0, [r4, #0x11]
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r1, r1, r0
+ ldr r0, _0223A384 ; =0x00000F24
+ ldr r1, [r1, r0]
+ add r0, r0, #4
+ lsl r1, r1, #8
+ str r1, [r4, #0x14]
+ ldrb r1, [r4, #0x11]
+ ldr r2, [r4]
+ lsl r1, r1, #4
+ add r1, r2, r1
+ ldr r0, [r1, r0]
+ lsl r0, r0, #8
+ str r0, [r4, #0x18]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223A314:
+ mov r0, #3
+ ldr r1, [r4, #0x14]
+ lsl r0, r0, #8
+ add r1, r1, r0
+ mov r0, #0x4b
+ lsl r0, r0, #0xa
+ str r1, [r4, #0x14]
+ cmp r1, r0
+ blt _0223A32C
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_0223A32C:
+ ldrb r0, [r4, #0x11]
+ ldr r2, [r4, #0x18]
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r1, r1, r0
+ mov r0, #0xf2
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ ldr r1, [r4, #0x14]
+ asr r2, r2, #8
+ asr r1, r1, #8
+ bl MOD17_021DD678
+ pop {r3, r4, r5, pc}
+_0223A348:
+ ldrb r0, [r4, #0x11]
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r1, r1, r0
+ mov r0, #0xf2
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl MOD17_021DD540
+ ldrb r0, [r4, #0x11]
+ mov r2, #0
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r1, r1, r0
+ mov r0, #0xf2
+ lsl r0, r0, #4
+ str r2, [r1, r0]
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ nop
+_0223A384: .word 0x00000F24
+
+ thumb_func_start MOD12_0223A388
+MOD12_0223A388: ; 0x0223A388
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223A39C
+MOD12_0223A39C: ; 0x0223A39C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x16
+ mov r1, #0x18
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x18
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _0223A3D8 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, _0223A3DC ; =MOD12_0223A3E0
+ str r6, [r4, #0xc]
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223A3D8: .word 0x00007530
+_0223A3DC: .word MOD12_0223A3E0
+
+ thumb_func_start MOD12_0223A3E0
+MOD12_0223A3E0: ; 0x0223A3E0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldrb r0, [r1, #0x10]
+ str r1, [sp]
+ cmp r0, #0
+ beq _0223A3F0
+ b _0223A516
+_0223A3F0:
+ ldr r0, [sp]
+ mov r1, #0x14
+ ldrsb r0, [r0, r1]
+ cmp r0, #0
+ ble _0223A404
+ sub r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x14]
+ pop {r4, r5, r6, r7, pc}
+_0223A404:
+ ldr r0, [sp]
+ mov r1, #0x13
+ ldrsb r0, [r0, r1]
+ cmp r0, #0
+ ble _0223A418
+ sub r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x13]
+ pop {r4, r5, r6, r7, pc}
+_0223A418:
+ ldr r0, [sp]
+ mov r1, #1
+ strb r1, [r0, #0x13]
+ ldr r0, [r0]
+ mov r1, #2
+ ldr r0, [r0, #0x30]
+ bl FUN_0201886C
+ mov ip, r0
+ mov r0, #0
+ str r0, [sp, #8]
+ b _0223A490
+_0223A430:
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ ldr r0, _0223A534 ; =0x02245F84
+ ldrsb r1, [r0, r1]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ bmi _0223A48A
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ ldr r0, [sp]
+ mov r5, #0
+ ldrb r0, [r0, #0x12]
+ mov r7, #0x3f
+ str r5, [sp, #4]
+ lsl r1, r0, #1
+ ldr r0, _0223A538 ; =0x02245F8C
+ lsl r7, r7, #0xa
+ ldrh r1, [r0, r1]
+ ldr r0, [sp, #8]
+ lsl r0, r0, #5
+ add r6, r1, r0
+ b _0223A484
+_0223A460:
+ mov r4, #0
+ b _0223A478
+_0223A464:
+ add r0, r5, r4
+ lsl r2, r0, #1
+ ldrh r0, [r3, r2]
+ and r0, r7
+ strh r0, [r3, r2]
+ ldrh r1, [r3, r2]
+ add r0, r6, r4
+ add r4, r4, #1
+ orr r0, r1
+ strh r0, [r3, r2]
+_0223A478:
+ cmp r4, #8
+ blt _0223A464
+ ldr r0, [sp, #4]
+ add r5, #8
+ add r0, r0, #1
+ str r0, [sp, #4]
+_0223A484:
+ ldr r0, [sp, #4]
+ cmp r0, #4
+ blt _0223A460
+_0223A48A:
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+_0223A490:
+ ldr r0, [sp, #8]
+ cmp r0, #4
+ blt _0223A430
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ ble _0223A4D2
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0
+ bne _0223A4D2
+ ldr r0, _0223A534 ; =0x02245F84
+ sub r1, r1, #1
+ ldrsb r0, [r0, r1]
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ mov r0, #0
+ mov r1, #0x3f
+ str r0, [sp, #4]
+ lsl r1, r1, #0xa
+ b _0223A4CC
+_0223A4BC:
+ ldr r0, [sp, #4]
+ lsl r2, r0, #1
+ ldrh r0, [r3, r2]
+ and r0, r1
+ strh r0, [r3, r2]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+_0223A4CC:
+ ldr r0, [sp, #4]
+ cmp r0, #0x20
+ blt _0223A4BC
+_0223A4D2:
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0]
+ ldr r0, [r0, #0x30]
+ bl FUN_0201AC68
+ ldr r0, [sp]
+ ldrb r0, [r0, #0x12]
+ add r1, r0, #1
+ ldr r0, [sp]
+ strb r1, [r0, #0x12]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0xc
+ blo _0223A530
+ ldr r1, [sp]
+ mov r0, #0
+ mov r2, #0x11
+ strb r0, [r1, #0x12]
+ ldrsb r1, [r1, r2]
+ add r3, r1, #1
+ ldr r1, [sp]
+ strb r3, [r1, #0x11]
+ strb r0, [r1, #0x14]
+ add r0, r1, #0
+ ldrsb r0, [r0, r2]
+ cmp r0, #5
+ blo _0223A530
+ add r0, r1, #0
+ ldrb r0, [r0, #0x10]
+ add r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_0223A516:
+ add r0, r1, #0
+ mov r2, #0
+ ldr r0, [r0, #0xc]
+ add r1, r1, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ ldr r0, [sp]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_0223A530:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223A534: .word 0x02245F84
+_0223A538: .word 0x02245F8C
+
+ thumb_func_start MOD12_0223A53C
+MOD12_0223A53C: ; 0x0223A53C
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223A550
+MOD12_0223A550: ; 0x0223A550
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x16
+ mov r1, #0x18
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x18
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _0223A58C ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, _0223A590 ; =MOD12_0223A594
+ str r6, [r4, #0xc]
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223A58C: .word 0x00007530
+_0223A590: .word MOD12_0223A594
+
+ thumb_func_start MOD12_0223A594
+MOD12_0223A594: ; 0x0223A594
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldrb r0, [r1, #0x10]
+ str r1, [sp]
+ cmp r0, #0
+ beq _0223A5A4
+ b _0223A6F2
+_0223A5A4:
+ ldr r0, [sp]
+ mov r1, #0x14
+ ldrsb r0, [r0, r1]
+ cmp r0, #0
+ ble _0223A5B8
+ sub r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x14]
+ pop {r4, r5, r6, r7, pc}
+_0223A5B8:
+ ldr r0, [sp]
+ mov r1, #0x13
+ ldrsb r0, [r0, r1]
+ cmp r0, #0
+ ble _0223A5CC
+ sub r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x13]
+ pop {r4, r5, r6, r7, pc}
+_0223A5CC:
+ ldr r0, [sp]
+ mov r1, #1
+ strb r1, [r0, #0x13]
+ ldr r0, [r0]
+ mov r1, #2
+ ldr r0, [r0, #0x30]
+ bl FUN_0201886C
+ mov ip, r0
+ mov r0, #0
+ str r0, [sp, #8]
+ b _0223A64C
+_0223A5E4:
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ mov r0, #4
+ sub r1, r0, r1
+ ldr r0, _0223A710 ; =0x02245F84
+ ldrsb r1, [r0, r1]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ bmi _0223A646
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ ldr r0, [sp]
+ mov r5, #0
+ ldrb r1, [r0, #0x12]
+ mov r0, #0xb
+ mov r7, #0x3f
+ sub r0, r0, r1
+ lsl r1, r0, #1
+ ldr r0, _0223A714 ; =0x02245F8C
+ str r5, [sp, #4]
+ ldrh r1, [r0, r1]
+ ldr r0, [sp, #8]
+ lsl r7, r7, #0xa
+ lsl r0, r0, #5
+ add r6, r1, r0
+ b _0223A640
+_0223A61C:
+ mov r4, #0
+ b _0223A634
+_0223A620:
+ add r0, r5, r4
+ lsl r2, r0, #1
+ ldrh r0, [r3, r2]
+ and r0, r7
+ strh r0, [r3, r2]
+ ldrh r1, [r3, r2]
+ add r0, r6, r4
+ add r4, r4, #1
+ orr r0, r1
+ strh r0, [r3, r2]
+_0223A634:
+ cmp r4, #8
+ blt _0223A620
+ ldr r0, [sp, #4]
+ add r5, #8
+ add r0, r0, #1
+ str r0, [sp, #4]
+_0223A640:
+ ldr r0, [sp, #4]
+ cmp r0, #4
+ blt _0223A61C
+_0223A646:
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+_0223A64C:
+ ldr r0, [sp, #8]
+ cmp r0, #4
+ blt _0223A5E4
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ ble _0223A6AE
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0
+ bne _0223A6AE
+ mov r0, #5
+ sub r1, r0, r1
+ ldr r0, _0223A710 ; =0x02245F84
+ mov r7, #0x3f
+ ldrsb r0, [r0, r1]
+ lsl r7, r7, #0xa
+ mov r6, #0x1d
+ add r0, r0, #3
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ mov r0, #0
+ mov r1, #2
+ str r0, [sp, #4]
+ lsl r1, r1, #8
+ b _0223A6A8
+_0223A682:
+ ldr r0, [sp, #4]
+ ldr r5, [sp, #4]
+ lsl r4, r0, #1
+ ldrh r0, [r3, r4]
+ lsl r5, r5, #0x1d
+ and r0, r7
+ strh r0, [r3, r4]
+ ldr r0, [sp, #4]
+ ldrh r2, [r3, r4]
+ lsr r0, r0, #0x1f
+ sub r5, r5, r0
+ ror r5, r6
+ add r0, r0, r5
+ add r0, r0, r1
+ orr r0, r2
+ strh r0, [r3, r4]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+_0223A6A8:
+ ldr r0, [sp, #4]
+ cmp r0, #0x20
+ blt _0223A682
+_0223A6AE:
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0]
+ ldr r0, [r0, #0x30]
+ bl FUN_0201AC68
+ ldr r0, [sp]
+ ldrb r0, [r0, #0x12]
+ add r1, r0, #1
+ ldr r0, [sp]
+ strb r1, [r0, #0x12]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0xc
+ blo _0223A70C
+ ldr r1, [sp]
+ mov r0, #0
+ mov r2, #0x11
+ strb r0, [r1, #0x12]
+ ldrsb r1, [r1, r2]
+ add r3, r1, #1
+ ldr r1, [sp]
+ strb r3, [r1, #0x11]
+ strb r0, [r1, #0x14]
+ add r0, r1, #0
+ ldrsb r0, [r0, r2]
+ cmp r0, #5
+ blo _0223A70C
+ add r0, r1, #0
+ ldrb r0, [r0, #0x10]
+ add r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_0223A6F2:
+ add r0, r1, #0
+ mov r2, #0
+ ldr r0, [r0, #0xc]
+ add r1, r1, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ ldr r0, [sp]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_0223A70C:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223A710: .word 0x02245F84
+_0223A714: .word 0x02245F8C
+
+ thumb_func_start MOD12_0223A718
+MOD12_0223A718: ; 0x0223A718
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223A72C
+MOD12_0223A72C: ; 0x0223A72C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x16
+ mov r1, #0x1c
+ add r5, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x1c
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _0223A770 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, [sp]
+ str r6, [r4, #0xc]
+ ldrb r0, [r0]
+ strb r0, [r4, #0x11]
+ ldr r0, _0223A774 ; =MOD12_0223A778
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223A770: .word 0x00007530
+_0223A774: .word MOD12_0223A778
+
+ thumb_func_start MOD12_0223A778
+MOD12_0223A778: ; 0x0223A778
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _0223A78A
+ cmp r0, #1
+ beq _0223A7B4
+ b _0223A7F8
+_0223A78A:
+ ldrb r1, [r4, #0x11]
+ ldr r0, [r4]
+ bl MOD12_02239A10
+ ldr r0, [r4]
+ mov r1, #0
+ ldr r0, [r0, #0x24]
+ bl FUN_0200782C
+ lsl r0, r0, #8
+ str r0, [r4, #0x14]
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0, #0x24]
+ bl FUN_0200782C
+ lsl r0, r0, #8
+ str r0, [r4, #0x18]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_0223A7B4:
+ mov r0, #1
+ ldr r1, [r4, #0x14]
+ lsl r0, r0, #0xa
+ sub r1, r1, r0
+ mov r0, #0xe6
+ lsl r0, r0, #8
+ str r1, [r4, #0x14]
+ cmp r1, r0
+ bgt _0223A7CE
+ str r0, [r4, #0x14]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_0223A7CE:
+ ldr r3, [r4, #0x14]
+ ldr r0, [r4]
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ ldr r0, [r0, #0x24]
+ mov r1, #0
+ asr r2, r2, #8
+ bl FUN_02007558
+ ldr r3, [r4, #0x18]
+ ldr r0, [r4]
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ ldr r0, [r0, #0x24]
+ mov r1, #1
+ asr r2, r2, #8
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+_0223A7F8:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223A814
+MOD12_0223A814: ; 0x0223A814
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223A828
+MOD12_0223A828: ; 0x0223A828
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x16
+ mov r1, #0x1c
+ add r5, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x1c
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _0223A86C ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, [sp]
+ str r6, [r4, #0xc]
+ ldrb r0, [r0]
+ strb r0, [r4, #0x11]
+ ldr r0, _0223A870 ; =MOD12_0223A874
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223A86C: .word 0x00007530
+_0223A870: .word MOD12_0223A874
+
+ thumb_func_start MOD12_0223A874
+MOD12_0223A874: ; 0x0223A874
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _0223A886
+ cmp r0, #1
+ beq _0223A8B4
+ b _0223A8F8
+_0223A886:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x24]
+ cmp r0, #0
+ bne _0223A892
+ bl ErrorHandling
+_0223A892:
+ ldr r0, [r4]
+ mov r1, #0
+ ldr r0, [r0, #0x24]
+ bl FUN_0200782C
+ lsl r0, r0, #8
+ str r0, [r4, #0x14]
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0, #0x24]
+ bl FUN_0200782C
+ lsl r0, r0, #8
+ str r0, [r4, #0x18]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_0223A8B4:
+ mov r0, #1
+ ldr r1, [r4, #0x14]
+ lsl r0, r0, #0xa
+ add r1, r1, r0
+ mov r0, #5
+ lsl r0, r0, #0xe
+ str r1, [r4, #0x14]
+ cmp r1, r0
+ blt _0223A8CE
+ str r0, [r4, #0x14]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_0223A8CE:
+ ldr r3, [r4, #0x14]
+ ldr r0, [r4]
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ ldr r0, [r0, #0x24]
+ mov r1, #0
+ asr r2, r2, #8
+ bl FUN_02007558
+ ldr r3, [r4, #0x18]
+ ldr r0, [r4]
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ ldr r0, [r0, #0x24]
+ mov r1, #1
+ asr r2, r2, #8
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+_0223A8F8:
+ ldr r0, [r4]
+ bl MOD12_02239A58
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_0223A918
+MOD12_0223A918: ; 0x0223A918
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223A92C
+MOD12_0223A92C: ; 0x0223A92C
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ add r6, r1, #0
+ mov r0, #0x16
+ mov r1, #0x58
+ add r5, r2, #0
+ add r7, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x58
+ bl MI_CpuFill8
+ str r6, [r4]
+ ldrh r0, [r5]
+ ldr r2, _0223A988 ; =0x00007530
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, [sp]
+ str r0, [r4, #0xc]
+ ldrb r0, [r7]
+ strb r0, [r4, #0x11]
+ str r6, [r4, #0x2c]
+ str r6, [r4, #0x38]
+ add r0, r4, #0
+ ldrb r1, [r7]
+ add r0, #0x46
+ strb r1, [r0]
+ str r6, [r4, #0x48]
+ ldrb r0, [r7]
+ ldr r1, [r6, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, r4, #0
+ str r0, [r4, #0x24]
+ ldr r0, _0223A98C ; =MOD12_0223A990
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223A988: .word 0x00007530
+_0223A98C: .word MOD12_0223A990
+
+ thumb_func_start MOD12_0223A990
+MOD12_0223A990: ; 0x0223A990
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r4, r0, #0
+ ldrb r0, [r5, #0x10]
+ cmp r0, #0
+ beq _0223A9A8
+ cmp r0, #1
+ beq _0223AA32
+ cmp r0, #2
+ beq _0223AA5C
+ b _0223AA8A
+_0223A9A8:
+ ldr r0, _0223AAA8 ; =MOD12_0223AB54
+ ldr r2, _0223AAAC ; =0x0000753A
+ add r1, #0x2c
+ bl FUN_0200CA44
+ add r1, r5, #0
+ ldr r0, _0223AAB0 ; =MOD12_0223ACFC
+ ldr r2, _0223AAAC ; =0x0000753A
+ add r1, #0x48
+ bl FUN_0200CA44
+ ldr r0, [r5, #0x38]
+ ldr r1, [r0, #0xc]
+ add r0, r5, #0
+ add r0, #0x46
+ ldrb r0, [r0]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #2
+ bl FUN_02068E14
+ add r4, r0, #0
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #0x10
+ bl MI_CpuFill8
+ mov r0, #0x16
+ str r0, [sp, #0xc]
+ mov r0, #0x80
+ add r4, #0x40
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ ldr r1, [r5, #0x38]
+ add r0, sp, #0
+ ldr r2, [r1]
+ add r1, r5, #0
+ add r1, #0x46
+ ldrb r1, [r1]
+ lsl r1, r1, #2
+ add r1, r2, r1
+ add r1, #0xf8
+ ldr r1, [r1]
+ bl MOD17_021DD4F4
+ add r1, r5, #0
+ add r1, #0x46
+ ldrb r1, [r1]
+ ldr r2, [r5, #0x38]
+ lsl r1, r1, #4
+ add r2, r2, r1
+ mov r1, #0xf2
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ add r0, r5, #0
+ add r0, #0x46
+ ldrb r0, [r0]
+ ldr r2, [r5, #0x38]
+ lsl r0, r0, #4
+ add r0, r2, r0
+ ldr r0, [r0, r1]
+ mov r1, #0
+ bl MOD17_021DD594
+ ldrb r0, [r5, #0x10]
+ add sp, #0x10
+ add r0, r0, #1
+ strb r0, [r5, #0x10]
+ pop {r3, r4, r5, pc}
+_0223AA32:
+ add r0, r5, #0
+ add r0, #0x35
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _0223AAA2
+ ldr r0, _0223AAB4 ; =MOD12_0223AAF8
+ ldr r2, _0223AAAC ; =0x0000753A
+ add r1, #0x14
+ bl FUN_0200CA44
+ add r1, r5, #0
+ ldr r0, _0223AAB8 ; =MOD12_0223ABD4
+ ldr r2, _0223AAAC ; =0x0000753A
+ add r1, #0x38
+ bl FUN_0200CA44
+ ldrb r0, [r5, #0x10]
+ add sp, #0x10
+ add r0, r0, #1
+ strb r0, [r5, #0x10]
+ pop {r3, r4, r5, pc}
+_0223AA5C:
+ add r0, r5, #0
+ add r0, #0x29
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _0223AAA2
+ add r0, r5, #0
+ add r0, #0x45
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _0223AAA2
+ add r0, r5, #0
+ add r0, #0x55
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _0223AAA2
+ ldr r0, _0223AABC ; =0x000006E5
+ bl FUN_020054C8
+ ldrb r0, [r5, #0x10]
+ add sp, #0x10
+ add r0, r0, #1
+ strb r0, [r5, #0x10]
+ pop {r3, r4, r5, pc}
+_0223AA8A:
+ mov r2, #0
+ ldr r0, [r5, #0xc]
+ add r1, r5, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_0223AAA2:
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_0223AAA8: .word MOD12_0223AB54
+_0223AAAC: .word 0x0000753A
+_0223AAB0: .word MOD12_0223ACFC
+_0223AAB4: .word MOD12_0223AAF8
+_0223AAB8: .word MOD12_0223ABD4
+_0223AABC: .word 0x000006E5
+
+ thumb_func_start MOD12_0223AAC0
+MOD12_0223AAC0: ; 0x0223AAC0
+ push {r3}
+ sub sp, #0xc
+ add r2, sp, #0
+ mov r1, #0
+ str r1, [r2]
+ str r1, [r2, #4]
+ str r1, [r2, #8]
+ ldr r1, [r0, #0x20]
+ ldr r2, [sp]
+ ldr r1, [r1]
+ ldr r1, [r1, #4]
+ add r1, r2, r1
+ str r1, [r0, #0x28]
+ ldr r1, [r0, #0x20]
+ ldr r2, [sp, #4]
+ ldr r1, [r1]
+ ldr r1, [r1, #8]
+ add r1, r2, r1
+ str r1, [r0, #0x2c]
+ ldr r1, [r0, #0x20]
+ ldr r2, [sp, #8]
+ ldr r1, [r1]
+ ldr r1, [r1, #0xc]
+ add r1, r2, r1
+ str r1, [r0, #0x30]
+ add sp, #0xc
+ pop {r3}
+ bx lr
+
+ thumb_func_start MOD12_0223AAF8
+MOD12_0223AAF8: ; 0x0223AAF8
+ push {r4, lr}
+ add r4, r1, #0
+ ldrb r2, [r4, #0x14]
+ cmp r2, #0
+ beq _0223AB08
+ cmp r2, #1
+ beq _0223AB2C
+ b _0223AB44
+_0223AB08:
+ mov r0, #0
+ str r0, [r4]
+ ldr r0, [r4, #0x10]
+ str r0, [r4, #8]
+ mov r0, #0x16
+ bl MOD08_02228218
+ str r0, [r4, #0xc]
+ bl MOD08_02228524
+ ldr r0, [r4, #0xc]
+ ldr r1, _0223AB50 ; =MOD12_0223AAC0
+ bl MOD08_02228574
+ ldrb r0, [r4, #0x14]
+ add r0, r0, #1
+ strb r0, [r4, #0x14]
+ pop {r4, pc}
+_0223AB2C:
+ ldr r0, [r4, #0xc]
+ bl MOD08_022285B4
+ cmp r0, #0
+ bne _0223AB4C
+ ldr r0, [r4, #0xc]
+ bl MOD08_02228618
+ ldrb r0, [r4, #0x14]
+ add r0, r0, #1
+ strb r0, [r4, #0x14]
+ pop {r4, pc}
+_0223AB44:
+ mov r1, #1
+ strb r1, [r4, #0x15]
+ bl FUN_0200CAB4
+_0223AB4C:
+ pop {r4, pc}
+ nop
+_0223AB50: .word MOD12_0223AAC0
+
+ thumb_func_start MOD12_0223AB54
+MOD12_0223AB54: ; 0x0223AB54
+ push {r3, r4, r5, lr}
+ sub sp, #0x28
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _0223AB6C
+ cmp r0, #1
+ beq _0223AB86
+ cmp r0, #2
+ beq _0223ABB6
+ b _0223ABC0
+_0223AB6C:
+ ldrb r0, [r4, #0xa]
+ add r0, r0, #1
+ strb r0, [r4, #0xa]
+ ldrb r0, [r4, #0xa]
+ cmp r0, #1
+ blo _0223ABD0
+ mov r0, #0
+ strb r0, [r4, #0xa]
+ ldrb r0, [r4, #8]
+ add sp, #0x28
+ add r0, r0, #1
+ strb r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_0223AB86:
+ mov r0, #0xe
+ str r0, [sp]
+ mov r0, #0x16
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x28]
+ str r0, [sp, #0x1c]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x50]
+ str r0, [sp, #0x20]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ add r0, sp, #0
+ bl MOD08_02229918
+ str r0, [r4, #4]
+ ldrb r0, [r4, #8]
+ add sp, #0x28
+ add r0, r0, #1
+ strb r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_0223ABB6:
+ ldr r0, [r4, #4]
+ bl MOD08_022299E8
+ cmp r0, #1
+ beq _0223ABD0
+_0223ABC0:
+ ldr r0, [r4, #4]
+ bl MOD08_02229A2C
+ mov r0, #1
+ strb r0, [r4, #9]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0223ABD0:
+ add sp, #0x28
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_0223ABD4
+MOD12_0223ABD4: ; 0x0223ABD4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ ldr r1, [r0, #0xc]
+ ldrb r0, [r4, #0xe]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #2
+ bl FUN_02068E14
+ add r6, r0, #0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #0
+ beq _0223ABFA
+ cmp r0, #1
+ beq _0223AC4A
+ b _0223ACE8
+_0223ABFA:
+ mov r1, #0
+ str r1, [r4, #4]
+ str r1, [r4, #8]
+ ldrb r0, [r4, #0xe]
+ mov r3, #0xf2
+ ldr r2, [r4]
+ lsl r0, r0, #4
+ add r0, r2, r0
+ lsl r3, r3, #4
+ ldr r0, [r0, r3]
+ add r2, r1, #0
+ add r3, #0xe0
+ bl MOD05_021DD60C
+ ldrb r1, [r4, #0xe]
+ ldr r2, [r4]
+ mov r0, #0x80
+ lsl r1, r1, #4
+ add r2, r2, r1
+ ldr r1, _0223ACF8 ; =0x00000F24
+ str r0, [r2, r1]
+ ldrb r2, [r4, #0xe]
+ ldr r3, [r4]
+ mov r0, #0x68
+ lsl r2, r2, #4
+ add r3, r3, r2
+ add r2, r1, #4
+ str r0, [r3, r2]
+ ldrb r0, [r4, #0xe]
+ ldr r2, [r4]
+ lsl r0, r0, #4
+ add r2, r2, r0
+ sub r0, r1, #4
+ ldr r0, [r2, r0]
+ mov r1, #1
+ bl MOD17_021DD594
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_0223AC4A:
+ mov r0, #2
+ ldr r1, [r4, #4]
+ lsl r0, r0, #8
+ add r1, r1, r0
+ str r1, [r4, #4]
+ ldr r1, [r4, #8]
+ add r1, r1, r0
+ str r1, [r4, #8]
+ ldr r2, [r4, #4]
+ lsl r1, r0, #3
+ cmp r2, r1
+ blt _0223AC68
+ lsl r0, r0, #3
+ str r0, [r4, #4]
+ str r0, [r4, #8]
+_0223AC68:
+ ldrb r0, [r4, #0xe]
+ mov r3, #0xf2
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ lsl r3, r3, #4
+ ldr r0, [r0, r3]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ add r3, #0xe0
+ bl MOD05_021DD60C
+ ldrb r0, [r4, #0xe]
+ mov r2, #0xf2
+ lsl r2, r2, #4
+ lsl r1, r0, #4
+ ldr r0, [r4]
+ add r3, r0, r1
+ add r1, r2, #4
+ ldr r0, [r3, r2]
+ add r2, #8
+ ldr r1, [r3, r1]
+ ldr r2, [r3, r2]
+ add r3, r6, #0
+ bl MOD17_021DD678
+ mov r0, #1
+ ldr r1, [r4, #4]
+ lsl r0, r0, #0xc
+ cmp r1, r0
+ blt _0223ACF2
+ ldr r0, [r4]
+ mov r2, #0
+ ldr r1, [r0, #0xc]
+ ldrb r0, [r4, #0xe]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #5
+ bl FUN_020671BC
+ add r2, r0, #0
+ mov r0, #0x7f
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ mov r3, #0x16
+ str r3, [sp, #8]
+ ldr r3, [r4]
+ lsl r2, r2, #0x10
+ ldr r5, [r3]
+ ldrb r3, [r4, #0xe]
+ add r0, #0xdd
+ lsr r2, r2, #0x10
+ lsl r3, r3, #2
+ add r3, r5, r3
+ ldr r0, [r3, r0]
+ add r3, r1, #0
+ bl FUN_02069FB0
+ ldrb r0, [r4, #0xc]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, pc}
+_0223ACE8:
+ mov r0, #1
+ strb r0, [r4, #0xd]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0223ACF2:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_0223ACF8: .word 0x00000F24
+
+ thumb_func_start MOD12_0223ACFC
+MOD12_0223ACFC: ; 0x0223ACFC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0xc]
+ cmp r0, #4
+ bls _0223AD0A
+ b _0223AE32
+_0223AD0A:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223AD16: ; jump table
+ .short _0223AD20 - _0223AD16 - 2 ; case 0
+ .short _0223AD46 - _0223AD16 - 2 ; case 1
+ .short _0223AD68 - _0223AD16 - 2 ; case 2
+ .short _0223ADD6 - _0223AD16 - 2 ; case 3
+ .short _0223ADEE - _0223AD16 - 2 ; case 4
+_0223AD20:
+ ldr r0, [r4]
+ ldr r0, [r0, #0x24]
+ cmp r0, #0
+ bne _0223AD2C
+ bl ErrorHandling
+_0223AD2C:
+ ldrb r0, [r4, #0xf]
+ add r0, r0, #1
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #0xf]
+ cmp r0, #1
+ bhi _0223AD3A
+ b _0223AE42
+_0223AD3A:
+ mov r0, #0
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223AD46:
+ ldr r0, [r4]
+ mov r1, #0
+ ldr r0, [r0, #0x24]
+ bl FUN_0200782C
+ lsl r0, r0, #8
+ str r0, [r4, #4]
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0, #0x24]
+ bl FUN_0200782C
+ lsl r0, r0, #8
+ str r0, [r4, #8]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_0223AD68:
+ ldrb r1, [r4, #0xe]
+ mov r0, #1
+ tst r0, r1
+ ldr r0, [r4]
+ beq _0223AD9A
+ ldr r3, [r4, #4]
+ ldr r0, [r0, #0x24]
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ mov r1, #0
+ asr r2, r2, #8
+ bl FUN_02007558
+ ldr r3, [r4, #8]
+ ldr r0, [r4]
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ ldr r0, [r0, #0x24]
+ mov r1, #1
+ asr r2, r2, #8
+ bl FUN_02007558
+ b _0223ADC2
+_0223AD9A:
+ ldr r3, [r4, #4]
+ ldr r0, [r0, #0x24]
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ mov r1, #0
+ asr r2, r2, #8
+ bl FUN_02007558
+ ldr r3, [r4, #8]
+ ldr r0, [r4]
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ asr r2, r2, #8
+ ldr r0, [r0, #0x24]
+ mov r1, #1
+ sub r2, r2, #3
+ bl FUN_02007558
+_0223ADC2:
+ ldrb r0, [r4, #0xe]
+ add r0, r0, #1
+ strb r0, [r4, #0xe]
+ ldrb r0, [r4, #0xe]
+ cmp r0, #3
+ blo _0223AE42
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223ADD6:
+ ldrb r0, [r4, #0xf]
+ add r0, r0, #1
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #0xf]
+ cmp r0, #7
+ blo _0223AE42
+ mov r0, #0
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_0223ADEE:
+ mov r0, #1
+ ldr r1, [r4, #4]
+ lsl r0, r0, #0xa
+ add r1, r1, r0
+ mov r0, #5
+ lsl r0, r0, #0xe
+ str r1, [r4, #4]
+ cmp r1, r0
+ blt _0223AE08
+ str r0, [r4, #4]
+ ldrb r0, [r4, #0xc]
+ add r0, r0, #1
+ strb r0, [r4, #0xc]
+_0223AE08:
+ ldr r3, [r4, #4]
+ ldr r0, [r4]
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ ldr r0, [r0, #0x24]
+ mov r1, #0
+ asr r2, r2, #8
+ bl FUN_02007558
+ ldr r3, [r4, #8]
+ ldr r0, [r4]
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ ldr r0, [r0, #0x24]
+ mov r1, #1
+ asr r2, r2, #8
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+_0223AE32:
+ ldr r0, [r4]
+ bl MOD12_02239A58
+ mov r0, #1
+ strb r0, [r4, #0xd]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0223AE42:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_0223AE44
+MOD12_0223AE44: ; 0x0223AE44
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223AE58
+MOD12_0223AE58: ; 0x0223AE58
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #0x16
+ mov r1, #0x1c
+ add r6, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x1c
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ ldr r2, _0223AEB8 ; =0x00007530
+ str r0, [r4]
+ ldrh r0, [r6]
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ str r7, [r4, #0xc]
+ ldrb r0, [r5]
+ strb r0, [r4, #0x11]
+ ldrb r0, [r5, #3]
+ strb r0, [r4, #0x13]
+ ldrb r0, [r5, #4]
+ strb r0, [r4, #0x14]
+ ldrb r0, [r5, #5]
+ strb r0, [r4, #0x15]
+ ldrb r0, [r5, #6]
+ strb r0, [r4, #0x16]
+ ldrb r0, [r5, #7]
+ strb r0, [r4, #0x17]
+ ldrb r0, [r5, #9]
+ strb r0, [r4, #0x19]
+ ldrb r0, [r5, #8]
+ strb r0, [r4, #0x18]
+ ldr r0, _0223AEBC ; =MOD12_0223AEC0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223AEB8: .word 0x00007530
+_0223AEBC: .word MOD12_0223AEC0
+
+ thumb_func_start MOD12_0223AEC0
+MOD12_0223AEC0: ; 0x0223AEC0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _0223AED6
+ cmp r0, #1
+ beq _0223AF0E
+ cmp r0, #2
+ beq _0223AF20
+ b _0223AF58
+_0223AED6:
+ ldrb r0, [r4, #0x17]
+ cmp r0, #0
+ beq _0223AF08
+ ldr r0, [r4]
+ mov r1, #1
+ add r0, #0x34
+ add r2, r1, #0
+ mov r3, #0xe
+ bl FUN_0200D0BC
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0, #0x30]
+ bl FUN_0201AC68
+ add r2, r4, #0
+ ldrb r1, [r4, #0x17]
+ ldr r0, [r4]
+ add r2, #0x13
+ bl MOD12_02239B48
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223AF08:
+ mov r0, #0x64
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223AF0E:
+ ldr r0, [r4]
+ bl MOD12_02239B7C
+ cmp r0, #0
+ bne _0223AF70
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223AF20:
+ ldrb r0, [r4, #0x12]
+ add r0, r0, #1
+ strb r0, [r4, #0x12]
+ ldrb r0, [r4, #0x19]
+ cmp r0, #1
+ bne _0223AF34
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223AF34:
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x18]
+ cmp r1, r0
+ blo _0223AF70
+ ldr r0, [r4]
+ mov r1, #1
+ add r0, #0x34
+ bl FUN_0200D0E0
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0, #0x30]
+ bl FUN_0201AC68
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223AF58:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0223AF70:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223AF74
+MOD12_0223AF74: ; 0x0223AF74
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223AF88
+MOD12_0223AF88: ; 0x0223AF88
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #0x16
+ mov r1, #0x18
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x18
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ ldr r2, _0223AFD8 ; =0x00007530
+ str r0, [r4]
+ ldrh r0, [r5]
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ str r7, [r4, #0xc]
+ mov r0, #0xa
+ ldrsb r0, [r6, r0]
+ strb r0, [r4, #0x11]
+ mov r0, #0xb
+ ldrsb r0, [r6, r0]
+ strb r0, [r4, #0x12]
+ mov r0, #0xc
+ ldrsb r0, [r6, r0]
+ strb r0, [r4, #0x13]
+ ldr r0, _0223AFDC ; =MOD12_0223AFE0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223AFD8: .word 0x00007530
+_0223AFDC: .word MOD12_0223AFE0
+
+ thumb_func_start MOD12_0223AFE0
+MOD12_0223AFE0: ; 0x0223AFE0
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _0223AFF4
+ cmp r0, #1
+ beq _0223B06C
+ b _0223B0A8
+_0223AFF4:
+ ldr r0, [r4]
+ ldr r1, [r0]
+ ldr r0, _0223B0C4 ; =0x00000171
+ ldrb r0, [r1, r0]
+ cmp r0, #1
+ bne _0223B04E
+ ldr r0, _0223B0C8 ; =0x04000048
+ ldr r1, _0223B0CC ; =0xFFFFC0FF
+ ldrh r2, [r0]
+ and r2, r1
+ mov r1, #0x1f
+ lsl r1, r1, #8
+ orr r1, r2
+ strh r1, [r0]
+ ldrh r2, [r0, #2]
+ mov r1, #0x3f
+ bic r2, r1
+ mov r1, #0x1f
+ orr r2, r1
+ mov r1, #0x20
+ orr r2, r1
+ strh r2, [r0, #2]
+ lsl r3, r1, #0x15
+ ldr r2, [r3]
+ ldr r0, _0223B0D0 ; =0xFFFF1FFF
+ and r2, r0
+ lsl r0, r1, #9
+ orr r0, r2
+ str r0, [r3]
+ ldr r1, [r4]
+ ldr r0, _0223B0D4 ; =0x00000F64
+ mov r2, #0xf0
+ strb r2, [r1, r0]
+ ldr r2, [r4]
+ mov r3, #0
+ add r1, r0, #1
+ strb r3, [r2, r1]
+ add r1, r0, #2
+ ldr r2, [r4]
+ mov r3, #0xff
+ strb r3, [r2, r1]
+ ldr r1, [r4]
+ mov r2, #0x10
+ add r0, r0, #3
+ strb r2, [r1, r0]
+_0223B04E:
+ mov r0, #1
+ str r0, [sp]
+ mov r1, #0x12
+ mov r2, #0x11
+ ldrb r0, [r4, #0x13]
+ ldrsb r1, [r4, r1]
+ ldrsb r2, [r4, r2]
+ mov r3, #0x3d
+ bl FUN_0200A208
+ ldrb r0, [r4, #0x10]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223B06C:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _0223B0C0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xd0
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ ldr r0, [r0, #0x50]
+ add r3, r1, #0
+ bl FUN_02003914
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0xe0
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ mov r1, #2
+ ldr r0, [r0, #0x50]
+ add r3, r2, #0
+ bl FUN_02003914
+ ldrb r0, [r4, #0x10]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223B0A8:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0223B0C0:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223B0C4: .word 0x00000171
+_0223B0C8: .word 0x04000048
+_0223B0CC: .word 0xFFFFC0FF
+_0223B0D0: .word 0xFFFF1FFF
+_0223B0D4: .word 0x00000F64
+
+ thumb_func_start MOD12_0223B0D8
+MOD12_0223B0D8: ; 0x0223B0D8
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223B0EC
+MOD12_0223B0EC: ; 0x0223B0EC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x16
+ mov r1, #0x1c
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x1c
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _0223B128 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, _0223B12C ; =MOD12_0223B130
+ str r6, [r4, #0xc]
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223B128: .word 0x00007530
+_0223B12C: .word MOD12_0223B130
+
+ thumb_func_start MOD12_0223B130
+MOD12_0223B130: ; 0x0223B130
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r1, #0x18]
+ str r1, [sp]
+ add r1, r0, #1
+ ldr r0, [sp]
+ cmp r1, #0x1e
+ str r1, [r0, #0x18]
+ bne _0223B14C
+ mov r1, #0x1e
+ strb r1, [r0, #0x13]
+ mov r1, #1
+ strb r1, [r0, #0x15]
+_0223B14C:
+ ldr r0, [sp]
+ ldr r0, [r0]
+ ldr r1, [r0]
+ ldr r0, _0223B344 ; =0x00000171
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _0223B186
+ ldr r0, [sp]
+ ldr r0, [r0, #0x18]
+ cmp r0, #0x1e
+ bge _0223B186
+ ldr r0, _0223B348 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ bne _0223B174
+ ldr r0, _0223B34C ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0
+ beq _0223B186
+_0223B174:
+ ldr r0, [sp]
+ mov r1, #0x1e
+ str r1, [r0, #0x18]
+ ldr r1, [sp]
+ mov r0, #0
+ strb r0, [r1, #0x13]
+ mov r2, #1
+ strb r2, [r1, #0x15]
+ b _0223B194
+_0223B186:
+ ldr r0, [sp]
+ ldr r0, [r0, #0x18]
+ cmp r0, #0x1e
+ ble _0223B192
+ mov r0, #0
+ b _0223B194
+_0223B192:
+ mov r0, #1
+_0223B194:
+ ldr r1, [sp]
+ ldrb r1, [r1, #0x10]
+ cmp r1, #0
+ beq _0223B19E
+ b _0223B316
+_0223B19E:
+ ldr r1, [sp]
+ mov r2, #0x14
+ ldrsb r1, [r1, r2]
+ cmp r1, #0
+ ble _0223B1B2
+ ldr r0, [sp]
+ sub r1, r1, #1
+ strb r1, [r0, #0x14]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0223B1B2:
+ ldr r1, [sp]
+ mov r2, #0x13
+ ldrsb r1, [r1, r2]
+ cmp r1, #0
+ ble _0223B1C6
+ ldr r0, [sp]
+ sub r1, r1, #1
+ strb r1, [r0, #0x13]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0223B1C6:
+ ldr r1, [sp]
+ strb r0, [r1, #0x13]
+ add r0, r1, #0
+ ldrb r0, [r0, #0x15]
+ cmp r0, #1
+ bne _0223B1DE
+ ldr r0, _0223B350 ; =0x000006ED
+ bl FUN_020054C8
+ ldr r0, [sp]
+ mov r1, #0
+ strb r1, [r0, #0x15]
+_0223B1DE:
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0]
+ ldr r0, [r0, #0x30]
+ bl FUN_0201886C
+ mov ip, r0
+ mov r0, #0
+ str r0, [sp, #8]
+ b _0223B252
+_0223B1F2:
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ ldr r0, _0223B354 ; =0x02245F84
+ ldrsb r1, [r0, r1]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ bmi _0223B24C
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ ldr r0, [sp]
+ mov r5, #0
+ ldrb r0, [r0, #0x12]
+ mov r7, #0x3f
+ str r5, [sp, #4]
+ lsl r1, r0, #1
+ ldr r0, _0223B358 ; =0x02245F8C
+ lsl r7, r7, #0xa
+ ldrh r1, [r0, r1]
+ ldr r0, [sp, #8]
+ lsl r0, r0, #5
+ add r6, r1, r0
+ b _0223B246
+_0223B222:
+ mov r4, #0
+ b _0223B23A
+_0223B226:
+ add r0, r5, r4
+ lsl r2, r0, #1
+ ldrh r0, [r3, r2]
+ and r0, r7
+ strh r0, [r3, r2]
+ ldrh r1, [r3, r2]
+ add r0, r6, r4
+ add r4, r4, #1
+ orr r0, r1
+ strh r0, [r3, r2]
+_0223B23A:
+ cmp r4, #8
+ blt _0223B226
+ ldr r0, [sp, #4]
+ add r5, #8
+ add r0, r0, #1
+ str r0, [sp, #4]
+_0223B246:
+ ldr r0, [sp, #4]
+ cmp r0, #4
+ blt _0223B222
+_0223B24C:
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+_0223B252:
+ ldr r0, [sp, #8]
+ cmp r0, #4
+ blt _0223B1F2
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ ble _0223B294
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0
+ bne _0223B294
+ ldr r0, _0223B354 ; =0x02245F84
+ sub r1, r1, #1
+ ldrsb r0, [r0, r1]
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ mov r0, #0
+ mov r1, #0x3f
+ str r0, [sp, #4]
+ lsl r1, r1, #0xa
+ b _0223B28E
+_0223B27E:
+ ldr r0, [sp, #4]
+ lsl r2, r0, #1
+ ldrh r0, [r3, r2]
+ and r0, r1
+ strh r0, [r3, r2]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+_0223B28E:
+ ldr r0, [sp, #4]
+ cmp r0, #0x20
+ blt _0223B27E
+_0223B294:
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0]
+ ldr r0, [r0, #0x30]
+ bl FUN_0201AC68
+ ldr r0, [sp]
+ mov r1, #0xc
+ ldrb r0, [r0, #0x12]
+ lsl r0, r0, #5
+ bl _u32_div_f
+ ldr r1, [sp]
+ mov r2, #0x11
+ ldrsb r2, [r1, r2]
+ ldr r1, _0223B354 ; =0x02245F84
+ ldrsb r1, [r1, r2]
+ add r1, r1, #4
+ lsl r1, r1, #3
+ sub r2, r1, r0
+ ldr r0, [sp]
+ ldr r1, _0223B35C ; =0x00000F63
+ ldr r0, [r0]
+ strb r2, [r0, r1]
+ ldr r0, [sp]
+ ldr r0, [r0]
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ bne _0223B2DE
+ ldr r2, _0223B360 ; =0x04000050
+ mov r0, #0
+ strh r0, [r2]
+ sub r2, #0x50
+ ldr r1, [r2]
+ ldr r0, _0223B364 ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2]
+_0223B2DE:
+ ldr r0, [sp]
+ ldrb r0, [r0, #0x12]
+ add r1, r0, #1
+ ldr r0, [sp]
+ strb r1, [r0, #0x12]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0xc
+ blo _0223B340
+ ldr r1, [sp]
+ mov r0, #0
+ mov r2, #0x11
+ strb r0, [r1, #0x12]
+ ldrsb r1, [r1, r2]
+ add r3, r1, #1
+ ldr r1, [sp]
+ strb r3, [r1, #0x11]
+ strb r0, [r1, #0x14]
+ add r0, r1, #0
+ ldrsb r0, [r0, r2]
+ cmp r0, #5
+ blo _0223B340
+ add r0, r1, #0
+ ldrb r0, [r0, #0x10]
+ add r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_0223B316:
+ ldr r3, _0223B360 ; =0x04000050
+ mov r2, #0
+ strh r2, [r3]
+ sub r3, #0x50
+ ldr r1, [r3]
+ ldr r0, _0223B364 ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r3]
+ ldr r0, [sp]
+ ldr r1, [sp]
+ ldr r0, [r0, #0xc]
+ add r1, r1, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ ldr r0, [sp]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_0223B340:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223B344: .word 0x00000171
+_0223B348: .word 0x021C48B8
+_0223B34C: .word 0x021C48F8
+_0223B350: .word 0x000006ED
+_0223B354: .word 0x02245F84
+_0223B358: .word 0x02245F8C
+_0223B35C: .word 0x00000F63
+_0223B360: .word 0x04000050
+_0223B364: .word 0xFFFF1FFF
+
+ thumb_func_start MOD12_0223B368
+MOD12_0223B368: ; 0x0223B368
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223B37C
+MOD12_0223B37C: ; 0x0223B37C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x16
+ mov r1, #0x14
+ add r5, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x14
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, [sp]
+ str r6, [r4, #0xc]
+ ldrh r0, [r0, #0x10]
+ bl FUN_020054C8
+ ldr r0, _0223B3C0 ; =MOD12_0223B3C8
+ ldr r2, _0223B3C4 ; =0x00007530
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223B3C0: .word MOD12_0223B3C8
+_0223B3C4: .word 0x00007530
+
+ thumb_func_start MOD12_0223B3C8
+MOD12_0223B3C8: ; 0x0223B3C8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r1, [r4]
+ ldr r0, _0223B3F4 ; =0x000004F9
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _0223B3F0
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0223B3F0:
+ pop {r3, r4, r5, pc}
+ nop
+_0223B3F4: .word 0x000004F9
+
+ thumb_func_start MOD12_0223B3F8
+MOD12_0223B3F8: ; 0x0223B3F8
+ push {r4, lr}
+ mov r0, #0x17
+ mov r1, #0xf4
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0xf4
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r1, #0
+ add r0, r4, #0
+ mvn r1, r1
+ add r0, #0x96
+ strb r1, [r0]
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223B41C
+MOD12_0223B41C: ; 0x0223B41C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ ldr r6, _0223B470 ; =0x022460DC
+ add r5, r0, #0
+ add r7, r4, #0
+_0223B426:
+ add r1, r4, #4
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ add r2, r6, #0
+ add r3, r7, #0
+ bl FUN_02016C18
+ add r1, r4, #4
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ mov r2, #0
+ bl FUN_02018768
+ add r1, r4, #4
+ lsl r1, r1, #0x18
+ mov r2, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r1, r4, #4
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add r4, r4, #1
+ add r6, #0x1c
+ cmp r4, #4
+ blo _0223B426
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223B470: .word 0x022460DC
+
+ thumb_func_start MOD12_0223B474
+MOD12_0223B474: ; 0x0223B474
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_0223B47C:
+ add r0, r4, #4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r1, r6, #0
+ bl FUN_0201797C
+ add r1, r4, #4
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl FUN_020178A0
+ add r4, r4, #1
+ cmp r4, #4
+ blo _0223B47C
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_0223B49C
+MOD12_0223B49C: ; 0x0223B49C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ bl MOD12_0223B3F8
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ mov r0, #6
+ mov r1, #0x17
+ bl FUN_02011744
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ bl MOD12_0223B4F8
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_0223B4C0
+MOD12_0223B4C0: ; 0x0223B4C0
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD12_0223B710
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD12_0223BE50
+ ldr r0, [r4, #0x18]
+ bl FUN_020117BC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223B4E0
+MOD12_0223B4E0: ; 0x0223B4E0
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD12_0223B940
+ add r0, r4, #0
+ bl MOD12_0223BA0C
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD12_0223BE10
+ pop {r4, pc}
+
+ thumb_func_start MOD12_0223B4F8
+MOD12_0223B4F8: ; 0x0223B4F8
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ mov r1, #6
+ add r4, r0, #0
+ mov r0, #0x17
+ lsl r1, r1, #0xc
+ bl FUN_02016998
+ add r1, r4, #0
+ add r1, #0xd0
+ str r0, [r1]
+ mov r1, #6
+ mov r0, #0x17
+ lsl r1, r1, #0xc
+ bl FUN_02016998
+ add r1, r4, #0
+ add r1, #0xd4
+ str r0, [r1]
+ mov r1, #0x1b
+ mov r0, #0x17
+ lsl r1, r1, #8
+ bl FUN_02016998
+ add r1, r4, #0
+ add r1, #0xd8
+ str r0, [r1]
+ mov r1, #2
+ mov r0, #0x17
+ lsl r1, r1, #0xa
+ bl FUN_02016998
+ add r1, r4, #0
+ add r1, #0xdc
+ str r0, [r1]
+ mov r1, #2
+ mov r0, #0x17
+ lsl r1, r1, #0xa
+ bl FUN_02016998
+ add r1, r4, #0
+ add r1, #0xe0
+ str r0, [r1]
+ mov r1, #2
+ mov r0, #0x17
+ lsl r1, r1, #0xa
+ bl FUN_02016998
+ add r1, r4, #0
+ add r1, #0xe4
+ str r0, [r1]
+ mov r1, #2
+ mov r0, #0x17
+ lsl r1, r1, #0xa
+ bl FUN_02016998
+ add r1, r4, #0
+ add r1, #0xe8
+ str r0, [r1]
+ mov r1, #2
+ mov r0, #0x17
+ lsl r1, r1, #8
+ bl FUN_02016998
+ add r1, r4, #0
+ add r1, #0xec
+ str r0, [r1]
+ mov r1, #2
+ mov r0, #0x17
+ lsl r1, r1, #8
+ bl FUN_02016998
+ add r1, r4, #0
+ add r1, #0xf0
+ str r0, [r1]
+ mov r0, #0x17
+ str r0, [sp]
+ mov r0, #0x2d
+ mov r1, #9
+ mov r2, #1
+ add r3, sp, #0xc
+ bl FUN_02006BB0
+ add r5, r0, #0
+ ldr r0, [sp, #0xc]
+ add r1, r4, #0
+ add r1, #0xd0
+ mov r2, #6
+ ldr r0, [r0, #0x14]
+ ldr r1, [r1]
+ lsl r2, r2, #0xc
+ bl MIi_CpuCopy32
+ add r0, r5, #0
+ bl FUN_02016A18
+ mov r0, #0x17
+ str r0, [sp]
+ mov r0, #0x2d
+ mov r1, #0x11
+ mov r2, #1
+ add r3, sp, #0xc
+ bl FUN_02006BB0
+ add r5, r0, #0
+ ldr r0, [sp, #0xc]
+ add r1, r4, #0
+ add r1, #0xd4
+ mov r2, #6
+ ldr r0, [r0, #0x14]
+ ldr r1, [r1]
+ lsl r2, r2, #0xc
+ bl MIi_CpuCopy32
+ add r0, r5, #0
+ bl FUN_02016A18
+ mov r0, #0x17
+ str r0, [sp]
+ mov r0, #0x2d
+ mov r1, #0xf
+ mov r2, #1
+ add r3, sp, #0xc
+ bl FUN_02006BB0
+ add r5, r0, #0
+ ldr r0, [sp, #0xc]
+ add r1, r4, #0
+ add r1, #0xd8
+ mov r2, #0x1b
+ ldr r0, [r0, #0x14]
+ ldr r1, [r1]
+ lsl r2, r2, #8
+ bl MIi_CpuCopy32
+ add r0, r5, #0
+ bl FUN_02016A18
+ mov r0, #0x17
+ str r0, [sp]
+ mov r0, #0x2d
+ mov r1, #7
+ mov r2, #1
+ add r3, sp, #8
+ bl FUN_02006BDC
+ add r1, r4, #0
+ add r5, r0, #0
+ ldr r0, [sp, #8]
+ add r1, #0xdc
+ mov r2, #2
+ ldr r1, [r1]
+ add r0, #0xc
+ lsl r2, r2, #0xa
+ bl MIi_CpuCopy32
+ add r0, r5, #0
+ bl FUN_02016A18
+ mov r0, #0x17
+ str r0, [sp]
+ mov r0, #0x2d
+ mov r1, #8
+ mov r2, #1
+ add r3, sp, #8
+ bl FUN_02006BDC
+ add r1, r4, #0
+ add r5, r0, #0
+ ldr r0, [sp, #8]
+ add r1, #0xe0
+ mov r2, #2
+ ldr r1, [r1]
+ add r0, #0xc
+ lsl r2, r2, #0xa
+ bl MIi_CpuCopy32
+ add r0, r5, #0
+ bl FUN_02016A18
+ mov r0, #0x17
+ str r0, [sp]
+ mov r0, #0x2d
+ mov r1, #0x10
+ mov r2, #1
+ add r3, sp, #8
+ bl FUN_02006BDC
+ add r1, r4, #0
+ add r5, r0, #0
+ ldr r0, [sp, #8]
+ add r1, #0xe4
+ mov r2, #2
+ ldr r1, [r1]
+ add r0, #0xc
+ lsl r2, r2, #0xa
+ bl MIi_CpuCopy32
+ add r0, r5, #0
+ bl FUN_02016A18
+ mov r0, #0x17
+ str r0, [sp]
+ mov r0, #0x2d
+ mov r1, #0x1b
+ mov r2, #1
+ add r3, sp, #8
+ bl FUN_02006BDC
+ add r1, r4, #0
+ add r5, r0, #0
+ ldr r0, [sp, #8]
+ add r1, #0xe8
+ mov r2, #2
+ ldr r1, [r1]
+ add r0, #0xc
+ lsl r2, r2, #0xa
+ bl MIi_CpuCopy32
+ add r0, r5, #0
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0xec
+ ldr r0, [r0]
+ mov r3, #2
+ str r0, [sp, #4]
+ mov r0, #0x2d
+ mov r1, #0x1e
+ mov r2, #0x17
+ lsl r3, r3, #8
+ bl FUN_0200317C
+ ldr r0, [r4, #4]
+ mov r2, #0x17
+ ldr r1, [r0]
+ ldr r0, _0223B70C ; =0x0000011F
+ mov r3, #0x20
+ ldrb r0, [r1, r0]
+ mov r1, #0x25
+ lsl r0, r0, #0x14
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0xec
+ ldr r0, [r0]
+ add r0, #0x40
+ str r0, [sp, #4]
+ mov r0, #0x2d
+ bl FUN_0200317C
+ mov r0, #0
+ mov r1, #0x20
+ add r4, #0xf0
+ str r0, [sp]
+ ldr r0, [r4]
+ mov r2, #0x17
+ str r0, [sp, #4]
+ mov r0, #0x2d
+ lsl r3, r1, #4
+ bl FUN_0200317C
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223B70C: .word 0x0000011F
+
+ thumb_func_start MOD12_0223B710
+MOD12_0223B710: ; 0x0223B710
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+_0223B718:
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #3
+ blt _0223B718
+ mov r6, #0
+ add r4, r5, #0
+_0223B72E:
+ add r0, r4, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _0223B72E
+ mov r4, #0
+_0223B742:
+ add r0, r5, #0
+ add r0, #0xec
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _0223B742
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223B758
+MOD12_0223B758: ; 0x0223B758
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ str r3, [r7, #8]
+ ldr r0, [r7, #4]
+ str r2, [sp, #8]
+ ldr r0, [r0, #0x60]
+ str r1, [sp, #4]
+ str r0, [sp, #0xc]
+ mov r0, #0x96
+ ldrsb r2, [r7, r0]
+ sub r0, #0x97
+ cmp r2, r0
+ bne _0223B77C
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r6, #0
+ b _0223B784
+_0223B77C:
+ mov r0, #0x24
+ ldr r1, _0223B868 ; =0x02246094
+ mul r0, r2
+ add r6, r1, r0
+_0223B784:
+ ldr r0, [sp, #4]
+ mov r1, #0x24
+ ldr r2, _0223B868 ; =0x02246094
+ mul r1, r0
+ add r0, r2, r1
+ str r0, [sp, #0x10]
+ mov r4, #0
+ add r5, r0, #0
+_0223B794:
+ ldrh r1, [r5, #0xc]
+ add r0, r4, #4
+ lsl r0, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r0, r0, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_020178BC
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, #4
+ blt _0223B794
+ ldr r0, [sp, #0x10]
+ mov r2, #8
+ ldrh r1, [r0]
+ add r0, r7, #0
+ add r0, #0x94
+ strh r1, [r0]
+ ldr r0, _0223B86C ; =MOD12_0223C19C
+ add r1, r7, #0
+ bl FUN_0200CA98
+ ldr r0, [sp, #0x10]
+ ldrh r1, [r0, #2]
+ ldr r0, _0223B870 ; =0x0000FFFF
+ cmp r1, r0
+ beq _0223B7F2
+ ldr r0, [sp, #8]
+ cmp r0, #1
+ beq _0223B7D6
+ ldrh r0, [r6, #2]
+ cmp r1, r0
+ beq _0223B7F2
+_0223B7D6:
+ mov r0, #2
+ lsl r0, r0, #8
+ str r0, [sp]
+ ldr r0, [r7, #4]
+ lsl r1, r1, #2
+ add r1, r7, r1
+ add r0, #0x90
+ add r1, #0xec
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #1
+ mov r3, #0
+ bl FUN_02003054
+_0223B7F2:
+ ldr r4, [sp, #0x10]
+ mov r5, #0
+_0223B7F6:
+ ldrh r2, [r4, #4]
+ ldr r0, _0223B870 ; =0x0000FFFF
+ cmp r2, r0
+ beq _0223B82E
+ ldr r0, [sp, #8]
+ cmp r0, #1
+ beq _0223B80A
+ ldrh r0, [r6, #4]
+ cmp r2, r0
+ beq _0223B82E
+_0223B80A:
+ lsl r2, r2, #2
+ add r2, r7, r2
+ add r1, r5, #4
+ add r2, #0xdc
+ lsl r1, r1, #0x18
+ mov r3, #2
+ ldr r0, [sp, #0xc]
+ ldr r2, [r2]
+ lsr r1, r1, #0x18
+ lsl r3, r3, #0xa
+ bl FUN_02017DFC
+ add r1, r5, #4
+ lsl r1, r1, #0x18
+ ldr r0, [sp, #0xc]
+ lsr r1, r1, #0x18
+ bl FUN_0201AC68
+_0223B82E:
+ add r5, r5, #1
+ add r4, r4, #2
+ add r6, r6, #2
+ cmp r5, #4
+ blt _0223B7F6
+ add r1, r7, #0
+ ldr r0, [sp, #4]
+ add r1, #0x96
+ strb r0, [r1]
+ add r0, r7, #0
+ mov r1, #0
+ bl MOD12_0223BE50
+ ldr r0, [sp, #0x10]
+ ldr r3, [r0, #0x1c]
+ cmp r3, #0
+ beq _0223B858
+ ldr r1, [sp, #4]
+ ldr r2, [sp, #8]
+ add r0, r7, #0
+ blx r3
+_0223B858:
+ ldr r0, _0223B874 ; =MOD12_0223C14C
+ add r1, r7, #0
+ mov r2, #0xa
+ bl FUN_0200CA98
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0223B868: .word 0x02246094
+_0223B86C: .word MOD12_0223C19C
+_0223B870: .word 0x0000FFFF
+_0223B874: .word MOD12_0223C14C
+
+ thumb_func_start MOD12_0223B878
+MOD12_0223B878: ; 0x0223B878
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x96
+ ldrsb r1, [r5, r0]
+ sub r0, #0x97
+ cmp r1, r0
+ bne _0223B88A
+ bl ErrorHandling
+_0223B88A:
+ mov r0, #0x96
+ ldrsb r1, [r5, r0]
+ ldr r3, _0223B910 ; =0x02246094
+ mov r0, #0x24
+ add r2, r1, #0
+ mul r2, r0
+ add r4, r3, r2
+ ldr r1, [r4, #0x14]
+ cmp r1, #0
+ bne _0223B8A2
+ sub r0, #0x25
+ pop {r4, r5, r6, pc}
+_0223B8A2:
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ bne _0223B8AC
+ bl ErrorHandling
+_0223B8AC:
+ ldr r0, [r4, #0x14]
+ bl FUN_02020988
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _0223B8F0
+ ldr r2, [r4, #0x18]
+ ldr r1, _0223B914 ; =0x02246070
+ cmp r2, r1
+ bne _0223B8F0
+ ldr r1, _0223B918 ; =0x021C48B8
+ mov r2, #0x11
+ ldr r1, [r1, #0x48]
+ add r3, r1, #0
+ tst r3, r2
+ beq _0223B8D2
+ mov r0, #3
+ b _0223B8F0
+_0223B8D2:
+ mov r3, #0x82
+ add r6, r1, #0
+ tst r6, r3
+ beq _0223B8DE
+ mov r0, #1
+ b _0223B8F0
+_0223B8DE:
+ lsl r2, r2, #6
+ tst r2, r1
+ beq _0223B8E8
+ mov r0, #0
+ b _0223B8F0
+_0223B8E8:
+ lsl r2, r3, #4
+ tst r1, r2
+ beq _0223B8F0
+ mov r0, #2
+_0223B8F0:
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0223B8FE
+ ldr r1, [r4, #0x18]
+ lsl r0, r0, #2
+ ldr r1, [r1, r0]
+_0223B8FE:
+ ldr r2, [r4, #0x20]
+ cmp r2, #0
+ beq _0223B90A
+ add r0, r5, #0
+ blx r2
+ add r1, r0, #0
+_0223B90A:
+ add r0, r1, #0
+ pop {r4, r5, r6, pc}
+ nop
+_0223B910: .word 0x02246094
+_0223B914: .word 0x02246070
+_0223B918: .word 0x021C48B8
+
+ thumb_func_start MOD12_0223B91C
+MOD12_0223B91C: ; 0x0223B91C
+ ldr r0, [r0, #0xc]
+ cmp r0, #0
+ bne _0223B926
+ mov r0, #1
+ bx lr
+_0223B926:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0223B92C
+MOD12_0223B92C: ; 0x0223B92C
+ mov r1, #0x96
+ ldrsb r0, [r0, r1]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0223B934
+MOD12_0223B934: ; 0x0223B934
+ ldr r3, _0223B93C ; =MOD12_0223BE10
+ mov r1, #1
+ bx r3
+ nop
+_0223B93C: .word MOD12_0223BE10
+
+ thumb_func_start MOD12_0223B940
+MOD12_0223B940: ; 0x0223B940
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ mov r0, #1
+ mov r1, #0x1a
+ mov r2, #0xbf
+ mov r3, #0x17
+ bl FUN_0200A86C
+ add r4, r0, #0
+ ldr r0, [r5, #4]
+ mov r2, #0x12
+ lsl r2, r2, #4
+ ldr r3, [r0]
+ add r1, r2, #1
+ ldrb r0, [r3, r2]
+ ldrb r1, [r3, r1]
+ ldr r3, [r5]
+ add r2, #0x51
+ ldrb r2, [r3, r2]
+ bl FUN_02083228
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ ldr r1, _0223B9F4 ; =0x0000011F
+ ldr r2, [r0]
+ ldrb r0, [r2, r1]
+ add r1, r1, #2
+ ldrb r1, [r2, r1]
+ bl FUN_020832A4
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl FUN_0200A914
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r7, #0
+ bl FUN_0200A914
+ add r7, r0, #0
+ ldr r0, _0223B9F8 ; =0x00010200
+ add r1, r5, #0
+ str r0, [sp]
+ mov r3, #0
+ ldr r0, _0223B9FC ; =0x000080EB
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x80
+ str r0, [sp, #0xc]
+ mov r0, #0x7f
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r1, #0x1c
+ add r2, r6, #0
+ bl MOD12_0223BCD8
+ ldr r0, _0223B9F8 ; =0x00010200
+ mov r3, #0
+ str r0, [sp]
+ ldr r0, _0223B9FC ; =0x000080EB
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x80
+ str r0, [sp, #0xc]
+ mov r0, #0x9f
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r5, #0x30
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD12_0223BCD8
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_0200A8B8
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223B9F4: .word 0x0000011F
+_0223B9F8: .word 0x00010200
+_0223B9FC: .word 0x000080EB
+
+ thumb_func_start MOD12_0223BA00
+MOD12_0223BA00: ; 0x0223BA00
+ ldr r3, _0223BA08 ; =MOD12_0223BE10
+ mov r1, #1
+ bx r3
+ nop
+_0223BA08: .word MOD12_0223BE10
+
+ thumb_func_start MOD12_0223BA0C
+MOD12_0223BA0C: ; 0x0223BA0C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ ldr r2, [r0, #4]
+ str r0, [sp, #0x18]
+ add r0, r2, #0
+ add r0, #0x84
+ ldr r5, [r0]
+ ldr r1, [r2]
+ ldr r0, _0223BB14 ; =0x00000123
+ ldrb r0, [r1, r0]
+ add r1, r2, r0
+ mov r0, #0xaa
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ cmp r0, #1
+ bne _0223BA36
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0200A914
+ b _0223BA3E
+_0223BA36:
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0200A914
+_0223BA3E:
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #2
+ bl FUN_0200A914
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #3
+ bl FUN_0200A914
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #4
+ bl FUN_0200A914
+ add r5, r0, #0
+ ldr r0, _0223BB18 ; =0x0001010B
+ add r2, r4, #0
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _0223BB1C ; =0x000080EB
+ mov r3, #2
+ str r0, [sp, #8]
+ mov r0, #0x80
+ str r0, [sp, #0xc]
+ mov r0, #0x18
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r1, r0, #0
+ add r1, #0x44
+ bl MOD12_0223BCD8
+ ldr r0, _0223BB18 ; =0x0001010B
+ add r2, r6, #0
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _0223BB1C ; =0x000080EB
+ mov r3, #2
+ str r0, [sp, #8]
+ mov r0, #0x80
+ str r0, [sp, #0xc]
+ mov r0, #0x78
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r1, r0, #0
+ add r1, #0x58
+ bl MOD12_0223BCD8
+ ldr r0, _0223BB18 ; =0x0001010B
+ add r2, r7, #0
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _0223BB1C ; =0x000080EB
+ mov r3, #2
+ str r0, [sp, #8]
+ mov r0, #0x30
+ str r0, [sp, #0xc]
+ mov r0, #0x40
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r1, r0, #0
+ add r1, #0x6c
+ bl MOD12_0223BCD8
+ ldr r0, _0223BB18 ; =0x0001010B
+ add r2, r5, #0
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _0223BB1C ; =0x000080EB
+ mov r3, #2
+ str r0, [sp, #8]
+ mov r0, #0xd0
+ str r0, [sp, #0xc]
+ mov r0, #0x40
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r1, r0, #0
+ add r1, #0x80
+ str r1, [sp, #0x18]
+ bl MOD12_0223BCD8
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+ add r0, r5, #0
+ bl FUN_02021A20
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223BB14: .word 0x00000123
+_0223BB18: .word 0x0001010B
+_0223BB1C: .word 0x000080EB
+
+ thumb_func_start MOD12_0223BB20
+MOD12_0223BB20: ; 0x0223BB20
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r4, r0, #0
+ add r0, r6, #1
+ cmp r0, #4
+ bhi _0223BB42
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223BB38: ; jump table
+ .short _0223BB42 - _0223BB38 - 2 ; case 0
+ .short _0223BB46 - _0223BB38 - 2 ; case 1
+ .short _0223BB4A - _0223BB38 - 2 ; case 2
+ .short _0223BB4E - _0223BB38 - 2 ; case 3
+ .short _0223BB52 - _0223BB38 - 2 ; case 4
+_0223BB42:
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+_0223BB46:
+ mov r5, #2
+ b _0223BB54
+_0223BB4A:
+ mov r5, #3
+ b _0223BB54
+_0223BB4E:
+ mov r5, #4
+ b _0223BB54
+_0223BB52:
+ mov r5, #5
+_0223BB54:
+ ldr r0, _0223BBB0 ; =MOD12_0223BEB4
+ add r1, r4, #0
+ bl MOD12_0223BE64
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0xb8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x12
+ add r0, #0xca
+ strh r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x2d
+ add r0, #0xc8
+ strh r1, [r0]
+ mov r0, #0xc
+ ldr r1, _0223BBB4 ; =0x0224614C
+ mul r0, r6
+ add r2, r1, r0
+ add r1, r4, #0
+ add r1, #0xa0
+ str r2, [r1]
+ ldr r1, _0223BBB8 ; =0x0224617C
+ add r2, r1, r0
+ add r1, r4, #0
+ add r1, #0xa4
+ str r2, [r1]
+ ldr r1, _0223BBBC ; =0x022461AC
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xa8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc4
+ str r6, [r0]
+ add r4, #0xcc
+ strb r5, [r4]
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223BBB0: .word MOD12_0223BEB4
+_0223BBB4: .word 0x0224614C
+_0223BBB8: .word 0x0224617C
+_0223BBBC: .word 0x022461AC
+
+ thumb_func_start MOD12_0223BBC0
+MOD12_0223BBC0: ; 0x0223BBC0
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x17
+ mov r1, #0x20
+ add r5, r3, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x20
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ mvn r0, r0
+ cmp r5, r0
+ beq _0223BBEC
+ lsl r0, r5, #2
+ add r0, r6, r0
+ add r0, #0xd0
+ ldr r0, [r0]
+ str r0, [r4, #0xc]
+_0223BBEC:
+ ldr r0, [sp, #0x1c]
+ lsl r0, r0, #5
+ strh r0, [r4, #0x1c]
+ ldr r0, [sp, #0x18]
+ ldrh r1, [r0]
+ strh r1, [r4, #0x10]
+ ldrh r1, [r0, #2]
+ strh r1, [r4, #0x12]
+ ldrh r1, [r0, #4]
+ strh r1, [r4, #0x14]
+ ldrh r1, [r0, #6]
+ strh r1, [r4, #0x16]
+ ldrh r1, [r0, #8]
+ strh r1, [r4, #0x18]
+ ldrh r0, [r0, #0xa]
+ strh r0, [r4, #0x1a]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020187B0
+ str r0, [r4, #4]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223BC1C
+MOD12_0223BC1C: ; 0x0223BC1C
+ push {r4, lr}
+ sub sp, #8
+ ldr r4, [sp, #0x10]
+ str r4, [sp]
+ ldr r4, [sp, #0x14]
+ str r4, [sp, #4]
+ bl MOD12_0223BBC0
+ add r4, r0, #0
+ ldr r0, _0223BC40 ; =MOD12_0223C1DC
+ add r1, r4, #0
+ mov r2, #0x14
+ bl FUN_0200CA98
+ str r0, [r4]
+ add r0, r4, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_0223BC40: .word MOD12_0223C1DC
+
+ thumb_func_start MOD12_0223BC44
+MOD12_0223BC44: ; 0x0223BC44
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _0223BC62
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _0223BC58
+ bl FUN_02016A18
+_0223BC58:
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #1
+ pop {r4, pc}
+_0223BC62:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223BC68
+MOD12_0223BC68: ; 0x0223BC68
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldrh r1, [r5, #0x16]
+ ldrh r0, [r5, #0x1c]
+ mov r6, #0
+ mul r0, r1
+ str r0, [sp]
+ ldrh r0, [r5, #0x12]
+ lsl r7, r0, #0xa
+ ldrh r0, [r5, #0x1a]
+ cmp r0, #0
+ ble _0223BCD4
+ add r4, r6, #0
+_0223BC82:
+ ldr r2, [r5, #0xc]
+ cmp r2, #0
+ beq _0223BCB0
+ ldrh r0, [r5, #0x14]
+ ldrh r3, [r5, #0x1c]
+ lsl r1, r0, #5
+ add r0, r3, #0
+ ldr r3, [sp]
+ mul r0, r6
+ add r0, r3, r0
+ add r0, r1, r0
+ ldrh r1, [r5, #0x10]
+ add r0, r2, r0
+ ldr r3, [r5, #4]
+ lsl r2, r1, #5
+ add r1, r7, r4
+ add r1, r2, r1
+ ldrh r2, [r5, #0x18]
+ add r1, r3, r1
+ lsl r2, r2, #5
+ bl MIi_CpuCopy16
+ b _0223BCC6
+_0223BCB0:
+ ldrh r1, [r5, #0x10]
+ ldr r3, [r5, #4]
+ mov r0, #0
+ lsl r2, r1, #5
+ add r1, r7, r4
+ add r1, r2, r1
+ ldrh r2, [r5, #0x18]
+ add r1, r3, r1
+ lsl r2, r2, #5
+ bl MIi_CpuClear16
+_0223BCC6:
+ mov r0, #1
+ lsl r0, r0, #0xa
+ add r4, r4, r0
+ ldrh r0, [r5, #0x1a]
+ add r6, r6, #1
+ cmp r6, r0
+ blt _0223BC82
+_0223BCD4:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223BCD8
+MOD12_0223BCD8: ; 0x0223BCD8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x78
+ add r5, r1, #0
+ str r0, [sp, #0x18]
+ ldr r0, [r5]
+ str r2, [sp, #0x1c]
+ str r3, [sp, #0x20]
+ ldr r4, [sp, #0x9c]
+ cmp r0, #0
+ beq _0223BCF0
+ bl ErrorHandling
+_0223BCF0:
+ ldr r0, [sp, #0x18]
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, [r1, #0x60]
+ str r0, [sp, #0x28]
+ ldr r0, [r1, #0x5c]
+ ldr r1, [sp, #0x1c]
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x20]
+ bl FUN_02002E14
+ add r7, r0, #0
+ asr r1, r7, #2
+ lsr r1, r1, #0x1d
+ add r1, r7, r1
+ asr r6, r1, #3
+ mov r1, #8
+ bl FX_ModS32
+ cmp r0, #0
+ beq _0223BD1C
+ add r6, r6, #1
+_0223BD1C:
+ add r0, sp, #0x38
+ bl FUN_0201901C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ lsl r2, r6, #0x18
+ ldr r0, [sp, #0x28]
+ add r1, sp, #0x38
+ lsr r2, r2, #0x18
+ mov r3, #2
+ bl FUN_020190EC
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x90]
+ ldr r1, [sp, #0x20]
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ str r3, [sp, #0x10]
+ ldr r2, [sp, #0x1c]
+ add r0, sp, #0x38
+ str r3, [sp, #0x14]
+ bl FUN_0201BE3C
+ add r0, sp, #0x38
+ mov r1, #2
+ mov r2, #0x17
+ bl FUN_02011898
+ mov r1, #1
+ mov r2, #2
+ add r3, sp, #0x2c
+ bl FUN_0201D568
+ ldr r0, [sp, #0xa4]
+ cmp r0, #1
+ bne _0223BD74
+ lsr r0, r7, #0x1f
+ add r0, r7, r0
+ asr r0, r0, #1
+ sub r4, r4, r0
+_0223BD74:
+ ldr r0, [sp, #0x18]
+ ldr r0, [r0, #0x18]
+ str r0, [sp, #0x48]
+ add r0, sp, #0x38
+ str r0, [sp, #0x4c]
+ ldr r0, [sp, #0x24]
+ bl FUN_0200CA40
+ str r0, [sp, #0x50]
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0x98]
+ bl FUN_0200C334
+ mov r1, #0
+ str r0, [sp, #0x54]
+ ldr r0, [sp, #0x30]
+ str r1, [sp, #0x58]
+ str r0, [sp, #0x5c]
+ ldr r0, [sp, #0xa0]
+ str r4, [sp, #0x60]
+ add r0, #0xf8
+ str r0, [sp, #0x64]
+ mov r0, #0x64
+ str r0, [sp, #0x6c]
+ mov r0, #2
+ str r0, [sp, #0x70]
+ mov r0, #0x17
+ str r0, [sp, #0x74]
+ add r0, sp, #0x48
+ str r1, [sp, #0x68]
+ bl FUN_020117E8
+ ldr r1, [sp, #0x94]
+ add r6, r0, #0
+ bl FUN_02011AC0
+ ldr r2, [sp, #0xa0]
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, #0xf8
+ bl FUN_020118C4
+ add r0, sp, #0x38
+ bl FUN_02019178
+ str r6, [r5]
+ add r3, sp, #0x2c
+ ldmia r3!, {r0, r1}
+ add r2, r5, #4
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ strh r7, [r5, #0x10]
+ add sp, #0x78
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223BDE4
+MOD12_0223BDE4: ; 0x0223BDE4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+ add r4, #0x20
+ add r7, r6, #0
+_0223BDF0:
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _0223BE02
+ bl FUN_02011870
+ add r0, r4, #0
+ bl FUN_0201D5E8
+ str r7, [r5, #0x1c]
+_0223BE02:
+ add r6, r6, #1
+ add r5, #0x14
+ add r4, #0x14
+ cmp r6, #6
+ blt _0223BDF0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223BE10
+MOD12_0223BE10: ; 0x0223BE10
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ cmp r7, #1
+ bne _0223BE2C
+ mov r1, #0x96
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ bne _0223BE26
+ mov r4, #0
+ mov r6, #1
+ b _0223BE30
+_0223BE26:
+ mov r4, #2
+ mov r6, #5
+ b _0223BE30
+_0223BE2C:
+ mov r4, #0
+ mov r6, #5
+_0223BE30:
+ cmp r4, r6
+ bgt _0223BE4E
+ mov r1, #0x14
+ mul r1, r4
+ add r5, r0, r1
+_0223BE3A:
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _0223BE46
+ add r1, r7, #0
+ bl FUN_020119D0
+_0223BE46:
+ add r4, r4, #1
+ add r5, #0x14
+ cmp r4, r6
+ ble _0223BE3A
+_0223BE4E:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_0223BE50
+MOD12_0223BE50: ; 0x0223BE50
+ push {r3, lr}
+ cmp r1, #1
+ bne _0223BE5C
+ bl MOD12_0223BDE4
+ pop {r3, pc}
+_0223BE5C:
+ mov r1, #0
+ bl MOD12_0223BE10
+ pop {r3, pc}
+
+ thumb_func_start MOD12_0223BE64
+MOD12_0223BE64: ; 0x0223BE64
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _0223BE74
+ bl ErrorHandling
+_0223BE74:
+ add r0, r4, #0
+ add r0, #0x98
+ mov r1, #0
+ mov r2, #0x38
+ bl MI_CpuFill8
+ ldr r2, _0223BE90 ; =0x00000514
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+ nop
+_0223BE90: .word 0x00000514
+
+ thumb_func_start MOD12_0223BE94
+MOD12_0223BE94: ; 0x0223BE94
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _0223BEB0
+ bl FUN_0200CAB4
+ mov r1, #0
+ str r1, [r4, #0xc]
+ add r4, #0x98
+ add r0, r4, #0
+ mov r2, #0x38
+ bl MI_CpuFill8
+_0223BEB0:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223BEB4
+MOD12_0223BEB4: ; 0x0223BEB4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ mov r0, #0x98
+ ldrsh r0, [r4, r0]
+ cmp r0, #8
+ bls _0223BEC4
+ b _0223C140
+_0223BEC4:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223BED0: ; jump table
+ .short _0223BEE2 - _0223BED0 - 2 ; case 0
+ .short _0223BF6A - _0223BED0 - 2 ; case 1
+ .short _0223BF84 - _0223BED0 - 2 ; case 2
+ .short _0223BFAA - _0223BED0 - 2 ; case 3
+ .short _0223C034 - _0223BED0 - 2 ; case 4
+ .short _0223C050 - _0223BED0 - 2 ; case 5
+ .short _0223C076 - _0223BED0 - 2 ; case 6
+ .short _0223C100 - _0223BED0 - 2 ; case 7
+ .short _0223C11A - _0223BED0 - 2 ; case 8
+_0223BEE2:
+ add r0, r4, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ add r2, r4, #0
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0xca
+ ldrh r0, [r0]
+ add r3, r4, #0
+ add r2, #0xc8
+ str r0, [sp, #4]
+ add r3, #0xb8
+ ldrh r2, [r2]
+ ldr r3, [r3]
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD12_0223BC1C
+ add r1, r4, #0
+ add r1, #0x9c
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xcc
+ ldrb r1, [r0]
+ mov r0, #0x14
+ add r2, sp, #8
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #0x1c]
+ add r1, sp, #0xc
+ bl FUN_020119A4
+ add r0, r4, #0
+ add r0, #0xcc
+ ldrb r1, [r0]
+ mov r0, #0x14
+ ldr r2, [sp, #8]
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #0x1c]
+ ldr r1, [sp, #0xc]
+ add r2, #0x10
+ bl FUN_020118C4
+ mov r6, #0
+ add r5, r4, #0
+ add r7, r6, #0
+_0223BF40:
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223BF54
+ ldr r0, [r0]
+ add r1, r7, #0
+ mov r2, #0x10
+ bl FUN_0200C7FC
+_0223BF54:
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #3
+ blt _0223BF40
+ mov r0, #0x98
+ ldrsh r0, [r4, r0]
+ add r4, #0x98
+ add sp, #0x10
+ add r0, r0, #1
+ strh r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223BF6A:
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl MOD12_0223BC44
+ cmp r0, #0
+ beq _0223C042
+ mov r0, #0x98
+ ldrsh r0, [r4, r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x98
+ strh r1, [r0]
+_0223BF84:
+ mov r1, #0x9a
+ ldrsh r0, [r4, r1]
+ add r2, r0, #1
+ add r0, r4, #0
+ add r0, #0x9a
+ strh r2, [r0]
+ ldrsh r0, [r4, r1]
+ cmp r0, #2
+ ble _0223C042
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x9a
+ strh r1, [r0]
+ mov r0, #0x98
+ ldrsh r0, [r4, r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x98
+ strh r1, [r0]
+_0223BFAA:
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ add r2, r4, #0
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0xca
+ ldrh r0, [r0]
+ add r3, r4, #0
+ add r2, #0xc8
+ str r0, [sp, #4]
+ add r3, #0xbc
+ ldrh r2, [r2]
+ ldr r3, [r3]
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD12_0223BC1C
+ add r1, r4, #0
+ add r1, #0x9c
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xcc
+ ldrb r1, [r0]
+ mov r0, #0x14
+ add r2, sp, #8
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #0x1c]
+ add r1, sp, #0xc
+ bl FUN_020119A4
+ add r0, r4, #0
+ add r0, #0xcc
+ ldrb r1, [r0]
+ mov r0, #0x14
+ ldr r2, [sp, #8]
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #0x1c]
+ ldr r1, [sp, #0xc]
+ sub r2, r2, #4
+ bl FUN_020118C4
+ mov r6, #0
+ add r5, r4, #0
+ add r7, r6, #0
+_0223C008:
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223C01E
+ mov r2, #3
+ ldr r0, [r0]
+ add r1, r7, #0
+ mvn r2, r2
+ bl FUN_0200C7FC
+_0223C01E:
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #3
+ blt _0223C008
+ mov r0, #0x98
+ ldrsh r0, [r4, r0]
+ add r4, #0x98
+ add sp, #0x10
+ add r0, r0, #1
+ strh r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223C034:
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl MOD12_0223BC44
+ cmp r0, #0
+ bne _0223C044
+_0223C042:
+ b _0223C146
+_0223C044:
+ mov r0, #0x98
+ ldrsh r0, [r4, r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x98
+ strh r1, [r0]
+_0223C050:
+ mov r1, #0x9a
+ ldrsh r0, [r4, r1]
+ add r2, r0, #1
+ add r0, r4, #0
+ add r0, #0x9a
+ strh r2, [r0]
+ ldrsh r0, [r4, r1]
+ cmp r0, #2
+ ble _0223C146
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x9a
+ strh r1, [r0]
+ mov r0, #0x98
+ ldrsh r0, [r4, r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x98
+ strh r1, [r0]
+_0223C076:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ add r2, r4, #0
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0xca
+ ldrh r0, [r0]
+ add r3, r4, #0
+ add r2, #0xc8
+ str r0, [sp, #4]
+ add r3, #0xc0
+ ldrh r2, [r2]
+ ldr r3, [r3]
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD12_0223BC1C
+ add r1, r4, #0
+ add r1, #0x9c
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xcc
+ ldrb r1, [r0]
+ mov r0, #0x14
+ add r2, sp, #8
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #0x1c]
+ add r1, sp, #0xc
+ bl FUN_020119A4
+ add r0, r4, #0
+ add r0, #0xcc
+ ldrb r1, [r0]
+ mov r0, #0x14
+ ldr r2, [sp, #8]
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #0x1c]
+ ldr r1, [sp, #0xc]
+ sub r2, #0xc
+ bl FUN_020118C4
+ mov r6, #0
+ add r5, r4, #0
+ add r7, r6, #0
+_0223C0D4:
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223C0EA
+ mov r2, #0xb
+ ldr r0, [r0]
+ add r1, r7, #0
+ mvn r2, r2
+ bl FUN_0200C7FC
+_0223C0EA:
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #3
+ blt _0223C0D4
+ mov r0, #0x98
+ ldrsh r0, [r4, r0]
+ add r4, #0x98
+ add sp, #0x10
+ add r0, r0, #1
+ strh r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223C100:
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl MOD12_0223BC44
+ cmp r0, #0
+ beq _0223C146
+ mov r0, #0x98
+ ldrsh r0, [r4, r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x98
+ strh r1, [r0]
+_0223C11A:
+ mov r1, #0x9a
+ ldrsh r0, [r4, r1]
+ add r2, r0, #1
+ add r0, r4, #0
+ add r0, #0x9a
+ strh r2, [r0]
+ ldrsh r0, [r4, r1]
+ cmp r0, #2
+ ble _0223C146
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x9a
+ strh r1, [r0]
+ mov r0, #0x98
+ ldrsh r0, [r4, r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x98
+ strh r1, [r0]
+_0223C140:
+ add r0, r4, #0
+ bl MOD12_0223BE94
+_0223C146:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223C14C
+MOD12_0223C14C: ; 0x0223C14C
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ mov r0, #0x96
+ ldrsb r1, [r1, r0]
+ mov r0, #0x24
+ mov r4, #0
+ ldr r2, _0223C194 ; =0x02246094
+ mul r0, r1
+ ldr r6, _0223C198 ; =0x0000FFFF
+ add r5, r2, r0
+ add r7, r4, #0
+_0223C162:
+ ldrh r0, [r5, #4]
+ cmp r0, r6
+ bne _0223C176
+ add r0, r4, #4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r1, r7, #0
+ bl FUN_0201797C
+ b _0223C182
+_0223C176:
+ add r0, r4, #4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #1
+ bl FUN_0201797C
+_0223C182:
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, #4
+ blt _0223C162
+ ldr r0, [sp]
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223C194: .word 0x02246094
+_0223C198: .word 0x0000FFFF
+
+ thumb_func_start MOD12_0223C19C
+MOD12_0223C19C: ; 0x0223C19C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0x94
+ ldrh r2, [r0]
+ ldr r0, _0223C1D8 ; =0x0000FFFF
+ cmp r2, r0
+ beq _0223C1CE
+ mov r0, #0
+ lsl r2, r2, #2
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ add r2, r4, r2
+ add r2, #0xd0
+ mov r3, #6
+ ldr r0, [r0, #0x60]
+ ldr r2, [r2]
+ mov r1, #4
+ lsl r3, r3, #0xc
+ bl FUN_02017E14
+ ldr r0, _0223C1D8 ; =0x0000FFFF
+ add r4, #0x94
+ strh r0, [r4]
+_0223C1CE:
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ nop
+_0223C1D8: .word 0x0000FFFF
+
+ thumb_func_start MOD12_0223C1DC
+MOD12_0223C1DC: ; 0x0223C1DC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD12_0223BC68
+ mov r0, #0
+ str r0, [r4]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_0223C1F4
+MOD12_0223C1F4: ; 0x0223C1F4
+ push {r3, lr}
+ sub sp, #8
+ str r2, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r0, #4]
+ mov r1, #1
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r2, #0
+ mov r3, #0x40
+ bl FUN_020039E8
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD12_0223C210
+MOD12_0223C210: ; 0x0223C210
+ mov r1, #6
+ mul r1, r0
+ ldr r0, _0223C21C ; =0x022461F4
+ ldrsh r0, [r0, r1]
+ bx lr
+ nop
+_0223C21C: .word 0x022461F4
+
+ thumb_func_start MOD12_0223C220
+MOD12_0223C220: ; 0x0223C220
+ mov r1, #6
+ mul r1, r0
+ ldr r0, _0223C230 ; =0x022461F4
+ add r1, r0, r1
+ mov r0, #2
+ ldrsh r0, [r1, r0]
+ bx lr
+ nop
+_0223C230: .word 0x022461F4
+
+ thumb_func_start MOD12_0223C234
+MOD12_0223C234: ; 0x0223C234
+ mov r1, #6
+ mul r1, r0
+ ldr r0, _0223C244 ; =0x022461F4
+ add r1, r0, r1
+ mov r0, #4
+ ldrsh r0, [r1, r0]
+ bx lr
+ nop
+_0223C244: .word 0x022461F4
+
+ thumb_func_start MOD12_0223C248
+MOD12_0223C248: ; 0x0223C248
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r4, #0
+ b _0223C264
+_0223C252:
+ lsl r0, r4, #4
+ add r0, r5, r0
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223C262
+ bl ErrorHandling
+_0223C262:
+ add r4, r4, #1
+_0223C264:
+ cmp r4, #4
+ blt _0223C252
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #0x10
+ bl MI_CpuFill8
+ mov r0, #0x17
+ str r0, [sp, #0xc]
+ mov r4, #0
+ ldr r7, _0223C2F8 ; =0x022461F4
+ b _0223C2F0
+_0223C27C:
+ ldr r0, _0223C2FC ; =0x00000AD5
+ add r1, r5, r4
+ ldrb r6, [r1, r0]
+ ldr r1, [r5]
+ lsl r0, r6, #2
+ ldr r0, [r1, r0]
+ mov r1, #2
+ bl FUN_02068E14
+ add r2, r0, #0
+ mov r0, #6
+ mul r0, r4
+ ldrsh r1, [r7, r0]
+ add r0, r7, r0
+ mov r3, #2
+ ldrsh r3, [r0, r3]
+ str r1, [sp, #4]
+ add r2, r2, r3
+ str r2, [sp, #8]
+ lsl r2, r6, #4
+ add r2, r5, r2
+ str r1, [r2, #0x1c]
+ ldr r1, [sp, #8]
+ str r1, [r2, #0x20]
+ mov r1, #4
+ ldrsh r0, [r0, r1]
+ lsl r1, r6, #2
+ str r0, [r2, #0x24]
+ ldr r2, [r5]
+ add r0, sp, #0
+ add r1, r2, r1
+ add r1, #0xf8
+ ldr r1, [r1]
+ bl MOD17_021DD4F4
+ lsl r1, r6, #4
+ add r2, r5, r1
+ str r0, [r2, #0x18]
+ ldr r1, [r2, #0x1c]
+ ldr r2, [r2, #0x20]
+ bl MOD17_021DD620
+ cmp r4, #0
+ ble _0223C2EE
+ lsl r0, r6, #4
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ mov r1, #0
+ bl MOD17_021DD59C
+ lsl r0, r6, #4
+ add r0, r5, r0
+ mov r1, #0x63
+ ldr r0, [r0, #0x18]
+ mvn r1, r1
+ bl MOD17_021DD6CC
+_0223C2EE:
+ add r4, r4, #1
+_0223C2F0:
+ cmp r4, #4
+ blt _0223C27C
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223C2F8: .word 0x022461F4
+_0223C2FC: .word 0x00000AD5
+
+ thumb_func_start MOD12_0223C300
+MOD12_0223C300: ; 0x0223C300
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_0223C308:
+ ldr r0, [r5, #4]
+ bl MOD17_021DD540
+ add r0, r5, #0
+ add r0, #0x98
+ add r4, r4, #1
+ add r5, #0x10
+ str r6, [r0]
+ cmp r4, #4
+ blt _0223C308
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223C320
+MOD12_0223C320: ; 0x0223C320
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0223C324
+MOD12_0223C324: ; 0x0223C324
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0223C328
+MOD12_0223C328: ; 0x0223C328
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #8
+ cmp r1, r0
+ ble _0223C338
+ add r1, r0, #0
+_0223C338:
+ asr r0, r1, #2
+ lsr r0, r0, #0x1d
+ add r0, r1, r0
+ lsr r2, r1, #0x1f
+ lsl r1, r1, #0x1d
+ asr r4, r0, #3
+ sub r1, r1, r2
+ mov r0, #0x1d
+ ror r1, r0
+ add r0, r2, r1
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ mov r1, #3
+ ldr r0, [r0, #0x60]
+ bl FUN_0201886C
+ add r2, r0, #0
+ mov r1, #0
+ cmp r4, #0
+ ble _0223C394
+ ldr r0, _0223C420 ; =0x00002014
+ add r3, r2, #0
+ mov r7, #0x1d
+_0223C366:
+ lsr r6, r1, #0x1f
+ lsl r5, r1, #0x1d
+ sub r5, r5, r6
+ ror r5, r7
+ add r5, r6, r5
+ bne _0223C37A
+ mov r5, #0x13
+ lsl r5, r5, #6
+ strh r0, [r3, r5]
+ b _0223C38C
+_0223C37A:
+ mov r5, #1
+ tst r5, r1
+ beq _0223C384
+ ldr r6, _0223C424 ; =0x00002034
+ b _0223C386
+_0223C384:
+ ldr r6, _0223C428 ; =0x00002054
+_0223C386:
+ mov r5, #0x13
+ lsl r5, r5, #6
+ strh r6, [r3, r5]
+_0223C38C:
+ add r1, r1, #1
+ add r3, r3, #2
+ cmp r1, r4
+ blt _0223C366
+_0223C394:
+ cmp r1, #0x20
+ bge _0223C3D4
+ lsr r4, r1, #0x1f
+ lsl r3, r1, #0x1d
+ sub r3, r3, r4
+ mov r0, #0x1d
+ ror r3, r0
+ add r0, r4, r3
+ bne _0223C3B8
+ ldr r3, _0223C42C ; =0x0000200C
+ ldr r0, [sp, #4]
+ add r4, r0, r3
+ lsl r0, r1, #1
+ add r3, r2, r0
+ mov r0, #0x13
+ lsl r0, r0, #6
+ strh r4, [r3, r0]
+ b _0223C3D2
+_0223C3B8:
+ mov r0, #1
+ tst r0, r1
+ beq _0223C3C2
+ ldr r3, _0223C430 ; =0x0000202C
+ b _0223C3C4
+_0223C3C2:
+ ldr r3, _0223C434 ; =0x0000204C
+_0223C3C4:
+ ldr r0, [sp, #4]
+ add r4, r0, r3
+ lsl r0, r1, #1
+ add r3, r2, r0
+ mov r0, #0x13
+ lsl r0, r0, #6
+ strh r4, [r3, r0]
+_0223C3D2:
+ add r1, r1, #1
+_0223C3D4:
+ cmp r1, #0x20
+ bge _0223C410
+ lsl r0, r1, #1
+ add r2, r2, r0
+ mov r4, #0x13
+ ldr r0, _0223C42C ; =0x0000200C
+ mov r7, #1
+ lsl r4, r4, #6
+ mov r5, #0x1d
+_0223C3E6:
+ lsr r6, r1, #0x1f
+ lsl r3, r1, #0x1d
+ sub r3, r3, r6
+ ror r3, r5
+ add r3, r6, r3
+ bne _0223C3F6
+ strh r0, [r2, r4]
+ b _0223C408
+_0223C3F6:
+ add r3, r1, #0
+ tst r3, r7
+ beq _0223C400
+ ldr r6, _0223C430 ; =0x0000202C
+ b _0223C402
+_0223C400:
+ ldr r6, _0223C434 ; =0x0000204C
+_0223C402:
+ mov r3, #0x13
+ lsl r3, r3, #6
+ strh r6, [r2, r3]
+_0223C408:
+ add r1, r1, #1
+ add r2, r2, #2
+ cmp r1, #0x20
+ blt _0223C3E6
+_0223C410:
+ ldr r0, [sp]
+ mov r1, #3
+ ldr r0, [r0, #0x60]
+ bl FUN_0201AC68
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223C420: .word 0x00002014
+_0223C424: .word 0x00002034
+_0223C428: .word 0x00002054
+_0223C42C: .word 0x0000200C
+_0223C430: .word 0x0000202C
+_0223C434: .word 0x0000204C
+
+ thumb_func_start MOD12_0223C438
+MOD12_0223C438: ; 0x0223C438
+ push {r4, lr}
+ add r4, r0, #0
+ lsl r0, r1, #8
+ add r1, r2, #0
+ bl _s32_div_f
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD12_0223C328
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223C450
+MOD12_0223C450: ; 0x0223C450
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #1
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r2, _0223C4D8 ; =0x000080EB
+ mov r3, #0x3a
+ str r2, [sp, #8]
+ mov r2, #0x2e
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0223C4DC ; =0x000080EC
+ add r1, r4, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x3b
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0223C4E0 ; =0x000080ED
+ add r1, r4, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x3c
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0223C4E4 ; =0x000080EE
+ add r1, r4, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x3d
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223C4D8 ; =0x000080EB
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x3e
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223C4D8 ; =0x000080EB
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x3f
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_0223C4D8: .word 0x000080EB
+_0223C4DC: .word 0x000080EC
+_0223C4E0: .word 0x000080ED
+_0223C4E4: .word 0x000080EE
+
+ thumb_func_start MOD12_0223C4E8
+MOD12_0223C4E8: ; 0x0223C4E8
+ push {r4, lr}
+ ldr r1, _0223C51C ; =0x000080EB
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _0223C520 ; =0x000080EC
+ add r0, r4, #0
+ bl FUN_0200C358
+ ldr r1, _0223C524 ; =0x000080ED
+ add r0, r4, #0
+ bl FUN_0200C358
+ ldr r1, _0223C528 ; =0x000080EE
+ add r0, r4, #0
+ bl FUN_0200C358
+ ldr r1, _0223C51C ; =0x000080EB
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _0223C51C ; =0x000080EB
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_0223C51C: .word 0x000080EB
+_0223C520: .word 0x000080EC
+_0223C524: .word 0x000080ED
+_0223C528: .word 0x000080EE
+
+ thumb_func_start MOD12_0223C52C
+MOD12_0223C52C: ; 0x0223C52C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ ldr r4, _0223C62C ; =0x022462E0
+ add r7, r2, #0
+ add r6, r3, #0
+ add r5, r0, #0
+ mov ip, r1
+ add r3, sp, #0
+ mov r2, #6
+_0223C53E:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0223C53E
+ ldr r0, [r4]
+ cmp r6, #2
+ str r0, [r3]
+ bne _0223C556
+ ldr r0, [sp, #8]
+ add r0, #0xa
+ str r0, [sp, #8]
+ b _0223C586
+_0223C556:
+ ldr r0, [sp, #0x54]
+ cmp r0, #3
+ bhi _0223C586
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223C568: ; jump table
+ .short _0223C586 - _0223C568 - 2 ; case 0
+ .short _0223C570 - _0223C568 - 2 ; case 1
+ .short _0223C578 - _0223C568 - 2 ; case 2
+ .short _0223C580 - _0223C568 - 2 ; case 3
+_0223C570:
+ ldr r0, [sp, #8]
+ add r0, r0, #3
+ str r0, [sp, #8]
+ b _0223C586
+_0223C578:
+ ldr r0, [sp, #8]
+ add r0, r0, #2
+ str r0, [sp, #8]
+ b _0223C586
+_0223C580:
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+_0223C586:
+ ldr r0, [sp, #0x48]
+ cmp r0, #4
+ bhi _0223C5C0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223C598: ; jump table
+ .short _0223C5C0 - _0223C598 - 2 ; case 0
+ .short _0223C5B6 - _0223C598 - 2 ; case 1
+ .short _0223C5C0 - _0223C598 - 2 ; case 2
+ .short _0223C5A2 - _0223C598 - 2 ; case 3
+ .short _0223C5AC - _0223C598 - 2 ; case 4
+_0223C5A2:
+ ldr r0, _0223C630 ; =0x000080EC
+ str r0, [sp, #0x14]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ b _0223C5C8
+_0223C5AC:
+ ldr r0, _0223C634 ; =0x000080EE
+ str r0, [sp, #0x14]
+ mov r0, #6
+ str r0, [sp, #0xc]
+ b _0223C5C8
+_0223C5B6:
+ ldr r0, _0223C638 ; =0x000080ED
+ str r0, [sp, #0x14]
+ mov r0, #7
+ str r0, [sp, #0xc]
+ b _0223C5C8
+_0223C5C0:
+ ldr r0, _0223C63C ; =0x000080EB
+ str r0, [sp, #0x14]
+ mov r0, #2
+ str r0, [sp, #0xc]
+_0223C5C8:
+ mov r0, ip
+ add r1, r7, #0
+ add r2, sp, #0
+ bl FUN_0200C154
+ add r4, r0, #0
+ add r1, r6, #0
+ bl FUN_0200C5C0
+ ldr r0, [r4]
+ bl FUN_0200C59C
+ ldr r1, [sp, #0x4c]
+ ldr r2, [sp, #0x50]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ mov r3, #1
+ add r0, r4, #0
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ lsl r3, r3, #0x14
+ bl FUN_0200C750
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_0200C5E0
+ mov r0, #0
+ add r2, r5, #0
+_0223C602:
+ add r1, r2, #0
+ add r1, #0xd8
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _0223C618
+ lsl r1, r0, #2
+ add r1, r5, r1
+ add r1, #0xd8
+ add sp, #0x34
+ str r4, [r1]
+ pop {r4, r5, r6, r7, pc}
+_0223C618:
+ add r0, r0, #1
+ add r2, r2, #4
+ cmp r0, #0x44
+ blt _0223C602
+ bl ErrorHandling
+ mov r0, #0
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0223C62C: .word 0x022462E0
+_0223C630: .word 0x000080EC
+_0223C634: .word 0x000080EE
+_0223C638: .word 0x000080ED
+_0223C63C: .word 0x000080EB
+
+ thumb_func_start MOD12_0223C640
+MOD12_0223C640: ; 0x0223C640
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_0223C648:
+ add r0, r5, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223C65C
+ bl FUN_0200C3DC
+ add r0, r5, #0
+ add r0, #0xd8
+ str r6, [r0]
+_0223C65C:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x44
+ blt _0223C648
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223C668
+MOD12_0223C668: ; 0x0223C668
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #1
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r2, _0223C6B0 ; =0x000080EF
+ mov r3, #0x37
+ str r2, [sp, #8]
+ mov r2, #0x2e
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223C6B4 ; =0x000080EC
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x38
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223C6B4 ; =0x000080EC
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x39
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_0223C6B0: .word 0x000080EF
+_0223C6B4: .word 0x000080EC
+
+ thumb_func_start MOD12_0223C6B8
+MOD12_0223C6B8: ; 0x0223C6B8
+ push {r4, lr}
+ ldr r1, _0223C6D4 ; =0x000080EF
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _0223C6D8 ; =0x000080EC
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _0223C6D8 ; =0x000080EC
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_0223C6D4: .word 0x000080EF
+_0223C6D8: .word 0x000080EC
+
+ thumb_func_start MOD12_0223C6DC
+MOD12_0223C6DC: ; 0x0223C6DC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ mov r4, #0
+_0223C6E6:
+ ldr r2, _0223C708 ; =0x02246314
+ add r0, r6, #0
+ add r1, r7, #0
+ bl FUN_0200C154
+ ldr r1, _0223C70C ; =0x000009DC
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _0223C6E6
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223C708: .word 0x02246314
+_0223C70C: .word 0x000009DC
+
+ thumb_func_start MOD12_0223C710
+MOD12_0223C710: ; 0x0223C710
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ ldr r7, _0223C730 ; =0x000009DC
+ add r5, r0, #0
+ add r6, r4, #0
+_0223C71A:
+ ldr r0, _0223C730 ; =0x000009DC
+ ldr r0, [r5, r0]
+ bl FUN_0200C3DC
+ str r6, [r5, r7]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _0223C71A
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223C730: .word 0x000009DC
+
+ thumb_func_start MOD12_0223C734
+MOD12_0223C734: ; 0x0223C734
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r5, r0, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #5
+ bl FUN_0200A914
+ str r0, [sp, #0x38]
+ add r0, r5, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #6
+ bl FUN_0200A914
+ str r0, [sp, #0x34]
+ add r0, r5, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #7
+ bl FUN_0200A914
+ str r0, [sp, #0x30]
+ mov r0, #0
+ ldr r1, _0223C868 ; =0x000009E8
+ str r0, [sp, #0x3c]
+ add r0, r5, r1
+ str r0, [sp, #0x2c]
+ add r0, r1, #0
+ add r0, #0x3c
+ add r1, #0x78
+ add r4, r5, #0
+ add r7, r5, r0
+ add r6, r5, r1
+_0223C778:
+ ldr r0, [sp, #0x2c]
+ add r3, r5, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x38]
+ add r3, #0x94
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, _0223C86C ; =0x000B0C00
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, _0223C870 ; =0x000080E9
+ str r0, [sp, #0x14]
+ mov r0, #0
+ str r0, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ mov r0, #1
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ mov r0, #0xc
+ str r0, [sp, #0x28]
+ ldr r1, [r5, #0x60]
+ ldr r2, [r5, #0x5c]
+ ldr r3, [r3]
+ mov r0, #0x17
+ bl MOD12_02231380
+ ldr r0, _0223C868 ; =0x000009E8
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl FUN_020119D0
+ add r3, r5, #0
+ ldr r0, [sp, #0x34]
+ str r7, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, _0223C86C ; =0x000B0C00
+ add r3, #0x94
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, _0223C870 ; =0x000080E9
+ str r0, [sp, #0x14]
+ mov r0, #0
+ str r0, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ mov r0, #1
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ mov r0, #0xc
+ str r0, [sp, #0x28]
+ ldr r1, [r5, #0x60]
+ ldr r2, [r5, #0x5c]
+ ldr r3, [r3]
+ mov r0, #0x17
+ bl MOD12_02231380
+ ldr r0, _0223C874 ; =0x00000A24
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl FUN_020119D0
+ add r3, r5, #0
+ ldr r0, [sp, #0x30]
+ str r6, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, _0223C86C ; =0x000B0C00
+ add r3, #0x94
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, _0223C870 ; =0x000080E9
+ str r0, [sp, #0x14]
+ mov r0, #0
+ str r0, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ mov r0, #1
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ mov r0, #0xc
+ str r0, [sp, #0x28]
+ ldr r1, [r5, #0x60]
+ ldr r2, [r5, #0x5c]
+ ldr r3, [r3]
+ mov r0, #0x17
+ bl MOD12_02231380
+ mov r0, #0xa6
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020119D0
+ ldr r0, [sp, #0x2c]
+ add r4, #0x14
+ add r0, #0x14
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x3c]
+ add r7, #0x14
+ add r0, r0, #1
+ add r6, #0x14
+ str r0, [sp, #0x3c]
+ cmp r0, #3
+ blt _0223C778
+ ldr r0, [sp, #0x38]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x34]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x30]
+ bl FUN_02021A20
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223C868: .word 0x000009E8
+_0223C86C: .word 0x000B0C00
+_0223C870: .word 0x000080E9
+_0223C874: .word 0x00000A24
+
+ thumb_func_start MOD12_0223C878
+MOD12_0223C878: ; 0x0223C878
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r1, _0223C89C ; =0x000009E8
+ mov r7, #0
+ add r6, r0, r1
+_0223C880:
+ mov r4, #0
+ add r5, r6, #0
+_0223C884:
+ add r0, r5, #0
+ bl MOD12_0223147C
+ add r4, r4, #1
+ add r5, #0x14
+ cmp r4, #3
+ blt _0223C884
+ add r7, r7, #1
+ add r6, #0x3c
+ cmp r7, #3
+ blt _0223C880
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223C89C: .word 0x000009E8
+
+ thumb_func_start MOD12_0223C8A0
+MOD12_0223C8A0: ; 0x0223C8A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r4, [sp, #0x2c]
+ add r5, r0, #0
+ str r3, [sp]
+ cmp r4, #0
+ bne _0223C8B2
+ str r4, [sp, #4]
+ b _0223C8B6
+_0223C8B2:
+ sub r0, r4, #1
+ str r0, [sp, #4]
+_0223C8B6:
+ mov r0, #0x9a
+ lsl r0, r0, #4
+ add r2, r5, r0
+ ldr r0, [sp, #4]
+ mov r1, #0x14
+ mul r1, r0
+ add r6, r2, r1
+ ldr r0, [r6, #8]
+ cmp r0, #0
+ beq _0223C8CE
+ bl FUN_0200CAB4
+_0223C8CE:
+ add r0, r6, #0
+ mov r1, #0
+ mov r2, #0x14
+ bl MI_CpuFill8
+ ldr r1, _0223C980 ; =0x022461E4
+ lsl r2, r4, #2
+ ldrsh r0, [r1, r2]
+ add r1, r1, r2
+ str r0, [sp, #0xc]
+ mov r0, #2
+ ldrsh r0, [r1, r0]
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, _0223C984 ; =0x000009DC
+ ldr r0, [r1, r0]
+ ldr r1, [sp]
+ str r0, [r6]
+ bl FUN_0200C5C0
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #8]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ mov r3, #1
+ ldr r0, [r6]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ lsl r3, r3, #0x14
+ bl FUN_0200C750
+ ldr r0, [r6]
+ ldr r0, [r0]
+ bl FUN_0200C59C
+ ldr r0, [r6]
+ mov r1, #1
+ bl FUN_0200C644
+ ldr r0, [sp, #4]
+ mov r1, #0x14
+ add r7, r0, #0
+ mov r4, #0
+ mul r7, r1
+ b _0223C940
+_0223C92C:
+ mov r0, #0x3c
+ mul r0, r4
+ add r0, r5, r0
+ add r1, r0, r7
+ ldr r0, _0223C988 ; =0x000009E8
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_020119D0
+ add r4, r4, #1
+_0223C940:
+ cmp r4, #3
+ blt _0223C92C
+ ldr r0, _0223C988 ; =0x000009E8
+ mov r1, #0x3c
+ add r2, r5, r0
+ ldr r0, [sp]
+ mov r3, #1
+ mul r1, r0
+ add r2, r2, r1
+ ldr r0, [sp, #4]
+ mov r1, #0x14
+ mul r1, r0
+ add r0, r2, r1
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #8]
+ str r0, [r6, #4]
+ bl MOD12_02231490
+ ldr r0, [r6, #4]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_020119D0
+ ldr r0, _0223C98C ; =MOD12_0223C994
+ ldr r2, _0223C990 ; =0x00009D08
+ add r1, r6, #0
+ bl FUN_0200CA44
+ str r0, [r6, #8]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223C980: .word 0x022461E4
+_0223C984: .word 0x000009DC
+_0223C988: .word 0x000009E8
+_0223C98C: .word MOD12_0223C994
+_0223C990: .word 0x00009D08
+
+ thumb_func_start MOD12_0223C994
+MOD12_0223C994: ; 0x0223C994
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _0223C9A8
+ cmp r0, #1
+ beq _0223C9E6
+ b _0223C9FA
+_0223C9A8:
+ ldr r0, [r4, #4]
+ add r1, sp, #4
+ ldr r0, [r0]
+ add r2, sp, #0
+ bl FUN_020119A4
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ sub r2, r0, #4
+ str r2, [sp]
+ ldr r0, [r4, #4]
+ ldr r0, [r0]
+ bl FUN_020118C4
+ mov r1, #0
+ ldr r0, [r4]
+ sub r2, r1, #4
+ bl FUN_0200C82C
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ cmp r0, #4
+ ble _0223CA16
+ mov r0, #0
+ str r0, [r4, #0xc]
+ ldrb r0, [r4, #0x10]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223C9E6:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ cmp r0, #0xe
+ ble _0223CA16
+ ldrb r0, [r4, #0x10]
+ add sp, #8
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223C9FA:
+ ldr r0, [r4, #4]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_020119D0
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_0200C644
+ mov r0, #0
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0223CA16:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223CA1C
+MOD12_0223CA1C: ; 0x0223CA1C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ ldr r7, _0223CA40 ; =0x000009A8
+ add r5, r0, #0
+ add r6, r4, #0
+_0223CA26:
+ ldr r0, [r5, r7]
+ cmp r0, #0
+ beq _0223CA34
+ bl FUN_0200CAB4
+ ldr r0, _0223CA40 ; =0x000009A8
+ str r6, [r5, r0]
+_0223CA34:
+ add r4, r4, #1
+ add r5, #0x14
+ cmp r4, #3
+ blt _0223CA26
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223CA40: .word 0x000009A8
+
+ thumb_func_start MOD12_0223CA44
+MOD12_0223CA44: ; 0x0223CA44
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #1
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r2, _0223CA8C ; =0x000080F0
+ mov r3, #0x40
+ str r2, [sp, #8]
+ mov r2, #0x2e
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223CA90 ; =0x000080ED
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x41
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223CA90 ; =0x000080ED
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x42
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_0223CA8C: .word 0x000080F0
+_0223CA90: .word 0x000080ED
+
+ thumb_func_start MOD12_0223CA94
+MOD12_0223CA94: ; 0x0223CA94
+ push {r4, lr}
+ ldr r1, _0223CAB0 ; =0x000080F0
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _0223CAB4 ; =0x000080ED
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _0223CAB4 ; =0x000080ED
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_0223CAB0: .word 0x000080F0
+_0223CAB4: .word 0x000080ED
+
+ thumb_func_start MOD12_0223CAB8
+MOD12_0223CAB8: ; 0x0223CAB8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ add r1, r2, #0
+ ldr r2, _0223CAD8 ; =0x02246244
+ bl FUN_0200C154
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0200C59C
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ str r4, [r5, r0]
+ pop {r3, r4, r5, pc}
+ nop
+_0223CAD8: .word 0x02246244
+
+ thumb_func_start MOD12_0223CADC
+MOD12_0223CADC: ; 0x0223CADC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _0223CAF6
+ bl FUN_0200C3DC
+ mov r0, #0x7a
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_0223CAF6:
+ pop {r4, pc}
+
+ thumb_func_start MOD12_0223CAF8
+MOD12_0223CAF8: ; 0x0223CAF8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _0223CB10 ; =MOD12_0223CB28
+ ldr r2, _0223CB14 ; =0x00009CAE
+ add r1, r4, #0
+ bl FUN_0200CA44
+ mov r1, #2
+ lsl r1, r1, #8
+ str r0, [r4, r1]
+ pop {r4, pc}
+ nop
+_0223CB10: .word MOD12_0223CB28
+_0223CB14: .word 0x00009CAE
+
+ thumb_func_start MOD12_0223CB18
+MOD12_0223CB18: ; 0x0223CB18
+ mov r1, #2
+ lsl r1, r1, #8
+ ldr r3, _0223CB24 ; =0x0200CAB5
+ ldr r0, [r0, r1]
+ bx r3
+ nop
+_0223CB24: .word 0x0200CAB5
+
+ thumb_func_start MOD12_0223CB28
+MOD12_0223CB28: ; 0x0223CB28
+ push {r3, lr}
+ ldr r2, [r1]
+ ldr r0, _0223CB50 ; =0x00000123
+ mov r3, #1
+ ldrb r2, [r2, r0]
+ add r0, #0xd9
+ ldr r0, [r1, r0]
+ lsl r2, r2, #4
+ add r2, r1, r2
+ ldr r1, [r2, #0x1c]
+ ldr r2, [r2, #0x20]
+ lsl r1, r1, #0x10
+ sub r2, #0x28
+ lsl r2, r2, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ lsl r3, r3, #0x14
+ bl FUN_0200C750
+ pop {r3, pc}
+ .align 2, 0
+_0223CB50: .word 0x00000123
+
+ thumb_func_start MOD12_0223CB54
+MOD12_0223CB54: ; 0x0223CB54
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #1
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r2, _0223CB9C ; =0x000080F2
+ mov r3, #0x5a
+ str r2, [sp, #8]
+ mov r2, #0x2e
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223CBA0 ; =0x000080EF
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x59
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223CBA0 ; =0x000080EF
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x58
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_0223CB9C: .word 0x000080F2
+_0223CBA0: .word 0x000080EF
+
+ thumb_func_start MOD12_0223CBA4
+MOD12_0223CBA4: ; 0x0223CBA4
+ push {r4, lr}
+ ldr r1, _0223CBC0 ; =0x000080F2
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _0223CBC4 ; =0x000080EF
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _0223CBC4 ; =0x000080EF
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_0223CBC0: .word 0x000080F2
+_0223CBC4: .word 0x000080EF
+
+ thumb_func_start MOD12_0223CBC8
+MOD12_0223CBC8: ; 0x0223CBC8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r1, [sp, #4]
+ str r0, [sp, #0xc]
+ ldr r4, [sp]
+ mov r1, #2
+ add r0, r4, #0
+ lsl r1, r1, #8
+ ldr r6, [sp, #0xc]
+ str r2, [sp, #8]
+ add r7, r0, #4
+ add r5, r0, r1
+_0223CBE4:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ ldr r2, _0223CC60 ; =0x022462AC
+ bl FUN_0200C154
+ mov r1, #0x81
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ ldr r0, [r0]
+ bl FUN_0200C59C
+ mov r0, #0x81
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C840
+ ldr r1, [sp, #0xc]
+ ldr r0, _0223CC64 ; =0x00000213
+ strb r1, [r4, r0]
+ sub r0, r0, #7
+ str r7, [r4, r0]
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0]
+ ldr r0, [r0, r6]
+ bl FUN_02068E14
+ mov r1, #0x85
+ lsl r1, r1, #2
+ strb r0, [r4, r1]
+ mov r1, #1
+ add r0, r5, #0
+ add r2, r1, #0
+ bl MOD12_0223CD38
+ ldr r0, _0223CC68 ; =MOD12_0223CCBC
+ ldr r2, _0223CC6C ; =0x0000A08C
+ add r1, r5, #0
+ bl FUN_0200CA44
+ mov r1, #2
+ lsl r1, r1, #8
+ str r0, [r4, r1]
+ ldr r0, [sp, #0xc]
+ add r4, #0x18
+ add r0, r0, #1
+ add r7, #0x10
+ add r6, r6, #4
+ add r5, #0x18
+ str r0, [sp, #0xc]
+ cmp r0, #4
+ blt _0223CBE4
+ ldr r0, [sp]
+ mov r1, #0
+ bl MOD12_0223CC9C
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223CC60: .word 0x022462AC
+_0223CC64: .word 0x00000213
+_0223CC68: .word MOD12_0223CCBC
+_0223CC6C: .word 0x0000A08C
+
+ thumb_func_start MOD12_0223CC70
+MOD12_0223CC70: ; 0x0223CC70
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ mov r7, #0x81
+ add r5, r0, #0
+ add r6, r4, #0
+ lsl r7, r7, #2
+_0223CC7C:
+ mov r0, #0x81
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0200C3DC
+ mov r0, #2
+ lsl r0, r0, #8
+ ldr r0, [r5, r0]
+ bl FUN_0200CAB4
+ str r6, [r5, r7]
+ add r4, r4, #1
+ add r5, #0x18
+ cmp r4, #4
+ blt _0223CC7C
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_0223CC9C
+MOD12_0223CC9C: ; 0x0223CC9C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0x81
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+ lsl r7, r7, #2
+_0223CCA8:
+ ldr r0, [r5, r7]
+ add r1, r6, #0
+ bl FUN_0200C644
+ add r4, r4, #1
+ add r5, #0x18
+ cmp r4, #4
+ blt _0223CCA8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223CCBC
+MOD12_0223CCBC: ; 0x0223CCBC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0xc]
+ ldr r6, [r0, #4]
+ ldr r4, [r0, #8]
+ ldr r0, [r0, #0xc]
+ bl MOD12_0223D06C
+ mov r1, #0x14
+ ldrsb r2, [r5, r1]
+ mov r1, #0x28
+ sub r2, r1, r2
+ add r1, r2, #0
+ mul r1, r0
+ asr r2, r1, #7
+ lsr r2, r2, #0x18
+ add r2, r1, r2
+ asr r1, r2, #8
+ add r4, r4, r1
+ mov r1, #0x64
+ mul r1, r0
+ asr r0, r1, #7
+ lsr r0, r0, #0x18
+ add r0, r1, r0
+ asr r0, r0, #8
+ bl _fflt
+ ldr r1, _0223CD34 ; =0x42C80000
+ bl _fdiv
+ add r7, r0, #0
+ ldrb r0, [r5, #0x12]
+ cmp r0, #0
+ bne _0223CD16
+ add r1, sp, #0
+ mov r3, #1
+ ldr r0, [r5, #4]
+ add r1, #2
+ add r2, sp, #0
+ lsl r3, r3, #0x14
+ bl FUN_0200C7F0
+ add r1, sp, #0
+ mov r0, #0
+ ldrsh r4, [r1, r0]
+_0223CD16:
+ lsl r1, r6, #0x10
+ lsl r2, r4, #0x10
+ mov r3, #1
+ ldr r0, [r5, #4]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ lsl r3, r3, #0x14
+ bl FUN_0200C750
+ ldr r0, [r5, #4]
+ add r1, r7, #0
+ add r2, r7, #0
+ bl FUN_0200C884
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223CD34: .word 0x42C80000
+
+ thumb_func_start MOD12_0223CD38
+MOD12_0223CD38: ; 0x0223CD38
+ strb r1, [r0, #0x11]
+ strb r2, [r0, #0x12]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0223CD40
+MOD12_0223CD40: ; 0x0223CD40
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #1
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r2, _0223CD88 ; =0x000080F3
+ mov r3, #0x5d
+ str r2, [sp, #8]
+ mov r2, #0x2e
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223CD8C ; =0x000080F0
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x5c
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223CD8C ; =0x000080F0
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x5b
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_0223CD88: .word 0x000080F3
+_0223CD8C: .word 0x000080F0
+
+ thumb_func_start MOD12_0223CD90
+MOD12_0223CD90: ; 0x0223CD90
+ push {r4, lr}
+ ldr r1, _0223CDAC ; =0x000080F3
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _0223CDB0 ; =0x000080F0
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _0223CDB0 ; =0x000080F0
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_0223CDAC: .word 0x000080F3
+_0223CDB0: .word 0x000080F0
+
+ thumb_func_start MOD12_0223CDB4
+MOD12_0223CDB4: ; 0x0223CDB4
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0223CDB8
+MOD12_0223CDB8: ; 0x0223CDB8
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0223CDBC
+MOD12_0223CDBC: ; 0x0223CDBC
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #1
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r2, _0223CE04 ; =0x000080F4
+ mov r3, #0x60
+ str r2, [sp, #8]
+ mov r2, #0x2e
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223CE08 ; =0x000080F1
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x5f
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223CE08 ; =0x000080F1
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x5e
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_0223CE04: .word 0x000080F4
+_0223CE08: .word 0x000080F1
+
+ thumb_func_start MOD12_0223CE0C
+MOD12_0223CE0C: ; 0x0223CE0C
+ push {r4, lr}
+ ldr r1, _0223CE28 ; =0x000080F4
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _0223CE2C ; =0x000080F1
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _0223CE2C ; =0x000080F1
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_0223CE28: .word 0x000080F4
+_0223CE2C: .word 0x000080F1
+
+ thumb_func_start MOD12_0223CE30
+MOD12_0223CE30: ; 0x0223CE30
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0xad
+ lsl r0, r0, #2
+ add r7, r1, #0
+ add r1, r5, r0
+ sub r0, #0xf4
+ mul r0, r7
+ add r4, r1, r0
+ str r2, [sp]
+ mov r1, #0
+_0223CE48:
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _0223CE56
+ add r1, r1, #1
+ add r4, #0x1c
+ cmp r1, #0x10
+ blt _0223CE48
+_0223CE56:
+ cmp r1, #0x10
+ bne _0223CE60
+ add sp, #8
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0223CE60:
+ ldr r0, [r5, #0x6c]
+ ldr r1, [r5, #0x70]
+ ldr r2, _0223CF2C ; =0x02246348
+ bl FUN_0200C154
+ add r6, r0, #0
+ bne _0223CE74
+ add sp, #8
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0223CE74:
+ lsl r1, r7, #4
+ add r2, r5, r1
+ ldr r1, [r2, #0x1c]
+ ldr r7, [r2, #0x20]
+ str r1, [sp, #4]
+ ldr r1, [sp]
+ bl FUN_0200C5C0
+ ldr r1, [sp, #4]
+ lsl r2, r7, #0x10
+ lsl r1, r1, #0x10
+ mov r3, #1
+ add r0, r6, #0
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ lsl r3, r3, #0x14
+ bl FUN_0200C750
+ ldr r0, [r6]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r6]
+ bl FUN_0200C59C
+ ldr r0, [r5]
+ bl FUN_02082878
+ ldr r2, _0223CF30 ; =0x04000280
+ mov r1, #0
+ strh r1, [r2]
+ str r0, [r2, #0x10]
+ mov r0, #5
+ lsl r0, r0, #8
+ add r2, #0x18
+ str r0, [r2]
+ str r1, [r2, #4]
+ add r0, r4, #0
+ mov r2, #0x1c
+ bl MI_CpuFill8
+ ldr r0, [sp, #4]
+ str r6, [r4, #4]
+ lsl r0, r0, #8
+ str r0, [r4, #8]
+ lsl r0, r7, #8
+ ldr r2, _0223CF30 ; =0x04000280
+ str r0, [r4, #0xc]
+ lsr r0, r2, #0xb
+_0223CED6:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0223CED6
+ ldr r0, _0223CF34 ; =0x040002A8
+ ldr r1, [r0]
+ mov r0, #1
+ str r1, [r4, #0x10]
+ tst r0, r1
+ beq _0223CEEC
+ neg r0, r1
+ str r0, [r4, #0x10]
+_0223CEEC:
+ ldr r0, [r5]
+ bl FUN_02082878
+ ldr r2, _0223CF38 ; =0x04000290
+ mov r1, #0xf
+ str r0, [r2]
+ lsl r1, r1, #8
+ add r2, #8
+ mov r0, #0
+ str r1, [r2]
+ str r0, [r2, #4]
+ ldr r2, _0223CF30 ; =0x04000280
+ lsr r0, r2, #0xb
+_0223CF06:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0223CF06
+ ldr r0, _0223CF34 ; =0x040002A8
+ ldr r2, _0223CF3C ; =0x00009C40
+ ldr r1, [r0]
+ lsr r0, r0, #0x10
+ add r0, r1, r0
+ neg r0, r0
+ str r0, [r4, #0x14]
+ ldr r0, _0223CF40 ; =MOD12_0223CF44
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4]
+ mov r0, #1
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223CF2C: .word 0x02246348
+_0223CF30: .word 0x04000280
+_0223CF34: .word 0x040002A8
+_0223CF38: .word 0x04000290
+_0223CF3C: .word 0x00009C40
+_0223CF40: .word MOD12_0223CF44
+
+ thumb_func_start MOD12_0223CF44
+MOD12_0223CF44: ; 0x0223CF44
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0x10]
+ add r0, r1, r0
+ str r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ add r0, r1, r0
+ str r0, [r4, #0xc]
+ mov r0, #2
+ ldr r1, [r4, #0x14]
+ lsl r0, r0, #8
+ add r0, r1, r0
+ str r0, [r4, #0x14]
+ ldrh r0, [r4, #0x18]
+ add r0, r0, #1
+ strh r0, [r4, #0x18]
+ ldrh r0, [r4, #0x18]
+ cmp r0, #0xa
+ bhi _0223CF8A
+ mov r0, #0x11
+ ldr r1, [r4, #8]
+ lsl r0, r0, #0xc
+ cmp r1, r0
+ bgt _0223CF8A
+ ldr r0, _0223CFF0 ; =0xFFFEF000
+ cmp r1, r0
+ blt _0223CF8A
+ mov r0, #0xd
+ ldr r2, [r4, #0xc]
+ lsl r0, r0, #0xc
+ cmp r2, r0
+ ble _0223CF9E
+_0223CF8A:
+ ldr r0, [r4, #4]
+ bl FUN_0200C3DC
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #4]
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_0223CF9E:
+ ldr r0, _0223CFF4 ; =0x04000280
+ mov r3, #0
+ strh r3, [r0]
+ str r1, [r0, #0x10]
+ add r1, r0, #0
+ lsr r2, r0, #0x12
+ add r1, #0x18
+ str r2, [r1]
+ str r3, [r1, #4]
+ lsr r1, r0, #0xb
+_0223CFB2:
+ ldrh r2, [r0]
+ tst r2, r1
+ bne _0223CFB2
+ ldr r3, _0223CFF8 ; =0x040002A0
+ ldr r2, [r4, #0xc]
+ add r0, r3, #0
+ ldr r1, [r3]
+ sub r0, #0x10
+ str r2, [r0]
+ lsr r2, r3, #0x12
+ sub r3, #8
+ mov r0, #0
+ str r2, [r3]
+ str r0, [r3, #4]
+ ldr r3, _0223CFF4 ; =0x04000280
+ lsr r0, r3, #0xb
+_0223CFD2:
+ ldrh r2, [r3]
+ tst r2, r0
+ bne _0223CFD2
+ ldr r2, _0223CFF8 ; =0x040002A0
+ lsl r1, r1, #0x10
+ ldr r2, [r2]
+ mov r3, #1
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #4]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ lsl r3, r3, #0x14
+ bl FUN_0200C750
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223CFF0: .word 0xFFFEF000
+_0223CFF4: .word 0x04000280
+_0223CFF8: .word 0x040002A0
+
+ thumb_func_start MOD12_0223CFFC
+MOD12_0223CFFC: ; 0x0223CFFC
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ str r1, [sp]
+ cmp r2, #2
+ beq _0223D058
+ add r0, r1, #0
+ lsl r0, r0, #1
+ add r1, r7, r0
+ ldr r0, _0223D05C ; =0x00000ADA
+ ldrsh r0, [r1, r0]
+ cmp r0, #0
+ beq _0223D058
+ ldr r1, _0223D060 ; =0x04000280
+ mov r6, #0
+ strh r6, [r1]
+ str r0, [r1, #0x10]
+ mov r0, #2
+ add r1, #0x18
+ str r0, [r1]
+ str r6, [r1, #4]
+ cmp r3, #0
+ beq _0223D02A
+ mov r6, #1
+_0223D02A:
+ ldr r2, _0223D060 ; =0x04000280
+ lsr r0, r2, #0xb
+_0223D02E:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0223D02E
+ ldr r0, _0223D064 ; =0x040002A0
+ ldr r5, [r0]
+ cmp r5, #0x10
+ ble _0223D03E
+ mov r5, #0x10
+_0223D03E:
+ mov r4, #0
+ cmp r5, #0
+ ble _0223D058
+_0223D044:
+ ldr r1, [sp]
+ add r0, r7, #0
+ add r2, r6, #0
+ bl MOD12_0223CE30
+ cmp r0, #0
+ beq _0223D058
+ add r4, r4, #1
+ cmp r4, r5
+ blt _0223D044
+_0223D058:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223D05C: .word 0x00000ADA
+_0223D060: .word 0x04000280
+_0223D064: .word 0x040002A0
+
+ thumb_func_start MOD12_0223D068
+MOD12_0223D068: ; 0x0223D068
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0223D06C
+MOD12_0223D06C: ; 0x0223D06C
+ ldr r1, _0223D098 ; =0xFFFFFD80
+ cmp r0, r1
+ bne _0223D076
+ mov r0, #0xc0
+ bx lr
+_0223D076:
+ add r1, #0x80
+ cmp r0, r1
+ bne _0223D082
+ mov r0, #1
+ lsl r0, r0, #8
+ bx lr
+_0223D082:
+ mov r1, #0xa
+ lsl r1, r1, #6
+ add r0, r0, r1
+ lsl r1, r0, #6
+ asr r0, r1, #6
+ lsr r0, r0, #0x19
+ add r0, r1, r0
+ asr r0, r0, #7
+ add r0, #0xc0
+ bx lr
+ nop
+_0223D098: .word 0xFFFFFD80
+
+ thumb_func_start MOD12_0223D09C
+MOD12_0223D09C: ; 0x0223D09C
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0xc]
+ bl MOD12_0223D06C
+ mov r1, #1
+ lsl r1, r1, #8
+ cmp r0, r1
+ bne _0223D0B2
+ lsl r1, r1, #4
+ b _0223D0BC
+_0223D0B2:
+ lsl r1, r0, #0xc
+ asr r0, r1, #7
+ lsr r0, r0, #0x18
+ add r0, r1, r0
+ asr r1, r0, #8
+_0223D0BC:
+ mov r3, #1
+ ldr r0, [r4]
+ add r2, r1, #0
+ lsl r3, r3, #0xc
+ bl MOD05_021DD60C
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223D0CC
+MOD12_0223D0CC: ; 0x0223D0CC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #4
+_0223D0D4:
+ ldr r0, [r5, #0x48]
+ add r1, r4, #0
+ bl MOD12_0223D09C
+ add r6, r6, #1
+ add r4, #0x10
+ add r5, r5, #4
+ cmp r6, #4
+ blt _0223D0D4
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_0223D0E8
+MOD12_0223D0E8: ; 0x0223D0E8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ ldrb r0, [r2, #2]
+ str r2, [sp, #0x10]
+ cmp r0, r1
+ bne _0223D0FC
+ mov r0, #0
+ str r0, [sp, #0x14]
+ b _0223D100
+_0223D0FC:
+ mov r0, #1
+ str r0, [sp, #0x14]
+_0223D100:
+ ldr r0, [sp, #0x10]
+ mov r4, #0
+ ldrb r0, [r0, #6]
+ lsl r6, r0, #3
+ ldr r0, [sp, #0x10]
+ ldrb r1, [r0, #7]
+ ldr r0, _0223D1C0 ; =0x022461DC
+ ldrb r7, [r0, r1]
+ b _0223D156
+_0223D112:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ add r0, #0xec
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223D154
+ add r1, sp, #0x18
+ mov r3, #1
+ add r1, #2
+ add r2, sp, #0x18
+ lsl r3, r3, #0x14
+ bl FUN_0200C7F0
+ add r1, sp, #0x18
+ mov r0, #2
+ ldrsh r0, [r1, r0]
+ cmp r0, r6
+ bne _0223D154
+ mov r0, #0
+ ldrsh r0, [r1, r0]
+ cmp r0, r7
+ bne _0223D154
+ lsl r0, r4, #2
+ add r0, r5, r0
+ add r0, #0xec
+ ldr r0, [r0]
+ bl FUN_0200C5CC
+ cmp r0, #2
+ beq _0223D154
+ add sp, #0x1c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_0223D154:
+ add r4, r4, #1
+_0223D156:
+ cmp r4, #0x44
+ blt _0223D112
+ ldr r0, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ ldrb r0, [r0, #3]
+ str r0, [sp]
+ str r6, [sp, #4]
+ ldr r0, [sp, #0x10]
+ str r7, [sp, #8]
+ ldrb r0, [r0, #7]
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ ldr r1, [r5, #0x6c]
+ ldr r2, [r5, #0x70]
+ add r0, #0x14
+ bl MOD12_0223C52C
+ ldr r0, [sp, #0x10]
+ ldrb r0, [r0, #7]
+ cmp r0, #0
+ bne _0223D1BA
+ ldr r0, [sp, #0x14]
+ cmp r0, #1
+ bne _0223D1BA
+ ldr r0, [r5]
+ ldr r1, _0223D1C4 ; =0x00000123
+ ldr r2, _0223D1C8 ; =0x00000AD5
+ ldrb r0, [r0, r1]
+ add r6, #0x80
+ add r0, r5, r0
+ ldrb r3, [r0, r2]
+ ldr r0, _0223D1C0 ; =0x022461DC
+ ldrb r3, [r0, r3]
+ ldr r0, [sp, #0x10]
+ ldrb r0, [r0, #3]
+ str r0, [sp]
+ str r6, [sp, #4]
+ str r3, [sp, #8]
+ ldr r0, [r5]
+ mov r3, #2
+ ldrb r0, [r0, r1]
+ add r0, r5, r0
+ ldrb r0, [r0, r2]
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ ldr r1, [r5, #0x6c]
+ ldr r2, [r5, #0x70]
+ add r0, #0x14
+ bl MOD12_0223C52C
+_0223D1BA:
+ mov r0, #1
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223D1C0: .word 0x022461DC
+_0223D1C4: .word 0x00000123
+_0223D1C8: .word 0x00000AD5
+
+ thumb_func_start MOD12_0223D1CC
+MOD12_0223D1CC: ; 0x0223D1CC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ ldrb r1, [r4, #5]
+ add r5, r0, #0
+ ldrb r0, [r4, #2]
+ cmp r1, #3
+ bhi _0223D200
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223D1E8: ; jump table
+ .short _0223D1F0 - _0223D1E8 - 2 ; case 0
+ .short _0223D1F4 - _0223D1E8 - 2 ; case 1
+ .short _0223D1F8 - _0223D1E8 - 2 ; case 2
+ .short _0223D1FC - _0223D1E8 - 2 ; case 3
+_0223D1F0:
+ mov r2, #2
+ b _0223D202
+_0223D1F4:
+ mov r2, #2
+ b _0223D202
+_0223D1F8:
+ mov r2, #1
+ b _0223D202
+_0223D1FC:
+ mov r2, #1
+ b _0223D202
+_0223D200:
+ mov r2, #0
+_0223D202:
+ ldr r1, _0223D498 ; =0x00000ADA
+ lsl r0, r0, #1
+ add r1, r5, r1
+ add r3, r1, r0
+ str r3, [sp, #8]
+ ldrsh r3, [r1, r0]
+ add r2, r3, r2
+ strh r2, [r1, r0]
+ ldrb r0, [r4, #7]
+ cmp r0, #0
+ bne _0223D262
+ ldr r0, _0223D49C ; =0x00001BA0
+ mov r2, #0
+ add r3, r5, r0
+ add r6, r5, #0
+ sub r7, r0, #2
+_0223D222:
+ ldrb r0, [r3]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ bne _0223D250
+ mov r0, #0xa
+ mul r0, r2
+ ldrh r1, [r4]
+ ldr r2, _0223D4A0 ; =0x00001B98
+ add r0, r5, r0
+ strh r1, [r0, r2]
+ ldrh r3, [r4, #2]
+ add r1, r2, #2
+ strh r3, [r0, r1]
+ ldrh r3, [r4, #4]
+ add r1, r2, #4
+ strh r3, [r0, r1]
+ add r1, r2, #6
+ ldrh r3, [r4, #6]
+ add r2, #8
+ strh r3, [r0, r1]
+ ldrh r1, [r4, #8]
+ strh r1, [r0, r2]
+ b _0223D262
+_0223D250:
+ ldrb r1, [r4, #6]
+ ldrb r0, [r6, r7]
+ cmp r1, r0
+ beq _0223D262
+ add r2, r2, #1
+ add r3, #0xa
+ add r6, #0xa
+ cmp r2, #8
+ blt _0223D222
+_0223D262:
+ ldrb r0, [r4, #4]
+ cmp r0, #0
+ bne _0223D280
+ ldr r0, _0223D4A4 ; =0x00000AB9
+ ldrb r2, [r4, #2]
+ add r3, r5, r0
+ add r0, r0, #4
+ ldrb r1, [r3, r2]
+ add r1, r1, #1
+ strb r1, [r3, r2]
+ ldrb r1, [r4, #2]
+ add r2, r5, r0
+ ldrb r0, [r2, r1]
+ add r0, r0, #1
+ b _0223D290
+_0223D280:
+ ldrb r1, [r4, #2]
+ mov r0, #0
+ add r2, r5, r1
+ ldr r1, _0223D4A4 ; =0x00000AB9
+ strb r0, [r2, r1]
+ ldrb r2, [r4, #2]
+ add r1, r1, #4
+ add r2, r5, r2
+_0223D290:
+ strb r0, [r2, r1]
+ ldrb r0, [r4, #4]
+ cmp r0, #2
+ beq _0223D2A6
+ ldr r0, _0223D4A8 ; =0x00000AC8
+ ldrb r1, [r4, #2]
+ add r2, r5, r0
+ ldrb r0, [r2, r1]
+ add r0, r0, #1
+ strb r0, [r2, r1]
+ b _0223D2BC
+_0223D2A6:
+ ldr r0, _0223D4AC ; =0x00000AC1
+ ldrb r2, [r4, #2]
+ add r3, r5, r0
+ add r0, r0, #7
+ ldrb r1, [r3, r2]
+ add r1, r1, #1
+ strb r1, [r3, r2]
+ ldrb r1, [r4, #2]
+ mov r2, #0
+ add r1, r5, r1
+ strb r2, [r1, r0]
+_0223D2BC:
+ ldrb r0, [r4, #7]
+ cmp r0, #0
+ beq _0223D2EE
+ ldrb r0, [r4, #4]
+ cmp r0, #0
+ beq _0223D2D2
+ cmp r0, #1
+ beq _0223D2DC
+ cmp r0, #2
+ beq _0223D2E6
+ b _0223D2EE
+_0223D2D2:
+ ldr r0, _0223D4B0 ; =0x00000AC5
+ ldrb r1, [r5, r0]
+ add r1, r1, #1
+ strb r1, [r5, r0]
+ b _0223D2EE
+_0223D2DC:
+ ldr r0, _0223D4B4 ; =0x00000AC6
+ ldrb r1, [r5, r0]
+ add r1, r1, #1
+ strb r1, [r5, r0]
+ b _0223D2EE
+_0223D2E6:
+ ldr r0, _0223D4B8 ; =0x00000AC7
+ ldrb r1, [r5, r0]
+ add r1, r1, #1
+ strb r1, [r5, r0]
+_0223D2EE:
+ ldrb r0, [r4, #2]
+ str r0, [sp]
+ ldrb r0, [r4, #7]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ ldrb r3, [r4, #4]
+ ldr r1, [r5, #0x6c]
+ ldr r2, [r5, #0x70]
+ add r0, #0x14
+ bl MOD12_0223C8A0
+ ldr r2, [r5]
+ ldr r1, _0223D4BC ; =0x00000123
+ add r0, r5, #0
+ ldrb r1, [r2, r1]
+ add r2, r4, #0
+ bl MOD12_0223D0E8
+ ldrb r0, [r4, #8]
+ mov r1, #0
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ ldrsh r0, [r0, r1]
+ str r0, [sp, #4]
+ ldrb r1, [r4, #2]
+ ldrb r2, [r4, #7]
+ ldrb r3, [r4, #3]
+ add r0, r5, #0
+ bl MOD12_0223D4E8
+ ldrb r1, [r4, #2]
+ ldrb r2, [r4, #4]
+ ldrb r3, [r4, #7]
+ add r0, r5, #0
+ bl MOD12_0223CFFC
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD12_0223E788
+ ldr r1, [r5]
+ ldr r0, _0223D4BC ; =0x00000123
+ ldrb r2, [r4, #2]
+ ldrb r0, [r1, r0]
+ cmp r2, r0
+ bne _0223D36E
+ ldrb r0, [r4, #4]
+ cmp r0, #0
+ bne _0223D360
+ ldrb r1, [r4, #6]
+ add r0, r5, #0
+ mov r2, #1
+ bl MOD12_0223E9C4
+ b _0223D36E
+_0223D360:
+ cmp r0, #1
+ bne _0223D36E
+ ldrb r1, [r4, #6]
+ add r0, r5, #0
+ mov r2, #0
+ bl MOD12_0223E9C4
+_0223D36E:
+ ldrb r1, [r4, #7]
+ cmp r1, #0
+ bne _0223D3AC
+ ldrb r0, [r4, #8]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _0223D3AC
+ ldrb r1, [r4, #2]
+ ldr r0, _0223D4C0 ; =0x00000AFE
+ add r2, r5, r1
+ add r1, r0, #0
+ sub r1, #0x41
+ ldrb r3, [r5, r0]
+ ldrb r1, [r2, r1]
+ cmp r3, r1
+ bne _0223D39A
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD12_0223EA48
+ b _0223D3F2
+_0223D39A:
+ sub r0, #0x3d
+ ldrb r0, [r2, r0]
+ cmp r0, #0
+ bne _0223D3F2
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD12_0223EA48
+ b _0223D3F2
+_0223D3AC:
+ cmp r1, #0
+ beq _0223D3F2
+ ldrb r0, [r4, #8]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _0223D3F2
+ ldr r3, _0223D4B0 ; =0x00000AC5
+ add r0, r3, #2
+ ldrb r1, [r5, r0]
+ add r0, r3, #0
+ ldrb r2, [r5, r3]
+ add r0, #0x39
+ add r3, r3, #1
+ ldrb r6, [r5, r0]
+ ldrb r3, [r5, r3]
+ lsl r0, r6, #1
+ add r3, r2, r3
+ add r0, r6, r0
+ add r3, r1, r3
+ cmp r0, r3
+ bne _0223D3F2
+ cmp r2, r0
+ bne _0223D3E6
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD12_0223EA48
+ b _0223D3F2
+_0223D3E6:
+ cmp r1, #0
+ bne _0223D3F2
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD12_0223EA48
+_0223D3F2:
+ ldrb r0, [r4, #8]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _0223D404
+ ldr r0, _0223D4C4 ; =0x000006F5
+ bl FUN_020054C8
+ b _0223D40A
+_0223D404:
+ ldr r0, _0223D4C8 ; =0x000006F4
+ bl FUN_020054C8
+_0223D40A:
+ ldr r0, _0223D4CC ; =0x00000ACC
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _0223D426
+ beq _0223D492
+ ldrb r0, [r4, #7]
+ cmp r0, #0
+ beq _0223D426
+ ldr r1, [r5]
+ ldr r0, _0223D4BC ; =0x00000123
+ ldrb r2, [r4, #2]
+ ldrb r0, [r1, r0]
+ cmp r2, r0
+ bne _0223D492
+_0223D426:
+ ldrb r0, [r4, #4]
+ cmp r0, #0
+ beq _0223D438
+ cmp r0, #1
+ beq _0223D46E
+ cmp r0, #2
+ beq _0223D478
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0223D438:
+ ldrb r0, [r4, #2]
+ add r1, r5, r0
+ ldr r0, _0223D4D0 ; =0x00000ABD
+ ldrb r1, [r1, r0]
+ add r0, #0x41
+ ldrb r0, [r5, r0]
+ cmp r0, r1
+ bne _0223D454
+ mov r0, #0x6f
+ lsl r0, r0, #4
+ bl FUN_020054C8
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0223D454:
+ sub r0, r0, #1
+ cmp r0, r1
+ bne _0223D464
+ ldr r0, _0223D4D4 ; =0x000006EF
+ bl FUN_020054C8
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0223D464:
+ ldr r0, _0223D4D8 ; =0x000006EE
+ bl FUN_020054C8
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0223D46E:
+ ldr r0, _0223D4DC ; =0x000006F1
+ bl FUN_020054C8
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0223D478:
+ ldrb r0, [r4, #8]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _0223D48C
+ ldr r0, _0223D4E0 ; =0x000006F2
+ bl FUN_020054C8
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0223D48C:
+ ldr r0, _0223D4E4 ; =0x000005F6
+ bl FUN_020054C8
+_0223D492:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0223D498: .word 0x00000ADA
+_0223D49C: .word 0x00001BA0
+_0223D4A0: .word 0x00001B98
+_0223D4A4: .word 0x00000AB9
+_0223D4A8: .word 0x00000AC8
+_0223D4AC: .word 0x00000AC1
+_0223D4B0: .word 0x00000AC5
+_0223D4B4: .word 0x00000AC6
+_0223D4B8: .word 0x00000AC7
+_0223D4BC: .word 0x00000123
+_0223D4C0: .word 0x00000AFE
+_0223D4C4: .word 0x000006F5
+_0223D4C8: .word 0x000006F4
+_0223D4CC: .word 0x00000ACC
+_0223D4D0: .word 0x00000ABD
+_0223D4D4: .word 0x000006EF
+_0223D4D8: .word 0x000006EE
+_0223D4DC: .word 0x000006F1
+_0223D4E0: .word 0x000006F2
+_0223D4E4: .word 0x000005F6
+
+ thumb_func_start MOD12_0223D4E8
+MOD12_0223D4E8: ; 0x0223D4E8
+ push {r4, r5, r6, lr}
+ ldr r4, _0223D558 ; =0x00000F3C
+ add r5, r0, r4
+ mov r0, #0x4c
+ add r4, r1, #0
+ mul r4, r0
+ add r1, r5, r4
+ add r4, r1, #0
+ add r4, #0x20
+ ldrb r4, [r4]
+ sub r0, #0x4d
+ add r6, r4, #0
+ cmp r4, #0x20
+ bge _0223D514
+_0223D504:
+ ldrb r5, [r1, r6]
+ cmp r5, #0
+ bne _0223D50E
+ add r0, r6, #0
+ b _0223D514
+_0223D50E:
+ add r6, r6, #1
+ cmp r6, #0x20
+ blt _0223D504
+_0223D514:
+ mov r5, #0
+ mvn r5, r5
+ cmp r0, r5
+ bne _0223D532
+ mov r6, #0
+ cmp r4, #0
+ ble _0223D532
+_0223D522:
+ ldrb r5, [r1, r6]
+ cmp r5, #0
+ bne _0223D52C
+ add r0, r6, #0
+ b _0223D532
+_0223D52C:
+ add r6, r6, #1
+ cmp r6, r4
+ blt _0223D522
+_0223D532:
+ mov r4, #0
+ mvn r4, r4
+ cmp r0, r4
+ bne _0223D540
+ bl ErrorHandling
+ pop {r4, r5, r6, pc}
+_0223D540:
+ strb r3, [r1, r0]
+ add r0, r1, #0
+ add r0, #0x21
+ strb r2, [r0]
+ add r0, r1, #0
+ ldr r2, [sp, #0x10]
+ add r0, #0x22
+ strb r2, [r0]
+ ldr r0, [sp, #0x14]
+ add r1, #0x23
+ strb r0, [r1]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223D558: .word 0x00000F3C
+
+ thumb_func_start MOD12_0223D55C
+MOD12_0223D55C: ; 0x0223D55C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _0223D570 ; =MOD12_0223D5B0
+ ldr r2, _0223D574 ; =0x00009862
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #8]
+ pop {r4, pc}
+ nop
+_0223D570: .word MOD12_0223D5B0
+_0223D574: .word 0x00009862
+
+ thumb_func_start MOD12_0223D578
+MOD12_0223D578: ; 0x0223D578
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #8]
+ pop {r4, pc}
+
+ thumb_func_start MOD12_0223D588
+MOD12_0223D588: ; 0x0223D588
+ ldr r1, _0223D5AC ; =0x00000F3C
+ mov r2, #0
+ add r1, r0, r1
+_0223D58E:
+ add r0, r1, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _0223D59E
+ mov r0, #0
+ bx lr
+_0223D59E:
+ add r2, r2, #1
+ add r1, #0x4c
+ cmp r2, #4
+ blt _0223D58E
+ mov r0, #1
+ bx lr
+ nop
+_0223D5AC: .word 0x00000F3C
+
+ thumb_func_start MOD12_0223D5B0
+MOD12_0223D5B0: ; 0x0223D5B0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r1, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp, #0x18]
+ ldr r1, _0223D76C ; =0x00000F3C
+ ldr r0, [sp, #0x10]
+ ldr r6, [sp, #0x10]
+ add r4, r0, r1
+ mov r1, #0x85
+ lsl r1, r1, #2
+ add r0, r0, r1
+ ldr r5, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r6, #0x18
+_0223D5CE:
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ mov r7, #0
+ ldrb r0, [r4, r0]
+ str r0, [sp, #0x1c]
+ cmp r0, #0
+ bne _0223D5E0
+ b _0223D750
+_0223D5E0:
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x18]
+ mov r2, #4
+ bl MOD12_0223DCE8
+ ldr r1, [sp, #0x10]
+ ldr r0, _0223D770 ; =0x00000AE8
+ ldr r0, [r1, r0]
+ ldr r1, _0223D774 ; =0x00002710
+ bl _u32_div_f
+ ldr r1, [sp, #0x1c]
+ cmp r1, #4
+ bls _0223D5FE
+ b _0223D708
+_0223D5FE:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223D60A: ; jump table
+ .short _0223D708 - _0223D60A - 2 ; case 0
+ .short _0223D614 - _0223D60A - 2 ; case 1
+ .short _0223D67E - _0223D60A - 2 ; case 2
+ .short _0223D6AC - _0223D60A - 2 ; case 3
+ .short _0223D6DA - _0223D60A - 2 ; case 4
+_0223D614:
+ ldr r2, [sp, #0x10]
+ ldr r1, [sp, #0x18]
+ add r2, r2, r1
+ ldr r1, _0223D778 ; =0x00000AB4
+ ldrb r1, [r2, r1]
+ cmp r1, #1
+ bne _0223D650
+ add r1, r4, #0
+ add r1, #0x22
+ ldrb r1, [r1]
+ add r3, r4, #0
+ sub r0, r0, #1
+ str r1, [sp]
+ add r1, r4, #0
+ add r1, #0x23
+ ldrb r1, [r1]
+ add r3, #0x21
+ add r2, r6, #0
+ str r1, [sp, #4]
+ ldr r1, [sp, #0x14]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ ldrb r3, [r3]
+ ldr r1, [r5, #0x5c]
+ add r0, #0x24
+ bl MOD12_0223D77C
+ add r7, r0, #0
+ b _0223D70C
+_0223D650:
+ add r1, r4, #0
+ add r1, #0x22
+ ldrb r1, [r1]
+ add r3, r4, #0
+ sub r0, r0, #1
+ str r1, [sp]
+ add r1, r4, #0
+ add r1, #0x23
+ ldrb r1, [r1]
+ add r3, #0x21
+ add r2, r6, #0
+ str r1, [sp, #4]
+ add r1, r7, #0
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ ldrb r3, [r3]
+ ldr r1, [r5, #0x5c]
+ add r0, #0x24
+ bl MOD12_0223D890
+ add r7, r0, #0
+ b _0223D70C
+_0223D67E:
+ add r1, r4, #0
+ add r1, #0x22
+ ldrb r1, [r1]
+ add r3, r4, #0
+ sub r0, r0, #1
+ str r1, [sp]
+ add r1, r4, #0
+ add r1, #0x23
+ ldrb r1, [r1]
+ add r3, #0x21
+ add r2, r6, #0
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ ldrb r3, [r3]
+ ldr r1, [r5, #0x5c]
+ add r0, #0x24
+ bl MOD12_0223D890
+ add r7, r0, #0
+ b _0223D70C
+_0223D6AC:
+ add r1, r4, #0
+ add r1, #0x22
+ ldrb r1, [r1]
+ add r3, r4, #0
+ sub r0, r0, #1
+ str r1, [sp]
+ add r1, r4, #0
+ add r1, #0x23
+ ldrb r1, [r1]
+ add r3, #0x21
+ add r2, r6, #0
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ ldrb r3, [r3]
+ ldr r1, [r5, #0x5c]
+ add r0, #0x24
+ bl MOD12_0223DA10
+ add r7, r0, #0
+ b _0223D70C
+_0223D6DA:
+ add r1, r4, #0
+ add r1, #0x22
+ ldrb r1, [r1]
+ add r3, r4, #0
+ sub r0, r0, #1
+ str r1, [sp]
+ add r1, r4, #0
+ add r1, #0x23
+ ldrb r1, [r1]
+ add r3, #0x21
+ add r2, r6, #0
+ str r1, [sp, #4]
+ add r1, r7, #0
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ ldrb r3, [r3]
+ ldr r1, [r5, #0x5c]
+ add r0, #0x24
+ bl MOD12_0223DA10
+ add r7, r0, #0
+ b _0223D70C
+_0223D708:
+ bl ErrorHandling
+_0223D70C:
+ cmp r7, #1
+ bne _0223D750
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r1, [r0]
+ mov r0, #0
+ strb r0, [r4, r1]
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x20
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #0x20
+ blo _0223D73A
+ add r1, r4, #0
+ add r1, #0x20
+ mov r0, #0
+ strb r0, [r1]
+_0223D73A:
+ add r0, r4, #0
+ add r0, #0x24
+ mov r1, #0
+ mov r2, #0x28
+ bl MI_CpuFill8
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x18]
+ mov r2, #3
+ bl MOD12_0223DCE8
+_0223D750:
+ ldr r0, [sp, #0x14]
+ add r4, #0x4c
+ add r0, #0x18
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r6, #0x10
+ add r0, r0, #1
+ add r5, r5, #4
+ str r0, [sp, #0x18]
+ cmp r0, #4
+ bge _0223D768
+ b _0223D5CE
+_0223D768:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223D76C: .word 0x00000F3C
+_0223D770: .word 0x00000AE8
+_0223D774: .word 0x00002710
+_0223D778: .word 0x00000AB4
+
+ thumb_func_start MOD12_0223D77C
+MOD12_0223D77C: ; 0x0223D77C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp, #4]
+ ldrb r0, [r5, #0x10]
+ add r4, r2, #0
+ add r6, r3, #0
+ cmp r0, #0
+ beq _0223D796
+ cmp r0, #1
+ beq _0223D7E4
+ b _0223D818
+_0223D796:
+ ldr r0, [r4, #4]
+ ldr r1, [sp, #0x2c]
+ lsl r0, r0, #8
+ str r0, [r5]
+ ldr r0, [r4, #8]
+ lsr r1, r1, #1
+ lsl r0, r0, #8
+ str r0, [r5, #4]
+ ldr r0, [r5]
+ str r0, [r5, #8]
+ ldr r0, [r5, #4]
+ str r0, [r5, #0xc]
+ mov r0, #5
+ lsl r0, r0, #8
+ bl _u32_div_f
+ ldr r1, [sp, #0x20]
+ cmp r1, #1
+ bne _0223D7CE
+ ldr r1, _0223D888 ; =0xFFFFF600
+ strh r1, [r5, #0x14]
+ mov r1, #0xc8
+ mul r1, r0
+ add r0, r1, #0
+ mov r1, #0x64
+ bl _s32_div_f
+ b _0223D7D2
+_0223D7CE:
+ ldr r1, _0223D88C ; =0xFFFFFB00
+ strh r1, [r5, #0x14]
+_0223D7D2:
+ strh r0, [r5, #0x16]
+ ldr r0, [sp, #0x28]
+ mov r1, #1
+ mov r2, #0
+ bl MOD12_0223CD38
+ ldrb r0, [r5, #0x10]
+ add r0, r0, #1
+ strb r0, [r5, #0x10]
+_0223D7E4:
+ mov r0, #0x14
+ ldrsh r1, [r5, r0]
+ ldr r2, [r5, #0xc]
+ add r1, r2, r1
+ str r1, [r5, #0xc]
+ ldrsh r1, [r5, r0]
+ mov r0, #0x16
+ ldrsh r0, [r5, r0]
+ add r0, r1, r0
+ strh r0, [r5, #0x14]
+ ldr r1, [r5, #4]
+ ldr r0, [r5, #0xc]
+ cmp r0, r1
+ blt _0223D81E
+ str r1, [r5, #0xc]
+ mov r1, #1
+ ldr r0, [sp, #0x28]
+ add r2, r1, #0
+ bl MOD12_0223CD38
+ mov r0, #1
+ str r0, [sp, #4]
+ ldrb r0, [r5, #0x10]
+ add r0, r0, #1
+ strb r0, [r5, #0x10]
+ b _0223D81E
+_0223D818:
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0223D81E:
+ cmp r6, #0
+ bne _0223D826
+ mov r6, #0x64
+ b _0223D828
+_0223D826:
+ mov r6, #0x28
+_0223D828:
+ ldr r0, [sp, #0x24]
+ lsl r1, r0, #9
+ mov r0, #0x19
+ lsl r0, r0, #0xa
+ cmp r1, r0
+ ble _0223D836
+ add r1, r0, #0
+_0223D836:
+ asr r0, r1, #8
+ add r6, r6, r0
+ ldr r0, [r5]
+ ldr r1, [r5, #8]
+ str r0, [sp]
+ sub r1, r1, r0
+ ldr r7, [r5, #4]
+ ldr r0, [r5, #0xc]
+ sub r5, r0, r7
+ add r0, r1, #0
+ mul r0, r6
+ mov r1, #0x64
+ bl _s32_div_f
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mul r0, r6
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r2, [sp]
+ ldr r1, [sp, #8]
+ add r2, r2, r1
+ asr r1, r2, #7
+ lsr r1, r1, #0x18
+ add r1, r2, r1
+ asr r1, r1, #8
+ str r1, [r4, #4]
+ add r1, r7, r0
+ asr r0, r1, #7
+ lsr r0, r0, #0x18
+ add r0, r1, r0
+ asr r2, r0, #8
+ str r2, [r4, #8]
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ bl MOD17_021DD620
+ ldr r0, [sp, #4]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223D888: .word 0xFFFFF600
+_0223D88C: .word 0xFFFFFB00
+
+ thumb_func_start MOD12_0223D890
+MOD12_0223D890: ; 0x0223D890
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrb r0, [r4, #0x10]
+ add r6, r2, #0
+ str r3, [sp]
+ ldr r5, [sp, #0x30]
+ cmp r0, #0
+ beq _0223D8B0
+ cmp r0, #1
+ beq _0223D908
+ cmp r0, #2
+ beq _0223D95A
+ b _0223D99E
+_0223D8B0:
+ ldr r0, [r6, #4]
+ ldr r1, [sp, #0x34]
+ lsl r0, r0, #8
+ str r0, [r4]
+ ldr r0, [r6, #8]
+ lsl r0, r0, #8
+ str r0, [r4, #4]
+ ldr r0, [r4]
+ str r0, [r4, #8]
+ ldr r0, [r4, #4]
+ str r0, [r4, #0xc]
+ mov r0, #0x1e
+ mul r0, r1
+ mov r1, #0x64
+ bl _u32_div_f
+ add r7, r0, #0
+ mov r0, #1
+ lsl r0, r0, #0xc
+ add r1, r7, #0
+ bl _s32_div_f
+ ldr r1, [sp, #0x34]
+ str r0, [r4, #0x14]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ sub r1, r1, r7
+ bl _s32_div_f
+ str r0, [r4, #0x18]
+ cmp r5, #0
+ bne _0223D902
+ ldr r1, [r4, #0x14]
+ mov r0, #0
+ mvn r0, r0
+ add r2, r1, #0
+ mul r2, r0
+ str r2, [r4, #0x14]
+ ldr r1, [r4, #0x18]
+ mul r0, r1
+ str r0, [r4, #0x18]
+_0223D902:
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_0223D908:
+ ldr r0, [sp, #0x28]
+ cmp r0, #1
+ bne _0223D924
+ ldr r1, [r4, #0x14]
+ mov r0, #0xc8
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r1, [r4, #0xc]
+ add r0, r1, r0
+ str r0, [r4, #0xc]
+ mov r0, #0x20
+ b _0223D92E
+_0223D924:
+ ldr r1, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ add r0, r1, r0
+ str r0, [r4, #0xc]
+ mov r0, #0x10
+_0223D92E:
+ lsl r0, r0, #8
+ str r0, [sp, #8]
+ ldr r7, [r4, #4]
+ ldr r0, [r4, #0xc]
+ sub r0, r0, r7
+ bl abs
+ ldr r1, [sp, #8]
+ cmp r0, r1
+ blt _0223D9A4
+ cmp r5, #1
+ bne _0223D94C
+ add r0, r1, #0
+ add r0, r7, r0
+ b _0223D950
+_0223D94C:
+ add r0, r1, #0
+ sub r0, r7, r0
+_0223D950:
+ str r0, [r4, #0xc]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ b _0223D9A4
+_0223D95A:
+ ldr r0, [sp, #0x28]
+ cmp r0, #1
+ bne _0223D970
+ ldr r1, [r4, #0x18]
+ mov r0, #0xc8
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r1, [r4, #0xc]
+ b _0223D974
+_0223D970:
+ ldr r1, [r4, #0xc]
+ ldr r0, [r4, #0x18]
+_0223D974:
+ sub r0, r1, r0
+ str r0, [r4, #0xc]
+ cmp r5, #1
+ bne _0223D984
+ ldr r1, [r4, #4]
+ ldr r0, [r4, #0xc]
+ cmp r0, r1
+ ble _0223D990
+_0223D984:
+ cmp r5, #0
+ bne _0223D9A4
+ ldr r1, [r4, #4]
+ ldr r0, [r4, #0xc]
+ cmp r0, r1
+ blt _0223D9A4
+_0223D990:
+ str r1, [r4, #0xc]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ b _0223D9A4
+_0223D99E:
+ add sp, #0x14
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0223D9A4:
+ ldr r0, [sp]
+ cmp r0, #0
+ bne _0223D9AE
+ mov r5, #0x64
+ b _0223D9B0
+_0223D9AE:
+ mov r5, #0x28
+_0223D9B0:
+ ldr r0, [sp, #0x2c]
+ lsl r1, r0, #9
+ mov r0, #0x19
+ lsl r0, r0, #0xa
+ cmp r1, r0
+ ble _0223D9BE
+ add r1, r0, #0
+_0223D9BE:
+ asr r0, r1, #8
+ add r5, r5, r0
+ ldr r0, [r4]
+ ldr r1, [r4, #8]
+ str r0, [sp, #4]
+ sub r1, r1, r0
+ ldr r7, [r4, #4]
+ ldr r0, [r4, #0xc]
+ sub r4, r0, r7
+ add r0, r1, #0
+ mul r0, r5
+ mov r1, #0x64
+ bl _s32_div_f
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ mul r0, r5
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r2, [sp, #4]
+ ldr r1, [sp, #0x10]
+ add r2, r2, r1
+ asr r1, r2, #7
+ lsr r1, r1, #0x18
+ add r1, r2, r1
+ asr r1, r1, #8
+ str r1, [r6, #4]
+ add r1, r7, r0
+ asr r0, r1, #7
+ lsr r0, r0, #0x18
+ add r0, r1, r0
+ asr r2, r0, #8
+ str r2, [r6, #8]
+ ldr r0, [r6]
+ ldr r1, [r6, #4]
+ bl MOD17_021DD620
+ ldr r0, [sp, #0xc]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_0223DA10
+MOD12_0223DA10: ; 0x0223DA10
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldrb r0, [r5, #0x10]
+ add r4, r2, #0
+ str r3, [sp]
+ ldr r6, [sp, #0x38]
+ cmp r0, #0
+ beq _0223DA30
+ cmp r0, #1
+ beq _0223DAB0
+ cmp r0, #2
+ beq _0223DB22
+ b _0223DB84
+_0223DA30:
+ ldr r0, [r4, #4]
+ ldr r1, [sp, #0x3c]
+ lsl r0, r0, #8
+ str r0, [r5]
+ ldr r0, [r4, #8]
+ lsl r0, r0, #8
+ str r0, [r5, #4]
+ ldr r0, [r5]
+ str r0, [r5, #8]
+ ldr r0, [r5, #4]
+ str r0, [r5, #0xc]
+ mov r0, #0x1e
+ mul r0, r1
+ mov r1, #0x64
+ bl _u32_div_f
+ ldr r1, [sp, #0x3c]
+ str r0, [sp, #0x14]
+ sub r7, r1, r0
+ ldr r0, _0223DC04 ; =0x00038E00
+ ldr r1, [sp, #0x14]
+ bl _s32_div_f
+ str r0, [r5, #0x18]
+ ldr r0, _0223DC08 ; =0xFFFC7200
+ add r1, r7, #0
+ bl _s32_div_f
+ str r0, [r5, #0x1c]
+ mov r0, #1
+ ldr r1, [sp, #0x14]
+ lsl r0, r0, #0xc
+ bl _s32_div_f
+ str r0, [r5, #0x20]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ add r1, r7, #0
+ bl _s32_div_f
+ neg r0, r0
+ str r0, [r5, #0x24]
+ cmp r6, #1
+ bne _0223DAAA
+ ldr r1, [r5, #0x18]
+ mov r0, #0
+ mvn r0, r0
+ add r2, r1, #0
+ mul r2, r0
+ str r2, [r5, #0x18]
+ ldr r1, [r5, #0x1c]
+ add r2, r1, #0
+ mul r2, r0
+ str r2, [r5, #0x1c]
+ ldr r1, [r5, #0x20]
+ add r2, r1, #0
+ mul r2, r0
+ str r2, [r5, #0x20]
+ ldr r1, [r5, #0x24]
+ mul r0, r1
+ str r0, [r5, #0x24]
+_0223DAAA:
+ ldrb r0, [r5, #0x10]
+ add r0, r0, #1
+ strb r0, [r5, #0x10]
+_0223DAB0:
+ ldr r0, [sp, #0x30]
+ cmp r0, #1
+ bne _0223DADC
+ ldr r1, [r5, #0x20]
+ mov r0, #0xc8
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r1, [r5, #8]
+ add r0, r1, r0
+ str r0, [r5, #8]
+ mov r0, #0x20
+ str r0, [sp, #0xc]
+ ldr r1, [r5, #0x18]
+ mov r0, #0xc8
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r1, [r5, #0x14]
+ b _0223DAEC
+_0223DADC:
+ ldr r1, [r5, #8]
+ ldr r0, [r5, #0x20]
+ add r0, r1, r0
+ str r0, [r5, #8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r1, [r5, #0x14]
+ ldr r0, [r5, #0x18]
+_0223DAEC:
+ add r0, r1, r0
+ str r0, [r5, #0x14]
+ ldr r0, [sp, #0xc]
+ ldr r7, [r5]
+ lsl r0, r0, #8
+ str r0, [sp, #8]
+ ldr r0, [r5, #8]
+ sub r0, r0, r7
+ bl abs
+ ldr r1, [sp, #8]
+ cmp r0, r1
+ blt _0223DB8A
+ cmp r6, #1
+ bne _0223DB10
+ add r0, r1, #0
+ sub r0, r7, r0
+ b _0223DB14
+_0223DB10:
+ add r0, r1, #0
+ add r0, r7, r0
+_0223DB14:
+ str r0, [r5, #8]
+ ldr r0, [r5, #4]
+ str r0, [r5, #0xc]
+ ldrb r0, [r5, #0x10]
+ add r0, r0, #1
+ strb r0, [r5, #0x10]
+ b _0223DB8A
+_0223DB22:
+ ldr r0, [sp, #0x30]
+ cmp r0, #1
+ bne _0223DB4A
+ ldr r1, [r5, #0x24]
+ mov r0, #0xc8
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r1, [r5, #8]
+ add r0, r1, r0
+ str r0, [r5, #8]
+ ldr r1, [r5, #0x1c]
+ mov r0, #0xc8
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r1, [r5, #0x14]
+ b _0223DB56
+_0223DB4A:
+ ldr r1, [r5, #8]
+ ldr r0, [r5, #0x24]
+ add r0, r1, r0
+ str r0, [r5, #8]
+ ldr r1, [r5, #0x14]
+ ldr r0, [r5, #0x1c]
+_0223DB56:
+ add r0, r1, r0
+ str r0, [r5, #0x14]
+ cmp r6, #1
+ bne _0223DB66
+ ldr r1, [r5]
+ ldr r0, [r5, #8]
+ cmp r0, r1
+ bge _0223DB72
+_0223DB66:
+ cmp r6, #0
+ bne _0223DB8A
+ ldr r1, [r5]
+ ldr r0, [r5, #8]
+ cmp r0, r1
+ bgt _0223DB8A
+_0223DB72:
+ str r1, [r5, #8]
+ mov r0, #0
+ str r0, [r5, #0x14]
+ ldrb r0, [r5, #0x10]
+ add r0, r0, #1
+ strb r0, [r5, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ b _0223DB8A
+_0223DB84:
+ add sp, #0x1c
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0223DB8A:
+ ldr r1, [r5, #0x14]
+ ldr r0, [r4]
+ lsl r1, r1, #8
+ lsr r1, r1, #0x10
+ bl MOD17_021DD604
+ ldr r0, [sp]
+ cmp r0, #0
+ bne _0223DBA0
+ mov r6, #0x64
+ b _0223DBA2
+_0223DBA0:
+ mov r6, #0x28
+_0223DBA2:
+ ldr r0, [sp, #0x34]
+ lsl r1, r0, #9
+ mov r0, #0x19
+ lsl r0, r0, #0xa
+ cmp r1, r0
+ ble _0223DBB0
+ add r1, r0, #0
+_0223DBB0:
+ asr r0, r1, #8
+ add r6, r6, r0
+ ldr r0, [r5]
+ ldr r1, [r5, #8]
+ str r0, [sp, #4]
+ sub r1, r1, r0
+ ldr r7, [r5, #4]
+ ldr r0, [r5, #0xc]
+ sub r5, r0, r7
+ add r0, r1, #0
+ mul r0, r6
+ mov r1, #0x64
+ bl _s32_div_f
+ str r0, [sp, #0x18]
+ add r0, r5, #0
+ mul r0, r6
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r2, [sp, #4]
+ ldr r1, [sp, #0x18]
+ add r2, r2, r1
+ asr r1, r2, #7
+ lsr r1, r1, #0x18
+ add r1, r2, r1
+ asr r1, r1, #8
+ str r1, [r4, #4]
+ add r1, r7, r0
+ asr r0, r1, #7
+ lsr r0, r0, #0x18
+ add r0, r1, r0
+ asr r2, r0, #8
+ str r2, [r4, #8]
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ bl MOD17_021DD620
+ ldr r0, [sp, #0x10]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0223DC04: .word 0x00038E00
+_0223DC08: .word 0xFFFC7200
+
+ thumb_func_start MOD12_0223DC0C
+MOD12_0223DC0C: ; 0x0223DC0C
+ ldr r1, _0223DC24 ; =0x00001BA0
+ mov r2, #0
+ add r3, r0, r1
+ mov r0, #4
+_0223DC14:
+ ldrb r1, [r3]
+ add r2, r2, #1
+ bic r1, r0
+ strb r1, [r3]
+ add r3, #0xa
+ cmp r2, #8
+ blt _0223DC14
+ bx lr
+ .align 2, 0
+_0223DC24: .word 0x00001BA0
+
+ thumb_func_start MOD12_0223DC28
+MOD12_0223DC28: ; 0x0223DC28
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _0223DCAC ; =0x00001070
+ add r6, r1, #0
+ add r7, r5, r0
+ mov r0, #0x28
+ mul r0, r6
+ str r0, [sp, #4]
+ ldr r0, [r7, r0]
+ str r2, [sp]
+ cmp r0, #0
+ beq _0223DC46
+ bl ErrorHandling
+_0223DC46:
+ ldr r0, _0223DCB0 ; =0x0000106C
+ mov r2, #0x28
+ add r4, r6, #0
+ add r0, r5, r0
+ mul r4, r2
+ str r0, [sp, #8]
+ add r0, r0, r4
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r0, [sp, #8]
+ ldr r2, _0223DCB4 ; =0x00001086
+ str r5, [r0, r4]
+ add r3, r5, r4
+ ldr r0, [sp]
+ strb r6, [r3, r2]
+ sub r1, r2, #1
+ strb r0, [r3, r1]
+ lsl r0, r6, #2
+ add r0, r5, r0
+ add r1, r2, #0
+ ldr r0, [r0, #0x5c]
+ sub r1, #0x12
+ str r0, [r3, r1]
+ add r0, r5, #0
+ add r0, #0x18
+ lsl r1, r6, #4
+ add r1, r0, r1
+ add r0, r2, #0
+ sub r0, #0xe
+ str r1, [r3, r0]
+ add r2, #0xa
+ add r0, r5, r2
+ ldrb r2, [r0, r4]
+ mov r1, #4
+ orr r1, r2
+ strb r1, [r0, r4]
+ ldrb r2, [r0, r4]
+ mov r1, #8
+ orr r1, r2
+ strb r1, [r0, r4]
+ ldr r1, [sp, #8]
+ ldr r0, _0223DCB8 ; =MOD12_0223DE10
+ ldr r2, _0223DCBC ; =0x00009858
+ add r1, r1, r4
+ bl FUN_0200CA44
+ ldr r1, [sp, #4]
+ str r0, [r7, r1]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223DCAC: .word 0x00001070
+_0223DCB0: .word 0x0000106C
+_0223DCB4: .word 0x00001086
+_0223DCB8: .word MOD12_0223DE10
+_0223DCBC: .word 0x00009858
+
+ thumb_func_start MOD12_0223DCC0
+MOD12_0223DCC0: ; 0x0223DCC0
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ ldr r7, _0223DCE4 ; =0x00001070
+ add r5, r0, #0
+ add r6, r4, #0
+_0223DCCA:
+ ldr r0, [r5, r7]
+ cmp r0, #0
+ beq _0223DCD8
+ bl FUN_0200CAB4
+ ldr r0, _0223DCE4 ; =0x00001070
+ str r6, [r5, r0]
+_0223DCD8:
+ add r4, r4, #1
+ add r5, #0x28
+ cmp r4, #4
+ blt _0223DCCA
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223DCE4: .word 0x00001070
+
+ thumb_func_start MOD12_0223DCE8
+MOD12_0223DCE8: ; 0x0223DCE8
+ push {r3, r4, r5, lr}
+ mov r3, #0x28
+ mul r3, r1
+ ldr r1, _0223DDAC ; =0x00001070
+ add r4, r0, r3
+ ldr r5, [r4, r1]
+ cmp r5, #0
+ beq _0223DDA8
+ cmp r2, #5
+ bhi _0223DDA4
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0223DD08: ; jump table
+ .short _0223DD14 - _0223DD08 - 2 ; case 0
+ .short _0223DD2A - _0223DD08 - 2 ; case 1
+ .short _0223DD38 - _0223DD08 - 2 ; case 2
+ .short _0223DD46 - _0223DD08 - 2 ; case 3
+ .short _0223DD64 - _0223DD08 - 2 ; case 4
+ .short _0223DD92 - _0223DD08 - 2 ; case 5
+_0223DD14:
+ add r1, #0x20
+ add r2, r0, r1
+ ldrb r1, [r2, r3]
+ mov r0, #0x20
+ bic r1, r0
+ strb r1, [r2, r3]
+ ldrb r1, [r2, r3]
+ mov r0, #0x10
+ bic r1, r0
+ strb r1, [r2, r3]
+ pop {r3, r4, r5, pc}
+_0223DD2A:
+ add r1, #0x20
+ add r2, r0, r1
+ ldrb r1, [r2, r3]
+ mov r0, #0x20
+ orr r0, r1
+ strb r0, [r2, r3]
+ pop {r3, r4, r5, pc}
+_0223DD38:
+ add r1, #0x20
+ add r2, r0, r1
+ ldrb r1, [r2, r3]
+ mov r0, #0x10
+ orr r0, r1
+ strb r0, [r2, r3]
+ pop {r3, r4, r5, pc}
+_0223DD46:
+ add r1, #0x20
+ add r0, r0, r1
+ ldrb r2, [r0, r3]
+ mov r1, #2
+ bic r2, r1
+ strb r2, [r0, r3]
+ ldrb r2, [r0, r3]
+ mov r1, #1
+ bic r2, r1
+ strb r2, [r0, r3]
+ ldrb r2, [r0, r3]
+ mov r1, #4
+ orr r1, r2
+ strb r1, [r0, r3]
+ pop {r3, r4, r5, pc}
+_0223DD64:
+ add r2, r1, #0
+ add r2, #0x20
+ ldrb r2, [r4, r2]
+ lsl r2, r2, #0x1e
+ lsr r2, r2, #0x1f
+ bne _0223DDA8
+ add r2, r1, #0
+ add r2, #0x20
+ add r5, r0, r2
+ ldrb r2, [r5, r3]
+ mov r0, #2
+ orr r0, r2
+ strb r0, [r5, r3]
+ ldrb r0, [r5, r3]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ bne _0223DDA8
+ add r0, r1, #0
+ add r0, #0x10
+ ldr r0, [r4, r0]
+ add r1, #0x1c
+ str r0, [r4, r1]
+ pop {r3, r4, r5, pc}
+_0223DD92:
+ add r1, #0x20
+ add r2, r0, r1
+ ldrb r1, [r2, r3]
+ mov r0, #1
+ bic r1, r0
+ mov r0, #1
+ orr r0, r1
+ strb r0, [r2, r3]
+ pop {r3, r4, r5, pc}
+_0223DDA4:
+ bl ErrorHandling
+_0223DDA8:
+ pop {r3, r4, r5, pc}
+ nop
+_0223DDAC: .word 0x00001070
+
+ thumb_func_start MOD12_0223DDB0
+MOD12_0223DDB0: ; 0x0223DDB0
+ mov r2, #0x28
+ mul r2, r1
+ ldr r1, _0223DDE0 ; =0x00001070
+ add r2, r0, r2
+ ldr r0, [r2, r1]
+ cmp r0, #0
+ bne _0223DDC2
+ mov r0, #1
+ bx lr
+_0223DDC2:
+ add r0, r1, #0
+ add r0, #0x20
+ ldrb r0, [r2, r0]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ beq _0223DDD8
+ add r1, #0x15
+ ldrb r0, [r2, r1]
+ cmp r0, #0
+ bne _0223DDDC
+_0223DDD8:
+ mov r0, #1
+ bx lr
+_0223DDDC:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0223DDE0: .word 0x00001070
+
+ thumb_func_start MOD12_0223DDE4
+MOD12_0223DDE4: ; 0x0223DDE4
+ mov r2, #0x28
+ mul r2, r1
+ add r2, r0, r2
+ ldr r0, _0223DE0C ; =0x00001070
+ ldr r1, [r2, r0]
+ cmp r1, #0
+ bne _0223DDF6
+ mov r0, #1
+ bx lr
+_0223DDF6:
+ add r0, #0x20
+ ldrb r0, [r2, r0]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _0223DE06
+ mov r0, #1
+ bx lr
+_0223DE06:
+ mov r0, #0
+ bx lr
+ nop
+_0223DE0C: .word 0x00001070
+
+ thumb_func_start MOD12_0223DE10
+MOD12_0223DE10: ; 0x0223DE10
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD12_0223DE24
+ add r0, r4, #0
+ bl MOD12_0223DF18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223DE24
+MOD12_0223DE24: ; 0x0223DE24
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r0, #0x24
+ ldrb r0, [r0]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ beq _0223DF00
+ ldrb r0, [r4, #0x19]
+ cmp r0, #0
+ beq _0223DF00
+ ldr r5, [r4]
+ ldr r1, _0223DF04 ; =0x00001138
+ ldr r2, _0223DF08 ; =0x00002710
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r3, #0
+ bl _ll_mul
+ ldr r2, _0223DF0C ; =0x00000AE8
+ mov r3, #0
+ ldr r7, [r5, r2]
+ add r2, r7, #0
+ bl _ull_mod
+ add r5, r0, #0
+ add r6, r1, #0
+ lsr r7, r7, #1
+ lsr r0, r5, #0x13
+ lsl r1, r6, #0xd
+ orr r1, r0
+ lsl r0, r5, #0xd
+ add r2, r7, #0
+ mov r3, #0
+ bl _ll_udiv
+ add r2, r1, #0
+ mov r1, #1
+ sub r3, r5, r7
+ ldr r3, _0223DF10 ; =0x00000000
+ sbc r6, r3
+ blo _0223DE80
+ lsl r3, r1, #0xe
+ mov r1, #0
+ sub r0, r3, r0
+_0223DE80:
+ add r2, r4, #0
+ add r2, #0x24
+ ldrb r2, [r2]
+ ldr r3, _0223DF14 ; =0xFFFD8000
+ mov r5, #0x40
+ add r0, r0, r3
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ add r0, #0x24
+ ldrb r0, [r0]
+ lsl r2, r2, #0x19
+ lsr r2, r2, #0x1f
+ bic r0, r5
+ lsl r5, r1, #0x18
+ lsr r5, r5, #0x18
+ lsl r5, r5, #0x1f
+ lsr r5, r5, #0x19
+ orr r5, r0
+ add r0, r4, #0
+ add r0, #0x24
+ strb r5, [r0]
+ add r0, r4, #0
+ add r0, #0x24
+ ldrb r0, [r0]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _0223DEEA
+ ldr r0, [r4, #0x10]
+ cmp r0, r3
+ beq _0223DEC6
+ cmp r2, #0
+ bne _0223DEEA
+ cmp r1, #1
+ bne _0223DEEA
+_0223DEC6:
+ ldr r0, _0223DF14 ; =0xFFFD8000
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ add r0, #0x24
+ ldrb r1, [r0]
+ mov r0, #0x10
+ bic r1, r0
+ add r0, r4, #0
+ add r0, #0x24
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x24
+ ldrb r1, [r0]
+ mov r0, #0x20
+ orr r1, r0
+ add r0, r4, #0
+ add r0, #0x24
+ strb r1, [r0]
+_0223DEEA:
+ ldr r1, [r4, #0x10]
+ asr r0, r1, #7
+ lsr r0, r0, #0x18
+ add r0, r1, r0
+ asr r1, r0, #8
+ ldr r0, [r4, #0xc]
+ str r1, [r0, #0xc]
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ bl MOD12_0223D09C
+_0223DF00:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223DF04: .word 0x00001138
+_0223DF08: .word 0x00002710
+_0223DF0C: .word 0x00000AE8
+_0223DF10: .word 0x00000000
+_0223DF14: .word 0xFFFD8000
+
+ thumb_func_start MOD12_0223DF18
+MOD12_0223DF18: ; 0x0223DF18
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r2, [r4]
+ ldr r1, _0223E058 ; =0x00001138
+ mov r3, #0
+ ldr r0, [r2, r1]
+ add r1, r1, #4
+ ldr r1, [r2, r1]
+ ldr r2, _0223E05C ; =0x00002710
+ ldr r5, [r4, #0x14]
+ bl _ll_mul
+ ldr r3, [r4]
+ ldr r2, _0223E060 ; =0x00000AE8
+ ldr r2, [r3, r2]
+ mov r3, #0
+ lsl r2, r2, #1
+ bl _ull_mod
+ mov r2, #0x5a
+ lsl r2, r2, #2
+ mov r3, #0
+ bl _ll_mul
+ ldr r3, [r4]
+ ldr r2, _0223E060 ; =0x00000AE8
+ ldr r2, [r3, r2]
+ mov r3, #0
+ lsl r2, r2, #1
+ bl _ll_udiv
+ lsr r2, r0, #0x18
+ lsl r1, r1, #8
+ orr r1, r2
+ lsl r0, r0, #8
+ add r2, r4, #0
+ str r0, [r4, #0x14]
+ add r2, #0x24
+ ldrb r2, [r2]
+ lsl r3, r2, #0x1e
+ lsr r3, r3, #0x1f
+ bne _0223E054
+ lsl r2, r2, #0x1c
+ lsr r2, r2, #0x1f
+ cmp r2, #1
+ bne _0223DF86
+ add r2, r4, #0
+ add r2, #0x24
+ ldrb r2, [r2]
+ mov r3, #8
+ add r5, r0, #0
+ bic r2, r3
+ add r3, r4, #0
+ add r3, #0x24
+ strb r2, [r3]
+_0223DF86:
+ add r2, r4, #0
+ add r2, #0x24
+ ldrb r2, [r2]
+ lsl r2, r2, #0x1d
+ lsr r2, r2, #0x1f
+ cmp r2, #1
+ bne _0223DFCE
+ mov r2, #0
+ sub r3, r0, r5
+ mov ip, r1
+ mov r3, ip
+ sbc r3, r2
+ bhs _0223DFA4
+ add r7, r5, r0
+ b _0223DFA6
+_0223DFA4:
+ add r7, r0, #0
+_0223DFA6:
+ ldr r6, [r4, #0x20]
+ mov r2, #0
+ add r3, r2, #0
+ add r2, r6, #0
+ eor r3, r1
+ eor r2, r0
+ orr r2, r3
+ beq _0223DFBE
+ cmp r5, r6
+ bhi _0223E054
+ cmp r6, r7
+ bhi _0223E054
+_0223DFBE:
+ add r2, r4, #0
+ add r2, #0x24
+ ldrb r3, [r2]
+ mov r2, #4
+ bic r3, r2
+ add r2, r4, #0
+ add r2, #0x24
+ strb r3, [r2]
+_0223DFCE:
+ add r2, r4, #0
+ add r2, #0x24
+ ldrb r2, [r2]
+ lsl r2, r2, #0x1f
+ lsr r2, r2, #0x1f
+ cmp r2, #1
+ bne _0223E014
+ mov r3, #0
+ mov r2, #0
+ eor r3, r1
+ eor r2, r0
+ orr r2, r3
+ beq _0223DFF0
+ mov r2, #0
+ sub r0, r0, r5
+ sbc r1, r2
+ bhs _0223E014
+_0223DFF0:
+ add r1, r4, #0
+ add r1, #0x24
+ ldrb r2, [r1]
+ mov r1, #1
+ mov r0, #0
+ bic r2, r1
+ add r1, r4, #0
+ add r1, #0x24
+ strb r2, [r1]
+ add r1, r4, #0
+ add r1, #0x24
+ ldrb r2, [r1]
+ mov r1, #2
+ orr r2, r1
+ add r1, r4, #0
+ add r1, #0x24
+ strb r2, [r1]
+ str r0, [r4, #0x20]
+_0223E014:
+ ldrb r0, [r4, #0x19]
+ cmp r0, #0
+ bne _0223E01C
+ b _0223E01C
+_0223E01C:
+ ldr r0, [r4, #0x14]
+ mov r5, #3
+ lsl r0, r0, #8
+ lsr r0, r0, #0x10
+ bl FUN_0201B954
+ add r1, r5, #0
+ mul r1, r0
+ ldrb r2, [r4, #0x19]
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ mov r1, #6
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, _0223E064 ; =0x022461F4
+ asr r0, r0, #0xc
+ ldrsh r1, [r1, r3]
+ add r0, r0, r1
+ sub r1, r0, r5
+ ldr r0, [r4, #0xc]
+ str r1, [r0, #4]
+ ldr r2, [r4, #0xc]
+ ldr r0, [r2]
+ ldr r1, [r2, #4]
+ ldr r2, [r2, #8]
+ bl MOD17_021DD620
+_0223E054:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223E058: .word 0x00001138
+_0223E05C: .word 0x00002710
+_0223E060: .word 0x00000AE8
+_0223E064: .word 0x022461F4
+
+ thumb_func_start MOD12_0223E068
+MOD12_0223E068: ; 0x0223E068
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r6, r1, #0
+ add r4, r0, #0
+ add r5, r2, #0
+ cmp r6, #0
+ beq _0223E07E
+ cmp r5, #0
+ bne _0223E07E
+ bl ErrorHandling
+_0223E07E:
+ cmp r6, #6
+ bls _0223E084
+ b _0223E1E4
+_0223E084:
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223E090: ; jump table
+ .short _0223E1E8 - _0223E090 - 2 ; case 0
+ .short _0223E09E - _0223E090 - 2 ; case 1
+ .short _0223E0BA - _0223E090 - 2 ; case 2
+ .short _0223E0DE - _0223E090 - 2 ; case 3
+ .short _0223E0F4 - _0223E090 - 2 ; case 4
+ .short _0223E138 - _0223E090 - 2 ; case 5
+ .short _0223E16A - _0223E090 - 2 ; case 6
+_0223E09E:
+ ldrb r0, [r5]
+ ldr r1, [r4, #0x14]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r4, #0x9c
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_0223E0BA:
+ mov r2, #0x12
+ lsl r2, r2, #4
+ ldr r3, [r4]
+ add r1, r2, #1
+ ldrb r0, [r3, r2]
+ add r2, #0x51
+ ldrb r1, [r3, r1]
+ ldrb r2, [r3, r2]
+ bl FUN_02083228
+ add r4, #0x9c
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_0200B278
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_0223E0DE:
+ mov r1, #0
+ str r1, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ add r4, #0x9c
+ ldrb r2, [r5, #4]
+ ldr r0, [r4]
+ bl FUN_0200AD38
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_0223E0F4:
+ ldrb r6, [r5]
+ ldr r3, [r4]
+ mov r0, #1
+ lsl r2, r6, #2
+ str r0, [sp]
+ mov r0, #2
+ add r2, r3, r2
+ add r6, r3, r6
+ mov r3, #0x42
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r3, r3, #2
+ add r0, #0x9c
+ add r2, #0xe8
+ ldrb r3, [r6, r3]
+ ldr r0, [r0]
+ ldr r2, [r2]
+ mov r1, #0
+ bl FUN_0200ABB4
+ ldrb r0, [r5]
+ ldr r1, [r4, #0x14]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r4, #0x9c
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_0223E138:
+ ldrb r0, [r5]
+ ldr r1, [r4, #0x14]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ mov r0, #0
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ add r4, #0x9c
+ ldrb r2, [r5, #4]
+ ldr r0, [r4]
+ add r3, r1, #0
+ bl FUN_0200AD38
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_0223E16A:
+ mov r2, #0x12
+ lsl r2, r2, #4
+ ldr r3, [r4]
+ add r1, r2, #1
+ ldrb r0, [r3, r2]
+ add r2, #0x51
+ ldrb r1, [r3, r1]
+ ldrb r2, [r3, r2]
+ bl FUN_02083228
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0200B278
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x9c
+ ldrb r2, [r5, #4]
+ ldr r0, [r0]
+ add r3, r1, #0
+ bl FUN_0200AD38
+ ldrb r6, [r5]
+ ldr r3, [r4]
+ mov r0, #1
+ lsl r2, r6, #2
+ str r0, [sp]
+ mov r1, #2
+ add r2, r3, r2
+ add r6, r3, r6
+ mov r3, #0x42
+ add r0, r4, #0
+ str r1, [sp, #4]
+ lsl r3, r3, #2
+ add r0, #0x9c
+ add r2, #0xe8
+ ldrb r3, [r6, r3]
+ ldr r0, [r0]
+ ldr r2, [r2]
+ bl FUN_0200ABB4
+ ldrb r0, [r5]
+ ldr r1, [r4, #0x14]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r4, #0x9c
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r1, #3
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_0223E1E4:
+ bl ErrorHandling
+_0223E1E8:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_0223E1EC
+MOD12_0223E1EC: ; 0x0223E1EC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r6, r1, #0
+ ldr r1, [r5]
+ ldr r0, _0223E268 ; =0x00000171
+ add r7, r2, #0
+ ldrb r0, [r1, r0]
+ str r3, [sp, #0xc]
+ cmp r0, #0
+ bne _0223E20E
+ ldr r0, _0223E26C ; =0x00001988
+ ldr r0, [r1, r0]
+ bl FUN_02024FF4
+ add r4, r0, #0
+ b _0223E210
+_0223E20E:
+ mov r4, #1
+_0223E210:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl FUN_0200A914
+ add r6, r0, #0
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #0x28]
+ add r0, r5, #0
+ bl MOD12_0223E068
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0x9c
+ add r1, #0xa0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r5, #0
+ add r0, #0x78
+ mov r1, #0xff
+ bl FUN_02019620
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ add r2, r5, #0
+ add r0, r5, #0
+ str r3, [sp, #8]
+ add r2, #0xa0
+ ldr r2, [r2]
+ add r0, #0x78
+ mov r1, #1
+ bl FUN_0201BD84
+ ldr r1, _0223E270 ; =0x00000AB8
+ strb r0, [r5, r1]
+ add r0, r6, #0
+ bl FUN_02021A20
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223E268: .word 0x00000171
+_0223E26C: .word 0x00001988
+_0223E270: .word 0x00000AB8
+
+ thumb_func_start MOD12_0223E274
+MOD12_0223E274: ; 0x0223E274
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ cmp r4, #8
+ blo _0223E286
+ bl ErrorHandling
+_0223E286:
+ lsl r3, r4, #2
+ ldr r2, _0223E2A0 ; =0x02246224
+ add r0, r5, #0
+ ldr r4, _0223E2A4 ; =0x02246226
+ ldrh r2, [r2, r3]
+ str r6, [sp]
+ add r5, #0x98
+ ldrb r3, [r4, r3]
+ ldr r1, [r5]
+ bl MOD12_0223E1EC
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0223E2A0: .word 0x02246224
+_0223E2A4: .word 0x02246226
+
+ thumb_func_start MOD12_0223E2A8
+MOD12_0223E2A8: ; 0x0223E2A8
+ ldr r1, _0223E2B0 ; =0x00000AB8
+ ldr r3, _0223E2B4 ; =0x0201BD71
+ ldrb r0, [r0, r1]
+ bx r3
+ .align 2, 0
+_0223E2B0: .word 0x00000AB8
+_0223E2B4: .word 0x0201BD71
+
+ thumb_func_start MOD12_0223E2B8
+MOD12_0223E2B8: ; 0x0223E2B8
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #1
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r2, _0223E300 ; =0x000080F1
+ mov r3, #0x4c
+ str r2, [sp, #8]
+ mov r2, #0x2e
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223E304 ; =0x000080EE
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x4d
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0223E304 ; =0x000080EE
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x2e
+ mov r3, #0x4e
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_0223E300: .word 0x000080F1
+_0223E304: .word 0x000080EE
+
+ thumb_func_start MOD12_0223E308
+MOD12_0223E308: ; 0x0223E308
+ push {r4, lr}
+ ldr r1, _0223E324 ; =0x000080F1
+ add r4, r0, #0
+ bl FUN_0200C358
+ ldr r1, _0223E328 ; =0x000080EE
+ add r0, r4, #0
+ bl FUN_0200C378
+ ldr r1, _0223E328 ; =0x000080EE
+ add r0, r4, #0
+ bl FUN_0200C388
+ pop {r4, pc}
+ .align 2, 0
+_0223E324: .word 0x000080F1
+_0223E328: .word 0x000080EE
+
+ thumb_func_start MOD12_0223E32C
+MOD12_0223E32C: ; 0x0223E32C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _0223E33E
+ bl ErrorHandling
+_0223E33E:
+ mov r0, #0x17
+ mov r1, #0x10
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x10
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x21
+ lsl r0, r0, #4
+ str r4, [r5, r0]
+ str r5, [r4, #8]
+ ldr r0, [r5, #0x6c]
+ ldr r1, [r5, #0x70]
+ ldr r2, _0223E380 ; =0x02246278
+ bl FUN_0200C154
+ str r0, [r4, #4]
+ ldr r0, [r0]
+ bl FUN_0200C59C
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, _0223E384 ; =MOD12_0223E3BC
+ ldr r2, _0223E388 ; =0x00009C4F
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223E380: .word 0x02246278
+_0223E384: .word MOD12_0223E3BC
+_0223E388: .word 0x00009C4F
+
+ thumb_func_start MOD12_0223E38C
+MOD12_0223E38C: ; 0x0223E38C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r0, [r0]
+ bl FUN_0200CAB4
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #4]
+ bl FUN_0200C3DC
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0x21
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ pop {r4, pc}
+
+ thumb_func_start MOD12_0223E3BC
+MOD12_0223E3BC: ; 0x0223E3BC
+ ldrb r0, [r1, #0xc]
+ cmp r0, #0
+ beq _0223E3CA
+ cmp r0, #1
+ beq _0223E3CE
+ cmp r0, #2
+ b _0223E3CE
+_0223E3CA:
+ add r0, r0, #1
+ strb r0, [r1, #0xc]
+_0223E3CE:
+ ldr r0, [r1, #4]
+ ldr r3, _0223E3D8 ; =0x0200C59D
+ ldr r0, [r0]
+ bx r3
+ nop
+_0223E3D8: .word 0x0200C59D
+
+ thumb_func_start MOD12_0223E3DC
+MOD12_0223E3DC: ; 0x0223E3DC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ lsl r0, r1, #8
+ add r1, r2, #0
+ bl _u32_div_f
+ ldr r1, _0223E434 ; =0x00002710
+ add r4, r0, #0
+ mul r0, r1
+ lsl r1, r1, #4
+ mov r6, #0x90
+ bl _u32_div_f
+ mov r0, #0xb4
+ mul r0, r1
+ ldr r1, _0223E438 ; =0x00027100
+ bl _u32_div_f
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0201B93C
+ mov r1, #0xa
+ mul r1, r0
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ sub r2, r6, r0
+ lsl r1, r4, #0x10
+ lsl r2, r2, #0x10
+ mov r3, #1
+ ldr r0, [r5, #4]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ lsl r3, r3, #0x14
+ bl FUN_0200C750
+ ldr r0, [r5, #4]
+ mov r1, #1
+ bl FUN_0200C644
+ pop {r4, r5, r6, pc}
+ nop
+_0223E434: .word 0x00002710
+_0223E438: .word 0x00027100
+
+ thumb_func_start MOD12_0223E43C
+MOD12_0223E43C: ; 0x0223E43C
+ ldr r3, _0223E444 ; =0x0200C645
+ ldr r0, [r0, #4]
+ mov r1, #0
+ bx r3
+ .align 2, 0
+_0223E444: .word 0x0200C645
+
+ thumb_func_start MOD12_0223E448
+MOD12_0223E448: ; 0x0223E448
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_0200C644
+ mov r3, #1
+ ldr r0, [r4, #4]
+ mov r1, #0
+ mov r2, #0x90
+ lsl r3, r3, #0x14
+ bl FUN_0200C750
+ pop {r4, pc}
+
+ thumb_func_start MOD12_0223E464
+MOD12_0223E464: ; 0x0223E464
+ push {r3, r4}
+ ldr r2, _0223E484 ; =0x022461E0
+ add r1, sp, #0
+ ldrb r3, [r2]
+ add r4, sp, #0
+ strb r3, [r1]
+ ldrb r3, [r2, #1]
+ strb r3, [r1, #1]
+ ldrb r3, [r2, #2]
+ ldrb r2, [r2, #3]
+ strb r3, [r1, #2]
+ strb r2, [r1, #3]
+ ldrb r0, [r4, r0]
+ pop {r3, r4}
+ bx lr
+ nop
+_0223E484: .word 0x022461E0
+
+ thumb_func_start MOD12_0223E488
+MOD12_0223E488: ; 0x0223E488
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ add r7, r2, #0
+ cmp r4, #8
+ blo _0223E49A
+ bl ErrorHandling
+_0223E49A:
+ ldr r0, _0223E51C ; =0x00001BF1
+ ldrb r0, [r5, r0]
+ cmp r0, #1
+ beq _0223E516
+ add r0, r5, #0
+ mov r1, #1
+ add r0, #0x88
+ add r2, r1, #0
+ mov r3, #0xe
+ bl FUN_0200D0BC
+ ldr r0, [r5, #0x74]
+ mov r1, #1
+ bl FUN_0201AC68
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r1, _0223E520 ; =0x02246224
+ lsl r4, r4, #2
+ ldrh r1, [r1, r4]
+ ldr r0, [r0]
+ bl FUN_0200A914
+ ldr r1, _0223E524 ; =0x02246226
+ add r6, r0, #0
+ ldrb r1, [r1, r4]
+ add r0, r5, #0
+ add r2, r7, #0
+ bl MOD12_0223E068
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0x9c
+ add r1, #0xa0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r5, #0
+ add r0, #0x88
+ mov r1, #0xff
+ bl FUN_02019620
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ add r2, r5, #0
+ add r0, r5, #0
+ str r3, [sp, #8]
+ add r2, #0xa0
+ ldr r2, [r2]
+ add r0, #0x88
+ mov r1, #1
+ bl FUN_0201BD84
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, _0223E51C ; =0x00001BF1
+ mov r1, #1
+ strb r1, [r5, r0]
+_0223E516:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0223E51C: .word 0x00001BF1
+_0223E520: .word 0x02246224
+_0223E524: .word 0x02246226
+
+ thumb_func_start MOD12_0223E528
+MOD12_0223E528: ; 0x0223E528
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x88
+ mov r1, #1
+ bl FUN_0200D0E0
+ ldr r0, [r4, #0x74]
+ mov r1, #1
+ bl FUN_0201AC68
+ ldr r0, _0223E544 ; =0x00001BF1
+ mov r1, #0
+ strb r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_0223E544: .word 0x00001BF1
+
+ thumb_func_start MOD12_0223E548
+MOD12_0223E548: ; 0x0223E548
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _0223E584 ; =0x00000AEC
+ ldrb r1, [r1, #4]
+ ldr r3, [r5, r0]
+ add r6, r2, #0
+ mul r1, r3
+ mul r6, r1
+ add r1, r0, #4
+ add r0, #8
+ ldr r1, [r5, r1]
+ ldr r0, [r5, r0]
+ mov r4, #0
+ add r0, r1, r0
+ mul r0, r2
+ add r0, r1, r0
+ ldr r1, _0223E588 ; =0x00002710
+ bl _u32_div_f
+ add r1, r4, #0
+ add r3, r6, r0
+ ldr r0, _0223E58C ; =0x00001138
+ adc r4, r1
+ ldr r2, [r5, r0]
+ add r0, r0, #4
+ ldr r1, [r5, r0]
+ sub r0, r3, r2
+ sbc r4, r1
+ add r1, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223E584: .word 0x00000AEC
+_0223E588: .word 0x00002710
+_0223E58C: .word 0x00001138
+
+ thumb_func_start MOD12_0223E590
+MOD12_0223E590: ; 0x0223E590
+ ldr r3, _0223E594 ; =MOD12_0223E548
+ bx r3
+ .align 2, 0
+_0223E594: .word MOD12_0223E548
+
+ thumb_func_start MOD12_0223E598
+MOD12_0223E598: ; 0x0223E598
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ add r7, r2, #0
+ mov r0, #0
+ strb r0, [r7]
+ mov r0, #0x17
+ mov r1, #0x2c
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x2c
+ add r4, r0, #0
+ bl MI_CpuFill8
+ add r1, r6, #0
+ add r1, #0x18
+ lsl r0, r5, #4
+ str r6, [r4]
+ add r0, r1, r0
+ str r0, [r4, #4]
+ mov r0, #0x85
+ lsl r0, r0, #2
+ add r1, r6, r0
+ mov r0, #0x18
+ mul r0, r5
+ add r0, r1, r0
+ str r0, [r4, #8]
+ ldr r0, _0223E5F4 ; =0x00000AB4
+ str r7, [r4, #0xc]
+ add r1, r6, r5
+ ldrb r0, [r1, r0]
+ ldr r2, _0223E5F8 ; =0x00009C40
+ cmp r0, #1
+ bne _0223E5E8
+ ldr r0, _0223E5FC ; =MOD12_0223E604
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+_0223E5E8:
+ ldr r0, _0223E600 ; =MOD12_0223E6A4
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223E5F4: .word 0x00000AB4
+_0223E5F8: .word 0x00009C40
+_0223E5FC: .word MOD12_0223E604
+_0223E600: .word MOD12_0223E6A4
+
+ thumb_func_start MOD12_0223E604
+MOD12_0223E604: ; 0x0223E604
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _0223E616
+ cmp r0, #1
+ beq _0223E636
+ b _0223E686
+_0223E616:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ mov r2, #0
+ bl MOD12_0223CD38
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #8]
+ lsl r0, r0, #8
+ str r0, [r4, #0x1c]
+ str r0, [r4, #0x18]
+ mov r0, #5
+ lsl r0, r0, #8
+ str r0, [r4, #0x14]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_0223E636:
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ sub r0, r1, r0
+ str r0, [r4, #0x18]
+ mov r0, #2
+ ldr r1, [r4, #0x14]
+ lsl r0, r0, #8
+ sub r0, r1, r0
+ str r0, [r4, #0x14]
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r4, #0x18]
+ cmp r0, r1
+ blt _0223E66A
+ str r1, [r4, #0x18]
+ ldrb r0, [r4, #0x11]
+ add r0, r0, #1
+ strb r0, [r4, #0x11]
+ ldrb r0, [r4, #0x11]
+ cmp r0, #1
+ bls _0223E666
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ b _0223E66A
+_0223E666:
+ mov r0, #0
+ strb r0, [r4, #0x10]
+_0223E66A:
+ ldr r1, [r4, #0x18]
+ asr r0, r1, #7
+ lsr r0, r0, #0x18
+ add r0, r1, r0
+ asr r1, r0, #8
+ ldr r0, [r4, #4]
+ str r1, [r0, #8]
+ ldr r2, [r4, #4]
+ ldr r0, [r2]
+ ldr r1, [r2, #4]
+ ldr r2, [r2, #8]
+ bl MOD17_021DD620
+ pop {r3, r4, r5, pc}
+_0223E686:
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ strb r1, [r0]
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ bl MOD12_0223CD38
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223E6A4
+MOD12_0223E6A4: ; 0x0223E6A4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _0223E6B6
+ cmp r0, #1
+ beq _0223E6C6
+ b _0223E720
+_0223E6B6:
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #4]
+ lsl r0, r0, #8
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x24]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_0223E6C6:
+ ldr r0, [r4, #0x20]
+ bl FUN_0201B9B8
+ lsl r1, r0, #2
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ mov r1, #0x32
+ ldr r2, [r4, #0x20]
+ lsl r1, r1, #0xc
+ add r1, r2, r1
+ str r1, [r4, #0x20]
+ asr r2, r1, #0xc
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ asr r0, r0, #0xc
+ cmp r2, r1
+ blt _0223E702
+ ldrb r1, [r4, #0x11]
+ add r1, r1, #1
+ strb r1, [r4, #0x11]
+ ldrb r1, [r4, #0x11]
+ cmp r1, #5
+ bls _0223E702
+ ldr r0, [r4, #0x28]
+ str r0, [r4, #0x24]
+ ldrb r1, [r4, #0x10]
+ mov r0, #0
+ add r1, r1, #1
+ strb r1, [r4, #0x10]
+_0223E702:
+ ldr r2, [r4, #0x24]
+ asr r1, r2, #7
+ lsr r1, r1, #0x18
+ add r1, r2, r1
+ asr r1, r1, #8
+ add r1, r1, r0
+ ldr r0, [r4, #4]
+ str r1, [r0, #4]
+ ldr r2, [r4, #4]
+ ldr r0, [r2]
+ ldr r1, [r2, #4]
+ ldr r2, [r2, #8]
+ bl MOD17_021DD620
+ pop {r3, r4, r5, pc}
+_0223E720:
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ strb r1, [r0]
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_0223E734
+MOD12_0223E734: ; 0x0223E734
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0223E738
+MOD12_0223E738: ; 0x0223E738
+ push {r3, lr}
+ ldr r0, _0223E74C ; =0x04000050
+ mov r3, #0
+ mov r1, #1
+ mov r2, #0x3e
+ str r3, [sp]
+ bl G2x_SetBlendAlpha_
+ pop {r3, pc}
+ nop
+_0223E74C: .word 0x04000050
+
+ thumb_func_start MOD12_0223E750
+MOD12_0223E750: ; 0x0223E750
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r0, #0xa4
+ add r5, r1, #0
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_020031FC
+ ldr r3, _0223E77C ; =0x0224620C
+ lsl r5, r5, #2
+ ldrh r1, [r3, r5]
+ add r3, r3, r5
+ ldr r2, _0223E780 ; =0x00001FE3
+ str r1, [sp]
+ ldrh r3, [r3, #2]
+ ldr r1, _0223E784 ; =0x0000110C
+ lsl r3, r3, #0x18
+ ldr r1, [r4, r1]
+ lsr r3, r3, #0x18
+ bl FUN_02003A30
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223E77C: .word 0x0224620C
+_0223E780: .word 0x00001FE3
+_0223E784: .word 0x0000110C
+
+ thumb_func_start MOD12_0223E788
+MOD12_0223E788: ; 0x0223E788
+ push {r3, lr}
+ ldrb r2, [r1, #7]
+ cmp r2, #0
+ bne _0223E7D0
+ ldrb r2, [r1, #4]
+ cmp r2, #0
+ beq _0223E79E
+ cmp r2, #1
+ beq _0223E79E
+ cmp r2, #2
+ b _0223E7CA
+_0223E79E:
+ ldrb r2, [r1, #3]
+ cmp r2, #4
+ bhi _0223E7CC
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0223E7B0: ; jump table
+ .short _0223E7CC - _0223E7B0 - 2 ; case 0
+ .short _0223E7BA - _0223E7B0 - 2 ; case 1
+ .short _0223E7BE - _0223E7B0 - 2 ; case 2
+ .short _0223E7C2 - _0223E7B0 - 2 ; case 3
+ .short _0223E7C6 - _0223E7B0 - 2 ; case 4
+_0223E7BA:
+ mov r1, #1
+ b _0223E7CC
+_0223E7BE:
+ mov r1, #2
+ b _0223E7CC
+_0223E7C2:
+ mov r1, #3
+ b _0223E7CC
+_0223E7C6:
+ mov r1, #4
+ b _0223E7CC
+_0223E7CA:
+ mov r1, #5
+_0223E7CC:
+ bl MOD12_0223E750
+_0223E7D0:
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223E7D4
+MOD12_0223E7D4: ; 0x0223E7D4
+ push {r3, r4, r5, r6, r7, lr}
+ str r1, [sp]
+ ldr r1, _0223E844 ; =0x00000AE8
+ mov ip, r0
+ ldr r0, [r0, r1]
+ ldr r1, _0223E848 ; =0x00001BA0
+ lsr r7, r0, #1
+ mov r0, ip
+ add r3, r0, r1
+ ldr r1, _0223E84C ; =0x04000280
+ mov r6, #0
+ mov r4, ip
+ lsr r0, r1, #0xb
+_0223E7EE:
+ ldrb r2, [r3]
+ lsl r2, r2, #0x1d
+ lsr r2, r2, #0x1f
+ cmp r2, #1
+ bne _0223E836
+ ldr r2, _0223E850 ; =0x00001B9E
+ mov r5, #0
+ ldrb r2, [r4, r2]
+ add r2, #0x10
+ strh r5, [r1]
+ ldr r5, _0223E854 ; =0x04000290
+ mul r2, r7
+ str r2, [r5]
+ ldr r5, _0223E858 ; =0x00002710
+ ldr r2, _0223E85C ; =0x04000298
+ str r5, [r2]
+ mov r5, #0
+ str r5, [r2, #4]
+_0223E812:
+ ldrh r2, [r1]
+ tst r2, r0
+ bne _0223E812
+ ldr r2, _0223E860 ; =0x040002A0
+ ldr r5, [r2]
+ ldr r2, [sp]
+ cmp r5, r2
+ bne _0223E836
+ ldr r2, _0223E864 ; =0x00001B98
+ mov r1, ip
+ add r2, r1, r2
+ mov r1, #0xa
+ mul r1, r6
+ mov r0, ip
+ add r1, r2, r1
+ bl MOD12_0223E788
+ pop {r3, r4, r5, r6, r7, pc}
+_0223E836:
+ add r6, r6, #1
+ add r3, #0xa
+ add r4, #0xa
+ cmp r6, #8
+ blt _0223E7EE
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223E844: .word 0x00000AE8
+_0223E848: .word 0x00001BA0
+_0223E84C: .word 0x04000280
+_0223E850: .word 0x00001B9E
+_0223E854: .word 0x04000290
+_0223E858: .word 0x00002710
+_0223E85C: .word 0x04000298
+_0223E860: .word 0x040002A0
+_0223E864: .word 0x00001B98
+
+ thumb_func_start MOD12_0223E868
+MOD12_0223E868: ; 0x0223E868
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ mov r0, #0x82
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _0223E87A
+ bl ErrorHandling
+_0223E87A:
+ mov r0, #0x81
+ lsl r0, r0, #2
+ add r5, r4, r0
+ ldr r0, _0223E890 ; =MOD12_0223E8EC
+ ldr r2, _0223E894 ; =0x00009C40
+ add r1, r5, #0
+ str r4, [r5]
+ bl FUN_0200CA44
+ str r0, [r5, #4]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223E890: .word MOD12_0223E8EC
+_0223E894: .word 0x00009C40
+
+ thumb_func_start MOD12_0223E898
+MOD12_0223E898: ; 0x0223E898
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x82
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _0223E8B2
+ bl FUN_0200CAB4
+ mov r0, #0x82
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_0223E8B2:
+ pop {r4, pc}
+
+ thumb_func_start MOD12_0223E8B4
+MOD12_0223E8B4: ; 0x0223E8B4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x81
+ lsl r1, r1, #2
+ add r4, r0, r1
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _0223E8C8
+ bl ErrorHandling
+_0223E8C8:
+ cmp r5, #0
+ bne _0223E8D0
+ mov r0, #0x40
+ b _0223E8D2
+_0223E8D0:
+ mov r0, #0x30
+_0223E8D2:
+ strb r0, [r4, #0xa]
+ mov r0, #1
+ strb r0, [r4, #0xb]
+ mov r0, #0xa
+ lsl r0, r0, #8
+ strh r0, [r4, #8]
+ ldr r0, _0223E8E8 ; =0x000006F8
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+ nop
+_0223E8E8: .word 0x000006F8
+
+ thumb_func_start MOD12_0223E8EC
+MOD12_0223E8EC: ; 0x0223E8EC
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldrb r0, [r4, #0xb]
+ cmp r0, #0
+ beq _0223E946
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ bl FUN_020031FC
+ ldrb r1, [r4, #0xa]
+ lsl r3, r1, #1
+ ldr r1, _0223E94C ; =0x00007FFF
+ add r0, r0, r3
+ str r1, [sp]
+ ldr r2, [r4]
+ ldr r1, _0223E950 ; =0x0000110C
+ ldr r1, [r2, r1]
+ mov r2, #0x10
+ add r1, r1, r3
+ ldrh r3, [r4, #8]
+ asr r3, r3, #8
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02003974
+ ldrh r1, [r4, #8]
+ cmp r1, #0
+ bne _0223E932
+ mov r0, #0
+ add sp, #4
+ strb r0, [r4, #0xb]
+ pop {r3, r4, pc}
+_0223E932:
+ mov r0, #1
+ lsl r0, r0, #8
+ cmp r1, r0
+ bls _0223E942
+ sub r0, r1, r0
+ add sp, #4
+ strh r0, [r4, #8]
+ pop {r3, r4, pc}
+_0223E942:
+ mov r0, #0
+ strh r0, [r4, #8]
+_0223E946:
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_0223E94C: .word 0x00007FFF
+_0223E950: .word 0x0000110C
+
+ thumb_func_start MOD12_0223E954
+MOD12_0223E954: ; 0x0223E954
+ push {r3, r4, r5, lr}
+ ldr r5, _0223E97C ; =0x00001120
+ add r4, r0, #0
+ str r2, [r4, r5]
+ add r0, r5, #4
+ str r3, [r4, r0]
+ add r0, r5, #0
+ ldr r2, [sp, #0x10]
+ add r0, #8
+ str r2, [r4, r0]
+ ldr r0, [sp, #0x14]
+ add r5, #0xc
+ str r0, [r4, r5]
+ ldr r0, [r4, #0xc]
+ ldr r2, _0223E980 ; =MOD12_0223E984
+ add r3, r4, #0
+ bl FUN_020133AC
+ pop {r3, r4, r5, pc}
+ nop
+_0223E97C: .word 0x00001120
+_0223E980: .word MOD12_0223E984
+
+ thumb_func_start MOD12_0223E984
+MOD12_0223E984: ; 0x0223E984
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0201341C
+ ldr r1, _0223E9C0 ; =0x00001120
+ add r1, r0, r1
+ ldr r0, [r4, #0x20]
+ ldr r2, [r1]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r2, r0
+ str r0, [r4, #0x28]
+ ldr r0, [r4, #0x20]
+ ldr r2, [r1, #4]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r2, r0
+ str r0, [r4, #0x2c]
+ ldr r0, [r4, #0x20]
+ ldr r2, [r1, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r2, r0
+ str r0, [r4, #0x30]
+ ldr r1, [r1, #0xc]
+ add r0, r4, #0
+ bl FUN_02013450
+ pop {r4, pc}
+ nop
+_0223E9C0: .word 0x00001120
+
+ thumb_func_start MOD12_0223E9C4
+MOD12_0223E9C4: ; 0x0223E9C4
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r1, #0
+ add r4, r0, #0
+ add r6, r2, #0
+ cmp r5, #0x21
+ blo _0223E9D6
+ bl ErrorHandling
+_0223E9D6:
+ ldr r0, _0223EA3C ; =0x0224637C
+ lsl r1, r5, #2
+ ldr r5, [r0, r1]
+ cmp r6, #0
+ ldr r0, _0223EA40 ; =0xFFFFEB80
+ ldr r3, _0223EA44 ; =0xFFFFBADC
+ bne _0223EA10
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r5, #0
+ bl MOD12_0223E954
+ ldr r0, _0223EA40 ; =0xFFFFEB80
+ ldr r3, _0223EA44 ; =0xFFFFBADC
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD12_0223E954
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_0223EA10:
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #2
+ add r2, r5, #0
+ bl MOD12_0223E954
+ ldr r0, _0223EA40 ; =0xFFFFEB80
+ ldr r3, _0223EA44 ; =0xFFFFBADC
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #3
+ add r2, r5, #0
+ bl MOD12_0223E954
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223EA3C: .word 0x0224637C
+_0223EA40: .word 0xFFFFEB80
+_0223EA44: .word 0xFFFFBADC
+
+ thumb_func_start MOD12_0223EA48
+MOD12_0223EA48: ; 0x0223EA48
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ cmp r1, #0
+ ldr r1, _0223EBFC ; =0xFFFFEB80
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ bne _0223EAD6
+ str r1, [sp]
+ mov r1, #1
+ lsl r1, r1, #0xc
+ str r1, [sp, #4]
+ ldr r2, _0223EC04 ; =0xFFFFCD38
+ mov r1, #5
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC04 ; =0xFFFFCD38
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC04 ; =0xFFFFCD38
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #7
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC08 ; =0x00005014
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #5
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC08 ; =0x00005014
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC08 ; =0x00005014
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #7
+ bl MOD12_0223E954
+ b _0223EBAC
+_0223EAD6:
+ str r1, [sp]
+ mov r1, #1
+ lsl r1, r1, #0xc
+ str r1, [sp, #4]
+ ldr r2, _0223EC0C ; =0xFFFFBD98
+ mov r1, #8
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC0C ; =0xFFFFBD98
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #9
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC0C ; =0xFFFFBD98
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #0xa
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC0C ; =0xFFFFBD98
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #0xb
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC0C ; =0xFFFFBD98
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #0xc
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC10 ; =0x00004074
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #8
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC10 ; =0x00004074
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #9
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC10 ; =0x00004074
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #0xa
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC10 ; =0x00004074
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #0xb
+ bl MOD12_0223E954
+ ldr r0, _0223EBFC ; =0xFFFFEB80
+ ldr r2, _0223EC10 ; =0x00004074
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r3, _0223EC00 ; =0xFFFFE764
+ add r0, r4, #0
+ mov r1, #0xc
+ bl MOD12_0223E954
+_0223EBAC:
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _0223EC14 ; =0x00007FFF
+ ldr r1, _0223EC18 ; =0x00001FE3
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #8
+ mov r3, #0x10
+ bl MOD12_0223EC4C
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r2, _0223EC14 ; =0x00007FFF
+ add r0, r4, #0
+ str r2, [sp, #8]
+ add r0, #0xa4
+ mov r1, #4
+ ldr r0, [r0]
+ lsr r2, r2, #1
+ sub r3, r1, #5
+ bl FUN_02003210
+ ldr r0, _0223EC1C ; =0x04000050
+ mov r1, #0x3f
+ mov r2, #0x10
+ bl G2x_SetBlendBrightness_
+ mov r2, #0xfa
+ ldr r0, _0223EC20 ; =MOD12_0223EC28
+ add r1, r4, #0
+ lsl r2, r2, #2
+ bl FUN_0200CA44
+ ldr r0, _0223EC24 ; =0x000006E5
+ bl FUN_020054C8
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_0223EBFC: .word 0xFFFFEB80
+_0223EC00: .word 0xFFFFE764
+_0223EC04: .word 0xFFFFCD38
+_0223EC08: .word 0x00005014
+_0223EC0C: .word 0xFFFFBD98
+_0223EC10: .word 0x00004074
+_0223EC14: .word 0x00007FFF
+_0223EC18: .word 0x00001FE3
+_0223EC1C: .word 0x04000050
+_0223EC20: .word MOD12_0223EC28
+_0223EC24: .word 0x000006E5
+
+ thumb_func_start MOD12_0223EC28
+MOD12_0223EC28: ; 0x0223EC28
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mov r3, #0
+ ldr r0, _0223EC48 ; =0x04000050
+ mov r1, #1
+ mov r2, #0x3e
+ str r3, [sp]
+ bl G2x_SetBlendAlpha_
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_0223EC48: .word 0x04000050
+
+ thumb_func_start MOD12_0223EC4C
+MOD12_0223EC4C: ; 0x0223EC4C
+ push {r3, r4, r5, lr}
+ ldr r4, _0223EC78 ; =0x0000110C
+ ldr r5, [sp, #0x10]
+ add r4, r0, r4
+ lsl r0, r3, #8
+ strh r0, [r4, #8]
+ lsl r0, r5, #8
+ strh r0, [r4, #0xa]
+ add r0, sp, #0
+ ldrh r0, [r0, #0x14]
+ strh r0, [r4, #0xe]
+ sub r0, r5, r3
+ strh r1, [r4, #6]
+ lsl r0, r0, #8
+ add r1, r2, #0
+ bl _u32_div_f
+ strh r0, [r4, #0xc]
+ mov r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+ nop
+_0223EC78: .word 0x0000110C
+
+ thumb_func_start MOD12_0223EC7C
+MOD12_0223EC7C: ; 0x0223EC7C
+ ldr r2, _0223EC84 ; =0x0000111D
+ strb r1, [r0, r2]
+ bx lr
+ nop
+_0223EC84: .word 0x0000111D
+
+ thumb_func_start MOD12_0223EC88
+MOD12_0223EC88: ; 0x0223EC88
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r1, [sp]
+ cmp r2, #0
+ bne _0223EC98
+ ldr r7, _0223ECC4 ; =0x00007FFF
+ ldr r6, _0223ECC8 ; =0x0000254A
+ b _0223EC9C
+_0223EC98:
+ ldr r7, _0223ECC8 ; =0x0000254A
+ ldr r6, _0223ECC4 ; =0x00007FFF
+_0223EC9C:
+ mov r4, #0
+_0223EC9E:
+ ldr r0, [sp]
+ cmp r4, r0
+ ldr r0, [r5, #0x18]
+ bne _0223ECAE
+ add r1, r7, #0
+ bl MOD17_021DD6B8
+ b _0223ECB4
+_0223ECAE:
+ add r1, r6, #0
+ bl MOD17_021DD6B8
+_0223ECB4:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #4
+ blt _0223EC9E
+ ldr r0, _0223ECCC ; =0x000006EC
+ bl FUN_020054C8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223ECC4: .word 0x00007FFF
+_0223ECC8: .word 0x0000254A
+_0223ECCC: .word 0x000006EC
+
+ thumb_func_start MOD12_0223ECD0
+MOD12_0223ECD0: ; 0x0223ECD0
+ push {r4, r5, r6, lr}
+ ldr r6, _0223ECEC ; =0x00007FFF
+ add r5, r0, #0
+ mov r4, #0
+_0223ECD8:
+ ldr r0, [r5, #0x18]
+ add r1, r6, #0
+ bl MOD17_021DD6B8
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #4
+ blt _0223ECD8
+ pop {r4, r5, r6, pc}
+ nop
+_0223ECEC: .word 0x00007FFF
+
+ thumb_func_start MOD12_0223ECF0
+MOD12_0223ECF0: ; 0x0223ECF0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #0xc]
+ mov r4, #0
+ add r5, sp, #0x18
+ add r3, sp, #0x14
+ ldr r2, _0223ED9C ; =0x00000ADA
+ b _0223ED0E
+_0223ED00:
+ ldr r1, [sp, #0xc]
+ lsl r0, r4, #1
+ add r1, r1, r0
+ ldrsh r1, [r1, r2]
+ strb r4, [r3, r4]
+ add r4, r4, #1
+ strh r1, [r5, r0]
+_0223ED0E:
+ cmp r4, #4
+ blt _0223ED00
+ mov r4, #0
+ add r7, sp, #0x18
+ b _0223ED42
+_0223ED18:
+ mov r6, #3
+ b _0223ED3C
+_0223ED1C:
+ sub r3, r6, #1
+ lsl r5, r3, #1
+ lsl r1, r6, #1
+ ldrsh r2, [r7, r5]
+ ldrsh r0, [r7, r1]
+ cmp r2, r0
+ bge _0223ED3A
+ strh r2, [r7, r1]
+ strh r0, [r7, r5]
+ add r0, sp, #0x14
+ add r1, sp, #0x14
+ ldrb r0, [r0, r6]
+ ldrb r2, [r1, r3]
+ strb r2, [r1, r6]
+ strb r0, [r1, r3]
+_0223ED3A:
+ sub r6, r6, #1
+_0223ED3C:
+ cmp r6, r4
+ bgt _0223ED1C
+ add r4, r4, #1
+_0223ED42:
+ cmp r4, #3
+ blt _0223ED18
+ ldr r3, _0223EDA0 ; =0x02246400
+ add r0, sp, #0x10
+ ldrb r1, [r3]
+ mov r4, #1
+ add r2, sp, #0x10
+ strb r1, [r0]
+ add r1, sp, #0x18
+ b _0223ED6E
+_0223ED56:
+ ldrb r0, [r3, r4]
+ sub r6, r4, #1
+ lsl r5, r6, #1
+ strb r0, [r2, r4]
+ lsl r0, r4, #1
+ ldrsh r0, [r1, r0]
+ ldrsh r5, [r1, r5]
+ cmp r0, r5
+ bne _0223ED6C
+ ldrb r0, [r2, r6]
+ strb r0, [r2, r4]
+_0223ED6C:
+ add r4, r4, #1
+_0223ED6E:
+ cmp r4, #4
+ blt _0223ED56
+ mov r4, #0
+ add r5, sp, #0x10
+ mov r6, #0x1e
+ add r7, r4, #0
+ b _0223ED94
+_0223ED7C:
+ ldrb r0, [r5, r4]
+ add r1, sp, #0x14
+ ldrb r1, [r1, r4]
+ str r0, [sp]
+ str r6, [sp, #4]
+ ldr r0, [sp, #0xc]
+ ldr r2, _0223EDA4 ; =0x00007FFF
+ ldr r3, _0223EDA8 ; =0x0000254A
+ str r7, [sp, #8]
+ bl MOD12_0223EDAC
+ add r4, r4, #1
+_0223ED94:
+ cmp r4, #4
+ blt _0223ED7C
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223ED9C: .word 0x00000ADA
+_0223EDA0: .word 0x02246400
+_0223EDA4: .word 0x00007FFF
+_0223EDA8: .word 0x0000254A
+
+ thumb_func_start MOD12_0223EDAC
+MOD12_0223EDAC: ; 0x0223EDAC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #0x17
+ mov r1, #0x14
+ add r6, r2, #0
+ str r3, [sp, #4]
+ ldr r5, [sp, #0x28]
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x14
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ ldr r1, [sp, #0x24]
+ lsl r0, r0, #4
+ add r0, r7, r0
+ ldr r0, [r0, #0x18]
+ str r0, [r4]
+ strh r6, [r4, #8]
+ ldr r0, [sp, #4]
+ strh r0, [r4, #0xa]
+ ldr r0, [sp, #0x20]
+ strb r0, [r4, #0x10]
+ lsl r0, r0, #8
+ bl _s32_div_f
+ strh r0, [r4, #0xc]
+ str r5, [r4, #4]
+ cmp r5, #0
+ beq _0223EDF4
+ mov r0, #0
+ strb r0, [r5]
+_0223EDF4:
+ ldr r0, [r4]
+ add r1, r6, #0
+ bl MOD17_021DD6B8
+ ldr r0, _0223EE0C ; =MOD12_0223EE14
+ ldr r2, _0223EE10 ; =0x00009C40
+ add r1, r4, #0
+ bl FUN_0200CA44
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223EE0C: .word MOD12_0223EE14
+_0223EE10: .word 0x00009C40
+
+ thumb_func_start MOD12_0223EE14
+MOD12_0223EE14: ; 0x0223EE14
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r1, #0
+ add r6, r0, #0
+ ldrh r1, [r5, #0xe]
+ ldrh r0, [r5, #0xc]
+ add r0, r1, r0
+ strh r0, [r5, #0xe]
+ ldrh r0, [r5, #0xe]
+ asr r4, r0, #8
+ ldrb r0, [r5, #0x10]
+ cmp r4, r0
+ ble _0223EE30
+ add r4, r0, #0
+_0223EE30:
+ ldrh r0, [r5, #0xa]
+ lsl r3, r4, #0x18
+ add r1, sp, #4
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #8
+ mov r2, #1
+ lsr r3, r3, #0x18
+ bl FUN_02003974
+ add r1, sp, #4
+ ldrh r1, [r1]
+ ldr r0, [r5]
+ bl MOD17_021DD6B8
+ ldrb r0, [r5, #0x10]
+ cmp r4, r0
+ blt _0223EE6A
+ ldr r1, [r5, #4]
+ cmp r1, #0
+ beq _0223EE5E
+ mov r0, #1
+ strb r0, [r1]
+_0223EE5E:
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r6, #0
+ bl FUN_0200CAB4
+_0223EE6A:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223EE70
+MOD12_0223EE70: ; 0x0223EE70
+ cmp r0, #0x32
+ beq _0223EE78
+ cmp r0, #0x33
+ bne _0223EE7C
+_0223EE78:
+ mov r0, #0
+ bx lr
+_0223EE7C:
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD12_0223EE80
+MOD12_0223EE80: ; 0x0223EE80
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r1, _0223EEB4 ; =0x02246424
+ add r3, sp, #0
+ str r1, [sp]
+ mov r1, #0xd
+ strh r1, [r3, #4]
+ ldr r1, [r0]
+ ldr r2, _0223EEB8 ; =0x00000123
+ ldrb r1, [r1, r2]
+ strb r1, [r3, #6]
+ sub r1, r2, #7
+ ldr r4, [r0]
+ add r2, #0x4e
+ ldrb r1, [r4, r1]
+ strb r1, [r3, #8]
+ ldr r1, [r0]
+ ldrb r1, [r1, r2]
+ strb r1, [r3, #7]
+ ldr r1, _0223EEBC ; =0x00001158
+ add r0, r0, r1
+ add r1, sp, #0
+ bl MOD12_02240ED0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_0223EEB4: .word 0x02246424
+_0223EEB8: .word 0x00000123
+_0223EEBC: .word 0x00001158
+
+ thumb_func_start MOD12_0223EEC0
+MOD12_0223EEC0: ; 0x0223EEC0
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223EED4
+MOD12_0223EED4: ; 0x0223EED4
+ push {r3, lr}
+ add r1, r2, #0
+ mov r2, #0
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223EEE4
+MOD12_0223EEE4: ; 0x0223EEE4
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0223EEE8
+MOD12_0223EEE8: ; 0x0223EEE8
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223EEFC
+MOD12_0223EEFC: ; 0x0223EEFC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x17
+ mov r1, #0x18
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x18
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _0223EF38 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, _0223EF3C ; =MOD12_0223EF40
+ str r6, [r4, #0xc]
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223EF38: .word 0x00007530
+_0223EF3C: .word MOD12_0223EF40
+
+ thumb_func_start MOD12_0223EF40
+MOD12_0223EF40: ; 0x0223EF40
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldrb r0, [r1, #0x10]
+ str r1, [sp]
+ cmp r0, #0
+ beq _0223EF50
+ b _0223F076
+_0223EF50:
+ ldr r0, [sp]
+ mov r1, #0x14
+ ldrsb r0, [r0, r1]
+ cmp r0, #0
+ ble _0223EF64
+ sub r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x14]
+ pop {r4, r5, r6, r7, pc}
+_0223EF64:
+ ldr r0, [sp]
+ mov r1, #0x13
+ ldrsb r0, [r0, r1]
+ cmp r0, #0
+ ble _0223EF78
+ sub r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x13]
+ pop {r4, r5, r6, r7, pc}
+_0223EF78:
+ ldr r0, [sp]
+ mov r1, #1
+ strb r1, [r0, #0x13]
+ ldr r0, [r0]
+ mov r1, #2
+ ldr r0, [r0, #0x74]
+ bl FUN_0201886C
+ mov ip, r0
+ mov r0, #0
+ str r0, [sp, #8]
+ b _0223EFF0
+_0223EF90:
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ ldr r0, _0223F094 ; =0x02246404
+ ldrsb r1, [r0, r1]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ bmi _0223EFEA
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ ldr r0, [sp]
+ mov r5, #0
+ ldrb r0, [r0, #0x12]
+ mov r7, #0x3f
+ str r5, [sp, #4]
+ lsl r1, r0, #1
+ ldr r0, _0223F098 ; =0x0224640C
+ lsl r7, r7, #0xa
+ ldrh r1, [r0, r1]
+ ldr r0, [sp, #8]
+ lsl r0, r0, #5
+ add r6, r1, r0
+ b _0223EFE4
+_0223EFC0:
+ mov r4, #0
+ b _0223EFD8
+_0223EFC4:
+ add r0, r5, r4
+ lsl r2, r0, #1
+ ldrh r0, [r3, r2]
+ and r0, r7
+ strh r0, [r3, r2]
+ ldrh r1, [r3, r2]
+ add r0, r6, r4
+ add r4, r4, #1
+ orr r0, r1
+ strh r0, [r3, r2]
+_0223EFD8:
+ cmp r4, #8
+ blt _0223EFC4
+ ldr r0, [sp, #4]
+ add r5, #8
+ add r0, r0, #1
+ str r0, [sp, #4]
+_0223EFE4:
+ ldr r0, [sp, #4]
+ cmp r0, #4
+ blt _0223EFC0
+_0223EFEA:
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+_0223EFF0:
+ ldr r0, [sp, #8]
+ cmp r0, #4
+ blt _0223EF90
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ ble _0223F032
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0
+ bne _0223F032
+ ldr r0, _0223F094 ; =0x02246404
+ sub r1, r1, #1
+ ldrsb r0, [r0, r1]
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ mov r0, #0
+ mov r1, #0x3f
+ str r0, [sp, #4]
+ lsl r1, r1, #0xa
+ b _0223F02C
+_0223F01C:
+ ldr r0, [sp, #4]
+ lsl r2, r0, #1
+ ldrh r0, [r3, r2]
+ and r0, r1
+ strh r0, [r3, r2]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+_0223F02C:
+ ldr r0, [sp, #4]
+ cmp r0, #0x20
+ blt _0223F01C
+_0223F032:
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0]
+ ldr r0, [r0, #0x74]
+ bl FUN_0201AC68
+ ldr r0, [sp]
+ ldrb r0, [r0, #0x12]
+ add r1, r0, #1
+ ldr r0, [sp]
+ strb r1, [r0, #0x12]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0xc
+ blo _0223F090
+ ldr r1, [sp]
+ mov r0, #0
+ mov r2, #0x11
+ strb r0, [r1, #0x12]
+ ldrsb r1, [r1, r2]
+ add r3, r1, #1
+ ldr r1, [sp]
+ strb r3, [r1, #0x11]
+ strb r0, [r1, #0x14]
+ add r0, r1, #0
+ ldrsb r0, [r0, r2]
+ cmp r0, #5
+ blo _0223F090
+ add r0, r1, #0
+ ldrb r0, [r0, #0x10]
+ add r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_0223F076:
+ add r0, r1, #0
+ mov r2, #0
+ ldr r0, [r0, #0xc]
+ add r1, r1, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ ldr r0, [sp]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_0223F090:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223F094: .word 0x02246404
+_0223F098: .word 0x0224640C
+
+ thumb_func_start MOD12_0223F09C
+MOD12_0223F09C: ; 0x0223F09C
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223F0B0
+MOD12_0223F0B0: ; 0x0223F0B0
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r6, r1, #0
+ mov r0, #0x17
+ mov r1, #0x18
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x18
+ bl MI_CpuFill8
+ str r6, [r4]
+ ldrh r0, [r5]
+ ldr r2, _0223F0F8 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, _0223F0FC ; =MOD12_0223F108
+ str r7, [r4, #0xc]
+ bl FUN_0200CA44
+ ldr r0, _0223F100 ; =0x00001134
+ mov r1, #0
+ strb r1, [r6, r0]
+ ldr r0, _0223F104 ; =0x0000046F
+ bl FUN_0200521C
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223F0F8: .word 0x00007530
+_0223F0FC: .word MOD12_0223F108
+_0223F100: .word 0x00001134
+_0223F104: .word 0x0000046F
+
+ thumb_func_start MOD12_0223F108
+MOD12_0223F108: ; 0x0223F108
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldrb r0, [r1, #0x10]
+ str r1, [sp]
+ cmp r0, #0
+ beq _0223F118
+ b _0223F266
+_0223F118:
+ ldr r0, [sp]
+ mov r1, #0x14
+ ldrsb r0, [r0, r1]
+ cmp r0, #0
+ ble _0223F12C
+ sub r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x14]
+ pop {r4, r5, r6, r7, pc}
+_0223F12C:
+ ldr r0, [sp]
+ mov r1, #0x13
+ ldrsb r0, [r0, r1]
+ cmp r0, #0
+ ble _0223F140
+ sub r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x13]
+ pop {r4, r5, r6, r7, pc}
+_0223F140:
+ ldr r0, [sp]
+ mov r1, #1
+ strb r1, [r0, #0x13]
+ ldr r0, [r0]
+ mov r1, #2
+ ldr r0, [r0, #0x74]
+ bl FUN_0201886C
+ mov ip, r0
+ mov r0, #0
+ str r0, [sp, #8]
+ b _0223F1C0
+_0223F158:
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ mov r0, #4
+ sub r1, r0, r1
+ ldr r0, _0223F284 ; =0x02246404
+ ldrsb r1, [r0, r1]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ bmi _0223F1BA
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ ldr r0, [sp]
+ mov r5, #0
+ ldrb r1, [r0, #0x12]
+ mov r0, #0xb
+ mov r7, #0x3f
+ sub r0, r0, r1
+ lsl r1, r0, #1
+ ldr r0, _0223F288 ; =0x0224640C
+ str r5, [sp, #4]
+ ldrh r1, [r0, r1]
+ ldr r0, [sp, #8]
+ lsl r7, r7, #0xa
+ lsl r0, r0, #5
+ add r6, r1, r0
+ b _0223F1B4
+_0223F190:
+ mov r4, #0
+ b _0223F1A8
+_0223F194:
+ add r0, r5, r4
+ lsl r2, r0, #1
+ ldrh r0, [r3, r2]
+ and r0, r7
+ strh r0, [r3, r2]
+ ldrh r1, [r3, r2]
+ add r0, r6, r4
+ add r4, r4, #1
+ orr r0, r1
+ strh r0, [r3, r2]
+_0223F1A8:
+ cmp r4, #8
+ blt _0223F194
+ ldr r0, [sp, #4]
+ add r5, #8
+ add r0, r0, #1
+ str r0, [sp, #4]
+_0223F1B4:
+ ldr r0, [sp, #4]
+ cmp r0, #4
+ blt _0223F190
+_0223F1BA:
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+_0223F1C0:
+ ldr r0, [sp, #8]
+ cmp r0, #4
+ blt _0223F158
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ ble _0223F222
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0
+ bne _0223F222
+ mov r0, #5
+ sub r1, r0, r1
+ ldr r0, _0223F284 ; =0x02246404
+ mov r7, #0x3f
+ ldrsb r0, [r0, r1]
+ lsl r7, r7, #0xa
+ mov r6, #0x1d
+ add r0, r0, #3
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ mov r0, #0
+ mov r1, #2
+ str r0, [sp, #4]
+ lsl r1, r1, #8
+ b _0223F21C
+_0223F1F6:
+ ldr r0, [sp, #4]
+ ldr r5, [sp, #4]
+ lsl r4, r0, #1
+ ldrh r0, [r3, r4]
+ lsl r5, r5, #0x1d
+ and r0, r7
+ strh r0, [r3, r4]
+ ldr r0, [sp, #4]
+ ldrh r2, [r3, r4]
+ lsr r0, r0, #0x1f
+ sub r5, r5, r0
+ ror r5, r6
+ add r0, r0, r5
+ add r0, r0, r1
+ orr r0, r2
+ strh r0, [r3, r4]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+_0223F21C:
+ ldr r0, [sp, #4]
+ cmp r0, #0x20
+ blt _0223F1F6
+_0223F222:
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0]
+ ldr r0, [r0, #0x74]
+ bl FUN_0201AC68
+ ldr r0, [sp]
+ ldrb r0, [r0, #0x12]
+ add r1, r0, #1
+ ldr r0, [sp]
+ strb r1, [r0, #0x12]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0xc
+ blo _0223F280
+ ldr r1, [sp]
+ mov r0, #0
+ mov r2, #0x11
+ strb r0, [r1, #0x12]
+ ldrsb r1, [r1, r2]
+ add r3, r1, #1
+ ldr r1, [sp]
+ strb r3, [r1, #0x11]
+ strb r0, [r1, #0x14]
+ add r0, r1, #0
+ ldrsb r0, [r0, r2]
+ cmp r0, #5
+ blo _0223F280
+ add r0, r1, #0
+ ldrb r0, [r0, #0x10]
+ add r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_0223F266:
+ add r0, r1, #0
+ mov r2, #0
+ ldr r0, [r0, #0xc]
+ add r1, r1, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ ldr r0, [sp]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_0223F280:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223F284: .word 0x02246404
+_0223F288: .word 0x0224640C
+
+ thumb_func_start MOD12_0223F28C
+MOD12_0223F28C: ; 0x0223F28C
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223F2A0
+MOD12_0223F2A0: ; 0x0223F2A0
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x17
+ mov r1, #0x14
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x14
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _0223F2DC ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, _0223F2E0 ; =MOD12_0223F2E4
+ str r6, [r4, #0xc]
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223F2DC: .word 0x00007530
+_0223F2E0: .word MOD12_0223F2E4
+
+ thumb_func_start MOD12_0223F2E4
+MOD12_0223F2E4: ; 0x0223F2E4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #5
+ bhi _0223F388
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223F2FC: ; jump table
+ .short _0223F308 - _0223F2FC - 2 ; case 0
+ .short _0223F318 - _0223F2FC - 2 ; case 1
+ .short _0223F328 - _0223F2FC - 2 ; case 2
+ .short _0223F34A - _0223F2FC - 2 ; case 3
+ .short _0223F364 - _0223F2FC - 2 ; case 4
+ .short _0223F37C - _0223F2FC - 2 ; case 5
+_0223F308:
+ ldr r0, _0223F3A4 ; =0x0000046F
+ mov r1, #0x1e
+ bl FUN_02005350
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223F318:
+ bl FUN_02005404
+ cmp r0, #0
+ bne _0223F3A0
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223F328:
+ ldr r0, _0223F3A8 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ bl MOD12_0223E738
+ ldr r0, [r4]
+ mov r1, #1
+ add r0, #0x14
+ bl MOD12_0223CC9C
+ ldr r0, _0223F3AC ; =0x000006EC
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223F34A:
+ mov r0, #0x12
+ ldrsh r1, [r4, r0]
+ add r1, r1, #1
+ strh r1, [r4, #0x12]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x1e
+ ble _0223F3A0
+ mov r0, #0
+ strh r0, [r4, #0x12]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223F364:
+ ldr r0, [r4]
+ ldr r1, _0223F3B0 ; =0x00000123
+ ldr r2, [r0]
+ ldrb r1, [r2, r1]
+ add r2, r4, #0
+ add r2, #0x11
+ bl MOD12_0223E598
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223F37C:
+ ldrb r1, [r4, #0x11]
+ cmp r1, #1
+ bne _0223F3A0
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0223F388:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0223F3A0:
+ pop {r3, r4, r5, pc}
+ nop
+_0223F3A4: .word 0x0000046F
+_0223F3A8: .word 0x04000050
+_0223F3AC: .word 0x000006EC
+_0223F3B0: .word 0x00000123
+
+ thumb_func_start MOD12_0223F3B4
+MOD12_0223F3B4: ; 0x0223F3B4
+ push {r3, lr}
+ mov r1, #4
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223F3C8
+MOD12_0223F3C8: ; 0x0223F3C8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ add r2, r3, #0
+ ldr r0, _0223F3F8 ; =0x00001BF0
+ mov r1, #1
+ strb r1, [r5, r0]
+ ldr r3, _0223F3FC ; =0x00000172
+ mov r1, #0
+_0223F3DC:
+ ldr r6, [r5]
+ ldrb r0, [r2, r1]
+ add r6, r6, r1
+ add r1, r1, #1
+ strb r0, [r6, r3]
+ cmp r1, #4
+ blt _0223F3DC
+ mov r2, #0
+ add r0, r7, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223F3F8: .word 0x00001BF0
+_0223F3FC: .word 0x00000172
+
+ thumb_func_start MOD12_0223F400
+MOD12_0223F400: ; 0x0223F400
+ push {r3, lr}
+ mov r1, #0x3c
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223F414
+MOD12_0223F414: ; 0x0223F414
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r1, #0
+ mov r1, #0x57
+ add r7, r0, #0
+ mov r0, #0x17
+ lsl r1, r1, #2
+ add r5, r2, #0
+ str r3, [sp, #4]
+ bl FUN_02016998
+ mov r2, #0x57
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl MI_CpuFill8
+ str r6, [r4]
+ ldrh r0, [r5]
+ add r3, r4, #0
+ add r3, #0x18
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ mov r2, #7
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ ldr r5, [sp, #4]
+ strh r0, [r4, #0xa]
+ str r7, [r4, #0xc]
+_0223F452:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0223F452
+ ldr r0, [r5]
+ ldr r2, _0223F510 ; =0x00007530
+ str r0, [r3]
+ ldr r0, _0223F514 ; =MOD12_0223F5CC
+ add r1, r4, #0
+ str r6, [r4, #0x54]
+ bl FUN_0200CA44
+ mov r7, #0
+ add r5, r4, #0
+_0223F46E:
+ ldr r1, [r6]
+ ldr r0, _0223F518 ; =0x00000127
+ ldrb r0, [r1, r0]
+ cmp r7, r0
+ bge _0223F482
+ add r0, r6, #0
+ mov r1, #0
+ bl MOD12_0223F524
+ b _0223F48A
+_0223F482:
+ add r0, r6, #0
+ mov r1, #1
+ bl MOD12_0223F524
+_0223F48A:
+ mov r1, #0x53
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r7, r7, #1
+ add r5, r5, #4
+ cmp r7, #4
+ blt _0223F46E
+ ldr r1, [r4]
+ ldr r2, _0223F51C ; =0x00000123
+ ldr r3, [r1]
+ mov r0, #0
+ ldrb r3, [r3, r2]
+_0223F4A2:
+ add r2, r4, r0
+ ldrb r2, [r2, #0x1a]
+ cmp r3, r2
+ bne _0223F4B0
+ ldr r2, _0223F520 ; =0x00000ACC
+ strb r0, [r1, r2]
+ b _0223F4B6
+_0223F4B0:
+ add r0, r0, #1
+ cmp r0, #4
+ blt _0223F4A2
+_0223F4B6:
+ add r0, r6, #0
+ bl MOD12_0223FDA0
+ ldr r1, [r6]
+ ldr r0, _0223F518 ; =0x00000127
+ ldrb r5, [r1, r0]
+ cmp r5, #4
+ bge _0223F50C
+ ldr r0, [sp, #4]
+ lsl r1, r5, #2
+ add r7, r0, r1
+ add r1, r4, #0
+ mov r0, #0x3c
+ add r1, #0x5c
+ mul r0, r5
+ add r0, r1, r0
+ str r0, [sp, #8]
+_0223F4D8:
+ mov r2, #0
+_0223F4DA:
+ add r0, r4, r2
+ ldrb r0, [r0, #0x1a]
+ cmp r5, r0
+ beq _0223F4E8
+ add r2, r2, #1
+ cmp r2, #4
+ blt _0223F4DA
+_0223F4E8:
+ ldr r0, [r6]
+ add r1, r0, r5
+ mov r0, #0x43
+ lsl r0, r0, #2
+ ldrb r0, [r1, r0]
+ add r1, r5, #0
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ ldr r3, [r7, #0x14]
+ bl MOD12_02240774
+ ldr r0, [sp, #8]
+ add r5, r5, #1
+ add r0, #0x3c
+ add r7, r7, #4
+ str r0, [sp, #8]
+ cmp r5, #4
+ blt _0223F4D8
+_0223F50C:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223F510: .word 0x00007530
+_0223F514: .word MOD12_0223F5CC
+_0223F518: .word 0x00000127
+_0223F51C: .word 0x00000123
+_0223F520: .word 0x00000ACC
+
+ thumb_func_start MOD12_0223F524
+MOD12_0223F524: ; 0x0223F524
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x17
+ mov r1, #0x14
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x14
+ add r4, r0, #0
+ bl MI_CpuFill8
+ str r5, [r4, #4]
+ ldr r0, _0223F550 ; =MOD12_0223F588
+ ldr r2, _0223F554 ; =0x00007594
+ add r1, r4, #0
+ strb r6, [r4, #0x12]
+ bl FUN_0200CA44
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223F550: .word MOD12_0223F588
+_0223F554: .word 0x00007594
+
+ thumb_func_start MOD12_0223F558
+MOD12_0223F558: ; 0x0223F558
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223F56C
+MOD12_0223F56C: ; 0x0223F56C
+ ldrh r2, [r1]
+ strh r2, [r0, #8]
+ ldrh r2, [r1, #2]
+ strh r2, [r0, #0xa]
+ ldrh r2, [r1, #4]
+ strh r2, [r0, #0xc]
+ ldrh r2, [r1, #6]
+ strh r2, [r0, #0xe]
+ ldrh r1, [r1, #8]
+ strh r1, [r0, #0x10]
+ mov r1, #1
+ strb r1, [r0, #0x13]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0223F588
+MOD12_0223F588: ; 0x0223F588
+ push {r4, lr}
+ add r4, r1, #0
+ ldrb r0, [r4, #0x13]
+ cmp r0, #0
+ beq _0223F5C4
+ ldr r0, [r4, #4]
+ ldr r1, _0223F5C8 ; =0x00000171
+ ldr r2, [r0]
+ ldrb r1, [r2, r1]
+ cmp r1, #0
+ beq _0223F5A4
+ ldrb r1, [r4, #0x12]
+ cmp r1, #1
+ bne _0223F5B2
+_0223F5A4:
+ add r1, r4, #0
+ add r1, #8
+ bl MOD12_0223D1CC
+ mov r0, #0
+ strb r0, [r4, #0x13]
+ pop {r4, pc}
+_0223F5B2:
+ add r1, r4, #0
+ mov r0, #0x19
+ add r1, #8
+ bl FUN_020311D0
+ cmp r0, #1
+ bne _0223F5C4
+ mov r0, #0
+ strb r0, [r4, #0x13]
+_0223F5C4:
+ pop {r4, pc}
+ nop
+_0223F5C8: .word 0x00000171
+
+ thumb_func_start MOD12_0223F5CC
+MOD12_0223F5CC: ; 0x0223F5CC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ add r4, r1, #0
+ str r0, [sp, #0x18]
+ ldr r0, [r4]
+ ldr r1, _0223F920 ; =0x00000123
+ ldr r2, [r0]
+ ldrb r2, [r2, r1]
+ ldrb r1, [r4, #0x18]
+ cmp r2, r1
+ beq _0223F5E6
+ mov r7, #1
+ b _0223F5E8
+_0223F5E6:
+ mov r7, #0
+_0223F5E8:
+ ldr r1, _0223F924 ; =0x00001138
+ ldr r2, [r0, r1]
+ add r1, #8
+ ldr r1, [r0, r1]
+ sub r1, r2, r1
+ ldr r2, [r4, #0x24]
+ str r1, [sp, #0x20]
+ lsr r3, r2, #1
+ cmp r1, r3
+ blo _0223F602
+ mov r1, #1
+ str r1, [sp, #0x1c]
+ b _0223F606
+_0223F602:
+ mov r1, #0
+ str r1, [sp, #0x1c]
+_0223F606:
+ ldrb r1, [r4, #0x10]
+ cmp r1, #3
+ bls _0223F60E
+ b _0223FA38
+_0223F60E:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223F61A: ; jump table
+ .short _0223F622 - _0223F61A - 2 ; case 0
+ .short _0223F68A - _0223F61A - 2 ; case 1
+ .short _0223F6F4 - _0223F61A - 2 ; case 2
+ .short _0223F9C8 - _0223F61A - 2 ; case 3
+_0223F622:
+ add r0, #0x14
+ mov r1, #0
+ bl MOD12_0223D068
+ ldr r0, [r4]
+ bl MOD12_0223DC0C
+ add r3, r4, #0
+ ldrb r2, [r4, #0x18]
+ mov r1, #0x3c
+ add r3, #0x5c
+ mul r1, r2
+ add r1, r3, r1
+ ldr r0, [r4]
+ ldr r2, [r4, #0x24]
+ ldr r3, [r4, #0x20]
+ bl MOD12_022407D4
+ mov r0, #0x21
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl MOD12_0223E448
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD12_0223E750
+ ldr r0, [r4]
+ bl MOD12_0223E868
+ add r0, r4, #0
+ add r0, #0x41
+ ldrb r1, [r0]
+ add r0, sp, #0x2c
+ cmp r7, #0
+ strb r1, [r0, #4]
+ ldr r0, [r4]
+ add r2, sp, #0x2c
+ bne _0223F67A
+ mov r1, #4
+ bl MOD12_0223E488
+ b _0223F680
+_0223F67A:
+ mov r1, #5
+ bl MOD12_0223E488
+_0223F680:
+ ldrb r0, [r4, #0x10]
+ add sp, #0x44
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_0223F68A:
+ ldrb r2, [r4, #0x19]
+ add r1, r4, #0
+ add r1, #0x3c
+ bl MOD12_0223E590
+ mov r3, #0
+ mov r2, #0
+ sub r0, r2, r0
+ sbc r3, r1
+ bge _0223F6A0
+ b _0223FA66
+_0223F6A0:
+ ldr r0, [r4]
+ bl MOD12_0223E528
+ ldr r5, [r4]
+ add r1, r4, #0
+ ldrb r2, [r4, #0x19]
+ add r0, r5, #0
+ add r1, #0x3c
+ bl MOD12_0223E590
+ ldr r2, _0223F924 ; =0x00001138
+ add r6, r0, #0
+ add r0, r1, #0
+ add r1, r2, #4
+ ldr r3, [r5, r2]
+ ldr r1, [r5, r1]
+ add r3, r3, r6
+ adc r1, r0
+ add r0, r2, #0
+ add r0, #8
+ add r2, #0xc
+ str r3, [r5, r0]
+ str r1, [r5, r2]
+ cmp r7, #0
+ bne _0223F6E0
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD12_0223E8B4
+ ldrb r0, [r4, #0x11]
+ add r0, r0, #1
+ strb r0, [r4, #0x11]
+_0223F6E0:
+ ldrb r1, [r4, #0x18]
+ ldr r0, [r4]
+ mov r2, #0
+ bl MOD12_0223EC88
+ ldrb r0, [r4, #0x10]
+ add sp, #0x44
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_0223F6F4:
+ ldr r1, [sp, #0x20]
+ add r0, #0x14
+ bl MOD12_0223C438
+ mov r0, #0x21
+ ldr r3, [r4]
+ ldr r1, _0223F924 ; =0x00001138
+ lsl r0, r0, #4
+ ldr r2, [r3, r1]
+ add r1, #8
+ ldr r1, [r3, r1]
+ ldr r0, [r3, r0]
+ sub r1, r2, r1
+ ldr r2, [r4, #0x24]
+ bl MOD12_0223E3DC
+ ldr r5, [r4, #0x24]
+ ldr r0, [sp, #0x20]
+ cmp r0, r5
+ blo _0223F7DC
+ ldrb r0, [r4, #0x16]
+ ldr r1, _0223F924 ; =0x00001138
+ add r0, r0, #1
+ strb r0, [r4, #0x16]
+ ldr r5, [r4]
+ add r0, r5, r1
+ ldmia r0!, {r2, r3}
+ add r1, #8
+ add r0, r5, r1
+ stmia r0!, {r2, r3}
+ mov r0, #0
+ strb r0, [r4, #0x11]
+ strb r0, [r4, #0x12]
+ ldr r0, [r4]
+ bl MOD12_0223FDA0
+ mov r0, #0
+ strb r0, [r4, #0x17]
+ ldr r0, [r4]
+ ldr r1, [r0]
+ ldr r0, _0223F928 ; =0x00000127
+ ldrb r6, [r1, r0]
+ cmp r6, #4
+ bge _0223F764
+ add r1, r4, #0
+ mov r0, #0x3c
+ add r1, #0x5c
+ mul r0, r6
+ add r5, r1, r0
+_0223F756:
+ add r0, r5, #0
+ bl MOD12_0224079C
+ add r6, r6, #1
+ add r5, #0x3c
+ cmp r6, #4
+ blt _0223F756
+_0223F764:
+ ldr r0, [r4]
+ add r0, #0x14
+ bl MOD12_0223C640
+ ldr r0, [r4]
+ bl MOD12_0223DC0C
+ add r3, r4, #0
+ ldrb r2, [r4, #0x18]
+ mov r1, #0x3c
+ add r3, #0x5c
+ mul r1, r2
+ add r1, r3, r1
+ ldr r0, [r4]
+ ldr r2, [r4, #0x24]
+ ldr r3, [r4, #0x20]
+ bl MOD12_022407D4
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD12_0223E750
+ add r0, r4, #0
+ add r0, #0x40
+ ldrb r1, [r4, #0x16]
+ ldrb r0, [r0]
+ cmp r1, r0
+ ldr r0, [r4]
+ blo _0223F7B6
+ bl MOD12_0223ECD0
+ ldr r0, [r4]
+ mov r1, #2
+ add r0, #0x14
+ bl MOD12_0223D068
+ ldrb r0, [r4, #0x10]
+ add sp, #0x44
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_0223F7B6:
+ ldrb r1, [r4, #0x18]
+ mov r2, #0
+ bl MOD12_0223EC88
+ cmp r7, #0
+ bne _0223F7C8
+ ldrb r0, [r4, #0x11]
+ cmp r0, #0
+ beq _0223F7CA
+_0223F7C8:
+ b _0223FA66
+_0223F7CA:
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD12_0223E8B4
+ ldrb r0, [r4, #0x11]
+ add sp, #0x44
+ add r0, r0, #1
+ strb r0, [r4, #0x11]
+ pop {r4, r5, r6, r7, pc}
+_0223F7DC:
+ ldr r1, [r4]
+ ldr r0, _0223F92C ; =0x00000ACC
+ ldrb r6, [r1, r0]
+ ldr r0, [sp, #0x20]
+ lsr r1, r5, #1
+ cmp r0, r1
+ blo _0223F7EE
+ mov r0, #1
+ b _0223F7F0
+_0223F7EE:
+ mov r0, #0
+_0223F7F0:
+ cmp r7, #0
+ bne _0223F88C
+ cmp r0, #0
+ bne _0223F828
+ add r0, r4, #0
+ add r0, #0x41
+ ldrb r1, [r4, #0x17]
+ ldrb r0, [r0]
+ cmp r1, r0
+ bhs _0223F828
+ ldr r0, [r4, #0x20]
+ ldr r1, _0223F930 ; =0x00002710
+ lsr r0, r0, #2
+ bl _u32_div_f
+ lsr r1, r5, #1
+ sub r1, r1, r0
+ ldr r0, [sp, #0x20]
+ cmp r0, r1
+ bhs _0223F828
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x54
+ add r1, sp, #0x34
+ add r3, r2, #0
+ bl MOD12_0223FA74
+ b _0223F836
+_0223F828:
+ add r0, r4, #0
+ mov r2, #1
+ add r0, #0x54
+ add r1, sp, #0x34
+ add r3, r2, #0
+ bl MOD12_0223FA74
+_0223F836:
+ mov r0, #0
+ ldr r1, [sp, #0x34]
+ mvn r0, r0
+ cmp r1, r0
+ bne _0223F842
+ b _0223F94E
+_0223F842:
+ add r0, r4, #0
+ add r0, #0x44
+ str r0, [sp]
+ add r0, sp, #0x38
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r6, [sp, #0xc]
+ ldrb r0, [r4, #0x17]
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0x41
+ ldrb r0, [r0]
+ str r0, [sp, #0x14]
+ ldr r0, [r4]
+ ldr r3, [r4, #0x20]
+ ldr r2, [r0]
+ ldr r0, _0223F920 ; =0x00000123
+ ldrb r0, [r2, r0]
+ ldr r2, [sp, #0x20]
+ bl MOD12_0223FCAC
+ ldr r0, [r4]
+ ldr r1, [r0]
+ ldr r0, _0223F920 ; =0x00000123
+ ldrb r1, [r1, r0]
+ add r0, #0x29
+ lsl r1, r1, #2
+ add r1, r4, r1
+ ldr r0, [r1, r0]
+ add r1, sp, #0x38
+ bl MOD12_0223F56C
+ ldrb r0, [r4, #0x17]
+ add r0, r0, #1
+ strb r0, [r4, #0x17]
+ b _0223F94E
+_0223F88C:
+ cmp r0, #1
+ bne _0223F8D2
+ add r0, r4, #0
+ add r0, #0x41
+ ldrb r1, [r4, #0x17]
+ ldrb r0, [r0]
+ cmp r1, r0
+ bhs _0223F8D2
+ ldr r0, [r4, #0x20]
+ ldr r1, _0223F930 ; =0x00002710
+ lsr r0, r0, #2
+ bl _u32_div_f
+ sub r1, r5, r0
+ ldr r0, [sp, #0x20]
+ cmp r0, r1
+ bhs _0223F8D2
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x54
+ add r1, sp, #0x34
+ add r3, r2, #0
+ bl MOD12_0223FA74
+ ldrb r0, [r4, #0x11]
+ cmp r0, #0
+ bne _0223F8E0
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl MOD12_0223E8B4
+ ldrb r0, [r4, #0x11]
+ add r0, r0, #1
+ strb r0, [r4, #0x11]
+ b _0223F8E0
+_0223F8D2:
+ add r0, r4, #0
+ mov r2, #1
+ add r0, #0x54
+ add r1, sp, #0x34
+ add r3, r2, #0
+ bl MOD12_0223FA74
+_0223F8E0:
+ mov r0, #0
+ ldr r1, [sp, #0x34]
+ mvn r0, r0
+ cmp r1, r0
+ beq _0223F94E
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r2, #0x44
+ str r2, [sp]
+ add r2, sp, #0x38
+ str r2, [sp, #4]
+ ldr r2, _0223F934 ; =0x00001B98
+ add r2, r0, r2
+ str r2, [sp, #8]
+ str r6, [sp, #0xc]
+ ldrb r2, [r4, #0x17]
+ str r2, [sp, #0x10]
+ add r2, r4, #0
+ add r2, #0x41
+ ldrb r2, [r2]
+ str r2, [sp, #0x14]
+ ldr r2, [r0]
+ ldr r0, _0223F920 ; =0x00000123
+ ldr r3, [r4, #0x20]
+ ldrb r0, [r2, r0]
+ ldr r2, [sp, #0x20]
+ bl MOD12_0223FCAC
+ ldr r0, [r4]
+ ldr r1, [r0]
+ ldr r0, _0223F920 ; =0x00000123
+ b _0223F938
+ .align 2, 0
+_0223F920: .word 0x00000123
+_0223F924: .word 0x00001138
+_0223F928: .word 0x00000127
+_0223F92C: .word 0x00000ACC
+_0223F930: .word 0x00002710
+_0223F934: .word 0x00001B98
+_0223F938:
+ ldrb r1, [r1, r0]
+ add r0, #0x29
+ lsl r1, r1, #2
+ add r1, r4, r1
+ ldr r0, [r1, r0]
+ add r1, sp, #0x38
+ bl MOD12_0223F56C
+ ldrb r0, [r4, #0x17]
+ add r0, r0, #1
+ strb r0, [r4, #0x17]
+_0223F94E:
+ ldr r0, [r4]
+ ldr r1, [r0]
+ ldr r0, _0223FA6C ; =0x00000127
+ ldrb r7, [r1, r0]
+ cmp r7, #4
+ bge _0223F99A
+ lsl r0, r7, #2
+ add r5, r4, r0
+ add r1, r4, #0
+ mov r0, #0x3c
+ add r1, #0x5c
+ mul r0, r7
+ add r6, r1, r0
+ add r0, r4, #0
+ str r0, [sp, #0x28]
+ add r0, #0x3c
+ str r0, [sp, #0x28]
+_0223F970:
+ ldr r0, [r4, #0x24]
+ ldr r3, [sp, #0x20]
+ str r0, [sp]
+ ldr r0, [r4, #0x20]
+ add r2, r6, #0
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #8]
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [r4]
+ bl MOD12_02240B08
+ add r7, r7, #1
+ add r5, r5, #4
+ add r6, #0x3c
+ cmp r7, #4
+ blt _0223F970
+_0223F99A:
+ ldr r0, [sp, #0x1c]
+ cmp r0, #1
+ bne _0223F9B6
+ ldrb r0, [r4, #0x12]
+ cmp r0, #0
+ bne _0223F9B6
+ ldrb r1, [r4, #0x18]
+ ldr r0, [r4]
+ mov r2, #1
+ bl MOD12_0223EC88
+ ldrb r0, [r4, #0x12]
+ add r0, r0, #1
+ strb r0, [r4, #0x12]
+_0223F9B6:
+ ldr r0, [sp, #0x1c]
+ cmp r0, #1
+ bne _0223FA66
+ ldr r0, [r4]
+ ldr r1, [sp, #0x20]
+ bl MOD12_0223E7D4
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+_0223F9C8:
+ add r0, r4, #0
+ add r0, #0x54
+ add r1, sp, #0x34
+ mov r2, #1
+ mov r3, #0
+ bl MOD12_0223FA74
+ cmp r0, #1
+ bne _0223FA66
+ ldr r0, [r4]
+ add r0, #0x14
+ bl MOD12_0223C640
+ ldr r0, [r4]
+ ldr r2, [r4, #0x24]
+ add r0, #0x14
+ mov r1, #0
+ bl MOD12_0223C438
+ mov r0, #0x21
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl MOD12_0223E43C
+ ldr r0, [r4]
+ mov r1, #2
+ add r0, #0x14
+ bl MOD12_0223D068
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD12_0223E750
+ ldr r0, [r4]
+ bl MOD12_0223E898
+ ldr r1, [r4]
+ ldr r0, _0223FA70 ; =0x00001130
+ ldr r0, [r1, r0]
+ bl MOD12_0223B92C
+ cmp r0, #0
+ beq _0223FA2E
+ ldr r1, [r4]
+ ldr r0, _0223FA70 ; =0x00001130
+ mov r2, #6
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl MOD12_0223C1F4
+_0223FA2E:
+ ldrb r0, [r4, #0x10]
+ add sp, #0x44
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_0223FA38:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ mov r7, #0x53
+ mov r6, #0
+ add r5, r4, #0
+ lsl r7, r7, #2
+_0223FA4C:
+ ldr r0, [r5, r7]
+ bl MOD12_0223F558
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _0223FA4C
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x18]
+ bl FUN_0200CAB4
+_0223FA66:
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0223FA6C: .word 0x00000127
+_0223FA70: .word 0x00001130
+
+ thumb_func_start MOD12_0223FA74
+MOD12_0223FA74: ; 0x0223FA74
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r7, r1, #0
+ sub r0, r4, #1
+ add r6, r2, #0
+ str r3, [sp]
+ str r0, [r7]
+ cmp r6, #0
+ bne _0223FAA6
+ ldrb r0, [r5, #5]
+ cmp r0, #0
+ beq _0223FAA6
+ sub r0, r0, #1
+ strb r0, [r5, #5]
+ ldrb r0, [r5, #5]
+ cmp r0, #0
+ bne _0223FAA6
+ ldr r1, [r5]
+ ldr r0, _0223FB74 ; =0x00001130
+ add r2, r4, #0
+ ldr r0, [r1, r0]
+ add r1, r4, #0
+ bl MOD12_0223C1F4
+_0223FAA6:
+ ldrb r0, [r5, #4]
+ cmp r0, #0
+ beq _0223FAB6
+ cmp r0, #1
+ beq _0223FADC
+ cmp r0, #2
+ beq _0223FB1E
+ b _0223FB44
+_0223FAB6:
+ cmp r6, #0
+ bne _0223FAD8
+ ldr r0, [sp]
+ cmp r0, #0
+ bne _0223FAD8
+ mov r1, #0
+ strb r1, [r5, #5]
+ ldr r2, [r5]
+ ldr r0, _0223FB74 ; =0x00001130
+ ldr r0, [r2, r0]
+ add r2, r1, #0
+ bl MOD12_0223C1F4
+ ldrb r0, [r5, #4]
+ add r0, r0, #1
+ strb r0, [r5, #4]
+ b _0223FB44
+_0223FAD8:
+ mov r4, #1
+ b _0223FB44
+_0223FADC:
+ cmp r6, #1
+ beq _0223FAE6
+ ldrb r0, [r5, #5]
+ cmp r0, #0
+ beq _0223FAEA
+_0223FAE6:
+ mov r4, #1
+ b _0223FB44
+_0223FAEA:
+ ldr r1, [r5]
+ ldr r0, _0223FB74 ; =0x00001130
+ ldr r0, [r1, r0]
+ bl MOD12_0223B878
+ mov r1, #0
+ mvn r1, r1
+ str r0, [r7]
+ cmp r0, r1
+ beq _0223FB1A
+ ldr r1, [r5]
+ ldr r0, _0223FB78 ; =0x00000AE8
+ ldr r0, [r1, r0]
+ ldr r1, _0223FB7C ; =0x00002710
+ bl _u32_div_f
+ strb r0, [r5, #5]
+ ldrb r0, [r5, #5]
+ sub r0, r0, #2
+ strb r0, [r5, #5]
+ ldrb r0, [r5, #4]
+ add r0, r0, #1
+ strb r0, [r5, #4]
+ b _0223FB44
+_0223FB1A:
+ mov r4, #1
+ b _0223FB44
+_0223FB1E:
+ ldr r1, [r5]
+ ldr r0, _0223FB74 ; =0x00001130
+ ldr r0, [r1, r0]
+ bl MOD12_0223B91C
+ cmp r0, #1
+ bne _0223FB44
+ ldrb r0, [r5, #5]
+ cmp r0, #0
+ beq _0223FB40
+ ldr r1, [r5]
+ ldr r0, _0223FB74 ; =0x00001130
+ mov r2, #6
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl MOD12_0223C1F4
+_0223FB40:
+ mov r0, #1
+ strb r0, [r5, #4]
+_0223FB44:
+ ldr r0, [sp]
+ cmp r0, #1
+ bne _0223FB6E
+ cmp r4, #1
+ bne _0223FB6E
+ ldr r1, [r5]
+ ldr r0, _0223FB74 ; =0x00001130
+ ldr r0, [r1, r0]
+ bl MOD12_0223B92C
+ cmp r0, #0
+ beq _0223FB6E
+ ldr r1, [r5]
+ ldr r0, _0223FB74 ; =0x00001130
+ mov r2, #6
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl MOD12_0223C1F4
+ mov r0, #0
+ strb r0, [r5, #4]
+_0223FB6E:
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223FB74: .word 0x00001130
+_0223FB78: .word 0x00000AE8
+_0223FB7C: .word 0x00002710
+
+ thumb_func_start MOD12_0223FB80
+MOD12_0223FB80: ; 0x0223FB80
+ push {r3, lr}
+ cmp r0, #3
+ bhi _0223FBAA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223FB92: ; jump table
+ .short _0223FB9A - _0223FB92 - 2 ; case 0
+ .short _0223FB9E - _0223FB92 - 2 ; case 1
+ .short _0223FBA2 - _0223FB92 - 2 ; case 2
+ .short _0223FBA6 - _0223FB92 - 2 ; case 3
+_0223FB9A:
+ mov r0, #1
+ pop {r3, pc}
+_0223FB9E:
+ mov r0, #2
+ pop {r3, pc}
+_0223FBA2:
+ mov r0, #3
+ pop {r3, pc}
+_0223FBA6:
+ mov r0, #4
+ pop {r3, pc}
+_0223FBAA:
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223FBB4
+MOD12_0223FBB4: ; 0x0223FBB4
+ push {r3, lr}
+ cmp r0, #4
+ bhi _0223FBE0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223FBC6: ; jump table
+ .short _0223FBE0 - _0223FBC6 - 2 ; case 0
+ .short _0223FBD0 - _0223FBC6 - 2 ; case 1
+ .short _0223FBD4 - _0223FBC6 - 2 ; case 2
+ .short _0223FBD8 - _0223FBC6 - 2 ; case 3
+ .short _0223FBDC - _0223FBC6 - 2 ; case 4
+_0223FBD0:
+ mov r0, #0
+ pop {r3, pc}
+_0223FBD4:
+ mov r0, #1
+ pop {r3, pc}
+_0223FBD8:
+ mov r0, #2
+ pop {r3, pc}
+_0223FBDC:
+ mov r0, #3
+ pop {r3, pc}
+_0223FBE0:
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD12_0223FBE8
+MOD12_0223FBE8: ; 0x0223FBE8
+ push {r3, r4}
+ ldrb r4, [r1]
+ cmp r0, r4
+ bgt _0223FBFA
+ mov r0, #0
+ strb r0, [r2]
+ strb r0, [r3]
+ pop {r3, r4}
+ bx lr
+_0223FBFA:
+ ldrb r4, [r1, #1]
+ cmp r0, r4
+ bgt _0223FC0C
+ mov r0, #0
+ strb r0, [r2]
+ mov r0, #1
+ strb r0, [r3]
+ pop {r3, r4}
+ bx lr
+_0223FC0C:
+ ldrb r4, [r1, #2]
+ cmp r0, r4
+ bgt _0223FC1E
+ mov r0, #1
+ strb r0, [r2]
+ mov r0, #2
+ strb r0, [r3]
+ pop {r3, r4}
+ bx lr
+_0223FC1E:
+ ldrb r1, [r1, #3]
+ cmp r0, r1
+ bgt _0223FC30
+ mov r0, #1
+ strb r0, [r2]
+ mov r0, #3
+ strb r0, [r3]
+ pop {r3, r4}
+ bx lr
+_0223FC30:
+ mov r0, #2
+ strb r0, [r2]
+ mov r0, #4
+ strb r0, [r3]
+ pop {r3, r4}
+ bx lr
+
+ thumb_func_start MOD12_0223FC3C
+MOD12_0223FC3C: ; 0x0223FC3C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r2, #0
+ add r6, r0, #0
+ mov r0, #0
+ ldr r2, _0223FCA4 ; =0x00002710
+ str r3, [sp]
+ mul r6, r2
+ lsr r1, r1, #1
+ add r5, r0, #0
+ add r4, r0, #0
+ cmp r6, #0
+ bls _0223FC62
+ bls _0223FC60
+_0223FC58:
+ add r4, r4, r1
+ add r5, r5, #1
+ cmp r4, r6
+ blo _0223FC58
+_0223FC60:
+ sub r0, r4, r1
+_0223FC62:
+ ldr r1, _0223FCA8 ; =0x00001388
+ add r0, r0, r1
+ lsl r1, r1, #1
+ bl _u32_div_f
+ ldr r1, _0223FCA8 ; =0x00001388
+ str r0, [sp, #4]
+ add r0, r4, r1
+ lsl r1, r1, #1
+ bl _u32_div_f
+ add r4, r0, #0
+ ldr r1, _0223FCA4 ; =0x00002710
+ add r0, r6, #0
+ bl _u32_div_f
+ ldr r1, [sp, #4]
+ sub r1, r0, r1
+ bpl _0223FC8A
+ neg r1, r1
+_0223FC8A:
+ sub r0, r0, r4
+ bpl _0223FC90
+ neg r0, r0
+_0223FC90:
+ cmp r1, r0
+ bhi _0223FC98
+ sub r5, r5, #1
+ b _0223FC9A
+_0223FC98:
+ add r1, r0, #0
+_0223FC9A:
+ ldr r0, [sp]
+ str r1, [r7]
+ str r5, [r0]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223FCA4: .word 0x00002710
+_0223FCA8: .word 0x00001388
+
+ thumb_func_start MOD12_0223FCAC
+MOD12_0223FCAC: ; 0x0223FCAC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ str r0, [sp]
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r1, #0
+ ldr r5, [sp, #0x34]
+ ldr r6, [sp, #0x38]
+ mov r7, #0
+ bl MOD12_0223FB80
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ add r2, sp, #0x18
+ add r3, sp, #0x14
+ bl MOD12_0223FC3C
+ cmp r6, #0
+ beq _0223FD00
+ ldr r0, [sp, #0x14]
+ add r4, r7, #0
+ sub r0, #0x10
+ add r1, r6, #0
+ add r2, r6, #0
+_0223FCDE:
+ ldrb r3, [r1, #8]
+ lsl r3, r3, #0x1d
+ lsr r3, r3, #0x1f
+ cmp r3, #1
+ bne _0223FCEE
+ ldrb r3, [r2, #6]
+ cmp r0, r3
+ beq _0223FCF8
+_0223FCEE:
+ add r4, r4, #1
+ add r1, #0xa
+ add r2, #0xa
+ cmp r4, #8
+ blo _0223FCDE
+_0223FCF8:
+ cmp r4, #8
+ bne _0223FD00
+ mov r0, #0xff
+ str r0, [sp, #0x18]
+_0223FD00:
+ add r2, sp, #0x10
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x30]
+ add r2, #1
+ add r3, sp, #0x10
+ bl MOD12_0223FBE8
+ cmp r6, #0
+ beq _0223FD40
+ cmp r4, #8
+ beq _0223FD40
+ add r0, sp, #0x10
+ ldrb r0, [r0, #1]
+ cmp r0, #0
+ beq _0223FD22
+ cmp r0, #1
+ bne _0223FD40
+_0223FD22:
+ mov r0, #0xa
+ mul r0, r4
+ add r0, r6, r0
+ ldrb r1, [r0, #3]
+ ldr r0, [sp, #0xc]
+ cmp r0, r1
+ beq _0223FD40
+ mov r0, #0xff
+ str r0, [sp, #0x18]
+ mov r1, #4
+ add r0, sp, #0x10
+ strb r1, [r0]
+ mov r1, #2
+ strb r1, [r0, #1]
+ mov r7, #1
+_0223FD40:
+ ldr r0, [sp]
+ strb r0, [r5, #2]
+ ldr r0, [sp, #4]
+ strh r0, [r5]
+ ldr r0, [sp, #0xc]
+ strb r0, [r5, #3]
+ add r0, sp, #0x10
+ ldrb r1, [r0, #1]
+ strb r1, [r5, #4]
+ ldrb r0, [r0]
+ ldr r1, [sp, #0x40]
+ strb r0, [r5, #5]
+ ldr r0, [sp, #0x14]
+ strb r0, [r5, #6]
+ ldr r0, [sp, #0x3c]
+ strb r0, [r5, #7]
+ ldr r0, [sp, #0x44]
+ sub r0, r0, #1
+ cmp r1, r0
+ blt _0223FD6C
+ mov r1, #1
+ b _0223FD6E
+_0223FD6C:
+ mov r1, #0
+_0223FD6E:
+ ldrb r2, [r5, #8]
+ mov r0, #1
+ bic r2, r0
+ lsl r0, r1, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #1
+ and r0, r1
+ orr r0, r2
+ strb r0, [r5, #8]
+ ldrb r1, [r5, #8]
+ mov r0, #2
+ bic r1, r0
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1e
+ orr r0, r1
+ strb r0, [r5, #8]
+ ldrb r1, [r5, #8]
+ mov r0, #4
+ orr r0, r1
+ strb r0, [r5, #8]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223FDA0
+MOD12_0223FDA0: ; 0x0223FDA0
+ push {r4, r5}
+ ldr r1, _0223FDC8 ; =0x00000ABD
+ mov r5, #0
+ add r3, r5, #0
+ add r2, r1, #4
+_0223FDAA:
+ add r4, r0, r5
+ strb r3, [r4, r1]
+ add r5, r5, #1
+ strb r3, [r4, r2]
+ cmp r5, #4
+ blt _0223FDAA
+ ldr r1, _0223FDCC ; =0x00000AC5
+ strb r3, [r0, r1]
+ add r2, r1, #1
+ strb r3, [r0, r2]
+ add r1, r1, #2
+ strb r3, [r0, r1]
+ pop {r4, r5}
+ bx lr
+ nop
+_0223FDC8: .word 0x00000ABD
+_0223FDCC: .word 0x00000AC5
+
+ thumb_func_start MOD12_0223FDD0
+MOD12_0223FDD0: ; 0x0223FDD0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0223FDD4
+MOD12_0223FDD4: ; 0x0223FDD4
+ push {r3, lr}
+ mov r1, #0x3c
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0223FDE8
+MOD12_0223FDE8: ; 0x0223FDE8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #0x17
+ str r1, [sp]
+ add r1, r0, #0
+ add r1, #0xed
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ mov r2, #0x41
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ add r3, r4, #0
+ str r0, [r4]
+ ldrh r0, [r5]
+ add r3, #0xc8
+ mov r2, #7
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ str r7, [r4, #0xc]
+_0223FE24:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0223FE24
+ ldr r0, [r6]
+ ldr r2, _0223FE3C ; =0x00007530
+ str r0, [r3]
+ ldr r0, _0223FE40 ; =MOD12_0223FE44
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223FE3C: .word 0x00007530
+_0223FE40: .word MOD12_0223FE44
+
+ thumb_func_start MOD12_0223FE44
+MOD12_0223FE44: ; 0x0223FE44
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #5
+ bls _0223FE54
+ b _02240002
+_0223FE54:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223FE60: ; jump table
+ .short _0223FE6C - _0223FE60 - 2 ; case 0
+ .short _0223FEBC - _0223FE60 - 2 ; case 1
+ .short _0223FEEA - _0223FE60 - 2 ; case 2
+ .short _0223FF9C - _0223FE60 - 2 ; case 3
+ .short _0223FFBE - _0223FE60 - 2 ; case 4
+ .short _0223FFE2 - _0223FE60 - 2 ; case 5
+_0223FE6C:
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD12_0223EC7C
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #1
+ add r0, #0xa4
+ ldr r0, [r0]
+ ldr r2, _02240020 ; =0x00001FE3
+ sub r3, r1, #3
+ bl FUN_02003210
+ add r6, r4, #0
+ mov r5, #0
+ mov r7, #0x10
+ add r6, #0x11
+_0223FE96:
+ str r7, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ add r0, r6, r5
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ ldr r2, _02240024 ; =0x00007FFF
+ ldr r3, _02240028 ; =0x0000254A
+ add r1, r5, #0
+ bl MOD12_0223EDAC
+ add r5, r5, #1
+ cmp r5, #4
+ blt _0223FE96
+ ldrb r0, [r4, #0x10]
+ add sp, #0x18
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223FEBC:
+ ldr r0, [r4]
+ add r0, #0xa4
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _0223FEDE
+ mov r1, #0
+_0223FECC:
+ add r0, r4, r1
+ ldrb r0, [r0, #0x11]
+ cmp r0, #0
+ beq _0223FEDA
+ add r1, r1, #1
+ cmp r1, #4
+ blt _0223FECC
+_0223FEDA:
+ cmp r1, #4
+ beq _0223FEE0
+_0223FEDE:
+ b _0224001A
+_0223FEE0:
+ ldrb r0, [r4, #0x10]
+ add sp, #0x18
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223FEEA:
+ add r0, r4, #0
+ str r0, [sp, #0xc]
+ add r0, #0x18
+ mov r6, #0
+ str r0, [sp, #0xc]
+_0223FEF4:
+ add r0, r4, r6
+ add r0, #0xca
+ ldrb r1, [r0]
+ mov r2, #0x2c
+ add r7, r1, #0
+ mul r7, r2
+ ldr r2, [r4]
+ lsl r0, r1, #2
+ ldr r2, [r2, #0x14]
+ add r5, r4, r7
+ ldr r2, [r2, r0]
+ str r2, [r5, #0x18]
+ ldr r2, [r4]
+ add r0, r2, r0
+ ldr r0, [r0, #0x5c]
+ str r0, [r5, #0x1c]
+ ldr r2, [r4]
+ lsl r0, r1, #4
+ add r2, #0x18
+ add r0, r2, r0
+ str r0, [r5, #0x20]
+ ldr r1, [r4]
+ ldr r0, _0224002C ; =0x00000AF4
+ ldr r0, [r1, r0]
+ ldr r1, _02240030 ; =0x00002710
+ bl _u32_div_f
+ mov r1, #0x28
+ mul r1, r0
+ add r0, r1, #0
+ mov r1, #0x64
+ bl _u32_div_f
+ strh r0, [r5, #0x26]
+ add r0, r5, #0
+ add r0, #0x24
+ strb r6, [r0]
+ cmp r6, #0
+ bne _0223FF48
+ add r5, #0x25
+ mov r0, #3
+ b _0223FF4C
+_0223FF48:
+ sub r0, r6, #1
+ add r5, #0x25
+_0223FF4C:
+ ldr r1, [sp, #0xc]
+ strb r0, [r5]
+ ldr r0, _02240034 ; =MOD12_02240044
+ ldr r2, _02240038 ; =0x00009CA4
+ add r1, r1, r7
+ bl FUN_0200CA44
+ add r6, r6, #1
+ cmp r6, #4
+ blt _0223FEF4
+ add r0, r4, #0
+ add r0, #0xf1
+ ldrb r1, [r0]
+ add r0, sp, #0x10
+ strb r1, [r0, #4]
+ ldr r0, [r4]
+ add r1, r4, #0
+ add r1, #0xcb
+ ldrb r3, [r1]
+ ldr r2, [r0]
+ ldr r1, _0224003C ; =0x00000123
+ ldrb r1, [r2, r1]
+ cmp r3, r1
+ add r2, sp, #0x10
+ bne _0223FF86
+ mov r1, #4
+ bl MOD12_0223E488
+ b _0223FF8C
+_0223FF86:
+ mov r1, #5
+ bl MOD12_0223E488
+_0223FF8C:
+ ldr r0, _02240040 ; =0x000006F7
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x10]
+ add sp, #0x18
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223FF9C:
+ mov r2, #0
+_0223FF9E:
+ add r0, r1, #0
+ add r0, #0x43
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _0223FFB0
+ add r2, r2, #1
+ add r1, #0x2c
+ cmp r2, #4
+ blt _0223FF9E
+_0223FFB0:
+ cmp r2, #4
+ bne _0224001A
+ ldrb r0, [r4, #0x10]
+ add sp, #0x18
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223FFBE:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #1
+ add r0, #0xa4
+ ldr r0, [r0]
+ ldr r2, _02240020 ; =0x00001FE3
+ sub r3, r1, #3
+ bl FUN_02003210
+ ldrb r0, [r4, #0x10]
+ add sp, #0x18
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223FFE2:
+ ldr r0, [r4]
+ add r0, #0xa4
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _0224001A
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD12_0223EC7C
+ ldrb r0, [r4, #0x10]
+ add sp, #0x18
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+_02240002:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0224001A:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02240020: .word 0x00001FE3
+_02240024: .word 0x00007FFF
+_02240028: .word 0x0000254A
+_0224002C: .word 0x00000AF4
+_02240030: .word 0x00002710
+_02240034: .word MOD12_02240044
+_02240038: .word 0x00009CA4
+_0224003C: .word 0x00000123
+_02240040: .word 0x000006F7
+
+ thumb_func_start MOD12_02240044
+MOD12_02240044: ; 0x02240044
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r1, #0x2a
+ ldrb r1, [r1]
+ cmp r1, #0
+ beq _02240058
+ cmp r1, #1
+ beq _02240114
+ b _0224025E
+_02240058:
+ ldr r0, [r5, #8]
+ ldr r0, [r0, #4]
+ lsl r0, r0, #8
+ str r0, [r5, #0x10]
+ ldr r0, [r5, #8]
+ ldr r0, [r0, #8]
+ lsl r0, r0, #8
+ str r0, [r5, #0x14]
+ ldr r0, [r5, #8]
+ ldr r0, [r0, #0xc]
+ lsl r0, r0, #8
+ str r0, [r5, #0x18]
+ ldrb r0, [r5, #0xc]
+ bl MOD12_0223C210
+ lsl r4, r0, #8
+ ldrb r0, [r5, #0xc]
+ bl MOD12_0223C220
+ lsl r0, r0, #8
+ str r0, [sp, #8]
+ ldrb r0, [r5, #0xc]
+ bl MOD12_0223C234
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ ldrb r0, [r5, #0xd]
+ cmp r0, #0
+ beq _02240096
+ cmp r0, #3
+ bne _022400C8
+_02240096:
+ cmp r0, #0
+ bne _0224009E
+ ldr r0, _0224026C ; =0xFFFFB000
+ b _022400A2
+_0224009E:
+ mov r0, #0x59
+ lsl r0, r0, #0xa
+_022400A2:
+ ldrh r1, [r5, #0xe]
+ sub r0, r0, r4
+ lsr r1, r1, #1
+ bl _s32_div_f
+ str r0, [r5, #0x1c]
+ ldrh r1, [r5, #0xe]
+ mov r0, #0
+ lsr r1, r1, #1
+ bl _s32_div_f
+ str r0, [r5, #0x20]
+ ldrh r1, [r5, #0xe]
+ mov r0, #0
+ lsr r1, r1, #1
+ bl _s32_div_f
+ str r0, [r5, #0x24]
+ b _02240104
+_022400C8:
+ bl MOD12_0223C210
+ lsl r6, r0, #8
+ ldrb r0, [r5, #0xd]
+ bl MOD12_0223C220
+ lsl r0, r0, #8
+ str r0, [sp]
+ ldrb r0, [r5, #0xd]
+ bl MOD12_0223C234
+ lsl r7, r0, #8
+ ldrh r1, [r5, #0xe]
+ sub r0, r6, r4
+ bl _s32_div_f
+ str r0, [r5, #0x1c]
+ ldr r1, [sp]
+ ldr r0, [sp, #8]
+ sub r0, r1, r0
+ ldrh r1, [r5, #0xe]
+ bl _s32_div_f
+ str r0, [r5, #0x20]
+ ldr r0, [sp, #4]
+ ldrh r1, [r5, #0xe]
+ sub r0, r7, r0
+ bl _s32_div_f
+ str r0, [r5, #0x24]
+_02240104:
+ add r0, r5, #0
+ add r0, #0x2a
+ ldrb r0, [r0]
+ add r5, #0x2a
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r5]
+ pop {r4, r5, r6, r7, pc}
+_02240114:
+ ldr r1, [r5, #0x10]
+ ldr r0, [r5, #0x1c]
+ add r0, r1, r0
+ str r0, [r5, #0x10]
+ ldr r1, [r5, #0x14]
+ ldr r0, [r5, #0x20]
+ add r0, r1, r0
+ str r0, [r5, #0x14]
+ ldr r1, [r5, #0x18]
+ ldr r0, [r5, #0x24]
+ add r0, r1, r0
+ str r0, [r5, #0x18]
+ ldrh r0, [r5, #0x28]
+ add r0, r0, #1
+ strh r0, [r5, #0x28]
+ ldrb r0, [r5, #0xd]
+ cmp r0, #0
+ beq _0224013C
+ cmp r0, #3
+ bne _022401DC
+_0224013C:
+ ldrh r1, [r5, #0xe]
+ ldrh r2, [r5, #0x28]
+ lsr r1, r1, #1
+ cmp r2, r1
+ bne _022401DC
+ cmp r0, #0
+ bne _02240164
+ ldr r0, _02240270 ; =0xFFFF9C00
+ mov r1, #1
+ str r0, [r5, #0x10]
+ ldr r0, [r5, #8]
+ ldr r0, [r0]
+ bl MOD17_021DD59C
+ ldr r0, [r5, #8]
+ mov r1, #0x64
+ ldr r0, [r0]
+ bl MOD17_021DD6CC
+ b _02240184
+_02240164:
+ bl MOD12_0223C210
+ add r0, #0x50
+ lsl r0, r0, #8
+ str r0, [r5, #0x10]
+ ldr r0, [r5, #8]
+ mov r1, #0
+ ldr r0, [r0]
+ bl MOD17_021DD59C
+ ldr r0, [r5, #8]
+ mov r1, #0x63
+ ldr r0, [r0]
+ mvn r1, r1
+ bl MOD17_021DD6CC
+_02240184:
+ ldr r0, [r5]
+ mov r1, #2
+ bl FUN_02068E14
+ add r4, r0, #0
+ ldrb r0, [r5, #0xd]
+ bl MOD12_0223C220
+ add r0, r4, r0
+ lsl r0, r0, #8
+ str r0, [r5, #0x14]
+ ldrb r0, [r5, #0xd]
+ bl MOD12_0223C234
+ lsl r0, r0, #8
+ str r0, [r5, #0x18]
+ ldrb r0, [r5, #0xd]
+ bl MOD12_0223C210
+ ldrh r2, [r5, #0xe]
+ ldrh r1, [r5, #0x28]
+ lsl r0, r0, #8
+ ldr r7, [r5, #0x14]
+ sub r1, r2, r1
+ sub r4, r1, #1
+ ldr r1, [r5, #0x10]
+ ldr r6, [r5, #0x18]
+ sub r0, r0, r1
+ add r1, r4, #0
+ bl _s32_div_f
+ str r0, [r5, #0x1c]
+ ldr r0, [r5, #0x14]
+ add r1, r4, #0
+ sub r0, r7, r0
+ bl _s32_div_f
+ str r0, [r5, #0x20]
+ ldr r0, [r5, #0x18]
+ add r1, r4, #0
+ sub r0, r6, r0
+ bl _s32_div_f
+ str r0, [r5, #0x24]
+_022401DC:
+ ldrh r1, [r5, #0x28]
+ ldrh r0, [r5, #0xe]
+ cmp r1, r0
+ blo _0224021C
+ ldr r0, [r5]
+ mov r1, #2
+ bl FUN_02068E14
+ add r4, r0, #0
+ ldrb r0, [r5, #0xd]
+ bl MOD12_0223C210
+ lsl r0, r0, #8
+ str r0, [r5, #0x10]
+ ldrb r0, [r5, #0xd]
+ bl MOD12_0223C220
+ add r0, r4, r0
+ lsl r0, r0, #8
+ str r0, [r5, #0x14]
+ ldrb r0, [r5, #0xd]
+ bl MOD12_0223C234
+ lsl r0, r0, #8
+ str r0, [r5, #0x18]
+ add r0, r5, #0
+ add r0, #0x2a
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x2a
+ strb r1, [r0]
+_0224021C:
+ ldr r1, [r5, #0x10]
+ asr r0, r1, #7
+ lsr r0, r0, #0x18
+ add r0, r1, r0
+ asr r1, r0, #8
+ ldr r0, [r5, #8]
+ str r1, [r0, #4]
+ ldr r1, [r5, #0x14]
+ asr r0, r1, #7
+ lsr r0, r0, #0x18
+ add r0, r1, r0
+ asr r1, r0, #8
+ ldr r0, [r5, #8]
+ str r1, [r0, #8]
+ ldr r1, [r5, #0x18]
+ asr r0, r1, #7
+ lsr r0, r0, #0x18
+ add r0, r1, r0
+ asr r1, r0, #8
+ ldr r0, [r5, #8]
+ str r1, [r0, #0xc]
+ ldr r2, [r5, #8]
+ ldr r0, [r2]
+ ldr r1, [r2, #4]
+ ldr r2, [r2, #8]
+ bl MOD17_021DD620
+ ldr r0, [r5, #4]
+ ldr r1, [r5, #8]
+ bl MOD12_0223D09C
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0224025E:
+ mov r1, #1
+ add r5, #0x2b
+ strb r1, [r5]
+ bl FUN_0200CAB4
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224026C: .word 0xFFFFB000
+_02240270: .word 0xFFFF9C00
+
+ thumb_func_start MOD12_02240274
+MOD12_02240274: ; 0x02240274
+ push {r3, lr}
+ mov r1, #0x3c
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02240288
+MOD12_02240288: ; 0x02240288
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #0x17
+ mov r1, #0x50
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x50
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ add r3, r4, #0
+ str r0, [r4]
+ ldrh r0, [r5]
+ add r3, #0x10
+ mov r2, #7
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ str r7, [r4, #0xc]
+_022402C0:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _022402C0
+ ldr r0, [r6]
+ ldr r2, _022402D8 ; =0x00007530
+ str r0, [r3]
+ ldr r0, _022402DC ; =MOD12_022402E0
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022402D8: .word 0x00007530
+_022402DC: .word MOD12_022402E0
+
+ thumb_func_start MOD12_022402E0
+MOD12_022402E0: ; 0x022402E0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0x4c
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02240330
+ mov r4, #0
+_022402F2:
+ add r1, r5, r4
+ ldrb r1, [r1, #0x12]
+ ldr r0, [r5]
+ add r2, r4, #0
+ bl MOD12_0223DC28
+ add r4, r4, #1
+ cmp r4, #4
+ blt _022402F2
+ ldr r1, [r5]
+ ldr r0, _0224034C ; =0x00001130
+ mov r3, #0
+ ldr r0, [r1, r0]
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD12_0223B758
+ ldr r1, [r5]
+ ldr r0, _0224034C ; =0x00001130
+ mov r2, #6
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl MOD12_0223C1F4
+ add r0, r5, #0
+ add r0, #0x4c
+ ldrb r0, [r0]
+ add r5, #0x4c
+ add r0, r0, #1
+ strb r0, [r5]
+ pop {r3, r4, r5, pc}
+_02240330:
+ mov r2, #0
+ ldr r0, [r5, #0xc]
+ add r1, r5, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ nop
+_0224034C: .word 0x00001130
+
+ thumb_func_start MOD12_02240350
+MOD12_02240350: ; 0x02240350
+ push {r3, lr}
+ mov r1, #0x3c
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02240364
+MOD12_02240364: ; 0x02240364
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #0x17
+ mov r1, #0x50
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x50
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ add r3, r4, #0
+ str r0, [r4]
+ ldrh r0, [r5]
+ add r3, #0x10
+ mov r2, #7
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ str r7, [r4, #0xc]
+_0224039C:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0224039C
+ ldr r0, [r6]
+ ldr r2, _022403B4 ; =0x00007530
+ str r0, [r3]
+ ldr r0, _022403B8 ; =MOD12_022403BC
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022403B4: .word 0x00007530
+_022403B8: .word MOD12_022403BC
+
+ thumb_func_start MOD12_022403BC
+MOD12_022403BC: ; 0x022403BC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0x4c
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _022403D2
+ cmp r0, #1
+ beq _0224040A
+ b _0224044E
+_022403D2:
+ ldr r0, [r5]
+ bl MOD12_0223D588
+ cmp r0, #0
+ beq _02240484
+ mov r4, #0
+ mov r6, #2
+ mov r7, #5
+_022403E2:
+ ldr r0, [r5]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD12_0223DCE8
+ ldr r0, [r5]
+ add r1, r4, #0
+ add r2, r7, #0
+ bl MOD12_0223DCE8
+ add r4, r4, #1
+ cmp r4, #4
+ blt _022403E2
+ add r0, r5, #0
+ add r0, #0x4c
+ ldrb r0, [r0]
+ add r5, #0x4c
+ add r0, r0, #1
+ strb r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_0224040A:
+ mov r7, #0
+ add r6, r7, #0
+ add r4, r7, #0
+_02240410:
+ ldr r0, [r5]
+ add r1, r4, #0
+ bl MOD12_0223DDB0
+ cmp r0, #1
+ bne _0224041E
+ add r7, r7, #1
+_0224041E:
+ ldr r0, [r5]
+ add r1, r4, #0
+ bl MOD12_0223DDE4
+ cmp r0, #1
+ bne _0224042C
+ add r6, r6, #1
+_0224042C:
+ add r4, r4, #1
+ cmp r4, #4
+ blt _02240410
+ cmp r7, #4
+ blt _02240484
+ cmp r6, #4
+ blt _02240484
+ ldr r0, [r5]
+ bl MOD12_0223DCC0
+ add r0, r5, #0
+ add r0, #0x4c
+ ldrb r0, [r0]
+ add r5, #0x4c
+ add r0, r0, #1
+ strb r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_0224044E:
+ ldr r1, [r5]
+ ldr r0, _02240488 ; =0x00001130
+ mov r2, #1
+ ldr r0, [r1, r0]
+ mov r1, #0
+ add r3, r1, #0
+ bl MOD12_0223B758
+ ldr r1, [r5]
+ ldr r0, _02240488 ; =0x00001130
+ ldr r0, [r1, r0]
+ mov r1, #0
+ add r2, r1, #0
+ bl MOD12_0223C1F4
+ mov r2, #0
+ ldr r0, [r5, #0xc]
+ add r1, r5, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_02240484:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02240488: .word 0x00001130
+
+ thumb_func_start MOD12_0224048C
+MOD12_0224048C: ; 0x0224048C
+ push {r3, lr}
+ mov r1, #0x3c
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022404A0
+MOD12_022404A0: ; 0x022404A0
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #0x17
+ mov r1, #0x20
+ add r6, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x20
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ ldr r2, _02240504 ; =0x00007530
+ str r0, [r4]
+ ldrh r0, [r6]
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ str r7, [r4, #0xc]
+ ldrb r0, [r5]
+ strb r0, [r4, #0x11]
+ ldrh r0, [r5, #0x30]
+ strh r0, [r4, #0x14]
+ ldrh r0, [r5, #0x32]
+ strh r0, [r4, #0x16]
+ ldrh r0, [r5, #0x34]
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ add r0, #0x36
+ ldrb r0, [r0]
+ strb r0, [r4, #0x1a]
+ add r0, r5, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ add r5, #0x37
+ strb r0, [r4, #0x1c]
+ ldrb r0, [r5]
+ strb r0, [r4, #0x1b]
+ ldr r0, _02240508 ; =MOD12_0224050C
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02240504: .word 0x00007530
+_02240508: .word MOD12_0224050C
+
+ thumb_func_start MOD12_0224050C
+MOD12_0224050C: ; 0x0224050C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _02240522
+ cmp r0, #1
+ beq _0224055A
+ cmp r0, #2
+ beq _0224056C
+ b _022405A4
+_02240522:
+ ldrb r0, [r4, #0x1a]
+ cmp r0, #0
+ beq _02240554
+ ldr r0, [r4]
+ mov r1, #1
+ add r0, #0x78
+ add r2, r1, #0
+ mov r3, #0xe
+ bl FUN_0200D0BC
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0, #0x74]
+ bl FUN_0201AC68
+ add r2, r4, #0
+ ldrb r1, [r4, #0x1a]
+ ldr r0, [r4]
+ add r2, #0x14
+ bl MOD12_0223E274
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02240554:
+ mov r0, #0x64
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0224055A:
+ ldr r0, [r4]
+ bl MOD12_0223E2A8
+ cmp r0, #0
+ bne _022405BC
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0224056C:
+ ldrb r0, [r4, #0x12]
+ add r0, r0, #1
+ strb r0, [r4, #0x12]
+ ldrb r0, [r4, #0x1c]
+ cmp r0, #1
+ bne _02240580
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02240580:
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x1b]
+ cmp r1, r0
+ blo _022405BC
+ ldr r0, [r4]
+ mov r1, #1
+ add r0, #0x78
+ bl FUN_0200D0E0
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0, #0x74]
+ bl FUN_0201AC68
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_022405A4:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_022405BC:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022405C0
+MOD12_022405C0: ; 0x022405C0
+ push {r3, lr}
+ mov r1, #0x30
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022405D4
+MOD12_022405D4: ; 0x022405D4
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ mov r0, #0xad
+ lsl r0, r0, #4
+ add r6, r1, r0
+ mov r5, #6
+_022405E0:
+ ldmia r3!, {r0, r1}
+ stmia r6!, {r0, r1}
+ sub r5, r5, #1
+ bne _022405E0
+ add r1, r2, #0
+ mov r2, #0
+ add r0, r4, #0
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022405F8
+MOD12_022405F8: ; 0x022405F8
+ push {r3, lr}
+ mov r1, #0x3c
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0224060C
+MOD12_0224060C: ; 0x0224060C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r3, #0
+ add r6, r0, #0
+ add r5, r1, #0
+ add r7, r2, #0
+ bl FUN_0200541C
+ ldrh r0, [r4, #0x24]
+ bl FUN_0200521C
+ ldr r0, _02240640 ; =0x00001134
+ mov r1, #1
+ strb r1, [r5, r0]
+ add r1, r0, #4
+ add r0, #0xc
+ add r1, r5, r1
+ ldmia r1!, {r2, r3}
+ add r0, r5, r0
+ stmia r0!, {r2, r3}
+ mov r2, #0
+ add r0, r6, #0
+ add r1, r7, #0
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02240640: .word 0x00001134
+
+ thumb_func_start MOD12_02240644
+MOD12_02240644: ; 0x02240644
+ push {r3, lr}
+ mov r1, #0x3c
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02240658
+MOD12_02240658: ; 0x02240658
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #0x17
+ mov r1, #0x54
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x54
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ add r3, r4, #0
+ str r0, [r4]
+ ldrh r0, [r5]
+ add r3, #0x10
+ mov r2, #7
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ str r7, [r4, #0xc]
+_02240690:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02240690
+ ldr r0, [r6]
+ ldr r2, _022406A8 ; =0x00007530
+ str r0, [r3]
+ ldr r0, _022406AC ; =MOD12_022406B0
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022406A8: .word 0x00007530
+_022406AC: .word MOD12_022406B0
+
+ thumb_func_start MOD12_022406B0
+MOD12_022406B0: ; 0x022406B0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0x50
+ ldrb r0, [r0]
+ cmp r0, #4
+ bhi _0224074E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022406CC: ; jump table
+ .short _022406D6 - _022406CC - 2 ; case 0
+ .short _022406EC - _022406CC - 2 ; case 1
+ .short _02240704 - _022406CC - 2 ; case 2
+ .short _02240718 - _022406CC - 2 ; case 3
+ .short _02240734 - _022406CC - 2 ; case 4
+_022406D6:
+ ldr r1, [r4]
+ ldr r0, _02240768 ; =0x00001134
+ mov r2, #0
+ strb r2, [r1, r0]
+ add r0, r4, #0
+ add r0, #0x50
+ ldrb r0, [r0]
+ add r4, #0x50
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_022406EC:
+ ldrh r0, [r4, #0x34]
+ bl FUN_02005410
+ cmp r0, #0
+ bne _02240766
+ add r0, r4, #0
+ add r0, #0x50
+ ldrb r0, [r0]
+ add r4, #0x50
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_02240704:
+ ldr r0, [r4]
+ bl MOD12_0223ECF0
+ add r0, r4, #0
+ add r0, #0x50
+ ldrb r0, [r0]
+ add r4, #0x50
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_02240718:
+ ldr r0, [r4, #0x4c]
+ add r0, r0, #1
+ str r0, [r4, #0x4c]
+ cmp r0, #0x3c
+ bls _02240766
+ mov r0, #0
+ str r0, [r4, #0x4c]
+ add r0, r4, #0
+ add r0, #0x50
+ ldrb r0, [r0]
+ add r4, #0x50
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_02240734:
+ ldr r0, _0224076C ; =0x0000046F
+ bl FUN_0200521C
+ ldr r0, _02240770 ; =0x000006E5
+ bl FUN_020054C8
+ add r0, r4, #0
+ add r0, #0x50
+ ldrb r0, [r0]
+ add r4, #0x50
+ add r0, r0, #1
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_0224074E:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02240766:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02240768: .word 0x00001134
+_0224076C: .word 0x0000046F
+_02240770: .word 0x000006E5
+
+ thumb_func_start MOD12_02240774
+MOD12_02240774: ; 0x02240774
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ mov r1, #0
+ mov r2, #0x3c
+ add r7, r3, #0
+ bl MI_CpuFill8
+ add r0, r5, #0
+ add r0, #0x37
+ strb r4, [r0]
+ add r0, r5, #0
+ add r0, #0x38
+ strb r6, [r0]
+ str r7, [r5, #0x30]
+ ldr r0, [sp, #0x18]
+ add r5, #0x39
+ strb r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_0224079C
+MOD12_0224079C: ; 0x0224079C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r1, [r5, #0x30]
+ mov r2, #0x3c
+ str r1, [sp]
+ add r1, r5, #0
+ add r1, #0x37
+ ldrb r7, [r1]
+ add r1, r5, #0
+ add r1, #0x38
+ ldrb r6, [r1]
+ add r1, r5, #0
+ add r1, #0x39
+ ldrb r4, [r1]
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ str r0, [r5, #0x30]
+ add r0, r5, #0
+ add r0, #0x37
+ strb r7, [r0]
+ add r0, r5, #0
+ add r0, #0x38
+ strb r6, [r0]
+ add r5, #0x39
+ strb r4, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_022407D4
+MOD12_022407D4: ; 0x022407D4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r4, r1, #0
+ add r7, r0, #0
+ ldr r1, _022409BC ; =0x00001388
+ lsr r0, r3, #2
+ add r0, r0, r1
+ lsl r1, r1, #1
+ str r3, [sp]
+ bl _u32_div_f
+ str r0, [sp, #8]
+ mov r0, #0x12
+ ldr r1, [r7]
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _022407FC
+ cmp r0, #1
+ bne _02240806
+_022407FC:
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r0, #8
+ str r0, [sp, #0x10]
+ b _02240814
+_02240806:
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [sp]
+ lsr r0, r0, #1
+ str r0, [sp]
+_02240814:
+ mov r5, #0
+ add r1, r5, #0
+ add r0, sp, #0x24
+ b _02240820
+_0224081C:
+ strb r1, [r0, r5]
+ add r5, r5, #1
+_02240820:
+ cmp r5, #0x10
+ blt _0224081C
+ ldr r0, [sp, #0x10]
+ mov r6, #0
+ sub r0, r0, #1
+ str r0, [sp, #0x18]
+ add r0, r4, #0
+ str r0, [sp, #0x14]
+ add r0, #0x30
+ str r0, [sp, #0x14]
+_02240834:
+ ldr r0, [r4, #0x30]
+ ldr r1, [sp, #0x14]
+ bl FUN_02082880
+ ldr r1, [sp, #0x10]
+ bl _s32_div_f
+ add r5, r1, #0
+ beq _02240834
+ add r0, sp, #0x24
+ ldrb r0, [r0, r5]
+ cmp r0, #0
+ bne _02240834
+ ldr r0, [sp, #0xc]
+ cmp r0, #1
+ bne _0224088E
+ ldr r0, [sp, #0x18]
+ cmp r5, r0
+ bne _02240864
+ sub r1, r5, #1
+ add r0, sp, #0x24
+ ldrb r0, [r0, r1]
+ cmp r0, #1
+ beq _02240834
+_02240864:
+ sub r1, r5, #1
+ add r0, sp, #0x24
+ ldrb r0, [r0, r1]
+ cmp r0, #1
+ beq _02240834
+ add r1, r5, #1
+ add r0, sp, #0x24
+ ldrb r0, [r0, r1]
+ cmp r0, #1
+ beq _02240834
+ mov r0, #1
+ tst r0, r5
+ beq _0224088E
+ ldr r0, [r4, #0x30]
+ ldr r1, [sp, #0x14]
+ bl FUN_02082880
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x80
+ blt _02240834
+_0224088E:
+ mov r1, #1
+ add r0, sp, #0x24
+ strb r1, [r0, r5]
+ ldr r0, _022409C0 ; =0x00000AFE
+ add r6, r6, #1
+ ldrb r0, [r7, r0]
+ cmp r6, r0
+ blt _02240834
+ mov r6, #0
+ add r5, r6, #0
+ b _022408C4
+_022408A4:
+ add r0, sp, #0x24
+ ldrb r0, [r0, r5]
+ cmp r0, #1
+ bne _022408C2
+ ldr r0, [sp]
+ add r1, r5, #0
+ mul r1, r0
+ ldr r0, _022409BC ; =0x00001388
+ add r0, r1, r0
+ ldr r1, _022409C4 ; =0x00002710
+ bl _u32_div_f
+ lsl r1, r6, #2
+ str r0, [r4, r1]
+ add r6, r6, #1
+_022408C2:
+ add r5, r5, #1
+_022408C4:
+ cmp r5, #0x10
+ blt _022408A4
+ mov r0, #0x12
+ ldr r1, [r7]
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ add r1, r4, #0
+ add r1, #0x39
+ ldrb r1, [r1]
+ bl MOD12_022409CC
+ add r6, r0, #0
+ add r0, r4, #0
+ str r0, [sp, #0x1c]
+ add r0, #0x30
+ str r0, [sp, #0x1c]
+ lsr r0, r6, #0x1f
+ add r0, r6, r0
+ asr r0, r0, #1
+ add r0, r0, #1
+ mov r5, #0
+ str r0, [sp, #0x20]
+ b _0224092C
+_022408F2:
+ ldr r0, [r4, #0x30]
+ ldr r1, [sp, #0x1c]
+ bl FUN_02082880
+ add r1, r6, #2
+ bl _s32_div_f
+ lsl r0, r5, #2
+ ldr r0, [r4, r0]
+ add r1, r0, r1
+ ldr r0, [sp, #0x20]
+ sub r3, r1, r0
+ bpl _0224090E
+ mov r3, #0
+_0224090E:
+ lsl r0, r5, #2
+ ldr r1, [r4, r0]
+ ldr r0, [sp, #8]
+ sub r2, r3, r1
+ cmp r2, r0
+ blo _0224091E
+ add r0, r0, r1
+ sub r3, r0, #1
+_0224091E:
+ lsl r0, r5, #2
+ add r1, r4, r5
+ str r3, [r4, r0]
+ add r1, #0x28
+ mov r0, #1
+ strb r0, [r1]
+ add r5, r5, #1
+_0224092C:
+ ldr r0, _022409C0 ; =0x00000AFE
+ ldrb r0, [r7, r0]
+ cmp r5, r0
+ blt _022408F2
+ mov r0, #0x12
+ ldr r1, [r7]
+ lsl r0, r0, #4
+ ldrb r1, [r1, r0]
+ ldr r0, _022409C8 ; =0x022464C4
+ ldrb r0, [r0, r1]
+ add r1, r4, #0
+ add r1, #0x30
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x30]
+ bl FUN_02082880
+ add r6, r4, #0
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r4, #0
+ add r1, r2, r1
+ add r0, #0x20
+ strb r1, [r0]
+ mov r5, #1
+ add r6, #0x30
+ b _022409B0
+_02240966:
+ ldr r0, _022409C0 ; =0x00000AFE
+ ldrb r0, [r7, r0]
+ sub r0, r0, #1
+ cmp r5, r0
+ bge _02240994
+ ldr r0, [r4, #0x30]
+ add r1, r6, #0
+ bl FUN_02082880
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r0, [sp, #4]
+ cmp r0, r1
+ ble _02240994
+ sub r0, r5, #1
+ add r0, r4, r0
+ add r0, #0x20
+ ldrb r1, [r0]
+ add r0, r4, r5
+ add r0, #0x20
+ strb r1, [r0]
+ b _022409AE
+_02240994:
+ ldr r0, [r4, #0x30]
+ add r1, r6, #0
+ bl FUN_02082880
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x1e
+ sub r2, r2, r1
+ mov r0, #0x1e
+ ror r2, r0
+ add r0, r4, r5
+ add r1, r1, r2
+ add r0, #0x20
+ strb r1, [r0]
+_022409AE:
+ add r5, r5, #1
+_022409B0:
+ ldr r0, _022409C0 ; =0x00000AFE
+ ldrb r0, [r7, r0]
+ cmp r5, r0
+ blt _02240966
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022409BC: .word 0x00001388
+_022409C0: .word 0x00000AFE
+_022409C4: .word 0x00002710
+_022409C8: .word 0x022464C4
+
+ thumb_func_start MOD12_022409CC
+MOD12_022409CC: ; 0x022409CC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #4
+ blo _022409DA
+ bl ErrorHandling
+_022409DA:
+ ldr r0, _02240A0C ; =0x022464C0
+ cmp r4, #3
+ ldrsb r0, [r0, r5]
+ bhi _02240A02
+ add r1, r4, r4
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022409EE: ; jump table
+ .short _022409F6 - _022409EE - 2 ; case 0
+ .short _02240A08 - _022409EE - 2 ; case 1
+ .short _022409FA - _022409EE - 2 ; case 2
+ .short _02240A02 - _022409EE - 2 ; case 3
+_022409F6:
+ lsl r0, r0, #1
+ pop {r3, r4, r5, pc}
+_022409FA:
+ lsr r1, r0, #0x1f
+ add r1, r0, r1
+ asr r0, r1, #1
+ pop {r3, r4, r5, pc}
+_02240A02:
+ mov r1, #3
+ bl _s32_div_f
+_02240A08:
+ pop {r3, r4, r5, pc}
+ nop
+_02240A0C: .word 0x022464C0
+
+ thumb_func_start MOD12_02240A10
+MOD12_02240A10: ; 0x02240A10
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r6, r0, #0
+ add r5, r2, #0
+ add r4, r3, #0
+ cmp r7, #4
+ blo _02240A22
+ bl ErrorHandling
+_02240A22:
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ beq _02240A3C
+ mov r0, #1
+ add r1, r5, #0
+ and r1, r0
+ and r0, r4
+ cmp r1, r0
+ sub r0, r5, r4
+ cmp r0, #4
+ sub r0, r5, r4
+ cmp r0, #8
+_02240A3C:
+ ldr r0, _02240A70 ; =0x022464C0
+ cmp r6, #3
+ ldrsb r0, [r0, r7]
+ bhi _02240A68
+ add r1, r6, r6
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02240A50: ; jump table
+ .short _02240A58 - _02240A50 - 2 ; case 0
+ .short _02240A5C - _02240A50 - 2 ; case 1
+ .short _02240A60 - _02240A50 - 2 ; case 2
+ .short _02240A68 - _02240A50 - 2 ; case 3
+_02240A58:
+ lsl r0, r0, #1
+ b _02240A68
+_02240A5C:
+ lsl r0, r0, #1
+ b _02240A68
+_02240A60:
+ lsr r1, r0, #0x1f
+ add r1, r0, r1
+ asr r1, r1, #1
+ add r0, r0, r1
+_02240A68:
+ cmp r0, #0
+ bge _02240A6E
+ mov r0, #0
+_02240A6E:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02240A70: .word 0x022464C0
+
+ thumb_func_start MOD12_02240A74
+MOD12_02240A74: ; 0x02240A74
+ push {r4, r5}
+ mov r4, #0
+ ldr r5, [sp, #8]
+ cmp r1, #3
+ bhi _02240AB0
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02240A8A: ; jump table
+ .short _02240A92 - _02240A8A - 2 ; case 0
+ .short _02240A9A - _02240A8A - 2 ; case 1
+ .short _02240AA2 - _02240A8A - 2 ; case 2
+ .short _02240AAA - _02240A8A - 2 ; case 3
+_02240A92:
+ cmp r5, #1
+ bne _02240AB0
+ add r4, r4, #3
+ b _02240AB0
+_02240A9A:
+ cmp r5, #2
+ bne _02240AB0
+ add r4, r4, #3
+ b _02240AB0
+_02240AA2:
+ cmp r5, #4
+ bne _02240AB0
+ add r4, r4, #3
+ b _02240AB0
+_02240AAA:
+ cmp r5, #3
+ bne _02240AB0
+ add r4, r4, #3
+_02240AB0:
+ ldr r1, [sp, #0xc]
+ cmp r1, #0
+ beq _02240ABC
+ cmp r5, r1
+ beq _02240ABC
+ add r4, #8
+_02240ABC:
+ mov r1, #0
+ mvn r1, r1
+ cmp r3, r1
+ beq _02240ADA
+ mov r1, #1
+ add r5, r2, #0
+ and r5, r1
+ and r1, r3
+ cmp r5, r1
+ beq _02240AD2
+ add r4, r4, #2
+_02240AD2:
+ sub r1, r2, r3
+ cmp r1, #8
+ blt _02240ADA
+ add r4, r4, #5
+_02240ADA:
+ cmp r0, #3
+ bhi _02240B02
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02240AEA: ; jump table
+ .short _02240AF2 - _02240AEA - 2 ; case 0
+ .short _02240AF6 - _02240AEA - 2 ; case 1
+ .short _02240AFA - _02240AEA - 2 ; case 2
+ .short _02240B02 - _02240AEA - 2 ; case 3
+_02240AF2:
+ lsl r4, r4, #1
+ b _02240B02
+_02240AF6:
+ lsl r4, r4, #1
+ b _02240B02
+_02240AFA:
+ lsr r0, r4, #0x1f
+ add r0, r4, r0
+ asr r0, r0, #1
+ add r4, r4, r0
+_02240B02:
+ add r0, r4, #0
+ pop {r4, r5}
+ bx lr
+
+ thumb_func_start MOD12_02240B08
+MOD12_02240B08: ; 0x02240B08
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ add r4, #0x38
+ ldrb r4, [r4]
+ cmp r4, #0
+ bne _02240B36
+ cmp r0, #0
+ bne _02240B36
+ ldr r0, [sp, #0x1c]
+ str r0, [sp]
+ ldr r0, [sp, #0x20]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x24]
+ str r0, [sp, #8]
+ add r0, r1, #0
+ add r1, r2, #0
+ add r2, r3, #0
+ ldr r3, [sp, #0x18]
+ bl MOD12_02240B5C
+ add sp, #0xc
+ pop {r3, r4, pc}
+_02240B36:
+ cmp r4, #0
+ beq _02240B56
+ cmp r0, #1
+ bne _02240B56
+ ldr r0, [sp, #0x1c]
+ str r0, [sp]
+ ldr r0, [sp, #0x20]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x24]
+ str r0, [sp, #8]
+ add r0, r1, #0
+ add r1, r2, #0
+ add r2, r3, #0
+ ldr r3, [sp, #0x18]
+ bl MOD12_02240C00
+_02240B56:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02240B5C
+MOD12_02240B5C: ; 0x02240B5C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x24
+ add r4, r1, #0
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r3, [r0]
+ cmp r3, #0
+ bne _02240BF6
+ ldr r0, [sp, #0x3c]
+ add r1, #0x36
+ ldrb r0, [r0, #5]
+ ldrb r1, [r1]
+ cmp r1, r0
+ bhs _02240BF6
+ mov r5, #0x34
+ ldrsh r5, [r4, r5]
+ cmp r5, #0
+ ble _02240B88
+ sub r0, r5, #1
+ add sp, #0x24
+ strh r0, [r4, #0x34]
+ pop {r3, r4, r5, r6, pc}
+_02240B88:
+ mov r5, #0
+_02240B8A:
+ add r6, r4, r5
+ add r6, #0x28
+ ldrb r6, [r6]
+ cmp r6, #1
+ beq _02240B9A
+ add r5, r5, #1
+ cmp r5, #8
+ blt _02240B8A
+_02240B9A:
+ cmp r5, #8
+ bge _02240BF6
+ lsl r6, r5, #2
+ ldr r6, [r4, r6]
+ cmp r6, r2
+ bhi _02240BF6
+ ldr r6, [sp, #0x3c]
+ add r6, #8
+ str r6, [sp]
+ add r6, sp, #0x18
+ str r6, [sp, #4]
+ mov r6, #0
+ str r6, [sp, #8]
+ str r3, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ add r1, r4, r5
+ add r0, #0x37
+ add r1, #0x20
+ ldrb r0, [r0]
+ ldrb r1, [r1]
+ ldr r3, [sp, #0x38]
+ bl MOD12_0223FCAC
+ ldr r0, [sp, #0x40]
+ add r1, sp, #0x18
+ bl MOD12_0223F56C
+ add r0, r4, r5
+ add r1, r6, #0
+ add r0, #0x28
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x36
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x36
+ strb r1, [r0]
+ ldr r0, [sp, #0x38]
+ ldr r1, _02240BFC ; =0x00002710
+ bl _u32_div_f
+ sub r0, r0, #2
+ strh r0, [r4, #0x34]
+_02240BF6:
+ add sp, #0x24
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02240BFC: .word 0x00002710
+
+ thumb_func_start MOD12_02240C00
+MOD12_02240C00: ; 0x02240C00
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ add r7, r0, #0
+ ldr r0, [sp, #0x5c]
+ add r5, r1, #0
+ str r0, [sp, #0x5c]
+ ldr r0, [sp, #0x58]
+ str r2, [sp, #0x18]
+ lsr r0, r0, #1
+ str r0, [sp, #0x34]
+ add r0, r5, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02240C3C
+ add r0, r5, #0
+ add r0, #0x36
+ ldrb r1, [r0]
+ ldr r0, [sp, #0x5c]
+ ldrb r0, [r0, #5]
+ cmp r1, r0
+ bhs _02240C3C
+ mov r0, #0xa
+ mul r0, r1
+ ldr r2, _02240DB4 ; =0x00001BA0
+ add r4, r7, r0
+ ldrb r2, [r4, r2]
+ lsl r2, r2, #0x1d
+ lsr r2, r2, #0x1f
+ bne _02240C3E
+_02240C3C:
+ b _02240DB0
+_02240C3E:
+ mov r6, #0x34
+ ldrsh r2, [r5, r6]
+ cmp r2, #0
+ ble _02240C4E
+ sub r0, r2, #1
+ add sp, #0x44
+ strh r0, [r5, #0x34]
+ pop {r4, r5, r6, r7, pc}
+_02240C4E:
+ ldr r2, _02240DB4 ; =0x00001BA0
+ sub r2, #8
+ add r2, r7, r2
+ add r4, r2, r0
+ ldr r0, [sp, #0x18]
+ lsr r2, r3, #1
+ sub r0, r0, r2
+ str r0, [sp, #0x30]
+ ldrb r0, [r5, #5]
+ cmp r0, #0
+ bne _02240D4C
+ cmp r1, #0
+ bne _02240C70
+ mov r0, #0
+ sub r6, #0x35
+ str r0, [sp, #0x1c]
+ b _02240C86
+_02240C70:
+ sub r1, r1, #1
+ mov r0, #0xa
+ mul r0, r1
+ ldr r1, _02240DB4 ; =0x00001BA0
+ add r0, r7, r0
+ sub r1, r1, #2
+ ldrb r6, [r0, r1]
+ ldr r1, _02240DB4 ; =0x00001BA0
+ sub r1, r1, #5
+ ldrb r0, [r0, r1]
+ str r0, [sp, #0x1c]
+_02240C86:
+ mov r0, #0x12
+ ldr r1, [r7]
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ add r1, r5, #0
+ add r1, #0x39
+ ldrb r1, [r1]
+ ldrb r2, [r4, #6]
+ add r3, r6, #0
+ bl MOD12_02240A10
+ str r0, [sp, #0x28]
+ ldrb r0, [r4, #3]
+ add r3, r6, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x1c]
+ str r0, [sp, #4]
+ mov r0, #0x12
+ ldr r1, [r7]
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ add r1, r5, #0
+ add r1, #0x39
+ ldrb r1, [r1]
+ ldrb r2, [r4, #6]
+ bl MOD12_02240A74
+ str r0, [sp, #0x24]
+ ldrb r1, [r4, #6]
+ ldr r0, [sp, #0x34]
+ mul r0, r1
+ ldr r1, _02240DB8 ; =0x00001388
+ add r0, r0, r1
+ lsl r1, r1, #1
+ bl _u32_div_f
+ add r6, r0, #0
+ add r1, r5, #0
+ ldr r0, [r5, #0x30]
+ add r1, #0x30
+ bl FUN_02082880
+ ldr r1, [sp, #0x28]
+ add r1, r1, #2
+ bl _s32_div_f
+ ldr r0, [sp, #0x28]
+ lsr r2, r0, #0x1f
+ add r2, r0, r2
+ asr r0, r2, #1
+ add r0, r0, #1
+ sub r0, r1, r0
+ add r0, r0, r6
+ str r0, [sp, #0x2c]
+ bpl _02240CF8
+ mov r0, #0
+ str r0, [sp, #0x2c]
+_02240CF8:
+ add r1, r5, #0
+ ldr r0, [r5, #0x30]
+ add r1, #0x30
+ bl FUN_02082880
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r2, [sp, #0x28]
+ ldr r0, [sp, #0x24]
+ add r0, r2, r0
+ cmp r1, r0
+ bge _02240D38
+ add r6, r5, #0
+ add r6, #0x30
+_02240D16:
+ ldr r0, [r5, #0x30]
+ add r1, r6, #0
+ bl FUN_02082880
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x1e
+ sub r2, r2, r1
+ mov r0, #0x1e
+ ror r2, r0
+ add r0, r1, r2
+ str r0, [sp, #0x20]
+ bl MOD12_0223FB80
+ ldrb r1, [r4, #3]
+ cmp r1, r0
+ beq _02240D16
+ b _02240D40
+_02240D38:
+ ldrb r0, [r4, #3]
+ bl MOD12_0223FBB4
+ str r0, [sp, #0x20]
+_02240D40:
+ ldr r0, [sp, #0x2c]
+ str r0, [r5]
+ ldr r0, [sp, #0x20]
+ strb r0, [r5, #4]
+ mov r0, #1
+ strb r0, [r5, #5]
+_02240D4C:
+ ldr r1, [r5]
+ ldr r0, [sp, #0x30]
+ cmp r1, r0
+ bhi _02240DB0
+ ldr r0, [sp, #0x5c]
+ ldr r2, [sp, #0x18]
+ add r0, #8
+ str r0, [sp]
+ add r0, sp, #0x38
+ str r0, [sp, #4]
+ ldr r0, _02240DBC ; =0x00001B98
+ ldr r3, [sp, #0x58]
+ add r0, r7, r0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r0, #0x36
+ ldrb r0, [r0]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x5c]
+ ldrb r0, [r0, #5]
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r0, #0x37
+ ldrb r0, [r0]
+ ldrb r1, [r5, #4]
+ bl MOD12_0223FCAC
+ ldr r0, [sp, #0x60]
+ add r1, sp, #0x38
+ bl MOD12_0223F56C
+ mov r0, #0
+ strb r0, [r5, #5]
+ add r0, r5, #0
+ add r0, #0x36
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x36
+ strb r1, [r0]
+ ldr r0, [sp, #0x58]
+ ldr r1, _02240DC0 ; =0x00002710
+ bl _u32_div_f
+ sub r0, r0, #2
+ strh r0, [r5, #0x34]
+_02240DB0:
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02240DB4: .word 0x00001BA0
+_02240DB8: .word 0x00001388
+_02240DBC: .word 0x00001B98
+_02240DC0: .word 0x00002710
+
+ thumb_func_start MOD12_02240DC4
+MOD12_02240DC4: ; 0x02240DC4
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #5
+ blo _02240DD0
+ bl ErrorHandling
+_02240DD0:
+ ldr r0, _02240DD8 ; =0x022464D0
+ lsl r1, r4, #2
+ ldr r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_02240DD8: .word 0x022464D0
+
+ thumb_func_start MOD12_02240DDC
+MOD12_02240DDC: ; 0x02240DDC
+ mov r0, #0x31
+ bx lr
+
+ thumb_func_start MOD12_02240DE0
+MOD12_02240DE0: ; 0x02240DE0
+ mov r0, #0x32
+ bx lr
+
+ thumb_func_start MOD12_02240DE4
+MOD12_02240DE4: ; 0x02240DE4
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #5
+ blo _02240DF0
+ bl ErrorHandling
+_02240DF0:
+ ldr r0, _02240DF8 ; =0x022464C8
+ ldrb r0, [r0, r4]
+ pop {r4, pc}
+ nop
+_02240DF8: .word 0x022464C8
+
+ thumb_func_start MOD12_02240DFC
+MOD12_02240DFC: ; 0x02240DFC
+ mov r0, #0x2e
+ bx lr
+
+ thumb_func_start MOD12_02240E00
+MOD12_02240E00: ; 0x02240E00
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r3, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ bl MOD12_02240DFC
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD12_02240DC4
+ add r3, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r4, [sp, #4]
+ str r0, [sp, #8]
+ ldr r2, [sp, #0xc]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_0200C00C
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02240E34
+MOD12_02240E34: ; 0x02240E34
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD12_02240DFC
+ str r0, [sp, #8]
+ bl MOD12_02240DDC
+ add r3, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ ldr r2, [sp, #8]
+ add r0, r5, #0
+ add r1, r4, #0
+ str r6, [sp, #4]
+ bl FUN_0200C124
+ bl MOD12_02240DFC
+ add r6, r0, #0
+ bl MOD12_02240DE0
+ add r3, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ str r7, [sp, #4]
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_02240E7C
+MOD12_02240E7C: ; 0x02240E7C
+ ldr r3, _02240E80 ; =0x0200C359
+ bx r3
+ .align 2, 0
+_02240E80: .word 0x0200C359
+
+ thumb_func_start MOD12_02240E84
+MOD12_02240E84: ; 0x02240E84
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ bl FUN_0200C378
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0200C388
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_02240E98
+MOD12_02240E98: ; 0x02240E98
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r6, r3, #0
+ add r4, r0, #0
+ add r7, r1, #0
+ add r5, sp, #0
+ mov r3, #6
+_02240EA6:
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ sub r3, r3, #1
+ bne _02240EA6
+ ldr r0, [r6]
+ str r0, [r5]
+ add r0, r2, #0
+ bl MOD12_02240DE4
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r1, r7, #0
+ add r2, sp, #0
+ bl FUN_0200C154
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_02240EC8
+MOD12_02240EC8: ; 0x02240EC8
+ ldr r3, _02240ECC ; =0x0200C3DD
+ bx r3
+ .align 2, 0
+_02240ECC: .word 0x0200C3DD
+
+ thumb_func_start MOD12_02240ED0
+MOD12_02240ED0: ; 0x02240ED0
+ push {r3, r4, r5, lr}
+ ldr r2, _02240EF4 ; =0x00000A18
+ add r4, r1, #0
+ mov r1, #0
+ add r5, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [r4]
+ str r0, [r5]
+ ldrh r0, [r4, #4]
+ strh r0, [r5, #4]
+ ldrb r0, [r4, #6]
+ strb r0, [r5, #6]
+ ldrb r0, [r4, #7]
+ strb r0, [r5, #7]
+ ldrb r0, [r4, #8]
+ strb r0, [r5, #8]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02240EF4: .word 0x00000A18
+
+ thumb_func_start MOD12_02240EF8
+MOD12_02240EF8: ; 0x02240EF8
+ push {r3, r4, r5, lr}
+ ldr r5, [r0, #0xc]
+ mov r4, #0
+ mov r2, #1
+_02240F00:
+ add r3, r2, #0
+ lsl r3, r4
+ add r1, r5, #0
+ tst r1, r3
+ bne _02240F14
+ ldr r1, [r0, #0xc]
+ orr r1, r3
+ str r1, [r0, #0xc]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_02240F14:
+ add r4, r4, #1
+ cmp r4, #0x20
+ blt _02240F00
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02240F24
+MOD12_02240F24: ; 0x02240F24
+ push {r3, r4}
+ mov r2, #1
+ add r3, r2, #0
+ lsl r3, r1
+ sub r1, r2, #2
+ ldr r4, [r0, #0xc]
+ eor r1, r3
+ and r1, r4
+ str r1, [r0, #0xc]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02240F3C
+MOD12_02240F3C: ; 0x02240F3C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r4, [sp, #0x28]
+ add r5, r0, #0
+ mov r0, #2
+ str r4, [sp, #4]
+ add r4, #8
+ lsl r0, r0, #8
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp]
+ cmp r4, r0
+ bls _02240F5A
+ bl ErrorHandling
+_02240F5A:
+ add r0, r5, #0
+ mov r2, #2
+ add r0, #0x10
+ mov r1, #0
+ lsl r2, r2, #8
+ bl MI_CpuFill8
+ add r0, sp, #8
+ strb r6, [r0, #4]
+ strh r7, [r0, #2]
+ add r0, r5, #0
+ bl MOD12_02240EF8
+ add r1, sp, #8
+ strb r0, [r1, #5]
+ mov r0, #0
+ strb r0, [r1, #6]
+ strh r4, [r1]
+ add r1, r5, #0
+ add r0, sp, #8
+ add r1, #0x10
+ mov r2, #8
+ bl MIi_CpuCopy32
+ add r1, r5, #0
+ ldr r0, [sp]
+ ldr r2, [sp, #4]
+ add r1, #0x18
+ bl MI_CpuCopy8
+ ldr r0, _02240FAC ; =0x00000A15
+ mov r1, #0
+ strb r1, [r5, r0]
+ mov r1, #1
+ sub r0, r0, #5
+ strb r1, [r5, r0]
+ add r0, sp, #8
+ ldrb r0, [r0, #5]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02240FAC: .word 0x00000A15
+
+ thumb_func_start MOD12_02240FB0
+MOD12_02240FB0: ; 0x02240FB0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r7, r3, #0
+ mov r0, #2
+ add r7, #8
+ lsl r0, r0, #8
+ add r4, r1, #0
+ add r6, r2, #0
+ str r3, [sp]
+ cmp r7, r0
+ bls _02240FCC
+ bl ErrorHandling
+_02240FCC:
+ add r0, r5, #0
+ mov r2, #2
+ add r0, #0x10
+ mov r1, #0
+ lsl r2, r2, #8
+ bl MI_CpuFill8
+ ldrh r2, [r4]
+ add r1, sp, #4
+ add r0, sp, #4
+ strh r2, [r1]
+ ldrh r2, [r4, #2]
+ strh r2, [r1, #2]
+ ldrh r2, [r4, #4]
+ strh r2, [r1, #4]
+ ldrh r2, [r4, #6]
+ strh r2, [r1, #6]
+ mov r2, #0xfe
+ strb r2, [r1, #4]
+ mov r2, #1
+ strb r2, [r1, #6]
+ strh r7, [r1]
+ add r1, r5, #0
+ add r1, #0x10
+ mov r2, #8
+ bl MIi_CpuCopy32
+ cmp r6, #0
+ beq _02241012
+ add r1, r5, #0
+ ldr r2, [sp]
+ add r0, r6, #0
+ add r1, #0x18
+ bl MI_CpuCopy8
+_02241012:
+ mov r0, #0xa1
+ mov r1, #1
+ lsl r0, r0, #4
+ strb r1, [r5, r0]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02241020
+MOD12_02241020: ; 0x02241020
+ push {r4, r5}
+ lsl r5, r1, #9
+ mov r1, #0x21
+ lsl r1, r1, #4
+ add r4, r0, r1
+ add r1, #8
+ add r4, r4, r5
+ add r0, r0, r1
+ str r4, [r2]
+ add r0, r0, r5
+ str r0, [r3]
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0224103C
+MOD12_0224103C: ; 0x0224103C
+ mov r1, #0xa1
+ lsl r1, r1, #4
+ ldrb r0, [r0, r1]
+ cmp r0, #1
+ bne _0224104A
+ mov r0, #0
+ bx lr
+_0224104A:
+ mov r0, #1
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02241050
+MOD12_02241050: ; 0x02241050
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ add r7, r3, #0
+ bl MOD12_0224103C
+ cmp r0, #0
+ bne _02241066
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02241066:
+ ldrh r0, [r5, #4]
+ cmp r4, r0
+ blt _02241070
+ bl ErrorHandling
+_02241070:
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r6, #0xc
+ ldr r5, [r5]
+ mul r6, r4
+ add r2, r4, #0
+ ldr r4, [r5, r6]
+ add r3, r7, #0
+ blx r4
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02241088
+MOD12_02241088: ; 0x02241088
+ cmp r0, r2
+ beq _02241098
+ cmp r2, #0xff
+ beq _02241098
+ cmp r2, #0xfe
+ bne _0224109C
+ cmp r1, r0
+ bne _0224109C
+_02241098:
+ mov r0, #1
+ bx lr
+_0224109C:
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD12_022410A0
+MOD12_022410A0: ; 0x022410A0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xa1
+ lsl r0, r0, #4
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bne _022410B2
+ mov r0, #0
+ pop {r4, pc}
+_022410B2:
+ ldrb r0, [r4, #7]
+ cmp r0, #0
+ bne _022410F0
+ ldrb r1, [r4, #6]
+ mov r2, #0x21
+ lsl r2, r2, #4
+ add r0, r4, #0
+ add r3, r4, r2
+ lsl r1, r1, #9
+ add r0, #0x10
+ add r1, r3, r1
+ sub r2, #0x10
+ bl MI_CpuCopy8
+ ldrb r0, [r4, #6]
+ mov r2, #1
+ add r1, r4, r0
+ ldr r0, _02241110 ; =0x00000A11
+ strb r2, [r1, r0]
+ add r0, r4, #0
+ add r0, #0x10
+ mov r1, #0
+ lsl r2, r2, #9
+ bl MI_CpuFill8
+ mov r0, #0xa1
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #1
+ pop {r4, pc}
+_022410F0:
+ ldrh r2, [r4, #0x10]
+ add r1, r4, #0
+ mov r0, #0x18
+ add r1, #0x10
+ bl FUN_02030A78
+ cmp r0, #1
+ bne _0224110C
+ mov r0, #0xa1
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #1
+ pop {r4, pc}
+_0224110C:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_02241110: .word 0x00000A11
+
+ thumb_func_start MOD12_02241114
+MOD12_02241114: ; 0x02241114
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r7, r0, #0
+ add r4, r1, #0
+ add r0, sp, #0x18
+ mov r1, #0
+ mov r2, #0x10
+ bl MI_CpuFill8
+ ldr r0, _022411EC ; =0x00000A11
+ mov r6, #0
+_0224112A:
+ add r1, r7, r6
+ ldrb r1, [r1, r0]
+ cmp r1, #1
+ bne _022411DE
+ add r0, r7, #0
+ add r1, r6, #0
+ add r2, sp, #0x14
+ add r3, sp, #0x10
+ bl MOD12_02241020
+ ldr r2, [sp, #0x14]
+ ldrb r0, [r7, #6]
+ ldrb r1, [r7, #8]
+ ldrb r2, [r2, #4]
+ bl MOD12_02241088
+ cmp r0, #1
+ bne _022411C0
+ ldr r2, [sp, #0x14]
+ ldrh r1, [r7, #4]
+ ldrh r0, [r2, #2]
+ str r0, [sp, #8]
+ cmp r0, r1
+ bhs _022411C0
+ ldrb r0, [r2, #6]
+ cmp r0, #0
+ bne _0224117A
+ add r1, r4, #0
+ ldr r4, [r7]
+ ldr r5, [sp, #8]
+ str r4, [sp, #4]
+ mov r4, #0xc
+ mul r4, r5
+ ldr r5, [sp, #4]
+ ldr r3, [sp, #0x10]
+ add r4, r5, r4
+ ldr r4, [r4, #4]
+ add r0, r7, #0
+ blx r4
+ b _022411C0
+_0224117A:
+ ldr r1, [sp, #8]
+ mov r3, #0xc
+ ldr r0, [r7]
+ mul r3, r1
+ add r0, r0, r3
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _022411AE
+ ldr r1, [sp, #0x10]
+ lsl r0, r6, #2
+ add r3, sp, #0x18
+ str r1, [r3, r0]
+ str r6, [sp]
+ add r1, r4, #0
+ ldr r4, [r7]
+ mov r5, #0xc
+ mov ip, r4
+ ldrh r4, [r2, #2]
+ add r0, r7, #0
+ mul r5, r4
+ str r5, [sp, #0xc]
+ ldr r4, [sp, #0xc]
+ mov r5, ip
+ add r4, r5, r4
+ ldr r4, [r4, #8]
+ blx r4
+_022411AE:
+ ldr r1, [sp, #0x14]
+ add r0, r7, #0
+ ldrb r1, [r1, #5]
+ bl MOD12_02240F24
+ ldr r0, _022411F0 ; =0x00000A15
+ ldrb r1, [r7, r0]
+ add r1, r1, #1
+ strb r1, [r7, r0]
+_022411C0:
+ ldr r0, _022411EC ; =0x00000A11
+ mov r1, #0
+ add r2, r7, r6
+ strb r1, [r2, r0]
+ mov r2, #0x21
+ lsl r2, r2, #4
+ add r3, r7, r2
+ lsl r0, r6, #9
+ add r0, r3, r0
+ sub r2, #0x10
+ bl MI_CpuFill8
+ add sp, #0x28
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_022411DE:
+ add r6, r6, #1
+ cmp r6, #4
+ blt _0224112A
+ mov r0, #0
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022411EC: .word 0x00000A11
+_022411F0: .word 0x00000A15
+
+ thumb_func_start MOD12_022411F4
+MOD12_022411F4: ; 0x022411F4
+ cmp r2, r3
+ beq _022411FC
+ mov r0, #1
+ bx lr
+_022411FC:
+ ldr r2, _0224120C ; =0x00000A15
+ ldrb r0, [r0, r2]
+ cmp r0, r1
+ blt _02241208
+ mov r0, #1
+ bx lr
+_02241208:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0224120C: .word 0x00000A15
+
+ thumb_func_start MOD12_02241210
+MOD12_02241210: ; 0x02241210
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r1, #1
+ lsl r1, r1, #0x1a
+ ldr r0, [r1]
+ ldr r2, _02241454 ; =0xFFFFE0FF
+ and r0, r2
+ str r0, [r1]
+ ldr r0, _02241458 ; =0x04001000
+ ldr r3, [r0]
+ and r2, r3
+ str r2, [r0]
+ ldr r3, [r1]
+ ldr r2, _0224145C ; =0xFFFF1FFF
+ and r3, r2
+ str r3, [r1]
+ ldr r3, [r0]
+ add r1, #0x50
+ and r2, r3
+ str r2, [r0]
+ mov r2, #0
+ strh r2, [r1]
+ add r0, #0x50
+ strh r2, [r0]
+ mov r2, #7
+ mov r0, #3
+ mov r1, #0x18
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r1, #0x4a
+ add r0, r4, #0
+ lsl r1, r1, #6
+ mov r2, #0x18
+ bl FUN_02006268
+ mov r2, #0x4a
+ mov r1, #0
+ lsl r2, r2, #6
+ add r5, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x18
+ bl MOD12_022312D8
+ str r0, [r5, #0xc]
+ add r0, r4, #0
+ bl FUN_0200628C
+ mov r1, #0x5b
+ str r0, [r5]
+ lsl r1, r1, #2
+ str r5, [r0, r1]
+ ldr r2, [r5]
+ mov r3, #3
+ add r0, r1, #4
+ strb r3, [r2, r0]
+ ldr r0, [r5]
+ str r0, [r5, #0x10]
+ add r0, r5, #0
+ bl MOD12_02241B4C
+ ldr r0, _02241460 ; =0x0000127F
+ mov r1, #0
+ strb r1, [r5, r0]
+ mov r0, #0x18
+ bl FUN_02002FD0
+ add r1, r5, #0
+ add r1, #0xd0
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_020038F0
+ add r0, r5, #0
+ add r0, #0xd0
+ mov r2, #2
+ ldr r0, [r0]
+ mov r1, #0
+ lsl r2, r2, #8
+ mov r3, #0x18
+ bl FUN_02003008
+ add r0, r5, #0
+ add r0, #0xd0
+ mov r1, #1
+ ldr r0, [r0]
+ lsl r2, r1, #9
+ mov r3, #0x18
+ bl FUN_02003008
+ add r0, r5, #0
+ add r0, #0xd0
+ mov r2, #7
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r2, r2, #6
+ mov r3, #0x18
+ bl FUN_02003008
+ add r0, r5, #0
+ add r0, #0xd0
+ mov r2, #2
+ ldr r0, [r0]
+ mov r1, #3
+ lsl r2, r2, #8
+ mov r3, #0x18
+ bl FUN_02003008
+ mov r0, #0x18
+ bl FUN_02016B94
+ str r0, [r5, #0x30]
+ mov r0, #0x40
+ mov r1, #0x18
+ bl FUN_0201C24C
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ ldr r0, [r5, #0x30]
+ bl MOD12_02241864
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ mov r0, #2
+ mov r1, #0x18
+ bl FUN_02002C50
+ mov r0, #0x18
+ bl FUN_0200BB14
+ ldr r1, _02241464 ; =0x0224654C
+ ldr r2, _02241468 ; =0x02246504
+ mov r3, #0x20
+ str r0, [r5, #0x28]
+ bl FUN_0200BB6C
+ ldr r1, _0224146C ; =0x00100010
+ mov r0, #1
+ bl FUN_02008D44
+ mov r0, #1
+ bl FUN_02008DDC
+ ldr r0, [r5, #0x28]
+ bl FUN_0200BB34
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ mov r2, #0x80
+ bl FUN_0200BBF0
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ ldr r2, _02241470 ; =0x02246518
+ bl FUN_0200BF60
+ mov r0, #0x18
+ bl FUN_02006D98
+ str r0, [r5, #0x14]
+ bl MOD12_02241B0C
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xcc
+ mov r3, #0x18
+ bl FUN_0200A86C
+ add r1, r5, #0
+ add r1, #0xc4
+ str r0, [r1]
+ mov r0, #0x18
+ bl FUN_0200AA80
+ add r1, r5, #0
+ add r1, #0xc8
+ str r0, [r1]
+ mov r0, #5
+ lsl r0, r0, #6
+ mov r1, #0x18
+ bl FUN_020219F4
+ add r1, r5, #0
+ add r1, #0xcc
+ str r0, [r1]
+ mov r0, #0xa
+ mov r1, #0x18
+ bl FUN_02011744
+ add r1, r5, #0
+ add r1, #0xd4
+ str r0, [r1]
+ add r0, r5, #0
+ bl MOD12_02241B90
+ add r0, r5, #0
+ bl MOD12_02241BA0
+ add r0, r5, #0
+ bl MOD12_022419D0
+ add r0, r5, #0
+ bl MOD12_02241B78
+ add r0, r5, #0
+ bl MOD12_02241B88
+ add r0, r5, #0
+ bl MOD12_02242454
+ bl FUN_02033E74
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0x18
+ str r1, [sp, #8]
+ mov r1, #0x21
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldr r0, _02241474 ; =MOD12_0224182C
+ ldr r2, _02241478 ; =0x00013880
+ add r1, r5, #0
+ bl FUN_0200CA44
+ str r0, [r5, #4]
+ mov r0, #0x85
+ mov r1, #1
+ lsl r0, r0, #4
+ strb r1, [r5, r0]
+ bl FUN_0201E788
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ ldr r1, _0224147C ; =0x0000046F
+ mov r0, #6
+ mov r2, #1
+ bl FUN_0200433C
+ ldr r1, [r5]
+ ldr r0, _02241480 ; =0x00000171
+ ldrb r0, [r1, r0]
+ bl FUN_020833D4
+ ldr r0, _02241484 ; =MOD12_02241754
+ add r1, r5, #0
+ bl FUN_02015F10
+ ldr r0, _02241488 ; =MOD12_02241814
+ add r1, r5, #0
+ mov r2, #0xa
+ bl FUN_0200CA60
+ str r0, [r5, #8]
+ ldr r0, _0224148C ; =0x000006E5
+ bl FUN_020054C8
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02241454: .word 0xFFFFE0FF
+_02241458: .word 0x04001000
+_0224145C: .word 0xFFFF1FFF
+_02241460: .word 0x0000127F
+_02241464: .word 0x0224654C
+_02241468: .word 0x02246504
+_0224146C: .word 0x00100010
+_02241470: .word 0x02246518
+_02241474: .word MOD12_0224182C
+_02241478: .word 0x00013880
+_0224147C: .word 0x0000046F
+_02241480: .word 0x00000171
+_02241484: .word MOD12_02241754
+_02241488: .word MOD12_02241814
+_0224148C: .word 0x000006E5
+
+ thumb_func_start MOD12_02241490
+MOD12_02241490: ; 0x02241490
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02082878
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _022414B2
+ cmp r0, #1
+ beq _022414E4
+ cmp r0, #2
+ beq _0224156C
+ b _0224157A
+_022414B2:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _0224157A
+ ldr r0, _02241580 ; =MOD12_022417DC
+ add r1, r4, #0
+ bl FUN_02015F34
+ mov r0, #0xff
+ str r0, [sp]
+ ldr r0, _02241584 ; =0x0000D6D8
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r1, #0xd0
+ ldr r1, [r1]
+ ldr r2, _02241588 ; =0x022464F4
+ mov r0, #0x18
+ mov r3, #8
+ bl MOD12_022318A4
+ ldr r1, _0224158C ; =0x00000848
+ str r0, [r4, r1]
+ mov r0, #1
+ str r0, [r5]
+ b _0224157A
+_022414E4:
+ ldr r0, [r4]
+ bl FUN_020828BC
+ cmp r0, #1
+ bne _02241540
+ ldr r2, _02241590 ; =0x0000084E
+ ldr r1, _02241594 ; =0x00001274
+ ldrh r2, [r4, r2]
+ add r0, r4, #0
+ add r1, r4, r1
+ lsl r3, r2, #2
+ ldr r2, _02241598 ; =0x02246594
+ ldr r2, [r2, r3]
+ blx r2
+ cmp r0, #1
+ beq _02241508
+ cmp r0, #2
+ bne _0224152A
+_02241508:
+ cmp r0, #1
+ bne _02241514
+ ldr r0, _02241590 ; =0x0000084E
+ ldrh r1, [r4, r0]
+ add r1, r1, #1
+ b _0224151A
+_02241514:
+ ldr r0, _0224159C ; =0x00001276
+ ldrh r1, [r4, r0]
+ ldr r0, _02241590 ; =0x0000084E
+_0224151A:
+ strh r1, [r4, r0]
+ ldr r0, _02241594 ; =0x00001274
+ mov r1, #0
+ add r0, r4, r0
+ mov r2, #8
+ bl MI_CpuFill8
+ b _02241540
+_0224152A:
+ cmp r0, #3
+ bne _02241540
+ mov r0, #2
+ str r0, [r5]
+ ldr r0, _02241594 ; =0x00001274
+ mov r1, #0
+ add r0, r4, r0
+ mov r2, #8
+ bl MI_CpuFill8
+ b _0224157A
+_02241540:
+ ldr r0, _022415A0 ; =0x0000085C
+ add r0, r4, r0
+ bl MOD12_022410A0
+ ldr r0, _022415A0 ; =0x0000085C
+ add r1, r4, #0
+ add r0, r4, r0
+ bl MOD12_02241114
+ ldr r0, _022415A4 ; =0x0000127C
+ ldrb r1, [r4, r0]
+ cmp r1, #1
+ bne _0224157A
+ mov r1, #2
+ sub r0, #8
+ str r1, [r5]
+ add r0, r4, r0
+ mov r1, #0
+ mov r2, #8
+ bl MI_CpuFill8
+ b _0224157A
+_0224156C:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _0224157A
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224157A:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02241580: .word MOD12_022417DC
+_02241584: .word 0x0000D6D8
+_02241588: .word 0x022464F4
+_0224158C: .word 0x00000848
+_02241590: .word 0x0000084E
+_02241594: .word 0x00001274
+_02241598: .word 0x02246594
+_0224159C: .word 0x00001276
+_022415A0: .word 0x0000085C
+_022415A4: .word 0x0000127C
+
+ thumb_func_start MOD12_022415A8
+MOD12_022415A8: ; 0x022415A8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ bl FUN_02012EAC
+ add r0, r4, #0
+ bl MOD12_02241B80
+ add r0, r4, #0
+ bl MOD12_02241B8C
+ add r0, r4, #0
+ bl MOD12_02241B98
+ add r0, r4, #0
+ bl MOD12_02241BF8
+ add r5, r4, #0
+ mov r6, #0
+ add r5, #0x34
+_022415D4:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r6, r6, #1
+ add r5, #0x10
+ cmp r6, #9
+ blt _022415D4
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x30]
+ mov r1, #3
+ bl FUN_020178A0
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201797C
+ ldr r0, [r4, #0x30]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ bl FUN_0200C398
+ ldr r0, [r4, #0x28]
+ bl FUN_0200BD04
+ bl FUN_0201C29C
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD12_022424D4
+ ldr r0, [r4, #0x14]
+ bl FUN_020072E8
+ add r0, r4, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ bl FUN_020117BC
+ mov r0, #2
+ bl FUN_02002CF8
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_02003038
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_02003038
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ mov r1, #2
+ bl FUN_02003038
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ mov r1, #3
+ bl FUN_02003038
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl FUN_02002FEC
+ add r0, r4, #0
+ add r0, #0xcc
+ ldr r0, [r0]
+ bl FUN_02021A20
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ bl FUN_0200AB18
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x30]
+ bl FUN_02016A18
+ ldr r0, [r4, #4]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #8]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD12_02231378
+ bl FUN_0201CD04
+ add r0, r7, #0
+ bl FUN_0200627C
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _02241734 ; =0xFFFF1FFF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _02241738 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ mov r0, #0x18
+ bl FUN_020168D0
+ bl FUN_02083404
+ mov r1, #5
+ mov r2, #2
+ ldr r0, _0224173C ; =0x00007FFF
+ lsl r1, r1, #0x18
+ lsl r2, r2, #8
+ bl MIi_CpuClear16
+ mov r2, #2
+ ldr r0, _0224173C ; =0x00007FFF
+ ldr r1, _02241740 ; =0x05000200
+ lsl r2, r2, #8
+ bl MIi_CpuClear16
+ mov r2, #2
+ ldr r0, _0224173C ; =0x00007FFF
+ ldr r1, _02241744 ; =0x05000400
+ lsl r2, r2, #8
+ bl MIi_CpuClear16
+ mov r2, #2
+ ldr r0, _0224173C ; =0x00007FFF
+ ldr r1, _02241748 ; =0x05000600
+ lsl r2, r2, #8
+ bl MIi_CpuClear16
+ bl FUN_02033ED0
+ ldr r0, _0224174C ; =SDK_OVERLAY_MODULE_08_ID
+ bl UnloadOverlayByID
+ ldr r0, _02241750 ; =SDK_OVERLAY_MODULE_17_ID
+ bl UnloadOverlayByID
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02241734: .word 0xFFFF1FFF
+_02241738: .word 0x04001000
+_0224173C: .word 0x00007FFF
+_02241740: .word 0x05000200
+_02241744: .word 0x05000400
+_02241748: .word 0x05000600
+_0224174C: .word SDK_OVERLAY_MODULE_08_ID
+_02241750: .word SDK_OVERLAY_MODULE_17_ID
+
+ thumb_func_start MOD12_02241754
+MOD12_02241754: ; 0x02241754
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ ldr r0, _022417CC ; =0x00000854
+ sub r1, r0, #2
+ ldrb r3, [r4, r1]
+ sub r1, r0, #3
+ ldrb r1, [r4, r1]
+ sub r6, r0, #1
+ ldrb r6, [r4, r6]
+ lsl r2, r1, #8
+ mov r1, #0xff
+ lsl r1, r1, #8
+ and r2, r1
+ orr r2, r6
+ ldrb r5, [r4, r0]
+ ldr r6, _022417D0 ; =0x04000040
+ strh r2, [r6]
+ lsl r2, r3, #8
+ and r2, r1
+ orr r2, r5
+ strh r2, [r6, #4]
+ add r2, r0, #4
+ ldrb r5, [r4, r2]
+ add r2, r0, #2
+ ldrb r3, [r4, r2]
+ add r2, r0, #1
+ ldrb r2, [r4, r2]
+ add r0, r0, #3
+ ldrb r0, [r4, r0]
+ lsl r2, r2, #8
+ and r2, r1
+ orr r0, r2
+ strh r0, [r6, #2]
+ lsl r0, r3, #8
+ and r0, r1
+ orr r0, r5
+ strh r0, [r6, #6]
+ ldr r0, [r4, #0x14]
+ bl FUN_020081C4
+ bl FUN_0201C30C
+ bl FUN_0200BC30
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl FUN_0200372C
+ ldr r0, [r4, #0x30]
+ bl FUN_0201AB60
+ ldr r3, _022417D4 ; =0x027E0000
+ ldr r1, _022417D8 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, r5, r6, pc}
+ nop
+_022417CC: .word 0x00000854
+_022417D0: .word 0x04000040
+_022417D4: .word 0x027E0000
+_022417D8: .word 0x00003FF8
+
+ thumb_func_start MOD12_022417DC
+MOD12_022417DC: ; 0x022417DC
+ push {r3, lr}
+ ldr r1, _0224180C ; =0x0000127F
+ ldrb r0, [r0, r1]
+ cmp r0, #1
+ bne _02241808
+ ldr r0, _02241810 ; =0x04000006
+ ldrh r0, [r0]
+ cmp r0, #0x90
+ blt _022417FC
+ cmp r0, #0x98
+ bgt _022417FC
+ mov r0, #1
+ mov r1, #0
+ bl FUN_020178BC
+ pop {r3, pc}
+_022417FC:
+ cmp r0, #0x90
+ bge _02241808
+ mov r0, #1
+ mov r1, #2
+ bl FUN_020178BC
+_02241808:
+ pop {r3, pc}
+ nop
+_0224180C: .word 0x0000127F
+_02241810: .word 0x04000006
+
+ thumb_func_start MOD12_02241814
+MOD12_02241814: ; 0x02241814
+ push {r3, lr}
+ ldr r0, _02241828 ; =0x0000127F
+ ldrb r0, [r1, r0]
+ cmp r0, #1
+ bne _02241826
+ mov r0, #1
+ mov r1, #2
+ bl FUN_020178BC
+_02241826:
+ pop {r3, pc}
+ .align 2, 0
+_02241828: .word 0x0000127F
+
+ thumb_func_start MOD12_0224182C
+MOD12_0224182C: ; 0x0224182C
+ push {r4, lr}
+ mov r0, #0x85
+ add r4, r1, #0
+ lsl r0, r0, #4
+ ldrb r0, [r4, r0]
+ cmp r0, #1
+ bne _02241854
+ ldr r0, [r4, #0x14]
+ bl FUN_02006ED4
+ bl MOD08_02215A44
+ ldr r0, [r4, #0x2c]
+ bl FUN_0200BC1C
+ bl FUN_0200BC38
+ ldr r0, _02241860 ; =0x04000540
+ mov r1, #1
+ str r1, [r0]
+_02241854:
+ ldr r1, [r4, #0x30]
+ mov r0, #0x18
+ bl FUN_020335F0
+ pop {r4, pc}
+ nop
+_02241860: .word 0x04000540
+
+ thumb_func_start MOD12_02241864
+MOD12_02241864: ; 0x02241864
+ push {r3, r4, r5, lr}
+ sub sp, #0xa8
+ add r4, r0, #0
+ bl FUN_0201E6D8
+ ldr r5, _022419BC ; =0x0224656C
+ add r3, sp, #0x2c
+ mov r2, #5
+_02241874:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02241874
+ add r0, sp, #0x2c
+ bl FUN_0201E66C
+ mov r1, #6
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x12
+ bl MIi_CpuClear32
+ mov r1, #0x62
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ bl MIi_CpuClear32
+ mov r1, #0x19
+ mov r2, #1
+ mov r0, #0
+ lsl r1, r1, #0x16
+ lsl r2, r2, #0x12
+ bl MIi_CpuClear32
+ mov r1, #0x66
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ bl MIi_CpuClear32
+ ldr r5, _022419C0 ; =0x022464E4
+ add r3, sp, #0x1c
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _022419C4 ; =0x022465C0
+ add r3, sp, #0x54
+ mov r2, #0xa
+_022418D4:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _022418D4
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ add r2, sp, #0x54
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #2
+ add r2, sp, #0x70
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #3
+ add r2, sp, #0x8c
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r1, #3
+ add r0, r4, #0
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ ldr r1, _022419C8 ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #1
+ orr r2, r0
+ strh r2, [r1]
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r5, _022419CC ; =0x02246530
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02018744
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #4
+ add r3, r2, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #4
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add sp, #0xa8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022419BC: .word 0x0224656C
+_022419C0: .word 0x022464E4
+_022419C4: .word 0x022465C0
+_022419C8: .word 0x04000008
+_022419CC: .word 0x02246530
+
+ thumb_func_start MOD12_022419D0
+MOD12_022419D0: ; 0x022419D0
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x1f
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ ldr r0, [r4, #0x30]
+ add r1, #0x34
+ mov r2, #1
+ mov r3, #2
+ bl FUN_02019064
+ mov r2, #1
+ add r1, r4, #0
+ str r2, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x8b
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x30]
+ add r1, #0x44
+ mov r3, #6
+ bl FUN_02019064
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0xa3
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ ldr r0, [r4, #0x30]
+ add r1, #0x54
+ mov r2, #1
+ mov r3, #6
+ bl FUN_02019064
+ mov r0, #9
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0xbb
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ ldr r0, [r4, #0x30]
+ add r1, #0x64
+ mov r2, #1
+ mov r3, #6
+ bl FUN_02019064
+ mov r1, #0xd
+ str r1, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0xd3
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ ldr r0, [r4, #0x30]
+ add r1, #0x74
+ mov r2, #1
+ mov r3, #6
+ bl FUN_02019064
+ mov r2, #1
+ add r1, r4, #0
+ str r2, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0xeb
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x30]
+ add r1, #0x84
+ mov r3, #0x10
+ bl FUN_02019064
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ add r0, #0xf6
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ ldr r0, [r4, #0x30]
+ add r1, #0x94
+ mov r2, #1
+ mov r3, #0x10
+ bl FUN_02019064
+ mov r0, #9
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _02241B04 ; =0x0000011B
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x30]
+ add r1, #0xa4
+ mov r2, #1
+ mov r3, #0x10
+ bl FUN_02019064
+ mov r1, #0xd
+ str r1, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ ldr r0, _02241B08 ; =0x00000133
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x30]
+ add r4, #0xb4
+ add r1, r4, #0
+ mov r2, #1
+ mov r3, #0x10
+ bl FUN_02019064
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+_02241B04: .word 0x0000011B
+_02241B08: .word 0x00000133
+
+ thumb_func_start MOD12_02241B0C
+MOD12_02241B0C: ; 0x02241B0C
+ push {r3, r4, r5, lr}
+ ldr r3, _02241B44 ; =0x021064B8
+ mov r0, #2
+ mov r1, #0
+ ldr r3, [r3]
+ lsl r0, r0, #0xe
+ add r2, r1, #0
+ blx r3
+ ldr r3, _02241B48 ; =0x021064C0
+ mov r1, #0
+ add r4, r0, #0
+ ldr r3, [r3]
+ mov r0, #0x80
+ add r2, r1, #0
+ blx r3
+ add r5, r0, #0
+ cmp r4, #0
+ bne _02241B34
+ bl ErrorHandling
+_02241B34:
+ cmp r5, #0
+ bne _02241B3C
+ bl ErrorHandling
+_02241B3C:
+ bl FUN_02012CC8
+ pop {r3, r4, r5, pc}
+ nop
+_02241B44: .word 0x021064B8
+_02241B48: .word 0x021064C0
+
+ thumb_func_start MOD12_02241B4C
+MOD12_02241B4C: ; 0x02241B4C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _02241B5A
+ bl ErrorHandling
+_02241B5A:
+ mov r1, #0xf3
+ mov r5, #0
+ mov r0, #3
+ lsl r1, r1, #2
+_02241B62:
+ sub r3, r0, r5
+ add r2, r4, r5
+ add r5, r5, #1
+ strb r3, [r2, r1]
+ cmp r5, #4
+ blt _02241B62
+ add r0, r4, #0
+ bl MOD12_02243A20
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02241B78
+MOD12_02241B78: ; 0x02241B78
+ ldr r3, _02241B7C ; =MOD12_0224278C
+ bx r3
+ .align 2, 0
+_02241B7C: .word MOD12_0224278C
+
+ thumb_func_start MOD12_02241B80
+MOD12_02241B80: ; 0x02241B80
+ ldr r3, _02241B84 ; =MOD12_02242A6C
+ bx r3
+ .align 2, 0
+_02241B84: .word MOD12_02242A6C
+
+ thumb_func_start MOD12_02241B88
+MOD12_02241B88: ; 0x02241B88
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02241B8C
+MOD12_02241B8C: ; 0x02241B8C
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02241B90
+MOD12_02241B90: ; 0x02241B90
+ ldr r3, _02241B94 ; =MOD12_022426BC
+ bx r3
+ .align 2, 0
+_02241B94: .word MOD12_022426BC
+
+ thumb_func_start MOD12_02241B98
+MOD12_02241B98: ; 0x02241B98
+ ldr r3, _02241B9C ; =MOD12_02242A18
+ bx r3
+ .align 2, 0
+_02241B9C: .word MOD12_02242A18
+
+ thumb_func_start MOD12_02241BA0
+MOD12_02241BA0: ; 0x02241BA0
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x30]
+ mov r0, #0x2d
+ mov r1, #0x12
+ mov r3, #4
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x30]
+ mov r0, #0x2d
+ mov r1, #0x13
+ mov r3, #4
+ bl FUN_020068C8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ add r4, #0xd0
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x2d
+ mov r2, #0x21
+ mov r3, #0x18
+ bl FUN_020030E8
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02241BF8
+MOD12_02241BF8: ; 0x02241BF8
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02241BFC
+MOD12_02241BFC: ; 0x02241BFC
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ ldrh r1, [r7]
+ add r4, r0, #0
+ cmp r1, #0
+ beq _02241C12
+ cmp r1, #1
+ beq _02241CA0
+ cmp r1, #2
+ beq _02241CBE
+ b _02241CE0
+_02241C12:
+ bl MOD12_022436D0
+ mov r0, #0x13
+ ldr r2, [r4]
+ mov r5, #0
+ lsl r0, r0, #4
+_02241C1E:
+ ldrb r1, [r2, r0]
+ cmp r1, #0
+ beq _02241C2C
+ add r5, r5, #1
+ add r2, #0xc
+ cmp r5, #4
+ blt _02241C1E
+_02241C2C:
+ cmp r5, #4
+ bne _02241C34
+ bl ErrorHandling
+_02241C34:
+ ldr r0, _02241CE8 ; =0x00000438
+ ldr r1, _02241CEC ; =0x00000439
+ strb r5, [r4, r0]
+ mov r5, #0
+ sub r0, #0x67
+_02241C3E:
+ add r3, r4, r5
+ ldrb r2, [r3, r0]
+ add r5, r5, #1
+ cmp r5, #4
+ strb r2, [r3, r1]
+ blt _02241C3E
+ mov r3, #0
+ add r1, r3, #0
+ add r2, r4, #0
+_02241C50:
+ ldr r0, [r4]
+ mov r5, #0x4a
+ add r0, r0, r1
+ lsl r5, r5, #2
+ ldrh r6, [r0, r5]
+ mov r5, #0xe7
+ lsl r5, r5, #2
+ strh r6, [r2, r5]
+ ldr r5, _02241CF0 ; =0x0000012A
+ add r3, r3, #1
+ ldrh r6, [r0, r5]
+ ldr r5, _02241CF4 ; =0x0000039E
+ add r1, #0xc
+ strh r6, [r2, r5]
+ mov r5, #0x4b
+ lsl r5, r5, #2
+ ldrh r6, [r0, r5]
+ mov r5, #0x3a
+ lsl r5, r5, #4
+ strh r6, [r2, r5]
+ ldr r5, _02241CF8 ; =0x0000012E
+ ldrh r6, [r0, r5]
+ ldr r5, _02241CFC ; =0x000003A2
+ strh r6, [r2, r5]
+ mov r5, #0x13
+ lsl r5, r5, #4
+ ldrh r6, [r0, r5]
+ mov r5, #0xe9
+ lsl r5, r5, #2
+ strh r6, [r2, r5]
+ ldr r5, _02241D00 ; =0x00000132
+ ldrh r5, [r0, r5]
+ ldr r0, _02241D04 ; =0x000003A6
+ strh r5, [r2, r0]
+ add r2, #0xc
+ cmp r3, #4
+ blt _02241C50
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+_02241CA0:
+ ldr r0, _02241D08 ; =0x0000085C
+ mov r3, #0xe7
+ lsl r3, r3, #2
+ add r0, r4, r0
+ add r1, r4, #0
+ mov r2, #1
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02241CE4
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _02241CE4
+_02241CBE:
+ ldr r0, _02241D08 ; =0x0000085C
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _02241D0C ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02241CE4
+ ldrh r0, [r7]
+ add r0, r0, #1
+ strh r0, [r7]
+ b _02241CE4
+_02241CE0:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02241CE4:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02241CE8: .word 0x00000438
+_02241CEC: .word 0x00000439
+_02241CF0: .word 0x0000012A
+_02241CF4: .word 0x0000039E
+_02241CF8: .word 0x0000012E
+_02241CFC: .word 0x000003A2
+_02241D00: .word 0x00000132
+_02241D04: .word 0x000003A6
+_02241D08: .word 0x0000085C
+_02241D0C: .word 0x00000127
+
+ thumb_func_start MOD12_02241D10
+MOD12_02241D10: ; 0x02241D10
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _02241D22
+ cmp r0, #1
+ beq _02241D5C
+ b _02241D7E
+_02241D22:
+ ldr r3, _02241D88 ; =0x00000445
+ mov r1, #0
+ strb r1, [r5, r3]
+ add r0, r3, #2
+ strb r1, [r5, r0]
+ add r0, r3, #1
+ strb r1, [r5, r0]
+ add r0, r3, #0
+ sub r0, #0x79
+ ldrb r1, [r5, r0]
+ sub r0, r3, #7
+ mov r2, #5
+ strb r1, [r5, r0]
+ sub r0, r3, #1
+ mov r1, #1
+ strb r1, [r5, r0]
+ ldr r0, _02241D8C ; =0x0000085C
+ sub r3, #0xf
+ add r0, r5, r0
+ add r1, r5, #0
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02241D82
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02241D82
+_02241D5C:
+ ldr r0, _02241D8C ; =0x0000085C
+ ldr r3, [r5]
+ add r0, r5, r0
+ ldr r5, _02241D90 ; =0x00000127
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02241D82
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02241D82
+_02241D7E:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02241D82:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02241D88: .word 0x00000445
+_02241D8C: .word 0x0000085C
+_02241D90: .word 0x00000127
+
+ thumb_func_start MOD12_02241D94
+MOD12_02241D94: ; 0x02241D94
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _02241DA6
+ cmp r0, #1
+ beq _02241DC4
+ b _02241DE6
+_02241DA6:
+ ldr r0, _02241DF0 ; =0x0000085C
+ mov r3, #0xe7
+ lsl r3, r3, #2
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #6
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02241DEA
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02241DEA
+_02241DC4:
+ ldr r0, _02241DF0 ; =0x0000085C
+ ldr r3, [r5]
+ add r0, r5, r0
+ ldr r5, _02241DF4 ; =0x00000127
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02241DEA
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02241DEA
+_02241DE6:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02241DEA:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02241DF0: .word 0x0000085C
+_02241DF4: .word 0x00000127
+
+ thumb_func_start MOD12_02241DF8
+MOD12_02241DF8: ; 0x02241DF8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _02241E0E
+ cmp r0, #1
+ beq _02241E40
+ cmp r0, #2
+ beq _02241E62
+ b _02241E74
+_02241E0E:
+ ldr r3, _02241E7C ; =0x00000445
+ mov r0, #0
+ strb r0, [r5, r3]
+ mov r1, #1
+ add r0, r3, #2
+ strb r1, [r5, r0]
+ add r0, r3, #1
+ strb r1, [r5, r0]
+ sub r0, r3, #1
+ mov r1, #6
+ strb r1, [r5, r0]
+ ldr r0, _02241E80 ; =0x0000085C
+ sub r3, #0xf
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #5
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02241E78
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02241E78
+_02241E40:
+ ldr r0, _02241E80 ; =0x0000085C
+ ldr r3, [r5]
+ add r0, r5, r0
+ ldr r5, _02241E84 ; =0x00000127
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02241E78
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02241E78
+_02241E62:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ cmp r0, #0x3c
+ ble _02241E78
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02241E78
+_02241E74:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02241E78:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02241E7C: .word 0x00000445
+_02241E80: .word 0x0000085C
+_02241E84: .word 0x00000127
+
+ thumb_func_start MOD12_02241E88
+MOD12_02241E88: ; 0x02241E88
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r3, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #4
+ bhi _02241F78
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02241EA0: ; jump table
+ .short _02241EAA - _02241EA0 - 2 ; case 0
+ .short _02241F00 - _02241EA0 - 2 ; case 1
+ .short _02241F22 - _02241EA0 - 2 ; case 2
+ .short _02241F44 - _02241EA0 - 2 ; case 3
+ .short _02241F66 - _02241EA0 - 2 ; case 4
+_02241EAA:
+ ldr r1, [r3]
+ ldr r0, _02241F80 ; =0x00000121
+ ldrb r0, [r1, r0]
+ cmp r0, #4
+ bhi _02241ECA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02241EC0: ; jump table
+ .short _02241ECE - _02241EC0 - 2 ; case 0
+ .short _02241ECE - _02241EC0 - 2 ; case 1
+ .short _02241ECE - _02241EC0 - 2 ; case 2
+ .short _02241ECE - _02241EC0 - 2 ; case 3
+ .short _02241ECE - _02241EC0 - 2 ; case 4
+_02241ECA:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02241ECE:
+ ldr r5, _02241F84 ; =0x00000445
+ mov r0, #0
+ strb r0, [r3, r5]
+ mov r1, #1
+ add r0, r5, #2
+ strb r1, [r3, r0]
+ add r0, r5, #1
+ strb r1, [r3, r0]
+ sub r0, r5, #1
+ mov r1, #2
+ strb r1, [r3, r0]
+ ldr r0, _02241F88 ; =0x0000085C
+ sub r5, #0xf
+ add r0, r3, r0
+ add r1, r3, #0
+ mov r2, #5
+ add r3, r3, r5
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02241F7C
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02241F7C
+_02241F00:
+ ldr r0, _02241F88 ; =0x0000085C
+ ldr r5, [r3]
+ add r0, r3, r0
+ ldr r3, _02241F8C ; =0x00000127
+ sub r2, r3, #4
+ ldrb r1, [r5, r3]
+ sub r3, #0xb
+ ldrb r2, [r5, r2]
+ ldrb r3, [r5, r3]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02241F7C
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02241F7C
+_02241F22:
+ ldr r5, _02241F90 ; =0x0000043D
+ mov r0, #0
+ strb r0, [r3, r5]
+ ldr r0, _02241F88 ; =0x0000085C
+ sub r5, r5, #7
+ add r0, r3, r0
+ add r1, r3, #0
+ mov r2, #9
+ add r3, r3, r5
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02241F7C
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02241F7C
+_02241F44:
+ ldr r0, _02241F88 ; =0x0000085C
+ ldr r5, [r3]
+ add r0, r3, r0
+ ldr r3, _02241F8C ; =0x00000127
+ sub r2, r3, #4
+ ldrb r1, [r5, r3]
+ sub r3, #0xb
+ ldrb r2, [r5, r2]
+ ldrb r3, [r5, r3]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02241F7C
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02241F7C
+_02241F66:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ cmp r0, #0x3c
+ ble _02241F7C
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02241F7C
+_02241F78:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02241F7C:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02241F80: .word 0x00000121
+_02241F84: .word 0x00000445
+_02241F88: .word 0x0000085C
+_02241F8C: .word 0x00000127
+_02241F90: .word 0x0000043D
+
+ thumb_func_start MOD12_02241F94
+MOD12_02241F94: ; 0x02241F94
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldrh r0, [r5]
+ cmp r0, #4
+ bhi _022420A0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02241FAC: ; jump table
+ .short _02241FB6 - _02241FAC - 2 ; case 0
+ .short _02242028 - _02241FAC - 2 ; case 1
+ .short _0224204A - _02241FAC - 2 ; case 2
+ .short _0224206C - _02241FAC - 2 ; case 3
+ .short _0224208E - _02241FAC - 2 ; case 4
+_02241FB6:
+ ldr r1, [r4]
+ ldr r0, _022420A8 ; =0x00000121
+ ldrb r0, [r1, r0]
+ cmp r0, #6
+ bhi _02241FDA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02241FCC: ; jump table
+ .short _02241FDA - _02241FCC - 2 ; case 0
+ .short _02241FDE - _02241FCC - 2 ; case 1
+ .short _02241FDE - _02241FCC - 2 ; case 2
+ .short _02241FDA - _02241FCC - 2 ; case 3
+ .short _02241FDA - _02241FCC - 2 ; case 4
+ .short _02241FDE - _02241FCC - 2 ; case 5
+ .short _02241FDE - _02241FCC - 2 ; case 6
+_02241FDA:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02241FDE:
+ ldr r1, _022420AC ; =0x00000445
+ mov r0, #0
+ strb r0, [r4, r1]
+ mov r2, #1
+ add r0, r1, #2
+ strb r2, [r4, r0]
+ add r0, r1, #1
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0x79
+ ldrb r2, [r4, r0]
+ sub r0, r1, #7
+ sub r1, #0x79
+ strb r2, [r4, r0]
+ ldrb r0, [r4, r1]
+ bl FUN_020832DC
+ ldr r3, _022420B0 ; =0x00000442
+ add r0, r0, #1
+ strb r0, [r4, r3]
+ add r0, r3, #2
+ mov r1, #3
+ strb r1, [r4, r0]
+ ldr r0, _022420B4 ; =0x0000085C
+ sub r3, #0xc
+ add r0, r4, r0
+ add r1, r4, #0
+ mov r2, #5
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _022420A4
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _022420A4
+_02242028:
+ ldr r0, _022420B4 ; =0x0000085C
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _022420B8 ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _022420A4
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _022420A4
+_0224204A:
+ ldr r3, _022420BC ; =0x0000043D
+ mov r0, #1
+ strb r0, [r4, r3]
+ ldr r0, _022420B4 ; =0x0000085C
+ sub r3, r3, #7
+ add r0, r4, r0
+ add r1, r4, #0
+ mov r2, #9
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _022420A4
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _022420A4
+_0224206C:
+ ldr r0, _022420B4 ; =0x0000085C
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _022420B8 ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _022420A4
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _022420A4
+_0224208E:
+ ldr r0, [r5, #4]
+ add r0, r0, #1
+ str r0, [r5, #4]
+ cmp r0, #0x5a
+ ble _022420A4
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _022420A4
+_022420A0:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022420A4:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022420A8: .word 0x00000121
+_022420AC: .word 0x00000445
+_022420B0: .word 0x00000442
+_022420B4: .word 0x0000085C
+_022420B8: .word 0x00000127
+_022420BC: .word 0x0000043D
+
+ thumb_func_start MOD12_022420C0
+MOD12_022420C0: ; 0x022420C0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldrh r0, [r5]
+ cmp r0, #4
+ bls _022420CE
+ b _022421D2
+_022420CE:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022420DA: ; jump table
+ .short _022420E4 - _022420DA - 2 ; case 0
+ .short _0224215A - _022420DA - 2 ; case 1
+ .short _0224217C - _022420DA - 2 ; case 2
+ .short _0224219E - _022420DA - 2 ; case 3
+ .short _022421C0 - _022420DA - 2 ; case 4
+_022420E4:
+ ldr r1, [r4]
+ ldr r0, _022421DC ; =0x00000121
+ ldrb r0, [r1, r0]
+ cmp r0, #8
+ bhi _0224210C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022420FA: ; jump table
+ .short _02242110 - _022420FA - 2 ; case 0
+ .short _0224210C - _022420FA - 2 ; case 1
+ .short _02242110 - _022420FA - 2 ; case 2
+ .short _0224210C - _022420FA - 2 ; case 3
+ .short _0224210C - _022420FA - 2 ; case 4
+ .short _0224210C - _022420FA - 2 ; case 5
+ .short _0224210C - _022420FA - 2 ; case 6
+ .short _02242110 - _022420FA - 2 ; case 7
+ .short _02242110 - _022420FA - 2 ; case 8
+_0224210C:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02242110:
+ ldr r1, _022421E0 ; =0x00000445
+ mov r0, #0
+ strb r0, [r4, r1]
+ mov r2, #1
+ add r0, r1, #2
+ strb r2, [r4, r0]
+ add r0, r1, #1
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0x79
+ ldrb r2, [r4, r0]
+ sub r0, r1, #7
+ sub r1, #0x79
+ strb r2, [r4, r0]
+ ldrb r0, [r4, r1]
+ bl FUN_020832DC
+ ldr r3, _022421E4 ; =0x00000442
+ add r0, r0, #1
+ strb r0, [r4, r3]
+ add r0, r3, #2
+ mov r1, #4
+ strb r1, [r4, r0]
+ ldr r0, _022421E8 ; =0x0000085C
+ sub r3, #0xc
+ add r0, r4, r0
+ add r1, r4, #0
+ mov r2, #5
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _022421D6
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _022421D6
+_0224215A:
+ ldr r0, _022421E8 ; =0x0000085C
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _022421EC ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _022421D6
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _022421D6
+_0224217C:
+ ldr r3, _022421F0 ; =0x0000043D
+ mov r0, #2
+ strb r0, [r4, r3]
+ ldr r0, _022421E8 ; =0x0000085C
+ sub r3, r3, #7
+ add r0, r4, r0
+ add r1, r4, #0
+ mov r2, #9
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _022421D6
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _022421D6
+_0224219E:
+ ldr r0, _022421E8 ; =0x0000085C
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _022421EC ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _022421D6
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _022421D6
+_022421C0:
+ ldr r0, [r5, #4]
+ add r0, r0, #1
+ str r0, [r5, #4]
+ cmp r0, #0xf
+ ble _022421D6
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _022421D6
+_022421D2:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022421D6:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_022421DC: .word 0x00000121
+_022421E0: .word 0x00000445
+_022421E4: .word 0x00000442
+_022421E8: .word 0x0000085C
+_022421EC: .word 0x00000127
+_022421F0: .word 0x0000043D
+
+ thumb_func_start MOD12_022421F4
+MOD12_022421F4: ; 0x022421F4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _02242206
+ cmp r0, #1
+ beq _02242222
+ b _02242244
+_02242206:
+ ldr r0, _0224224C ; =0x0000085C
+ ldr r3, _02242250 ; =0x00000436
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #7
+ add r3, r5, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02242248
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02242248
+_02242222:
+ ldr r0, _0224224C ; =0x0000085C
+ ldr r3, [r5]
+ add r0, r5, r0
+ ldr r5, _02242254 ; =0x00000127
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02242248
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02242248
+_02242244:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02242248:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224224C: .word 0x0000085C
+_02242250: .word 0x00000436
+_02242254: .word 0x00000127
+
+ thumb_func_start MOD12_02242258
+MOD12_02242258: ; 0x02242258
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldrh r0, [r5]
+ cmp r0, #3
+ bhi _02242320
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02242270: ; jump table
+ .short _02242278 - _02242270 - 2 ; case 0
+ .short _022422C0 - _02242270 - 2 ; case 1
+ .short _022422E2 - _02242270 - 2 ; case 2
+ .short _022422FE - _02242270 - 2 ; case 3
+_02242278:
+ ldr r1, _02242328 ; =0x00000445
+ mov r0, #0
+ strb r0, [r4, r1]
+ mov r2, #1
+ add r0, r1, #2
+ strb r2, [r4, r0]
+ add r0, r1, #1
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xd
+ ldrb r2, [r4, r0]
+ sub r0, r1, #7
+ sub r1, #0xd
+ strb r2, [r4, r0]
+ ldrb r0, [r4, r1]
+ bl FUN_020832DC
+ ldr r3, _0224232C ; =0x00000442
+ add r0, r0, #1
+ strb r0, [r4, r3]
+ add r0, r3, #2
+ mov r2, #5
+ strb r2, [r4, r0]
+ ldr r0, _02242330 ; =0x0000085C
+ sub r3, #0xc
+ add r0, r4, r0
+ add r1, r4, #0
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02242324
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _02242324
+_022422C0:
+ ldr r0, _02242330 ; =0x0000085C
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _02242334 ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02242324
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _02242324
+_022422E2:
+ ldr r0, _02242330 ; =0x0000085C
+ ldr r3, _02242338 ; =0x00000436
+ add r0, r4, r0
+ add r1, r4, #0
+ mov r2, #8
+ add r3, r4, r3
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02242324
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _02242324
+_022422FE:
+ ldr r0, _02242330 ; =0x0000085C
+ ldr r3, [r4]
+ add r0, r4, r0
+ ldr r4, _02242334 ; =0x00000127
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02242324
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ b _02242324
+_02242320:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02242324:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02242328: .word 0x00000445
+_0224232C: .word 0x00000442
+_02242330: .word 0x0000085C
+_02242334: .word 0x00000127
+_02242338: .word 0x00000436
+
+ thumb_func_start MOD12_0224233C
+MOD12_0224233C: ; 0x0224233C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r3, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _0224234E
+ cmp r0, #1
+ beq _02242386
+ b _022423A8
+_0224234E:
+ ldr r5, _022423B0 ; =0x00000445
+ mov r0, #0
+ strb r0, [r3, r5]
+ add r1, r5, #2
+ strb r0, [r3, r1]
+ add r1, r5, #1
+ strb r0, [r3, r1]
+ add r1, r5, #0
+ sub r1, #0x79
+ ldrb r2, [r3, r1]
+ sub r1, r5, #7
+ strb r2, [r3, r1]
+ sub r1, r5, #1
+ strb r0, [r3, r1]
+ ldr r0, _022423B4 ; =0x0000085C
+ sub r5, #0xf
+ add r0, r3, r0
+ add r1, r3, #0
+ mov r2, #5
+ add r3, r3, r5
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _022423AC
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _022423AC
+_02242386:
+ ldr r0, _022423B4 ; =0x0000085C
+ ldr r5, [r3]
+ add r0, r3, r0
+ ldr r3, _022423B8 ; =0x00000127
+ sub r2, r3, #4
+ ldrb r1, [r5, r3]
+ sub r3, #0xb
+ ldrb r2, [r5, r2]
+ ldrb r3, [r5, r3]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _022423AC
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _022423AC
+_022423A8:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022423AC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022423B0: .word 0x00000445
+_022423B4: .word 0x0000085C
+_022423B8: .word 0x00000127
+
+ thumb_func_start MOD12_022423BC
+MOD12_022423BC: ; 0x022423BC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r2, r0, #0
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _022423D2
+ cmp r0, #1
+ beq _022423EC
+ cmp r0, #2
+ beq _0224240E
+ b _02242428
+_022423D2:
+ ldr r0, _0224244C ; =0x0000085C
+ add r1, r2, #0
+ add r0, r2, r0
+ mov r2, #0xa
+ mov r3, #0
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02242446
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02242446
+_022423EC:
+ ldr r0, _0224244C ; =0x0000085C
+ ldr r3, [r2]
+ ldr r5, _02242450 ; =0x00000127
+ add r0, r2, r0
+ sub r2, r5, #4
+ ldrb r1, [r3, r5]
+ sub r5, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r5]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02242446
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02242446
+_0224240E:
+ ldr r0, _0224244C ; =0x0000085C
+ add r1, r2, #0
+ add r0, r2, r0
+ mov r2, #4
+ mov r3, #0
+ bl MOD12_02241050
+ cmp r0, #1
+ bne _02242446
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ b _02242446
+_02242428:
+ ldr r0, _0224244C ; =0x0000085C
+ ldr r3, [r2]
+ ldr r4, _02242450 ; =0x00000127
+ add r0, r2, r0
+ sub r2, r4, #4
+ ldrb r1, [r3, r4]
+ sub r4, #0xb
+ ldrb r2, [r3, r2]
+ ldrb r3, [r3, r4]
+ bl MOD12_022411F4
+ cmp r0, #1
+ bne _02242446
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_02242446:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_0224244C: .word 0x0000085C
+_02242450: .word 0x00000127
+
+ thumb_func_start MOD12_02242454
+MOD12_02242454: ; 0x02242454
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r7, r5, #0
+ mov r4, #0
+ add r7, #0xd8
+ b _022424C6
+_02242462:
+ mov r0, #0xf3
+ add r1, r5, r4
+ lsl r0, r0, #2
+ ldrb r6, [r1, r0]
+ lsl r0, r6, #4
+ add r0, r5, r0
+ add r0, #0xd8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0224247A
+ bl ErrorHandling
+_0224247A:
+ mov r1, #0x32
+ mov r0, #0x18
+ lsl r1, r1, #6
+ bl FUN_02016998
+ lsl r2, r6, #4
+ add r1, r5, r2
+ add r1, #0xd8
+ str r0, [r1]
+ add r0, r7, r2
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ mov r0, #6
+ ldr r1, _022424D0 ; =0x02246634
+ mul r0, r4
+ ldrsh r1, [r1, r0]
+ lsl r2, r6, #2
+ str r1, [sp, #8]
+ ldr r1, _022424D0 ; =0x02246634
+ add r0, r1, r0
+ mov r1, #2
+ ldrsh r1, [r0, r1]
+ str r1, [sp, #0xc]
+ mov r1, #4
+ ldrsh r0, [r0, r1]
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+ ldr r3, [r5, #0x10]
+ ldr r0, [r5, #0x14]
+ ldr r2, [r3, r2]
+ mov r3, #2
+ bl FUN_02082E64
+ lsl r1, r6, #2
+ add r1, r5, r1
+ str r0, [r1, #0x18]
+ add r4, r4, #1
+_022424C6:
+ cmp r4, #4
+ blt _02242462
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022424D0: .word 0x02246634
+
+ thumb_func_start MOD12_022424D4
+MOD12_022424D4: ; 0x022424D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+ add r7, r6, #0
+_022424DE:
+ ldr r0, [r5, #8]
+ bl FUN_02007534
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r0, #0xc8
+ add r6, r6, #1
+ str r7, [r0]
+ add r5, r5, #4
+ add r4, #0x10
+ cmp r6, #4
+ blt _022424DE
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_02242500
+MOD12_02242500: ; 0x02242500
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r6, r1, #0
+ add r4, r0, #0
+ add r5, r2, #0
+ cmp r6, #0
+ beq _02242516
+ cmp r5, #0
+ bne _02242516
+ bl ErrorHandling
+_02242516:
+ cmp r6, #3
+ bhi _022425EC
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02242526: ; jump table
+ .short _022425F0 - _02242526 - 2 ; case 0
+ .short _0224252E - _02242526 - 2 ; case 1
+ .short _02242552 - _02242526 - 2 ; case 2
+ .short _02242596 - _02242526 - 2 ; case 3
+_0224252E:
+ mov r2, #0x12
+ lsl r2, r2, #4
+ ldr r3, [r4]
+ add r1, r2, #1
+ ldrb r0, [r3, r2]
+ add r2, #0x51
+ ldrb r1, [r3, r1]
+ ldrb r2, [r3, r2]
+ bl FUN_02083228
+ add r4, #0xc8
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_0200B278
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_02242552:
+ ldrb r6, [r5]
+ ldr r3, [r4]
+ mov r0, #1
+ lsl r2, r6, #2
+ str r0, [sp]
+ mov r0, #2
+ add r2, r3, r2
+ add r6, r3, r6
+ mov r3, #0x42
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r3, r3, #2
+ add r0, #0xc8
+ add r2, #0xe8
+ ldrb r3, [r6, r3]
+ ldr r0, [r0]
+ ldr r2, [r2]
+ mov r1, #0
+ bl FUN_0200ABB4
+ ldrb r0, [r5]
+ ldr r1, [r4, #0x10]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r4, #0xc8
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_02242596:
+ mov r1, #0
+ str r1, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xc8
+ ldrb r2, [r5, #4]
+ ldr r0, [r0]
+ bl FUN_0200AD38
+ ldrb r6, [r5]
+ ldr r3, [r4]
+ mov r1, #1
+ lsl r2, r6, #2
+ add r2, r3, r2
+ add r6, r3, r6
+ mov r3, #0x42
+ str r1, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r3, r3, #2
+ add r0, #0xc8
+ add r2, #0xe8
+ ldrb r3, [r6, r3]
+ ldr r0, [r0]
+ ldr r2, [r2]
+ bl FUN_0200ABB4
+ ldrb r0, [r5]
+ ldr r1, [r4, #0x10]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_020690E4
+ add r4, #0xc8
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r1, #2
+ bl FUN_0200ACF8
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_022425EC:
+ bl ErrorHandling
+_022425F0:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_022425F4
+MOD12_022425F4: ; 0x022425F4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r6, r1, #0
+ ldr r1, [r5]
+ ldr r0, _02242670 ; =0x00000171
+ add r7, r2, #0
+ ldrb r0, [r1, r0]
+ str r3, [sp, #0xc]
+ cmp r0, #0
+ bne _02242616
+ ldr r0, _02242674 ; =0x00001988
+ ldr r0, [r1, r0]
+ bl FUN_02024FF4
+ add r4, r0, #0
+ b _02242618
+_02242616:
+ mov r4, #1
+_02242618:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl FUN_0200A914
+ add r6, r0, #0
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #0x28]
+ add r0, r5, #0
+ bl MOD12_02242500
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xc8
+ add r1, #0xcc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r5, #0
+ add r0, #0x34
+ mov r1, #0xff
+ bl FUN_02019620
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ add r2, r5, #0
+ add r0, r5, #0
+ str r3, [sp, #8]
+ add r2, #0xcc
+ ldr r2, [r2]
+ add r0, #0x34
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r1, #0xe6
+ lsl r1, r1, #2
+ strb r0, [r5, r1]
+ add r0, r6, #0
+ bl FUN_02021A20
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02242670: .word 0x00000171
+_02242674: .word 0x00001988
+
+ thumb_func_start MOD12_02242678
+MOD12_02242678: ; 0x02242678
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ cmp r4, #7
+ blo _0224268A
+ bl ErrorHandling
+_0224268A:
+ lsl r3, r4, #2
+ ldr r2, _022426A4 ; =0x0224664C
+ add r0, r5, #0
+ ldr r4, _022426A8 ; =0x0224664E
+ ldrh r2, [r2, r3]
+ str r6, [sp]
+ add r5, #0xc4
+ ldrb r3, [r4, r3]
+ ldr r1, [r5]
+ bl MOD12_022425F4
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_022426A4: .word 0x0224664C
+_022426A8: .word 0x0224664E
+
+ thumb_func_start MOD12_022426AC
+MOD12_022426AC: ; 0x022426AC
+ mov r1, #0xe6
+ lsl r1, r1, #2
+ ldr r3, _022426B8 ; =0x0201BD71
+ ldrb r0, [r0, r1]
+ bx r3
+ nop
+_022426B8: .word 0x0201BD71
+
+ thumb_func_start MOD12_022426BC
+MOD12_022426BC: ; 0x022426BC
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x30]
+ mov r0, #0x2d
+ mov r1, #0x16
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x30]
+ mov r0, #0x2d
+ mov r1, #0x15
+ mov r3, #3
+ bl FUN_020068C8
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl FUN_02018744
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ mov r1, #0x2d
+ mov r2, #0x22
+ mov r3, #0x18
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xd0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ mov r1, #0x2d
+ mov r2, #0x23
+ mov r3, #0x18
+ bl FUN_020030E8
+ ldr r1, [r5]
+ ldr r0, _02242784 ; =0x00001988
+ ldr r0, [r1, r0]
+ bl FUN_02025084
+ add r4, r0, #0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ mov r1, #1
+ ldr r0, [r5, #0x30]
+ add r2, r1, #0
+ mov r3, #0xf
+ bl FUN_0200CD68
+ add r0, r4, #0
+ bl FUN_0200CD64
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xe0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ mov r1, #0x26
+ mov r3, #0x18
+ bl FUN_020030E8
+ ldr r0, [r5, #0x30]
+ mov r1, #2
+ bl FUN_02018744
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_02242784: .word 0x00001988
+
+ thumb_func_start MOD12_02242788
+MOD12_02242788: ; 0x02242788
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_0224278C
+MOD12_0224278C: ; 0x0224278C
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ ldr r0, _022427D4 ; =0x000080EA
+ add r2, r4, #0
+ str r0, [sp]
+ sub r3, r0, #1
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ add r2, #0xd0
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ ldr r2, [r2]
+ bl MOD12_022316F8
+ ldr r0, _022427D4 ; =0x000080EA
+ mov r1, #0xc8
+ str r0, [sp]
+ sub r3, r0, #1
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ mov r0, #3
+ str r0, [sp, #0x14]
+ ldr r0, _022427D8 ; =0x0000C350
+ add r1, #0x50
+ str r0, [sp, #0x18]
+ add r0, r4, r1
+ ldr r1, [r4, #0x28]
+ ldr r2, [r4, #0x2c]
+ bl MOD12_022317C8
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ .align 2, 0
+_022427D4: .word 0x000080EA
+_022427D8: .word 0x0000C350
+
+ thumb_func_start MOD12_022427DC
+MOD12_022427DC: ; 0x022427DC
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mov r0, #0x46
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD12_0223185C
+ ldr r1, _02242800 ; =0x000080E9
+ str r1, [sp]
+ ldr r0, [r4, #0x2c]
+ add r2, r1, #1
+ add r3, r1, #0
+ bl MOD12_02231780
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_02242800: .word 0x000080E9
+
+ thumb_func_start MOD12_02242804
+MOD12_02242804: ; 0x02242804
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r2, [r6, #0x30]
+ mov r0, #0x2d
+ mov r1, #0x1a
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r1, #0x18
+ str r1, [sp, #0xc]
+ ldr r2, [r6, #0x30]
+ mov r0, #0x2d
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r2, [r6, #0x30]
+ mov r0, #0x2d
+ mov r1, #0x19
+ mov r3, #2
+ bl FUN_020068C8
+ ldr r0, [r6, #0x30]
+ mov r1, #1
+ bl FUN_02018744
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ mov r1, #0x2d
+ mov r2, #0x26
+ mov r3, #0x18
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xd0
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ mov r1, #0x2d
+ mov r2, #0x23
+ mov r3, #0x18
+ bl FUN_020030E8
+ ldr r1, [r6]
+ ldr r0, _022429D0 ; =0x00001988
+ ldr r0, [r1, r0]
+ bl FUN_02025084
+ add r4, r0, #0
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ mov r1, #1
+ ldr r0, [r6, #0x30]
+ add r2, r1, #0
+ mov r3, #0xf
+ bl FUN_0200CD68
+ add r0, r4, #0
+ bl FUN_0200CD64
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xe0
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ mov r1, #0x26
+ mov r3, #0x18
+ bl FUN_020030E8
+ mov r0, #0xc
+ mov r1, #0x18
+ bl FUN_020219F4
+ add r4, r6, #0
+ add r7, r0, #0
+ mov r5, #0
+ add r4, #0x34
+_022428E6:
+ mov r0, #0xf3
+ add r1, r6, r5
+ lsl r0, r0, #2
+ ldrb r0, [r1, r0]
+ ldr r1, [r6, #0x10]
+ add r2, r7, #0
+ lsl r0, r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, [r1, r0]
+ mov r1, #0x76
+ bl FUN_020671BC
+ add r0, r5, #1
+ lsl r0, r0, #4
+ str r0, [sp, #0x14]
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #5
+ lsl r0, r0, #4
+ str r0, [sp, #0x18]
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _022429D4 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ add r2, r7, #0
+ add r0, r4, r0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _022429D4 ; =0x00010200
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r3, [r6]
+ ldr r0, [sp, #0x18]
+ add r2, r3, r2
+ add r2, #0xe8
+ mov r1, #0
+ ldr r2, [r2]
+ add r0, r4, r0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ add r5, r5, #1
+ cmp r5, #4
+ blt _022428E6
+ add r0, r7, #0
+ bl FUN_02021A20
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _022429D8 ; =0xFFFF1FFF
+ mov r5, #0x3f
+ and r1, r0
+ mov r0, #6
+ lsl r0, r0, #0xc
+ orr r0, r1
+ add r1, r2, #0
+ add r1, #0x48
+ str r0, [r2]
+ ldrh r0, [r1]
+ mov r3, #0x1f
+ bic r0, r5
+ add r4, r0, #0
+ orr r4, r3
+ mov r0, #0x20
+ orr r4, r0
+ strh r4, [r1]
+ ldrh r6, [r1]
+ ldr r4, _022429DC ; =0xFFFFC0FF
+ lsl r3, r3, #8
+ and r4, r6
+ orr r4, r3
+ lsl r3, r0, #8
+ orr r3, r4
+ strh r3, [r1]
+ add r3, r2, #0
+ add r3, #0x4a
+ ldrh r4, [r3]
+ mov r1, #0x1b
+ bic r4, r5
+ orr r1, r4
+ orr r0, r1
+ strh r0, [r3]
+ add r0, r2, #0
+ mov r3, #0xff
+ add r0, #0x40
+ strh r3, [r0]
+ add r0, r2, #0
+ mov r1, #0
+ add r0, #0x44
+ strh r1, [r0]
+ add r0, r2, #0
+ add r0, #0x42
+ strh r3, [r0]
+ add r2, #0x46
+ strh r1, [r2]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022429D0: .word 0x00001988
+_022429D4: .word 0x00010200
+_022429D8: .word 0xFFFF1FFF
+_022429DC: .word 0xFFFFC0FF
+
+ thumb_func_start MOD12_022429E0
+MOD12_022429E0: ; 0x022429E0
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r3, #0
+ mov r0, #1
+ str r3, [sp]
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ mov r1, #1
+ mov r2, #2
+ bl FUN_02003914
+ mov r3, #0
+ mov r0, #1
+ str r3, [sp]
+ lsl r0, r0, #8
+ add r4, #0xd0
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ mov r1, #3
+ mov r2, #2
+ bl FUN_02003914
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD12_02242A18
+MOD12_02242A18: ; 0x02242A18
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02242A1C
+MOD12_02242A1C: ; 0x02242A1C
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ mov r0, #0x2e
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, _02242A68 ; =0x000080E9
+ mov r1, #2
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ ldr r2, [r4, #0x28]
+ ldr r3, [r4, #0x2c]
+ bl FUN_0200C0DC
+ add r0, r4, #0
+ bl MOD12_02242C38
+ add r0, r4, #0
+ bl MOD12_02242A90
+ add r0, r4, #0
+ bl MOD12_02242EE0
+ add r0, r4, #0
+ bl MOD12_02242FF8
+ add sp, #0x18
+ pop {r4, pc}
+ nop
+_02242A68: .word 0x000080E9
+
+ thumb_func_start MOD12_02242A6C
+MOD12_02242A6C: ; 0x02242A6C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD12_02242BCC
+ add r0, r4, #0
+ bl MOD12_02242F94
+ add r0, r4, #0
+ bl MOD12_022431F8
+ add r0, r4, #0
+ bl MOD12_02242C88
+ add r0, r4, #0
+ bl MOD12_02243074
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02242A90
+MOD12_02242A90: ; 0x02242A90
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ add r5, r0, #0
+ bl FUN_0206B888
+ mov r1, #0x13
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, _02242BB4 ; =0x000080EB
+ mov r1, #2
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ ldr r2, [r5, #0x28]
+ ldr r3, [r5, #0x2c]
+ bl FUN_0200C0DC
+ bl FUN_0206B894
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02242BB8 ; =0x000080EA
+ mov r2, #0x13
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ bl FUN_0200C124
+ bl FUN_0206B8A0
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _02242BB8 ; =0x000080EA
+ mov r2, #0x13
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ bl FUN_0200C13C
+ ldr r4, _02242BBC ; =0x0224669C
+ add r3, sp, #0x18
+ mov r2, #6
+_02242AF6:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02242AF6
+ ldr r0, [r4]
+ mov r7, #0
+ str r0, [r3]
+ add r6, r7, #0
+ add r4, r5, #0
+_02242B08:
+ ldr r0, [r5]
+ ldr r0, [r0, r6]
+ bl FUN_0206B6C8
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _02242BB8 ; =0x000080EA
+ mov r2, #0x13
+ add r0, r7, r0
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ bl FUN_0200C978
+ ldr r0, _02242BB8 ; =0x000080EA
+ add r2, sp, #0x18
+ add r0, r7, r0
+ str r0, [sp, #0x2c]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ bl FUN_0200C154
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C5C0
+ ldr r0, [r5]
+ ldr r0, [r0, r6]
+ bl FUN_0206B87C
+ add r1, r0, #0
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r0, [r0]
+ bl FUN_020202DC
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200C5A8
+ add r7, r7, #1
+ add r6, r6, #4
+ add r4, r4, #4
+ cmp r7, #4
+ blt _02242B08
+ ldr r4, _02242BC0 ; =0x02246614
+ mov r6, #0
+ mov r7, #2
+_02242B7A:
+ mov r0, #0xf3
+ add r1, r5, r6
+ lsl r0, r0, #2
+ ldrb r0, [r1, r0]
+ ldrsh r2, [r4, r7]
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ ldrsh r1, [r4, r1]
+ bl FUN_0200C714
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _02242B7A
+ ldr r0, _02242BC4 ; =MOD12_02242C1C
+ ldr r2, _02242BC8 ; =0x0000C738
+ add r1, r5, #0
+ bl FUN_0200CA44
+ mov r1, #0x4d
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02242BB4: .word 0x000080EB
+_02242BB8: .word 0x000080EA
+_02242BBC: .word 0x0224669C
+_02242BC0: .word 0x02246614
+_02242BC4: .word MOD12_02242C1C
+_02242BC8: .word 0x0000C738
+
+ thumb_func_start MOD12_02242BCC
+MOD12_02242BCC: ; 0x02242BCC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r6, #0x2c]
+ ldr r1, _02242C14 ; =0x000080EA
+ bl FUN_0200C378
+ ldr r0, [r6, #0x2c]
+ ldr r1, _02242C14 ; =0x000080EA
+ bl FUN_0200C388
+ ldr r0, [r6, #0x2c]
+ ldr r1, _02242C18 ; =0x000080EB
+ bl FUN_0200C368
+ mov r7, #0x4e
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_02242BF0:
+ ldr r1, _02242C14 ; =0x000080EA
+ ldr r0, [r6, #0x2c]
+ add r1, r4, r1
+ bl FUN_0200C358
+ ldr r0, [r5, r7]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02242BF0
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02242C14: .word 0x000080EA
+_02242C18: .word 0x000080EB
+
+ thumb_func_start MOD12_02242C1C
+MOD12_02242C1C: ; 0x02242C1C
+ push {r4, r5, r6, lr}
+ mov r6, #0x4e
+ add r5, r1, #0
+ mov r4, #0
+ lsl r6, r6, #2
+_02242C26:
+ ldr r0, [r5, r6]
+ bl FUN_0200C5A8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02242C26
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02242C38
+MOD12_02242C38: ; 0x02242C38
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02242C80 ; =0x000080EF
+ mov r2, #0x2e
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ mov r3, #0x51
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02242C84 ; =0x000080EC
+ mov r2, #0x2e
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ mov r3, #0x50
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02242C84 ; =0x000080EC
+ mov r2, #0x2e
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ mov r3, #0x4f
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_02242C80: .word 0x000080EF
+_02242C84: .word 0x000080EC
+
+ thumb_func_start MOD12_02242C88
+MOD12_02242C88: ; 0x02242C88
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ ldr r1, _02242CA8 ; =0x000080EF
+ bl FUN_0200C358
+ ldr r0, [r4, #0x2c]
+ ldr r1, _02242CAC ; =0x000080EC
+ bl FUN_0200C378
+ ldr r0, [r4, #0x2c]
+ ldr r1, _02242CAC ; =0x000080EC
+ bl FUN_0200C388
+ pop {r4, pc}
+ nop
+_02242CA8: .word 0x000080EF
+_02242CAC: .word 0x000080EC
+
+ thumb_func_start MOD12_02242CB0
+MOD12_02242CB0: ; 0x02242CB0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x18
+ mov r1, #8
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #8
+ add r6, r0, #0
+ bl MI_CpuFill8
+ str r5, [r6]
+ mov r4, #0
+_02242CCA:
+ add r0, r5, #0
+ bl MOD12_02242D3C
+ add r4, r4, #1
+ cmp r4, #8
+ blt _02242CCA
+ ldr r0, _02242CE4 ; =MOD12_02242CF8
+ ldr r2, _02242CE8 ; =0x0000C35A
+ add r1, r6, #0
+ bl FUN_0200CA44
+ pop {r4, r5, r6, pc}
+ nop
+_02242CE4: .word MOD12_02242CF8
+_02242CE8: .word 0x0000C35A
+
+ thumb_func_start MOD12_02242CEC
+MOD12_02242CEC: ; 0x02242CEC
+ ldr r1, _02242CF4 ; =0x0000127D
+ mov r2, #1
+ strb r2, [r0, r1]
+ bx lr
+ .align 2, 0
+_02242CF4: .word 0x0000127D
+
+ thumb_func_start MOD12_02242CF8
+MOD12_02242CF8: ; 0x02242CF8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r3, [r1]
+ ldr r0, _02242D38 ; =0x0000127D
+ ldrb r2, [r3, r0]
+ cmp r2, #1
+ bne _02242D14
+ add r0, r1, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+_02242D14:
+ add r0, r0, #1
+ ldrb r0, [r3, r0]
+ cmp r0, #0x30
+ bhs _02242D34
+ mov r0, #4
+ ldrsh r2, [r1, r0]
+ add r2, r2, #1
+ strh r2, [r1, #4]
+ ldrsh r0, [r1, r0]
+ cmp r0, #6
+ ble _02242D34
+ mov r0, #0
+ strh r0, [r1, #4]
+ ldr r0, [r1]
+ bl MOD12_02242D3C
+_02242D34:
+ pop {r4, pc}
+ nop
+_02242D38: .word 0x0000127D
+
+ thumb_func_start MOD12_02242D3C
+MOD12_02242D3C: ; 0x02242D3C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x18
+ mov r1, #0x20
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x20
+ bl MI_CpuFill8
+ str r5, [r4]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ ldr r2, _02242DE8 ; =0x02246668
+ bl FUN_0200C154
+ str r0, [r4, #4]
+ ldr r0, [r5]
+ bl FUN_02082878
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r0, [r5]
+ add r6, #0x14
+ bl FUN_02082878
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1a
+ sub r1, r1, r2
+ mov r0, #0x1a
+ ror r1, r0
+ add r2, r2, r1
+ lsl r0, r6, #8
+ lsl r1, r6, #0x10
+ sub r2, #0x10
+ str r0, [r4, #8]
+ lsl r0, r2, #8
+ str r0, [r4, #0xc]
+ lsl r2, r2, #0x10
+ ldr r0, [r4, #4]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ ldr r0, [r5]
+ bl FUN_02082878
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x18
+ sub r1, r1, r2
+ mov r0, #0x18
+ ror r1, r0
+ add r0, r2, r1
+ add r0, #0x30
+ str r0, [r4, #0x14]
+ ldr r0, [r5]
+ bl FUN_02082878
+ mov r1, #3
+ lsl r1, r1, #8
+ bl _s32_div_f
+ str r1, [r4, #0x18]
+ ldr r0, [r5]
+ bl FUN_02082878
+ mov r1, #0x18
+ bl _s32_div_f
+ add r1, #0x10
+ strh r1, [r4, #0x12]
+ ldr r0, [r4, #4]
+ bl FUN_0200C5A8
+ ldr r0, _02242DEC ; =MOD12_02242DF8
+ ldr r2, _02242DF0 ; =0x0000C35B
+ add r1, r4, #0
+ bl FUN_0200CA44
+ ldr r0, _02242DF4 ; =0x0000127E
+ ldrb r1, [r5, r0]
+ add r1, r1, #1
+ strb r1, [r5, r0]
+ pop {r4, r5, r6, pc}
+ nop
+_02242DE8: .word 0x02246668
+_02242DEC: .word MOD12_02242DF8
+_02242DF0: .word 0x0000C35B
+_02242DF4: .word 0x0000127E
+
+ thumb_func_start MOD12_02242DF8
+MOD12_02242DF8: ; 0x02242DF8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ ldr r1, _02242ED8 ; =0x0000127D
+ ldrb r1, [r0, r1]
+ cmp r1, #1
+ beq _02242E2C
+ ldr r2, [r4, #0xc]
+ asr r1, r2, #7
+ lsr r1, r1, #0x18
+ add r1, r2, r1
+ asr r1, r1, #8
+ cmp r1, #0xd0
+ bgt _02242E2C
+ mov r2, #0x10
+ ldrsh r1, [r4, r2]
+ ldr r3, [r4, #8]
+ sub r2, #0x20
+ add r3, r3, r1
+ asr r1, r3, #7
+ lsr r1, r1, #0x18
+ add r1, r3, r1
+ asr r1, r1, #8
+ cmp r1, r2
+ bge _02242E48
+_02242E2C:
+ ldr r1, _02242EDC ; =0x0000127E
+ ldrb r2, [r0, r1]
+ sub r2, r2, #1
+ strb r2, [r0, r1]
+ ldr r0, [r4, #4]
+ bl FUN_0200C3DC
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+_02242E48:
+ ldr r2, [r4, #0x1c]
+ ldr r1, [r4, #0x18]
+ add r0, r4, #0
+ add r2, r2, r1
+ mov r1, #0x5a
+ lsl r1, r1, #0xa
+ add r0, #0x1c
+ str r2, [r4, #0x1c]
+ cmp r2, r1
+ blt _02242E62
+ ldr r2, [r0]
+ sub r1, r2, r1
+ str r1, [r0]
+_02242E62:
+ mov r0, #0x12
+ ldrsh r0, [r4, r0]
+ ldr r1, [r4, #0x1c]
+ lsl r5, r0, #0xc
+ asr r0, r1, #7
+ lsr r0, r0, #0x18
+ add r0, r1, r0
+ lsl r0, r0, #8
+ lsr r0, r0, #0x10
+ bl FUN_0201B93C
+ asr r1, r0, #0x1f
+ asr r3, r5, #0x1f
+ add r2, r5, #0
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r5, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r5, #0xc
+ orr r1, r0
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ strh r0, [r4, #0x10]
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0x14]
+ sub r0, r1, r0
+ str r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ lsr r0, r2, #2
+ add r2, r1, r0
+ str r2, [r4, #0xc]
+ ldr r3, [r4, #8]
+ ldr r0, [r4, #4]
+ asr r1, r3, #7
+ lsr r1, r1, #0x18
+ add r1, r3, r1
+ asr r3, r1, #8
+ mov r1, #0x10
+ ldrsh r1, [r4, r1]
+ add r1, r3, r1
+ asr r3, r2, #7
+ lsr r3, r3, #0x18
+ add r3, r2, r3
+ lsl r1, r1, #0x10
+ lsl r2, r3, #8
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ ldr r0, [r4, #4]
+ bl FUN_0200C5A8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02242ED8: .word 0x0000127D
+_02242EDC: .word 0x0000127E
+
+ thumb_func_start MOD12_02242EE0
+MOD12_02242EE0: ; 0x02242EE0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _02242F84 ; =0x000080EE
+ mov r2, #0x2e
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ mov r3, #0x54
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02242F88 ; =0x000080EB
+ mov r2, #0x2e
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ mov r3, #0x53
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02242F88 ; =0x000080EB
+ mov r2, #0x2e
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ mov r3, #0x52
+ bl FUN_0200C13C
+ mov r7, #0x52
+ mov r6, #0
+ add r4, r5, #0
+ lsl r7, r7, #2
+_02242F2C:
+ ldr r0, [r5, #0x28]
+ ldr r1, [r5, #0x2c]
+ ldr r2, _02242F8C ; =0x022466D0
+ bl FUN_0200C154
+ mov r1, #0x52
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ bl FUN_0200C5A8
+ ldr r0, [r4, r7]
+ mov r1, #0
+ bl FUN_0200C644
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _02242F2C
+ ldr r4, _02242F90 ; =0x02246624
+ mov r6, #0
+ mov r7, #2
+_02242F5A:
+ mov r0, #0xf3
+ add r1, r5, r6
+ lsl r0, r0, #2
+ ldrb r0, [r1, r0]
+ ldrsh r2, [r4, r7]
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ ldrsh r1, [r4, r1]
+ bl FUN_0200C714
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _02242F5A
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02242F84: .word 0x000080EE
+_02242F88: .word 0x000080EB
+_02242F8C: .word 0x022466D0
+_02242F90: .word 0x02246624
+
+ thumb_func_start MOD12_02242F94
+MOD12_02242F94: ; 0x02242F94
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x2c]
+ ldr r1, _02242FC8 ; =0x000080EE
+ bl FUN_0200C358
+ ldr r0, [r5, #0x2c]
+ ldr r1, _02242FCC ; =0x000080EB
+ bl FUN_0200C378
+ ldr r0, [r5, #0x2c]
+ ldr r1, _02242FCC ; =0x000080EB
+ bl FUN_0200C388
+ mov r6, #0x52
+ mov r4, #0
+ lsl r6, r6, #2
+_02242FB6:
+ ldr r0, [r5, r6]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02242FB6
+ pop {r4, r5, r6, pc}
+ nop
+_02242FC8: .word 0x000080EE
+_02242FCC: .word 0x000080EB
+
+ thumb_func_start MOD12_02242FD0
+MOD12_02242FD0: ; 0x02242FD0
+ push {r3, r4, r5, lr}
+ mov r3, #0x52
+ lsl r3, r3, #2
+ lsl r4, r1, #2
+ add r5, r0, r3
+ ldr r0, [r5, r4]
+ add r1, r2, #0
+ bl FUN_0200C5C0
+ ldr r0, [r5, r4]
+ mov r1, #1
+ bl FUN_0200C644
+ ldr r0, _02242FF4 ; =0x000005DD
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+ nop
+_02242FF4: .word 0x000005DD
+
+ thumb_func_start MOD12_02242FF8
+MOD12_02242FF8: ; 0x02242FF8
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ mov r0, #0x2e
+ str r0, [sp]
+ mov r0, #0xb
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, _02243068 ; =0x000080EC
+ mov r1, #2
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ ldr r2, [r4, #0x28]
+ ldr r3, [r4, #0x2c]
+ bl FUN_0200C0DC
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _0224306C ; =0x000080F0
+ mov r2, #0x2e
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ mov r3, #0x57
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02243070 ; =0x000080ED
+ mov r2, #0x2e
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ mov r3, #0x56
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _02243070 ; =0x000080ED
+ mov r2, #0x2e
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ mov r3, #0x55
+ bl FUN_0200C13C
+ add sp, #0x18
+ pop {r4, pc}
+ nop
+_02243068: .word 0x000080EC
+_0224306C: .word 0x000080F0
+_02243070: .word 0x000080ED
+
+ thumb_func_start MOD12_02243074
+MOD12_02243074: ; 0x02243074
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ ldr r1, _0224309C ; =0x000080EC
+ bl FUN_0200C368
+ ldr r0, [r4, #0x2c]
+ ldr r1, _022430A0 ; =0x000080F0
+ bl FUN_0200C358
+ ldr r0, [r4, #0x2c]
+ ldr r1, _022430A4 ; =0x000080ED
+ bl FUN_0200C378
+ ldr r0, [r4, #0x2c]
+ ldr r1, _022430A4 ; =0x000080ED
+ bl FUN_0200C388
+ pop {r4, pc}
+ nop
+_0224309C: .word 0x000080EC
+_022430A0: .word 0x000080F0
+_022430A4: .word 0x000080ED
+
+ thumb_func_start MOD12_022430A8
+MOD12_022430A8: ; 0x022430A8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r0, #0
+ str r3, [sp]
+ cmp r2, #0
+ beq _022430BE
+ cmp r2, #1
+ beq _022430D2
+ cmp r2, #2
+ beq _022430EC
+ b _0224310C
+_022430BE:
+ mov r0, #1
+ str r0, [sp, #0x14]
+ mov r0, #0x56
+ lsl r0, r0, #2
+ add r2, r7, r0
+ mov r0, #0x30
+ mul r0, r1
+ mov r6, #0
+ add r4, r2, r0
+ b _02243114
+_022430D2:
+ lsl r0, r1, #1
+ add r2, r7, r0
+ ldr r0, _022431F0 ; =0x0000041E
+ ldrsh r6, [r2, r0]
+ mov r0, #0x11
+ str r0, [sp, #0x14]
+ mov r0, #0x86
+ lsl r0, r0, #2
+ add r2, r7, r0
+ mov r0, #0x30
+ mul r0, r1
+ add r4, r2, r0
+ b _02243114
+_022430EC:
+ lsl r0, r1, #1
+ add r3, r7, r0
+ ldr r0, _022431F0 ; =0x0000041E
+ ldrsh r2, [r3, r0]
+ add r0, #8
+ ldrsh r0, [r3, r0]
+ add r6, r2, r0
+ mov r0, #0x21
+ str r0, [sp, #0x14]
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r2, r7, r0
+ mov r0, #0x30
+ mul r0, r1
+ add r4, r2, r0
+ b _02243114
+_0224310C:
+ bl ErrorHandling
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_02243114:
+ ldr r0, [sp, #0x30]
+ add r6, #0x30
+ lsl r0, r0, #5
+ str r0, [sp, #0x10]
+ add r0, #0x20
+ str r0, [sp, #0x10]
+ ldr r0, [sp]
+ asr r0, r0, #3
+ lsr r1, r0, #0x1c
+ ldr r0, [sp]
+ add r1, r0, r1
+ asr r0, r1, #4
+ str r0, [sp, #0xc]
+ ldr r0, [sp]
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1c
+ sub r1, r1, r2
+ mov r0, #0x1c
+ ror r1, r0
+ add r0, r2, r1
+ beq _02243144
+ ldr r0, [sp, #0xc]
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+_02243144:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0xc
+ ble _0224314E
+ bl ErrorHandling
+_0224314E:
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ ble _0224317A
+ add r5, r4, #0
+_0224315A:
+ ldr r0, [r5]
+ cmp r0, #0
+ bne _0224316C
+ ldr r0, [r7, #0x28]
+ ldr r1, [r7, #0x2c]
+ ldr r2, _022431F4 ; =0x02246704
+ bl FUN_0200C154
+ str r0, [r5]
+_0224316C:
+ ldr r0, [sp, #8]
+ add r5, r5, #4
+ add r1, r0, #1
+ ldr r0, [sp, #0xc]
+ str r1, [sp, #8]
+ cmp r1, r0
+ blt _0224315A
+_0224317A:
+ ldr r0, [sp]
+ mov r7, #0
+ cmp r0, #0x10
+ blt _022431A2
+ ldr r0, [sp, #0x14]
+ add r5, r4, #0
+ str r0, [sp, #4]
+ add r0, #0xf
+ str r0, [sp, #4]
+_0224318C:
+ ldr r0, [r5]
+ ldr r1, [sp, #4]
+ bl FUN_0200C5C0
+ ldr r0, [sp]
+ add r5, r5, #4
+ sub r0, #0x10
+ add r7, r7, #1
+ str r0, [sp]
+ cmp r0, #0x10
+ bge _0224318C
+_022431A2:
+ ldr r0, [sp]
+ cmp r0, #0
+ ble _022431BE
+ ldr r0, [sp, #0xc]
+ cmp r7, r0
+ bge _022431BE
+ ldr r2, [sp, #0x14]
+ ldr r1, [sp]
+ lsl r0, r7, #2
+ add r1, r2, r1
+ ldr r0, [r4, r0]
+ sub r1, r1, #1
+ bl FUN_0200C5C0
+_022431BE:
+ ldr r0, [sp, #0xc]
+ mov r5, #0
+ cmp r0, #0
+ ble _022431EA
+ ldr r0, [sp, #0x10]
+ lsl r0, r0, #0x10
+ asr r7, r0, #0x10
+_022431CC:
+ lsl r1, r6, #0x10
+ ldr r0, [r4]
+ asr r1, r1, #0x10
+ add r2, r7, #0
+ bl FUN_0200C714
+ ldr r0, [r4]
+ bl FUN_0200C5A8
+ ldr r0, [sp, #0xc]
+ add r5, r5, #1
+ add r6, #0x10
+ add r4, r4, #4
+ cmp r5, r0
+ blt _022431CC
+_022431EA:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022431F0: .word 0x0000041E
+_022431F4: .word 0x02246704
+
+ thumb_func_start MOD12_022431F8
+MOD12_022431F8: ; 0x022431F8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r7, #0x86
+ lsl r7, r7, #2
+ str r0, [sp]
+ mov r0, #0
+ add r6, r7, #0
+ str r0, [sp, #4]
+ sub r6, #0xc0
+_0224320A:
+ ldr r5, [sp]
+ mov r4, #0
+_0224320E:
+ ldr r0, [r5, r6]
+ cmp r0, #0
+ beq _02243218
+ bl FUN_0200C3DC
+_02243218:
+ ldr r0, [r5, r7]
+ cmp r0, #0
+ beq _02243222
+ bl FUN_0200C3DC
+_02243222:
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _02243230
+ bl FUN_0200C3DC
+_02243230:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xc
+ blt _0224320E
+ ldr r0, [sp]
+ add r0, #0x30
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #4
+ blt _0224320A
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_0224324C
+MOD12_0224324C: ; 0x0224324C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ mov r0, #0
+ strb r0, [r7]
+ mov r0, #0x18
+ mov r1, #0x14
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x14
+ bl MI_CpuFill8
+ str r5, [r4]
+ str r7, [r4, #4]
+ cmp r6, #0
+ ldr r2, _0224329C ; =0x0000A028
+ bne _02243286
+ mov r0, #6
+ lsl r0, r0, #0xc
+ str r0, [r4, #8]
+ str r0, [r4, #0xc]
+ ldr r0, _022432A0 ; =MOD12_022432A8
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+_02243286:
+ mov r0, #3
+ lsl r0, r0, #0xc
+ str r0, [r4, #8]
+ mov r0, #9
+ lsl r0, r0, #0xc
+ str r0, [r4, #0xc]
+ ldr r0, _022432A4 ; =MOD12_0224333C
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224329C: .word 0x0000A028
+_022432A0: .word MOD12_022432A8
+_022432A4: .word MOD12_0224333C
+
+ thumb_func_start MOD12_022432A8
+MOD12_022432A8: ; 0x022432A8
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldrb r0, [r1, #0x10]
+ cmp r0, #0
+ bne _02243322
+ mov r0, #1
+ ldr r2, [r1, #8]
+ lsl r0, r0, #0xa
+ sub r2, r2, r0
+ str r2, [r1, #8]
+ ldr r2, [r1, #0xc]
+ add r0, r2, r0
+ str r0, [r1, #0xc]
+ mov r0, #3
+ ldr r2, [r1, #8]
+ lsl r0, r0, #0xc
+ cmp r2, r0
+ bgt _022432DA
+ str r0, [r1, #8]
+ mov r0, #9
+ lsl r0, r0, #0xc
+ str r0, [r1, #0xc]
+ ldrb r0, [r1, #0x10]
+ add r0, r0, #1
+ strb r0, [r1, #0x10]
+_022432DA:
+ ldr r3, [r1]
+ ldr r2, _02243338 ; =0x00000851
+ mov r0, #0
+ strb r0, [r3, r2]
+ ldr r3, [r1, #8]
+ ldr r4, [r1]
+ asr r5, r3, #8
+ add r3, r2, #1
+ strb r5, [r4, r3]
+ ldr r4, [r1]
+ mov r5, #0xff
+ add r3, r2, #2
+ strb r5, [r4, r3]
+ ldr r3, [r1, #0xc]
+ ldr r4, [r1]
+ asr r5, r3, #8
+ add r3, r2, #3
+ strb r5, [r4, r3]
+ ldr r4, [r1]
+ mov r5, #1
+ add r3, r2, #4
+ strb r5, [r4, r3]
+ ldr r3, [r1, #8]
+ ldr r4, [r1]
+ asr r5, r3, #8
+ add r3, r2, #5
+ strb r5, [r4, r3]
+ ldr r4, [r1]
+ add r3, r2, #6
+ strb r0, [r4, r3]
+ ldr r0, [r1, #0xc]
+ ldr r1, [r1]
+ asr r3, r0, #8
+ add r0, r2, #7
+ strb r3, [r1, r0]
+ pop {r3, r4, r5, pc}
+_02243322:
+ ldr r0, [r1, #4]
+ mov r2, #1
+ strb r2, [r0]
+ add r0, r1, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ nop
+_02243338: .word 0x00000851
+
+ thumb_func_start MOD12_0224333C
+MOD12_0224333C: ; 0x0224333C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldrb r0, [r1, #0x10]
+ cmp r0, #0
+ bne _022433B2
+ mov r0, #1
+ ldr r2, [r1, #8]
+ lsl r0, r0, #0xa
+ add r2, r2, r0
+ str r2, [r1, #8]
+ ldr r2, [r1, #0xc]
+ sub r0, r2, r0
+ str r0, [r1, #0xc]
+ mov r0, #6
+ ldr r2, [r1, #8]
+ lsl r0, r0, #0xc
+ cmp r2, r0
+ blt _0224336A
+ str r0, [r1, #8]
+ str r0, [r1, #0xc]
+ ldrb r0, [r1, #0x10]
+ add r0, r0, #1
+ strb r0, [r1, #0x10]
+_0224336A:
+ ldr r3, [r1]
+ ldr r2, _022433C8 ; =0x00000851
+ mov r0, #0
+ strb r0, [r3, r2]
+ ldr r3, [r1, #8]
+ ldr r4, [r1]
+ asr r5, r3, #8
+ add r3, r2, #1
+ strb r5, [r4, r3]
+ ldr r4, [r1]
+ mov r5, #0xff
+ add r3, r2, #2
+ strb r5, [r4, r3]
+ ldr r3, [r1, #0xc]
+ ldr r4, [r1]
+ asr r5, r3, #8
+ add r3, r2, #3
+ strb r5, [r4, r3]
+ ldr r4, [r1]
+ mov r5, #1
+ add r3, r2, #4
+ strb r5, [r4, r3]
+ ldr r3, [r1, #8]
+ ldr r4, [r1]
+ asr r5, r3, #8
+ add r3, r2, #5
+ strb r5, [r4, r3]
+ ldr r4, [r1]
+ add r3, r2, #6
+ strb r0, [r4, r3]
+ ldr r0, [r1, #0xc]
+ ldr r1, [r1]
+ asr r3, r0, #8
+ add r0, r2, #7
+ strb r3, [r1, r0]
+ pop {r3, r4, r5, pc}
+_022433B2:
+ ldr r0, [r1, #4]
+ mov r2, #1
+ strb r2, [r0]
+ add r0, r1, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ nop
+_022433C8: .word 0x00000851
+
+ thumb_func_start MOD12_022433CC
+MOD12_022433CC: ; 0x022433CC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r1, #0
+ add r0, r3, #0
+ strb r1, [r0]
+ mov r0, #0x18
+ mov r1, #0x14
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x14
+ add r4, r0, #0
+ bl MI_CpuFill8
+ lsl r0, r6, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x18]
+ cmp r7, #0
+ str r0, [r4]
+ ldr r0, [sp]
+ ldr r2, _0224342C ; =0x0000C350
+ str r0, [r4, #4]
+ bne _02243416
+ mov r0, #0x4a
+ lsl r0, r0, #0xa
+ str r0, [r4, #8]
+ mov r0, #6
+ lsl r0, r0, #0xc
+ str r0, [r4, #0xc]
+ ldr r0, _02243430 ; =MOD12_02243438
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+_02243416:
+ mov r0, #2
+ lsl r0, r0, #0xe
+ str r0, [r4, #8]
+ mov r0, #6
+ lsl r0, r0, #0xc
+ str r0, [r4, #0xc]
+ ldr r0, _02243434 ; =MOD12_022434A4
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224342C: .word 0x0000C350
+_02243430: .word MOD12_02243438
+_02243434: .word MOD12_022434A4
+
+ thumb_func_start MOD12_02243438
+MOD12_02243438: ; 0x02243438
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _0224344A
+ cmp r0, #1
+ beq _0224345A
+ b _0224348E
+_0224344A:
+ ldr r0, [r4]
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_0224345A:
+ mov r0, #2
+ ldr r1, [r4, #8]
+ lsl r0, r0, #0xa
+ sub r2, r1, r0
+ lsl r1, r0, #4
+ str r2, [r4, #8]
+ cmp r2, r1
+ bgt _02243474
+ lsl r0, r0, #4
+ str r0, [r4, #8]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_02243474:
+ ldr r2, [r4, #8]
+ ldr r0, [r4]
+ mov r1, #0
+ asr r2, r2, #8
+ bl FUN_02007558
+ ldr r2, [r4, #0xc]
+ ldr r0, [r4]
+ mov r1, #1
+ asr r2, r2, #8
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+_0224348E:
+ ldr r0, [r4, #4]
+ mov r1, #1
+ strb r1, [r0]
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022434A4
+MOD12_022434A4: ; 0x022434A4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _022434B6
+ cmp r0, #1
+ beq _022434BA
+ b _022434F0
+_022434B6:
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_022434BA:
+ mov r0, #2
+ ldr r1, [r4, #8]
+ lsl r0, r0, #0xa
+ sub r1, r1, r0
+ ldr r0, _02243510 ; =0xFFFFD800
+ str r1, [r4, #8]
+ cmp r1, r0
+ bgt _022434D0
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_022434D0:
+ ldr r3, [r4, #8]
+ ldr r0, [r4]
+ asr r2, r3, #7
+ lsr r2, r2, #0x18
+ add r2, r3, r2
+ mov r1, #0
+ asr r2, r2, #8
+ bl FUN_02007558
+ ldr r2, [r4, #0xc]
+ ldr r0, [r4]
+ mov r1, #1
+ asr r2, r2, #8
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+_022434F0:
+ ldr r0, [r4]
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ ldr r0, [r4, #4]
+ mov r1, #1
+ strb r1, [r0]
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ nop
+_02243510: .word 0xFFFFD800
+
+ thumb_func_start MOD12_02243514
+MOD12_02243514: ; 0x02243514
+ ldr r2, _022435B0 ; =0x00000121
+ ldrb r0, [r0, r2]
+ cmp r0, #8
+ bhi _022435AA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02243528: ; jump table
+ .short _0224353A - _02243528 - 2 ; case 0
+ .short _02243552 - _02243528 - 2 ; case 1
+ .short _02243568 - _02243528 - 2 ; case 2
+ .short _02243586 - _02243528 - 2 ; case 3
+ .short _02243586 - _02243528 - 2 ; case 4
+ .short _02243592 - _02243528 - 2 ; case 5
+ .short _02243592 - _02243528 - 2 ; case 6
+ .short _0224359E - _02243528 - 2 ; case 7
+ .short _0224359E - _02243528 - 2 ; case 8
+_0224353A:
+ cmp r1, #0
+ beq _02243544
+ cmp r1, #2
+ beq _02243548
+ b _0224354E
+_02243544:
+ ldr r0, _022435B4 ; =0x00001770
+ bx lr
+_02243548:
+ mov r0, #0xfa
+ lsl r0, r0, #4
+ bx lr
+_0224354E:
+ mov r0, #0
+ bx lr
+_02243552:
+ cmp r1, #0
+ beq _0224355C
+ cmp r1, #1
+ beq _02243560
+ b _02243564
+_0224355C:
+ ldr r0, _022435B8 ; =0x00001B58
+ bx lr
+_02243560:
+ ldr r0, _022435BC ; =0x00000BB8
+ bx lr
+_02243564:
+ mov r0, #0
+ bx lr
+_02243568:
+ cmp r1, #0
+ beq _02243576
+ cmp r1, #1
+ beq _0224357A
+ cmp r1, #2
+ beq _0224357E
+ b _02243582
+_02243576:
+ ldr r0, _022435C0 ; =0x00000D05
+ bx lr
+_0224357A:
+ ldr r0, _022435C0 ; =0x00000D05
+ bx lr
+_0224357E:
+ ldr r0, _022435C0 ; =0x00000D05
+ bx lr
+_02243582:
+ mov r0, #0
+ bx lr
+_02243586:
+ cmp r1, #0
+ bne _0224358E
+ ldr r0, _022435C4 ; =0x00002710
+ bx lr
+_0224358E:
+ mov r0, #0
+ bx lr
+_02243592:
+ cmp r1, #1
+ bne _0224359A
+ ldr r0, _022435C4 ; =0x00002710
+ bx lr
+_0224359A:
+ mov r0, #0
+ bx lr
+_0224359E:
+ cmp r1, #2
+ bne _022435A6
+ ldr r0, _022435C4 ; =0x00002710
+ bx lr
+_022435A6:
+ mov r0, #0
+ bx lr
+_022435AA:
+ mov r0, #0
+ bx lr
+ nop
+_022435B0: .word 0x00000121
+_022435B4: .word 0x00001770
+_022435B8: .word 0x00001B58
+_022435BC: .word 0x00000BB8
+_022435C0: .word 0x00000D05
+_022435C4: .word 0x00002710
+
+ thumb_func_start MOD12_022435C8
+MOD12_022435C8: ; 0x022435C8
+ push {r3, lr}
+ bl MOD12_02243514
+ mov r1, #0xc0
+ add r2, r0, #0
+ mul r2, r1
+ ldr r1, _022435E0 ; =0x00001388
+ add r0, r2, r1
+ lsl r1, r1, #1
+ bl _s32_div_f
+ pop {r3, pc}
+ .align 2, 0
+_022435E0: .word 0x00001388
+
+ thumb_func_start MOD12_022435E4
+MOD12_022435E4: ; 0x022435E4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ str r0, [sp]
+ mov r0, #0
+ ldr r7, [sp]
+ add r5, r1, #0
+ add r6, r2, #0
+ str r0, [sp, #8]
+ add r4, sp, #0x24
+_022435F6:
+ cmp r5, #0
+ beq _02243604
+ cmp r5, #1
+ beq _0224361E
+ cmp r5, #2
+ beq _02243628
+ b _02243630
+_02243604:
+ ldr r0, [sp]
+ ldr r1, [sp, #8]
+ bl FUN_02083308
+ str r0, [sp, #0x10]
+ ldr r0, [sp]
+ ldr r1, [sp, #8]
+ bl FUN_0208336C
+ ldr r1, [sp, #0x10]
+ add r0, r1, r0
+ str r0, [r4]
+ b _02243638
+_0224361E:
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldrsh r0, [r7, r0]
+ str r0, [r4]
+ b _02243638
+_02243628:
+ ldr r0, _022436CC ; =0x0000012E
+ ldrsh r0, [r7, r0]
+ str r0, [r4]
+ b _02243638
+_02243630:
+ bl ErrorHandling
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+_02243638:
+ ldr r0, [sp, #8]
+ add r4, r4, #4
+ add r0, r0, #1
+ add r7, #0xc
+ str r0, [sp, #8]
+ cmp r0, #4
+ blt _022435F6
+ mov r4, #0
+ mov r3, #1
+ add r2, sp, #0x28
+ add r7, sp, #0x24
+_0224364E:
+ lsl r0, r4, #2
+ ldr r1, [r7, r0]
+ ldr r0, [r2]
+ cmp r1, r0
+ bge _0224365A
+ add r4, r3, #0
+_0224365A:
+ add r3, r3, #1
+ add r2, r2, #4
+ cmp r3, #4
+ blt _0224364E
+ ldr r0, [sp]
+ add r1, r5, #0
+ bl MOD12_02243514
+ lsl r2, r4, #2
+ add r1, sp, #0x24
+ ldr r1, [r1, r2]
+ bl _s32_div_f
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #4]
+ add r7, sp, #0x24
+ add r4, sp, #0x14
+_0224367E:
+ ldr r0, [r7]
+ ldr r1, [sp, #0xc]
+ mul r0, r1
+ str r0, [r4]
+ add r0, #0x32
+ mov r1, #0x64
+ bl _s32_div_f
+ stmia r4!, {r0}
+ ldr r0, [sp, #4]
+ add r7, r7, #4
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #4
+ blt _0224367E
+ mov r2, #0
+ add r1, sp, #0x14
+_022436A0:
+ cmp r5, #0
+ beq _022436AE
+ cmp r5, #1
+ beq _022436B4
+ cmp r5, #2
+ beq _022436BA
+ b _022436BE
+_022436AE:
+ ldr r0, [r1]
+ strh r0, [r6]
+ b _022436BE
+_022436B4:
+ ldr r0, [r1]
+ strh r0, [r6]
+ b _022436BE
+_022436BA:
+ ldr r0, [r1]
+ strh r0, [r6]
+_022436BE:
+ add r2, r2, #1
+ add r1, r1, #4
+ add r6, r6, #2
+ cmp r2, #4
+ blt _022436A0
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022436CC: .word 0x0000012E
+
+ thumb_func_start MOD12_022436D0
+MOD12_022436D0: ; 0x022436D0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ str r0, [sp]
+ ldr r0, [r0]
+ ldr r1, _022439F0 ; =0x00000121
+ ldrb r1, [r0, r1]
+ cmp r1, #8
+ bhi _02243790
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022436EC: ; jump table
+ .short _022436FE - _022436EC - 2 ; case 0
+ .short _0224371C - _022436EC - 2 ; case 1
+ .short _0224373A - _022436EC - 2 ; case 2
+ .short _02243768 - _022436EC - 2 ; case 3
+ .short _02243768 - _022436EC - 2 ; case 4
+ .short _02243776 - _022436EC - 2 ; case 5
+ .short _02243776 - _022436EC - 2 ; case 6
+ .short _02243784 - _022436EC - 2 ; case 7
+ .short _02243784 - _022436EC - 2 ; case 8
+_022436FE:
+ ldr r3, _022439F4 ; =0x000003D6
+ ldr r2, [sp]
+ mov r1, #0
+ add r2, r2, r3
+ bl MOD12_022435E4
+ ldr r0, [sp]
+ ldr r3, _022439F8 ; =0x000003E6
+ ldr r2, [sp]
+ ldr r0, [r0]
+ mov r1, #2
+ add r2, r2, r3
+ bl MOD12_022435E4
+ b _02243790
+_0224371C:
+ ldr r3, _022439F4 ; =0x000003D6
+ ldr r2, [sp]
+ mov r1, #0
+ add r2, r2, r3
+ bl MOD12_022435E4
+ ldr r0, [sp]
+ ldr r3, _022439FC ; =0x000003DE
+ ldr r2, [sp]
+ ldr r0, [r0]
+ mov r1, #1
+ add r2, r2, r3
+ bl MOD12_022435E4
+ b _02243790
+_0224373A:
+ ldr r3, _022439F4 ; =0x000003D6
+ ldr r2, [sp]
+ mov r1, #0
+ add r2, r2, r3
+ bl MOD12_022435E4
+ ldr r0, [sp]
+ ldr r3, _022439FC ; =0x000003DE
+ ldr r2, [sp]
+ ldr r0, [r0]
+ mov r1, #1
+ add r2, r2, r3
+ bl MOD12_022435E4
+ ldr r0, [sp]
+ ldr r3, _022439F8 ; =0x000003E6
+ ldr r2, [sp]
+ ldr r0, [r0]
+ mov r1, #2
+ add r2, r2, r3
+ bl MOD12_022435E4
+ b _02243790
+_02243768:
+ ldr r3, _022439F4 ; =0x000003D6
+ ldr r2, [sp]
+ mov r1, #0
+ add r2, r2, r3
+ bl MOD12_022435E4
+ b _02243790
+_02243776:
+ ldr r3, _022439FC ; =0x000003DE
+ ldr r2, [sp]
+ mov r1, #1
+ add r2, r2, r3
+ bl MOD12_022435E4
+ b _02243790
+_02243784:
+ ldr r3, _022439F8 ; =0x000003E6
+ ldr r2, [sp]
+ mov r1, #2
+ add r2, r2, r3
+ bl MOD12_022435E4
+_02243790:
+ ldr r7, _022439F4 ; =0x000003D6
+ ldr r6, [sp]
+ add r0, r7, #0
+ add r1, r7, #0
+ mov r5, #0
+ add r0, #8
+ add r1, #0x18
+_0224379E:
+ ldr r2, _022439F8 ; =0x000003E6
+ ldrsh r3, [r6, r7]
+ ldrsh r4, [r6, r2]
+ ldrsh r2, [r6, r0]
+ add r5, r5, #1
+ add r2, r3, r2
+ add r2, r4, r2
+ strh r2, [r6, r1]
+ add r6, r6, #2
+ cmp r5, #4
+ blt _0224379E
+ ldr r1, [sp]
+ ldr r4, _022439F4 ; =0x000003D6
+ mov r0, #0
+ mov r2, #1
+ add r1, r1, #2
+ add r5, r4, #0
+_022437C0:
+ ldr r3, [sp]
+ lsl r6, r0, #1
+ add r3, r3, r6
+ ldrsh r6, [r3, r4]
+ ldrsh r3, [r1, r5]
+ cmp r6, r3
+ bge _022437D0
+ add r0, r2, #0
+_022437D0:
+ add r2, r2, #1
+ add r1, r1, #2
+ cmp r2, #4
+ blt _022437C0
+ lsl r1, r0, #1
+ ldr r0, [sp]
+ ldr r4, [sp]
+ add r1, r0, r1
+ ldr r0, _022439F4 ; =0x000003D6
+ mov r5, #0
+ add r7, r0, #0
+ ldrsh r6, [r1, r0]
+ add r7, #0x20
+_022437EA:
+ ldr r0, _022439F4 ; =0x000003D6
+ ldrsh r1, [r4, r0]
+ mov r0, #0x64
+ mul r0, r1
+ add r1, r6, #0
+ bl _s32_div_f
+ strh r0, [r4, r7]
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r5, #4
+ blt _022437EA
+ ldr r0, [sp]
+ ldr r4, _022439FC ; =0x000003DE
+ mov r2, #0
+ mov r1, #1
+ add r0, r0, #2
+ add r5, r4, #0
+_0224380E:
+ ldr r3, [sp]
+ lsl r6, r2, #1
+ add r3, r3, r6
+ ldrsh r6, [r3, r4]
+ ldrsh r3, [r0, r5]
+ cmp r6, r3
+ bge _0224381E
+ add r2, r1, #0
+_0224381E:
+ add r1, r1, #1
+ add r0, r0, #2
+ cmp r1, #4
+ blt _0224380E
+ ldr r0, [sp]
+ lsl r1, r2, #1
+ add r1, r0, r1
+ ldr r0, _022439FC ; =0x000003DE
+ ldr r4, [sp]
+ add r7, r0, #0
+ ldrsh r6, [r1, r0]
+ mov r5, #0
+ add r7, #0x20
+_02243838:
+ ldr r0, _022439FC ; =0x000003DE
+ ldrsh r1, [r4, r0]
+ mov r0, #0x64
+ mul r0, r1
+ add r1, r6, #0
+ bl _s32_div_f
+ strh r0, [r4, r7]
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r5, #4
+ blt _02243838
+ ldr r0, [sp]
+ ldr r4, _022439F8 ; =0x000003E6
+ mov r2, #0
+ mov r1, #1
+ add r0, r0, #2
+ add r5, r4, #0
+_0224385C:
+ ldr r3, [sp]
+ lsl r6, r2, #1
+ add r3, r3, r6
+ ldrsh r6, [r3, r4]
+ ldrsh r3, [r0, r5]
+ cmp r6, r3
+ bge _0224386C
+ add r2, r1, #0
+_0224386C:
+ add r1, r1, #1
+ add r0, r0, #2
+ cmp r1, #4
+ blt _0224385C
+ ldr r0, [sp]
+ lsl r1, r2, #1
+ add r1, r0, r1
+ ldr r0, _022439F8 ; =0x000003E6
+ ldr r4, [sp]
+ add r7, r0, #0
+ ldrsh r6, [r1, r0]
+ mov r5, #0
+ add r7, #0x20
+_02243886:
+ ldr r0, _022439F8 ; =0x000003E6
+ ldrsh r1, [r4, r0]
+ mov r0, #0x64
+ mul r0, r1
+ add r1, r6, #0
+ bl _s32_div_f
+ strh r0, [r4, r7]
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r5, #4
+ blt _02243886
+ ldr r0, [sp]
+ mov r1, #0
+ ldr r0, [r0]
+ bl MOD12_022435C8
+ ldr r4, [sp]
+ ldr r7, _02243A00 ; =0x0000041E
+ add r6, r0, #0
+ mov r5, #0
+_022438B0:
+ ldr r0, _02243A04 ; =0x000003F6
+ mov r1, #0x64
+ ldrsh r0, [r4, r0]
+ mul r0, r6
+ bl _s32_div_f
+ strh r0, [r4, r7]
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r5, #4
+ blt _022438B0
+ ldr r0, [sp]
+ mov r1, #1
+ ldr r0, [r0]
+ bl MOD12_022435C8
+ ldr r4, [sp]
+ ldr r7, _02243A08 ; =0x00000426
+ add r6, r0, #0
+ mov r5, #0
+_022438D8:
+ ldr r0, _02243A0C ; =0x000003FE
+ mov r1, #0x64
+ ldrsh r0, [r4, r0]
+ mul r0, r6
+ bl _s32_div_f
+ strh r0, [r4, r7]
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r5, #4
+ blt _022438D8
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0]
+ bl MOD12_022435C8
+ ldr r4, [sp]
+ ldr r7, _02243A10 ; =0x0000042E
+ add r6, r0, #0
+ mov r5, #0
+_02243900:
+ ldr r0, _02243A14 ; =0x00000406
+ mov r1, #0x64
+ ldrsh r0, [r4, r0]
+ mul r0, r6
+ bl _s32_div_f
+ strh r0, [r4, r7]
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r5, #4
+ blt _02243900
+ ldr r7, _02243A00 ; =0x0000041E
+ ldr r5, [sp]
+ add r0, r7, #0
+ add r1, r7, #0
+ mov r6, #0
+ add r0, #8
+ sub r1, #8
+_02243924:
+ ldr r2, _02243A10 ; =0x0000042E
+ ldrsh r3, [r5, r7]
+ ldrsh r4, [r5, r2]
+ ldrsh r2, [r5, r0]
+ add r6, r6, #1
+ add r2, r3, r2
+ add r2, r4, r2
+ strh r2, [r5, r1]
+ add r5, r5, #2
+ cmp r6, #4
+ blt _02243924
+ ldr r0, [sp]
+ mov r7, #0
+ add r6, sp, #0x18
+ str r0, [sp, #4]
+ add r4, sp, #8
+ add r5, sp, #0x28
+_02243946:
+ stmia r6!, {r7}
+ ldr r1, [sp, #4]
+ ldr r0, _02243A18 ; =0x00000416
+ ldrsh r0, [r1, r0]
+ stmia r4!, {r0}
+ ldr r0, [sp]
+ ldr r0, [r0]
+ bl FUN_02082878
+ stmia r5!, {r0}
+ ldr r0, [sp, #4]
+ add r7, r7, #1
+ add r0, r0, #2
+ str r0, [sp, #4]
+ cmp r7, #4
+ blt _02243946
+ mov r0, #0
+ mov ip, r0
+_0224396A:
+ mov r0, ip
+ mov r7, #3
+ cmp r0, #3
+ bge _022439B8
+ add r2, sp, #0x14
+ add r3, sp, #0x34
+ add r4, sp, #0x24
+_02243978:
+ sub r0, r2, #4
+ ldr r5, [r2]
+ ldr r6, [r0]
+ cmp r6, r5
+ blt _02243990
+ cmp r6, r5
+ bne _022439AA
+ sub r0, r3, #4
+ ldr r1, [r0]
+ ldr r0, [r3]
+ cmp r1, r0
+ bge _022439AA
+_02243990:
+ str r6, [r2]
+ sub r0, r2, #4
+ str r5, [r0]
+ sub r0, r4, #4
+ ldr r5, [r4]
+ ldr r1, [r0]
+ str r1, [r4]
+ str r5, [r0]
+ sub r0, r3, #4
+ ldr r5, [r3]
+ ldr r1, [r0]
+ str r1, [r3]
+ str r5, [r0]
+_022439AA:
+ sub r7, r7, #1
+ mov r0, ip
+ sub r2, r2, #4
+ sub r3, r3, #4
+ sub r4, r4, #4
+ cmp r7, r0
+ bgt _02243978
+_022439B8:
+ mov r0, ip
+ add r0, r0, #1
+ mov ip, r0
+ cmp r0, #3
+ blt _0224396A
+ mov r1, #0x13
+ ldr r7, _02243A1C ; =0x000003D1
+ mov r6, #0
+ add r5, sp, #0x18
+ mov r0, #0xc
+ lsl r1, r1, #4
+_022439CE:
+ ldr r3, [sp]
+ ldr r2, [r5]
+ add r3, r3, r6
+ strb r2, [r3, r7]
+ ldr r2, [sp]
+ ldr r4, [r2]
+ ldr r2, [r5]
+ add r5, r5, #4
+ add r3, r2, #0
+ mul r3, r0
+ add r2, r4, r3
+ strb r6, [r2, r1]
+ add r6, r6, #1
+ cmp r6, #4
+ blt _022439CE
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022439F0: .word 0x00000121
+_022439F4: .word 0x000003D6
+_022439F8: .word 0x000003E6
+_022439FC: .word 0x000003DE
+_02243A00: .word 0x0000041E
+_02243A04: .word 0x000003F6
+_02243A08: .word 0x00000426
+_02243A0C: .word 0x000003FE
+_02243A10: .word 0x0000042E
+_02243A14: .word 0x00000406
+_02243A18: .word 0x00000416
+_02243A1C: .word 0x000003D1
+
+ thumb_func_start MOD12_02243A20
+MOD12_02243A20: ; 0x02243A20
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r1, _02243A54 ; =0x02246758
+ add r3, sp, #0
+ str r1, [sp]
+ mov r1, #0xb
+ strh r1, [r3, #4]
+ ldr r1, [r0]
+ ldr r2, _02243A58 ; =0x00000123
+ ldrb r1, [r1, r2]
+ strb r1, [r3, #6]
+ sub r1, r2, #7
+ ldr r4, [r0]
+ add r2, #0x4e
+ ldrb r1, [r4, r1]
+ strb r1, [r3, #8]
+ ldr r1, [r0]
+ ldrb r1, [r1, r2]
+ strb r1, [r3, #7]
+ ldr r1, _02243A5C ; =0x0000085C
+ add r0, r0, r1
+ add r1, sp, #0
+ bl MOD12_02240ED0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_02243A54: .word 0x02246758
+_02243A58: .word 0x00000123
+_02243A5C: .word 0x0000085C
+
+ thumb_func_start MOD12_02243A60
+MOD12_02243A60: ; 0x02243A60
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02243A74
+MOD12_02243A74: ; 0x02243A74
+ push {r3, lr}
+ add r1, r2, #0
+ mov r2, #0
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02243A84
+MOD12_02243A84: ; 0x02243A84
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD12_02243A88
+MOD12_02243A88: ; 0x02243A88
+ push {r3, lr}
+ mov r1, #0x9a
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02243A9C
+MOD12_02243A9C: ; 0x02243A9C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r1, #0xe7
+ lsl r1, r1, #2
+ str r0, [sp]
+ mov ip, r2
+ add r0, r3, #0
+ add r4, r6, r1
+ mov r2, #0x4d
+_02243AAE:
+ ldrh r1, [r0]
+ add r0, r0, #2
+ strh r1, [r4]
+ add r4, r4, #2
+ sub r2, r2, #1
+ bne _02243AAE
+ mov r1, #0
+ ldr r7, _02243B04 ; =0x00000132
+ add r2, r1, #0
+_02243AC0:
+ ldr r0, [r6]
+ mov r4, #0x4a
+ add r0, r0, r2
+ ldrh r5, [r3]
+ lsl r4, r4, #2
+ add r1, r1, #1
+ strh r5, [r0, r4]
+ ldrh r5, [r3, #2]
+ add r4, r4, #2
+ add r2, #0xc
+ strh r5, [r0, r4]
+ mov r4, #0x4b
+ ldrh r5, [r3, #4]
+ lsl r4, r4, #2
+ strh r5, [r0, r4]
+ ldrh r5, [r3, #6]
+ add r4, r4, #2
+ strh r5, [r0, r4]
+ mov r4, #0x13
+ ldrh r5, [r3, #8]
+ lsl r4, r4, #4
+ strh r5, [r0, r4]
+ ldrh r4, [r3, #0xa]
+ add r3, #0xc
+ cmp r1, #4
+ strh r4, [r0, r7]
+ blt _02243AC0
+ mov r2, #0
+ ldr r0, [sp]
+ mov r1, ip
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02243B04: .word 0x00000132
+
+ thumb_func_start MOD12_02243B08
+MOD12_02243B08: ; 0x02243B08
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02243B1C
+MOD12_02243B1C: ; 0x02243B1C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x18
+ add r7, r1, #0
+ add r1, r0, #0
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x18
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _02243B58 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, _02243B5C ; =MOD12_02243B60
+ str r6, [r4, #0xc]
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02243B58: .word 0x00007530
+_02243B5C: .word MOD12_02243B60
+
+ thumb_func_start MOD12_02243B60
+MOD12_02243B60: ; 0x02243B60
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldrb r0, [r1, #0x10]
+ str r1, [sp]
+ cmp r0, #0
+ beq _02243B70
+ b _02243C96
+_02243B70:
+ ldr r0, [sp]
+ mov r1, #0x14
+ ldrsb r0, [r0, r1]
+ cmp r0, #0
+ ble _02243B84
+ sub r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x14]
+ pop {r4, r5, r6, r7, pc}
+_02243B84:
+ ldr r0, [sp]
+ mov r1, #0x13
+ ldrsb r0, [r0, r1]
+ cmp r0, #0
+ ble _02243B98
+ sub r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x13]
+ pop {r4, r5, r6, r7, pc}
+_02243B98:
+ ldr r0, [sp]
+ mov r1, #1
+ strb r1, [r0, #0x13]
+ ldr r0, [r0]
+ mov r1, #2
+ ldr r0, [r0, #0x30]
+ bl FUN_0201886C
+ mov ip, r0
+ mov r0, #0
+ str r0, [sp, #8]
+ b _02243C10
+_02243BB0:
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ ldr r0, _02243CB4 ; =0x02246738
+ ldrsb r1, [r0, r1]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ bmi _02243C0A
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ ldr r0, [sp]
+ mov r5, #0
+ ldrb r0, [r0, #0x12]
+ mov r7, #0x3f
+ str r5, [sp, #4]
+ lsl r1, r0, #1
+ ldr r0, _02243CB8 ; =0x02246740
+ lsl r7, r7, #0xa
+ ldrh r1, [r0, r1]
+ ldr r0, [sp, #8]
+ lsl r0, r0, #5
+ add r6, r1, r0
+ b _02243C04
+_02243BE0:
+ mov r4, #0
+ b _02243BF8
+_02243BE4:
+ add r0, r5, r4
+ lsl r2, r0, #1
+ ldrh r0, [r3, r2]
+ and r0, r7
+ strh r0, [r3, r2]
+ ldrh r1, [r3, r2]
+ add r0, r6, r4
+ add r4, r4, #1
+ orr r0, r1
+ strh r0, [r3, r2]
+_02243BF8:
+ cmp r4, #8
+ blt _02243BE4
+ ldr r0, [sp, #4]
+ add r5, #8
+ add r0, r0, #1
+ str r0, [sp, #4]
+_02243C04:
+ ldr r0, [sp, #4]
+ cmp r0, #4
+ blt _02243BE0
+_02243C0A:
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+_02243C10:
+ ldr r0, [sp, #8]
+ cmp r0, #4
+ blt _02243BB0
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ ble _02243C52
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0
+ bne _02243C52
+ ldr r0, _02243CB4 ; =0x02246738
+ sub r1, r1, #1
+ ldrsb r0, [r0, r1]
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ mov r0, #0
+ mov r1, #0x3f
+ str r0, [sp, #4]
+ lsl r1, r1, #0xa
+ b _02243C4C
+_02243C3C:
+ ldr r0, [sp, #4]
+ lsl r2, r0, #1
+ ldrh r0, [r3, r2]
+ and r0, r1
+ strh r0, [r3, r2]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+_02243C4C:
+ ldr r0, [sp, #4]
+ cmp r0, #0x20
+ blt _02243C3C
+_02243C52:
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0]
+ ldr r0, [r0, #0x30]
+ bl FUN_0201AC68
+ ldr r0, [sp]
+ ldrb r0, [r0, #0x12]
+ add r1, r0, #1
+ ldr r0, [sp]
+ strb r1, [r0, #0x12]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0xc
+ blo _02243CB0
+ ldr r1, [sp]
+ mov r0, #0
+ mov r2, #0x11
+ strb r0, [r1, #0x12]
+ ldrsb r1, [r1, r2]
+ add r3, r1, #1
+ ldr r1, [sp]
+ strb r3, [r1, #0x11]
+ strb r0, [r1, #0x14]
+ add r0, r1, #0
+ ldrsb r0, [r0, r2]
+ cmp r0, #5
+ blo _02243CB0
+ add r0, r1, #0
+ ldrb r0, [r0, #0x10]
+ add r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_02243C96:
+ add r0, r1, #0
+ mov r2, #0
+ ldr r0, [r0, #0xc]
+ add r1, r1, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ ldr r0, [sp]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_02243CB0:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02243CB4: .word 0x02246738
+_02243CB8: .word 0x02246740
+
+ thumb_func_start MOD12_02243CBC
+MOD12_02243CBC: ; 0x02243CBC
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02243CD0
+MOD12_02243CD0: ; 0x02243CD0
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x18
+ add r7, r1, #0
+ add r1, r0, #0
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x18
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _02243D0C ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, _02243D10 ; =MOD12_02243D14
+ str r6, [r4, #0xc]
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02243D0C: .word 0x00007530
+_02243D10: .word MOD12_02243D14
+
+ thumb_func_start MOD12_02243D14
+MOD12_02243D14: ; 0x02243D14
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldrb r0, [r1, #0x10]
+ str r1, [sp]
+ cmp r0, #0
+ beq _02243D24
+ b _02243E72
+_02243D24:
+ ldr r0, [sp]
+ mov r1, #0x14
+ ldrsb r0, [r0, r1]
+ cmp r0, #0
+ ble _02243D38
+ sub r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x14]
+ pop {r4, r5, r6, r7, pc}
+_02243D38:
+ ldr r0, [sp]
+ mov r1, #0x13
+ ldrsb r0, [r0, r1]
+ cmp r0, #0
+ ble _02243D4C
+ sub r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x13]
+ pop {r4, r5, r6, r7, pc}
+_02243D4C:
+ ldr r0, [sp]
+ mov r1, #1
+ strb r1, [r0, #0x13]
+ ldr r0, [r0]
+ mov r1, #2
+ ldr r0, [r0, #0x30]
+ bl FUN_0201886C
+ mov ip, r0
+ mov r0, #0
+ str r0, [sp, #8]
+ b _02243DCC
+_02243D64:
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ mov r0, #4
+ sub r1, r0, r1
+ ldr r0, _02243E90 ; =0x02246738
+ ldrsb r1, [r0, r1]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ bmi _02243DC6
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ ldr r0, [sp]
+ mov r5, #0
+ ldrb r1, [r0, #0x12]
+ mov r0, #0xb
+ mov r7, #0x3f
+ sub r0, r0, r1
+ lsl r1, r0, #1
+ ldr r0, _02243E94 ; =0x02246740
+ str r5, [sp, #4]
+ ldrh r1, [r0, r1]
+ ldr r0, [sp, #8]
+ lsl r7, r7, #0xa
+ lsl r0, r0, #5
+ add r6, r1, r0
+ b _02243DC0
+_02243D9C:
+ mov r4, #0
+ b _02243DB4
+_02243DA0:
+ add r0, r5, r4
+ lsl r2, r0, #1
+ ldrh r0, [r3, r2]
+ and r0, r7
+ strh r0, [r3, r2]
+ ldrh r1, [r3, r2]
+ add r0, r6, r4
+ add r4, r4, #1
+ orr r0, r1
+ strh r0, [r3, r2]
+_02243DB4:
+ cmp r4, #8
+ blt _02243DA0
+ ldr r0, [sp, #4]
+ add r5, #8
+ add r0, r0, #1
+ str r0, [sp, #4]
+_02243DC0:
+ ldr r0, [sp, #4]
+ cmp r0, #4
+ blt _02243D9C
+_02243DC6:
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+_02243DCC:
+ ldr r0, [sp, #8]
+ cmp r0, #4
+ blt _02243D64
+ ldr r0, [sp]
+ mov r1, #0x11
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ ble _02243E2E
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0
+ bne _02243E2E
+ mov r0, #5
+ sub r1, r0, r1
+ ldr r0, _02243E90 ; =0x02246738
+ mov r7, #0x3f
+ ldrsb r0, [r0, r1]
+ lsl r7, r7, #0xa
+ mov r6, #0x1d
+ add r0, r0, #3
+ lsl r1, r0, #6
+ mov r0, ip
+ add r3, r0, r1
+ mov r0, #0
+ mov r1, #2
+ str r0, [sp, #4]
+ lsl r1, r1, #8
+ b _02243E28
+_02243E02:
+ ldr r0, [sp, #4]
+ ldr r5, [sp, #4]
+ lsl r4, r0, #1
+ ldrh r0, [r3, r4]
+ lsl r5, r5, #0x1d
+ and r0, r7
+ strh r0, [r3, r4]
+ ldr r0, [sp, #4]
+ ldrh r2, [r3, r4]
+ lsr r0, r0, #0x1f
+ sub r5, r5, r0
+ ror r5, r6
+ add r0, r0, r5
+ add r0, r0, r1
+ orr r0, r2
+ strh r0, [r3, r4]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+_02243E28:
+ ldr r0, [sp, #4]
+ cmp r0, #0x20
+ blt _02243E02
+_02243E2E:
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0]
+ ldr r0, [r0, #0x30]
+ bl FUN_0201AC68
+ ldr r0, [sp]
+ ldrb r0, [r0, #0x12]
+ add r1, r0, #1
+ ldr r0, [sp]
+ strb r1, [r0, #0x12]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0xc
+ blo _02243E8C
+ ldr r1, [sp]
+ mov r0, #0
+ mov r2, #0x11
+ strb r0, [r1, #0x12]
+ ldrsb r1, [r1, r2]
+ add r3, r1, #1
+ ldr r1, [sp]
+ strb r3, [r1, #0x11]
+ strb r0, [r1, #0x14]
+ add r0, r1, #0
+ ldrsb r0, [r0, r2]
+ cmp r0, #5
+ blo _02243E8C
+ add r0, r1, #0
+ ldrb r0, [r0, #0x10]
+ add r1, r0, #1
+ ldr r0, [sp]
+ add sp, #0xc
+ strb r1, [r0, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_02243E72:
+ add r0, r1, #0
+ mov r2, #0
+ ldr r0, [r0, #0xc]
+ add r1, r1, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ ldr r0, [sp]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+_02243E8C:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02243E90: .word 0x02246738
+_02243E94: .word 0x02246740
+
+ thumb_func_start MOD12_02243E98
+MOD12_02243E98: ; 0x02243E98
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02243EAC
+MOD12_02243EAC: ; 0x02243EAC
+ push {r4, lr}
+ ldr r3, _02243EC0 ; =0x0000127C
+ mov r4, #1
+ strb r4, [r1, r3]
+ add r1, r2, #0
+ mov r2, #0
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ pop {r4, pc}
+ .align 2, 0
+_02243EC0: .word 0x0000127C
+
+ thumb_func_start MOD12_02243EC4
+MOD12_02243EC4: ; 0x02243EC4
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02243ED8
+MOD12_02243ED8: ; 0x02243ED8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #0x18
+ mov r1, #0x20
+ add r6, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x20
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ ldr r2, _02243F38 ; =0x00007530
+ str r0, [r4]
+ ldrh r0, [r6]
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ str r7, [r4, #0xc]
+ ldrb r0, [r5]
+ strb r0, [r4, #0x11]
+ ldrh r0, [r5, #8]
+ strh r0, [r4, #0x14]
+ ldrh r0, [r5, #0xa]
+ strh r0, [r4, #0x16]
+ ldrh r0, [r5, #0xc]
+ strh r0, [r4, #0x18]
+ ldrb r0, [r5, #0xe]
+ strb r0, [r4, #0x1a]
+ ldrb r0, [r5, #0x11]
+ strb r0, [r4, #0x1d]
+ ldrb r0, [r5, #0x10]
+ strb r0, [r4, #0x1c]
+ ldrb r0, [r5, #0xf]
+ strb r0, [r4, #0x1b]
+ ldr r0, _02243F3C ; =MOD12_02243F40
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02243F38: .word 0x00007530
+_02243F3C: .word MOD12_02243F40
+
+ thumb_func_start MOD12_02243F40
+MOD12_02243F40: ; 0x02243F40
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _02243F56
+ cmp r0, #1
+ beq _02243F94
+ cmp r0, #2
+ beq _02243FA6
+ b _02243FDE
+_02243F56:
+ ldrb r0, [r4, #0x1a]
+ cmp r0, #0
+ beq _02243F8E
+ ldrb r0, [r4, #0x1d]
+ cmp r0, #0
+ bne _02243F7A
+ ldr r0, [r4]
+ mov r1, #1
+ add r0, #0x34
+ add r2, r1, #0
+ mov r3, #0xe
+ bl FUN_0200D0BC
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0, #0x30]
+ bl FUN_0201AC68
+_02243F7A:
+ ldrb r1, [r4, #0x1a]
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r2, #0x14
+ bl MOD12_02242678
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02243F8E:
+ mov r0, #0x64
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02243F94:
+ ldr r0, [r4]
+ bl MOD12_022426AC
+ cmp r0, #0
+ bne _02243FF6
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02243FA6:
+ ldrb r0, [r4, #0x12]
+ add r0, r0, #1
+ strb r0, [r4, #0x12]
+ ldrb r0, [r4, #0x1c]
+ cmp r0, #1
+ bne _02243FBA
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02243FBA:
+ ldrb r1, [r4, #0x12]
+ ldrb r0, [r4, #0x1b]
+ cmp r1, r0
+ blo _02243FF6
+ ldr r0, [r4]
+ mov r1, #1
+ add r0, #0x34
+ bl FUN_0200D0E0
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0, #0x30]
+ bl FUN_0201AC68
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02243FDE:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02243FF6:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_02243FF8
+MOD12_02243FF8: ; 0x02243FF8
+ push {r3, lr}
+ mov r1, #0x9a
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0224400C
+MOD12_0224400C: ; 0x0224400C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #0xe7
+ add r6, r1, #0
+ lsl r0, r0, #2
+ add r5, r2, #0
+ add r2, r6, r0
+ mov r1, #0x4d
+_0224401C:
+ ldrh r0, [r3]
+ add r3, r3, #2
+ strh r0, [r2]
+ add r2, r2, #2
+ sub r1, r1, #1
+ bne _0224401C
+ mov r0, #0x18
+ mov r1, #0x14
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x14
+ bl MI_CpuFill8
+ str r6, [r4]
+ ldrh r0, [r5]
+ mov r2, #0xfa
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ lsl r2, r2, #2
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, _0224405C ; =MOD12_02244060
+ str r7, [r4, #0xc]
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224405C: .word MOD12_02244060
+
+ thumb_func_start MOD12_02244060
+MOD12_02244060: ; 0x02244060
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #6
+ bls _02244070
+ b _0224419A
+_02244070:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0224407C: ; jump table
+ .short _0224408A - _0224407C - 2 ; case 0
+ .short _0224409E - _0224407C - 2 ; case 1
+ .short _022440B2 - _0224407C - 2 ; case 2
+ .short _022440DC - _0224407C - 2 ; case 3
+ .short _022440EE - _0224407C - 2 ; case 4
+ .short _0224415A - _0224407C - 2 ; case 5
+ .short _02244182 - _0224407C - 2 ; case 6
+_0224408A:
+ ldr r1, [r4]
+ ldr r0, _022441B8 ; =0x00000848
+ ldr r0, [r1, r0]
+ bl MOD12_022318DC
+ ldrb r0, [r4, #0x10]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_0224409E:
+ bl MOD12_022318F8
+ cmp r0, #1
+ beq _022440A8
+ b _022441B2
+_022440A8:
+ ldrb r0, [r4, #0x10]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_022440B2:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, _022441BC ; =0x0000046F
+ mov r1, #0x1e
+ bl FUN_02005350
+ ldrb r0, [r4, #0x10]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_022440DC:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _022441B2
+ ldrb r0, [r4, #0x10]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_022440EE:
+ ldr r0, [r4]
+ bl MOD12_02242788
+ ldr r0, [r4]
+ bl MOD12_022427DC
+ ldr r0, [r4]
+ bl MOD12_02242804
+ ldr r0, [r4]
+ bl MOD12_02242A1C
+ ldr r0, [r4]
+ bl MOD12_022429E0
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, #0x34
+ mov r2, #1
+ mov r3, #0xe
+ bl FUN_0200D0BC
+ ldr r0, [r4]
+ mov r1, #0xff
+ add r0, #0x34
+ bl FUN_02019620
+ ldr r0, [r4]
+ add r0, #0x34
+ bl FUN_020191D0
+ mov r6, #0
+ add r5, r6, #0
+ mov r7, #6
+_02244132:
+ ldr r0, [r4]
+ add r1, r7, #0
+ add r0, r0, r5
+ ldr r0, [r0, #0x18]
+ mov r2, #1
+ bl FUN_02007558
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _02244132
+ ldr r1, [r4]
+ ldr r0, _022441C0 ; =0x0000127F
+ mov r2, #1
+ strb r2, [r1, r0]
+ ldrb r0, [r4, #0x10]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_0224415A:
+ bl FUN_02005404
+ cmp r0, #0
+ bne _022441B2
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #0x10]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_02244182:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _022441B2
+ ldr r0, _022441C4 ; =0x0000049D
+ bl FUN_0200521C
+ ldrb r0, [r4, #0x10]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_0224419A:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_022441B2:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022441B8: .word 0x00000848
+_022441BC: .word 0x0000046F
+_022441C0: .word 0x0000127F
+_022441C4: .word 0x0000049D
+
+ thumb_func_start MOD12_022441C8
+MOD12_022441C8: ; 0x022441C8
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022441DC
+MOD12_022441DC: ; 0x022441DC
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #0x18
+ str r1, [sp]
+ add r1, r0, #0
+ add r6, r2, #0
+ add r5, r3, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x18
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ mov r2, #0
+ str r0, [r4]
+ ldrh r0, [r6]
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ str r7, [r4, #0xc]
+_02244210:
+ add r0, r5, r2
+ ldrb r1, [r0, #3]
+ add r0, r4, r2
+ add r2, r2, #1
+ strb r1, [r0, #0x11]
+ cmp r2, #4
+ blt _02244210
+ ldr r0, _0224422C ; =MOD12_02244234
+ ldr r2, _02244230 ; =0x00007530
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0224422C: .word MOD12_02244234
+_02244230: .word 0x00007530
+
+ thumb_func_start MOD12_02244234
+MOD12_02244234: ; 0x02244234
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #4
+ bhi _022442A6
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0224424C: ; jump table
+ .short _02244256 - _0224424C - 2 ; case 0
+ .short _0224425C - _0224424C - 2 ; case 1
+ .short _0224427A - _0224424C - 2 ; case 2
+ .short _02244294 - _0224424C - 2 ; case 3
+ .short _022442A6 - _0224424C - 2 ; case 4
+_02244256:
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0224425C:
+ ldrb r1, [r4, #0x15]
+ mov r0, #3
+ sub r2, r0, r1
+ add r1, r4, r2
+ ldrb r1, [r1, #0x11]
+ ldr r0, [r4]
+ bl MOD12_02242FD0
+ ldrb r0, [r4, #0x15]
+ add r0, r0, #1
+ strb r0, [r4, #0x15]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0224427A:
+ mov r0, #0x16
+ ldrsh r1, [r4, r0]
+ add r1, r1, #1
+ strh r1, [r4, #0x16]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x1e
+ ble _022442BE
+ mov r0, #0
+ strh r0, [r4, #0x16]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_02244294:
+ ldrb r1, [r4, #0x15]
+ cmp r1, #4
+ bhs _022442A0
+ mov r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_022442A0:
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_022442A6:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_022442BE:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD12_022442C0
+MOD12_022442C0: ; 0x022442C0
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022442D4
+MOD12_022442D4: ; 0x022442D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x18
+ add r7, r1, #0
+ add r1, r0, #0
+ add r5, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x18
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _02244318 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, [sp]
+ str r6, [r4, #0xc]
+ ldrb r0, [r0, #2]
+ strb r0, [r4, #0x11]
+ ldr r0, _0224431C ; =MOD12_02244320
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02244318: .word 0x00007530
+_0224431C: .word MOD12_02244320
+
+ thumb_func_start MOD12_02244320
+MOD12_02244320: ; 0x02244320
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #6
+ bhi _02244414
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0224433A: ; jump table
+ .short _02244348 - _0224433A - 2 ; case 0
+ .short _02244370 - _0224433A - 2 ; case 1
+ .short _0224437E - _0224433A - 2 ; case 2
+ .short _02244396 - _0224433A - 2 ; case 3
+ .short _022443A4 - _0224433A - 2 ; case 4
+ .short _022443E6 - _0224433A - 2 ; case 5
+ .short _022443F8 - _0224433A - 2 ; case 6
+_02244348:
+ ldr r0, [r4]
+ bl MOD12_02242CB0
+ add r2, r4, #0
+ ldr r0, [r4]
+ mov r1, #0
+ add r2, #0x12
+ bl MOD12_0224324C
+ ldr r0, _02244430 ; =0x0000049E
+ bl FUN_0200521C
+ ldr r0, _02244434 ; =0x000006E5
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x10]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, pc}
+_02244370:
+ ldrb r1, [r4, #0x12]
+ cmp r1, #1
+ bne _0224442C
+ add r0, r0, #1
+ add sp, #0xc
+ strb r0, [r4, #0x10]
+ pop {r4, r5, pc}
+_0224437E:
+ ldrb r1, [r4, #0x11]
+ add r3, r4, #0
+ ldr r0, [r4]
+ mov r2, #0
+ add r3, #0x13
+ bl MOD12_022433CC
+ ldrb r0, [r4, #0x10]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, pc}
+_02244396:
+ ldrb r1, [r4, #0x13]
+ cmp r1, #1
+ bne _0224442C
+ add r0, r0, #1
+ add sp, #0xc
+ strb r0, [r4, #0x10]
+ pop {r4, r5, pc}
+_022443A4:
+ ldr r0, [r4]
+ mov r2, #0
+ ldr r1, [r0, #0x10]
+ ldrb r0, [r4, #0x11]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #5
+ bl FUN_020671BC
+ add r2, r0, #0
+ mov r0, #0x7f
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ mov r3, #0x18
+ str r3, [sp, #8]
+ ldr r3, [r4]
+ lsl r2, r2, #0x10
+ ldr r5, [r3]
+ ldrb r3, [r4, #0x11]
+ add r0, #0xdd
+ lsr r2, r2, #0x10
+ lsl r3, r3, #2
+ add r3, r5, r3
+ ldr r0, [r3, r0]
+ add r3, r1, #0
+ bl FUN_02069FB0
+ ldrb r0, [r4, #0x10]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, pc}
+_022443E6:
+ bl FUN_02005670
+ cmp r0, #0
+ bne _0224442C
+ ldrb r0, [r4, #0x10]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, pc}
+_022443F8:
+ mov r0, #0x14
+ ldrsh r1, [r4, r0]
+ add r1, r1, #1
+ strh r1, [r4, #0x14]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x3c
+ ble _0224442C
+ mov r0, #0
+ strh r0, [r4, #0x14]
+ ldrb r0, [r4, #0x10]
+ add sp, #0xc
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r4, r5, pc}
+_02244414:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0224442C:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02244430: .word 0x0000049E
+_02244434: .word 0x000006E5
+
+ thumb_func_start MOD12_02244438
+MOD12_02244438: ; 0x02244438
+ push {r3, lr}
+ mov r1, #0x12
+ lsl r2, r2, #0x10
+ str r1, [sp]
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0224444C
+MOD12_0224444C: ; 0x0224444C
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ add r5, r1, #0
+ mov r0, #0x18
+ mov r1, #0x24
+ add r6, r2, #0
+ add r7, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x24
+ bl MI_CpuFill8
+ str r5, [r4]
+ ldrh r0, [r6]
+ strh r0, [r4, #4]
+ ldrh r0, [r6, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r6, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, [sp]
+ str r0, [r4, #0xc]
+ ldrb r0, [r7, #7]
+ strb r0, [r4, #0x11]
+ ldrb r0, [r7, #7]
+ cmp r0, #0
+ beq _02244492
+ cmp r0, #1
+ beq _022444A8
+ cmp r0, #2
+ beq _022444BE
+ b _022444D4
+_02244492:
+ ldr r0, _022444E4 ; =0x0000041E
+ mov r2, #0
+ add r3, r4, #0
+_02244498:
+ ldrsh r1, [r5, r0]
+ add r2, r2, #1
+ add r5, r5, #2
+ strh r1, [r3, #0x14]
+ add r3, r3, #2
+ cmp r2, #4
+ blt _02244498
+ b _022444D8
+_022444A8:
+ ldr r0, _022444E8 ; =0x00000426
+ mov r3, #0
+ add r2, r4, #0
+_022444AE:
+ ldrsh r1, [r5, r0]
+ add r3, r3, #1
+ add r5, r5, #2
+ strh r1, [r2, #0x14]
+ add r2, r2, #2
+ cmp r3, #4
+ blt _022444AE
+ b _022444D8
+_022444BE:
+ ldr r0, _022444EC ; =0x0000042E
+ mov r3, #0
+ add r2, r4, #0
+_022444C4:
+ ldrsh r1, [r5, r0]
+ add r3, r3, #1
+ add r5, r5, #2
+ strh r1, [r2, #0x14]
+ add r2, r2, #2
+ cmp r3, #4
+ blt _022444C4
+ b _022444D8
+_022444D4:
+ bl ErrorHandling
+_022444D8:
+ ldr r0, _022444F0 ; =MOD12_022444F8
+ ldr r2, _022444F4 ; =0x00007530
+ add r1, r4, #0
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022444E4: .word 0x0000041E
+_022444E8: .word 0x00000426
+_022444EC: .word 0x0000042E
+_022444F0: .word MOD12_022444F8
+_022444F4: .word 0x00007530
+
+ thumb_func_start MOD12_022444F8
+MOD12_022444F8: ; 0x022444F8
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #5
+ bhi _022445E8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02244510: ; jump table
+ .short _0224451C - _02244510 - 2 ; case 0
+ .short _0224452A - _02244510 - 2 ; case 1
+ .short _02244544 - _02244510 - 2 ; case 2
+ .short _02244566 - _02244510 - 2 ; case 3
+ .short _022445BC - _02244510 - 2 ; case 4
+ .short _022445E8 - _02244510 - 2 ; case 5
+_0224451C:
+ ldr r0, _02244604 ; =0x000006FA
+ bl FUN_020054C8
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+_0224452A:
+ mov r0, #0x12
+ ldrsh r1, [r4, r0]
+ add r1, r1, #1
+ strh r1, [r4, #0x12]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x2d
+ ble _02244600
+ mov r0, #0
+ strh r0, [r4, #0x12]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+_02244544:
+ mov r2, #0
+ add r3, r4, #0
+ mov r0, #0x14
+_0224454A:
+ ldrsh r1, [r3, r0]
+ cmp r1, #0
+ ble _02244558
+ ldr r0, _02244608 ; =0x000006FB
+ bl FUN_020054C8
+ b _02244560
+_02244558:
+ add r2, r2, #1
+ add r3, r3, #2
+ cmp r2, #4
+ blt _0224454A
+_02244560:
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+_02244566:
+ mov r0, #0x12
+ ldrsh r1, [r4, r0]
+ add r1, r1, #1
+ strh r1, [r4, #0x12]
+ ldrsh r0, [r4, r0]
+ cmp r0, #1
+ blt _02244600
+ mov r6, #0
+ strh r6, [r4, #0x12]
+ add r5, r6, #0
+ mov r7, #0x14
+_0224457C:
+ ldr r0, [r4]
+ mov r2, #0x1c
+ add r1, r0, r5
+ mov r0, #0xf3
+ lsl r0, r0, #2
+ ldrb r1, [r1, r0]
+ lsl r0, r1, #1
+ add r0, r4, r0
+ ldrsh r2, [r0, r2]
+ add r2, r2, #1
+ strh r2, [r0, #0x1c]
+ mov r2, #0x1c
+ ldrsh r3, [r0, r2]
+ ldrsh r0, [r0, r7]
+ cmp r3, r0
+ bgt _022445A8
+ str r5, [sp]
+ ldrb r2, [r4, #0x11]
+ ldr r0, [r4]
+ bl MOD12_022430A8
+ b _022445AA
+_022445A8:
+ add r6, r6, #1
+_022445AA:
+ add r5, r5, #1
+ cmp r5, #4
+ blt _0224457C
+ cmp r6, #4
+ blt _02244600
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+_022445BC:
+ mov r3, #0
+ add r2, r4, #0
+ mov r0, #0x14
+_022445C2:
+ ldrsh r1, [r2, r0]
+ cmp r1, #0
+ ble _022445D0
+ ldr r0, _0224460C ; =0x000006F9
+ bl FUN_020054C8
+ b _022445D8
+_022445D0:
+ add r3, r3, #1
+ add r2, r2, #2
+ cmp r3, #4
+ blt _022445C2
+_022445D8:
+ ldr r0, _02244604 ; =0x000006FA
+ mov r1, #0
+ bl FUN_020054F0
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+_022445E8:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02244600:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02244604: .word 0x000006FA
+_02244608: .word 0x000006FB
+_0224460C: .word 0x000006F9
+
+ thumb_func_start MOD12_02244610
+MOD12_02244610: ; 0x02244610
+ push {r3, lr}
+ lsl r2, r2, #0x10
+ mov r3, #0
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ str r3, [sp]
+ bl MOD12_02240F3C
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02244624
+MOD12_02244624: ; 0x02244624
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #0x18
+ mov r1, #0x14
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x14
+ bl MI_CpuFill8
+ str r7, [r4]
+ ldrh r0, [r5]
+ ldr r2, _02244660 ; =0x00007530
+ add r1, r4, #0
+ strh r0, [r4, #4]
+ ldrh r0, [r5, #2]
+ strh r0, [r4, #6]
+ ldrh r0, [r5, #4]
+ strh r0, [r4, #8]
+ ldrh r0, [r5, #6]
+ strh r0, [r4, #0xa]
+ ldr r0, _02244664 ; =MOD12_02244668
+ str r6, [r4, #0xc]
+ bl FUN_0200CA44
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02244660: .word 0x00007530
+_02244664: .word MOD12_02244668
+
+ thumb_func_start MOD12_02244668
+MOD12_02244668: ; 0x02244668
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #0x10]
+ cmp r0, #0
+ beq _0224467E
+ cmp r0, #1
+ beq _0224469E
+ cmp r0, #2
+ beq _022446CE
+ b _022446E8
+_0224467E:
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #0x5a
+ mov r1, #0x10
+ mov r2, #0
+ mov r3, #0x3f
+ bl FUN_0200A208
+ ldr r0, _02244704 ; =0x0000049E
+ mov r1, #0x5a
+ bl FUN_02005350
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_0224469E:
+ mov r0, #3
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _02244700
+ bl FUN_02005404
+ cmp r0, #0
+ bne _02244700
+ ldr r0, [r4]
+ bl MOD12_02242CEC
+ ldr r0, _02244708 ; =0x0400006C
+ mov r1, #0x10
+ bl GXx_SetMasterBrightness_
+ ldr r0, _0224470C ; =0x0400106C
+ mov r1, #0x10
+ bl GXx_SetMasterBrightness_
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_022446CE:
+ mov r0, #0x12
+ ldrsh r1, [r4, r0]
+ add r1, r1, #1
+ strh r1, [r4, #0x12]
+ ldrsh r0, [r4, r0]
+ cmp r0, #0x3c
+ ble _02244700
+ mov r0, #0
+ strh r0, [r4, #0x12]
+ ldrb r0, [r4, #0x10]
+ add r0, r0, #1
+ strb r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_022446E8:
+ mov r2, #0
+ ldr r0, [r4, #0xc]
+ add r1, r4, #4
+ add r3, r2, #0
+ bl MOD12_02240FB0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_02244700:
+ pop {r3, r4, r5, pc}
+ nop
+_02244704: .word 0x0000049E
+_02244708: .word 0x0400006C
+_0224470C: .word 0x0400106C
+
+ thumb_func_start MOD12_02244710
+MOD12_02244710: ; 0x02244710
+ push {r3, r4, r5, r6, r7, lr}
+ mov r6, #0
+ add r5, r0, #0
+ add r7, r1, #0
+ add r4, r6, #0
+_0224471A:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02027A14
+ cmp r0, #1
+ bne _02244732
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02027BDC
+ ldrb r0, [r7, r0]
+ add r6, r6, r0
+_02244732:
+ add r4, r4, #1
+ cmp r4, #0x14
+ blt _0224471A
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD12_0224473C
+MOD12_0224473C: ; 0x0224473C
+ push {r3, lr}
+ add r3, r0, #0
+ mov r2, #0
+ mov r0, #0x5a
+ add r1, r1, #3
+ str r2, [sp]
+ bl FUN_02006C98
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02244750
+MOD12_02244750: ; 0x02244750
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ mov r0, #0x1b
+ str r0, [sp]
+ mov r0, #0x2c
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x28]
+ add r4, r1, #0
+ add r6, r3, #0
+ str r0, [sp, #0x14]
+ add r0, r2, #0
+ mov r1, #3
+ add r2, r5, #0
+ add r3, r4, #0
+ bl FUN_0200C0DC
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x1b
+ mov r3, #0xba
+ str r6, [sp, #8]
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, [sp, #0x2c]
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x1b
+ mov r3, #0xbb
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, [sp, #0x30]
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x1b
+ mov r3, #0xbc
+ bl FUN_0200C13C
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_022447C0
+MOD12_022447C0: ; 0x022447C0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl FUN_0200C358
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0200C368
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_0200C378
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0
+ bl FUN_0200C388
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_022447E8
+MOD12_022447E8: ; 0x022447E8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r5, r3, #0
+ mov ip, r2
+ ldr r3, _02244860 ; =0x022467DC
+ add r6, r0, #0
+ add r7, r1, #0
+ add r2, sp, #4
+ mov r4, #6
+_022447FA:
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ sub r4, r4, #1
+ bne _022447FA
+ ldr r0, [r3]
+ mov r1, #0x18
+ str r0, [r2]
+ ldr r0, [sp, #0x50]
+ str r5, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x54]
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x58]
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x5c]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x60]
+ str r0, [sp, #0x30]
+ mov r0, ip
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x18
+ str r0, [sp]
+ bl MI_CpuFill8
+ ldr r5, [sp]
+ mov r4, #0
+_02244832:
+ add r0, r6, #0
+ add r1, r7, #0
+ add r2, sp, #4
+ bl FUN_0200C154
+ mov r1, #0
+ stmia r5!, {r0}
+ bl FUN_0200C644
+ add r4, r4, #1
+ cmp r4, #5
+ blt _02244832
+ ldr r0, _02244864 ; =MOD12_02244958
+ ldr r1, [sp]
+ ldr r2, _02244868 ; =0x00009C40
+ bl FUN_0200CA44
+ ldr r1, [sp]
+ str r0, [r1, #0x14]
+ add r0, r1, #0
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02244860: .word 0x022467DC
+_02244864: .word MOD12_02244958
+_02244868: .word 0x00009C40
+
+ thumb_func_start MOD12_0224486C
+MOD12_0224486C: ; 0x0224486C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02244874:
+ ldr r0, [r5]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _02244874
+ ldr r0, [r6, #0x14]
+ bl FUN_0200CAB4
+ add r0, r6, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_02244890
+MOD12_02244890: ; 0x02244890
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r4, [sp, #0x24]
+ add r6, r3, #0
+ ldr r0, [r5]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ add r3, r4, #0
+ bl FUN_0200C750
+ ldr r2, [sp, #0x10]
+ lsl r1, r6, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r5, #4]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ add r3, r4, #0
+ bl FUN_0200C750
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x18]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r5, #8]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ add r3, r4, #0
+ bl FUN_0200C750
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x20]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r5, #0xc]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ add r3, r4, #0
+ bl FUN_0200C750
+ ldr r0, [r5]
+ mov r1, #0
+ bl FUN_0200C5C0
+ ldr r0, [r5, #4]
+ mov r1, #1
+ bl FUN_0200C5C0
+ ldr r0, [r5, #8]
+ mov r1, #2
+ bl FUN_0200C5C0
+ ldr r0, [r5, #0xc]
+ mov r1, #3
+ bl FUN_0200C5C0
+ mov r4, #0
+ mov r6, #1
+_02244906:
+ ldr r0, [r5]
+ add r1, r6, #0
+ bl FUN_0200C644
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02244906
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD12_02244918
+MOD12_02244918: ; 0x02244918
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r2, #0
+ str r3, [sp]
+ ldr r2, [sp, #0x20]
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ str r4, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldr r2, [sp, #0x24]
+ str r2, [sp, #0x14]
+ add r2, r3, #0
+ add r3, r4, #0
+ bl MOD12_02244890
+ add sp, #0x18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_0224493C
+MOD12_0224493C: ; 0x0224493C
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_02244944:
+ ldr r0, [r5]
+ add r1, r6, #0
+ bl FUN_0200C644
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _02244944
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD12_02244958
+MOD12_02244958: ; 0x02244958
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ ldr r0, [r6]
+ bl FUN_0200C658
+ cmp r0, #0
+ beq _02244988
+ mov r4, #0
+ add r5, r6, #0
+_0224496A:
+ ldr r0, [r5]
+ bl FUN_0200C5A8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _0224496A
+ ldr r0, [r6, #0x10]
+ bl FUN_0200C658
+ cmp r0, #1
+ bne _02244988
+ ldr r0, [r6, #0x10]
+ bl FUN_0200C5A8
+_02244988:
+ pop {r4, r5, r6, pc}
+
+ .section .rodata
+ ; 0x0224498C
+ .incbin "baserom.nds", 0x1F71CC, 0x1E84
+
+ .section .sinit
+ .word MOD12_022312BC
diff --git a/arm9/modules/13/asm/module_13_arm1.s b/arm9/modules/13/asm/module_13_arm1.s
new file mode 100644
index 00000000..ffde9a27
--- /dev/null
+++ b/arm9/modules/13/asm/module_13_arm1.s
@@ -0,0 +1,6063 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD13_02211EA4
+MOD13_02211EA4: ; 0x02211EA4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ strh r1, [sp]
+ add r2, sp, #0
+ mov r1, #0xd
+ bl MOD13_022130E8
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start MOD13_02211EC8
+MOD13_02211EC8: ; 0x02211EC8
+ cmp r0, #1
+ blo _02211EDC
+ cmp r0, #0xf
+ movls r0, #1
+ bxls lr
+_02211EDC:
+ mov r0, #0
+ bx lr
+
+ arm_func_start MOD13_02211EE4
+MOD13_02211EE4: ; 0x02211EE4
+ cmp r1, r0
+ movls r1, r0
+ mov r0, r1
+ bx lr
+
+ arm_func_start MOD13_02211EF4
+MOD13_02211EF4: ; 0x02211EF4
+ ldr r1, _02211F6C ; =0x02240A40
+ mov r2, #1
+ mov r2, r2, lsl r0
+ ldr r1, [r1]
+ ands r1, r1, r2
+ bxeq lr
+ ldr r2, _02211F70 ; =0x02240AFC
+ ldr r1, _02211F74 ; =0x000005D4
+ ldr r2, [r2]
+ mla r3, r0, r1, r2
+ add r0, r3, #0x1000
+ ldrb r0, [r0, #0xd52]
+ cmp r0, #0
+ bxeq lr
+ add r0, r3, #0x1d00
+ ldrh r1, [r0, #0x4c]
+ cmp r1, #0
+ bxeq lr
+ ldrh r2, [r0, #0x48]
+ ldrh ip, [r0, #0x4a]
+ cmp ip, r2
+ bhi _02211F60
+ add r1, ip, #2
+ cmp r2, r1
+ addle r1, r2, #1
+ strleh r1, [r0, #0x48]
+ bxle lr
+_02211F60:
+ add r0, r3, #0x1d00
+ strh ip, [r0, #0x48]
+ bx lr
+ .align 2, 0
+_02211F6C: .word 0x02240A40
+_02211F70: .word 0x02240AFC
+_02211F74: .word 0x000005D4
+
+ arm_func_start MOD13_02211F78
+MOD13_02211F78: ; 0x02211F78
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0xc
+ add r1, sp, #0
+ mov r0, #0
+ mov r2, #0xa
+ bl MIi_CpuClear16
+ mov ip, #1
+ ldr r0, _022120FC ; =0x02240AFC
+ mov r4, ip
+ ldr r3, [r0]
+ mov r5, ip
+ mov r0, ip
+ mov r1, ip
+ mov r2, ip
+_02211FB0:
+ sub lr, ip, #1
+ add lr, r3, lr, lsl #2
+ add lr, lr, #0x1000
+ ldr lr, [lr, #0x4e8]
+ cmp lr, #0xb
+ addls pc, pc, lr, lsl #2
+ b _02212048
+_02211FCC: ; jump table
+ b _02212048 ; case 0
+ b _02212048 ; case 1
+ b _02211FFC ; case 2
+ b _02212048 ; case 3
+ b _0221201C ; case 4
+ b _0221200C ; case 5
+ b _02212048 ; case 6
+ b _02212048 ; case 7
+ b _0221202C ; case 8
+ b _02212048 ; case 9
+ b _02212048 ; case 10
+ b _0221203C ; case 11
+_02211FFC:
+ ldrh lr, [sp]
+ orr lr, lr, r2, lsl ip
+ strh lr, [sp]
+ b _02212048
+_0221200C:
+ ldrh lr, [sp, #2]
+ orr lr, lr, r1, lsl ip
+ strh lr, [sp, #2]
+ b _02212048
+_0221201C:
+ ldrh lr, [sp, #4]
+ orr lr, lr, r0, lsl ip
+ strh lr, [sp, #4]
+ b _02212048
+_0221202C:
+ ldrh lr, [sp, #6]
+ orr lr, lr, r5, lsl ip
+ strh lr, [sp, #6]
+ b _02212048
+_0221203C:
+ ldrh lr, [sp, #8]
+ orr lr, lr, r4, lsl ip
+ strh lr, [sp, #8]
+_02212048:
+ add ip, ip, #1
+ mov ip, ip, lsl #0x10
+ mov ip, ip, lsr #0x10
+ cmp ip, #0xf
+ bls _02211FB0
+ ldrh r1, [sp, #6]
+ cmp r1, #0
+ beq _02212074
+ mov r0, #5
+ bl MOD13_02212614
+ b _022120D4
+_02212074:
+ ldrh r1, [sp]
+ cmp r1, #0
+ beq _0221208C
+ mov r0, #1
+ bl MOD13_02212614
+ b _022120D4
+_0221208C:
+ ldrh r1, [sp, #8]
+ cmp r1, #0
+ beq _022120A4
+ mov r0, #6
+ bl MOD13_02212614
+ b _022120D4
+_022120A4:
+ ldrh r1, [sp, #4]
+ cmp r1, #0
+ beq _022120BC
+ mov r0, #2
+ bl MOD13_02212614
+ b _022120D4
+_022120BC:
+ ldrh r0, [sp, #2]
+ cmp r0, #0
+ beq _022120D0
+ bl MOD13_02212464
+ b _022120D4
+_022120D0:
+ bl MOD13_02212104
+_022120D4:
+ cmp r0, #0x15
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, lr}
+ bxne lr
+ ldr r1, _02212100 ; =0x0000FFFF
+ mov r0, #0
+ bl MOD13_02212614
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+ .align 2, 0
+_022120FC: .word 0x02240AFC
+_02212100: .word 0x0000FFFF
+
+ arm_func_start MOD13_02212104
+MOD13_02212104: ; 0x02212104
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0x1c
+ ldr r5, _022123B0 ; =0x02240AFC
+ ldr r0, [r5]
+ add r0, r0, #0x1000
+ ldrb r0, [r0, #0x524]
+ cmp r0, #0
+ addeq sp, sp, #0x1c
+ moveq r0, #0x15
+ ldmeqia sp!, {r4, r5, r6, r7, lr}
+ bxeq lr
+ ldr r4, _022123B4 ; =0x000005D4
+ mov r1, #0
+_02212138:
+ ldr r0, [r5]
+ add r3, r0, #0x1000
+ ldrb r0, [r3, #0x525]
+ add r0, r0, #1
+ mov r2, r0, lsr #0x1f
+ rsb r0, r2, r0, lsl #28
+ add r0, r2, r0, ror #28
+ strb r0, [r3, #0x525]
+ ldr r2, [r5]
+ add r0, r2, #0x1000
+ ldrb r0, [r0, #0x525]
+ mla r3, r0, r4, r2
+ add r2, r3, #0x1000
+ ldrb r2, [r2, #0xd52]
+ cmp r2, #0
+ beq _02212188
+ add r2, r3, #0x1d00
+ ldrh r2, [r2, #0x4c]
+ cmp r2, #0
+ bne _02212198
+_02212188:
+ add r1, r1, #1
+ and r1, r1, #0xff
+ cmp r1, #0x10
+ blo _02212138
+_02212198:
+ cmp r1, #0x10
+ addeq sp, sp, #0x1c
+ moveq r0, #0x15
+ ldmeqia sp!, {r4, r5, r6, r7, lr}
+ bxeq lr
+ bl MOD13_02211EF4
+ ldr r0, _022123B0 ; =0x02240AFC
+ ldr r1, _022123B4 ; =0x000005D4
+ ldr r6, [r0]
+ ldr r2, _022123B8 ; =0x00001D2C
+ add r0, r6, #0x1000
+ ldrb r0, [r0, #0x525]
+ ldr r3, _022123BC ; =0x00001788
+ add r4, r6, r2
+ mul r5, r0, r1
+ add r0, r6, r5
+ add r0, r0, #0x1d00
+ ldrh r2, [r0, #0x48]
+ add r3, r6, r3
+ add r0, sp, #8
+ add r1, r4, r5
+ add r3, r3, r5
+ bl MOD13_02213558
+ cmp r0, #0
+ addeq sp, sp, #0x1c
+ moveq r0, #0x15
+ ldmeqia sp!, {r4, r5, r6, r7, lr}
+ bxeq lr
+ ldr r0, _022123B0 ; =0x02240AFC
+ mov r2, #4
+ ldr r1, [r0]
+ strb r2, [sp]
+ add r2, r1, #0x1000
+ ldrb r4, [r2, #0x525]
+ ldr r3, _022123B4 ; =0x000005D4
+ add r0, sp, #0
+ strh r4, [sp, #2]
+ ldrb r4, [r2, #0x525]
+ mla r2, r4, r3, r1
+ add r2, r2, #0x1d00
+ ldrh r2, [r2, #0x48]
+ strh r2, [sp, #4]
+ bl MOD13_022171AC
+ ldr r1, _022123B0 ; =0x02240AFC
+ ldr r4, _022123B4 ; =0x000005D4
+ ldr r5, [r1]
+ ldrb r1, [sp, #0x14]
+ add r2, r5, #0x1000
+ ldrb r2, [r2, #0x525]
+ ldr r6, [sp, #0x10]
+ ldr r3, [sp, #0xc]
+ mla r5, r2, r4, r5
+ add r2, r5, r1, lsl #2
+ add r4, r5, #0x1000
+ add r2, r2, #0x1000
+ ldr r5, [r4, #0xd58]
+ ldr r2, [r2, #0xd2c]
+ ldr r1, [r5, r1, lsl #2]
+ sub r2, r6, r2
+ add r7, r2, r1
+ ldr r6, [r4, #0xd54]
+ mov r2, r0
+ mov r0, r6
+ mov r1, r7
+ bl MOD13_02216A68
+ cmp r0, #0
+ bne _02212378
+ ldr r1, _022123B0 ; =0x02240AFC
+ ldr r0, _022123C0 ; =0x00007CE0
+ ldr r1, [r1]
+ add r5, r1, r0
+ mov r0, r5
+ bl MOD13_02216D78
+ cmp r0, #0
+ bne _02212368
+ ldr r0, [r6]
+ cmp r0, #0
+ subne r0, r0, #1
+ strne r0, [r6]
+ bne _02212368
+ add lr, r6, #0x30
+ mov r4, #0
+ mov ip, r4
+ mov r3, lr
+_022122E8:
+ add r0, lr, ip, lsl #4
+ ldr r0, [r0, #0xc]
+ mov r2, ip, lsl #4
+ cmp r0, #2
+ bne _02212318
+ cmp r4, #0
+ beq _02212314
+ ldr r1, [r4]
+ ldr r0, [lr, r2]
+ cmp r1, r0
+ bls _02212318
+_02212314:
+ mov r4, r3
+_02212318:
+ add ip, ip, #1
+ cmp ip, #4
+ add r3, r3, #0x10
+ blt _022122E8
+ cmp r4, #0
+ bne _02212334
+ bl OS_Terminate
+_02212334:
+ mov r0, #2
+ str r0, [r6]
+ mov r0, #1
+ str r0, [r4, #0xc]
+ bic r0, r7, #0x1f
+ str r0, [r4]
+ str r4, [r5, #0x10]
+ ldr r1, _022123C4 ; =MOD13_022123C8
+ mov r0, r5
+ mov r2, #0
+ mov r3, #4
+ str r6, [r5, #0x14]
+ bl MOD13_02216BE8
+_02212368:
+ add sp, sp, #0x1c
+ mov r0, #0x15
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_02212378:
+ ldr r0, _022123B0 ; =0x02240AFC
+ ldr r4, [sp, #0xc]
+ ldr r2, [r0]
+ ldr r1, _022123B4 ; =0x000005D4
+ add r0, r2, #0x1000
+ ldrb r3, [r0, #0x525]
+ add r0, r4, #6
+ mla r1, r3, r1, r2
+ add r1, r1, #0x1d00
+ ldrh r1, [r1, #0x4c]
+ bl MOD13_022141E8
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+ .align 2, 0
+_022123B0: .word 0x02240AFC
+_022123B4: .word 0x000005D4
+_022123B8: .word 0x00001D2C
+_022123BC: .word 0x00001788
+_022123C0: .word 0x00007CE0
+_022123C4: .word MOD13_022123C8
+
+ arm_func_start MOD13_022123C8
+MOD13_022123C8: ; 0x022123C8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x4c
+ ldr r5, [r0, #0x14]
+ ldr r4, [r0, #0x10]
+ add r0, sp, #4
+ bl FS_InitFile
+ ldr r1, [r5, #0x14]
+ add r0, r5, #0x10
+ ldr r5, [r4]
+ bl FS_FindArchive
+ mvn r1, #0
+ str r1, [sp]
+ ldr r2, [r4, #4]
+ mov r1, r0
+ add r3, r5, r2
+ add r0, sp, #4
+ mov r2, r5
+ bl FS_OpenFileDirect
+ cmp r0, #0
+ beq _02212440
+ ldr r1, [r4, #8]
+ ldr r2, [r4, #4]
+ add r0, sp, #4
+ bl FS_ReadFile
+ ldr r1, [r4, #4]
+ cmp r1, r0
+ moveq r0, #2
+ streq r0, [r4, #0xc]
+ add r0, sp, #4
+ bl FS_CloseFile
+_02212440:
+ ldr r0, [r4, #0xc]
+ cmp r0, #2
+ movne r0, #0
+ strne r0, [r4]
+ movne r0, #2
+ strne r0, [r4, #0xc]
+ add sp, sp, #0x4c
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+
+ arm_func_start MOD13_02212464
+MOD13_02212464: ; 0x02212464
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x1c
+ mov r4, #0
+ add r0, sp, #6
+ mov r1, r4
+ mov r2, #0x10
+ mvn r5, #0
+ bl MI_CpuFill8
+ ldr r1, _02212604 ; =0x02240AFC
+ mov r0, #1
+ ldr r1, [r1]
+ add ip, sp, #6
+_02212494:
+ sub r3, r0, #1
+ add r2, r1, r3, lsl #2
+ add r2, r2, #0x1000
+ ldr r2, [r2, #0x4e8]
+ cmp r2, #5
+ bne _022124C4
+ add r2, r1, r3
+ add r2, r2, #0x1500
+ ldrsb r3, [r2, #0x26]
+ ldrb r2, [ip, r3]
+ add r2, r2, #1
+ strb r2, [ip, r3]
+_022124C4:
+ add r0, r0, #1
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ cmp r0, #0xf
+ bls _02212494
+ ldr r2, _02212608 ; =0x0223F780
+ mov r0, #0
+ ldrb r3, [r2]
+ add lr, sp, #6
+ ldr ip, _0221260C ; =0x000005D4
+_022124EC:
+ add r2, r3, #1
+ mov r3, r2, lsr #0x1f
+ rsb r2, r3, r2, lsl #28
+ add r2, r3, r2, ror #28
+ and r3, r2, #0xff
+ mla r2, r3, ip, r1
+ add r2, r2, #0x1000
+ ldrb r2, [r2, #0xd52]
+ cmp r2, #0
+ beq _02212528
+ ldrb r2, [lr, r3]
+ cmp r2, #0
+ movne r0, r3, lsl #0x18
+ movne r5, r0, asr #0x18
+ bne _02212538
+_02212528:
+ add r0, r0, #1
+ and r0, r0, #0xff
+ cmp r0, #0x10
+ blo _022124EC
+_02212538:
+ mvn r0, #0
+ cmp r5, r0
+ addeq sp, sp, #0x1c
+ moveq r0, #0x15
+ ldmeqia sp!, {r4, r5, lr}
+ bxeq lr
+ ldr r2, _02212608 ; =0x0223F780
+ mov r0, #1
+ strb r5, [r2]
+ mov r3, r0
+_02212560:
+ sub ip, r0, #1
+ add r2, r1, ip, lsl #2
+ add r2, r2, #0x1000
+ ldr r2, [r2, #0x4e8]
+ cmp r2, #5
+ bne _02212594
+ add r2, r1, ip
+ add r2, r2, #0x1500
+ ldrsb r2, [r2, #0x26]
+ cmp r5, r2
+ orreq r2, r4, r3, lsl r0
+ moveq r2, r2, lsl #0x10
+ moveq r4, r2, lsr #0x10
+_02212594:
+ add r0, r0, #1
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ cmp r0, #0xf
+ bls _02212560
+ mov r2, #3
+ add r0, sp, #0
+ strb r2, [sp]
+ strh r5, [sp, #2]
+ bl MOD13_022171AC
+ movs r1, r0
+ beq _022125E4
+ ldr r2, _02212604 ; =0x02240AFC
+ ldr r0, _02212610 ; =0x00001788
+ ldr r3, [r2]
+ ldr r2, _0221260C ; =0x000005D4
+ add r0, r3, r0
+ mla r0, r5, r2, r0
+ mov r2, #0xe4
+ bl MI_CpuCopy8
+_022125E4:
+ ldr r0, _02212604 ; =0x02240AFC
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0xea
+ bl MOD13_022141E8
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+ .align 2, 0
+_02212604: .word 0x02240AFC
+_02212608: .word 0x0223F780
+_0221260C: .word 0x000005D4
+_02212610: .word 0x00001788
+
+ arm_func_start MOD13_02212614
+MOD13_02212614: ; 0x02212614
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r2, _02212654 ; =0x02240AFC
+ mov r4, r1
+ ldr r1, [r2]
+ strb r0, [sp]
+ add r0, sp, #0
+ bl MOD13_022171AC
+ ldr r0, _02212654 ; =0x02240AFC
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #6
+ bl MOD13_022141E8
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+ .align 2, 0
+_02212654: .word 0x02240AFC
+
+ arm_func_start MOD13_02212658
+MOD13_02212658: ; 0x02212658
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r4, r0
+ mov r6, #0
+ ldr r2, _02212700 ; =0x02240AFC
+ mov r3, r6
+ ldr r1, _02212704 ; =0x000005D4
+_02212670:
+ ldr r0, [r2]
+ mla r5, r6, r1, r0
+ add r0, r5, #0x1000
+ ldrb r0, [r0, #0xd52]
+ cmp r0, #0
+ addne r0, r5, #0x1d00
+ strneh r3, [r0, #0x4a]
+ add r0, r6, #1
+ mov r0, r0, lsl #0x10
+ mov r6, r0, lsr #0x10
+ cmp r6, #0x10
+ blo _02212670
+ ldr r0, _02212708 ; =0x02240A40
+ mov r1, #0
+ str r1, [r0]
+ mov r6, #1
+ ldr r5, _0221270C ; =0x0000FFFF
+_022126B4:
+ mov r0, r4
+ mov r1, r6
+ bl WM_ReadMPData
+ cmp r0, #0
+ beq _022126E4
+ ldrh r1, [r0]
+ cmp r1, r5
+ beq _022126E4
+ cmp r1, #0
+ beq _022126E4
+ mov r1, r6
+ bl MOD13_02212710
+_022126E4:
+ add r0, r6, #1
+ mov r0, r0, lsl #0x10
+ mov r6, r0, lsr #0x10
+ cmp r6, #0xf
+ bls _022126B4
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+ .align 2, 0
+_02212700: .word 0x02240AFC
+_02212704: .word 0x000005D4
+_02212708: .word 0x02240A40
+_0221270C: .word 0x0000FFFF
+
+ arm_func_start MOD13_02212710
+MOD13_02212710: ; 0x02212710
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #0x38
+ movs r7, r1
+ addeq sp, sp, #0x38
+ ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
+ bxeq lr
+ cmp r7, #0xf
+ addhi sp, sp, #0x38
+ ldmhiia sp!, {r4, r5, r6, r7, r8, lr}
+ bxhi lr
+ add r1, sp, #0
+ mov r2, r7
+ add r0, r0, #0xa
+ bl MOD13_02217070
+ ldr r3, _02212C14 ; =0x02240AFC
+ ldrb r8, [sp]
+ ldr r2, [r3]
+ sub r4, r7, #1
+ add r1, r2, r4, lsl #2
+ add r1, r1, #0x1000
+ ldr r6, [r1, #0x4e8]
+ mov r5, r0
+ cmp r8, #0xb
+ addls pc, pc, r8, lsl #2
+ b _02212C08
+_02212774: ; jump table
+ b _02212C08 ; case 0
+ b _02212C08 ; case 1
+ b _02212C08 ; case 2
+ b _02212C08 ; case 3
+ b _02212C08 ; case 4
+ b _02212C08 ; case 5
+ b _02212C08 ; case 6
+ b _022127A4 ; case 7
+ b _02212A30 ; case 8
+ b _02212AEC ; case 9
+ b _02212B68 ; case 10
+ b _02212C08 ; case 11
+_022127A4:
+ cmp r6, #2
+ bne _02212848
+ cmp r5, #0
+ addeq sp, sp, #0x38
+ ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
+ bxeq lr
+ add r1, sp, #0x14
+ mov r2, #0x1d
+ bl MI_CpuCopy8
+ ldr r3, _02212C14 ; =0x02240AFC
+ mov r0, r4
+ ldr r1, [r3]
+ ldr r2, [sp, #0x14]
+ add r1, r1, r0, lsl #2
+ add r1, r1, #0x1000
+ str r2, [r1, #0x4a8]
+ ldr r1, [r3]
+ mov r2, #0x16
+ add r1, r1, r0, lsl #1
+ mul r8, r0, r2
+ ldrh ip, [sp, #0x2e]
+ add r1, r1, #0x1400
+ add r0, sp, #0x18
+ strh ip, [r1, #0x8a]
+ ldr r1, [r3]
+ add r1, r1, #0x1340
+ add r1, r1, r8
+ bl MI_CpuCopy8
+ ldr r0, _02212C14 ; =0x02240AFC
+ and r1, r7, #0xff
+ ldr r0, [r0]
+ and r2, r1, #0xf
+ add ip, r0, #0x1340
+ ldrb r3, [ip, r8]
+ mov r0, r7
+ mov r1, #0xa
+ bic r3, r3, #0xf0
+ orr r2, r3, r2, lsl #4
+ strb r2, [ip, r8]
+ add r2, sp, #0x18
+ bl MOD13_02213124
+_02212848:
+ cmp r6, #0xa
+ addne sp, sp, #0x38
+ ldmneia sp!, {r4, r5, r6, r7, r8, lr}
+ bxne lr
+ ldrb r8, [r5, #0x1c]
+ mov r2, #0
+ cmp r8, #0x10
+ bhs _022128A4
+ ldr r0, _02212C14 ; =0x02240AFC
+ ldr r1, _02212C18 ; =0x000005D4
+ ldr r0, [r0]
+ mla r6, r8, r1, r0
+ add r1, r6, #0x1000
+ ldrb r3, [r1, #0xd52]
+ cmp r3, #0
+ beq _022128A4
+ add r3, r0, r4, lsl #2
+ ldr r1, [r1, #0xd40]
+ add r3, r3, #0x1000
+ ldr r5, [r3, #0x4a8]
+ ldr r3, [r1, #0x14]
+ cmp r5, r3
+ beq _022128C0
+_022128A4:
+ ldr r0, _02212C14 ; =0x02240AFC
+ mov r1, #4
+ ldr r0, [r0]
+ add r0, r0, r4, lsl #1
+ add r0, r0, #0x1700
+ strh r1, [r0, #0x54]
+ b _02212924
+_022128C0:
+ add r3, r6, #0x1d00
+ ldrh r6, [r3, #0x4e]
+ mov ip, r2
+ mov r5, #1
+_022128D0:
+ mov r3, r5, lsl ip
+ ands r3, r3, r6
+ add r3, ip, #1
+ addne r2, r2, #1
+ and ip, r3, #0xff
+ andne r2, r2, #0xff
+ cmp ip, #0x10
+ blo _022128D0
+ ldrb r1, [r1, #0x18]
+ cmp r2, r1
+ blo _02212924
+ add r1, r0, r4, lsl #1
+ add r3, r1, #0x1700
+ mov r2, #0
+ mov r0, r7
+ mov r1, #0xb
+ strh r2, [r3, #0x54]
+ bl MOD13_02213124
+ add sp, sp, #0x38
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02212924:
+ ldr r3, _02212C14 ; =0x02240AFC
+ ldr r2, [r3]
+ add r0, r2, r4, lsl #1
+ add r4, r0, #0x1700
+ ldrh r0, [r4, #0x54]
+ cmp r0, #3
+ beq _02212954
+ cmp r0, #4
+ beq _02212A10
+ add sp, sp, #0x38
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02212954:
+ add r0, r2, #0x1500
+ mov r1, #1
+ ldrh r0, [r0, #0x36]
+ mov r6, r1, lsl r7
+ ands r0, r0, r6
+ addne sp, sp, #0x38
+ ldmneia sp!, {r4, r5, r6, r7, r8, lr}
+ bxne lr
+ add r0, r2, #0x1000
+ ldrb r2, [r0, #0x535]
+ ldr r1, _02212C18 ; =0x000005D4
+ sub r5, r7, #1
+ add r2, r2, #1
+ strb r2, [r0, #0x535]
+ ldr r0, [r3]
+ mul r4, r8, r1
+ add r1, r0, #0x1500
+ ldrh ip, [r1, #0x36]
+ mov r0, r7
+ mov r2, #0
+ orr r7, ip, r6
+ strh r7, [r1, #0x36]
+ ldr r7, [r3]
+ mov r1, #5
+ add r7, r7, r5
+ add r7, r7, #0x1000
+ strb r8, [r7, #0x526]
+ ldr r7, [r3]
+ add r7, r7, r4
+ add r7, r7, #0x1d00
+ ldrh r8, [r7, #0x4e]
+ orr r8, r8, r6
+ strh r8, [r7, #0x4e]
+ ldr r7, [r3]
+ add r4, r7, r4
+ add r4, r4, #0x1d00
+ ldrh r7, [r4, #0x50]
+ orr r6, r7, r6
+ strh r6, [r4, #0x50]
+ ldr r3, [r3]
+ add r3, r3, r5, lsl #1
+ add r3, r3, #0x1700
+ strh r2, [r3, #0x54]
+ bl MOD13_02213124
+ add sp, sp, #0x38
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02212A10:
+ mov r2, #0
+ mov r0, r7
+ mov r1, #4
+ strh r2, [r4, #0x54]
+ bl MOD13_02213124
+ add sp, sp, #0x38
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02212A30:
+ cmp r6, #5
+ bne _02212A54
+ mov r0, r7
+ mov r1, #0xe
+ mov r2, #0
+ bl MOD13_02213124
+ add sp, sp, #0x38
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02212A54:
+ cmp r6, #0xe
+ addne sp, sp, #0x38
+ ldmneia sp!, {r4, r5, r6, r7, r8, lr}
+ bxne lr
+ add r0, r2, r4, lsl #1
+ add r0, r0, #0x1700
+ ldrh r0, [r0, #0x54]
+ mov r5, r4, lsl #1
+ cmp r0, #2
+ addne sp, sp, #0x38
+ ldmneia sp!, {r4, r5, r6, r7, r8, lr}
+ bxne lr
+ add r0, r2, r4
+ add r0, r0, #0x1000
+ ldrb r1, [r0, #0x526]
+ ldr r0, _02212C18 ; =0x000005D4
+ mov r6, #1
+ mul r4, r1, r0
+ add r0, r2, r4
+ add r1, r0, #0x1d00
+ ldrh r8, [r1, #0x4c]
+ mov r2, #0
+ mov r0, r7
+ orr r6, r8, r6, lsl r7
+ strh r6, [r1, #0x4c]
+ ldr r6, [r3]
+ mov r1, #6
+ add r4, r6, r4
+ add r4, r4, #0x1d00
+ strh r2, [r4, #0x48]
+ ldr r3, [r3]
+ add r3, r3, r5
+ add r3, r3, #0x1700
+ strh r2, [r3, #0x54]
+ bl MOD13_02213124
+ add sp, sp, #0x38
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02212AEC:
+ cmp r6, #6
+ addne sp, sp, #0x38
+ ldmneia sp!, {r4, r5, r6, r7, r8, lr}
+ bxne lr
+ add r0, r2, r4
+ add r0, r0, #0x1000
+ ldrb r5, [r0, #0x526]
+ cmp r5, #0xff
+ addeq sp, sp, #0x38
+ ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
+ bxeq lr
+ ldr r0, _02212C18 ; =0x000005D4
+ ldrh r1, [sp, #2]
+ mul r4, r5, r0
+ add r0, r2, r4
+ add r0, r0, #0x1d00
+ ldrh r0, [r0, #0x4a]
+ bl MOD13_02211EE4
+ ldr r1, _02212C14 ; =0x02240AFC
+ ldr r2, _02212C1C ; =0x02240A40
+ ldr r1, [r1]
+ mov r3, #1
+ add r1, r1, r4
+ add r1, r1, #0x1d00
+ strh r0, [r1, #0x4a]
+ ldr r0, [r2]
+ add sp, sp, #0x38
+ orr r0, r0, r3, lsl r5
+ str r0, [r2]
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02212B68:
+ cmp r6, #6
+ bne _02212BC8
+ add r0, r2, r4
+ add r0, r0, #0x1000
+ ldrb r3, [r0, #0x526]
+ cmp r3, #0xff
+ addeq sp, sp, #0x38
+ ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
+ bxeq lr
+ ldr r0, _02212C18 ; =0x000005D4
+ mov r1, #1
+ mla r0, r3, r0, r2
+ add r3, r0, #0x1d00
+ ldrh r2, [r3, #0x4c]
+ mvn r0, r1, lsl r7
+ and r4, r2, r0
+ mov r0, r7
+ mov r1, #7
+ mov r2, #0
+ strh r4, [r3, #0x4c]
+ bl MOD13_02213124
+ add sp, sp, #0x38
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02212BC8:
+ cmp r6, #7
+ addne sp, sp, #0x38
+ ldmneia sp!, {r4, r5, r6, r7, r8, lr}
+ bxne lr
+ add r0, r2, r4, lsl #1
+ add r3, r0, #0x1700
+ ldrh r0, [r3, #0x54]
+ cmp r0, #5
+ addne sp, sp, #0x38
+ ldmneia sp!, {r4, r5, r6, r7, r8, lr}
+ bxne lr
+ mov r2, #0
+ mov r0, r7
+ mov r1, #8
+ strh r2, [r3, #0x54]
+ bl MOD13_02213124
+_02212C08:
+ add sp, sp, #0x38
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+ .align 2, 0
+_02212C14: .word 0x02240AFC
+_02212C18: .word 0x000005D4
+_02212C1C: .word 0x02240A40
+
+ arm_func_start MOD13_02212C20
+MOD13_02212C20: ; 0x02212C20
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ mov r6, r0
+ mov r4, r1
+ cmp r6, #0x19
+ bgt _02212C84
+ cmp r6, #0x19
+ bge _02212ECC
+ cmp r6, #0x11
+ bgt _02212C78
+ cmp r6, #0x11
+ bge _02213084
+ cmp r6, #3
+ bgt _02213084
+ cmp r6, #0
+ blt _02213084
+ cmp r6, #0
+ beq _02212CC0
+ cmp r6, #1
+ beq _02212CE4
+ cmp r6, #3
+ beq _02212EC0
+ b _02213084
+_02212C78:
+ cmp r6, #0x15
+ beq _02212CAC
+ b _02213084
+_02212C84:
+ cmp r6, #0xff
+ bgt _02212CA0
+ cmp r6, #0xff
+ bge _02212F70
+ cmp r6, #0x1c
+ beq _02212ED4
+ b _02213084
+_02212CA0:
+ cmp r6, #0x100
+ beq _02212FE0
+ b _02213084
+_02212CAC:
+ mov r2, r4
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02213124
+ b _02213084
+_02212CC0:
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0
+ beq _02213084
+ cmp r0, #0x10
+ bhs _02213084
+ mov r2, r4
+ mov r1, #2
+ bl MOD13_02213124
+ b _02213084
+_02212CE4:
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0
+ beq _02213084
+ cmp r0, #0x10
+ bhs _02213084
+ ldr r2, _022130D8 ; =0x02240AFC
+ sub r0, r0, #1
+ ldr r3, [r2]
+ mov r1, #0
+ add r0, r3, r0, lsl #1
+ add r0, r0, #0x1400
+ strh r1, [r0, #0x8a]
+ ldrh r3, [r4, #0x10]
+ ldr r5, [r2]
+ ldr r0, _022130DC ; =0x000014A8
+ sub r2, r3, #1
+ add r0, r5, r0
+ add r0, r0, r2, lsl #2
+ mov r2, #4
+ bl MI_CpuFill8
+ ldr r0, _022130D8 ; =0x02240AFC
+ ldrh r1, [r4, #0x10]
+ ldr r0, [r0]
+ mov r2, #0x16
+ add r0, r0, #0x1340
+ sub r1, r1, #1
+ mla r0, r1, r2, r0
+ mov r1, #0
+ bl MI_CpuFill8
+ ldrh r0, [r4, #0x10]
+ bl MOD13_02217234
+ ldrh r1, [r4, #0x10]
+ ldr r0, _022130D8 ; =0x02240AFC
+ mov r3, #0
+ ldr r2, [r0]
+ sub r1, r1, #1
+ add r1, r2, r1, lsl #1
+ add r1, r1, #0x1700
+ strh r3, [r1, #0x54]
+ ldrh r8, [r4, #0x10]
+ ldr r5, [r0]
+ mvn r1, #0
+ sub r7, r8, #1
+ add r2, r5, r7
+ add r2, r2, #0x1500
+ ldrsb r3, [r2, #0x26]
+ cmp r3, r1
+ beq _02212E0C
+ ldr r2, _022130E0 ; =0x000005D4
+ and r3, r3, #0xff
+ mul r2, r3, r2
+ add r3, r5, r2
+ add sb, r3, #0x1d00
+ mov r5, #1
+ ldrh sl, [sb, #0x4e]
+ mvn r3, r5, lsl r8
+ and sl, sl, r3
+ strh sl, [sb, #0x4e]
+ ldr sb, [r0]
+ add sb, sb, r2
+ add sb, sb, #0x1d00
+ ldrh sl, [sb, #0x50]
+ orr r5, sl, r5, lsl r8
+ strh r5, [sb, #0x50]
+ ldr r5, [r0]
+ add r5, r5, r7
+ add r5, r5, #0x1000
+ strb r1, [r5, #0x526]
+ ldr r0, [r0]
+ add r0, r0, r2
+ add r0, r0, #0x1d00
+ ldrh r1, [r0, #0x4c]
+ and r1, r1, r3
+ strh r1, [r0, #0x4c]
+_02212E0C:
+ ldr r1, _022130D8 ; =0x02240AFC
+ ldrh r2, [r4, #0x10]
+ ldr r7, [r1]
+ mov r3, #1
+ add r0, r7, #0x1500
+ ldrh r5, [r0, #0x36]
+ mov r0, r3, lsl r2
+ ands r0, r5, r0
+ beq _02212E5C
+ add r0, r7, #0x1000
+ ldrb r2, [r0, #0x535]
+ sub r2, r2, #1
+ strb r2, [r0, #0x535]
+ ldr r0, [r1]
+ ldrh r1, [r4, #0x10]
+ add r0, r0, #0x1500
+ ldrh r2, [r0, #0x36]
+ mvn r1, r3, lsl r1
+ and r1, r2, r1
+ strh r1, [r0, #0x36]
+_02212E5C:
+ ldrh r0, [r4, #0x10]
+ ldr r1, _022130D8 ; =0x02240AFC
+ ldr r2, [r1]
+ sub r1, r0, #1
+ add r1, r2, r1, lsl #2
+ add r1, r1, #0x1000
+ ldr r1, [r1, #0x4e8]
+ cmp r1, #8
+ bne _02212E8C
+ mov r1, #9
+ mov r2, #0
+ bl MOD13_02213124
+_02212E8C:
+ ldrh r0, [r4, #0x10]
+ mov r2, r4
+ mov r1, #3
+ bl MOD13_02213124
+ ldrh r1, [r4, #0x10]
+ ldr r0, _022130D8 ; =0x02240AFC
+ mov r3, #0
+ ldr r2, [r0]
+ sub r0, r1, #1
+ add r0, r2, r0, lsl #2
+ add r0, r0, #0x1000
+ str r3, [r0, #0x4e8]
+ b _02213084
+_02212EC0:
+ mov r0, r4
+ bl MOD13_02212658
+ b _02213084
+_02212ECC:
+ bl MOD13_02211F78
+ b _02213084
+_02212ED4:
+ mov r5, #0
+ ldr sb, _022130D8 ; =0x02240AFC
+ ldr r7, _022130E4 ; =0x0000186C
+ ldr r8, _022130E0 ; =0x000005D4
+ mov sl, r5
+_02212EE8:
+ mul r4, r5, r8
+ ldr r1, [sb]
+ add r2, r1, r4
+ add r0, r2, #0x1000
+ ldrb r0, [r0, #0xd52]
+ cmp r0, #0
+ beq _02212F38
+ add r0, r2, #0x1d00
+ ldrh r3, [r0, #0x50]
+ cmp r3, #0
+ beq _02212F38
+ ldrh r2, [r0, #0x4e]
+ add r0, r1, r7
+ add r0, r0, r4
+ add r1, r1, #0x1340
+ bl MOD13_022148D4
+ ldr r0, [sb]
+ add r0, r0, r4
+ add r0, r0, #0x1d00
+ strh sl, [r0, #0x50]
+_02212F38:
+ add r0, r5, #1
+ and r5, r0, #0xff
+ cmp r5, #0x10
+ blo _02212EE8
+ bl MOD13_02214BF4
+ mov r5, r0
+ bl MOD13_02214BE0
+ mov r4, r0
+ bl MOD13_02214B80
+ mov r2, r0
+ mov r0, r5
+ mov r1, r4
+ bl MOD13_02214768
+ b _02213084
+_02212F70:
+ ldrh r0, [r4, #2]
+ cmp r0, #0xf
+ addls pc, pc, r0, lsl #2
+ b _02212FD0
+_02212F80: ; jump table
+ b _02212FD0 ; case 0
+ b _02212FC0 ; case 1
+ b _02212FD0 ; case 2
+ b _02212FD0 ; case 3
+ b _02212FC0 ; case 4
+ b _02212FC0 ; case 5
+ b _02212FC0 ; case 6
+ b _02212FD0 ; case 7
+ b _02212FC0 ; case 8
+ b _02212FC0 ; case 9
+ b _02212FD0 ; case 10
+ b _02212FD0 ; case 11
+ b _02212FD0 ; case 12
+ b _02212FD0 ; case 13
+ b _02212FD0 ; case 14
+ b _02212FD0 ; case 15
+_02212FC0:
+ mov r0, #0
+ mov r1, #9
+ bl MOD13_02211EA4
+ b _02213084
+_02212FD0:
+ mov r0, #0
+ mov r1, #8
+ bl MOD13_02211EA4
+ b _02213084
+_02212FE0:
+ ldrh r0, [r4]
+ cmp r0, #0x1d
+ addls pc, pc, r0, lsl #2
+ b _02213078
+_02212FF0: ; jump table
+ b _02213068 ; case 0
+ b _02213078 ; case 1
+ b _02213078 ; case 2
+ b _02213078 ; case 3
+ b _02213078 ; case 4
+ b _02213078 ; case 5
+ b _02213078 ; case 6
+ b _02213068 ; case 7
+ b _02213068 ; case 8
+ b _02213078 ; case 9
+ b _02213078 ; case 10
+ b _02213078 ; case 11
+ b _02213078 ; case 12
+ b _02213068 ; case 13
+ b _02213068 ; case 14
+ b _02213068 ; case 15
+ b _02213078 ; case 16
+ b _02213068 ; case 17
+ b _02213068 ; case 18
+ b _02213078 ; case 19
+ b _02213078 ; case 20
+ b _02213068 ; case 21
+ b _02213078 ; case 22
+ b _02213078 ; case 23
+ b _02213078 ; case 24
+ b _02213068 ; case 25
+ b _02213078 ; case 26
+ b _02213078 ; case 27
+ b _02213078 ; case 28
+ b _02213068 ; case 29
+_02213068:
+ mov r0, #0
+ mov r1, #9
+ bl MOD13_02211EA4
+ b _02213084
+_02213078:
+ mov r0, #0
+ mov r1, #8
+ bl MOD13_02211EA4
+_02213084:
+ cmp r6, #0x11
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ bxne lr
+ ldr r1, _022130D8 ; =0x02240AFC
+ mov r0, #0
+ ldr r1, [r1]
+ mov r2, #0x7d00
+ add r3, r1, #0x1000
+ ldr r4, [r3, #0x4e4]
+ bl MIi_CpuClearFast
+ ldr r1, _022130D8 ; =0x02240AFC
+ mov r0, #0
+ str r0, [r1]
+ cmp r4, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ bxeq lr
+ mov r2, r0
+ mov r1, #0xc
+ blx r4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ bx lr
+ .align 2, 0
+_022130D8: .word 0x02240AFC
+_022130DC: .word 0x000014A8
+_022130E0: .word 0x000005D4
+_022130E4: .word 0x0000186C
+
+ arm_func_start MOD13_022130E8
+MOD13_022130E8: ; 0x022130E8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r3, _02213120 ; =0x02240AFC
+ ldr r3, [r3]
+ add r3, r3, #0x1000
+ ldr r3, [r3, #0x4e4]
+ cmp r3, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ blx r3
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+ .align 2, 0
+_02213120: .word 0x02240AFC
+
+ arm_func_start MOD13_02213124
+MOD13_02213124: ; 0x02213124
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl MOD13_02211EC8
+ cmp r0, #0
+ beq _02213158
+ ldr r0, _02213170 ; =0x02240AFC
+ sub r1, r6, #1
+ ldr r0, [r0]
+ add r0, r0, r1, lsl #2
+ add r0, r0, #0x1000
+ str r5, [r0, #0x4e8]
+_02213158:
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl MOD13_022130E8
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+ .align 2, 0
+_02213170: .word 0x02240AFC
+
+ arm_func_start MOD13_02213174
+MOD13_02213174: ; 0x02213174
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r5, r1
+ mov r7, r0
+ bl OS_DisableInterrupts
+ mov r4, r0
+ cmp r5, #3
+ addls pc, pc, r5, lsl #2
+ b _022131D8
+_02213198: ; jump table
+ b _022131A8 ; case 0
+ b _022131B4 ; case 1
+ b _022131C0 ; case 2
+ b _022131CC ; case 3
+_022131A8:
+ mov r5, #0xa
+ mov r6, #4
+ b _022131F0
+_022131B4:
+ mov r5, #0xa
+ mov r6, #3
+ b _022131F0
+_022131C0:
+ mov r5, #0xe
+ mov r6, #2
+ b _022131F0
+_022131CC:
+ mov r5, #7
+ mov r6, #5
+ b _022131F0
+_022131D8:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_022131F0:
+ ldr r0, _0221326C ; =0x02240AFC
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02213254
+ mov r0, r7
+ bl MOD13_02211EC8
+ cmp r0, #0
+ beq _02213254
+ ldr r0, _0221326C ; =0x02240AFC
+ sub r2, r7, #1
+ ldr r1, [r0]
+ add r0, r1, r2, lsl #2
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x4e8]
+ cmp r5, r0
+ bne _02213254
+ add r0, r1, r2, lsl #1
+ add r1, r0, #0x1700
+ mov r0, r4
+ strh r6, [r1, #0x54]
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_02213254:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+ .align 2, 0
+_0221326C: .word 0x02240AFC
+
+ arm_func_start MOD13_02213270
+MOD13_02213270: ; 0x02213270
+ stmdb sp!, {r4, lr}
+ ldr r1, _022132C8 ; =0x02240AFC
+ mov r4, r0
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _022132BC
+ bl MOD13_02211EC8
+ cmp r0, #0
+ beq _022132BC
+ ldr r0, _022132C8 ; =0x02240AFC
+ sub r1, r4, #1
+ ldr r0, [r0]
+ add r0, r0, r1, lsl #2
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x4e8]
+ cmp r0, #7
+ moveq r0, #1
+ ldmeqia sp!, {r4, lr}
+ bxeq lr
+_022132BC:
+ mov r0, #0
+ ldmia sp!, {r4, lr}
+ bx lr
+ .align 2, 0
+_022132C8: .word 0x02240AFC
+
+ arm_func_start MOD13_022132CC
+MOD13_022132CC: ; 0x022132CC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ ldr r1, _02213360 ; =0x02240AFC
+ mov r4, r0
+ ldr r0, [r1]
+ cmp r0, #0
+ beq _02213348
+ mov r0, r5
+ bl MOD13_02211EC8
+ cmp r0, #0
+ beq _02213348
+ ldr r0, _02213360 ; =0x02240AFC
+ sub r3, r5, #1
+ ldr ip, [r0]
+ ldr r1, _02213364 ; =0x00001772
+ add r0, ip, #0x1340
+ mov r2, #0x16
+ mla r0, r3, r2, r0
+ add r1, ip, r1
+ bl MI_CpuCopy8
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldr r1, _02213360 ; =0x02240AFC
+ ldr r0, _02213364 ; =0x00001772
+ ldr r1, [r1]
+ add sp, sp, #4
+ add r0, r1, r0
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_02213348:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+ .align 2, 0
+_02213360: .word 0x02240AFC
+_02213364: .word 0x00001772
+
+ arm_func_start MOD13_02213368
+MOD13_02213368: ; 0x02213368
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl OS_DisableInterrupts
+ ldr r1, _02213390 ; =0x02240AFC
+ ldr r1, [r1]
+ add r1, r1, #0x1000
+ str r4, [r1, #0x4e4]
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4, lr}
+ bx lr
+ .align 2, 0
+_02213390: .word 0x02240AFC
+
+ arm_func_start MOD13_02213394
+MOD13_02213394: ; 0x02213394
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r3, _02213498 ; =0x0223C420
+ ldr r3, [r3, r0, lsl #2]
+ cmp r3, #0
+ beq _022133BC
+ cmp r3, #1
+ beq _022133CC
+ cmp r3, #2
+ bne _02213478
+_022133BC:
+ bl MOD13_022134A8
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_022133CC:
+ cmp r1, #0x2000000
+ blo _02213444
+ ldr r0, _0221349C ; =0x023FE800
+ cmp r1, r0
+ bhs _02213444
+ cmp r1, #0x2300000
+ add r1, r1, r2
+ bhs _02213400
+ cmp r1, #0x2300000
+ addhi sp, sp, #4
+ movhi r0, #0
+ ldmhiia sp!, {lr}
+ bxhi lr
+_02213400:
+ cmp r1, #0x2300000
+ addls sp, sp, #4
+ movls r0, #1
+ ldmlsia sp!, {lr}
+ bxls lr
+ ldr r0, _0221349C ; =0x023FE800
+ cmp r1, r0
+ bhs _02213434
+ cmp r2, #0x40000
+ addls sp, sp, #4
+ movls r0, #1
+ ldmlsia sp!, {lr}
+ bxls lr
+_02213434:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {lr}
+ bx lr
+_02213444:
+ ldr r0, _022134A0 ; =0x037F8000
+ cmp r1, r0
+ blo _02213488
+ ldr r0, _022134A4 ; =0x0380F000
+ cmp r1, r0
+ bhs _02213488
+ add r1, r1, r2
+ cmp r1, r0
+ movls r0, #1
+ add sp, sp, #4
+ movhi r0, #0
+ ldmia sp!, {lr}
+ bx lr
+_02213478:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {lr}
+ bx lr
+_02213488:
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+ .align 2, 0
+_02213498: .word 0x0223C420
+_0221349C: .word 0x023FE800
+_022134A0: .word 0x037F8000
+_022134A4: .word 0x0380F000
+
+ arm_func_start MOD13_022134A8
+MOD13_022134A8: ; 0x022134A8
+ ldr r3, _0221354C ; =0x0223C420
+ ldr r0, [r3, r0, lsl #2]
+ cmp r0, #0
+ beq _022134EC
+ cmp r0, #1
+ beq _02213508
+ cmp r0, #2
+ bne _0221353C
+ ldr r0, _02213550 ; =0x027FFE00
+ cmp r1, r0
+ blo _02213544
+ ldr r0, _02213554 ; =0x027FFF60
+ add r1, r1, r2
+ cmp r1, r0
+ bhi _02213544
+ mov r0, #1
+ bx lr
+_022134EC:
+ cmp r1, #0x2000000
+ blo _02213544
+ add r0, r1, r2
+ cmp r0, #0x22c0000
+ bhi _02213544
+ mov r0, #1
+ bx lr
+_02213508:
+ cmp r1, #0x22c0000
+ blo _02213520
+ add r0, r1, r2
+ cmp r0, #0x2300000
+ movls r0, #1
+ bxls lr
+_02213520:
+ cmp r1, #0x2000000
+ blo _02213544
+ add r0, r1, r2
+ cmp r0, #0x2300000
+ bhi _02213544
+ mov r0, #1
+ bx lr
+_0221353C:
+ mov r0, #0
+ bx lr
+_02213544:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0221354C: .word 0x0223C420
+_02213550: .word 0x027FFE00
+_02213554: .word 0x027FFF60
+
+ arm_func_start MOD13_02213558
+MOD13_02213558: ; 0x02213558
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldrh r4, [r1, #0x12]
+ cmp r2, r4
+ addhs sp, sp, #4
+ movhs r0, #0
+ ldmhsia sp!, {r4, r5, lr}
+ bxhs lr
+ mov ip, #2
+_0221357C:
+ add r4, r1, ip, lsl #1
+ ldrh r4, [r4, #0xc]
+ cmp r2, r4
+ bhs _0221359C
+ sub r4, ip, #1
+ mov ip, r4, lsl #0x18
+ movs ip, ip, asr #0x18
+ bpl _0221357C
+_0221359C:
+ cmp ip, #0
+ addlt sp, sp, #4
+ movlt r0, #0
+ ldmltia sp!, {r4, r5, lr}
+ bxlt lr
+ ldr r4, _02213628 ; =0x02240AFC
+ add r5, r1, ip, lsl #1
+ ldr lr, [r4]
+ ldrh r5, [r5, #0xc]
+ add lr, lr, #0x1000
+ ldr lr, [lr, #0x318]
+ sub r5, r2, r5
+ mul r2, r5, lr
+ add r3, r3, #0xc
+ add r5, r3, ip, lsl #4
+ ldr r3, [r5, #8]
+ sub r3, r3, r2
+ str r3, [r0, #4]
+ ldr r3, [r4]
+ ldr r4, [r0, #4]
+ add r3, r3, #0x1000
+ ldr r3, [r3, #0x318]
+ cmp r4, r3
+ strhi r3, [r0, #4]
+ ldr r1, [r1, ip, lsl #2]
+ add r1, r2, r1
+ str r1, [r0, #8]
+ ldr r1, [r5]
+ add r1, r2, r1
+ str r1, [r0]
+ strb ip, [r0, #0xc]
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+ .align 2, 0
+_02213628: .word 0x02240AFC
+
+ arm_func_start MOD13_0221362C
+MOD13_0221362C: ; 0x0221362C
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ mov r5, r0
+ add r4, r5, #0xc
+ cmp r1, #0
+ mov r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ bxeq lr
+ mov r2, r0
+_0221364C:
+ str r0, [r5, r2, lsl #2]
+ add r3, r1, r2, lsl #4
+ add r2, r2, #1
+ ldr r3, [r3, #0x14]
+ and r2, r2, #0xff
+ cmp r2, #3
+ add r0, r0, r3
+ blo _0221364C
+ mov r8, #0
+ strh r8, [r4]
+ ldr r6, _02213704 ; =0x02240AFC
+ add r7, r1, #0xc
+_0221367C:
+ ldr r0, [r6]
+ add sl, r7, r8, lsl #4
+ add r0, r0, #0x1000
+ ldr r1, [r0, #0x318]
+ ldr sb, [sl, #8]
+ add r0, sb, r1
+ sub r0, r0, #1
+ bl _u32_div_f
+ mov r1, r8, lsl #1
+ ldrh r3, [r4, r1]
+ mov r2, r0, lsl #0x10
+ ldr r1, [sl, #4]
+ add r2, r3, r2, lsr #16
+ mov r3, r2, lsl #0x10
+ mov r2, sb
+ mov r0, r8
+ mov sb, r3, lsr #0x10
+ bl MOD13_02213394
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ bxeq lr
+ cmp r8, #2
+ addlo r0, r8, #1
+ movlo r0, r0, lsl #1
+ strloh sb, [r4, r0]
+ add r0, r8, #1
+ and r8, r0, #0xff
+ strhsh sb, [r5, #0x12]
+ cmp r8, #3
+ blo _0221367C
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ bx lr
+ .align 2, 0
+_02213704: .word 0x02240AFC
+
+ arm_func_start MOD13_02213708
+MOD13_02213708: ; 0x02213708
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r1, [r1]
+ mov r7, r2
+ mov r6, r3
+ cmp r1, #0
+ beq _02213740
+ cmp r1, #1
+ beq _022137A4
+ cmp r1, #2
+ beq _02213880
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_02213740:
+ ldr r2, [r0, #0x28]
+ add r3, r0, #0x28
+ cmp r2, #0x2000000
+ blo _02213794
+ cmp r2, #0x22c0000
+ bhs _02213794
+ ldr r1, [r3, #4]
+ add r0, r2, r1
+ cmp r0, #0x22c0000
+ bhi _02213794
+ str r1, [r7, #8]
+ ldr r0, [r3]
+ add sp, sp, #4
+ str r0, [r7, #4]
+ ldr r0, [r7, #4]
+ str r0, [r7]
+ ldr r0, [r7, #0xc]
+ bic r0, r0, #1
+ str r0, [r7, #0xc]
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_02213794:
+ bl OS_Terminate
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_022137A4:
+ add r4, r0, #0x38
+ ldr r2, [r0, #0x38]
+ ldr r1, [r4, #4]
+ mov ip, #0
+ mov r5, ip
+ cmp r2, #0x2000000
+ add r3, r2, r1
+ blo _022137F4
+ ldr r0, _022138B0 ; =0x023FE800
+ cmp r2, r0
+ bhs _022137F4
+ cmp r3, #0x2300000
+ bls _02213820
+ cmp r3, r0
+ bhs _022137EC
+ cmp r1, #0x40000
+ movls r5, #1
+ bls _02213820
+_022137EC:
+ mov ip, #1
+ b _02213820
+_022137F4:
+ ldr r0, _022138B4 ; =0x037F8000
+ cmp r2, r0
+ blo _0221381C
+ ldr r0, _022138B8 ; =0x0380F000
+ cmp r2, r0
+ bhs _0221381C
+ cmp r3, r0
+ movls r5, #1
+ movhi ip, #1
+ b _02213820
+_0221381C:
+ mov ip, #1
+_02213820:
+ cmp ip, #1
+ bne _0221382C
+ bl OS_Terminate
+_0221382C:
+ ldr r0, [r4, #4]
+ cmp r5, #0
+ str r0, [r7, #8]
+ ldr r0, [r4]
+ str r0, [r7, #4]
+ ldreq r0, [r7, #4]
+ streq r0, [r7]
+ beq _02213864
+ ldr r0, [r6]
+ str r0, [r7]
+ ldr r1, [r6]
+ ldr r0, [r7, #8]
+ add r0, r1, r0
+ str r0, [r6]
+_02213864:
+ ldr r0, [r7, #0xc]
+ add sp, sp, #4
+ bic r0, r0, #1
+ orr r0, r0, #1
+ str r0, [r7, #0xc]
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_02213880:
+ mov r1, #0x160
+ ldr r0, _022138BC ; =0x027FFE00
+ str r1, [r7, #8]
+ str r0, [r7, #4]
+ ldr r0, [r7, #4]
+ str r0, [r7]
+ ldr r0, [r7, #0xc]
+ bic r0, r0, #1
+ str r0, [r7, #0xc]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+ .align 2, 0
+_022138B0: .word 0x023FE800
+_022138B4: .word 0x037F8000
+_022138B8: .word 0x0380F000
+_022138BC: .word 0x027FFE00
+
+ arm_func_start MOD13_022138C0
+MOD13_022138C0: ; 0x022138C0
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ sub sp, sp, #8
+ mov r2, #0x22c0000
+ mov r5, r1
+ str r2, [sp]
+ mov r6, r0
+ ldr r0, [r5, #0x24]
+ ldr r4, _02213940 ; =0x0223C420
+ str r0, [r6]
+ ldr r0, [r5, #0x34]
+ add r8, r5, #0x160
+ str r0, [r6, #4]
+ add sl, r6, #0xc
+ mov sb, #0
+ add r7, sp, #0
+_022138FC:
+ mov r0, r5
+ mov r1, r4
+ mov r2, sl
+ mov r3, r7
+ bl MOD13_02213708
+ add sb, sb, #1
+ cmp sb, #3
+ add sl, sl, #0x10
+ add r4, r4, #4
+ blt _022138FC
+ mov r0, r8
+ add r1, r6, #0x3c
+ mov r2, #0x88
+ bl MI_CpuCopy8
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ bx lr
+ .align 2, 0
+_02213940: .word 0x0223C420
+
+ arm_func_start MOD13_02213944
+MOD13_02213944: ; 0x02213944
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ mov sb, r0
+ mov r8, r1
+ mov r6, #0xff
+ bl OS_DisableInterrupts
+ mov r5, r0
+ bl MOD13_02214B60
+ cmp r0, #0
+ bne _02213984
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
+ bx lr
+_02213984:
+ ldr r0, _02213BFC ; =0x02240AFC
+ ldr r0, [r0]
+ add r1, r0, #0x1000
+ ldrb r1, [r1, #0x524]
+ add r1, r1, #1
+ cmp r1, #0x10
+ ble _022139B8
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
+ bx lr
+_022139B8:
+ ldr r1, _02213C00 ; =0x000005D4
+ mov r4, #0
+_022139C0:
+ mla r2, r4, r1, r0
+ add r2, r2, #0x1000
+ ldr r3, [r2, #0xd40]
+ cmp r3, sb
+ bne _022139EC
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
+ bx lr
+_022139EC:
+ ldrb r2, [r2, #0xd52]
+ cmp r2, #0
+ moveq r6, r4
+ beq _02213A0C
+ add r2, r4, #1
+ and r4, r2, #0xff
+ cmp r4, #0x10
+ blo _022139C0
+_02213A0C:
+ cmp r4, #0x10
+ bne _02213A2C
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
+ bx lr
+_02213A2C:
+ ldr r1, _02213C00 ; =0x000005D4
+ ldr r2, _02213BFC ; =0x02240AFC
+ mul r4, r6, r1
+ add r0, r0, r4
+ add r0, r0, #0x1000
+ str sb, [r0, #0xd40]
+ ldr r2, [r2]
+ ldr r0, _02213C04 ; =0x00001788
+ mov r1, r8
+ add r0, r2, r0
+ add r7, r0, r4
+ mov r0, r7
+ bl MOD13_022138C0
+ add r0, sb, #0x1c
+ add r1, r7, #0xc4
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ ldr r1, _02213BFC ; =0x02240AFC
+ ldr r0, _02213C08 ; =0x00001D2C
+ ldr r2, [r1]
+ mov r1, r7
+ add r0, r2, r0
+ add r0, r0, r4
+ bl MOD13_0221362C
+ cmp r0, #0
+ bne _02213AAC
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
+ bx lr
+_02213AAC:
+ ldr r1, _02213BFC ; =0x02240AFC
+ ldr r0, _02213C0C ; =0x0000186C
+ ldr r2, [r1]
+ mov r1, sb
+ add r0, r2, r0
+ add r0, r0, r4
+ add r2, r2, #0x1300
+ bl MOD13_02214A0C
+ ldr r2, _02213BFC ; =0x02240AFC
+ ldr r1, _02213C0C ; =0x0000186C
+ ldr r0, [r2]
+ add r0, r0, r4
+ add r0, r0, #0x1000
+ strb r6, [r0, #0xd21]
+ ldr r0, [r2]
+ add r0, r0, r1
+ add r0, r0, r4
+ bl MOD13_02214868
+ ldr r0, _02213C10 ; =0x02240A44
+ ldr r1, _02213BFC ; =0x02240AFC
+ ldrb r7, [r0]
+ ldr r3, [r1]
+ mov r2, #1
+ add r6, r7, #1
+ add r3, r3, r4
+ strb r6, [r0]
+ add r0, r3, #0x1000
+ strb r7, [r0, #0xd1f]
+ ldr r0, [r1]
+ add r3, r8, #0x1e8
+ add r0, r0, r4
+ add r0, r0, #0x1d00
+ strh r2, [r0, #0x4e]
+ ldr r0, [r1]
+ add r2, r8, #0x258
+ add r0, r0, r4
+ add r0, r0, #0x1000
+ str r8, [r0, #0xd44]
+ ldr r0, [r1]
+ add r0, r0, r4
+ add r0, r0, #0x1000
+ str r3, [r0, #0xd54]
+ ldr r0, [r1]
+ add r0, r0, r4
+ add r0, r0, #0x1000
+ str r2, [r0, #0xd58]
+ ldr r0, [r1]
+ add r0, r0, r4
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0xd54]
+ ldr r0, [r0, #0x6c]
+ cmp r0, #0
+ beq _02213BB8
+ bl MOD13_02216DA4
+ cmp r0, #0
+ bne _02213BB8
+ ldr r1, _02213BFC ; =0x02240AFC
+ ldr r0, _02213C14 ; =0x00007CE0
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl MOD13_02216D90
+ ldr r1, _02213BFC ; =0x02240AFC
+ ldr r0, _02213C18 ; =0x000074E0
+ ldr r2, [r1]
+ mov r1, #0x800
+ add r0, r2, r0
+ bl MOD13_02216DC0
+_02213BB8:
+ ldr r2, _02213BFC ; =0x02240AFC
+ mov r3, #1
+ ldr r1, [r2]
+ mov r0, r5
+ add r1, r1, r4
+ add r1, r1, #0x1000
+ strb r3, [r1, #0xd52]
+ ldr r1, [r2]
+ add r1, r1, #0x1000
+ ldrb r2, [r1, #0x524]
+ add r2, r2, #1
+ strb r2, [r1, #0x524]
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
+ bx lr
+ .align 2, 0
+_02213BFC: .word 0x02240AFC
+_02213C00: .word 0x000005D4
+_02213C04: .word 0x00001788
+_02213C08: .word 0x00001D2C
+_02213C0C: .word 0x0000186C
+_02213C10: .word 0x02240A44
+_02213C14: .word 0x00007CE0
+_02213C18: .word 0x000074E0
+
+ arm_func_start MOD13_02213C1C
+MOD13_02213C1C: ; 0x02213C1C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov lr, r1
+ ldr ip, [r0]
+ ldr r1, [r0, #0xc]
+ cmp lr, #0x4000
+ movlo lr, #0x4000
+ cmp r2, #0x8000
+ movhi r2, #0x8000
+ cmp lr, ip
+ add r1, ip, r1
+ movlo lr, ip
+ cmp r2, r1
+ movhi r2, r1
+ cmp lr, r2
+ addhs sp, sp, #4
+ ldmhsia sp!, {lr}
+ bxhs lr
+ cmp r3, #0
+ beq _02213C8C
+ ldr r0, [r0, #8]
+ sub r2, r2, lr
+ add r0, r0, lr
+ mov r1, #0
+ bl MI_CpuFill8
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+_02213C8C:
+ ldr r3, [r0, #4]
+ ldr r1, [r0, #8]
+ add r0, r3, lr
+ add r1, r1, lr
+ sub r2, r2, lr
+ bl MI_CpuCopy8
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+
+ arm_func_start MOD13_02213CB0
+MOD13_02213CB0: ; 0x02213CB0
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x6c
+ str r2, [sp, #4]
+ cmp r2, #0x164
+ mov r2, #0
+ mov sl, r0
+ mov sb, r1
+ str r2, [sp, #8]
+ blo _022140F4
+ ldr r8, [sp, #4]
+ mov r7, sb
+ str r2, [sp, #0xc]
+ mov r6, r2
+ mov r5, r2
+ cmp sl, #0
+ add r7, r7, #0x160
+ sub r8, r8, #0x160
+ beq _02213D24
+ ldr r4, [sl, #0x2c]
+ ldr r3, [sl, #0x24]
+ mov r2, #0x160
+ sub fp, r4, r3
+ bl FS_ReadFile
+ cmp r0, #0x160
+ ldr r4, [sb, #0x80]
+ movlt r8, r5
+ cmp r4, #0
+ moveq r4, #0x1000000
+ b _02213D9C
+_02213D24:
+ ldr r0, _02214104 ; =0x027FFE00
+ mov r1, #1
+ ldr r4, [r0, #0x80]
+ add r0, sp, #0x20
+ cmp r4, #0
+ moveq r4, #0x1000000
+ str r1, [sp, #0xc]
+ bl FS_InitFile
+ ldr r0, _02214108 ; =0x0223F788
+ mov r1, #3
+ bl FS_FindArchive
+ mov r1, r0
+ mvn r0, #0
+ str r0, [sp]
+ add r0, sp, #0x20
+ mov r2, #0
+ add r3, r4, #0x88
+ bl FS_OpenFileDirect
+ ldr r2, [sp, #0x4c]
+ ldr r1, [sp, #0x44]
+ ldr r0, _02214104 ; =0x027FFE00
+ sub fp, r2, r1
+ mov r1, sb
+ mov r2, #0x160
+ add sl, sp, #0x20
+ bl MI_CpuCopy8
+ ldr r1, [sb, #0x60]
+ ldr r0, _0221410C ; =0x00406000
+ orr r0, r1, r0
+ str r0, [sb, #0x60]
+_02213D9C:
+ cmp r8, #0x88
+ movlo r8, #0
+ blo _02213DD0
+ mov r0, sl
+ add r1, fp, r4
+ mov r2, #0
+ bl FS_SeekFile
+ mov r0, sl
+ mov r1, r7
+ mov r2, #0x88
+ bl FS_ReadFile
+ add r7, r7, #0x88
+ sub r8, r8, #0x88
+_02213DD0:
+ cmp r8, #0x70
+ blo _02213E40
+ mov r0, r7
+ mov r6, r7
+ bl MOD13_02216B80
+ add r7, r7, #0x70
+ sub r8, r8, #0x70
+ mov r0, #3
+ str r0, [sp]
+ mov r0, r6
+ mov r1, #0
+ mov r2, #0x160
+ mov r3, sb
+ bl MOD13_02216B0C
+ ldr r0, [sl, #8]
+ mov r4, #0
+ b _02213E18
+_02213E14:
+ add r4, r4, #1
+_02213E18:
+ cmp r4, #3
+ bge _02213E2C
+ ldrsb r1, [r0, r4]
+ cmp r1, #0
+ bne _02213E14
+_02213E2C:
+ mov r2, r4
+ add r1, r6, #0x10
+ bl MI_CpuCopy8
+ str r4, [r6, #0x14]
+ b _02213E44
+_02213E40:
+ mov r8, #0
+_02213E44:
+ cmp r8, #0x10
+ movlo r8, #0
+ blo _02213E8C
+ mov r0, #0
+ str r0, [r7]
+ ldr r0, [sl, #0x24]
+ ldr r1, [sb, #0x20]
+ add r0, fp, r0
+ add r0, r1, r0
+ str r0, [r7, #4]
+ ldr r0, [sl, #0x24]
+ ldr r1, [sb, #0x30]
+ add r0, fp, r0
+ add r0, r1, r0
+ mov r5, r7
+ str r0, [r7, #8]
+ add r7, r7, #0x10
+ sub r8, r8, #0x10
+_02213E8C:
+ ldr r1, [sb, #0x2c]
+ ldr r0, [sb, #0x3c]
+ add r0, r1, r0
+ cmp r8, r0
+ blo _02213F38
+ ldr r4, [sl, #0x24]
+ ldr r1, [r5, #4]
+ mov r0, sl
+ sub r1, r1, r4
+ mov r2, #0
+ bl FS_SeekFile
+ ldr r2, [sb, #0x2c]
+ mov r0, sl
+ mov r1, r7
+ bl FS_ReadFile
+ mov r0, #3
+ str r0, [sp]
+ ldr r1, [r5, #4]
+ ldr r2, [sb, #0x2c]
+ mov r0, r6
+ mov r3, r7
+ bl MOD13_02216B0C
+ ldr r1, [sb, #0x2c]
+ mov r0, sl
+ add r7, r7, r1
+ ldr r1, [r5, #8]
+ mov r2, #0
+ sub r1, r1, r4
+ bl FS_SeekFile
+ ldr r2, [sb, #0x3c]
+ mov r0, sl
+ mov r1, r7
+ bl FS_ReadFile
+ mov r0, #3
+ str r0, [sp]
+ ldr r1, [r5, #8]
+ ldr r2, [sb, #0x3c]
+ mov r3, r7
+ mov r0, r6
+ bl MOD13_02216B0C
+ mov r0, #1
+ str r0, [sp, #8]
+ b _0221400C
+_02213F38:
+ cmp r8, #0xcc00
+ blo _0221400C
+ ldr r4, [sl, #0x24]
+ ldr r5, [r5, #4]
+ mov r0, sl
+ sub r1, r5, r4
+ mov r2, #0
+ bl FS_SeekFile
+ mov r0, sl
+ mov r1, r7
+ mov r2, #0x4400
+ bl FS_ReadFile
+ mov r0, #3
+ str r0, [sp]
+ mov r0, r6
+ mov r1, r5
+ mov r2, #0x4400
+ mov r3, r7
+ bl MOD13_02216B0C
+ add r1, r5, #0x4400
+ mov r0, sl
+ sub r1, r1, r4
+ mov r2, #0
+ bl FS_SeekFile
+ mov r0, sl
+ add r1, r7, #0x4400
+ mov r2, #0x4400
+ bl FS_ReadFile
+ mov r0, #2
+ str r0, [sp]
+ mov r0, r6
+ add r1, r5, #0x4400
+ mov r2, #0x4400
+ add r3, r7, #0x4400
+ bl MOD13_02216B0C
+ add r1, r5, #0x8800
+ mov r0, sl
+ sub r1, r1, r4
+ mov r2, #0
+ bl FS_SeekFile
+ mov r0, sl
+ add r1, r7, #0x8800
+ mov r2, #0x4400
+ bl FS_ReadFile
+ mov r0, #2
+ str r0, [sp]
+ add r1, r5, #0x8800
+ add r3, r7, #0x8800
+ mov r0, r6
+ mov r2, #0x4400
+ bl MOD13_02216B0C
+ mov r0, #1
+ str r0, [sp, #8]
+_0221400C:
+ mov r0, sl
+ mov r1, fp
+ mov r2, #0
+ bl FS_SeekFile
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ beq _022140DC
+ add r0, sp, #0x20
+ bl FS_CloseFile
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ beq _022140DC
+ ldr r1, [sb, #0x20]
+ ldr r0, _02214110 ; =0x0223F784
+ str r1, [sp, #0x10]
+ ldr r2, [sb, #0x28]
+ ldr r1, [sb, #0x20]
+ ldr r4, [r0]
+ sub r0, r2, r1
+ str r0, [sp, #0x14]
+ ldr r2, [r6, #0x48]
+ ldr r1, [sb, #0x20]
+ add r0, sp, #0x10
+ sub r1, r2, r1
+ str r1, [sp, #0x18]
+ ldr r1, [sp, #4]
+ mov r2, #0x8000
+ str r1, [sp, #0x1c]
+ mov r1, #0x4000
+ mov r3, #1
+ bl MOD13_02213C1C
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _022140C4
+ add r7, sp, #0x10
+ mov r5, #0
+_0221409C:
+ ldr r1, [r4]
+ ldr r2, [r4, #4]
+ mov r0, r7
+ mov r3, r5
+ add r2, r1, r2
+ bl MOD13_02213C1C
+ add r4, r4, #8
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _0221409C
+_022140C4:
+ ldr r1, [sb, #0x28]
+ ldr r2, _02214114 ; =0x02000A74
+ ldr r3, [r6, #0x48]
+ ldr r0, _02214118 ; =0xE12FFF1E
+ sub r1, r2, r1
+ str r0, [r3, r1]
+_022140DC:
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ beq _022140F4
+ ldr r1, [sp, #4]
+ mov r0, sb
+ bl DC_FlushRange
+_022140F4:
+ ldr r0, [sp, #8]
+ add sp, sp, #0x6c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ bx lr
+ .align 2, 0
+_02214104: .word 0x027FFE00
+_02214108: .word 0x0223F788
+_0221410C: .word 0x00406000
+_02214110: .word 0x0223F784
+_02214114: .word 0x02000A74
+_02214118: .word 0xE12FFF1E
+
+ arm_func_start MOD13_0221411C
+MOD13_0221411C: ; 0x0221411C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0x64
+ mov r6, #0
+ movs r7, r0
+ mov r5, r6
+ beq _02214168
+ ldr ip, [r7, #0x2c]
+ ldr r3, [r7, #0x24]
+ add r1, sp, #0
+ mov r2, #0x60
+ sub r4, ip, r3
+ bl FS_ReadFile
+ cmp r0, #0x60
+ mov r0, r7
+ mov r1, r4
+ mov r2, #0
+ addhs r6, sp, #0
+ bl FS_SeekFile
+ b _0221416C
+_02214168:
+ ldr r6, _0221419C ; =0x027FFE00
+_0221416C:
+ cmp r6, #0
+ beq _0221418C
+ ldr r1, [r6, #0x2c]
+ ldr r0, [r6, #0x3c]
+ add r1, r1, #0x268
+ add r5, r1, r0
+ cmp r5, #0x10000
+ movlo r5, #0x10000
+_0221418C:
+ mov r0, r5
+ add sp, sp, #0x64
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+ .align 2, 0
+_0221419C: .word 0x027FFE00
+
+ arm_func_start MOD13_022141A0
+MOD13_022141A0: ; 0x022141A0
+ mov r2, r1, asr #1
+ cmp r2, #0
+ mov r3, #0
+ ble _022141C4
+_022141B0:
+ ldrh r1, [r0], #2
+ sub r2, r2, #1
+ cmp r2, #0
+ add r3, r3, r1
+ bgt _022141B0
+_022141C4:
+ ldr r0, _022141E4 ; =0x0000FFFF
+ and r1, r3, r0
+ add r1, r1, r3, lsr #16
+ add r1, r1, r1, lsr #16
+ eor r0, r1, r0
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ bx lr
+ .align 2, 0
+_022141E4: .word 0x0000FFFF
+
+ arm_func_start MOD13_022141E8
+MOD13_022141E8: ; 0x022141E8
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r4, r2
+ add r2, r6, #0x1f
+ mov r5, r1
+ mov r0, r4
+ bic r1, r2, #0x1f
+ bl DC_FlushRange
+ bl DC_WaitWriteBufferEmpty
+ mov r0, r4
+ mov r1, r6
+ mov r2, r5
+ bl MOD13_02214C08
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+
+ arm_func_start MOD13_02214224
+MOD13_02214224: ; 0x02214224
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x14
+ ldr r3, _022144AC ; =0x02240A50
+ str r0, [sp, #8]
+ ldr r0, [r3, #4]
+ ldrb r3, [r3, #0xe]
+ ldrb r0, [r0, #0x4b4]
+ str r1, [sp, #0xc]
+ str r2, [sp, #0x10]
+ cmp r3, r0
+ beq _02214254
+ bl MOD13_022144C8
+_02214254:
+ ldr r3, _022144B0 ; =0x02240A80
+ ldr r1, _022144AC ; =0x02240A50
+ ldrb r2, [r3, #4]
+ ldr r0, [r1, #4]
+ ldrb r5, [r1, #0x11]
+ bic r2, r2, #3
+ orr r2, r2, #2
+ strb r2, [r3, #4]
+ ldrb r4, [r0, #0x4b3]
+ ldrb r2, [r1, #0xe]
+ ldrb r7, [r3, #4]
+ strb r4, [r3, #5]
+ strb r2, [r3, #6]
+ ldr r4, [r0, #0x4b8]
+ ldr r2, _022144B4 ; =0x02240A48
+ str r4, [r3]
+ ldrb r6, [r0, #0x4b5]
+ add r4, r5, #1
+ bic r7, r7, #0xfc
+ and r6, r6, #0x3f
+ orr r6, r7, r6, lsl #2
+ strb r6, [r3, #4]
+ strb r4, [r1, #0x11]
+ strb r5, [r3, #7]
+ ldrb r4, [r0, #0x358]
+ add r1, r0, #0x300
+ ldr r2, [r2]
+ strb r4, [r3, #0xa]
+ ldrh r4, [r1, #0x5a]
+ cmp r2, #0
+ strh r4, [r3, #0xc]
+ ldrh r1, [r1, #0x5c]
+ strh r1, [r3, #0xe]
+ bne _022142F4
+ ldr r1, _022144B8 ; =0x02240A4C
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _022142F4
+ ldr r0, [r0, #0x4b8]
+ blx r1
+_022142F4:
+ ldr r0, _022144AC ; =0x02240A50
+ ldr r1, _022144B0 ; =0x02240A80
+ ldr r2, [r0, #4]
+ mov r3, #0
+_02214304:
+ ldrb r0, [r2, #0x4a8]
+ add r3, r3, #1
+ cmp r3, #8
+ strb r0, [r1, #0x68]
+ add r2, r2, #1
+ add r1, r1, #1
+ blt _02214304
+ ldr r1, _022144BC ; =0x02240A90
+ mov r0, #0
+ mov r2, #0x58
+ bl MIi_CpuClear16
+ ldr r0, _022144AC ; =0x02240A50
+ mov sl, #0
+ ldr r1, [r0, #4]
+ ldr sb, _022144BC ; =0x02240A90
+ add r0, r1, #0x400
+ add r1, r1, #0x300
+ ldrh r2, [r0, #0xb0]
+ ldrh r0, [r1, #0x5a]
+ mov r5, sl
+ mov r8, sl
+ eor r0, r2, r0
+ mov r0, r0, lsl #0x10
+ mov r7, r0, lsr #0x10
+ mov fp, #0x16
+ mov r4, #2
+_0221436C:
+ mov r6, r4, lsl r5
+ ands r0, r7, r6
+ beq _022143C0
+ ldr r0, _022144AC ; =0x02240A50
+ mov r1, sb
+ ldr r2, [r0, #4]
+ ldr r0, _022144C0 ; =0x0000035E
+ add r0, r2, r0
+ add r0, r0, r8
+ mov r2, fp
+ bl MIi_CpuCopy16
+ ldr r0, _022144AC ; =0x02240A50
+ add sl, sl, #1
+ ldr r0, [r0, #4]
+ add sb, sb, #0x16
+ add r0, r0, #0x400
+ ldrh r1, [r0, #0xb0]
+ cmp sl, #4
+ orr r1, r1, r6
+ strh r1, [r0, #0xb0]
+ beq _022143D0
+_022143C0:
+ add r5, r5, #1
+ cmp r5, #0xf
+ add r8, r8, #0x16
+ blt _0221436C
+_022143D0:
+ cmp sl, #4
+ bhs _022143F0
+ mov r0, #0x16
+ mul r1, sl, r0
+ ldr r2, _022144BC ; =0x02240A90
+ ldrb r0, [r2, r1]
+ bic r0, r0, #0xf0
+ strb r0, [r2, r1]
+_022143F0:
+ ldr r2, _022144B0 ; =0x02240A80
+ mov r3, #0
+ ldr r0, _022144C4 ; =0x02240A88
+ mov r1, #0x68
+ strh r3, [r2, #8]
+ bl MOD13_022141A0
+ ldr r2, _022144AC ; =0x02240A50
+ ldr r1, _022144B0 ; =0x02240A80
+ ldr r3, [r2, #4]
+ strh r0, [r1, #8]
+ add r0, r3, #0x400
+ add r1, r3, #0x300
+ ldrh r3, [r0, #0xb0]
+ ldrh r0, [r1, #0x5a]
+ ldr r1, _022144B0 ; =0x02240A80
+ cmp r3, r0
+ moveq r0, #1
+ streqb r0, [r2, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r3, [sp, #8]
+ orr r2, r0, #3
+ ldr r0, [sp, #0xc]
+ and r4, r2, #0xff
+ str r0, [sp]
+ mov r0, #0
+ mov r2, #0x70
+ str r4, [sp, #4]
+ bl WM_SetGameInfo
+ ldr r0, _022144B4 ; =0x02240A48
+ ldr r0, [r0]
+ cmp r0, #1
+ addne sp, sp, #0x14
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ bxne lr
+ ldr r0, _022144B8 ; =0x02240A4C
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #0x14
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ bxeq lr
+ ldr r0, _022144AC ; =0x02240A50
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x4b8]
+ blx r1
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ bx lr
+ .align 2, 0
+_022144AC: .word 0x02240A50
+_022144B0: .word 0x02240A80
+_022144B4: .word 0x02240A48
+_022144B8: .word 0x02240A4C
+_022144BC: .word 0x02240A90
+_022144C0: .word 0x0000035E
+_022144C4: .word 0x02240A88
+
+ arm_func_start MOD13_022144C8
+MOD13_022144C8: ; 0x022144C8
+ ldr r1, _022144F4 ; =0x02240A50
+ mov r3, #1
+ ldr r0, [r1, #4]
+ mov r2, #5
+ add r0, r0, #0x400
+ strh r3, [r0, #0xb0]
+ ldr r0, [r1, #4]
+ ldrb r0, [r0, #0x4b4]
+ strb r0, [r1, #0xe]
+ strb r2, [r1, #0xc]
+ bx lr
+ .align 2, 0
+_022144F4: .word 0x02240A50
+
+ arm_func_start MOD13_022144F8
+MOD13_022144F8: ; 0x022144F8
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ldr r3, _02214660 ; =0x02240A50
+ mov r6, r0
+ ldr r0, [r3, #4]
+ ldr r3, [r3, #8]
+ add r7, r0, #0x358
+ add r0, r3, #0x62
+ cmp r0, r7
+ mov r5, r1
+ ldrls r0, _02214664 ; =0x02240A80
+ movls r1, #0x62
+ mov r4, r2
+ strlsb r1, [r0, #0xc]
+ bls _02214558
+ ldr r0, _02214664 ; =0x02240A80
+ sub r1, r7, r3
+ strb r1, [r0, #0xc]
+ ldrb r2, [r0, #0xc]
+ ldr r1, _02214668 ; =0x02240A8E
+ mov r0, #0
+ add r1, r1, r2
+ rsb r2, r2, #0x62
+ bl MIi_CpuClear16
+_02214558:
+ ldr r0, _02214664 ; =0x02240A80
+ ldr r1, _02214660 ; =0x02240A50
+ ldrb r2, [r0, #0xc]
+ ldr r0, [r1, #8]
+ ldr r1, _02214668 ; =0x02240A8E
+ bl MIi_CpuCopy16
+ ldr r3, _02214660 ; =0x02240A50
+ ldr r2, _02214664 ; =0x02240A80
+ ldrb r8, [r3, #0xf]
+ ldrb r1, [r3, #0x10]
+ ldrb r7, [r2, #4]
+ strb r8, [r2, #0xa]
+ ldr r0, [r3, #4]
+ strb r1, [r2, #0xb]
+ ldrb r1, [r0, #0x4b2]
+ bic r7, r7, #3
+ ldrb r8, [r3, #0xe]
+ and r1, r1, #3
+ orr r1, r7, r1
+ strb r1, [r2, #4]
+ ldrb ip, [r0, #0x4b3]
+ ldrb r1, [r2, #4]
+ ldrb r7, [r3, #0x11]
+ strb ip, [r2, #5]
+ strb r8, [r2, #6]
+ ldr r8, [r0, #0x4b8]
+ bic r1, r1, #0xfc
+ str r8, [r2]
+ ldrb r0, [r0, #0x4b5]
+ add lr, r7, #1
+ mov ip, #0
+ and r0, r0, #0x3f
+ orr r8, r1, r0, lsl #2
+ ldr r0, _0221466C ; =0x02240A88
+ mov r1, #0x68
+ strb r8, [r2, #4]
+ strb lr, [r3, #0x11]
+ strb r7, [r2, #7]
+ strh ip, [r2, #8]
+ bl MOD13_022141A0
+ ldr r1, _02214660 ; =0x02240A50
+ ldr r2, _02214664 ; =0x02240A80
+ ldrb ip, [r1, #0xf]
+ strh r0, [r2, #8]
+ ldrb r3, [r1, #0x10]
+ add r0, ip, #1
+ strb r0, [r1, #0xf]
+ ldrb r0, [r1, #0xf]
+ mov r2, #0x70
+ cmp r0, r3
+ ldrlo r0, [r1, #8]
+ mov r3, r6
+ addlo r0, r0, #0x62
+ strlo r0, [r1, #8]
+ movhs r0, #4
+ strhsb r0, [r1, #0xc]
+ orr r0, r4, #3
+ and r4, r0, #0xff
+ str r5, [sp]
+ ldr r1, _02214664 ; =0x02240A80
+ mov r0, #0
+ str r4, [sp, #4]
+ bl WM_SetGameInfo
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+ .align 2, 0
+_02214660: .word 0x02240A50
+_02214664: .word 0x02240A80
+_02214668: .word 0x02240A8E
+_0221466C: .word 0x02240A88
+
+ arm_func_start MOD13_02214670
+MOD13_02214670: ; 0x02214670
+ ldr r0, _022146B8 ; =0x02240A50
+ ldrb r1, [r0, #0xc]
+ cmp r1, #2
+ bxne lr
+ ldr r2, [r0, #4]
+ ldrb r1, [r2, #0x4b2]
+ cmp r1, #0
+ moveq r1, #9
+ streqb r1, [r0, #0x10]
+ streq r2, [r0, #8]
+ addne r1, r2, #0x220
+ movne r2, #4
+ strne r1, [r0, #8]
+ strneb r2, [r0, #0x10]
+ ldr r0, _022146B8 ; =0x02240A50
+ mov r1, #3
+ strb r1, [r0, #0xc]
+ bx lr
+ .align 2, 0
+_022146B8: .word 0x02240A50
+
+ arm_func_start MOD13_022146BC
+MOD13_022146BC: ; 0x022146BC
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r0, _02214760 ; =0x02240A50
+ ldr r1, [r0]
+ cmp r1, #0
+ bne _02214710
+ bl MOD13_02214BF4
+ mov r4, r0
+ bl MOD13_02214BE0
+ str r0, [sp]
+ mov ip, #8
+ ldr r1, _02214764 ; =0x02240A80
+ mov r3, r4
+ mov r0, #0
+ mov r2, #0x70
+ str ip, [sp, #4]
+ bl WM_SetGameInfo
+ add sp, sp, #8
+ mov r0, #0
+ ldmia sp!, {r4, lr}
+ bx lr
+_02214710:
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _0221472C
+ ldr r0, [r0, #0x4bc]
+ cmp r0, #0
+ beq _0221472C
+ mov r1, r0
+_0221472C:
+ ldr r0, _02214760 ; =0x02240A50
+ str r1, [r0, #4]
+ bl MOD13_02214810
+ ldr r1, _02214760 ; =0x02240A50
+ mov r2, #2
+ ldr r3, [r1, #4]
+ mov r0, #1
+ ldrb r3, [r3, #0x4b4]
+ strb r3, [r1, #0xe]
+ strb r2, [r1, #0xc]
+ add sp, sp, #8
+ ldmia sp!, {r4, lr}
+ bx lr
+ .align 2, 0
+_02214760: .word 0x02240A50
+_02214764: .word 0x02240A80
+
+ arm_func_start MOD13_02214768
+MOD13_02214768: ; 0x02214768
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ ldr r4, _0221480C ; =0x02240A50
+_02214780:
+ ldrb r0, [r4, #0xc]
+ cmp r0, #6
+ addls pc, pc, r0, lsl #2
+ b _02214780
+_02214790: ; jump table
+ b _022147AC ; case 0
+ b _022147AC ; case 1
+ b _022147C4 ; case 2
+ b _022147CC ; case 3
+ b _022147E8 ; case 4
+ b _022147F0 ; case 5
+ b _02214780 ; case 6
+_022147AC:
+ bl MOD13_022146BC
+ cmp r0, #0
+ bne _02214780
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_022147C4:
+ bl MOD13_02214670
+ b _02214780
+_022147CC:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ bl MOD13_022144F8
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+_022147E8:
+ bl MOD13_022144C8
+ b _02214780
+_022147F0:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ bl MOD13_02214224
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+ .align 2, 0
+_0221480C: .word 0x02240A50
+
+ arm_func_start MOD13_02214810
+MOD13_02214810: ; 0x02214810
+ ldr r0, _02214830 ; =0x02240A50
+ mov r1, #0
+ strb r1, [r0, #0xd]
+ strb r1, [r0, #0xe]
+ strb r1, [r0, #0xf]
+ strb r1, [r0, #0x10]
+ strb r1, [r0, #0x11]
+ bx lr
+ .align 2, 0
+_02214830: .word 0x02240A50
+
+ arm_func_start MOD13_02214834
+MOD13_02214834: ; 0x02214834
+ ldr r1, _0221485C ; =0x02240A50
+ mov r3, #0
+ ldr r0, _02214860 ; =0x02240A4C
+ mov r2, #1
+ ldr ip, _02214864 ; =MOD13_02214810
+ str r3, [r1]
+ str r3, [r1, #4]
+ strb r2, [r1, #0xc]
+ str r3, [r0]
+ bx ip
+ .align 2, 0
+_0221485C: .word 0x02240A50
+_02214860: .word 0x02240A4C
+_02214864: .word MOD13_02214810
+
+ arm_func_start MOD13_02214868
+MOD13_02214868: ; 0x02214868
+ ldr r1, _022148A8 ; =0x02240A50
+ ldr r2, [r1]
+ cmp r2, #0
+ streq r0, [r1]
+ beq _0221489C
+ ldr r1, [r2, #0x4bc]
+ cmp r1, #0
+ beq _02214898
+_02214888:
+ mov r2, r1
+ ldr r1, [r1, #0x4bc]
+ cmp r1, #0
+ bne _02214888
+_02214898:
+ str r0, [r2, #0x4bc]
+_0221489C:
+ mov r1, #0
+ str r1, [r0, #0x4bc]
+ bx lr
+ .align 2, 0
+_022148A8: .word 0x02240A50
+
+ arm_func_start MOD13_022148AC
+MOD13_022148AC: ; 0x022148AC
+ ldrh r1, [r0], #2
+ mov r2, #0
+ cmp r1, #0
+ beq _022148CC
+_022148BC:
+ ldrh r1, [r0], #2
+ add r2, r2, #1
+ cmp r1, #0
+ bne _022148BC
+_022148CC:
+ mov r0, r2
+ bx lr
+
+ arm_func_start MOD13_022148D4
+MOD13_022148D4: ; 0x022148D4
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r4, _02214950 ; =0x0000035E
+ mov r6, r0
+ mov r5, r2
+ mov r0, r1
+ ldr r2, _02214954 ; =0x0000014A
+ add r1, r6, r4
+ mov r4, r3
+ mov r7, #1
+ bl MIi_CpuCopy16
+ mov r2, #0
+ mov r1, #2
+_02214908:
+ mov r0, r1, lsl r2
+ ands r0, r5, r0
+ addne r0, r7, #1
+ add r2, r2, #1
+ andne r7, r0, #0xff
+ cmp r2, #0xf
+ blt _02214908
+ strb r7, [r6, #0x358]
+ orr r1, r5, #1
+ add r0, r6, #0x300
+ strh r1, [r0, #0x5a]
+ strh r4, [r0, #0x5c]
+ ldrb r0, [r6, #0x4b4]
+ add r0, r0, #1
+ strb r0, [r6, #0x4b4]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+ .align 2, 0
+_02214950: .word 0x0000035E
+_02214954: .word 0x0000014A
+
+ arm_func_start MOD13_02214958
+MOD13_02214958: ; 0x02214958
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x48
+ cmp r2, #0
+ movne r4, #0x200
+ moveq r4, #0x20
+ mov r6, r0
+ mov r5, r1
+ cmp r2, #0
+ addne r5, r5, #0x20
+ cmp r6, #0
+ addeq sp, sp, #0x48
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, lr}
+ bxeq lr
+ add r0, sp, #0
+ bl FS_InitFile
+ add r0, sp, #0
+ mov r1, r6
+ bl FS_OpenFile
+ cmp r0, #0
+ addeq sp, sp, #0x48
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, lr}
+ bxeq lr
+ ldr r1, [sp, #0x28]
+ ldr r0, [sp, #0x24]
+ sub r0, r1, r0
+ cmp r4, r0
+ beq _022149E4
+ add r0, sp, #0
+ bl FS_CloseFile
+ add sp, sp, #0x48
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+_022149E4:
+ add r0, sp, #0
+ mov r1, r5
+ mov r2, r4
+ bl FS_ReadFile
+ add r0, sp, #0
+ bl FS_CloseFile
+ mov r0, #1
+ add sp, sp, #0x48
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+
+ arm_func_start MOD13_02214A0C
+MOD13_02214A0C: ; 0x02214A0C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ mov r1, r6
+ mov r0, #0
+ mov r2, #0x4c0
+ bl MIi_CpuClear16
+ mov r0, #0
+ strb r0, [r6, #0x4b2]
+ ldr r0, [r5, #0xc]
+ mov r1, r6
+ mov r2, #1
+ bl MOD13_02214958
+ cmp r0, #0
+ moveq r7, #1
+ ldr r0, [r5, #0x10]
+ mov r1, r6
+ mov r2, #0
+ movne r7, #0
+ bl MOD13_02214958
+ cmp r0, #0
+ moveq r0, #1
+ movne r0, #0
+ orrs r0, r7, r0
+ beq _02214A90
+ mov r3, #1
+ mov r1, r6
+ mov r0, #0
+ mov r2, #0x220
+ strb r3, [r6, #0x4b2]
+ bl MIi_CpuClearFast
+_02214A90:
+ ldr r0, [r5, #0x14]
+ cmp r4, #0
+ str r0, [r6, #0x4b8]
+ beq _02214AB0
+ mov r0, r4
+ add r1, r6, #0x220
+ mov r2, #0x16
+ bl MIi_CpuCopy16
+_02214AB0:
+ ldrb r0, [r5, #0x18]
+ strb r0, [r6, #0x236]
+ ldr r0, [r5, #4]
+ bl MOD13_022148AC
+ mov r2, r0, lsl #0x11
+ ldr r0, [r5, #4]
+ add r1, r6, #0x238
+ mov r2, r2, lsr #0x10
+ bl MIi_CpuCopy16
+ ldr r0, [r5, #8]
+ add r1, r6, #0x298
+ mov r2, #0xc0
+ bl MIi_CpuCopy16
+ mov r1, #1
+ strb r1, [r6, #0x358]
+ add r0, r6, #0x300
+ strh r1, [r0, #0x5a]
+ add r0, r6, #0x400
+ strh r1, [r0, #0xb0]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+
+ arm_func_start MOD13_02214B08
+MOD13_02214B08: ; 0x02214B08
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r1, #2
+ addeq sp, sp, #4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ ldr r2, _02214B5C ; =0x02240AF8
+ strh r0, [sp]
+ ldr r0, [r2]
+ strh r1, [sp, #2]
+ ldr r2, [r0, #0x51c]
+ add r1, sp, #0
+ mov r0, #0xff
+ blx r2
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+ .align 2, 0
+_02214B5C: .word 0x02240AF8
+
+ arm_func_start MOD13_02214B60
+MOD13_02214B60: ; 0x02214B60
+ ldr r0, _02214B7C ; =0x02240AF8
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x50d]
+ cmp r0, #1
+ moveq r0, #1
+ movne r0, #0
+ bx lr
+ .align 2, 0
+_02214B7C: .word 0x02240AF8
+
+ arm_func_start MOD13_02214B80
+MOD13_02214B80: ; 0x02214B80
+ ldr r0, _02214BDC ; =0x02240AF8
+ ldr r1, [r0]
+ ldrh r0, [r1, #0x12]
+ cmp r0, #0
+ ldrh r0, [r1, #0xe]
+ movne r2, #2
+ moveq r2, #0
+ cmp r0, #0
+ movne r3, #1
+ ldrh r0, [r1, #0x14]
+ moveq r3, #0
+ cmp r0, #0
+ movne ip, #4
+ ldrh r0, [r1, #0x16]
+ moveq ip, #0
+ cmp r0, #0
+ movne r1, #8
+ orr r0, r3, r2
+ moveq r1, #0
+ orr r0, ip, r0
+ orr r0, r1, r0
+ and r0, r0, #0xff
+ bx lr
+ .align 2, 0
+_02214BDC: .word 0x02240AF8
+
+ arm_func_start MOD13_02214BE0
+MOD13_02214BE0: ; 0x02214BE0
+ ldr r0, _02214BF0 ; =0x02240AF8
+ ldr r0, [r0]
+ ldrh r0, [r0, #0xc]
+ bx lr
+ .align 2, 0
+_02214BF0: .word 0x02240AF8
+
+ arm_func_start MOD13_02214BF4
+MOD13_02214BF4: ; 0x02214BF4
+ ldr r0, _02214C04 ; =0x02240AF8
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ bx lr
+ .align 2, 0
+_02214C04: .word 0x02240AF8
+
+ arm_func_start MOD13_02214C08
+MOD13_02214C08: ; 0x02214C08
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr ip, _02214D04 ; =0x02240AF8
+ mov r3, r1, lsl #0x10
+ ldr r5, [ip]
+ mov ip, r2, lsl #0x10
+ add lr, r5, #0x500
+ ldrh r4, [lr, #0x28]
+ mov r1, r0
+ mov r2, r3, lsr #0x10
+ cmp r4, #0
+ mov r4, ip, lsr #0x10
+ beq _02214C48
+ ldrh r0, [lr, #0x26]
+ cmp r0, #1
+ bne _02214C58
+_02214C48:
+ add sp, sp, #4
+ mov r0, #1
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_02214C58:
+ ldrh r0, [lr, #0x24]
+ cmp r0, #1
+ beq _02214C70
+ cmp r0, #2
+ beq _02214CBC
+ b _02214CF4
+_02214C70:
+ ldrh r0, [lr, #0x2c]
+ cmp r0, #0
+ moveq r0, #0x3e8
+ movne r0, #0
+ mov r3, r0, lsl #0x10
+ str r4, [sp]
+ ldr r0, [r5, #0x508]
+ mov r3, r3, lsr #0x10
+ bl MOD13_02214D0C
+ cmp r0, #2
+ ldreq r1, _02214D04 ; =0x02240AF8
+ moveq r2, #1
+ ldreq r1, [r1]
+ add sp, sp, #4
+ streqb r2, [r1, #0x50c]
+ cmp r0, #2
+ moveq r0, #0
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_02214CBC:
+ ldr r0, _02214D08 ; =MOD13_02215724
+ mov r3, #0
+ str r4, [sp]
+ bl MOD13_02214D0C
+ cmp r0, #2
+ ldreq r1, _02214D04 ; =0x02240AF8
+ moveq r2, #1
+ ldreq r1, [r1]
+ add sp, sp, #4
+ streqb r2, [r1, #0x50c]
+ cmp r0, #2
+ moveq r0, #0
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+_02214CF4:
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+ .align 2, 0
+_02214D04: .word 0x02240AF8
+_02214D08: .word MOD13_02215724
+
+ arm_func_start MOD13_02214D0C
+MOD13_02214D0C: ; 0x02214D0C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x10
+ ldrh r4, [sp, #0x18]
+ mov r3, r2
+ mov r2, r1
+ str r4, [sp]
+ mov r4, #1
+ str r4, [sp, #4]
+ mov r4, #3
+ mov r1, #0
+ str r4, [sp, #8]
+ bl WM_SetMPDataToPortEx
+ mov r4, r0
+ mov r1, r4
+ mov r0, #0xf
+ bl MOD13_02214B08
+ mov r0, r4
+ add sp, sp, #0x10
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start MOD13_02214D5C
+MOD13_02214D5C: ; 0x02214D5C
+ ldr r1, _02214D68 ; =0x02240B00
+ strh r0, [r1, #6]
+ bx lr
+ .align 2, 0
+_02214D68: .word 0x02240B00
+
+ arm_func_start MOD13_02214D6C
+MOD13_02214D6C: ; 0x02214D6C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ ldr r0, _02214F08 ; =MOD13_02216098
+ mov r1, r5
+ bl WM_Disconnect
+ cmp r5, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, r6, r7, lr}
+ bxeq lr
+ cmp r5, #0x10
+ addhs sp, sp, #4
+ ldmhsia sp!, {r4, r5, r6, r7, lr}
+ bxhs lr
+ ldr r2, _02214F0C ; =0x02240AFC
+ sub r4, r5, #1
+ ldr r0, [r2]
+ mov r1, #0
+ add r0, r0, r4, lsl #1
+ add r0, r0, #0x1400
+ strh r1, [r0, #0x8a]
+ ldr r3, [r2]
+ ldr r0, _02214F10 ; =0x000014A8
+ mov r2, #4
+ add r0, r3, r0
+ add r0, r0, r4, lsl #2
+ bl MI_CpuFill8
+ ldr r0, _02214F0C ; =0x02240AFC
+ mov r2, #0x16
+ ldr r0, [r0]
+ mov r1, #0
+ add r0, r0, #0x1340
+ mla r0, r4, r2, r0
+ bl MI_CpuFill8
+ mov r0, r5
+ bl MOD13_02217234
+ ldr lr, _02214F0C ; =0x02240AFC
+ mov r2, #0
+ ldr r1, [lr]
+ mvn r0, #0
+ add r1, r1, r4, lsl #1
+ add r1, r1, #0x1700
+ strh r2, [r1, #0x54]
+ ldr r3, [lr]
+ add r1, r3, r4
+ add r1, r1, #0x1500
+ ldrsb r2, [r1, #0x26]
+ cmp r2, r0
+ beq _02214E9C
+ ldr r1, _02214F14 ; =0x000005D4
+ and r2, r2, #0xff
+ mul r1, r2, r1
+ add r2, r3, r1
+ add ip, r2, #0x1d00
+ mov r3, #1
+ ldrh r6, [ip, #0x4e]
+ mvn r2, r3, lsl r5
+ and r6, r6, r2
+ strh r6, [ip, #0x4e]
+ ldr r7, [lr]
+ mov r6, r4
+ add r7, r7, r1
+ add ip, r7, #0x1d00
+ ldrh r7, [ip, #0x50]
+ orr r3, r7, r3, lsl r5
+ strh r3, [ip, #0x50]
+ ldr r3, [lr]
+ add r3, r3, r6
+ add r3, r3, #0x1000
+ strb r0, [r3, #0x526]
+ ldr r0, [lr]
+ add r0, r0, r1
+ add r0, r0, #0x1d00
+ ldrh r1, [r0, #0x4c]
+ and r1, r1, r2
+ strh r1, [r0, #0x4c]
+_02214E9C:
+ ldr r1, _02214F0C ; =0x02240AFC
+ mov r0, #1
+ ldr r2, [r1]
+ mov r5, r0, lsl r5
+ add r0, r2, #0x1500
+ ldrh r0, [r0, #0x36]
+ ands r0, r0, r5
+ beq _02214EE4
+ add r0, r2, #0x1000
+ ldrb r3, [r0, #0x535]
+ mvn r2, r5
+ sub r3, r3, #1
+ strb r3, [r0, #0x535]
+ ldr r0, [r1]
+ add r0, r0, #0x1500
+ ldrh r1, [r0, #0x36]
+ and r1, r1, r2
+ strh r1, [r0, #0x36]
+_02214EE4:
+ ldr r0, _02214F0C ; =0x02240AFC
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, r4, lsl #2
+ add r0, r0, #0x1000
+ str r1, [r0, #0x4e8]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+ .align 2, 0
+_02214F08: .word MOD13_02216098
+_02214F0C: .word 0x02240AFC
+_02214F10: .word 0x000014A8
+_02214F14: .word 0x000005D4
+
+ arm_func_start MOD13_02214F18
+MOD13_02214F18: ; 0x02214F18
+ stmdb sp!, {r4, lr}
+ bl OS_DisableInterrupts
+ ldr r1, _02214F54 ; =0x02240AFC
+ mov r4, r0
+ ldr r0, [r1]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x320]
+ cmp r0, #0
+ bne _02214F40
+ bl OS_Terminate
+_02214F40:
+ bl MOD13_02214F58
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4, lr}
+ bx lr
+ .align 2, 0
+_02214F54: .word 0x02240AFC
+
+ arm_func_start MOD13_02214F58
+MOD13_02214F58: ; 0x02214F58
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, #1
+ bl OS_DisableInterrupts
+ ldr r1, _02214FD8 ; =0x02240AF8
+ mov r4, r0
+ ldr r2, [r1]
+ add r0, r2, #0x500
+ ldrh r0, [r0, #0x26]
+ cmp r0, #0
+ bne _02214FC0
+ mov r0, #0
+ str r0, [r2, #0x5e4]
+ ldr r0, [r1]
+ mov r1, r5
+ add r0, r0, #0x500
+ strh r1, [r0, #0x26]
+ bl MOD13_02216DA4
+ cmp r0, #0
+ beq _02214FB8
+ ldr r0, _02214FDC ; =MOD13_02214FE0
+ bl MOD13_02216B94
+ mov r5, #0
+ b _02214FC0
+_02214FB8:
+ bl MOD13_02214FEC
+ mov r5, r0
+_02214FC0:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, r5
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+ .align 2, 0
+_02214FD8: .word 0x02240AF8
+_02214FDC: .word MOD13_02214FE0
+
+ arm_func_start MOD13_02214FE0
+MOD13_02214FE0: ; 0x02214FE0
+ ldr ip, _02214FE8 ; =MOD13_02214FEC
+ bx ip
+ .align 2, 0
+_02214FE8: .word MOD13_02214FEC
+
+ arm_func_start MOD13_02214FEC
+MOD13_02214FEC: ; 0x02214FEC
+ stmdb sp!, {r4, lr}
+ ldr r0, _02215024 ; =0x02240AF8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x508]
+ bl WM_Reset
+ mov r4, r0
+ mov r1, r4
+ mov r0, #1
+ bl MOD13_02214B08
+ cmp r4, #2
+ moveq r4, #0
+ mov r0, r4
+ ldmia sp!, {r4, lr}
+ bx lr
+ .align 2, 0
+_02215024: .word 0x02240AF8
+
+ arm_func_start MOD13_02215028
+MOD13_02215028: ; 0x02215028
+ ldr r1, _02215044 ; =0x02240AFC
+ ldr ip, _02215048 ; =MOD13_0221504C
+ ldr r1, [r1]
+ mov r2, #1
+ add r1, r1, #0x1000
+ str r2, [r1, #0x320]
+ bx ip
+ .align 2, 0
+_02215044: .word 0x02240AFC
+_02215048: .word MOD13_0221504C
+
+ arm_func_start MOD13_0221504C
+MOD13_0221504C: ; 0x0221504C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ bl OS_DisableInterrupts
+ ldr r1, _02215234 ; =0x02240AF8
+ ldr r2, _02215238 ; =0x02240AFC
+ ldr r3, [r1]
+ ldr r1, _0221523C ; =0x00007D1F
+ strh r4, [r3, #0x32]
+ ldr r3, [r2]
+ ldr r2, _02215240 ; =0x02240AF4
+ add r1, r3, r1
+ bic r1, r1, #0x1f
+ mov r4, r0
+ str r1, [r2]
+ add r0, r3, #0x1000
+ ldr r5, [r0, #0x4e4]
+ ldr r2, _02215244 ; =0x000069C0
+ add r1, r3, #0x1340
+ mov r0, #0
+ bl MIi_CpuClear16
+ mov r0, r5
+ bl MOD13_02213368
+ ldr r1, _02215234 ; =0x02240AF8
+ ldr r0, _02215238 ; =0x02240AFC
+ ldr r3, [r1]
+ ldr r2, [r0]
+ add r0, r3, #0x500
+ ldrh r3, [r0]
+ add r0, r2, #0x1000
+ sub r2, r3, #6
+ str r2, [r0, #0x318]
+ ldr r0, [r1]
+ add r0, r0, #0x500
+ ldrh r0, [r0, #2]
+ bl MOD13_022172A0
+ ldr r1, _02215238 ; =0x02240AFC
+ ldr r0, _02215248 ; =0x00001538
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl MOD13_02217280
+ mov r5, #0
+ ldr r2, _02215238 ; =0x02240AFC
+ mov r0, r5
+ mvn r3, #0
+_02215100:
+ ldr r1, [r2]
+ add r1, r1, r5, lsl #2
+ add r1, r1, #0x1000
+ str r0, [r1, #0x4e8]
+ ldr r1, [r2]
+ add r1, r1, r5
+ add r1, r1, #0x1000
+ add r5, r5, #1
+ strb r3, [r1, #0x526]
+ cmp r5, #0xf
+ blt _02215100
+ ldr r1, [r2]
+ ldr r3, _0221524C ; =0x00001788
+ add r1, r1, #0x1000
+ strb r0, [r1, #0x524]
+ ldr r1, [r2]
+ ldr r2, _02215250 ; =0x00005D40
+ add r1, r1, r3
+ bl MIi_CpuClear16
+ ldr r1, _02215238 ; =0x02240AFC
+ ldr r0, _02215254 ; =0x00001754
+ ldr r2, [r1]
+ mov r1, #0
+ add r0, r2, r0
+ mov r2, #0x1e
+ bl MI_CpuFill8
+ ldr r2, _02215234 ; =0x02240AF8
+ mov r3, #1
+ ldr r0, [r2]
+ ldr r1, _02215258 ; =MOD13_02212C20
+ add r0, r0, #0x500
+ strh r3, [r0, #0x24]
+ ldr r0, [r2]
+ ldr r3, _0221525C ; =MOD13_02216098
+ str r1, [r0, #0x51c]
+ ldr r0, [r2]
+ mov r1, #0xf
+ str r3, [r0, #0x508]
+ ldr r3, [r2]
+ add r0, r3, #0x500
+ ldrh r0, [r0]
+ strh r0, [r3, #0x34]
+ ldr r0, [r2]
+ ldrh r3, [r0, #0x34]
+ add r0, r0, #0x500
+ add r3, r3, #0x23
+ bic r3, r3, #0x1f
+ strh r3, [r0, #0x18]
+ ldr r3, [r2]
+ add r0, r3, #0x500
+ ldrh r0, [r0, #2]
+ strh r0, [r3, #0x36]
+ ldr r0, [r2]
+ ldrh r2, [r0, #0x36]
+ add r0, r0, #0x500
+ add r2, r2, #0xe
+ mul r1, r2, r1
+ add r1, r1, #0x29
+ bic r1, r1, #0x1f
+ mov r1, r1, lsl #1
+ strh r1, [r0, #0x1a]
+ bl MOD13_02214834
+ bl MOD13_02215260
+ mov r5, r0
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, #0xf
+ mov r1, #1
+ bl PXI_IsCallbackReady
+ ldr r1, _02215238 ; =0x02240AFC
+ ldr r1, [r1]
+ add r1, r1, #0x7000
+ str r0, [r1, #0x4c8]
+ mov r0, r5
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+ .align 2, 0
+_02215234: .word 0x02240AF8
+_02215238: .word 0x02240AFC
+_0221523C: .word 0x00007D1F
+_02215240: .word 0x02240AF4
+_02215244: .word 0x000069C0
+_02215248: .word 0x00001538
+_0221524C: .word 0x00001788
+_02215250: .word 0x00005D40
+_02215254: .word 0x00001754
+_02215258: .word MOD13_02212C20
+_0221525C: .word MOD13_02216098
+
+ arm_func_start MOD13_02215260
+MOD13_02215260: ; 0x02215260
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r2, _02215350 ; =0x02240AF8
+ mov r3, #0
+ ldr r1, [r2]
+ mov r0, #0xa
+ add r1, r1, #0x500
+ strh r3, [r1, #0x28]
+ ldr r1, [r2]
+ add r1, r1, #0x500
+ strh r3, [r1, #0x2a]
+ ldr r1, [r2]
+ add r1, r1, #0x500
+ strh r3, [r1, #0x26]
+ ldr r1, [r2]
+ add r1, r1, #0x500
+ strh r3, [r1, #0x48]
+ bl MOD13_02214D5C
+ ldr r0, _02215354 ; =0x02240AFC
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x320]
+ cmp r0, #0
+ bne _02215320
+ ldr r6, _02215358 ; =0x02240AF4
+ ldr r5, _02215350 ; =0x02240AF8
+ ldr r4, _0221535C ; =0x02240AF0
+_022152C8:
+ ldr r1, [r5]
+ ldrh r2, [r4]
+ ldr r0, [r6]
+ ldr r1, [r1, #0x508]
+ bl WM_Initialize
+ cmp r0, #4
+ beq _022152C8
+ cmp r0, #2
+ movne r0, #8
+ ldmneia sp!, {r4, r5, r6, lr}
+ bxne lr
+ ldr r0, _02215350 ; =0x02240AF8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x508]
+ bl WM_SetIndCallback
+ ldr r0, _02215350 ; =0x02240AF8
+ mov r2, #1
+ ldr r1, [r0]
+ mov r0, #0
+ strb r2, [r1, #0x50d]
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+_02215320:
+ ldr r0, _02215350 ; =0x02240AF8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x508]
+ bl WM_SetIndCallback
+ ldr r0, _02215350 ; =0x02240AF8
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x50d]
+ bl MOD13_02216910
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+ .align 2, 0
+_02215350: .word 0x02240AF8
+_02215354: .word 0x02240AFC
+_02215358: .word 0x02240AF4
+_0221535C: .word 0x02240AF0
+
+ arm_func_start MOD13_02215360
+MOD13_02215360: ; 0x02215360
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r5, r0
+ mov r4, r1
+ bl OS_DisableInterrupts
+ ldr r1, _02215400 ; =0x02240AF8
+ mov r6, r0
+ ldr r1, [r1]
+ ldrb r1, [r1, #0x50d]
+ cmp r1, #0
+ beq _02215398
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+_02215398:
+ mov r0, r5
+ mov r2, r4
+ mov r1, #8
+ bl MOD13_02215404
+ cmp r0, #0
+ bne _022153C4
+ mov r0, r6
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+_022153C4:
+ ldr r2, _02215400 ; =0x02240AF8
+ mov r0, r6
+ ldr r1, [r2]
+ mov r3, #8
+ strh r4, [r1, #0x10]
+ ldr r1, [r2]
+ add r1, r1, #0x500
+ strh r5, [r1]
+ ldr r1, [r2]
+ add r1, r1, #0x500
+ strh r3, [r1, #2]
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+ .align 2, 0
+_02215400: .word 0x02240AF8
+
+ arm_func_start MOD13_02215404
+MOD13_02215404: ; 0x02215404
+ ldr r3, _02215468 ; =0x000001FE
+ cmp r0, r3
+ bhi _02215418
+ cmp r0, #0xe4
+ bhs _02215420
+_02215418:
+ mov r0, #0
+ bx lr
+_02215420:
+ cmp r1, #0x10
+ bhi _02215430
+ cmp r1, #8
+ bhs _02215438
+_02215430:
+ mov r0, #0
+ bx lr
+_02215438:
+ add r1, r1, #0x20
+ mov r3, r1, lsl #2
+ ldr r1, _0221546C ; =0x0000014A
+ add r0, r0, #0x26
+ add r1, r1, r0, lsl #2
+ add r0, r3, #0x70
+ mla r1, r2, r0, r1
+ ldr r0, _02215470 ; =0x000015E0
+ cmp r1, r0
+ movlt r0, #1
+ movge r0, #0
+ bx lr
+ .align 2, 0
+_02215468: .word 0x000001FE
+_0221546C: .word 0x0000014A
+_02215470: .word 0x000015E0
+
+ arm_func_start MOD13_02215474
+MOD13_02215474: ; 0x02215474
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ ldr r4, _0221567C ; =0x02240AFC
+ mov sb, r1
+ ldr r1, [r4]
+ mov r8, r2
+ mov r7, r3
+ cmp r1, #0
+ beq _022154B4
+ add r1, r1, #0x1300
+ ldrh r1, [r1, #0x16]
+ cmp r1, #0
+ addne sp, sp, #4
+ movne r0, #2
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, lr}
+ bxne lr
+_022154B4:
+ add r1, r0, #0x1f
+ ldr r0, _02215680 ; =0x00001E1F
+ bic r6, r1, #0x1f
+ add r0, r6, r0
+ cmp r7, #0x10000
+ bic r5, r0, #0x1f
+ bne _022154D8
+ bl WM_GetNextTgid
+ mov r7, r0
+_022154D8:
+ bl OS_DisableInterrupts
+ ldr ip, _02215684 ; =0x02240AF8
+ ldr r3, _0221567C ; =0x02240AFC
+ mov r4, r0
+ ldr r1, [sp, #0x20]
+ ldr r0, _02215688 ; =0x02240AF0
+ ldr r2, _0221568C ; =0x0000FFFF
+ strh r1, [r0]
+ ldr r0, _02215690 ; =0x0223F798
+ ldr r1, _02215694 ; =0x0223F78C
+ strh r2, [r0]
+ mov r2, #5
+ ldr r0, _02215698 ; =0x0223F790
+ strh r2, [r1]
+ mov r2, #0x28
+ ldr r1, _0221569C ; =0x0223F794
+ strh r2, [r0]
+ ldr r0, _022156A0 ; =0x0223F7A0
+ strh r2, [r1]
+ mov r2, #1
+ mov r1, r6
+ str r2, [r0]
+ mov r0, #0
+ mov r2, #0x1e00
+ str r6, [ip]
+ str r5, [r3]
+ bl MIi_CpuClear32
+ mov r1, r5
+ mov r0, #0
+ mov r2, #0x1340
+ bl MIi_CpuClear16
+ ldrb r0, [sb, #1]
+ add r1, r6, #0x530
+ mov r2, #0
+ cmp r0, #0
+ ble _02215584
+_02215568:
+ add r0, sb, r2, lsl #1
+ ldrh r0, [r0, #2]
+ add r2, r2, #1
+ strh r0, [r1], #2
+ ldrb r0, [sb, #1]
+ cmp r2, r0
+ blt _02215568
+_02215584:
+ ldr r0, _022156A4 ; =0x00000538
+ mov r3, #0
+ add ip, r6, r0
+ ldr r0, _022156A8 ; =0x0223F79C
+_02215594:
+ ldr r2, [r0]
+ ldrh r1, [r2]
+ cmp r1, #0
+ beq _022155C0
+ add r1, r2, #2
+ str r1, [r0]
+ ldrh r1, [r2]
+ add r3, r3, #1
+ cmp r3, #0x10
+ strh r1, [ip], #2
+ blt _02215594
+_022155C0:
+ mov r0, sb
+ add r1, r5, #0x1300
+ mov r2, #0x16
+ bl MI_CpuCopy8
+ ldrb r0, [sb, #1]
+ mov r2, #0
+ cmp r0, #0xa
+ addlo r0, r5, r0, lsl #1
+ addlo r0, r0, #0x1300
+ movlo r1, #0
+ strloh r1, [r0, #2]
+ add r0, r6, #0x500
+ mov r1, #0x100
+ strh r1, [r0]
+ mov r1, #8
+ strh r1, [r0, #2]
+ strh r2, [r0, #0x18]
+ strh r2, [r0, #0x1a]
+ mov r1, #1
+ strh r1, [r0, #0x2c]
+ add r0, r5, #0x400
+ str r0, [r6, #0x504]
+ strh r2, [r6, #0xe]
+ strh r2, [r6, #0x12]
+ strh r1, [r6, #0x16]
+ strh r2, [r6, #0x14]
+ str r8, [r6, #8]
+ strh r7, [r6, #0xc]
+ bl MOD13_022156AC
+ add r0, r0, #0xc8
+ strh r0, [r6, #0x18]
+ mov r0, #0xf
+ strh r0, [r6, #0x10]
+ mov r3, #0
+ strb r3, [r6, #0x50c]
+ strb r3, [r6, #0x50d]
+ add r1, r5, #0x1300
+ mov r2, #1
+ strh r2, [r1, #0x16]
+ add r1, r5, #0x1000
+ mov r0, r4
+ str r3, [r1, #0x31c]
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
+ bx lr
+ .align 2, 0
+_0221567C: .word 0x02240AFC
+_02215680: .word 0x00001E1F
+_02215684: .word 0x02240AF8
+_02215688: .word 0x02240AF0
+_0221568C: .word 0x0000FFFF
+_02215690: .word 0x0223F798
+_02215694: .word 0x0223F78C
+_02215698: .word 0x0223F790
+_0221569C: .word 0x0223F794
+_022156A0: .word 0x0223F7A0
+_022156A4: .word 0x00000538
+_022156A8: .word 0x0223F79C
+
+ arm_func_start MOD13_022156AC
+MOD13_022156AC: ; 0x022156AC
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ add r0, sp, #0
+ bl OS_GetMacAddress
+ mov r2, #0
+ add r1, sp, #0
+ mov r3, r2
+_022156C8:
+ ldrb r0, [r1]
+ add r2, r2, #1
+ cmp r2, #6
+ add r3, r3, r0
+ add r1, r1, #1
+ blt _022156C8
+ ldr r1, _02215718 ; =0x027FFC3C
+ mov r0, #7
+ ldr r2, [r1]
+ ldr r1, _0221571C ; =0xCCCCCCCD
+ add r2, r3, r2
+ mul r3, r2, r0
+ umull r1, r0, r3, r1
+ ldr r2, _02215720 ; =0x00000014
+ mov r0, r0, lsr #4
+ umull r0, r1, r2, r0
+ sub r0, r3, r0
+ add sp, sp, #0xc
+ ldmia sp!, {lr}
+ bx lr
+ .align 2, 0
+_02215718: .word 0x027FFC3C
+_0221571C: .word 0xCCCCCCCD
+_02215720: .word 0x00000014
+
+ arm_func_start MOD13_02215724
+MOD13_02215724: ; 0x02215724
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #0x20
+ mov r6, r0
+ ldrh r0, [r6]
+ ldr r1, _02215F98 ; =0x02240AF8
+ cmp r0, #0x1d
+ ldr r5, [r1]
+ bgt _022157B0
+ cmp r0, #0x1d
+ bge _02215838
+ cmp r0, #0x15
+ addls pc, pc, r0, lsl #2
+ b _02215F7C
+_02215758: ; jump table
+ b _022157BC ; case 0
+ b _02215E4C ; case 1
+ b _02215EB8 ; case 2
+ b _02215F7C ; case 3
+ b _02215F7C ; case 4
+ b _02215F7C ; case 5
+ b _02215F7C ; case 6
+ b _02215F7C ; case 7
+ b _02215F7C ; case 8
+ b _02215F7C ; case 9
+ b _022158DC ; case 10
+ b _02215B64 ; case 11
+ b _02215BBC ; case 12
+ b _02215F7C ; case 13
+ b _02215D54 ; case 14
+ b _02215DDC ; case 15
+ b _02215F7C ; case 16
+ b _02215F7C ; case 17
+ b _02215F7C ; case 18
+ b _02215F7C ; case 19
+ b _02215F7C ; case 20
+ b _02215F20 ; case 21
+_022157B0:
+ cmp r0, #0x80
+ beq _02215F50
+ b _02215F7C
+_022157BC:
+ ldrh r0, [r6, #2]
+ cmp r0, #0
+ beq _022157E4
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0x100
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_022157E4:
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0x15
+ blx r2
+ ldr r0, _02215F9C ; =0x0223F794
+ ldr r1, _02215FA0 ; =0x0223F798
+ ldrh r3, [r0]
+ ldr r2, _02215FA4 ; =0x0223F790
+ ldr r0, _02215FA8 ; =0x0223F78C
+ str r3, [sp]
+ ldrh r3, [r0]
+ ldrh r1, [r1]
+ ldrh r2, [r2]
+ ldr r0, _02215FAC ; =MOD13_02215724
+ bl WM_SetLifeTime
+ mov r1, r0
+ mov r0, #0x1d
+ bl MOD13_02214B08
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215838:
+ ldrh r0, [r6, #2]
+ cmp r0, #0
+ beq _02215860
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0x100
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215860:
+ ldr r0, _02215FB0 ; =0x02240B00
+ add r2, r5, #0x440
+ ldrh r1, [r0, #4]
+ str r2, [r0]
+ mov r2, #1
+ cmp r1, #0
+ moveq r1, #1
+ streqh r1, [r0, #4]
+ ldr r0, _02215FB0 ; =0x02240B00
+ ldrh r1, [r0, #6]
+ cmp r1, #0
+ moveq r1, #0xc8
+ streqh r1, [r0, #6]
+ ldr r1, _02215FB0 ; =0x02240B00
+ mov r0, #0xff
+ strb r0, [r1, #8]
+ strb r0, [r1, #9]
+ strb r0, [r1, #0xa]
+ strb r0, [r1, #0xb]
+ strb r0, [r1, #0xc]
+ strb r0, [r1, #0xd]
+ str r2, [r5, #0x5e4]
+ ldr r0, _02215FAC ; =MOD13_02215724
+ str r2, [r5, #0x5e8]
+ bl WM_StartScan
+ mov r1, r0
+ mov r0, #0xa
+ bl MOD13_02214B08
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_022158DC:
+ ldrh r0, [r6, #2]
+ cmp r0, #0
+ beq _02215904
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0x100
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215904:
+ ldrh r0, [r6, #8]
+ cmp r0, #3
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
+ bxeq lr
+ cmp r0, #4
+ beq _02215AE0
+ cmp r0, #5
+ bne _02215B48
+ add r0, r5, #0x500
+ ldrh r0, [r0, #0xe0]
+ add r3, r5, #0x600
+ mov r4, #0
+ cmp r0, #0
+ ble _02215A18
+ ldrb r1, [r6, #0xa]
+ mov r2, r3
+_02215948:
+ ldrb r7, [r2, #0xca]
+ cmp r1, r7
+ bne _02215A08
+ ldrb r8, [r6, #0xb]
+ ldrb r7, [r2, #0xcb]
+ cmp r8, r7
+ bne _02215A08
+ ldrb r8, [r6, #0xc]
+ ldrb r7, [r2, #0xcc]
+ cmp r8, r7
+ bne _02215A08
+ ldrb r8, [r6, #0xd]
+ ldrb r7, [r2, #0xcd]
+ cmp r8, r7
+ bne _02215A08
+ ldrb r8, [r6, #0xe]
+ ldrb r7, [r2, #0xce]
+ cmp r8, r7
+ bne _02215A08
+ ldrb r8, [r6, #0xf]
+ ldrb r7, [r2, #0xcf]
+ cmp r8, r7
+ bne _02215A08
+ mov r0, #0x180
+ mul r7, r4, r0
+ add r0, r3, r7
+ ldrh r1, [r6, #0x36]
+ add r8, r6, #0x38
+ add lr, r0, #0xf8
+ strh r1, [r0, #0xf6]
+ mov ip, #8
+_022159C4:
+ ldmia r8!, {r0, r1, r2, r3}
+ stmia lr!, {r0, r1, r2, r3}
+ subs ip, ip, #1
+ bne _022159C4
+ add r0, r5, #0x600
+ add r7, r0, r7
+ mov r0, r7
+ mov r1, #0xc0
+ bl DC_InvalidateRange
+ ldr r0, _02215FB4 ; =0x02240AF0
+ mov r2, r7
+ ldrh r0, [r0]
+ add r1, r5, #0x440
+ mov r3, #0xc0
+ bl MI_DmaCopy16
+ str r4, [r5, #0x5ec]
+ b _02215A78
+_02215A08:
+ add r4, r4, #1
+ cmp r4, r0
+ add r2, r2, #0x180
+ blt _02215948
+_02215A18:
+ cmp r4, #0x10
+ bge _02215A78
+ mov r0, #0x180
+ mul r7, r4, r0
+ add r1, r3, r7
+ mov r0, r6
+ add ip, r4, #1
+ add r3, r5, #0x500
+ add r1, r1, #0xc0
+ mov r2, #0xb8
+ strh ip, [r3, #0xe0]
+ bl MIi_CpuCopy16
+ add r0, r5, #0x600
+ add r7, r0, r7
+ mov r0, r7
+ mov r1, #0xc0
+ bl DC_InvalidateRange
+ ldr r0, _02215FB4 ; =0x02240AF0
+ mov r2, r7
+ ldrh r0, [r0]
+ add r1, r5, #0x440
+ mov r3, #0xc0
+ bl MI_DmaCopy16
+ str r4, [r5, #0x5ec]
+_02215A78:
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #4
+ blx r2
+ ldr r0, [r5, #0x5e4]
+ cmp r0, #0
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
+ bxeq lr
+ ldr r0, [r5, #0x5e8]
+ cmp r0, #0
+ beq _02215ABC
+ ldr r0, _02215FB0 ; =0x02240B00
+ bl MOD13_022169EC
+ cmp r0, #0
+ bne _02215ABC
+ bl MOD13_02214F58
+_02215ABC:
+ ldr r0, _02215FAC ; =MOD13_02215724
+ ldr r1, _02215FB0 ; =0x02240B00
+ bl WM_StartScan
+ mov r1, r0
+ mov r0, #0xa
+ bl MOD13_02214B08
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215AE0:
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #5
+ blx r2
+ ldr r0, [r5, #0x5e4]
+ cmp r0, #0
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
+ bxeq lr
+ ldr r0, [r5, #0x5e8]
+ cmp r0, #0
+ beq _02215B24
+ ldr r0, _02215FB0 ; =0x02240B00
+ bl MOD13_022169EC
+ cmp r0, #0
+ bne _02215B24
+ bl MOD13_02214F58
+_02215B24:
+ ldr r0, _02215FAC ; =MOD13_02215724
+ ldr r1, _02215FB0 ; =0x02240B00
+ bl WM_StartScan
+ mov r1, r0
+ mov r0, #0xa
+ bl MOD13_02214B08
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215B48:
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0x100
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215B64:
+ ldrh r0, [r6, #2]
+ cmp r0, #0
+ beq _02215B8C
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0x100
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215B8C:
+ mov r2, #0
+ str r2, [sp]
+ ldr r1, [r5, #0x520]
+ ldr r0, _02215FAC ; =MOD13_02215724
+ mov r3, #1
+ bl WM_StartConnectEx
+ mov r1, r0
+ mov r0, #0xc
+ bl MOD13_02214B08
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215BBC:
+ ldrh r0, [r6, #2]
+ cmp r0, #0
+ beq _02215BF0
+ add r0, r5, #0x500
+ mov r1, #0
+ strh r1, [r0, #0xe0]
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0xb
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215BF0:
+ ldrh r0, [r6, #8]
+ cmp r0, #9
+ bgt _02215C20
+ cmp r0, #6
+ blt _02215D38
+ cmp r0, #6
+ beq _02215C34
+ cmp r0, #7
+ beq _02215C54
+ cmp r0, #9
+ beq _02215D0C
+ b _02215D38
+_02215C20:
+ cmp r0, #0x1a
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
+ bxeq lr
+ b _02215D38
+_02215C34:
+ add r0, r5, #0x500
+ mov r1, #0
+ strh r1, [r0, #0x2a]
+ mov r1, #1
+ strh r1, [r0, #0x28]
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215C54:
+ ldrh r2, [r6, #0xa]
+ add r0, r5, #0x500
+ mov r1, r6
+ strh r2, [r0, #0xe2]
+ ldr r2, [r5, #0x51c]
+ mov r0, #6
+ blx r2
+ ldr r1, _02215FB8 ; =MOD13_02215FC0
+ add r3, r5, #0x500
+ mov r0, #1
+ mov r2, #0
+ strh r0, [r3, #0x2a]
+ bl WM_SetPortCallback
+ cmp r0, #0
+ addne sp, sp, #0x20
+ ldmneia sp!, {r4, r5, r6, r7, r8, lr}
+ bxne lr
+ add r0, r5, #0x500
+ ldrh r0, [r0, #0x2c]
+ add r1, r5, #0x500
+ ldrh r2, [r1, #0x18]
+ cmp r0, #0
+ moveq r0, #1
+ movne r0, #0
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ str r2, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ ldrh r2, [r1, #0x1a]
+ ldr r1, [r5, #0x504]
+ ldr r0, _02215FAC ; =MOD13_02215724
+ add r3, r5, #0x40
+ bl WM_StartMPEx
+ mov r1, r0
+ mov r0, #0xe
+ bl MOD13_02214B08
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215D0C:
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0xa
+ blx r2
+ add r0, r5, #0x500
+ mov r1, #0
+ strh r1, [r0, #0x2a]
+ strh r1, [r0, #0x28]
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215D38:
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0x100
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215D54:
+ ldrh r0, [r6, #4]
+ cmp r0, #0xa
+ beq _02215D84
+ cmp r0, #0xc
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
+ bxeq lr
+ cmp r0, #0xd
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
+ bxeq lr
+ b _02215DC0
+_02215D84:
+ add r0, r5, #0x500
+ mov r1, #1
+ strh r1, [r0, #0x28]
+ bl MOD13_02216984
+ cmp r0, #0
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
+ bxeq lr
+ ldr r2, [r5, #0x51c]
+ mov r0, #0x19
+ mov r1, #0
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215DC0:
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0x100
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215DDC:
+ mov r0, #0
+ strb r0, [r5, #0x50c]
+ ldrh r0, [r6, #2]
+ cmp r0, #0
+ bne _02215E04
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #8
+ blx r2
+ b _02215E30
+_02215E04:
+ cmp r0, #9
+ bne _02215E20
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0x29
+ blx r2
+ b _02215E30
+_02215E20:
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0x12
+ blx r2
+_02215E30:
+ ldr r2, [r5, #0x51c]
+ mov r0, #0x19
+ mov r1, #0
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215E4C:
+ ldrh r0, [r6, #2]
+ cmp r0, #0
+ beq _02215E80
+ add r0, r5, #0x500
+ mov r1, #0
+ strh r1, [r0, #0x26]
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0x100
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215E80:
+ add r0, r5, #0x500
+ mov r2, #0
+ strh r2, [r0, #0x2a]
+ ldr r1, [r1]
+ ldr r0, _02215FAC ; =MOD13_02215724
+ add r1, r1, #0x500
+ strh r2, [r1, #0x28]
+ bl WM_End
+ mov r1, r0
+ mov r0, #2
+ bl MOD13_02214B08
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215EB8:
+ ldrh r0, [r6, #2]
+ cmp r0, #0
+ beq _02215EEC
+ add r0, r5, #0x500
+ mov r1, #0
+ strh r1, [r0, #0x26]
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0x100
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215EEC:
+ mov r2, #0
+ ldr r0, _02215FBC ; =0x02240AFC
+ strb r2, [r5, #0x50d]
+ ldr r0, [r0]
+ mov r1, r6
+ add r0, r0, #0x1300
+ strh r2, [r0, #0x16]
+ ldr r2, [r5, #0x51c]
+ mov r0, #0x11
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215F20:
+ bl MOD13_02216984
+ cmp r0, #0
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, r5, r6, r7, r8, lr}
+ bxeq lr
+ ldr r2, [r5, #0x51c]
+ mov r0, #0x19
+ mov r1, #0
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215F50:
+ ldrh r0, [r6, #4]
+ cmp r0, #0x16
+ beq _02215F6C
+ add sp, sp, #0x20
+ cmp r0, #0x17
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215F6C:
+ bl OS_Terminate
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+_02215F7C:
+ ldr r2, [r5, #0x51c]
+ mov r1, r6
+ mov r0, #0x100
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, r5, r6, r7, r8, lr}
+ bx lr
+ .align 2, 0
+_02215F98: .word 0x02240AF8
+_02215F9C: .word 0x0223F794
+_02215FA0: .word 0x0223F798
+_02215FA4: .word 0x0223F790
+_02215FA8: .word 0x0223F78C
+_02215FAC: .word MOD13_02215724
+_02215FB0: .word 0x02240B00
+_02215FB4: .word 0x02240AF0
+_02215FB8: .word MOD13_02215FC0
+_02215FBC: .word 0x02240AFC
+
+ arm_func_start MOD13_02215FC0
+MOD13_02215FC0: ; 0x02215FC0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, r0
+ ldrh r0, [r1, #2]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {lr}
+ bxne lr
+ ldrh r0, [r1, #4]
+ cmp r0, #0x15
+ bgt _02216034
+ cmp r0, #0x15
+ bge _02216074
+ cmp r0, #9
+ addgt sp, sp, #4
+ ldmgtia sp!, {lr}
+ bxgt lr
+ cmp r0, #7
+ addlt sp, sp, #4
+ ldmltia sp!, {lr}
+ bxlt lr
+ cmp r0, #7
+ addeq sp, sp, #4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ add sp, sp, #4
+ cmp r0, #9
+ ldmia sp!, {lr}
+ bx lr
+_02216034:
+ cmp r0, #0x1a
+ addgt sp, sp, #4
+ ldmgtia sp!, {lr}
+ bxgt lr
+ cmp r0, #0x19
+ addlt sp, sp, #4
+ ldmltia sp!, {lr}
+ bxlt lr
+ cmp r0, #0x19
+ addeq sp, sp, #4
+ ldmeqia sp!, {lr}
+ bxeq lr
+ add sp, sp, #4
+ cmp r0, #0x1a
+ ldmia sp!, {lr}
+ bx lr
+_02216074:
+ ldr r2, _02216094 ; =0x02240AF8
+ mov r0, #9
+ ldr r2, [r2]
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+ .align 2, 0
+_02216094: .word 0x02240AF8
+
+ arm_func_start MOD13_02216098
+MOD13_02216098: ; 0x02216098
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x20
+ mov r4, r0
+ ldrh r0, [r4]
+ cmp r0, #0x19
+ bgt _02216104
+ cmp r0, #0x19
+ bge _022161F8
+ cmp r0, #0xf
+ addls pc, pc, r0, lsl #2
+ b _022168D8
+_022160C4: ; jump table
+ b _02216124 ; case 0
+ b _02216694 ; case 1
+ b _02216744 ; case 2
+ b _022168D8 ; case 3
+ b _022168D8 ; case 4
+ b _022168D8 ; case 5
+ b _022168D8 ; case 6
+ b _022161BC ; case 7
+ b _02216250 ; case 8
+ b _022168D8 ; case 9
+ b _022168D8 ; case 10
+ b _022168D8 ; case 11
+ b _022168D8 ; case 12
+ b _022167C4 ; case 13
+ b _022164E0 ; case 14
+ b _02216584 ; case 15
+_02216104:
+ cmp r0, #0x1d
+ bgt _02216118
+ cmp r0, #0x1d
+ beq _02216164
+ b _022168D8
+_02216118:
+ cmp r0, #0x80
+ beq _02216804
+ b _022168D8
+_02216124:
+ ldrh r0, [r4, #2]
+ cmp r0, #0
+ beq _02216154
+ ldr r0, _022168FC ; =0x02240AF8
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0x100
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216154:
+ bl MOD13_02216910
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216164:
+ ldrh r0, [r4, #2]
+ cmp r0, #0
+ beq _02216194
+ ldr r0, _022168FC ; =0x02240AF8
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0x100
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216194:
+ ldr r1, _022168FC ; =0x02240AF8
+ ldr r0, _02216900 ; =MOD13_02216098
+ ldr r1, [r1]
+ bl WM_SetParentParameter
+ mov r1, r0
+ mov r0, #7
+ bl MOD13_02214B08
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_022161BC:
+ ldr r0, _022168FC ; =0x02240AF8
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0x15
+ ldr r2, [r2, #0x51c]
+ blx r2
+ ldr r0, _02216900 ; =MOD13_02216098
+ mov r1, #1
+ bl WM_SetBeaconIndication
+ mov r1, r0
+ mov r0, #0x19
+ bl MOD13_02214B08
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_022161F8:
+ ldrh r0, [r4, #2]
+ cmp r0, #0
+ beq _02216228
+ ldr r0, _022168FC ; =0x02240AF8
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0x100
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216228:
+ ldr r1, _02216904 ; =0x0223F7A0
+ ldr r0, _02216900 ; =MOD13_02216098
+ ldr r1, [r1]
+ bl FUN_020D9564
+ mov r1, r0
+ mov r0, #8
+ bl MOD13_02214B08
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216250:
+ ldrh r0, [r4, #2]
+ cmp r0, #0
+ beq _02216280
+ ldr r0, _022168FC ; =0x02240AF8
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0x100
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216280:
+ ldrh r0, [r4, #8]
+ cmp r0, #7
+ bgt _022162B8
+ cmp r0, #7
+ bge _0221630C
+ cmp r0, #2
+ bgt _022164BC
+ cmp r0, #0
+ blt _022164BC
+ cmp r0, #0
+ beq _022162E0
+ cmp r0, #2
+ beq _02216480
+ b _022164BC
+_022162B8:
+ cmp r0, #9
+ bgt _022162CC
+ cmp r0, #9
+ beq _02216440
+ b _022164BC
+_022162CC:
+ cmp r0, #0x1a
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, lr}
+ bxeq lr
+ b _022164BC
+_022162E0:
+ ldr r1, _022168FC ; =0x02240AF8
+ mov r2, #0
+ ldr r0, [r1]
+ add sp, sp, #0x20
+ add r0, r0, #0x500
+ strh r2, [r0, #0x2a]
+ ldr r0, [r1]
+ add r0, r0, #0x500
+ strh r2, [r0, #0x28]
+ ldmia sp!, {r4, lr}
+ bx lr
+_0221630C:
+ ldr r2, _022168FC ; =0x02240AF8
+ ldr r0, [r2]
+ add r0, r0, #0x500
+ ldrh r1, [r0, #0x26]
+ cmp r1, #1
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, lr}
+ bxeq lr
+ ldrh lr, [r0, #0x2a]
+ ldrh r3, [r4, #0x10]
+ mov ip, #1
+ mov r1, r4
+ orr r3, lr, ip, lsl r3
+ strh r3, [r0, #0x2a]
+ ldr r2, [r2]
+ mov r0, #0
+ ldr r2, [r2, #0x51c]
+ blx r2
+ ldr r1, _022168FC ; =0x02240AF8
+ ldr r0, [r1]
+ add r0, r0, #0x500
+ ldrh r0, [r0, #0x28]
+ cmp r0, #0
+ bne _02216408
+ ldr r0, _02216908 ; =0x02240AFC
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r2, [r0, #0x31c]
+ cmp r2, #0
+ bne _02216408
+ mov r2, #1
+ str r2, [r0, #0x31c]
+ ldr r0, [r1]
+ ldr r1, _022168FC ; =0x02240AF8
+ add r0, r0, #0x500
+ ldrh r0, [r0, #0x2c]
+ ldr ip, [r1]
+ mov r1, #1
+ cmp r0, #0
+ movne r2, #0
+ mov r0, r2, lsl #0x10
+ mov r3, r0, lsr #0x10
+ add r0, ip, #0x500
+ ldrh r4, [r0, #0x18]
+ mov r2, #0
+ str r4, [sp]
+ str r3, [sp, #4]
+ str r2, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldrh r2, [r0, #0x1a]
+ ldr r1, [ip, #0x504]
+ ldr r0, _02216900 ; =MOD13_02216098
+ add r3, ip, #0x40
+ bl WM_StartMPEx
+ mov r1, r0
+ mov r0, #0xe
+ bl MOD13_02214B08
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216408:
+ bl MOD13_02216984
+ cmp r0, #0
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, lr}
+ bxeq lr
+ ldr r1, _022168FC ; =0x02240AF8
+ mov r0, #0x19
+ ldr r2, [r1]
+ mov r1, #0
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216440:
+ ldr r2, _022168FC ; =0x02240AF8
+ ldrh r3, [r4, #0x10]
+ ldr r1, [r2]
+ mov r0, #1
+ add r1, r1, #0x500
+ ldrh ip, [r1, #0x2a]
+ mvn r3, r0, lsl r3
+ and r3, ip, r3
+ strh r3, [r1, #0x2a]
+ ldr r2, [r2]
+ mov r1, r4
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216480:
+ ldr r0, _022168FC ; =0x02240AF8
+ ldr r1, [r0]
+ add r0, r1, #0x500
+ ldrh r0, [r0, #0x26]
+ cmp r0, #1
+ addeq sp, sp, #0x20
+ ldmeqia sp!, {r4, lr}
+ bxeq lr
+ ldr r2, [r1, #0x51c]
+ mov r1, r4
+ mov r0, #0x1c
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_022164BC:
+ ldr r0, _022168FC ; =0x02240AF8
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0x100
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_022164E0:
+ ldr r0, _02216908 ; =0x02240AFC
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ str r1, [r0, #0x31c]
+ ldrh r0, [r4, #4]
+ cmp r0, #0xa
+ beq _0221650C
+ cmp r0, #0xb
+ beq _0221653C
+ b _02216560
+_0221650C:
+ ldr r3, _022168FC ; =0x02240AF8
+ mov r4, #1
+ ldr r2, [r3]
+ mov r0, #0x19
+ add r2, r2, #0x500
+ strh r4, [r2, #0x28]
+ ldr r2, [r3]
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_0221653C:
+ ldr r0, _022168FC ; =0x02240AF8
+ ldr r1, [r4, #8]
+ ldr r2, [r0]
+ mov r0, #3
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216560:
+ ldr r0, _022168FC ; =0x02240AF8
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0x100
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216584:
+ ldr r0, _02216908 ; =0x02240AFC
+ ldr r1, [r0]
+ add r0, r1, #0x7000
+ ldr r0, [r0, #0x4c8]
+ cmp r0, #0
+ beq _022165E0
+ mov r3, #0
+ mov r2, r3
+_022165A4:
+ add r0, r1, r2, lsl #2
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x4e8]
+ cmp r0, #0
+ beq _022165C4
+ add r3, r3, #1
+ cmp r3, #2
+ bhs _022165D0
+_022165C4:
+ add r2, r2, #1
+ cmp r2, #0xf
+ blo _022165A4
+_022165D0:
+ cmp r3, #1
+ bne _022165E0
+ ldr r0, _0221690C ; =0x000032C8
+ bl OS_SpinWait
+_022165E0:
+ ldr r0, _022168FC ; =0x02240AF8
+ mov r2, #0
+ ldr r1, [r0]
+ strb r2, [r1, #0x50c]
+ ldrh r1, [r4, #2]
+ cmp r1, #0
+ bne _02216634
+ ldr r0, [r0]
+ mov r1, r4
+ ldr r2, [r0, #0x51c]
+ mov r0, #2
+ blx r2
+ ldr r1, _022168FC ; =0x02240AF8
+ mov r0, #0x19
+ ldr r2, [r1]
+ mov r1, #0
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216634:
+ cmp r1, #0xa
+ bne _0221665C
+ ldr r0, [r0]
+ mov r1, r4
+ ldr r2, [r0, #0x51c]
+ mov r0, #0x2a
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_0221665C:
+ ldr r0, [r0]
+ mov r1, r4
+ ldr r2, [r0, #0x51c]
+ mov r0, #0x13
+ blx r2
+ ldr r1, _022168FC ; =0x02240AF8
+ mov r0, #0x19
+ ldr r2, [r1]
+ mov r1, #0
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216694:
+ ldr r0, _02216908 ; =0x02240AFC
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x320]
+ cmp r0, #0
+ bne _0221672C
+ ldrh r0, [r4, #2]
+ cmp r0, #0
+ beq _022166EC
+ ldr r2, _022168FC ; =0x02240AF8
+ mov r3, #0
+ ldr r0, [r2]
+ mov r1, r4
+ add r0, r0, #0x500
+ strh r3, [r0, #0x26]
+ ldr r2, [r2]
+ mov r0, #0x100
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_022166EC:
+ ldr r2, _022168FC ; =0x02240AF8
+ mov r3, #0
+ ldr r1, [r2]
+ ldr r0, _02216900 ; =MOD13_02216098
+ add r1, r1, #0x500
+ strh r3, [r1, #0x2a]
+ ldr r1, [r2]
+ add r1, r1, #0x500
+ strh r3, [r1, #0x28]
+ bl WM_End
+ mov r1, r0
+ mov r0, #2
+ bl MOD13_02214B08
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_0221672C:
+ mov r1, #0
+ mov r2, r1
+ mov r0, #1
+ bl WM_SetPortCallback
+ mov r0, #0
+ bl WM_SetIndCallback
+_02216744:
+ ldrh r0, [r4, #2]
+ cmp r0, #0
+ beq _02216784
+ ldr r2, _022168FC ; =0x02240AF8
+ mov r3, #0
+ ldr r0, [r2]
+ mov r1, r4
+ add r0, r0, #0x500
+ strh r3, [r0, #0x26]
+ ldr r2, [r2]
+ mov r0, #0x100
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216784:
+ ldr r2, _022168FC ; =0x02240AF8
+ mov r3, #0
+ ldr r1, [r2]
+ ldr r0, _02216908 ; =0x02240AFC
+ strb r3, [r1, #0x50d]
+ ldr r0, [r0]
+ mov r1, r4
+ add r0, r0, #0x1300
+ strh r3, [r0, #0x16]
+ ldr r2, [r2]
+ mov r0, #0x11
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_022167C4:
+ ldrh r0, [r4, #2]
+ cmp r0, #0
+ addne sp, sp, #0x20
+ ldmneia sp!, {r4, lr}
+ bxne lr
+ ldr r0, _022168FC ; =0x02240AF8
+ ldrh r1, [r4, #0xa]
+ ldr r0, [r0]
+ add sp, sp, #0x20
+ add r0, r0, #0x500
+ ldrh r2, [r0, #0x2a]
+ mvn r1, r1
+ and r1, r2, r1
+ strh r1, [r0, #0x2a]
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216804:
+ ldrh r0, [r4, #4]
+ sub r0, r0, #0x10
+ cmp r0, #7
+ addls pc, pc, r0, lsl #2
+ b _022168F0
+_02216818: ; jump table
+ b _02216838 ; case 0
+ b _0221685C ; case 1
+ b _02216880 ; case 2
+ b _022168A4 ; case 3
+ b _022168F0 ; case 4
+ b _022168F0 ; case 5
+ b _022168C8 ; case 6
+ b _022168F0 ; case 7
+_02216838:
+ ldr r0, _022168FC ; =0x02240AF8
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0x1d
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_0221685C:
+ ldr r0, _022168FC ; =0x02240AF8
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0x1f
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_02216880:
+ ldr r0, _022168FC ; =0x02240AF8
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0x20
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_022168A4:
+ ldr r0, _022168FC ; =0x02240AF8
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0x21
+ ldr r2, [r2, #0x51c]
+ blx r2
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_022168C8:
+ bl OS_Terminate
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+_022168D8:
+ ldr r0, _022168FC ; =0x02240AF8
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0x100
+ ldr r2, [r2, #0x51c]
+ blx r2
+_022168F0:
+ add sp, sp, #0x20
+ ldmia sp!, {r4, lr}
+ bx lr
+ .align 2, 0
+_022168FC: .word 0x02240AF8
+_02216900: .word MOD13_02216098
+_02216904: .word 0x0223F7A0
+_02216908: .word 0x02240AFC
+_0221690C: .word 0x000032C8
+
+ arm_func_start MOD13_02216910
+MOD13_02216910: ; 0x02216910
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02216970 ; =MOD13_02216098
+ bl WM_SetIndCallback
+ mov r1, r0
+ mov r0, #0x80
+ bl MOD13_02214B08
+ ldr r0, _02216974 ; =0x0223F794
+ ldr r1, _02216978 ; =0x0223F798
+ ldrh r3, [r0]
+ ldr r2, _0221697C ; =0x0223F790
+ ldr r0, _02216980 ; =0x0223F78C
+ str r3, [sp]
+ ldrh r1, [r1]
+ ldrh r2, [r2]
+ ldrh r3, [r0]
+ ldr r0, _02216970 ; =MOD13_02216098
+ bl WM_SetLifeTime
+ mov r1, r0
+ mov r0, #0x1d
+ bl MOD13_02214B08
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+ .align 2, 0
+_02216970: .word MOD13_02216098
+_02216974: .word 0x0223F794
+_02216978: .word 0x0223F798
+_0221697C: .word 0x0223F790
+_02216980: .word 0x0223F78C
+
+ arm_func_start MOD13_02216984
+MOD13_02216984: ; 0x02216984
+ ldr r1, _022169E8 ; =0x02240AF8
+ mov r0, #0
+ ldr r2, [r1]
+ mov ip, r0
+ add r1, r2, #0x500
+ ldrh r1, [r1, #0x28]
+ mov r3, r0
+ cmp r1, #1
+ bne _022169B4
+ ldrb r1, [r2, #0x50c]
+ cmp r1, #0
+ moveq r3, #1
+_022169B4:
+ cmp r3, #0
+ beq _022169CC
+ add r1, r2, #0x500
+ ldrh r1, [r1, #0x26]
+ cmp r1, #0
+ moveq ip, #1
+_022169CC:
+ cmp ip, #0
+ bxeq lr
+ add r1, r2, #0x500
+ ldrh r1, [r1, #0x2a]
+ cmp r1, #0
+ movne r0, #1
+ bx lr
+ .align 2, 0
+_022169E8: .word 0x02240AF8
+
+ arm_func_start MOD13_022169EC
+MOD13_022169EC: ; 0x022169EC
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl WM_GetAllowedChannel
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, lr}
+ bxeq lr
+ ldrh r3, [r4, #4]
+ mov ip, #0
+ mov lr, r3
+ mov r2, #1
+_02216A18:
+ sub r1, lr, #1
+ mov r1, r2, lsl r1
+ ands r1, r0, r1
+ beq _02216A34
+ cmp r3, lr
+ strneh lr, [r4, #4]
+ bne _02216A5C
+_02216A34:
+ add r1, ip, #1
+ mov r1, r1, lsl #0x10
+ cmp lr, #0x10
+ mov ip, r1, lsr #0x10
+ moveq r1, r2
+ addne r1, lr, #1
+ mov r1, r1, lsl #0x10
+ cmp ip, #0x10
+ mov lr, r1, lsr #0x10
+ blo _02216A18
+_02216A5C:
+ mov r0, #1
+ ldmia sp!, {r4, lr}
+ bx lr
+
+ arm_func_start MOD13_02216A68
+MOD13_02216A68: ; 0x02216A68
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ mov sb, r0
+ mov r8, r1
+ mov r7, r2
+ mov r6, r3
+ mov r5, #0
+ bl OS_DisableInterrupts
+ add r2, sb, #0x30
+ add r1, sb, #0x70
+ mov r4, r0
+ cmp r2, r1
+ bhs _02216AF4
+_02216A9C:
+ ldr r0, [r2, #0xc]
+ cmp r0, #2
+ blo _02216AE8
+ ldr r0, [r2]
+ subs r0, r8, r0
+ bmi _02216AE8
+ ldr r3, [r2, #4]
+ add ip, r0, r6
+ cmp ip, r3
+ bhi _02216AE8
+ ldr r3, [r2, #8]
+ mov r1, r7
+ mov r2, r6
+ add r0, r3, r0
+ bl MI_CpuCopy8
+ mov r0, #0
+ str r0, [sb]
+ mov r5, #1
+ b _02216AF4
+_02216AE8:
+ add r2, r2, #0x10
+ cmp r2, r1
+ blo _02216A9C
+_02216AF4:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ mov r0, r5
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
+ bx lr
+
+ arm_func_start MOD13_02216B0C
+MOD13_02216B0C: ; 0x02216B0C
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ mov sb, r1
+ mov r8, r2
+ mov r7, r3
+ bl OS_DisableInterrupts
+ mov r6, r0
+ add r5, r4, #0x30
+ add r4, r4, #0x70
+_02216B34:
+ cmp r5, r4
+ blo _02216B40
+ bl OS_Terminate
+_02216B40:
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bne _02216B64
+ str sb, [r5]
+ str r8, [r5, #4]
+ ldr r0, [sp, #0x20]
+ str r7, [r5, #8]
+ str r0, [r5, #0xc]
+ b _02216B6C
+_02216B64:
+ add r5, r5, #0x10
+ b _02216B34
+_02216B6C:
+ mov r0, r6
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
+ bx lr
+
+ arm_func_start MOD13_02216B80
+MOD13_02216B80: ; 0x02216B80
+ ldr ip, _02216B90 ; =0x020CE34C
+ mov r1, #0
+ mov r2, #0x70
+ bx ip
+ .align 2, 0
+_02216B90: .word 0x020CE34C
+
+ arm_func_start MOD13_02216B94
+MOD13_02216B94: ; 0x02216B94
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ bl OS_DisableInterrupts
+ mov r4, r0
+ bl MOD13_02216DA4
+ cmp r0, #0
+ beq _02216BD0
+ ldr r0, _02216BE4 ; =0x02240B20
+ mov r1, #0
+ ldr r0, [r0]
+ mov r2, r5
+ mov r3, r1
+ add r0, r0, #0xc4
+ bl MOD13_02216BE8
+_02216BD0:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, lr}
+ bx lr
+ .align 2, 0
+_02216BE4: .word 0x02240B20
+
+ arm_func_start MOD13_02216BE8
+MOD13_02216BE8: ; 0x02216BE8
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ ldr r4, _02216D74 ; =0x02240B20
+ mov sb, r0
+ mov r8, r1
+ mov r7, r2
+ mov r6, r3
+ ldr r5, [r4]
+ bl MOD13_02216DA4
+ cmp r0, #0
+ bne _02216C18
+ bl OS_Terminate
+_02216C18:
+ ldr r0, [sb, #4]
+ mov r0, r0, lsl #0x1f
+ movs r0, r0, lsr #0x1f
+ beq _02216C2C
+ bl OS_Terminate
+_02216C2C:
+ cmp r6, #0x1f
+ bls _02216C78
+ mov r0, r5
+ bl OS_GetThreadPriority
+ cmp r6, #0x20
+ bne _02216C54
+ cmp r0, #0
+ subne r6, r0, #1
+ moveq r6, #0
+ b _02216C78
+_02216C54:
+ cmp r6, #0x21
+ bne _02216C6C
+ cmp r0, #0x1f
+ addlo r6, r0, #1
+ movhs r6, #0x1f
+ b _02216C78
+_02216C6C:
+ cmp r6, #0x22
+ moveq r6, r0
+ movne r6, #0x1f
+_02216C78:
+ bl OS_DisableInterrupts
+ ldr r2, [sb, #4]
+ bic r1, r6, #0x80000000
+ bic r2, r2, #1
+ orr r2, r2, #1
+ str r2, [sb, #4]
+ ldr r2, [sb, #4]
+ mov r4, r0
+ and r0, r2, #1
+ orr r0, r0, r1, lsl #1
+ str r0, [sb, #4]
+ str r8, [sb, #8]
+ str r7, [sb, #0xc]
+ ldr r0, [r5, #0xc0]
+ cmp r0, #0
+ bne _02216CDC
+ add r0, r5, #0xc4
+ cmp sb, r0
+ ldreq r0, _02216D74 ; =0x02240B20
+ moveq r1, #0
+ streq r1, [r0]
+ mov r0, r5
+ str sb, [r5, #0xc0]
+ bl OS_WakeupThreadDirect
+ b _02216D60
+_02216CDC:
+ add r0, r5, #0xc4
+ cmp sb, r0
+ ldr r2, [r5, #0xc0]
+ bne _02216D1C
+ ldr r0, [r2]
+ cmp r0, #0
+ beq _02216D08
+_02216CF8:
+ mov r2, r0
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02216CF8
+_02216D08:
+ ldr r0, _02216D74 ; =0x02240B20
+ str sb, [r2]
+ mov r1, #0
+ str r1, [r0]
+ b _02216D60
+_02216D1C:
+ ldr r0, [r2, #4]
+ mov r0, r0, lsr #1
+ cmp r0, r6
+ bls _02216D3C
+ str sb, [r5, #0xc0]
+ str r2, [sb]
+ b _02216D60
+_02216D38:
+ mov r2, r1
+_02216D3C:
+ ldr r1, [r2]
+ cmp r1, #0
+ beq _02216D58
+ ldr r0, [r1, #4]
+ mov r0, r0, lsr #1
+ cmp r0, r6
+ bls _02216D38
+_02216D58:
+ str r1, [sb]
+ str sb, [r2]
+_02216D60:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
+ bx lr
+ .align 2, 0
+_02216D74: .word 0x02240B20
+
+ arm_func_start MOD13_02216D78
+MOD13_02216D78: ; 0x02216D78
+ ldr r0, [r0, #4]
+ mov r0, r0, lsl #0x1f
+ movs r0, r0, lsr #0x1f
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+
+ arm_func_start MOD13_02216D90
+MOD13_02216D90: ; 0x02216D90
+ ldr ip, _02216DA0 ; =0x020CE34C
+ mov r1, #0
+ mov r2, #0x20
+ bx ip
+ .align 2, 0
+_02216DA0: .word 0x020CE34C
+
+ arm_func_start MOD13_02216DA4
+MOD13_02216DA4: ; 0x02216DA4
+ ldr r0, _02216DBC ; =0x02240B20
+ ldr r0, [r0]
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_02216DBC: .word 0x02240B20
+
+ arm_func_start MOD13_02216DC0
+MOD13_02216DC0: ; 0x02216DC0
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #8
+ mov r5, r0
+ mov r6, r1
+ bl OS_DisableInterrupts
+ ldr r1, _02216E40 ; =0x02240B20
+ mov r4, r0
+ ldr r0, [r1]
+ cmp r0, #0
+ bne _02216E2C
+ add r0, r5, #0xc4
+ str r5, [r1]
+ bl MOD13_02216D90
+ sub r0, r6, #0xe4
+ mov lr, #0
+ str lr, [r5, #0xc0]
+ bic ip, r0, #3
+ add r3, r5, #0xe4
+ str ip, [sp]
+ ldr r1, _02216E44 ; =MOD13_02216E48
+ mov r0, r5
+ mov r2, r5
+ add r3, r3, ip
+ str lr, [sp, #4]
+ bl OS_CreateThread
+ mov r0, r5
+ bl OS_WakeupThreadDirect
+_02216E2C:
+ mov r0, r4
+ bl OS_RestoreInterrupts
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+ .align 2, 0
+_02216E40: .word 0x02240B20
+_02216E44: .word MOD13_02216E48
+
+ arm_func_start MOD13_02216E48
+MOD13_02216E48: ; 0x02216E48
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ mov r8, r0
+ add sb, r8, #0xc4
+ mov r4, #0
+_02216E5C:
+ bl OS_DisableInterrupts
+ ldr r1, [r8, #0xc0]
+ mov r5, r0
+ cmp r1, #0
+ bne _02216E90
+_02216E70:
+ mov r0, r8
+ mov r1, r4
+ bl OS_SetThreadPriority
+ mov r0, r4
+ bl OS_SleepThread
+ ldr r0, [r8, #0xc0]
+ cmp r0, #0
+ beq _02216E70
+_02216E90:
+ ldr r7, [r8, #0xc0]
+ ldr r1, [r8, #0xc0]
+ mov r0, r8
+ ldr r1, [r1]
+ str r1, [r8, #0xc0]
+ ldr r1, [r7, #4]
+ mov r1, r1, lsr #1
+ bl OS_SetThreadPriority
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ ldr r1, [r7, #8]
+ cmp r1, #0
+ beq _02216ECC
+ mov r0, r7
+ blx r1
+_02216ECC:
+ bl OS_DisableInterrupts
+ mov r6, r0
+ mov r0, r8
+ ldr r5, [r7, #0xc]
+ bl OS_GetThreadPriority
+ ldr r1, [r8, #0xc0]
+ cmp r1, #0
+ moveq r1, r4
+ beq _02216F0C
+ ldr r1, [r8, #0xc0]
+ ldr r1, [r1, #4]
+ cmp r0, r1, lsr #1
+ ldrlo r1, [r8, #0xc0]
+ ldrlo r1, [r1, #4]
+ movlo r1, r1, lsr #1
+ movhs r1, r0
+_02216F0C:
+ cmp r1, r0
+ beq _02216F1C
+ mov r0, r8
+ bl OS_SetThreadPriority
+_02216F1C:
+ str r4, [r7]
+ ldr r0, [r7, #4]
+ cmp r5, #0
+ bic r0, r0, #1
+ str r0, [r7, #4]
+ beq _02216F3C
+ mov r0, r7
+ blx r5
+_02216F3C:
+ cmp r7, sb
+ beq _02216F50
+ mov r0, r6
+ bl OS_RestoreInterrupts
+ b _02216E5C
+_02216F50:
+ bl OS_ExitThread
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, lr}
+ bx lr
+
+ arm_func_start MOD13_02216F60
+MOD13_02216F60: ; 0x02216F60
+ ldr r1, _02216FB8 ; =0x02240B28
+ mov ip, #0
+ ldr r2, [r1, #4]
+ cmp r2, #0
+ ble _02216FB0
+ ldr r1, _02216FBC ; =0x02240B24
+ sub r0, r0, #1
+ ldr r1, [r1]
+ add r0, r1, r0, lsl #2
+ ldr r3, [r0, #0x1e0]
+ mov r1, #1
+_02216F8C:
+ mov r0, r1, lsl ip
+ ands r0, r0, r3
+ moveq r0, #0
+ bxeq lr
+ add r0, ip, #1
+ mov r0, r0, lsl #0x10
+ mov ip, r0, lsr #0x10
+ cmp ip, r2
+ blt _02216F8C
+_02216FB0:
+ mov r0, #1
+ bx lr
+ .align 2, 0
+_02216FB8: .word 0x02240B28
+_02216FBC: .word 0x02240B24
+
+ arm_func_start MOD13_02216FC0
+MOD13_02216FC0: ; 0x02216FC0
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r2, _02217068 ; =0x02240B24
+ mov r7, r1
+ ldr r3, [r2]
+ cmp r3, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, r7, lr}
+ bxeq lr
+ ldr r1, _0221706C ; =0x02240B28
+ ldrb r4, [r0, #2]
+ ldr r2, [r1, #4]
+ cmp r4, r2
+ addgt sp, sp, #4
+ movgt r0, #0
+ ldmgtia sp!, {r4, r5, r6, r7, lr}
+ bxgt lr
+ sub r6, r7, #1
+ ldr r2, [r1]
+ add r1, r3, r6, lsl #5
+ mla r1, r4, r2, r1
+ add r0, r0, #3
+ mov r5, r6, lsl #5
+ bl MI_CpuCopy8
+ ldr r0, _02217068 ; =0x02240B24
+ mov r1, #1
+ ldr r2, [r0]
+ mov r0, r7
+ add r3, r2, #0x1e0
+ ldr r2, [r3, r6, lsl #2]
+ orr r1, r2, r1, lsl r4
+ str r1, [r3, r6, lsl #2]
+ bl MOD13_02216F60
+ cmp r0, #0
+ ldrne r0, _02217068 ; =0x02240B24
+ ldrne r0, [r0]
+ addne r0, r0, r5
+ moveq r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, lr}
+ bx lr
+ .align 2, 0
+_02217068: .word 0x02240B24
+_0221706C: .word 0x02240B28
+
+ arm_func_start MOD13_02217070
+MOD13_02217070: ; 0x02217070
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ ldrb r0, [r6]
+ mov r5, r1
+ mov r4, r2
+ strb r0, [r5]
+ ldrb r0, [r5]
+ cmp r0, #7
+ beq _022170A8
+ cmp r0, #8
+ beq _02217114
+ cmp r0, #9
+ beq _02217140
+ b _0221718C
+_022170A8:
+ mov r0, r4
+ bl MOD13_02216F60
+ cmp r0, #0
+ ldrne r0, _022171A4 ; =0x02240B24
+ subne r1, r4, #1
+ ldrne r0, [r0]
+ addne r0, r0, r1, lsl #5
+ ldmneia sp!, {r4, r5, r6, lr}
+ bxne lr
+ ldrb r1, [r6, #1]
+ ldr r0, _022171A8 ; =0x02240B28
+ strb r1, [r5, #2]
+ ldrb r2, [r5, #2]
+ ldr r1, [r0, #4]
+ cmp r2, r1
+ movgt r0, #0
+ ldmgtia sp!, {r4, r5, r6, lr}
+ bxgt lr
+ ldr r2, [r0]
+ add r0, r6, #2
+ add r1, r5, #3
+ bl MI_CpuCopy8
+ mov r0, r5
+ mov r1, r4
+ bl MOD13_02216FC0
+ mov r4, r0
+ b _02217198
+_02217114:
+ ldrb r0, [r6, #1]
+ add r4, r6, #3
+ and r0, r0, #0xff
+ strh r0, [r5, #2]
+ ldrb r0, [r6, #2]
+ ldrh r1, [r5, #2]
+ mov r0, r0, lsl #8
+ and r0, r0, #0xff00
+ orr r0, r1, r0
+ strh r0, [r5, #2]
+ b _02217198
+_02217140:
+ ldrb r0, [r6, #1]
+ add r4, r6, #3
+ ldr r1, _022171A8 ; =0x02240B28
+ and r0, r0, #0xff
+ strh r0, [r5, #2]
+ ldrb r2, [r6, #2]
+ ldrh r3, [r5, #2]
+ mov r0, r4
+ mov r2, r2, lsl #8
+ and r2, r2, #0xff00
+ orr r2, r3, r2
+ strh r2, [r5, #2]
+ ldr r2, [r1]
+ add r1, r5, #4
+ bl MI_CpuCopy8
+ ldr r0, _022171A8 ; =0x02240B28
+ ldr r0, [r0]
+ add r4, r4, r0
+ b _02217198
+_0221718C:
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+_02217198:
+ mov r0, r4
+ ldmia sp!, {r4, r5, r6, lr}
+ bx lr
+ .align 2, 0
+_022171A4: .word 0x02240B24
+_022171A8: .word 0x02240B28
+
+ arm_func_start MOD13_022171AC
+MOD13_022171AC: ; 0x022171AC
+ ldrb r3, [r0]
+ mov r2, r1
+ add r2, r2, #1
+ strb r3, [r1]
+ ldrb r1, [r0]
+ cmp r1, #6
+ addls pc, pc, r1, lsl #2
+ b _02217224
+_022171CC: ; jump table
+ b _02217224 ; case 0
+ b _0221722C ; case 1
+ b _0221722C ; case 2
+ b _0221722C ; case 3
+ b _022171E8 ; case 4
+ b _0221722C ; case 5
+ b _0221722C ; case 6
+_022171E8:
+ ldrh r3, [r0, #2]
+ add r1, r2, #3
+ strb r3, [r2]
+ ldrh r3, [r0, #2]
+ and r3, r3, #0xff00
+ mov r3, r3, asr #8
+ strb r3, [r2, #1]
+ ldrh r3, [r0, #4]
+ strb r3, [r2, #2]
+ ldrh r0, [r0, #4]
+ add r2, r2, #4
+ and r0, r0, #0xff00
+ mov r0, r0, asr #8
+ strb r0, [r1]
+ b _0221722C
+_02217224:
+ mov r0, #0
+ bx lr
+_0221722C:
+ mov r0, r2
+ bx lr
+
+ arm_func_start MOD13_02217234
+MOD13_02217234: ; 0x02217234
+ stmdb sp!, {r4, lr}
+ ldr r1, _0221727C ; =0x02240B24
+ ldr r1, [r1]
+ cmp r1, #0
+ ldmeqia sp!, {r4, lr}
+ bxeq lr
+ sub r4, r0, #1
+ add r0, r1, r4, lsl #5
+ mov r1, #0
+ mov r2, #0x1e
+ bl MI_CpuFill8
+ ldr r0, _0221727C ; =0x02240B24
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, r4, lsl #2
+ str r1, [r0, #0x1e0]
+ ldmia sp!, {r4, lr}
+ bx lr
+ .align 2, 0
+_0221727C: .word 0x02240B24
+
+ arm_func_start MOD13_02217280
+MOD13_02217280: ; 0x02217280
+ ldr r3, _02217298 ; =0x02240B24
+ ldr ip, _0221729C ; =0x020CE34C
+ mov r1, #0
+ mov r2, #0x21c
+ str r0, [r3]
+ bx ip
+ .align 2, 0
+_02217298: .word 0x02240B24
+_0221729C: .word 0x020CE34C
+
+ arm_func_start MOD13_022172A0
+MOD13_022172A0: ; 0x022172A0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, _022172D8 ; =0x02240B28
+ sub r1, r0, #2
+ mov r0, #0x1e
+ str r1, [r2]
+ bl _s32_div_f
+ ldr r1, _022172D8 ; =0x02240B28
+ mov r2, #0x1e
+ str r0, [r1, #4]
+ str r2, [r1, #8]
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ bx lr
+ .align 2, 0
+_022172D8: .word 0x02240B28
+
+ .section .rodata
+ ; 0x0223C420
+ .incbin "baserom.nds", 0x2237C0, 0x24
+
+ .section .data
+ ; 0x0223F780
+ .incbin "baserom.nds", 0x226B20, 0x38
+
+ .section .bss
+ ; 0x02240A40
+ .space 0xF4
diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s
new file mode 100644
index 00000000..41959f32
--- /dev/null
+++ b/arm9/modules/13/asm/module_13_arm2.s
@@ -0,0 +1,35377 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD13_0221E560
+MOD13_0221E560: ; 0x0221E560
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _0221E640 ; =0x02242FE4
+ mov r1, #0x28
+ ldr r0, [r0]
+ ldrb r0, [r0, #9]
+ add r0, r0, #1
+ bl FX_ModS32
+ ldr r2, _0221E640 ; =0x02242FE4
+ mov r1, #5
+ ldr r3, [r2]
+ strb r0, [r3, #9]
+ ldr r0, [r2]
+ ldrb r0, [r0, #9]
+ bl FX_DivS32
+ ldr r2, _0221E640 ; =0x02242FE4
+ add r1, r0, #0x47
+ ldr r2, [r2]
+ mov r0, #0
+ ldr r2, [r2, #4]
+ bl MOD13_02239E8C
+ ldr r3, _0221E640 ; =0x02242FE4
+ ldr lr, _0221E644 ; =0x0223EC6C
+ ldr r0, [r3]
+ ldr r2, _0221E648 ; =0x0223EC70
+ ldr r5, [r0, #4]
+ ldr r1, _0221E64C ; =0xFE00FF00
+ ldrh r4, [r5, #4]
+ ldr r0, _0221E650 ; =0x000001FF
+ bic r4, r4, #0xc00
+ orr r4, r4, #0x400
+ strh r4, [r5, #4]
+ ldr r4, [r3]
+ ldrb r5, [r4, #8]
+ ldr ip, [r4, #4]
+ ldr r4, [ip]
+ ldrb lr, [lr, r5]
+ bic r4, r4, #0xc00
+ str r4, [ip]
+ ldrh r4, [ip, #4]
+ bic r4, r4, #0xf000
+ orr r4, r4, lr, lsl #12
+ strh r4, [ip, #4]
+ ldr r4, [r3]
+ ldrh r3, [r2, #2]
+ ldr r4, [r4, #4]
+ ldrh lr, [r2]
+ ldr ip, [r4]
+ and r2, r3, #0xff
+ and r1, ip, r1
+ and r3, lr, r0
+ orr r0, r1, r2
+ orr r0, r0, r3, lsl #16
+ str r0, [r4]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0221E640: .word 0x02242FE4
+_0221E644: .word 0x0223EC6C
+_0221E648: .word 0x0223EC70
+_0221E64C: .word 0xFE00FF00
+_0221E650: .word 0x000001FF
+
+ arm_func_start MOD13_0221E654
+MOD13_0221E654: ; 0x0221E654
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _0221E690 ; =0x02242FE4
+ mov r0, #1
+ ldr r1, [r1]
+ ldr r1, [r1]
+ bl MOD13_0223C104
+ ldr r0, _0221E690 ; =0x02242FE4
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD13_0223B974
+ ldr r0, _0221E690 ; =0x02242FE4
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0221E690: .word 0x02242FE4
+
+ arm_func_start MOD13_0221E694
+MOD13_0221E694: ; 0x0221E694
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ mov r0, #0xc
+ mov r1, #4
+ bl MOD13_0223AFE0
+ ldr r2, _0221E774 ; =0x02242FE4
+ mov r1, #0x47
+ str r0, [r2]
+ strb r4, [r0, #8]
+ mov r0, #0
+ bl MOD13_02239E54
+ ldr r7, _0221E774 ; =0x02242FE4
+ ldr r8, _0221E778 ; =0x0223EC6C
+ ldr r1, [r7]
+ ldr r6, _0221E77C ; =0x0223EC70
+ str r0, [r1, #4]
+ ldr r0, [r7]
+ ldr lr, _0221E780 ; =0x000001FF
+ ldr r3, [r0, #4]
+ ldr r5, _0221E784 ; =0xFE00FF00
+ ldrh r2, [r3, #4]
+ mov r0, #1
+ ldr r1, _0221E788 ; =MOD13_0221E560
+ bic r2, r2, #0xc00
+ orr r2, r2, #0x400
+ strh r2, [r3, #4]
+ ldr r3, [r7]
+ mov r2, #0
+ ldr ip, [r3, #4]
+ mov r3, #0x78
+ ldr sb, [ip]
+ bic sb, sb, #0xc00
+ str sb, [ip]
+ ldrb r4, [r8, r4]
+ ldrh r8, [ip, #4]
+ bic r8, r8, #0xf000
+ orr r4, r8, r4, lsl #12
+ strh r4, [ip, #4]
+ ldr r4, [r7]
+ ldrh r7, [r6]
+ ldr ip, [r4, #4]
+ ldrh r4, [r6, #2]
+ and r7, r7, lr
+ ldr r6, [ip]
+ and r4, r4, #0xff
+ and r5, r6, r5
+ orr r4, r5, r4
+ orr r4, r4, r7, lsl #16
+ str r4, [ip]
+ bl MOD13_0223C1C4
+ ldr r1, _0221E774 ; =0x02242FE4
+ ldr r1, [r1]
+ str r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_0221E774: .word 0x02242FE4
+_0221E778: .word 0x0223EC6C
+_0221E77C: .word 0x0223EC70
+_0221E780: .word 0x000001FF
+_0221E784: .word 0xFE00FF00
+_0221E788: .word MOD13_0221E560
+
+ arm_func_start MOD13_0221E78C
+MOD13_0221E78C: ; 0x0221E78C
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #4
+ ldr r4, _0221E888 ; =0x02242FE8
+ str r0, [sp]
+ ldr r1, [r4]
+ ldrh r0, [r1, #0x14]
+ add r0, r0, #1
+ strh r0, [r1, #0x14]
+ ldr r1, [r4]
+ ldrh r0, [r1, #0x14]
+ cmp r0, #0x10
+ addlo sp, sp, #4
+ ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldrb r1, [r1, #0x17]
+ ldr r0, _0221E88C ; =0x0223EC7C
+ mov sb, #0
+ ldrb sl, [r0, r1]
+ cmp sl, #0
+ ble _0221E838
+ mov r7, sb
+ mov fp, sb
+ mvn r6, #0
+ mov r5, #1
+_0221E7E8:
+ ldr r0, [r4]
+ ldr r2, _0221E890 ; =0x0223EC8C
+ ldrb r3, [r0, #0x17]
+ ldr r0, [r0, sb, lsl #2]
+ mov r1, r7
+ add r2, r2, r3, lsl #1
+ ldrb r8, [sb, r2]
+ bl MOD13_02239ADC
+ mov r2, r0
+ mov r1, r8
+ mov r0, fp
+ bl MOD13_02239E8C
+ ldr r0, [r4]
+ mov r1, r6
+ ldr r0, [r0, sb, lsl #2]
+ mov r2, r5
+ bl MOD13_02239814
+ add sb, sb, #1
+ cmp sb, sl
+ blt _0221E7E8
+_0221E838:
+ ldr r0, _0221E894 ; =0x0223EC74
+ ldrh r0, [r0, #2]
+ bl MOD13_0221EBD8
+ ldr r1, _0221E888 ; =0x02242FE8
+ mov r0, #0
+ ldr r2, [r1]
+ mvn r3, #0
+ strh r0, [r2, #0x14]
+ ldr r2, [r1]
+ strb r3, [r2, #0x16]
+ ldr r2, [r1]
+ ldr r1, [r2, #0x10]
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r1, [sp]
+ str r0, [r2, #0x10]
+ bl MOD13_0223C110
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_0221E888: .word 0x02242FE8
+_0221E88C: .word 0x0223EC7C
+_0221E890: .word 0x0223EC8C
+_0221E894: .word 0x0223EC74
+
+ arm_func_start MOD13_0221E898
+MOD13_0221E898: ; 0x0221E898
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r1, r0
+ mov r0, #0
+ bl MOD13_0223C110
+ ldr r0, _0221E910 ; =0x02242FE8
+ ldr r0, [r0]
+ ldr r1, [r0, #0x10]
+ cmp r1, #0
+ beq _0221E8C8
+ mov r0, #0
+ bl MOD13_0223C110
+_0221E8C8:
+ ldr r4, _0221E910 ; =0x02242FE8
+ mov r5, #0
+_0221E8D0:
+ ldr r0, [r4]
+ ldr r0, [r0, r5, lsl #2]
+ cmp r0, #0
+ beq _0221E8E4
+ bl MOD13_02239AE8
+_0221E8E4:
+ add r5, r5, #1
+ cmp r5, #2
+ blt _0221E8D0
+ ldr r0, _0221E910 ; =0x02242FE8
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ bl MOD13_02239AE8
+ ldr r0, _0221E910 ; =0x02242FE8
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0221E910: .word 0x02242FE8
+
+ arm_func_start MOD13_0221E914
+MOD13_0221E914: ; 0x0221E914
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _0221E970 ; =0x02242FE8
+ mov r4, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0, #8]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r0, [sp, #4]
+ add r0, r0, #4
+ str r0, [sp, #4]
+ bl MOD13_0221EBD8
+ ldr r0, [sp, #4]
+ cmp r0, #0xc0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, pc}
+ ldr r1, _0221E974 ; =MOD13_0221E898
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0221E970: .word 0x02242FE8
+_0221E974: .word MOD13_0221E898
+
+ arm_func_start MOD13_0221E978
+MOD13_0221E978: ; 0x0221E978
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ sub sp, sp, #8
+ ldr r8, _0221EAE8 ; =0x02242FE8
+ ldr r1, _0221EAEC ; =0x0223EC7C
+ ldr r3, [r8]
+ ldrb r2, [r3, #0x17]
+ ldrb r0, [r3, #0x18]
+ ldrb r7, [r1, r2]
+ cmp r0, #0
+ bne _0221EAD0
+ ldrsb r1, [r3, #0x16]
+ mvn r0, #0
+ cmp r1, r0
+ addne sp, sp, #8
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ cmp r7, #0
+ mov r6, #0
+ ble _0221EAD0
+ ldr r5, _0221EAF0 ; =0x0223EC84
+ ldr r4, _0221EAF4 ; =0x0223EC9C
+ ldr sl, _0221EAF8 ; =0x0223EC78
+ add sb, sp, #0
+_0221E9D0:
+ ldr r0, [r8]
+ mov r1, sl
+ ldrb r0, [r0, #0x17]
+ mov r2, sb
+ add r0, r4, r0, lsl #1
+ ldrb r0, [r6, r0]
+ add r0, r5, r0, lsl #2
+ bl MOD13_0223AB74
+ mov r0, sb
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ beq _0221EAC4
+ ldr r0, _0221EAE8 ; =0x02242FE8
+ ldr r3, [r0]
+ ldr r0, [r3, #0x10]
+ cmp r0, #0
+ bne _0221EAD0
+ ldrb r2, [r3, #0x17]
+ ldr r1, _0221EAFC ; =0x0223EC8C
+ ldr r0, [r3, r6, lsl #2]
+ add r1, r1, r2, lsl #1
+ ldrb r2, [r6, r1]
+ mov r1, #0
+ add r4, r2, #1
+ bl MOD13_02239ADC
+ mov r2, r0
+ mov r1, r4
+ mov r0, #0
+ bl MOD13_02239E8C
+ ldr r0, _0221EAE8 ; =0x02242FE8
+ ldr r1, _0221EAF4 ; =0x0223EC9C
+ ldr r0, [r0]
+ ldr r2, _0221EAF0 ; =0x0223EC84
+ ldrb r4, [r0, #0x17]
+ ldr r3, _0221EB00 ; =0x0223EC86
+ ldr r0, [r0, r6, lsl #2]
+ add r1, r1, r4, lsl #1
+ ldrb r4, [r6, r1]
+ mvn r1, #0
+ mov r4, r4, lsl #2
+ ldrh r2, [r2, r4]
+ ldrh r3, [r3, r4]
+ bl MOD13_02239888
+ ldr r0, _0221EAE8 ; =0x02242FE8
+ mvn r1, #0
+ ldr r0, [r0]
+ mov r2, #1
+ ldr r0, [r0, r6, lsl #2]
+ bl MOD13_02239814
+ mov r0, #0
+ ldr r1, _0221EB04 ; =MOD13_0221E78C
+ mov r2, r0
+ mov r3, #0x6e
+ bl MOD13_0223C1C4
+ ldr r1, _0221EAE8 ; =0x02242FE8
+ add sp, sp, #8
+ ldr r2, [r1]
+ str r0, [r2, #0x10]
+ ldr r0, [r1]
+ strb r6, [r0, #0x16]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_0221EAC4:
+ add r6, r6, #1
+ cmp r6, r7
+ blt _0221E9D0
+_0221EAD0:
+ ldr r0, _0221EAE8 ; =0x02242FE8
+ mvn r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x16]
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_0221EAE8: .word 0x02242FE8
+_0221EAEC: .word 0x0223EC7C
+_0221EAF0: .word 0x0223EC84
+_0221EAF4: .word 0x0223EC9C
+_0221EAF8: .word 0x0223EC78
+_0221EAFC: .word 0x0223EC8C
+_0221EB00: .word 0x0223EC86
+_0221EB04: .word MOD13_0221E78C
+
+ arm_func_start MOD13_0221EB08
+MOD13_0221EB08: ; 0x0221EB08
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _0221EB5C ; =0x02242FE8
+ mvn r3, #0
+ ldr r2, [r1]
+ strb r3, [r2, #0x16]
+ ldr r3, [r1]
+ ldrh r2, [r3, #0x14]
+ add r2, r2, #1
+ strh r2, [r3, #0x14]
+ ldr r3, [r1]
+ ldrh r1, [r3, #0x14]
+ cmp r1, #4
+ addlo sp, sp, #4
+ ldmloia sp!, {pc}
+ ldr r1, _0221EB60 ; =MOD13_0221E978
+ mov r2, #0
+ strh r2, [r3, #0x14]
+ bl MOD13_0223C130
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0221EB5C: .word 0x02242FE8
+_0221EB60: .word MOD13_0221E978
+
+ arm_func_start MOD13_0221EB64
+MOD13_0221EB64: ; 0x0221EB64
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _0221EBCC ; =0x02242FE8
+ mov r4, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0, #8]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r0, [sp, #4]
+ sub r0, r0, #4
+ str r0, [sp, #4]
+ bl MOD13_0221EBD8
+ ldr r0, _0221EBD0 ; =0x0223EC74
+ ldr r1, [sp, #4]
+ ldrh r0, [r0, #2]
+ cmp r1, r0
+ addgt sp, sp, #8
+ ldmgtia sp!, {r4, pc}
+ bl MOD13_0221EBD8
+ ldr r1, _0221EBD4 ; =MOD13_0221EB08
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0221EBCC: .word 0x02242FE8
+_0221EBD0: .word 0x0223EC74
+_0221EBD4: .word MOD13_0221EB08
+
+ arm_func_start MOD13_0221EBD8
+MOD13_0221EBD8: ; 0x0221EBD8
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ ldr r2, _0221EC70 ; =0x02242FE8
+ ldr r3, _0221EC74 ; =0x0223EC7C
+ ldr r6, [r2]
+ ldr r2, _0221EC78 ; =0x0223EC84
+ ldrb r4, [r6, #0x17]
+ ldrh r2, [r2, #2]
+ ldr r1, _0221EC7C ; =0x0223EC74
+ ldrb r8, [r3, r4]
+ mov r3, r0
+ add r5, r3, r2
+ ldrh r4, [r1, #2]
+ ldrh r2, [r1]
+ ldr r0, [r6, #8]
+ mvn r1, #0
+ sub r7, r5, r4
+ bl MOD13_02239888
+ mov r6, #0
+ cmp r8, #0
+ ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ ldr sb, _0221EC70 ; =0x02242FE8
+ ldr r4, _0221EC80 ; =0x0223EC9C
+ ldr sl, _0221EC78 ; =0x0223EC84
+ mvn r5, #0
+_0221EC38:
+ ldr r0, [sb]
+ mov r1, r5
+ ldrb r2, [r0, #0x17]
+ ldr r0, [r0, r6, lsl #2]
+ mov r3, r7
+ add r2, r4, r2, lsl #1
+ ldrb r2, [r6, r2]
+ mov r2, r2, lsl #2
+ ldrh r2, [sl, r2]
+ bl MOD13_02239888
+ add r6, r6, #1
+ cmp r6, r8
+ blt _0221EC38
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_0221EC70: .word 0x02242FE8
+_0221EC74: .word 0x0223EC7C
+_0221EC78: .word 0x0223EC84
+_0221EC7C: .word 0x0223EC74
+_0221EC80: .word 0x0223EC9C
+
+ arm_func_start MOD13_0221EC84
+MOD13_0221EC84: ; 0x0221EC84
+ ldr r0, _0221EC98 ; =0x02242FE8
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x18]
+ bx lr
+ .align 2, 0
+_0221EC98: .word 0x02242FE8
+
+ arm_func_start MOD13_0221EC9C
+MOD13_0221EC9C: ; 0x0221EC9C
+ ldr r0, _0221ECB0 ; =0x02242FE8
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x18]
+ bx lr
+ .align 2, 0
+_0221ECB0: .word 0x02242FE8
+
+ arm_func_start MOD13_0221ECB4
+MOD13_0221ECB4: ; 0x0221ECB4
+ ldr r0, _0221ECDC ; =0x02242FE8
+ ldr r0, [r0]
+ cmp r0, #0
+ moveq r0, #1
+ bxeq lr
+ ldrb r0, [r0, #0x19]
+ cmp r0, #0
+ moveq r0, #1
+ movne r0, #0
+ bx lr
+ .align 2, 0
+_0221ECDC: .word 0x02242FE8
+
+ arm_func_start MOD13_0221ECE0
+MOD13_0221ECE0: ; 0x0221ECE0
+ ldr r1, _0221ECF0 ; =0x02242FE8
+ ldr r1, [r1]
+ strb r0, [r1, #0x16]
+ bx lr
+ .align 2, 0
+_0221ECF0: .word 0x02242FE8
+
+ arm_func_start MOD13_0221ECF4
+MOD13_0221ECF4: ; 0x0221ECF4
+ ldr r2, _0221ED10 ; =0x02242FE8
+ mvn r1, #0
+ ldr r3, [r2]
+ ldrsb r2, [r3, #0x16]
+ cmp r2, r1
+ streqb r0, [r3, #0x16]
+ bx lr
+ .align 2, 0
+_0221ED10: .word 0x02242FE8
+
+ arm_func_start MOD13_0221ED14
+MOD13_0221ED14: ; 0x0221ED14
+ ldr r0, _0221ED24 ; =0x02242FE8
+ ldr r0, [r0]
+ ldrsb r0, [r0, #0x16]
+ bx lr
+ .align 2, 0
+_0221ED24: .word 0x02242FE8
+
+ arm_func_start MOD13_0221ED28
+MOD13_0221ED28: ; 0x0221ED28
+ ldr r0, _0221ED4C ; =0x02242FE8
+ mov r3, #1
+ ldr r2, [r0]
+ ldr ip, _0221ED50 ; =MOD13_0223C130
+ strb r3, [r2, #0x19]
+ ldr r0, [r0]
+ ldr r1, _0221ED54 ; =MOD13_0221E914
+ ldr r0, [r0, #0xc]
+ bx ip
+ .align 2, 0
+_0221ED4C: .word 0x02242FE8
+_0221ED50: .word MOD13_0223C130
+_0221ED54: .word MOD13_0221E914
+
+ arm_func_start MOD13_0221ED58
+MOD13_0221ED58: ; 0x0221ED58
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ ldr r2, _0221EE44 ; =0x0223EC7C
+ mov r4, r0
+ mov r0, #0x1c
+ mov r1, #4
+ ldrb r8, [r2, r4]
+ bl MOD13_0223AFE0
+ ldr sb, _0221EE48 ; =0x02242FE8
+ mvn r1, #1
+ str r0, [sb]
+ strb r1, [r0, #0x16]
+ ldr r0, [sb]
+ cmp r8, #0
+ strb r4, [r0, #0x17]
+ mov r7, #0
+ ble _0221EDE8
+ ldr r0, _0221EE4C ; =0x0223EC8C
+ add r6, r0, r4, lsl #1
+ mov r5, r7
+ mov r4, #1
+ mvn sl, #0
+_0221EDAC:
+ ldrb r1, [r6]
+ mov r0, r5
+ mov r2, r4
+ bl MOD13_02239E0C
+ ldr r2, [sb]
+ mov r1, sl
+ str r0, [r2, r7, lsl #2]
+ ldr r0, [sb]
+ mov r2, r4
+ ldr r0, [r0, r7, lsl #2]
+ bl MOD13_02239814
+ add r7, r7, #1
+ cmp r7, r8
+ add r6, r6, #1
+ blt _0221EDAC
+_0221EDE8:
+ mov r1, #1
+ mov r2, r1
+ mov r0, #0
+ bl MOD13_02239E0C
+ ldr r3, _0221EE48 ; =0x02242FE8
+ mvn r1, #0
+ ldr r4, [r3]
+ mov r2, #1
+ str r0, [r4, #8]
+ ldr r0, [r3]
+ ldr r0, [r0, #8]
+ bl MOD13_02239814
+ mov r0, #0xc0
+ bl MOD13_0221EBD8
+ mov r0, #0
+ ldr r1, _0221EE50 ; =MOD13_0221EB64
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _0221EE48 ; =0x02242FE8
+ ldr r1, [r1]
+ str r0, [r1, #0xc]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_0221EE44: .word 0x0223EC7C
+_0221EE48: .word 0x02242FE8
+_0221EE4C: .word 0x0223EC8C
+_0221EE50: .word MOD13_0221EB64
+
+ arm_func_start MOD13_0221EE54
+MOD13_0221EE54: ; 0x0221EE54
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0221EE94 ; =0x02242FEC
+ ldrb r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ mov r0, #1
+ bl MOD13_0223A65C
+ ldr r0, _0221EE94 ; =0x02242FEC
+ mov r1, #0
+ strb r1, [r0]
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0221EE94: .word 0x02242FEC
+
+ arm_func_start MOD13_0221EE98
+MOD13_0221EE98: ; 0x0221EE98
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0x14
+ ldr r3, _0221EF58 ; =0x02242FEC
+ mov r7, r0
+ ldrb r0, [r3]
+ mov r6, r1
+ mov r5, r2
+ cmp r0, #0
+ addne sp, sp, #0x14
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _0221EF5C ; =0x0223F934
+ ldr r1, _0221EF60 ; =0x020C91C4
+ bl MOD13_0221F174
+ ldr r3, _0221EF64 ; =0x01920000
+ ldr r2, _0221EF68 ; =0x04001010
+ mov r0, #1
+ mov r1, #0
+ str r3, [r2]
+ bl MOD13_0223A7F0
+ ldr r1, _0221EF6C ; =0x0224307C
+ mov r4, r0
+ ldr r0, [r1]
+ mov r1, r7
+ mov r2, r6
+ mov r3, r5
+ bl MOD13_0222352C
+ mov r5, r0
+ bl MOD13_0221EF88
+ ldr r3, _0221EF70 ; =0x0223ECAC
+ mov r1, #2
+ ldrh r2, [r3, #6]
+ str r2, [sp]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r5, [sp, #0xc]
+ mov r0, r4
+ ldrh r1, [r3]
+ ldrh r2, [r3, #2]
+ ldrh r3, [r3, #4]
+ bl MOD13_0223A4F0
+ mov r0, r4
+ bl MOD13_0223A410
+ mov r0, #1
+ ldr r1, _0221EF58 ; =0x02242FEC
+ strb r0, [r1]
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221EF58: .word 0x02242FEC
+_0221EF5C: .word 0x0223F934
+_0221EF60: .word 0x020C91C4
+_0221EF64: .word 0x01920000
+_0221EF68: .word 0x04001010
+_0221EF6C: .word 0x0224307C
+_0221EF70: .word 0x0223ECAC
+
+ arm_func_start MOD13_0221EF74
+MOD13_0221EF74: ; 0x0221EF74
+ ldr r0, _0221EF84 ; =0x02242FEC
+ mov r1, #0
+ strb r1, [r0]
+ bx lr
+ .align 2, 0
+_0221EF84: .word 0x02242FEC
+
+ arm_func_start MOD13_0221EF88
+MOD13_0221EF88: ; 0x0221EF88
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02222F34
+ ldr r1, _0221EFA4 ; =0x0223ECCC
+ ldr r0, [r1, r0, lsl #2]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0221EFA4: .word 0x0223ECCC
+
+ arm_func_start MOD13_0221EFA8
+MOD13_0221EFA8: ; 0x0221EFA8
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x10
+ mov r5, r0
+ mov r0, #0
+ mov r6, r1
+ mov r1, r0
+ bl MOD13_0223A7F0
+ ldr r1, _0221F05C ; =0x0224307C
+ mov r4, r0
+ ldr r0, [r1]
+ mov r1, r6
+ bl MOD13_02223568
+ mov r6, r0
+ bl MOD13_0221EF88
+ ldr r3, _0221F060 ; =0x0223ECC4
+ mov r1, #2
+ ldrh r2, [r3, #6]
+ str r2, [sp]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r6, [sp, #0xc]
+ ldrh r1, [r3]
+ ldrh r2, [r3, #2]
+ ldrh r3, [r3, #4]
+ mov r0, r4
+ bl MOD13_0223A4F0
+ bl MOD13_02222F34
+ mov r6, r0
+ bl MOD13_02222F34
+ ldr r1, _0221F064 ; =0x00000209
+ mov r3, r0, lsl #2
+ str r1, [sp]
+ ldr r1, _0221F068 ; =0x0223ECE4
+ ldr r2, _0221F06C ; =0x0223ECE6
+ str r5, [sp, #4]
+ mov ip, r6, lsl #2
+ ldrh r2, [r2, r3]
+ ldrh r1, [r1, ip]
+ mov r0, r4
+ mov r3, #2
+ bl MOD13_0223A634
+ mov r0, r4
+ bl MOD13_0223A410
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_0221F05C: .word 0x0224307C
+_0221F060: .word 0x0223ECC4
+_0221F064: .word 0x00000209
+_0221F068: .word 0x0223ECE4
+_0221F06C: .word 0x0223ECE6
+
+ arm_func_start MOD13_0221F070
+MOD13_0221F070: ; 0x0221F070
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x14
+ mov r4, r0
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_0223A7F0
+ ldr r1, _0221F0E4 ; =0x0224307C
+ mov r5, r0
+ ldr r0, [r1]
+ mov r1, r4
+ bl MOD13_02223568
+ mov r4, r0
+ bl MOD13_0221EF88
+ ldr r3, _0221F0E8 ; =0x0223ECBC
+ mov r1, #2
+ ldrh r2, [r3, #6]
+ str r2, [sp]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r4, [sp, #0xc]
+ mov r0, r5
+ ldrh r1, [r3]
+ ldrh r2, [r3, #2]
+ ldrh r3, [r3, #4]
+ bl MOD13_0223A4F0
+ mov r0, r5
+ bl MOD13_0223A410
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0221F0E4: .word 0x0224307C
+_0221F0E8: .word 0x0223ECBC
+
+ arm_func_start MOD13_0221F0EC
+MOD13_0221F0EC: ; 0x0221F0EC
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ add r1, sp, #0
+ mov r0, #0
+ bl MOD13_02222F80
+ ldr r0, [sp]
+ cmp r0, #1
+ addne sp, sp, #8
+ ldmneia sp!, {r4, pc}
+ mov r0, r4
+ bl MOD13_0221ED58
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+
+ arm_func_start MOD13_0221F124
+MOD13_0221F124: ; 0x0221F124
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ add r0, sp, #0
+ mov r1, #0
+ bl MOD13_02222F80
+ ldr r0, [sp]
+ cmp r0, #1
+ bne _0221F158
+ mov r0, r4
+ bl MOD13_02234DC0
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_0221F158:
+ cmp r0, #2
+ addne sp, sp, #8
+ ldmneia sp!, {r4, pc}
+ mov r0, r4
+ bl MOD13_02234820
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+
+ arm_func_start MOD13_0221F174
+MOD13_0221F174: ; 0x0221F174
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r1
+ bl MOD13_0221F1BC
+ add r1, sp, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ ldr r1, [sp]
+ mov r4, r0
+ bl DC_FlushRange
+ ldr r2, [sp]
+ mov r0, r4
+ mov r1, #0
+ blx r5
+ mov r0, r4
+ bl MOD13_0223939C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+
+ arm_func_start MOD13_0221F1BC
+MOD13_0221F1BC: ; 0x0221F1BC
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r0, _0221F214 ; =0x02242FF0
+ mov r1, r4
+ mov r2, #0x3f
+ bl strncpy
+ ldrb r0, [r4, #5]
+ cmp r0, #0x78
+ ldreq r0, _0221F214 ; =0x02242FF0
+ ldmeqia sp!, {r4, pc}
+ bl MOD13_02222F34
+ ldrb r1, [r4, #5]
+ cmp r1, #0x79
+ bne _0221F200
+ cmp r0, #0
+ ldrne r0, _0221F214 ; =0x02242FF0
+ ldmneia sp!, {r4, pc}
+_0221F200:
+ ldr r1, _0221F218 ; =0x0223ECB4
+ ldrb r1, [r1, r0]
+ ldr r0, _0221F214 ; =0x02242FF0
+ strb r1, [r0, #5]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0221F214: .word 0x02242FF0
+_0221F218: .word 0x0223ECB4
+
+ arm_func_start MOD13_0221F21C
+MOD13_0221F21C: ; 0x0221F21C
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, #0
+ ldr r4, _0221F258 ; =0x02243030
+ mov r5, r6
+_0221F22C:
+ ldr r0, [r4]
+ ldr r0, [r0, r6, lsl #2]
+ cmp r0, #0
+ beq _0221F248
+ bl MOD13_02239AE8
+ ldr r0, [r4]
+ str r5, [r0, r6, lsl #2]
+_0221F248:
+ add r6, r6, #1
+ cmp r6, #4
+ blt _0221F22C
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_0221F258: .word 0x02243030
+
+ arm_func_start MOD13_0221F25C
+MOD13_0221F25C: ; 0x0221F25C
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ mov sl, r0
+ mov fp, r1
+ str r2, [sp]
+ str r3, [sp, #4]
+ mov sb, #6
+ bl MOD13_0221F21C
+ mov r8, #0
+ ldr r4, _0221F344 ; =0x02243030
+ mov r7, r8
+ mov r6, #1
+ mvn r5, #0
+_0221F290:
+ mov r0, r7
+ mov r1, sb
+ mov r2, r6
+ bl MOD13_02239E0C
+ ldr r2, [r4]
+ mov r1, r5
+ str r0, [r2, r8, lsl #2]
+ ldr r0, [r4]
+ mov r2, r6
+ ldr r0, [r0, r8, lsl #2]
+ bl MOD13_02239814
+ add r8, r8, #1
+ cmp r8, #4
+ add sb, sb, #1
+ blt _0221F290
+ ldr r0, _0221F344 ; =0x02243030
+ ldr r3, [sp]
+ ldr r0, [r0]
+ mov r2, sl
+ ldr r0, [r0]
+ mvn r1, #0
+ bl MOD13_02239888
+ ldr r0, _0221F344 ; =0x02243030
+ ldr r3, [sp]
+ ldr r0, [r0]
+ mov r2, fp
+ ldr r0, [r0, #4]
+ mvn r1, #0
+ bl MOD13_02239888
+ ldr r0, _0221F344 ; =0x02243030
+ ldr r3, [sp, #4]
+ ldr r0, [r0]
+ mov r2, sl
+ ldr r0, [r0, #8]
+ mvn r1, #0
+ bl MOD13_02239888
+ ldr r0, _0221F344 ; =0x02243030
+ ldr r3, [sp, #4]
+ ldr r0, [r0]
+ mov r2, fp
+ ldr r0, [r0, #0xc]
+ mvn r1, #0
+ bl MOD13_02239888
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_0221F344: .word 0x02243030
+
+ arm_func_start MOD13_0221F348
+MOD13_0221F348: ; 0x0221F348
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ mov fp, r1
+ str r2, [sp]
+ mov sl, r3
+ bl MOD13_0221F21C
+ ldr r0, _0221F3FC ; =0x0223ECFC
+ mov sb, #0
+ add r8, r0, r4, lsl #1
+ ldr r4, _0221F400 ; =0x02243030
+ mov r7, sb
+ mov r6, #1
+ mvn r5, #0
+_0221F380:
+ ldrb r1, [r8]
+ mov r0, r7
+ mov r2, r6
+ bl MOD13_02239E0C
+ ldr r2, [r4]
+ mov r1, r5
+ str r0, [r2, sb, lsl #2]
+ ldr r0, [r4]
+ mov r2, r6
+ ldr r0, [r0, sb, lsl #2]
+ bl MOD13_02239814
+ add sb, sb, #1
+ cmp sb, #2
+ add r8, r8, #1
+ blt _0221F380
+ ldr r0, _0221F400 ; =0x02243030
+ mov r2, fp
+ ldr r0, [r0]
+ mov r3, sl
+ ldr r0, [r0]
+ mvn r1, #0
+ bl MOD13_02239888
+ ldr r0, _0221F400 ; =0x02243030
+ ldr r2, [sp]
+ ldr r0, [r0]
+ mov r3, sl
+ ldr r0, [r0, #4]
+ mvn r1, #0
+ bl MOD13_02239888
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_0221F3FC: .word 0x0223ECFC
+_0221F400: .word 0x02243030
+
+ arm_func_start MOD13_0221F404
+MOD13_0221F404: ; 0x0221F404
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221F21C
+ ldr r0, _0221F420 ; =0x02243030
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0221F420: .word 0x02243030
+
+ arm_func_start MOD13_0221F424
+MOD13_0221F424: ; 0x0221F424
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0x10
+ mov r1, #4
+ bl MOD13_0223AFE0
+ ldr r1, _0221F448 ; =0x02243030
+ str r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0221F448: .word 0x02243030
+
+ arm_func_start MOD13_0221F44C
+MOD13_0221F44C: ; 0x0221F44C
+ stmdb sp!, {r4, lr}
+ ldr r1, _0221F488 ; =0x02243034
+ mov r4, r0
+ ldr r0, [r1]
+ mov r1, #0xc0
+ bl DC_FlushRange
+ ldr r0, _0221F488 ; =0x02243034
+ mov r1, #0
+ ldr r0, [r0]
+ mov r2, #0xc0
+ bl GX_LoadBG1Scr
+ mov r1, r4
+ mov r0, #1
+ bl MOD13_0223C110
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0221F488: .word 0x02243034
+
+ arm_func_start MOD13_0221F48C
+MOD13_0221F48C: ; 0x0221F48C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02234164
+ ldrb r0, [r0, #0xf4]
+ add r0, r0, #2
+ bl MOD13_0221F4CC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_0221F4AC
+MOD13_0221F4AC: ; 0x0221F4AC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02234164
+ ldrb r0, [r0, #0xf4]
+ add r0, r0, #5
+ bl MOD13_0221F4CC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_0221F4CC
+MOD13_0221F4CC: ; 0x0221F4CC
+ stmdb sp!, {r4, lr}
+ ldr r1, _0221F51C ; =0x0223FB18
+ ldr r0, [r1, r0, lsl #2]
+ bl MOD13_0221F1BC
+ mov r1, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ ldr r1, _0221F520 ; =0x02243034
+ mov r4, r0
+ ldr r1, [r1]
+ mov r2, #0xc0
+ bl MIi_CpuCopyFast
+ mov r0, r4
+ bl MOD13_0223939C
+ mov r0, #1
+ ldr r1, _0221F524 ; =MOD13_0221F44C
+ mov r2, #0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0221F51C: .word 0x0223FB18
+_0221F520: .word 0x02243034
+_0221F524: .word MOD13_0221F44C
+
+ arm_func_start MOD13_0221F528
+MOD13_0221F528: ; 0x0221F528
+ ldr ip, _0221F534 ; =MOD13_0223AF90
+ ldr r0, _0221F538 ; =0x02243034
+ bx ip
+ .align 2, 0
+_0221F534: .word MOD13_0223AF90
+_0221F538: .word 0x02243034
+
+ arm_func_start MOD13_0221F53C
+MOD13_0221F53C: ; 0x0221F53C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0xc0
+ mov r1, #4
+ bl MOD13_0223B004
+ ldr r2, _0221F5B0 ; =0x02243034
+ ldr r1, _0221F5B4 ; =0x020C8E1C
+ str r0, [r2]
+ ldr r0, _0221F5B8 ; =0x0223FB68
+ bl MOD13_0221F174
+ bl MOD13_02222F1C
+ cmp r0, #0
+ beq _0221F580
+ cmp r0, #1
+ beq _0221F598
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0221F580:
+ ldr r0, _0221F5BC ; =0x0223FB18
+ ldr r1, _0221F5C0 ; =0x020C915C
+ ldr r0, [r0]
+ bl MOD13_0221F174
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0221F598:
+ ldr r0, _0221F5BC ; =0x0223FB18
+ ldr r1, _0221F5C0 ; =0x020C915C
+ ldr r0, [r0, #4]
+ bl MOD13_0221F174
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0221F5B0: .word 0x02243034
+_0221F5B4: .word 0x020C8E1C
+_0221F5B8: .word 0x0223FB68
+_0221F5BC: .word 0x0223FB18
+_0221F5C0: .word 0x020C915C
+
+ arm_func_start MOD13_0221F5C4
+MOD13_0221F5C4: ; 0x0221F5C4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _0221F67C ; =0x04000208
+ mov r4, #0
+ ldrh r5, [r0]
+ strh r4, [r0]
+ bl WM_GetAllowedChannel
+ cmp r0, #0x8000
+ beq _0221F5F0
+ bl WM_GetLinkLevel
+ mov r4, r0
+_0221F5F0:
+ ldr r2, _0221F67C ; =0x04000208
+ ldr r1, _0221F680 ; =0x02243038
+ ldrh r0, [r2]
+ ldr r3, _0221F684 ; =0x0223ED08
+ mov r0, #0
+ strh r5, [r2]
+ ldr r2, [r1]
+ ldrsb r1, [r2, #8]
+ ldr r2, [r2]
+ add r1, r3, r1, lsl #2
+ ldrb r1, [r4, r1]
+ bl MOD13_02239E8C
+ ldr r0, _0221F688 ; =0x0223ED04
+ ldr r2, _0221F680 ; =0x02243038
+ ldrh r3, [r0, #2]
+ ldr r1, [r2]
+ ldrh ip, [r0]
+ ldr lr, [r1]
+ ldr r0, _0221F68C ; =0x000001FF
+ ldr r4, [lr]
+ ldr r1, _0221F690 ; =0xFE00FF00
+ and r3, r3, #0xff
+ and r1, r4, r1
+ and r4, ip, r0
+ orr r0, r1, r3
+ orr r0, r0, r4, lsl #16
+ str r0, [lr]
+ ldr r0, [r2]
+ ldr r1, [r0]
+ ldrh r0, [r1, #4]
+ bic r0, r0, #0xc00
+ orr r0, r0, #0x800
+ strh r0, [r1, #4]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0221F67C: .word 0x04000208
+_0221F680: .word 0x02243038
+_0221F684: .word 0x0223ED08
+_0221F688: .word 0x0223ED04
+_0221F68C: .word 0x000001FF
+_0221F690: .word 0xFE00FF00
+
+ arm_func_start MOD13_0221F694
+MOD13_0221F694: ; 0x0221F694
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0221F6DC ; =0x02243038
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r1, [r0, #4]
+ mov r0, #0
+ bl MOD13_0223C104
+ ldr r0, _0221F6DC ; =0x02243038
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD13_0223B974
+ ldr r0, _0221F6DC ; =0x02243038
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0221F6DC: .word 0x02243038
+
+ arm_func_start MOD13_0221F6E0
+MOD13_0221F6E0: ; 0x0221F6E0
+ stmdb sp!, {r4, lr}
+ ldr r1, _0221F7A0 ; =0x02243038
+ mov r4, r0
+ ldr r0, [r1]
+ cmp r0, #0
+ ldmneia sp!, {r4, pc}
+ mov r0, #0xc
+ mov r1, #4
+ bl MOD13_0223B004
+ ldr r1, _0221F7A0 ; =0x02243038
+ ldr r2, _0221F7A4 ; =0x0223ED08
+ str r0, [r1]
+ strb r4, [r0, #8]
+ ldrb r1, [r2, r4, lsl #2]
+ mov r0, #0
+ bl MOD13_02239E54
+ ldr r3, _0221F7A0 ; =0x02243038
+ ldr r2, _0221F7A8 ; =0x0223ED04
+ ldr r4, [r3]
+ ldr r1, _0221F7AC ; =0xFE00FF00
+ str r0, [r4]
+ ldr r4, [r3]
+ ldrh r0, [r2, #2]
+ ldr r4, [r4]
+ ldrh lr, [r2]
+ ldr ip, [r4]
+ and r2, r0, #0xff
+ and r1, ip, r1
+ ldr r0, _0221F7B0 ; =0x000001FF
+ orr r1, r1, r2
+ and r0, lr, r0
+ orr r0, r1, r0, lsl #16
+ str r0, [r4]
+ ldr r1, [r3]
+ mov r0, #0
+ ldr lr, [r1]
+ ldr r1, _0221F7B4 ; =MOD13_0221F5C4
+ ldrh ip, [lr, #4]
+ mov r2, r0
+ mov r3, #0x78
+ bic ip, ip, #0xc00
+ orr ip, ip, #0x800
+ strh ip, [lr, #4]
+ bl MOD13_0223C1C4
+ ldr r1, _0221F7A0 ; =0x02243038
+ ldr r1, [r1]
+ str r0, [r1, #4]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0221F7A0: .word 0x02243038
+_0221F7A4: .word 0x0223ED08
+_0221F7A8: .word 0x0223ED04
+_0221F7AC: .word 0xFE00FF00
+_0221F7B0: .word 0x000001FF
+_0221F7B4: .word MOD13_0221F5C4
+
+ arm_func_start MOD13_0221F7B8
+MOD13_0221F7B8: ; 0x0221F7B8
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ mov r1, r0
+ mov r0, #0
+ bl MOD13_0223C110
+ mov r7, #0
+ ldr r8, _0221F894 ; =0x0224303C
+ mov r5, r7
+_0221F7D4:
+ mov r6, r5
+ mov r4, r7, lsl #4
+_0221F7DC:
+ ldr r0, [r8]
+ add r0, r4, r0
+ ldr r0, [r0, r6, lsl #2]
+ bl MOD13_0223A978
+ cmp r7, #0
+ bne _0221F804
+ ldr r0, [r8]
+ add r0, r0, r6, lsl #2
+ ldr r0, [r0, #0x104]
+ bl MOD13_02239AE8
+_0221F804:
+ add r6, r6, #1
+ cmp r6, #4
+ blt _0221F7DC
+ add r7, r7, #1
+ cmp r7, #3
+ blt _0221F7D4
+ ldr r4, _0221F894 ; =0x0224303C
+ mov r5, #0
+_0221F824:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0xfc]
+ bl MOD13_02239AE8
+ add r5, r5, #1
+ cmp r5, #2
+ blt _0221F824
+ ldr r4, _0221F894 ; =0x0224303C
+ mov r5, #0
+_0221F848:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0xec]
+ bl MOD13_0223B974
+ add r5, r5, #1
+ cmp r5, #4
+ blt _0221F848
+ ldr r4, _0221F894 ; =0x0224303C
+ mov r5, #0
+_0221F86C:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0x30]
+ bl MOD13_0223B974
+ add r5, r5, #1
+ cmp r5, #0x2f
+ blt _0221F86C
+ ldr r0, _0221F894 ; =0x0224303C
+ bl MOD13_0223AF90
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_0221F894: .word 0x0224303C
+
+ arm_func_start MOD13_0221F898
+MOD13_0221F898: ; 0x0221F898
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _0221F908 ; =0x0224303C
+ ldr r2, _0221F90C ; =0x01FF0000
+ ldr ip, [r1]
+ mov r4, r0
+ ldr r3, [ip, #0x30]
+ mov r1, #0
+ ldr r0, [r3]
+ and r0, r0, r2
+ mov r0, r0, lsr #0x10
+ str r0, [sp]
+ ldr r0, [r3]
+ and r0, r0, #0xff
+ str r0, [sp, #4]
+ add r2, r0, #0xc
+ str r2, [sp, #4]
+ ldrb r0, [ip, #0x11d]
+ bl MOD13_022201DC
+ ldr r0, [sp, #4]
+ cmp r0, #0xc0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, pc}
+ ldr r1, _0221F910 ; =MOD13_0221F7B8
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0221F908: .word 0x0224303C
+_0221F90C: .word 0x01FF0000
+_0221F910: .word MOD13_0221F7B8
+
+ arm_func_start MOD13_0221F914
+MOD13_0221F914: ; 0x0221F914
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _0221F984 ; =0x0224303C
+ ldr r2, _0221F988 ; =0x01FF0000
+ ldr ip, [r1]
+ mov r4, r0
+ ldr r3, [ip, #0x60]
+ mov r1, #1
+ ldr r0, [r3]
+ and r0, r0, r2
+ mov r0, r0, lsr #0x10
+ str r0, [sp]
+ ldr r0, [r3]
+ and r0, r0, #0xff
+ str r0, [sp, #4]
+ add r2, r0, #0xc
+ str r2, [sp, #4]
+ ldrb r0, [ip, #0x11d]
+ bl MOD13_022201DC
+ ldr r0, [sp, #4]
+ cmp r0, #0xc0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, pc}
+ ldr r1, _0221F98C ; =MOD13_0221F898
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0221F984: .word 0x0224303C
+_0221F988: .word 0x01FF0000
+_0221F98C: .word MOD13_0221F898
+
+ arm_func_start MOD13_0221F990
+MOD13_0221F990: ; 0x0221F990
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _0221FA00 ; =0x0224303C
+ ldr r2, _0221FA04 ; =0x01FF0000
+ ldr ip, [r1]
+ mov r4, r0
+ ldr r3, [ip, #0x90]
+ mov r1, #2
+ ldr r0, [r3]
+ and r0, r0, r2
+ mov r0, r0, lsr #0x10
+ str r0, [sp]
+ ldr r0, [r3]
+ and r0, r0, #0xff
+ str r0, [sp, #4]
+ add r2, r0, #0xc
+ str r2, [sp, #4]
+ ldrb r0, [ip, #0x11d]
+ bl MOD13_022201DC
+ ldr r0, [sp, #4]
+ cmp r0, #0xc0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, pc}
+ ldr r1, _0221FA08 ; =MOD13_0221F914
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0221FA00: .word 0x0224303C
+_0221FA04: .word 0x01FF0000
+_0221FA08: .word MOD13_0221F914
+
+ arm_func_start MOD13_0221FA0C
+MOD13_0221FA0C: ; 0x0221FA0C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _0221FA7C ; =0x0224303C
+ ldr r2, _0221FA80 ; =0x01FF0000
+ ldr ip, [r1]
+ mov r4, r0
+ ldr r3, [ip, #0xc0]
+ mov r1, #3
+ ldr r0, [r3]
+ and r0, r0, r2
+ mov r0, r0, lsr #0x10
+ str r0, [sp]
+ ldr r0, [r3]
+ and r0, r0, #0xff
+ str r0, [sp, #4]
+ add r2, r0, #0xc
+ str r2, [sp, #4]
+ ldrb r0, [ip, #0x11d]
+ bl MOD13_022201DC
+ ldr r0, [sp, #4]
+ cmp r0, #0xc0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, pc}
+ ldr r1, _0221FA84 ; =MOD13_0221F990
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0221FA7C: .word 0x0224303C
+_0221FA80: .word 0x01FF0000
+_0221FA84: .word MOD13_0221F990
+
+ arm_func_start MOD13_0221FA88
+MOD13_0221FA88: ; 0x0221FA88
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _0221FB08 ; =0x0224303C
+ mov r4, r0
+ ldr r0, [r1]
+ mov r1, #0
+ ldr r0, [r0, #0xfc]
+ bl MOD13_02239ADC
+ ldr r3, [r0]
+ ldr r1, _0221FB0C ; =0x01FF0000
+ ldr r2, _0221FB08 ; =0x0224303C
+ and r1, r3, r1
+ mov r1, r1, lsr #0x10
+ str r1, [sp]
+ ldr r1, [r0]
+ ldr r0, [r2]
+ and r1, r1, #0xff
+ str r1, [sp, #4]
+ add r2, r1, #0xc
+ str r2, [sp, #4]
+ ldrb r0, [r0, #0x11d]
+ mov r1, #4
+ bl MOD13_022201DC
+ ldr r0, [sp, #4]
+ cmp r0, #0xc0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, pc}
+ ldr r1, _0221FB10 ; =MOD13_0221FA0C
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0221FB08: .word 0x0224303C
+_0221FB0C: .word 0x01FF0000
+_0221FB10: .word MOD13_0221FA0C
+
+ arm_func_start MOD13_0221FB14
+MOD13_0221FB14: ; 0x0221FB14
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, _0221FF90 ; =0x0224303C
+ ldr r3, _0221FF94 ; =0x0223EF08
+ ldr ip, [r2]
+ add r1, ip, #0x100
+ ldrsb lr, [r1, #0x21]
+ add r1, r3, lr, lsl #2
+ ldrsb r1, [r0, r1]
+ strb r1, [ip, #0x121]
+ ldr r1, [r2]
+ add r2, r1, #0x100
+ ldrsb r2, [r2, #0x21]
+ cmp r2, #0x2e
+ bne _0221FB5C
+ cmp r0, #3
+ streqb lr, [r1, #0x120]
+ beq _0221FF7C
+_0221FB5C:
+ cmp r2, #0x33
+ bne _0221FB7C
+ cmp r0, #1
+ beq _0221FB74
+ cmp r0, #3
+ bne _0221FB7C
+_0221FB74:
+ strb lr, [r1, #0x120]
+ b _0221FF7C
+_0221FB7C:
+ cmp r2, #0x34
+ bne _0221FBA0
+ cmp r0, #1
+ beq _0221FB94
+ cmp r0, #3
+ bne _0221FBA0
+_0221FB94:
+ cmp lr, #0x2e
+ strneb lr, [r1, #0x120]
+ b _0221FF7C
+_0221FBA0:
+ mvn r0, #0
+ cmp r2, r0
+ bne _0221FBDC
+ add r0, r1, #0x100
+ ldrsb r0, [r0, #0x20]
+ cmp r0, #0x23
+ beq _0221FBC4
+ cmp r0, #0x32
+ bne _0221FBD0
+_0221FBC4:
+ mov r0, #0x23
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FBD0:
+ mov r0, #0x22
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FBDC:
+ mvn r0, #1
+ cmp r2, r0
+ bne _0221FCA4
+ add r0, r1, #0x100
+ ldrsb r0, [r0, #0x20]
+ cmp r0, #0x26
+ bgt _0221FC38
+ cmp r0, #0x26
+ bge _0221FC74
+ cmp r0, #5
+ bgt _0221FC2C
+ cmp r0, #0
+ addge pc, pc, r0, lsl #2
+ b _0221FC98
+_0221FC14: ; jump table
+ b _0221FC5C ; case 0
+ b _0221FC68 ; case 1
+ b _0221FC98 ; case 2
+ b _0221FC74 ; case 3
+ b _0221FC80 ; case 4
+ b _0221FC8C ; case 5
+_0221FC2C:
+ cmp r0, #0x24
+ beq _0221FC68
+ b _0221FC98
+_0221FC38:
+ cmp r0, #0x28
+ bgt _0221FC54
+ cmp r0, #0x28
+ bge _0221FC8C
+ cmp r0, #0x27
+ beq _0221FC80
+ b _0221FC98
+_0221FC54:
+ cmp r0, #0x31
+ bne _0221FC98
+_0221FC5C:
+ mov r0, #0x31
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FC68:
+ mov r0, #0x24
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FC74:
+ mov r0, #0x26
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FC80:
+ mov r0, #0x27
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FC8C:
+ mov r0, #0x28
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FC98:
+ mov r0, #0x25
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FCA4:
+ mvn r0, #2
+ cmp r2, r0
+ bne _0221FDA8
+ add r0, r1, #0x100
+ ldrsb r0, [r0, #0x20]
+ cmp r0, #0x23
+ bgt _0221FD18
+ cmp r0, #0x23
+ bge _0221FD90
+ cmp r0, #0xb
+ bgt _0221FD0C
+ cmp r0, #0
+ addge pc, pc, r0, lsl #2
+ b _0221FD9C
+_0221FCDC: ; jump table
+ b _0221FD9C ; case 0
+ b _0221FD9C ; case 1
+ b _0221FD9C ; case 2
+ b _0221FD9C ; case 3
+ b _0221FD9C ; case 4
+ b _0221FD9C ; case 5
+ b _0221FD60 ; case 6
+ b _0221FD6C ; case 7
+ b _0221FD9C ; case 8
+ b _0221FD78 ; case 9
+ b _0221FD84 ; case 10
+ b _0221FD90 ; case 11
+_0221FD0C:
+ cmp r0, #0x22
+ beq _0221FD90
+ b _0221FD9C
+_0221FD18:
+ cmp r0, #0x2a
+ bgt _0221FD34
+ cmp r0, #0x2a
+ bge _0221FD6C
+ cmp r0, #0x29
+ beq _0221FD60
+ b _0221FD9C
+_0221FD34:
+ cmp r0, #0x32
+ bgt _0221FD9C
+ cmp r0, #0x2c
+ blt _0221FD9C
+ cmp r0, #0x2c
+ beq _0221FD78
+ cmp r0, #0x2d
+ beq _0221FD84
+ cmp r0, #0x32
+ beq _0221FD90
+ b _0221FD9C
+_0221FD60:
+ mov r0, #0x29
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FD6C:
+ mov r0, #0x2a
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FD78:
+ mov r0, #0x2c
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FD84:
+ mov r0, #0x2d
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FD90:
+ mov r0, #0x2e
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FD9C:
+ mov r0, #0x2b
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FDA8:
+ mvn r0, #3
+ cmp r2, r0
+ bne _0221FE70
+ add r0, r1, #0x100
+ ldrsb r0, [r0, #0x20]
+ cmp r0, #0x26
+ bgt _0221FE04
+ cmp r0, #0x26
+ bge _0221FE40
+ cmp r0, #5
+ bgt _0221FDF8
+ cmp r0, #0
+ addge pc, pc, r0, lsl #2
+ b _0221FE64
+_0221FDE0: ; jump table
+ b _0221FE28 ; case 0
+ b _0221FE34 ; case 1
+ b _0221FE64 ; case 2
+ b _0221FE40 ; case 3
+ b _0221FE4C ; case 4
+ b _0221FE58 ; case 5
+_0221FDF8:
+ cmp r0, #0x24
+ beq _0221FE34
+ b _0221FE64
+_0221FE04:
+ cmp r0, #0x28
+ bgt _0221FE20
+ cmp r0, #0x28
+ bge _0221FE58
+ cmp r0, #0x27
+ beq _0221FE4C
+ b _0221FE64
+_0221FE20:
+ cmp r0, #0x31
+ bne _0221FE64
+_0221FE28:
+ mov r0, #0
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FE34:
+ mov r0, #1
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FE40:
+ mov r0, #3
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FE4C:
+ mov r0, #4
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FE58:
+ mov r0, #5
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FE64:
+ mov r0, #2
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FE70:
+ mvn r0, #4
+ cmp r2, r0
+ bne _0221FF7C
+ add r0, r1, #0x100
+ ldrsb r0, [r0, #0x20]
+ cmp r0, #0x23
+ bgt _0221FEE4
+ cmp r0, #0x23
+ bge _0221FF68
+ cmp r0, #0xb
+ bgt _0221FED8
+ cmp r0, #0
+ addge pc, pc, r0, lsl #2
+ b _0221FF74
+_0221FEA8: ; jump table
+ b _0221FF74 ; case 0
+ b _0221FF74 ; case 1
+ b _0221FF74 ; case 2
+ b _0221FF74 ; case 3
+ b _0221FF74 ; case 4
+ b _0221FF74 ; case 5
+ b _0221FF2C ; case 6
+ b _0221FF38 ; case 7
+ b _0221FF74 ; case 8
+ b _0221FF44 ; case 9
+ b _0221FF50 ; case 10
+ b _0221FF5C ; case 11
+_0221FED8:
+ cmp r0, #0x22
+ beq _0221FF5C
+ b _0221FF74
+_0221FEE4:
+ cmp r0, #0x2a
+ bgt _0221FF00
+ cmp r0, #0x2a
+ bge _0221FF38
+ cmp r0, #0x29
+ beq _0221FF2C
+ b _0221FF74
+_0221FF00:
+ cmp r0, #0x32
+ bgt _0221FF74
+ cmp r0, #0x2c
+ blt _0221FF74
+ cmp r0, #0x2c
+ beq _0221FF44
+ cmp r0, #0x2d
+ beq _0221FF50
+ cmp r0, #0x32
+ beq _0221FF68
+ b _0221FF74
+_0221FF2C:
+ mov r0, #6
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FF38:
+ mov r0, #7
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FF44:
+ mov r0, #9
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FF50:
+ mov r0, #0xa
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FF5C:
+ mov r0, #0xb
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FF68:
+ mov r0, #0x32
+ strb r0, [r1, #0x121]
+ b _0221FF7C
+_0221FF74:
+ mov r0, #8
+ strb r0, [r1, #0x121]
+_0221FF7C:
+ bl MOD13_0221FF98
+ mov r0, #8
+ bl MOD13_0223424C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0221FF90: .word 0x0224303C
+_0221FF94: .word 0x0223EF08
+
+ arm_func_start MOD13_0221FF98
+MOD13_0221FF98: ; 0x0221FF98
+ stmdb sp!, {r4, lr}
+ ldr r0, _02220068 ; =0x0224303C
+ ldr r1, [r0]
+ add r0, r1, #0x100
+ ldrsb r0, [r0, #0x21]
+ sub r0, r0, #0x2f
+ cmp r0, #5
+ addls pc, pc, r0, lsl #2
+ b _0221FFFC
+_0221FFBC: ; jump table
+ b _0221FFD4 ; case 0
+ b _0221FFDC ; case 1
+ b _0221FFE4 ; case 2
+ b _0221FFEC ; case 3
+ b _0221FFF4 ; case 4
+ b _0221FFF4 ; case 5
+_0221FFD4:
+ mov r4, #0x42
+ b _02220000
+_0221FFDC:
+ mov r4, #0x41
+ b _02220000
+_0221FFE4:
+ mov r4, #0x43
+ b _02220000
+_0221FFEC:
+ mov r4, #0x41
+ b _02220000
+_0221FFF4:
+ mov r4, #0x45
+ b _02220000
+_0221FFFC:
+ mov r4, #0x40
+_02220000:
+ ldr r0, [r1, #0x114]
+ mov r1, #0
+ bl MOD13_02239ADC
+ mov r2, r0
+ mov r1, r4
+ mov r0, #0
+ bl MOD13_02239E8C
+ ldr r0, _02220068 ; =0x0224303C
+ mvn r1, #0
+ ldr r0, [r0]
+ mov r2, #2
+ ldr r0, [r0, #0x114]
+ bl MOD13_02239814
+ ldr r0, _02220068 ; =0x0224303C
+ ldr r2, _0222006C ; =0x0223EE34
+ ldr r3, [r0]
+ mvn r1, #0
+ add r0, r3, #0x100
+ ldrsb ip, [r0, #0x21]
+ ldr r0, [r3, #0x114]
+ ldr r3, _02220070 ; =0x0223EE36
+ mov ip, ip, lsl #2
+ ldrh r2, [r2, ip]
+ ldrh r3, [r3, ip]
+ bl MOD13_02239888
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02220068: .word 0x0224303C
+_0222006C: .word 0x0223EE34
+_02220070: .word 0x0223EE36
+
+ arm_func_start MOD13_02220074
+MOD13_02220074: ; 0x02220074
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r0, #0
+ addlt sp, sp, #4
+ ldmltia sp!, {pc}
+ cmp r0, #0x2f
+ bge _022200CC
+ ldr r2, _02220144 ; =0x0224303C
+ ldr r3, _02220148 ; =0x0223ED10
+ ldr r2, [r2]
+ add sp, sp, #4
+ add r0, r2, r0, lsl #2
+ ldr ip, [r0, #0x30]
+ ldr r0, [ip]
+ bic r0, r0, #0xc00
+ str r0, [ip]
+ ldrh r2, [ip, #4]
+ ldrb r0, [r3, r1]
+ bic r1, r2, #0xf000
+ orr r0, r1, r0, lsl #12
+ strh r0, [ip, #4]
+ ldmia sp!, {pc}
+_022200CC:
+ sub r3, r0, #0x2f
+ cmp r3, #4
+ bge _02220114
+ ldr r0, _02220144 ; =0x0224303C
+ ldr r2, _02220148 ; =0x0223ED10
+ ldr r0, [r0]
+ add sp, sp, #4
+ add r0, r0, r3, lsl #2
+ ldr ip, [r0, #0xec]
+ ldr r0, [ip]
+ bic r0, r0, #0xc00
+ str r0, [ip]
+ ldrh r3, [ip, #4]
+ ldrb r0, [r2, r1]
+ bic r1, r3, #0xf000
+ orr r0, r1, r0, lsl #12
+ strh r0, [ip, #4]
+ ldmia sp!, {pc}
+_02220114:
+ ldr r2, _02220144 ; =0x0224303C
+ ldr r3, _0222014C ; =0x0223ED14
+ ldr r2, [r2]
+ sub r0, r0, #0x33
+ add r0, r2, r0, lsl #2
+ ldrb r3, [r3, r1]
+ ldr r0, [r0, #0xfc]
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_02239994
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02220144: .word 0x0224303C
+_02220148: .word 0x0223ED10
+_0222014C: .word 0x0223ED14
+
+ arm_func_start MOD13_02220150
+MOD13_02220150: ; 0x02220150
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ ldr r1, _022201D4 ; =0x0224303C
+ mov r6, #0
+ ldr r1, [r1]
+ mov r8, r0
+ mov r5, r6
+ mov r7, r6
+ mov r4, r6
+ strb r8, [r1, #0x11d]
+ ldr sb, _022201D8 ; =0x0223ED78
+_0222017C:
+ add r0, sb, r4, lsl #2
+ ldrh r2, [r0, #2]
+ mov r0, r8
+ mov r1, r7
+ bl MOD13_022201DC
+ add r7, r7, #1
+ cmp r7, #4
+ add r4, r4, #0xc
+ blt _0222017C
+ cmp r8, #2
+ moveq r6, #1
+ beq _022201B4
+ cmp r8, #1
+ moveq r5, #1
+_022201B4:
+ mov r1, r6
+ mov r0, #0x2f
+ bl MOD13_02220074
+ mov r1, r5
+ mov r0, #0x30
+ bl MOD13_02220074
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_022201D4: .word 0x0224303C
+_022201D8: .word 0x0223ED78
+
+ arm_func_start MOD13_022201DC
+MOD13_022201DC: ; 0x022201DC
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x1c
+ ldr r4, _02220460 ; =0x0223ED38
+ ldr lr, _02220464 ; =0x0223ED40
+ ldrb r5, [r4, #4]
+ ldrb sb, [r4]
+ ldrb r8, [r4, #1]
+ strb r5, [sp, #0xc]
+ mov r5, r1
+ mov r1, #0xc
+ mul r1, r5, r1
+ ldrb r7, [r4, #2]
+ ldrb r6, [r4, #3]
+ strb sb, [sp, #8]
+ str r1, [sp, #4]
+ ldrb ip, [lr]
+ ldrb sl, [lr, #1]
+ ldrb r4, [lr, #2]
+ ldrb fp, [lr, #3]
+ ldrb sb, [lr, #4]
+ ldr r3, _02220468 ; =0x0223ED30
+ strb r8, [sp, #9]
+ strb r7, [sp, #0xa]
+ strb r6, [sp, #0xb]
+ add r1, sp, #8
+ ldrb lr, [r3]
+ ldrb r8, [r3, #1]
+ ldrb r7, [r3, #2]
+ ldrb r6, [r3, #3]
+ ldrb r3, [r3, #4]
+ ldrb r1, [r1, r5]
+ strb sl, [sp, #0xe]
+ strb r4, [sp, #0xf]
+ strb sb, [sp, #0x11]
+ strb ip, [sp, #0xd]
+ mov r4, r2
+ ldr sl, [sp, #4]
+ strb fp, [sp, #0x10]
+ strb lr, [sp, #0x12]
+ strb r8, [sp, #0x13]
+ strb r7, [sp, #0x14]
+ strb r6, [sp, #0x15]
+ strb r3, [sp, #0x16]
+ cmp r1, #0
+ mov sb, #0
+ ble _0222030C
+ add r1, sp, #8
+ ldr r2, _0222046C ; =0x0224303C
+ ldr r3, _02220470 ; =0x0223ED78
+ ldr fp, _02220474 ; =0xFE00FF00
+ and r8, r4, #0xff
+ add r7, r1, r5
+_022202AC:
+ ldr r1, [r2]
+ mov r6, sl, lsl #2
+ add r1, r1, sl, lsl #2
+ ldr lr, [r1, #0x30]
+ ldr r1, _02220478 ; =0xC1FFFCFF
+ ldr ip, [lr]
+ add sb, sb, #1
+ and r1, ip, r1
+ str r1, [lr]
+ ldr r1, [r2]
+ ldrh ip, [r3, r6]
+ add r1, r1, sl, lsl #2
+ ldr r6, [r1, #0x30]
+ ldr r1, _0222047C ; =0x000001FF
+ add sl, sl, #1
+ and r1, ip, r1
+ ldr ip, [r6]
+ and ip, ip, fp
+ orr ip, ip, r8
+ orr r1, ip, r1, lsl #16
+ str r1, [r6]
+ ldrb r1, [r7]
+ cmp sb, r1
+ blt _022202AC
+_0222030C:
+ cmp r5, #4
+ bge _0222034C
+ ldr r1, _0222046C ; =0x0224303C
+ mov r2, #2
+ ldr r6, [r1]
+ ldr r1, [sp, #4]
+ str r2, [sp]
+ add r0, r6, r0, lsl #4
+ ldr r3, _02220470 ; =0x0223ED78
+ mov r1, r1, lsl #2
+ add r2, r6, r5, lsl #2
+ ldrh r1, [r3, r1]
+ ldr r3, [r2, #0x104]
+ ldr r0, [r0, r5, lsl #2]
+ mov r2, r4
+ bl MOD13_0223A440
+_0222034C:
+ add r0, r5, #3
+ mov r1, #4
+ bl FX_ModS32
+ add r8, sp, #0xd
+ ldrb r1, [r8, r5]
+ mov r2, #0
+ cmp r1, #0
+ ble _022203E0
+ ldr r3, _02220480 ; =0x0223ED58
+ mov r1, r0, lsl #2
+ ldrh r3, [r3, r1]
+ ldr r0, _0222047C ; =0x000001FF
+ and r7, r4, #0xff
+ and r0, r3, r0
+ mov r6, r0, lsl #0x10
+ add r3, r8, r5
+ ldr sl, _0222046C ; =0x0224303C
+ ldr r8, _02220478 ; =0xC1FFFCFF
+ ldr sb, _02220474 ; =0xFE00FF00
+_02220398:
+ ldr r0, [sl]
+ add r2, r2, #1
+ add r0, r1, r0
+ ldr fp, [r0, #0xec]
+ ldr r0, [fp]
+ and r0, r0, r8
+ str r0, [fp]
+ ldr r0, [sl]
+ add r0, r1, r0
+ ldr r0, [r0, #0xec]
+ ldr fp, [r0]
+ and fp, fp, sb
+ orr fp, fp, r7
+ orr fp, r6, fp
+ str fp, [r0]
+ ldrb r0, [r3]
+ cmp r2, r0
+ blt _02220398
+_022203E0:
+ add r1, sp, #0x12
+ ldrb r0, [r1, r5]
+ mov r8, #0
+ cmp r0, #0
+ addle sp, sp, #0x1c
+ ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add sb, r1, r5
+ ldr sl, _0222046C ; =0x0224303C
+ ldr r5, _02220484 ; =0x0223ED50
+ mov r6, r8
+ mvn r7, #0
+_0222040C:
+ ldr r0, [sl]
+ mov r1, r7
+ add r0, r0, r8, lsl #2
+ ldr r0, [r0, #0xfc]
+ mov r2, r6
+ mov r3, r6
+ bl MOD13_02239A1C
+ ldr r0, [sl]
+ mov r1, r8, lsl #2
+ add r0, r0, r8, lsl #2
+ ldrh r2, [r5, r1]
+ ldr r0, [r0, #0xfc]
+ mov r1, r7
+ mov r3, r4
+ bl MOD13_02239888
+ ldrb r0, [sb]
+ add r8, r8, #1
+ cmp r8, r0
+ blt _0222040C
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_02220460: .word 0x0223ED38
+_02220464: .word 0x0223ED40
+_02220468: .word 0x0223ED30
+_0222046C: .word 0x0224303C
+_02220470: .word 0x0223ED78
+_02220474: .word 0xFE00FF00
+_02220478: .word 0xC1FFFCFF
+_0222047C: .word 0x000001FF
+_02220480: .word 0x0223ED58
+_02220484: .word 0x0223ED50
+
+ arm_func_start MOD13_02220488
+MOD13_02220488: ; 0x02220488
+ stmdb sp!, {r4, lr}
+ mov r0, #0x20
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _022204A4
+ mov r0, #0
+ bl MOD13_0221FB14
+_022204A4:
+ mov r0, #0x40
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _022204BC
+ mov r0, #1
+ bl MOD13_0221FB14
+_022204BC:
+ mov r0, #0x10
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _022204D4
+ mov r0, #2
+ bl MOD13_0221FB14
+_022204D4:
+ mov r0, #0x80
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _022204EC
+ mov r0, #3
+ bl MOD13_0221FB14
+_022204EC:
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _02220604
+ ldr r2, _022206A4 ; =0x0224303C
+ ldr r0, [r2]
+ add r1, r0, #0x100
+ ldrsb r4, [r1, #0x21]
+ cmp r4, #0x2f
+ bge _0222055C
+ ldrb r1, [r0, #0x124]
+ cmp r1, #0
+ bne _0222052C
+ mov r0, #9
+ bl MOD13_0223424C
+ ldmia sp!, {r4, pc}
+_0222052C:
+ ldrb r3, [r0, #0x11d]
+ ldr r1, _022206A8 ; =0x0223FB7C
+ ldr r1, [r1, r3, lsl #2]
+ ldrb r1, [r1, r4]
+ strb r1, [r0, #0x11c]
+ ldr r0, [r2]
+ ldrb r0, [r0, #0x11d]
+ cmp r0, #1
+ ldmneia sp!, {r4, pc}
+ mov r0, #0
+ bl MOD13_02220150
+ ldmia sp!, {r4, pc}
+_0222055C:
+ sub r1, r4, #0x2f
+ cmp r1, #4
+ bge _022205F4
+ cmp r1, #3
+ addls pc, pc, r1, lsl #2
+ b _022205C4
+_02220574: ; jump table
+ b _02220584 ; case 0
+ b _0222058C ; case 1
+ b _02220594 ; case 2
+ b _022205AC ; case 3
+_02220584:
+ bl MOD13_02220944
+ ldmia sp!, {r4, pc}
+_0222058C:
+ bl MOD13_0222090C
+ ldmia sp!, {r4, pc}
+_02220594:
+ ldrb r1, [r0, #0x124]
+ cmp r1, #0
+ bne _022205C4
+ mov r0, #9
+ bl MOD13_0223424C
+ ldmia sp!, {r4, pc}
+_022205AC:
+ ldrb r1, [r0, #0x123]
+ cmp r1, #0
+ bne _022205C4
+ mov r0, #9
+ bl MOD13_0223424C
+ ldmia sp!, {r4, pc}
+_022205C4:
+ ldrb r0, [r0, #0x11d]
+ cmp r0, #1
+ bne _022205D8
+ mov r0, #0
+ bl MOD13_02220150
+_022205D8:
+ ldr r1, _022206AC ; =0x0223ED48
+ sub r2, r4, #0x2f
+ ldr r0, _022206A4 ; =0x0224303C
+ ldrb r1, [r1, r2]
+ ldr r0, [r0]
+ strb r1, [r0, #0x11c]
+ ldmia sp!, {r4, pc}
+_022205F4:
+ ldr r1, _022206B0 ; =0x0223ED1C
+ sub r2, r4, #0x33
+ ldrb r1, [r1, r2]
+ strb r1, [r0, #0x11c]
+_02220604:
+ mov r0, #2
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _0222065C
+ ldr r0, _022206A4 ; =0x0224303C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x123]
+ cmp r0, #0
+ bne _02220650
+ ldrb r0, [r1, #0x125]
+ cmp r0, #0
+ ldmneia sp!, {r4, pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _022206A4 ; =0x0224303C
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x125]
+ ldmia sp!, {r4, pc}
+_02220650:
+ mov r0, #0x80
+ strb r0, [r1, #0x11c]
+ b _02220678
+_0222065C:
+ mov r0, #2
+ bl MOD13_0223B38C
+ cmp r0, #0
+ ldrne r0, _022206A4 ; =0x0224303C
+ movne r1, #0
+ ldrne r0, [r0]
+ strneb r1, [r0, #0x125]
+_02220678:
+ mov r0, #0x400
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _0222068C
+ bl MOD13_02220944
+_0222068C:
+ mov r0, #0x800
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ bl MOD13_0222090C
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022206A4: .word 0x0224303C
+_022206A8: .word 0x0223FB7C
+_022206AC: .word 0x0223ED48
+_022206B0: .word 0x0223ED1C
+
+ arm_func_start MOD13_022206B4
+MOD13_022206B4: ; 0x022206B4
+ stmdb sp!, {r4, lr}
+ ldr r1, _02220704 ; =0x0224303C
+ mov r4, r0
+ ldr r1, [r1]
+ add r1, r1, #0x100
+ ldrsb r1, [r1, #0x1f]
+ cmp r4, r1
+ ldmeqia sp!, {r4, pc}
+ mov r1, #1
+ bl MOD13_02220074
+ ldr r0, _02220704 ; =0x0224303C
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, #0x100
+ ldrsb r0, [r0, #0x1f]
+ bl MOD13_02220074
+ ldr r0, _02220704 ; =0x0224303C
+ ldr r0, [r0]
+ strb r4, [r0, #0x11f]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02220704: .word 0x0224303C
+
+ arm_func_start MOD13_02220708
+MOD13_02220708: ; 0x02220708
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ ldr r0, _022208EC ; =0x0223F75C
+ bl MOD13_0223B320
+ cmp r0, #0
+ beq _022208CC
+ ldr r7, _022208F0 ; =0x0223ED78
+ mov r4, #0
+ ldr r6, _022208F4 ; =0x0223ED2C
+ add r5, sp, #0
+_02220730:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ bl MOD13_0223AB74
+ mov r0, r5
+ bl MOD13_0223B320
+ cmp r0, #0
+ beq _02220774
+ ldr r0, _022208F8 ; =0x0224303C
+ ldr r0, [r0]
+ add r0, r0, #0x100
+ ldrsb r0, [r0, #0x1e]
+ cmp r0, r4
+ bne _022208CC
+ mov r0, r4
+ bl MOD13_022206B4
+ b _022208D4
+_02220774:
+ add r4, r4, #1
+ cmp r4, #0x2f
+ add r7, r7, #4
+ blt _02220730
+ ldr r7, _022208FC ; =0x0223ED70
+ ldr r6, _02220900 ; =0x0223ED60
+ mov r5, #2
+ add r4, sp, #0
+_02220794:
+ mov r0, r6
+ mov r1, r7
+ mov r2, r4
+ bl MOD13_0223AB74
+ mov r0, r4
+ bl MOD13_0223B320
+ cmp r0, #0
+ beq _02220854
+ ldr r1, _022208F8 ; =0x0224303C
+ add r0, r5, #0x2f
+ ldr r1, [r1]
+ add r1, r1, #0x100
+ ldrsb r1, [r1, #0x1e]
+ cmp r1, r0
+ bne _022208CC
+ bl MOD13_022206B4
+ cmp r5, #3
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _022208F8 ; =0x0224303C
+ ldr r2, [r0]
+ ldrb r1, [r2, #0x122]
+ add r1, r1, #1
+ strb r1, [r2, #0x122]
+ ldr r2, [r0]
+ ldrb r1, [r2, #0x122]
+ cmp r1, #0x28
+ addlo sp, sp, #0xc
+ ldmloia sp!, {r4, r5, r6, r7, pc}
+ ldrb r1, [r2, #0x123]
+ cmp r1, #0
+ bne _02220834
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _022208F8 ; =0x0224303C
+ mvn r1, #0
+ ldr r0, [r0]
+ add sp, sp, #0xc
+ strb r1, [r0, #0x11e]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02220834:
+ mov r1, #0x80
+ strb r1, [r2, #0x11c]
+ ldr r1, [r0]
+ add sp, sp, #0xc
+ ldrb r0, [r1, #0x122]
+ sub r0, r0, #7
+ strb r0, [r1, #0x122]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02220854:
+ add r5, r5, #1
+ cmp r5, #4
+ add r7, r7, #4
+ add r6, r6, #4
+ blt _02220794
+ ldr r7, _02220904 ; =0x0223ED50
+ mov r6, #0
+ ldr r5, _02220908 ; =0x0223ED28
+ add r4, sp, #0
+_02220878:
+ mov r0, r7
+ mov r1, r5
+ mov r2, r4
+ bl MOD13_0223AB74
+ mov r0, r4
+ bl MOD13_0223B320
+ cmp r0, #0
+ beq _022208BC
+ ldr r1, _022208F8 ; =0x0224303C
+ add r0, r6, #0x33
+ ldr r1, [r1]
+ add r1, r1, #0x100
+ ldrsb r1, [r1, #0x1e]
+ cmp r1, r0
+ bne _022208CC
+ bl MOD13_022206B4
+ b _022208D4
+_022208BC:
+ add r6, r6, #1
+ cmp r6, #2
+ add r7, r7, #4
+ blt _02220878
+_022208CC:
+ mvn r0, #0
+ bl MOD13_022206B4
+_022208D4:
+ ldr r0, _022208F8 ; =0x0224303C
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x122]
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022208EC: .word 0x0223F75C
+_022208F0: .word 0x0223ED78
+_022208F4: .word 0x0223ED2C
+_022208F8: .word 0x0224303C
+_022208FC: .word 0x0223ED70
+_02220900: .word 0x0223ED60
+_02220904: .word 0x0223ED50
+_02220908: .word 0x0223ED28
+
+ arm_func_start MOD13_0222090C
+MOD13_0222090C: ; 0x0222090C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02220940 ; =0x0224303C
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x11d]
+ cmp r0, #1
+ movne r0, #1
+ moveq r0, #0
+ bl MOD13_02220150
+ mov r0, #1
+ bl MOD13_0223424C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02220940: .word 0x0224303C
+
+ arm_func_start MOD13_02220944
+MOD13_02220944: ; 0x02220944
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02220978 ; =0x0224303C
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x11d]
+ cmp r0, #2
+ moveq r0, #0
+ movne r0, #2
+ bl MOD13_02220150
+ mov r0, #1
+ bl MOD13_0223424C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02220978: .word 0x0224303C
+
+ arm_func_start MOD13_0222097C
+MOD13_0222097C: ; 0x0222097C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ ldr r1, _02220C28 ; =0x0224303C
+ ldr r0, _02220C2C ; =0x0223F75C
+ ldr r1, [r1]
+ mov r2, #0
+ strb r2, [r1, #0x11c]
+ bl MOD13_0223B1DC
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r7, _02220C30 ; =0x0223ED78
+ mov r4, #0
+ ldr r6, _02220C34 ; =0x0223ED2C
+ add r5, sp, #0
+_022209B8:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ bl MOD13_0223AB74
+ mov r0, r5
+ bl MOD13_0223B1DC
+ cmp r0, #0
+ beq _02220A38
+ ldr r1, _02220C28 ; =0x0224303C
+ ldr r3, [r1]
+ add r0, r3, #0x100
+ ldrsb r0, [r0, #0x1e]
+ cmp r0, r4
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldrb r2, [r3, #0x11d]
+ ldr r0, _02220C38 ; =0x0223FB7C
+ ldr r0, [r0, r2, lsl #2]
+ ldrb r0, [r0, r4]
+ strb r0, [r3, #0x11c]
+ ldr r0, [r1]
+ ldrb r0, [r0, #0x11d]
+ cmp r0, #1
+ bne _02220A20
+ mov r0, #0
+ bl MOD13_02220150
+_02220A20:
+ ldr r0, _02220C28 ; =0x0224303C
+ ldr r0, [r0]
+ strb r4, [r0, #0x121]
+ bl MOD13_0221FF98
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02220A38:
+ add r4, r4, #1
+ cmp r4, #0x2f
+ add r7, r7, #4
+ blt _022209B8
+ ldr r7, _02220C3C ; =0x0223ED70
+ ldr r6, _02220C40 ; =0x0223ED60
+ mov r4, #2
+ add r5, sp, #0
+_02220A58:
+ mov r0, r6
+ mov r1, r7
+ mov r2, r5
+ bl MOD13_0223AB74
+ mov r0, r5
+ bl MOD13_0223B1DC
+ cmp r0, #0
+ beq _02220AD8
+ ldr r1, _02220C28 ; =0x0224303C
+ add r2, r4, #0x2f
+ ldr r3, [r1]
+ add r0, r3, #0x100
+ ldrsb r0, [r0, #0x1e]
+ cmp r0, r2
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _02220C44 ; =0x0223ED48
+ ldrb r0, [r0, r4]
+ strb r0, [r3, #0x11c]
+ ldr r0, [r1]
+ ldrb r0, [r0, #0x11d]
+ cmp r0, #1
+ bne _02220ABC
+ mov r0, #0
+ bl MOD13_02220150
+_02220ABC:
+ ldr r0, _02220C28 ; =0x0224303C
+ add r1, r4, #0x2f
+ ldr r0, [r0]
+ strb r1, [r0, #0x121]
+ bl MOD13_0221FF98
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02220AD8:
+ add r4, r4, #1
+ cmp r4, #4
+ add r7, r7, #4
+ add r6, r6, #4
+ blt _02220A58
+ ldr r7, _02220C48 ; =0x0223ED50
+ mov r4, #0
+ ldr r6, _02220C4C ; =0x0223ED28
+ add r5, sp, #0
+_02220AFC:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ bl MOD13_0223AB74
+ mov r0, r5
+ bl MOD13_0223B1DC
+ cmp r0, #0
+ beq _02220B5C
+ ldr r1, _02220C28 ; =0x0224303C
+ add r2, r4, #0x33
+ ldr r3, [r1]
+ add r0, r3, #0x100
+ ldrsb r0, [r0, #0x1e]
+ cmp r0, r2
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _02220C50 ; =0x0223ED1C
+ ldrb r0, [r0, r4]
+ strb r0, [r3, #0x11c]
+ ldr r0, [r1]
+ strb r2, [r0, #0x121]
+ bl MOD13_0221FF98
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02220B5C:
+ add r4, r4, #1
+ cmp r4, #2
+ add r7, r7, #4
+ blt _02220AFC
+ ldr r0, _02220C54 ; =0x0223ED58
+ ldr r1, _02220C58 ; =0x0223ED68
+ add r2, sp, #0
+ bl MOD13_0223AB74
+ add r0, sp, #0
+ bl MOD13_0223B1DC
+ cmp r0, #0
+ beq _02220BC8
+ ldr r0, _02220C28 ; =0x0224303C
+ ldr r0, [r0]
+ add r0, r0, #0x100
+ ldrsb r0, [r0, #0x1e]
+ cmp r0, #0x2f
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ bl MOD13_02220944
+ ldr r0, _02220C28 ; =0x0224303C
+ mov r1, #0x2f
+ ldr r0, [r0]
+ strb r1, [r0, #0x121]
+ bl MOD13_0221FF98
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02220BC8:
+ ldr r0, _02220C5C ; =0x0223ED5C
+ ldr r1, _02220C60 ; =0x0223ED6C
+ add r2, sp, #0
+ bl MOD13_0223AB74
+ add r0, sp, #0
+ bl MOD13_0223B1DC
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _02220C28 ; =0x0224303C
+ ldr r0, [r0]
+ add r0, r0, #0x100
+ ldrsb r0, [r0, #0x1e]
+ cmp r0, #0x30
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ bl MOD13_0222090C
+ ldr r0, _02220C28 ; =0x0224303C
+ mov r1, #0x30
+ ldr r0, [r0]
+ strb r1, [r0, #0x121]
+ bl MOD13_0221FF98
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02220C28: .word 0x0224303C
+_02220C2C: .word 0x0223F75C
+_02220C30: .word 0x0223ED78
+_02220C34: .word 0x0223ED2C
+_02220C38: .word 0x0223FB7C
+_02220C3C: .word 0x0223ED70
+_02220C40: .word 0x0223ED60
+_02220C44: .word 0x0223ED48
+_02220C48: .word 0x0223ED50
+_02220C4C: .word 0x0223ED28
+_02220C50: .word 0x0223ED1C
+_02220C54: .word 0x0223ED58
+_02220C58: .word 0x0223ED68
+_02220C5C: .word 0x0223ED5C
+_02220C60: .word 0x0223ED6C
+
+ arm_func_start MOD13_02220C64
+MOD13_02220C64: ; 0x02220C64
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ ldr r0, _02220E28 ; =0x0223F75C
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _02220E2C ; =0x0224303C
+ mvn r1, #0
+ ldr r0, [r0]
+ ldr r7, _02220E30 ; =0x0223ED78
+ strb r1, [r0, #0x11e]
+ mov r4, #0
+ ldr r6, _02220E34 ; =0x0223ED2C
+ add r5, sp, #0
+_02220CA0:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ bl MOD13_0223AB74
+ mov r0, r5
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ beq _02220D00
+ ldr r0, _02220E2C ; =0x0224303C
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x124]
+ cmp r0, #0
+ bne _02220CE4
+ mov r0, #9
+ bl MOD13_0223424C
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02220CE4:
+ mov r0, #0
+ bl MOD13_0223424C
+ ldr r0, _02220E2C ; =0x0224303C
+ add sp, sp, #0xc
+ ldr r0, [r0]
+ strb r4, [r0, #0x11e]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02220D00:
+ add r4, r4, #1
+ cmp r4, #0x2f
+ add r7, r7, #4
+ blt _02220CA0
+ ldr r7, _02220E38 ; =0x0223ED68
+ ldr r6, _02220E3C ; =0x0223ED58
+ mov r4, #0
+ add r5, sp, #0
+_02220D20:
+ mov r0, r6
+ mov r1, r7
+ mov r2, r5
+ bl MOD13_0223AB74
+ mov r0, r5
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ beq _02220DAC
+ cmp r4, #3
+ bne _02220D5C
+ ldr r0, _02220E2C ; =0x0224303C
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x123]
+ cmp r0, #0
+ beq _02220D78
+_02220D5C:
+ cmp r4, #2
+ bne _02220D88
+ ldr r0, _02220E2C ; =0x0224303C
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x124]
+ cmp r0, #0
+ bne _02220D88
+_02220D78:
+ mov r0, #9
+ bl MOD13_0223424C
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02220D88:
+ ldr r0, _02220E40 ; =0x0223FB94
+ ldr r0, [r0, r4, lsl #2]
+ bl MOD13_0223424C
+ ldr r0, _02220E2C ; =0x0224303C
+ add r1, r4, #0x2f
+ ldr r0, [r0]
+ add sp, sp, #0xc
+ strb r1, [r0, #0x11e]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02220DAC:
+ add r4, r4, #1
+ cmp r4, #4
+ add r7, r7, #4
+ add r6, r6, #4
+ blt _02220D20
+ ldr r7, _02220E44 ; =0x0223ED50
+ mov r6, #0
+ ldr r5, _02220E48 ; =0x0223ED28
+ add r4, sp, #0
+_02220DD0:
+ mov r0, r7
+ mov r1, r5
+ mov r2, r4
+ bl MOD13_0223AB74
+ mov r0, r4
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ beq _02220E10
+ mov r0, #0
+ bl MOD13_0223424C
+ ldr r0, _02220E2C ; =0x0224303C
+ add r1, r6, #0x33
+ ldr r0, [r0]
+ add sp, sp, #0xc
+ strb r1, [r0, #0x11e]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02220E10:
+ add r6, r6, #1
+ cmp r6, #2
+ add r7, r7, #4
+ blt _02220DD0
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02220E28: .word 0x0223F75C
+_02220E2C: .word 0x0224303C
+_02220E30: .word 0x0223ED78
+_02220E34: .word 0x0223ED2C
+_02220E38: .word 0x0223ED68
+_02220E3C: .word 0x0223ED58
+_02220E40: .word 0x0223FB94
+_02220E44: .word 0x0223ED50
+_02220E48: .word 0x0223ED28
+
+ arm_func_start MOD13_02220E4C
+MOD13_02220E4C: ; 0x02220E4C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02220C64
+ bl MOD13_0222097C
+ bl MOD13_02220708
+ bl MOD13_02220488
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _02220EFC ; =0x0224303C
+ mov r4, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0, #0xfc]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r0, _02220F00 ; =0x0223ED50
+ ldr r2, [sp, #4]
+ ldrh r1, [r0, #2]
+ sub r2, r2, #0xc
+ str r2, [sp, #4]
+ cmp r2, r1
+ ble _02220ECC
+ ldr r0, _02220EFC ; =0x0224303C
+ mov r1, #4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x11d]
+ bl MOD13_022201DC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_02220ECC:
+ ldr r0, _02220EFC ; =0x0224303C
+ mov r2, r1
+ ldr r0, [r0]
+ mov r1, #4
+ ldrb r0, [r0, #0x11d]
+ bl MOD13_022201DC
+ bl MOD13_0221FF98
+ ldr r1, _02220F04 ; =MOD13_02220E4C
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02220EFC: .word 0x0224303C
+_02220F00: .word 0x0223ED50
+_02220F04: .word MOD13_02220E4C
+
+ arm_func_start MOD13_02220F08
+MOD13_02220F08: ; 0x02220F08
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _02220FA8 ; =0x0224303C
+ ldr r2, _02220FAC ; =0x0223ED78
+ ldr lr, [r1]
+ ldr r1, _02220FB0 ; =0x01FF0000
+ ldr ip, [lr, #0xc0]
+ ldrh r3, [r2, #0x92]
+ ldr r2, [ip]
+ mov r4, r0
+ and r0, r2, r1
+ mov r0, r0, lsr #0x10
+ str r0, [sp]
+ ldr r0, [ip]
+ and r0, r0, #0xff
+ sub r2, r0, #0xc
+ str r0, [sp, #4]
+ str r2, [sp, #4]
+ cmp r2, r3
+ ble _02220F6C
+ ldrb r0, [lr, #0x11d]
+ mov r1, #3
+ bl MOD13_022201DC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_02220F6C:
+ ldrb r0, [lr, #0x11d]
+ mov r2, r3
+ mov r1, #3
+ bl MOD13_022201DC
+ ldr r0, _02220FA8 ; =0x0224303C
+ mov r1, #4
+ ldr r0, [r0]
+ mov r2, #0xc0
+ ldrb r0, [r0, #0x11d]
+ bl MOD13_022201DC
+ ldr r1, _02220FB4 ; =0x02220E6C
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02220FA8: .word 0x0224303C
+_02220FAC: .word 0x0223ED78
+_02220FB0: .word 0x01FF0000
+_02220FB4: .word 0x02220E6C
+
+ arm_func_start MOD13_02220FB8
+MOD13_02220FB8: ; 0x02220FB8
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _02221058 ; =0x0224303C
+ ldr r2, _0222105C ; =0x0223ED78
+ ldr lr, [r1]
+ ldr r1, _02221060 ; =0x01FF0000
+ ldr ip, [lr, #0x90]
+ ldrh r3, [r2, #0x62]
+ ldr r2, [ip]
+ mov r4, r0
+ and r0, r2, r1
+ mov r0, r0, lsr #0x10
+ str r0, [sp]
+ ldr r0, [ip]
+ and r0, r0, #0xff
+ sub r2, r0, #0xc
+ str r0, [sp, #4]
+ str r2, [sp, #4]
+ cmp r2, r3
+ ble _0222101C
+ ldrb r0, [lr, #0x11d]
+ mov r1, #2
+ bl MOD13_022201DC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_0222101C:
+ ldrb r0, [lr, #0x11d]
+ mov r2, r3
+ mov r1, #2
+ bl MOD13_022201DC
+ ldr r0, _02221058 ; =0x0224303C
+ mov r1, #3
+ ldr r0, [r0]
+ mov r2, #0xc0
+ ldrb r0, [r0, #0x11d]
+ bl MOD13_022201DC
+ ldr r1, _02221064 ; =MOD13_02220F08
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02221058: .word 0x0224303C
+_0222105C: .word 0x0223ED78
+_02221060: .word 0x01FF0000
+_02221064: .word MOD13_02220F08
+
+ arm_func_start MOD13_02221068
+MOD13_02221068: ; 0x02221068
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _02221108 ; =0x0224303C
+ ldr r2, _0222110C ; =0x0223ED78
+ ldr lr, [r1]
+ ldr r1, _02221110 ; =0x01FF0000
+ ldr ip, [lr, #0x60]
+ ldrh r3, [r2, #0x32]
+ ldr r2, [ip]
+ mov r4, r0
+ and r0, r2, r1
+ mov r0, r0, lsr #0x10
+ str r0, [sp]
+ ldr r0, [ip]
+ and r0, r0, #0xff
+ sub r2, r0, #0xc
+ str r0, [sp, #4]
+ str r2, [sp, #4]
+ cmp r2, r3
+ ble _022210CC
+ ldrb r0, [lr, #0x11d]
+ mov r1, #1
+ bl MOD13_022201DC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_022210CC:
+ ldrb r0, [lr, #0x11d]
+ mov r2, r3
+ mov r1, #1
+ bl MOD13_022201DC
+ ldr r0, _02221108 ; =0x0224303C
+ mov r1, #2
+ ldr r0, [r0]
+ mov r2, #0xc0
+ ldrb r0, [r0, #0x11d]
+ bl MOD13_022201DC
+ ldr r1, _02221114 ; =MOD13_02220FB8
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02221108: .word 0x0224303C
+_0222110C: .word 0x0223ED78
+_02221110: .word 0x01FF0000
+_02221114: .word MOD13_02220FB8
+
+ arm_func_start MOD13_02221118
+MOD13_02221118: ; 0x02221118
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _022211B8 ; =0x0224303C
+ ldr r2, _022211BC ; =0x0223ED78
+ ldr lr, [r1]
+ ldr r1, _022211C0 ; =0x01FF0000
+ ldr ip, [lr, #0x30]
+ ldrh r3, [r2, #2]
+ ldr r2, [ip]
+ mov r4, r0
+ and r0, r2, r1
+ mov r0, r0, lsr #0x10
+ str r0, [sp]
+ ldr r0, [ip]
+ and r0, r0, #0xff
+ sub r2, r0, #0xc
+ str r0, [sp, #4]
+ str r2, [sp, #4]
+ cmp r2, r3
+ ble _0222117C
+ ldrb r0, [lr, #0x11d]
+ mov r1, #0
+ bl MOD13_022201DC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_0222117C:
+ ldrb r0, [lr, #0x11d]
+ mov r2, r3
+ mov r1, #0
+ bl MOD13_022201DC
+ ldr r0, _022211B8 ; =0x0224303C
+ mov r1, #1
+ ldr r0, [r0]
+ mov r2, #0xc0
+ ldrb r0, [r0, #0x11d]
+ bl MOD13_022201DC
+ ldr r1, _022211C4 ; =MOD13_02221068
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022211B8: .word 0x0224303C
+_022211BC: .word 0x0223ED78
+_022211C0: .word 0x01FF0000
+_022211C4: .word MOD13_02221068
+
+ arm_func_start MOD13_022211C8
+MOD13_022211C8: ; 0x022211C8
+ ldr r0, _022211E0 ; =0x0224303C
+ ldr r0, [r0]
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_022211E0: .word 0x0224303C
+
+ arm_func_start MOD13_022211E4
+MOD13_022211E4: ; 0x022211E4
+ ldr r1, _022211F4 ; =0x0224303C
+ ldr r1, [r1]
+ strb r0, [r1, #0x124]
+ bx lr
+ .align 2, 0
+_022211F4: .word 0x0224303C
+
+ arm_func_start MOD13_022211F8
+MOD13_022211F8: ; 0x022211F8
+ ldr r1, _02221208 ; =0x0224303C
+ ldr r1, [r1]
+ strb r0, [r1, #0x123]
+ bx lr
+ .align 2, 0
+_02221208: .word 0x0224303C
+
+ arm_func_start MOD13_0222120C
+MOD13_0222120C: ; 0x0222120C
+ ldr r0, _0222121C ; =0x0224303C
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x11c]
+ bx lr
+ .align 2, 0
+_0222121C: .word 0x0224303C
+
+ arm_func_start MOD13_02221220
+MOD13_02221220: ; 0x02221220
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02221254 ; =0x0224303C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x114]
+ bl MOD13_02239AE8
+ ldr r0, _02221254 ; =0x0224303C
+ ldr r1, _02221258 ; =MOD13_0221FA88
+ ldr r0, [r0]
+ ldr r0, [r0, #0x118]
+ bl MOD13_0223C130
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02221254: .word 0x0224303C
+_02221258: .word MOD13_0221FA88
+
+ arm_func_start MOD13_0222125C
+MOD13_0222125C: ; 0x0222125C
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x44
+ add r2, sp, #0x34
+ mov r1, #0
+ strh r1, [r2]
+ strh r1, [r2, #2]
+ strh r1, [r2, #4]
+ strh r1, [r2, #6]
+ ldr r0, _022215EC ; =0x0223ED2C
+ mov r1, #4
+ ldrh r3, [r0]
+ ldrh r2, [r0, #2]
+ mov r0, #0x128
+ strh r3, [sp, #0x38]
+ strh r2, [sp, #0x3a]
+ bl MOD13_0223AFE0
+ ldr r8, _022215F0 ; =0x0224303C
+ mov r6, #0
+ mov r1, #0xff
+ str r0, [r8]
+ strb r1, [r0, #0x11c]
+ ldr r0, [r8]
+ mov r1, #1
+ strb r6, [r0, #0x121]
+ ldr r0, [r8]
+ ldr r7, _022215F4 ; =0xC1FFFCFF
+ strb r1, [r0, #0x123]
+ ldr r0, [r8]
+ mov r5, r6
+ strb r1, [r0, #0x124]
+ mov r4, #0x34
+_022212D8:
+ mov r0, r5
+ mov r1, r4
+ bl MOD13_02239E54
+ ldr r1, [r8]
+ add r1, r1, r6, lsl #2
+ str r0, [r1, #0x30]
+ ldr r0, [r8]
+ add r0, r0, r6, lsl #2
+ ldr r1, [r0, #0x30]
+ ldr r0, [r1]
+ and r0, r0, r7
+ orr r0, r0, #0x200
+ str r0, [r1]
+ ldr r0, [r8]
+ add r0, r0, r6, lsl #2
+ ldr r1, [r0, #0x30]
+ add r6, r6, #1
+ ldrh r0, [r1, #4]
+ cmp r6, #0x2f
+ bic r0, r0, #0xc00
+ orr r0, r0, #0xc00
+ strh r0, [r1, #4]
+ blt _022212D8
+ ldr r6, _022215F8 ; =0x0223ED20
+ mov r5, #0
+ ldr r8, _022215F0 ; =0x0224303C
+ mov r4, r5
+ ldr r7, _022215F4 ; =0xC1FFFCFF
+_02221348:
+ ldrb r1, [r6]
+ mov r0, r4
+ bl MOD13_02239E54
+ ldr r1, [r8]
+ add r6, r6, #1
+ add r1, r1, r5, lsl #2
+ str r0, [r1, #0xec]
+ ldr r0, [r8]
+ add r0, r0, r5, lsl #2
+ ldr r1, [r0, #0xec]
+ ldr r0, [r1]
+ and r0, r0, r7
+ orr r0, r0, #0x200
+ str r0, [r1]
+ ldr r0, [r8]
+ add r0, r0, r5, lsl #2
+ ldr r1, [r0, #0xec]
+ add r5, r5, #1
+ ldrh r0, [r1, #4]
+ cmp r5, #4
+ bic r0, r0, #0xc00
+ orr r0, r0, #0xc00
+ strh r0, [r1, #4]
+ blt _02221348
+ ldr sl, _022215FC ; =0x0223ED18
+ mov sb, #0
+ ldr r4, _022215F0 ; =0x0224303C
+ mov fp, sb
+ str sb, [sp, #0x1c]
+ mov r8, #1
+ mvn r7, #0
+ mov r6, #0x200
+ mov r5, #3
+_022213CC:
+ ldrb r1, [sl]
+ mov r0, fp
+ mov r2, r8
+ bl MOD13_02239E0C
+ ldr r2, [r4]
+ ldr r3, [sp, #0x1c]
+ add r2, r2, sb, lsl #2
+ str r0, [r2, #0xfc]
+ ldr r0, [r4]
+ mov r1, r7
+ add r0, r0, sb, lsl #2
+ ldr r0, [r0, #0xfc]
+ mov r2, r6
+ bl MOD13_02239A1C
+ ldr r0, [r4]
+ mov r1, r7
+ add r0, r0, sb, lsl #2
+ ldr r0, [r0, #0xfc]
+ mov r2, r5
+ bl MOD13_02239814
+ add sb, sb, #1
+ add sl, sl, #1
+ cmp sb, #2
+ blt _022213CC
+ ldr r1, _02221600 ; =0x0223ED24
+ mov r7, #0
+ ldrh r0, [r1, #2]
+ ldr fp, _02221604 ; =0x0223FB88
+ ldr r4, _022215F0 ; =0x0224303C
+ str r0, [sp, #0x10]
+ ldrh r0, [r1]
+ strh r7, [sp, #0x42]
+ str r7, [sp, #0x2c]
+ str r0, [sp, #0x14]
+ mov r0, #1
+ str r7, [sp, #0x24]
+ str r7, [sp, #0x28]
+ str r7, [sp, #0x20]
+ mov r6, #2
+ mov r5, #0x480
+ str r0, [sp, #0x30]
+_02221470:
+ ldr sb, [sp, #0x20]
+ mov r0, sb
+ str r0, [sp, #0x18]
+_0222147C:
+ add r0, sp, #0x3c
+ str r0, [sp]
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #4]
+ mov r3, r0
+ bl MOD13_0223A9A4
+ ldr r1, [r4]
+ ldr sl, [sp, #0x18]
+ add r1, r1, r7, lsl #4
+ str r0, [r1, sb, lsl #2]
+ ldr r0, [sp, #0x28]
+ strh r0, [sp, #0x34]
+ mov r8, r0
+_022214B8:
+ ldr r1, [fp, r7, lsl #2]
+ mov r0, sl, lsl #1
+ ldrh r2, [r1, r0]
+ ldrh r1, [sp, #0x3a]
+ mov r0, r7, lsl #4
+ strh r2, [sp, #0x40]
+ str r1, [sp]
+ str r6, [sp, #4]
+ add r2, r0, sb, lsl #2
+ str r5, [sp, #8]
+ add r0, sp, #0x40
+ str r0, [sp, #0xc]
+ ldr r0, [r4]
+ ldrh r1, [sp, #0x34]
+ ldr r0, [r0, r2]
+ ldrh r2, [sp, #0x36]
+ ldrh r3, [sp, #0x38]
+ bl MOD13_0223A4F0
+ ldrh r0, [sp, #0x34]
+ add r8, r8, #1
+ cmp r8, #0xc
+ add r0, r0, #0x12
+ add sl, sl, #1
+ strh r0, [sp, #0x34]
+ blt _022214B8
+ cmp r7, #0
+ bne _02221540
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #0x3c]
+ ldr r2, [sp, #0x30]
+ bl MOD13_02239B74
+ ldr r1, [r4]
+ add r1, r1, sb, lsl #2
+ str r0, [r1, #0x104]
+_02221540:
+ ldr r0, [sp, #0x18]
+ add sb, sb, #1
+ add r0, r0, #0xc
+ str r0, [sp, #0x18]
+ cmp sb, #4
+ blt _0222147C
+ add r7, r7, #1
+ cmp r7, #3
+ blt _02221470
+ mov r0, #0
+ mov r1, #0x40
+ mov r2, #1
+ bl MOD13_02239E0C
+ ldr r3, _022215F0 ; =0x0224303C
+ mvn r1, #0
+ ldr r4, [r3]
+ mov r2, #0x200
+ str r0, [r4, #0x114]
+ ldr r0, [r3]
+ mov r3, #0
+ ldr r0, [r0, #0x114]
+ bl MOD13_02239A1C
+ ldr r0, _022215F0 ; =0x0224303C
+ mvn r1, #0
+ ldr r0, [r0]
+ mov r2, #2
+ ldr r0, [r0, #0x114]
+ bl MOD13_02239814
+ mov r0, #0
+ ldr r1, _02221608 ; =MOD13_02221118
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r3, _022215F0 ; =0x0224303C
+ mov r1, #0
+ ldr r4, [r3]
+ mov r2, #0xc0
+ str r0, [r4, #0x118]
+ ldr r0, [r3]
+ ldrb r0, [r0, #0x11d]
+ bl MOD13_022201DC
+ add sp, sp, #0x44
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_022215EC: .word 0x0223ED2C
+_022215F0: .word 0x0224303C
+_022215F4: .word 0xC1FFFCFF
+_022215F8: .word 0x0223ED20
+_022215FC: .word 0x0223ED18
+_02221600: .word 0x0223ED24
+_02221604: .word 0x0223FB88
+_02221608: .word MOD13_02221118
+
+ arm_func_start MOD13_0222160C
+MOD13_0222160C: ; 0x0222160C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r1, r0
+ mov r0, #0
+ bl MOD13_0223C110
+ mov r5, #0
+ ldr r4, _022216CC ; =0x02243040
+_02221628:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0x48]
+ bl MOD13_02239AE8
+ ldr r0, [r4]
+ ldr r0, [r0, r5, lsl #2]
+ bl MOD13_0223A978
+ add r5, r5, #1
+ cmp r5, #4
+ blt _02221628
+ ldr r4, _022216CC ; =0x02243040
+ mov r5, #0
+_02221658:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0x40]
+ bl MOD13_02239AE8
+ add r5, r5, #1
+ cmp r5, #2
+ blt _02221658
+ ldr r4, _022216CC ; =0x02243040
+ mov r5, #0
+_0222167C:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0x38]
+ bl MOD13_0223B974
+ add r5, r5, #1
+ cmp r5, #2
+ blt _0222167C
+ ldr r4, _022216CC ; =0x02243040
+ mov r5, #0
+_022216A0:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0x10]
+ bl MOD13_0223B974
+ add r5, r5, #1
+ cmp r5, #0xa
+ blt _022216A0
+ ldr r0, _022216CC ; =0x02243040
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_022216CC: .word 0x02243040
+
+ arm_func_start MOD13_022216D0
+MOD13_022216D0: ; 0x022216D0
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _0222173C ; =0x02243040
+ mov r4, r0
+ ldr r0, [r1]
+ ldr r1, _02221740 ; =0x01FF0000
+ ldr r3, [r0, #0x10]
+ mov r0, #0
+ ldr r2, [r3]
+ and r1, r2, r1
+ mov r1, r1, lsr #0x10
+ str r1, [sp]
+ ldr r1, [r3]
+ and r1, r1, #0xff
+ str r1, [sp, #4]
+ add r1, r1, #0xc
+ str r1, [sp, #4]
+ bl MOD13_02221B6C
+ ldr r0, [sp, #4]
+ cmp r0, #0xc0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, pc}
+ ldr r1, _02221744 ; =MOD13_0222160C
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222173C: .word 0x02243040
+_02221740: .word 0x01FF0000
+_02221744: .word MOD13_0222160C
+
+ arm_func_start MOD13_02221748
+MOD13_02221748: ; 0x02221748
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _022217B4 ; =0x02243040
+ mov r4, r0
+ ldr r0, [r1]
+ ldr r1, _022217B8 ; =0x01FF0000
+ ldr r3, [r0, #0x1c]
+ mov r0, #1
+ ldr r2, [r3]
+ and r1, r2, r1
+ mov r1, r1, lsr #0x10
+ str r1, [sp]
+ ldr r1, [r3]
+ and r1, r1, #0xff
+ str r1, [sp, #4]
+ add r1, r1, #0xc
+ str r1, [sp, #4]
+ bl MOD13_02221B6C
+ ldr r0, [sp, #4]
+ cmp r0, #0xc0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, pc}
+ ldr r1, _022217BC ; =MOD13_022216D0
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022217B4: .word 0x02243040
+_022217B8: .word 0x01FF0000
+_022217BC: .word MOD13_022216D0
+
+ arm_func_start MOD13_022217C0
+MOD13_022217C0: ; 0x022217C0
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _0222182C ; =0x02243040
+ mov r4, r0
+ ldr r0, [r1]
+ ldr r1, _02221830 ; =0x01FF0000
+ ldr r3, [r0, #0x28]
+ mov r0, #2
+ ldr r2, [r3]
+ and r1, r2, r1
+ mov r1, r1, lsr #0x10
+ str r1, [sp]
+ ldr r1, [r3]
+ and r1, r1, #0xff
+ str r1, [sp, #4]
+ add r1, r1, #0xc
+ str r1, [sp, #4]
+ bl MOD13_02221B6C
+ ldr r0, [sp, #4]
+ cmp r0, #0xc0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, pc}
+ ldr r1, _02221834 ; =MOD13_02221748
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222182C: .word 0x02243040
+_02221830: .word 0x01FF0000
+_02221834: .word MOD13_02221748
+
+ arm_func_start MOD13_02221838
+MOD13_02221838: ; 0x02221838
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _022218A4 ; =0x02243040
+ mov r4, r0
+ ldr r0, [r1]
+ ldr r1, _022218A8 ; =0x01FF0000
+ ldr r3, [r0, #0x34]
+ mov r0, #3
+ ldr r2, [r3]
+ and r1, r2, r1
+ mov r1, r1, lsr #0x10
+ str r1, [sp]
+ ldr r1, [r3]
+ and r1, r1, #0xff
+ str r1, [sp, #4]
+ add r1, r1, #0xc
+ str r1, [sp, #4]
+ bl MOD13_02221B6C
+ ldr r0, [sp, #4]
+ cmp r0, #0xc0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, pc}
+ ldr r1, _022218AC ; =MOD13_022217C0
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022218A4: .word 0x02243040
+_022218A8: .word 0x01FF0000
+_022218AC: .word MOD13_022217C0
+
+ arm_func_start MOD13_022218B0
+MOD13_022218B0: ; 0x022218B0
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _02221924 ; =0x02243040
+ mov r4, r0
+ ldr r0, [r1]
+ mov r1, #0
+ ldr r0, [r0, #0x40]
+ bl MOD13_02239ADC
+ ldr r2, [r0]
+ ldr r1, _02221928 ; =0x01FF0000
+ and r1, r2, r1
+ mov r1, r1, lsr #0x10
+ str r1, [sp]
+ ldr r1, [r0]
+ mov r0, #4
+ and r1, r1, #0xff
+ str r1, [sp, #4]
+ add r1, r1, #0xc
+ str r1, [sp, #4]
+ bl MOD13_02221B6C
+ ldr r0, [sp, #4]
+ cmp r0, #0xc0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, pc}
+ ldr r1, _0222192C ; =MOD13_02221838
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02221924: .word 0x02243040
+_02221928: .word 0x01FF0000
+_0222192C: .word MOD13_02221838
+
+ arm_func_start MOD13_02221930
+MOD13_02221930: ; 0x02221930
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _022219FC ; =0x02243040
+ ldr r2, _02221A00 ; =0x0223F0BC
+ ldr r3, [r1]
+ ldrsb ip, [r3, #0x63]
+ add r2, r2, ip, lsl #2
+ ldrsb r2, [r0, r2]
+ strb r2, [r3, #0x63]
+ ldr r1, [r1]
+ ldrsb r2, [r1, #0x63]
+ cmp r2, #0xd
+ bne _0222197C
+ cmp r0, #1
+ beq _02221974
+ cmp r0, #3
+ bne _0222197C
+_02221974:
+ strb ip, [r1, #0x64]
+ b _022219E8
+_0222197C:
+ mvn r0, #0
+ cmp r2, r0
+ bne _022219B4
+ ldrsb r0, [r1, #0x64]
+ cmp r0, #1
+ beq _0222199C
+ cmp r0, #0xa
+ bne _022219A8
+_0222199C:
+ mov r0, #0xa
+ strb r0, [r1, #0x63]
+ b _022219E8
+_022219A8:
+ mov r0, #0xb
+ strb r0, [r1, #0x63]
+ b _022219E8
+_022219B4:
+ mvn r0, #1
+ cmp r2, r0
+ bne _022219E8
+ ldrsb r0, [r1, #0x64]
+ cmp r0, #1
+ beq _022219D4
+ cmp r0, #0xa
+ bne _022219E0
+_022219D4:
+ mov r0, #1
+ strb r0, [r1, #0x63]
+ b _022219E8
+_022219E0:
+ mov r0, #2
+ strb r0, [r1, #0x63]
+_022219E8:
+ bl MOD13_02221A04
+ mov r0, #8
+ bl MOD13_0223424C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022219FC: .word 0x02243040
+_02221A00: .word 0x0223F0BC
+
+ arm_func_start MOD13_02221A04
+MOD13_02221A04: ; 0x02221A04
+ stmdb sp!, {r4, lr}
+ ldr r0, _02221A84 ; =0x02243040
+ ldr r1, [r0]
+ ldrsb r0, [r1, #0x63]
+ cmp r0, #0xb
+ movle r4, #0x44
+ ldr r0, [r1, #0x58]
+ movgt r4, #0x45
+ mov r1, #0
+ bl MOD13_02239ADC
+ mov r2, r0
+ mov r1, r4
+ mov r0, #0
+ bl MOD13_02239E8C
+ ldr r0, _02221A84 ; =0x02243040
+ mvn r1, #0
+ ldr r0, [r0]
+ mov r2, #2
+ ldr r0, [r0, #0x58]
+ bl MOD13_02239814
+ ldr r0, _02221A84 ; =0x02243040
+ ldr r2, _02221A88 ; =0x0223F084
+ ldr r0, [r0]
+ ldr r3, _02221A8C ; =0x0223F086
+ ldrsb ip, [r0, #0x63]
+ ldr r0, [r0, #0x58]
+ mvn r1, #0
+ mov ip, ip, lsl #2
+ ldrh r2, [r2, ip]
+ ldrh r3, [r3, ip]
+ bl MOD13_02239888
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02221A84: .word 0x02243040
+_02221A88: .word 0x0223F084
+_02221A8C: .word 0x0223F086
+
+ arm_func_start MOD13_02221A90
+MOD13_02221A90: ; 0x02221A90
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r0, #0
+ addlt sp, sp, #4
+ ldmltia sp!, {pc}
+ cmp r0, #0xa
+ bge _02221AE8
+ ldr r2, _02221B60 ; =0x02243040
+ ldr r3, _02221B64 ; =0x0223EFE8
+ ldr r2, [r2]
+ add sp, sp, #4
+ add r0, r2, r0, lsl #2
+ ldr ip, [r0, #0x10]
+ ldr r0, [ip]
+ bic r0, r0, #0xc00
+ str r0, [ip]
+ ldrh r2, [ip, #4]
+ ldrb r0, [r3, r1]
+ bic r1, r2, #0xf000
+ orr r0, r1, r0, lsl #12
+ strh r0, [ip, #4]
+ ldmia sp!, {pc}
+_02221AE8:
+ sub r3, r0, #0xa
+ cmp r3, #2
+ bge _02221B30
+ ldr r0, _02221B60 ; =0x02243040
+ ldr r2, _02221B64 ; =0x0223EFE8
+ ldr r0, [r0]
+ add sp, sp, #4
+ add r0, r0, r3, lsl #2
+ ldr ip, [r0, #0x38]
+ ldr r0, [ip]
+ bic r0, r0, #0xc00
+ str r0, [ip]
+ ldrh r3, [ip, #4]
+ ldrb r0, [r2, r1]
+ bic r1, r3, #0xf000
+ orr r0, r1, r0, lsl #12
+ strh r0, [ip, #4]
+ ldmia sp!, {pc}
+_02221B30:
+ ldr r2, _02221B60 ; =0x02243040
+ ldr r3, _02221B68 ; =0x0223EFDC
+ ldr r2, [r2]
+ sub r0, r0, #0xc
+ add r0, r2, r0, lsl #2
+ ldrb r3, [r3, r1]
+ ldr r0, [r0, #0x40]
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_02239994
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02221B60: .word 0x02243040
+_02221B64: .word 0x0223EFE8
+_02221B68: .word 0x0223EFDC
+
+ arm_func_start MOD13_02221B6C
+MOD13_02221B6C: ; 0x02221B6C
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x1c
+ ldr r3, _02221DD8 ; =0x0223F00C
+ ldr sb, _02221DDC ; =0x0223F014
+ ldrb r5, [r3, #3]
+ ldrb r8, [r3]
+ ldrb r7, [r3, #1]
+ strb r5, [sp, #0xb]
+ mov r5, r0
+ mov r0, #3
+ mul r0, r5, r0
+ ldrb r6, [r3, #2]
+ ldrb ip, [r3, #4]
+ ldr r2, _02221DE0 ; =0x0223F004
+ strb r8, [sp, #8]
+ strb r7, [sp, #9]
+ strb r6, [sp, #0xa]
+ strb ip, [sp, #0xc]
+ ldrb r4, [sb]
+ ldrb r3, [sb, #1]
+ ldrb fp, [sb, #2]
+ ldrb sl, [sb, #3]
+ ldrb sb, [sb, #4]
+ ldrb lr, [r2]
+ ldrb r8, [r2, #1]
+ ldrb r7, [r2, #2]
+ ldrb r6, [r2, #3]
+ ldrb r2, [r2, #4]
+ strb r4, [sp, #0xd]
+ add ip, sp, #8
+ str r0, [sp, #4]
+ ldrb r0, [ip, r5]
+ strb r3, [sp, #0xe]
+ strb r2, [sp, #0x16]
+ mov r4, r1
+ ldr r3, [sp, #4]
+ strb fp, [sp, #0xf]
+ strb sl, [sp, #0x10]
+ strb sb, [sp, #0x11]
+ strb lr, [sp, #0x12]
+ strb r8, [sp, #0x13]
+ strb r7, [sp, #0x14]
+ strb r6, [sp, #0x15]
+ cmp r0, #0
+ mov r2, #0
+ ble _02221C98
+ and r1, r4, #0xff
+ add r0, ip, r5
+ ldr r6, _02221DE4 ; =0x02243040
+ ldr r7, _02221DE8 ; =0x0223F05C
+ ldr fp, _02221DEC ; =0xC1FFFCFF
+ ldr ip, _02221DF0 ; =0x000001FF
+ ldr lr, _02221DF4 ; =0xFE00FF00
+_02221C40:
+ ldr r8, [r6]
+ mov sb, r3, lsl #2
+ add r8, r8, r3, lsl #2
+ ldr r8, [r8, #0x10]
+ add r2, r2, #1
+ ldr sl, [r8]
+ and sl, sl, fp
+ str sl, [r8]
+ ldrh r8, [r7, sb]
+ ldr sb, [r6]
+ add sb, sb, r3, lsl #2
+ ldr sb, [sb, #0x10]
+ and r8, r8, ip
+ ldr sl, [sb]
+ add r3, r3, #1
+ and sl, sl, lr
+ orr sl, sl, r1
+ orr r8, sl, r8, lsl #16
+ str r8, [sb]
+ ldrb r8, [r0]
+ cmp r2, r8
+ blt _02221C40
+_02221C98:
+ cmp r5, #4
+ bge _02221CD4
+ ldr r0, _02221DE4 ; =0x02243040
+ mov r2, #2
+ ldr r3, [r0]
+ ldr r0, [sp, #4]
+ str r2, [sp]
+ ldr r1, _02221DE8 ; =0x0223F05C
+ mov r0, r0, lsl #2
+ ldrh r1, [r1, r0]
+ add r2, r3, r5, lsl #2
+ ldr r0, [r3, r5, lsl #2]
+ ldr r3, [r2, #0x48]
+ mov r2, r4
+ bl MOD13_0223A440
+_02221CD4:
+ add r3, sp, #0xd
+ ldrb r1, [r3, r5]
+ mov r0, #0
+ cmp r1, #0
+ ble _02221D58
+ and r2, r4, #0xff
+ add r1, r3, r5
+ ldr r8, _02221DE4 ; =0x02243040
+ ldr sb, _02221DF8 ; =0x0223F024
+ ldr r3, _02221DEC ; =0xC1FFFCFF
+ ldr r6, _02221DF0 ; =0x000001FF
+ ldr r7, _02221DF4 ; =0xFE00FF00
+_02221D04:
+ ldr sl, [r8]
+ mov fp, r0, lsl #2
+ add sl, sl, r0, lsl #2
+ ldr sl, [sl, #0x38]
+ ldr ip, [sl]
+ and ip, ip, r3
+ str ip, [sl]
+ ldr ip, [r8]
+ ldrh sl, [sb, fp]
+ add fp, ip, r0, lsl #2
+ ldr fp, [fp, #0x38]
+ and sl, sl, r6
+ ldr ip, [fp]
+ add r0, r0, #1
+ and ip, ip, r7
+ orr ip, ip, r2
+ orr sl, ip, sl, lsl #16
+ str sl, [fp]
+ ldrb sl, [r1]
+ cmp r0, sl
+ blt _02221D04
+_02221D58:
+ add r1, sp, #0x12
+ ldrb r0, [r1, r5]
+ mov r8, #0
+ cmp r0, #0
+ addle sp, sp, #0x1c
+ ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add sb, r1, r5
+ ldr sl, _02221DE4 ; =0x02243040
+ ldr r5, _02221DFC ; =0x0223F02C
+ mov r6, r8
+ mvn r7, #0
+_02221D84:
+ ldr r0, [sl]
+ mov r1, r7
+ add r0, r0, r8, lsl #2
+ ldr r0, [r0, #0x40]
+ mov r2, r6
+ mov r3, r6
+ bl MOD13_02239A1C
+ ldr r0, [sl]
+ mov r1, r8, lsl #2
+ add r0, r0, r8, lsl #2
+ ldrh r2, [r5, r1]
+ ldr r0, [r0, #0x40]
+ mov r1, r7
+ mov r3, r4
+ bl MOD13_02239888
+ ldrb r0, [sb]
+ add r8, r8, #1
+ cmp r8, r0
+ blt _02221D84
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_02221DD8: .word 0x0223F00C
+_02221DDC: .word 0x0223F014
+_02221DE0: .word 0x0223F004
+_02221DE4: .word 0x02243040
+_02221DE8: .word 0x0223F05C
+_02221DEC: .word 0xC1FFFCFF
+_02221DF0: .word 0x000001FF
+_02221DF4: .word 0xFE00FF00
+_02221DF8: .word 0x0223F024
+_02221DFC: .word 0x0223F02C
+
+ arm_func_start MOD13_02221E00
+MOD13_02221E00: ; 0x02221E00
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0x20
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _02221E20
+ mov r0, #0
+ bl MOD13_02221930
+_02221E20:
+ mov r0, #0x40
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _02221E38
+ mov r0, #1
+ bl MOD13_02221930
+_02221E38:
+ mov r0, #0x10
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _02221E50
+ mov r0, #2
+ bl MOD13_02221930
+_02221E50:
+ mov r0, #0x80
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _02221E68
+ mov r0, #3
+ bl MOD13_02221930
+_02221E68:
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _02221F28
+ ldr r0, _02221FB0 ; =0x02243040
+ ldr r0, [r0]
+ ldrsb r2, [r0, #0x63]
+ cmp r2, #0xa
+ bge _02221EB8
+ ldrb r1, [r0, #0x67]
+ cmp r1, #0
+ ldrne r1, _02221FB4 ; =0x0223F034
+ addne sp, sp, #4
+ ldrneb r1, [r1, r2]
+ strneb r1, [r0, #0x60]
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02221EB8:
+ sub r1, r2, #0xa
+ cmp r1, #2
+ bge _02221F18
+ cmp r1, #0
+ bne _02221ED8
+ ldrb r1, [r0, #0x66]
+ cmp r1, #0
+ beq _02221EF0
+_02221ED8:
+ sub r1, r2, #0xa
+ cmp r1, #1
+ bne _02221F00
+ ldrb r1, [r0, #0x68]
+ cmp r1, #0
+ bne _02221F00
+_02221EF0:
+ mov r0, #9
+ bl MOD13_0223424C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02221F00:
+ ldr r1, _02221FB8 ; =0x0223EFF0
+ sub r2, r2, #0xa
+ ldrb r1, [r1, r2]
+ add sp, sp, #4
+ strb r1, [r0, #0x60]
+ ldmia sp!, {pc}
+_02221F18:
+ ldr r1, _02221FBC ; =0x0223EFEC
+ sub r2, r2, #0xc
+ ldrb r1, [r1, r2]
+ strb r1, [r0, #0x60]
+_02221F28:
+ mov r0, #2
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _02221F8C
+ ldr r0, _02221FB0 ; =0x02243040
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x66]
+ cmp r0, #0
+ bne _02221F7C
+ ldrb r0, [r1, #0x69]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _02221FB0 ; =0x02243040
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x69]
+ ldmia sp!, {pc}
+_02221F7C:
+ mov r0, #0x10
+ strb r0, [r1, #0x60]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02221F8C:
+ mov r0, #2
+ bl MOD13_0223B38C
+ cmp r0, #0
+ ldrne r0, _02221FB0 ; =0x02243040
+ movne r1, #0
+ ldrne r0, [r0]
+ strneb r1, [r0, #0x69]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02221FB0: .word 0x02243040
+_02221FB4: .word 0x0223F034
+_02221FB8: .word 0x0223EFF0
+_02221FBC: .word 0x0223EFEC
+
+ arm_func_start MOD13_02221FC0
+MOD13_02221FC0: ; 0x02221FC0
+ stmdb sp!, {r4, lr}
+ ldr r1, _02222008 ; =0x02243040
+ mov r4, r0
+ ldr r1, [r1]
+ ldrsb r1, [r1, #0x62]
+ cmp r4, r1
+ ldmeqia sp!, {r4, pc}
+ mov r1, #1
+ bl MOD13_02221A90
+ ldr r0, _02222008 ; =0x02243040
+ mov r1, #0
+ ldr r0, [r0]
+ ldrsb r0, [r0, #0x62]
+ bl MOD13_02221A90
+ ldr r0, _02222008 ; =0x02243040
+ ldr r0, [r0]
+ strb r4, [r0, #0x62]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02222008: .word 0x02243040
+
+ arm_func_start MOD13_0222200C
+MOD13_0222200C: ; 0x0222200C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ ldr r0, _022221DC ; =0x0223F75C
+ bl MOD13_0223B320
+ cmp r0, #0
+ beq _022221BC
+ ldr r6, _022221E0 ; =0x0223F05C
+ mov r7, #0
+ ldr r5, _022221E4 ; =0x0223EFF4
+ add r4, sp, #0
+_02222034:
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl MOD13_0223AB74
+ mov r0, r4
+ bl MOD13_0223B320
+ cmp r0, #0
+ beq _02222074
+ ldr r0, _022221E8 ; =0x02243040
+ ldr r0, [r0]
+ ldrsb r0, [r0, #0x61]
+ cmp r0, r7
+ bne _022221BC
+ mov r0, r7
+ bl MOD13_02221FC0
+ b _022221C4
+_02222074:
+ add r7, r7, #1
+ cmp r7, #0xa
+ add r6, r6, #4
+ blt _02222034
+ ldr r7, _022221EC ; =0x0223F024
+ mov r6, #0
+ ldr r5, _022221F0 ; =0x0223EFFC
+ add r4, sp, #0
+_02222094:
+ mov r0, r7
+ mov r1, r5
+ mov r2, r4
+ bl MOD13_0223AB74
+ mov r0, r4
+ bl MOD13_0223B320
+ cmp r0, #0
+ beq _0222214C
+ ldr r1, _022221E8 ; =0x02243040
+ add r0, r6, #0xa
+ ldr r1, [r1]
+ ldrsb r1, [r1, #0x61]
+ cmp r1, r0
+ bne _022221BC
+ bl MOD13_02221FC0
+ cmp r6, #0
+ bne _022221C4
+ ldr r0, _022221E8 ; =0x02243040
+ ldr r2, [r0]
+ ldrb r1, [r2, #0x65]
+ add r1, r1, #1
+ strb r1, [r2, #0x65]
+ ldr r2, [r0]
+ ldrb r1, [r2, #0x65]
+ cmp r1, #0x28
+ addlo sp, sp, #0xc
+ ldmloia sp!, {r4, r5, r6, r7, pc}
+ ldrb r1, [r2, #0x66]
+ cmp r1, #0
+ bne _0222212C
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _022221E8 ; =0x02243040
+ mvn r1, #0
+ ldr r0, [r0]
+ add sp, sp, #0xc
+ strb r1, [r0, #0x61]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_0222212C:
+ mov r1, #0x10
+ strb r1, [r2, #0x60]
+ ldr r1, [r0]
+ add sp, sp, #0xc
+ ldrb r0, [r1, #0x65]
+ sub r0, r0, #7
+ strb r0, [r1, #0x65]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_0222214C:
+ add r6, r6, #1
+ cmp r6, #2
+ add r7, r7, #4
+ blt _02222094
+ ldr r7, _022221F4 ; =0x0223F02C
+ mov r6, #0
+ ldr r5, _022221F8 ; =0x0223F000
+ add r4, sp, #0
+_0222216C:
+ mov r0, r7
+ mov r1, r5
+ mov r2, r4
+ bl MOD13_0223AB74
+ mov r0, r4
+ bl MOD13_0223B320
+ cmp r0, #0
+ beq _022221AC
+ ldr r1, _022221E8 ; =0x02243040
+ add r0, r6, #0xc
+ ldr r1, [r1]
+ ldrsb r1, [r1, #0x61]
+ cmp r1, r0
+ bne _022221BC
+ bl MOD13_02221FC0
+ b _022221C4
+_022221AC:
+ add r6, r6, #1
+ cmp r6, #2
+ add r7, r7, #4
+ blt _0222216C
+_022221BC:
+ mvn r0, #0
+ bl MOD13_02221FC0
+_022221C4:
+ ldr r0, _022221E8 ; =0x02243040
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x65]
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022221DC: .word 0x0223F75C
+_022221E0: .word 0x0223F05C
+_022221E4: .word 0x0223EFF4
+_022221E8: .word 0x02243040
+_022221EC: .word 0x0223F024
+_022221F0: .word 0x0223EFFC
+_022221F4: .word 0x0223F02C
+_022221F8: .word 0x0223F000
+
+ arm_func_start MOD13_022221FC
+MOD13_022221FC: ; 0x022221FC
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ ldr r1, _022223A0 ; =0x02243040
+ ldr r0, _022223A4 ; =0x0223F75C
+ ldr r1, [r1]
+ mov r2, #0
+ strb r2, [r1, #0x60]
+ bl MOD13_0223B1DC
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r7, _022223A8 ; =0x0223F05C
+ mov r4, #0
+ ldr r6, _022223AC ; =0x0223EFF4
+ add r5, sp, #0
+_02222238:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ bl MOD13_0223AB74
+ mov r0, r5
+ bl MOD13_0223B1DC
+ cmp r0, #0
+ beq _02222290
+ ldr r0, _022223A0 ; =0x02243040
+ ldr r2, [r0]
+ ldrsb r1, [r2, #0x61]
+ cmp r1, r4
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r1, _022223B0 ; =0x0223F034
+ ldrb r1, [r1, r4]
+ strb r1, [r2, #0x60]
+ ldr r0, [r0]
+ strb r4, [r0, #0x63]
+ bl MOD13_02221A04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02222290:
+ add r4, r4, #1
+ cmp r4, #0xa
+ add r7, r7, #4
+ blt _02222238
+ ldr r7, _022223B4 ; =0x0223F024
+ mov r4, #0
+ ldr r6, _022223B8 ; =0x0223EFFC
+ add r5, sp, #0
+_022222B0:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ bl MOD13_0223AB74
+ mov r0, r5
+ bl MOD13_0223B1DC
+ cmp r0, #0
+ beq _0222230C
+ ldr r0, _022223A0 ; =0x02243040
+ add r2, r4, #0xa
+ ldr r3, [r0]
+ ldrsb r1, [r3, #0x61]
+ cmp r1, r2
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r1, _022223BC ; =0x0223EFF0
+ ldrb r1, [r1, r4]
+ strb r1, [r3, #0x60]
+ ldr r0, [r0]
+ strb r2, [r0, #0x63]
+ bl MOD13_02221A04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_0222230C:
+ add r4, r4, #1
+ cmp r4, #2
+ add r7, r7, #4
+ blt _022222B0
+ ldr r7, _022223C0 ; =0x0223F02C
+ mov r4, #0
+ ldr r6, _022223C4 ; =0x0223F000
+ add r5, sp, #0
+_0222232C:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ bl MOD13_0223AB74
+ mov r0, r5
+ bl MOD13_0223B1DC
+ cmp r0, #0
+ beq _02222388
+ ldr r0, _022223A0 ; =0x02243040
+ add r2, r4, #0xc
+ ldr r3, [r0]
+ ldrsb r1, [r3, #0x61]
+ cmp r1, r2
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r1, _022223C8 ; =0x0223EFEC
+ ldrb r1, [r1, r4]
+ strb r1, [r3, #0x60]
+ ldr r0, [r0]
+ strb r2, [r0, #0x63]
+ bl MOD13_02221A04
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02222388:
+ add r4, r4, #1
+ cmp r4, #2
+ add r7, r7, #4
+ blt _0222232C
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022223A0: .word 0x02243040
+_022223A4: .word 0x0223F75C
+_022223A8: .word 0x0223F05C
+_022223AC: .word 0x0223EFF4
+_022223B0: .word 0x0223F034
+_022223B4: .word 0x0223F024
+_022223B8: .word 0x0223EFFC
+_022223BC: .word 0x0223EFF0
+_022223C0: .word 0x0223F02C
+_022223C4: .word 0x0223F000
+_022223C8: .word 0x0223EFEC
+
+ arm_func_start MOD13_022223CC
+MOD13_022223CC: ; 0x022223CC
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ ldr r0, _02222588 ; =0x0223F75C
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _0222258C ; =0x02243040
+ mvn r1, #0
+ ldr r0, [r0]
+ ldr r7, _02222590 ; =0x0223F05C
+ strb r1, [r0, #0x61]
+ mov r4, #0
+ ldr r6, _02222594 ; =0x0223EFF4
+ add r5, sp, #0
+_02222408:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ bl MOD13_0223AB74
+ mov r0, r5
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ beq _02222468
+ ldr r0, _0222258C ; =0x02243040
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x67]
+ cmp r0, #0
+ bne _0222244C
+ mov r0, #9
+ bl MOD13_0223424C
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_0222244C:
+ mov r0, #0
+ bl MOD13_0223424C
+ ldr r0, _0222258C ; =0x02243040
+ add sp, sp, #0xc
+ ldr r0, [r0]
+ strb r4, [r0, #0x61]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02222468:
+ add r4, r4, #1
+ cmp r4, #0xa
+ add r7, r7, #4
+ blt _02222408
+ ldr r7, _02222598 ; =0x0223F024
+ mov r4, #0
+ ldr r6, _0222259C ; =0x0223EFFC
+ add r5, sp, #0
+_02222488:
+ mov r0, r7
+ mov r1, r6
+ mov r2, r5
+ bl MOD13_0223AB74
+ mov r0, r5
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ beq _02222510
+ cmp r4, #0
+ bne _022224C4
+ ldr r0, _0222258C ; =0x02243040
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x66]
+ cmp r0, #0
+ beq _022224E0
+_022224C4:
+ cmp r4, #1
+ bne _022224F0
+ ldr r0, _0222258C ; =0x02243040
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x68]
+ cmp r0, #0
+ bne _022224F0
+_022224E0:
+ mov r0, #9
+ bl MOD13_0223424C
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_022224F0:
+ mov r0, #0
+ bl MOD13_0223424C
+ ldr r0, _0222258C ; =0x02243040
+ add r1, r4, #0xa
+ ldr r0, [r0]
+ add sp, sp, #0xc
+ strb r1, [r0, #0x61]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02222510:
+ add r4, r4, #1
+ cmp r4, #2
+ add r7, r7, #4
+ blt _02222488
+ ldr r7, _022225A0 ; =0x0223F02C
+ mov r6, #0
+ ldr r5, _022225A4 ; =0x0223F000
+ add r4, sp, #0
+_02222530:
+ mov r0, r7
+ mov r1, r5
+ mov r2, r4
+ bl MOD13_0223AB74
+ mov r0, r4
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ beq _02222570
+ mov r0, #0
+ bl MOD13_0223424C
+ ldr r0, _0222258C ; =0x02243040
+ add r1, r6, #0xc
+ ldr r0, [r0]
+ add sp, sp, #0xc
+ strb r1, [r0, #0x61]
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02222570:
+ add r6, r6, #1
+ cmp r6, #2
+ add r7, r7, #4
+ blt _02222530
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02222588: .word 0x0223F75C
+_0222258C: .word 0x02243040
+_02222590: .word 0x0223F05C
+_02222594: .word 0x0223EFF4
+_02222598: .word 0x0223F024
+_0222259C: .word 0x0223EFFC
+_022225A0: .word 0x0223F02C
+_022225A4: .word 0x0223F000
+
+ arm_func_start MOD13_022225A8
+MOD13_022225A8: ; 0x022225A8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_022223CC
+ bl MOD13_022221FC
+ bl MOD13_0222200C
+ bl MOD13_02221E00
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _02222640 ; =0x02243040
+ mov r4, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0, #0x40]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r0, _02222644 ; =0x0223F02C
+ ldr r1, [sp, #4]
+ ldrh r0, [r0, #2]
+ sub r1, r1, #0xc
+ str r1, [sp, #4]
+ cmp r1, r0
+ ble _0222261C
+ mov r0, #4
+ bl MOD13_02221B6C
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_0222261C:
+ mov r1, r0
+ mov r0, #4
+ bl MOD13_02221B6C
+ bl MOD13_02221A04
+ ldr r1, _02222648 ; =MOD13_022225A8
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02222640: .word 0x02243040
+_02222644: .word 0x0223F02C
+_02222648: .word MOD13_022225A8
+
+ arm_func_start MOD13_0222264C
+MOD13_0222264C: ; 0x0222264C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _022226D8 ; =0x02243040
+ ldr r2, _022226DC ; =0x0223F05C
+ ldr r3, [r1]
+ ldr r1, _022226E0 ; =0x01FF0000
+ ldr ip, [r3, #0x34]
+ ldrh r2, [r2, #0x26]
+ ldr r3, [ip]
+ mov r4, r0
+ and r0, r3, r1
+ mov r0, r0, lsr #0x10
+ str r0, [sp]
+ ldr r0, [ip]
+ and r0, r0, #0xff
+ sub r1, r0, #0xc
+ str r0, [sp, #4]
+ str r1, [sp, #4]
+ cmp r1, r2
+ ble _022226AC
+ mov r0, #3
+ bl MOD13_02221B6C
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_022226AC:
+ mov r1, r2
+ mov r0, #3
+ bl MOD13_02221B6C
+ mov r0, #4
+ mov r1, #0xc0
+ bl MOD13_02221B6C
+ ldr r1, _022226E4 ; =0x022225C8
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022226D8: .word 0x02243040
+_022226DC: .word 0x0223F05C
+_022226E0: .word 0x01FF0000
+_022226E4: .word 0x022225C8
+
+ arm_func_start MOD13_022226E8
+MOD13_022226E8: ; 0x022226E8
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _02222774 ; =0x02243040
+ ldr r2, _02222778 ; =0x0223F05C
+ ldr r3, [r1]
+ ldr r1, _0222277C ; =0x01FF0000
+ ldr ip, [r3, #0x28]
+ ldrh r2, [r2, #0x1a]
+ ldr r3, [ip]
+ mov r4, r0
+ and r0, r3, r1
+ mov r0, r0, lsr #0x10
+ str r0, [sp]
+ ldr r0, [ip]
+ and r0, r0, #0xff
+ sub r1, r0, #0xc
+ str r0, [sp, #4]
+ str r1, [sp, #4]
+ cmp r1, r2
+ ble _02222748
+ mov r0, #2
+ bl MOD13_02221B6C
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_02222748:
+ mov r1, r2
+ mov r0, #2
+ bl MOD13_02221B6C
+ mov r0, #3
+ mov r1, #0xc0
+ bl MOD13_02221B6C
+ ldr r1, _02222780 ; =MOD13_0222264C
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02222774: .word 0x02243040
+_02222778: .word 0x0223F05C
+_0222277C: .word 0x01FF0000
+_02222780: .word MOD13_0222264C
+
+ arm_func_start MOD13_02222784
+MOD13_02222784: ; 0x02222784
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _02222810 ; =0x02243040
+ ldr r2, _02222814 ; =0x0223F05C
+ ldr r3, [r1]
+ ldr r1, _02222818 ; =0x01FF0000
+ ldr ip, [r3, #0x1c]
+ ldrh r2, [r2, #0xe]
+ ldr r3, [ip]
+ mov r4, r0
+ and r0, r3, r1
+ mov r0, r0, lsr #0x10
+ str r0, [sp]
+ ldr r0, [ip]
+ and r0, r0, #0xff
+ sub r1, r0, #0xc
+ str r0, [sp, #4]
+ str r1, [sp, #4]
+ cmp r1, r2
+ ble _022227E4
+ mov r0, #1
+ bl MOD13_02221B6C
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_022227E4:
+ mov r1, r2
+ mov r0, #1
+ bl MOD13_02221B6C
+ mov r0, #2
+ mov r1, #0xc0
+ bl MOD13_02221B6C
+ ldr r1, _0222281C ; =MOD13_022226E8
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02222810: .word 0x02243040
+_02222814: .word 0x0223F05C
+_02222818: .word 0x01FF0000
+_0222281C: .word MOD13_022226E8
+
+ arm_func_start MOD13_02222820
+MOD13_02222820: ; 0x02222820
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _022228AC ; =0x02243040
+ ldr r2, _022228B0 ; =0x0223F05C
+ ldr r3, [r1]
+ ldr r1, _022228B4 ; =0x01FF0000
+ ldr ip, [r3, #0x10]
+ ldrh r2, [r2, #2]
+ ldr r3, [ip]
+ mov r4, r0
+ and r0, r3, r1
+ mov r0, r0, lsr #0x10
+ str r0, [sp]
+ ldr r0, [ip]
+ and r0, r0, #0xff
+ sub r1, r0, #0xc
+ str r0, [sp, #4]
+ str r1, [sp, #4]
+ cmp r1, r2
+ ble _02222880
+ mov r0, #0
+ bl MOD13_02221B6C
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_02222880:
+ mov r1, r2
+ mov r0, #0
+ bl MOD13_02221B6C
+ mov r0, #1
+ mov r1, #0xc0
+ bl MOD13_02221B6C
+ ldr r1, _022228B8 ; =MOD13_02222784
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022228AC: .word 0x02243040
+_022228B0: .word 0x0223F05C
+_022228B4: .word 0x01FF0000
+_022228B8: .word MOD13_02222784
+
+ arm_func_start MOD13_022228BC
+MOD13_022228BC: ; 0x022228BC
+ ldr r0, _022228D4 ; =0x02243040
+ ldr r0, [r0]
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_022228D4: .word 0x02243040
+
+ arm_func_start MOD13_022228D8
+MOD13_022228D8: ; 0x022228D8
+ ldr r1, _022228E8 ; =0x02243040
+ ldr r1, [r1]
+ strb r0, [r1, #0x68]
+ bx lr
+ .align 2, 0
+_022228E8: .word 0x02243040
+
+ arm_func_start MOD13_022228EC
+MOD13_022228EC: ; 0x022228EC
+ ldr r1, _022228FC ; =0x02243040
+ ldr r1, [r1]
+ strb r0, [r1, #0x67]
+ bx lr
+ .align 2, 0
+_022228FC: .word 0x02243040
+
+ arm_func_start MOD13_02222900
+MOD13_02222900: ; 0x02222900
+ ldr r1, _02222910 ; =0x02243040
+ ldr r1, [r1]
+ strb r0, [r1, #0x66]
+ bx lr
+ .align 2, 0
+_02222910: .word 0x02243040
+
+ arm_func_start MOD13_02222914
+MOD13_02222914: ; 0x02222914
+ ldr r0, _02222924 ; =0x02243040
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x60]
+ bx lr
+ .align 2, 0
+_02222924: .word 0x02243040
+
+ arm_func_start MOD13_02222928
+MOD13_02222928: ; 0x02222928
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222295C ; =0x02243040
+ ldr r0, [r0]
+ ldr r0, [r0, #0x58]
+ bl MOD13_02239AE8
+ ldr r0, _0222295C ; =0x02243040
+ ldr r1, _02222960 ; =MOD13_022218B0
+ ldr r0, [r0]
+ ldr r0, [r0, #0x5c]
+ bl MOD13_0223C130
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222295C: .word 0x02243040
+_02222960: .word MOD13_022218B0
+
+ arm_func_start MOD13_02222964
+MOD13_02222964: ; 0x02222964
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x3c
+ ldr r1, _02222CCC ; =0x0223F01C
+ ldr r0, _02222CD0 ; =0x0223EFF4
+ ldrh r2, [r1, #4]
+ ldrh r4, [r1, #6]
+ ldrh r6, [r1]
+ ldrh r5, [r1, #2]
+ ldrh r3, [r0]
+ strh r2, [sp, #0x30]
+ ldrh r2, [r0, #2]
+ strh r4, [sp, #0x32]
+ mov r0, #0x6c
+ mov r1, #4
+ strh r6, [sp, #0x2c]
+ strh r5, [sp, #0x2e]
+ strh r3, [sp, #0x30]
+ strh r2, [sp, #0x32]
+ bl MOD13_0223AFE0
+ ldr r8, _02222CD4 ; =0x02243040
+ mov r1, #0x1f
+ str r0, [r8]
+ strb r1, [r0, #0x60]
+ ldr r0, [r8]
+ mov r6, #0
+ strb r6, [r0, #0x63]
+ ldr r0, [r8]
+ mov r1, #1
+ strb r1, [r0, #0x66]
+ ldr r0, [r8]
+ strb r1, [r0, #0x67]
+ ldr r0, [r8]
+ strb r1, [r0, #0x68]
+ mov r5, r6
+ mov r4, #0x36
+ ldr r7, _02222CD8 ; =0xC1FFFCFF
+_022229F4:
+ mov r0, r5
+ mov r1, r4
+ bl MOD13_02239E54
+ ldr r1, [r8]
+ add r1, r1, r6, lsl #2
+ str r0, [r1, #0x10]
+ ldr r0, [r8]
+ add r0, r0, r6, lsl #2
+ ldr r1, [r0, #0x10]
+ ldr r0, [r1]
+ and r0, r0, r7
+ orr r0, r0, #0x200
+ str r0, [r1]
+ ldr r0, [r8]
+ add r0, r0, r6, lsl #2
+ ldr r1, [r0, #0x10]
+ add r6, r6, #1
+ ldrh r0, [r1, #4]
+ cmp r6, #0xa
+ bic r0, r0, #0xc00
+ orr r0, r0, #0xc00
+ strh r0, [r1, #4]
+ blt _022229F4
+ ldr r6, _02222CDC ; =0x0223EFE0
+ mov r5, #0
+ ldr r8, _02222CD4 ; =0x02243040
+ mov r4, r5
+ ldr r7, _02222CD8 ; =0xC1FFFCFF
+_02222A64:
+ ldrb r1, [r6]
+ mov r0, r4
+ bl MOD13_02239E54
+ ldr r1, [r8]
+ add r6, r6, #1
+ add r1, r1, r5, lsl #2
+ str r0, [r1, #0x38]
+ ldr r0, [r8]
+ add r0, r0, r5, lsl #2
+ ldr r1, [r0, #0x38]
+ ldr r0, [r1]
+ and r0, r0, r7
+ orr r0, r0, #0x200
+ str r0, [r1]
+ ldr r0, [r8]
+ add r0, r0, r5, lsl #2
+ ldr r1, [r0, #0x38]
+ add r5, r5, #1
+ ldrh r0, [r1, #4]
+ cmp r5, #2
+ bic r0, r0, #0xc00
+ orr r0, r0, #0xc00
+ strh r0, [r1, #4]
+ blt _02222A64
+ ldr sl, _02222CE0 ; =0x0223EFE4
+ mov sb, #0
+ ldr r4, _02222CD4 ; =0x02243040
+ mov fp, sb
+ str sb, [sp, #0x1c]
+ mov r8, #1
+ mvn r7, #0
+ mov r6, #0x200
+ mov r5, #3
+_02222AE8:
+ ldrb r1, [sl]
+ mov r0, fp
+ mov r2, r8
+ bl MOD13_02239E0C
+ ldr r2, [r4]
+ ldr r3, [sp, #0x1c]
+ add r2, r2, sb, lsl #2
+ str r0, [r2, #0x40]
+ ldr r0, [r4]
+ mov r1, r7
+ add r0, r0, sb, lsl #2
+ ldr r0, [r0, #0x40]
+ mov r2, r6
+ bl MOD13_02239A1C
+ ldr r0, [r4]
+ mov r1, r7
+ add r0, r0, sb, lsl #2
+ ldr r0, [r0, #0x40]
+ mov r2, r5
+ bl MOD13_02239814
+ add sb, sb, #1
+ add sl, sl, #1
+ cmp sb, #2
+ blt _02222AE8
+ ldr r1, _02222CE4 ; =0x0223EFF8
+ mov r8, #0
+ ldrh r0, [r1, #2]
+ ldr r7, _02222CE8 ; =0x0223F040
+ ldr r4, _02222CD4 ; =0x02243040
+ str r0, [sp, #0x14]
+ ldrh r0, [r1]
+ str r8, [sp, #0x10]
+ strh r8, [sp, #0x3a]
+ str r0, [sp, #0x18]
+ add fp, sp, #0x38
+ str r8, [sp, #0x28]
+ str r8, [sp, #0x20]
+ str r8, [sp, #0x24]
+ mov r6, #2
+ mov r5, #0x480
+_02222B88:
+ add r0, sp, #0x34
+ str r0, [sp]
+ ldr r0, [sp, #0x20]
+ ldr r2, [sp, #0x14]
+ mov r1, r0
+ str r1, [sp, #4]
+ ldr r1, [sp, #0x18]
+ mov r3, r0
+ bl MOD13_0223A9A4
+ ldr r1, [r4]
+ ldr sl, [sp, #0x10]
+ str r0, [r1, r8, lsl #2]
+ ldr r0, [sp, #0x24]
+ strh r0, [sp, #0x2c]
+ mov sb, r0
+_02222BC4:
+ mov r0, sl, lsl #1
+ ldrh r1, [r7, r0]
+ ldrh r0, [sp, #0x32]
+ strh r1, [sp, #0x38]
+ str r0, [sp]
+ str r6, [sp, #4]
+ str r5, [sp, #8]
+ str fp, [sp, #0xc]
+ ldr r0, [r4]
+ ldrh r1, [sp, #0x2c]
+ ldr r0, [r0, r8, lsl #2]
+ ldrh r2, [sp, #0x2e]
+ ldrh r3, [sp, #0x30]
+ bl MOD13_0223A4F0
+ add sb, sb, #1
+ cmp sb, #3
+ add sl, sl, #1
+ ldrh r0, [sp, #0x2c]
+ add r0, r0, #0x20
+ strh r0, [sp, #0x2c]
+ blt _02222BC4
+ ldr r0, [sp, #0x28]
+ ldr r1, [sp, #0x34]
+ mov r2, r0
+ bl MOD13_02239B74
+ ldr r1, [sp, #0x10]
+ ldr r2, [r4]
+ add r1, r1, #3
+ str r1, [sp, #0x10]
+ add r1, r2, r8, lsl #2
+ add r8, r8, #1
+ str r0, [r1, #0x48]
+ cmp r8, #4
+ blt _02222B88
+ mov r0, #0
+ mov r1, #0x44
+ mov r2, #1
+ bl MOD13_02239E0C
+ ldr r3, _02222CD4 ; =0x02243040
+ mvn r1, #0
+ ldr r4, [r3]
+ mov r2, #0x200
+ str r0, [r4, #0x58]
+ ldr r0, [r3]
+ mov r3, #0
+ ldr r0, [r0, #0x58]
+ bl MOD13_02239A1C
+ ldr r0, _02222CD4 ; =0x02243040
+ mvn r1, #0
+ ldr r0, [r0]
+ mov r2, #2
+ ldr r0, [r0, #0x58]
+ bl MOD13_02239814
+ mov r0, #0
+ ldr r1, _02222CEC ; =MOD13_02222820
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r2, _02222CD4 ; =0x02243040
+ mov r1, #0xc0
+ ldr r2, [r2]
+ str r0, [r2, #0x5c]
+ mov r0, #0
+ bl MOD13_02221B6C
+ add sp, sp, #0x3c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_02222CCC: .word 0x0223F01C
+_02222CD0: .word 0x0223EFF4
+_02222CD4: .word 0x02243040
+_02222CD8: .word 0xC1FFFCFF
+_02222CDC: .word 0x0223EFE0
+_02222CE0: .word 0x0223EFE4
+_02222CE4: .word 0x0223EFF8
+_02222CE8: .word 0x0223F040
+_02222CEC: .word MOD13_02222820
+
+ arm_func_start MOD13_02222CF0
+MOD13_02222CF0: ; 0x02222CF0
+ ldr ip, _02222CF8 ; =MOD13_0223AF48
+ bx ip
+ .align 2, 0
+_02222CF8: .word MOD13_0223AF48
+
+ arm_func_start MOD13_02222CFC
+MOD13_02222CFC: ; 0x02222CFC
+ ldr ip, _02222D08 ; =MOD13_0223B004
+ mov r1, #0x20
+ bx ip
+ .align 2, 0
+_02222D08: .word MOD13_0223B004
+
+ arm_func_start MOD13_02222D0C
+MOD13_02222D0C: ; 0x02222D0C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02222D74 ; =0x02243048
+ ldr r0, [r0]
+ bl MOD13_02219798
+ cmp r0, #0
+ ldreq r1, _02222D78 ; =0x02243044
+ moveq r0, #1
+ streqb r0, [r1]
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _02222D74 ; =0x02243048
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x116]
+ cmp r0, #1
+ beq _02222D5C
+ add r0, r0, #0xfd
+ and r0, r0, #0xff
+ cmp r0, #2
+ bhi _02222D68
+_02222D5C:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {pc}
+_02222D68:
+ mov r0, #2
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02222D74: .word 0x02243048
+_02222D78: .word 0x02243044
+
+ arm_func_start MOD13_02222D7C
+MOD13_02222D7C: ; 0x02222D7C
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD13_02219C9C
+ cmp r4, #0
+ beq _02222DC0
+ ldr r0, _02222DCC ; =0x02243048
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x116]
+ cmp r0, #0
+ bne _02222DC0
+ ldr r0, _02222DD0 ; =0x02243044
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _02222DC0
+ ldr r0, _02222DD4 ; =0x00000117
+ add r0, r1, r0
+ bl MOD13_0223390C
+_02222DC0:
+ ldr r0, _02222DCC ; =0x02243048
+ bl MOD13_0223AF90
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02222DCC: .word 0x02243048
+_02222DD0: .word 0x02243044
+_02222DD4: .word 0x00000117
+
+ arm_func_start MOD13_02222DD8
+MOD13_02222DD8: ; 0x02222DD8
+ stmdb sp!, {lr}
+ sub sp, sp, #0x104
+ mov r0, #0x26c
+ mov r1, #4
+ bl MOD13_0223AFE0
+ ldr r1, _02222ED4 ; =0x02243048
+ ldr r3, _02222ED8 ; =0x02243044
+ str r0, [r1]
+ mov r0, #0
+ add r1, sp, #0
+ mov r2, #0x104
+ strb r0, [r3]
+ bl MIi_CpuClear16
+ mov r3, #0x50
+ mov r2, #0xc
+ ldr r0, _02222EDC ; =0x0223F0F4
+ add r1, sp, #4
+ strb r3, [sp]
+ strh r2, [sp, #2]
+ bl MI_CpuCopy8
+ ldr r0, _02222ED4 ; =0x02243048
+ mov r2, #3
+ ldr r1, [r0]
+ add ip, sp, #0
+ strh r2, [r1]
+ ldr lr, [r0]
+ mov r2, #0x41
+ add r3, lr, #2
+_02222E48:
+ ldrh r1, [ip], #2
+ ldrh r0, [ip], #2
+ subs r2, r2, #1
+ strh r1, [r3], #2
+ strh r0, [r3], #2
+ bne _02222E48
+ ldr r1, _02222ED4 ; =0x02243048
+ add r0, lr, #0x100
+ mov r3, #1
+ strh r3, [r0, #6]
+ ldr r0, [r1]
+ mvn r2, #0
+ add r0, r0, #0x100
+ strh r2, [r0, #8]
+ ldr r0, [r1]
+ add r0, r0, #0x100
+ strh r3, [r0, #0xa]
+ ldr r0, [r1]
+ add r0, r0, #0x100
+ strh r2, [r0, #0xc]
+ ldr r0, [r1]
+ add r0, r0, #0x100
+ strh r2, [r0, #0xe]
+ ldr r0, [r1]
+ add r0, r0, #0x110
+ bl OS_GetMacAddress
+ ldr r0, _02222EE0 ; =MOD13_02222CFC
+ ldr r1, _02222EE4 ; =MOD13_02222CF0
+ bl MOD13_02219D58
+ cmp r0, #0
+ addeq sp, sp, #0x104
+ ldmeqia sp!, {pc}
+ bl OS_Terminate
+ add sp, sp, #0x104
+ ldmia sp!, {pc}
+ .align 2, 0
+_02222ED4: .word 0x02243048
+_02222ED8: .word 0x02243044
+_02222EDC: .word 0x0223F0F4
+_02222EE0: .word MOD13_02222CFC
+_02222EE4: .word MOD13_02222CF0
+
+ arm_func_start MOD13_02222EE8
+MOD13_02222EE8: ; 0x02222EE8
+ ldr r0, _02222EF8 ; =0x02243050
+ mov r1, #1
+ strb r1, [r0]
+ bx lr
+ .align 2, 0
+_02222EF8: .word 0x02243050
+
+ arm_func_start MOD13_02222EFC
+MOD13_02222EFC: ; 0x02222EFC
+ ldr r1, _02222F18 ; =0x02243058
+ ldr r1, [r1]
+ mov r1, r1, lsr #4
+ ands r0, r1, r0
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_02222F18: .word 0x02243058
+
+ arm_func_start MOD13_02222F1C
+MOD13_02222F1C: ; 0x02222F1C
+ ldr r0, _02222F30 ; =0x02243058
+ ldr r0, [r0]
+ mov r0, r0, lsl #0x1c
+ mov r0, r0, lsr #0x1c
+ bx lr
+ .align 2, 0
+_02222F30: .word 0x02243058
+
+ arm_func_start MOD13_02222F34
+MOD13_02222F34: ; 0x02222F34
+ ldr r0, _02222F40 ; =0x0224304C
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+_02222F40: .word 0x0224304C
+
+ arm_func_start MOD13_02222F44
+MOD13_02222F44: ; 0x02222F44
+ cmp r0, #0
+ ldrne r2, _02222F68 ; =0x02243060
+ ldrne r2, [r2, #8]
+ strne r2, [r0]
+ cmp r1, #0
+ ldrne r0, _02222F68 ; =0x02243060
+ ldrne r0, [r0, #0xc]
+ strne r0, [r1]
+ bx lr
+ .align 2, 0
+_02222F68: .word 0x02243060
+
+ arm_func_start MOD13_02222F6C
+MOD13_02222F6C: ; 0x02222F6C
+ ldr r2, _02222F7C ; =0x02243060
+ str r0, [r2, #8]
+ str r1, [r2, #0xc]
+ bx lr
+ .align 2, 0
+_02222F7C: .word 0x02243060
+
+ arm_func_start MOD13_02222F80
+MOD13_02222F80: ; 0x02222F80
+ cmp r0, #0
+ ldrne r2, _02222FA4 ; =0x02243060
+ ldrne r2, [r2]
+ strne r2, [r0]
+ cmp r1, #0
+ ldrne r0, _02222FA4 ; =0x02243060
+ ldrne r0, [r0, #4]
+ strne r0, [r1]
+ bx lr
+ .align 2, 0
+_02222FA4: .word 0x02243060
+
+ arm_func_start MOD13_02222FA8
+MOD13_02222FA8: ; 0x02222FA8
+ ldr r2, _02222FB8 ; =0x02243060
+ str r0, [r2]
+ str r1, [r2, #4]
+ bx lr
+ .align 2, 0
+_02222FB8: .word 0x02243060
+
+ arm_func_start MOD13_02222FBC
+MOD13_02222FBC: ; 0x02222FBC
+ ldr r1, _02222FC8 ; =0x0224305C
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_02222FC8: .word 0x0224305C
+
+ arm_func_start MOD13_02222FCC
+MOD13_02222FCC: ; 0x02222FCC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl GX_DispOff
+ ldr r1, _02223020 ; =0x04001000
+ ldr r0, [r1]
+ bic r0, r0, #0x10000
+ str r0, [r1]
+ bl MOD13_0223BDD0
+ bl MOD13_0223B6C0
+ bl MOD13_0223B7A0
+ bl MOD13_02234270
+ bl MOD13_02239CE8
+ bl MOD13_0223BA04
+ bl MOD13_0223AA80
+ bl MOD13_0223A3AC
+ bl MOD13_022395A0
+ bl MOD13_0223C2A8
+ bl MOD13_0223B050
+ bl MOD13_0223BEA8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02223020: .word 0x04001000
+
+ arm_func_start MOD13_02223024
+MOD13_02223024: ; 0x02223024
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl GX_VBlankIntr
+ mov r0, #1
+ bl GX_SetBankForBG
+ mov r0, #2
+ bl GX_SetBankForOBJ
+ mov r1, #0
+ mov r2, r1
+ mov r0, #1
+ bl GX_SetGraphicsMode
+ mov r3, #0x4000000
+ ldr r1, [r3]
+ ldr r0, _022232DC ; =0x0400006C
+ bic r1, r1, #0x1f00
+ str r1, [r3]
+ ldr r2, [r3]
+ mov r1, #0
+ bic r2, r2, #0xe000
+ str r2, [r3]
+ bl GXx_SetMasterBrightness_
+ mov r3, #0x4000000
+ ldr r2, [r3]
+ ldr r0, _022232E0 ; =0xFFCFFFEF
+ ldr r1, _022232E4 ; =0x00200010
+ and r0, r2, r0
+ orr r0, r0, r1
+ str r0, [r3]
+ ldr r3, _022232E8 ; =0x04000008
+ ldr r2, _022232EC ; =0x0400000A
+ ldrh r0, [r3]
+ ldr r1, _022232F0 ; =0x0400000C
+ ldr r5, _022232F4 ; =0x0400000E
+ bic r0, r0, #0x40
+ strh r0, [r3]
+ ldrh r0, [r2]
+ mov ip, #0
+ ldr r4, _022232F8 ; =0x04000010
+ bic r0, r0, #0x40
+ strh r0, [r2]
+ ldrh r0, [r1]
+ ldr r3, _022232FC ; =0x04000014
+ ldr r2, _02223300 ; =0x04000018
+ bic r0, r0, #0x40
+ strh r0, [r1]
+ ldrh lr, [r5]
+ ldr r1, _02223304 ; =0x0400001C
+ ldr r0, _02223308 ; =0x04000050
+ bic lr, lr, #0x40
+ strh lr, [r5]
+ str ip, [r4]
+ str ip, [r3]
+ str ip, [r2]
+ str ip, [r1]
+ mov r1, #0x3f
+ mov r2, #0x10
+ bl G2x_SetBlendBrightness_
+ mov r0, #0x80
+ bl GX_SetBankForSubBG
+ mov r0, #0x100
+ bl GX_SetBankForSubOBJ
+ mov r0, #0
+ bl GXS_SetGraphicsMode
+ ldr r1, _0222330C ; =0x04001000
+ ldr r0, [r1]
+ bic r0, r0, #0x1f00
+ str r0, [r1]
+ ldr r0, [r1]
+ bic r0, r0, #0xe000
+ str r0, [r1]
+ ldr r0, _02223310 ; =0x0400106C
+ mov r1, #0
+ bl GXx_SetMasterBrightness_
+ ldr r3, _0222330C ; =0x04001000
+ ldr r0, _022232E0 ; =0xFFCFFFEF
+ ldr r1, [r3]
+ ldr r2, _02223314 ; =0x04001008
+ and r0, r1, r0
+ orr r0, r0, #0x10
+ str r0, [r3]
+ ldrh r0, [r2]
+ ldr r1, _02223318 ; =0x0400100A
+ ldr r3, _0222331C ; =0x0400100C
+ bic r0, r0, #0x40
+ strh r0, [r2]
+ ldrh r0, [r1]
+ ldr r4, _02223320 ; =0x0400100E
+ ldr r2, _02223324 ; =0x04001010
+ bic r0, r0, #0x40
+ strh r0, [r1]
+ ldrh r0, [r3]
+ mov ip, #0
+ ldr r1, _02223328 ; =0x04001014
+ bic r0, r0, #0x40
+ strh r0, [r3]
+ ldrh lr, [r4]
+ ldr r0, _0222332C ; =0x04001018
+ ldr r3, _02223330 ; =0x0400101C
+ bic lr, lr, #0x40
+ strh lr, [r4]
+ str ip, [r2]
+ str ip, [r1]
+ str ip, [r0]
+ ldr r0, _02223334 ; =0x04001050
+ mov r1, #0x3f
+ mov r2, #0x10
+ str ip, [r3]
+ bl G2x_SetBlendBrightness_
+ ldr r3, _022232E8 ; =0x04000008
+ ldr r2, _022232EC ; =0x0400000A
+ ldrh r1, [r3]
+ ldr r0, _02223338 ; =0x00000D08
+ ldr lr, _022232F0 ; =0x0400000C
+ and r1, r1, #0x43
+ orr r1, r1, #0xc00
+ strh r1, [r3]
+ ldrh r1, [r2]
+ mov ip, r5
+ ldr r3, _02223314 ; =0x04001008
+ and r1, r1, #0x43
+ orr r0, r1, r0
+ strh r0, [r2]
+ ldrh r0, [lr]
+ ldr r2, _02223318 ; =0x0400100A
+ ldr r1, _0222331C ; =0x0400100C
+ and r0, r0, #0x43
+ orr r0, r0, #0xe10
+ strh r0, [lr]
+ ldrh r0, [ip]
+ and r0, r0, #0x43
+ orr r0, r0, #0xf10
+ strh r0, [ip]
+ ldrh r0, [r3]
+ and r0, r0, #0x43
+ orr r0, r0, #0xc00
+ strh r0, [r3]
+ ldrh r0, [r2]
+ and r0, r0, #0x43
+ orr r0, r0, #0xd00
+ strh r0, [r2]
+ ldrh r0, [r1]
+ and r0, r0, #0x43
+ orr r0, r0, #0xe00
+ strh r0, [r1]
+ mov r3, r4
+ ldrh r0, [r3]
+ mov r2, #0x4000000
+ ldr r1, _0222333C ; =0x04000304
+ and r0, r0, #0x43
+ orr r0, r0, #0xf00
+ strh r0, [r3]
+ ldr r0, [r2]
+ bic r0, r0, #0x38000000
+ str r0, [r2]
+ ldr r0, [r2]
+ bic r0, r0, #0x7000000
+ str r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #0x8000
+ strh r0, [r1]
+ bl MOD13_0223AAD0
+ bl MOD13_0223BA84
+ bl MOD13_0223BCE4
+ bl MOD13_02239D38
+ bl GX_DispOn
+ ldr r2, _0222330C ; =0x04001000
+ mov r0, #1
+ ldr r1, [r2]
+ orr r1, r1, #0x10000
+ str r1, [r2]
+ bl GX_VBlankIntr
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_022232DC: .word 0x0400006C
+_022232E0: .word 0xFFCFFFEF
+_022232E4: .word 0x00200010
+_022232E8: .word 0x04000008
+_022232EC: .word 0x0400000A
+_022232F0: .word 0x0400000C
+_022232F4: .word 0x0400000E
+_022232F8: .word 0x04000010
+_022232FC: .word 0x04000014
+_02223300: .word 0x04000018
+_02223304: .word 0x0400001C
+_02223308: .word 0x04000050
+_0222330C: .word 0x04001000
+_02223310: .word 0x0400106C
+_02223314: .word 0x04001008
+_02223318: .word 0x0400100A
+_0222331C: .word 0x0400100C
+_02223320: .word 0x0400100E
+_02223324: .word 0x04001010
+_02223328: .word 0x04001014
+_0222332C: .word 0x04001018
+_02223330: .word 0x0400101C
+_02223334: .word 0x04001050
+_02223338: .word 0x00000D08
+_0222333C: .word 0x04000304
+
+ arm_func_start MOD13_02223340
+MOD13_02223340: ; 0x02223340
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, _02223404 ; =0x04000208
+ mov r0, #0
+ ldrh r1, [r2]
+ strh r0, [r2]
+ bl GX_DispOff
+ ldr r1, _02223408 ; =0x04001000
+ ldr r0, [r1]
+ bic r0, r0, #0x10000
+ str r0, [r1]
+ bl OS_IsTickAvailable
+ cmp r0, #0
+ bne _0222337C
+ bl OS_Terminate
+_0222337C:
+ bl OS_IsAlarmAvailable
+ cmp r0, #0
+ bne _0222338C
+ bl OS_Terminate
+_0222338C:
+ mov r0, #0
+ bl GX_VBlankIntr
+ bl FX_Init
+ mvn r0, #0
+ bl FS_Init
+ bl TP_Init
+ bl RTC_Init
+ bl GX_DispOff
+ ldr r1, _02223408 ; =0x04001000
+ ldr r0, [r1]
+ bic r0, r0, #0x10000
+ str r0, [r1]
+ bl MOD13_0223BFE4
+ ldr r0, _0222340C ; =0x02243054
+ ldr r0, [r0]
+ bl MOD13_0223B07C
+ bl MOD13_0223B7E8
+ bl MOD13_0223C2F4
+ bl MOD13_0223962C
+ bl MOD13_0223B6F4
+ bl MOD13_0223A3C0
+ mov r0, #0x700
+ mov r1, #0x20
+ bl MOD13_0223B004
+ str r0, [sp]
+ bl FUN_02096190
+ add r0, sp, #0
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02223404: .word 0x04000208
+_02223408: .word 0x04001000
+_0222340C: .word 0x02243054
+
+ arm_func_start MOD13_02223410
+MOD13_02223410: ; 0x02223410
+ ldr r3, _0222348C ; =0x0224304C
+ ldr r2, _02223490 ; =0x02243058
+ strb r0, [r3]
+ str r1, [r2]
+ cmp r0, #0
+ blt _02223430
+ cmp r0, #5
+ ble _02223438
+_02223430:
+ mov r0, #0
+ bx lr
+_02223438:
+ mov r2, r1, lsl #0x1c
+ mov r2, r2, lsr #0x1c
+ cmp r2, #1
+ movhi r0, #0
+ bxhi lr
+ cmp r0, #0
+ beq _02223464
+ mov r1, r1, lsr #4
+ ands r1, r1, #1
+ movne r0, #0
+ bxne lr
+_02223464:
+ cmp r0, #0
+ bne _02223484
+ ldr r0, _02223490 ; =0x02243058
+ ldr r0, [r0]
+ mov r0, r0, lsr #4
+ ands r0, r0, #1
+ moveq r0, #0
+ bxeq lr
+_02223484:
+ mov r0, #1
+ bx lr
+ .align 2, 0
+_0222348C: .word 0x0224304C
+_02223490: .word 0x02243058
+
+ arm_func_start MOD13_02223494
+MOD13_02223494: ; 0x02223494
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r3, _0222351C ; =0x02243054
+ str r0, [r3]
+ mov r0, r1
+ mov r1, r2
+ bl MOD13_02223410
+ cmp r0, #0
+ mvneq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, _02223520 ; =0x02243050
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_02223340
+ bl MOD13_02223024
+ bl MOD13_022342A0
+ ldr r0, _02223524 ; =MOD13_02223E10
+ bl MOD13_02222FBC
+ ldr r5, _02223528 ; =0x0224305C
+ ldr r4, _02223520 ; =0x02243050
+ mov r6, #0
+_022234E4:
+ bl MOD13_0223B6A8
+ ldr r0, [r5]
+ blx r0
+ mov r0, r6
+ bl MOD13_0223C1E0
+ bl MOD13_0223B0BC
+ bl MOD13_0223BDE0
+ bl OS_WaitVBlankIntr
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _022234E4
+ bl MOD13_02222FCC
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_0222351C: .word 0x02243054
+_02223520: .word 0x02243050
+_02223524: .word MOD13_02223E10
+_02223528: .word 0x0224305C
+
+ arm_func_start MOD13_0222352C
+MOD13_0222352C: ; 0x0222352C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr ip, _02223564 ; =0x0000FFFF
+ ldr lr, [r0]
+ and r1, r1, ip
+ ldr ip, [r0, #4]
+ ldr r0, [lr, r1, lsl #2]
+ cmp r2, #0
+ add r0, ip, r0
+ addge r3, r3, #0x30
+ movge r1, r2, lsl #1
+ strgeh r3, [r0, r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02223564: .word 0x0000FFFF
+
+ arm_func_start MOD13_02223568
+MOD13_02223568: ; 0x02223568
+ ldr r2, _02223584 ; =0x0000FFFF
+ ldr r3, [r0]
+ and r1, r1, r2
+ ldr r2, [r0, #4]
+ ldr r0, [r3, r1, lsl #2]
+ add r0, r2, r0
+ bx lr
+ .align 2, 0
+_02223584: .word 0x0000FFFF
+
+ arm_func_start MOD13_02223588
+MOD13_02223588: ; 0x02223588
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r0, [r4, #8]
+ bl MOD13_0223939C
+ ldr r0, _022235B0 ; =0x02243070
+ mov r1, r4
+ ldr r0, [r0]
+ ldr r0, [r0, #0x60]
+ bl MOD13_02239FD0
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022235B0: .word 0x02243070
+
+ arm_func_start MOD13_022235B4
+MOD13_022235B4: ; 0x022235B4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r1, _02223614 ; =0x02243070
+ mov r5, r0
+ ldr r0, [r1]
+ ldr r0, [r0, #0x60]
+ bl MOD13_02239F78
+ mov r4, r0
+ add r1, sp, #0
+ mov r0, r5
+ mov r2, #4
+ bl MOD13_022393D8
+ str r0, [r4, #8]
+ ldr r1, [r4, #8]
+ mov r0, r4
+ add r2, r1, #0x20
+ add r1, r2, #0x10
+ str r1, [r4]
+ ldr r1, [r2, #4]
+ add r1, r2, r1
+ add r1, r1, #8
+ str r1, [r4, #4]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02223614: .word 0x02243070
+
+ arm_func_start MOD13_02223618
+MOD13_02223618: ; 0x02223618
+ ldr ip, _02223624 ; =MOD13_0223AF90
+ ldr r0, _02223628 ; =0x02243070
+ bx ip
+ .align 2, 0
+_02223624: .word MOD13_0223AF90
+_02223628: .word 0x02243070
+
+ arm_func_start MOD13_0222362C
+MOD13_0222362C: ; 0x0222362C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0x64
+ mov r1, #4
+ bl MOD13_0223B004
+ mov r1, r0
+ ldr r3, _0222366C ; =0x02243070
+ mov r0, #8
+ mov r2, #0xc
+ str r1, [r3]
+ bl MOD13_0223A054
+ ldr r1, _0222366C ; =0x02243070
+ ldr r1, [r1]
+ str r0, [r1, #0x60]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222366C: .word 0x02243070
+
+ arm_func_start MOD13_02223670
+MOD13_02223670: ; 0x02223670
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ bl MOD13_02238BE0
+ ldr r0, _02223914 ; =0x02243074
+ ldr r0, [r0]
+ add r0, r0, #0x1e000
+ ldrb r1, [r0, #0x2a0]
+ cmp r1, #0
+ beq _022236C4
+ ldrb r1, [r0, #0x2a1]
+ cmp r1, #0
+ bne _022236C4
+ ldr r1, [r0, #0x298]
+ cmp r1, #0
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, pc}
+ mov r0, #0
+ blx r1
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_022236C4:
+ add r0, sp, #0
+ add r1, sp, #1
+ bl MOD13_02238B98
+ ldrb r0, [sp]
+ cmp r0, #0x1a
+ bgt _0222375C
+ cmp r0, #0x1a
+ bge _02223870
+ cmp r0, #0x14
+ bgt _0222374C
+ cmp r0, #0
+ addge pc, pc, r0, lsl #2
+ b _0222390C
+_022236F8: ; jump table
+ b _0222390C ; case 0
+ b _0222390C ; case 1
+ b _0222390C ; case 2
+ b _0222390C ; case 3
+ b _0222390C ; case 4
+ b MOD13_02223784 ; case 5
+ b _0222390C ; case 6
+ b _0222390C ; case 7
+ b _0222390C ; case 8
+ b _0222390C ; case 9
+ b _0222390C ; case 10
+ b _0222390C ; case 11
+ b MOD13_022238B4 ; case 12
+ b MOD13_022237E8 ; case 13
+ b _0222390C ; case 14
+ b _0222390C ; case 15
+ b _0222390C ; case 16
+ b _0222390C ; case 17
+ b _0222390C ; case 18
+ b _0222390C ; case 19
+ b _0222382C ; case 20
+_0222374C:
+ cmp r0, #0x17
+ beq _0222382C
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_0222375C:
+ cmp r0, #0x1d
+ bgt _02223774
+ cmp r0, #0x1d
+ beq _02223870
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_02223774:
+ cmp r0, #0x22
+ beq _022238F8
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+
+ arm_func_start MOD13_02223784
+MOD13_02223784: ; 0x02223784
+ ldrb r0, [sp, #1]
+ cmp r0, #0
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, pc}
+ ldr r1, _02223914 ; =0x02243074
+ ldr r0, _02223918 ; =0x0001E280
+ ldr r1, [r1]
+ add r4, r1, r0
+ bl MOD13_02238B88
+ mov r1, r4
+ mov r2, #0x16
+ bl MIi_CpuCopy16
+ ldr r0, _02223914 ; =0x02243074
+ ldr r0, [r0]
+ add r0, r0, #0x1e000
+ ldr r1, [r0, #0x298]
+ cmp r1, #0
+ moveq r1, #1
+ streqb r1, [r0, #0x2a0]
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, pc}
+ mov r0, #0
+ blx r1
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+
+ arm_func_start MOD13_022237E8
+MOD13_022237E8: ; 0x022237E8
+ ldrb r0, [sp, #1]
+ cmp r0, #0
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, pc}
+ ldr r0, _02223914 ; =0x02243074
+ ldr r0, [r0]
+ add r0, r0, #0x1e000
+ ldr r1, [r0, #0x298]
+ cmp r1, #0
+ moveq r1, #1
+ streqb r1, [r0, #0x2a0]
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, pc}
+ mov r0, #1
+ blx r1
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_0222382C:
+ ldrb r0, [sp, #1]
+ cmp r0, #0
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, pc}
+ ldr r0, _02223914 ; =0x02243074
+ ldr r0, [r0]
+ add r0, r0, #0x1e000
+ ldr r1, [r0, #0x298]
+ cmp r1, #0
+ moveq r1, #1
+ streqb r1, [r0, #0x2a0]
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, pc}
+ mov r0, #3
+ blx r1
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_02223870:
+ ldrb r0, [sp, #1]
+ cmp r0, #0
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, pc}
+ ldr r0, _02223914 ; =0x02243074
+ ldr r0, [r0]
+ add r0, r0, #0x1e000
+ ldr r1, [r0, #0x298]
+ cmp r1, #0
+ moveq r1, #1
+ streqb r1, [r0, #0x2a0]
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, pc}
+ mov r0, #4
+ blx r1
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+
+ arm_func_start MOD13_022238B4
+MOD13_022238B4: ; 0x022238B4
+ ldrb r0, [sp, #1]
+ cmp r0, #0
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, pc}
+ ldr r0, _02223914 ; =0x02243074
+ ldr r0, [r0]
+ add r0, r0, #0x1e000
+ ldr r1, [r0, #0x298]
+ cmp r1, #0
+ moveq r1, #1
+ streqb r1, [r0, #0x2a0]
+ addeq sp, sp, #8
+ ldmeqia sp!, {r4, pc}
+ mov r0, #2
+ blx r1
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_022238F8:
+ mov r1, r4
+ mov r0, #0
+ bl MOD13_0223C110
+ ldr r0, _02223914 ; =0x02243074
+ bl MOD13_0223AF90
+_0222390C:
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02223914: .word 0x02243074
+_02223918: .word 0x0001E280
+
+ arm_func_start MOD13_0222391C
+MOD13_0222391C: ; 0x0222391C
+ ldr r1, _02223930 ; =0x02243074
+ ldr r0, _02223934 ; =0x0001E280
+ ldr r1, [r1]
+ add r0, r1, r0
+ bx lr
+ .align 2, 0
+_02223930: .word 0x02243074
+_02223934: .word 0x0001E280
+
+ arm_func_start MOD13_02223938
+MOD13_02223938: ; 0x02223938
+ ldr ip, _02223940 ; =MOD13_02238FFC
+ bx ip
+ .align 2, 0
+_02223940: .word MOD13_02238FFC
+
+ arm_func_start MOD13_02223944
+MOD13_02223944: ; 0x02223944
+ ldr r1, _02223958 ; =0x02243074
+ ldr r1, [r1]
+ add r1, r1, #0x1e000
+ str r0, [r1, #0x298]
+ bx lr
+ .align 2, 0
+_02223958: .word 0x02243074
+
+ arm_func_start MOD13_0222395C
+MOD13_0222395C: ; 0x0222395C
+ ldr r0, _02223974 ; =0x02243074
+ ldr r0, [r0]
+ cmp r0, #0
+ moveq r0, #1
+ movne r0, #0
+ bx lr
+ .align 2, 0
+_02223974: .word 0x02243074
+
+ arm_func_start MOD13_02223978
+MOD13_02223978: ; 0x02223978
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD13_02239124
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r0, _022239B0 ; =0x02243074
+ mov r1, r4
+ ldr r0, [r0]
+ mov r3, #1
+ add r2, r0, #0x1e000
+ mov r0, #0
+ strb r3, [r2, #0x2a1]
+ bl MOD13_0223C110
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022239B0: .word 0x02243074
+
+ arm_func_start MOD13_022239B4
+MOD13_022239B4: ; 0x022239B4
+ ldr ip, _022239CC ; =MOD13_0223C1C4
+ mov r0, #0
+ ldr r1, _022239D0 ; =MOD13_02223978
+ mov r2, r0
+ mov r3, #0x78
+ bx ip
+ .align 2, 0
+_022239CC: .word MOD13_0223C1C4
+_022239D0: .word MOD13_02223978
+
+ arm_func_start MOD13_022239D4
+MOD13_022239D4: ; 0x022239D4
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x20
+ mov r4, r0
+ ldr r0, _02223AB0 ; =0x0001E2A4
+ mov r1, #0x20
+ bl MOD13_0223B004
+ ldr r2, _02223AB4 ; =0x02243074
+ add r1, r0, #0x1e000
+ str r0, [r2]
+ str r4, [r1, #0x298]
+ ldr r0, [r2]
+ mov r4, #0
+ add r0, r0, #0x1e000
+ strb r4, [r0, #0x2a0]
+ ldr r0, [r2]
+ ldr lr, _02223AB8 ; =0x0223FDA4
+ add r0, r0, #0x1e000
+ strb r4, [r0, #0x2a1]
+ add ip, sp, #0
+ ldmia lr!, {r0, r1, r2, r3}
+ stmia ip!, {r0, r1, r2, r3}
+ ldmia lr, {r0, r1, r2}
+ stmia ip, {r0, r1, r2}
+ ldr r0, _02223ABC ; =0x0224307C
+ mov r1, r4
+ ldr r0, [r0]
+ bl MOD13_02223568
+ ldr r1, _02223ABC ; =0x0224307C
+ str r0, [sp, #4]
+ ldr r0, [r1]
+ mov r1, #1
+ bl MOD13_02223568
+ str r0, [sp, #8]
+ bl MOD13_02222F34
+ add r0, r0, #0x31
+ strb r0, [sp, #0x18]
+ ldr r0, _02223AB4 ; =0x02243074
+ add r1, sp, #0
+ ldr r0, [r0]
+ bl MOD13_0223923C
+ bl MOD13_0223903C
+ cmp r0, #0
+ bne _02223A84
+ bl OS_Terminate
+_02223A84:
+ mov r0, #0
+ ldr r1, _02223AC0 ; =MOD13_02223670
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02223AB4 ; =0x02243074
+ ldr r1, [r1]
+ add r1, r1, #0x1e000
+ str r0, [r1, #0x29c]
+ add sp, sp, #0x20
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02223AB0: .word 0x0001E2A4
+_02223AB4: .word 0x02243074
+_02223AB8: .word 0x0223FDA4
+_02223ABC: .word 0x0224307C
+_02223AC0: .word MOD13_02223670
+
+ arm_func_start MOD13_02223AC4
+MOD13_02223AC4: ; 0x02223AC4
+ ldr ip, _02223ACC ; =MOD13_0223AF48
+ bx ip
+ .align 2, 0
+_02223ACC: .word MOD13_0223AF48
+
+ arm_func_start MOD13_02223AD0
+MOD13_02223AD0: ; 0x02223AD0
+ ldr ip, _02223ADC ; =MOD13_0223B004
+ mov r1, #0x20
+ bx ip
+ .align 2, 0
+_02223ADC: .word MOD13_0223B004
+
+ arm_func_start MOD13_02223AE0
+MOD13_02223AE0: ; 0x02223AE0
+ ldr r3, _02223AF4 ; =0x02243078
+ ldmia r0, {r0, r1, r2}
+ ldr r3, [r3]
+ stmia r3, {r0, r1, r2}
+ bx lr
+ .align 2, 0
+_02223AF4: .word 0x02243078
+
+ arm_func_start MOD13_02223AF8
+MOD13_02223AF8: ; 0x02223AF8
+ stmdb sp!, {lr}
+ sub sp, sp, #0xec
+ add r0, sp, #0
+ bl MOD13_0221A794
+ cmp r0, #1
+ beq _02223B14
+ bl OS_Terminate
+_02223B14:
+ add r0, sp, #0
+ bl MOD13_02233A24
+ add sp, sp, #0xec
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_02223B24
+MOD13_02223B24: ; 0x02223B24
+ stmdb sp!, {lr}
+ sub sp, sp, #0xec
+ ldr r1, _02223BDC ; =0x02243078
+ ldr r1, [r1]
+ ldr r1, [r1]
+ cmp r1, #7
+ addls pc, pc, r1, lsl #2
+ b _02223BD4
+_02223B44: ; jump table
+ b _02223B64 ; case 0
+ b _02223B64 ; case 1
+ b _02223B70 ; case 2
+ b _02223B64 ; case 3
+ b _02223B7C ; case 4
+ b _02223B64 ; case 5
+ b _02223B88 ; case 6
+ b _02223BD0 ; case 7
+_02223B64:
+ add sp, sp, #0xec
+ mov r0, #0
+ ldmia sp!, {pc}
+_02223B70:
+ add sp, sp, #0xec
+ mov r0, #1
+ ldmia sp!, {pc}
+_02223B7C:
+ add sp, sp, #0xec
+ mov r0, #2
+ ldmia sp!, {pc}
+_02223B88:
+ add r0, sp, #0
+ bl MOD13_0221A794
+ cmp r0, #1
+ beq _02223B9C
+ bl OS_Terminate
+_02223B9C:
+ ldr r0, [sp, #0x20]
+ cmp r0, #0
+ blt _02223BC4
+ cmp r0, #3
+ bgt _02223BC4
+ ldr r0, [sp, #0x24]
+ cmp r0, #1
+ addeq sp, sp, #0xec
+ moveq r0, #3
+ ldmeqia sp!, {pc}
+_02223BC4:
+ add sp, sp, #0xec
+ mov r0, #5
+ ldmia sp!, {pc}
+_02223BD0:
+ mov r0, #4
+_02223BD4:
+ add sp, sp, #0xec
+ ldmia sp!, {pc}
+ .align 2, 0
+_02223BDC: .word 0x02243078
+
+ arm_func_start MOD13_02223BE0
+MOD13_02223BE0: ; 0x02223BE0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221A7EC
+ cmp r0, #1
+ beq _02223BF8
+ bl OS_Terminate
+_02223BF8:
+ ldr r0, _02223C08 ; =0x02243078
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02223C08: .word 0x02243078
+
+ arm_func_start MOD13_02223C0C
+MOD13_02223C0C: ; 0x02223C0C
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ mov r0, #0xc
+ mvn r1, #3
+ bl MOD13_0223AFE0
+ ldr r1, _02223C68 ; =0x02243078
+ ldr ip, _02223C6C ; =MOD13_02223AC4
+ str r0, [r1]
+ ldr r2, _02223C70 ; =MOD13_02223AE0
+ ldr r3, _02223C74 ; =MOD13_02223AD0
+ str ip, [sp]
+ mov ip, #0x800
+ mov r0, #0xf
+ mov r1, #0x40
+ str ip, [sp, #4]
+ bl MOD13_0221A8A4
+ cmp r0, #1
+ beq _02223C58
+ bl OS_Terminate
+_02223C58:
+ mov r0, #0xa
+ bl OS_Sleep
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_02223C68: .word 0x02243078
+_02223C6C: .word MOD13_02223AC4
+_02223C70: .word MOD13_02223AE0
+_02223C74: .word MOD13_02223AD0
+
+ arm_func_start MOD13_02223C78
+MOD13_02223C78: ; 0x02223C78
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_0223C0A0
+ mov r0, #1
+ mov r1, #0
+ bl MOD13_0223C0A0
+ mov r0, #1
+ bl MOD13_02239F20
+ mov r0, #0
+ bl MOD13_02239F20
+ bl MOD13_0221F528
+ bl MOD13_0221F404
+ ldr r0, _02223CF8 ; =0x0224307C
+ ldr r0, [r0]
+ bl MOD13_02223588
+ bl MOD13_02223618
+ bl MOD13_02234178
+ bl MOD13_02222EE8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02223CF8: .word 0x0224307C
+
+ arm_func_start MOD13_02223CFC
+MOD13_02223CFC: ; 0x02223CFC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #3
+ mov r1, #1
+ mov r2, #0x3f
+ mov r3, #0x14
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x3f
+ mov r3, #0x14
+ bl MOD13_0223A2A8
+ ldr r0, _02223D3C ; =MOD13_02223C78
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02223D3C: .word MOD13_02223C78
+
+ arm_func_start MOD13_02223D40
+MOD13_02223D40: ; 0x02223D40
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02222F1C
+ cmp r0, #0
+ beq _02223D8C
+ cmp r0, #1
+ beq _02223DA8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02223D8C:
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02223DC4 ; =MOD13_022245B4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02223DA8:
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_02222FA8
+ ldr r0, _02223DC8 ; =MOD13_02230714
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02223DC4: .word MOD13_022245B4
+_02223DC8: .word MOD13_02230714
+
+ arm_func_start MOD13_02223DCC
+MOD13_02223DCC: ; 0x02223DCC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r2, r0
+ mov r1, #1
+ mov r3, #0x14
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r2, r0
+ mov r1, #0
+ mov r3, #0x14
+ bl MOD13_0223A2A8
+ ldr r0, _02223E0C ; =MOD13_02223D40
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02223E0C: .word MOD13_02223D40
+
+ arm_func_start MOD13_02223E10
+MOD13_02223E10: ; 0x02223E10
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0223418C
+ bl MOD13_0222362C
+ bl MOD13_0221F424
+ bl MOD13_0221F53C
+ bl MOD13_0221EF74
+ bl MOD13_02222F34
+ cmp r0, #1
+ bne _02223E5C
+ mov r0, #2
+ bl MOD13_02222EFC
+ cmp r0, #0
+ beq _02223E5C
+ ldr r0, _02223F90 ; =0x0223FE38
+ bl MOD13_022235B4
+ ldr r1, _02223F94 ; =0x0224307C
+ str r0, [r1]
+ b _02223E74
+_02223E5C:
+ bl MOD13_02222F34
+ ldr r1, _02223F98 ; =0x0223FE20
+ ldr r0, [r1, r0, lsl #2]
+ bl MOD13_022235B4
+ ldr r1, _02223F94 ; =0x0224307C
+ str r0, [r1]
+_02223E74:
+ ldr r0, _02223F9C ; =0x0223FE48
+ bl MOD13_0221F1BC
+ mov r1, r0
+ mov r0, #1
+ bl MOD13_02239F48
+ ldr r0, _02223FA0 ; =0x0223FE5C
+ bl MOD13_0221F1BC
+ mov r1, r0
+ mov r0, #0
+ bl MOD13_02239F48
+ ldr r0, _02223FA4 ; =0x0223FE70
+ ldr r1, _02223FA8 ; =0x020C8DB4
+ bl MOD13_0221F174
+ ldr r0, _02223FAC ; =0x0223FE84
+ ldr r1, _02223FB0 ; =0x020C94E8
+ bl MOD13_0221F174
+ ldr r0, _02223FB4 ; =0x0223FE98
+ ldr r1, _02223FB8 ; =0x020C9294
+ bl MOD13_0221F174
+ ldr r0, _02223FBC ; =0x0223FEB0
+ ldr r1, _02223FC0 ; =0x020C9418
+ bl MOD13_0221F174
+ ldr r0, _02223FC4 ; =0x0223FEC8
+ ldr r1, _02223FC8 ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r0, _02223FCC ; =0x0223FEE0
+ ldr r1, _02223FD0 ; =0x020C9550
+ bl MOD13_0221F174
+ ldr r0, _02223FD4 ; =0x0223FEF8
+ ldr r1, _02223FD8 ; =0x020C92F4
+ bl MOD13_0221F174
+ ldr r0, _02223FDC ; =0x0223FF10
+ ldr r1, _02223FE0 ; =0x020C9480
+ bl MOD13_0221F174
+ bl MOD13_02222F1C
+ cmp r0, #0
+ beq _02223F14
+ cmp r0, #1
+ beq _02223F24
+ b _02223F30
+_02223F14:
+ ldr r0, _02223FE4 ; =0x0223FF28
+ ldr r1, _02223FE8 ; =0x020C90F4
+ bl MOD13_0221F174
+ b _02223F30
+_02223F24:
+ ldr r0, _02223FEC ; =0x0223FF3C
+ ldr r1, _02223FE8 ; =0x020C90F4
+ bl MOD13_0221F174
+_02223F30:
+ ldr ip, _02223FF0 ; =0x0400100A
+ ldr r3, _02223FF4 ; =0x0400000A
+ ldrh r2, [ip]
+ mov r0, #1
+ mov r1, #2
+ bic r2, r2, #3
+ orr r2, r2, #3
+ strh r2, [ip]
+ ldrh r2, [r3]
+ bic r2, r2, #3
+ orr r2, r2, #3
+ strh r2, [r3]
+ ldrh r2, [r3]
+ bic r2, r2, #3
+ orr r2, r2, #3
+ strh r2, [r3]
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #2
+ bl MOD13_0223AEF4
+ ldr r0, _02223FF8 ; =MOD13_02223DCC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02223F90: .word 0x0223FE38
+_02223F94: .word 0x0224307C
+_02223F98: .word 0x0223FE20
+_02223F9C: .word 0x0223FE48
+_02223FA0: .word 0x0223FE5C
+_02223FA4: .word 0x0223FE70
+_02223FA8: .word 0x020C8DB4
+_02223FAC: .word 0x0223FE84
+_02223FB0: .word 0x020C94E8
+_02223FB4: .word 0x0223FE98
+_02223FB8: .word 0x020C9294
+_02223FBC: .word 0x0223FEB0
+_02223FC0: .word 0x020C9418
+_02223FC4: .word 0x0223FEC8
+_02223FC8: .word 0x020C8D4C
+_02223FCC: .word 0x0223FEE0
+_02223FD0: .word 0x020C9550
+_02223FD4: .word 0x0223FEF8
+_02223FD8: .word 0x020C92F4
+_02223FDC: .word 0x0223FF10
+_02223FE0: .word 0x020C9480
+_02223FE4: .word 0x0223FF28
+_02223FE8: .word 0x020C90F4
+_02223FEC: .word 0x0223FF3C
+_02223FF0: .word 0x0400100A
+_02223FF4: .word 0x0400000A
+_02223FF8: .word MOD13_02223DCC
+
+ arm_func_start MOD13_02223FFC
+MOD13_02223FFC: ; 0x02223FFC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _02224040 ; =0x0223F100
+ ldr r0, _02224044 ; =0x02243080
+ ldrb r3, [r1]
+ ldrb r2, [r1, #1]
+ ldrb r1, [r0]
+ add ip, sp, #0
+ ldr r0, _02224048 ; =0x02243084
+ strb r3, [sp]
+ strb r2, [sp, #1]
+ ldrb r1, [ip, r1]
+ ldr r0, [r0]
+ mov r2, r1
+ bl MOD13_022327DC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224040: .word 0x0223F100
+_02224044: .word 0x02243080
+_02224048: .word 0x02243084
+
+ arm_func_start MOD13_0222404C
+MOD13_0222404C: ; 0x0222404C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r0, #1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ cmp r0, #3
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r1, _022240BC ; =0x02243080
+ mov r0, #8
+ ldrb r2, [r1]
+ eor r2, r2, #1
+ strb r2, [r1]
+ bl MOD13_0223424C
+ ldr r0, _022240BC ; =0x02243080
+ ldr ip, _022240C0 ; =0x0223F114
+ ldrb r0, [r0]
+ ldr r1, _022240C4 ; =0x0223F118
+ ldr r2, _022240C8 ; =0x0223F116
+ mov lr, r0, lsl #3
+ ldr r3, _022240CC ; =0x0223F11A
+ ldrh r0, [ip, lr]
+ ldrh r1, [r1, lr]
+ ldrh r2, [r2, lr]
+ ldrh r3, [r3, lr]
+ bl MOD13_0221F25C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022240BC: .word 0x02243080
+_022240C0: .word 0x0223F114
+_022240C4: .word 0x0223F118
+_022240C8: .word 0x0223F116
+_022240CC: .word 0x0223F11A
+
+ arm_func_start MOD13_022240D0
+MOD13_022240D0: ; 0x022240D0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221F21C
+ bl MOD13_0221EE54
+ ldr r0, _02224184 ; =0x02243084
+ ldr r0, [r0]
+ bl MOD13_0223939C
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x14
+ bl MOD13_0223AE98
+ ldr r0, _02224188 ; =0x02243080
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _0222414C
+ cmp r0, #1
+ beq _02224168
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222414C:
+ mov r0, #1
+ mov r1, #0
+ bl MOD13_02222FA8
+ ldr r0, _0222418C ; =MOD13_02230714
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02224168:
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222FA8
+ ldr r0, _02224190 ; =MOD13_022259A8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224184: .word 0x02243084
+_02224188: .word 0x02243080
+_0222418C: .word MOD13_02230714
+_02224190: .word MOD13_022259A8
+
+ arm_func_start MOD13_02224194
+MOD13_02224194: ; 0x02224194
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _022241E8 ; =MOD13_022240D0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022241E8: .word MOD13_022240D0
+
+ arm_func_start MOD13_022241EC
+MOD13_022241EC: ; 0x022241EC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _02224210 ; =MOD13_02224194
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224210: .word MOD13_02224194
+
+ arm_func_start MOD13_02224214
+MOD13_02224214: ; 0x02224214
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ beq _02224238
+ cmp r0, #1
+ beq _02224250
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02224238:
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r0, _0222426C ; =MOD13_02223CFC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02224250:
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_02223FFC
+ ldr r0, _02224270 ; =MOD13_022241EC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222426C: .word MOD13_02223CFC
+_02224270: .word MOD13_022241EC
+
+ arm_func_start MOD13_02224274
+MOD13_02224274: ; 0x02224274
+ bx lr
+
+ arm_func_start MOD13_02224278
+MOD13_02224278: ; 0x02224278
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r4, _022243B0 ; =0x0223F104
+ mov r5, #0
+_02224288:
+ mov r0, r4
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ beq _022242DC
+ mov r0, #1
+ bl MOD13_0221ECF4
+ ldr r0, _022243B4 ; =0x02243080
+ ldr ip, _022243B8 ; =0x0223F114
+ strb r5, [r0]
+ ldrb r0, [r0]
+ ldr r1, _022243BC ; =0x0223F118
+ ldr r2, _022243C0 ; =0x0223F116
+ mov lr, r0, lsl #3
+ ldr r3, _022243C4 ; =0x0223F11A
+ ldrh r0, [ip, lr]
+ ldrh r1, [r1, lr]
+ ldrh r2, [r2, lr]
+ ldrh r3, [r3, lr]
+ bl MOD13_0221F25C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_022242DC:
+ add r5, r5, #1
+ cmp r5, #2
+ add r4, r4, #8
+ blo _02224288
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _0222430C
+ mov r0, #1
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0222430C:
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _0222432C
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0222432C:
+ mov r0, #0x40
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _0222434C
+ mov r0, #1
+ bl MOD13_0222404C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0222434C:
+ mov r0, #0x80
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _0222436C
+ mov r0, #3
+ bl MOD13_0222404C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0222436C:
+ mov r0, #0x20
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _0222438C
+ mov r0, #0
+ bl MOD13_0222404C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0222438C:
+ mov r0, #0x10
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ mov r0, #2
+ bl MOD13_0222404C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_022243B0: .word 0x0223F104
+_022243B4: .word 0x02243080
+_022243B8: .word 0x0223F114
+_022243BC: .word 0x0223F118
+_022243C0: .word 0x0223F116
+_022243C4: .word 0x0223F11A
+
+ arm_func_start MOD13_022243C8
+MOD13_022243C8: ; 0x022243C8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02224278
+ bl MOD13_02224274
+ bl MOD13_02224214
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _02224414 ; =MOD13_022243C8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224414: .word MOD13_022243C8
+
+ arm_func_start MOD13_02224418
+MOD13_02224418: ; 0x02224418
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221F0EC
+ ldr r0, _02224460 ; =0x022243E4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224460: .word 0x022243E4
+
+ arm_func_start MOD13_02224464
+MOD13_02224464: ; 0x02224464
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x14
+ bl MOD13_0223AEF4
+ ldr r0, _022244BC ; =MOD13_02224418
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022244BC: .word MOD13_02224418
+
+ arm_func_start MOD13_022244C0
+MOD13_022244C0: ; 0x022244C0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x1c
+ ldr ip, _02224584 ; =0x0223F124
+ add r3, sp, #0
+ mov r2, #0xb
+_022244D4:
+ ldrb r1, [ip], #1
+ ldrb r0, [ip], #1
+ subs r2, r2, #1
+ strb r1, [r3], #1
+ strb r0, [r3], #1
+ bne _022244D4
+ ldr r0, _02224588 ; =0x0223FF50
+ ldr r1, _0222458C ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r0, _02224590 ; =0x0223FF68
+ ldr r1, _02224594 ; =0x020C9550
+ bl MOD13_0221F174
+ ldr r0, _02224598 ; =0x0223FF80
+ ldr r1, _0222459C ; =0x020C908C
+ bl MOD13_0221F174
+ add r0, sp, #0
+ bl MOD13_0221F1BC
+ mov r1, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ ldr r1, _022245A0 ; =0x02243084
+ ldr ip, _022245A4 ; =0x04001008
+ str r0, [r1]
+ ldrh r0, [ip]
+ ldr r3, _022245A8 ; =0x0400100A
+ ldr r2, _022245AC ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ ldr r1, _022245B0 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #0x1c
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224584: .word 0x0223F124
+_02224588: .word 0x0223FF50
+_0222458C: .word 0x020C8D4C
+_02224590: .word 0x0223FF68
+_02224594: .word 0x020C9550
+_02224598: .word 0x0223FF80
+_0222459C: .word 0x020C908C
+_022245A0: .word 0x02243084
+_022245A4: .word 0x04001008
+_022245A8: .word 0x0400100A
+_022245AC: .word 0x0400000A
+_022245B0: .word 0x0400000C
+
+ arm_func_start MOD13_022245B4
+MOD13_022245B4: ; 0x022245B4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_022244C0
+ mov r0, #0
+ bl MOD13_0221F4CC
+ mov r0, #0x2e
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ mov r0, #4
+ bl MOD13_02234384
+ ldr r0, _02224620 ; =0x02243080
+ ldr r3, _02224624 ; =0x0223F114
+ ldrb r0, [r0]
+ ldr r1, _02224628 ; =0x0223F118
+ ldr r2, _0222462C ; =0x0223F116
+ mov ip, r0, lsl #3
+ ldrh r0, [r3, ip]
+ ldrh r1, [r1, ip]
+ ldrh r2, [r2, ip]
+ ldr r3, _02224630 ; =0x0223F11A
+ ldrh r3, [r3, ip]
+ bl MOD13_0221F25C
+ ldr r0, _02224634 ; =MOD13_02224464
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224620: .word 0x02243080
+_02224624: .word 0x0223F114
+_02224628: .word 0x0223F118
+_0222462C: .word 0x0223F116
+_02224630: .word 0x0223F11A
+_02224634: .word MOD13_02224464
+
+ arm_func_start MOD13_02224638
+MOD13_02224638: ; 0x02224638
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02224660 ; =MOD13_02224808
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224660: .word MOD13_02224808
+
+ arm_func_start MOD13_02224664
+MOD13_02224664: ; 0x02224664
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ beq _0222469C
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0xe
+ bl MOD13_0223424C
+ ldr r0, _022246B8 ; =0x02243088
+ mov r1, #1
+ strb r1, [r0]
+ b _022246A4
+_0222469C:
+ mov r0, #7
+ bl MOD13_0223424C
+_022246A4:
+ bl MOD13_02235EB0
+ ldr r0, _022246BC ; =MOD13_02224638
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022246B8: .word 0x02243088
+_022246BC: .word MOD13_02224638
+
+ arm_func_start MOD13_022246C0
+MOD13_022246C0: ; 0x022246C0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222478C ; =0x02243088
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02224700
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_02224700:
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A65C
+ ldr r0, _0222478C ; =0x02243088
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02224738
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+_02224738:
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ ldr r0, _0222478C ; =0x02243088
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02224770
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02224790 ; =MOD13_022259A8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02224770:
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02224794 ; =MOD13_02224D5C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222478C: .word 0x02243088
+_02224790: .word MOD13_022259A8
+_02224794: .word MOD13_02224D5C
+
+ arm_func_start MOD13_02224798
+MOD13_02224798: ; 0x02224798
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ED28
+ ldr r0, _02224800 ; =0x02243088
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _022247DC
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+_022247DC:
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02224804 ; =MOD13_022246C0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224800: .word 0x02243088
+_02224804: .word MOD13_022246C0
+
+ arm_func_start MOD13_02224808
+MOD13_02224808: ; 0x02224808
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _0222482C ; =MOD13_02224798
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222482C: .word MOD13_02224798
+
+ arm_func_start MOD13_02224830
+MOD13_02224830: ; 0x02224830
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ beq _02224854
+ cmp r0, #1
+ beq _0222486C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02224854:
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r0, _022248A0 ; =MOD13_02224808
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222486C:
+ mov r0, #6
+ bl MOD13_0223424C
+ mov r1, #0
+ mov r0, #0x18
+ mov r2, #1
+ mvn r3, #0
+ str r1, [sp]
+ bl MOD13_02235EFC
+ bl MOD13_0221EC84
+ ldr r0, _022248A4 ; =MOD13_02224664
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022248A0: .word MOD13_02224808
+_022248A4: .word MOD13_02224664
+
+ arm_func_start MOD13_022248A8
+MOD13_022248A8: ; 0x022248A8
+ bx lr
+
+ arm_func_start MOD13_022248AC
+MOD13_022248AC: ; 0x022248AC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _022248CC
+ mov r0, #1
+ bl MOD13_0221ECF4
+_022248CC:
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_022248AC
+ bl MOD13_022248A8
+ bl MOD13_02224830
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _0222493C ; =0x022248F0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222493C: .word 0x022248F0
+
+ arm_func_start MOD13_02224940
+MOD13_02224940: ; 0x02224940
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #3
+ bl MOD13_0221F0EC
+ ldr r0, _02224988 ; =0x0222490C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224988: .word 0x0222490C
+
+ arm_func_start MOD13_0222498C
+MOD13_0222498C: ; 0x0222498C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _022249E4 ; =MOD13_02224940
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022249E4: .word MOD13_02224940
+
+ arm_func_start MOD13_022249E8
+MOD13_022249E8: ; 0x022249E8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02224A68 ; =0x0223FF94
+ ldr r1, _02224A6C ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _02224A70 ; =0x04001008
+ ldr ip, _02224A74 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02224A78 ; =0x04000008
+ ldr r2, _02224A7C ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _02224A80 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224A68: .word 0x0223FF94
+_02224A6C: .word 0x020C908C
+_02224A70: .word 0x04001008
+_02224A74: .word 0x0400100A
+_02224A78: .word 0x04000008
+_02224A7C: .word 0x0400000A
+_02224A80: .word 0x0400000C
+
+ arm_func_start MOD13_02224A84
+MOD13_02224A84: ; 0x02224A84
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02224ACC ; =0x02243088
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_022249E8
+ mov r0, #0x12
+ bl MOD13_0221F4CC
+ mov r0, #0x3b
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ mov r0, #0x17
+ bl MOD13_0221F070
+ ldr r0, _02224AD0 ; =MOD13_0222498C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224ACC: .word 0x02243088
+_02224AD0: .word MOD13_0222498C
+
+ arm_func_start MOD13_02224AD4
+MOD13_02224AD4: ; 0x02224AD4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0x1000000
+ bl OS_SpinWait
+ bl PM_ForceToPowerOff
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #3
+ mov r1, #1
+ mov r2, #0x3f
+ mov r3, #0x40
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x3f
+ mov r3, #0x40
+ bl MOD13_0223A2A8
+ ldr r0, _02224B6C ; =MOD13_02224AD4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224B6C: .word MOD13_02224AD4
+
+ arm_func_start MOD13_02224B70
+MOD13_02224B70: ; 0x02224B70
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _02224B94 ; =0x02224B18
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224B94: .word 0x02224B18
+
+ arm_func_start MOD13_02224B98
+MOD13_02224B98: ; 0x02224B98
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ ldr r0, _02224BC8 ; =MOD13_02224B70
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224BC8: .word MOD13_02224B70
+
+ arm_func_start MOD13_02224BCC
+MOD13_02224BCC: ; 0x02224BCC
+ bx lr
+
+ arm_func_start MOD13_02224BD0
+MOD13_02224BD0: ; 0x02224BD0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02224BD0
+ bl MOD13_02224BCC
+ bl MOD13_02224B98
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _02224C48 ; =0x02224BFC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224C48: .word 0x02224BFC
+
+ arm_func_start MOD13_02224C4C
+MOD13_02224C4C: ; 0x02224C4C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #5
+ bl MOD13_0221F0EC
+ ldr r0, _02224C80 ; =0x02224C18
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224C80: .word 0x02224C18
+
+ arm_func_start MOD13_02224C84
+MOD13_02224C84: ; 0x02224C84
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _02224CBC ; =MOD13_02224C4C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224CBC: .word MOD13_02224C4C
+
+ arm_func_start MOD13_02224CC0
+MOD13_02224CC0: ; 0x02224CC0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02224D40 ; =0x0223FFA8
+ ldr r1, _02224D44 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _02224D48 ; =0x04001008
+ ldr ip, _02224D4C ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02224D50 ; =0x04000008
+ ldr r2, _02224D54 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _02224D58 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224D40: .word 0x0223FFA8
+_02224D44: .word 0x020C908C
+_02224D48: .word 0x04001008
+_02224D4C: .word 0x0400100A
+_02224D50: .word 0x04000008
+_02224D54: .word 0x0400000A
+_02224D58: .word 0x0400000C
+
+ arm_func_start MOD13_02224D5C
+MOD13_02224D5C: ; 0x02224D5C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02224CC0
+ mov r0, #0x19
+ bl MOD13_0221F070
+ bl MOD13_02233808
+ ldr r0, _02224D84 ; =MOD13_02224C84
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224D84: .word MOD13_02224C84
+
+ arm_func_start MOD13_02224D88
+MOD13_02224D88: ; 0x02224D88
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A65C
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02224E08 ; =MOD13_022259A8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224E08: .word MOD13_022259A8
+
+ arm_func_start MOD13_02224E0C
+MOD13_02224E0C: ; 0x02224E0C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ED28
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02224E64 ; =MOD13_02224D88
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224E64: .word MOD13_02224D88
+
+ arm_func_start MOD13_02224E68
+MOD13_02224E68: ; 0x02224E68
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _02224E8C ; =MOD13_02224E0C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224E8C: .word MOD13_02224E0C
+
+ arm_func_start MOD13_02224E90
+MOD13_02224E90: ; 0x02224E90
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r0, _02224EC0 ; =MOD13_02224E68
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224EC0: .word MOD13_02224E68
+
+ arm_func_start MOD13_02224EC4
+MOD13_02224EC4: ; 0x02224EC4
+ bx lr
+
+ arm_func_start MOD13_02224EC8
+MOD13_02224EC8: ; 0x02224EC8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02224EC8
+ bl MOD13_02224EC4
+ bl MOD13_02224E90
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _02224F40 ; =0x02224EF4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224F40: .word 0x02224EF4
+
+ arm_func_start MOD13_02224F44
+MOD13_02224F44: ; 0x02224F44
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #2
+ bl MOD13_0221F0EC
+ ldr r0, _02224F8C ; =0x02224F10
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224F8C: .word 0x02224F10
+
+ arm_func_start MOD13_02224F90
+MOD13_02224F90: ; 0x02224F90
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _02224FE8 ; =MOD13_02224F44
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02224FE8: .word MOD13_02224F44
+
+ arm_func_start MOD13_02224FEC
+MOD13_02224FEC: ; 0x02224FEC
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x6c
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_0223A7F0
+ mov fp, r0
+ add r0, sp, #0x14
+ bl OS_GetMacAddress
+ ldrb r1, [sp, #0x15]
+ ldr r2, _022251B8 ; =0x0223FFBC
+ add r0, sp, #0x40
+ str r1, [sp]
+ ldrb r3, [sp, #0x16]
+ mov r1, #0x14
+ str r3, [sp, #4]
+ ldrb r3, [sp, #0x17]
+ str r3, [sp, #8]
+ ldrb r3, [sp, #0x18]
+ str r3, [sp, #0xc]
+ ldrb r3, [sp, #0x19]
+ str r3, [sp, #0x10]
+ ldrb r3, [sp, #0x14]
+ bl swprintf
+ ldr r3, _022251BC ; =0x0223F13C
+ mov r2, #2
+ ldrh r4, [r3, #6]
+ mov r1, #0x480
+ add r0, sp, #0x40
+ str r4, [sp]
+ str r2, [sp, #4]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ ldrh r1, [r3]
+ ldrh r2, [r3, #2]
+ ldrh r3, [r3, #4]
+ mov r0, fp
+ bl MOD13_0223A4F0
+ add r0, sp, #0x1c
+ bl FUN_02095EC8
+ ldr sb, [sp, #0x1c]
+ ldr sl, [sp, #0x20]
+ mov r3, #0
+ cmp sl, r3
+ cmpeq sb, r3
+ beq _02225160
+ mov r0, sb
+ mov r1, sl
+ mov r2, #0xa
+ bl _ull_mod
+ mov r1, #0x3e8
+ umull r4, r1, r0, r1
+ mov r0, sb
+ mov r1, sl
+ mov r3, #0
+ mov r2, #0xa
+ str r4, [sp, #0x3c]
+ bl _ll_udiv
+ mov sb, r0
+ mov sl, r1
+ mov r8, #0
+ ldr r7, _022251C0 ; =0x00002710
+ add r5, sp, #0x30
+ mov r6, r8
+ mov r4, r8
+_022250EC:
+ mov r0, sb
+ mov r1, sl
+ mov r2, r7
+ mov r3, r6
+ bl _ull_mod
+ rsb r1, r8, #2
+ str r0, [r5, r1, lsl #2]
+ mov r0, sb
+ mov r1, sl
+ mov r2, r7
+ mov r3, r4
+ bl _ll_udiv
+ mov sb, r0
+ mov sl, r1
+ add r8, r8, #1
+ cmp r8, #3
+ blt _022250EC
+ ldr r1, [sp, #0x34]
+ ldr r2, _022251C4 ; =0x0223FFF8
+ str r1, [sp]
+ ldr r1, [sp, #0x38]
+ add r0, sp, #0x40
+ str r1, [sp, #4]
+ ldr r3, [sp, #0x3c]
+ mov r1, #0x14
+ str r3, [sp, #8]
+ ldr r3, [sp, #0x30]
+ bl swprintf
+ b _02225170
+_02225160:
+ ldr r2, _022251C8 ; =0x02240020
+ add r0, sp, #0x40
+ mov r1, #0x14
+ bl swprintf
+_02225170:
+ ldr r0, _022251CC ; =0x0223F144
+ mov r3, #2
+ ldrh r4, [r0, #6]
+ mov r2, #0x480
+ add r1, sp, #0x40
+ str r4, [sp]
+ str r3, [sp, #4]
+ str r2, [sp, #8]
+ str r1, [sp, #0xc]
+ ldrh r1, [r0]
+ ldrh r2, [r0, #2]
+ ldrh r3, [r0, #4]
+ mov r0, fp
+ bl MOD13_0223A4F0
+ mov r0, fp
+ bl MOD13_0223A410
+ add sp, sp, #0x6c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_022251B8: .word 0x0223FFBC
+_022251BC: .word 0x0223F13C
+_022251C0: .word 0x00002710
+_022251C4: .word 0x0223FFF8
+_022251C8: .word 0x02240020
+_022251CC: .word 0x0223F144
+
+ arm_func_start MOD13_022251D0
+MOD13_022251D0: ; 0x022251D0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02225250 ; =0x02240048
+ ldr r1, _02225254 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _02225258 ; =0x04001008
+ ldr ip, _0222525C ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02225260 ; =0x04000008
+ ldr r2, _02225264 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _02225268 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225250: .word 0x02240048
+_02225254: .word 0x020C908C
+_02225258: .word 0x04001008
+_0222525C: .word 0x0400100A
+_02225260: .word 0x04000008
+_02225264: .word 0x0400000A
+_02225268: .word 0x0400000C
+
+ arm_func_start MOD13_0222526C
+MOD13_0222526C: ; 0x0222526C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_022251D0
+ mov r0, #0x11
+ bl MOD13_0221F4CC
+ mov r0, #0x3a
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ bl MOD13_02224FEC
+ ldr r0, _022252A4 ; =MOD13_02224F90
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022252A4: .word MOD13_02224F90
+
+ arm_func_start MOD13_022252A8
+MOD13_022252A8: ; 0x022252A8
+ ldr r1, _022252CC ; =0x0224308C
+ ldr r0, _022252D0 ; =0x02243094
+ ldrb r2, [r1]
+ ldr r1, _022252D4 ; =0x0223F14C
+ ldr ip, _022252D8 ; =MOD13_022327DC
+ ldrb r1, [r1, r2]
+ ldr r0, [r0]
+ mov r2, r1
+ bx ip
+ .align 2, 0
+_022252CC: .word 0x0224308C
+_022252D0: .word 0x02243094
+_022252D4: .word 0x0223F14C
+_022252D8: .word MOD13_022327DC
+
+ arm_func_start MOD13_022252DC
+MOD13_022252DC: ; 0x022252DC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r0, #1
+ bne _0222530C
+ ldr r0, _02225368 ; =0x0224308C
+ mov r1, #3
+ ldrb r0, [r0]
+ add r0, r0, #2
+ bl FX_ModS32
+ ldr r1, _02225368 ; =0x0224308C
+ strb r0, [r1]
+ b _02225328
+_0222530C:
+ ldr r0, _02225368 ; =0x0224308C
+ mov r1, #3
+ ldrb r0, [r0]
+ add r0, r0, #1
+ bl FX_ModS32
+ ldr r1, _02225368 ; =0x0224308C
+ strb r0, [r1]
+_02225328:
+ mov r0, #8
+ bl MOD13_0223424C
+ ldr r0, _02225368 ; =0x0224308C
+ ldr ip, _0222536C ; =0x0223F19C
+ ldrb r0, [r0]
+ ldr r1, _02225370 ; =0x0223F1A0
+ ldr r2, _02225374 ; =0x0223F19E
+ mov lr, r0, lsl #3
+ ldr r3, _02225378 ; =0x0223F1A2
+ ldrh r0, [ip, lr]
+ ldrh r1, [r1, lr]
+ ldrh r2, [r2, lr]
+ ldrh r3, [r3, lr]
+ bl MOD13_0221F25C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225368: .word 0x0224308C
+_0222536C: .word 0x0223F19C
+_02225370: .word 0x0223F1A0
+_02225374: .word 0x0223F19E
+_02225378: .word 0x0223F1A2
+
+ arm_func_start MOD13_0222537C
+MOD13_0222537C: ; 0x0222537C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _0222549C ; =0x02243098
+ ldr r0, [r0]
+ bl MOD13_0223B974
+ bl MOD13_0221F21C
+ bl MOD13_0221EE54
+ ldr r0, _022254A0 ; =0x02243094
+ ldr r0, [r0]
+ bl MOD13_0223939C
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x14
+ bl MOD13_0223AE98
+ ldr r0, _022254A4 ; =0x02243090
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02225420
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222FA8
+ ldr r0, _022254A8 ; =MOD13_022245B4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02225420:
+ ldr r0, _022254AC ; =0x0224308C
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02225448
+ cmp r0, #1
+ beq _02225464
+ cmp r0, #2
+ beq _02225480
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02225448:
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _022254B0 ; =MOD13_0222526C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02225464:
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _022254B4 ; =MOD13_02224A84
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02225480:
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _022254B8 ; =MOD13_02226650
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222549C: .word 0x02243098
+_022254A0: .word 0x02243094
+_022254A4: .word 0x02243090
+_022254A8: .word MOD13_022245B4
+_022254AC: .word 0x0224308C
+_022254B0: .word MOD13_0222526C
+_022254B4: .word MOD13_02224A84
+_022254B8: .word MOD13_02226650
+
+ arm_func_start MOD13_022254BC
+MOD13_022254BC: ; 0x022254BC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02225524 ; =0x02243090
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _022254EC
+ bl MOD13_0221ED28
+_022254EC:
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02225528 ; =MOD13_0222537C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225524: .word 0x02243090
+_02225528: .word MOD13_0222537C
+
+ arm_func_start MOD13_0222552C
+MOD13_0222552C: ; 0x0222552C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _02225550 ; =MOD13_022254BC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225550: .word MOD13_022254BC
+
+ arm_func_start MOD13_02225554
+MOD13_02225554: ; 0x02225554
+ stmdb sp!, {lr}
+ sub sp, sp, #0x14
+ bl MOD13_0221ED14
+ cmp r0, #0
+ beq _02225578
+ cmp r0, #1
+ beq _02225584
+ add sp, sp, #0x14
+ ldmia sp!, {pc}
+_02225578:
+ mov r0, #7
+ bl MOD13_0223424C
+ b _022255E4
+_02225584:
+ add r0, sp, #0
+ bl FUN_02095EC8
+ ldr r0, _022255F4 ; =0x0224308C
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _022255CC
+ ldr r2, [sp]
+ ldr r1, [sp, #4]
+ mov r0, #0
+ cmp r1, r0
+ cmpeq r2, r0
+ bne _022255CC
+ mov r0, #9
+ bl MOD13_0223424C
+ mvn r0, #0
+ bl MOD13_0221ECE0
+ add sp, sp, #0x14
+ ldmia sp!, {pc}
+_022255CC:
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_022252A8
+ ldr r0, _022255F8 ; =0x02243090
+ mov r1, #1
+ strb r1, [r0]
+_022255E4:
+ ldr r0, _022255FC ; =MOD13_0222552C
+ bl MOD13_02222FBC
+ add sp, sp, #0x14
+ ldmia sp!, {pc}
+ .align 2, 0
+_022255F4: .word 0x0224308C
+_022255F8: .word 0x02243090
+_022255FC: .word MOD13_0222552C
+
+ arm_func_start MOD13_02225600
+MOD13_02225600: ; 0x02225600
+ bx lr
+
+ arm_func_start MOD13_02225604
+MOD13_02225604: ; 0x02225604
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r4, _022256FC ; =0x0223F184
+ mov r5, #0
+_02225614:
+ mov r0, r4
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ beq _02225668
+ mov r0, #1
+ bl MOD13_0221ECF4
+ ldr r0, _02225700 ; =0x0224308C
+ ldr ip, _02225704 ; =0x0223F19C
+ strb r5, [r0]
+ ldrb r0, [r0]
+ ldr r1, _02225708 ; =0x0223F1A0
+ ldr r2, _0222570C ; =0x0223F19E
+ mov lr, r0, lsl #3
+ ldr r3, _02225710 ; =0x0223F1A2
+ ldrh r0, [ip, lr]
+ ldrh r1, [r1, lr]
+ ldrh r2, [r2, lr]
+ ldrh r3, [r3, lr]
+ bl MOD13_0221F25C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02225668:
+ add r5, r5, #1
+ cmp r5, #3
+ add r4, r4, #8
+ blo _02225614
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _02225698
+ mov r0, #1
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02225698:
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _022256B8
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_022256B8:
+ mov r0, #0x40
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _022256D8
+ mov r0, #1
+ bl MOD13_022252DC
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_022256D8:
+ mov r0, #0x80
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ mov r0, #3
+ bl MOD13_022252DC
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_022256FC: .word 0x0223F184
+_02225700: .word 0x0224308C
+_02225704: .word 0x0223F19C
+_02225708: .word 0x0223F1A0
+_0222570C: .word 0x0223F19E
+_02225710: .word 0x0223F1A2
+
+ arm_func_start MOD13_02225714
+MOD13_02225714: ; 0x02225714
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02225604
+ bl MOD13_02225600
+ bl MOD13_02225554
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _02225760 ; =MOD13_02225714
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225760: .word MOD13_02225714
+
+ arm_func_start MOD13_02225764
+MOD13_02225764: ; 0x02225764
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221F0EC
+ ldr r0, _022257AC ; =0x02225730
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022257AC: .word 0x02225730
+
+ arm_func_start MOD13_022257B0
+MOD13_022257B0: ; 0x022257B0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x14
+ bl MOD13_0223AEF4
+ ldr r0, _02225808 ; =MOD13_02225764
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225808: .word MOD13_02225764
+
+ arm_func_start MOD13_0222580C
+MOD13_0222580C: ; 0x0222580C
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #0x48
+ ldr r4, _0222597C ; =0x0223F154
+ add r3, sp, #0
+ mov r2, #0xb
+_02225820:
+ ldrb r1, [r4], #1
+ ldrb r0, [r4], #1
+ subs r2, r2, #1
+ strb r1, [r3], #1
+ strb r0, [r3], #1
+ bne _02225820
+ ldr r4, _02225980 ; =0x0223F16C
+ add r3, sp, #0x16
+ mov r2, #0xb
+_02225844:
+ ldrb r1, [r4], #1
+ ldrb r0, [r4], #1
+ subs r2, r2, #1
+ strb r1, [r3], #1
+ strb r0, [r3], #1
+ bne _02225844
+ ldrb r2, [r4]
+ ldr r0, _02225984 ; =0x0224005C
+ ldr r1, _02225988 ; =0x020C8D4C
+ strb r2, [r3]
+ bl MOD13_0221F174
+ ldr r0, _0222598C ; =0x02240074
+ ldr r1, _02225990 ; =0x020C908C
+ bl MOD13_0221F174
+ add r0, sp, #0x16
+ bl MOD13_0221F1BC
+ mov r1, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ ldr r1, _02225994 ; =0x02243094
+ str r0, [r1]
+ add r0, sp, #0
+ bl MOD13_0221F1BC
+ mov r1, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ mov r5, r0
+ add r0, sp, #0x30
+ bl FUN_02095EC8
+ ldr r1, [sp, #0x30]
+ ldr r0, [sp, #0x34]
+ mov r6, #0
+ cmp r0, r6
+ cmpeq r1, r6
+ bne _02225900
+ add r8, r5, #0xc0
+ add r7, r5, #0x40
+ mov r4, #0x20
+_022258DC:
+ mov r0, r8
+ mov r1, r7
+ mov r2, r4
+ bl MI_CpuCopy8
+ add r6, r6, #1
+ cmp r6, #2
+ add r8, r8, #0x20
+ add r7, r7, #0x20
+ blt _022258DC
+_02225900:
+ mov r0, r5
+ mov r1, #0x200
+ bl DC_FlushRange
+ mov r0, r5
+ mov r1, #0
+ mov r2, #0x200
+ bl GX_LoadBGPltt
+ mov r0, r5
+ bl MOD13_0223939C
+ ldr ip, _02225998 ; =0x04001008
+ ldr r3, _0222599C ; =0x0400100A
+ ldrh r0, [ip]
+ ldr r2, _022259A0 ; =0x0400000A
+ ldr r1, _022259A4 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #0x48
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_0222597C: .word 0x0223F154
+_02225980: .word 0x0223F16C
+_02225984: .word 0x0224005C
+_02225988: .word 0x020C8D4C
+_0222598C: .word 0x02240074
+_02225990: .word 0x020C908C
+_02225994: .word 0x02243094
+_02225998: .word 0x04001008
+_0222599C: .word 0x0400100A
+_022259A0: .word 0x0400000A
+_022259A4: .word 0x0400000C
+
+ arm_func_start MOD13_022259A8
+MOD13_022259A8: ; 0x022259A8
+ stmdb sp!, {r4, lr}
+ ldr r0, _02225A70 ; =0x02243090
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_0222580C
+ mov r0, #0x10
+ bl MOD13_0221F4CC
+ mov r0, #3
+ bl MOD13_02234384
+ mov r0, #0x39
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ mov r0, #0
+ mov r1, #0x5b
+ bl MOD13_02239E54
+ ldr r3, _02225A74 ; =0x02243098
+ ldr r1, _02225A78 ; =0x0223F150
+ str r0, [r3]
+ ldrh ip, [r1]
+ ldrh r2, [r1, #2]
+ ldr r1, _02225A7C ; =0x000001FF
+ ldr lr, [r0]
+ and r4, ip, r1
+ and ip, r2, #0xff
+ ldr r1, _02225A80 ; =0xFE00FF00
+ ldr r2, _02225A84 ; =0x0224308C
+ and r1, lr, r1
+ orr r1, r1, ip
+ orr r1, r1, r4, lsl #16
+ str r1, [r0]
+ ldr lr, [r3]
+ ldr r0, _02225A88 ; =0x0223F19C
+ ldrh r3, [lr, #4]
+ ldr r1, _02225A8C ; =0x0223F1A0
+ ldr ip, _02225A90 ; =0x0223F19E
+ bic r3, r3, #0xc00
+ orr r3, r3, #0xc00
+ strh r3, [lr, #4]
+ ldrb r2, [r2]
+ ldr r3, _02225A94 ; =0x0223F1A2
+ mov lr, r2, lsl #3
+ ldrh r0, [r0, lr]
+ ldrh r1, [r1, lr]
+ ldrh r2, [ip, lr]
+ ldrh r3, [r3, lr]
+ bl MOD13_0221F25C
+ ldr r0, _02225A98 ; =MOD13_022257B0
+ bl MOD13_02222FBC
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02225A70: .word 0x02243090
+_02225A74: .word 0x02243098
+_02225A78: .word 0x0223F150
+_02225A7C: .word 0x000001FF
+_02225A80: .word 0xFE00FF00
+_02225A84: .word 0x0224308C
+_02225A88: .word 0x0223F19C
+_02225A8C: .word 0x0223F1A0
+_02225A90: .word 0x0223F19E
+_02225A94: .word 0x0223F1A2
+_02225A98: .word MOD13_022257B0
+
+ arm_func_start MOD13_02225A9C
+MOD13_02225A9C: ; 0x02225A9C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r0, #2
+ bne _02225ACC
+ bl MOD13_02233808
+ ldr r0, _02225B24 ; =0x0224309C
+ mov r1, #1
+ strb r1, [r0]
+ bl MOD13_022341E8
+ mov r0, #0x10
+ bl MOD13_0223424C
+ b _02225B08
+_02225ACC:
+ cmp r0, #3
+ bne _02225AF0
+ ldr r0, _02225B24 ; =0x0224309C
+ mov r1, #2
+ strb r1, [r0]
+ bl MOD13_022341E8
+ mov r0, #0x12
+ bl MOD13_0223424C
+ b _02225B08
+_02225AF0:
+ ldr r0, _02225B24 ; =0x0224309C
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_022341E8
+ mov r0, #0x12
+ bl MOD13_0223424C
+_02225B08:
+ mov r0, #0
+ bl MOD13_02223944
+ bl MOD13_022239B4
+ ldr r0, _02225B28 ; =MOD13_02225BD8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225B24: .word 0x0224309C
+_02225B28: .word MOD13_02225BD8
+
+ arm_func_start MOD13_02225B2C
+MOD13_02225B2C: ; 0x02225B2C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0222395C
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221F694
+ bl MOD13_0221E654
+ mov r0, #0
+ bl MOD13_0223A65C
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02225BC8 ; =0x0224309C
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02225BA0
+ ldr r0, _02225BCC ; =MOD13_02226CB0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02225BA0:
+ cmp r0, #2
+ bne _02225BB8
+ ldr r0, _02225BD0 ; =MOD13_022268B4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02225BB8:
+ ldr r0, _02225BD4 ; =MOD13_02225FE4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225BC8: .word 0x0224309C
+_02225BCC: .word MOD13_02226CB0
+_02225BD0: .word MOD13_022268B4
+_02225BD4: .word MOD13_02225FE4
+
+ arm_func_start MOD13_02225BD8
+MOD13_02225BD8: ; 0x02225BD8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02225C04 ; =MOD13_02225B2C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225C04: .word MOD13_02225B2C
+
+ arm_func_start MOD13_02225C08
+MOD13_02225C08: ; 0x02225C08
+ bx lr
+
+ arm_func_start MOD13_02225C0C
+MOD13_02225C0C: ; 0x02225C0C
+ bx lr
+
+ arm_func_start MOD13_02225C10
+MOD13_02225C10: ; 0x02225C10
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02225C0C
+ bl MOD13_02225C08
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02225C5C ; =MOD13_02225A9C
+ bl MOD13_02223944
+ ldr r0, _02225C60 ; =MOD13_02225C10
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225C5C: .word MOD13_02225A9C
+_02225C60: .word MOD13_02225C10
+
+ arm_func_start MOD13_02225C64
+MOD13_02225C64: ; 0x02225C64
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _02225C9C ; =0x02225C28
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225C9C: .word 0x02225C28
+
+ arm_func_start MOD13_02225CA0
+MOD13_02225CA0: ; 0x02225CA0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02225D20 ; =0x0224008C
+ ldr r1, _02225D24 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _02225D28 ; =0x04001008
+ ldr ip, _02225D2C ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02225D30 ; =0x04000008
+ ldr r2, _02225D34 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _02225D38 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225D20: .word 0x0224008C
+_02225D24: .word 0x020C908C
+_02225D28: .word 0x04001008
+_02225D2C: .word 0x0400100A
+_02225D30: .word 0x04000008
+_02225D34: .word 0x0400000A
+_02225D38: .word 0x0400000C
+
+ arm_func_start MOD13_02225D3C
+MOD13_02225D3C: ; 0x02225D3C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02225CA0
+ mov r0, #0x1e
+ bl MOD13_0221F070
+ mov r0, #0
+ bl MOD13_0221E694
+ mov r0, #1
+ bl MOD13_0221F6E0
+ mov r0, #0xb
+ bl MOD13_0223424C
+ ldr r0, _02225D78 ; =MOD13_02225C64
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225D78: .word MOD13_02225C64
+
+ arm_func_start MOD13_02225D7C
+MOD13_02225D7C: ; 0x02225D7C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0x1000000
+ bl OS_SpinWait
+ bl PM_ForceToPowerOff
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #3
+ mov r1, #1
+ mov r2, #0x3f
+ mov r3, #0x40
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x3f
+ mov r3, #0x40
+ bl MOD13_0223A2A8
+ ldr r0, _02225E14 ; =MOD13_02225D7C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225E14: .word MOD13_02225D7C
+
+ arm_func_start MOD13_02225E18
+MOD13_02225E18: ; 0x02225E18
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _02225E3C ; =0x02225DC0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225E3C: .word 0x02225DC0
+
+ arm_func_start MOD13_02225E40
+MOD13_02225E40: ; 0x02225E40
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ ldr r0, _02225E70 ; =MOD13_02225E18
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225E70: .word MOD13_02225E18
+
+ arm_func_start MOD13_02225E74
+MOD13_02225E74: ; 0x02225E74
+ bx lr
+
+ arm_func_start MOD13_02225E78
+MOD13_02225E78: ; 0x02225E78
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02225E78
+ bl MOD13_02225E74
+ bl MOD13_02225E40
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _02225EF0 ; =0x02225EA4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225EF0: .word 0x02225EA4
+
+ arm_func_start MOD13_02225EF4
+MOD13_02225EF4: ; 0x02225EF4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #5
+ bl MOD13_0221F0EC
+ ldr r0, _02225F28 ; =0x02225EC0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225F28: .word 0x02225EC0
+
+ arm_func_start MOD13_02225F2C
+MOD13_02225F2C: ; 0x02225F2C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _02225F64 ; =MOD13_02225EF4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02225F64: .word MOD13_02225EF4
+
+ arm_func_start MOD13_02225F68
+MOD13_02225F68: ; 0x02225F68
+ ldr r1, _02225FD0 ; =0x04001008
+ ldr ip, _02225FD4 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02225FD8 ; =0x04000008
+ ldr r2, _02225FDC ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _02225FE0 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ bx lr
+ .align 2, 0
+_02225FD0: .word 0x04001008
+_02225FD4: .word 0x0400100A
+_02225FD8: .word 0x04000008
+_02225FDC: .word 0x0400000A
+_02225FE0: .word 0x0400000C
+
+ arm_func_start MOD13_02225FE4
+MOD13_02225FE4: ; 0x02225FE4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02225F68
+ mov r0, #0x1f
+ bl MOD13_0221F070
+ ldr r0, _02226008 ; =MOD13_02225F2C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226008: .word MOD13_02225F2C
+
+ arm_func_start MOD13_0222600C
+MOD13_0222600C: ; 0x0222600C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A65C
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02226068 ; =MOD13_022275A4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226068: .word MOD13_022275A4
+
+ arm_func_start MOD13_0222606C
+MOD13_0222606C: ; 0x0222606C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ED28
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _022260B0 ; =MOD13_0222600C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022260B0: .word MOD13_0222600C
+
+ arm_func_start MOD13_022260B4
+MOD13_022260B4: ; 0x022260B4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _022260D8 ; =MOD13_0222606C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022260D8: .word MOD13_0222606C
+
+ arm_func_start MOD13_022260DC
+MOD13_022260DC: ; 0x022260DC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ ldr r0, _0222610C ; =MOD13_022260B4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222610C: .word MOD13_022260B4
+
+ arm_func_start MOD13_02226110
+MOD13_02226110: ; 0x02226110
+ bx lr
+
+ arm_func_start MOD13_02226114
+MOD13_02226114: ; 0x02226114
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02226114
+ bl MOD13_02226110
+ bl MOD13_022260DC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _0222618C ; =0x02226140
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222618C: .word 0x02226140
+
+ arm_func_start MOD13_02226190
+MOD13_02226190: ; 0x02226190
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #4
+ bl MOD13_0221F0EC
+ ldr r0, _022261D8 ; =0x0222615C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022261D8: .word 0x0222615C
+
+ arm_func_start MOD13_022261DC
+MOD13_022261DC: ; 0x022261DC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _02226214 ; =MOD13_02226190
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226214: .word MOD13_02226190
+
+ arm_func_start MOD13_02226218
+MOD13_02226218: ; 0x02226218
+ ldr r1, _02226280 ; =0x04001008
+ ldr ip, _02226284 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02226288 ; =0x04000008
+ ldr r2, _0222628C ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _02226290 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ bx lr
+ .align 2, 0
+_02226280: .word 0x04001008
+_02226284: .word 0x0400100A
+_02226288: .word 0x04000008
+_0222628C: .word 0x0400000A
+_02226290: .word 0x0400000C
+
+ arm_func_start MOD13_02226294
+MOD13_02226294: ; 0x02226294
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02226218
+ mov r0, #0x1a
+ bl MOD13_0221F070
+ ldr r0, _022262B8 ; =MOD13_022261DC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022262B8: .word MOD13_022261DC
+
+ arm_func_start MOD13_022262BC
+MOD13_022262BC: ; 0x022262BC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02226388 ; =0x022430A0
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _022262FC
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_022262FC:
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A65C
+ ldr r0, _02226388 ; =0x022430A0
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02226334
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+_02226334:
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ ldr r0, _02226388 ; =0x022430A0
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222636C
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _0222638C ; =MOD13_022259A8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222636C:
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02226390 ; =MOD13_02226294
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226388: .word 0x022430A0
+_0222638C: .word MOD13_022259A8
+_02226390: .word MOD13_02226294
+
+ arm_func_start MOD13_02226394
+MOD13_02226394: ; 0x02226394
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ED28
+ ldr r0, _022263FC ; =0x022430A0
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _022263D8
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+_022263D8:
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02226400 ; =MOD13_022262BC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022263FC: .word 0x022430A0
+_02226400: .word MOD13_022262BC
+
+ arm_func_start MOD13_02226404
+MOD13_02226404: ; 0x02226404
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _02226428 ; =MOD13_02226394
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226428: .word MOD13_02226394
+
+ arm_func_start MOD13_0222642C
+MOD13_0222642C: ; 0x0222642C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ beq _02226450
+ cmp r0, #1
+ beq _0222645C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02226450:
+ mov r0, #7
+ bl MOD13_0223424C
+ b _02226470
+_0222645C:
+ mov r0, #6
+ bl MOD13_0223424C
+ ldr r0, _02226480 ; =0x022430A0
+ mov r1, #1
+ strb r1, [r0]
+_02226470:
+ ldr r0, _02226484 ; =MOD13_02226404
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226480: .word 0x022430A0
+_02226484: .word MOD13_02226404
+
+ arm_func_start MOD13_02226488
+MOD13_02226488: ; 0x02226488
+ bx lr
+
+ arm_func_start MOD13_0222648C
+MOD13_0222648C: ; 0x0222648C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _022264AC
+ mov r0, #1
+ bl MOD13_0221ECF4
+_022264AC:
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0222648C
+ bl MOD13_02226488
+ bl MOD13_0222642C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _0222651C ; =0x022264D0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222651C: .word 0x022264D0
+
+ arm_func_start MOD13_02226520
+MOD13_02226520: ; 0x02226520
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #3
+ bl MOD13_0221F0EC
+ ldr r0, _02226554 ; =0x022264EC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226554: .word 0x022264EC
+
+ arm_func_start MOD13_02226558
+MOD13_02226558: ; 0x02226558
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _022265B0 ; =MOD13_02226520
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022265B0: .word MOD13_02226520
+
+ arm_func_start MOD13_022265B4
+MOD13_022265B4: ; 0x022265B4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02226634 ; =0x022400A0
+ ldr r1, _02226638 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _0222663C ; =0x04001008
+ ldr ip, _02226640 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02226644 ; =0x04000008
+ ldr r2, _02226648 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _0222664C ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226634: .word 0x022400A0
+_02226638: .word 0x020C908C
+_0222663C: .word 0x04001008
+_02226640: .word 0x0400100A
+_02226644: .word 0x04000008
+_02226648: .word 0x0400000A
+_0222664C: .word 0x0400000C
+
+ arm_func_start MOD13_02226650
+MOD13_02226650: ; 0x02226650
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02226698 ; =0x022430A0
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_022265B4
+ mov r0, #0x13
+ bl MOD13_0221F4CC
+ mov r0, #0x3c
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ mov r0, #0x1b
+ bl MOD13_0221F070
+ ldr r0, _0222669C ; =MOD13_02226558
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226698: .word 0x022430A0
+_0222669C: .word MOD13_02226558
+
+ arm_func_start MOD13_022266A0
+MOD13_022266A0: ; 0x022266A0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022266D8 ; =0x022430A4
+ ldrb r1, [r0]
+ add r1, r1, #1
+ strb r1, [r0]
+ ldrb r0, [r0]
+ cmp r0, #0x78
+ addlo sp, sp, #4
+ ldmloia sp!, {pc}
+ ldr r0, _022266DC ; =MOD13_02226754
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022266D8: .word 0x022430A4
+_022266DC: .word MOD13_02226754
+
+ arm_func_start MOD13_022266E0
+MOD13_022266E0: ; 0x022266E0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A65C
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02226750 ; =MOD13_022259A8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226750: .word MOD13_022259A8
+
+ arm_func_start MOD13_02226754
+MOD13_02226754: ; 0x02226754
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02226794 ; =MOD13_022266E0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226794: .word MOD13_022266E0
+
+ arm_func_start MOD13_02226798
+MOD13_02226798: ; 0x02226798
+ bx lr
+
+ arm_func_start MOD13_0222679C
+MOD13_0222679C: ; 0x0222679C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_022266A0
+ bl MOD13_02226798
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0222395C
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _022267F0 ; =MOD13_0222679C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022267F0: .word MOD13_0222679C
+
+ arm_func_start MOD13_022267F4
+MOD13_022267F4: ; 0x022267F4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _0222682C ; =0x022267B4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222682C: .word 0x022267B4
+
+ arm_func_start MOD13_02226830
+MOD13_02226830: ; 0x02226830
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222689C ; =0x022400B4
+ ldr r1, _022268A0 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr ip, _022268A4 ; =0x04001008
+ ldr r3, _022268A8 ; =0x0400100A
+ ldrh r0, [ip]
+ ldr r2, _022268AC ; =0x0400000A
+ ldr r1, _022268B0 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222689C: .word 0x022400B4
+_022268A0: .word 0x020C908C
+_022268A4: .word 0x04001008
+_022268A8: .word 0x0400100A
+_022268AC: .word 0x0400000A
+_022268B0: .word 0x0400000C
+
+ arm_func_start MOD13_022268B4
+MOD13_022268B4: ; 0x022268B4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022268E4 ; =0x022430A4
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_02226830
+ mov r0, #0x21
+ bl MOD13_0221F070
+ ldr r0, _022268E8 ; =MOD13_022267F4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022268E4: .word 0x022430A4
+_022268E8: .word MOD13_022267F4
+
+ arm_func_start MOD13_022268EC
+MOD13_022268EC: ; 0x022268EC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A65C
+ ldr r0, _022269A8 ; =0x022430AC
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02226954
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+_02226954:
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ ldr r0, _022269A8 ; =0x022430AC
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222698C
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _022269AC ; =MOD13_022259A8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222698C:
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _022269B0 ; =MOD13_022275A4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022269A8: .word 0x022430AC
+_022269AC: .word MOD13_022259A8
+_022269B0: .word MOD13_022275A4
+
+ arm_func_start MOD13_022269B4
+MOD13_022269B4: ; 0x022269B4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ED28
+ ldr r0, _02226A1C ; =0x022430AC
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _022269F8
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+_022269F8:
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02226A20 ; =MOD13_022268EC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226A1C: .word 0x022430AC
+_02226A20: .word MOD13_022268EC
+
+ arm_func_start MOD13_02226A24
+MOD13_02226A24: ; 0x02226A24
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _02226A48 ; =MOD13_022269B4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226A48: .word MOD13_022269B4
+
+ arm_func_start MOD13_02226A4C
+MOD13_02226A4C: ; 0x02226A4C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ beq _02226A84
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r1, _02226AA8 ; =0x022430AC
+ mov r2, #1
+ mov r0, #6
+ strb r2, [r1]
+ bl MOD13_0223424C
+ b _02226A98
+_02226A84:
+ ldr r1, _02226AA8 ; =0x022430AC
+ mov r2, #0
+ mov r0, #7
+ strb r2, [r1]
+ bl MOD13_0223424C
+_02226A98:
+ ldr r0, _02226AAC ; =MOD13_02226A24
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226AA8: .word 0x022430AC
+_02226AAC: .word MOD13_02226A24
+
+ arm_func_start MOD13_02226AB0
+MOD13_02226AB0: ; 0x02226AB0
+ bx lr
+
+ arm_func_start MOD13_02226AB4
+MOD13_02226AB4: ; 0x02226AB4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _02226AD4
+ mov r0, #1
+ bl MOD13_0221ECF4
+_02226AD4:
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02226AB4
+ bl MOD13_02226AB0
+ bl MOD13_02226A4C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0222395C
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _02226B54 ; =0x02226AF8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226B54: .word 0x02226AF8
+
+ arm_func_start MOD13_02226B58
+MOD13_02226B58: ; 0x02226B58
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #3
+ bl MOD13_0221F0EC
+ ldr r0, _02226BA0 ; =0x02226B14
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226BA0: .word 0x02226B14
+
+ arm_func_start MOD13_02226BA4
+MOD13_02226BA4: ; 0x02226BA4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _02226C0C ; =0x022430A8
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02226BFC
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+_02226BFC:
+ ldr r0, _02226C10 ; =MOD13_02226B58
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226C0C: .word 0x022430A8
+_02226C10: .word MOD13_02226B58
+
+ arm_func_start MOD13_02226C14
+MOD13_02226C14: ; 0x02226C14
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02226C94 ; =0x022400C8
+ ldr r1, _02226C98 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _02226C9C ; =0x04001008
+ ldr ip, _02226CA0 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02226CA4 ; =0x04000008
+ ldr r2, _02226CA8 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _02226CAC ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226C94: .word 0x022400C8
+_02226C98: .word 0x020C908C
+_02226C9C: .word 0x04001008
+_02226CA0: .word 0x0400100A
+_02226CA4: .word 0x04000008
+_02226CA8: .word 0x0400000A
+_02226CAC: .word 0x0400000C
+
+ arm_func_start MOD13_02226CB0
+MOD13_02226CB0: ; 0x02226CB0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02226C14
+ mov r0, #0x20
+ bl MOD13_0221F070
+ mov r0, #0x3c
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ ldr r1, _02226CEC ; =0x022430A8
+ strb r0, [r1]
+ ldr r0, _02226CF0 ; =MOD13_02226BA4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226CEC: .word 0x022430A8
+_02226CF0: .word MOD13_02226BA4
+
+ arm_func_start MOD13_02226CF4
+MOD13_02226CF4: ; 0x02226CF4
+ ldr r0, _02226D04 ; =0x022430B0
+ mov r1, #1
+ strb r1, [r0]
+ bx lr
+ .align 2, 0
+_02226D04: .word 0x022430B0
+
+ arm_func_start MOD13_02226D08
+MOD13_02226D08: ; 0x02226D08
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02226DDC ; =0x022430B0
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02226D30
+ ldr r0, _02226DE0 ; =0x022430B4
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02226D40
+_02226D30:
+ bl MOD13_0222395C
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+_02226D40:
+ mov r0, #0
+ bl MOD13_0223A65C
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ ldr r0, _02226DE0 ; =0x022430B4
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02226D74
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+_02226D74:
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02226DDC ; =0x022430B0
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02226DA0
+ ldr r0, _02226DE4 ; =MOD13_02226CB0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02226DA0:
+ ldr r0, _02226DE0 ; =0x022430B4
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02226DCC
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ ldr r0, _02226DE8 ; =MOD13_022259A8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02226DCC:
+ ldr r0, _02226DEC ; =MOD13_02225D3C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226DDC: .word 0x022430B0
+_02226DE0: .word 0x022430B4
+_02226DE4: .word MOD13_02226CB0
+_02226DE8: .word MOD13_022259A8
+_02226DEC: .word MOD13_02225D3C
+
+ arm_func_start MOD13_02226DF0
+MOD13_02226DF0: ; 0x02226DF0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02226E5C ; =0x022430B0
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02226E48
+ ldr r0, _02226E60 ; =0x022430B4
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _02226E48
+ bl MOD13_02223938
+ b _02226E4C
+_02226E48:
+ bl MOD13_022239B4
+_02226E4C:
+ ldr r0, _02226E64 ; =MOD13_02226D08
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226E5C: .word 0x022430B0
+_02226E60: .word 0x022430B4
+_02226E64: .word MOD13_02226D08
+
+ arm_func_start MOD13_02226E68
+MOD13_02226E68: ; 0x02226E68
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02226EC8 ; =0x022430B4
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02226EA4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+_02226EA4:
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02226ECC ; =MOD13_02226DF0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226EC8: .word 0x022430B4
+_02226ECC: .word MOD13_02226DF0
+
+ arm_func_start MOD13_02226ED0
+MOD13_02226ED0: ; 0x02226ED0
+ bx lr
+
+ arm_func_start MOD13_02226ED4
+MOD13_02226ED4: ; 0x02226ED4
+ bx lr
+
+ arm_func_start MOD13_02226ED8
+MOD13_02226ED8: ; 0x02226ED8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02226ED4
+ bl MOD13_02226ED0
+ bl MOD13_02235E9C
+ cmp r0, #0
+ beq _02226F04
+ cmp r0, #1
+ beq _02226F1C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02226F04:
+ ldr r1, _02226F4C ; =0x022430B4
+ mov r2, #0
+ mov r0, #7
+ strb r2, [r1]
+ bl MOD13_0223424C
+ b _02226F30
+_02226F1C:
+ ldr r1, _02226F4C ; =0x022430B4
+ mov r2, #1
+ mov r0, #0xe
+ strb r2, [r1]
+ bl MOD13_0223424C
+_02226F30:
+ mov r0, #0
+ bl MOD13_02223944
+ bl MOD13_02235EB0
+ ldr r0, _02226F50 ; =MOD13_02226E68
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226F4C: .word 0x022430B4
+_02226F50: .word MOD13_02226E68
+
+ arm_func_start MOD13_02226F54
+MOD13_02226F54: ; 0x02226F54
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _02226F80 ; =MOD13_02226ED8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226F80: .word MOD13_02226ED8
+
+ arm_func_start MOD13_02226F84
+MOD13_02226F84: ; 0x02226F84
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r2, #0
+ mov r0, #0x1d
+ mov r1, #4
+ mvn r3, #0
+ str r2, [sp]
+ bl MOD13_02235EFC
+ ldr r0, _02226FC8 ; =MOD13_02226F54
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02226FC8: .word MOD13_02226F54
+
+ arm_func_start MOD13_02226FCC
+MOD13_02226FCC: ; 0x02226FCC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _02227004 ; =MOD13_02226F84
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227004: .word MOD13_02226F84
+
+ arm_func_start MOD13_02227008
+MOD13_02227008: ; 0x02227008
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02227088 ; =0x022400DC
+ ldr r1, _0222708C ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _02227090 ; =0x04001008
+ ldr ip, _02227094 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02227098 ; =0x04000008
+ ldr r2, _0222709C ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _022270A0 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227088: .word 0x022400DC
+_0222708C: .word 0x020C908C
+_02227090: .word 0x04001008
+_02227094: .word 0x0400100A
+_02227098: .word 0x04000008
+_0222709C: .word 0x0400000A
+_022270A0: .word 0x0400000C
+
+ arm_func_start MOD13_022270A4
+MOD13_022270A4: ; 0x022270A4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x2c
+ bl MOD13_0222391C
+ mov r5, r0
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_0223A7F0
+ ldr r2, _02227160 ; =0x022430B4
+ mov r3, #0
+ ldr r1, _02227164 ; =0x022430B0
+ mov r4, r0
+ strb r3, [r2]
+ strb r3, [r1]
+ bl MOD13_02227008
+ mov r0, #0
+ add r1, sp, #0x10
+ mov r2, #0x16
+ bl MIi_CpuClear16
+ ldrb r2, [r5, #1]
+ add r0, r5, #2
+ add r1, sp, #0x10
+ mov r2, r2, lsl #1
+ bl MIi_CpuCopy16
+ ldr r0, _02227168 ; =0x0223F1B4
+ mov lr, #2
+ ldrh r2, [r0, #2]
+ ldrh r5, [r0, #6]
+ ldrh r1, [r0]
+ mov ip, #0x480
+ sub r5, r5, r2
+ str r5, [sp]
+ str lr, [sp, #4]
+ add r3, sp, #0x10
+ str ip, [sp, #8]
+ str r3, [sp, #0xc]
+ ldrh r3, [r0, #4]
+ mov r0, r4
+ sub r3, r3, r1
+ bl MOD13_0223A4F0
+ mov r0, r4
+ bl MOD13_0223A410
+ ldr r0, _0222716C ; =MOD13_02226CF4
+ bl MOD13_02223944
+ ldr r0, _02227170 ; =MOD13_02226FCC
+ bl MOD13_02222FBC
+ add sp, sp, #0x2c
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02227160: .word 0x022430B4
+_02227164: .word 0x022430B0
+_02227168: .word 0x0223F1B4
+_0222716C: .word MOD13_02226CF4
+_02227170: .word MOD13_02226FCC
+
+ arm_func_start MOD13_02227174
+MOD13_02227174: ; 0x02227174
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD13_022341E8
+ cmp r4, #0
+ bne _022271A0
+ ldr r1, _022271C8 ; =0x022430B8
+ mov r2, #1
+ mov r0, #0x10
+ strb r2, [r1]
+ bl MOD13_0223424C
+ b _022271B4
+_022271A0:
+ ldr r1, _022271C8 ; =0x022430B8
+ mov r2, #2
+ mov r0, #0x12
+ strb r2, [r1]
+ bl MOD13_0223424C
+_022271B4:
+ mov r0, #0
+ bl MOD13_02223944
+ ldr r0, _022271CC ; =MOD13_02227384
+ bl MOD13_02222FBC
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022271C8: .word 0x022430B8
+_022271CC: .word MOD13_02227384
+
+ arm_func_start MOD13_022271D0
+MOD13_022271D0: ; 0x022271D0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _022272E4 ; =0x022430B8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02227210
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_02227210:
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _022272E4 ; =0x022430B8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02227240
+ bl MOD13_0222395C
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+_02227240:
+ bl MOD13_0221E654
+ mov r0, #0
+ bl MOD13_0223A65C
+ ldr r0, _022272E4 ; =0x022430B8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222726C
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+_0222726C:
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ ldr r0, _022272E4 ; =0x022430B8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _022272A4
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _022272E8 ; =MOD13_022259A8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022272A4:
+ cmp r0, #2
+ bne _022272C8
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _022272EC ; =MOD13_02226CB0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022272C8:
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _022272F0 ; =MOD13_022270A4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022272E4: .word 0x022430B8
+_022272E8: .word MOD13_022259A8
+_022272EC: .word MOD13_02226CB0
+_022272F0: .word MOD13_022270A4
+
+ arm_func_start MOD13_022272F4
+MOD13_022272F4: ; 0x022272F4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222737C ; =0x022430B8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02227330
+ bl MOD13_0222395C
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+_02227330:
+ bl MOD13_0221ED28
+ ldr r0, _0222737C ; =0x022430B8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02227358
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+_02227358:
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02227380 ; =MOD13_022271D0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222737C: .word 0x022430B8
+_02227380: .word MOD13_022271D0
+
+ arm_func_start MOD13_02227384
+MOD13_02227384: ; 0x02227384
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022273BC ; =0x022430B8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _022273A0
+ bl MOD13_022239B4
+_022273A0:
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _022273C0 ; =MOD13_022272F4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022273BC: .word 0x022430B8
+_022273C0: .word MOD13_022272F4
+
+ arm_func_start MOD13_022273C4
+MOD13_022273C4: ; 0x022273C4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_022341E8
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r0, _022273F8 ; =MOD13_02227384
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022273F8: .word MOD13_02227384
+
+ arm_func_start MOD13_022273FC
+MOD13_022273FC: ; 0x022273FC
+ bx lr
+
+ arm_func_start MOD13_02227400
+MOD13_02227400: ; 0x02227400
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _02227428
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02227428:
+ bl MOD13_022275F8
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02227400
+ bl MOD13_022273FC
+ bl MOD13_022273C4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _02227490 ; =0x02227448
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227490: .word 0x02227448
+
+ arm_func_start MOD13_02227494
+MOD13_02227494: ; 0x02227494
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #1
+ bl MOD13_0221F0EC
+ ldr r0, _022274C8 ; =0x02227464
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022274C8: .word 0x02227464
+
+ arm_func_start MOD13_022274CC
+MOD13_022274CC: ; 0x022274CC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _02227504 ; =MOD13_02227494
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227504: .word MOD13_02227494
+
+ arm_func_start MOD13_02227508
+MOD13_02227508: ; 0x02227508
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02227588 ; =0x022400F0
+ ldr r1, _0222758C ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _02227590 ; =0x04001008
+ ldr ip, _02227594 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02227598 ; =0x04000008
+ ldr r2, _0222759C ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _022275A0 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227588: .word 0x022400F0
+_0222758C: .word 0x020C908C
+_02227590: .word 0x04001008
+_02227594: .word 0x0400100A
+_02227598: .word 0x04000008
+_0222759C: .word 0x0400000A
+_022275A0: .word 0x0400000C
+
+ arm_func_start MOD13_022275A4
+MOD13_022275A4: ; 0x022275A4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022275EC ; =MOD13_02227174
+ bl MOD13_022239D4
+ ldr r0, _022275F0 ; =0x022430B8
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_02227508
+ mov r0, #0x1c
+ bl MOD13_0221F070
+ mov r0, #0
+ bl MOD13_0221E694
+ mov r0, #0xb
+ bl MOD13_0223424C
+ ldr r0, _022275F4 ; =MOD13_022274CC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022275EC: .word MOD13_02227174
+_022275F0: .word 0x022430B8
+_022275F4: .word MOD13_022274CC
+
+ arm_func_start MOD13_022275F8
+MOD13_022275F8: ; 0x022275F8
+ ldr r0, _02227614 ; =0x027FFFA8
+ ldrh r0, [r0]
+ and r0, r0, #0x8000
+ movs r0, r0, asr #0xf
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_02227614: .word 0x027FFFA8
+
+ arm_func_start MOD13_02227618
+MOD13_02227618: ; 0x02227618
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_022341E8
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r1, _02227648 ; =0x022430BC
+ mov r2, #0
+ ldr r0, _0222764C ; =MOD13_02227894
+ strb r2, [r1]
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227648: .word 0x022430BC
+_0222764C: .word MOD13_02227894
+
+ arm_func_start MOD13_02227650
+MOD13_02227650: ; 0x02227650
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02227938
+ bl MOD13_02227934
+ bl MOD13_022278D8
+ ldr r1, _0222769C ; =0x022430C0
+ ldr r0, _022276A0 ; =0x00000438
+ ldrh r2, [r1]
+ add r2, r2, #1
+ strh r2, [r1]
+ ldrh r1, [r1]
+ cmp r1, r0
+ addlo sp, sp, #4
+ ldmloia sp!, {pc}
+ bl MOD13_022341E8
+ ldr r0, _022276A4 ; =MOD13_02227894
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222769C: .word 0x022430C0
+_022276A0: .word 0x00000438
+_022276A4: .word MOD13_02227894
+
+ arm_func_start MOD13_022276A8
+MOD13_022276A8: ; 0x022276A8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _022276D0 ; =MOD13_02227894
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022276D0: .word MOD13_02227894
+
+ arm_func_start MOD13_022276D4
+MOD13_022276D4: ; 0x022276D4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_02235EB0
+ ldr r0, _02227708 ; =MOD13_022276A8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227708: .word MOD13_022276A8
+
+ arm_func_start MOD13_0222770C
+MOD13_0222770C: ; 0x0222770C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0223B6A8
+ mov r0, #0
+ bl MOD13_0223C1E0
+ bl MOD13_02227938
+ bl MOD13_022278D8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02227818 ; =0x022430BC
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02227770
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_02227770:
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _02227818 ; =0x022430BC
+ ldrb r0, [r0]
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ bl MOD13_02222D7C
+ bl MOD13_0221E654
+ mov r0, #0
+ bl MOD13_0223A65C
+ ldr r0, _02227818 ; =0x022430BC
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _022277C4
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+_022277C4:
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ ldr r0, _02227818 ; =0x022430BC
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _022277FC
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _0222781C ; =MOD13_02230EC4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022277FC:
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222FA8
+ ldr r0, _02227820 ; =MOD13_02227ED0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227818: .word 0x022430BC
+_0222781C: .word MOD13_02230EC4
+_02227820: .word MOD13_02227ED0
+
+ arm_func_start MOD13_02227824
+MOD13_02227824: ; 0x02227824
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ED28
+ ldr r0, _0222788C ; =0x022430BC
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02227868
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+_02227868:
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02227890 ; =0x02227730
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222788C: .word 0x022430BC
+_02227890: .word 0x02227730
+
+ arm_func_start MOD13_02227894
+MOD13_02227894: ; 0x02227894
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ ldr r0, _022278D0 ; =0x022430C4
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _022278B8
+ mov r0, #1
+ bl MOD13_0223C104
+_022278B8:
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _022278D4 ; =MOD13_02227824
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022278D0: .word 0x022430C4
+_022278D4: .word MOD13_02227824
+
+ arm_func_start MOD13_022278D8
+MOD13_022278D8: ; 0x022278D8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222792C ; =0x022430C4
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #1
+ bl MOD13_0223C110
+ ldr r0, _0222792C ; =0x022430C4
+ mov r1, #0
+ str r1, [r0]
+ bl MOD13_0221EC84
+ ldr r0, _02227930 ; =MOD13_02227618
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222792C: .word 0x022430C4
+_02227930: .word MOD13_02227618
+
+ arm_func_start MOD13_02227934
+MOD13_02227934: ; 0x02227934
+ bx lr
+
+ arm_func_start MOD13_02227938
+MOD13_02227938: ; 0x02227938
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _02227960
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02227960:
+ bl MOD13_02227CA0
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02227938
+ bl MOD13_02227934
+ bl MOD13_022278D8
+ bl MOD13_02222D0C
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ cmp r0, #1
+ beq _022279BC
+ cmp r0, #2
+ beq _022279FC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022279BC:
+ ldr r0, _02227A68 ; =0x022430C4
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r2, _02227A6C ; =0x022430BC
+ mov r0, #1
+ strb r0, [r2]
+ bl MOD13_0223C104
+ ldr r1, _02227A68 ; =0x022430C4
+ mov r2, #0
+ ldr r0, _02227A70 ; =MOD13_02227650
+ str r2, [r1]
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022279FC:
+ ldr r0, _02227A68 ; =0x022430C4
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_022341E8
+ mov r1, #1
+ mov ip, #0
+ mov r2, r1
+ mov r0, #0xc
+ mvn r3, #0
+ str ip, [sp]
+ bl MOD13_02235EFC
+ mov r0, #9
+ bl MOD13_0223424C
+ bl MOD13_0221EC84
+ ldr r1, _02227A68 ; =0x022430C4
+ mov r0, #1
+ ldr r1, [r1]
+ bl MOD13_0223C104
+ ldr r1, _02227A68 ; =0x022430C4
+ mov r2, #0
+ ldr r0, _02227A74 ; =MOD13_022276D4
+ str r2, [r1]
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227A68: .word 0x022430C4
+_02227A6C: .word 0x022430BC
+_02227A70: .word MOD13_02227650
+_02227A74: .word MOD13_022276D4
+
+ arm_func_start MOD13_02227A78
+MOD13_02227A78: ; 0x02227A78
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r1, _02227AC0 ; =MOD13_0222770C
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02227AC4 ; =0x022430C4
+ str r0, [r1]
+ ldr r0, _02227AC8 ; =0x02227980
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227AC0: .word MOD13_0222770C
+_02227AC4: .word 0x022430C4
+_02227AC8: .word 0x02227980
+
+ arm_func_start MOD13_02227ACC
+MOD13_02227ACC: ; 0x02227ACC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #1
+ bl MOD13_0221F0EC
+ ldr r0, _02227B14 ; =MOD13_02227A78
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227B14: .word MOD13_02227A78
+
+ arm_func_start MOD13_02227B18
+MOD13_02227B18: ; 0x02227B18
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _02227B70 ; =MOD13_02227ACC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227B70: .word MOD13_02227ACC
+
+ arm_func_start MOD13_02227B74
+MOD13_02227B74: ; 0x02227B74
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02227C0C ; =0x02240104
+ ldr r1, _02227C10 ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r0, _02227C14 ; =0x0224011C
+ ldr r1, _02227C18 ; =0x020C9550
+ bl MOD13_0221F174
+ ldr r0, _02227C1C ; =0x02240134
+ ldr r1, _02227C20 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _02227C24 ; =0x04001008
+ ldr ip, _02227C28 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02227C2C ; =0x04000008
+ ldr r2, _02227C30 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _02227C34 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227C0C: .word 0x02240104
+_02227C10: .word 0x020C8D4C
+_02227C14: .word 0x0224011C
+_02227C18: .word 0x020C9550
+_02227C1C: .word 0x02240134
+_02227C20: .word 0x020C908C
+_02227C24: .word 0x04001008
+_02227C28: .word 0x0400100A
+_02227C2C: .word 0x04000008
+_02227C30: .word 0x0400000A
+_02227C34: .word 0x0400000C
+
+ arm_func_start MOD13_02227C38
+MOD13_02227C38: ; 0x02227C38
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02227C98 ; =0x022430C0
+ mov r1, #0
+ strh r1, [r0]
+ bl MOD13_02227B74
+ bl MOD13_0221F4AC
+ mov r0, #0x36
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ mov r0, #2
+ bl MOD13_0221F124
+ mov r0, #0x22
+ bl MOD13_0221F070
+ mov r0, #0
+ bl MOD13_0221E694
+ bl MOD13_02222DD8
+ mov r0, #0xb
+ bl MOD13_0223424C
+ ldr r0, _02227C9C ; =MOD13_02227B18
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227C98: .word 0x022430C0
+_02227C9C: .word MOD13_02227B18
+
+ arm_func_start MOD13_02227CA0
+MOD13_02227CA0: ; 0x02227CA0
+ ldr r0, _02227CBC ; =0x027FFFA8
+ ldrh r0, [r0]
+ and r0, r0, #0x8000
+ movs r0, r0, asr #0xf
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_02227CBC: .word 0x027FFFA8
+
+ arm_func_start MOD13_02227CC0
+MOD13_02227CC0: ; 0x02227CC0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02227CF8 ; =0x022430C8
+ ldrb r1, [r0]
+ add r1, r1, #1
+ strb r1, [r0]
+ ldrb r0, [r0]
+ cmp r0, #0x78
+ addlo sp, sp, #4
+ ldmloia sp!, {pc}
+ ldr r0, _02227CFC ; =MOD13_02227D80
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227CF8: .word 0x022430C8
+_02227CFC: .word MOD13_02227D80
+
+ arm_func_start MOD13_02227D00
+MOD13_02227D00: ; 0x02227D00
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A65C
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222FA8
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222F6C
+ ldr r0, _02227D7C ; =MOD13_0223197C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227D7C: .word MOD13_0223197C
+
+ arm_func_start MOD13_02227D80
+MOD13_02227D80: ; 0x02227D80
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02227DC0 ; =MOD13_02227D00
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227DC0: .word MOD13_02227D00
+
+ arm_func_start MOD13_02227DC4
+MOD13_02227DC4: ; 0x02227DC4
+ bx lr
+
+ arm_func_start MOD13_02227DC8
+MOD13_02227DC8: ; 0x02227DC8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02227CC0
+ bl MOD13_02227DC4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02227E0C ; =MOD13_02227DC8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227E0C: .word MOD13_02227DC8
+
+ arm_func_start MOD13_02227E10
+MOD13_02227E10: ; 0x02227E10
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _02227E48 ; =0x02227DE0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227E48: .word 0x02227DE0
+
+ arm_func_start MOD13_02227E4C
+MOD13_02227E4C: ; 0x02227E4C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02227EB8 ; =0x02240148
+ ldr r1, _02227EBC ; =0x020C908C
+ bl MOD13_0221F174
+ ldr ip, _02227EC0 ; =0x04001008
+ ldr r3, _02227EC4 ; =0x0400100A
+ ldrh r0, [ip]
+ ldr r2, _02227EC8 ; =0x0400000A
+ ldr r1, _02227ECC ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227EB8: .word 0x02240148
+_02227EBC: .word 0x020C908C
+_02227EC0: .word 0x04001008
+_02227EC4: .word 0x0400100A
+_02227EC8: .word 0x0400000A
+_02227ECC: .word 0x0400000C
+
+ arm_func_start MOD13_02227ED0
+MOD13_02227ED0: ; 0x02227ED0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02227F0C ; =0x022430C8
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_02227E4C
+ bl MOD13_0221F4AC
+ mov r0, #0x23
+ bl MOD13_0221F070
+ mov r0, #0x10
+ bl MOD13_0223424C
+ ldr r0, _02227F10 ; =MOD13_02227E10
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227F0C: .word 0x022430C8
+_02227F10: .word MOD13_02227E10
+
+ arm_func_start MOD13_02227F14
+MOD13_02227F14: ; 0x02227F14
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221EC9C
+ bl MOD13_02232F2C
+ ldr r0, _02227F44 ; =MOD13_02229150
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227F44: .word MOD13_02229150
+
+ arm_func_start MOD13_02227F48
+MOD13_02227F48: ; 0x02227F48
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_02235EB0
+ ldr r0, _02227F7C ; =MOD13_02227F14
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227F7C: .word MOD13_02227F14
+
+ arm_func_start MOD13_02227F80
+MOD13_02227F80: ; 0x02227F80
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _02227FB4 ; =0x0223F1BC
+ ldr r0, _02227FB8 ; =0x022430D4
+ ldrb r1, [r1]
+ ldr r0, [r0]
+ strb r1, [sp]
+ ldrb r1, [sp]
+ ldr r0, [r0, #8]
+ mov r2, r1
+ bl MOD13_022327DC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02227FB4: .word 0x0223F1BC
+_02227FB8: .word 0x022430D4
+
+ arm_func_start MOD13_02227FBC
+MOD13_02227FBC: ; 0x02227FBC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _0222804C ; =0x022430D4
+ ldr r0, _02228050 ; =0x022430D0
+ ldr r2, [r1]
+ ldrh r1, [r0]
+ ldrh r0, [r2, #0x40]
+ cmp r1, r0
+ beq _02227FEC
+ ldrb r0, [r2, #0x51]
+ cmp r0, #4
+ bhi _0222801C
+_02227FEC:
+ ldrb r0, [r2, #0x59]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _0222804C ; =0x022430D4
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x59]
+ ldmia sp!, {pc}
+_0222801C:
+ mov r0, #0x13
+ bl MOD13_0223424C
+ mov r0, #0
+ ldr r1, _02228054 ; =MOD13_02228314
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _0222804C ; =0x022430D4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222804C: .word 0x022430D4
+_02228050: .word 0x022430D0
+_02228054: .word MOD13_02228314
+
+ arm_func_start MOD13_02228058
+MOD13_02228058: ; 0x02228058
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022280D8 ; =0x022430D0
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _022280A8
+ ldr r0, _022280DC ; =0x022430D4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x59]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _022280DC ; =0x022430D4
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x59]
+ ldmia sp!, {pc}
+_022280A8:
+ mov r0, #0x13
+ bl MOD13_0223424C
+ mov r0, #0
+ ldr r1, _022280E0 ; =MOD13_022283B4
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _022280DC ; =0x022430D4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022280D8: .word 0x022430D0
+_022280DC: .word 0x022430D4
+_022280E0: .word MOD13_022283B4
+
+ arm_func_start MOD13_022280E4
+MOD13_022280E4: ; 0x022280E4
+ stmdb sp!, {r4, lr}
+ ldr r1, _02228238 ; =0x022430CC
+ mov r4, #1
+ ldrb r2, [r1]
+ cmp r2, #4
+ addls pc, pc, r2, lsl #2
+ b _022281F0
+_02228100: ; jump table
+ b _02228114 ; case 0
+ b _02228180 ; case 1
+ b _02228180 ; case 2
+ b _022281B0 ; case 3
+ b _022281C8 ; case 4
+_02228114:
+ cmp r0, #1
+ bne _02228160
+ ldr r0, _0222823C ; =0x022430D0
+ ldrh r0, [r0]
+ cmp r0, #0
+ moveq r0, #4
+ streqb r0, [r1]
+ beq _022281F0
+ mov r0, #0x13
+ bl MOD13_0223424C
+ mov r0, #0
+ ldr r1, _02228240 ; =MOD13_022283B4
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02228244 ; =0x022430D4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ ldmia sp!, {r4, pc}
+_02228160:
+ ldr r0, _02228244 ; =0x022430D4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x51]
+ cmp r0, #1
+ addhi r0, r2, #1
+ strhib r0, [r1]
+ movls r4, #0
+ b _022281F0
+_02228180:
+ cmp r0, #1
+ subeq r0, r2, #1
+ streqb r0, [r1]
+ beq _022281F0
+ ldr r0, _02228244 ; =0x022430D4
+ add r2, r2, #1
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x51]
+ cmp r0, r2
+ strgtb r2, [r1]
+ movle r4, #0
+ b _022281F0
+_022281B0:
+ cmp r0, #1
+ subeq r0, r2, #1
+ streqb r0, [r1]
+ beq _022281F0
+ bl MOD13_02227FBC
+ ldmia sp!, {r4, pc}
+_022281C8:
+ cmp r0, #1
+ moveq r4, #0
+ beq _022281F0
+ ldr r0, _0222823C ; =0x022430D0
+ mov r2, #0
+ strh r2, [r0]
+ strb r2, [r1]
+ bl MOD13_02228754
+ mov r0, #0
+ bl MOD13_02232F44
+_022281F0:
+ cmp r4, #0
+ bne _02228228
+ ldr r0, _02228244 ; =0x022430D4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x59]
+ cmp r0, #0
+ ldmneia sp!, {r4, pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _02228244 ; =0x022430D4
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x59]
+ ldmia sp!, {r4, pc}
+_02228228:
+ mov r0, #8
+ bl MOD13_0223424C
+ bl MOD13_02228248
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02228238: .word 0x022430CC
+_0222823C: .word 0x022430D0
+_02228240: .word MOD13_022283B4
+_02228244: .word 0x022430D4
+
+ arm_func_start MOD13_02228248
+MOD13_02228248: ; 0x02228248
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222828C ; =0x022430CC
+ ldr r1, _02228290 ; =0x0223F224
+ ldrb r2, [r0]
+ ldr r3, _02228294 ; =0x0223F226
+ mov ip, r2, lsl #3
+ cmp r2, #4
+ ldr r2, _02228298 ; =0x0223F228
+ movlo r0, #2
+ ldrh r1, [r1, ip]
+ ldrh r2, [r2, ip]
+ ldrh r3, [r3, ip]
+ movhs r0, #3
+ bl MOD13_0221F348
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222828C: .word 0x022430CC
+_02228290: .word 0x0223F224
+_02228294: .word 0x0223F226
+_02228298: .word 0x0223F228
+
+ arm_func_start MOD13_0222829C
+MOD13_0222829C: ; 0x0222829C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02228300 ; =0x022430D4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x56]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _02228304 ; =0x022430D0
+ mov r1, #0x1c
+ ldrh r0, [r0]
+ bl FX_ModS32
+ ldr r1, _02228308 ; =0x01FF0000
+ sub r2, r0, #0x32
+ ldr r0, _0222830C ; =0x04000010
+ and r2, r1, r2, lsl #16
+ ldr r1, _02228310 ; =0x04000018
+ str r2, [r0]
+ ldr r0, _02228300 ; =0x022430D4
+ str r2, [r1]
+ ldr r0, [r0]
+ mov r1, #0
+ strb r1, [r0, #0x56]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02228300: .word 0x022430D4
+_02228304: .word 0x022430D0
+_02228308: .word 0x01FF0000
+_0222830C: .word 0x04000010
+_02228310: .word 0x04000018
+
+ arm_func_start MOD13_02228314
+MOD13_02228314: ; 0x02228314
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD13_02232F14
+ bl MOD13_0221F21C
+ ldr r0, _022283AC ; =0x022430D0
+ mov r1, #0x1c
+ ldrh r2, [r0]
+ add r2, r2, #4
+ strh r2, [r0]
+ ldrh r0, [r0]
+ bl FX_ModS32
+ cmp r0, #4
+ blt _02228350
+ bl MOD13_02228490
+ ldmia sp!, {r4, pc}
+_02228350:
+ ldr r1, _022283AC ; =0x022430D0
+ ldrh r2, [r1]
+ sub r0, r2, r0
+ strh r0, [r1]
+ bl MOD13_02228754
+ ldr r1, _022283B0 ; =0x022430D4
+ ldr r0, _022283AC ; =0x022430D0
+ ldr r1, [r1]
+ ldrh r2, [r0]
+ ldrb r0, [r1, #0x53]
+ ldrh r1, [r1, #0x40]
+ mul r0, r2, r0
+ bl FX_DivS32
+ bl MOD13_02232F44
+ bl MOD13_02232F2C
+ bl MOD13_02228248
+ ldr r0, _022283B0 ; =0x022430D4
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0
+ str r0, [r2, #0x38]
+ bl MOD13_0223C110
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022283AC: .word 0x022430D0
+_022283B0: .word 0x022430D4
+
+ arm_func_start MOD13_022283B4
+MOD13_022283B4: ; 0x022283B4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ bl MOD13_02232F14
+ bl MOD13_0221F21C
+ ldr r0, _02228488 ; =0x022430D0
+ ldrh r1, [r0]
+ cmp r1, #4
+ subhi r1, r1, #4
+ strhih r1, [r0]
+ movls r1, #0
+ strlsh r1, [r0]
+ ldr r0, _02228488 ; =0x022430D0
+ mov r1, #0x1c
+ ldrh r0, [r0]
+ bl FX_ModS32
+ mov r5, r0
+ cmp r5, #0x18
+ bne _0222840C
+ bl MOD13_02228754
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0222840C:
+ cmp r5, #0x18
+ ble _0222842C
+ ldr r0, _02228488 ; =0x022430D0
+ rsb r1, r5, #0x1c
+ ldrh r2, [r0]
+ mov r5, #0
+ add r1, r2, r1
+ strh r1, [r0]
+_0222842C:
+ bl MOD13_02228490
+ cmp r5, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ ldr r1, _0222848C ; =0x022430D4
+ ldr r0, _02228488 ; =0x022430D0
+ ldr r1, [r1]
+ ldrh r2, [r0]
+ ldrb r0, [r1, #0x53]
+ ldrh r1, [r1, #0x40]
+ mul r0, r2, r0
+ bl FX_DivS32
+ bl MOD13_02232F44
+ bl MOD13_02232F2C
+ bl MOD13_02228248
+ ldr r0, _0222848C ; =0x022430D4
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0
+ str r0, [r2, #0x38]
+ bl MOD13_0223C110
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02228488: .word 0x022430D0
+_0222848C: .word 0x022430D4
+
+ arm_func_start MOD13_02228490
+MOD13_02228490: ; 0x02228490
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r0, _02228544 ; =0x022430D0
+ mov r1, #0x1c
+ ldrh r0, [r0]
+ bl FX_ModS32
+ ldr r1, _02228548 ; =0x022430D4
+ rsb r2, r0, #0x36
+ ldr r0, [r1]
+ ldrb r1, [r0, #0x51]
+ mov r0, #0
+ cmp r1, #5
+ movgt r1, #5
+ cmp r1, #0
+ ble _02228530
+ ldr ip, _02228548 ; =0x022430D4
+ ldr r3, _0222854C ; =0xFE00FF00
+_022284D0:
+ ldr r5, [ip]
+ sub r4, r2, #2
+ add r5, r5, r0, lsl #2
+ ldr r6, [r5, #0x10]
+ add lr, r2, #1
+ ldr r5, [r6]
+ and r4, r4, #0xff
+ and r5, r5, r3
+ orr r4, r5, r4
+ orr r4, r4, #0xb30000
+ str r4, [r6]
+ ldr r4, [ip]
+ and lr, lr, #0xff
+ add r4, r4, r0, lsl #2
+ ldr r5, [r4, #0x24]
+ add r0, r0, #1
+ ldr r4, [r5]
+ cmp r0, r1
+ and r4, r4, r3
+ orr r4, r4, lr
+ orr r4, r4, #0xd20000
+ str r4, [r5]
+ add r2, r2, #0x1c
+ blt _022284D0
+_02228530:
+ ldr r0, _02228548 ; =0x022430D4
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x56]
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_02228544: .word 0x022430D0
+_02228548: .word 0x022430D4
+_0222854C: .word 0xFE00FF00
+
+ arm_func_start MOD13_02228550
+MOD13_02228550: ; 0x02228550
+ stmdb sp!, {r4, lr}
+ ldr r3, _022285D8 ; =0x022430D4
+ ldr lr, [r3]
+ ldrb r2, [lr, #0x51]
+ cmp r0, r2
+ ldmgeia sp!, {r4, pc}
+ mov r2, #0x2a
+ mul r2, r0, r2
+ ldr r0, [lr]
+ add r4, lr, r1, lsl #2
+ add r0, r0, r2
+ ldrb ip, [r0, #0x28]
+ ldr r4, [r4, #0x10]
+ mov r0, #0x400
+ add ip, lr, ip, lsl #1
+ ldrh lr, [r4, #4]
+ rsb r0, r0, #0
+ ldrh ip, [ip, #0x42]
+ and lr, lr, r0
+ orr ip, lr, ip
+ strh ip, [r4, #4]
+ ldr lr, [r3]
+ ldr r3, [lr]
+ add ip, lr, r1, lsl #2
+ add r1, r3, r2
+ ldrh r1, [r1, #0x26]
+ ldr r3, [ip, #0x24]
+ add r1, lr, r1, lsl #1
+ ldrh r2, [r3, #4]
+ ldrh r1, [r1, #0x48]
+ and r0, r2, r0
+ orr r0, r0, r1
+ strh r0, [r3, #4]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022285D8: .word 0x022430D4
+
+ arm_func_start MOD13_022285DC
+MOD13_022285DC: ; 0x022285DC
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0x34
+ mov r7, r0
+ mov r0, #0x2a
+ ldr r2, _02228750 ; =0x022430D4
+ mul r4, r7, r0
+ ldr r0, [r2]
+ mov r6, r1
+ ldr r0, [r0]
+ mov r1, #0x20
+ add r0, r0, r4
+ bl MOD13_0223BDA4
+ ldr r2, _02228750 ; =0x022430D4
+ mov r1, #0x1c
+ mul r5, r6, r1
+ ldr r2, [r2]
+ mov r6, r0
+ ldrb r1, [r2, #0x51]
+ cmp r7, r1
+ addge sp, sp, #0x34
+ ldmgeia sp!, {r4, r5, r6, r7, pc}
+ add r0, sp, #0xc
+ cmp r6, #0x10
+ mov r1, #0
+ mov r2, #0x22
+ addle r5, r5, #6
+ bl MI_CpuFill8
+ cmp r6, #0x10
+ movle ip, r6
+ movgt ip, #0x10
+ cmp ip, #0
+ mov r7, #0
+ ble _0222868C
+ ldr r0, _02228750 ; =0x022430D4
+ ldr r3, [r0]
+ add r0, sp, #0xc
+_0222866C:
+ ldr r2, [r3]
+ mov r1, r7, lsl #1
+ add r2, r4, r2
+ ldrb r2, [r7, r2]
+ add r7, r7, #1
+ cmp r7, ip
+ strh r2, [r0, r1]
+ blt _0222866C
+_0222868C:
+ mov r1, #0xa
+ add r0, sp, #0xc
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r2, #1
+ str r2, [sp, #8]
+ ldr r0, _02228750 ; =0x022430D4
+ mov r2, r5
+ ldr r0, [r0]
+ mov r3, #2
+ ldr r0, [r0, #0xc]
+ bl MOD13_0223A528
+ cmp r6, #0x10
+ addle sp, sp, #0x34
+ ldmleia sp!, {r4, r5, r6, r7, pc}
+ add r0, sp, #0xc
+ mov r1, #0
+ mov r2, #0x22
+ bl MI_CpuFill8
+ sub r6, r6, #0x10
+ cmp r6, #0
+ mov r3, #0
+ ble _02228718
+ ldr r0, _02228750 ; =0x022430D4
+ ldr r7, [r0]
+ add r0, sp, #0xc
+_022286F4:
+ ldr r1, [r7]
+ add r2, r3, #0x10
+ add r1, r4, r1
+ ldrb r2, [r2, r1]
+ mov r1, r3, lsl #1
+ add r3, r3, #1
+ strh r2, [r0, r1]
+ cmp r3, r6
+ blt _022286F4
+_02228718:
+ mov r1, #0xa
+ add r0, sp, #0xc
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r2, #1
+ str r2, [sp, #8]
+ ldr r0, _02228750 ; =0x022430D4
+ add r2, r5, #0xc
+ ldr r0, [r0]
+ mov r3, #2
+ ldr r0, [r0, #0xc]
+ bl MOD13_0223A528
+ add sp, sp, #0x34
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02228750: .word 0x022430D4
+
+ arm_func_start MOD13_02228754
+MOD13_02228754: ; 0x02228754
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r0, _02228800 ; =0x022430D0
+ mov r1, #0x1c
+ ldrh r0, [r0]
+ bl FX_DivS32
+ ldr r1, _02228804 ; =0x022430D4
+ mov r7, r0
+ ldr r0, [r1]
+ mov r1, #0
+ ldrb r6, [r0, #0x51]
+ ldr r0, [r0, #0xc]
+ bl MOD13_0223A4D8
+ cmp r6, #5
+ movgt r6, #5
+ mov r5, r7
+ cmp r6, #0
+ mov r4, #0
+ ble _022287BC
+_022287A0:
+ mov r0, r5
+ mov r1, r4
+ bl MOD13_022285DC
+ add r4, r4, #1
+ cmp r4, r6
+ add r5, r5, #1
+ blt _022287A0
+_022287BC:
+ cmp r6, #0
+ mov r4, #0
+ ble _022287E4
+_022287C8:
+ mov r0, r7
+ mov r1, r4
+ bl MOD13_02228550
+ add r4, r4, #1
+ cmp r4, r6
+ add r7, r7, #1
+ blt _022287C8
+_022287E4:
+ ldr r0, _02228804 ; =0x022430D4
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl MOD13_0223A410
+ bl MOD13_02228490
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02228800: .word 0x022430D0
+_02228804: .word 0x022430D4
+
+ arm_func_start MOD13_02228808
+MOD13_02228808: ; 0x02228808
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r1, _02228A0C ; =0x022430D4
+ mov r0, #1
+ ldr r1, [r1]
+ ldr r1, [r1, #0x3c]
+ bl MOD13_0223C104
+ mov r5, #0
+ ldr r4, _02228A0C ; =0x022430D4
+_02228864:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0x10]
+ cmp r0, #0
+ beq _0222887C
+ bl MOD13_0223B974
+_0222887C:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0x24]
+ cmp r0, #0
+ beq _02228894
+ bl MOD13_0223B974
+_02228894:
+ add r5, r5, #1
+ cmp r5, #5
+ blt _02228864
+ ldr r0, _02228A0C ; =0x022430D4
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl MOD13_0223A688
+ bl MOD13_02232F78
+ bl MOD13_0221F21C
+ bl MOD13_0221EE54
+ bl MOD13_022328E8
+ ldr r0, _02228A0C ; =0x022430D4
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD13_0223939C
+ ldr r0, _02228A0C ; =0x022430D4
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ bl MOD13_0223939C
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x1d
+ bl MOD13_0223AE98
+ mov r2, #0
+ ldr r1, _02228A10 ; =0x04000010
+ ldr r0, _02228A14 ; =0x04000018
+ str r2, [r1]
+ str r2, [r0]
+ ldr r0, _02228A0C ; =0x022430D4
+ ldr r2, [r0]
+ ldrb r0, [r2, #0x54]
+ cmp r0, #0
+ bne _02228948
+ bl MOD13_02233570
+ bl MOD13_02234164
+ ldrb r0, [r0, #0xf4]
+ bl MOD13_02233C24
+ mov r0, #2
+ mov r1, #0
+ bl MOD13_02222FA8
+ ldr r0, _02228A18 ; =MOD13_02230EC4
+ bl MOD13_02222FBC
+ b _022289FC
+_02228948:
+ ldr r0, _02228A1C ; =0x022430CC
+ ldrb r0, [r0]
+ cmp r0, #4
+ bne _02228974
+ bl MOD13_02233570
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02228A20 ; =MOD13_0222F8A0
+ bl MOD13_02222FBC
+ b _022289FC
+_02228974:
+ ldrb r1, [r2, #0x52]
+ ldr r2, [r2]
+ mov r0, #0x2a
+ mla r0, r1, r0, r2
+ bl MOD13_02234104
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222FA8
+ ldr r1, _02228A0C ; =0x022430D4
+ mov r0, #0x2a
+ ldr r2, [r1]
+ ldrb r1, [r2, #0x52]
+ ldr r2, [r2]
+ mla r0, r1, r0, r2
+ ldrb r0, [r0, #0x28]
+ cmp r0, #0
+ beq _022289DC
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_02222F6C
+ ldr r0, _02228A24 ; =MOD13_0222A190
+ bl MOD13_02222FBC
+ b _022289FC
+_022289DC:
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222F6C
+ ldr r0, _02228A28 ; =MOD13_0223197C
+ bl MOD13_02222FBC
+_022289FC:
+ ldr r0, _02228A0C ; =0x022430D4
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02228A0C: .word 0x022430D4
+_02228A10: .word 0x04000010
+_02228A14: .word 0x04000018
+_02228A18: .word MOD13_02230EC4
+_02228A1C: .word 0x022430CC
+_02228A20: .word MOD13_0222F8A0
+_02228A24: .word MOD13_0222A190
+_02228A28: .word MOD13_0223197C
+
+ arm_func_start MOD13_02228A2C
+MOD13_02228A2C: ; 0x02228A2C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02228AA0 ; =0x022430D4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x54]
+ cmp r0, #0
+ beq _02228A64
+ bl MOD13_0221ED28
+ b _02228A68
+_02228A64:
+ bl MOD13_0221EC84
+_02228A68:
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x1d
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02228AA4 ; =MOD13_02228808
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02228AA0: .word 0x022430D4
+_02228AA4: .word MOD13_02228808
+
+ arm_func_start MOD13_02228AA8
+MOD13_02228AA8: ; 0x02228AA8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _02228ACC ; =MOD13_02228A2C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02228ACC: .word MOD13_02228A2C
+
+ arm_func_start MOD13_02228AD0
+MOD13_02228AD0: ; 0x02228AD0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02228BF8 ; =0x022430D4
+ ldr r1, [r0]
+ ldr r0, [r1, #0x38]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldrb r0, [r1, #0x57]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ED14
+ cmp r0, #0
+ beq _02228B1C
+ cmp r0, #1
+ beq _02228B28
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02228B1C:
+ mov r0, #7
+ bl MOD13_0223424C
+ b _02228BE8
+_02228B28:
+ ldr r0, _02228BFC ; =0x022430CC
+ ldrb r0, [r0]
+ cmp r0, #4
+ bne _02228B58
+ ldr r0, _02228BF8 ; =0x022430D4
+ mov r2, #1
+ ldr r1, [r0]
+ mov r0, #6
+ strb r2, [r1, #0x54]
+ bl MOD13_0223424C
+ bl MOD13_02227F80
+ b _02228BE8
+_02228B58:
+ ldr r0, _02228C00 ; =0x022430D0
+ mov r1, #0x1c
+ ldrh r0, [r0]
+ bl FX_DivS32
+ ldr r1, _02228BFC ; =0x022430CC
+ ldr r2, _02228BF8 ; =0x022430D4
+ ldrb lr, [r1]
+ ldr ip, [r2]
+ mov r1, #0x2a
+ ldr r3, [ip]
+ add lr, lr, r0
+ mla r0, lr, r1, r3
+ ldrb r0, [r0, #0x28]
+ cmp r0, #2
+ bne _02228BD0
+ mov r0, #9
+ bl MOD13_0223424C
+ bl MOD13_02232F14
+ bl MOD13_0221EC84
+ mov r1, #1
+ mov r0, #0
+ str r0, [sp]
+ mov r2, r1
+ mov r0, #0xe
+ mvn r3, #0
+ bl MOD13_02235EFC
+ ldr r0, _02228C04 ; =MOD13_02227F48
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02228BD0:
+ mov r0, #1
+ strb r0, [ip, #0x54]
+ ldr r1, [r2]
+ mov r0, #6
+ strb lr, [r1, #0x52]
+ bl MOD13_0223424C
+_02228BE8:
+ ldr r0, _02228C08 ; =MOD13_02228AA8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02228BF8: .word 0x022430D4
+_02228BFC: .word 0x022430CC
+_02228C00: .word 0x022430D0
+_02228C04: .word MOD13_02227F48
+_02228C08: .word MOD13_02228AA8
+
+ arm_func_start MOD13_02228C0C
+MOD13_02228C0C: ; 0x02228C0C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02228EBC ; =0x022430D4
+ ldr r1, [r0]
+ ldr r0, [r1, #0x38]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldrb r0, [r1, #0x55]
+ cmp r0, #0
+ subne r0, r0, #1
+ strneb r0, [r1, #0x55]
+ bl MOD13_02232F50
+ cmp r0, #7
+ addls pc, pc, r0, lsl #2
+ b _02228EB4
+_02228C4C: ; jump table
+ b _02228EB4 ; case 0
+ b _02228C6C ; case 1
+ b _02228C88 ; case 2
+ b _02228CE4 ; case 3
+ b _02228DA4 ; case 4
+ b _02228EA4 ; case 5
+ b _02228E1C ; case 6
+ b _02228EA4 ; case 7
+_02228C6C:
+ ldr r0, _02228EBC ; =0x022430D4
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x57]
+ bl MOD13_0221EC84
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02228C88:
+ ldr r0, _02228EBC ; =0x022430D4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x55]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221F21C
+ bl MOD13_02232F64
+ ldr r1, _02228EBC ; =0x022430D4
+ ldr r1, [r1]
+ ldrh r2, [r1, #0x40]
+ ldrb r1, [r1, #0x53]
+ mul r0, r2, r0
+ bl FX_DivS32
+ ldr r1, _02228EC0 ; =0x022430D0
+ strh r0, [r1]
+ bl MOD13_02228754
+ ldr r0, _02228EBC ; =0x022430D4
+ mov r1, #4
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x55]
+ ldmia sp!, {pc}
+_02228CE4:
+ ldr r0, _02228EBC ; =0x022430D4
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x57]
+ bl MOD13_0221EC9C
+ bl MOD13_02232F64
+ ldr r1, _02228EBC ; =0x022430D4
+ ldr r1, [r1]
+ ldrh r2, [r1, #0x40]
+ ldrb r1, [r1, #0x53]
+ mul r0, r2, r0
+ bl FX_DivS32
+ ldr r1, _02228EC0 ; =0x022430D0
+ strh r0, [r1]
+ mov r0, #0x13
+ bl MOD13_0223424C
+ bl MOD13_02228754
+ ldr r0, _02228EC0 ; =0x022430D0
+ mov r1, #0x1c
+ ldrh r0, [r0]
+ bl FX_ModS32
+ cmp r0, #0
+ bne _02228D4C
+ bl MOD13_02228248
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02228D4C:
+ cmp r0, #0xe
+ bge _02228D7C
+ mov r0, #0
+ ldr r1, _02228EC4 ; =MOD13_022283B4
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02228EBC ; =0x022430D4
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ ldmia sp!, {pc}
+_02228D7C:
+ mov r0, #0
+ ldr r1, _02228EC8 ; =MOD13_02228314
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02228EBC ; =0x022430D4
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ ldmia sp!, {pc}
+_02228DA4:
+ ldr r0, _02228EC0 ; =0x022430D0
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _02228DEC
+ ldr r0, _02228EBC ; =0x022430D4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x58]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _02228EBC ; =0x022430D4
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x58]
+ ldmia sp!, {pc}
+_02228DEC:
+ mov r0, #0x13
+ bl MOD13_0223424C
+ mov r0, #0
+ ldr r1, _02228EC4 ; =MOD13_022283B4
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02228EBC ; =0x022430D4
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ ldmia sp!, {pc}
+_02228E1C:
+ ldr r0, _02228EBC ; =0x022430D4
+ ldr r2, [r0]
+ ldrb r0, [r2, #0x51]
+ cmp r0, #4
+ bls _02228E44
+ ldr r0, _02228EC0 ; =0x022430D0
+ ldrh r1, [r2, #0x40]
+ ldrh r0, [r0]
+ cmp r0, r1
+ bne _02228E74
+_02228E44:
+ ldrb r0, [r2, #0x58]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _02228EBC ; =0x022430D4
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x58]
+ ldmia sp!, {pc}
+_02228E74:
+ mov r0, #0x13
+ bl MOD13_0223424C
+ mov r0, #0
+ ldr r1, _02228EC8 ; =MOD13_02228314
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02228EBC ; =0x022430D4
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ ldmia sp!, {pc}
+_02228EA4:
+ ldr r0, _02228EBC ; =0x022430D4
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x58]
+_02228EB4:
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02228EBC: .word 0x022430D4
+_02228EC0: .word 0x022430D0
+_02228EC4: .word MOD13_022283B4
+_02228EC8: .word MOD13_02228314
+
+ arm_func_start MOD13_02228ECC
+MOD13_02228ECC: ; 0x02228ECC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _02229140 ; =0x022430D4
+ ldr r1, [r0]
+ ldr r0, [r1, #0x38]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ ldrb r0, [r1, #0x57]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ ldr r0, _02229144 ; =0x0223F75C
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ beq _02228F74
+ ldr r0, _02229140 ; =0x022430D4
+ mvn r1, #0
+ ldr r0, [r0]
+ ldr r4, _02229148 ; =0x0223F1FC
+ strb r1, [r0, #0x50]
+ mov r5, #0
+_02228F24:
+ mov r0, r4
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ beq _02228F64
+ cmp r5, #4
+ ldrlt r0, _02229140 ; =0x022430D4
+ ldrlt r0, [r0]
+ strltb r5, [r0, #0x50]
+ blt _02228F74
+ mov r0, #1
+ bl MOD13_0221ECF4
+ ldr r0, _0222914C ; =0x022430CC
+ strb r5, [r0]
+ bl MOD13_02228248
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02228F64:
+ add r5, r5, #1
+ cmp r5, #5
+ add r4, r4, #8
+ blo _02228F24
+_02228F74:
+ ldr r0, _02229144 ; =0x0223F75C
+ bl MOD13_0223B1DC
+ cmp r0, #0
+ beq _02228FF4
+ ldr r5, _02229148 ; =0x0223F1FC
+ mov r4, #0
+_02228F8C:
+ mov r0, r5
+ bl MOD13_0223B1DC
+ cmp r0, #0
+ beq _02228FE4
+ ldr r0, _02229140 ; =0x022430D4
+ ldr r1, [r0]
+ ldrsb r0, [r1, #0x50]
+ cmp r0, r4
+ bne _02228FF4
+ ldrb r0, [r1, #0x51]
+ cmp r4, r0
+ blt _02228FC8
+ mov r0, #9
+ bl MOD13_0223424C
+ b _02228FF4
+_02228FC8:
+ mov r0, #1
+ bl MOD13_0221ECF4
+ ldr r0, _0222914C ; =0x022430CC
+ strb r4, [r0]
+ bl MOD13_02228248
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02228FE4:
+ add r4, r4, #1
+ cmp r4, #4
+ add r5, r5, #8
+ blt _02228F8C
+_02228FF4:
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _02229018
+ mov r0, #1
+ bl MOD13_0221ECF4
+ bl MOD13_02232F14
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02229018:
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _02229038
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02229038:
+ mov r0, #0x200
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _02229054
+ bl MOD13_02227FBC
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02229054:
+ mov r0, #0x200
+ bl MOD13_0223B38C
+ cmp r0, #0
+ ldrne r0, _02229140 ; =0x022430D4
+ movne r1, #0
+ ldrne r0, [r0]
+ addne sp, sp, #4
+ strneb r1, [r0, #0x59]
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #0x100
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _02229094
+ bl MOD13_02228058
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02229094:
+ mov r0, #0x100
+ bl MOD13_0223B38C
+ cmp r0, #0
+ ldrne r0, _02229140 ; =0x022430D4
+ movne r1, #0
+ ldrne r0, [r0]
+ addne sp, sp, #4
+ strneb r1, [r0, #0x59]
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #0x40
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _022290D8
+ mov r0, #1
+ bl MOD13_022280E4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_022290D8:
+ mov r0, #0x40
+ bl MOD13_0223B38C
+ cmp r0, #0
+ ldrne r0, _02229140 ; =0x022430D4
+ movne r1, #0
+ ldrne r0, [r0]
+ addne sp, sp, #4
+ strneb r1, [r0, #0x59]
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #0x80
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _0222911C
+ mov r0, #3
+ bl MOD13_022280E4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0222911C:
+ mov r0, #0x80
+ bl MOD13_0223B38C
+ cmp r0, #0
+ ldrne r0, _02229140 ; =0x022430D4
+ movne r1, #0
+ ldrne r0, [r0]
+ strneb r1, [r0, #0x59]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02229140: .word 0x022430D4
+_02229144: .word 0x0223F75C
+_02229148: .word 0x0223F1FC
+_0222914C: .word 0x022430CC
+
+ arm_func_start MOD13_02229150
+MOD13_02229150: ; 0x02229150
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02228ECC
+ bl MOD13_02228C0C
+ bl MOD13_02228AD0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _0222919C ; =MOD13_02229150
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222919C: .word MOD13_02229150
+
+ arm_func_start MOD13_022291A0
+MOD13_022291A0: ; 0x022291A0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221F0EC
+ ldr r0, _022291E8 ; =0x0222916C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022291E8: .word 0x0222916C
+
+ arm_func_start MOD13_022291EC
+MOD13_022291EC: ; 0x022291EC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x1d
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x1d
+ bl MOD13_0223AEF4
+ ldr r0, _02229244 ; =MOD13_022291A0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02229244: .word MOD13_022291A0
+
+ arm_func_start MOD13_02229248
+MOD13_02229248: ; 0x02229248
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ ldr r0, _022293BC ; =0x022430D4
+ mov sb, #0
+ ldr r0, [r0]
+ ldrb r4, [r0, #0x51]
+ cmp r4, #5
+ movgt r4, #5
+ cmp r4, #0
+ ble _022292C4
+ ldr r1, _022293C0 ; =0x0223F1C0
+ ldr r0, _022293C4 ; =0x0223F1C4
+ ldrb r8, [r1]
+ ldrb r7, [r0]
+ ldr sl, _022293BC ; =0x022430D4
+ mov r6, sb
+ mov r5, sb
+_02229288:
+ mov r0, r6
+ mov r1, r8
+ bl MOD13_02239E54
+ ldr r2, [sl]
+ mov r1, r7
+ add r2, r2, sb, lsl #2
+ str r0, [r2, #0x10]
+ mov r0, r5
+ bl MOD13_02239E54
+ ldr r1, [sl]
+ add r1, r1, sb, lsl #2
+ add sb, sb, #1
+ str r0, [r1, #0x24]
+ cmp sb, r4
+ blt _02229288
+_022292C4:
+ ldr r7, _022293C0 ; =0x0223F1C0
+ mov r6, #0
+ ldr sb, _022293BC ; =0x022430D4
+ mov r5, r6
+ ldr r8, _022293C8 ; =0x000003FF
+_022292D8:
+ ldr r0, [sb]
+ ldrb r1, [r7]
+ ldr r2, [r0, #0x10]
+ mov r0, r5
+ bl MOD13_02239E8C
+ ldr r0, [sb]
+ add r7, r7, #1
+ ldr r1, [r0, #0x10]
+ add r0, r0, r6, lsl #1
+ ldrh r1, [r1, #4]
+ add r6, r6, #1
+ cmp r6, #3
+ and r1, r1, r8
+ strh r1, [r0, #0x42]
+ blo _022292D8
+ ldr r7, _022293C4 ; =0x0223F1C4
+ mov r6, #0
+ ldr sb, _022293BC ; =0x022430D4
+ mov r5, r6
+ ldr r8, _022293C8 ; =0x000003FF
+_02229328:
+ ldr r0, [sb]
+ ldrb r1, [r7]
+ ldr r2, [r0, #0x24]
+ mov r0, r5
+ bl MOD13_02239E8C
+ ldr r0, [sb]
+ add r7, r7, #1
+ ldr r1, [r0, #0x24]
+ add r0, r0, r6, lsl #1
+ ldrh r1, [r1, #4]
+ add r6, r6, #1
+ cmp r6, #4
+ and r1, r1, r8
+ strh r1, [r0, #0x48]
+ blo _02229328
+ cmp r4, #0
+ mov r0, #0
+ ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ ldr r1, _022293BC ; =0x022430D4
+_02229374:
+ ldr r2, [r1]
+ add r2, r2, r0, lsl #2
+ ldr r3, [r2, #0x10]
+ ldrh r2, [r3, #4]
+ bic r2, r2, #0xc00
+ orr r2, r2, #0xc00
+ strh r2, [r3, #4]
+ ldr r2, [r1]
+ add r2, r2, r0, lsl #2
+ ldr r3, [r2, #0x24]
+ add r0, r0, #1
+ ldrh r2, [r3, #4]
+ cmp r0, r4
+ bic r2, r2, #0xc00
+ orr r2, r2, #0xc00
+ strh r2, [r3, #4]
+ blt _02229374
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_022293BC: .word 0x022430D4
+_022293C0: .word 0x0223F1C0
+_022293C4: .word 0x0223F1C4
+_022293C8: .word 0x000003FF
+
+ arm_func_start MOD13_022293CC
+MOD13_022293CC: ; 0x022293CC
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r2, _02229470 ; =0x022430D4
+ mov r1, #0x1c
+ ldr ip, [r2]
+ mov r0, #0
+ ldrb r3, [ip, #0x51]
+ sub r3, r3, #4
+ mul r1, r3, r1
+ strh r1, [ip, #0x40]
+ ldr r2, [r2]
+ ldrb r1, [r2, #0x51]
+ cmp r1, #4
+ movls r4, r0
+ strlsb r0, [r2, #0x53]
+ bls _02229428
+ cmp r1, #8
+ movls r1, #0x1f
+ strlsb r1, [r2, #0x53]
+ movls r4, #1
+ movhi r1, #0x37
+ strhib r1, [r2, #0x53]
+ movhi r4, #2
+_02229428:
+ cmp r4, #0
+ beq _02229450
+ ldr r1, _02229470 ; =0x022430D4
+ ldr r0, _02229474 ; =0x022430D0
+ ldr r1, [r1]
+ ldrh r2, [r0]
+ ldrb r0, [r1, #0x53]
+ ldrh r1, [r1, #0x40]
+ mul r0, r2, r0
+ bl FX_DivS32
+_02229450:
+ str r0, [sp]
+ mov r0, r4
+ mov r1, #0x55
+ mov r2, #0xec
+ mov r3, #0x3f
+ bl MOD13_02232FB8
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02229470: .word 0x022430D4
+_02229474: .word 0x022430D0
+
+ arm_func_start MOD13_02229478
+MOD13_02229478: ; 0x02229478
+ stmdb sp!, {lr}
+ sub sp, sp, #0x34
+ ldr r3, _022295AC ; =0x0223F1E0
+ add lr, sp, #0
+ mov r2, #0xc
+_0222948C:
+ ldrb r1, [r3], #1
+ ldrb r0, [r3], #1
+ subs r2, r2, #1
+ strb r1, [lr], #1
+ strb r0, [lr], #1
+ bne _0222948C
+ ldrb r0, [r3]
+ ldr ip, _022295B0 ; =0x0223F1C8
+ add r3, sp, #0x19
+ strb r0, [lr]
+ mov r2, #0xb
+_022294B8:
+ ldrb r1, [ip], #1
+ ldrb r0, [ip], #1
+ subs r2, r2, #1
+ strb r1, [r3], #1
+ strb r0, [r3], #1
+ bne _022294B8
+ ldr r0, _022295B4 ; =0x0224015C
+ ldr r1, _022295B8 ; =0x020C8FBC
+ bl MOD13_0221F174
+ add r0, sp, #0
+ bl MOD13_0221F1BC
+ mov r1, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ ldr r1, _022295BC ; =0x022430D4
+ ldr r2, [r1]
+ str r0, [r2, #4]
+ ldr r0, [r1]
+ ldr r0, [r0, #4]
+ bl MOD13_02232918
+ bl MOD13_022328D0
+ add r0, sp, #0x19
+ bl MOD13_0221F1BC
+ mov r1, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ ldr r1, _022295BC ; =0x022430D4
+ ldr r2, _022295C0 ; =0x04001008
+ ldr r1, [r1]
+ ldr lr, _022295C4 ; =0x0400100A
+ str r0, [r1, #8]
+ ldrh r0, [r2]
+ ldr ip, _022295C8 ; =0x04000008
+ ldr r3, _022295CC ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [lr]
+ ldr r2, _022295D0 ; =0x0400000C
+ ldr r1, _022295D4 ; =0x0400000E
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [lr]
+ ldrh r0, [ip]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #2
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #2
+ strh r0, [r1]
+ add sp, sp, #0x34
+ ldmia sp!, {pc}
+ .align 2, 0
+_022295AC: .word 0x0223F1E0
+_022295B0: .word 0x0223F1C8
+_022295B4: .word 0x0224015C
+_022295B8: .word 0x020C8FBC
+_022295BC: .word 0x022430D4
+_022295C0: .word 0x04001008
+_022295C4: .word 0x0400100A
+_022295C8: .word 0x04000008
+_022295CC: .word 0x0400000A
+_022295D0: .word 0x0400000C
+_022295D4: .word 0x0400000E
+
+ arm_func_start MOD13_022295D8
+MOD13_022295D8: ; 0x022295D8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0x5c
+ mov r1, #4
+ bl MOD13_0223AFE0
+ ldr r2, _022296AC ; =0x022430D4
+ mov r1, #0
+ str r0, [r2]
+ add r0, sp, #0
+ bl MOD13_02222F44
+ ldr r0, [sp]
+ cmp r0, #0
+ ldreq r0, _022296B0 ; =0x022430D0
+ moveq r2, #0
+ streqh r2, [r0]
+ ldr r0, _022296AC ; =0x022430D4
+ ldreq r1, _022296B4 ; =0x022430CC
+ ldr r0, [r0]
+ streqb r2, [r1]
+ bl MOD13_0223333C
+ ldr r1, _022296AC ; =0x022430D4
+ ldr r1, [r1]
+ strb r0, [r1, #0x51]
+ bl MOD13_02229478
+ bl MOD13_0221F4AC
+ mov r0, #0x34
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ mov r0, #2
+ bl MOD13_0221F124
+ bl MOD13_022293CC
+ bl MOD13_02229248
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_0223A7F0
+ ldr r2, _022296AC ; =0x022430D4
+ ldr r1, _022296B8 ; =MOD13_0222829C
+ ldr r3, [r2]
+ mov r2, #0
+ str r0, [r3, #0xc]
+ mov r0, #1
+ mov r3, #0x6e
+ bl MOD13_0223C1C4
+ ldr r1, _022296AC ; =0x022430D4
+ ldr r1, [r1]
+ str r0, [r1, #0x3c]
+ bl MOD13_02228754
+ bl MOD13_02228248
+ ldr r0, _022296BC ; =MOD13_022291EC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022296AC: .word 0x022430D4
+_022296B0: .word 0x022430D0
+_022296B4: .word 0x022430CC
+_022296B8: .word MOD13_0222829C
+_022296BC: .word MOD13_022291EC
+
+ arm_func_start MOD13_022296C0
+MOD13_022296C0: ; 0x022296C0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02229704 ; =0x022430D8
+ ldr r1, _02229708 ; =0xC1FFFCFF
+ ldr r2, [r0]
+ ldr r0, _0222970C ; =MOD13_02229FD0
+ ldr r3, [r2, #4]
+ ldr r2, [r3]
+ and r1, r2, r1
+ str r1, [r3]
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02229704: .word 0x022430D8
+_02229708: .word 0xC1FFFCFF
+_0222970C: .word MOD13_02229FD0
+
+ arm_func_start MOD13_02229710
+MOD13_02229710: ; 0x02229710
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_02235EB0
+ ldr r0, _02229744 ; =MOD13_022296C0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02229744: .word MOD13_022296C0
+
+ arm_func_start MOD13_02229748
+MOD13_02229748: ; 0x02229748
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ add r0, sp, #0
+ add r1, sp, #4
+ bl MOD13_02222F44
+ ldr r0, [sp, #4]
+ cmp r0, #1
+ bne _02229778
+ mov r0, #0x35
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+_02229778:
+ add r0, sp, #0
+ add r1, sp, #4
+ bl MOD13_02222F44
+ ldr r0, [sp]
+ cmp r0, #0
+ bne _022297B0
+ ldr r0, _022298E0 ; =0x022430D8
+ add sp, sp, #0xc
+ ldr r0, [r0]
+ ldrb r0, [r0, #8]
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ ldmia sp!, {pc}
+_022297B0:
+ ldr r0, [sp, #4]
+ cmp r0, #1
+ bne _022297D8
+ ldr r0, _022298E0 ; =0x022430D8
+ ldr r0, [r0]
+ ldrb r0, [r0, #8]
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+_022297D8:
+ ldr r0, _022298E0 ; =0x022430D8
+ mov r1, #0x20
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD13_0223BDA4
+ cmp r0, #0x10
+ bgt _02229838
+ cmp r0, #0xa
+ blt _02229818
+ cmp r0, #0xa
+ beq _02229864
+ cmp r0, #0xd
+ beq _02229858
+ cmp r0, #0x10
+ beq _02229858
+ b _022298D4
+_02229818:
+ cmp r0, #0
+ bgt _0222982C
+ cmp r0, #0
+ beq _02229858
+ b _022298D4
+_0222982C:
+ cmp r0, #5
+ beq _02229858
+ b _022298D4
+_02229838:
+ cmp r0, #0x1a
+ bgt _0222984C
+ cmp r0, #0x1a
+ beq _02229864
+ b _022298D4
+_0222984C:
+ cmp r0, #0x20
+ beq _02229864
+ b _022298D4
+_02229858:
+ add sp, sp, #0xc
+ mov r0, #1
+ ldmia sp!, {pc}
+_02229864:
+ cmp r0, #0
+ mov r3, #0
+ ble _022298C8
+ ldr r1, _022298E0 ; =0x022430D8
+ ldr r1, [r1]
+_02229878:
+ ldrb r2, [r1, #8]
+ cmp r2, #0x30
+ blo _0222988C
+ cmp r2, #0x39
+ bls _022298B8
+_0222988C:
+ cmp r2, #0x41
+ blo _0222989C
+ cmp r2, #0x46
+ bls _022298B8
+_0222989C:
+ cmp r2, #0x61
+ blo _022298AC
+ cmp r2, #0x66
+ bls _022298B8
+_022298AC:
+ add sp, sp, #0xc
+ mov r0, #0
+ ldmia sp!, {pc}
+_022298B8:
+ add r3, r3, #1
+ cmp r3, r0
+ add r1, r1, #1
+ blt _02229878
+_022298C8:
+ add sp, sp, #0xc
+ mov r0, #1
+ ldmia sp!, {pc}
+_022298D4:
+ mov r0, #0
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_022298E0: .word 0x022430D8
+
+ arm_func_start MOD13_022298E4
+MOD13_022298E4: ; 0x022298E4
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r0, _02229980 ; =0x0223F260
+ ldr r1, [r0]
+ ldr r0, [r0, #4]
+ str r1, [sp]
+ str r0, [sp, #4]
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {pc}
+ ldr r0, _02229984 ; =0x022430D8
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x2a]
+ cmp r0, #0
+ bne _02229948
+ ldr r3, [r1, #4]
+ ldr r1, _02229988 ; =0xC1FFFCFF
+ ldr r2, [r3]
+ ldr r0, _0222998C ; =MOD13_02229FD0
+ and r1, r2, r1
+ str r1, [r3]
+ bl MOD13_02222FBC
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+_02229948:
+ add r0, sp, #8
+ mov r1, #0
+ bl MOD13_02222F44
+ ldr r0, _02229984 ; =0x022430D8
+ ldr r2, [sp, #8]
+ add r1, sp, #0
+ ldr r0, [r0]
+ ldr r1, [r1, r2, lsl #2]
+ add r0, r0, #8
+ blx r1
+ ldr r0, _02229990 ; =MOD13_02229B88
+ bl MOD13_02222FBC
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_02229980: .word 0x0223F260
+_02229984: .word 0x022430D8
+_02229988: .word 0xC1FFFCFF
+_0222998C: .word MOD13_02229FD0
+_02229990: .word MOD13_02229B88
+
+ arm_func_start MOD13_02229994
+MOD13_02229994: ; 0x02229994
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ ldr r1, _022299F4 ; =0x022430D8
+ ldr r2, [r1]
+ strb r0, [r2, #0x2a]
+ ldr r0, [r1]
+ ldrb r0, [r0, #0x2a]
+ cmp r0, #0
+ beq _022299CC
+ cmp r0, #1
+ beq _022299D8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022299CC:
+ mov r0, #7
+ bl MOD13_0223424C
+ b _022299E0
+_022299D8:
+ mov r0, #0xe
+ bl MOD13_0223424C
+_022299E0:
+ bl MOD13_02235EB0
+ ldr r0, _022299F8 ; =MOD13_022298E4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022299F4: .word 0x022430D8
+_022299F8: .word MOD13_022298E4
+
+ arm_func_start MOD13_022299FC
+MOD13_022299FC: ; 0x022299FC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02229A64 ; =0x022430D8
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x29]
+ ldr lr, [r1, #4]
+ ldr r1, _02229A68 ; =0x0223F268
+ cmp r0, #0x20
+ and r3, r0, #0xf
+ mov r2, r0, asr #4
+ movhs r3, #0xf
+ ldrb ip, [r1, r3]
+ ldr r0, _02229A6C ; =0x0223F250
+ movhs r2, #1
+ ldrb r2, [r0, r2]
+ ldr r3, [lr]
+ ldr r1, _02229A70 ; =0xFE00FF00
+ ldr r0, _02229A74 ; =0x000001FF
+ and r1, r3, r1
+ and r2, r2, #0xff
+ and r3, ip, r0
+ orr r0, r1, r2
+ orr r0, r0, r3, lsl #16
+ str r0, [lr]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02229A64: .word 0x022430D8
+_02229A68: .word 0x0223F268
+_02229A6C: .word 0x0223F250
+_02229A70: .word 0xFE00FF00
+_02229A74: .word 0x000001FF
+
+ arm_func_start MOD13_02229A78
+MOD13_02229A78: ; 0x02229A78
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x1c
+ add r0, sp, #0x10
+ mov r1, #0
+ strh r1, [r0]
+ strh r1, [r0, #2]
+ strh r1, [r0, #4]
+ strh r1, [r0, #6]
+ ldr r2, _02229B74 ; =0x0223F250
+ ldr r0, _02229B78 ; =0x0223F254
+ ldrb r4, [r2]
+ ldrh r3, [r0]
+ ldrh r2, [r0, #2]
+ ldr r0, _02229B7C ; =0x022430D8
+ strh r4, [sp, #0x12]
+ ldr r0, [r0]
+ strh r3, [sp, #0x14]
+ strh r2, [sp, #0x16]
+ ldr r0, [r0]
+ bl MOD13_0223A4D8
+ mov sb, #0
+ ldr r0, _02229B74 ; =0x0223F250
+ ldr r6, _02229B80 ; =0x0000E01D
+ ldrb r8, [r0, #1]
+ ldr fp, _02229B84 ; =0x0223F268
+ mov sl, sb
+ strh sb, [sp, #0x1a]
+ mov r7, sb
+ mov r5, #2
+ mov r4, #0x480
+_02229AF0:
+ ldr r0, _02229B7C ; =0x022430D8
+ cmp sb, #0x10
+ ldr r0, [r0]
+ moveq sl, r7
+ streqh r8, [sp, #0x12]
+ add r1, r0, sb
+ ldrb r1, [r1, #8]
+ ldrb r2, [fp, sl]
+ cmp r1, #0x20
+ streqh r6, [sp, #0x18]
+ strneh r1, [sp, #0x18]
+ ldrh r1, [sp, #0x16]
+ strh r2, [sp, #0x10]
+ str r1, [sp]
+ str r5, [sp, #4]
+ str r4, [sp, #8]
+ add r1, sp, #0x18
+ str r1, [sp, #0xc]
+ ldrh r1, [sp, #0x10]
+ ldrh r2, [sp, #0x12]
+ ldrh r3, [sp, #0x14]
+ ldr r0, [r0]
+ bl MOD13_0223A4F0
+ add sb, sb, #1
+ cmp sb, #0x20
+ add sl, sl, #1
+ blt _02229AF0
+ ldr r0, _02229B7C ; =0x022430D8
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD13_0223A410
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_02229B74: .word 0x0223F250
+_02229B78: .word 0x0223F254
+_02229B7C: .word 0x022430D8
+_02229B80: .word 0x0000E01D
+_02229B84: .word 0x0223F268
+
+ arm_func_start MOD13_02229B88
+MOD13_02229B88: ; 0x02229B88
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ bl MOD13_0221EE54
+ ldr r0, _02229C74 ; =0x022430D8
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD13_0223B974
+ mov r0, #0
+ bl MOD13_0223A65C
+ ldr r0, _02229C78 ; =0x02240174
+ ldr r1, _02229C7C ; =0x020C9480
+ bl MOD13_0221F174
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ add r0, sp, #0
+ add r1, sp, #4
+ bl MOD13_02222F44
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _02229C0C
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r1, [sp]
+ mov r0, #0
+ bl MOD13_02222F6C
+ ldr r0, _02229C80 ; =MOD13_0222DD4C
+ bl MOD13_02222FBC
+ b _02229C64
+_02229C0C:
+ ldr r0, _02229C74 ; =0x022430D8
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x2a]
+ cmp r0, #0
+ bne _02229C44
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ mov r0, #1
+ mov r1, #0
+ bl MOD13_02222F6C
+ ldr r0, _02229C84 ; =MOD13_022295D8
+ bl MOD13_02222FBC
+ b _02229C64
+_02229C44:
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222FA8
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222F6C
+ ldr r0, _02229C88 ; =MOD13_0223197C
+ bl MOD13_02222FBC
+_02229C64:
+ ldr r0, _02229C74 ; =0x022430D8
+ bl MOD13_0223AF90
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_02229C74: .word 0x022430D8
+_02229C78: .word 0x02240174
+_02229C7C: .word 0x020C9480
+_02229C80: .word MOD13_0222DD4C
+_02229C84: .word MOD13_022295D8
+_02229C88: .word MOD13_0223197C
+
+ arm_func_start MOD13_02229C8C
+MOD13_02229C8C: ; 0x02229C8C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x14
+ ldr r0, _02229D50 ; =0x0223F258
+ ldr r1, [r0]
+ ldr r0, [r0, #4]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ bl MOD13_022211C8
+ cmp r0, #0
+ addne sp, sp, #0x14
+ ldmneia sp!, {pc}
+ ldr r0, _02229D54 ; =0x022430D8
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x2a]
+ cmp r0, #0
+ bne _02229CDC
+ ldr r0, _02229D58 ; =MOD13_02229B88
+ bl MOD13_02222FBC
+ add sp, sp, #0x14
+ ldmia sp!, {pc}
+_02229CDC:
+ cmp r0, #2
+ bne _02229D10
+ mov ip, #0
+ mov r0, #6
+ mov r1, #3
+ mov r2, #1
+ mvn r3, #0
+ str ip, [sp]
+ bl MOD13_02235EFC
+ ldr r0, _02229D5C ; =MOD13_02229710
+ bl MOD13_02222FBC
+ add sp, sp, #0x14
+ ldmia sp!, {pc}
+_02229D10:
+ add r1, sp, #0xc
+ mov r0, #0
+ bl MOD13_02222F44
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [sp, #0xc]
+ add r0, sp, #4
+ ldr r0, [r0, r2, lsl #2]
+ mov r1, #2
+ mov r2, #1
+ mvn r3, #0
+ bl MOD13_02235EFC
+ ldr r0, _02229D60 ; =MOD13_02229994
+ bl MOD13_02222FBC
+ add sp, sp, #0x14
+ ldmia sp!, {pc}
+ .align 2, 0
+_02229D50: .word 0x0223F258
+_02229D54: .word 0x022430D8
+_02229D58: .word MOD13_02229B88
+_02229D5C: .word MOD13_02229710
+_02229D60: .word MOD13_02229994
+
+ arm_func_start MOD13_02229D64
+MOD13_02229D64: ; 0x02229D64
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02221220
+ mov r0, #0x15
+ bl MOD13_0223424C
+ ldr r0, _02229D9C ; =MOD13_02229C8C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02229D9C: .word MOD13_02229C8C
+
+ arm_func_start MOD13_02229DA0
+MOD13_02229DA0: ; 0x02229DA0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _02229DC0 ; =MOD13_02229D64
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02229DC0: .word MOD13_02229D64
+
+ arm_func_start MOD13_02229DC4
+MOD13_02229DC4: ; 0x02229DC4
+ bx lr
+
+ arm_func_start MOD13_02229DC8
+MOD13_02229DC8: ; 0x02229DC8
+ stmdb sp!, {r4, lr}
+ bl MOD13_0222120C
+ mov r4, r0
+ cmp r4, #0x83
+ bgt _02229E0C
+ cmp r4, #0x80
+ blt _02229E00
+ cmp r4, #0x80
+ beq _02229E18
+ cmp r4, #0x82
+ beq _02229E7C
+ cmp r4, #0x83
+ beq _02229EA0
+ b _02229F0C
+_02229E00:
+ cmp r4, #0
+ beq _02229F70
+ b _02229F0C
+_02229E0C:
+ ldr r0, _02229F7C ; =0x0000E01D
+ cmp r4, r0
+ b _02229F0C
+_02229E18:
+ ldr r0, _02229F80 ; =0x022430D8
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x29]
+ cmp r0, #0
+ beq _02229F70
+ mov r0, #3
+ bl MOD13_0223424C
+ ldr r1, _02229F80 ; =0x022430D8
+ mov r0, #0
+ ldr r3, [r1]
+ ldrb r2, [r3, #0x29]
+ sub r2, r2, #1
+ strb r2, [r3, #0x29]
+ ldr r3, [r1]
+ ldrb r2, [r3, #0x29]
+ add r2, r3, r2
+ strb r0, [r2, #8]
+ ldr r1, [r1]
+ ldrb r1, [r1, #0x29]
+ cmp r1, #0
+ bne _02229E70
+ bl MOD13_022211F8
+_02229E70:
+ mov r0, #1
+ bl MOD13_022211E4
+ b _02229F70
+_02229E7C:
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r1, _02229F80 ; =0x022430D8
+ ldr r0, _02229F84 ; =MOD13_02229DA0
+ ldr r1, [r1]
+ mov r2, #0
+ strb r2, [r1, #0x2a]
+ bl MOD13_02222FBC
+ ldmia sp!, {r4, pc}
+_02229EA0:
+ bl MOD13_02229748
+ cmp r0, #0
+ beq _02229EC8
+ mov r0, #6
+ bl MOD13_0223424C
+ ldr r0, _02229F80 ; =0x022430D8
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x2a]
+ b _02229EE0
+_02229EC8:
+ ldr r0, _02229F80 ; =0x022430D8
+ mov r2, #2
+ ldr r1, [r0]
+ mov r0, #9
+ strb r2, [r1, #0x2a]
+ bl MOD13_0223424C
+_02229EE0:
+ ldr r0, _02229F80 ; =0x022430D8
+ ldr r1, _02229F88 ; =0xC1FFFCFF
+ ldr r2, [r0]
+ ldr r0, _02229F84 ; =MOD13_02229DA0
+ ldr r3, [r2, #4]
+ ldr r2, [r3]
+ and r1, r2, r1
+ orr r1, r1, #0x200
+ str r1, [r3]
+ bl MOD13_02222FBC
+ ldmia sp!, {r4, pc}
+_02229F0C:
+ ldr r0, _02229F80 ; =0x022430D8
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x29]
+ cmp r0, #0x20
+ beq _02229F70
+ mov r0, #1
+ bl MOD13_0223424C
+ ldr r1, _02229F80 ; =0x022430D8
+ mov r0, #1
+ ldr r3, [r1]
+ ldrb r2, [r3, #0x29]
+ add r2, r3, r2
+ strb r4, [r2, #8]
+ ldr r2, [r1]
+ ldrb r1, [r2, #0x29]
+ add r1, r1, #1
+ strb r1, [r2, #0x29]
+ bl MOD13_022211F8
+ ldr r0, _02229F80 ; =0x022430D8
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x29]
+ cmp r0, #0x20
+ bne _02229F70
+ mov r0, #0
+ bl MOD13_022211E4
+_02229F70:
+ bl MOD13_02229A78
+ bl MOD13_022299FC
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02229F7C: .word 0x0000E01D
+_02229F80: .word 0x022430D8
+_02229F84: .word MOD13_02229DA0
+_02229F88: .word 0xC1FFFCFF
+
+ arm_func_start MOD13_02229F8C
+MOD13_02229F8C: ; 0x02229F8C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02229DC8
+ bl MOD13_02229DC4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0222120C
+ cmp r0, #0xff
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _02229FCC ; =MOD13_02229F8C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02229FCC: .word MOD13_02229F8C
+
+ arm_func_start MOD13_02229FD0
+MOD13_02229FD0: ; 0x02229FD0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0222125C
+ mov r0, #0x14
+ bl MOD13_0223424C
+ ldr r0, _0222A054 ; =0x022430D8
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x29]
+ cmp r0, #0
+ bne _0222A028
+ mov r0, #0
+ bl MOD13_022211F8
+_0222A028:
+ ldr r0, _0222A054 ; =0x022430D8
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x29]
+ cmp r0, #0x20
+ bne _0222A044
+ mov r0, #0
+ bl MOD13_022211E4
+_0222A044:
+ ldr r0, _0222A058 ; =0x02229FA4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222A054: .word 0x022430D8
+_0222A058: .word 0x02229FA4
+
+ arm_func_start MOD13_0222A05C
+MOD13_0222A05C: ; 0x0222A05C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _0222A0B4 ; =MOD13_02229FD0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222A0B4: .word MOD13_02229FD0
+
+ arm_func_start MOD13_0222A0B8
+MOD13_0222A0B8: ; 0x0222A0B8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222A15C ; =0x0224018C
+ ldr r1, _0222A160 ; =0x020C9480
+ bl MOD13_0221F174
+ ldr r0, _0222A164 ; =0x022401A0
+ ldr r1, _0222A168 ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r0, _0222A16C ; =0x022401B8
+ ldr r1, _0222A170 ; =0x020C9550
+ bl MOD13_0221F174
+ ldr r0, _0222A174 ; =0x022401D0
+ ldr r1, _0222A178 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _0222A17C ; =0x04001008
+ ldr ip, _0222A180 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _0222A184 ; =0x04000008
+ ldr r2, _0222A188 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _0222A18C ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #2
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222A15C: .word 0x0224018C
+_0222A160: .word 0x020C9480
+_0222A164: .word 0x022401A0
+_0222A168: .word 0x020C8D4C
+_0222A16C: .word 0x022401B8
+_0222A170: .word 0x020C9550
+_0222A174: .word 0x022401D0
+_0222A178: .word 0x020C908C
+_0222A17C: .word 0x04001008
+_0222A180: .word 0x0400100A
+_0222A184: .word 0x04000008
+_0222A188: .word 0x0400000A
+_0222A18C: .word 0x0400000C
+
+ arm_func_start MOD13_0222A190
+MOD13_0222A190: ; 0x0222A190
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r1, _0222A2B8 ; =0x0223F24C
+ mov r0, #0x2c
+ ldrb r3, [r1]
+ ldrb r2, [r1, #1]
+ mov r1, #4
+ strb r3, [sp]
+ strb r2, [sp, #1]
+ bl MOD13_0223AFE0
+ ldr r2, _0222A2BC ; =0x022430D8
+ add r1, sp, #8
+ str r0, [r2]
+ add r0, sp, #4
+ bl MOD13_02222F44
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _0222A208
+ ldr r0, _0222A2BC ; =0x022430D8
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD13_02233E90
+ ldr r0, _0222A2BC ; =0x022430D8
+ mov r1, #0x20
+ ldr r0, [r0]
+ add r0, r0, #8
+ bl MOD13_0223BDA4
+ ldr r1, _0222A2BC ; =0x022430D8
+ ldr r1, [r1]
+ strb r0, [r1, #0x29]
+_0222A208:
+ bl MOD13_0222A0B8
+ ldr r0, [sp, #4]
+ add r0, r0, #9
+ bl MOD13_0221F4CC
+ ldr r0, [sp, #8]
+ cmp r0, #1
+ bne _0222A238
+ mov r0, #0x35
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ b _0222A250
+_0222A238:
+ ldr r2, [sp, #4]
+ add r0, sp, #0
+ ldrb r0, [r0, r2]
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+_0222A250:
+ mov r0, #2
+ bl MOD13_0221F124
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_0223A7F0
+ ldr r2, _0222A2BC ; =0x022430D8
+ mov r1, #0x3e
+ ldr r2, [r2]
+ str r0, [r2]
+ mov r0, #0
+ bl MOD13_02239E54
+ ldr r1, _0222A2BC ; =0x022430D8
+ ldr r2, [r1]
+ str r0, [r2, #4]
+ ldr r0, [r1]
+ ldr r1, [r0, #4]
+ ldrh r0, [r1, #4]
+ bic r0, r0, #0xc00
+ orr r0, r0, #0xc00
+ strh r0, [r1, #4]
+ bl MOD13_022299FC
+ bl MOD13_02229A78
+ ldr r0, _0222A2C0 ; =MOD13_0222A05C
+ bl MOD13_02222FBC
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222A2B8: .word 0x0223F24C
+_0222A2BC: .word 0x022430D8
+_0222A2C0: .word MOD13_0222A05C
+
+ arm_func_start MOD13_0222A2C4
+MOD13_0222A2C4: ; 0x0222A2C4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222A308 ; =0x022430DC
+ ldr r1, _0222A30C ; =0xC1FFFCFF
+ ldr r2, [r0]
+ ldr r0, _0222A310 ; =MOD13_0222AD78
+ ldr r3, [r2, #4]
+ ldr r2, [r3]
+ and r1, r2, r1
+ str r1, [r3]
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222A308: .word 0x022430DC
+_0222A30C: .word 0xC1FFFCFF
+_0222A310: .word MOD13_0222AD78
+
+ arm_func_start MOD13_0222A314
+MOD13_0222A314: ; 0x0222A314
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_02235EB0
+ ldr r0, _0222A348 ; =MOD13_0222A2C4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222A348: .word MOD13_0222A2C4
+
+ arm_func_start MOD13_0222A34C
+MOD13_0222A34C: ; 0x0222A34C
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #0x10
+ ldr r1, _0222A4A8 ; =0x0223F278
+ ldr r0, _0222A4AC ; =0x022430DC
+ ldrb lr, [r1]
+ ldrb ip, [r1, #1]
+ ldrb r4, [r1, #2]
+ ldrb r3, [r1, #3]
+ mov r2, #0
+ strb lr, [sp]
+ ldr r0, [r0]
+ strb r4, [sp, #2]
+ add r5, sp, #0
+ mov r1, r2
+ strb ip, [sp, #1]
+ strb r3, [sp, #3]
+ mov lr, r2
+ add r4, r0, #8
+_0222A394:
+ ldrb r3, [r4, r1]
+ add r8, r4, r1
+ cmp r3, #0x20
+ beq _0222A3DC
+ mov r7, lr
+ mov r6, r5
+_0222A3AC:
+ ldrb ip, [r8, r7]
+ ldrb r3, [r6]
+ cmp ip, r3
+ addhi sp, sp, #0x10
+ movhi r0, #0
+ ldmhiia sp!, {r4, r5, r6, r7, r8, pc}
+ cmp ip, r3
+ blo _0222A3DC
+ add r7, r7, #1
+ cmp r7, #3
+ add r6, r6, #1
+ blt _0222A3AC
+_0222A3DC:
+ add r2, r2, #1
+ cmp r2, #4
+ add r1, r1, #3
+ blt _0222A394
+ add r1, sp, #8
+ add r0, r0, #8
+ bl MOD13_02233608
+ add r0, sp, #4
+ mov r1, #0
+ bl MOD13_02222F44
+ ldr r0, [sp, #4]
+ cmp r0, #1
+ bne _0222A48C
+ mov ip, #0
+ add r6, sp, #8
+ mov r5, ip
+ mov r3, ip
+ mov r2, #1
+_0222A424:
+ mov r4, r3
+_0222A428:
+ cmp ip, #0
+ beq _0222A450
+ rsb r0, r4, #7
+ ldrb r1, [r6]
+ mov r0, r2, lsl r0
+ ands r0, r1, r0
+ beq _0222A464
+ add sp, sp, #0x10
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_0222A450:
+ rsb r0, r4, #7
+ ldrb r1, [r6]
+ mov r0, r2, lsl r0
+ ands r0, r1, r0
+ moveq ip, r2
+_0222A464:
+ add r4, r4, #1
+ cmp r4, #8
+ blt _0222A428
+ add r5, r5, #1
+ cmp r5, #4
+ add r6, r6, #1
+ blt _0222A424
+ add sp, sp, #0x10
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_0222A48C:
+ add r0, sp, #8
+ bl FUN_02095AE0
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_0222A4A8: .word 0x0223F278
+_0222A4AC: .word 0x022430DC
+
+ arm_func_start MOD13_0222A4B0
+MOD13_0222A4B0: ; 0x0222A4B0
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r6, #0
+ mov r4, r6
+ ldr r0, _0222A538 ; =0x022430DC
+ mov ip, r6
+ mov r1, #0x20
+ mov r2, #0x30
+_0222A4D0:
+ ldr r3, [r0]
+ mov r5, ip
+ add r3, r3, #8
+ add r7, r3, r4
+_0222A4E0:
+ ldrb r3, [r7, r5]
+ add lr, r7, r5
+ cmp r3, #0x30
+ beq _0222A500
+ cmp r3, #0x20
+ beq _0222A500
+ cmp r3, #0
+ bne _0222A51C
+_0222A500:
+ cmp r5, #2
+ moveq r3, r2
+ movne r3, r1
+ add r5, r5, #1
+ strb r3, [lr]
+ cmp r5, #3
+ blt _0222A4E0
+_0222A51C:
+ add r6, r6, #1
+ cmp r6, #4
+ add r4, r4, #3
+ blt _0222A4D0
+ bl MOD13_0222A6B8
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222A538: .word 0x022430DC
+
+ arm_func_start MOD13_0222A53C
+MOD13_0222A53C: ; 0x0222A53C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x1c
+ ldr lr, _0222A5DC ; =0x0223F2B0
+ add ip, sp, #4
+ ldmia lr!, {r0, r1, r2, r3}
+ stmia ip!, {r0, r1, r2, r3}
+ ldr r0, [lr]
+ str r0, [ip]
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #0x1c
+ ldmneia sp!, {pc}
+ ldr r0, _0222A5E0 ; =0x022430DC
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x15]
+ cmp r0, #0
+ bne _0222A5A4
+ ldr r3, [r1, #4]
+ ldr r1, _0222A5E4 ; =0xC1FFFCFF
+ ldr r2, [r3]
+ ldr r0, _0222A5E8 ; =MOD13_0222AD78
+ and r1, r2, r1
+ str r1, [r3]
+ bl MOD13_02222FBC
+ add sp, sp, #0x1c
+ ldmia sp!, {pc}
+_0222A5A4:
+ add r0, sp, #0
+ mov r1, #0
+ bl MOD13_02222F44
+ ldr r0, _0222A5E0 ; =0x022430DC
+ ldr r2, [sp]
+ add r1, sp, #4
+ ldr r0, [r0]
+ ldr r1, [r1, r2, lsl #2]
+ add r0, r0, #8
+ blx r1
+ ldr r0, _0222A5EC ; =MOD13_0222A79C
+ bl MOD13_02222FBC
+ add sp, sp, #0x1c
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222A5DC: .word 0x0223F2B0
+_0222A5E0: .word 0x022430DC
+_0222A5E4: .word 0xC1FFFCFF
+_0222A5E8: .word MOD13_0222AD78
+_0222A5EC: .word MOD13_0222A79C
+
+ arm_func_start MOD13_0222A5F0
+MOD13_0222A5F0: ; 0x0222A5F0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ ldr r1, _0222A650 ; =0x022430DC
+ ldr r2, [r1]
+ strb r0, [r2, #0x15]
+ ldr r0, [r1]
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ beq _0222A628
+ cmp r0, #1
+ beq _0222A634
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222A628:
+ mov r0, #7
+ bl MOD13_0223424C
+ b _0222A63C
+_0222A634:
+ mov r0, #0xe
+ bl MOD13_0223424C
+_0222A63C:
+ bl MOD13_02235EB0
+ ldr r0, _0222A654 ; =MOD13_0222A53C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222A650: .word 0x022430DC
+_0222A654: .word MOD13_0222A53C
+
+ arm_func_start MOD13_0222A658
+MOD13_0222A658: ; 0x0222A658
+ ldr r0, _0222A6A8 ; =0x022430DC
+ ldr r2, [r0]
+ mov r0, #3
+ ldrb r3, [r2, #0x14]
+ ldr ip, [r2, #4]
+ cmp r3, #3
+ movgt r3, #3
+ mul r1, r3, r0
+ ldr r0, _0222A6AC ; =0x0223F290
+ add r1, r1, #2
+ ldrb r3, [r0, r1]
+ ldr r0, _0222A6B0 ; =0x000001FF
+ ldr r2, [ip]
+ ldr r1, _0222A6B4 ; =0xFE00FF00
+ and r3, r3, r0
+ and r0, r2, r1
+ orr r0, r0, #0x28
+ orr r0, r0, r3, lsl #16
+ str r0, [ip]
+ bx lr
+ .align 2, 0
+_0222A6A8: .word 0x022430DC
+_0222A6AC: .word 0x0223F290
+_0222A6B0: .word 0x000001FF
+_0222A6B4: .word 0xFE00FF00
+
+ arm_func_start MOD13_0222A6B8
+MOD13_0222A6B8: ; 0x0222A6B8
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #0x1c
+ ldr r0, _0222A78C ; =0x0223F288
+ ldr r1, _0222A790 ; =0x0223F27C
+ ldrh r4, [r0, #4]
+ ldrh r3, [r0, #6]
+ ldrh r6, [r0]
+ ldrh r5, [r0, #2]
+ ldr r0, _0222A794 ; =0x022430DC
+ ldrh r2, [r1]
+ strh r4, [sp, #0x14]
+ ldrh r1, [r1, #2]
+ strh r3, [sp, #0x16]
+ ldr r0, [r0]
+ strh r6, [sp, #0x10]
+ strh r5, [sp, #0x12]
+ strh r2, [sp, #0x14]
+ strh r1, [sp, #0x16]
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD13_0223A4D8
+ mov r5, #0
+ ldr r4, _0222A798 ; =0x0223F290
+ strh r5, [sp, #0x1a]
+ ldr r6, _0222A794 ; =0x022430DC
+ add r7, sp, #0x18
+ mov sb, #2
+ mov r8, #0x480
+_0222A728:
+ ldr ip, [r6]
+ ldrh r0, [sp, #0x16]
+ add r1, ip, r5
+ ldrb r1, [r1, #8]
+ strh r1, [sp, #0x18]
+ ldrb r1, [r4]
+ strh r1, [sp, #0x10]
+ str r0, [sp]
+ str sb, [sp, #4]
+ str r8, [sp, #8]
+ str r7, [sp, #0xc]
+ ldrh r2, [sp, #0x12]
+ ldrh r3, [sp, #0x14]
+ ldr r0, [ip]
+ bl MOD13_0223A4F0
+ add r5, r5, #1
+ cmp r5, #0xc
+ add r4, r4, #1
+ blt _0222A728
+ ldr r0, _0222A794 ; =0x022430DC
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD13_0223A410
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_0222A78C: .word 0x0223F288
+_0222A790: .word 0x0223F27C
+_0222A794: .word 0x022430DC
+_0222A798: .word 0x0223F290
+
+ arm_func_start MOD13_0222A79C
+MOD13_0222A79C: ; 0x0222A79C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EE54
+ ldr r0, _0222A834 ; =0x022430DC
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD13_0223B974
+ mov r0, #0
+ bl MOD13_0223A65C
+ ldr r0, _0222A838 ; =0x022401E4
+ ldr r1, _0222A83C ; =0x020C9480
+ bl MOD13_0221F174
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ add r0, sp, #0
+ mov r1, #0
+ bl MOD13_02222F44
+ ldr r0, [sp]
+ mov r1, #1
+ cmp r0, #3
+ addge r0, r0, #1
+ strge r0, [sp]
+ mov r0, #2
+ bl MOD13_02222FA8
+ ldr r1, [sp]
+ mov r0, #0
+ add r1, r1, #3
+ bl MOD13_02222F6C
+ ldr r0, _0222A840 ; =MOD13_0222DD4C
+ bl MOD13_02222FBC
+ ldr r0, _0222A834 ; =0x022430DC
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222A834: .word 0x022430DC
+_0222A838: .word 0x022401E4
+_0222A83C: .word 0x020C9480
+_0222A840: .word MOD13_0222DD4C
+
+ arm_func_start MOD13_0222A844
+MOD13_0222A844: ; 0x0222A844
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_022228BC
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222A8E0 ; =0x022430DC
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x15]
+ cmp r0, #0
+ bne _0222A880
+ ldr r0, _0222A8E4 ; =MOD13_0222A79C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222A880:
+ cmp r0, #2
+ bne _0222A8B4
+ mov ip, #0
+ mov r0, #6
+ mov r1, #3
+ mov r2, #1
+ mvn r3, #0
+ str ip, [sp]
+ bl MOD13_02235EFC
+ ldr r0, _0222A8E8 ; =MOD13_0222A314
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222A8B4:
+ mov ip, #0
+ mov r0, #0x47
+ mov r1, #2
+ mov r2, #1
+ mvn r3, #0
+ str ip, [sp]
+ bl MOD13_02235EFC
+ ldr r0, _0222A8EC ; =MOD13_0222A5F0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222A8E0: .word 0x022430DC
+_0222A8E4: .word MOD13_0222A79C
+_0222A8E8: .word MOD13_0222A314
+_0222A8EC: .word MOD13_0222A5F0
+
+ arm_func_start MOD13_0222A8F0
+MOD13_0222A8F0: ; 0x0222A8F0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02222928
+ mov r0, #0x15
+ bl MOD13_0223424C
+ ldr r0, _0222A928 ; =MOD13_0222A844
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222A928: .word MOD13_0222A844
+
+ arm_func_start MOD13_0222A92C
+MOD13_0222A92C: ; 0x0222A92C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _0222A94C ; =MOD13_0222A8F0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222A94C: .word MOD13_0222A8F0
+
+ arm_func_start MOD13_0222A950
+MOD13_0222A950: ; 0x0222A950
+ bx lr
+
+ arm_func_start MOD13_0222A954
+MOD13_0222A954: ; 0x0222A954
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r2, _0222A9EC ; =0x022430DC
+ mov r1, #3
+ ldr r2, [r2]
+ mov r4, r0
+ ldrb r0, [r2, #0x14]
+ add r3, r2, #8
+ mul r2, r0, r1
+ ldrb r1, [r3, r2]
+ add r0, r3, r2
+ cmp r1, #0
+ beq _0222A998
+ cmp r1, #0x20
+ addne sp, sp, #8
+ movne r0, #1
+ ldmneia sp!, {r4, pc}
+_0222A998:
+ add r1, sp, #0
+ mov r2, #3
+ bl MI_CpuCopy8
+ mov r3, #0
+ add r2, sp, #0
+ strb r3, [sp, #3]
+ mov r0, #0x20
+_0222A9B4:
+ ldrb r1, [r2]
+ cmp r1, #0
+ bne _0222A9D0
+ add r3, r3, #1
+ cmp r3, #3
+ strb r0, [r2], #1
+ blt _0222A9B4
+_0222A9D0:
+ add r0, sp, #0
+ bl atol
+ cmp r0, r4
+ movge r0, #1
+ movlt r0, #0
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222A9EC: .word 0x022430DC
+
+ arm_func_start MOD13_0222A9F0
+MOD13_0222A9F0: ; 0x0222A9F0
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ bl MOD13_02222914
+ mov r4, r0
+ cmp r4, #0
+ bgt _0222AA18
+ cmp r4, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ b _0222ABF4
+_0222AA18:
+ sub r0, r4, #0x10
+ cmp r0, #3
+ addls pc, pc, r0, lsl #2
+ b _0222ABF4
+_0222AA28: ; jump table
+ b _0222AA40 ; case 0
+ b _0222AAF0 ; case 1
+ b _0222AB48 ; case 2
+ b _0222AB70 ; case 3
+ add sp, sp, #4 ; case 4
+ ldmia sp!, {r4, r5, pc} ; case 5
+_0222AA40:
+ ldr r0, _0222AD28 ; =0x022430DC
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x14]
+ cmp r0, #0
+ bne _0222AA60
+ ldrb r0, [r1, #0xa]
+ cmp r0, #0
+ beq _0222AD18
+_0222AA60:
+ mov r0, #3
+ bl MOD13_0223424C
+ ldr r1, _0222AD28 ; =0x022430DC
+ mov r0, #3
+ ldr r2, [r1]
+ ldrb r1, [r2, #0x14]
+ mul r0, r1, r0
+ add r0, r0, #2
+ add r0, r2, r0
+ ldrb r0, [r0, #8]
+ cmp r0, #0
+ subeq r0, r1, #1
+ streqb r0, [r2, #0x14]
+ ldr r0, _0222AD28 ; =0x022430DC
+ mov r2, #3
+ ldr r0, [r0]
+ mov r1, #0
+ ldrb r3, [r0, #0x14]
+ add r0, r0, #8
+ mla r0, r3, r2, r0
+ bl MI_CpuFill8
+ ldr r0, _0222AD28 ; =0x022430DC
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x14]
+ cmp r0, #0
+ bne _0222AADC
+ ldrb r0, [r1, #0xa]
+ cmp r0, #0
+ bne _0222AADC
+ mov r0, #0
+ bl MOD13_02222900
+_0222AADC:
+ mov r0, #1
+ bl MOD13_022228EC
+ mov r0, #0
+ bl MOD13_022228D8
+ b _0222AD18
+_0222AAF0:
+ ldr r0, _0222AD28 ; =0x022430DC
+ ldr r2, [r0]
+ ldrb r1, [r2, #0x14]
+ cmp r1, #3
+ bhs _0222AD18
+ mov r0, #3
+ mul r0, r1, r0
+ add r0, r0, #2
+ add r0, r2, r0
+ ldrb r0, [r0, #8]
+ cmp r0, #0
+ beq _0222AD18
+ mov r0, #1
+ bl MOD13_0223424C
+ ldr r1, _0222AD28 ; =0x022430DC
+ mov r0, #0
+ ldr r2, [r1]
+ ldrb r1, [r2, #0x14]
+ add r1, r1, #1
+ strb r1, [r2, #0x14]
+ bl MOD13_022228D8
+ b _0222AD18
+_0222AB48:
+ ldr r0, _0222AD28 ; =0x022430DC
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #7
+ strb r2, [r1, #0x15]
+ bl MOD13_0223424C
+ ldr r0, _0222AD2C ; =MOD13_0222A92C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0222AB70:
+ bl MOD13_0222A34C
+ cmp r0, #0
+ beq _0222AB98
+ mov r0, #6
+ bl MOD13_0223424C
+ ldr r0, _0222AD28 ; =0x022430DC
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x15]
+ b _0222ABB0
+_0222AB98:
+ ldr r0, _0222AD28 ; =0x022430DC
+ mov r2, #2
+ ldr r1, [r0]
+ mov r0, #9
+ strb r2, [r1, #0x15]
+ bl MOD13_0223424C
+_0222ABB0:
+ ldr r1, _0222AD28 ; =0x022430DC
+ mov r3, #3
+ ldr r2, [r1]
+ ldr r0, _0222AD30 ; =0xC1FFFCFF
+ strb r3, [r2, #0x14]
+ ldr r1, [r1]
+ ldr r2, [r1, #4]
+ ldr r1, [r2]
+ and r0, r1, r0
+ orr r0, r0, #0x200
+ str r0, [r2]
+ bl MOD13_0222A658
+ bl MOD13_0222A4B0
+ ldr r0, _0222AD2C ; =MOD13_0222A92C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0222ABF4:
+ ldr r0, _0222AD28 ; =0x022430DC
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x14]
+ cmp r0, #3
+ bne _0222AC18
+ mov r0, #0x1a
+ bl MOD13_0222A954
+ cmp r0, #0
+ bne _0222AD18
+_0222AC18:
+ mov r0, #1
+ bl MOD13_0223424C
+ ldr r1, _0222AD28 ; =0x022430DC
+ mov r0, #3
+ ldr r3, [r1]
+ ldrb r2, [r3, #0x14]
+ add r5, r3, #8
+ mul lr, r2, r0
+ add r0, lr, #2
+ ldrb r3, [r5, r0]
+ add ip, r5, r0
+ cmp r3, #0
+ streqb r4, [ip]
+ beq _0222ACBC
+ add r2, lr, #1
+ ldrb r0, [r5, r2]
+ add r2, r5, r2
+ cmp r0, #0
+ bne _0222AC98
+ strb r3, [r2]
+ mov r0, #0x1a
+ strb r4, [ip]
+ bl MOD13_0222A954
+ cmp r0, #0
+ beq _0222ACBC
+ ldr r0, _0222AD28 ; =0x022430DC
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x14]
+ cmp r0, #3
+ addlo r0, r0, #1
+ strlob r0, [r1, #0x14]
+ b _0222ACBC
+_0222AC98:
+ strb r0, [r5, lr]
+ ldrb r0, [ip]
+ strb r0, [r2]
+ strb r4, [ip]
+ ldr r1, [r1]
+ ldrb r0, [r1, #0x14]
+ cmp r0, #3
+ addlo r0, r0, #1
+ strlob r0, [r1, #0x14]
+_0222ACBC:
+ mov r0, #1
+ bl MOD13_02222900
+ ldr r0, _0222AD28 ; =0x022430DC
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x14]
+ cmp r0, #3
+ bhs _0222ACE4
+ mov r0, #1
+ bl MOD13_022228D8
+ b _0222ACEC
+_0222ACE4:
+ mov r0, #0
+ bl MOD13_022228D8
+_0222ACEC:
+ ldr r0, _0222AD28 ; =0x022430DC
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x14]
+ cmp r0, #3
+ bne _0222AD18
+ mov r0, #0x1a
+ bl MOD13_0222A954
+ cmp r0, #0
+ beq _0222AD18
+ mov r0, #0
+ bl MOD13_022228EC
+_0222AD18:
+ bl MOD13_0222A6B8
+ bl MOD13_0222A658
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0222AD28: .word 0x022430DC
+_0222AD2C: .word MOD13_0222A92C
+_0222AD30: .word 0xC1FFFCFF
+
+ arm_func_start MOD13_0222AD34
+MOD13_0222AD34: ; 0x0222AD34
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0222A9F0
+ bl MOD13_0222A950
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02222914
+ cmp r0, #0x1f
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _0222AD74 ; =MOD13_0222AD34
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222AD74: .word MOD13_0222AD34
+
+ arm_func_start MOD13_0222AD78
+MOD13_0222AD78: ; 0x0222AD78
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02222964
+ mov r0, #0x14
+ bl MOD13_0223424C
+ ldr r0, _0222AE0C ; =0x022430DC
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x14]
+ cmp r0, #0
+ bne _0222ADDC
+ mov r0, #0
+ bl MOD13_02222900
+ mov r0, #0
+ bl MOD13_022228D8
+ b _0222ADFC
+_0222ADDC:
+ mov r0, #0x1a
+ bl MOD13_0222A954
+ cmp r0, #0
+ beq _0222ADF4
+ mov r0, #0
+ bl MOD13_022228EC
+_0222ADF4:
+ mov r0, #0
+ bl MOD13_022228D8
+_0222ADFC:
+ ldr r0, _0222AE10 ; =0x0222AD4C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222AE0C: .word 0x022430DC
+_0222AE10: .word 0x0222AD4C
+
+ arm_func_start MOD13_0222AE14
+MOD13_0222AE14: ; 0x0222AE14
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _0222AE6C ; =MOD13_0222AD78
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222AE6C: .word MOD13_0222AD78
+
+ arm_func_start MOD13_0222AE70
+MOD13_0222AE70: ; 0x0222AE70
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222AF14 ; =0x022401FC
+ ldr r1, _0222AF18 ; =0x020C9480
+ bl MOD13_0221F174
+ ldr r0, _0222AF1C ; =0x02240210
+ ldr r1, _0222AF20 ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r0, _0222AF24 ; =0x02240228
+ ldr r1, _0222AF28 ; =0x020C9550
+ bl MOD13_0221F174
+ ldr r0, _0222AF2C ; =0x02240240
+ ldr r1, _0222AF30 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _0222AF34 ; =0x04001008
+ ldr ip, _0222AF38 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _0222AF3C ; =0x04000008
+ ldr r2, _0222AF40 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _0222AF44 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #2
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222AF14: .word 0x022401FC
+_0222AF18: .word 0x020C9480
+_0222AF1C: .word 0x02240210
+_0222AF20: .word 0x020C8D4C
+_0222AF24: .word 0x02240228
+_0222AF28: .word 0x020C9550
+_0222AF2C: .word 0x02240240
+_0222AF30: .word 0x020C908C
+_0222AF34: .word 0x04001008
+_0222AF38: .word 0x0400100A
+_0222AF3C: .word 0x04000008
+_0222AF40: .word 0x0400000A
+_0222AF44: .word 0x0400000C
+
+ arm_func_start MOD13_0222AF48
+MOD13_0222AF48: ; 0x0222AF48
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0x24
+ ldr r7, _0222B0A8 ; =0x0223F29C
+ ldr ip, _0222B0AC ; =0x0223F280
+ ldmia r7!, {r0, r1, r2, r3}
+ add r6, sp, #0xc
+ stmia r6!, {r0, r1, r2, r3}
+ ldrb r5, [ip]
+ ldrb r4, [ip, #1]
+ ldrb lr, [ip, #2]
+ ldrb r3, [ip, #3]
+ ldrb r2, [ip, #4]
+ ldr ip, [r7]
+ mov r0, #0x18
+ mov r1, #4
+ str ip, [r6]
+ strb r5, [sp]
+ strb r4, [sp, #1]
+ strb lr, [sp, #2]
+ strb r3, [sp, #3]
+ strb r2, [sp, #4]
+ bl MOD13_0223AFE0
+ ldr r2, _0222B0B0 ; =0x022430DC
+ mov r1, #0
+ str r0, [r2]
+ add r0, sp, #8
+ bl MOD13_02222F44
+ ldr r0, _0222B0B0 ; =0x022430DC
+ ldr r2, [sp, #8]
+ add r1, sp, #0xc
+ ldr r0, [r0]
+ ldr r1, [r1, r2, lsl #2]
+ add r0, r0, #8
+ blx r1
+ ldr r0, _0222B0B0 ; =0x022430DC
+ ldr r1, _0222B0B4 ; =0x02240258
+ ldr r4, [r0]
+ mov r2, #3
+ add r0, r4, #8
+ bl memcmp
+ cmp r0, #0
+ movne r0, #3
+ strneb r0, [r4, #0x14]
+ bne _0222B018
+ add r0, r4, #8
+ mov r1, #0
+ mov r2, #0xc
+ bl MI_CpuFill8
+ ldr r0, _0222B0B0 ; =0x022430DC
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x14]
+_0222B018:
+ bl MOD13_0222AE70
+ ldr r0, [sp, #8]
+ add r0, r0, #0xb
+ bl MOD13_0221F4CC
+ ldr r2, [sp, #8]
+ add r0, sp, #0
+ ldrb r0, [r0, r2]
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ mov r0, #2
+ bl MOD13_0221F124
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_0223A7F0
+ ldr r2, _0222B0B0 ; =0x022430DC
+ mov r1, #0x3f
+ ldr r2, [r2]
+ str r0, [r2]
+ mov r0, #0
+ bl MOD13_02239E54
+ ldr r1, _0222B0B0 ; =0x022430DC
+ ldr r2, [r1]
+ str r0, [r2, #4]
+ ldr r0, [r1]
+ ldr r1, [r0, #4]
+ ldrh r0, [r1, #4]
+ bic r0, r0, #0xc00
+ orr r0, r0, #0xc00
+ strh r0, [r1, #4]
+ bl MOD13_0222A658
+ bl MOD13_0222A6B8
+ ldr r0, _0222B0B8 ; =MOD13_0222AE14
+ bl MOD13_02222FBC
+ add sp, sp, #0x24
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222B0A8: .word 0x0223F29C
+_0222B0AC: .word 0x0223F280
+_0222B0B0: .word 0x022430DC
+_0222B0B4: .word 0x02240258
+_0222B0B8: .word MOD13_0222AE14
+
+ arm_func_start MOD13_0222B0BC
+MOD13_0222B0BC: ; 0x0222B0BC
+ ldr r1, _0222B0C8 ; =0x022430E0
+ str r0, [r1]
+ bx lr
+ .align 2, 0
+_0222B0C8: .word 0x022430E0
+
+ arm_func_start MOD13_0222B0CC
+MOD13_0222B0CC: ; 0x0222B0CC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A65C
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ add r1, sp, #0
+ mov r0, #0
+ bl MOD13_02222F44
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _0222B164
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _0222B194 ; =MOD13_02230714
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222B164:
+ mov r0, #2
+ mov r1, #0
+ bl MOD13_02222FA8
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222F6C
+ mov r0, #0
+ bl MOD13_0222B7F4
+ ldr r0, _0222B198 ; =MOD13_0222DD4C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222B194: .word MOD13_02230714
+_0222B198: .word MOD13_0222DD4C
+
+ arm_func_start MOD13_0222B19C
+MOD13_0222B19C: ; 0x0222B19C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ED28
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _0222B1F4 ; =MOD13_0222B0CC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222B1F4: .word MOD13_0222B0CC
+
+ arm_func_start MOD13_0222B1F8
+MOD13_0222B1F8: ; 0x0222B1F8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _0222B21C ; =MOD13_0222B19C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222B21C: .word MOD13_0222B19C
+
+ arm_func_start MOD13_0222B220
+MOD13_0222B220: ; 0x0222B220
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ ldr r0, _0222B250 ; =MOD13_0222B1F8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222B250: .word MOD13_0222B1F8
+
+ arm_func_start MOD13_0222B254
+MOD13_0222B254: ; 0x0222B254
+ bx lr
+
+ arm_func_start MOD13_0222B258
+MOD13_0222B258: ; 0x0222B258
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0222B258
+ bl MOD13_0222B254
+ bl MOD13_0222B220
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _0222B2D0 ; =0x0222B284
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222B2D0: .word 0x0222B284
+
+ arm_func_start MOD13_0222B2D4
+MOD13_0222B2D4: ; 0x0222B2D4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #4
+ bl MOD13_0221F0EC
+ ldr r0, _0222B31C ; =0x0222B2A0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222B31C: .word 0x0222B2A0
+
+ arm_func_start MOD13_0222B320
+MOD13_0222B320: ; 0x0222B320
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _0222B358 ; =MOD13_0222B2D4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222B358: .word MOD13_0222B2D4
+
+ arm_func_start MOD13_0222B35C
+MOD13_0222B35C: ; 0x0222B35C
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x28
+ add r1, sp, #0x10
+ mov r0, #0
+ bl MOD13_02222F44
+ ldr r0, _0222B690 ; =0x022430E0
+ ldr r1, _0222B694 ; =0xFFFFB17D
+ ldr r0, [r0]
+ cmp r0, r1
+ movge r4, #0
+ bge _0222B5B8
+ ldr r1, _0222B698 ; =0xFFFFB17C
+ cmp r0, r1
+ movge r4, #2
+ bge _0222B5B8
+ ldr r1, _0222B69C ; =0xFFFFB17B
+ cmp r0, r1
+ movge r4, #0x13
+ bge _0222B5B8
+ ldr r1, _0222B6A0 ; =0xFFFFB175
+ cmp r0, r1
+ movge r4, #2
+ bge _0222B5B8
+ ldr r1, _0222B6A4 ; =0xFFFFB174
+ cmp r0, r1
+ movge r4, #0x12
+ bge _0222B5B8
+ ldr r1, _0222B6A8 ; =0xFFFFB173
+ cmp r0, r1
+ movge r4, #2
+ bge _0222B5B8
+ ldr r1, _0222B6AC ; =0xFFFFB172
+ cmp r0, r1
+ movge r4, #3
+ bge _0222B5B8
+ ldr r1, _0222B6B0 ; =0xFFFFADF9
+ cmp r0, r1
+ movge r4, #2
+ bge _0222B5B8
+ ldr r1, _0222B6B4 ; =0xFFFFA629
+ cmp r0, r1
+ movge r4, #0
+ bge _0222B5B8
+ ldr r1, _0222B6B8 ; =0xFFFFA241
+ cmp r0, r1
+ movge r4, #0x13
+ bge _0222B5B8
+ ldr r1, _0222B6BC ; =0xFFFF3CB1
+ cmp r0, r1
+ movge r4, #0
+ bge _0222B5B8
+ ldr r1, _0222B6C0 ; =0xFFFF3CAE
+ cmp r0, r1
+ movge r4, #7
+ bge _0222B5B8
+ ldr r1, _0222B6C4 ; =0xFFFF3CAD
+ cmp r0, r1
+ movge r4, #5
+ bge _0222B5B8
+ ldr r1, _0222B6C8 ; =0xFFFF3C4E
+ cmp r0, r1
+ movge r4, #0
+ bge _0222B5B8
+ ldr r1, _0222B6CC ; =0xFFFF3C4D
+ cmp r0, r1
+ blt _0222B478
+ ldr r0, [sp, #0x10]
+ cmp r0, #2
+ moveq r4, #5
+ movne r4, #7
+ b _0222B5B8
+_0222B478:
+ ldr r1, _0222B6D0 ; =0xFFFF3866
+ cmp r0, r1
+ movge r4, #0
+ bge _0222B5B8
+ ldr r1, _0222B6D4 ; =0xFFFF3865
+ cmp r0, r1
+ blt _0222B4A8
+ ldr r0, [sp, #0x10]
+ cmp r0, #2
+ moveq r4, #5
+ movne r4, #8
+ b _0222B5B8
+_0222B4A8:
+ ldr r1, _0222B6D8 ; =0xFFFF3862
+ cmp r0, r1
+ movge r4, #9
+ bge _0222B5B8
+ ldr r1, _0222B6DC ; =0xFFFF3861
+ cmp r0, r1
+ movge r4, #5
+ bge _0222B5B8
+ ldr r1, _0222B6E0 ; =0xFFFF3801
+ cmp r0, r1
+ movge r4, #0
+ bge _0222B5B8
+ ldr r1, _0222B6E4 ; =0xFFFF379D
+ cmp r0, r1
+ movge r4, #0x14
+ bge _0222B5B8
+ ldr r1, _0222B6E8 ; =0xFFFF379A
+ cmp r0, r1
+ movge r4, #0x15
+ bge _0222B5B8
+ ldr r1, _0222B6EC ; =0xFFFF3799
+ cmp r0, r1
+ movge r4, #4
+ bge _0222B5B8
+ ldr r1, _0222B6F0 ; =0xFFFF34E1
+ cmp r0, r1
+ movge r4, #0
+ bge _0222B5B8
+ ldr r1, _0222B6F4 ; =0xFFFF34DE
+ cmp r0, r1
+ movge r4, #0xa
+ bge _0222B5B8
+ ldr r1, _0222B6F8 ; =0xFFFF34DD
+ cmp r0, r1
+ movge r4, #0x16
+ bge _0222B5B8
+ ldr r1, _0222B6FC ; =0xFFFF347D
+ cmp r0, r1
+ movge r4, #0
+ bge _0222B5B8
+ ldr r1, _0222B700 ; =0xFFFF3479
+ cmp r0, r1
+ movge r4, #0xb
+ bge _0222B5B8
+ ldr r1, _0222B704 ; =0xFFFF3419
+ cmp r0, r1
+ movge r4, #0
+ bge _0222B5B8
+ ldr r1, _0222B708 ; =0xFFFF3415
+ cmp r0, r1
+ movge r4, #0xb
+ bge _0222B5B8
+ ldr r1, _0222B70C ; =0xFFFF33B5
+ cmp r0, r1
+ movge r4, #0
+ bge _0222B5B8
+ ldr r1, _0222B710 ; =0xFFFF3351
+ cmp r0, r1
+ movge r4, #2
+ bge _0222B5B8
+ ldr r1, _0222B714 ; =0xFFFF30F9
+ cmp r0, r1
+ movge r4, #0
+ bge _0222B5B8
+ ldr r1, _0222B718 ; =0xFFFF2FCD
+ cmp r0, r1
+ movge r4, #2
+ movlt r4, #0
+_0222B5B8:
+ bl MOD13_02222F34
+ mov r2, r0
+ ldr r1, _0222B71C ; =0x0223F2C4
+ mov r0, #0
+ ldrb r1, [r1, r2]
+ bl MOD13_0223A7F0
+ ldr r1, _0222B720 ; =0x0224307C
+ mov r5, r0
+ ldr r0, [r1]
+ mov r1, r4
+ bl MOD13_02223568
+ ldr r1, _0222B690 ; =0x022430E0
+ mov r4, r0
+ ldr r1, [r1]
+ ldr r2, _0222B724 ; =0x0224025C
+ rsb r3, r1, #0
+ add r0, sp, #0x14
+ mov r1, #8
+ bl swprintf
+ bl MOD13_02222F34
+ mov r1, r0, lsl #2
+ ldr r0, _0222B728 ; =0x0223F2D6
+ ldrh r6, [r0, r1]
+ bl MOD13_02222F34
+ mov r1, r0, lsl #2
+ ldr r0, _0222B72C ; =0x0223F2D4
+ mov ip, #0xa
+ ldrh r1, [r0, r1]
+ add r3, sp, #0x14
+ mov r0, #0
+ str ip, [sp]
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ mov r2, r6
+ mov r0, r5
+ mov r3, #2
+ bl MOD13_0223A528
+ bl MOD13_0221EF88
+ ldr r3, _0222B730 ; =0x0223F2CC
+ mov r1, #2
+ ldrh r2, [r3, #6]
+ str r2, [sp]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r4, [sp, #0xc]
+ ldrh r1, [r3]
+ ldrh r2, [r3, #2]
+ ldrh r3, [r3, #4]
+ mov r0, r5
+ bl MOD13_0223A4F0
+ mov r0, r5
+ bl MOD13_0223A410
+ add sp, sp, #0x28
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_0222B690: .word 0x022430E0
+_0222B694: .word 0xFFFFB17D
+_0222B698: .word 0xFFFFB17C
+_0222B69C: .word 0xFFFFB17B
+_0222B6A0: .word 0xFFFFB175
+_0222B6A4: .word 0xFFFFB174
+_0222B6A8: .word 0xFFFFB173
+_0222B6AC: .word 0xFFFFB172
+_0222B6B0: .word 0xFFFFADF9
+_0222B6B4: .word 0xFFFFA629
+_0222B6B8: .word 0xFFFFA241
+_0222B6BC: .word 0xFFFF3CB1
+_0222B6C0: .word 0xFFFF3CAE
+_0222B6C4: .word 0xFFFF3CAD
+_0222B6C8: .word 0xFFFF3C4E
+_0222B6CC: .word 0xFFFF3C4D
+_0222B6D0: .word 0xFFFF3866
+_0222B6D4: .word 0xFFFF3865
+_0222B6D8: .word 0xFFFF3862
+_0222B6DC: .word 0xFFFF3861
+_0222B6E0: .word 0xFFFF3801
+_0222B6E4: .word 0xFFFF379D
+_0222B6E8: .word 0xFFFF379A
+_0222B6EC: .word 0xFFFF3799
+_0222B6F0: .word 0xFFFF34E1
+_0222B6F4: .word 0xFFFF34DE
+_0222B6F8: .word 0xFFFF34DD
+_0222B6FC: .word 0xFFFF347D
+_0222B700: .word 0xFFFF3479
+_0222B704: .word 0xFFFF3419
+_0222B708: .word 0xFFFF3415
+_0222B70C: .word 0xFFFF33B5
+_0222B710: .word 0xFFFF3351
+_0222B714: .word 0xFFFF30F9
+_0222B718: .word 0xFFFF2FCD
+_0222B71C: .word 0x0223F2C4
+_0222B720: .word 0x0224307C
+_0222B724: .word 0x0224025C
+_0222B728: .word 0x0223F2D6
+_0222B72C: .word 0x0223F2D4
+_0222B730: .word 0x0223F2CC
+
+ arm_func_start MOD13_0222B734
+MOD13_0222B734: ; 0x0222B734
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222B7B4 ; =0x02240264
+ ldr r1, _0222B7B8 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _0222B7BC ; =0x04001008
+ ldr ip, _0222B7C0 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _0222B7C4 ; =0x04000008
+ ldr r2, _0222B7C8 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _0222B7CC ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222B7B4: .word 0x02240264
+_0222B7B8: .word 0x020C908C
+_0222B7BC: .word 0x04001008
+_0222B7C0: .word 0x0400100A
+_0222B7C4: .word 0x04000008
+_0222B7C8: .word 0x0400000A
+_0222B7CC: .word 0x0400000C
+
+ arm_func_start MOD13_0222B7D0
+MOD13_0222B7D0: ; 0x0222B7D0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0222B734
+ bl MOD13_0222B35C
+ ldr r0, _0222B7F0 ; =MOD13_0222B320
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222B7F0: .word MOD13_0222B320
+
+ arm_func_start MOD13_0222B7F4
+MOD13_0222B7F4: ; 0x0222B7F4
+ ldr r1, _0222B800 ; =0x022430E8
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_0222B800: .word 0x022430E8
+
+ arm_func_start MOD13_0222B804
+MOD13_0222B804: ; 0x0222B804
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222B82C ; =MOD13_0222DA24
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222B82C: .word MOD13_0222DA24
+
+ arm_func_start MOD13_0222B830
+MOD13_0222B830: ; 0x0222B830
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_02235EB0
+ ldr r0, _0222B874 ; =0x022430F4
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl MOD13_02232780
+ ldr r0, _0222B878 ; =MOD13_0222B804
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222B874: .word 0x022430F4
+_0222B878: .word MOD13_0222B804
+
+ arm_func_start MOD13_0222B87C
+MOD13_0222B87C: ; 0x0222B87C
+ stmdb sp!, {r4, lr}
+ bl MOD13_02234164
+ mov r4, r0
+ ldrb r0, [r4, #0x40]
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldrb r0, [r4, #0xf6]
+ cmp r0, #0
+ bne _0222B8C8
+ add r0, r4, #0xc8
+ bl FUN_02095AE0
+ cmp r0, #0
+ bne _0222B8C8
+ add r0, r4, #0xcc
+ bl FUN_02095AE0
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+_0222B8C8:
+ ldrb r0, [r4, #0xf5]
+ cmp r0, #0
+ bne _0222B914
+ add r0, r4, #0xc0
+ bl FUN_02095AE0
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ add r0, r4, #0xc4
+ bl FUN_02095AE0
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ add r0, r4, #0xc0
+ add r1, r4, #0xf0
+ bl FUN_02095B0C
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+_0222B914:
+ mov r0, #1
+ ldmia sp!, {r4, pc}
+
+ arm_func_start MOD13_0222B91C
+MOD13_0222B91C: ; 0x0222B91C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _0222B9D0 ; =0x0223F2F0
+ ldr r0, _0222B9D4 ; =0x022430E4
+ ldrb ip, [r1]
+ ldrb r3, [r1, #1]
+ ldrb r2, [r1, #2]
+ ldrb r1, [r1, #3]
+ strb ip, [sp]
+ ldrb lr, [r0]
+ add r4, sp, #0
+ strb r3, [sp, #1]
+ strb r2, [sp, #2]
+ strb r1, [sp, #3]
+ mov ip, #0
+_0222B958:
+ ldrb r0, [r4]
+ cmp lr, r0
+ bne _0222B9B8
+ ldr r0, _0222B9D8 ; =0x022430F4
+ mov r3, #0x14
+ ldr r2, [r0]
+ ands r1, ip, #1
+ add r1, r2, ip
+ strb r3, [r1, #4]
+ beq _0222B99C
+ ldr r1, [r0]
+ sub r0, ip, #1
+ add r0, r1, r0
+ mov r1, #0
+ strb r1, [r0, #4]
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_0222B99C:
+ ldr r1, [r0]
+ add r0, ip, #1
+ add r0, r1, r0
+ mov r1, #0
+ strb r1, [r0, #4]
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_0222B9B8:
+ add ip, ip, #1
+ cmp ip, #4
+ add r4, r4, #1
+ blt _0222B958
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222B9D0: .word 0x0223F2F0
+_0222B9D4: .word 0x022430E4
+_0222B9D8: .word 0x022430F4
+
+ arm_func_start MOD13_0222B9DC
+MOD13_0222B9DC: ; 0x0222B9DC
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r5, _0222BA34 ; =0x022430F4
+ mov r4, #0
+_0222B9EC:
+ ldr r0, [r5]
+ add r1, r0, r4
+ ldrb r0, [r1, #4]
+ cmp r0, #0
+ beq _0222BA20
+ sub r0, r0, #1
+ strb r0, [r1, #4]
+ ldr r0, [r5]
+ add r0, r0, r4
+ ldrb r0, [r0, #4]
+ cmp r0, #0
+ bne _0222BA20
+ bl MOD13_0222CD8C
+_0222BA20:
+ add r4, r4, #1
+ cmp r4, #4
+ blt _0222B9EC
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0222BA34: .word 0x022430F4
+
+ arm_func_start MOD13_0222BA38
+MOD13_0222BA38: ; 0x0222BA38
+ ldr r1, _0222BA64 ; =0x022430E4
+ ldr r0, _0222BA68 ; =0x022430F4
+ ldrb r2, [r1]
+ ldr r0, [r0]
+ ldr r1, _0222BA6C ; =0x0223F2EC
+ sub r2, r2, #0xb
+ ldrb r1, [r1, r2]
+ ldr ip, _0222BA70 ; =MOD13_022327DC
+ ldr r0, [r0, #0x10]
+ mov r2, r1
+ bx ip
+ .align 2, 0
+_0222BA64: .word 0x022430E4
+_0222BA68: .word 0x022430F4
+_0222BA6C: .word 0x0223F2EC
+_0222BA70: .word MOD13_022327DC
+
+ arm_func_start MOD13_0222BA74
+MOD13_0222BA74: ; 0x0222BA74
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ bl MOD13_02234164
+ ldr r1, _0222BDA0 ; =0x022430E4
+ mov r4, #0
+ ldrb r2, [r1]
+ cmp r2, #8
+ bne _0222BABC
+ ldrb r0, [r0, #0xf5]
+ cmp r0, #0
+ bne _0222BABC
+ cmp r5, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ cmp r5, #2
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+_0222BABC:
+ cmp r2, #0
+ bgt _0222BAD0
+ cmp r2, #0
+ beq _0222BAF0
+ b _0222BC78
+_0222BAD0:
+ sub r0, r2, #0xa
+ cmp r0, #3
+ addls pc, pc, r0, lsl #2
+ b _0222BC78
+_0222BAE0: ; jump table
+ b _0222BB20 ; case 0
+ b _0222BB5C ; case 1
+ b _0222BBD4 ; case 2
+ b _0222BBD4 ; case 3
+_0222BAF0:
+ cmp r5, #1
+ ldreq r0, _0222BDA0 ; =0x022430E4
+ moveq r1, #0xb
+ streqb r1, [r0]
+ beq _0222BD74
+ cmp r5, #3
+ ldreq r0, _0222BDA4 ; =0x022430EC
+ movne r4, #2
+ ldreqb r1, [r0]
+ addeq r1, r1, #1
+ streqb r1, [r0]
+ b _0222BD74
+_0222BB20:
+ cmp r5, #1
+ ldreq r0, _0222BDA4 ; =0x022430EC
+ ldreqb r1, [r0]
+ subeq r1, r1, #1
+ streqb r1, [r0]
+ beq _0222BD74
+ cmp r5, #3
+ movne r4, #2
+ bne _0222BD74
+ ldr r1, _0222BDA8 ; =0x022430F4
+ ldr r0, _0222BDA0 ; =0x022430E4
+ ldr r1, [r1]
+ ldrb r1, [r1, #0x42]
+ strb r1, [r0]
+ b _0222BD74
+_0222BB5C:
+ cmp r5, #1
+ bne _0222BB9C
+ ldr r0, _0222BDA8 ; =0x022430F4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x47]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _0222BDA8 ; =0x022430F4
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x47]
+ ldmia sp!, {r4, r5, pc}
+_0222BB9C:
+ cmp r5, #3
+ movne r4, #2
+ bne _0222BD74
+ ldr r2, _0222BDA0 ; =0x022430E4
+ mov r3, #0
+ ldr r1, _0222BDA4 ; =0x022430EC
+ ldr r0, _0222BDAC ; =0x022430F0
+ strb r3, [r2]
+ strb r3, [r1]
+ strh r3, [r0]
+ bl MOD13_0222CD8C
+ mov r0, #0
+ bl MOD13_02232F44
+ b _0222BD74
+_0222BBD4:
+ ldr r0, _0222BDA8 ; =0x022430F4
+ cmp r5, #1
+ ldr r1, [r0]
+ strb r2, [r1, #0x42]
+ bne _0222BC1C
+ ldr r2, _0222BDA0 ; =0x022430E4
+ mov ip, #0xa
+ ldr r1, _0222BDA4 ; =0x022430EC
+ mov r5, #3
+ ldr r0, _0222BDAC ; =0x022430F0
+ mov r3, #0x91
+ strb ip, [r2]
+ strb r5, [r1]
+ strh r3, [r0]
+ bl MOD13_0222CD8C
+ mov r0, #0x37
+ bl MOD13_02232F44
+ b _0222BD74
+_0222BC1C:
+ cmp r5, #3
+ bne _0222BC58
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x47]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _0222BDA8 ; =0x022430F4
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x47]
+ ldmia sp!, {r4, r5, pc}
+_0222BC58:
+ cmp r2, #0xc
+ ldreq r0, _0222BDA0 ; =0x022430E4
+ moveq r1, #0xd
+ streqb r1, [r0]
+ ldrne r0, _0222BDA0 ; =0x022430E4
+ movne r1, #0xc
+ strneb r1, [r0]
+ b _0222BD74
+_0222BC78:
+ cmp r5, #1
+ bne _0222BCC8
+ ldr r0, _0222BDA4 ; =0x022430EC
+ ldrb r1, [r0]
+ cmp r1, #0
+ subne r1, r1, #1
+ strneb r1, [r0]
+ bne _0222BD74
+ mov r0, #0x13
+ bl MOD13_0223424C
+ mov r0, #0
+ ldr r1, _0222BDB0 ; =MOD13_0222C0E8
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _0222BDA8 ; =0x022430F4
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ ldmia sp!, {r4, r5, pc}
+_0222BCC8:
+ cmp r5, #3
+ bne _0222BD18
+ ldr r0, _0222BDA4 ; =0x022430EC
+ ldrb r1, [r0]
+ cmp r1, #3
+ addlo r1, r1, #1
+ strlob r1, [r0]
+ blo _0222BD74
+ mov r0, #0x13
+ bl MOD13_0223424C
+ mov r0, #0
+ ldr r1, _0222BDB4 ; =MOD13_0222C03C
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _0222BDA8 ; =0x022430F4
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ ldmia sp!, {r4, r5, pc}
+_0222BD18:
+ cmp r2, #2
+ ldreq r0, _0222BDA0 ; =0x022430E4
+ moveq r1, #3
+ mov r4, #2
+ streqb r1, [r0]
+ beq _0222BD68
+ cmp r2, #3
+ ldreq r0, _0222BDA0 ; =0x022430E4
+ streqb r4, [r0]
+ beq _0222BD68
+ cmp r2, #7
+ ldreq r0, _0222BDA0 ; =0x022430E4
+ moveq r1, #8
+ streqb r1, [r0]
+ beq _0222BD68
+ cmp r2, #8
+ bne _0222BD74
+ ldr r0, _0222BDA0 ; =0x022430E4
+ mov r1, #7
+ strb r1, [r0]
+_0222BD68:
+ mov r0, #8
+ bl MOD13_0223424C
+ bl MOD13_0222BEC0
+_0222BD74:
+ cmp r4, #2
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ mov r0, #8
+ bl MOD13_0223424C
+ cmp r4, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ bl MOD13_0222BDF4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0222BDA0: .word 0x022430E4
+_0222BDA4: .word 0x022430EC
+_0222BDA8: .word 0x022430F4
+_0222BDAC: .word 0x022430F0
+_0222BDB0: .word MOD13_0222C0E8
+_0222BDB4: .word MOD13_0222C03C
+
+ arm_func_start MOD13_0222BDB8
+MOD13_0222BDB8: ; 0x0222BDB8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _0222BDE8 ; =0x022430E4
+ ldr r2, _0222BDEC ; =0x0223F32C
+ strb r0, [r1]
+ ldrb r0, [r2, r0]
+ bl MOD13_0222C1F4
+ ldr r1, _0222BDF0 ; =0x022430EC
+ strb r0, [r1]
+ bl MOD13_0222BEC0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222BDE8: .word 0x022430E4
+_0222BDEC: .word 0x0223F32C
+_0222BDF0: .word 0x022430EC
+
+ arm_func_start MOD13_0222BDF4
+MOD13_0222BDF4: ; 0x0222BDF4
+ stmdb sp!, {r4, lr}
+ ldr r0, _0222BEB0 ; =0x022430E4
+ ldrb r0, [r0]
+ add r0, r0, #0xf5
+ and r0, r0, #0xff
+ cmp r0, #2
+ bhi _0222BE18
+ bl MOD13_0222BEC0
+ ldmia sp!, {r4, pc}
+_0222BE18:
+ bl MOD13_02234164
+ ldr r1, _0222BEB4 ; =0x022430F0
+ mov r4, r0
+ ldrh r0, [r1]
+ mov r1, #0x1d
+ bl FX_DivS32
+ ldr r1, _0222BEB8 ; =0x022430EC
+ ldrb r1, [r1]
+ add r2, r1, r0
+ cmp r2, #2
+ beq _0222BE50
+ cmp r2, #6
+ beq _0222BE74
+ b _0222BE98
+_0222BE50:
+ ldrb r0, [r4, #0xf5]
+ cmp r0, #0
+ ldrne r0, _0222BEB0 ; =0x022430E4
+ movne r1, #2
+ strneb r1, [r0]
+ ldreq r0, _0222BEB0 ; =0x022430E4
+ moveq r1, #3
+ streqb r1, [r0]
+ b _0222BEA8
+_0222BE74:
+ ldrb r0, [r4, #0xf6]
+ cmp r0, #0
+ ldrne r0, _0222BEB0 ; =0x022430E4
+ movne r1, #7
+ strneb r1, [r0]
+ ldreq r0, _0222BEB0 ; =0x022430E4
+ moveq r1, #8
+ streqb r1, [r0]
+ b _0222BEA8
+_0222BE98:
+ ldr r1, _0222BEBC ; =0x0223F314
+ ldr r0, _0222BEB0 ; =0x022430E4
+ ldrb r1, [r1, r2]
+ strb r1, [r0]
+_0222BEA8:
+ bl MOD13_0222BEC0
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222BEB0: .word 0x022430E4
+_0222BEB4: .word 0x022430F0
+_0222BEB8: .word 0x022430EC
+_0222BEBC: .word 0x0223F314
+
+ arm_func_start MOD13_0222BEC0
+MOD13_0222BEC0: ; 0x0222BEC0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x1c
+ ldr ip, _0222BF90 ; =0x0223F338
+ add r3, sp, #8
+ mov r2, #7
+_0222BED4:
+ ldrb r1, [ip], #1
+ ldrb r0, [ip], #1
+ subs r2, r2, #1
+ strb r1, [r3], #1
+ strb r0, [r3], #1
+ bne _0222BED4
+ ldr r0, _0222BF94 ; =0x022430E4
+ add r1, sp, #8
+ ldrb r0, [r0]
+ ldrb r2, [r1, r0]
+ cmp r2, #3
+ blt _0222BF30
+ mov r3, r2, lsl #3
+ ldr r1, _0222BF98 ; =0x0223F3CC
+ ldr r2, _0222BF9C ; =0x0223F3D0
+ ldr r0, _0222BFA0 ; =0x0223F3CE
+ ldrh r1, [r1, r3]
+ ldrh r2, [r2, r3]
+ ldrh r3, [r0, r3]
+ mov r0, #3
+ bl MOD13_0221F348
+ add sp, sp, #0x1c
+ ldmia sp!, {pc}
+_0222BF30:
+ ldr r0, _0222BF98 ; =0x0223F3CC
+ mov r1, r2, lsl #3
+ add lr, r0, r2, lsl #3
+ ldrh ip, [r0, r1]
+ ldrh r1, [lr, #2]
+ ldr r0, _0222BFA4 ; =0x022430EC
+ ldrh r3, [lr, #4]
+ strh r1, [sp, #2]
+ ldrh r2, [sp, #2]
+ ldrb r1, [r0]
+ mov r0, #0x1d
+ strh ip, [sp]
+ mla r0, r1, r0, r2
+ strh r3, [sp, #4]
+ strh r0, [sp, #2]
+ ldrh ip, [lr, #6]
+ ldrh r1, [sp]
+ ldrh r2, [sp, #4]
+ ldrh r3, [sp, #2]
+ mov r0, #1
+ strh ip, [sp, #6]
+ bl MOD13_0221F348
+ add sp, sp, #0x1c
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222BF90: .word 0x0223F338
+_0222BF94: .word 0x022430E4
+_0222BF98: .word 0x0223F3CC
+_0222BF9C: .word 0x0223F3D0
+_0222BFA0: .word 0x0223F3CE
+_0222BFA4: .word 0x022430EC
+
+ arm_func_start MOD13_0222BFA8
+MOD13_0222BFA8: ; 0x0222BFA8
+ stmdb sp!, {r4, lr}
+ ldr r0, _0222C024 ; =0x022430F4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x44]
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r0, _0222C028 ; =0x022430F0
+ mov r1, #0x1d
+ ldrh r0, [r0]
+ bl FX_DivS32
+ ldr r1, _0222C028 ; =0x022430F0
+ mov r4, r0
+ ldrh r0, [r1]
+ mov r1, #0x1d
+ bl FX_ModS32
+ ldr r1, _0222C02C ; =0x01FF0000
+ sub ip, r0, #0x33
+ ldr r2, _0222C030 ; =0x04000010
+ and r3, r1, ip, lsl #16
+ ldr r0, _0222C034 ; =0x0223F320
+ str r3, [r2]
+ ldrb r3, [r0, r4]
+ ldr r2, _0222C038 ; =0x04000018
+ ldr r0, _0222C024 ; =0x022430F4
+ add r3, ip, r3
+ and r1, r1, r3, lsl #16
+ str r1, [r2]
+ ldr r0, [r0]
+ mov r1, #0
+ strb r1, [r0, #0x44]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222C024: .word 0x022430F4
+_0222C028: .word 0x022430F0
+_0222C02C: .word 0x01FF0000
+_0222C030: .word 0x04000010
+_0222C034: .word 0x0223F320
+_0222C038: .word 0x04000018
+
+ arm_func_start MOD13_0222C03C
+MOD13_0222C03C: ; 0x0222C03C
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD13_02232F14
+ bl MOD13_0221F21C
+ ldr r0, _0222C0DC ; =0x022430F0
+ mov r1, #0x1d
+ ldrh r2, [r0]
+ add r2, r2, #6
+ strh r2, [r0]
+ ldrh r0, [r0]
+ bl FX_ModS32
+ cmp r0, #6
+ blt _0222C078
+ bl MOD13_0222C4C8
+ ldmia sp!, {r4, pc}
+_0222C078:
+ ldr r1, _0222C0DC ; =0x022430F0
+ ldrh r2, [r1]
+ sub r0, r2, r0
+ strh r0, [r1]
+ bl MOD13_0222CD8C
+ ldr r1, _0222C0DC ; =0x022430F0
+ mov r0, #0x37
+ ldrh r1, [r1]
+ ldr r2, _0222C0E0 ; =0xE1FC780F
+ mul r3, r1, r0
+ smull r1, r0, r2, r3
+ add r0, r3, r0
+ mov r0, r0, asr #7
+ mov r1, r3, lsr #0x1f
+ add r0, r1, r0
+ bl MOD13_02232F44
+ bl MOD13_02232F2C
+ bl MOD13_0222BDF4
+ ldr r0, _0222C0E4 ; =0x022430F4
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0
+ str r0, [r2, #0x38]
+ bl MOD13_0223C110
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222C0DC: .word 0x022430F0
+_0222C0E0: .word 0xE1FC780F
+_0222C0E4: .word 0x022430F4
+
+ arm_func_start MOD13_0222C0E8
+MOD13_0222C0E8: ; 0x0222C0E8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ bl MOD13_02232F14
+ bl MOD13_0221F21C
+ ldr r0, _0222C1C4 ; =0x022430F0
+ ldrh r1, [r0]
+ cmp r1, #6
+ subhi r1, r1, #6
+ strhih r1, [r0]
+ movls r1, #0
+ strlsh r1, [r0]
+ ldr r0, _0222C1C4 ; =0x022430F0
+ mov r1, #0x1d
+ ldrh r0, [r0]
+ bl FX_ModS32
+ mov r5, r0
+ cmp r5, #0x17
+ bne _0222C140
+ bl MOD13_0222CD8C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0222C140:
+ cmp r5, #0x17
+ ble _0222C160
+ ldr r0, _0222C1C4 ; =0x022430F0
+ rsb r1, r5, #0x1d
+ ldrh r2, [r0]
+ mov r5, #0
+ add r1, r2, r1
+ strh r1, [r0]
+_0222C160:
+ bl MOD13_0222C4C8
+ cmp r5, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ ldr r1, _0222C1C4 ; =0x022430F0
+ mov r0, #0x37
+ ldrh r1, [r1]
+ ldr r2, _0222C1C8 ; =0xE1FC780F
+ mul r3, r1, r0
+ smull r1, r0, r2, r3
+ add r0, r3, r0
+ mov r0, r0, asr #7
+ mov r1, r3, lsr #0x1f
+ add r0, r1, r0
+ bl MOD13_02232F44
+ bl MOD13_02232F2C
+ bl MOD13_0222BDF4
+ ldr r0, _0222C1CC ; =0x022430F4
+ mov r1, r4
+ ldr r2, [r0]
+ mov r0, #0
+ str r0, [r2, #0x38]
+ bl MOD13_0223C110
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0222C1C4: .word 0x022430F0
+_0222C1C8: .word 0xE1FC780F
+_0222C1CC: .word 0x022430F4
+
+ arm_func_start MOD13_0222C1D0
+MOD13_0222C1D0: ; 0x0222C1D0
+ stmdb sp!, {r4, lr}
+ ldr r1, _0222C1F0 ; =0x022430F0
+ mov r4, r0
+ ldrh r0, [r1]
+ mov r1, #0x1d
+ bl FX_DivS32
+ add r0, r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222C1F0: .word 0x022430F0
+
+ arm_func_start MOD13_0222C1F4
+MOD13_0222C1F4: ; 0x0222C1F4
+ stmdb sp!, {r4, lr}
+ ldr r1, _0222C234 ; =0x022430F0
+ mov r4, r0
+ ldrh r0, [r1]
+ mov r1, #0x1d
+ bl FX_DivS32
+ mov r1, #0
+_0222C210:
+ cmp r0, r4
+ moveq r0, r1
+ ldmeqia sp!, {r4, pc}
+ add r1, r1, #1
+ cmp r1, #4
+ add r0, r0, #1
+ blt _0222C210
+ mvn r0, #0
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222C234: .word 0x022430F0
+
+ arm_func_start MOD13_0222C238
+MOD13_0222C238: ; 0x0222C238
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #8
+ ldr r0, _0222C4AC ; =0x0223F75C
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ addeq sp, sp, #8
+ moveq r0, #0xe
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r0, _0222C4B0 ; =0x022430F0
+ mov r1, #0x1d
+ ldrh r0, [r0]
+ bl FX_DivS32
+ ldr r1, _0222C4B4 ; =0x0223F2FC
+ add r4, sp, #0
+ ldrh ip, [r1]
+ ldrh r3, [r1, #2]
+ ldrh r2, [r1, #4]
+ ldrh r1, [r1, #6]
+ mov r5, r0
+ strh ip, [sp]
+ strh r3, [sp, #2]
+ strh r2, [sp, #4]
+ strh r1, [sp, #6]
+ mov r6, #0
+_0222C298:
+ cmp r5, #2
+ beq _0222C2C4
+ cmp r5, #6
+ beq _0222C2C4
+ mov r0, r4
+ bl MOD13_0223B194
+ cmp r0, #0
+ ldrne r0, _0222C4B8 ; =0x0223F314
+ addne sp, sp, #8
+ ldrneb r0, [r0, r5]
+ ldmneia sp!, {r4, r5, r6, pc}
+_0222C2C4:
+ ldrh r0, [sp, #2]
+ add r6, r6, #1
+ cmp r6, #4
+ add r0, r0, #0x1d
+ strh r0, [sp, #2]
+ add r5, r5, #1
+ blt _0222C298
+ ldr r0, _0222C4B0 ; =0x022430F0
+ mov r1, #0x1d
+ ldrh r0, [r0]
+ bl FX_DivS32
+ mov r3, #0
+_0222C2F4:
+ cmp r0, #2
+ bne _0222C398
+ ldr r1, _0222C4BC ; =0x0223F30C
+ mov r0, #0x1d
+ ldrh r2, [r1, #2]
+ mul r4, r3, r0
+ strh r2, [sp, #2]
+ ldrh r5, [r1]
+ ldrh r3, [r1, #4]
+ ldrh r2, [r1, #6]
+ ldrh r0, [sp, #2]
+ strh r5, [sp]
+ strh r3, [sp, #4]
+ add r1, r0, r4
+ add r0, sp, #0
+ strh r2, [sp, #6]
+ strh r1, [sp, #2]
+ bl MOD13_0223B194
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, #2
+ ldmneia sp!, {r4, r5, r6, pc}
+ ldr r1, _0222C4C0 ; =0x0223F304
+ add r0, sp, #0
+ ldrh r2, [r1, #2]
+ ldrh ip, [r1]
+ ldrh r5, [r1, #4]
+ strh r2, [sp, #2]
+ ldrh r3, [r1, #6]
+ ldrh r2, [sp, #2]
+ strh ip, [sp]
+ strh r5, [sp, #4]
+ add r1, r2, r4
+ strh r3, [sp, #6]
+ strh r1, [sp, #2]
+ bl MOD13_0223B194
+ cmp r0, #0
+ beq _0222C3A8
+ add sp, sp, #8
+ mov r0, #3
+ ldmia sp!, {r4, r5, r6, pc}
+_0222C398:
+ add r3, r3, #1
+ cmp r3, #4
+ add r0, r0, #1
+ blt _0222C2F4
+_0222C3A8:
+ ldr r0, _0222C4B0 ; =0x022430F0
+ mov r1, #0x1d
+ ldrh r0, [r0]
+ bl FX_DivS32
+ mov r3, #0
+_0222C3BC:
+ cmp r0, #6
+ bne _0222C460
+ ldr r1, _0222C4BC ; =0x0223F30C
+ mov r0, #0x1d
+ ldrh r2, [r1, #2]
+ mul r4, r3, r0
+ strh r2, [sp, #2]
+ ldrh r5, [r1]
+ ldrh r3, [r1, #4]
+ ldrh r2, [r1, #6]
+ ldrh r0, [sp, #2]
+ strh r5, [sp]
+ strh r3, [sp, #4]
+ add r1, r0, r4
+ add r0, sp, #0
+ strh r2, [sp, #6]
+ strh r1, [sp, #2]
+ bl MOD13_0223B194
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, #7
+ ldmneia sp!, {r4, r5, r6, pc}
+ ldr r1, _0222C4C0 ; =0x0223F304
+ add r0, sp, #0
+ ldrh r2, [r1, #2]
+ ldrh ip, [r1]
+ ldrh r5, [r1, #4]
+ strh r2, [sp, #2]
+ ldrh r3, [r1, #6]
+ ldrh r2, [sp, #2]
+ strh ip, [sp]
+ strh r5, [sp, #4]
+ add r1, r2, r4
+ strh r3, [sp, #6]
+ strh r1, [sp, #2]
+ bl MOD13_0223B194
+ cmp r0, #0
+ beq _0222C470
+ add sp, sp, #8
+ mov r0, #8
+ ldmia sp!, {r4, r5, r6, pc}
+_0222C460:
+ add r3, r3, #1
+ cmp r3, #4
+ add r0, r0, #1
+ blt _0222C3BC
+_0222C470:
+ ldr r5, _0222C4C4 ; =0x0223F3B4
+ mov r4, #0
+_0222C478:
+ mov r0, r5
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ addne sp, sp, #8
+ addne r0, r4, #0xb
+ ldmneia sp!, {r4, r5, r6, pc}
+ add r4, r4, #1
+ cmp r4, #3
+ add r5, r5, #8
+ blt _0222C478
+ mov r0, #0xe
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_0222C4AC: .word 0x0223F75C
+_0222C4B0: .word 0x022430F0
+_0222C4B4: .word 0x0223F2FC
+_0222C4B8: .word 0x0223F314
+_0222C4BC: .word 0x0223F30C
+_0222C4C0: .word 0x0223F304
+_0222C4C4: .word 0x0223F3B4
+
+ arm_func_start MOD13_0222C4C8
+MOD13_0222C4C8: ; 0x0222C4C8
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ sub sp, sp, #8
+ ldr r0, _0222C6EC ; =0x022430F0
+ mov r1, #0x1d
+ ldrh r0, [r0]
+ bl FX_DivS32
+ ldr r1, _0222C6EC ; =0x022430F0
+ mov r4, r0
+ ldrh r0, [r1]
+ mov r1, #0x1d
+ bl FX_ModS32
+ ldr r1, _0222C6F0 ; =0x022430F4
+ rsb ip, r0, #0x34
+ ldr r1, [r1]
+ ldr r0, [r1, #0x34]
+ cmp r0, #0
+ beq _0222C54C
+ cmp r4, #0
+ moveq r0, #0x26
+ streq r0, [sp]
+ movne r0, #0x100
+ strne r0, [sp]
+ ldr r5, [r1, #0x34]
+ ldr r1, _0222C6F4 ; =0xFE00FF00
+ ldr r2, [r5]
+ ldr r3, [sp]
+ ldr r0, _0222C6F8 ; =0x000001FF
+ and r2, r2, r1
+ and r1, ip, #0xff
+ and r3, r3, r0
+ orr r0, r2, r1
+ orr r0, r0, r3, lsl #16
+ str r0, [r5]
+_0222C54C:
+ mov r3, ip
+ mov r2, #0
+ ldr r7, _0222C6F0 ; =0x022430F4
+ ldr lr, _0222C6FC ; =0x01FF0000
+ ldr r5, _0222C6F8 ; =0x000001FF
+ ldr r6, _0222C6F4 ; =0xFE00FF00
+_0222C564:
+ ldr r0, [r7]
+ and r8, r3, #0xff
+ add r1, r0, r2, lsl #2
+ ldr r0, [r1, #0x18]
+ add r2, r2, #1
+ ldr sb, [r0]
+ cmp r2, #5
+ and sl, sb, lr
+ mov sb, sl, lsr #0x10
+ str sb, [sp]
+ ldr sb, [r0]
+ and r0, r5, sl, lsr #16
+ and sb, sb, #0xff
+ str sb, [sp, #4]
+ ldr r1, [r1, #0x18]
+ add r3, r3, #0x1d
+ ldr sb, [r1]
+ and sb, sb, r6
+ orr r8, sb, r8
+ orr r0, r8, r0, lsl #16
+ str r0, [r1]
+ blt _0222C564
+ cmp r4, #2
+ bgt _0222C624
+ ldr r6, [r7]
+ ldr r0, _0222C6FC ; =0x01FF0000
+ ldr r5, [r6, #0x2c]
+ rsb r2, r4, #2
+ ldr r3, [r5]
+ mov r1, #0x1d
+ and r0, r3, r0
+ mov r3, r0, lsr #0x10
+ str r3, [sp]
+ ldr r5, [r5]
+ mla r3, r2, r1, ip
+ and r1, r5, #0xff
+ str r1, [sp, #4]
+ ldr r6, [r6, #0x2c]
+ ldr r1, _0222C6F8 ; =0x000001FF
+ ldr r5, [r6]
+ ldr r2, _0222C6F4 ; =0xFE00FF00
+ and r3, r3, #0xff
+ and r2, r5, r2
+ and r1, r1, r0, lsr #16
+ orr r0, r2, r3
+ orr r0, r0, r1, lsl #16
+ str r0, [r6]
+ b _0222C640
+_0222C624:
+ ldr r1, [r7]
+ ldr r0, _0222C6F4 ; =0xFE00FF00
+ ldr r2, [r1, #0x2c]
+ ldr r1, [r2]
+ and r0, r1, r0
+ orr r0, r0, #0x1000000
+ str r0, [r2]
+_0222C640:
+ cmp r4, #2
+ blt _0222C6B4
+ cmp r4, #6
+ bgt _0222C6B4
+ ldr r0, _0222C6F0 ; =0x022430F4
+ ldr r1, _0222C6FC ; =0x01FF0000
+ ldr r0, [r0]
+ rsb r3, r4, #6
+ ldr r6, [r0, #0x30]
+ mov r2, #0x1d
+ ldr r4, [r6]
+ mla r2, r3, r2, ip
+ and r5, r4, r1
+ mov r1, r5, lsr #0x10
+ str r1, [sp]
+ ldr r3, [r6]
+ ldr r1, _0222C6F4 ; =0xFE00FF00
+ and r3, r3, #0xff
+ str r3, [sp, #4]
+ ldr r4, [r0, #0x30]
+ ldr r0, _0222C6F8 ; =0x000001FF
+ ldr r3, [r4]
+ and r2, r2, #0xff
+ and r1, r3, r1
+ and r3, r0, r5, lsr #16
+ orr r0, r1, r2
+ orr r0, r0, r3, lsl #16
+ str r0, [r4]
+ b _0222C6D4
+_0222C6B4:
+ ldr r1, _0222C6F0 ; =0x022430F4
+ ldr r0, _0222C6F4 ; =0xFE00FF00
+ ldr r1, [r1]
+ ldr r2, [r1, #0x30]
+ ldr r1, [r2]
+ and r0, r1, r0
+ orr r0, r0, #0x1000000
+ str r0, [r2]
+_0222C6D4:
+ ldr r0, _0222C6F0 ; =0x022430F4
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x44]
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_0222C6EC: .word 0x022430F0
+_0222C6F0: .word 0x022430F4
+_0222C6F4: .word 0xFE00FF00
+_0222C6F8: .word 0x000001FF
+_0222C6FC: .word 0x01FF0000
+
+ arm_func_start MOD13_0222C700
+MOD13_0222C700: ; 0x0222C700
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x30
+ mov ip, r0
+ ldrb r2, [ip, #1]
+ mov r4, r1
+ add r0, sp, #0xc
+ str r2, [sp]
+ ldrb r3, [ip, #2]
+ ldr r2, _0222C780 ; =0x02240278
+ mov r1, #0x10
+ str r3, [sp, #4]
+ ldrb r3, [ip, #3]
+ str r3, [sp, #8]
+ ldrb r3, [ip]
+ bl swprintf
+ mov r2, #7
+ mov r0, #0x1d
+ mul r1, r4, r0
+ str r2, [sp]
+ add r0, sp, #0xc
+ str r0, [sp, #4]
+ mov r2, #1
+ str r2, [sp, #8]
+ ldr r0, _0222C784 ; =0x022430F4
+ add r2, r1, #8
+ ldr r0, [r0]
+ mov r1, #0x5f
+ ldr r0, [r0, #0x14]
+ mov r3, #2
+ bl MOD13_0223A528
+ add sp, sp, #0x30
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222C780: .word 0x02240278
+_0222C784: .word 0x022430F4
+
+ arm_func_start MOD13_0222C788
+MOD13_0222C788: ; 0x0222C788
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x30
+ mov r6, r0
+ mov r4, r1
+ add r0, sp, #0xc
+ mov r1, #0
+ mov r2, #0x22
+ bl MI_CpuFill8
+ mov r0, r6
+ mov r1, #0x20
+ bl MOD13_0223BDA4
+ mov r5, r0
+ cmp r5, #0x10
+ movle lr, r5
+ movgt lr, #0x10
+ cmp lr, #0
+ mov ip, #0
+ ble _0222C7FC
+ ldr r2, _0222C8DC ; =0x0000E01D
+ add r1, sp, #0xc
+_0222C7D8:
+ ldrb r3, [r6, ip]
+ cmp r3, #0x20
+ moveq r0, ip, lsl #1
+ streqh r2, [r1, r0]
+ movne r0, ip, lsl #1
+ add ip, ip, #1
+ strneh r3, [r1, r0]
+ cmp ip, lr
+ blt _0222C7D8
+_0222C7FC:
+ mov r0, #0x1d
+ mul r0, r4, r0
+ mov r1, #8
+ add r4, r0, #2
+ str r1, [sp]
+ add r0, sp, #0xc
+ str r0, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ ldr r0, _0222C8E0 ; =0x022430F4
+ cmp r5, #0x10
+ ldr r0, [r0]
+ addle r4, r4, #5
+ ldr r0, [r0, #0x14]
+ mov r2, r4
+ mov r1, #0x48
+ mov r3, #2
+ bl MOD13_0223A528
+ cmp r5, #0x10
+ addle sp, sp, #0x30
+ ldmleia sp!, {r4, r5, r6, pc}
+ add r0, sp, #0xc
+ mov r1, #0
+ mov r2, #0x22
+ bl MI_CpuFill8
+ sub ip, r5, #0x10
+ cmp ip, #0
+ mov r5, #0
+ ble _0222C8A0
+ ldr r2, _0222C8DC ; =0x0000E01D
+ add r1, sp, #0xc
+_0222C878:
+ add r0, r5, #0x10
+ ldrb r3, [r6, r0]
+ cmp r3, #0x20
+ moveq r0, r5, lsl #1
+ streqh r2, [r1, r0]
+ movne r0, r5, lsl #1
+ add r5, r5, #1
+ strneh r3, [r1, r0]
+ cmp r5, ip
+ blt _0222C878
+_0222C8A0:
+ mov r1, #8
+ str r1, [sp]
+ add r0, sp, #0xc
+ str r0, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ ldr r0, _0222C8E0 ; =0x022430F4
+ add r2, r4, #0xc
+ ldr r0, [r0]
+ mov r1, #0x48
+ ldr r0, [r0, #0x14]
+ mov r3, #2
+ bl MOD13_0223A528
+ add sp, sp, #0x30
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_0222C8DC: .word 0x0000E01D
+_0222C8E0: .word 0x022430F4
+
+ arm_func_start MOD13_0222C8E4
+MOD13_0222C8E4: ; 0x0222C8E4
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x10
+ ldr r5, _0222C9EC ; =0x0223F2FC
+ ldr r4, _0222C9F0 ; =0x0223F30C
+ ldr r3, _0222C9F4 ; =0x0223F304
+ ldrh ip, [r4]
+ ldrh r4, [r3]
+ ldr r3, _0222C9F8 ; =0x022430F4
+ ldrh lr, [r5]
+ ldr r3, [r3]
+ mov r6, r0
+ add r3, r3, #0x18
+ sub r0, r6, #1
+ mov r5, r1
+ strh lr, [sp]
+ strh ip, [sp, #2]
+ strh ip, [sp, #4]
+ strh r4, [sp, #6]
+ strh r4, [sp, #8]
+ cmp r0, #1
+ add r4, r3, r2, lsl #2
+ bhi _0222C960
+ mov r0, r2
+ bl MOD13_0222C1D0
+ cmp r0, #2
+ ldreq r0, _0222C9F8 ; =0x022430F4
+ ldreq r0, [r0]
+ addeq r4, r0, #0x2c
+ ldrne r0, _0222C9F8 ; =0x022430F4
+ ldrne r0, [r0]
+ addne r4, r0, #0x30
+_0222C960:
+ ldr r1, _0222C9FC ; =0x0223F348
+ mov r0, #3
+ mla r0, r6, r0, r1
+ ldrb r1, [r5, r0]
+ cmp r1, #0
+ beq _0222C9CC
+ ldr r2, [r4]
+ mov r0, #0
+ bl MOD13_02239E8C
+ ldr r5, [r4]
+ add r0, sp, #0
+ mov r1, r6, lsl #1
+ ldrh r3, [r0, r1]
+ ldr r0, _0222CA00 ; =0x000001FF
+ ldr r2, [r5]
+ ldr r1, _0222CA04 ; =0xFE00FF00
+ and r3, r3, r0
+ and r0, r2, r1
+ orr r0, r0, r3, lsl #16
+ str r0, [r5]
+ ldr r1, [r4]
+ add sp, sp, #0x10
+ ldrh r0, [r1, #4]
+ bic r0, r0, #0xc00
+ orr r0, r0, #0xc00
+ strh r0, [r1, #4]
+ ldmia sp!, {r4, r5, r6, pc}
+_0222C9CC:
+ ldr r2, [r4]
+ ldr r0, _0222CA04 ; =0xFE00FF00
+ ldr r1, [r2]
+ and r0, r1, r0
+ orr r0, r0, #0x1000000
+ str r0, [r2]
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_0222C9EC: .word 0x0223F2FC
+_0222C9F0: .word 0x0223F30C
+_0222C9F4: .word 0x0223F304
+_0222C9F8: .word 0x022430F4
+_0222C9FC: .word 0x0223F348
+_0222CA00: .word 0x000001FF
+_0222CA04: .word 0xFE00FF00
+
+ arm_func_start MOD13_0222CA08
+MOD13_0222CA08: ; 0x0222CA08
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD13_02234164
+ cmp r4, #0xa
+ mov r1, #1
+ addls pc, pc, r4, lsl #2
+ b _0222CA94
+_0222CA24: ; jump table
+ b _0222CA60 ; case 0
+ b _0222CA60 ; case 1
+ b _0222CA94 ; case 2
+ b _0222CA94 ; case 3
+ b _0222CA78 ; case 4
+ b _0222CA78 ; case 5
+ b _0222CA78 ; case 6
+ b _0222CA50 ; case 7
+ b _0222CA94 ; case 8
+ b _0222CA88 ; case 9
+ b _0222CA88 ; case 10
+_0222CA50:
+ ldrb r0, [r0, #0xf5]
+ cmp r0, #0
+ moveq r1, #0
+ b _0222CA94
+_0222CA60:
+ ldrb r0, [r0, #0xe7]
+ add r0, r0, #0xff
+ and r0, r0, #0xff
+ cmp r0, #1
+ movls r1, #0
+ b _0222CA94
+_0222CA78:
+ ldrb r0, [r0, #0xf5]
+ cmp r0, #0
+ movne r1, #0
+ b _0222CA94
+_0222CA88:
+ ldrb r0, [r0, #0xf6]
+ cmp r0, #0
+ movne r1, #0
+_0222CA94:
+ mov r0, r1
+ ldmia sp!, {r4, pc}
+
+ arm_func_start MOD13_0222CA9C
+MOD13_0222CA9C: ; 0x0222CA9C
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r4, r0
+ mov r6, r1
+ bl MOD13_02234164
+ cmp r4, #8
+ addls pc, pc, r4, lsl #2
+ b _0222CBD0
+_0222CAB8: ; jump table
+ b _0222CADC ; case 0
+ b _0222CADC ; case 1
+ b _0222CAF8 ; case 2
+ b _0222CB44 ; case 3
+ b _0222CB44 ; case 4
+ b _0222CB44 ; case 5
+ b _0222CB5C ; case 6
+ b _0222CBB8 ; case 7
+ b _0222CBB8 ; case 8
+_0222CADC:
+ mov r5, #0
+ mov r0, r5
+ mov r4, r5
+ bl MOD13_0222CA08
+ cmp r0, #0
+ moveq r4, #2
+ b _0222CBD8
+_0222CAF8:
+ ldr r2, _0222CBEC ; =0x022430F4
+ ldrb r0, [r0, #0xf5]
+ ldr r3, [r2]
+ mov r1, #0
+ ldrb r2, [r3, #4]
+ cmp r0, #0
+ movne r5, #1
+ movne r0, #4
+ moveq r5, #2
+ moveq r0, #3
+ cmp r2, #0
+ mov r4, r1
+ ldrb r2, [r3, #5]
+ movne r4, #1
+ cmp r2, #0
+ movne r1, #1
+ mov r2, r6
+ bl MOD13_0222C8E4
+ b _0222CBD8
+_0222CB44:
+ ldrb r0, [r0, #0xf5]
+ mov r5, #0
+ cmp r0, #0
+ movne r4, #2
+ moveq r4, r5
+ b _0222CBD8
+_0222CB5C:
+ ldrb r2, [r0, #0xf6]
+ mov r1, #0
+ mov r4, r1
+ cmp r2, #0
+ movne r5, #1
+ movne r0, #4
+ bne _0222CB8C
+ ldrb r0, [r0, #0xf5]
+ mov r5, #2
+ cmp r0, #0
+ moveq r4, #2
+ mov r0, #3
+_0222CB8C:
+ ldr r2, _0222CBEC ; =0x022430F4
+ ldr r3, [r2]
+ ldrb r2, [r3, #6]
+ cmp r2, #0
+ ldrb r2, [r3, #7]
+ movne r4, #1
+ cmp r2, #0
+ movne r1, #1
+ mov r2, r6
+ bl MOD13_0222C8E4
+ b _0222CBD8
+_0222CBB8:
+ ldrb r0, [r0, #0xf6]
+ mov r5, #0
+ cmp r0, #0
+ movne r4, #2
+ moveq r4, r5
+ b _0222CBD8
+_0222CBD0:
+ mov r5, #0
+ mov r4, #2
+_0222CBD8:
+ mov r0, r5
+ mov r1, r4
+ mov r2, r6
+ bl MOD13_0222C8E4
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_0222CBEC: .word 0x022430F4
+
+ arm_func_start MOD13_0222CBF0
+MOD13_0222CBF0: ; 0x0222CBF0
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x28
+ mov r6, r0
+ mov r5, r1
+ bl MOD13_02234164
+ cmp r6, #8
+ addls pc, pc, r6, lsl #2
+ b _0222CD84
+_0222CC10: ; jump table
+ b _0222CC34 ; case 0
+ b _0222CC48 ; case 1
+ b _0222CD84 ; case 2
+ b _0222CCD8 ; case 3
+ b _0222CCFC ; case 4
+ b _0222CD20 ; case 5
+ b _0222CD84 ; case 6
+ b _0222CD44 ; case 7
+ b _0222CD68 ; case 8
+_0222CC34:
+ mov r1, r5
+ add r0, r0, #0x40
+ bl MOD13_0222C788
+ add sp, sp, #0x28
+ ldmia sp!, {r4, r5, r6, pc}
+_0222CC48:
+ ldrb r1, [r0, #0xe6]
+ mov r1, r1, lsl #0x1e
+ mov r1, r1, lsr #0x1e
+ cmp r1, #3
+ addls pc, pc, r1, lsl #2
+ b _0222CC8C
+_0222CC60: ; jump table
+ b _0222CC70 ; case 0
+ b _0222CC78 ; case 1
+ b _0222CC80 ; case 2
+ b _0222CC88 ; case 3
+_0222CC70:
+ add sp, sp, #0x28
+ ldmia sp!, {r4, r5, r6, pc}
+_0222CC78:
+ mov r4, #0xa
+ b _0222CC8C
+_0222CC80:
+ mov r4, #0x1a
+ b _0222CC8C
+_0222CC88:
+ mov r4, #0x20
+_0222CC8C:
+ ldrb r0, [r0, #0xe6]
+ mov r1, #0
+ mov r2, #0x21
+ mov r0, r0, lsl #0x18
+ mov r0, r0, lsr #0x1a
+ cmp r0, #1
+ addeq r0, r4, r4, lsr #31
+ moveq r4, r0, asr #1
+ add r0, sp, #0
+ bl MI_CpuFill8
+ add r0, sp, #0
+ mov r2, r4
+ mov r1, #0x2a
+ bl Call_FillMemWithValue
+ add r0, sp, #0
+ mov r1, r5
+ bl MOD13_0222C788
+ add sp, sp, #0x28
+ ldmia sp!, {r4, r5, r6, pc}
+_0222CCD8:
+ ldrb r1, [r0, #0xf5]
+ cmp r1, #0
+ addne sp, sp, #0x28
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r1, r5
+ add r0, r0, #0xc0
+ bl MOD13_0222C700
+ add sp, sp, #0x28
+ ldmia sp!, {r4, r5, r6, pc}
+_0222CCFC:
+ ldrb r1, [r0, #0xf5]
+ cmp r1, #0
+ addne sp, sp, #0x28
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r1, r5
+ add r0, r0, #0xf0
+ bl MOD13_0222C700
+ add sp, sp, #0x28
+ ldmia sp!, {r4, r5, r6, pc}
+_0222CD20:
+ ldrb r1, [r0, #0xf5]
+ cmp r1, #0
+ addne sp, sp, #0x28
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r1, r5
+ add r0, r0, #0xc4
+ bl MOD13_0222C700
+ add sp, sp, #0x28
+ ldmia sp!, {r4, r5, r6, pc}
+_0222CD44:
+ ldrb r1, [r0, #0xf6]
+ cmp r1, #0
+ addne sp, sp, #0x28
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r1, r5
+ add r0, r0, #0xc8
+ bl MOD13_0222C700
+ add sp, sp, #0x28
+ ldmia sp!, {r4, r5, r6, pc}
+_0222CD68:
+ ldrb r1, [r0, #0xf6]
+ cmp r1, #0
+ addne sp, sp, #0x28
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r1, r5
+ add r0, r0, #0xcc
+ bl MOD13_0222C700
+_0222CD84:
+ add sp, sp, #0x28
+ ldmia sp!, {r4, r5, r6, pc}
+
+ arm_func_start MOD13_0222CD8C
+MOD13_0222CD8C: ; 0x0222CD8C
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r0, _0222CE44 ; =0x022430F0
+ mov r1, #0x1d
+ ldrh r0, [r0]
+ bl FX_DivS32
+ ldr r1, _0222CE48 ; =0x022430F4
+ mov r4, r0
+ ldr r0, [r1]
+ mov r1, #0
+ ldr r0, [r0, #0x14]
+ bl MOD13_0223A4D8
+ mov r6, r4
+ mov r5, #0
+_0222CDC0:
+ mov r0, r6
+ mov r1, r5
+ bl MOD13_0222CBF0
+ add r5, r5, #1
+ cmp r5, #5
+ add r6, r6, #1
+ blt _0222CDC0
+ ldr r0, _0222CE48 ; =0x022430F4
+ ldr r1, _0222CE4C ; =0x0223F358
+ mov r2, r4, lsl #1
+ ldr r3, [r0]
+ ldrh r0, [r1, r2]
+ ldr r2, [r3, #8]
+ mov r1, #0
+ add r0, r2, r0, lsl #1
+ mov r2, #0x1e
+ mov r3, #0x13
+ bl MOD13_02232878
+ mov r5, #0
+_0222CE0C:
+ mov r0, r4
+ mov r1, r5
+ bl MOD13_0222CA9C
+ add r5, r5, #1
+ cmp r5, #5
+ add r4, r4, #1
+ blt _0222CE0C
+ bl MOD13_022328D0
+ ldr r0, _0222CE48 ; =0x022430F4
+ ldr r0, [r0]
+ ldr r0, [r0, #0x14]
+ bl MOD13_0223A410
+ bl MOD13_0222C4C8
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_0222CE44: .word 0x022430F0
+_0222CE48: .word 0x022430F4
+_0222CE4C: .word 0x0223F358
+
+ arm_func_start MOD13_0222CE50
+MOD13_0222CE50: ; 0x0222CE50
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ ldr r1, _0222D130 ; =0x022430F4
+ mov r0, #0
+ ldr r1, [r1]
+ ldr r1, [r1]
+ bl MOD13_0223C104
+ ldr r1, _0222D130 ; =0x022430F4
+ mov r0, #1
+ ldr r1, [r1]
+ ldr r1, [r1, #0x3c]
+ bl MOD13_0223C104
+ mov r5, #0
+ ldr r4, _0222D130 ; =0x022430F4
+_0222CEB0:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0x18]
+ bl MOD13_0223B974
+ add r5, r5, #1
+ cmp r5, #7
+ blt _0222CEB0
+ ldr r0, _0222D130 ; =0x022430F4
+ ldr r0, [r0]
+ ldr r0, [r0, #0x34]
+ cmp r0, #0
+ beq _0222CEE4
+ bl MOD13_0223B974
+_0222CEE4:
+ bl MOD13_02232F78
+ mov r0, #0
+ bl MOD13_0223A65C
+ bl MOD13_0221F21C
+ ldr r0, _0222D130 ; =0x022430F4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x40]
+ cmp r0, #0xc
+ beq _0222CF0C
+ bl MOD13_0221EE54
+_0222CF0C:
+ bl MOD13_022328E8
+ ldr r0, _0222D130 ; =0x022430F4
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ bl MOD13_0223939C
+ mov r5, #0
+ ldr r4, _0222D130 ; =0x022430F4
+_0222CF28:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0xc]
+ bl MOD13_0223939C
+ add r5, r5, #1
+ cmp r5, #2
+ blt _0222CF28
+ ldr r0, _0222D134 ; =0x02240298
+ ldr r1, _0222D138 ; =0x020C9480
+ bl MOD13_0221F174
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x1d
+ bl MOD13_0223AE98
+ ldr r2, _0222D13C ; =0x04000010
+ mov r1, #0
+ ldr r0, _0222D140 ; =0x04000018
+ str r1, [r2]
+ str r1, [r0]
+ ldr r3, _0222D144 ; =0x0400000C
+ ldr r0, _0222D130 ; =0x022430F4
+ ldrh r2, [r3]
+ and r2, r2, #0x43
+ orr r2, r2, #0xe10
+ strh r2, [r3]
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x40]
+ cmp r0, #0xd
+ addls pc, pc, r0, lsl #2
+ b _0222D120
+_0222CFA8: ; jump table
+ b _0222CFE0 ; case 0
+ b _0222CFE0 ; case 1
+ b _0222D120 ; case 2
+ b _0222D120 ; case 3
+ b _0222CFFC ; case 4
+ b _0222CFFC ; case 5
+ b _0222CFFC ; case 6
+ b _0222D120 ; case 7
+ b _0222D120 ; case 8
+ b _0222CFFC ; case 9
+ b _0222CFFC ; case 10
+ b _0222D02C ; case 11
+ b _0222D0C4 ; case 12
+ b _0222D0D8 ; case 13
+_0222CFE0:
+ bl MOD13_02222F6C
+ mov r0, #2
+ mov r1, #0
+ bl MOD13_02222FA8
+ ldr r0, _0222D148 ; =MOD13_0222A190
+ bl MOD13_02222FBC
+ b _0222D120
+_0222CFFC:
+ sub r4, r0, #4
+ cmp r0, #9
+ subhs r4, r4, #2
+ mov r0, #2
+ mov r1, #0
+ bl MOD13_02222FA8
+ mov r0, r4
+ mov r1, #0
+ bl MOD13_02222F6C
+ ldr r0, _0222D14C ; =MOD13_0222AF48
+ bl MOD13_02222FBC
+ b _0222D120
+_0222D02C:
+ bl MOD13_02234164
+ mov r4, r0
+ add r0, r4, #0xf0
+ bl FUN_02095BE0
+ strb r0, [r4, #0xd0]
+ ldrb r0, [r4, #0xf5]
+ cmp r0, #0
+ beq _0222D084
+ add r0, r4, #0xc0
+ mov r1, #0
+ mov r2, #4
+ bl MI_CpuFill8
+ add r0, r4, #0xc4
+ mov r1, #0
+ mov r2, #4
+ bl MI_CpuFill8
+ add r0, r4, #0xf0
+ mov r1, #0
+ mov r2, #4
+ bl MI_CpuFill8
+ mov r0, #0
+ strb r0, [r4, #0xd0]
+_0222D084:
+ ldrb r0, [r4, #0xf6]
+ cmp r0, #0
+ beq _0222D0A0
+ add r0, r4, #0xc8
+ mov r1, #0
+ mov r2, #8
+ bl MI_CpuFill8
+_0222D0A0:
+ mov r0, #2
+ mov r1, #0
+ bl MOD13_02222FA8
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222F6C
+ ldr r0, _0222D150 ; =MOD13_022313C8
+ bl MOD13_02222FBC
+ b _0222D120
+_0222D0C4:
+ mov r0, r1
+ bl MOD13_02222FA8
+ ldr r0, _0222D154 ; =MOD13_0222E1B0
+ bl MOD13_02222FBC
+ b _0222D120
+_0222D0D8:
+ ldr r0, _0222D158 ; =0x022430E8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222D100
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _0222D15C ; =MOD13_02230714
+ bl MOD13_02222FBC
+ b _0222D120
+_0222D100:
+ bl MOD13_02234164
+ ldrb r0, [r0, #0xf4]
+ bl MOD13_02233C24
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _0222D160 ; =MOD13_02230EC4
+ bl MOD13_02222FBC
+_0222D120:
+ ldr r0, _0222D130 ; =0x022430F4
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0222D130: .word 0x022430F4
+_0222D134: .word 0x02240298
+_0222D138: .word 0x020C9480
+_0222D13C: .word 0x04000010
+_0222D140: .word 0x04000018
+_0222D144: .word 0x0400000C
+_0222D148: .word MOD13_0222A190
+_0222D14C: .word MOD13_0222AF48
+_0222D150: .word MOD13_022313C8
+_0222D154: .word MOD13_0222E1B0
+_0222D158: .word 0x022430E8
+_0222D15C: .word MOD13_02230714
+_0222D160: .word MOD13_02230EC4
+
+ arm_func_start MOD13_0222D164
+MOD13_0222D164: ; 0x0222D164
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x1d
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _0222D1B8 ; =MOD13_0222CE50
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222D1B8: .word MOD13_0222CE50
+
+ arm_func_start MOD13_0222D1BC
+MOD13_0222D1BC: ; 0x0222D1BC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02232F14
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _0222D1E0 ; =MOD13_0222D164
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222D1E0: .word MOD13_0222D164
+
+ arm_func_start MOD13_0222D1E4
+MOD13_0222D1E4: ; 0x0222D1E4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222D484 ; =0x022430F4
+ ldr r1, [r0]
+ ldr r0, [r1, #0x38]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldrb r0, [r1, #0x41]
+ cmp r0, #0
+ subne r0, r0, #1
+ strneb r0, [r1, #0x41]
+ bl MOD13_02232F50
+ cmp r0, #7
+ addls pc, pc, r0, lsl #2
+ b _0222D47C
+_0222D224: ; jump table
+ b _0222D47C ; case 0
+ b _0222D244 ; case 1
+ b _0222D25C ; case 2
+ b _0222D2BC ; case 3
+ b _0222D37C ; case 4
+ b _0222D46C ; case 5
+ b _0222D3F4 ; case 6
+ b _0222D46C ; case 7
+_0222D244:
+ ldr r0, _0222D484 ; =0x022430F4
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x45]
+ ldmia sp!, {pc}
+_0222D25C:
+ ldr r0, _0222D484 ; =0x022430F4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x41]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221F21C
+ bl MOD13_02232F64
+ mov r1, #0x91
+ mul r1, r0, r1
+ ldr r2, _0222D488 ; =0x094F2095
+ mov r0, r1, lsr #0x1f
+ smull r1, r3, r2, r1
+ mov r3, r3, asr #1
+ ldr r1, _0222D48C ; =0x022430F0
+ add r3, r0, r3
+ strh r3, [r1]
+ bl MOD13_0222CD8C
+ ldr r0, _0222D484 ; =0x022430F4
+ mov r1, #4
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x41]
+ ldmia sp!, {pc}
+_0222D2BC:
+ ldr r0, _0222D484 ; =0x022430F4
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x45]
+ bl MOD13_02232F64
+ mov r1, #0x91
+ mul r1, r0, r1
+ ldr r2, _0222D488 ; =0x094F2095
+ mov r0, r1, lsr #0x1f
+ smull r1, r3, r2, r1
+ mov r3, r3, asr #1
+ ldr r1, _0222D48C ; =0x022430F0
+ add r3, r0, r3
+ mov r0, #0x13
+ strh r3, [r1]
+ bl MOD13_0223424C
+ bl MOD13_0222CD8C
+ ldr r0, _0222D48C ; =0x022430F0
+ mov r1, #0x1d
+ ldrh r0, [r0]
+ bl FX_ModS32
+ cmp r0, #0
+ bne _0222D324
+ bl MOD13_0222BDF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222D324:
+ cmp r0, #0x10
+ bge _0222D354
+ mov r0, #0
+ ldr r1, _0222D490 ; =MOD13_0222C0E8
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _0222D484 ; =0x022430F4
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ ldmia sp!, {pc}
+_0222D354:
+ mov r0, #0
+ ldr r1, _0222D494 ; =MOD13_0222C03C
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _0222D484 ; =0x022430F4
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ ldmia sp!, {pc}
+_0222D37C:
+ ldr r0, _0222D48C ; =0x022430F0
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _0222D3C4
+ ldr r0, _0222D484 ; =0x022430F4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x46]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _0222D484 ; =0x022430F4
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x46]
+ ldmia sp!, {pc}
+_0222D3C4:
+ mov r0, #0x13
+ bl MOD13_0223424C
+ mov r0, #0
+ ldr r1, _0222D490 ; =MOD13_0222C0E8
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _0222D484 ; =0x022430F4
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ ldmia sp!, {pc}
+_0222D3F4:
+ ldr r0, _0222D48C ; =0x022430F0
+ ldrh r0, [r0]
+ cmp r0, #0x91
+ bne _0222D43C
+ ldr r0, _0222D484 ; =0x022430F4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x46]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _0222D484 ; =0x022430F4
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x46]
+ ldmia sp!, {pc}
+_0222D43C:
+ mov r0, #0x13
+ bl MOD13_0223424C
+ mov r0, #0
+ ldr r1, _0222D494 ; =MOD13_0222C03C
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _0222D484 ; =0x022430F4
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ ldmia sp!, {pc}
+_0222D46C:
+ ldr r0, _0222D484 ; =0x022430F4
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x46]
+_0222D47C:
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222D484: .word 0x022430F4
+_0222D488: .word 0x094F2095
+_0222D48C: .word 0x022430F0
+_0222D490: .word MOD13_0222C0E8
+_0222D494: .word MOD13_0222C03C
+
+ arm_func_start MOD13_0222D498
+MOD13_0222D498: ; 0x0222D498
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD13_02234164
+ ldrb r0, [r0, #0xf6]
+ cmp r0, r4
+ ldmeqia sp!, {r4, pc}
+ ldr r1, _0222D4CC ; =0x022430F4
+ mov r0, r4
+ ldr r1, [r1]
+ strb r4, [r1, #0x43]
+ bl MOD13_0223413C
+ bl MOD13_0222CD8C
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222D4CC: .word 0x022430F4
+
+ arm_func_start MOD13_0222D4D0
+MOD13_0222D4D0: ; 0x0222D4D0
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r0
+ bl MOD13_02234164
+ ldrb r1, [r0, #0xf5]
+ cmp r1, r4
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ cmp r4, #0
+ beq _0222D514
+ ldr r0, _0222D544 ; =0x022430F4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x43]
+ cmp r0, #0
+ movne r5, #1
+ moveq r5, #0
+ b _0222D528
+_0222D514:
+ ldr r1, _0222D544 ; =0x022430F4
+ ldrb r2, [r0, #0xf6]
+ ldr r0, [r1]
+ mov r5, #0
+ strb r2, [r0, #0x43]
+_0222D528:
+ mov r0, r4
+ bl MOD13_02234150
+ mov r0, r5
+ bl MOD13_0223413C
+ bl MOD13_0222CD8C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0222D544: .word 0x022430F4
+
+ arm_func_start MOD13_0222D548
+MOD13_0222D548: ; 0x0222D548
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ bl MOD13_0222CA08
+ cmp r0, #0
+ bne _0222D570
+ mov r0, #9
+ bl MOD13_0223424C
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_0222D570:
+ cmp r4, #8
+ addls pc, pc, r4, lsl #2
+ b _0222D5E8
+_0222D57C: ; jump table
+ b _0222D5E8 ; case 0
+ b _0222D5E8 ; case 1
+ b _0222D5A0 ; case 2
+ b _0222D5A0 ; case 3
+ b _0222D5E8 ; case 4
+ b _0222D5E8 ; case 5
+ b _0222D5E8 ; case 6
+ b _0222D5C4 ; case 7
+ b _0222D5C4 ; case 8
+_0222D5A0:
+ mov r0, #6
+ bl MOD13_0223424C
+ sub r0, r4, #2
+ eors r0, r0, #1
+ movne r0, #1
+ moveq r0, #0
+ bl MOD13_0222D4D0
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_0222D5C4:
+ mov r0, #6
+ bl MOD13_0223424C
+ sub r0, r4, #7
+ eors r0, r0, #1
+ movne r0, #1
+ moveq r0, #0
+ bl MOD13_0222D498
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_0222D5E8:
+ ldr r0, _0222D6B8 ; =0x022430F4
+ sub r1, r4, #0xb
+ ldr r0, [r0]
+ cmp r1, #1
+ strb r4, [r0, #0x40]
+ bhi _0222D664
+ bl MOD13_0222BA38
+ bl MOD13_0222B87C
+ cmp r0, #0
+ bne _0222D644
+ mov r0, #9
+ bl MOD13_0223424C
+ mov r1, #1
+ mov ip, #0
+ mov r2, r1
+ mov r0, #6
+ mvn r3, #0
+ str ip, [sp]
+ bl MOD13_02235EFC
+ ldr r0, _0222D6BC ; =MOD13_0222B830
+ bl MOD13_02222FBC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_0222D644:
+ cmp r4, #0xb
+ bne _0222D658
+ mov r0, #6
+ bl MOD13_0223424C
+ b _0222D6A4
+_0222D658:
+ mov r0, #0xe
+ bl MOD13_0223424C
+ b _0222D6A4
+_0222D664:
+ cmp r4, #0xd
+ bne _0222D67C
+ bl MOD13_0222BA38
+ mov r0, #7
+ bl MOD13_0223424C
+ b _0222D6A4
+_0222D67C:
+ mov r0, #6
+ bl MOD13_0223424C
+ ldr r0, _0222D6C0 ; =0x0223F32C
+ ldrb r0, [r0, r4]
+ bl MOD13_0222C1F4
+ mov r2, r0
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_0222C8E4
+ bl MOD13_0222C4C8
+_0222D6A4:
+ bl MOD13_02232F14
+ ldr r0, _0222D6C4 ; =MOD13_0222D1BC
+ bl MOD13_02222FBC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222D6B8: .word 0x022430F4
+_0222D6BC: .word MOD13_0222B830
+_0222D6C0: .word 0x0223F32C
+_0222D6C4: .word MOD13_0222D1BC
+
+ arm_func_start MOD13_0222D6C8
+MOD13_0222D6C8: ; 0x0222D6C8
+ stmdb sp!, {r4, lr}
+ bl MOD13_02234164
+ bl MOD13_0222C238
+ mov r4, r0
+ cmp r4, #0xe
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ bl MOD13_0222CA08
+ cmp r0, #0
+ bne _0222D700
+ mov r0, #9
+ bl MOD13_0223424C
+ mov r0, #1
+ ldmia sp!, {r4, pc}
+_0222D700:
+ mov r0, r4
+ bl MOD13_0222BDB8
+ cmp r4, #8
+ addls pc, pc, r4, lsl #2
+ b _0222D73C
+_0222D714: ; jump table
+ b _0222D73C ; case 0
+ b _0222D73C ; case 1
+ b _0222D738 ; case 2
+ b _0222D738 ; case 3
+ b _0222D73C ; case 4
+ b _0222D73C ; case 5
+ b _0222D73C ; case 6
+ b _0222D738 ; case 7
+ b _0222D738 ; case 8
+_0222D738:
+ bl MOD13_0222B91C
+_0222D73C:
+ mov r0, r4
+ bl MOD13_0222D548
+ mov r0, #1
+ ldmia sp!, {r4, pc}
+
+ arm_func_start MOD13_0222D74C
+MOD13_0222D74C: ; 0x0222D74C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222DA0C ; =0x022430F4
+ ldr r1, [r0]
+ ldr r0, [r1, #0x38]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldrb r0, [r1, #0x45]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0222D6C8
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _0222D7B0
+ ldr r0, _0222DA10 ; =0x022430E4
+ ldrb r0, [r0]
+ bl MOD13_0222D548
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222D7B0:
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _0222D7E8
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r1, _0222DA0C ; =0x022430F4
+ ldr r0, _0222DA14 ; =MOD13_0222D1BC
+ ldr r1, [r1]
+ mov r2, #0xd
+ strb r2, [r1, #0x40]
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222D7E8:
+ mov r0, #0x200
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _0222D870
+ ldr r0, _0222DA18 ; =0x022430F0
+ ldrh r0, [r0]
+ cmp r0, #0x91
+ bne _0222D840
+ ldr r0, _0222DA0C ; =0x022430F4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x47]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _0222DA0C ; =0x022430F4
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x47]
+ ldmia sp!, {pc}
+_0222D840:
+ mov r0, #0x13
+ bl MOD13_0223424C
+ mov r0, #0
+ ldr r1, _0222DA1C ; =MOD13_0222C03C
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _0222DA0C ; =0x022430F4
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ ldmia sp!, {pc}
+_0222D870:
+ mov r0, #0x200
+ bl MOD13_0223B38C
+ cmp r0, #0
+ ldrne r0, _0222DA0C ; =0x022430F4
+ movne r1, #0
+ ldrne r0, [r0]
+ addne sp, sp, #4
+ strneb r1, [r0, #0x47]
+ ldmneia sp!, {pc}
+ mov r0, #0x100
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _0222D91C
+ ldr r0, _0222DA18 ; =0x022430F0
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _0222D8EC
+ ldr r0, _0222DA0C ; =0x022430F4
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x47]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _0222DA0C ; =0x022430F4
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x47]
+ ldmia sp!, {pc}
+_0222D8EC:
+ mov r0, #0x13
+ bl MOD13_0223424C
+ mov r0, #0
+ ldr r1, _0222DA20 ; =MOD13_0222C0E8
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _0222DA0C ; =0x022430F4
+ add sp, sp, #4
+ ldr r1, [r1]
+ str r0, [r1, #0x38]
+ ldmia sp!, {pc}
+_0222D91C:
+ mov r0, #0x100
+ bl MOD13_0223B38C
+ cmp r0, #0
+ ldrne r0, _0222DA0C ; =0x022430F4
+ movne r1, #0
+ ldrne r0, [r0]
+ addne sp, sp, #4
+ strneb r1, [r0, #0x47]
+ ldmneia sp!, {pc}
+ mov r0, #0x40
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _0222D960
+ mov r0, #1
+ bl MOD13_0222BA74
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222D960:
+ mov r0, #0x40
+ bl MOD13_0223B38C
+ cmp r0, #0
+ ldrne r0, _0222DA0C ; =0x022430F4
+ movne r1, #0
+ ldrne r0, [r0]
+ addne sp, sp, #4
+ strneb r1, [r0, #0x47]
+ ldmneia sp!, {pc}
+ mov r0, #0x80
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _0222D9A4
+ mov r0, #3
+ bl MOD13_0222BA74
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222D9A4:
+ mov r0, #0x80
+ bl MOD13_0223B38C
+ cmp r0, #0
+ ldrne r0, _0222DA0C ; =0x022430F4
+ movne r1, #0
+ ldrne r0, [r0]
+ addne sp, sp, #4
+ strneb r1, [r0, #0x47]
+ ldmneia sp!, {pc}
+ mov r0, #0x20
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _0222D9E8
+ mov r0, #0
+ bl MOD13_0222BA74
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222D9E8:
+ mov r0, #0x10
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #2
+ bl MOD13_0222BA74
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222DA0C: .word 0x022430F4
+_0222DA10: .word 0x022430E4
+_0222DA14: .word MOD13_0222D1BC
+_0222DA18: .word 0x022430F0
+_0222DA1C: .word MOD13_0222C03C
+_0222DA20: .word MOD13_0222C0E8
+
+ arm_func_start MOD13_0222DA24
+MOD13_0222DA24: ; 0x0222DA24
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0222D74C
+ bl MOD13_0222D1E4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222DA7C ; =MOD13_0222DA24
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222DA7C: .word MOD13_0222DA24
+
+ arm_func_start MOD13_0222DA80
+MOD13_0222DA80: ; 0x0222DA80
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x1d
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x1d
+ bl MOD13_0223AEF4
+ ldr r0, _0222DAD8 ; =0x0222DA3C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222DAD8: .word 0x0222DA3C
+
+ arm_func_start MOD13_0222DADC
+MOD13_0222DADC: ; 0x0222DADC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02234164
+ add r1, sp, #0
+ mov r0, #0
+ bl MOD13_02222F44
+ ldr r0, [sp]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r2, _0222DB28 ; =0x022430F0
+ mov r3, #0
+ ldr r1, _0222DB2C ; =0x022430E4
+ ldr r0, _0222DB30 ; =0x022430EC
+ strh r3, [r2]
+ strb r3, [r1]
+ strb r3, [r0]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222DB28: .word 0x022430F0
+_0222DB2C: .word 0x022430E4
+_0222DB30: .word 0x022430EC
+
+ arm_func_start MOD13_0222DB34
+MOD13_0222DB34: ; 0x0222DB34
+ stmdb sp!, {lr}
+ sub sp, sp, #0x44
+ ldr r3, _0222DCFC ; =0x0223F39C
+ add ip, sp, #0
+ mov r2, #0xb
+_0222DB48:
+ ldrb r1, [r3], #1
+ ldrb r0, [r3], #1
+ subs r2, r2, #1
+ strb r1, [ip], #1
+ strb r0, [ip], #1
+ bne _0222DB48
+ ldrb r0, [r3]
+ ldr r3, _0222DD00 ; =0x0223F36C
+ add lr, sp, #0x17
+ strb r0, [ip]
+ mov r2, #0xa
+_0222DB74:
+ ldrb r1, [r3], #1
+ ldrb r0, [r3], #1
+ subs r2, r2, #1
+ strb r1, [lr], #1
+ strb r0, [lr], #1
+ bne _0222DB74
+ ldrb r0, [r3]
+ ldr ip, _0222DD04 ; =0x0223F384
+ add r3, sp, #0x2c
+ strb r0, [lr]
+ mov r2, #0xb
+_0222DBA0:
+ ldrb r1, [ip], #1
+ ldrb r0, [ip], #1
+ subs r2, r2, #1
+ strb r1, [r3], #1
+ strb r0, [r3], #1
+ bne _0222DBA0
+ ldr ip, _0222DD08 ; =0x0400000C
+ ldr r2, _0222DD0C ; =0x00000E18
+ ldrh r3, [ip]
+ ldr r0, _0222DD10 ; =0x022402B0
+ ldr r1, _0222DD14 ; =0x020C9480
+ and r3, r3, #0x43
+ orr r2, r3, r2
+ strh r2, [ip]
+ bl MOD13_0221F174
+ ldr r0, _0222DD18 ; =0x022402C4
+ ldr r1, _0222DD1C ; =0x020C8C7C
+ bl MOD13_0221F174
+ ldr r0, _0222DD20 ; =0x022402DC
+ ldr r1, _0222DD24 ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r1, _0222DD28 ; =0x020C9550
+ add r0, sp, #0x17
+ bl MOD13_0221F174
+ ldr r0, _0222DD2C ; =0x022402F4
+ ldr r1, _0222DD30 ; =0x020C8FBC
+ bl MOD13_0221F174
+ add r0, sp, #0
+ bl MOD13_0221F1BC
+ mov r1, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ ldr r1, _0222DD34 ; =0x022430F4
+ ldr r2, [r1]
+ str r0, [r2, #8]
+ ldr r0, [r1]
+ ldr r0, [r0, #8]
+ bl MOD13_02232918
+ bl MOD13_022328D0
+ add r0, sp, #0x17
+ bl MOD13_0221F1BC
+ mov r1, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ ldr r1, _0222DD34 ; =0x022430F4
+ ldr r1, [r1]
+ str r0, [r1, #0xc]
+ add r0, sp, #0x2c
+ bl MOD13_0221F1BC
+ mov r1, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ ldr r1, _0222DD34 ; =0x022430F4
+ ldr r2, _0222DD38 ; =0x04001008
+ ldr r3, [r1]
+ ldr r1, _0222DD3C ; =0x0400100A
+ str r0, [r3, #0x10]
+ ldrh r0, [r2]
+ ldr ip, _0222DD40 ; =0x04000008
+ ldr r3, _0222DD44 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ ldr r2, _0222DD08 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _0222DD48 ; =0x0400000E
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #2
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #2
+ strh r0, [r1]
+ add sp, sp, #0x44
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222DCFC: .word 0x0223F39C
+_0222DD00: .word 0x0223F36C
+_0222DD04: .word 0x0223F384
+_0222DD08: .word 0x0400000C
+_0222DD0C: .word 0x00000E18
+_0222DD10: .word 0x022402B0
+_0222DD14: .word 0x020C9480
+_0222DD18: .word 0x022402C4
+_0222DD1C: .word 0x020C8C7C
+_0222DD20: .word 0x022402DC
+_0222DD24: .word 0x020C8D4C
+_0222DD28: .word 0x020C9550
+_0222DD2C: .word 0x022402F4
+_0222DD30: .word 0x020C8FBC
+_0222DD34: .word 0x022430F4
+_0222DD38: .word 0x04001008
+_0222DD3C: .word 0x0400100A
+_0222DD40: .word 0x04000008
+_0222DD44: .word 0x0400000A
+_0222DD48: .word 0x0400000E
+
+ arm_func_start MOD13_0222DD4C
+MOD13_0222DD4C: ; 0x0222DD4C
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ bl MOD13_02234164
+ mov r5, r0
+ mov r0, #0x48
+ mov r1, #4
+ bl MOD13_0223AFE0
+ ldr r1, _0222DF38 ; =0x022430F4
+ mov r2, #0xc
+ str r0, [r1]
+ ldrb r3, [r5, #0xf6]
+ strb r3, [r0, #0x43]
+ ldr r0, [r1]
+ strb r2, [r0, #0x42]
+ bl MOD13_0222DADC
+ bl MOD13_0222DB34
+ ldr r0, _0222DF3C ; =0x022430E8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222DDBC
+ bl MOD13_02222F34
+ ldr r1, _0222DF40 ; =0x0223F2F4
+ ldrb r2, [r5, #0xf4]
+ ldrsb r1, [r1, r0]
+ mov r0, #0x30
+ add r2, r2, #1
+ bl MOD13_0221EE98
+ b _0222DDCC
+_0222DDBC:
+ mov r0, #0x45
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+_0222DDCC:
+ mov r0, #1
+ bl MOD13_0221F124
+ bl MOD13_0221F48C
+ ldr r0, _0222DF44 ; =0x022430F0
+ mov r1, #0x37
+ ldrh r3, [r0]
+ ldr r2, _0222DF48 ; =0xE1FC780F
+ mov r0, #2
+ mul r4, r3, r1
+ smull r1, r3, r2, r4
+ add r3, r4, r3
+ mov r3, r3, asr #7
+ mov r1, r4, lsr #0x1f
+ add r3, r1, r3
+ str r3, [sp]
+ mov r1, #0x55
+ mov r2, #0xf1
+ mov r3, #0x41
+ bl MOD13_02232FB8
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_0223A7F0
+ ldr r6, _0222DF38 ; =0x022430F4
+ mov r4, #0
+ ldr r2, [r6]
+ ldr r1, _0222DF4C ; =0x0223F348
+ str r0, [r2, #0x14]
+ ldrb r8, [r1, #1]
+ mov r7, r4
+_0222DE40:
+ mov r0, r7
+ mov r1, r8
+ bl MOD13_02239E54
+ ldr r1, [r6]
+ add r1, r1, r4, lsl #2
+ add r4, r4, #1
+ str r0, [r1, #0x18]
+ cmp r4, #7
+ blt _0222DE40
+ ldrb r0, [r5, #0xe7]
+ cmp r0, #1
+ beq _0222DE7C
+ cmp r0, #2
+ beq _0222DEB0
+ b _0222DEE0
+_0222DE7C:
+ mov r0, #0
+ mov r1, #0x50
+ bl MOD13_02239E54
+ ldr r1, _0222DF38 ; =0x022430F4
+ ldr r2, [r1]
+ str r0, [r2, #0x34]
+ ldr r0, [r1]
+ ldr r1, [r0, #0x34]
+ ldrh r0, [r1, #4]
+ bic r0, r0, #0xc00
+ orr r0, r0, #0xc00
+ strh r0, [r1, #4]
+ b _0222DEE0
+_0222DEB0:
+ mov r0, #0
+ mov r1, #0x51
+ bl MOD13_02239E54
+ ldr r1, _0222DF38 ; =0x022430F4
+ ldr r2, [r1]
+ str r0, [r2, #0x34]
+ ldr r0, [r1]
+ ldr r1, [r0, #0x34]
+ ldrh r0, [r1, #4]
+ bic r0, r0, #0xc00
+ orr r0, r0, #0xc00
+ strh r0, [r1, #4]
+_0222DEE0:
+ ldr r1, _0222DF50 ; =MOD13_0222BFA8
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0x6e
+ bl MOD13_0223C1C4
+ ldr r2, _0222DF38 ; =0x022430F4
+ ldr r1, _0222DF54 ; =MOD13_0222B9DC
+ ldr r2, [r2]
+ mov r3, #0x78
+ str r0, [r2, #0x3c]
+ mov r0, #0
+ mov r2, r0
+ bl MOD13_0223C1C4
+ ldr r1, _0222DF38 ; =0x022430F4
+ ldr r1, [r1]
+ str r0, [r1]
+ bl MOD13_0222CD8C
+ bl MOD13_0222BEC0
+ ldr r0, _0222DF58 ; =MOD13_0222DA80
+ bl MOD13_02222FBC
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_0222DF38: .word 0x022430F4
+_0222DF3C: .word 0x022430E8
+_0222DF40: .word 0x0223F2F4
+_0222DF44: .word 0x022430F0
+_0222DF48: .word 0xE1FC780F
+_0222DF4C: .word 0x0223F348
+_0222DF50: .word MOD13_0222BFA8
+_0222DF54: .word MOD13_0222B9DC
+_0222DF58: .word MOD13_0222DA80
+
+ arm_func_start MOD13_0222DF5C
+MOD13_0222DF5C: ; 0x0222DF5C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x14
+ bl MOD13_0223AE98
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _0222DFC4 ; =MOD13_02230714
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222DFC4: .word MOD13_02230714
+
+ arm_func_start MOD13_0222DFC8
+MOD13_0222DFC8: ; 0x0222DFC8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _0222E008 ; =MOD13_0222DF5C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E008: .word MOD13_0222DF5C
+
+ arm_func_start MOD13_0222E00C
+MOD13_0222E00C: ; 0x0222E00C
+ bx lr
+
+ arm_func_start MOD13_0222E010
+MOD13_0222E010: ; 0x0222E010
+ bx lr
+
+ arm_func_start MOD13_0222E014
+MOD13_0222E014: ; 0x0222E014
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0222E010
+ bl MOD13_0222E00C
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222E044 ; =MOD13_0222DFC8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E044: .word MOD13_0222DFC8
+
+ arm_func_start MOD13_0222E048
+MOD13_0222E048: ; 0x0222E048
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov ip, #0
+ mov r0, #0x44
+ mov r1, #5
+ mov r2, #1
+ mvn r3, #0
+ str ip, [sp]
+ bl MOD13_02235EFC
+ ldr r0, _0222E0A4 ; =MOD13_0222E014
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E0A4: .word MOD13_0222E014
+
+ arm_func_start MOD13_0222E0A8
+MOD13_0222E0A8: ; 0x0222E0A8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x14
+ bl MOD13_0223AEF4
+ ldr r0, _0222E100 ; =MOD13_0222E048
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E100: .word MOD13_0222E048
+
+ arm_func_start MOD13_0222E104
+MOD13_0222E104: ; 0x0222E104
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222E188 ; =0x02240308
+ ldr r1, _0222E18C ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r0, _0222E190 ; =0x02240320
+ ldr r1, _0222E194 ; =0x020C9550
+ bl MOD13_0221F174
+ ldr r0, _0222E198 ; =0x02240338
+ ldr r1, _0222E19C ; =0x020C908C
+ bl MOD13_0221F174
+ ldr ip, _0222E1A0 ; =0x04001008
+ ldr r3, _0222E1A4 ; =0x0400100A
+ ldrh r0, [ip]
+ ldr r2, _0222E1A8 ; =0x0400000A
+ ldr r1, _0222E1AC ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E188: .word 0x02240308
+_0222E18C: .word 0x020C8D4C
+_0222E190: .word 0x02240320
+_0222E194: .word 0x020C9550
+_0222E198: .word 0x02240338
+_0222E19C: .word 0x020C908C
+_0222E1A0: .word 0x04001008
+_0222E1A4: .word 0x0400100A
+_0222E1A8: .word 0x0400000A
+_0222E1AC: .word 0x0400000C
+
+ arm_func_start MOD13_0222E1B0
+MOD13_0222E1B0: ; 0x0222E1B0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0222E104
+ bl MOD13_0221F4AC
+ bl MOD13_02233B3C
+ ldr r0, _0222E1D4 ; =MOD13_0222E0A8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E1D4: .word MOD13_0222E0A8
+
+ arm_func_start MOD13_0222E1D8
+MOD13_0222E1D8: ; 0x0222E1D8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222E200 ; =MOD13_0222E430
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E200: .word MOD13_0222E430
+
+ arm_func_start MOD13_0222E204
+MOD13_0222E204: ; 0x0222E204
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_02235EB0
+ ldr r0, _0222E238 ; =MOD13_0222E1D8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E238: .word MOD13_0222E1D8
+
+ arm_func_start MOD13_0222E23C
+MOD13_0222E23C: ; 0x0222E23C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02223B24
+ cmp r0, #2
+ beq _0222E260
+ cmp r0, #4
+ beq _0222E27C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222E260:
+ ldr r1, _0222E2C4 ; =0x022430F8
+ mov r2, #1
+ ldr r0, _0222E2C8 ; =MOD13_0222E430
+ strb r2, [r1]
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222E27C:
+ ldr r0, _0222E2C4 ; =0x022430F8
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_022341E8
+ mov r0, #9
+ bl MOD13_0223424C
+ mov r1, #1
+ mov ip, #0
+ mov r2, r1
+ mov r0, #0xd
+ mvn r3, #0
+ str ip, [sp]
+ bl MOD13_02235EFC
+ bl MOD13_0221EC84
+ ldr r0, _0222E2CC ; =MOD13_0222E204
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E2C4: .word 0x022430F8
+_0222E2C8: .word MOD13_0222E430
+_0222E2CC: .word MOD13_0222E204
+
+ arm_func_start MOD13_0222E2D0
+MOD13_0222E2D0: ; 0x0222E2D0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222E3A4 ; =0x022430F8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222E310
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_0222E310:
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221E654
+ mov r0, #0
+ bl MOD13_0223A65C
+ ldr r0, _0222E3A4 ; =0x022430F8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222E34C
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+_0222E34C:
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ ldr r0, _0222E3A4 ; =0x022430F8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222E388
+ bl MOD13_02223BE0
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _0222E3A8 ; =MOD13_02230EC4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222E388:
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222FA8
+ ldr r0, _0222E3AC ; =MOD13_0222EB58
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E3A4: .word 0x022430F8
+_0222E3A8: .word MOD13_02230EC4
+_0222E3AC: .word MOD13_0222EB58
+
+ arm_func_start MOD13_0222E3B0
+MOD13_0222E3B0: ; 0x0222E3B0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222E428 ; =0x022430F8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222E3E0
+ bl MOD13_0221ED28
+_0222E3E0:
+ ldr r0, _0222E428 ; =0x022430F8
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222E404
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+_0222E404:
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _0222E42C ; =MOD13_0222E2D0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E428: .word 0x022430F8
+_0222E42C: .word MOD13_0222E2D0
+
+ arm_func_start MOD13_0222E430
+MOD13_0222E430: ; 0x0222E430
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _0222E454 ; =MOD13_0222E3B0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E454: .word MOD13_0222E3B0
+
+ arm_func_start MOD13_0222E458
+MOD13_0222E458: ; 0x0222E458
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_022341E8
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r0, _0222E48C ; =MOD13_0222E430
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E48C: .word MOD13_0222E430
+
+ arm_func_start MOD13_0222E490
+MOD13_0222E490: ; 0x0222E490
+ bx lr
+
+ arm_func_start MOD13_0222E494
+MOD13_0222E494: ; 0x0222E494
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _0222E4BC
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222E4BC:
+ bl MOD13_0222E68C
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0xa
+ bl OS_Sleep
+ bl MOD13_0222E23C
+ bl MOD13_0222E494
+ bl MOD13_0222E490
+ bl MOD13_0222E458
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _0222E534 ; =0x0222E4DC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E534: .word 0x0222E4DC
+
+ arm_func_start MOD13_0222E538
+MOD13_0222E538: ; 0x0222E538
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #1
+ bl MOD13_0221F0EC
+ ldr r0, _0222E56C ; =0x0222E504
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E56C: .word 0x0222E504
+
+ arm_func_start MOD13_0222E570
+MOD13_0222E570: ; 0x0222E570
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _0222E5A8 ; =MOD13_0222E538
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E5A8: .word MOD13_0222E538
+
+ arm_func_start MOD13_0222E5AC
+MOD13_0222E5AC: ; 0x0222E5AC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222E62C ; =0x0224034C
+ ldr r1, _0222E630 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _0222E634 ; =0x04001008
+ ldr ip, _0222E638 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _0222E63C ; =0x04000008
+ ldr r2, _0222E640 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _0222E644 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E62C: .word 0x0224034C
+_0222E630: .word 0x020C908C
+_0222E634: .word 0x04001008
+_0222E638: .word 0x0400100A
+_0222E63C: .word 0x04000008
+_0222E640: .word 0x0400000A
+_0222E644: .word 0x0400000C
+
+ arm_func_start MOD13_0222E648
+MOD13_0222E648: ; 0x0222E648
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222E684 ; =0x022430F8
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_0222E5AC
+ bl MOD13_0221F4AC
+ mov r0, #0x25
+ bl MOD13_0221F070
+ mov r0, #1
+ bl MOD13_0221E694
+ ldr r0, _0222E688 ; =MOD13_0222E570
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E684: .word 0x022430F8
+_0222E688: .word MOD13_0222E570
+
+ arm_func_start MOD13_0222E68C
+MOD13_0222E68C: ; 0x0222E68C
+ ldr r0, _0222E6A8 ; =0x027FFFA8
+ ldrh r0, [r0]
+ and r0, r0, #0x8000
+ movs r0, r0, asr #0xf
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_0222E6A8: .word 0x027FFFA8
+
+ arm_func_start MOD13_0222E6AC
+MOD13_0222E6AC: ; 0x0222E6AC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222E6D4 ; =MOD13_0222E940
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E6D4: .word MOD13_0222E940
+
+ arm_func_start MOD13_0222E6D8
+MOD13_0222E6D8: ; 0x0222E6D8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_02235EB0
+ ldr r0, _0222E70C ; =MOD13_0222E6AC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E70C: .word MOD13_0222E6AC
+
+ arm_func_start MOD13_0222E710
+MOD13_0222E710: ; 0x0222E710
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02223B24
+ cmp r0, #3
+ beq _0222E73C
+ cmp r0, #4
+ beq _0222E760
+ cmp r0, #5
+ beq _0222E7A8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222E73C:
+ ldr r0, _0222E7F0 ; =0x022430FC
+ mov r1, #1
+ strb r1, [r0]
+ bl MOD13_022341E8
+ bl MOD13_02223AF8
+ ldr r0, _0222E7F4 ; =MOD13_0222E940
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222E760:
+ ldr r0, _0222E7F0 ; =0x022430FC
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_022341E8
+ mov r0, #9
+ bl MOD13_0223424C
+ mov r1, #1
+ mov ip, #0
+ mov r2, r1
+ mov r0, #0xd
+ mvn r3, #0
+ str ip, [sp]
+ bl MOD13_02235EFC
+ bl MOD13_0221EC84
+ ldr r0, _0222E7F8 ; =MOD13_0222E6D8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222E7A8:
+ ldr r0, _0222E7F0 ; =0x022430FC
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_022341E8
+ mov r0, #0x12
+ bl MOD13_0223424C
+ mov r1, #1
+ mov ip, #0
+ mov r2, r1
+ mov r0, #0xe
+ mvn r3, #0
+ str ip, [sp]
+ bl MOD13_02235EFC
+ bl MOD13_0221EC84
+ ldr r0, _0222E7F8 ; =MOD13_0222E6D8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E7F0: .word 0x022430FC
+_0222E7F4: .word MOD13_0222E940
+_0222E7F8: .word MOD13_0222E6D8
+
+ arm_func_start MOD13_0222E7FC
+MOD13_0222E7FC: ; 0x0222E7FC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222E8C4 ; =0x022430FC
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222E83C
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_0222E83C:
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221E654
+ mov r0, #0
+ bl MOD13_0223A65C
+ ldr r0, _0222E8C4 ; =0x022430FC
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222E878
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+_0222E878:
+ bl MOD13_02223BE0
+ ldr r0, _0222E8C4 ; =0x022430FC
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222E8A8
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _0222E8C8 ; =MOD13_02230EC4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222E8A8:
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222FA8
+ ldr r0, _0222E8CC ; =MOD13_0222EDE4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E8C4: .word 0x022430FC
+_0222E8C8: .word MOD13_02230EC4
+_0222E8CC: .word MOD13_0222EDE4
+
+ arm_func_start MOD13_0222E8D0
+MOD13_0222E8D0: ; 0x0222E8D0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ED28
+ ldr r0, _0222E938 ; =0x022430FC
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222E914
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+_0222E914:
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _0222E93C ; =MOD13_0222E7FC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E938: .word 0x022430FC
+_0222E93C: .word MOD13_0222E7FC
+
+ arm_func_start MOD13_0222E940
+MOD13_0222E940: ; 0x0222E940
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _0222E964 ; =MOD13_0222E8D0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E964: .word MOD13_0222E8D0
+
+ arm_func_start MOD13_0222E968
+MOD13_0222E968: ; 0x0222E968
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_022341E8
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r0, _0222E99C ; =MOD13_0222E940
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222E99C: .word MOD13_0222E940
+
+ arm_func_start MOD13_0222E9A0
+MOD13_0222E9A0: ; 0x0222E9A0
+ bx lr
+
+ arm_func_start MOD13_0222E9A4
+MOD13_0222E9A4: ; 0x0222E9A4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _0222E9CC
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222E9CC:
+ bl MOD13_0222EB9C
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0xa
+ bl OS_Sleep
+ bl MOD13_0222E710
+ bl MOD13_0222E9A4
+ bl MOD13_0222E9A0
+ bl MOD13_0222E968
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _0222EA44 ; =0x0222E9EC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222EA44: .word 0x0222E9EC
+
+ arm_func_start MOD13_0222EA48
+MOD13_0222EA48: ; 0x0222EA48
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #1
+ bl MOD13_0221F0EC
+ ldr r0, _0222EA7C ; =0x0222EA14
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222EA7C: .word 0x0222EA14
+
+ arm_func_start MOD13_0222EA80
+MOD13_0222EA80: ; 0x0222EA80
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _0222EAB8 ; =MOD13_0222EA48
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222EAB8: .word MOD13_0222EA48
+
+ arm_func_start MOD13_0222EABC
+MOD13_0222EABC: ; 0x0222EABC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222EB3C ; =0x02240360
+ ldr r1, _0222EB40 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _0222EB44 ; =0x04001008
+ ldr ip, _0222EB48 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _0222EB4C ; =0x04000008
+ ldr r2, _0222EB50 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _0222EB54 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222EB3C: .word 0x02240360
+_0222EB40: .word 0x020C908C
+_0222EB44: .word 0x04001008
+_0222EB48: .word 0x0400100A
+_0222EB4C: .word 0x04000008
+_0222EB50: .word 0x0400000A
+_0222EB54: .word 0x0400000C
+
+ arm_func_start MOD13_0222EB58
+MOD13_0222EB58: ; 0x0222EB58
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222EB94 ; =0x022430FC
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_0222EABC
+ bl MOD13_0221F4AC
+ mov r0, #0x2a
+ bl MOD13_0221F070
+ mov r0, #2
+ bl MOD13_0221E694
+ ldr r0, _0222EB98 ; =MOD13_0222EA80
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222EB94: .word 0x022430FC
+_0222EB98: .word MOD13_0222EA80
+
+ arm_func_start MOD13_0222EB9C
+MOD13_0222EB9C: ; 0x0222EB9C
+ ldr r0, _0222EBB8 ; =0x027FFFA8
+ ldrh r0, [r0]
+ and r0, r0, #0x8000
+ movs r0, r0, asr #0xf
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_0222EBB8: .word 0x027FFFA8
+
+ arm_func_start MOD13_0222EBBC
+MOD13_0222EBBC: ; 0x0222EBBC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222EBF4 ; =0x02243100
+ ldrb r1, [r0]
+ add r1, r1, #1
+ strb r1, [r0]
+ ldrb r0, [r0]
+ cmp r0, #0x78
+ addlo sp, sp, #4
+ ldmloia sp!, {pc}
+ ldr r0, _0222EBF8 ; =MOD13_0222EC7C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222EBF4: .word 0x02243100
+_0222EBF8: .word MOD13_0222EC7C
+
+ arm_func_start MOD13_0222EBFC
+MOD13_0222EBFC: ; 0x0222EBFC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A65C
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222FA8
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222F6C
+ ldr r0, _0222EC78 ; =MOD13_0223197C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222EC78: .word MOD13_0223197C
+
+ arm_func_start MOD13_0222EC7C
+MOD13_0222EC7C: ; 0x0222EC7C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _0222ECBC ; =MOD13_0222EBFC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222ECBC: .word MOD13_0222EBFC
+
+ arm_func_start MOD13_0222ECC0
+MOD13_0222ECC0: ; 0x0222ECC0
+ bx lr
+
+ arm_func_start MOD13_0222ECC4
+MOD13_0222ECC4: ; 0x0222ECC4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0222EBBC
+ bl MOD13_0222ECC0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222ED08 ; =MOD13_0222ECC4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222ED08: .word MOD13_0222ECC4
+
+ arm_func_start MOD13_0222ED0C
+MOD13_0222ED0C: ; 0x0222ED0C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _0222ED44 ; =0x0222ECDC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222ED44: .word 0x0222ECDC
+
+ arm_func_start MOD13_0222ED48
+MOD13_0222ED48: ; 0x0222ED48
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222EDC8 ; =0x02240374
+ ldr r1, _0222EDCC ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _0222EDD0 ; =0x04001008
+ ldr ip, _0222EDD4 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _0222EDD8 ; =0x04000008
+ ldr r2, _0222EDDC ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _0222EDE0 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222EDC8: .word 0x02240374
+_0222EDCC: .word 0x020C908C
+_0222EDD0: .word 0x04001008
+_0222EDD4: .word 0x0400100A
+_0222EDD8: .word 0x04000008
+_0222EDDC: .word 0x0400000A
+_0222EDE0: .word 0x0400000C
+
+ arm_func_start MOD13_0222EDE4
+MOD13_0222EDE4: ; 0x0222EDE4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222EE20 ; =0x02243100
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_0222ED48
+ bl MOD13_0221F4AC
+ mov r0, #0x26
+ bl MOD13_0221F070
+ mov r0, #0x10
+ bl MOD13_0223424C
+ ldr r0, _0222EE24 ; =MOD13_0222ED0C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222EE20: .word 0x02243100
+_0222EE24: .word MOD13_0222ED0C
+
+ arm_func_start MOD13_0222EE28
+MOD13_0222EE28: ; 0x0222EE28
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222EE50 ; =MOD13_0222F080
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222EE50: .word MOD13_0222F080
+
+ arm_func_start MOD13_0222EE54
+MOD13_0222EE54: ; 0x0222EE54
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_02235EB0
+ ldr r0, _0222EE88 ; =MOD13_0222EE28
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222EE88: .word MOD13_0222EE28
+
+ arm_func_start MOD13_0222EE8C
+MOD13_0222EE8C: ; 0x0222EE8C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02223B24
+ cmp r0, #1
+ beq _0222EEB0
+ cmp r0, #4
+ beq _0222EECC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222EEB0:
+ ldr r1, _0222EF14 ; =0x02243104
+ mov r2, #1
+ ldr r0, _0222EF18 ; =MOD13_0222F080
+ strb r2, [r1]
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222EECC:
+ ldr r0, _0222EF14 ; =0x02243104
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_022341E8
+ mov r0, #9
+ bl MOD13_0223424C
+ mov r1, #1
+ mov ip, #0
+ mov r2, r1
+ mov r0, #0xd
+ mvn r3, #0
+ str ip, [sp]
+ bl MOD13_02235EFC
+ bl MOD13_0221EC84
+ ldr r0, _0222EF1C ; =MOD13_0222EE54
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222EF14: .word 0x02243104
+_0222EF18: .word MOD13_0222F080
+_0222EF1C: .word MOD13_0222EE54
+
+ arm_func_start MOD13_0222EF20
+MOD13_0222EF20: ; 0x0222EF20
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222EFF4 ; =0x02243104
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222EF60
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_0222EF60:
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221E654
+ mov r0, #0
+ bl MOD13_0223A65C
+ ldr r0, _0222EFF4 ; =0x02243104
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222EF9C
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+_0222EF9C:
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ ldr r0, _0222EFF4 ; =0x02243104
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222EFD8
+ bl MOD13_02223BE0
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _0222EFF8 ; =MOD13_02230EC4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222EFD8:
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222FA8
+ ldr r0, _0222EFFC ; =MOD13_0222E648
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222EFF4: .word 0x02243104
+_0222EFF8: .word MOD13_02230EC4
+_0222EFFC: .word MOD13_0222E648
+
+ arm_func_start MOD13_0222F000
+MOD13_0222F000: ; 0x0222F000
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222F078 ; =0x02243104
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222F030
+ bl MOD13_0221ED28
+_0222F030:
+ ldr r0, _0222F078 ; =0x02243104
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0222F054
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+_0222F054:
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _0222F07C ; =MOD13_0222EF20
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F078: .word 0x02243104
+_0222F07C: .word MOD13_0222EF20
+
+ arm_func_start MOD13_0222F080
+MOD13_0222F080: ; 0x0222F080
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _0222F0A4 ; =MOD13_0222F000
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F0A4: .word MOD13_0222F000
+
+ arm_func_start MOD13_0222F0A8
+MOD13_0222F0A8: ; 0x0222F0A8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_022341E8
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r0, _0222F0DC ; =MOD13_0222F080
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F0DC: .word MOD13_0222F080
+
+ arm_func_start MOD13_0222F0E0
+MOD13_0222F0E0: ; 0x0222F0E0
+ bx lr
+
+ arm_func_start MOD13_0222F0E4
+MOD13_0222F0E4: ; 0x0222F0E4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _0222F10C
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222F10C:
+ bl MOD13_0222F35C
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0xa
+ bl OS_Sleep
+ bl MOD13_0222EE8C
+ bl MOD13_0222F0E4
+ bl MOD13_0222F0E0
+ bl MOD13_0222F0A8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _0222F184 ; =0x0222F12C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F184: .word 0x0222F12C
+
+ arm_func_start MOD13_0222F188
+MOD13_0222F188: ; 0x0222F188
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02223C0C
+ mov r0, #1
+ bl MOD13_0221F0EC
+ ldr r0, _0222F1D4 ; =0x0222F154
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F1D4: .word 0x0222F154
+
+ arm_func_start MOD13_0222F1D8
+MOD13_0222F1D8: ; 0x0222F1D8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _0222F230 ; =MOD13_0222F188
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F230: .word MOD13_0222F188
+
+ arm_func_start MOD13_0222F234
+MOD13_0222F234: ; 0x0222F234
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222F2CC ; =0x02240388
+ ldr r1, _0222F2D0 ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r0, _0222F2D4 ; =0x022403A0
+ ldr r1, _0222F2D8 ; =0x020C9550
+ bl MOD13_0221F174
+ ldr r0, _0222F2DC ; =0x022403B8
+ ldr r1, _0222F2E0 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _0222F2E4 ; =0x04001008
+ ldr ip, _0222F2E8 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _0222F2EC ; =0x04000008
+ ldr r2, _0222F2F0 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _0222F2F4 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F2CC: .word 0x02240388
+_0222F2D0: .word 0x020C8D4C
+_0222F2D4: .word 0x022403A0
+_0222F2D8: .word 0x020C9550
+_0222F2DC: .word 0x022403B8
+_0222F2E0: .word 0x020C908C
+_0222F2E4: .word 0x04001008
+_0222F2E8: .word 0x0400100A
+_0222F2EC: .word 0x04000008
+_0222F2F0: .word 0x0400000A
+_0222F2F4: .word 0x0400000C
+
+ arm_func_start MOD13_0222F2F8
+MOD13_0222F2F8: ; 0x0222F2F8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222F354 ; =0x02243104
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_0222F234
+ bl MOD13_0221F4AC
+ mov r0, #0x37
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ mov r0, #2
+ bl MOD13_0221F124
+ mov r0, #0x24
+ bl MOD13_0221F070
+ mov r0, #0
+ bl MOD13_0221E694
+ mov r0, #0xb
+ bl MOD13_0223424C
+ ldr r0, _0222F358 ; =MOD13_0222F1D8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F354: .word 0x02243104
+_0222F358: .word MOD13_0222F1D8
+
+ arm_func_start MOD13_0222F35C
+MOD13_0222F35C: ; 0x0222F35C
+ ldr r0, _0222F378 ; =0x027FFFA8
+ ldrh r0, [r0]
+ and r0, r0, #0x8000
+ movs r0, r0, asr #0xf
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_0222F378: .word 0x027FFFA8
+
+ arm_func_start MOD13_0222F37C
+MOD13_0222F37C: ; 0x0222F37C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0222F3A4 ; =MOD13_0222F520
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F3A4: .word MOD13_0222F520
+
+ arm_func_start MOD13_0222F3A8
+MOD13_0222F3A8: ; 0x0222F3A8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_02235EB0
+ ldr r0, _0222F3DC ; =MOD13_0222F37C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F3DC: .word MOD13_0222F37C
+
+ arm_func_start MOD13_0222F3E0
+MOD13_0222F3E0: ; 0x0222F3E0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+_0222F420:
+ bl MOD13_0223339C
+ cmp r0, #0
+ beq _0222F420
+ bl MOD13_0221E654
+ mov r0, #0
+ bl MOD13_0223A65C
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ ldr r0, _0222F4B8 ; =0x02243108
+ ldrb r0, [r0]
+ cmp r0, #1
+ beq _0222F490
+ bl MOD13_02233570
+ bl MOD13_02234164
+ ldrb r0, [r0, #0xf4]
+ bl MOD13_02233C24
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _0222F4BC ; =MOD13_02230EC4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222F490:
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222F6C
+ ldr r0, _0222F4C0 ; =MOD13_022295D8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F4B8: .word 0x02243108
+_0222F4BC: .word MOD13_02230EC4
+_0222F4C0: .word MOD13_022295D8
+
+ arm_func_start MOD13_0222F4C4
+MOD13_0222F4C4: ; 0x0222F4C4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ED28
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _0222F51C ; =MOD13_0222F3E0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F51C: .word MOD13_0222F3E0
+
+ arm_func_start MOD13_0222F520
+MOD13_0222F520: ; 0x0222F520
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _0222F544 ; =MOD13_0222F4C4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F544: .word MOD13_0222F4C4
+
+ arm_func_start MOD13_0222F548
+MOD13_0222F548: ; 0x0222F548
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_022341E8
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r0, _0222F57C ; =MOD13_0222F520
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F57C: .word MOD13_0222F520
+
+ arm_func_start MOD13_0222F580
+MOD13_0222F580: ; 0x0222F580
+ bx lr
+
+ arm_func_start MOD13_0222F584
+MOD13_0222F584: ; 0x0222F584
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_022341E8
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_0222F5B4
+MOD13_0222F5B4: ; 0x0222F5B4
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r0, _0222F6D0 ; =0x0224310C
+ ldrh r1, [r0]
+ add r1, r1, #1
+ strh r1, [r0]
+ ldrh r0, [r0]
+ cmp r0, #0x12c
+ addlo sp, sp, #0xc
+ ldmloia sp!, {pc}
+ bl MOD13_022341E8
+ add r0, sp, #4
+ bl MOD13_0223333C
+ cmp r0, #0
+ bne _0222F634
+ ldr r0, _0222F6D4 ; =0x02243108
+ mov r3, #2
+ strb r3, [r0]
+ mov r1, #1
+ mov ip, #0
+ mov r2, r1
+ mov r0, #0xf
+ mvn r3, #0
+ str ip, [sp]
+ bl MOD13_02235EFC
+ mov r0, #0x12
+ bl MOD13_0223424C
+ bl MOD13_0221EC84
+ ldr r0, _0222F6D8 ; =MOD13_0222F3A8
+ bl MOD13_02222FBC
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+_0222F634:
+ cmp r0, #0
+ mov r3, #0
+ ble _0222F660
+ ldr r2, [sp, #4]
+_0222F644:
+ ldrb r1, [r2, #0x28]
+ cmp r1, #2
+ bne _0222F660
+ add r3, r3, #1
+ cmp r3, r0
+ add r2, r2, #0x2a
+ blt _0222F644
+_0222F660:
+ cmp r3, r0
+ bne _0222F6AC
+ ldr r0, _0222F6D4 ; =0x02243108
+ mov r3, #3
+ strb r3, [r0]
+ mov r1, #1
+ mov ip, #0
+ mov r2, r1
+ mov r0, #0xe
+ mvn r3, #0
+ str ip, [sp]
+ bl MOD13_02235EFC
+ mov r0, #0x12
+ bl MOD13_0223424C
+ bl MOD13_0221EC84
+ ldr r0, _0222F6D8 ; =MOD13_0222F3A8
+ bl MOD13_02222FBC
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+_0222F6AC:
+ ldr r1, _0222F6D4 ; =0x02243108
+ mov r2, #1
+ mov r0, #0xf
+ strb r2, [r1]
+ bl MOD13_0223424C
+ ldr r0, _0222F6DC ; =MOD13_0222F520
+ bl MOD13_02222FBC
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F6D0: .word 0x0224310C
+_0222F6D4: .word 0x02243108
+_0222F6D8: .word MOD13_0222F3A8
+_0222F6DC: .word MOD13_0222F520
+
+ arm_func_start MOD13_0222F6E0
+MOD13_0222F6E0: ; 0x0222F6E0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0222F584
+ bl MOD13_0222F580
+ bl MOD13_0222F548
+ bl MOD13_0222F5B4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _0222F730 ; =MOD13_0222F6E0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F730: .word MOD13_0222F6E0
+
+ arm_func_start MOD13_0222F734
+MOD13_0222F734: ; 0x0222F734
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #1
+ bl MOD13_0221F0EC
+ ldr r0, _0222F77C ; =0x0222F700
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F77C: .word 0x0222F700
+
+ arm_func_start MOD13_0222F780
+MOD13_0222F780: ; 0x0222F780
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _0222F7D8 ; =MOD13_0222F734
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F7D8: .word MOD13_0222F734
+
+ arm_func_start MOD13_0222F7DC
+MOD13_0222F7DC: ; 0x0222F7DC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222F874 ; =0x022403CC
+ ldr r1, _0222F878 ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r0, _0222F87C ; =0x022403E4
+ ldr r1, _0222F880 ; =0x020C9550
+ bl MOD13_0221F174
+ ldr r0, _0222F884 ; =0x022403FC
+ ldr r1, _0222F888 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _0222F88C ; =0x04001008
+ ldr ip, _0222F890 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _0222F894 ; =0x04000008
+ ldr r2, _0222F898 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _0222F89C ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F874: .word 0x022403CC
+_0222F878: .word 0x020C8D4C
+_0222F87C: .word 0x022403E4
+_0222F880: .word 0x020C9550
+_0222F884: .word 0x022403FC
+_0222F888: .word 0x020C908C
+_0222F88C: .word 0x04001008
+_0222F890: .word 0x0400100A
+_0222F894: .word 0x04000008
+_0222F898: .word 0x0400000A
+_0222F89C: .word 0x0400000C
+
+ arm_func_start MOD13_0222F8A0
+MOD13_0222F8A0: ; 0x0222F8A0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _0222F90C ; =0x0224310C
+ mov r2, #0
+ ldr r0, _0222F910 ; =0x02243108
+ strh r2, [r1]
+ strb r2, [r0]
+ bl MOD13_0222F7DC
+ mov r0, #0x33
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ bl MOD13_0221F4AC
+ mov r0, #2
+ bl MOD13_0221F124
+ mov r0, #0x33
+ bl MOD13_0221F070
+ mov r0, #0
+ bl MOD13_0221E694
+ bl MOD13_022335AC
+ bl MOD13_0223348C
+ mov r0, #0xa
+ bl MOD13_0223424C
+ ldr r0, _0222F914 ; =MOD13_0222F780
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222F90C: .word 0x0224310C
+_0222F910: .word 0x02243108
+_0222F914: .word MOD13_0222F780
+
+ arm_func_start MOD13_0222F918
+MOD13_0222F918: ; 0x0222F918
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ ldr r2, _0222F9EC ; =0x0223F400
+ ldr r1, _0222F9F0 ; =0x0223F404
+ ldrb r7, [r2]
+ ldrb r6, [r2, #1]
+ ldrb r5, [r2, #2]
+ ldrb r4, [r2, #3]
+ ldrb lr, [r1]
+ ldrb ip, [r1, #1]
+ ldrb r3, [r1, #2]
+ ldrb r2, [r1, #3]
+ ldr r0, _0222F9F4 ; =0x02243110
+ strb r7, [sp]
+ ldrb r1, [r0]
+ strb r2, [sp, #7]
+ strb r6, [sp, #1]
+ strb r5, [sp, #2]
+ strb r4, [sp, #3]
+ strb lr, [sp, #4]
+ strb ip, [sp, #5]
+ strb r3, [sp, #6]
+ cmp r1, #3
+ add r2, sp, #0
+ addhi sp, sp, #0xc
+ ldmhiia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _0222F9F8 ; =0x02243114
+ ldrb r1, [r2, r1]
+ ldr r0, [r0]
+ ldr r0, [r0]
+ mov r2, r1
+ bl MOD13_022327DC
+ ldr r0, _0222F9F4 ; =0x02243110
+ ldrb r0, [r0]
+ cmp r0, #3
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ bl MOD13_02233D0C
+ ldr r1, _0222F9F4 ; =0x02243110
+ ldr r2, _0222F9F8 ; =0x02243114
+ ldrb r3, [r1]
+ ldr r2, [r2]
+ cmp r0, #2
+ movgt r0, #3
+ add r1, sp, #4
+ add r2, r2, r3, lsl #2
+ ldrb r3, [r1, r0]
+ ldr r0, [r2, #4]
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_02239994
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222F9EC: .word 0x0223F400
+_0222F9F0: .word 0x0223F404
+_0222F9F4: .word 0x02243110
+_0222F9F8: .word 0x02243114
+
+ arm_func_start MOD13_0222F9FC
+MOD13_0222F9FC: ; 0x0222F9FC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _0222FA28 ; =MOD13_022303D8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222FA28: .word MOD13_022303D8
+
+ arm_func_start MOD13_0222FA2C
+MOD13_0222FA2C: ; 0x0222FA2C
+ stmdb sp!, {r4, lr}
+ ldr r0, _0222FB8C ; =0x02243110
+ ldrb r0, [r0]
+ sub r4, r0, #4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ beq _0222FB00
+ cmp r0, #1
+ ldmneia sp!, {r4, pc}
+ mov r0, #0xe
+ bl MOD13_0223424C
+ mov r0, r4
+ bl MOD13_022338B8
+ ldr r0, _0222FB90 ; =0x02243114
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #4]
+ bl MOD13_02239ADC
+ ldr r1, _0222FB94 ; =0x0223F3FC
+ mov r2, r0
+ ldrb r1, [r1, #3]
+ mov r0, #0
+ bl MOD13_02239E8C
+ ldr r0, _0222FB90 ; =0x02243114
+ mov ip, r4, lsl #2
+ ldr r0, [r0]
+ mvn r1, #0
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #4]
+ ldr r2, _0222FB98 ; =0x0223F428
+ ldr r3, _0222FB9C ; =0x0223F42A
+ ldrh r2, [r2, ip]
+ ldrh r3, [r3, ip]
+ bl MOD13_02239888
+ ldr r0, _0222FB90 ; =0x02243114
+ mvn r1, #0
+ ldr r0, [r0]
+ mov r2, #3
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #4]
+ bl MOD13_02239814
+ ldr r0, _0222FB90 ; =0x02243114
+ ldr r0, [r0]
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0x10]
+ bl MOD13_02239AE8
+ mov r1, #0
+ ldr r0, _0222FB90 ; =0x02243114
+ ldr r0, [r0]
+ add r0, r0, r4, lsl #2
+ str r1, [r0, #0x10]
+ b _0222FB7C
+_0222FB00:
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r0, _0222FB90 ; =0x02243114
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0x10]
+ bl MOD13_02239ADC
+ mov r2, r0
+ mov r0, #0
+ mov r1, #0x11
+ bl MOD13_02239E8C
+ ldr r0, _0222FB90 ; =0x02243114
+ add r1, r4, #3
+ ldr r0, [r0]
+ mov ip, r1, lsl #2
+ ldr r2, _0222FB98 ; =0x0223F428
+ ldr r3, _0222FB9C ; =0x0223F42A
+ add r0, r0, r4, lsl #2
+ ldrh r2, [r2, ip]
+ ldrh r3, [r3, ip]
+ ldr r0, [r0, #0x10]
+ mvn r1, #0
+ bl MOD13_02239888
+ ldr r0, _0222FB90 ; =0x02243114
+ mvn r1, #0
+ ldr r0, [r0]
+ mov r2, #3
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0x10]
+ bl MOD13_02239814
+_0222FB7C:
+ bl MOD13_02235EB0
+ ldr r0, _0222FBA0 ; =MOD13_0222F9FC
+ bl MOD13_02222FBC
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222FB8C: .word 0x02243110
+_0222FB90: .word 0x02243114
+_0222FB94: .word 0x0223F3FC
+_0222FB98: .word 0x0223F428
+_0222FB9C: .word 0x0223F42A
+_0222FBA0: .word MOD13_0222F9FC
+
+ arm_func_start MOD13_0222FBA4
+MOD13_0222FBA4: ; 0x0222FBA4
+ stmdb sp!, {r4, lr}
+ ldr r1, _0222FC2C ; =0x02243110
+ ldr r0, _0222FC30 ; =0x02243114
+ ldrb r2, [r1]
+ ldr r0, [r0]
+ mov r1, #0
+ sub r4, r2, #4
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0x10]
+ bl MOD13_02239ADC
+ mov r2, r0
+ mov r0, #0
+ mov r1, #0x32
+ bl MOD13_02239E8C
+ ldr r0, _0222FC30 ; =0x02243114
+ add r3, r4, #3
+ ldr r2, [r0]
+ ldr r1, _0222FC34 ; =0x0223F428
+ mov r3, r3, lsl #2
+ ldr r0, _0222FC38 ; =0x0223F42A
+ add ip, r2, r4, lsl #2
+ ldrh r2, [r1, r3]
+ ldrh r3, [r0, r3]
+ ldr r0, [ip, #0x10]
+ mvn r1, #0
+ bl MOD13_02239888
+ ldr r0, _0222FC30 ; =0x02243114
+ mvn r1, #0
+ ldr r0, [r0]
+ mov r2, #3
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #0x10]
+ bl MOD13_02239814
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0222FC2C: .word 0x02243110
+_0222FC30: .word 0x02243114
+_0222FC34: .word 0x0223F428
+_0222FC38: .word 0x0223F42A
+
+ arm_func_start MOD13_0222FC3C
+MOD13_0222FC3C: ; 0x0222FC3C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r3, _0222FE54 ; =0x02243110
+ mov r1, #1
+ ldrb r2, [r3]
+ cmp r2, #6
+ addls pc, pc, r2, lsl #2
+ b _0222FE34
+_0222FC5C: ; jump table
+ b _0222FC78 ; case 0
+ b _0222FCBC ; case 1
+ b _0222FD00 ; case 2
+ b _0222FD44 ; case 3
+ b _0222FD70 ; case 4
+ b _0222FDB4 ; case 5
+ b _0222FDF4 ; case 6
+_0222FC78:
+ ldr r2, _0222FE58 ; =0x02243114
+ cmp r0, #0
+ ldr r2, [r2]
+ mov ip, #0
+ strb ip, [r2, #0x1c]
+ moveq r0, #2
+ streqb r0, [r3]
+ beq _0222FE34
+ cmp r0, #2
+ streqb r1, [r3]
+ beq _0222FE34
+ cmp r0, #1
+ moveq r0, #3
+ streqb r0, [r3]
+ movne r0, #4
+ strneb r0, [r3]
+ b _0222FE34
+_0222FCBC:
+ ldr r2, _0222FE58 ; =0x02243114
+ cmp r0, #0
+ ldr r2, [r2]
+ moveq r0, #0
+ strb r1, [r2, #0x1c]
+ streqb r0, [r3]
+ beq _0222FE34
+ cmp r0, #2
+ moveq r0, #2
+ streqb r0, [r3]
+ beq _0222FE34
+ cmp r0, #1
+ moveq r0, #3
+ streqb r0, [r3]
+ movne r0, #5
+ strneb r0, [r3]
+ b _0222FE34
+_0222FD00:
+ ldr r2, _0222FE58 ; =0x02243114
+ mov ip, #2
+ ldr r2, [r2]
+ cmp r0, #0
+ strb ip, [r2, #0x1c]
+ streqb r1, [r3]
+ beq _0222FE34
+ cmp r0, #2
+ moveq r0, #0
+ streqb r0, [r3]
+ beq _0222FE34
+ cmp r0, #1
+ moveq r0, #3
+ streqb r0, [r3]
+ movne r0, #6
+ strneb r0, [r3]
+ b _0222FE34
+_0222FD44:
+ ldr r2, _0222FE58 ; =0x02243114
+ cmp r0, #1
+ ldr r2, [r2]
+ ldrb ip, [r2, #0x1c]
+ add r2, ip, #4
+ streqb r2, [r3]
+ beq _0222FE34
+ cmp r0, #3
+ streqb ip, [r3]
+ movne r1, #0
+ b _0222FE34
+_0222FD70:
+ ldr r2, _0222FE58 ; =0x02243114
+ cmp r0, #0
+ ldr r2, [r2]
+ mov ip, #0
+ strb ip, [r2, #0x1c]
+ moveq r0, #6
+ streqb r0, [r3]
+ beq _0222FE34
+ cmp r0, #2
+ moveq r0, #5
+ streqb r0, [r3]
+ beq _0222FE34
+ cmp r0, #1
+ streqb ip, [r3]
+ movne r0, #3
+ strneb r0, [r3]
+ b _0222FE34
+_0222FDB4:
+ ldr r2, _0222FE58 ; =0x02243114
+ cmp r0, #0
+ ldr r2, [r2]
+ moveq r0, #4
+ strb r1, [r2, #0x1c]
+ streqb r0, [r3]
+ beq _0222FE34
+ cmp r0, #2
+ moveq r0, #6
+ streqb r0, [r3]
+ beq _0222FE34
+ cmp r0, #1
+ streqb r1, [r3]
+ movne r0, #3
+ strneb r0, [r3]
+ b _0222FE34
+_0222FDF4:
+ ldr r2, _0222FE58 ; =0x02243114
+ cmp r0, #0
+ ldr r2, [r2]
+ mov ip, #2
+ strb ip, [r2, #0x1c]
+ moveq r0, #5
+ streqb r0, [r3]
+ beq _0222FE34
+ cmp r0, #2
+ moveq r0, #4
+ streqb r0, [r3]
+ beq _0222FE34
+ cmp r0, #1
+ streqb ip, [r3]
+ movne r0, #3
+ strneb r0, [r3]
+_0222FE34:
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #8
+ bl MOD13_0223424C
+ bl MOD13_0222FE5C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222FE54: .word 0x02243110
+_0222FE58: .word 0x02243114
+
+ arm_func_start MOD13_0222FE5C
+MOD13_0222FE5C: ; 0x0222FE5C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0222FED0 ; =0x02243110
+ ldrb r2, [r0]
+ cmp r2, #4
+ bhs _0222FEA4
+ mov ip, r2, lsl #3
+ ldr r0, _0222FED4 ; =0x0223F478
+ ldr r1, _0222FED8 ; =0x0223F47C
+ ldr r2, _0222FEDC ; =0x0223F47A
+ ldr r3, _0222FEE0 ; =0x0223F47E
+ ldrh r0, [r0, ip]
+ ldrh r1, [r1, ip]
+ ldrh r2, [r2, ip]
+ ldrh r3, [r3, ip]
+ bl MOD13_0221F25C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0222FEA4:
+ ldr r1, _0222FED4 ; =0x0223F478
+ mov r3, r2, lsl #3
+ ldr r2, _0222FED8 ; =0x0223F47C
+ ldr r0, _0222FEDC ; =0x0223F47A
+ ldrh r1, [r1, r3]
+ ldrh r2, [r2, r3]
+ ldrh r3, [r0, r3]
+ mov r0, #0
+ bl MOD13_0221F348
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0222FED0: .word 0x02243110
+_0222FED4: .word 0x0223F478
+_0222FED8: .word 0x0223F47C
+_0222FEDC: .word 0x0223F47A
+_0222FEE0: .word 0x0223F47E
+
+ arm_func_start MOD13_0222FEE4
+MOD13_0222FEE4: ; 0x0222FEE4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ bl MOD13_022343D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r4, _02230084 ; =0x02243114
+ mov r5, #0
+_0222FF3C:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _0222FF54
+ bl MOD13_02239AE8
+_0222FF54:
+ add r5, r5, #1
+ cmp r5, #3
+ blo _0222FF3C
+ ldr r4, _02230084 ; =0x02243114
+ mov r5, #0
+_0222FF68:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0x10]
+ cmp r0, #0
+ beq _0222FF80
+ bl MOD13_02239AE8
+_0222FF80:
+ add r5, r5, #1
+ cmp r5, #3
+ blo _0222FF68
+ bl MOD13_0221F21C
+ bl MOD13_0221EE54
+ ldr r0, _02230084 ; =0x02243114
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD13_0223939C
+ ldr r0, _02230088 ; =0x02240410
+ ldr r1, _0223008C ; =0x020C9480
+ bl MOD13_0221F174
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x14
+ bl MOD13_0223AE98
+ ldr r0, _02230084 ; =0x02243114
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x1d]
+ cmp r0, #2
+ bne _0222FFF4
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222FA8
+ ldr r0, _02230090 ; =MOD13_022245B4
+ bl MOD13_02222FBC
+ b _02230074
+_0222FFF4:
+ ldr r0, _02230094 ; =0x02243110
+ ldrb r0, [r0]
+ cmp r0, #3
+ addls pc, pc, r0, lsl #2
+ b _02230074
+_02230008: ; jump table
+ b _02230018 ; case 0
+ b _02230018 ; case 1
+ b _02230018 ; case 2
+ b _02230060 ; case 3
+_02230018:
+ mov r0, #2
+ mov r1, #0
+ bl MOD13_02222FA8
+ bl MOD13_02234164
+ ldrb r0, [r0, #0xe7]
+ cmp r0, #0xff
+ bne _02230040
+ ldr r0, _02230098 ; =MOD13_02230EC4
+ bl MOD13_02222FBC
+ b _02230074
+_02230040:
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222F6C
+ mov r0, #0
+ bl MOD13_0222B7F4
+ ldr r0, _0223009C ; =MOD13_0222DD4C
+ bl MOD13_02222FBC
+ b _02230074
+_02230060:
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _022300A0 ; =MOD13_0223201C
+ bl MOD13_02222FBC
+_02230074:
+ ldr r0, _02230084 ; =0x02243114
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02230084: .word 0x02243114
+_02230088: .word 0x02240410
+_0223008C: .word 0x020C9480
+_02230090: .word MOD13_022245B4
+_02230094: .word 0x02243110
+_02230098: .word MOD13_02230EC4
+_0223009C: .word MOD13_0222DD4C
+_022300A0: .word MOD13_0223201C
+
+ arm_func_start MOD13_022300A4
+MOD13_022300A4: ; 0x022300A4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02230130 ; =0x02243114
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x1d]
+ cmp r0, #1
+ bne _022300F8
+ ldr r0, _02230134 ; =0x02243110
+ ldrb r0, [r0]
+ cmp r0, #3
+ beq _022300F4
+ bl MOD13_02234164
+ ldrb r0, [r0, #0xe7]
+ cmp r0, #0xff
+ beq _022300F8
+_022300F4:
+ bl MOD13_0221ED28
+_022300F8:
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02230138 ; =MOD13_0222FEE4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02230130: .word 0x02243114
+_02230134: .word 0x02243110
+_02230138: .word MOD13_0222FEE4
+
+ arm_func_start MOD13_0223013C
+MOD13_0223013C: ; 0x0223013C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02230178 ; =0x02243114
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x1d]
+ cmp r0, #2
+ bne _0223015C
+ bl MOD13_02234908
+_0223015C:
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _0223017C ; =MOD13_022300A4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02230178: .word 0x02243114
+_0223017C: .word MOD13_022300A4
+
+ arm_func_start MOD13_02230180
+MOD13_02230180: ; 0x02230180
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ bl MOD13_0221ED14
+ cmp r0, #0
+ beq _022301A4
+ cmp r0, #1
+ beq _022301EC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_022301A4:
+ bl MOD13_02222F1C
+ cmp r0, #0
+ beq _022301BC
+ cmp r0, #1
+ beq _022301D8
+ b _02230294
+_022301BC:
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r0, _022302A4 ; =0x02243114
+ mov r1, #2
+ ldr r0, [r0]
+ strb r1, [r0, #0x1d]
+ b _02230294
+_022301D8:
+ bl MOD13_0221EC84
+ ldr r0, _022302A8 ; =MOD13_02223CFC
+ bl MOD13_02222FBC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_022301EC:
+ ldr r0, _022302A4 ; =0x02243114
+ mov r2, #1
+ ldr r1, [r0]
+ ldr r0, _022302AC ; =0x02243110
+ strb r2, [r1, #0x1d]
+ ldrb r0, [r0]
+ cmp r0, #4
+ blo _0223027C
+ sub r4, r0, #4
+ mov r0, r4
+ bl MOD13_02233D0C
+ cmp r0, #0xff
+ bne _02230238
+ mov r0, #9
+ bl MOD13_0223424C
+ mvn r0, #0
+ bl MOD13_0221ECE0
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_02230238:
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_02222F34
+ add r2, r4, #1
+ str r2, [sp]
+ ldr r1, _022302B0 ; =0x0223F408
+ mov r2, #1
+ ldrsb r3, [r1, r0]
+ mov r0, #0x46
+ mov r1, #0
+ bl MOD13_02235EFC
+ bl MOD13_0222FBA4
+ bl MOD13_0221EC84
+ ldr r0, _022302B4 ; =MOD13_0222FA2C
+ bl MOD13_02222FBC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_0223027C:
+ cmp r0, #2
+ bhi _02230288
+ bl MOD13_02233C24
+_02230288:
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_0222F918
+_02230294:
+ ldr r0, _022302B8 ; =MOD13_0223013C
+ bl MOD13_02222FBC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022302A4: .word 0x02243114
+_022302A8: .word MOD13_02223CFC
+_022302AC: .word 0x02243110
+_022302B0: .word 0x0223F408
+_022302B4: .word MOD13_0222FA2C
+_022302B8: .word MOD13_0223013C
+
+ arm_func_start MOD13_022302BC
+MOD13_022302BC: ; 0x022302BC
+ bx lr
+
+ arm_func_start MOD13_022302C0
+MOD13_022302C0: ; 0x022302C0
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r4, _022303D0 ; =0x0223F440
+ mov r5, #0
+_022302D0:
+ mov r0, r4
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ beq _022302FC
+ mov r0, #1
+ bl MOD13_0221ECF4
+ ldr r0, _022303D4 ; =0x02243110
+ strb r5, [r0]
+ bl MOD13_0222FE5C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_022302FC:
+ add r5, r5, #1
+ cmp r5, #7
+ add r4, r4, #8
+ blo _022302D0
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _0223032C
+ mov r0, #1
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0223032C:
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _0223034C
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0223034C:
+ mov r0, #0x40
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _0223036C
+ mov r0, #1
+ bl MOD13_0222FC3C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0223036C:
+ mov r0, #0x80
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _0223038C
+ mov r0, #3
+ bl MOD13_0222FC3C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_0223038C:
+ mov r0, #0x20
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _022303AC
+ mov r0, #0
+ bl MOD13_0222FC3C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_022303AC:
+ mov r0, #0x10
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ mov r0, #2
+ bl MOD13_0222FC3C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_022303D0: .word 0x0223F440
+_022303D4: .word 0x02243110
+
+ arm_func_start MOD13_022303D8
+MOD13_022303D8: ; 0x022303D8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_022302C0
+ bl MOD13_022302BC
+ bl MOD13_02230180
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_02234800
+ cmp r0, #1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _02230434 ; =MOD13_022303D8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02230434: .word MOD13_022303D8
+
+ arm_func_start MOD13_02230438
+MOD13_02230438: ; 0x02230438
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221F0EC
+ ldr r0, _02230480 ; =0x022303F4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02230480: .word 0x022303F4
+
+ arm_func_start MOD13_02230484
+MOD13_02230484: ; 0x02230484
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x14
+ bl MOD13_0223AEF4
+ ldr r0, _022304DC ; =MOD13_02230438
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022304DC: .word MOD13_02230438
+
+ arm_func_start MOD13_022304E0
+MOD13_022304E0: ; 0x022304E0
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ mov sb, #0
+ ldr r4, _022305F0 ; =0x02243114
+ ldr r5, _022305F4 ; =0x0223F428
+ str sb, [sp]
+ str sb, [sp, #4]
+ mov fp, #0x11
+ mov r7, #1
+ mvn r6, #0
+ mov r8, #3
+_0223050C:
+ mov r0, sb
+ bl MOD13_02233D0C
+ mov sl, r0
+ cmp sl, #0xff
+ moveq sl, r8
+ beq _02230580
+ ldr r0, [sp]
+ mov r1, fp
+ mov r2, r7
+ bl MOD13_02239E0C
+ ldr r1, [r4]
+ add r3, sb, #3
+ add r1, r1, sb, lsl #2
+ str r0, [r1, #0x10]
+ mov r2, r3, lsl #2
+ ldr r0, [r4]
+ add r3, r5, r3, lsl #2
+ add r0, r0, sb, lsl #2
+ ldrh r2, [r5, r2]
+ ldrh r3, [r3, #2]
+ ldr r0, [r0, #0x10]
+ mov r1, r6
+ bl MOD13_02239888
+ ldr r0, [r4]
+ mov r1, r6
+ add r0, r0, sb, lsl #2
+ ldr r0, [r0, #0x10]
+ mov r2, r8
+ bl MOD13_02239814
+_02230580:
+ ldr r0, _022305F8 ; =0x0223F3FC
+ mov r2, r7
+ ldrb r1, [r0, sl]
+ ldr r0, [sp, #4]
+ bl MOD13_02239E0C
+ ldr r1, [r4]
+ mov r2, sb, lsl #2
+ add r1, r1, sb, lsl #2
+ str r0, [r1, #4]
+ ldr r0, [r4]
+ add r3, r5, sb, lsl #2
+ add r0, r0, sb, lsl #2
+ ldrh r2, [r5, r2]
+ ldrh r3, [r3, #2]
+ ldr r0, [r0, #4]
+ mov r1, r6
+ bl MOD13_02239888
+ ldr r0, [r4]
+ mov r1, r6
+ add r0, r0, sb, lsl #2
+ ldr r0, [r0, #4]
+ mov r2, r8
+ bl MOD13_02239814
+ add sb, sb, #1
+ cmp sb, #3
+ blt _0223050C
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_022305F0: .word 0x02243114
+_022305F4: .word 0x0223F428
+_022305F8: .word 0x0223F3FC
+
+ arm_func_start MOD13_022305FC
+MOD13_022305FC: ; 0x022305FC
+ stmdb sp!, {lr}
+ sub sp, sp, #0x1c
+ ldr ip, _022306DC ; =0x0223F410
+ add r3, sp, #0
+ mov r2, #0xb
+_02230610:
+ ldrb r1, [ip], #1
+ ldrb r0, [ip], #1
+ subs r2, r2, #1
+ strb r1, [r3], #1
+ strb r0, [r3], #1
+ bne _02230610
+ ldr r0, _022306E0 ; =0x02240428
+ ldr r1, _022306E4 ; =0x020C9480
+ bl MOD13_0221F174
+ ldr r0, _022306E8 ; =0x0224043C
+ ldr r1, _022306EC ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r0, _022306F0 ; =0x02240454
+ ldr r1, _022306F4 ; =0x020C9550
+ bl MOD13_0221F174
+ ldr r0, _022306F8 ; =0x0224046C
+ ldr r1, _022306FC ; =0x020C908C
+ bl MOD13_0221F174
+ add r0, sp, #0
+ bl MOD13_0221F1BC
+ mov r1, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ ldr r2, _02230700 ; =0x02243114
+ mov r1, #0x10
+ ldr r2, [r2]
+ str r0, [r2]
+ mov r0, #1
+ bl MOD13_0223AEF4
+ ldr ip, _02230704 ; =0x04001008
+ ldr r3, _02230708 ; =0x0400100A
+ ldrh r0, [ip]
+ ldr r2, _0223070C ; =0x0400000A
+ ldr r1, _02230710 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #0x1c
+ ldmia sp!, {pc}
+ .align 2, 0
+_022306DC: .word 0x0223F410
+_022306E0: .word 0x02240428
+_022306E4: .word 0x020C9480
+_022306E8: .word 0x0224043C
+_022306EC: .word 0x020C8D4C
+_022306F0: .word 0x02240454
+_022306F4: .word 0x020C9550
+_022306F8: .word 0x0224046C
+_022306FC: .word 0x020C908C
+_02230700: .word 0x02243114
+_02230704: .word 0x04001008
+_02230708: .word 0x0400100A
+_0223070C: .word 0x0400000A
+_02230710: .word 0x0400000C
+
+ arm_func_start MOD13_02230714
+MOD13_02230714: ; 0x02230714
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0x20
+ mov r1, #4
+ bl MOD13_0223AFE0
+ ldr r1, _02230774 ; =0x02243114
+ mov r2, #0
+ str r0, [r1]
+ strb r2, [r0, #0x1d]
+ bl MOD13_022305FC
+ mov r0, #1
+ bl MOD13_0221F4CC
+ mov r0, #0x2f
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ mov r0, #0
+ bl MOD13_0221F124
+ bl MOD13_022304E0
+ bl MOD13_0222FE5C
+ ldr r0, _02230778 ; =MOD13_02230484
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02230774: .word 0x02243114
+_02230778: .word MOD13_02230484
+
+ arm_func_start MOD13_0223077C
+MOD13_0223077C: ; 0x0223077C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r0, _022307D0 ; =0x0223F4B0
+ ldr r1, _022307D4 ; =0x0224311C
+ ldrb lr, [r0]
+ ldrb ip, [r0, #1]
+ ldrb r3, [r0, #2]
+ ldrb r2, [r0, #3]
+ ldr r0, _022307D8 ; =0x02243124
+ ldrsb r1, [r1]
+ add r4, sp, #0
+ strb lr, [sp]
+ strb ip, [sp, #1]
+ strb r3, [sp, #2]
+ strb r2, [sp, #3]
+ ldrb r1, [r4, r1]
+ ldr r0, [r0]
+ mov r2, r1
+ bl MOD13_022327DC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022307D0: .word 0x0223F4B0
+_022307D4: .word 0x0224311C
+_022307D8: .word 0x02243124
+
+ arm_func_start MOD13_022307DC
+MOD13_022307DC: ; 0x022307DC
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r1, _022308B8 ; =0x0224311C
+ mov r5, r0
+ mov r0, #1
+ ldrsb r4, [r1]
+ bl MOD13_02222EFC
+ ldr r2, _022308BC ; =0x0223F4D4
+ mvn r1, #0
+ add r0, r2, r0, lsl #4
+ add r0, r0, r4, lsl #2
+ ldrsb r2, [r5, r0]
+ cmp r2, r1
+ ldmeqia sp!, {r4, r5, r6, pc}
+ cmp r2, #0
+ ldreq r0, _022308C0 ; =0x02243118
+ streqb r4, [r0]
+ mvn r0, #1
+ cmp r2, r0
+ ldreq r1, _022308C0 ; =0x02243118
+ ldreq r0, _022308B8 ; =0x0224311C
+ ldreqsb r1, [r1]
+ streqb r1, [r0]
+ ldrne r0, _022308B8 ; =0x0224311C
+ strneb r2, [r0]
+ mov r0, #8
+ bl MOD13_0223424C
+ mov r0, #1
+ bl MOD13_02222EFC
+ mov r6, r0
+ mov r0, #1
+ bl MOD13_02222EFC
+ mov r5, r0
+ mov r0, #1
+ bl MOD13_02222EFC
+ mov r4, r0
+ mov r0, #1
+ bl MOD13_02222EFC
+ mov r3, r0
+ ldr r0, _022308B8 ; =0x0224311C
+ ldr r1, _022308C4 ; =0x0223F534
+ ldrsb lr, [r0]
+ ldr r0, _022308C8 ; =0x0223F536
+ add ip, r1, r6, lsl #5
+ ldr r1, _022308CC ; =0x0223F538
+ add r2, r0, r4, lsl #5
+ ldr r4, _022308D0 ; =0x0223F53A
+ add r1, r1, r5, lsl #5
+ mov r5, lr, lsl #3
+ add r3, r4, r3, lsl #5
+ ldrh r0, [r5, ip]
+ ldrh r1, [r5, r1]
+ ldrh r2, [r5, r2]
+ ldrh r3, [r5, r3]
+ bl MOD13_0221F25C
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_022308B8: .word 0x0224311C
+_022308BC: .word 0x0223F4D4
+_022308C0: .word 0x02243118
+_022308C4: .word 0x0223F534
+_022308C8: .word 0x0223F536
+_022308CC: .word 0x0223F538
+_022308D0: .word 0x0223F53A
+
+ arm_func_start MOD13_022308D4
+MOD13_022308D4: ; 0x022308D4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221F21C
+ bl MOD13_0221EE54
+ ldr r0, _02230A14 ; =0x02243124
+ ldr r0, [r0]
+ bl MOD13_0223939C
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x14
+ bl MOD13_0223AE98
+ ldr r0, _02230A18 ; =0x02243120
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0223096C
+ mov r0, #2
+ mov r1, #0
+ bl MOD13_02222FA8
+ ldr r0, _02230A1C ; =MOD13_02230714
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0223096C:
+ ldr r0, _02230A20 ; =0x0224311C
+ ldrsb r0, [r0]
+ cmp r0, #3
+ addls pc, pc, r0, lsl #2
+ b _02230A0C
+_02230980: ; jump table
+ b _02230990 ; case 0
+ b _022309AC ; case 1
+ b _022309C8 ; case 2
+ b _022309E4 ; case 3
+_02230990:
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02230A24 ; =MOD13_0222F8A0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022309AC:
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02230A28 ; =MOD13_02227C38
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022309C8:
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02230A2C ; =MOD13_0222F2F8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022309E4:
+ mov r0, #2
+ mov r1, #0
+ bl MOD13_02222FA8
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222F6C
+ mov r0, #1
+ bl MOD13_0222B7F4
+ ldr r0, _02230A30 ; =MOD13_0222DD4C
+ bl MOD13_02222FBC
+_02230A0C:
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02230A14: .word 0x02243124
+_02230A18: .word 0x02243120
+_02230A1C: .word MOD13_02230714
+_02230A20: .word 0x0224311C
+_02230A24: .word MOD13_0222F8A0
+_02230A28: .word MOD13_02227C38
+_02230A2C: .word MOD13_0222F2F8
+_02230A30: .word MOD13_0222DD4C
+
+ arm_func_start MOD13_02230A34
+MOD13_02230A34: ; 0x02230A34
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02230A9C ; =0x02243120
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02230A64
+ bl MOD13_0221ED28
+_02230A64:
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02230AA0 ; =MOD13_022308D4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02230A9C: .word 0x02243120
+_02230AA0: .word MOD13_022308D4
+
+ arm_func_start MOD13_02230AA4
+MOD13_02230AA4: ; 0x02230AA4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _02230AC8 ; =MOD13_02230A34
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02230AC8: .word MOD13_02230A34
+
+ arm_func_start MOD13_02230ACC
+MOD13_02230ACC: ; 0x02230ACC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ beq _02230AF0
+ cmp r0, #1
+ beq _02230AFC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02230AF0:
+ mov r0, #7
+ bl MOD13_0223424C
+ b _02230B14
+_02230AFC:
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_0223077C
+ ldr r0, _02230B24 ; =0x02243120
+ mov r1, #1
+ strb r1, [r0]
+_02230B14:
+ ldr r0, _02230B28 ; =MOD13_02230AA4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02230B24: .word 0x02243120
+_02230B28: .word MOD13_02230AA4
+
+ arm_func_start MOD13_02230B2C
+MOD13_02230B2C: ; 0x02230B2C
+ bx lr
+
+ arm_func_start MOD13_02230B30
+MOD13_02230B30: ; 0x02230B30
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, #0
+ mov r6, r7
+ ldr r4, _02230CC0 ; =0x0223F4F4
+ mov r5, #1
+_02230B48:
+ mov r0, r5
+ bl MOD13_02222EFC
+ add r0, r4, r0, lsl #5
+ add r0, r0, r6
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ beq _02230BEC
+ mov r0, #1
+ bl MOD13_0221ECF4
+ ldr r1, _02230CC4 ; =0x0224311C
+ mov r0, #1
+ strb r7, [r1]
+ bl MOD13_02222EFC
+ mov r6, r0
+ mov r0, #1
+ bl MOD13_02222EFC
+ mov r5, r0
+ mov r0, #1
+ bl MOD13_02222EFC
+ mov r4, r0
+ mov r0, #1
+ bl MOD13_02222EFC
+ mov r3, r0
+ ldr r0, _02230CC4 ; =0x0224311C
+ ldr r1, _02230CC8 ; =0x0223F534
+ ldrsb lr, [r0]
+ ldr r0, _02230CCC ; =0x0223F536
+ add ip, r1, r6, lsl #5
+ ldr r1, _02230CD0 ; =0x0223F538
+ add r2, r0, r4, lsl #5
+ ldr r4, _02230CD4 ; =0x0223F53A
+ add r1, r1, r5, lsl #5
+ mov r5, lr, lsl #3
+ add r3, r4, r3, lsl #5
+ ldrh r0, [r5, ip]
+ ldrh r1, [r5, r1]
+ ldrh r2, [r5, r2]
+ ldrh r3, [r5, r3]
+ bl MOD13_0221F25C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02230BEC:
+ add r7, r7, #1
+ cmp r7, #4
+ add r6, r6, #8
+ blo _02230B48
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _02230C1C
+ mov r0, #1
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02230C1C:
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _02230C3C
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02230C3C:
+ mov r0, #0x40
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _02230C5C
+ mov r0, #1
+ bl MOD13_022307DC
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02230C5C:
+ mov r0, #0x80
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _02230C7C
+ mov r0, #3
+ bl MOD13_022307DC
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02230C7C:
+ mov r0, #0x20
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ beq _02230C9C
+ mov r0, #0
+ bl MOD13_022307DC
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02230C9C:
+ mov r0, #0x10
+ bl MOD13_0223B3B0
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ mov r0, #2
+ bl MOD13_022307DC
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02230CC0: .word 0x0223F4F4
+_02230CC4: .word 0x0224311C
+_02230CC8: .word 0x0223F534
+_02230CCC: .word 0x0223F536
+_02230CD0: .word 0x0223F538
+_02230CD4: .word 0x0223F53A
+
+ arm_func_start MOD13_02230CD8
+MOD13_02230CD8: ; 0x02230CD8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02230B30
+ bl MOD13_02230B2C
+ bl MOD13_02230ACC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _02230D24 ; =MOD13_02230CD8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02230D24: .word MOD13_02230CD8
+
+ arm_func_start MOD13_02230D28
+MOD13_02230D28: ; 0x02230D28
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221F0EC
+ ldr r0, _02230D70 ; =0x02230CF4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02230D70: .word 0x02230CF4
+
+ arm_func_start MOD13_02230D74
+MOD13_02230D74: ; 0x02230D74
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x14
+ bl MOD13_0223AEF4
+ ldr r0, _02230DCC ; =MOD13_02230D28
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02230DCC: .word MOD13_02230D28
+
+ arm_func_start MOD13_02230DD0
+MOD13_02230DD0: ; 0x02230DD0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x1c
+ ldr ip, _02230E94 ; =0x0223F4BC
+ add r3, sp, #0
+ mov r2, #0xb
+_02230DE4:
+ ldrb r1, [ip], #1
+ ldrb r0, [ip], #1
+ subs r2, r2, #1
+ strb r1, [r3], #1
+ strb r0, [r3], #1
+ bne _02230DE4
+ ldr r0, _02230E98 ; =0x02240480
+ ldr r1, _02230E9C ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r0, _02230EA0 ; =0x02240498
+ ldr r1, _02230EA4 ; =0x020C9550
+ bl MOD13_0221F174
+ ldr r0, _02230EA8 ; =0x022404B0
+ ldr r1, _02230EAC ; =0x020C908C
+ bl MOD13_0221F174
+ add r0, sp, #0
+ bl MOD13_0221F1BC
+ mov r1, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ ldr r1, _02230EB0 ; =0x02243124
+ ldr ip, _02230EB4 ; =0x04001008
+ str r0, [r1]
+ ldrh r0, [ip]
+ ldr r3, _02230EB8 ; =0x0400100A
+ ldr r2, _02230EBC ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ ldr r1, _02230EC0 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #0x1c
+ ldmia sp!, {pc}
+ .align 2, 0
+_02230E94: .word 0x0223F4BC
+_02230E98: .word 0x02240480
+_02230E9C: .word 0x020C8D4C
+_02230EA0: .word 0x02240498
+_02230EA4: .word 0x020C9550
+_02230EA8: .word 0x022404B0
+_02230EAC: .word 0x020C908C
+_02230EB0: .word 0x02243124
+_02230EB4: .word 0x04001008
+_02230EB8: .word 0x0400100A
+_02230EBC: .word 0x0400000A
+_02230EC0: .word 0x0400000C
+
+ arm_func_start MOD13_02230EC4
+MOD13_02230EC4: ; 0x02230EC4
+ stmdb sp!, {r4, r5, r6, lr}
+ bl MOD13_02234164
+ ldr r1, _02230FD0 ; =0x02243118
+ ldr r2, _02230FD4 ; =0x02243120
+ ldrsb r3, [r1]
+ mov r5, #0
+ mov r4, r0
+ cmp r3, #0
+ moveq r0, #1
+ strb r5, [r2]
+ streqb r0, [r1]
+ bl MOD13_02222F34
+ cmp r0, #0
+ beq _02230F24
+ ldr r0, _02230FD8 ; =0x0224311C
+ ldrsb r1, [r0]
+ cmp r1, #2
+ moveq r1, #0
+ streqb r1, [r0]
+ ldr r0, _02230FD0 ; =0x02243118
+ ldrsb r1, [r0]
+ cmp r1, #2
+ moveq r1, #1
+ streqb r1, [r0]
+_02230F24:
+ bl MOD13_02230DD0
+ bl MOD13_0221F4AC
+ bl MOD13_02222F34
+ mov r5, r0
+ ldrb r1, [r4, #0xf4]
+ mov r0, #0x32
+ ldr r3, _02230FDC ; =0x0223F4B4
+ add r2, r1, #1
+ ldrsb r1, [r3, r5]
+ bl MOD13_0221EE98
+ mov r0, #1
+ bl MOD13_0221F124
+ mov r0, #1
+ bl MOD13_02222EFC
+ mov r6, r0
+ mov r0, #1
+ bl MOD13_02222EFC
+ mov r5, r0
+ mov r0, #1
+ bl MOD13_02222EFC
+ mov r4, r0
+ mov r0, #1
+ bl MOD13_02222EFC
+ mov r3, r0
+ ldr r1, _02230FE0 ; =0x0223F534
+ ldr r0, _02230FD8 ; =0x0224311C
+ add ip, r1, r6, lsl #5
+ ldrsb lr, [r0]
+ ldr r1, _02230FE4 ; =0x0223F538
+ ldr r0, _02230FE8 ; =0x0223F536
+ add r1, r1, r5, lsl #5
+ add r2, r0, r4, lsl #5
+ mov r5, lr, lsl #3
+ ldrh r0, [r5, ip]
+ ldrh r1, [r5, r1]
+ ldrh r2, [r5, r2]
+ ldr r4, _02230FEC ; =0x0223F53A
+ add r3, r4, r3, lsl #5
+ ldrh r3, [r5, r3]
+ bl MOD13_0221F25C
+ ldr r0, _02230FF0 ; =MOD13_02230D74
+ bl MOD13_02222FBC
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_02230FD0: .word 0x02243118
+_02230FD4: .word 0x02243120
+_02230FD8: .word 0x0224311C
+_02230FDC: .word 0x0223F4B4
+_02230FE0: .word 0x0223F534
+_02230FE4: .word 0x0223F538
+_02230FE8: .word 0x0223F536
+_02230FEC: .word 0x0223F53A
+_02230FF0: .word MOD13_02230D74
+
+ arm_func_start MOD13_02230FF4
+MOD13_02230FF4: ; 0x02230FF4
+ ldr ip, _02231000 ; =MOD13_0223AF48
+ mov r0, r1
+ bx ip
+ .align 2, 0
+_02231000: .word MOD13_0223AF48
+
+ arm_func_start MOD13_02231004
+MOD13_02231004: ; 0x02231004
+ ldr ip, _02231014 ; =MOD13_0223B004
+ mov r0, r1
+ mov r1, #0x20
+ bx ip
+ .align 2, 0
+_02231014: .word MOD13_0223B004
+
+ arm_func_start MOD13_02231018
+MOD13_02231018: ; 0x02231018
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ bl MOD04_021EBB80
+ movs r4, r0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ bl MOD13_0221F694
+ bl MOD13_022341E8
+ cmp r4, #0
+ ble _0223105C
+ ldr r1, _02231088 ; =0x02243128
+ mov r2, #1
+ mov r0, #0x11
+ strb r2, [r1]
+ bl MOD13_0223424C
+ b _0223106C
+_0223105C:
+ bl MOD04_021EBAE8
+ bl MOD13_0222B0BC
+ mov r0, #0x12
+ bl MOD13_0223424C
+_0223106C:
+ ldr r0, _0223108C ; =MOD13_0223115C
+ bl MOD13_02222FBC
+ mov r1, r5
+ mov r0, #0
+ bl MOD13_0223C110
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02231088: .word 0x02243128
+_0223108C: .word MOD13_0223115C
+
+ arm_func_start MOD13_02231090
+MOD13_02231090: ; 0x02231090
+ stmdb sp!, {r4, lr}
+ bl MOD13_022338FC
+ mov r4, r0
+ bl MOD04_021EB9D8
+ cmp r0, #0
+ ldmeqia sp!, {r4, pc}
+ bl FUN_02095324
+ add r1, r4, #0xf0
+ mov r2, #0xe
+ bl MI_CpuCopy8
+ bl FUN_02095324
+ add r1, r4, #0x1f0
+ mov r2, #0xe
+ bl MI_CpuCopy8
+ bl MOD13_0221E654
+ mov r0, #0
+ bl MOD13_0223A65C
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ ldr r0, _02231120 ; =0x02243128
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02231108
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02231124 ; =MOD13_0222B7D0
+ bl MOD13_02222FBC
+ ldmia sp!, {r4, pc}
+_02231108:
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02231128 ; =MOD13_02231704
+ bl MOD13_02222FBC
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02231120: .word 0x02243128
+_02231124: .word MOD13_0222B7D0
+_02231128: .word MOD13_02231704
+
+ arm_func_start MOD13_0223112C
+MOD13_0223112C: ; 0x0223112C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02231158 ; =MOD13_02231090
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231158: .word MOD13_02231090
+
+ arm_func_start MOD13_0223115C
+MOD13_0223115C: ; 0x0223115C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02231188 ; =MOD13_0223112C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231188: .word MOD13_0223112C
+
+ arm_func_start MOD13_0223118C
+MOD13_0223118C: ; 0x0223118C
+ bx lr
+
+ arm_func_start MOD13_02231190
+MOD13_02231190: ; 0x02231190
+ bx lr
+
+ arm_func_start MOD13_02231194
+MOD13_02231194: ; 0x02231194
+ bx lr
+
+ arm_func_start MOD13_02231198
+MOD13_02231198: ; 0x02231198
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02231194
+ bl MOD13_02231190
+ bl MOD13_0223118C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _022311F4 ; =MOD13_02231198
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022311F4: .word MOD13_02231198
+
+ arm_func_start MOD13_022311F8
+MOD13_022311F8: ; 0x022311F8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ add r1, sp, #0
+ mov r0, #0
+ bl MOD13_02222F44
+ ldr r0, [sp]
+ cmp r0, #0
+ bne _02231258
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+_02231258:
+ ldr r0, _02231268 ; =0x022311B4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231268: .word 0x022311B4
+
+ arm_func_start MOD13_0223126C
+MOD13_0223126C: ; 0x0223126C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0x10
+ bl MOD13_02234164
+ mov r4, r0
+ ldr r0, _022312FC ; =0x0223F574
+ add r1, sp, #4
+ mov r2, #0xc
+ bl MIi_CpuCopy32
+ add r1, sp, #0
+ mov r0, #0
+ bl MOD13_02222F44
+ ldr r0, [sp]
+ cmp r0, #2
+ moveq r0, #4
+ streqb r0, [sp, #0xe]
+ ldrneb r0, [r4, #0xf4]
+ addne r0, r0, #1
+ strneb r0, [sp, #0xe]
+ add r0, sp, #4
+ bl MOD04_021EBC60
+ cmp r0, #0
+ bne _022312C8
+ bl OS_Terminate
+_022312C8:
+ ldr r0, [sp]
+ cmp r0, #0
+ bne _022312E0
+ ldrb r0, [r4, #0xf4]
+ mov r1, r4
+ bl MOD04_021EB9A4
+_022312E0:
+ mov r0, #0
+ ldr r1, _02231300 ; =MOD13_02231018
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ add sp, sp, #0x10
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022312FC: .word 0x0223F574
+_02231300: .word MOD13_02231018
+
+ arm_func_start MOD13_02231304
+MOD13_02231304: ; 0x02231304
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0223139C ; =0x022404C4
+ ldr r1, _022313A0 ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r0, _022313A4 ; =0x022404DC
+ ldr r1, _022313A8 ; =0x020C9550
+ bl MOD13_0221F174
+ ldr r0, _022313AC ; =0x022404F4
+ ldr r1, _022313B0 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _022313B4 ; =0x04001008
+ ldr ip, _022313B8 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _022313BC ; =0x04000008
+ ldr r2, _022313C0 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _022313C4 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223139C: .word 0x022404C4
+_022313A0: .word 0x020C8D4C
+_022313A4: .word 0x022404DC
+_022313A8: .word 0x020C9550
+_022313AC: .word 0x022404F4
+_022313B0: .word 0x020C908C
+_022313B4: .word 0x04001008
+_022313B8: .word 0x0400100A
+_022313BC: .word 0x04000008
+_022313C0: .word 0x0400000A
+_022313C4: .word 0x0400000C
+
+ arm_func_start MOD13_022313C8
+MOD13_022313C8: ; 0x022313C8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02231454 ; =0x02243128
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_02231304
+ add r1, sp, #0
+ mov r0, #0
+ bl MOD13_02222F44
+ ldr r0, [sp]
+ cmp r0, #0
+ bne _02231408
+ mov r0, #0x31
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+_02231408:
+ mov r0, #2
+ bl MOD13_0221F124
+ ldr r0, [sp]
+ cmp r0, #0
+ bne _02231420
+ bl MOD13_0221F4AC
+_02231420:
+ mov r0, #0x2c
+ bl MOD13_0221F070
+ mov r0, #0
+ bl MOD13_0221E694
+ bl MOD13_0223126C
+ mov r0, #0
+ bl MOD13_0221F6E0
+ mov r0, #0xc
+ bl MOD13_0223424C
+ ldr r0, _02231458 ; =MOD13_022311F8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231454: .word 0x02243128
+_02231458: .word MOD13_022311F8
+
+ arm_func_start MOD13_0223145C
+MOD13_0223145C: ; 0x0223145C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022314D0 ; =0x0224312C
+ ldrb r1, [r0]
+ add r1, r1, #1
+ strb r1, [r0]
+ ldrb r0, [r0]
+ cmp r0, #0xb4
+ addlo sp, sp, #4
+ ldmloia sp!, {pc}
+ add r1, sp, #0
+ mov r0, #0
+ bl MOD13_02222F44
+ bl MOD13_02222F1C
+ cmp r0, #0
+ beq _022314C0
+ cmp r0, #1
+ bne _022314C0
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _022314C0
+ ldr r0, _022314D4 ; =MOD13_02223CFC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022314C0:
+ ldr r0, _022314D8 ; =MOD13_02231598
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022314D0: .word 0x0224312C
+_022314D4: .word MOD13_02223CFC
+_022314D8: .word MOD13_02231598
+
+ arm_func_start MOD13_022314DC
+MOD13_022314DC: ; 0x022314DC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_022343D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A65C
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ add r1, sp, #0
+ mov r0, #0
+ bl MOD13_02222F44
+ ldr r0, [sp]
+ cmp r0, #0
+ bne _02231580
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222F6C
+ ldr r0, _02231590 ; =MOD13_0222DD4C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02231580:
+ ldr r0, _02231594 ; =MOD13_022245B4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231590: .word MOD13_0222DD4C
+_02231594: .word MOD13_022245B4
+
+ arm_func_start MOD13_02231598
+MOD13_02231598: ; 0x02231598
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ add r1, sp, #0
+ mov r0, #0
+ bl MOD13_02222F44
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _022315BC
+ bl MOD13_02234908
+_022315BC:
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _022315F4 ; =MOD13_022314DC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022315F4: .word MOD13_022314DC
+
+ arm_func_start MOD13_022315F8
+MOD13_022315F8: ; 0x022315F8
+ bx lr
+
+ arm_func_start MOD13_022315FC
+MOD13_022315FC: ; 0x022315FC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0223145C
+ bl MOD13_022315F8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02231640 ; =MOD13_022315FC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231640: .word MOD13_022315FC
+
+ arm_func_start MOD13_02231644
+MOD13_02231644: ; 0x02231644
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _0223167C ; =0x02231614
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223167C: .word 0x02231614
+
+ arm_func_start MOD13_02231680
+MOD13_02231680: ; 0x02231680
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022316EC ; =0x02240508
+ ldr r1, _022316F0 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr ip, _022316F4 ; =0x04001008
+ ldr r3, _022316F8 ; =0x0400100A
+ ldrh r0, [ip]
+ ldr r2, _022316FC ; =0x0400000A
+ ldr r1, _02231700 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022316EC: .word 0x02240508
+_022316F0: .word 0x020C908C
+_022316F4: .word 0x04001008
+_022316F8: .word 0x0400100A
+_022316FC: .word 0x0400000A
+_02231700: .word 0x0400000C
+
+ arm_func_start MOD13_02231704
+MOD13_02231704: ; 0x02231704
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02231734 ; =0x0224312C
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_02231680
+ mov r0, #0x2d
+ bl MOD13_0221F070
+ ldr r0, _02231738 ; =MOD13_02231644
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231734: .word 0x0224312C
+_02231738: .word MOD13_02231644
+
+ arm_func_start MOD13_0223173C
+MOD13_0223173C: ; 0x0223173C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ mov r1, #0x14
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02231780 ; =MOD13_022313C8
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231780: .word MOD13_022313C8
+
+ arm_func_start MOD13_02231784
+MOD13_02231784: ; 0x02231784
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _022317C0 ; =MOD13_0223173C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022317C0: .word MOD13_0223173C
+
+ arm_func_start MOD13_022317C4
+MOD13_022317C4: ; 0x022317C4
+ bx lr
+
+ arm_func_start MOD13_022317C8
+MOD13_022317C8: ; 0x022317C8
+ bx lr
+
+ arm_func_start MOD13_022317CC
+MOD13_022317CC: ; 0x022317CC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_022317C8
+ bl MOD13_022317C4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_02235EB0
+ mov r0, #6
+ bl MOD13_0223424C
+ ldr r0, _02231810 ; =MOD13_02231784
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231810: .word MOD13_02231784
+
+ arm_func_start MOD13_02231814
+MOD13_02231814: ; 0x02231814
+ stmdb sp!, {lr}
+ sub sp, sp, #0x14
+ ldr r0, _02231894 ; =0x0223F580
+ add r3, sp, #8
+ ldmia r0, {r0, r1, r2}
+ stmia r3, {r0, r1, r2}
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #0x14
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #0x14
+ ldmneia sp!, {pc}
+ add r1, sp, #4
+ mov r0, #0
+ bl MOD13_02222F44
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #1
+ ldr r3, [sp, #4]
+ add r0, sp, #8
+ ldr r0, [r0, r3, lsl #2]
+ mov r2, r1
+ mvn r3, #0
+ bl MOD13_02235EFC
+ ldr r0, _02231898 ; =MOD13_022317CC
+ bl MOD13_02222FBC
+ add sp, sp, #0x14
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231894: .word 0x0223F580
+_02231898: .word MOD13_022317CC
+
+ arm_func_start MOD13_0223189C
+MOD13_0223189C: ; 0x0223189C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x14
+ bl MOD13_0223AEF4
+ ldr r0, _022318F4 ; =MOD13_02231814
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022318F4: .word MOD13_02231814
+
+ arm_func_start MOD13_022318F8
+MOD13_022318F8: ; 0x022318F8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02231964 ; =0x0224051C
+ ldr r1, _02231968 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr ip, _0223196C ; =0x04001008
+ ldr r3, _02231970 ; =0x0400100A
+ ldrh r0, [ip]
+ ldr r2, _02231974 ; =0x0400000A
+ ldr r1, _02231978 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231964: .word 0x0224051C
+_02231968: .word 0x020C908C
+_0223196C: .word 0x04001008
+_02231970: .word 0x0400100A
+_02231974: .word 0x0400000A
+_02231978: .word 0x0400000C
+
+ arm_func_start MOD13_0223197C
+MOD13_0223197C: ; 0x0223197C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02233570
+ add r1, sp, #0
+ mov r0, #0
+ bl MOD13_02222F44
+ bl MOD13_022318F8
+ mov r0, #0x31
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ ldr r0, [sp]
+ cmp r0, #2
+ beq _022319B8
+ bl MOD13_0221F4AC
+_022319B8:
+ ldr r0, [sp]
+ cmp r0, #1
+ bne _022319C8
+ bl MOD13_02233B3C
+_022319C8:
+ ldr r0, _022319D8 ; =MOD13_0223189C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022319D8: .word MOD13_0223189C
+
+ arm_func_start MOD13_022319DC
+MOD13_022319DC: ; 0x022319DC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02231A14 ; =0x02243130
+ ldrb r1, [r0]
+ add r1, r1, #1
+ strb r1, [r0]
+ ldrb r0, [r0]
+ cmp r0, #0x78
+ addlo sp, sp, #4
+ ldmloia sp!, {pc}
+ ldr r0, _02231A18 ; =MOD13_02231A9C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231A14: .word 0x02243130
+_02231A18: .word MOD13_02231A9C
+
+ arm_func_start MOD13_02231A1C
+MOD13_02231A1C: ; 0x02231A1C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A65C
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222FA8
+ mov r0, #0
+ mov r1, #2
+ bl MOD13_02222F6C
+ ldr r0, _02231A98 ; =MOD13_0223197C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231A98: .word MOD13_0223197C
+
+ arm_func_start MOD13_02231A9C
+MOD13_02231A9C: ; 0x02231A9C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02231ADC ; =MOD13_02231A1C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231ADC: .word MOD13_02231A1C
+
+ arm_func_start MOD13_02231AE0
+MOD13_02231AE0: ; 0x02231AE0
+ bx lr
+
+ arm_func_start MOD13_02231AE4
+MOD13_02231AE4: ; 0x02231AE4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_022319DC
+ bl MOD13_02231AE0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02231B28 ; =MOD13_02231AE4
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231B28: .word MOD13_02231AE4
+
+ arm_func_start MOD13_02231B2C
+MOD13_02231B2C: ; 0x02231B2C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _02231B64 ; =0x02231AFC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231B64: .word 0x02231AFC
+
+ arm_func_start MOD13_02231B68
+MOD13_02231B68: ; 0x02231B68
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02231BE8 ; =0x02240530
+ ldr r1, _02231BEC ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _02231BF0 ; =0x04001008
+ ldr ip, _02231BF4 ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02231BF8 ; =0x04000008
+ ldr r2, _02231BFC ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _02231C00 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231BE8: .word 0x02240530
+_02231BEC: .word 0x020C908C
+_02231BF0: .word 0x04001008
+_02231BF4: .word 0x0400100A
+_02231BF8: .word 0x04000008
+_02231BFC: .word 0x0400000A
+_02231C00: .word 0x0400000C
+
+ arm_func_start MOD13_02231C04
+MOD13_02231C04: ; 0x02231C04
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02231C44 ; =0x02243130
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_02231B68
+ mov r0, #8
+ bl MOD13_0221F4CC
+ mov r0, #0x29
+ bl MOD13_0221F070
+ mov r0, #0x10
+ bl MOD13_0223424C
+ ldr r0, _02231C48 ; =MOD13_02231B2C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231C44: .word 0x02243130
+_02231C48: .word MOD13_02231B2C
+
+ arm_func_start MOD13_02231C4C
+MOD13_02231C4C: ; 0x02231C4C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02231D18 ; =0x02243134
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02231C8C
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_02231C8C:
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A65C
+ ldr r0, _02231D18 ; =0x02243134
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02231CC4
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+_02231CC4:
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ ldr r0, _02231D18 ; =0x02243134
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02231CFC
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02231D1C ; =MOD13_02230714
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02231CFC:
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _02231D20 ; =MOD13_0223269C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231D18: .word 0x02243134
+_02231D1C: .word MOD13_02230714
+_02231D20: .word MOD13_0223269C
+
+ arm_func_start MOD13_02231D24
+MOD13_02231D24: ; 0x02231D24
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ED28
+ ldr r0, _02231D8C ; =0x02243134
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02231D68
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+_02231D68:
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02231D90 ; =MOD13_02231C4C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231D8C: .word 0x02243134
+_02231D90: .word MOD13_02231C4C
+
+ arm_func_start MOD13_02231D94
+MOD13_02231D94: ; 0x02231D94
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _02231DB8 ; =MOD13_02231D24
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231DB8: .word MOD13_02231D24
+
+ arm_func_start MOD13_02231DBC
+MOD13_02231DBC: ; 0x02231DBC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ cmp r0, #0
+ beq _02231DE0
+ cmp r0, #1
+ beq _02231DEC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02231DE0:
+ mov r0, #7
+ bl MOD13_0223424C
+ b _02231E00
+_02231DEC:
+ mov r0, #6
+ bl MOD13_0223424C
+ ldr r0, _02231E10 ; =0x02243134
+ mov r1, #1
+ strb r1, [r0]
+_02231E00:
+ ldr r0, _02231E14 ; =MOD13_02231D94
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231E10: .word 0x02243134
+_02231E14: .word MOD13_02231D94
+
+ arm_func_start MOD13_02231E18
+MOD13_02231E18: ; 0x02231E18
+ bx lr
+
+ arm_func_start MOD13_02231E1C
+MOD13_02231E1C: ; 0x02231E1C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _02231E3C
+ mov r0, #1
+ bl MOD13_0221ECF4
+_02231E3C:
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02231E1C
+ bl MOD13_02231E18
+ bl MOD13_02231DBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _02231EAC ; =0x02231E60
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231EAC: .word 0x02231E60
+
+ arm_func_start MOD13_02231EB0
+MOD13_02231EB0: ; 0x02231EB0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0221F0EC
+ ldr r0, _02231EF8 ; =0x02231E7C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231EF8: .word 0x02231E7C
+
+ arm_func_start MOD13_02231EFC
+MOD13_02231EFC: ; 0x02231EFC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r2, r1
+ mov r0, #2
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AEF4
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _02231F54 ; =MOD13_02231EB0
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231F54: .word MOD13_02231EB0
+
+ arm_func_start MOD13_02231F58
+MOD13_02231F58: ; 0x02231F58
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02231FF0 ; =0x02240544
+ ldr r1, _02231FF4 ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r0, _02231FF8 ; =0x0224055C
+ ldr r1, _02231FFC ; =0x020C9550
+ bl MOD13_0221F174
+ ldr r0, _02232000 ; =0x02240574
+ ldr r1, _02232004 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _02232008 ; =0x04001008
+ ldr ip, _0223200C ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02232010 ; =0x04000008
+ ldr r2, _02232014 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _02232018 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02231FF0: .word 0x02240544
+_02231FF4: .word 0x020C8D4C
+_02231FF8: .word 0x0224055C
+_02231FFC: .word 0x020C9550
+_02232000: .word 0x02240574
+_02232004: .word 0x020C908C
+_02232008: .word 0x04001008
+_0223200C: .word 0x0400100A
+_02232010: .word 0x04000008
+_02232014: .word 0x0400000A
+_02232018: .word 0x0400000C
+
+ arm_func_start MOD13_0223201C
+MOD13_0223201C: ; 0x0223201C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0223206C ; =0x02243134
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_02231F58
+ mov r0, #8
+ bl MOD13_0221F4CC
+ mov r0, #0x38
+ mvn r1, #0
+ mov r2, #0
+ bl MOD13_0221EE98
+ mov r0, #1
+ bl MOD13_0221F124
+ mov r0, #0x27
+ bl MOD13_0221F070
+ ldr r0, _02232070 ; =MOD13_02231EFC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223206C: .word 0x02243134
+_02232070: .word MOD13_02231EFC
+
+ arm_func_start MOD13_02232074
+MOD13_02232074: ; 0x02232074
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _022320DC ; =0x02243138
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _022320AC
+ ldr r0, _022320E0 ; =MOD13_02232444
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022320AC:
+ mov r0, #0xb
+ bl MOD13_0223424C
+ bl MOD13_0221EC9C
+ ldr r1, _022320DC ; =0x02243138
+ mov r2, #0
+ ldr r0, _022320E4 ; =MOD13_022321B8
+ strb r2, [r1]
+ bl MOD13_022353A4
+ ldr r0, _022320E8 ; =0x02232514
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022320DC: .word 0x02243138
+_022320E0: .word MOD13_02232444
+_022320E4: .word MOD13_022321B8
+_022320E8: .word 0x02232514
+
+ arm_func_start MOD13_022320EC
+MOD13_022320EC: ; 0x022320EC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ beq _02232124
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r1, _0223214C ; =0x02243138
+ mov r2, #3
+ mov r0, #6
+ strb r2, [r1]
+ bl MOD13_0223424C
+ b _02232138
+_02232124:
+ ldr r1, _0223214C ; =0x02243138
+ mov r2, #1
+ mov r0, #7
+ strb r2, [r1]
+ bl MOD13_0223424C
+_02232138:
+ bl MOD13_02235EB0
+ ldr r0, _02232150 ; =MOD13_02232074
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223214C: .word 0x02243138
+_02232150: .word MOD13_02232074
+
+ arm_func_start MOD13_02232154
+MOD13_02232154: ; 0x02232154
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E80
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _0223217C ; =MOD13_02232444
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223217C: .word MOD13_02232444
+
+ arm_func_start MOD13_02232180
+MOD13_02232180: ; 0x02232180
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02235E9C
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #6
+ bl MOD13_0223424C
+ bl MOD13_02235EB0
+ ldr r0, _022321B4 ; =MOD13_02232154
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022321B4: .word MOD13_02232154
+
+ arm_func_start MOD13_022321B8
+MOD13_022321B8: ; 0x022321B8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _022322AC ; =0x02243138
+ ldrb r2, [r1]
+ cmp r2, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ cmp r0, #3
+ addls pc, pc, r0, lsl #2
+ b _022322A4
+_022321E0: ; jump table
+ b _022321F0 ; case 0
+ b _02232234 ; case 1
+ b _02232250 ; case 2
+ b _02232288 ; case 3
+_022321F0:
+ mov r0, #3
+ strb r0, [r1]
+ bl MOD13_022341E8
+ mov r0, #0x12
+ bl MOD13_0223424C
+ mov r1, #1
+ mov ip, #0
+ mov r2, r1
+ mov r0, #0x10
+ mvn r3, #0
+ str ip, [sp]
+ bl MOD13_02235EFC
+ bl MOD13_0221EC84
+ ldr r0, _022322B0 ; =MOD13_02232180
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02232234:
+ mov r0, #1
+ strb r0, [r1]
+ bl MOD13_022341E8
+ ldr r0, _022322B4 ; =MOD13_02232444
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02232250:
+ bl MOD13_022341E8
+ mov r0, #0
+ bl MOD13_022353A4
+ mov r1, #0
+ mov r0, #0x11
+ mov r2, #1
+ mvn r3, #0
+ str r1, [sp]
+ bl MOD13_02235EFC
+ bl MOD13_0221EC84
+ ldr r0, _022322B8 ; =MOD13_022320EC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02232288:
+ mov r0, #2
+ strb r0, [r1]
+ bl MOD13_022341E8
+ mov r0, #9
+ bl MOD13_0223424C
+ ldr r0, _022322B4 ; =MOD13_02232444
+ bl MOD13_02222FBC
+_022322A4:
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022322AC: .word 0x02243138
+_022322B0: .word MOD13_02232180
+_022322B4: .word MOD13_02232444
+_022322B8: .word MOD13_022320EC
+
+ arm_func_start MOD13_022322BC
+MOD13_022322BC: ; 0x022322BC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _022323BC ; =0x02243138
+ ldrb r0, [r0]
+ cmp r0, #2
+ bne _022322FC
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+_022322FC:
+ bl MOD13_0221ECB4
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_022353BC
+ bl MOD13_0221E654
+ mov r0, #0
+ bl MOD13_0223A65C
+ ldr r0, _022323BC ; =0x02243138
+ ldrb r0, [r0]
+ add r0, r0, #0xfe
+ and r0, r0, #0xff
+ cmp r0, #1
+ bhi _02232344
+ bl MOD13_0221EE54
+ mov r0, #1
+ mov r1, r0
+ bl MOD13_0223AE98
+_02232344:
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AE98
+ ldr r0, _022323BC ; =0x02243138
+ ldrb r0, [r0]
+ cmp r0, #2
+ bne _0223237C
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _022323C0 ; =MOD13_02230714
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0223237C:
+ cmp r0, #3
+ bne _022323A0
+ mov r0, #2
+ mov r1, #1
+ bl MOD13_02222FA8
+ ldr r0, _022323C4 ; =MOD13_0223201C
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022323A0:
+ mov r0, #0
+ mov r1, r0
+ bl MOD13_02222FA8
+ ldr r0, _022323C8 ; =MOD13_02231C04
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022323BC: .word 0x02243138
+_022323C0: .word MOD13_02230714
+_022323C4: .word MOD13_0223201C
+_022323C8: .word MOD13_02231C04
+
+ arm_func_start MOD13_022323CC
+MOD13_022323CC: ; 0x022323CC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ED28
+ ldr r0, _0223243C ; =0x02243138
+ ldrb r0, [r0]
+ add r0, r0, #0xfe
+ and r0, r0, #0xff
+ cmp r0, #1
+ bhi _02232418
+ mov r1, #1
+ mov r2, r1
+ mov r0, #3
+ mov r3, #8
+ bl MOD13_0223A2A8
+_02232418:
+ mov r0, #3
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ ldr r0, _02232440 ; =MOD13_022322BC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223243C: .word 0x02243138
+_02232440: .word MOD13_022322BC
+
+ arm_func_start MOD13_02232444
+MOD13_02232444: ; 0x02232444
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221EC84
+ mov r0, #8
+ bl MOD13_0223A10C
+ ldr r0, _02232468 ; =MOD13_022323CC
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02232468: .word MOD13_022323CC
+
+ arm_func_start MOD13_0223246C
+MOD13_0223246C: ; 0x0223246C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022324C0 ; =0x02243138
+ ldrb r0, [r0]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_0221ED14
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _022324C0 ; =0x02243138
+ mov r1, #2
+ strb r1, [r0]
+ bl MOD13_022341E8
+ mov r0, #7
+ bl MOD13_0223424C
+ ldr r0, _022324C4 ; =MOD13_02232444
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022324C0: .word 0x02243138
+_022324C4: .word MOD13_02232444
+
+ arm_func_start MOD13_022324C8
+MOD13_022324C8: ; 0x022324C8
+ bx lr
+
+ arm_func_start MOD13_022324CC
+MOD13_022324CC: ; 0x022324CC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _022324F4
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022324F4:
+ bl MOD13_02232730
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0221ECF4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_022324CC
+ bl MOD13_022324C8
+ bl MOD13_0223246C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0221ED14
+ mvn r1, #1
+ cmp r0, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD13_0221EC9C
+ ldr r0, _02232560 ; =0x02232514
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02232560: .word 0x02232514
+
+ arm_func_start MOD13_02232564
+MOD13_02232564: ; 0x02232564
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0
+ bl MOD13_0223A388
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #2
+ bl MOD13_0221F0EC
+ ldr r0, _02232598 ; =0x02232530
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02232598: .word 0x02232530
+
+ arm_func_start MOD13_0223259C
+MOD13_0223259C: ; 0x0223259C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #2
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #8
+ bl MOD13_0223A2A8
+ mov r0, #0
+ mov r1, #0x15
+ bl MOD13_0223AEF4
+ ldr r0, _022325D4 ; =MOD13_02232564
+ bl MOD13_02222FBC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022325D4: .word MOD13_02232564
+
+ arm_func_start MOD13_022325D8
+MOD13_022325D8: ; 0x022325D8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02232670 ; =0x02240588
+ ldr r1, _02232674 ; =0x020C8D4C
+ bl MOD13_0221F174
+ ldr r0, _02232678 ; =0x022405A0
+ ldr r1, _0223267C ; =0x020C9550
+ bl MOD13_0221F174
+ ldr r0, _02232680 ; =0x022405B8
+ ldr r1, _02232684 ; =0x020C908C
+ bl MOD13_0221F174
+ ldr r1, _02232688 ; =0x04001008
+ ldr ip, _0223268C ; =0x0400100A
+ ldrh r0, [r1]
+ ldr r3, _02232690 ; =0x04000008
+ ldr r2, _02232694 ; =0x0400000A
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ ldrh r0, [ip]
+ ldr r1, _02232698 ; =0x0400000C
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [ip]
+ ldrh r0, [r3]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r3]
+ ldrh r0, [r2]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r2]
+ ldrh r0, [r1]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strh r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02232670: .word 0x02240588
+_02232674: .word 0x020C8D4C
+_02232678: .word 0x022405A0
+_0223267C: .word 0x020C9550
+_02232680: .word 0x022405B8
+_02232684: .word 0x020C908C
+_02232688: .word 0x04001008
+_0223268C: .word 0x0400100A
+_02232690: .word 0x04000008
+_02232694: .word 0x0400000A
+_02232698: .word 0x0400000C
+
+ arm_func_start MOD13_0223269C
+MOD13_0223269C: ; 0x0223269C
+ stmdb sp!, {lr}
+ sub sp, sp, #0x6c
+ ldr r0, _02232724 ; =0x02243138
+ mov r1, #0
+ strb r1, [r0]
+ bl MOD13_022325D8
+ mov r0, #8
+ bl MOD13_0221F4CC
+ mov r0, #2
+ bl MOD13_0221F124
+ add r0, sp, #0x16
+ bl OS_GetOwnerInfo
+ add r1, sp, #0
+ mov r0, #0
+ mov r2, #0x16
+ bl MIi_CpuClear16
+ ldrh r2, [sp, #0x2e]
+ add r0, sp, #0x1a
+ add r1, sp, #0
+ mov r2, r2, lsl #1
+ bl MIi_CpuCopy16
+ add r0, sp, #0
+ mov r1, #0x28
+ bl MOD13_0221EFA8
+ mov r0, #0
+ bl MOD13_0221E694
+ ldr r0, _02232728 ; =MOD13_022321B8
+ bl MOD13_022354F4
+ mov r0, #0xb
+ bl MOD13_0223424C
+ ldr r0, _0223272C ; =MOD13_0223259C
+ bl MOD13_02222FBC
+ add sp, sp, #0x6c
+ ldmia sp!, {pc}
+ .align 2, 0
+_02232724: .word 0x02243138
+_02232728: .word MOD13_022321B8
+_0223272C: .word MOD13_0223259C
+
+ arm_func_start MOD13_02232730
+MOD13_02232730: ; 0x02232730
+ ldr r0, _0223274C ; =0x027FFFA8
+ ldrh r0, [r0]
+ and r0, r0, #0x8000
+ movs r0, r0, asr #0xf
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_0223274C: .word 0x027FFFA8
+
+ arm_func_start MOD13_02232750
+MOD13_02232750: ; 0x02232750
+ stmdb sp!, {r4, lr}
+ ldr r1, _0223277C ; =0x02243140
+ mov r4, r0
+ ldr r0, [r1]
+ mov r1, #0x5000000
+ mov r2, #0x200
+ bl MIi_CpuCopy16
+ mov r1, r4
+ mov r0, #1
+ bl MOD13_0223C110
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0223277C: .word 0x02243140
+
+ arm_func_start MOD13_02232780
+MOD13_02232780: ; 0x02232780
+ ldr r2, _022327A0 ; =0x02243140
+ ldr ip, _022327A4 ; =MOD13_0223C1C4
+ str r0, [r2]
+ ldr r1, _022327A8 ; =MOD13_02232750
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0x78
+ bx ip
+ .align 2, 0
+_022327A0: .word 0x02243140
+_022327A4: .word MOD13_0223C1C4
+_022327A8: .word MOD13_02232750
+
+ arm_func_start MOD13_022327AC
+MOD13_022327AC: ; 0x022327AC
+ stmdb sp!, {r4, lr}
+ ldr r1, _022327D8 ; =0x02243140
+ mov r4, r0
+ ldr r0, [r1]
+ ldr r1, [r1, #4]
+ mov r2, #0x20
+ bl MIi_CpuCopy16
+ mov r1, r4
+ mov r0, #1
+ bl MOD13_0223C110
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022327D8: .word 0x02243140
+
+ arm_func_start MOD13_022327DC
+MOD13_022327DC: ; 0x022327DC
+ stmdb sp!, {r4, lr}
+ add r4, r0, r1, lsl #5
+ mov r0, r2, lsl #5
+ ldr ip, _02232810 ; =0x02243140
+ add lr, r0, #0x5000000
+ ldr r1, _02232814 ; =MOD13_022327AC
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0x78
+ str r4, [ip]
+ str lr, [ip, #4]
+ bl MOD13_0223C1C4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02232810: .word 0x02243140
+_02232814: .word MOD13_022327AC
+
+ arm_func_start MOD13_02232818
+MOD13_02232818: ; 0x02232818
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02232874 ; =0x0224313C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x604]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ add r0, r1, #4
+ mov r1, #0x600
+ bl DC_FlushRange
+ ldr r0, _02232874 ; =0x0224313C
+ mov r1, #0
+ ldr r0, [r0]
+ mov r2, #0x600
+ add r0, r0, #4
+ bl GX_LoadBG2Scr
+ ldr r0, _02232874 ; =0x0224313C
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x604]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02232874: .word 0x0224313C
+
+ arm_func_start MOD13_02232878
+MOD13_02232878: ; 0x02232878
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ ldr ip, _022328CC ; =0x0224313C
+ mov r7, r3
+ ldr r3, [ip]
+ mov r8, r0
+ add r0, r3, #4
+ add r6, r0, r1, lsl #1
+ mov r5, #0
+ cmp r7, #0
+ ldmleia sp!, {r4, r5, r6, r7, r8, pc}
+ mov r4, r2, lsl #1
+_022328A4:
+ mov r0, r8
+ mov r1, r6
+ mov r2, r4
+ bl MIi_CpuCopy16
+ add r5, r5, #1
+ cmp r5, r7
+ add r8, r8, #0x40
+ add r6, r6, #0x40
+ blt _022328A4
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_022328CC: .word 0x0224313C
+
+ arm_func_start MOD13_022328D0
+MOD13_022328D0: ; 0x022328D0
+ ldr r0, _022328E4 ; =0x0224313C
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x604]
+ bx lr
+ .align 2, 0
+_022328E4: .word 0x0224313C
+
+ arm_func_start MOD13_022328E8
+MOD13_022328E8: ; 0x022328E8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _02232914 ; =0x0224313C
+ mov r0, #1
+ ldr r1, [r1]
+ ldr r1, [r1]
+ bl MOD13_0223C104
+ ldr r0, _02232914 ; =0x0224313C
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02232914: .word 0x0224313C
+
+ arm_func_start MOD13_02232918
+MOD13_02232918: ; 0x02232918
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r0, _0223296C ; =0x00000608
+ mov r1, #4
+ bl MOD13_0223AFE0
+ mov ip, r0
+ ldr r3, _02232970 ; =0x0224313C
+ mov r0, r4
+ add r1, ip, #4
+ mov r2, #0x600
+ str ip, [r3]
+ bl MIi_CpuCopyFast
+ ldr r1, _02232974 ; =MOD13_02232818
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02232970 ; =0x0224313C
+ ldr r1, [r1]
+ str r0, [r1]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0223296C: .word 0x00000608
+_02232970: .word 0x0224313C
+_02232974: .word MOD13_02232818
+
+ arm_func_start MOD13_02232978
+MOD13_02232978: ; 0x02232978
+ stmdb sp!, {r4, lr}
+ ldr r1, _022329B0 ; =0x02243148
+ mov r4, r0
+ ldr r0, [r1]
+ mvn r1, #0
+ ldrh r3, [r0, #0x12]
+ ldrh r2, [r0, #0x10]
+ ldr r0, [r0]
+ add r3, r4, r3
+ bl MOD13_02239888
+ ldr r0, _022329B0 ; =0x02243148
+ ldr r0, [r0]
+ strb r4, [r0, #0x1a]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022329B0: .word 0x02243148
+
+ arm_func_start MOD13_022329B4
+MOD13_022329B4: ; 0x022329B4
+ ldr r2, _02232A8C ; =0x02243148
+ cmp r0, #4
+ ldr r3, [r2]
+ ldrh r3, [r3, #0x10]
+ strh r3, [r1]
+ ldrh r3, [r1]
+ add r3, r3, #0xc
+ strh r3, [r1, #4]
+ addls pc, pc, r0, lsl #2
+ bx lr
+_022329DC: ; jump table
+ bx lr ; case 0
+ b _022329F0 ; case 1
+ b _02232A24 ; case 2
+ b _02232A44 ; case 3
+ b _02232A68 ; case 4
+_022329F0:
+ ldr r3, [r2]
+ ldr r0, _02232A90 ; =0x0223F590
+ ldrh ip, [r3, #0x12]
+ ldrb r3, [r3, #0x1a]
+ add r3, ip, r3
+ strh r3, [r1, #2]
+ ldr r2, [r2]
+ ldrh r3, [r1, #2]
+ ldrb r2, [r2, #0x1b]
+ ldrb r0, [r0, r2]
+ add r0, r3, r0
+ strh r0, [r1, #6]
+ bx lr
+_02232A24:
+ ldr r0, [r2]
+ ldrh r0, [r0, #0x12]
+ sub r0, r0, #0xd
+ strh r0, [r1, #2]
+ ldr r0, [r2]
+ ldrh r0, [r0, #0x12]
+ strh r0, [r1, #6]
+ bx lr
+_02232A44:
+ ldr r0, [r2]
+ ldrh r2, [r0, #0x12]
+ ldrb r0, [r0, #0x19]
+ add r0, r2, r0
+ strh r0, [r1, #2]
+ ldrh r0, [r1, #2]
+ add r0, r0, #0xd
+ strh r0, [r1, #6]
+ bx lr
+_02232A68:
+ ldr r0, [r2]
+ ldrh r0, [r0, #0x12]
+ strh r0, [r1, #2]
+ ldr r0, [r2]
+ ldrh r2, [r1, #2]
+ ldrb r0, [r0, #0x19]
+ add r0, r2, r0
+ strh r0, [r1, #6]
+ bx lr
+ .align 2, 0
+_02232A8C: .word 0x02243148
+_02232A90: .word 0x0223F590
+
+ arm_func_start MOD13_02232A94
+MOD13_02232A94: ; 0x02232A94
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0xc
+ mov r5, #2
+ add r4, sp, #0
+_02232AA4:
+ mov r0, r5
+ mov r1, r4
+ bl MOD13_022329B4
+ mov r0, r4
+ bl MOD13_0223B320
+ cmp r0, #0
+ addne sp, sp, #0xc
+ movne r0, r5
+ ldmneia sp!, {r4, r5, pc}
+ add r5, r5, #1
+ cmp r5, #3
+ ble _02232AA4
+ mov r0, #0
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, pc}
+
+ arm_func_start MOD13_02232AE0
+MOD13_02232AE0: ; 0x02232AE0
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0xc
+ add r1, sp, #0
+ mov r0, #1
+ bl MOD13_022329B4
+ add r0, sp, #0
+ bl MOD13_0223B248
+ cmp r0, #0
+ addne sp, sp, #0xc
+ movne r0, #1
+ ldmneia sp!, {r4, r5, pc}
+ mov r5, #2
+ add r4, sp, #0
+_02232B14:
+ mov r0, r5
+ mov r1, r4
+ bl MOD13_022329B4
+ mov r0, r4
+ bl MOD13_0223B248
+ cmp r0, #0
+ addne sp, sp, #0xc
+ movne r0, r5
+ ldmneia sp!, {r4, r5, pc}
+ add r5, r5, #1
+ cmp r5, #3
+ ble _02232B14
+ add r1, sp, #0
+ mov r0, #4
+ bl MOD13_022329B4
+ add r0, sp, #0
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ movne r0, #4
+ moveq r0, #0
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, pc}
+
+ arm_func_start MOD13_02232B6C
+MOD13_02232B6C: ; 0x02232B6C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ add r0, sp, #0
+ bl MOD13_0223B14C
+ ldr r0, _02232BD8 ; =0x02243148
+ ldr r2, _02232BDC ; =0x0223F590
+ ldr ip, [r0]
+ ldrh r1, [sp, #2]
+ ldrb r3, [ip, #0x1b]
+ ldrh r0, [ip, #0x12]
+ ldrb r2, [r2, r3]
+ sub r1, r1, r0
+ mov r0, r2, lsr #1
+ subs r0, r1, r0
+ movmi r0, #0
+ bmi _02232BBC
+ ldrb r1, [ip, #0x19]
+ sub r1, r1, r2
+ cmp r0, r1
+ movge r0, r1
+_02232BBC:
+ bl MOD13_02232978
+ ldr r0, _02232BD8 ; =0x02243148
+ mov r1, #3
+ ldr r0, [r0]
+ strb r1, [r0, #0x1d]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02232BD8: .word 0x02243148
+_02232BDC: .word 0x0223F590
+
+ arm_func_start MOD13_02232BE0
+MOD13_02232BE0: ; 0x02232BE0
+ ldr r1, _02232C08 ; =0x02243148
+ cmp r0, #2
+ ldr r1, [r1]
+ strb r0, [r1, #0x1c]
+ ldr r0, _02232C08 ; =0x02243148
+ moveq r1, #4
+ ldr r0, [r0]
+ movne r1, #6
+ strb r1, [r0, #0x1d]
+ bx lr
+ .align 2, 0
+_02232C08: .word 0x02243148
+
+ arm_func_start MOD13_02232C0C
+MOD13_02232C0C: ; 0x02232C0C
+ stmdb sp!, {r4, lr}
+ ldr r1, _02232C80 ; =0x02243148
+ ldr r1, [r1]
+ ldrb r1, [r1, #0x1a]
+ subs r4, r1, r0
+ rsbmi r4, r4, #0
+ cmp r4, #2
+ movlt r0, #0
+ blt _02232C48
+ cmp r4, #6
+ movge r0, #0x7f
+ bge _02232C48
+ rsb r1, r4, #6
+ mov r0, #0x7f
+ bl FX_DivS32
+_02232C48:
+ bl MOD13_0223422C
+ cmp r4, #2
+ mvnlt r1, #0xff
+ blt _02232C74
+ cmp r4, #6
+ movge r1, #0x100
+ bge _02232C74
+ rsb r1, r4, #6
+ mov r0, #0x200
+ bl FX_DivS32
+ sub r1, r0, #0x100
+_02232C74:
+ ldr r0, _02232C84 ; =0x0000FFFF
+ bl MOD13_02234208
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02232C80: .word 0x02243148
+_02232C84: .word 0x0000FFFF
+
+ arm_func_start MOD13_02232C88
+MOD13_02232C88: ; 0x02232C88
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r0, _02232D4C ; =0x0223F75C
+ bl MOD13_0223B320
+ cmp r0, #0
+ beq _02232D24
+ add r0, sp, #0
+ bl MOD13_0223B14C
+ ldr r0, _02232D50 ; =0x02243148
+ ldrh r1, [sp]
+ ldr r3, [r0]
+ ldrh r0, [r3, #0x10]
+ sub r0, r0, #0x1e
+ cmp r1, r0
+ blt _02232D24
+ ldrh r1, [sp, #2]
+ ldrh r0, [r3, #0x16]
+ ldrb r2, [r3, #0x18]
+ sub r0, r1, r0
+ adds r4, r2, r0
+ movmi r4, #0
+ bmi _02232CFC
+ ldrb r1, [r3, #0x1b]
+ ldr r0, _02232D54 ; =0x0223F590
+ ldrb r2, [r3, #0x19]
+ ldrb r0, [r0, r1]
+ sub r0, r2, r0
+ cmp r4, r0
+ movge r4, r0
+_02232CFC:
+ mov r0, r4
+ bl MOD13_02232C0C
+ mov r0, r4
+ bl MOD13_02232978
+ ldr r0, _02232D50 ; =0x02243148
+ mov r1, #2
+ ldr r0, [r0]
+ add sp, sp, #8
+ strb r1, [r0, #0x1d]
+ ldmia sp!, {r4, pc}
+_02232D24:
+ bl MOD13_022341E8
+ ldr r0, _02232D50 ; =0x02243148
+ mov r3, #0
+ ldr r2, [r0]
+ mov r1, #3
+ strb r3, [r2, #0x1c]
+ ldr r0, [r0]
+ strb r1, [r0, #0x1d]
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02232D4C: .word 0x0223F75C
+_02232D50: .word 0x02243148
+_02232D54: .word 0x0223F590
+
+ arm_func_start MOD13_02232D58
+MOD13_02232D58: ; 0x02232D58
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02232F10 ; =0x02243148
+ mov r2, #0
+ ldr r1, [r0]
+ strb r2, [r1, #0x1d]
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x1c]
+ cmp r0, #3
+ addls pc, pc, r0, lsl #2
+ b _02232F08
+_02232D84: ; jump table
+ b _02232D94 ; case 0
+ b _02232E5C ; case 1
+ b _02232E68 ; case 2
+ b _02232EBC ; case 3
+_02232D94:
+ ldrb r0, [r1, #0x1e]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02232AE0
+ cmp r0, #4
+ addls pc, pc, r0, lsl #2
+ b _02232F08
+_02232DB4: ; jump table
+ b _02232F08 ; case 0
+ b _02232DC8 ; case 1
+ b _02232E30 ; case 2
+ b _02232E40 ; case 3
+ b _02232E50 ; case 4
+_02232DC8:
+ ldr r0, _02232F10 ; =0x02243148
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x1b]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0x16
+ bl MOD13_0223424C
+ mov r0, #0
+ bl MOD13_0223422C
+ ldr r0, _02232F10 ; =0x02243148
+ mov r2, #1
+ ldr r1, [r0]
+ strb r2, [r1, #0x1d]
+ ldr r0, [r0]
+ add r0, r0, #0x14
+ bl MOD13_0223B14C
+ ldr r0, _02232F10 ; =0x02243148
+ mov r1, #1
+ ldr r3, [r0]
+ add sp, sp, #4
+ ldrb r2, [r3, #0x1a]
+ strb r2, [r3, #0x18]
+ ldr r0, [r0]
+ strb r1, [r0, #0x1c]
+ ldmia sp!, {pc}
+_02232E30:
+ mov r0, #2
+ bl MOD13_02232BE0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02232E40:
+ mov r0, #3
+ bl MOD13_02232BE0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02232E50:
+ bl MOD13_02232B6C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02232E5C:
+ bl MOD13_02232C88
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02232E68:
+ mov r0, #2
+ bl MOD13_02232A94
+ cmp r0, #2
+ beq _02232E9C
+ ldr r0, _02232F10 ; =0x02243148
+ mov r3, #5
+ ldr r2, [r0]
+ mov r1, #0
+ strb r3, [r2, #0x1d]
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x1c]
+ ldmia sp!, {pc}
+_02232E9C:
+ bl MOD13_02232AE0
+ cmp r0, #2
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #2
+ bl MOD13_02232BE0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02232EBC:
+ mov r0, #3
+ bl MOD13_02232A94
+ cmp r0, #3
+ beq _02232EF0
+ ldr r0, _02232F10 ; =0x02243148
+ mov r3, #7
+ ldr r2, [r0]
+ mov r1, #0
+ strb r3, [r2, #0x1d]
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0x1c]
+ ldmia sp!, {pc}
+_02232EF0:
+ bl MOD13_02232AE0
+ cmp r0, #3
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #3
+ bl MOD13_02232BE0
+_02232F08:
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02232F10: .word 0x02243148
+
+ arm_func_start MOD13_02232F14
+MOD13_02232F14: ; 0x02232F14
+ ldr r0, _02232F28 ; =0x02243148
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x1e]
+ bx lr
+ .align 2, 0
+_02232F28: .word 0x02243148
+
+ arm_func_start MOD13_02232F2C
+MOD13_02232F2C: ; 0x02232F2C
+ ldr r0, _02232F40 ; =0x02243148
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x1e]
+ bx lr
+ .align 2, 0
+_02232F40: .word 0x02243148
+
+ arm_func_start MOD13_02232F44
+MOD13_02232F44: ; 0x02232F44
+ ldr ip, _02232F4C ; =MOD13_02232978
+ bx ip
+ .align 2, 0
+_02232F4C: .word MOD13_02232978
+
+ arm_func_start MOD13_02232F50
+MOD13_02232F50: ; 0x02232F50
+ ldr r0, _02232F60 ; =0x02243148
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x1d]
+ bx lr
+ .align 2, 0
+_02232F60: .word 0x02243148
+
+ arm_func_start MOD13_02232F64
+MOD13_02232F64: ; 0x02232F64
+ ldr r0, _02232F74 ; =0x02243148
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x1a]
+ bx lr
+ .align 2, 0
+_02232F74: .word 0x02243148
+
+ arm_func_start MOD13_02232F78
+MOD13_02232F78: ; 0x02232F78
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _02232FB4 ; =0x02243148
+ mov r0, #0
+ ldr r1, [r1]
+ ldr r1, [r1, #0xc]
+ bl MOD13_0223C104
+ ldr r0, _02232FB4 ; =0x02243148
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD13_02239AE8
+ ldr r0, _02232FB4 ; =0x02243148
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02232FB4: .word 0x02243148
+
+ arm_func_start MOD13_02232FB8
+MOD13_02232FB8: ; 0x02232FB8
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r6, r0
+ mov r7, r1
+ mov r0, #0x20
+ mov r1, #4
+ mov r5, r2
+ mov r4, r3
+ bl MOD13_0223AFE0
+ ldr r2, _0223308C ; =0x02243148
+ ldr ip, [sp, #0x18]
+ str r0, [r2]
+ strb r6, [r0, #0x1b]
+ ldr r1, [r2]
+ mov r0, r5
+ strb r7, [r1, #0x19]
+ ldr r3, [r2]
+ mov r1, r4
+ strb ip, [r3, #0x1a]
+ ldr r2, [r2]
+ add r2, r2, #0x10
+ bl MOD13_0223ABC0
+ ldr r1, _02233090 ; =0x0223F58C
+ mov r0, #0
+ ldrb r1, [r1, r6]
+ mov r2, #1
+ bl MOD13_02239E0C
+ mov r2, r5
+ ldr r5, _0223308C ; =0x02243148
+ ldr r3, [sp, #0x18]
+ ldr r6, [r5]
+ mvn r1, #0
+ str r0, [r6]
+ ldr r0, [r5]
+ add r3, r4, r3
+ ldr r0, [r0]
+ bl MOD13_02239888
+ mov r0, r5
+ ldr r0, [r0]
+ mvn r1, #0
+ ldr r0, [r0]
+ mov r2, #1
+ bl MOD13_02239814
+ mov r0, #0
+ ldr r1, _02233094 ; =MOD13_02232D58
+ mov r2, r0
+ mov r3, #0x80
+ bl MOD13_0223C1C4
+ mov r1, r5
+ ldr r1, [r1]
+ str r0, [r1, #0xc]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223308C: .word 0x02243148
+_02233090: .word 0x0223F58C
+_02233094: .word MOD13_02232D58
+
+ arm_func_start MOD13_02233098
+MOD13_02233098: ; 0x02233098
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xac
+ ldr r1, _022332AC ; =0x0224314C
+ str r0, [sp]
+ ldr r2, [r1]
+ mov r1, #0x400
+ add r0, r2, #0xf00
+ add r2, r2, #0x1300
+ str r2, [sp, #4]
+ bl DC_InvalidateRange
+ ldr r0, [sp]
+ ldrh r1, [r0, #0xe]
+ mov r0, #0
+ str r0, [sp, #8]
+ cmp r1, #0
+ addle sp, sp, #0xac
+ ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x18]
+ mov r0, #0x20
+ str r0, [sp, #0x14]
+ mov r0, #2
+ str r0, [sp, #0x24]
+ mov r0, #1
+ ldr fp, _022332B0 ; =0x0223F598
+ add r5, sp, #0x28
+ mov r6, #6
+ mov r4, #4
+ str r0, [sp, #0x1c]
+_02233114:
+ ldr r1, [sp]
+ ldr r0, [sp, #8]
+ add r0, r1, r0, lsl #2
+ ldr sl, [r0, #0x10]
+ ldrb r0, [sl, #0xc]
+ cmp r0, #0
+ beq _02233284
+ ldrh r0, [sl, #0x3c]
+ cmp r0, #0
+ bne _02233284
+ ldr sb, [sp, #0xc]
+ ldr r8, [sp, #4]
+ add r7, sl, #4
+_02233148:
+ mov r0, r7
+ add r1, r8, #0x20
+ mov r2, r6
+ bl memcmp
+ cmp r0, #0
+ beq _02233170
+ add r8, r8, #0x2a
+ add sb, sb, #1
+ cmp sb, #0x14
+ blt _02233148
+_02233170:
+ cmp sb, #0x14
+ bne _022331B4
+ ldr sb, [sp, #0x10]
+ ldr r7, [sp, #4]
+_02233180:
+ add r0, r7, #0x20
+ mov r1, fp
+ mov r2, r6
+ bl memcmp
+ cmp r0, #0
+ beq _022331A8
+ add r7, r7, #0x2a
+ add sb, sb, #1
+ cmp sb, #0x14
+ blt _02233180
+_022331A8:
+ cmp sb, #0x14
+ addeq sp, sp, #0xac
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_022331B4:
+ ldr r0, [sp, #4]
+ mov r1, #0x2a
+ mla r7, sb, r1, r0
+ add r0, sl, #4
+ add r1, r7, #0x20
+ mov r2, r6
+ bl MI_CpuCopy8
+ ldr r2, [sp, #0x14]
+ add r0, sl, #0xc
+ mov r1, r7
+ bl MI_CpuCopy8
+ ldr r1, [sp]
+ ldr r0, [sp, #8]
+ add r0, r1, r0, lsl #1
+ ldrh r0, [r0, #0x50]
+ strh r0, [r7, #0x26]
+ ldrh r0, [sl, #0x2c]
+ ands r0, r0, #0x10
+ ldreq r0, [sp, #0x18]
+ streqb r0, [r7, #0x28]
+ beq _02233284
+ ldr r0, [sp, #0x1c]
+ mov r1, sl
+ strb r0, [r7, #0x28]
+ mov r0, r5
+ bl WM_GetOtherElements
+ ldrb r8, [sp, #0x28]
+ ldr sb, [sp, #0x20]
+ cmp r8, #0
+ ble _02233284
+_0223322C:
+ add r1, r5, sb, lsl #3
+ ldrb r0, [r1, #4]
+ cmp r0, #0x30
+ ldreq r0, [sp, #0x24]
+ streqb r0, [r7, #0x28]
+ beq _02233284
+ cmp r0, #0xdd
+ bne _02233278
+ ldrb r0, [r1, #5]
+ cmp r0, #4
+ blo _02233278
+ ldr r0, [r1, #8]
+ ldr r1, _022332B4 ; =0x0223F594
+ mov r2, r4
+ bl memcmp
+ cmp r0, #0
+ ldreq r0, [sp, #0x24]
+ streqb r0, [r7, #0x28]
+ beq _02233284
+_02233278:
+ add sb, sb, #1
+ cmp sb, r8
+ blt _0223322C
+_02233284:
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+ ldr r0, [sp]
+ ldrh r1, [r0, #0xe]
+ ldr r0, [sp, #8]
+ cmp r0, r1
+ blt _02233114
+ add sp, sp, #0xac
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_022332AC: .word 0x0224314C
+_022332B0: .word 0x0223F598
+_022332B4: .word 0x0223F594
+
+ arm_func_start MOD13_022332B8
+MOD13_022332B8: ; 0x022332B8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldrh r1, [r0, #2]
+ cmp r1, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r1, _02233338 ; =0x0224314C
+ ldr r1, [r1]
+ add r1, r1, #0x1000
+ ldrb r1, [r1, #0xe4c]
+ cmp r1, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldrh r1, [r0]
+ cmp r1, #0x26
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldrh r1, [r0, #8]
+ cmp r1, #4
+ beq _02233320
+ cmp r1, #5
+ bne _0223332C
+ bl MOD13_02233098
+ bl MOD13_0223344C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02233320:
+ bl MOD13_0223344C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0223332C:
+ bl OS_Terminate
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02233338: .word 0x0224314C
+
+ arm_func_start MOD13_0223333C
+MOD13_0223333C: ; 0x0223333C
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ ldr r1, _02233394 ; =0x0224314C
+ mov r4, #0
+ ldr r1, [r1]
+ mov r8, r4
+ add r1, r1, #0x1300
+ str r1, [r0]
+ ldr r7, [r0]
+ ldr r6, _02233398 ; =0x0223F598
+ mov r5, #6
+_02233364:
+ mov r1, r6
+ mov r2, r5
+ add r0, r7, #0x20
+ bl memcmp
+ cmp r0, #0
+ add r8, r8, #1
+ addne r4, r4, #1
+ cmp r8, #0x14
+ add r7, r7, #0x2a
+ blt _02233364
+ mov r0, r4
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02233394: .word 0x0224314C
+_02233398: .word 0x0223F598
+
+ arm_func_start MOD13_0223339C
+MOD13_0223339C: ; 0x0223339C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, _02233440 ; =0x0224314C
+ mov r3, #1
+ ldr r0, [r2]
+ ldr r1, _02233444 ; =0x0000168C
+ add r0, r0, #0x1000
+ strb r3, [r0, #0xe4c]
+ ldr r0, [r2]
+ add r0, r0, r1
+ bl WM_ReadStatus
+ ldr r0, _02233440 ; =0x0224314C
+ ldr r0, [r0]
+ add r0, r0, #0x1600
+ ldrh r0, [r0, #0x8c]
+ cmp r0, #2
+ beq _02233424
+ ldr r0, _02233448 ; =MOD13_022332B8
+ bl WM_Reset
+ cmp r0, #2
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {pc}
+_022333F8:
+ ldr r1, _02233440 ; =0x0224314C
+ ldr r0, _02233444 ; =0x0000168C
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl WM_ReadStatus
+ ldr r0, _02233440 ; =0x0224314C
+ ldr r0, [r0]
+ add r0, r0, #0x1600
+ ldrh r0, [r0, #0x8c]
+ cmp r0, #2
+ bne _022333F8
+_02233424:
+ ldr r0, _02233448 ; =MOD13_022332B8
+ bl WM_End
+ cmp r0, #2
+ movne r0, #0
+ moveq r0, #1
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02233440: .word 0x0224314C
+_02233444: .word 0x0000168C
+_02233448: .word MOD13_022332B8
+
+ arm_func_start MOD13_0223344C
+MOD13_0223344C: ; 0x0223344C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02233480 ; =0x0224314C
+ ldr r1, _02233484 ; =0x00001648
+ ldr r2, [r0]
+ ldr r0, _02233488 ; =MOD13_022332B8
+ add r1, r2, r1
+ bl WM_StartScanEx
+ cmp r0, #2
+ moveq r0, #1
+ movne r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02233480: .word 0x0224314C
+_02233484: .word 0x00001648
+_02233488: .word MOD13_022332B8
+
+ arm_func_start MOD13_0223348C
+MOD13_0223348C: ; 0x0223348C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r1, _0223355C ; =0x0224314C
+ mov r0, #0
+ ldr r1, [r1]
+ mov r2, #0x348
+ add r1, r1, #0x1300
+ bl MIi_CpuClear16
+ ldr r0, _0223355C ; =0x0224314C
+ ldr r1, _02233560 ; =MOD13_022332B8
+ ldr r0, [r0]
+ mov r2, #3
+ bl WM_Initialize
+ cmp r0, #2
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {r4, r5, pc}
+_022334D0:
+ ldr r1, _0223355C ; =0x0224314C
+ ldr r0, _02233564 ; =0x0000168C
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl WM_ReadStatus
+ ldr r0, _0223355C ; =0x0224314C
+ ldr r5, [r0]
+ add r0, r5, #0x1600
+ ldrh r0, [r0, #0x8c]
+ cmp r0, #2
+ bne _022334D0
+ ldr r0, _02233568 ; =0x00001648
+ ldr r4, _0223356C ; =0x0223F5A0
+ add lr, r5, r0
+ mov ip, #4
+_0223350C:
+ ldmia r4!, {r0, r1, r2, r3}
+ stmia lr!, {r0, r1, r2, r3}
+ subs ip, ip, #1
+ bne _0223350C
+ ldr r0, [r4]
+ add r1, r5, #0xf00
+ str r0, [lr]
+ add r0, r5, #0x1000
+ str r1, [r0, #0x648]
+ bl WM_GetDispersionScanPeriod
+ ldr r1, _0223355C ; =0x0224314C
+ ldr r1, [r1]
+ add r1, r1, #0x1600
+ strh r0, [r1, #0x50]
+ bl MOD13_0223344C
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0223355C: .word 0x0224314C
+_02233560: .word MOD13_022332B8
+_02233564: .word 0x0000168C
+_02233568: .word 0x00001648
+_0223356C: .word 0x0223F5A0
+
+ arm_func_start MOD13_02233570
+MOD13_02233570: ; 0x02233570
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022335A8 ; =0x0224314C
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+_0223358C:
+ bl WM_GetAllowedChannel
+ cmp r0, #0x8000
+ bne _0223358C
+ ldr r0, _022335A8 ; =0x0224314C
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022335A8: .word 0x0224314C
+
+ arm_func_start MOD13_022335AC
+MOD13_022335AC: ; 0x022335AC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022335E4 ; =0x0224314C
+ ldr r0, [r0]
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _022335E8 ; =0x00001E60
+ mov r1, #0x20
+ bl MOD13_0223AFE0
+ ldr r1, _022335E4 ; =0x0224314C
+ str r0, [r1]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022335E4: .word 0x0224314C
+_022335E8: .word 0x00001E60
+
+ arm_func_start MOD13_022335EC
+MOD13_022335EC: ; 0x022335EC
+ cmp r0, #0x39
+ subls r0, r0, #0x30
+ bxls lr
+ cmp r0, #0x46
+ subls r0, r0, #0x37
+ subhi r0, r0, #0x57
+ bx lr
+
+ arm_func_start MOD13_02233608
+MOD13_02233608: ; 0x02233608
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #4
+ mov sl, r0
+ mov sb, r1
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #4
+ bl MI_CpuFill8
+ mov r8, #0
+ mov r7, r8
+ add r6, sp, #0
+ mov fp, r8
+ mov r4, #0x20
+ mov r5, #3
+_02233640:
+ mov r1, r6
+ mov r2, r5
+ add r0, sl, r7
+ bl MI_CpuCopy8
+ mov r2, fp
+ mov r1, r6
+_02233658:
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne _02233674
+ add r2, r2, #1
+ cmp r2, #3
+ strb r4, [r1], #1
+ blt _02233658
+_02233674:
+ mov r0, r6
+ bl atol
+ strb r0, [sb, r8]
+ add r8, r8, #1
+ cmp r8, #4
+ add r7, r7, #3
+ blt _02233640
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+
+ arm_func_start MOD13_02233698
+MOD13_02233698: ; 0x02233698
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #0x14
+ ldr r1, _02233800 ; =0x02243150
+ mov r7, r0
+ ldr r0, [r1]
+ mov r4, #0
+ add r2, r0, r7, lsl #8
+ ldrb r6, [r2, #0xe7]
+ mov r3, #1
+ add r0, sp, #4
+ mov r1, r4
+ mov r2, #0x10
+ mov r5, r3, lsl r7
+ bl MI_CpuFill8
+ add r0, sp, #4
+ mov r2, #1
+ str r2, [r0, r7, lsl #2]
+ cmp r7, #2
+ bgt _02233778
+ ldr r0, _02233800 ; =0x02243150
+ ldr r0, [r0]
+ ldrb r1, [r0, #0xef]
+ ands r1, r1, r5
+ movne r4, r2
+ cmp r6, #0xff
+ bne _0223373C
+ cmp r4, #0
+ beq _0223373C
+ ldrb r2, [r0, #0xef]
+ mvn r3, r5
+ ldr r1, _02233800 ; =0x02243150
+ and r2, r2, r3
+ strb r2, [r0, #0xef]
+ ldr r2, [r1]
+ mov r0, #1
+ ldrb r1, [r2, #0x1ef]
+ and r1, r1, r3
+ strb r1, [r2, #0x1ef]
+ str r0, [sp, #8]
+ str r0, [sp, #4]
+ b _02233778
+_0223373C:
+ cmp r6, #0xff
+ beq _02233778
+ cmp r4, #0
+ bne _02233778
+ ldrb r3, [r0, #0xef]
+ ldr r1, _02233800 ; =0x02243150
+ mov r2, #1
+ orr r3, r3, r5
+ strb r3, [r0, #0xef]
+ ldr r1, [r1]
+ ldrb r0, [r1, #0x1ef]
+ orr r0, r0, r5
+ strb r0, [r1, #0x1ef]
+ str r2, [sp, #8]
+ str r2, [sp, #4]
+_02233778:
+ mov r7, #0
+ mov r6, r7
+ ldr sb, _02233800 ; =0x02243150
+ add r5, sp, #4
+ mov r4, #0xfe
+ ldr r8, _02233804 ; =0x000004F8
+_02233790:
+ ldr r0, [r5, r7, lsl #2]
+ cmp r0, #0
+ beq _022337BC
+ ldr r1, [sb]
+ mov r2, r4
+ add r0, r1, r8
+ add r1, r1, r6
+ bl MATH_CalcCRC16
+ ldr r1, [sb]
+ add r1, r1, r7, lsl #8
+ strh r0, [r1, #0xfe]
+_022337BC:
+ add r7, r7, #1
+ cmp r7, #4
+ add r6, r6, #0x100
+ blt _02233790
+ mov r0, #0x100
+ mov r1, #0x20
+ bl MOD13_0223B004
+ mov r2, r0
+ ldr r0, _02233800 ; =0x02243150
+ add r1, sp, #4
+ ldr r0, [r0]
+ str r2, [sp]
+ bl FUN_02095CDC
+ add r0, sp, #0
+ bl MOD13_0223AF90
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_02233800: .word 0x02243150
+_02233804: .word 0x000004F8
+
+ arm_func_start MOD13_02233808
+MOD13_02233808: ; 0x02233808
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #0x18
+ ldr r1, _022338B4 ; =0x02243150
+ mov r0, #0
+ ldr r1, [r1]
+ mov r2, #0x400
+ bl MIi_CpuClear16
+ mov r3, #0
+ ldr r0, _022338B4 ; =0x02243150
+ mov r2, #0xff
+_02233830:
+ ldr r1, [r0]
+ add r1, r1, r3, lsl #8
+ add r3, r3, #1
+ strb r2, [r1, #0xe7]
+ cmp r3, #3
+ blt _02233830
+ add r0, sp, #0
+ bl FUN_020967A4
+ add r0, sp, #0
+ bl FUN_02095330
+ mov r6, #0
+ ldr r4, _022338B4 ; =0x02243150
+ mov r8, r0
+ mov r7, r6
+ mov r5, #0xe
+_0223386C:
+ ldr r1, [r4]
+ mov r0, r8
+ add r1, r1, r7
+ mov r2, r5
+ add r1, r1, #0xf0
+ bl MI_CpuCopy8
+ add r6, r6, #1
+ cmp r6, #2
+ add r7, r7, #0x100
+ blt _0223386C
+ mov r4, #0
+_02233898:
+ mov r0, r4
+ bl MOD13_02233698
+ add r4, r4, #1
+ cmp r4, #4
+ blt _02233898
+ add sp, sp, #0x18
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_022338B4: .word 0x02243150
+
+ arm_func_start MOD13_022338B8
+MOD13_022338B8: ; 0x022338B8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r1, _022338F8 ; =0x02243150
+ mov r5, r0
+ ldr r0, [r1]
+ mov r1, #0
+ add r4, r0, r5, lsl #8
+ mov r0, r4
+ mov r2, #0xef
+ bl MI_CpuFill8
+ mov r1, #0xff
+ mov r0, r5
+ strb r1, [r4, #0xe7]
+ bl MOD13_02233698
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_022338F8: .word 0x02243150
+
+ arm_func_start MOD13_022338FC
+MOD13_022338FC: ; 0x022338FC
+ ldr r0, _02233908 ; =0x02243150
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+_02233908: .word 0x02243150
+
+ arm_func_start MOD13_0223390C
+MOD13_0223390C: ; 0x0223390C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r1, _02233A20 ; =0x02243150
+ mov r5, r0
+ ldr r0, [r1]
+ mov r1, #0
+ add r4, r0, #0x400
+ mov r0, r4
+ mov r2, #0xef
+ bl MI_CpuFill8
+ mov r0, r5
+ add r1, r4, #0xd1
+ mov r2, #5
+ bl MI_CpuCopy8
+ add r0, r5, #6
+ add r1, r4, #0xd6
+ mov r2, #5
+ bl MI_CpuCopy8
+ add r0, r5, #0xc
+ add r1, r4, #0xdb
+ mov r2, #5
+ bl MI_CpuCopy8
+ add r0, r5, #0x12
+ add r1, r4, #0xe0
+ mov r2, #5
+ bl MI_CpuCopy8
+ add r0, r5, #0x18
+ add r1, r4, #0x60
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ add r0, r5, #0x39
+ add r1, r4, #0x80
+ mov r2, #0xd
+ bl MI_CpuCopy8
+ add r0, r5, #0x47
+ add r1, r4, #0x90
+ mov r2, #0xd
+ bl MI_CpuCopy8
+ add r0, r5, #0x55
+ add r1, r4, #0xa0
+ mov r2, #0xd
+ bl MI_CpuCopy8
+ add r0, r5, #0x63
+ add r1, r4, #0xb0
+ mov r2, #0xd
+ bl MI_CpuCopy8
+ add r0, r5, #0x71
+ add r1, r4, #0x40
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ ldrb r1, [r4, #0xe6]
+ mov r3, #1
+ add r0, r4, #0xf0
+ bic r1, r1, #3
+ orr r1, r1, #2
+ strb r1, [r4, #0xe6]
+ ldrb ip, [r4, #0xe6]
+ mov r1, #0
+ mov r2, #4
+ bic ip, ip, #0xfc
+ strb ip, [r4, #0xe6]
+ strb r3, [r4, #0xe7]
+ bl MI_CpuFill8
+ mov r0, #1
+ strb r0, [r4, #0xf5]
+ strb r0, [r4, #0xf6]
+ bl MOD13_02233B3C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02233A20: .word 0x02243150
+
+ arm_func_start MOD13_02233A24
+MOD13_02233A24: ; 0x02233A24
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ ldr r1, _02233B38 ; =0x02243150
+ mov r6, r0
+ ldr r0, [r1]
+ mov r1, #0
+ add r5, r0, #0x400
+ mov r0, r5
+ mov r2, #0xef
+ bl MI_CpuFill8
+ mov r0, r6
+ add r1, r5, #0x40
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ ldr r0, [r6, #0x20]
+ cmp r0, #1
+ beq _02233A78
+ cmp r0, #2
+ beq _02233A90
+ cmp r0, #3
+ beq _02233AA8
+ b _02233AC0
+_02233A78:
+ ldrb r0, [r5, #0xe6]
+ mov r4, #5
+ bic r0, r0, #3
+ orr r0, r0, #1
+ strb r0, [r5, #0xe6]
+ b _02233AD0
+_02233A90:
+ ldrb r0, [r5, #0xe6]
+ mov r4, #0xd
+ bic r0, r0, #3
+ orr r0, r0, #2
+ strb r0, [r5, #0xe6]
+ b _02233AD0
+_02233AA8:
+ ldrb r0, [r5, #0xe6]
+ mov r4, #0x10
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strb r0, [r5, #0xe6]
+ b _02233AD0
+_02233AC0:
+ ldrb r0, [r5, #0xe6]
+ mov r4, #0
+ bic r0, r0, #3
+ strb r0, [r5, #0xe6]
+_02233AD0:
+ ldrb r0, [r5, #0xe6]
+ add r7, r5, #0x80
+ add r6, r6, #0x28
+ bic r0, r0, #0xfc
+ strb r0, [r5, #0xe6]
+ mov r8, #0
+_02233AE8:
+ mov r0, r6
+ mov r1, r7
+ mov r2, r4
+ bl MI_CpuCopy8
+ add r8, r8, #1
+ cmp r8, #4
+ add r7, r7, #0x10
+ add r6, r6, #0x20
+ blt _02233AE8
+ mov r3, #2
+ add r0, r5, #0xf0
+ mov r1, #0
+ mov r2, #4
+ strb r3, [r5, #0xe7]
+ bl MI_CpuFill8
+ mov r0, #1
+ strb r0, [r5, #0xf5]
+ strb r0, [r5, #0xf6]
+ bl MOD13_02233B3C
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02233B38: .word 0x02243150
+
+ arm_func_start MOD13_02233B3C
+MOD13_02233B3C: ; 0x02233B3C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r0, _02233C20 ; =0x02243150
+ mov r2, #0x78
+ ldr r1, [r0]
+ add r5, r1, #0x400
+ ldrb r0, [r5, #0xf4]
+ mov ip, r5
+ add r4, r1, r0, lsl #8
+ mov r3, r4
+_02233B64:
+ ldrb r1, [ip], #1
+ ldrb r0, [ip], #1
+ subs r2, r2, #1
+ strb r1, [r3], #1
+ strb r0, [r3], #1
+ bne _02233B64
+ ldrb r0, [r5, #0xf5]
+ cmp r0, #0
+ beq _02233BB4
+ add r0, r4, #0xc0
+ mov r1, #0
+ mov r2, #4
+ bl MI_CpuFill8
+ add r0, r4, #0xc4
+ mov r1, #0
+ mov r2, #4
+ bl MI_CpuFill8
+ mov r0, #0
+ strb r0, [r4, #0xd0]
+ b _02233BE0
+_02233BB4:
+ add r0, r5, #0xc0
+ add r1, r4, #0xc0
+ mov r2, #4
+ bl MI_CpuCopy8
+ add r0, r5, #0xc4
+ add r1, r4, #0xc4
+ mov r2, #4
+ bl MI_CpuCopy8
+ add r0, r5, #0xf0
+ bl FUN_02095BE0
+ strb r0, [r4, #0xd0]
+_02233BE0:
+ ldrb r0, [r5, #0xf6]
+ cmp r0, #0
+ beq _02233C00
+ add r0, r4, #0xc8
+ mov r1, #0
+ mov r2, #8
+ bl MI_CpuFill8
+ b _02233C10
+_02233C00:
+ add r0, r5, #0xc8
+ add r1, r4, #0xc8
+ mov r2, #8
+ bl MI_CpuCopy8
+_02233C10:
+ ldrb r0, [r5, #0xf4]
+ bl MOD13_02233698
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02233C20: .word 0x02243150
+
+ arm_func_start MOD13_02233C24
+MOD13_02233C24: ; 0x02233C24
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r1, _02233D04 ; =0x02243150
+ mov r3, #0x78
+ ldr r5, [r1]
+ add r4, r5, r0, lsl #8
+ mov lr, r4
+ add ip, r5, #0x400
+_02233C44:
+ ldrb r2, [lr], #1
+ ldrb r1, [lr], #1
+ subs r3, r3, #1
+ strb r2, [ip], #1
+ strb r1, [ip], #1
+ bne _02233C44
+ ldr r1, _02233D08 ; =0x0223F5E4
+ strb r0, [r5, #0x4f4]
+ add r0, r4, #0xc0
+ mov r2, #4
+ bl memcmp
+ cmp r0, #0
+ ldrne r0, _02233D04 ; =0x02243150
+ movne r1, #0
+ ldrne r0, [r0]
+ mov r2, #4
+ strneb r1, [r0, #0x4f5]
+ ldreq r0, _02233D04 ; =0x02243150
+ moveq r1, #1
+ ldreq r0, [r0]
+ streqb r1, [r0, #0x4f5]
+ ldr r1, _02233D08 ; =0x0223F5E4
+ add r0, r4, #0xc8
+ bl memcmp
+ cmp r0, #0
+ bne _02233CC4
+ ldr r1, _02233D08 ; =0x0223F5E4
+ add r0, r4, #0xcc
+ mov r2, #4
+ bl memcmp
+ cmp r0, #0
+ beq _02233CD8
+_02233CC4:
+ ldr r0, _02233D04 ; =0x02243150
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x4f6]
+ b _02233CE8
+_02233CD8:
+ ldr r0, _02233D04 ; =0x02243150
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0x4f6]
+_02233CE8:
+ ldr r1, _02233D04 ; =0x02243150
+ ldrb r0, [r4, #0xd0]
+ ldr r1, [r1]
+ add r1, r1, #0x4f0
+ bl FUN_02095BB0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02233D04: .word 0x02243150
+_02233D08: .word 0x0223F5E4
+
+ arm_func_start MOD13_02233D0C
+MOD13_02233D0C: ; 0x02233D0C
+ ldr r1, _02233D20 ; =0x02243150
+ ldr r1, [r1]
+ add r0, r1, r0, lsl #8
+ ldrb r0, [r0, #0xe7]
+ bx lr
+ .align 2, 0
+_02233D20: .word 0x02243150
+
+ arm_func_start MOD13_02233D24
+MOD13_02233D24: ; 0x02233D24
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r1, _02233D64 ; =0x02243150
+ ldr r2, _02233D68 ; =0x000004CC
+ ldr r3, [r1]
+ ldr r1, _02233D6C ; =0x022405CC
+ add ip, r3, r2
+ ldrb r2, [ip, #2]
+ str r2, [sp]
+ ldrb r2, [ip, #3]
+ str r2, [sp, #4]
+ ldrb r2, [r3, #0x4cc]
+ ldrb r3, [ip, #1]
+ bl OS_SPrintf
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_02233D64: .word 0x02243150
+_02233D68: .word 0x000004CC
+_02233D6C: .word 0x022405CC
+
+ arm_func_start MOD13_02233D70
+MOD13_02233D70: ; 0x02233D70
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r1, _02233DB0 ; =0x02243150
+ ldr r2, _02233DB4 ; =0x000004C8
+ ldr r3, [r1]
+ ldr r1, _02233DB8 ; =0x022405CC
+ add ip, r3, r2
+ ldrb r2, [ip, #2]
+ str r2, [sp]
+ ldrb r2, [ip, #3]
+ str r2, [sp, #4]
+ ldrb r2, [r3, #0x4c8]
+ ldrb r3, [ip, #1]
+ bl OS_SPrintf
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_02233DB0: .word 0x02243150
+_02233DB4: .word 0x000004C8
+_02233DB8: .word 0x022405CC
+
+ arm_func_start MOD13_02233DBC
+MOD13_02233DBC: ; 0x02233DBC
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r1, _02233DFC ; =0x02243150
+ ldr r2, _02233E00 ; =0x000004C4
+ ldr r3, [r1]
+ ldr r1, _02233E04 ; =0x022405CC
+ add ip, r3, r2
+ ldrb r2, [ip, #2]
+ str r2, [sp]
+ ldrb r2, [ip, #3]
+ str r2, [sp, #4]
+ ldrb r2, [r3, #0x4c4]
+ ldrb r3, [ip, #1]
+ bl OS_SPrintf
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_02233DFC: .word 0x02243150
+_02233E00: .word 0x000004C4
+_02233E04: .word 0x022405CC
+
+ arm_func_start MOD13_02233E08
+MOD13_02233E08: ; 0x02233E08
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r2, _02233E44 ; =0x02243150
+ ldr r1, _02233E48 ; =0x022405CC
+ ldr r3, [r2]
+ add ip, r3, #0x4f0
+ ldrb r2, [ip, #2]
+ str r2, [sp]
+ ldrb r2, [ip, #3]
+ str r2, [sp, #4]
+ ldrb r2, [r3, #0x4f0]
+ ldrb r3, [ip, #1]
+ bl OS_SPrintf
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_02233E44: .word 0x02243150
+_02233E48: .word 0x022405CC
+
+ arm_func_start MOD13_02233E4C
+MOD13_02233E4C: ; 0x02233E4C
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r2, _02233E88 ; =0x02243150
+ ldr r1, _02233E8C ; =0x022405CC
+ ldr r3, [r2]
+ add ip, r3, #0x4c0
+ ldrb r2, [ip, #2]
+ str r2, [sp]
+ ldrb r2, [ip, #3]
+ str r2, [sp, #4]
+ ldrb r2, [r3, #0x4c0]
+ ldrb r3, [ip, #1]
+ bl OS_SPrintf
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_02233E88: .word 0x02243150
+_02233E8C: .word 0x022405CC
+
+ arm_func_start MOD13_02233E90
+MOD13_02233E90: ; 0x02233E90
+ ldr r2, _02233EAC ; =0x02243150
+ mov r1, r0
+ ldr r0, [r2]
+ ldr ip, _02233EB0 ; =0x020CE3E0
+ mov r2, #0x20
+ add r0, r0, #0x440
+ bx ip
+ .align 2, 0
+_02233EAC: .word 0x02243150
+_02233EB0: .word 0x020CE3E0
+
+ arm_func_start MOD13_02233EB4
+MOD13_02233EB4: ; 0x02233EB4
+ ldr r2, _02233ECC ; =0x02243150
+ ldr r1, _02233ED0 ; =0x000004CC
+ ldr r2, [r2]
+ ldr ip, _02233ED4 ; =MOD13_02233608
+ add r1, r2, r1
+ bx ip
+ .align 2, 0
+_02233ECC: .word 0x02243150
+_02233ED0: .word 0x000004CC
+_02233ED4: .word MOD13_02233608
+
+ arm_func_start MOD13_02233ED8
+MOD13_02233ED8: ; 0x02233ED8
+ ldr r2, _02233EF0 ; =0x02243150
+ ldr r1, _02233EF4 ; =0x000004C8
+ ldr r2, [r2]
+ ldr ip, _02233EF8 ; =MOD13_02233608
+ add r1, r2, r1
+ bx ip
+ .align 2, 0
+_02233EF0: .word 0x02243150
+_02233EF4: .word 0x000004C8
+_02233EF8: .word MOD13_02233608
+
+ arm_func_start MOD13_02233EFC
+MOD13_02233EFC: ; 0x02233EFC
+ ldr r2, _02233F14 ; =0x02243150
+ ldr r1, _02233F18 ; =0x000004C4
+ ldr r2, [r2]
+ ldr ip, _02233F1C ; =MOD13_02233608
+ add r1, r2, r1
+ bx ip
+ .align 2, 0
+_02233F14: .word 0x02243150
+_02233F18: .word 0x000004C4
+_02233F1C: .word MOD13_02233608
+
+ arm_func_start MOD13_02233F20
+MOD13_02233F20: ; 0x02233F20
+ ldr r1, _02233F34 ; =0x02243150
+ ldr ip, _02233F38 ; =MOD13_02233608
+ ldr r1, [r1]
+ add r1, r1, #0x4f0
+ bx ip
+ .align 2, 0
+_02233F34: .word 0x02243150
+_02233F38: .word MOD13_02233608
+
+ arm_func_start MOD13_02233F3C
+MOD13_02233F3C: ; 0x02233F3C
+ ldr r1, _02233F50 ; =0x02243150
+ ldr ip, _02233F54 ; =MOD13_02233608
+ ldr r1, [r1]
+ add r1, r1, #0x4c0
+ bx ip
+ .align 2, 0
+_02233F50: .word 0x02243150
+_02233F54: .word MOD13_02233608
+
+ arm_func_start MOD13_02233F58
+MOD13_02233F58: ; 0x02233F58
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ ldr r1, _02234100 ; =0x02243150
+ mov r6, r0
+ ldr r0, [r1]
+ mov r1, #0
+ add r0, r0, #0x480
+ mov r2, #0x10
+ bl MI_CpuFill8
+ mov r0, r6
+ mov r1, #0x20
+ bl MOD13_0223BDA4
+ mov r4, r0
+ cmp r4, #0xa
+ bgt _02233FA4
+ cmp r4, #0xa
+ bge _02233FC0
+ cmp r4, #0
+ beq _02233FC0
+ b _0223401C
+_02233FA4:
+ cmp r4, #0x1a
+ bgt _02233FB8
+ cmp r4, #0x1a
+ beq _02233FC0
+ b _0223401C
+_02233FB8:
+ cmp r4, #0x20
+ bne _0223401C
+_02233FC0:
+ ldr r0, _02234100 ; =0x02243150
+ cmp r4, #0
+ ldr r2, [r0]
+ mov r5, #0
+ ldrb r1, [r2, #0x4e6]
+ bic r1, r1, #0xfc
+ strb r1, [r2, #0x4e6]
+ ldr r0, [r0]
+ add r8, r0, #0x480
+ ble _02234048
+_02233FE8:
+ ldrb r0, [r6, r5]
+ bl MOD13_022335EC
+ add r1, r5, #1
+ mov r7, r0
+ ldrb r0, [r6, r1]
+ bl MOD13_022335EC
+ add r0, r0, r7, lsl #4
+ add r5, r5, #2
+ strb r0, [r8]
+ cmp r5, r4
+ add r8, r8, #1
+ blt _02233FE8
+ b _02234048
+_0223401C:
+ ldr r1, _02234100 ; =0x02243150
+ mov r0, r6
+ ldr r5, [r1]
+ mov r2, #0x10
+ ldrb r3, [r5, #0x4e6]
+ bic r3, r3, #0xfc
+ orr r3, r3, #4
+ strb r3, [r5, #0x4e6]
+ ldr r1, [r1]
+ add r1, r1, #0x480
+ bl MI_CpuCopy8
+_02234048:
+ cmp r4, #5
+ bgt _02234064
+ cmp r4, #5
+ bge _022340AC
+ cmp r4, #0
+ beq _02234094
+ b _022340E4
+_02234064:
+ cmp r4, #0xd
+ bgt _02234088
+ cmp r4, #0xa
+ blt _022340E4
+ cmp r4, #0xa
+ beq _022340AC
+ cmp r4, #0xd
+ beq _022340C8
+ b _022340E4
+_02234088:
+ cmp r4, #0x1a
+ beq _022340C8
+ b _022340E4
+_02234094:
+ ldr r0, _02234100 ; =0x02243150
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x4e6]
+ bic r0, r0, #3
+ strb r0, [r1, #0x4e6]
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_022340AC:
+ ldr r0, _02234100 ; =0x02243150
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x4e6]
+ bic r0, r0, #3
+ orr r0, r0, #1
+ strb r0, [r1, #0x4e6]
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_022340C8:
+ ldr r0, _02234100 ; =0x02243150
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x4e6]
+ bic r0, r0, #3
+ orr r0, r0, #2
+ strb r0, [r1, #0x4e6]
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_022340E4:
+ ldr r0, _02234100 ; =0x02243150
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x4e6]
+ bic r0, r0, #3
+ orr r0, r0, #3
+ strb r0, [r1, #0x4e6]
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02234100: .word 0x02243150
+
+ arm_func_start MOD13_02234104
+MOD13_02234104: ; 0x02234104
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _02234138 ; =0x02243150
+ mov r2, #0x20
+ ldr r1, [r1]
+ add r1, r1, #0x440
+ bl MI_CpuCopy8
+ ldr r0, _02234138 ; =0x02243150
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x4e7]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02234138: .word 0x02243150
+
+ arm_func_start MOD13_0223413C
+MOD13_0223413C: ; 0x0223413C
+ ldr r1, _0223414C ; =0x02243150
+ ldr r1, [r1]
+ strb r0, [r1, #0x4f6]
+ bx lr
+ .align 2, 0
+_0223414C: .word 0x02243150
+
+ arm_func_start MOD13_02234150
+MOD13_02234150: ; 0x02234150
+ ldr r1, _02234160 ; =0x02243150
+ ldr r1, [r1]
+ strb r0, [r1, #0x4f5]
+ bx lr
+ .align 2, 0
+_02234160: .word 0x02243150
+
+ arm_func_start MOD13_02234164
+MOD13_02234164: ; 0x02234164
+ ldr r0, _02234174 ; =0x02243150
+ ldr r0, [r0]
+ add r0, r0, #0x400
+ bx lr
+ .align 2, 0
+_02234174: .word 0x02243150
+
+ arm_func_start MOD13_02234178
+MOD13_02234178: ; 0x02234178
+ ldr ip, _02234184 ; =MOD13_0223AF90
+ ldr r0, _02234188 ; =0x02243150
+ bx ip
+ .align 2, 0
+_02234184: .word MOD13_0223AF90
+_02234188: .word 0x02243150
+
+ arm_func_start MOD13_0223418C
+MOD13_0223418C: ; 0x0223418C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022341CC ; =0x000006F8
+ mov r1, #0x20
+ bl MOD13_0223B004
+ ldr r1, _022341D0 ; =0x02243150
+ ldr r2, _022341D4 ; =0x000004F8
+ str r0, [r1]
+ ldr r1, _022341D8 ; =0x0000A001
+ add r0, r0, r2
+ bl MATHi_CRC16InitTableRev
+ ldr r0, _022341D0 ; =0x02243150
+ ldr r0, [r0]
+ bl FUN_02095D68
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022341CC: .word 0x000006F8
+_022341D0: .word 0x02243150
+_022341D4: .word 0x000004F8
+_022341D8: .word 0x0000A001
+
+ arm_func_start MOD13_022341DC
+MOD13_022341DC: ; 0x022341DC
+ ldr ip, _022341E4 ; =0x020C01A0
+ bx ip
+ .align 2, 0
+_022341E4: .word 0x020C01A0
+
+ arm_func_start MOD13_022341E8
+MOD13_022341E8: ; 0x022341E8
+ ldr r0, _02234200 ; =0x02243154
+ ldr ip, _02234204 ; =0x020C10A4
+ ldr r0, [r0]
+ mov r1, #0
+ add r0, r0, #0x90
+ bx ip
+ .align 2, 0
+_02234200: .word 0x02243154
+_02234204: .word 0x020C10A4
+
+ arm_func_start MOD13_02234208
+MOD13_02234208: ; 0x02234208
+ ldr r2, _02234224 ; =0x02243154
+ ldr ip, _02234228 ; =0x020C0EA4
+ ldr r3, [r2]
+ mov r2, r1
+ mov r1, r0
+ add r0, r3, #0x90
+ bx ip
+ .align 2, 0
+_02234224: .word 0x02243154
+_02234228: .word 0x020C0EA4
+
+ arm_func_start MOD13_0223422C
+MOD13_0223422C: ; 0x0223422C
+ ldr r2, _02234244 ; =0x02243154
+ mov r1, r0
+ ldr r0, [r2]
+ ldr ip, _02234248 ; =0x020C0F40
+ add r0, r0, #0x90
+ bx ip
+ .align 2, 0
+_02234244: .word 0x02243154
+_02234248: .word 0x020C0F40
+
+ arm_func_start MOD13_0223424C
+MOD13_0223424C: ; 0x0223424C
+ ldr r1, _02234268 ; =0x02243154
+ mov r2, r0
+ ldr r0, [r1]
+ ldr ip, _0223426C ; =0x020C3888
+ mov r1, #0
+ add r0, r0, #0x90
+ bx ip
+ .align 2, 0
+_02234268: .word 0x02243154
+_0223426C: .word 0x020C3888
+
+ arm_func_start MOD13_02234270
+MOD13_02234270: ; 0x02234270
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _0223429C ; =0x02243154
+ mov r0, #0
+ ldr r1, [r1]
+ ldr r1, [r1, #0x98]
+ bl MOD13_0223C110
+ ldr r0, _0223429C ; =0x02243154
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223429C: .word 0x02243154
+
+ arm_func_start MOD13_022342A0
+MOD13_022342A0: ; 0x022342A0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0x9c
+ mov r1, #4
+ bl MOD13_0223B004
+ ldr r2, _0223432C ; =0x02243154
+ add r1, sp, #0
+ str r0, [r2]
+ ldr r0, _02234330 ; =0x022405DC
+ mov r2, #0x20
+ bl MOD13_022393D8
+ ldr r1, _0223432C ; =0x02243154
+ ldr r1, [r1]
+ str r0, [r1, #0x94]
+ bl FUN_020C01D0
+ ldr r0, _0223432C ; =0x02243154
+ ldr r0, [r0]
+ ldr r1, [r0, #0x94]
+ bl FUN_020C2444
+ mov r0, #0
+ bl FUN_020C39CC
+ ldr r0, _0223432C ; =0x02243154
+ ldr r0, [r0]
+ add r0, r0, #0x90
+ bl FUN_020C0F80
+ mov r0, #0
+ ldr r1, _02234334 ; =MOD13_022341DC
+ mov r2, r0
+ mov r3, #0xc8
+ bl MOD13_0223C1C4
+ ldr r1, _0223432C ; =0x02243154
+ ldr r1, [r1]
+ str r0, [r1, #0x98]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223432C: .word 0x02243154
+_02234330: .word 0x022405DC
+_02234334: .word MOD13_022341DC
+
+ arm_func_start MOD13_02234338
+MOD13_02234338: ; 0x02234338
+ stmdb sp!, {r4, lr}
+ ldr r1, _02234380 ; =0x02243158
+ mov r4, r0
+ ldr r0, [r1]
+ mov r1, #0x600
+ bl DC_FlushRange
+ ldr r0, _02234380 ; =0x02243158
+ mov r1, #0
+ ldr r0, [r0]
+ mov r2, #0x600
+ bl GXS_LoadBG1Scr
+ ldr r0, _02234380 ; =0x02243158
+ ldr r0, [r0]
+ bl MOD13_0223939C
+ mov r1, r4
+ mov r0, #1
+ bl MOD13_0223C110
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02234380: .word 0x02243158
+
+ arm_func_start MOD13_02234384
+MOD13_02234384: ; 0x02234384
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _022343C8 ; =0x02240658
+ ldr r0, [r1, r0, lsl #2]
+ bl MOD13_0221F1BC
+ mov r1, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ ldr r2, _022343CC ; =0x02243158
+ ldr r1, _022343D0 ; =MOD13_02234338
+ str r0, [r2]
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022343C8: .word 0x02240658
+_022343CC: .word 0x02243158
+_022343D0: .word MOD13_02234338
+
+ arm_func_start MOD13_022343D4
+MOD13_022343D4: ; 0x022343D4
+ ldr r0, _022343FC ; =0x0224315C
+ ldr r0, [r0]
+ cmp r0, #0
+ moveq r0, #1
+ bxeq lr
+ ldrb r0, [r0, #0x18]
+ cmp r0, #0
+ moveq r0, #1
+ movne r0, #0
+ bx lr
+ .align 2, 0
+_022343FC: .word 0x0224315C
+
+ arm_func_start MOD13_02234400
+MOD13_02234400: ; 0x02234400
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ldr r1, _022344C8 ; =0x0224315C
+ mov r5, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r0, [sp]
+ ldr r6, _022344C8 ; =0x0224315C
+ sub r0, r0, #8
+ ldr r7, _022344CC ; =0x0223F608
+ mov r4, #0
+ str r0, [sp]
+ mvn r8, #0
+_02234444:
+ add r0, r7, r4, lsl #2
+ ldr r1, [r6]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r4, lsl #2]
+ ldr r2, [sp]
+ mov r1, r8
+ bl MOD13_02239888
+ add r4, r4, #1
+ cmp r4, #5
+ blt _02234444
+ ldr r1, [sp]
+ ldr r0, _022344D0 ; =0x000001D6
+ cmp r1, r0
+ addgt sp, sp, #8
+ ldmgtia sp!, {r4, r5, r6, r7, r8, pc}
+ cmp r1, #0x100
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, r5, r6, r7, r8, pc}
+ mov r1, r5
+ mov r0, #0
+ bl MOD13_0223C110
+ mov r5, #0
+ ldr r4, _022344C8 ; =0x0224315C
+_022344A0:
+ ldr r0, [r4]
+ ldr r0, [r0, r5, lsl #2]
+ bl MOD13_02239AE8
+ add r5, r5, #1
+ cmp r5, #5
+ blt _022344A0
+ ldr r0, _022344C8 ; =0x0224315C
+ bl MOD13_0223AF90
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_022344C8: .word 0x0224315C
+_022344CC: .word 0x0223F608
+_022344D0: .word 0x000001D6
+
+ arm_func_start MOD13_022344D4
+MOD13_022344D4: ; 0x022344D4
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ldr r1, _022345A0 ; =0x0224315C
+ mov r5, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0, #4]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r4, _022345A4 ; =0x0223F608
+ ldr r1, [sp]
+ ldrh r0, [r4]
+ sub r1, r1, #8
+ str r1, [sp]
+ cmp r1, r0
+ ble _02234554
+ ldr r5, _022345A0 ; =0x0224315C
+ mov r7, #1
+ mvn r6, #0
+_02234524:
+ add r0, r4, r7, lsl #2
+ ldr r1, [r5]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r7, lsl #2]
+ ldr r2, [sp]
+ mov r1, r6
+ bl MOD13_02239888
+ add r7, r7, #1
+ cmp r7, #5
+ blt _02234524
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_02234554:
+ str r0, [sp]
+ mov r8, #1
+ ldr r6, _022345A0 ; =0x0224315C
+ mvn r7, #0
+_02234564:
+ add r0, r4, r8, lsl #2
+ ldr r1, [r6]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r8, lsl #2]
+ ldr r2, [sp]
+ mov r1, r7
+ bl MOD13_02239888
+ add r8, r8, #1
+ cmp r8, #5
+ blt _02234564
+ ldr r1, _022345A8 ; =MOD13_02234400
+ mov r0, r5
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_022345A0: .word 0x0224315C
+_022345A4: .word 0x0223F608
+_022345A8: .word MOD13_02234400
+
+ arm_func_start MOD13_022345AC
+MOD13_022345AC: ; 0x022345AC
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ldr r1, _02234678 ; =0x0224315C
+ mov r5, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0, #8]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r4, _0223467C ; =0x0223F608
+ ldr r1, [sp]
+ ldrh r0, [r4, #4]
+ sub r1, r1, #8
+ str r1, [sp]
+ cmp r1, r0
+ ble _0223462C
+ ldr r5, _02234678 ; =0x0224315C
+ mov r7, #2
+ mvn r6, #0
+_022345FC:
+ add r0, r4, r7, lsl #2
+ ldr r1, [r5]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r7, lsl #2]
+ ldr r2, [sp]
+ mov r1, r6
+ bl MOD13_02239888
+ add r7, r7, #1
+ cmp r7, #5
+ blt _022345FC
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_0223462C:
+ str r0, [sp]
+ mov r8, #2
+ ldr r6, _02234678 ; =0x0224315C
+ mvn r7, #0
+_0223463C:
+ add r0, r4, r8, lsl #2
+ ldr r1, [r6]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r8, lsl #2]
+ ldr r2, [sp]
+ mov r1, r7
+ bl MOD13_02239888
+ add r8, r8, #1
+ cmp r8, #5
+ blt _0223463C
+ ldr r1, _02234680 ; =MOD13_022344D4
+ mov r0, r5
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02234678: .word 0x0224315C
+_0223467C: .word 0x0223F608
+_02234680: .word MOD13_022344D4
+
+ arm_func_start MOD13_02234684
+MOD13_02234684: ; 0x02234684
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ldr r1, _02234750 ; =0x0224315C
+ mov r5, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0, #0xc]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r4, _02234754 ; =0x0223F608
+ ldr r1, [sp]
+ ldrh r0, [r4, #8]
+ sub r1, r1, #8
+ str r1, [sp]
+ cmp r1, r0
+ ble _02234704
+ ldr r5, _02234750 ; =0x0224315C
+ mov r7, #3
+ mvn r6, #0
+_022346D4:
+ add r0, r4, r7, lsl #2
+ ldr r1, [r5]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r7, lsl #2]
+ ldr r2, [sp]
+ mov r1, r6
+ bl MOD13_02239888
+ add r7, r7, #1
+ cmp r7, #5
+ blt _022346D4
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_02234704:
+ str r0, [sp]
+ mov r8, #3
+ ldr r6, _02234750 ; =0x0224315C
+ mvn r7, #0
+_02234714:
+ add r0, r4, r8, lsl #2
+ ldr r1, [r6]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r8, lsl #2]
+ ldr r2, [sp]
+ mov r1, r7
+ bl MOD13_02239888
+ add r8, r8, #1
+ cmp r8, #5
+ blt _02234714
+ ldr r1, _02234758 ; =MOD13_022345AC
+ mov r0, r5
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02234750: .word 0x0224315C
+_02234754: .word 0x0223F608
+_02234758: .word MOD13_022345AC
+
+ arm_func_start MOD13_0223475C
+MOD13_0223475C: ; 0x0223475C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _022347F4 ; =0x0224315C
+ mov r4, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0, #0x10]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r1, _022347F8 ; =0x0223F608
+ ldr r0, [sp]
+ ldrh ip, [r1, #0xc]
+ sub r2, r0, #8
+ str r2, [sp]
+ cmp r2, ip
+ ble _022347C0
+ ldr r0, _022347F4 ; =0x0224315C
+ ldrh r3, [r1, #0x12]
+ ldr r0, [r0]
+ mvn r1, #0
+ ldr r0, [r0, #0x10]
+ bl MOD13_02239888
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_022347C0:
+ ldr r0, _022347F4 ; =0x0224315C
+ str ip, [sp]
+ ldr r0, [r0]
+ ldrh r3, [r1, #0x12]
+ ldr r0, [r0, #0x10]
+ mov r2, ip
+ mvn r1, #0
+ bl MOD13_02239888
+ ldr r1, _022347FC ; =MOD13_02234684
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022347F4: .word 0x0224315C
+_022347F8: .word 0x0223F608
+_022347FC: .word MOD13_02234684
+
+ arm_func_start MOD13_02234800
+MOD13_02234800: ; 0x02234800
+ ldr r0, _0223481C ; =0x0224315C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_0223481C: .word 0x0224315C
+
+ arm_func_start MOD13_02234820
+MOD13_02234820: ; 0x02234820
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ mov r1, #5
+ mul r2, r0, r1
+ mov sl, #0
+ str r0, [sp]
+ ldr r1, _022348F8 ; =0x0223F5E8
+ ldr r0, _022348FC ; =0x0223F5F8
+ ldr r4, _02234900 ; =0x0224315C
+ add sb, r1, r2
+ add r8, r0, r2
+ mov r7, sl
+ mov fp, sl
+ str sl, [sp, #4]
+ mov r6, #1
+ mvn r5, #0
+_02234860:
+ ldr r0, [r4]
+ mov r1, r7
+ ldr r0, [r0, sl, lsl #2]
+ bl MOD13_02239ADC
+ mov r2, r0
+ ldrb r1, [sb]
+ mov r0, r6
+ bl MOD13_02239E8C
+ ldr r0, [r4]
+ mov r1, r5
+ ldr r0, [r0, sl, lsl #2]
+ mov r2, fp
+ bl MOD13_02239814
+ ldr r3, _02234904 ; =0x0223F608
+ ldr r0, [r4]
+ add r3, r3, sl, lsl #2
+ ldr r1, _02234904 ; =0x0223F608
+ mov r2, sl, lsl #2
+ ldrh r2, [r1, r2]
+ ldrh r3, [r3, #2]
+ ldr r0, [r0, sl, lsl #2]
+ mov r1, r5
+ bl MOD13_02239888
+ ldr r0, [r4]
+ ldrb r3, [r8]
+ ldr r0, [r0, sl, lsl #2]
+ ldr r2, [sp, #4]
+ mov r1, r5
+ bl MOD13_02239994
+ add sl, sl, #2
+ add sb, sb, #2
+ add r8, r8, #2
+ cmp sl, #5
+ blt _02234860
+ ldr r0, [sp]
+ bl MOD13_02234384
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_022348F8: .word 0x0223F5E8
+_022348FC: .word 0x0223F5F8
+_02234900: .word 0x0224315C
+_02234904: .word 0x0223F608
+
+ arm_func_start MOD13_02234908
+MOD13_02234908: ; 0x02234908
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _02234948 ; =0x0224315C
+ mov r0, #0
+ ldr ip, [r1]
+ mov lr, #1
+ ldr r1, _0223494C ; =MOD13_0223475C
+ mov r2, r0
+ mov r3, #0x78
+ strb lr, [ip, #0x18]
+ bl MOD13_0223C1C4
+ ldr r1, _02234948 ; =0x0224315C
+ ldr r1, [r1]
+ str r0, [r1, #0x14]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02234948: .word 0x0224315C
+_0223494C: .word MOD13_0223475C
+
+ arm_func_start MOD13_02234950
+MOD13_02234950: ; 0x02234950
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r1, r0
+ mov r0, #0
+ bl MOD13_0223C110
+ ldr r0, _0223497C ; =0x0224315C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x14]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223497C: .word 0x0224315C
+
+ arm_func_start MOD13_02234980
+MOD13_02234980: ; 0x02234980
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _02234A24 ; =0x0224315C
+ mov r4, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0, #0x10]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r1, _02234A28 ; =0x0223F608
+ ldr r0, [sp]
+ ldrh ip, [r1, #0x10]
+ add r2, r0, #8
+ str r2, [sp]
+ cmp r2, ip
+ blt _022349CC
+ cmp r2, #0x100
+ ble _022349F0
+_022349CC:
+ ldr r1, _02234A24 ; =0x0224315C
+ ldr r0, _02234A28 ; =0x0223F608
+ ldr r1, [r1]
+ ldrh r3, [r0, #0x12]
+ ldr r0, [r1, #0x10]
+ mvn r1, #0
+ bl MOD13_02239888
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_022349F0:
+ ldr r0, _02234A24 ; =0x0224315C
+ str ip, [sp]
+ ldr r0, [r0]
+ ldrh r3, [r1, #0x12]
+ ldr r0, [r0, #0x10]
+ mov r2, ip
+ mvn r1, #0
+ bl MOD13_02239888
+ ldr r1, _02234A2C ; =MOD13_02234950
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02234A24: .word 0x0224315C
+_02234A28: .word 0x0223F608
+_02234A2C: .word MOD13_02234950
+
+ arm_func_start MOD13_02234A30
+MOD13_02234A30: ; 0x02234A30
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ldr r1, _02234B08 ; =0x0224315C
+ mov r4, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0, #0xc]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r6, _02234B0C ; =0x0223F608
+ ldr r1, [sp]
+ ldrh r0, [r6, #0xc]
+ add r1, r1, #8
+ str r1, [sp]
+ cmp r1, r0
+ blt _02234A7C
+ cmp r1, #0x100
+ ble _02234ABC
+_02234A7C:
+ ldr r4, _02234B08 ; =0x0224315C
+ ldr r5, _02234B0C ; =0x0223F608
+ mov r7, #3
+ mvn r6, #0
+_02234A8C:
+ add r0, r5, r7, lsl #2
+ ldr r1, [r4]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r7, lsl #2]
+ ldr r2, [sp]
+ mov r1, r6
+ bl MOD13_02239888
+ add r7, r7, #1
+ cmp r7, #5
+ blt _02234A8C
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_02234ABC:
+ str r0, [sp]
+ mov r8, #3
+ ldr r5, _02234B08 ; =0x0224315C
+ mvn r7, #0
+_02234ACC:
+ add r0, r6, r8, lsl #2
+ ldr r1, [r5]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r8, lsl #2]
+ ldr r2, [sp]
+ mov r1, r7
+ bl MOD13_02239888
+ add r8, r8, #1
+ cmp r8, #5
+ blt _02234ACC
+ ldr r1, _02234B10 ; =MOD13_02234980
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02234B08: .word 0x0224315C
+_02234B0C: .word 0x0223F608
+_02234B10: .word MOD13_02234980
+
+ arm_func_start MOD13_02234B14
+MOD13_02234B14: ; 0x02234B14
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ldr r1, _02234BEC ; =0x0224315C
+ mov r4, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0, #8]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r6, _02234BF0 ; =0x0223F608
+ ldr r1, [sp]
+ ldrh r0, [r6, #8]
+ add r1, r1, #8
+ str r1, [sp]
+ cmp r1, r0
+ blt _02234B60
+ cmp r1, #0x100
+ ble _02234BA0
+_02234B60:
+ ldr r4, _02234BEC ; =0x0224315C
+ ldr r5, _02234BF0 ; =0x0223F608
+ mov r7, #2
+ mvn r6, #0
+_02234B70:
+ add r0, r5, r7, lsl #2
+ ldr r1, [r4]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r7, lsl #2]
+ ldr r2, [sp]
+ mov r1, r6
+ bl MOD13_02239888
+ add r7, r7, #1
+ cmp r7, #5
+ blt _02234B70
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_02234BA0:
+ str r0, [sp]
+ mov r8, #2
+ ldr r5, _02234BEC ; =0x0224315C
+ mvn r7, #0
+_02234BB0:
+ add r0, r6, r8, lsl #2
+ ldr r1, [r5]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r8, lsl #2]
+ ldr r2, [sp]
+ mov r1, r7
+ bl MOD13_02239888
+ add r8, r8, #1
+ cmp r8, #5
+ blt _02234BB0
+ ldr r1, _02234BF4 ; =MOD13_02234A30
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02234BEC: .word 0x0224315C
+_02234BF0: .word 0x0223F608
+_02234BF4: .word MOD13_02234A30
+
+ arm_func_start MOD13_02234BF8
+MOD13_02234BF8: ; 0x02234BF8
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ldr r1, _02234CD0 ; =0x0224315C
+ mov r4, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0, #4]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r6, _02234CD4 ; =0x0223F608
+ ldr r1, [sp]
+ ldrh r0, [r6, #4]
+ add r1, r1, #8
+ str r1, [sp]
+ cmp r1, r0
+ blt _02234C44
+ cmp r1, #0x100
+ ble _02234C84
+_02234C44:
+ ldr r4, _02234CD0 ; =0x0224315C
+ ldr r5, _02234CD4 ; =0x0223F608
+ mov r7, #1
+ mvn r6, #0
+_02234C54:
+ add r0, r5, r7, lsl #2
+ ldr r1, [r4]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r7, lsl #2]
+ ldr r2, [sp]
+ mov r1, r6
+ bl MOD13_02239888
+ add r7, r7, #1
+ cmp r7, #5
+ blt _02234C54
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_02234C84:
+ str r0, [sp]
+ mov r8, #1
+ ldr r5, _02234CD0 ; =0x0224315C
+ mvn r7, #0
+_02234C94:
+ add r0, r6, r8, lsl #2
+ ldr r1, [r5]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r8, lsl #2]
+ ldr r2, [sp]
+ mov r1, r7
+ bl MOD13_02239888
+ add r8, r8, #1
+ cmp r8, #5
+ blt _02234C94
+ ldr r1, _02234CD8 ; =MOD13_02234B14
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02234CD0: .word 0x0224315C
+_02234CD4: .word 0x0223F608
+_02234CD8: .word MOD13_02234B14
+
+ arm_func_start MOD13_02234CDC
+MOD13_02234CDC: ; 0x02234CDC
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ldr r1, _02234DB4 ; =0x0224315C
+ mov r4, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r6, _02234DB8 ; =0x0223F608
+ ldr r1, [sp]
+ ldrh r0, [r6]
+ add r1, r1, #8
+ str r1, [sp]
+ cmp r1, r0
+ blt _02234D28
+ cmp r1, #0x100
+ ble _02234D68
+_02234D28:
+ ldr r4, _02234DB4 ; =0x0224315C
+ ldr r5, _02234DB8 ; =0x0223F608
+ mov r7, #0
+ mvn r6, #0
+_02234D38:
+ add r0, r5, r7, lsl #2
+ ldr r1, [r4]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r7, lsl #2]
+ ldr r2, [sp]
+ mov r1, r6
+ bl MOD13_02239888
+ add r7, r7, #1
+ cmp r7, #5
+ blt _02234D38
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_02234D68:
+ str r0, [sp]
+ mov r8, #0
+ ldr r5, _02234DB4 ; =0x0224315C
+ mvn r7, #0
+_02234D78:
+ add r0, r6, r8, lsl #2
+ ldr r1, [r5]
+ ldrh r3, [r0, #2]
+ ldr r0, [r1, r8, lsl #2]
+ ldr r2, [sp]
+ mov r1, r7
+ bl MOD13_02239888
+ add r8, r8, #1
+ cmp r8, #5
+ blt _02234D78
+ ldr r1, _02234DBC ; =MOD13_02234BF8
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02234DB4: .word 0x0224315C
+_02234DB8: .word 0x0223F608
+_02234DBC: .word MOD13_02234BF8
+
+ arm_func_start MOD13_02234DC0
+MOD13_02234DC0: ; 0x02234DC0
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ str r0, [sp]
+ mov r0, #0x1c
+ mov r1, #4
+ bl MOD13_0223AFE0
+ ldr r1, [sp]
+ mov r2, #5
+ mul r3, r1, r2
+ mov sl, #0
+ ldr r4, _02234EC4 ; =0x0224315C
+ ldr r2, _02234EC8 ; =0x0223F5E8
+ ldr r1, _02234ECC ; =0x0223F5F8
+ str r0, [r4]
+ add sb, r2, r3
+ add r8, r1, r3
+ mov fp, sl
+ str sl, [sp, #4]
+ mov r7, #1
+ mvn r6, #0
+ mvn r5, #0x29
+_02234E14:
+ ldrb r1, [sb]
+ mov r0, r7
+ mov r2, r7
+ bl MOD13_02239E0C
+ ldr r2, [r4]
+ mov r1, r6
+ str r0, [r2, sl, lsl #2]
+ ldr r0, [r4]
+ mov r2, fp
+ ldr r0, [r0, sl, lsl #2]
+ bl MOD13_02239814
+ ldr r3, _02234ED0 ; =0x0223F608
+ ldr r0, [r4]
+ add r3, r3, sl, lsl #2
+ ldrh r3, [r3, #2]
+ ldr r0, [r0, sl, lsl #2]
+ mov r1, r6
+ mov r2, r5
+ bl MOD13_02239888
+ ldr r0, [r4]
+ ldrb r3, [r8]
+ ldr r0, [r0, sl, lsl #2]
+ ldr r2, [sp, #4]
+ mov r1, r6
+ bl MOD13_02239994
+ add sl, sl, #1
+ add sb, sb, #1
+ add r8, r8, #1
+ cmp sl, #5
+ blt _02234E14
+ mov r0, #0
+ ldr r1, _02234ED4 ; =MOD13_02234CDC
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02234EC4 ; =0x0224315C
+ ldr r1, [r1]
+ str r0, [r1, #0x14]
+ ldr r0, [sp]
+ bl MOD13_02234384
+ mov r0, #0xd
+ bl MOD13_0223424C
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_02234EC4: .word 0x0224315C
+_02234EC8: .word 0x0223F5E8
+_02234ECC: .word 0x0223F5F8
+_02234ED0: .word 0x0223F608
+_02234ED4: .word MOD13_02234CDC
+
+ arm_func_start MOD13_02234ED8
+MOD13_02234ED8: ; 0x02234ED8
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #4
+ str r0, [sp]
+ bl OS_GetTick
+ ldr r2, _02235018 ; =0x02243160
+ ldr r3, _0223501C ; =0x0017F898
+ ldr fp, [r2]
+ mov r8, #0
+ add r2, fp, #0x1000
+ ldr r4, [r2, #0xb78]
+ ldr r2, [r2, #0xb7c]
+ adds r3, r4, r3
+ adc r2, r2, #0
+ cmp r1, r2
+ cmpeq r0, r3
+ addlo sp, sp, #4
+ ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ mov sb, r8
+ mov sl, r8
+ mov r6, fp
+ add r7, fp, #0x1300
+ mov r4, #1
+ mov r5, #6
+_02234F34:
+ ldr r1, _02235020 ; =0x0223F61C
+ mov r0, r7
+ mov r2, r5
+ bl memcmp
+ cmp r0, #0
+ beq _02234F60
+ add r0, r6, #0x1000
+ ldrb r0, [r0, #0x306]
+ cmp r0, #0
+ movne sb, r4
+ moveq r8, r4
+_02234F60:
+ add sl, sl, #1
+ cmp sl, #0x10
+ add r7, r7, #7
+ add r6, r6, #7
+ blt _02234F34
+ cmp sb, #0
+ beq _02234FA0
+ cmp r8, #0
+ beq _02234FA0
+ add r0, fp, #0x1000
+ ldr r1, [r0, #0x370]
+ cmp r1, #0
+ beq _02234FE4
+ mov r0, #2
+ blx r1
+ b _02234FE4
+_02234FA0:
+ cmp sb, #0
+ beq _02234FC4
+ add r0, fp, #0x1000
+ ldr r1, [r0, #0x370]
+ cmp r1, #0
+ beq _02234FE4
+ mov r0, #1
+ blx r1
+ b _02234FE4
+_02234FC4:
+ cmp r8, #0
+ bne _02234FE4
+ add r0, fp, #0x1000
+ ldr r1, [r0, #0x370]
+ cmp r1, #0
+ beq _02234FE4
+ mov r0, #0
+ blx r1
+_02234FE4:
+ ldr r3, _02235018 ; =0x02243160
+ mov r0, #0
+ ldr r2, [r3]
+ ldr r1, [sp]
+ add r2, r2, #0x1000
+ str r0, [r2, #0xb80]
+ ldr r2, [r3]
+ mov r3, #1
+ add r2, r2, #0x1000
+ strb r3, [r2, #0xb86]
+ bl MOD13_0223C110
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_02235018: .word 0x02243160
+_0223501C: .word 0x0017F898
+_02235020: .word 0x0223F61C
+
+ arm_func_start MOD13_02235024
+MOD13_02235024: ; 0x02235024
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ ldr r1, _02235154 ; =0x02243160
+ mov r4, r0
+ ldr r2, [r1]
+ add r1, r2, #0x1000
+ ldrb r0, [r1, #0xb85]
+ cmp r0, #0
+ beq _02235064
+ ldr r1, [r1, #0x370]
+ cmp r1, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ blx r1
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_02235064:
+ add r0, r2, #0xf00
+ mov r1, #0x400
+ bl DC_InvalidateRange
+ ldrh fp, [r4, #0xe]
+ mov sl, #0
+ cmp fp, #0
+ addle sp, sp, #0xc
+ ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, _02235154 ; =0x02243160
+ ldr r7, [r0]
+ str sl, [sp, #4]
+ mov r5, #6
+ mov r0, #8
+ str r0, [sp]
+_0223509C:
+ add r0, r4, sl, lsl #2
+ ldr r6, [r0, #0x10]
+ ldr r1, _02235158 ; =0x0223F624
+ ldr r2, [sp]
+ add r0, r6, #0xc
+ bl memcmp
+ cmp r0, #0
+ bne _02235140
+ ldrb r0, [r6, #0x15]
+ ands r0, r0, #1
+ beq _02235140
+ ldr sb, [sp, #4]
+ add r8, r7, #0x1300
+ add r6, r6, #4
+_022350D4:
+ mov r0, r6
+ mov r1, r8
+ mov r2, r5
+ bl memcmp
+ cmp r0, #0
+ bne _02235130
+ mov r0, #7
+ mla r0, sb, r0, r7
+ add r0, r0, #0x1000
+ ldrb r0, [r0, #0x306]
+ cmp r0, #0
+ bne _02235140
+ add r0, r7, #0x1000
+ ldr r1, [r0, #0x370]
+ cmp r1, #0
+ moveq r1, #1
+ streqb r1, [r0, #0xb85]
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ mov r0, #1
+ blx r1
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_02235130:
+ add sb, sb, #1
+ cmp sb, #0x10
+ add r8, r8, #7
+ blt _022350D4
+_02235140:
+ add sl, sl, #1
+ cmp sl, fp
+ blt _0223509C
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_02235154: .word 0x02243160
+_02235158: .word 0x0223F624
+
+ arm_func_start MOD13_0223515C
+MOD13_0223515C: ; 0x0223515C
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x1c
+ str r0, [sp]
+ ldrh r0, [r0, #0xe]
+ mov fp, #0
+ cmp r0, #0
+ addle sp, sp, #0x1c
+ ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ mov r0, #1
+ str r0, [sp, #0x14]
+ mov r0, #0xc0
+ str r0, [sp, #4]
+ mov r0, #8
+ ldr r4, _022352EC ; =0x0223F61C
+ str fp, [sp, #0x18]
+ str fp, [sp, #0xc]
+ str fp, [sp, #0x10]
+ mov r5, #6
+ str r0, [sp, #8]
+_022351A8:
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ add r0, r0, fp, lsl #2
+ ldr sl, [r0, #0x10]
+ mov r0, sl
+ bl DC_InvalidateRange
+ ldr r1, _022352F0 ; =0x0223F624
+ ldr r2, [sp, #8]
+ add r0, sl, #0xc
+ bl memcmp
+ cmp r0, #0
+ bne _022352D0
+ ldr r0, _022352F4 ; =0x02243160
+ ldr sb, [sp, #0xc]
+ ldr r7, [r0]
+ add r6, sl, #4
+ add r8, r7, #0x1300
+_022351EC:
+ mov r0, r6
+ mov r1, r8
+ mov r2, r5
+ bl memcmp
+ cmp r0, #0
+ bne _0223524C
+ mov r0, #7
+ mla r0, sb, r0, r7
+ add r0, r0, #0x1000
+ ldrb r0, [r0, #0x306]
+ cmp r0, #0
+ bne _022352D0
+ ldrb r0, [sl, #0x15]
+ ands r0, r0, #1
+ beq _022352D0
+ add r0, r7, #0x1000
+ ldr r1, [r0, #0x370]
+ cmp r1, #0
+ addeq sp, sp, #0x1c
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ mov r0, #1
+ blx r1
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_0223524C:
+ add r8, r8, #7
+ add sb, sb, #1
+ cmp sb, #0x10
+ blt _022351EC
+ ldr r6, [sp, #0x10]
+ add r8, r7, #0x1300
+_02235264:
+ mov r0, r8
+ mov r1, r4
+ mov r2, r5
+ bl memcmp
+ cmp r0, #0
+ bne _022352C0
+ mov r0, #7
+ add r1, r7, #0x1300
+ mul r7, r6, r0
+ add r1, r1, r7
+ add r0, sl, #4
+ mov r2, r5
+ bl MI_CpuCopy8
+ ldrb r0, [sl, #0x15]
+ ands r0, r0, #1
+ ldr r0, _022352F4 ; =0x02243160
+ ldrne r1, [sp, #0x14]
+ ldr r0, [r0]
+ ldreq r1, [sp, #0x18]
+ add r0, r0, r7
+ add r0, r0, #0x1000
+ strb r1, [r0, #0x306]
+ b _022352D0
+_022352C0:
+ add r8, r8, #7
+ add r6, r6, #1
+ cmp r6, #0x10
+ blt _02235264
+_022352D0:
+ ldr r0, [sp]
+ add fp, fp, #1
+ ldrh r0, [r0, #0xe]
+ cmp fp, r0
+ blt _022351A8
+ add sp, sp, #0x1c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_022352EC: .word 0x0223F61C
+_022352F0: .word 0x0223F624
+_022352F4: .word 0x02243160
+
+ arm_func_start MOD13_022352F8
+MOD13_022352F8: ; 0x022352F8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldrh r1, [r0, #2]
+ cmp r1, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r1, _022353A0 ; =0x02243160
+ ldr r1, [r1]
+ add r1, r1, #0x1000
+ ldrb r2, [r1, #0xb84]
+ cmp r2, #0
+ beq _02235340
+ ldrh r0, [r0]
+ add sp, sp, #4
+ cmp r0, #2
+ moveq r0, #2
+ streqb r0, [r1, #0xb84]
+ ldmia sp!, {pc}
+_02235340:
+ ldrh r2, [r0]
+ cmp r2, #0x26
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldrh r2, [r0, #8]
+ cmp r2, #4
+ beq _02235388
+ cmp r2, #5
+ bne _02235394
+ ldrb r1, [r1, #0xb86]
+ cmp r1, #0
+ beq _02235378
+ bl MOD13_02235024
+ b _0223537C
+_02235378:
+ bl MOD13_0223515C
+_0223537C:
+ bl MOD13_022354B4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02235388:
+ bl MOD13_022354B4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02235394:
+ bl OS_Terminate
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022353A0: .word 0x02243160
+
+ arm_func_start MOD13_022353A4
+MOD13_022353A4: ; 0x022353A4
+ ldr r1, _022353B8 ; =0x02243160
+ ldr r1, [r1]
+ add r1, r1, #0x1000
+ str r0, [r1, #0x370]
+ bx lr
+ .align 2, 0
+_022353B8: .word 0x02243160
+
+ arm_func_start MOD13_022353BC
+MOD13_022353BC: ; 0x022353BC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, _022354A8 ; =0x02243160
+ mov r3, #1
+ ldr r0, [r2]
+ ldr r1, _022354AC ; =0x000013B8
+ add r0, r0, #0x1000
+ strb r3, [r0, #0xb84]
+ ldr r0, [r2]
+ add r0, r0, r1
+ bl WM_ReadStatus
+ ldr r0, _022354A8 ; =0x02243160
+ ldr r0, [r0]
+ add r0, r0, #0x1300
+ ldrh r0, [r0, #0xb8]
+ cmp r0, #2
+ beq _02235444
+ ldr r0, _022354B0 ; =MOD13_022352F8
+ bl WM_Reset
+ cmp r0, #2
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {pc}
+_02235418:
+ ldr r1, _022354A8 ; =0x02243160
+ ldr r0, _022354AC ; =0x000013B8
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl WM_ReadStatus
+ ldr r0, _022354A8 ; =0x02243160
+ ldr r0, [r0]
+ add r0, r0, #0x1300
+ ldrh r0, [r0, #0xb8]
+ cmp r0, #2
+ bne _02235418
+_02235444:
+ ldr r0, _022354B0 ; =MOD13_022352F8
+ bl WM_End
+ cmp r0, #2
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {pc}
+ ldr r0, _022354A8 ; =0x02243160
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r1, [r0, #0xb80]
+ cmp r1, #0
+ beq _0223547C
+ mov r0, #0
+ bl MOD13_0223C104
+_0223547C:
+ ldr r0, _022354A8 ; =0x02243160
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+_02235488:
+ ldrb r1, [r0, #0xb84]
+ cmp r1, #2
+ bne _02235488
+ ldr r0, _022354A8 ; =0x02243160
+ bl MOD13_0223AF90
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022354A8: .word 0x02243160
+_022354AC: .word 0x000013B8
+_022354B0: .word MOD13_022352F8
+
+ arm_func_start MOD13_022354B4
+MOD13_022354B4: ; 0x022354B4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022354E8 ; =0x02243160
+ ldr r1, _022354EC ; =0x00001374
+ ldr r2, [r0]
+ ldr r0, _022354F0 ; =MOD13_022352F8
+ add r1, r2, r1
+ bl WM_StartScanEx
+ cmp r0, #2
+ moveq r0, #1
+ movne r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022354E8: .word 0x02243160
+_022354EC: .word 0x00001374
+_022354F0: .word MOD13_022352F8
+
+ arm_func_start MOD13_022354F4
+MOD13_022354F4: ; 0x022354F4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x54
+ mov r4, r0
+ ldr r0, _0223565C ; =0x00001BA0
+ mov r1, #0x20
+ bl MOD13_0223AFE0
+ ldr r2, _02235660 ; =0x02243160
+ add r1, r0, #0x1000
+ str r0, [r2]
+ str r4, [r1, #0x370]
+ ldr r4, [r2]
+ bl OS_GetTick
+ add r2, r4, #0x1000
+ str r0, [r2, #0xb78]
+ str r1, [r2, #0xb7c]
+ ldr r1, _02235664 ; =MOD13_022352F8
+ mov r0, r4
+ mov r2, #3
+ bl WM_Initialize
+ cmp r0, #2
+ bne _02235648
+ ldr r5, _02235660 ; =0x02243160
+ ldr r4, _02235668 ; =0x000013B8
+_02235550:
+ ldr r0, [r5]
+ add r0, r0, r4
+ bl WM_ReadStatus
+ ldr ip, [r5]
+ add r0, ip, #0x1300
+ ldrh r0, [r0, #0xb8]
+ cmp r0, #2
+ bne _02235550
+ ldr r0, _0223566C ; =0x00001374
+ ldr lr, _02235670 ; =0x0223F630
+ add r5, ip, r0
+ mov r4, #4
+_02235580:
+ ldmia lr!, {r0, r1, r2, r3}
+ stmia r5!, {r0, r1, r2, r3}
+ subs r4, r4, #1
+ bne _02235580
+ ldr r0, [lr]
+ add r1, ip, #0xf00
+ str r0, [r5]
+ add r0, ip, #0x1000
+ str r1, [r0, #0x374]
+ bl WM_GetDispersionScanPeriod
+ ldr r1, _02235660 ; =0x02243160
+ ldr r1, [r1]
+ add r1, r1, #0x1300
+ strh r0, [r1, #0x7c]
+ add r0, sp, #0
+ bl OS_GetOwnerInfo
+ ldr r0, _02235660 ; =0x02243160
+ ldr r1, _02235674 ; =0x00001388
+ ldr r2, [r0]
+ ldr r0, _02235678 ; =0x0223F624
+ add r1, r2, r1
+ mov r2, #8
+ bl MI_CpuCopy8
+ ldr r2, _02235660 ; =0x02243160
+ mov r3, #1
+ ldr r0, [r2]
+ ldr r1, _0223567C ; =0x00001394
+ add r0, r0, #0x1000
+ strb r3, [r0, #0x391]
+ ldr r2, [r2]
+ ldrh r3, [sp, #0x18]
+ add r1, r2, r1
+ add r0, sp, #4
+ mov r2, r3, lsl #1
+ bl MI_CpuCopy8
+ bl MOD13_022354B4
+ cmp r0, #0
+ beq _02235648
+ mov r0, #0
+ ldr r1, _02235680 ; =MOD13_02234ED8
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02235660 ; =0x02243160
+ add sp, sp, #0x54
+ ldr r1, [r1]
+ add r1, r1, #0x1000
+ str r0, [r1, #0xb80]
+ mov r0, #1
+ ldmia sp!, {r4, r5, pc}
+_02235648:
+ ldr r0, _02235660 ; =0x02243160
+ bl MOD13_0223AF90
+ mov r0, #0
+ add sp, sp, #0x54
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0223565C: .word 0x00001BA0
+_02235660: .word 0x02243160
+_02235664: .word MOD13_022352F8
+_02235668: .word 0x000013B8
+_0223566C: .word 0x00001374
+_02235670: .word 0x0223F630
+_02235674: .word 0x00001388
+_02235678: .word 0x0223F624
+_0223567C: .word 0x00001394
+_02235680: .word MOD13_02234ED8
+
+ arm_func_start MOD13_02235684
+MOD13_02235684: ; 0x02235684
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r3, #0x4000000
+ ldr r2, [r3]
+ ldr r1, _02235730 ; =0x02243164
+ bic r2, r2, #0xe000
+ str r2, [r3]
+ ldr r1, [r1]
+ mov r6, r0
+ ldr r0, [r1]
+ bl MOD13_02239AE8
+ ldr r0, _02235730 ; =0x02243164
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD13_02239AE8
+ ldr r7, _02235730 ; =0x02243164
+ ldr r4, _02235734 ; =0x0223F680
+ ldr r1, [r7]
+ mov r5, #0
+ ldrb r0, [r1, #0x1c]
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ ble _0223570C
+_022356E0:
+ add r0, r1, r5, lsl #2
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _022356F4
+ bl MOD13_02239AE8
+_022356F4:
+ ldr r1, [r7]
+ add r5, r5, #1
+ ldrb r0, [r1, #0x1c]
+ ldrb r0, [r4, r0]
+ cmp r5, r0
+ blt _022356E0
+_0223570C:
+ ldr r0, [r1, #0x10]
+ bl MOD13_0223A978
+ mov r1, r6
+ mov r0, #1
+ bl MOD13_0223C110
+ ldr r0, _02235730 ; =0x02243164
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02235730: .word 0x02243164
+_02235734: .word 0x0223F680
+
+ arm_func_start MOD13_02235738
+MOD13_02235738: ; 0x02235738
+ stmdb sp!, {r4, lr}
+ ldr r1, _02235788 ; =0x02243164
+ mov r4, r0
+ ldr r3, [r1]
+ ldr r0, _0223578C ; =0x04000050
+ ldrsb r2, [r3, #0x1a]
+ add r2, r2, #1
+ strb r2, [r3, #0x1a]
+ ldr r1, [r1]
+ ldrsb r1, [r1, #0x1a]
+ bl G2x_ChangeBlendBrightness_
+ ldr r0, _02235788 ; =0x02243164
+ ldr r0, [r0]
+ ldrsb r0, [r0, #0x1a]
+ cmp r0, #0
+ ldmltia sp!, {r4, pc}
+ ldr r1, _02235790 ; =MOD13_02235684
+ mov r0, r4
+ bl MOD13_0223C130
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02235788: .word 0x02243164
+_0223578C: .word 0x04000050
+_02235790: .word MOD13_02235684
+
+ arm_func_start MOD13_02235794
+MOD13_02235794: ; 0x02235794
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _02235818 ; =0x02243164
+ mov r4, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r0, [sp, #4]
+ add r0, r0, #0xc
+ str r0, [sp, #4]
+ bl MOD13_022359B8
+ ldr r0, [sp, #4]
+ cmp r0, #0xc0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, pc}
+ ldr r0, _02235818 ; =0x02243164
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x1e]
+ cmp r0, #0
+ beq _02235804
+ ldr r1, _0223581C ; =MOD13_02235738
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_02235804:
+ ldr r1, _02235820 ; =MOD13_02235684
+ mov r0, r4
+ bl MOD13_0223C130
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02235818: .word 0x02243164
+_0223581C: .word MOD13_02235738
+_02235820: .word MOD13_02235684
+
+ arm_func_start MOD13_02235824
+MOD13_02235824: ; 0x02235824
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _02235864 ; =0x02243164
+ ldr r3, [r1]
+ ldrb r2, [r3, #0x1d]
+ add r2, r2, #1
+ strb r2, [r3, #0x1d]
+ ldr r1, [r1]
+ ldrb r1, [r1, #0x1d]
+ cmp r1, #8
+ addlo sp, sp, #4
+ ldmloia sp!, {pc}
+ ldr r1, _02235868 ; =MOD13_02235794
+ bl MOD13_0223C130
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02235864: .word 0x02243164
+_02235868: .word MOD13_02235794
+
+ arm_func_start MOD13_0223586C
+MOD13_0223586C: ; 0x0223586C
+ stmdb sp!, {r4, lr}
+ ldr r1, _02235918 ; =0x02243164
+ mov r4, r0
+ ldr r0, [r1]
+ mov r1, #0
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #8]
+ bl MOD13_02239ADC
+ ldr r1, _02235918 ; =0x02243164
+ mov r2, r0
+ ldr r0, [r1]
+ ldr r1, _0223591C ; =0x0223F6B0
+ ldrb r3, [r0, #0x1c]
+ mov r0, #0
+ add r1, r1, r3, lsl #1
+ ldrb r1, [r4, r1]
+ add r1, r1, #1
+ bl MOD13_02239E8C
+ ldr r0, _02235918 ; =0x02243164
+ ldr r2, _02235920 ; =0x0223F698
+ ldr r0, [r0]
+ ldr r1, _02235924 ; =0x0223F718
+ ldrb lr, [r0, #0x1c]
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #8]
+ add r2, r2, lr, lsl #1
+ ldrb r3, [r4, r2]
+ add r2, r1, lr, lsl #3
+ mvn r1, #0
+ mov ip, r3, lsl #2
+ ldrh r2, [ip, r2]
+ ldr r3, _02235928 ; =0x0223F71A
+ add r3, r3, lr, lsl #3
+ ldrh r3, [ip, r3]
+ bl MOD13_02239888
+ ldr r0, _02235918 ; =0x02243164
+ mvn r1, #0
+ ldr r0, [r0]
+ mov r2, #0
+ add r0, r0, r4, lsl #2
+ ldr r0, [r0, #8]
+ bl MOD13_02239814
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02235918: .word 0x02243164
+_0223591C: .word 0x0223F6B0
+_02235920: .word 0x0223F698
+_02235924: .word 0x0223F718
+_02235928: .word 0x0223F71A
+
+ arm_func_start MOD13_0223592C
+MOD13_0223592C: ; 0x0223592C
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ mov sl, r0
+ mov sb, r1
+ bl MOD13_02239AD4
+ mov r8, r0
+ cmp r8, #0
+ mov r7, #0
+ addle sp, sp, #0xc
+ ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ add fp, sp, #0
+ mov r6, r7
+ mov r4, r7
+ mov r5, #0x200
+_02235964:
+ mov r0, sl
+ mov r1, r7
+ mov r2, fp
+ add r3, sp, #4
+ bl MOD13_022397DC
+ ldr r0, [sp, #4]
+ cmp r0, sb
+ blt _02235990
+ cmp r0, #0xc0
+ movlt r2, r6
+ blt _02235994
+_02235990:
+ mov r2, r5
+_02235994:
+ mov r0, sl
+ mov r1, r7
+ mov r3, r4
+ bl MOD13_02239A1C
+ add r7, r7, #1
+ cmp r7, r8
+ blt _02235964
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+
+ arm_func_start MOD13_022359B8
+MOD13_022359B8: ; 0x022359B8
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ ldr r1, _02235B4C ; =0x02243164
+ mov sl, r0
+ ldr r0, [r1]
+ ldr r1, _02235B50 ; =0x0223F6E8
+ ldrb r2, [r0, #0x1c]
+ ldr r0, [r0]
+ mov r3, sl
+ mov r2, r2, lsl #2
+ ldrh r2, [r1, r2]
+ mvn r1, #0
+ bl MOD13_02239888
+ ldr r1, _02235B4C ; =0x02243164
+ ldr r0, _02235B54 ; =0x0223F674
+ ldr r5, [r1]
+ ldr r2, _02235B50 ; =0x0223F6E8
+ ldrb r3, [r5, #0x1c]
+ ldrh r1, [r0, #2]
+ ldrh r4, [r0]
+ mov r0, r3, lsl #2
+ ldrh r2, [r2, r0]
+ ldr r0, [r5, #4]
+ add r3, sl, r1
+ add r2, r4, r2
+ mvn r1, #0
+ bl MOD13_02239888
+ ldr r0, _02235B4C ; =0x02243164
+ mov r1, sl
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD13_0223592C
+ ldr r0, _02235B4C ; =0x02243164
+ mov r1, sl
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD13_0223592C
+ ldr r4, _02235B4C ; =0x02243164
+ ldr r8, _02235B58 ; =0x0223F680
+ ldr r0, [r4]
+ mov sb, #0
+ ldrb r0, [r0, #0x1c]
+ ldrb r1, [r8, r0]
+ cmp r1, #0
+ ble _02235AE8
+ ldr r7, _02235B5C ; =0x0223F698
+ ldr r5, _02235B60 ; =0x0223F718
+ ldr fp, _02235B50 ; =0x0223F6E8
+ mvn r6, #0
+_02235A7C:
+ add r1, r7, r0, lsl #1
+ ldrb ip, [sb, r1]
+ add r2, r5, r0, lsl #3
+ add r3, fp, r0, lsl #2
+ add r0, r2, ip, lsl #2
+ ldr r1, [r4]
+ mov ip, ip, lsl #2
+ ldrh r2, [ip, r2]
+ ldrh r0, [r0, #2]
+ add r1, r1, sb, lsl #2
+ ldrh r3, [r3, #2]
+ add ip, sl, r0
+ ldr r0, [r1, #8]
+ mov r1, r6
+ sub r3, ip, r3
+ bl MOD13_02239888
+ ldr r0, [r4]
+ mov r1, sl
+ add r0, r0, sb, lsl #2
+ ldr r0, [r0, #8]
+ bl MOD13_0223592C
+ ldr r0, [r4]
+ add sb, sb, #1
+ ldrb r0, [r0, #0x1c]
+ ldrb r1, [r8, r0]
+ cmp sb, r1
+ blt _02235A7C
+_02235AE8:
+ and r1, sl, #0xff
+ cmp r1, #0xc0
+ movge r3, #0
+ movge r1, r3
+ ldrlt r2, _02235B64 ; =0x0223F702
+ movlt r3, r0, lsl #2
+ ldrlth r2, [r2, r3]
+ mov r5, r0, lsl #2
+ add r4, sp, #4
+ addlt r3, r1, r2
+ ldr r2, _02235B50 ; =0x0223F6E8
+ cmp r3, #0xc0
+ ldrh r0, [r2, r5]
+ ldr r2, _02235B68 ; =0x0223F700
+ movgt r3, #0xc0
+ str r4, [sp]
+ ldrh r2, [r2, r5]
+ add r2, r0, r2
+ bl MOD13_0223ABA8
+ mov r0, #0
+ mov r2, r4
+ mov r1, r0
+ bl MOD13_0223AD38
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_02235B4C: .word 0x02243164
+_02235B50: .word 0x0223F6E8
+_02235B54: .word 0x0223F674
+_02235B58: .word 0x0223F680
+_02235B5C: .word 0x0223F698
+_02235B60: .word 0x0223F718
+_02235B64: .word 0x0223F702
+_02235B68: .word 0x0223F700
+
+ arm_func_start MOD13_02235B6C
+MOD13_02235B6C: ; 0x02235B6C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, _02235BDC ; =0x02243164
+ mvn ip, #0
+ ldr r3, [r2]
+ mov r1, r0
+ strb ip, [r3, #0x1b]
+ ldr r3, [r2]
+ ldrh r0, [r3, #0x18]
+ add r0, r0, #1
+ strh r0, [r3, #0x18]
+ ldr r0, [r2]
+ ldrh r0, [r0, #0x18]
+ cmp r0, #0x78
+ addlo sp, sp, #4
+ ldmloia sp!, {pc}
+ mov r0, #0
+ bl MOD13_0223C110
+ ldr r1, _02235BE0 ; =MOD13_02235824
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02235BDC ; =0x02243164
+ ldr r1, [r1]
+ str r0, [r1, #0x14]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02235BDC: .word 0x02243164
+_02235BE0: .word MOD13_02235824
+
+ arm_func_start MOD13_02235BE4
+MOD13_02235BE4: ; 0x02235BE4
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ sub sp, sp, #8
+ ldr r5, _02235D20 ; =0x02243164
+ ldr sl, _02235D24 ; =0x0223F680
+ ldr r0, [r5]
+ mov r4, #0
+ ldrb r1, [r0, #0x1c]
+ ldrb r0, [sl, r1]
+ cmp r0, #0
+ ble _02235C6C
+ ldr sb, _02235D28 ; =0x0223F718
+ ldr r8, _02235D2C ; =0x0223F698
+ ldr r7, _02235D30 ; =0x0223F6BC
+ add r6, sp, #0
+_02235C1C:
+ add r0, r8, r1, lsl #1
+ ldrb r0, [r4, r0]
+ add r3, sb, r1, lsl #3
+ mov r2, r6
+ add r0, r3, r0, lsl #2
+ add r1, r7, r1, lsl #2
+ bl MOD13_0223AB74
+ mov r0, r6
+ bl MOD13_0223B2B4
+ cmp r0, #0
+ ldrne r0, _02235D20 ; =0x02243164
+ ldrne r0, [r0]
+ strneb r4, [r0, #0x1b]
+ bne _02235C6C
+ ldr r0, [r5]
+ add r4, r4, #1
+ ldrb r1, [r0, #0x1c]
+ ldrb r0, [sl, r1]
+ cmp r4, r0
+ blt _02235C1C
+_02235C6C:
+ mov r0, #1
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _02235C98
+ ldr r0, _02235D20 ; =0x02243164
+ ldr r1, _02235D34 ; =0x0223F6A4
+ ldr r2, [r0]
+ ldrb r0, [r2, #0x1c]
+ mov r0, r0, lsl #1
+ ldrsb r0, [r1, r0]
+ strb r0, [r2, #0x1b]
+_02235C98:
+ mov r0, #2
+ bl MOD13_0223B3D4
+ cmp r0, #0
+ beq _02235CC4
+ ldr r0, _02235D20 ; =0x02243164
+ ldr r1, _02235D38 ; =0x0223F6A5
+ ldr r2, [r0]
+ ldrb r0, [r2, #0x1c]
+ mov r0, r0, lsl #1
+ ldrsb r0, [r1, r0]
+ strb r0, [r2, #0x1b]
+_02235CC4:
+ ldr r0, _02235D20 ; =0x02243164
+ ldr r2, _02235D24 ; =0x0223F680
+ ldr r4, [r0]
+ mov r0, #0
+ ldrb r1, [r4, #0x1c]
+ ldrb r1, [r2, r1]
+ cmp r1, #0
+ ble _02235D10
+ ldrsb r3, [r4, #0x1b]
+_02235CE8:
+ cmp r0, r3
+ bne _02235CFC
+ bl MOD13_0223586C
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+_02235CFC:
+ ldrb r1, [r4, #0x1c]
+ add r0, r0, #1
+ ldrb r1, [r2, r1]
+ cmp r0, r1
+ blt _02235CE8
+_02235D10:
+ mvn r0, #0
+ strb r0, [r4, #0x1b]
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_02235D20: .word 0x02243164
+_02235D24: .word 0x0223F680
+_02235D28: .word 0x0223F718
+_02235D2C: .word 0x0223F698
+_02235D30: .word 0x0223F6BC
+_02235D34: .word 0x0223F6A4
+_02235D38: .word 0x0223F6A5
+
+ arm_func_start MOD13_02235D3C
+MOD13_02235D3C: ; 0x02235D3C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r1, _02235E10 ; =0x02243164
+ mov r4, r0
+ ldr r0, [r1]
+ add r2, sp, #0
+ ldr r0, [r0]
+ add r3, sp, #4
+ mov r1, #0
+ bl MOD13_022397DC
+ ldr r0, [sp, #4]
+ ldr r1, _02235E10 ; =0x02243164
+ sub r0, r0, #0xc
+ ldr r1, [r1]
+ str r0, [sp, #4]
+ ldrb r2, [r1, #0x1c]
+ ldr r1, _02235E14 ; =0x0223F6EA
+ mov r2, r2, lsl #2
+ ldrh r1, [r1, r2]
+ cmp r0, r1
+ ble _02235D9C
+ bl MOD13_022359B8
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+_02235D9C:
+ mov r0, r1
+ bl MOD13_022359B8
+ ldr r0, _02235E10 ; =0x02243164
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x1c]
+ cmp r0, #5
+ bne _02235DDC
+ mov r0, #0
+ ldr r1, _02235E18 ; =MOD13_02235B6C
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02235E10 ; =0x02243164
+ ldr r1, [r1]
+ str r0, [r1, #0x14]
+ b _02235DFC
+_02235DDC:
+ mov r0, #0
+ ldr r1, _02235E1C ; =MOD13_02235BE4
+ mov r2, r0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02235E10 ; =0x02243164
+ ldr r1, [r1]
+ str r0, [r1, #0x14]
+_02235DFC:
+ mov r1, r4
+ mov r0, #1
+ bl MOD13_0223C110
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02235E10: .word 0x02243164
+_02235E14: .word 0x0223F6EA
+_02235E18: .word MOD13_02235B6C
+_02235E1C: .word MOD13_02235BE4
+
+ arm_func_start MOD13_02235E20
+MOD13_02235E20: ; 0x02235E20
+ stmdb sp!, {r4, lr}
+ ldr r1, _02235E74 ; =0x02243164
+ mov r4, r0
+ ldr r3, [r1]
+ ldr r0, _02235E78 ; =0x04000050
+ ldrsb r2, [r3, #0x1a]
+ sub r2, r2, #1
+ strb r2, [r3, #0x1a]
+ ldr r1, [r1]
+ ldrsb r1, [r1, #0x1a]
+ bl G2x_ChangeBlendBrightness_
+ ldr r1, _02235E74 ; =0x02243164
+ mvn r0, #0xb
+ ldr r1, [r1]
+ ldrsb r1, [r1, #0x1a]
+ cmp r1, r0
+ ldmgtia sp!, {r4, pc}
+ ldr r1, _02235E7C ; =MOD13_02235D3C
+ mov r0, r4
+ bl MOD13_0223C130
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02235E74: .word 0x02243164
+_02235E78: .word 0x04000050
+_02235E7C: .word MOD13_02235D3C
+
+ arm_func_start MOD13_02235E80
+MOD13_02235E80: ; 0x02235E80
+ ldr r0, _02235E98 ; =0x02243164
+ ldr r0, [r0]
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_02235E98: .word 0x02243164
+
+ arm_func_start MOD13_02235E9C
+MOD13_02235E9C: ; 0x02235E9C
+ ldr r0, _02235EAC ; =0x02243164
+ ldr r0, [r0]
+ ldrsb r0, [r0, #0x1b]
+ bx lr
+ .align 2, 0
+_02235EAC: .word 0x02243164
+
+ arm_func_start MOD13_02235EB0
+MOD13_02235EB0: ; 0x02235EB0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _02235EF4 ; =0x02243164
+ mov r0, #0
+ ldr r1, [r1]
+ ldr r1, [r1, #0x14]
+ bl MOD13_0223C110
+ ldr r1, _02235EF8 ; =MOD13_02235824
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _02235EF4 ; =0x02243164
+ ldr r1, [r1]
+ str r0, [r1, #0x14]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02235EF4: .word 0x02243164
+_02235EF8: .word MOD13_02235824
+
+ arm_func_start MOD13_02235EFC
+MOD13_02235EFC: ; 0x02235EFC
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0x2c
+ ldr r5, _02236224 ; =0x0223F688
+ ldr r4, _02236228 ; =0x0224307C
+ ldrb sl, [r5]
+ ldrb sb, [r5, #1]
+ ldrb r8, [r5, #2]
+ ldrb r7, [r5, #3]
+ ldrb r6, [r5, #4]
+ ldrb r5, [r5, #5]
+ mov fp, r0
+ str r2, [sp, #0x14]
+ mov r2, r3
+ str r1, [sp, #0x10]
+ ldr r0, [r4]
+ ldr r3, [sp, #0x50]
+ mov r1, fp
+ strb sl, [sp, #0x20]
+ strb sb, [sp, #0x21]
+ strb r8, [sp, #0x22]
+ strb r7, [sp, #0x23]
+ strb r6, [sp, #0x24]
+ strb r5, [sp, #0x25]
+ bl MOD13_0222352C
+ str r0, [sp, #0x18]
+ mov r0, #0x20
+ mov r1, #4
+ bl MOD13_0223AFE0
+ ldr r2, _0223622C ; =0x02243164
+ ldr r1, [sp, #0x10]
+ str r0, [r2]
+ strb r1, [r0, #0x1c]
+ ldr r1, [r2]
+ mvn r3, #1
+ strb r3, [r1, #0x1b]
+ ldr r3, [r2]
+ ldr r2, [sp, #0x14]
+ ldr r0, _02236230 ; =0x04000050
+ strb r2, [r3, #0x1e]
+ mov r1, #0x1f
+ mov r2, #0
+ bl G2x_SetBlendBrightness_
+ mov r0, #0
+ ldr r3, _02236234 ; =0x0223F678
+ ldr r1, [sp, #0x10]
+ mov r2, r0
+ ldrb r1, [r3, r1]
+ bl MOD13_02239E0C
+ ldr r3, _0223622C ; =0x02243164
+ mvn r1, #0
+ ldr r4, [r3]
+ mov r2, #0x100
+ str r0, [r4]
+ ldr r0, [r3]
+ mov r3, #0
+ ldr r0, [r0]
+ bl MOD13_02239888
+ ldr r0, _0223622C ; =0x02243164
+ mvn r1, #0
+ ldr r0, [r0]
+ mov r2, #0
+ ldr r0, [r0]
+ bl MOD13_02239814
+ ldr r2, _02236238 ; =0x0223F680
+ ldr r0, [sp, #0x10]
+ mov sl, #0
+ ldrb r0, [r2, r0]
+ cmp r0, #0
+ ble _0223609C
+ ldr r0, [sp, #0x10]
+ ldr r1, _0223623C ; =0x0223F6B0
+ ldr r4, _0223622C ; =0x02243164
+ add r8, r2, r0
+ add sb, r1, r0, lsl #1
+ str sl, [sp, #0x1c]
+ mov r5, sl
+ mov fp, sl
+ mvn r7, #0
+ mov r6, #0x100
+_02236038:
+ ldr r0, [sp, #0x1c]
+ ldrb r1, [sb]
+ mov r2, r0
+ bl MOD13_02239E0C
+ ldr r2, [r4]
+ mov r1, r7
+ add r2, r2, sl, lsl #2
+ str r0, [r2, #8]
+ ldr r0, [r4]
+ mov r2, r6
+ add r0, r0, sl, lsl #2
+ ldr r0, [r0, #8]
+ mov r3, r5
+ bl MOD13_02239888
+ ldr r0, [r4]
+ mov r1, r7
+ add r0, r0, sl, lsl #2
+ ldr r0, [r0, #8]
+ mov r2, fp
+ bl MOD13_02239814
+ ldrb r0, [r8]
+ add sl, sl, #1
+ add sb, sb, #1
+ cmp sl, r0
+ blt _02236038
+_0223609C:
+ add r1, sp, #0x28
+ str r1, [sp]
+ mov r0, #0
+ mov r1, #0x20
+ mov r2, #0xc
+ mov r3, #1
+ str r0, [sp, #4]
+ bl MOD13_0223A9A4
+ ldr r1, _0223622C ; =0x02243164
+ ldr r1, [r1]
+ str r0, [r1, #0x10]
+ mov r0, #0
+ ldr r1, [sp, #0x28]
+ mov r2, r0
+ bl MOD13_02239B74
+ ldr r1, _0223622C ; =0x02243164
+ ldr r1, [r1]
+ str r0, [r1, #4]
+ bl MOD13_0221EF88
+ ldr r1, [sp, #0x10]
+ mov r3, #2
+ mov r5, r1, lsl #2
+ ldr r1, _02236240 ; =0x0223F6D2
+ ldr r2, _0223622C ; =0x02243164
+ ldrh r4, [r1, r5]
+ mov r1, #0
+ str r4, [sp]
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x18]
+ ldr r3, _02236244 ; =0x0223F6D0
+ str r0, [sp, #0xc]
+ ldr r0, [r2]
+ ldrh r3, [r3, r5]
+ ldr r0, [r0, #0x10]
+ mov r2, r1
+ bl MOD13_0223A4F0
+ ldr r0, _0223622C ; =0x02243164
+ mov r2, #0
+ ldr r3, [r0]
+ mov r1, #0x100
+ str r2, [sp]
+ ldr r0, [r3, #0x10]
+ ldr r3, [r3, #4]
+ bl MOD13_0223A440
+ mov r0, #0
+ mov r1, r0
+ mov r2, #0x1f
+ mov r3, r0
+ bl MOD13_0223ABCC
+ ldr r3, _0223622C ; =0x02243164
+ add r4, sp, #0x20
+ ldr r3, [r3]
+ mov r0, #0
+ ldrb r3, [r3, #0x1c]
+ mov r1, #1
+ mov r2, #0x1f
+ ldrb r3, [r4, r3]
+ bl MOD13_0223ABCC
+ mov r0, #0
+ mov r1, #3
+ mov r2, #0x1f
+ mov r3, #1
+ bl MOD13_0223ABCC
+ ldr r2, _02236248 ; =0x0223F690
+ mov r0, #0
+ mov r1, #1
+ bl MOD13_0223AD38
+ mov r0, #0xc0
+ bl MOD13_022359B8
+ mov r2, #0x4000000
+ ldr r0, [sp, #0x14]
+ ldr r1, [r2]
+ cmp r0, #0
+ bic r0, r1, #0xe000
+ orr r0, r0, #0x6000
+ str r0, [r2]
+ beq _022361FC
+ ldr r1, _0223624C ; =MOD13_02235E20
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _0223622C ; =0x02243164
+ add sp, sp, #0x2c
+ ldr r1, [r1]
+ str r0, [r1, #0x14]
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_022361FC:
+ ldr r1, _02236250 ; =MOD13_02235D3C
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0x78
+ bl MOD13_0223C1C4
+ ldr r1, _0223622C ; =0x02243164
+ ldr r1, [r1]
+ str r0, [r1, #0x14]
+ add sp, sp, #0x2c
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_02236224: .word 0x0223F688
+_02236228: .word 0x0224307C
+_0223622C: .word 0x02243164
+_02236230: .word 0x04000050
+_02236234: .word 0x0223F678
+_02236238: .word 0x0223F680
+_0223623C: .word 0x0223F6B0
+_02236240: .word 0x0223F6D2
+_02236244: .word 0x0223F6D0
+_02236248: .word 0x0223F690
+_0223624C: .word MOD13_02235E20
+_02236250: .word MOD13_02235D3C
+
+ arm_func_start MOD13_02236254
+MOD13_02236254: ; 0x02236254
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ ldr r1, _02236310 ; =0x02243168
+ mov r5, #1
+ ldr lr, [r1]
+ ldrh r4, [lr, #2]
+ mov ip, r5
+ add r1, lr, #0x24
+ mov r6, #0x1e
+_02236274:
+ mov r2, ip, lsl r5
+ ands r2, r4, r2
+ beq _022362F4
+ sub r2, r5, #1
+ mul r3, r2, r6
+ ldrb r8, [r0]
+ ldrb r7, [r1, r3]
+ add r2, r1, r3
+ cmp r8, r7
+ bne _022362F4
+ ldrb r8, [r0, #1]
+ ldrb r7, [r2, #1]
+ cmp r8, r7
+ bne _022362F4
+ ldrb r8, [r0, #2]
+ ldrb r7, [r2, #2]
+ cmp r8, r7
+ bne _022362F4
+ ldrb r8, [r0, #3]
+ ldrb r7, [r2, #3]
+ cmp r8, r7
+ bne _022362F4
+ ldrb r8, [r0, #4]
+ ldrb r7, [r2, #4]
+ cmp r8, r7
+ bne _022362F4
+ ldrb r7, [r0, #5]
+ ldrb r2, [r2, #5]
+ cmp r7, r2
+ addeq r0, lr, r3
+ ldreqh r0, [r0, #0x2a]
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+_022362F4:
+ add r2, r5, #1
+ mov r2, r2, lsl #0x10
+ mov r5, r2, lsr #0x10
+ cmp r5, #2
+ blo _02236274
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02236310: .word 0x02243168
+
+ arm_func_start MOD13_02236314
+MOD13_02236314: ; 0x02236314
+ ldr r1, _02236344 ; =0x02243168
+ mov r2, #1
+ ldr r3, [r1]
+ mov r1, r2, lsl r0
+ ldrh r2, [r3, #2]
+ ands r1, r2, r1
+ subne r1, r0, #1
+ addne r2, r3, #0xe
+ movne r0, #0x1e
+ mlane r0, r1, r0, r2
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_02236344: .word 0x02243168
+
+ arm_func_start MOD13_02236348
+MOD13_02236348: ; 0x02236348
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x14
+ mov r4, r0
+ bl OS_DisableInterrupts
+ ldr r1, _02236410 ; =0x02243168
+ mov r2, #1
+ ldr r3, [r1]
+ mov r1, r2, lsl r4
+ mov r1, r1, lsl #0x10
+ ldrh r2, [r3, #2]
+ mov r4, r1, lsr #0x10
+ mov r5, r0
+ ands r1, r2, r4
+ bne _02236390
+ bl OS_RestoreInterrupts
+ add sp, sp, #0x14
+ mov r0, #0
+ ldmia sp!, {r4, r5, pc}
+_02236390:
+ add r1, sp, #0
+ mov r0, r3
+ mov r2, #0xe
+ bl MI_CpuCopy8
+ mov r0, r5
+ bl OS_RestoreInterrupts
+ ldrh r0, [sp, #4]
+ ands r0, r0, r4
+ addne sp, sp, #0x14
+ movne r0, #2
+ ldmneia sp!, {r4, r5, pc}
+ ldrh r0, [sp, #6]
+ ands r0, r0, r4
+ addne sp, sp, #0x14
+ movne r0, #3
+ ldmneia sp!, {r4, r5, pc}
+ ldrh r0, [sp, #8]
+ ands r0, r0, r4
+ addne sp, sp, #0x14
+ movne r0, #4
+ ldmneia sp!, {r4, r5, pc}
+ ldrh r0, [sp, #0xa]
+ ands r0, r0, r4
+ addne sp, sp, #0x14
+ movne r0, #5
+ ldmneia sp!, {r4, r5, pc}
+ ldrh r0, [sp, #0xc]
+ ands r0, r0, r4
+ movne r0, #6
+ moveq r0, #1
+ add sp, sp, #0x14
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02236410: .word 0x02243168
+
+ arm_func_start MOD13_02236414
+MOD13_02236414: ; 0x02236414
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _02236468 ; =0x02243168
+ ldr r1, _0223646C ; =0x0224316C
+ ldr r2, [r2]
+ add r5, r2, #2
+ add r4, r2, #4
+ add lr, r2, #6
+ add ip, r2, #8
+ add r3, r2, #0xa
+ add r2, r2, #0xc
+ str r5, [r1]
+ str r4, [r1, #4]
+ str lr, [r1, #8]
+ str ip, [r1, #0xc]
+ str r3, [r1, #0x10]
+ str r2, [r1, #0x14]
+ ldr r0, [r1, r0, lsl #2]
+ ldrh r0, [r0]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02236468: .word 0x02243168
+_0223646C: .word 0x0224316C
+
+ arm_func_start MOD13_02236470
+MOD13_02236470: ; 0x02236470
+ ldr r0, _02236480 ; =0x02243168
+ ldr r0, [r0]
+ ldrh r0, [r0]
+ bx lr
+ .align 2, 0
+_02236480: .word 0x02243168
+
+ arm_func_start MOD13_02236484
+MOD13_02236484: ; 0x02236484
+ ldr r1, _02236494 ; =0x02243168
+ ldr r1, [r1]
+ strh r0, [r1]
+ bx lr
+ .align 2, 0
+_02236494: .word 0x02243168
+
+ arm_func_start MOD13_02236498
+MOD13_02236498: ; 0x02236498
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r5, r0
+ mov r4, r2
+ cmp r1, #0xe
+ addls pc, pc, r1, lsl #2
+ b _022367CC
+_022364B0: ; jump table
+ b _022367CC ; case 0
+ ldmia sp!, {r4, r5, r6, pc} ; case 1
+ b _022364EC ; case 2
+ b _02236574 ; case 3
+ ldmia sp!, {r4, r5, r6, pc} ; case 4
+ ldmia sp!, {r4, r5, r6, pc} ; case 5
+ ldmia sp!, {r4, r5, r6, pc} ; case 6
+ b _022366AC ; case 7
+ ldmia sp!, {r4, r5, r6, pc} ; case 8
+ b _022366DC ; case 9
+ b _022365FC ; case 10
+ ldmia sp!, {r4, r5, r6, pc} ; case 11
+ b _02236724 ; case 12
+ b _02236780 ; case 13
+ b _02236668 ; case 14
+_022364EC:
+ bl MOD13_02236470
+ cmp r0, #2
+ ldmneia sp!, {r4, r5, r6, pc}
+ ldr r0, _022367D4 ; =0x02243168
+ ldr r6, [r0]
+ bl OS_DisableInterrupts
+ ldrh r2, [r6, #2]
+ mov r1, #1
+ orr r1, r2, r1, lsl r5
+ strh r1, [r6, #2]
+ bl OS_RestoreInterrupts
+ ldr r1, _022367D4 ; =0x02243168
+ sub r3, r5, #1
+ mov r0, #0x1e
+ mul r0, r3, r0
+ ldr r2, [r1]
+ add r3, r2, #0x24
+ ldrb r2, [r4, #0xa]
+ add ip, r3, r0
+ strb r2, [r3, r0]
+ ldrb r2, [r4, #0xb]
+ strb r2, [ip, #1]
+ ldrb r2, [r4, #0xc]
+ strb r2, [ip, #2]
+ ldrb r2, [r4, #0xd]
+ strb r2, [ip, #3]
+ ldrb r2, [r4, #0xe]
+ strb r2, [ip, #4]
+ ldrb r2, [r4, #0xf]
+ strb r2, [ip, #5]
+ ldr r1, [r1]
+ add r0, r1, r0
+ strh r5, [r0, #0x2a]
+ ldmia sp!, {r4, r5, r6, pc}
+_02236574:
+ bl MOD13_02236348
+ cmp r0, #6
+ ldmeqia sp!, {r4, r5, r6, pc}
+ mov r0, #1
+ mvn r0, r0, lsl r5
+ mov r4, r0, lsl #0x10
+ bl OS_DisableInterrupts
+ ldr r1, _022367D4 ; =0x02243168
+ ldr r3, [r1]
+ ldrh r2, [r3, #2]
+ and r2, r2, r4, lsr #16
+ strh r2, [r3, #2]
+ ldr r3, [r1]
+ ldrh r2, [r3, #4]
+ and r2, r2, r4, lsr #16
+ strh r2, [r3, #4]
+ ldr r3, [r1]
+ ldrh r2, [r3, #6]
+ and r2, r2, r4, lsr #16
+ strh r2, [r3, #6]
+ ldr r3, [r1]
+ ldrh r2, [r3, #8]
+ and r2, r2, r4, lsr #16
+ strh r2, [r3, #8]
+ ldr r3, [r1]
+ ldrh r2, [r3, #0xa]
+ and r2, r2, r4, lsr #16
+ strh r2, [r3, #0xa]
+ ldr r2, [r1]
+ ldrh r1, [r2, #0xc]
+ and r1, r1, r4, lsr #16
+ strh r1, [r2, #0xc]
+ bl OS_RestoreInterrupts
+ ldmia sp!, {r4, r5, r6, pc}
+_022365FC:
+ bl MOD13_02236470
+ cmp r0, #2
+ beq _02236614
+ mov r0, r5
+ bl MOD13_02236B38
+ ldmia sp!, {r4, r5, r6, pc}
+_02236614:
+ ldr r0, _022367D4 ; =0x02243168
+ mov r1, #1
+ ldr r3, [r0]
+ mov r0, r5
+ ldrh r2, [r3, #4]
+ orr r1, r2, r1, lsl r5
+ strh r1, [r3, #4]
+ bl MOD13_02236C1C
+ mov r0, r5
+ bl MOD13_022132CC
+ cmp r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r1, _022367D4 ; =0x02243168
+ sub r2, r5, #1
+ ldr r3, [r1]
+ mov r1, #0x1e
+ add r3, r3, #0xe
+ mla r1, r2, r1, r3
+ mov r2, #0x16
+ bl MI_CpuCopy8
+ ldmia sp!, {r4, r5, r6, pc}
+_02236668:
+ ldr r0, _022367D4 ; =0x02243168
+ mov r4, #1
+ ldr r3, [r0]
+ mvn r1, r4, lsl r5
+ ldrh r2, [r3, #4]
+ and r1, r2, r1
+ strh r1, [r3, #4]
+ ldr r1, [r0]
+ ldrh r0, [r1, #6]
+ orr r0, r0, r4, lsl r5
+ strh r0, [r1, #6]
+ bl MOD13_02236470
+ cmp r0, #3
+ ldmneia sp!, {r4, r5, r6, pc}
+ mov r0, r5
+ bl MOD13_02236A54
+ ldmia sp!, {r4, r5, r6, pc}
+_022366AC:
+ ldr r0, _022367D4 ; =0x02243168
+ mov r4, #1
+ ldr r3, [r0]
+ mvn r1, r4, lsl r5
+ ldrh r2, [r3, #8]
+ and r1, r2, r1
+ strh r1, [r3, #8]
+ ldr r1, [r0]
+ ldrh r0, [r1, #0xa]
+ orr r0, r0, r4, lsl r5
+ strh r0, [r1, #0xa]
+ ldmia sp!, {r4, r5, r6, pc}
+_022366DC:
+ ldr r0, _022367D4 ; =0x02243168
+ mov r4, #1
+ ldr r3, [r0]
+ mvn r1, r4, lsl r5
+ ldrh r2, [r3, #0xa]
+ and r1, r2, r1
+ strh r1, [r3, #0xa]
+ ldr r2, [r0]
+ ldrh r1, [r2, #0xc]
+ orr r1, r1, r4, lsl r5
+ strh r1, [r2, #0xc]
+ ldr r0, [r0]
+ ldrh r1, [r0, #2]
+ ldrh r0, [r0, #0xc]
+ cmp r1, r0
+ ldmneia sp!, {r4, r5, r6, pc}
+ bl MOD13_02214F18
+ ldmia sp!, {r4, r5, r6, pc}
+_02236724:
+ bl MOD13_02236470
+ cmp r0, #4
+ bne _0223673C
+ mov r0, #5
+ bl MOD13_02236484
+ b _02236744
+_0223673C:
+ mov r0, #0
+ bl MOD13_02236484
+_02236744:
+ ldr r0, _022367D4 ; =0x02243168
+ ldr r0, [r0]
+ add r0, r0, #0x1b000
+ ldr r1, [r0, #0x144]
+ cmp r1, #0
+ movne r1, #0
+ strne r1, [r0, #0x144]
+ ldr r0, _022367D4 ; =0x02243168
+ ldr r0, [r0]
+ add r0, r0, #0x1b000
+ ldr r1, [r0, #0x140]
+ cmp r1, #0
+ movne r1, #0
+ strne r1, [r0, #0x140]
+ ldmia sp!, {r4, r5, r6, pc}
+_02236780:
+ ldrh r0, [r4]
+ cmp r0, #8
+ bgt _022367B8
+ cmp r0, #8
+ ldmgeia sp!, {r4, r5, r6, pc}
+ cmp r0, #2
+ ldmgtia sp!, {r4, r5, r6, pc}
+ cmp r0, #1
+ ldmltia sp!, {r4, r5, r6, pc}
+ cmp r0, #1
+ beq _022367C0
+ cmp r0, #2
+ beq _022367C0
+ ldmia sp!, {r4, r5, r6, pc}
+_022367B8:
+ cmp r0, #9
+ ldmneia sp!, {r4, r5, r6, pc}
+_022367C0:
+ mov r0, #7
+ bl MOD13_02236484
+ ldmia sp!, {r4, r5, r6, pc}
+_022367CC:
+ bl OS_Terminate
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_022367D4: .word 0x02243168
+
+ arm_func_start MOD13_022367D8
+MOD13_022367D8: ; 0x022367D8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #6
+ bl MOD13_02236484
+ bl MOD13_02214F18
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_022367F4
+MOD13_022367F4: ; 0x022367F4
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ mov r8, #0
+ mov sb, #1
+ ldr r4, _022368F8 ; =0x02243168
+ mov r6, sb
+ mov r5, #3
+_02236810:
+ ldr r0, [r4]
+ mov r7, r6, lsl sb
+ ldrh r0, [r0, #0xa]
+ ands r0, r0, r7
+ beq _022368BC
+ mov r0, sb
+ mov r1, r5
+ bl MOD13_02213174
+ cmp r0, #0
+ orrne r0, r8, r7
+ movne r0, r0, lsl #0x10
+ movne r8, r0, lsr #0x10
+ bne _022368BC
+ mvn r0, r7
+ mov r7, r0, lsl #0x10
+ bl OS_DisableInterrupts
+ ldr r2, [r4]
+ ldrh r1, [r2, #2]
+ and r1, r1, r7, lsr #16
+ strh r1, [r2, #2]
+ ldr r2, [r4]
+ ldrh r1, [r2, #4]
+ and r1, r1, r7, lsr #16
+ strh r1, [r2, #4]
+ ldr r2, [r4]
+ ldrh r1, [r2, #6]
+ and r1, r1, r7, lsr #16
+ strh r1, [r2, #6]
+ ldr r2, [r4]
+ ldrh r1, [r2, #8]
+ and r1, r1, r7, lsr #16
+ strh r1, [r2, #8]
+ ldr r2, [r4]
+ ldrh r1, [r2, #0xa]
+ and r1, r1, r7, lsr #16
+ strh r1, [r2, #0xa]
+ ldr r2, [r4]
+ ldrh r1, [r2, #0xc]
+ and r1, r1, r7, lsr #16
+ strh r1, [r2, #0xc]
+ bl OS_RestoreInterrupts
+ mov r0, sb
+ bl MOD13_02214D6C
+_022368BC:
+ add r0, sb, #1
+ mov r0, r0, lsl #0x10
+ mov sb, r0, lsr #0x10
+ cmp sb, #0x10
+ blo _02236810
+ cmp r8, #0
+ bne _022368E8
+ mov r0, #7
+ bl MOD13_02236484
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+_022368E8:
+ mov r0, #4
+ bl MOD13_02236484
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_022368F8: .word 0x02243168
+
+ arm_func_start MOD13_022368FC
+MOD13_022368FC: ; 0x022368FC
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r4, _02236964 ; =0x02243168
+ ldr r0, [r4]
+ ldrh r0, [r0, #2]
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ mov r6, #1
+ mov r5, r6
+_02236920:
+ ldr r1, [r4]
+ mov r0, r5, lsl r6
+ ldrh r1, [r1, #2]
+ ands r0, r1, r0
+ beq _02236948
+ mov r0, r6
+ bl MOD13_02213270
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+_02236948:
+ add r0, r6, #1
+ mov r0, r0, lsl #0x10
+ mov r6, r0, lsr #0x10
+ cmp r6, #0x10
+ blo _02236920
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_02236964: .word 0x02243168
+
+ arm_func_start MOD13_02236968
+MOD13_02236968: ; 0x02236968
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r0, #3
+ bl MOD13_02236484
+ mov r5, #1
+ ldr r7, _02236A50 ; =0x02243168
+ mov r4, r5
+_02236984:
+ ldr r1, [r7]
+ mov r2, r4, lsl r5
+ ldrh r0, [r1, #2]
+ ands r0, r0, r2
+ beq _02236A34
+ ldrh r0, [r1, #4]
+ ands r0, r0, r2
+ bne _02236A34
+ ldrh r0, [r1, #6]
+ ands r0, r0, r2
+ bne _02236A2C
+ mvn r0, r2
+ mov r6, r0, lsl #0x10
+ bl OS_DisableInterrupts
+ ldr r2, [r7]
+ ldrh r1, [r2, #2]
+ and r1, r1, r6, lsr #16
+ strh r1, [r2, #2]
+ ldr r2, [r7]
+ ldrh r1, [r2, #4]
+ and r1, r1, r6, lsr #16
+ strh r1, [r2, #4]
+ ldr r2, [r7]
+ ldrh r1, [r2, #6]
+ and r1, r1, r6, lsr #16
+ strh r1, [r2, #6]
+ ldr r2, [r7]
+ ldrh r1, [r2, #8]
+ and r1, r1, r6, lsr #16
+ strh r1, [r2, #8]
+ ldr r2, [r7]
+ ldrh r1, [r2, #0xa]
+ and r1, r1, r6, lsr #16
+ strh r1, [r2, #0xa]
+ ldr r2, [r7]
+ ldrh r1, [r2, #0xc]
+ and r1, r1, r6, lsr #16
+ strh r1, [r2, #0xc]
+ bl OS_RestoreInterrupts
+ mov r0, r5
+ bl MOD13_02214D6C
+ b _02236A34
+_02236A2C:
+ mov r0, r5
+ bl MOD13_02236A54
+_02236A34:
+ add r0, r5, #1
+ mov r0, r0, lsl #0x10
+ mov r5, r0, lsr #0x10
+ cmp r5, #0x10
+ blo _02236984
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02236A50: .word 0x02243168
+
+ arm_func_start MOD13_02236A54
+MOD13_02236A54: ; 0x02236A54
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r1, #2
+ mov r4, r0
+ bl MOD13_02213174
+ cmp r0, #0
+ bne _02236AF8
+ mov r0, #1
+ mvn r0, r0, lsl r4
+ mov r5, r0, lsl #0x10
+ bl OS_DisableInterrupts
+ ldr r1, _02236B34 ; =0x02243168
+ ldr r3, [r1]
+ ldrh r2, [r3, #2]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #2]
+ ldr r3, [r1]
+ ldrh r2, [r3, #4]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #4]
+ ldr r3, [r1]
+ ldrh r2, [r3, #6]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #6]
+ ldr r3, [r1]
+ ldrh r2, [r3, #8]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #8]
+ ldr r3, [r1]
+ ldrh r2, [r3, #0xa]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #0xa]
+ ldr r2, [r1]
+ ldrh r1, [r2, #0xc]
+ and r1, r1, r5, lsr #16
+ strh r1, [r2, #0xc]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ bl MOD13_02214D6C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02236AF8:
+ bl OS_DisableInterrupts
+ ldr r1, _02236B34 ; =0x02243168
+ mov ip, #1
+ ldr r5, [r1]
+ mvn r2, ip, lsl r4
+ ldrh r3, [r5, #6]
+ and r2, r3, r2
+ strh r2, [r5, #6]
+ ldr r2, [r1]
+ ldrh r1, [r2, #8]
+ orr r1, r1, ip, lsl r4
+ strh r1, [r2, #8]
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02236B34: .word 0x02243168
+
+ arm_func_start MOD13_02236B38
+MOD13_02236B38: ; 0x02236B38
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r1, #0
+ mov r4, r0
+ bl MOD13_02213174
+ cmp r0, #0
+ bne _02236BDC
+ mov r0, #1
+ mvn r0, r0, lsl r4
+ mov r5, r0, lsl #0x10
+ bl OS_DisableInterrupts
+ ldr r1, _02236C18 ; =0x02243168
+ ldr r3, [r1]
+ ldrh r2, [r3, #2]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #2]
+ ldr r3, [r1]
+ ldrh r2, [r3, #4]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #4]
+ ldr r3, [r1]
+ ldrh r2, [r3, #6]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #6]
+ ldr r3, [r1]
+ ldrh r2, [r3, #8]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #8]
+ ldr r3, [r1]
+ ldrh r2, [r3, #0xa]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #0xa]
+ ldr r2, [r1]
+ ldrh r1, [r2, #0xc]
+ and r1, r1, r5, lsr #16
+ strh r1, [r2, #0xc]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ bl MOD13_02214D6C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02236BDC:
+ bl OS_DisableInterrupts
+ ldr r1, _02236C18 ; =0x02243168
+ mov r2, #1
+ ldr r3, [r1]
+ mvn r4, r2, lsl r4
+ ldrh r2, [r3, #4]
+ and r2, r2, r4
+ strh r2, [r3, #4]
+ ldr r2, [r1]
+ ldrh r1, [r2, #2]
+ and r1, r1, r4
+ strh r1, [r2, #2]
+ bl OS_RestoreInterrupts
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02236C18: .word 0x02243168
+
+ arm_func_start MOD13_02236C1C
+MOD13_02236C1C: ; 0x02236C1C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r1, #1
+ mov r4, r0
+ bl MOD13_02213174
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #1
+ mvn r0, r0, lsl r4
+ mov r5, r0, lsl #0x10
+ bl OS_DisableInterrupts
+ ldr r1, _02236CC4 ; =0x02243168
+ ldr r3, [r1]
+ ldrh r2, [r3, #2]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #2]
+ ldr r3, [r1]
+ ldrh r2, [r3, #4]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #4]
+ ldr r3, [r1]
+ ldrh r2, [r3, #6]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #6]
+ ldr r3, [r1]
+ ldrh r2, [r3, #8]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #8]
+ ldr r3, [r1]
+ ldrh r2, [r3, #0xa]
+ and r2, r2, r5, lsr #16
+ strh r2, [r3, #0xa]
+ ldr r2, [r1]
+ ldrh r1, [r2, #0xc]
+ and r1, r1, r5, lsr #16
+ strh r1, [r2, #0xc]
+ bl OS_RestoreInterrupts
+ mov r0, r4
+ bl MOD13_02214D6C
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02236CC4: .word 0x02243168
+
+ arm_func_start MOD13_02236CC8
+MOD13_02236CC8: ; 0x02236CC8
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x48
+ mov r6, r0
+ ldr r0, [r6]
+ mov r4, #0
+ cmp r0, #0
+ moveq r5, r4
+ beq _02236D10
+ add r0, sp, #0
+ bl FS_InitFile
+ ldr r1, [r6]
+ add r0, sp, #0
+ bl FS_OpenFile
+ cmp r0, #0
+ addeq sp, sp, #0x48
+ moveq r0, r4
+ ldmeqia sp!, {r4, r5, r6, pc}
+ add r5, sp, #0
+_02236D10:
+ mov r0, r5
+ bl MOD13_0221411C
+ cmp r0, #0
+ beq _02236D7C
+ ldr r1, _02236D98 ; =0x02243168
+ ldr r0, [r1]
+ add r2, r0, #0x2c
+ add r0, r0, #0x1b000
+ str r2, [r0, #0x144]
+ ldr r0, [r1]
+ add r0, r0, #0x1b000
+ ldr r1, [r0, #0x144]
+ cmp r1, #0
+ beq _02236D7C
+ mov r0, r5
+ mov r2, #0x10000
+ bl MOD13_02213CB0
+ cmp r0, #0
+ beq _02236D7C
+ ldr r1, _02236D98 ; =0x02243168
+ mov r0, r6
+ ldr r1, [r1]
+ add r1, r1, #0x1b000
+ ldr r1, [r1, #0x144]
+ bl MOD13_02213944
+ cmp r0, #0
+ movne r4, #1
+_02236D7C:
+ add r0, sp, #0
+ cmp r5, r0
+ bne _02236D8C
+ bl FS_CloseFile
+_02236D8C:
+ mov r0, r4
+ add sp, sp, #0x48
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_02236D98: .word 0x02243168
+
+ arm_func_start MOD13_02236D9C
+MOD13_02236D9C: ; 0x02236D9C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, r1
+ mov r0, #2
+ bl MOD13_02236484
+ mov r0, r4
+ bl MOD13_02215028
+ cmp r0, #0
+ beq _02236DD4
+ mov r0, #7
+ bl MOD13_02236484
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02236DD4:
+ mov r0, r5
+ bl MOD13_02236CC8
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ bl OS_Terminate
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+
+ arm_func_start MOD13_02236DF4
+MOD13_02236DF4: ; 0x02236DF4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #0x7c
+ mov r5, r0
+ add r0, sp, #0x28
+ mov r4, r1
+ bl OS_GetOwnerInfo
+ ldrb r2, [sp, #4]
+ ldrb r1, [sp, #0x29]
+ ldrh r3, [sp, #0x40]
+ bic r2, r2, #0xf
+ and r1, r1, #0xf
+ orr r2, r2, r1
+ strb r2, [sp, #4]
+ add r0, sp, #0x2c
+ add r1, sp, #6
+ mov r2, r3, lsl #1
+ strb r3, [sp, #5]
+ bl MI_CpuCopy8
+ ldrb r0, [sp, #4]
+ add ip, sp, #0x1a
+ mov r1, #0
+ bic r0, r0, #0xf0
+ strb r0, [sp, #4]
+ strh r1, [ip]
+ strh r1, [ip, #2]
+ strh r1, [ip, #4]
+ strh r1, [ip, #6]
+ strh r1, [ip, #8]
+ strh r1, [ip, #0xa]
+ ldr r0, _02236F04 ; =0x02243168
+ strh r1, [ip, #0xc]
+ ldr lr, [r0]
+ mov r2, #3
+ mov r3, lr
+_02236E7C:
+ ldrh r1, [ip], #2
+ ldrh r0, [ip], #2
+ subs r2, r2, #1
+ strh r1, [r3], #2
+ strh r0, [r3], #2
+ bne _02236E7C
+ ldrh r2, [ip]
+ ldr r0, _02236F08 ; =0x00010040
+ add r1, lr, #0x1b000
+ strh r2, [r3]
+ add r0, lr, r0
+ str r0, [r1, #0x140]
+ mov r1, #2
+ str r1, [sp]
+ ldr r0, _02236F04 ; =0x02243168
+ add r1, sp, #4
+ ldr r0, [r0]
+ mov r2, r5
+ add r0, r0, #0x1b000
+ ldr r0, [r0, #0x140]
+ mov r3, r4
+ bl MOD13_02215474
+ cmp r0, #0
+ beq _02236EE0
+ bl OS_Terminate
+_02236EE0:
+ mov r0, #0x100
+ mov r1, #1
+ bl MOD13_02215360
+ ldr r0, _02236F0C ; =MOD13_02236498
+ bl MOD13_02213368
+ mov r0, #1
+ bl MOD13_02236484
+ add sp, sp, #0x7c
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02236F04: .word 0x02243168
+_02236F08: .word 0x00010040
+_02236F0C: .word MOD13_02236498
+
+ arm_func_start MOD13_02236F10
+MOD13_02236F10: ; 0x02236F10
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, _02236F54 ; =0x02243168
+ ldr r1, _02236F58 ; =0x0001B160
+ str r0, [r2]
+ add r0, r0, r1
+ bl MOD13_0223831C
+ ldr r1, _02236F54 ; =0x02243168
+ mov r2, #0
+ ldr r0, [r1]
+ add r0, r0, #0x1b000
+ str r2, [r0, #0x140]
+ ldr r0, [r1]
+ add r0, r0, #0x1b000
+ str r2, [r0, #0x144]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02236F54: .word 0x02243168
+_02236F58: .word 0x0001B160
+
+ arm_func_start MOD13_02236F5C
+MOD13_02236F5C: ; 0x02236F5C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02236FB0 ; =0x02243188
+ ldr r0, [r0]
+ ldr r0, [r0, #0x40]
+ cmp r0, #1
+ beq _02236F7C
+ bl OS_Terminate
+_02236F7C:
+ mov r0, #3
+ bl MOD13_02238294
+ ldr r0, _02236FB4 ; =MOD13_0223794C
+ bl WM_End
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ mov r0, #9
+ bl MOD13_02238294
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02236FB0: .word 0x02243188
+_02236FB4: .word MOD13_0223794C
+
+ arm_func_start MOD13_02236FB8
+MOD13_02236FB8: ; 0x02236FB8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022370F8 ; =0x02243188
+ ldr r0, [r0]
+ ldr r2, [r0, #0x40]
+ cmp r2, #1
+ bne _02236FFC
+ ldr r0, _022370FC ; =0x02243184
+ ldr r2, [r0]
+ cmp r2, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r1, _02237100 ; =0x022407D0
+ mov r0, #0x8000000
+ blx r2
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02236FFC:
+ ldr r0, _022370FC ; =0x02243184
+ ldr r3, [r0]
+ cmp r3, #0
+ beq _02237018
+ ldr r1, _02237104 ; =0x022407F4
+ mov r0, #0x8000000
+ blx r3
+_02237018:
+ ldr r0, _022370F8 ; =0x02243188
+ ldr r0, [r0]
+ ldr r0, [r0, #0x40]
+ cmp r0, #6
+ beq _02237050
+ cmp r0, #5
+ beq _02237050
+ cmp r0, #4
+ beq _02237050
+ mov r0, #3
+ bl MOD13_02238294
+ bl MOD13_02237108
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02237050:
+ mov r0, #3
+ bl MOD13_02238294
+ ldr r0, _022370F8 ; =0x02243188
+ ldr r0, [r0]
+ ldr r0, [r0, #0x44]
+ cmp r0, #5
+ addls pc, pc, r0, lsl #2
+ b _022370F0
+_02237070: ; jump table
+ b _022370DC ; case 0
+ b _022370A4 ; case 1
+ b _022370C0 ; case 2
+ b _02237088 ; case 3
+ b _022370DC ; case 4
+ b _022370A4 ; case 5
+_02237088:
+ bl MOD13_02237AE4
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02237108
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022370A4:
+ bl MOD13_02237AA8
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02237108
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022370C0:
+ bl MOD13_02237C48
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02237108
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022370DC:
+ bl MOD13_02237C0C
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02237108
+_022370F0:
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022370F8: .word 0x02243188
+_022370FC: .word 0x02243184
+_02237100: .word 0x022407D0
+_02237104: .word 0x022407F4
+
+ arm_func_start MOD13_02237108
+MOD13_02237108: ; 0x02237108
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_022379B4
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #0xa
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_02237130
+MOD13_02237130: ; 0x02237130
+ stmdb sp!, {r4, lr}
+ ldr r1, _022371CC ; =0x02243188
+ ldr r2, _022371D0 ; =0x000013E0
+ ldr r3, [r1]
+ mov r1, r0
+ add r0, r3, r2
+ add r2, r3, #0x1c00
+ bl WM_StepDataSharing
+ mov r4, r0
+ cmp r4, #7
+ bne _02237180
+ ldr r0, _022371D4 ; =0x02243184
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _02237178
+ ldr r1, _022371D8 ; =0x02240818
+ mov r0, #0x8000000
+ blx r2
+_02237178:
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_02237180:
+ cmp r4, #5
+ bne _022371B4
+ ldr r0, _022371D4 ; =0x02243184
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _022371A4
+ ldr r1, _022371DC ; =0x02240848
+ mov r0, #0x8000000
+ blx r2
+_022371A4:
+ mov r0, r4
+ bl MOD13_02238274
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+_022371B4:
+ cmp r4, #0
+ moveq r0, #1
+ ldmeqia sp!, {r4, pc}
+ bl MOD13_02238274
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022371CC: .word 0x02243188
+_022371D0: .word 0x000013E0
+_022371D4: .word 0x02243184
+_022371D8: .word 0x02240818
+_022371DC: .word 0x02240848
+
+ arm_func_start MOD13_022371E0
+MOD13_022371E0: ; 0x022371E0
+ ldr r2, _02237200 ; =0x02243188
+ ldr r1, _02237204 ; =0x000013E0
+ ldr r3, [r2]
+ ldr ip, _02237208 ; =0x020DA048
+ mov r2, r0
+ add r0, r3, r1
+ add r1, r3, #0x1c00
+ bx ip
+ .align 2, 0
+_02237200: .word 0x02243188
+_02237204: .word 0x000013E0
+_02237208: .word 0x020DA048
+
+ arm_func_start MOD13_0223720C
+MOD13_0223720C: ; 0x0223720C
+ ldr r1, _0223721C ; =0x02243188
+ ldr r1, [r1]
+ str r0, [r1, #0x4c]
+ bx lr
+ .align 2, 0
+_0223721C: .word 0x02243188
+
+ arm_func_start MOD13_02237220
+MOD13_02237220: ; 0x02237220
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r3, _02237398 ; =0x02243188
+ mov r6, r0
+ ldr r0, [r3]
+ mov r5, r1
+ ldr r0, [r0, #0x40]
+ mov r4, r2
+ cmp r0, #1
+ beq _02237248
+ bl OS_Terminate
+_02237248:
+ ldr r2, _02237398 ; =0x02243188
+ mov r1, #0x180
+ ldr r0, [r2]
+ mov r3, #0xe0
+ add r0, r0, #0x1000
+ str r1, [r0, #0x2a4]
+ ldr r0, [r2]
+ ldr r1, _0223739C ; =0x02243184
+ add r0, r0, #0x1000
+ str r3, [r0, #0x2a0]
+ ldr r3, [r1]
+ cmp r3, #0
+ beq _02237294
+ ldr r0, [r2]
+ ldr r1, _022373A0 ; =0x0224087C
+ add r0, r0, #0x1000
+ ldr r2, [r0, #0x2a4]
+ mov r0, #0x8000000
+ blx r3
+_02237294:
+ ldr r0, _0223739C ; =0x02243184
+ ldr r3, [r0]
+ cmp r3, #0
+ beq _022372C0
+ ldr r0, _02237398 ; =0x02243188
+ ldr r1, _022373A4 ; =0x02240894
+ ldr r2, [r0]
+ mov r0, #0x8000000
+ add r2, r2, #0x1000
+ ldr r2, [r2, #0x2a0]
+ blx r3
+_022372C0:
+ ldr r1, _02237398 ; =0x02243188
+ mov r0, #3
+ ldr r1, [r1]
+ str r6, [r1, #0x44]
+ bl MOD13_02238294
+ ldr r0, _02237398 ; =0x02243188
+ ldr r1, [r0]
+ strh r5, [r1, #0xc]
+ ldr r0, [r0]
+ strh r4, [r0, #0x32]
+ bl WM_GetDispersionBeaconPeriod
+ ldr r1, _02237398 ; =0x02243188
+ mov r2, #0xd0
+ ldr r3, [r1]
+ mov r4, #0x44
+ strh r0, [r3, #0x18]
+ ldr r0, [r1]
+ mov r3, #2
+ strh r2, [r0, #0x34]
+ ldr r0, [r1]
+ mov r2, #0
+ strh r4, [r0, #0x36]
+ ldr r0, [r1]
+ mov r4, #1
+ strh r3, [r0, #0x10]
+ ldr r0, [r1]
+ cmp r6, #2
+ strh r2, [r0, #0x16]
+ ldr r0, [r1]
+ strh r2, [r0, #0x12]
+ ldr r0, [r1]
+ strh r4, [r0, #0xe]
+ ldr r0, _02237398 ; =0x02243188
+ movne r4, r2
+ ldr r0, [r0]
+ cmp r6, #0
+ strh r4, [r0, #0x14]
+ beq _02237368
+ cmp r6, #2
+ beq _02237368
+ cmp r6, #4
+ bne _02237370
+_02237368:
+ bl MOD13_02238224
+ ldmia sp!, {r4, r5, r6, pc}
+_02237370:
+ ldr r0, _0223739C ; =0x02243184
+ ldr r3, [r0]
+ cmp r3, #0
+ beq _02237390
+ ldr r1, _022373A8 ; =0x022408AC
+ mov r2, r6
+ mov r0, #0x8000000
+ blx r3
+_02237390:
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_02237398: .word 0x02243188
+_0223739C: .word 0x02243184
+_022373A0: .word 0x0224087C
+_022373A4: .word 0x02240894
+_022373A8: .word 0x022408AC
+
+ arm_func_start MOD13_022373AC
+MOD13_022373AC: ; 0x022373AC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldrh r0, [r0, #2]
+ cmp r0, #0
+ beq _022373D4
+ bl MOD13_02238274
+ mov r0, #0xa
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022373D4:
+ ldr r0, _02237408 ; =MOD13_02237464
+ bl WM_SetIndCallback
+ cmp r0, #0
+ beq _022373F8
+ bl MOD13_02238274
+ mov r0, #0xa
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022373F8:
+ mov r0, #1
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02237408: .word MOD13_02237464
+
+ arm_func_start MOD13_0223740C
+MOD13_0223740C: ; 0x0223740C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #3
+ bl MOD13_02238294
+ ldr r0, _0223745C ; =0x02243188
+ ldr r1, _02237460 ; =MOD13_022373AC
+ ldr r0, [r0]
+ mov r2, #2
+ add r0, r0, #0x80
+ bl WM_Initialize
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD13_02238274
+ mov r0, #0xa
+ bl MOD13_02238294
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223745C: .word 0x02243188
+_02237460: .word MOD13_022373AC
+
+ arm_func_start MOD13_02237464
+MOD13_02237464: ; 0x02237464
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldrh r0, [r0, #2]
+ cmp r0, #8
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_02238294
+ bl OS_Terminate
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_02237490
+MOD13_02237490: ; 0x02237490
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, _0223750C ; =0x02243188
+ mov r0, #0
+ ldr r1, [r2]
+ mov r3, #1
+ add r1, r1, #0x1000
+ str r0, [r1, #0x2a4]
+ ldr r1, [r2]
+ add r1, r1, #0x1000
+ str r0, [r1, #0x2a0]
+ ldr r1, [r2]
+ str r0, [r1, #0x48]
+ ldr r1, [r2]
+ strh r0, [r1, #0x50]
+ ldr r1, [r2]
+ strh r3, [r1, #0x52]
+ ldr r1, [r2]
+ str r0, [r1, #0x54]
+ ldr r1, [r2]
+ str r0, [r1]
+ ldr r1, [r2]
+ strh r0, [r1, #4]
+ ldr r1, [r2]
+ str r0, [r1, #0x4c]
+ bl MOD13_0223740C
+ cmp r0, #0
+ movne r0, #1
+ moveq r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223750C: .word 0x02243188
+
+ arm_func_start MOD13_02237510
+MOD13_02237510: ; 0x02237510
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, #0
+ mov r2, r4
+ mov r5, r4
+ mov r3, #1
+_02237528:
+ mov r1, r3, lsl r5
+ ands r1, r0, r1
+ beq _0223754C
+ add r1, r5, #1
+ add r2, r2, #1
+ mov r1, r1, lsl #0x10
+ mov r2, r2, lsl #0x10
+ mov r4, r1, asr #0x10
+ mov r2, r2, lsr #0x10
+_0223754C:
+ add r1, r5, #1
+ mov r1, r1, lsl #0x10
+ mov r5, r1, asr #0x10
+ cmp r5, #0x10
+ blt _02237528
+ cmp r2, #1
+ addls sp, sp, #4
+ movls r0, r4
+ ldmlsia sp!, {r4, r5, pc}
+ ldr lr, _022375FC ; =0x02243188
+ ldr r3, _02237600 ; =0x00010DCD
+ ldr r5, [lr]
+ ldr ip, _02237604 ; =0x00003039
+ ldr r4, [r5, #0x58]
+ mov r1, #0
+ mla r3, r4, r3, ip
+ str r3, [r5, #0x58]
+ ldr r3, [lr]
+ ldr r3, [r3, #0x58]
+ and r3, r3, #0xff
+ mul r3, r2, r3
+ mov r2, r3, lsl #8
+ mov r3, r2, lsr #0x10
+_022375A8:
+ ands r2, r0, #1
+ beq _022375D4
+ cmp r3, #0
+ addeq r0, r1, #1
+ moveq r0, r0, lsl #0x10
+ addeq sp, sp, #4
+ moveq r0, r0, asr #0x10
+ ldmeqia sp!, {r4, r5, pc}
+ sub r2, r3, #1
+ mov r2, r2, lsl #0x10
+ mov r3, r2, lsr #0x10
+_022375D4:
+ add r1, r1, #1
+ mov r1, r1, lsl #0x10
+ mov r0, r0, lsl #0xf
+ mov r1, r1, asr #0x10
+ cmp r1, #0x10
+ mov r0, r0, lsr #0x10
+ blt _022375A8
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_022375FC: .word 0x02243188
+_02237600: .word 0x00010DCD
+_02237604: .word 0x00003039
+
+ arm_func_start MOD13_02237608
+MOD13_02237608: ; 0x02237608
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02237684 ; =0x02243188
+ ldr r0, [r0]
+ ldr r0, [r0, #0x40]
+ cmp r0, #7
+ beq _02237628
+ bl OS_Terminate
+_02237628:
+ mov r0, #1
+ bl MOD13_02238294
+ ldr r0, _02237684 ; =0x02243188
+ ldr r0, [r0]
+ ldrh r0, [r0, #0x60]
+ bl MOD13_02237510
+ ldr r2, _02237684 ; =0x02243188
+ ldr r1, _02237688 ; =0x02243184
+ ldr r3, [r2]
+ strh r0, [r3, #0x5c]
+ ldr r3, [r1]
+ cmp r3, #0
+ beq _02237670
+ ldr r0, [r2]
+ ldr r1, _0223768C ; =0x022408C8
+ ldrh r2, [r0, #0x5c]
+ mov r0, #0x8000000
+ blx r3
+_02237670:
+ ldr r0, _02237684 ; =0x02243188
+ ldr r0, [r0]
+ ldrh r0, [r0, #0x5c]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02237684: .word 0x02243188
+_02237688: .word 0x02243184
+_0223768C: .word 0x022408C8
+
+ arm_func_start MOD13_02237690
+MOD13_02237690: ; 0x02237690
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r3, r1
+ mov ip, #0x1e
+ mov r1, #3
+ mov r2, #0x11
+ str ip, [sp]
+ bl WM_MeasureChannel
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldrh r0, [r4, #2]
+ cmp r0, #0
+ beq _022376DC
+ bl MOD13_02238274
+ mov r0, #9
+ bl MOD13_02238294
+ ldmia sp!, {r4, pc}
+_022376DC:
+ ldr r0, _02237788 ; =0x02243184
+ ldr ip, [r0]
+ cmp ip, #0
+ beq _02237700
+ ldrh r2, [r4, #8]
+ ldrh r3, [r4, #0xa]
+ ldr r1, _0223778C ; =0x022408E0
+ mov r0, #0x8000000
+ blx ip
+_02237700:
+ ldr r0, _02237790 ; =0x02243188
+ ldrh r2, [r4, #0xa]
+ ldr r3, [r0]
+ ldrh ip, [r4, #8]
+ ldrh r1, [r3, #0x5e]
+ cmp r1, r2
+ bls _02237738
+ strh r2, [r3, #0x5e]
+ sub r1, ip, #1
+ mov r2, #1
+ mov r1, r2, lsl r1
+ ldr r0, [r0]
+ strh r1, [r0, #0x60]
+ b _02237750
+_02237738:
+ cmp r1, r2
+ ldreqh r2, [r3, #0x60]
+ subeq r0, ip, #1
+ moveq r1, #1
+ orreq r0, r2, r1, lsl r0
+ streqh r0, [r3, #0x60]
+_02237750:
+ add r0, ip, #1
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ bl MOD13_02237794
+ cmp r0, #0x18
+ bne _02237774
+ mov r0, #7
+ bl MOD13_02238294
+ ldmia sp!, {r4, pc}
+_02237774:
+ cmp r0, #2
+ ldmeqia sp!, {r4, pc}
+ mov r0, #9
+ bl MOD13_02238294
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02237788: .word 0x02243184
+_0223778C: .word 0x022408E0
+_02237790: .word 0x02243188
+
+ arm_func_start MOD13_02237794
+MOD13_02237794: ; 0x02237794
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl WM_GetAllowedChannel
+ cmp r0, #0x8000
+ bne _022377C0
+ mov r0, #3
+ bl MOD13_02238274
+ mov r0, #9
+ bl MOD13_02238294
+ mov r0, #3
+ ldmia sp!, {r4, pc}
+_022377C0:
+ cmp r0, #0
+ bne _022377E0
+ mov r0, #0x16
+ bl MOD13_02238274
+ mov r0, #9
+ bl MOD13_02238294
+ mov r0, #0x18
+ ldmia sp!, {r4, pc}
+_022377E0:
+ sub r1, r4, #1
+ mov r2, #1
+ mov r1, r2, lsl r1
+ ands r1, r1, r0
+ bne _0223781C
+_022377F4:
+ add r1, r4, #1
+ mov r1, r1, lsl #0x10
+ mov r4, r1, lsr #0x10
+ cmp r4, #0x10
+ movhi r0, #0x18
+ ldmhiia sp!, {r4, pc}
+ sub r1, r4, #1
+ mov r1, r2, lsl r1
+ ands r1, r1, r0
+ beq _022377F4
+_0223781C:
+ ldr r0, _02237834 ; =0x022376B8
+ mov r1, r4
+ bl MOD13_02237690
+ mov r0, r0, lsl #0x10
+ mov r0, r0, lsr #0x10
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02237834: .word 0x022376B8
+
+ arm_func_start MOD13_02237838
+MOD13_02237838: ; 0x02237838
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ add r0, sp, #0
+ bl OS_GetMacAddress
+ ldr r1, _02237900 ; =0x027FFC3C
+ ldrh r0, [sp]
+ ldr r3, [r1]
+ ldrh r1, [sp, #2]
+ add r0, r0, r3
+ ldr r2, _02237904 ; =0x02243188
+ add r1, r1, r0
+ ldrh r3, [sp, #4]
+ ldr r0, [r2]
+ mov ip, #0
+ add r1, r3, r1
+ str r1, [r0, #0x58]
+ ldr lr, [r2]
+ ldr r0, _02237908 ; =0x00010DCD
+ ldr r3, [lr, #0x58]
+ ldr r1, _0223790C ; =0x00003039
+ mla r0, r3, r0, r1
+ str r0, [lr, #0x58]
+ ldr r0, [r2]
+ mov r3, #0x65
+ strh ip, [r0, #0x5c]
+ ldr r1, [r2]
+ mov r0, #3
+ strh r3, [r1, #0x5e]
+ bl MOD13_02238294
+ mov r0, #1
+ bl MOD13_02237794
+ cmp r0, #0x18
+ bne _022378D8
+ mov r0, #0x18
+ bl MOD13_02238274
+ mov r0, #9
+ bl MOD13_02238294
+ add sp, sp, #0xc
+ mov r0, #0
+ ldmia sp!, {pc}
+_022378D8:
+ cmp r0, #2
+ addeq sp, sp, #0xc
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD13_02238274
+ mov r0, #9
+ bl MOD13_02238294
+ mov r0, #0
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_02237900: .word 0x027FFC3C
+_02237904: .word 0x02243188
+_02237908: .word 0x00010DCD
+_0223790C: .word 0x00003039
+
+ arm_func_start MOD13_02237910
+MOD13_02237910: ; 0x02237910
+ ldr r0, _02237920 ; =0x02243188
+ ldr r0, [r0]
+ ldr r0, [r0, #0x40]
+ bx lr
+ .align 2, 0
+_02237920: .word 0x02243188
+
+ arm_func_start MOD13_02237924
+MOD13_02237924: ; 0x02237924
+ ldr r0, _02237934 ; =0x02243188
+ ldr r0, [r0]
+ ldrh r0, [r0, #0x52]
+ bx lr
+ .align 2, 0
+_02237934: .word 0x02243188
+
+ arm_func_start MOD13_02237938
+MOD13_02237938: ; 0x02237938
+ ldr r1, _02237948 ; =0x02243188
+ ldr r1, [r1]
+ str r0, [r1, #8]
+ bx lr
+ .align 2, 0
+_02237948: .word 0x02243188
+
+ arm_func_start MOD13_0223794C
+MOD13_0223794C: ; 0x0223794C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldrh r0, [r0, #2]
+ cmp r0, #0
+ beq _02237970
+ mov r0, #0xa
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02237970:
+ mov r0, #0
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldrh r0, [r4, #2]
+ cmp r0, #0
+ beq _022379A8
+ mov r0, #9
+ bl MOD13_02238294
+ ldrh r0, [r4, #2]
+ bl MOD13_02238274
+ ldmia sp!, {r4, pc}
+_022379A8:
+ mov r0, #1
+ bl MOD13_02238294
+ ldmia sp!, {r4, pc}
+
+ arm_func_start MOD13_022379B4
+MOD13_022379B4: ; 0x022379B4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #3
+ bl MOD13_02238294
+ ldr r0, _022379EC ; =0x02237980
+ bl WM_Reset
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD13_02238274
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022379EC: .word 0x02237980
+
+ arm_func_start MOD13_022379F0
+MOD13_022379F0: ; 0x022379F0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldrh r0, [r0, #2]
+ cmp r0, #0
+ beq _02237A10
+ bl MOD13_02238274
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02237A10:
+ mov r0, #1
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_02237A20
+MOD13_02237A20: ; 0x02237A20
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #3
+ bl MOD13_02238294
+ ldr r0, _02237A60 ; =MOD13_022379F0
+ mov r1, #0
+ bl WM_Disconnect
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD13_02238274
+ bl MOD13_02237108
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02237A60: .word MOD13_022379F0
+
+ arm_func_start MOD13_02237A64
+MOD13_02237A64: ; 0x02237A64
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldrh r0, [r0, #2]
+ cmp r0, #0
+ beq _02237A88
+ bl MOD13_02238274
+ bl MOD13_02236FB8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02237A88:
+ bl MOD13_02237A20
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_02237AA8
+MOD13_02237AA8: ; 0x02237AA8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #3
+ bl MOD13_02238294
+ ldr r0, _02237AE0 ; =MOD13_02237A64
+ bl WM_EndMP
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD13_02238274
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02237AE0: .word MOD13_02237A64
+
+ arm_func_start MOD13_02237AE4
+MOD13_02237AE4: ; 0x02237AE4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02237B40 ; =0x02243188
+ ldr r0, [r0]
+ ldr r0, [r0, #0x40]
+ cmp r0, #6
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {pc}
+ mov r0, #3
+ bl MOD13_02238294
+ ldr r0, _02237B40 ; =0x02243188
+ ldr r0, [r0]
+ add r0, r0, #0x1e00
+ bl WM_EndKeySharing
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD13_02238274
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02237B40: .word 0x02243188
+
+ arm_func_start MOD13_02237B44
+MOD13_02237B44: ; 0x02237B44
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldrh r0, [r0, #2]
+ cmp r0, #0
+ beq _02237B64
+ bl MOD13_02238274
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02237B64:
+ mov r0, #1
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_02237B74
+MOD13_02237B74: ; 0x02237B74
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02237BA4 ; =MOD13_02237B44
+ bl WM_EndParent
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD13_02238274
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02237BA4: .word MOD13_02237B44
+
+ arm_func_start MOD13_02237BA8
+MOD13_02237BA8: ; 0x02237BA8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldrh r0, [r0, #2]
+ cmp r0, #0
+ beq _02237BCC
+ bl MOD13_02238274
+ bl MOD13_02237108
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02237BCC:
+ bl MOD13_02237B74
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02237C04 ; =0x02243184
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _02237BF8
+ ldr r1, _02237C08 ; =0x02240918
+ mov r0, #0x8000000
+ blx r2
+_02237BF8:
+ bl MOD13_02237108
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02237C04: .word 0x02243184
+_02237C08: .word 0x02240918
+
+ arm_func_start MOD13_02237C0C
+MOD13_02237C0C: ; 0x02237C0C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #3
+ bl MOD13_02238294
+ ldr r0, _02237C44 ; =MOD13_02237BA8
+ bl WM_EndMP
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD13_02238274
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02237C44: .word MOD13_02237BA8
+
+ arm_func_start MOD13_02237C48
+MOD13_02237C48: ; 0x02237C48
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02237C80 ; =0x02243188
+ ldr r0, [r0]
+ add r0, r0, #0x1e00
+ bl WM_EndKeySharing
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD13_02238274
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02237C80: .word 0x02243188
+
+ arm_func_start MOD13_02237C84
+MOD13_02237C84: ; 0x02237C84
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #6
+ bl MOD13_02238294
+ ldr r0, _02237CC8 ; =0x02243188
+ mov r1, #0xd
+ ldr r0, [r0]
+ add r0, r0, #0x1e00
+ bl WM_StartKeySharing
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD13_02238274
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02237CC8: .word 0x02243188
+
+ arm_func_start MOD13_02237CCC
+MOD13_02237CCC: ; 0x02237CCC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldrh r1, [r0, #2]
+ cmp r1, #0
+ beq _02237CF8
+ mov r0, r1
+ bl MOD13_02238274
+ mov r0, #9
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02237CF8:
+ ldrh r2, [r0, #4]
+ sub r0, r2, #0xa
+ cmp r0, #3
+ addls pc, pc, r0, lsl #2
+ b _02237DEC
+_02237D0C: ; jump table
+ b _02237D1C ; case 0
+ b _02237E0C ; case 1
+ b _02237DEC ; case 2
+ b _02237DEC ; case 3
+_02237D1C:
+ ldr r0, _02237E14 ; =0x02243188
+ ldr r1, [r0]
+ ldr r0, [r1, #0x44]
+ cmp r0, #2
+ bne _02237D88
+ ldr r0, [r1, #0x40]
+ cmp r0, #4
+ bne _02237D78
+ bl MOD13_02237C84
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _02237E18 ; =0x02243184
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _02237D68
+ ldr r1, _02237E1C ; =0x02240940
+ mov r0, #0x8000000
+ blx r2
+_02237D68:
+ mov r0, #9
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02237D78:
+ cmp r0, #6
+ bne _02237DDC
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02237D88:
+ cmp r0, #4
+ bne _02237DDC
+ ldr r0, _02237E20 ; =0x000013E0
+ mov ip, #1
+ add r0, r1, r0
+ mov r1, #0xd
+ mov r2, #7
+ mov r3, #0x44
+ str ip, [sp]
+ bl WM_StartDataSharing
+ cmp r0, #0
+ beq _02237DCC
+ bl MOD13_02238274
+ mov r0, #9
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02237DCC:
+ mov r0, #5
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02237DDC:
+ mov r0, #4
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02237DEC:
+ ldr r0, _02237E18 ; =0x02243184
+ ldr r3, [r0]
+ cmp r3, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r1, _02237E24 ; =0x022408F8
+ mov r0, #0x8000000
+ blx r3
+_02237E0C:
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02237E14: .word 0x02243188
+_02237E18: .word 0x02243184
+_02237E1C: .word 0x02240940
+_02237E20: .word 0x000013E0
+_02237E24: .word 0x022408F8
+
+ arm_func_start MOD13_02237E28
+MOD13_02237E28: ; 0x02237E28
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr r0, _02237EBC ; =0x02243188
+ ldr r0, [r0]
+ ldr r0, [r0, #0x40]
+ sub r0, r0, #4
+ cmp r0, #2
+ addls sp, sp, #0xc
+ movls r0, #1
+ ldmlsia sp!, {pc}
+ mov r0, #4
+ bl MOD13_02238294
+ ldr r0, _02237EBC ; =0x02243188
+ mov ip, #1
+ ldr lr, [r0]
+ ldr r2, _02237EC0 ; =0x00001060
+ add r3, lr, #0x1000
+ ldr r1, [r3, #0x2a0]
+ ldr r0, _02237EC4 ; =MOD13_02237CCC
+ mov r1, r1, lsl #0x10
+ mov r1, r1, lsr #0x10
+ str r1, [sp]
+ str ip, [sp, #4]
+ ldr r3, [r3, #0x2a4]
+ add r1, lr, r2
+ mov r2, r3, lsl #0x10
+ mov r2, r2, lsr #0x10
+ add r3, lr, #0xf80
+ bl WM_StartMP
+ cmp r0, #2
+ addeq sp, sp, #0xc
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD13_02238274
+ mov r0, #0
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_02237EBC: .word 0x02243188
+_02237EC0: .word 0x00001060
+_02237EC4: .word MOD13_02237CCC
+
+ arm_func_start MOD13_02237EC8
+MOD13_02237EC8: ; 0x02237EC8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ ldrh r2, [r5, #0x10]
+ mov r1, #1
+ ldrh r0, [r5, #2]
+ mov r1, r1, lsl r2
+ mov r1, r1, lsl #0x10
+ cmp r0, #0
+ mov r4, r1, lsr #0x10
+ beq _02237F08
+ bl MOD13_02238274
+ mov r0, #9
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02237F08:
+ ldrh ip, [r5, #8]
+ cmp ip, #7
+ bgt _02237F44
+ cmp ip, #7
+ bge _02237F50
+ cmp ip, #2
+ bgt _02238034
+ cmp ip, #0
+ blt _02238034
+ cmp ip, #0
+ beq _02238014
+ cmp ip, #2
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ b _02238034
+_02237F44:
+ cmp ip, #9
+ beq _02237FD8
+ b _02238034
+_02237F50:
+ ldr r0, _02238060 ; =0x02243184
+ ldr r3, [r0]
+ cmp r3, #0
+ beq _02237F6C
+ ldr r1, _02238064 ; =0x02240970
+ mov r0, #0x8000000
+ blx r3
+_02237F6C:
+ ldr r0, _02238068 ; =0x02243188
+ ldr r0, [r0]
+ ldr r1, [r0, #0x4c]
+ cmp r1, #0
+ beq _02237FBC
+ mov r0, r5
+ blx r1
+ cmp r0, #0
+ bne _02237FBC
+ ldrh r1, [r5, #0x10]
+ mov r0, #0
+ bl WM_Disconnect
+ cmp r0, #2
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ bl MOD13_02238274
+ mov r0, #9
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02237FBC:
+ ldr r0, _02238068 ; =0x02243188
+ add sp, sp, #4
+ ldr r1, [r0]
+ ldrh r0, [r1, #0x52]
+ orr r0, r0, r4
+ strh r0, [r1, #0x52]
+ ldmia sp!, {r4, r5, pc}
+_02237FD8:
+ ldr r0, _02238060 ; =0x02243184
+ ldr r3, [r0]
+ cmp r3, #0
+ beq _02237FF4
+ ldr r1, _0223806C ; =0x0224099C
+ mov r0, #0x8000000
+ blx r3
+_02237FF4:
+ ldr r0, _02238068 ; =0x02243188
+ mvn r1, r4
+ ldr r2, [r0]
+ add sp, sp, #4
+ ldrh r0, [r2, #0x52]
+ and r0, r0, r1
+ strh r0, [r2, #0x52]
+ ldmia sp!, {r4, r5, pc}
+_02238014:
+ bl MOD13_02237E28
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, pc}
+ mov r0, #9
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+_02238034:
+ ldr r0, _02238060 ; =0x02243184
+ ldr r3, [r0]
+ cmp r3, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r1, _02238070 ; =0x022408F8
+ mov r2, ip
+ mov r0, #0x8000000
+ blx r3
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02238060: .word 0x02243184
+_02238064: .word 0x02240970
+_02238068: .word 0x02243188
+_0223806C: .word 0x0224099C
+_02238070: .word 0x022408F8
+
+ arm_func_start MOD13_02238074
+MOD13_02238074: ; 0x02238074
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _022380E0 ; =0x02243188
+ ldr r0, [r0]
+ ldr r0, [r0, #0x40]
+ sub r0, r0, #4
+ cmp r0, #2
+ addls sp, sp, #4
+ movls r0, #1
+ ldmlsia sp!, {pc}
+ ldr r0, _022380E4 ; =MOD13_02237EC8
+ bl WM_StartParent
+ cmp r0, #2
+ beq _022380BC
+ bl MOD13_02238274
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {pc}
+_022380BC:
+ ldr r1, _022380E0 ; =0x02243188
+ mov r3, #0
+ ldr r2, [r1]
+ mov r0, #1
+ strh r3, [r2, #0x50]
+ ldr r1, [r1]
+ strh r0, [r1, #0x52]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022380E0: .word 0x02243188
+_022380E4: .word MOD13_02237EC8
+
+ arm_func_start MOD13_022380E8
+MOD13_022380E8: ; 0x022380E8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldrh r0, [r0, #2]
+ cmp r0, #0
+ beq _02238110
+ bl MOD13_02238274
+ mov r0, #9
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238110:
+ bl MOD13_02238074
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_02238130
+MOD13_02238130: ; 0x02238130
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #3
+ bl MOD13_02238294
+ ldr r0, _02238198 ; =0x02243188
+ ldr r1, [r0]
+ add r0, r1, #0x1000
+ ldr r2, [r0, #0x3ac]
+ add r0, r1, #0x13c0
+ blx r2
+ ldr r2, _02238198 ; =0x02243188
+ mov r1, r0
+ ldr r2, [r2]
+ ldr r0, _0223819C ; =MOD13_022380E8
+ add r2, r2, #0x13c0
+ bl WM_SetWEPKeyEx2
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD13_02238274
+ mov r0, #9
+ bl MOD13_02238294
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02238198: .word 0x02243188
+_0223819C: .word MOD13_022380E8
+
+ arm_func_start MOD13_022381A0
+MOD13_022381A0: ; 0x022381A0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldrh r0, [r0, #2]
+ cmp r0, #0
+ beq _022381C8
+ bl MOD13_02238274
+ mov r0, #9
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022381C8:
+ ldr r0, _02238220 ; =0x02243188
+ ldr r0, [r0]
+ add r0, r0, #0x1000
+ ldr r0, [r0, #0x3ac]
+ cmp r0, #0
+ beq _02238200
+ bl MOD13_02238130
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238200:
+ bl MOD13_02238074
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #9
+ bl MOD13_02238294
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02238220: .word 0x02243188
+
+ arm_func_start MOD13_02238224
+MOD13_02238224: ; 0x02238224
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #3
+ bl MOD13_02238294
+ ldr r1, _0223826C ; =0x02243188
+ ldr r0, _02238270 ; =MOD13_022381A0
+ ldr r1, [r1]
+ bl WM_SetParentParameter
+ cmp r0, #2
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ bl MOD13_02238274
+ mov r0, #9
+ bl MOD13_02238294
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223826C: .word 0x02243188
+_02238270: .word MOD13_022381A0
+
+ arm_func_start MOD13_02238274
+MOD13_02238274: ; 0x02238274
+ ldr r1, _02238290 ; =0x02243188
+ ldr r2, [r1]
+ ldr r1, [r2, #0x40]
+ sub r1, r1, #9
+ cmp r1, #1
+ strhi r0, [r2, #0x54]
+ bx lr
+ .align 2, 0
+_02238290: .word 0x02243188
+
+ arm_func_start MOD13_02238294
+MOD13_02238294: ; 0x02238294
+ stmdb sp!, {r4, lr}
+ ldr r1, _02238308 ; =0x02243184
+ mov r4, r0
+ ldr ip, [r1]
+ cmp ip, #0
+ beq _022382CC
+ ldr r0, _0223830C ; =0x02243188
+ ldr r2, _02238310 ; =0x022407A8
+ ldr r0, [r0]
+ ldr r1, _02238314 ; =0x022409C8
+ ldr r3, [r0, #0x40]
+ mov r0, #0x8000000
+ ldr r2, [r2, r3, lsl #2]
+ blx ip
+_022382CC:
+ ldr r1, _0223830C ; =0x02243188
+ ldr r0, _02238308 ; =0x02243184
+ ldr r2, [r1]
+ str r4, [r2, #0x40]
+ ldr r3, [r0]
+ cmp r3, #0
+ ldmeqia sp!, {r4, pc}
+ ldr r1, [r1]
+ ldr r0, _02238310 ; =0x022407A8
+ ldr r2, [r1, #0x40]
+ ldr r1, _02238318 ; =0x022409D0
+ ldr r2, [r0, r2, lsl #2]
+ mov r0, #0x8000000
+ blx r3
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02238308: .word 0x02243184
+_0223830C: .word 0x02243188
+_02238310: .word 0x022407A8
+_02238314: .word 0x022409C8
+_02238318: .word 0x022409D0
+
+ arm_func_start MOD13_0223831C
+MOD13_0223831C: ; 0x0223831C
+ ldr r1, _02238354 ; =0x02243188
+ mov r2, #0
+ str r0, [r1]
+ str r2, [r0, #0x40]
+ ldr r0, [r1]
+ add r0, r0, #0x1000
+ str r2, [r0, #0x3a8]
+ ldr r0, [r1]
+ add r0, r0, #0x1000
+ str r2, [r0, #0x3ac]
+ ldr r0, [r1]
+ add r0, r0, #0x1000
+ str r2, [r0, #0x3b0]
+ bx lr
+ .align 2, 0
+_02238354: .word 0x02243188
+
+ arm_func_start MOD13_02238358
+MOD13_02238358: ; 0x02238358
+ ldr r0, _0223836C ; =0x0224318C
+ ldr r0, [r0]
+ add r0, r0, #0x100
+ ldrh r0, [r0, #0x44]
+ bx lr
+ .align 2, 0
+_0223836C: .word 0x0224318C
+
+ arm_func_start MOD13_02238370
+MOD13_02238370: ; 0x02238370
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov ip, #0
+ ldr r4, _0223845C ; =0x0224318C
+ mov r5, ip
+ mov r2, ip
+ mov r0, #1
+ mov r1, #0xbc
+ mov lr, #0x44
+_02238394:
+ ldr r3, [r4]
+ add r6, r3, ip, lsl #2
+ ldr r6, [r6, #0x208]
+ cmp r6, #0
+ beq _02238448
+ add r6, r3, #0x100
+ mla r7, ip, lr, r6
+ cmp ip, #1
+ bne _02238448
+ ldrb r6, [r3, #0xa93]
+ cmp r6, #1
+ bne _02238418
+ ldrh r6, [r7]
+ cmp r6, #0x10
+ addne sp, sp, #4
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r6, [r3, #0xa94]
+ add r6, r6, #1
+ str r6, [r3, #0xa94]
+ ldr r6, [r4]
+ ldr r3, [r6, #0xa94]
+ ands r3, r3, #1
+ bne _02238448
+ add r3, r6, #0x200
+ ldrh r6, [r3]
+ add r6, r6, #1
+ strh r6, [r3]
+ ldr r3, [r4]
+ add r3, r3, #0x200
+ ldrh r6, [r3]
+ cmp r6, #0x24
+ strhsh r2, [r3]
+ b _02238448
+_02238418:
+ add r3, r3, #0x200
+ strh r1, [r3, #2]
+ ldrh r3, [r7]
+ cmp r3, #0xbd
+ bne _02238448
+ ldr r3, [r4]
+ strb r0, [r3, #0xa93]
+ ldr r3, [r4]
+ add r3, r3, #0x200
+ strh r5, [r3]
+ ldr r3, [r4]
+ str r5, [r3, #0xa94]
+_02238448:
+ add ip, ip, #1
+ cmp ip, #0x10
+ blt _02238394
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223845C: .word 0x0224318C
+
+ arm_func_start MOD13_02238460
+MOD13_02238460: ; 0x02238460
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ ldr r3, _022385B8 ; =0x0224318C
+ ldr r5, [r3]
+ ldrb r4, [r5, #0xa93]
+ cmp r4, #1
+ bne _022384A8
+ ldr r4, [r5, #0xab0]
+ strh r0, [r4]
+ ldr r4, [r3]
+ mov r0, r2
+ ldr r4, [r4, #0xab0]
+ mov r2, #0x40
+ strh r1, [r4, #2]
+ ldr r1, [r3]
+ ldr r1, [r1, #0xab0]
+ add r1, r1, #4
+ bl MI_CpuCopy8
+ b _022384D4
+_022384A8:
+ ldr r0, [r5, #0x204]
+ mov r1, #0xbc
+ add r0, r0, #1
+ str r0, [r5, #0x204]
+ ldr r0, [r3]
+ ldr r0, [r0, #0xab0]
+ strh r1, [r0]
+ ldr r0, [r3]
+ ldrb r1, [r0, #0xa92]
+ ldr r0, [r0, #0xab0]
+ strb r1, [r0, #4]
+_022384D4:
+ bl MOD13_02237910
+ cmp r0, #5
+ ldmneia sp!, {r4, r5, r6, r7, r8, pc}
+ ldr r0, _022385B8 ; =0x0224318C
+ ldr r0, [r0]
+ bl MOD13_02237130
+ cmp r0, #0
+ bne _0223850C
+ ldr r0, _022385B8 ; =0x0224318C
+ ldr r1, [r0]
+ ldr r0, [r1, #0x204]
+ add r0, r0, #4
+ str r0, [r1, #0x204]
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_0223850C:
+ ldr r0, _022385B8 ; =0x0224318C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0xa93]
+ cmp r0, #0
+ ldreq r0, [r1, #0x204]
+ addeq r0, r0, #1
+ streq r0, [r1, #0x204]
+ beq _02238550
+ mov r0, #0
+ str r0, [r1, #0x204]
+ bl MOD13_02237924
+ cmp r0, #3
+ ldrne r0, _022385B8 ; =0x0224318C
+ movne r1, #0x1b
+ ldrne r0, [r0]
+ strneb r1, [r0, #0xa90]
+ ldmneia sp!, {r4, r5, r6, r7, r8, pc}
+_02238550:
+ mov r7, #0
+ ldr r8, _022385B8 ; =0x0224318C
+ mov r4, r7
+ mov r6, #0x44
+ mov r5, #1
+_02238564:
+ mov r0, r7
+ bl MOD13_022371E0
+ cmp r0, #0
+ ldreq r0, [r8]
+ addeq r0, r0, r7, lsl #2
+ streq r4, [r0, #0x208]
+ beq _022385A0
+ ldr r1, [r8]
+ mov r2, r6
+ add r1, r1, #0x100
+ mla r1, r7, r6, r1
+ bl MI_CpuCopy8
+ ldr r0, [r8]
+ add r0, r0, r7, lsl #2
+ str r5, [r0, #0x208]
+_022385A0:
+ add r0, r7, #1
+ mov r0, r0, lsl #0x10
+ mov r7, r0, lsr #0x10
+ cmp r7, #2
+ blo _02238564
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_022385B8: .word 0x0224318C
+
+ arm_func_start MOD13_022385BC
+MOD13_022385BC: ; 0x022385BC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02238604 ; =0x0224318C
+ mov r1, #0
+ ldr r0, [r0]
+ mov r2, #0x100
+ add r0, r0, #0x100
+ bl MI_CpuFill8
+ ldr r0, _02238604 ; =0x0224318C
+ mov r1, #0
+ ldr r0, [r0]
+ mov r2, #0x100
+ bl MI_CpuFill8
+ ldr r0, _02238604 ; =0x0224318C
+ ldr r0, [r0]
+ str r0, [r0, #0xab0]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02238604: .word 0x0224318C
+
+ arm_func_start MOD13_02238608
+MOD13_02238608: ; 0x02238608
+ stmdb sp!, {r4, lr}
+ add r0, r0, #0xa
+ bl MOD13_02236254
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ bl MOD13_02236314
+ ldr r1, _02238640 ; =0x0224318C
+ sub r2, r4, #1
+ ldr r1, [r1]
+ add r1, r1, r2, lsl #2
+ str r0, [r1, #0xaa0]
+ mov r0, #1
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02238640: .word 0x0224318C
+
+ arm_func_start MOD13_02238644
+MOD13_02238644: ; 0x02238644
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02237910
+ cmp r0, #1
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {pc}
+ bl MOD13_02236F5C
+ ldr r1, _0223867C ; =0x0224318C
+ mov r0, #1
+ ldr r1, [r1]
+ strb r0, [r1, #0xa90]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223867C: .word 0x0224318C
+
+ arm_func_start MOD13_02238680
+MOD13_02238680: ; 0x02238680
+ ldr r0, _02238694 ; =0x0224318C
+ mov r1, #0xc
+ ldr r0, [r0]
+ strb r1, [r0, #0xa90]
+ bx lr
+ .align 2, 0
+_02238694: .word 0x0224318C
+
+ arm_func_start MOD13_02238698
+MOD13_02238698: ; 0x02238698
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02237910
+ cmp r0, #6
+ addls pc, pc, r0, lsl #2
+ b _02238878
+_022386B0: ; jump table
+ b _02238878 ; case 0
+ b _022386CC ; case 1
+ b _02238878 ; case 2
+ b _02238878 ; case 3
+ b _022386FC ; case 4
+ b _022386FC ; case 5
+ b _022386FC ; case 6
+_022386CC:
+ ldr r1, _02238880 ; =0x0224318C
+ mov r0, #4
+ ldr r1, [r1]
+ add r1, r1, #0x600
+ ldrh r3, [r1, #0x48]
+ ldrh r2, [r1, #0x4a]
+ add r1, r3, #1
+ mov r1, r1, lsl #0x10
+ mov r1, r1, lsr #0x10
+ bl MOD13_02237220
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022386FC:
+ ldr r1, _02238880 ; =0x0224318C
+ mov r0, #0
+ ldr r2, [r1]
+ add r1, r2, #0x200
+ ldrh r1, [r1]
+ ldr ip, [r2, #0xaa4]
+ mov r3, r1, lsr #0x1f
+ rsb r2, r3, r1, lsl #28
+ add r2, r3, r2, ror #28
+ add r2, ip, r2, lsl #6
+ bl MOD13_02238460
+ bl MOD13_02238370
+ ldr r0, _02238880 ; =0x0224318C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0xa90]
+ cmp r0, #0x1b
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, [r1, #0x204]
+ cmp r0, #0x1e0
+ movhi r0, #0x1b
+ strhib r0, [r1, #0xa90]
+ addhi sp, sp, #4
+ ldmhiia sp!, {pc}
+ bl MOD13_02238358
+ cmp r0, #0x10
+ beq _02238774
+ bl MOD13_02238358
+ cmp r0, #0x20
+ bne _02238790
+_02238774:
+ bl MOD13_02238358
+ ldr r0, _02238880 ; =0x0224318C
+ mov r1, #0xa
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238790:
+ bl MOD13_02238358
+ cmp r0, #0x40
+ ldreq r0, _02238880 ; =0x0224318C
+ moveq r1, #0xb
+ ldreq r0, [r0]
+ addeq sp, sp, #4
+ streqb r1, [r0, #0xa90]
+ ldmeqia sp!, {pc}
+ bl MOD13_02238358
+ cmp r0, #0xff
+ ldreq r0, _02238880 ; =0x0224318C
+ moveq r1, #0x1b
+ ldreq r0, [r0]
+ addeq sp, sp, #4
+ streqb r1, [r0, #0xa90]
+ ldmeqia sp!, {pc}
+ bl MOD13_02238358
+ cmp r0, #0x50
+ ldreq r0, _02238880 ; =0x0224318C
+ moveq r1, #0x15
+ ldreq r0, [r0]
+ addeq sp, sp, #4
+ streqb r1, [r0, #0xa90]
+ ldmeqia sp!, {pc}
+ bl MOD13_02238358
+ cmp r0, #0x60
+ ldreq r0, _02238880 ; =0x0224318C
+ moveq r1, #0x18
+ ldreq r0, [r0]
+ addeq sp, sp, #4
+ streqb r1, [r0, #0xa90]
+ ldmeqia sp!, {pc}
+ bl MOD13_02238358
+ cmp r0, #0x70
+ ldreq r0, _02238880 ; =0x0224318C
+ moveq r1, #0x1b
+ ldreq r0, [r0]
+ addeq sp, sp, #4
+ streqb r1, [r0, #0xa90]
+ ldmeqia sp!, {pc}
+ bl MOD13_02238358
+ cmp r0, #0
+ ldreq r0, _02238880 ; =0x0224318C
+ moveq r1, #8
+ ldreq r0, [r0]
+ addeq sp, sp, #4
+ streqb r1, [r0, #0xa90]
+ ldmeqia sp!, {pc}
+ bl MOD13_02238358
+ cmp r0, #0xbd
+ ldreq r0, _02238880 ; =0x0224318C
+ moveq r1, #9
+ ldreq r0, [r0]
+ streqb r1, [r0, #0xa90]
+ ldrne r0, _02238880 ; =0x0224318C
+ movne r1, #0x1f
+ ldrne r0, [r0]
+ strneb r1, [r0, #0xa90]
+_02238878:
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02238880: .word 0x0224318C
+
+ arm_func_start MOD13_02238884
+MOD13_02238884: ; 0x02238884
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_022385BC
+ ldr r0, _022388B0 ; =MOD13_02238608
+ bl MOD13_0223720C
+ ldr r0, _022388B4 ; =0x0224318C
+ mov r1, #8
+ ldr r0, [r0]
+ strb r1, [r0, #0xa90]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_022388B0: .word MOD13_02238608
+_022388B4: .word 0x0224318C
+
+ arm_func_start MOD13_022388B8
+MOD13_022388B8: ; 0x022388B8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02236470
+ cmp r0, #7
+ addls pc, pc, r0, lsl #2
+ b _02238A94
+_022388D0: ; jump table
+ b _02238A3C ; case 0
+ b _022388F0 ; case 1
+ b _02238914 ; case 2
+ b _022389AC ; case 3
+ b _02238A94 ; case 4
+ b _02238A08 ; case 5
+ b _02238A94 ; case 6
+ b _02238A20 ; case 7
+_022388F0:
+ ldr r1, _02238A9C ; =0x0224318C
+ ldr r0, _02238AA0 ; =0x00000AB4
+ ldr r2, [r1]
+ add r1, r2, #0x600
+ ldrh r1, [r1, #0x4a]
+ add r0, r2, r0
+ bl MOD13_02236D9C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238914:
+ mov r0, #2
+ bl MOD13_02236414
+ cmp r0, #0
+ ldrne r0, _02238A9C ; =0x0224318C
+ movne r1, #5
+ ldrne r0, [r0]
+ addne sp, sp, #4
+ strneb r1, [r0, #0xa90]
+ ldmneia sp!, {pc}
+ mov r0, #3
+ bl MOD13_02236414
+ cmp r0, #0
+ bne _02238958
+ mov r0, #4
+ bl MOD13_02236414
+ cmp r0, #0
+ beq _02238970
+_02238958:
+ ldr r0, _02238A9C ; =0x0224318C
+ mov r1, #6
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238970:
+ ldr r0, _02238A9C ; =0x0224318C
+ ldr r0, [r0]
+ ldrb r0, [r0, #0xa90]
+ cmp r0, #5
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #2
+ bl MOD13_02236414
+ cmp r0, #0
+ ldreq r0, _02238A9C ; =0x0224318C
+ moveq r1, #0xd
+ ldreq r0, [r0]
+ add sp, sp, #4
+ streqb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_022389AC:
+ bl MOD13_022368FC
+ cmp r0, #0
+ beq _022389C4
+ bl MOD13_022367F4
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_022389C4:
+ ldr r0, _02238A9C ; =0x0224318C
+ ldr r0, [r0]
+ ldrb r0, [r0, #0xa90]
+ add r0, r0, #0xfa
+ and r0, r0, #0xff
+ cmp r0, #1
+ addhi sp, sp, #4
+ ldmhiia sp!, {pc}
+ mov r0, #3
+ bl MOD13_02236414
+ cmp r0, #0
+ ldreq r0, _02238A9C ; =0x0224318C
+ moveq r1, #0x12
+ ldreq r0, [r0]
+ add sp, sp, #4
+ streqb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238A08:
+ ldr r0, _02238A9C ; =0x0224318C
+ mov r1, #7
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238A20:
+ bl MOD13_022367D8
+ ldr r0, _02238A9C ; =0x0224318C
+ mov r1, #1
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238A3C:
+ bl MOD13_02237910
+ cmp r0, #0
+ beq _02238A6C
+ cmp r0, #1
+ beq _02238A60
+ cmp r0, #3
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ b _02238A84
+_02238A60:
+ bl MOD13_02236F5C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238A6C:
+ ldr r0, _02238A9C ; =0x0224318C
+ mov r1, #0x1f
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238A84:
+ ldr r0, _02238A9C ; =0x0224318C
+ mov r1, #0x1f
+ ldr r0, [r0]
+ strb r1, [r0, #0xa90]
+_02238A94:
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02238A9C: .word 0x0224318C
+_02238AA0: .word 0x00000AB4
+
+ arm_func_start MOD13_02238AA4
+MOD13_02238AA4: ; 0x02238AA4
+ ldr r0, _02238AC0 ; =0x0224318C
+ ldr ip, _02238AC4 ; =MOD13_02236DF4
+ ldr r2, [r0]
+ add r0, r2, #0x600
+ ldrh r1, [r0, #0x48]
+ ldr r0, [r2, #0xac8]
+ bx ip
+ .align 2, 0
+_02238AC0: .word 0x0224318C
+_02238AC4: .word MOD13_02236DF4
+
+ arm_func_start MOD13_02238AC8
+MOD13_02238AC8: ; 0x02238AC8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_02237910
+ cmp r0, #9
+ addls pc, pc, r0, lsl #2
+ b _02238B78
+_02238AE0: ; jump table
+ b _02238B48 ; case 0
+ b _02238B08 ; case 1
+ b _02238B78 ; case 2
+ b _02238B7C ; case 3
+ b _02238B78 ; case 4
+ b _02238B78 ; case 5
+ b _02238B78 ; case 6
+ b _02238B14 ; case 7
+ b _02238B78 ; case 8
+ b _02238B6C ; case 9
+_02238B08:
+ bl MOD13_02237838
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238B14:
+ bl MOD13_02237608
+ ldr r2, _02238B84 ; =0x0224318C
+ mov ip, #0
+ ldr r1, [r2]
+ mov r3, #3
+ add r1, r1, #0x600
+ strh r0, [r1, #0x4a]
+ ldr r0, [r2]
+ add sp, sp, #4
+ str ip, [r0, #0xa98]
+ ldr r0, [r2]
+ strb r3, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238B48:
+ ldr r0, _02238B84 ; =0x0224318C
+ mov r3, #0
+ ldr r2, [r0]
+ mov r1, #3
+ str r3, [r2, #0xa98]
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238B6C:
+ bl MOD13_02237108
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238B78:
+ bl OS_Terminate
+_02238B7C:
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02238B84: .word 0x0224318C
+
+ arm_func_start MOD13_02238B88
+MOD13_02238B88: ; 0x02238B88
+ ldr ip, _02238B94 ; =MOD13_022132CC
+ mov r0, #1
+ bx ip
+ .align 2, 0
+_02238B94: .word MOD13_022132CC
+
+ arm_func_start MOD13_02238B98
+MOD13_02238B98: ; 0x02238B98
+ ldr r2, _02238BDC ; =0x0224318C
+ ldr r3, [r2]
+ ldrb r3, [r3, #0xa90]
+ strb r3, [r0]
+ ldr r0, [r2]
+ ldrb r2, [r0, #0xa90]
+ ldrb r0, [r0, #0xa91]
+ cmp r2, r0
+ movne r0, #1
+ strneb r0, [r1]
+ moveq r0, #0
+ streqb r0, [r1]
+ ldr r0, _02238BDC ; =0x0224318C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0xa90]
+ strb r0, [r1, #0xa91]
+ bx lr
+ .align 2, 0
+_02238BDC: .word 0x0224318C
+
+ arm_func_start MOD13_02238BE0
+MOD13_02238BE0: ; 0x02238BE0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _02238FF0 ; =0x0224318C
+ ldr r0, [r1]
+ ldrb r2, [r0, #0xa90]
+ cmp r2, #0x22
+ addls pc, pc, r2, lsl #2
+ b _02238FE8
+_02238C00: ; jump table
+ b _02238FE8 ; case 0
+ b _02238C8C ; case 1
+ b _02238CD4 ; case 2
+ b _02238CE0 ; case 3
+ b _02238CFC ; case 4
+ b _02238D14 ; case 5
+ b _02238D14 ; case 6
+ b _02238D20 ; case 7
+ b _02238D2C ; case 8
+ b _02238D2C ; case 9
+ b _02238D2C ; case 10
+ b _02238D38 ; case 11
+ b _02238FE8 ; case 12
+ b _02238FE8 ; case 13
+ b _02238FE8 ; case 14
+ b _02238FE8 ; case 15
+ b _02238D44 ; case 16
+ b _02238D60 ; case 17
+ b _02238D84 ; case 18
+ b _02238DAC ; case 19
+ b _02238FE8 ; case 20
+ b _02238DF0 ; case 21
+ b _02238E18 ; case 22
+ b _02238FE8 ; case 23
+ b _02238E5C ; case 24
+ b _02238E84 ; case 25
+ b _02238FE8 ; case 26
+ b _02238EC8 ; case 27
+ b _02238EF0 ; case 28
+ b _02238FE8 ; case 29
+ b _02238FE4 ; case 30
+ b _02238FE8 ; case 31
+ b _02238F78 ; case 32
+ b _02238FA0 ; case 33
+ b _02238FE8 ; case 34
+_02238C8C:
+ ldrb r2, [r0, #0xaac]
+ cmp r2, #1
+ bne _02238CAC
+ mov r1, #0
+ strb r1, [r0, #0xaac]
+ bl MOD13_0223903C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238CAC:
+ cmp r2, #2
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r2, #0
+ strb r2, [r0, #0xaac]
+ ldr r0, [r1]
+ mov r1, #0x22
+ strb r1, [r0, #0xa90]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238CD4:
+ bl MOD13_02238AC8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238CE0:
+ bl MOD13_02238AA4
+ ldr r0, _02238FF0 ; =0x0224318C
+ mov r1, #4
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238CFC:
+ ldr r1, [r0, #0xa98]
+ add r1, r1, #1
+ str r1, [r0, #0xa98]
+ bl MOD13_022388B8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238D14:
+ bl MOD13_022388B8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238D20:
+ bl MOD13_02238884
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238D2C:
+ bl MOD13_02238698
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238D38:
+ bl MOD13_02238680
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238D44:
+ mov r2, #0
+ str r2, [r0, #0xa9c]
+ ldr r0, [r1]
+ mov r1, #0x11
+ strb r1, [r0, #0xa90]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238D60:
+ ldr r2, [r0, #0xa9c]
+ add r1, r2, #1
+ cmp r2, #0x1e
+ str r1, [r0, #0xa9c]
+ addls sp, sp, #4
+ ldmlsia sp!, {pc}
+ bl MOD13_02238644
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238D84:
+ bl MOD13_02214F18
+ ldr r0, _02238FF0 ; =0x0224318C
+ mov r3, #0
+ ldr r2, [r0]
+ mov r1, #0x16
+ str r3, [r2, #0xa9c]
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238DAC:
+ ldr r2, [r0, #0xa9c]
+ add r1, r2, #1
+ cmp r2, #0x1e
+ str r1, [r0, #0xa9c]
+ addls sp, sp, #4
+ ldmlsia sp!, {pc}
+ bl MOD13_02237910
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02236F5C
+ ldr r0, _02238FF0 ; =0x0224318C
+ mov r1, #0x14
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238DF0:
+ bl MOD13_02236FB8
+ ldr r0, _02238FF0 ; =0x0224318C
+ mov r3, #0
+ ldr r2, [r0]
+ mov r1, #0x16
+ str r3, [r2, #0xa9c]
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238E18:
+ ldr r2, [r0, #0xa9c]
+ add r1, r2, #1
+ cmp r2, #0x1e
+ str r1, [r0, #0xa9c]
+ addls sp, sp, #4
+ ldmlsia sp!, {pc}
+ bl MOD13_02237910
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02236F5C
+ ldr r0, _02238FF0 ; =0x0224318C
+ mov r1, #0x17
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238E5C:
+ bl MOD13_02236FB8
+ ldr r0, _02238FF0 ; =0x0224318C
+ mov r3, #0
+ ldr r2, [r0]
+ mov r1, #0x19
+ str r3, [r2, #0xa9c]
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238E84:
+ ldr r2, [r0, #0xa9c]
+ add r1, r2, #1
+ cmp r2, #0x1e
+ str r1, [r0, #0xa9c]
+ addls sp, sp, #4
+ ldmlsia sp!, {pc}
+ bl MOD13_02237910
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02236F5C
+ ldr r0, _02238FF0 ; =0x0224318C
+ mov r1, #0x1a
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238EC8:
+ bl MOD13_02236FB8
+ ldr r0, _02238FF0 ; =0x0224318C
+ mov r3, #0
+ ldr r2, [r0]
+ mov r1, #0x1c
+ str r3, [r2, #0xa9c]
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238EF0:
+ ldr r2, [r0, #0xa9c]
+ add r1, r2, #1
+ cmp r2, #0x1e
+ str r1, [r0, #0xa9c]
+ addls sp, sp, #4
+ ldmlsia sp!, {pc}
+ bl MOD13_02237910
+ cmp r0, #1
+ bne _02238F30
+ bl MOD13_02236F5C
+ ldr r0, _02238FF0 ; =0x0224318C
+ mov r1, #0x1d
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238F30:
+ ldr r1, _02238FF0 ; =0x0224318C
+ ldr r0, _02238FF4 ; =0x88888889
+ ldr r1, [r1]
+ ldr r2, _02238FF8 ; =0x0000001E
+ ldr r3, [r1, #0xa9c]
+ umull r0, r1, r3, r0
+ mov r1, r1, lsr #4
+ umull r0, r1, r2, r1
+ sub r1, r3, r0
+ cmp r1, #1
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ cmp r3, #0x37
+ addls sp, sp, #4
+ ldmlsia sp!, {pc}
+ bl MOD13_02236FB8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_02238F78:
+ bl MOD13_02236FB8
+ ldr r0, _02238FF0 ; =0x0224318C
+ mov r3, #0
+ ldr r2, [r0]
+ mov r1, #0x21
+ str r3, [r2, #0xa9c]
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238FA0:
+ ldr r2, [r0, #0xa9c]
+ add r1, r2, #1
+ cmp r2, #0x1e
+ str r1, [r0, #0xa9c]
+ addls sp, sp, #4
+ ldmlsia sp!, {pc}
+ bl MOD13_02237910
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ bl MOD13_02236F5C
+ ldr r0, _02238FF0 ; =0x0224318C
+ mov r1, #0x22
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xa90]
+ ldmia sp!, {pc}
+_02238FE4:
+ bl MOD13_02236FB8
+_02238FE8:
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02238FF0: .word 0x0224318C
+_02238FF4: .word 0x88888889
+_02238FF8: .word 0x0000001E
+
+ arm_func_start MOD13_02238FFC
+MOD13_02238FFC: ; 0x02238FFC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02239038 ; =0x0224318C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0xa90]
+ cmp r0, #5
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {pc}
+ mov r0, #6
+ strb r0, [r1, #0xa90]
+ bl MOD13_02236968
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02239038: .word 0x0224318C
+
+ arm_func_start MOD13_0223903C
+MOD13_0223903C: ; 0x0223903C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02239098 ; =0x0224318C
+ ldr r0, [r0]
+ ldrb r0, [r0, #0xa90]
+ cmp r0, #1
+ beq _02239068
+ cmp r0, #0x1a
+ beq _02239068
+ cmp r0, #0x1d
+ bne _0223908C
+_02239068:
+ bl MOD13_0223909C
+ bl MOD13_02237490
+ ldr r0, _02239098 ; =0x0224318C
+ mov r2, #2
+ ldr r1, [r0]
+ add sp, sp, #4
+ strb r2, [r1, #0xa90]
+ mov r0, #1
+ ldmia sp!, {pc}
+_0223908C:
+ mov r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02239098: .word 0x0224318C
+
+ arm_func_start MOD13_0223909C
+MOD13_0223909C: ; 0x0223909C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02239120 ; =0x0224318C
+ ldr r0, [r0]
+ ldr r0, [r0, #0xac8]
+ bl MOD13_02237938
+ ldr r0, _02239120 ; =0x0224318C
+ mov r1, #1
+ ldr r0, [r0]
+ strb r1, [r0, #0xa90]
+ bl WM_GetNextTgid
+ ldr r3, _02239120 ; =0x0224318C
+ mov r2, #0x40
+ ldr r1, [r3]
+ add r1, r1, #0x600
+ strh r0, [r1, #0x48]
+ ldr r1, [r3]
+ ldr r0, [r1, #0xaa4]
+ add r1, r1, #0xa50
+ bl MI_CpuCopy8
+ ldr r0, _02239120 ; =0x0224318C
+ mov r2, #0
+ ldr r1, [r0]
+ strb r2, [r1, #0xa93]
+ ldr r1, [r0]
+ str r2, [r1, #0x204]
+ ldr r0, [r0]
+ add r0, r0, #0x600
+ ldrh r1, [r0, #0x48]
+ add r1, r1, #1
+ strh r1, [r0, #0x48]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02239120: .word 0x0224318C
+
+ arm_func_start MOD13_02239124
+MOD13_02239124: ; 0x02239124
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02239238 ; =0x0224318C
+ ldr r2, [r0]
+ ldrb r1, [r2, #0xa90]
+ cmp r1, #1
+ beq _02239160
+ cmp r1, #0x14
+ beq _02239160
+ cmp r1, #0x17
+ beq _02239160
+ cmp r1, #0x1a
+ beq _02239160
+ cmp r1, #0x1d
+ bne _02239184
+_02239160:
+ mov r1, #0x22
+ strb r1, [r2, #0xa90]
+ ldr r0, _02239238 ; =0x0224318C
+ mov r1, #0
+ ldr r0, [r0]
+ add sp, sp, #4
+ strb r1, [r0, #0xaac]
+ mov r0, #1
+ ldmia sp!, {pc}
+_02239184:
+ cmp r1, #4
+ beq _022391A4
+ cmp r1, #5
+ beq _022391A4
+ cmp r1, #6
+ beq _022391A4
+ cmp r1, #0xd
+ bne _022391EC
+_022391A4:
+ cmp r1, #4
+ bne _022391C0
+ ldr r0, [r2, #0xa98]
+ cmp r0, #6
+ addlo sp, sp, #4
+ movlo r0, #0
+ ldmloia sp!, {pc}
+_022391C0:
+ bl MOD13_02214F18
+ ldr r0, _02239238 ; =0x0224318C
+ mov r3, #0x10
+ ldr r1, [r0]
+ mov r2, #2
+ strb r3, [r1, #0xa90]
+ ldr r1, [r0]
+ add sp, sp, #4
+ strb r2, [r1, #0xaac]
+ mov r0, #1
+ ldmia sp!, {pc}
+_022391EC:
+ add r0, r1, #0xf7
+ and r0, r0, #0xff
+ cmp r0, #1
+ movls r0, #0x20
+ strlsb r0, [r2, #0xa90]
+ addls sp, sp, #4
+ movls r0, #1
+ ldmlsia sp!, {pc}
+ cmp r1, #0xc
+ moveq r0, #0x22
+ streqb r0, [r2, #0xa90]
+ addeq sp, sp, #4
+ moveq r0, #1
+ ldmeqia sp!, {pc}
+ cmp r1, #2
+ moveq r0, #0
+ movne r0, #0
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02239238: .word 0x0224318C
+
+ arm_func_start MOD13_0223923C
+MOD13_0223923C: ; 0x0223923C
+ stmdb sp!, {r4, lr}
+ ldr r2, _02239328 ; =0x0224318C
+ mov r4, r1
+ str r0, [r2]
+ add r0, r0, #0xb00
+ bl MOD13_02236F10
+ ldr r1, _02239328 ; =0x0224318C
+ mov r3, #0
+ ldr r0, [r1]
+ mov r2, #1
+ add r0, r0, #0x600
+ strh r3, [r0, #0x48]
+ ldr r0, [r1]
+ add r0, r0, #0x600
+ strh r3, [r0, #0x4a]
+ ldr r0, [r1]
+ strb r2, [r0, #0xa90]
+ ldr r0, [r1]
+ strb r2, [r0, #0xa91]
+ ldr r0, [r1]
+ str r3, [r0, #0xa9c]
+ bl MOD13_022385BC
+ ldr r0, _02239328 ; =0x0224318C
+ ldr r3, [r4]
+ ldr r2, [r0]
+ mov r1, #2
+ str r3, [r2, #0xab4]
+ ldr r3, [r4, #4]
+ ldr r2, [r0]
+ str r3, [r2, #0xab8]
+ ldr r3, [r4, #8]
+ ldr r2, [r0]
+ str r3, [r2, #0xabc]
+ ldr r3, [r4, #0xc]
+ ldr r2, [r0]
+ str r3, [r2, #0xac0]
+ ldr r3, [r4, #0x10]
+ ldr r2, [r0]
+ str r3, [r2, #0xac4]
+ ldr r3, [r4, #0x14]
+ ldr r2, [r0]
+ str r3, [r2, #0xac8]
+ ldrb r3, [r4, #0x18]
+ ldr r2, [r0]
+ strb r3, [r2, #0xa92]
+ ldr r0, [r0]
+ strb r1, [r0, #0xacc]
+ bl OS_GetTick
+ ldr r1, _02239328 ; =0x0224318C
+ ldr r0, _0223932C ; =0x0000064C
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl FUN_02095D68
+ bl OS_GetTick
+ bl MOD13_022338FC
+ ldr r1, _02239328 ; =0x0224318C
+ ldr r1, [r1]
+ str r0, [r1, #0xaa4]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02239328: .word 0x0224318C
+_0223932C: .word 0x0000064C
+
+ arm_func_start MOD13_02239330
+MOD13_02239330: ; 0x02239330
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r6, r1
+ mov r7, r0
+ mov r5, r2
+ bl strlen
+ mov r4, r0
+ mov r0, r6
+ bl strlen
+ cmp r4, r5
+ blt _02239364
+ cmp r0, r5
+ bge _02239370
+_02239364:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_02239370:
+ sub r1, r0, r5
+ sub r3, r4, r5
+ mov r2, r5
+ add r0, r7, r3
+ add r1, r6, r1
+ bl memcmp
+ cmp r0, #0
+ moveq r0, #1
+ movne r0, #0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+
+ arm_func_start MOD13_0223939C
+MOD13_0223939C: ; 0x0223939C
+ stmdb sp!, {r0, r1, r2, r3}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ add r0, sp, #8
+ bl MOD13_0223AF90
+ ldr r0, _022393D4 ; =0x02243190
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x84]
+ bl MOD13_02239FD0
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ add sp, sp, #0x10
+ bx lr
+ .align 2, 0
+_022393D4: .word 0x02243190
+
+ arm_func_start MOD13_022393D8
+MOD13_022393D8: ; 0x022393D8
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0x4c
+ ldr r3, _022394C4 ; =0x02243190
+ mov r6, r0
+ ldr r0, [r3]
+ mov r5, r1
+ ldr r0, [r0, #0x84]
+ mov r4, r2
+ bl MOD13_02239F78
+ add r0, sp, #4
+ bl FS_InitFile
+ add r0, sp, #4
+ mov r1, r6
+ bl FS_OpenFile
+ cmp r0, #0
+ bne _0223941C
+ bl OS_Terminate
+_0223941C:
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x28]
+ mov r2, #2
+ sub r7, r1, r0
+ cmp r5, #0
+ ldr r1, _022394C8 ; =0x022409D4
+ mov r0, r6
+ strne r7, [r5]
+ bl MOD13_02239330
+ cmp r0, #0
+ mvnne r6, #3
+ moveq r6, r4
+ mov r0, r7
+ mov r1, r6
+ bl MOD13_0223B004
+ mov r1, r0
+ add r0, sp, #4
+ mov r2, r7
+ str r1, [sp]
+ bl FS_ReadFile
+ add r0, sp, #4
+ bl FS_CloseFile
+ cmp r6, #0
+ ldrgt r0, [sp]
+ addgt sp, sp, #0x4c
+ ldmgtia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, [sp]
+ cmp r5, #0
+ ldr r0, [r0]
+ mov r1, r4
+ mov r0, r0, lsr #8
+ strne r0, [r5]
+ bl MOD13_0223B004
+ mov r4, r0
+ ldr r0, [sp]
+ mov r1, r4
+ bl MI_UncompressLZ8
+ add r0, sp, #0
+ bl MOD13_0223AF90
+ mov r0, r4
+ add sp, sp, #0x4c
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022394C4: .word 0x02243190
+_022394C8: .word 0x022409D4
+
+ arm_func_start MOD13_022394CC
+MOD13_022394CC: ; 0x022394CC
+ mov r0, #1
+ bx lr
+
+ arm_func_start MOD13_022394D4
+MOD13_022394D4: ; 0x022394D4
+ ldr ip, _022394E0 ; =0x020D0B40
+ mov r1, #0
+ bx ip
+ .align 2, 0
+_022394E0: .word 0x020D0B40
+
+ arm_func_start MOD13_022394E4
+MOD13_022394E4: ; 0x022394E4
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr ip, _02239524 ; =MOD13_022394D4
+ str ip, [sp]
+ str r0, [sp, #4]
+ mov ip, #1
+ str ip, [sp, #8]
+ ldr r0, [r0, #0x28]
+ mov ip, r1
+ add r1, r2, r0
+ mov r2, ip
+ mvn r0, #0
+ bl CARDi_ReadRom
+ mov r0, #6
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_02239524: .word MOD13_022394D4
+
+ arm_func_start MOD13_02239528
+MOD13_02239528: ; 0x02239528
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r1, #1
+ beq _02239584
+ cmp r1, #9
+ beq _0223954C
+ cmp r1, #0xa
+ beq _02239568
+ b _02239590
+_0223954C:
+ ldr r0, _0223959C ; =0x02243190
+ ldr r0, [r0]
+ ldrh r0, [r0, #0xe4]
+ bl CARD_LockRom
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {pc}
+_02239568:
+ ldr r0, _0223959C ; =0x02243190
+ ldr r0, [r0]
+ ldrh r0, [r0, #0xe4]
+ bl CARD_UnlockRom
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {pc}
+_02239584:
+ add sp, sp, #4
+ mov r0, #4
+ ldmia sp!, {pc}
+_02239590:
+ mov r0, #8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223959C: .word 0x02243190
+
+ arm_func_start MOD13_022395A0
+MOD13_022395A0: ; 0x022395A0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _02239624 ; =0x022409D8
+ bl FS_ChangeDir
+ ldr r0, _02239628 ; =0x02243190
+ ldr r0, [r0]
+ add r0, r0, #0x88
+ bl FS_UnloadArchiveTables
+ ldr r0, _02239628 ; =0x02243190
+ ldr r0, [r0]
+ add r0, r0, #0x88
+ bl FS_UnloadArchive
+ ldr r0, _02239628 ; =0x02243190
+ ldr r0, [r0]
+ add r0, r0, #0x88
+ bl FS_ReleaseArchiveName
+ ldr r0, _02239628 ; =0x02243190
+ ldr r0, [r0]
+ ldrh r0, [r0, #0xe4]
+ bl OS_ReleaseLockID
+ ldr r0, _02239628 ; =0x02243190
+ mov r2, #0
+ ldr r1, [r0]
+ strh r2, [r1, #0xe4]
+ ldr r0, [r0]
+ bl MOD13_0223AF90
+ ldr r0, _02239628 ; =0x02243190
+ mov r2, #0
+ ldr r1, [r0]
+ str r2, [r1]
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02239624: .word 0x022409D8
+_02239628: .word 0x02243190
+
+ arm_func_start MOD13_0223962C
+MOD13_0223962C: ; 0x0223962C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #0xe8
+ mov r0, #0xe8
+ mov r1, #4
+ bl MOD13_0223AFE0
+ ldr r1, _022397BC ; =0x02243190
+ str r0, [r1]
+ add r0, sp, #0x20
+ bl FS_InitFile
+ ldr r1, _022397C0 ; =0x022409E0
+ add r0, sp, #0x20
+ bl FS_OpenFile
+ cmp r0, #0
+ bne _02239668
+ bl OS_Terminate
+_02239668:
+ bl OS_GetLockID
+ ldr r2, _022397BC ; =0x02243190
+ add r1, sp, #0x10
+ ldr r3, [r2]
+ mov r2, #8
+ strh r0, [r3, #0xe4]
+ add r0, sp, #0x20
+ ldr r4, [sp, #0x44]
+ bl FS_ReadFile
+ add r0, sp, #0x20
+ add r1, sp, #0x18
+ mov r2, #8
+ bl FS_ReadFile
+ add r0, sp, #0x20
+ bl FS_CloseFile
+ ldr r0, _022397BC ; =0x02243190
+ ldr r0, [r0]
+ add r0, r0, #0x88
+ bl FS_InitArchive
+ ldr r0, _022397BC ; =0x02243190
+ ldr r1, _022397C4 ; =0x0223F740
+ ldr r0, [r0]
+ mov r2, #3
+ add r0, r0, #0x88
+ bl FS_RegisterArchiveName
+ cmp r0, #0
+ bne _022396D8
+ bl OS_Terminate
+_022396D8:
+ ldr r0, _022397BC ; =0x02243190
+ ldr r1, _022397C8 ; =MOD13_02239528
+ ldr r0, [r0]
+ ldr r2, _022397CC ; =0x00000602
+ add r0, r0, #0x88
+ bl FS_SetArchiveProc
+ ldr r0, [sp, #0x10]
+ ldr r1, _022397D0 ; =MOD13_022394E4
+ str r0, [sp]
+ ldr r2, [sp, #0x14]
+ ldr r0, _022397D4 ; =MOD13_022394CC
+ str r2, [sp, #4]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, _022397BC ; =0x02243190
+ ldr r2, [sp, #0x18]
+ ldr r0, [r0]
+ ldr r3, [sp, #0x1c]
+ mov r1, r4
+ add r0, r0, #0x88
+ bl FS_LoadArchive
+ cmp r0, #0
+ bne _02239738
+ bl OS_Terminate
+_02239738:
+ ldr r0, _022397BC ; =0x02243190
+ mov r1, #0
+ ldr r0, [r0]
+ mov r2, r1
+ add r0, r0, #0x88
+ bl FS_LoadArchiveTables
+ mov r1, #4
+ mov r4, r0
+ bl MOD13_0223B004
+ ldr r1, _022397BC ; =0x02243190
+ mov r2, r4
+ ldr r3, [r1]
+ str r0, [r3]
+ ldr r0, [r1]
+ ldr r1, [r0], #0x88
+ bl FS_LoadArchiveTables
+ ldr r1, _022397BC ; =0x02243190
+ mov r0, #0x20
+ ldr r1, [r1]
+ mov r2, #4
+ add r1, r1, #4
+ bl MOD13_0223A054
+ ldr r2, _022397BC ; =0x02243190
+ ldr r1, _022397D8 ; =0x022409F8
+ ldr r3, [r2]
+ ldr r2, _022397C4 ; =0x0223F740
+ str r0, [r3, #0x84]
+ add r0, sp, #0x68
+ bl OS_SPrintf
+ add r0, sp, #0x68
+ bl FS_ChangeDir
+ add sp, sp, #0xe8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_022397BC: .word 0x02243190
+_022397C0: .word 0x022409E0
+_022397C4: .word 0x0223F740
+_022397C8: .word MOD13_02239528
+_022397CC: .word 0x00000602
+_022397D0: .word MOD13_022394E4
+_022397D4: .word MOD13_022394CC
+_022397D8: .word 0x022409F8
+
+ arm_func_start MOD13_022397DC
+MOD13_022397DC: ; 0x022397DC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr lr, [r0, #8]
+ ldr r0, _02239810 ; =0x01FF0000
+ ldr ip, [lr, r1, lsl #3]
+ and r0, ip, r0
+ mov r0, r0, lsr #0x10
+ str r0, [r2]
+ ldr r0, [lr, r1, lsl #3]
+ and r0, r0, #0xff
+ str r0, [r3]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_02239810: .word 0x01FF0000
+
+ arm_func_start MOD13_02239814
+MOD13_02239814: ; 0x02239814
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r1, #0
+ ldr lr, [r0, #8]
+ blt _02239844
+ add r1, lr, r1, lsl #3
+ ldrh r0, [r1, #4]
+ add sp, sp, #4
+ bic r0, r0, #0xc00
+ orr r0, r0, r2, lsl #10
+ strh r0, [r1, #4]
+ ldmia sp!, {pc}
+_02239844:
+ ldrb r1, [r0, #0xc]
+ mov ip, #0
+ cmp r1, #0
+ addle sp, sp, #4
+ ldmleia sp!, {pc}
+ mov r3, r2, lsl #0xa
+_0223985C:
+ add r2, lr, ip, lsl #3
+ ldrh r1, [r2, #4]
+ add ip, ip, #1
+ bic r1, r1, #0xc00
+ orr r1, r1, r3
+ strh r1, [r2, #4]
+ ldrb r1, [r0, #0xc]
+ cmp ip, r1
+ blt _0223985C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_02239888
+MOD13_02239888: ; 0x02239888
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #0x10
+ cmp r1, #0
+ ldr ip, [r0, #8]
+ blt _022398C8
+ ldr r5, [ip, r1, lsl #3]
+ ldr r4, _02239988 ; =0xFE00FF00
+ ldr r0, _0223998C ; =0x000001FF
+ and r4, r5, r4
+ and r3, r3, #0xff
+ and r2, r2, r0
+ orr r0, r4, r3
+ orr r0, r0, r2, lsl #16
+ str r0, [ip, r1, lsl #3]
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+_022398C8:
+ ldr r1, [ip]
+ ldr lr, _02239990 ; =0x01FF0000
+ ldr r4, _0223998C ; =0x000001FF
+ and r1, r1, lr
+ mov r1, r1, lsr #0x10
+ str r1, [sp]
+ ldr r1, [ip]
+ ldr r5, _02239988 ; =0xFE00FF00
+ and r1, r1, #0xff
+ str r1, [sp, #4]
+ ldr r6, [ip]
+ and r1, r3, #0xff
+ and r6, r6, r5
+ and r7, r2, r4
+ orr r1, r6, r1
+ orr r1, r1, r7, lsl #16
+ str r1, [ip]
+ ldrb r1, [r0, #0xc]
+ ldr r7, [sp]
+ ldr r6, [sp, #4]
+ cmp r1, #1
+ sub r1, r3, r6
+ addle sp, sp, #0x10
+ sub r2, r2, r7
+ mov r3, #1
+ ldmleia sp!, {r4, r5, r6, r7, r8, pc}
+_02239930:
+ ldr r6, [ip, r3, lsl #3]
+ and r7, r6, lr
+ mov r6, r7, lsr #0x10
+ str r6, [sp, #8]
+ ldr r6, [ip, r3, lsl #3]
+ add r8, r2, r7, lsr #16
+ and r6, r6, #0xff
+ str r6, [sp, #0xc]
+ ldr r7, [ip, r3, lsl #3]
+ add r6, r6, r1
+ and r7, r7, r5
+ and r6, r6, #0xff
+ and r8, r8, r4
+ orr r6, r7, r6
+ orr r6, r6, r8, lsl #16
+ str r6, [ip, r3, lsl #3]
+ ldrb r6, [r0, #0xc]
+ add r3, r3, #1
+ cmp r3, r6
+ blt _02239930
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_02239988: .word 0xFE00FF00
+_0223998C: .word 0x000001FF
+_02239990: .word 0x01FF0000
+
+ arm_func_start MOD13_02239994
+MOD13_02239994: ; 0x02239994
+ stmdb sp!, {r4, lr}
+ cmp r1, #0
+ ldr ip, [r0, #8]
+ blt _022399CC
+ ldr r0, [ip, r1, lsl #3]
+ add lr, ip, r1, lsl #3
+ bic r0, r0, #0xc00
+ orr r0, r0, r2, lsl #10
+ str r0, [ip, r1, lsl #3]
+ ldrh r0, [lr, #4]
+ bic r0, r0, #0xf000
+ orr r0, r0, r3, lsl #12
+ strh r0, [lr, #4]
+ ldmia sp!, {r4, pc}
+_022399CC:
+ ldrb lr, [r0, #0xc]
+ mov r1, #0
+ cmp lr, #0
+ ldmleia sp!, {r4, pc}
+ mov r4, r2, lsl #0xa
+ mov lr, r3, lsl #0xc
+_022399E4:
+ ldr r2, [ip, r1, lsl #3]
+ add r3, ip, r1, lsl #3
+ bic r2, r2, #0xc00
+ orr r2, r2, r4
+ str r2, [ip, r1, lsl #3]
+ ldrh r2, [r3, #4]
+ add r1, r1, #1
+ bic r2, r2, #0xf000
+ orr r2, r2, lr
+ strh r2, [r3, #4]
+ ldrb r2, [r0, #0xc]
+ cmp r1, r2
+ blt _022399E4
+ ldmia sp!, {r4, pc}
+
+ arm_func_start MOD13_02239A1C
+MOD13_02239A1C: ; 0x02239A1C
+ stmdb sp!, {r4, lr}
+ cmp r1, #0
+ ldr ip, [r0, #8]
+ blt _02239A70
+ cmp r2, #0x100
+ beq _02239A54
+ cmp r2, #0x300
+ beq _02239A54
+ ldr r3, [ip, r1, lsl #3]
+ ldr r0, _02239AD0 ; =0xC1FFFCFF
+ and r0, r3, r0
+ orr r0, r0, r2
+ str r0, [ip, r1, lsl #3]
+ ldmia sp!, {r4, pc}
+_02239A54:
+ ldr lr, [ip, r1, lsl #3]
+ ldr r0, _02239AD0 ; =0xC1FFFCFF
+ and r0, lr, r0
+ orr r0, r0, r2
+ orr r0, r0, r3, lsl #25
+ str r0, [ip, r1, lsl #3]
+ ldmia sp!, {r4, pc}
+_02239A70:
+ ldrb lr, [r0, #0xc]
+ mov r1, #0
+ cmp lr, #0
+ ldmleia sp!, {r4, pc}
+ mov r4, r3, lsl #0x19
+ ldr r3, _02239AD0 ; =0xC1FFFCFF
+_02239A88:
+ cmp r2, #0x100
+ beq _02239AA8
+ cmp r2, #0x300
+ ldrne lr, [ip, r1, lsl #3]
+ andne lr, lr, r3
+ orrne lr, lr, r2
+ strne lr, [ip, r1, lsl #3]
+ bne _02239ABC
+_02239AA8:
+ ldr lr, [ip, r1, lsl #3]
+ and lr, lr, r3
+ orr lr, lr, r2
+ orr lr, r4, lr
+ str lr, [ip, r1, lsl #3]
+_02239ABC:
+ ldrb lr, [r0, #0xc]
+ add r1, r1, #1
+ cmp r1, lr
+ blt _02239A88
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02239AD0: .word 0xC1FFFCFF
+
+ arm_func_start MOD13_02239AD4
+MOD13_02239AD4: ; 0x02239AD4
+ ldrb r0, [r0, #0xc]
+ bx lr
+
+ arm_func_start MOD13_02239ADC
+MOD13_02239ADC: ; 0x02239ADC
+ ldr r0, [r0, #8]
+ add r0, r0, r1, lsl #3
+ bx lr
+
+ arm_func_start MOD13_02239AE8
+MOD13_02239AE8: ; 0x02239AE8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ ldrb r0, [r5, #0xc]
+ mov r4, #0
+ mov r2, r4
+ cmp r0, #0
+ ldr r3, [r5, #8]
+ ble _02239B34
+ ldr r0, _02239B6C ; =0xC1FFFCFF
+_02239B10:
+ ldr r1, [r3]
+ add r2, r2, #1
+ and r1, r1, r0
+ orr r1, r1, #0x200
+ str r1, [r3]
+ ldrb r1, [r5, #0xc]
+ add r3, r3, #8
+ cmp r2, r1
+ blt _02239B10
+_02239B34:
+ mov r0, r5
+ bl MOD13_0223B8C4
+ ldr r0, _02239B70 ; =0x02243194
+ ldr r1, [r0]
+ add r0, r1, #0x228
+ cmp r5, r0
+ movhs r4, #1
+ mov r0, #0x228
+ mla r0, r4, r0, r1
+ ldr r0, [r0, #0x224]
+ mov r1, r5
+ bl MOD13_02239FD0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_02239B6C: .word 0xC1FFFCFF
+_02239B70: .word 0x02243194
+
+ arm_func_start MOD13_02239B74
+MOD13_02239B74: ; 0x02239B74
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ mov sb, r0
+ mov r0, #0x228
+ mul r7, sb, r0
+ ldr r0, _02239CE4 ; =0x02243194
+ mov r5, r1
+ ldr r0, [r0]
+ mov r6, r2
+ add r0, r0, r7
+ ldr r0, [r0, #0x224]
+ bl MOD13_02239F78
+ mov r4, r0
+ mov r0, #1
+ bl OS_DisableIrqMask
+ mov r8, r0
+ cmp r6, #0
+ beq _02239C44
+ ldr r1, _02239CE4 ; =0x02243194
+ mov r0, #0x228
+ ldr r2, [r1]
+ mla r0, sb, r0, r2
+ add r6, r0, #0x200
+ add r0, r0, #0x210
+ cmp r6, r0
+ beq _02239C24
+ mov r1, r5, lsl #3
+ add r0, r2, r7
+ add r2, r0, #0x210
+_02239BE8:
+ ldrb sb, [r6, #0xc]
+ ldr r0, [r6, #4]
+ ldr ip, [r6, #8]
+ ldr r3, [r0, #8]
+ add ip, ip, sb, lsl #3
+ add sb, ip, r1
+ cmp sb, r3
+ bhi _02239C18
+ mov r1, r4
+ str ip, [r4, #8]
+ bl MOD13_0223B888
+ b _02239C24
+_02239C18:
+ mov r6, r0
+ cmp r0, r2
+ bne _02239BE8
+_02239C24:
+ ldr r0, _02239CE4 ; =0x02243194
+ ldr r0, [r0]
+ add r0, r0, r7
+ add r0, r0, #0x210
+ cmp r6, r0
+ bne _02239CCC
+ bl OS_Terminate
+ b _02239CCC
+_02239C44:
+ ldr r1, _02239CE4 ; =0x02243194
+ mov r0, #0x228
+ ldr r1, [r1]
+ mla r0, sb, r0, r1
+ add r6, r0, #0x210
+ add r0, r0, #0x200
+ cmp r6, r0
+ beq _02239CB0
+ mov r0, r5, lsl #3
+ add r1, r1, r7
+ add r1, r1, #0x200
+_02239C70:
+ ldr ip, [r6]
+ ldr sb, [r6, #8]
+ ldrb r2, [ip, #0xc]
+ ldr r3, [ip, #8]
+ sub sb, sb, r0
+ add r2, r3, r2, lsl #3
+ cmp sb, r2
+ blo _02239CA4
+ mov r0, r6
+ mov r1, r4
+ str sb, [r4, #8]
+ bl MOD13_0223B888
+ b _02239CB0
+_02239CA4:
+ mov r6, ip
+ cmp ip, r1
+ bne _02239C70
+_02239CB0:
+ ldr r0, _02239CE4 ; =0x02243194
+ ldr r0, [r0]
+ add r0, r0, r7
+ add r0, r0, #0x200
+ cmp r6, r0
+ bne _02239CCC
+ bl OS_Terminate
+_02239CCC:
+ mov r0, r8
+ bl OS_EnableIrqMask
+ mov r0, r4
+ strb r5, [r4, #0xc]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_02239CE4: .word 0x02243194
+
+ arm_func_start MOD13_02239CE8
+MOD13_02239CE8: ; 0x02239CE8
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, #0
+ mov r5, r6
+ ldr r4, _02239D34 ; =0x02243194
+_02239CF8:
+ ldr r0, [r4]
+ add r0, r0, r5
+ ldr r0, [r0, #0x220]
+ bl MOD13_0223B904
+ ldr r0, [r4]
+ add r0, r0, r5
+ ldr r0, [r0, #0x224]
+ bl MOD13_0223A030
+ add r6, r6, #1
+ cmp r6, #2
+ add r5, r5, #0x228
+ blt _02239CF8
+ ldr r0, _02239D34 ; =0x02243194
+ bl MOD13_0223AF90
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_02239D34: .word 0x02243194
+
+ arm_func_start MOD13_02239D38
+MOD13_02239D38: ; 0x02239D38
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ mov r0, #0x450
+ mov r1, #4
+ bl MOD13_0223AFE0
+ ldr sl, _02239E08 ; =0x02243194
+ mov sb, #0
+ mov r8, sb
+ str r0, [sl]
+ mov r7, #0x20
+ mov r6, #0x10
+ mov r5, #0x40
+ mov r4, #0x7f
+_02239D68:
+ ldr r1, [sl]
+ mov r0, r7
+ mov r2, r6
+ add r1, r1, r8
+ bl MOD13_0223A054
+ ldr r1, [sl]
+ add r1, r1, r8
+ str r0, [r1, #0x224]
+ bl MOD13_0223B928
+ ldr r2, [sl]
+ mov r1, r5
+ add r2, r2, r8
+ str r0, [r2, #0x220]
+ mov r0, sb
+ bl MOD13_0223B95C
+ ldr r2, [sl]
+ mov r1, r4
+ add r2, r2, r8
+ str r0, [r2, #0x208]
+ mov r0, sb
+ bl MOD13_0223B95C
+ add r1, r0, #8
+ ldr r0, [sl]
+ add r0, r0, r8
+ str r1, [r0, #0x218]
+ ldr r0, [sl]
+ add r1, r0, r8
+ ldr r0, [r1, #0x220]
+ add r1, r1, #0x200
+ bl MOD13_0223B868
+ ldr r0, [sl]
+ add r1, r0, r8
+ ldr r0, [r1, #0x220]
+ add r1, r1, #0x210
+ bl MOD13_0223B878
+ add r8, r8, #0x228
+ add sb, sb, #1
+ cmp sb, #2
+ blt _02239D68
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_02239E08: .word 0x02243194
+
+ arm_func_start MOD13_02239E0C
+MOD13_02239E0C: ; 0x02239E0C
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r3, _02239E50 ; =0x02243198
+ mov r6, r0
+ mov r5, r1
+ ldr r3, [r3, r6, lsl #2]
+ mov r1, r5, lsl #3
+ ldrh r1, [r3, r1]
+ bl MOD13_02239B74
+ mov r1, #0
+ mov r4, r0
+ bl MOD13_02239ADC
+ mov r2, r0
+ mov r0, r6
+ mov r1, r5
+ bl MOD13_02239E8C
+ mov r0, r4
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_02239E50: .word 0x02243198
+
+ arm_func_start MOD13_02239E54
+MOD13_02239E54: ; 0x02239E54
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #8
+ mov r5, r1
+ add r1, sp, #0
+ mov r6, r0
+ bl MOD13_0223B9C0
+ mov r4, r0
+ mov r0, r6
+ mov r1, r5
+ mov r2, r4
+ bl MOD13_02239E8C
+ mov r0, r4
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+
+ arm_func_start MOD13_02239E8C
+MOD13_02239E8C: ; 0x02239E8C
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ sub sp, sp, #8
+ ldr r3, _02239F1C ; =0x02243198
+ mov r5, r2
+ ldr r6, [r3, r0, lsl #2]
+ mov r2, r1, lsl #3
+ add r0, r6, r1, lsl #3
+ ldr r3, [r0, #4]
+ ldrh r4, [r6, r2]
+ add r1, sp, #0
+ mov r0, #0
+ mov r2, #8
+ add sl, r6, r3
+ bl MIi_CpuClear32
+ cmp r4, #0
+ mov sb, #0
+ addle sp, sp, #8
+ ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ add r8, sp, #0
+ mov r7, #6
+ mov r6, #8
+_02239EE0:
+ mov r0, sl
+ mov r1, r8
+ mov r2, r7
+ bl MIi_CpuCopy16
+ mov r0, r8
+ mov r1, r5
+ mov r2, r6
+ bl MIi_CpuCopy32
+ add sb, sb, #1
+ cmp sb, r4
+ add sl, sl, #6
+ add r5, r5, #8
+ blt _02239EE0
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_02239F1C: .word 0x02243198
+
+ arm_func_start MOD13_02239F20
+MOD13_02239F20: ; 0x02239F20
+ stmdb sp!, {r4, lr}
+ ldr r1, _02239F44 ; =0x02243198
+ mov r4, r0
+ ldr r0, [r1, r4, lsl #2]
+ bl MOD13_0223939C
+ ldr r0, _02239F44 ; =0x02243198
+ mov r1, #0
+ str r1, [r0, r4, lsl #2]
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02239F44: .word 0x02243198
+
+ arm_func_start MOD13_02239F48
+MOD13_02239F48: ; 0x02239F48
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ mov r0, r1
+ add r1, sp, #0
+ mov r2, #4
+ bl MOD13_022393D8
+ ldr r1, _02239F74 ; =0x02243198
+ str r0, [r1, r4, lsl #2]
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_02239F74: .word 0x02243198
+
+ arm_func_start MOD13_02239F78
+MOD13_02239F78: ; 0x02239F78
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r0, #1
+ mov r5, #0
+ bl OS_DisableIrqMask
+ ldrb r2, [r6, #3]
+ ldrb r1, [r6, #2]
+ mov r4, r0
+ cmp r1, r2
+ beq _02239FC0
+ ldrh r1, [r6]
+ add r0, r2, r1
+ sub r0, r0, #1
+ bl FX_ModS32
+ strb r0, [r6, #3]
+ ldrb r0, [r6, #3]
+ add r0, r6, r0, lsl #2
+ ldr r5, [r0, #4]
+_02239FC0:
+ mov r0, r4
+ bl OS_EnableIrqMask
+ mov r0, r5
+ ldmia sp!, {r4, r5, r6, pc}
+
+ arm_func_start MOD13_02239FD0
+MOD13_02239FD0: ; 0x02239FD0
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r0, #1
+ mov r4, r1
+ bl OS_DisableIrqMask
+ ldrb r2, [r5, #3]
+ mov r7, r0
+ ldrh r1, [r5]
+ add r0, r2, #1
+ bl FX_ModS32
+ ldrb r1, [r5, #2]
+ mov r6, r0
+ cmp r6, r1
+ bne _0223A010
+ bl OS_Terminate
+_0223A010:
+ ldrb r1, [r5, #3]
+ mov r0, r7
+ add r1, r5, r1, lsl #2
+ str r4, [r1, #4]
+ strb r6, [r5, #3]
+ bl OS_EnableIrqMask
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+
+ arm_func_start MOD13_0223A030
+MOD13_0223A030: ; 0x0223A030
+ stmdb sp!, {r0, r1, r2, r3}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ add r0, sp, #8
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start MOD13_0223A054
+MOD13_0223A054: ; 0x0223A054
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, r1
+ mov r4, r2
+ bl MOD13_0223A094
+ cmp r6, #0
+ mov r2, #0
+ ble _0223A08C
+_0223A074:
+ add r1, r0, r2, lsl #2
+ add r2, r2, #1
+ str r5, [r1, #4]
+ cmp r2, r6
+ add r5, r5, r4
+ blt _0223A074
+_0223A08C:
+ strb r6, [r0, #3]
+ ldmia sp!, {r4, r5, r6, pc}
+
+ arm_func_start MOD13_0223A094
+MOD13_0223A094: ; 0x0223A094
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ add r0, r4, #1
+ mov r0, r0, lsl #2
+ add r0, r0, #8
+ mov r1, #4
+ bl MOD13_0223B004
+ add r1, r4, #1
+ strh r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #2]
+ strb r1, [r0, #3]
+ ldmia sp!, {r4, pc}
+
+ arm_func_start MOD13_0223A0C8
+MOD13_0223A0C8: ; 0x0223A0C8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldrsh r2, [r1, #4]
+ add r2, r2, #1
+ strh r2, [r1, #4]
+ ldrsh r3, [r1, #4]
+ ldrh r2, [r1, #6]
+ cmp r3, r2
+ addlt sp, sp, #4
+ ldmltia sp!, {pc}
+ mov r2, #0
+ strb r2, [r1, #9]
+ mov r1, r0
+ mov r0, #1
+ bl MOD13_0223C110
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_0223A10C
+MOD13_0223A10C: ; 0x0223A10C
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r1, _0223A168 ; =0x022431A0
+ mov r5, r0
+ ldr r4, [r1]
+ ldrb r0, [r4, #9]
+ cmp r0, #0
+ addne sp, sp, #4
+ movne r0, #0
+ ldmneia sp!, {r4, r5, pc}
+ ldr r1, _0223A16C ; =MOD13_0223A0C8
+ mov r2, r4
+ mov r0, #1
+ mov r3, #0xc8
+ bl MOD13_0223C1C4
+ str r0, [r4]
+ mov r0, #0
+ strh r0, [r4, #4]
+ strh r5, [r4, #6]
+ mov r0, #1
+ strb r0, [r4, #9]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0223A168: .word 0x022431A0
+_0223A16C: .word MOD13_0223A0C8
+
+ arm_func_start MOD13_0223A170
+MOD13_0223A170: ; 0x0223A170
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ldr r3, _0223A294 ; =0x0223F748
+ ldr r2, _0223A298 ; =0x0223F744
+ ldrb r8, [r3]
+ ldrb r7, [r3, #1]
+ ldrb r6, [r3, #2]
+ ldrb lr, [r3, #3]
+ ldrb ip, [r2]
+ ldrb r5, [r2, #1]
+ ldrb r3, [r2, #2]
+ ldrb r2, [r2, #3]
+ strb r5, [sp, #5]
+ mov r4, r1
+ strb r8, [sp]
+ strb r7, [sp, #1]
+ strb r6, [sp, #2]
+ strb lr, [sp, #3]
+ strb ip, [sp, #4]
+ strb r3, [sp, #6]
+ strb r2, [sp, #7]
+ ldrsh r1, [r4, #4]
+ mov r5, r0
+ add r0, r1, #1
+ strh r0, [r4, #4]
+ ldrsh r0, [r4, #4]
+ ldrh r1, [r4, #6]
+ mov r0, r0, lsl #4
+ bl FX_DivS32
+ ldrb r3, [r4, #8]
+ add r2, sp, #0
+ mov r1, r0
+ ldrb r2, [r2, r3]
+ ands r0, r2, #1
+ rsbne r1, r1, #0x10
+ ands r0, r2, #0x10
+ ldr r0, _0223A29C ; =0x022431A0
+ rsbne r1, r1, #0
+ ldr r0, [r0]
+ cmp r4, r0
+ bne _0223A220
+ ldr r0, _0223A2A0 ; =0x04001050
+ bl G2x_ChangeBlendBrightness_
+ b _0223A228
+_0223A220:
+ ldr r0, _0223A2A4 ; =0x04000050
+ bl G2x_ChangeBlendBrightness_
+_0223A228:
+ ldrsh r1, [r4, #4]
+ ldrh r0, [r4, #6]
+ cmp r1, r0
+ addlt sp, sp, #8
+ ldmltia sp!, {r4, r5, r6, r7, r8, pc}
+ ldr r0, _0223A29C ; =0x022431A0
+ ldr r0, [r0]
+ cmp r4, r0
+ bne _0223A264
+ ldrb r2, [r4, #8]
+ add r1, sp, #4
+ ldr r0, _0223A2A0 ; =0x04001050
+ ldrsb r1, [r1, r2]
+ bl G2x_ChangeBlendBrightness_
+ b _0223A278
+_0223A264:
+ ldrb r2, [r4, #8]
+ add r1, sp, #4
+ ldr r0, _0223A2A4 ; =0x04000050
+ ldrsb r1, [r1, r2]
+ bl G2x_ChangeBlendBrightness_
+_0223A278:
+ mov r2, #0
+ mov r1, r5
+ mov r0, #1
+ strb r2, [r4, #9]
+ bl MOD13_0223C110
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_0223A294: .word 0x0223F748
+_0223A298: .word 0x0223F744
+_0223A29C: .word 0x022431A0
+_0223A2A0: .word 0x04001050
+_0223A2A4: .word 0x04000050
+
+ arm_func_start MOD13_0223A2A8
+MOD13_0223A2A8: ; 0x0223A2A8
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #8
+ ldr r4, _0223A374 ; =0x0223F74C
+ mov r5, r0
+ ldrb r0, [r4, #3]
+ ldrb r6, [r4]
+ ldrb lr, [r4, #1]
+ strb r0, [sp, #3]
+ cmp r1, #1
+ ldreq r0, _0223A378 ; =0x022431A0
+ ldrb ip, [r4, #2]
+ strb r6, [sp]
+ ldreq r6, [r0]
+ ldrne r0, _0223A378 ; =0x022431A0
+ strb lr, [sp, #1]
+ ldrne r0, [r0]
+ strb ip, [sp, #2]
+ addne r6, r0, #0xc
+ ldrb r0, [r6, #9]
+ mov r4, r3
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, #0
+ ldmneia sp!, {r4, r5, r6, pc}
+ cmp r1, #1
+ bne _0223A328
+ add r0, sp, #0
+ mov r1, r2
+ ldrsb r2, [r0, r5]
+ ldr r0, _0223A37C ; =0x04001050
+ bl G2x_SetBlendBrightness_
+ b _0223A33C
+_0223A328:
+ add r0, sp, #0
+ mov r1, r2
+ ldrsb r2, [r0, r5]
+ ldr r0, _0223A380 ; =0x04000050
+ bl G2x_SetBlendBrightness_
+_0223A33C:
+ ldr r1, _0223A384 ; =MOD13_0223A170
+ mov r2, r6
+ mov r0, #1
+ mov r3, #0xc8
+ bl MOD13_0223C1C4
+ str r0, [r6]
+ mov r0, #0
+ strh r0, [r6, #4]
+ strb r5, [r6, #8]
+ strh r4, [r6, #6]
+ mov r0, #1
+ strb r0, [r6, #9]
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_0223A374: .word 0x0223F74C
+_0223A378: .word 0x022431A0
+_0223A37C: .word 0x04001050
+_0223A380: .word 0x04000050
+_0223A384: .word MOD13_0223A170
+
+ arm_func_start MOD13_0223A388
+MOD13_0223A388: ; 0x0223A388
+ cmp r0, #1
+ ldreq r0, _0223A3A8 ; =0x022431A0
+ ldreq r0, [r0]
+ ldrne r0, _0223A3A8 ; =0x022431A0
+ ldrne r0, [r0]
+ addne r0, r0, #0xc
+ ldrb r0, [r0, #9]
+ bx lr
+ .align 2, 0
+_0223A3A8: .word 0x022431A0
+
+ arm_func_start MOD13_0223A3AC
+MOD13_0223A3AC: ; 0x0223A3AC
+ ldr ip, _0223A3B8 ; =MOD13_0223AF90
+ ldr r0, _0223A3BC ; =0x022431A0
+ bx ip
+ .align 2, 0
+_0223A3B8: .word MOD13_0223AF90
+_0223A3BC: .word 0x022431A0
+
+ arm_func_start MOD13_0223A3C0
+MOD13_0223A3C0: ; 0x0223A3C0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0x18
+ mov r1, #4
+ bl MOD13_0223AFE0
+ ldr r2, _0223A404 ; =0x022431A0
+ mov r1, #0x3f
+ str r0, [r2]
+ ldr r0, _0223A408 ; =0x04000050
+ mov r2, #0x10
+ bl G2x_SetBlendBrightness_
+ ldr r0, _0223A40C ; =0x04001050
+ mov r1, #0x3f
+ mov r2, #0x10
+ bl G2x_SetBlendBrightness_
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223A404: .word 0x022431A0
+_0223A408: .word 0x04000050
+_0223A40C: .word 0x04001050
+
+ arm_func_start MOD13_0223A410
+MOD13_0223A410: ; 0x0223A410
+ ldr r2, _0223A438 ; =0x022431A4
+ ldr r1, _0223A43C ; =0x00000718
+ ldr r2, [r2]
+ add r1, r2, r1
+ cmp r0, r1
+ moveq r0, #1
+ streqb r0, [r2, #0x794]
+ movne r0, #1
+ strneb r0, [r2, #0x795]
+ bx lr
+ .align 2, 0
+_0223A438: .word 0x022431A4
+_0223A43C: .word 0x00000718
+
+ arm_func_start MOD13_0223A440
+MOD13_0223A440: ; 0x0223A440
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #0x10
+ mov r6, r3
+ mov r4, r0
+ mov r8, r1
+ mov r0, r6
+ mov r1, #0
+ mov r7, r2
+ bl MOD13_02239ADC
+ mov r2, #0
+ mov r5, r0
+ mov r0, r6
+ mvn r1, #0
+ mov r3, r2
+ bl MOD13_02239A1C
+ mov r0, r6
+ mvn r1, #0
+ mov r2, #0
+ mov r3, #0xf
+ bl MOD13_02239994
+ mov r0, r6
+ mvn r1, #0
+ ldr r2, [sp, #0x28]
+ bl MOD13_02239814
+ str r7, [sp]
+ mov r0, r5
+ mov r3, r8
+ mov r1, #0
+ str r1, [sp, #4]
+ ldrh r2, [r4, #0x34]
+ mov r1, #2
+ str r2, [sp, #8]
+ str r1, [sp, #0xc]
+ ldrb r1, [r4, #0x36]
+ ldrb r2, [r4, #0x37]
+ bl FUN_020B5E50
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+
+ arm_func_start MOD13_0223A4D8
+MOD13_0223A4D8: ; 0x0223A4D8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, [r0, #0x18]
+ blx r2
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_0223A4F0
+MOD13_0223A4F0: ; 0x0223A4F0
+ stmdb sp!, {lr}
+ sub sp, sp, #0x14
+ ldr lr, [sp, #0x18]
+ ldr ip, [sp, #0x1c]
+ str lr, [sp]
+ ldr lr, [sp, #0x20]
+ str ip, [sp, #4]
+ ldr ip, [sp, #0x24]
+ str lr, [sp, #8]
+ add r0, r0, #0x20
+ str ip, [sp, #0xc]
+ bl FUN_020B7168
+ add sp, sp, #0x14
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_0223A528
+MOD13_0223A528: ; 0x0223A528
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ ldr r7, [sp, #0x34]
+ mov sb, r1
+ ldrh r1, [r7]
+ ldr r8, [sp, #0x30]
+ ldr r6, [sp, #0x38]
+ mov sl, r0
+ mov fp, r2
+ str r3, [sp, #8]
+ cmp r1, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ mov r0, #0xc
+ mul r4, r6, r0
+_0223A564:
+ ldr r0, _0223A5E8 ; =0x022431A4
+ ldr r0, [r0]
+ add r5, r0, r4
+ mov r0, r5
+ bl FUN_020B5CE4
+ mov r1, r0
+ ldr r0, _0223A5EC ; =0x0000FFFF
+ cmp r1, r0
+ ldreq r0, [r5]
+ ldreqh r1, [r0, #2]
+ mov r0, r5
+ bl FUN_020B5C88
+ ldrh r1, [r5, #8]
+ ldrh r2, [r7]
+ ldr r3, [sp, #8]
+ cmp r1, #0
+ ldrnesb r1, [r0]
+ ldrneb r0, [r0, #1]
+ addne r0, r1, r0
+ ldreqsb r0, [r0, #2]
+ sub r1, r8, r0
+ str r2, [sp]
+ mov r0, sl
+ mov r2, fp
+ add r1, sb, r1, asr #1
+ str r6, [sp, #4]
+ bl MOD13_0223A5F0
+ ldrh r1, [r7, #2]!
+ add sb, sb, r8
+ cmp r1, #0
+ bne _0223A564
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_0223A5E8: .word 0x022431A4
+_0223A5EC: .word 0x0000FFFF
+
+ arm_func_start MOD13_0223A5F0
+MOD13_0223A5F0: ; 0x0223A5F0
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldrh ip, [sp, #0x10]
+ str r3, [sp]
+ ldr r3, _0223A630 ; =0x022431A4
+ str ip, [sp, #4]
+ ldr lr, [r3]
+ ldr ip, [sp, #0x14]
+ mov r3, #0xc
+ mov r4, r1
+ mla r1, ip, r3, lr
+ mov r3, r2
+ mov r2, r4
+ bl FUN_020B63CC
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0223A630: .word 0x022431A4
+
+ arm_func_start MOD13_0223A634
+MOD13_0223A634: ; 0x0223A634
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldr lr, [sp, #0x10]
+ ldr ip, [sp, #0x14]
+ str lr, [sp]
+ add r0, r0, #0x20
+ str ip, [sp, #4]
+ bl FUN_020B7218
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_0223A65C
+MOD13_0223A65C: ; 0x0223A65C
+ ldr r2, _0223A67C ; =0x022431A4
+ ldr r1, _0223A680 ; =0x00000718
+ ldr r3, [r2]
+ mov r2, #0x38
+ add r1, r3, r1
+ mla r0, r2, r0, r1
+ ldr ip, _0223A684 ; =MOD13_0223A688
+ bx ip
+ .align 2, 0
+_0223A67C: .word 0x022431A4
+_0223A680: .word 0x00000718
+_0223A684: .word MOD13_0223A688
+
+ arm_func_start MOD13_0223A688
+MOD13_0223A688: ; 0x0223A688
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r1, [r4, #0x34]
+ mov r0, #1
+ bl MOD13_0223C104
+ ldr r1, _0223A70C ; =0x022431A4
+ ldr r0, _0223A710 ; =0x00000718
+ ldr r1, [r1]
+ add r0, r1, r0
+ cmp r4, r0
+ bne _0223A6DC
+ bl G2_GetBG0CharPtr
+ ldr r2, _0223A714 ; =0x0223F754
+ mov r1, r0
+ ldrh r3, [r2]
+ ldrh r2, [r2, #2]
+ mov r0, #0
+ mul r2, r3, r2
+ mov r2, r2, lsl #5
+ bl MIi_CpuClear16
+ b _0223A700
+_0223A6DC:
+ bl G2_GetBG0CharPtr
+ ldr r2, _0223A714 ; =0x0223F754
+ mov r1, r0
+ ldrh r3, [r2, #4]
+ ldrh r2, [r2, #6]
+ mov r0, #0
+ mul r2, r3, r2
+ mov r2, r2, lsl #5
+ bl MIi_CpuClear16
+_0223A700:
+ add r0, r4, #0x30
+ bl MOD13_0223AF90
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0223A70C: .word 0x022431A4
+_0223A710: .word 0x00000718
+_0223A714: .word 0x0223F754
+
+ arm_func_start MOD13_0223A718
+MOD13_0223A718: ; 0x0223A718
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r1
+ ldrb r0, [r4]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r1, _0223A7E0 ; =0x022431A4
+ ldr r0, _0223A7E4 ; =0x00000794
+ ldr r2, [r1]
+ add r0, r2, r0
+ cmp r4, r0
+ bne _0223A790
+ ldr r1, _0223A7E8 ; =0x0223F754
+ ldr r0, [r2, #0x748]
+ ldrh r2, [r1]
+ ldrh r1, [r1, #2]
+ mul r1, r2, r1
+ mov r5, r1, lsl #5
+ mov r1, r5
+ bl DC_FlushRange
+ ldr r1, _0223A7E0 ; =0x022431A4
+ ldr r0, _0223A7EC ; =0x0223F750
+ ldr r2, [r1]
+ ldrh r1, [r0]
+ ldr r0, [r2, #0x748]
+ mov r2, r5
+ mov r1, r1, lsl #5
+ bl GX_LoadBG0Char
+ b _0223A7D0
+_0223A790:
+ ldr r1, _0223A7E8 ; =0x0223F754
+ ldr r0, [r2, #0x780]
+ ldrh r2, [r1, #4]
+ ldrh r1, [r1, #6]
+ mul r1, r2, r1
+ mov r5, r1, lsl #5
+ mov r1, r5
+ bl DC_FlushRange
+ ldr r1, _0223A7E0 ; =0x022431A4
+ ldr r0, _0223A7EC ; =0x0223F750
+ ldr r2, [r1]
+ ldrh r1, [r0, #2]
+ ldr r0, [r2, #0x780]
+ mov r2, r5
+ mov r1, r1, lsl #5
+ bl GXS_LoadBG0Char
+_0223A7D0:
+ mov r0, #0
+ strb r0, [r4]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0223A7E0: .word 0x022431A4
+_0223A7E4: .word 0x00000794
+_0223A7E8: .word 0x0223F754
+_0223A7EC: .word 0x0223F750
+
+ arm_func_start MOD13_0223A7F0
+MOD13_0223A7F0: ; 0x0223A7F0
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #0x10
+ mov r8, r0
+ ldr r0, _0223A954 ; =0x022431A4
+ ldr r3, _0223A958 ; =0x0223F756
+ mov r4, r8, lsl #2
+ ldr r2, _0223A95C ; =0x0223F754
+ ldrh r5, [r3, r4]
+ ldrh r4, [r2, r4]
+ ldr r3, [r0]
+ ldr r0, _0223A960 ; =0x00000718
+ mul r2, r4, r5
+ mov r7, r1
+ add r1, r3, r0
+ mov r0, #0x38
+ mla r6, r8, r0, r1
+ mov r0, r2, lsl #5
+ mov r1, #0x20
+ bl MOD13_0223B004
+ str r0, [r6, #0x30]
+ cmp r8, #1
+ bne _0223A86C
+ ldr r1, _0223A964 ; =0x04001008
+ ldrh r0, [r1]
+ bic r0, r0, #0x40
+ strh r0, [r1]
+ ldrh r0, [r1]
+ and r0, r0, #0x43
+ orr r0, r0, #0xc00
+ strh r0, [r1]
+ b _0223A88C
+_0223A86C:
+ ldr r1, _0223A968 ; =0x04000008
+ ldrh r0, [r1]
+ bic r0, r0, #0x40
+ strh r0, [r1]
+ ldrh r0, [r1]
+ and r0, r0, #0x43
+ orr r0, r0, #0xc00
+ strh r0, [r1]
+_0223A88C:
+ mov r0, #4
+ str r0, [sp]
+ ldr r1, [r6, #0x30]
+ mov r0, r6
+ mov r2, r4
+ mov r3, r5
+ bl FUN_020B6388
+ ldr r1, _0223A954 ; =0x022431A4
+ mov r0, #0xc
+ ldr r2, [r1]
+ mov r1, #1
+ mla r0, r7, r0, r2
+ str r6, [r6, #0x20]
+ str r0, [r6, #0x24]
+ str r1, [r6, #0x28]
+ str r1, [r6, #0x2c]
+ cmp r8, #1
+ bne _0223A8DC
+ bl G2S_GetBG0ScrPtr
+ b _0223A8E0
+_0223A8DC:
+ bl G2_GetBG0ScrPtr
+_0223A8E0:
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #0x20
+ ldr r1, _0223A96C ; =0x0223F750
+ str r2, [sp, #4]
+ mov r2, r8, lsl #1
+ ldrh r7, [r1, r2]
+ mov r1, r4
+ mov r2, r5
+ str r7, [sp, #8]
+ mov r4, #0xf
+ str r4, [sp, #0xc]
+ bl FUN_020B6240
+ mov r0, r6
+ mov r1, #0
+ bl MOD13_0223A4D8
+ ldr r1, _0223A954 ; =0x022431A4
+ ldr r0, _0223A970 ; =0x00000794
+ ldr r2, [r1]
+ ldr r1, _0223A974 ; =MOD13_0223A718
+ add r0, r2, r0
+ add r2, r0, r8
+ mov r0, #1
+ mov r3, #0xc8
+ bl MOD13_0223C1C4
+ str r0, [r6, #0x34]
+ mov r0, r6
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_0223A954: .word 0x022431A4
+_0223A958: .word 0x0223F756
+_0223A95C: .word 0x0223F754
+_0223A960: .word 0x00000718
+_0223A964: .word 0x04001008
+_0223A968: .word 0x04000008
+_0223A96C: .word 0x0223F750
+_0223A970: .word 0x00000794
+_0223A974: .word MOD13_0223A718
+
+ arm_func_start MOD13_0223A978
+MOD13_0223A978: ; 0x0223A978
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ ldr r0, [r4, #0x30]
+ bl MOD13_0223BB20
+ ldr r0, _0223A9A0 ; =0x022431A4
+ mov r1, r4
+ ldr r0, [r0]
+ ldr r0, [r0, #0x788]
+ bl MOD13_02239FD0
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0223A9A0: .word 0x022431A4
+
+ arm_func_start MOD13_0223A9A4
+MOD13_0223A9A4: ; 0x0223A9A4
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ldr r4, _0223AA7C ; =0x022431A4
+ mov r7, r0
+ ldr r0, [r4]
+ mov r6, r1
+ ldr r0, [r0, #0x788]
+ mov r5, r2
+ mov r8, r3
+ bl MOD13_02239F78
+ mov r4, r0
+ strb r6, [r4, #0x36]
+ mul r1, r6, r5
+ mov r2, r8
+ strb r5, [r4, #0x37]
+ mov r0, r7
+ add r3, sp, #4
+ bl MOD13_0223BB68
+ str r0, [r4, #0x30]
+ ldr r1, [sp, #4]
+ mov r0, r6
+ strh r1, [r4, #0x34]
+ mov r1, r5
+ bl FUN_020B6180
+ ldr r1, [sp, #0x20]
+ cmp r7, #1
+ str r0, [r1]
+ moveq ip, #0x6600000
+ ldr r7, [sp, #4]
+ mov r1, #4
+ movne ip, #0x6400000
+ str r1, [sp]
+ mov r0, r4
+ mov r2, r6
+ mov r3, r5
+ add r1, ip, r7, lsl #7
+ bl FUN_020B62F8
+ ldr r2, [r4, #0x18]
+ mov r0, r4
+ mov r1, #0
+ blx r2
+ ldr r0, _0223AA7C ; =0x022431A4
+ ldr r1, [sp, #0x24]
+ ldr r2, [r0]
+ mov r0, #0xc
+ mla r0, r1, r0, r2
+ str r4, [r4, #0x20]
+ str r0, [r4, #0x24]
+ mov r1, #1
+ str r1, [r4, #0x28]
+ mov r0, r4
+ str r1, [r4, #0x2c]
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_0223AA7C: .word 0x022431A4
+
+ arm_func_start MOD13_0223AA80
+MOD13_0223AA80: ; 0x0223AA80
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r4, _0223AACC ; =0x022431A4
+ mov r5, #0
+_0223AA90:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #2
+ ldr r0, [r0, #0x78c]
+ bl MOD13_0223939C
+ add r5, r5, #1
+ cmp r5, #2
+ blt _0223AA90
+ ldr r0, _0223AACC ; =0x022431A4
+ ldr r0, [r0]
+ ldr r0, [r0, #0x788]
+ bl MOD13_0223A030
+ ldr r0, _0223AACC ; =0x022431A4
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0223AACC: .word 0x022431A4
+
+ arm_func_start MOD13_0223AAD0
+MOD13_0223AAD0: ; 0x0223AAD0
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
+ sub sp, sp, #4
+ ldr r0, _0223AB68 ; =0x00000798
+ mov r1, #4
+ bl MOD13_0223B004
+ mov r4, r0
+ ldr r3, _0223AB6C ; =0x022431A4
+ add r1, r4, #0x18
+ mov r0, #0x20
+ mov r2, #0x38
+ str r4, [r3]
+ bl MOD13_0223A054
+ ldr sb, _0223AB6C ; =0x022431A4
+ mov r8, #0
+ ldr r1, [sb]
+ mov r7, r8
+ str r0, [r1, #0x788]
+ ldr r6, _0223AB70 ; =0x02240A00
+ mov r5, r8
+ mov r4, #4
+_0223AB20:
+ ldr r0, [r6, r8, lsl #2]
+ mov r1, r5
+ mov r2, r4
+ bl MOD13_022393D8
+ ldr r1, [sb]
+ add r1, r1, r8, lsl #2
+ str r0, [r1, #0x78c]
+ ldr r2, [sb]
+ add r0, r2, r8, lsl #2
+ ldr r1, [r0, #0x78c]
+ add r0, r2, r7
+ bl FUN_020B5D3C
+ add r8, r8, #1
+ cmp r8, #2
+ add r7, r7, #0xc
+ blt _0223AB20
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
+ .align 2, 0
+_0223AB68: .word 0x00000798
+_0223AB6C: .word 0x022431A4
+_0223AB70: .word 0x02240A00
+
+ arm_func_start MOD13_0223AB74
+MOD13_0223AB74: ; 0x0223AB74
+ ldrh r3, [r0]
+ strh r3, [r2]
+ ldrh r3, [r0, #2]
+ strh r3, [r2, #2]
+ ldrh ip, [r0]
+ ldrh r3, [r1]
+ add r3, ip, r3
+ strh r3, [r2, #4]
+ ldrh r3, [r0, #2]
+ ldrh r0, [r1, #2]
+ add r0, r3, r0
+ strh r0, [r2, #6]
+ bx lr
+
+ arm_func_start MOD13_0223ABA8
+MOD13_0223ABA8: ; 0x0223ABA8
+ ldr ip, [sp]
+ strh r0, [ip]
+ strh r1, [ip, #2]
+ strh r2, [ip, #4]
+ strh r3, [ip, #6]
+ bx lr
+
+ arm_func_start MOD13_0223ABC0
+MOD13_0223ABC0: ; 0x0223ABC0
+ strh r0, [r2]
+ strh r1, [r2, #2]
+ bx lr
+
+ arm_func_start MOD13_0223ABCC
+MOD13_0223ABCC: ; 0x0223ABCC
+ cmp r1, #3
+ addls pc, pc, r1, lsl #2
+ bx lr
+_0223ABD8: ; jump table
+ b _0223ABE8 ; case 0
+ b _0223AC38 ; case 1
+ b _0223AC88 ; case 2
+ b _0223ACD8 ; case 3
+_0223ABE8:
+ cmp r0, #1
+ bne _0223AC14
+ ldr r0, _0223AD28 ; =0x04001048
+ cmp r3, #0
+ ldrh r0, [r0]
+ bic r0, r0, #0x3f
+ orr r1, r0, r2
+ ldr r0, _0223AD28 ; =0x04001048
+ orrne r1, r1, #0x20
+ strh r1, [r0]
+ bx lr
+_0223AC14:
+ ldr r0, _0223AD2C ; =0x04000048
+ cmp r3, #0
+ ldrh r0, [r0]
+ bic r0, r0, #0x3f
+ orr r1, r0, r2
+ ldr r0, _0223AD2C ; =0x04000048
+ orrne r1, r1, #0x20
+ strh r1, [r0]
+ bx lr
+_0223AC38:
+ cmp r0, #1
+ bne _0223AC64
+ ldr r0, _0223AD28 ; =0x04001048
+ cmp r3, #0
+ ldrh r0, [r0]
+ bic r0, r0, #0x3f00
+ orr r1, r0, r2, lsl #8
+ ldr r0, _0223AD28 ; =0x04001048
+ orrne r1, r1, #0x2000
+ strh r1, [r0]
+ bx lr
+_0223AC64:
+ ldr r0, _0223AD2C ; =0x04000048
+ cmp r3, #0
+ ldrh r0, [r0]
+ bic r0, r0, #0x3f00
+ orr r1, r0, r2, lsl #8
+ ldr r0, _0223AD2C ; =0x04000048
+ orrne r1, r1, #0x2000
+ strh r1, [r0]
+ bx lr
+_0223AC88:
+ cmp r0, #1
+ bne _0223ACB4
+ ldr r0, _0223AD30 ; =0x0400104A
+ cmp r3, #0
+ ldrh r0, [r0]
+ bic r0, r0, #0x3f00
+ orr r1, r0, r2, lsl #8
+ ldr r0, _0223AD30 ; =0x0400104A
+ orrne r1, r1, #0x2000
+ strh r1, [r0]
+ bx lr
+_0223ACB4:
+ ldr r0, _0223AD34 ; =0x0400004A
+ cmp r3, #0
+ ldrh r0, [r0]
+ bic r0, r0, #0x3f00
+ orr r1, r0, r2, lsl #8
+ ldr r0, _0223AD34 ; =0x0400004A
+ orrne r1, r1, #0x2000
+ strh r1, [r0]
+ bx lr
+_0223ACD8:
+ cmp r0, #1
+ bne _0223AD04
+ ldr r0, _0223AD30 ; =0x0400104A
+ cmp r3, #0
+ ldrh r0, [r0]
+ bic r0, r0, #0x3f
+ orr r1, r0, r2
+ ldr r0, _0223AD30 ; =0x0400104A
+ orrne r1, r1, #0x20
+ strh r1, [r0]
+ bx lr
+_0223AD04:
+ ldr r0, _0223AD34 ; =0x0400004A
+ cmp r3, #0
+ ldrh r0, [r0]
+ bic r0, r0, #0x3f
+ orr r1, r0, r2
+ ldr r0, _0223AD34 ; =0x0400004A
+ orrne r1, r1, #0x20
+ strh r1, [r0]
+ bx lr
+ .align 2, 0
+_0223AD28: .word 0x04001048
+_0223AD2C: .word 0x04000048
+_0223AD30: .word 0x0400104A
+_0223AD34: .word 0x0400004A
+
+ arm_func_start MOD13_0223AD38
+MOD13_0223AD38: ; 0x0223AD38
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r0, #1
+ bne _0223ADE0
+ cmp r1, #0
+ bne _0223AD98
+ ldrh r0, [r2]
+ ldrh r1, [r2, #4]
+ ldrh r3, [r2, #2]
+ ldrh lr, [r2, #6]
+ mov r2, r0, lsl #8
+ mov r0, r3, lsl #8
+ and r2, r2, #0xff00
+ and r1, r1, #0xff
+ orr ip, r2, r1
+ ldr r3, _0223AE78 ; =0x04001040
+ and r2, r0, #0xff00
+ and r1, lr, #0xff
+ ldr r0, _0223AE7C ; =0x04001044
+ strh ip, [r3]
+ orr r1, r2, r1
+ strh r1, [r0]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0223AD98:
+ ldrh r0, [r2]
+ ldrh r1, [r2, #4]
+ ldrh r3, [r2, #2]
+ ldrh lr, [r2, #6]
+ mov r2, r0, lsl #8
+ mov r0, r3, lsl #8
+ and r2, r2, #0xff00
+ and r1, r1, #0xff
+ orr ip, r2, r1
+ ldr r3, _0223AE80 ; =0x04001042
+ and r2, r0, #0xff00
+ and r1, lr, #0xff
+ ldr r0, _0223AE84 ; =0x04001046
+ strh ip, [r3]
+ orr r1, r2, r1
+ strh r1, [r0]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0223ADE0:
+ cmp r1, #0
+ bne _0223AE30
+ ldrh r0, [r2]
+ ldrh r1, [r2, #4]
+ ldrh r3, [r2, #2]
+ ldrh lr, [r2, #6]
+ mov r2, r0, lsl #8
+ mov r0, r3, lsl #8
+ and r2, r2, #0xff00
+ and r1, r1, #0xff
+ orr ip, r2, r1
+ ldr r3, _0223AE88 ; =0x04000040
+ and r2, r0, #0xff00
+ and r1, lr, #0xff
+ ldr r0, _0223AE8C ; =0x04000044
+ strh ip, [r3]
+ orr r1, r2, r1
+ strh r1, [r0]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0223AE30:
+ ldrh r0, [r2]
+ ldrh r3, [r2, #2]
+ ldrh r1, [r2, #4]
+ ldrh lr, [r2, #6]
+ mov r2, r0, lsl #8
+ mov r0, r3, lsl #8
+ and r2, r2, #0xff00
+ and r1, r1, #0xff
+ ldr r3, _0223AE90 ; =0x04000042
+ orr ip, r2, r1
+ and r2, r0, #0xff00
+ and r1, lr, #0xff
+ ldr r0, _0223AE94 ; =0x04000046
+ strh ip, [r3]
+ orr r1, r2, r1
+ strh r1, [r0]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223AE78: .word 0x04001040
+_0223AE7C: .word 0x04001044
+_0223AE80: .word 0x04001042
+_0223AE84: .word 0x04001046
+_0223AE88: .word 0x04000040
+_0223AE8C: .word 0x04000044
+_0223AE90: .word 0x04000042
+_0223AE94: .word 0x04000046
+
+ arm_func_start MOD13_0223AE98
+MOD13_0223AE98: ; 0x0223AE98
+ cmp r0, #1
+ bne _0223AEC8
+ ldr r3, _0223AEF0 ; =0x04001000
+ mvn r0, r1
+ ldr r2, [r3]
+ ldr r1, [r3]
+ and r2, r2, #0x1f00
+ bic r1, r1, #0x1f00
+ and r0, r0, r2, lsr #8
+ orr r0, r1, r0, lsl #8
+ str r0, [r3]
+ bx lr
+_0223AEC8:
+ mov r3, #0x4000000
+ ldr r0, [r3]
+ ldr r2, [r3]
+ and ip, r0, #0x1f00
+ mvn r0, r1
+ bic r1, r2, #0x1f00
+ and r0, r0, ip, lsr #8
+ orr r0, r1, r0, lsl #8
+ str r0, [r3]
+ bx lr
+ .align 2, 0
+_0223AEF0: .word 0x04001000
+
+ arm_func_start MOD13_0223AEF4
+MOD13_0223AEF4: ; 0x0223AEF4
+ cmp r0, #1
+ bne _0223AF20
+ ldr r3, _0223AF44 ; =0x04001000
+ ldr r2, [r3]
+ ldr r0, [r3]
+ and ip, r2, #0x1f00
+ bic r2, r0, #0x1f00
+ orr r0, r1, ip, lsr #8
+ orr r0, r2, r0, lsl #8
+ str r0, [r3]
+ bx lr
+_0223AF20:
+ mov r3, #0x4000000
+ ldr r2, [r3]
+ ldr r0, [r3]
+ and ip, r2, #0x1f00
+ bic r2, r0, #0x1f00
+ orr r0, r1, ip, lsr #8
+ orr r0, r2, r0, lsl #8
+ str r0, [r3]
+ bx lr
+ .align 2, 0
+_0223AF44: .word 0x04001000
+
+ arm_func_start MOD13_0223AF48
+MOD13_0223AF48: ; 0x0223AF48
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r0, #1
+ bl OS_DisableIrqMask
+ cmp r5, #0
+ mov r4, r0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r0, _0223AF8C ; =0x022431A8
+ mov r1, r5
+ ldr r0, [r0]
+ bl FUN_020ADDF0
+ mov r0, r4
+ bl OS_EnableIrqMask
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0223AF8C: .word 0x022431A8
+
+ arm_func_start MOD13_0223AF90
+MOD13_0223AF90: ; 0x0223AF90
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r0, #1
+ bl OS_DisableIrqMask
+ ldr r1, [r5]
+ mov r4, r0
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r0, _0223AFDC ; =0x022431A8
+ ldr r0, [r0]
+ bl FUN_020ADDF0
+ mov r0, r4
+ bl OS_EnableIrqMask
+ mov r0, #0
+ str r0, [r5]
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0223AFDC: .word 0x022431A8
+
+ arm_func_start MOD13_0223AFE0
+MOD13_0223AFE0: ; 0x0223AFE0
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ bl MOD13_0223B004
+ mov r2, r4
+ mov r1, #0
+ mov r4, r0
+ bl MI_CpuFill8
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+
+ arm_func_start MOD13_0223B004
+MOD13_0223B004: ; 0x0223B004
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r0, #1
+ mov r5, r1
+ bl OS_DisableIrqMask
+ ldr r1, _0223B04C ; =0x022431A8
+ mov r4, r0
+ ldr r0, [r1]
+ mov r1, r6
+ mov r2, r5
+ bl tempName_NNS_FndAllocFromExpHeapEx
+ movs r5, r0
+ bne _0223B03C
+ bl OS_Terminate
+_0223B03C:
+ mov r0, r4
+ bl OS_EnableIrqMask
+ mov r0, r5
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_0223B04C: .word 0x022431A8
+
+ arm_func_start MOD13_0223B050
+MOD13_0223B050: ; 0x0223B050
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0223B078 ; =0x022431A8
+ ldr r0, [r0]
+ bl thunk_FUN_020adc8c
+ ldr r0, _0223B078 ; =0x022431A8
+ mov r1, #0
+ str r1, [r0]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223B078: .word 0x022431A8
+
+ arm_func_start MOD13_0223B07C
+MOD13_0223B07C: ; 0x0223B07C
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r1, #0
+ mov r2, #0x40000
+ bl MI_CpuFill8
+ mov r0, r4
+ mov r1, #0x40000
+ mov r2, #0
+ bl tempName_NNS_FndCreateExpHeapEx
+ ldr r1, _0223B0B8 ; =0x022431A8
+ cmp r0, #0
+ str r0, [r1]
+ ldmneia sp!, {r4, pc}
+ bl OS_Terminate
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0223B0B8: .word 0x022431A8
+
+ arm_func_start MOD13_0223B0BC
+MOD13_0223B0BC: ; 0x0223B0BC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0223B144 ; =0x022431AC
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _0223B10C
+ ldr r0, _0223B148 ; =0x027FFFA8
+ ldrh r0, [r0]
+ and r0, r0, #0x8000
+ movs r0, r0, asr #0xf
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #1
+ bl PM_SetLCDPower
+ cmp r0, #0
+ ldrne r0, _0223B144 ; =0x022431AC
+ movne r1, #0
+ strneb r1, [r0]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+_0223B10C:
+ ldr r0, _0223B148 ; =0x027FFFA8
+ ldrh r0, [r0]
+ and r0, r0, #0x8000
+ movs r0, r0, asr #0xf
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0
+ bl PM_SetLCDPower
+ cmp r0, #0
+ ldrne r0, _0223B144 ; =0x022431AC
+ movne r1, #1
+ strneb r1, [r0]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223B144: .word 0x022431AC
+_0223B148: .word 0x027FFFA8
+
+ arm_func_start MOD13_0223B14C
+MOD13_0223B14C: ; 0x0223B14C
+ ldr r1, _0223B190 ; =0x022431B4
+ ldr r3, [r1]
+ ldrb r1, [r3, #0x38]
+ mov r1, r1, lsl #0x1f
+ movs r1, r1, lsr #0x1f
+ ldrneh r2, [r3, #0x28]
+ ldrneh r1, [r3, #0x2a]
+ strneh r2, [r0]
+ strneh r1, [r0, #2]
+ movne r0, #1
+ bxne lr
+ ldrh r2, [r3, #0x2c]
+ ldrh r1, [r3, #0x2e]
+ strh r2, [r0]
+ strh r1, [r0, #2]
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0223B190: .word 0x022431B4
+
+ arm_func_start MOD13_0223B194
+MOD13_0223B194: ; 0x0223B194
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ ldrh r1, [r0]
+ strh r1, [sp]
+ ldrh r1, [r0, #2]
+ strh r1, [sp, #2]
+ ldrh r2, [r0]
+ ldrh r1, [r0, #4]
+ add r1, r2, r1
+ strh r1, [sp, #4]
+ ldrh r2, [r0, #2]
+ ldrh r1, [r0, #6]
+ add r0, sp, #0
+ add r1, r2, r1
+ strh r1, [sp, #6]
+ bl MOD13_0223B2B4
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_0223B1DC
+MOD13_0223B1DC: ; 0x0223B1DC
+ ldr r1, _0223B244 ; =0x022431B4
+ ldr r3, [r1]
+ ldrb r1, [r3, #0x38]
+ mov r1, r1, lsl #0x1c
+ movs r1, r1, lsr #0x1f
+ moveq r0, #0
+ bxeq lr
+ ldrh r2, [r3, #0x28]
+ ldrh r1, [r0]
+ cmp r1, r2
+ movhi r0, #0
+ bxhi lr
+ ldrh r1, [r0, #4]
+ cmp r1, r2
+ movlo r0, #0
+ bxlo lr
+ ldrh r2, [r3, #0x2a]
+ ldrh r1, [r0, #2]
+ cmp r1, r2
+ movhi r0, #0
+ bxhi lr
+ ldrh r0, [r0, #6]
+ cmp r0, r2
+ movhs r0, #1
+ movlo r0, #0
+ bx lr
+ .align 2, 0
+_0223B244: .word 0x022431B4
+
+ arm_func_start MOD13_0223B248
+MOD13_0223B248: ; 0x0223B248
+ ldr r1, _0223B2B0 ; =0x022431B4
+ ldr r3, [r1]
+ ldrb r1, [r3, #0x38]
+ mov r1, r1, lsl #0x1d
+ movs r1, r1, lsr #0x1f
+ moveq r0, #0
+ bxeq lr
+ ldrh r2, [r3, #0x28]
+ ldrh r1, [r0]
+ cmp r1, r2
+ movhi r0, #0
+ bxhi lr
+ ldrh r1, [r0, #4]
+ cmp r1, r2
+ movlo r0, #0
+ bxlo lr
+ ldrh r2, [r3, #0x2a]
+ ldrh r1, [r0, #2]
+ cmp r1, r2
+ movhi r0, #0
+ bxhi lr
+ ldrh r0, [r0, #6]
+ cmp r0, r2
+ movhs r0, #1
+ movlo r0, #0
+ bx lr
+ .align 2, 0
+_0223B2B0: .word 0x022431B4
+
+ arm_func_start MOD13_0223B2B4
+MOD13_0223B2B4: ; 0x0223B2B4
+ ldr r1, _0223B31C ; =0x022431B4
+ ldr r3, [r1]
+ ldrb r1, [r3, #0x38]
+ mov r1, r1, lsl #0x1e
+ movs r1, r1, lsr #0x1f
+ moveq r0, #0
+ bxeq lr
+ ldrh r2, [r3, #0x28]
+ ldrh r1, [r0]
+ cmp r1, r2
+ movhi r0, #0
+ bxhi lr
+ ldrh r1, [r0, #4]
+ cmp r1, r2
+ movlo r0, #0
+ bxlo lr
+ ldrh r2, [r3, #0x2a]
+ ldrh r1, [r0, #2]
+ cmp r1, r2
+ movhi r0, #0
+ bxhi lr
+ ldrh r0, [r0, #6]
+ cmp r0, r2
+ movhs r0, #1
+ movlo r0, #0
+ bx lr
+ .align 2, 0
+_0223B31C: .word 0x022431B4
+
+ arm_func_start MOD13_0223B320
+MOD13_0223B320: ; 0x0223B320
+ ldr r1, _0223B388 ; =0x022431B4
+ ldr r3, [r1]
+ ldrb r1, [r3, #0x38]
+ mov r1, r1, lsl #0x1f
+ movs r1, r1, lsr #0x1f
+ moveq r0, #0
+ bxeq lr
+ ldrh r2, [r3, #0x28]
+ ldrh r1, [r0]
+ cmp r1, r2
+ movhi r0, #0
+ bxhi lr
+ ldrh r1, [r0, #4]
+ cmp r1, r2
+ movlo r0, #0
+ bxlo lr
+ ldrh r2, [r3, #0x2a]
+ ldrh r1, [r0, #2]
+ cmp r1, r2
+ movhi r0, #0
+ bxhi lr
+ ldrh r0, [r0, #6]
+ cmp r0, r2
+ movhs r0, #1
+ movlo r0, #0
+ bx lr
+ .align 2, 0
+_0223B388: .word 0x022431B4
+
+ arm_func_start MOD13_0223B38C
+MOD13_0223B38C: ; 0x0223B38C
+ ldr r1, _0223B3AC ; =0x022431B4
+ ldr r1, [r1]
+ ldrh r1, [r1, #0x36]
+ and r1, r0, r1
+ cmp r0, r1
+ moveq r0, #1
+ movne r0, #0
+ bx lr
+ .align 2, 0
+_0223B3AC: .word 0x022431B4
+
+ arm_func_start MOD13_0223B3B0
+MOD13_0223B3B0: ; 0x0223B3B0
+ ldr r1, _0223B3D0 ; =0x022431B4
+ ldr r1, [r1]
+ ldrh r1, [r1, #0x34]
+ and r1, r0, r1
+ cmp r0, r1
+ moveq r0, #1
+ movne r0, #0
+ bx lr
+ .align 2, 0
+_0223B3D0: .word 0x022431B4
+
+ arm_func_start MOD13_0223B3D4
+MOD13_0223B3D4: ; 0x0223B3D4
+ ldr r1, _0223B3F4 ; =0x022431B4
+ ldr r1, [r1]
+ ldrh r1, [r1, #0x32]
+ and r1, r0, r1
+ cmp r0, r1
+ moveq r0, #1
+ movne r0, #0
+ bx lr
+ .align 2, 0
+_0223B3F4: .word 0x022431B4
+
+ arm_func_start MOD13_0223B3F8
+MOD13_0223B3F8: ; 0x0223B3F8
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ sub sp, sp, #8
+ ldr r0, _0223B598 ; =0x022431B4
+ mov r4, #0
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x38]
+ mov r0, r0, lsl #0x1f
+ movs r0, r0, lsr #0x1f
+ movne r6, #1
+ moveq r6, #0
+ bl TP_GetLatestIndexInAuto
+ ldr r7, _0223B598 ; =0x022431B4
+ mov r5, r4
+ ldr r3, [r7]
+ mov r8, #5
+ ldrh r2, [r3, #0x28]
+ ldrh r1, [r3, #0x2a]
+ strh r2, [r3, #0x2c]
+ strh r1, [r3, #0x2e]
+_0223B444:
+ ldr r1, [r7]
+ add r1, r1, r0, lsl #3
+ ldrh r2, [r1, #4]
+ cmp r2, #1
+ bne _0223B48C
+ ldrh r2, [r1, #6]
+ cmp r2, #0
+ bne _0223B48C
+ add r0, sp, #0
+ mov r4, #1
+ bl TP_GetCalibratedPoint
+ ldr r1, _0223B598 ; =0x022431B4
+ ldrh r0, [sp]
+ ldr r2, [r1]
+ ldrh r1, [sp, #2]
+ add r2, r2, #0x28
+ bl MOD13_0223ABC0
+ b _0223B4A4
+_0223B48C:
+ mov r1, r8
+ add r5, r5, #1
+ add r0, r0, #4
+ bl FX_ModS32
+ cmp r5, #4
+ blt _0223B444
+_0223B4A4:
+ ldr r1, _0223B598 ; =0x022431B4
+ eor r7, r4, r6
+ ldr r5, [r1]
+ and r0, r4, r7
+ ldrb r3, [r5, #0x38]
+ and r2, r0, #0xff
+ and r0, r6, r7
+ bic r3, r3, #2
+ and r2, r2, #1
+ orr r2, r3, r2, lsl #1
+ strb r2, [r5, #0x38]
+ ldr r5, [r1]
+ and r0, r0, #0xff
+ ldrb r3, [r5, #0x38]
+ and r2, r0, #1
+ cmp r4, #0
+ bic r3, r3, #8
+ orr r2, r3, r2, lsl #3
+ strb r2, [r5, #0x38]
+ ldr r3, [r1]
+ and r0, r4, #1
+ ldrb r2, [r3, #0x38]
+ addeq sp, sp, #8
+ bic r2, r2, #1
+ orr r0, r2, r0
+ strb r0, [r3, #0x38]
+ ldr r3, [r1]
+ moveq r1, #0
+ ldrb r2, [r3, #0x38]
+ mov r0, r2, lsl #0x1e
+ mov r0, r0, lsr #0x1f
+ bic r2, r2, #4
+ and r0, r0, #1
+ orr r0, r2, r0, lsl #2
+ strb r0, [r3, #0x38]
+ ldreq r0, _0223B59C ; =0x022431B0
+ streqb r1, [r0]
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ ldr r0, _0223B59C ; =0x022431B0
+ ldrb r2, [r0]
+ add r2, r2, #1
+ strb r2, [r0]
+ ldrb r2, [r0]
+ cmp r2, #0x28
+ ldreq r1, [r1]
+ addeq sp, sp, #8
+ ldreqb r0, [r1, #0x38]
+ orreq r0, r0, #4
+ streqb r0, [r1, #0x38]
+ ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
+ cmp r2, #0x2f
+ addne sp, sp, #8
+ ldmneia sp!, {r4, r5, r6, r7, r8, pc}
+ ldr r3, [r1]
+ mov r1, #0x28
+ ldrb r2, [r3, #0x38]
+ orr r2, r2, #4
+ strb r2, [r3, #0x38]
+ strb r1, [r0]
+ add sp, sp, #8
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_0223B598: .word 0x022431B4
+_0223B59C: .word 0x022431B0
+
+ arm_func_start MOD13_0223B5A0
+MOD13_0223B5A0: ; 0x0223B5A0
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r1, _0223B694 ; =0x04000130
+ ldr r0, _0223B698 ; =0x027FFFA8
+ ldrh r2, [r1]
+ ldrh r1, [r0]
+ ldr r4, _0223B69C ; =0x022431B4
+ ldr r0, _0223B6A0 ; =0x00002FFF
+ ldr r5, [r4]
+ orr r1, r2, r1
+ eor r1, r1, r0
+ and r0, r1, r0
+ mov r0, r0, lsl #0x10
+ ldrh r1, [r5, #0x30]
+ mov r3, r0, lsr #0x10
+ ldr ip, _0223B6A4 ; =0x022431B8
+ eor r1, r1, r0, lsr #16
+ and r1, r1, r0, lsr #16
+ strh r1, [r5, #0x32]
+ ldrh r2, [r5, #0x30]
+ ldr r1, [r4]
+ mov lr, #0
+ eor r0, r2, r0, lsr #16
+ and r0, r2, r0
+ strh r0, [r1, #0x36]
+ ldr r0, [r4]
+ strh r3, [r0, #0x30]
+ ldr r1, [r4]
+ ldrh r0, [r1, #0x32]
+ strh r0, [r1, #0x34]
+ mov r0, lr
+ mov r5, #0x28
+ mov r2, #1
+_0223B624:
+ mov r1, r2, lsl lr
+ mov r1, r1, lsl #0x10
+ mov r1, r1, lsr #0x10
+ ands r6, r3, r1
+ streqb r0, [ip]
+ beq _0223B67C
+ ldrb r6, [ip]
+ add r6, r6, #1
+ strb r6, [ip]
+ ldrb r6, [ip]
+ cmp r6, #0x28
+ ldreq r7, [r4]
+ ldreqh r6, [r7, #0x34]
+ orreq r1, r6, r1
+ streqh r1, [r7, #0x34]
+ beq _0223B67C
+ cmp r6, #0x2f
+ ldreq r7, [r4]
+ ldreqh r6, [r7, #0x34]
+ orreq r1, r6, r1
+ streqh r1, [r7, #0x34]
+ streqb r5, [ip]
+_0223B67C:
+ add lr, lr, #1
+ cmp lr, #0xe
+ add ip, ip, #1
+ blt _0223B624
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223B694: .word 0x04000130
+_0223B698: .word 0x027FFFA8
+_0223B69C: .word 0x022431B4
+_0223B6A0: .word 0x00002FFF
+_0223B6A4: .word 0x022431B8
+
+ arm_func_start MOD13_0223B6A8
+MOD13_0223B6A8: ; 0x0223B6A8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD13_0223B5A0
+ bl MOD13_0223B3F8
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_0223B6C0
+MOD13_0223B6C0: ; 0x0223B6C0
+ stmdb sp!, {r4, lr}
+ mov r4, #4
+_0223B6C8:
+ bl TP_RequestAutoSamplingStopAsync
+ mov r0, r4
+ bl TP_WaitBusy
+ mov r0, r4
+ bl TP_CheckError
+ cmp r0, #0
+ bne _0223B6C8
+ ldr r0, _0223B6F0 ; =0x022431B4
+ bl MOD13_0223AF90
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_0223B6F0: .word 0x022431B4
+
+ arm_func_start MOD13_0223B6F4
+MOD13_0223B6F4: ; 0x0223B6F4
+ stmdb sp!, {lr}
+ sub sp, sp, #0xc
+ mov r0, #0x3a
+ mov r1, #4
+ bl MOD13_0223AFE0
+ ldr r1, _0223B76C ; =0x022431B4
+ str r0, [r1]
+ add r0, sp, #0
+ bl TP_GetUserInfo
+ cmp r0, #0
+ bne _0223B724
+ bl OS_Terminate
+_0223B724:
+ add r0, sp, #0
+ bl TP_SetCalibrateParam
+ ldr r1, _0223B76C ; =0x022431B4
+ mov r0, #0
+ ldr r2, [r1]
+ mov r1, #4
+ mov r3, #5
+ bl TP_RequestAutoSamplingStartAsync
+ mov r0, #2
+ bl TP_WaitBusy
+ mov r0, #2
+ bl TP_CheckError
+ cmp r0, #0
+ beq _0223B760
+ bl OS_Terminate
+_0223B760:
+ bl MOD13_0223B6A8
+ add sp, sp, #0xc
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223B76C: .word 0x022431B4
+
+ arm_func_start MOD13_0223B770
+MOD13_0223B770: ; 0x0223B770
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #1
+ bl MOD13_0223C1E0
+ ldr r0, _0223B79C ; =0x027E0000
+ add r0, r0, #0x3000
+ ldr r1, [r0, #0xff8]
+ orr r1, r1, #1
+ str r1, [r0, #0xff8]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223B79C: .word 0x027E0000
+
+ arm_func_start MOD13_0223B7A0
+MOD13_0223B7A0: ; 0x0223B7A0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, _0223B7DC ; =0x04000208
+ mov r1, #0
+ ldrh r0, [r2]
+ ldr r0, _0223B7E0 ; =0x022431CC
+ strh r1, [r2]
+ ldr r0, [r0]
+ bl OS_SetIrqMask
+ ldr r1, _0223B7E4 ; =0x022431C8
+ mov r0, #1
+ ldr r1, [r1]
+ bl OS_SetIrqFunction
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223B7DC: .word 0x04000208
+_0223B7E0: .word 0x022431CC
+_0223B7E4: .word 0x022431C8
+
+ arm_func_start MOD13_0223B7E8
+MOD13_0223B7E8: ; 0x0223B7E8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0223B850 ; =0x04000210
+ ldr r1, _0223B854 ; =0x022431CC
+ ldr r2, [r0]
+ ldr r0, _0223B858 ; =0x00040018
+ str r2, [r1]
+ bl OS_SetIrqMask
+ mov r0, #1
+ bl OS_EnableIrqMask
+ mov r0, #1
+ bl OS_GetIrqFunction
+ ldr r2, _0223B85C ; =0x022431C8
+ ldr r1, _0223B860 ; =MOD13_0223B770
+ str r0, [r2]
+ mov r0, #1
+ bl OS_SetIrqFunction
+ mov r0, #1
+ bl OS_ResetRequestIrqMask
+ ldr r2, _0223B864 ; =0x04000208
+ mov r0, #1
+ ldrh r1, [r2]
+ strh r0, [r2]
+ bl OS_EnableInterrupts
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223B850: .word 0x04000210
+_0223B854: .word 0x022431CC
+_0223B858: .word 0x00040018
+_0223B85C: .word 0x022431C8
+_0223B860: .word MOD13_0223B770
+_0223B864: .word 0x04000208
+
+ arm_func_start MOD13_0223B868
+MOD13_0223B868: ; 0x0223B868
+ ldr ip, _0223B874 ; =MOD13_0223B888
+ ldr r0, [r0, #4]
+ bx ip
+ .align 2, 0
+_0223B874: .word MOD13_0223B888
+
+ arm_func_start MOD13_0223B878
+MOD13_0223B878: ; 0x0223B878
+ ldr ip, _0223B884 ; =MOD13_0223B888
+ add r0, r0, #8
+ bx ip
+ .align 2, 0
+_0223B884: .word MOD13_0223B888
+
+ arm_func_start MOD13_0223B888
+MOD13_0223B888: ; 0x0223B888
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r0, #1
+ mov r4, r1
+ bl OS_DisableIrqMask
+ ldr r1, [r5]
+ str r4, [r1, #4]
+ ldr r1, [r5]
+ str r1, [r4]
+ str r5, [r4, #4]
+ str r4, [r5]
+ bl OS_EnableIrqMask
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+
+ arm_func_start MOD13_0223B8C4
+MOD13_0223B8C4: ; 0x0223B8C4
+ stmdb sp!, {r4, lr}
+ mov r4, r0
+ mov r0, #1
+ bl OS_DisableIrqMask
+ ldr r3, [r4, #4]
+ ldr r2, [r4]
+ mov r1, #0
+ str r3, [r2, #4]
+ ldr r3, [r4]
+ ldr r2, [r4, #4]
+ str r3, [r2]
+ str r1, [r4, #4]
+ ldr r1, [r4, #4]
+ str r1, [r4]
+ bl OS_EnableIrqMask
+ ldmia sp!, {r4, pc}
+
+ arm_func_start MOD13_0223B904
+MOD13_0223B904: ; 0x0223B904
+ stmdb sp!, {r0, r1, r2, r3}
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ add r0, sp, #8
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {lr}
+ add sp, sp, #0x10
+ bx lr
+
+ arm_func_start MOD13_0223B928
+MOD13_0223B928: ; 0x0223B928
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov r0, #0x10
+ mov r1, #4
+ bl MOD13_0223B004
+ mov r2, #0
+ str r2, [r0]
+ add r1, r0, #8
+ str r1, [r0, #4]
+ str r0, [r0, #8]
+ str r2, [r0, #0xc]
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_0223B95C
+MOD13_0223B95C: ; 0x0223B95C
+ ldr r2, _0223B970 ; =0x022431D0
+ ldr r2, [r2]
+ add r0, r2, r0, lsl #10
+ add r0, r0, r1, lsl #3
+ bx lr
+ .align 2, 0
+_0223B970: .word 0x022431D0
+
+ arm_func_start MOD13_0223B974
+MOD13_0223B974: ; 0x0223B974
+ mov r1, r0
+ ldr r3, [r1]
+ ldr r0, _0223B9B4 ; =0xC1FFFCFF
+ ldr r2, _0223B9B8 ; =0x022431D0
+ and r0, r3, r0
+ orr r0, r0, #0x200
+ str r0, [r1]
+ ldr r2, [r2]
+ mov r3, #0
+ add r0, r2, #0x400
+ cmp r1, r0
+ movhs r3, #1
+ add r0, r2, r3, lsl #2
+ ldr ip, _0223B9BC ; =MOD13_02239FD0
+ ldr r0, [r0, #0x800]
+ bx ip
+ .align 2, 0
+_0223B9B4: .word 0xC1FFFCFF
+_0223B9B8: .word 0x022431D0
+_0223B9BC: .word MOD13_02239FD0
+
+ arm_func_start MOD13_0223B9C0
+MOD13_0223B9C0: ; 0x0223B9C0
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _0223BA00 ; =0x022431D0
+ mov r5, r1
+ ldr r1, [r2]
+ add r0, r1, r0, lsl #2
+ ldr r0, [r0, #0x800]
+ bl MOD13_02239F78
+ mov r4, r0
+ mov r0, r5
+ mov r1, r4
+ mov r2, #8
+ bl MIi_CpuCopy32
+ mov r0, r4
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0223BA00: .word 0x022431D0
+
+ arm_func_start MOD13_0223BA04
+MOD13_0223BA04: ; 0x0223BA04
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _0223BA30 ; =0x022431D0
+ mov r0, #1
+ ldr r1, [r1]
+ ldr r1, [r1, #0x808]
+ bl MOD13_0223C104
+ ldr r0, _0223BA30 ; =0x022431D0
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223BA30: .word 0x022431D0
+
+ arm_func_start MOD13_0223BA34
+MOD13_0223BA34: ; 0x0223BA34
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0223BA80 ; =0x022431D0
+ mov r1, #0x800
+ ldr r0, [r0]
+ bl DC_FlushRange
+ ldr r0, _0223BA80 ; =0x022431D0
+ mov r1, #0
+ ldr r0, [r0]
+ mov r2, #0x400
+ bl GX_LoadOAM
+ ldr r0, _0223BA80 ; =0x022431D0
+ mov r1, #0
+ ldr r0, [r0]
+ mov r2, #0x400
+ add r0, r0, #0x400
+ bl GXS_LoadOAM
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223BA80: .word 0x022431D0
+
+ arm_func_start MOD13_0223BA84
+MOD13_0223BA84: ; 0x0223BA84
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ ldr r0, _0223BB14 ; =0x0000080C
+ mov r1, #4
+ bl MOD13_0223B004
+ mov r1, r0
+ ldr r3, _0223BB18 ; =0x022431D0
+ mov r0, #0x200
+ mov r2, #0x800
+ str r1, [r3]
+ bl MIi_CpuClearFast
+ mov r6, #0
+ mov r5, r6
+ ldr r7, _0223BB18 ; =0x022431D0
+ mov r4, #0x40
+ mov r8, #8
+_0223BAC0:
+ ldr r1, [r7]
+ mov r0, r4
+ mov r2, r8
+ add r1, r1, r5
+ bl MOD13_0223A054
+ ldr r1, [r7]
+ add r5, r5, #0x400
+ add r1, r1, r6, lsl #2
+ add r6, r6, #1
+ str r0, [r1, #0x800]
+ cmp r6, #2
+ blt _0223BAC0
+ ldr r1, _0223BB1C ; =MOD13_0223BA34
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0xc8
+ bl MOD13_0223C1C4
+ ldr r1, _0223BB18 ; =0x022431D0
+ ldr r1, [r1]
+ str r0, [r1, #0x808]
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_0223BB14: .word 0x0000080C
+_0223BB18: .word 0x022431D0
+_0223BB1C: .word MOD13_0223BA34
+
+ arm_func_start MOD13_0223BB20
+MOD13_0223BB20: ; 0x0223BB20
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r5, r0
+ mov r4, #0
+ bl MOD13_0223B8C4
+ ldr r0, _0223BB64 ; =0x022431D4
+ ldr r1, [r0]
+ add r0, r1, #0x1a0
+ cmp r5, r0
+ movhs r4, #1
+ mov r0, #0x1a0
+ mla r0, r4, r0, r1
+ ldr r0, [r0, #0x19c]
+ mov r1, r5
+ bl MOD13_02239FD0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0223BB64: .word 0x022431D4
+
+ arm_func_start MOD13_0223BB68
+MOD13_0223BB68: ; 0x0223BB68
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ mov r6, r0
+ mov r0, #0x1a0
+ mul r7, r6, r0
+ ldr r0, _0223BCE0 ; =0x022431D4
+ mov r4, r1
+ ldr r0, [r0]
+ mov sl, r2
+ add r0, r0, r7
+ ldr r0, [r0, #0x19c]
+ mov r5, r3
+ bl MOD13_02239F78
+ add r1, r4, #3
+ bic r1, r1, #3
+ mov r4, r0
+ mov r8, r1, asr #2
+ mov r0, #1
+ strh r8, [r4, #0xa]
+ bl OS_DisableIrqMask
+ mov sb, r0
+ cmp sl, #0
+ beq _0223BC44
+ ldr r1, _0223BCE0 ; =0x022431D4
+ mov r0, #0x1a0
+ ldr r1, [r1]
+ mla r0, r6, r0, r1
+ add r6, r0, #0x180
+ add r0, r0, #0x18c
+ cmp r6, r0
+ beq _0223BC24
+ add r0, r1, r7
+ add r1, r0, #0x18c
+_0223BBE8:
+ ldr r0, [r6, #4]
+ ldrh sl, [r6, #8]
+ ldrh r3, [r6, #0xa]
+ ldrh r2, [r0, #8]
+ add sl, sl, r3
+ add r3, sl, r8
+ cmp r3, r2
+ bgt _0223BC18
+ mov r1, r4
+ strh sl, [r4, #8]
+ bl MOD13_0223B888
+ b _0223BC24
+_0223BC18:
+ mov r6, r0
+ cmp r0, r1
+ bne _0223BBE8
+_0223BC24:
+ ldr r0, _0223BCE0 ; =0x022431D4
+ ldr r0, [r0]
+ add r0, r0, r7
+ add r0, r0, #0x18c
+ cmp r6, r0
+ bne _0223BCC8
+ bl OS_Terminate
+ b _0223BCC8
+_0223BC44:
+ ldr r1, _0223BCE0 ; =0x022431D4
+ mov r0, #0x1a0
+ ldr r1, [r1]
+ mla r0, r6, r0, r1
+ add r6, r0, #0x18c
+ add r0, r0, #0x180
+ cmp r6, r0
+ beq _0223BCAC
+ add r0, r1, r7
+ add r0, r0, #0x180
+_0223BC6C:
+ ldr sl, [r6]
+ ldrh r3, [r6, #8]
+ ldrh r2, [sl, #8]
+ ldrh r1, [sl, #0xa]
+ sub r3, r3, r8
+ add r1, r2, r1
+ cmp r3, r1
+ blt _0223BCA0
+ mov r0, r6
+ mov r1, r4
+ strh r3, [r4, #8]
+ bl MOD13_0223B888
+ b _0223BCAC
+_0223BCA0:
+ mov r6, sl
+ cmp sl, r0
+ bne _0223BC6C
+_0223BCAC:
+ ldr r0, _0223BCE0 ; =0x022431D4
+ ldr r0, [r0]
+ add r0, r0, r7
+ add r0, r0, #0x180
+ cmp r6, r0
+ bne _0223BCC8
+ bl OS_Terminate
+_0223BCC8:
+ ldrh r1, [r4, #8]
+ mov r0, sb
+ str r1, [r5]
+ bl OS_EnableIrqMask
+ mov r0, r4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_0223BCE0: .word 0x022431D4
+
+ arm_func_start MOD13_0223BCE4
+MOD13_0223BCE4: ; 0x0223BCE4
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
+ mov r0, #0x340
+ mov r1, #4
+ bl MOD13_0223AFE0
+ ldr r4, _0223BDA0 ; =0x022431D4
+ mov sl, #0
+ mov sb, sl
+ str r0, [r4]
+ mov r8, #0x20
+ mov r7, #0xc
+ mov r6, #0x300
+ mov r5, #0x400
+_0223BD14:
+ ldr r1, [r4]
+ mov r0, r8
+ mov r2, r7
+ add r1, r1, sb
+ bl MOD13_0223A054
+ ldr r1, [r4]
+ add r1, r1, sb
+ str r0, [r1, #0x19c]
+ bl MOD13_0223B928
+ ldr r1, [r4]
+ add r1, r1, sb
+ str r0, [r1, #0x198]
+ ldr r0, [r4]
+ add r0, r0, sb
+ add r0, r0, #0x100
+ strh r6, [r0, #0x88]
+ ldr r0, [r4]
+ add r0, r0, sb
+ add r0, r0, #0x100
+ strh r5, [r0, #0x94]
+ ldr r0, [r4]
+ add r1, r0, sb
+ ldr r0, [r1, #0x198]
+ add r1, r1, #0x180
+ bl MOD13_0223B868
+ ldr r0, [r4]
+ add r1, r0, sb
+ ldr r0, [r1, #0x198]
+ add r1, r1, #0x18c
+ bl MOD13_0223B878
+ add sl, sl, #1
+ cmp sl, #2
+ add sb, sb, #0x1a0
+ blt _0223BD14
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
+ .align 2, 0
+_0223BDA0: .word 0x022431D4
+
+ arm_func_start MOD13_0223BDA4
+MOD13_0223BDA4: ; 0x0223BDA4
+ cmp r1, #0
+ mov r3, #0
+ ble _0223BDC8
+_0223BDB0:
+ ldrb r2, [r0, r3]
+ cmp r2, #0
+ beq _0223BDC8
+ add r3, r3, #1
+ cmp r3, r1
+ blt _0223BDB0
+_0223BDC8:
+ mov r0, r3
+ bx lr
+
+ arm_func_start MOD13_0223BDD0
+MOD13_0223BDD0: ; 0x0223BDD0
+ ldr ip, _0223BDDC ; =0x020D4CAC
+ mov r0, #1
+ bx ip
+ .align 2, 0
+_0223BDDC: .word 0x020D4CAC
+
+ arm_func_start MOD13_0223BDE0
+MOD13_0223BDE0: ; 0x0223BDE0
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ add r0, sp, #0
+ bl PM_GetLEDPattern
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, [sp]
+ cmp r0, #0xf
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #0xf
+ bl PMi_SendLEDPatternCommand
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_0223BE1C
+MOD13_0223BE1C: ; 0x0223BE1C
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _0223BE98 ; =0x000001F3
+ bl GX_SetBankForLCDC
+ mov r0, #0
+ mov r1, #0x6800000
+ mov r2, #0x40000
+ bl MIi_CpuClearFast
+ ldr r1, _0223BE9C ; =0x06880000
+ mov r0, #0
+ mov r2, #0x24000
+ bl MIi_CpuClearFast
+ bl GX_DisableBankForLCDC
+ mov r0, #0x200
+ mov r1, #0x7000000
+ mov r2, #0x400
+ bl MIi_CpuClearFast
+ mov r0, #0
+ mov r1, #0x5000000
+ mov r2, #0x400
+ bl MIi_CpuClearFast
+ mov r0, #0x200
+ ldr r1, _0223BEA0 ; =0x07000400
+ mov r2, #0x400
+ bl MIi_CpuClearFast
+ mov r0, #0
+ ldr r1, _0223BEA4 ; =0x05000400
+ mov r2, #0x400
+ bl MIi_CpuClearFast
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223BE98: .word 0x000001F3
+_0223BE9C: .word 0x06880000
+_0223BEA0: .word 0x07000400
+_0223BEA4: .word 0x05000400
+
+ arm_func_start MOD13_0223BEA8
+MOD13_0223BEA8: ; 0x0223BEA8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl disableBankForX_
+ bl GX_DisableBankForOBJExtPltt_2
+ bl GX_DisableBankForSubBGExtPltt
+ bl GX_DisableBankForSubOBJExtPltt_2
+ bl MOD13_0223BE1C
+ ldr r0, _0223BFB8 ; =0x022431D8
+ ldr r0, [r0]
+ bl GX_SetBankForBG
+ ldr r0, _0223BFB8 ; =0x022431D8
+ ldr r0, [r0, #4]
+ bl GX_SetBankForOBJ
+ ldr r0, _0223BFB8 ; =0x022431D8
+ ldr r0, [r0, #8]
+ bl GX_SetBankForBGExtPltt
+ ldr r0, _0223BFB8 ; =0x022431D8
+ ldr r0, [r0, #0xc]
+ bl GX_SetBankForOBJExtPltt
+ ldr r0, _0223BFB8 ; =0x022431D8
+ ldr r0, [r0, #0x10]
+ bl GX_SetBankForTex
+ ldr r0, _0223BFB8 ; =0x022431D8
+ ldr r0, [r0, #0x14]
+ bl GX_SetBankForTexPltt
+ ldr r0, _0223BFB8 ; =0x022431D8
+ ldr r0, [r0, #0x18]
+ bl GX_SetBankForClearImage
+ ldr r0, _0223BFB8 ; =0x022431D8
+ ldr r0, [r0, #0x1c]
+ bl GX_SetBankForSubBG
+ ldr r0, _0223BFB8 ; =0x022431D8
+ ldr r0, [r0, #0x20]
+ bl GX_SetBankForSubOBJ
+ ldr r0, _0223BFB8 ; =0x022431D8
+ ldr r0, [r0, #0x24]
+ bl GX_SetBankForSubBGExtPltt
+ ldr r0, _0223BFB8 ; =0x022431D8
+ ldr r0, [r0, #0x28]
+ bl GX_SetBankForSubOBJExtPltt
+ ldr r0, _0223BFB8 ; =0x022431D8
+ ldr r0, [r0, #0x30]
+ bl GX_SetBankForLCDC
+ mov r2, #0
+ ldr r1, _0223BFBC ; =0x04000050
+ ldr r0, _0223BFC0 ; =0x04001050
+ strh r2, [r1]
+ strh r2, [r0]
+ ldr r1, _0223BFC4 ; =0x04000010
+ ldr r0, _0223BFC8 ; =0x04000014
+ str r2, [r1]
+ str r2, [r0]
+ ldr r1, _0223BFCC ; =0x04000018
+ ldr r0, _0223BFD0 ; =0x0400001C
+ str r2, [r1]
+ str r2, [r0]
+ ldr r1, _0223BFD4 ; =0x04001010
+ ldr r0, _0223BFD8 ; =0x04001014
+ str r2, [r1]
+ str r2, [r0]
+ ldr r1, _0223BFDC ; =0x04001018
+ ldr r0, _0223BFE0 ; =0x0400101C
+ str r2, [r1]
+ str r2, [r0]
+ mov r0, #1
+ bl PM_SetLCDPower
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223BFB8: .word 0x022431D8
+_0223BFBC: .word 0x04000050
+_0223BFC0: .word 0x04001050
+_0223BFC4: .word 0x04000010
+_0223BFC8: .word 0x04000014
+_0223BFCC: .word 0x04000018
+_0223BFD0: .word 0x0400001C
+_0223BFD4: .word 0x04001010
+_0223BFD8: .word 0x04001014
+_0223BFDC: .word 0x04001018
+_0223BFE0: .word 0x0400101C
+
+ arm_func_start MOD13_0223BFE4
+MOD13_0223BFE4: ; 0x0223BFE4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl disableBankForX_
+ ldr r1, _0223C09C ; =0x022431D8
+ str r0, [r1]
+ bl GX_DisableBankForOBJExtPltt_2
+ ldr r1, _0223C09C ; =0x022431D8
+ str r0, [r1, #4]
+ bl GX_DisableBankForBGExtPltt
+ ldr r1, _0223C09C ; =0x022431D8
+ str r0, [r1, #8]
+ bl GX_DisableBankForOBJExtPltt
+ ldr r1, _0223C09C ; =0x022431D8
+ str r0, [r1, #0xc]
+ bl GX_DisableBankForTexPltt_2
+ ldr r1, _0223C09C ; =0x022431D8
+ str r0, [r1, #0x10]
+ bl GX_DisableBankForTexPltt
+ ldr r1, _0223C09C ; =0x022431D8
+ str r0, [r1, #0x14]
+ bl GX_DisableBankForClearImage
+ ldr r1, _0223C09C ; =0x022431D8
+ str r0, [r1, #0x18]
+ bl GX_DisableBankForSubBGExtPltt
+ ldr r1, _0223C09C ; =0x022431D8
+ str r0, [r1, #0x1c]
+ bl GX_DisableBankForSubOBJExtPltt_2
+ ldr r1, _0223C09C ; =0x022431D8
+ str r0, [r1, #0x20]
+ bl FUN_020C5E04
+ ldr r1, _0223C09C ; =0x022431D8
+ str r0, [r1, #0x24]
+ bl GX_DisableBankForSubOBJExtPltt
+ ldr r1, _0223C09C ; =0x022431D8
+ str r0, [r1, #0x28]
+ bl GX_DisableBankForARM7
+ ldr r1, _0223C09C ; =0x022431D8
+ str r0, [r1, #0x2c]
+ bl GX_DisableBankForLCDC
+ ldr r1, _0223C09C ; =0x022431D8
+ str r0, [r1, #0x30]
+ ldr r0, [r1, #0x2c]
+ bl GX_SetBankForARM7
+ bl MOD13_0223BE1C
+ add sp, sp, #4
+ ldmia sp!, {pc}
+ .align 2, 0
+_0223C09C: .word 0x022431D8
+
+ arm_func_start MOD13_0223C0A0
+MOD13_0223C0A0: ; 0x0223C0A0
+ ldr r2, _0223C0B4 ; =0x0224320C
+ ldr r2, [r2]
+ add r0, r2, r0, lsl #6
+ strb r1, [r0, #0x38]
+ bx lr
+ .align 2, 0
+_0223C0B4: .word 0x0224320C
+
+ arm_func_start MOD13_0223C0B8
+MOD13_0223C0B8: ; 0x0223C0B8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ mov r4, r1
+ ldrb r1, [r4, #0x11]
+ mov r5, r0
+ cmp r1, #0
+ beq _0223C0DC
+ add r0, r4, #0xc
+ bl MOD13_0223AF90
+_0223C0DC:
+ mov r0, r4
+ bl MOD13_0223B8C4
+ ldr r0, _0223C100 ; =0x0224320C
+ mov r1, r4
+ ldr r0, [r0]
+ ldr r0, [r0, r5, lsl #6]
+ bl MOD13_02239FD0
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0223C100: .word 0x0224320C
+
+ arm_func_start MOD13_0223C104
+MOD13_0223C104: ; 0x0223C104
+ ldr ip, _0223C10C ; =MOD13_0223C0B8
+ bx ip
+ .align 2, 0
+_0223C10C: .word MOD13_0223C0B8
+
+ arm_func_start MOD13_0223C110
+MOD13_0223C110: ; 0x0223C110
+ ldr r2, _0223C128 ; =0x0224320C
+ ldr ip, _0223C12C ; =MOD13_02239FD0
+ ldr r2, [r2]
+ add r0, r2, r0, lsl #6
+ ldr r0, [r0, #4]
+ bx ip
+ .align 2, 0
+_0223C128: .word 0x0224320C
+_0223C12C: .word MOD13_02239FD0
+
+ arm_func_start MOD13_0223C130
+MOD13_0223C130: ; 0x0223C130
+ str r1, [r0, #8]
+ bx lr
+
+ arm_func_start MOD13_0223C138
+MOD13_0223C138: ; 0x0223C138
+ stmdb sp!, {r4, r5, r6, r7, r8, lr}
+ ldr r4, _0223C1C0 ; =0x0224320C
+ mov r7, r0
+ ldr r0, [r4]
+ mov r8, r1
+ ldr r0, [r0, r7, lsl #6]
+ mov r4, r2
+ mov r6, r3
+ bl MOD13_02239F78
+ mov r5, r0
+ str r8, [r5, #8]
+ str r4, [r5, #0xc]
+ ldrb r1, [sp, #0x18]
+ strb r6, [r5, #0x10]
+ mov r0, #1
+ strb r1, [r5, #0x11]
+ bl OS_DisableIrqMask
+ ldr r1, _0223C1C0 ; =0x0224320C
+ mov r4, r0
+ ldr r0, [r1]
+ add r0, r0, r7, lsl #6
+ ldr r0, [r0, #0x10]
+_0223C190:
+ ldrb r1, [r0, #0x10]
+ cmp r6, r1
+ bhs _0223C1A8
+ mov r1, r5
+ bl MOD13_0223B888
+ b _0223C1B0
+_0223C1A8:
+ ldr r0, [r0, #4]
+ b _0223C190
+_0223C1B0:
+ mov r0, r4
+ bl OS_EnableIrqMask
+ mov r0, r5
+ ldmia sp!, {r4, r5, r6, r7, r8, pc}
+ .align 2, 0
+_0223C1C0: .word 0x0224320C
+
+ arm_func_start MOD13_0223C1C4
+MOD13_0223C1C4: ; 0x0223C1C4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov ip, #0
+ str ip, [sp]
+ bl MOD13_0223C138
+ add sp, sp, #4
+ ldmia sp!, {pc}
+
+ arm_func_start MOD13_0223C1E0
+MOD13_0223C1E0: ; 0x0223C1E0
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ ldr r7, _0223C2A4 ; =0x0224320C
+ mov r6, r0
+ ldr r0, [r7]
+ mov r4, r6, lsl #6
+ add r2, r0, r6, lsl #6
+ ldrb r1, [r2, #0x38]
+ cmp r1, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r5, [r2, #0x10]
+ add r1, r2, #0x20
+ cmp r5, r1
+ beq _0223C244
+_0223C21C:
+ ldr r1, [r5, #0xc]
+ ldr r2, [r5, #8]
+ mov r0, r5
+ blx r2
+ ldr r0, [r7]
+ ldr r5, [r5, #4]
+ add r1, r0, r4
+ add r1, r1, #0x20
+ cmp r5, r1
+ bne _0223C21C
+_0223C244:
+ add r1, r0, r6, lsl #6
+ ldr r1, [r1, #0x34]
+ mov r4, r6, lsl #6
+ cmp r1, #0
+ mov r5, #0
+ addle sp, sp, #4
+ ldmleia sp!, {r4, r5, r6, r7, pc}
+ ldr r7, _0223C2A4 ; =0x0224320C
+_0223C264:
+ add r0, r4, r0
+ ldr r0, [r0, #4]
+ bl MOD13_02239F78
+ movs r1, r0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ mov r0, r6
+ bl MOD13_0223C0B8
+ ldr r0, [r7]
+ add r5, r5, #1
+ add r1, r4, r0
+ ldr r1, [r1, #0x34]
+ cmp r5, r1
+ blt _0223C264
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223C2A4: .word 0x0224320C
+
+ arm_func_start MOD13_0223C2A8
+MOD13_0223C2A8: ; 0x0223C2A8
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r4, _0223C2F0 ; =0x0224320C
+ mov r5, #0
+_0223C2B8:
+ ldr r0, [r4]
+ add r0, r0, r5, lsl #6
+ ldr r0, [r0, #8]
+ bl MOD13_0223B904
+ ldr r0, [r4]
+ ldr r0, [r0, r5, lsl #6]
+ bl MOD13_0223A030
+ add r5, r5, #1
+ cmp r5, #2
+ blt _0223C2B8
+ ldr r0, _0223C2F0 ; =0x0224320C
+ bl MOD13_0223AF90
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_0223C2F0: .word 0x0224320C
+
+ arm_func_start MOD13_0223C2F4
+MOD13_0223C2F4: ; 0x0223C2F4
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #4
+ mov r0, #0x80
+ mov r1, #4
+ bl MOD13_0223B004
+ ldr r4, _0223C418 ; =0x0224320C
+ mov sl, #0
+ ldr sb, _0223C41C ; =0x0223F764
+ mov r8, sl
+ str r0, [r4]
+ str sl, [sp]
+ mov r7, #4
+ mov fp, #0x14
+ mov r6, #0xff
+ mov r5, #1
+_0223C330:
+ ldr r0, [r4]
+ ldrb r2, [sb]
+ add r1, r0, sl, lsl #6
+ mov r0, #0x14
+ str r2, [r1, #0x34]
+ ldrb r2, [sb]
+ mov r1, r7
+ mul r0, r2, r0
+ bl MOD13_0223B004
+ ldr r1, [r4]
+ mov r2, fp
+ add r1, r1, sl, lsl #6
+ str r0, [r1, #0x3c]
+ ldr r1, [r4]
+ ldrb r0, [sb]
+ add r1, r1, sl, lsl #6
+ ldr r1, [r1, #0x3c]
+ bl MOD13_0223A054
+ ldr r1, [r4]
+ str r0, [r1, sl, lsl #6]
+ ldrb r0, [sb]
+ bl MOD13_0223A094
+ ldr r1, [r4]
+ add r1, r1, sl, lsl #6
+ str r0, [r1, #4]
+ bl MOD13_0223B928
+ ldr r1, [r4]
+ add r1, r1, sl, lsl #6
+ str r0, [r1, #8]
+ ldr r0, [r4]
+ add r1, r0, sl, lsl #6
+ ldr r0, [sp]
+ strb r0, [r1, #0x1c]
+ ldr r0, [r4]
+ add r0, r0, sl, lsl #6
+ strb r6, [r0, #0x30]
+ ldr r1, [r4]
+ add r0, r1, sl, lsl #6
+ add r1, r1, r8
+ ldr r0, [r0, #8]
+ add r1, r1, #0xc
+ bl MOD13_0223B868
+ ldr r1, [r4]
+ add r0, r1, sl, lsl #6
+ add r1, r1, r8
+ ldr r0, [r0, #8]
+ add r1, r1, #0x20
+ bl MOD13_0223B878
+ ldr r0, [r4]
+ add sb, sb, #1
+ add r0, r0, sl, lsl #6
+ add sl, sl, #1
+ strb r5, [r0, #0x38]
+ add r8, r8, #0x40
+ cmp sl, #2
+ blt _0223C330
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_0223C418: .word 0x0224320C
+_0223C41C: .word 0x0223F764
+
+ .section .rodata
+ ; 0x0223EC6C
+ .incbin "baserom.nds", 0x22600C, 0xafc
+
+ .section .data
+ ; 0x0223C420
+ .incbin "baserom.nds", 0x226CD4, 0x110C
+
+ .section .bss
+ ; 0x02242FE4
+ .space 0x23C
diff --git a/arm9/modules/13/asm/module_13_init.s b/arm9/modules/13/asm/module_13_init.s
new file mode 100644
index 00000000..03402138
--- /dev/null
+++ b/arm9/modules/13/asm/module_13_init.s
@@ -0,0 +1,33 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD13_02211E60
+MOD13_02211E60: ; 0x02211E60
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_0202E49C
+ bl OS_InitTick
+ bl OS_InitAlarm
+ bl OS_DisableInterrupts
+ mov r1, #1
+ add r5, r0, #0
+ add r0, r4, #0
+ lsl r1, r1, #0x12
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD13_02223494
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl OS_RestoreInterrupts
+ ldr r1, _02211EA0 ; =0x04000208
+ ldrh r0, [r1]
+ mov r0, #1
+ strh r0, [r1]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02211EA0: .word 0x04000208
diff --git a/arm9/modules/13/asm/module_13_thumb.s b/arm9/modules/13/asm/module_13_thumb.s
new file mode 100644
index 00000000..c231800c
--- /dev/null
+++ b/arm9/modules/13/asm/module_13_thumb.s
@@ -0,0 +1,14791 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD13_022172DC
+MOD13_022172DC: ; 0x022172DC
+ str r0, [r1]
+ mov r0, #1
+ strh r0, [r1, #4]
+ bx lr
+
+ thumb_func_start MOD13_022172E4
+MOD13_022172E4: ; 0x022172E4
+ mov r1, #0
+ str r1, [r0]
+ strh r1, [r0, #4]
+ strh r1, [r0, #6]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD13_022172F0
+MOD13_022172F0: ; 0x022172F0
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r0, _02217358 ; =0x02240B3C
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02217334
+ mov r4, #0
+ add r0, sp, #0
+ add r1, r4, #0
+ mov r2, #0xc
+ bl MOD13_022174C0
+ add r0, sp, #0
+ bl RTC_GetTime
+ cmp r0, #0
+ bne _02217322
+ ldr r0, [sp]
+ lsl r0, r0, #0xa
+ add r1, r4, r0
+ ldr r0, [sp, #4]
+ lsl r0, r0, #3
+ add r1, r1, r0
+ ldr r0, [sp, #8]
+ add r4, r1, r0
+_02217322:
+ ldr r0, _0221735C ; =0x02240B54
+ str r4, [r0]
+ ldr r1, _02217360 ; =0x5D588B65
+ str r1, [r0, #4]
+ ldr r1, _02217364 ; =0x00269EC3
+ str r1, [r0, #8]
+ mov r1, #1
+ ldr r0, _02217358 ; =0x02240B3C
+ str r1, [r0]
+_02217334:
+ ldr r0, _0221735C ; =0x02240B54
+ ldr r3, [r0, #8]
+ ldr r2, [r0, #4]
+ ldr r1, [r0]
+ mul r2, r1
+ add r1, r3, r2
+ str r1, [r0]
+ lsr r1, r1, #0x10
+ ldr r0, _02217368 ; =0x00007FFF
+ mul r1, r0
+ lsr r0, r1, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add sp, #0x10
+ pop {r4}
+ pop {r3}
+ bx r3
+ nop
+_02217358: .word 0x02240B3C
+_0221735C: .word 0x02240B54
+_02217360: .word 0x5D588B65
+_02217364: .word 0x00269EC3
+_02217368: .word 0x00007FFF
+
+ thumb_func_start MOD13_0221736C
+MOD13_0221736C: ; 0x0221736C
+ mov r2, #0
+ ldrsb r1, [r0, r2]
+ cmp r1, #0
+ beq _0221737C
+_02217374:
+ add r2, r2, #1
+ ldrsb r1, [r0, r2]
+ cmp r1, #0
+ bne _02217374
+_0221737C:
+ add r0, r2, #0
+ bx lr
+
+ thumb_func_start MOD13_02217380
+MOD13_02217380: ; 0x02217380
+ asr r2, r0, #8
+ mov r1, #0xff
+ and r2, r1
+ lsl r1, r0, #8
+ ldr r0, _02217394 ; =0x0000FF00
+ and r1, r0
+ orr r2, r1
+ lsl r0, r2, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+ .align 2, 0
+_02217394: .word 0x0000FF00
+
+ thumb_func_start MOD13_02217398
+MOD13_02217398: ; 0x02217398
+ push {r4}
+ sub sp, #4
+ lsl r1, r0, #0x18
+ ldr r2, _022173C4 ; =0xFF000000
+ and r1, r2
+ lsl r4, r0, #8
+ ldr r2, _022173C8 ; =0x00FF0000
+ and r4, r2
+ lsr r3, r0, #0x18
+ mov r2, #0xff
+ and r3, r2
+ lsr r2, r0, #8
+ ldr r0, _022173CC ; =0x0000FF00
+ and r2, r0
+ orr r3, r2
+ orr r4, r3
+ orr r1, r4
+ add r0, r1, #0
+ add sp, #4
+ pop {r4}
+ bx lr
+ nop
+_022173C4: .word 0xFF000000
+_022173C8: .word 0x00FF0000
+_022173CC: .word 0x0000FF00
+
+ thumb_func_start MOD13_022173D0
+MOD13_022173D0: ; 0x022173D0
+ asr r2, r0, #8
+ mov r1, #0xff
+ and r2, r1
+ lsl r1, r0, #8
+ ldr r0, _022173E4 ; =0x0000FF00
+ and r1, r0
+ orr r2, r1
+ lsl r0, r2, #0x10
+ lsr r0, r0, #0x10
+ bx lr
+ .align 2, 0
+_022173E4: .word 0x0000FF00
+
+ thumb_func_start MOD13_022173E8
+MOD13_022173E8: ; 0x022173E8
+ push {r4}
+ sub sp, #4
+ lsl r1, r0, #0x18
+ ldr r2, _02217414 ; =0xFF000000
+ and r1, r2
+ lsl r4, r0, #8
+ ldr r2, _02217418 ; =0x00FF0000
+ and r4, r2
+ lsr r3, r0, #0x18
+ mov r2, #0xff
+ and r3, r2
+ lsr r2, r0, #8
+ ldr r0, _0221741C ; =0x0000FF00
+ and r2, r0
+ orr r3, r2
+ orr r4, r3
+ orr r1, r4
+ add r0, r1, #0
+ add sp, #4
+ pop {r4}
+ bx lr
+ nop
+_02217414: .word 0xFF000000
+_02217418: .word 0x00FF0000
+_0221741C: .word 0x0000FF00
+
+ thumb_func_start MOD13_02217420
+MOD13_02217420: ; 0x02217420
+ ldr r3, _02217424 ; =0x0209A7B8
+ bx r3
+ .align 2, 0
+_02217424: .word 0x0209A7B8
+
+ thumb_func_start MOD13_02217428
+MOD13_02217428: ; 0x02217428
+ strb r2, [r1]
+ ldr r3, _02217430 ; =0x0209A9A4
+ bx r3
+ nop
+_02217430: .word 0x0209A9A4
+
+ thumb_func_start MOD13_02217434
+MOD13_02217434: ; 0x02217434
+ ldr r3, _02217438 ; =0x0209A9D0
+ bx r3
+ .align 2, 0
+_02217438: .word 0x0209A9D0
+
+ thumb_func_start MOD13_0221743C
+MOD13_0221743C: ; 0x0221743C
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD13_02217440
+MOD13_02217440: ; 0x02217440
+ push {r4, r5, lr}
+ sub sp, #4
+ ldr r5, [sp, #0x14]
+ ldr r4, [sp, #0x10]
+ strb r5, [r4]
+ str r4, [sp]
+ bl FUN_0209A7D0
+ add sp, #4
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+
+ thumb_func_start MOD13_02217458
+MOD13_02217458: ; 0x02217458
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ ldr r5, [sp, #0x18]
+ mov r4, #0
+ ldr r2, [r1]
+ ldr r0, [r1, #4]
+ str r2, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ ldr r1, _022174A0 ; =0x01FF6210
+ mul r0, r1
+ mov r1, #0x40
+ bl _s32_div_f
+ asr r1, r0, #0x1f
+ add r6, r4, r0
+ adc r4, r1
+ ldr r0, [r5, #4]
+ ldr r1, _022174A0 ; =0x01FF6210
+ mul r0, r1
+ mov r1, #0x40
+ bl _s32_div_f
+ asr r1, r0, #0x1f
+ add r2, r6, r0
+ adc r4, r1
+ add r0, sp, #0
+ mov r1, #1
+ add r3, r4, #0
+ bl FUN_0209A0AC
+ add sp, #8
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ nop
+_022174A0: .word 0x01FF6210
+
+ thumb_func_start MOD13_022174A4
+MOD13_022174A4: ; 0x022174A4
+ push {r4, r5, lr}
+ sub sp, #4
+ ldr r4, [sp, #0x14]
+ ldr r5, [r4]
+ ldr r4, [sp, #0x10]
+ strb r5, [r4]
+ str r4, [sp]
+ bl FUN_0209A880
+ add sp, #4
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_022174C0
+MOD13_022174C0: ; 0x022174C0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ ldr r3, _022174C8 ; =0x020CE34C
+ bx r3
+ .align 2, 0
+_022174C8: .word 0x020CE34C
+
+ thumb_func_start MOD13_022174CC
+MOD13_022174CC: ; 0x022174CC
+ add r3, r0, #0
+ add r0, r1, #0
+ add r1, r3, #0
+ ldr r3, _022174D8 ; =0x020CE3E0
+ bx r3
+ nop
+_022174D8: .word 0x020CE3E0
+
+ thumb_func_start MOD13_022174DC
+MOD13_022174DC: ; 0x022174DC
+ push {r4}
+ sub sp, #4
+ mov r4, #0
+ b _022174E8
+_022174E4:
+ add r0, r0, #1
+ add r1, r1, #1
+_022174E8:
+ add r3, r2, #0
+ sub r2, r2, #1
+ cmp r3, #0
+ ble _022174FA
+ ldrb r4, [r0]
+ ldrb r3, [r1]
+ sub r4, r4, r3
+ cmp r4, #0
+ beq _022174E4
+_022174FA:
+ add r0, r4, #0
+ add sp, #4
+ pop {r4}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD13_02217504
+MOD13_02217504: ; 0x02217504
+ push {lr}
+ sub sp, #4
+ bl THUNK_FUN_02099BC8
+ cmp r0, #0
+ bge _0221751A
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221751A:
+ bl MOD13_02219C60
+ cmp r0, #0
+ beq _02217526
+ mov r0, #1
+ b _02217528
+_02217526:
+ mov r0, #0
+_02217528:
+ neg r0, r0
+ add sp, #4
+ pop {r3}
+ bx r3
+
+ thumb_func_start MOD13_02217530
+MOD13_02217530: ; 0x02217530
+ push {r4, r5, lr}
+ sub sp, #4
+ add r5, r1, #0
+ add r4, r2, #0
+ bl MOD13_022173E8
+ ldr r1, _0221758C ; =0x0223F7C8
+ str r0, [r1, #0x10]
+ add r0, r5, #0
+ bl MOD13_022173E8
+ ldr r1, _0221758C ; =0x0223F7C8
+ str r0, [r1, #0x14]
+ add r0, r4, #0
+ bl MOD13_022173E8
+ ldr r1, _0221758C ; =0x0223F7C8
+ str r0, [r1, #0x18]
+ add r0, r1, #0
+ bl FUN_0209A2C0
+ cmp r0, #0
+ bge _0221756A
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+_0221756A:
+ ldr r5, _02217590 ; =0x021C8F04
+ ldr r0, [r5]
+ cmp r0, #0
+ bne _02217580
+ mov r4, #0x64
+_02217574:
+ add r0, r4, #0
+ bl OS_Sleep
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _02217574
+_02217580:
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+ nop
+_0221758C: .word 0x0223F7C8
+_02217590: .word 0x021C8F04
+
+ thumb_func_start MOD13_02217594
+MOD13_02217594: ; 0x02217594
+ push {lr}
+ sub sp, #4
+ add r0, r1, #0
+ ldr r1, _022175A8 ; =0x0224190C
+ ldr r1, [r1]
+ blx r1
+ add sp, #4
+ pop {r3}
+ bx r3
+ nop
+_022175A8: .word 0x0224190C
+
+ thumb_func_start MOD13_022175AC
+MOD13_022175AC: ; 0x022175AC
+ push {lr}
+ sub sp, #4
+ cmp r1, #0
+ ble _022175C2
+ add r0, r1, #0
+ ldr r1, _022175CC ; =0x02241900
+ ldr r1, [r1]
+ blx r1
+ add sp, #4
+ pop {r3}
+ bx r3
+_022175C2:
+ mov r0, #0
+ add sp, #4
+ pop {r3}
+ bx r3
+ nop
+_022175CC: .word 0x02241900
+
+ thumb_func_start MOD13_022175D0
+MOD13_022175D0: ; 0x022175D0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ add r0, r6, #0
+ mov r1, #2
+ bl _s32_div_f
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, r7
+ add r2, r7, #0
+ bl MOD13_022174CC
+ add r0, r4, r7
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD13_022174CC
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD13_022174CC
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_0221760C
+MOD13_0221760C: ; 0x0221760C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, r2, #0
+ mov r1, #2
+ bl _s32_div_f
+ mov r6, #0
+ cmp r0, #0
+ ble _02217630
+_02217620:
+ add r3, r0, r6
+ ldrb r2, [r4, r3]
+ ldrsb r1, [r5, r6]
+ eor r2, r1
+ strb r2, [r4, r3]
+ add r6, r6, #1
+ cmp r6, r0
+ blt _02217620
+_02217630:
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_02217638
+MOD13_02217638: ; 0x02217638
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r6, r0, #0
+ add r5, r1, #0
+ str r3, [sp]
+ ldr r4, [sp, #0x18]
+ add r0, r2, #0
+ mov r1, #2
+ bl _s32_div_f
+ add r7, r0, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ bl _s32_div_f
+ add r2, r1, #0
+ mov r1, #0
+ cmp r7, #0
+ ble _0221767A
+ add r6, r1, #0
+_02217660:
+ strb r1, [r5, r1]
+ ldrsb r0, [r5, r1]
+ ldr r3, [sp]
+ ldrsb r3, [r3, r2]
+ add r2, r2, #1
+ eor r0, r3
+ strb r0, [r5, r1]
+ cmp r2, r4
+ blt _02217674
+ add r2, r6, #0
+_02217674:
+ add r1, r1, #1
+ cmp r1, r7
+ blt _02217660
+_0221767A:
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_02217684
+MOD13_02217684: ; 0x02217684
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ add r5, r1, #0
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r5, #0
+ mov r1, #2
+ bl _s32_div_f
+ bl MOD13_022198B4
+ add r6, r0, #0
+ cmp r6, #0
+ bne _022176AE
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022176AE:
+ add r0, r5, #0
+ bl MOD13_022198B4
+ str r0, [sp, #0xc]
+ cmp r0, #0
+ bne _022176CC
+ add r0, r6, #0
+ bl MOD13_022198A0
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022176CC:
+ mov r4, #0
+_022176CE:
+ ldr r0, [sp, #8]
+ str r0, [sp]
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ ldr r3, [sp, #4]
+ bl MOD13_02217638
+ add r0, r6, #0
+ add r1, r7, #0
+ add r2, r5, #0
+ bl MOD13_0221760C
+ add r0, r7, #0
+ add r1, r5, #0
+ ldr r2, [sp, #0xc]
+ bl MOD13_022175D0
+ add r4, r4, #1
+ cmp r4, #2
+ blt _022176CE
+ add r0, r6, #0
+ bl MOD13_022198A0
+ ldr r0, [sp, #0xc]
+ bl MOD13_022198A0
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_02217710
+MOD13_02217710: ; 0x02217710
+ push {r4, r5, r6, r7}
+ mov r6, #0
+ add r4, r6, #0
+ ldr r2, _02217744 ; =0xEDB88320
+ mov r3, #1
+_0221771A:
+ add r7, r6, #0
+ add r5, r4, #0
+_0221771E:
+ add r0, r7, #0
+ and r0, r3
+ cmp r0, #0
+ beq _0221772C
+ lsr r7, r7, #1
+ eor r7, r2
+ b _0221772E
+_0221772C:
+ lsr r7, r7, #1
+_0221772E:
+ add r5, r5, #1
+ cmp r5, #8
+ blt _0221771E
+ stmia r1!, {r7}
+ add r6, r6, #1
+ ldr r0, _02217748 ; =0x00000100
+ cmp r6, r0
+ blt _0221771A
+ pop {r4, r5, r6, r7}
+ bx lr
+ nop
+_02217744: .word 0xEDB88320
+_02217748: .word 0x00000100
+
+ thumb_func_start MOD13_0221774C
+MOD13_0221774C: ; 0x0221774C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r7, r1, #0
+ add r4, r2, #0
+ ldr r6, [sp, #0x18]
+ cmp r3, #0
+ bne _02217764
+ add r0, r3, #0
+ add r1, r6, #0
+ bl MOD13_02217710
+_02217764:
+ mov r1, #0
+ cmp r4, #0
+ ble _02217782
+ mov r2, #0xff
+_0221776C:
+ lsr r0, r5, #8
+ ldrb r3, [r7, r1]
+ eor r5, r3
+ and r5, r2
+ lsl r3, r5, #2
+ ldr r3, [r6, r3]
+ add r5, r0, #0
+ eor r5, r3
+ add r1, r1, #1
+ cmp r1, r4
+ blt _0221776C
+_02217782:
+ add r0, r5, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+
+ thumb_func_start MOD13_0221778C
+MOD13_0221778C: ; 0x0221778C
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r2, r1, #0
+ ldr r0, _022177B4 ; =0x02240E60
+ str r0, [sp]
+ mov r3, #0
+ mvn r0, r3
+ add r1, r4, #0
+ bl MOD13_0221774C
+ mov r1, #0
+ mvn r1, r1
+ eor r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add sp, #8
+ pop {r4}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_022177B4: .word 0x02240E60
+
+ thumb_func_start MOD13_022177B8
+MOD13_022177B8: ; 0x022177B8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ ldr r4, [r5, #8]
+ ldr r0, [r5, #0xc]
+ str r0, [sp]
+ ldr r0, [r5]
+ add r0, r0, #1
+ ldr r1, [sp]
+ bl _u32_div_f
+ lsl r0, r1, #0x18
+ lsr r6, r0, #0x18
+ ldrb r7, [r4, r6]
+ ldr r0, [r5, #4]
+ add r0, r7, r0
+ ldr r1, [sp]
+ bl _u32_div_f
+ lsl r0, r1, #0x18
+ lsr r1, r0, #0x18
+ ldrb r0, [r4, r1]
+ str r6, [r5]
+ str r1, [r5, #4]
+ strb r7, [r4, r1]
+ strb r0, [r4, r6]
+ add r0, r7, r0
+ ldr r1, [r5, #0xc]
+ bl _u32_div_f
+ ldrb r0, [r4, r1]
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_02217800
+MOD13_02217800: ; 0x02217800
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ str r0, [sp]
+ add r5, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ mov r4, #0
+ cmp r7, #0
+ bls _02217828
+_02217812:
+ ldr r0, [sp]
+ bl MOD13_022177B8
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldrb r0, [r6, r4]
+ eor r1, r0
+ strb r1, [r5, r4]
+ add r4, r4, #1
+ cmp r4, r7
+ blo _02217812
+_02217828:
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+
+ thumb_func_start MOD13_02217830
+MOD13_02217830: ; 0x02217830
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp]
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r5, [r0, #8]
+ mov r0, #0
+ ldr r1, [sp]
+ str r0, [r1, #4]
+ ldr r2, [r1, #4]
+ str r2, [r1]
+ lsl r2, r3, #0
+ str r2, [r1, #0xc]
+ lsl r1, r3, #0
+ cmp r1, #0
+ bls _0221785C
+_02217852:
+ strb r0, [r5, r0]
+ add r0, r0, #1
+ ldr r1, [sp, #0xc]
+ cmp r0, r1
+ blo _02217852
+_0221785C:
+ mov r1, #0
+ add r6, r1, #0
+ add r4, r1, #0
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ bls _02217894
+ str r1, [sp, #0x10]
+_0221786A:
+ ldrb r7, [r5, r4]
+ ldr r0, [sp, #4]
+ ldrb r0, [r0, r6]
+ add r0, r1, r0
+ add r0, r7, r0
+ ldr r1, [sp]
+ ldr r1, [r1, #0xc]
+ bl _u32_div_f
+ ldrb r0, [r5, r1]
+ strb r7, [r5, r1]
+ strb r0, [r5, r4]
+ add r6, r6, #1
+ ldr r0, [sp, #8]
+ cmp r6, r0
+ blo _0221788C
+ ldr r6, [sp, #0x10]
+_0221788C:
+ add r4, r4, #1
+ ldr r0, [sp, #0xc]
+ cmp r4, r0
+ blo _0221786A
+_02217894:
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+
+ thumb_func_start MOD13_0221789C
+MOD13_0221789C: ; 0x0221789C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ add r0, r4, #0
+ bl MOD13_022198B4
+ str r0, [sp, #8]
+ cmp r0, #0
+ bne _022178C6
+ mov r0, #2
+ bl MOD13_02218BF4
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022178C6:
+ ldr r0, _02217928 ; =0x02240B7C
+ ldr r1, [sp, #0x28]
+ mov r2, #2
+ bl MOD13_022174CC
+ ldr r0, _0221792C ; =0x02240B7E
+ ldr r1, [sp, #0x2c]
+ ldr r2, [sp, #0x30]
+ bl MOD13_022174CC
+ add r0, sp, #0
+ ldr r1, _02217928 ; =0x02240B7C
+ ldr r2, [sp, #0x30]
+ add r2, r2, #2
+ add r3, r4, #0
+ bl MOD13_02217830
+ add r0, sp, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ add r3, r4, #0
+ bl MOD13_02217800
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD13_0221778C
+ cmp r0, r6
+ beq _02217918
+ mov r0, #0x12
+ bl MOD13_02218BF4
+ ldr r0, [sp, #8]
+ bl MOD13_022198A0
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02217918:
+ ldr r0, [sp, #8]
+ bl MOD13_022198A0
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02217928: .word 0x02240B7C
+_0221792C: .word 0x02240B7E
+
+ thumb_func_start MOD13_02217930
+MOD13_02217930: ; 0x02217930
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ add r7, r1, #0
+ add r5, r2, #0
+ add r4, r3, #0
+ add r1, r5, #0
+ bl MOD13_0221778C
+ strb r0, [r4]
+ add r0, r5, #0
+ bl MOD13_022198B4
+ str r0, [sp, #0xc]
+ cmp r0, #0
+ bne _0221795C
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221795C:
+ bl MOD13_022172F0
+ add r1, sp, #0
+ strh r0, [r1]
+ ldr r0, [sp, #0x28]
+ add r1, sp, #0
+ mov r2, #2
+ bl MOD13_022174CC
+ ldr r0, _022179AC ; =0x02240B7C
+ ldr r1, [sp, #0x28]
+ mov r2, #2
+ bl MOD13_022174CC
+ ldr r0, _022179B0 ; =0x02240B7E
+ ldr r1, [sp, #0x2c]
+ ldr r2, [sp, #0x30]
+ bl MOD13_022174CC
+ add r0, sp, #4
+ ldr r1, _022179AC ; =0x02240B7C
+ ldr r2, [sp, #0x30]
+ add r2, r2, #2
+ add r3, r5, #0
+ bl MOD13_02217830
+ add r0, sp, #4
+ add r1, r7, #0
+ add r2, r6, #0
+ add r3, r5, #0
+ bl MOD13_02217800
+ ldr r0, [sp, #0xc]
+ bl MOD13_022198A0
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_022179AC: .word 0x02240B7C
+_022179B0: .word 0x02240B7E
+
+ thumb_func_start MOD13_022179B4
+MOD13_022179B4: ; 0x022179B4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ add r7, r3, #0
+ add r0, sp, #8
+ mov r1, #0
+ mov r2, #8
+ bl MOD13_022174C0
+ mov r1, #2
+ add r0, sp, #8
+ strb r1, [r0, #1]
+ ldr r0, _02217A14 ; =0x00005790
+ bl MOD13_022173D0
+ add r1, sp, #8
+ strh r0, [r1, #2]
+ ldr r0, _02217A18 ; =0x02240B60
+ ldr r0, [r0, #0x10]
+ bl MOD13_022173E8
+ str r0, [sp, #0xc]
+ cmp r4, #0xff
+ beq _022179F2
+ ldr r1, _02217A18 ; =0x02240B60
+ mov r0, #0x18
+ ldrsb r0, [r1, r0]
+ cmp r0, #0
+ bne _022179F8
+_022179F2:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0xc]
+_022179F8:
+ add r0, sp, #8
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ mov r3, #0
+ bl MOD13_02217440
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02217A14: .word 0x00005790
+_02217A18: .word 0x02240B60
+
+ thumb_func_start MOD13_02217A1C
+MOD13_02217A1C: ; 0x02217A1C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ mov r0, #1
+ bl MOD13_022173D0
+ strh r0, [r5]
+ mov r0, #0
+ strh r0, [r5, #2]
+ strh r0, [r5, #4]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl MOD13_022173D0
+ strh r0, [r5, #6]
+ mov r0, #0
+ strh r0, [r5, #8]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ bl MOD13_022173D0
+ strh r0, [r5, #0xa]
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ bl MOD13_022173D0
+ strh r0, [r5, #0xc]
+ add r1, sp, #8
+ mov r0, #0x10
+ ldrsb r0, [r1, r0]
+ strb r0, [r5, #0xe]
+ mov r0, #0x14
+ ldrsb r0, [r1, r0]
+ strb r0, [r5, #0xf]
+ add r5, #0x10
+ add r0, r5, #0
+ ldr r1, [sp, #0x20]
+ mov r2, #8
+ bl MOD13_022174CC
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_02217A7C
+MOD13_02217A7C: ; 0x02217A7C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r4, r3, #0
+ cmp r0, #1
+ bne _02217AC0
+ mov r1, #1
+ ldr r0, [sp, #0x18]
+ strh r1, [r0]
+ add r0, r5, #2
+ str r0, [sp]
+ ldr r0, _02217AD4 ; =0x02240B4C
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ add r0, r2, #0
+ add r1, r5, #4
+ mov r2, #0
+ ldrsh r2, [r4, r2]
+ ldr r3, [sp, #0x1c]
+ bl MOD13_02217930
+ ldrh r0, [r4]
+ bl MOD13_022173D0
+ strh r0, [r5]
+ mov r0, #0
+ ldrsh r0, [r4, r0]
+ add r0, r0, #4
+ strh r0, [r4]
+ add sp, #0xc
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+_02217AC0:
+ add r0, r5, #0
+ add r1, r2, #0
+ mov r2, #0
+ ldrsh r2, [r4, r2]
+ bl MOD13_022174CC
+ add sp, #0xc
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02217AD4: .word 0x02240B4C
+
+ thumb_func_start MOD13_02217AD8
+MOD13_02217AD8: ; 0x02217AD8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ mov r6, #0
+ ldr r1, _02217B60 ; =0x02240B60
+ mov r0, #0x19
+ ldrsb r0, [r1, r0]
+ strb r0, [r5]
+ mov r0, #1
+ strb r0, [r5, #1]
+ ldr r0, [r1, #4]
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ add r0, r5, #6
+ ldr r1, [r1]
+ add r2, r4, #0
+ bl MOD13_022174CC
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl MOD13_022173D0
+ strh r0, [r5, #2]
+ add r0, r4, #6
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, r0, #1
+ mov r1, #2
+ bl _s32_div_f
+ lsl r0, r0, #0x11
+ asr r7, r0, #0x10
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ bl MOD13_022173D0
+ strh r0, [r5, #4]
+ add r0, r6, r7
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ add r4, r5, r7
+ mov r0, #0x60
+ strb r0, [r5, r7]
+ mov r0, #0
+ strb r0, [r4, #1]
+ bl MOD13_022173D0
+ strh r0, [r4, #4]
+ mov r0, #0xe
+ bl MOD13_022173E8
+ str r0, [sp]
+ add r0, r4, #6
+ add r1, sp, #0
+ mov r2, #4
+ bl MOD13_022174CC
+ mov r0, #4
+ bl MOD13_022173D0
+ strh r0, [r4, #2]
+ add r6, #0xa
+ lsl r0, r6, #0x10
+ asr r0, r0, #0x10
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02217B60: .word 0x02240B60
+
+ thumb_func_start MOD13_02217B64
+MOD13_02217B64: ; 0x02217B64
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ add r6, r2, #0
+ ldr r0, _02217BC4 ; =0x02240B48
+ ldr r4, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ ldr r2, _02217BC8 ; =0x000005DC
+ bl MOD13_022174C0
+ add r0, sp, #0xc
+ add r5, #0x10
+ add r1, r5, #0
+ mov r2, #8
+ bl MOD13_022174CC
+ ldr r0, _02217BCC ; =0x0223F820
+ bl MOD13_0221736C
+ add r3, r0, #0
+ add r0, sp, #0xc
+ mov r1, #8
+ ldr r2, _02217BCC ; =0x0223F820
+ bl MOD13_02217684
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x11
+ str r0, [sp, #4]
+ add r0, sp, #0xc
+ str r0, [sp, #8]
+ add r0, r4, #0
+ ldr r1, _02217BD0 ; =0x00003000
+ add r3, r2, #0
+ bl MOD13_02217A1C
+ add r0, r4, #0
+ mov r1, #0x18
+ mov r2, #0
+ add r3, r6, #0
+ bl MOD13_022179B4
+ mov r0, #0
+ add sp, #0x18
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02217BC4: .word 0x02240B48
+_02217BC8: .word 0x000005DC
+_02217BCC: .word 0x0223F820
+_02217BD0: .word 0x00003000
+
+ thumb_func_start MOD13_02217BD4
+MOD13_02217BD4: ; 0x02217BD4
+ push {r4, r5, r6, lr}
+ sub sp, #0x28
+ add r5, r1, #0
+ add r6, r2, #0
+ mov r1, #0
+ add r0, sp, #0xc
+ strb r1, [r0]
+ strh r1, [r0, #2]
+ strh r1, [r0, #4]
+ ldr r0, _02217CB0 ; =0x02240B48
+ ldr r4, [r0]
+ add r0, sp, #0x1c
+ mov r2, #8
+ bl MOD13_022174C0
+ add r0, r4, #0
+ mov r1, #0
+ ldr r2, _02217CB4 ; =0x000005DC
+ bl MOD13_022174C0
+ mov r1, #2
+ add r0, sp, #0xc
+ strb r1, [r0, #0x10]
+ mov r1, #0
+ strb r1, [r0, #0x11]
+ mov r0, #4
+ bl MOD13_022173D0
+ add r1, sp, #0xc
+ strh r0, [r1, #0x12]
+ ldr r0, _02217CB8 ; =0x02240B60
+ ldr r0, [r0, #8]
+ str r0, [sp, #0x20]
+ bl MOD13_022173E8
+ str r0, [sp, #0x20]
+ mov r1, #8
+ add r0, sp, #0xc
+ strh r1, [r0, #2]
+ add r0, sp, #0x10
+ str r0, [sp]
+ add r0, sp, #0xc
+ str r0, [sp, #4]
+ ldr r0, _02217CBC ; =0x02240B34
+ ldr r0, [r0]
+ add r1, r4, #0
+ add r1, #0x18
+ add r2, sp, #0x1c
+ add r3, sp, #0xc
+ add r3, #2
+ bl MOD13_02217A7C
+ add r0, sp, #0x10
+ add r0, #2
+ add r5, #8
+ add r1, r5, #0
+ mov r2, #8
+ bl MOD13_022174CC
+ add r0, sp, #0x10
+ add r0, #2
+ mov r1, #8
+ ldr r2, _02217CC0 ; =0x0223F820
+ mov r3, #6
+ bl MOD13_02217684
+ cmp r0, #0
+ beq _02217C6E
+ mov r0, #2
+ bl MOD13_02218BF4
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x28
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_02217C6E:
+ add r3, sp, #0xc
+ mov r0, #0
+ ldrsb r0, [r3, r0]
+ str r0, [sp]
+ mov r0, #0x11
+ str r0, [sp, #4]
+ add r0, sp, #0x10
+ add r0, #2
+ str r0, [sp, #8]
+ add r0, r4, #0
+ ldr r1, _02217CC4 ; =0x00002000
+ mov r2, #2
+ ldrsh r2, [r3, r2]
+ mov r5, #4
+ ldrsh r3, [r3, r5]
+ bl MOD13_02217A1C
+ add r2, sp, #0xc
+ mov r1, #2
+ ldrsh r0, [r2, r1]
+ add r0, #0x18
+ strh r0, [r2, #2]
+ add r0, r4, #0
+ ldrsh r1, [r2, r1]
+ mov r2, #0
+ add r3, r6, #0
+ bl MOD13_022179B4
+ mov r0, #0
+ add sp, #0x28
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02217CB0: .word 0x02240B48
+_02217CB4: .word 0x000005DC
+_02217CB8: .word 0x02240B60
+_02217CBC: .word 0x02240B34
+_02217CC0: .word 0x0223F820
+_02217CC4: .word 0x00002000
+
+ thumb_func_start MOD13_02217CC8
+MOD13_02217CC8: ; 0x02217CC8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r7, r1, #0
+ str r2, [sp, #0xc]
+ mov r1, #0
+ add r0, sp, #0x10
+ strb r1, [r0]
+ strh r1, [r0, #2]
+ strh r1, [r0, #4]
+ ldr r0, _02217E08 ; =0x02240B48
+ ldr r5, [r0]
+ add r0, r5, #0
+ ldr r2, _02217E0C ; =0x000005DC
+ bl MOD13_022174C0
+ ldr r0, _02217E10 ; =0x00000210
+ bl MOD13_022198B4
+ add r4, r0, #0
+ cmp r4, #0
+ bne _02217D04
+ mov r0, #2
+ bl MOD13_02218BF4
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x24
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02217D04:
+ mov r1, #0
+ ldr r2, _02217E10 ; =0x00000210
+ bl MOD13_022174C0
+ add r6, r5, #0
+ add r6, #0x18
+ ldr r0, _02217E14 ; =0x02240B4C
+ add r1, r7, #0
+ mov r2, #8
+ bl MOD13_022174CC
+ add r0, sp, #0x14
+ add r0, #2
+ ldr r1, _02217E14 ; =0x02240B4C
+ mov r2, #8
+ bl MOD13_022174CC
+ add r0, r4, #4
+ bl MOD13_02217AD8
+ add r1, sp, #0x10
+ strh r0, [r1, #2]
+ mov r0, #2
+ ldrsh r0, [r1, r0]
+ cmp r0, #0
+ bge _02217D54
+ mov r0, #3
+ bl MOD13_02218BF4
+ cmp r4, #0
+ beq _02217D48
+ add r0, r4, #0
+ bl MOD13_022198A0
+_02217D48:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x24
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02217D54:
+ mov r0, #0
+ strb r0, [r4]
+ ldrh r0, [r1, #2]
+ bl MOD13_022173D0
+ strh r0, [r4, #2]
+ add r1, sp, #0x10
+ mov r0, #2
+ ldrsh r0, [r1, r0]
+ add r0, r0, #4
+ strh r0, [r1, #2]
+ add r0, sp, #0x14
+ str r0, [sp]
+ add r0, sp, #0x10
+ str r0, [sp, #4]
+ mov r0, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ add r3, sp, #0x10
+ add r3, #2
+ bl MOD13_02217A7C
+ add r1, sp, #0x10
+ mov r0, #4
+ ldrsh r2, [r1, r0]
+ mov r0, #0x10
+ orr r2, r0
+ strh r2, [r1, #4]
+ add r0, sp, #0x14
+ add r0, #2
+ mov r1, #8
+ ldr r2, _02217E18 ; =0x0223F820
+ mov r3, #6
+ bl MOD13_02217684
+ cmp r0, #0
+ beq _02217DBA
+ mov r0, #2
+ bl MOD13_02218BF4
+ cmp r4, #0
+ beq _02217DAE
+ add r0, r4, #0
+ bl MOD13_022198A0
+_02217DAE:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x24
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02217DBA:
+ add r3, sp, #0x10
+ mov r0, #0
+ ldrsb r0, [r3, r0]
+ str r0, [sp]
+ mov r0, #0x11
+ str r0, [sp, #4]
+ add r0, sp, #0x14
+ add r0, #2
+ str r0, [sp, #8]
+ add r0, r5, #0
+ ldr r1, _02217E1C ; =0x00001000
+ mov r2, #2
+ ldrsh r2, [r3, r2]
+ mov r6, #4
+ ldrsh r3, [r3, r6]
+ bl MOD13_02217A1C
+ add r2, sp, #0x10
+ mov r1, #2
+ ldrsh r0, [r2, r1]
+ add r0, #0x18
+ strh r0, [r2, #2]
+ add r0, r5, #0
+ ldrsh r1, [r2, r1]
+ mov r2, #0xff
+ ldr r3, [sp, #0xc]
+ bl MOD13_022179B4
+ cmp r4, #0
+ beq _02217DFC
+ add r0, r4, #0
+ bl MOD13_022198A0
+_02217DFC:
+ mov r0, #0
+ add sp, #0x24
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_02217E08: .word 0x02240B48
+_02217E0C: .word 0x000005DC
+_02217E10: .word 0x00000210
+_02217E14: .word 0x02240B4C
+_02217E18: .word 0x0223F820
+_02217E1C: .word 0x00001000
+
+ thumb_func_start MOD13_02217E20
+MOD13_02217E20: ; 0x02217E20
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ cmp r0, #0
+ beq _02217E36
+ cmp r0, #1
+ beq _02217E4C
+ cmp r0, #2
+ beq _02217E62
+ b _02217E78
+_02217E36:
+ mov r0, #2
+ bl MOD13_02218870
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD13_02217CC8
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_02217E4C:
+ mov r0, #3
+ bl MOD13_02218870
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD13_02217BD4
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_02217E62:
+ mov r0, #5
+ bl MOD13_02218870
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD13_02217B64
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_02217E78:
+ mov r0, #0
+ mvn r0, r0
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_02217E84
+MOD13_02217E84: ; 0x02217E84
+ mov r2, #0
+ mov r1, #0x10
+ and r0, r1
+ cmp r0, #0
+ beq _02217E90
+ mov r2, #1
+_02217E90:
+ add r0, r2, #0
+ bx lr
+
+ thumb_func_start MOD13_02217E94
+MOD13_02217E94: ; 0x02217E94
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp]
+ add r4, r1, #0
+ add r6, r2, #0
+ str r3, [sp, #4]
+ mov r5, #0
+ cmp r6, #0
+ bgt _02217EB2
+ mov r0, #1
+ mvn r0, r0
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02217EB2:
+ ldr r1, _02217FA0 ; =0x0223F7B8
+ add r7, r1, r0
+_02217EB6:
+ add r2, r4, #0
+ ldrb r1, [r4]
+ ldrb r0, [r7]
+ cmp r1, r0
+ beq _02217EDC
+ ldrh r0, [r4, #2]
+ bl MOD13_02217380
+ add r0, r0, #4
+ add r4, r4, r0
+ sub r6, r6, r0
+ cmp r6, #0
+ bgt _02217EB6
+ mov r0, #3
+ mvn r0, r0
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02217EDC:
+ add r4, r4, #4
+ ldrh r0, [r2, #2]
+ bl MOD13_02217380
+ add r7, r0, #0
+ ldr r0, _02217FA4 ; =0x00000350
+ ldr r1, [sp]
+ mul r1, r0
+ ldr r0, [sp, #4]
+ add r6, r0, r1
+ ldr r0, [sp, #0x28]
+ ldr r1, [sp]
+ add r1, r1, #3
+ lsl r1, r1, #7
+ add r0, r0, r1
+ str r0, [sp, #8]
+ mov r0, #2
+ mvn r0, r0
+ str r0, [sp, #0xc]
+_02217F02:
+ ldrb r0, [r4]
+ cmp r0, #0xa
+ bhi _02217F76
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #8]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, pc
+ bx r0
+_02217F16: ; jump table
+ .short _02217F76 - _02217F16 + 1 ; case 0
+ .short _02217F76 - _02217F16 + 1 ; case 1
+ .short _02217F76 - _02217F16 + 1 ; case 2
+ .short _02217F2C - _02217F16 + 1 ; case 3
+ .short _02217F3C - _02217F16 + 1 ; case 4
+ .short _02217F4C - _02217F16 + 1 ; case 5
+ .short _02217F5C - _02217F16 + 1 ; case 6
+ .short _02217F76 - _02217F16 + 1 ; case 7
+ .short _02217F76 - _02217F16 + 1 ; case 8
+ .short _02217F76 - _02217F16 + 1 ; case 9
+ .short _02217F6C - _02217F16 + 1 ; case 10
+_02217F2C:
+ add r0, r4, #0
+ add r1, r6, #0
+ add r1, #8
+ bl MOD13_022180CC
+ mov r1, #1
+ orr r5, r1
+ b _02217F78
+_02217F3C:
+ add r0, r4, #0
+ ldr r1, _02217FA8 ; =0x00000138
+ add r1, r6, r1
+ bl MOD13_022180CC
+ mov r1, #2
+ orr r5, r1
+ b _02217F78
+_02217F4C:
+ add r0, r4, #0
+ ldr r1, _02217FAC ; =0x00000268
+ add r1, r6, r1
+ bl MOD13_02217FFC
+ mov r1, #4
+ orr r5, r1
+ b _02217F78
+_02217F5C:
+ add r0, r4, #0
+ ldr r1, _02217FB0 ; =0x000002D8
+ add r1, r6, r1
+ bl MOD13_02217FFC
+ mov r1, #8
+ orr r5, r1
+ b _02217F78
+_02217F6C:
+ add r0, r4, #0
+ ldr r1, [sp, #8]
+ bl MOD13_02217FB8
+ b _02217F78
+_02217F76:
+ ldr r0, [sp, #0xc]
+_02217F78:
+ cmp r0, #0
+ bne _02217F96
+ ldrh r0, [r4, #2]
+ bl MOD13_02217380
+ add r0, r0, #4
+ add r4, r4, r0
+ sub r7, r7, r0
+ cmp r7, #0
+ bgt _02217F02
+ ldr r0, _02217FB4 ; =0x02240B60
+ ldr r1, [r0, #0xc]
+ orr r1, r5
+ str r1, [r0, #0xc]
+ mov r0, #0
+_02217F96:
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_02217FA0: .word 0x0223F7B8
+_02217FA4: .word 0x00000350
+_02217FA8: .word 0x00000138
+_02217FAC: .word 0x00000268
+_02217FB0: .word 0x000002D8
+_02217FB4: .word 0x02240B60
+
+ thumb_func_start MOD13_02217FB8
+MOD13_02217FB8: ; 0x02217FB8
+ push {r4, r5, lr}
+ sub sp, #4
+ add r5, r1, #0
+ add r4, r0, #6
+ ldrh r0, [r4, #2]
+ bl MOD13_02217380
+ add r2, r0, #0
+ cmp r2, #0
+ bgt _02217FD8
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+_02217FD8:
+ ldrb r0, [r4]
+ cmp r0, #0x70
+ beq _02217FEA
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+_02217FEA:
+ add r0, r5, #0
+ add r1, r4, #6
+ bl MOD13_022174CC
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+
+ thumb_func_start MOD13_02217FFC
+MOD13_02217FFC: ; 0x02217FFC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r7, r0, #0
+ add r6, r1, #0
+ add r5, r7, #6
+_02218006:
+ ldrh r0, [r5, #2]
+ bl MOD13_02217380
+ add r4, r0, #0
+ ldrb r0, [r5]
+ cmp r0, #0x35
+ bgt _0221801E
+ cmp r0, #0x35
+ bge _0221803E
+ cmp r0, #0x30
+ beq _0221802E
+ b _0221804E
+_0221801E:
+ cmp r0, #0x40
+ bgt _02218028
+ cmp r0, #0x40
+ beq _0221802E
+ b _0221804E
+_02218028:
+ cmp r0, #0x45
+ beq _0221803E
+ b _0221804E
+_0221802E:
+ cmp r4, #0x40
+ bls _0221804E
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221803E:
+ cmp r4, #0x21
+ bls _0221804E
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221804E:
+ cmp r0, #0x35
+ bgt _0221805C
+ cmp r0, #0x35
+ bge _0221807C
+ cmp r0, #0x30
+ beq _0221806C
+ b _022180A4
+_0221805C:
+ cmp r0, #0x40
+ bgt _02218066
+ cmp r0, #0x40
+ beq _0221806C
+ b _022180A4
+_02218066:
+ cmp r0, #0x45
+ beq _0221807C
+ b _022180A4
+_0221806C:
+ add r0, r6, #0
+ add r0, #0x30
+ add r1, r5, #6
+ add r2, r4, #0
+ bl MOD13_022174CC
+ str r4, [r6, #4]
+ b _022180B0
+_0221807C:
+ cmp r4, #0
+ beq _02218096
+ sub r0, r4, #1
+ add r0, r5, r0
+ ldrb r0, [r0, #6]
+ cmp r0, #0
+ beq _02218096
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218096:
+ add r0, r6, #0
+ add r0, #8
+ add r1, r5, #6
+ add r2, r4, #0
+ bl MOD13_022174CC
+ b _022180B0
+_022180A4:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022180B0:
+ ldrh r0, [r5, #4]
+ cmp r0, #0
+ beq _022180C0
+ bl MOD13_02217380
+ add r1, r7, #6
+ add r5, r1, r0
+ b _02218006
+_022180C0:
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_022180CC
+MOD13_022180CC: ; 0x022180CC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r7, r0, #0
+ add r6, r1, #0
+ add r5, r7, #6
+_022180D6:
+ ldrh r0, [r5, #2]
+ bl MOD13_02217380
+ add r4, r0, #0
+ ldrb r0, [r5]
+ cmp r0, #0x21
+ bgt _02218114
+ cmp r0, #0x21
+ bge _02218138
+ cmp r0, #0x15
+ bgt _0221810E
+ add r1, r0, #0
+ sub r1, #0x10
+ cmp r1, #0
+ blt _02218158
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #8]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add r1, pc
+ bx r1
+_02218102: ; jump table
+ .short _02218128 - _02218102 + 1 ; case 0
+ .short _02218128 - _02218102 + 1 ; case 1
+ .short _02218128 - _02218102 + 1 ; case 2
+ .short _02218128 - _02218102 + 1 ; case 3
+ .short _02218158 - _02218102 + 1 ; case 4
+ .short _02218148 - _02218102 + 1 ; case 5
+_0221810E:
+ cmp r0, #0x20
+ beq _02218138
+ b _02218158
+_02218114:
+ cmp r0, #0x23
+ bgt _02218122
+ cmp r0, #0x23
+ bge _02218138
+ cmp r0, #0x22
+ beq _02218138
+ b _02218158
+_02218122:
+ cmp r0, #0x25
+ beq _02218148
+ b _02218158
+_02218128:
+ cmp r4, #5
+ bls _02218158
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218138:
+ cmp r4, #0xd
+ bls _02218158
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218148:
+ cmp r4, #0x21
+ bls _02218158
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218158:
+ cmp r0, #0x21
+ bgt _0221818C
+ cmp r0, #0x21
+ bge _022181B0
+ cmp r0, #0x15
+ bgt _02218186
+ add r1, r0, #0
+ sub r1, #0x10
+ cmp r1, #0
+ blt _02218208
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #8]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add r1, pc
+ bx r1
+_0221817A: ; jump table
+ .short _022181A0 - _0221817A + 1 ; case 0
+ .short _022181B0 - _0221817A + 1 ; case 1
+ .short _022181C0 - _0221817A + 1 ; case 2
+ .short _022181D0 - _0221817A + 1 ; case 3
+ .short _02218208 - _0221817A + 1 ; case 4
+ .short _022181E0 - _0221817A + 1 ; case 5
+_02218186:
+ cmp r0, #0x20
+ beq _022181A0
+ b _02218208
+_0221818C:
+ cmp r0, #0x23
+ bgt _0221819A
+ cmp r0, #0x23
+ bge _022181D0
+ cmp r0, #0x22
+ beq _022181C0
+ b _02218208
+_0221819A:
+ cmp r0, #0x25
+ beq _022181E0
+ b _02218208
+_022181A0:
+ add r0, r6, #0
+ add r0, #0x30
+ add r1, r5, #6
+ add r2, r4, #0
+ bl MOD13_022174CC
+ str r4, [r6, #4]
+ b _02218214
+_022181B0:
+ add r0, r6, #0
+ add r0, #0x70
+ add r1, r5, #6
+ add r2, r4, #0
+ bl MOD13_022174CC
+ str r4, [r6, #4]
+ b _02218214
+_022181C0:
+ add r0, r6, #0
+ add r0, #0xb0
+ add r1, r5, #6
+ add r2, r4, #0
+ bl MOD13_022174CC
+ str r4, [r6, #4]
+ b _02218214
+_022181D0:
+ add r0, r6, #0
+ add r0, #0xf0
+ add r1, r5, #6
+ add r2, r4, #0
+ bl MOD13_022174CC
+ str r4, [r6, #4]
+ b _02218214
+_022181E0:
+ cmp r4, #0
+ beq _022181FA
+ sub r0, r4, #1
+ add r0, r5, r0
+ ldrb r0, [r0, #6]
+ cmp r0, #0
+ beq _022181FA
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022181FA:
+ add r0, r6, #0
+ add r0, #8
+ add r1, r5, #6
+ add r2, r4, #0
+ bl MOD13_022174CC
+ b _02218214
+_02218208:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218214:
+ ldrh r0, [r5, #4]
+ cmp r0, #0
+ beq _02218224
+ bl MOD13_02217380
+ add r1, r7, #6
+ add r5, r1, r0
+ b _022180D6
+_02218224:
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_02218230
+MOD13_02218230: ; 0x02218230
+ push {r4, r5}
+ mov r5, #0
+ sub r2, r1, #1
+ add r3, r0, r2
+ add r4, r5, #0
+ cmp r1, #0
+ ble _0221824C
+_0221823E:
+ lsl r2, r5, #8
+ ldrb r0, [r3]
+ sub r3, r3, #1
+ add r5, r2, r0
+ add r4, r4, #1
+ cmp r4, r1
+ blt _0221823E
+_0221824C:
+ add r0, r5, #0
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD13_02218254
+MOD13_02218254: ; 0x02218254
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r6, r0, #0
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #0
+ ldr r2, _02218320 ; =0x00000104
+ bl MOD13_022174C0
+ add r4, r6, #0
+ ldr r7, _02218324 ; =0x02240B60
+_0221826A:
+ ldrh r0, [r4, #2]
+ bl MOD13_02217380
+ add r2, r0, #0
+ cmp r2, #0
+ bgt _02218282
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218282:
+ ldrb r0, [r4]
+ cmp r0, #6
+ bhi _022182FC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #8]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, pc
+ bx r0
+_02218296: ; jump table
+ .short _022182A4 - _02218296 + 1 ; case 0
+ .short _022182AE - _02218296 + 1 ; case 1
+ .short _022182BA - _02218296 + 1 ; case 2
+ .short _022182C6 - _02218296 + 1 ; case 3
+ .short _022182C6 - _02218296 + 1 ; case 4
+ .short _022182DC - _02218296 + 1 ; case 5
+ .short _022182EC - _02218296 + 1 ; case 6
+_022182A4:
+ add r0, r5, #0
+ add r1, r4, #6
+ bl MOD13_022174CC
+ b _02218308
+_022182AE:
+ add r0, r5, #0
+ add r0, #0x80
+ add r1, r4, #6
+ bl MOD13_022174CC
+ b _02218308
+_022182BA:
+ ldr r0, _02218328 ; =0x00000100
+ add r0, r5, r0
+ add r1, r4, #6
+ bl MOD13_022174CC
+ b _02218308
+_022182C6:
+ ldrb r0, [r4, #6]
+ bl MOD13_02217380
+ cmp r0, #0
+ bgt _02218308
+ mov r0, #1
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022182DC:
+ add r0, r4, #6
+ add r1, r2, #0
+ bl MOD13_02218230
+ bl MOD13_02217398
+ str r0, [r7, #0x10]
+ b _02218308
+_022182EC:
+ add r0, r4, #6
+ add r1, r2, #0
+ bl MOD13_02218230
+ bl MOD13_02217398
+ str r0, [r7, #0x14]
+ b _02218308
+_022182FC:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218308:
+ ldrh r0, [r4, #4]
+ cmp r0, #0
+ beq _02218316
+ bl MOD13_02217380
+ add r4, r6, r0
+ b _0221826A
+_02218316:
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02218320: .word 0x00000104
+_02218324: .word 0x02240B60
+_02218328: .word 0x00000100
+
+ thumb_func_start MOD13_0221832C
+MOD13_0221832C: ; 0x0221832C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r4, #0
+ ldr r0, _0221837C ; =0x0223F820
+ bl MOD13_0221736C
+ add r3, r0, #0
+ add r0, r5, #0
+ mov r1, #8
+ ldr r2, _0221837C ; =0x0223F820
+ bl MOD13_02217684
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r2, #6
+ bl MOD13_022174DC
+ cmp r0, #0
+ beq _0221835A
+ lsl r0, r4, #0
+ mvn r4, r0
+ b _02218372
+_0221835A:
+ ldrh r0, [r6, #6]
+ bl MOD13_02217380
+ add r6, r0, #0
+ ldrh r0, [r5, #6]
+ bl MOD13_02217380
+ add r1, r6, #1
+ cmp r1, r0
+ beq _02218372
+ mov r0, #1
+ mvn r4, r0
+_02218372:
+ add r0, r4, #0
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ nop
+_0221837C: .word 0x0223F820
+
+ thumb_func_start MOD13_02218380
+MOD13_02218380: ; 0x02218380
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r4, #0
+ add r6, r4, #0
+ ldr r3, _022183C0 ; =0x02240B4C
+_0221838A:
+ ldrb r2, [r3]
+ cmp r2, #0
+ beq _02218394
+ mov r5, #1
+ b _0221839C
+_02218394:
+ add r3, r3, #1
+ add r6, r6, #1
+ cmp r6, #6
+ blt _0221838A
+_0221839C:
+ cmp r5, #0
+ beq _022183B0
+ ldr r0, _022183C0 ; =0x02240B4C
+ mov r2, #6
+ bl MOD13_022174DC
+ cmp r0, #0
+ beq _022183B8
+ mov r4, #1
+ b _022183B8
+_022183B0:
+ ldr r1, _022183C4 ; =0x00001000
+ cmp r0, r1
+ beq _022183B8
+ mov r4, #2
+_022183B8:
+ add r0, r4, #0
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_022183C0: .word 0x02240B4C
+_022183C4: .word 0x00001000
+
+ thumb_func_start MOD13_022183C8
+MOD13_022183C8: ; 0x022183C8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r4, r5, #0
+ add r4, #0x18
+ add r0, sp, #0xc
+ add r1, r5, #0
+ add r1, #0x10
+ mov r2, #8
+ bl MOD13_022174CC
+ ldr r0, _022184CC ; =0x0223F820
+ bl MOD13_0221736C
+ add r3, r0, #0
+ add r0, sp, #0xc
+ mov r1, #8
+ ldr r2, _022184CC ; =0x0223F820
+ bl MOD13_02217684
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _0221840A
+ mov r0, #2
+ bl MOD13_02218BF4
+ mov r0, #0x63
+ mvn r0, r0
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221840A:
+ ldrh r0, [r5, #6]
+ bl MOD13_02217380
+ add r1, sp, #0xc
+ bl MOD13_02218380
+ cmp r0, #0
+ bne _022184C4
+ ldrh r0, [r5, #6]
+ bl MOD13_02217380
+ ldr r1, _022184D0 ; =0x00001000
+ cmp r0, r1
+ bne _02218430
+ ldr r0, _022184D4 ; =0x02240B4C
+ add r1, sp, #0xc
+ mov r2, #8
+ bl MOD13_022174CC
+_02218430:
+ ldrh r0, [r5, #0xc]
+ bl MOD13_02217380
+ mov r1, #0xf
+ and r0, r1
+ cmp r0, #0
+ bne _02218448
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218448:
+ ldrh r0, [r4]
+ bl MOD13_02217380
+ add r6, r0, #0
+ bl MOD13_022198B4
+ add r7, r0, #0
+ cmp r7, #0
+ bne _0221846A
+ mov r0, #2
+ bl MOD13_02218BF4
+ mov r0, #0x64
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221846A:
+ add r0, r4, #2
+ str r0, [sp]
+ ldr r0, _022184D4 ; =0x02240B4C
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ add r0, r4, #4
+ add r1, r7, #0
+ add r2, r6, #0
+ ldrb r3, [r5, #0xe]
+ bl MOD13_0221789C
+ cmp r0, #0
+ bge _022184A8
+ add r0, r7, #0
+ bl MOD13_022198A0
+ bl MOD13_02218BE8
+ cmp r0, #2
+ bne _0221849E
+ mov r0, #0x64
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221849E:
+ mov r0, #0xc8
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022184A8:
+ add r0, r4, #0
+ add r1, r7, #0
+ add r2, r6, #0
+ bl MOD13_022174CC
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ bl MOD13_022173D0
+ strh r0, [r5, #0xa]
+ add r0, r7, #0
+ bl MOD13_022198A0
+ mov r0, #0
+_022184C4:
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_022184CC: .word 0x0223F820
+_022184D0: .word 0x00001000
+_022184D4: .word 0x02240B4C
+
+ thumb_func_start MOD13_022184D8
+MOD13_022184D8: ; 0x022184D8
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r2, #0
+ cmp r6, #2
+ beq _022184EE
+ ldr r1, [r5]
+ add r1, r1, #1
+ str r1, [r5]
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_022184EE:
+ add r4, r1, #0
+ add r4, #0x24
+ add r3, #0x10
+ add r0, r3, #0
+ add r1, #0xc
+ add r1, #0x10
+ bl MOD13_0221832C
+ cmp r0, #0
+ bge _02218510
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ add r0, r6, #0
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_02218510:
+ ldrb r0, [r4]
+ cmp r0, #7
+ beq _02218524
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ add r0, r6, #0
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_02218524:
+ ldrh r0, [r4, #2]
+ bl MOD13_02217380
+ cmp r0, #0
+ bne _0221853C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ add r0, r6, #0
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_0221853C:
+ ldr r0, [r4, #4]
+ bl MOD13_02217398
+ cmp r0, #0
+ bne _0221854E
+ mov r0, #0x64
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_0221854E:
+ ldr r0, [r4, #4]
+ bl MOD13_02217398
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ bne _0221856C
+ mov r0, #0x14
+ bl MOD13_02218BF4
+ mov r0, #0
+ mvn r0, r0
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_0221856C:
+ ldr r0, [r4, #4]
+ bl MOD13_02217398
+ mov r1, #2
+ mvn r1, r1
+ cmp r0, r1
+ bne _0221858A
+ mov r0, #0x15
+ bl MOD13_02218BF4
+ mov r0, #0
+ mvn r0, r0
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_0221858A:
+ mov r0, #0x18
+ bl MOD13_02218BF4
+ mov r0, #0
+ mvn r0, r0
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_0221859C
+MOD13_0221859C: ; 0x0221859C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r6, r0, #0
+ add r5, r2, #0
+ cmp r6, #1
+ beq _022185B6
+ ldr r1, [r5]
+ add r1, r1, #1
+ str r1, [r5]
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022185B6:
+ add r7, r1, #0
+ add r7, #0xc
+ add r4, r1, #0
+ add r4, #0x24
+ add r3, #8
+ add r0, r3, #0
+ add r1, r7, #0
+ add r1, #0x10
+ bl MOD13_0221832C
+ cmp r0, #0
+ bge _022185DE
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ add r0, r6, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022185DE:
+ ldrh r0, [r4, #2]
+ bl MOD13_02217380
+ cmp r0, #0
+ bne _022185F8
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ add r0, r6, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022185F8:
+ ldrb r0, [r4]
+ cmp r0, #7
+ bne _0221863C
+ ldr r0, [r4, #4]
+ bl MOD13_02217398
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ bne _02218614
+ mov r0, #0x14
+ bl MOD13_02218BF4
+ b _02218630
+_02218614:
+ ldr r0, [r4, #4]
+ bl MOD13_02217398
+ mov r1, #2
+ mvn r1, r1
+ cmp r0, r1
+ bne _0221862A
+ mov r0, #0x15
+ bl MOD13_02218BF4
+ b _02218630
+_0221862A:
+ mov r0, #0x18
+ bl MOD13_02218BF4
+_02218630:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221863C:
+ ldr r0, _02218694 ; =0x02241260
+ mov r1, #0
+ ldr r2, _02218698 ; =0x000006A0
+ bl MOD13_022174C0
+ ldrh r0, [r7, #0xa]
+ bl MOD13_02217380
+ add r2, r0, #0
+ ldr r0, _0221869C ; =0x02240BE0
+ str r0, [sp]
+ mov r0, #0
+ add r1, r4, #0
+ ldr r3, _02218694 ; =0x02241260
+ bl MOD13_02217E94
+ cmp r0, #0
+ bge _02218670
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ add r0, r6, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218670:
+ ldr r0, _022186A0 ; =0x02240B60
+ ldr r1, [r0, #0xc]
+ ldr r0, [r0, #8]
+ and r1, r0
+ cmp r1, #0
+ bne _02218686
+ add r0, r6, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218686:
+ mov r0, #0
+ str r0, [r5]
+ mov r0, #2
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02218694: .word 0x02241260
+_02218698: .word 0x000006A0
+_0221869C: .word 0x02240BE0
+_022186A0: .word 0x02240B60
+
+ thumb_func_start MOD13_022186A4
+MOD13_022186A4: ; 0x022186A4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r6, r0, #0
+ add r5, r2, #0
+ cmp r6, #0
+ beq _022186BE
+ ldr r1, [r5]
+ add r1, r1, #1
+ str r1, [r5]
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022186BE:
+ add r7, r1, #0
+ add r7, #0xc
+ add r4, r1, #0
+ add r4, #0x24
+ add r0, r3, #0
+ add r1, r7, #0
+ add r1, #0x10
+ bl MOD13_0221832C
+ cmp r0, #0
+ bge _022186E4
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ add r0, r6, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022186E4:
+ ldrh r0, [r4, #2]
+ bl MOD13_02217380
+ cmp r0, #0
+ bne _022186FE
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ add r0, r6, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022186FE:
+ ldrb r0, [r4]
+ cmp r0, #7
+ bne _02218744
+ add r5, r4, #4
+ ldr r0, [r4, #4]
+ bl MOD13_02217398
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ bne _0221871C
+ mov r0, #0x14
+ bl MOD13_02218BF4
+ b _02218738
+_0221871C:
+ ldr r0, [r5]
+ bl MOD13_02217398
+ mov r1, #2
+ mvn r1, r1
+ cmp r0, r1
+ bne _02218732
+ mov r0, #0x15
+ bl MOD13_02218BF4
+ b _02218738
+_02218732:
+ mov r0, #0x18
+ bl MOD13_02218BF4
+_02218738:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218744:
+ cmp r0, #1
+ beq _02218758
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ add r0, r6, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218758:
+ add r0, r4, #4
+ ldr r1, _022187AC ; =0x02240BE0
+ bl MOD13_02218254
+ cmp r0, #0
+ bge _0221878E
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ bne _0221877E
+ mov r0, #0x16
+ bl MOD13_02218BF4
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221877E:
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ add r0, r6, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221878E:
+ ldrh r0, [r7, #0xc]
+ bl MOD13_02217380
+ bl MOD13_02217E84
+ ldr r1, _022187B0 ; =0x02240B34
+ str r0, [r1]
+ mov r0, #0
+ str r0, [r5]
+ mov r0, #1
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_022187AC: .word 0x02240BE0
+_022187B0: .word 0x02240B34
+
+ thumb_func_start MOD13_022187B4
+MOD13_022187B4: ; 0x022187B4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ str r3, [sp]
+ add r7, r6, #0
+ add r7, #0xc
+ ldrh r0, [r6, #0xc]
+ bl MOD13_02217380
+ cmp r0, #1
+ bhs _022187DE
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ add r0, r5, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022187DE:
+ ldrb r0, [r7, #0xf]
+ cmp r0, #0x11
+ beq _022187F4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ add r0, r5, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022187F4:
+ add r0, r6, #0
+ add r0, #0xc
+ bl MOD13_022183C8
+ cmp r0, #0
+ ble _02218810
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ add r0, r5, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218810:
+ ldrh r0, [r7, #6]
+ bl MOD13_02217380
+ ldr r1, _02218864 ; =0x00001010
+ cmp r0, r1
+ beq _0221882A
+ ldr r1, _02218868 ; =0x00002010
+ cmp r0, r1
+ beq _0221883A
+ ldr r1, _0221886C ; =0x00003010
+ cmp r0, r1
+ beq _0221884A
+ b _02218858
+_0221882A:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ ldr r3, [sp]
+ bl MOD13_022186A4
+ add r5, r0, #0
+ b _02218858
+_0221883A:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ ldr r3, [sp]
+ bl MOD13_0221859C
+ add r5, r0, #0
+ b _02218858
+_0221884A:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ ldr r3, [sp]
+ bl MOD13_022184D8
+ add r5, r0, #0
+_02218858:
+ add r0, r5, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_02218864: .word 0x00001010
+_02218868: .word 0x00002010
+_0221886C: .word 0x00003010
+
+ thumb_func_start MOD13_02218870
+MOD13_02218870: ; 0x02218870
+ push {lr}
+ sub sp, #4
+ mov r3, #0
+ mvn r1, r3
+ cmp r0, r1
+ bne _02218888
+ ldr r1, _022188A4 ; =0x0223F7C4
+ str r0, [r1]
+ add r0, r3, #0
+ add sp, #4
+ pop {r3}
+ bx r3
+_02218888:
+ ldr r1, _022188A4 ; =0x0223F7C4
+ ldr r2, [r1]
+ cmp r2, r0
+ beq _0221889C
+ str r0, [r1]
+ bl MOD13_022198C8
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221889C:
+ add r0, r3, #0
+ add sp, #4
+ pop {r3}
+ bx r3
+ .align 2, 0
+_022188A4: .word 0x0223F7C4
+
+ thumb_func_start MOD13_022188A8
+MOD13_022188A8: ; 0x022188A8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r6, r0, #0
+ add r5, r1, #0
+ add r7, r2, #0
+ mov r4, #0
+ cmp r6, #0
+ ble _022188D8
+_022188B8:
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #6
+ bl MOD13_022174CC
+ bl MOD13_022172F0
+ strh r0, [r5, #6]
+ ldrh r0, [r5, #6]
+ bl MOD13_022173D0
+ strh r0, [r5, #6]
+ add r5, #8
+ add r4, r4, #1
+ cmp r4, r6
+ blt _022188B8
+_022188D8:
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+
+ thumb_func_start MOD13_022188E0
+MOD13_022188E0: ; 0x022188E0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02218924 ; =0x0223F828
+ bl MOD13_0221736C
+ str r0, [r4]
+ add r0, r4, #4
+ ldr r1, _02218924 ; =0x0223F828
+ ldr r2, [r4]
+ bl MOD13_022174CC
+ mov r0, #1
+ str r0, [r4, #0x24]
+ ldr r0, _02218928 ; =0x0223F820
+ bl MOD13_0221736C
+ str r0, [r4, #0x28]
+ ldr r2, [r4, #0x28]
+ cmp r2, #0xd
+ bls _02218912
+ mov r0, #0
+ mvn r0, r0
+ pop {r4}
+ pop {r3}
+ bx r3
+_02218912:
+ add r4, #0x2c
+ add r0, r4, #0
+ ldr r1, _02218928 ; =0x0223F820
+ bl MOD13_022174CC
+ mov r0, #0
+ pop {r4}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02218924: .word 0x0223F828
+_02218928: .word 0x0223F820
+
+ thumb_func_start MOD13_0221892C
+MOD13_0221892C: ; 0x0221892C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r4, #0
+ str r4, [sp, #4]
+ ldr r0, [r5]
+ str r0, [sp]
+ cmp r0, #0
+ bne _02218948
+ mov r0, #5
+ add sp, #0xc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218948:
+ cmp r0, #0x40
+ bls _02218950
+ mov r0, #0x40
+ str r0, [sp]
+_02218950:
+ mov r7, #0
+ ldr r0, [sp]
+ cmp r0, #0
+ ble _02218994
+ add r6, r5, #0
+ add r6, #8
+_0221895C:
+ ldr r1, [r5, #0x54]
+ mov r0, #1
+ and r1, r0
+ cmp r1, #0
+ beq _02218988
+ ldr r0, _022189B0 ; =0x0223F828
+ bl MOD13_0221736C
+ ldr r1, [r5, #4]
+ cmp r1, r0
+ bne _02218988
+ ldr r0, _022189B0 ; =0x0223F828
+ bl MOD13_0221736C
+ add r2, r0, #0
+ add r0, r6, #0
+ ldr r1, _022189B0 ; =0x0223F828
+ bl MOD13_022174DC
+ cmp r0, #0
+ bne _02218988
+ add r4, r4, #1
+_02218988:
+ add r5, #0x54
+ add r6, #0x54
+ add r7, r7, #1
+ ldr r0, [sp]
+ cmp r7, r0
+ blt _0221895C
+_02218994:
+ cmp r4, #1
+ ble _0221899C
+ mov r0, #4
+ str r0, [sp, #4]
+_0221899C:
+ cmp r4, #0
+ bne _022189A4
+ mov r0, #5
+ str r0, [sp, #4]
+_022189A4:
+ ldr r0, [sp, #4]
+ add sp, #0xc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_022189B0: .word 0x0223F828
+
+ thumb_func_start MOD13_022189B4
+MOD13_022189B4: ; 0x022189B4
+ mov r3, #0
+ cmp r1, #0
+ ble _022189D2
+_022189BA:
+ ldrb r2, [r0]
+ add r0, r0, #1
+ cmp r2, #0x20
+ blo _022189C6
+ cmp r2, #0x7f
+ bls _022189CC
+_022189C6:
+ mov r0, #0
+ mvn r0, r0
+ bx lr
+_022189CC:
+ add r3, r3, #1
+ cmp r3, r1
+ blt _022189BA
+_022189D2:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD13_022189D8
+MOD13_022189D8: ; 0x022189D8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0
+ ldr r0, _02218BC4 ; =0x00000117
+ add r5, r7, r0
+ ldr r4, _02218BC8 ; =0x02241268
+ ldr r6, _02218BCC ; =0x02241398
+ ldr r0, _02218BD0 ; =0x022414C8
+ str r0, [sp]
+ ldr r0, _02218BD4 ; =0x02241538
+ str r0, [sp, #4]
+ cmp r5, #0
+ bne _022189FE
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022189FE:
+ ldr r0, _02218BD8 ; =0x02240B60
+ ldr r1, [r0, #8]
+ ldr r0, [r0, #0xc]
+ and r1, r0
+ strh r1, [r7]
+ add r0, r5, #0
+ mov r1, #0
+ ldr r2, _02218BDC ; =0x00000154
+ bl MOD13_022174C0
+ ldrh r1, [r7]
+ mov r0, #1
+ and r1, r0
+ cmp r1, #0
+ beq _02218A7E
+ add r0, r5, #0
+ add r1, r4, #0
+ add r1, #0x30
+ ldr r2, [r4, #4]
+ bl MOD13_022174CC
+ add r0, r5, #6
+ add r1, r4, #0
+ add r1, #0x70
+ ldr r2, [r4, #4]
+ bl MOD13_022174CC
+ add r0, r5, #0
+ add r0, #0xc
+ add r1, r4, #0
+ add r1, #0xb0
+ ldr r2, [r4, #4]
+ bl MOD13_022174CC
+ add r0, r5, #0
+ add r0, #0x12
+ add r1, r4, #0
+ add r1, #0xf0
+ ldr r2, [r4, #4]
+ bl MOD13_022174CC
+ add r0, r4, #0
+ add r0, #8
+ bl MOD13_0221736C
+ add r1, r0, #0
+ add r0, r4, #0
+ add r0, #8
+ bl MOD13_022189B4
+ cmp r0, #0
+ beq _02218A68
+ b _02218BAE
+_02218A68:
+ add r0, r4, #0
+ add r0, #8
+ bl MOD13_0221736C
+ add r2, r0, #0
+ add r0, r5, #0
+ add r0, #0x18
+ add r4, #8
+ add r1, r4, #0
+ bl MOD13_022174CC
+_02218A7E:
+ ldrh r1, [r7]
+ mov r0, #2
+ and r1, r0
+ cmp r1, #0
+ beq _02218AEC
+ add r0, r5, #0
+ add r0, #0x39
+ add r1, r6, #0
+ add r1, #0x30
+ ldr r2, [r6, #4]
+ bl MOD13_022174CC
+ add r0, r5, #0
+ add r0, #0x47
+ add r1, r6, #0
+ add r1, #0x70
+ ldr r2, [r6, #4]
+ bl MOD13_022174CC
+ add r0, r5, #0
+ add r0, #0x55
+ add r1, r6, #0
+ add r1, #0xb0
+ ldr r2, [r6, #4]
+ bl MOD13_022174CC
+ add r0, r5, #0
+ add r0, #0x63
+ add r1, r6, #0
+ add r1, #0xf0
+ ldr r2, [r6, #4]
+ bl MOD13_022174CC
+ add r0, r6, #0
+ add r0, #8
+ bl MOD13_0221736C
+ add r1, r0, #0
+ add r0, r6, #0
+ add r0, #8
+ bl MOD13_022189B4
+ cmp r0, #0
+ bne _02218BAE
+ add r0, r6, #0
+ add r0, #8
+ bl MOD13_0221736C
+ add r2, r0, #0
+ add r0, r5, #0
+ add r0, #0x71
+ add r6, #8
+ add r1, r6, #0
+ bl MOD13_022174CC
+_02218AEC:
+ ldrh r1, [r7]
+ mov r0, #4
+ and r1, r0
+ cmp r1, #0
+ beq _02218B46
+ ldr r0, [sp]
+ add r0, #0x30
+ ldr r1, [sp]
+ ldr r1, [r1, #4]
+ sub r1, r1, #1
+ bl MOD13_022189B4
+ cmp r0, #0
+ bne _02218BAE
+ add r0, r5, #0
+ add r0, #0x92
+ ldr r1, [sp]
+ add r1, #0x30
+ ldr r2, [sp]
+ ldr r2, [r2, #4]
+ bl MOD13_022174CC
+ ldr r0, [sp]
+ add r0, #8
+ bl MOD13_0221736C
+ add r1, r0, #0
+ ldr r0, [sp]
+ add r0, #8
+ bl MOD13_022189B4
+ cmp r0, #0
+ bne _02218BAE
+ ldr r0, [sp]
+ add r0, #8
+ bl MOD13_0221736C
+ add r2, r0, #0
+ add r0, r5, #0
+ add r0, #0xd2
+ ldr r1, [sp]
+ add r1, #8
+ str r1, [sp]
+ bl MOD13_022174CC
+_02218B46:
+ ldrh r1, [r7]
+ mov r0, #8
+ and r1, r0
+ cmp r1, #0
+ beq _02218BA0
+ ldr r0, [sp, #4]
+ add r0, #0x30
+ ldr r1, [sp, #4]
+ ldr r1, [r1, #4]
+ sub r1, r1, #1
+ bl MOD13_022189B4
+ cmp r0, #0
+ bne _02218BAE
+ add r0, r5, #0
+ add r0, #0xf3
+ ldr r1, [sp, #4]
+ add r1, #0x30
+ ldr r2, [sp, #4]
+ ldr r2, [r2, #4]
+ bl MOD13_022174CC
+ ldr r0, [sp, #4]
+ add r0, #8
+ bl MOD13_0221736C
+ add r1, r0, #0
+ ldr r0, [sp, #4]
+ add r0, #8
+ bl MOD13_022189B4
+ cmp r0, #0
+ bne _02218BAE
+ ldr r0, [sp, #4]
+ add r0, #8
+ bl MOD13_0221736C
+ add r2, r0, #0
+ ldr r0, _02218BE0 ; =0x00000133
+ add r0, r5, r0
+ ldr r1, [sp, #4]
+ add r1, #8
+ str r1, [sp, #4]
+ bl MOD13_022174CC
+_02218BA0:
+ mov r0, #0
+ ldr r1, _02218BE4 ; =0x00000116
+ strb r0, [r7, r1]
+ add sp, #0xc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218BAE:
+ add r0, r5, #0
+ mov r1, #0
+ ldr r2, _02218BDC ; =0x00000154
+ bl MOD13_022174C0
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02218BC4: .word 0x00000117
+_02218BC8: .word 0x02241268
+_02218BCC: .word 0x02241398
+_02218BD0: .word 0x022414C8
+_02218BD4: .word 0x02241538
+_02218BD8: .word 0x02240B60
+_02218BDC: .word 0x00000154
+_02218BE0: .word 0x00000133
+_02218BE4: .word 0x00000116
+
+ thumb_func_start MOD13_02218BE8
+MOD13_02218BE8: ; 0x02218BE8
+ ldr r0, _02218BF0 ; =0x02240B44
+ ldr r0, [r0]
+ bx lr
+ nop
+_02218BF0: .word 0x02240B44
+
+ thumb_func_start MOD13_02218BF4
+MOD13_02218BF4: ; 0x02218BF4
+ ldr r1, _02218BFC ; =0x02240B44
+ str r0, [r1]
+ bx lr
+ nop
+_02218BFC: .word 0x02240B44
+
+ thumb_func_start MOD13_02218C00
+MOD13_02218C00: ; 0x02218C00
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02218C44 ; =0x02240B4C
+ mov r1, #0
+ mov r2, #8
+ bl MOD13_022174C0
+ mov r1, #1
+ ldr r0, _02218C48 ; =0x02240B44
+ str r1, [r0]
+ ldr r0, _02218C4C ; =0x02240B60
+ mov r1, #0
+ mov r2, #0x1c
+ bl MOD13_022174C0
+ add r0, r4, #6
+ ldr r1, _02218C4C ; =0x02240B60
+ str r0, [r1]
+ ldrh r0, [r4, #4]
+ str r0, [r1, #4]
+ ldrh r2, [r4]
+ mov r0, #0xf
+ and r2, r0
+ str r2, [r1, #8]
+ ldrb r0, [r4, #2]
+ strb r0, [r1, #0x19]
+ mov r2, #0
+ str r2, [r1, #0xc]
+ ldr r0, _02218C50 ; =0xC0A80B01
+ str r0, [r1, #0x10]
+ strb r2, [r1, #0x18]
+ pop {r4}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02218C44: .word 0x02240B4C
+_02218C48: .word 0x02240B44
+_02218C4C: .word 0x02240B60
+_02218C50: .word 0xC0A80B01
+
+ thumb_func_start MOD13_02218C54
+MOD13_02218C54: ; 0x02218C54
+ push {lr}
+ sub sp, #4
+ ldr r0, _02218C84 ; =0x02240B40
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02218C6A
+ bl MOD13_022198A0
+ mov r1, #0
+ ldr r0, _02218C84 ; =0x02240B40
+ str r1, [r0]
+_02218C6A:
+ ldr r0, _02218C88 ; =0x02240B38
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02218C7C
+ bl MOD13_022198A0
+ mov r1, #0
+ ldr r0, _02218C88 ; =0x02240B38
+ str r1, [r0]
+_02218C7C:
+ add sp, #4
+ pop {r3}
+ bx r3
+ nop
+_02218C84: .word 0x02240B40
+_02218C88: .word 0x02240B38
+
+ thumb_func_start MOD13_02218C8C
+MOD13_02218C8C: ; 0x02218C8C
+ add r3, r0, #0
+ and r3, r1
+ mvn r2, r1
+ bic r0, r1
+ add r1, r0, #1
+ add r0, r3, #0
+ orr r0, r1
+ add r1, r3, #0
+ orr r1, r2
+ cmp r0, r1
+ blo _02218CA8
+ mov r1, #1
+ add r0, r3, #0
+ orr r0, r1
+_02218CA8:
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD13_02218CAC
+MOD13_02218CAC: ; 0x02218CAC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xcc
+ str r0, [sp, #8]
+ ldr r1, _02219044 ; =0x0223F7C0
+ ldrh r2, [r1]
+ add r0, sp, #0x30
+ strh r2, [r0]
+ ldrh r1, [r1, #2]
+ strh r1, [r0, #2]
+ add r1, sp, #0x34
+ mov r0, #0
+ str r0, [sp, #0x14]
+ strh r0, [r1]
+ strh r0, [r1, #2]
+ mov r0, #1
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x1c]
+ add r0, sp, #0x64
+ ldr r1, [sp, #0x14]
+ mov r2, #0x18
+ bl MOD13_022174C0
+ ldr r1, _02219048 ; =0x00000106
+ ldr r0, [sp, #8]
+ ldrsh r0, [r0, r1]
+ add r1, sp, #0x30
+ strh r0, [r1]
+ mov r0, #0
+ ldrsh r2, [r1, r0]
+ mvn r0, r0
+ cmp r2, r0
+ bne _02218CF4
+ mov r0, #0xa
+ strh r0, [r1]
+_02218CF4:
+ ldr r1, _0221904C ; =0x0000010A
+ ldr r0, [sp, #8]
+ ldrsh r0, [r0, r1]
+ add r1, sp, #0x30
+ strh r0, [r1, #4]
+ mov r0, #4
+ ldrsh r2, [r1, r0]
+ mov r0, #0
+ mvn r0, r0
+ cmp r2, r0
+ bne _02218D0E
+ mov r0, #0xa
+ strh r0, [r1, #4]
+_02218D0E:
+ ldr r1, _02219050 ; =0x00000108
+ ldr r0, [sp, #8]
+ ldrsh r0, [r0, r1]
+ add r1, sp, #0x30
+ strh r0, [r1, #2]
+ mov r0, #2
+ ldrsh r2, [r1, r0]
+ mov r0, #0
+ mvn r0, r0
+ cmp r2, r0
+ bne _02218D28
+ mov r0, #0x64
+ strh r0, [r1, #2]
+_02218D28:
+ ldr r1, _02219054 ; =0x0000010C
+ ldr r0, [sp, #8]
+ ldrsh r0, [r0, r1]
+ add r1, sp, #0x30
+ strh r0, [r1, #6]
+ mov r0, #6
+ ldrsh r2, [r1, r0]
+ mov r0, #0
+ mvn r0, r0
+ cmp r2, r0
+ bne _02218D42
+ mov r0, #0x64
+ strh r0, [r1, #6]
+_02218D42:
+ ldr r1, _02219058 ; =0x0000010E
+ ldr r0, [sp, #8]
+ ldrsh r0, [r0, r1]
+ str r0, [sp, #0x10]
+ mov r0, #0
+ mvn r1, r0
+ ldr r0, [sp, #0x10]
+ cmp r0, r1
+ bne _02218D58
+ ldr r0, _0221905C ; =0x000007D0
+ str r0, [sp, #0x10]
+_02218D58:
+ ldr r0, [sp, #8]
+ bl MOD13_02218C00
+ ldr r0, _02219060 ; =0x02240B60
+ ldr r1, [r0, #8]
+ mov r0, #1
+ and r1, r0
+ cmp r1, #1
+ beq _02218D88
+ mov r0, #0x13
+ bl MOD13_02218BF4
+ mov r2, #0xf
+ ldr r1, _02219064 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218D88:
+ mov r4, #0
+ add r0, r4, #0
+ bl MOD13_02218870
+ mov r1, #2
+ add r0, sp, #0x30
+ ldrsh r7, [r0, r1]
+ lsl r6, r4, #0
+ ldr r5, _02219068 ; =0x02240B38
+_02218D9A:
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _02218DA6
+ bl MOD13_022198A0
+ str r6, [r5]
+_02218DA6:
+ add r0, r5, #0
+ bl MOD13_02219AD0
+ mvn r1, r6
+ cmp r0, r1
+ bne _02218DCA
+ mov r2, #0xf
+ ldr r1, _02219064 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218DCA:
+ ldr r0, [r5]
+ bl MOD13_0221892C
+ cmp r0, #4
+ bne _02218DEC
+ mov r2, #2
+ ldr r1, _02219064 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218DEC:
+ cmp r0, #0
+ beq _02218E1E
+ add r0, sp, #0x30
+ ldrsh r0, [r0, r6]
+ cmp r4, r0
+ blt _02218E10
+ mov r2, #1
+ ldr r1, _02219064 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218E10:
+ add r0, r7, #0
+ bl MOD13_022198E4
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ b _02218D9A
+_02218E1E:
+ mov r0, #1
+ bl MOD13_02218870
+ add r0, sp, #0x7c
+ mov r1, #0
+ mov r2, #0x3c
+ bl MOD13_022174C0
+ add r0, sp, #0x7c
+ bl MOD13_022188E0
+ cmp r0, #0
+ beq _02218E50
+ mov r2, #0xf
+ ldr r1, _02219064 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218E50:
+ mov r0, #0x58
+ bl MOD13_022198B4
+ ldr r1, _0221906C ; =0x02240B40
+ str r0, [r1]
+ cmp r0, #0
+ bne _02218E76
+ mov r2, #0xf
+ ldr r1, _02219064 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218E76:
+ mov r1, #0
+ mov r2, #0x58
+ bl MOD13_022174C0
+ mov r4, #0
+ add r0, sp, #0x30
+ ldrsh r0, [r0, r4]
+ cmp r0, #0
+ ble _02218EDA
+ add r6, r4, #0
+ add r5, r4, #0
+_02218E8C:
+ add r0, sp, #0x7c
+ ldr r1, _0221906C ; =0x02240B40
+ ldr r1, [r1]
+ bl MOD13_022198EC
+ mvn r1, r5
+ cmp r0, r1
+ bne _02218EB4
+ mov r2, #0xf
+ ldr r1, _02219064 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218EB4:
+ cmp r0, #0
+ bne _02218EC6
+ cmp r0, #0
+ bne _02218EDA
+ ldr r0, _0221906C ; =0x02240B40
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, #1
+ beq _02218EDA
+_02218EC6:
+ add r0, r7, #0
+ bl MOD13_022198E4
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ add r0, sp, #0x30
+ ldrsh r0, [r0, r6]
+ cmp r4, r0
+ blt _02218E8C
+_02218EDA:
+ add r1, sp, #0x30
+ mov r0, #0
+ ldrsh r0, [r1, r0]
+ cmp r4, r0
+ bne _02218EFC
+ mov r2, #0xf
+ ldr r1, _02219064 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218EFC:
+ ldr r0, _02219070 ; =0xC0A80B65
+ mov r1, #0xff
+ mvn r1, r1
+ add r2, r0, #0
+ bl MOD13_02217530
+ cmp r0, #0
+ beq _02218F2A
+ mov r0, #0xc
+ bl MOD13_02218BF4
+ mov r2, #0xf
+ ldr r1, _02219064 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218F2A:
+ bl MOD13_02218C54
+ mov r0, #3
+ add r1, sp, #0x64
+ ldr r3, _02219074 ; =0x00000110
+ ldr r2, [sp, #8]
+ add r2, r2, r3
+ bl MOD13_022188A8
+ mov r0, #2
+ add r1, r0, #0
+ mov r2, #0
+ bl MOD13_02217434
+ ldr r1, _02219078 ; =0x0223F7BC
+ str r0, [r1]
+ cmp r0, #0
+ bge _02218F66
+ mov r2, #0xf
+ ldr r1, _02219064 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218F66:
+ mov r1, #4
+ str r1, [sp]
+ ldr r1, _0221907C ; =0x0000FFFF
+ mov r2, #1
+ add r3, sp, #0x38
+ bl MOD13_0221743C
+ cmp r0, #0
+ bge _02218F96
+ mov r0, #0xb
+ bl MOD13_02218BF4
+ mov r2, #0xf
+ ldr r1, _02219064 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218F96:
+ add r0, sp, #0x5c
+ mov r1, #0
+ mov r2, #8
+ bl MOD13_022174C0
+ mov r1, #2
+ add r0, sp, #0x5c
+ strb r1, [r0, #1]
+ ldr r0, _02219070 ; =0xC0A80B65
+ bl MOD13_022173E8
+ str r0, [sp, #0x60]
+ ldr r0, _02219080 ; =0x00005790
+ bl MOD13_022173D0
+ add r1, sp, #0x30
+ strh r0, [r1, #0x2e]
+ ldr r0, _02219078 ; =0x0223F7BC
+ ldr r0, [r0]
+ add r1, sp, #0x5c
+ mov r2, #8
+ bl MOD13_02217428
+ cmp r0, #0
+ bge _02218FE0
+ mov r2, #0xf
+ ldr r1, _02219064 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02218FE0:
+ mov r5, #0
+ ldr r6, _02219068 ; =0x02240B38
+ mvn r0, r5
+ str r0, [sp, #0x28]
+_02218FE8:
+ ldr r0, _02219084 ; =0x02240B48
+ ldr r0, [r0]
+ str r0, [sp, #0x20]
+ add r0, sp, #0xb8
+ add r1, r5, #0
+ mov r2, #0x14
+ bl MOD13_022174C0
+ ldr r0, _02219070 ; =0xC0A80B65
+ str r0, [sp, #0xc8]
+ ldr r0, _02219088 ; =0xC0A80B01
+ str r0, [sp, #0xb8]
+ ldr r0, [sp, #0x10]
+ ldr r1, _0221908C ; =0x000003E8
+ bl _s32_div_f
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x10]
+ ldr r1, _0221908C ; =0x000003E8
+ bl _s32_div_f
+ str r1, [sp, #0xc]
+ ldr r0, _0221908C ; =0x000003E8
+ mul r1, r0
+ str r1, [sp, #0xc]
+_0221901A:
+ ldr r0, [sp, #0x14]
+ cmp r0, #1
+ beq _02219022
+ b _0221930A
+_02219022:
+ ldr r1, _02219060 ; =0x02240B60
+ mov r0, #0x18
+ ldrsb r0, [r1, r0]
+ cmp r0, #1
+ bne _0221902E
+ b _0221930A
+_0221902E:
+ ldr r0, _02219078 ; =0x0223F7BC
+ ldr r0, [r0]
+ mvn r1, r5
+ cmp r0, r1
+ beq _0221903C
+ bl MOD13_02217420
+_0221903C:
+ ldr r1, [sp, #0x28]
+ ldr r0, _02219078 ; =0x0223F7BC
+ b _02219090
+ nop
+_02219044: .word 0x0223F7C0
+_02219048: .word 0x00000106
+_0221904C: .word 0x0000010A
+_02219050: .word 0x00000108
+_02219054: .word 0x0000010C
+_02219058: .word 0x0000010E
+_0221905C: .word 0x000007D0
+_02219060: .word 0x02240B60
+_02219064: .word 0x00000116
+_02219068: .word 0x02240B38
+_0221906C: .word 0x02240B40
+_02219070: .word 0xC0A80B65
+_02219074: .word 0x00000110
+_02219078: .word 0x0223F7BC
+_0221907C: .word 0x0000FFFF
+_02219080: .word 0x00005790
+_02219084: .word 0x02240B48
+_02219088: .word 0xC0A80B01
+_0221908C: .word 0x000003E8
+_02219090:
+ str r1, [r0]
+ bl MOD13_02217504
+ cmp r0, #0
+ beq _022190B2
+ mov r2, #0xf
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022190B2:
+ mov r0, #0x58
+ bl MOD13_022198B4
+ str r0, [r6]
+ cmp r0, #0
+ bne _022190D6
+ mov r2, #0xf
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022190D6:
+ ldr r0, [r6]
+ cmp r0, #0
+ beq _022190E2
+ bl MOD13_022198A0
+ str r5, [r6]
+_022190E2:
+ add r0, r6, #0
+ bl MOD13_02219AD0
+ str r0, [sp, #0x2c]
+ mvn r1, r5
+ cmp r0, r1
+ bne _02219108
+ mov r2, #0xf
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219108:
+ ldr r0, [r6]
+ bl MOD13_0221892C
+ cmp r0, #4
+ bne _0221912A
+ mov r2, #2
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221912A:
+ cmp r0, #0
+ beq _0221915C
+ add r0, sp, #0x30
+ ldrsh r0, [r0, r5]
+ cmp r4, r0
+ blt _0221914E
+ mov r2, #1
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221914E:
+ add r0, r7, #0
+ bl MOD13_022198E4
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ b _022190D6
+_0221915C:
+ mvn r1, r5
+ ldr r0, [sp, #0x2c]
+ cmp r0, r1
+ bne _0221917C
+ mov r2, #0xf
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221917C:
+ mov r0, #0x58
+ bl MOD13_022198B4
+ ldr r1, _02219418 ; =0x02240B40
+ str r0, [r1]
+ cmp r0, #0
+ bne _022191A2
+ mov r2, #0xf
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022191A2:
+ add r1, r5, #0
+ mov r2, #0x58
+ bl MOD13_022174C0
+ add r4, r5, #0
+ add r0, sp, #0x30
+ ldrsh r0, [r0, r5]
+ cmp r0, #0
+ ble _02219202
+_022191B4:
+ add r0, sp, #0x7c
+ ldr r1, _02219418 ; =0x02240B40
+ ldr r1, [r1]
+ bl MOD13_022198EC
+ mvn r1, r5
+ cmp r0, r1
+ bne _022191DC
+ mov r2, #0xf
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022191DC:
+ cmp r0, #0
+ bne _022191EE
+ cmp r0, #0
+ bne _02219202
+ ldr r0, _02219418 ; =0x02240B40
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, #1
+ beq _02219202
+_022191EE:
+ add r0, r7, #0
+ bl MOD13_022198E4
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ add r0, sp, #0x30
+ ldrsh r0, [r0, r5]
+ cmp r4, r0
+ blt _022191B4
+_02219202:
+ add r0, sp, #0x30
+ ldrsh r0, [r0, r5]
+ cmp r4, r0
+ bne _02219222
+ mov r2, #0xf
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219222:
+ ldr r0, _0221941C ; =0x02240B60
+ ldr r0, [r0, #0x10]
+ ldr r1, _0221941C ; =0x02240B60
+ ldr r1, [r1, #0x14]
+ bl MOD13_02218C8C
+ str r0, [sp, #0x1c]
+ ldr r1, _0221941C ; =0x02240B60
+ ldr r1, [r1, #0x14]
+ lsl r2, r0, #0
+ bl MOD13_02217530
+ cmp r0, #0
+ beq _0221925C
+ mov r0, #0xc
+ bl MOD13_02218BF4
+ mov r2, #0xf
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221925C:
+ mov r1, #1
+ ldr r0, _0221941C ; =0x02240B60
+ strb r1, [r0, #0x18]
+ bl MOD13_02218C54
+ mov r0, #2
+ lsl r1, r0, #0
+ add r2, r5, #0
+ bl MOD13_02217434
+ ldr r1, _02219420 ; =0x0223F7BC
+ str r0, [r1]
+ cmp r0, #0
+ bge _02219290
+ mov r2, #0xf
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219290:
+ mov r1, #4
+ str r1, [sp]
+ ldr r1, _02219424 ; =0x0000FFFF
+ mov r2, #1
+ add r3, sp, #0x38
+ bl MOD13_0221743C
+ cmp r0, #0
+ bge _022192C0
+ mov r0, #0xb
+ bl MOD13_02218BF4
+ mov r2, #0xf
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022192C0:
+ add r0, sp, #0x5c
+ add r1, r5, #0
+ mov r2, #8
+ bl MOD13_022174C0
+ mov r1, #2
+ add r0, sp, #0x5c
+ strb r1, [r0, #1]
+ ldr r0, [sp, #0x1c]
+ bl MOD13_022173E8
+ str r0, [sp, #0x60]
+ ldr r0, _02219428 ; =0x00005790
+ bl MOD13_022173D0
+ add r1, sp, #0x30
+ strh r0, [r1, #0x2e]
+ ldr r0, _02219420 ; =0x0223F7BC
+ ldr r0, [r0]
+ add r1, sp, #0x5c
+ mov r2, #8
+ bl MOD13_02217428
+ cmp r0, #0
+ bge _0221930A
+ mov r2, #0xf
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221930A:
+ ldr r0, [sp, #0x14]
+ add r1, sp, #0xb8
+ add r2, sp, #0x64
+ ldr r3, _02219420 ; =0x0223F7BC
+ ldr r3, [r3]
+ bl MOD13_02217E20
+ mvn r1, r5
+ cmp r0, r1
+ bne _02219340
+ ldr r1, _0221942C ; =0x00001000
+ ldr r0, [sp, #0x14]
+ add r0, r0, r1
+ bl MOD13_02218BF4
+ mov r2, #0xf
+ ldr r1, _02219414 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219340:
+ ldr r0, [sp, #0x20]
+ add r1, r5, #0
+ ldr r2, _02219430 ; =0x000005F8
+ bl MOD13_022174C0
+ add r0, sp, #0x4c
+ bl MOD13_022172E4
+ ldr r0, _02219420 ; =0x0223F7BC
+ ldr r0, [r0]
+ add r1, sp, #0x4c
+ bl MOD13_022172DC
+ ldr r0, [sp, #0x24]
+ str r0, [sp, #0x54]
+ ldr r0, [sp, #0xc]
+ str r0, [sp, #0x58]
+ add r0, sp, #0x54
+ str r0, [sp]
+ ldr r0, _02219420 ; =0x0223F7BC
+ ldr r0, [r0]
+ add r0, r0, #1
+ add r1, sp, #0x4c
+ add r2, r5, #0
+ add r3, r5, #0
+ bl MOD13_02217458
+ cmp r0, #0
+ bgt _022193BA
+ ldr r0, [sp, #0x3c]
+ add r2, r0, #1
+ str r2, [sp, #0x3c]
+ add r1, sp, #0x30
+ mov r0, #4
+ ldrsh r0, [r1, r0]
+ cmp r2, r0
+ ble _022193B0
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ bne _02219398
+ mov r0, #0xf
+ bl MOD13_02218BF4
+ b _022193AA
+_02219398:
+ cmp r0, #1
+ bne _022193A4
+ mov r0, #0x10
+ bl MOD13_02218BF4
+ b _022193AA
+_022193A4:
+ mov r0, #0x11
+ bl MOD13_02218BF4
+_022193AA:
+ mov r0, #0
+ mvn r4, r0
+ b _022196C6
+_022193B0:
+ mov r0, #6
+ ldrsh r0, [r1, r0]
+ bl MOD13_022198E4
+ b _0221901A
+_022193BA:
+ mov r0, #8
+ str r0, [sp, #0x48]
+ add r0, sp, #0x40
+ str r0, [sp]
+ add r0, sp, #0x48
+ str r0, [sp, #4]
+ ldr r0, _02219420 ; =0x0223F7BC
+ ldr r0, [r0]
+ ldr r1, [sp, #0x20]
+ add r1, #0xc
+ ldr r2, _02219434 ; =0x000005DC
+ add r3, r5, #0
+ bl MOD13_022174A4
+ add r2, r0, #0
+ ldr r0, _02219420 ; =0x0223F7BC
+ ldr r1, [r0]
+ ldr r0, [sp, #0x20]
+ str r1, [r0]
+ lsl r0, r2, #0x10
+ lsr r0, r0, #0x10
+ bl MOD13_02217380
+ ldr r1, [sp, #0x20]
+ str r0, [r1, #4]
+ ldr r0, _02219420 ; =0x0223F7BC
+ ldr r0, [r0]
+ str r0, [sp]
+ ldr r0, [sp, #0x14]
+ add r2, sp, #0x3c
+ add r3, sp, #0x64
+ bl MOD13_022187B4
+ str r0, [sp, #0x18]
+ cmp r0, #0x64
+ bne _02219406
+ mov r4, #0
+ b _022196C6
+_02219406:
+ mvn r1, r5
+ cmp r0, r1
+ bne _02219438
+ mov r0, #0
+ mvn r4, r0
+ b _022196C6
+ nop
+_02219414: .word 0x00000116
+_02219418: .word 0x02240B40
+_0221941C: .word 0x02240B60
+_02219420: .word 0x0223F7BC
+_02219424: .word 0x0000FFFF
+_02219428: .word 0x00005790
+_0221942C: .word 0x00001000
+_02219430: .word 0x000005F8
+_02219434: .word 0x000005DC
+_02219438:
+ ldr r1, [sp, #0x14]
+ cmp r1, r0
+ bne _02219440
+ b _02219688
+_02219440:
+ cmp r0, #2
+ beq _02219446
+ b _02219682
+_02219446:
+ ldr r0, _02219780 ; =0x0223F7BC
+ ldr r0, [r0]
+ mvn r1, r5
+ cmp r0, r1
+ beq _02219454
+ bl MOD13_02217420
+_02219454:
+ ldr r1, [sp, #0x28]
+ ldr r0, _02219780 ; =0x0223F7BC
+ str r1, [r0]
+ bl MOD13_02217504
+ cmp r0, #0
+ beq _0221947A
+ mov r2, #0xf
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221947A:
+ add r4, r5, #0
+ mov r0, #4
+ bl MOD13_02218870
+_02219482:
+ ldr r0, [r6]
+ cmp r0, #0
+ beq _0221948E
+ bl MOD13_022198A0
+ str r5, [r6]
+_0221948E:
+ add r0, r6, #0
+ bl MOD13_02219AD0
+ mvn r1, r5
+ cmp r0, r1
+ bne _022194B2
+ mov r2, #0xf
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022194B2:
+ ldr r0, [r6]
+ bl MOD13_0221892C
+ cmp r0, #4
+ bne _022194D4
+ mov r2, #2
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022194D4:
+ cmp r0, #0
+ beq _02219506
+ add r0, sp, #0x30
+ ldrsh r0, [r0, r5]
+ cmp r4, r0
+ blt _022194F8
+ mov r2, #1
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022194F8:
+ add r0, r7, #0
+ bl MOD13_022198E4
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ b _02219482
+_02219506:
+ mov r0, #0x58
+ bl MOD13_022198B4
+ ldr r1, _02219788 ; =0x02240B40
+ str r0, [r1]
+ cmp r0, #0
+ bne _0221952C
+ mov r2, #0xf
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221952C:
+ add r1, r5, #0
+ mov r2, #0x58
+ bl MOD13_022174C0
+ add r4, r5, #0
+ add r0, sp, #0x30
+ ldrsh r0, [r0, r5]
+ cmp r0, #0
+ ble _0221958C
+_0221953E:
+ add r0, sp, #0x7c
+ ldr r1, _02219788 ; =0x02240B40
+ ldr r1, [r1]
+ bl MOD13_022198EC
+ mvn r1, r5
+ cmp r0, r1
+ bne _02219566
+ mov r2, #0xf
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219566:
+ cmp r0, #0
+ bne _02219578
+ cmp r0, #0
+ bne _0221958C
+ ldr r0, _02219788 ; =0x02240B40
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, #1
+ beq _0221958C
+_02219578:
+ add r0, r7, #0
+ bl MOD13_022198E4
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ asr r4, r0, #0x10
+ add r0, sp, #0x30
+ ldrsh r0, [r0, r5]
+ cmp r4, r0
+ blt _0221953E
+_0221958C:
+ add r0, sp, #0x30
+ ldrsh r0, [r0, r5]
+ cmp r4, r0
+ bne _022195AC
+ mov r2, #0xf
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022195AC:
+ ldr r0, [sp, #0x1c]
+ ldr r1, _0221978C ; =0x02240B60
+ ldr r1, [r1, #0x14]
+ lsl r2, r0, #0
+ bl MOD13_02217530
+ cmp r0, #0
+ beq _022195DA
+ mov r0, #0xc
+ bl MOD13_02218BF4
+ mov r2, #0xf
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022195DA:
+ bl MOD13_02218C54
+ mov r0, #2
+ lsl r1, r0, #0
+ add r2, r5, #0
+ bl MOD13_02217434
+ ldr r1, _02219780 ; =0x0223F7BC
+ str r0, [r1]
+ cmp r0, #0
+ bge _02219608
+ mov r2, #0xf
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219608:
+ mov r1, #4
+ str r1, [sp]
+ ldr r1, _02219790 ; =0x0000FFFF
+ mov r2, #1
+ add r3, sp, #0x38
+ bl MOD13_0221743C
+ cmp r0, #0
+ bge _02219638
+ mov r0, #0xb
+ bl MOD13_02218BF4
+ mov r2, #0xf
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219638:
+ add r0, sp, #0x5c
+ add r1, r5, #0
+ mov r2, #8
+ bl MOD13_022174C0
+ mov r1, #2
+ add r0, sp, #0x5c
+ strb r1, [r0, #1]
+ ldr r0, [sp, #0x1c]
+ bl MOD13_022173E8
+ str r0, [sp, #0x60]
+ ldr r0, _02219794 ; =0x00005790
+ bl MOD13_022173D0
+ add r1, sp, #0x30
+ strh r0, [r1, #0x2e]
+ ldr r0, _02219780 ; =0x0223F7BC
+ ldr r0, [r0]
+ add r1, sp, #0x5c
+ mov r2, #8
+ bl MOD13_02217428
+ cmp r0, #0
+ bge _02219682
+ mov r2, #0xf
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219682:
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #0x14]
+ b _02218FE8
+_02219688:
+ str r0, [sp, #0x14]
+ ldr r2, [sp, #0x3c]
+ add r1, sp, #0x30
+ mov r0, #4
+ ldrsh r0, [r1, r0]
+ cmp r2, r0
+ ble _022196BC
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ bne _022196A4
+ mov r0, #0xf
+ bl MOD13_02218BF4
+ b _022196B6
+_022196A4:
+ cmp r0, #1
+ bne _022196B0
+ mov r0, #0x10
+ bl MOD13_02218BF4
+ b _022196B6
+_022196B0:
+ mov r0, #0x11
+ bl MOD13_02218BF4
+_022196B6:
+ mov r0, #0
+ mvn r4, r0
+ b _022196C6
+_022196BC:
+ mov r0, #6
+ ldrsh r0, [r1, r0]
+ bl MOD13_022198E4
+ b _02218FE8
+_022196C6:
+ ldr r0, _02219780 ; =0x0223F7BC
+ ldr r0, [r0]
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _022196D6
+ bl MOD13_02217420
+_022196D6:
+ mov r0, #0
+ mvn r1, r0
+ ldr r0, _02219780 ; =0x0223F7BC
+ str r1, [r0]
+ bl MOD13_02217504
+ cmp r0, #0
+ beq _022196FE
+ mov r2, #0xf
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_022196FE:
+ cmp r4, #0
+ beq _02219754
+ bl MOD13_02218BE8
+ sub r0, #0xf
+ cmp r0, #6
+ bhi _0221973C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #8]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, pc
+ bx r0
+_0221971A: ; jump table
+ .short _02219728 - _0221971A + 1 ; case 0
+ .short _0221972C - _0221971A + 1 ; case 1
+ .short _02219730 - _0221971A + 1 ; case 2
+ .short _0221973C - _0221971A + 1 ; case 3
+ .short _0221973C - _0221971A + 1 ; case 4
+ .short _02219734 - _0221971A + 1 ; case 5
+ .short _02219738 - _0221971A + 1 ; case 6
+_02219728:
+ mov r2, #3
+ b _0221973E
+_0221972C:
+ mov r2, #4
+ b _0221973E
+_02219730:
+ mov r2, #5
+ b _0221973E
+_02219734:
+ mov r2, #7
+ b _0221973E
+_02219738:
+ mov r2, #8
+ b _0221973E
+_0221973C:
+ mov r2, #0xf
+_0221973E:
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219754:
+ ldr r0, [sp, #8]
+ bl MOD13_022189D8
+ cmp r0, #0
+ beq _02219776
+ mov r2, #6
+ ldr r1, _02219784 ; =0x00000116
+ ldr r0, [sp, #8]
+ strb r2, [r0, r1]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219776:
+ mov r0, #0
+ add sp, #0xcc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02219780: .word 0x0223F7BC
+_02219784: .word 0x00000116
+_02219788: .word 0x02240B40
+_0221978C: .word 0x02240B60
+_02219790: .word 0x0000FFFF
+_02219794: .word 0x00005790
+
+ thumb_func_start MOD13_02219798
+MOD13_02219798: ; 0x02219798
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02219870 ; =0x00000106
+ ldrsh r1, [r4, r0]
+ cmp r1, #0
+ beq _022197E6
+ mov r0, #0
+ mvn r2, r0
+ cmp r1, r2
+ blt _022197E6
+ ldr r1, _02219874 ; =0x00000108
+ ldrsh r1, [r4, r1]
+ cmp r1, r2
+ blt _022197E6
+ ldr r1, _02219878 ; =0x0000010A
+ ldrsh r1, [r4, r1]
+ cmp r1, #0
+ beq _022197E6
+ cmp r1, r2
+ blt _022197E6
+ ldr r1, _0221987C ; =0x0000010C
+ ldrsh r1, [r4, r1]
+ cmp r1, r2
+ blt _022197E6
+ ldr r1, _02219880 ; =0x0000010E
+ ldrsh r1, [r4, r1]
+ cmp r1, r2
+ blt _022197E6
+ ldrh r2, [r4, #4]
+ cmp r2, #0
+ beq _022197E6
+ ldr r1, _02219884 ; =0x00000100
+ cmp r2, r1
+ bhi _022197E6
+ sub r1, r2, #1
+ add r1, r4, r1
+ ldrb r1, [r1, #6]
+ cmp r1, #0
+ beq _022197EA
+_022197E6:
+ mov r0, #0
+ mvn r0, r0
+_022197EA:
+ ldr r1, _02219888 ; =0x02241900
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _022197FA
+ ldr r1, _0221988C ; =0x0224190C
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _022197FE
+_022197FA:
+ mov r0, #0
+ mvn r0, r0
+_022197FE:
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _0221981A
+ mov r1, #0xf
+ ldr r0, _02219890 ; =0x00000116
+ strb r1, [r4, r0]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ pop {r4}
+ pop {r3}
+ bx r3
+_0221981A:
+ ldr r0, _02219894 ; =0x000005F8
+ bl MOD13_022198B4
+ ldr r1, _02219898 ; =0x02240B48
+ str r0, [r1]
+ cmp r0, #0
+ bne _0221983C
+ mov r1, #0xf
+ ldr r0, _02219890 ; =0x00000116
+ strb r1, [r4, r0]
+ bl MOD13_02218C54
+ mov r0, #0
+ mvn r0, r0
+ pop {r4}
+ pop {r3}
+ bx r3
+_0221983C:
+ mov r0, #0
+ mvn r0, r0
+ bl MOD13_02218870
+ add r0, r4, #0
+ bl MOD13_02218CAC
+ add r4, r0, #0
+ ldr r0, _02219898 ; =0x02240B48
+ ldr r0, [r0]
+ bl MOD13_022198A0
+ bl MOD13_02218C54
+ ldr r0, _0221989C ; =0x0223F7BC
+ ldr r0, [r0]
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02219868
+ bl MOD13_02217420
+_02219868:
+ add r0, r4, #0
+ pop {r4}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02219870: .word 0x00000106
+_02219874: .word 0x00000108
+_02219878: .word 0x0000010A
+_0221987C: .word 0x0000010C
+_02219880: .word 0x0000010E
+_02219884: .word 0x00000100
+_02219888: .word 0x02241900
+_0221988C: .word 0x0224190C
+_02219890: .word 0x00000116
+_02219894: .word 0x000005F8
+_02219898: .word 0x02240B48
+_0221989C: .word 0x0223F7BC
+
+ thumb_func_start MOD13_022198A0
+MOD13_022198A0: ; 0x022198A0
+ push {lr}
+ sub sp, #4
+ ldr r1, _022198B0 ; =0x0224190C
+ ldr r1, [r1]
+ blx r1
+ add sp, #4
+ pop {r3}
+ bx r3
+ .align 2, 0
+_022198B0: .word 0x0224190C
+
+ thumb_func_start MOD13_022198B4
+MOD13_022198B4: ; 0x022198B4
+ push {lr}
+ sub sp, #4
+ ldr r1, _022198C4 ; =0x02241900
+ ldr r1, [r1]
+ blx r1
+ add sp, #4
+ pop {r3}
+ bx r3
+ .align 2, 0
+_022198C4: .word 0x02241900
+
+ thumb_func_start MOD13_022198C8
+MOD13_022198C8: ; 0x022198C8
+ push {lr}
+ sub sp, #4
+ ldr r1, _022198E0 ; =0x02241904
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _022198D6
+ blx r1
+_022198D6:
+ mov r0, #0
+ add sp, #4
+ pop {r3}
+ bx r3
+ nop
+_022198E0: .word 0x02241904
+
+ thumb_func_start MOD13_022198E4
+MOD13_022198E4: ; 0x022198E4
+ ldr r3, _022198E8 ; =0x020CAFC0
+ bx r3
+ .align 2, 0
+_022198E8: .word 0x020CAFC0
+
+ thumb_func_start MOD13_022198EC
+MOD13_022198EC: ; 0x022198EC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r4, #1
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mvn r0, r0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #0x24]
+ cmp r0, #0
+ bne _0221990A
+ ldr r6, _02219AA8 ; =0x00080000
+ b _02219910
+_0221990A:
+ cmp r0, #1
+ bne _02219910
+ ldr r6, _02219AAC ; =0x000C0000
+_02219910:
+ ldr r0, _02219AB0 ; =0x02241940
+ mov r1, #0
+ mov r2, #0x60
+ bl MI_CpuFill8
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #0x28]
+ cmp r0, #5
+ bne _0221992A
+ mov r1, #1
+ ldr r0, _02219AB0 ; =0x02241940
+ strb r1, [r0]
+ b _0221994E
+_0221992A:
+ cmp r0, #0xd
+ bne _02219936
+ mov r1, #2
+ ldr r0, _02219AB0 ; =0x02241940
+ strb r1, [r0]
+ b _0221994E
+_02219936:
+ cmp r0, #0x10
+ bne _02219942
+ mov r1, #3
+ ldr r0, _02219AB0 ; =0x02241940
+ strb r1, [r0]
+ b _0221994E
+_02219942:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x4c
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221994E:
+ mov r1, #0
+ ldr r0, _02219AB0 ; =0x02241940
+ strb r1, [r0, #1]
+ ldr r0, [sp, #4]
+ add r0, #0x2c
+ ldr r1, _02219AB4 ; =0x02241942
+ ldr r2, [sp, #4]
+ ldr r2, [r2, #0x28]
+ bl MI_CpuCopy8
+ bl FUN_020A84D8
+ mov r0, #0
+ ldr r1, [sp, #4]
+ add r1, r1, #4
+ ldr r2, [sp, #4]
+ ldr r2, [r2]
+ ldr r3, _02219AB8 ; =0x0030BFFE
+ bl MOD13_0221A1E8
+ cmp r0, #0
+ bne _0221997C
+ b _02219A8A
+_0221997C:
+ mov r0, #0
+ str r0, [sp, #0x10]
+ add r0, sp, #0x1c
+ bl OS_CreateAlarm
+ mov r0, #0x12
+ str r0, [sp]
+ add r0, sp, #0x1c
+ ldr r1, _02219ABC ; =0x003FEC42
+ mov r2, #0
+ ldr r3, _02219AC0 ; =MOD13_02219E48
+ bl OS_SetAlarm
+ ldr r0, _02219AC4 ; =0x00030000
+ orr r6, r0
+ ldr r7, _02219AC8 ; =0x022419A0
+ mov r5, #0
+_0221999E:
+ ldr r0, _02219ACC ; =0x02241920
+ add r1, sp, #0x18
+ mov r2, #1
+ bl OS_ReceiveMessage
+ ldr r0, [sp, #0x18]
+ cmp r0, #0x13
+ bhi _02219A6A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #8]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, pc
+ bx r0
+_022199BC: ; jump table
+ .short _02219A6A - _022199BC + 1 ; case 0
+ .short _02219A6A - _022199BC + 1 ; case 1
+ .short _02219A6A - _022199BC + 1 ; case 2
+ .short _02219A6A - _022199BC + 1 ; case 3
+ .short _02219A6C - _022199BC + 1 ; case 4
+ .short _022199EE - _022199BC + 1 ; case 5
+ .short _02219A6A - _022199BC + 1 ; case 6
+ .short _02219A6A - _022199BC + 1 ; case 7
+ .short _02219A6C - _022199BC + 1 ; case 8
+ .short _02219A6A - _022199BC + 1 ; case 9
+ .short _02219A2A - _022199BC + 1 ; case 10
+ .short _02219A6A - _022199BC + 1 ; case 11
+ .short _02219A44 - _022199BC + 1 ; case 12
+ .short _02219A4A - _022199BC + 1 ; case 13
+ .short _02219A6A - _022199BC + 1 ; case 14
+ .short _02219A6A - _022199BC + 1 ; case 15
+ .short _02219A6A - _022199BC + 1 ; case 16
+ .short _02219A6A - _022199BC + 1 ; case 17
+ .short _022199E4 - _022199BC + 1 ; case 18
+ .short _02219A6C - _022199BC + 1 ; case 19
+_022199E4:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ bne _02219A6C
+ add r4, r5, #0
+ b _02219A6C
+_022199EE:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ bne _02219A6C
+ add r0, sp, #0x1c
+ bl OS_CancelAlarm
+ add r0, r7, #0
+ mov r1, #1
+ bl MOD13_0221A2FC
+ cmp r0, #1
+ beq _02219A0A
+ add r4, r5, #0
+ b _02219A6C
+_02219A0A:
+ ldr r0, [sp, #4]
+ add r1, r7, #0
+ bl MOD13_02219E80
+ add r0, r7, #0
+ ldr r1, _02219AB0 ; =0x02241940
+ add r2, r6, #0
+ bl MOD13_0221A04C
+ cmp r0, #0
+ bne _02219A24
+ add r4, r5, #0
+ b _02219A6C
+_02219A24:
+ mov r0, #1
+ str r0, [sp, #0x14]
+ b _02219A6C
+_02219A2A:
+ ldr r0, [sp, #4]
+ add r1, r7, #0
+ bl MOD13_02219E80
+ add r0, r7, #0
+ ldr r1, _02219AB0 ; =0x02241940
+ add r2, r6, #0
+ bl MOD13_0221A04C
+ cmp r0, #0
+ bne _02219A6C
+ add r4, r5, #0
+ b _02219A6C
+_02219A44:
+ str r5, [sp, #0xc]
+ add r4, r5, #0
+ b _02219A6C
+_02219A4A:
+ ldr r0, [sp, #0x10]
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #3
+ bge _02219A66
+ add r0, r7, #0
+ ldr r1, _02219AB0 ; =0x02241940
+ add r2, r6, #0
+ bl MOD13_0221A04C
+ cmp r0, #0
+ bne _02219A6C
+ add r4, r5, #0
+ b _02219A6C
+_02219A66:
+ add r4, r5, #0
+ b _02219A6C
+_02219A6A:
+ add r4, r5, #0
+_02219A6C:
+ cmp r4, #0
+ bne _0221999E
+ add r0, sp, #0x1c
+ bl OS_CancelAlarm
+ ldr r5, _02219ACC ; =0x02241920
+ add r4, sp, #0x18
+ mov r6, #0
+_02219A7C:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl OS_ReceiveMessage
+ cmp r0, #1
+ beq _02219A7C
+_02219A8A:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ bne _02219A94
+ mov r2, #1
+ b _02219A96
+_02219A94:
+ mov r2, #0
+_02219A96:
+ ldr r0, [sp, #8]
+ ldr r1, _02219AC8 ; =0x022419A0
+ bl MOD13_02219E70
+ ldr r0, [sp, #0xc]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02219AA8: .word 0x00080000
+_02219AAC: .word 0x000C0000
+_02219AB0: .word 0x02241940
+_02219AB4: .word 0x02241942
+_02219AB8: .word 0x0030BFFE
+_02219ABC: .word 0x003FEC42
+_02219AC0: .word MOD13_02219E48
+_02219AC4: .word 0x00030000
+_02219AC8: .word 0x022419A0
+_02219ACC: .word 0x02241920
+
+ thumb_func_start MOD13_02219AD0
+MOD13_02219AD0: ; 0x02219AD0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ str r0, [sp, #4]
+ mov r6, #0
+ mvn r0, r6
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r7, r6, #0
+ add r5, r6, #0
+ ldr r0, _02219C44 ; =0x02241900
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _02219AF4
+ ldr r0, _02219C48 ; =0x0224190C
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02219B00
+_02219AF4:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #0x44
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219B00:
+ ldr r0, _02219C4C ; =0x00003000
+ blx r1
+ add r4, r0, #0
+ cmp r4, #0
+ bne _02219B16
+ lsl r0, r6, #0
+ mvn r0, r0
+ add sp, #0x44
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219B16:
+ str r4, [sp, #0x10]
+ lsl r0, r6, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ ldr r3, _02219C50 ; =0x0030BFFE
+ bl MOD13_0221A1E8
+ cmp r0, #0
+ bne _02219B2A
+ b _02219C30
+_02219B2A:
+ add r0, sp, #0x18
+ bl OS_CreateAlarm
+ mov r0, #0x13
+ str r0, [sp]
+ add r0, sp, #0x18
+ ldr r1, _02219C54 ; =0x003FEC42
+ lsl r2, r6, #0
+ ldr r3, _02219C58 ; =MOD13_02219E48
+ bl OS_SetAlarm
+_02219B40:
+ ldr r0, _02219C5C ; =0x02241920
+ add r1, sp, #0x14
+ mov r2, #1
+ bl OS_ReceiveMessage
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x13
+ bhi _02219C16
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #8]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, pc
+ bx r0
+_02219B5E: ; jump table
+ .short _02219C16 - _02219B5E + 1 ; case 0
+ .short _02219C16 - _02219B5E + 1 ; case 1
+ .short _02219C16 - _02219B5E + 1 ; case 2
+ .short _02219C16 - _02219B5E + 1 ; case 3
+ .short _02219BCC - _02219B5E + 1 ; case 4
+ .short _02219BA4 - _02219B5E + 1 ; case 5
+ .short _02219C16 - _02219B5E + 1 ; case 6
+ .short _02219C16 - _02219B5E + 1 ; case 7
+ .short _02219BCC - _02219B5E + 1 ; case 8
+ .short _02219C16 - _02219B5E + 1 ; case 9
+ .short _02219BC6 - _02219B5E + 1 ; case 10
+ .short _02219C16 - _02219B5E + 1 ; case 11
+ .short _02219C16 - _02219B5E + 1 ; case 12
+ .short _02219C16 - _02219B5E + 1 ; case 13
+ .short _02219C16 - _02219B5E + 1 ; case 14
+ .short _02219C16 - _02219B5E + 1 ; case 15
+ .short _02219C16 - _02219B5E + 1 ; case 16
+ .short _02219C16 - _02219B5E + 1 ; case 17
+ .short _02219BCC - _02219B5E + 1 ; case 18
+ .short _02219B86 - _02219B5E + 1 ; case 19
+_02219B86:
+ cmp r6, #0
+ bne _02219BCC
+ cmp r5, #0
+ beq _02219B98
+ add r0, r4, #0
+ mov r1, #0x40
+ bl MOD13_0221A2FC
+ add r7, r0, #0
+_02219B98:
+ bl MOD13_0221A1A4
+ cmp r0, #0
+ beq _02219C16
+ mov r6, #1
+ b _02219BCC
+_02219BA4:
+ cmp r6, #0
+ bne _02219BCC
+ cmp r5, #8
+ bge _02219BB0
+ add r5, r5, #1
+ b _02219BCC
+_02219BB0:
+ add r0, r4, #0
+ mov r1, #0x40
+ bl MOD13_0221A2FC
+ add r7, r0, #0
+ bl MOD13_0221A1A4
+ cmp r0, #0
+ beq _02219C16
+ mov r6, #1
+ b _02219BCC
+_02219BC6:
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #8]
+_02219BCC:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ bne _02219B40
+ cmp r7, #0
+ beq _02219BEA
+ sub r0, r7, #1
+ mov r1, #0x54
+ mul r0, r1
+ add r0, #0x58
+ ldr r1, _02219C44 ; =0x02241900
+ ldr r1, [r1]
+ blx r1
+ cmp r0, #0
+ bne _02219BF6
+ b _02219C16
+_02219BEA:
+ mov r0, #0x58
+ ldr r1, _02219C44 ; =0x02241900
+ ldr r1, [r1]
+ blx r1
+ cmp r0, #0
+ beq _02219C16
+_02219BF6:
+ ldr r1, [sp, #4]
+ str r0, [r1]
+ str r7, [r0]
+ mov r6, #0
+ cmp r7, #0
+ ble _02219C16
+ add r5, r0, #4
+_02219C04:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD13_02219EB4
+ add r4, #0xc0
+ add r5, #0x54
+ add r6, r6, #1
+ cmp r6, r7
+ blt _02219C04
+_02219C16:
+ add r0, sp, #0x18
+ bl OS_CancelAlarm
+ ldr r5, _02219C5C ; =0x02241920
+ add r4, sp, #0x14
+ mov r6, #0
+_02219C22:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl OS_ReceiveMessage
+ cmp r0, #1
+ beq _02219C22
+_02219C30:
+ ldr r0, [sp, #0x10]
+ ldr r1, _02219C48 ; =0x0224190C
+ ldr r1, [r1]
+ blx r1
+ ldr r0, [sp, #8]
+ add sp, #0x44
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_02219C44: .word 0x02241900
+_02219C48: .word 0x0224190C
+_02219C4C: .word 0x00003000
+_02219C50: .word 0x0030BFFE
+_02219C54: .word 0x003FEC42
+_02219C58: .word MOD13_02219E48
+_02219C5C: .word 0x02241920
+
+ thumb_func_start MOD13_02219C60
+MOD13_02219C60: ; 0x02219C60
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ mov r0, #0
+ mvn r4, r0
+ bl MOD13_0221A164
+ cmp r0, #0
+ beq _02219C8C
+ mov r5, #0
+ ldr r6, _02219C98 ; =0x02241920
+ add r7, sp, #0
+_02219C76:
+ add r0, r6, #0
+ add r1, r7, #0
+ mov r2, #1
+ bl OS_ReceiveMessage
+ ldr r0, [sp]
+ cmp r0, #0xe
+ bne _02219C88
+ add r4, r5, #0
+_02219C88:
+ cmp r5, #0
+ bne _02219C76
+_02219C8C:
+ add r0, r4, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_02219C98: .word 0x02241920
+
+ thumb_func_start MOD13_02219C9C
+MOD13_02219C9C: ; 0x02219C9C
+ push {r4, r5, lr}
+ sub sp, #4
+ mov r4, #1
+ mov r0, #0
+ mvn r5, r0
+ ldr r0, _02219D48 ; =0x0224190C
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02219CB8
+ add r0, r5, #0
+ add sp, #4
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+_02219CB8:
+ bl MOD13_0221A0FC
+ cmp r0, #0
+ bne _02219CCC
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+_02219CCC:
+ ldr r0, _02219D4C ; =0x02241920
+ add r1, sp, #0
+ mov r2, #1
+ bl OS_ReceiveMessage
+ ldr r0, [sp]
+ cmp r0, #0x14
+ bhi _02219D24
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #8]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, pc
+ bx r0
+_02219CEA: ; jump table
+ .short _02219D24 - _02219CEA + 1 ; case 0
+ .short _02219D24 - _02219CEA + 1 ; case 1
+ .short _02219D24 - _02219CEA + 1 ; case 2
+ .short _02219D24 - _02219CEA + 1 ; case 3
+ .short _02219D26 - _02219CEA + 1 ; case 4
+ .short _02219D26 - _02219CEA + 1 ; case 5
+ .short _02219D24 - _02219CEA + 1 ; case 6
+ .short _02219D24 - _02219CEA + 1 ; case 7
+ .short _02219D24 - _02219CEA + 1 ; case 8
+ .short _02219D24 - _02219CEA + 1 ; case 9
+ .short _02219D24 - _02219CEA + 1 ; case 10
+ .short _02219D24 - _02219CEA + 1 ; case 11
+ .short _02219D24 - _02219CEA + 1 ; case 12
+ .short _02219D24 - _02219CEA + 1 ; case 13
+ .short _02219D24 - _02219CEA + 1 ; case 14
+ .short _02219D24 - _02219CEA + 1 ; case 15
+ .short _02219D24 - _02219CEA + 1 ; case 16
+ .short _02219D24 - _02219CEA + 1 ; case 17
+ .short _02219D24 - _02219CEA + 1 ; case 18
+ .short _02219D24 - _02219CEA + 1 ; case 19
+ .short _02219D14 - _02219CEA + 1 ; case 20
+_02219D14:
+ mov r4, #0
+ add r5, r4, #0
+ ldr r0, _02219D50 ; =0x02241908
+ ldr r0, [r0]
+ ldr r1, _02219D48 ; =0x0224190C
+ ldr r1, [r1]
+ blx r1
+ b _02219D26
+_02219D24:
+ mov r4, #0
+_02219D26:
+ cmp r4, #0
+ bne _02219CCC
+ bl OS_DisableInterrupts
+ mov r2, #0
+ ldr r1, _02219D54 ; =0x02241900
+ str r2, [r1]
+ ldr r1, _02219D48 ; =0x0224190C
+ str r2, [r1]
+ bl OS_RestoreInterrupts
+ add r0, r5, #0
+ add sp, #4
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+ nop
+_02219D48: .word 0x0224190C
+_02219D4C: .word 0x02241920
+_02219D50: .word 0x02241908
+_02219D54: .word 0x02241900
+
+ thumb_func_start MOD13_02219D58
+MOD13_02219D58: ; 0x02219D58
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #1
+ ldr r0, _02219E2C ; =0x02241920
+ ldr r1, _02219E30 ; =0x02241910
+ mov r2, #4
+ bl OS_InitMessageQueue
+ cmp r5, #0
+ beq _02219D74
+ cmp r6, #0
+ bne _02219D80
+_02219D74:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219D80:
+ bl OS_DisableInterrupts
+ ldr r1, _02219E34 ; =0x02241900
+ str r5, [r1]
+ ldr r1, _02219E38 ; =0x0224190C
+ str r6, [r1]
+ bl OS_RestoreInterrupts
+ ldr r0, _02219E3C ; =0x00005890
+ ldr r1, _02219E34 ; =0x02241900
+ ldr r1, [r1]
+ blx r1
+ add r1, r0, #0
+ ldr r0, _02219E40 ; =0x02241908
+ str r1, [r0]
+ cmp r1, #0
+ bne _02219DAE
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219DAE:
+ ldr r0, _02219E44 ; =MOD13_02219E5C
+ ldr r2, _02219E3C ; =0x00005890
+ bl MOD13_02219F54
+ cmp r0, #0
+ bne _02219DBC
+ mov r4, #0
+_02219DBC:
+ cmp r4, #0
+ beq _02219E14
+ ldr r5, _02219E2C ; =0x02241920
+ add r6, sp, #0
+ mov r7, #1
+_02219DC6:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl OS_ReceiveMessage
+ ldr r0, [sp]
+ cmp r0, #0xf
+ bhi _02219E0E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #8]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, pc
+ bx r0
+_02219DE4: ; jump table
+ .short _02219E0E - _02219DE4 + 1 ; case 0
+ .short _02219E0E - _02219DE4 + 1 ; case 1
+ .short _02219E0E - _02219DE4 + 1 ; case 2
+ .short _02219E0E - _02219DE4 + 1 ; case 3
+ .short _02219E10 - _02219DE4 + 1 ; case 4
+ .short _02219E10 - _02219DE4 + 1 ; case 5
+ .short _02219E04 - _02219DE4 + 1 ; case 6
+ .short _02219E0E - _02219DE4 + 1 ; case 7
+ .short _02219E0E - _02219DE4 + 1 ; case 8
+ .short _02219E0E - _02219DE4 + 1 ; case 9
+ .short _02219E0E - _02219DE4 + 1 ; case 10
+ .short _02219E0E - _02219DE4 + 1 ; case 11
+ .short _02219E0E - _02219DE4 + 1 ; case 12
+ .short _02219E0E - _02219DE4 + 1 ; case 13
+ .short _02219E0E - _02219DE4 + 1 ; case 14
+ .short _02219E0E - _02219DE4 + 1 ; case 15
+_02219E04:
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219E0E:
+ mov r4, #0
+_02219E10:
+ cmp r4, #0
+ bne _02219DC6
+_02219E14:
+ ldr r0, _02219E40 ; =0x02241908
+ ldr r0, [r0]
+ ldr r1, _02219E38 ; =0x0224190C
+ ldr r1, [r1]
+ blx r1
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_02219E2C: .word 0x02241920
+_02219E30: .word 0x02241910
+_02219E34: .word 0x02241900
+_02219E38: .word 0x0224190C
+_02219E3C: .word 0x00005890
+_02219E40: .word 0x02241908
+_02219E44: .word MOD13_02219E5C
+
+ thumb_func_start MOD13_02219E48
+MOD13_02219E48: ; 0x02219E48
+ add r1, r0, #0
+ ldr r0, _02219E54 ; =0x02241920
+ mov r2, #0
+ ldr r3, _02219E58 ; =0x020CBDC4
+ bx r3
+ nop
+_02219E54: .word 0x02241920
+_02219E58: .word 0x020CBDC4
+
+ thumb_func_start MOD13_02219E5C
+MOD13_02219E5C: ; 0x02219E5C
+ add r1, r0, #0
+ ldr r0, _02219E68 ; =0x02241920
+ mov r2, #0
+ ldr r3, _02219E6C ; =0x020CBDC4
+ bx r3
+ nop
+_02219E68: .word 0x02241920
+_02219E6C: .word 0x020CBDC4
+
+ thumb_func_start MOD13_02219E70
+MOD13_02219E70: ; 0x02219E70
+ add r3, r0, #0
+ str r2, [r3]
+ add r0, r1, #0
+ add r1, r3, #4
+ ldr r3, _02219E7C ; =MOD13_02219EB4
+ bx r3
+ .align 2, 0
+_02219E7C: .word MOD13_02219EB4
+
+ thumb_func_start MOD13_02219E80
+MOD13_02219E80: ; 0x02219E80
+ push {r4, r5, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r1, #0
+ add r0, sp, #0
+ strh r1, [r0]
+ ldrh r0, [r0]
+ add r1, r4, #0
+ add r1, #0xc
+ mov r2, #0x20
+ bl MIi_CpuClear16
+ ldr r0, [r5]
+ strh r0, [r4, #0xa]
+ add r0, r5, #4
+ add r1, r4, #0
+ add r1, #0xc
+ ldrh r2, [r4, #0xa]
+ bl MI_CpuCopy8
+ add sp, #4
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_02219EB4
+MOD13_02219EB4: ; 0x02219EB4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ ldrh r0, [r5, #0xa]
+ str r0, [r4]
+ add r0, r5, #0
+ add r0, #0xc
+ add r1, r4, #4
+ mov r2, #0x20
+ bl MIi_CpuCopy16
+ ldrh r0, [r5, #0x36]
+ str r0, [r4, #0x24]
+ add r0, r5, #4
+ add r1, r4, #0
+ add r1, #0x30
+ mov r2, #6
+ bl MIi_CpuCopy16
+ mov r2, #0
+ add r3, r2, #0
+ ldr r1, _02219F50 ; =0x0223F834
+_02219EE2:
+ ldrh r6, [r5, #0x30]
+ ldrh r0, [r1]
+ and r6, r0
+ cmp r6, #0
+ beq _02219F10
+ add r0, r4, r2
+ ldrb r7, [r1, #2]
+ add r6, r0, #0
+ add r6, #0x3c
+ strb r7, [r6]
+ ldrh r7, [r5, #0x2e]
+ ldrh r6, [r1]
+ and r7, r6
+ cmp r7, #0
+ beq _02219F0E
+ add r6, r0, #0
+ add r6, #0x3c
+ ldrb r7, [r6]
+ mov r6, #0x80
+ orr r7, r6
+ add r0, #0x3c
+ strb r7, [r0]
+_02219F0E:
+ add r2, r2, #1
+_02219F10:
+ add r1, r1, #4
+ add r3, r3, #1
+ cmp r3, #0xc
+ blt _02219EE2
+ str r2, [r4, #0x38]
+ ldrh r0, [r5, #0x32]
+ str r0, [r4, #0x4c]
+ ldrh r1, [r5, #0x2c]
+ mov r0, #3
+ and r1, r0
+ cmp r1, #1
+ bne _02219F34
+ mov r0, #1
+ str r0, [r4, #0x50]
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219F34:
+ cmp r1, #2
+ bne _02219F44
+ mov r0, #2
+ str r0, [r4, #0x50]
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219F44:
+ mov r0, #0
+ str r0, [r4, #0x50]
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_02219F50: .word 0x0223F834
+
+ thumb_func_start MOD13_02219F54
+MOD13_02219F54: ; 0x02219F54
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r6, r0, #0
+ add r5, r1, #0
+ add r7, r2, #0
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ ldr r0, _0221A028 ; =0x02241A84
+ str r5, [r0]
+ add r2, r5, #0
+ add r2, #0x53
+ mov r0, #3
+ bic r2, r0
+ ldr r0, _0221A02C ; =0x02241A68
+ str r2, [r0]
+ add r1, r2, #0
+ add r1, #0x2f
+ mov r3, #0x1f
+ bic r1, r3
+ ldr r3, _0221A030 ; =0x02241A60
+ str r1, [r3]
+ ldr r3, _0221A034 ; =0x0000231F
+ add r1, r1, r3
+ mov r3, #0x1f
+ bic r1, r3
+ ldr r3, _0221A038 ; =0x02241A80
+ str r1, [r3]
+ add r1, #0xdf
+ mov r3, #0x1f
+ bic r1, r3
+ str r1, [r2, #4]
+ ldr r1, [r0]
+ add r3, r5, r7
+ ldr r2, [r1, #4]
+ sub r2, r3, r2
+ str r2, [r1, #8]
+ mov r2, #0
+ ldr r1, [r0]
+ str r2, [r1, #0xc]
+ ldr r1, [r0]
+ mov r0, #3
+ str r0, [r1]
+ ldr r0, _0221A03C ; =0x02241A7C
+ str r6, [r0]
+ ldr r0, _0221A040 ; =0x02241A78
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02219FDA
+ ldr r0, _0221A030 ; =0x02241A60
+ ldr r0, [r0]
+ ldr r1, _0221A044 ; =0x00002300
+ bl FUN_020A7E80
+ cmp r0, #0
+ beq _02219FD4
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_02219FD4:
+ mov r1, #1
+ ldr r0, _0221A040 ; =0x02241A78
+ str r1, [r0]
+_02219FDA:
+ ldr r0, _0221A040 ; =0x02241A78
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _0221A016
+ ldr r0, _0221A02C ; =0x02241A68
+ ldr r0, [r0]
+ ldr r1, _0221A048 ; =MOD13_0221A3CC
+ bl FUN_020A7BD4
+ cmp r0, #3
+ beq _0221A000
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221A000:
+ mov r1, #4
+ ldr r0, _0221A040 ; =0x02241A78
+ str r1, [r0]
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221A016:
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_0221A028: .word 0x02241A84
+_0221A02C: .word 0x02241A68
+_0221A030: .word 0x02241A60
+_0221A034: .word 0x0000231F
+_0221A038: .word 0x02241A80
+_0221A03C: .word 0x02241A7C
+_0221A040: .word 0x02241A78
+_0221A044: .word 0x00002300
+_0221A048: .word MOD13_0221A3CC
+
+ thumb_func_start MOD13_0221A04C
+MOD13_0221A04C: ; 0x0221A04C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r7, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ ldr r0, _0221A0EC ; =0x02241A6C
+ str r6, [r0]
+ cmp r5, #0
+ beq _0221A072
+ add r0, r5, #0
+ ldr r1, _0221A0F0 ; =0x02241A84
+ ldr r1, [r1]
+ mov r2, #0x50
+ bl MI_CpuCopy8
+ b _0221A07E
+_0221A072:
+ ldr r0, _0221A0F0 ; =0x02241A84
+ ldr r0, [r0]
+ mov r1, #0
+ mov r2, #0x50
+ bl MI_CpuFill8
+_0221A07E:
+ add r0, r7, #0
+ ldr r1, _0221A0F4 ; =0x02241A80
+ ldr r1, [r1]
+ mov r2, #0xc0
+ bl MIi_CpuCopy32
+ bl MOD13_0221A348
+ cmp r0, #1
+ bne _0221A0A8
+ mov r1, #8
+ ldr r0, _0221A0F8 ; =0x02241A78
+ str r1, [r0]
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221A0A8:
+ ldr r0, _0221A0F8 ; =0x02241A78
+ ldr r0, [r0]
+ cmp r0, #3
+ bne _0221A0DA
+ ldr r0, _0221A0F4 ; =0x02241A80
+ ldr r0, [r0]
+ ldr r1, _0221A0F0 ; =0x02241A84
+ ldr r1, [r1]
+ ldr r2, _0221A0EC ; =0x02241A6C
+ ldr r2, [r2]
+ bl FUN_020A75C0
+ cmp r0, #3
+ bne _0221A0DA
+ mov r1, #8
+ ldr r0, _0221A0F8 ; =0x02241A78
+ str r1, [r0]
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221A0DA:
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_0221A0EC: .word 0x02241A6C
+_0221A0F0: .word 0x02241A84
+_0221A0F4: .word 0x02241A80
+_0221A0F8: .word 0x02241A78
+
+ thumb_func_start MOD13_0221A0FC
+MOD13_0221A0FC: ; 0x0221A0FC
+ push {r4, lr}
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ ldr r0, _0221A160 ; =0x02241A78
+ ldr r0, [r0]
+ cmp r0, #3
+ bne _0221A136
+ bl FUN_020A7AC8
+ cmp r0, #3
+ beq _0221A122
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ pop {r4}
+ pop {r3}
+ bx r3
+_0221A122:
+ mov r1, #2
+ ldr r0, _0221A160 ; =0x02241A78
+ str r1, [r0]
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ pop {r4}
+ pop {r3}
+ bx r3
+_0221A136:
+ bl MOD13_0221A348
+ cmp r0, #1
+ bne _0221A152
+ mov r1, #2
+ ldr r0, _0221A160 ; =0x02241A78
+ str r1, [r0]
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ pop {r4}
+ pop {r3}
+ bx r3
+_0221A152:
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ pop {r4}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221A160: .word 0x02241A78
+
+ thumb_func_start MOD13_0221A164
+MOD13_0221A164: ; 0x0221A164
+ push {r4, lr}
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ ldr r0, _0221A1A0 ; =0x02241A78
+ ldr r0, [r0]
+ cmp r0, #7
+ bne _0221A190
+ bl FUN_020A7488
+ cmp r0, #3
+ bne _0221A190
+ mov r1, #4
+ ldr r0, _0221A1A0 ; =0x02241A78
+ str r1, [r0]
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ pop {r4}
+ pop {r3}
+ bx r3
+_0221A190:
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ pop {r4}
+ pop {r3}
+ bx r3
+ nop
+_0221A1A0: .word 0x02241A78
+
+ thumb_func_start MOD13_0221A1A4
+MOD13_0221A1A4: ; 0x0221A1A4
+ push {r4, lr}
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ ldr r0, _0221A1E4 ; =0x02241A78
+ ldr r0, [r0]
+ cmp r0, #5
+ bne _0221A1D6
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ bl FUN_020A7A90
+ cmp r0, #3
+ bne _0221A1D6
+ mov r1, #4
+ ldr r0, _0221A1E4 ; =0x02241A78
+ str r1, [r0]
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ pop {r4}
+ pop {r3}
+ bx r3
+_0221A1D6:
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ pop {r4}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221A1E4: .word 0x02241A78
+
+ thumb_func_start MOD13_0221A1E8
+MOD13_0221A1E8: ; 0x0221A1E8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ str r3, [sp]
+ bl OS_DisableInterrupts
+ add r7, r0, #0
+ ldr r1, _0221A2DC ; =0x02241A64
+ ldr r0, [sp]
+ str r0, [r1]
+ cmp r5, #0
+ beq _0221A21E
+ mov r2, #0
+ ldr r1, _0221A2E0 ; =0x02241A88
+_0221A208:
+ ldrb r0, [r5]
+ add r5, r5, #1
+ strb r0, [r1]
+ add r1, r1, #1
+ add r2, r2, #1
+ cmp r2, #6
+ blt _0221A208
+ ldr r1, _0221A2E0 ; =0x02241A88
+ ldr r0, _0221A2E4 ; =0x02241A70
+ str r1, [r0]
+ b _0221A22E
+_0221A21E:
+ ldr r0, _0221A2E0 ; =0x02241A88
+ mov r1, #0xff
+ mov r2, #6
+ bl MI_CpuFill8
+ ldr r1, _0221A2E8 ; =0x020FF590
+ ldr r0, _0221A2E4 ; =0x02241A70
+ str r1, [r0]
+_0221A22E:
+ cmp r4, #0
+ beq _0221A26C
+ cmp r6, #0
+ ble _0221A26C
+ cmp r6, #0x20
+ bgt _0221A26C
+ mov r1, #0
+ cmp r6, #0
+ ble _0221A250
+ ldr r2, _0221A2EC ; =0x02241A90
+_0221A242:
+ ldrb r0, [r4]
+ add r4, r4, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ add r1, r1, #1
+ cmp r1, r6
+ blt _0221A242
+_0221A250:
+ cmp r1, #0x20
+ bge _0221A264
+ ldr r0, _0221A2EC ; =0x02241A90
+ add r2, r0, r1
+ mov r0, #0
+_0221A25A:
+ strb r0, [r2]
+ add r2, r2, #1
+ add r1, r1, #1
+ cmp r1, #0x20
+ blt _0221A25A
+_0221A264:
+ ldr r1, _0221A2EC ; =0x02241A90
+ ldr r0, _0221A2F0 ; =0x02241A74
+ str r1, [r0]
+ b _0221A27C
+_0221A26C:
+ ldr r0, _0221A2EC ; =0x02241A90
+ mov r1, #0xff
+ mov r2, #0x20
+ bl MI_CpuFill8
+ ldr r1, _0221A2F4 ; =0x020FF598
+ ldr r0, _0221A2F0 ; =0x02241A74
+ str r1, [r0]
+_0221A27C:
+ ldr r0, _0221A2F8 ; =0x02241A78
+ ldr r0, [r0]
+ cmp r0, #3
+ bne _0221A2AE
+ ldr r0, _0221A2E4 ; =0x02241A70
+ ldr r0, [r0]
+ ldr r1, _0221A2F0 ; =0x02241A74
+ ldr r1, [r1]
+ ldr r2, _0221A2DC ; =0x02241A64
+ ldr r2, [r2]
+ bl FUN_020A7A90
+ cmp r0, #3
+ bne _0221A2CC
+ mov r1, #6
+ ldr r0, _0221A2F8 ; =0x02241A78
+ str r1, [r0]
+ add r0, r7, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221A2AE:
+ bl MOD13_0221A348
+ cmp r0, #1
+ bne _0221A2CC
+ mov r1, #6
+ ldr r0, _0221A2F8 ; =0x02241A78
+ str r1, [r0]
+ add r0, r7, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221A2CC:
+ add r0, r7, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221A2DC: .word 0x02241A64
+_0221A2E0: .word 0x02241A88
+_0221A2E4: .word 0x02241A70
+_0221A2E8: .word 0x020FF590
+_0221A2EC: .word 0x02241A90
+_0221A2F0: .word 0x02241A74
+_0221A2F4: .word 0x020FF598
+_0221A2F8: .word 0x02241A78
+
+ thumb_func_start MOD13_0221A2FC
+MOD13_0221A2FC: ; 0x0221A2FC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r7, r1, #0
+ mov r0, #1
+ bl FUN_020A83D0
+ bl FUN_020A846C
+ add r6, r0, #0
+ cmp r6, #0
+ ble _0221A336
+ mov r4, #0
+ cmp r6, #0
+ ble _0221A336
+_0221A31A:
+ cmp r4, r7
+ bge _0221A336
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020A8358
+ add r1, r5, #0
+ mov r2, #0xc0
+ bl MIi_CpuCopy32
+ add r4, r4, #1
+ add r5, #0xc0
+ cmp r4, r6
+ blt _0221A31A
+_0221A336:
+ mov r0, #0
+ bl FUN_020A83D0
+ add r0, r6, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_0221A348
+MOD13_0221A348: ; 0x0221A348
+ push {lr}
+ sub sp, #4
+ ldr r0, _0221A3C0 ; =0x02241A78
+ ldr r0, [r0]
+ cmp r0, #8
+ bhi _0221A3B0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #8]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, pc
+ bx r0
+_0221A362: ; jump table
+ .short _0221A3B0 - _0221A362 + 1 ; case 0
+ .short _0221A39A - _0221A362 + 1 ; case 1
+ .short _0221A3B0 - _0221A362 + 1 ; case 2
+ .short _0221A3B0 - _0221A362 + 1 ; case 3
+ .short _0221A3B0 - _0221A362 + 1 ; case 4
+ .short _0221A374 - _0221A362 + 1 ; case 5
+ .short _0221A3B0 - _0221A362 + 1 ; case 6
+ .short _0221A38A - _0221A362 + 1 ; case 7
+ .short _0221A3B0 - _0221A362 + 1 ; case 8
+_0221A374:
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ bl FUN_020A7A90
+ cmp r0, #3
+ beq _0221A3B8
+ mov r0, #0
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A38A:
+ bl FUN_020A7488
+ cmp r0, #3
+ beq _0221A3B8
+ mov r0, #0
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A39A:
+ ldr r0, _0221A3C4 ; =0x02241A68
+ ldr r0, [r0]
+ ldr r1, _0221A3C8 ; =MOD13_0221A3CC
+ bl FUN_020A7BD4
+ cmp r0, #3
+ beq _0221A3B8
+ mov r0, #0
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A3B0:
+ mov r0, #0
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A3B8:
+ mov r0, #1
+ add sp, #4
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221A3C0: .word 0x02241A78
+_0221A3C4: .word 0x02241A68
+_0221A3C8: .word MOD13_0221A3CC
+
+ thumb_func_start MOD13_0221A3CC
+MOD13_0221A3CC: ; 0x0221A3CC
+ push {lr}
+ sub sp, #4
+ cmp r0, #0
+ bne _0221A3D6
+ b _0221A750
+_0221A3D6:
+ mov r1, #0
+ ldrsh r2, [r0, r1]
+ cmp r2, #7
+ bls _0221A3E0
+ b _0221A742
+_0221A3E0:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #8]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add r2, pc
+ bx r2
+_0221A3EE: ; jump table
+ .short _0221A742 - _0221A3EE + 1 ; case 0
+ .short _0221A3FE - _0221A3EE + 1 ; case 1
+ .short _0221A6E4 - _0221A3EE + 1 ; case 2
+ .short _0221A4AE - _0221A3EE + 1 ; case 3
+ .short _0221A536 - _0221A3EE + 1 ; case 4
+ .short _0221A4F2 - _0221A3EE + 1 ; case 5
+ .short _0221A610 - _0221A3EE + 1 ; case 6
+ .short _0221A728 - _0221A3EE + 1 ; case 7
+_0221A3FE:
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ cmp r0, #0
+ bne _0221A494
+ ldr r0, _0221A758 ; =0x02241A78
+ ldr r2, [r0]
+ cmp r2, #4
+ bne _0221A426
+ mov r2, #3
+ str r2, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221A41C
+ b _0221A750
+_0221A41C:
+ mov r0, #6
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A426:
+ cmp r2, #6
+ bne _0221A45C
+ ldr r0, _0221A760 ; =0x02241A70
+ ldr r0, [r0]
+ ldr r1, _0221A764 ; =0x02241A74
+ ldr r1, [r1]
+ ldr r2, _0221A768 ; =0x02241A64
+ ldr r2, [r2]
+ bl FUN_020A7A90
+ cmp r0, #3
+ bne _0221A440
+ b _0221A750
+_0221A440:
+ mov r1, #3
+ ldr r0, _0221A758 ; =0x02241A78
+ str r1, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221A450
+ b _0221A750
+_0221A450:
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A45C:
+ cmp r2, #8
+ beq _0221A462
+ b _0221A750
+_0221A462:
+ ldr r0, _0221A76C ; =0x02241A80
+ ldr r0, [r0]
+ ldr r1, _0221A770 ; =0x02241A84
+ ldr r1, [r1]
+ ldr r2, _0221A774 ; =0x02241A6C
+ ldr r2, [r2]
+ bl FUN_020A75C0
+ cmp r0, #3
+ bne _0221A478
+ b _0221A750
+_0221A478:
+ mov r1, #3
+ ldr r0, _0221A758 ; =0x02241A78
+ str r1, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221A488
+ b _0221A750
+_0221A488:
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A494:
+ mov r3, #1
+ ldr r0, _0221A758 ; =0x02241A78
+ str r3, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r3, [r0]
+ cmp r3, #0
+ bne _0221A4A4
+ b _0221A750
+_0221A4A4:
+ add r0, r2, #0
+ blx r3
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A4AE:
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ cmp r0, #0
+ bne _0221A4D8
+ ldr r0, _0221A758 ; =0x02241A78
+ ldr r2, [r0]
+ cmp r2, #6
+ beq _0221A4C0
+ b _0221A750
+_0221A4C0:
+ mov r2, #5
+ str r2, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221A4CE
+ b _0221A750
+_0221A4CE:
+ mov r0, #8
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A4D8:
+ mov r2, #3
+ ldr r0, _0221A758 ; =0x02241A78
+ str r2, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221A4E8
+ b _0221A750
+_0221A4E8:
+ mov r0, #9
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A4F2:
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ cmp r0, #0
+ bne _0221A51C
+ ldr r0, _0221A758 ; =0x02241A78
+ ldr r2, [r0]
+ cmp r2, #8
+ beq _0221A504
+ b _0221A750
+_0221A504:
+ mov r2, #7
+ str r2, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221A512
+ b _0221A750
+_0221A512:
+ mov r0, #0xc
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A51C:
+ mov r2, #3
+ ldr r0, _0221A758 ; =0x02241A78
+ str r2, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221A52C
+ b _0221A750
+_0221A52C:
+ mov r0, #0xd
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A536:
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ cmp r0, #0
+ bne _0221A5F6
+ ldr r0, _0221A758 ; =0x02241A78
+ ldr r2, [r0]
+ cmp r2, #4
+ bne _0221A55E
+ mov r2, #3
+ str r2, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221A554
+ b _0221A750
+_0221A554:
+ mov r0, #0xa
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A55E:
+ cmp r2, #6
+ bne _0221A594
+ ldr r0, _0221A760 ; =0x02241A70
+ ldr r0, [r0]
+ ldr r1, _0221A764 ; =0x02241A74
+ ldr r1, [r1]
+ ldr r2, _0221A768 ; =0x02241A64
+ ldr r2, [r2]
+ bl FUN_020A7A90
+ cmp r0, #3
+ bne _0221A578
+ b _0221A750
+_0221A578:
+ mov r1, #3
+ ldr r0, _0221A758 ; =0x02241A78
+ str r1, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221A588
+ b _0221A750
+_0221A588:
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A594:
+ cmp r2, #2
+ bne _0221A5BE
+ bl FUN_020A7AC8
+ cmp r0, #3
+ bne _0221A5A2
+ b _0221A750
+_0221A5A2:
+ mov r1, #3
+ ldr r0, _0221A758 ; =0x02241A78
+ str r1, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221A5B2
+ b _0221A750
+_0221A5B2:
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A5BE:
+ cmp r2, #8
+ beq _0221A5C4
+ b _0221A750
+_0221A5C4:
+ ldr r0, _0221A76C ; =0x02241A80
+ ldr r0, [r0]
+ ldr r1, _0221A770 ; =0x02241A84
+ ldr r1, [r1]
+ ldr r2, _0221A774 ; =0x02241A6C
+ ldr r2, [r2]
+ bl FUN_020A75C0
+ cmp r0, #3
+ bne _0221A5DA
+ b _0221A750
+_0221A5DA:
+ mov r1, #3
+ ldr r0, _0221A758 ; =0x02241A78
+ str r1, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221A5EA
+ b _0221A750
+_0221A5EA:
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A5F6:
+ mov r2, #3
+ ldr r0, _0221A758 ; =0x02241A78
+ str r2, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221A606
+ b _0221A750
+_0221A606:
+ mov r0, #0xb
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A610:
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ cmp r0, #0
+ bne _0221A6CC
+ ldr r0, _0221A758 ; =0x02241A78
+ ldr r2, [r0]
+ cmp r2, #4
+ bne _0221A638
+ mov r2, #3
+ str r2, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221A62E
+ b _0221A750
+_0221A62E:
+ mov r0, #0xe
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A638:
+ cmp r2, #6
+ bne _0221A66A
+ ldr r0, _0221A760 ; =0x02241A70
+ ldr r0, [r0]
+ ldr r1, _0221A764 ; =0x02241A74
+ ldr r1, [r1]
+ ldr r2, _0221A768 ; =0x02241A64
+ ldr r2, [r2]
+ bl FUN_020A7A90
+ cmp r0, #3
+ beq _0221A750
+ mov r1, #3
+ ldr r0, _0221A758 ; =0x02241A78
+ str r1, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221A750
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A66A:
+ cmp r2, #2
+ bne _0221A690
+ bl FUN_020A7AC8
+ cmp r0, #3
+ beq _0221A750
+ mov r1, #3
+ ldr r0, _0221A758 ; =0x02241A78
+ str r1, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221A750
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A690:
+ cmp r2, #8
+ bne _0221A6C2
+ ldr r0, _0221A76C ; =0x02241A80
+ ldr r0, [r0]
+ ldr r1, _0221A770 ; =0x02241A84
+ ldr r1, [r1]
+ ldr r2, _0221A774 ; =0x02241A6C
+ ldr r2, [r2]
+ bl FUN_020A75C0
+ cmp r0, #3
+ beq _0221A750
+ mov r1, #3
+ ldr r0, _0221A758 ; =0x02241A78
+ str r1, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221A750
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A6C2:
+ mov r1, #3
+ str r1, [r0]
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A6CC:
+ mov r2, #3
+ ldr r0, _0221A758 ; =0x02241A78
+ str r2, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221A750
+ mov r0, #0xf
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A6E4:
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ cmp r0, #0
+ bne _0221A710
+ ldr r0, _0221A758 ; =0x02241A78
+ ldr r0, [r0]
+ cmp r0, #2
+ bne _0221A750
+ bl FUN_020A7E0C
+ mov r1, #0
+ ldr r0, _0221A758 ; =0x02241A78
+ str r1, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221A750
+ mov r0, #0x14
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A710:
+ mov r3, #3
+ ldr r0, _0221A758 ; =0x02241A78
+ str r3, [r0]
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r3, [r0]
+ cmp r3, #0
+ beq _0221A750
+ add r0, r2, #0
+ blx r3
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A728:
+ ldr r0, _0221A758 ; =0x02241A78
+ ldr r0, [r0]
+ cmp r0, #5
+ bne _0221A750
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221A750
+ mov r0, #5
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221A742:
+ ldr r0, _0221A75C ; =0x02241A7C
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221A750
+ mov r0, #1
+ mov r1, #0
+ blx r2
+_0221A750:
+ add sp, #4
+ pop {r3}
+ bx r3
+ nop
+_0221A758: .word 0x02241A78
+_0221A75C: .word 0x02241A7C
+_0221A760: .word 0x02241A70
+_0221A764: .word 0x02241A74
+_0221A768: .word 0x02241A64
+_0221A76C: .word 0x02241A80
+_0221A770: .word 0x02241A84
+_0221A774: .word 0x02241A6C
+
+ thumb_func_start MOD13_0221A778
+MOD13_0221A778: ; 0x0221A778
+ push {lr}
+ sub sp, #0xc
+ add r0, sp, #0
+ bl MOD13_0221A7AC
+ add r0, sp, #0
+ ldr r1, _0221A790 ; =0x02241B2C
+ ldr r1, [r1]
+ blx r1
+ add sp, #0xc
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221A790: .word 0x02241B2C
+
+ thumb_func_start MOD13_0221A794
+MOD13_0221A794: ; 0x0221A794
+ push {lr}
+ sub sp, #4
+ ldr r1, _0221A7A8 ; =0x02241CA8
+ mov r2, #0xe8
+ bl memcpy
+ mov r0, #1
+ add sp, #4
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221A7A8: .word 0x02241CA8
+
+ thumb_func_start MOD13_0221A7AC
+MOD13_0221A7AC: ; 0x0221A7AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _0221A7E0 ; =0x02241AE8
+ ldr r0, [r0]
+ str r0, [r4]
+ ldr r0, _0221A7E4 ; =0x0223F870
+ ldr r1, [r0]
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ bne _0221A7C6
+ str r0, [r4, #4]
+ b _0221A7D2
+_0221A7C6:
+ bl MOD13_0221AA90
+ ldr r1, _0221A7E4 ; =0x0223F870
+ ldr r1, [r1]
+ sub r0, r1, r0
+ str r0, [r4, #4]
+_0221A7D2:
+ ldr r0, _0221A7E8 ; =0x02241B28
+ ldr r0, [r0]
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221A7E0: .word 0x02241AE8
+_0221A7E4: .word 0x0223F870
+_0221A7E8: .word 0x02241B28
+
+ thumb_func_start MOD13_0221A7EC
+MOD13_0221A7EC: ; 0x0221A7EC
+ push {r4, r5, r6, lr}
+ ldr r0, _0221A884 ; =0x02241B14
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0221A862
+ ldr r4, _0221A888 ; =0x02241AE8
+ ldr r6, [r4]
+ mov r1, #1
+ ldr r0, _0221A88C ; =0x02241AC0
+ str r1, [r0]
+ mov r5, #0x64
+ b _0221A80A
+_0221A804:
+ add r0, r5, #0
+ bl OS_Sleep
+_0221A80A:
+ ldr r0, [r4]
+ cmp r0, #1
+ blt _0221A814
+ cmp r0, #5
+ ble _0221A804
+_0221A814:
+ ldr r0, _0221A890 ; =0x000001F4
+ bl OS_Sleep
+ ldr r0, _0221A894 ; =0x02241BE8
+ bl OS_IsThreadTerminated
+ cmp r0, #0
+ bne _0221A83C
+ ldr r4, _0221A894 ; =0x02241BE8
+_0221A826:
+ add r0, r4, #0
+ bl OS_WakeupThreadDirect
+ add r0, r4, #0
+ bl OS_JoinThread
+ add r0, r4, #0
+ bl OS_IsThreadTerminated
+ cmp r0, #0
+ beq _0221A826
+_0221A83C:
+ ldr r0, _0221A898 ; =0x02241AE0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0221A850
+ ldr r1, _0221A89C ; =0x02241ABC
+ ldr r1, [r1]
+ blx r1
+ mov r1, #0
+ ldr r0, _0221A898 ; =0x02241AE0
+ str r1, [r0]
+_0221A850:
+ mov r1, #0
+ ldr r0, _0221A884 ; =0x02241B14
+ str r1, [r0]
+ ldr r0, _0221A888 ; =0x02241AE8
+ ldr r0, [r0]
+ cmp r6, r0
+ beq _0221A862
+ bl MOD13_0221A778
+_0221A862:
+ ldr r0, _0221A8A0 ; =0x02241B24
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _0221A87A
+ bl MOD13_0221DAF4
+ mov r2, #0
+ ldr r1, _0221A8A0 ; =0x02241B24
+ str r2, [r1]
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_0221A87A:
+ mov r0, #9
+ mvn r0, r0
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221A884: .word 0x02241B14
+_0221A888: .word 0x02241AE8
+_0221A88C: .word 0x02241AC0
+_0221A890: .word 0x000001F4
+_0221A894: .word 0x02241BE8
+_0221A898: .word 0x02241AE0
+_0221A89C: .word 0x02241ABC
+_0221A8A0: .word 0x02241B24
+
+ thumb_func_start MOD13_0221A8A4
+MOD13_0221A8A4: ; 0x0221A8A4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, _0221A998 ; =0x02241AE8
+ ldr r0, [r0]
+ cmp r0, #1
+ blt _0221A8C2
+ cmp r0, #5
+ bgt _0221A8C2
+ mov r0, #9
+ mvn r0, r0
+ add sp, #0xc
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+_0221A8C2:
+ ldr r0, _0221A99C ; =0x0223F874
+ str r1, [r0]
+ mov r5, #7
+ ldr r0, _0221A998 ; =0x02241AE8
+ str r5, [r0]
+ ldr r0, _0221A9A0 ; =0x02241B2C
+ str r2, [r0]
+ ldr r0, _0221A9A4 ; =0x02241AB4
+ str r3, [r0]
+ ldr r2, [sp, #0x18]
+ ldr r0, _0221A9A8 ; =0x02241ABC
+ str r2, [r0]
+ ldr r2, [sp, #0x1c]
+ ldr r0, _0221A9AC ; =0x0223F86C
+ str r2, [r0]
+ add r0, r1, #0
+ bl MOD13_0221DB54
+ mov r2, #1
+ ldr r1, _0221A9B0 ; =0x02241B24
+ str r2, [r1]
+ cmp r0, #0
+ bge _0221A8FC
+ ldr r1, _0221A9B4 ; =0x02241B28
+ str r0, [r1]
+ add sp, #0xc
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+_0221A8FC:
+ ldr r0, _0221A9AC ; =0x0223F86C
+ ldr r0, [r0]
+ ldr r1, _0221A9A4 ; =0x02241AB4
+ ldr r1, [r1]
+ blx r1
+ ldr r1, _0221A9B8 ; =0x02241AE0
+ str r0, [r1]
+ cmp r0, #0
+ bne _0221A91E
+ mov r0, #0
+ mvn r0, r0
+ ldr r1, _0221A9B4 ; =0x02241B28
+ str r0, [r1]
+ add sp, #0xc
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+_0221A91E:
+ bl OS_IsThreadAvailable
+ cmp r0, #1
+ beq _0221A936
+ mov r0, #8
+ mvn r0, r0
+ ldr r1, _0221A9B4 ; =0x02241B28
+ str r0, [r1]
+ add sp, #0xc
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+_0221A936:
+ ldr r0, _0221A9AC ; =0x0223F86C
+ ldr r3, [r0]
+ str r3, [sp]
+ str r4, [sp, #4]
+ ldr r0, _0221A9BC ; =0x02241BE8
+ ldr r1, _0221A9C0 ; =MOD13_0221C618
+ mov r2, #0
+ ldr r4, _0221A9B8 ; =0x02241AE0
+ ldr r5, [r4]
+ mov r4, #7
+ bic r3, r4
+ add r3, r5, r3
+ bl OS_CreateThread
+ mov r1, #1
+ ldr r0, _0221A998 ; =0x02241AE8
+ str r1, [r0]
+ bl MOD13_0221AA90
+ ldr r1, _0221A9C4 ; =0x0000EA60
+ add r1, r0, r1
+ ldr r0, _0221A9C8 ; =0x0223F870
+ str r1, [r0]
+ mov r0, #0
+ ldr r1, _0221A9CC ; =0x02241AC0
+ str r0, [r1]
+ ldr r5, _0221A9D0 ; =0x02241CA8
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+_0221A972:
+ stmia r5!, {r0, r1, r2, r3}
+ stmia r5!, {r0, r1, r2, r3}
+ sub r4, r4, #1
+ cmp r4, #0
+ bne _0221A972
+ stmia r5!, {r0, r1}
+ bl MOD13_0221A778
+ ldr r0, _0221A9BC ; =0x02241BE8
+ bl OS_WakeupThreadDirect
+ mov r0, #1
+ ldr r1, _0221A9D4 ; =0x02241B14
+ str r0, [r1]
+ add sp, #0xc
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+ nop
+_0221A998: .word 0x02241AE8
+_0221A99C: .word 0x0223F874
+_0221A9A0: .word 0x02241B2C
+_0221A9A4: .word 0x02241AB4
+_0221A9A8: .word 0x02241ABC
+_0221A9AC: .word 0x0223F86C
+_0221A9B0: .word 0x02241B24
+_0221A9B4: .word 0x02241B28
+_0221A9B8: .word 0x02241AE0
+_0221A9BC: .word 0x02241BE8
+_0221A9C0: .word MOD13_0221C618
+_0221A9C4: .word 0x0000EA60
+_0221A9C8: .word 0x0223F870
+_0221A9CC: .word 0x02241AC0
+_0221A9D0: .word 0x02241CA8
+_0221A9D4: .word 0x02241B14
+
+ thumb_func_start MOD13_0221A9D8
+MOD13_0221A9D8: ; 0x0221A9D8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ str r0, [sp]
+ add r6, r1, #0
+ lsl r5, r0, #0
+ mov r4, #0
+ add r7, r4, #0
+_0221A9E6:
+ add r0, r5, #0
+ ldrsb r1, [r6, r7]
+ add r6, r6, #1
+ bl MOD13_0221AA14
+ add r1, r5, r0
+ add r5, r1, #0
+ cmp r4, #5
+ bge _0221A9FE
+ add r5, r1, #1
+ mov r0, #0x3a
+ strb r0, [r1]
+_0221A9FE:
+ add r4, r4, #1
+ cmp r4, #6
+ blt _0221A9E6
+ mov r0, #0
+ strb r0, [r5]
+ ldr r0, [sp]
+ sub r0, r5, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+
+ thumb_func_start MOD13_0221AA14
+MOD13_0221AA14: ; 0x0221AA14
+ push {r4, r5}
+ add r2, r0, #0
+ lsl r1, r1, #0x18
+ lsr r4, r1, #0x18
+ mov r1, #0xf0
+ add r3, r4, #0
+ and r3, r1
+ asr r3, r3, #4
+ mov r5, #0
+ mov r1, #0xf
+ and r4, r1
+_0221AA2A:
+ cmp r3, #9
+ bgt _0221AA36
+ add r3, #0x30
+ strb r3, [r2]
+ add r2, r2, #1
+ b _0221AA3C
+_0221AA36:
+ add r3, #0x37
+ strb r3, [r2]
+ add r2, r2, #1
+_0221AA3C:
+ add r3, r4, #0
+ add r5, r5, #1
+ cmp r5, #2
+ blt _0221AA2A
+ mov r1, #0
+ strb r1, [r2]
+ sub r0, r2, r0
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD13_0221AA50
+MOD13_0221AA50: ; 0x0221AA50
+ push {lr}
+ sub sp, #4
+ ldr r1, _0221AA60 ; =0x02241ABC
+ ldr r1, [r1]
+ blx r1
+ add sp, #4
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221AA60: .word 0x02241ABC
+
+ thumb_func_start MOD13_0221AA64
+MOD13_0221AA64: ; 0x0221AA64
+ push {r4, r5, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mul r4, r1
+ add r0, r4, #0
+ ldr r1, _0221AA8C ; =0x02241AB4
+ ldr r1, [r1]
+ blx r1
+ add r5, r0, #0
+ cmp r5, #0
+ beq _0221AA82
+ mov r1, #0
+ add r2, r4, #0
+ bl Call_FillMemWithValue
+_0221AA82:
+ add r0, r5, #0
+ add sp, #4
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221AA8C: .word 0x02241AB4
+
+ thumb_func_start MOD13_0221AA90
+MOD13_0221AA90: ; 0x0221AA90
+ push {lr}
+ sub sp, #4
+ bl OS_GetTick
+ lsr r2, r0, #0x1a
+ lsl r1, r1, #6
+ orr r1, r2
+ lsl r0, r0, #6
+ ldr r2, _0221AAB0 ; =0x000082EA
+ mov r3, #0
+ bl _ll_udiv
+ add sp, #4
+ pop {r3}
+ bx r3
+ nop
+_0221AAB0: .word 0x000082EA
+
+ thumb_func_start MOD13_0221AAB4
+MOD13_0221AAB4: ; 0x0221AAB4
+ push {r4, r5, r6, lr}
+ sub sp, #0x58
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r0, sp, #0
+ bl MOD13_0221B4AC
+ add r0, sp, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD13_0221B42C
+ add r0, r5, #0
+ add r1, sp, #0
+ bl MOD13_0221B3D0
+ add sp, #0x58
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_0221AAE0
+MOD13_0221AAE0: ; 0x0221AAE0
+ mov r3, #0
+ cmp r2, #0
+ bls _0221AAF4
+ lsl r1, r1, #0x18
+ asr r1, r1, #0x18
+_0221AAEA:
+ strb r1, [r0]
+ add r0, r0, #1
+ add r3, r3, #1
+ cmp r3, r2
+ blo _0221AAEA
+_0221AAF4:
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD13_0221AAF8
+MOD13_0221AAF8: ; 0x0221AAF8
+ push {r4}
+ sub sp, #4
+ mov r4, #0
+ cmp r2, #0
+ bls _0221AB0C
+_0221AB02:
+ ldrb r3, [r1, r4]
+ strb r3, [r0, r4]
+ add r4, r4, #1
+ cmp r4, r2
+ blo _0221AB02
+_0221AB0C:
+ add sp, #4
+ pop {r4}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD13_0221AB14
+MOD13_0221AB14: ; 0x0221AB14
+ push {r4, r5, r6, r7}
+ mov r6, #0
+ cmp r2, #0
+ bls _0221AB3E
+_0221AB1C:
+ add r3, r6, #3
+ ldrb r3, [r1, r3]
+ lsl r5, r3, #0x18
+ add r3, r6, #2
+ ldrb r3, [r1, r3]
+ lsl r4, r3, #0x10
+ ldrb r3, [r1, r6]
+ add r7, r6, #1
+ ldrb r7, [r1, r7]
+ lsl r7, r7, #8
+ orr r3, r7
+ orr r4, r3
+ orr r5, r4
+ stmia r0!, {r5}
+ add r6, r6, #4
+ cmp r6, r2
+ blo _0221AB1C
+_0221AB3E:
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD13_0221AB44
+MOD13_0221AB44: ; 0x0221AB44
+ push {r4, r5}
+ mov r3, #0
+ cmp r2, #0
+ bls _0221AB70
+_0221AB4C:
+ ldr r4, [r1]
+ strb r4, [r0, r3]
+ ldr r4, [r1]
+ lsr r5, r4, #8
+ add r4, r3, #1
+ strb r5, [r0, r4]
+ ldr r4, [r1]
+ lsr r5, r4, #0x10
+ add r4, r3, #2
+ strb r5, [r0, r4]
+ ldr r4, [r1]
+ lsr r5, r4, #0x18
+ add r4, r3, #3
+ strb r5, [r0, r4]
+ add r1, r1, #4
+ add r3, r3, #4
+ cmp r3, r2
+ blo _0221AB4C
+_0221AB70:
+ pop {r4, r5}
+ bx lr
+
+ thumb_func_start MOD13_0221AB74
+MOD13_0221AB74: ; 0x0221AB74
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x84
+ add r5, r0, #0
+ ldr r0, [r5]
+ str r0, [sp]
+ ldr r4, [r5, #4]
+ ldr r6, [r5, #8]
+ ldr r7, [r5, #0xc]
+ add r0, sp, #0x40
+ mov r2, #0x40
+ bl MOD13_0221AB14
+ ldr r0, [sp, #0x40]
+ str r0, [sp, #4]
+ add r1, r4, #0
+ and r1, r6
+ mvn r0, r4
+ and r0, r7
+ orr r1, r0
+ ldr r0, [sp, #4]
+ add r1, r0, r1
+ ldr r0, _0221AF8C ; =0x28955B88
+ sub r1, r1, r0
+ ldr r0, [sp]
+ add r0, r0, r1
+ lsl r1, r0, #7
+ lsr r0, r0, #0x19
+ orr r1, r0
+ add r0, r1, r4
+ ldr r1, [sp, #0x44]
+ str r1, [sp, #8]
+ add r1, r0, #0
+ and r1, r4
+ mvn r2, r0
+ and r2, r6
+ orr r1, r2
+ ldr r2, [sp, #8]
+ add r2, r2, r1
+ ldr r1, _0221AF90 ; =0x173848AA
+ sub r1, r2, r1
+ add r1, r7, r1
+ lsl r2, r1, #0xc
+ lsr r1, r1, #0x14
+ orr r2, r1
+ add r3, r2, r0
+ ldr r1, [sp, #0x48]
+ str r1, [sp, #0xc]
+ add r1, r3, #0
+ and r1, r0
+ mvn r2, r3
+ and r2, r4
+ orr r1, r2
+ ldr r2, [sp, #0xc]
+ add r2, r2, r1
+ ldr r1, _0221AF94 ; =0x242070DB
+ add r1, r2, r1
+ add r1, r6, r1
+ lsl r2, r1, #0x11
+ lsr r1, r1, #0xf
+ orr r2, r1
+ add r2, r2, r3
+ ldr r1, [sp, #0x4c]
+ str r1, [sp, #0x10]
+ add r1, r2, #0
+ and r1, r3
+ mvn r6, r2
+ and r6, r0
+ orr r1, r6
+ ldr r6, [sp, #0x10]
+ add r6, r6, r1
+ ldr r1, _0221AF98 ; =0x3E423112
+ sub r1, r6, r1
+ add r1, r4, r1
+ lsl r4, r1, #0x16
+ lsr r1, r1, #0xa
+ orr r4, r1
+ add r1, r4, r2
+ ldr r4, [sp, #0x50]
+ str r4, [sp, #0x14]
+ add r4, r1, #0
+ and r4, r2
+ mvn r6, r1
+ and r6, r3
+ orr r4, r6
+ ldr r6, [sp, #0x14]
+ add r6, r6, r4
+ ldr r4, _0221AF9C ; =0x0A83F051
+ sub r4, r6, r4
+ add r0, r0, r4
+ lsl r4, r0, #7
+ lsr r0, r0, #0x19
+ orr r4, r0
+ add r4, r4, r1
+ ldr r0, [sp, #0x54]
+ str r0, [sp, #0x18]
+ add r0, r4, #0
+ and r0, r1
+ mvn r6, r4
+ and r6, r2
+ orr r0, r6
+ ldr r6, [sp, #0x18]
+ add r6, r6, r0
+ ldr r0, _0221AFA0 ; =0x4787C62A
+ add r0, r6, r0
+ add r0, r3, r0
+ lsl r3, r0, #0xc
+ lsr r0, r0, #0x14
+ orr r3, r0
+ add r3, r3, r4
+ ldr r0, [sp, #0x58]
+ str r0, [sp, #0x1c]
+ add r0, r3, #0
+ and r0, r4
+ mvn r6, r3
+ and r6, r1
+ orr r0, r6
+ ldr r6, [sp, #0x1c]
+ add r6, r6, r0
+ ldr r0, _0221AFA4 ; =0x57CFB9ED
+ sub r0, r6, r0
+ add r0, r2, r0
+ lsl r2, r0, #0x11
+ lsr r0, r0, #0xf
+ orr r2, r0
+ add r0, r2, r3
+ ldr r2, [sp, #0x5c]
+ str r2, [sp, #0x20]
+ add r2, r0, #0
+ and r2, r3
+ mvn r6, r0
+ and r6, r4
+ orr r2, r6
+ ldr r6, [sp, #0x20]
+ add r6, r6, r2
+ ldr r2, _0221AFA8 ; =0x02B96AFF
+ sub r2, r6, r2
+ add r1, r1, r2
+ lsl r2, r1, #0x16
+ lsr r1, r1, #0xa
+ orr r2, r1
+ add r6, r2, r0
+ ldr r1, [sp, #0x60]
+ str r1, [sp, #0x24]
+ add r1, r6, #0
+ and r1, r0
+ mvn r2, r6
+ and r2, r3
+ orr r1, r2
+ ldr r2, [sp, #0x24]
+ add r2, r2, r1
+ ldr r1, _0221AFAC ; =0x698098D8
+ add r1, r2, r1
+ add r1, r4, r1
+ lsl r2, r1, #7
+ lsr r1, r1, #0x19
+ orr r2, r1
+ add r2, r2, r6
+ ldr r1, [sp, #0x64]
+ str r1, [sp, #0x28]
+ add r1, r2, #0
+ and r1, r6
+ mvn r4, r2
+ and r4, r0
+ orr r1, r4
+ ldr r4, [sp, #0x28]
+ add r4, r4, r1
+ ldr r1, _0221AFB0 ; =0x74BB0851
+ sub r1, r4, r1
+ add r1, r3, r1
+ lsl r3, r1, #0xc
+ lsr r1, r1, #0x14
+ orr r3, r1
+ add r1, r3, r2
+ ldr r3, [sp, #0x68]
+ str r3, [sp, #0x2c]
+ add r3, r1, #0
+ and r3, r2
+ mvn r4, r1
+ and r4, r6
+ orr r3, r4
+ ldr r4, [sp, #0x2c]
+ add r4, r4, r3
+ ldr r3, _0221AFB4 ; =0x0000A44F
+ sub r3, r4, r3
+ add r0, r0, r3
+ lsl r3, r0, #0x11
+ lsr r0, r0, #0xf
+ orr r3, r0
+ add r4, r3, r1
+ ldr r0, [sp, #0x6c]
+ str r0, [sp, #0x30]
+ add r0, r4, #0
+ and r0, r1
+ mvn r3, r4
+ and r3, r2
+ orr r0, r3
+ ldr r3, [sp, #0x30]
+ add r3, r3, r0
+ ldr r0, _0221AFB8 ; =0x76A32842
+ sub r0, r3, r0
+ add r0, r6, r0
+ lsl r3, r0, #0x16
+ lsr r0, r0, #0xa
+ orr r3, r0
+ add r3, r3, r4
+ ldr r0, [sp, #0x70]
+ str r0, [sp, #0x34]
+ add r0, r3, #0
+ and r0, r4
+ mvn r6, r3
+ and r6, r1
+ orr r0, r6
+ ldr r6, [sp, #0x34]
+ add r6, r6, r0
+ ldr r0, _0221AFBC ; =0x6B901122
+ add r0, r6, r0
+ add r0, r2, r0
+ lsl r2, r0, #7
+ lsr r0, r0, #0x19
+ orr r2, r0
+ add r0, r2, r3
+ ldr r2, [sp, #0x74]
+ str r2, [sp, #0x38]
+ add r2, r0, #0
+ and r2, r3
+ mvn r6, r0
+ and r6, r4
+ orr r2, r6
+ ldr r6, [sp, #0x38]
+ add r6, r6, r2
+ ldr r2, _0221AFC0 ; =0x02678E6D
+ sub r2, r6, r2
+ add r1, r1, r2
+ lsl r2, r1, #0xc
+ lsr r1, r1, #0x14
+ orr r2, r1
+ add r6, r2, r0
+ mvn r2, r6
+ ldr r7, [sp, #0x78]
+ add r1, r6, #0
+ and r1, r0
+ and r2, r3
+ orr r1, r2
+ add r2, r7, r1
+ ldr r1, _0221AFC4 ; =0x5986BC72
+ sub r1, r2, r1
+ add r1, r4, r1
+ lsl r2, r1, #0x11
+ lsr r1, r1, #0xf
+ orr r2, r1
+ add r2, r2, r6
+ mvn r4, r2
+ ldr r1, [sp, #0x7c]
+ str r1, [sp, #0x3c]
+ add r1, r2, #0
+ and r1, r6
+ and r4, r0
+ orr r1, r4
+ ldr r4, [sp, #0x3c]
+ add r4, r4, r1
+ ldr r1, _0221AFC8 ; =0x49B40821
+ add r1, r4, r1
+ add r1, r3, r1
+ lsl r3, r1, #0x16
+ lsr r1, r1, #0xa
+ orr r3, r1
+ add r1, r3, r2
+ add r3, r1, #0
+ and r3, r6
+ add r4, r2, #0
+ bic r4, r6
+ orr r3, r4
+ ldr r4, [sp, #8]
+ add r4, r4, r3
+ ldr r3, _0221AFCC ; =0x09E1DA9E
+ sub r3, r4, r3
+ add r0, r0, r3
+ lsl r3, r0, #5
+ lsr r0, r0, #0x1b
+ orr r3, r0
+ add r4, r3, r1
+ add r0, r4, #0
+ and r0, r2
+ add r3, r1, #0
+ bic r3, r2
+ orr r0, r3
+ ldr r3, [sp, #0x1c]
+ add r3, r3, r0
+ ldr r0, _0221AFD0 ; =0x3FBF4CC0
+ sub r0, r3, r0
+ add r0, r6, r0
+ lsl r3, r0, #9
+ lsr r0, r0, #0x17
+ orr r3, r0
+ add r3, r3, r4
+ add r0, r3, #0
+ and r0, r1
+ add r6, r4, #0
+ bic r6, r1
+ orr r0, r6
+ ldr r6, [sp, #0x30]
+ add r6, r6, r0
+ ldr r0, _0221AFD4 ; =0x265E5A51
+ add r0, r6, r0
+ add r0, r2, r0
+ lsl r2, r0, #0xe
+ lsr r0, r0, #0x12
+ orr r2, r0
+ add r0, r2, r3
+ add r2, r0, #0
+ and r2, r4
+ add r6, r3, #0
+ bic r6, r4
+ orr r2, r6
+ ldr r6, [sp, #4]
+ add r6, r6, r2
+ ldr r2, _0221AFD8 ; =0x16493856
+ sub r2, r6, r2
+ add r1, r1, r2
+ lsl r2, r1, #0x14
+ lsr r1, r1, #0xc
+ orr r2, r1
+ add r6, r2, r0
+ add r1, r6, #0
+ and r1, r3
+ add r2, r0, #0
+ bic r2, r3
+ orr r1, r2
+ ldr r2, [sp, #0x18]
+ add r2, r2, r1
+ ldr r1, _0221AFDC ; =0x29D0EFA3
+ sub r1, r2, r1
+ add r1, r4, r1
+ lsl r2, r1, #5
+ lsr r1, r1, #0x1b
+ orr r2, r1
+ add r2, r2, r6
+ add r1, r2, #0
+ and r1, r0
+ add r4, r6, #0
+ bic r4, r0
+ orr r1, r4
+ ldr r4, [sp, #0x2c]
+ add r4, r4, r1
+ ldr r1, _0221AFE0 ; =0x02441453
+ add r1, r4, r1
+ add r1, r3, r1
+ lsl r3, r1, #9
+ lsr r1, r1, #0x17
+ orr r3, r1
+ add r1, r3, r2
+ add r3, r1, #0
+ and r3, r6
+ add r4, r2, #0
+ bic r4, r6
+ orr r3, r4
+ ldr r4, [sp, #0x3c]
+ add r4, r4, r3
+ ldr r3, _0221AFE4 ; =0x275E197F
+ sub r3, r4, r3
+ add r0, r0, r3
+ lsl r3, r0, #0xe
+ lsr r0, r0, #0x12
+ orr r3, r0
+ add r4, r3, r1
+ add r0, r4, #0
+ and r0, r2
+ add r3, r1, #0
+ bic r3, r2
+ orr r0, r3
+ ldr r3, [sp, #0x14]
+ add r3, r3, r0
+ ldr r0, _0221AFE8 ; =0x182C0438
+ sub r0, r3, r0
+ add r0, r6, r0
+ lsl r3, r0, #0x14
+ lsr r0, r0, #0xc
+ orr r3, r0
+ add r3, r3, r4
+ add r0, r3, #0
+ and r0, r1
+ add r6, r4, #0
+ bic r6, r1
+ orr r0, r6
+ ldr r6, [sp, #0x28]
+ add r6, r6, r0
+ ldr r0, _0221AFEC ; =0x21E1CDE6
+ add r0, r6, r0
+ add r0, r2, r0
+ lsl r2, r0, #5
+ lsr r0, r0, #0x1b
+ orr r2, r0
+ add r0, r2, r3
+ add r6, r0, #0
+ and r6, r4
+ add r2, r3, #0
+ bic r2, r4
+ orr r6, r2
+ add r6, r7, r6
+ ldr r2, _0221AFF0 ; =0x3CC8F82A
+ sub r2, r6, r2
+ add r1, r1, r2
+ lsl r2, r1, #9
+ lsr r1, r1, #0x17
+ orr r2, r1
+ add r6, r2, r0
+ add r1, r6, #0
+ and r1, r3
+ add r2, r0, #0
+ bic r2, r3
+ orr r1, r2
+ ldr r2, [sp, #0x10]
+ add r2, r2, r1
+ ldr r1, _0221AFF4 ; =0x0B2AF279
+ sub r1, r2, r1
+ add r1, r4, r1
+ lsl r2, r1, #0xe
+ lsr r1, r1, #0x12
+ orr r2, r1
+ add r2, r2, r6
+ add r1, r2, #0
+ and r1, r0
+ add r4, r6, #0
+ bic r4, r0
+ orr r1, r4
+ ldr r4, [sp, #0x24]
+ add r4, r4, r1
+ ldr r1, _0221AFF8 ; =0x455A14ED
+ add r1, r4, r1
+ add r1, r3, r1
+ lsl r3, r1, #0x14
+ lsr r1, r1, #0xc
+ orr r3, r1
+ add r1, r3, r2
+ add r3, r1, #0
+ and r3, r6
+ add r4, r2, #0
+ bic r4, r6
+ orr r3, r4
+ ldr r4, [sp, #0x38]
+ add r4, r4, r3
+ ldr r3, _0221AFFC ; =0x561C16FB
+ sub r3, r4, r3
+ add r0, r0, r3
+ lsl r3, r0, #5
+ lsr r0, r0, #0x1b
+ orr r3, r0
+ add r4, r3, r1
+ add r0, r4, #0
+ and r0, r2
+ add r3, r1, #0
+ bic r3, r2
+ orr r0, r3
+ ldr r3, [sp, #0xc]
+ add r3, r3, r0
+ ldr r0, _0221B000 ; =0x03105C08
+ sub r0, r3, r0
+ add r0, r6, r0
+ lsl r3, r0, #9
+ lsr r0, r0, #0x17
+ orr r3, r0
+ add r3, r3, r4
+ add r0, r3, #0
+ and r0, r1
+ add r6, r4, #0
+ bic r6, r1
+ orr r0, r6
+ ldr r6, [sp, #0x20]
+ add r6, r6, r0
+ ldr r0, _0221B004 ; =0x676F02D9
+ add r0, r6, r0
+ add r0, r2, r0
+ lsl r2, r0, #0xe
+ lsr r0, r0, #0x12
+ orr r2, r0
+ add r0, r2, r3
+ add r2, r0, #0
+ and r2, r4
+ add r6, r3, #0
+ bic r6, r4
+ orr r2, r6
+ ldr r6, [sp, #0x34]
+ add r6, r6, r2
+ ldr r2, _0221B008 ; =0x72D5B376
+ sub r2, r6, r2
+ add r1, r1, r2
+ lsl r2, r1, #0x14
+ lsr r1, r1, #0xc
+ orr r2, r1
+ add r6, r2, r0
+ add r2, r6, #0
+ eor r2, r0
+ add r1, r3, #0
+ eor r1, r2
+ ldr r2, [sp, #0x18]
+ add r2, r2, r1
+ ldr r1, _0221B00C ; =0x0005C6BE
+ sub r1, r2, r1
+ add r1, r4, r1
+ lsl r2, r1, #4
+ lsr r1, r1, #0x1c
+ orr r2, r1
+ add r2, r2, r6
+ add r4, r2, #0
+ eor r4, r6
+ add r1, r0, #0
+ eor r1, r4
+ ldr r4, [sp, #0x24]
+ add r4, r4, r1
+ ldr r1, _0221B010 ; =0x788E097F
+ sub r1, r4, r1
+ add r1, r3, r1
+ lsl r3, r1, #0xb
+ lsr r1, r1, #0x15
+ orr r3, r1
+ add r1, r3, r2
+ add r4, r1, #0
+ eor r4, r2
+ add r3, r6, #0
+ eor r3, r4
+ ldr r4, [sp, #0x30]
+ add r4, r4, r3
+ ldr r3, _0221B014 ; =0x6D9D6122
+ b _0221B018
+ .align 2, 0
+_0221AF8C: .word 0x28955B88
+_0221AF90: .word 0x173848AA
+_0221AF94: .word 0x242070DB
+_0221AF98: .word 0x3E423112
+_0221AF9C: .word 0x0A83F051
+_0221AFA0: .word 0x4787C62A
+_0221AFA4: .word 0x57CFB9ED
+_0221AFA8: .word 0x02B96AFF
+_0221AFAC: .word 0x698098D8
+_0221AFB0: .word 0x74BB0851
+_0221AFB4: .word 0x0000A44F
+_0221AFB8: .word 0x76A32842
+_0221AFBC: .word 0x6B901122
+_0221AFC0: .word 0x02678E6D
+_0221AFC4: .word 0x5986BC72
+_0221AFC8: .word 0x49B40821
+_0221AFCC: .word 0x09E1DA9E
+_0221AFD0: .word 0x3FBF4CC0
+_0221AFD4: .word 0x265E5A51
+_0221AFD8: .word 0x16493856
+_0221AFDC: .word 0x29D0EFA3
+_0221AFE0: .word 0x02441453
+_0221AFE4: .word 0x275E197F
+_0221AFE8: .word 0x182C0438
+_0221AFEC: .word 0x21E1CDE6
+_0221AFF0: .word 0x3CC8F82A
+_0221AFF4: .word 0x0B2AF279
+_0221AFF8: .word 0x455A14ED
+_0221AFFC: .word 0x561C16FB
+_0221B000: .word 0x03105C08
+_0221B004: .word 0x676F02D9
+_0221B008: .word 0x72D5B376
+_0221B00C: .word 0x0005C6BE
+_0221B010: .word 0x788E097F
+_0221B014: .word 0x6D9D6122
+_0221B018:
+ add r3, r4, r3
+ add r0, r0, r3
+ lsl r3, r0, #0x10
+ lsr r0, r0, #0x10
+ orr r3, r0
+ add r4, r3, r1
+ add r0, r4, #0
+ eor r0, r1
+ add r3, r2, #0
+ eor r3, r0
+ add r3, r7, r3
+ ldr r0, _0221B35C ; =0x021AC7F4
+ sub r0, r3, r0
+ add r0, r6, r0
+ lsl r3, r0, #0x17
+ lsr r0, r0, #9
+ orr r3, r0
+ add r3, r3, r4
+ add r6, r3, #0
+ eor r6, r4
+ add r0, r1, #0
+ eor r0, r6
+ ldr r6, [sp, #8]
+ add r6, r6, r0
+ ldr r0, _0221B360 ; =0x5B4115BC
+ sub r0, r6, r0
+ add r0, r2, r0
+ lsl r2, r0, #4
+ lsr r0, r0, #0x1c
+ orr r2, r0
+ add r0, r2, r3
+ add r6, r0, #0
+ eor r6, r3
+ add r2, r4, #0
+ eor r2, r6
+ ldr r6, [sp, #0x14]
+ add r6, r6, r2
+ ldr r2, _0221B364 ; =0x4BDECFA9
+ add r2, r6, r2
+ add r1, r1, r2
+ lsl r2, r1, #0xb
+ lsr r1, r1, #0x15
+ orr r2, r1
+ add r6, r2, r0
+ add r2, r6, #0
+ eor r2, r0
+ add r1, r3, #0
+ eor r1, r2
+ ldr r2, [sp, #0x20]
+ add r2, r2, r1
+ ldr r1, _0221B368 ; =0x0944B4A0
+ sub r1, r2, r1
+ add r1, r4, r1
+ lsl r2, r1, #0x10
+ lsr r1, r1, #0x10
+ orr r2, r1
+ add r2, r2, r6
+ add r4, r2, #0
+ eor r4, r6
+ add r1, r0, #0
+ eor r1, r4
+ ldr r4, [sp, #0x2c]
+ add r4, r4, r1
+ ldr r1, _0221B36C ; =0x41404390
+ sub r1, r4, r1
+ add r1, r3, r1
+ lsl r3, r1, #0x17
+ lsr r1, r1, #9
+ orr r3, r1
+ add r1, r3, r2
+ add r4, r1, #0
+ eor r4, r2
+ add r3, r6, #0
+ eor r3, r4
+ ldr r4, [sp, #0x38]
+ add r4, r4, r3
+ ldr r3, _0221B370 ; =0x289B7EC6
+ add r3, r4, r3
+ add r0, r0, r3
+ lsl r3, r0, #4
+ lsr r0, r0, #0x1c
+ orr r3, r0
+ add r4, r3, r1
+ add r3, r4, #0
+ eor r3, r1
+ add r0, r2, #0
+ eor r0, r3
+ ldr r3, [sp, #4]
+ add r3, r3, r0
+ ldr r0, _0221B374 ; =0x155ED806
+ sub r0, r3, r0
+ add r0, r6, r0
+ lsl r3, r0, #0xb
+ lsr r0, r0, #0x15
+ orr r3, r0
+ add r3, r3, r4
+ add r6, r3, #0
+ eor r6, r4
+ add r0, r1, #0
+ eor r0, r6
+ ldr r6, [sp, #0x10]
+ add r6, r6, r0
+ ldr r0, _0221B378 ; =0x2B10CF7B
+ sub r0, r6, r0
+ add r0, r2, r0
+ lsl r2, r0, #0x10
+ lsr r0, r0, #0x10
+ orr r2, r0
+ add r0, r2, r3
+ add r6, r0, #0
+ eor r6, r3
+ add r2, r4, #0
+ eor r2, r6
+ ldr r6, [sp, #0x1c]
+ add r6, r6, r2
+ ldr r2, _0221B37C ; =0x04881D05
+ add r2, r6, r2
+ add r1, r1, r2
+ lsl r2, r1, #0x17
+ lsr r1, r1, #9
+ orr r2, r1
+ add r6, r2, r0
+ add r2, r6, #0
+ eor r2, r0
+ add r1, r3, #0
+ eor r1, r2
+ ldr r2, [sp, #0x28]
+ add r2, r2, r1
+ ldr r1, _0221B380 ; =0x262B2FC7
+ sub r1, r2, r1
+ add r1, r4, r1
+ lsl r2, r1, #4
+ lsr r1, r1, #0x1c
+ orr r2, r1
+ add r2, r2, r6
+ add r4, r2, #0
+ eor r4, r6
+ add r1, r0, #0
+ eor r1, r4
+ ldr r4, [sp, #0x34]
+ add r4, r4, r1
+ ldr r1, _0221B384 ; =0x1924661B
+ sub r1, r4, r1
+ add r1, r3, r1
+ lsl r3, r1, #0xb
+ lsr r1, r1, #0x15
+ orr r3, r1
+ add r1, r3, r2
+ add r4, r1, #0
+ eor r4, r2
+ add r3, r6, #0
+ eor r3, r4
+ ldr r4, [sp, #0x3c]
+ add r4, r4, r3
+ ldr r3, _0221B388 ; =0x1FA27CF8
+ add r3, r4, r3
+ add r0, r0, r3
+ lsl r3, r0, #0x10
+ lsr r0, r0, #0x10
+ orr r3, r0
+ add r4, r3, r1
+ add r3, r4, #0
+ eor r3, r1
+ add r0, r2, #0
+ eor r0, r3
+ ldr r3, [sp, #0xc]
+ add r3, r3, r0
+ ldr r0, _0221B38C ; =0x3B53A99B
+ sub r0, r3, r0
+ add r0, r6, r0
+ lsl r3, r0, #0x17
+ lsr r0, r0, #9
+ orr r3, r0
+ add r3, r3, r4
+ mvn r6, r1
+ add r0, r3, #0
+ orr r0, r6
+ add r6, r4, #0
+ eor r6, r0
+ ldr r0, [sp, #4]
+ add r6, r0, r6
+ ldr r0, _0221B390 ; =0x0BD6DDBC
+ sub r0, r6, r0
+ add r0, r2, r0
+ lsl r2, r0, #6
+ lsr r0, r0, #0x1a
+ orr r2, r0
+ add r0, r2, r3
+ mvn r6, r4
+ add r2, r0, #0
+ orr r2, r6
+ add r6, r3, #0
+ eor r6, r2
+ ldr r2, [sp, #0x20]
+ add r6, r2, r6
+ ldr r2, _0221B394 ; =0x432AFF97
+ add r2, r6, r2
+ add r1, r1, r2
+ lsl r2, r1, #0xa
+ lsr r1, r1, #0x16
+ orr r2, r1
+ add r1, r2, r0
+ mvn r2, r3
+ add r6, r1, #0
+ orr r6, r2
+ add r2, r0, #0
+ eor r2, r6
+ add r6, r7, r2
+ ldr r2, _0221B398 ; =0x546BDC59
+ sub r2, r6, r2
+ add r2, r4, r2
+ lsl r4, r2, #0xf
+ lsr r2, r2, #0x11
+ orr r4, r2
+ add r2, r4, r1
+ mvn r6, r0
+ add r4, r2, #0
+ orr r4, r6
+ add r6, r1, #0
+ eor r6, r4
+ ldr r4, [sp, #0x18]
+ add r6, r4, r6
+ ldr r4, _0221B39C ; =0x036C5FC7
+ sub r4, r6, r4
+ add r3, r3, r4
+ lsl r4, r3, #0x15
+ lsr r3, r3, #0xb
+ orr r4, r3
+ add r4, r4, r2
+ mvn r6, r1
+ add r3, r4, #0
+ orr r3, r6
+ add r6, r2, #0
+ eor r6, r3
+ ldr r3, [sp, #0x34]
+ add r6, r3, r6
+ ldr r3, _0221B3A0 ; =0x655B59C3
+ add r3, r6, r3
+ add r0, r0, r3
+ lsl r3, r0, #6
+ lsr r0, r0, #0x1a
+ orr r3, r0
+ add r3, r3, r4
+ mvn r6, r2
+ add r0, r3, #0
+ orr r0, r6
+ add r6, r4, #0
+ eor r6, r0
+ ldr r0, [sp, #0x10]
+ add r6, r0, r6
+ ldr r0, _0221B3A4 ; =0x70F3336E
+ sub r0, r6, r0
+ add r0, r1, r0
+ lsl r1, r0, #0xa
+ lsr r0, r0, #0x16
+ orr r1, r0
+ add r0, r1, r3
+ mvn r6, r4
+ add r1, r0, #0
+ orr r1, r6
+ add r6, r3, #0
+ eor r6, r1
+ ldr r1, [sp, #0x2c]
+ add r6, r1, r6
+ ldr r1, _0221B3A8 ; =0x00100B83
+ sub r1, r6, r1
+ add r1, r2, r1
+ lsl r2, r1, #0xf
+ lsr r1, r1, #0x11
+ orr r2, r1
+ add r6, r2, r0
+ mvn r2, r3
+ add r1, r6, #0
+ orr r1, r2
+ add r2, r0, #0
+ eor r2, r1
+ ldr r1, [sp, #8]
+ add r2, r1, r2
+ ldr r1, _0221B3AC ; =0x7A7BA22F
+ sub r1, r2, r1
+ add r1, r4, r1
+ lsl r2, r1, #0x15
+ lsr r1, r1, #0xb
+ orr r2, r1
+ add r2, r2, r6
+ mvn r4, r0
+ add r1, r2, #0
+ orr r1, r4
+ add r4, r6, #0
+ eor r4, r1
+ ldr r1, [sp, #0x24]
+ add r4, r1, r4
+ ldr r1, _0221B3B0 ; =0x6FA87E4F
+ add r1, r4, r1
+ add r1, r3, r1
+ lsl r3, r1, #6
+ lsr r1, r1, #0x1a
+ orr r3, r1
+ add r1, r3, r2
+ mvn r4, r6
+ add r3, r1, #0
+ orr r3, r4
+ add r4, r2, #0
+ eor r4, r3
+ ldr r3, [sp, #0x3c]
+ add r4, r3, r4
+ ldr r3, _0221B3B4 ; =0x01D31920
+ sub r3, r4, r3
+ add r0, r0, r3
+ lsl r3, r0, #0xa
+ lsr r0, r0, #0x16
+ orr r3, r0
+ add r4, r3, r1
+ mvn r3, r2
+ add r0, r4, #0
+ orr r0, r3
+ add r3, r1, #0
+ eor r3, r0
+ ldr r0, [sp, #0x1c]
+ add r3, r0, r3
+ ldr r0, _0221B3B8 ; =0x5CFEBCEC
+ sub r0, r3, r0
+ add r0, r6, r0
+ lsl r3, r0, #0xf
+ lsr r0, r0, #0x11
+ orr r3, r0
+ add r3, r3, r4
+ mvn r6, r1
+ add r0, r3, #0
+ orr r0, r6
+ add r6, r4, #0
+ eor r6, r0
+ ldr r0, [sp, #0x38]
+ add r6, r0, r6
+ ldr r0, _0221B3BC ; =0x4E0811A1
+ add r0, r6, r0
+ add r0, r2, r0
+ lsl r2, r0, #0x15
+ lsr r0, r0, #0xb
+ orr r2, r0
+ add r0, r2, r3
+ mvn r6, r4
+ add r2, r0, #0
+ orr r2, r6
+ add r6, r3, #0
+ eor r6, r2
+ ldr r2, [sp, #0x14]
+ add r6, r2, r6
+ ldr r2, _0221B3C0 ; =0x08AC817E
+ sub r2, r6, r2
+ add r1, r1, r2
+ lsl r2, r1, #6
+ lsr r1, r1, #0x1a
+ orr r2, r1
+ add r6, r2, r0
+ mvn r2, r3
+ add r1, r6, #0
+ orr r1, r2
+ add r2, r0, #0
+ eor r2, r1
+ ldr r1, [sp, #0x30]
+ add r2, r1, r2
+ ldr r1, _0221B3C4 ; =0x42C50DCB
+ sub r1, r2, r1
+ add r1, r4, r1
+ lsl r2, r1, #0xa
+ lsr r1, r1, #0x16
+ orr r2, r1
+ add r2, r2, r6
+ mvn r4, r0
+ add r1, r2, #0
+ orr r1, r4
+ add r4, r6, #0
+ eor r4, r1
+ ldr r1, [sp, #0xc]
+ add r4, r1, r4
+ ldr r1, _0221B3C8 ; =0x2AD7D2BB
+ add r1, r4, r1
+ add r1, r3, r1
+ lsl r3, r1, #0xf
+ lsr r1, r1, #0x11
+ orr r3, r1
+ add r1, r3, r2
+ mvn r4, r6
+ add r3, r1, #0
+ orr r3, r4
+ add r4, r2, #0
+ eor r4, r3
+ ldr r3, [sp, #0x28]
+ add r4, r3, r4
+ ldr r3, _0221B3CC ; =0x14792C6F
+ sub r3, r4, r3
+ add r0, r0, r3
+ lsl r3, r0, #0x15
+ lsr r0, r0, #0xb
+ orr r3, r0
+ add r0, r3, r1
+ ldr r3, [r5]
+ add r3, r3, r6
+ str r3, [r5]
+ ldr r3, [r5, #4]
+ add r0, r3, r0
+ str r0, [r5, #4]
+ ldr r0, [r5, #8]
+ add r0, r0, r1
+ str r0, [r5, #8]
+ ldr r0, [r5, #0xc]
+ add r0, r0, r2
+ str r0, [r5, #0xc]
+ add r0, sp, #0x40
+ mov r1, #0
+ mov r2, #0x40
+ bl MOD13_0221AAE0
+ add sp, #0x84
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221B35C: .word 0x021AC7F4
+_0221B360: .word 0x5B4115BC
+_0221B364: .word 0x4BDECFA9
+_0221B368: .word 0x0944B4A0
+_0221B36C: .word 0x41404390
+_0221B370: .word 0x289B7EC6
+_0221B374: .word 0x155ED806
+_0221B378: .word 0x2B10CF7B
+_0221B37C: .word 0x04881D05
+_0221B380: .word 0x262B2FC7
+_0221B384: .word 0x1924661B
+_0221B388: .word 0x1FA27CF8
+_0221B38C: .word 0x3B53A99B
+_0221B390: .word 0x0BD6DDBC
+_0221B394: .word 0x432AFF97
+_0221B398: .word 0x546BDC59
+_0221B39C: .word 0x036C5FC7
+_0221B3A0: .word 0x655B59C3
+_0221B3A4: .word 0x70F3336E
+_0221B3A8: .word 0x00100B83
+_0221B3AC: .word 0x7A7BA22F
+_0221B3B0: .word 0x6FA87E4F
+_0221B3B4: .word 0x01D31920
+_0221B3B8: .word 0x5CFEBCEC
+_0221B3BC: .word 0x4E0811A1
+_0221B3C0: .word 0x08AC817E
+_0221B3C4: .word 0x42C50DCB
+_0221B3C8: .word 0x2AD7D2BB
+_0221B3CC: .word 0x14792C6F
+
+ thumb_func_start MOD13_0221B3D0
+MOD13_0221B3D0: ; 0x0221B3D0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, sp, #0
+ add r1, #0x10
+ mov r2, #8
+ bl MOD13_0221AB44
+ ldr r0, [r4, #0x10]
+ lsr r1, r0, #3
+ mov r0, #0x3f
+ and r1, r0
+ cmp r1, #0x38
+ bhs _0221B3F4
+ mov r0, #0x38
+ sub r2, r0, r1
+ b _0221B3F8
+_0221B3F4:
+ mov r0, #0x78
+ sub r2, r0, r1
+_0221B3F8:
+ add r0, r4, #0
+ ldr r1, _0221B428 ; =0x0223F894
+ bl MOD13_0221B42C
+ add r0, r4, #0
+ add r1, sp, #0
+ mov r2, #8
+ bl MOD13_0221B42C
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x10
+ bl MOD13_0221AB44
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x58
+ bl MOD13_0221AAE0
+ add sp, #0xc
+ pop {r4, r5}
+ pop {r3}
+ bx r3
+ nop
+_0221B428: .word 0x0223F894
+
+ thumb_func_start MOD13_0221B42C
+MOD13_0221B42C: ; 0x0221B42C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r7, r1, #0
+ add r6, r2, #0
+ ldr r3, [r5, #0x10]
+ lsr r0, r3, #3
+ mov r1, #0x3f
+ and r0, r1
+ lsl r2, r6, #3
+ add r1, r3, r2
+ str r1, [r5, #0x10]
+ ldr r1, [r5, #0x10]
+ cmp r1, r2
+ bhs _0221B450
+ ldr r1, [r5, #0x14]
+ add r1, r1, #1
+ str r1, [r5, #0x14]
+_0221B450:
+ ldr r2, [r5, #0x14]
+ lsr r1, r6, #0x1d
+ add r1, r2, r1
+ str r1, [r5, #0x14]
+ mov r1, #0x40
+ sub r4, r1, r0
+ cmp r6, r4
+ blo _0221B496
+ add r1, r5, #0
+ add r1, #0x18
+ add r0, r1, r0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD13_0221AAF8
+ add r0, r5, #0
+ add r1, r5, #0
+ add r1, #0x18
+ bl MOD13_0221AB74
+ add r0, r4, #0
+ add r0, #0x3f
+ cmp r0, r6
+ bhs _0221B492
+_0221B480:
+ add r0, r5, #0
+ add r1, r7, r4
+ bl MOD13_0221AB74
+ add r4, #0x40
+ add r0, r4, #0
+ add r0, #0x3f
+ cmp r0, r6
+ blo _0221B480
+_0221B492:
+ mov r0, #0
+ b _0221B498
+_0221B496:
+ mov r4, #0
+_0221B498:
+ add r5, #0x18
+ add r0, r5, r0
+ add r1, r7, r4
+ sub r2, r6, r4
+ bl MOD13_0221AAF8
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+
+ thumb_func_start MOD13_0221B4AC
+MOD13_0221B4AC: ; 0x0221B4AC
+ mov r1, #0
+ str r1, [r0, #0x14]
+ ldr r1, [r0, #0x14]
+ str r1, [r0, #0x10]
+ ldr r1, _0221B4C8 ; =0x67452301
+ str r1, [r0]
+ ldr r1, _0221B4CC ; =0xEFCDAB89
+ str r1, [r0, #4]
+ ldr r1, _0221B4D0 ; =0x98BADCFE
+ str r1, [r0, #8]
+ ldr r1, _0221B4D4 ; =0x10325476
+ str r1, [r0, #0xc]
+ bx lr
+ nop
+_0221B4C8: .word 0x67452301
+_0221B4CC: .word 0xEFCDAB89
+_0221B4D0: .word 0x98BADCFE
+_0221B4D4: .word 0x10325476
+
+ thumb_func_start MOD13_0221B4D8
+MOD13_0221B4D8: ; 0x0221B4D8
+ push {r4, r5, r6, r7}
+ sub sp, #0x60
+ add r4, r1, #0
+ add r1, r2, #0
+ str r3, [sp]
+ ldr r2, [r0]
+ str r2, [sp, #4]
+ ldrb r5, [r1, #3]
+ ldrb r2, [r1, #2]
+ lsl r3, r2, #8
+ ldrb r2, [r1]
+ lsl r2, r2, #0x18
+ ldrb r6, [r1, #1]
+ lsl r6, r6, #0x10
+ eor r2, r6
+ eor r3, r2
+ eor r5, r3
+ ldr r2, [sp, #4]
+ eor r2, r5
+ str r2, [sp, #4]
+ ldr r2, [r0, #4]
+ str r2, [sp, #8]
+ ldrb r5, [r1, #7]
+ ldrb r2, [r1, #6]
+ lsl r3, r2, #8
+ ldrb r2, [r1, #4]
+ lsl r2, r2, #0x18
+ ldrb r6, [r1, #5]
+ lsl r6, r6, #0x10
+ eor r2, r6
+ eor r3, r2
+ eor r5, r3
+ ldr r2, [sp, #8]
+ eor r2, r5
+ str r2, [sp, #8]
+ ldr r2, [r0, #8]
+ str r2, [sp, #0x2c]
+ ldrb r5, [r1, #0xb]
+ ldrb r2, [r1, #0xa]
+ lsl r3, r2, #8
+ ldrb r2, [r1, #8]
+ lsl r2, r2, #0x18
+ ldrb r6, [r1, #9]
+ lsl r6, r6, #0x10
+ eor r2, r6
+ eor r3, r2
+ eor r5, r3
+ ldr r2, [sp, #0x2c]
+ eor r2, r5
+ str r2, [sp, #0x2c]
+ ldr r6, [r0, #0xc]
+ ldrb r5, [r1, #0xf]
+ ldrb r2, [r1, #0xe]
+ lsl r3, r2, #8
+ ldrb r2, [r1, #0xc]
+ lsl r2, r2, #0x18
+ ldrb r1, [r1, #0xd]
+ lsl r1, r1, #0x10
+ eor r2, r1
+ eor r3, r2
+ eor r5, r3
+ eor r6, r5
+ asr r1, r4, #1
+ str r1, [sp, #0xc]
+ mov r2, #0xff
+_0221B55A:
+ ldr r1, [r0, #0x10]
+ str r1, [sp, #0x10]
+ ldr r1, [sp, #8]
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221B8E0 ; =0x0223C86C
+ ldr r5, [r1, r3]
+ ldr r1, [sp, #0x2c]
+ lsr r1, r1, #8
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221B8E4 ; =0x0223C46C
+ ldr r4, [r1, r3]
+ ldr r1, [sp, #4]
+ lsr r1, r1, #0x18
+ lsl r3, r1, #2
+ ldr r1, _0221B8E8 ; =0x0223E46C
+ ldr r7, [r1, r3]
+ lsr r1, r6, #0x10
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221B8EC ; =0x0223E86C
+ ldr r1, [r1, r3]
+ eor r7, r1
+ eor r4, r7
+ eor r5, r4
+ ldr r1, [sp, #0x10]
+ eor r1, r5
+ str r1, [sp, #0x10]
+ ldr r1, [r0, #0x14]
+ str r1, [sp, #0x14]
+ ldr r1, [sp, #0x2c]
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221B8E0 ; =0x0223C86C
+ ldr r5, [r1, r3]
+ lsr r1, r6, #8
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221B8E4 ; =0x0223C46C
+ ldr r4, [r1, r3]
+ ldr r1, [sp, #8]
+ lsr r1, r1, #0x18
+ lsl r3, r1, #2
+ ldr r1, _0221B8E8 ; =0x0223E46C
+ ldr r7, [r1, r3]
+ ldr r1, [sp, #4]
+ lsr r1, r1, #0x10
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221B8EC ; =0x0223E86C
+ ldr r1, [r1, r3]
+ eor r7, r1
+ eor r4, r7
+ eor r5, r4
+ ldr r1, [sp, #0x14]
+ eor r1, r5
+ str r1, [sp, #0x14]
+ ldr r5, [r0, #0x18]
+ add r1, r6, #0
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221B8E0 ; =0x0223C86C
+ ldr r4, [r1, r3]
+ ldr r1, [sp, #4]
+ lsr r1, r1, #8
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221B8E4 ; =0x0223C46C
+ ldr r1, [r1, r3]
+ str r1, [sp, #0x18]
+ ldr r1, [sp, #0x2c]
+ lsr r1, r1, #0x18
+ lsl r3, r1, #2
+ ldr r1, _0221B8E8 ; =0x0223E46C
+ ldr r7, [r1, r3]
+ ldr r1, [sp, #8]
+ lsr r1, r1, #0x10
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221B8EC ; =0x0223E86C
+ ldr r1, [r1, r3]
+ eor r7, r1
+ ldr r1, [sp, #0x18]
+ eor r1, r7
+ str r1, [sp, #0x18]
+ eor r4, r1
+ eor r5, r4
+ ldr r1, [r0, #0x1c]
+ ldr r3, [sp, #4]
+ and r3, r2
+ str r3, [sp, #4]
+ lsl r4, r3, #2
+ ldr r3, _0221B8E0 ; =0x0223C86C
+ ldr r3, [r3, r4]
+ str r3, [sp, #0x30]
+ ldr r3, [sp, #8]
+ lsr r3, r3, #8
+ and r3, r2
+ lsl r4, r3, #2
+ ldr r3, _0221B8E4 ; =0x0223C46C
+ ldr r7, [r3, r4]
+ lsr r3, r6, #0x18
+ lsl r4, r3, #2
+ ldr r3, _0221B8E8 ; =0x0223E46C
+ ldr r6, [r3, r4]
+ ldr r3, [sp, #0x2c]
+ lsr r3, r3, #0x10
+ and r3, r2
+ lsl r4, r3, #2
+ ldr r3, _0221B8EC ; =0x0223E86C
+ ldr r3, [r3, r4]
+ eor r6, r3
+ eor r7, r6
+ ldr r3, [sp, #0x30]
+ eor r3, r7
+ str r3, [sp, #0x30]
+ eor r1, r3
+ add r0, #0x20
+ ldr r3, [sp, #0xc]
+ sub r3, r3, #1
+ str r3, [sp, #0xc]
+ cmp r3, #0
+ beq _0221B746
+ ldr r3, [r0]
+ str r3, [sp, #4]
+ ldr r3, [sp, #0x14]
+ and r3, r2
+ lsl r4, r3, #2
+ ldr r3, _0221B8E0 ; =0x0223C86C
+ ldr r6, [r3, r4]
+ lsr r3, r5, #8
+ and r3, r2
+ lsl r4, r3, #2
+ ldr r3, _0221B8E4 ; =0x0223C46C
+ ldr r3, [r3, r4]
+ str r3, [sp, #0x34]
+ ldr r3, [sp, #0x10]
+ lsr r3, r3, #0x18
+ lsl r4, r3, #2
+ ldr r3, _0221B8E8 ; =0x0223E46C
+ ldr r7, [r3, r4]
+ lsr r3, r1, #0x10
+ and r3, r2
+ lsl r4, r3, #2
+ ldr r3, _0221B8EC ; =0x0223E86C
+ ldr r3, [r3, r4]
+ eor r7, r3
+ ldr r3, [sp, #0x34]
+ eor r3, r7
+ str r3, [sp, #0x34]
+ eor r6, r3
+ ldr r3, [sp, #4]
+ eor r3, r6
+ str r3, [sp, #4]
+ ldr r3, [r0, #4]
+ str r3, [sp, #8]
+ add r3, r5, #0
+ and r3, r2
+ lsl r4, r3, #2
+ ldr r3, _0221B8E0 ; =0x0223C86C
+ ldr r6, [r3, r4]
+ lsr r3, r1, #8
+ and r3, r2
+ lsl r4, r3, #2
+ ldr r3, _0221B8E4 ; =0x0223C46C
+ ldr r3, [r3, r4]
+ str r3, [sp, #0x38]
+ ldr r3, [sp, #0x14]
+ lsr r3, r3, #0x18
+ lsl r4, r3, #2
+ ldr r3, _0221B8E8 ; =0x0223E46C
+ ldr r7, [r3, r4]
+ ldr r3, [sp, #0x10]
+ lsr r3, r3, #0x10
+ and r3, r2
+ lsl r4, r3, #2
+ ldr r3, _0221B8EC ; =0x0223E86C
+ ldr r3, [r3, r4]
+ eor r7, r3
+ ldr r3, [sp, #0x38]
+ eor r3, r7
+ str r3, [sp, #0x38]
+ eor r6, r3
+ ldr r3, [sp, #8]
+ eor r3, r6
+ str r3, [sp, #8]
+ ldr r3, [r0, #8]
+ str r3, [sp, #0x2c]
+ add r3, r1, #0
+ and r3, r2
+ lsl r4, r3, #2
+ ldr r3, _0221B8E0 ; =0x0223C86C
+ ldr r6, [r3, r4]
+ ldr r3, [sp, #0x10]
+ lsr r3, r3, #8
+ and r3, r2
+ lsl r4, r3, #2
+ ldr r3, _0221B8E4 ; =0x0223C46C
+ ldr r3, [r3, r4]
+ str r3, [sp, #0x1c]
+ lsr r3, r5, #0x18
+ lsl r4, r3, #2
+ ldr r3, _0221B8E8 ; =0x0223E46C
+ ldr r7, [r3, r4]
+ ldr r3, [sp, #0x14]
+ lsr r3, r3, #0x10
+ and r3, r2
+ lsl r4, r3, #2
+ ldr r3, _0221B8EC ; =0x0223E86C
+ ldr r3, [r3, r4]
+ eor r7, r3
+ ldr r3, [sp, #0x1c]
+ eor r3, r7
+ str r3, [sp, #0x1c]
+ eor r6, r3
+ ldr r3, [sp, #0x2c]
+ eor r3, r6
+ str r3, [sp, #0x2c]
+ ldr r6, [r0, #0xc]
+ ldr r3, [sp, #0x10]
+ and r3, r2
+ str r3, [sp, #0x10]
+ lsl r4, r3, #2
+ ldr r3, _0221B8E0 ; =0x0223C86C
+ ldr r7, [r3, r4]
+ ldr r3, [sp, #0x14]
+ lsr r3, r3, #8
+ and r3, r2
+ lsl r4, r3, #2
+ ldr r3, _0221B8E4 ; =0x0223C46C
+ ldr r3, [r3, r4]
+ lsr r1, r1, #0x18
+ lsl r4, r1, #2
+ ldr r1, _0221B8E8 ; =0x0223E46C
+ ldr r1, [r1, r4]
+ lsr r4, r5, #0x10
+ and r4, r2
+ lsl r5, r4, #2
+ ldr r4, _0221B8EC ; =0x0223E86C
+ ldr r4, [r4, r5]
+ eor r1, r4
+ eor r3, r1
+ eor r7, r3
+ eor r6, r7
+ b _0221B55A
+_0221B746:
+ ldr r3, [r0]
+ ldr r4, [sp, #0x14]
+ mov r2, #0xff
+ and r4, r2
+ lsl r4, r4, #2
+ ldr r2, _0221B8F0 ; =0x0223CC6C
+ ldr r6, [r2, r4]
+ str r6, [sp, #0x20]
+ mov r4, #0xff
+ and r6, r4
+ str r6, [sp, #0x20]
+ lsr r6, r5, #8
+ and r6, r4
+ lsl r4, r6, #2
+ ldr r7, [r2, r4]
+ ldr r4, _0221B8F4 ; =0x0000FF00
+ and r7, r4
+ ldr r4, [sp, #0x10]
+ lsr r4, r4, #0x18
+ lsl r4, r4, #2
+ ldr r4, [r2, r4]
+ str r4, [sp, #0x54]
+ ldr r6, _0221B8F8 ; =0xFF000000
+ and r4, r6
+ str r4, [sp, #0x54]
+ lsr r4, r1, #0x10
+ str r4, [sp, #0x40]
+ mov r6, #0xff
+ and r4, r6
+ str r4, [sp, #0x40]
+ lsl r4, r4, #2
+ ldr r4, [r2, r4]
+ str r4, [sp, #0x3c]
+ ldr r4, _0221B8FC ; =0x00FF0000
+ ldr r6, [sp, #0x3c]
+ and r6, r4
+ str r6, [sp, #0x3c]
+ ldr r4, [sp, #0x54]
+ eor r4, r6
+ str r4, [sp, #0x54]
+ eor r7, r4
+ ldr r4, [sp, #0x20]
+ eor r4, r7
+ str r4, [sp, #0x20]
+ eor r3, r4
+ lsr r6, r3, #0x18
+ ldr r4, [sp]
+ strb r6, [r4]
+ lsr r6, r3, #0x10
+ strb r6, [r4, #1]
+ lsr r6, r3, #8
+ strb r6, [r4, #2]
+ strb r3, [r4, #3]
+ ldr r3, [r0, #4]
+ add r6, r5, #0
+ mov r4, #0xff
+ and r6, r4
+ lsl r4, r6, #2
+ ldr r6, [r2, r4]
+ str r6, [sp, #0x24]
+ mov r4, #0xff
+ and r6, r4
+ str r6, [sp, #0x24]
+ lsr r6, r1, #8
+ and r6, r4
+ lsl r4, r6, #2
+ ldr r7, [r2, r4]
+ ldr r4, _0221B8F4 ; =0x0000FF00
+ and r7, r4
+ ldr r4, [sp, #0x14]
+ lsr r4, r4, #0x18
+ lsl r4, r4, #2
+ ldr r4, [r2, r4]
+ str r4, [sp, #0x58]
+ ldr r6, _0221B8F8 ; =0xFF000000
+ and r4, r6
+ str r4, [sp, #0x58]
+ ldr r4, [sp, #0x10]
+ lsr r4, r4, #0x10
+ str r4, [sp, #0x48]
+ mov r6, #0xff
+ and r4, r6
+ str r4, [sp, #0x48]
+ lsl r4, r4, #2
+ ldr r4, [r2, r4]
+ str r4, [sp, #0x44]
+ ldr r4, _0221B8FC ; =0x00FF0000
+ ldr r6, [sp, #0x44]
+ and r6, r4
+ str r6, [sp, #0x44]
+ ldr r4, [sp, #0x58]
+ eor r4, r6
+ str r4, [sp, #0x58]
+ eor r7, r4
+ ldr r4, [sp, #0x24]
+ eor r4, r7
+ str r4, [sp, #0x24]
+ eor r3, r4
+ lsr r6, r3, #0x18
+ ldr r4, [sp]
+ strb r6, [r4, #4]
+ lsr r6, r3, #0x10
+ strb r6, [r4, #5]
+ lsr r6, r3, #8
+ strb r6, [r4, #6]
+ strb r3, [r4, #7]
+ ldr r3, [r0, #8]
+ add r6, r1, #0
+ mov r4, #0xff
+ and r6, r4
+ lsl r4, r6, #2
+ ldr r6, [r2, r4]
+ str r6, [sp, #0x28]
+ mov r4, #0xff
+ and r6, r4
+ str r6, [sp, #0x28]
+ ldr r4, [sp, #0x10]
+ lsr r6, r4, #8
+ mov r4, #0xff
+ and r6, r4
+ lsl r4, r6, #2
+ ldr r7, [r2, r4]
+ ldr r4, _0221B8F4 ; =0x0000FF00
+ and r7, r4
+ lsr r4, r5, #0x18
+ lsl r4, r4, #2
+ ldr r4, [r2, r4]
+ str r4, [sp, #0x5c]
+ ldr r6, _0221B8F8 ; =0xFF000000
+ and r4, r6
+ str r4, [sp, #0x5c]
+ ldr r4, [sp, #0x14]
+ lsr r4, r4, #0x10
+ str r4, [sp, #0x50]
+ mov r6, #0xff
+ and r4, r6
+ str r4, [sp, #0x50]
+ lsl r4, r4, #2
+ ldr r4, [r2, r4]
+ str r4, [sp, #0x4c]
+ ldr r4, _0221B8FC ; =0x00FF0000
+ ldr r6, [sp, #0x4c]
+ and r6, r4
+ str r6, [sp, #0x4c]
+ ldr r4, [sp, #0x5c]
+ eor r4, r6
+ str r4, [sp, #0x5c]
+ eor r7, r4
+ ldr r4, [sp, #0x28]
+ eor r4, r7
+ str r4, [sp, #0x28]
+ eor r3, r4
+ lsr r6, r3, #0x18
+ ldr r4, [sp]
+ strb r6, [r4, #8]
+ lsr r6, r3, #0x10
+ strb r6, [r4, #9]
+ lsr r6, r3, #8
+ strb r6, [r4, #0xa]
+ strb r3, [r4, #0xb]
+ ldr r6, [r0, #0xc]
+ ldr r3, [sp, #0x10]
+ mov r0, #0xff
+ and r3, r0
+ str r3, [sp, #0x10]
+ lsl r0, r3, #2
+ ldr r4, [r2, r0]
+ mov r0, #0xff
+ and r4, r0
+ ldr r0, [sp, #0x14]
+ lsr r3, r0, #8
+ mov r0, #0xff
+ and r3, r0
+ lsl r0, r3, #2
+ ldr r3, [r2, r0]
+ ldr r0, _0221B8F4 ; =0x0000FF00
+ and r3, r0
+ lsr r0, r1, #0x18
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ ldr r1, _0221B8F8 ; =0xFF000000
+ and r0, r1
+ lsr r5, r5, #0x10
+ mov r1, #0xff
+ and r5, r1
+ lsl r1, r5, #2
+ ldr r2, [r2, r1]
+ ldr r1, _0221B8FC ; =0x00FF0000
+ and r2, r1
+ eor r0, r2
+ eor r3, r0
+ eor r4, r3
+ eor r6, r4
+ lsr r1, r6, #0x18
+ ldr r0, [sp]
+ strb r1, [r0, #0xc]
+ lsr r1, r6, #0x10
+ strb r1, [r0, #0xd]
+ lsr r1, r6, #8
+ strb r1, [r0, #0xe]
+ strb r6, [r0, #0xf]
+ add sp, #0x60
+ pop {r4, r5, r6, r7}
+ bx lr
+ nop
+_0221B8E0: .word 0x0223C86C
+_0221B8E4: .word 0x0223C46C
+_0221B8E8: .word 0x0223E46C
+_0221B8EC: .word 0x0223E86C
+_0221B8F0: .word 0x0223CC6C
+_0221B8F4: .word 0x0000FF00
+_0221B8F8: .word 0xFF000000
+_0221B8FC: .word 0x00FF0000
+
+ thumb_func_start MOD13_0221B900
+MOD13_0221B900: ; 0x0221B900
+ push {r4, r5, r6, r7}
+ sub sp, #0x60
+ add r4, r1, #0
+ add r1, r2, #0
+ str r3, [sp]
+ ldr r2, [r0]
+ str r2, [sp, #4]
+ ldrb r5, [r1, #3]
+ ldrb r2, [r1, #2]
+ lsl r3, r2, #8
+ ldrb r2, [r1]
+ lsl r2, r2, #0x18
+ ldrb r6, [r1, #1]
+ lsl r6, r6, #0x10
+ eor r2, r6
+ eor r3, r2
+ eor r5, r3
+ ldr r2, [sp, #4]
+ eor r2, r5
+ str r2, [sp, #4]
+ ldr r2, [r0, #4]
+ str r2, [sp, #8]
+ ldrb r5, [r1, #7]
+ ldrb r2, [r1, #6]
+ lsl r3, r2, #8
+ ldrb r2, [r1, #4]
+ lsl r2, r2, #0x18
+ ldrb r6, [r1, #5]
+ lsl r6, r6, #0x10
+ eor r2, r6
+ eor r3, r2
+ eor r5, r3
+ ldr r2, [sp, #8]
+ eor r2, r5
+ str r2, [sp, #8]
+ ldr r2, [r0, #8]
+ str r2, [sp, #0x2c]
+ ldrb r5, [r1, #0xb]
+ ldrb r2, [r1, #0xa]
+ lsl r3, r2, #8
+ ldrb r2, [r1, #8]
+ lsl r2, r2, #0x18
+ ldrb r6, [r1, #9]
+ lsl r6, r6, #0x10
+ eor r2, r6
+ eor r3, r2
+ eor r5, r3
+ ldr r2, [sp, #0x2c]
+ eor r2, r5
+ str r2, [sp, #0x2c]
+ ldr r6, [r0, #0xc]
+ ldrb r5, [r1, #0xf]
+ ldrb r2, [r1, #0xe]
+ lsl r3, r2, #8
+ ldrb r2, [r1, #0xc]
+ lsl r2, r2, #0x18
+ ldrb r1, [r1, #0xd]
+ lsl r1, r1, #0x10
+ eor r2, r1
+ eor r3, r2
+ eor r5, r3
+ eor r6, r5
+ asr r1, r4, #1
+ str r1, [sp, #0xc]
+ mov r2, #0xff
+_0221B982:
+ ldr r1, [r0, #0x10]
+ str r1, [sp, #0x10]
+ add r1, r6, #0
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221BD00 ; =0x0223DC6C
+ ldr r5, [r1, r3]
+ ldr r1, [sp, #0x2c]
+ lsr r1, r1, #8
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221BD04 ; =0x0223D86C
+ ldr r4, [r1, r3]
+ ldr r1, [sp, #4]
+ lsr r1, r1, #0x18
+ lsl r3, r1, #2
+ ldr r1, _0221BD08 ; =0x0223D06C
+ ldr r7, [r1, r3]
+ ldr r1, [sp, #8]
+ lsr r1, r1, #0x10
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221BD0C ; =0x0223D46C
+ ldr r1, [r1, r3]
+ eor r7, r1
+ eor r4, r7
+ eor r5, r4
+ ldr r1, [sp, #0x10]
+ eor r1, r5
+ str r1, [sp, #0x10]
+ ldr r1, [r0, #0x14]
+ str r1, [sp, #0x14]
+ ldr r1, [sp, #4]
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221BD00 ; =0x0223DC6C
+ ldr r5, [r1, r3]
+ lsr r1, r6, #8
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221BD04 ; =0x0223D86C
+ ldr r4, [r1, r3]
+ ldr r1, [sp, #8]
+ lsr r1, r1, #0x18
+ lsl r3, r1, #2
+ ldr r1, _0221BD08 ; =0x0223D06C
+ ldr r7, [r1, r3]
+ ldr r1, [sp, #0x2c]
+ lsr r1, r1, #0x10
+ and r1, r2
+ lsl r3, r1, #2
+ ldr r1, _0221BD0C ; =0x0223D46C
+ ldr r1, [r1, r3]
+ eor r7, r1
+ eor r4, r7
+ eor r5, r4
+ ldr r1, [sp, #0x14]
+ eor r1, r5
+ str r1, [sp, #0x14]
+ ldr r3, [r0, #0x18]
+ ldr r1, [sp, #8]
+ and r1, r2
+ lsl r4, r1, #2
+ ldr r1, _0221BD00 ; =0x0223DC6C
+ ldr r1, [r1, r4]
+ ldr r4, [sp, #4]
+ lsr r4, r4, #8
+ and r4, r2
+ lsl r5, r4, #2
+ ldr r4, _0221BD04 ; =0x0223D86C
+ ldr r7, [r4, r5]
+ ldr r4, [sp, #0x2c]
+ lsr r4, r4, #0x18
+ lsl r5, r4, #2
+ ldr r4, _0221BD08 ; =0x0223D06C
+ ldr r4, [r4, r5]
+ str r4, [sp, #0x18]
+ lsr r4, r6, #0x10
+ and r4, r2
+ lsl r5, r4, #2
+ ldr r4, _0221BD0C ; =0x0223D46C
+ ldr r5, [r4, r5]
+ ldr r4, [sp, #0x18]
+ eor r4, r5
+ str r4, [sp, #0x18]
+ eor r7, r4
+ eor r1, r7
+ eor r3, r1
+ ldr r1, [r0, #0x1c]
+ ldr r4, [sp, #0x2c]
+ and r4, r2
+ str r4, [sp, #0x2c]
+ lsl r5, r4, #2
+ ldr r4, _0221BD00 ; =0x0223DC6C
+ ldr r4, [r4, r5]
+ str r4, [sp, #0x30]
+ ldr r4, [sp, #8]
+ lsr r4, r4, #8
+ and r4, r2
+ lsl r5, r4, #2
+ ldr r4, _0221BD04 ; =0x0223D86C
+ ldr r7, [r4, r5]
+ lsr r4, r6, #0x18
+ lsl r5, r4, #2
+ ldr r4, _0221BD08 ; =0x0223D06C
+ ldr r6, [r4, r5]
+ ldr r4, [sp, #4]
+ lsr r4, r4, #0x10
+ and r4, r2
+ lsl r5, r4, #2
+ ldr r4, _0221BD0C ; =0x0223D46C
+ ldr r4, [r4, r5]
+ eor r6, r4
+ eor r7, r6
+ ldr r4, [sp, #0x30]
+ eor r4, r7
+ str r4, [sp, #0x30]
+ eor r1, r4
+ add r0, #0x20
+ ldr r4, [sp, #0xc]
+ sub r4, r4, #1
+ str r4, [sp, #0xc]
+ cmp r4, #0
+ beq _0221BB6A
+ ldr r4, [r0]
+ str r4, [sp, #4]
+ add r4, r1, #0
+ and r4, r2
+ lsl r5, r4, #2
+ ldr r4, _0221BD00 ; =0x0223DC6C
+ ldr r6, [r4, r5]
+ lsr r4, r3, #8
+ and r4, r2
+ lsl r5, r4, #2
+ ldr r4, _0221BD04 ; =0x0223D86C
+ ldr r4, [r4, r5]
+ str r4, [sp, #0x34]
+ ldr r4, [sp, #0x10]
+ lsr r4, r4, #0x18
+ lsl r5, r4, #2
+ ldr r4, _0221BD08 ; =0x0223D06C
+ ldr r7, [r4, r5]
+ ldr r4, [sp, #0x14]
+ lsr r4, r4, #0x10
+ and r4, r2
+ lsl r5, r4, #2
+ ldr r4, _0221BD0C ; =0x0223D46C
+ ldr r4, [r4, r5]
+ eor r7, r4
+ ldr r4, [sp, #0x34]
+ eor r4, r7
+ str r4, [sp, #0x34]
+ eor r6, r4
+ ldr r4, [sp, #4]
+ eor r4, r6
+ str r4, [sp, #4]
+ ldr r4, [r0, #4]
+ str r4, [sp, #8]
+ ldr r4, [sp, #0x10]
+ and r4, r2
+ lsl r5, r4, #2
+ ldr r4, _0221BD00 ; =0x0223DC6C
+ ldr r6, [r4, r5]
+ lsr r4, r1, #8
+ and r4, r2
+ lsl r5, r4, #2
+ ldr r4, _0221BD04 ; =0x0223D86C
+ ldr r4, [r4, r5]
+ str r4, [sp, #0x38]
+ ldr r4, [sp, #0x14]
+ lsr r4, r4, #0x18
+ lsl r5, r4, #2
+ ldr r4, _0221BD08 ; =0x0223D06C
+ ldr r7, [r4, r5]
+ lsr r4, r3, #0x10
+ and r4, r2
+ lsl r5, r4, #2
+ ldr r4, _0221BD0C ; =0x0223D46C
+ ldr r4, [r4, r5]
+ eor r7, r4
+ ldr r4, [sp, #0x38]
+ eor r4, r7
+ str r4, [sp, #0x38]
+ eor r6, r4
+ ldr r4, [sp, #8]
+ eor r4, r6
+ str r4, [sp, #8]
+ ldr r4, [r0, #8]
+ str r4, [sp, #0x2c]
+ ldr r4, [sp, #0x14]
+ and r4, r2
+ lsl r5, r4, #2
+ ldr r4, _0221BD00 ; =0x0223DC6C
+ ldr r4, [r4, r5]
+ ldr r5, [sp, #0x10]
+ lsr r5, r5, #8
+ and r5, r2
+ lsl r6, r5, #2
+ ldr r5, _0221BD04 ; =0x0223D86C
+ ldr r7, [r5, r6]
+ lsr r5, r3, #0x18
+ lsl r6, r5, #2
+ ldr r5, _0221BD08 ; =0x0223D06C
+ ldr r5, [r5, r6]
+ str r5, [sp, #0x1c]
+ lsr r5, r1, #0x10
+ and r5, r2
+ lsl r6, r5, #2
+ ldr r5, _0221BD0C ; =0x0223D46C
+ ldr r6, [r5, r6]
+ ldr r5, [sp, #0x1c]
+ eor r5, r6
+ str r5, [sp, #0x1c]
+ eor r7, r5
+ eor r4, r7
+ ldr r5, [sp, #0x2c]
+ eor r5, r4
+ str r5, [sp, #0x2c]
+ ldr r6, [r0, #0xc]
+ and r3, r2
+ lsl r4, r3, #2
+ ldr r3, _0221BD00 ; =0x0223DC6C
+ ldr r3, [r3, r4]
+ ldr r4, [sp, #0x14]
+ lsr r4, r4, #8
+ and r4, r2
+ lsl r5, r4, #2
+ ldr r4, _0221BD04 ; =0x0223D86C
+ ldr r7, [r4, r5]
+ lsr r1, r1, #0x18
+ lsl r4, r1, #2
+ ldr r1, _0221BD08 ; =0x0223D06C
+ ldr r5, [r1, r4]
+ ldr r1, [sp, #0x10]
+ lsr r1, r1, #0x10
+ and r1, r2
+ lsl r4, r1, #2
+ ldr r1, _0221BD0C ; =0x0223D46C
+ ldr r1, [r1, r4]
+ eor r5, r1
+ eor r7, r5
+ eor r3, r7
+ eor r6, r3
+ b _0221B982
+_0221BB6A:
+ ldr r4, [r0]
+ add r5, r1, #0
+ mov r2, #0xff
+ and r5, r2
+ lsl r5, r5, #2
+ ldr r2, _0221BD10 ; =0x0223E06C
+ ldr r6, [r2, r5]
+ str r6, [sp, #0x20]
+ mov r5, #0xff
+ and r6, r5
+ str r6, [sp, #0x20]
+ lsr r6, r3, #8
+ and r6, r5
+ lsl r5, r6, #2
+ ldr r7, [r2, r5]
+ ldr r5, _0221BD14 ; =0x0000FF00
+ and r7, r5
+ ldr r5, [sp, #0x10]
+ lsr r5, r5, #0x18
+ lsl r5, r5, #2
+ ldr r5, [r2, r5]
+ str r5, [sp, #0x54]
+ ldr r6, _0221BD18 ; =0xFF000000
+ and r5, r6
+ str r5, [sp, #0x54]
+ ldr r5, [sp, #0x14]
+ lsr r5, r5, #0x10
+ str r5, [sp, #0x40]
+ mov r6, #0xff
+ and r5, r6
+ str r5, [sp, #0x40]
+ lsl r5, r5, #2
+ ldr r5, [r2, r5]
+ str r5, [sp, #0x3c]
+ ldr r5, _0221BD1C ; =0x00FF0000
+ ldr r6, [sp, #0x3c]
+ and r6, r5
+ str r6, [sp, #0x3c]
+ ldr r5, [sp, #0x54]
+ eor r5, r6
+ str r5, [sp, #0x54]
+ eor r7, r5
+ ldr r5, [sp, #0x20]
+ eor r5, r7
+ str r5, [sp, #0x20]
+ eor r4, r5
+ lsr r6, r4, #0x18
+ ldr r5, [sp]
+ strb r6, [r5]
+ lsr r6, r4, #0x10
+ strb r6, [r5, #1]
+ lsr r6, r4, #8
+ strb r6, [r5, #2]
+ strb r4, [r5, #3]
+ ldr r4, [r0, #4]
+ ldr r6, [sp, #0x10]
+ mov r5, #0xff
+ and r6, r5
+ lsl r5, r6, #2
+ ldr r6, [r2, r5]
+ str r6, [sp, #0x24]
+ mov r5, #0xff
+ and r6, r5
+ str r6, [sp, #0x24]
+ lsr r6, r1, #8
+ and r6, r5
+ lsl r5, r6, #2
+ ldr r7, [r2, r5]
+ ldr r5, _0221BD14 ; =0x0000FF00
+ and r7, r5
+ ldr r5, [sp, #0x14]
+ lsr r5, r5, #0x18
+ lsl r5, r5, #2
+ ldr r5, [r2, r5]
+ str r5, [sp, #0x58]
+ ldr r6, _0221BD18 ; =0xFF000000
+ and r5, r6
+ str r5, [sp, #0x58]
+ lsr r5, r3, #0x10
+ str r5, [sp, #0x48]
+ mov r6, #0xff
+ and r5, r6
+ str r5, [sp, #0x48]
+ lsl r5, r5, #2
+ ldr r5, [r2, r5]
+ str r5, [sp, #0x44]
+ ldr r5, _0221BD1C ; =0x00FF0000
+ ldr r6, [sp, #0x44]
+ and r6, r5
+ str r6, [sp, #0x44]
+ ldr r5, [sp, #0x58]
+ eor r5, r6
+ str r5, [sp, #0x58]
+ eor r7, r5
+ ldr r5, [sp, #0x24]
+ eor r5, r7
+ str r5, [sp, #0x24]
+ eor r4, r5
+ lsr r6, r4, #0x18
+ ldr r5, [sp]
+ strb r6, [r5, #4]
+ lsr r6, r4, #0x10
+ strb r6, [r5, #5]
+ lsr r6, r4, #8
+ strb r6, [r5, #6]
+ strb r4, [r5, #7]
+ ldr r4, [r0, #8]
+ ldr r6, [sp, #0x14]
+ mov r5, #0xff
+ and r6, r5
+ lsl r5, r6, #2
+ ldr r6, [r2, r5]
+ str r6, [sp, #0x28]
+ mov r5, #0xff
+ and r6, r5
+ str r6, [sp, #0x28]
+ ldr r5, [sp, #0x10]
+ lsr r6, r5, #8
+ mov r5, #0xff
+ and r6, r5
+ lsl r5, r6, #2
+ ldr r7, [r2, r5]
+ ldr r5, _0221BD14 ; =0x0000FF00
+ and r7, r5
+ lsr r5, r3, #0x18
+ lsl r5, r5, #2
+ ldr r5, [r2, r5]
+ str r5, [sp, #0x5c]
+ ldr r6, _0221BD18 ; =0xFF000000
+ and r5, r6
+ str r5, [sp, #0x5c]
+ lsr r5, r1, #0x10
+ str r5, [sp, #0x50]
+ mov r6, #0xff
+ and r5, r6
+ str r5, [sp, #0x50]
+ lsl r5, r5, #2
+ ldr r5, [r2, r5]
+ str r5, [sp, #0x4c]
+ ldr r5, _0221BD1C ; =0x00FF0000
+ ldr r6, [sp, #0x4c]
+ and r6, r5
+ str r6, [sp, #0x4c]
+ ldr r5, [sp, #0x5c]
+ eor r5, r6
+ str r5, [sp, #0x5c]
+ eor r7, r5
+ ldr r5, [sp, #0x28]
+ eor r5, r7
+ str r5, [sp, #0x28]
+ eor r4, r5
+ lsr r6, r4, #0x18
+ ldr r5, [sp]
+ strb r6, [r5, #8]
+ lsr r6, r4, #0x10
+ strb r6, [r5, #9]
+ lsr r6, r4, #8
+ strb r6, [r5, #0xa]
+ strb r4, [r5, #0xb]
+ ldr r5, [r0, #0xc]
+ mov r0, #0xff
+ and r3, r0
+ lsl r0, r3, #2
+ ldr r4, [r2, r0]
+ mov r0, #0xff
+ and r4, r0
+ ldr r0, [sp, #0x14]
+ lsr r3, r0, #8
+ mov r0, #0xff
+ and r3, r0
+ lsl r0, r3, #2
+ ldr r3, [r2, r0]
+ ldr r0, _0221BD14 ; =0x0000FF00
+ and r3, r0
+ lsr r0, r1, #0x18
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ ldr r1, _0221BD18 ; =0xFF000000
+ and r0, r1
+ ldr r1, [sp, #0x10]
+ lsr r6, r1, #0x10
+ mov r1, #0xff
+ and r6, r1
+ lsl r1, r6, #2
+ ldr r2, [r2, r1]
+ ldr r1, _0221BD1C ; =0x00FF0000
+ and r2, r1
+ eor r0, r2
+ eor r3, r0
+ eor r4, r3
+ eor r5, r4
+ lsr r1, r5, #0x18
+ ldr r0, [sp]
+ strb r1, [r0, #0xc]
+ lsr r1, r5, #0x10
+ strb r1, [r0, #0xd]
+ lsr r1, r5, #8
+ strb r1, [r0, #0xe]
+ strb r5, [r0, #0xf]
+ add sp, #0x60
+ pop {r4, r5, r6, r7}
+ bx lr
+ nop
+_0221BD00: .word 0x0223DC6C
+_0221BD04: .word 0x0223D86C
+_0221BD08: .word 0x0223D06C
+_0221BD0C: .word 0x0223D46C
+_0221BD10: .word 0x0223E06C
+_0221BD14: .word 0x0000FF00
+_0221BD18: .word 0xFF000000
+_0221BD1C: .word 0x00FF0000
+
+ thumb_func_start MOD13_0221BD20
+MOD13_0221BD20: ; 0x0221BD20
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ bl MOD13_0221BEE4
+ str r0, [sp]
+ mov r6, #0
+ lsl r5, r0, #2
+ cmp r5, #0
+ ble _0221BD84
+ str r4, [sp, #4]
+ lsl r0, r5, #2
+ add r3, r4, r0
+_0221BD3A:
+ ldr r0, [sp, #4]
+ ldr r2, [r0]
+ ldr r1, [r3]
+ str r1, [r0]
+ str r2, [r3]
+ add r0, r6, #1
+ lsl r2, r0, #2
+ ldr r1, [r4, r2]
+ add r0, r5, #1
+ lsl r7, r0, #2
+ ldr r0, [r4, r7]
+ str r0, [r4, r2]
+ str r1, [r4, r7]
+ add r0, r6, #2
+ lsl r2, r0, #2
+ ldr r1, [r4, r2]
+ add r0, r5, #2
+ lsl r7, r0, #2
+ ldr r0, [r4, r7]
+ str r0, [r4, r2]
+ str r1, [r4, r7]
+ add r0, r6, #3
+ lsl r2, r0, #2
+ ldr r1, [r4, r2]
+ add r0, r5, #3
+ lsl r7, r0, #2
+ ldr r0, [r4, r7]
+ str r0, [r4, r2]
+ str r1, [r4, r7]
+ ldr r0, [sp, #4]
+ add r0, #0x10
+ str r0, [sp, #4]
+ add r6, r6, #4
+ sub r3, #0x10
+ sub r5, r5, #4
+ cmp r6, r5
+ blt _0221BD3A
+_0221BD84:
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [sp]
+ cmp r0, #1
+ bgt _0221BD90
+ b _0221BEC4
+_0221BD90:
+ ldr r2, _0221BED0 ; =0x0223E06C
+ mov r0, #0xff
+_0221BD94:
+ add r4, #0x10
+ ldr r5, [r4]
+ add r1, r5, #0
+ and r1, r0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ and r1, r0
+ lsl r3, r1, #2
+ ldr r1, _0221BED4 ; =0x0223C86C
+ ldr r3, [r1, r3]
+ lsr r1, r5, #8
+ and r1, r0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ and r1, r0
+ lsl r6, r1, #2
+ ldr r1, _0221BED8 ; =0x0223C46C
+ ldr r7, [r1, r6]
+ lsr r1, r5, #0x18
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ and r1, r0
+ lsl r6, r1, #2
+ ldr r1, _0221BEDC ; =0x0223E46C
+ ldr r1, [r1, r6]
+ lsr r5, r5, #0x10
+ and r5, r0
+ lsl r5, r5, #2
+ ldr r5, [r2, r5]
+ and r5, r0
+ lsl r6, r5, #2
+ ldr r5, _0221BEE0 ; =0x0223E86C
+ ldr r5, [r5, r6]
+ eor r1, r5
+ eor r7, r1
+ eor r3, r7
+ str r3, [r4]
+ ldr r5, [r4, #4]
+ add r1, r5, #0
+ and r1, r0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ and r1, r0
+ lsl r3, r1, #2
+ ldr r1, _0221BED4 ; =0x0223C86C
+ ldr r3, [r1, r3]
+ lsr r1, r5, #8
+ and r1, r0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ and r1, r0
+ lsl r6, r1, #2
+ ldr r1, _0221BED8 ; =0x0223C46C
+ ldr r7, [r1, r6]
+ lsr r1, r5, #0x18
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ and r1, r0
+ lsl r6, r1, #2
+ ldr r1, _0221BEDC ; =0x0223E46C
+ ldr r1, [r1, r6]
+ lsr r5, r5, #0x10
+ and r5, r0
+ lsl r5, r5, #2
+ ldr r5, [r2, r5]
+ and r5, r0
+ lsl r6, r5, #2
+ ldr r5, _0221BEE0 ; =0x0223E86C
+ ldr r5, [r5, r6]
+ eor r1, r5
+ eor r7, r1
+ eor r3, r7
+ str r3, [r4, #4]
+ ldr r5, [r4, #8]
+ add r1, r5, #0
+ and r1, r0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ and r1, r0
+ lsl r3, r1, #2
+ ldr r1, _0221BED4 ; =0x0223C86C
+ ldr r3, [r1, r3]
+ lsr r1, r5, #8
+ and r1, r0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ and r1, r0
+ lsl r6, r1, #2
+ ldr r1, _0221BED8 ; =0x0223C46C
+ ldr r7, [r1, r6]
+ lsr r1, r5, #0x18
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ and r1, r0
+ lsl r6, r1, #2
+ ldr r1, _0221BEDC ; =0x0223E46C
+ ldr r1, [r1, r6]
+ lsr r5, r5, #0x10
+ and r5, r0
+ lsl r5, r5, #2
+ ldr r5, [r2, r5]
+ and r5, r0
+ lsl r6, r5, #2
+ ldr r5, _0221BEE0 ; =0x0223E86C
+ ldr r5, [r5, r6]
+ eor r1, r5
+ eor r7, r1
+ eor r3, r7
+ str r3, [r4, #8]
+ ldr r5, [r4, #0xc]
+ add r1, r5, #0
+ and r1, r0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ and r1, r0
+ lsl r3, r1, #2
+ ldr r1, _0221BED4 ; =0x0223C86C
+ ldr r3, [r1, r3]
+ lsr r1, r5, #8
+ and r1, r0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ and r1, r0
+ lsl r6, r1, #2
+ ldr r1, _0221BED8 ; =0x0223C46C
+ ldr r7, [r1, r6]
+ lsr r1, r5, #0x18
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ and r1, r0
+ lsl r6, r1, #2
+ ldr r1, _0221BEDC ; =0x0223E46C
+ ldr r1, [r1, r6]
+ lsr r5, r5, #0x10
+ and r5, r0
+ lsl r5, r5, #2
+ ldr r5, [r2, r5]
+ and r5, r0
+ lsl r6, r5, #2
+ ldr r5, _0221BEE0 ; =0x0223E86C
+ ldr r5, [r5, r6]
+ eor r1, r5
+ eor r7, r1
+ eor r3, r7
+ str r3, [r4, #0xc]
+ ldr r1, [sp, #8]
+ add r3, r1, #1
+ str r3, [sp, #8]
+ ldr r1, [sp]
+ cmp r3, r1
+ bge _0221BEC4
+ b _0221BD94
+_0221BEC4:
+ ldr r0, [sp]
+ add sp, #0xc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_0221BED0: .word 0x0223E06C
+_0221BED4: .word 0x0223C86C
+_0221BED8: .word 0x0223C46C
+_0221BEDC: .word 0x0223E46C
+_0221BEE0: .word 0x0223E86C
+
+ thumb_func_start MOD13_0221BEE4
+MOD13_0221BEE4: ; 0x0221BEE4
+ push {r4, r5, r6, r7}
+ sub sp, #0x20
+ add r3, r1, #0
+ add r1, r2, #0
+ mov r2, #0
+ str r2, [sp]
+ ldrb r5, [r3, #3]
+ ldrb r2, [r3, #2]
+ lsl r4, r2, #8
+ ldrb r2, [r3]
+ lsl r2, r2, #0x18
+ ldrb r6, [r3, #1]
+ lsl r6, r6, #0x10
+ eor r2, r6
+ eor r4, r2
+ eor r5, r4
+ str r5, [r0]
+ ldrb r5, [r3, #7]
+ ldrb r2, [r3, #6]
+ lsl r4, r2, #8
+ ldrb r2, [r3, #4]
+ lsl r2, r2, #0x18
+ ldrb r6, [r3, #5]
+ lsl r6, r6, #0x10
+ eor r2, r6
+ eor r4, r2
+ eor r5, r4
+ str r5, [r0, #4]
+ ldrb r5, [r3, #0xb]
+ ldrb r2, [r3, #0xa]
+ lsl r4, r2, #8
+ ldrb r2, [r3, #8]
+ lsl r2, r2, #0x18
+ ldrb r6, [r3, #9]
+ lsl r6, r6, #0x10
+ eor r2, r6
+ eor r4, r2
+ eor r5, r4
+ str r5, [r0, #8]
+ ldrb r5, [r3, #0xf]
+ ldrb r2, [r3, #0xe]
+ lsl r4, r2, #8
+ ldrb r2, [r3, #0xc]
+ lsl r2, r2, #0x18
+ ldrb r6, [r3, #0xd]
+ lsl r6, r6, #0x10
+ eor r2, r6
+ eor r4, r2
+ eor r5, r4
+ str r5, [r0, #0xc]
+ cmp r1, #0x80
+ bne _0221BFD0
+ ldr r6, _0221C1B4 ; =0x0223C444
+_0221BF4E:
+ ldr r5, [r0, #0xc]
+ ldr r1, [r6]
+ str r1, [sp, #0xc]
+ lsr r1, r5, #0x18
+ lsl r2, r1, #2
+ ldr r1, _0221C1B8 ; =0x0223E06C
+ ldr r4, [r1, r2]
+ mov r1, #0xff
+ and r4, r1
+ add r2, r5, #0
+ and r2, r1
+ lsl r2, r2, #2
+ ldr r1, _0221C1B8 ; =0x0223E06C
+ ldr r7, [r1, r2]
+ ldr r1, _0221C1BC ; =0x0000FF00
+ and r7, r1
+ ldr r3, [r0]
+ lsr r2, r5, #0x10
+ mov r1, #0xff
+ and r2, r1
+ lsl r2, r2, #2
+ ldr r1, _0221C1B8 ; =0x0223E06C
+ ldr r2, [r1, r2]
+ ldr r1, _0221C1C0 ; =0xFF000000
+ and r2, r1
+ eor r3, r2
+ lsr r2, r5, #8
+ mov r1, #0xff
+ and r2, r1
+ lsl r2, r2, #2
+ ldr r1, _0221C1B8 ; =0x0223E06C
+ ldr r2, [r1, r2]
+ ldr r1, _0221C1C4 ; =0x00FF0000
+ and r2, r1
+ eor r3, r2
+ eor r7, r3
+ eor r4, r7
+ ldr r1, [sp, #0xc]
+ eor r1, r4
+ str r1, [sp, #0xc]
+ str r1, [r0, #0x10]
+ ldr r2, [r0, #4]
+ ldr r1, [r0, #0x10]
+ eor r2, r1
+ str r2, [r0, #0x14]
+ ldr r2, [r0, #8]
+ ldr r1, [r0, #0x14]
+ eor r2, r1
+ str r2, [r0, #0x18]
+ ldr r2, [r0, #0xc]
+ ldr r1, [r0, #0x18]
+ eor r2, r1
+ str r2, [r0, #0x1c]
+ add r6, r6, #4
+ ldr r1, [sp]
+ add r1, r1, #1
+ str r1, [sp]
+ cmp r1, #0xa
+ blt _0221BFCC
+ mov r0, #0xa
+ add sp, #0x20
+ pop {r4, r5, r6, r7}
+ bx lr
+_0221BFCC:
+ add r0, #0x10
+ b _0221BF4E
+_0221BFD0:
+ ldrb r5, [r3, #0x13]
+ ldrb r2, [r3, #0x12]
+ lsl r4, r2, #8
+ ldrb r2, [r3, #0x10]
+ lsl r2, r2, #0x18
+ ldrb r6, [r3, #0x11]
+ lsl r6, r6, #0x10
+ eor r2, r6
+ eor r4, r2
+ eor r5, r4
+ str r5, [r0, #0x10]
+ ldrb r5, [r3, #0x17]
+ ldrb r2, [r3, #0x16]
+ lsl r4, r2, #8
+ ldrb r2, [r3, #0x14]
+ lsl r2, r2, #0x18
+ ldrb r6, [r3, #0x15]
+ lsl r6, r6, #0x10
+ eor r2, r6
+ eor r4, r2
+ eor r5, r4
+ str r5, [r0, #0x14]
+ cmp r1, #0xc0
+ bne _0221C094
+ ldr r6, _0221C1B4 ; =0x0223C444
+_0221C002:
+ ldr r5, [r0, #0x14]
+ ldr r1, [r6]
+ str r1, [sp, #0x10]
+ lsr r1, r5, #0x18
+ lsl r2, r1, #2
+ ldr r1, _0221C1B8 ; =0x0223E06C
+ ldr r4, [r1, r2]
+ mov r1, #0xff
+ and r4, r1
+ add r2, r5, #0
+ and r2, r1
+ lsl r2, r2, #2
+ ldr r1, _0221C1B8 ; =0x0223E06C
+ ldr r7, [r1, r2]
+ ldr r1, _0221C1BC ; =0x0000FF00
+ and r7, r1
+ ldr r3, [r0]
+ lsr r2, r5, #0x10
+ mov r1, #0xff
+ and r2, r1
+ lsl r2, r2, #2
+ ldr r1, _0221C1B8 ; =0x0223E06C
+ ldr r2, [r1, r2]
+ ldr r1, _0221C1C0 ; =0xFF000000
+ and r2, r1
+ eor r3, r2
+ lsr r2, r5, #8
+ mov r1, #0xff
+ and r2, r1
+ lsl r2, r2, #2
+ ldr r1, _0221C1B8 ; =0x0223E06C
+ ldr r2, [r1, r2]
+ ldr r1, _0221C1C4 ; =0x00FF0000
+ and r2, r1
+ eor r3, r2
+ eor r7, r3
+ eor r4, r7
+ ldr r1, [sp, #0x10]
+ eor r1, r4
+ str r1, [sp, #0x10]
+ str r1, [r0, #0x18]
+ ldr r2, [r0, #4]
+ ldr r1, [r0, #0x18]
+ eor r2, r1
+ str r2, [r0, #0x1c]
+ ldr r2, [r0, #8]
+ ldr r1, [r0, #0x1c]
+ eor r2, r1
+ str r2, [r0, #0x20]
+ ldr r2, [r0, #0xc]
+ ldr r1, [r0, #0x20]
+ eor r2, r1
+ str r2, [r0, #0x24]
+ add r6, r6, #4
+ ldr r1, [sp]
+ add r1, r1, #1
+ str r1, [sp]
+ cmp r1, #8
+ blt _0221C080
+ mov r0, #0xc
+ add sp, #0x20
+ pop {r4, r5, r6, r7}
+ bx lr
+_0221C080:
+ ldr r2, [r0, #0x10]
+ ldr r1, [r0, #0x24]
+ eor r2, r1
+ str r2, [r0, #0x28]
+ ldr r2, [r0, #0x14]
+ ldr r1, [r0, #0x28]
+ eor r2, r1
+ str r2, [r0, #0x2c]
+ add r0, #0x18
+ b _0221C002
+_0221C094:
+ ldrb r5, [r3, #0x1b]
+ ldrb r2, [r3, #0x1a]
+ lsl r4, r2, #8
+ ldrb r2, [r3, #0x18]
+ lsl r2, r2, #0x18
+ ldrb r6, [r3, #0x19]
+ lsl r6, r6, #0x10
+ eor r2, r6
+ eor r4, r2
+ eor r5, r4
+ str r5, [r0, #0x18]
+ ldrb r5, [r3, #0x1f]
+ ldrb r2, [r3, #0x1e]
+ lsl r4, r2, #8
+ ldrb r2, [r3, #0x1c]
+ lsl r2, r2, #0x18
+ ldrb r3, [r3, #0x1d]
+ lsl r3, r3, #0x10
+ eor r2, r3
+ eor r4, r2
+ eor r5, r4
+ str r5, [r0, #0x1c]
+ ldr r2, _0221C1C8 ; =0x00000100
+ cmp r1, r2
+ bne _0221C1AC
+ ldr r1, _0221C1B4 ; =0x0223C444
+ str r1, [sp, #4]
+ ldr r7, _0221C1B8 ; =0x0223E06C
+_0221C0CC:
+ ldr r6, [r0, #0x1c]
+ ldr r1, [sp, #4]
+ ldr r1, [r1]
+ str r1, [sp, #8]
+ lsr r1, r6, #0x18
+ lsl r1, r1, #2
+ ldr r5, [r7, r1]
+ mov r1, #0xff
+ and r5, r1
+ add r2, r6, #0
+ and r2, r1
+ lsl r1, r2, #2
+ ldr r4, [r7, r1]
+ ldr r1, _0221C1BC ; =0x0000FF00
+ and r4, r1
+ ldr r3, [r0]
+ lsr r2, r6, #0x10
+ mov r1, #0xff
+ and r2, r1
+ lsl r1, r2, #2
+ ldr r1, [r7, r1]
+ str r1, [sp, #0x14]
+ ldr r2, _0221C1C0 ; =0xFF000000
+ and r1, r2
+ str r1, [sp, #0x14]
+ eor r3, r1
+ lsr r2, r6, #8
+ mov r1, #0xff
+ and r2, r1
+ lsl r1, r2, #2
+ ldr r2, [r7, r1]
+ ldr r1, _0221C1C4 ; =0x00FF0000
+ and r2, r1
+ eor r3, r2
+ eor r4, r3
+ eor r5, r4
+ ldr r1, [sp, #8]
+ eor r1, r5
+ str r1, [sp, #8]
+ str r1, [r0, #0x20]
+ ldr r2, [r0, #4]
+ ldr r1, [r0, #0x20]
+ eor r2, r1
+ str r2, [r0, #0x24]
+ ldr r2, [r0, #8]
+ ldr r1, [r0, #0x24]
+ eor r2, r1
+ str r2, [r0, #0x28]
+ ldr r2, [r0, #0xc]
+ ldr r1, [r0, #0x28]
+ eor r2, r1
+ str r2, [r0, #0x2c]
+ ldr r1, [sp, #4]
+ add r1, r1, #4
+ str r1, [sp, #4]
+ ldr r1, [sp]
+ add r1, r1, #1
+ str r1, [sp]
+ cmp r1, #7
+ blt _0221C14C
+ mov r0, #0xe
+ add sp, #0x20
+ pop {r4, r5, r6, r7}
+ bx lr
+_0221C14C:
+ ldr r6, [r0, #0x2c]
+ add r2, r6, #0
+ mov r1, #0xff
+ and r2, r1
+ lsl r1, r2, #2
+ ldr r5, [r7, r1]
+ mov r1, #0xff
+ and r5, r1
+ lsr r2, r6, #8
+ and r2, r1
+ lsl r1, r2, #2
+ ldr r4, [r7, r1]
+ ldr r1, _0221C1BC ; =0x0000FF00
+ and r4, r1
+ ldr r3, [r0, #0x10]
+ lsr r1, r6, #0x18
+ lsl r1, r1, #2
+ ldr r1, [r7, r1]
+ str r1, [sp, #0x18]
+ ldr r2, _0221C1C0 ; =0xFF000000
+ and r1, r2
+ str r1, [sp, #0x18]
+ eor r3, r1
+ lsr r2, r6, #0x10
+ mov r1, #0xff
+ and r2, r1
+ lsl r1, r2, #2
+ ldr r2, [r7, r1]
+ ldr r1, _0221C1C4 ; =0x00FF0000
+ and r2, r1
+ eor r3, r2
+ eor r4, r3
+ eor r5, r4
+ str r5, [r0, #0x30]
+ ldr r2, [r0, #0x14]
+ ldr r1, [r0, #0x30]
+ eor r2, r1
+ str r2, [r0, #0x34]
+ ldr r2, [r0, #0x18]
+ ldr r1, [r0, #0x34]
+ eor r2, r1
+ str r2, [r0, #0x38]
+ ldr r2, [r0, #0x1c]
+ ldr r1, [r0, #0x38]
+ eor r2, r1
+ str r2, [r0, #0x3c]
+ add r0, #0x20
+ b _0221C0CC
+_0221C1AC:
+ ldr r0, [sp]
+ add sp, #0x20
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+_0221C1B4: .word 0x0223C444
+_0221C1B8: .word 0x0223E06C
+_0221C1BC: .word 0x0000FF00
+_0221C1C0: .word 0xFF000000
+_0221C1C4: .word 0x00FF0000
+_0221C1C8: .word 0x00000100
+
+ thumb_func_start MOD13_0221C1CC
+MOD13_0221C1CC: ; 0x0221C1CC
+ push {r4}
+ sub sp, #4
+ ldrb r4, [r0]
+ ldrb r3, [r1]
+ eor r4, r3
+ strb r4, [r2]
+ ldrb r4, [r0, #1]
+ ldrb r3, [r1, #1]
+ eor r4, r3
+ strb r4, [r2, #1]
+ ldrb r4, [r0, #2]
+ ldrb r3, [r1, #2]
+ eor r4, r3
+ strb r4, [r2, #2]
+ ldrb r4, [r0, #3]
+ ldrb r3, [r1, #3]
+ eor r4, r3
+ strb r4, [r2, #3]
+ ldrb r4, [r0, #4]
+ ldrb r3, [r1, #4]
+ eor r4, r3
+ strb r4, [r2, #4]
+ ldrb r4, [r0, #5]
+ ldrb r3, [r1, #5]
+ eor r4, r3
+ strb r4, [r2, #5]
+ ldrb r4, [r0, #6]
+ ldrb r3, [r1, #6]
+ eor r4, r3
+ strb r4, [r2, #6]
+ ldrb r3, [r0, #7]
+ ldrb r0, [r1, #7]
+ eor r3, r0
+ strb r3, [r2, #7]
+ add sp, #4
+ pop {r4}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD13_0221C218
+MOD13_0221C218: ; 0x0221C218
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1b4
+ str r0, [sp]
+ add r5, r1, #0
+ add r4, r2, #0
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ ldr r0, _0221C3FC ; =0xA6A6A6A6
+ str r0, [sp, #0x58]
+ str r0, [sp, #0x5c]
+ mov r0, #7
+ add r1, r4, #0
+ and r1, r0
+ cmp r1, #0
+ bne _0221C240
+ ldr r2, [sp, #0x1c8]
+ add r1, r2, #0
+ and r1, r0
+ cmp r1, #0
+ beq _0221C24A
+_0221C240:
+ mov r0, #0
+ add sp, #0x1b4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221C24A:
+ sub r0, r4, #1
+ lsr r0, r0, #3
+ str r0, [sp, #0x14]
+ cmp r0, #2
+ bge _0221C25E
+ mov r0, #0
+ add sp, #0x1b4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221C25E:
+ add r0, sp, #0x70
+ add r1, r3, #0
+ lsl r2, r2, #3
+ bl MOD13_0221BD20
+ str r0, [sp, #0x18]
+ add r3, sp, #0x60
+ add r2, r5, #0
+ mov r1, #8
+_0221C270:
+ ldrb r0, [r2]
+ add r2, r2, #1
+ strb r0, [r3]
+ add r3, r3, #1
+ sub r1, r1, #1
+ cmp r1, #0
+ bne _0221C270
+ ldr r0, [sp]
+ add r5, #8
+ add r1, r5, #0
+ sub r2, r4, #1
+ bl memcpy
+ mov r0, #5
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x24]
+_0221C294:
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #0xc]
+ cmp r0, #0
+ bgt _0221C29E
+ b _0221C3D4
+_0221C29E:
+ ldr r1, [sp, #0x24]
+ ldr r2, [sp, #0x10]
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ str r0, [sp, #0x28]
+ str r1, [sp, #8]
+_0221C2AC:
+ ldr r0, [sp, #0xc]
+ asr r1, r0, #0x1f
+ lsl r2, r0, #0
+ ldr r0, [sp, #0x28]
+ add r6, r2, r0
+ ldr r0, [sp, #8]
+ adc r1, r0
+ add r2, r1, #0
+ ldr r0, _0221C400 ; =0xFF000000
+ and r2, r0
+ lsr r0, r2, #0x18
+ str r0, [sp, #0x30]
+ add r2, r1, #0
+ ldr r0, _0221C404 ; =0x00FF0000
+ and r2, r0
+ lsr r0, r2, #8
+ str r0, [sp, #0x48]
+ add r2, r1, #0
+ ldr r0, _0221C408 ; =0x0000FF00
+ and r2, r0
+ add r3, r6, #0
+ mov r0, #0
+ and r3, r0
+ lsl r0, r2, #8
+ lsr r5, r3, #0x18
+ orr r5, r0
+ lsr r0, r2, #0x18
+ str r0, [sp, #0x34]
+ add r0, r1, #0
+ mov r2, #0xff
+ and r0, r2
+ add r3, r6, #0
+ mov r2, #0
+ and r3, r2
+ lsl r2, r0, #0x18
+ lsr r4, r3, #8
+ orr r4, r2
+ lsr r0, r0, #8
+ str r0, [sp, #0x38]
+ add r3, r1, #0
+ mov r0, #0
+ and r3, r0
+ add r0, r6, #0
+ ldr r2, _0221C400 ; =0xFF000000
+ and r0, r2
+ lsr r2, r0, #0x18
+ lsl r3, r3, #8
+ orr r3, r2
+ lsl r0, r0, #8
+ str r0, [sp, #0x4c]
+ mov r0, #0
+ and r1, r0
+ add r0, r6, #0
+ ldr r2, _0221C404 ; =0x00FF0000
+ and r0, r2
+ lsr r2, r0, #8
+ str r2, [sp, #0x44]
+ lsl r2, r1, #0x18
+ ldr r1, [sp, #0x44]
+ orr r2, r1
+ lsl r7, r0, #0x18
+ add r1, r6, #0
+ str r1, [sp, #0x40]
+ mov r0, #0xff
+ and r1, r0
+ str r1, [sp, #0x40]
+ lsl r0, r1, #0x18
+ str r0, [sp, #0x3c]
+ ldr r0, _0221C408 ; =0x0000FF00
+ and r6, r0
+ lsl r1, r6, #8
+ ldr r0, [sp, #0x3c]
+ orr r0, r1
+ str r0, [sp, #0x3c]
+ mov r0, #0
+ lsl r1, r0, #0
+ orr r0, r1
+ ldr r1, [sp, #0x3c]
+ orr r2, r1
+ orr r7, r0
+ orr r3, r2
+ ldr r0, [sp, #0x4c]
+ orr r0, r7
+ str r0, [sp, #0x4c]
+ ldr r0, [sp, #0x38]
+ orr r0, r3
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0x4c]
+ orr r4, r0
+ ldr r1, [sp, #0x34]
+ ldr r0, [sp, #0x38]
+ orr r1, r0
+ str r1, [sp, #0x34]
+ orr r5, r4
+ mov r1, #0
+ ldr r0, [sp, #0x34]
+ orr r1, r0
+ ldr r0, [sp, #0x48]
+ orr r0, r5
+ str r0, [sp, #0x48]
+ mov r2, #0
+ orr r2, r1
+ ldr r1, [sp, #0x30]
+ orr r1, r0
+ str r1, [sp, #0x30]
+ str r1, [sp, #0x50]
+ str r2, [sp, #0x54]
+ add r0, sp, #0x60
+ add r1, sp, #0x50
+ lsl r2, r0, #0
+ bl MOD13_0221C1CC
+ ldr r0, [sp, #0xc]
+ sub r0, r0, #1
+ lsl r1, r0, #3
+ ldr r0, [sp]
+ add r4, r0, r1
+ add r3, r4, #0
+ add r2, sp, #0x68
+ mov r1, #8
+_0221C39C:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ cmp r1, #0
+ bne _0221C39C
+ add r0, sp, #0x70
+ ldr r1, [sp, #0x18]
+ add r2, sp, #0x60
+ lsl r3, r2, #0
+ bl MOD13_0221B4D8
+ add r2, sp, #0x68
+ mov r1, #8
+_0221C3BA:
+ ldrb r0, [r2]
+ add r2, r2, #1
+ strb r0, [r4]
+ add r4, r4, #1
+ sub r1, r1, #1
+ cmp r1, #0
+ bne _0221C3BA
+ ldr r0, [sp, #0xc]
+ sub r0, r0, #1
+ str r0, [sp, #0xc]
+ cmp r0, #0
+ ble _0221C3D4
+ b _0221C2AC
+_0221C3D4:
+ ldr r0, [sp, #0x10]
+ sub r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ blt _0221C3E0
+ b _0221C294
+_0221C3E0:
+ add r0, sp, #0x58
+ add r1, sp, #0x60
+ mov r2, #8
+ bl memcmp
+ cmp r0, #0
+ beq _0221C3F2
+ mov r0, #0
+ str r0, [sp, #0x1c]
+_0221C3F2:
+ ldr r0, [sp, #0x1c]
+ add sp, #0x1b4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221C3FC: .word 0xA6A6A6A6
+_0221C400: .word 0xFF000000
+_0221C404: .word 0x00FF0000
+_0221C408: .word 0x0000FF00
+
+ thumb_func_start MOD13_0221C40C
+MOD13_0221C40C: ; 0x0221C40C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1d4
+ str r0, [sp]
+ add r5, r1, #0
+ add r4, r2, #0
+ ldr r0, _0221C608 ; =0xA6A6A6A6
+ str r0, [sp, #0x78]
+ str r0, [sp, #0x7c]
+ mov r0, #7
+ add r1, r4, #0
+ and r1, r0
+ cmp r1, #0
+ bne _0221C430
+ ldr r2, [sp, #0x1e8]
+ add r1, r2, #0
+ and r1, r0
+ cmp r1, #0
+ beq _0221C43A
+_0221C430:
+ mov r0, #0
+ add sp, #0x1d4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221C43A:
+ lsr r0, r4, #3
+ str r0, [sp, #0x14]
+ cmp r0, #2
+ bge _0221C44C
+ mov r0, #0
+ add sp, #0x1d4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221C44C:
+ add r0, sp, #0x90
+ add r1, r3, #0
+ lsl r2, r2, #3
+ bl MOD13_0221BEE4
+ str r0, [sp, #0x18]
+ ldr r0, [sp]
+ add r0, #8
+ add r1, r5, #0
+ add r2, r4, #0
+ bl memcpy
+ add r3, sp, #0x80
+ add r2, sp, #0x78
+ mov r1, #8
+_0221C46A:
+ ldrb r0, [r2]
+ add r2, r2, #1
+ strb r0, [r3]
+ add r3, r3, #1
+ sub r1, r1, #1
+ cmp r1, #0
+ bne _0221C46A
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x38]
+ str r0, [sp, #0x64]
+ str r0, [sp, #0x60]
+ str r0, [sp, #0x5c]
+ str r0, [sp, #0x58]
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x50]
+_0221C494:
+ mov r0, #1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ cmp r0, #1
+ bge _0221C4A0
+ b _0221C5DA
+_0221C4A0:
+ ldr r1, [sp, #0x20]
+ ldr r2, [sp, #0x10]
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ str r0, [sp, #0x24]
+ str r1, [sp, #8]
+_0221C4AE:
+ ldr r0, [sp, #0xc]
+ lsl r1, r0, #3
+ ldr r0, [sp]
+ add r3, r0, r1
+ str r3, [sp, #0x2c]
+ add r2, sp, #0x88
+ mov r1, #8
+_0221C4BC:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ cmp r1, #0
+ bne _0221C4BC
+ add r0, sp, #0x90
+ ldr r1, [sp, #0x18]
+ add r2, sp, #0x80
+ lsl r3, r2, #0
+ bl MOD13_0221B900
+ ldr r0, [sp, #0xc]
+ asr r1, r0, #0x1f
+ lsl r2, r0, #0
+ ldr r0, [sp, #0x24]
+ add r6, r2, r0
+ ldr r0, [sp, #8]
+ adc r1, r0
+ add r2, r1, #0
+ ldr r0, _0221C60C ; =0xFF000000
+ and r2, r0
+ lsr r0, r2, #0x18
+ str r0, [sp, #0x30]
+ add r2, r1, #0
+ ldr r0, _0221C610 ; =0x00FF0000
+ and r2, r0
+ lsr r0, r2, #8
+ str r0, [sp, #0x68]
+ add r2, r1, #0
+ ldr r0, _0221C614 ; =0x0000FF00
+ and r2, r0
+ add r3, r6, #0
+ ldr r0, [sp, #0x64]
+ and r3, r0
+ lsl r0, r2, #8
+ lsr r5, r3, #0x18
+ orr r5, r0
+ lsr r0, r2, #0x18
+ str r0, [sp, #0x3c]
+ add r0, r1, #0
+ mov r2, #0xff
+ and r0, r2
+ add r3, r6, #0
+ ldr r2, [sp, #0x60]
+ and r3, r2
+ lsl r2, r0, #0x18
+ lsr r4, r3, #8
+ orr r4, r2
+ lsr r0, r0, #8
+ str r0, [sp, #0x40]
+ add r3, r1, #0
+ ldr r0, [sp, #0x5c]
+ and r3, r0
+ add r0, r6, #0
+ ldr r2, _0221C60C ; =0xFF000000
+ and r0, r2
+ lsr r2, r0, #0x18
+ lsl r3, r3, #8
+ orr r3, r2
+ lsl r0, r0, #8
+ str r0, [sp, #0x6c]
+ ldr r0, [sp, #0x58]
+ and r1, r0
+ add r0, r6, #0
+ ldr r2, _0221C610 ; =0x00FF0000
+ and r0, r2
+ lsr r2, r0, #8
+ str r2, [sp, #0x54]
+ lsl r2, r1, #0x18
+ ldr r1, [sp, #0x54]
+ orr r2, r1
+ lsl r7, r0, #0x18
+ add r1, r6, #0
+ str r1, [sp, #0x4c]
+ mov r0, #0xff
+ and r1, r0
+ str r1, [sp, #0x4c]
+ lsl r0, r1, #0x18
+ str r0, [sp, #0x44]
+ ldr r0, _0221C614 ; =0x0000FF00
+ and r6, r0
+ lsl r1, r6, #8
+ ldr r0, [sp, #0x44]
+ orr r0, r1
+ str r0, [sp, #0x44]
+ ldr r0, [sp, #0x48]
+ ldr r1, [sp, #0x50]
+ orr r0, r1
+ ldr r1, [sp, #0x44]
+ orr r2, r1
+ orr r7, r0
+ orr r3, r2
+ ldr r0, [sp, #0x6c]
+ orr r0, r7
+ str r0, [sp, #0x6c]
+ ldr r0, [sp, #0x40]
+ orr r0, r3
+ str r0, [sp, #0x40]
+ ldr r0, [sp, #0x6c]
+ orr r4, r0
+ ldr r1, [sp, #0x3c]
+ ldr r0, [sp, #0x40]
+ orr r1, r0
+ str r1, [sp, #0x3c]
+ orr r5, r4
+ ldr r1, [sp, #0x38]
+ ldr r0, [sp, #0x3c]
+ orr r1, r0
+ ldr r0, [sp, #0x68]
+ orr r0, r5
+ str r0, [sp, #0x68]
+ ldr r2, [sp, #0x34]
+ orr r2, r1
+ ldr r1, [sp, #0x30]
+ orr r1, r0
+ str r1, [sp, #0x30]
+ str r1, [sp, #0x70]
+ str r2, [sp, #0x74]
+ add r0, sp, #0x80
+ add r1, sp, #0x70
+ lsl r2, r0, #0
+ bl MOD13_0221C1CC
+ add r3, sp, #0x88
+ mov r2, #8
+_0221C5BA:
+ ldrb r1, [r3]
+ add r3, r3, #1
+ ldr r0, [sp, #0x2c]
+ strb r1, [r0]
+ add r0, r0, #1
+ str r0, [sp, #0x2c]
+ sub r2, r2, #1
+ cmp r2, #0
+ bne _0221C5BA
+ ldr r0, [sp, #0xc]
+ add r1, r0, #1
+ str r1, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bgt _0221C5DA
+ b _0221C4AE
+_0221C5DA:
+ ldr r0, [sp, #0x10]
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #6
+ bge _0221C5E6
+ b _0221C494
+_0221C5E6:
+ add r3, sp, #0x80
+ mov r2, #8
+_0221C5EA:
+ ldrb r1, [r3]
+ add r3, r3, #1
+ ldr r0, [sp]
+ strb r1, [r0]
+ add r0, r0, #1
+ str r0, [sp]
+ sub r2, r2, #1
+ cmp r2, #0
+ bne _0221C5EA
+ mov r0, #1
+ add sp, #0x1d4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_0221C608: .word 0xA6A6A6A6
+_0221C60C: .word 0xFF000000
+_0221C610: .word 0x00FF0000
+_0221C614: .word 0x0000FF00
+
+ thumb_func_start MOD13_0221C618
+MOD13_0221C618: ; 0x0221C618
+ push {r4, lr}
+ bl MOD13_0221C658
+ add r4, r0, #0
+ ldr r0, _0221C64C ; =0x02241B28
+ str r4, [r0]
+ bl MOD13_0221D938
+ cmp r4, #1
+ bne _0221C634
+ mov r1, #6
+ ldr r0, _0221C650 ; =0x02241AE8
+ str r1, [r0]
+ b _0221C63A
+_0221C634:
+ mov r1, #7
+ ldr r0, _0221C650 ; =0x02241AE8
+ str r1, [r0]
+_0221C63A:
+ mov r0, #0
+ mvn r1, r0
+ ldr r0, _0221C654 ; =0x0223F870
+ str r1, [r0]
+ bl MOD13_0221A778
+ pop {r4}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221C64C: .word 0x02241B28
+_0221C650: .word 0x02241AE8
+_0221C654: .word 0x0223F870
+
+ thumb_func_start MOD13_0221C658
+MOD13_0221C658: ; 0x0221C658
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x64
+ mov r4, #0
+ mov r0, #4
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r4, [sp, #0x40]
+ str r4, [sp, #8]
+ str r4, [sp, #0xc]
+ ldr r6, _0221C9E0 ; =0x02241ACC
+ mov r0, #1
+ str r0, [r6]
+ str r4, [sp, #0x10]
+ str r4, [sp, #0x18]
+ str r4, [sp, #0x2c]
+ str r4, [sp, #0x34]
+ mvn r0, r0
+ str r0, [sp, #0x14]
+ str r4, [sp, #0x38]
+ str r4, [sp, #0x24]
+ mvn r0, r4
+ str r0, [sp, #0x28]
+ mov r0, #3
+ mvn r0, r0
+ str r0, [sp, #0x20]
+ mov r0, #2
+ mvn r0, r0
+ str r0, [sp, #0x1c]
+ str r4, [sp, #0x3c]
+ b _0221CA3C
+_0221C694:
+ ldr r0, _0221C9E4 ; =0x000001F4
+ bl OS_Sleep
+ ldr r0, [r6]
+ cmp r0, #0xa
+ bls _0221C6A2
+ b _0221CA3C
+_0221C6A2:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #8]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, pc
+ bx r0
+_0221C6B0: ; jump table
+ .short _0221CA3C - _0221C6B0 + 1 ; case 0
+ .short _0221C6C6 - _0221C6B0 + 1 ; case 1
+ .short _0221C6E6 - _0221C6B0 + 1 ; case 2
+ .short _0221C6FC - _0221C6B0 + 1 ; case 3
+ .short _0221C74C - _0221C6B0 + 1 ; case 4
+ .short _0221C7B6 - _0221C6B0 + 1 ; case 5
+ .short _0221C7D8 - _0221C6B0 + 1 ; case 6
+ .short _0221C880 - _0221C6B0 + 1 ; case 7
+ .short _0221C8DE - _0221C6B0 + 1 ; case 8
+ .short _0221C960 - _0221C6B0 + 1 ; case 9
+ .short _0221C9BA - _0221C6B0 + 1 ; case 10
+_0221C6C6:
+ bl MOD13_0221D478
+ str r0, [sp, #4]
+ cmp r0, #1
+ beq _0221C6D6
+ mov r0, #1
+ str r0, [sp, #0xc]
+ b _0221CA3C
+_0221C6D6:
+ mov r1, #3
+ ldr r0, _0221C9E8 ; =0x02241AE8
+ str r1, [r0]
+ bl MOD13_0221A778
+ mov r0, #2
+ str r0, [r6]
+ b _0221CA3C
+_0221C6E6:
+ bl MOD13_0221D9A0
+ str r0, [sp, #4]
+ cmp r0, #1
+ beq _0221C6F6
+ mov r0, #1
+ str r0, [sp, #0xc]
+ b _0221CA3C
+_0221C6F6:
+ mov r0, #3
+ str r0, [r6]
+ b _0221CA3C
+_0221C6FC:
+ mov r0, #2
+ lsl r1, r0, #0
+ ldr r2, [sp, #0x10]
+ bl FUN_0209A9D0
+ add r4, r0, #0
+ cmp r4, #0
+ bge _0221C716
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ b _0221CA3C
+_0221C716:
+ ldr r2, [sp, #0x18]
+ add r1, sp, #0x44
+ str r2, [r1]
+ str r2, [r1, #4]
+ mov r2, #8
+ add r1, sp, #0x44
+ strb r2, [r1]
+ mov r2, #2
+ strb r2, [r1, #1]
+ ldr r2, _0221C9EC ; =0x000001E6
+ strh r2, [r1, #2]
+ ldr r1, [sp, #0x18]
+ str r1, [sp, #0x48]
+ add r1, sp, #0x44
+ bl FUN_0209A9A4
+ str r0, [sp, #4]
+ cmp r0, #0
+ bge _0221C746
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ b _0221CA3C
+_0221C746:
+ mov r0, #4
+ str r0, [r6]
+ b _0221CA3C
+_0221C74C:
+ bl MOD13_0221AA90
+ ldr r1, _0221C9F0 ; =0x0223F870
+ ldr r1, [r1]
+ cmp r0, r1
+ blo _0221C768
+ add r0, r4, #0
+ bl thunk_FUN_0209996c
+ ldr r0, [sp, #0x1c]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ b _0221CA3C
+_0221C768:
+ mov r1, #8
+ add r0, sp, #0x44
+ strb r1, [r0, #8]
+ ldr r0, _0221C9F4 ; =0x02241B5C
+ add r1, sp, #0x4c
+ bl MOD13_0221CEA4
+ add r0, sp, #0x4c
+ str r0, [sp]
+ add r0, r4, #0
+ ldr r1, _0221C9F8 ; =0x022427E4
+ ldr r2, _0221C9FC ; =0x00000800
+ mov r3, #4
+ bl FUN_0209A880
+ cmp r0, #0
+ bgt _0221C78C
+ b _0221CA3C
+_0221C78C:
+ ldr r0, _0221C9F8 ; =0x022427E4
+ ldr r1, _0221CA00 ; =0x02241B00
+ bl MOD13_0221D0D4
+ cmp r0, #0
+ bne _0221C79A
+ b _0221CA3C
+_0221C79A:
+ bl MOD13_0221AA90
+ ldr r1, _0221CA04 ; =0x00007530
+ add r1, r0, r1
+ ldr r0, _0221C9F0 ; =0x0223F870
+ str r1, [r0]
+ mov r0, #5
+ str r0, [r6]
+ mov r1, #4
+ ldr r0, _0221C9E8 ; =0x02241AE8
+ str r1, [r0]
+ bl MOD13_0221A778
+ b _0221CA3C
+_0221C7B6:
+ ldr r0, _0221C9F8 ; =0x022427E4
+ bl MOD13_0221CFD0
+ add r3, r0, #0
+ ldr r0, _0221CA08 ; =0x02241AC4
+ str r3, [r0]
+ add r0, r4, #0
+ add r1, sp, #0x4c
+ ldr r2, _0221C9F8 ; =0x022427E4
+ bl MOD13_0221D408
+ bl MOD13_0221AA90
+ str r0, [sp, #0x40]
+ mov r0, #6
+ str r0, [r6]
+ b _0221CA3C
+_0221C7D8:
+ bl MOD13_0221AA90
+ ldr r1, _0221C9F0 ; =0x0223F870
+ ldr r1, [r1]
+ cmp r0, r1
+ blo _0221C7F4
+ add r0, r4, #0
+ bl thunk_FUN_0209996c
+ ldr r0, [sp, #0x20]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ b _0221CA3C
+_0221C7F4:
+ add r0, sp, #0x4c
+ str r0, [sp]
+ add r0, r4, #0
+ ldr r1, _0221C9F8 ; =0x022427E4
+ ldr r2, _0221C9FC ; =0x00000800
+ mov r3, #4
+ bl FUN_0209A880
+ cmp r0, #0
+ ble _0221C86A
+ ldr r0, _0221C9F8 ; =0x022427E4
+ mov r1, #3
+ ldr r2, _0221CA0C ; =0x02241FE4
+ ldr r3, _0221C9F4 ; =0x02241B5C
+ bl MOD13_0221D074
+ cmp r0, #0
+ beq _0221C86A
+ ldr r0, _0221CA0C ; =0x02241FE4
+ add r1, sp, #0x54
+ add r2, sp, #0x58
+ bl MOD13_0221D30C
+ add r5, r0, #0
+ ldr r1, [sp, #0x54]
+ ldr r0, _0221CA10 ; =0x00000101
+ cmp r1, r0
+ beq _0221C82E
+ b _0221CA3C
+_0221C82E:
+ bl MOD13_0221AA90
+ str r0, [sp, #0x5c]
+ ldr r2, _0221CA14 ; =0x02241B84
+ mov r1, #8
+_0221C838:
+ ldrb r0, [r5]
+ add r5, r5, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ cmp r1, #0
+ bne _0221C838
+ ldr r0, _0221CA18 ; =0x02241B8C
+ add r1, sp, #0x5c
+ mov r2, #4
+ bl MOD13_0221AAB4
+ ldr r0, [sp, #0x24]
+ str r0, [sp, #8]
+ mov r0, #7
+ str r0, [r6]
+ mov r1, #5
+ ldr r0, _0221C9E8 ; =0x02241AE8
+ str r1, [r0]
+ ldr r1, [sp, #0x28]
+ ldr r0, _0221C9F0 ; =0x0223F870
+ str r1, [r0]
+ bl MOD13_0221A778
+ b _0221CA3C
+_0221C86A:
+ bl MOD13_0221AA90
+ ldr r2, _0221CA1C ; =0x000003E8
+ ldr r1, [sp, #0x40]
+ add r1, r1, r2
+ cmp r0, r1
+ bhs _0221C87A
+ b _0221CA3C
+_0221C87A:
+ mov r0, #5
+ str r0, [r6]
+ b _0221CA3C
+_0221C880:
+ ldr r0, _0221CA0C ; =0x02241FE4
+ ldr r1, _0221CA20 ; =0x00000102
+ ldr r2, _0221CA18 ; =0x02241B8C
+ mov r3, #8
+ bl MOD13_0221D1B4
+ ldr r1, _0221CA24 ; =0x02241AE4
+ str r0, [r1]
+ ldr r0, _0221C9F4 ; =0x02241B5C
+ str r0, [sp]
+ ldr r0, _0221C9F8 ; =0x022427E4
+ mov r1, #4
+ ldr r2, _0221CA0C ; =0x02241FE4
+ ldr r3, _0221CA24 ; =0x02241AE4
+ ldr r3, [r3]
+ bl MOD13_0221D248
+ add r3, r0, #0
+ ldr r0, _0221CA08 ; =0x02241AC4
+ str r3, [r0]
+ add r0, r4, #0
+ add r1, sp, #0x4c
+ ldr r2, _0221C9F8 ; =0x022427E4
+ bl MOD13_0221D408
+ bl MOD13_0221AA90
+ str r0, [sp, #0x40]
+ ldr r7, _0221CA28 ; =0x02241D90
+ ldr r0, [sp, #0x2c]
+ lsl r1, r0, #0
+ lsl r2, r0, #0
+ lsl r3, r0, #0
+ mov r5, #0x12
+ str r5, [sp, #0x30]
+_0221C8C6:
+ stmia r7!, {r0, r1, r2, r3}
+ stmia r7!, {r0, r1, r2, r3}
+ ldr r5, [sp, #0x30]
+ sub r5, r5, #1
+ str r5, [sp, #0x30]
+ cmp r5, #0
+ bne _0221C8C6
+ stmia r7!, {r0, r1, r2, r3}
+ str r0, [r7]
+ mov r0, #8
+ str r0, [r6]
+ b _0221CA3C
+_0221C8DE:
+ add r0, sp, #0x4c
+ str r0, [sp]
+ add r0, r4, #0
+ ldr r1, _0221C9F8 ; =0x022427E4
+ ldr r2, _0221C9FC ; =0x00000800
+ mov r3, #4
+ bl FUN_0209A880
+ cmp r0, #0
+ ble _0221C932
+ ldr r0, _0221C9F8 ; =0x022427E4
+ mov r1, #5
+ ldr r2, _0221CA0C ; =0x02241FE4
+ ldr r3, _0221CA14 ; =0x02241B84
+ bl MOD13_0221D074
+ ldr r1, _0221CA24 ; =0x02241AE4
+ str r0, [r1]
+ cmp r0, #0
+ beq _0221C932
+ ldr r0, _0221CA0C ; =0x02241FE4
+ bl MOD13_0221CCD8
+ cmp r0, #0
+ beq _0221C932
+ ldr r1, _0221CA2C ; =0x02241E90
+ ldr r0, [sp, #0x3c]
+ ldrsb r0, [r1, r0]
+ cmp r0, #0
+ beq _0221C922
+ mov r1, #1
+ ldr r0, _0221CA30 ; =0x02241AB0
+ strb r1, [r0]
+ b _0221C928
+_0221C922:
+ ldr r1, [sp, #0x34]
+ ldr r0, _0221CA30 ; =0x02241AB0
+ strb r1, [r0]
+_0221C928:
+ ldr r0, [sp, #0x38]
+ str r0, [sp, #8]
+ mov r0, #9
+ str r0, [r6]
+ b _0221CA3C
+_0221C932:
+ bl MOD13_0221AA90
+ ldr r2, _0221CA1C ; =0x000003E8
+ ldr r1, [sp, #0x40]
+ add r1, r1, r2
+ cmp r0, r1
+ blo _0221CA3C
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+ cmp r0, #0xa
+ blt _0221C95A
+ add r0, r4, #0
+ bl thunk_FUN_0209996c
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ b _0221CA3C
+_0221C95A:
+ mov r0, #7
+ str r0, [r6]
+ b _0221CA3C
+_0221C960:
+ ldr r0, _0221CA0C ; =0x02241FE4
+ ldr r1, _0221CA34 ; =0x00000301
+ ldr r2, _0221CA30 ; =0x02241AB0
+ mov r3, #1
+ bl MOD13_0221D1B4
+ ldr r1, _0221CA24 ; =0x02241AE4
+ str r0, [r1]
+ ldr r0, _0221CA14 ; =0x02241B84
+ str r0, [sp]
+ ldr r0, _0221C9F8 ; =0x022427E4
+ mov r1, #6
+ ldr r2, _0221CA0C ; =0x02241FE4
+ ldr r3, _0221CA24 ; =0x02241AE4
+ ldr r3, [r3]
+ bl MOD13_0221D248
+ ldr r1, _0221CA08 ; =0x02241AC4
+ str r0, [r1]
+ bl MOD13_0221DD40
+ cmp r0, #7
+ beq _0221C9A0
+ bl MOD13_0221AA90
+ ldr r1, _0221CA1C ; =0x000003E8
+ add r0, r0, r1
+ str r0, [sp, #0x40]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ str r0, [r6]
+ b _0221CA3C
+_0221C9A0:
+ add r0, r4, #0
+ add r1, sp, #0x4c
+ ldr r2, _0221C9F8 ; =0x022427E4
+ ldr r3, _0221CA08 ; =0x02241AC4
+ ldr r3, [r3]
+ bl MOD13_0221D408
+ bl MOD13_0221AA90
+ str r0, [sp, #0x40]
+ mov r0, #0xa
+ str r0, [r6]
+ b _0221CA3C
+_0221C9BA:
+ bl MOD13_0221AA90
+ ldr r2, _0221CA1C ; =0x000003E8
+ ldr r1, [sp, #0x40]
+ add r1, r1, r2
+ cmp r0, r1
+ blo _0221CA3C
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+ cmp r0, #0xa
+ blt _0221CA38
+ mov r0, #1
+ str r0, [sp, #0xc]
+ bl MOD13_0221CA74
+ str r0, [sp, #4]
+ b _0221CA3C
+ nop
+_0221C9E0: .word 0x02241ACC
+_0221C9E4: .word 0x000001F4
+_0221C9E8: .word 0x02241AE8
+_0221C9EC: .word 0x000001E6
+_0221C9F0: .word 0x0223F870
+_0221C9F4: .word 0x02241B5C
+_0221C9F8: .word 0x022427E4
+_0221C9FC: .word 0x00000800
+_0221CA00: .word 0x02241B00
+_0221CA04: .word 0x00007530
+_0221CA08: .word 0x02241AC4
+_0221CA0C: .word 0x02241FE4
+_0221CA10: .word 0x00000101
+_0221CA14: .word 0x02241B84
+_0221CA18: .word 0x02241B8C
+_0221CA1C: .word 0x000003E8
+_0221CA20: .word 0x00000102
+_0221CA24: .word 0x02241AE4
+_0221CA28: .word 0x02241D90
+_0221CA2C: .word 0x02241E90
+_0221CA30: .word 0x02241AB0
+_0221CA34: .word 0x00000301
+_0221CA38:
+ mov r0, #9
+ str r0, [r6]
+_0221CA3C:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ bne _0221CA4C
+ ldr r0, _0221CA70 ; =0x02241AC0
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0221CA4C
+ b _0221C694
+_0221CA4C:
+ cmp r4, #0
+ beq _0221CA56
+ add r0, r4, #0
+ bl thunk_FUN_0209996c
+_0221CA56:
+ ldr r0, _0221CA70 ; =0x02241AC0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0221CA64
+ mov r0, #7
+ mvn r0, r0
+ str r0, [sp, #4]
+_0221CA64:
+ ldr r0, [sp, #4]
+ add sp, #0x64
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_0221CA70: .word 0x02241AC0
+
+ thumb_func_start MOD13_0221CA74
+MOD13_0221CA74: ; 0x0221CA74
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0221CBF0 ; =0x02241CA8
+ ldr r1, _0221CBF4 ; =0x02241E90
+ bl strcpy
+ ldr r1, _0221CBF4 ; =0x02241E90
+ ldr r0, [r1, #0x2c]
+ cmp r0, #3
+ bls _0221CA8E
+ b _0221CBE0
+_0221CA8E:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #8]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, pc
+ bx r0
+_0221CA9C: ; jump table
+ .short _0221CAA4 - _0221CA9C + 1 ; case 0
+ .short _0221CAAC - _0221CA9C + 1 ; case 1
+ .short _0221CBB0 - _0221CA9C + 1 ; case 2
+ .short _0221CBC8 - _0221CA9C + 1 ; case 3
+_0221CAA4:
+ mov r1, #0
+ ldr r0, _0221CBF0 ; =0x02241CA8
+ str r1, [r0, #0x20]
+ b _0221CBE6
+_0221CAAC:
+ ldr r0, [r1, #0x30]
+ cmp r0, #0
+ bne _0221CABA
+ mov r0, #6
+ mvn r0, r0
+ str r0, [sp]
+ b _0221CBE6
+_0221CABA:
+ ldr r6, _0221CBF0 ; =0x02241CA8
+ str r0, [r6, #0x24]
+ mov r0, #0
+ str r0, [sp, #4]
+ add r5, sp, #0x10
+ ldr r7, _0221CBF8 ; =0x02241EF4
+ ldr r4, _0221CBFC ; =0x02241CD0
+ mov r0, #6
+ mvn r0, r0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #4]
+ str r0, [sp, #8]
+_0221CAD2:
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #0x20
+ bl memcpy
+ ldr r1, [sp, #8]
+ add r0, sp, #0x30
+ strb r1, [r0]
+ add r0, r5, #0
+ bl strlen
+ cmp r0, #0x10
+ bhi _0221CB0E
+ cmp r0, #0xa
+ blo _0221CAFE
+ cmp r0, #0xa
+ beq _0221CB38
+ cmp r0, #0xd
+ beq _0221CB48
+ cmp r0, #0x10
+ beq _0221CB72
+ b _0221CB9C
+_0221CAFE:
+ cmp r0, #0
+ bhi _0221CB08
+ cmp r0, #0
+ beq _0221CBA0
+ b _0221CB9C
+_0221CB08:
+ cmp r0, #5
+ beq _0221CB1E
+ b _0221CB9C
+_0221CB0E:
+ cmp r0, #0x1a
+ bhi _0221CB18
+ cmp r0, #0x1a
+ beq _0221CB62
+ b _0221CB9C
+_0221CB18:
+ cmp r0, #0x20
+ beq _0221CB8C
+ b _0221CB9C
+_0221CB1E:
+ mov r0, #1
+ str r0, [r6, #0x20]
+ ldrb r0, [r5]
+ strb r0, [r4]
+ ldrb r0, [r5, #1]
+ strb r0, [r4, #1]
+ ldrb r0, [r5, #2]
+ strb r0, [r4, #2]
+ ldrb r0, [r5, #3]
+ strb r0, [r4, #3]
+ ldrb r0, [r5, #4]
+ strb r0, [r4, #4]
+ b _0221CBA0
+_0221CB38:
+ mov r0, #1
+ str r0, [r6, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #0xa
+ bl MOD13_0221CC08
+ b _0221CBA0
+_0221CB48:
+ mov r0, #2
+ str r0, [r6, #0x20]
+ add r3, r5, #0
+ add r2, r4, #0
+ mov r1, #0xd
+_0221CB52:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ cmp r1, #0
+ bne _0221CB52
+ b _0221CBA0
+_0221CB62:
+ mov r0, #2
+ str r0, [r6, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #0x1a
+ bl MOD13_0221CC08
+ b _0221CBA0
+_0221CB72:
+ mov r0, #3
+ str r0, [r6, #0x20]
+ add r3, r5, #0
+ add r2, r4, #0
+ mov r1, #0x10
+_0221CB7C:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ cmp r1, #0
+ bne _0221CB7C
+ b _0221CBA0
+_0221CB8C:
+ mov r0, #3
+ str r0, [r6, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #0x20
+ bl MOD13_0221CC08
+ b _0221CBA0
+_0221CB9C:
+ ldr r0, [sp, #0xc]
+ str r0, [sp]
+_0221CBA0:
+ add r7, #0x28
+ add r4, #0x20
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #4
+ blt _0221CAD2
+ b _0221CBE6
+_0221CBB0:
+ mov r1, #4
+ ldr r0, _0221CBF0 ; =0x02241CA8
+ str r1, [r0, #0x20]
+ ldr r4, _0221CC00 ; =0x02241D50
+ ldr r3, _0221CC04 ; =0x02241F8C
+ mov r2, #8
+_0221CBBC:
+ ldmia r3!, {r0, r1}
+ stmia r4!, {r0, r1}
+ sub r2, r2, #1
+ cmp r2, #0
+ bne _0221CBBC
+ b _0221CBE6
+_0221CBC8:
+ mov r1, #5
+ ldr r0, _0221CBF0 ; =0x02241CA8
+ str r1, [r0, #0x20]
+ ldr r4, _0221CC00 ; =0x02241D50
+ ldr r3, _0221CC04 ; =0x02241F8C
+ mov r2, #8
+_0221CBD4:
+ ldmia r3!, {r0, r1}
+ stmia r4!, {r0, r1}
+ sub r2, r2, #1
+ cmp r2, #0
+ bne _0221CBD4
+ b _0221CBE6
+_0221CBE0:
+ mov r0, #6
+ mvn r0, r0
+ str r0, [sp]
+_0221CBE6:
+ ldr r0, [sp]
+ add sp, #0x34
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221CBF0: .word 0x02241CA8
+_0221CBF4: .word 0x02241E90
+_0221CBF8: .word 0x02241EF4
+_0221CBFC: .word 0x02241CD0
+_0221CC00: .word 0x02241D50
+_0221CC04: .word 0x02241F8C
+
+ thumb_func_start MOD13_0221CC08
+MOD13_0221CC08: ; 0x0221CC08
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ add r7, r1, #0
+ str r2, [sp]
+ mov r4, #0
+ add r5, r4, #0
+ lsl r0, r2, #0
+ cmp r0, #0
+ ble _0221CCCE
+ str r4, [sp, #4]
+_0221CC1E:
+ ldrsb r0, [r7, r5]
+ cmp r0, #0x63
+ bgt _0221CC7A
+ cmp r0, #0x63
+ bge _0221CC94
+ cmp r0, #0x61
+ bgt _0221CC74
+ cmp r0, #0x61
+ bge _0221CC94
+ add r1, r0, #0
+ sub r1, #0x30
+ cmp r1, #0x16
+ bhi _0221CCA0
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #8]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add r1, pc
+ bx r1
+_0221CC46: ; jump table
+ .short _0221CC8E - _0221CC46 + 1 ; case 0
+ .short _0221CC8E - _0221CC46 + 1 ; case 1
+ .short _0221CC8E - _0221CC46 + 1 ; case 2
+ .short _0221CC8E - _0221CC46 + 1 ; case 3
+ .short _0221CC8E - _0221CC46 + 1 ; case 4
+ .short _0221CC8E - _0221CC46 + 1 ; case 5
+ .short _0221CC8E - _0221CC46 + 1 ; case 6
+ .short _0221CC8E - _0221CC46 + 1 ; case 7
+ .short _0221CC8E - _0221CC46 + 1 ; case 8
+ .short _0221CC8E - _0221CC46 + 1 ; case 9
+ .short _0221CCA0 - _0221CC46 + 1 ; case 10
+ .short _0221CCA0 - _0221CC46 + 1 ; case 11
+ .short _0221CCA0 - _0221CC46 + 1 ; case 12
+ .short _0221CCA0 - _0221CC46 + 1 ; case 13
+ .short _0221CCA0 - _0221CC46 + 1 ; case 14
+ .short _0221CCA0 - _0221CC46 + 1 ; case 15
+ .short _0221CCA0 - _0221CC46 + 1 ; case 16
+ .short _0221CC9A - _0221CC46 + 1 ; case 17
+ .short _0221CC9A - _0221CC46 + 1 ; case 18
+ .short _0221CC9A - _0221CC46 + 1 ; case 19
+ .short _0221CC9A - _0221CC46 + 1 ; case 20
+ .short _0221CC9A - _0221CC46 + 1 ; case 21
+ .short _0221CC9A - _0221CC46 + 1 ; case 22
+_0221CC74:
+ cmp r0, #0x62
+ beq _0221CC94
+ b _0221CCA0
+_0221CC7A:
+ cmp r0, #0x65
+ bgt _0221CC88
+ cmp r0, #0x65
+ bge _0221CC94
+ cmp r0, #0x64
+ beq _0221CC94
+ b _0221CCA0
+_0221CC88:
+ cmp r0, #0x66
+ beq _0221CC94
+ b _0221CCA0
+_0221CC8E:
+ sub r0, #0x30
+ add r4, r4, r0
+ b _0221CCAA
+_0221CC94:
+ sub r0, #0x57
+ add r4, r4, r0
+ b _0221CCAA
+_0221CC9A:
+ sub r0, #0x37
+ add r4, r4, r0
+ b _0221CCAA
+_0221CCA0:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221CCAA:
+ add r0, r5, #0
+ mov r1, #2
+ bl _s32_div_f
+ cmp r1, #0
+ bne _0221CCBA
+ lsl r4, r4, #4
+ b _0221CCC6
+_0221CCBA:
+ add r0, r5, #0
+ mov r1, #2
+ bl _s32_div_f
+ strb r4, [r6, r0]
+ ldr r4, [sp, #4]
+_0221CCC6:
+ add r5, r5, #1
+ ldr r0, [sp]
+ cmp r5, r0
+ blt _0221CC1E
+_0221CCCE:
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+
+ thumb_func_start MOD13_0221CCD8
+MOD13_0221CCD8: ; 0x0221CCD8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r1, r0, #0
+ add r1, #8
+ str r1, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #4]
+ ldrh r2, [r0]
+ asr r3, r2, #8
+ mov r0, #0xff
+ and r3, r0
+ lsl r2, r2, #8
+ ldr r0, _0221CE80 ; =0x0000FF00
+ and r2, r0
+ orr r3, r2
+ lsl r0, r3, #0x10
+ lsr r0, r0, #0x10
+ add r0, r1, r0
+ str r0, [sp]
+ add r0, sp, #8
+ ldr r1, [sp]
+ add r2, sp, #0xc
+ add r3, sp, #0x10
+ bl MOD13_0221D344
+ add r5, r0, #0
+ cmp r5, #0
+ bne _0221CD12
+ b _0221CE76
+_0221CD12:
+ mov r7, #0
+_0221CD14:
+ ldr r0, [sp, #0xc]
+ ldr r1, _0221CE84 ; =0x00000201
+ sub r1, r0, r1
+ cmp r1, #9
+ bls _0221CD20
+ b _0221CE62
+_0221CD20:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #8]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add r1, pc
+ bx r1
+_0221CD2E: ; jump table
+ .short _0221CD42 - _0221CD2E + 1 ; case 0
+ .short _0221CD60 - _0221CD2E + 1 ; case 1
+ .short _0221CD7A - _0221CD2E + 1 ; case 2
+ .short _0221CDA0 - _0221CD2E + 1 ; case 3
+ .short _0221CDC6 - _0221CD2E + 1 ; case 4
+ .short _0221CDE0 - _0221CD2E + 1 ; case 5
+ .short _0221CDE0 - _0221CD2E + 1 ; case 6
+ .short _0221CDE0 - _0221CD2E + 1 ; case 7
+ .short _0221CDE0 - _0221CD2E + 1 ; case 8
+ .short _0221CE40 - _0221CD2E + 1 ; case 9
+_0221CD42:
+ ldr r2, _0221CE88 ; =0x02241E90
+ add r0, r7, #0
+ add r1, r7, #0
+ stmia r2!, {r0, r1}
+ stmia r2!, {r0, r1}
+ stmia r2!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, _0221CE88 ; =0x02241E90
+ add r1, r5, #0
+ ldr r2, [sp, #0x10]
+ bl memcpy
+ mov r0, #1
+ str r0, [sp, #4]
+ b _0221CE62
+_0221CD60:
+ ldrh r1, [r5]
+ asr r2, r1, #8
+ mov r0, #0xff
+ and r2, r0
+ lsl r1, r1, #8
+ ldr r0, _0221CE80 ; =0x0000FF00
+ and r1, r0
+ orr r2, r1
+ lsl r0, r2, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, _0221CE88 ; =0x02241E90
+ str r1, [r0, #0x2c]
+ b _0221CE62
+_0221CD7A:
+ ldrh r1, [r5]
+ asr r2, r1, #8
+ mov r0, #0xff
+ and r2, r0
+ lsl r1, r1, #8
+ ldr r0, _0221CE80 ; =0x0000FF00
+ and r1, r0
+ orr r2, r1
+ lsl r0, r2, #0x10
+ lsr r1, r0, #0x10
+ add r3, r7, #0
+ ldr r2, _0221CE8C ; =0x02241D90
+_0221CD92:
+ ldr r0, _0221CE90 ; =0x0000015C
+ str r1, [r2, r0]
+ add r2, #0x28
+ add r3, r3, #1
+ cmp r3, #4
+ blt _0221CD92
+ b _0221CE62
+_0221CDA0:
+ ldrh r1, [r5]
+ asr r2, r1, #8
+ mov r0, #0xff
+ and r2, r0
+ lsl r1, r1, #8
+ ldr r0, _0221CE80 ; =0x0000FF00
+ and r1, r0
+ orr r2, r1
+ lsl r0, r2, #0x10
+ lsr r2, r0, #0x10
+ add r1, r7, #0
+ ldr r3, _0221CE8C ; =0x02241D90
+_0221CDB8:
+ ldr r0, _0221CE94 ; =0x00000160
+ str r2, [r3, r0]
+ add r3, #0x28
+ add r1, r1, #1
+ cmp r1, #4
+ blt _0221CDB8
+ b _0221CE62
+_0221CDC6:
+ ldrh r1, [r5]
+ asr r2, r1, #8
+ mov r0, #0xff
+ and r2, r0
+ lsl r1, r1, #8
+ ldr r0, _0221CE80 ; =0x0000FF00
+ and r1, r0
+ orr r2, r1
+ lsl r0, r2, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, _0221CE88 ; =0x02241E90
+ str r1, [r0, #0x30]
+ b _0221CE62
+_0221CDE0:
+ ldr r1, _0221CE98 ; =0x00000206
+ sub r1, r0, r1
+ mov r0, #0x28
+ mul r1, r0
+ ldr r0, _0221CE9C ; =0x02241EF4
+ add r0, r0, r1
+ add r1, r7, #0
+ mov r2, #0x20
+ bl Call_FillMemWithValue
+ ldr r0, _0221CE88 ; =0x02241E90
+ ldr r0, [r0, #0x5c]
+ cmp r0, #1
+ bne _0221CE28
+ ldr r1, [sp, #0xc]
+ ldr r0, _0221CE98 ; =0x00000206
+ sub r1, r1, r0
+ mov r0, #0x28
+ mul r1, r0
+ ldr r0, _0221CE9C ; =0x02241EF4
+ add r4, r0, r1
+ add r6, r7, #0
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ ble _0221CE62
+_0221CE12:
+ add r0, r4, #0
+ ldrsb r1, [r5, r7]
+ add r5, r5, #1
+ bl MOD13_0221AA14
+ add r4, r4, r0
+ add r6, r6, #1
+ ldr r0, [sp, #0x10]
+ cmp r6, r0
+ blt _0221CE12
+ b _0221CE62
+_0221CE28:
+ ldr r1, [sp, #0xc]
+ ldr r0, _0221CE98 ; =0x00000206
+ sub r1, r1, r0
+ mov r0, #0x28
+ mul r1, r0
+ ldr r0, _0221CE9C ; =0x02241EF4
+ add r0, r0, r1
+ add r1, r5, #0
+ ldr r2, [sp, #0x10]
+ bl memcpy
+ b _0221CE62
+_0221CE40:
+ ldr r2, _0221CEA0 ; =0x02241F8C
+ add r0, r7, #0
+ add r1, r7, #0
+ stmia r2!, {r0, r1}
+ stmia r2!, {r0, r1}
+ stmia r2!, {r0, r1}
+ stmia r2!, {r0, r1}
+ stmia r2!, {r0, r1}
+ stmia r2!, {r0, r1}
+ stmia r2!, {r0, r1}
+ stmia r2!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, _0221CEA0 ; =0x02241F8C
+ add r1, r5, #0
+ ldr r2, [sp, #0x10]
+ bl memcpy
+_0221CE62:
+ add r0, sp, #8
+ ldr r1, [sp]
+ add r2, sp, #0xc
+ add r3, sp, #0x10
+ bl MOD13_0221D344
+ add r5, r0, #0
+ cmp r5, #0
+ beq _0221CE76
+ b _0221CD14
+_0221CE76:
+ ldr r0, [sp, #4]
+ add sp, #0x14
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221CE80: .word 0x0000FF00
+_0221CE84: .word 0x00000201
+_0221CE88: .word 0x02241E90
+_0221CE8C: .word 0x02241D90
+_0221CE90: .word 0x0000015C
+_0221CE94: .word 0x00000160
+_0221CE98: .word 0x00000206
+_0221CE9C: .word 0x02241EF4
+_0221CEA0: .word 0x02241F8C
+
+ thumb_func_start MOD13_0221CEA4
+MOD13_0221CEA4: ; 0x0221CEA4
+ push {r4, lr}
+ sub sp, #0x50
+ add r4, r0, #0
+ add r2, r4, #0
+ add r2, #0xc
+ ldr r1, _0221CFB0 ; =0x0223F92C
+ ldrb r0, [r1]
+ strb r0, [r4, #0xc]
+ ldrb r0, [r1, #1]
+ strb r0, [r2, #1]
+ ldrb r0, [r1, #2]
+ strb r0, [r2, #2]
+ ldrb r0, [r1, #3]
+ strb r0, [r2, #3]
+ add r1, sp, #0
+ ldr r0, _0221CFB4 ; =0x02241B3C
+ ldrb r2, [r0]
+ strb r2, [r1]
+ ldrb r2, [r0, #1]
+ strb r2, [r1, #1]
+ ldrb r2, [r0, #2]
+ strb r2, [r1, #2]
+ ldrb r2, [r0, #3]
+ strb r2, [r1, #3]
+ ldrb r2, [r0, #4]
+ strb r2, [r1, #4]
+ ldrb r0, [r0, #5]
+ strb r0, [r1, #5]
+ add r1, sp, #0
+ ldrb r2, [r1]
+ mov r0, #0xfd
+ and r2, r0
+ strb r2, [r1]
+ add r0, sp, #4
+ add r0, #2
+ bl MOD13_0221CFC0
+ ldr r0, _0221CFB8 ; =0x02241B34
+ add r1, sp, #4
+ add r1, #2
+ ldrb r2, [r1]
+ strb r2, [r0]
+ ldrb r2, [r1, #1]
+ strb r2, [r0, #1]
+ ldrb r2, [r1, #2]
+ strb r2, [r0, #2]
+ ldrb r2, [r1, #3]
+ strb r2, [r0, #3]
+ ldrb r2, [r1, #4]
+ strb r2, [r0, #4]
+ ldrb r2, [r1, #5]
+ strb r2, [r0, #5]
+ add r0, sp, #0
+ mov r2, #6
+ bl memcmp
+ cmp r0, #0
+ bgt _0221CF52
+ add r1, sp, #4
+ add r1, #2
+ ldrb r0, [r1]
+ strb r0, [r4]
+ ldrb r0, [r1, #1]
+ strb r0, [r4, #1]
+ ldrb r0, [r1, #2]
+ strb r0, [r4, #2]
+ ldrb r0, [r1, #3]
+ strb r0, [r4, #3]
+ ldrb r0, [r1, #4]
+ strb r0, [r4, #4]
+ ldrb r0, [r1, #5]
+ strb r0, [r4, #5]
+ add r1, r4, #6
+ add r0, sp, #0
+ ldrb r2, [r0]
+ strb r2, [r4, #6]
+ ldrb r2, [r0, #1]
+ strb r2, [r1, #1]
+ ldrb r2, [r0, #2]
+ strb r2, [r1, #2]
+ ldrb r2, [r0, #3]
+ strb r2, [r1, #3]
+ ldrb r2, [r0, #4]
+ strb r2, [r1, #4]
+ ldrb r0, [r0, #5]
+ strb r0, [r1, #5]
+ b _0221CF8A
+_0221CF52:
+ add r1, sp, #0
+ ldrb r0, [r1]
+ strb r0, [r4]
+ ldrb r0, [r1, #1]
+ strb r0, [r4, #1]
+ ldrb r0, [r1, #2]
+ strb r0, [r4, #2]
+ ldrb r0, [r1, #3]
+ strb r0, [r4, #3]
+ ldrb r0, [r1, #4]
+ strb r0, [r4, #4]
+ ldrb r0, [r1, #5]
+ strb r0, [r4, #5]
+ add r1, r4, #6
+ add r0, sp, #4
+ add r0, #2
+ ldrb r2, [r0]
+ strb r2, [r4, #6]
+ ldrb r2, [r0, #1]
+ strb r2, [r1, #1]
+ ldrb r2, [r0, #2]
+ strb r2, [r1, #2]
+ ldrb r2, [r0, #3]
+ strb r2, [r1, #3]
+ ldrb r2, [r0, #4]
+ strb r2, [r1, #4]
+ ldrb r0, [r0, #5]
+ strb r0, [r1, #5]
+_0221CF8A:
+ ldr r0, _0221CFBC ; =0x0223F868
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0221CFA4
+ add r0, sp, #0xc
+ add r1, sp, #4
+ add r1, #2
+ bl MOD13_0221A9D8
+ add r0, sp, #0x2c
+ add r1, sp, #0
+ bl MOD13_0221A9D8
+_0221CFA4:
+ mov r0, #1
+ add sp, #0x50
+ pop {r4}
+ pop {r3}
+ bx r3
+ nop
+_0221CFB0: .word 0x0223F92C
+_0221CFB4: .word 0x02241B3C
+_0221CFB8: .word 0x02241B34
+_0221CFBC: .word 0x0223F868
+
+ thumb_func_start MOD13_0221CFC0
+MOD13_0221CFC0: ; 0x0221CFC0
+ push {lr}
+ sub sp, #4
+ bl OS_GetMacAddress
+ mov r0, #1
+ add sp, #4
+ pop {r3}
+ bx r3
+
+ thumb_func_start MOD13_0221CFD0
+MOD13_0221CFD0: ; 0x0221CFD0
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r1, _0221D05C ; =0x00000100
+ add r0, sp, #4
+ strh r1, [r0]
+ ldr r3, _0221D060 ; =0x0223F880
+ add r2, sp, #4
+ add r2, #2
+ mov r1, #7
+_0221CFE4:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ cmp r1, #0
+ bne _0221CFE4
+ ldr r0, _0221D064 ; =0x0223F864
+ ldr r0, [r0]
+ mov r1, #1
+ add r2, sp, #4
+ mov r3, #2
+ bl MOD13_0221D1E0
+ mov r1, #2
+ add r2, sp, #4
+ add r3, r1, #0
+ bl MOD13_0221D1E0
+ ldr r1, _0221D068 ; =0x02241B00
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _0221D01C
+ mov r1, #5
+ add r2, sp, #4
+ mov r3, #2
+ bl MOD13_0221D1E0
+_0221D01C:
+ mov r1, #3
+ add r2, sp, #4
+ add r2, #2
+ mov r3, #7
+ bl MOD13_0221D1E0
+ add r3, r0, #0
+ ldr r1, _0221D068 ; =0x02241B00
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _0221D03E
+ mov r1, #4
+ ldr r2, _0221D06C ; =0x02241B34
+ mov r3, #6
+ bl MOD13_0221D1E0
+ add r3, r0, #0
+_0221D03E:
+ mov r0, #0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #2
+ ldr r2, _0221D070 ; =0x02241FE4
+ ldr r4, _0221D064 ; =0x0223F864
+ ldr r4, [r4]
+ sub r3, r3, r4
+ add r3, #8
+ bl MOD13_0221D248
+ add sp, #0x10
+ pop {r4}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221D05C: .word 0x00000100
+_0221D060: .word 0x0223F880
+_0221D064: .word 0x0223F864
+_0221D068: .word 0x02241B00
+_0221D06C: .word 0x02241B34
+_0221D070: .word 0x02241FE4
+
+ thumb_func_start MOD13_0221D074
+MOD13_0221D074: ; 0x0221D074
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r6, r2, #0
+ add r4, r3, #0
+ add r1, sp, #4
+ add r2, sp, #8
+ bl MOD13_0221D398
+ add r1, r0, #0
+ cmp r1, #0
+ bne _0221D096
+ mov r0, #0
+ add sp, #0x10
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_0221D096:
+ ldr r0, [sp, #4]
+ cmp r0, r5
+ beq _0221D0A6
+ mov r0, #0
+ add sp, #0x10
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+_0221D0A6:
+ cmp r4, #0
+ beq _0221D0C0
+ mov r0, #0x10
+ str r0, [sp]
+ add r0, r6, #0
+ ldr r2, [sp, #8]
+ add r3, r4, #0
+ bl MOD13_0221C218
+ ldr r0, [sp, #8]
+ sub r0, #8
+ str r0, [sp, #8]
+ b _0221D0C8
+_0221D0C0:
+ add r0, r6, #0
+ ldr r2, [sp, #8]
+ bl memcpy
+_0221D0C8:
+ ldr r0, [sp, #8]
+ add sp, #0x10
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_0221D0D4
+MOD13_0221D0D4: ; 0x0221D0D4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r1, [sp]
+ add r1, sp, #0xc
+ add r2, sp, #0x10
+ bl MOD13_0221D398
+ str r0, [sp, #0x1c]
+ mov r7, #0
+ str r7, [sp, #4]
+ str r7, [sp, #8]
+ cmp r0, #0
+ bne _0221D0F8
+ add r0, r7, #0
+ add sp, #0x24
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221D0F8:
+ ldr r1, [sp, #0xc]
+ cmp r1, #1
+ beq _0221D108
+ add r0, r7, #0
+ add sp, #0x24
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221D108:
+ ldr r1, [sp, #0x10]
+ add r6, r0, r1
+ add r0, #8
+ str r0, [sp, #0x1c]
+ add r0, sp, #0x1c
+ add r1, r6, #0
+ add r2, sp, #0x14
+ add r3, sp, #0x18
+ bl MOD13_0221D344
+ cmp r0, #0
+ beq _0221D17C
+ mov r4, #0xff
+ ldr r5, _0221D1B0 ; =0x0000FF00
+_0221D124:
+ ldr r1, [sp, #0x14]
+ cmp r1, #1
+ beq _0221D134
+ cmp r1, #2
+ beq _0221D146
+ cmp r1, #5
+ beq _0221D15A
+ b _0221D16C
+_0221D134:
+ ldrh r0, [r0]
+ asr r1, r0, #8
+ and r1, r4
+ lsl r0, r0, #8
+ and r0, r5
+ orr r1, r0
+ lsl r0, r1, #0x10
+ lsr r7, r0, #0x10
+ b _0221D16C
+_0221D146:
+ ldrh r0, [r0]
+ asr r1, r0, #8
+ and r1, r4
+ lsl r0, r0, #8
+ and r0, r5
+ orr r1, r0
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ b _0221D16C
+_0221D15A:
+ ldrh r0, [r0]
+ asr r1, r0, #8
+ and r1, r4
+ lsl r0, r0, #8
+ and r0, r5
+ orr r1, r0
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+_0221D16C:
+ add r0, sp, #0x1c
+ add r1, r6, #0
+ add r2, sp, #0x14
+ add r3, sp, #0x18
+ bl MOD13_0221D344
+ cmp r0, #0
+ bne _0221D124
+_0221D17C:
+ cmp r7, #1
+ bne _0221D186
+ ldr r0, [sp, #4]
+ cmp r0, #1
+ beq _0221D190
+_0221D186:
+ mov r0, #0
+ add sp, #0x24
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221D190:
+ ldr r0, [sp, #8]
+ cmp r0, #1
+ blt _0221D19E
+ mov r1, #1
+ ldr r0, [sp]
+ str r1, [r0]
+ b _0221D1A4
+_0221D19E:
+ mov r1, #0
+ ldr r0, [sp]
+ str r1, [r0]
+_0221D1A4:
+ mov r0, #1
+ add sp, #0x24
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_0221D1B0: .word 0x0000FF00
+
+ thumb_func_start MOD13_0221D1B4
+MOD13_0221D1B4: ; 0x0221D1B4
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ add r0, r4, #0
+ add r0, #8
+ bl MOD13_0221D1E0
+ sub r0, r0, r4
+ add r1, r0, #0
+ sub r1, #8
+ strh r1, [r4]
+ pop {r4}
+ pop {r3}
+ bx r3
+
+ thumb_func_start MOD13_0221D1E0
+MOD13_0221D1E0: ; 0x0221D1E0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r7, r2, #0
+ add r4, r3, #0
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ strb r0, [r5, #3]
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ asr r2, r0, #8
+ mov r3, #0xff
+ and r2, r3
+ lsl r1, r0, #8
+ ldr r0, _0221D244 ; =0x0000FF00
+ and r1, r0
+ orr r2, r1
+ strh r2, [r5]
+ add r2, r4, #0
+ add r2, #0xb
+ mov r1, #7
+ bic r2, r1
+ sub r6, r2, #4
+ lsl r1, r4, #0x10
+ lsr r2, r1, #0x10
+ asr r1, r2, #8
+ and r1, r3
+ lsl r2, r2, #8
+ and r2, r0
+ orr r1, r2
+ strh r1, [r5, #2]
+ add r5, r5, #4
+ add r0, r5, #0
+ mov r1, #0
+ add r2, r6, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl memcpy
+ add r0, r5, r6
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_0221D244: .word 0x0000FF00
+
+ thumb_func_start MOD13_0221D248
+MOD13_0221D248: ; 0x0221D248
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ str r1, [sp, #4]
+ add r1, r2, #0
+ add r7, r3, #0
+ add r5, r6, #0
+ mov r4, #0
+ strb r4, [r1]
+ strb r4, [r1, #1]
+ strb r4, [r1, #2]
+ strb r4, [r1, #3]
+ strb r4, [r1, #4]
+ strb r4, [r1, #5]
+ strb r4, [r1, #6]
+ strb r4, [r1, #7]
+ add r0, r7, #0
+ sub r0, #8
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ asr r2, r3, #8
+ mov r0, #0xff
+ and r2, r0
+ lsl r3, r3, #8
+ ldr r0, _0221D308 ; =0x0000FF00
+ and r3, r0
+ orr r2, r3
+ strh r2, [r1]
+ ldr r3, [sp, #0x20]
+ cmp r3, #0
+ beq _0221D296
+ mov r0, #0x10
+ str r0, [sp]
+ add r0, r6, #6
+ add r2, r7, #0
+ bl MOD13_0221C40C
+ add r7, #8
+ b _0221D29E
+_0221D296:
+ add r0, r6, #6
+ add r2, r7, #0
+ bl memcpy
+_0221D29E:
+ mov r0, #0
+ strb r0, [r6]
+ strb r0, [r6, #1]
+ strb r0, [r6, #2]
+ strb r0, [r6, #3]
+ strb r0, [r6, #4]
+ strb r0, [r6, #5]
+ ldr r0, [sp, #4]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r3, r0, #8
+ mov r1, #0xff
+ and r3, r1
+ lsl r0, r0, #8
+ ldr r2, _0221D308 ; =0x0000FF00
+ and r0, r2
+ orr r3, r0
+ strh r3, [r6]
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ asr r3, r0, #8
+ and r3, r1
+ lsl r0, r0, #8
+ and r0, r2
+ orr r3, r0
+ strh r3, [r6, #2]
+ add r0, r5, #6
+ add r5, r0, r7
+ add r1, r6, #0
+ cmp r6, r5
+ bhs _0221D2E6
+_0221D2DC:
+ ldrb r0, [r1]
+ add r4, r4, r0
+ add r1, r1, #1
+ cmp r1, r5
+ blo _0221D2DC
+_0221D2E6:
+ lsl r0, r4, #0x10
+ lsr r1, r0, #0x10
+ asr r2, r1, #8
+ mov r0, #0xff
+ and r2, r0
+ lsl r1, r1, #8
+ ldr r0, _0221D308 ; =0x0000FF00
+ and r1, r0
+ orr r2, r1
+ strh r2, [r5]
+ add r0, r5, #2
+ sub r0, r0, r6
+ add sp, #0xc
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_0221D308: .word 0x0000FF00
+
+ thumb_func_start MOD13_0221D30C
+MOD13_0221D30C: ; 0x0221D30C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r3, r2, #0
+ add r2, r0, #0
+ add r2, #8
+ str r2, [sp]
+ ldrh r6, [r0]
+ add r0, sp, #0
+ asr r1, r6, #8
+ mov r5, #0xff
+ and r1, r5
+ lsl r6, r6, #8
+ ldr r5, _0221D340 ; =0x0000FF00
+ and r6, r5
+ orr r1, r6
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r1, r2, r1
+ add r2, r4, #0
+ bl MOD13_0221D344
+ add sp, #8
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221D340: .word 0x0000FF00
+
+ thumb_func_start MOD13_0221D344
+MOD13_0221D344: ; 0x0221D344
+ push {r4, r5, r6, r7}
+ add r5, r0, #0
+ add r4, r2, #0
+ add r2, r3, #0
+ ldr r0, [r5]
+ cmp r0, r1
+ blo _0221D358
+ mov r0, #0
+ pop {r4, r5, r6, r7}
+ bx lr
+_0221D358:
+ ldrh r1, [r0]
+ asr r7, r1, #8
+ mov r3, #0xff
+ and r7, r3
+ lsl r1, r1, #8
+ ldr r6, _0221D394 ; =0x0000FF00
+ and r1, r6
+ orr r7, r1
+ lsl r1, r7, #0x10
+ lsr r1, r1, #0x10
+ str r1, [r4]
+ ldrh r1, [r0, #2]
+ asr r4, r1, #8
+ and r4, r3
+ lsl r1, r1, #8
+ and r1, r6
+ orr r4, r1
+ lsl r1, r4, #0x10
+ lsr r1, r1, #0x10
+ str r1, [r2]
+ add r0, r0, #4
+ ldr r2, [r2]
+ add r2, #0xb
+ mov r1, #7
+ bic r2, r1
+ sub r1, r2, #4
+ add r1, r0, r1
+ str r1, [r5]
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+_0221D394: .word 0x0000FF00
+
+ thumb_func_start MOD13_0221D398
+MOD13_0221D398: ; 0x0221D398
+ push {r4, r5, r6, r7}
+ mov r3, #0
+ ldrh r4, [r0]
+ asr r7, r4, #8
+ mov r5, #0xff
+ and r7, r5
+ lsl r4, r4, #8
+ ldr r6, _0221D404 ; =0x0000FF00
+ and r4, r6
+ orr r7, r4
+ lsl r4, r7, #0x10
+ lsr r4, r4, #0x10
+ str r4, [r1]
+ ldrh r1, [r0, #2]
+ asr r4, r1, #8
+ and r4, r5
+ lsl r1, r1, #8
+ and r1, r6
+ orr r4, r1
+ lsl r1, r4, #0x10
+ lsr r1, r1, #0x10
+ str r1, [r2]
+ add r4, r0, #6
+ ldr r1, [r2]
+ add r4, r4, r1
+ add r2, r0, #0
+ cmp r0, r4
+ bhs _0221D3DA
+_0221D3D0:
+ ldrb r1, [r2]
+ add r3, r3, r1
+ add r2, r2, #1
+ cmp r2, r4
+ blo _0221D3D0
+_0221D3DA:
+ ldrh r2, [r4]
+ lsl r1, r3, #0x10
+ lsr r4, r1, #0x10
+ asr r3, r2, #8
+ mov r1, #0xff
+ and r3, r1
+ lsl r2, r2, #8
+ ldr r1, _0221D404 ; =0x0000FF00
+ and r2, r1
+ orr r3, r2
+ lsl r1, r3, #0x10
+ lsr r1, r1, #0x10
+ cmp r4, r1
+ beq _0221D3FC
+ mov r0, #0
+ pop {r4, r5, r6, r7}
+ bx lr
+_0221D3FC:
+ add r0, r0, #6
+ pop {r4, r5, r6, r7}
+ bx lr
+ nop
+_0221D404: .word 0x0000FF00
+
+ thumb_func_start MOD13_0221D408
+MOD13_0221D408: ; 0x0221D408
+ add r1, r2, #0
+ add r2, r3, #0
+ ldr r3, _0221D410 ; =MOD13_0221D414
+ bx r3
+ .align 2, 0
+_0221D410: .word MOD13_0221D414
+
+ thumb_func_start MOD13_0221D414
+MOD13_0221D414: ; 0x0221D414
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ mov r0, #8
+ add r1, sp, #4
+ strb r0, [r1]
+ mov r0, #2
+ strb r0, [r1, #1]
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #8]
+ ldr r0, _0221D454 ; =0x000001E6
+ strh r0, [r1, #2]
+ bl FUN_02099C78
+ add r1, sp, #0xc
+ bl FUN_0209A174
+ str r4, [sp]
+ add r0, r5, #0
+ add r1, sp, #4
+ add r2, sp, #0xc
+ add r3, r6, #0
+ bl MOD13_0221D458
+ add sp, #0x10
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ nop
+_0221D454: .word 0x000001E6
+
+ thumb_func_start MOD13_0221D458
+MOD13_0221D458: ; 0x0221D458
+ push {lr}
+ sub sp, #4
+ str r1, [sp]
+ add r1, r3, #0
+ ldr r2, [sp, #8]
+ mov r3, #0
+ bl FUN_0209A7D0
+ cmp r0, #0
+ bge _0221D470
+ mov r0, #3
+ mvn r0, r0
+_0221D470:
+ add sp, #4
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_0221D478
+MOD13_0221D478: ; 0x0221D478
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x9c
+ mov r0, #0
+ str r0, [sp, #0x18]
+ mvn r4, r0
+ str r0, [sp, #0x48]
+ ldr r0, _0221D738 ; =0x02241B20
+ ldr r0, [r0]
+ str r0, [sp, #0x10]
+ mov r1, #0x30
+ mul r0, r1
+ str r0, [sp, #0x10]
+ add r0, #0x34
+ str r0, [sp, #0x10]
+ mov r0, #1
+ ldr r1, [sp, #0x10]
+ bl MOD13_0221AA64
+ str r0, [sp, #0x14]
+ cmp r0, #0
+ bne _0221D4A4
+ b _0221D718
+_0221D4A4:
+ mov r0, #1
+ ldr r1, [sp, #0x10]
+ bl MOD13_0221AA64
+ str r0, [sp, #0x18]
+ cmp r0, #0
+ bne _0221D4B4
+ b _0221D718
+_0221D4B4:
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x38]
+ add r6, sp, #0x6c
+ str r0, [sp, #0x34]
+ lsl r7, r0, #0
+ str r0, [sp, #0x28]
+ str r0, [sp, #0x2c]
+ str r0, [sp, #0x30]
+ str r0, [sp, #0x40]
+ b _0221D6E0
+_0221D4CE:
+ bl MOD13_0221AA90
+ ldr r1, _0221D73C ; =0x0223F870
+ ldr r1, [r1]
+ cmp r0, r1
+ blo _0221D4DC
+ b _0221D6F0
+_0221D4DC:
+ ldr r0, [sp, #0x28]
+ lsl r1, r0, #0
+ lsl r2, r0, #0
+ ldr r3, _0221D740 ; =0x0030BFFE
+ bl MOD13_0221DF9C
+ cmp r0, #0
+ bne _0221D4F2
+ mov r0, #1
+ mvn r4, r0
+ b _0221D718
+_0221D4F2:
+ add r0, r6, #0
+ bl OS_CreateAlarm
+ mov r0, #0x13
+ str r0, [sp]
+ add r0, r6, #0
+ ldr r1, _0221D744 ; =0x000FFB10
+ ldr r2, [sp, #0x2c]
+ ldr r3, _0221D748 ; =MOD13_0221DC1C
+ bl OS_SetAlarm
+ mov r5, #1
+ ldr r4, [sp, #0x30]
+_0221D50C:
+ mov r0, #0xa
+ bl OS_Sleep
+ bl MOD13_0221AA90
+ ldr r1, _0221D73C ; =0x0223F870
+ ldr r1, [r1]
+ cmp r0, r1
+ bhs _0221D5A8
+ ldr r0, _0221D74C ; =0x02241AC0
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0221D5A8
+ bl MOD13_0221DC64
+ cmp r0, #0
+ beq _0221D5A4
+_0221D52E:
+ cmp r0, #0x13
+ bhi _0221D59A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #8]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, pc
+ bx r0
+_0221D540: ; jump table
+ .short _0221D59A - _0221D540 + 1 ; case 0
+ .short _0221D59A - _0221D540 + 1 ; case 1
+ .short _0221D59A - _0221D540 + 1 ; case 2
+ .short _0221D59A - _0221D540 + 1 ; case 3
+ .short _0221D59C - _0221D540 + 1 ; case 4
+ .short _0221D56C - _0221D540 + 1 ; case 5
+ .short _0221D59A - _0221D540 + 1 ; case 6
+ .short _0221D59A - _0221D540 + 1 ; case 7
+ .short _0221D59C - _0221D540 + 1 ; case 8
+ .short _0221D59A - _0221D540 + 1 ; case 9
+ .short _0221D596 - _0221D540 + 1 ; case 10
+ .short _0221D59A - _0221D540 + 1 ; case 11
+ .short _0221D59A - _0221D540 + 1 ; case 12
+ .short _0221D59A - _0221D540 + 1 ; case 13
+ .short _0221D59A - _0221D540 + 1 ; case 14
+ .short _0221D59A - _0221D540 + 1 ; case 15
+ .short _0221D59A - _0221D540 + 1 ; case 16
+ .short _0221D59A - _0221D540 + 1 ; case 17
+ .short _0221D59C - _0221D540 + 1 ; case 18
+ .short _0221D568 - _0221D540 + 1 ; case 19
+_0221D568:
+ add r5, r7, #0
+ b _0221D59C
+_0221D56C:
+ ldr r0, _0221D750 ; =0x02241B0C
+ ldr r0, [r0]
+ ldr r1, _0221D738 ; =0x02241B20
+ ldr r1, [r1]
+ bl MOD13_0221E0A8
+ cmp r0, r4
+ ble _0221D59C
+ add r4, r0, #0
+ add r0, r6, #0
+ bl OS_CancelAlarm
+ mov r0, #0x13
+ str r0, [sp]
+ add r0, r6, #0
+ ldr r1, _0221D744 ; =0x000FFB10
+ ldr r2, [sp, #0x34]
+ ldr r3, _0221D748 ; =MOD13_0221DC1C
+ bl OS_SetAlarm
+ b _0221D59C
+_0221D596:
+ ldr r5, [sp, #0x38]
+ b _0221D59C
+_0221D59A:
+ ldr r5, [sp, #0x3c]
+_0221D59C:
+ bl MOD13_0221DC64
+ cmp r0, #0
+ bne _0221D52E
+_0221D5A4:
+ cmp r5, #0
+ bne _0221D50C
+_0221D5A8:
+ add r0, r6, #0
+ bl OS_CancelAlarm
+_0221D5AE:
+ bl MOD13_0221DC64
+ cmp r0, #0
+ bne _0221D5AE
+ ldr r0, _0221D74C ; =0x02241AC0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0221D5C0
+ b _0221D6F0
+_0221D5C0:
+ ldr r0, [sp, #0x40]
+ str r0, [sp, #0xc]
+ ldr r0, _0221D738 ; =0x02241B20
+ ldr r0, [r0]
+ cmp r4, r0
+ blt _0221D5D2
+ mov r0, #5
+ mvn r4, r0
+ b _0221D718
+_0221D5D2:
+ ldr r0, [sp, #0x40]
+ str r0, [sp, #8]
+ ldr r0, _0221D750 ; =0x02241B0C
+ ldr r0, [r0]
+ str r0, [sp, #0x1c]
+ cmp r4, #0
+ ble _0221D66A
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #0x20]
+ add r0, #8
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #0x24]
+ lsl r5, r0, #0
+ add r5, #0x2c
+_0221D5F0:
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x1c]
+ add r1, #0xc
+ mov r2, #0x20
+ bl memcpy
+ ldr r0, [sp, #0x1c]
+ ldrh r1, [r0, #0xa]
+ ldr r0, [sp, #0x24]
+ str r1, [r0, #4]
+ ldr r0, [sp, #0x1c]
+ ldrh r1, [r0, #0xa]
+ ldr r0, [sp, #0x24]
+ add r1, r0, r1
+ ldr r0, [sp, #0x44]
+ strb r0, [r1, #8]
+ ldr r0, [sp, #0x1c]
+ ldrh r1, [r0, #0x2c]
+ mov r0, #0x10
+ and r1, r0
+ cmp r1, #0
+ beq _0221D620
+ mov r1, #1
+ b _0221D622
+_0221D620:
+ ldr r1, [sp, #0x44]
+_0221D622:
+ ldr r0, [sp, #0x24]
+ strh r1, [r0, #0x32]
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #4
+ ldr r1, [sp, #0x1c]
+ ldrb r1, [r1, #4]
+ strb r1, [r5]
+ ldrb r1, [r0, #1]
+ strb r1, [r5, #1]
+ ldrb r1, [r0, #2]
+ strb r1, [r5, #2]
+ ldrb r1, [r0, #3]
+ strb r1, [r5, #3]
+ ldrb r1, [r0, #4]
+ strb r1, [r5, #4]
+ ldrb r0, [r0, #5]
+ strb r0, [r5, #5]
+ ldr r0, [sp, #0x20]
+ add r0, #0x30
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x24]
+ add r0, #0x30
+ str r0, [sp, #0x24]
+ add r5, #0x30
+ ldr r0, [sp, #0xc]
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x1c]
+ add r0, #0xc0
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #8]
+ cmp r0, r4
+ blt _0221D5F0
+_0221D66A:
+ ldr r0, [sp, #0x14]
+ str r4, [r0]
+ ldr r0, _0221D754 ; =0x02241AE8
+ ldr r0, [r0]
+ cmp r0, #1
+ beq _0221D6C6
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ add r2, sp, #0x48
+ bl MOD13_0221D764
+ cmp r0, #0
+ beq _0221D6C6
+ ldr r3, [sp, #0x48]
+ ldr r0, [sp, #0x14]
+ add r2, r0, #4
+ mov r0, #0x30
+ add r1, r3, #0
+ mul r1, r0
+ add r4, r2, r1
+ ldr r0, _0221D758 ; =0x02241AC8
+ str r3, [r0]
+ ldr r0, _0221D75C ; =0x02241BC4
+ add r1, r4, #4
+ bl strcpy
+ ldr r1, _0221D760 ; =0x02241B3C
+ add r0, r4, #0
+ add r0, #0x28
+ add r4, #0x28
+ ldrb r2, [r4]
+ strb r2, [r1]
+ ldrb r2, [r0, #1]
+ strb r2, [r1, #1]
+ ldrb r2, [r0, #2]
+ strb r2, [r1, #2]
+ ldrb r2, [r0, #3]
+ strb r2, [r1, #3]
+ ldrb r2, [r0, #4]
+ strb r2, [r1, #4]
+ ldrb r0, [r0, #5]
+ strb r0, [r1, #5]
+ add r0, sp, #0x4c
+ bl MOD13_0221A9D8
+ b _0221D6F0
+_0221D6C6:
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ bl memcpy
+ mov r1, #2
+ ldr r0, _0221D754 ; =0x02241AE8
+ str r1, [r0]
+ bl MOD13_0221A778
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+_0221D6E0:
+ ldr r0, [sp, #4]
+ cmp r0, #0x1e
+ bge _0221D6F0
+ ldr r0, _0221D74C ; =0x02241AC0
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0221D6F0
+ b _0221D4CE
+_0221D6F0:
+ ldr r0, [sp, #4]
+ cmp r0, #0x1e
+ bge _0221D702
+ bl MOD13_0221AA90
+ ldr r1, _0221D73C ; =0x0223F870
+ ldr r1, [r1]
+ cmp r0, r1
+ bls _0221D708
+_0221D702:
+ mov r0, #2
+ mvn r4, r0
+ b _0221D718
+_0221D708:
+ ldr r0, _0221D74C ; =0x02241AC0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0221D716
+ mov r0, #7
+ mvn r4, r0
+ b _0221D718
+_0221D716:
+ mov r4, #1
+_0221D718:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _0221D722
+ bl MOD13_0221AA50
+_0221D722:
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ beq _0221D72C
+ bl MOD13_0221AA50
+_0221D72C:
+ add r0, r4, #0
+ add sp, #0x9c
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_0221D738: .word 0x02241B20
+_0221D73C: .word 0x0223F870
+_0221D740: .word 0x0030BFFE
+_0221D744: .word 0x000FFB10
+_0221D748: .word MOD13_0221DC1C
+_0221D74C: .word 0x02241AC0
+_0221D750: .word 0x02241B0C
+_0221D754: .word 0x02241AE8
+_0221D758: .word 0x02241AC8
+_0221D75C: .word 0x02241BC4
+_0221D760: .word 0x02241B3C
+
+ thumb_func_start MOD13_0221D764
+MOD13_0221D764: ; 0x0221D764
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x74
+ str r0, [sp]
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp]
+ add r5, r0, #4
+ lsl r0, r1, #0
+ add r4, r0, #4
+ ldr r0, [sp, #0xc]
+ str r0, [sp, #0x20]
+ ldr r0, [sp]
+ ldr r0, [r0]
+ cmp r0, #0
+ bls _0221D832
+ ldr r0, [sp, #0xc]
+ str r0, [sp, #0x28]
+ str r0, [sp, #0x24]
+_0221D78E:
+ add r2, sp, #0x30
+ mov r1, #0x22
+_0221D792:
+ ldr r0, [sp, #0x24]
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ cmp r1, #0
+ bne _0221D792
+ add r0, sp, #0x30
+ add r1, r5, #4
+ mov r2, #0x20
+ bl memcpy
+ ldr r2, [r5]
+ ldr r1, [sp, #0x28]
+ add r0, sp, #0x30
+ strb r1, [r0, r2]
+ lsl r7, r1, #0
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ str r0, [sp, #0x1c]
+ cmp r0, #0
+ bls _0221D816
+ ldr r6, [r5]
+_0221D7BE:
+ cmp r6, #0
+ beq _0221D816
+ cmp r6, #0x20
+ bhi _0221D816
+ cmp r6, #1
+ bne _0221D7D4
+ ldrb r0, [r5, #4]
+ cmp r0, #0
+ beq _0221D816
+ cmp r0, #0x20
+ beq _0221D816
+_0221D7D4:
+ add r0, sp, #0x30
+ bl strlen
+ add r2, r0, #0
+ add r0, sp, #0x30
+ add r1, r4, #4
+ bl memcmp
+ cmp r0, #0
+ bne _0221D80C
+ add r0, r5, #0
+ add r0, #0x28
+ add r1, r4, #0
+ add r1, #0x28
+ mov r2, #4
+ bl memcmp
+ cmp r0, #0
+ bne _0221D80C
+ ldrh r1, [r5, #0x2e]
+ ldrh r0, [r4, #0x2e]
+ cmp r1, r0
+ beq _0221D80C
+ cmp r1, #0
+ bne _0221D80C
+ mov r0, #1
+ str r0, [sp, #0xc]
+ b _0221D816
+_0221D80C:
+ add r4, #0x30
+ add r7, r7, #1
+ ldr r0, [sp, #0x1c]
+ cmp r7, r0
+ blo _0221D7BE
+_0221D816:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ bne _0221D832
+ add r5, #0x30
+ ldr r0, [sp, #4]
+ add r4, r0, #4
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ ldr r0, [sp]
+ ldr r1, [r0]
+ ldr r0, [sp, #0x20]
+ cmp r0, r1
+ blo _0221D78E
+_0221D832:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ bne _0221D91A
+ add r2, sp, #0x50
+ add r2, #2
+ mov r1, #0x22
+ mov r0, #0
+_0221D840:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ cmp r1, #0
+ bne _0221D840
+ mov r0, #0
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ ldr r0, [sp]
+ add r5, r0, #4
+ ldr r0, [sp, #4]
+ add r4, r0, #4
+ ldr r6, [sp, #0x14]
+ ldr r0, [r0]
+ cmp r0, #0
+ bls _0221D8A0
+ add r7, sp, #0x50
+ add r7, #2
+_0221D864:
+ add r0, r7, #0
+ add r1, r4, #4
+ mov r2, #0x20
+ bl memcpy
+ ldr r1, [r4]
+ ldr r0, [sp, #0x14]
+ strb r0, [r7, r1]
+ ldr r0, _0221D934 ; =0x0223F878
+ bl strlen
+ add r2, r0, #0
+ add r0, r7, #0
+ ldr r1, _0221D934 ; =0x0223F878
+ bl memcmp
+ cmp r0, #0
+ bne _0221D894
+ ldrh r0, [r4, #0x2e]
+ cmp r0, #0
+ bne _0221D894
+ mov r0, #1
+ str r0, [sp, #0x18]
+ b _0221D8A0
+_0221D894:
+ add r4, #0x30
+ add r6, r6, #1
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ cmp r6, r0
+ blo _0221D864
+_0221D8A0:
+ mov r0, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp]
+ ldr r0, [r0]
+ cmp r0, #0
+ bls _0221D90A
+ ldr r7, _0221D934 ; =0x0223F878
+ add r4, sp, #0x50
+ add r4, #2
+ ldr r0, [sp, #0x20]
+ str r0, [sp, #0x2c]
+_0221D8B6:
+ add r0, r4, #0
+ add r1, r5, #4
+ mov r2, #0x20
+ bl memcpy
+ ldr r1, [r5]
+ ldr r0, [sp, #0x2c]
+ strb r0, [r4, r1]
+ add r0, r4, #0
+ bl strlen
+ add r6, r0, #0
+ add r0, r7, #0
+ bl strlen
+ cmp r6, r0
+ bne _0221D8F8
+ add r0, r7, #0
+ bl strlen
+ add r2, r0, #0
+ add r0, r4, #0
+ add r1, r7, #0
+ bl memcmp
+ cmp r0, #0
+ bne _0221D8F8
+ ldrh r0, [r5, #0x2e]
+ cmp r0, #0
+ bne _0221D8F8
+ mov r0, #1
+ str r0, [sp, #0x14]
+ b _0221D90A
+_0221D8F8:
+ add r5, #0x30
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ ldr r0, [sp]
+ ldr r1, [r0]
+ ldr r0, [sp, #0x20]
+ cmp r0, r1
+ blo _0221D8B6
+_0221D90A:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _0221D91A
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ bne _0221D91A
+ mov r0, #1
+ str r0, [sp, #0xc]
+_0221D91A:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ beq _0221D92A
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #8]
+ str r1, [r0]
+ mov r0, #1
+ str r0, [sp, #0x10]
+_0221D92A:
+ ldr r0, [sp, #0x10]
+ add sp, #0x74
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221D934: .word 0x0223F878
+
+ thumb_func_start MOD13_0221D938
+MOD13_0221D938: ; 0x0221D938
+ push {r4, r5, r6, lr}
+ mov r5, #1
+ ldr r0, _0221D998 ; =0x02241AD0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0221D982
+ bl MOD13_0221DF5C
+ cmp r0, #0
+ beq _0221D97C
+ mov r4, #0
+ mov r6, #0xa
+_0221D950:
+ add r0, r6, #0
+ bl OS_Sleep
+ bl MOD13_0221DC64
+ cmp r0, #0
+ beq _0221D978
+_0221D95E:
+ cmp r0, #4
+ beq _0221D970
+ cmp r0, #5
+ beq _0221D970
+ cmp r0, #0xe
+ bne _0221D96E
+ add r5, r4, #0
+ b _0221D970
+_0221D96E:
+ add r5, r4, #0
+_0221D970:
+ bl MOD13_0221DC64
+ cmp r0, #0
+ bne _0221D95E
+_0221D978:
+ cmp r5, #0
+ bne _0221D950
+_0221D97C:
+ mov r1, #0
+ ldr r0, _0221D998 ; =0x02241AD0
+ str r1, [r0]
+_0221D982:
+ ldr r0, _0221D99C ; =0x02241AD4
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _0221D992
+ mov r1, #0
+ str r1, [r0]
+ bl THUNK_FUN_02099BC8
+_0221D992:
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221D998: .word 0x02241AD0
+_0221D99C: .word 0x02241AD4
+
+ thumb_func_start MOD13_0221D9A0
+MOD13_0221D9A0: ; 0x0221D9A0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ mov r5, #1
+ mvn r6, r5
+ ldr r0, _0221DACC ; =0x02241B0C
+ ldr r2, [r0]
+ ldr r0, _0221DAD0 ; =0x02241AC8
+ ldr r1, [r0]
+ mov r0, #0xc0
+ mul r1, r0
+ add r7, r2, r1
+ cmp r7, #0
+ bne _0221D9C4
+ mov r0, #0
+ add sp, #0x34
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221D9C4:
+ add r0, r7, #0
+ mov r1, #0
+ ldr r2, _0221DAD4 ; =0x00030000
+ bl MOD13_0221DE44
+ cmp r0, #0
+ bne _0221D9DE
+ lsl r0, r5, #0
+ mvn r0, r0
+ add sp, #0x34
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221D9DE:
+ add r0, sp, #8
+ bl OS_CreateAlarm
+ mov r0, #0x12
+ str r0, [sp]
+ add r0, sp, #8
+ ldr r1, _0221DAD8 ; =0x003FEC42
+ mov r2, #0
+ ldr r3, _0221DADC ; =MOD13_0221DC1C
+ bl OS_SetAlarm
+ mov r4, #0
+ mov r0, #7
+ mvn r0, r0
+ str r0, [sp, #4]
+_0221D9FC:
+ bl MOD13_0221AA90
+ ldr r1, _0221DAE0 ; =0x0223F870
+ ldr r1, [r1]
+ cmp r0, r1
+ blo _0221DA0E
+ mov r0, #2
+ mvn r6, r0
+ b _0221DA94
+_0221DA0E:
+ ldr r0, _0221DAE4 ; =0x02241AC0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0221DA1C
+ mov r0, #7
+ mvn r6, r0
+ b _0221DA94
+_0221DA1C:
+ mov r0, #0xa
+ bl OS_Sleep
+ bl MOD13_0221DC64
+ cmp r0, #0
+ beq _0221DA90
+_0221DA2A:
+ cmp r0, #0xc
+ bgt _0221DA44
+ cmp r0, #0xc
+ bge _0221DA5A
+ cmp r0, #5
+ bgt _0221DA86
+ cmp r0, #4
+ blt _0221DA86
+ cmp r0, #4
+ beq _0221DA88
+ cmp r0, #5
+ beq _0221DA88
+ b _0221DA86
+_0221DA44:
+ cmp r0, #0x13
+ bgt _0221DA86
+ cmp r0, #0xd
+ blt _0221DA86
+ cmp r0, #0xd
+ beq _0221DA60
+ cmp r0, #0x12
+ beq _0221DA88
+ cmp r0, #0x13
+ beq _0221DA88
+ b _0221DA86
+_0221DA5A:
+ add r5, r4, #0
+ mov r6, #1
+ b _0221DA88
+_0221DA60:
+ ldr r0, _0221DAE4 ; =0x02241AC0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0221DA6E
+ add r5, r4, #0
+ ldr r6, [sp, #4]
+ b _0221DA88
+_0221DA6E:
+ add r0, r7, #0
+ add r1, r4, #0
+ ldr r2, _0221DAD4 ; =0x00030000
+ bl MOD13_0221DE44
+ cmp r0, #0
+ bne _0221DA88
+ add r0, r6, #0
+ add sp, #0x34
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221DA86:
+ add r5, r4, #0
+_0221DA88:
+ bl MOD13_0221DC64
+ cmp r0, #0
+ bne _0221DA2A
+_0221DA90:
+ cmp r5, #0
+ bne _0221D9FC
+_0221DA94:
+ add r0, sp, #8
+ bl OS_CancelAlarm
+_0221DA9A:
+ bl MOD13_0221DC64
+ cmp r0, #0
+ bne _0221DA9A
+ cmp r6, #0
+ ble _0221DAC2
+ mov r1, #1
+ ldr r0, _0221DAE8 ; =0x02241AD0
+ str r1, [r0]
+ ldr r0, _0221DAEC ; =0x0223F8D4
+ bl FUN_0209A2C0
+ cmp r0, #0
+ bge _0221DABC
+ mov r0, #1
+ mvn r6, r0
+ b _0221DAC2
+_0221DABC:
+ mov r1, #1
+ ldr r0, _0221DAF0 ; =0x02241AD4
+ str r1, [r0]
+_0221DAC2:
+ add r0, r6, #0
+ add sp, #0x34
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221DACC: .word 0x02241B0C
+_0221DAD0: .word 0x02241AC8
+_0221DAD4: .word 0x00030000
+_0221DAD8: .word 0x003FEC42
+_0221DADC: .word MOD13_0221DC1C
+_0221DAE0: .word 0x0223F870
+_0221DAE4: .word 0x02241AC0
+_0221DAE8: .word 0x02241AD0
+_0221DAEC: .word 0x0223F8D4
+_0221DAF0: .word 0x02241AD4
+
+ thumb_func_start MOD13_0221DAF4
+MOD13_0221DAF4: ; 0x0221DAF4
+ push {r4, r5, r6, lr}
+ mov r5, #1
+ bl MOD13_0221DEF4
+ cmp r0, #0
+ beq _0221DB30
+ mov r4, #0
+ mov r6, #0xa
+_0221DB04:
+ add r0, r6, #0
+ bl OS_Sleep
+ bl MOD13_0221DC64
+ cmp r0, #0
+ beq _0221DB2C
+_0221DB12:
+ cmp r0, #4
+ beq _0221DB24
+ cmp r0, #5
+ beq _0221DB24
+ cmp r0, #0x14
+ bne _0221DB22
+ add r5, r4, #0
+ b _0221DB24
+_0221DB22:
+ add r5, r4, #0
+_0221DB24:
+ bl MOD13_0221DC64
+ cmp r0, #0
+ bne _0221DB12
+_0221DB2C:
+ cmp r5, #0
+ bne _0221DB04
+_0221DB30:
+ ldr r0, _0221DB4C ; =0x02241B04
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0221DB44
+ ldr r1, _0221DB50 ; =0x02241ABC
+ ldr r1, [r1]
+ blx r1
+ mov r1, #0
+ ldr r0, _0221DB4C ; =0x02241B04
+ str r1, [r0]
+_0221DB44:
+ mov r0, #1
+ pop {r4, r5, r6}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221DB4C: .word 0x02241B04
+_0221DB50: .word 0x02241ABC
+
+ thumb_func_start MOD13_0221DB54
+MOD13_0221DB54: ; 0x0221DB54
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r6, r0, #0
+ mov r5, #1
+ ldr r0, _0221DBFC ; =0x02241B20
+ str r6, [r0]
+ bl MOD13_0221DCA4
+ mov r0, #0xd0
+ add r7, r6, #0
+ mul r7, r0
+ ldr r0, _0221DC00 ; =0x000024D0
+ add r1, r7, r0
+ mov r0, #0xc0
+ mul r6, r0
+ add r0, r1, r6
+ ldr r1, _0221DC04 ; =0x02241AB4
+ ldr r1, [r1]
+ blx r1
+ ldr r1, _0221DC08 ; =0x02241B04
+ str r0, [r1]
+ cmp r0, #0
+ bne _0221DB8E
+ mov r0, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221DB8E:
+ mov r3, #0x1f
+ add r1, r0, r3
+ bic r1, r3
+ ldr r0, _0221DC0C ; =0x02241AF0
+ str r1, [r0]
+ ldr r0, _0221DC10 ; =0x00002490
+ add r2, r7, r0
+ add r0, r1, r2
+ add r6, r0, r3
+ bic r6, r3
+ ldr r0, _0221DC14 ; =0x02241B0C
+ str r6, [r0]
+ ldr r0, _0221DC18 ; =MOD13_0221DC28
+ bl MOD13_0221DD4C
+ cmp r0, #0
+ bne _0221DBBC
+ lsl r0, r5, #0
+ mvn r0, r0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221DBBC:
+ mov r0, #0xa
+ bl OS_Sleep
+ bl MOD13_0221DC64
+ cmp r0, #0
+ beq _0221DBEE
+ mov r7, #0
+ mov r1, #1
+ mvn r6, r1
+_0221DBD0:
+ cmp r0, #4
+ beq _0221DBE6
+ cmp r0, #5
+ beq _0221DBE6
+ cmp r0, #6
+ bne _0221DBE2
+ add r5, r7, #0
+ mov r4, #1
+ b _0221DBE6
+_0221DBE2:
+ add r5, r7, #0
+ add r4, r6, #0
+_0221DBE6:
+ bl MOD13_0221DC64
+ cmp r0, #0
+ bne _0221DBD0
+_0221DBEE:
+ cmp r5, #0
+ bne _0221DBBC
+ add r0, r4, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221DBFC: .word 0x02241B20
+_0221DC00: .word 0x000024D0
+_0221DC04: .word 0x02241AB4
+_0221DC08: .word 0x02241B04
+_0221DC0C: .word 0x02241AF0
+_0221DC10: .word 0x00002490
+_0221DC14: .word 0x02241B0C
+_0221DC18: .word MOD13_0221DC28
+
+ thumb_func_start MOD13_0221DC1C
+MOD13_0221DC1C: ; 0x0221DC1C
+ mov r1, #0
+ ldr r3, _0221DC24 ; =MOD13_0221DC28
+ bx r3
+ nop
+_0221DC24: .word MOD13_0221DC28
+
+ thumb_func_start MOD13_0221DC28
+MOD13_0221DC28: ; 0x0221DC28
+ push {r4}
+ sub sp, #4
+ ldr r1, _0221DC58 ; =0x02241B1C
+ ldr r2, [r1]
+ ldr r1, _0221DC5C ; =0x02241B18
+ ldr r3, [r1]
+ add r4, r3, #1
+ cmp r4, r2
+ beq _0221DC50
+ add r2, r2, #3
+ cmp r3, r2
+ beq _0221DC50
+ lsl r3, r3, #2
+ ldr r2, _0221DC60 ; =0x02241B4C
+ str r0, [r2, r3]
+ str r4, [r1]
+ cmp r4, #4
+ blt _0221DC50
+ mov r0, #0
+ str r0, [r1]
+_0221DC50:
+ add sp, #4
+ pop {r4}
+ bx lr
+ nop
+_0221DC58: .word 0x02241B1C
+_0221DC5C: .word 0x02241B18
+_0221DC60: .word 0x02241B4C
+
+ thumb_func_start MOD13_0221DC64
+MOD13_0221DC64: ; 0x0221DC64
+ push {r4, lr}
+ bl OS_DisableInterrupts
+ ldr r3, _0221DC98 ; =0x02241B1C
+ ldr r1, [r3]
+ ldr r2, _0221DC9C ; =0x02241B18
+ ldr r2, [r2]
+ cmp r2, r1
+ bne _0221DC7A
+ mov r4, #0
+ b _0221DC8C
+_0221DC7A:
+ lsl r4, r1, #2
+ ldr r2, _0221DCA0 ; =0x02241B4C
+ ldr r4, [r2, r4]
+ add r1, r1, #1
+ str r1, [r3]
+ cmp r1, #4
+ blt _0221DC8C
+ mov r1, #0
+ str r1, [r3]
+_0221DC8C:
+ bl OS_RestoreInterrupts
+ add r0, r4, #0
+ pop {r4}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221DC98: .word 0x02241B1C
+_0221DC9C: .word 0x02241B18
+_0221DCA0: .word 0x02241B4C
+
+ thumb_func_start MOD13_0221DCA4
+MOD13_0221DCA4: ; 0x0221DCA4
+ push {lr}
+ sub sp, #4
+ bl OS_DisableInterrupts
+ mov r3, #0
+ ldr r1, _0221DCCC ; =0x02241B18
+ str r3, [r1]
+ ldr r1, _0221DCD0 ; =0x02241B1C
+ str r3, [r1]
+ ldr r2, _0221DCD4 ; =0x02241B4C
+ add r1, r3, #0
+_0221DCBA:
+ stmia r2!, {r1}
+ add r3, r3, #1
+ cmp r3, #4
+ blt _0221DCBA
+ bl OS_RestoreInterrupts
+ add sp, #4
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221DCCC: .word 0x02241B18
+_0221DCD0: .word 0x02241B1C
+_0221DCD4: .word 0x02241B4C
+
+ thumb_func_start MOD13_0221DCD8
+MOD13_0221DCD8: ; 0x0221DCD8
+ push {r4, lr}
+ add r4, r1, #0
+ cmp r4, #0
+ beq _0221DCF8
+ cmp r2, #0
+ ble _0221DCF8
+ ldr r0, _0221DD00 ; =0x02241B6C
+ bl OS_LockMutex
+ add r0, r4, #0
+ ldr r1, _0221DD04 ; =0x02241ABC
+ ldr r1, [r1]
+ blx r1
+ ldr r0, _0221DD00 ; =0x02241B6C
+ bl OS_UnlockMutex
+_0221DCF8:
+ pop {r4}
+ pop {r3}
+ bx r3
+ nop
+_0221DD00: .word 0x02241B6C
+_0221DD04: .word 0x02241ABC
+
+ thumb_func_start MOD13_0221DD08
+MOD13_0221DD08: ; 0x0221DD08
+ push {r4, lr}
+ add r4, r1, #0
+ cmp r4, #0
+ ble _0221DD2E
+ ldr r0, _0221DD38 ; =0x02241B6C
+ bl OS_LockMutex
+ add r0, r4, #0
+ ldr r1, _0221DD3C ; =0x02241AB4
+ ldr r1, [r1]
+ blx r1
+ add r4, r0, #0
+ ldr r0, _0221DD38 ; =0x02241B6C
+ bl OS_UnlockMutex
+ add r0, r4, #0
+ pop {r4}
+ pop {r3}
+ bx r3
+_0221DD2E:
+ mov r0, #0
+ pop {r4}
+ pop {r3}
+ bx r3
+ nop
+_0221DD38: .word 0x02241B6C
+_0221DD3C: .word 0x02241AB4
+
+ thumb_func_start MOD13_0221DD40
+MOD13_0221DD40: ; 0x0221DD40
+ ldr r0, _0221DD48 ; =0x02241ADC
+ ldr r0, [r0]
+ bx lr
+ nop
+_0221DD48: .word 0x02241ADC
+
+ thumb_func_start MOD13_0221DD4C
+MOD13_0221DD4C: ; 0x0221DD4C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r6, r0, #0
+ add r5, r1, #0
+ add r7, r2, #0
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ ldr r0, _0221DE20 ; =0x02241AD8
+ str r5, [r0]
+ add r2, r5, #0
+ add r2, #0x63
+ mov r0, #3
+ bic r2, r0
+ ldr r0, _0221DE24 ; =0x02241AB8
+ str r2, [r0]
+ add r1, r2, #0
+ add r1, #0x2f
+ mov r3, #0x1f
+ bic r1, r3
+ ldr r3, _0221DE28 ; =0x02241AEC
+ str r1, [r3]
+ ldr r3, _0221DE2C ; =0x0000231F
+ add r1, r1, r3
+ mov r3, #0x1f
+ bic r1, r3
+ ldr r3, _0221DE30 ; =0x02241AFC
+ str r1, [r3]
+ add r1, #0xdf
+ mov r3, #0x1f
+ bic r1, r3
+ str r1, [r2, #4]
+ ldr r1, [r0]
+ add r3, r5, r7
+ ldr r2, [r1, #4]
+ sub r2, r3, r2
+ str r2, [r1, #8]
+ mov r2, #0
+ ldr r1, [r0]
+ str r2, [r1, #0xc]
+ ldr r1, [r0]
+ mov r0, #3
+ str r0, [r1]
+ ldr r0, _0221DE34 ; =0x02241B30
+ str r6, [r0]
+ ldr r0, _0221DE38 ; =0x02241ADC
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0221DDD2
+ ldr r0, _0221DE28 ; =0x02241AEC
+ ldr r0, [r0]
+ ldr r1, _0221DE3C ; =0x00002300
+ bl FUN_020A7E80
+ cmp r0, #0
+ beq _0221DDCC
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221DDCC:
+ mov r1, #1
+ ldr r0, _0221DE38 ; =0x02241ADC
+ str r1, [r0]
+_0221DDD2:
+ ldr r0, _0221DE38 ; =0x02241ADC
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _0221DE0E
+ ldr r0, _0221DE24 ; =0x02241AB8
+ ldr r0, [r0]
+ ldr r1, _0221DE40 ; =MOD13_0221E178
+ bl FUN_020A7BD4
+ cmp r0, #3
+ beq _0221DDF8
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221DDF8:
+ mov r1, #4
+ ldr r0, _0221DE38 ; =0x02241ADC
+ str r1, [r0]
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221DE0E:
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_0221DE20: .word 0x02241AD8
+_0221DE24: .word 0x02241AB8
+_0221DE28: .word 0x02241AEC
+_0221DE2C: .word 0x0000231F
+_0221DE30: .word 0x02241AFC
+_0221DE34: .word 0x02241B30
+_0221DE38: .word 0x02241ADC
+_0221DE3C: .word 0x00002300
+_0221DE40: .word MOD13_0221E178
+
+ thumb_func_start MOD13_0221DE44
+MOD13_0221DE44: ; 0x0221DE44
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r7, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ ldr r0, _0221DEE4 ; =0x02241B08
+ str r6, [r0]
+ cmp r5, #0
+ beq _0221DE6A
+ add r0, r5, #0
+ ldr r1, _0221DEE8 ; =0x02241AD8
+ ldr r1, [r1]
+ mov r2, #0x60
+ bl MI_CpuCopy8
+ b _0221DE76
+_0221DE6A:
+ ldr r0, _0221DEE8 ; =0x02241AD8
+ ldr r0, [r0]
+ mov r1, #0
+ mov r2, #0x60
+ bl MI_CpuFill8
+_0221DE76:
+ add r0, r7, #0
+ ldr r1, _0221DEEC ; =0x02241AFC
+ ldr r1, [r1]
+ mov r2, #0xc0
+ bl MIi_CpuCopy32
+ bl MOD13_0221E0F4
+ cmp r0, #1
+ bne _0221DEA0
+ mov r1, #8
+ ldr r0, _0221DEF0 ; =0x02241ADC
+ str r1, [r0]
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221DEA0:
+ ldr r0, _0221DEF0 ; =0x02241ADC
+ ldr r0, [r0]
+ cmp r0, #3
+ bne _0221DED2
+ ldr r0, _0221DEEC ; =0x02241AFC
+ ldr r0, [r0]
+ ldr r1, _0221DEE8 ; =0x02241AD8
+ ldr r1, [r1]
+ ldr r2, _0221DEE4 ; =0x02241B08
+ ldr r2, [r2]
+ bl FUN_020A75C0
+ cmp r0, #3
+ bne _0221DED2
+ mov r1, #8
+ ldr r0, _0221DEF0 ; =0x02241ADC
+ str r1, [r0]
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221DED2:
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ nop
+_0221DEE4: .word 0x02241B08
+_0221DEE8: .word 0x02241AD8
+_0221DEEC: .word 0x02241AFC
+_0221DEF0: .word 0x02241ADC
+
+ thumb_func_start MOD13_0221DEF4
+MOD13_0221DEF4: ; 0x0221DEF4
+ push {r4, lr}
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ ldr r0, _0221DF58 ; =0x02241ADC
+ ldr r0, [r0]
+ cmp r0, #3
+ bne _0221DF2E
+ bl FUN_020A7AC8
+ cmp r0, #3
+ beq _0221DF1A
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ pop {r4}
+ pop {r3}
+ bx r3
+_0221DF1A:
+ mov r1, #2
+ ldr r0, _0221DF58 ; =0x02241ADC
+ str r1, [r0]
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ pop {r4}
+ pop {r3}
+ bx r3
+_0221DF2E:
+ bl MOD13_0221E0F4
+ cmp r0, #1
+ bne _0221DF4A
+ mov r1, #2
+ ldr r0, _0221DF58 ; =0x02241ADC
+ str r1, [r0]
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ pop {r4}
+ pop {r3}
+ bx r3
+_0221DF4A:
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ pop {r4}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221DF58: .word 0x02241ADC
+
+ thumb_func_start MOD13_0221DF5C
+MOD13_0221DF5C: ; 0x0221DF5C
+ push {r4, lr}
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ ldr r0, _0221DF98 ; =0x02241ADC
+ ldr r0, [r0]
+ cmp r0, #7
+ bne _0221DF88
+ bl FUN_020A7488
+ cmp r0, #3
+ bne _0221DF88
+ mov r1, #4
+ ldr r0, _0221DF98 ; =0x02241ADC
+ str r1, [r0]
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ pop {r4}
+ pop {r3}
+ bx r3
+_0221DF88:
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ pop {r4}
+ pop {r3}
+ bx r3
+ nop
+_0221DF98: .word 0x02241ADC
+
+ thumb_func_start MOD13_0221DF9C
+MOD13_0221DF9C: ; 0x0221DF9C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ str r3, [sp]
+ bl OS_DisableInterrupts
+ add r7, r0, #0
+ ldr r1, _0221E088 ; =0x02241B10
+ ldr r0, [sp]
+ str r0, [r1]
+ ldr r0, _0221E08C ; =0x02241B44
+ ldr r1, _0221E090 ; =0x02241AF4
+ str r0, [r1]
+ cmp r5, #0
+ beq _0221DFD0
+ mov r2, #0
+_0221DFC0:
+ ldrb r1, [r5]
+ add r5, r5, #1
+ strb r1, [r0]
+ add r0, r0, #1
+ add r2, r2, #1
+ cmp r2, #6
+ blt _0221DFC0
+ b _0221DFDE
+_0221DFD0:
+ mov r1, #0xff
+ mov r2, #6
+ bl MI_CpuFill8
+ ldr r1, _0221E094 ; =0x020FF590
+ ldr r0, _0221E090 ; =0x02241AF4
+ str r1, [r0]
+_0221DFDE:
+ ldr r2, _0221E098 ; =0x02241BA4
+ ldr r0, _0221E09C ; =0x02241AF8
+ str r2, [r0]
+ cmp r4, #0
+ beq _0221E01A
+ cmp r6, #0
+ ble _0221E01A
+ cmp r6, #0x20
+ bge _0221E01A
+ mov r1, #0
+ cmp r6, #0
+ ble _0221E004
+_0221DFF6:
+ ldrb r0, [r4]
+ add r4, r4, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ add r1, r1, #1
+ cmp r1, r6
+ blt _0221DFF6
+_0221E004:
+ cmp r1, #0x20
+ bge _0221E02A
+ ldr r0, _0221E098 ; =0x02241BA4
+ add r2, r0, r1
+ mov r0, #0
+_0221E00E:
+ strb r0, [r2]
+ add r2, r2, #1
+ add r1, r1, #1
+ cmp r1, #0x20
+ blt _0221E00E
+ b _0221E02A
+_0221E01A:
+ ldr r0, _0221E098 ; =0x02241BA4
+ mov r1, #0xff
+ mov r2, #0x20
+ bl MI_CpuFill8
+ ldr r1, _0221E0A0 ; =0x020FF598
+ ldr r0, _0221E09C ; =0x02241AF8
+ str r1, [r0]
+_0221E02A:
+ ldr r0, _0221E0A4 ; =0x02241ADC
+ ldr r0, [r0]
+ cmp r0, #3
+ bne _0221E05A
+ ldr r0, _0221E08C ; =0x02241B44
+ ldr r1, _0221E09C ; =0x02241AF8
+ ldr r1, [r1]
+ ldr r2, _0221E088 ; =0x02241B10
+ ldr r2, [r2]
+ bl FUN_020A7A90
+ cmp r0, #3
+ bne _0221E078
+ mov r1, #6
+ ldr r0, _0221E0A4 ; =0x02241ADC
+ str r1, [r0]
+ add r0, r7, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221E05A:
+ bl MOD13_0221E0F4
+ cmp r0, #1
+ bne _0221E078
+ mov r1, #6
+ ldr r0, _0221E0A4 ; =0x02241ADC
+ str r1, [r0]
+ add r0, r7, #0
+ bl OS_RestoreInterrupts
+ mov r0, #1
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+_0221E078:
+ add r0, r7, #0
+ bl OS_RestoreInterrupts
+ mov r0, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221E088: .word 0x02241B10
+_0221E08C: .word 0x02241B44
+_0221E090: .word 0x02241AF4
+_0221E094: .word 0x020FF590
+_0221E098: .word 0x02241BA4
+_0221E09C: .word 0x02241AF8
+_0221E0A0: .word 0x020FF598
+_0221E0A4: .word 0x02241ADC
+
+ thumb_func_start MOD13_0221E0A8
+MOD13_0221E0A8: ; 0x0221E0A8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r7, r1, #0
+ mov r0, #1
+ bl FUN_020A83D0
+ bl FUN_020A846C
+ add r6, r0, #0
+ cmp r6, #0
+ ble _0221E0E2
+ mov r4, #0
+ cmp r6, #0
+ ble _0221E0E2
+_0221E0C6:
+ cmp r4, r7
+ bge _0221E0E2
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020A8358
+ add r1, r5, #0
+ mov r2, #0xc0
+ bl MIi_CpuCopy32
+ add r4, r4, #1
+ add r5, #0xc0
+ cmp r4, r6
+ blt _0221E0C6
+_0221E0E2:
+ mov r0, #0
+ bl FUN_020A83D0
+ add r0, r6, #0
+ add sp, #4
+ pop {r4, r5, r6, r7}
+ pop {r3}
+ bx r3
+ .align 2, 0
+
+ thumb_func_start MOD13_0221E0F4
+MOD13_0221E0F4: ; 0x0221E0F4
+ push {lr}
+ sub sp, #4
+ ldr r0, _0221E16C ; =0x02241ADC
+ ldr r0, [r0]
+ cmp r0, #8
+ bhi _0221E15C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #8]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add r0, pc
+ bx r0
+_0221E10E: ; jump table
+ .short _0221E15C - _0221E10E + 1 ; case 0
+ .short _0221E146 - _0221E10E + 1 ; case 1
+ .short _0221E15C - _0221E10E + 1 ; case 2
+ .short _0221E15C - _0221E10E + 1 ; case 3
+ .short _0221E15C - _0221E10E + 1 ; case 4
+ .short _0221E120 - _0221E10E + 1 ; case 5
+ .short _0221E15C - _0221E10E + 1 ; case 6
+ .short _0221E136 - _0221E10E + 1 ; case 7
+ .short _0221E15C - _0221E10E + 1 ; case 8
+_0221E120:
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ bl FUN_020A7A90
+ cmp r0, #3
+ beq _0221E164
+ mov r0, #0
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E136:
+ bl FUN_020A7488
+ cmp r0, #3
+ beq _0221E164
+ mov r0, #0
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E146:
+ ldr r0, _0221E170 ; =0x02241AB8
+ ldr r0, [r0]
+ ldr r1, _0221E174 ; =MOD13_0221E178
+ bl FUN_020A7BD4
+ cmp r0, #3
+ beq _0221E164
+ mov r0, #0
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E15C:
+ mov r0, #0
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E164:
+ mov r0, #1
+ add sp, #4
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221E16C: .word 0x02241ADC
+_0221E170: .word 0x02241AB8
+_0221E174: .word MOD13_0221E178
+
+ thumb_func_start MOD13_0221E178
+MOD13_0221E178: ; 0x0221E178
+ push {lr}
+ sub sp, #4
+ cmp r0, #0
+ bne _0221E182
+ b _0221E556
+_0221E182:
+ mov r1, #0
+ ldrsh r2, [r0, r1]
+ cmp r2, #9
+ bls _0221E18C
+ b _0221E548
+_0221E18C:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #8]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add r2, pc
+ bx r2
+_0221E19A: ; jump table
+ .short _0221E548 - _0221E19A + 1 ; case 0
+ .short _0221E1AE - _0221E19A + 1 ; case 1
+ .short _0221E4A0 - _0221E19A + 1 ; case 2
+ .short _0221E25E - _0221E19A + 1 ; case 3
+ .short _0221E2E6 - _0221E19A + 1 ; case 4
+ .short _0221E2A2 - _0221E19A + 1 ; case 5
+ .short _0221E3C0 - _0221E19A + 1 ; case 6
+ .short _0221E4E4 - _0221E19A + 1 ; case 7
+ .short _0221E4FE - _0221E19A + 1 ; case 8
+ .short _0221E510 - _0221E19A + 1 ; case 9
+_0221E1AE:
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ cmp r0, #0
+ bne _0221E244
+ ldr r0, _0221E518 ; =0x02241ADC
+ ldr r2, [r0]
+ cmp r2, #4
+ bne _0221E1D6
+ mov r2, #3
+ str r2, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E1CC
+ b _0221E556
+_0221E1CC:
+ mov r0, #6
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E1D6:
+ cmp r2, #6
+ bne _0221E20C
+ ldr r0, _0221E520 ; =0x02241AF4
+ ldr r0, [r0]
+ ldr r1, _0221E524 ; =0x02241AF8
+ ldr r1, [r1]
+ ldr r2, _0221E528 ; =0x02241B10
+ ldr r2, [r2]
+ bl FUN_020A7A90
+ cmp r0, #3
+ bne _0221E1F0
+ b _0221E556
+_0221E1F0:
+ mov r1, #3
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r1, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E200
+ b _0221E556
+_0221E200:
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E20C:
+ cmp r2, #8
+ beq _0221E212
+ b _0221E556
+_0221E212:
+ ldr r0, _0221E52C ; =0x02241AFC
+ ldr r0, [r0]
+ ldr r1, _0221E530 ; =0x02241AD8
+ ldr r1, [r1]
+ ldr r2, _0221E534 ; =0x02241B08
+ ldr r2, [r2]
+ bl FUN_020A75C0
+ cmp r0, #3
+ bne _0221E228
+ b _0221E556
+_0221E228:
+ mov r1, #3
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r1, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E238
+ b _0221E556
+_0221E238:
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E244:
+ mov r3, #1
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r3, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r3, [r0]
+ cmp r3, #0
+ bne _0221E254
+ b _0221E556
+_0221E254:
+ add r0, r2, #0
+ blx r3
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E25E:
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ cmp r0, #0
+ bne _0221E288
+ ldr r0, _0221E518 ; =0x02241ADC
+ ldr r2, [r0]
+ cmp r2, #6
+ beq _0221E270
+ b _0221E556
+_0221E270:
+ mov r2, #5
+ str r2, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E27E
+ b _0221E556
+_0221E27E:
+ mov r0, #8
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E288:
+ mov r2, #3
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r2, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E298
+ b _0221E556
+_0221E298:
+ mov r0, #9
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E2A2:
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ cmp r0, #0
+ bne _0221E2CC
+ ldr r0, _0221E518 ; =0x02241ADC
+ ldr r2, [r0]
+ cmp r2, #8
+ beq _0221E2B4
+ b _0221E556
+_0221E2B4:
+ mov r2, #7
+ str r2, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E2C2
+ b _0221E556
+_0221E2C2:
+ mov r0, #0xc
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E2CC:
+ mov r2, #3
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r2, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E2DC
+ b _0221E556
+_0221E2DC:
+ mov r0, #0xd
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E2E6:
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ cmp r0, #0
+ bne _0221E3A6
+ ldr r0, _0221E518 ; =0x02241ADC
+ ldr r2, [r0]
+ cmp r2, #4
+ bne _0221E30E
+ mov r2, #3
+ str r2, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E304
+ b _0221E556
+_0221E304:
+ mov r0, #0xa
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E30E:
+ cmp r2, #6
+ bne _0221E344
+ ldr r0, _0221E520 ; =0x02241AF4
+ ldr r0, [r0]
+ ldr r1, _0221E524 ; =0x02241AF8
+ ldr r1, [r1]
+ ldr r2, _0221E528 ; =0x02241B10
+ ldr r2, [r2]
+ bl FUN_020A7A90
+ cmp r0, #3
+ bne _0221E328
+ b _0221E556
+_0221E328:
+ mov r1, #3
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r1, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E338
+ b _0221E556
+_0221E338:
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E344:
+ cmp r2, #2
+ bne _0221E36E
+ bl FUN_020A7AC8
+ cmp r0, #3
+ bne _0221E352
+ b _0221E556
+_0221E352:
+ mov r1, #3
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r1, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E362
+ b _0221E556
+_0221E362:
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E36E:
+ cmp r2, #8
+ beq _0221E374
+ b _0221E556
+_0221E374:
+ ldr r0, _0221E52C ; =0x02241AFC
+ ldr r0, [r0]
+ ldr r1, _0221E530 ; =0x02241AD8
+ ldr r1, [r1]
+ ldr r2, _0221E534 ; =0x02241B08
+ ldr r2, [r2]
+ bl FUN_020A75C0
+ cmp r0, #3
+ bne _0221E38A
+ b _0221E556
+_0221E38A:
+ mov r1, #3
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r1, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E39A
+ b _0221E556
+_0221E39A:
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E3A6:
+ mov r2, #3
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r2, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E3B6
+ b _0221E556
+_0221E3B6:
+ mov r0, #0xb
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E3C0:
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ cmp r0, #0
+ bne _0221E488
+ ldr r0, _0221E518 ; =0x02241ADC
+ ldr r2, [r0]
+ cmp r2, #4
+ bne _0221E3E8
+ mov r2, #3
+ str r2, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E3DE
+ b _0221E556
+_0221E3DE:
+ mov r0, #0xe
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E3E8:
+ cmp r2, #6
+ bne _0221E41E
+ ldr r0, _0221E520 ; =0x02241AF4
+ ldr r0, [r0]
+ ldr r1, _0221E524 ; =0x02241AF8
+ ldr r1, [r1]
+ ldr r2, _0221E528 ; =0x02241B10
+ ldr r2, [r2]
+ bl FUN_020A7A90
+ cmp r0, #3
+ bne _0221E402
+ b _0221E556
+_0221E402:
+ mov r1, #3
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r1, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E412
+ b _0221E556
+_0221E412:
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E41E:
+ cmp r2, #2
+ bne _0221E448
+ bl FUN_020A7AC8
+ cmp r0, #3
+ bne _0221E42C
+ b _0221E556
+_0221E42C:
+ mov r1, #3
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r1, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ bne _0221E43C
+ b _0221E556
+_0221E43C:
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E448:
+ cmp r2, #8
+ bne _0221E47A
+ ldr r0, _0221E52C ; =0x02241AFC
+ ldr r0, [r0]
+ ldr r1, _0221E530 ; =0x02241AD8
+ ldr r1, [r1]
+ ldr r2, _0221E534 ; =0x02241B08
+ ldr r2, [r2]
+ bl FUN_020A75C0
+ cmp r0, #3
+ beq _0221E556
+ mov r1, #3
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r1, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221E556
+ mov r0, #2
+ mov r1, #0
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E47A:
+ cmp r2, #7
+ bne _0221E556
+ mov r1, #3
+ str r1, [r0]
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E488:
+ mov r2, #3
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r2, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221E556
+ mov r0, #0xf
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E4A0:
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ cmp r0, #0
+ bne _0221E4CC
+ ldr r0, _0221E518 ; =0x02241ADC
+ ldr r0, [r0]
+ cmp r0, #2
+ bne _0221E556
+ bl FUN_020A7E0C
+ mov r1, #0
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r1, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221E556
+ mov r0, #0x14
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E4CC:
+ mov r3, #3
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r3, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r3, [r0]
+ cmp r3, #0
+ beq _0221E556
+ add r0, r2, #0
+ blx r3
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E4E4:
+ ldr r0, _0221E518 ; =0x02241ADC
+ ldr r0, [r0]
+ cmp r0, #5
+ bne _0221E556
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221E556
+ mov r0, #5
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E4FE:
+ ldr r0, _0221E51C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221E556
+ mov r0, #4
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E510:
+ ldr r0, _0221E518 ; =0x02241ADC
+ str r1, [r0]
+ ldr r0, _0221E51C ; =0x02241B30
+ b _0221E538
+ .align 2, 0
+_0221E518: .word 0x02241ADC
+_0221E51C: .word 0x02241B30
+_0221E520: .word 0x02241AF4
+_0221E524: .word 0x02241AF8
+_0221E528: .word 0x02241B10
+_0221E52C: .word 0x02241AFC
+_0221E530: .word 0x02241AD8
+_0221E534: .word 0x02241B08
+_0221E538:
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221E556
+ mov r0, #3
+ blx r2
+ add sp, #4
+ pop {r3}
+ bx r3
+_0221E548:
+ ldr r0, _0221E55C ; =0x02241B30
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0221E556
+ mov r0, #1
+ mov r1, #0
+ blx r2
+_0221E556:
+ add sp, #4
+ pop {r3}
+ bx r3
+ .align 2, 0
+_0221E55C: .word 0x02241B30
+
+ .section .rodata
+ ; 0x0223C444
+ .incbin "baserom.nds", 0x2237e4, 0x2828
+
+ .section .data
+ ; 0x0223F7B8
+ .incbin "baserom.nds", 0x226B58, 0x17C
+
+ .section .bss
+ ; 0x02240B34
+ .space 0x24B0
diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s
new file mode 100644
index 00000000..1ace4733
--- /dev/null
+++ b/arm9/modules/14/asm/module_14.s
@@ -0,0 +1,30407 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD14_021D74E0
+MOD14_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ mov r2, #1
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #9
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ mov r2, #0xf
+ mov r0, #3
+ mov r1, #0xa
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ mov r1, #0x87
+ add r0, r5, #0
+ lsl r1, r1, #2
+ mov r2, #9
+ bl FUN_02006268
+ add r4, r0, #0
+ beq _021D7544
+ add r0, r5, #0
+ bl FUN_0200628C
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD14_021DB220
+ mov r0, #0x45
+ lsl r0, r0, #2
+ add r0, r4, r0
+ add r1, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DC76C
+ mov r0, #0x1b
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD14_021D762C
+ mov r1, #0x6a
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r1, _021D7548 ; =MOD14_021D7680
+ add r0, r4, #0
+ bl MOD14_021D7610
+_021D7544:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7548: .word MOD14_021D7680
+
+ thumb_func_start MOD14_021D754C
+MOD14_021D754C: ; 0x021D754C
+ push {r4, lr}
+ bl FUN_02006278
+ mov r1, #0x6b
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ cmp r2, #0
+ beq _021D7568
+ add r1, #8
+ add r1, r4, r1
+ blx r2
+ mov r0, #0
+ pop {r4, pc}
+_021D7568:
+ sub r0, r1, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D75AA
+ ldr r0, _021D75B4 ; =0x021C48B8
+ ldr r2, [r0, #0x48]
+ mov r0, #2
+ lsl r0, r0, #0xa
+ tst r0, r2
+ beq _021D759E
+ sub r1, #0x98
+ ldr r0, [r4, r1]
+ bl MOD14_021DCBC0
+ cmp r0, #1
+ bne _021D759E
+ add r0, r4, #0
+ bl MOD14_021DC394
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x2b
+ bl MOD14_021DCB2C
+ mov r0, #0
+ pop {r4, pc}
+_021D759E:
+ mov r1, #0x6a
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ add r0, r4, #0
+ blx r1
+ pop {r4, pc}
+_021D75AA:
+ bl ErrorHandling
+ mov r0, #1
+ pop {r4, pc}
+ nop
+_021D75B4: .word 0x021C48B8
+
+ thumb_func_start MOD14_021D75B8
+MOD14_021D75B8: ; 0x021D75B8
+ push {r4, lr}
+ bl FUN_02006278
+ mov r1, #0x49
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ add r1, #0x95
+ bl FUN_0206BAE4
+ cmp r0, #0
+ bne _021D75DE
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02029EF8
+ bl FUN_02029F08
+_021D75DE:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCA38
+ add r0, r4, #0
+ bl MOD14_021DB398
+ mov r0, #9
+ bl FUN_020168D0
+ mov r0, #0xa
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021D7600
+MOD14_021D7600: ; 0x021D7600
+ mov r2, #0x6a
+ lsl r2, r2, #2
+ str r1, [r0, r2]
+ mov r1, #0
+ add r2, #8
+ str r1, [r0, r2]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021D7610
+MOD14_021D7610: ; 0x021D7610
+ mov r2, #0x6b
+ lsl r2, r2, #2
+ str r1, [r0, r2]
+ mov r1, #0
+ add r2, #8
+ str r1, [r0, r2]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021D7620
+MOD14_021D7620: ; 0x021D7620
+ mov r1, #0x6b
+ mov r2, #0
+ lsl r1, r1, #2
+ str r2, [r0, r1]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021D762C
+MOD14_021D762C: ; 0x021D762C
+ push {r3, lr}
+ bl MOD14_021DC3CC
+ cmp r0, #4
+ bhi _021D764C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7642: ; jump table
+ .short _021D764C - _021D7642 - 2 ; case 0
+ .short _021D7650 - _021D7642 - 2 ; case 1
+ .short _021D7654 - _021D7642 - 2 ; case 2
+ .short _021D765C - _021D7642 - 2 ; case 3
+ .short _021D7658 - _021D7642 - 2 ; case 4
+_021D764C:
+ ldr r0, _021D7660 ; =MOD14_021D7750
+ pop {r3, pc}
+_021D7650:
+ ldr r0, _021D7664 ; =MOD14_021D79D0
+ pop {r3, pc}
+_021D7654:
+ ldr r0, _021D7668 ; =MOD14_021D7D20
+ pop {r3, pc}
+_021D7658:
+ ldr r0, _021D766C ; =MOD14_021D7F0C
+ pop {r3, pc}
+_021D765C:
+ ldr r0, _021D7670 ; =MOD14_021D8118
+ pop {r3, pc}
+ .align 2, 0
+_021D7660: .word MOD14_021D7750
+_021D7664: .word MOD14_021D79D0
+_021D7668: .word MOD14_021D7D20
+_021D766C: .word MOD14_021D7F0C
+_021D7670: .word MOD14_021D8118
+
+ thumb_func_start MOD14_021D7674
+MOD14_021D7674: ; 0x021D7674
+ mov r1, #0x46
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r2, #1
+ str r2, [r0, #8]
+ bx lr
+
+ thumb_func_start MOD14_021D7680
+MOD14_021D7680: ; 0x021D7680
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D7696
+ cmp r0, #1
+ beq _021D76AA
+ cmp r0, #2
+ beq _021D76CE
+ pop {r3, r4, r5, pc}
+_021D7696:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl MOD14_021DCB2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D76AA:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D76E4
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl MOD14_021DCB2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D76CE:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D76E4
+ add r0, r5, #0
+ bl MOD14_021D7620
+_021D76E4:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021D76E8
+MOD14_021D76E8: ; 0x021D76E8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D76FE
+ cmp r0, #1
+ beq _021D7712
+ cmp r0, #2
+ beq _021D7736
+ pop {r3, r4, r5, pc}
+_021D76FE:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl MOD14_021DCB2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D7712:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D774C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #2
+ bl MOD14_021DCB2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D7736:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #2
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D774C
+ add r0, r5, #0
+ bl MOD14_021D7620
+_021D774C:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021D7750
+MOD14_021D7750: ; 0x021D7750
+ push {r4, lr}
+ mov r1, #0x1b
+ add r4, r0, #0
+ lsl r1, r1, #4
+ ldr r2, [r4, r1]
+ cmp r2, #0
+ beq _021D776C
+ cmp r2, #1
+ bne _021D7764
+ b _021D793E
+_021D7764:
+ cmp r2, #2
+ bne _021D776A
+ b _021D795C
+_021D776A:
+ b _021D7970
+_021D776C:
+ ldr r1, _021D7974 ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #1
+ tst r1, r2
+ beq _021D779C
+ bl MOD14_021DC408
+ cmp r0, #0
+ beq _021D779C
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #3
+ beq _021D7792
+ ldr r1, _021D7978 ; =MOD14_021D8804
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D7970
+_021D7792:
+ ldr r1, _021D797C ; =MOD14_021D8A68
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D7970
+_021D779C:
+ ldr r0, _021D7974 ; =0x021C48B8
+ mov r2, #2
+ ldr r1, [r0, #0x48]
+ tst r1, r2
+ beq _021D77B0
+ ldr r1, _021D7980 ; =MOD14_021D86BC
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D7970
+_021D77B0:
+ ldr r0, [r0, #0x44]
+ lsl r1, r2, #8
+ tst r1, r0
+ beq _021D77C8
+ add r0, r4, #0
+ bl MOD14_021DC2A4
+ ldr r1, _021D7984 ; =MOD14_021DABE8
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D7970
+_021D77C8:
+ add r2, #0xfe
+ add r1, r0, #0
+ tst r1, r2
+ beq _021D77E0
+ add r0, r4, #0
+ bl MOD14_021DC278
+ ldr r1, _021D7984 ; =MOD14_021DABE8
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D7970
+_021D77E0:
+ add r1, r4, #0
+ bl MOD14_021DB5B4
+ cmp r0, #0
+ beq _021D7818
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD14_021DCB2C
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021D780C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+_021D780C:
+ mov r0, #0x1b
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _021D7970
+_021D7818:
+ add r0, r4, #0
+ bl MOD14_021DB9C8
+ cmp r0, #0
+ beq _021D783A
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ beq _021D7862
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D783C
+ cmp r0, #1
+ beq _021D7846
+_021D783A:
+ b _021D792E
+_021D783C:
+ ldr r1, _021D7988 ; =MOD14_021DAC80
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D792E
+_021D7846:
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #3
+ beq _021D785A
+ ldr r1, _021D798C ; =MOD14_021DAF78
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D792E
+_021D785A:
+ ldr r0, _021D7990 ; =0x000005F3
+ bl FUN_020054C8
+ b _021D792E
+_021D7862:
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D7876
+ cmp r0, #1
+ beq _021D78C4
+ cmp r0, #2
+ beq _021D7912
+ b _021D792E
+_021D7876:
+ add r0, r4, #0
+ bl MOD14_021DC558
+ cmp r0, #0
+ bne _021D78BC
+ add r0, r4, #0
+ bl MOD14_021DC3F0
+ cmp r0, #1
+ bne _021D78BC
+ ldr r0, _021D7994 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC170
+ ldr r1, [r4, #8]
+ add r0, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DBE88
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x31
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #1
+ b _021D7930
+_021D78BC:
+ ldr r0, _021D7990 ; =0x000005F3
+ bl FUN_020054C8
+ b _021D792E
+_021D78C4:
+ add r0, r4, #0
+ bl MOD14_021DC558
+ cmp r0, #1
+ bne _021D790A
+ add r0, r4, #0
+ bl MOD14_021DC3F0
+ cmp r0, #1
+ bne _021D790A
+ ldr r0, _021D7994 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC170
+ ldr r1, [r4, #8]
+ add r0, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DBE88
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x31
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #1
+ b _021D7930
+_021D790A:
+ ldr r0, _021D7990 ; =0x000005F3
+ bl FUN_020054C8
+ b _021D792E
+_021D7912:
+ ldr r0, _021D7994 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC180
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x32
+ bl MOD14_021DCB2C
+ mov r0, #1
+ b _021D7930
+_021D792E:
+ mov r0, #0
+_021D7930:
+ cmp r0, #0
+ beq _021D7970
+ mov r0, #0x1b
+ mov r1, #2
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D7970
+_021D793E:
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D7970
+ add r0, r4, #0
+ bl MOD14_021D762C
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD14_021D7600
+ b _021D7970
+_021D795C:
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D7970
+ mov r0, #0x1b
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+_021D7970:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021D7974: .word 0x021C48B8
+_021D7978: .word MOD14_021D8804
+_021D797C: .word MOD14_021D8A68
+_021D7980: .word MOD14_021D86BC
+_021D7984: .word MOD14_021DABE8
+_021D7988: .word MOD14_021DAC80
+_021D798C: .word MOD14_021DAF78
+_021D7990: .word 0x000005F3
+_021D7994: .word 0x000005DD
+
+ thumb_func_start MOD14_021D7998
+MOD14_021D7998: ; 0x021D7998
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD14_021DC430
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0206EA98
+ cmp r0, #0
+ beq _021D79B6
+ mov r0, #0x1e
+ str r0, [r4]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D79B6:
+ add r0, r5, #0
+ mov r1, #0xa1
+ mov r2, #0
+ bl MOD14_021DC58C
+ cmp r0, #0
+ beq _021D79CC
+ mov r0, #0x1d
+ str r0, [r4]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D79CC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021D79D0
+MOD14_021D79D0: ; 0x021D79D0
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r1, #0x1b
+ add r4, r0, #0
+ lsl r1, r1, #4
+ ldr r2, [r4, r1]
+ cmp r2, #6
+ bhi _021D7A20
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021D79EC: ; jump table
+ .short _021D79FA - _021D79EC - 2 ; case 0
+ .short _021D7BD4 - _021D79EC - 2 ; case 1
+ .short _021D7BEE - _021D79EC - 2 ; case 2
+ .short _021D7C58 - _021D79EC - 2 ; case 3
+ .short _021D7C98 - _021D79EC - 2 ; case 4
+ .short _021D7CB6 - _021D79EC - 2 ; case 5
+ .short _021D7CE4 - _021D79EC - 2 ; case 6
+_021D79FA:
+ ldr r1, _021D7D00 ; =0x021C48B8
+ mov r2, #1
+ ldr r1, [r1, #0x48]
+ tst r2, r1
+ beq _021D7A40
+ bl MOD14_021DC3E8
+ cmp r0, #6
+ bne _021D7A16
+ mov r0, #0x1b
+ mov r1, #2
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D7CF8
+_021D7A16:
+ add r0, r4, #0
+ bl MOD14_021DC408
+ cmp r0, #0
+ bne _021D7A22
+_021D7A20:
+ b _021D7CF8
+_021D7A22:
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #3
+ beq _021D7A36
+ ldr r1, _021D7D04 ; =MOD14_021D8804
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D7CF8
+_021D7A36:
+ ldr r1, _021D7D08 ; =MOD14_021D8A68
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D7CF8
+_021D7A40:
+ mov r2, #2
+ tst r2, r1
+ bne _021D7A6A
+ mov r2, #0x10
+ tst r1, r2
+ beq _021D7A56
+ bl MOD14_021DC3E8
+ mov r1, #1
+ tst r0, r1
+ bne _021D7A6A
+_021D7A56:
+ ldr r0, _021D7D00 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x10
+ tst r0, r1
+ beq _021D7A74
+ add r0, r4, #0
+ bl MOD14_021DC3E8
+ cmp r0, #6
+ bne _021D7A74
+_021D7A6A:
+ mov r0, #0x1b
+ mov r1, #2
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D7CF8
+_021D7A74:
+ ldr r0, _021D7D00 ; =0x021C48B8
+ add r1, r4, #0
+ ldr r0, [r0, #0x44]
+ bl MOD14_021DB5B4
+ cmp r0, #0
+ beq _021D7AAE
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD14_021DCB2C
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021D7AA4
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+_021D7AA4:
+ mov r0, #0x1b
+ mov r1, #1
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D7CF8
+_021D7AAE:
+ add r0, r4, #0
+ bl MOD14_021DB9C8
+ cmp r0, #0
+ beq _021D7AD0
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ beq _021D7AF8
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D7AD2
+ cmp r0, #1
+ beq _021D7ADC
+_021D7AD0:
+ b _021D7BC4
+_021D7AD2:
+ ldr r1, _021D7D0C ; =MOD14_021DAC80
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D7BC4
+_021D7ADC:
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #3
+ beq _021D7AF0
+ ldr r1, _021D7D10 ; =MOD14_021DAF78
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D7BC4
+_021D7AF0:
+ ldr r0, _021D7D14 ; =0x000005F3
+ bl FUN_020054C8
+ b _021D7BC4
+_021D7AF8:
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D7B0C
+ cmp r0, #1
+ beq _021D7B5A
+ cmp r0, #2
+ beq _021D7BA8
+ b _021D7BC4
+_021D7B0C:
+ add r0, r4, #0
+ bl MOD14_021DC558
+ cmp r0, #0
+ bne _021D7B52
+ add r0, r4, #0
+ bl MOD14_021DC3F0
+ cmp r0, #1
+ bne _021D7B52
+ ldr r0, _021D7D18 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC170
+ ldr r1, [r4, #8]
+ add r0, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DBE88
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x31
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #1
+ b _021D7BC6
+_021D7B52:
+ ldr r0, _021D7D14 ; =0x000005F3
+ bl FUN_020054C8
+ b _021D7BC4
+_021D7B5A:
+ add r0, r4, #0
+ bl MOD14_021DC558
+ cmp r0, #1
+ bne _021D7BA0
+ add r0, r4, #0
+ bl MOD14_021DC3F0
+ cmp r0, #1
+ bne _021D7BA0
+ ldr r0, _021D7D18 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC170
+ ldr r1, [r4, #8]
+ add r0, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DBE88
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x31
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #1
+ b _021D7BC6
+_021D7BA0:
+ ldr r0, _021D7D14 ; =0x000005F3
+ bl FUN_020054C8
+ b _021D7BC4
+_021D7BA8:
+ ldr r0, _021D7D18 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC180
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x32
+ bl MOD14_021DCB2C
+ mov r0, #1
+ b _021D7BC6
+_021D7BC4:
+ mov r0, #0
+_021D7BC6:
+ cmp r0, #0
+ beq _021D7BE2
+ mov r0, #0x1b
+ mov r1, #6
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D7CF8
+_021D7BD4:
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD14_021DCB98
+ cmp r0, #0
+ bne _021D7BE4
+_021D7BE2:
+ b _021D7CF8
+_021D7BE4:
+ mov r0, #0x1b
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D7CF8
+_021D7BEE:
+ bl MOD14_021DC3C4
+ cmp r0, #0
+ bne _021D7C08
+ ldr r1, _021D7D1C ; =MOD14_021D86BC
+ add r0, r4, #0
+ bl MOD14_021D7610
+ mov r0, #0x1b
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D7CF8
+_021D7C08:
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ beq _021D7C42
+ add r0, r4, #0
+ add r1, sp, #0
+ bl MOD14_021D7998
+ cmp r0, #0
+ beq _021D7C42
+ ldr r0, _021D7D14 ; =0x000005F3
+ bl FUN_020054C8
+ ldr r1, [sp]
+ add r0, r4, #0
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #0x1b
+ mov r1, #5
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D7CF8
+_021D7C42:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x24
+ bl MOD14_021DCB2C
+ mov r0, #0x1b
+ mov r1, #3
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D7CF8
+_021D7C58:
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ mov r1, #0x24
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D7CF8
+ add r0, r4, #0
+ bl MOD14_021DB910
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD14_021DCB2C
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021D7C8E
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+_021D7C8E:
+ mov r0, #0x1b
+ mov r1, #4
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D7CF8
+_021D7C98:
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D7CF8
+ add r0, r4, #0
+ bl MOD14_021D762C
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD14_021D7600
+ b _021D7CF8
+_021D7CB6:
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ mov r1, #0x18
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D7CF8
+ ldr r0, _021D7D00 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D7CF8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #0x1b
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D7CF8
+_021D7CE4:
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D7CF8
+ mov r0, #0x1b
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+_021D7CF8:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D7D00: .word 0x021C48B8
+_021D7D04: .word MOD14_021D8804
+_021D7D08: .word MOD14_021D8A68
+_021D7D0C: .word MOD14_021DAC80
+_021D7D10: .word MOD14_021DAF78
+_021D7D14: .word 0x000005F3
+_021D7D18: .word 0x000005DD
+_021D7D1C: .word MOD14_021D86BC
+
+ thumb_func_start MOD14_021D7D20
+MOD14_021D7D20: ; 0x021D7D20
+ push {r3, r4, r5, lr}
+ mov r3, #0x1b
+ add r4, r0, #0
+ lsl r3, r3, #4
+ ldr r1, [r4, r3]
+ cmp r1, #0
+ beq _021D7D36
+ cmp r1, #1
+ bne _021D7D34
+ b _021D7ECC
+_021D7D34:
+ b _021D7EE8
+_021D7D36:
+ ldr r5, _021D7EEC ; =0x021C48B8
+ add r2, r3, #0
+ ldr r1, [r5, #0x44]
+ add r2, #0x70
+ tst r2, r1
+ beq _021D7D50
+ bl MOD14_021DC2A4
+ ldr r1, _021D7EF0 ; =MOD14_021DABE8
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D7EE8
+_021D7D50:
+ sub r3, #0xa0
+ add r2, r1, #0
+ tst r2, r3
+ beq _021D7D66
+ bl MOD14_021DC278
+ ldr r1, _021D7EF0 ; =MOD14_021DABE8
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D7EE8
+_021D7D66:
+ ldr r3, [r5, #0x48]
+ mov r2, #1
+ tst r2, r3
+ beq _021D7D76
+ ldr r1, _021D7EF4 ; =MOD14_021D8D70
+ bl MOD14_021D7610
+ b _021D7EE8
+_021D7D76:
+ mov r2, #2
+ tst r2, r3
+ beq _021D7D84
+ ldr r1, _021D7EF8 ; =MOD14_021D86BC
+ bl MOD14_021D7610
+ b _021D7EE8
+_021D7D84:
+ add r0, r1, #0
+ add r1, r4, #0
+ bl MOD14_021DB5B4
+ cmp r0, #0
+ beq _021D7DBC
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD14_021DCB2C
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021D7DB2
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+_021D7DB2:
+ mov r0, #0x1b
+ mov r1, #1
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D7EE8
+_021D7DBC:
+ add r0, r4, #0
+ bl MOD14_021DB9C8
+ cmp r0, #0
+ beq _021D7DDE
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ beq _021D7E06
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D7DE0
+ cmp r0, #1
+ beq _021D7DEA
+_021D7DDE:
+ b _021D7EE8
+_021D7DE0:
+ ldr r1, _021D7EFC ; =MOD14_021DAC80
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D7EE8
+_021D7DEA:
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #3
+ beq _021D7DFE
+ ldr r1, _021D7F00 ; =MOD14_021DAF78
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D7EE8
+_021D7DFE:
+ ldr r0, _021D7F04 ; =0x000005F3
+ bl FUN_020054C8
+ b _021D7EE8
+_021D7E06:
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D7E1A
+ cmp r0, #1
+ beq _021D7E66
+ cmp r0, #2
+ beq _021D7EB2
+ b _021D7EE8
+_021D7E1A:
+ add r0, r4, #0
+ bl MOD14_021DC558
+ cmp r0, #0
+ bne _021D7E5E
+ add r0, r4, #0
+ bl MOD14_021DC3F0
+ cmp r0, #1
+ bne _021D7E5E
+ ldr r0, _021D7F08 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC170
+ ldr r1, [r4, #8]
+ add r0, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DBE88
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x31
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ b _021D7EE8
+_021D7E5E:
+ ldr r0, _021D7F04 ; =0x000005F3
+ bl FUN_020054C8
+ b _021D7EE8
+_021D7E66:
+ add r0, r4, #0
+ bl MOD14_021DC558
+ cmp r0, #1
+ bne _021D7EAA
+ add r0, r4, #0
+ bl MOD14_021DC3F0
+ cmp r0, #1
+ bne _021D7EAA
+ ldr r0, _021D7F08 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC170
+ ldr r1, [r4, #8]
+ add r0, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DBE88
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x31
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ b _021D7EE8
+_021D7EAA:
+ ldr r0, _021D7F04 ; =0x000005F3
+ bl FUN_020054C8
+ b _021D7EE8
+_021D7EB2:
+ ldr r0, _021D7F08 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC180
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x32
+ bl MOD14_021DCB2C
+ b _021D7EE8
+_021D7ECC:
+ sub r3, #0x9c
+ ldr r0, [r4, r3]
+ mov r1, #5
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D7EE8
+ add r0, r4, #0
+ bl MOD14_021D762C
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD14_021D7600
+_021D7EE8:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7EEC: .word 0x021C48B8
+_021D7EF0: .word MOD14_021DABE8
+_021D7EF4: .word MOD14_021D8D70
+_021D7EF8: .word MOD14_021D86BC
+_021D7EFC: .word MOD14_021DAC80
+_021D7F00: .word MOD14_021DAF78
+_021D7F04: .word 0x000005F3
+_021D7F08: .word 0x000005DD
+
+ thumb_func_start MOD14_021D7F0C
+MOD14_021D7F0C: ; 0x021D7F0C
+ push {r3, r4, r5, lr}
+ mov r1, #0x1b
+ add r4, r0, #0
+ lsl r1, r1, #4
+ ldr r2, [r4, r1]
+ cmp r2, #0
+ beq _021D7F28
+ cmp r2, #1
+ bne _021D7F20
+ b _021D80BE
+_021D7F20:
+ cmp r2, #2
+ bne _021D7F26
+ b _021D80D6
+_021D7F26:
+ b _021D80F2
+_021D7F28:
+ ldr r3, _021D80F8 ; =0x021C48B8
+ mov r1, #1
+ ldr r5, [r3, #0x48]
+ tst r1, r5
+ beq _021D7F3A
+ ldr r1, _021D80FC ; =MOD14_021D854C
+ bl MOD14_021D7610
+ b _021D80F2
+_021D7F3A:
+ mov r2, #2
+ add r1, r5, #0
+ tst r1, r2
+ beq _021D7F4A
+ ldr r1, _021D8100 ; =MOD14_021D86BC
+ bl MOD14_021D7610
+ b _021D80F2
+_021D7F4A:
+ ldr r3, [r3, #0x44]
+ lsl r1, r2, #8
+ tst r1, r3
+ beq _021D7F60
+ bl MOD14_021DC2A4
+ ldr r1, _021D8104 ; =MOD14_021DABE8
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D80F2
+_021D7F60:
+ add r2, #0xfe
+ add r1, r3, #0
+ tst r1, r2
+ beq _021D7F76
+ bl MOD14_021DC278
+ ldr r1, _021D8104 ; =MOD14_021DABE8
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D80F2
+_021D7F76:
+ add r0, r3, #0
+ add r1, r4, #0
+ bl MOD14_021DB5B4
+ cmp r0, #0
+ beq _021D7FAE
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD14_021DCB2C
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021D7FA4
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+_021D7FA4:
+ mov r0, #0x1b
+ mov r1, #2
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D80F2
+_021D7FAE:
+ add r0, r4, #0
+ bl MOD14_021DB9C8
+ cmp r0, #0
+ beq _021D7FD0
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ beq _021D7FF8
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D7FD2
+ cmp r0, #1
+ beq _021D7FDC
+_021D7FD0:
+ b _021D80F2
+_021D7FD2:
+ ldr r1, _021D8108 ; =MOD14_021DAC80
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D80F2
+_021D7FDC:
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #3
+ beq _021D7FF0
+ ldr r1, _021D810C ; =MOD14_021DAF78
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D80F2
+_021D7FF0:
+ ldr r0, _021D8110 ; =0x000005F3
+ bl FUN_020054C8
+ b _021D80F2
+_021D7FF8:
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D800C
+ cmp r0, #1
+ beq _021D8058
+ cmp r0, #2
+ beq _021D80A4
+ b _021D80F2
+_021D800C:
+ add r0, r4, #0
+ bl MOD14_021DC558
+ cmp r0, #0
+ bne _021D8050
+ add r0, r4, #0
+ bl MOD14_021DC3F0
+ cmp r0, #1
+ bne _021D8050
+ ldr r0, _021D8114 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC170
+ ldr r1, [r4, #8]
+ add r0, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DBE88
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x31
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ b _021D80F2
+_021D8050:
+ ldr r0, _021D8110 ; =0x000005F3
+ bl FUN_020054C8
+ b _021D80F2
+_021D8058:
+ add r0, r4, #0
+ bl MOD14_021DC558
+ cmp r0, #1
+ bne _021D809C
+ add r0, r4, #0
+ bl MOD14_021DC3F0
+ cmp r0, #1
+ bne _021D809C
+ ldr r0, _021D8114 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC170
+ ldr r1, [r4, #8]
+ add r0, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DBE88
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x31
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ b _021D80F2
+_021D809C:
+ ldr r0, _021D8110 ; =0x000005F3
+ bl FUN_020054C8
+ b _021D80F2
+_021D80A4:
+ ldr r0, _021D8114 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC180
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x32
+ bl MOD14_021DCB2C
+ b _021D80F2
+_021D80BE:
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ mov r1, #4
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D80F2
+ mov r0, #0x1b
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D80F2
+_021D80D6:
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D80F2
+ add r0, r4, #0
+ bl MOD14_021D762C
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD14_021D7600
+_021D80F2:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D80F8: .word 0x021C48B8
+_021D80FC: .word MOD14_021D854C
+_021D8100: .word MOD14_021D86BC
+_021D8104: .word MOD14_021DABE8
+_021D8108: .word MOD14_021DAC80
+_021D810C: .word MOD14_021DAF78
+_021D8110: .word 0x000005F3
+_021D8114: .word 0x000005DD
+
+ thumb_func_start MOD14_021D8118
+MOD14_021D8118: ; 0x021D8118
+ push {r3, r4, r5, lr}
+ mov r1, #0x1b
+ add r4, r0, #0
+ lsl r1, r1, #4
+ ldr r2, [r4, r1]
+ cmp r2, #5
+ bhi _021D8220
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021D8132: ; jump table
+ .short _021D813E - _021D8132 - 2 ; case 0
+ .short _021D830E - _021D8132 - 2 ; case 1
+ .short _021D8332 - _021D8132 - 2 ; case 2
+ .short _021D8372 - _021D8132 - 2 ; case 3
+ .short _021D838A - _021D8132 - 2 ; case 4
+ .short _021D83A8 - _021D8132 - 2 ; case 5
+_021D813E:
+ ldr r3, _021D83C8 ; =0x021C48B8
+ mov r1, #1
+ ldr r5, [r3, #0x48]
+ tst r1, r5
+ beq _021D818A
+ bl MOD14_021DC3C4
+ cmp r0, #1
+ beq _021D8166
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x22
+ bl MOD14_021DCB2C
+ mov r0, #0x1b
+ mov r1, #1
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D83C4
+_021D8166:
+ ldr r0, _021D83CC ; =0x000005F3
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0x12
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #0x1b
+ mov r1, #5
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D83C4
+_021D818A:
+ mov r2, #2
+ add r1, r5, #0
+ tst r1, r2
+ beq _021D819A
+ ldr r1, _021D83D0 ; =MOD14_021D86BC
+ bl MOD14_021D7610
+ b _021D83C4
+_021D819A:
+ ldr r3, [r3, #0x44]
+ lsl r1, r2, #8
+ tst r1, r3
+ beq _021D81B0
+ bl MOD14_021DC2A4
+ ldr r1, _021D83D4 ; =MOD14_021DABE8
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D83C4
+_021D81B0:
+ add r2, #0xfe
+ add r1, r3, #0
+ tst r1, r2
+ beq _021D81C6
+ bl MOD14_021DC278
+ ldr r1, _021D83D4 ; =MOD14_021DABE8
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D83C4
+_021D81C6:
+ add r0, r3, #0
+ add r1, r4, #0
+ bl MOD14_021DB5B4
+ cmp r0, #0
+ beq _021D81FE
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD14_021DCB2C
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021D81F4
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+_021D81F4:
+ mov r0, #0x1b
+ mov r1, #4
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D83C4
+_021D81FE:
+ add r0, r4, #0
+ bl MOD14_021DB9C8
+ cmp r0, #0
+ beq _021D8220
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ beq _021D8248
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D8222
+ cmp r0, #1
+ beq _021D822C
+_021D8220:
+ b _021D83C4
+_021D8222:
+ ldr r1, _021D83D8 ; =MOD14_021DAC80
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D83C4
+_021D822C:
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #3
+ beq _021D8240
+ ldr r1, _021D83DC ; =MOD14_021DAF78
+ add r0, r4, #0
+ bl MOD14_021D7610
+ b _021D83C4
+_021D8240:
+ ldr r0, _021D83CC ; =0x000005F3
+ bl FUN_020054C8
+ b _021D83C4
+_021D8248:
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D825C
+ cmp r0, #1
+ beq _021D82A8
+ cmp r0, #2
+ beq _021D82F4
+ b _021D83C4
+_021D825C:
+ add r0, r4, #0
+ bl MOD14_021DC558
+ cmp r0, #0
+ bne _021D82A0
+ add r0, r4, #0
+ bl MOD14_021DC3F0
+ cmp r0, #1
+ bne _021D82A0
+ ldr r0, _021D83E0 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC170
+ ldr r1, [r4, #8]
+ add r0, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DBE88
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x31
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ b _021D83C4
+_021D82A0:
+ ldr r0, _021D83CC ; =0x000005F3
+ bl FUN_020054C8
+ b _021D83C4
+_021D82A8:
+ add r0, r4, #0
+ bl MOD14_021DC558
+ cmp r0, #1
+ bne _021D82EC
+ add r0, r4, #0
+ bl MOD14_021DC3F0
+ cmp r0, #1
+ bne _021D82EC
+ ldr r0, _021D83E0 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC170
+ ldr r1, [r4, #8]
+ add r0, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DBE88
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x31
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ b _021D83C4
+_021D82EC:
+ ldr r0, _021D83CC ; =0x000005F3
+ bl FUN_020054C8
+ b _021D83C4
+_021D82F4:
+ ldr r0, _021D83E0 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021DC180
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x32
+ bl MOD14_021DCB2C
+ b _021D83C4
+_021D830E:
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ mov r1, #0x22
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D83C4
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x23
+ bl MOD14_021DCB2C
+ mov r0, #0x1b
+ mov r1, #2
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D83C4
+_021D8332:
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ mov r1, #0x23
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D83C4
+ add r0, r4, #0
+ bl MOD14_021DB8D0
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD14_021DCB2C
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021D8368
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+_021D8368:
+ mov r0, #0x1b
+ mov r1, #4
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D83C4
+_021D8372:
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ mov r1, #4
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D83C4
+ mov r0, #0x1b
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D83C4
+_021D838A:
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D83C4
+ add r0, r4, #0
+ bl MOD14_021D762C
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD14_021D7600
+ b _021D83C4
+_021D83A8:
+ ldr r0, _021D83C8 ; =0x021C48B8
+ ldr r2, [r0, #0x48]
+ mov r0, #3
+ tst r0, r2
+ beq _021D83C4
+ sub r1, #0x9c
+ ldr r0, [r4, r1]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #0x1b
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+_021D83C4:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D83C8: .word 0x021C48B8
+_021D83CC: .word 0x000005F3
+_021D83D0: .word MOD14_021D86BC
+_021D83D4: .word MOD14_021DABE8
+_021D83D8: .word MOD14_021DAC80
+_021D83DC: .word MOD14_021DAF78
+_021D83E0: .word 0x000005DD
+
+ thumb_func_start MOD14_021D83E4
+MOD14_021D83E4: ; 0x021D83E4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD14_021DC3F4
+ cmp r0, #2
+ bne _021D8428
+ mov r0, #0x4b
+ ldr r1, [r4, #0x14]
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldrb r0, [r4, #0x1f]
+ cmp r0, #0
+ beq _021D8402
+ mov r0, #0
+ b _021D8404
+_021D8402:
+ mov r0, #2
+_021D8404:
+ ldr r1, _021D8500 ; =0x0000013D
+ mov r2, #1
+ strb r0, [r4, r1]
+ add r0, r1, #2
+ strb r2, [r4, r0]
+ mov r2, #0
+ add r0, r1, #3
+ strb r2, [r4, r0]
+ add r0, r1, #1
+ strb r2, [r4, r0]
+ add r0, r1, #7
+ strh r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #0x67
+ ldr r0, [r4, r0]
+ sub r1, #0xd
+ str r0, [r4, r1]
+ b _021D84AA
+_021D8428:
+ add r0, r4, #0
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021D8476
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_0206B330
+ add r1, r0, #0
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r2, #0
+ bl FUN_0206B5E4
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ mov r2, #2
+ add r0, #0x11
+ strb r2, [r4, r0]
+ mov r0, #0x1e
+ add r1, #0x13
+ strb r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD14_021DC3E0
+ mov r1, #5
+ lsl r1, r1, #6
+ strb r0, [r4, r1]
+ mov r2, #0
+ sub r0, r1, #2
+ strb r2, [r4, r0]
+ add r0, r1, #4
+ strh r2, [r4, r0]
+ b _021D84AA
+_021D8476:
+ mov r1, #0x49
+ lsl r1, r1, #2
+ add r0, r1, #0
+ ldr r2, [r4, r1]
+ add r0, #8
+ str r2, [r4, r0]
+ add r0, r1, #0
+ mov r2, #1
+ add r0, #0x19
+ strb r2, [r4, r0]
+ ldr r0, [r4, r1]
+ bl FUN_0206B9AC
+ ldr r1, _021D8504 ; =0x0000013F
+ strb r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD14_021DC3E8
+ mov r1, #5
+ lsl r1, r1, #6
+ strb r0, [r4, r1]
+ mov r2, #0
+ sub r0, r1, #2
+ strb r2, [r4, r0]
+ add r0, r1, #4
+ strh r2, [r4, r0]
+_021D84AA:
+ mov r0, #0x55
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r0, #0x38
+ ldr r0, [r4, r0]
+ bl FUN_0206BB28
+ mov r1, #0x52
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ sub r1, #0x2c
+ ldr r0, [r4, r1]
+ bl FUN_02079C70
+ mov r1, #0x56
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ sub r1, #0x3c
+ ldr r0, [r4, r1]
+ bl FUN_0202A918
+ mov r1, #0x53
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ sub r1, #0x20
+ add r0, r4, r1
+ ldr r1, _021D8508 ; =0x021E626C
+ bl FUN_0207B000
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020238F4
+ add r1, r0, #0
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_0207C2A4
+ pop {r4, pc}
+ nop
+_021D8500: .word 0x0000013D
+_021D8504: .word 0x0000013F
+_021D8508: .word 0x021E626C
+
+ thumb_func_start MOD14_021D850C
+MOD14_021D850C: ; 0x021D850C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x1b
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D8520
+ cmp r1, #1
+ beq _021D8536
+ b _021D8546
+_021D8520:
+ sub r0, #0x9c
+ ldr r0, [r4, r0]
+ mov r1, #0x33
+ bl MOD14_021DCB2C
+ mov r0, #0x1b
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _021D8546
+_021D8536:
+ sub r0, #0x9c
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D8546
+ mov r0, #1
+ pop {r4, pc}
+_021D8546:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021D854C
+MOD14_021D854C: ; 0x021D854C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #6
+ bls _021D855A
+ b _021D86A6
+_021D855A:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D8566: ; jump table
+ .short _021D8574 - _021D8566 - 2 ; case 0
+ .short _021D85CC - _021D8566 - 2 ; case 1
+ .short _021D8604 - _021D8566 - 2 ; case 2
+ .short _021D86A6 - _021D8566 - 2 ; case 3
+ .short _021D8660 - _021D8566 - 2 ; case 4
+ .short _021D8674 - _021D8566 - 2 ; case 5
+ .short _021D8690 - _021D8566 - 2 ; case 6
+_021D8574:
+ bl MOD14_021DC3C4
+ cmp r0, #3
+ bne _021D8590
+ add r0, r4, #0
+ bl MOD14_021DC538
+ cmp r0, #0
+ beq _021D8590
+ ldr r1, _021D86A8 ; =MOD14_021DA7C4
+ add r0, r4, #0
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D8590:
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ beq _021D85BA
+ ldr r0, _021D86AC ; =0x000005F3
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0x11
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D85BA:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x22
+ bl MOD14_021DCB2C
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D85CC:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x22
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D86A6
+ ldr r0, _021D86B0 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0xb
+ bl MOD14_021DBA44
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD14_021E5D98
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8604:
+ bl MOD14_021E6160
+ cmp r0, #0x36
+ bgt _021D8624
+ bge _021D8650
+ mov r2, #0
+ mvn r2, r2
+ cmp r0, r2
+ bgt _021D86A6
+ sub r1, r2, #1
+ cmp r0, r1
+ blt _021D86A6
+ beq _021D862A
+ cmp r0, r2
+ beq _021D8638
+ pop {r3, r4, r5, pc}
+_021D8624:
+ cmp r0, #0x37
+ beq _021D8638
+ pop {r3, r4, r5, pc}
+_021D862A:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1c
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D8638:
+ ldr r0, _021D86B0 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #6
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8650:
+ ldr r1, _021D86B4 ; =MOD14_021D850C
+ add r0, r4, #0
+ bl MOD14_021D7600
+ add r0, r4, #0
+ bl MOD14_021D7620
+ pop {r3, r4, r5, pc}
+_021D8660:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D86A6
+ mov r0, #5
+ str r0, [r5]
+_021D8674:
+ ldr r0, _021D86B8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D86A6
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #6
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8690:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D86A6
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021D86A6:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D86A8: .word MOD14_021DA7C4
+_021D86AC: .word 0x000005F3
+_021D86B0: .word 0x000005DD
+_021D86B4: .word MOD14_021D850C
+_021D86B8: .word 0x021C48B8
+
+ thumb_func_start MOD14_021D86BC
+MOD14_021D86BC: ; 0x021D86BC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #5
+ bls _021D86CA
+ b _021D87EC
+_021D86CA:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D86D6: ; jump table
+ .short _021D86E2 - _021D86D6 - 2 ; case 0
+ .short _021D87EC - _021D86D6 - 2 ; case 1
+ .short _021D87A6 - _021D86D6 - 2 ; case 2
+ .short _021D87BA - _021D86D6 - 2 ; case 3
+ .short _021D87D6 - _021D86D6 - 2 ; case 4
+ .short _021D8750 - _021D86D6 - 2 ; case 5
+_021D86E2:
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ beq _021D870A
+ ldr r0, _021D87F0 ; =0x000005F3
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0x11
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D870A:
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #3
+ bne _021D8728
+ add r0, r4, #0
+ bl MOD14_021DC538
+ cmp r0, #0
+ beq _021D8728
+ ldr r1, _021D87F4 ; =MOD14_021DA7C4
+ add r0, r4, #0
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D8728:
+ ldr r0, _021D87F8 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0xc
+ bl MOD14_021DBA44
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021E5D98
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB2C
+ mov r0, #5
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8750:
+ bl MOD14_021E6160
+ cmp r0, #0x36
+ bgt _021D8770
+ bge _021D8794
+ mov r2, #0
+ mvn r2, r2
+ cmp r0, r2
+ bgt _021D87EC
+ sub r1, r2, #1
+ cmp r0, r1
+ blt _021D87EC
+ beq _021D8776
+ cmp r0, r2
+ beq _021D8784
+ pop {r3, r4, r5, pc}
+_021D8770:
+ cmp r0, #0x37
+ beq _021D8784
+ pop {r3, r4, r5, pc}
+_021D8776:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1c
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D8784:
+ ldr r1, _021D87FC ; =MOD14_021D850C
+ add r0, r4, #0
+ bl MOD14_021D7600
+ add r0, r4, #0
+ bl MOD14_021D7620
+ pop {r3, r4, r5, pc}
+_021D8794:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D87A6:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D87EC
+ mov r0, #3
+ str r0, [r5]
+_021D87BA:
+ ldr r0, _021D8800 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D87EC
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D87D6:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D87EC
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021D87EC:
+ pop {r3, r4, r5, pc}
+ nop
+_021D87F0: .word 0x000005F3
+_021D87F4: .word MOD14_021DA7C4
+_021D87F8: .word 0x000005DD
+_021D87FC: .word MOD14_021D850C
+_021D8800: .word 0x021C48B8
+
+ thumb_func_start MOD14_021D8804
+MOD14_021D8804: ; 0x021D8804
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #5
+ bhi _021D88F6
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D881C: ; jump table
+ .short _021D8828 - _021D881C - 2 ; case 0
+ .short _021D887C - _021D881C - 2 ; case 1
+ .short _021D8890 - _021D881C - 2 ; case 2
+ .short _021D88EA - _021D881C - 2 ; case 3
+ .short _021D8A08 - _021D881C - 2 ; case 4
+ .short _021D8A20 - _021D881C - 2 ; case 5
+_021D8828:
+ bl MOD14_021DC458
+ add r2, r0, #0
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021DBA44
+ add r0, r4, #0
+ bl MOD14_021E5DC4
+ add r0, r4, #0
+ bl MOD14_021DC49C
+ cmp r0, #0
+ beq _021D8864
+ add r0, r4, #0
+ bl MOD14_021E6220
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8864:
+ ldr r0, _021D8A38 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB2C
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D887C:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D88F6
+ mov r0, #2
+ str r0, [r5]
+_021D8890:
+ add r0, r4, #0
+ bl MOD14_021E6160
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #0
+ ldr r2, [r4, r1]
+ mvn r0, r0
+ cmp r2, r0
+ bgt _021D88BA
+ sub r3, r0, #2
+ cmp r2, r3
+ blt _021D88E4
+ beq _021D88F6
+ sub r3, r0, #1
+ cmp r2, r3
+ beq _021D88C0
+ cmp r2, r0
+ beq _021D88CC
+ b _021D88E4
+_021D88BA:
+ cmp r2, #0x2b
+ beq _021D88CC
+ b _021D88E4
+_021D88C0:
+ sub r1, #0xa4
+ ldr r0, [r4, r1]
+ mov r1, #0x1c
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D88CC:
+ ldr r0, _021D8A38 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D88E4:
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D88EA:
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ sub r2, #0x22
+ cmp r2, #0x13
+ bls _021D88F8
+_021D88F6:
+ b _021D8A34
+_021D88F8:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021D8904: ; jump table
+ .short _021D892C - _021D8904 - 2 ; case 0
+ .short _021D895E - _021D8904 - 2 ; case 1
+ .short _021D8972 - _021D8904 - 2 ; case 2
+ .short _021D89A6 - _021D8904 - 2 ; case 3
+ .short _021D8986 - _021D8904 - 2 ; case 4
+ .short _021D898E - _021D8904 - 2 ; case 5
+ .short _021D89AE - _021D8904 - 2 ; case 6
+ .short _021D8996 - _021D8904 - 2 ; case 7
+ .short _021D899E - _021D8904 - 2 ; case 8
+ .short _021D8A34 - _021D8904 - 2 ; case 9
+ .short _021D8A34 - _021D8904 - 2 ; case 10
+ .short _021D8A34 - _021D8904 - 2 ; case 11
+ .short _021D8A34 - _021D8904 - 2 ; case 12
+ .short _021D8A34 - _021D8904 - 2 ; case 13
+ .short _021D8A34 - _021D8904 - 2 ; case 14
+ .short _021D8A34 - _021D8904 - 2 ; case 15
+ .short _021D8A34 - _021D8904 - 2 ; case 16
+ .short _021D8A34 - _021D8904 - 2 ; case 17
+ .short _021D89CA - _021D8904 - 2 ; case 18
+ .short _021D89CA - _021D8904 - 2 ; case 19
+_021D892C:
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021D8948
+ add r0, r4, #0
+ bl MOD14_021DC49C
+ cmp r0, #1
+ bne _021D8948
+ ldr r1, _021D8A3C ; =MOD14_021D9230
+ add r0, r4, #0
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D8948:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ ldr r1, _021D8A40 ; =MOD14_021D94BC
+ add r0, r4, #0
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D895E:
+ sub r1, #0xa4
+ ldr r0, [r4, r1]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ ldr r1, _021D8A44 ; =MOD14_021D95B4
+ add r0, r4, #0
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D8972:
+ sub r1, #0xa4
+ ldr r0, [r4, r1]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ ldr r1, _021D8A48 ; =MOD14_021D96B0
+ add r0, r4, #0
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D8986:
+ ldr r1, _021D8A4C ; =MOD14_021D9770
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D898E:
+ ldr r1, _021D8A50 ; =MOD14_021D9934
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D8996:
+ ldr r1, _021D8A54 ; =MOD14_021D9138
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D899E:
+ ldr r1, _021D8A58 ; =MOD14_021D9C98
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D89A6:
+ ldr r1, _021D8A5C ; =MOD14_021DA2C8
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D89AE:
+ bl MOD14_021DC430
+ cmp r0, #0
+ bne _021D89C0
+ ldr r1, _021D8A60 ; =MOD14_021DA3E4
+ add r0, r4, #0
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D89C0:
+ ldr r1, _021D8A64 ; =MOD14_021DA5F0
+ add r0, r4, #0
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D89CA:
+ bl MOD14_021DC170
+ ldr r1, [r4, #8]
+ add r0, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DBE88
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x30
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ ldr r0, _021D8A38 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #5
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8A08:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D8A34
+ add r0, r4, #0
+ bl MOD14_021D7620
+ pop {r3, r4, r5, pc}
+_021D8A20:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D8A34
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021D8A34:
+ pop {r3, r4, r5, pc}
+ nop
+_021D8A38: .word 0x000005DD
+_021D8A3C: .word MOD14_021D9230
+_021D8A40: .word MOD14_021D94BC
+_021D8A44: .word MOD14_021D95B4
+_021D8A48: .word MOD14_021D96B0
+_021D8A4C: .word MOD14_021D9770
+_021D8A50: .word MOD14_021D9934
+_021D8A54: .word MOD14_021D9138
+_021D8A58: .word MOD14_021D9C98
+_021D8A5C: .word MOD14_021DA2C8
+_021D8A60: .word MOD14_021DA3E4
+_021D8A64: .word MOD14_021DA5F0
+
+ thumb_func_start MOD14_021D8A68
+MOD14_021D8A68: ; 0x021D8A68
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #7
+ bls _021D8A76
+ b _021D8D54
+_021D8A76:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D8A82: ; jump table
+ .short _021D8A92 - _021D8A82 - 2 ; case 0
+ .short _021D8B3C - _021D8A82 - 2 ; case 1
+ .short _021D8B50 - _021D8A82 - 2 ; case 2
+ .short _021D8BB0 - _021D8A82 - 2 ; case 3
+ .short _021D8CE0 - _021D8A82 - 2 ; case 4
+ .short _021D8CF8 - _021D8A82 - 2 ; case 5
+ .short _021D8D24 - _021D8A82 - 2 ; case 6
+ .short _021D8D3A - _021D8A82 - 2 ; case 7
+_021D8A92:
+ bl MOD14_021DC538
+ add r2, r0, #0
+ beq _021D8AB0
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200AE38
+ add r0, r4, #0
+ mov r1, #0x19
+ bl MOD14_021DBA44
+ b _021D8AD8
+_021D8AB0:
+ add r0, r4, #0
+ bl MOD14_021DC430
+ add r2, r0, #0
+ beq _021D8AD0
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200AE38
+ add r0, r4, #0
+ mov r1, #0x19
+ bl MOD14_021DBA44
+ b _021D8AD8
+_021D8AD0:
+ add r0, r4, #0
+ mov r1, #0x1c
+ bl MOD14_021DBA44
+_021D8AD8:
+ add r0, r4, #0
+ bl MOD14_021E5F04
+ add r0, r4, #0
+ bl MOD14_021DC584
+ cmp r0, #0
+ beq _021D8B08
+ ldr r0, _021D8D58 ; =0x000005F3
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0x22
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #7
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8B08:
+ add r0, r4, #0
+ bl MOD14_021DC49C
+ cmp r0, #0
+ beq _021D8B24
+ add r0, r4, #0
+ bl MOD14_021E6220
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8B24:
+ ldr r0, _021D8D5C ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB2C
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8B3C:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D8BBC
+ mov r0, #2
+ str r0, [r5]
+_021D8B50:
+ add r0, r4, #0
+ bl MOD14_021E6160
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #0
+ ldr r2, [r4, r1]
+ mvn r0, r0
+ cmp r2, r0
+ bgt _021D8B7A
+ sub r3, r0, #2
+ cmp r2, r3
+ blt _021D8BA4
+ beq _021D8BBC
+ sub r3, r0, #1
+ cmp r2, r3
+ beq _021D8B80
+ cmp r2, r0
+ beq _021D8B8C
+ b _021D8BA4
+_021D8B7A:
+ cmp r2, #0x33
+ beq _021D8B8C
+ b _021D8BA4
+_021D8B80:
+ sub r1, #0xa4
+ ldr r0, [r4, r1]
+ mov r1, #0x1c
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D8B8C:
+ ldr r0, _021D8D5C ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8BA4:
+ ldr r0, _021D8D5C ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8BB0:
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ sub r1, #0x2e
+ cmp r1, #4
+ bls _021D8BBE
+_021D8BBC:
+ b _021D8D54
+_021D8BBE:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D8BCA: ; jump table
+ .short _021D8BD4 - _021D8BCA - 2 ; case 0
+ .short _021D8C12 - _021D8BCA - 2 ; case 1
+ .short _021D8C74 - _021D8BCA - 2 ; case 2
+ .short _021D8C7C - _021D8BCA - 2 ; case 3
+ .short _021D8CD8 - _021D8BCA - 2 ; case 4
+_021D8BD4:
+ bl MOD14_021DC538
+ cmp r0, #0
+ beq _021D8C08
+ add r0, r4, #0
+ add r1, r4, #0
+ bl MOD14_021DC31C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x14
+ bl MOD14_021DCB2C
+ ldr r0, _021D8D5C ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #5
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8C08:
+ ldr r1, _021D8D60 ; =MOD14_021DA3E4
+ add r0, r4, #0
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D8C12:
+ bl MOD14_021DC430
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0206EA98
+ cmp r0, #0
+ beq _021D8C42
+ ldr r0, _021D8D58 ; =0x000005F3
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0x18
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #7
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8C42:
+ add r0, r4, #0
+ add r1, r4, #0
+ bl MOD14_021DC2E4
+ add r0, r4, #0
+ bl MOD14_021D7674
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x13
+ bl MOD14_021DCB2C
+ ldr r0, _021D8D5C ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #5
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8C74:
+ ldr r1, _021D8D64 ; =MOD14_021DA9D0
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D8C7C:
+ bl MOD14_021DC430
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0206EA98
+ cmp r0, #0
+ beq _021D8CAC
+ ldr r0, _021D8D58 ; =0x000005F3
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0x18
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #7
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8CAC:
+ add r0, r4, #0
+ add r1, r4, #0
+ bl MOD14_021DC334
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x15
+ bl MOD14_021DCB2C
+ ldr r0, _021D8D5C ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #5
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8CD8:
+ ldr r1, _021D8D68 ; =MOD14_021DA7C4
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D8CE0:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D8D54
+ add r0, r4, #0
+ bl MOD14_021D7620
+ pop {r3, r4, r5, pc}
+_021D8CF8:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D8D54
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x16
+ bl MOD14_021DCB2C
+ mov r0, #6
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8D24:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D8D54
+ add r0, r4, #0
+ bl MOD14_021D7620
+ pop {r3, r4, r5, pc}
+_021D8D3A:
+ ldr r0, _021D8D6C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D8D54
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #6
+ str r0, [r5]
+_021D8D54:
+ pop {r3, r4, r5, pc}
+ nop
+_021D8D58: .word 0x000005F3
+_021D8D5C: .word 0x000005DD
+_021D8D60: .word MOD14_021DA3E4
+_021D8D64: .word MOD14_021DA9D0
+_021D8D68: .word MOD14_021DA7C4
+_021D8D6C: .word 0x021C48B8
+
+ thumb_func_start MOD14_021D8D70
+MOD14_021D8D70: ; 0x021D8D70
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #7
+ bls _021D8D7E
+ b _021D8EB0
+_021D8D7E:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D8D8A: ; jump table
+ .short _021D8D9A - _021D8D8A - 2 ; case 0
+ .short _021D8DDE - _021D8D8A - 2 ; case 1
+ .short _021D8DF2 - _021D8D8A - 2 ; case 2
+ .short _021D8E42 - _021D8D8A - 2 ; case 3
+ .short _021D8E82 - _021D8D8A - 2 ; case 4
+ .short _021D8EB0 - _021D8D8A - 2 ; case 5
+ .short _021D8EB0 - _021D8D8A - 2 ; case 6
+ .short _021D8E9A - _021D8D8A - 2 ; case 7
+_021D8D9A:
+ mov r1, #7
+ bl MOD14_021DBA44
+ add r0, r4, #0
+ bl MOD14_021E5F84
+ add r0, r4, #0
+ bl MOD14_021DC49C
+ cmp r0, #0
+ ldr r0, _021D8EB4 ; =0x000005DD
+ beq _021D8DC8
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD14_021E6220
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8DC8:
+ bl FUN_020054C8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB2C
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8DDE:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D8EB0
+ mov r0, #2
+ str r0, [r5]
+_021D8DF2:
+ add r0, r4, #0
+ bl MOD14_021E6160
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ add r0, r0, #3
+ cmp r0, #6
+ bhi _021D8E3C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8E12: ; jump table
+ .short _021D8EB0 - _021D8E12 - 2 ; case 0
+ .short _021D8E20 - _021D8E12 - 2 ; case 1
+ .short _021D8E2C - _021D8E12 - 2 ; case 2
+ .short _021D8E3C - _021D8E12 - 2 ; case 3
+ .short _021D8E3C - _021D8E12 - 2 ; case 4
+ .short _021D8E3C - _021D8E12 - 2 ; case 5
+ .short _021D8E2C - _021D8E12 - 2 ; case 6
+_021D8E20:
+ sub r1, #0xa4
+ ldr r0, [r4, r1]
+ mov r1, #0x1c
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D8E2C:
+ sub r1, #0xa4
+ ldr r0, [r4, r1]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8E3C:
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8E42:
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ cmp r2, #0
+ beq _021D8E56
+ cmp r2, #1
+ beq _021D8E6A
+ cmp r2, #2
+ beq _021D8E7A
+ pop {r3, r4, r5, pc}
+_021D8E56:
+ sub r1, #0xa4
+ ldr r0, [r4, r1]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ ldr r1, _021D8EB8 ; =MOD14_021D8EC4
+ add r0, r4, #0
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D8E6A:
+ sub r1, #0xa4
+ ldr r0, [r4, r1]
+ mov r1, #0x1b
+ bl MOD14_021DCB2C
+ mov r0, #7
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8E7A:
+ ldr r1, _021D8EBC ; =MOD14_021DA1D4
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D8E82:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D8EB0
+ add r0, r4, #0
+ bl MOD14_021D7620
+ pop {r3, r4, r5, pc}
+_021D8E9A:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D8EB0
+ ldr r1, _021D8EC0 ; =MOD14_021D8F6C
+ add r0, r4, #0
+ bl MOD14_021D7610
+_021D8EB0:
+ pop {r3, r4, r5, pc}
+ nop
+_021D8EB4: .word 0x000005DD
+_021D8EB8: .word MOD14_021D8EC4
+_021D8EBC: .word MOD14_021DA1D4
+_021D8EC0: .word MOD14_021D8F6C
+
+ thumb_func_start MOD14_021D8EC4
+MOD14_021D8EC4: ; 0x021D8EC4
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ cmp r1, #0
+ beq _021D8EDA
+ cmp r1, #1
+ beq _021D8EEE
+ cmp r1, #2
+ beq _021D8F52
+ pop {r4, r5, r6, pc}
+_021D8EDA:
+ bl MOD14_021DC424
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #8
+ bl MOD14_021DAA7C
+ mov r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, pc}
+_021D8EEE:
+ bl MOD14_021DAAA8
+ cmp r0, #0
+ beq _021D8F66
+ ldr r0, _021D8F68 ; =0x000001C1
+ ldrsb r6, [r5, r0]
+ mov r0, #0
+ mvn r0, r0
+ cmp r6, r0
+ beq _021D8F0C
+ add r0, r5, #0
+ bl MOD14_021DC424
+ cmp r6, r0
+ bne _021D8F12
+_021D8F0C:
+ mov r0, #2
+ str r0, [r4]
+ b _021D8F38
+_021D8F12:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD14_021DC2C4
+ mov r1, #0x12
+ lsl r1, r1, #4
+ ldr r0, [r5, r1]
+ add r1, #0xa1
+ ldrsb r1, [r5, r1]
+ bl FUN_0206B428
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #4
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r4]
+_021D8F38:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x20
+ bl MOD14_021DCB2C
+ pop {r4, r5, r6, pc}
+_021D8F52:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D8F66
+ add r0, r5, #0
+ bl MOD14_021D7620
+_021D8F66:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D8F68: .word 0x000001C1
+
+ thumb_func_start MOD14_021D8F6C
+MOD14_021D8F6C: ; 0x021D8F6C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #8
+ bhi _021D8FD8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8F84: ; jump table
+ .short _021D8F96 - _021D8F84 - 2 ; case 0
+ .short _021D8FA2 - _021D8F84 - 2 ; case 1
+ .short _021D8FC8 - _021D8F84 - 2 ; case 2
+ .short _021D8FDE - _021D8F84 - 2 ; case 3
+ .short _021D9062 - _021D8F84 - 2 ; case 4
+ .short _021D9076 - _021D8F84 - 2 ; case 5
+ .short _021D90FC - _021D8F84 - 2 ; case 6
+ .short _021D910E - _021D8F84 - 2 ; case 7
+ .short _021D9122 - _021D8F84 - 2 ; case 8
+_021D8F96:
+ mov r0, #0x6e
+ mov r1, #4
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r0, #1
+ str r0, [r5]
+_021D8FA2:
+ add r0, r4, #0
+ mov r1, #9
+ bl MOD14_021DBA44
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ add r0, r4, #0
+ bl MOD14_021E5FC8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8FC8:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB98
+ cmp r0, #0
+ bne _021D8FDA
+_021D8FD8:
+ b _021D9136
+_021D8FDA:
+ mov r0, #3
+ str r0, [r5]
+_021D8FDE:
+ add r0, r4, #0
+ bl MOD14_021E6160
+ add r0, r0, #3
+ cmp r0, #0xc
+ bhi _021D901E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8FF6: ; jump table
+ .short _021D9136 - _021D8FF6 - 2 ; case 0
+ .short _021D9010 - _021D8FF6 - 2 ; case 1
+ .short _021D901E - _021D8FF6 - 2 ; case 2
+ .short _021D901E - _021D8FF6 - 2 ; case 3
+ .short _021D901E - _021D8FF6 - 2 ; case 4
+ .short _021D901E - _021D8FF6 - 2 ; case 5
+ .short _021D901E - _021D8FF6 - 2 ; case 6
+ .short _021D9030 - _021D8FF6 - 2 ; case 7
+ .short _021D9030 - _021D8FF6 - 2 ; case 8
+ .short _021D9030 - _021D8FF6 - 2 ; case 9
+ .short _021D9030 - _021D8FF6 - 2 ; case 10
+ .short _021D9030 - _021D8FF6 - 2 ; case 11
+ .short _021D9030 - _021D8FF6 - 2 ; case 12
+_021D9010:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1c
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D901E:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #8
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9030:
+ add r0, r4, #0
+ bl MOD14_021E6210
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r4, #0
+ mov r1, #0xa
+ bl MOD14_021DBA44
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ add r0, r4, #0
+ bl MOD14_021E6038
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9062:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9136
+ mov r0, #5
+ str r0, [r5]
+_021D9076:
+ add r0, r4, #0
+ bl MOD14_021E6160
+ add r0, r0, #3
+ cmp r0, #6
+ bhi _021D90B0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D908E: ; jump table
+ .short _021D9136 - _021D908E - 2 ; case 0
+ .short _021D909C - _021D908E - 2 ; case 1
+ .short _021D90AA - _021D908E - 2 ; case 2
+ .short _021D90B0 - _021D908E - 2 ; case 3
+ .short _021D90B0 - _021D908E - 2 ; case 4
+ .short _021D90B0 - _021D908E - 2 ; case 5
+ .short _021D90AA - _021D908E - 2 ; case 6
+_021D909C:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1c
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D90AA:
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D90B0:
+ add r0, r4, #0
+ bl MOD14_021E6210
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r2, [r4, r1]
+ cmp r2, #0xa
+ blt _021D90F2
+ cmp r2, #0x21
+ bgt _021D90F2
+ sub r1, #0x98
+ ldr r0, [r4, r1]
+ mov r1, #0
+ mvn r1, r1
+ sub r2, #0xa
+ bl FUN_0206B458
+ mov r1, #0x12
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ add r0, r4, #0
+ bl MOD14_021DB59C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #6
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D90F2:
+ bl ErrorHandling
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D90FC:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x21
+ bl MOD14_021DCB2C
+ mov r0, #8
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D910E:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9136
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9122:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9136
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021D9136:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021D9138
+MOD14_021D9138: ; 0x021D9138
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ cmp r1, #0
+ beq _021D914E
+ cmp r1, #1
+ beq _021D916C
+ cmp r1, #2
+ beq _021D921A
+ pop {r3, r4, r5, pc}
+_021D914E:
+ bl MOD14_021E60B4
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB2C
+ mov r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D916C:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D922E
+ add r0, r5, #0
+ bl MOD14_021E6160
+ mov r2, #2
+ add r1, r0, #0
+ mvn r2, r2
+ cmp r1, r2
+ bhi _021D919C
+ bhs _021D922E
+ cmp r1, #0x2d
+ bhi _021D91FC
+ cmp r1, #0x2c
+ blo _021D91FC
+ beq _021D91CC
+ cmp r1, #0x2d
+ beq _021D91BA
+ b _021D91FC
+_021D919C:
+ add r0, r2, #1
+ cmp r1, r0
+ blo _021D91FC
+ beq _021D91AC
+ add r0, r2, #2
+ cmp r1, r0
+ beq _021D91BA
+ b _021D91FC
+_021D91AC:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x1c
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D91BA:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D91CC:
+ add r0, r5, #0
+ bl MOD14_021DC1AC
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #7
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x27
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D91FC:
+ cmp r1, #0x38
+ blo _021D922E
+ cmp r1, #0x3d
+ bhi _021D922E
+ add r0, r5, #0
+ sub r1, #0x38
+ bl MOD14_021E6118
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x1d
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D921A:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D922E
+ add r0, r5, #0
+ bl MOD14_021D7620
+_021D922E:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021D9230
+MOD14_021D9230: ; 0x021D9230
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #4
+ bls _021D923E
+ b _021D9454
+_021D923E:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D924A: ; jump table
+ .short _021D9254 - _021D924A - 2 ; case 0
+ .short _021D9284 - _021D924A - 2 ; case 1
+ .short _021D9326 - _021D924A - 2 ; case 2
+ .short _021D942C - _021D924A - 2 ; case 3
+ .short _021D9440 - _021D924A - 2 ; case 4
+_021D9254:
+ ldr r1, _021D9458 ; =0x021C48B8
+ ldr r2, [r1, #0x44]
+ mov r1, #1
+ tst r1, r2
+ beq _021D927C
+ add r1, r4, #0
+ bl MOD14_021DBBD0
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x2c
+ bl MOD14_021DCB2C
+ ldr r0, _021D945C ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D927C:
+ ldr r1, _021D9460 ; =MOD14_021D94BC
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D9284:
+ ldr r1, _021D9458 ; =0x021C48B8
+ ldr r2, [r1, #0x44]
+ mov r1, #1
+ tst r1, r2
+ beq _021D92E8
+ add r0, r2, #0
+ add r1, r4, #0
+ bl MOD14_021DB790
+ cmp r0, #1
+ beq _021D92B6
+ cmp r0, #2
+ bne _021D9342
+ ldr r1, _021D9458 ; =0x021C48B8
+ mov r0, #0xf0
+ ldr r2, [r1, #0x44]
+ ldr r1, [r1, #0x48]
+ and r2, r0
+ and r0, r1
+ cmp r2, r0
+ bne _021D9342
+ ldr r0, _021D9464 ; =0x000005F3
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_021D92B6:
+ add r0, r4, #0
+ add r1, r4, #0
+ bl MOD14_021DBBEC
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x2e
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D92E8:
+ bl MOD14_021DC4DC
+ cmp r0, #0
+ beq _021D9306
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x2d
+ bl MOD14_021DCB2C
+ ldr r1, _021D9460 ; =MOD14_021D94BC
+ add r0, r4, #0
+ bl MOD14_021D7610
+ pop {r3, r4, r5, pc}
+_021D9306:
+ add r0, r4, #0
+ add r1, r4, #0
+ bl MOD14_021DBAE0
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x2f
+ bl MOD14_021DCB2C
+ ldr r0, _021D9468 ; =0x000005EB
+ bl FUN_020054C8
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9326:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9342
+ ldr r0, _021D9458 ; =0x021C48B8
+ add r1, r4, #0
+ ldr r0, [r0, #0x44]
+ bl MOD14_021DB790
+ cmp r0, #4
+ bls _021D9344
+_021D9342:
+ b _021D9454
+_021D9344:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9350: ; jump table
+ .short _021D93E2 - _021D9350 - 2 ; case 0
+ .short _021D9372 - _021D9350 - 2 ; case 1
+ .short _021D935A - _021D9350 - 2 ; case 2
+ .short _021D9396 - _021D9350 - 2 ; case 3
+ .short _021D93BC - _021D9350 - 2 ; case 4
+_021D935A:
+ ldr r1, _021D9458 ; =0x021C48B8
+ mov r0, #0xf0
+ ldr r2, [r1, #0x44]
+ ldr r1, [r1, #0x48]
+ and r2, r0
+ and r0, r1
+ cmp r2, r0
+ bne _021D9454
+ ldr r0, _021D9464 ; =0x000005F3
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_021D9372:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD14_021DCB2C
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ mov r1, #6
+ tst r0, r1
+ bne _021D9454
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D9396:
+ add r0, r4, #0
+ bl MOD14_021DC2A4
+ add r0, r4, #0
+ bl MOD14_021DC424
+ add r1, r0, #0
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_0206B428
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D93BC:
+ add r0, r4, #0
+ bl MOD14_021DC278
+ add r0, r4, #0
+ bl MOD14_021DC424
+ add r1, r0, #0
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_0206B428
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D93E2:
+ ldr r0, _021D9458 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _021D941E
+ add r0, r4, #0
+ bl MOD14_021D9470
+ cmp r0, #0
+ beq _021D9416
+ add r0, r4, #0
+ add r1, r4, #0
+ bl MOD14_021DBCA0
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xa
+ bl MOD14_021DCB2C
+ ldr r0, _021D946C ; =0x000005EA
+ bl FUN_020054C8
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9416:
+ ldr r0, _021D9464 ; =0x000005F3
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_021D941E:
+ mov r0, #2
+ tst r0, r1
+ beq _021D9454
+ ldr r0, _021D9464 ; =0x000005F3
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_021D942C:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9454
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9440:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9454
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021D9454:
+ pop {r3, r4, r5, pc}
+ nop
+_021D9458: .word 0x021C48B8
+_021D945C: .word 0x000005DC
+_021D9460: .word MOD14_021D94BC
+_021D9464: .word 0x000005F3
+_021D9468: .word 0x000005EB
+_021D946C: .word 0x000005EA
+
+ thumb_func_start MOD14_021D9470
+MOD14_021D9470: ; 0x021D9470
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r5, #0x14
+ str r0, [sp]
+ bl MOD14_021DC4F8
+ add r7, r0, #0
+ ldrb r0, [r5, #8]
+ mov r4, #0
+ ldrb r6, [r5, #9]
+ cmp r0, #0
+ ble _021D94B6
+_021D9488:
+ add r3, r5, r4
+ mov r2, #0xc
+ ldrsb r2, [r3, r2]
+ ldr r0, [sp]
+ mov r1, #0
+ sub r2, r2, r6
+ ldr r0, [r0]
+ mvn r1, r1
+ add r2, r7, r2
+ bl FUN_0206B5E4
+ mov r1, #0xab
+ mov r2, #0
+ bl FUN_020672BC
+ cmp r0, #0
+ beq _021D94AE
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021D94AE:
+ ldrb r0, [r5, #8]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _021D9488
+_021D94B6:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021D94BC
+MOD14_021D94BC: ; 0x021D94BC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #3
+ bhi _021D95A4
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D94D4: ; jump table
+ .short _021D94DC - _021D94D4 - 2 ; case 0
+ .short _021D954E - _021D94D4 - 2 ; case 1
+ .short _021D9574 - _021D94D4 - 2 ; case 2
+ .short _021D9590 - _021D94D4 - 2 ; case 3
+_021D94DC:
+ bl MOD14_021DC3CC
+ cmp r0, #1
+ bne _021D952E
+ add r0, r4, #0
+ bl MOD14_021D9B84
+ cmp r0, #0
+ bne _021D950E
+ ldr r0, _021D95A8 ; =0x000005EB
+ bl FUN_020054C8
+ add r0, r4, #0
+ add r1, r4, #0
+ bl MOD14_021DBA5C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #9
+ bl MOD14_021DCB2C
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D950E:
+ ldr r0, _021D95AC ; =0x000005F3
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D952E:
+ ldr r0, _021D95A8 ; =0x000005EB
+ bl FUN_020054C8
+ add r0, r4, #0
+ add r1, r4, #0
+ bl MOD14_021DBA5C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #9
+ bl MOD14_021DCB2C
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D954E:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D95A4
+ add r0, r4, #0
+ bl MOD14_021DB934
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x25
+ bl MOD14_021DCB2C
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9574:
+ ldr r0, _021D95B0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D95A4
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9590:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D95A4
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021D95A4:
+ pop {r3, r4, r5, pc}
+ nop
+_021D95A8: .word 0x000005EB
+_021D95AC: .word 0x000005F3
+_021D95B0: .word 0x021C48B8
+
+ thumb_func_start MOD14_021D95B4
+MOD14_021D95B4: ; 0x021D95B4
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ cmp r1, #0
+ beq _021D95CA
+ cmp r1, #1
+ beq _021D9616
+ cmp r1, #2
+ beq _021D9648
+ pop {r4, r5, r6, pc}
+_021D95CA:
+ add r1, r5, #0
+ bl MOD14_021DBC00
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0xa
+ bl MOD14_021DCB2C
+ ldr r0, _021D9664 ; =0x000005EA
+ bl FUN_020054C8
+ add r0, r5, #0
+ bl MOD14_021DC3CC
+ cmp r0, #1
+ bne _021D9610
+ add r0, r5, #0
+ bl MOD14_021DC3E8
+ add r6, r0, #0
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0206B9AC
+ sub r0, r0, #1
+ cmp r6, r0
+ beq _021D9610
+ mov r0, #1
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD14_021DB934
+ pop {r4, r5, r6, pc}
+_021D9610:
+ mov r0, #2
+ str r0, [r4]
+ pop {r4, r5, r6, pc}
+_021D9616:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9662
+ add r0, r5, #0
+ bl MOD14_021DB934
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x26
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r4]
+ pop {r4, r5, r6, pc}
+_021D9648:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9662
+ add r0, r5, #0
+ bl MOD14_021D7674
+ add r0, r5, #0
+ bl MOD14_021D7620
+_021D9662:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D9664: .word 0x000005EA
+
+ thumb_func_start MOD14_021D9668
+MOD14_021D9668: ; 0x021D9668
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD14_021D9B84
+ cmp r0, #0
+ beq _021D96AC
+ add r0, r5, #0
+ mov r1, #0xac
+ mov r2, #0
+ bl MOD14_021DC58C
+ cmp r0, #0
+ beq _021D968C
+ mov r0, #6
+ str r0, [r4]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D968C:
+ add r0, r5, #0
+ bl MOD14_021DC3F8
+ cmp r0, #0
+ beq _021D96AC
+ add r0, r5, #0
+ mov r1, #0xa2
+ mov r2, #0
+ bl MOD14_021DC58C
+ cmp r0, #0
+ bne _021D96AC
+ mov r0, #6
+ str r0, [r4]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D96AC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021D96B0
+MOD14_021D96B0: ; 0x021D96B0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ cmp r1, #0
+ beq _021D96C6
+ cmp r1, #1
+ beq _021D971C
+ cmp r1, #2
+ beq _021D9748
+ pop {r3, r4, r5, pc}
+_021D96C6:
+ add r1, sp, #0
+ bl MOD14_021D9668
+ cmp r0, #0
+ beq _021D96F0
+ ldr r0, _021D9764 ; =0x000005F3
+ bl FUN_020054C8
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D96F0:
+ add r0, r5, #0
+ add r1, r5, #0
+ bl MOD14_021DBD34
+ ldr r0, _021D9768 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0xb
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D971C:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9762
+ ldr r0, _021D976C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D9762
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D9748:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9762
+ add r0, r5, #0
+ bl MOD14_021D7674
+ add r0, r5, #0
+ bl MOD14_021D7620
+_021D9762:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D9764: .word 0x000005F3
+_021D9768: .word 0x000005DC
+_021D976C: .word 0x021C48B8
+
+ thumb_func_start MOD14_021D9770
+MOD14_021D9770: ; 0x021D9770
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #8
+ bls _021D977E
+ b _021D9928
+_021D977E:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D978A: ; jump table
+ .short _021D979C - _021D978A - 2 ; case 0
+ .short _021D9818 - _021D978A - 2 ; case 1
+ .short _021D983A - _021D978A - 2 ; case 2
+ .short _021D9862 - _021D978A - 2 ; case 3
+ .short _021D9892 - _021D978A - 2 ; case 4
+ .short _021D98B4 - _021D978A - 2 ; case 5
+ .short _021D9928 - _021D978A - 2 ; case 6
+ .short _021D98E8 - _021D978A - 2 ; case 7
+ .short _021D9914 - _021D978A - 2 ; case 8
+_021D979C:
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0206B9AC
+ cmp r0, #6
+ beq _021D97F2
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #2
+ bne _021D97D2
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x23
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D97D2:
+ ldr r0, _021D992C ; =0x000005EB
+ bl FUN_020054C8
+ add r0, r4, #0
+ add r1, r4, #0
+ bl MOD14_021DBA5C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #9
+ bl MOD14_021DCB2C
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D97F2:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1b
+ bl MOD14_021DCB2C
+ add r0, r4, #0
+ mov r1, #5
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #7
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9818:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #9
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9928
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x23
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D983A:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x23
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9928
+ add r0, r4, #0
+ bl MOD14_021DB8D0
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD14_021DCB2C
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9862:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9928
+ add r0, r4, #0
+ add r1, r4, #0
+ bl MOD14_021DBC00
+ add r0, r4, #0
+ bl MOD14_021D7674
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xa
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9892:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xa
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9928
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x24
+ bl MOD14_021DCB2C
+ mov r0, #5
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D98B4:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x24
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9928
+ add r0, r4, #0
+ bl MOD14_021DB910
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #8
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D98E8:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9928
+ ldr r0, _021D9930 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D9928
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #8
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9914:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9928
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021D9928:
+ pop {r3, r4, r5, pc}
+ nop
+_021D992C: .word 0x000005EB
+_021D9930: .word 0x021C48B8
+
+ thumb_func_start MOD14_021D9934
+MOD14_021D9934: ; 0x021D9934
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #6
+ bhi _021D99F8
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D994C: ; jump table
+ .short _021D995A - _021D994C - 2 ; case 0
+ .short _021D99F0 - _021D994C - 2 ; case 1
+ .short _021D9AB2 - _021D994C - 2 ; case 2
+ .short _021D9AD8 - _021D994C - 2 ; case 3
+ .short _021D9B04 - _021D994C - 2 ; case 4
+ .short _021D9B32 - _021D994C - 2 ; case 5
+ .short _021D9B60 - _021D994C - 2 ; case 6
+_021D995A:
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021D9998
+ add r0, r4, #0
+ bl MOD14_021D9B84
+ cmp r0, #1
+ bne _021D9998
+ ldr r0, _021D9B78 ; =0x000005F3
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1b
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9998:
+ add r0, r4, #0
+ add r1, sp, #0
+ bl MOD14_021D7998
+ cmp r0, #0
+ beq _021D99D0
+ ldr r0, _021D9B78 ; =0x000005F3
+ bl FUN_020054C8
+ ldr r1, [sp]
+ add r0, r4, #0
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1b
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D99D0:
+ mov r1, #0x11
+ lsl r1, r1, #4
+ ldrh r1, [r4, r1]
+ add r0, r4, #0
+ mov r2, #0x13
+ bl MOD14_021DAA7C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D99F0:
+ bl MOD14_021DAAA8
+ cmp r0, #0
+ bne _021D99FA
+_021D99F8:
+ b _021D9B74
+_021D99FA:
+ ldr r0, _021D9B7C ; =0x000001C1
+ mov r1, #0
+ ldrsb r2, [r4, r0]
+ mvn r1, r1
+ cmp r2, r1
+ bne _021D9A22
+ sub r0, #0xad
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x20
+ bl MOD14_021DCB2C
+ mov r0, #6
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9A22:
+ sub r0, #0xb1
+ strh r2, [r4, r0]
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #2
+ ldr r1, _021D9B7C ; =0x000001C1
+ bne _021D9A62
+ ldrsb r1, [r4, r1]
+ add r0, r4, #0
+ bl MOD14_021DBDD8
+ cmp r0, #0
+ beq _021D9A92
+ add r0, r4, #0
+ bl MOD14_021D7674
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x20
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9A62:
+ ldrsb r1, [r4, r1]
+ add r0, r4, #0
+ bl MOD14_021DBE00
+ cmp r0, #0
+ beq _021D9A92
+ add r0, r4, #0
+ bl MOD14_021D7674
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x20
+ bl MOD14_021DCB2C
+ mov r0, #5
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9A92:
+ ldr r0, _021D9B78 ; =0x000005F3
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0xd
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9AB2:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9B74
+ ldr r0, _021D9B80 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D9B74
+ add r0, r4, #0
+ bl MOD14_021DAA98
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9AD8:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9B74
+ ldr r0, _021D9B80 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D9B74
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #6
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9B04:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x20
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9B74
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #6
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9B32:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x20
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9B74
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xd
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #6
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9B60:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9B74
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021D9B74:
+ pop {r3, r4, r5, pc}
+ nop
+_021D9B78: .word 0x000005F3
+_021D9B7C: .word 0x000001C1
+_021D9B80: .word 0x021C48B8
+
+ thumb_func_start MOD14_021D9B84
+MOD14_021D9B84: ; 0x021D9B84
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r1, #0x49
+ lsl r1, r1, #2
+ str r0, [sp]
+ ldr r0, [r0, r1]
+ bl FUN_0206B9AC
+ mov r6, #0
+ add r5, r6, #0
+ str r0, [sp, #4]
+ cmp r0, #0
+ ble _021D9BEC
+_021D9B9E:
+ mov r0, #0x49
+ ldr r1, [sp]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, r6, #0
+ bl FUN_0206B9B0
+ add r4, r0, #0
+ bl FUN_020669D4
+ add r7, r0, #0
+ add r0, r4, #0
+ mov r1, #0xac
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ bne _021D9BD2
+ add r0, r4, #0
+ mov r1, #0xa2
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021D9BD2
+ add r5, r5, #1
+_021D9BD2:
+ add r0, r4, #0
+ add r1, r7, #0
+ bl FUN_02066A20
+ cmp r5, #2
+ blt _021D9BE4
+ add sp, #8
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9BE4:
+ ldr r0, [sp, #4]
+ add r6, r6, #1
+ cmp r6, r0
+ blt _021D9B9E
+_021D9BEC:
+ ldr r0, [sp]
+ mov r1, #0xac
+ mov r2, #0
+ bl MOD14_021DC5D0
+ cmp r0, #0
+ beq _021D9C00
+ add sp, #8
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9C00:
+ ldr r0, [sp]
+ mov r1, #0xa2
+ mov r2, #0
+ bl MOD14_021DC5D0
+ cmp r0, #0
+ beq _021D9C14
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9C14:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021D9C1C
+MOD14_021D9C1C: ; 0x021D9C1C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0xac
+ mov r2, #0
+ add r5, r0, #0
+ bl MOD14_021DC58C
+ cmp r0, #0
+ beq _021D9C36
+ mov r0, #0x1f
+ str r0, [r4]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D9C36:
+ add r0, r5, #0
+ bl MOD14_021DC430
+ add r0, r5, #0
+ bl MOD14_021DC430
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0206EA98
+ cmp r0, #0
+ beq _021D9C56
+ mov r0, #0x1e
+ str r0, [r4]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D9C56:
+ add r0, r5, #0
+ mov r1, #0xa1
+ mov r2, #0
+ bl MOD14_021DC58C
+ cmp r0, #0
+ beq _021D9C6C
+ mov r0, #0x1d
+ str r0, [r4]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D9C6C:
+ add r0, r5, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021D9C92
+ add r0, r5, #0
+ bl MOD14_021DC3CC
+ cmp r0, #1
+ bne _021D9C92
+ add r0, r5, #0
+ bl MOD14_021D9B84
+ cmp r0, #0
+ beq _021D9C92
+ mov r0, #6
+ str r0, [r4]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D9C92:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021D9C98
+MOD14_021D9C98: ; 0x021D9C98
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #9
+ bhi _021D9D44
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D9CB0: ; jump table
+ .short _021D9CC4 - _021D9CB0 - 2 ; case 0
+ .short _021D9D1C - _021D9CB0 - 2 ; case 1
+ .short _021D9D86 - _021D9CB0 - 2 ; case 2
+ .short _021D9E0A - _021D9CB0 - 2 ; case 3
+ .short _021D9E96 - _021D9CB0 - 2 ; case 4
+ .short _021D9E62 - _021D9CB0 - 2 ; case 5
+ .short _021D9EC8 - _021D9CB0 - 2 ; case 6
+ .short _021D9EF2 - _021D9CB0 - 2 ; case 7
+ .short _021D9F36 - _021D9CB0 - 2 ; case 8
+ .short _021D9F62 - _021D9CB0 - 2 ; case 9
+_021D9CC4:
+ add r1, sp, #0
+ bl MOD14_021D9C1C
+ cmp r0, #0
+ beq _021D9CF0
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD14_021DBA44
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD14_021E5D98
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB2C
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9CF0:
+ ldr r0, _021D9F78 ; =0x000005F3
+ bl FUN_020054C8
+ ldr r1, [sp]
+ add r0, r4, #0
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1b
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #8
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9D1C:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9D44
+ add r0, r4, #0
+ bl MOD14_021E6160
+ cmp r0, #0x36
+ bgt _021D9D4E
+ bge _021D9D74
+ mov r2, #0
+ mvn r2, r2
+ cmp r0, r2
+ bgt _021D9D44
+ sub r1, r2, #1
+ cmp r0, r1
+ bge _021D9D46
+_021D9D44:
+ b _021D9F76
+_021D9D46:
+ beq _021D9D54
+ cmp r0, r2
+ beq _021D9D62
+ pop {r3, r4, r5, pc}
+_021D9D4E:
+ cmp r0, #0x37
+ beq _021D9D62
+ pop {r3, r4, r5, pc}
+_021D9D54:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1c
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D9D62:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #9
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9D74:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9D86:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9E70
+ add r0, r4, #0
+ bl MOD14_021DC458
+ add r2, r0, #0
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200ACF8
+ add r0, r4, #0
+ bl MOD14_021D9F80
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #2
+ bne _021D9DD0
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xe
+ bl MOD14_021DCB2C
+ mov r0, #0x6e
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _021D9E04
+_021D9DD0:
+ add r0, r4, #0
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021D9DF0
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xf
+ bl MOD14_021DCB2C
+ mov r0, #0x6e
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _021D9E04
+_021D9DF0:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x10
+ bl MOD14_021DCB2C
+ mov r0, #0x6e
+ mov r1, #2
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_021D9E04:
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9E0A:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9E70
+ add r0, r4, #0
+ bl MOD14_021DA1C0
+ cmp r0, #0
+ beq _021D9E48
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #2
+ bne _021D9E34
+ add r0, r4, #0
+ bl MOD14_021DBE34
+ b _021D9E3A
+_021D9E34:
+ add r0, r4, #0
+ bl MOD14_021DBE4C
+_021D9E3A:
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD14_021DBA44
+ mov r0, #5
+ str r0, [r5]
+ b _021D9E54
+_021D9E48:
+ add r0, r4, #0
+ mov r1, #0x20
+ bl MOD14_021DBA44
+ mov r0, #4
+ str r0, [r5]
+_021D9E54:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021D9E62:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ bne _021D9E72
+_021D9E70:
+ b _021D9F76
+_021D9E72:
+ ldr r0, _021D9F7C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D9F76
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #6
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9E96:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9F76
+ ldr r0, _021D9F7C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D9F76
+ add r0, r4, #0
+ mov r1, #0x21
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #6
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9EC8:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9F76
+ ldr r0, _021D9F7C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D9F76
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #7
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9EF2:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9F76
+ add r0, r4, #0
+ bl MOD14_021DA1C0
+ cmp r0, #0
+ beq _021D9F24
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #2
+ bne _021D9F1E
+ sub r0, #0xa4
+ ldr r0, [r4, r0]
+ mov r1, #0x25
+ bl MOD14_021DCB2C
+_021D9F1E:
+ add r0, r4, #0
+ bl MOD14_021D7674
+_021D9F24:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #9
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9F36:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021D9F76
+ ldr r0, _021D9F7C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D9F76
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #9
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D9F62:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021D9F76
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021D9F76:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D9F78: .word 0x000005F3
+_021D9F7C: .word 0x021C48B8
+
+ thumb_func_start MOD14_021D9F80
+MOD14_021D9F80: ; 0x021D9F80
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r1, #0x57
+ lsl r1, r1, #2
+ str r0, [sp]
+ add r7, r0, r1
+ ldr r0, [r0, #0x4c]
+ mov r4, #0
+ ldr r5, _021DA010 ; =0x021E6224
+ str r0, [r7, #0x10]
+ str r4, [sp, #4]
+_021D9F96:
+ ldrh r1, [r5]
+ ldr r0, [r7, #0x10]
+ add r6, r7, r4
+ bl MOD14_021DA168
+ strb r0, [r6, #4]
+ ldrb r0, [r6, #4]
+ cmp r0, #0
+ beq _021D9FAE
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+_021D9FAE:
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, #3
+ blo _021D9F96
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _021D9FC6
+ mov r0, #1
+ strb r0, [r7]
+ add sp, #8
+ strb r0, [r7, #1]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9FC6:
+ mov r0, #0
+ strb r0, [r7]
+ strb r0, [r7, #1]
+ strb r0, [r7, #2]
+ strb r0, [r7, #3]
+ mov r1, #0x12
+ ldr r0, [sp]
+ lsl r1, r1, #4
+ ldr r0, [r0, r1]
+ add r1, r1, #4
+ str r0, [r7, #0x14]
+ ldr r0, [sp]
+ ldr r0, [r0, r1]
+ str r0, [r7, #0x18]
+ ldr r0, [sp]
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ beq _021D9FF0
+ mov r0, #1
+ b _021D9FF2
+_021D9FF0:
+ mov r0, #0
+_021D9FF2:
+ mov r1, #0
+ str r0, [r7, #0x1c]
+ add r0, r7, #0
+ add r2, r1, #0
+_021D9FFA:
+ add r1, r1, #1
+ strh r2, [r0, #8]
+ add r0, r0, #2
+ cmp r1, #3
+ blo _021D9FFA
+ ldr r0, _021DA014 ; =MOD14_021DA018
+ add r1, r7, #0
+ bl FUN_0200CA44
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DA010: .word 0x021E6224
+_021DA014: .word MOD14_021DA018
+
+ thumb_func_start MOD14_021DA018
+MOD14_021DA018: ; 0x021DA018
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r0, [sp]
+ ldrb r0, [r1, #2]
+ str r1, [sp, #4]
+ cmp r0, #0x12
+ bhs _021DA0AE
+ add r0, r1, #0
+ ldrb r0, [r0, #3]
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x14]
+ add r0, #0xf
+ str r0, [sp, #0x14]
+ cmp r0, #0x1e
+ ble _021DA03A
+ mov r0, #0x1e
+ str r0, [sp, #0x14]
+_021DA03A:
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ bge _021DA08C
+_021DA042:
+ ldr r1, [sp, #4]
+ ldr r0, [sp, #4]
+ ldrb r1, [r1, #2]
+ ldr r0, [r0, #0x14]
+ ldr r2, [sp, #0xc]
+ bl FUN_0206B5E4
+ mov r1, #0xab
+ mov r2, #0
+ add r7, r0, #0
+ bl FUN_020672BC
+ cmp r0, #0
+ beq _021DA080
+ ldr r4, _021DA164 ; =0x021E6224
+ ldr r5, [sp, #4]
+ mov r6, #0
+_021DA064:
+ ldrh r1, [r4]
+ add r0, r7, #0
+ bl MOD14_021DA168
+ cmp r0, #0
+ beq _021DA076
+ ldrh r0, [r5, #8]
+ add r0, r0, #1
+ strh r0, [r5, #8]
+_021DA076:
+ add r6, r6, #1
+ add r4, r4, #2
+ add r5, r5, #2
+ cmp r6, #3
+ blo _021DA064
+_021DA080:
+ ldr r0, [sp, #0xc]
+ add r1, r0, #1
+ ldr r0, [sp, #0x14]
+ str r1, [sp, #0xc]
+ cmp r1, r0
+ blt _021DA042
+_021DA08C:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0x1e
+ bne _021DA0A4
+ ldr r0, [sp, #4]
+ mov r1, #0
+ strb r1, [r0, #3]
+ ldrb r0, [r0, #2]
+ add r1, r0, #1
+ ldr r0, [sp, #4]
+ add sp, #0x18
+ strb r1, [r0, #2]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA0A4:
+ add r1, r0, #0
+ ldr r0, [sp, #4]
+ add sp, #0x18
+ strb r1, [r0, #3]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA0AE:
+ add r0, r1, #0
+ ldr r0, [r0, #0x18]
+ bl FUN_0206B9AC
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ ble _021DA0FC
+_021DA0C2:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ ldr r0, [r0, #0x18]
+ bl FUN_0206B9B0
+ ldr r4, _021DA164 ; =0x021E6224
+ ldr r5, [sp, #4]
+ add r7, r0, #0
+ mov r6, #0
+_021DA0D4:
+ ldrh r1, [r4]
+ add r0, r7, #0
+ bl MOD14_021DA168
+ cmp r0, #0
+ beq _021DA0E6
+ ldrh r0, [r5, #8]
+ add r0, r0, #1
+ strh r0, [r5, #8]
+_021DA0E6:
+ add r6, r6, #1
+ add r4, r4, #2
+ add r5, r5, #2
+ cmp r6, #3
+ blo _021DA0D4
+ ldr r0, [sp, #8]
+ add r1, r0, #1
+ ldr r0, [sp, #0x10]
+ str r1, [sp, #8]
+ cmp r1, r0
+ blt _021DA0C2
+_021DA0FC:
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #0x1c]
+ cmp r0, #0
+ beq _021DA128
+ ldr r4, _021DA164 ; =0x021E6224
+ ldr r5, [sp, #4]
+ mov r6, #0
+_021DA10A:
+ ldr r0, [sp, #4]
+ ldrh r1, [r4]
+ ldr r0, [r0, #0x10]
+ bl MOD14_021DA168
+ cmp r0, #0
+ beq _021DA11E
+ ldrh r0, [r5, #8]
+ add r0, r0, #1
+ strh r0, [r5, #8]
+_021DA11E:
+ add r6, r6, #1
+ add r4, r4, #2
+ add r5, r5, #2
+ cmp r6, #3
+ blo _021DA10A
+_021DA128:
+ ldr r0, [sp, #4]
+ mov r1, #1
+ strb r1, [r0, #1]
+ mov r2, #0
+ add r1, r0, #0
+_021DA132:
+ ldrh r0, [r1, #8]
+ cmp r0, #1
+ bne _021DA14A
+ ldr r0, [sp, #4]
+ add r0, r0, r2
+ ldrb r0, [r0, #4]
+ cmp r0, #1
+ bne _021DA14A
+ ldr r0, [sp, #4]
+ mov r1, #0
+ strb r1, [r0, #1]
+ b _021DA152
+_021DA14A:
+ add r2, r2, #1
+ add r1, r1, #2
+ cmp r2, #3
+ blo _021DA132
+_021DA152:
+ ldr r0, [sp, #4]
+ mov r1, #1
+ strb r1, [r0]
+ ldr r0, [sp]
+ bl FUN_0200CAB4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DA164: .word 0x021E6224
+
+ thumb_func_start MOD14_021DA168
+MOD14_021DA168: ; 0x021DA168
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r1, #0
+ mov r1, #0
+ add r5, r0, #0
+ str r1, [sp, #4]
+ bl FUN_02066A6C
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0xac
+ mov r2, #0
+ bl FUN_020672BC
+ cmp r0, #0
+ bne _021DA1A8
+ mov r4, #0
+ add r7, r4, #0
+_021DA18C:
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x36
+ add r2, r7, #0
+ bl FUN_020672BC
+ cmp r6, r0
+ bne _021DA1A2
+ mov r0, #1
+ str r0, [sp, #4]
+ b _021DA1A8
+_021DA1A2:
+ add r4, r4, #1
+ cmp r4, #4
+ blt _021DA18C
+_021DA1A8:
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl FUN_02066A94
+ ldr r0, [sp, #4]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DA1B8
+MOD14_021DA1B8: ; 0x021DA1B8
+ mov r1, #0x57
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ bx lr
+
+ thumb_func_start MOD14_021DA1C0
+MOD14_021DA1C0: ; 0x021DA1C0
+ mov r1, #0x57
+ lsl r1, r1, #2
+ add r1, r0, r1
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq _021DA1D0
+ ldrb r0, [r1, #1]
+ bx lr
+_021DA1D0:
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD14_021DA1D4
+MOD14_021DA1D4: ; 0x021DA1D4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021DA1EA
+ cmp r0, #1
+ beq _021DA1FE
+ cmp r0, #2
+ beq _021DA256
+ pop {r3, r4, r5, pc}
+_021DA1EA:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #3
+ bl MOD14_021DCB2C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA1FE:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #3
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DA2BC
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCA38
+ mov r0, #0xa
+ bl FUN_020168D0
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_0206B330
+ mov r2, #0x12
+ lsl r2, r2, #4
+ add r1, r0, #0
+ ldr r0, [r4, r2]
+ add r2, #8
+ ldr r2, [r4, r2]
+ ldr r2, [r2, #0x18]
+ bl FUN_0206B484
+ mov r1, #0x4a
+ lsl r1, r1, #2
+ ldr r0, _021DA2C0 ; =0x020FA5FC
+ ldr r1, [r4, r1]
+ mov r2, #9
+ bl FUN_02006234
+ mov r1, #0x21
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA256:
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02006290
+ cmp r0, #0
+ beq _021DA2BC
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_0206B330
+ add r5, r0, #0
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02006260
+ mov r2, #0xf
+ mov r0, #3
+ mov r1, #0xa
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ mov r2, #0x12
+ lsl r2, r2, #4
+ ldr r0, [r4, r2]
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r1, r5, #0
+ ldr r2, [r2, #0x18]
+ bl FUN_0206B4B4
+ mov r0, #0x12
+ lsl r0, r0, #4
+ add r1, r4, #0
+ ldr r0, [r4, r0]
+ add r1, #0x40
+ bl MOD14_021DB580
+ mov r0, #0x45
+ lsl r0, r0, #2
+ add r0, r4, r0
+ add r1, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DC76C
+ ldr r1, _021DA2C4 ; =MOD14_021D76E8
+ add r0, r4, #0
+ bl MOD14_021D7610
+_021DA2BC:
+ pop {r3, r4, r5, pc}
+ nop
+_021DA2C0: .word 0x020FA5FC
+_021DA2C4: .word MOD14_021D76E8
+
+ thumb_func_start MOD14_021DA2C8
+MOD14_021DA2C8: ; 0x021DA2C8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021DA2DE
+ cmp r0, #1
+ beq _021DA2F2
+ cmp r0, #2
+ beq _021DA334
+ pop {r3, r4, r5, pc}
+_021DA2DE:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #3
+ bl MOD14_021DCB2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021DA2F2:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #3
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DA390
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl MOD14_021DCA38
+ mov r0, #0xa
+ bl FUN_020168D0
+ add r0, r5, #0
+ bl MOD14_021D83E4
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ ldr r0, _021DA394 ; =0x020FA6E8
+ add r1, r5, r1
+ mov r2, #9
+ bl FUN_02006234
+ mov r1, #0x21
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021DA334:
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02006290
+ cmp r0, #0
+ beq _021DA390
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_0206B330
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02006260
+ mov r2, #0xf
+ mov r0, #3
+ mov r1, #0xa
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ add r0, r5, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021DA374
+ add r0, r5, #0
+ add r1, r5, #0
+ bl MOD14_021DA39C
+_021DA374:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r1, r5, #0
+ add r2, r5, #0
+ bl MOD14_021DC76C
+ ldr r1, _021DA398 ; =MOD14_021D76E8
+ add r0, r5, #0
+ bl MOD14_021D7610
+ add r0, r5, #0
+ bl MOD14_021D7674
+_021DA390:
+ pop {r3, r4, r5, pc}
+ nop
+_021DA394: .word 0x020FA6E8
+_021DA398: .word MOD14_021D76E8
+
+ thumb_func_start MOD14_021DA39C
+MOD14_021DA39C: ; 0x021DA39C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r4, #8
+ ldrb r0, [r4, #4]
+ add r5, r1, #0
+ cmp r0, #0
+ beq _021DA3B0
+ cmp r0, #1
+ beq _021DA3D2
+ pop {r3, r4, r5, pc}
+_021DA3B0:
+ mov r0, #5
+ lsl r0, r0, #6
+ ldrb r0, [r5, r0]
+ mov r1, #6
+ strb r0, [r4, #7]
+ mov r0, #7
+ ldrsb r0, [r4, r0]
+ bl _s32_div_f
+ strb r1, [r4, #5]
+ mov r0, #7
+ ldrsb r0, [r4, r0]
+ mov r1, #6
+ bl _s32_div_f
+ strb r0, [r4, #6]
+ b _021DA3DA
+_021DA3D2:
+ mov r0, #5
+ lsl r0, r0, #6
+ ldrb r0, [r5, r0]
+ strb r0, [r4, #8]
+_021DA3DA:
+ add r0, r5, #0
+ bl MOD14_021DB934
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DA3E4
+MOD14_021DA3E4: ; 0x021DA3E4
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #6
+ bhi _021DA496
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DA3FC: ; jump table
+ .short _021DA40A - _021DA3FC - 2 ; case 0
+ .short _021DA41E - _021DA3FC - 2 ; case 1
+ .short _021DA488 - _021DA3FC - 2 ; case 2
+ .short _021DA522 - _021DA3FC - 2 ; case 3
+ .short _021DA546 - _021DA3FC - 2 ; case 4
+ .short _021DA58E - _021DA3FC - 2 ; case 5
+ .short _021DA5C2 - _021DA3FC - 2 ; case 6
+_021DA40A:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #3
+ bl MOD14_021DCB2C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+_021DA41E:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #3
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DA496
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCA38
+ mov r0, #0xa
+ bl FUN_020168D0
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0206F158
+ ldr r1, _021DA5D8 ; =0x021E6264
+ mov r2, #9
+ bl FUN_0206EFEC
+ mov r1, #0x85
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ sub r1, #0xf8
+ ldr r1, [r4, r1]
+ mov r2, #1
+ mov r3, #0
+ bl FUN_0206E314
+ ldr r0, _021DA5DC ; =0x0000004B
+ mov r1, #2
+ bl HandleLoadOverlay
+ mov r1, #0x85
+ lsl r1, r1, #2
+ ldr r0, _021DA5E0 ; =0x021EC68C
+ ldr r1, [r4, r1]
+ mov r2, #9
+ bl FUN_02006234
+ mov r1, #0x21
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+_021DA488:
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02006290
+ cmp r0, #0
+ bne _021DA498
+_021DA496:
+ b _021DA5D6
+_021DA498:
+ mov r0, #0x85
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0206E37C
+ ldr r1, _021DA5E4 ; =0x021E6A00
+ str r0, [r1, #8]
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02006260
+ mov r0, #0x85
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021DA5DC ; =0x0000004B
+ bl UnloadOverlayByID
+ ldr r0, _021DA5E4 ; =0x021E6A00
+ ldr r6, [r0, #8]
+ cmp r6, #0
+ beq _021DA4F4
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0206F158
+ lsl r1, r6, #0x10
+ lsr r1, r1, #0x10
+ mov r2, #1
+ mov r3, #9
+ bl FUN_0206EDD4
+ ldr r1, _021DA5E4 ; =0x021E6A00
+ add r0, r4, #0
+ ldr r1, [r1, #8]
+ add r2, r4, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl MOD14_021DC1E8
+ add r0, r4, #0
+ bl MOD14_021D7674
+_021DA4F4:
+ mov r2, #0xf
+ mov r0, #3
+ mov r1, #0xa
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ add r0, r4, r0
+ add r1, r4, #0
+ add r2, r4, #0
+ bl MOD14_021DC76C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD14_021DCB2C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+_021DA522:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DA5D6
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl MOD14_021DCB2C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+_021DA546:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DA5D6
+ ldr r0, _021DA5E4 ; =0x021E6A00
+ ldr r2, [r0, #8]
+ cmp r2, #0
+ bne _021DA566
+ add r0, r4, #0
+ bl MOD14_021D7620
+ pop {r4, r5, r6, pc}
+_021DA566:
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200AE38
+ add r0, r4, #0
+ mov r1, #0x10
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+_021DA58E:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DA5D6
+ ldr r0, _021DA5E8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021DA5D6
+ ldr r0, _021DA5EC ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+_021DA5C2:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021DA5D6
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021DA5D6:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DA5D8: .word 0x021E6264
+_021DA5DC: .word 0x0000004B
+_021DA5E0: .word 0x021EC68C
+_021DA5E4: .word 0x021E6A00
+_021DA5E8: .word 0x021C48B8
+_021DA5EC: .word 0x000005DD
+
+ thumb_func_start MOD14_021DA5F0
+MOD14_021DA5F0: ; 0x021DA5F0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #5
+ bhi _021DA6A2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DA608: ; jump table
+ .short _021DA614 - _021DA608 - 2 ; case 0
+ .short _021DA67A - _021DA608 - 2 ; case 1
+ .short _021DA6E4 - _021DA608 - 2 ; case 2
+ .short _021DA744 - _021DA608 - 2 ; case 3
+ .short _021DA76C - _021DA608 - 2 ; case 4
+ .short _021DA79E - _021DA608 - 2 ; case 5
+_021DA614:
+ bl MOD14_021DC430
+ ldr r1, _021DA7B4 ; =0x021E6A00
+ str r0, [r1, #4]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0206EA98
+ cmp r0, #0
+ beq _021DA648
+ ldr r0, _021DA7B8 ; =0x000005F3
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0x18
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA648:
+ mov r0, #0x67
+ ldr r2, _021DA7B4 ; =0x021E6A00
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r2, [r2, #4]
+ mov r1, #0
+ bl FUN_0200AE38
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021E5D98
+ add r0, r4, #0
+ mov r1, #0x17
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB2C
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA67A:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021DA6A2
+ add r0, r4, #0
+ bl MOD14_021E6160
+ cmp r0, #0x36
+ bgt _021DA6AC
+ bge _021DA6D2
+ mov r2, #0
+ mvn r2, r2
+ cmp r0, r2
+ bgt _021DA6A2
+ sub r1, r2, #1
+ cmp r0, r1
+ bge _021DA6A4
+_021DA6A2:
+ b _021DA7B2
+_021DA6A4:
+ beq _021DA6B2
+ cmp r0, r2
+ beq _021DA6C0
+ pop {r3, r4, r5, pc}
+_021DA6AC:
+ cmp r0, #0x37
+ beq _021DA6C0
+ pop {r3, r4, r5, pc}
+_021DA6B2:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1c
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021DA6C0:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #5
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA6D2:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1b
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA6E4:
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0206F158
+ ldr r1, _021DA7B4 ; =0x021E6A00
+ mov r2, #1
+ ldr r1, [r1, #4]
+ mov r3, #9
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0206ED38
+ cmp r0, #0
+ beq _021DA72A
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r4, #0
+ bl MOD14_021DC1E8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x16
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA72A:
+ add r0, r4, #0
+ mov r1, #0xe
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA744:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021DA7B2
+ add r0, r4, #0
+ mov r1, #0xf
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA76C:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DA7B2
+ ldr r0, _021DA7BC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021DA7B2
+ ldr r0, _021DA7C0 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #5
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA79E:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021DA7B2
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021DA7B2:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DA7B4: .word 0x021E6A00
+_021DA7B8: .word 0x000005F3
+_021DA7BC: .word 0x021C48B8
+_021DA7C0: .word 0x000005DD
+
+ thumb_func_start MOD14_021DA7C4
+MOD14_021DA7C4: ; 0x021DA7C4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #6
+ bhi _021DA878
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DA7DC: ; jump table
+ .short _021DA7EA - _021DA7DC - 2 ; case 0
+ .short _021DA850 - _021DA7DC - 2 ; case 1
+ .short _021DA8BA - _021DA7DC - 2 ; case 2
+ .short _021DA922 - _021DA7DC - 2 ; case 3
+ .short _021DA950 - _021DA7DC - 2 ; case 4
+ .short _021DA978 - _021DA7DC - 2 ; case 5
+ .short _021DA9AA - _021DA7DC - 2 ; case 6
+_021DA7EA:
+ bl MOD14_021DC544
+ ldr r1, _021DA9C0 ; =0x021E6A00
+ str r0, [r1]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_0206EA98
+ cmp r0, #0
+ beq _021DA81E
+ ldr r0, _021DA9C4 ; =0x000005F3
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0x18
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #5
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA81E:
+ mov r0, #0x67
+ ldr r2, _021DA9C0 ; =0x021E6A00
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r2, [r2]
+ mov r1, #0
+ bl FUN_0200AE38
+ add r0, r4, #0
+ mov r1, #0x1a
+ bl MOD14_021DBA44
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021E5D98
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl MOD14_021DCB2C
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA850:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021DA878
+ add r0, r4, #0
+ bl MOD14_021E6160
+ cmp r0, #0x36
+ bgt _021DA882
+ bge _021DA8A8
+ mov r2, #0
+ mvn r2, r2
+ cmp r0, r2
+ bgt _021DA878
+ sub r1, r2, #1
+ cmp r0, r1
+ bge _021DA87A
+_021DA878:
+ b _021DA9BE
+_021DA87A:
+ beq _021DA888
+ cmp r0, r2
+ beq _021DA896
+ pop {r3, r4, r5, pc}
+_021DA882:
+ cmp r0, #0x37
+ beq _021DA896
+ pop {r3, r4, r5, pc}
+_021DA888:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1c
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021DA896:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #6
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA8A8:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA8BA:
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0206F158
+ ldr r1, _021DA9C0 ; =0x021E6A00
+ mov r2, #1
+ ldr r1, [r1]
+ mov r3, #9
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_0206ED38
+ cmp r0, #0
+ beq _021DA908
+ add r0, r4, #0
+ bl MOD14_021DC538
+ cmp r0, #0
+ beq _021DA8EC
+ add r0, r4, #0
+ bl MOD14_021DC310
+ mov r0, #4
+ b _021DA8F8
+_021DA8EC:
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r4, #0
+ bl MOD14_021DC1E8
+ mov r0, #3
+_021DA8F8:
+ str r0, [r5]
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x17
+ bl MOD14_021DCB2C
+ pop {r3, r4, r5, pc}
+_021DA908:
+ add r0, r4, #0
+ mov r1, #0xe
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #5
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA922:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x17
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DA9BE
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x16
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA950:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021DA9BE
+ add r0, r4, #0
+ mov r1, #0x1b
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #5
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA978:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DA9BE
+ ldr r0, _021DA9C8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021DA9BE
+ ldr r0, _021DA9CC ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ mov r0, #6
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DA9AA:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021DA9BE
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021DA9BE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DA9C0: .word 0x021E6A00
+_021DA9C4: .word 0x000005F3
+_021DA9C8: .word 0x021C48B8
+_021DA9CC: .word 0x000005DD
+
+ thumb_func_start MOD14_021DA9D0
+MOD14_021DA9D0: ; 0x021DA9D0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #4
+ bhi _021DAA74
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DA9E8: ; jump table
+ .short _021DA9F2 - _021DA9E8 - 2 ; case 0
+ .short _021DAA06 - _021DA9E8 - 2 ; case 1
+ .short _021DAA2A - _021DA9E8 - 2 ; case 2
+ .short _021DAA42 - _021DA9E8 - 2 ; case 3
+ .short _021DAA5E - _021DA9E8 - 2 ; case 4
+_021DA9F2:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021DAA06:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x1a
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DAA74
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x11
+ bl MOD14_021DCB2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021DAA2A:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x11
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DAA74
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021DAA42:
+ ldr r0, _021DAA78 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0xf3
+ tst r1, r0
+ beq _021DAA74
+ add r0, #0x21
+ ldr r0, [r5, r0]
+ mov r1, #0x12
+ bl MOD14_021DCB2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021DAA5E:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x12
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DAA74
+ add r0, r5, #0
+ bl MOD14_021D7620
+_021DAA74:
+ pop {r3, r4, r5, pc}
+ nop
+_021DAA78: .word 0x021C48B8
+
+ thumb_func_start MOD14_021DAA7C
+MOD14_021DAA7C: ; 0x021DAA7C
+ push {r4, r5}
+ mov r3, #0x6f
+ lsl r3, r3, #2
+ mov r5, #0
+ str r5, [r0, r3]
+ add r4, r3, #5
+ strb r1, [r0, r4]
+ add r1, r3, #6
+ strh r2, [r0, r1]
+ add r1, r3, #4
+ strb r5, [r0, r1]
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DAA98
+MOD14_021DAA98: ; 0x021DAA98
+ mov r1, #0x6f
+ mov r2, #0
+ lsl r1, r1, #2
+ str r2, [r0, r1]
+ mov r2, #1
+ add r1, r1, #4
+ strb r2, [r0, r1]
+ bx lr
+
+ thumb_func_start MOD14_021DAAA8
+MOD14_021DAAA8: ; 0x021DAAA8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x6f
+ lsl r0, r0, #2
+ add r4, r5, r0
+ ldr r1, [r4]
+ cmp r1, #3
+ bls _021DAABA
+ b _021DABDC
+_021DAABA:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DAAC6: ; jump table
+ .short _021DAACE - _021DAAC6 - 2 ; case 0
+ .short _021DAB04 - _021DAAC6 - 2 ; case 1
+ .short _021DAB2C - _021DAAC6 - 2 ; case 2
+ .short _021DAB3E - _021DAAC6 - 2 ; case 3
+_021DAACE:
+ ldrb r0, [r4, #4]
+ cmp r0, #1
+ bne _021DAADA
+ mov r0, #1
+ str r0, [r4]
+ b _021DABDC
+_021DAADA:
+ mov r0, #5
+ ldrsb r1, [r4, r0]
+ sub r0, r0, #6
+ cmp r1, r0
+ bne _021DAAE8
+ mov r0, #0
+ strb r0, [r4, #5]
+_021DAAE8:
+ mov r1, #5
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD14_021DC2DC
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x1e
+ bl MOD14_021DCB2C
+ mov r0, #1
+ str r0, [r4]
+ b _021DABDC
+_021DAB04:
+ sub r0, #0xa8
+ ldr r0, [r5, r0]
+ mov r1, #0x1e
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DABDC
+ ldrh r1, [r4, #6]
+ add r0, r5, #0
+ bl MOD14_021DBA44
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB2C
+ mov r0, #2
+ str r0, [r4]
+ b _021DABDC
+_021DAB2C:
+ sub r0, #0xa8
+ ldr r0, [r5, r0]
+ mov r1, #0x18
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DABDC
+ mov r0, #3
+ str r0, [r4]
+_021DAB3E:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x1f
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DABDC
+ ldr r0, _021DABE0 ; =0x021C48B8
+ mov r1, #0x22
+ ldr r0, [r0, #0x48]
+ lsl r1, r1, #4
+ add r2, r0, #0
+ tst r2, r1
+ beq _021DAB86
+ mov r0, #5
+ ldrsb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, #5]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bge _021DAB6E
+ mov r0, #0x11
+ strb r0, [r4, #5]
+_021DAB6E:
+ mov r1, #5
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD14_021DC2DC
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x1f
+ bl MOD14_021DCB2C
+ b _021DABDC
+_021DAB86:
+ lsr r1, r1, #1
+ tst r1, r0
+ beq _021DABB6
+ mov r0, #5
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #5]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x12
+ blt _021DAB9E
+ mov r0, #0
+ strb r0, [r4, #5]
+_021DAB9E:
+ mov r1, #5
+ ldrsb r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD14_021DC2DC
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x1f
+ bl MOD14_021DCB2C
+ b _021DABDC
+_021DABB6:
+ mov r1, #1
+ tst r1, r0
+ beq _021DABC6
+ ldr r0, _021DABE4 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DABC6:
+ mov r1, #2
+ tst r0, r1
+ beq _021DABDC
+ ldr r0, _021DABE4 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0
+ mvn r0, r0
+ strb r0, [r4, #5]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DABDC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DABE0: .word 0x021C48B8
+_021DABE4: .word 0x000005DD
+
+ thumb_func_start MOD14_021DABE8
+MOD14_021DABE8: ; 0x021DABE8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ cmp r1, #0
+ beq _021DABFE
+ cmp r1, #1
+ beq _021DAC28
+ cmp r1, #2
+ beq _021DAC68
+ pop {r3, r4, r5, pc}
+_021DABFE:
+ bl MOD14_021DC424
+ add r1, r0, #0
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_0206B428
+ add r0, r5, #0
+ bl MOD14_021DB934
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #4
+ bl MOD14_021DCB2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021DAC28:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #4
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DAC7E
+ add r0, r5, #0
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021DAC60
+ add r0, r5, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021DAC60
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021DAC60:
+ add r0, r5, #0
+ bl MOD14_021D7620
+ pop {r3, r4, r5, pc}
+_021DAC68:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #6
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DAC7E
+ add r0, r5, #0
+ bl MOD14_021D7620
+_021DAC7E:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021DAC80
+MOD14_021DAC80: ; 0x021DAC80
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #5
+ bhi _021DAD02
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DAC98: ; jump table
+ .short _021DACA4 - _021DAC98 - 2 ; case 0
+ .short _021DACF2 - _021DAC98 - 2 ; case 1
+ .short _021DAEA2 - _021DAC98 - 2 ; case 2
+ .short _021DAEF8 - _021DAC98 - 2 ; case 3
+ .short _021DAF34 - _021DAC98 - 2 ; case 4
+ .short _021DAF4A - _021DAC98 - 2 ; case 5
+_021DACA4:
+ ldr r0, _021DAF60 ; =0x000005E4
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD14_021DC350
+ add r0, r4, #0
+ bl MOD14_021DC424
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD14_021DC358
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x28
+ bl MOD14_021DCB2C
+ mov r0, #0x58
+ str r0, [sp]
+ mov r0, #0x72
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ mov r2, #0xc0
+ mov r3, #0x38
+ bl MOD14_021DC5F8
+ mov r0, #0x81
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r1, #1
+ add r0, r0, #4
+ str r1, [r4, r0]
+ str r1, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DACF2:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x28
+ bl MOD14_021DCB98
+ cmp r0, #0
+ bne _021DAD04
+_021DAD02:
+ b _021DAF5E
+_021DAD04:
+ add r0, r4, #0
+ bl MOD14_021DB9C8
+ cmp r0, #0
+ beq _021DAD34
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021DAD34
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #3
+ beq _021DAD2C
+ ldr r1, _021DAF64 ; =MOD14_021DAF78
+ add r0, r4, #0
+ bl MOD14_021D7610
+ pop {r3, r4, r5, r6, r7, pc}
+_021DAD2C:
+ ldr r0, _021DAF68 ; =0x000005F3
+ bl FUN_020054C8
+ pop {r3, r4, r5, r6, r7, pc}
+_021DAD34:
+ ldr r0, _021DAF6C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0xf3
+ tst r0, r1
+ beq _021DAD6C
+ ldr r0, _021DAF70 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021DC350
+ add r0, r4, #0
+ bl MOD14_021DC424
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD14_021DC358
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x28
+ bl MOD14_021DCB2C
+ mov r0, #5
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DAD6C:
+ mov r1, #0x81
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ beq _021DADE4
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021DADE4
+ sub r0, r1, #4
+ ldr r0, [r4, r0]
+ add r2, r0, #1
+ sub r0, r1, #4
+ str r2, [r4, r0]
+ ldr r0, [r4, r0]
+ cmp r0, #0x14
+ bls _021DADE4
+ add r0, r4, #0
+ bl MOD14_021DC474
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD14_021DC2C4
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, r6, #0
+ bl FUN_0206B428
+ add r0, r4, #0
+ bl MOD14_021DB934
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021DADC6
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #8
+ bl MOD14_021DCB2C
+_021DADC6:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl MOD14_021DCB2C
+ mov r0, #0x81
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r0, r0, #4
+ str r1, [r4, r0]
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DADE4:
+ mov r0, #0x72
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD14_021DC664
+ cmp r0, #1
+ beq _021DADFC
+ cmp r0, #2
+ beq _021DAE1C
+ cmp r0, #3
+ beq _021DAE76
+ pop {r3, r4, r5, r6, r7, pc}
+_021DADFC:
+ add r0, r4, #0
+ bl MOD14_021DC474
+ mov r1, #0x7f
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ mov r2, #0
+ add r0, #8
+ str r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #0x10
+ str r2, [r4, r0]
+ add r1, #0xc
+ str r2, [r4, r1]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DAE1C:
+ mov r0, #0x72
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD14_021DC708
+ add r6, r0, #0
+ mov r0, #0x83
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r6, r0
+ bne _021DAE34
+ b _021DAF5E
+_021DAE34:
+ sub r7, r6, r0
+ add r0, r4, #0
+ bl MOD14_021DC474
+ add r1, r7, r0
+ bpl _021DAE44
+ add r1, #0x12
+ b _021DAE4A
+_021DAE44:
+ cmp r1, #0x12
+ blt _021DAE4A
+ sub r1, #0x12
+_021DAE4A:
+ mov r0, #0x83
+ lsl r0, r0, #2
+ str r6, [r4, r0]
+ add r0, r4, #0
+ bl MOD14_021DC358
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD14_021DC368
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x29
+ bl MOD14_021DCB2C
+ ldr r0, _021DAF74 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DAE76:
+ add r0, r4, #0
+ bl MOD14_021DC424
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD14_021DC474
+ cmp r5, r0
+ beq _021DAE8C
+ mov r1, #1
+ b _021DAE8E
+_021DAE8C:
+ mov r1, #0
+_021DAE8E:
+ mov r0, #0x81
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r1, r0, #4
+ mov r2, #0
+ str r2, [r4, r1]
+ mov r1, #1
+ add r0, r0, #4
+ str r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DAEA2:
+ mov r0, #0x82
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ bne _021DAEE2
+ sub r0, #0x40
+ add r0, r4, r0
+ bl MOD14_021DC664
+ cmp r0, #3
+ bne _021DAEE2
+ add r0, r4, #0
+ bl MOD14_021DC424
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD14_021DC474
+ cmp r6, r0
+ beq _021DAECE
+ mov r1, #1
+ b _021DAED0
+_021DAECE:
+ mov r1, #0
+_021DAED0:
+ mov r0, #0x81
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r1, r0, #4
+ mov r2, #0
+ str r2, [r4, r1]
+ mov r1, #1
+ add r0, r0, #4
+ str r1, [r4, r0]
+_021DAEE2:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x29
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DAF5E
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DAEF8:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DAF5E
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021DAF2E
+ add r0, r4, #0
+ bl MOD14_021DC3F0
+ cmp r0, #0
+ beq _021DAF2E
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB2C
+ mov r0, #4
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DAF2E:
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DAF34:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DAF5E
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DAF4A:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021DAF5E
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021DAF5E:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAF60: .word 0x000005E4
+_021DAF64: .word MOD14_021DAF78
+_021DAF68: .word 0x000005F3
+_021DAF6C: .word 0x021C48B8
+_021DAF70: .word 0x000005DD
+_021DAF74: .word 0x000005DC
+
+ thumb_func_start MOD14_021DAF78
+MOD14_021DAF78: ; 0x021DAF78
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r1, #0
+ add r4, r0, #0
+ ldr r0, [r6]
+ cmp r0, #3
+ bhi _021DAFFC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DAF92: ; jump table
+ .short _021DAF9A - _021DAF92 - 2 ; case 0
+ .short _021DAFEC - _021DAF92 - 2 ; case 1
+ .short _021DB144 - _021DAF92 - 2 ; case 2
+ .short _021DB19C - _021DAF92 - 2 ; case 3
+_021DAF9A:
+ ldr r0, _021DB1B4 ; =0x000005E4
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD14_021DC350
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021DC360
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021DC358
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x28
+ bl MOD14_021DCB2C
+ mov r0, #0x58
+ str r0, [sp]
+ mov r0, #0x72
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0xff
+ mov r2, #0xc0
+ mov r3, #0x38
+ bl MOD14_021DC5F8
+ mov r0, #0x81
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r1, #1
+ add r0, r0, #4
+ str r1, [r4, r0]
+ add sp, #8
+ str r1, [r6]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DAFEC:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x28
+ bl MOD14_021DCB98
+ cmp r0, #0
+ bne _021DAFFE
+_021DAFFC:
+ b _021DB1B0
+_021DAFFE:
+ add r0, r4, #0
+ bl MOD14_021DB9C8
+ cmp r0, #0
+ beq _021DB01E
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021DB01E
+ ldr r1, _021DB1B8 ; =MOD14_021DAC80
+ add r0, r4, #0
+ bl MOD14_021D7610
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB01E:
+ ldr r0, _021DB1BC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0xf3
+ tst r0, r1
+ beq _021DB046
+ ldr r0, _021DB1C0 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021DC350
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x28
+ bl MOD14_021DCB2C
+ mov r0, #3
+ str r0, [r6]
+_021DB046:
+ add r0, r4, #0
+ bl MOD14_021DB1C8
+ cmp r0, #0
+ beq _021DB072
+ ldr r0, _021DB1C0 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x2a
+ bl MOD14_021DCB2C
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x27
+ bl MOD14_021DCB2C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB072:
+ mov r0, #0x72
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD14_021DC664
+ cmp r0, #1
+ beq _021DB08C
+ cmp r0, #2
+ beq _021DB0AE
+ cmp r0, #3
+ beq _021DB116
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB08C:
+ add r0, r4, #0
+ bl MOD14_021DC474
+ mov r1, #0x7f
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ mov r2, #0
+ add r0, #8
+ str r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #0x10
+ str r2, [r4, r0]
+ add r1, #0xc
+ add sp, #8
+ str r2, [r4, r1]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB0AE:
+ mov r0, #0x72
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD14_021DC708
+ add r7, r0, #0
+ mov r0, #0x83
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r7, r0
+ beq _021DB1B0
+ sub r0, r7, r0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ bl MOD14_021DC474
+ ldr r1, [sp, #4]
+ add r5, r1, r0
+ bpl _021DB0D8
+ add r5, #8
+ b _021DB0DE
+_021DB0D8:
+ cmp r5, #8
+ blt _021DB0DE
+ sub r5, #8
+_021DB0DE:
+ mov r0, #0x83
+ lsl r0, r0, #2
+ str r7, [r4, r0]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD14_021DC358
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD14_021DC360
+ ldr r1, [sp, #4]
+ add r0, r4, #0
+ bl MOD14_021DC368
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x29
+ bl MOD14_021DCB2C
+ ldr r0, _021DB1C4 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #2
+ add sp, #8
+ str r0, [r6]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB116:
+ add r0, r4, #0
+ bl MOD14_021DC424
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD14_021DC474
+ cmp r5, r0
+ beq _021DB12C
+ mov r1, #1
+ b _021DB12E
+_021DB12C:
+ mov r1, #0
+_021DB12E:
+ mov r0, #0x81
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r1, r0, #4
+ mov r2, #0
+ str r2, [r4, r1]
+ mov r1, #1
+ add r0, r0, #4
+ add sp, #8
+ str r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB144:
+ mov r0, #0x82
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ bne _021DB184
+ sub r0, #0x40
+ add r0, r4, r0
+ bl MOD14_021DC664
+ cmp r0, #3
+ bne _021DB184
+ add r0, r4, #0
+ bl MOD14_021DC424
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD14_021DC474
+ cmp r5, r0
+ beq _021DB170
+ mov r1, #1
+ b _021DB172
+_021DB170:
+ mov r1, #0
+_021DB172:
+ mov r0, #0x81
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r1, r0, #4
+ mov r2, #0
+ str r2, [r4, r1]
+ mov r1, #1
+ add r0, r0, #4
+ str r1, [r4, r0]
+_021DB184:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x29
+ bl MOD14_021DCB98
+ cmp r0, #0
+ beq _021DB1B0
+ mov r0, #1
+ add sp, #8
+ str r0, [r6]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB19C:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD14_021DCBC0
+ cmp r0, #0
+ beq _021DB1B0
+ add r0, r4, #0
+ bl MOD14_021D7620
+_021DB1B0:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB1B4: .word 0x000005E4
+_021DB1B8: .word MOD14_021DAC80
+_021DB1BC: .word 0x021C48B8
+_021DB1C0: .word 0x000005DD
+_021DB1C4: .word 0x000005DC
+
+ thumb_func_start MOD14_021DB1C8
+MOD14_021DB1C8: ; 0x021DB1C8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x62
+ mov r1, #8
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r0, #8
+ ldr r0, [r4, r0]
+ bl FUN_02022144
+ mov r0, #0x62
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #8
+ beq _021DB1EA
+ mov r0, #1
+ pop {r4, pc}
+_021DB1EA:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DB1F0
+MOD14_021DB1F0: ; 0x021DB1F0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x62
+ add r4, r2, #0
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #8
+ bne _021DB21E
+ cmp r1, #0
+ bne _021DB21E
+ add r0, r4, #0
+ bl MOD14_021DC47C
+ add r1, r0, r5
+ cmp r1, #8
+ blo _021DB212
+ sub r1, #8
+_021DB212:
+ add r0, r4, #0
+ bl MOD14_021DC370
+ mov r0, #0x62
+ lsl r0, r0, #2
+ str r5, [r4, r0]
+_021DB21E:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021DB220
+MOD14_021DB220: ; 0x021DB220
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl FUN_02022510
+ mov r1, #0x12
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ ldr r2, [r4]
+ sub r0, r1, #4
+ str r2, [r5, r0]
+ ldr r0, [r4]
+ bl FUN_0206BB1C
+ mov r1, #0x49
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r4]
+ bl LoadPlayerDataAddress
+ mov r1, #0x69
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ sub r1, #0x8c
+ str r4, [r5, r1]
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xf
+ mov r3, #9
+ str r0, [r4, #8]
+ bl FUN_0200A86C
+ mov r2, #0x63
+ lsl r2, r2, #2
+ str r0, [r5, r2]
+ mov r0, #1
+ mov r1, #0x1a
+ sub r2, #0x22
+ mov r3, #9
+ bl FUN_0200A86C
+ mov r1, #0x19
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xbe
+ mov r3, #9
+ bl FUN_0200A86C
+ mov r2, #0x65
+ lsl r2, r2, #2
+ str r0, [r5, r2]
+ mov r0, #0
+ mov r1, #0x1a
+ add r2, #0x94
+ mov r3, #9
+ bl FUN_0200A86C
+ mov r1, #0x66
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #9
+ bl FUN_0200AA80
+ mov r1, #0x67
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ bl FUN_020669BC
+ add r1, r0, #0
+ mov r0, #9
+ bl FUN_02016998
+ mov r1, #0x1a
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ sub r0, r1, #4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bne _021DB2C8
+ bl ErrorHandling
+_021DB2C8:
+ mov r0, #0x69
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #2
+ str r0, [sp]
+ mov r0, #9
+ mov r2, #0
+ mov r3, #8
+ bl FUN_02077A84
+ mov r1, #0x4a
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r4, #4]
+ cmp r0, #4
+ beq _021DB2FA
+ mov r0, #9
+ str r0, [sp]
+ ldr r0, _021DB384 ; =0x021E622A
+ ldr r2, _021DB388 ; =MOD14_021DB9F4
+ mov r1, #3
+ add r3, r5, #0
+ bl FUN_020220C4
+ b _021DB30A
+_021DB2FA:
+ mov r0, #9
+ str r0, [sp]
+ ldr r0, _021DB38C ; =0x021E6236
+ ldr r2, _021DB388 ; =MOD14_021DB9F4
+ mov r1, #4
+ add r3, r5, #0
+ bl FUN_020220C4
+_021DB30A:
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #9
+ str r0, [sp]
+ ldr r0, _021DB390 ; =0x021E6246
+ ldr r2, _021DB394 ; =MOD14_021DB1F0
+ mov r1, #7
+ add r3, r5, #0
+ bl FUN_020220C4
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add r0, r1, #0
+ sub r0, #0x60
+ ldr r0, [r5, r0]
+ mov r2, #0
+ str r0, [r5]
+ add r0, r1, #0
+ sub r0, #0x5c
+ ldr r0, [r5, r0]
+ str r0, [r5, #4]
+ add r0, r1, #0
+ sub r0, #0x70
+ strh r2, [r5, r0]
+ sub r1, #0x6e
+ strh r2, [r5, r1]
+ add r0, r5, #0
+ ldr r1, [r4, #4]
+ add r0, #0x48
+ bl MOD14_021DB424
+ add r0, r5, #0
+ add r0, #0x4c
+ bl MOD14_021DB4C8
+ mov r0, #0x12
+ lsl r0, r0, #4
+ add r1, r5, #0
+ ldr r0, [r5, r0]
+ add r1, #0x40
+ bl MOD14_021DB49C
+ add r0, r5, #0
+ add r0, #0xa4
+ bl MOD14_021DB524
+ add r0, r5, #0
+ bl MOD14_021DB430
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD14_021DB470
+ add r5, #0x9c
+ add r0, r5, #0
+ bl MOD14_021DB574
+ pop {r3, r4, r5, pc}
+ nop
+_021DB384: .word 0x021E622A
+_021DB388: .word MOD14_021DB9F4
+_021DB38C: .word 0x021E6236
+_021DB390: .word 0x021E6246
+_021DB394: .word MOD14_021DB1F0
+
+ thumb_func_start MOD14_021DB398
+MOD14_021DB398: ; 0x021DB398
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ bl FUN_0202212C
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0202212C
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021DB3BE
+ bl FUN_02016A18
+_021DB3BE:
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200AB18
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ mov r0, #0x66
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200A8B8
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02077AC4
+ add r0, r4, #0
+ add r0, #0x4c
+ bl MOD14_021DB500
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD14_021DB490
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD14_021DB4BC
+ add r0, r4, #0
+ add r0, #0xa4
+ bl MOD14_021DB558
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DB424
+MOD14_021DB424: ; 0x021DB424
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ strh r1, [r0, #2]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DB430
+MOD14_021DB430: ; 0x021DB430
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #0
+ add r4, r5, #0
+ add r2, r1, #0
+ add r4, #8
+ bl MOD14_021DBA4C
+ mov r2, #0
+ add r0, r5, #0
+ strb r2, [r4, #8]
+ mov r1, #1
+ strb r1, [r4, #9]
+ add r0, #0x48
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021DB458
+ cmp r0, #4
+ beq _021DB45C
+ b _021DB462
+_021DB458:
+ strb r1, [r4, #4]
+ b _021DB464
+_021DB45C:
+ mov r0, #2
+ strb r0, [r4, #4]
+ b _021DB464
+_021DB462:
+ strb r2, [r4, #4]
+_021DB464:
+ mov r0, #1
+ strb r0, [r4, #0xb]
+ add r0, r5, #0
+ bl MOD14_021DB934
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021DB470
+MOD14_021DB470: ; 0x021DB470
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020690C8
+ add r2, r0, #0
+ mov r1, #0x1e
+ mov r0, #9
+ mul r1, r2
+ bl FUN_02016998
+ str r0, [r4]
+ mov r0, #0
+ strb r0, [r4, #8]
+ strb r0, [r4, #0xb]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DB490
+MOD14_021DB490: ; 0x021DB490
+ ldr r3, _021DB498 ; =0x02016A19
+ ldr r0, [r0]
+ bx r3
+ nop
+_021DB498: .word 0x02016A19
+
+ thumb_func_start MOD14_021DB49C
+MOD14_021DB49C: ; 0x021DB49C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ bl FUN_0206B330
+ strb r0, [r4]
+ mov r0, #0x14
+ mov r1, #9
+ bl FUN_020219F4
+ str r0, [r4, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD14_021DB580
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021DB4BC
+MOD14_021DB4BC: ; 0x021DB4BC
+ ldr r3, _021DB4C4 ; =0x02021A21
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021DB4C4: .word 0x02021A21
+
+ thumb_func_start MOD14_021DB4C8
+MOD14_021DB4C8: ; 0x021DB4C8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xc
+ mov r1, #9
+ bl FUN_020219F4
+ str r0, [r4, #0x14]
+ mov r0, #0xc
+ mov r1, #9
+ bl FUN_020219F4
+ str r0, [r4, #0x18]
+ mov r0, #0x12
+ mov r1, #9
+ bl FUN_020219F4
+ str r0, [r4, #0x1c]
+ mov r0, #0xc
+ mov r1, #9
+ bl FUN_020219F4
+ str r0, [r4, #0x20]
+ mov r0, #0x10
+ mov r1, #9
+ bl FUN_020219F4
+ str r0, [r4, #0x24]
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021DB500
+MOD14_021DB500: ; 0x021DB500
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x18]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x1c]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x20]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x24]
+ bl FUN_02021A20
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021DB524
+MOD14_021DB524: ; 0x021DB524
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r4, #0
+ strb r4, [r6]
+ strb r4, [r6, #1]
+ str r4, [r6, #4]
+ add r5, r6, #0
+ add r7, r4, #0
+_021DB534:
+ add r0, r6, r4
+ strb r7, [r0, #2]
+ mov r0, #0xc
+ mov r1, #9
+ bl FUN_020219F4
+ str r0, [r5, #0x30]
+ mov r0, #0xc
+ mov r1, #9
+ bl FUN_020219F4
+ str r0, [r5, #0x34]
+ add r4, r4, #1
+ add r5, #0x30
+ cmp r4, #2
+ blt _021DB534
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DB558
+MOD14_021DB558: ; 0x021DB558
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021DB55E:
+ ldr r0, [r5, #0x30]
+ bl FUN_02021A20
+ ldr r0, [r5, #0x34]
+ bl FUN_02021A20
+ add r4, r4, #1
+ add r5, #0x30
+ cmp r4, #2
+ blt _021DB55E
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021DB574
+MOD14_021DB574: ; 0x021DB574
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #2]
+ strb r1, [r0, #1]
+ strh r1, [r0, #4]
+ bx lr
+
+ thumb_func_start MOD14_021DB580
+MOD14_021DB580: ; 0x021DB580
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ bl FUN_0206B43C
+ strb r0, [r4, #1]
+ ldrb r1, [r4]
+ ldr r2, [r4, #4]
+ add r0, r5, #0
+ bl FUN_0206B484
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DB59C
+MOD14_021DB59C: ; 0x021DB59C
+ push {r4, lr}
+ add r2, r0, #0
+ add r4, r2, #0
+ add r2, #0x40
+ add r0, r1, #0
+ ldrb r1, [r2]
+ add r4, #0x40
+ bl FUN_0206B43C
+ strb r0, [r4, #1]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DB5B4
+MOD14_021DB5B4: ; 0x021DB5B4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r4, #0
+ tst r2, r1
+ beq _021DB5D0
+ add r0, r5, #0
+ sub r1, #0x21
+ add r2, r4, #0
+ bl MOD14_021DB61C
+ add r4, r0, #0
+ b _021DB60C
+_021DB5D0:
+ mov r1, #0x10
+ tst r1, r0
+ beq _021DB5E4
+ add r0, r5, #0
+ mov r1, #1
+ add r2, r4, #0
+ bl MOD14_021DB61C
+ add r4, r0, #0
+ b _021DB60C
+_021DB5E4:
+ mov r2, #0x40
+ add r1, r0, #0
+ tst r1, r2
+ beq _021DB5FA
+ add r0, r5, #0
+ add r1, r4, #0
+ sub r2, #0x41
+ bl MOD14_021DB61C
+ add r4, r0, #0
+ b _021DB60C
+_021DB5FA:
+ mov r1, #0x80
+ tst r0, r1
+ beq _021DB60C
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD14_021DB61C
+ add r4, r0, #0
+_021DB60C:
+ cmp r4, #1
+ bne _021DB616
+ add r0, r5, #0
+ bl MOD14_021DB934
+_021DB616:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DB61C
+MOD14_021DB61C: ; 0x021DB61C
+ push {r4, lr}
+ add r3, r0, #0
+ add r3, #8
+ ldrb r4, [r3, #4]
+ cmp r4, #4
+ bhi _021DB66A
+ add r4, r4, r4
+ add r4, pc
+ ldrh r4, [r4, #6]
+ lsl r4, r4, #0x10
+ asr r4, r4, #0x10
+ add pc, r4
+_021DB634: ; jump table
+ .short _021DB63E - _021DB634 - 2 ; case 0
+ .short _021DB720 - _021DB634 - 2 ; case 1
+ .short _021DB69E - _021DB634 - 2 ; case 2
+ .short _021DB6F4 - _021DB634 - 2 ; case 3
+ .short _021DB6C8 - _021DB634 - 2 ; case 4
+_021DB63E:
+ cmp r1, #0
+ beq _021DB666
+ mov r2, #5
+ ldrsb r4, [r3, r2]
+ add r1, r4, r1
+ strb r1, [r3, #5]
+ ldrsb r1, [r3, r2]
+ cmp r1, #0
+ bge _021DB654
+ add r1, r2, #0
+ b _021DB65A
+_021DB654:
+ cmp r1, #6
+ blt _021DB65A
+ mov r1, #0
+_021DB65A:
+ mov r2, #6
+ ldrsb r2, [r3, r2]
+ bl MOD14_021DBA4C
+ mov r0, #1
+ pop {r4, pc}
+_021DB666:
+ cmp r2, #0
+ bne _021DB66C
+_021DB66A:
+ b _021DB78A
+_021DB66C:
+ mov r1, #6
+ ldrsb r1, [r3, r1]
+ add r2, r1, r2
+ bpl _021DB67C
+ mov r1, #2
+ mov r2, #0
+ strb r1, [r3, #4]
+ b _021DB692
+_021DB67C:
+ cmp r2, #4
+ ble _021DB692
+ mov r1, #5
+ ldrsb r1, [r3, r1]
+ mov r2, #4
+ cmp r1, #5
+ bne _021DB68E
+ add r1, r2, #0
+ b _021DB690
+_021DB68E:
+ mov r1, #3
+_021DB690:
+ strb r1, [r3, #4]
+_021DB692:
+ mov r1, #5
+ ldrsb r1, [r3, r1]
+ bl MOD14_021DBA4C
+ mov r0, #1
+ pop {r4, pc}
+_021DB69E:
+ cmp r2, #0
+ ble _021DB6B2
+ mov r2, #0
+ strb r2, [r3, #4]
+ mov r1, #5
+ ldrsb r1, [r3, r1]
+ bl MOD14_021DBA4C
+ mov r0, #1
+ pop {r4, pc}
+_021DB6B2:
+ bge _021DB78A
+ mov r0, #5
+ ldrsb r0, [r3, r0]
+ cmp r0, #5
+ bne _021DB6C0
+ mov r0, #4
+ b _021DB6C2
+_021DB6C0:
+ mov r0, #3
+_021DB6C2:
+ strb r0, [r3, #4]
+ mov r0, #1
+ pop {r4, pc}
+_021DB6C8:
+ cmp r2, #0
+ bge _021DB6DE
+ mov r1, #0
+ strb r1, [r3, #4]
+ mov r1, #5
+ ldrsb r1, [r3, r1]
+ mov r2, #4
+ bl MOD14_021DBA4C
+ mov r0, #1
+ pop {r4, pc}
+_021DB6DE:
+ ble _021DB6E8
+ mov r0, #2
+ strb r0, [r3, #4]
+ mov r0, #1
+ pop {r4, pc}
+_021DB6E8:
+ cmp r1, #0
+ beq _021DB78A
+ mov r0, #3
+ strb r0, [r3, #4]
+ mov r0, #1
+ pop {r4, pc}
+_021DB6F4:
+ cmp r2, #0
+ bge _021DB70A
+ mov r1, #0
+ strb r1, [r3, #4]
+ mov r1, #5
+ ldrsb r1, [r3, r1]
+ mov r2, #4
+ bl MOD14_021DBA4C
+ mov r0, #1
+ pop {r4, pc}
+_021DB70A:
+ ble _021DB714
+ mov r0, #2
+ strb r0, [r3, #4]
+ mov r0, #1
+ pop {r4, pc}
+_021DB714:
+ cmp r1, #0
+ beq _021DB78A
+ mov r0, #4
+ strb r0, [r3, #4]
+ mov r0, #1
+ pop {r4, pc}
+_021DB720:
+ mov r4, #8
+ ldrsb r0, [r3, r4]
+ cmp r2, #0
+ bge _021DB742
+ cmp r0, #6
+ bne _021DB732
+ mov r1, #5
+ strb r1, [r3, #8]
+ b _021DB77E
+_021DB732:
+ sub r1, r0, #2
+ strb r1, [r3, #8]
+ ldrsb r1, [r3, r4]
+ cmp r1, #0
+ bge _021DB77E
+ mov r1, #6
+ strb r1, [r3, #8]
+ b _021DB77E
+_021DB742:
+ ble _021DB75E
+ cmp r0, #6
+ bne _021DB74E
+ mov r1, #0
+ strb r1, [r3, #8]
+ b _021DB77E
+_021DB74E:
+ add r1, r0, #2
+ strb r1, [r3, #8]
+ ldrsb r1, [r3, r4]
+ cmp r1, #6
+ blt _021DB77E
+ mov r1, #6
+ strb r1, [r3, #8]
+ b _021DB77E
+_021DB75E:
+ cmp r1, #0
+ bge _021DB76E
+ mov r1, #1
+ tst r1, r0
+ beq _021DB77E
+ sub r1, r0, #1
+ strb r1, [r3, #8]
+ b _021DB77E
+_021DB76E:
+ ble _021DB77E
+ cmp r0, #6
+ beq _021DB77E
+ mov r1, #1
+ tst r1, r0
+ bne _021DB77E
+ add r1, r0, #1
+ strb r1, [r3, #8]
+_021DB77E:
+ mov r1, #8
+ ldrsb r1, [r3, r1]
+ cmp r0, r1
+ beq _021DB78A
+ mov r0, #1
+ pop {r4, pc}
+_021DB78A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DB790
+MOD14_021DB790: ; 0x021DB790
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r4, #0
+ tst r2, r1
+ beq _021DB7AC
+ add r0, r5, #0
+ sub r1, #0x21
+ add r2, r4, #0
+ bl MOD14_021DB80C
+ add r4, r0, #0
+ b _021DB7FE
+_021DB7AC:
+ mov r1, #0x10
+ tst r1, r0
+ beq _021DB7C0
+ add r0, r5, #0
+ mov r1, #1
+ add r2, r4, #0
+ bl MOD14_021DB80C
+ add r4, r0, #0
+ b _021DB7FE
+_021DB7C0:
+ mov r2, #0x40
+ add r1, r0, #0
+ tst r1, r2
+ beq _021DB7D6
+ add r0, r5, #0
+ add r1, r4, #0
+ sub r2, #0x41
+ bl MOD14_021DB80C
+ add r4, r0, #0
+ b _021DB7FE
+_021DB7D6:
+ mov r2, #0x80
+ add r1, r0, #0
+ tst r1, r2
+ beq _021DB7EC
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD14_021DB80C
+ add r4, r0, #0
+ b _021DB7FE
+_021DB7EC:
+ lsl r1, r2, #2
+ tst r1, r0
+ beq _021DB7F6
+ mov r4, #3
+ b _021DB7FE
+_021DB7F6:
+ add r2, #0x80
+ tst r0, r2
+ beq _021DB7FE
+ mov r4, #4
+_021DB7FE:
+ cmp r4, #1
+ bne _021DB808
+ add r0, r5, #0
+ bl MOD14_021DB934
+_021DB808:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021DB80C
+MOD14_021DB80C: ; 0x021DB80C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r4, r7, #0
+ add r4, #8
+ ldrb r3, [r4, #4]
+ add r6, r7, #0
+ add r6, #0x14
+ cmp r3, #0
+ bne _021DB8C6
+ cmp r1, #0
+ beq _021DB874
+ mov r2, #5
+ ldrsb r2, [r4, r2]
+ add r5, r2, r1
+ bl MOD14_021DC3F4
+ mov r1, #0xc
+ tst r0, r1
+ beq _021DB858
+ ldrb r0, [r6, #4]
+ ldrb r3, [r6, #6]
+ add r2, r5, #0
+ add r1, r5, #0
+ cmp r3, r0
+ bls _021DB844
+ sub r0, r3, r0
+ sub r1, r5, r0
+ b _021DB848
+_021DB844:
+ sub r0, r0, r3
+ add r2, r5, r0
+_021DB848:
+ cmp r1, #0
+ bge _021DB850
+ mov r0, #3
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB850:
+ cmp r2, #6
+ blt _021DB864
+ mov r0, #4
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB858:
+ cmp r5, #0
+ blt _021DB860
+ cmp r5, #6
+ blt _021DB864
+_021DB860:
+ mov r0, #2
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB864:
+ mov r2, #6
+ ldrsb r2, [r4, r2]
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD14_021DBA4C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB874:
+ cmp r2, #0
+ beq _021DB8C6
+ mov r1, #6
+ ldrsb r1, [r4, r1]
+ add r5, r1, r2
+ bl MOD14_021DC3F4
+ mov r1, #0xc
+ tst r0, r1
+ beq _021DB8AA
+ ldrb r0, [r6, #5]
+ ldrb r3, [r6, #7]
+ add r2, r5, #0
+ add r1, r5, #0
+ cmp r3, r0
+ bls _021DB89A
+ sub r0, r3, r0
+ sub r1, r5, r0
+ b _021DB89E
+_021DB89A:
+ sub r0, r0, r3
+ add r2, r5, r0
+_021DB89E:
+ cmp r1, #0
+ blt _021DB8A6
+ cmp r2, #5
+ blt _021DB8B6
+_021DB8A6:
+ mov r0, #2
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB8AA:
+ cmp r5, #0
+ blt _021DB8B2
+ cmp r5, #5
+ blt _021DB8B6
+_021DB8B2:
+ mov r0, #2
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB8B6:
+ mov r1, #5
+ ldrsb r1, [r4, r1]
+ add r0, r7, #0
+ add r2, r5, #0
+ bl MOD14_021DBA4C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB8C6:
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DB8D0
+MOD14_021DB8D0: ; 0x021DB8D0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r5, #0
+ add r4, #8
+ bl MOD14_021DC3F4
+ cmp r0, #2
+ bne _021DB8FA
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0206B9AC
+ strb r0, [r4, #8]
+ mov r0, #8
+ ldrsb r0, [r4, r0]
+ cmp r0, #6
+ blt _021DB8FE
+ mov r0, #5
+ strb r0, [r4, #8]
+ b _021DB8FE
+_021DB8FA:
+ mov r0, #0
+ strb r0, [r4, #8]
+_021DB8FE:
+ ldrb r0, [r4, #4]
+ strb r0, [r4, #9]
+ mov r0, #1
+ strb r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD14_021DB934
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DB910
+MOD14_021DB910: ; 0x021DB910
+ push {r4, lr}
+ add r4, r0, #0
+ add r3, r4, #0
+ add r3, #8
+ mov r1, #0
+ strb r1, [r3, #4]
+ mov r2, #9
+ ldrsb r2, [r3, r2]
+ cmp r2, #0
+ beq _021DB92A
+ add r2, r1, #0
+ bl MOD14_021DBA4C
+_021DB92A:
+ add r0, r4, #0
+ bl MOD14_021DB934
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DB934
+MOD14_021DB934: ; 0x021DB934
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r5, #0
+ add r4, #8
+ mov r1, #0
+ strb r1, [r4, #0xa]
+ ldrb r0, [r4, #4]
+ cmp r0, #4
+ bhi _021DB994
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DB952: ; jump table
+ .short _021DB95C - _021DB952 - 2 ; case 0
+ .short _021DB96C - _021DB952 - 2 ; case 1
+ .short _021DB994 - _021DB952 - 2 ; case 2
+ .short _021DB994 - _021DB952 - 2 ; case 3
+ .short _021DB994 - _021DB952 - 2 ; case 4
+_021DB95C:
+ mov r2, #7
+ ldrsb r2, [r4, r2]
+ ldr r0, [r5]
+ sub r1, r1, #1
+ bl FUN_0206B5E4
+ str r0, [r4]
+ b _021DB998
+_021DB96C:
+ mov r0, #8
+ ldrsb r6, [r4, r0]
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0206B9AC
+ cmp r6, r0
+ bge _021DB98E
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_0206B9B0
+ str r0, [r4]
+ b _021DB998
+_021DB98E:
+ mov r0, #0
+ str r0, [r4]
+ b _021DB998
+_021DB994:
+ mov r0, #0
+ str r0, [r4]
+_021DB998:
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021DB9C4
+ mov r1, #0xab
+ mov r2, #0
+ bl FUN_020672BC
+ cmp r0, #0
+ beq _021DB9C4
+ mov r0, #1
+ strb r0, [r4, #0xa]
+ add r0, r5, #0
+ bl MOD14_021DC3F4
+ mov r1, #6
+ tst r0, r1
+ bne _021DB9C4
+ ldr r1, [r4]
+ add r0, r5, #0
+ add r2, r5, #0
+ bl MOD14_021DBE88
+_021DB9C4:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DB9C8
+MOD14_021DB9C8: ; 0x021DB9C8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x61
+ ldr r1, _021DB9F0 ; =0x0000FFFF
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r0, #8
+ ldr r0, [r4, r0]
+ bl FUN_02022144
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ ldr r0, _021DB9F0 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021DB9EC
+ mov r0, #1
+ pop {r4, pc}
+_021DB9EC:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021DB9F0: .word 0x0000FFFF
+
+ thumb_func_start MOD14_021DB9F4
+MOD14_021DB9F4: ; 0x021DB9F4
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ add r4, r2, #0
+ cmp r5, #0
+ bne _021DBA0E
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r2, [r4, r0]
+ ldr r1, _021DBA40 ; =0x0000FFFF
+ cmp r2, r1
+ bne _021DBA0E
+ str r6, [r4, r0]
+_021DBA0E:
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ bne _021DBA3C
+ cmp r6, #2
+ bne _021DBA3C
+ cmp r5, #0
+ beq _021DBA2A
+ cmp r5, #1
+ beq _021DBA34
+ cmp r5, #3
+ beq _021DBA34
+ pop {r4, r5, r6, pc}
+_021DBA2A:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD14_021DC1A0
+ pop {r4, r5, r6, pc}
+_021DBA34:
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021DC1A0
+_021DBA3C:
+ pop {r4, r5, r6, pc}
+ nop
+_021DBA40: .word 0x0000FFFF
+
+ thumb_func_start MOD14_021DBA44
+MOD14_021DBA44: ; 0x021DBA44
+ mov r2, #0x43
+ lsl r2, r2, #2
+ str r1, [r0, r2]
+ bx lr
+
+ thumb_func_start MOD14_021DBA4C
+MOD14_021DBA4C: ; 0x021DBA4C
+ add r0, #8
+ mov r3, #6
+ strb r1, [r0, #5]
+ mul r3, r2
+ strb r2, [r0, #6]
+ add r1, r1, r3
+ strb r1, [r0, #7]
+ bx lr
+
+ thumb_func_start MOD14_021DBA5C
+MOD14_021DBA5C: ; 0x021DBA5C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r7, r0, #0
+ add r4, r6, #0
+ add r5, r6, #0
+ add r0, r6, #0
+ add r4, #0x14
+ add r5, #8
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021DBA98
+ bl FUN_020690C8
+ add r2, r0, #0
+ ldr r0, [r5]
+ ldr r1, [r4]
+ bl MIi_CpuCopy32
+ mov r0, #0x12
+ mov r2, #7
+ lsl r0, r0, #4
+ mov r1, #0
+ ldrsb r2, [r5, r2]
+ ldr r0, [r7, r0]
+ mvn r1, r1
+ bl FUN_0206B2FC
+ mov r0, #0
+ b _021DBAB6
+_021DBA98:
+ bl FUN_020690C4
+ add r2, r0, #0
+ ldr r0, [r5]
+ ldr r1, [r4]
+ bl MIi_CpuCopy32
+ mov r0, #0x49
+ mov r1, #8
+ lsl r0, r0, #2
+ ldrsb r1, [r5, r1]
+ ldr r0, [r7, r0]
+ bl FUN_0206B938
+ mov r0, #1
+_021DBAB6:
+ strb r0, [r4, #0xb]
+ ldr r1, [r4]
+ add r0, r6, #0
+ bl MOD14_021DC1A8
+ mov r0, #5
+ ldrsb r0, [r5, r0]
+ strb r0, [r4, #6]
+ ldrb r0, [r4, #6]
+ strb r0, [r4, #4]
+ mov r0, #6
+ ldrsb r0, [r5, r0]
+ strb r0, [r4, #7]
+ ldrb r0, [r4, #7]
+ strb r0, [r4, #5]
+ mov r0, #2
+ strb r0, [r6, #0x13]
+ mov r0, #0
+ strb r0, [r6, #0x12]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DBAE0
+MOD14_021DBAE0: ; 0x021DBAE0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r6, r1, #0
+ add r7, r0, #0
+ add r6, #0x14
+ mov r0, #1
+ strb r0, [r6, #0xa]
+ add r0, r1, #0
+ str r1, [sp, #4]
+ bl MOD14_021DC3E0
+ str r0, [sp, #0x14]
+ bl FUN_020690C8
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #4]
+ add r1, sp, #0x30
+ ldr r5, [r0, #0x14]
+ add r0, sp, #0x24
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r2, sp, #0x2c
+ add r3, sp, #0x28
+ bl MOD14_021DC4A4
+ ldr r0, [sp, #0x28]
+ ldr r1, [sp, #0x24]
+ str r0, [sp, #0x18]
+ cmp r0, r1
+ bhi _021DBBA6
+ mov r1, #6
+ mul r1, r0
+ str r1, [sp, #8]
+_021DBB26:
+ ldr r1, [sp, #0x30]
+ ldr r0, [sp, #8]
+ str r1, [sp, #0x1c]
+ add r4, r1, r0
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x1c]
+ cmp r0, r1
+ bhi _021DBB94
+_021DBB36:
+ mov r0, #0x12
+ lsl r0, r0, #4
+ mov r1, #0
+ ldr r0, [r7, r0]
+ mvn r1, r1
+ add r2, r4, #0
+ bl FUN_0206B5E4
+ mov r1, #0xab
+ mov r2, #0
+ str r0, [sp, #0x20]
+ bl FUN_020672BC
+ cmp r0, #0
+ beq _021DBB86
+ ldr r0, [sp, #0x20]
+ ldr r2, [sp, #0x10]
+ add r1, r5, #0
+ bl MIi_CpuCopy32
+ mov r0, #0x12
+ lsl r0, r0, #4
+ mov r1, #0
+ ldr r0, [r7, r0]
+ mvn r1, r1
+ add r2, r4, #0
+ bl FUN_0206B2FC
+ ldr r0, [sp, #0x10]
+ add r5, r5, r0
+ ldr r0, [sp, #0xc]
+ add r1, r6, r0
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ strb r4, [r1, #0xc]
+ cmp r4, r0
+ bne _021DBB86
+ mov r0, #0
+ strb r0, [r6, #0xa]
+_021DBB86:
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x2c]
+ add r0, r0, #1
+ add r4, r4, #1
+ str r0, [sp, #0x1c]
+ cmp r0, r1
+ bls _021DBB36
+_021DBB94:
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #0x24]
+ add r0, r0, #6
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x18]
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ cmp r0, r1
+ bls _021DBB26
+_021DBBA6:
+ ldr r0, [sp, #0xc]
+ strb r0, [r6, #8]
+ ldr r1, [sp, #0x28]
+ mov r0, #6
+ ldr r2, [sp, #0x30]
+ mul r0, r1
+ add r0, r2, r0
+ strb r0, [r6, #9]
+ ldr r0, [sp, #4]
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0
+ beq _021DBBC2
+ mov r1, #4
+ b _021DBBC4
+_021DBBC2:
+ mov r1, #8
+_021DBBC4:
+ ldr r0, [sp, #4]
+ strb r1, [r0, #0x13]
+ mov r1, #0
+ strb r1, [r0, #0x12]
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021DBBD0
+MOD14_021DBBD0: ; 0x021DBBD0
+ add r2, r1, #0
+ add r1, #8
+ mov r0, #5
+ ldrsb r0, [r1, r0]
+ add r2, #0x14
+ strb r0, [r2, #6]
+ ldrb r0, [r2, #6]
+ strb r0, [r2, #4]
+ mov r0, #6
+ ldrsb r0, [r1, r0]
+ strb r0, [r2, #7]
+ ldrb r0, [r2, #7]
+ strb r0, [r2, #5]
+ bx lr
+
+ thumb_func_start MOD14_021DBBEC
+MOD14_021DBBEC: ; 0x021DBBEC
+ add r2, r1, #0
+ add r1, #8
+ mov r0, #5
+ ldrsb r0, [r1, r0]
+ add r2, #0x14
+ strb r0, [r2, #6]
+ mov r0, #6
+ ldrsb r0, [r1, r0]
+ strb r0, [r2, #7]
+ bx lr
+
+ thumb_func_start MOD14_021DBC00
+MOD14_021DBC00: ; 0x021DBC00
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r5, r0, #0
+ add r4, r7, #0
+ add r6, r7, #0
+ add r0, r7, #0
+ add r4, #0x14
+ add r6, #8
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021DBC42
+ mov r0, #0x12
+ mov r2, #7
+ lsl r0, r0, #4
+ mov r1, #0
+ ldrsb r2, [r6, r2]
+ ldr r0, [r5, r0]
+ ldr r3, [r4]
+ mvn r1, r1
+ bl FUN_0206B2B0
+ mov r0, #0x12
+ mov r2, #7
+ lsl r0, r0, #4
+ mov r1, #0
+ ldrsb r2, [r6, r2]
+ ldr r0, [r5, r0]
+ mvn r1, r1
+ bl FUN_0206B5E4
+ add r1, r0, #0
+ b _021DBC8A
+_021DBC42:
+ ldrb r0, [r4, #0xb]
+ cmp r0, #0
+ beq _021DBC56
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r4]
+ bl FUN_0206B900
+ b _021DBC70
+_021DBC56:
+ mov r1, #0x1a
+ lsl r1, r1, #4
+ ldr r0, [r4]
+ ldr r1, [r5, r1]
+ bl FUN_02069A64
+ mov r1, #0x49
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ add r1, #0x7c
+ ldr r1, [r5, r1]
+ bl FUN_0206B900
+_021DBC70:
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0206B9AC
+ add r1, r0, #0
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ sub r1, r1, #1
+ bl FUN_0206B9B0
+ add r1, r0, #0
+_021DBC8A:
+ add r0, r7, #0
+ bl MOD14_021DC1A8
+ add r0, r5, #0
+ bl MOD14_021DB934
+ mov r0, #1
+ strb r0, [r7, #0x13]
+ strb r0, [r7, #0x12]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DBCA0
+MOD14_021DBCA0: ; 0x021DBCA0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r1, #0
+ add r7, r0, #0
+ add r6, #0x14
+ add r0, r1, #0
+ str r1, [sp]
+ bl MOD14_021DC4F8
+ str r0, [sp, #8]
+ ldrb r0, [r6, #9]
+ str r0, [sp, #0xc]
+ bl FUN_020690C8
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ mov r5, #0
+ ldr r4, [r0, #0x14]
+ ldrb r0, [r6, #8]
+ cmp r0, #0
+ ble _021DBCF4
+_021DBCCA:
+ add r3, r6, r5
+ mov r2, #0xc
+ ldrsb r3, [r3, r2]
+ ldr r2, [sp, #0xc]
+ mov r0, #0x12
+ lsl r0, r0, #4
+ sub r3, r3, r2
+ ldr r2, [sp, #8]
+ mov r1, #0
+ add r2, r2, r3
+ ldr r0, [r7, r0]
+ mvn r1, r1
+ add r3, r4, #0
+ bl FUN_0206B2B0
+ ldr r0, [sp, #4]
+ add r5, r5, #1
+ add r4, r4, r0
+ ldrb r0, [r6, #8]
+ cmp r5, r0
+ blt _021DBCCA
+_021DBCF4:
+ ldr r0, [sp]
+ bl MOD14_021DC3E0
+ add r2, r0, #0
+ mov r0, #0x12
+ lsl r0, r0, #4
+ mov r1, #0
+ ldr r0, [r7, r0]
+ mvn r1, r1
+ bl FUN_0206B5E4
+ add r1, r0, #0
+ ldr r0, [sp]
+ bl MOD14_021DC1A8
+ add r0, r7, #0
+ bl MOD14_021DB934
+ mov r1, #0
+ ldr r0, [sp]
+ strb r1, [r6, #8]
+ ldrb r0, [r0, #0x13]
+ cmp r0, #4
+ bne _021DBD26
+ mov r1, #1
+_021DBD26:
+ ldr r0, [sp]
+ strb r1, [r0, #0x12]
+ mov r1, #1
+ strb r1, [r0, #0x13]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DBD34
+MOD14_021DBD34: ; 0x021DBD34
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ str r1, [sp]
+ add r5, r0, #0
+ add r4, #0x14
+ bl FUN_020690C4
+ add r6, r0, #0
+ ldr r0, [sp]
+ add r2, r6, #0
+ ldr r7, [r0, #0x14]
+ str r0, [sp, #4]
+ add r0, #8
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r1, r7, r6
+ bl MIi_CpuCopy32
+ ldr r0, [sp]
+ ldr r1, [sp]
+ ldr r0, [r0, #8]
+ ldr r1, [r1, #0x14]
+ add r2, r6, #0
+ bl MIi_CpuCopy32
+ ldr r0, [sp]
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021DBD8E
+ ldr r2, [sp, #4]
+ mov r0, #0x12
+ mov r3, #7
+ lsl r0, r0, #4
+ ldrsb r2, [r2, r3]
+ mov r1, #0
+ ldr r0, [r5, r0]
+ mvn r1, r1
+ add r3, r7, r6
+ bl FUN_0206B2B0
+ mov r0, #0
+ strb r0, [r4, #0xb]
+ b _021DBDC8
+_021DBD8E:
+ ldrb r0, [r4, #0xb]
+ cmp r0, #0
+ bne _021DBDA2
+ mov r1, #0x1a
+ lsl r1, r1, #4
+ ldr r1, [r5, r1]
+ add r0, r7, r6
+ bl FUN_02069A64
+ b _021DBDB0
+_021DBDA2:
+ mov r1, #0x1a
+ lsl r1, r1, #4
+ ldr r1, [r5, r1]
+ add r0, r7, r6
+ add r2, r6, #0
+ bl MIi_CpuCopy32
+_021DBDB0:
+ mov r3, #0x49
+ lsl r3, r3, #2
+ ldr r0, [r5, r3]
+ ldr r1, [sp, #4]
+ mov r2, #8
+ ldrsb r1, [r1, r2]
+ add r3, #0x7c
+ ldr r2, [r5, r3]
+ bl FUN_0206B9DC
+ mov r0, #1
+ strb r0, [r4, #0xb]
+_021DBDC8:
+ ldr r0, [sp]
+ ldr r1, [r4]
+ add r2, r5, #0
+ bl MOD14_021DBE88
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DBDD8
+MOD14_021DBDD8: ; 0x021DBDD8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r2, [r4, #0x14]
+ bl FUN_0206B244
+ cmp r0, #0
+ beq _021DBDFA
+ mov r0, #1
+ strb r0, [r4, #0x13]
+ add r0, r4, #0
+ bl MOD14_021DB934
+ mov r0, #1
+ pop {r4, pc}
+_021DBDFA:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DBE00
+MOD14_021DBE00: ; 0x021DBE00
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x12
+ lsl r0, r0, #4
+ add r4, r5, #0
+ ldr r0, [r5, r0]
+ ldr r2, [r5, #8]
+ add r4, #8
+ bl FUN_0206B244
+ cmp r0, #0
+ beq _021DBE30
+ mov r0, #0x49
+ mov r1, #8
+ lsl r0, r0, #2
+ ldrsb r1, [r4, r1]
+ ldr r0, [r5, r0]
+ bl FUN_0206B938
+ add r0, r5, #0
+ bl MOD14_021DB934
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DBE30:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021DBE34
+MOD14_021DBE34: ; 0x021DBE34
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl FUN_020669A0
+ mov r0, #1
+ strb r0, [r4, #0x13]
+ add r0, r4, #0
+ bl MOD14_021DB934
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DBE4C
+MOD14_021DBE4C: ; 0x021DBE4C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r5, #0
+ add r4, #8
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021DBE70
+ mov r0, #0x12
+ mov r2, #7
+ lsl r0, r0, #4
+ mov r1, #0
+ ldrsb r2, [r4, r2]
+ ldr r0, [r5, r0]
+ mvn r1, r1
+ bl FUN_0206B2FC
+ b _021DBE7E
+_021DBE70:
+ mov r0, #0x49
+ mov r1, #8
+ lsl r0, r0, #2
+ ldrsb r1, [r4, r1]
+ ldr r0, [r5, r0]
+ bl FUN_0206B938
+_021DBE7E:
+ add r0, r5, #0
+ bl MOD14_021DB934
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DBE88
+MOD14_021DBE88: ; 0x021DBE88
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ bl MOD14_021DBEAC
+ add r0, r5, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ bne _021DBEA8
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD14_021DBFF4
+_021DBEA8:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DBEAC
+MOD14_021DBEAC: ; 0x021DBEAC
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r5, r1, #0
+ add r4, r7, #0
+ add r0, r5, #0
+ add r6, r2, #0
+ add r4, #0x4c
+ bl FUN_02066A6C
+ str r0, [sp]
+ str r5, [r7, #0x4c]
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r4, #6]
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_0206BB28
+ ldrh r1, [r4, #4]
+ bl FUN_0206BB48
+ strh r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #0xac
+ mov r2, #0
+ bl FUN_020672BC
+ strb r0, [r4, #0xf]
+ ldrh r0, [r4, #4]
+ mov r1, #9
+ bl FUN_0206851C
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #8
+ mov r2, #0
+ bl FUN_020672BC
+ add r2, r0, #0
+ ldrh r1, [r4, #4]
+ add r0, r7, #0
+ bl FUN_02068824
+ strb r0, [r4, #0xa]
+ add r0, r5, #0
+ mov r1, #0xb
+ mov r2, #0
+ bl FUN_020672BC
+ strb r0, [r4, #0xb]
+ add r0, r5, #0
+ mov r1, #0xb0
+ mov r2, #0
+ bl FUN_020672BC
+ strb r0, [r4, #0xc]
+ add r0, r5, #0
+ mov r1, #0xb1
+ mov r2, #0
+ bl FUN_020672BC
+ strb r0, [r4, #0xd]
+ ldrb r0, [r4, #0xf]
+ cmp r0, #0
+ bne _021DBF68
+ add r0, r5, #0
+ mov r1, #0xaf
+ mov r2, #0
+ bl FUN_020672BC
+ cmp r0, #0
+ beq _021DBF68
+ mov r1, #0
+ add r0, r5, #0
+ add r2, r1, #0
+ bl FUN_020672BC
+ add r2, r0, #0
+ ldrh r1, [r4, #4]
+ add r0, r7, #0
+ bl FUN_02068A44
+ strb r0, [r4, #0xe]
+ b _021DBF6C
+_021DBF68:
+ mov r0, #0xff
+ strb r0, [r4, #0xe]
+_021DBF6C:
+ ldr r2, [r4, #0x14]
+ add r0, r5, #0
+ mov r1, #0x76
+ bl FUN_020672BC
+ ldrb r0, [r4, #0xf]
+ cmp r0, #0
+ bne _021DBF8C
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldrh r1, [r4, #4]
+ ldr r0, [r6, r0]
+ ldr r2, [r4, #0x18]
+ bl FUN_0200A8E0
+ b _021DBF9A
+_021DBF8C:
+ ldr r0, [r4, #0x18]
+ ldr r1, [r4, #0x14]
+ bl FUN_02021A74
+ ldr r0, [r4, #0x14]
+ bl FUN_02021A4C
+_021DBF9A:
+ ldrh r1, [r4, #6]
+ cmp r1, #0
+ beq _021DBFAA
+ ldr r0, [r4, #0x1c]
+ mov r2, #9
+ bl FUN_0206E768
+ b _021DBFB8
+_021DBFAA:
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ ldr r2, [r4, #0x1c]
+ mov r1, #0x14
+ bl FUN_0200A8E0
+_021DBFB8:
+ add r0, r5, #0
+ bl FUN_0206885C
+ add r1, r0, #0
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ ldr r2, [r4, #0x20]
+ bl FUN_0200A8E0
+ add r0, r5, #0
+ mov r1, #0xa
+ mov r2, #0
+ bl FUN_020672BC
+ add r1, r0, #0
+ mov r0, #0x66
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ ldr r2, [r4, #0x24]
+ bl FUN_0200A8E0
+ add r0, r7, #0
+ bl FUN_02068640
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl FUN_02066A94
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021DBFF4
+MOD14_021DBFF4: ; 0x021DBFF4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r0, #0xa4
+ add r5, r2, #0
+ ldrb r2, [r0]
+ str r1, [sp]
+ mov r0, #0x30
+ add r6, r7, #0
+ add r1, r7, #0
+ mul r0, r2
+ add r1, #0xac
+ ldr r2, [sp]
+ add r6, #0x4c
+ add r4, r1, r0
+ str r2, [r1, r0]
+ ldrh r0, [r6, #4]
+ strh r0, [r4, #4]
+ ldrb r0, [r6, #0xf]
+ strb r0, [r4, #6]
+ ldrb r0, [r6, #0xa]
+ strh r0, [r4, #8]
+ ldrb r0, [r4, #6]
+ cmp r0, #0
+ ldr r0, [r4, #0x28]
+ beq _021DC02E
+ ldr r1, [r6, #0x18]
+ bl FUN_02021A74
+ b _021DC034
+_021DC02E:
+ ldr r1, [r6, #0x14]
+ bl FUN_02021A74
+_021DC034:
+ ldr r0, [r4, #0x2c]
+ ldr r1, [r6, #0x20]
+ bl FUN_02021A74
+ mov r1, #0x1a
+ lsl r1, r1, #4
+ ldr r0, [sp]
+ ldr r1, [r5, r1]
+ bl FUN_02069A64
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_020669D4
+ add r6, r0, #0
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0xa3
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0xa]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0xa4
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0xc]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0xa5
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0xe]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0xa7
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x10]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0xa8
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x12]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0xa6
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x14]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x13
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x16]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x14
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x18]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x15
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x1a]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x16
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x1c]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x17
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x1e]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x20]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x37
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x22]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x38
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x24]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x39
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x26]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020671BC
+ strb r0, [r4, #7]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_02066A20
+ add r0, r7, #0
+ add r0, #0xa4
+ ldrb r0, [r0]
+ mov r1, #1
+ add r0, r7, r0
+ add r0, #0xa6
+ strb r1, [r0]
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021DC170
+MOD14_021DC170: ; 0x021DC170
+ add r1, r0, #0
+ add r1, #0xa4
+ ldrb r2, [r1]
+ mov r1, #1
+ add r0, #0xa4
+ eor r1, r2
+ strb r1, [r0]
+ bx lr
+
+ thumb_func_start MOD14_021DC180
+MOD14_021DC180: ; 0x021DC180
+ add r1, r0, #0
+ add r1, #0xa5
+ ldrb r1, [r1]
+ add r2, r1, #1
+ add r1, r0, #0
+ add r1, #0xa5
+ strb r2, [r1]
+ add r1, r0, #0
+ add r1, #0xa5
+ ldrb r1, [r1]
+ cmp r1, #3
+ blo _021DC19E
+ mov r1, #0
+ add r0, #0xa5
+ strb r1, [r0]
+_021DC19E:
+ bx lr
+
+ thumb_func_start MOD14_021DC1A0
+MOD14_021DC1A0: ; 0x021DC1A0
+ add r0, #0xa8
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC1A8
+MOD14_021DC1A8: ; 0x021DC1A8
+ str r1, [r0, #0x4c]
+ bx lr
+
+ thumb_func_start MOD14_021DC1AC
+MOD14_021DC1AC: ; 0x021DC1AC
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ add r0, #0x96
+ ldrb r1, [r0]
+ add r2, r4, #0
+ add r0, sp, #0
+ add r2, #0x4c
+ strb r1, [r0]
+ strb r1, [r2, #0xb]
+ ldr r0, [r4, #0x4c]
+ mov r1, #0xb
+ add r2, sp, #0
+ bl FUN_02067960
+ add r0, r4, #0
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021DC1E2
+ add r0, r4, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021DC1E2
+ bl FUN_02022830
+_021DC1E2:
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC1E8
+MOD14_021DC1E8: ; 0x021DC1E8
+ push {r0, r1, r2, r3}
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r0, sp, #0x18
+ add r4, r5, #0
+ ldrh r1, [r0, #4]
+ add r4, #0x4c
+ add r6, r2, #0
+ strh r1, [r4, #6]
+ cmp r1, #0
+ beq _021DC20A
+ ldr r0, [r4, #0x1c]
+ mov r2, #9
+ bl FUN_0206E768
+ b _021DC218
+_021DC20A:
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ ldr r2, [r4, #0x1c]
+ mov r1, #0x14
+ bl FUN_0200A8E0
+_021DC218:
+ add r0, r5, #0
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021DC24A
+ add r0, r5, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021DC24A
+ add r0, r5, #0
+ bl MOD14_021DC3E0
+ add r2, r0, #0
+ add r0, sp, #0x1c
+ str r0, [sp]
+ mov r0, #0x12
+ lsl r0, r0, #4
+ mov r1, #0
+ ldr r0, [r6, r0]
+ mvn r1, r1
+ mov r3, #6
+ bl FUN_0206B598
+ b _021DC254
+_021DC24A:
+ ldr r0, [r4]
+ mov r1, #6
+ add r2, sp, #0x1c
+ bl FUN_02067960
+_021DC254:
+ ldr r0, [r4]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020672BC
+ ldr r1, _021DC274 ; =0x000001ED
+ cmp r0, r1
+ bne _021DC26A
+ ldr r0, [r4]
+ bl FUN_02069ECC
+_021DC26A:
+ add sp, #4
+ pop {r3, r4, r5, r6}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ .align 2, 0
+_021DC274: .word 0x000001ED
+
+ thumb_func_start MOD14_021DC278
+MOD14_021DC278: ; 0x021DC278
+ add r2, r0, #0
+ add r2, #0x40
+ ldrb r2, [r2]
+ add r1, r0, #0
+ add r1, #0x40
+ add r3, r2, #1
+ add r2, r0, #0
+ add r2, #0x40
+ strb r3, [r2]
+ add r2, r0, #0
+ add r2, #0x40
+ ldrb r2, [r2]
+ cmp r2, #0x12
+ blo _021DC298
+ mov r2, #0
+ strb r2, [r1]
+_021DC298:
+ ldr r3, _021DC2A0 ; =MOD14_021DB580
+ ldr r0, [r0]
+ bx r3
+ nop
+_021DC2A0: .word MOD14_021DB580
+
+ thumb_func_start MOD14_021DC2A4
+MOD14_021DC2A4: ; 0x021DC2A4
+ add r2, r0, #0
+ add r2, #0x40
+ ldrb r2, [r2]
+ add r1, r0, #0
+ add r1, #0x40
+ cmp r2, #0
+ beq _021DC2B6
+ sub r2, r2, #1
+ b _021DC2B8
+_021DC2B6:
+ mov r2, #0x11
+_021DC2B8:
+ ldr r3, _021DC2C0 ; =MOD14_021DB580
+ strb r2, [r1]
+ ldr r0, [r0]
+ bx r3
+ .align 2, 0
+_021DC2C0: .word MOD14_021DB580
+
+ thumb_func_start MOD14_021DC2C4
+MOD14_021DC2C4: ; 0x021DC2C4
+ add r3, r0, #0
+ add r2, r0, #0
+ add r2, #0x40
+ strb r1, [r2]
+ add r3, #0x40
+ add r1, r3, #0
+ ldr r3, _021DC2D8 ; =MOD14_021DB580
+ ldr r0, [r0]
+ bx r3
+ nop
+_021DC2D8: .word MOD14_021DB580
+
+ thumb_func_start MOD14_021DC2DC
+MOD14_021DC2DC: ; 0x021DC2DC
+ add r0, #0x98
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC2E4
+MOD14_021DC2E4: ; 0x021DC2E4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r2, r5, #0
+ add r2, #0x4c
+ add r4, r1, #0
+ ldrh r1, [r2, #6]
+ ldr r0, _021DC30C ; =0x00000112
+ strh r1, [r5, r0]
+ add r0, #0x7a
+ ldr r0, [r4, r0]
+ ldr r2, [r2, #0x1c]
+ mov r1, #0x14
+ bl FUN_0200A8E0
+ add r0, r5, #0
+ mov r1, #0
+ add r2, r4, #0
+ bl MOD14_021DC1E8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DC30C: .word 0x00000112
+
+ thumb_func_start MOD14_021DC310
+MOD14_021DC310: ; 0x021DC310
+ ldr r1, _021DC318 ; =0x00000112
+ mov r2, #0
+ strh r2, [r0, r1]
+ bx lr
+ .align 2, 0
+_021DC318: .word 0x00000112
+
+ thumb_func_start MOD14_021DC31C
+MOD14_021DC31C: ; 0x021DC31C
+ push {r4, lr}
+ ldr r3, _021DC330 ; =0x00000112
+ add r2, r1, #0
+ ldrh r1, [r0, r3]
+ mov r4, #0
+ strh r4, [r0, r3]
+ bl MOD14_021DC1E8
+ pop {r4, pc}
+ nop
+_021DC330: .word 0x00000112
+
+ thumb_func_start MOD14_021DC334
+MOD14_021DC334: ; 0x021DC334
+ push {r4, lr}
+ add r3, r0, #0
+ add r3, #0x52
+ ldr r4, _021DC34C ; =0x00000112
+ add r2, r1, #0
+ ldrh r1, [r0, r4]
+ ldrh r3, [r3]
+ strh r3, [r0, r4]
+ bl MOD14_021DC1E8
+ pop {r4, pc}
+ nop
+_021DC34C: .word 0x00000112
+
+ thumb_func_start MOD14_021DC350
+MOD14_021DC350: ; 0x021DC350
+ add r0, #0x9c
+ strb r1, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC358
+MOD14_021DC358: ; 0x021DC358
+ add r0, #0x9e
+ strb r1, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC360
+MOD14_021DC360: ; 0x021DC360
+ add r0, #0x9d
+ strb r1, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC368
+MOD14_021DC368: ; 0x021DC368
+ add r0, #0xa0
+ strh r1, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC370
+MOD14_021DC370: ; 0x021DC370
+ cmp r1, #0
+ bne _021DC37C
+ mov r1, #0
+ add r0, #0x4a
+ strh r1, [r0]
+ bx lr
+_021DC37C:
+ add r2, r0, #0
+ add r2, #0x4a
+ ldrh r3, [r2]
+ mov r2, #1
+ sub r1, r1, #1
+ lsl r2, r1
+ add r1, r3, #0
+ eor r1, r2
+ add r0, #0x4a
+ strh r1, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC394
+MOD14_021DC394: ; 0x021DC394
+ add r1, r0, #0
+ add r1, #0x49
+ ldrb r2, [r1]
+ mov r1, #1
+ add r0, #0x49
+ eor r1, r2
+ strb r1, [r0]
+ bx lr
+
+ thumb_func_start MOD14_021DC3A4
+MOD14_021DC3A4: ; 0x021DC3A4
+ mov r1, #0x63
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bx lr
+
+ thumb_func_start MOD14_021DC3AC
+MOD14_021DC3AC: ; 0x021DC3AC
+ mov r1, #0x67
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bx lr
+
+ thumb_func_start MOD14_021DC3B4
+MOD14_021DC3B4: ; 0x021DC3B4
+ mov r1, #0x69
+ lsl r1, r1, #2
+ ldr r3, _021DC3C0 ; =0x02025085
+ ldr r0, [r0, r1]
+ bx r3
+ nop
+_021DC3C0: .word 0x02025085
+
+ thumb_func_start MOD14_021DC3C4
+MOD14_021DC3C4: ; 0x021DC3C4
+ add r0, #0x48
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC3CC
+MOD14_021DC3CC: ; 0x021DC3CC
+ ldrb r0, [r0, #0xc]
+ bx lr
+
+ thumb_func_start MOD14_021DC3D0
+MOD14_021DC3D0: ; 0x021DC3D0
+ mov r1, #0xd
+ ldrsb r0, [r0, r1]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC3D8
+MOD14_021DC3D8: ; 0x021DC3D8
+ mov r1, #0xe
+ ldrsb r0, [r0, r1]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC3E0
+MOD14_021DC3E0: ; 0x021DC3E0
+ mov r1, #0xf
+ ldrsb r0, [r0, r1]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC3E8
+MOD14_021DC3E8: ; 0x021DC3E8
+ mov r1, #0x10
+ ldrsb r0, [r0, r1]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC3F0
+MOD14_021DC3F0: ; 0x021DC3F0
+ ldrb r0, [r0, #0x12]
+ bx lr
+
+ thumb_func_start MOD14_021DC3F4
+MOD14_021DC3F4: ; 0x021DC3F4
+ ldrb r0, [r0, #0x13]
+ bx lr
+
+ thumb_func_start MOD14_021DC3F8
+MOD14_021DC3F8: ; 0x021DC3F8
+ ldrb r1, [r0, #0x13]
+ cmp r1, #0
+ beq _021DC402
+ ldrb r0, [r0, #0x1f]
+ bx lr
+_021DC402:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC408
+MOD14_021DC408: ; 0x021DC408
+ ldrb r1, [r0, #0x13]
+ cmp r1, #2
+ beq _021DC412
+ cmp r1, #4
+ bne _021DC416
+_021DC412:
+ mov r0, #1
+ bx lr
+_021DC416:
+ ldrb r0, [r0, #0x12]
+ cmp r0, #0
+ beq _021DC420
+ mov r0, #1
+ bx lr
+_021DC420:
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD14_021DC424
+MOD14_021DC424: ; 0x021DC424
+ add r0, #0x40
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC42C
+MOD14_021DC42C: ; 0x021DC42C
+ add r0, #0x4c
+ bx lr
+
+ thumb_func_start MOD14_021DC430
+MOD14_021DC430: ; 0x021DC430
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD14_021DC408
+ cmp r0, #0
+ beq _021DC442
+ add r4, #0x52
+ ldrh r0, [r4]
+ pop {r4, pc}
+_021DC442:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC448
+MOD14_021DC448: ; 0x021DC448
+ add r0, #0x40
+ bx lr
+
+ thumb_func_start MOD14_021DC44C
+MOD14_021DC44C: ; 0x021DC44C
+ ldr r0, [r0]
+ bx lr
+
+ thumb_func_start MOD14_021DC450
+MOD14_021DC450: ; 0x021DC450
+ mov r1, #0x43
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bx lr
+
+ thumb_func_start MOD14_021DC458
+MOD14_021DC458: ; 0x021DC458
+ ldr r0, [r0, #0x4c]
+ bx lr
+
+ thumb_func_start MOD14_021DC45C
+MOD14_021DC45C: ; 0x021DC45C
+ add r0, #0x57
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC464
+MOD14_021DC464: ; 0x021DC464
+ add r0, #0x98
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC46C
+MOD14_021DC46C: ; 0x021DC46C
+ mov r1, #0xa0
+ ldrsh r0, [r0, r1]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC474
+MOD14_021DC474: ; 0x021DC474
+ add r0, #0x9e
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC47C
+MOD14_021DC47C: ; 0x021DC47C
+ add r0, #0x9d
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC484
+MOD14_021DC484: ; 0x021DC484
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD14_021DC3C4
+ cmp r0, #3
+ beq _021DC496
+ add r4, #0x4a
+ ldrh r0, [r4]
+ pop {r4, pc}
+_021DC496:
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC49C
+MOD14_021DC49C: ; 0x021DC49C
+ add r0, #0x49
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC4A4
+MOD14_021DC4A4: ; 0x021DC4A4
+ push {r3, r4, r5, r6}
+ add r0, #0x14
+ ldrb r6, [r0, #6]
+ ldrb r5, [r0, #4]
+ ldr r4, [sp, #0x10]
+ cmp r5, r6
+ bhi _021DC4B8
+ str r5, [r1]
+ ldrb r1, [r0, #6]
+ b _021DC4BC
+_021DC4B8:
+ str r6, [r1]
+ ldrb r1, [r0, #4]
+_021DC4BC:
+ str r1, [r2]
+ ldrb r2, [r0, #7]
+ ldrb r1, [r0, #5]
+ cmp r1, r2
+ bhi _021DC4D0
+ str r1, [r3]
+ ldrb r0, [r0, #7]
+ str r0, [r4]
+ pop {r3, r4, r5, r6}
+ bx lr
+_021DC4D0:
+ str r2, [r3]
+ ldrb r0, [r0, #5]
+ str r0, [r4]
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC4DC
+MOD14_021DC4DC: ; 0x021DC4DC
+ add r0, #0x14
+ ldrb r2, [r0, #4]
+ ldrb r1, [r0, #6]
+ cmp r2, r1
+ bne _021DC4F2
+ ldrb r1, [r0, #5]
+ ldrb r0, [r0, #7]
+ cmp r1, r0
+ bne _021DC4F2
+ mov r0, #1
+ bx lr
+_021DC4F2:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC4F8
+MOD14_021DC4F8: ; 0x021DC4F8
+ push {r3, r4}
+ add r1, r0, #0
+ add r1, #0x14
+ mov r2, #0xd
+ mov r3, #0xe
+ ldrsb r2, [r0, r2]
+ ldrsb r0, [r0, r3]
+ ldrb r4, [r1, #4]
+ ldrb r3, [r1, #6]
+ cmp r3, r4
+ bls _021DC512
+ sub r3, r3, r4
+ sub r2, r2, r3
+_021DC512:
+ ldrb r3, [r1, #5]
+ ldrb r1, [r1, #7]
+ cmp r1, r3
+ bls _021DC51E
+ sub r1, r1, r3
+ sub r0, r0, r1
+_021DC51E:
+ mov r1, #6
+ mul r1, r0
+ add r0, r2, r1
+ pop {r3, r4}
+ bx lr
+
+ thumb_func_start MOD14_021DC528
+MOD14_021DC528: ; 0x021DC528
+ add r0, #0x14
+ add r2, r0, r1
+ mov r1, #0xc
+ ldrsb r1, [r2, r1]
+ ldrb r0, [r0, #9]
+ sub r0, r1, r0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC538
+MOD14_021DC538: ; 0x021DC538
+ ldr r1, _021DC540 ; =0x00000112
+ ldrh r0, [r0, r1]
+ bx lr
+ nop
+_021DC540: .word 0x00000112
+
+ thumb_func_start MOD14_021DC544
+MOD14_021DC544: ; 0x021DC544
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD14_021DC538
+ cmp r0, #0
+ bne _021DC556
+ add r0, r4, #0
+ bl MOD14_021DC430
+_021DC556:
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021DC558
+MOD14_021DC558: ; 0x021DC558
+ add r0, #0xa4
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC560
+MOD14_021DC560: ; 0x021DC560
+ add r0, #0xa5
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC568
+MOD14_021DC568: ; 0x021DC568
+ mov r2, #0x30
+ add r0, #0xac
+ mul r2, r1
+ add r0, r0, r2
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC574
+MOD14_021DC574: ; 0x021DC574
+ add r0, r0, r1
+ add r0, #0xa6
+ ldrb r0, [r0]
+ bx lr
+
+ thumb_func_start MOD14_021DC57C
+MOD14_021DC57C: ; 0x021DC57C
+ add r0, #0xa8
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC584
+MOD14_021DC584: ; 0x021DC584
+ add r0, #0x5b
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DC58C
+MOD14_021DC58C: ; 0x021DC58C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ bne _021DC5B2
+ add r0, r5, #0
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021DC5C4
+ ldr r0, [r5, #0x4c]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_020672BC
+ pop {r4, r5, r6, pc}
+_021DC5B2:
+ ldrb r0, [r5, #0x1f]
+ cmp r0, #0
+ bne _021DC5C4
+ ldr r0, [r5, #0x4c]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_020672BC
+ pop {r4, r5, r6, pc}
+_021DC5C4:
+ ldr r0, [r5, #0x4c]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_020671BC
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021DC5D0
+MOD14_021DC5D0: ; 0x021DC5D0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021DC5EC
+ ldr r0, [r5, #0x4c]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_020672BC
+ pop {r4, r5, r6, pc}
+_021DC5EC:
+ ldr r0, [r5, #8]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_020671BC
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021DC5F8
+MOD14_021DC5F8: ; 0x021DC5F8
+ push {r3, r4, r5, r6}
+ ldr r4, _021DC660 ; =MOD14_021DC6C0
+ add r6, r0, #0
+ str r4, [r0, #0x30]
+ mov r4, #0
+ str r4, [r0, #0x1c]
+ str r1, [r0, #0xc]
+ str r2, [r0, #0x10]
+ str r1, [r0, #0x14]
+ str r2, [r0, #0x18]
+ str r1, [r0, #4]
+ add r4, r0, #0
+ str r2, [r0, #8]
+ lsl r2, r2, #0x18
+ mov r5, #0xfe
+ add r4, #0x28
+ strb r5, [r4]
+ lsl r4, r1, #0x18
+ lsr r4, r4, #0x18
+ add r6, #0x29
+ strb r4, [r6]
+ add r6, r0, #0
+ lsr r2, r2, #0x18
+ add r6, #0x2a
+ strb r2, [r6]
+ add r6, r0, #0
+ add r6, #0x2b
+ strb r3, [r6]
+ add r3, r0, #0
+ add r3, #0x2c
+ strb r5, [r3]
+ add r3, r0, #0
+ add r3, #0x2d
+ strb r4, [r3]
+ add r3, r0, #0
+ add r3, #0x2e
+ strb r2, [r3]
+ add r2, r0, #0
+ add r2, #0x2f
+ ldr r3, [sp, #0x10]
+ cmp r1, #0x80
+ strb r3, [r2]
+ bge _021DC656
+ mov r1, #1
+ str r1, [r0, #0x24]
+ pop {r3, r4, r5, r6}
+ bx lr
+_021DC656:
+ sub r5, #0xff
+ str r5, [r0, #0x24]
+ pop {r3, r4, r5, r6}
+ bx lr
+ nop
+_021DC660: .word MOD14_021DC6C0
+
+ thumb_func_start MOD14_021DC664
+MOD14_021DC664: ; 0x021DC664
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r0, #0x2c
+ bl FUN_02020A40
+ cmp r0, #1
+ bne _021DC6A4
+ add r0, r5, #0
+ add r0, #0x28
+ bl FUN_02020A40
+ cmp r0, #0
+ bne _021DC6A4
+ ldr r0, [r5, #0x1c]
+ mov r4, #1
+ cmp r0, #0
+ bne _021DC68C
+ add r6, r4, #0
+ b _021DC68E
+_021DC68C:
+ mov r6, #0
+_021DC68E:
+ add r0, sp, #4
+ add r1, sp, #0
+ bl FUN_02020AB0
+ cmp r0, #0
+ beq _021DC6A8
+ ldr r0, [sp, #4]
+ str r0, [r5, #0x14]
+ ldr r0, [sp]
+ str r0, [r5, #0x18]
+ b _021DC6A8
+_021DC6A4:
+ mov r4, #0
+ add r6, r4, #0
+_021DC6A8:
+ str r4, [r5, #0x1c]
+ ldr r3, [r5, #0x30]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ blx r3
+ add sp, #8
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021DC6B8
+MOD14_021DC6B8: ; 0x021DC6B8
+ mov r2, #0
+ str r2, [r0]
+ str r1, [r0, #0x30]
+ bx lr
+
+ thumb_func_start MOD14_021DC6C0
+MOD14_021DC6C0: ; 0x021DC6C0
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r1, #0
+ beq _021DC6E8
+ cmp r2, #0
+ beq _021DC6E8
+ ldr r1, [r4, #0x14]
+ str r1, [r4, #4]
+ ldr r2, [r4, #0x18]
+ str r2, [r4, #8]
+ ldr r1, [r4, #4]
+ bl MOD14_021DC720
+ strh r0, [r4, #0x20]
+ ldr r1, _021DC6EC ; =MOD14_021DC6F0
+ add r0, r4, #0
+ bl MOD14_021DC6B8
+ mov r0, #1
+ pop {r4, pc}
+_021DC6E8:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021DC6EC: .word MOD14_021DC6F0
+
+ thumb_func_start MOD14_021DC6F0
+MOD14_021DC6F0: ; 0x021DC6F0
+ push {r3, lr}
+ cmp r1, #0
+ bne _021DC700
+ ldr r1, _021DC704 ; =MOD14_021DC6C0
+ bl MOD14_021DC6B8
+ mov r0, #3
+ pop {r3, pc}
+_021DC700:
+ mov r0, #2
+ pop {r3, pc}
+ .align 2, 0
+_021DC704: .word MOD14_021DC6C0
+
+ thumb_func_start MOD14_021DC708
+MOD14_021DC708: ; 0x021DC708
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x14]
+ ldr r2, [r4, #0x18]
+ bl MOD14_021DC720
+ add r2, r0, #0
+ ldrh r1, [r4, #0x20]
+ add r0, r4, #0
+ bl MOD14_021DC738
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021DC720
+MOD14_021DC720: ; 0x021DC720
+ add r3, r0, #0
+ ldr r0, [r3, #0x10]
+ sub r0, r2, r0
+ ldr r2, [r3, #0xc]
+ ldr r3, _021DC734 ; =0x020C5668
+ sub r1, r1, r2
+ lsl r0, r0, #0xc
+ lsl r1, r1, #0xc
+ bx r3
+ nop
+_021DC734: .word 0x020C5668
+
+ thumb_func_start MOD14_021DC738
+MOD14_021DC738: ; 0x021DC738
+ push {r4, r5}
+ sub r2, r2, r1
+ bpl _021DC746
+ mov r4, #0
+ mvn r4, r4
+ mul r2, r4
+ b _021DC748
+_021DC746:
+ mov r4, #1
+_021DC748:
+ ldr r5, _021DC768 ; =0x021E6278
+ mov r3, #0
+_021DC74C:
+ ldrh r1, [r5]
+ cmp r2, r1
+ blt _021DC75A
+ add r3, r3, #1
+ add r5, r5, #2
+ cmp r3, #2
+ blo _021DC74C
+_021DC75A:
+ ldr r1, [r0, #0x24]
+ add r0, r3, #0
+ mul r0, r4
+ mul r0, r1
+ pop {r4, r5}
+ bx lr
+ nop
+_021DC768: .word 0x021E6278
+
+ thumb_func_start MOD14_021DC76C
+MOD14_021DC76C: ; 0x021DC76C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ add r7, r0, #0
+ ldr r1, _021DC9C8 ; =0x0000B3B4
+ mov r0, #0xa
+ add r6, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021DC79A
+ mov r0, #0x16
+ lsl r0, r0, #4
+ str r5, [r4, r0]
+ mov r0, #0xa
+ bl FUN_02016B94
+ mov r1, #0x57
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bne _021DC79C
+_021DC79A:
+ b _021DC9C2
+_021DC79C:
+ mov r0, #0
+ add r1, r0, #0
+ mov r5, #1
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r1, #1
+ lsl r1, r1, #0x1a
+ ldr r0, [r1]
+ ldr r3, _021DC9CC ; =0xFFFFE0FF
+ and r0, r3
+ str r0, [r1]
+ ldr r0, _021DC9D0 ; =0x04001000
+ ldr r2, [r0]
+ and r2, r3
+ str r2, [r0]
+ ldr r3, [r1]
+ ldr r2, _021DC9D4 ; =0xFFCFFFEF
+ and r3, r2
+ ldr r2, _021DC9D8 ; =0x00100010
+ orr r2, r3
+ str r2, [r1]
+ ldr r2, [r0]
+ ldr r1, _021DC9D4 ; =0xFFCFFFEF
+ and r2, r1
+ mov r1, #0x10
+ orr r1, r2
+ str r1, [r0]
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #0x80
+ str r2, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r1, #0xa
+ str r1, [sp, #0x10]
+ add r1, r2, #0
+ add r2, r0, #0
+ bl FUN_02009EAC
+ add r1, r4, #0
+ mov r0, #0x80
+ add r1, #0x1c
+ mov r2, #0xa
+ bl FUN_02008C9C
+ str r0, [r4, #0x18]
+ add r0, r4, #0
+ mov r2, #6
+ add r0, #0x1c
+ mov r1, #0
+ lsl r2, r2, #0x12
+ bl FUN_02008D24
+ mov r0, #0x51
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_020B19DC
+ mov r0, #0xa
+ str r0, [sp]
+ mov r0, #0x51
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r0, [sp, #4]
+ mov r0, #0x12
+ mov r1, #0x1a
+ add r2, r5, #0
+ mov r3, #0
+ bl FUN_02006A8C
+ mov r0, #0
+ mov r1, #0xa
+ bl FUN_02002C84
+ mov r0, #0xa
+ bl FUN_02006D98
+ mov r1, #0x56
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r1, #0
+ add r2, r4, #0
+ add r0, r1, #0
+_021DC854:
+ add r1, r1, #1
+ str r0, [r2, #8]
+ add r2, r2, #4
+ cmp r1, #4
+ blo _021DC854
+ bl MOD14_021DDEE8
+ mov r2, #0x59
+ lsl r2, r2, #2
+ str r4, [r7]
+ add r0, r4, r2
+ sub r2, r2, #4
+ ldr r2, [r4, r2]
+ ldr r3, [r4, #0x18]
+ add r1, r4, #0
+ bl MOD14_021E078C
+ and r5, r0
+ ldr r0, [r4, #0x18]
+ mov r3, #0x16
+ str r0, [sp]
+ lsl r3, r3, #4
+ mov r0, #0x43
+ ldr r2, [r4, r3]
+ sub r3, r3, #4
+ lsl r0, r0, #4
+ ldr r3, [r4, r3]
+ add r0, r4, r0
+ add r1, r4, #0
+ bl MOD14_021DDF70
+ mov r2, #0x16
+ and r5, r0
+ ldr r0, _021DC9DC ; =0x00005DC0
+ lsl r2, r2, #4
+ ldr r2, [r4, r2]
+ ldr r3, [r4, #0x18]
+ add r0, r4, r0
+ add r1, r4, #0
+ bl MOD14_021DF07C
+ mov r2, #0x16
+ and r5, r0
+ ldr r0, _021DC9E0 ; =0x00006558
+ lsl r2, r2, #4
+ ldr r2, [r4, r2]
+ ldr r3, [r4, #0x18]
+ add r0, r4, r0
+ add r1, r4, #0
+ bl MOD14_021E0C7C
+ and r5, r0
+ add r0, r6, #0
+ bl MOD14_021DC3A4
+ ldr r1, [r4, #0x18]
+ mov r3, #0x16
+ str r1, [sp]
+ str r0, [sp, #4]
+ lsl r3, r3, #4
+ ldr r0, _021DC9E4 ; =0x000065A0
+ ldr r2, [r4, r3]
+ sub r3, r3, #4
+ ldr r3, [r4, r3]
+ add r0, r4, r0
+ add r1, r4, #0
+ bl MOD14_021E0D90
+ and r5, r0
+ add r0, r6, #0
+ bl MOD14_021DC3A4
+ add r7, r0, #0
+ add r0, r6, #0
+ bl MOD14_021DC3AC
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ bl MOD14_021DC3B4
+ ldr r1, [r4, #0x18]
+ mov r3, #0x16
+ str r1, [sp]
+ ldr r1, [sp, #0x14]
+ str r7, [sp, #4]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ lsl r3, r3, #4
+ ldr r0, _021DC9E8 ; =0x000065F4
+ ldr r2, [r4, r3]
+ sub r3, r3, #4
+ ldr r3, [r4, r3]
+ add r0, r4, r0
+ add r1, r4, #0
+ bl MOD14_021E1750
+ and r5, r0
+ ldr r0, [r4, #0x18]
+ mov r3, #0x16
+ str r0, [sp]
+ lsl r3, r3, #4
+ ldr r0, _021DC9EC ; =0x0000662C
+ ldr r2, [r4, r3]
+ sub r3, r3, #4
+ ldr r3, [r4, r3]
+ add r0, r4, r0
+ add r1, r4, #0
+ bl MOD14_021E1D38
+ and r5, r0
+ ldr r0, [r4, #0x18]
+ mov r3, #0x16
+ str r0, [sp]
+ lsl r3, r3, #4
+ ldr r0, _021DC9F0 ; =0x0000B22C
+ ldr r2, [r4, r3]
+ sub r3, r3, #4
+ ldr r3, [r4, r3]
+ add r0, r4, r0
+ add r1, r4, #0
+ bl MOD14_021E2A38
+ and r5, r0
+ ldr r0, [r4, #0x18]
+ mov r3, #0x16
+ str r0, [sp]
+ lsl r3, r3, #4
+ ldr r0, _021DC9F4 ; =0x0000B3A4
+ ldr r2, [r4, r3]
+ sub r3, r3, #4
+ ldr r3, [r4, r3]
+ add r0, r4, r0
+ add r1, r4, #0
+ bl MOD14_021E33C8
+ and r5, r0
+ ldr r0, [r4, #0x18]
+ mov r3, #0x16
+ str r0, [sp]
+ lsl r3, r3, #4
+ ldr r0, _021DC9F8 ; =0x0000B3A8
+ ldr r2, [r4, r3]
+ sub r3, r3, #4
+ ldr r3, [r4, r3]
+ add r0, r4, r0
+ add r1, r4, #0
+ bl MOD14_021E4828
+ and r5, r0
+ add r0, r6, #0
+ bl MOD14_021DC3A4
+ ldr r1, [r4, #0x18]
+ mov r3, #0x16
+ str r1, [sp]
+ str r0, [sp, #4]
+ lsl r3, r3, #4
+ ldr r0, _021DC9FC ; =0x0000B3AC
+ ldr r2, [r4, r3]
+ sub r3, r3, #4
+ ldr r3, [r4, r3]
+ add r0, r4, r0
+ add r1, r4, #0
+ bl MOD14_021E5044
+ and r5, r0
+ ldr r0, _021DCA00 ; =0x0000B3B0
+ add r1, r4, #0
+ str r6, [r4, r0]
+ ldr r0, _021DCA04 ; =MOD14_021DCA0C
+ mov r2, #2
+ bl FUN_0200CA44
+ str r0, [r4]
+ ldr r0, _021DCA08 ; =MOD14_021DCBFC
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD14_021DDD40
+ str r0, [r4, #4]
+ add sp, #0x18
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DC9C2:
+ mov r0, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DC9C8: .word 0x0000B3B4
+_021DC9CC: .word 0xFFFFE0FF
+_021DC9D0: .word 0x04001000
+_021DC9D4: .word 0xFFCFFFEF
+_021DC9D8: .word 0x00100010
+_021DC9DC: .word 0x00005DC0
+_021DC9E0: .word 0x00006558
+_021DC9E4: .word 0x000065A0
+_021DC9E8: .word 0x000065F4
+_021DC9EC: .word 0x0000662C
+_021DC9F0: .word 0x0000B22C
+_021DC9F4: .word 0x0000B3A4
+_021DC9F8: .word 0x0000B3A8
+_021DC9FC: .word 0x0000B3AC
+_021DCA00: .word 0x0000B3B0
+_021DCA04: .word MOD14_021DCA0C
+_021DCA08: .word MOD14_021DCBFC
+
+ thumb_func_start MOD14_021DCA0C
+MOD14_021DCA0C: ; 0x021DCA0C
+ push {r4, lr}
+ add r4, r1, #0
+ bl MOD14_021DDEF4
+ bl G3X_ResetMtxStack
+ bl G3X_ResetMtxStack_2
+ bl FUN_020B02C8
+ mov r0, #0x56
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02006ED4
+ ldr r0, _021DCA34 ; =0x04000540
+ mov r1, #0
+ str r1, [r0]
+ pop {r4, pc}
+ nop
+_021DCA34: .word 0x04000540
+
+ thumb_func_start MOD14_021DCA38
+MOD14_021DCA38: ; 0x021DCA38
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ ldr r0, [r4]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #4]
+ bl FUN_0200CAB4
+ ldr r0, _021DCB08 ; =0x0000B3AC
+ ldr r0, [r4, r0]
+ bl MOD14_021E50EC
+ ldr r0, _021DCB0C ; =0x0000B3A8
+ ldr r0, [r4, r0]
+ bl MOD14_021E4880
+ ldr r0, _021DCB10 ; =0x0000B3A4
+ ldr r0, [r4, r0]
+ bl MOD14_021E34C0
+ ldr r0, _021DCB14 ; =0x0000B22C
+ add r0, r4, r0
+ bl MOD14_021E2AC8
+ ldr r0, _021DCB18 ; =0x0000662C
+ add r0, r4, r0
+ bl MOD14_021E1F20
+ ldr r0, _021DCB1C ; =0x000065F4
+ add r0, r4, r0
+ bl MOD14_021E17C4
+ ldr r0, _021DCB20 ; =0x000065A0
+ add r0, r4, r0
+ bl MOD14_021E0E44
+ ldr r0, _021DCB24 ; =0x00006558
+ add r0, r4, r0
+ bl MOD14_021E0D3C
+ ldr r0, _021DCB28 ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021DF3A8
+ mov r0, #0x43
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD14_021DDFEC
+ mov r0, #0x59
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD14_021E089C
+ ldr r0, [r4, #0x18]
+ bl FUN_0201FD58
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #3
+ bl FUN_020178A0
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl FUN_020178A0
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020178A0
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl FUN_020178A0
+ mov r0, #0x56
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020072E8
+ mov r0, #0
+ bl FUN_02002CC0
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ bl FUN_02009FA0
+ pop {r4, pc}
+ .align 2, 0
+_021DCB08: .word 0x0000B3AC
+_021DCB0C: .word 0x0000B3A8
+_021DCB10: .word 0x0000B3A4
+_021DCB14: .word 0x0000B22C
+_021DCB18: .word 0x0000662C
+_021DCB1C: .word 0x000065F4
+_021DCB20: .word 0x000065A0
+_021DCB24: .word 0x00006558
+_021DCB28: .word 0x00005DC0
+
+ thumb_func_start MOD14_021DCB2C
+MOD14_021DCB2C: ; 0x021DCB2C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ cmp r6, #0x34
+ bhs _021DCB88
+ mov r4, #0
+ add r1, r5, #0
+_021DCB3A:
+ ldr r0, [r1, #8]
+ cmp r0, #0
+ bne _021DCB7E
+ ldr r0, _021DCB90 ; =0x021E63D0
+ lsl r7, r6, #3
+ ldr r0, [r0, r7]
+ str r0, [sp]
+ ldr r1, [sp]
+ mov r0, #0xa
+ add r1, #0x14
+ bl FUN_02016998
+ add r1, r0, #0
+ beq _021DCB78
+ str r6, [r1]
+ strh r4, [r1, #4]
+ mov r0, #0
+ strh r0, [r1, #6]
+ ldr r0, [sp]
+ str r5, [r1, #0xc]
+ add r0, r1, r0
+ str r0, [r1, #0x10]
+ ldr r0, _021DCB94 ; =0x021E63CC
+ mov r2, #1
+ ldr r0, [r0, r7]
+ bl FUN_0200CA44
+ lsl r1, r4, #2
+ add r1, r5, r1
+ str r0, [r1, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DCB78:
+ bl ErrorHandling
+ pop {r3, r4, r5, r6, r7, pc}
+_021DCB7E:
+ add r4, r4, #1
+ add r1, r1, #4
+ cmp r4, #4
+ blo _021DCB3A
+ pop {r3, r4, r5, r6, r7, pc}
+_021DCB88:
+ bl ErrorHandling
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DCB90: .word 0x021E63D0
+_021DCB94: .word 0x021E63CC
+
+ thumb_func_start MOD14_021DCB98
+MOD14_021DCB98: ; 0x021DCB98
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+_021DCBA0:
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021DCBB4
+ bl FUN_0201B6C8
+ ldr r0, [r0]
+ cmp r0, r6
+ bne _021DCBB4
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021DCBB4:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021DCBA0
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021DCBC0
+MOD14_021DCBC0: ; 0x021DCBC0
+ mov r2, #0
+_021DCBC2:
+ ldr r1, [r0, #8]
+ cmp r1, #0
+ beq _021DCBCC
+ mov r0, #0
+ bx lr
+_021DCBCC:
+ add r2, r2, #1
+ add r0, r0, #4
+ cmp r2, #4
+ blt _021DCBC2
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD14_021DCBD8
+MOD14_021DCBD8: ; 0x021DCBD8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldrh r0, [r5, #4]
+ ldr r4, [r5, #0xc]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #8]
+ bl FUN_0200CAB4
+ ldrh r0, [r5, #4]
+ mov r1, #0
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #8]
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021DCBFC
+MOD14_021DCBFC: ; 0x021DCBFC
+ push {r4, lr}
+ ldr r0, _021DCC20 ; =0x000065A0
+ add r4, r1, #0
+ add r0, r4, r0
+ bl MOD14_021E0EE4
+ ldr r0, [r4, #0x18]
+ bl FUN_0201FDEC
+ bl FUN_02009F80
+ ldr r3, _021DCC24 ; =0x027E0000
+ ldr r1, _021DCC28 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021DCC20: .word 0x000065A0
+_021DCC24: .word 0x027E0000
+_021DCC28: .word 0x00003FF8
+
+ thumb_func_start MOD14_021DCC2C
+MOD14_021DCC2C: ; 0x021DCC2C
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r0, #0x16
+ ldr r4, [r5, #0xc]
+ lsl r0, r0, #4
+ ldr r6, [r4, r0]
+ ldrh r0, [r5, #6]
+ cmp r0, #0
+ beq _021DCC44
+ cmp r0, #1
+ beq _021DCC7E
+ pop {r4, r5, r6, pc}
+_021DCC44:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD14_021DDA38
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD14_021DDB50
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD14_021DDCF0
+ add r0, r6, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ beq _021DCC76
+ ldr r0, _021DCC9C ; =0x000065A0
+ add r0, r4, r0
+ bl MOD14_021E0EF4
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r4, r5, r6, pc}
+_021DCC76:
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+ pop {r4, r5, r6, pc}
+_021DCC7E:
+ ldr r0, _021DCC9C ; =0x000065A0
+ add r0, r4, r0
+ bl MOD14_021E0F28
+ cmp r0, #0
+ beq _021DCC98
+ ldr r0, _021DCC9C ; =0x000065A0
+ add r0, r4, r0
+ bl MOD14_021E13F0
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+_021DCC98:
+ pop {r4, r5, r6, pc}
+ nop
+_021DCC9C: .word 0x000065A0
+
+ thumb_func_start MOD14_021DCCA0
+MOD14_021DCCA0: ; 0x021DCCA0
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ cmp r0, #0
+ beq _021DCCB4
+ cmp r0, #1
+ beq _021DCCEA
+ add sp, #0xc
+ pop {r3, r4, pc}
+_021DCCB4:
+ ldr r0, _021DCCFC ; =0x0000060D
+ bl FUN_020054C8
+ mov r0, #0xa
+ str r0, [sp]
+ ldr r0, _021DCD00 ; =0x04000050
+ mov r1, #0
+ mov r2, #0x3f
+ mov r3, #6
+ bl G2x_SetBlendAlpha_
+ mov r0, #8
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldrh r0, [r4, #6]
+ add sp, #0xc
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r3, r4, pc}
+_021DCCEA:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021DCCF8
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DCCF8:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_021DCCFC: .word 0x0000060D
+_021DCD00: .word 0x04000050
+
+ thumb_func_start MOD14_021DCD04
+MOD14_021DCD04: ; 0x021DCD04
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ cmp r0, #0
+ beq _021DCD18
+ cmp r0, #1
+ beq _021DCD48
+ add sp, #0xc
+ pop {r3, r4, pc}
+_021DCD18:
+ mov r0, #0xa
+ str r0, [sp]
+ ldr r0, _021DCD5C ; =0x04000050
+ mov r1, #0
+ mov r2, #0x3f
+ mov r3, #6
+ bl G2x_SetBlendAlpha_
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldrh r0, [r4, #6]
+ add sp, #0xc
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r3, r4, pc}
+_021DCD48:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021DCD56
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DCD56:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_021DCD5C: .word 0x04000050
+
+ thumb_func_start MOD14_021DCD60
+MOD14_021DCD60: ; 0x021DCD60
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ cmp r0, #0
+ beq _021DCD74
+ cmp r0, #1
+ beq _021DCD96
+ add sp, #0xc
+ pop {r3, r4, pc}
+_021DCD74:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldrh r0, [r4, #6]
+ add sp, #0xc
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r3, r4, pc}
+_021DCD96:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021DCDA4
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DCDA4:
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD14_021DCDA8
+MOD14_021DCDA8: ; 0x021DCDA8
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ mov r0, #0x16
+ ldr r5, [r4, #0xc]
+ lsl r0, r0, #4
+ ldr r6, [r5, r0]
+ ldrh r0, [r4, #6]
+ cmp r0, #4
+ bhi _021DCE5E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DCDC6: ; jump table
+ .short _021DCDD0 - _021DCDC6 - 2 ; case 0
+ .short _021DCDDE - _021DCDC6 - 2 ; case 1
+ .short _021DCDF0 - _021DCDC6 - 2 ; case 2
+ .short _021DCE30 - _021DCDC6 - 2 ; case 3
+ .short _021DCE4C - _021DCDC6 - 2 ; case 4
+_021DCDD0:
+ ldr r0, _021DCE60 ; =0x0000B3A8
+ ldr r0, [r5, r0]
+ bl MOD14_021E4DF8
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+_021DCDDE:
+ ldr r0, _021DCE60 ; =0x0000B3A8
+ ldr r0, [r5, r0]
+ bl MOD14_021E4E24
+ cmp r0, #0
+ beq _021DCE5E
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+_021DCDF0:
+ mov r0, #0x43
+ add r1, r6, #0
+ lsl r0, r0, #4
+ add r1, #0x40
+ ldrb r0, [r5, r0]
+ ldrb r1, [r1]
+ bl MOD14_021DDD1C
+ add r7, r0, #0
+ mov r0, #0x43
+ lsl r0, r0, #4
+ add r1, r6, #0
+ add r0, r5, r0
+ add r1, #0x40
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD14_021DE0C4
+ mov r0, #0x43
+ lsl r0, r0, #4
+ add r6, #0x40
+ add r0, r5, r0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD14_021DE2E8
+ ldr r0, _021DCE64 ; =0x000005DC
+ bl FUN_020054C8
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+_021DCE30:
+ mov r0, #0x43
+ lsl r0, r0, #4
+ add r0, r5, r0
+ bl MOD14_021DE394
+ cmp r0, #0
+ beq _021DCE5E
+ ldr r0, _021DCE60 ; =0x0000B3A8
+ ldr r0, [r5, r0]
+ bl MOD14_021E4BE0
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+_021DCE4C:
+ ldr r0, _021DCE60 ; =0x0000B3A8
+ ldr r0, [r5, r0]
+ bl MOD14_021E4C40
+ cmp r0, #0
+ beq _021DCE5E
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DCE5E:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DCE60: .word 0x0000B3A8
+_021DCE64: .word 0x000005DC
+
+ thumb_func_start MOD14_021DCE68
+MOD14_021DCE68: ; 0x021DCE68
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldrh r0, [r5, #6]
+ ldr r4, [r5, #0xc]
+ cmp r0, #0
+ beq _021DCE7A
+ cmp r0, #1
+ beq _021DCE98
+ pop {r3, r4, r5, pc}
+_021DCE7A:
+ ldr r0, _021DCEB8 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _021DCEBC ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021DF484
+ ldr r0, _021DCEC0 ; =0x0000B3A8
+ ldr r0, [r4, r0]
+ bl MOD14_021E4BE0
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r3, r4, r5, pc}
+_021DCE98:
+ ldr r0, _021DCEBC ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021DF59C
+ cmp r0, #0
+ beq _021DCEB6
+ ldr r0, _021DCEC0 ; =0x0000B3A8
+ ldr r0, [r4, r0]
+ bl MOD14_021E4C40
+ cmp r0, #0
+ beq _021DCEB6
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+_021DCEB6:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DCEB8: .word 0x000005DC
+_021DCEBC: .word 0x00005DC0
+_021DCEC0: .word 0x0000B3A8
+
+ thumb_func_start MOD14_021DCEC4
+MOD14_021DCEC4: ; 0x021DCEC4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x16
+ ldr r4, [r5, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ ldrh r0, [r5, #6]
+ beq _021DCF08
+ cmp r0, #0
+ beq _021DCEE4
+ cmp r0, #1
+ beq _021DCEF4
+ pop {r3, r4, r5, pc}
+_021DCEE4:
+ ldr r0, _021DCF38 ; =0x000065A0
+ add r0, r4, r0
+ bl MOD14_021E1450
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r3, r4, r5, pc}
+_021DCEF4:
+ ldr r0, _021DCF38 ; =0x000065A0
+ add r0, r4, r0
+ bl MOD14_021E1674
+ cmp r0, #0
+ beq _021DCF34
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+ pop {r3, r4, r5, pc}
+_021DCF08:
+ cmp r0, #0
+ beq _021DCF12
+ cmp r0, #1
+ beq _021DCF22
+ pop {r3, r4, r5, pc}
+_021DCF12:
+ ldr r0, _021DCF3C ; =0x0000B3AC
+ ldr r0, [r4, r0]
+ bl MOD14_021E526C
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r3, r4, r5, pc}
+_021DCF22:
+ ldr r0, _021DCF3C ; =0x0000B3AC
+ ldr r0, [r4, r0]
+ bl MOD14_021E52BC
+ cmp r0, #0
+ beq _021DCF34
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+_021DCF34:
+ pop {r3, r4, r5, pc}
+ nop
+_021DCF38: .word 0x000065A0
+_021DCF3C: .word 0x0000B3AC
+
+ thumb_func_start MOD14_021DCF40
+MOD14_021DCF40: ; 0x021DCF40
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r0, #0x16
+ ldr r4, [r5, #0xc]
+ lsl r0, r0, #4
+ ldr r6, [r4, r0]
+ add r0, r6, #0
+ bl MOD14_021DC3F4
+ cmp r0, #2
+ bne _021DCF60
+ ldr r0, _021DCF94 ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021DFF8C
+ b _021DCF84
+_021DCF60:
+ add r0, r6, #0
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ beq _021DCF70
+ cmp r0, #1
+ beq _021DCF7C
+ b _021DCF84
+_021DCF70:
+ mov r0, #0x43
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD14_021DEF4C
+ b _021DCF84
+_021DCF7C:
+ ldr r0, _021DCF98 ; =0x0000B22C
+ add r0, r4, r0
+ bl MOD14_021E3054
+_021DCF84:
+ ldr r0, _021DCF9C ; =0x000065A0
+ add r0, r4, r0
+ bl MOD14_021E1678
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DCF94: .word 0x00005DC0
+_021DCF98: .word 0x0000B22C
+_021DCF9C: .word 0x000065A0
+
+ thumb_func_start MOD14_021DCFA0
+MOD14_021DCFA0: ; 0x021DCFA0
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ ldr r0, _021DCFB8 ; =0x000065A0
+ add r0, r1, r0
+ bl MOD14_021E14D0
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+ pop {r4, pc}
+ nop
+_021DCFB8: .word 0x000065A0
+
+ thumb_func_start MOD14_021DCFBC
+MOD14_021DCFBC: ; 0x021DCFBC
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DCFCE
+ cmp r0, #1
+ beq _021DCFDE
+ pop {r4, pc}
+_021DCFCE:
+ ldr r0, _021DCFF4 ; =0x00005DC0
+ add r0, r1, r0
+ bl MOD14_021DF758
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DCFDE:
+ ldr r0, _021DCFF4 ; =0x00005DC0
+ add r0, r1, r0
+ bl MOD14_021DF7A0
+ cmp r0, #0
+ beq _021DCFF0
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DCFF0:
+ pop {r4, pc}
+ nop
+_021DCFF4: .word 0x00005DC0
+
+ thumb_func_start MOD14_021DCFF8
+MOD14_021DCFF8: ; 0x021DCFF8
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD00A
+ cmp r0, #1
+ beq _021DD01A
+ pop {r4, pc}
+_021DD00A:
+ ldr r0, _021DD030 ; =0x00005DC0
+ add r0, r1, r0
+ bl MOD14_021DF890
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD01A:
+ ldr r0, _021DD030 ; =0x00005DC0
+ add r0, r1, r0
+ bl MOD14_021DF8C4
+ cmp r0, #0
+ beq _021DD02C
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD02C:
+ pop {r4, pc}
+ nop
+_021DD030: .word 0x00005DC0
+
+ thumb_func_start MOD14_021DD034
+MOD14_021DD034: ; 0x021DD034
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD046
+ cmp r0, #1
+ beq _021DD056
+ pop {r4, pc}
+_021DD046:
+ ldr r0, _021DD06C ; =0x00005DC0
+ add r0, r1, r0
+ bl MOD14_021DF9DC
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD056:
+ ldr r0, _021DD06C ; =0x00005DC0
+ add r0, r1, r0
+ bl MOD14_021DFA58
+ cmp r0, #0
+ beq _021DD068
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD068:
+ pop {r4, pc}
+ nop
+_021DD06C: .word 0x00005DC0
+
+ thumb_func_start MOD14_021DD070
+MOD14_021DD070: ; 0x021DD070
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD082
+ cmp r0, #1
+ beq _021DD092
+ pop {r4, pc}
+_021DD082:
+ ldr r0, _021DD09C ; =0x00005DC0
+ add r0, r1, r0
+ bl MOD14_021DFE28
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD092:
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+ pop {r4, pc}
+ nop
+_021DD09C: .word 0x00005DC0
+
+ thumb_func_start MOD14_021DD0A0
+MOD14_021DD0A0: ; 0x021DD0A0
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD0B6
+ cmp r0, #1
+ beq _021DD0C6
+ cmp r0, #2
+ beq _021DD0D6
+ pop {r4, pc}
+_021DD0B6:
+ ldr r0, _021DD0EC ; =0x0000B22C
+ add r0, r1, r0
+ bl MOD14_021E2F08
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD0C6:
+ ldr r0, _021DD0EC ; =0x0000B22C
+ add r0, r1, r0
+ bl MOD14_021E2C7C
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD0D6:
+ ldr r0, _021DD0EC ; =0x0000B22C
+ add r0, r1, r0
+ bl MOD14_021E2DA4
+ cmp r0, #0
+ beq _021DD0E8
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD0E8:
+ pop {r4, pc}
+ nop
+_021DD0EC: .word 0x0000B22C
+
+ thumb_func_start MOD14_021DD0F0
+MOD14_021DD0F0: ; 0x021DD0F0
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD102
+ cmp r0, #1
+ beq _021DD112
+ pop {r4, pc}
+_021DD102:
+ ldr r0, _021DD128 ; =0x00005DC0
+ add r0, r1, r0
+ bl MOD14_021DFE60
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD112:
+ ldr r0, _021DD128 ; =0x00005DC0
+ add r0, r1, r0
+ bl MOD14_021DFE84
+ cmp r0, #0
+ beq _021DD124
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD124:
+ pop {r4, pc}
+ nop
+_021DD128: .word 0x00005DC0
+
+ thumb_func_start MOD14_021DD12C
+MOD14_021DD12C: ; 0x021DD12C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldrh r1, [r5, #6]
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r4, [r5, #0xc]
+ cmp r1, #0
+ ldr r0, [r4, r0]
+ beq _021DD144
+ cmp r1, #1
+ beq _021DD15C
+ pop {r3, r4, r5, pc}
+_021DD144:
+ bl MOD14_021DC3E0
+ add r1, r0, #0
+ mov r0, #0x43
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD14_021DEDD0
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r3, r4, r5, pc}
+_021DD15C:
+ mov r0, #0x43
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD14_021DEE08
+ cmp r0, #0
+ beq _021DD170
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+_021DD170:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DD174
+MOD14_021DD174: ; 0x021DD174
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldrh r1, [r5, #6]
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r4, [r5, #0xc]
+ cmp r1, #0
+ ldr r0, [r4, r0]
+ beq _021DD18C
+ cmp r1, #1
+ beq _021DD1A2
+ pop {r3, r4, r5, pc}
+_021DD18C:
+ bl MOD14_021DC3E8
+ add r1, r0, #0
+ ldr r0, _021DD1B8 ; =0x0000B22C
+ add r0, r4, r0
+ bl MOD14_021E2F44
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r3, r4, r5, pc}
+_021DD1A2:
+ ldr r0, _021DD1B8 ; =0x0000B22C
+ add r0, r4, r0
+ bl MOD14_021E2F68
+ cmp r0, #0
+ beq _021DD1B4
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+_021DD1B4:
+ pop {r3, r4, r5, pc}
+ nop
+_021DD1B8: .word 0x0000B22C
+
+ thumb_func_start MOD14_021DD1BC
+MOD14_021DD1BC: ; 0x021DD1BC
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD1CE
+ cmp r0, #1
+ beq _021DD1DE
+ pop {r4, pc}
+_021DD1CE:
+ ldr r0, _021DD1F4 ; =0x0000662C
+ add r0, r1, r0
+ bl MOD14_021E26E4
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD1DE:
+ ldr r0, _021DD1F4 ; =0x0000662C
+ add r0, r1, r0
+ bl MOD14_021E27AC
+ cmp r0, #0
+ beq _021DD1F0
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD1F0:
+ pop {r4, pc}
+ nop
+_021DD1F4: .word 0x0000662C
+
+ thumb_func_start MOD14_021DD1F8
+MOD14_021DD1F8: ; 0x021DD1F8
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD20A
+ cmp r0, #1
+ beq _021DD21A
+ pop {r4, pc}
+_021DD20A:
+ ldr r0, _021DD230 ; =0x0000662C
+ add r0, r1, r0
+ bl MOD14_021E283C
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD21A:
+ ldr r0, _021DD230 ; =0x0000662C
+ add r0, r1, r0
+ bl MOD14_021E2884
+ cmp r0, #0
+ beq _021DD22C
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD22C:
+ pop {r4, pc}
+ nop
+_021DD230: .word 0x0000662C
+
+ thumb_func_start MOD14_021DD234
+MOD14_021DD234: ; 0x021DD234
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldrh r0, [r5, #6]
+ ldr r4, [r5, #0xc]
+ cmp r0, #0
+ beq _021DD246
+ cmp r0, #1
+ beq _021DD256
+ pop {r3, r4, r5, pc}
+_021DD246:
+ ldr r0, _021DD274 ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021E0050
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r3, r4, r5, pc}
+_021DD256:
+ ldr r0, _021DD274 ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021E0080
+ cmp r0, #0
+ beq _021DD270
+ ldr r0, _021DD278 ; =0x000065A0
+ add r0, r4, r0
+ bl MOD14_021E1704
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+_021DD270:
+ pop {r3, r4, r5, pc}
+ nop
+_021DD274: .word 0x00005DC0
+_021DD278: .word 0x000065A0
+
+ thumb_func_start MOD14_021DD27C
+MOD14_021DD27C: ; 0x021DD27C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldrh r0, [r5, #6]
+ ldr r4, [r5, #0xc]
+ cmp r0, #0
+ beq _021DD28E
+ cmp r0, #1
+ beq _021DD29E
+ pop {r3, r4, r5, pc}
+_021DD28E:
+ ldr r0, _021DD2BC ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021E00F0
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r3, r4, r5, pc}
+_021DD29E:
+ ldr r0, _021DD2BC ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021E0120
+ cmp r0, #0
+ beq _021DD2B8
+ ldr r0, _021DD2C0 ; =0x000065A0
+ add r0, r4, r0
+ bl MOD14_021E1704
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+_021DD2B8:
+ pop {r3, r4, r5, pc}
+ nop
+_021DD2BC: .word 0x00005DC0
+_021DD2C0: .word 0x000065A0
+
+ thumb_func_start MOD14_021DD2C4
+MOD14_021DD2C4: ; 0x021DD2C4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldrh r0, [r5, #6]
+ ldr r4, [r5, #0xc]
+ cmp r0, #0
+ beq _021DD2D6
+ cmp r0, #1
+ beq _021DD2E6
+ pop {r3, r4, r5, pc}
+_021DD2D6:
+ ldr r0, _021DD304 ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021E0190
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r3, r4, r5, pc}
+_021DD2E6:
+ ldr r0, _021DD304 ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021E01BC
+ cmp r0, #0
+ beq _021DD300
+ ldr r0, _021DD308 ; =0x000065A0
+ add r0, r4, r0
+ bl MOD14_021E1704
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+_021DD300:
+ pop {r3, r4, r5, pc}
+ nop
+_021DD304: .word 0x00005DC0
+_021DD308: .word 0x000065A0
+
+ thumb_func_start MOD14_021DD30C
+MOD14_021DD30C: ; 0x021DD30C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ mov r0, #0x16
+ ldr r4, [r7, #0xc]
+ lsl r0, r0, #4
+ ldr r5, [r4, r0]
+ add r0, r5, #0
+ bl MOD14_021DC430
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD14_021DC3F4
+ cmp r0, #2
+ bne _021DD336
+ ldr r0, _021DD374 ; =0x00005DC0
+ add r1, r6, #0
+ add r0, r4, r0
+ bl MOD14_021DFFD8
+ b _021DD36C
+_021DD336:
+ add r0, r5, #0
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ beq _021DD358
+ cmp r0, #1
+ bne _021DD36C
+ add r0, r5, #0
+ bl MOD14_021DC3E8
+ add r1, r0, #0
+ ldr r0, _021DD378 ; =0x0000B22C
+ add r2, r6, #0
+ add r0, r4, r0
+ bl MOD14_021E3024
+ b _021DD36C
+_021DD358:
+ add r0, r5, #0
+ bl MOD14_021DC3E0
+ add r1, r0, #0
+ mov r0, #0x43
+ lsl r0, r0, #4
+ add r0, r4, r0
+ add r2, r6, #0
+ bl MOD14_021DEEF8
+_021DD36C:
+ add r0, r7, #0
+ bl MOD14_021DCBD8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DD374: .word 0x00005DC0
+_021DD378: .word 0x0000B22C
+
+ thumb_func_start MOD14_021DD37C
+MOD14_021DD37C: ; 0x021DD37C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldrh r0, [r5, #6]
+ ldr r4, [r5, #0xc]
+ cmp r0, #0
+ beq _021DD38E
+ cmp r0, #1
+ beq _021DD3A6
+ pop {r3, r4, r5, pc}
+_021DD38E:
+ ldr r0, _021DD3C4 ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021E022C
+ ldr r0, _021DD3C8 ; =0x0000B3A8
+ ldr r0, [r4, r0]
+ bl MOD14_021E4F58
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r3, r4, r5, pc}
+_021DD3A6:
+ ldr r0, _021DD3C8 ; =0x0000B3A8
+ ldr r0, [r4, r0]
+ bl MOD14_021E4FA0
+ cmp r0, #0
+ beq _021DD3C0
+ ldr r0, _021DD3C4 ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021E0244
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+_021DD3C0:
+ pop {r3, r4, r5, pc}
+ nop
+_021DD3C4: .word 0x00005DC0
+_021DD3C8: .word 0x0000B3A8
+
+ thumb_func_start MOD14_021DD3CC
+MOD14_021DD3CC: ; 0x021DD3CC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x16
+ ldr r4, [r5, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC450
+ add r1, r0, #0
+ ldr r0, _021DD3F0 ; =0x000065F4
+ add r0, r4, r0
+ bl MOD14_021E189C
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+ pop {r3, r4, r5, pc}
+ nop
+_021DD3F0: .word 0x000065F4
+
+ thumb_func_start MOD14_021DD3F4
+MOD14_021DD3F4: ; 0x021DD3F4
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ mov r0, #0x16
+ ldr r4, [r6, #0xc]
+ lsl r0, r0, #4
+ ldr r5, [r4, r0]
+ add r0, r5, #0
+ bl MOD14_021DC450
+ add r1, r0, #0
+ ldr r0, _021DD424 ; =0x000065F4
+ add r0, r4, r0
+ bl MOD14_021E189C
+ ldr r0, _021DD424 ; =0x000065F4
+ add r5, #0x74
+ add r0, r4, r0
+ add r1, r5, #0
+ bl MOD14_021E19D0
+ add r0, r6, #0
+ bl MOD14_021DCBD8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DD424: .word 0x000065F4
+
+ thumb_func_start MOD14_021DD428
+MOD14_021DD428: ; 0x021DD428
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ ldr r0, _021DD440 ; =0x000065F4
+ add r0, r1, r0
+ bl MOD14_021E1B44
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+ pop {r4, pc}
+ nop
+_021DD440: .word 0x000065F4
+
+ thumb_func_start MOD14_021DD444
+MOD14_021DD444: ; 0x021DD444
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ ldr r0, _021DD45C ; =0x000065F4
+ add r0, r1, r0
+ bl MOD14_021E1B78
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+ pop {r4, pc}
+ nop
+_021DD45C: .word 0x000065F4
+
+ thumb_func_start MOD14_021DD460
+MOD14_021DD460: ; 0x021DD460
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ mov r0, #0x16
+ ldr r4, [r6, #0xc]
+ lsl r0, r0, #4
+ ldr r5, [r4, r0]
+ ldr r0, _021DD488 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _021DD48C ; =0x000065F4
+ add r5, #0x74
+ add r0, r4, r0
+ add r1, r5, #0
+ bl MOD14_021E1B9C
+ add r0, r6, #0
+ bl MOD14_021DCBD8
+ pop {r4, r5, r6, pc}
+ nop
+_021DD488: .word 0x000005DC
+_021DD48C: .word 0x000065F4
+
+ thumb_func_start MOD14_021DD490
+MOD14_021DD490: ; 0x021DD490
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ mov r0, #0x16
+ ldr r4, [r6, #0xc]
+ lsl r0, r0, #4
+ ldr r5, [r4, r0]
+ ldr r0, _021DD4B8 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, _021DD4BC ; =0x000065F4
+ add r5, #0x74
+ add r0, r4, r0
+ add r1, r5, #0
+ bl MOD14_021E1BE4
+ add r0, r6, #0
+ bl MOD14_021DCBD8
+ pop {r4, r5, r6, pc}
+ nop
+_021DD4B8: .word 0x000005DD
+_021DD4BC: .word 0x000065F4
+
+ thumb_func_start MOD14_021DD4C0
+MOD14_021DD4C0: ; 0x021DD4C0
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD4D2
+ cmp r0, #1
+ beq _021DD4E2
+ pop {r4, pc}
+_021DD4D2:
+ ldr r0, _021DD4F8 ; =0x0000662C
+ add r0, r1, r0
+ bl MOD14_021E1F98
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD4E2:
+ ldr r0, _021DD4F8 ; =0x0000662C
+ add r0, r1, r0
+ bl MOD14_021E1FB8
+ cmp r0, #0
+ beq _021DD4F4
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD4F4:
+ pop {r4, pc}
+ nop
+_021DD4F8: .word 0x0000662C
+
+ thumb_func_start MOD14_021DD4FC
+MOD14_021DD4FC: ; 0x021DD4FC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldrh r0, [r5, #6]
+ ldr r4, [r5, #0xc]
+ cmp r0, #0
+ beq _021DD50E
+ cmp r0, #1
+ beq _021DD524
+ pop {r3, r4, r5, pc}
+_021DD50E:
+ ldr r0, _021DD52C ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, _021DD530 ; =0x0000662C
+ add r0, r4, r0
+ bl MOD14_021E1FC0
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r3, r4, r5, pc}
+_021DD524:
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DD52C: .word 0x000005DD
+_021DD530: .word 0x0000662C
+
+ thumb_func_start MOD14_021DD534
+MOD14_021DD534: ; 0x021DD534
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD546
+ cmp r0, #1
+ beq _021DD556
+ pop {r4, pc}
+_021DD546:
+ ldr r0, _021DD56C ; =0x0000662C
+ add r0, r1, r0
+ bl MOD14_021E1FE4
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD556:
+ ldr r0, _021DD56C ; =0x0000662C
+ add r0, r1, r0
+ bl MOD14_021E1FF0
+ cmp r0, #0
+ beq _021DD568
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD568:
+ pop {r4, pc}
+ nop
+_021DD56C: .word 0x0000662C
+
+ thumb_func_start MOD14_021DD570
+MOD14_021DD570: ; 0x021DD570
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD582
+ cmp r0, #1
+ beq _021DD594
+ pop {r4, pc}
+_021DD582:
+ mov r0, #0x43
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl MOD14_021DE8C8
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD594:
+ mov r0, #0x43
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl MOD14_021DE8E8
+ cmp r0, #0
+ beq _021DD5A8
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD5A8:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DD5AC
+MOD14_021DD5AC: ; 0x021DD5AC
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ mov r0, #0x16
+ ldr r5, [r4, #0xc]
+ lsl r0, r0, #4
+ ldr r6, [r5, r0]
+ ldrh r0, [r4, #6]
+ cmp r0, #3
+ bhi _021DD65E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DD5CA: ; jump table
+ .short _021DD5D2 - _021DD5CA - 2 ; case 0
+ .short _021DD5E8 - _021DD5CA - 2 ; case 1
+ .short _021DD626 - _021DD5CA - 2 ; case 2
+ .short _021DD64C - _021DD5CA - 2 ; case 3
+_021DD5D2:
+ ldr r0, _021DD660 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, _021DD664 ; =0x00005DC0
+ add r0, r5, r0
+ bl MOD14_021DFBB8
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, r5, r6, pc}
+_021DD5E8:
+ ldr r0, _021DD664 ; =0x00005DC0
+ add r0, r5, r0
+ bl MOD14_021DFC2C
+ cmp r0, #0
+ beq _021DD65E
+ add r0, r6, #0
+ bl MOD14_021DC3CC
+ cmp r0, #3
+ beq _021DD604
+ cmp r0, #4
+ beq _021DD610
+ b _021DD61A
+_021DD604:
+ ldr r0, _021DD668 ; =0x00006558
+ mov r1, #1
+ add r0, r5, r0
+ bl MOD14_021E0D60
+ b _021DD61A
+_021DD610:
+ ldr r0, _021DD668 ; =0x00006558
+ mov r1, #2
+ add r0, r5, r0
+ bl MOD14_021E0D60
+_021DD61A:
+ mov r0, #0
+ strh r0, [r4, #8]
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, r5, r6, pc}
+_021DD626:
+ ldrh r0, [r4, #8]
+ add r0, r0, #1
+ strh r0, [r4, #8]
+ ldrh r0, [r4, #8]
+ cmp r0, #6
+ blo _021DD65E
+ ldr r0, _021DD664 ; =0x00005DC0
+ add r0, r5, r0
+ bl MOD14_021DFD24
+ ldr r0, _021DD668 ; =0x00006558
+ mov r1, #0
+ add r0, r5, r0
+ bl MOD14_021E0D60
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, r5, r6, pc}
+_021DD64C:
+ ldr r0, _021DD664 ; =0x00005DC0
+ add r0, r5, r0
+ bl MOD14_021DFD80
+ cmp r0, #0
+ beq _021DD65E
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD65E:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DD660: .word 0x000005DD
+_021DD664: .word 0x00005DC0
+_021DD668: .word 0x00006558
+
+ thumb_func_start MOD14_021DD66C
+MOD14_021DD66C: ; 0x021DD66C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldrh r0, [r5, #6]
+ ldr r4, [r5, #0xc]
+ cmp r0, #0
+ beq _021DD67E
+ cmp r0, #1
+ beq _021DD69C
+ pop {r3, r4, r5, pc}
+_021DD67E:
+ ldr r0, _021DD6B0 ; =0x00000633
+ bl FUN_020054C8
+ ldr r0, _021DD6B4 ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021DFF1C
+ ldr r0, _021DD6B8 ; =0x0000B22C
+ add r0, r4, r0
+ bl MOD14_021E2B10
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r3, r4, r5, pc}
+_021DD69C:
+ ldr r0, _021DD6B8 ; =0x0000B22C
+ add r0, r4, r0
+ bl MOD14_021E2B40
+ cmp r0, #0
+ beq _021DD6AE
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+_021DD6AE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DD6B0: .word 0x00000633
+_021DD6B4: .word 0x00005DC0
+_021DD6B8: .word 0x0000B22C
+
+ thumb_func_start MOD14_021DD6BC
+MOD14_021DD6BC: ; 0x021DD6BC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r5, [r4, #0xc]
+ cmp r0, #3
+ bhi _021DD72C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DD6D4: ; jump table
+ .short _021DD6DC - _021DD6D4 - 2 ; case 0
+ .short _021DD6EA - _021DD6D4 - 2 ; case 1
+ .short _021DD6FC - _021DD6D4 - 2 ; case 2
+ .short _021DD712 - _021DD6D4 - 2 ; case 3
+_021DD6DC:
+ ldr r0, _021DD730 ; =0x0000B3A8
+ ldr r0, [r5, r0]
+ bl MOD14_021E4DF8
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+_021DD6EA:
+ ldr r0, _021DD730 ; =0x0000B3A8
+ ldr r0, [r5, r0]
+ bl MOD14_021E4E24
+ cmp r0, #0
+ beq _021DD72C
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+_021DD6FC:
+ ldr r0, _021DD734 ; =0x00000634
+ bl FUN_020054C8
+ ldr r0, _021DD738 ; =0x0000B22C
+ add r0, r5, r0
+ bl MOD14_021E2BB0
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r3, r4, r5, pc}
+_021DD712:
+ ldr r0, _021DD738 ; =0x0000B22C
+ add r0, r5, r0
+ bl MOD14_021E2BD0
+ cmp r0, #0
+ beq _021DD72C
+ ldr r0, _021DD73C ; =0x00005DC0
+ add r0, r5, r0
+ bl MOD14_021DFF54
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD72C:
+ pop {r3, r4, r5, pc}
+ nop
+_021DD730: .word 0x0000B3A8
+_021DD734: .word 0x00000634
+_021DD738: .word 0x0000B22C
+_021DD73C: .word 0x00005DC0
+
+ thumb_func_start MOD14_021DD740
+MOD14_021DD740: ; 0x021DD740
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD752
+ cmp r0, #1
+ beq _021DD762
+ pop {r4, pc}
+_021DD752:
+ ldr r0, _021DD778 ; =0x0000B22C
+ add r0, r1, r0
+ bl MOD14_021E2C7C
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD762:
+ ldr r0, _021DD778 ; =0x0000B22C
+ add r0, r1, r0
+ bl MOD14_021E2DA4
+ cmp r0, #0
+ beq _021DD774
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD774:
+ pop {r4, pc}
+ nop
+_021DD778: .word 0x0000B22C
+
+ thumb_func_start MOD14_021DD77C
+MOD14_021DD77C: ; 0x021DD77C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldrh r1, [r5, #6]
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r4, [r5, #0xc]
+ cmp r1, #0
+ ldr r0, [r4, r0]
+ beq _021DD794
+ cmp r1, #1
+ beq _021DD7B4
+ pop {r3, r4, r5, pc}
+_021DD794:
+ bl MOD14_021DC3CC
+ cmp r0, #1
+ bne _021DD7AC
+ ldr r0, _021DD7C8 ; =0x0000B22C
+ add r0, r4, r0
+ bl MOD14_021E2DB4
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r3, r4, r5, pc}
+_021DD7AC:
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+ pop {r3, r4, r5, pc}
+_021DD7B4:
+ ldr r0, _021DD7C8 ; =0x0000B22C
+ add r0, r4, r0
+ bl MOD14_021E2E50
+ cmp r0, #0
+ beq _021DD7C6
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+_021DD7C6:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DD7C8: .word 0x0000B22C
+
+ thumb_func_start MOD14_021DD7CC
+MOD14_021DD7CC: ; 0x021DD7CC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x43
+ ldr r4, [r5, #0xc]
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD14_021DEEA8
+ ldr r0, _021DD7F4 ; =0x0000B22C
+ add r0, r4, r0
+ bl MOD14_021E2FE8
+ ldr r0, _021DD7F8 ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021DFFB4
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DD7F4: .word 0x0000B22C
+_021DD7F8: .word 0x00005DC0
+
+ thumb_func_start MOD14_021DD7FC
+MOD14_021DD7FC: ; 0x021DD7FC
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r0, #0x16
+ ldr r4, [r5, #0xc]
+ lsl r0, r0, #4
+ ldr r6, [r4, r0]
+ ldrh r0, [r5, #6]
+ cmp r0, #0
+ beq _021DD818
+ cmp r0, #1
+ beq _021DD828
+ cmp r0, #2
+ beq _021DD854
+ pop {r4, r5, r6, pc}
+_021DD818:
+ ldr r0, _021DD868 ; =0x0000B3A4
+ ldr r0, [r4, r0]
+ bl MOD14_021E37B8
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r4, r5, r6, pc}
+_021DD828:
+ ldr r0, _021DD868 ; =0x0000B3A4
+ ldr r0, [r4, r0]
+ bl MOD14_021E389C
+ cmp r0, #0
+ beq _021DD866
+ add r6, #0x9c
+ ldrb r0, [r6]
+ cmp r0, #0
+ bne _021DD844
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+ pop {r4, r5, r6, pc}
+_021DD844:
+ ldr r0, _021DD868 ; =0x0000B3A4
+ ldr r0, [r4, r0]
+ bl MOD14_021E3B54
+ ldrh r0, [r5, #6]
+ add r0, r0, #1
+ strh r0, [r5, #6]
+ pop {r4, r5, r6, pc}
+_021DD854:
+ ldr r0, _021DD868 ; =0x0000B3A4
+ ldr r0, [r4, r0]
+ bl MOD14_021E3B80
+ cmp r0, #0
+ beq _021DD866
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+_021DD866:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DD868: .word 0x0000B3A4
+
+ thumb_func_start MOD14_021DD86C
+MOD14_021DD86C: ; 0x021DD86C
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD87E
+ cmp r0, #1
+ beq _021DD88E
+ pop {r4, pc}
+_021DD87E:
+ ldr r0, _021DD8A4 ; =0x0000B3A4
+ ldr r0, [r1, r0]
+ bl MOD14_021E3BA8
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD88E:
+ ldr r0, _021DD8A4 ; =0x0000B3A4
+ ldr r0, [r1, r0]
+ bl MOD14_021E3C60
+ cmp r0, #0
+ beq _021DD8A0
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD8A0:
+ pop {r4, pc}
+ nop
+_021DD8A4: .word 0x0000B3A4
+
+ thumb_func_start MOD14_021DD8A8
+MOD14_021DD8A8: ; 0x021DD8A8
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ ldr r0, _021DD8C0 ; =0x0000B3A4
+ ldr r0, [r1, r0]
+ bl MOD14_021E4734
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+ pop {r4, pc}
+ nop
+_021DD8C0: .word 0x0000B3A4
+
+ thumb_func_start MOD14_021DD8C4
+MOD14_021DD8C4: ; 0x021DD8C4
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ ldr r0, _021DD8DC ; =0x00005DC0
+ add r0, r1, r0
+ bl MOD14_021E0008
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+ pop {r4, pc}
+ nop
+_021DD8DC: .word 0x00005DC0
+
+ thumb_func_start MOD14_021DD8E0
+MOD14_021DD8E0: ; 0x021DD8E0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r5, #0xc]
+ ldr r0, _021DD900 ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021E002C
+ mov r0, #0x43
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD14_021DEF94
+ add r0, r5, #0
+ bl MOD14_021DCBD8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DD900: .word 0x00005DC0
+
+ thumb_func_start MOD14_021DD904
+MOD14_021DD904: ; 0x021DD904
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x43
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl MOD14_021DF03C
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021DD91C
+MOD14_021DD91C: ; 0x021DD91C
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x43
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl MOD14_021DEF94
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021DD934
+MOD14_021DD934: ; 0x021DD934
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD946
+ cmp r0, #1
+ beq _021DD956
+ pop {r4, pc}
+_021DD946:
+ ldr r0, _021DD96C ; =0x00005DC0
+ add r0, r1, r0
+ bl MOD14_021DF758
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD956:
+ ldr r0, _021DD96C ; =0x00005DC0
+ add r0, r1, r0
+ bl MOD14_021DF7A0
+ cmp r0, #0
+ beq _021DD968
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD968:
+ pop {r4, pc}
+ nop
+_021DD96C: .word 0x00005DC0
+
+ thumb_func_start MOD14_021DD970
+MOD14_021DD970: ; 0x021DD970
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ ldr r0, _021DD988 ; =0x0000B3AC
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl MOD14_021E5214
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+ pop {r4, pc}
+ .align 2, 0
+_021DD988: .word 0x0000B3AC
+
+ thumb_func_start MOD14_021DD98C
+MOD14_021DD98C: ; 0x021DD98C
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ ldr r0, _021DD9A4 ; =0x0000B3AC
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl MOD14_021E5214
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+ pop {r4, pc}
+ .align 2, 0
+_021DD9A4: .word 0x0000B3AC
+
+ thumb_func_start MOD14_021DD9A8
+MOD14_021DD9A8: ; 0x021DD9A8
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ ldr r1, [r4, #0xc]
+ cmp r0, #0
+ beq _021DD9BA
+ cmp r0, #1
+ beq _021DD9CA
+ pop {r4, pc}
+_021DD9BA:
+ ldr r0, _021DD9E0 ; =0x0000B3AC
+ ldr r0, [r1, r0]
+ bl MOD14_021E52C0
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r4, pc}
+_021DD9CA:
+ ldr r0, _021DD9E0 ; =0x0000B3AC
+ ldr r0, [r1, r0]
+ bl MOD14_021E52E0
+ cmp r0, #0
+ beq _021DD9DC
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DD9DC:
+ pop {r4, pc}
+ nop
+_021DD9E0: .word 0x0000B3AC
+
+ thumb_func_start MOD14_021DD9E4
+MOD14_021DD9E4: ; 0x021DD9E4
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ ldrh r0, [r4, #6]
+ cmp r0, #0
+ beq _021DD9F8
+ cmp r0, #1
+ beq _021DDA20
+ add sp, #0xc
+ pop {r3, r4, pc}
+_021DD9F8:
+ ldr r0, _021DDA34 ; =0x0000060E
+ bl FUN_020054C8
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldrh r0, [r4, #6]
+ add sp, #0xc
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ pop {r3, r4, pc}
+_021DDA20:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021DDA2E
+ add r0, r4, #0
+ bl MOD14_021DCBD8
+_021DDA2E:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_021DDA34: .word 0x0000060E
+
+ thumb_func_start MOD14_021DDA38
+MOD14_021DDA38: ; 0x021DDA38
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021DDB20 ; =0x021E63A4
+ add r4, r1, #0
+ bl FUN_0201E66C
+ ldr r2, _021DDB24 ; =0x04000304
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ mov r0, #1
+ mov r1, #0
+ add r2, r0, #0
+ bl GX_SetGraphicsMode
+ ldr r0, _021DDB28 ; =0x021E627C
+ bl FUN_02016BBC
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r2, _021DDB2C ; =0x021E6350
+ mov r1, #1
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r2, _021DDB30 ; =0x021E6334
+ mov r1, #2
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r2, _021DDB34 ; =0x021E62FC
+ mov r1, #3
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ beq _021DDADA
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r2, _021DDB38 ; =0x021E6318
+ mov r1, #4
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r2, _021DDB3C ; =0x021E62E0
+ mov r1, #5
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r2, _021DDB40 ; =0x021E62C4
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r2, _021DDB44 ; =0x021E62A8
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ b _021DDB1A
+_021DDADA:
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r2, _021DDB38 ; =0x021E6318
+ mov r1, #4
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r2, _021DDB48 ; =0x021E6388
+ mov r1, #5
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r2, _021DDB4C ; =0x021E628C
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r2, _021DDB44 ; =0x021E62A8
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+_021DDB1A:
+ bl MOD14_021DDC78
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DDB20: .word 0x021E63A4
+_021DDB24: .word 0x04000304
+_021DDB28: .word 0x021E627C
+_021DDB2C: .word 0x021E6350
+_021DDB30: .word 0x021E6334
+_021DDB34: .word 0x021E62FC
+_021DDB38: .word 0x021E6318
+_021DDB3C: .word 0x021E62E0
+_021DDB40: .word 0x021E62C4
+_021DDB44: .word 0x021E62A8
+_021DDB48: .word 0x021E6388
+_021DDB4C: .word 0x021E628C
+
+ thumb_func_start MOD14_021DDB50
+MOD14_021DDB50: ; 0x021DDB50
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r3, #1
+ mov r2, #0x57
+ add r4, r1, #0
+ str r3, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ lsl r2, r2, #2
+ ldr r2, [r5, r2]
+ mov r0, #0x12
+ mov r1, #4
+ bl FUN_0200687C
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_02017CD0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r1, #1
+ mov r2, #0x57
+ str r1, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ lsl r2, r2, #2
+ ldr r2, [r5, r2]
+ mov r0, #0x12
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0xa
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x12
+ mov r1, #5
+ add r3, r2, #0
+ bl FUN_02006930
+ add r0, r4, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ beq _021DDBF2
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xa
+ mov r2, #0x57
+ str r0, [sp, #0xc]
+ lsl r2, r2, #2
+ ldr r2, [r5, r2]
+ mov r0, #0x12
+ mov r3, #2
+ bl FUN_020068C8
+_021DDBF2:
+ mov r0, #0x43
+ lsl r0, r0, #4
+ add r0, r5, r0
+ bl MOD14_021DE014
+ mov r0, #0x43
+ lsl r0, r0, #4
+ add r1, r4, #0
+ add r0, r5, r0
+ add r1, #0x40
+ mov r2, #0
+ mov r3, #1
+ bl MOD14_021DE0C4
+ ldr r0, _021DDC60 ; =0x000065A0
+ add r0, r5, r0
+ bl MOD14_021E0F40
+ ldr r0, _021DDC64 ; =0x000065F4
+ add r0, r5, r0
+ bl MOD14_021E1818
+ ldr r0, _021DDC68 ; =0x0000662C
+ add r0, r5, r0
+ bl MOD14_021E1EEC
+ ldr r0, _021DDC6C ; =0x0000B3A4
+ ldr r0, [r5, r0]
+ bl MOD14_021E355C
+ ldr r0, _021DDC70 ; =0x0000B3AC
+ ldr r0, [r5, r0]
+ bl MOD14_021E5128
+ add r0, r4, #0
+ bl MOD14_021DC3CC
+ cmp r0, #1
+ bne _021DDC48
+ ldr r0, _021DDC74 ; =0x0000B22C
+ add r0, r5, r0
+ bl MOD14_021E2AE8
+_021DDC48:
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ bl GX_DispOn
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DDC60: .word 0x000065A0
+_021DDC64: .word 0x000065F4
+_021DDC68: .word 0x0000662C
+_021DDC6C: .word 0x0000B3A4
+_021DDC70: .word 0x0000B3AC
+_021DDC74: .word 0x0000B22C
+
+ thumb_func_start MOD14_021DDC78
+MOD14_021DDC78: ; 0x021DDC78
+ push {r3, lr}
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r0, _021DDCDC ; =0x04000008
+ mov r1, #3
+ ldrh r2, [r0]
+ bic r2, r1
+ mov r1, #1
+ orr r1, r2
+ strh r1, [r0]
+ add r0, #0x58
+ ldrh r1, [r0]
+ ldr r2, _021DDCE0 ; =0xFFFFCFFD
+ and r1, r2
+ strh r1, [r0]
+ ldrh r3, [r0]
+ add r1, r2, #2
+ and r3, r1
+ mov r1, #0x10
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r3, [r0]
+ ldr r1, _021DDCE4 ; =0x0000CFFB
+ and r1, r3
+ strh r1, [r0]
+ add r1, r2, #2
+ ldrh r3, [r0]
+ lsr r2, r2, #0x11
+ and r3, r1
+ mov r1, #8
+ orr r1, r3
+ strh r1, [r0]
+ mov r0, #0
+ add r1, r0, #0
+ mov r3, #0x3f
+ str r0, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _021DDCE8 ; =0x04000540
+ mov r0, #2
+ str r0, [r1]
+ ldr r0, _021DDCEC ; =0xBFFF0000
+ str r0, [r1, #0x40]
+ pop {r3, pc}
+ .align 2, 0
+_021DDCDC: .word 0x04000008
+_021DDCE0: .word 0xFFFFCFFD
+_021DDCE4: .word 0x0000CFFB
+_021DDCE8: .word 0x04000540
+_021DDCEC: .word 0xBFFF0000
+
+ thumb_func_start MOD14_021DDCF0
+MOD14_021DDCF0: ; 0x021DDCF0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021DDD10 ; =0x00005DC0
+ add r0, r4, r0
+ bl MOD14_021DF144
+ ldr r0, _021DDD14 ; =0x00006558
+ add r0, r4, r0
+ bl MOD14_021E0CCC
+ ldr r0, _021DDD18 ; =0x0000B3A8
+ ldr r0, [r4, r0]
+ bl MOD14_021E49C4
+ pop {r4, pc}
+ nop
+_021DDD10: .word 0x00005DC0
+_021DDD14: .word 0x00006558
+_021DDD18: .word 0x0000B3A8
+
+ thumb_func_start MOD14_021DDD1C
+MOD14_021DDD1C: ; 0x021DDD1C
+ cmp r1, r0
+ bls _021DDD2A
+ mov r2, #0x12
+ sub r3, r1, r0
+ sub r1, r2, r1
+ add r0, r0, r1
+ b _021DDD32
+_021DDD2A:
+ mov r2, #0x12
+ sub r2, r2, r0
+ add r3, r1, r2
+ sub r0, r0, r1
+_021DDD32:
+ cmp r3, r0
+ blt _021DDD3C
+ mov r0, #0
+ mvn r0, r0
+ bx lr
+_021DDD3C:
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD14_021DDD40
+MOD14_021DDD40: ; 0x021DDD40
+ ldr r3, _021DDD44 ; =0x0200CA61
+ bx r3
+ .align 2, 0
+_021DDD44: .word 0x0200CA61
+
+ thumb_func_start MOD14_021DDD48
+MOD14_021DDD48: ; 0x021DDD48
+ mov r1, #0x51
+ lsl r1, r1, #2
+ add r0, r0, r1
+ bx lr
+
+ thumb_func_start MOD14_021DDD50
+MOD14_021DDD50: ; 0x021DDD50
+ mov r1, #0x59
+ lsl r1, r1, #2
+ add r0, r0, r1
+ bx lr
+
+ thumb_func_start MOD14_021DDD58
+MOD14_021DDD58: ; 0x021DDD58
+ mov r1, #0x43
+ lsl r1, r1, #4
+ add r0, r0, r1
+ bx lr
+
+ thumb_func_start MOD14_021DDD60
+MOD14_021DDD60: ; 0x021DDD60
+ ldr r1, _021DDD68 ; =0x0000B22C
+ add r0, r0, r1
+ bx lr
+ nop
+_021DDD68: .word 0x0000B22C
+
+ thumb_func_start MOD14_021DDD6C
+MOD14_021DDD6C: ; 0x021DDD6C
+ ldr r1, _021DDD74 ; =0x00005DC0
+ add r0, r0, r1
+ bx lr
+ nop
+_021DDD74: .word 0x00005DC0
+
+ thumb_func_start MOD14_021DDD78
+MOD14_021DDD78: ; 0x021DDD78
+ ldr r1, _021DDD80 ; =0x0000B3A8
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_021DDD80: .word 0x0000B3A8
+
+ thumb_func_start MOD14_021DDD84
+MOD14_021DDD84: ; 0x021DDD84
+ ldr r1, _021DDD8C ; =0x0000662C
+ add r0, r0, r1
+ bx lr
+ nop
+_021DDD8C: .word 0x0000662C
+
+ thumb_func_start MOD14_021DDD90
+MOD14_021DDD90: ; 0x021DDD90
+ mov r1, #0x56
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bx lr
+
+ thumb_func_start MOD14_021DDD98
+MOD14_021DDD98: ; 0x021DDD98
+ push {r3, lr}
+ mov r1, #0x16
+ lsl r1, r1, #4
+ ldr r0, [r0, r1]
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ beq _021DDDAC
+ mov r0, #0
+ pop {r3, pc}
+_021DDDAC:
+ mov r0, #0x2b
+ mvn r0, r0
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DDDB4
+MOD14_021DDDB4: ; 0x021DDDB4
+ str r1, [r0]
+ str r2, [r0, #8]
+ ldr r1, [sp]
+ str r3, [r0, #0xc]
+ str r1, [r0, #0x10]
+ add r1, r0, #0
+ ldr r2, [sp, #4]
+ add r1, #0x20
+ strb r2, [r1]
+ mov r1, #0
+ str r1, [r0, #4]
+ str r1, [r0, #0x14]
+ str r1, [r0, #0x18]
+ str r1, [r0, #0x1c]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DDDD4
+MOD14_021DDDD4: ; 0x021DDDD4
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ str r0, [sp]
+ lsl r0, r2, #0xc
+ str r0, [sp, #8]
+ lsl r0, r3, #0xc
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x30]
+ str r1, [sp, #4]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x34]
+ str r0, [sp, #0x18]
+ mov r0, #0xa
+ str r0, [sp, #0x1c]
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ add r0, sp, #0
+ bl FUN_0201FF84
+ add r5, r0, #0
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ cmp r5, #0
+ beq _021DDE1E
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_020200BC
+ mov r1, #1
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+_021DDE1E:
+ add r0, r5, #0
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021DDE24
+MOD14_021DDE24: ; 0x021DDE24
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl OS_DisableInterrupts
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02020310
+ add r0, r6, #0
+ bl OS_RestoreInterrupts
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021DDE40
+MOD14_021DDE40: ; 0x021DDE40
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r1, #0
+ lsl r1, r3, #0x1b
+ lsr r1, r1, #0x13
+ mov ip, r1
+ asr r1, r3, #5
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x13
+ mov lr, r1
+ asr r1, r3, #0xa
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x13
+ str r1, [sp, #4]
+ add r7, r0, #0
+ str r2, [sp]
+ add r1, r2, #0
+ sub r2, r2, #1
+ ldr r0, [sp, #0x20]
+ str r2, [sp]
+ cmp r1, #0
+ beq _021DDED6
+_021DDE6C:
+ ldrh r1, [r7]
+ add r7, r7, #2
+ lsl r2, r1, #0x1b
+ lsr r4, r2, #0x13
+ asr r2, r1, #5
+ asr r1, r1, #0xa
+ lsl r2, r2, #0x1b
+ lsl r1, r1, #0x1b
+ lsr r3, r2, #0x13
+ lsr r2, r1, #0x13
+ mov r1, ip
+ sub r5, r1, r4
+ asr r1, r5, #3
+ lsr r1, r1, #0x1c
+ add r1, r5, r1
+ asr r1, r1, #4
+ mul r1, r0
+ add r5, r4, r1
+ mov r1, lr
+ sub r1, r1, r3
+ asr r4, r1, #3
+ lsr r4, r4, #0x1c
+ add r4, r1, r4
+ asr r1, r4, #4
+ mul r1, r0
+ add r3, r3, r1
+ ldr r1, [sp, #4]
+ sub r1, r1, r2
+ asr r4, r1, #3
+ lsr r4, r4, #0x1c
+ add r4, r1, r4
+ asr r1, r4, #4
+ mul r1, r0
+ add r4, r2, r1
+ asr r2, r5, #8
+ mov r1, #0x1f
+ and r1, r2
+ asr r2, r3, #8
+ asr r3, r4, #8
+ lsl r3, r3, #0x1b
+ lsl r2, r2, #0x1b
+ lsr r3, r3, #0x11
+ lsr r2, r2, #0x16
+ orr r2, r3
+ orr r1, r2
+ strh r1, [r6]
+ ldr r1, [sp]
+ add r6, r6, #2
+ add r2, r1, #0
+ sub r2, r2, #1
+ str r2, [sp]
+ cmp r1, #0
+ bne _021DDE6C
+_021DDED6:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DDEDC
+MOD14_021DDEDC: ; 0x021DDEDC
+ ldr r1, _021DDEE4 ; =0x0000B3B0
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_021DDEE4: .word 0x0000B3B0
+
+ thumb_func_start MOD14_021DDEE8
+MOD14_021DDEE8: ; 0x021DDEE8
+ ldr r0, _021DDEF0 ; =0x021E6A0C
+ mov r1, #0
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+_021DDEF0: .word 0x021E6A0C
+
+ thumb_func_start MOD14_021DDEF4
+MOD14_021DDEF4: ; 0x021DDEF4
+ push {r4, r5, r6, lr}
+ ldr r6, _021DDF28 ; =0x021E6A0C
+ ldr r0, [r6]
+ cmp r0, #0
+ beq _021DDF26
+ mov r4, #0
+ cmp r0, #0
+ bls _021DDF20
+ ldr r5, _021DDF2C ; =0x021E6A10
+_021DDF06:
+ ldr r0, [r5, #8]
+ bl FUN_02016A18
+ ldr r1, [r5]
+ cmp r1, #0
+ beq _021DDF16
+ ldr r0, [r5, #4]
+ blx r1
+_021DDF16:
+ ldr r0, [r6]
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, r0
+ blo _021DDF06
+_021DDF20:
+ ldr r0, _021DDF28 ; =0x021E6A0C
+ mov r1, #0
+ str r1, [r0]
+_021DDF26:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DDF28: .word 0x021E6A0C
+_021DDF2C: .word 0x021E6A10
+
+ thumb_func_start MOD14_021DDF30
+MOD14_021DDF30: ; 0x021DDF30
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _021DDF60 ; =0x021E6A0C
+ add r4, r1, #0
+ ldr r0, [r0]
+ add r6, r2, #0
+ cmp r0, #0x20
+ blo _021DDF44
+ bl ErrorHandling
+_021DDF44:
+ ldr r2, _021DDF60 ; =0x021E6A0C
+ mov r1, #0xc
+ ldr r0, [r2]
+ ldr r3, _021DDF64 ; =0x021E6A18
+ mul r1, r0
+ str r5, [r3, r1]
+ ldr r3, _021DDF68 ; =0x021E6A10
+ add r0, r0, #1
+ str r4, [r3, r1]
+ ldr r3, _021DDF6C ; =0x021E6A14
+ str r0, [r2]
+ str r6, [r3, r1]
+ pop {r4, r5, r6, pc}
+ nop
+_021DDF60: .word 0x021E6A0C
+_021DDF64: .word 0x021E6A18
+_021DDF68: .word 0x021E6A10
+_021DDF6C: .word 0x021E6A14
+
+ thumb_func_start MOD14_021DDF70
+MOD14_021DDF70: ; 0x021DDF70
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r2, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ add r0, #0x40
+ ldrb r0, [r0]
+ add r4, r1, #0
+ add r7, r3, #0
+ strb r0, [r5]
+ mov r0, #0xb
+ strb r0, [r5, #1]
+ mov r0, #0
+ strb r0, [r5, #2]
+ add r0, r4, #0
+ bl MOD14_021DDD98
+ ldr r1, _021DDFE0 ; =0x0000585C
+ str r0, [r5, r1]
+ ldr r2, [r5, r1]
+ add r0, r1, #0
+ add r2, #0x48
+ sub r0, #8
+ str r2, [r5, r0]
+ mov r0, #0x11
+ ldr r2, [r5, r1]
+ lsl r0, r0, #4
+ add r2, r2, r0
+ sub r0, r1, #4
+ str r2, [r5, r0]
+ add r0, r4, #0
+ bl MOD14_021DDD50
+ ldr r1, _021DDFE4 ; =0x00005980
+ mov r2, #0x1e
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ add r1, r5, #0
+ add r1, #0xa8
+ bl MOD14_021E08E4
+ ldr r0, _021DDFE4 ; =0x00005980
+ mov r1, #0x1b
+ lsl r1, r1, #6
+ ldr r0, [r5, r0]
+ add r1, r5, r1
+ mov r2, #0x1e
+ bl MOD14_021E08E4
+ ldr r1, _021DDFE8 ; =0x00005984
+ str r7, [r5, r1]
+ add r0, r1, #4
+ str r6, [r5, r0]
+ add r1, #8
+ str r4, [r5, r1]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DDFE0: .word 0x0000585C
+_021DDFE4: .word 0x00005980
+_021DDFE8: .word 0x00005984
+
+ thumb_func_start MOD14_021DDFEC
+MOD14_021DDFEC: ; 0x021DDFEC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021DE010 ; =0x00005980
+ add r1, r4, #0
+ ldr r0, [r4, r0]
+ add r1, #0xa8
+ mov r2, #0x1e
+ bl MOD14_021E0908
+ ldr r0, _021DE010 ; =0x00005980
+ mov r1, #0x1b
+ lsl r1, r1, #6
+ ldr r0, [r4, r0]
+ add r1, r4, r1
+ mov r2, #0x1e
+ bl MOD14_021E0908
+ pop {r4, pc}
+ .align 2, 0
+_021DE010: .word 0x00005980
+
+ thumb_func_start MOD14_021DE014
+MOD14_021DE014: ; 0x021DE014
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, _021DE060 ; =0x00005984
+ mov r1, #3
+ ldr r0, [r4, r0]
+ bl FUN_02017B48
+ ldr r1, _021DE064 ; =0x0000585C
+ str r0, [r4, #0xc]
+ ldr r1, [r4, r1]
+ mov r2, #0
+ sub r1, r0, r1
+ add r3, r1, #0
+ ldr r0, _021DE068 ; =0x000001FF
+ mov r1, #3
+ and r3, r0
+ ldr r0, _021DE060 ; =0x00005984
+ str r3, [r4, #0xc]
+ ldr r0, [r4, r0]
+ bl FUN_020179E0
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ mov r0, #0x20
+ str r0, [sp, #8]
+ mov r0, #9
+ str r0, [sp, #0xc]
+ ldr r0, _021DE060 ; =0x00005984
+ mov r1, #3
+ ldr r0, [r4, r0]
+ mov r2, #0x18
+ bl FUN_02018540
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021DE060: .word 0x00005984
+_021DE064: .word 0x0000585C
+_021DE068: .word 0x000001FF
+
+ thumb_func_start MOD14_021DE06C
+MOD14_021DE06C: ; 0x021DE06C
+ push {r4, r5, r6, r7}
+ ldr r5, [sp, #0x10]
+ cmp r1, #0
+ beq _021DE0A2
+ ldrb r6, [r0, #2]
+ mov r4, #1
+ add r7, r6, #0
+ mov r6, #0x69
+ eor r7, r4
+ lsl r6, r6, #2
+ mul r6, r7
+ str r6, [r2]
+ mov r2, #0x17
+ mul r2, r1
+ ldrb r6, [r0, #1]
+ mov r1, #0x3f
+ add r2, r6, r2
+ and r1, r2
+ str r1, [r3]
+ ldrb r0, [r0, #2]
+ eor r0, r4
+ lsl r1, r0, #1
+ ldr r0, _021DE0C0 ; =0x021E656C
+ ldrh r0, [r0, r1]
+ str r0, [r5]
+ pop {r4, r5, r6, r7}
+ bx lr
+_021DE0A2:
+ ldrb r4, [r0, #2]
+ mov r1, #0x69
+ lsl r1, r1, #2
+ mul r1, r4
+ str r1, [r2]
+ ldrb r1, [r0, #1]
+ str r1, [r3]
+ ldrb r0, [r0, #2]
+ lsl r1, r0, #1
+ ldr r0, _021DE0C0 ; =0x021E656C
+ ldrh r0, [r0, r1]
+ str r0, [r5]
+ pop {r4, r5, r6, r7}
+ bx lr
+ nop
+_021DE0C0: .word 0x021E656C
+
+ thumb_func_start MOD14_021DE0C4
+MOD14_021DE0C4: ; 0x021DE0C4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r6, r2, #0
+ add r1, sp, #8
+ add r7, r3, #0
+ str r1, [sp]
+ add r1, r6, #0
+ add r2, sp, #0x10
+ add r3, sp, #0xc
+ add r5, r0, #0
+ bl MOD14_021DE06C
+ ldr r2, [sp, #8]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r3, r7, #0
+ bl MOD14_021DE138
+ ldr r2, [sp, #0x10]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD14_021DE1D0
+ ldr r0, [sp, #8]
+ add r1, r4, #0
+ str r0, [sp]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ add r0, r5, #0
+ bl MOD14_021DE278
+ cmp r7, #0
+ beq _021DE12C
+ cmp r6, #0
+ bne _021DE12C
+ ldrb r3, [r5, #2]
+ mov r0, #0xb8
+ mul r0, r6
+ str r0, [sp]
+ ldr r0, _021DE130 ; =0x00000618
+ add r1, r5, #0
+ add r1, #0xa8
+ mul r0, r3
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r1, _021DE134 ; =0x00005980
+ ldrb r2, [r4]
+ ldr r1, [r5, r1]
+ add r0, r5, #0
+ bl MOD14_021DEB34
+_021DE12C:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DE130: .word 0x00000618
+_021DE134: .word 0x00005980
+
+ thumb_func_start MOD14_021DE138
+MOD14_021DE138: ; 0x021DE138
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ ldrb r2, [r1, #1]
+ add r7, r0, #0
+ add r5, r3, #0
+ lsl r1, r2, #1
+ add r2, r2, r1
+ ldr r1, _021DE1C4 ; =0x021E65AE
+ mov r0, #0x12
+ ldrb r1, [r1, r2]
+ add r2, sp, #8
+ mov r3, #0xa
+ bl FUN_02006C08
+ str r0, [sp, #4]
+ cmp r0, #0
+ beq _021DE1C0
+ cmp r5, #0
+ beq _021DE176
+ ldr r0, [sp, #8]
+ mov r1, #0x20
+ ldr r0, [r0, #0xc]
+ bl DC_FlushRange
+ ldr r0, [sp, #8]
+ lsl r1, r4, #5
+ ldr r0, [r0, #0xc]
+ mov r2, #0x20
+ bl GX_LoadBGPltt
+_021DE176:
+ ldr r0, _021DE1C8 ; =0x00005860
+ mov r6, #0
+ add r4, r6, #0
+ add r5, r7, r0
+_021DE17E:
+ str r4, [sp]
+ ldr r0, [sp, #8]
+ ldr r3, _021DE1CC ; =0x00007FFF
+ ldr r0, [r0, #0xc]
+ add r1, r5, #0
+ mov r2, #0x10
+ bl MOD14_021DDE40
+ add r6, r6, #1
+ add r4, r4, #2
+ add r5, #0x20
+ cmp r6, #8
+ blt _021DE17E
+ mov r2, #0x10
+ str r2, [sp]
+ ldr r1, _021DE1C8 ; =0x00005860
+ ldr r0, [sp, #8]
+ add r3, r7, r1
+ lsl r1, r6, #5
+ add r1, r3, r1
+ ldr r0, [r0, #0xc]
+ ldr r3, _021DE1CC ; =0x00007FFF
+ bl MOD14_021DDE40
+ ldr r0, _021DE1C8 ; =0x00005860
+ mov r1, #0x12
+ add r0, r7, r0
+ lsl r1, r1, #4
+ bl DC_FlushRange
+ ldr r0, [sp, #4]
+ bl FUN_02016A18
+_021DE1C0:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DE1C4: .word 0x021E65AE
+_021DE1C8: .word 0x00005860
+_021DE1CC: .word 0x00007FFF
+
+ thumb_func_start MOD14_021DE1D0
+MOD14_021DE1D0: ; 0x021DE1D0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r2, #0
+ mov r2, #1
+ add r5, r1, #0
+ str r2, [sp]
+ ldrb r3, [r5, #1]
+ add r6, r0, #0
+ mov r0, #0x12
+ lsl r1, r3, #1
+ add r3, r3, r1
+ ldr r1, _021DE26C ; =0x021E65AD
+ ldrb r1, [r1, r3]
+ mov r3, #0xa
+ bl FUN_02006C98
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ beq _021DE268
+ add r1, sp, #0x14
+ bl FUN_020B0030
+ cmp r0, #0
+ beq _021DE262
+ mov r0, #0xa
+ mov r1, #1
+ bl FUN_02018FF4
+ add r4, r0, #0
+ beq _021DE250
+ ldr r0, _021DE270 ; =0x00005984
+ ldr r0, [r6, r0]
+ str r0, [r4]
+ mov r0, #0x15
+ strb r0, [r4, #7]
+ mov r0, #4
+ strb r0, [r4, #8]
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0, #0x14]
+ str r0, [r4, #0xc]
+ mov r0, #0
+ ldr r1, [r5, #4]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ mov r0, #0xd
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DE274 ; =0x00020100
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #4]
+ lsr r5, r3, #1
+ mov r3, #0x54
+ add r0, r4, #0
+ sub r3, r3, r5
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02016A18
+_021DE250:
+ ldr r3, [sp, #0x14]
+ ldr r0, _021DE270 ; =0x00005984
+ str r7, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r6, r0]
+ ldr r3, [r3, #0x10]
+ mov r1, #3
+ bl FUN_02017E14
+_021DE262:
+ ldr r0, [sp, #0x10]
+ bl FUN_02016A18
+_021DE268:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DE26C: .word 0x021E65AD
+_021DE270: .word 0x00005984
+_021DE274: .word 0x00020100
+
+ thumb_func_start MOD14_021DE278
+MOD14_021DE278: ; 0x021DE278
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ mov r2, #1
+ str r2, [sp]
+ add r6, r3, #0
+ ldrb r3, [r1, #1]
+ add r5, r0, #0
+ mov r0, #0x12
+ lsl r1, r3, #1
+ add r3, r3, r1
+ ldr r1, _021DE2E0 ; =0x021E65AC
+ ldrb r1, [r1, r3]
+ mov r3, #0xa
+ bl FUN_02006C98
+ str r0, [sp, #4]
+ cmp r0, #0
+ beq _021DE2DC
+ add r1, sp, #8
+ bl FUN_020B0180
+ ldr r0, _021DE2E4 ; =0x00005984
+ mov r1, #3
+ ldr r0, [r5, r0]
+ bl FUN_0201886C
+ add r7, r0, #0
+ beq _021DE2C2
+ ldr r1, [sp, #0x20]
+ add r2, r4, #0
+ str r1, [sp]
+ ldr r1, [sp, #8]
+ add r3, r6, #0
+ add r1, #0xc
+ bl MOD14_021DECD4
+_021DE2C2:
+ ldr r0, [sp, #4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021DE2E4 ; =0x00005984
+ mov r3, #1
+ ldr r0, [r5, r0]
+ mov r1, #3
+ add r2, r7, #0
+ lsl r3, r3, #0xc
+ bl FUN_02017CE8
+_021DE2DC:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DE2E0: .word 0x021E65AC
+_021DE2E4: .word 0x00005984
+
+ thumb_func_start MOD14_021DE2E8
+MOD14_021DE2E8: ; 0x021DE2E8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _021DE384 ; =0x00005984
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #3
+ add r6, r2, #0
+ bl FUN_02017B48
+ lsl r0, r0, #0x17
+ lsr r1, r0, #0xb
+ mov r0, #0xb8
+ add r7, r6, #0
+ mul r7, r0
+ lsl r0, r7, #0xc
+ str r1, [r5, #8]
+ add r1, r1, r0
+ str r1, [r5, #0x14]
+ ldr r0, [r5, #8]
+ sub r0, r1, r0
+ mov r1, #0x1e
+ bl _s32_div_f
+ str r0, [r5, #0x10]
+ ldr r0, [r5, #0x14]
+ asr r1, r0, #0xc
+ ldr r0, _021DE388 ; =0x000001FF
+ and r0, r1
+ str r0, [r5, #0x14]
+ mov r0, #0x1e
+ str r0, [r5, #4]
+ ldrb r0, [r5, #2]
+ strb r0, [r5, #3]
+ mov r0, #0x17
+ ldrb r1, [r5, #1]
+ mul r0, r6
+ add r0, r1, r0
+ strb r0, [r5, #1]
+ ldrb r1, [r5, #1]
+ mov r0, #0x3f
+ and r0, r1
+ strb r0, [r5, #1]
+ ldrb r1, [r5, #2]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r5, #2]
+ ldrb r1, [r4]
+ add r0, r5, #0
+ bl MOD14_021DE6B4
+ ldr r1, [r5, #0x10]
+ add r0, r5, #0
+ add r2, r7, #0
+ bl MOD14_021DE48C
+ ldrb r0, [r4]
+ mov r1, #1
+ mov r2, #0
+ str r0, [r5, #0x30]
+ ldrb r0, [r5, #2]
+ str r0, [r5, #0x34]
+ add r0, r5, #0
+ add r0, #0x98
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0x9c
+ str r2, [r0]
+ ldr r0, _021DE38C ; =MOD14_021DE39C
+ add r1, r5, #0
+ bl FUN_0200CA44
+ ldr r0, _021DE390 ; =MOD14_021DE3E4
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD14_021DDD40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DE384: .word 0x00005984
+_021DE388: .word 0x000001FF
+_021DE38C: .word MOD14_021DE39C
+_021DE390: .word MOD14_021DE3E4
+
+ thumb_func_start MOD14_021DE394
+MOD14_021DE394: ; 0x021DE394
+ add r0, #0x9c
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021DE39C
+MOD14_021DE39C: ; 0x021DE39C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021DE3C2
+ add r0, r4, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ cmp r0, #2
+ bne _021DE3DC
+ ldr r1, [r4, #0x10]
+ add r0, r4, #0
+ bl MOD14_021DE514
+ mov r0, #0
+ add r4, #0x98
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021DE3C2:
+ ldr r0, [r4, #0x14]
+ str r0, [r4, #0xc]
+ ldr r0, _021DE3E0 ; =0x00005988
+ ldr r0, [r4, r0]
+ bl MOD14_021DC424
+ strb r0, [r4]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ mov r0, #1
+ add r4, #0x9c
+ str r0, [r4]
+_021DE3DC:
+ pop {r3, r4, r5, pc}
+ nop
+_021DE3E0: .word 0x00005988
+
+ thumb_func_start MOD14_021DE3E4
+MOD14_021DE3E4: ; 0x021DE3E4
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldrb r3, [r5, #3]
+ add r6, r0, #0
+ mov r0, #1
+ add r4, r3, #0
+ eor r4, r0
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _021DE45C
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r2, [r0]
+ cmp r2, #2
+ bhs _021DE47E
+ ldr r6, _021DE480 ; =0x00000618
+ add r1, #0xa8
+ mul r6, r3
+ add r0, r5, #0
+ add r1, r1, r6
+ bl MOD14_021DEBCC
+ ldr r1, _021DE480 ; =0x00000618
+ add r2, r5, #0
+ add r2, #0xa8
+ mul r1, r4
+ add r1, r2, r1
+ add r2, r5, #0
+ add r2, #0x98
+ ldr r2, [r2]
+ add r0, r5, #0
+ bl MOD14_021DEC24
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ mov r2, #0
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x98
+ str r1, [r0]
+ ldr r0, [r5, #8]
+ asr r1, r0, #0xc
+ ldr r0, _021DE484 ; =0x000001FF
+ and r0, r1
+ str r0, [r5, #0xc]
+ ldr r1, [r5, #8]
+ ldr r0, [r5, #0x10]
+ add r0, r1, r0
+ str r0, [r5, #8]
+ ldr r0, _021DE488 ; =0x00005984
+ ldr r3, [r5, #0xc]
+ ldr r0, [r5, r0]
+ mov r1, #3
+ bl FUN_020179E0
+ ldr r0, [r5, #4]
+ sub r0, r0, #1
+ str r0, [r5, #4]
+ pop {r4, r5, r6, pc}
+_021DE45C:
+ ldr r0, _021DE488 ; =0x00005984
+ ldr r3, [r5, #0x14]
+ ldr r0, [r5, r0]
+ mov r1, #3
+ mov r2, #0
+ bl FUN_020179E0
+ ldr r1, _021DE480 ; =0x00000618
+ add r0, r5, #0
+ add r5, #0xa8
+ mul r1, r4
+ add r1, r5, r1
+ bl MOD14_021DEC7C
+ add r0, r6, #0
+ bl FUN_0200CAB4
+_021DE47E:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DE480: .word 0x00000618
+_021DE484: .word 0x000001FF
+_021DE488: .word 0x00005984
+
+ thumb_func_start MOD14_021DE48C
+MOD14_021DE48C: ; 0x021DE48C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r7, #0
+ str r0, [sp, #8]
+ add r0, #0xa8
+ str r1, [sp]
+ str r2, [sp, #4]
+ add r6, r7, #0
+ add r4, r5, #0
+ str r0, [sp, #8]
+_021DE4A2:
+ ldr r0, _021DE504 ; =0x0000585C
+ ldr r0, [r5, r0]
+ add r0, #0x70
+ add r0, r0, r6
+ lsl r1, r0, #0xc
+ ldr r0, [sp]
+ str r1, [r4, #0x68]
+ sub r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ ldr r0, _021DE504 ; =0x0000585C
+ ldr r0, [r5, r0]
+ add r0, #0x70
+ add r1, r0, r6
+ ldr r0, [sp, #4]
+ add r0, r0, r1
+ lsl r1, r0, #0xc
+ ldr r0, [sp]
+ str r1, [r4, #0x38]
+ sub r0, r1, r0
+ str r0, [r4, #0x50]
+ asr r2, r0, #0xc
+ ldr r0, _021DE508 ; =0x00005854
+ ldr r0, [r5, r0]
+ cmp r2, r0
+ ble _021DE4F6
+ ldr r0, _021DE50C ; =0x00005858
+ ldr r0, [r5, r0]
+ cmp r2, r0
+ bge _021DE4F6
+ ldrb r3, [r5, #3]
+ mov r1, #1
+ add r0, r5, #0
+ eor r1, r3
+ ldr r3, _021DE510 ; =0x00000618
+ mul r3, r1
+ ldr r1, [sp, #8]
+ add r1, r1, r3
+ add r3, r7, #0
+ bl MOD14_021DE5B4
+_021DE4F6:
+ add r7, r7, #1
+ add r6, #0x18
+ add r4, r4, #4
+ cmp r7, #6
+ blt _021DE4A2
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DE504: .word 0x0000585C
+_021DE508: .word 0x00005854
+_021DE50C: .word 0x00005858
+_021DE510: .word 0x00000618
+
+ thumb_func_start MOD14_021DE514
+MOD14_021DE514: ; 0x021DE514
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r6, r1, #0
+ ldrb r1, [r5, #3]
+ str r0, [sp]
+ add r0, #0xa8
+ str r0, [sp]
+ ldr r0, _021DE5A8 ; =0x00000618
+ add r2, r1, #0
+ mul r2, r0
+ str r2, [sp, #4]
+ mov r2, #1
+ eor r1, r2
+ mul r0, r1
+ mov r7, #0
+ add r4, r5, #0
+ str r0, [sp, #8]
+_021DE538:
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r1, _021DE5AC ; =0x00005854
+ ldr r0, [r0]
+ ldr r1, [r5, r1]
+ asr r0, r0, #0xc
+ cmp r0, r1
+ ble _021DE550
+ ldr r1, _021DE5B0 ; =0x00005858
+ ldr r1, [r5, r1]
+ cmp r0, r1
+ blt _021DE55E
+_021DE550:
+ ldr r2, [sp]
+ ldr r1, [sp, #4]
+ add r0, r5, #0
+ add r1, r2, r1
+ add r2, r7, #0
+ bl MOD14_021DE68C
+_021DE55E:
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ sub r0, r0, r6
+ str r0, [r4, #0x68]
+ sub r1, r0, r6
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ ldr r0, [r4, #0x50]
+ sub r0, r0, r6
+ str r0, [r4, #0x38]
+ sub r0, r0, r6
+ str r0, [r4, #0x50]
+ asr r2, r0, #0xc
+ ldr r0, _021DE5AC ; =0x00005854
+ ldr r0, [r5, r0]
+ cmp r2, r0
+ ble _021DE59A
+ ldr r0, _021DE5B0 ; =0x00005858
+ ldr r0, [r5, r0]
+ cmp r2, r0
+ bge _021DE59A
+ ldr r3, [sp]
+ ldr r1, [sp, #8]
+ add r0, r5, #0
+ add r1, r3, r1
+ add r3, r7, #0
+ bl MOD14_021DE5B4
+_021DE59A:
+ add r7, r7, #1
+ add r4, r4, #4
+ cmp r7, #6
+ blt _021DE538
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DE5A8: .word 0x00000618
+_021DE5AC: .word 0x00005854
+_021DE5B0: .word 0x00005858
+
+ thumb_func_start MOD14_021DE5B4
+MOD14_021DE5B4: ; 0x021DE5B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r5, r1, #0
+ ldr r1, _021DE678 ; =0x00005988
+ str r0, [sp, #0x1c]
+ ldr r0, [r0, r1]
+ str r2, [sp, #0x20]
+ add r4, r3, #0
+ bl MOD14_021DC44C
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x1c]
+ mov r7, #0x28
+ ldr r1, [r0, #0x34]
+ mov r0, #0x1e
+ add r2, r1, #0
+ lsl r0, r0, #4
+ mul r2, r0
+ add r2, #0x58
+ lsl r0, r4, #4
+ add r0, r2, r0
+ str r0, [sp, #0x28]
+ mov r0, #0x34
+ mul r0, r4
+ add r5, r5, r0
+ mov r0, #0
+ str r0, [sp, #0x2c]
+ ldr r1, _021DE67C ; =0x00000CD8
+ ldr r0, [sp, #0x1c]
+ add r1, r0, r1
+ lsl r0, r7, #4
+ mul r0, r4
+ add r0, r1, r0
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x1c]
+ lsl r1, r4, #1
+ add r6, r0, r1
+_021DE5FE:
+ ldr r0, [r5]
+ cmp r0, #0
+ bne _021DE64E
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x30]
+ ldr r1, [r1, #0x30]
+ add r2, r4, #0
+ bl FUN_0206B5E4
+ mov r1, #0xab
+ mov r2, #0
+ str r0, [sp, #0x34]
+ bl FUN_020672BC
+ cmp r0, #0
+ beq _021DE64E
+ add r0, r4, #0
+ bl MOD14_021DEB24
+ ldr r1, [sp, #0x24]
+ ldr r2, _021DE680 ; =0x00005814
+ str r1, [sp]
+ ldr r1, [sp, #0x20]
+ ldr r3, _021DE684 ; =0x000057D8
+ str r1, [sp, #4]
+ str r7, [sp, #8]
+ mov r1, #2
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x28]
+ ldr r1, [sp, #0x1c]
+ str r0, [sp, #0x14]
+ str r5, [sp, #0x18]
+ ldr r0, _021DE688 ; =0x00005980
+ ldrh r2, [r6, r2]
+ ldr r0, [r1, r0]
+ ldrh r3, [r6, r3]
+ ldr r1, [sp, #0x34]
+ bl MOD14_021E0A60
+_021DE64E:
+ ldr r0, [sp, #0x28]
+ ldr r1, [sp, #0x24]
+ add r0, #0x60
+ str r0, [sp, #0x28]
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ add r5, r5, r0
+ mov r0, #0xf
+ lsl r0, r0, #8
+ add r0, r1, r0
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x2c]
+ add r6, #0xc
+ add r0, r0, #1
+ add r4, r4, #6
+ add r7, #0x18
+ str r0, [sp, #0x2c]
+ cmp r0, #5
+ blt _021DE5FE
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DE678: .word 0x00005988
+_021DE67C: .word 0x00000CD8
+_021DE680: .word 0x00005814
+_021DE684: .word 0x000057D8
+_021DE688: .word 0x00005980
+
+ thumb_func_start MOD14_021DE68C
+MOD14_021DE68C: ; 0x021DE68C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r0, #0x34
+ mov r4, #0
+ mov r7, #0x4e
+ add r5, r1, #0
+ mul r0, r2
+ add r5, r5, r0
+ add r6, r4, #0
+ lsl r7, r7, #2
+_021DE69E:
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021DE6AA
+ bl FUN_0201FFC8
+ str r6, [r5]
+_021DE6AA:
+ add r4, r4, #1
+ add r5, r5, r7
+ cmp r4, #5
+ blt _021DE69E
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021DE6B4
+MOD14_021DE6B4: ; 0x021DE6B4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ str r1, [sp, #4]
+ ldr r1, _021DE71C ; =0x00005988
+ str r0, [sp]
+ ldr r0, [r0, r1]
+ bl MOD14_021DC44C
+ ldr r4, [sp]
+ str r0, [sp, #8]
+ ldr r1, _021DE720 ; =0x00000CD8
+ add r0, r4, #0
+ mov r6, #0
+ add r5, r0, r1
+_021DE6D0:
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #4]
+ add r2, r6, #0
+ bl FUN_0206B5E4
+ mov r1, #5
+ mov r2, #0
+ add r7, r0, #0
+ bl FUN_020672BC
+ cmp r0, #0
+ beq _021DE70A
+ ldr r1, _021DE724 ; =0x00005814
+ strh r0, [r4, r1]
+ add r0, r7, #0
+ bl FUN_0206B688
+ ldr r1, _021DE728 ; =0x000057D8
+ mov r3, #0xa
+ strh r0, [r4, r1]
+ ldr r2, _021DE728 ; =0x000057D8
+ ldr r1, [sp]
+ ldr r0, _021DE72C ; =0x00005980
+ ldrh r2, [r4, r2]
+ ldr r0, [r1, r0]
+ add r1, r5, #0
+ lsl r3, r3, #6
+ bl MOD14_021E0BAC
+_021DE70A:
+ mov r0, #0xa
+ lsl r0, r0, #6
+ add r6, r6, #1
+ add r4, r4, #2
+ add r5, r5, r0
+ cmp r6, #0x1e
+ blo _021DE6D0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DE71C: .word 0x00005988
+_021DE720: .word 0x00000CD8
+_021DE724: .word 0x00005814
+_021DE728: .word 0x000057D8
+_021DE72C: .word 0x00005980
+
+ thumb_func_start MOD14_021DE730
+MOD14_021DE730: ; 0x021DE730
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r1, #0
+ add r0, #0xa3
+ strb r1, [r0]
+ mov r0, #0xa
+ mov r1, #0x10
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021DE782
+ str r5, [r4]
+ strh r6, [r4, #4]
+ ldr r0, [sp]
+ strh r7, [r4, #6]
+ str r0, [r4, #0xc]
+ mov r0, #2
+ strh r0, [r4, #0xa]
+ cmp r7, r6
+ ble _021DE762
+ mov r0, #1
+ b _021DE764
+_021DE762:
+ sub r0, r0, #3
+_021DE764:
+ strh r0, [r4, #8]
+ ldr r0, _021DE784 ; =MOD14_021DE788
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD14_021DDD40
+ cmp r0, #0
+ beq _021DE77C
+ mov r0, #1
+ add r5, #0xa3
+ strb r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DE77C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_021DE782:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DE784: .word MOD14_021DE788
+
+ thumb_func_start MOD14_021DE788
+MOD14_021DE788: ; 0x021DE788
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #0xa
+ ldrsh r0, [r4, r0]
+ cmp r0, #0
+ beq _021DE79C
+ sub r0, r0, #1
+ strh r0, [r4, #0xa]
+ pop {r3, r4, r5, pc}
+_021DE79C:
+ mov r2, #4
+ mov r1, #6
+ ldrsh r0, [r4, r2]
+ ldrsh r1, [r4, r1]
+ cmp r0, r1
+ beq _021DE7CA
+ mov r1, #8
+ ldrsh r1, [r4, r1]
+ add r0, r0, r1
+ strh r0, [r4, #4]
+ ldr r1, [r4]
+ ldr r0, _021DE7DC ; =0x00005860
+ add r1, r1, r0
+ ldrsh r0, [r4, r2]
+ mov r2, #0x20
+ lsl r0, r0, #5
+ add r0, r1, r0
+ ldr r1, [r4, #0xc]
+ bl GX_LoadBGPltt
+ mov r0, #2
+ strh r0, [r4, #0xa]
+ pop {r3, r4, r5, pc}
+_021DE7CA:
+ ldr r1, _021DE7E0 ; =MOD14_021DE7E4
+ ldr r2, [r4]
+ add r0, r4, #0
+ bl MOD14_021DDF30
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DE7DC: .word 0x00005860
+_021DE7E0: .word MOD14_021DE7E4
+
+ thumb_func_start MOD14_021DE7E4
+MOD14_021DE7E4: ; 0x021DE7E4
+ mov r1, #0
+ add r0, #0xa3
+ strb r1, [r0]
+ bx lr
+
+ thumb_func_start MOD14_021DE7EC
+MOD14_021DE7EC: ; 0x021DE7EC
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r3, _021DE878 ; =0x021E6B90
+ add r4, r1, #0
+ ldr r1, [r3, #0xc]
+ cmp r1, #0
+ beq _021DE806
+ cmp r1, #1
+ beq _021DE83C
+ cmp r1, #2
+ beq _021DE868
+ add sp, #4
+ pop {r3, r4, pc}
+_021DE806:
+ ldr r0, _021DE87C ; =0x021E6B94
+ ldr r2, _021DE880 ; =0x021E6B98
+ str r0, [sp]
+ ldr r3, _021DE884 ; =0x021E6B90
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021DE06C
+ ldr r0, _021DE888 ; =0x00005988
+ ldr r0, [r4, r0]
+ bl MOD14_021DC448
+ ldr r2, _021DE878 ; =0x021E6B90
+ add r1, r0, #0
+ ldr r0, _021DE88C ; =0x021E69E0
+ ldr r2, [r2, #4]
+ str r1, [r0]
+ add r0, r4, #0
+ mov r3, #0
+ bl MOD14_021DE138
+ ldr r0, _021DE878 ; =0x021E6B90
+ add sp, #4
+ ldr r1, [r0, #0xc]
+ add r1, r1, #1
+ str r1, [r0, #0xc]
+ pop {r3, r4, pc}
+_021DE83C:
+ ldr r0, [r3, #4]
+ ldr r1, _021DE88C ; =0x021E69E0
+ str r0, [sp]
+ ldr r2, [r3]
+ ldr r1, [r1]
+ ldr r3, [r3, #8]
+ add r0, r4, #0
+ bl MOD14_021DE278
+ ldr r1, _021DE88C ; =0x021E69E0
+ ldr r2, _021DE878 ; =0x021E6B90
+ ldr r1, [r1]
+ ldr r2, [r2, #8]
+ add r0, r4, #0
+ bl MOD14_021DE1D0
+ ldr r0, _021DE878 ; =0x021E6B90
+ add sp, #4
+ ldr r1, [r0, #0xc]
+ add r1, r1, #1
+ str r1, [r0, #0xc]
+ pop {r3, r4, pc}
+_021DE868:
+ mov r1, #0
+ add r4, #0xa3
+ strb r1, [r4]
+ str r1, [r3, #0xc]
+ bl FUN_0200CAB4
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021DE878: .word 0x021E6B90
+_021DE87C: .word 0x021E6B94
+_021DE880: .word 0x021E6B98
+_021DE884: .word 0x021E6B90
+_021DE888: .word 0x00005988
+_021DE88C: .word 0x021E69E0
+
+ thumb_func_start MOD14_021DE890
+MOD14_021DE890: ; 0x021DE890
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021DE8C0 ; =MOD14_021DE7EC
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA98
+ cmp r0, #0
+ beq _021DE8A6
+ mov r1, #1
+ b _021DE8A8
+_021DE8A6:
+ mov r1, #0
+_021DE8A8:
+ add r0, r4, #0
+ add r0, #0xa3
+ add r4, #0xa3
+ strb r1, [r0]
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _021DE8BC
+ ldr r0, _021DE8C4 ; =0x021E6B90
+ mov r1, #0
+ str r1, [r0, #0xc]
+_021DE8BC:
+ pop {r4, pc}
+ nop
+_021DE8C0: .word MOD14_021DE7EC
+_021DE8C4: .word 0x021E6B90
+
+ thumb_func_start MOD14_021DE8C8
+MOD14_021DE8C8: ; 0x021DE8C8
+ push {r4, lr}
+ add r2, r0, #0
+ mov r1, #0
+ add r2, #0xa2
+ strb r1, [r2]
+ ldrb r3, [r0, #2]
+ mov r2, #8
+ lsl r4, r3, #1
+ ldr r3, _021DE8E4 ; =0x021E656C
+ ldrh r3, [r3, r4]
+ lsl r3, r3, #5
+ bl MOD14_021DE730
+ pop {r4, pc}
+ .align 2, 0
+_021DE8E4: .word 0x021E656C
+
+ thumb_func_start MOD14_021DE8E8
+MOD14_021DE8E8: ; 0x021DE8E8
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ add r1, #0xa2
+ ldrb r1, [r1]
+ cmp r1, #4
+ bhi _021DE976
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DE902: ; jump table
+ .short _021DE90C - _021DE902 - 2 ; case 0
+ .short _021DE922 - _021DE902 - 2 ; case 1
+ .short _021DE934 - _021DE902 - 2 ; case 2
+ .short _021DE94A - _021DE902 - 2 ; case 3
+ .short _021DE96A - _021DE902 - 2 ; case 4
+_021DE90C:
+ add r0, #0xa3
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021DE976
+ add r0, r4, #0
+ add r0, #0xa2
+ ldrb r0, [r0]
+ add r4, #0xa2
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021DE976
+_021DE922:
+ bl MOD14_021DE890
+ add r0, r4, #0
+ add r0, #0xa2
+ ldrb r0, [r0]
+ add r4, #0xa2
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021DE976
+_021DE934:
+ add r0, #0xa3
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021DE976
+ add r0, r4, #0
+ add r0, #0xa2
+ ldrb r0, [r0]
+ add r4, #0xa2
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021DE976
+_021DE94A:
+ ldrb r3, [r4, #2]
+ mov r1, #8
+ mov r2, #0
+ lsl r5, r3, #1
+ ldr r3, _021DE97C ; =0x021E656C
+ ldrh r3, [r3, r5]
+ lsl r3, r3, #5
+ bl MOD14_021DE730
+ add r0, r4, #0
+ add r0, #0xa2
+ ldrb r0, [r0]
+ add r4, #0xa2
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021DE976
+_021DE96A:
+ add r4, #0xa3
+ ldrb r0, [r4]
+ cmp r0, #0
+ bne _021DE976
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DE976:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021DE97C: .word 0x021E656C
+
+ thumb_func_start MOD14_021DE980
+MOD14_021DE980: ; 0x021DE980
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r2, #0
+ add r4, r1, #0
+ mov r0, #0x34
+ mul r4, r0
+ add r0, r5, #0
+ ldrb r2, [r5, #2]
+ ldr r1, _021DE9CC ; =0x00000618
+ add r0, #0xa8
+ mul r1, r2
+ add r0, r0, r1
+ add r6, r3, #0
+ add r0, r0, r4
+ add r1, r6, #0
+ mov r2, #1
+ bl MOD14_021E0930
+ ldr r0, _021DE9D0 ; =0x00005980
+ add r1, r6, #0
+ ldr r0, [r5, r0]
+ add r2, r7, #0
+ bl MOD14_021E0BBC
+ ldr r0, _021DE9D0 ; =0x00005980
+ add r3, r5, #0
+ ldrb r2, [r5, #2]
+ ldr r1, _021DE9CC ; =0x00000618
+ add r3, #0xa8
+ mul r1, r2
+ add r1, r3, r1
+ ldr r0, [r5, r0]
+ add r1, r1, r4
+ mov r2, #1
+ bl MOD14_021E08E4
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DE9CC: .word 0x00000618
+_021DE9D0: .word 0x00005980
+
+ thumb_func_start MOD14_021DE9D4
+MOD14_021DE9D4: ; 0x021DE9D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldrb r0, [r6, #2]
+ add r7, r1, #0
+ add r3, r6, #0
+ str r0, [sp]
+ ldr r1, _021DEA30 ; =0x00000618
+ ldr r0, [sp]
+ add r3, #0xa8
+ mul r1, r0
+ mov r0, #0x34
+ add r4, r7, #0
+ mul r4, r0
+ add r5, r3, r1
+ add r0, r2, #0
+ add r1, r5, r4
+ mov r2, #1
+ bl MOD14_021E0930
+ ldr r0, _021DEA34 ; =0x00005980
+ add r1, r5, r4
+ ldr r0, [r6, r0]
+ mov r2, #0
+ bl MOD14_021E0C5C
+ mov r2, #0x1e
+ ldr r0, _021DEA34 ; =0x00005980
+ ldr r3, [sp]
+ lsl r2, r2, #4
+ mul r2, r3
+ ldr r0, [r6, r0]
+ add r2, #0x58
+ lsl r3, r7, #4
+ add r1, r5, r4
+ add r2, r2, r3
+ bl MOD14_021E0BBC
+ add r0, r7, #0
+ bl MOD14_021DEB24
+ add r1, r0, #0
+ ldr r0, [r5, r4]
+ bl MOD14_021DDE24
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DEA30: .word 0x00000618
+_021DEA34: .word 0x00005980
+
+ thumb_func_start MOD14_021DEA38
+MOD14_021DEA38: ; 0x021DEA38
+ ldrb r2, [r0, #2]
+ add r3, r0, #0
+ ldr r0, _021DEA4C ; =0x00000618
+ add r3, #0xa8
+ mul r0, r2
+ add r2, r3, r0
+ mov r0, #0x34
+ mul r0, r1
+ add r0, r2, r0
+ bx lr
+ .align 2, 0
+_021DEA4C: .word 0x00000618
+
+ thumb_func_start MOD14_021DEA50
+MOD14_021DEA50: ; 0x021DEA50
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ ldr r0, _021DEB14 ; =0x00005988
+ ldr r0, [r5, r0]
+ ldr r0, [r0]
+ bl FUN_0206B330
+ mov r4, #0
+ str r0, [sp, #0x1c]
+ add r0, r5, #0
+ str r0, [sp, #0x28]
+ add r0, #0xa8
+ add r7, r4, #0
+ str r4, [sp, #0x2c]
+ str r0, [sp, #0x28]
+_021DEA70:
+ ldr r0, _021DEB14 ; =0x00005988
+ ldr r1, [sp, #0x1c]
+ ldr r0, [r5, r0]
+ add r2, r4, #0
+ ldr r0, [r0]
+ bl FUN_0206B5E4
+ mov r1, #0xab
+ mov r2, #0
+ str r0, [sp, #0x20]
+ bl FUN_020672BC
+ cmp r0, #0
+ beq _021DEB02
+ ldrb r1, [r5, #2]
+ ldr r0, _021DEB18 ; =0x00000618
+ mul r0, r1
+ str r0, [sp, #0x18]
+ add r0, r5, r0
+ add r0, r7, r0
+ str r1, [sp, #0x14]
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021DEB02
+ add r0, r4, #0
+ bl MOD14_021DEB24
+ str r0, [sp, #0x24]
+ add r0, r4, #0
+ mov r1, #6
+ bl _s32_div_f
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #6
+ bl _s32_div_f
+ mov ip, r0
+ mov r0, #2
+ str r0, [sp]
+ ldr r0, [sp, #0x24]
+ ldr r3, [sp, #0x10]
+ str r0, [sp, #4]
+ ldr r1, [sp, #0x14]
+ mov r0, #0x1e
+ add r2, r1, #0
+ lsl r0, r0, #4
+ mul r2, r0
+ ldr r0, [sp, #0x2c]
+ add r2, #0x58
+ add r0, r2, r0
+ str r0, [sp, #8]
+ ldr r1, [sp, #0x28]
+ ldr r0, [sp, #0x18]
+ ldr r2, _021DEB1C ; =0x0000585C
+ add r0, r1, r0
+ add r0, r0, r7
+ str r0, [sp, #0xc]
+ ldr r6, [r5, r2]
+ mov r2, #0x18
+ ldr r0, _021DEB20 ; =0x00005980
+ mul r2, r3
+ add r6, #0x70
+ add r2, r6, r2
+ mov r6, ip
+ mov r3, #0x18
+ mul r3, r6
+ ldr r0, [r5, r0]
+ ldr r1, [sp, #0x20]
+ add r3, #0x28
+ bl MOD14_021E0940
+_021DEB02:
+ ldr r0, [sp, #0x2c]
+ add r4, r4, #1
+ add r0, #0x10
+ add r7, #0x34
+ str r0, [sp, #0x2c]
+ cmp r4, #0x1e
+ blt _021DEA70
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DEB14: .word 0x00005988
+_021DEB18: .word 0x00000618
+_021DEB1C: .word 0x0000585C
+_021DEB20: .word 0x00005980
+
+ thumb_func_start MOD14_021DEB24
+MOD14_021DEB24: ; 0x021DEB24
+ lsl r1, r0, #1
+ ldr r0, _021DEB30 ; =0x021E6570
+ ldrh r0, [r0, r1]
+ add r0, #0xb
+ bx lr
+ nop
+_021DEB30: .word 0x021E6570
+
+ thumb_func_start MOD14_021DEB34
+MOD14_021DEB34: ; 0x021DEB34
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ str r0, [sp, #0x10]
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ add r6, r3, #0
+ mul r6, r0
+ mov r0, #0x28
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x48]
+ mov r4, #0
+ ldr r7, [sp, #0x4c]
+ str r1, [sp, #0x14]
+ str r2, [sp, #0x18]
+ add r6, #0x58
+ str r4, [sp, #0x24]
+ str r0, [sp, #0x20]
+_021DEB56:
+ mov r0, #0
+ str r0, [sp, #0x28]
+ add r5, r0, #0
+_021DEB5C:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r0, [r0, #0x40]
+ add r2, r4, #0
+ ldr r0, [r0]
+ bl FUN_0206B5E4
+ mov r1, #5
+ mov r2, #0
+ str r0, [sp, #0x2c]
+ bl FUN_020672BC
+ cmp r0, #0
+ beq _021DEBA0
+ add r0, r4, #0
+ bl MOD14_021DEB24
+ mov r1, #2
+ str r1, [sp]
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldr r3, [sp, #0x10]
+ ldr r2, _021DEBC8 ; =0x0000585C
+ str r7, [sp, #0xc]
+ ldr r2, [r3, r2]
+ ldr r0, [sp, #0x14]
+ add r2, #0x70
+ add r3, r2, r5
+ ldr r2, [sp, #0x20]
+ ldr r1, [sp, #0x2c]
+ add r2, r2, r3
+ ldr r3, [sp, #0x1c]
+ bl MOD14_021E0940
+_021DEBA0:
+ ldr r0, [sp, #0x28]
+ add r7, #0x34
+ add r0, r0, #1
+ add r4, r4, #1
+ add r6, #0x10
+ add r5, #0x18
+ str r0, [sp, #0x28]
+ cmp r0, #6
+ blo _021DEB5C
+ ldr r0, [sp, #0x1c]
+ add r0, #0x18
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x24]
+ add r0, r0, #1
+ str r0, [sp, #0x24]
+ cmp r0, #5
+ blo _021DEB56
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DEBC8: .word 0x0000585C
+
+ thumb_func_start MOD14_021DEBCC
+MOD14_021DEBCC: ; 0x021DEBCC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r0, #0x18
+ mul r0, r2
+ add r5, r1, #0
+ str r0, [sp, #8]
+_021DEBDE:
+ ldr r1, [sp]
+ ldr r0, [sp, #8]
+ mov r7, #0
+ add r4, r1, r0
+_021DEBE6:
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021DEC0A
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0xc
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r2, #0
+ str r0, [r3]
+ ldr r0, [r4, #0x68]
+ str r0, [sp, #0xc]
+ ldr r0, [r5]
+ bl FUN_02020044
+_021DEC0A:
+ add r7, r7, #1
+ add r5, #0x34
+ add r4, r4, #4
+ cmp r7, #6
+ blt _021DEBE6
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #5
+ blt _021DEBDE
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DEC24
+MOD14_021DEC24: ; 0x021DEC24
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r0, #0x18
+ mul r0, r2
+ add r5, r1, #0
+ str r0, [sp, #8]
+_021DEC36:
+ ldr r1, [sp]
+ ldr r0, [sp, #8]
+ mov r7, #0
+ add r4, r1, r0
+_021DEC3E:
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021DEC62
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0xc
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r2, #0
+ str r0, [r3]
+ ldr r0, [r4, #0x38]
+ str r0, [sp, #0xc]
+ ldr r0, [r5]
+ bl FUN_02020044
+_021DEC62:
+ add r7, r7, #1
+ add r5, #0x34
+ add r4, r4, #4
+ cmp r7, #6
+ blt _021DEC3E
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #5
+ blt _021DEC36
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DEC7C
+MOD14_021DEC7C: ; 0x021DEC7C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #0x10]
+ mov r0, #0x28
+ add r5, r1, #0
+ str r0, [sp]
+_021DEC8E:
+ ldr r0, [sp]
+ mov r6, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ add r4, r6, #0
+_021DEC98:
+ ldr r0, _021DECD0 ; =0x0000585C
+ ldr r0, [r7, r0]
+ add r0, #0x70
+ add r0, r0, r4
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021DECB0
+ add r1, sp, #8
+ bl FUN_02020044
+_021DECB0:
+ add r6, r6, #1
+ add r5, #0x34
+ add r4, #0x18
+ cmp r6, #6
+ blt _021DEC98
+ ldr r0, [sp]
+ add r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #5
+ blt _021DEC8E
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DECD0: .word 0x0000585C
+
+ thumb_func_start MOD14_021DECD4
+MOD14_021DECD4: ; 0x021DECD4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp]
+ add r0, r2, #0
+ add r7, r3, #0
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ cmp r0, #0x20
+ blo _021DECF0
+ mov r1, #2
+ ldr r0, [sp]
+ lsl r1, r1, #0xa
+ add r0, r0, r1
+ str r0, [sp]
+_021DECF0:
+ mov r0, #0
+ mov ip, r0
+ ldr r0, [sp, #0x28]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ orr r0, r7
+ mov lr, r0
+_021DECFE:
+ ldr r0, [sp, #8]
+ mov r2, #0
+ lsl r0, r0, #0x1b
+ lsr r1, r0, #0x1a
+ ldr r0, [sp]
+ add r4, r2, #0
+ add r3, r0, r1
+ mov r0, ip
+ lsl r1, r0, #1
+ ldr r0, [sp, #4]
+ add r6, r0, r1
+_021DED14:
+ lsl r0, r4, #1
+ ldrh r1, [r6, r0]
+ mov r0, #3
+ lsl r0, r0, #0xa
+ add r5, r1, #0
+ and r5, r0
+ ldr r0, _021DEDCC ; =0x000003FF
+ add r2, r2, #1
+ and r0, r1
+ add r0, r0, r7
+ add r1, r5, #0
+ orr r1, r0
+ ldr r0, [sp, #0xc]
+ add r4, #0x15
+ orr r0, r1
+ strh r0, [r3]
+ add r3, #0x40
+ cmp r2, #0x14
+ blo _021DED14
+ mov r1, lr
+ lsl r1, r1, #0x10
+ mov r0, #0
+ lsr r1, r1, #0x10
+_021DED42:
+ add r0, r0, #1
+ strh r1, [r3]
+ add r3, #0x40
+ cmp r0, #4
+ blo _021DED42
+ ldr r0, [sp, #8]
+ add r1, r0, #1
+ mov r0, #0x3f
+ and r0, r1
+ str r0, [sp, #8]
+ bne _021DED62
+ mov r1, #2
+ ldr r0, [sp]
+ lsl r1, r1, #0xa
+ sub r0, r0, r1
+ str r0, [sp]
+_021DED62:
+ ldr r0, [sp, #8]
+ cmp r0, #0x20
+ bne _021DED72
+ mov r1, #2
+ ldr r0, [sp]
+ lsl r1, r1, #0xa
+ add r0, r0, r1
+ str r0, [sp]
+_021DED72:
+ mov r0, ip
+ add r0, r0, #1
+ mov ip, r0
+ cmp r0, #0x15
+ blo _021DECFE
+ mov r1, lr
+ mov r3, #2
+ mov r0, #0
+ lsl r1, r1, #0x10
+ lsl r3, r3, #0xa
+ lsr r5, r1, #0x10
+ add r7, r0, #0
+ mov r4, #0x3f
+ add r2, r3, #0
+_021DED8E:
+ ldr r1, [sp, #8]
+ lsl r1, r1, #0x1b
+ lsr r6, r1, #0x1a
+ ldr r1, [sp]
+ add r1, r1, r6
+ add r6, r7, #0
+_021DED9A:
+ add r6, r6, #1
+ strh r5, [r1]
+ add r1, #0x40
+ cmp r6, #0x18
+ blo _021DED9A
+ ldr r1, [sp, #8]
+ add r1, r1, #1
+ and r1, r4
+ str r1, [sp, #8]
+ bne _021DEDB4
+ ldr r1, [sp]
+ sub r1, r1, r3
+ str r1, [sp]
+_021DEDB4:
+ ldr r1, [sp, #8]
+ cmp r1, #0x20
+ bne _021DEDC0
+ ldr r1, [sp]
+ add r1, r1, r2
+ str r1, [sp]
+_021DEDC0:
+ add r0, r0, #1
+ cmp r0, #2
+ blo _021DED8E
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DEDCC: .word 0x000003FF
+
+ thumb_func_start MOD14_021DEDD0
+MOD14_021DEDD0: ; 0x021DEDD0
+ push {r4, lr}
+ add r2, r0, #0
+ add r0, #0xa0
+ strh r1, [r0]
+ add r0, r2, #0
+ mov r3, #0
+ add r0, #0xa4
+ strb r3, [r0]
+ ldr r0, _021DEE00 ; =0x00005980
+ add r4, r2, #0
+ ldrb r3, [r2, #2]
+ ldr r0, [r2, r0]
+ ldr r2, _021DEE04 ; =0x00000618
+ add r4, #0xa8
+ mul r2, r3
+ add r3, r4, r2
+ mov r2, #0x34
+ mul r2, r1
+ add r1, r3, r2
+ mov r2, #1
+ bl MOD14_021E0C20
+ pop {r4, pc}
+ nop
+_021DEE00: .word 0x00005980
+_021DEE04: .word 0x00000618
+
+ thumb_func_start MOD14_021DEE08
+MOD14_021DEE08: ; 0x021DEE08
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldrb r1, [r5, #2]
+ ldr r0, _021DEE9C ; =0x00000618
+ add r2, r5, #0
+ add r2, #0xa8
+ mul r0, r1
+ add r4, r2, r0
+ add r0, r5, #0
+ add r0, #0xa0
+ ldrh r1, [r0]
+ mov r0, #0x34
+ add r6, r1, #0
+ mul r6, r0
+ add r0, r5, #0
+ add r0, #0xa4
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021DEE34
+ cmp r0, #1
+ beq _021DEE86
+ b _021DEE98
+_021DEE34:
+ ldr r0, _021DEEA0 ; =0x00005980
+ add r1, r4, r6
+ ldr r0, [r5, r0]
+ bl MOD14_021E0C48
+ cmp r0, #0
+ beq _021DEE98
+ ldr r0, _021DEEA4 ; =0x0000598C
+ ldr r0, [r5, r0]
+ bl MOD14_021DDEDC
+ add r7, r0, #0
+ bl MOD14_021DA1B8
+ cmp r0, #0
+ beq _021DEE98
+ add r0, r7, #0
+ bl MOD14_021DA1C0
+ cmp r0, #0
+ ldr r0, _021DEEA0 ; =0x00005980
+ beq _021DEE6E
+ ldr r0, [r5, r0]
+ add r1, r4, r6
+ mov r2, #1
+ bl MOD14_021E0908
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DEE6E:
+ ldr r0, [r5, r0]
+ add r1, r4, r6
+ mov r2, #2
+ bl MOD14_021E0C20
+ add r0, r5, #0
+ add r0, #0xa4
+ ldrb r0, [r0]
+ add r5, #0xa4
+ add r0, r0, #1
+ strb r0, [r5]
+ b _021DEE98
+_021DEE86:
+ ldr r0, _021DEEA0 ; =0x00005980
+ add r1, r4, r6
+ ldr r0, [r5, r0]
+ bl MOD14_021E0C48
+ cmp r0, #0
+ beq _021DEE98
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DEE98:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DEE9C: .word 0x00000618
+_021DEEA0: .word 0x00005980
+_021DEEA4: .word 0x0000598C
+
+ thumb_func_start MOD14_021DEEA8
+MOD14_021DEEA8: ; 0x021DEEA8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _021DEEEC ; =0x00005988
+ ldr r0, [r5, r0]
+ bl MOD14_021DC484
+ mov r6, #0
+ add r7, r5, #0
+ str r0, [sp]
+ add r4, r6, #0
+ add r7, #0xa8
+_021DEEBE:
+ ldrb r2, [r5, #2]
+ ldr r0, _021DEEF0 ; =0x00000618
+ add r1, r2, #0
+ mul r1, r0
+ add r0, r5, r1
+ add r0, r4, r0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DEEE0
+ ldr r0, _021DEEF4 ; =0x00005980
+ add r1, r7, r1
+ ldr r0, [r5, r0]
+ ldr r2, [sp]
+ add r1, r1, r4
+ bl MOD14_021E0B54
+_021DEEE0:
+ add r6, r6, #1
+ add r4, #0x34
+ cmp r6, #0x1e
+ blt _021DEEBE
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DEEEC: .word 0x00005988
+_021DEEF0: .word 0x00000618
+_021DEEF4: .word 0x00005980
+
+ thumb_func_start MOD14_021DEEF8
+MOD14_021DEEF8: ; 0x021DEEF8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #0x34
+ mul r4, r0
+ add r3, r5, #0
+ ldrb r1, [r5, #2]
+ ldr r0, _021DEF40 ; =0x00000618
+ add r3, #0xa8
+ mul r0, r1
+ add r1, r3, r0
+ ldr r0, [r1, r4]
+ cmp r0, #0
+ beq _021DEF3E
+ ldr r0, _021DEF44 ; =0x00005980
+ add r1, r1, r4
+ ldr r0, [r5, r0]
+ bl MOD14_021E0BA8
+ ldr r0, _021DEF48 ; =0x00005988
+ ldr r0, [r5, r0]
+ bl MOD14_021DC484
+ add r2, r0, #0
+ ldr r0, _021DEF44 ; =0x00005980
+ add r1, r5, #0
+ ldr r0, [r5, r0]
+ ldrb r5, [r5, #2]
+ ldr r3, _021DEF40 ; =0x00000618
+ add r1, #0xa8
+ mul r3, r5
+ add r1, r1, r3
+ add r1, r1, r4
+ bl MOD14_021E0B54
+_021DEF3E:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DEF40: .word 0x00000618
+_021DEF44: .word 0x00005980
+_021DEF48: .word 0x00005988
+
+ thumb_func_start MOD14_021DEF4C
+MOD14_021DEF4C: ; 0x021DEF4C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021DEF88 ; =0x00005988
+ ldr r0, [r5, r0]
+ bl MOD14_021DC3E0
+ add r4, r0, #0
+ ldr r0, _021DEF88 ; =0x00005988
+ ldr r0, [r5, r0]
+ bl MOD14_021DC45C
+ add r2, r0, #0
+ add r3, r5, #0
+ ldrb r1, [r5, #2]
+ ldr r0, _021DEF8C ; =0x00000618
+ add r3, #0xa8
+ mul r0, r1
+ add r3, r3, r0
+ mov r0, #0x34
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, [r3, r1]
+ cmp r0, #0
+ beq _021DEF86
+ ldr r0, _021DEF90 ; =0x00005980
+ add r1, r3, r1
+ ldr r0, [r5, r0]
+ bl MOD14_021E0BA4
+_021DEF86:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DEF88: .word 0x00005988
+_021DEF8C: .word 0x00000618
+_021DEF90: .word 0x00005980
+
+ thumb_func_start MOD14_021DEF94
+MOD14_021DEF94: ; 0x021DEF94
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ add r0, sp, #0xc
+ str r0, [sp]
+ ldr r0, _021DF030 ; =0x00005988
+ add r1, sp, #0x18
+ ldr r0, [r4, r0]
+ add r2, sp, #0x14
+ add r3, sp, #0x10
+ bl MOD14_021DC4A4
+ mov r5, #0
+ str r5, [sp, #4]
+_021DEFB0:
+ add r0, r4, #0
+ str r0, [sp, #8]
+ add r0, #0xa8
+ mov r7, #0
+ str r0, [sp, #8]
+_021DEFBA:
+ ldrb r2, [r4, #2]
+ ldr r0, _021DF034 ; =0x00000618
+ add r1, r2, #0
+ mul r1, r0
+ add r0, r4, r1
+ add r0, r5, r0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DF018
+ ldr r6, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ sub r3, r7, r6
+ sub r2, r2, r6
+ ldr r0, [sp, #0x10]
+ cmp r3, r2
+ bhi _021DEFE0
+ mov r6, #1
+ b _021DEFE2
+_021DEFE0:
+ mov r6, #0
+_021DEFE2:
+ ldr r2, [sp, #4]
+ sub r3, r2, r0
+ ldr r2, [sp, #0xc]
+ sub r0, r2, r0
+ cmp r3, r0
+ bhi _021DEFF2
+ mov r0, #1
+ b _021DEFF4
+_021DEFF2:
+ mov r0, #0
+_021DEFF4:
+ tst r0, r6
+ ldr r0, _021DF038 ; =0x00005980
+ beq _021DF00A
+ ldr r2, [sp, #8]
+ ldr r0, [r4, r0]
+ add r1, r2, r1
+ add r1, r1, r5
+ mov r2, #1
+ bl MOD14_021E0C5C
+ b _021DF018
+_021DF00A:
+ ldr r2, [sp, #8]
+ ldr r0, [r4, r0]
+ add r1, r2, r1
+ add r1, r1, r5
+ mov r2, #0
+ bl MOD14_021E0C5C
+_021DF018:
+ add r7, r7, #1
+ add r5, #0x34
+ cmp r7, #6
+ blo _021DEFBA
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #5
+ blo _021DEFB0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DF030: .word 0x00005988
+_021DF034: .word 0x00000618
+_021DF038: .word 0x00005980
+
+ thumb_func_start MOD14_021DF03C
+MOD14_021DF03C: ; 0x021DF03C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r7, r5, #0
+ add r4, r6, #0
+ add r7, #0xa8
+_021DF048:
+ ldrb r2, [r5, #2]
+ ldr r0, _021DF074 ; =0x00000618
+ add r1, r2, #0
+ mul r1, r0
+ add r0, r5, r1
+ add r0, r4, r0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DF06A
+ ldr r0, _021DF078 ; =0x00005980
+ add r1, r7, r1
+ ldr r0, [r5, r0]
+ add r1, r1, r4
+ mov r2, #0
+ bl MOD14_021E0C5C
+_021DF06A:
+ add r6, r6, #1
+ add r4, #0x34
+ cmp r6, #0x1e
+ blt _021DF048
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DF074: .word 0x00000618
+_021DF078: .word 0x00005980
+
+ thumb_func_start MOD14_021DF07C
+MOD14_021DF07C: ; 0x021DF07C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ ldr r0, _021DF128 ; =0x00000794
+ add r6, r1, #0
+ str r6, [r5, r0]
+ add r4, r2, #0
+ sub r0, r0, #4
+ str r4, [r5, r0]
+ add r0, r6, #0
+ str r3, [r5]
+ bl MOD14_021DDD58
+ ldr r1, _021DF12C ; =0x00000758
+ str r0, [r5, r1]
+ add r0, r6, #0
+ bl MOD14_021DDD60
+ ldr r1, _021DF130 ; =0x0000075C
+ str r0, [r5, r1]
+ add r0, r6, #0
+ bl MOD14_021DDD50
+ str r0, [r5, #0x48]
+ add r0, r4, #0
+ bl MOD14_021DC3CC
+ ldr r1, _021DF134 ; =0x00000785
+ strb r0, [r5, r1]
+ add r0, r4, #0
+ bl MOD14_021DC3D0
+ ldr r1, _021DF138 ; =0x00000789
+ strb r0, [r5, r1]
+ add r0, r4, #0
+ bl MOD14_021DC3D8
+ ldr r1, _021DF13C ; =0x0000078A
+ strb r0, [r5, r1]
+ add r0, r4, #0
+ bl MOD14_021DC3E8
+ ldr r1, _021DF140 ; =0x0000078B
+ add r3, r5, #0
+ strb r0, [r5, r1]
+ mov r2, #0
+ str r2, [r5, #4]
+ str r2, [r5, #8]
+ str r2, [r5, #0xc]
+ add r0, r1, #0
+ str r2, [r5, #0x10]
+ sub r0, #0x37
+ str r2, [r5, r0]
+ add r0, r1, #3
+ mov r2, #1
+ strb r2, [r5, r0]
+ mov r0, #0xa
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0xd
+ add r3, #0x1c
+ bl FUN_02006C30
+ str r0, [r5, #0x14]
+ mov r0, #0xa
+ add r3, r5, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0xe
+ mov r2, #1
+ add r3, #0x20
+ bl FUN_02006C5C
+ str r0, [r5, #0x18]
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ beq _021DF11C
+ ldr r0, [r5, #0x18]
+ cmp r0, #0
+ bne _021DF122
+_021DF11C:
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, r5, r6, pc}
+_021DF122:
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021DF128: .word 0x00000794
+_021DF12C: .word 0x00000758
+_021DF130: .word 0x0000075C
+_021DF134: .word 0x00000785
+_021DF138: .word 0x00000789
+_021DF13C: .word 0x0000078A
+_021DF140: .word 0x0000078B
+
+ thumb_func_start MOD14_021DF144
+MOD14_021DF144: ; 0x021DF144
+ push {r4, r5, r6, lr}
+ sub sp, #0x38
+ add r4, r0, #0
+ add r0, #0x24
+ bl FUN_020B1A24
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0x24
+ str r0, [sp, #0x10]
+ mov r0, #0x12
+ mov r1, #0xc
+ bl FUN_02006AE4
+ ldr r0, _021DF310 ; =0x00000785
+ ldrb r0, [r4, r0]
+ cmp r0, #1
+ bne _021DF178
+ mov r5, #1
+ b _021DF17A
+_021DF178:
+ mov r5, #2
+_021DF17A:
+ ldr r0, _021DF314 ; =0x00000794
+ ldr r0, [r4, r0]
+ bl MOD14_021DDD48
+ add r2, r0, #0
+ ldr r0, [r4, #0x20]
+ add r1, r4, #0
+ str r0, [sp]
+ str r5, [sp, #4]
+ ldr r3, [r4, #0x1c]
+ add r0, sp, #0x14
+ add r1, #0x24
+ bl MOD14_021DDDB4
+ ldr r2, _021DF318 ; =0x00000764
+ add r3, r4, #0
+ add r1, r2, #4
+ add r0, r4, r2
+ add r2, #0x21
+ add r1, r4, r1
+ add r2, r4, r2
+ bl MOD14_021E0264
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r3, _021DF318 ; =0x00000764
+ ldr r0, [r4]
+ ldr r2, [r4, r3]
+ add r3, r3, #4
+ ldr r3, [r4, r3]
+ add r1, sp, #0x14
+ bl MOD14_021DDDD4
+ str r0, [r4, #4]
+ mov r0, #0x2a
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r3, _021DF318 ; =0x00000764
+ ldr r0, [r4]
+ ldr r2, [r4, r3]
+ add r3, r3, #4
+ ldr r3, [r4, r3]
+ add r1, sp, #0x14
+ add r3, #0x18
+ bl MOD14_021DDDD4
+ str r0, [r4, #8]
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC3CC
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC3C4
+ add r6, r0, #0
+ cmp r6, #4
+ beq _021DF1FC
+ mov r2, #0x6c
+ mov r5, #0xec
+ b _021DF200
+_021DF1FC:
+ mov r2, #0x40
+ mov r5, #0xc0
+_021DF200:
+ mov r1, #2
+ add r0, sp, #0x34
+ strb r1, [r0]
+ mov r0, #0x2b
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0x14
+ mov r3, #0x14
+ bl MOD14_021DDDD4
+ str r0, [r4, #0xc]
+ mov r0, #0x2b
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0x14
+ add r2, r5, #0
+ mov r3, #0x14
+ bl MOD14_021DDDD4
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl FUN_02020130
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl FUN_02020238
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC3CC
+ add r5, r0, #0
+ cmp r5, #2
+ ldr r0, [r4, #0xc]
+ beq _021DF262
+ mov r1, #6
+ bl FUN_02020130
+ ldr r0, [r4, #0x10]
+ mov r1, #7
+ bl FUN_02020130
+ b _021DF270
+_021DF262:
+ mov r1, #8
+ bl FUN_02020130
+ ldr r0, [r4, #0x10]
+ mov r1, #9
+ bl FUN_02020130
+_021DF270:
+ cmp r5, #0
+ beq _021DF27C
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl FUN_020200A0
+_021DF27C:
+ cmp r6, #3
+ beq _021DF2C0
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC3F4
+ cmp r0, #1
+ ldr r0, [r4, #4]
+ bne _021DF2A6
+ mov r1, #0
+ bl FUN_02020130
+ add r1, r4, #0
+ ldr r0, [r4, #0x48]
+ add r1, #0x4c
+ mov r2, #0x1e
+ bl MOD14_021E08E4
+ mov r1, #0
+ b _021DF2B4
+_021DF2A6:
+ mov r1, #2
+ bl FUN_02020130
+ add r0, r4, #0
+ bl MOD14_021DF324
+ mov r1, #1
+_021DF2B4:
+ ldr r0, _021DF31C ; =0x0000078C
+ strb r1, [r4, r0]
+ ldr r0, _021DF320 ; =0x0000078D
+ mov r1, #0
+ strb r1, [r4, r0]
+ b _021DF2F8
+_021DF2C0:
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC538
+ cmp r0, #0
+ ldr r0, [r4, #4]
+ bne _021DF2DA
+ mov r1, #0
+ bl FUN_02020130
+ mov r1, #0
+ b _021DF2E2
+_021DF2DA:
+ mov r1, #2
+ bl FUN_02020130
+ mov r1, #1
+_021DF2E2:
+ ldr r0, _021DF320 ; =0x0000078D
+ mov r2, #0x1e
+ strb r1, [r4, r0]
+ add r1, r4, #0
+ ldr r0, [r4, #0x48]
+ add r1, #0x4c
+ bl MOD14_021E08E4
+ ldr r0, _021DF31C ; =0x0000078C
+ mov r1, #0
+ strb r1, [r4, r0]
+_021DF2F8:
+ ldr r0, _021DF314 ; =0x00000794
+ ldr r0, [r4, r0]
+ bl MOD14_021DDD78
+ mov r1, #0x76
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD14_021E0008
+ add sp, #0x38
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DF310: .word 0x00000785
+_021DF314: .word 0x00000794
+_021DF318: .word 0x00000764
+_021DF31C: .word 0x0000078C
+_021DF320: .word 0x0000078D
+
+ thumb_func_start MOD14_021DF324
+MOD14_021DF324: ; 0x021DF324
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ bl FUN_0202011C
+ add r3, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x10
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r1, r5, #0
+ str r0, [r2]
+ ldr r0, [r5, #0x48]
+ add r1, #0x4c
+ mov r2, #1
+ bl MOD14_021E08E4
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl MOD14_021DC458
+ add r4, r0, #0
+ ldr r0, [r5, #4]
+ bl FUN_02020240
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _021DF398 ; =0x000004D8
+ add r1, r4, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r3, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ asr r3, r3, #0xc
+ ldr r0, [r5, #0x48]
+ asr r2, r2, #0xc
+ add r3, r3, #4
+ bl MOD14_021E0940
+ ldr r1, _021DF39C ; =0x00000664
+ mov r0, #0
+ str r0, [r5, r1]
+ add r0, r1, #4
+ ldr r2, _021DF3A0 ; =0xFFFFC000
+ add r1, #0xf0
+ str r2, [r5, r0]
+ mov r2, #1
+ ldr r0, _021DF3A4 ; =0x0000078C
+ str r2, [r5, r1]
+ strb r2, [r5, r0]
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ nop
+_021DF398: .word 0x000004D8
+_021DF39C: .word 0x00000664
+_021DF3A0: .word 0xFFFFC000
+_021DF3A4: .word 0x0000078C
+
+ thumb_func_start MOD14_021DF3A8
+MOD14_021DF3A8: ; 0x021DF3A8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021DF3BA
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x14]
+_021DF3BA:
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ beq _021DF3C8
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x18]
+_021DF3C8:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021DF3D6
+ bl FUN_0201FFC8
+ mov r0, #0
+ str r0, [r4, #4]
+_021DF3D6:
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021DF3E4
+ bl FUN_0201FFC8
+ mov r0, #0
+ str r0, [r4, #8]
+_021DF3E4:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021DF3F2
+ bl FUN_0201FFC8
+ mov r0, #0
+ str r0, [r4, #0xc]
+_021DF3F2:
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021DF400
+ bl FUN_0201FFC8
+ mov r0, #0
+ str r0, [r4, #0x10]
+_021DF400:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DF404
+MOD14_021DF404: ; 0x021DF404
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r5, r1, #0
+ str r0, [r2]
+ str r0, [r5]
+ ldr r0, _021DF47C ; =0x00000785
+ ldrb r1, [r4, r0]
+ cmp r1, #4
+ bhi _021DF478
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DF424: ; jump table
+ .short _021DF42E - _021DF424 - 2 ; case 0
+ .short _021DF478 - _021DF424 - 2 ; case 1
+ .short _021DF458 - _021DF424 - 2 ; case 2
+ .short _021DF46C - _021DF424 - 2 ; case 3
+ .short _021DF46C - _021DF424 - 2 ; case 4
+_021DF42E:
+ add r1, r0, #1
+ ldrb r1, [r4, r1]
+ cmp r1, #0
+ bne _021DF478
+ add r0, #0xb
+ ldr r0, [r4, r0]
+ bl MOD14_021DC3D0
+ ldr r1, _021DF480 ; =0x00000789
+ ldrsb r1, [r4, r1]
+ cmp r1, #0
+ bne _021DF44A
+ cmp r0, #5
+ beq _021DF452
+_021DF44A:
+ cmp r1, #5
+ bne _021DF478
+ cmp r0, #0
+ bne _021DF478
+_021DF452:
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DF458:
+ add r0, r0, #1
+ ldrb r0, [r4, r0]
+ add r0, #0xfd
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #1
+ bhi _021DF478
+ mov r0, #1
+ str r0, [r2]
+ pop {r3, r4, r5, pc}
+_021DF46C:
+ add r0, r0, #1
+ ldrb r0, [r4, r0]
+ cmp r0, #2
+ bne _021DF478
+ mov r0, #1
+ str r0, [r2]
+_021DF478:
+ pop {r3, r4, r5, pc}
+ nop
+_021DF47C: .word 0x00000785
+_021DF480: .word 0x00000789
+
+ thumb_func_start MOD14_021DF484
+MOD14_021DF484: ; 0x021DF484
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ ldr r2, _021DF584 ; =0x0000076C
+ add r5, r0, #0
+ add r1, r2, #4
+ add r0, r5, r2
+ add r2, #0x1a
+ add r1, r5, r1
+ add r2, r5, r2
+ add r3, r5, #0
+ bl MOD14_021E0264
+ add r0, r5, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD14_021DF404
+ ldr r0, _021DF588 ; =0x00000786
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _021DF4B6
+ ldr r0, [r5, #8]
+ mov r1, #0
+ bl FUN_020200A0
+_021DF4B6:
+ ldr r1, _021DF58C ; =0x00000764
+ ldr r0, [r5, r1]
+ lsl r2, r0, #0xc
+ add r0, r1, #0
+ add r0, #0x10
+ str r2, [r5, r0]
+ add r0, r1, #4
+ ldr r0, [r5, r0]
+ lsl r2, r0, #0xc
+ add r0, r1, #0
+ add r0, #0x14
+ str r2, [r5, r0]
+ add r0, r1, #0
+ add r0, #8
+ ldr r6, [r5, r0]
+ add r0, r1, #0
+ add r0, #0xc
+ ldr r2, [r5, r0]
+ ldr r7, [sp, #4]
+ lsl r4, r6, #0xc
+ lsl r0, r2, #0xc
+ cmp r7, #0
+ bne _021DF4EC
+ add r1, #0x10
+ ldr r1, [r5, r1]
+ sub r1, r4, r1
+ b _021DF514
+_021DF4EC:
+ add r3, r1, #0
+ add r3, #0x10
+ ldr r3, [r5, r3]
+ cmp r4, r3
+ ble _021DF506
+ mov r3, #0x11
+ ldr r1, [r5, r1]
+ lsl r3, r3, #4
+ sub r3, r3, r6
+ sub r1, #0x46
+ add r1, r3, r1
+ neg r1, r1
+ b _021DF512
+_021DF506:
+ ldr r3, [r5, r1]
+ mov r1, #0x11
+ lsl r1, r1, #4
+ sub r1, r1, r3
+ sub r6, #0x46
+ add r1, r1, r6
+_021DF512:
+ lsl r1, r1, #0xc
+_021DF514:
+ ldr r3, [sp]
+ cmp r3, #0
+ bne _021DF522
+ ldr r2, _021DF590 ; =0x00000778
+ ldr r2, [r5, r2]
+ sub r4, r0, r2
+ b _021DF548
+_021DF522:
+ ldr r4, _021DF590 ; =0x00000778
+ ldr r6, [r5, r4]
+ cmp r0, r6
+ ble _021DF53A
+ mov r0, #0xd0
+ sub r4, #0x10
+ sub r2, r0, r2
+ ldr r0, [r5, r4]
+ add r0, #0x18
+ add r0, r2, r0
+ neg r4, r0
+ b _021DF546
+_021DF53A:
+ sub r4, #0x10
+ ldr r4, [r5, r4]
+ mov r0, #0xd0
+ sub r0, r0, r4
+ add r2, #0x18
+ add r4, r0, r2
+_021DF546:
+ lsl r4, r4, #0xc
+_021DF548:
+ cmp r7, #0
+ bne _021DF550
+ cmp r3, #0
+ beq _021DF554
+_021DF550:
+ mov r6, #0xc
+ b _021DF556
+_021DF554:
+ mov r6, #6
+_021DF556:
+ add r0, r1, #0
+ add r1, r6, #0
+ bl _s32_div_f
+ ldr r1, _021DF594 ; =0x0000077C
+ str r0, [r5, r1]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl _s32_div_f
+ mov r1, #0x1e
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add r0, r1, #7
+ strb r6, [r5, r0]
+ ldr r0, _021DF598 ; =MOD14_021DF5B0
+ add r1, r5, #0
+ mov r2, #0
+ bl MOD14_021DDD40
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DF584: .word 0x0000076C
+_021DF588: .word 0x00000786
+_021DF58C: .word 0x00000764
+_021DF590: .word 0x00000778
+_021DF594: .word 0x0000077C
+_021DF598: .word MOD14_021DF5B0
+
+ thumb_func_start MOD14_021DF59C
+MOD14_021DF59C: ; 0x021DF59C
+ ldr r1, _021DF5AC ; =0x00000787
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ bne _021DF5A8
+ mov r0, #1
+ bx lr
+_021DF5A8:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021DF5AC: .word 0x00000787
+
+ thumb_func_start MOD14_021DF5B0
+MOD14_021DF5B0: ; 0x021DF5B0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r1, #0
+ ldr r0, _021DF72C ; =0x00000787
+ str r1, [sp, #8]
+ ldrb r2, [r4, r0]
+ cmp r2, #0
+ beq _021DF68A
+ add r1, r0, #0
+ sub r1, #0x13
+ ldr r2, [r4, r1]
+ add r1, r0, #0
+ sub r1, #0xb
+ ldr r1, [r4, r1]
+ add r2, r2, r1
+ add r1, r0, #0
+ sub r1, #0x13
+ str r2, [r4, r1]
+ add r1, r0, #0
+ sub r1, #0xb
+ ldr r1, [r4, r1]
+ cmp r1, #0
+ ble _021DF5F8
+ add r1, r0, #0
+ sub r1, #0x13
+ ldr r2, [r4, r1]
+ mov r1, #0x11
+ lsl r1, r1, #0x10
+ cmp r2, r1
+ ble _021DF5F8
+ ldr r1, _021DF730 ; =0x00156000
+ sub r0, #0x13
+ sub r1, r1, r2
+ str r1, [r4, r0]
+_021DF5F8:
+ ldr r1, _021DF734 ; =0x0000077C
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bge _021DF61A
+ add r0, r1, #0
+ sub r0, #8
+ ldr r2, [r4, r0]
+ mov r0, #0x46
+ lsl r0, r0, #0xc
+ cmp r2, r0
+ bge _021DF61A
+ sub r2, r0, r2
+ mov r0, #0x11
+ lsl r0, r0, #0x10
+ sub r0, r0, r2
+ sub r1, #8
+ str r0, [r4, r1]
+_021DF61A:
+ ldr r1, _021DF738 ; =0x00000778
+ add r0, r1, #0
+ add r0, #8
+ ldr r2, [r4, r1]
+ ldr r0, [r4, r0]
+ add r0, r2, r0
+ str r0, [r4, r1]
+ add r0, r1, #0
+ add r0, #8
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ ble _021DF644
+ mov r0, #0xd
+ ldr r2, [r4, r1]
+ lsl r0, r0, #0x10
+ cmp r2, r0
+ ble _021DF644
+ mov r0, #0x2e
+ lsl r0, r0, #0xe
+ sub r0, r0, r2
+ str r0, [r4, r1]
+_021DF644:
+ mov r1, #0x1e
+ lsl r1, r1, #6
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bge _021DF666
+ add r0, r1, #0
+ sub r0, #8
+ ldr r2, [r4, r0]
+ ldr r0, _021DF73C ; =0xFFFE8000
+ cmp r2, r0
+ bge _021DF666
+ sub r2, r0, r2
+ mov r0, #0xd
+ lsl r0, r0, #0x10
+ sub r0, r0, r2
+ sub r1, #8
+ str r0, [r4, r1]
+_021DF666:
+ ldr r0, _021DF740 ; =0x00000774
+ ldr r1, [r4, r0]
+ add r0, r0, #4
+ str r1, [sp]
+ ldr r0, [r4, r0]
+ add r1, sp, #0
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ bl MOD14_021E0320
+ ldr r0, _021DF72C ; =0x00000787
+ add sp, #0xc
+ ldrb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, r0]
+ pop {r4, r5, pc}
+_021DF68A:
+ add r2, r0, #0
+ sub r2, #0x1b
+ ldr r2, [r4, r2]
+ sub r0, #0x17
+ lsl r2, r2, #0xc
+ str r2, [sp]
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl MOD14_021E0320
+ ldr r0, _021DF744 ; =0x0000076C
+ add r1, r0, #0
+ ldr r2, [r4, r0]
+ sub r1, #8
+ str r2, [r4, r1]
+ add r1, r0, #4
+ ldr r2, [r4, r1]
+ sub r1, r0, #4
+ str r2, [r4, r1]
+ add r1, r0, #0
+ add r1, #0x1a
+ ldrb r2, [r4, r1]
+ add r1, r0, #0
+ add r1, #0x19
+ strb r2, [r4, r1]
+ add r0, #0x24
+ ldr r0, [r4, r0]
+ bl MOD14_021DC3D0
+ ldr r1, _021DF748 ; =0x00000789
+ strb r0, [r4, r1]
+ add r0, r1, #7
+ ldr r0, [r4, r0]
+ bl MOD14_021DC3D8
+ ldr r1, _021DF74C ; =0x0000078A
+ strb r0, [r4, r1]
+ add r0, r1, #6
+ ldr r0, [r4, r0]
+ bl MOD14_021DC3E8
+ ldr r1, _021DF750 ; =0x0000078B
+ strb r0, [r4, r1]
+ sub r0, r1, #5
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bne _021DF6F8
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl FUN_020200A0
+_021DF6F8:
+ ldr r0, _021DF754 ; =0x00000786
+ ldrb r0, [r4, r0]
+ cmp r0, #2
+ ldr r0, [r4, #0xc]
+ beq _021DF712
+ mov r1, #6
+ bl FUN_02020130
+ ldr r0, [r4, #0x10]
+ mov r1, #7
+ bl FUN_02020130
+ b _021DF720
+_021DF712:
+ mov r1, #8
+ bl FUN_02020130
+ ldr r0, [r4, #0x10]
+ mov r1, #9
+ bl FUN_02020130
+_021DF720:
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021DF72C: .word 0x00000787
+_021DF730: .word 0x00156000
+_021DF734: .word 0x0000077C
+_021DF738: .word 0x00000778
+_021DF73C: .word 0xFFFE8000
+_021DF740: .word 0x00000774
+_021DF744: .word 0x0000076C
+_021DF748: .word 0x00000789
+_021DF74C: .word 0x0000078A
+_021DF750: .word 0x0000078B
+_021DF754: .word 0x00000786
+
+ thumb_func_start MOD14_021DF758
+MOD14_021DF758: ; 0x021DF758
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02020130
+ mov r1, #2
+ mov r0, #0x1e
+ lsl r1, r1, #0xc
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ add r1, r0, #0
+ sub r1, #0x18
+ ldr r2, [r4, r1]
+ add r1, r0, #0
+ add r2, #0xc
+ sub r1, #0x10
+ str r2, [r4, r1]
+ add r1, r0, #7
+ mov r2, #6
+ strb r2, [r4, r1]
+ mov r1, #0
+ add r0, r0, #4
+ strb r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD14_021E03CC
+ ldr r0, _021DF79C ; =MOD14_021DF7B4
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD14_021DDD40
+ pop {r4, pc}
+ nop
+_021DF79C: .word MOD14_021DF7B4
+
+ thumb_func_start MOD14_021DF7A0
+MOD14_021DF7A0: ; 0x021DF7A0
+ ldr r1, _021DF7B0 ; =0x00000784
+ ldrb r0, [r0, r1]
+ cmp r0, #0xff
+ bne _021DF7AC
+ mov r0, #1
+ bx lr
+_021DF7AC:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021DF7B0: .word 0x00000784
+
+ thumb_func_start MOD14_021DF7B4
+MOD14_021DF7B4: ; 0x021DF7B4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ ldr r1, _021DF888 ; =0x00000784
+ str r0, [r3]
+ ldrb r0, [r4, r1]
+ cmp r0, #0
+ beq _021DF7E0
+ cmp r0, #1
+ beq _021DF83C
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_021DF7E0:
+ add r0, r1, #0
+ mov r3, #0
+ add r0, #0xa
+ strb r3, [r4, r0]
+ add r0, r1, #3
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ beq _021DF80E
+ sub r0, r1, #4
+ ldr r3, [sp, #4]
+ ldr r0, [r4, r0]
+ add r1, r2, #0
+ add r0, r3, r0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ bl MOD14_021E0320
+ ldr r0, _021DF88C ; =0x00000787
+ add sp, #0xc
+ ldrb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_021DF80E:
+ sub r1, #0x14
+ ldr r0, [r4, r1]
+ add r1, r2, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ add r0, r4, #0
+ bl MOD14_021E0320
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02020130
+ add r0, r4, #0
+ bl MOD14_021E0554
+ ldr r0, _021DF88C ; =0x00000787
+ mov r1, #6
+ strb r1, [r4, r0]
+ sub r1, r0, #3
+ ldrb r1, [r4, r1]
+ sub r0, r0, #3
+ add r1, r1, #1
+ strb r1, [r4, r0]
+_021DF83C:
+ ldr r0, _021DF88C ; =0x00000787
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _021DF862
+ sub r0, r0, #7
+ ldr r1, [sp, #4]
+ ldr r0, [r4, r0]
+ sub r0, r1, r0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl MOD14_021E0320
+ ldr r0, _021DF88C ; =0x00000787
+ add sp, #0xc
+ ldrb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_021DF862:
+ sub r0, #0x1f
+ ldr r0, [r4, r0]
+ add r1, sp, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ add r0, r4, #0
+ bl MOD14_021E0320
+ ldr r0, _021DF888 ; =0x00000784
+ mov r1, #0xff
+ strb r1, [r4, r0]
+ mov r1, #1
+ add r0, #0xa
+ strb r1, [r4, r0]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021DF888: .word 0x00000784
+_021DF88C: .word 0x00000787
+
+ thumb_func_start MOD14_021DF890
+MOD14_021DF890: ; 0x021DF890
+ add r1, r0, #0
+ mov r2, #2
+ mov r0, #0x1e
+ lsl r2, r2, #0xc
+ lsl r0, r0, #6
+ str r2, [r1, r0]
+ add r2, r0, #0
+ sub r2, #0x18
+ ldr r3, [r1, r2]
+ add r2, r0, #0
+ add r3, #0xc
+ sub r2, #0x10
+ str r3, [r1, r2]
+ add r2, r0, #7
+ mov r3, #6
+ strb r3, [r1, r2]
+ ldr r3, _021DF8BC ; =MOD14_021DDD40
+ mov r2, #0
+ add r0, r0, #4
+ strb r2, [r1, r0]
+ ldr r0, _021DF8C0 ; =MOD14_021DF8F8
+ bx r3
+ .align 2, 0
+_021DF8BC: .word MOD14_021DDD40
+_021DF8C0: .word MOD14_021DF8F8
+
+ thumb_func_start MOD14_021DF8C4
+MOD14_021DF8C4: ; 0x021DF8C4
+ push {r4, lr}
+ ldr r1, _021DF8F0 ; =0x00000784
+ add r4, r0, #0
+ ldrb r1, [r4, r1]
+ cmp r1, #0xff
+ bne _021DF8EC
+ bl MOD14_021E0588
+ ldr r2, _021DF8F4 ; =0x00000754
+ add r1, r4, #0
+ ldr r0, [r4, #0x48]
+ ldr r2, [r4, r2]
+ add r1, #0x4c
+ bl MOD14_021E08E4
+ ldr r0, _021DF8F4 ; =0x00000754
+ mov r1, #0
+ str r1, [r4, r0]
+ mov r0, #1
+ pop {r4, pc}
+_021DF8EC:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021DF8F0: .word 0x00000784
+_021DF8F4: .word 0x00000754
+
+ thumb_func_start MOD14_021DF8F8
+MOD14_021DF8F8: ; 0x021DF8F8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ ldr r1, _021DF9D4 ; =0x00000784
+ str r0, [r3]
+ ldrb r0, [r4, r1]
+ cmp r0, #0
+ beq _021DF924
+ cmp r0, #1
+ beq _021DF980
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_021DF924:
+ add r0, r1, #0
+ mov r3, #0
+ add r0, #0xa
+ strb r3, [r4, r0]
+ add r0, r1, #3
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ beq _021DF952
+ sub r0, r1, #4
+ ldr r3, [sp, #4]
+ ldr r0, [r4, r0]
+ add r1, r2, #0
+ add r0, r3, r0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ bl MOD14_021E0320
+ ldr r0, _021DF9D8 ; =0x00000787
+ add sp, #0xc
+ ldrb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_021DF952:
+ sub r1, #0x14
+ ldr r0, [r4, r1]
+ add r1, r2, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ add r0, r4, #0
+ bl MOD14_021E0320
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02020130
+ add r0, r4, #0
+ bl MOD14_021E0714
+ ldr r0, _021DF9D8 ; =0x00000787
+ mov r1, #6
+ strb r1, [r4, r0]
+ sub r1, r0, #3
+ ldrb r1, [r4, r1]
+ sub r0, r0, #3
+ add r1, r1, #1
+ strb r1, [r4, r0]
+_021DF980:
+ ldr r0, _021DF9D8 ; =0x00000787
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _021DF9A6
+ sub r0, r0, #7
+ ldr r1, [sp, #4]
+ ldr r0, [r4, r0]
+ sub r0, r1, r0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl MOD14_021E0320
+ ldr r0, _021DF9D8 ; =0x00000787
+ add sp, #0xc
+ ldrb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_021DF9A6:
+ sub r0, #0x1f
+ ldr r0, [r4, r0]
+ add r1, sp, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ add r0, r4, #0
+ bl MOD14_021E0320
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_02020130
+ ldr r0, _021DF9D4 ; =0x00000784
+ mov r1, #0xff
+ strb r1, [r4, r0]
+ mov r1, #1
+ add r0, #0xa
+ strb r1, [r4, r0]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021DF9D4: .word 0x00000784
+_021DF9D8: .word 0x00000787
+
+ thumb_func_start MOD14_021DF9DC
+MOD14_021DF9DC: ; 0x021DF9DC
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ mov r1, #1
+ bl FUN_02020130
+ ldr r0, _021DFA50 ; =0x00000788
+ mov r1, #0
+ strb r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD14_021E0740
+ add r4, r0, #0
+ bl FUN_0202011C
+ add r3, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x10
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ add r0, r4, #0
+ bl FUN_0202032C
+ str r0, [sp]
+ ldr r1, [r5, #0x4c]
+ ldr r2, [sp, #0x14]
+ add r0, r5, #0
+ mov r3, #1
+ bl MOD14_021DFA7C
+ ldr r0, [r5, #0x4c]
+ bl FUN_0202011C
+ add r3, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #4
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [r5, #0x4c]
+ bl FUN_0202032C
+ str r0, [sp]
+ mov r3, #0
+ ldr r2, [sp, #8]
+ add r0, r5, #0
+ add r1, r4, #0
+ mvn r3, r3
+ bl MOD14_021DFA7C
+ ldr r0, _021DFA54 ; =0x00000784
+ mov r1, #0
+ strb r1, [r5, r0]
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ nop
+_021DFA50: .word 0x00000788
+_021DFA54: .word 0x00000784
+
+ thumb_func_start MOD14_021DFA58
+MOD14_021DFA58: ; 0x021DFA58
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD14_021DFB08
+ cmp r0, #0
+ beq _021DFA76
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02020130
+ add r0, r4, #0
+ bl MOD14_021E062C
+ mov r0, #1
+ pop {r4, pc}
+_021DFA76:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DFA7C
+MOD14_021DFA7C: ; 0x021DFA7C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0xa
+ mov r1, #0x2c
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021DFAFC
+ add r0, r6, #0
+ bl FUN_0202011C
+ add r3, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #4
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, #0xc
+ str r0, [r2]
+ str r6, [r4]
+ strh r1, [r4, #4]
+ mov r0, #6
+ strh r0, [r4, #6]
+ ldr r0, [sp, #0x28]
+ str r0, [r4, #8]
+ ldr r0, [sp, #8]
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #4]
+ str r0, [r4, #0x14]
+ str r7, [r4, #0x10]
+ mov r0, #0
+ str r0, [r4, #0x18]
+ ldr r0, [sp]
+ add r2, r0, #0
+ mul r2, r1
+ str r2, [r4, #0x24]
+ ldr r2, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ sub r0, r2, r0
+ bl _s32_div_f
+ str r0, [r4, #0x1c]
+ mov r0, #0xf
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x20]
+ ldr r0, _021DFB00 ; =MOD14_021DFB28
+ add r1, r4, #0
+ mov r2, #0
+ str r5, [r4, #0x28]
+ bl MOD14_021DDD40
+ cmp r0, #0
+ beq _021DFAF6
+ ldr r0, _021DFB04 ; =0x00000788
+ mov r1, #1
+ add sp, #0x10
+ strb r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DFAF6:
+ add r0, r4, #0
+ bl FUN_02016A18
+_021DFAFC:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DFB00: .word MOD14_021DFB28
+_021DFB04: .word 0x00000788
+
+ thumb_func_start MOD14_021DFB08
+MOD14_021DFB08: ; 0x021DFB08
+ ldr r1, _021DFB18 ; =0x00000788
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ bne _021DFB14
+ mov r0, #1
+ bx lr
+_021DFB14:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021DFB18: .word 0x00000788
+
+ thumb_func_start MOD14_021DFB1C
+MOD14_021DFB1C: ; 0x021DFB1C
+ ldr r1, _021DFB24 ; =0x00000788
+ mov r2, #0
+ strb r2, [r0, r1]
+ bx lr
+ .align 2, 0
+_021DFB24: .word 0x00000788
+
+ thumb_func_start MOD14_021DFB28
+MOD14_021DFB28: ; 0x021DFB28
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ ldrh r0, [r4, #4]
+ cmp r0, #0
+ beq _021DFB90
+ sub r0, r0, #1
+ strh r0, [r4, #4]
+ ldrh r1, [r4, #4]
+ ldrh r0, [r4, #6]
+ cmp r1, r0
+ bne _021DFB5E
+ ldr r0, [r4]
+ ldr r1, [r4, #8]
+ bl MOD14_021DDE24
+_021DFB5E:
+ ldr r1, [r4, #0xc]
+ ldr r0, [r4, #0x1c]
+ add r0, r1, r0
+ str r0, [r4, #0xc]
+ str r0, [sp, #4]
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x20]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ lsl r0, r0, #4
+ lsr r0, r0, #0x10
+ bl FUN_0201B93C
+ ldr r1, [r4, #0x24]
+ add r2, r1, #0
+ mul r2, r0
+ ldr r0, [r4, #0x14]
+ add r1, sp, #0
+ add r0, r0, r2
+ str r0, [sp]
+ ldr r0, [r4]
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_021DFB90:
+ ldr r0, [r4, #0x14]
+ add r1, r2, #0
+ str r0, [sp]
+ ldr r0, [r4, #0x10]
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ bl FUN_02020044
+ ldr r1, _021DFBB4 ; =MOD14_021DFB1C
+ ldr r2, [r4, #0x28]
+ add r0, r4, #0
+ bl MOD14_021DDF30
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021DFBB4: .word MOD14_021DFB1C
+
+ thumb_func_start MOD14_021DFBB8
+MOD14_021DFBB8: ; 0x021DFBB8
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, _021DFC1C ; =0x0000078C
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ bne _021DFBD6
+ add r0, r0, #1
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bne _021DFBD6
+ ldr r0, [r4, #4]
+ mov r1, #3
+ bl FUN_02020130
+_021DFBD6:
+ ldr r0, [r4, #4]
+ bl FUN_0202011C
+ add r5, r0, #0
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ mov r0, #2
+ ldr r1, [sp, #4]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r1, r2, #0
+ bl MOD14_021E0320
+ ldr r0, _021DFC20 ; =0x00000784
+ mov r2, #0
+ strb r2, [r4, r0]
+ add r0, r0, #3
+ strb r2, [r4, r0]
+ ldr r0, _021DFC24 ; =MOD14_021DFC40
+ add r1, r4, #0
+ bl MOD14_021DDD40
+ cmp r0, #0
+ beq _021DFC18
+ ldr r0, _021DFC28 ; =0x00000788
+ mov r1, #1
+ strb r1, [r4, r0]
+_021DFC18:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_021DFC1C: .word 0x0000078C
+_021DFC20: .word 0x00000784
+_021DFC24: .word MOD14_021DFC40
+_021DFC28: .word 0x00000788
+
+ thumb_func_start MOD14_021DFC2C
+MOD14_021DFC2C: ; 0x021DFC2C
+ ldr r1, _021DFC3C ; =0x00000788
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ bne _021DFC38
+ mov r0, #1
+ bx lr
+_021DFC38:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021DFC3C: .word 0x00000788
+
+ thumb_func_start MOD14_021DFC40
+MOD14_021DFC40: ; 0x021DFC40
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r4, r1, #0
+ ldr r1, _021DFD18 ; =0x00000784
+ add r5, r0, #0
+ ldrb r0, [r4, r1]
+ cmp r0, #0
+ beq _021DFC58
+ cmp r0, #1
+ beq _021DFCBE
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+_021DFC58:
+ add r0, r1, #3
+ ldrb r0, [r4, r0]
+ add r2, r0, #1
+ add r0, r1, #3
+ strb r2, [r4, r0]
+ ldrb r0, [r4, r0]
+ cmp r0, #4
+ blo _021DFD14
+ ldr r0, [r4, #4]
+ bl FUN_0202011C
+ add r3, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0xc
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [sp, #0x10]
+ mov r2, #3
+ asr r0, r0, #0xc
+ add r1, r0, #6
+ mov r0, #0x77
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ add r1, r0, #0
+ lsl r2, r2, #0xc
+ add r1, #0x10
+ str r2, [r4, r1]
+ add r1, r0, #0
+ mov r2, #2
+ add r1, #0x17
+ strb r2, [r4, r1]
+ add r1, r0, #0
+ add r1, #0x1c
+ ldrb r1, [r4, r1]
+ cmp r1, #0
+ bne _021DFCB2
+ add r0, #0x1d
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bne _021DFCB2
+ ldr r0, [r4, #4]
+ mov r1, #4
+ bl FUN_02020130
+_021DFCB2:
+ ldr r0, _021DFD18 ; =0x00000784
+ add sp, #0x18
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021DFCBE:
+ ldr r0, [r4, #4]
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ ldr r0, _021DFD1C ; =0x00000787
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _021DFCF8
+ sub r0, r0, #7
+ ldr r1, [sp, #4]
+ ldr r0, [r4, r0]
+ add r0, r1, r0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r1, r2, #0
+ bl MOD14_021E0320
+ ldr r0, _021DFD1C ; =0x00000787
+ add sp, #0x18
+ ldrb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021DFCF8:
+ sub r0, #0x17
+ ldr r0, [r4, r0]
+ add r1, r2, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ add r0, r4, #0
+ bl MOD14_021E0320
+ ldr r0, _021DFD20 ; =0x00000788
+ mov r1, #0
+ strb r1, [r4, r0]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_021DFD14:
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DFD18: .word 0x00000784
+_021DFD1C: .word 0x00000787
+_021DFD20: .word 0x00000788
+
+ thumb_func_start MOD14_021DFD24
+MOD14_021DFD24: ; 0x021DFD24
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0202011C
+ add r3, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, #0x77
+ str r0, [r2]
+ ldr r0, [sp, #4]
+ lsl r1, r1, #4
+ asr r0, r0, #0xc
+ sub r0, r0, #4
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r2, _021DFD74 ; =0xFFFFF000
+ add r0, #0x10
+ str r2, [r4, r0]
+ add r0, r1, #0
+ mov r2, #4
+ add r0, #0x17
+ strb r2, [r4, r0]
+ mov r2, #0
+ add r1, #0x14
+ strb r2, [r4, r1]
+ ldr r0, _021DFD78 ; =MOD14_021DFDBC
+ add r1, r4, #0
+ bl MOD14_021DDD40
+ cmp r0, #0
+ beq _021DFD70
+ ldr r0, _021DFD7C ; =0x00000788
+ mov r1, #1
+ strb r1, [r4, r0]
+_021DFD70:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_021DFD74: .word 0xFFFFF000
+_021DFD78: .word MOD14_021DFDBC
+_021DFD7C: .word 0x00000788
+
+ thumb_func_start MOD14_021DFD80
+MOD14_021DFD80: ; 0x021DFD80
+ push {r4, lr}
+ ldr r1, _021DFDB8 ; =0x00000788
+ add r4, r0, #0
+ ldrb r0, [r4, r1]
+ cmp r0, #0
+ bne _021DFDB2
+ add r0, r1, #4
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bne _021DFDAE
+ add r0, r1, #5
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bne _021DFDAE
+ ldr r0, [r4, #4]
+ bl FUN_020201DC
+ cmp r0, #0
+ beq _021DFDAE
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_02020130
+_021DFDAE:
+ mov r0, #1
+ pop {r4, pc}
+_021DFDB2:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021DFDB8: .word 0x00000788
+
+ thumb_func_start MOD14_021DFDBC
+MOD14_021DFDBC: ; 0x021DFDBC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ ldr r0, _021DFE20 ; =0x00000787
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _021DFDFE
+ sub r0, r0, #7
+ ldr r1, [sp, #4]
+ ldr r0, [r4, r0]
+ add r0, r1, r0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r1, r2, #0
+ bl MOD14_021E0320
+ ldr r0, _021DFE20 ; =0x00000787
+ add sp, #0xc
+ ldrb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_021DFDFE:
+ sub r0, #0x17
+ ldr r0, [r4, r0]
+ add r1, r2, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ add r0, r4, #0
+ bl MOD14_021E0320
+ ldr r0, _021DFE24 ; =0x00000788
+ mov r1, #0
+ strb r1, [r4, r0]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021DFE20: .word 0x00000787
+_021DFE24: .word 0x00000788
+
+ thumb_func_start MOD14_021DFE28
+MOD14_021DFE28: ; 0x021DFE28
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC424
+ mov r1, #0x79
+ lsl r1, r1, #4
+ mov r2, #0x11
+ ldr r3, [r4, r1]
+ lsl r2, r2, #4
+ ldrh r2, [r3, r2]
+ cmp r2, r0
+ bne _021DFE4E
+ sub r1, #0x38
+ ldr r0, [r4, r1]
+ bl MOD14_021DEA50
+_021DFE4E:
+ add r0, r4, #0
+ bl MOD14_021E0720
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_02020130
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DFE60
+MOD14_021DFE60: ; 0x021DFE60
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02020130
+ add r1, r4, #0
+ ldr r0, [r4, #0x48]
+ add r1, #0x4c
+ mov r2, #1
+ bl MOD14_021E0C20
+ ldr r0, _021DFE80 ; =0x00000784
+ mov r1, #0
+ strb r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021DFE80: .word 0x00000784
+
+ thumb_func_start MOD14_021DFE84
+MOD14_021DFE84: ; 0x021DFE84
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021DFF14 ; =0x00000794
+ ldr r0, [r5, r0]
+ bl MOD14_021DDEDC
+ ldr r1, _021DFF18 ; =0x00000784
+ add r4, r0, #0
+ ldrb r1, [r5, r1]
+ cmp r1, #0
+ beq _021DFEA4
+ cmp r1, #1
+ beq _021DFEBC
+ cmp r1, #2
+ beq _021DFEF6
+ b _021DFF10
+_021DFEA4:
+ add r1, r5, #0
+ ldr r0, [r5, #0x48]
+ add r1, #0x4c
+ bl MOD14_021E0C48
+ cmp r0, #0
+ beq _021DFF10
+ ldr r0, _021DFF18 ; =0x00000784
+ ldrb r1, [r5, r0]
+ add r1, r1, #1
+ strb r1, [r5, r0]
+ b _021DFF10
+_021DFEBC:
+ bl MOD14_021DA1B8
+ cmp r0, #0
+ beq _021DFF10
+ add r0, r4, #0
+ bl MOD14_021DA1C0
+ cmp r0, #0
+ beq _021DFEE0
+ ldr r0, [r5, #4]
+ mov r1, #0
+ bl FUN_02020130
+ add r0, r5, #0
+ bl MOD14_021E0720
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DFEE0:
+ add r1, r5, #0
+ ldr r0, [r5, #0x48]
+ add r1, #0x4c
+ mov r2, #2
+ bl MOD14_021E0C20
+ ldr r0, _021DFF18 ; =0x00000784
+ ldrb r1, [r5, r0]
+ add r1, r1, #1
+ strb r1, [r5, r0]
+ b _021DFF10
+_021DFEF6:
+ add r1, r5, #0
+ ldr r0, [r5, #0x48]
+ add r1, #0x4c
+ bl MOD14_021E0C48
+ cmp r0, #0
+ beq _021DFF10
+ ldr r0, [r5, #4]
+ mov r1, #2
+ bl FUN_02020130
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DFF10:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DFF14: .word 0x00000794
+_021DFF18: .word 0x00000784
+
+ thumb_func_start MOD14_021DFF1C
+MOD14_021DFF1C: ; 0x021DFF1C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02020238
+ ldr r0, _021DFF4C ; =0x0000078C
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ beq _021DFF38
+ ldr r0, [r4, #0x4c]
+ mov r1, #1
+ bl FUN_02020238
+_021DFF38:
+ ldr r0, _021DFF50 ; =0x0000078D
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _021DFF4A
+ sub r0, #0x2d
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD14_021E501C
+_021DFF4A:
+ pop {r4, pc}
+ .align 2, 0
+_021DFF4C: .word 0x0000078C
+_021DFF50: .word 0x0000078D
+
+ thumb_func_start MOD14_021DFF54
+MOD14_021DFF54: ; 0x021DFF54
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02020238
+ ldr r0, _021DFF84 ; =0x0000078C
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ beq _021DFF70
+ ldr r0, [r4, #0x4c]
+ mov r1, #2
+ bl FUN_02020238
+_021DFF70:
+ ldr r0, _021DFF88 ; =0x0000078D
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _021DFF82
+ sub r0, #0x2d
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl MOD14_021E501C
+_021DFF82:
+ pop {r4, pc}
+ .align 2, 0
+_021DFF84: .word 0x0000078C
+_021DFF88: .word 0x0000078D
+
+ thumb_func_start MOD14_021DFF8C
+MOD14_021DFF8C: ; 0x021DFF8C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021DFFB0 ; =0x0000078C
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _021DFFAC
+ add r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC45C
+ add r2, r0, #0
+ ldr r0, [r4, #0x48]
+ add r4, #0x4c
+ add r1, r4, #0
+ bl MOD14_021E0BA4
+_021DFFAC:
+ pop {r4, pc}
+ nop
+_021DFFB0: .word 0x0000078C
+
+ thumb_func_start MOD14_021DFFB4
+MOD14_021DFFB4: ; 0x021DFFB4
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC484
+ add r2, r0, #0
+ ldr r0, [r4, #0x4c]
+ cmp r0, #0
+ beq _021DFFD4
+ ldr r0, [r4, #0x48]
+ add r4, #0x4c
+ add r1, r4, #0
+ bl MOD14_021E0B54
+_021DFFD4:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021DFFD8
+MOD14_021DFFD8: ; 0x021DFFD8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x4c]
+ add r2, r1, #0
+ cmp r0, #0
+ beq _021E0004
+ add r1, r4, #0
+ ldr r0, [r4, #0x48]
+ add r1, #0x4c
+ bl MOD14_021E0BA8
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC484
+ add r2, r0, #0
+ ldr r0, [r4, #0x48]
+ add r4, #0x4c
+ add r1, r4, #0
+ bl MOD14_021E0B54
+_021E0004:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E0008
+MOD14_021E0008: ; 0x021E0008
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC49C
+ cmp r0, #0
+ ldr r0, [r4, #4]
+ beq _021E0024
+ mov r1, #1
+ bl FUN_02020248
+ pop {r4, pc}
+_021E0024:
+ mov r1, #0
+ bl FUN_02020248
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E002C
+MOD14_021E002C: ; 0x021E002C
+ ldr r3, _021E0034 ; =0x02020131
+ ldr r0, [r0, #4]
+ mov r1, #1
+ bx r3
+ .align 2, 0
+_021E0034: .word 0x02020131
+
+ thumb_func_start MOD14_021E0038
+MOD14_021E0038: ; 0x021E0038
+ push {r4, lr}
+ ldr r0, [r0, #4]
+ add r4, r1, #0
+ bl FUN_0202011C
+ add r2, r0, #0
+ ldmia r2!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E0050
+MOD14_021E0050: ; 0x021E0050
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E0074 ; =0x00000784
+ mov r2, #0
+ strb r2, [r4, r0]
+ ldr r0, _021E0078 ; =MOD14_021E0094
+ add r1, r4, #0
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _021E0070
+ ldr r0, _021E007C ; =0x0000078D
+ mov r1, #1
+ strb r1, [r4, r0]
+ sub r0, r0, #5
+ strb r1, [r4, r0]
+_021E0070:
+ pop {r4, pc}
+ nop
+_021E0074: .word 0x00000784
+_021E0078: .word MOD14_021E0094
+_021E007C: .word 0x0000078D
+
+ thumb_func_start MOD14_021E0080
+MOD14_021E0080: ; 0x021E0080
+ ldr r1, _021E0090 ; =0x00000788
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ bne _021E008C
+ mov r0, #1
+ bx lr
+_021E008C:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021E0090: .word 0x00000788
+
+ thumb_func_start MOD14_021E0094
+MOD14_021E0094: ; 0x021E0094
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021E00E8 ; =0x00000784
+ add r4, r1, #0
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _021E00A8
+ cmp r1, #1
+ beq _021E00C4
+ pop {r3, r4, r5, pc}
+_021E00A8:
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02020130
+ mov r0, #0x76
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021E4D94
+ ldr r0, _021E00E8 ; =0x00000784
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021E00C4:
+ sub r0, #0x24
+ ldr r0, [r4, r0]
+ bl MOD14_021E4DE8
+ cmp r0, #0
+ beq _021E00E4
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02020130
+ ldr r0, _021E00EC ; =0x00000788
+ mov r1, #0
+ strb r1, [r4, r0]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_021E00E4:
+ pop {r3, r4, r5, pc}
+ nop
+_021E00E8: .word 0x00000784
+_021E00EC: .word 0x00000788
+
+ thumb_func_start MOD14_021E00F0
+MOD14_021E00F0: ; 0x021E00F0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E0114 ; =0x00000784
+ mov r2, #0
+ strb r2, [r4, r0]
+ ldr r0, _021E0118 ; =MOD14_021E0134
+ add r1, r4, #0
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _021E0112
+ ldr r0, _021E011C ; =0x0000078D
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r1, #1
+ sub r0, r0, #5
+ strb r1, [r4, r0]
+_021E0112:
+ pop {r4, pc}
+ .align 2, 0
+_021E0114: .word 0x00000784
+_021E0118: .word MOD14_021E0134
+_021E011C: .word 0x0000078D
+
+ thumb_func_start MOD14_021E0120
+MOD14_021E0120: ; 0x021E0120
+ ldr r1, _021E0130 ; =0x00000788
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ bne _021E012C
+ mov r0, #1
+ bx lr
+_021E012C:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021E0130: .word 0x00000788
+
+ thumb_func_start MOD14_021E0134
+MOD14_021E0134: ; 0x021E0134
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021E0188 ; =0x00000784
+ add r4, r1, #0
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _021E0148
+ cmp r1, #1
+ beq _021E0164
+ pop {r3, r4, r5, pc}
+_021E0148:
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02020130
+ mov r0, #0x76
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021E4E58
+ ldr r0, _021E0188 ; =0x00000784
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021E0164:
+ sub r0, #0x24
+ ldr r0, [r4, r0]
+ bl MOD14_021E4EA4
+ cmp r0, #0
+ beq _021E0184
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_02020130
+ ldr r0, _021E018C ; =0x00000788
+ mov r1, #0
+ strb r1, [r4, r0]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_021E0184:
+ pop {r3, r4, r5, pc}
+ nop
+_021E0188: .word 0x00000784
+_021E018C: .word 0x00000788
+
+ thumb_func_start MOD14_021E0190
+MOD14_021E0190: ; 0x021E0190
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E01B0 ; =0x00000784
+ mov r2, #0
+ strb r2, [r4, r0]
+ ldr r0, _021E01B4 ; =MOD14_021E01D0
+ add r1, r4, #0
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _021E01AC
+ ldr r0, _021E01B8 ; =0x00000788
+ mov r1, #1
+ strb r1, [r4, r0]
+_021E01AC:
+ pop {r4, pc}
+ nop
+_021E01B0: .word 0x00000784
+_021E01B4: .word MOD14_021E01D0
+_021E01B8: .word 0x00000788
+
+ thumb_func_start MOD14_021E01BC
+MOD14_021E01BC: ; 0x021E01BC
+ ldr r1, _021E01CC ; =0x00000788
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ bne _021E01C8
+ mov r0, #1
+ bx lr
+_021E01C8:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021E01CC: .word 0x00000788
+
+ thumb_func_start MOD14_021E01D0
+MOD14_021E01D0: ; 0x021E01D0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021E0224 ; =0x00000784
+ add r4, r1, #0
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _021E01E4
+ cmp r1, #1
+ beq _021E0200
+ pop {r3, r4, r5, pc}
+_021E01E4:
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02020130
+ mov r0, #0x76
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021E4EB4
+ ldr r0, _021E0224 ; =0x00000784
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021E0200:
+ sub r0, #0x24
+ ldr r0, [r4, r0]
+ bl MOD14_021E4F48
+ cmp r0, #0
+ beq _021E0220
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02020130
+ ldr r0, _021E0228 ; =0x00000788
+ mov r1, #0
+ strb r1, [r4, r0]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_021E0220:
+ pop {r3, r4, r5, pc}
+ nop
+_021E0224: .word 0x00000784
+_021E0228: .word 0x00000788
+
+ thumb_func_start MOD14_021E022C
+MOD14_021E022C: ; 0x021E022C
+ push {r3, lr}
+ ldr r1, _021E0240 ; =0x0000078D
+ ldrb r1, [r0, r1]
+ cmp r1, #0
+ beq _021E023E
+ ldr r0, [r0, #4]
+ mov r1, #1
+ bl FUN_02020130
+_021E023E:
+ pop {r3, pc}
+ .align 2, 0
+_021E0240: .word 0x0000078D
+
+ thumb_func_start MOD14_021E0244
+MOD14_021E0244: ; 0x021E0244
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E0260 ; =0x0000078D
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ beq _021E025E
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_02020130
+ ldr r0, _021E0260 ; =0x0000078D
+ mov r1, #0
+ strb r1, [r4, r0]
+_021E025E:
+ pop {r4, pc}
+ .align 2, 0
+_021E0260: .word 0x0000078D
+
+ thumb_func_start MOD14_021E0264
+MOD14_021E0264: ; 0x021E0264
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x79
+ add r5, r3, #0
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r7, r2, #0
+ add r4, r1, #0
+ str r0, [sp]
+ bl MOD14_021DC3CC
+ strb r0, [r7]
+ ldrb r0, [r7]
+ cmp r0, #4
+ bhi _021E0318
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E028E: ; jump table
+ .short _021E0298 - _021E028E - 2 ; case 0
+ .short _021E02C2 - _021E028E - 2 ; case 1
+ .short _021E02E4 - _021E028E - 2 ; case 2
+ .short _021E02F6 - _021E028E - 2 ; case 3
+ .short _021E0308 - _021E028E - 2 ; case 4
+_021E0298:
+ ldr r0, _021E031C ; =0x00000794
+ ldr r0, [r5, r0]
+ bl MOD14_021DDD98
+ add r5, r0, #0
+ ldr r0, [sp]
+ bl MOD14_021DC3D0
+ mov r1, #0x18
+ add r5, #0x70
+ mul r1, r0
+ add r0, r5, r1
+ str r0, [r6]
+ ldr r0, [sp]
+ bl MOD14_021DC3D8
+ mov r1, #0x18
+ mul r1, r0
+ add r1, #0x18
+ str r1, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E02C2:
+ ldr r0, [sp]
+ bl MOD14_021DC3E8
+ add r7, r0, #0
+ ldr r0, _021E031C ; =0x00000794
+ ldr r0, [r5, r0]
+ bl MOD14_021DDD60
+ add r1, r7, #0
+ add r2, r6, #0
+ add r3, r4, #0
+ bl MOD14_021E3170
+ ldr r0, [r4]
+ sub r0, #0x10
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E02E4:
+ ldr r0, _021E031C ; =0x00000794
+ ldr r0, [r5, r0]
+ bl MOD14_021DDD98
+ add r0, #0xa8
+ str r0, [r6]
+ mov r0, #8
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E02F6:
+ ldr r0, _021E031C ; =0x00000794
+ ldr r0, [r5, r0]
+ bl MOD14_021DDD98
+ add r0, #0x9f
+ str r0, [r6]
+ mov r0, #0xa0
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0308:
+ ldr r0, _021E031C ; =0x00000794
+ ldr r0, [r5, r0]
+ bl MOD14_021DDD98
+ add r0, #0xeb
+ str r0, [r6]
+ mov r0, #0xa0
+ str r0, [r4]
+_021E0318:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E031C: .word 0x00000794
+
+ thumb_func_start MOD14_021E0320
+MOD14_021E0320: ; 0x021E0320
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r7, r0, #0
+ ldr r0, [r7, #4]
+ add r6, r1, #0
+ bl FUN_02020044
+ ldr r1, _021E03B4 ; =0x0000078C
+ ldrb r0, [r7, r1]
+ cmp r0, #0
+ beq _021E0378
+ mov r0, #0
+ sub r1, #0x38
+ str r0, [sp]
+ str r0, [sp, #0x18]
+ ldr r0, [r7, r1]
+ cmp r0, #0
+ bls _021E0378
+ add r4, r7, #0
+ add r5, r7, #0
+_021E0348:
+ ldr r0, _021E03B8 ; =0x00000664
+ ldr r1, [r6]
+ ldr r0, [r4, r0]
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ ldr r0, _021E03BC ; =0x00000668
+ ldr r1, [r6, #4]
+ ldr r0, [r4, r0]
+ sub r0, r1, r0
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x4c]
+ add r1, sp, #0x10
+ bl FUN_02020044
+ ldr r0, [sp]
+ add r4, #8
+ add r0, r0, #1
+ str r0, [sp]
+ ldr r0, _021E03C0 ; =0x00000754
+ add r5, #0x34
+ ldr r1, [r7, r0]
+ ldr r0, [sp]
+ cmp r0, r1
+ blo _021E0348
+_021E0378:
+ ldr r0, _021E03C4 ; =0x0000078D
+ ldrb r1, [r7, r0]
+ cmp r1, #0
+ beq _021E038A
+ sub r0, #0x2d
+ ldr r0, [r7, r0]
+ add r1, r6, #0
+ bl MOD14_021E4FDC
+_021E038A:
+ ldr r0, _021E03C8 ; =0x0000078E
+ ldrb r0, [r7, r0]
+ cmp r0, #0
+ beq _021E03B0
+ ldmia r6!, {r0, r1}
+ add r3, sp, #4
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ mov r0, #6
+ ldr r1, [sp, #8]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #8]
+ ldr r0, [r7, #8]
+ add r1, r2, #0
+ bl FUN_02020044
+_021E03B0:
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E03B4: .word 0x0000078C
+_021E03B8: .word 0x00000664
+_021E03BC: .word 0x00000668
+_021E03C0: .word 0x00000754
+_021E03C4: .word 0x0000078D
+_021E03C8: .word 0x0000078E
+
+ thumb_func_start MOD14_021E03CC
+MOD14_021E03CC: ; 0x021E03CC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ mov r1, #0x79
+ lsl r1, r1, #4
+ str r0, [sp, #4]
+ ldr r0, [r0, r1]
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ beq _021E03E2
+ b _021E0504
+_021E03E2:
+ mov r1, #0x79
+ ldr r0, [sp, #4]
+ lsl r1, r1, #4
+ ldr r0, [r0, r1]
+ bl MOD14_021DC4DC
+ cmp r0, #0
+ beq _021E042A
+ mov r1, #0x79
+ ldr r0, [sp, #4]
+ lsl r1, r1, #4
+ ldr r0, [r0, r1]
+ bl MOD14_021DC3E0
+ add r1, r0, #0
+ ldr r3, [sp, #4]
+ ldr r2, _021E053C ; =0x00000758
+ ldr r0, [sp, #4]
+ add r3, #0x4c
+ ldr r0, [r0, r2]
+ ldr r2, _021E0540 ; =0x000004D8
+ bl MOD14_021DE980
+ ldr r0, [sp, #4]
+ ldr r2, _021E0544 ; =0x00000754
+ mov r1, #1
+ str r1, [r0, r2]
+ add r1, r2, #0
+ mov r3, #0
+ sub r1, #0xf0
+ str r3, [r0, r1]
+ ldr r1, _021E0548 ; =0xFFFFC000
+ sub r2, #0xec
+ str r1, [r0, r2]
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+_021E042A:
+ add r0, sp, #0x24
+ str r0, [sp]
+ mov r1, #0x79
+ ldr r0, [sp, #4]
+ lsl r1, r1, #4
+ ldr r0, [r0, r1]
+ add r1, sp, #0x30
+ add r2, sp, #0x2c
+ add r3, sp, #0x28
+ bl MOD14_021DC4A4
+ mov r1, #0x79
+ ldr r0, [sp, #4]
+ lsl r1, r1, #4
+ ldr r0, [r0, r1]
+ bl MOD14_021DC3D0
+ str r0, [sp, #0x18]
+ mov r1, #0x79
+ ldr r0, [sp, #4]
+ lsl r1, r1, #4
+ ldr r0, [r0, r1]
+ bl MOD14_021DC3D8
+ str r0, [sp, #0x14]
+ mov r0, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x28]
+ ldr r1, [sp, #0x24]
+ str r0, [sp, #0x1c]
+ cmp r0, r1
+ bhi _021E04F8
+ ldr r0, [sp, #4]
+ ldr r6, [sp, #4]
+ str r0, [sp, #0x10]
+ add r0, #0x4c
+ str r0, [sp, #0x10]
+ mov r7, #0x5f
+ ldr r0, [sp, #0x1c]
+ mov r1, #6
+ mul r1, r0
+ lsl r7, r7, #4
+ str r1, [sp, #0xc]
+ add r5, r6, #0
+_021E0482:
+ ldr r4, [sp, #0x30]
+ ldr r0, [sp, #0x2c]
+ cmp r4, r0
+ bhi _021E04E6
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x14]
+ sub r1, r1, r0
+ mov r0, #0x18
+ add r2, r1, #0
+ mul r2, r0
+ sub r0, #0x1c
+ sub r0, r0, r2
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+_021E049E:
+ ldr r1, [sp, #4]
+ ldr r0, _021E053C ; =0x00000758
+ ldr r3, [sp, #0x10]
+ ldr r0, [r1, r0]
+ ldr r1, [sp, #0xc]
+ add r2, r7, #0
+ add r1, r4, r1
+ bl MOD14_021DE980
+ ldr r0, [r6, #0x4c]
+ cmp r0, #0
+ beq _021E04DE
+ ldr r0, [sp, #0x18]
+ add r7, #0x10
+ sub r1, r4, r0
+ mov r0, #6
+ add r2, r1, #0
+ lsl r0, r0, #0xe
+ mul r2, r0
+ ldr r0, _021E054C ; =0x00000664
+ ldr r1, [sp, #8]
+ str r2, [r5, r0]
+ add r0, r0, #4
+ str r1, [r5, r0]
+ ldr r0, [sp, #0x10]
+ add r6, #0x34
+ add r0, #0x34
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x20]
+ add r5, #8
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+_021E04DE:
+ ldr r0, [sp, #0x2c]
+ add r4, r4, #1
+ cmp r4, r0
+ bls _021E049E
+_021E04E6:
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x24]
+ add r0, r0, #6
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ cmp r0, r1
+ bls _021E0482
+_021E04F8:
+ ldr r2, _021E0544 ; =0x00000754
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #4]
+ add sp, #0x34
+ str r1, [r0, r2]
+ pop {r4, r5, r6, r7, pc}
+_021E0504:
+ mov r1, #0x79
+ ldr r0, [sp, #4]
+ lsl r1, r1, #4
+ ldr r0, [r0, r1]
+ bl MOD14_021DC3E8
+ add r1, r0, #0
+ ldr r3, [sp, #4]
+ ldr r2, _021E0550 ; =0x0000075C
+ ldr r0, [sp, #4]
+ add r3, #0x4c
+ ldr r0, [r0, r2]
+ ldr r2, _021E0540 ; =0x000004D8
+ bl MOD14_021E3084
+ ldr r2, _021E0544 ; =0x00000754
+ ldr r0, [sp, #4]
+ mov r1, #1
+ str r1, [r0, r2]
+ add r1, r2, #0
+ mov r3, #0
+ sub r1, #0xf0
+ str r3, [r0, r1]
+ ldr r1, _021E0548 ; =0xFFFFC000
+ sub r2, #0xec
+ str r1, [r0, r2]
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E053C: .word 0x00000758
+_021E0540: .word 0x000004D8
+_021E0544: .word 0x00000754
+_021E0548: .word 0xFFFFC000
+_021E054C: .word 0x00000664
+_021E0550: .word 0x0000075C
+
+ thumb_func_start MOD14_021E0554
+MOD14_021E0554: ; 0x021E0554
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, _021E0580 ; =0x00000754
+ mov r4, #0
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bls _021E0578
+ ldr r7, _021E0580 ; =0x00000754
+ add r5, r6, #0
+_021E0566:
+ ldr r0, [r5, #0x4c]
+ mov r1, #2
+ bl MOD14_021DDE24
+ ldr r0, [r6, r7]
+ add r4, r4, #1
+ add r5, #0x34
+ cmp r4, r0
+ blo _021E0566
+_021E0578:
+ ldr r0, _021E0584 ; =0x0000078C
+ mov r1, #1
+ strb r1, [r6, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E0580: .word 0x00000754
+_021E0584: .word 0x0000078C
+
+ thumb_func_start MOD14_021E0588
+MOD14_021E0588: ; 0x021E0588
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021E0604
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl MOD14_021DC4DC
+ cmp r0, #0
+ beq _021E05C2
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl MOD14_021DC3E0
+ add r1, r0, #0
+ ldr r0, _021E0620 ; =0x00000758
+ ldr r0, [r5, r0]
+ add r5, #0x4c
+ add r2, r5, #0
+ bl MOD14_021DE9D4
+ pop {r3, r4, r5, r6, r7, pc}
+_021E05C2:
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl MOD14_021DC4F8
+ add r7, r0, #0
+ ldr r0, _021E0624 ; =0x00000754
+ mov r4, #0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bls _021E061C
+ add r6, r5, #0
+ add r6, #0x4c
+_021E05DC:
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl MOD14_021DC528
+ add r1, r0, #0
+ ldr r0, _021E0620 ; =0x00000758
+ add r1, r7, r1
+ ldr r0, [r5, r0]
+ add r2, r6, #0
+ bl MOD14_021DE9D4
+ ldr r0, _021E0624 ; =0x00000754
+ add r4, r4, #1
+ ldr r0, [r5, r0]
+ add r6, #0x34
+ cmp r4, r0
+ blo _021E05DC
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0604:
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl MOD14_021DC3E8
+ add r1, r0, #0
+ ldr r0, _021E0628 ; =0x0000075C
+ ldr r0, [r5, r0]
+ add r5, #0x4c
+ add r2, r5, #0
+ bl MOD14_021E30C0
+_021E061C:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E0620: .word 0x00000758
+_021E0624: .word 0x00000754
+_021E0628: .word 0x0000075C
+
+ thumb_func_start MOD14_021E062C
+MOD14_021E062C: ; 0x021E062C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021E06A2
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl MOD14_021DC3E0
+ add r4, r0, #0
+ ldr r0, _021E0708 ; =0x00000758
+ add r1, r4, #0
+ ldr r0, [r5, r0]
+ bl MOD14_021DEA38
+ add r6, r0, #0
+ add r1, r5, #0
+ mov r2, #0x5f
+ ldr r0, [r5, #0x48]
+ add r1, #0x4c
+ lsl r2, r2, #4
+ bl MOD14_021E0BBC
+ mov r2, #6
+ ldr r0, [r5, #0x48]
+ add r1, r6, #0
+ lsl r2, r2, #8
+ bl MOD14_021E0BBC
+ bl OS_WaitVBlankIntr
+ ldr r0, _021E0708 ; =0x00000758
+ add r3, r5, #0
+ ldr r0, [r5, r0]
+ ldr r2, _021E070C ; =0x000004D8
+ add r1, r4, #0
+ add r3, #0x80
+ bl MOD14_021DE980
+ ldr r0, _021E0708 ; =0x00000758
+ add r2, r5, #0
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ add r2, #0x4c
+ bl MOD14_021DE9D4
+ add r0, r5, #0
+ add r5, #0x4c
+ add r0, #0x80
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD14_021E0930
+ pop {r4, r5, r6, pc}
+_021E06A2:
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl MOD14_021DC3E8
+ add r4, r0, #0
+ ldr r0, _021E0710 ; =0x0000075C
+ add r1, r4, #0
+ ldr r0, [r5, r0]
+ bl MOD14_021E3158
+ add r6, r0, #0
+ add r1, r5, #0
+ mov r2, #0x5f
+ ldr r0, [r5, #0x48]
+ add r1, #0x4c
+ lsl r2, r2, #4
+ bl MOD14_021E0BBC
+ mov r2, #6
+ ldr r0, [r5, #0x48]
+ add r1, r6, #0
+ lsl r2, r2, #8
+ bl MOD14_021E0BBC
+ bl OS_WaitVBlankIntr
+ ldr r0, _021E0710 ; =0x0000075C
+ add r3, r5, #0
+ ldr r0, [r5, r0]
+ ldr r2, _021E070C ; =0x000004D8
+ add r1, r4, #0
+ add r3, #0x80
+ bl MOD14_021E3084
+ ldr r0, _021E0710 ; =0x0000075C
+ add r2, r5, #0
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ add r2, #0x4c
+ bl MOD14_021E3114
+ add r0, r5, #0
+ add r5, #0x4c
+ add r0, #0x80
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD14_021E0930
+ pop {r4, r5, r6, pc}
+ nop
+_021E0708: .word 0x00000758
+_021E070C: .word 0x000004D8
+_021E0710: .word 0x0000075C
+
+ thumb_func_start MOD14_021E0714
+MOD14_021E0714: ; 0x021E0714
+ ldr r1, _021E071C ; =0x0000078C
+ mov r2, #0
+ strb r2, [r0, r1]
+ bx lr
+ .align 2, 0
+_021E071C: .word 0x0000078C
+
+ thumb_func_start MOD14_021E0720
+MOD14_021E0720: ; 0x021E0720
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4, #0x48]
+ add r1, #0x4c
+ mov r2, #1
+ bl MOD14_021E0908
+ ldr r0, _021E073C ; =0x0000078C
+ mov r1, #0
+ strb r1, [r4, r0]
+ sub r0, #0x38
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021E073C: .word 0x0000078C
+
+ thumb_func_start MOD14_021E0740
+MOD14_021E0740: ; 0x021E0740
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021E076A
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC3E0
+ add r1, r0, #0
+ ldr r0, _021E0784 ; =0x00000758
+ ldr r0, [r4, r0]
+ bl MOD14_021DEA38
+ ldr r0, [r0]
+ pop {r4, pc}
+_021E076A:
+ mov r0, #0x79
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD14_021DC3E8
+ add r1, r0, #0
+ ldr r0, _021E0788 ; =0x0000075C
+ ldr r0, [r4, r0]
+ bl MOD14_021E3158
+ ldr r0, [r0]
+ pop {r4, pc}
+ nop
+_021E0784: .word 0x00000758
+_021E0788: .word 0x0000075C
+
+ thumb_func_start MOD14_021E078C
+MOD14_021E078C: ; 0x021E078C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ add r0, sp, #0x18
+ add r4, r1, #0
+ add r6, r2, #0
+ str r3, [sp, #8]
+ bl FUN_020B19DC
+ bl FUN_0206B888
+ add r1, r0, #0
+ mov r0, #0xa
+ str r0, [sp]
+ add r0, sp, #0x18
+ str r0, [sp, #4]
+ mov r0, #0x13
+ mov r2, #1
+ mov r3, #0x40
+ bl FUN_02006A8C
+ bl FUN_0206B888
+ add r1, r0, #0
+ mov r0, #0x13
+ add r2, sp, #0x14
+ mov r3, #0xa
+ bl FUN_02006C08
+ str r0, [sp, #0xc]
+ cmp r0, #0
+ beq _021E0818
+ add r0, sp, #0x18
+ bl FUN_020B19DC
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0x10
+ bl FUN_020B00F0
+ ldr r2, [sp, #0x14]
+ add r7, r0, #0
+ ldr r0, [r2, #0xc]
+ mov r1, #8
+ str r1, [sp]
+ ldr r2, [r2, #8]
+ ldr r3, _021E0898 ; =0x0000057F
+ add r1, r0, #0
+ lsr r2, r2, #1
+ bl MOD14_021DDE40
+ cmp r7, #0
+ beq _021E0806
+ add r0, sp, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x10]
+ mov r2, #0xc0
+ mov r3, #1
+ bl FUN_020B10E8
+ b _021E0812
+_021E0806:
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc0
+ mov r2, #1
+ add r3, sp, #0x18
+ bl FUN_020B1240
+_021E0812:
+ ldr r0, [sp, #0xc]
+ bl FUN_02016A18
+_021E0818:
+ mov r0, #0xa
+ add r3, r5, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0x15
+ mov r2, #1
+ add r3, #0x10
+ bl FUN_02006C30
+ str r0, [r5, #8]
+ mov r0, #0xa
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0x16
+ mov r2, #1
+ add r3, r5, #4
+ bl FUN_02006C5C
+ str r0, [r5]
+ mov r0, #0xa
+ add r3, r5, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0x17
+ mov r2, #1
+ add r3, #0x1c
+ bl FUN_02006C30
+ str r0, [r5, #0x14]
+ mov r0, #0xa
+ add r3, r5, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0x18
+ mov r2, #1
+ add r3, #0x20
+ bl FUN_02006C5C
+ str r0, [r5, #0x18]
+ mov r0, #0x13
+ mov r1, #0xa
+ bl FUN_02006670
+ str r0, [r5, #0x48]
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021E0882
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021E0882
+ ldr r0, [r5, #0x48]
+ cmp r0, #0
+ bne _021E0888
+_021E0882:
+ add sp, #0x2c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021E0888:
+ ldr r0, [sp, #8]
+ str r0, [r5, #0x24]
+ str r6, [r5, #0x40]
+ str r4, [r5, #0x44]
+ mov r0, #1
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E0898: .word 0x0000057F
+
+ thumb_func_start MOD14_021E089C
+MOD14_021E089C: ; 0x021E089C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021E08AE
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+_021E08AE:
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021E08BC
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4]
+_021E08BC:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021E08CA
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x14]
+_021E08CA:
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ beq _021E08D8
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x18]
+_021E08D8:
+ ldr r0, [r4, #0x48]
+ cmp r0, #0
+ beq _021E08E2
+ bl FUN_020066F4
+_021E08E2:
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E08E4
+MOD14_021E08E4: ; 0x021E08E4
+ push {r4, r5, r6, lr}
+ add r4, r2, #0
+ add r0, r4, #0
+ add r5, r1, #0
+ sub r4, r4, #1
+ cmp r0, #0
+ beq _021E0906
+ mov r6, #0
+_021E08F4:
+ add r0, r5, #4
+ str r6, [r5]
+ bl FUN_020B1A24
+ add r0, r4, #0
+ add r5, #0x34
+ sub r4, r4, #1
+ cmp r0, #0
+ bne _021E08F4
+_021E0906:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021E0908
+MOD14_021E0908: ; 0x021E0908
+ push {r4, r5, r6, lr}
+ add r4, r2, #0
+ add r0, r4, #0
+ add r5, r1, #0
+ sub r4, r4, #1
+ cmp r0, #0
+ beq _021E092E
+ mov r6, #0
+_021E0918:
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021E0924
+ bl FUN_0201FFC8
+ str r6, [r5]
+_021E0924:
+ add r0, r4, #0
+ add r5, #0x34
+ sub r4, r4, #1
+ cmp r0, #0
+ bne _021E0918
+_021E092E:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021E0930
+MOD14_021E0930: ; 0x021E0930
+ mov r3, #0x34
+ mul r3, r2
+ add r2, r3, #0
+ ldr r3, _021E093C ; =0x020CE210
+ bx r3
+ nop
+_021E093C: .word 0x020CE210
+
+ thumb_func_start MOD14_021E0940
+MOD14_021E0940: ; 0x021E0940
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ add r6, r1, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ str r2, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r4, [sp, #0x64]
+ bl FUN_02066A6C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x44]
+ bl MOD14_021DDD48
+ add r2, r0, #0
+ ldr r0, [r5, #4]
+ mov r1, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x58]
+ str r0, [sp, #4]
+ ldr r3, [r5, #0x10]
+ add r0, sp, #0x20
+ bl MOD14_021DDDB4
+ add r0, r6, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020672BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x18]
+ add r0, r6, #0
+ mov r1, #0x4c
+ mov r2, #0
+ bl FUN_020672BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020672BC
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ add r0, r6, #0
+ bl FUN_0206B688
+ str r0, [r4, #0x28]
+ ldr r0, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ add r1, r7, #0
+ bl FUN_0206B7BC
+ strh r0, [r4, #0x2c]
+ add r0, r6, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r4, #0x30]
+ add r0, r6, #0
+ mov r1, #0xb
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r4, #0x2e]
+ add r0, r4, #4
+ bl FUN_020B1A24
+ add r0, r5, #0
+ add r0, #0x4c
+ str r0, [sp]
+ mov r3, #0xa
+ ldr r0, [r5, #0x48]
+ ldr r1, [r4, #0x28]
+ mov r2, #0
+ lsl r3, r3, #6
+ bl FUN_02006814
+ add r0, r5, #0
+ add r0, #0x4c
+ add r1, sp, #0x1c
+ bl FUN_020B0088
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021E0A5C ; =0x00300010
+ add r3, r4, #4
+ and r1, r0
+ ldr r0, [sp, #0x1c]
+ str r1, [r0, #8]
+ lsr r1, r2, #0x11
+ ldr r0, [sp, #0x1c]
+ mov r2, #1
+ str r1, [r0, #0x10]
+ ldr r1, [sp, #0x60]
+ ldr r0, [sp, #0x1c]
+ lsl r1, r1, #5
+ bl FUN_020B1768
+ add r0, r4, #4
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x5c]
+ ldr r2, [sp, #8]
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x24]
+ ldr r3, [sp, #0xc]
+ add r1, sp, #0x20
+ bl MOD14_021DDDD4
+ str r0, [r4]
+ cmp r0, #0
+ bne _021E0A36
+ bl ErrorHandling
+_021E0A36:
+ ldrh r1, [r4, #0x2c]
+ ldr r0, [r4]
+ add r1, r1, #2
+ bl FUN_02020248
+ ldr r0, [r5, #0x40]
+ bl MOD14_021DC484
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD14_021E0B54
+ ldr r1, [sp, #0x10]
+ add r0, r6, #0
+ bl FUN_02066A94
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E0A5C: .word 0x00300010
+
+ thumb_func_start MOD14_021E0A60
+MOD14_021E0A60: ; 0x021E0A60
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r6, r1, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ str r2, [sp, #8]
+ add r7, r3, #0
+ ldr r4, [sp, #0x70]
+ bl FUN_02066A6C
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ mov r1, #0x4c
+ mov r2, #0
+ bl FUN_020672BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x10]
+ add r0, r6, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020672BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x44]
+ bl MOD14_021DDD48
+ add r2, r0, #0
+ ldr r0, [r5, #4]
+ mov r1, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x64]
+ str r0, [sp, #4]
+ ldr r3, [r5, #0x10]
+ add r0, sp, #0x1c
+ bl MOD14_021DDDB4
+ str r7, [r4, #0x28]
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ bl FUN_0206B7BC
+ strh r0, [r4, #0x2c]
+ add r0, r6, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r4, #0x30]
+ add r0, r6, #0
+ mov r1, #0xb
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r4, #0x2e]
+ add r0, r4, #4
+ bl FUN_020B1A24
+ ldr r0, [sp, #0x58]
+ add r1, sp, #0x18
+ bl FUN_020B0088
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021E0B50 ; =0x00300010
+ add r3, r4, #4
+ and r1, r0
+ ldr r0, [sp, #0x18]
+ str r1, [r0, #8]
+ lsr r1, r2, #0x11
+ ldr r0, [sp, #0x18]
+ mov r2, #1
+ str r1, [r0, #0x10]
+ ldr r1, [sp, #0x6c]
+ ldr r0, [sp, #0x18]
+ lsl r1, r1, #5
+ bl FUN_020B1768
+ add r0, r4, #4
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x68]
+ ldr r2, [sp, #0x5c]
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x24]
+ ldr r3, [sp, #0x60]
+ add r1, sp, #0x1c
+ bl MOD14_021DDDD4
+ str r0, [r4]
+ cmp r0, #0
+ bne _021E0B28
+ bl ErrorHandling
+_021E0B28:
+ ldrh r1, [r4, #0x2c]
+ ldr r0, [r4]
+ add r1, r1, #2
+ bl FUN_02020248
+ ldr r0, [r5, #0x40]
+ bl MOD14_021DC484
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD14_021E0B54
+ ldr r1, [sp, #0x14]
+ add r0, r6, #0
+ bl FUN_02066A94
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E0B50: .word 0x00300010
+
+ thumb_func_start MOD14_021E0B54
+MOD14_021E0B54: ; 0x021E0B54
+ push {r4, r5, r6, lr}
+ cmp r2, #0
+ beq _021E0B9A
+ mov r3, #1
+ add r0, r2, #0
+ tst r0, r3
+ beq _021E0B72
+ ldrh r0, [r1, #0x30]
+ cmp r0, #0
+ bne _021E0B72
+ ldr r0, [r1]
+ add r1, r3, #0
+ bl FUN_02020398
+ pop {r4, r5, r6, pc}
+_021E0B72:
+ mov r3, #0
+ mov r4, #1
+ mov r0, #2
+_021E0B78:
+ add r5, r0, #0
+ lsl r5, r3
+ tst r5, r2
+ beq _021E0B94
+ add r5, r4, #0
+ ldrh r6, [r1, #0x2e]
+ lsl r5, r3
+ tst r5, r6
+ bne _021E0B94
+ ldr r0, [r1]
+ add r1, r4, #0
+ bl FUN_02020398
+ pop {r4, r5, r6, pc}
+_021E0B94:
+ add r3, r3, #1
+ cmp r3, #6
+ blt _021E0B78
+_021E0B9A:
+ ldr r0, [r1]
+ mov r1, #0
+ bl FUN_02020398
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021E0BA4
+MOD14_021E0BA4: ; 0x021E0BA4
+ strh r2, [r1, #0x2e]
+ bx lr
+
+ thumb_func_start MOD14_021E0BA8
+MOD14_021E0BA8: ; 0x021E0BA8
+ strh r2, [r1, #0x30]
+ bx lr
+
+ thumb_func_start MOD14_021E0BAC
+MOD14_021E0BAC: ; 0x021E0BAC
+ push {r3, lr}
+ str r1, [sp]
+ ldr r0, [r0, #0x48]
+ add r1, r2, #0
+ mov r2, #0
+ bl FUN_02006814
+ pop {r3, pc}
+
+ thumb_func_start MOD14_021E0BBC
+MOD14_021E0BBC: ; 0x021E0BBC
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r6, r2, #0
+ cmp r0, #0
+ beq _021E0C18
+ add r0, r4, #4
+ bl FUN_020B1A24
+ add r0, r5, #0
+ add r0, #0x4c
+ str r0, [sp]
+ mov r3, #0xa
+ ldr r0, [r5, #0x48]
+ ldr r1, [r4, #0x28]
+ mov r2, #0
+ lsl r3, r3, #6
+ bl FUN_02006814
+ add r5, #0x4c
+ add r0, r5, #0
+ add r1, sp, #4
+ bl FUN_020B0088
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021E0C1C ; =0x00300010
+ add r3, r4, #4
+ and r1, r0
+ ldr r0, [sp, #4]
+ str r1, [r0, #8]
+ lsr r1, r2, #0x11
+ ldr r0, [sp, #4]
+ mov r2, #1
+ str r1, [r0, #0x10]
+ ldr r0, [sp, #4]
+ lsl r1, r6, #5
+ bl FUN_020B1768
+ ldr r0, [r4]
+ add r1, r4, #4
+ bl FUN_02020334
+_021E0C18:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021E0C1C: .word 0x00300010
+
+ thumb_func_start MOD14_021E0C20
+MOD14_021E0C20: ; 0x021E0C20
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ add r5, r1, #0
+ sub r0, r4, #1
+ cmp r0, #1
+ ldr r0, [r5]
+ bhi _021E0C36
+ mov r1, #1
+ bl FUN_020200EC
+ b _021E0C3C
+_021E0C36:
+ mov r1, #0
+ bl FUN_020200EC
+_021E0C3C:
+ ldr r0, [r5]
+ add r1, r4, #0
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E0C48
+MOD14_021E0C48: ; 0x021E0C48
+ push {r3, lr}
+ ldr r0, [r1]
+ bl FUN_02020388
+ cmp r0, #0
+ bne _021E0C58
+ mov r0, #1
+ pop {r3, pc}
+_021E0C58:
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD14_021E0C5C
+MOD14_021E0C5C: ; 0x021E0C5C
+ cmp r2, #0
+ beq _021E0C64
+ mov r2, #6
+ b _021E0C66
+_021E0C64:
+ mov r2, #2
+_021E0C66:
+ ldr r0, [r1]
+ ldrh r1, [r1, #0x2c]
+ ldr r3, _021E0C70 ; =0x02020249
+ add r1, r1, r2
+ bx r3
+ .align 2, 0
+_021E0C70: .word 0x02020249
+
+ thumb_func_start MOD14_021E0C74
+MOD14_021E0C74: ; 0x021E0C74
+ ldr r0, [r0, #0x10]
+ bx lr
+
+ thumb_func_start MOD14_021E0C78
+MOD14_021E0C78: ; 0x021E0C78
+ ldr r0, [r0, #4]
+ bx lr
+
+ thumb_func_start MOD14_021E0C7C
+MOD14_021E0C7C: ; 0x021E0C7C
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ str r1, [r4, #0x44]
+ str r3, [r4, #0x3c]
+ str r2, [r4, #0x40]
+ str r3, [r4]
+ mov r0, #0
+ str r0, [r4, #4]
+ mov r1, #0xa
+ add r3, r4, #0
+ str r1, [sp]
+ mov r0, #0x12
+ mov r2, #1
+ add r3, #0x10
+ bl FUN_02006C30
+ str r0, [r4, #8]
+ mov r0, #0xa
+ add r3, r4, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0xb
+ mov r2, #1
+ add r3, #0x14
+ bl FUN_02006C5C
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021E0CC0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ bne _021E0CC6
+_021E0CC0:
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, pc}
+_021E0CC6:
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD14_021E0CCC
+MOD14_021E0CCC: ; 0x021E0CCC
+ push {r4, lr}
+ sub sp, #0x38
+ add r4, r0, #0
+ add r0, #0x18
+ bl FUN_020B1A24
+ mov r3, #0
+ mov r0, #0x9d
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ lsl r0, r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0x18
+ str r0, [sp, #0x10]
+ mov r0, #0x12
+ mov r1, #9
+ bl FUN_02006AE4
+ ldr r0, [r4, #0x44]
+ bl MOD14_021DDD48
+ add r2, r0, #0
+ ldr r0, [r4, #0x14]
+ add r1, r4, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r3, [r4, #0x10]
+ add r0, sp, #0x14
+ add r1, #0x18
+ bl MOD14_021DDDB4
+ ldr r0, [r4, #0x44]
+ bl MOD14_021DDD98
+ add r2, r0, #0
+ mov r0, #0x2c
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0x14
+ add r2, #0xb7
+ mov r3, #0xb0
+ bl MOD14_021DDDD4
+ mov r1, #1
+ str r0, [r4, #4]
+ bl FUN_02020248
+ add sp, #0x38
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E0D3C
+MOD14_021E0D3C: ; 0x021E0D3C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021E0D4E
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+_021E0D4E:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021E0D5C
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0xc]
+_021E0D5C:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E0D60
+MOD14_021E0D60: ; 0x021E0D60
+ push {r3, lr}
+ cmp r1, #0
+ beq _021E0D70
+ cmp r1, #1
+ beq _021E0D7A
+ cmp r1, #2
+ beq _021E0D84
+ pop {r3, pc}
+_021E0D70:
+ ldr r0, [r0, #4]
+ mov r1, #0
+ bl FUN_02020130
+ pop {r3, pc}
+_021E0D7A:
+ ldr r0, [r0, #4]
+ mov r1, #1
+ bl FUN_02020130
+ pop {r3, pc}
+_021E0D84:
+ ldr r0, [r0, #4]
+ mov r1, #2
+ bl FUN_02020130
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E0D90
+MOD14_021E0D90: ; 0x021E0D90
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r2, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r1, #0
+ add r7, r3, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ bne _021E0DAC
+ mov r0, #0
+ str r0, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0DAC:
+ str r4, [r5, #0x14]
+ str r7, [r5, #8]
+ ldr r0, [sp, #0x18]
+ str r6, [r5, #0x10]
+ str r0, [r5, #0xc]
+ mov r0, #0
+ str r0, [r5, #4]
+ str r0, [r5, #0x4c]
+ str r0, [r5, #0x24]
+ add r0, r4, #0
+ bl MOD14_021DDD90
+ str r0, [r5, #0x20]
+ mov r0, #9
+ mov r1, #6
+ mov r2, #0xf
+ mov r3, #0xa
+ bl FUN_0200B870
+ str r0, [r5, #0x18]
+ mov r0, #1
+ mov r1, #2
+ mov r2, #0xf
+ mov r3, #0xa
+ bl FUN_0200B870
+ str r0, [r5, #0x1c]
+ mov r0, #0xa
+ add r3, r5, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0x10
+ mov r2, #1
+ add r3, #0x2c
+ bl FUN_02006C30
+ str r0, [r5, #0x28]
+ mov r0, #0
+ str r0, [r5, #0x30]
+ ldr r0, [sp, #0x1c]
+ mov r1, #0x15
+ bl FUN_0200A914
+ str r0, [r5, #0x44]
+ ldr r0, [sp, #0x1c]
+ mov r1, #0x16
+ bl FUN_0200A914
+ str r0, [r5, #0x48]
+ bl FUN_0206E12C
+ add r4, r0, #0
+ bl FUN_0206E10C
+ add r1, r0, #0
+ mov r0, #0xa
+ add r3, r5, #0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #1
+ add r3, #0x38
+ bl FUN_02006C30
+ mov r1, #0
+ str r0, [r5, #0x34]
+ add r2, r5, #0
+ add r0, r1, #0
+_021E0E32:
+ add r1, r1, #1
+ str r0, [r2, #0x3c]
+ add r2, r2, #4
+ cmp r1, #2
+ blt _021E0E32
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E0E44
+MOD14_021E0E44: ; 0x021E0E44
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021E0EE2
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _021E0E72
+ mov r6, #0
+ add r4, r6, #0
+_021E0E58:
+ ldr r0, [r5, #4]
+ add r0, r0, r4
+ bl FUN_02019178
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, #4
+ blt _021E0E58
+ ldr r0, [r5, #4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r5, #4]
+_021E0E72:
+ ldr r0, [r5, #0x18]
+ cmp r0, #0
+ beq _021E0E7C
+ bl FUN_0200B990
+_021E0E7C:
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _021E0E86
+ bl FUN_0200B990
+_021E0E86:
+ ldr r0, [r5, #0x44]
+ cmp r0, #0
+ beq _021E0E90
+ bl FUN_02021A20
+_021E0E90:
+ ldr r0, [r5, #0x48]
+ cmp r0, #0
+ beq _021E0E9A
+ bl FUN_02021A20
+_021E0E9A:
+ ldr r0, [r5, #0x24]
+ cmp r0, #0
+ beq _021E0EA8
+ bl FUN_02007534
+ mov r0, #0
+ str r0, [r5, #0x24]
+_021E0EA8:
+ ldr r0, [r5, #0x28]
+ cmp r0, #0
+ beq _021E0EB2
+ bl FUN_02016A18
+_021E0EB2:
+ ldr r0, [r5, #0x30]
+ cmp r0, #0
+ beq _021E0EBC
+ bl FUN_0201FFC8
+_021E0EBC:
+ ldr r0, [r5, #0x34]
+ cmp r0, #0
+ beq _021E0EC6
+ bl FUN_02016A18
+_021E0EC6:
+ mov r6, #0
+ add r4, r5, #0
+_021E0ECA:
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0
+ beq _021E0ED4
+ bl FUN_0201FFC8
+_021E0ED4:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #2
+ blt _021E0ECA
+ add r0, r5, #0
+ bl MOD14_021E10F4
+_021E0EE2:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021E0EE4
+MOD14_021E0EE4: ; 0x021E0EE4
+ push {r3, lr}
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _021E0EF2
+ ldr r0, [r0, #0x20]
+ bl FUN_020081C4
+_021E0EF2:
+ pop {r3, pc}
+
+ thumb_func_start MOD14_021E0EF4
+MOD14_021E0EF4: ; 0x021E0EF4
+ push {r4, lr}
+ sub sp, #0x20
+ mov r2, #0
+ str r2, [sp]
+ add r4, r0, #0
+ str r2, [sp, #4]
+ add r0, sp, #0x10
+ mov r1, #1
+ add r3, r2, #0
+ str r2, [sp, #8]
+ bl FUN_02068C00
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x20]
+ add r1, sp, #0x10
+ mov r2, #0x2c
+ mov r3, #0x54
+ bl FUN_020073A0
+ str r0, [r4, #0x24]
+ add sp, #0x20
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E0F28
+MOD14_021E0F28: ; 0x021E0F28
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021E0F3C
+ bl FUN_02007534
+ mov r0, #0
+ str r0, [r4, #0x24]
+ pop {r4, pc}
+_021E0F3C:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E0F40
+MOD14_021E0F40: ; 0x021E0F40
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021E0FA0
+ mov r0, #0xa
+ mov r1, #4
+ bl FUN_02018FF4
+ str r0, [r5, #4]
+ cmp r0, #0
+ beq _021E0F94
+ mov r7, #0
+ ldr r6, _021E0FA4 ; =0x021E65F4
+ add r4, r7, #0
+_021E0F5E:
+ ldr r1, [r5, #4]
+ ldr r0, [r5, #8]
+ add r1, r1, r4
+ add r2, r6, #0
+ bl FUN_02019150
+ cmp r7, #3
+ ldr r0, [r5, #4]
+ beq _021E0F78
+ add r0, r0, r4
+ bl FUN_02019270
+ b _021E0F82
+_021E0F78:
+ add r0, r0, r4
+ mov r1, #0xc
+ mov r2, #2
+ bl FUN_0201928C
+_021E0F82:
+ add r7, r7, #1
+ add r6, #8
+ add r4, #0x10
+ cmp r7, #4
+ blt _021E0F5E
+ ldr r0, [r5, #8]
+ mov r1, #2
+ bl FUN_02017CD0
+_021E0F94:
+ add r0, r5, #0
+ bl MOD14_021E0FA8
+ add r0, r5, #0
+ bl MOD14_021E10B0
+_021E0FA0:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E0FA4: .word 0x021E65F4
+
+ thumb_func_start MOD14_021E0FA8
+MOD14_021E0FA8: ; 0x021E0FA8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x68
+ add r5, r0, #0
+ bl FUN_0206E12C
+ str r0, [sp, #0x1c]
+ mov r0, #2
+ bl FUN_0206E0F0
+ str r0, [sp, #0x18]
+ bl FUN_0206E108
+ add r1, r0, #0
+ mov r0, #0x60
+ str r0, [sp]
+ mov r3, #0xa
+ str r3, [sp, #4]
+ ldr r0, [sp, #0x1c]
+ mov r2, #1
+ lsl r3, r3, #5
+ bl FUN_02006930
+ mov r0, #0
+ mov r6, #0x5e
+ str r0, [sp, #0x14]
+ lsl r6, r6, #4
+ mov r7, #0x18
+ add r4, r5, #0
+_021E0FE0:
+ add r0, sp, #0x44
+ bl FUN_020B1A24
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ lsl r0, r6, #5
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ add r0, sp, #0x44
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ mov r2, #1
+ mov r3, #0
+ bl FUN_02006B38
+ ldr r0, [r5, #0x14]
+ bl MOD14_021DDD48
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ ldr r3, [r5, #0x38]
+ add r0, sp, #0x20
+ add r1, sp, #0x44
+ bl MOD14_021DDDB4
+ mov r0, #0x2e
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #0xc]
+ add r1, sp, #0x20
+ add r2, r7, #0
+ mov r3, #0xb0
+ bl MOD14_021DDDD4
+ str r0, [r4, #0x3c]
+ cmp r0, #0
+ bne _021E103E
+ bl ErrorHandling
+_021E103E:
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [sp, #0x14]
+ add r6, #8
+ add r0, r0, #1
+ add r7, #0x24
+ add r4, r4, #4
+ str r0, [sp, #0x14]
+ cmp r0, #2
+ blo _021E0FE0
+ add r0, sp, #0x44
+ bl FUN_020B1A24
+ mov r3, #0
+ mov r0, #0xb9
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ lsl r0, r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ add r0, sp, #0x44
+ str r0, [sp, #0x10]
+ mov r0, #0x12
+ mov r1, #0xf
+ bl FUN_02006AE4
+ ldr r0, [r5, #0x14]
+ bl MOD14_021DDD48
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ ldr r3, [r5, #0x2c]
+ add r0, sp, #0x20
+ add r1, sp, #0x44
+ bl MOD14_021DDDB4
+ mov r0, #0x2f
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #0xc]
+ add r1, sp, #0x20
+ mov r2, #0x38
+ mov r3, #0xb0
+ bl MOD14_021DDDD4
+ str r0, [r5, #0x30]
+ add sp, #0x68
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E10B0
+MOD14_021E10B0: ; 0x021E10B0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x4c]
+ cmp r0, #0
+ bne _021E10EE
+ mov r0, #0xa
+ mov r1, #0xc
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021E10EA
+ ldr r0, [r5, #0x10]
+ bl MOD14_021DC42C
+ ldrb r0, [r0, #0xf]
+ cmp r0, #0
+ beq _021E10D6
+ mov r0, #4
+ b _021E10D8
+_021E10D6:
+ mov r0, #0
+_021E10D8:
+ strh r0, [r4]
+ ldr r0, _021E10F0 ; =MOD14_021E115C
+ str r5, [r4, #8]
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ str r0, [r5, #0x4c]
+ pop {r3, r4, r5, pc}
+_021E10EA:
+ bl ErrorHandling
+_021E10EE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E10F0: .word MOD14_021E115C
+
+ thumb_func_start MOD14_021E10F4
+MOD14_021E10F4: ; 0x021E10F4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x4c]
+ cmp r0, #0
+ beq _021E1110
+ bl FUN_0201B6C8
+ bl FUN_02016A18
+ ldr r0, [r4, #0x4c]
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x4c]
+_021E1110:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E1114
+MOD14_021E1114: ; 0x021E1114
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x4c]
+ bl FUN_0201B6C8
+ add r4, r0, #0
+ beq _021E113C
+ ldr r0, [r5, #0x10]
+ bl MOD14_021DC42C
+ ldrb r0, [r0, #0xf]
+ cmp r0, #0
+ beq _021E1132
+ mov r0, #4
+ b _021E1134
+_021E1132:
+ mov r0, #0
+_021E1134:
+ strh r0, [r4]
+ add r0, r5, #0
+ bl MOD14_021E1268
+_021E113C:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E1140
+MOD14_021E1140: ; 0x021E1140
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x4c]
+ bl FUN_0201B6C8
+ cmp r0, #0
+ beq _021E1158
+ mov r1, #4
+ strh r1, [r0]
+ add r0, r4, #0
+ bl MOD14_021E1268
+_021E1158:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E115C
+MOD14_021E115C: ; 0x021E115C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrh r0, [r4]
+ ldr r5, [r4, #8]
+ cmp r0, #4
+ bhi _021E1220
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E1174: ; jump table
+ .short _021E117E - _021E1174 - 2 ; case 0
+ .short _021E1190 - _021E1174 - 2 ; case 1
+ .short _021E11B0 - _021E1174 - 2 ; case 2
+ .short _021E11CE - _021E1174 - 2 ; case 3
+ .short _021E1220 - _021E1174 - 2 ; case 4
+_021E117E:
+ ldr r0, [r5, #0x10]
+ bl MOD14_021DC408
+ cmp r0, #0
+ beq _021E1220
+ mov r0, #0
+ strh r0, [r4, #2]
+ mov r0, #1
+ strh r0, [r4]
+_021E1190:
+ ldr r0, [r5, #4]
+ ldrh r2, [r4, #2]
+ add r0, #0x30
+ add r1, r5, #0
+ mov r3, #0
+ bl MOD14_021E12B8
+ ldr r0, [r5, #4]
+ add r0, #0x30
+ bl FUN_02019548
+ mov r0, #0
+ strh r0, [r4, #4]
+ mov r0, #2
+ strh r0, [r4]
+ pop {r3, r4, r5, pc}
+_021E11B0:
+ ldrh r0, [r4, #4]
+ add r0, r0, #1
+ strh r0, [r4, #4]
+ ldrh r0, [r4, #4]
+ cmp r0, #0x50
+ bls _021E1220
+ add r0, r4, #0
+ bl MOD14_021E1284
+ mov r0, #0
+ strh r0, [r4, #4]
+ strh r0, [r4, #6]
+ mov r0, #3
+ strh r0, [r4]
+ pop {r3, r4, r5, pc}
+_021E11CE:
+ ldrh r0, [r4, #6]
+ mov r1, #1
+ lsl r1, r1, #0xe
+ add r0, r0, #4
+ strh r0, [r4, #6]
+ add r0, r5, #0
+ bl MOD14_021E1224
+ ldr r0, [r5, #4]
+ mov r1, #0
+ add r0, #0x30
+ mov r2, #4
+ add r3, r1, #0
+ bl FUN_0201A8C8
+ ldr r0, [r5, #4]
+ add r0, #0x30
+ bl FUN_02019548
+ ldrh r0, [r4, #6]
+ cmp r0, #0x10
+ blo _021E1220
+ ldrh r0, [r4, #2]
+ cmp r0, #1
+ bne _021E1206
+ add r0, r5, #0
+ bl MOD14_021E1268
+_021E1206:
+ ldrh r0, [r4, #2]
+ add r0, r0, #1
+ strh r0, [r4, #2]
+ ldrh r0, [r4, #2]
+ cmp r0, #4
+ blo _021E1216
+ mov r0, #0
+ strh r0, [r4, #2]
+_021E1216:
+ mov r0, #0
+ strh r0, [r4, #6]
+ strh r0, [r4, #4]
+ mov r0, #2
+ strh r0, [r4]
+_021E1220:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E1224
+MOD14_021E1224: ; 0x021E1224
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r7, r1, #0
+ mov r4, #0
+_021E122E:
+ ldr r0, [r5, #0x3c]
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r2, #0
+ str r0, [r3]
+ ldr r0, [sp, #4]
+ sub r0, r0, r7
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x3c]
+ bl FUN_02020044
+ cmp r4, #0
+ bne _021E125A
+ ldr r0, [r5, #0x3c]
+ bl FUN_02020128
+_021E125A:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021E122E
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E1268
+MOD14_021E1268: ; 0x021E1268
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_021E1270:
+ ldr r0, [r5, #0x3c]
+ add r1, r6, #0
+ bl FUN_020200A0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021E1270
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E1284
+MOD14_021E1284: ; 0x021E1284
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ mov r1, #0
+ ldr r4, [r0, #4]
+ add r4, #0x30
+ add r0, r4, #0
+ bl FUN_02019620
+ ldrh r2, [r5, #2]
+ ldr r1, [r5, #8]
+ add r0, r4, #0
+ mov r3, #0
+ bl MOD14_021E12B8
+ ldrh r0, [r5, #2]
+ add r2, r0, #1
+ cmp r2, #4
+ blo _021E12AC
+ mov r2, #0
+_021E12AC:
+ ldr r1, [r5, #8]
+ add r0, r4, #0
+ mov r3, #1
+ bl MOD14_021E12B8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021E12B8
+MOD14_021E12B8: ; 0x021E12B8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x1c
+ add r4, r1, #0
+ lsl r5, r3, #4
+ cmp r2, #3
+ bls _021E12C6
+ b _021E13E6
+_021E12C6:
+ add r1, r2, r2
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E12D2: ; jump table
+ .short _021E12DA - _021E12D2 - 2 ; case 0
+ .short _021E12EC - _021E12D2 - 2 ; case 1
+ .short _021E12E0 - _021E12D2 - 2 ; case 2
+ .short _021E12E6 - _021E12D2 - 2 ; case 3
+_021E12DA:
+ ldr r1, [r4, #0x10]
+ ldr r2, [r1, #0x68]
+ b _021E13D2
+_021E12E0:
+ ldr r1, [r4, #0x10]
+ ldr r2, [r1, #0x6c]
+ b _021E13D2
+_021E12E6:
+ ldr r1, [r4, #0x10]
+ ldr r2, [r1, #0x70]
+ b _021E13D2
+_021E12EC:
+ bl FUN_0206E12C
+ ldr r0, [r4, #0x10]
+ add r0, #0x58
+ ldrb r0, [r0]
+ bl FUN_0206E0F0
+ bl FUN_0206E12C
+ add r6, r0, #0
+ ldr r0, [r4, #0x10]
+ add r0, #0x58
+ ldrb r0, [r0]
+ bl FUN_0206E0F0
+ mov r2, #0
+ add r1, r0, #0
+ mov r3, #0x2f
+ str r2, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ add r0, r6, #0
+ lsl r3, r3, #0xa
+ bl FUN_02006A34
+ ldr r0, [r4, #0x3c]
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0x10
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ add r5, #0xb0
+ str r0, [r3]
+ lsl r0, r5, #0xc
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0x3c]
+ add r1, r2, #0
+ bl FUN_02020044
+ ldr r0, [r4, #0x10]
+ add r0, #0x58
+ ldrb r0, [r0]
+ bl FUN_0206E114
+ add r1, r0, #0
+ ldr r0, [r4, #0x3c]
+ add r1, #0xa
+ bl FUN_02020248
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r1, [r4, #0x10]
+ add r0, r1, #0
+ add r0, #0x59
+ add r1, #0x58
+ ldrb r5, [r0]
+ ldrb r0, [r1]
+ cmp r0, r5
+ beq _021E13C6
+ bl FUN_0206E12C
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_0206E0F0
+ mov r2, #0
+ add r1, r0, #0
+ mov r3, #0xbd
+ str r2, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ add r0, r6, #0
+ lsl r3, r3, #8
+ bl FUN_02006A34
+ mov r0, #9
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x40]
+ add r1, sp, #0x10
+ bl FUN_02020044
+ ldr r0, [r4, #0x10]
+ add r0, #0x59
+ ldrb r0, [r0]
+ bl FUN_0206E114
+ add r1, r0, #0
+ ldr r0, [r4, #0x40]
+ add r1, #0xa
+ bl FUN_02020248
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl FUN_020200A0
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+_021E13C6:
+ ldr r0, [r4, #0x40]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+_021E13D2:
+ str r5, [sp]
+ mov r1, #0xff
+ str r1, [sp, #4]
+ ldr r1, _021E13EC ; =0x00090600
+ str r1, [sp, #8]
+ mov r1, #0
+ add r3, r1, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+_021E13E6:
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E13EC: .word 0x00090600
+
+ thumb_func_start MOD14_021E13F0
+MOD14_021E13F0: ; 0x021E13F0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021E144E
+ ldr r0, [r4, #4]
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r0, [r4, #4]
+ mov r1, #0xf
+ add r0, #0x10
+ bl FUN_02019620
+ ldr r0, [r4, #4]
+ mov r1, #0xf
+ add r0, #0x20
+ bl FUN_02019620
+ ldr r0, [r4, #4]
+ mov r1, #0
+ add r0, #0x30
+ bl FUN_02019620
+ ldr r0, [r4, #0x10]
+ bl MOD14_021DC408
+ cmp r0, #0
+ beq _021E1430
+ add r0, r4, #0
+ bl MOD14_021E153C
+_021E1430:
+ ldr r0, [r4, #4]
+ bl FUN_02019548
+ ldr r0, [r4, #4]
+ add r0, #0x10
+ bl FUN_02019548
+ ldr r0, [r4, #4]
+ add r0, #0x20
+ bl FUN_02019548
+ ldr r0, [r4, #4]
+ add r0, #0x30
+ bl FUN_02019548
+_021E144E:
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E1450
+MOD14_021E1450: ; 0x021E1450
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021E14CC
+ ldr r0, [r4, #4]
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r0, [r4, #4]
+ mov r1, #0xf
+ add r0, #0x10
+ bl FUN_02019620
+ ldr r0, [r4, #4]
+ mov r1, #0xf
+ add r0, #0x20
+ bl FUN_02019620
+ ldr r0, [r4, #4]
+ mov r1, #0
+ add r0, #0x30
+ bl FUN_02019620
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021E148E
+ bl FUN_02007534
+ mov r0, #0
+ str r0, [r4, #0x24]
+_021E148E:
+ ldr r0, [r4, #0x10]
+ bl MOD14_021DC408
+ cmp r0, #0
+ beq _021E14A0
+ add r0, r4, #0
+ bl MOD14_021E153C
+ b _021E14A8
+_021E14A0:
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021E16A0
+_021E14A8:
+ ldr r0, [r4, #4]
+ bl FUN_02019548
+ ldr r0, [r4, #4]
+ add r0, #0x10
+ bl FUN_02019548
+ ldr r0, [r4, #4]
+ add r0, #0x20
+ bl FUN_02019548
+ ldr r0, [r4, #4]
+ add r0, #0x30
+ bl FUN_02019548
+ add r0, r4, #0
+ bl MOD14_021E1114
+_021E14CC:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E14D0
+MOD14_021E14D0: ; 0x021E14D0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021E153A
+ ldr r0, [r4, #4]
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r0, [r4, #4]
+ mov r1, #0xf
+ add r0, #0x10
+ bl FUN_02019620
+ ldr r0, [r4, #4]
+ mov r1, #0xf
+ add r0, #0x20
+ bl FUN_02019620
+ ldr r0, [r4, #4]
+ mov r1, #0
+ add r0, #0x30
+ bl FUN_02019620
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021E150E
+ bl FUN_02007534
+ mov r0, #0
+ str r0, [r4, #0x24]
+_021E150E:
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021E16A0
+ ldr r0, [r4, #4]
+ bl FUN_02019548
+ ldr r0, [r4, #4]
+ add r0, #0x10
+ bl FUN_02019548
+ ldr r0, [r4, #4]
+ add r0, #0x20
+ bl FUN_02019548
+ ldr r0, [r4, #4]
+ add r0, #0x30
+ bl FUN_02019548
+ add r0, r4, #0
+ bl MOD14_021E1140
+_021E153A:
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E153C
+MOD14_021E153C: ; 0x021E153C
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ bl MOD14_021DC42C
+ mov r1, #0
+ add r4, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E1660 ; =0x0009060F
+ mov r3, #2
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5, #4]
+ ldr r2, [r4, #0x18]
+ bl FUN_0201BDE0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E1664 ; =0x0001020F
+ mov r3, #2
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5, #4]
+ ldr r2, [r4, #0x14]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E1664 ; =0x0001020F
+ mov r3, #2
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5, #4]
+ ldr r2, [r4, #0x14]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ ldrb r0, [r4, #0xe]
+ cmp r0, #0
+ beq _021E15A2
+ cmp r0, #1
+ beq _021E15BE
+ b _021E15D8
+_021E15A2:
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E1668 ; =0x0007080F
+ mov r3, #0x46
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5, #4]
+ ldr r2, [r5, #0x44]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ b _021E15D8
+_021E15BE:
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E166C ; =0x0003040F
+ mov r3, #0x46
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5, #4]
+ ldr r2, [r5, #0x48]
+ add r0, #0x20
+ bl FUN_0201BDE0
+_021E15D8:
+ ldrb r0, [r4, #0xf]
+ cmp r0, #0
+ bne _021E1632
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E1670 ; =0x00090600
+ add r3, r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5, #4]
+ ldr r2, [r4, #0x1c]
+ add r0, #0x30
+ bl FUN_0201BDE0
+ ldrh r2, [r4, #8]
+ cmp r2, #0
+ beq _021E1616
+ mov r1, #2
+ str r1, [sp]
+ ldr r0, [r5, #4]
+ mov r3, #3
+ add r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ bl FUN_0200BA78
+_021E1616:
+ mov r1, #1
+ str r1, [sp]
+ ldr r0, [r5, #4]
+ mov r3, #3
+ add r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldrb r2, [r4, #0xa]
+ ldr r0, [r5, #0x1c]
+ bl FUN_0200BA78
+_021E1632:
+ ldr r1, [r4]
+ add r0, sp, #0x10
+ mov r2, #2
+ bl FUN_02068B70
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x20]
+ add r1, sp, #0x10
+ mov r2, #0x2c
+ mov r3, #0x54
+ bl FUN_020073A0
+ str r0, [r5, #0x24]
+ ldrb r1, [r4, #0xb]
+ add r0, r5, #0
+ bl MOD14_021E16A0
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E1660: .word 0x0009060F
+_021E1664: .word 0x0001020F
+_021E1668: .word 0x0007080F
+_021E166C: .word 0x0003040F
+_021E1670: .word 0x00090600
+
+ thumb_func_start MOD14_021E1674
+MOD14_021E1674: ; 0x021E1674
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD14_021E1678
+MOD14_021E1678: ; 0x021E1678
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021E169C
+ ldr r0, [r4, #0x10]
+ bl MOD14_021DC408
+ cmp r0, #0
+ beq _021E169C
+ ldr r0, [r4, #0x10]
+ bl MOD14_021DC42C
+ add r1, r0, #0
+ ldrb r1, [r1, #0xb]
+ add r0, r4, #0
+ bl MOD14_021E16A0
+_021E169C:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E16A0
+MOD14_021E16A0: ; 0x021E16A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp, #4]
+ add r4, r1, #0
+ ldr r0, [r0, #8]
+ mov r1, #2
+ bl FUN_0201886C
+ mov ip, r0
+ add r2, r0, #0
+ mov r0, #1
+ ldr r6, _021E1700 ; =0x000004C8
+ mov r1, #0
+ lsl r7, r0, #0xd
+_021E16BC:
+ add r3, r0, #0
+ lsl r3, r1
+ tst r3, r4
+ beq _021E16CE
+ add r3, r1, #0
+ add r3, #0x98
+ orr r3, r7
+ strh r3, [r2, r6]
+ b _021E16DC
+_021E16CE:
+ add r5, r1, #0
+ mov r3, #2
+ add r5, #0x84
+ lsl r3, r3, #0xc
+ orr r5, r3
+ ldr r3, _021E1700 ; =0x000004C8
+ strh r5, [r2, r3]
+_021E16DC:
+ add r1, r1, #1
+ add r2, r2, #2
+ cmp r1, #6
+ blt _021E16BC
+ mov r2, #0x99
+ lsl r2, r2, #2
+ ldr r0, [sp, #4]
+ str r2, [sp]
+ lsl r3, r2, #1
+ mov r2, ip
+ add r2, r2, r3
+ ldr r0, [r0, #8]
+ mov r1, #2
+ mov r3, #0xc
+ bl FUN_02017CE8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E1700: .word 0x000004C8
+
+ thumb_func_start MOD14_021E1704
+MOD14_021E1704: ; 0x021E1704
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021E1748
+ ldr r0, [r5, #0x10]
+ bl MOD14_021DC42C
+ add r4, r0, #0
+ ldr r0, [r5, #4]
+ mov r1, #0
+ add r0, #0x30
+ bl FUN_02019620
+ ldrb r0, [r4, #0xf]
+ cmp r0, #0
+ bne _021E1742
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E174C ; =0x00090600
+ add r3, r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5, #4]
+ ldr r2, [r4, #0x1c]
+ add r0, #0x30
+ bl FUN_0201BDE0
+_021E1742:
+ add r0, r5, #0
+ bl MOD14_021E1114
+_021E1748:
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E174C: .word 0x00090600
+
+ thumb_func_start MOD14_021E1750
+MOD14_021E1750: ; 0x021E1750
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ str r1, [r4, #0xc]
+ str r3, [r4]
+ str r2, [r4, #8]
+ ldr r0, [sp, #0x18]
+ mov r1, #0x1a
+ str r0, [r4, #0x2c]
+ ldr r0, [sp, #0x1c]
+ mov r2, #0xe
+ str r0, [r4, #0x20]
+ ldr r0, [sp, #0x14]
+ mov r3, #0xa
+ str r0, [r4, #0x10]
+ mov r0, #0
+ bl FUN_0200A86C
+ str r0, [r4, #0x14]
+ mov r0, #0x40
+ mov r1, #0xa
+ bl FUN_020219F4
+ str r0, [r4, #0x30]
+ mov r0, #0x40
+ mov r1, #0xa
+ bl FUN_020219F4
+ str r0, [r4, #0x34]
+ mov r0, #0
+ strh r0, [r4, #0x1c]
+ strh r0, [r4, #0x1e]
+ str r0, [r4, #0x18]
+ mov r0, #0xa
+ add r3, r4, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0x19
+ mov r2, #1
+ add r3, #0x28
+ bl FUN_02006BB0
+ str r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021E17B6
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _021E17B6
+ ldr r0, [r4, #0x34]
+ cmp r0, #0
+ bne _021E17BC
+_021E17B6:
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, pc}
+_021E17BC:
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E17C4
+MOD14_021E17C4: ; 0x021E17C4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ cmp r0, #0
+ beq _021E1814
+ mov r6, #0
+ add r4, r6, #0
+_021E17D2:
+ ldr r0, [r5, #0x18]
+ add r0, r0, r4
+ bl FUN_02019178
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, #2
+ blt _021E17D2
+ ldr r0, [r5, #0x24]
+ cmp r0, #0
+ beq _021E17EC
+ bl FUN_02016A18
+_021E17EC:
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ beq _021E17F6
+ bl FUN_0200A8B8
+_021E17F6:
+ ldr r0, [r5, #0x30]
+ cmp r0, #0
+ beq _021E1800
+ bl FUN_02021A20
+_021E1800:
+ ldr r0, [r5, #0x34]
+ cmp r0, #0
+ beq _021E180A
+ bl FUN_02021A20
+_021E180A:
+ ldr r0, [r5, #0x18]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r5, #0x18]
+_021E1814:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E1818
+MOD14_021E1818: ; 0x021E1818
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ mov r0, #0xa
+ mov r1, #2
+ bl FUN_02018FF4
+ str r0, [r6, #0x18]
+ cmp r0, #0
+ beq _021E1848
+ mov r7, #0
+ ldr r4, _021E1894 ; =0x021E6614
+ add r5, r7, #0
+_021E1832:
+ ldr r1, [r6, #0x18]
+ ldr r0, [r6]
+ add r1, r1, r5
+ add r2, r4, #0
+ bl FUN_02019150
+ add r7, r7, #1
+ add r4, #8
+ add r5, #0x10
+ cmp r7, #2
+ blt _021E1832
+_021E1848:
+ mov r0, #2
+ lsl r0, r0, #8
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ ldr r2, [r6]
+ mov r0, #0x26
+ mov r3, #1
+ bl FUN_0200687C
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #0x26
+ mov r1, #0x18
+ mov r2, #0
+ mov r3, #0xe0
+ bl FUN_02006930
+ ldr r0, [r6, #0x20]
+ ldr r2, _021E1898 ; =0x00000209
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ ldr r0, [r6]
+ mov r1, #1
+ mov r3, #8
+ bl FUN_0200CD68
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E1894: .word 0x021E6614
+_021E1898: .word 0x00000209
+
+ thumb_func_start MOD14_021E189C
+MOD14_021E189C: ; 0x021E189C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ add r4, r1, #0
+ bl FUN_02019270
+ ldr r3, [r5, #0x18]
+ ldrb r0, [r3, #7]
+ str r0, [sp]
+ ldrb r0, [r3, #8]
+ str r0, [sp, #4]
+ ldrb r1, [r3, #4]
+ ldrb r2, [r3, #5]
+ ldrb r3, [r3, #6]
+ ldr r0, [r5]
+ bl MOD14_021E1908
+ ldr r0, [r5, #0x18]
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r0, [r5, #0x10]
+ ldr r2, [r5, #0x30]
+ add r1, r4, #0
+ bl FUN_0200A8E0
+ ldr r0, [r5, #0x2c]
+ ldr r1, [r5, #0x34]
+ ldr r2, [r5, #0x30]
+ bl FUN_0200B7B8
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ ldr r0, [r5, #0x18]
+ ldr r2, [r5, #0x34]
+ mov r1, #1
+ bl FUN_0201BD84
+ ldr r0, [r5, #0x18]
+ bl FUN_02019548
+ ldr r0, [r5]
+ mov r1, #1
+ bl FUN_02017CD0
+ mov r0, #1
+ strh r0, [r5, #0x1c]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E1908
+MOD14_021E1908: ; 0x021E1908
+ push {r3, r4, r5, r6, r7, lr}
+ lsl r1, r1, #0x18
+ add r7, r3, #0
+ lsr r1, r1, #0x18
+ add r6, r2, #0
+ ldr r4, [sp, #0x18]
+ ldr r5, [sp, #0x1c]
+ bl FUN_0201886C
+ sub r1, r7, #1
+ sub r2, r6, #2
+ lsl r1, r1, #5
+ add r1, r2, r1
+ lsl r3, r1, #1
+ ldr r2, _021E19AC ; =0x00008209
+ add r1, r0, r3
+ strh r2, [r0, r3]
+ add r0, r2, #1
+ mov r2, #0
+ strh r0, [r1, #2]
+ cmp r4, #0
+ bls _021E1942
+ ldr r0, _021E19B0 ; =0x0000820B
+ add r3, r1, #0
+_021E1938:
+ add r2, r2, #1
+ strh r0, [r3, #4]
+ add r3, r3, #2
+ cmp r2, r4
+ blo _021E1938
+_021E1942:
+ lsl r0, r4, #1
+ add r2, r1, r0
+ ldr r3, _021E19B4 ; =0x0000820C
+ mov ip, r0
+ strh r3, [r2, #4]
+ add r0, r3, #1
+ strh r0, [r2, #6]
+ add r0, r3, #2
+ strh r0, [r2, #8]
+ add r1, #0x40
+ mov r3, #0
+ cmp r5, #0
+ bls _021E197E
+ mov r0, ip
+ add r2, r0, r1
+ ldr r0, _021E19B8 ; =0x0000820F
+ add r7, r0, #1
+_021E1964:
+ strh r0, [r1]
+ strh r7, [r1, #2]
+ ldr r6, _021E19BC ; =0x00008212
+ add r3, r3, #1
+ strh r6, [r2, #4]
+ add r6, r6, #1
+ strh r6, [r2, #6]
+ ldr r6, _021E19C0 ; =0x00008214
+ add r1, #0x40
+ strh r6, [r2, #8]
+ add r2, #0x40
+ cmp r3, r5
+ blo _021E1964
+_021E197E:
+ ldr r0, _021E19C4 ; =0x00008215
+ mov r3, #0
+ strh r0, [r1]
+ add r0, r0, #1
+ strh r0, [r1, #2]
+ cmp r4, #0
+ bls _021E199A
+ ldr r0, _021E19C8 ; =0x00008217
+ add r2, r1, #0
+_021E1990:
+ add r3, r3, #1
+ strh r0, [r2, #4]
+ add r2, r2, #2
+ cmp r3, r4
+ blo _021E1990
+_021E199A:
+ mov r0, ip
+ ldr r2, _021E19CC ; =0x00008218
+ add r1, r1, r0
+ strh r2, [r1, #4]
+ add r0, r2, #1
+ strh r0, [r1, #6]
+ add r0, r2, #2
+ strh r0, [r1, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E19AC: .word 0x00008209
+_021E19B0: .word 0x0000820B
+_021E19B4: .word 0x0000820C
+_021E19B8: .word 0x0000820F
+_021E19BC: .word 0x00008212
+_021E19C0: .word 0x00008214
+_021E19C4: .word 0x00008215
+_021E19C8: .word 0x00008217
+_021E19CC: .word 0x00008218
+
+ thumb_func_start MOD14_021E19D0
+MOD14_021E19D0: ; 0x021E19D0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldrh r0, [r5, #0x1e]
+ str r1, [sp, #0x10]
+ cmp r0, #0
+ beq _021E19E8
+ ldr r1, [r5, #0x18]
+ ldr r0, [r5]
+ add r1, #0x10
+ bl MOD14_021E1CA0
+_021E19E8:
+ ldr r0, [r5, #0x18]
+ mov r1, #0xf
+ str r0, [sp, #0x14]
+ add r0, #0x10
+ str r0, [sp, #0x14]
+ bl FUN_02019620
+ ldr r0, [sp, #0x10]
+ mov r6, #0
+ add r0, #0x21
+ ldrb r1, [r0]
+ mov r0, #8
+ sub r0, r0, r1
+ lsl r7, r0, #4
+ cmp r1, #0
+ bls _021E1A5C
+ ldr r4, [sp, #0x10]
+_021E1A0A:
+ ldr r3, [r4]
+ cmp r3, #0x38
+ blt _021E1A26
+ cmp r3, #0x3d
+ bgt _021E1A26
+ ldr r2, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, #0x22
+ ldrb r2, [r2]
+ add r0, r5, #0
+ sub r3, #0x38
+ bl MOD14_021E1A8C
+ b _021E1A4C
+_021E1A26:
+ add r3, #0x18
+ ldr r0, [r5, #0x14]
+ ldr r2, [r5, #0x30]
+ add r1, r3, #0
+ bl FUN_0200A8E0
+ str r7, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E1A88 ; =0x000B0C0F
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ ldr r2, [r5, #0x30]
+ mov r3, #0xa
+ bl FUN_0201BDE0
+_021E1A4C:
+ ldr r0, [sp, #0x10]
+ add r6, r6, #1
+ add r0, #0x21
+ ldrb r0, [r0]
+ add r7, #0x10
+ add r4, r4, #4
+ cmp r6, r0
+ blo _021E1A0A
+_021E1A5C:
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0
+ bl MOD14_021E1B9C
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0
+ add r1, #0x21
+ str r1, [sp, #0x10]
+ ldrb r1, [r1]
+ bl MOD14_021E1AD8
+ ldr r0, [sp, #0x14]
+ bl FUN_02019548
+ ldr r0, [r5]
+ mov r1, #1
+ bl FUN_02017CD0
+ mov r0, #1
+ strh r0, [r5, #0x1e]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E1A88: .word 0x000B0C0F
+
+ thumb_func_start MOD14_021E1A8C
+MOD14_021E1A8C: ; 0x021E1A8C
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ mov r0, #1
+ lsl r0, r3
+ tst r0, r2
+ beq _021E1A9E
+ mov r4, #0
+ b _021E1AA0
+_021E1A9E:
+ mov r4, #8
+_021E1AA0:
+ mov r0, #0x30
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2c
+ str r0, [sp, #8]
+ lsl r0, r3, #4
+ add r0, r0, #4
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0xc]
+ mov r0, #8
+ str r0, [sp, #0x10]
+ lsl r2, r3, #0x13
+ str r0, [sp, #0x14]
+ mov r0, #0xff
+ str r0, [sp, #0x18]
+ add r0, r1, #0
+ ldr r1, [r5, #0x28]
+ lsl r3, r4, #0x10
+ ldr r1, [r1, #0x14]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_02019684
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E1AD8
+MOD14_021E1AD8: ; 0x021E1AD8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #8]
+ add r5, r1, #0
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0201886C
+ mov r2, #8
+ sub r2, r2, r5
+ mov ip, r2
+ add r0, #0xe6
+ lsl r2, r2, #7
+ add r2, r0, r2
+ ldr r1, _021E1B40 ; =0x00000251
+ mov r3, #0x18
+ mov r0, ip
+ mul r3, r0
+ add r4, r1, r3
+ mov r6, #0
+ lsl r7, r5, #1
+ beq _021E1B24
+ mov r0, #1
+ lsl r0, r0, #0xe
+_021E1B08:
+ mov r3, #0
+ add r5, r2, #0
+_021E1B0C:
+ add r1, r4, #0
+ orr r1, r0
+ strh r1, [r5]
+ add r3, r3, #1
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r3, #0xc
+ blo _021E1B0C
+ add r6, r6, #1
+ add r2, #0x40
+ cmp r6, r7
+ blo _021E1B08
+_021E1B24:
+ mov r0, #0xc
+ str r0, [sp]
+ mov r3, ip
+ lsl r3, r3, #1
+ ldr r0, [sp, #8]
+ str r7, [sp, #4]
+ ldr r0, [r0]
+ mov r1, #1
+ mov r2, #0x13
+ add r3, r3, #3
+ bl MOD14_021E1C10
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E1B40: .word 0x00000251
+
+ thumb_func_start MOD14_021E1B44
+MOD14_021E1B44: ; 0x021E1B44
+ push {r4, lr}
+ add r4, r0, #0
+ ldrh r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _021E1B5A
+ ldr r0, [r4]
+ ldr r1, [r4, #0x18]
+ bl MOD14_021E1CEC
+ mov r0, #0
+ strh r0, [r4, #0x1c]
+_021E1B5A:
+ ldrh r0, [r4, #0x1e]
+ cmp r0, #0
+ beq _021E1B6E
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4]
+ add r1, #0x10
+ bl MOD14_021E1CA0
+ mov r0, #0
+ strh r0, [r4, #0x1e]
+_021E1B6E:
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_02017CD0
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E1B78
+MOD14_021E1B78: ; 0x021E1B78
+ push {r4, lr}
+ add r4, r0, #0
+ ldrh r0, [r4, #0x1e]
+ cmp r0, #0
+ beq _021E1B90
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4]
+ add r1, #0x10
+ bl MOD14_021E1CA0
+ mov r0, #0
+ strh r0, [r4, #0x1e]
+_021E1B90:
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_02017CD0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E1B9C
+MOD14_021E1B9C: ; 0x021E1B9C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r6, r1, #0
+ ldr r4, [r0, #0x18]
+ add r0, r6, #0
+ add r0, #0x21
+ ldrb r1, [r0]
+ mov r0, #8
+ add r4, #0x10
+ sub r0, r0, r1
+ lsl r5, r0, #4
+ mov r0, #0xa
+ str r0, [sp]
+ lsl r0, r1, #0x14
+ lsr r0, r0, #0x10
+ lsl r3, r5, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #0xf
+ mov r2, #0
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ add r6, #0x20
+ ldrb r2, [r6]
+ add r0, r4, #0
+ mov r1, #0
+ lsl r2, r2, #4
+ add r2, r5, r2
+ bl FUN_02002218
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #8
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021E1BE4
+MOD14_021E1BE4: ; 0x021E1BE4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r4, [r6, #0x18]
+ add r7, r1, #0
+ add r4, #0x10
+ mov r5, #0
+_021E1BF0:
+ add r2, r7, #0
+ add r2, #0x22
+ ldrb r2, [r2]
+ add r0, r6, #0
+ add r1, r4, #0
+ add r3, r5, #0
+ bl MOD14_021E1A8C
+ add r5, r5, #1
+ cmp r5, #6
+ blt _021E1BF0
+ add r0, r4, #0
+ bl FUN_02019548
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E1C10
+MOD14_021E1C10: ; 0x021E1C10
+ push {r3, r4, r5, r6, r7, lr}
+ lsl r1, r1, #0x18
+ add r7, r3, #0
+ lsr r1, r1, #0x18
+ add r6, r2, #0
+ ldr r5, [sp, #0x18]
+ ldr r4, [sp, #0x1c]
+ bl FUN_0201886C
+ sub r1, r7, #1
+ sub r2, r6, #1
+ lsl r1, r1, #5
+ add r1, r2, r1
+ mov r2, #0x72
+ lsl r3, r1, #1
+ lsl r2, r2, #8
+ strh r2, [r0, r3]
+ add r1, r0, r3
+ mov r2, #0
+ cmp r5, #0
+ bls _021E1C48
+ ldr r0, _021E1C8C ; =0x00007201
+ add r3, r1, #0
+_021E1C3E:
+ add r2, r2, #1
+ strh r0, [r3, #2]
+ add r3, r3, #2
+ cmp r2, r5
+ blo _021E1C3E
+_021E1C48:
+ lsl r0, r5, #1
+ add r2, r1, r0
+ ldr r3, _021E1C90 ; =0x00007202
+ add r1, #0x40
+ mov r7, #0
+ strh r3, [r2, #2]
+ cmp r4, #0
+ bls _021E1C6C
+ ldr r2, _021E1C94 ; =0x00007205
+ add r6, r0, r1
+ add r3, r3, #1
+_021E1C5E:
+ strh r3, [r1]
+ strh r2, [r6, #2]
+ add r7, r7, #1
+ add r6, #0x40
+ add r1, #0x40
+ cmp r7, r4
+ blo _021E1C5E
+_021E1C6C:
+ ldr r2, _021E1C98 ; =0x00007206
+ mov r4, #0
+ strh r2, [r1]
+ cmp r5, #0
+ bls _021E1C84
+ add r3, r1, #0
+ add r2, r2, #1
+_021E1C7A:
+ add r4, r4, #1
+ strh r2, [r3, #2]
+ add r3, r3, #2
+ cmp r4, r5
+ blo _021E1C7A
+_021E1C84:
+ ldr r2, _021E1C9C ; =0x00007208
+ add r0, r1, r0
+ strh r2, [r0, #2]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E1C8C: .word 0x00007201
+_021E1C90: .word 0x00007202
+_021E1C94: .word 0x00007205
+_021E1C98: .word 0x00007206
+_021E1C9C: .word 0x00007208
+
+ thumb_func_start MOD14_021E1CA0
+MOD14_021E1CA0: ; 0x021E1CA0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ ldrb r1, [r4, #4]
+ bl FUN_0201886C
+ ldrb r1, [r4, #5]
+ mov r5, #0
+ sub r2, r1, #1
+ ldrb r1, [r4, #6]
+ sub r1, r1, #1
+ lsl r1, r1, #5
+ add r1, r2, r1
+ lsl r1, r1, #1
+ add r2, r0, r1
+ ldrb r0, [r4, #8]
+ add r0, r0, #2
+ beq _021E1CEA
+ add r0, r5, #0
+ add r1, r5, #0
+_021E1CC6:
+ ldrb r6, [r4, #7]
+ add r3, r1, #0
+ add r6, r6, #2
+ beq _021E1CDE
+ add r6, r2, #0
+_021E1CD0:
+ strh r0, [r6]
+ ldrb r7, [r4, #7]
+ add r3, r3, #1
+ add r6, r6, #2
+ add r7, r7, #2
+ cmp r3, r7
+ blo _021E1CD0
+_021E1CDE:
+ ldrb r3, [r4, #8]
+ add r5, r5, #1
+ add r2, #0x40
+ add r3, r3, #2
+ cmp r5, r3
+ blo _021E1CC6
+_021E1CEA:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E1CEC
+MOD14_021E1CEC: ; 0x021E1CEC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ ldrb r1, [r4, #4]
+ bl FUN_0201886C
+ ldrb r1, [r4, #5]
+ mov r5, #0
+ sub r2, r1, #2
+ ldrb r1, [r4, #6]
+ sub r1, r1, #1
+ lsl r1, r1, #5
+ add r1, r2, r1
+ lsl r1, r1, #1
+ add r2, r0, r1
+ ldrb r0, [r4, #8]
+ add r0, r0, #2
+ beq _021E1D36
+ add r0, r5, #0
+ add r1, r5, #0
+_021E1D12:
+ ldrb r6, [r4, #7]
+ add r3, r1, #0
+ add r6, r6, #5
+ beq _021E1D2A
+ add r6, r2, #0
+_021E1D1C:
+ strh r0, [r6]
+ ldrb r7, [r4, #7]
+ add r3, r3, #1
+ add r6, r6, #2
+ add r7, r7, #5
+ cmp r3, r7
+ blo _021E1D1C
+_021E1D2A:
+ ldrb r3, [r4, #8]
+ add r5, r5, #1
+ add r2, #0x40
+ add r3, r3, #2
+ cmp r5, r3
+ blo _021E1D12
+_021E1D36:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E1D38
+MOD14_021E1D38: ; 0x021E1D38
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ str r1, [r5]
+ str r3, [r5, #4]
+ str r2, [r5, #0xc]
+ ldr r0, [sp, #0x30]
+ mov r4, #1
+ str r0, [r5, #8]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r2, r3, #0
+ str r4, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ mov r0, #0x12
+ mov r1, #4
+ add r3, r4, #0
+ bl FUN_0200687C
+ mov r0, #0x12
+ mov r1, #0x1b
+ add r2, sp, #0x14
+ mov r3, #0xa
+ bl FUN_02006C08
+ add r4, r0, #0
+ ldr r0, [sp, #0x14]
+ add r1, r5, #0
+ ldr r0, [r0, #0xc]
+ add r1, #0xe4
+ mov r2, #0x40
+ bl MIi_CpuCopy16
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #0x12
+ mov r1, #0x14
+ add r2, sp, #0x14
+ mov r3, #0xa
+ bl FUN_02006C08
+ add r4, r0, #0
+ ldr r0, [sp, #0x14]
+ mov r1, #0x49
+ lsl r1, r1, #2
+ ldr r0, [r0, #0xc]
+ add r1, r5, r1
+ mov r2, #0x20
+ bl MIi_CpuCopy16
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ mov r1, #0x2a
+ mov r4, #1
+ str r0, [sp, #0x10]
+ add r0, #0xe4
+ lsl r1, r1, #4
+ lsl r4, r4, #0x10
+ mov r7, #7
+ str r0, [sp, #0x10]
+ add r6, r0, r1
+_021E1DBC:
+ asr r0, r4, #0xc
+ str r0, [sp]
+ ldr r0, [sp, #0x10]
+ ldr r3, _021E1ED8 ; =0x00007FFF
+ add r1, r6, #0
+ mov r2, #0x30
+ bl MOD14_021DDE40
+ ldr r0, _021E1EDC ; =0x00002492
+ sub r7, r7, #1
+ sub r4, r4, r0
+ sub r6, #0x60
+ cmp r7, #1
+ bge _021E1DBC
+ add r0, r5, #0
+ mov r1, #3
+ add r0, #0xe4
+ lsl r1, r1, #8
+ bl DC_FlushRange
+ mov r0, #0xe1
+ lsl r0, r0, #2
+ mov r1, #0x1a
+ add r0, r5, r0
+ lsl r1, r1, #4
+ mov r2, #0x60
+ bl GX_LoadOBJPltt
+ add r0, r5, #0
+ mov r1, #0x1a
+ add r0, #0xe4
+ lsl r1, r1, #4
+ mov r2, #0x60
+ bl GXS_LoadOBJPltt
+ mov r0, #0xa
+ add r3, r5, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0x11
+ mov r2, #1
+ add r3, #0x18
+ bl FUN_02006BB0
+ str r0, [r5, #0x14]
+ mov r0, #0xa
+ str r0, [sp]
+ mov r0, #0x12
+ add r3, r5, #0
+ add r1, r0, #0
+ mov r2, #1
+ add r3, #0x20
+ bl FUN_02006C30
+ str r0, [r5, #0x1c]
+ mov r0, #0xa
+ add r3, r5, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #2
+ mov r2, #1
+ add r3, #0x38
+ bl FUN_02006BDC
+ str r0, [r5, #0x34]
+ mov r0, #0xa
+ add r3, r5, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #3
+ mov r2, #1
+ add r3, #0x30
+ bl FUN_02006BDC
+ str r0, [r5, #0x2c]
+ mov r0, #2
+ mov r1, #0xd
+ mov r2, #4
+ mov r3, #0xa
+ bl FUN_0200B870
+ str r0, [r5, #0x44]
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ mov r1, #0xa
+ bl FUN_020219F4
+ ldr r1, _021E1EE0 ; =0x00004BFC
+ ldr r2, _021E1EE4 ; =0x00000157
+ str r0, [r5, r1]
+ mov r0, #0
+ str r0, [r5, #0x10]
+ ldr r0, [r5, #0x18]
+ mov r1, #0x20
+ ldr r0, [r0, #0x14]
+ mov r3, #0xa
+ str r0, [r5, #0x3c]
+ add r0, r5, #0
+ add r0, #0x40
+ strh r1, [r0]
+ add r0, r5, #0
+ add r0, #0x42
+ strh r1, [r0]
+ mov r0, #1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ ldr r1, _021E1EE8 ; =0x00004BF8
+ add r2, r5, #0
+ str r0, [r5, r1]
+ mov r1, #0
+ add r0, r1, #0
+_021E1E9C:
+ add r1, r1, #1
+ str r0, [r2, #0x48]
+ add r2, r2, #4
+ cmp r1, #0x12
+ blt _021E1E9C
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ beq _021E1ECC
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _021E1ECC
+ ldr r0, [r5, #0x2c]
+ cmp r0, #0
+ beq _021E1ECC
+ ldr r0, [r5, #0x34]
+ cmp r0, #0
+ beq _021E1ECC
+ ldr r0, [r5, #0x44]
+ cmp r0, #0
+ beq _021E1ECC
+ ldr r0, _021E1EE0 ; =0x00004BFC
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bne _021E1ED2
+_021E1ECC:
+ add sp, #0x18
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021E1ED2:
+ mov r0, #1
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E1ED8: .word 0x00007FFF
+_021E1EDC: .word 0x00002492
+_021E1EE0: .word 0x00004BFC
+_021E1EE4: .word 0x00000157
+_021E1EE8: .word 0x00004BF8
+
+ thumb_func_start MOD14_021E1EEC
+MOD14_021E1EEC: ; 0x021E1EEC
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #0xa
+ mov r1, #3
+ bl FUN_02018FF4
+ str r0, [r7, #0x10]
+ cmp r0, #0
+ beq _021E1F1A
+ mov r6, #0
+ ldr r4, _021E1F1C ; =0x021E662C
+ add r5, r6, #0
+_021E1F04:
+ ldr r1, [r7, #0x10]
+ ldr r0, [r7, #4]
+ add r1, r1, r5
+ add r2, r4, #0
+ bl FUN_02019150
+ add r6, r6, #1
+ add r4, #8
+ add r5, #0x10
+ cmp r6, #3
+ blo _021E1F04
+_021E1F1A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E1F1C: .word 0x021E662C
+
+ thumb_func_start MOD14_021E1F20
+MOD14_021E1F20: ; 0x021E1F20
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _021E1F90 ; =0x00004BF8
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021E1F30
+ bl FUN_0200A8B8
+_021E1F30:
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ beq _021E1F3A
+ bl FUN_02016A18
+_021E1F3A:
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _021E1F44
+ bl FUN_02016A18
+_021E1F44:
+ ldr r0, [r5, #0x2c]
+ cmp r0, #0
+ beq _021E1F4E
+ bl FUN_02016A18
+_021E1F4E:
+ ldr r0, [r5, #0x34]
+ cmp r0, #0
+ beq _021E1F58
+ bl FUN_02016A18
+_021E1F58:
+ ldr r0, [r5, #0x44]
+ cmp r0, #0
+ beq _021E1F62
+ bl FUN_0200B990
+_021E1F62:
+ ldr r0, _021E1F94 ; =0x00004BFC
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021E1F6E
+ bl FUN_02021A20
+_021E1F6E:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0
+ beq _021E1F8E
+ mov r6, #0
+ add r4, r6, #0
+_021E1F78:
+ ldr r0, [r5, #0x10]
+ add r0, r0, r4
+ bl FUN_02019178
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, #3
+ blt _021E1F78
+ ldr r0, [r5, #0x10]
+ bl FUN_02016A18
+_021E1F8E:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021E1F90: .word 0x00004BF8
+_021E1F94: .word 0x00004BFC
+
+ thumb_func_start MOD14_021E1F98
+MOD14_021E1F98: ; 0x021E1F98
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD14_021DC464
+ add r1, r4, #0
+ add r1, #0xe0
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD14_021E223C
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021E247C
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E1FB8
+MOD14_021E1FB8: ; 0x021E1FB8
+ ldr r3, _021E1FBC ; =MOD14_021E24D8
+ bx r3
+ .align 2, 0
+_021E1FBC: .word MOD14_021E24D8
+
+ thumb_func_start MOD14_021E1FC0
+MOD14_021E1FC0: ; 0x021E1FC0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD14_021DC464
+ add r1, r4, #0
+ add r1, #0xe0
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD14_021E2360
+ add r0, r4, #0
+ bl MOD14_021E2394
+ add r0, r4, #0
+ bl MOD14_021E240C
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E1FE4
+MOD14_021E1FE4: ; 0x021E1FE4
+ ldr r3, _021E1FEC ; =MOD14_021E247C
+ mov r1, #1
+ bx r3
+ nop
+_021E1FEC: .word MOD14_021E247C
+
+ thumb_func_start MOD14_021E1FF0
+MOD14_021E1FF0: ; 0x021E1FF0
+ ldr r3, _021E1FF4 ; =MOD14_021E24D8
+ bx r3
+ .align 2, 0
+_021E1FF4: .word MOD14_021E24D8
+
+ thumb_func_start MOD14_021E1FF8
+MOD14_021E1FF8: ; 0x021E1FF8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ str r0, [sp, #8]
+ ldr r0, [r0, #0xc]
+ str r1, [sp, #0xc]
+ str r2, [sp, #0x10]
+ str r3, [sp, #0x14]
+ bl MOD14_021DC44C
+ ldr r1, [sp, #0xc]
+ str r0, [sp, #0x28]
+ bl FUN_0206B43C
+ add r0, #0xd0
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0xc
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ str r1, [sp, #4]
+ add r0, #0x3c
+ mov r1, #9
+ mov r2, #0xa
+ mov r3, #0xe
+ bl FUN_02018F4C
+ mov r4, #0
+ mov r0, #0xc
+ str r4, [sp, #0x20]
+ str r0, [sp, #0x18]
+_021E2034:
+ mov r0, #0
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #8]
+ mov r6, #0xa
+ str r0, [sp, #0x2c]
+ add r0, #0x3c
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x18]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x30]
+_021E204A:
+ ldr r0, [sp, #0x28]
+ ldr r1, [sp, #0xc]
+ add r2, r4, #0
+ bl FUN_0206B5E4
+ add r4, r4, #1
+ add r5, r0, #0
+ bl FUN_02066A6C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x1c]
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020672BC
+ add r7, r0, #0
+ beq _021E20C8
+ add r0, r5, #0
+ mov r1, #0x4c
+ mov r2, #0
+ bl FUN_020672BC
+ cmp r0, #0
+ bne _021E209A
+ add r0, r5, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020672BC
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ add r0, r7, #0
+ mov r2, #0x1b
+ bl FUN_02068654
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ b _021E20AA
+_021E209A:
+ ldr r0, _021E2174 ; =0x000001EA
+ cmp r7, r0
+ beq _021E20A4
+ mov r0, #8
+ b _021E20A6
+_021E20A4:
+ mov r0, #1
+_021E20A6:
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+_021E20AA:
+ ldr r0, _021E2178 ; =0x021E6644
+ ldr r2, [sp, #0x30]
+ ldrb r0, [r0, r1]
+ mov r3, #2
+ add r0, #0xe0
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #2
+ str r0, [sp]
+ str r1, [sp, #4]
+ lsl r1, r6, #0x10
+ ldr r0, [sp, #0x2c]
+ lsr r1, r1, #0x10
+ bl FUN_02018F4C
+_021E20C8:
+ ldr r1, [sp, #0x1c]
+ add r0, r5, #0
+ bl FUN_02066A94
+ ldr r0, [sp, #0x24]
+ add r6, r6, #2
+ add r0, r0, #1
+ str r0, [sp, #0x24]
+ cmp r0, #6
+ blo _021E204A
+ ldr r0, [sp, #0x18]
+ add r0, r0, #2
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ cmp r0, #5
+ blo _021E2034
+ ldr r0, [sp, #0x48]
+ cmp r0, #0
+ beq _021E2132
+ ldr r0, [sp, #0x14]
+ cmp r0, #1
+ beq _021E20FE
+ cmp r0, #2
+ beq _021E2110
+ b _021E211E
+_021E20FE:
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r1, [r0]
+ ldr r0, _021E217C ; =0x00300010
+ and r1, r0
+ ldr r0, [sp, #8]
+ ldr r0, [r0, #0x18]
+ str r1, [r0, #8]
+ b _021E211E
+_021E2110:
+ ldr r0, _021E2180 ; =0x04001000
+ ldr r1, [r0]
+ ldr r0, _021E217C ; =0x00300010
+ and r1, r0
+ ldr r0, [sp, #8]
+ ldr r0, [r0, #0x18]
+ str r1, [r0, #8]
+_021E211E:
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #0x10]
+ ldr r0, [r0, #0x18]
+ ldr r2, [sp, #0x14]
+ ldr r3, [sp, #0x48]
+ lsl r1, r1, #5
+ bl FUN_020B1768
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+_021E2132:
+ ldr r0, [sp, #8]
+ ldr r1, [r0, #0x18]
+ ldr r0, [r1, #0x14]
+ ldr r1, [r1, #0x10]
+ bl DC_FlushRange
+ ldr r0, [sp, #0x14]
+ cmp r0, #1
+ beq _021E214C
+ cmp r0, #2
+ beq _021E2160
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+_021E214C:
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #0x10]
+ ldr r2, [r0, #0x18]
+ lsl r1, r1, #5
+ ldr r0, [r2, #0x14]
+ ldr r2, [r2, #0x10]
+ bl GX_LoadOBJ
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+_021E2160:
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #0x10]
+ ldr r2, [r0, #0x18]
+ lsl r1, r1, #5
+ ldr r0, [r2, #0x14]
+ ldr r2, [r2, #0x10]
+ bl GXS_LoadOBJ
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E2174: .word 0x000001EA
+_021E2178: .word 0x021E6644
+_021E217C: .word 0x00300010
+_021E2180: .word 0x04001000
+
+ thumb_func_start MOD14_021E2184
+MOD14_021E2184: ; 0x021E2184
+ ldr r0, [r0, #0x20]
+ bx lr
+
+ thumb_func_start MOD14_021E2188
+MOD14_021E2188: ; 0x021E2188
+ add r0, #0xe0
+ ldr r0, [r0]
+ sub r0, r0, #3
+ bpl _021E2192
+ add r0, #0x12
+_021E2192:
+ bx lr
+
+ thumb_func_start MOD14_021E2194
+MOD14_021E2194: ; 0x021E2194
+ push {r3, r4}
+ mov r4, #0
+ ldr r1, _021E21AC ; =0x00004BE4
+ add r3, r4, #0
+_021E219C:
+ add r2, r0, r4
+ add r4, r4, #1
+ strb r3, [r2, r1]
+ cmp r4, #0x12
+ blt _021E219C
+ pop {r3, r4}
+ bx lr
+ nop
+_021E21AC: .word 0x00004BE4
+
+ thumb_func_start MOD14_021E21B0
+MOD14_021E21B0: ; 0x021E21B0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ mov r2, #0xf9
+ add r4, r1, #0
+ lsl r2, r2, #2
+ add r3, r5, r2
+ lsl r1, r4, #0xa
+ ldr r0, [r0, #0x14]
+ add r1, r3, r1
+ add r2, #0x1c
+ bl MIi_CpuCopy32
+ mov r1, #0xf9
+ lsl r1, r1, #2
+ add r0, r5, r1
+ add r1, #0x1c
+ bl DC_FlushRange
+ ldr r0, _021E21E0 ; =0x00004BE4
+ mov r2, #1
+ add r1, r5, r4
+ strb r2, [r1, r0]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E21E0: .word 0x00004BE4
+
+ thumb_func_start MOD14_021E21E4
+MOD14_021E21E4: ; 0x021E21E4
+ push {r4, r5, r6, lr}
+ sub sp, #0x28
+ add r5, r0, #0
+ mov r0, #0x63
+ lsl r1, r1, #5
+ lsl r0, r0, #4
+ add r6, r1, r0
+ add r4, r2, #0
+ ldr r0, _021E2238 ; =0x00004BE4
+ add r1, r5, r4
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _021E2214
+ mov r2, #0xf9
+ lsl r2, r2, #2
+ add r1, r5, r2
+ lsl r0, r4, #0xa
+ add r0, r1, r0
+ lsl r1, r6, #5
+ add r2, #0x1c
+ bl GX_LoadOBJ
+ add sp, #0x28
+ pop {r4, r5, r6, pc}
+_021E2214:
+ add r0, sp, #4
+ bl FUN_020B1A24
+ add r0, sp, #4
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ mov r3, #1
+ bl MOD14_021E1FF8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD14_021E21B0
+ add sp, #0x28
+ pop {r4, r5, r6, pc}
+ nop
+_021E2238: .word 0x00004BE4
+
+ thumb_func_start MOD14_021E223C
+MOD14_021E223C: ; 0x021E223C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x64
+ add r6, r0, #0
+ bl MOD14_021E2194
+ ldr r0, [r6]
+ bl MOD14_021DDD50
+ add r4, r0, #0
+ ldr r0, [r6]
+ bl MOD14_021DDD48
+ add r2, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #0
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r3, [r6, #0x20]
+ add r0, sp, #0x40
+ bl MOD14_021DDDB4
+ add r0, r6, #0
+ bl MOD14_021E2188
+ add r7, r0, #0
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x63
+ lsl r0, r0, #4
+ str r0, [sp, #8]
+ add r4, r6, #0
+ mov r5, #0x20
+_021E227C:
+ add r0, sp, #0x1c
+ bl FUN_020B1A24
+ add r0, sp, #0x1c
+ str r0, [sp]
+ ldr r2, [sp, #8]
+ add r0, r6, #0
+ add r1, r7, #0
+ mov r3, #1
+ bl MOD14_021E1FF8
+ add r0, sp, #0x1c
+ str r0, [sp, #0x40]
+ mov r0, #0xb
+ str r0, [sp]
+ mov r0, #1
+ mov r2, #2
+ str r0, [sp, #4]
+ lsl r2, r2, #8
+ ldr r0, [r6, #8]
+ add r1, sp, #0x40
+ lsr r3, r2, #1
+ bl MOD14_021DDDD4
+ str r0, [r4, #0x48]
+ cmp r0, #0
+ bne _021E22B6
+ bl ErrorHandling
+_021E22B6:
+ ldr r0, [r4, #0x48]
+ mov r1, #0
+ bl FUN_020200A0
+ cmp r5, #0
+ ble _021E22D4
+ lsl r0, r5, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021E22E2
+_021E22D4:
+ lsl r0, r5, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021E22E2:
+ bl _ffix
+ str r0, [sp, #0x10]
+ mov r0, #0x16
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x14]
+ mov r0, #0
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x48]
+ add r1, sp, #0x10
+ bl FUN_02020044
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD14_021E21B0
+ add r7, r7, #1
+ cmp r7, #0x12
+ blt _021E230A
+ mov r7, #0
+_021E230A:
+ ldr r0, [sp, #8]
+ add r4, r4, #4
+ add r0, #0x20
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ add r5, #0x20
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+ cmp r0, #7
+ blt _021E227C
+ mov r4, #0
+ add r5, r6, #0
+_021E2322:
+ ldr r0, [r6, #0xc]
+ bl MOD14_021DC44C
+ add r1, r4, #0
+ bl FUN_0206B4E4
+ add r1, r5, #0
+ add r1, #0x94
+ add r4, r4, #1
+ add r5, r5, #4
+ str r0, [r1]
+ cmp r4, #0x12
+ blt _021E2322
+ add sp, #0x64
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E2340
+MOD14_021E2340: ; 0x021E2340
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_021E2348:
+ ldr r0, [r5, #0x48]
+ cmp r0, #0
+ beq _021E2354
+ bl FUN_0201FFC8
+ str r6, [r5, #0x48]
+_021E2354:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #7
+ blt _021E2348
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E2360
+MOD14_021E2360: ; 0x021E2360
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ bl MOD14_021E2188
+ add r4, r0, #0
+ mov r6, #0
+ add r5, r7, #0
+_021E236E:
+ add r0, r7, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD14_021E21E4
+ ldr r0, [r5, #0x48]
+ mov r1, #1
+ bl FUN_020200A0
+ add r4, r4, #1
+ cmp r4, #0x12
+ blt _021E2388
+ mov r4, #0
+_021E2388:
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #7
+ blt _021E236E
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E2394
+MOD14_021E2394: ; 0x021E2394
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ bl MOD14_021DC44C
+ add r1, r5, #0
+ ldr r2, _021E23F0 ; =0x00004BFC
+ add r1, #0xe0
+ ldr r1, [r1]
+ ldr r2, [r5, r2]
+ ldr r4, [r5, #0x10]
+ bl FUN_0206B484
+ ldr r1, _021E23F0 ; =0x00004BFC
+ mov r0, #0
+ ldr r1, [r5, r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r6, r0, #0
+ add r0, r4, #0
+ mov r1, #7
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E23F4 ; =0x00020807
+ ldr r2, _021E23F0 ; =0x00004BFC
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5, r2]
+ lsr r5, r6, #1
+ mov r3, #0x30
+ add r0, r4, #0
+ sub r3, r3, r5
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_021E23F0: .word 0x00004BFC
+_021E23F4: .word 0x00020807
+
+ thumb_func_start MOD14_021E23F8
+MOD14_021E23F8: ; 0x021E23F8
+ push {r4, lr}
+ ldr r4, [r0, #0x10]
+ mov r1, #7
+ add r0, r4, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ bl FUN_02019548
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E240C
+MOD14_021E240C: ; 0x021E240C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ ldr r0, [r7, #0x10]
+ mov r1, #4
+ str r0, [sp, #0xc]
+ add r0, #0x10
+ str r0, [sp, #0xc]
+ bl FUN_02019620
+ add r0, r7, #0
+ bl MOD14_021E2188
+ mov r6, #0
+ add r4, r0, #0
+ add r5, r6, #0
+_021E242C:
+ ldr r0, [sp, #0xc]
+ lsl r1, r4, #2
+ str r0, [sp]
+ add r1, r7, r1
+ str r5, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r1, #0x94
+ mov r2, #2
+ ldr r0, [r7, #0x44]
+ ldr r1, [r1]
+ add r3, r2, #0
+ bl FUN_0200B9EC
+ add r4, r4, #1
+ cmp r4, #0x12
+ blt _021E2450
+ mov r4, #0
+_021E2450:
+ add r6, r6, #1
+ add r5, #0x20
+ cmp r6, #7
+ blt _021E242C
+ ldr r0, [sp, #0xc]
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E2464
+MOD14_021E2464: ; 0x021E2464
+ push {r4, lr}
+ ldr r4, [r0, #0x10]
+ mov r1, #4
+ add r4, #0x10
+ add r0, r4, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ bl FUN_02019548
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E247C
+MOD14_021E247C: ; 0x021E247C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0xa
+ mov r1, #0xc
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021E24B6
+ ldr r0, _021E24B8 ; =0x021E6624
+ lsl r1, r6, #2
+ ldr r0, [r0, r1]
+ str r5, [r4]
+ mov r2, #0
+ strb r2, [r4, #4]
+ add r1, r4, #0
+ strb r2, [r4, #5]
+ bl FUN_0200CA44
+ add r1, r5, #0
+ add r1, #0xdc
+ add r5, #0xdc
+ str r0, [r1]
+ ldr r0, [r5]
+ cmp r0, #0
+ bne _021E24B6
+ add r0, r4, #0
+ bl FUN_02016A18
+_021E24B6:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021E24B8: .word 0x021E6624
+
+ thumb_func_start MOD14_021E24BC
+MOD14_021E24BC: ; 0x021E24BC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1]
+ mov r2, #0
+ add r0, #0xdc
+ str r2, [r0]
+ add r0, r1, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E24D8
+MOD14_021E24D8: ; 0x021E24D8
+ add r0, #0xdc
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E24E4
+ mov r0, #1
+ bx lr
+_021E24E4:
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD14_021E24E8
+MOD14_021E24E8: ; 0x021E24E8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x1c
+ add r4, r1, #0
+ ldrb r2, [r4, #4]
+ ldr r5, [r4]
+ cmp r2, #3
+ bls _021E24F8
+ b _021E260E
+_021E24F8:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021E2504: ; jump table
+ .short _021E250C - _021E2504 - 2 ; case 0
+ .short _021E2592 - _021E2504 - 2 ; case 1
+ .short _021E25B8 - _021E2504 - 2 ; case 2
+ .short _021E260A - _021E2504 - 2 ; case 3
+_021E250C:
+ ldrb r0, [r4, #5]
+ add r0, r0, #1
+ strb r0, [r4, #5]
+ ldrb r0, [r4, #5]
+ lsl r1, r0, #1
+ cmp r1, #0xa
+ bge _021E2562
+ mov r1, #0xa
+ sub r1, r1, r0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp]
+ mov r1, #0x20
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ ldr r2, [r5, #0x30]
+ ldr r0, [r5, #4]
+ mov r1, #1
+ add r2, #0xc
+ mov r3, #0
+ bl FUN_02018148
+ ldrb r6, [r4, #5]
+ mov r0, #0x20
+ mov r3, #0xa
+ str r0, [sp]
+ str r6, [sp, #4]
+ ldr r1, [r5, #0x30]
+ mov r2, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ sub r1, r3, r6
+ lsl r1, r1, #0x18
+ str r2, [sp, #0xc]
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r3, [sp, #0x18]
+ ldr r0, [r5, #4]
+ mov r1, #1
+ bl FUN_02018170
+ b _021E2582
+_021E2562:
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ ldr r2, [r5, #0x30]
+ ldr r0, [r5, #4]
+ mov r1, #1
+ add r2, #0xc
+ mov r3, #0
+ bl FUN_02018148
+ ldrb r0, [r4, #4]
+ add r0, r0, #1
+ strb r0, [r4, #4]
+_021E2582:
+ ldr r0, [r5, #4]
+ mov r1, #1
+ bl FUN_02017CD0
+ mov r0, #7
+ add sp, #0x1c
+ strb r0, [r4, #5]
+ pop {r3, r4, r5, r6, pc}
+_021E2592:
+ ldrb r0, [r4, #5]
+ add r3, r5, #0
+ mov r2, #0x60
+ add r1, r0, #0
+ add r3, #0xe4
+ mul r1, r2
+ add r0, r3, r1
+ mov r1, #0x1a
+ lsl r1, r1, #4
+ bl GX_LoadOBJPltt
+ add r0, r5, #0
+ bl MOD14_021E2360
+ ldrb r0, [r4, #4]
+ add sp, #0x1c
+ add r0, r0, #1
+ strb r0, [r4, #4]
+ pop {r3, r4, r5, r6, pc}
+_021E25B8:
+ ldrb r0, [r4, #5]
+ cmp r0, #0
+ beq _021E25C2
+ sub r0, r0, #1
+ strb r0, [r4, #5]
+_021E25C2:
+ ldrb r0, [r4, #5]
+ add r3, r5, #0
+ mov r2, #0x60
+ add r1, r0, #0
+ add r3, #0xe4
+ mul r1, r2
+ add r0, r3, r1
+ mov r1, #0x1a
+ lsl r1, r1, #4
+ bl GX_LoadOBJPltt
+ ldrb r0, [r4, #5]
+ cmp r0, #0
+ bne _021E260E
+ ldr r0, [r5, #0x10]
+ bl FUN_02019270
+ ldr r0, [r5, #0x10]
+ add r0, #0x10
+ bl FUN_02019270
+ add r0, r5, #0
+ bl MOD14_021E2394
+ add r0, r5, #0
+ bl MOD14_021E240C
+ ldr r0, [r5, #4]
+ mov r1, #1
+ bl FUN_02017CD0
+ ldrb r0, [r4, #4]
+ add sp, #0x1c
+ add r0, r0, #1
+ strb r0, [r4, #4]
+ pop {r3, r4, r5, r6, pc}
+_021E260A:
+ bl MOD14_021E24BC
+_021E260E:
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E2614
+MOD14_021E2614: ; 0x021E2614
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ add r5, r1, #0
+ ldrb r2, [r5, #4]
+ ldr r4, [r5]
+ cmp r2, #0
+ beq _021E262E
+ cmp r2, #1
+ beq _021E264A
+ cmp r2, #2
+ beq _021E26DC
+ add sp, #0x1c
+ pop {r4, r5, pc}
+_021E262E:
+ add r0, r4, #0
+ bl MOD14_021E2340
+ add r0, r4, #0
+ bl MOD14_021E23F8
+ add r0, r4, #0
+ bl MOD14_021E2464
+ ldrb r0, [r5, #4]
+ add sp, #0x1c
+ add r0, r0, #1
+ strb r0, [r5, #4]
+ pop {r4, r5, pc}
+_021E264A:
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ mov r2, #0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_02018540
+ ldrb r0, [r5, #5]
+ add r0, r0, #1
+ strb r0, [r5, #5]
+ ldrb r0, [r5, #5]
+ lsl r1, r0, #1
+ cmp r1, #0xa
+ bge _021E26CA
+ add r1, r0, #5
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp]
+ mov r1, #0x20
+ str r1, [sp, #4]
+ mov r1, #5
+ sub r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r2, [r4, #0x30]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ add r2, #0xc
+ mov r3, #0
+ bl FUN_02018148
+ ldrb r1, [r5, #5]
+ mov r2, #5
+ mov r0, #0x20
+ sub r2, r2, r1
+ lsl r2, r2, #0x18
+ mov r3, #0xa
+ sub r1, r3, r1
+ lsl r1, r1, #0x18
+ str r0, [sp]
+ lsr r2, r2, #0x18
+ str r2, [sp, #4]
+ ldr r2, [r4, #0x30]
+ lsr r1, r1, #0x18
+ add r2, #0xc
+ str r2, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r3, [sp, #0x18]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02018170
+ b _021E26D0
+_021E26CA:
+ ldrb r0, [r5, #4]
+ add r0, r0, #1
+ strb r0, [r5, #4]
+_021E26D0:
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02017CD0
+ add sp, #0x1c
+ pop {r4, r5, pc}
+_021E26DC:
+ bl MOD14_021E24BC
+ add sp, #0x1c
+ pop {r4, r5, pc}
+
+ thumb_func_start MOD14_021E26E4
+MOD14_021E26E4: ; 0x021E26E4
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0xa
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021E2798
+ ldr r0, [r5, #0xc]
+ bl MOD14_021DC544
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ mov r1, #1
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #7
+ str r0, [sp, #8]
+ ldr r2, [r5, #0x38]
+ ldr r0, [r5, #4]
+ mov r1, #1
+ add r2, #0xc
+ mov r3, #0
+ bl FUN_02018148
+ ldr r0, [r5, #0x10]
+ mov r1, #4
+ add r0, #0x20
+ bl FUN_02019620
+ ldr r2, _021E279C ; =0x00004BF8
+ add r1, r6, #0
+ ldr r0, [r5, r2]
+ add r2, r2, #4
+ ldr r2, [r5, r2]
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E27A0 ; =0x00020104
+ ldr r2, _021E27A4 ; =0x00004BFC
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5, #0x10]
+ ldr r2, [r5, r2]
+ add r0, #0x20
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ ldr r0, [r5, #0x10]
+ add r0, #0x20
+ bl FUN_020191D0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD14_021E2940
+ mov r1, #0
+ strh r1, [r4, #0x16]
+ str r5, [r4]
+ ldr r0, [r5, #4]
+ str r0, [r4, #4]
+ str r1, [r4, #8]
+ mov r1, #0xe
+ lsl r1, r1, #0xe
+ str r1, [r4, #0xc]
+ ldr r0, [r4, #8]
+ sub r0, r1, r0
+ mov r1, #6
+ bl _s32_div_f
+ str r0, [r4, #0x10]
+ mov r0, #6
+ strh r0, [r4, #0x14]
+ ldr r0, _021E27A8 ; =MOD14_021E27C4
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD14_021DDD40
+ add r5, #0xdc
+ str r0, [r5]
+_021E2798:
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021E279C: .word 0x00004BF8
+_021E27A0: .word 0x00020104
+_021E27A4: .word 0x00004BFC
+_021E27A8: .word MOD14_021E27C4
+
+ thumb_func_start MOD14_021E27AC
+MOD14_021E27AC: ; 0x021E27AC
+ add r0, #0xdc
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E27B8
+ mov r0, #1
+ bx lr
+_021E27B8:
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD14_021E27BC
+MOD14_021E27BC: ; 0x021E27BC
+ mov r1, #0
+ add r0, #0xdc
+ str r1, [r0]
+ bx lr
+
+ thumb_func_start MOD14_021E27C4
+MOD14_021E27C4: ; 0x021E27C4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4, #0x16]
+ cmp r0, #0
+ beq _021E27D6
+ cmp r0, #1
+ beq _021E27DC
+ pop {r3, r4, r5, pc}
+_021E27D6:
+ add r0, r0, #1
+ strh r0, [r4, #0x16]
+ pop {r3, r4, r5, pc}
+_021E27DC:
+ ldrh r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021E280A
+ sub r0, r0, #1
+ strh r0, [r4, #0x14]
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0x10]
+ mov r2, #3
+ add r3, r1, r0
+ str r3, [r4, #8]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ asr r3, r3, #0xc
+ bl FUN_020179E0
+ mov r1, #0xe
+ ldr r2, [r4, #8]
+ lsl r1, r1, #0x10
+ ldr r0, [r4]
+ sub r1, r1, r2
+ bl MOD14_021E2A00
+ pop {r3, r4, r5, pc}
+_021E280A:
+ ldr r3, [r4, #0xc]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ mov r2, #3
+ asr r3, r3, #0xc
+ bl FUN_020179E0
+ mov r1, #0xe
+ ldr r2, [r4, #0xc]
+ lsl r1, r1, #0x10
+ ldr r0, [r4]
+ sub r1, r1, r2
+ bl MOD14_021E2A00
+ ldr r1, _021E2838 ; =MOD14_021E27BC
+ ldr r2, [r4]
+ add r0, r4, #0
+ bl MOD14_021DDF30
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E2838: .word MOD14_021E27BC
+
+ thumb_func_start MOD14_021E283C
+MOD14_021E283C: ; 0x021E283C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0xa
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021E287C
+ mov r1, #0
+ strh r1, [r4, #0x16]
+ str r5, [r4]
+ ldr r0, [r5, #4]
+ str r0, [r4, #4]
+ mov r0, #0xe
+ lsl r0, r0, #0xe
+ str r0, [r4, #8]
+ str r1, [r4, #0xc]
+ ldr r0, [r4, #8]
+ sub r0, r1, r0
+ mov r1, #6
+ bl _s32_div_f
+ str r0, [r4, #0x10]
+ mov r0, #6
+ strh r0, [r4, #0x14]
+ ldr r0, _021E2880 ; =MOD14_021E28B4
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD14_021DDD40
+ add r5, #0xdc
+ str r0, [r5]
+_021E287C:
+ pop {r3, r4, r5, pc}
+ nop
+_021E2880: .word MOD14_021E28B4
+
+ thumb_func_start MOD14_021E2884
+MOD14_021E2884: ; 0x021E2884
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E28A6
+ ldr r0, [r4, #4]
+ mov r1, #1
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ bl MOD14_021E2A28
+ mov r0, #1
+ pop {r4, pc}
+_021E28A6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E28AC
+MOD14_021E28AC: ; 0x021E28AC
+ mov r1, #0
+ add r0, #0xdc
+ str r1, [r0]
+ bx lr
+
+ thumb_func_start MOD14_021E28B4
+MOD14_021E28B4: ; 0x021E28B4
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021E28EC
+ sub r0, r0, #1
+ strh r0, [r4, #0x14]
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0x10]
+ mov r2, #3
+ add r3, r1, r0
+ str r3, [r4, #8]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ asr r3, r3, #0xc
+ bl FUN_020179E0
+ mov r1, #0xe
+ ldr r2, [r4, #8]
+ lsl r1, r1, #0x10
+ ldr r0, [r4]
+ sub r1, r1, r2
+ bl MOD14_021E2A00
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_021E28EC:
+ ldr r3, [r4, #0xc]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ mov r2, #3
+ asr r3, r3, #0xc
+ bl FUN_020179E0
+ mov r1, #0xe
+ ldr r2, [r4, #0xc]
+ lsl r1, r1, #0x10
+ ldr r0, [r4]
+ sub r1, r1, r2
+ bl MOD14_021E2A00
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #4]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_02018540
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02017CD0
+ ldr r1, _021E293C ; =MOD14_021E28AC
+ ldr r2, [r4]
+ add r0, r4, #0
+ bl MOD14_021DDF30
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E293C: .word MOD14_021E28AC
+
+ thumb_func_start MOD14_021E2940
+MOD14_021E2940: ; 0x021E2940
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x54
+ add r5, r0, #0
+ add r4, r1, #0
+ beq _021E29F6
+ ldr r0, [r5]
+ bl MOD14_021DDD50
+ add r6, r0, #0
+ ldr r0, [r5]
+ bl MOD14_021DDD48
+ add r2, r0, #0
+ ldr r0, [r6, #0x20]
+ add r1, sp, #0xc
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r3, [r6, #0x1c]
+ add r0, sp, #0x30
+ bl MOD14_021DDDB4
+ add r0, sp, #0xc
+ bl FUN_020B1A24
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #1
+ bl FUN_0206E640
+ add r1, r0, #0
+ mov r0, #0xa
+ str r0, [sp]
+ mov r0, #0x10
+ mov r2, #0
+ add r3, sp, #8
+ bl FUN_02006BB0
+ add r6, r0, #0
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r1, [r0]
+ ldr r0, _021E29FC ; =0x00300010
+ mov r2, #1
+ and r1, r0
+ ldr r0, [sp, #8]
+ add r3, sp, #0xc
+ str r1, [r0, #8]
+ mov r1, #0xbe
+ ldr r0, [sp, #8]
+ lsl r1, r1, #8
+ bl FUN_020B1768
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #2
+ bl FUN_0206E640
+ add r1, r0, #0
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #0x10
+ mov r2, #1
+ mov r3, #0xc0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #8]
+ add r1, sp, #0x30
+ mov r2, #0x12
+ mov r3, #0xe0
+ bl MOD14_021DDDD4
+ add r1, r5, #0
+ add r1, #0x90
+ add r5, #0x90
+ str r0, [r1]
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021E29F0
+ mov r1, #6
+ bl FUN_02020248
+_021E29F0:
+ add r0, r6, #0
+ bl FUN_02016A18
+_021E29F6:
+ add sp, #0x54
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E29FC: .word 0x00300010
+
+ thumb_func_start MOD14_021E2A00
+MOD14_021E2A00: ; 0x021E2A00
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r2, #0x90
+ ldr r2, [r2]
+ cmp r2, #0
+ beq _021E2A24
+ mov r2, #0x12
+ lsl r2, r2, #0xc
+ str r1, [sp, #4]
+ mov r1, #0
+ str r1, [sp, #8]
+ str r2, [sp]
+ add r0, #0x90
+ ldr r0, [r0]
+ add r1, sp, #0
+ bl FUN_02020044
+_021E2A24:
+ add sp, #0xc
+ pop {pc}
+
+ thumb_func_start MOD14_021E2A28
+MOD14_021E2A28: ; 0x021E2A28
+ push {r3, lr}
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E2A36
+ bl FUN_0201FFC8
+_021E2A36:
+ pop {r3, pc}
+
+ thumb_func_start MOD14_021E2A38
+MOD14_021E2A38: ; 0x021E2A38
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ str r4, [r5]
+ ldr r0, [sp, #0x18]
+ str r6, [r5, #0xc]
+ str r0, [r5, #8]
+ str r3, [r5, #4]
+ add r0, r4, #0
+ bl MOD14_021DDD50
+ str r0, [r5, #0x38]
+ add r0, r4, #0
+ bl MOD14_021DDD58
+ str r0, [r5, #0x10]
+ add r0, r6, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ beq _021E2A6E
+ mov r0, #0xe
+ str r0, [r5, #0x30]
+ mov r0, #0
+ b _021E2A74
+_021E2A6E:
+ mov r0, #9
+ str r0, [r5, #0x30]
+ sub r0, #0x31
+_021E2A74:
+ str r0, [r5, #0x34]
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x2b
+ strb r1, [r0]
+ str r1, [r5, #0x2c]
+ add r1, r5, #0
+ ldr r0, [r5, #0x38]
+ add r1, #0x3c
+ mov r2, #6
+ bl MOD14_021E08E4
+ mov r1, #9
+ mov r0, #0xa
+ lsl r1, r1, #6
+ bl FUN_02016998
+ str r0, [r5, #0x1c]
+ mov r0, #0xa
+ add r3, r5, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #6
+ mov r2, #1
+ add r3, #0x18
+ bl FUN_02006BDC
+ str r0, [r5, #0x14]
+ cmp r0, #0
+ beq _021E2AB6
+ ldr r1, [r5, #0x1c]
+ cmp r1, #0
+ bne _021E2ABC
+_021E2AB6:
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, r5, r6, pc}
+_021E2ABC:
+ add r0, r5, #0
+ bl MOD14_021E31F4
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021E2AC8
+MOD14_021E2AC8: ; 0x021E2AC8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021E2AD6
+ bl FUN_02016A18
+_021E2AD6:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _021E2AE0
+ bl FUN_02016A18
+_021E2AE0:
+ add r0, r4, #0
+ bl MOD14_021E3390
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E2AE8
+MOD14_021E2AE8: ; 0x021E2AE8
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ mov r2, #0
+ add r1, #0x2b
+ strb r2, [r1]
+ add r1, r4, #0
+ add r1, #0x2b
+ ldrb r1, [r1]
+ bl MOD14_021E31A4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD14_021E32F8
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02017CD0
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E2B10
+MOD14_021E2B10: ; 0x021E2B10
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0
+ bl MOD14_021E32F8
+ add r0, r4, #0
+ mov r1, #0x1a
+ add r0, #0x2b
+ strb r1, [r0]
+ ldr r0, _021E2B3C ; =MOD14_021E2B50
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD14_021DDD40
+ cmp r0, #0
+ beq _021E2B34
+ mov r0, #1
+ b _021E2B36
+_021E2B34:
+ mov r0, #0
+_021E2B36:
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+ nop
+_021E2B3C: .word MOD14_021E2B50
+
+ thumb_func_start MOD14_021E2B40
+MOD14_021E2B40: ; 0x021E2B40
+ ldr r0, [r0, #0x2c]
+ cmp r0, #0
+ bne _021E2B4A
+ mov r0, #1
+ bx lr
+_021E2B4A:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021E2B50
+MOD14_021E2B50: ; 0x021E2B50
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r0, #0x2b
+ ldrb r0, [r0]
+ cmp r0, #2
+ bls _021E2B6C
+ add r0, r5, #0
+ add r0, #0x2b
+ ldrb r0, [r0]
+ ldr r4, _021E2BAC ; =0xFFFF0000
+ sub r1, r0, #2
+ b _021E2B72
+_021E2B6C:
+ lsl r0, r0, #0xf
+ neg r4, r0
+ mov r1, #0
+_021E2B72:
+ add r0, r5, #0
+ add r0, #0x2b
+ strb r1, [r0]
+ add r1, r5, #0
+ add r1, #0x2b
+ ldrb r1, [r1]
+ add r0, r5, #0
+ bl MOD14_021E31A4
+ ldr r0, [r5, #4]
+ mov r1, #2
+ bl FUN_02017CD0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD14_021E3290
+ add r0, r5, #0
+ add r0, #0x2b
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021E2BA8
+ mov r0, #0
+ str r0, [r5, #0x2c]
+ add r0, r6, #0
+ bl FUN_0200CAB4
+_021E2BA8:
+ pop {r4, r5, r6, pc}
+ nop
+_021E2BAC: .word 0xFFFF0000
+
+ thumb_func_start MOD14_021E2BB0
+MOD14_021E2BB0: ; 0x021E2BB0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E2BCC ; =MOD14_021E2BE4
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD14_021DDD40
+ cmp r0, #0
+ beq _021E2BC6
+ mov r0, #1
+ b _021E2BC8
+_021E2BC6:
+ mov r0, #0
+_021E2BC8:
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+ .align 2, 0
+_021E2BCC: .word MOD14_021E2BE4
+
+ thumb_func_start MOD14_021E2BD0
+MOD14_021E2BD0: ; 0x021E2BD0
+ push {r3, lr}
+ ldr r1, [r0, #0x2c]
+ cmp r1, #0
+ bne _021E2BE0
+ bl MOD14_021E3390
+ mov r0, #1
+ pop {r3, pc}
+_021E2BE0:
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD14_021E2BE4
+MOD14_021E2BE4: ; 0x021E2BE4
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r0, #0x2b
+ ldrb r0, [r0]
+ cmp r0, #0x18
+ bhs _021E2C04
+ add r0, r5, #0
+ add r0, #0x2b
+ ldrb r0, [r0]
+ mov r4, #1
+ lsl r4, r4, #0x10
+ add r1, r0, #2
+ b _021E2C0A
+_021E2C04:
+ mov r1, #0x1a
+ sub r0, r1, r0
+ lsl r4, r0, #0xf
+_021E2C0A:
+ add r0, r5, #0
+ add r0, #0x2b
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0x2b
+ ldrb r1, [r0]
+ cmp r1, #2
+ bls _021E2C46
+ asr r0, r4, #0xc
+ lsr r0, r0, #3
+ sub r1, r1, #2
+ sub r1, r1, r0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp]
+ mov r1, #0xf
+ lsl r0, r0, #0x18
+ str r1, [sp, #4]
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r3, [r5, #0x30]
+ ldr r0, [r5, #4]
+ lsl r3, r3, #0x18
+ mov r1, #2
+ mov r2, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+_021E2C46:
+ add r1, r5, #0
+ add r1, #0x2b
+ ldrb r1, [r1]
+ add r0, r5, #0
+ bl MOD14_021E31A4
+ ldr r0, [r5, #4]
+ mov r1, #2
+ bl FUN_02017CD0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD14_021E3290
+ add r0, r5, #0
+ add r0, #0x2b
+ ldrb r0, [r0]
+ cmp r0, #0x1a
+ bne _021E2C76
+ mov r0, #0
+ str r0, [r5, #0x2c]
+ add r0, r6, #0
+ bl FUN_0200CAB4
+_021E2C76:
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E2C7C
+MOD14_021E2C7C: ; 0x021E2C7C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ ldr r0, [r6, #0xc]
+ ldr r0, [r0, #4]
+ bl FUN_0206B9AC
+ add r1, r6, #0
+ add r1, #0x28
+ ldrb r4, [r1]
+ cmp r4, r0
+ bge _021E2D20
+ sub r0, r0, r4
+ str r0, [sp, #8]
+ cmp r4, #5
+ bge _021E2CF8
+ mov r0, #0x34
+ add r1, r4, #0
+ mul r1, r0
+ add r0, r6, #0
+ str r0, [sp, #0xc]
+ add r0, #0x3c
+ str r0, [sp, #0xc]
+ add r5, r0, r1
+ add r7, r6, r1
+ ldr r0, _021E2D28 ; =0x00000418
+ lsl r1, r4, #5
+ add r0, r1, r0
+ str r0, [sp, #4]
+_021E2CB6:
+ add r1, r4, #1
+ mov r0, #0x34
+ mul r0, r1
+ ldr r1, [sp, #0xc]
+ str r0, [sp]
+ add r0, r1, r0
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD14_021E0930
+ ldr r2, [sp, #0xc]
+ ldr r1, [sp]
+ ldr r0, [r6, #0x38]
+ add r1, r2, r1
+ mov r2, #1
+ bl MOD14_021E08E4
+ ldr r0, [r7, #0x3c]
+ cmp r0, #0
+ beq _021E2CE8
+ ldr r0, [r6, #0x38]
+ ldr r2, [sp, #4]
+ add r1, r5, #0
+ bl MOD14_021E0BBC
+_021E2CE8:
+ ldr r0, [sp, #4]
+ add r4, r4, #1
+ add r0, #0x20
+ add r5, #0x34
+ add r7, #0x34
+ str r0, [sp, #4]
+ cmp r4, #5
+ blt _021E2CB6
+_021E2CF8:
+ add r1, r6, #0
+ ldr r0, [sp, #8]
+ add r1, #0x29
+ strb r0, [r1]
+ add r0, r6, #0
+ mov r2, #0
+ add r0, #0x2a
+ strb r2, [r0]
+ ldr r0, _021E2D2C ; =MOD14_021E2D30
+ add r1, r6, #0
+ bl MOD14_021DDD40
+ cmp r0, #0
+ beq _021E2D18
+ mov r0, #1
+ b _021E2D1A
+_021E2D18:
+ mov r0, #0
+_021E2D1A:
+ add sp, #0x10
+ str r0, [r6, #0x2c]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E2D20:
+ mov r0, #0
+ str r0, [r6, #0x2c]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E2D28: .word 0x00000418
+_021E2D2C: .word MOD14_021E2D30
+
+ thumb_func_start MOD14_021E2D30
+MOD14_021E2D30: ; 0x021E2D30
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r1, [sp, #4]
+ ldr r2, [sp, #4]
+ str r0, [sp]
+ add r1, #0x28
+ ldr r0, [sp, #4]
+ add r2, #0x2a
+ add r0, #0x29
+ ldrb r7, [r0]
+ ldr r0, [sp, #4]
+ ldrb r1, [r1]
+ ldrb r3, [r2]
+ ldr r0, [r0, #0x1c]
+ lsl r2, r1, #3
+ add r3, r3, r2
+ mov r2, #0xc
+ mul r2, r3
+ add r4, r0, r2
+ mov r6, #0
+ cmp r7, #0
+ ble _021E2D7C
+ mov r0, #0x34
+ add r2, r1, #0
+ mul r2, r0
+ ldr r0, [sp, #4]
+ add r5, r0, r2
+_021E2D66:
+ ldr r0, [r5, #0x3c]
+ cmp r0, #0
+ beq _021E2D72
+ add r1, r4, #0
+ bl FUN_02020044
+_021E2D72:
+ add r6, r6, #1
+ add r5, #0x34
+ add r4, #0x60
+ cmp r6, r7
+ blt _021E2D66
+_021E2D7C:
+ ldr r0, [sp, #4]
+ add r0, #0x2a
+ ldrb r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #4]
+ add r0, #0x2a
+ strb r1, [r0]
+ ldr r0, [sp, #4]
+ add r0, #0x2a
+ ldrb r0, [r0]
+ cmp r0, #8
+ blo _021E2DA0
+ ldr r0, [sp, #4]
+ mov r1, #0
+ str r1, [r0, #0x2c]
+ ldr r0, [sp]
+ bl FUN_0200CAB4
+_021E2DA0:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E2DA4
+MOD14_021E2DA4: ; 0x021E2DA4
+ ldr r0, [r0, #0x2c]
+ cmp r0, #0
+ bne _021E2DAE
+ mov r0, #1
+ bx lr
+_021E2DAE:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021E2DB4
+MOD14_021E2DB4: ; 0x021E2DB4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ ldr r0, [r0, #4]
+ bl FUN_0206B9AC
+ sub r4, r0, #1
+ add r0, r5, #0
+ add r0, #0x28
+ ldrb r0, [r0]
+ cmp r0, r4
+ bls _021E2E3A
+ mov r0, #0x34
+ mul r0, r4
+ add r0, r5, r0
+ ldr r0, [r0, #0x3c]
+ bl FUN_0202011C
+ add r3, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ ldr r1, _021E2E44 ; =0x021E6650
+ str r0, [r2]
+ lsl r0, r4, #2
+ ldrh r1, [r1, r0]
+ ldr r2, [r5, #0x34]
+ add r1, r2, r1
+ lsl r2, r1, #0xc
+ ldr r1, [sp]
+ sub r2, r2, r1
+ asr r1, r2, #2
+ lsr r1, r1, #0x1d
+ add r1, r2, r1
+ asr r1, r1, #3
+ str r1, [r5, #0x20]
+ ldr r1, _021E2E48 ; =0x021E6652
+ mov r2, #0
+ ldrh r0, [r1, r0]
+ lsl r1, r0, #0xc
+ ldr r0, [sp, #4]
+ sub r1, r1, r0
+ asr r0, r1, #2
+ lsr r0, r0, #0x1d
+ add r0, r1, r0
+ asr r0, r0, #3
+ str r0, [r5, #0x24]
+ add r0, r5, #0
+ add r0, #0x2a
+ strb r2, [r0]
+ add r0, r5, #0
+ add r0, #0x28
+ strb r4, [r0]
+ ldr r0, _021E2E4C ; =MOD14_021E2E60
+ add r1, r5, #0
+ bl MOD14_021DDD40
+ cmp r0, #0
+ beq _021E2E32
+ mov r0, #1
+ b _021E2E34
+_021E2E32:
+ mov r0, #0
+_021E2E34:
+ add sp, #0xc
+ str r0, [r5, #0x2c]
+ pop {r4, r5, pc}
+_021E2E3A:
+ mov r0, #0
+ str r0, [r5, #0x2c]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021E2E44: .word 0x021E6650
+_021E2E48: .word 0x021E6652
+_021E2E4C: .word MOD14_021E2E60
+
+ thumb_func_start MOD14_021E2E50
+MOD14_021E2E50: ; 0x021E2E50
+ ldr r0, [r0, #0x2c]
+ cmp r0, #0
+ bne _021E2E5A
+ mov r0, #1
+ bx lr
+_021E2E5A:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021E2E60
+MOD14_021E2E60: ; 0x021E2E60
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r0, #0x28
+ ldrb r1, [r0]
+ mov r0, #0x34
+ mul r0, r1
+ add r0, r5, r0
+ ldr r0, [r0, #0x3c]
+ bl FUN_0202011C
+ add r3, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ add r0, r5, #0
+ add r0, #0x2a
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x2a
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0x2a
+ ldrb r0, [r0]
+ cmp r0, #8
+ blo _021E2EC6
+ add r1, r5, #0
+ add r1, #0x28
+ ldrb r1, [r1]
+ ldr r0, [r5, #0x34]
+ mov r4, #1
+ lsl r2, r1, #2
+ ldr r1, _021E2F00 ; =0x021E6650
+ ldrh r1, [r1, r2]
+ add r0, r0, r1
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x28
+ ldrb r0, [r0]
+ lsl r1, r0, #2
+ ldr r0, _021E2F04 ; =0x021E6652
+ ldrh r0, [r0, r1]
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ b _021E2ED8
+_021E2EC6:
+ ldr r1, [sp]
+ ldr r0, [r5, #0x20]
+ mov r4, #0
+ add r0, r1, r0
+ str r0, [sp]
+ ldr r1, [sp, #4]
+ ldr r0, [r5, #0x24]
+ add r0, r1, r0
+ str r0, [sp, #4]
+_021E2ED8:
+ add r0, r5, #0
+ add r0, #0x28
+ ldrb r1, [r0]
+ mov r0, #0x34
+ mul r0, r1
+ add r0, r5, r0
+ ldr r0, [r0, #0x3c]
+ add r1, sp, #0
+ bl FUN_02020044
+ cmp r4, #0
+ beq _021E2EFA
+ mov r0, #0
+ str r0, [r5, #0x2c]
+ add r0, r6, #0
+ bl FUN_0200CAB4
+_021E2EFA:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E2F00: .word 0x021E6650
+_021E2F04: .word 0x021E6652
+
+ thumb_func_start MOD14_021E2F08
+MOD14_021E2F08: ; 0x021E2F08
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ bl MOD14_021DC424
+ mov r1, #0x11
+ ldr r2, [r5, #0xc]
+ lsl r1, r1, #4
+ ldrh r1, [r2, r1]
+ cmp r1, r0
+ bne _021E2F24
+ ldr r0, [r5, #0x10]
+ bl MOD14_021DEA50
+_021E2F24:
+ ldr r0, [r5, #0xc]
+ bl MOD14_021DC3E8
+ add r4, r0, #0
+ add r2, r5, #0
+ mov r1, #0x34
+ ldr r0, [r5, #0x38]
+ add r2, #0x3c
+ mul r1, r4
+ add r1, r2, r1
+ mov r2, #1
+ bl MOD14_021E0908
+ add r5, #0x28
+ strb r4, [r5]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021E2F44
+MOD14_021E2F44: ; 0x021E2F44
+ add r2, r0, #0
+ mov r0, #0x5d
+ mov r3, #0
+ lsl r0, r0, #2
+ strb r3, [r2, r0]
+ add r0, r2, #0
+ add r0, #0x28
+ mov r3, #0x34
+ strb r1, [r0]
+ ldr r0, [r2, #0x38]
+ add r2, #0x3c
+ mul r3, r1
+ add r1, r2, r3
+ ldr r3, _021E2F64 ; =MOD14_021E0C20
+ mov r2, #1
+ bx r3
+ .align 2, 0
+_021E2F64: .word MOD14_021E0C20
+
+ thumb_func_start MOD14_021E2F68
+MOD14_021E2F68: ; 0x021E2F68
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, #0x28
+ ldrb r1, [r0]
+ add r4, r5, #0
+ mov r0, #0x34
+ add r6, r1, #0
+ mul r6, r0
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ add r4, #0x3c
+ cmp r0, #0
+ beq _021E2F8A
+ cmp r0, #1
+ beq _021E2FD2
+ b _021E2FE2
+_021E2F8A:
+ ldr r0, [r5, #0x38]
+ add r1, r4, r6
+ bl MOD14_021E0C48
+ cmp r0, #0
+ beq _021E2FE2
+ ldr r0, [r5]
+ bl MOD14_021DDEDC
+ add r7, r0, #0
+ bl MOD14_021DA1B8
+ cmp r0, #0
+ beq _021E2FE2
+ add r0, r7, #0
+ bl MOD14_021DA1C0
+ cmp r0, #0
+ ldr r0, [r5, #0x38]
+ beq _021E2FBE
+ add r1, r4, r6
+ mov r2, #1
+ bl MOD14_021E0908
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E2FBE:
+ add r1, r4, r6
+ mov r2, #2
+ bl MOD14_021E0C20
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldrb r1, [r5, r0]
+ add r1, r1, #1
+ strb r1, [r5, r0]
+ b _021E2FE2
+_021E2FD2:
+ ldr r0, [r5, #0x38]
+ add r1, r4, r6
+ bl MOD14_021E0C48
+ cmp r0, #0
+ beq _021E2FE2
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E2FE2:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E2FE8
+MOD14_021E2FE8: ; 0x021E2FE8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, [r7, #0xc]
+ bl MOD14_021DC3CC
+ cmp r0, #1
+ bne _021E3020
+ ldr r0, [r7, #0xc]
+ bl MOD14_021DC484
+ add r5, r7, #0
+ str r0, [sp]
+ mov r6, #0
+ add r4, r7, #0
+ add r5, #0x3c
+_021E3006:
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0
+ beq _021E3016
+ ldr r0, [r7, #0x38]
+ ldr r2, [sp]
+ add r1, r5, #0
+ bl MOD14_021E0B54
+_021E3016:
+ add r6, r6, #1
+ add r4, #0x34
+ add r5, #0x34
+ cmp r6, #6
+ blt _021E3006
+_021E3020:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E3024
+MOD14_021E3024: ; 0x021E3024
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r5, #0
+ mov r0, #0x34
+ add r4, r1, #0
+ mul r4, r0
+ add r6, #0x3c
+ ldr r0, [r6, r4]
+ cmp r0, #0
+ beq _021E3050
+ ldr r0, [r5, #0x38]
+ add r1, r6, r4
+ bl MOD14_021E0BA8
+ ldr r0, [r5, #0xc]
+ bl MOD14_021DC484
+ add r2, r0, #0
+ ldr r0, [r5, #0x38]
+ add r1, r6, r4
+ bl MOD14_021E0B54
+_021E3050:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E3054
+MOD14_021E3054: ; 0x021E3054
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ bl MOD14_021DC3E8
+ add r4, r0, #0
+ ldr r0, [r5, #0xc]
+ bl MOD14_021DC45C
+ add r2, r0, #0
+ add r1, r5, #0
+ mov r0, #0x34
+ add r3, r4, #0
+ add r1, #0x3c
+ mul r3, r0
+ ldr r0, [r1, r3]
+ cmp r0, #0
+ beq _021E3080
+ ldr r0, [r5, #0x38]
+ add r1, r1, r3
+ bl MOD14_021E0BA4
+_021E3080:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E3084
+MOD14_021E3084: ; 0x021E3084
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ mov r0, #0x34
+ add r4, r6, #0
+ mul r4, r0
+ add r0, r5, #0
+ add r7, r3, #0
+ add r0, #0x3c
+ str r2, [sp]
+ add r0, r0, r4
+ add r1, r7, #0
+ mov r2, #1
+ bl MOD14_021E0930
+ ldr r0, [r5, #0x38]
+ ldr r2, [sp]
+ add r1, r7, #0
+ bl MOD14_021E0BBC
+ add r1, r5, #0
+ add r1, #0x3c
+ ldr r0, [r5, #0x38]
+ add r1, r1, r4
+ mov r2, #1
+ bl MOD14_021E08E4
+ add r5, #0x28
+ strb r6, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E30C0
+MOD14_021E30C0: ; 0x021E30C0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ str r1, [sp]
+ ldr r0, [r0, #4]
+ str r2, [sp, #4]
+ bl FUN_0206B9AC
+ sub r6, r0, #1
+ add r4, r5, #0
+ mov r0, #0x34
+ add r7, r6, #0
+ mul r7, r0
+ add r4, #0x3c
+ ldr r0, [sp, #4]
+ add r1, r4, r7
+ mov r2, #1
+ bl MOD14_021E0930
+ ldr r2, _021E3110 ; =0x00000418
+ lsl r3, r6, #5
+ ldr r0, [r5, #0x38]
+ add r1, r4, r7
+ add r2, r3, r2
+ bl MOD14_021E0BBC
+ ldr r0, [r4, r7]
+ mov r1, #1
+ bl FUN_02020238
+ ldr r0, [r4, r7]
+ add r1, r6, #4
+ bl MOD14_021DDE24
+ ldr r0, [sp]
+ add r5, #0x28
+ strb r0, [r5]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E3110: .word 0x00000418
+
+ thumb_func_start MOD14_021E3114
+MOD14_021E3114: ; 0x021E3114
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r6, r1, #0
+ add r5, r7, #0
+ mov r0, #0x34
+ add r4, r6, #0
+ mul r4, r0
+ add r5, #0x3c
+ add r0, r2, #0
+ add r1, r5, r4
+ mov r2, #1
+ bl MOD14_021E0930
+ ldr r2, _021E3154 ; =0x00000418
+ lsl r3, r6, #5
+ ldr r0, [r7, #0x38]
+ add r1, r5, r4
+ add r2, r3, r2
+ bl MOD14_021E0BBC
+ ldr r0, [r5, r4]
+ mov r1, #1
+ bl FUN_02020238
+ ldr r0, [r5, r4]
+ add r1, r6, #4
+ bl MOD14_021DDE24
+ add r7, #0x28
+ strb r6, [r7]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E3154: .word 0x00000418
+
+ thumb_func_start MOD14_021E3158
+MOD14_021E3158: ; 0x021E3158
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ cmp r4, #6
+ blo _021E3166
+ bl ErrorHandling
+_021E3166:
+ mov r0, #0x34
+ add r5, #0x3c
+ mul r0, r4
+ add r0, r5, r0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021E3170
+MOD14_021E3170: ; 0x021E3170
+ push {r3, r4}
+ cmp r1, #6
+ bne _021E3184
+ ldr r0, [r0, #0x34]
+ add r0, #0xc0
+ str r0, [r2]
+ mov r0, #0xb8
+ str r0, [r3]
+ pop {r3, r4}
+ bx lr
+_021E3184:
+ ldr r4, [r0, #0x34]
+ ldr r0, _021E319C ; =0x021E6650
+ lsl r1, r1, #2
+ ldrh r0, [r0, r1]
+ add r0, r4, r0
+ str r0, [r2]
+ ldr r0, _021E31A0 ; =0x021E6652
+ ldrh r0, [r0, r1]
+ str r0, [r3]
+ pop {r3, r4}
+ bx lr
+ nop
+_021E319C: .word 0x021E6650
+_021E31A0: .word 0x021E6652
+
+ thumb_func_start MOD14_021E31A4
+MOD14_021E31A4: ; 0x021E31A4
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r3, r0, #0
+ cmp r1, #2
+ bhi _021E31BE
+ mov r0, #2
+ sub r1, r0, r1
+ add r2, r1, #0
+ mov r0, #0x1e
+ mul r2, r0
+ mov r1, #0x18
+ mov r0, #0
+ b _021E31CC
+_021E31BE:
+ cmp r1, #0x1a
+ bhs _021E31F0
+ mov r0, #0x1a
+ sub r1, r0, r1
+ mov r0, #0x18
+ mov r2, #0
+ sub r0, r0, r1
+_021E31CC:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xf
+ str r0, [sp, #4]
+ lsl r0, r1, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r4, [r3, #0x18]
+ ldr r0, [r3, #4]
+ ldr r3, [r3, #0x30]
+ add r4, #0xc
+ lsl r3, r3, #0x18
+ mov r1, #2
+ add r2, r4, r2
+ lsr r3, r3, #0x18
+ bl FUN_02018148
+_021E31F0:
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD14_021E31F4
+MOD14_021E31F4: ; 0x021E31F4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp]
+ str r1, [sp, #4]
+ mov r0, #0
+ ldr r1, _021E328C ; =0x021E6650
+ mov ip, r0
+_021E3202:
+ ldrh r3, [r1]
+ ldrh r2, [r1, #4]
+ mov r0, #0
+ ldrh r4, [r1, #2]
+ sub r2, r3, r2
+ lsl r3, r2, #0xc
+ asr r2, r3, #2
+ lsr r2, r2, #0x1d
+ add r2, r3, r2
+ ldrh r3, [r1, #6]
+ asr r2, r2, #3
+ mov lr, r2
+ sub r3, r4, r3
+ lsl r4, r3, #0xc
+ asr r3, r4, #2
+ lsr r3, r3, #0x1d
+ add r3, r4, r3
+ ldr r2, [sp, #4]
+ add r6, r0, #0
+ asr r7, r3, #3
+ add r5, r0, #0
+_021E322C:
+ ldr r3, [sp]
+ add r5, r5, r7
+ ldr r4, [r3, #0x34]
+ ldrh r3, [r1, #4]
+ add r0, r0, #1
+ add r3, r4, r3
+ lsl r4, r3, #0xc
+ mov r3, lr
+ add r6, r6, r3
+ add r3, r4, r6
+ str r3, [r2]
+ ldrh r3, [r1, #6]
+ lsl r3, r3, #0xc
+ add r3, r3, r5
+ str r3, [r2, #4]
+ mov r3, #0
+ str r3, [r2, #8]
+ add r2, #0xc
+ cmp r0, #7
+ blo _021E322C
+ ldr r3, [sp]
+ mov r2, #0xc
+ ldr r4, [r3, #0x34]
+ ldrh r3, [r1]
+ mul r2, r0
+ ldr r0, [sp, #4]
+ add r3, r4, r3
+ lsl r4, r3, #0xc
+ ldr r3, [sp, #4]
+ add r0, r0, r2
+ str r4, [r3, r2]
+ ldrh r2, [r1, #2]
+ add r1, r1, #4
+ lsl r2, r2, #0xc
+ str r2, [r0, #4]
+ mov r2, #0
+ str r2, [r0, #8]
+ add r0, r3, #0
+ add r0, #0x60
+ str r0, [sp, #4]
+ mov r0, ip
+ add r0, r0, #1
+ mov ip, r0
+ cmp r0, #5
+ blo _021E3202
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E328C: .word 0x021E6650
+
+ thumb_func_start MOD14_021E3290
+MOD14_021E3290: ; 0x021E3290
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r7, #0
+_021E329A:
+ ldr r0, [r5, #0x3c]
+ cmp r0, #0
+ beq _021E32F2
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r2, #0
+ str r0, [r3]
+ ldr r0, [sp, #4]
+ add r0, r0, r4
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x3c]
+ bl FUN_02020044
+ cmp r4, #0
+ bge _021E32D8
+ mov r0, #0xd
+ ldr r1, [sp, #4]
+ lsl r0, r0, #0x10
+ cmp r1, r0
+ bge _021E32EA
+ ldr r0, [r5, #0x3c]
+ mov r1, #1
+ bl FUN_020200A0
+ b _021E32EA
+_021E32D8:
+ mov r0, #0xd
+ ldr r1, [sp, #4]
+ lsl r0, r0, #0x10
+ cmp r1, r0
+ blt _021E32EA
+ ldr r0, [r5, #0x3c]
+ mov r1, #0
+ bl FUN_020200A0
+_021E32EA:
+ add r7, r7, #1
+ add r5, #0x34
+ cmp r7, #6
+ blt _021E329A
+_021E32F2:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E32F8
+MOD14_021E32F8: ; 0x021E32F8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ str r0, [sp, #0x24]
+ str r1, [sp, #0x10]
+ cmp r1, #0
+ beq _021E330A
+ mov r0, #0
+ str r0, [sp, #0x14]
+ b _021E330E
+_021E330A:
+ mov r0, #0xd0
+ str r0, [sp, #0x14]
+_021E330E:
+ ldr r0, [sp, #0x24]
+ ldr r0, [r0, #0xc]
+ ldr r0, [r0, #4]
+ bl FUN_0206B9AC
+ mov r4, #0
+ str r0, [sp, #0x20]
+ cmp r0, #0
+ ble _021E3384
+ ldr r0, [sp, #0x24]
+ ldr r7, _021E3388 ; =0x00000418
+ str r0, [sp, #0x1c]
+ add r0, #0x3c
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x24]
+ ldr r5, _021E338C ; =0x021E6650
+ str r0, [sp, #0x18]
+_021E3330:
+ ldr r0, [sp, #0x24]
+ add r1, r4, #0
+ ldr r0, [r0, #0xc]
+ ldr r0, [r0, #4]
+ bl FUN_0206B9B0
+ add r1, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ add r0, r4, #4
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x1c]
+ str r7, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r2, [sp, #0x24]
+ ldr r0, [sp, #0x24]
+ ldr r3, [r2, #0x34]
+ ldrh r2, [r5]
+ ldrh r6, [r5, #2]
+ ldr r0, [r0, #0x38]
+ add r2, r3, r2
+ ldr r3, [sp, #0x14]
+ add r3, r3, r6
+ bl MOD14_021E0940
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x10]
+ ldr r0, [r0, #0x3c]
+ bl FUN_020200A0
+ ldr r0, [sp, #0x1c]
+ add r4, r4, #1
+ add r0, #0x34
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r7, #0x20
+ add r0, #0x34
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ add r5, r5, #4
+ cmp r4, r0
+ blt _021E3330
+_021E3384:
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E3388: .word 0x00000418
+_021E338C: .word 0x021E6650
+
+ thumb_func_start MOD14_021E3390
+MOD14_021E3390: ; 0x021E3390
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, [r7, #0xc]
+ ldr r0, [r0, #4]
+ bl FUN_0206B9AC
+ mov r6, #0
+ str r0, [sp]
+ cmp r0, #0
+ ble _021E33C6
+ add r5, r7, #0
+ add r4, r7, #0
+ add r5, #0x3c
+_021E33AA:
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0
+ beq _021E33BA
+ ldr r0, [r7, #0x38]
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD14_021E0908
+_021E33BA:
+ ldr r0, [sp]
+ add r6, r6, #1
+ add r4, #0x34
+ add r5, #0x34
+ cmp r6, r0
+ blt _021E33AA
+_021E33C6:
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E33C8
+MOD14_021E33C8: ; 0x021E33C8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r2, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r7, r1, #0
+ str r3, [sp]
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ bne _021E33E4
+ mov r0, #0
+ str r0, [r6]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E33E4:
+ mov r0, #0xa
+ mov r1, #0xf4
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021E3460
+ ldr r0, [sp]
+ mov r1, #0xa
+ str r0, [r4, #8]
+ str r7, [r4]
+ ldr r0, [sp, #0x18]
+ str r5, [r4, #4]
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #0x14]
+ mov r0, #0x20
+ bl FUN_020219F4
+ add r1, r4, #0
+ add r1, #0x84
+ str r0, [r1]
+ add r5, #0x9c
+ ldrb r0, [r5]
+ mov r1, #0
+ add r2, r1, #0
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ add r0, #0x98
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa0
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xb0
+ str r1, [r0]
+ str r1, [r4, #0x2c]
+ str r1, [r4, #0x30]
+ add r0, r4, #0
+_021E3436:
+ add r1, r1, #1
+ str r2, [r0, #0x34]
+ add r0, r0, #4
+ cmp r1, #8
+ blt _021E3436
+ add r0, r4, #0
+ mov r1, #0
+_021E3444:
+ add r2, r2, #1
+ str r1, [r0, #0x54]
+ add r0, r0, #4
+ cmp r2, #0xa
+ blt _021E3444
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ bl MOD14_021E3464
+ str r4, [r6]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E3460:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E3464
+MOD14_021E3464: ; 0x021E3464
+ push {r4, r5, r6, r7}
+ add r1, r0, #0
+ mov r2, #0
+ add r1, #0xd4
+ strb r2, [r1]
+ add r1, r0, #0
+ mov r4, #0x5a
+ mov r3, #0x10
+ add r1, #0xe4
+ strb r3, [r1]
+ ldr r1, _021E34BC ; =0x020EDF50
+ mov r3, #1
+ lsl r4, r4, #8
+ mov r6, #0x10
+_021E3480:
+ add r2, r2, r4
+ asr r5, r2, #0xc
+ lsl r5, r5, #2
+ ldr r5, [r1, r5]
+ lsl r5, r5, #4
+ asr r7, r5, #0xc
+ add r5, r0, r3
+ add r5, #0xd4
+ strb r7, [r5]
+ add r5, r0, r3
+ add r5, #0xd4
+ ldrb r5, [r5]
+ sub r7, r6, r5
+ add r5, r0, r3
+ add r5, #0xe4
+ add r3, r3, #1
+ strb r7, [r5]
+ cmp r3, #0xf
+ blt _021E3480
+ add r1, r0, r3
+ add r0, r0, r3
+ mov r2, #0x10
+ add r1, #0xd4
+ strb r2, [r1]
+ mov r1, #0
+ add r0, #0xe4
+ strb r1, [r0]
+ pop {r4, r5, r6, r7}
+ bx lr
+ nop
+_021E34BC: .word 0x020EDF50
+
+ thumb_func_start MOD14_021E34C0
+MOD14_021E34C0: ; 0x021E34C0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ beq _021E3558
+ add r0, #0x88
+ bl FUN_02019178
+ add r0, r6, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E34DA
+ bl FUN_02016A18
+_021E34DA:
+ add r0, r6, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E34E8
+ bl FUN_02016A18
+_021E34E8:
+ add r0, r6, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E34F6
+ bl FUN_02016A18
+_021E34F6:
+ add r0, r6, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E3504
+ bl FUN_02016A18
+_021E3504:
+ ldr r0, [r6, #0x2c]
+ cmp r0, #0
+ beq _021E350E
+ bl FUN_0201FFC8
+_021E350E:
+ ldr r0, [r6, #0x30]
+ cmp r0, #0
+ beq _021E3518
+ bl FUN_0201FFC8
+_021E3518:
+ add r0, r6, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E3526
+ bl FUN_02021A20
+_021E3526:
+ mov r4, #0
+ add r5, r6, #0
+_021E352A:
+ ldr r0, [r5, #0x34]
+ cmp r0, #0
+ beq _021E3534
+ bl FUN_0201FFC8
+_021E3534:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _021E352A
+ mov r5, #0
+ add r4, r6, #0
+_021E3540:
+ ldr r0, [r4, #0x54]
+ cmp r0, #0
+ beq _021E354A
+ bl FUN_0201FFC8
+_021E354A:
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #0xa
+ blt _021E3540
+ add r0, r6, #0
+ bl FUN_02016A18
+_021E3558:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E355C
+MOD14_021E355C: ; 0x021E355C
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ beq _021E365C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #8]
+ mov r0, #0x12
+ mov r1, #0x67
+ mov r3, #7
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #8]
+ mov r0, #0x12
+ mov r1, #0x64
+ mov r3, #7
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #8]
+ mov r0, #0x12
+ mov r1, #0x65
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #8]
+ mov r0, #0x12
+ mov r1, #0x66
+ mov r3, #5
+ bl FUN_020068C8
+ mov r2, #0
+ str r2, [sp]
+ ldr r0, [r4, #8]
+ mov r1, #4
+ mov r3, #1
+ bl FUN_02017F48
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #8]
+ mov r1, #4
+ add r3, r2, #0
+ bl FUN_02018540
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl FUN_02017CD0
+ ldr r3, [r4, #0x10]
+ ldr r0, [r4, #8]
+ lsl r5, r3, #2
+ ldr r3, _021E3660 ; =0x021E6674
+ mov r1, #5
+ ldr r3, [r3, r5]
+ mov r2, #0
+ bl FUN_020179E0
+ mov r3, #0
+ add r1, r4, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ ldr r0, [r4, #8]
+ add r1, #0x88
+ mov r2, #4
+ bl FUN_02019064
+ add r0, r4, #0
+ add r0, #0x88
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x88
+ bl FUN_020191D0
+ add r0, r4, #0
+ bl MOD14_021E4764
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #0x12
+ mov r1, #0x68
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ add r0, r4, #0
+ bl MOD14_021E3664
+_021E365C:
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_021E3660: .word 0x021E6674
+
+ thumb_func_start MOD14_021E3664
+MOD14_021E3664: ; 0x021E3664
+ push {r3, r4, lr}
+ sub sp, #0x5c
+ add r4, r0, #0
+ bl MOD14_021E36FC
+ add r0, sp, #0x14
+ bl FUN_020B1A24
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ add r0, sp, #0x14
+ str r0, [sp, #0x10]
+ mov r0, #0x12
+ mov r1, #0x72
+ mov r2, #1
+ bl FUN_02006AE4
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ add r3, r4, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ add r3, #0x9c
+ add r2, r4, #0
+ ldr r3, [r3]
+ add r0, sp, #0x38
+ add r1, sp, #0x14
+ add r2, #0x18
+ bl MOD14_021DDDB4
+ mov r0, #0x31
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r3, #0x8e
+ ldr r0, [r4, #0xc]
+ add r1, sp, #0x38
+ mov r2, #0
+ lsl r3, r3, #2
+ bl MOD14_021DDDD4
+ str r0, [r4, #0x2c]
+ mov r0, #0x31
+ mov r3, #0x8e
+ str r0, [sp]
+ mov r2, #2
+ str r2, [sp, #4]
+ ldr r0, [r4, #0xc]
+ add r1, sp, #0x38
+ add r2, #0xfe
+ lsl r3, r3, #2
+ bl MOD14_021DDDD4
+ str r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_02020100
+ ldr r0, [r4, #4]
+ bl MOD14_021DC3C4
+ cmp r0, #3
+ bne _021E36F6
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ bl FUN_02020130
+_021E36F6:
+ add sp, #0x5c
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E36FC
+MOD14_021E36FC: ; 0x021E36FC
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #0xa
+ add r3, r4, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0x73
+ mov r2, #1
+ add r3, #0x9c
+ bl FUN_02006C30
+ add r1, r4, #0
+ add r1, #0x98
+ str r0, [r1]
+ mov r0, #0xa
+ add r3, r4, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0x74
+ mov r2, #1
+ add r3, #0xa4
+ bl FUN_02006C5C
+ add r1, r4, #0
+ add r1, #0xa0
+ str r0, [r1]
+ mov r0, #0xa
+ add r3, r4, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0x76
+ mov r2, #1
+ add r3, #0xac
+ bl FUN_02006C30
+ add r1, r4, #0
+ add r1, #0xa8
+ str r0, [r1]
+ mov r0, #0xa
+ add r3, r4, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0x77
+ mov r2, #1
+ add r3, #0xb4
+ bl FUN_02006C5C
+ add r1, r4, #0
+ add r1, #0xb0
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0x18
+ bl FUN_020B19DC
+ mov r0, #0xa
+ str r0, [sp]
+ add r4, #0x18
+ mov r0, #0x12
+ mov r1, #0x78
+ mov r2, #2
+ mov r3, #0
+ str r4, [sp, #4]
+ bl FUN_02006A8C
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E3784
+MOD14_021E3784: ; 0x021E3784
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ add r1, r2, #0
+ mov r2, #0
+ bl MOD14_021DDD40
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E3798
+MOD14_021E3798: ; 0x021E3798
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E37A8
+MOD14_021E37A8: ; 0x021E37A8
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ bne _021E37B2
+ mov r0, #1
+ bx lr
+_021E37B2:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021E37B8
+MOD14_021E37B8: ; 0x021E37B8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ beq _021E388A
+ ldr r1, [r5, #4]
+ add r1, #0x9c
+ ldrb r6, [r1]
+ ldr r1, [r5, #0x10]
+ cmp r1, r6
+ beq _021E388A
+ add r1, r5, #0
+ add r4, r5, #0
+ add r1, #0xb8
+ str r5, [r1]
+ add r4, #0xb8
+ mov r1, #0
+ str r1, [r4, #8]
+ str r1, [r4, #4]
+ cmp r6, #0
+ beq _021E37E8
+ cmp r6, #1
+ beq _021E3800
+ cmp r6, #2
+ beq _021E3822
+ b _021E384A
+_021E37E8:
+ mov r1, #8
+ strh r1, [r4, #0xc]
+ ldr r7, _021E388C ; =MOD14_021E3AB0
+ bl MOD14_021E3DD8
+ add r0, r5, #0
+ bl MOD14_021E3EBC
+ add r0, r5, #0
+ bl MOD14_021E4764
+ b _021E3852
+_021E3800:
+ mov r0, #8
+ strh r0, [r4, #0xc]
+ ldr r0, [r5, #0x10]
+ cmp r0, #0
+ bne _021E380E
+ ldr r7, _021E3890 ; =MOD14_021E38AC
+ b _021E3816
+_021E380E:
+ ldrh r0, [r4, #0xc]
+ ldr r7, _021E3894 ; =MOD14_021E3984
+ add r0, #8
+ strh r0, [r4, #0xc]
+_021E3816:
+ add r0, r5, #0
+ bl MOD14_021E3EBC
+ ldr r0, [r5, #0x2c]
+ str r0, [r4, #8]
+ b _021E3852
+_021E3822:
+ mov r0, #8
+ strh r0, [r4, #0xc]
+ ldr r0, [r5, #0x10]
+ cmp r0, #0
+ bne _021E3830
+ ldr r7, _021E3890 ; =MOD14_021E38AC
+ b _021E3838
+_021E3830:
+ ldrh r0, [r4, #0xc]
+ ldr r7, _021E3894 ; =MOD14_021E3984
+ add r0, #8
+ strh r0, [r4, #0xc]
+_021E3838:
+ ldr r0, [r5, #0x30]
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl MOD14_021E3DD8
+ add r0, r5, #0
+ bl MOD14_021E4764
+ b _021E3852
+_021E384A:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+_021E3852:
+ str r6, [r5, #0x10]
+ ldr r0, [r5, #8]
+ mov r1, #5
+ bl FUN_02017B48
+ lsl r0, r0, #0xc
+ ldr r1, _021E3898 ; =0x021E6674
+ lsl r2, r6, #2
+ str r0, [r4, #0x10]
+ ldr r6, [r1, r2]
+ ldrh r1, [r4, #0xc]
+ sub r0, r6, r0
+ bl _s32_div_f
+ str r0, [r4, #0x14]
+ asr r0, r6, #0xc
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021E3880
+ mov r1, #1
+ bl FUN_02020130
+_021E3880:
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD14_021E3784
+_021E388A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E388C: .word MOD14_021E3AB0
+_021E3890: .word MOD14_021E38AC
+_021E3894: .word MOD14_021E3984
+_021E3898: .word 0x021E6674
+
+ thumb_func_start MOD14_021E389C
+MOD14_021E389C: ; 0x021E389C
+ push {r3, lr}
+ cmp r0, #0
+ beq _021E38A8
+ bl MOD14_021E37A8
+ pop {r3, pc}
+_021E38A8:
+ mov r0, #1
+ pop {r3, pc}
+
+ thumb_func_start MOD14_021E38AC
+MOD14_021E38AC: ; 0x021E38AC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #4]
+ ldr r5, [r4]
+ cmp r0, #3
+ bhi _021E3974
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E38C4: ; jump table
+ .short _021E38CC - _021E38C4 - 2 ; case 0
+ .short _021E38DE - _021E38C4 - 2 ; case 1
+ .short _021E3924 - _021E38C4 - 2 ; case 2
+ .short _021E3942 - _021E38C4 - 2 ; case 3
+_021E38CC:
+ ldr r0, [r4, #8]
+ bl FUN_02020388
+ cmp r0, #0
+ bne _021E3974
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_021E38DE:
+ ldrh r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021E3900
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x14]
+ mov r2, #0
+ add r3, r1, r0
+ str r3, [r4, #0x10]
+ ldr r0, [r5, #8]
+ mov r1, #5
+ asr r3, r3, #0xc
+ bl FUN_020179E0
+ ldrh r0, [r4, #0xc]
+ sub r0, r0, #1
+ strh r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_021E3900:
+ ldr r0, [r5, #8]
+ ldr r3, [r4, #0x18]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020179E0
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021E3978 ; =0x04001050
+ mov r1, #4
+ mov r2, #8
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_021E3924:
+ ldr r3, [r5, #0x10]
+ ldr r0, [r5, #8]
+ lsl r5, r3, #2
+ ldr r3, _021E397C ; =0x021E6668
+ mov r1, #6
+ ldr r3, [r3, r5]
+ mov r2, #0
+ bl FUN_020179E0
+ mov r0, #0
+ strh r0, [r4, #0xe]
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_021E3942:
+ mov r1, #0xe
+ ldrsh r3, [r4, r1]
+ add r0, r5, r3
+ add r0, #0xd4
+ ldrb r2, [r0]
+ add r0, r5, r3
+ add r0, #0xe4
+ ldrb r0, [r0]
+ lsl r0, r0, #8
+ orr r2, r0
+ ldr r0, _021E3980 ; =0x04001052
+ strh r2, [r0]
+ ldrsh r0, [r4, r1]
+ add r0, r0, #1
+ strh r0, [r4, #0xe]
+ ldrsh r0, [r4, r1]
+ cmp r0, #0x10
+ blt _021E3974
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl FUN_02020130
+ add r0, r5, #0
+ bl MOD14_021E3798
+_021E3974:
+ pop {r3, r4, r5, pc}
+ nop
+_021E3978: .word 0x04001050
+_021E397C: .word 0x021E6668
+_021E3980: .word 0x04001052
+
+ thumb_func_start MOD14_021E3984
+MOD14_021E3984: ; 0x021E3984
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #4]
+ ldr r5, [r4]
+ cmp r0, #4
+ bls _021E3992
+ b _021E3AA2
+_021E3992:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E399E: ; jump table
+ .short _021E39A8 - _021E399E - 2 ; case 0
+ .short _021E39CE - _021E399E - 2 ; case 1
+ .short _021E3A0C - _021E399E - 2 ; case 2
+ .short _021E3A52 - _021E399E - 2 ; case 3
+ .short _021E3A70 - _021E399E - 2 ; case 4
+_021E39A8:
+ ldr r0, [r4, #8]
+ bl FUN_02020388
+ cmp r0, #0
+ bne _021E3AA2
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021E3AA4 ; =0x04001050
+ mov r1, #4
+ mov r2, #8
+ mov r3, #0x10
+ bl G2x_SetBlendAlpha_
+ mov r0, #0xf
+ strh r0, [r4, #0xe]
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_021E39CE:
+ mov r1, #0xe
+ ldrsh r0, [r4, r1]
+ sub r0, r0, #1
+ strh r0, [r4, #0xe]
+ ldrsh r3, [r4, r1]
+ add r0, r5, r3
+ add r0, #0xd4
+ ldrb r2, [r0]
+ add r0, r5, r3
+ add r0, #0xe4
+ ldrb r0, [r0]
+ lsl r0, r0, #8
+ orr r2, r0
+ ldr r0, _021E3AA8 ; =0x04001052
+ strh r2, [r0]
+ ldrsh r0, [r4, r1]
+ cmp r0, #0
+ bne _021E3AA2
+ ldr r3, [r5, #0x10]
+ ldr r0, [r5, #8]
+ lsl r5, r3, #2
+ ldr r3, _021E3AAC ; =0x021E6668
+ mov r1, #6
+ ldr r3, [r3, r5]
+ mov r2, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_021E3A0C:
+ ldrh r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021E3A2E
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x14]
+ mov r2, #0
+ add r3, r1, r0
+ str r3, [r4, #0x10]
+ ldr r0, [r5, #8]
+ mov r1, #5
+ asr r3, r3, #0xc
+ bl FUN_020179E0
+ ldrh r0, [r4, #0xc]
+ sub r0, r0, #1
+ strh r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_021E3A2E:
+ ldr r0, [r5, #8]
+ ldr r3, [r4, #0x18]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020179E0
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021E3AA4 ; =0x04001050
+ mov r1, #4
+ mov r2, #8
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_021E3A52:
+ ldr r3, [r5, #0x10]
+ ldr r0, [r5, #8]
+ lsl r5, r3, #2
+ ldr r3, _021E3AAC ; =0x021E6668
+ mov r1, #6
+ ldr r3, [r3, r5]
+ mov r2, #0
+ bl FUN_020179E0
+ mov r0, #0
+ strh r0, [r4, #0xe]
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_021E3A70:
+ mov r1, #0xe
+ ldrsh r3, [r4, r1]
+ add r0, r5, r3
+ add r0, #0xd4
+ ldrb r2, [r0]
+ add r0, r5, r3
+ add r0, #0xe4
+ ldrb r0, [r0]
+ lsl r0, r0, #8
+ orr r2, r0
+ ldr r0, _021E3AA8 ; =0x04001052
+ strh r2, [r0]
+ ldrsh r0, [r4, r1]
+ add r0, r0, #1
+ strh r0, [r4, #0xe]
+ ldrsh r0, [r4, r1]
+ cmp r0, #0x10
+ blt _021E3AA2
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl FUN_02020130
+ add r0, r5, #0
+ bl MOD14_021E3798
+_021E3AA2:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E3AA4: .word 0x04001050
+_021E3AA8: .word 0x04001052
+_021E3AAC: .word 0x021E6668
+
+ thumb_func_start MOD14_021E3AB0
+MOD14_021E3AB0: ; 0x021E3AB0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #4]
+ ldr r0, [r4]
+ cmp r1, #3
+ bhi _021E3B4C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E3AC8: ; jump table
+ .short _021E3AD0 - _021E3AC8 - 2 ; case 0
+ .short _021E3ADA - _021E3AC8 - 2 ; case 1
+ .short _021E3B12 - _021E3AC8 - 2 ; case 2
+ .short _021E3B48 - _021E3AC8 - 2 ; case 3
+_021E3AD0:
+ mov r1, #0xf
+ strh r1, [r4, #0xe]
+ ldr r1, [r4, #4]
+ add r1, r1, #1
+ str r1, [r4, #4]
+_021E3ADA:
+ mov r2, #0xe
+ ldrsh r1, [r4, r2]
+ sub r1, r1, #1
+ strh r1, [r4, #0xe]
+ ldrsh r5, [r4, r2]
+ add r1, r0, r5
+ add r1, #0xd4
+ ldrb r3, [r1]
+ add r1, r0, r5
+ add r1, #0xe4
+ ldrb r1, [r1]
+ lsl r1, r1, #8
+ orr r3, r1
+ ldr r1, _021E3B50 ; =0x04001052
+ strh r3, [r1]
+ ldrsh r1, [r4, r2]
+ cmp r1, #0
+ bne _021E3B4C
+ mov r2, #0
+ ldr r0, [r0, #8]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_021E3B12:
+ ldrh r1, [r4, #0xc]
+ cmp r1, #0
+ beq _021E3B34
+ ldr r2, [r4, #0x10]
+ ldr r1, [r4, #0x14]
+ add r3, r2, r1
+ str r3, [r4, #0x10]
+ ldr r0, [r0, #8]
+ mov r1, #5
+ mov r2, #0
+ asr r3, r3, #0xc
+ bl FUN_020179E0
+ ldrh r0, [r4, #0xc]
+ sub r0, r0, #1
+ strh r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_021E3B34:
+ ldr r0, [r0, #8]
+ ldr r3, [r4, #0x18]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_021E3B48:
+ bl MOD14_021E3798
+_021E3B4C:
+ pop {r3, r4, r5, pc}
+ nop
+_021E3B50: .word 0x04001052
+
+ thumb_func_start MOD14_021E3B54
+MOD14_021E3B54: ; 0x021E3B54
+ push {r4, lr}
+ add r4, r0, #0
+ beq _021E3B7C
+ ldr r1, [r4, #0x10]
+ cmp r1, #1
+ beq _021E3B66
+ cmp r1, #2
+ beq _021E3B72
+ pop {r4, pc}
+_021E3B66:
+ bl MOD14_021E3C94
+ add r0, r4, #0
+ bl MOD14_021E41C0
+ pop {r4, pc}
+_021E3B72:
+ bl MOD14_021E3E1C
+ add r0, r4, #0
+ bl MOD14_021E44E0
+_021E3B7C:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E3B80
+MOD14_021E3B80: ; 0x021E3B80
+ push {r4, lr}
+ add r4, r0, #0
+ beq _021E3BA2
+ bl MOD14_021E37A8
+ cmp r0, #0
+ beq _021E3B9E
+ ldr r0, [r4, #0x10]
+ cmp r0, #1
+ bne _021E3B9A
+ add r0, r4, #0
+ bl MOD14_021E4790
+_021E3B9A:
+ mov r0, #1
+ pop {r4, pc}
+_021E3B9E:
+ mov r0, #0
+ pop {r4, pc}
+_021E3BA2:
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E3BA8
+MOD14_021E3BA8: ; 0x021E3BA8
+ push {r4, lr}
+ add r4, r0, #0
+ beq _021E3BD0
+ ldr r1, [r4, #0x10]
+ cmp r1, #1
+ beq _021E3BBA
+ cmp r1, #2
+ beq _021E3BCC
+ pop {r4, pc}
+_021E3BBA:
+ bl MOD14_021E4764
+ add r0, r4, #0
+ bl MOD14_021E3D38
+ add r0, r4, #0
+ bl MOD14_021E43E8
+ pop {r4, pc}
+_021E3BCC:
+ bl MOD14_021E46E4
+_021E3BD0:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E3BD4
+MOD14_021E3BD4: ; 0x021E3BD4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD14_021DC46C
+ cmp r0, #0
+ ble _021E3C04
+ add r2, r4, #0
+ add r2, #0x80
+ ldr r2, [r2]
+ add r1, r4, #0
+ sub r2, r2, r0
+ add r0, r4, #0
+ add r0, #0x80
+ add r4, #0x80
+ str r2, [r0]
+ ldr r0, [r4]
+ add r1, #0x80
+ cmp r0, #0
+ bge _021E3C24
+ ldr r0, [r1]
+ add r0, #0xa
+ str r0, [r1]
+ pop {r4, pc}
+_021E3C04:
+ add r2, r4, #0
+ add r2, #0x80
+ ldr r2, [r2]
+ add r1, r4, #0
+ sub r2, r2, r0
+ add r0, r4, #0
+ add r0, #0x80
+ add r4, #0x80
+ str r2, [r0]
+ ldr r0, [r4]
+ add r1, #0x80
+ cmp r0, #0xa
+ blt _021E3C24
+ ldr r0, [r1]
+ sub r0, #0xa
+ str r0, [r1]
+_021E3C24:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E3C28
+MOD14_021E3C28: ; 0x021E3C28
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD14_021DC46C
+ add r2, r4, #0
+ add r2, #0x80
+ ldr r2, [r2]
+ add r1, r4, #0
+ add r2, r2, r0
+ add r0, r4, #0
+ add r0, #0x80
+ add r4, #0x80
+ str r2, [r0]
+ ldr r0, [r4]
+ add r1, #0x80
+ cmp r0, #0
+ bge _021E3C54
+ ldr r0, [r1]
+ add r0, #8
+ str r0, [r1]
+ pop {r4, pc}
+_021E3C54:
+ cmp r0, #8
+ blt _021E3C5E
+ ldr r0, [r1]
+ sub r0, #8
+ str r0, [r1]
+_021E3C5E:
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E3C60
+MOD14_021E3C60: ; 0x021E3C60
+ push {r4, lr}
+ add r4, r0, #0
+ beq _021E3C90
+ bl MOD14_021E37A8
+ cmp r0, #0
+ beq _021E3C8C
+ ldr r0, [r4, #0x10]
+ cmp r0, #1
+ bne _021E3C82
+ add r0, r4, #0
+ bl MOD14_021E4790
+ add r0, r4, #0
+ bl MOD14_021E3BD4
+ b _021E3C88
+_021E3C82:
+ add r0, r4, #0
+ bl MOD14_021E3C28
+_021E3C88:
+ mov r0, #1
+ pop {r4, pc}
+_021E3C8C:
+ mov r0, #0
+ pop {r4, pc}
+_021E3C90:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E3C94
+MOD14_021E3C94: ; 0x021E3C94
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x5c
+ str r0, [sp, #8]
+ ldr r0, [r0]
+ bl MOD14_021DDD84
+ add r7, r0, #0
+ ldr r0, [sp, #8]
+ ldr r0, [r0, #4]
+ bl MOD14_021DC474
+ add r4, r0, #3
+ cmp r4, #0x12
+ blt _021E3CB2
+ sub r4, #0x12
+_021E3CB2:
+ ldr r5, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ str r0, [sp, #0x10]
+ add r0, #0x18
+ mov r6, #0xc0
+ str r0, [sp, #0x10]
+_021E3CC2:
+ add r0, sp, #0x14
+ bl FUN_020B1A24
+ add r0, sp, #0x14
+ str r0, [sp]
+ add r0, r7, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ mov r3, #2
+ bl MOD14_021E1FF8
+ add r0, r7, #0
+ bl MOD14_021E2184
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x10]
+ add r0, sp, #0x38
+ add r1, sp, #0x14
+ bl MOD14_021DDDB4
+ mov r0, #0x30
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ mov r3, #0x17
+ ldr r0, [r0, #0xc]
+ add r1, sp, #0x38
+ mov r2, #0x10
+ lsl r3, r3, #4
+ bl MOD14_021DDDD4
+ str r0, [r5, #0x54]
+ cmp r0, #0
+ bne _021E3D14
+ bl ErrorHandling
+_021E3D14:
+ sub r4, r4, #1
+ bpl _021E3D1A
+ mov r4, #0x11
+_021E3D1A:
+ ldr r0, [sp, #0xc]
+ add r6, #0x20
+ add r0, r0, #1
+ add r5, r5, #4
+ str r0, [sp, #0xc]
+ cmp r0, #0xa
+ blt _021E3CC2
+ ldr r0, [sp, #8]
+ mov r1, #0
+ add r0, #0x80
+ str r0, [sp, #8]
+ str r1, [r0]
+ add sp, #0x5c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E3D38
+MOD14_021E3D38: ; 0x021E3D38
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r0]
+ bl MOD14_021DDD84
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #4]
+ bl MOD14_021DC474
+ ldr r1, [sp, #4]
+ ldr r2, [r1, #4]
+ mov r1, #0xa0
+ ldrsh r7, [r2, r1]
+ cmp r7, #0
+ ble _021E3D74
+ sub r0, r0, r7
+ add r5, r0, #4
+ cmp r5, #0x12
+ blt _021E3D64
+ sub r5, #0x12
+_021E3D64:
+ ldr r0, [sp, #4]
+ mov r6, #1
+ add r0, #0x80
+ ldr r0, [r0]
+ sub r4, r0, #1
+ bpl _021E3D90
+ add r4, #0xa
+ b _021E3D90
+_021E3D74:
+ sub r0, r0, r7
+ sub r5, r0, #3
+ bpl _021E3D7C
+ add r5, #0x12
+_021E3D7C:
+ ldr r0, [sp, #4]
+ mov r6, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mvn r6, r6
+ add r4, r0, #6
+ cmp r4, #0xa
+ blt _021E3D8E
+ sub r4, #0xa
+_021E3D8E:
+ neg r7, r7
+_021E3D90:
+ ldr r0, [sp, #4]
+ str r7, [r0, #0x7c]
+ mov r0, #0
+ str r0, [sp, #8]
+ cmp r7, #0
+ ble _021E3DD4
+_021E3D9C:
+ mov r0, #0
+ str r0, [sp]
+ lsl r2, r4, #5
+ ldr r0, [sp, #0xc]
+ add r1, r5, #0
+ add r2, #0xc0
+ mov r3, #2
+ bl MOD14_021E1FF8
+ add r5, r5, r6
+ bpl _021E3DB6
+ mov r5, #0x11
+ b _021E3DBC
+_021E3DB6:
+ cmp r5, #0x12
+ blt _021E3DBC
+ mov r5, #0
+_021E3DBC:
+ sub r4, r4, r6
+ bpl _021E3DC4
+ mov r4, #9
+ b _021E3DCA
+_021E3DC4:
+ cmp r4, #0xa
+ blt _021E3DCA
+ mov r4, #0
+_021E3DCA:
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+ cmp r0, r7
+ blt _021E3D9C
+_021E3DD4:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E3DD8
+MOD14_021E3DD8: ; 0x021E3DD8
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_021E3DE0:
+ ldr r0, [r5, #0x54]
+ cmp r0, #0
+ beq _021E3DEC
+ bl FUN_0201FFC8
+ str r6, [r5, #0x54]
+_021E3DEC:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xa
+ blt _021E3DE0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E3DF8
+MOD14_021E3DF8: ; 0x021E3DF8
+ cmp r0, #0
+ bne _021E3E08
+ cmp r1, #0
+ bne _021E3E04
+ mov r0, #1
+ bx lr
+_021E3E04:
+ mov r0, #0
+ bx lr
+_021E3E08:
+ mov r3, #1
+ sub r2, r0, #1
+ lsl r3, r2
+ tst r1, r3
+ beq _021E3E18
+ lsl r0, r0, #1
+ add r0, r0, #1
+ bx lr
+_021E3E18:
+ lsl r0, r0, #1
+ bx lr
+
+ thumb_func_start MOD14_021E3E1C
+MOD14_021E3E1C: ; 0x021E3E1C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x60
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ bl MOD14_021DC484
+ str r0, [sp, #0x14]
+ add r0, sp, #0x18
+ bl FUN_020B1A24
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #6
+ lsl r0, r0, #0xa
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ add r0, sp, #0x18
+ str r0, [sp, #0x10]
+ mov r0, #0x12
+ mov r1, #0x75
+ mov r2, #1
+ bl FUN_02006AE4
+ add r7, r5, #0
+ mov r6, #0
+ add r4, r5, #0
+ add r7, #0x18
+_021E3E58:
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r3, r5, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ add r3, #0xac
+ ldr r3, [r3]
+ add r0, sp, #0x3c
+ add r1, sp, #0x18
+ add r2, r7, #0
+ bl MOD14_021DDDB4
+ mov r0, #0x30
+ str r0, [sp]
+ mov r0, #2
+ mov r2, #0xf0
+ str r0, [sp, #4]
+ add r3, r2, #0
+ ldr r0, [r5, #0xc]
+ add r1, sp, #0x3c
+ add r3, #0x80
+ bl MOD14_021DDDD4
+ str r0, [r4, #0x34]
+ cmp r0, #0
+ bne _021E3E94
+ bl ErrorHandling
+_021E3E94:
+ ldr r1, [sp, #0x14]
+ add r0, r6, #0
+ bl MOD14_021E3DF8
+ add r1, r0, #0
+ ldr r0, [r4, #0x34]
+ bl FUN_02020130
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #8
+ blt _021E3E58
+ ldr r0, [r5, #4]
+ bl MOD14_021DC47C
+ add r5, #0x80
+ str r0, [r5]
+ add sp, #0x60
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E3EBC
+MOD14_021E3EBC: ; 0x021E3EBC
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_021E3EC4:
+ ldr r0, [r5, #0x34]
+ cmp r0, #0
+ beq _021E3ED0
+ bl FUN_0201FFC8
+ str r6, [r5, #0x34]
+_021E3ED0:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _021E3EC4
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E3EDC
+MOD14_021E3EDC: ; 0x021E3EDC
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4, #0x16]
+ cmp r0, #0
+ beq _021E3EF2
+ sub r0, r0, #1
+ add sp, #0xc
+ strh r0, [r4, #0x16]
+ pop {r4, r5, pc}
+_021E3EF2:
+ ldrh r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021E3F28
+ sub r0, r0, #1
+ strh r0, [r4, #0x14]
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0x10]
+ add r0, r1, r0
+ str r0, [r4, #8]
+ asr r0, r0, #0xc
+ lsl r1, r0, #2
+ ldr r0, _021E3F58 ; =0x021E66A8
+ ldrsh r0, [r0, r1]
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ ldr r0, _021E3F5C ; =0x021E66AA
+ ldrsh r0, [r0, r1]
+ add r1, sp, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r4, r5, pc}
+_021E3F28:
+ ldr r0, [r4, #0xc]
+ asr r0, r0, #0xc
+ lsl r1, r0, #2
+ ldr r0, _021E3F58 ; =0x021E66A8
+ ldrsh r0, [r0, r1]
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ ldr r0, _021E3F5C ; =0x021E66AA
+ ldrsh r0, [r0, r1]
+ add r1, sp, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ bl FUN_02020044
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD14_021E4010
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021E3F58: .word 0x021E66A8
+_021E3F5C: .word 0x021E66AA
+
+ thumb_func_start MOD14_021E3F60
+MOD14_021E3F60: ; 0x021E3F60
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4, #0x16]
+ cmp r0, #0
+ beq _021E3F76
+ sub r0, r0, #1
+ add sp, #0xc
+ strh r0, [r4, #0x16]
+ pop {r4, r5, pc}
+_021E3F76:
+ ldrh r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021E3FB2
+ sub r0, r0, #1
+ strh r0, [r4, #0x14]
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0x10]
+ add r0, r1, r0
+ str r0, [r4, #8]
+ asr r0, r0, #0xc
+ ldr r1, _021E4008 ; =0x021E66A8
+ lsl r0, r0, #2
+ ldrsh r2, [r1, r0]
+ mov r1, #1
+ lsl r1, r1, #8
+ sub r1, r1, r2
+ lsl r1, r1, #0xc
+ str r1, [sp]
+ ldr r1, _021E400C ; =0x021E66AA
+ ldrsh r0, [r1, r0]
+ add r1, sp, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r4, r5, pc}
+_021E3FB2:
+ ldr r0, [r4, #0xc]
+ ldr r1, _021E4008 ; =0x021E66A8
+ asr r0, r0, #0xc
+ lsl r0, r0, #2
+ ldrsh r2, [r1, r0]
+ mov r1, #1
+ lsl r1, r1, #8
+ sub r1, r1, r2
+ lsl r1, r1, #0xc
+ str r1, [sp]
+ ldr r1, _021E400C ; =0x021E66AA
+ ldrsh r0, [r1, r0]
+ add r1, sp, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ bl FUN_02020044
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ beq _021E3FFC
+ ldrh r0, [r4, #0x28]
+ add sp, #0xc
+ strh r0, [r4, #0x14]
+ ldr r0, [r4, #0x1c]
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x24]
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0x20]
+ str r0, [r4, #0xc]
+ ldrh r0, [r4, #0x2a]
+ strh r0, [r4, #0x16]
+ mov r0, #0
+ str r0, [r4, #0x18]
+ pop {r4, r5, pc}
+_021E3FFC:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD14_021E4010
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_021E4008: .word 0x021E66A8
+_021E400C: .word 0x021E66AA
+
+ thumb_func_start MOD14_021E4010
+MOD14_021E4010: ; 0x021E4010
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r4, [r1]
+ ldr r0, _021E4034 ; =0x000001CB
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bne _021E4022
+ bl ErrorHandling
+_021E4022:
+ ldr r0, _021E4034 ; =0x000001CB
+ ldrb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, r0]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ nop
+_021E4034: .word 0x000001CB
+
+ thumb_func_start MOD14_021E4038
+MOD14_021E4038: ; 0x021E4038
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r6, r0, #0
+ add r5, r2, #0
+ str r3, [sp]
+ ldr r4, [sp, #0x20]
+ cmp r7, #0
+ bne _021E404C
+ bl ErrorHandling
+_021E404C:
+ cmp r4, #0
+ beq _021E4052
+ sub r4, r4, #1
+_021E4052:
+ str r6, [r5]
+ ldr r0, [sp, #0x1c]
+ str r7, [r5, #4]
+ strh r0, [r5, #0x14]
+ ldr r0, [sp, #0x24]
+ strh r4, [r5, #0x16]
+ cmp r0, #0
+ beq _021E4066
+ ldr r4, _021E40A4 ; =MOD14_021E3F60
+ b _021E4068
+_021E4066:
+ ldr r4, _021E40A8 ; =MOD14_021E3EDC
+_021E4068:
+ ldr r0, [sp]
+ ldr r1, _021E40AC ; =0x021E6680
+ lsl r0, r0, #1
+ ldrh r0, [r1, r0]
+ lsl r0, r0, #0xc
+ str r0, [r5, #8]
+ ldr r0, [sp, #0x18]
+ lsl r0, r0, #1
+ ldrh r0, [r1, r0]
+ lsl r1, r0, #0xc
+ str r1, [r5, #0xc]
+ ldr r0, [r5, #8]
+ sub r0, r1, r0
+ ldr r1, [sp, #0x1c]
+ bl _s32_div_f
+ str r0, [r5, #0x10]
+ mov r2, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ str r2, [r5, #0x18]
+ bl MOD14_021DDD40
+ cmp r0, #0
+ beq _021E40A2
+ ldr r0, _021E40B0 ; =0x000001CB
+ ldrb r1, [r6, r0]
+ add r1, r1, #1
+ strb r1, [r6, r0]
+_021E40A2:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E40A4: .word MOD14_021E3F60
+_021E40A8: .word MOD14_021E3EDC
+_021E40AC: .word 0x021E6680
+_021E40B0: .word 0x000001CB
+
+ thumb_func_start MOD14_021E40B4
+MOD14_021E40B4: ; 0x021E40B4
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #1
+ str r0, [r4, #0x18]
+ strh r2, [r4, #0x2a]
+ cmp r2, #0
+ beq _021E40C8
+ ldrh r0, [r4, #0x2a]
+ sub r0, r0, #1
+ strh r0, [r4, #0x2a]
+_021E40C8:
+ ldr r0, [sp, #8]
+ sub r2, r0, r3
+ bpl _021E40D4
+ mov r0, #0
+ mvn r0, r0
+ mul r2, r0
+_021E40D4:
+ add r1, r2, #0
+ mov r0, #6
+ mul r1, r0
+ ldr r2, _021E40FC ; =0x021E6680
+ lsl r0, r3, #1
+ ldrh r0, [r2, r0]
+ strh r1, [r4, #0x28]
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x1c]
+ ldr r0, [sp, #8]
+ lsl r0, r0, #1
+ ldrh r0, [r2, r0]
+ lsl r2, r0, #0xc
+ str r2, [r4, #0x20]
+ ldr r0, [r4, #0x1c]
+ sub r0, r2, r0
+ bl _s32_div_f
+ str r0, [r4, #0x24]
+ pop {r4, pc}
+ .align 2, 0
+_021E40FC: .word 0x021E6680
+
+ thumb_func_start MOD14_021E4100
+MOD14_021E4100: ; 0x021E4100
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ mov r0, #0x73
+ add r4, r1, #0
+ lsl r0, r0, #2
+ ldrb r3, [r4, r0]
+ ldr r2, [r4]
+ cmp r3, #0
+ beq _021E411E
+ cmp r3, #1
+ beq _021E4180
+ cmp r3, #2
+ beq _021E4198
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+_021E411E:
+ sub r1, r0, #2
+ ldrb r1, [r4, r1]
+ mov r6, #0x2c
+ add r3, r1, #1
+ sub r1, r0, #2
+ strb r3, [r4, r1]
+ sub r0, r0, #2
+ ldrb r3, [r4, r0]
+ mov r1, #6
+ mov r0, #7
+ sub r5, r1, r3
+ sub r0, r0, r3
+ str r0, [sp]
+ add r0, r5, #1
+ mul r1, r0
+ str r1, [sp, #4]
+ mov r3, #0
+ str r3, [sp, #8]
+ lsl r1, r5, #2
+ add r1, r2, r1
+ str r3, [sp, #0xc]
+ add r2, r4, #0
+ ldr r1, [r1, #0x54]
+ add r2, #8
+ mul r6, r5
+ add r0, r4, #0
+ add r2, r2, r6
+ bl MOD14_021E4038
+ ldr r0, _021E41B0 ; =0x000001CD
+ mov r1, #4
+ strb r1, [r4, r0]
+ sub r1, r0, #3
+ ldrb r1, [r4, r1]
+ cmp r1, #6
+ blo _021E4170
+ mov r1, #2
+ sub r0, r0, #1
+ add sp, #0x10
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021E4170:
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _021E41AC
+ mov r1, #1
+ sub r0, r0, #1
+ add sp, #0x10
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021E4180:
+ add r1, r0, #1
+ ldrb r1, [r4, r1]
+ sub r2, r1, #2
+ add r1, r0, #1
+ strb r2, [r4, r1]
+ ldrb r1, [r4, r1]
+ cmp r1, #0
+ bne _021E41AC
+ mov r1, #0
+ add sp, #0x10
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021E4198:
+ sub r1, r0, #1
+ ldrb r1, [r4, r1]
+ cmp r1, #0
+ bne _021E41AC
+ add r1, r3, #1
+ strb r1, [r4, r0]
+ ldr r1, _021E41B4 ; =MOD14_021E41B8
+ add r0, r4, #0
+ bl MOD14_021DDF30
+_021E41AC:
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021E41B0: .word 0x000001CD
+_021E41B4: .word MOD14_021E41B8
+
+ thumb_func_start MOD14_021E41B8
+MOD14_021E41B8: ; 0x021E41B8
+ ldr r3, _021E41BC ; =MOD14_021E3798
+ bx r3
+ .align 2, 0
+_021E41BC: .word MOD14_021E3798
+
+ thumb_func_start MOD14_021E41C0
+MOD14_021E41C0: ; 0x021E41C0
+ push {r3, r4, r5, lr}
+ mov r1, #0x1d
+ add r4, r0, #0
+ mov r0, #0xa
+ lsl r1, r1, #4
+ bl FUN_02016998
+ add r5, r0, #0
+ beq _021E4208
+ mov r1, #0x73
+ mov r0, #0
+ lsl r1, r1, #2
+ str r4, [r5]
+ strb r0, [r5, r1]
+ sub r2, r1, #2
+ strb r0, [r5, r2]
+ sub r1, r1, #1
+ strb r0, [r5, r1]
+ mov r1, #7
+ add r3, r0, #0
+ lsl r1, r1, #6
+_021E41EA:
+ add r2, r5, r0
+ add r0, r0, #1
+ strb r3, [r2, r1]
+ cmp r0, #8
+ blt _021E41EA
+ ldr r1, _021E420C ; =MOD14_021E4100
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD14_021E3784
+ cmp r0, #0
+ bne _021E4208
+ add r0, r5, #0
+ bl FUN_02016A18
+_021E4208:
+ pop {r3, r4, r5, pc}
+ nop
+_021E420C: .word MOD14_021E4100
+
+ thumb_func_start MOD14_021E4210
+MOD14_021E4210: ; 0x021E4210
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ mov r2, #0x73
+ lsl r2, r2, #2
+ add r0, r1, #0
+ ldrb r3, [r0, r2]
+ str r1, [sp, #0x10]
+ ldr r7, [r1]
+ cmp r3, #0
+ beq _021E422E
+ cmp r3, #1
+ bne _021E422A
+ b _021E43C6
+_021E422A:
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+_021E422E:
+ ldr r1, [r7, #4]
+ mov r0, #0xa0
+ ldrsh r0, [r1, r0]
+ cmp r0, #0
+ ble _021E4252
+ add r0, r7, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ add r4, r0, #5
+ cmp r4, #0xa
+ blt _021E4246
+ sub r4, #0xa
+_021E4246:
+ mov r5, #0
+ mov r0, #7
+ mvn r5, r5
+ mov r6, #6
+ str r0, [sp, #0x24]
+ b _021E4260
+_021E4252:
+ add r0, r7, #0
+ add r0, #0x80
+ ldr r4, [r0]
+ mov r5, #1
+ mov r0, #0
+ add r6, r5, #0
+ str r0, [sp, #0x24]
+_021E4260:
+ ldr r1, [r7, #0x7c]
+ mov r0, #0
+ str r0, [sp, #0x34]
+ cmp r1, #0
+ ble _021E42C2
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #0x38]
+ add r0, #8
+ str r0, [sp, #0x38]
+_021E4274:
+ ldr r0, [sp, #0x24]
+ add r3, r4, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ add r0, r0, #6
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r1, r0, #0
+ ldr r2, [r1, #4]
+ lsl r1, r4, #2
+ ldr r1, [r2, r1]
+ mov r2, #0x2c
+ mul r3, r2
+ ldr r2, [sp, #0x38]
+ add r2, r2, r3
+ add r3, r6, #0
+ bl MOD14_021E4038
+ add r4, r4, r5
+ add r6, r6, r5
+ cmp r4, #0xa
+ blt _021E42AA
+ mov r4, #0
+ b _021E42B0
+_021E42AA:
+ cmp r4, #0
+ bge _021E42B0
+ mov r4, #9
+_021E42B0:
+ ldr r0, [sp, #0x28]
+ ldr r1, [r7, #0x7c]
+ add r0, r0, #6
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x34]
+ add r0, r0, #1
+ str r0, [sp, #0x34]
+ cmp r0, r1
+ blt _021E4274
+_021E42C2:
+ mov r0, #6
+ sub r0, r0, r1
+ str r0, [sp, #0x30]
+ mov r0, #0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x30]
+ cmp r0, #0
+ ble _021E4328
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #0x3c]
+ add r0, #8
+ str r0, [sp, #0x3c]
+_021E42DA:
+ ldr r0, [r7, #0x7c]
+ add r1, r5, #0
+ mul r1, r0
+ sub r1, r6, r1
+ str r1, [sp]
+ mov r1, #6
+ mul r1, r0
+ str r1, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r3, r4, #0
+ add r1, r0, #0
+ ldr r2, [r1, #4]
+ lsl r1, r4, #2
+ ldr r1, [r2, r1]
+ mov r2, #0x2c
+ mul r3, r2
+ ldr r2, [sp, #0x3c]
+ add r2, r2, r3
+ add r3, r6, #0
+ bl MOD14_021E4038
+ add r4, r4, r5
+ add r6, r6, r5
+ cmp r4, #0xa
+ blt _021E4316
+ mov r4, #0
+ b _021E431C
+_021E4316:
+ cmp r4, #0
+ bge _021E431C
+ mov r4, #9
+_021E431C:
+ ldr r0, [sp, #0x14]
+ add r1, r0, #1
+ ldr r0, [sp, #0x30]
+ str r1, [sp, #0x14]
+ cmp r1, r0
+ blt _021E42DA
+_021E4328:
+ ldr r1, [r7, #4]
+ mov r0, #0xa0
+ ldrsh r0, [r1, r0]
+ cmp r0, #0
+ ble _021E433E
+ mov r0, #0
+ str r0, [sp, #0x1c]
+ ldr r0, [r7, #0x7c]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x18]
+ b _021E434C
+_021E433E:
+ mov r0, #7
+ str r0, [sp, #0x1c]
+ ldr r0, [r7, #0x7c]
+ ldr r1, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ sub r0, r1, r0
+ str r0, [sp, #0x18]
+_021E434C:
+ ldr r0, [sp, #0x20]
+ mov r6, #0
+ cmp r0, #0
+ ble _021E43B4
+ ldr r0, [sp, #0x10]
+ str r6, [sp, #0x2c]
+ str r0, [sp, #0x40]
+ add r0, #8
+ str r0, [sp, #0x40]
+_021E435E:
+ ldr r0, [sp, #0x18]
+ add r3, r4, #0
+ str r0, [sp]
+ ldr r0, [r7, #0x7c]
+ sub r1, r0, r6
+ mov r0, #6
+ mul r0, r1
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x2c]
+ add r0, r0, #6
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r1, r0, #0
+ ldr r2, [r1, #4]
+ lsl r1, r4, #2
+ ldr r1, [r2, r1]
+ mov r2, #0x2c
+ mul r3, r2
+ ldr r2, [sp, #0x40]
+ add r2, r2, r3
+ ldr r3, [sp, #0x1c]
+ bl MOD14_021E4038
+ ldr r0, [sp, #0x18]
+ add r4, r4, r5
+ add r0, r0, r5
+ str r0, [sp, #0x18]
+ cmp r4, #0xa
+ blt _021E43A0
+ sub r4, #0xa
+ b _021E43A6
+_021E43A0:
+ cmp r4, #0
+ bge _021E43A6
+ add r4, #0xa
+_021E43A6:
+ ldr r0, [sp, #0x2c]
+ add r6, r6, #1
+ add r0, r0, #6
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x20]
+ cmp r6, r0
+ blt _021E435E
+_021E43B4:
+ mov r1, #0x73
+ ldr r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ add r2, r0, #1
+ ldr r0, [sp, #0x10]
+ add sp, #0x44
+ strb r2, [r0, r1]
+ pop {r4, r5, r6, r7, pc}
+_021E43C6:
+ ldr r0, [sp, #0x10]
+ sub r1, r2, #1
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ bne _021E43DE
+ ldr r0, [sp, #0x10]
+ add r1, r3, #1
+ strb r1, [r0, r2]
+ ldr r1, _021E43E4 ; =MOD14_021E41B8
+ add r2, r7, #0
+ bl MOD14_021DDF30
+_021E43DE:
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E43E4: .word MOD14_021E41B8
+
+ thumb_func_start MOD14_021E43E8
+MOD14_021E43E8: ; 0x021E43E8
+ push {r3, r4, r5, lr}
+ mov r1, #0x1d
+ add r4, r0, #0
+ mov r0, #0xa
+ lsl r1, r1, #4
+ bl FUN_02016998
+ add r5, r0, #0
+ beq _021E4436
+ add r0, r4, #0
+ mov r1, #0x73
+ lsl r1, r1, #2
+ str r4, [r5]
+ add r0, #0x54
+ str r0, [r5, #4]
+ mov r0, #0
+ strb r0, [r5, r1]
+ sub r2, r1, #2
+ strb r0, [r5, r2]
+ sub r1, r1, #1
+ strb r0, [r5, r1]
+ mov r1, #7
+ add r3, r0, #0
+ lsl r1, r1, #6
+_021E4418:
+ add r2, r5, r0
+ add r0, r0, #1
+ strb r3, [r2, r1]
+ cmp r0, #0xa
+ blt _021E4418
+ ldr r1, _021E4438 ; =MOD14_021E4210
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD14_021E3784
+ cmp r0, #0
+ bne _021E4436
+ add r0, r5, #0
+ bl FUN_02016A18
+_021E4436:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E4438: .word MOD14_021E4210
+
+ thumb_func_start MOD14_021E443C
+MOD14_021E443C: ; 0x021E443C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ ldr r0, [r1]
+ mov r2, #0x73
+ str r0, [sp, #0x18]
+ lsl r2, r2, #2
+ add r0, r1, #0
+ ldrb r3, [r0, r2]
+ str r1, [sp, #0x10]
+ cmp r3, #0
+ beq _021E445A
+ cmp r3, #1
+ beq _021E44BE
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+_021E445A:
+ ldr r0, [sp, #0x18]
+ mov r5, #0
+ add r0, #0x80
+ ldr r4, [r0]
+ add r0, r1, #0
+ str r0, [sp, #0x1c]
+ add r0, #8
+ mov r7, #6
+ str r5, [sp, #0x14]
+ mov r6, #0x24
+ str r0, [sp, #0x1c]
+_021E4470:
+ str r7, [sp]
+ str r6, [sp, #4]
+ ldr r1, [sp, #0x18]
+ lsl r2, r4, #2
+ add r1, r1, r2
+ str r5, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r2, #0x2c
+ add r3, r4, #0
+ mul r3, r2
+ ldr r2, [sp, #0x1c]
+ ldr r0, [sp, #0x10]
+ add r2, r2, r3
+ ldr r1, [r1, #0x34]
+ mov r3, #0
+ bl MOD14_021E4038
+ add r4, r4, #1
+ sub r6, r6, #6
+ sub r7, r7, #1
+ cmp r4, #8
+ blt _021E44A0
+ mov r4, #0
+_021E44A0:
+ ldr r0, [sp, #0x14]
+ add r5, r5, #6
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ cmp r0, #6
+ blt _021E4470
+ mov r1, #0x73
+ ldr r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ add r2, r0, #1
+ ldr r0, [sp, #0x10]
+ add sp, #0x20
+ strb r2, [r0, r1]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E44BE:
+ ldr r0, [sp, #0x10]
+ sub r1, r2, #1
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ bne _021E44D6
+ ldr r0, [sp, #0x10]
+ add r1, r3, #1
+ strb r1, [r0, r2]
+ ldr r1, _021E44DC ; =MOD14_021E41B8
+ ldr r2, [sp, #0x18]
+ bl MOD14_021DDF30
+_021E44D6:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E44DC: .word MOD14_021E41B8
+
+ thumb_func_start MOD14_021E44E0
+MOD14_021E44E0: ; 0x021E44E0
+ push {r3, r4, r5, lr}
+ mov r1, #0x1d
+ add r4, r0, #0
+ mov r0, #0xa
+ lsl r1, r1, #4
+ bl FUN_02016998
+ add r5, r0, #0
+ beq _021E4528
+ mov r1, #0x73
+ mov r0, #0
+ lsl r1, r1, #2
+ str r4, [r5]
+ strb r0, [r5, r1]
+ sub r2, r1, #2
+ strb r0, [r5, r2]
+ sub r1, r1, #1
+ strb r0, [r5, r1]
+ mov r1, #7
+ add r3, r0, #0
+ lsl r1, r1, #6
+_021E450A:
+ add r2, r5, r0
+ add r0, r0, #1
+ strb r3, [r2, r1]
+ cmp r0, #8
+ blt _021E450A
+ ldr r1, _021E452C ; =MOD14_021E443C
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD14_021E3784
+ cmp r0, #0
+ bne _021E4528
+ add r0, r5, #0
+ bl FUN_02016A18
+_021E4528:
+ pop {r3, r4, r5, pc}
+ nop
+_021E452C: .word MOD14_021E443C
+
+ thumb_func_start MOD14_021E4530
+MOD14_021E4530: ; 0x021E4530
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ ldr r0, [r1]
+ mov r2, #0x73
+ str r0, [sp, #0x34]
+ lsl r2, r2, #2
+ add r0, r1, #0
+ ldrb r3, [r0, r2]
+ str r1, [sp, #0x10]
+ cmp r3, #0
+ beq _021E4550
+ cmp r3, #1
+ bne _021E454C
+ b _021E46C2
+_021E454C:
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+_021E4550:
+ ldr r0, [sp, #0x34]
+ ldr r0, [r0, #4]
+ bl MOD14_021DC46C
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x34]
+ add r0, #0x80
+ ldr r4, [r0]
+ ldr r0, [sp, #0x30]
+ cmp r0, #0
+ bge _021E4580
+ add r4, r4, #5
+ cmp r4, #8
+ blt _021E456E
+ sub r4, #8
+_021E456E:
+ ldr r0, [sp, #0x30]
+ mov r5, #0
+ neg r0, r0
+ str r0, [sp, #0x28]
+ mov r0, #0
+ mvn r5, r5
+ mov r6, #1
+ str r0, [sp, #0x18]
+ b _021E458A
+_021E4580:
+ str r0, [sp, #0x28]
+ mov r0, #7
+ mov r5, #1
+ mov r6, #6
+ str r0, [sp, #0x18]
+_021E458A:
+ ldr r0, [sp, #0x28]
+ mov r7, #0
+ add r0, r0, #6
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x28]
+ cmp r0, #0
+ ble _021E45EC
+ ldr r0, [sp, #0x10]
+ str r7, [sp, #0x1c]
+ str r0, [sp, #0x38]
+ add r0, #8
+ str r0, [sp, #0x38]
+_021E45A2:
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x34]
+ str r0, [sp]
+ ldr r0, [sp, #0x1c]
+ lsl r2, r4, #2
+ add r0, r0, #6
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ add r1, r1, r2
+ str r0, [sp, #0xc]
+ mov r2, #0x2c
+ add r3, r4, #0
+ mul r3, r2
+ ldr r2, [sp, #0x38]
+ ldr r0, [sp, #0x10]
+ add r2, r2, r3
+ ldr r1, [r1, #0x34]
+ add r3, r6, #0
+ bl MOD14_021E4038
+ sub r6, r6, r5
+ add r4, r4, r5
+ bpl _021E45D8
+ add r4, #8
+ b _021E45DE
+_021E45D8:
+ cmp r4, #8
+ blt _021E45DE
+ sub r4, #8
+_021E45DE:
+ ldr r0, [sp, #0x1c]
+ add r7, r7, #1
+ add r0, r0, #6
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x28]
+ cmp r7, r0
+ blt _021E45A2
+_021E45EC:
+ mov r0, #0
+ str r0, [sp, #0x24]
+ cmp r7, #8
+ bge _021E4658
+ ldr r0, [sp, #0x28]
+ mov r1, #6
+ mul r1, r0
+ ldr r0, [sp, #0x10]
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x3c]
+ add r0, #8
+ str r0, [sp, #0x3c]
+_021E4604:
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x34]
+ sub r0, r0, r5
+ str r0, [sp, #0x18]
+ str r0, [sp]
+ ldr r0, [sp, #0x20]
+ lsl r2, r4, #2
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x24]
+ add r1, r1, r2
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r2, #0x2c
+ add r3, r4, #0
+ mul r3, r2
+ ldr r2, [sp, #0x3c]
+ ldr r0, [sp, #0x10]
+ add r2, r2, r3
+ ldr r1, [r1, #0x34]
+ add r3, r6, #0
+ bl MOD14_021E4038
+ cmp r6, #0
+ beq _021E463E
+ cmp r6, #7
+ beq _021E463E
+ sub r6, r6, r5
+ b _021E4644
+_021E463E:
+ ldr r0, [sp, #0x24]
+ add r0, r0, #6
+ str r0, [sp, #0x24]
+_021E4644:
+ add r4, r4, r5
+ bpl _021E464C
+ add r4, #8
+ b _021E4652
+_021E464C:
+ cmp r4, #8
+ blt _021E4652
+ sub r4, #8
+_021E4652:
+ add r7, r7, #1
+ cmp r7, #8
+ blt _021E4604
+_021E4658:
+ ldr r0, [sp, #0x30]
+ cmp r0, #0
+ bge _021E466C
+ mov r0, #7
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x28]
+ sub r1, r0, #2
+ ldr r0, [sp, #0x14]
+ sub r6, r0, r1
+ b _021E4674
+_021E466C:
+ mov r0, #0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x28]
+ sub r6, r0, #2
+_021E4674:
+ ldr r0, [sp, #0x2c]
+ cmp r7, r0
+ bge _021E46B0
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #0x40]
+ add r0, #8
+ str r0, [sp, #0x40]
+_021E4682:
+ mov r1, #0x2c
+ add r2, r4, #0
+ mul r2, r1
+ ldr r1, [sp, #0x40]
+ ldr r0, [sp, #0x10]
+ add r1, r1, r2
+ ldr r3, [sp, #0x14]
+ mov r2, #6
+ str r6, [sp]
+ bl MOD14_021E40B4
+ sub r6, r6, r5
+ add r4, r4, r5
+ bpl _021E46A2
+ add r4, #8
+ b _021E46A8
+_021E46A2:
+ cmp r4, #8
+ blt _021E46A8
+ sub r4, #8
+_021E46A8:
+ ldr r0, [sp, #0x2c]
+ add r7, r7, #1
+ cmp r7, r0
+ blt _021E4682
+_021E46B0:
+ mov r1, #0x73
+ ldr r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ add r2, r0, #1
+ ldr r0, [sp, #0x10]
+ add sp, #0x44
+ strb r2, [r0, r1]
+ pop {r4, r5, r6, r7, pc}
+_021E46C2:
+ ldr r0, [sp, #0x10]
+ sub r1, r2, #1
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ bne _021E46DA
+ ldr r0, [sp, #0x10]
+ add r1, r3, #1
+ strb r1, [r0, r2]
+ ldr r1, _021E46E0 ; =MOD14_021E41B8
+ ldr r2, [sp, #0x34]
+ bl MOD14_021DDF30
+_021E46DA:
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E46E0: .word MOD14_021E41B8
+
+ thumb_func_start MOD14_021E46E4
+MOD14_021E46E4: ; 0x021E46E4
+ push {r3, r4, r5, lr}
+ mov r1, #0x1d
+ add r4, r0, #0
+ mov r0, #0xa
+ lsl r1, r1, #4
+ bl FUN_02016998
+ add r5, r0, #0
+ beq _021E472C
+ mov r1, #0x73
+ mov r0, #0
+ lsl r1, r1, #2
+ str r4, [r5]
+ strb r0, [r5, r1]
+ sub r2, r1, #2
+ strb r0, [r5, r2]
+ sub r1, r1, #1
+ strb r0, [r5, r1]
+ mov r1, #7
+ add r3, r0, #0
+ lsl r1, r1, #6
+_021E470E:
+ add r2, r5, r0
+ add r0, r0, #1
+ strb r3, [r2, r1]
+ cmp r0, #8
+ blt _021E470E
+ ldr r1, _021E4730 ; =MOD14_021E4530
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD14_021E3784
+ cmp r0, #0
+ bne _021E472C
+ add r0, r5, #0
+ bl FUN_02016A18
+_021E472C:
+ pop {r3, r4, r5, pc}
+ nop
+_021E4730: .word MOD14_021E4530
+
+ thumb_func_start MOD14_021E4734
+MOD14_021E4734: ; 0x021E4734
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ beq _021E4762
+ ldr r0, [r5, #0x34]
+ cmp r0, #0
+ beq _021E4762
+ ldr r0, [r5, #4]
+ bl MOD14_021DC484
+ add r6, r0, #0
+ mov r4, #0
+_021E474A:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD14_021E3DF8
+ add r1, r0, #0
+ ldr r0, [r5, #0x34]
+ bl FUN_02020130
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _021E474A
+_021E4762:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021E4764
+MOD14_021E4764: ; 0x021E4764
+ ldr r3, _021E476C ; =0x0201797D
+ mov r0, #4
+ mov r1, #0
+ bx r3
+ .align 2, 0
+_021E476C: .word 0x0201797D
+
+ thumb_func_start MOD14_021E4770
+MOD14_021E4770: ; 0x021E4770
+ push {r3, lr}
+ mov r0, #2
+ str r0, [sp]
+ ldr r0, _021E478C ; =0x04001050
+ mov r1, #1
+ mov r2, #0x3f
+ mov r3, #0xe
+ bl G2x_SetBlendAlpha_
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201797C
+ pop {r3, pc}
+ .align 2, 0
+_021E478C: .word 0x04001050
+
+ thumb_func_start MOD14_021E4790
+MOD14_021E4790: ; 0x021E4790
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ ldr r0, [r6, #4]
+ bl MOD14_021DC474
+ add r4, r0, #3
+ cmp r4, #0x12
+ blt _021E47A4
+ sub r4, #0x12
+_021E47A4:
+ mov r0, #0
+ add r7, r6, #0
+ ldr r5, _021E4820 ; =0x021E6690
+ str r0, [sp, #0x10]
+ add r7, #0x88
+_021E47AE:
+ ldr r0, [r6, #4]
+ add r2, r6, #0
+ add r2, #0x84
+ ldr r0, [r0]
+ ldr r2, [r2]
+ add r1, r4, #0
+ bl FUN_0206B484
+ mov r0, #0x68
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ ldrh r2, [r5]
+ ldrh r3, [r5, #2]
+ add r0, r7, #0
+ mov r1, #0
+ bl FUN_020196F4
+ mov r0, #2
+ ldrsh r0, [r5, r0]
+ mov r1, #0
+ add r2, r6, #0
+ add r0, r0, #2
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E4824 ; =0x00010200
+ add r3, r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrsh r3, [r5, r3]
+ add r2, #0x84
+ ldr r2, [r2]
+ add r0, r7, #0
+ add r3, r3, #4
+ bl FUN_0201BDE0
+ sub r4, r4, #1
+ bpl _021E4800
+ mov r4, #0x11
+_021E4800:
+ ldr r0, [sp, #0x10]
+ add r5, r5, #4
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #6
+ blo _021E47AE
+ add r0, r6, #0
+ add r0, #0x88
+ bl FUN_02019548
+ add r0, r6, #0
+ bl MOD14_021E4770
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E4820: .word 0x021E6690
+_021E4824: .word 0x00010200
+
+ thumb_func_start MOD14_021E4828
+MOD14_021E4828: ; 0x021E4828
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r5, r1, #0
+ mov r0, #0xa
+ mov r1, #0x3c
+ add r6, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021E487C
+ str r5, [r4, #4]
+ ldr r0, [sp]
+ str r6, [r4, #8]
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #0x18]
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ bl MOD14_021DDD50
+ str r0, [r4, #0x14]
+ add r0, r5, #0
+ bl MOD14_021DDD6C
+ str r0, [r4, #0x18]
+ mov r0, #0
+ str r0, [r4, #0x34]
+ add r0, r6, #0
+ bl MOD14_021DC3C4
+ cmp r0, #3
+ bne _021E486C
+ mov r0, #1
+ b _021E486E
+_021E486C:
+ mov r0, #0
+_021E486E:
+ str r0, [r4]
+ add r0, r4, #0
+ bl MOD14_021E4890
+ str r4, [r7]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E487C:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E4880
+MOD14_021E4880: ; 0x021E4880
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD14_021E495C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E4890
+MOD14_021E4890: ; 0x021E4890
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x58
+ add r6, r0, #0
+ ldr r0, [r6]
+ cmp r0, #0
+ beq _021E4940
+ ldr r4, [r6, #0x14]
+ ldr r0, [r6, #4]
+ bl MOD14_021DDD48
+ add r2, r0, #0
+ ldr r0, [r4, #0x20]
+ add r1, sp, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r3, [r4, #0x1c]
+ add r0, sp, #0x34
+ bl MOD14_021DDDB4
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0206E640
+ add r1, r0, #0
+ mov r0, #0xa
+ str r0, [sp]
+ mov r0, #0x10
+ mov r2, #0
+ add r3, sp, #0xc
+ bl FUN_02006BB0
+ str r0, [sp, #8]
+ cmp r0, #0
+ beq _021E4950
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r1, [r0]
+ ldr r0, _021E4954 ; =0x00300010
+ ldr r4, _021E4958 ; =0x021E68E8
+ and r1, r0
+ ldr r0, [sp, #0xc]
+ mov r7, #0
+ str r1, [r0, #8]
+ add r5, r6, #0
+_021E48EA:
+ add r0, sp, #0x10
+ bl FUN_020B1A24
+ ldr r0, [sp, #0xc]
+ ldr r1, [r4]
+ mov r2, #1
+ add r3, sp, #0x10
+ bl FUN_020B1768
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r2, #0
+ ldr r0, [r6, #0x10]
+ add r1, sp, #0x34
+ add r3, r2, #0
+ bl MOD14_021DDDD4
+ str r0, [r5, #0x1c]
+ ldr r1, [r4, #4]
+ bl FUN_02020248
+ ldr r0, [r5, #0x1c]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r5, #0x1c]
+ mov r1, #1
+ bl FUN_020200EC
+ mov r0, #0
+ str r0, [r5, #0x28]
+ add r7, r7, #1
+ add r4, #8
+ add r5, r5, #4
+ cmp r7, #3
+ blt _021E48EA
+ ldr r0, [sp, #8]
+ bl FUN_02016A18
+ add sp, #0x58
+ pop {r3, r4, r5, r6, r7, pc}
+_021E4940:
+ mov r1, #0
+ add r0, r1, #0
+_021E4944:
+ str r0, [r6, #0x1c]
+ str r0, [r6, #0x28]
+ add r1, r1, #1
+ add r6, r6, #4
+ cmp r1, #3
+ blt _021E4944
+_021E4950:
+ add sp, #0x58
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E4954: .word 0x00300010
+_021E4958: .word 0x021E68E8
+
+ thumb_func_start MOD14_021E495C
+MOD14_021E495C: ; 0x021E495C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021E4962:
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _021E496C
+ bl FUN_0201FFC8
+_021E496C:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021E4962
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E4978
+MOD14_021E4978: ; 0x021E4978
+ push {r3, r4}
+ mov r3, #0
+ add r4, r0, #0
+_021E497E:
+ ldr r2, [r4, #0x28]
+ cmp r2, #0
+ bne _021E4990
+ lsl r2, r3, #2
+ add r0, r0, r2
+ str r1, [r0, #0x28]
+ add r0, r3, #0
+ pop {r3, r4}
+ bx lr
+_021E4990:
+ add r3, r3, #1
+ add r4, r4, #4
+ cmp r3, #3
+ blt _021E497E
+ mov r0, #0
+ mvn r0, r0
+ pop {r3, r4}
+ bx lr
+
+ thumb_func_start MOD14_021E49A0
+MOD14_021E49A0: ; 0x021E49A0
+ mov r3, #0
+_021E49A2:
+ ldr r2, [r0, #0x28]
+ cmp r1, r2
+ bne _021E49AC
+ add r0, r3, #0
+ bx lr
+_021E49AC:
+ add r3, r3, #1
+ add r0, r0, #4
+ cmp r3, #3
+ blt _021E49A2
+ mov r0, #0
+ mvn r0, r0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021E49BC
+MOD14_021E49BC: ; 0x021E49BC
+ lsl r1, r1, #2
+ add r0, r0, r1
+ str r2, [r0, #0x28]
+ bx lr
+
+ thumb_func_start MOD14_021E49C4
+MOD14_021E49C4: ; 0x021E49C4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021E49D8
+ bl MOD14_021E49DC
+ add r0, r4, #0
+ bl MOD14_021E4A14
+_021E49D8:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E49DC
+MOD14_021E49DC: ; 0x021E49DC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ bl MOD14_021DC430
+ add r4, r0, #0
+ beq _021E4A12
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD14_021E4978
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD14_021E4B58
+ add r5, #0x1c
+ lsl r4, r6, #2
+ ldr r0, [r5, r4]
+ mov r1, #6
+ bl FUN_02020130
+ ldr r0, [r5, r4]
+ mov r1, #1
+ bl FUN_020200A0
+_021E4A12:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021E4A14
+MOD14_021E4A14: ; 0x021E4A14
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ bl MOD14_021DC538
+ add r7, r0, #0
+ beq _021E4AC8
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD14_021E4978
+ add r6, r0, #0
+ ldr r0, [r5, #0x18]
+ add r1, sp, #0x10
+ bl MOD14_021E0038
+ mov r0, #2
+ ldr r1, [sp, #0x14]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #8]
+ bl MOD14_021DC3CC
+ cmp r0, #1
+ bne _021E4A50
+ mov r0, #1
+ str r0, [sp, #0xc]
+ b _021E4A54
+_021E4A50:
+ mov r0, #2
+ str r0, [sp, #0xc]
+_021E4A54:
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #1
+ lsl r4, r6, #3
+ bl FUN_0206E640
+ mov r2, #0
+ ldr r3, _021E4ACC ; =0x021E68E8
+ str r2, [sp]
+ add r1, r0, #0
+ str r2, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ ldr r3, [r3, r4]
+ mov r0, #0x10
+ bl FUN_02006A34
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #2
+ bl FUN_0206E640
+ ldr r3, _021E4AD0 ; =0x021E68EC
+ add r1, r0, #0
+ mov r0, #0x20
+ ldr r3, [r3, r4]
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #0x10
+ mov r2, #1
+ lsl r3, r3, #5
+ bl FUN_02006930
+ ldr r1, [sp, #0xc]
+ add r5, #0x1c
+ lsl r4, r6, #2
+ lsl r1, r1, #0x18
+ ldr r0, [r5, r4]
+ lsr r1, r1, #0x18
+ bl FUN_02020238
+ ldr r0, [r5, r4]
+ mov r1, #2
+ bl MOD14_021DDE24
+ ldr r0, [r5, r4]
+ add r1, sp, #0x10
+ bl FUN_02020044
+ ldr r0, [r5, r4]
+ mov r1, #0
+ bl FUN_02020130
+ ldr r0, [r5, r4]
+ mov r1, #1
+ bl FUN_020200A0
+_021E4AC8:
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E4ACC: .word 0x021E68E8
+_021E4AD0: .word 0x021E68EC
+
+ thumb_func_start MOD14_021E4AD4
+MOD14_021E4AD4: ; 0x021E4AD4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r5, #8]
+ add r7, r2, #0
+ bl MOD14_021DC3CC
+ cmp r0, #1
+ ldr r0, [r5, #4]
+ bne _021E4B1E
+ bl MOD14_021DDD60
+ add r6, r0, #0
+ ldr r0, [r5, #8]
+ bl MOD14_021DC3E8
+ add r1, r0, #0
+ add r0, r6, #0
+ add r2, sp, #4
+ add r3, sp, #0
+ bl MOD14_021E3170
+ ldr r0, [sp, #4]
+ add r0, #0xa
+ lsl r0, r0, #0xc
+ str r0, [r4]
+ ldr r0, [sp]
+ add sp, #8
+ add r0, #8
+ lsl r0, r0, #0xc
+ str r0, [r4, #4]
+ mov r0, #1
+ str r0, [r7]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E4B1E:
+ bl MOD14_021DDD98
+ add r6, r0, #0
+ ldr r0, [r5, #8]
+ bl MOD14_021DC3D0
+ mov r1, #0x18
+ add r6, #0x70
+ mul r1, r0
+ add r0, r6, r1
+ add r0, #0xa
+ str r0, [r4]
+ ldr r0, [r5, #8]
+ bl MOD14_021DC3D8
+ mov r1, #0x18
+ mul r1, r0
+ add r1, #0x30
+ str r1, [r4, #4]
+ ldr r0, [r4]
+ lsl r0, r0, #0xc
+ str r0, [r4]
+ ldr r0, [r4, #4]
+ lsl r0, r0, #0xc
+ str r0, [r4, #4]
+ mov r0, #2
+ str r0, [r7]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E4B58
+MOD14_021E4B58: ; 0x021E4B58
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r1, #0
+ add r5, r0, #0
+ add r7, r2, #0
+ cmp r4, #0
+ blt _021E4BD2
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD14_021E4AD4
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #1
+ lsl r6, r4, #3
+ bl FUN_0206E640
+ mov r2, #0
+ ldr r3, _021E4BD8 ; =0x021E68E8
+ str r2, [sp]
+ add r1, r0, #0
+ str r2, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ ldr r3, [r3, r6]
+ mov r0, #0x10
+ bl FUN_02006A34
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #2
+ bl FUN_0206E640
+ ldr r3, _021E4BDC ; =0x021E68EC
+ add r1, r0, #0
+ mov r0, #0x20
+ ldr r3, [r3, r6]
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #0x10
+ mov r2, #1
+ lsl r3, r3, #5
+ bl FUN_02006930
+ ldr r1, [sp, #0xc]
+ add r5, #0x1c
+ lsl r4, r4, #2
+ lsl r1, r1, #0x18
+ ldr r0, [r5, r4]
+ lsr r1, r1, #0x18
+ bl FUN_02020238
+ ldr r0, [r5, r4]
+ mov r1, #3
+ bl MOD14_021DDE24
+ ldr r0, [r5, r4]
+ add r1, sp, #0x10
+ bl FUN_02020044
+_021E4BD2:
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E4BD8: .word 0x021E68E8
+_021E4BDC: .word 0x021E68EC
+
+ thumb_func_start MOD14_021E4BE0
+MOD14_021E4BE0: ; 0x021E4BE0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r1, [r5]
+ cmp r1, #0
+ beq _021E4C3E
+ mov r1, #1
+ bl MOD14_021E49A0
+ add r4, r0, #0
+ bmi _021E4C0A
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #2
+ bl MOD14_021E49BC
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x1c]
+ mov r1, #2
+ bl FUN_02020130
+_021E4C0A:
+ ldr r0, [r5, #8]
+ bl MOD14_021DC430
+ add r6, r0, #0
+ beq _021E4C3E
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD14_021E4978
+ add r4, r0, #0
+ bmi _021E4C3E
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD14_021E4B58
+ add r5, #0x1c
+ lsl r4, r4, #2
+ ldr r0, [r5, r4]
+ mov r1, #1
+ bl FUN_02020130
+ ldr r0, [r5, r4]
+ mov r1, #1
+ bl FUN_020200A0
+_021E4C3E:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021E4C40
+MOD14_021E4C40: ; 0x021E4C40
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r1, [r5]
+ cmp r1, #0
+ bne _021E4C4E
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E4C4E:
+ mov r1, #1
+ bl MOD14_021E49A0
+ cmp r0, #0
+ blt _021E4C6A
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x1c]
+ bl FUN_02020388
+ cmp r0, #0
+ beq _021E4C6A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021E4C6A:
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD14_021E49A0
+ add r4, r0, #0
+ bmi _021E4C92
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x1c]
+ bl FUN_02020388
+ cmp r0, #0
+ beq _021E4C88
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021E4C88:
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD14_021E49BC
+_021E4C92:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E4C98
+MOD14_021E4C98: ; 0x021E4C98
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ mov r0, #0xa
+ mov r1, #0x34
+ add r6, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021E4D1A
+ lsl r0, r7, #2
+ str r5, [r4]
+ add r0, r5, r0
+ ldr r0, [r0, #0x1c]
+ str r0, [r4, #4]
+ bl FUN_0202011C
+ add r3, r0, #0
+ add r2, r4, #0
+ ldmia r3!, {r0, r1}
+ add r2, #8
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ add r2, r4, #0
+ ldmia r6!, {r0, r1}
+ add r2, #0x14
+ stmia r2!, {r0, r1}
+ ldr r0, [r6]
+ ldr r6, [sp, #0x18]
+ str r0, [r2]
+ ldr r1, [r4, #0x14]
+ ldr r0, [r4, #8]
+ sub r0, r1, r0
+ add r1, r6, #0
+ bl _s32_div_f
+ str r0, [r4, #0x20]
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0xc]
+ sub r0, r1, r0
+ add r1, r6, #0
+ bl _s32_div_f
+ str r0, [r4, #0x24]
+ ldr r0, [sp, #0x18]
+ mov r2, #0
+ str r0, [r4, #0x2c]
+ ldr r0, [sp]
+ add r1, r4, #0
+ str r0, [r4, #0x28]
+ ldr r0, _021E4D1C ; =MOD14_021E4D20
+ str r2, [r4, #0x30]
+ bl MOD14_021DDD40
+ cmp r0, #0
+ beq _021E4D14
+ ldr r0, [r5, #0x34]
+ add r0, r0, #1
+ str r0, [r5, #0x34]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E4D14:
+ add r0, r4, #0
+ bl FUN_02016A18
+_021E4D1A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E4D1C: .word MOD14_021E4D20
+
+ thumb_func_start MOD14_021E4D20
+MOD14_021E4D20: ; 0x021E4D20
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _021E4D32
+ cmp r0, #1
+ beq _021E4D68
+ pop {r3, r4, r5, pc}
+_021E4D32:
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _021E4D58
+ ldr r2, [r4, #8]
+ ldr r0, [r4, #0x20]
+ add r1, #8
+ add r0, r2, r0
+ str r0, [r4, #8]
+ ldr r2, [r4, #0xc]
+ ldr r0, [r4, #0x24]
+ add r0, r2, r0
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #4]
+ bl FUN_02020044
+ ldr r0, [r4, #0x2c]
+ sub r0, r0, #1
+ str r0, [r4, #0x2c]
+ pop {r3, r4, r5, pc}
+_021E4D58:
+ ldr r0, [r4, #4]
+ add r1, #0x14
+ bl FUN_02020044
+ ldr r0, [r4, #0x30]
+ add r0, r0, #1
+ str r0, [r4, #0x30]
+ pop {r3, r4, r5, pc}
+_021E4D68:
+ ldr r0, [r4, #4]
+ bl FUN_02020388
+ cmp r0, #0
+ bne _021E4D92
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0x28]
+ bl MOD14_021DDE24
+ ldr r1, [r4]
+ ldr r0, [r1, #0x34]
+ sub r0, r0, #1
+ str r0, [r1, #0x34]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD14_021DDF30
+_021E4D92:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021E4D94
+MOD14_021E4D94: ; 0x021E4D94
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r1, [r5]
+ cmp r1, #0
+ beq _021E4DE2
+ mov r1, #1
+ bl MOD14_021E49A0
+ add r4, r0, #0
+ bmi _021E4DE2
+ ldr r0, [r5, #0x18]
+ add r1, sp, #4
+ bl MOD14_021E0038
+ mov r0, #2
+ ldr r1, [sp, #8]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #3
+ bl MOD14_021E49BC
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x1c]
+ mov r1, #3
+ bl FUN_02020130
+ mov r0, #0xc
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, sp, #4
+ mov r3, #2
+ bl MOD14_021E4C98
+_021E4DE2:
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E4DE8
+MOD14_021E4DE8: ; 0x021E4DE8
+ ldr r0, [r0, #0x34]
+ cmp r0, #0
+ bne _021E4DF2
+ mov r0, #1
+ bx lr
+_021E4DF2:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021E4DF8
+MOD14_021E4DF8: ; 0x021E4DF8
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021E4E22
+ mov r1, #1
+ bl MOD14_021E49A0
+ add r5, r0, #0
+ bmi _021E4E22
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #2
+ bl MOD14_021E49BC
+ lsl r0, r5, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x1c]
+ mov r1, #2
+ bl FUN_02020130
+_021E4E22:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021E4E24
+MOD14_021E4E24: ; 0x021E4E24
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r1, [r5]
+ cmp r1, #0
+ beq _021E4E54
+ mov r1, #2
+ bl MOD14_021E49A0
+ add r4, r0, #0
+ bmi _021E4E54
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x1c]
+ bl FUN_02020388
+ cmp r0, #0
+ beq _021E4E4A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021E4E4A:
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD14_021E49BC
+_021E4E54:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021E4E58
+MOD14_021E4E58: ; 0x021E4E58
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r1, [r5]
+ cmp r1, #0
+ beq _021E4E9E
+ mov r1, #3
+ bl MOD14_021E49A0
+ add r4, r0, #0
+ bmi _021E4E9E
+ add r0, r5, #0
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD14_021E4AD4
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD14_021E49BC
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x1c]
+ mov r1, #4
+ bl FUN_02020130
+ mov r0, #0xc
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, sp, #8
+ mov r3, #3
+ bl MOD14_021E4C98
+_021E4E9E:
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E4EA4
+MOD14_021E4EA4: ; 0x021E4EA4
+ ldr r0, [r0, #0x34]
+ cmp r0, #0
+ bne _021E4EAE
+ mov r0, #1
+ bx lr
+_021E4EAE:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021E4EB4
+MOD14_021E4EB4: ; 0x021E4EB4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r1, [r5]
+ cmp r1, #0
+ beq _021E4F42
+ mov r1, #3
+ bl MOD14_021E49A0
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD14_021E49A0
+ add r6, r0, #0
+ cmp r4, #0
+ blt _021E4F42
+ cmp r6, #0
+ blt _021E4F42
+ add r0, r5, #0
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD14_021E4AD4
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD14_021E49BC
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x1c]
+ mov r1, #4
+ bl FUN_02020130
+ mov r0, #0xc
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, sp, #8
+ mov r3, #3
+ bl MOD14_021E4C98
+ ldr r0, [r5, #0x18]
+ add r1, sp, #8
+ bl MOD14_021E0038
+ mov r0, #2
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #3
+ bl MOD14_021E49BC
+ lsl r0, r6, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x1c]
+ mov r1, #3
+ bl FUN_02020130
+ mov r0, #0xc
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, sp, #8
+ mov r3, #2
+ bl MOD14_021E4C98
+_021E4F42:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E4F48
+MOD14_021E4F48: ; 0x021E4F48
+ ldr r0, [r0, #0x34]
+ cmp r0, #0
+ bne _021E4F52
+ mov r0, #1
+ bx lr
+_021E4F52:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021E4F58
+MOD14_021E4F58: ; 0x021E4F58
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021E4F9E
+ mov r1, #3
+ bl MOD14_021E49A0
+ add r5, r0, #0
+ bmi _021E4F7C
+ lsl r0, r5, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x1c]
+ mov r1, #5
+ bl FUN_02020130
+ str r5, [r4, #0x38]
+ pop {r3, r4, r5, pc}
+_021E4F7C:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD14_021E49A0
+ add r5, r0, #0
+ bmi _021E4F98
+ lsl r0, r5, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x1c]
+ mov r1, #2
+ bl FUN_02020130
+ str r5, [r4, #0x38]
+ pop {r3, r4, r5, pc}
+_021E4F98:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4, #0x38]
+_021E4F9E:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021E4FA0
+MOD14_021E4FA0: ; 0x021E4FA0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021E4FD6
+ mov r0, #0
+ ldr r1, [r4, #0x38]
+ mvn r0, r0
+ cmp r1, r0
+ beq _021E4FD6
+ lsl r0, r1, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x1c]
+ bl FUN_02020388
+ cmp r0, #0
+ beq _021E4FC6
+ mov r0, #0
+ pop {r4, pc}
+_021E4FC6:
+ ldr r1, [r4, #0x38]
+ add r0, r4, #0
+ mov r2, #0
+ bl MOD14_021E49BC
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4, #0x38]
+_021E4FD6:
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E4FDC
+MOD14_021E4FDC: ; 0x021E4FDC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, [r5]
+ cmp r1, #0
+ beq _021E5016
+ mov r1, #3
+ bl MOD14_021E49A0
+ add r6, r0, #0
+ bmi _021E5016
+ ldmia r4!, {r0, r1}
+ add r3, sp, #0
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r4]
+ str r0, [r3]
+ mov r0, #2
+ ldr r1, [sp, #4]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #4]
+ lsl r0, r6, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x1c]
+ add r1, r2, #0
+ bl FUN_02020044
+_021E5016:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E501C
+MOD14_021E501C: ; 0x021E501C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, [r5]
+ cmp r1, #0
+ beq _021E5040
+ mov r1, #3
+ bl MOD14_021E49A0
+ cmp r0, #0
+ blt _021E5040
+ lsl r0, r0, #2
+ add r0, r5, r0
+ lsl r1, r4, #0x18
+ ldr r0, [r0, #0x1c]
+ lsr r1, r1, #0x18
+ bl FUN_02020238
+_021E5040:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E5044
+MOD14_021E5044: ; 0x021E5044
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r2, #0
+ add r5, r0, #0
+ add r0, r7, #0
+ add r6, r1, #0
+ str r3, [sp, #4]
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ beq _021E5064
+ mov r0, #0
+ str r0, [r5]
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E5064:
+ mov r1, #0xe1
+ mov r0, #0xa
+ lsl r1, r1, #2
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021E50E6
+ str r6, [r4, #4]
+ ldr r0, [sp, #4]
+ str r7, [r4, #8]
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #0x20]
+ str r0, [r4, #0x10]
+ add r0, r6, #0
+ bl MOD14_021DDD50
+ mov r3, #0xda
+ str r0, [r4, #0x14]
+ mov r0, #0xa
+ lsl r3, r3, #2
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #7
+ mov r2, #1
+ add r3, r4, r3
+ bl FUN_02006BDC
+ mov r3, #0x37
+ lsl r3, r3, #4
+ str r0, [r4, r3]
+ mov r0, #0xa
+ sub r3, r3, #4
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #8
+ mov r2, #1
+ add r3, r4, r3
+ bl FUN_02006BDC
+ mov r1, #0xdd
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [sp, #0x24]
+ mov r2, #0x93
+ str r0, [r4, #0x6c]
+ mov r0, #1
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ mov r3, #0xa
+ bl FUN_0200A86C
+ str r0, [r4, #0x70]
+ mov r0, #0x20
+ mov r1, #0xa
+ bl FUN_020219F4
+ str r0, [r4, #0x74]
+ mov r0, #0xe
+ mov r1, #0
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ add sp, #8
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E50E6:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E50EC
+MOD14_021E50EC: ; 0x021E50EC
+ push {r4, lr}
+ add r4, r0, #0
+ beq _021E5124
+ mov r0, #0x37
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0xdd
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x70]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ bl MOD14_021E5C04
+ add r0, r4, #0
+ bl MOD14_021E5474
+ ldr r0, [r4, #0x74]
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_02016A18
+_021E5124:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E5128
+MOD14_021E5128: ; 0x021E5128
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ beq _021E5210
+ bl MOD14_021E5334
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x12
+ mov r1, #0x6c
+ mov r3, #5
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x12
+ mov r1, #0x69
+ mov r3, #5
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x12
+ mov r1, #0x6a
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x12
+ mov r1, #0x6b
+ mov r3, #7
+ bl FUN_020068C8
+ mov r0, #0x80
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #0x12
+ mov r1, #0x6d
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ bl FUN_0206B888
+ mov r3, #0x80
+ add r1, r0, #0
+ str r3, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #0x13
+ mov r2, #5
+ bl FUN_02006930
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0xa
+ bl FUN_02017F18
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ add r3, r2, #0
+ bl FUN_02018540
+ add r0, r4, #0
+ bl MOD14_021E539C
+ add r0, r4, #0
+ bl MOD14_021E5400
+ ldr r0, [r4, #8]
+ bl MOD14_021DC560
+ mov r1, #0xde
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ bl FUN_02017CD0
+ add r0, r4, #0
+ bl MOD14_021E5A08
+_021E5210:
+ add sp, #0x10
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E5214
+MOD14_021E5214: ; 0x021E5214
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ cmp r5, #0
+ beq _021E5268
+ ldr r0, [r5, #8]
+ bl MOD14_021DC558
+ add r4, r0, #0
+ cmp r6, #0
+ beq _021E5248
+ mov r0, #1
+ eor r0, r4
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x28]
+ mov r1, #2
+ bl FUN_02020130
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x28]
+ mov r1, #0
+ bl FUN_02020130
+ b _021E5262
+_021E5248:
+ mov r1, #1
+ eor r0, r1
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x28]
+ bl FUN_02020130
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x28]
+ mov r1, #0
+ bl FUN_02020130
+_021E5262:
+ add r0, r5, #0
+ bl MOD14_021E5334
+_021E5268:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E526C
+MOD14_021E526C: ; 0x021E526C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD14_021E5C68
+ cmp r5, #0
+ beq _021E52B8
+ ldr r0, [r5, #8]
+ bl MOD14_021DC558
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD14_021E5CFC
+ ldr r0, [r5, #8]
+ bl MOD14_021DC560
+ cmp r0, #0
+ beq _021E529C
+ cmp r0, #1
+ beq _021E52A6
+ cmp r0, #2
+ beq _021E52B0
+ pop {r3, r4, r5, pc}
+_021E529C:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD14_021E57E4
+ pop {r3, r4, r5, pc}
+_021E52A6:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD14_021E55B0
+ pop {r3, r4, r5, pc}
+_021E52B0:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD14_021E5908
+_021E52B8:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E52BC
+MOD14_021E52BC: ; 0x021E52BC
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD14_021E52C0
+MOD14_021E52C0: ; 0x021E52C0
+ push {r4, lr}
+ add r4, r0, #0
+ beq _021E52DE
+ mov r1, #0xdf
+ mov r2, #0
+ lsl r1, r1, #2
+ str r2, [r4, r1]
+ sub r1, r1, #4
+ ldr r1, [r4, r1]
+ bl MOD14_021E5504
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ bl FUN_02017CD0
+_021E52DE:
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E52E0
+MOD14_021E52E0: ; 0x021E52E0
+ push {r4, lr}
+ add r4, r0, #0
+ beq _021E5330
+ mov r1, #0xdf
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ cmp r1, #0
+ beq _021E52FA
+ cmp r1, #1
+ beq _021E530A
+ cmp r1, #2
+ beq _021E5328
+ b _021E532C
+_021E52FA:
+ bl MOD14_021E539C
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _021E532C
+_021E530A:
+ bl MOD14_021E5718
+ add r0, r4, #0
+ bl MOD14_021E549C
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ bl FUN_02017CD0
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _021E532C
+_021E5328:
+ mov r0, #1
+ pop {r4, pc}
+_021E532C:
+ mov r0, #0
+ pop {r4, pc}
+_021E5330:
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD14_021E5334
+MOD14_021E5334: ; 0x021E5334
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ bl MOD14_021DC558
+ cmp r0, #0
+ bne _021E5348
+ mov r0, #0xda
+ b _021E534A
+_021E5348:
+ mov r0, #0xdb
+_021E534A:
+ lsl r0, r0, #2
+ ldr r4, [r5, r0]
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #0x20
+ add r0, r4, #0
+ mov r2, #0
+ str r1, [sp, #4]
+ add r0, #0xc
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r5, #0xc]
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_02018170
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ add r4, #0xc
+ str r4, [sp, #8]
+ mov r2, #0x1a
+ str r2, [sp, #0xc]
+ mov r3, #0
+ str r3, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0xc]
+ mov r1, #2
+ bl FUN_02018170
+ ldr r0, [r5, #0xc]
+ mov r1, #2
+ bl FUN_02017CD0
+ add sp, #0x1c
+ pop {r4, r5, pc}
+
+ thumb_func_start MOD14_021E539C
+MOD14_021E539C: ; 0x021E539C
+ push {r3, lr}
+ ldr r0, [r0, #8]
+ bl MOD14_021DC560
+ cmp r0, #0
+ beq _021E53B2
+ cmp r0, #1
+ beq _021E53CC
+ cmp r0, #2
+ beq _021E53E6
+ pop {r3, pc}
+_021E53B2:
+ mov r0, #5
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #6
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #0
+ bl FUN_0201797C
+ pop {r3, pc}
+_021E53CC:
+ mov r0, #6
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #5
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #0
+ bl FUN_0201797C
+ pop {r3, pc}
+_021E53E6:
+ mov r0, #7
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #5
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #6
+ mov r1, #0
+ bl FUN_0201797C
+ pop {r3, pc}
+
+ thumb_func_start MOD14_021E5400
+MOD14_021E5400: ; 0x021E5400
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r1, #0
+ add r2, r7, #0
+ add r5, r1, #0
+_021E540A:
+ add r0, r2, #0
+ add r0, #0x84
+ add r1, r1, #1
+ add r2, #0x10
+ str r5, [r0]
+ cmp r1, #7
+ blt _021E540A
+ add r4, r7, #0
+ ldr r6, _021E5470 ; =0x021E6940
+ add r4, #0x78
+_021E541E:
+ ldr r0, [r7, #0xc]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_02019150
+ add r0, r4, #0
+ bl FUN_02019270
+ add r5, r5, #1
+ add r6, #8
+ add r4, #0x10
+ cmp r5, #3
+ blo _021E541E
+ add r0, r7, #0
+ bl MOD14_021E5718
+ add r0, r7, #0
+ add r0, #0x78
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r7, #0
+ add r0, #0x88
+ mov r1, #0
+ bl FUN_02019620
+ add r4, r7, #0
+ mov r5, #0
+ add r4, #0x78
+_021E5458:
+ add r0, r4, #0
+ bl FUN_02019548
+ add r5, r5, #1
+ add r4, #0x10
+ cmp r5, #3
+ blo _021E5458
+ add r0, r7, #0
+ bl MOD14_021E549C
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E5470: .word 0x021E6940
+
+ thumb_func_start MOD14_021E5474
+MOD14_021E5474: ; 0x021E5474
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r5, #0
+ mov r6, #0
+ add r4, #0x78
+_021E547E:
+ add r0, r5, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E548E
+ add r0, r4, #0
+ bl FUN_02019178
+_021E548E:
+ add r6, r6, #1
+ add r5, #0x10
+ add r4, #0x10
+ cmp r6, #7
+ blt _021E547E
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E549C
+MOD14_021E549C: ; 0x021E549C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ bl MOD14_021DC560
+ add r4, r0, #0
+ ldr r0, [r5, #8]
+ bl MOD14_021DC560
+ cmp r0, #0
+ beq _021E54BC
+ cmp r0, #1
+ beq _021E54D4
+ cmp r0, #2
+ beq _021E54E6
+ b _021E54FC
+_021E54BC:
+ add r0, r5, #0
+ bl MOD14_021E5540
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD14_021E57E4
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD14_021E57E4
+ b _021E54FC
+_021E54D4:
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD14_021E55B0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD14_021E55B0
+ b _021E54FC
+_021E54E6:
+ add r0, r5, #0
+ bl MOD14_021E56A8
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD14_021E5908
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD14_021E5908
+_021E54FC:
+ mov r0, #0xde
+ lsl r0, r0, #2
+ str r4, [r5, r0]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021E5504
+MOD14_021E5504: ; 0x021E5504
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r1, #0
+ beq _021E5516
+ cmp r1, #1
+ beq _021E5522
+ cmp r1, #2
+ beq _021E5532
+ pop {r4, pc}
+_021E5516:
+ bl MOD14_021E5578
+ add r0, r4, #0
+ bl MOD14_021E57CC
+ pop {r4, pc}
+_021E5522:
+ mov r1, #0
+ bl MOD14_021E5688
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD14_021E5688
+ pop {r4, pc}
+_021E5532:
+ bl MOD14_021E56E0
+ add r0, r4, #0
+ bl MOD14_021E57CC
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E5540
+MOD14_021E5540: ; 0x021E5540
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r7, _021E5574 ; =0x021E6930
+ str r0, [sp]
+ mov r6, #0
+ add r5, #0x78
+_021E554C:
+ add r0, r6, #3
+ lsl r4, r0, #4
+ ldr r0, [sp]
+ add r1, r5, r4
+ ldr r0, [r0, #0xc]
+ add r2, r7, #0
+ bl FUN_02019150
+ add r0, r5, r4
+ bl FUN_02019270
+ add r0, r5, r4
+ mov r1, #0
+ bl FUN_02019620
+ add r6, r6, #1
+ add r7, #8
+ cmp r6, #2
+ blo _021E554C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E5574: .word 0x021E6930
+
+ thumb_func_start MOD14_021E5578
+MOD14_021E5578: ; 0x021E5578
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r0, #0x78
+ add r5, r0, #0
+ mov r6, #3
+ add r4, #0x30
+ add r5, #0x30
+ mov r7, #0
+_021E5588:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E55A4
+ add r0, r5, #0
+ bl FUN_020192B8
+ add r0, r5, #0
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x84
+ str r7, [r0]
+_021E55A4:
+ add r6, r6, #1
+ add r4, #0x10
+ add r5, #0x10
+ cmp r6, #4
+ ble _021E5588
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E55B0
+MOD14_021E55B0: ; 0x021E55B0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ ldr r0, [r7, #8]
+ str r1, [sp]
+ bl MOD14_021DC568
+ add r4, r0, #0
+ ldr r0, [r7, #8]
+ bl MOD14_021DC3F0
+ add r6, r0, #0
+ ldr r0, [r7, #8]
+ bl MOD14_021DC558
+ ldr r1, [sp]
+ cmp r1, r0
+ bne _021E55D8
+ mov r5, #1
+ b _021E55DA
+_021E55D8:
+ mov r5, #0
+_021E55DA:
+ ldr r0, [r7, #8]
+ ldr r1, [sp]
+ bl MOD14_021DC574
+ cmp r6, #1
+ bne _021E55EA
+ cmp r5, #1
+ beq _021E55F2
+_021E55EA:
+ cmp r5, #0
+ bne _021E5676
+ cmp r0, #1
+ bne _021E5676
+_021E55F2:
+ ldrb r0, [r4, #6]
+ cmp r0, #0
+ bne _021E5676
+ ldr r1, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #0x10]
+ mov r0, #0x14
+ add r2, r1, #0
+ mul r2, r0
+ add r5, r7, r2
+ mov r2, #1
+ eor r1, r2
+ mul r0, r1
+ ldr r6, _021E5684 ; =0x021E6958
+ add r4, #0x16
+ add r7, r7, r0
+_021E5614:
+ ldr r3, [r6]
+ ldr r0, [r6, #8]
+ ldrh r2, [r4]
+ sub r1, r0, r3
+ asr r0, r1, #7
+ lsr r0, r0, #0x18
+ add r0, r1, r0
+ asr r0, r0, #8
+ mul r0, r2
+ add r0, r3, r0
+ str r0, [sp, #8]
+ ldr r3, [r6, #4]
+ ldr r0, [r6, #0xc]
+ ldrh r2, [r4]
+ sub r1, r0, r3
+ asr r0, r1, #7
+ lsr r0, r0, #0x18
+ add r0, r1, r0
+ asr r0, r0, #8
+ mul r0, r2
+ add r0, r3, r0
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x34]
+ add r1, sp, #8
+ bl FUN_02020044
+ ldr r0, [r5, #0x34]
+ mov r1, #0
+ bl MOD14_021DDE24
+ ldr r0, [r7, #0x34]
+ mov r1, #1
+ bl MOD14_021DDE24
+ ldr r0, [r5, #0x34]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [sp, #4]
+ add r4, r4, #2
+ add r0, r0, #1
+ add r6, #0x10
+ add r5, r5, #4
+ add r7, r7, #4
+ str r0, [sp, #4]
+ cmp r0, #5
+ blt _021E5614
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021E5676:
+ ldr r1, [sp]
+ add r0, r7, #0
+ bl MOD14_021E5688
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E5684: .word 0x021E6958
+
+ thumb_func_start MOD14_021E5688
+MOD14_021E5688: ; 0x021E5688
+ push {r4, r5, r6, lr}
+ mov r2, #0x14
+ mov r4, #0
+ mul r2, r1
+ add r5, r0, r2
+ add r6, r4, #0
+_021E5694:
+ ldr r0, [r5, #0x34]
+ add r1, r6, #0
+ bl FUN_020200A0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _021E5694
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E56A8
+MOD14_021E56A8: ; 0x021E56A8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r7, _021E56DC ; =0x021E6920
+ str r0, [sp]
+ mov r6, #0
+ add r5, #0x78
+_021E56B4:
+ add r0, r6, #5
+ lsl r4, r0, #4
+ ldr r0, [sp]
+ add r1, r5, r4
+ ldr r0, [r0, #0xc]
+ add r2, r7, #0
+ bl FUN_02019150
+ add r0, r5, r4
+ bl FUN_02019270
+ add r0, r5, r4
+ mov r1, #0
+ bl FUN_02019620
+ add r6, r6, #1
+ add r7, #8
+ cmp r6, #2
+ blo _021E56B4
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E56DC: .word 0x021E6920
+
+ thumb_func_start MOD14_021E56E0
+MOD14_021E56E0: ; 0x021E56E0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r0, #0x78
+ add r5, r0, #0
+ mov r6, #5
+ add r4, #0x50
+ add r5, #0x50
+ mov r7, #0
+_021E56F0:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E570C
+ add r0, r5, #0
+ bl FUN_020192B8
+ add r0, r5, #0
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x84
+ str r7, [r0]
+_021E570C:
+ add r6, r6, #1
+ add r4, #0x10
+ add r5, #0x10
+ cmp r6, #6
+ ble _021E56F0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E5718
+MOD14_021E5718: ; 0x021E5718
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r7, r5, #0
+ add r7, #0x98
+ add r0, r7, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [r5, #8]
+ bl MOD14_021DC560
+ cmp r0, #0
+ beq _021E573A
+ cmp r0, #2
+ beq _021E5786
+ b _021E57B8
+_021E573A:
+ mov r0, #0
+ ldr r6, _021E57C4 ; =0x021E6910
+ str r0, [sp, #0x10]
+ add r4, r0, #0
+_021E5742:
+ ldrh r1, [r6]
+ ldr r0, [r5, #0x6c]
+ ldr r2, [r5, #0x74]
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r5, #0x74]
+ add r2, r0, #0
+ bl FUN_02002E14
+ ldrb r1, [r7, #7]
+ lsl r1, r1, #3
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E57C8 ; =0x000F0E00
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x74]
+ add r0, r7, #0
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ add r6, r6, #2
+ add r0, r0, #1
+ add r4, #0x10
+ str r0, [sp, #0x10]
+ cmp r0, #8
+ blo _021E5742
+ b _021E57B8
+_021E5786:
+ ldr r0, [r5, #0x6c]
+ ldr r2, [r5, #0x74]
+ mov r1, #0x2b
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r5, #0x74]
+ add r2, r0, #0
+ bl FUN_02002E14
+ ldrb r1, [r7, #7]
+ lsl r1, r1, #3
+ sub r0, r1, r0
+ mov r1, #0
+ lsr r3, r0, #1
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E57C8 ; =0x000F0E00
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #0x74]
+ add r0, r7, #0
+ bl FUN_0201BDE0
+_021E57B8:
+ add r0, r7, #0
+ bl FUN_02019548
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E57C4: .word 0x021E6910
+_021E57C8: .word 0x000F0E00
+
+ thumb_func_start MOD14_021E57CC
+MOD14_021E57CC: ; 0x021E57CC
+ push {r4, lr}
+ add r4, r0, #0
+ add r4, #0x98
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ bl FUN_02019548
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E57E4
+MOD14_021E57E4: ; 0x021E57E4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ add r0, r1, #0
+ add r2, r5, #0
+ add r0, r0, #3
+ add r2, #0x78
+ lsl r0, r0, #4
+ add r4, r2, r0
+ ldr r0, [r5, #8]
+ str r1, [sp, #0x10]
+ bl MOD14_021DC568
+ add r6, r0, #0
+ ldr r0, [r5, #8]
+ bl MOD14_021DC3F0
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #8]
+ bl MOD14_021DC558
+ ldr r1, [sp, #0x10]
+ cmp r1, r0
+ bne _021E5818
+ mov r7, #1
+ b _021E581A
+_021E5818:
+ mov r7, #0
+_021E581A:
+ ldr r0, [r5, #8]
+ ldr r1, [sp, #0x10]
+ bl MOD14_021DC574
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [sp, #0x18]
+ cmp r0, #1
+ bne _021E5836
+ cmp r7, #1
+ beq _021E5840
+_021E5836:
+ cmp r7, #0
+ bne _021E58FA
+ ldr r0, [sp, #0x14]
+ cmp r0, #1
+ bne _021E58FA
+_021E5840:
+ ldrb r0, [r6, #6]
+ cmp r0, #0
+ bne _021E58BA
+ mov r0, #0
+ ldr r1, [r6, #0x2c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #3
+ sub r0, r1, r0
+ mov r1, #0
+ lsr r3, r0, #1
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E5904 ; =0x000F0E00
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r6, #0x2c]
+ add r0, r4, #0
+ bl FUN_0201BDE0
+ mov r7, #0
+ add r6, #8
+_021E5872:
+ mov r0, #1
+ str r0, [sp]
+ ldrh r1, [r6]
+ ldr r0, [r5, #0x74]
+ mov r2, #3
+ mov r3, #0
+ bl FUN_02021B04
+ mov r0, #0
+ ldr r1, [r5, #0x74]
+ add r2, r0, #0
+ bl FUN_02002E14
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #3
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ add r0, r7, #1
+ lsl r0, r0, #4
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E5904 ; =0x000F0E00
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x74]
+ add r0, r4, #0
+ bl FUN_0201BDE0
+ add r7, r7, #1
+ add r6, r6, #2
+ cmp r7, #7
+ blt _021E5872
+ b _021E58FA
+_021E58BA:
+ ldr r0, [r5, #0x6c]
+ ldr r2, [r5, #0x74]
+ mov r1, #0x2c
+ bl FUN_0200A8E0
+ mov r7, #0
+ add r6, r7, #0
+_021E58C8:
+ mov r0, #0
+ ldr r1, [r5, #0x74]
+ add r2, r0, #0
+ bl FUN_02002E14
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #3
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ str r6, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E5904 ; =0x000F0E00
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x74]
+ add r0, r4, #0
+ bl FUN_0201BDE0
+ add r7, r7, #1
+ add r6, #0x10
+ cmp r7, #8
+ blt _021E58C8
+_021E58FA:
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E5904: .word 0x000F0E00
+
+ thumb_func_start MOD14_021E5908
+MOD14_021E5908: ; 0x021E5908
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ add r0, r1, #0
+ add r2, r5, #0
+ add r0, r0, #5
+ add r2, #0x78
+ lsl r0, r0, #4
+ add r4, r2, r0
+ ldr r0, [r5, #8]
+ str r1, [sp, #0x10]
+ bl MOD14_021DC568
+ add r6, r0, #0
+ ldr r0, [r5, #8]
+ bl MOD14_021DC3F0
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, #8]
+ bl MOD14_021DC558
+ ldr r1, [sp, #0x10]
+ cmp r1, r0
+ bne _021E593C
+ mov r7, #1
+ b _021E593E
+_021E593C:
+ mov r7, #0
+_021E593E:
+ ldr r0, [r5, #8]
+ ldr r1, [sp, #0x10]
+ bl MOD14_021DC574
+ str r0, [sp, #0x18]
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [sp, #0x1c]
+ cmp r0, #1
+ bne _021E595A
+ cmp r7, #1
+ beq _021E5964
+_021E595A:
+ cmp r7, #0
+ bne _021E59F8
+ ldr r0, [sp, #0x18]
+ cmp r0, #1
+ bne _021E59F8
+_021E5964:
+ ldrb r0, [r6, #6]
+ cmp r0, #0
+ bne _021E59B8
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r7, #4
+_021E5970:
+ ldrh r1, [r6, #0x20]
+ cmp r1, #0
+ beq _021E59A8
+ ldr r0, [r5, #0x70]
+ ldr r2, [r5, #0x74]
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r5, #0x74]
+ add r2, r0, #0
+ bl FUN_02002E14
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #3
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ str r7, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E5A04 ; =0x000F0E00
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x74]
+ add r0, r4, #0
+ bl FUN_0201BDE0
+_021E59A8:
+ ldr r0, [sp, #0x14]
+ add r6, r6, #2
+ add r0, r0, #1
+ add r7, #0x18
+ str r0, [sp, #0x14]
+ cmp r0, #4
+ blt _021E5970
+ b _021E59F8
+_021E59B8:
+ ldr r0, [r5, #0x6c]
+ ldr r2, [r5, #0x74]
+ mov r1, #0x2c
+ bl FUN_0200A8E0
+ mov r7, #0
+ mov r6, #4
+_021E59C6:
+ mov r0, #0
+ ldr r1, [r5, #0x74]
+ add r2, r0, #0
+ bl FUN_02002E14
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #3
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ str r6, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E5A04 ; =0x000F0E00
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x74]
+ add r0, r4, #0
+ bl FUN_0201BDE0
+ add r7, r7, #1
+ add r6, #0x18
+ cmp r7, #4
+ blt _021E59C6
+_021E59F8:
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E5A04: .word 0x000F0E00
+
+ thumb_func_start MOD14_021E5A08
+MOD14_021E5A08: ; 0x021E5A08
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x6c
+ add r7, r0, #0
+ mov r0, #0xa
+ add r3, r7, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0x6f
+ mov r2, #1
+ add r3, #0x60
+ bl FUN_02006C30
+ str r0, [r7, #0x5c]
+ mov r0, #0xa
+ add r3, r7, #0
+ str r0, [sp]
+ mov r0, #0x12
+ mov r1, #0x70
+ mov r2, #1
+ add r3, #0x68
+ bl FUN_02006C5C
+ str r0, [r7, #0x64]
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #0x12
+ mov r1, #0x71
+ mov r2, #5
+ mov r3, #0
+ bl FUN_02006930
+ add r0, sp, #0x48
+ bl FUN_020B1A24
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ add r0, sp, #0x48
+ str r0, [sp, #0x10]
+ mov r0, #0x12
+ mov r1, #0x6e
+ mov r2, #1
+ bl FUN_02006AE4
+ str r0, [sp, #0x20]
+ ldr r0, [r7, #4]
+ bl MOD14_021DDD48
+ add r2, r0, #0
+ ldr r0, [r7, #0x68]
+ add r1, sp, #0x48
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r3, [r7, #0x60]
+ add r0, sp, #0x24
+ bl MOD14_021DDDB4
+ ldr r0, _021E5B5C ; =0x021E6900
+ mov r4, #0
+ str r0, [sp, #0x1c]
+ str r7, [sp, #0x18]
+ str r7, [sp, #0x14]
+_021E5A92:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x1c]
+ mov r3, #0
+ ldrsh r2, [r2, r3]
+ ldr r3, [sp, #0x1c]
+ mov r5, #2
+ ldrsh r3, [r3, r5]
+ ldr r0, [r7, #0x10]
+ add r1, sp, #0x24
+ bl MOD14_021DDDD4
+ ldr r1, [sp, #0x18]
+ str r0, [r1, #0x28]
+ add r1, r4, #0
+ bl FUN_02020248
+ ldr r0, [sp, #0x18]
+ mov r1, #0
+ ldr r0, [r0, #0x28]
+ bl FUN_02020130
+ ldr r5, [sp, #0x14]
+ mov r6, #0
+_021E5AC6:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r2, #0
+ ldr r0, [r7, #0x10]
+ add r1, sp, #0x24
+ add r3, r2, #0
+ bl MOD14_021DDDD4
+ str r0, [r5, #0x34]
+ add r1, r4, #5
+ bl FUN_02020130
+ ldr r0, [r5, #0x34]
+ add r1, r4, #0
+ bl FUN_02020248
+ ldr r0, [r5, #0x34]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #5
+ blo _021E5AC6
+ ldr r0, [sp, #0x1c]
+ add r4, r4, #1
+ add r0, r0, #4
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r0, r0, #4
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ add r0, #0x14
+ str r0, [sp, #0x14]
+ cmp r4, #2
+ blo _021E5A92
+ ldr r0, [r7, #0x2c]
+ mov r1, #1
+ bl FUN_02020100
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r3, #0x23
+ ldr r0, [r7, #0x10]
+ add r1, sp, #0x24
+ mov r2, #0x80
+ lsl r3, r3, #4
+ bl MOD14_021DDDD4
+ str r0, [r7, #0x30]
+ mov r1, #3
+ bl FUN_02020130
+ ldr r0, [r7, #0x30]
+ mov r1, #2
+ bl FUN_02020248
+ ldr r0, _021E5B60 ; =MOD14_021E5D64
+ add r1, r7, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ mov r1, #0xe
+ lsl r1, r1, #6
+ str r0, [r7, r1]
+ ldr r1, [sp, #0x20]
+ add r0, r7, #0
+ bl MOD14_021E5B64
+ add sp, #0x6c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E5B5C: .word 0x021E6900
+_021E5B60: .word MOD14_021E5D64
+
+ thumb_func_start MOD14_021E5B64
+MOD14_021E5B64: ; 0x021E5B64
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x58
+ str r0, [sp, #8]
+ ldr r0, [r0, #4]
+ str r1, [sp, #0xc]
+ bl MOD14_021DDD48
+ add r5, r0, #0
+ ldr r0, [sp, #8]
+ ldr r0, [r0, #0x14]
+ bl MOD14_021E0C74
+ add r4, r0, #0
+ ldr r0, [sp, #8]
+ ldr r0, [r0, #0x14]
+ bl MOD14_021E0C78
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r0, sp, #0x10
+ add r1, sp, #0x34
+ add r2, r5, #0
+ add r3, r4, #0
+ bl MOD14_021DDDB4
+ mov r7, #0
+ ldr r4, [sp, #8]
+ ldr r5, _021E5BF8 ; =0x021E6908
+ add r6, r7, #0
+_021E5BA0:
+ ldr r0, [sp, #0xc]
+ add r0, r0, r6
+ str r0, [r4, #0x18]
+ add r0, sp, #0x34
+ bl FUN_020B1A24
+ ldr r2, [r4, #0x18]
+ add r0, sp, #0x34
+ mov r1, #2
+ bl FUN_020B1A1C
+ ldr r0, _021E5BFC ; =0x04001000
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _021E5C00 ; =0x00300010
+ mov r3, #2
+ and r0, r1
+ str r0, [sp, #0x54]
+ mov r0, #1
+ sub r0, r0, r7
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ ldr r0, [r0, #0x10]
+ add r1, sp, #0x10
+ bl MOD14_021DDDD4
+ mov r1, #0
+ str r0, [r4, #0x20]
+ bl FUN_020200A0
+ mov r0, #2
+ lsl r0, r0, #8
+ add r7, r7, #1
+ add r6, r6, r0
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r7, #2
+ blt _021E5BA0
+ add sp, #0x58
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E5BF8: .word 0x021E6908
+_021E5BFC: .word 0x04001000
+_021E5C00: .word 0x00300010
+
+ thumb_func_start MOD14_021E5C04
+MOD14_021E5C04: ; 0x021E5C04
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r1, #0xe
+ lsl r1, r1, #6
+ str r0, [sp]
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ beq _021E5C18
+ bl FUN_0200CAB4
+_021E5C18:
+ ldr r6, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ add r7, r6, #0
+_021E5C20:
+ ldr r0, [r6, #0x20]
+ bl FUN_0201FFC8
+ ldr r0, [r6, #0x28]
+ bl FUN_0201FFC8
+ mov r4, #0
+ add r5, r7, #0
+_021E5C30:
+ ldr r0, [r5, #0x34]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _021E5C30
+ ldr r0, [sp, #4]
+ add r6, r6, #4
+ add r0, r0, #1
+ add r7, #0x14
+ str r0, [sp, #4]
+ cmp r0, #2
+ blt _021E5C20
+ ldr r0, [sp]
+ ldr r0, [r0, #0x30]
+ bl FUN_0201FFC8
+ ldr r0, [sp]
+ ldr r0, [r0, #0x5c]
+ bl FUN_02016A18
+ ldr r0, [sp]
+ ldr r0, [r0, #0x64]
+ bl FUN_02016A18
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E5C68
+MOD14_021E5C68: ; 0x021E5C68
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ bl MOD14_021DC558
+ add r4, r0, #0
+ ldr r0, [r5, #8]
+ add r1, r4, #0
+ bl MOD14_021DC568
+ lsl r7, r4, #2
+ add r6, r0, #0
+ add r0, r5, r7
+ ldr r4, [r0, #0x20]
+ ldr r0, [r6]
+ str r0, [sp]
+ ldr r0, [r5, #8]
+ bl MOD14_021DC3F0
+ cmp r0, #0
+ beq _021E5CF0
+ ldrh r0, [r6, #4]
+ ldrb r1, [r6, #7]
+ ldrb r2, [r6, #6]
+ bl FUN_0206B7BC
+ add r6, r0, #0
+ ldr r0, [sp]
+ bl FUN_0206B688
+ add r2, r0, #0
+ add r1, r5, #0
+ mov r3, #0xa
+ ldr r0, [r5, #0x14]
+ add r1, #0xe8
+ lsl r3, r3, #6
+ bl MOD14_021E0BAC
+ add r0, r5, #0
+ add r0, #0xe8
+ add r1, sp, #4
+ bl FUN_020B0088
+ ldr r0, [sp, #4]
+ mov r1, #2
+ ldr r0, [r0, #0x14]
+ lsl r1, r1, #8
+ bl DC_FlushRange
+ ldr r0, [sp, #4]
+ add r1, r5, r7
+ mov r2, #2
+ ldr r0, [r0, #0x14]
+ ldr r1, [r1, #0x18]
+ lsl r2, r2, #8
+ bl GXS_LoadOBJ
+ add r0, r4, #0
+ add r1, r6, #4
+ bl FUN_02020248
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020200A0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_021E5CF0:
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD14_021E5CFC
+MOD14_021E5CFC: ; 0x021E5CFC
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ bl MOD14_021DC558
+ add r6, r0, #0
+ add r1, r5, #0
+ add r1, #0x78
+ lsl r0, r6, #4
+ add r4, r1, r0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [r5, #8]
+ bl MOD14_021DC3F0
+ cmp r0, #0
+ beq _021E5D56
+ ldr r0, [r5, #8]
+ add r1, r6, #0
+ bl MOD14_021DC568
+ add r5, r0, #0
+ mov r0, #0
+ ldr r1, [r5, #0x28]
+ add r2, r0, #0
+ bl FUN_02002E14
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #3
+ sub r0, r1, r0
+ mov r1, #0
+ lsr r3, r0, #1
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021E5D60 ; =0x000F0E00
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #0x28]
+ add r0, r4, #0
+ bl FUN_0201BDE0
+_021E5D56:
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021E5D60: .word 0x000F0E00
+
+ thumb_func_start MOD14_021E5D64
+MOD14_021E5D64: ; 0x021E5D64
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #8]
+ bl MOD14_021DC57C
+ add r4, r0, #0
+ ldr r0, [r5, #0x30]
+ bl FUN_020201DC
+ cmp r0, #3
+ bne _021E5D88
+ cmp r4, #0
+ beq _021E5D94
+ ldr r0, [r5, #0x30]
+ mov r1, #4
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021E5D88:
+ cmp r4, #0
+ bne _021E5D94
+ ldr r0, [r5, #0x30]
+ mov r1, #3
+ bl FUN_02020130
+_021E5D94:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E5D98
+MOD14_021E5D98: ; 0x021E5D98
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r4, #0x74
+ add r0, r4, #0
+ add r5, r1, #0
+ bl MOD14_021E612C
+ add r0, r4, #0
+ mov r1, #0x36
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x37
+ bl MOD14_021E613C
+ add r0, r4, #0
+ add r0, #0x20
+ strb r5, [r0]
+ mov r0, #0
+ add r4, #0x23
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021E5DC4
+MOD14_021E5DC4: ; 0x021E5DC4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r5, #0
+ add r4, #0x74
+ add r0, r4, #0
+ bl MOD14_021E612C
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x23
+ strb r1, [r0]
+ add r0, r5, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ bhi _021E5DFA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E5DF0: ; jump table
+ .short _021E5E70 - _021E5DF0 - 2 ; case 0
+ .short _021E5E9A - _021E5DF0 - 2 ; case 1
+ .short _021E5DFA - _021E5DF0 - 2 ; case 2
+ .short _021E5DFA - _021E5DF0 - 2 ; case 3
+ .short _021E5EC4 - _021E5DF0 - 2 ; case 4
+_021E5DFA:
+ add r0, r5, #0
+ bl MOD14_021DC3F4
+ cmp r0, #2
+ bne _021E5E1C
+ add r0, r5, #0
+ bl MOD14_021DC3F0
+ cmp r0, #0
+ beq _021E5E12
+ mov r1, #0x24
+ b _021E5E14
+_021E5E12:
+ mov r1, #0x23
+_021E5E14:
+ add r0, r4, #0
+ bl MOD14_021E613C
+ b _021E5E24
+_021E5E1C:
+ add r0, r4, #0
+ mov r1, #0x22
+ bl MOD14_021E613C
+_021E5E24:
+ add r0, r4, #0
+ mov r1, #0x25
+ bl MOD14_021E613C
+ add r0, r5, #0
+ bl MOD14_021DC42C
+ ldrb r0, [r0, #0xf]
+ cmp r0, #0
+ bne _021E5E40
+ add r0, r4, #0
+ mov r1, #0x28
+ bl MOD14_021E613C
+_021E5E40:
+ add r0, r5, #0
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021E5E4E
+ mov r1, #0x26
+ b _021E5E50
+_021E5E4E:
+ mov r1, #0x27
+_021E5E50:
+ add r0, r4, #0
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x29
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x2a
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x2b
+ bl MOD14_021E613C
+ pop {r3, r4, r5, pc}
+_021E5E70:
+ add r0, r4, #0
+ mov r1, #0x27
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x25
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x29
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x2a
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x2b
+ bl MOD14_021E613C
+ pop {r3, r4, r5, pc}
+_021E5E9A:
+ add r0, r4, #0
+ mov r1, #0x26
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x25
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x29
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x2a
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x2b
+ bl MOD14_021E613C
+ pop {r3, r4, r5, pc}
+_021E5EC4:
+ add r0, r5, #0
+ bl MOD14_021DC558
+ cmp r0, #0
+ bne _021E5ED2
+ mov r1, #0x34
+ b _021E5ED4
+_021E5ED2:
+ mov r1, #0x35
+_021E5ED4:
+ add r0, r4, #0
+ bl MOD14_021E613C
+ add r0, r5, #0
+ bl MOD14_021DC3CC
+ cmp r0, #0
+ bne _021E5EE8
+ mov r1, #0x26
+ b _021E5EEA
+_021E5EE8:
+ mov r1, #0x27
+_021E5EEA:
+ add r0, r4, #0
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x29
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x2b
+ bl MOD14_021E613C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E5F04
+MOD14_021E5F04: ; 0x021E5F04
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ add r5, r4, #0
+ add r5, #0x74
+ bl MOD14_021DC538
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD14_021DC430
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD14_021E612C
+ add r0, r5, #0
+ mov r1, #1
+ add r0, #0x23
+ strb r1, [r0]
+ cmp r6, #0
+ beq _021E5F54
+ cmp r4, #0
+ beq _021E5F3A
+ add r0, r5, #0
+ mov r1, #0x31
+ bl MOD14_021E613C
+ b _021E5F42
+_021E5F3A:
+ add r0, r5, #0
+ mov r1, #0x2e
+ bl MOD14_021E613C
+_021E5F42:
+ add r0, r5, #0
+ mov r1, #0x32
+ bl MOD14_021E613C
+ add r0, r5, #0
+ mov r1, #0x30
+ bl MOD14_021E613C
+ b _021E5F7A
+_021E5F54:
+ cmp r4, #0
+ beq _021E5F72
+ add r0, r5, #0
+ mov r1, #0x2f
+ bl MOD14_021E613C
+ add r0, r5, #0
+ mov r1, #0x32
+ bl MOD14_021E613C
+ add r0, r5, #0
+ mov r1, #0x30
+ bl MOD14_021E613C
+ b _021E5F7A
+_021E5F72:
+ add r0, r5, #0
+ mov r1, #0x2e
+ bl MOD14_021E613C
+_021E5F7A:
+ add r0, r5, #0
+ mov r1, #0x33
+ bl MOD14_021E613C
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021E5F84
+MOD14_021E5F84: ; 0x021E5F84
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r5, #0
+ add r4, #0x74
+ bl MOD14_021DC44C
+ add r0, r4, #0
+ bl MOD14_021E612C
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD14_021E613C
+ add r0, r5, #0
+ bl MOD14_021DC3C4
+ cmp r0, #4
+ beq _021E5FB8
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD14_021E613C
+_021E5FB8:
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD14_021E613C
+ mov r0, #2
+ add r4, #0x23
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD14_021E5FC8
+MOD14_021E5FC8: ; 0x021E5FC8
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ add r4, #0x74
+ add r5, r1, #0
+ bl MOD14_021DC44C
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD14_021E612C
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #5
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #7
+ bl MOD14_021E613C
+ add r0, r6, #0
+ bl FUN_0206B668
+ add r6, r0, #0
+ beq _021E600E
+ add r0, r4, #0
+ mov r1, #8
+ bl MOD14_021E613C
+_021E600E:
+ cmp r6, #4
+ bls _021E601A
+ add r0, r4, #0
+ mov r1, #9
+ bl MOD14_021E613C
+_021E601A:
+ add r0, r4, #0
+ mov r1, #3
+ add r0, #0x23
+ strb r1, [r0]
+ cmp r5, #4
+ blt _021E6032
+ cmp r5, #9
+ bgt _021E6032
+ sub r0, r5, #4
+ add r4, #0x20
+ strb r0, [r4]
+ pop {r4, r5, r6, pc}
+_021E6032:
+ bl ErrorHandling
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD14_021E6038
+MOD14_021E6038: ; 0x021E6038
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r6, #0x74
+ add r5, r1, #0
+ bl MOD14_021DC44C
+ str r0, [sp]
+ add r0, r6, #0
+ bl MOD14_021E612C
+ cmp r5, #4
+ blt _021E6070
+ cmp r5, #7
+ bgt _021E6070
+ sub r0, r5, #4
+ ldr r1, _021E60B0 ; =0x021E69A8
+ lsl r0, r0, #3
+ mov r5, #0
+ add r4, r1, r0
+_021E605E:
+ ldrh r1, [r4]
+ add r0, r6, #0
+ bl MOD14_021E613C
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r5, #4
+ blt _021E605E
+ b _021E60A6
+_021E6070:
+ mov r4, #0
+ add r7, r4, #0
+ cmp r5, #9
+ bne _021E607A
+ mov r4, #4
+_021E607A:
+ mov r5, #0
+_021E607C:
+ ldr r0, [sp]
+ add r1, r5, #0
+ bl FUN_0206B644
+ cmp r0, #0
+ beq _021E60A0
+ cmp r4, #0
+ beq _021E6090
+ sub r4, r4, #1
+ b _021E60A0
+_021E6090:
+ add r1, r5, #0
+ add r0, r6, #0
+ add r1, #0x1a
+ bl MOD14_021E613C
+ add r7, r7, #1
+ cmp r7, #4
+ bge _021E60A6
+_021E60A0:
+ add r5, r5, #1
+ cmp r5, #8
+ blt _021E607C
+_021E60A6:
+ mov r0, #3
+ add r6, #0x23
+ strb r0, [r6]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E60B0: .word 0x021E69A8
+
+ thumb_func_start MOD14_021E60B4
+MOD14_021E60B4: ; 0x021E60B4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r5, #0
+ add r4, #0x74
+ add r0, r4, #0
+ bl MOD14_021E612C
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x23
+ strb r1, [r0]
+ add r5, #0x57
+ add r0, r4, #0
+ ldrb r1, [r5]
+ add r0, #0x22
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x38
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x39
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x3a
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x3b
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x3c
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x3d
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x2c
+ bl MOD14_021E613C
+ add r0, r4, #0
+ mov r1, #0x2d
+ bl MOD14_021E613C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD14_021E6118
+MOD14_021E6118: ; 0x021E6118
+ add r2, r0, #0
+ add r2, #0x96
+ ldrb r3, [r2]
+ mov r2, #1
+ lsl r2, r1
+ add r1, r3, #0
+ eor r1, r2
+ add r0, #0x96
+ strb r1, [r0]
+ bx lr
+
+ thumb_func_start MOD14_021E612C
+MOD14_021E612C: ; 0x021E612C
+ add r1, r0, #0
+ mov r2, #0
+ add r1, #0x21
+ strb r2, [r1]
+ add r0, #0x20
+ strb r2, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021E613C
+MOD14_021E613C: ; 0x021E613C
+ push {r3, r4}
+ add r2, r0, #0
+ add r2, #0x21
+ ldrb r4, [r2]
+ cmp r4, #8
+ bhs _021E615A
+ add r2, r0, #0
+ add r2, #0x21
+ ldrb r2, [r2]
+ add r3, r2, #1
+ add r2, r0, #0
+ add r2, #0x21
+ strb r3, [r2]
+ lsl r2, r4, #2
+ str r1, [r0, r2]
+_021E615A:
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021E6160
+MOD14_021E6160: ; 0x021E6160
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, _021E6208 ; =0x021C48B8
+ add r4, #0x74
+ ldr r1, [r0, #0x48]
+ mov r0, #0x40
+ add r2, r1, #0
+ tst r2, r0
+ beq _021E61A0
+ add r2, r4, #0
+ add r2, #0x20
+ ldrb r2, [r2]
+ cmp r2, #0
+ beq _021E618C
+ add r1, r4, #0
+ add r1, #0x20
+ ldrb r1, [r1]
+ add r4, #0x20
+ sub r0, #0x42
+ sub r1, r1, #1
+ strb r1, [r4]
+ pop {r3, r4, r5, pc}
+_021E618C:
+ add r2, r4, #0
+ add r2, #0x21
+ ldrb r2, [r2]
+ cmp r2, #3
+ blo _021E61A0
+ sub r1, r2, #1
+ add r4, #0x20
+ strb r1, [r4]
+ sub r0, #0x42
+ pop {r3, r4, r5, pc}
+_021E61A0:
+ mov r0, #0x80
+ add r2, r1, #0
+ tst r2, r0
+ beq _021E61D8
+ add r2, r4, #0
+ add r2, #0x21
+ ldrb r5, [r2]
+ add r2, r4, #0
+ add r2, #0x20
+ ldrb r3, [r2]
+ sub r2, r5, #1
+ cmp r3, r2
+ bge _021E61CA
+ add r1, r4, #0
+ add r1, #0x20
+ ldrb r1, [r1]
+ add r4, #0x20
+ sub r0, #0x82
+ add r1, r1, #1
+ strb r1, [r4]
+ pop {r3, r4, r5, pc}
+_021E61CA:
+ cmp r5, #3
+ blo _021E61D8
+ mov r0, #0
+ add r4, #0x20
+ strb r0, [r4]
+ sub r0, r0, #2
+ pop {r3, r4, r5, pc}
+_021E61D8:
+ mov r0, #2
+ tst r0, r1
+ beq _021E61EA
+ ldr r0, _021E620C ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0
+ mvn r0, r0
+ pop {r3, r4, r5, pc}
+_021E61EA:
+ mov r0, #1
+ tst r1, r0
+ beq _021E6202
+ ldr r0, _021E620C ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021E6202:
+ sub r0, r0, #4
+ pop {r3, r4, r5, pc}
+ nop
+_021E6208: .word 0x021C48B8
+_021E620C: .word 0x000005DD
+
+ thumb_func_start MOD14_021E6210
+MOD14_021E6210: ; 0x021E6210
+ add r0, #0x74
+ add r1, r0, #0
+ add r1, #0x20
+ ldrb r1, [r1]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD14_021E6220
+MOD14_021E6220: ; 0x021E6220
+ ldr r0, [r0, #0x74]
+ bx lr
+
+ .section .rodata
+ ; 0x021E6224
+ .incbin "baserom.nds", 0x236b44, 0x7a4
+
+ .section .data
+ ; 0x021E69E0
+ .incbin "baserom.nds", 0x237300, 0x1C
+
+ .section .bss
+ ; 0x021E69FC
+ .space 0x1A0
diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s
new file mode 100644
index 00000000..8659bfeb
--- /dev/null
+++ b/arm9/modules/15/asm/module_15.s
@@ -0,0 +1,8753 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD15_021D74E0
+MOD15_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ cmp r1, #0
+ beq _021D74F2
+ cmp r1, #1
+ beq _021D752A
+ b _021D7552
+_021D74F2:
+ mov r1, #0
+ mov r0, #0x3e
+ add r2, r1, #0
+ bl FUN_0200433C
+ mov r2, #2
+ mov r0, #3
+ mov r1, #0x22
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ mov r2, #0xa
+ mov r0, #3
+ mov r1, #0x23
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ add r0, r5, #0
+ bl MOD15_021D7628
+ ldr r0, [r0, #0x14]
+ mov r1, #0
+ bl MOD15_021D8900
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D7552
+_021D752A:
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7552
+ ldr r0, [r4, #4]
+ cmp r0, #2
+ bne _021D7548
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D9538
+ b _021D754A
+_021D7548:
+ mov r0, #0
+_021D754A:
+ add r4, #0x64
+ strb r0, [r4]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D7552:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D7558
+MOD15_021D7558: ; 0x021D7558
+ push {r4, lr}
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, _021D7594 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ strh r1, [r4, #0x30]
+ ldr r1, [r0, #0x44]
+ strh r1, [r4, #0x32]
+ ldr r0, [r0, #0x4c]
+ strh r0, [r4, #0x34]
+ ldr r0, [r4, #0x40]
+ bl FUN_02022144
+ ldr r2, [r4, #0x2c]
+ cmp r2, #0
+ beq _021D7586
+ add r0, r4, #0
+ add r4, #0x28
+ add r1, r4, #0
+ blx r2
+ mov r0, #0
+ pop {r4, pc}
+_021D7586:
+ add r1, r4, #0
+ ldr r2, [r4, #0x20]
+ add r0, r4, #0
+ add r1, #0x1c
+ blx r2
+ pop {r4, pc}
+ nop
+_021D7594: .word 0x021C48B8
+
+ thumb_func_start MOD15_021D7598
+MOD15_021D7598: ; 0x021D7598
+ push {r4, lr}
+ add r4, r2, #0
+ cmp r1, #3
+ bhi _021D7600
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D75AC: ; jump table
+ .short _021D75B4 - _021D75AC - 2 ; case 0
+ .short _021D75D4 - _021D75AC - 2 ; case 1
+ .short _021D75F6 - _021D75AC - 2 ; case 2
+ .short _021D75D4 - _021D75AC - 2 ; case 3
+_021D75B4:
+ str r0, [r4, #0x38]
+ cmp r0, #2
+ beq _021D75C0
+ cmp r0, #3
+ beq _021D75CA
+ pop {r4, pc}
+_021D75C0:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x19
+ bl MOD15_021D8900
+ pop {r4, pc}
+_021D75CA:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x1a
+ bl MOD15_021D8900
+ pop {r4, pc}
+_021D75D4:
+ cmp r0, #2
+ beq _021D75DE
+ cmp r0, #3
+ beq _021D75E8
+ b _021D75F0
+_021D75DE:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x1b
+ bl MOD15_021D8900
+ b _021D75F0
+_021D75E8:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x1c
+ bl MOD15_021D8900
+_021D75F0:
+ mov r0, #4
+ str r0, [r4, #0x38]
+ pop {r4, pc}
+_021D75F6:
+ sub r1, r0, #2
+ cmp r1, #1
+ bhi _021D7604
+ str r0, [r4, #0x38]
+ pop {r4, pc}
+_021D7600:
+ mov r0, #4
+ str r0, [r4, #0x38]
+_021D7604:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D7608
+MOD15_021D7608: ; 0x021D7608
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02006278
+ add r1, r4, #0
+ bl MOD15_021D7774
+ mov r0, #0x22
+ bl FUN_020168D0
+ mov r0, #0x23
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D7628
+MOD15_021D7628: ; 0x021D7628
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #0x68
+ mov r2, #0x22
+ bl FUN_02006268
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0200628C
+ str r0, [r4]
+ bl FUN_0208540C
+ str r0, [r4, #4]
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r1, #0x10
+ add r2, #8
+ bl FUN_02085428
+ ldr r0, [r4, #4]
+ cmp r0, #2
+ bne _021D7664
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0x60
+ add r1, #8
+ bl MOD15_021D76C4
+_021D7664:
+ ldr r1, [r4]
+ mov r0, #0x22
+ bl FUN_02088F0C
+ str r0, [r4, #0x18]
+ ldr r1, [r4, #0x18]
+ add r0, r4, #0
+ bl MOD15_021D87F8
+ str r0, [r4, #0x14]
+ mov r0, #0x22
+ str r0, [sp]
+ ldr r0, _021D76B4 ; =0x021DB880
+ ldr r2, _021D76B8 ; =MOD15_021D7598
+ mov r1, #5
+ add r3, r4, #0
+ bl FUN_020220C4
+ str r0, [r4, #0x40]
+ mov r1, #0
+ str r1, [r4, #0x44]
+ add r0, r4, #0
+ str r1, [r4, #0x48]
+ add r0, #0x65
+ strb r1, [r0]
+ str r1, [r4, #0x2c]
+ ldr r0, _021D76BC ; =MOD15_021D779C
+ str r1, [r4, #0x28]
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ str r1, [r4, #0x1c]
+ add r0, #0x4e
+ strh r1, [r0]
+ ldr r1, _021D76C0 ; =MOD15_021D83BC
+ add r0, r4, #0
+ bl MOD15_021D83AC
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D76B4: .word 0x021DB880
+_021D76B8: .word MOD15_021D7598
+_021D76BC: .word MOD15_021D779C
+_021D76C0: .word MOD15_021D83BC
+
+ thumb_func_start MOD15_021D76C4
+MOD15_021D76C4: ; 0x021D76C4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_02013920
+ strh r0, [r5]
+ mov r0, #0
+ ldrsh r0, [r5, r0]
+ bl FUN_02013974
+ strb r0, [r5, #3]
+ add r0, r4, #0
+ bl FUN_02013924
+ strb r0, [r5, #2]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D76E8
+MOD15_021D76E8: ; 0x021D76E8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #2
+ add r4, r1, #0
+ ldrsb r1, [r5, r0]
+ add r1, r1, #1
+ strb r1, [r5, #2]
+ ldrsb r1, [r5, r0]
+ mov r0, #3
+ ldrsb r0, [r5, r0]
+ cmp r1, r0
+ blt _021D771C
+ mov r1, #0
+ strb r1, [r5, #2]
+ ldrsh r0, [r5, r1]
+ add r0, r0, #1
+ strh r0, [r5]
+ ldrsh r0, [r5, r1]
+ cmp r0, #5
+ blt _021D7712
+ strh r1, [r5]
+_021D7712:
+ mov r0, #0
+ ldrsh r0, [r5, r0]
+ bl FUN_02013974
+ strb r0, [r5, #3]
+_021D771C:
+ mov r1, #0
+ mov r2, #2
+ ldrsh r1, [r5, r1]
+ ldrsb r2, [r5, r2]
+ add r0, r4, #0
+ bl FUN_02013980
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D772C
+MOD15_021D772C: ; 0x021D772C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #2
+ add r4, r1, #0
+ ldrsb r1, [r5, r0]
+ sub r1, r1, #1
+ strb r1, [r5, #2]
+ ldrsb r0, [r5, r0]
+ cmp r0, #0
+ bge _021D7764
+ mov r0, #0
+ ldrsh r1, [r5, r0]
+ sub r1, r1, #1
+ strh r1, [r5]
+ ldrsh r0, [r5, r0]
+ cmp r0, #0
+ bge _021D7752
+ mov r0, #4
+ strh r0, [r5]
+_021D7752:
+ mov r0, #0
+ ldrsh r0, [r5, r0]
+ bl FUN_02013974
+ strb r0, [r5, #3]
+ mov r0, #3
+ ldrsb r0, [r5, r0]
+ sub r0, r0, #1
+ strb r0, [r5, #2]
+_021D7764:
+ mov r1, #0
+ mov r2, #2
+ ldrsh r1, [r5, r1]
+ ldrsb r2, [r5, r2]
+ add r0, r4, #0
+ bl FUN_02013980
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D7774
+MOD15_021D7774: ; 0x021D7774
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x40]
+ add r4, r1, #0
+ bl FUN_0202212C
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8888
+ ldr r0, [r5, #0x18]
+ bl FUN_02088F4C
+ add r0, r4, #0
+ bl FUN_0200627C
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D7794
+MOD15_021D7794: ; 0x021D7794
+ str r1, [r0, #0x20]
+ mov r1, #0
+ str r1, [r0, #0x1c]
+ bx lr
+
+ thumb_func_start MOD15_021D779C
+MOD15_021D779C: ; 0x021D779C
+ push {r3, lr}
+ ldr r2, [r0, #4]
+ lsl r3, r2, #2
+ ldr r2, _021D77AC ; =0x021DB874
+ ldr r2, [r2, r3]
+ blx r2
+ pop {r3, pc}
+ nop
+_021D77AC: .word 0x021DB874
+
+ thumb_func_start MOD15_021D77B0
+MOD15_021D77B0: ; 0x021D77B0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D77C6
+ cmp r0, #1
+ beq _021D7850
+ cmp r0, #2
+ beq _021D7864
+ b _021D7876
+_021D77C6:
+ ldr r1, [r5, #0x38]
+ cmp r1, #0
+ bne _021D77D6
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021D77EC
+_021D77D6:
+ cmp r1, #1
+ bne _021D77E4
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D77EC
+_021D77E4:
+ ldrh r0, [r5, #0x30]
+ mov r1, #4
+ tst r1, r0
+ beq _021D77F6
+_021D77EC:
+ ldr r1, _021D787C ; =MOD15_021D8698
+ add r0, r5, #0
+ bl MOD15_021D83AC
+ b _021D7876
+_021D77F6:
+ mov r1, #0x88
+ tst r1, r0
+ beq _021D7818
+ ldr r0, _021D7880 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #4
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r4]
+ b _021D7876
+_021D7818:
+ mov r1, #2
+ tst r1, r0
+ beq _021D782E
+ ldr r0, _021D7880 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r1, _021D7884 ; =MOD15_021D851C
+ add r0, r5, #0
+ bl MOD15_021D83AC
+ b _021D7876
+_021D782E:
+ mov r1, #1
+ tst r0, r1
+ beq _021D7876
+ ldr r0, _021D7880 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x50
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #6
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r4]
+ b _021D7876
+_021D7850:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7876
+ ldr r1, _021D7888 ; =MOD15_021D7BC8
+ add r0, r5, #0
+ bl MOD15_021D7794
+ b _021D7876
+_021D7864:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7876
+ ldr r1, _021D788C ; =MOD15_021D7D00
+ add r0, r5, #0
+ bl MOD15_021D7794
+_021D7876:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D787C: .word MOD15_021D8698
+_021D7880: .word 0x000005DC
+_021D7884: .word MOD15_021D851C
+_021D7888: .word MOD15_021D7BC8
+_021D788C: .word MOD15_021D7D00
+
+ thumb_func_start MOD15_021D7890
+MOD15_021D7890: ; 0x021D7890
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D78A6
+ cmp r0, #1
+ beq _021D7980
+ cmp r0, #2
+ beq _021D7994
+ b _021D79A6
+_021D78A6:
+ ldr r1, [r5, #0x38]
+ cmp r1, #0
+ bne _021D78B6
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021D78CC
+_021D78B6:
+ cmp r1, #1
+ bne _021D78C4
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D78CC
+_021D78C4:
+ ldrh r0, [r5, #0x30]
+ mov r1, #4
+ tst r1, r0
+ beq _021D78D6
+_021D78CC:
+ ldr r1, _021D79AC ; =MOD15_021D8698
+ add r0, r5, #0
+ bl MOD15_021D83AC
+ b _021D79A6
+_021D78D6:
+ mov r1, #0x88
+ tst r1, r0
+ beq _021D78F8
+ ldr r0, _021D79B0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #4
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r4]
+ b _021D79A6
+_021D78F8:
+ mov r1, #0x20
+ tst r1, r0
+ beq _021D7920
+ add r0, r5, #0
+ add r0, #0x4e
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D79A6
+ ldr r0, _021D79B0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x4e
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #0xc
+ bl MOD15_021D8900
+ b _021D79A6
+_021D7920:
+ mov r1, #0x10
+ tst r1, r0
+ beq _021D7948
+ add r0, r5, #0
+ add r0, #0x4e
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _021D79A6
+ ldr r0, _021D79B0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #1
+ add r0, #0x4e
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #0xc
+ bl MOD15_021D8900
+ b _021D79A6
+_021D7948:
+ mov r1, #2
+ tst r1, r0
+ beq _021D795E
+ ldr r0, _021D79B0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r1, _021D79B4 ; =MOD15_021D851C
+ add r0, r5, #0
+ bl MOD15_021D83AC
+ b _021D79A6
+_021D795E:
+ mov r1, #1
+ tst r0, r1
+ beq _021D79A6
+ ldr r0, _021D79B0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x50
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #6
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r4]
+ b _021D79A6
+_021D7980:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D79A6
+ ldr r1, _021D79B8 ; =MOD15_021D7BC8
+ add r0, r5, #0
+ bl MOD15_021D7794
+ b _021D79A6
+_021D7994:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D79A6
+ ldr r1, _021D79BC ; =MOD15_021D7D00
+ add r0, r5, #0
+ bl MOD15_021D7794
+_021D79A6:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D79AC: .word MOD15_021D8698
+_021D79B0: .word 0x000005DC
+_021D79B4: .word MOD15_021D851C
+_021D79B8: .word MOD15_021D7BC8
+_021D79BC: .word MOD15_021D7D00
+
+ thumb_func_start MOD15_021D79C0
+MOD15_021D79C0: ; 0x021D79C0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #4
+ bhi _021D7A3C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D79D8: ; jump table
+ .short _021D79E2 - _021D79D8 - 2 ; case 0
+ .short _021D79F2 - _021D79D8 - 2 ; case 1
+ .short _021D7B76 - _021D79D8 - 2 ; case 2
+ .short _021D7B88 - _021D79D8 - 2 ; case 3
+ .short _021D7B9C - _021D79D8 - 2 ; case 4
+_021D79E2:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D9538
+ add r1, r4, #0
+ add r1, #0x64
+ strb r0, [r1]
+ mov r0, #1
+ str r0, [r5]
+_021D79F2:
+ ldr r1, [r4, #0x38]
+ cmp r1, #0
+ bne _021D7A02
+ add r0, r4, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021D7A18
+_021D7A02:
+ cmp r1, #1
+ bne _021D7A10
+ add r0, r4, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D7A18
+_021D7A10:
+ ldrh r0, [r4, #0x30]
+ mov r1, #4
+ tst r1, r0
+ beq _021D7A22
+_021D7A18:
+ ldr r1, _021D7BB4 ; =MOD15_021D8698
+ add r0, r4, #0
+ bl MOD15_021D83AC
+ b _021D7BAE
+_021D7A22:
+ mov r1, #0x40
+ tst r1, r0
+ beq _021D7A5C
+ add r0, r4, #0
+ add r0, #0x64
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D7A3C
+ add r0, r4, #0
+ add r0, #0x4e
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _021D7A3E
+_021D7A3C:
+ b _021D7BAE
+_021D7A3E:
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ add r0, #0x4e
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x4e
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #0xc
+ bl MOD15_021D8900
+ b _021D7BAE
+_021D7A5C:
+ mov r1, #0x80
+ tst r0, r1
+ beq _021D7AAC
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ add r0, #0x64
+ ldrb r2, [r0]
+ cmp r2, #0
+ beq _021D7A96
+ add r0, r4, #0
+ add r0, #0x4e
+ ldrh r1, [r0]
+ sub r0, r2, #1
+ cmp r1, r0
+ bge _021D7A96
+ add r0, r4, #0
+ add r0, #0x4e
+ ldrh r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x4e
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #0xc
+ bl MOD15_021D8900
+ b _021D7AAC
+_021D7A96:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ bl MOD15_021D8900
+ mov r0, #3
+ str r0, [r5]
+ b _021D7BAE
+_021D7AAC:
+ ldrh r1, [r4, #0x30]
+ mov r0, #8
+ tst r0, r1
+ bne _021D7AC6
+ mov r0, #1
+ add r2, r1, #0
+ and r2, r0
+ beq _021D7AE2
+ add r0, r4, #0
+ add r0, #0x64
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021D7AE2
+_021D7AC6:
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ bl MOD15_021D8900
+ mov r0, #3
+ str r0, [r5]
+ b _021D7BAE
+_021D7AE2:
+ ldrh r0, [r4, #0x34]
+ mov r3, #0x20
+ tst r3, r0
+ beq _021D7B12
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x4e
+ strh r1, [r0]
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0x60
+ add r1, #8
+ bl MOD15_021D772C
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r5]
+ b _021D7BAE
+_021D7B12:
+ mov r3, #0x10
+ tst r0, r3
+ beq _021D7B40
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x4e
+ strh r1, [r0]
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0x60
+ add r1, #8
+ bl MOD15_021D76E8
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r5]
+ b _021D7BAE
+_021D7B40:
+ mov r0, #2
+ tst r0, r1
+ beq _021D7B56
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r1, _021D7BBC ; =MOD15_021D851C
+ add r0, r4, #0
+ bl MOD15_021D83AC
+ b _021D7BAE
+_021D7B56:
+ cmp r2, #0
+ beq _021D7BAE
+ ldr r0, _021D7BB8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x50
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #6
+ bl MOD15_021D8900
+ mov r0, #4
+ str r0, [r5]
+ b _021D7BAE
+_021D7B76:
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD15_021D8970
+ cmp r0, #0
+ beq _021D7BAE
+ mov r0, #0
+ str r0, [r5]
+ b _021D7BAE
+_021D7B88:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7BAE
+ ldr r1, _021D7BC0 ; =MOD15_021D7BC8
+ add r0, r4, #0
+ bl MOD15_021D7794
+ b _021D7BAE
+_021D7B9C:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7BAE
+ ldr r1, _021D7BC4 ; =MOD15_021D7D00
+ add r0, r4, #0
+ bl MOD15_021D7794
+_021D7BAE:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D7BB4: .word MOD15_021D8698
+_021D7BB8: .word 0x000005DC
+_021D7BBC: .word MOD15_021D851C
+_021D7BC0: .word MOD15_021D7BC8
+_021D7BC4: .word MOD15_021D7D00
+
+ thumb_func_start MOD15_021D7BC8
+MOD15_021D7BC8: ; 0x021D7BC8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #5
+ bls _021D7BD6
+ b _021D7CE8
+_021D7BD6:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7BE2: ; jump table
+ .short _021D7BEE - _021D7BE2 - 2 ; case 0
+ .short _021D7CB8 - _021D7BE2 - 2 ; case 1
+ .short _021D7CC4 - _021D7BE2 - 2 ; case 2
+ .short _021D7CD0 - _021D7BE2 - 2 ; case 3
+ .short _021D7CD0 - _021D7BE2 - 2 ; case 4
+ .short _021D7CD6 - _021D7BE2 - 2 ; case 5
+_021D7BEE:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7CE8
+ ldr r1, [r4, #0x38]
+ cmp r1, #0
+ bne _021D7C08
+ add r0, r4, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021D7C1E
+_021D7C08:
+ cmp r1, #1
+ bne _021D7C16
+ add r0, r4, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D7C1E
+_021D7C16:
+ ldrh r0, [r4, #0x30]
+ mov r1, #4
+ tst r1, r0
+ beq _021D7C28
+_021D7C1E:
+ ldr r1, _021D7CEC ; =MOD15_021D8698
+ add r0, r4, #0
+ bl MOD15_021D83AC
+ b _021D7CE8
+_021D7C28:
+ mov r1, #0x30
+ tst r1, r0
+ beq _021D7C4E
+ ldr r0, _021D7CF0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ add r0, #0x4c
+ ldrh r1, [r0]
+ mov r0, #1
+ eor r1, r0
+ add r0, r4, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #0xd
+ bl MOD15_021D8900
+ b _021D7CE8
+_021D7C4E:
+ mov r1, #8
+ tst r1, r0
+ beq _021D7C6C
+ ldr r0, _021D7CF0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #0xd
+ bl MOD15_021D8900
+ b _021D7CE8
+_021D7C6C:
+ mov r1, #0x40
+ tst r1, r0
+ beq _021D7C86
+ ldr r0, _021D7CF0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #5
+ bl MOD15_021D8900
+ mov r0, #5
+ str r0, [r5]
+ b _021D7CE8
+_021D7C86:
+ mov r1, #1
+ tst r1, r0
+ beq _021D7CA6
+ ldr r0, _021D7CF0 ; =0x000005DC
+ bl FUN_020054C8
+ add r4, #0x4c
+ ldrh r0, [r4]
+ cmp r0, #0
+ bne _021D7CA0
+ mov r0, #1
+ str r0, [r5]
+ b _021D7CE8
+_021D7CA0:
+ mov r0, #2
+ str r0, [r5]
+ b _021D7CE8
+_021D7CA6:
+ mov r1, #2
+ tst r0, r1
+ beq _021D7CE8
+ ldr r0, _021D7CF0 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #2
+ str r0, [r5]
+ b _021D7CE8
+_021D7CB8:
+ mov r1, #3
+ str r1, [r5]
+ ldr r1, _021D7CF4 ; =MOD15_021D83F0
+ bl MOD15_021D83AC
+ b _021D7CE8
+_021D7CC4:
+ mov r1, #4
+ str r1, [r5]
+ ldr r1, _021D7CF8 ; =MOD15_021D851C
+ bl MOD15_021D83AC
+ b _021D7CE8
+_021D7CD0:
+ mov r0, #0
+ str r0, [r5]
+ b _021D7CE8
+_021D7CD6:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7CE8
+ ldr r1, _021D7CFC ; =MOD15_021D779C
+ add r0, r4, #0
+ bl MOD15_021D7794
+_021D7CE8:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7CEC: .word MOD15_021D8698
+_021D7CF0: .word 0x000005DC
+_021D7CF4: .word MOD15_021D83F0
+_021D7CF8: .word MOD15_021D851C
+_021D7CFC: .word MOD15_021D779C
+
+ thumb_func_start MOD15_021D7D00
+MOD15_021D7D00: ; 0x021D7D00
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D7D18
+ cmp r0, #1
+ beq _021D7E0C
+ cmp r0, #2
+ bne _021D7D16
+ b _021D7E20
+_021D7D16:
+ b _021D7E30
+_021D7D18:
+ ldr r0, [r5, #0x14]
+ mov r1, #0xf
+ bl MOD15_021D8970
+ cmp r0, #0
+ bne _021D7D26
+ b _021D7E30
+_021D7D26:
+ ldr r1, [r5, #0x38]
+ cmp r1, #0
+ bne _021D7D36
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _021D7D4C
+_021D7D36:
+ cmp r1, #1
+ bne _021D7D44
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D7D4C
+_021D7D44:
+ ldrh r0, [r5, #0x30]
+ mov r1, #4
+ tst r1, r0
+ beq _021D7D78
+_021D7D4C:
+ ldr r0, _021D7E34 ; =0x000005E4
+ bl FUN_020054C8
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r1, [r0]
+ mov r0, #1
+ eor r1, r0
+ add r0, r5, #0
+ add r0, #0x65
+ strb r1, [r0]
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x50
+ strh r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #0x18
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r4]
+ b _021D7E30
+_021D7D78:
+ mov r1, #2
+ tst r1, r0
+ beq _021D7D96
+ ldr r0, _021D7E38 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r5, #0x14]
+ mov r1, #7
+ bl MOD15_021D8900
+ ldr r0, _021D7E3C ; =MOD15_021D779C
+ str r0, [r5, #0x24]
+ mov r0, #1
+ str r0, [r4]
+ b _021D7E30
+_021D7D96:
+ mov r1, #1
+ tst r0, r1
+ beq _021D7DF2
+ add r0, r5, #0
+ add r0, #0x50
+ ldrh r0, [r0]
+ cmp r0, #0xfe
+ bne _021D7DBE
+ ldr r0, _021D7E38 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r5, #0x14]
+ mov r1, #7
+ bl MOD15_021D8900
+ ldr r0, _021D7E3C ; =MOD15_021D779C
+ str r0, [r5, #0x24]
+ mov r0, #1
+ str r0, [r4]
+ b _021D7E30
+_021D7DBE:
+ add r0, r5, #0
+ bl MOD15_021D7E48
+ cmp r0, #0
+ beq _021D7DEA
+ ldr r0, _021D7E38 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ add r0, #0x54
+ add r1, r5, #0
+ bl MOD15_021D7FE4
+ ldr r0, _021D7E40 ; =MOD15_021D8044
+ mov r1, #8
+ str r0, [r5, #0x24]
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r4]
+ b _021D7E30
+_021D7DEA:
+ ldr r0, _021D7E44 ; =0x000005F2
+ bl FUN_020054C8
+ b _021D7E30
+_021D7DF2:
+ add r0, r5, #0
+ bl MOD15_021D7E80
+ cmp r0, #0
+ beq _021D7E30
+ ldr r0, _021D7E38 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r5, #0x14]
+ mov r1, #0xe
+ bl MOD15_021D8900
+ b _021D7E30
+_021D7E0C:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D7E30
+ ldr r1, [r5, #0x24]
+ add r0, r5, #0
+ bl MOD15_021D7794
+ b _021D7E30
+_021D7E20:
+ ldr r0, [r5, #0x14]
+ mov r1, #0x18
+ bl MOD15_021D8970
+ cmp r0, #0
+ beq _021D7E30
+ mov r0, #0
+ str r0, [r4]
+_021D7E30:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7E34: .word 0x000005E4
+_021D7E38: .word 0x000005DC
+_021D7E3C: .word MOD15_021D779C
+_021D7E40: .word MOD15_021D8044
+_021D7E44: .word 0x000005F2
+
+ thumb_func_start MOD15_021D7E48
+MOD15_021D7E48: ; 0x021D7E48
+ push {r3, lr}
+ add r1, r0, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ ldr r0, [r1, #0x18]
+ bne _021D7E6A
+ add r1, #0x50
+ ldrh r1, [r1]
+ bl FUN_020892C4
+ cmp r0, #0
+ beq _021D7E66
+ mov r0, #1
+ pop {r3, pc}
+_021D7E66:
+ mov r0, #0
+ pop {r3, pc}
+_021D7E6A:
+ add r1, #0x50
+ ldrh r1, [r1]
+ bl FUN_02089300
+ cmp r0, #0
+ beq _021D7E7A
+ mov r0, #1
+ pop {r3, pc}
+_021D7E7A:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D7E80
+MOD15_021D7E80: ; 0x021D7E80
+ push {r3, lr}
+ add r1, r0, #0
+ add r1, #0x65
+ ldrb r1, [r1]
+ lsl r2, r1, #2
+ ldr r1, _021D7E94 ; =0x021DB86C
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, pc}
+ nop
+_021D7E94: .word 0x021DB86C
+
+ thumb_func_start MOD15_021D7E98
+MOD15_021D7E98: ; 0x021D7E98
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x50
+ ldrh r2, [r0]
+ add r1, r2, #0
+ cmp r2, #0xfe
+ bne _021D7EA8
+ mov r1, #0xc
+_021D7EA8:
+ cmp r2, #0xfe
+ beq _021D7F04
+ add r0, r4, #0
+ add r0, #0x52
+ strh r2, [r0]
+ ldrh r0, [r4, #0x34]
+ mov r2, #0x40
+ tst r2, r0
+ beq _021D7EC8
+ ldr r0, _021D7F40 ; =0x021DB894
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ add r4, #0x50
+ strh r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7EC8:
+ mov r2, #0x80
+ tst r2, r0
+ beq _021D7EDC
+ ldr r0, _021D7F44 ; =0x021DB895
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ add r4, #0x50
+ strh r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7EDC:
+ mov r2, #0x20
+ tst r2, r0
+ beq _021D7EF0
+ ldr r0, _021D7F48 ; =0x021DB896
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ add r4, #0x50
+ strh r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7EF0:
+ mov r2, #0x10
+ tst r0, r2
+ beq _021D7F3C
+ ldr r0, _021D7F4C ; =0x021DB897
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ add r4, #0x50
+ strh r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7F04:
+ ldrh r1, [r4, #0x34]
+ mov r0, #0x40
+ tst r0, r1
+ beq _021D7F22
+ add r0, r4, #0
+ add r0, #0x52
+ ldrh r0, [r0]
+ mov r1, #3
+ bl _s32_div_f
+ add r1, #9
+ add r4, #0x50
+ strh r1, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7F22:
+ mov r0, #0x80
+ tst r0, r1
+ beq _021D7F3C
+ add r0, r4, #0
+ add r0, #0x52
+ ldrh r0, [r0]
+ mov r1, #3
+ bl _s32_div_f
+ add r4, #0x50
+ strh r1, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7F3C:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021D7F40: .word 0x021DB894
+_021D7F44: .word 0x021DB895
+_021D7F48: .word 0x021DB896
+_021D7F4C: .word 0x021DB897
+
+ thumb_func_start MOD15_021D7F50
+MOD15_021D7F50: ; 0x021D7F50
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x50
+ ldrh r0, [r0]
+ cmp r0, #0xfe
+ beq _021D7FAE
+ ldrh r1, [r4, #0x34]
+ mov r3, #0x40
+ mov r2, #0xff
+ tst r3, r1
+ beq _021D7F6E
+ bl MOD15_021DB7C4
+ add r2, r0, #0
+ b _021D7F96
+_021D7F6E:
+ mov r3, #0x80
+ tst r3, r1
+ beq _021D7F7C
+ bl MOD15_021DB7E0
+ add r2, r0, #0
+ b _021D7F96
+_021D7F7C:
+ mov r3, #0x10
+ tst r3, r1
+ beq _021D7F8A
+ bl MOD15_021DB818
+ add r2, r0, #0
+ b _021D7F96
+_021D7F8A:
+ mov r3, #0x20
+ tst r1, r3
+ beq _021D7F96
+ bl MOD15_021DB7FC
+ add r2, r0, #0
+_021D7F96:
+ cmp r2, #0xff
+ beq _021D7FE0
+ add r0, r4, #0
+ add r0, #0x50
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x52
+ strh r1, [r0]
+ add r4, #0x50
+ strh r2, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7FAE:
+ ldrh r1, [r4, #0x34]
+ mov r0, #0x40
+ tst r0, r1
+ beq _021D7FC8
+ add r0, r4, #0
+ add r0, #0x52
+ ldrh r0, [r0]
+ bl MOD15_021DB850
+ add r4, #0x50
+ strh r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7FC8:
+ mov r0, #0x80
+ tst r0, r1
+ beq _021D7FE0
+ add r0, r4, #0
+ add r0, #0x52
+ ldrh r0, [r0]
+ bl MOD15_021DB834
+ add r4, #0x50
+ strh r0, [r4]
+ mov r0, #1
+ pop {r4, pc}
+_021D7FE0:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D7FE4
+MOD15_021D7FE4: ; 0x021D7FE4
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ strh r0, [r4]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ add r0, r1, #0
+ bl MOD15_021D8744
+ strh r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #8]
+ ldrh r2, [r4, #4]
+ cmp r2, #0xa
+ bls _021D8016
+ add r1, r2, #0
+ sub r1, #0xa
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r1, r0, #1
+ mov r0, #1
+ and r0, r2
+ add r0, r1, r0
+ strh r0, [r4, #2]
+ pop {r4, pc}
+_021D8016:
+ strh r0, [r4, #2]
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D801C
+MOD15_021D801C: ; 0x021D801C
+ ldrb r1, [r0, #6]
+ ldrb r0, [r0, #7]
+ lsl r0, r0, #1
+ add r0, r1, r0
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8028
+MOD15_021D8028: ; 0x021D8028
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD15_021D801C
+ ldrh r1, [r4]
+ lsl r1, r1, #1
+ add r0, r1, r0
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D8038
+MOD15_021D8038: ; 0x021D8038
+ ldr r0, [r0, #8]
+ bx lr
+
+ thumb_func_start MOD15_021D803C
+MOD15_021D803C: ; 0x021D803C
+ ldrh r0, [r0]
+ bx lr
+
+ thumb_func_start MOD15_021D8040
+MOD15_021D8040: ; 0x021D8040
+ ldrh r0, [r0, #2]
+ bx lr
+
+ thumb_func_start MOD15_021D8044
+MOD15_021D8044: ; 0x021D8044
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #3
+ bls _021D8052
+ b _021D81B4
+_021D8052:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D805E: ; jump table
+ .short _021D8066 - _021D805E - 2 ; case 0
+ .short _021D8172 - _021D805E - 2 ; case 1
+ .short _021D8184 - _021D805E - 2 ; case 2
+ .short _021D819E - _021D805E - 2 ; case 3
+_021D8066:
+ ldr r0, [r4, #0x38]
+ cmp r0, #0
+ bne _021D8076
+ add r1, r4, #0
+ add r1, #0x65
+ ldrb r1, [r1]
+ cmp r1, #0
+ bne _021D808C
+_021D8076:
+ cmp r0, #1
+ bne _021D8084
+ add r1, r4, #0
+ add r1, #0x65
+ ldrb r1, [r1]
+ cmp r1, #1
+ bne _021D808C
+_021D8084:
+ ldrh r2, [r4, #0x30]
+ mov r1, #4
+ tst r1, r2
+ beq _021D80BC
+_021D808C:
+ ldr r0, _021D81B8 ; =0x000005E4
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x50
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x65
+ ldrb r1, [r0]
+ mov r0, #1
+ eor r1, r0
+ add r0, r4, #0
+ add r0, #0x65
+ strb r1, [r0]
+ ldr r0, [r4, #0x14]
+ mov r1, #9
+ bl MOD15_021D8900
+ ldr r0, _021D81BC ; =MOD15_021D7D00
+ str r0, [r4, #0x24]
+ mov r0, #3
+ str r0, [r5]
+ b _021D81B4
+_021D80BC:
+ cmp r0, #2
+ bne _021D80CA
+ add r0, r4, #0
+ add r0, #0x54
+ bl MOD15_021D82A8
+ b _021D80E2
+_021D80CA:
+ cmp r0, #3
+ bne _021D80D8
+ add r0, r4, #0
+ add r0, #0x54
+ bl MOD15_021D82D0
+ b _021D80E2
+_021D80D8:
+ ldrh r1, [r4, #0x34]
+ add r0, r4, #0
+ add r0, #0x54
+ bl MOD15_021D81C8
+_021D80E2:
+ cmp r0, #1
+ beq _021D80F0
+ cmp r0, #2
+ beq _021D8102
+ cmp r0, #3
+ beq _021D8118
+ b _021D812E
+_021D80F0:
+ ldr r0, _021D81C0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0xf
+ bl MOD15_021D8900
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D8102:
+ ldr r0, _021D81C0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0x10
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r5]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D8118:
+ ldr r0, _021D81C0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0x10
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r5]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D812E:
+ ldrh r1, [r4, #0x30]
+ mov r0, #2
+ tst r0, r1
+ beq _021D814E
+ ldr r0, _021D81C0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #9
+ bl MOD15_021D8900
+ ldr r0, _021D81BC ; =MOD15_021D7D00
+ str r0, [r4, #0x24]
+ mov r0, #3
+ str r0, [r5]
+ b _021D81B4
+_021D814E:
+ mov r0, #1
+ tst r0, r1
+ beq _021D81B4
+ ldr r0, _021D81C0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD15_021D8310
+ ldr r0, _021D81C4 ; =MOD15_021D779C
+ mov r1, #0xa
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8900
+ mov r0, #3
+ str r0, [r5]
+ b _021D81B4
+_021D8172:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x10
+ bl MOD15_021D8970
+ cmp r0, #0
+ beq _021D81B4
+ mov r0, #0
+ str r0, [r5]
+ b _021D81B4
+_021D8184:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x10
+ bl MOD15_021D8970
+ cmp r0, #0
+ beq _021D81B4
+ ldr r0, [r4, #0x14]
+ mov r1, #0xf
+ bl MOD15_021D8900
+ mov r0, #0
+ str r0, [r5]
+ b _021D81B4
+_021D819E:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D81B4
+ ldr r1, [r4, #0x24]
+ add r0, r4, #0
+ bl MOD15_021D7794
+ mov r0, #0
+ str r0, [r5]
+_021D81B4:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D81B8: .word 0x000005E4
+_021D81BC: .word MOD15_021D7D00
+_021D81C0: .word 0x000005DC
+_021D81C4: .word MOD15_021D779C
+
+ thumb_func_start MOD15_021D81C8
+MOD15_021D81C8: ; 0x021D81C8
+ push {r3, r4, r5, lr}
+ mov r2, #0x80
+ add r4, r0, #0
+ tst r2, r1
+ beq _021D8232
+ ldrb r1, [r4, #7]
+ cmp r1, #4
+ bhs _021D8206
+ add r1, r1, #1
+ strb r1, [r4, #7]
+ bl MOD15_021D8028
+ ldrh r1, [r4, #4]
+ cmp r0, r1
+ bhs _021D81EA
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D81EA:
+ cmp r0, r1
+ bne _021D81FC
+ mov r1, #1
+ tst r0, r1
+ beq _021D81FC
+ mov r0, #0
+ strb r0, [r4, #6]
+ add r0, r1, #0
+ pop {r3, r4, r5, pc}
+_021D81FC:
+ ldrb r0, [r4, #7]
+ sub r0, r0, #1
+ strb r0, [r4, #7]
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_021D8206:
+ ldrh r2, [r4]
+ ldrh r1, [r4, #2]
+ cmp r2, r1
+ bhs _021D822E
+ mov r1, #1
+ str r1, [r4, #8]
+ ldrh r1, [r4]
+ add r1, r1, #1
+ strh r1, [r4]
+ bl MOD15_021D8028
+ ldrh r1, [r4, #4]
+ cmp r0, r1
+ bhs _021D8226
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021D8226:
+ mov r0, #0
+ strb r0, [r4, #6]
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_021D822E:
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_021D8232:
+ mov r5, #0x40
+ add r2, r1, #0
+ tst r2, r5
+ beq _021D8260
+ ldrb r0, [r4, #7]
+ cmp r0, #0
+ beq _021D8248
+ sub r0, r0, #1
+ strb r0, [r4, #7]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D8248:
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _021D825C
+ sub r5, #0x41
+ str r5, [r4, #8]
+ ldrh r0, [r4]
+ sub r0, r0, #1
+ strh r0, [r4]
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021D825C:
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_021D8260:
+ mov r3, #0x30
+ add r2, r1, #0
+ tst r2, r3
+ beq _021D828A
+ ldrb r2, [r4, #6]
+ mov r1, #1
+ eor r1, r2
+ strb r1, [r4, #6]
+ bl MOD15_021D8028
+ ldrh r1, [r4, #4]
+ cmp r0, r1
+ bhs _021D827E
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D827E:
+ ldrb r1, [r4, #6]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r4, #6]
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_021D828A:
+ lsl r2, r5, #3
+ tst r2, r1
+ beq _021D8296
+ bl MOD15_021D82A8
+ pop {r3, r4, r5, pc}
+_021D8296:
+ add r3, #0xd0
+ tst r1, r3
+ beq _021D82A2
+ bl MOD15_021D82D0
+ pop {r3, r4, r5, pc}
+_021D82A2:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D82A8
+MOD15_021D82A8: ; 0x021D82A8
+ ldrh r1, [r0]
+ cmp r1, #0
+ beq _021D82CA
+ cmp r1, #5
+ blo _021D82BE
+ sub r1, r1, #5
+ strh r1, [r0]
+ mov r1, #4
+ mvn r1, r1
+ str r1, [r0, #8]
+ b _021D82C6
+_021D82BE:
+ neg r1, r1
+ str r1, [r0, #8]
+ mov r1, #0
+ strh r1, [r0]
+_021D82C6:
+ mov r0, #2
+ bx lr
+_021D82CA:
+ mov r0, #4
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D82D0
+MOD15_021D82D0: ; 0x021D82D0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrh r2, [r4, #2]
+ ldrh r1, [r4]
+ cmp r1, r2
+ bhs _021D830C
+ add r0, r1, #5
+ cmp r0, r2
+ bgt _021D82EC
+ mov r0, #5
+ str r0, [r4, #8]
+ ldrh r0, [r4]
+ add r0, r0, #5
+ b _021D82F2
+_021D82EC:
+ sub r0, r2, r1
+ str r0, [r4, #8]
+ ldrh r0, [r4, #2]
+_021D82F2:
+ strh r0, [r4]
+ add r0, r4, #0
+ bl MOD15_021D8028
+ ldrh r1, [r4, #4]
+ cmp r0, r1
+ bhs _021D8304
+ mov r0, #2
+ pop {r4, pc}
+_021D8304:
+ mov r0, #0
+ strb r0, [r4, #6]
+ mov r0, #3
+ pop {r4, pc}
+_021D830C:
+ mov r0, #4
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D8310
+MOD15_021D8310: ; 0x021D8310
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x54
+ bl MOD15_021D8028
+ add r2, r0, #0
+ add r0, r4, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ ldr r0, [r4, #0x18]
+ bne _021D8334
+ add r1, r4, #0
+ add r1, #0x50
+ ldrh r1, [r1]
+ bl FUN_020892EC
+ b _021D833E
+_021D8334:
+ add r1, r4, #0
+ add r1, #0x50
+ ldrh r1, [r1]
+ bl FUN_02089338
+_021D833E:
+ add r2, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021D8350
+ cmp r0, #1
+ beq _021D8354
+ cmp r0, #2
+ beq _021D8362
+ b _021D8370
+_021D8350:
+ strh r2, [r4, #0x10]
+ b _021D8370
+_021D8354:
+ add r0, r4, #0
+ add r0, #0x4e
+ ldrh r0, [r0]
+ lsl r0, r0, #1
+ add r0, r4, r0
+ strh r2, [r0, #0x10]
+ b _021D8370
+_021D8362:
+ add r1, r4, #0
+ add r1, #0x4e
+ ldrh r1, [r1]
+ add r0, r4, #0
+ add r0, #8
+ bl FUN_02013998
+_021D8370:
+ add r0, r4, #0
+ bl MOD15_021D85EC
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D8378
+MOD15_021D8378: ; 0x021D8378
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021D8388
+ cmp r1, #1
+ beq _021D8398
+ b _021D83A6
+_021D8388:
+ ldr r0, [r0, #0x14]
+ mov r1, #1
+ bl MOD15_021D8900
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D83A6
+_021D8398:
+ ldr r0, [r0, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D83A6
+ mov r0, #1
+ pop {r4, pc}
+_021D83A6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D83AC
+MOD15_021D83AC: ; 0x021D83AC
+ str r1, [r0, #0x2c]
+ mov r1, #0
+ str r1, [r0, #0x28]
+ bx lr
+
+ thumb_func_start MOD15_021D83B4
+MOD15_021D83B4: ; 0x021D83B4
+ mov r1, #0
+ str r1, [r0, #0x2c]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D83BC
+MOD15_021D83BC: ; 0x021D83BC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D83CE
+ cmp r0, #1
+ beq _021D83DE
+ pop {r3, r4, r5, pc}
+_021D83CE:
+ ldr r0, [r5, #0x14]
+ mov r1, #2
+ bl MOD15_021D8900
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D83DE:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D83EE
+ add r0, r5, #0
+ bl MOD15_021D83B4
+_021D83EE:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D83F0
+MOD15_021D83F0: ; 0x021D83F0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #3
+ bls _021D83FE
+ b _021D850C
+_021D83FE:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D840A: ; jump table
+ .short _021D8412 - _021D840A - 2 ; case 0
+ .short _021D8460 - _021D840A - 2 ; case 1
+ .short _021D84E6 - _021D840A - 2 ; case 2
+ .short _021D84FC - _021D840A - 2 ; case 3
+_021D8412:
+ bl MOD15_021D85D0
+ cmp r0, #0
+ bne _021D8424
+ ldr r0, [r4]
+ bl FUN_02085424
+ cmp r0, #0
+ beq _021D8456
+_021D8424:
+ add r0, r4, #0
+ bl MOD15_021D85EC
+ cmp r0, #0
+ beq _021D8448
+ add r0, r4, #0
+ add r0, #0x66
+ mov r1, #1
+ mov r2, #0
+ bl MOD15_021D8634
+ ldr r0, [r4, #0x14]
+ mov r1, #0x12
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8448:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x14
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D8456:
+ ldr r1, _021D8510 ; =MOD15_021D851C
+ add r0, r4, #0
+ bl MOD15_021D83AC
+ pop {r3, r4, r5, pc}
+_021D8460:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x15
+ bl MOD15_021D8970
+ cmp r0, #0
+ beq _021D850C
+ ldrh r1, [r4, #0x30]
+ add r0, r4, #0
+ add r0, #0x66
+ bl MOD15_021D863C
+ add r0, r0, #3
+ cmp r0, #4
+ bhi _021D850C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8488: ; jump table
+ .short _021D8492 - _021D8488 - 2 ; case 0
+ .short _021D84A2 - _021D8488 - 2 ; case 1
+ .short _021D850C - _021D8488 - 2 ; case 2
+ .short _021D84B6 - _021D8488 - 2 ; case 3
+ .short _021D84A2 - _021D8488 - 2 ; case 4
+_021D8492:
+ ldr r0, _021D8514 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0x15
+ bl MOD15_021D8900
+ pop {r3, r4, r5, pc}
+_021D84A2:
+ ldr r0, _021D8514 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0x16
+ bl MOD15_021D8900
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D84B6:
+ ldr r0, _021D8514 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #4]
+ cmp r0, #2
+ bne _021D84CA
+ add r0, r4, #0
+ add r0, #8
+ bl FUN_020139B0
+_021D84CA:
+ add r1, r4, #0
+ add r2, r4, #0
+ ldr r0, [r4]
+ add r1, #0x10
+ add r2, #8
+ bl FUN_020854A0
+ ldr r1, _021D8518 ; =MOD15_021D8378
+ add r0, r4, #0
+ bl MOD15_021D7794
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D84E6:
+ ldrh r1, [r4, #0x30]
+ mov r0, #0xf3
+ tst r0, r1
+ beq _021D850C
+ ldr r0, [r4, #0x14]
+ mov r1, #0x11
+ bl MOD15_021D8900
+ mov r0, #3
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D84FC:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D850C
+ add r0, r4, #0
+ bl MOD15_021D83B4
+_021D850C:
+ pop {r3, r4, r5, pc}
+ nop
+_021D8510: .word MOD15_021D851C
+_021D8514: .word 0x000005DC
+_021D8518: .word MOD15_021D8378
+
+ thumb_func_start MOD15_021D851C
+MOD15_021D851C: ; 0x021D851C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021D8532
+ cmp r0, #1
+ beq _021D854C
+ cmp r0, #2
+ beq _021D85B6
+ pop {r3, r4, r5, pc}
+_021D8532:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x66
+ add r2, r1, #0
+ bl MOD15_021D8634
+ ldr r0, [r4, #0x14]
+ mov r1, #0x13
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D854C:
+ ldr r0, [r4, #0x14]
+ mov r1, #0x15
+ bl MOD15_021D8970
+ cmp r0, #0
+ beq _021D85C6
+ ldrh r1, [r4, #0x30]
+ add r0, r4, #0
+ add r0, #0x66
+ bl MOD15_021D863C
+ add r0, r0, #3
+ cmp r0, #4
+ bhi _021D85C6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8574: ; jump table
+ .short _021D857E - _021D8574 - 2 ; case 0
+ .short _021D858E - _021D8574 - 2 ; case 1
+ .short _021D85C6 - _021D8574 - 2 ; case 2
+ .short _021D85A2 - _021D8574 - 2 ; case 3
+ .short _021D858E - _021D8574 - 2 ; case 4
+_021D857E:
+ ldr r0, _021D85C8 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0x15
+ bl MOD15_021D8900
+ pop {r3, r4, r5, pc}
+_021D858E:
+ ldr r0, _021D85C8 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, [r4, #0x14]
+ mov r1, #0x16
+ bl MOD15_021D8900
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D85A2:
+ ldr r0, _021D85C8 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r1, _021D85CC ; =MOD15_021D8378
+ add r0, r4, #0
+ bl MOD15_021D7794
+ mov r0, #2
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021D85B6:
+ ldr r0, [r4, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D85C6
+ add r0, r4, #0
+ bl MOD15_021D83B4
+_021D85C6:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D85C8: .word 0x000005DC
+_021D85CC: .word MOD15_021D8378
+
+ thumb_func_start MOD15_021D85D0
+MOD15_021D85D0: ; 0x021D85D0
+ push {r3, lr}
+ add r2, r0, #0
+ add r1, r2, #0
+ ldr r0, [r2]
+ add r1, #0x10
+ add r2, #8
+ bl FUN_0208545C
+ cmp r0, #0
+ bne _021D85E8
+ mov r0, #1
+ pop {r3, pc}
+_021D85E8:
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021D85EC
+MOD15_021D85EC: ; 0x021D85EC
+ push {r3, lr}
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ beq _021D85FE
+ cmp r1, #1
+ beq _021D860E
+ cmp r1, #2
+ beq _021D8624
+ b _021D862C
+_021D85FE:
+ ldrh r1, [r0, #0x10]
+ ldr r0, _021D8630 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021D860A
+ mov r0, #1
+ pop {r3, pc}
+_021D860A:
+ mov r0, #0
+ pop {r3, pc}
+_021D860E:
+ ldrh r2, [r0, #0x10]
+ ldr r1, _021D8630 ; =0x0000FFFF
+ cmp r2, r1
+ beq _021D8620
+ ldrh r0, [r0, #0x12]
+ cmp r0, r1
+ beq _021D8620
+ mov r0, #1
+ pop {r3, pc}
+_021D8620:
+ mov r0, #0
+ pop {r3, pc}
+_021D8624:
+ add r0, #8
+ bl FUN_02013870
+ pop {r3, pc}
+_021D862C:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_021D8630: .word 0x0000FFFF
+
+ thumb_func_start MOD15_021D8634
+MOD15_021D8634: ; 0x021D8634
+ strb r2, [r0]
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D863C
+MOD15_021D863C: ; 0x021D863C
+ mov r2, #0x40
+ add r3, r1, #0
+ tst r3, r2
+ beq _021D865A
+ ldrb r1, [r0]
+ cmp r1, #0
+ bne _021D8650
+ sub r2, #0x44
+ add r0, r2, #0
+ bx lr
+_021D8650:
+ sub r1, r1, #1
+ sub r2, #0x43
+ strb r1, [r0]
+ add r0, r2, #0
+ bx lr
+_021D865A:
+ mov r2, #0x80
+ add r3, r1, #0
+ tst r3, r2
+ beq _021D867A
+ ldrb r3, [r0]
+ ldrb r1, [r0, #1]
+ cmp r3, r1
+ bne _021D8670
+ sub r2, #0x84
+ add r0, r2, #0
+ bx lr
+_021D8670:
+ add r1, r3, #1
+ sub r2, #0x83
+ strb r1, [r0]
+ add r0, r2, #0
+ bx lr
+_021D867A:
+ mov r2, #1
+ tst r2, r1
+ beq _021D8684
+ ldrb r0, [r0]
+ bx lr
+_021D8684:
+ mov r0, #2
+ tst r1, r0
+ beq _021D868E
+ sub r0, r0, #4
+ bx lr
+_021D868E:
+ sub r0, r0, #3
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8694
+MOD15_021D8694: ; 0x021D8694
+ ldrb r0, [r0]
+ bx lr
+
+ thumb_func_start MOD15_021D8698
+MOD15_021D8698: ; 0x021D8698
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D86AA
+ cmp r0, #1
+ beq _021D86CE
+ pop {r3, r4, r5, pc}
+_021D86AA:
+ ldr r0, _021D86E0 ; =0x000005E4
+ bl FUN_020054C8
+ add r0, r5, #0
+ add r0, #0x65
+ ldrb r1, [r0]
+ mov r0, #1
+ eor r1, r0
+ add r0, r5, #0
+ add r0, #0x65
+ strb r1, [r0]
+ ldr r0, [r5, #0x14]
+ mov r1, #0x17
+ bl MOD15_021D8900
+ mov r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D86CE:
+ ldr r0, [r5, #0x14]
+ bl MOD15_021D8958
+ cmp r0, #0
+ beq _021D86DE
+ add r0, r5, #0
+ bl MOD15_021D83B4
+_021D86DE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D86E0: .word 0x000005E4
+
+ thumb_func_start MOD15_021D86E4
+MOD15_021D86E4: ; 0x021D86E4
+ ldr r0, [r0, #4]
+ bx lr
+
+ thumb_func_start MOD15_021D86E8
+MOD15_021D86E8: ; 0x021D86E8
+ ldr r3, _021D86F0 ; =0x02085411
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D86F0: .word 0x02085411
+
+ thumb_func_start MOD15_021D86F4
+MOD15_021D86F4: ; 0x021D86F4
+ add r0, #0x65
+ ldrb r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D86FC
+MOD15_021D86FC: ; 0x021D86FC
+ ldr r3, _021D8704 ; =0x02013921
+ add r0, #8
+ bx r3
+ nop
+_021D8704: .word 0x02013921
+
+ thumb_func_start MOD15_021D8708
+MOD15_021D8708: ; 0x021D8708
+ push {r3, lr}
+ ldr r2, [r0, #4]
+ cmp r2, #2
+ bne _021D8718
+ add r0, #8
+ bl FUN_02013918
+ pop {r3, pc}
+_021D8718:
+ lsl r1, r1, #1
+ add r0, r0, r1
+ ldrh r0, [r0, #0x10]
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021D8720
+MOD15_021D8720: ; 0x021D8720
+ ldr r3, _021D8728 ; =0x02013841
+ add r0, #8
+ bx r3
+ nop
+_021D8728: .word 0x02013841
+
+ thumb_func_start MOD15_021D872C
+MOD15_021D872C: ; 0x021D872C
+ add r0, #0x4e
+ ldrh r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8734
+MOD15_021D8734: ; 0x021D8734
+ add r0, #0x4c
+ ldrh r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D873C
+MOD15_021D873C: ; 0x021D873C
+ add r0, #0x50
+ ldrh r0, [r0]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8744
+MOD15_021D8744: ; 0x021D8744
+ push {r3, lr}
+ add r1, r0, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ cmp r0, #0
+ ldr r0, [r1, #0x18]
+ bne _021D875C
+ add r1, #0x50
+ ldrh r1, [r1]
+ bl FUN_020892C4
+ pop {r3, pc}
+_021D875C:
+ add r1, #0x50
+ ldrh r1, [r1]
+ bl FUN_02089300
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8768
+MOD15_021D8768: ; 0x021D8768
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0x65
+ ldrb r0, [r0]
+ add r4, r1, #0
+ add r3, r2, #0
+ cmp r0, #0
+ ldr r0, [r5, #0x18]
+ bne _021D8786
+ add r5, #0x50
+ ldrh r1, [r5]
+ add r2, r4, #0
+ bl FUN_020892CC
+ pop {r3, r4, r5, pc}
+_021D8786:
+ add r5, #0x50
+ ldrh r1, [r5]
+ add r2, r4, #0
+ bl FUN_02089310
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8794
+MOD15_021D8794: ; 0x021D8794
+ ldr r3, _021D879C ; =MOD15_021D801C
+ add r0, #0x54
+ bx r3
+ nop
+_021D879C: .word MOD15_021D801C
+
+ thumb_func_start MOD15_021D87A0
+MOD15_021D87A0: ; 0x021D87A0
+ ldr r3, _021D87A8 ; =MOD15_021D8038
+ add r0, #0x54
+ bx r3
+ nop
+_021D87A8: .word MOD15_021D8038
+
+ thumb_func_start MOD15_021D87AC
+MOD15_021D87AC: ; 0x021D87AC
+ push {r3, lr}
+ add r0, #0x54
+ bl MOD15_021D803C
+ cmp r0, #0
+ beq _021D87BC
+ mov r0, #1
+ pop {r3, pc}
+_021D87BC:
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021D87C0
+MOD15_021D87C0: ; 0x021D87C0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0x54
+ bl MOD15_021D803C
+ add r5, #0x54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD15_021D8040
+ cmp r4, r0
+ bge _021D87DC
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D87DC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D87E0
+MOD15_021D87E0: ; 0x021D87E0
+ ldr r3, _021D87E8 ; =0x02085415
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D87E8: .word 0x02085415
+
+ thumb_func_start MOD15_021D87EC
+MOD15_021D87EC: ; 0x021D87EC
+ ldr r3, _021D87F4 ; =MOD15_021D8694
+ add r0, #0x66
+ bx r3
+ nop
+_021D87F4: .word MOD15_021D8694
+
+ thumb_func_start MOD15_021D87F8
+MOD15_021D87F8: ; 0x021D87F8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r6, r1, #0
+ mov r1, #0x7d
+ add r5, r0, #0
+ mov r0, #0x23
+ lsl r1, r1, #2
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021D8878
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ str r5, [r4, #0x18]
+ str r6, [r4, #0x1c]
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x80
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x23
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ add r1, r4, #0
+ mov r0, #0x80
+ add r1, #0x28
+ mov r2, #0x23
+ bl FUN_02008C9C
+ str r0, [r4, #0x24]
+ mov r0, #0x23
+ bl FUN_02016B94
+ str r0, [r4, #0x20]
+ ldr r0, _021D8880 ; =MOD15_021D88D8
+ add r1, r4, #0
+ mov r2, #2
+ bl FUN_0200CA44
+ str r0, [r4]
+ ldr r0, _021D8884 ; =MOD15_021D88DC
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD15_021D88D0
+ mov r1, #0
+ str r0, [r4, #4]
+ add r2, r4, #0
+ add r0, r1, #0
+_021D886E:
+ add r1, r1, #1
+ str r0, [r2, #8]
+ add r2, r2, #4
+ cmp r1, #4
+ blt _021D886E
+_021D8878:
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D8880: .word MOD15_021D88D8
+_021D8884: .word MOD15_021D88DC
+
+ thumb_func_start MOD15_021D8888
+MOD15_021D8888: ; 0x021D8888
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ beq _021D88CE
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r4, #0
+ add r5, r6, #0
+_021D889A:
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021D88A4
+ bl FUN_0200CAB4
+_021D88A4:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D889A
+ ldr r0, [r6]
+ bl FUN_0200CAB4
+ ldr r0, [r6, #4]
+ bl FUN_0200CAB4
+ bl FUN_02009FA0
+ ldr r0, [r6, #0x24]
+ bl FUN_0201FD58
+ ldr r0, [r6, #0x20]
+ bl FUN_02016A18
+ add r0, r6, #0
+ bl FUN_02016A18
+_021D88CE:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD15_021D88D0
+MOD15_021D88D0: ; 0x021D88D0
+ ldr r3, _021D88D4 ; =0x0200CA61
+ bx r3
+ .align 2, 0
+_021D88D4: .word 0x0200CA61
+
+ thumb_func_start MOD15_021D88D8
+MOD15_021D88D8: ; 0x021D88D8
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D88DC
+MOD15_021D88DC: ; 0x021D88DC
+ push {r3, lr}
+ ldr r0, [r1, #0x24]
+ bl FUN_0201FDEC
+ bl FUN_02009F80
+ ldr r3, _021D88F8 ; =0x027E0000
+ ldr r1, _021D88FC ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r3, pc}
+ nop
+_021D88F8: .word 0x027E0000
+_021D88FC: .word 0x00003FF8
+
+ thumb_func_start MOD15_021D8900
+MOD15_021D8900: ; 0x021D8900
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ cmp r6, #0x1d
+ bhs _021D894E
+ mov r0, #0x23
+ mov r1, #0x18
+ bl FUN_02016998
+ add r1, r0, #0
+ beq _021D8952
+ mov r4, #0
+ str r4, [r1, #0x14]
+ str r6, [r1, #0xc]
+ str r5, [r1]
+ ldr r0, [r5, #0x18]
+ add r2, r5, #0
+ str r0, [r1, #4]
+ ldr r0, [r5, #0x1c]
+ str r0, [r1, #8]
+_021D8928:
+ ldr r0, [r2, #8]
+ cmp r0, #0
+ bne _021D8944
+ ldr r0, _021D8954 ; =0x021DB98C
+ lsl r2, r6, #2
+ ldr r0, [r0, r2]
+ mov r2, #1
+ str r4, [r1, #0x10]
+ bl FUN_0200CA44
+ lsl r1, r4, #2
+ add r1, r5, r1
+ str r0, [r1, #8]
+ pop {r4, r5, r6, pc}
+_021D8944:
+ add r4, r4, #1
+ add r2, r2, #4
+ cmp r4, #4
+ blt _021D8928
+ pop {r4, r5, r6, pc}
+_021D894E:
+ bl ErrorHandling
+_021D8952:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D8954: .word 0x021DB98C
+
+ thumb_func_start MOD15_021D8958
+MOD15_021D8958: ; 0x021D8958
+ mov r2, #0
+_021D895A:
+ ldr r1, [r0, #8]
+ cmp r1, #0
+ beq _021D8964
+ mov r0, #0
+ bx lr
+_021D8964:
+ add r2, r2, #1
+ add r0, r0, #4
+ cmp r2, #4
+ blt _021D895A
+ mov r0, #1
+ bx lr
+
+ thumb_func_start MOD15_021D8970
+MOD15_021D8970: ; 0x021D8970
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+_021D8978:
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021D898C
+ bl FUN_0201B6C8
+ ldr r0, [r0, #0xc]
+ cmp r0, r6
+ bne _021D898C
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D898C:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D8978
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD15_021D8998
+MOD15_021D8998: ; 0x021D8998
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #8]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x10]
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ mov r2, #0
+ add r0, r1, r0
+ str r2, [r0, #8]
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D89C0
+MOD15_021D89C0: ; 0x021D89C0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r1, #1
+ lsl r1, r1, #0x1a
+ ldr r0, [r1]
+ ldr r2, _021D8AA4 ; =0xFFFFE0FF
+ and r0, r2
+ str r0, [r1]
+ ldr r0, _021D8AA8 ; =0x04001000
+ ldr r3, [r0]
+ and r2, r3
+ str r2, [r0]
+ ldr r2, [r1]
+ ldr r3, _021D8AAC ; =0xFFCFFFEF
+ add r5, r2, #0
+ ldr r2, _021D8AB0 ; =0x00100010
+ and r5, r3
+ orr r2, r5
+ str r2, [r1]
+ ldr r1, [r0]
+ add r2, r1, #0
+ and r2, r3
+ mov r1, #0x10
+ orr r1, r2
+ str r1, [r0]
+ add r0, r4, #0
+ bl MOD15_021D8C30
+ add r0, r4, #0
+ bl MOD15_021D8AB4
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ bl MOD15_021D95E8
+ mov r1, #0x1e
+ ldr r2, [r4]
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, r1]
+ bl MOD15_021D9694
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ bl MOD15_021D9FA0
+ mov r1, #0x79
+ ldr r2, [r4]
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, r1]
+ bl MOD15_021D9FD4
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ bl MOD15_021DA18C
+ mov r1, #0x7a
+ ldr r2, [r4]
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, r1]
+ bl MOD15_021DA1D0
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ bl MOD15_021DA828
+ mov r1, #0x7b
+ ldr r2, [r4]
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, r1]
+ bl MOD15_021DA8E8
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ bl MOD15_021DAE68
+ mov r1, #0x1f
+ ldr r2, [r4]
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ ldr r0, [r0, r1]
+ bl MOD15_021DAEB4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ bl GX_DispOn
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8AA4: .word 0xFFFFE0FF
+_021D8AA8: .word 0x04001000
+_021D8AAC: .word 0xFFCFFFEF
+_021D8AB0: .word 0x00100010
+
+ thumb_func_start MOD15_021D8AB4
+MOD15_021D8AB4: ; 0x021D8AB4
+ push {r3, r4, lr}
+ sub sp, #0x14
+ ldr r4, [r0]
+ mov r0, #0x66
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_020B19DC
+ mov r0, #0x6b
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_020B19DC
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl FUN_020B1A24
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_020B1A24
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r0, r4, r0
+ str r0, [sp, #0x10]
+ mov r0, #0x4c
+ mov r1, #9
+ bl FUN_02006AE4
+ mov r0, #0x23
+ str r0, [sp]
+ mov r0, #0x66
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ mov r1, #0xa
+ mov r2, #1
+ mov r3, #0
+ bl FUN_02006A8C
+ mov r1, #7
+ mov r0, #0x23
+ lsl r3, r1, #6
+ str r0, [sp]
+ mov r0, #0x4c
+ mov r2, #1
+ add r3, r4, r3
+ bl FUN_02006C30
+ mov r3, #0x1d
+ lsl r3, r3, #4
+ str r0, [r4, r3]
+ mov r0, #0x23
+ sub r3, #8
+ str r0, [sp]
+ mov r0, #0x4c
+ mov r1, #8
+ mov r2, #1
+ add r3, r4, r3
+ bl FUN_02006C5C
+ mov r1, #0x76
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r2, #0
+ sub r0, r1, #4
+ str r2, [r4, r0]
+ add r0, r1, #4
+ str r2, [r4, r0]
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8B58
+MOD15_021D8B58: ; 0x021D8B58
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r1, #0
+ ldr r0, [r6, #0x14]
+ ldr r7, [r6]
+ cmp r0, #0
+ beq _021D8B6E
+ cmp r0, #1
+ beq _021D8B90
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_021D8B6E:
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x23
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r6, #0x14]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r6, #0x14]
+ pop {r4, r5, r6, r7, pc}
+_021D8B90:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D8C2A
+ mov r0, #0x1e
+ ldr r1, [r6]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl MOD15_021D9634
+ mov r0, #0x79
+ ldr r1, [r6]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD15_021D9FBC
+ mov r0, #0x7a
+ ldr r1, [r6]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD15_021DA1B8
+ mov r0, #0x7b
+ ldr r1, [r6]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD15_021DA8A4
+ mov r0, #0x1f
+ ldr r1, [r6]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl MOD15_021DAEA4
+ mov r4, #0
+ add r5, r7, #0
+_021D8BD8:
+ mov r0, #0x1d
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8BE6
+ bl FUN_02016A18
+_021D8BE6:
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8BF4
+ bl FUN_02016A18
+_021D8BF4:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021D8BD8
+ ldr r0, [r7, #0x20]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r7, #0x20]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r7, #0x20]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r7, #0x20]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r7, #0x20]
+ mov r1, #4
+ bl FUN_020178A0
+ add r0, r6, #0
+ bl MOD15_021D8998
+_021D8C2A:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8C30
+MOD15_021D8C30: ; 0x021D8C30
+ push {r4, lr}
+ ldr r2, _021D8C94 ; =0x04000304
+ ldr r4, [r0]
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ mov r0, #1
+ mov r1, #0
+ add r2, r0, #0
+ bl GX_SetGraphicsMode
+ ldr r0, _021D8C98 ; =0x021DB964
+ bl FUN_0201E66C
+ ldr r0, _021D8C9C ; =0x021DB8C8
+ bl FUN_02016BBC
+ mov r1, #0
+ ldr r0, [r4, #0x20]
+ ldr r2, _021D8CA0 ; =0x021DB910
+ add r3, r1, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x20]
+ ldr r2, _021D8CA4 ; =0x021DB8D8
+ mov r1, #1
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x20]
+ ldr r2, _021D8CA8 ; =0x021DB948
+ mov r1, #2
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x20]
+ ldr r2, _021D8CAC ; =0x021DB8F4
+ mov r1, #3
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x20]
+ ldr r2, _021D8CB0 ; =0x021DB92C
+ mov r1, #4
+ mov r3, #0
+ bl FUN_02016C18
+ pop {r4, pc}
+ nop
+_021D8C94: .word 0x04000304
+_021D8C98: .word 0x021DB964
+_021D8C9C: .word 0x021DB8C8
+_021D8CA0: .word 0x021DB910
+_021D8CA4: .word 0x021DB8D8
+_021D8CA8: .word 0x021DB948
+_021D8CAC: .word 0x021DB8F4
+_021D8CB0: .word 0x021DB92C
+
+ thumb_func_start MOD15_021D8CB4
+MOD15_021D8CB4: ; 0x021D8CB4
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021D8CC6
+ cmp r0, #1
+ beq _021D8CE6
+ b _021D8CF8
+_021D8CC6:
+ mov r0, #5
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x23
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4, #0x14]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ pop {r3, r4, pc}
+_021D8CE6:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D8CFE
+ ldr r0, [r4, #0x14]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ pop {r3, r4, pc}
+_021D8CF8:
+ add r0, r4, #0
+ bl MOD15_021D8998
+_021D8CFE:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8D04
+MOD15_021D8D04: ; 0x021D8D04
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x1e
+ ldr r4, [r5]
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9964
+ ldr r0, [r5, #4]
+ bl MOD15_021D872C
+ add r1, r0, #0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9E3C
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8D30
+MOD15_021D8D30: ; 0x021D8D30
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x1e
+ ldr r4, [r5]
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021D9DD8
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DEC
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DA10C
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D8734
+ add r1, r0, #0
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA124
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8D74
+MOD15_021D8D74: ; 0x021D8D74
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x79
+ ldr r4, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DA10C
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9E0C
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021D9DD8
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D8DA4
+MOD15_021D8DA4: ; 0x021D8DA4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #0
+ beq _021D8DB6
+ cmp r0, #1
+ beq _021D8DDC
+ pop {r3, r4, r5, pc}
+_021D8DB6:
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DC0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DEC
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA638
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8DDC:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA650
+ cmp r0, #0
+ beq _021D8E18
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA164
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D873C
+ add r1, r0, #0
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA5B4
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DA588
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D8E18:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D8E1C
+MOD15_021D8E1C: ; 0x021D8E1C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #0
+ beq _021D8E32
+ cmp r0, #1
+ beq _021D8E44
+ cmp r0, #2
+ beq _021D8E56
+ pop {r3, r4, r5, pc}
+_021D8E32:
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021DB2D0
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8E44:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7E8
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8E56:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA81C
+ cmp r0, #0
+ beq _021D8E82
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021DB358
+ cmp r0, #0
+ beq _021D8E82
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7C4
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D8E82:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D8E84
+MOD15_021D8E84: ; 0x021D8E84
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #3
+ bhi _021D8F26
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8E9C: ; jump table
+ .short _021D8EA4 - _021D8E9C - 2 ; case 0
+ .short _021D8EB6 - _021D8E9C - 2 ; case 1
+ .short _021D8ED4 - _021D8E9C - 2 ; case 2
+ .short _021D8EF4 - _021D8E9C - 2 ; case 3
+_021D8EA4:
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021DB2D0
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8EB6:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DA588
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7E8
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8ED4:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA81C
+ cmp r0, #0
+ beq _021D8F26
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7C4
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8EF4:
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021DB358
+ cmp r0, #0
+ beq _021D8F26
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D873C
+ add r1, r0, #0
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA5B4
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DA588
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D8F26:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D8F28
+MOD15_021D8F28: ; 0x021D8F28
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #0
+ beq _021D8F3A
+ cmp r0, #1
+ beq _021D8F62
+ pop {r3, r4, r5, pc}
+_021D8F3A:
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA178
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DA588
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA6A0
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8F62:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA6C4
+ cmp r0, #0
+ beq _021D8F8A
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9E0C
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DCC
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D8F8A:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D8F8C
+MOD15_021D8F8C: ; 0x021D8F8C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #0
+ beq _021D8FA2
+ cmp r0, #1
+ beq _021D8FCA
+ cmp r0, #2
+ beq _021D8FEA
+ pop {r3, r4, r5, pc}
+_021D8FA2:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA9D4
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DA588
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA744
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8FCA:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA760
+ cmp r0, #0
+ beq _021D9028
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAA24
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D8FEA:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAAD0
+ cmp r0, #0
+ beq _021D9028
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D8794
+ add r1, r0, #0
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DABC0
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DAB80
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DB4E8
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D9028:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D902C
+MOD15_021D902C: ; 0x021D902C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #4
+ bhi _021D90FC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9044: ; jump table
+ .short _021D904E - _021D9044 - 2 ; case 0
+ .short _021D9060 - _021D9044 - 2 ; case 1
+ .short _021D908A - _021D9044 - 2 ; case 2
+ .short _021D90AA - _021D9044 - 2 ; case 3
+ .short _021D90BC - _021D9044 - 2 ; case 4
+_021D904E:
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021DB2D0
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D9060:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DAB80
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DB4E8
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAAF4
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D908A:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAB18
+ cmp r0, #0
+ beq _021D90FC
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7C4
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D90AA:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA77C
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D90BC:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7B8
+ cmp r0, #0
+ beq _021D90FC
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021DB358
+ cmp r0, #0
+ beq _021D90FC
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D873C
+ add r1, r0, #0
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA5B4
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DA588
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D90FC:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9100
+MOD15_021D9100: ; 0x021D9100
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #3
+ bhi _021D91DC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9118: ; jump table
+ .short _021D9120 - _021D9118 - 2 ; case 0
+ .short _021D9154 - _021D9118 - 2 ; case 1
+ .short _021D917E - _021D9118 - 2 ; case 2
+ .short _021D919E - _021D9118 - 2 ; case 3
+_021D9120:
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA178
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DAB80
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DB4E8
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAAF4
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D9154:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAB18
+ cmp r0, #0
+ beq _021D91DC
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA710
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA77C
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D917E:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7B8
+ cmp r0, #0
+ beq _021D91DC
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA720
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D919E:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA738
+ cmp r0, #0
+ beq _021D91DC
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9964
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021D9DD8
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9E0C
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DCC
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D91DC:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D91E0
+MOD15_021D91E0: ; 0x021D91E0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #3
+ bhi _021D92B4
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D91F8: ; jump table
+ .short _021D9200 - _021D91F8 - 2 ; case 0
+ .short _021D9234 - _021D91F8 - 2 ; case 1
+ .short _021D925E - _021D91F8 - 2 ; case 2
+ .short _021D927E - _021D91F8 - 2 ; case 3
+_021D9200:
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA178
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DAB80
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021DB4E8
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAAF4
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D9234:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DAB18
+ cmp r0, #0
+ beq _021D92B4
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA710
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA77C
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D925E:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA7B8
+ cmp r0, #0
+ beq _021D92B4
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA720
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D927E:
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA738
+ cmp r0, #0
+ beq _021D92B4
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9964
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021D9DD8
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DA10C
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D92B4:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D92B8
+MOD15_021D92B8: ; 0x021D92B8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r5]
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D872C
+ add r1, r0, #0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9E3C
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D92D8
+MOD15_021D92D8: ; 0x021D92D8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r5]
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D8734
+ add r1, r0, #0
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA124
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D92F8
+MOD15_021D92F8: ; 0x021D92F8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r5]
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D873C
+ add r1, r0, #0
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA5B4
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D9318
+MOD15_021D9318: ; 0x021D9318
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r5]
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D8794
+ add r1, r0, #0
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DABC0
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D9338
+MOD15_021D9338: ; 0x021D9338
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r5]
+ cmp r0, #0
+ beq _021D934A
+ cmp r0, #1
+ beq _021D9364
+ pop {r3, r4, r5, pc}
+_021D934A:
+ ldr r0, [r4, #0x18]
+ bl MOD15_021D87A0
+ add r1, r0, #0
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DABFC
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ pop {r3, r4, r5, pc}
+_021D9364:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DACB8
+ cmp r0, #0
+ beq _021D9384
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD15_021DB4E8
+ add r0, r5, #0
+ bl MOD15_021D8998
+_021D9384:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9388
+MOD15_021D9388: ; 0x021D9388
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x1e
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl MOD15_021D9CB4
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D93A4
+MOD15_021D93A4: ; 0x021D93A4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x1e
+ ldr r4, [r5]
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl MOD15_021D9CB4
+ ldr r0, [r5, #4]
+ bl MOD15_021D87EC
+ add r1, r0, #0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9ECC
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA118
+ cmp r0, #0
+ beq _021D93E2
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA0F4
+ b _021D93EC
+_021D93E2:
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DC0
+_021D93EC:
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D93F4
+MOD15_021D93F4: ; 0x021D93F4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x1e
+ ldr r4, [r5]
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #3
+ bl MOD15_021D9CB4
+ ldr r0, [r5, #4]
+ bl MOD15_021D87EC
+ add r1, r0, #0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9ECC
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA118
+ cmp r0, #0
+ beq _021D9432
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA0F4
+ b _021D943C
+_021D9432:
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DC0
+_021D943C:
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D9444
+MOD15_021D9444: ; 0x021D9444
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x1e
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl MOD15_021D9CB4
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9460
+MOD15_021D9460: ; 0x021D9460
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #4]
+ ldr r4, [r5]
+ bl MOD15_021D87EC
+ add r1, r0, #0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9F58
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D9480
+MOD15_021D9480: ; 0x021D9480
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r0, #0x1e
+ ldr r4, [r5]
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD15_021D9CB4
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9F88
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA118
+ cmp r0, #0
+ beq _021D94B6
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD15_021DA100
+ b _021D94C0
+_021D94B6:
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD15_021D9DCC
+_021D94C0:
+ add r0, r5, #0
+ bl MOD15_021D8998
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D94C8
+MOD15_021D94C8: ; 0x021D94C8
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x1f
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0
+ mov r2, #1
+ bl MOD15_021DB520
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D94E4
+MOD15_021D94E4: ; 0x021D94E4
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x1f
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD15_021DB520
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9500
+MOD15_021D9500: ; 0x021D9500
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x1f
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0
+ add r2, r1, #0
+ bl MOD15_021DB520
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D951C
+MOD15_021D951C: ; 0x021D951C
+ push {r4, lr}
+ add r4, r1, #0
+ mov r0, #0x1f
+ ldr r1, [r4]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #1
+ mov r2, #0
+ bl MOD15_021DB520
+ add r0, r4, #0
+ bl MOD15_021D8998
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9538
+MOD15_021D9538: ; 0x021D9538
+ mov r1, #0x1e
+ lsl r1, r1, #4
+ ldr r3, _021D9544 ; =MOD15_021D9CB0
+ ldr r0, [r0, r1]
+ bx r3
+ nop
+_021D9544: .word MOD15_021D9CB0
+
+ thumb_func_start MOD15_021D9548
+MOD15_021D9548: ; 0x021D9548
+ ldr r0, [r0, #0x20]
+ bx lr
+
+ thumb_func_start MOD15_021D954C
+MOD15_021D954C: ; 0x021D954C
+ ldr r0, [r0, #0x24]
+ bx lr
+
+ thumb_func_start MOD15_021D9550
+MOD15_021D9550: ; 0x021D9550
+ push {r3, r4, r5, r6}
+ mov r4, #0x15
+ lsl r4, r4, #4
+ mov r5, #0x24
+ add r6, r0, r4
+ mul r5, r2
+ add r5, r6, r5
+ str r5, [r1]
+ add r5, r4, #0
+ add r5, #0x48
+ add r6, r0, r5
+ mov r5, #0x14
+ mul r5, r2
+ lsl r2, r2, #2
+ add r5, r6, r5
+ add r2, r0, r2
+ add r0, r4, #0
+ str r5, [r1, #8]
+ add r0, #0x70
+ ldr r0, [r2, r0]
+ add r4, #0x78
+ str r0, [r1, #0xc]
+ ldr r0, [r2, r4]
+ str r0, [r1, #0x10]
+ add r0, r1, #0
+ add r0, #0x20
+ strb r3, [r0]
+ mov r0, #0
+ str r0, [r1, #4]
+ str r0, [r1, #0x14]
+ str r0, [r1, #0x18]
+ str r0, [r1, #0x1c]
+ pop {r3, r4, r5, r6}
+ bx lr
+
+ thumb_func_start MOD15_021D9594
+MOD15_021D9594: ; 0x021D9594
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ ldr r0, [r0, #0x24]
+ str r0, [sp]
+ lsl r0, r2, #0xc
+ str r0, [sp, #8]
+ lsl r0, r3, #0xc
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x30]
+ str r1, [sp, #4]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x34]
+ str r0, [sp, #0x18]
+ mov r0, #0x23
+ str r0, [sp, #0x1c]
+ bl OS_DisableInterrupts
+ add r4, r0, #0
+ add r0, sp, #0
+ bl FUN_0201FF84
+ add r5, r0, #0
+ add r0, r4, #0
+ bl OS_RestoreInterrupts
+ cmp r5, #0
+ beq _021D95E0
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_020200BC
+ mov r1, #1
+ add r0, r5, #0
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+_021D95E0:
+ add r0, r5, #0
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D95E8
+MOD15_021D95E8: ; 0x021D95E8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r1, #0x1b
+ add r5, r0, #0
+ mov r0, #0x23
+ lsl r1, r1, #4
+ add r7, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ str r7, [r4, #8]
+ mov r0, #0
+ str r0, [r4, #0x3c]
+ str r0, [r4, #0x40]
+ str r0, [r4, #0x44]
+ mov r0, #0x80
+ mov r1, #0x23
+ bl FUN_020219F4
+ str r0, [r4, #0x4c]
+ ldr r2, _021D9630 ; =0x00000182
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x23
+ bl FUN_0200A86C
+ str r0, [r4, #0x48]
+ mov r0, #0x23
+ bl FUN_02013690
+ str r0, [r4, #0x50]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9630: .word 0x00000182
+
+ thumb_func_start MOD15_021D9634
+MOD15_021D9634: ; 0x021D9634
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x50]
+ cmp r0, #0
+ beq _021D9642
+ bl FUN_020136C0
+_021D9642:
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0
+ beq _021D964C
+ bl FUN_0201FFC8
+_021D964C:
+ ldr r0, [r4, #0x40]
+ cmp r0, #0
+ beq _021D9656
+ bl FUN_0201FFC8
+_021D9656:
+ ldr r0, [r4, #0x44]
+ cmp r0, #0
+ beq _021D9660
+ bl FUN_0201FFC8
+_021D9660:
+ ldr r0, [r4, #0x48]
+ cmp r0, #0
+ beq _021D966A
+ bl FUN_0200A8B8
+_021D966A:
+ ldr r0, [r4, #0x4c]
+ cmp r0, #0
+ beq _021D9674
+ bl FUN_02021A20
+_021D9674:
+ add r0, r4, #0
+ add r0, #0xc
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x1c
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x2c
+ bl FUN_02019178
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9694
+MOD15_021D9694: ; 0x021D9694
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5]
+ bl MOD15_021D9548
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD15_021D97E4
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x4c
+ add r2, r6, #0
+ add r3, r1, #0
+ bl FUN_020068C8
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x4c
+ add r2, r6, #0
+ bl FUN_0200687C
+ lsr r4, r0, #5
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r2, #0
+ lsl r0, r4, #0x10
+ add r1, r5, #0
+ str r2, [sp, #0xc]
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r6, #0
+ add r1, #0xc
+ mov r3, #3
+ bl FUN_02019064
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r3, #2
+ add r1, r5, #0
+ str r3, [sp, #8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0x6c
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r6, #0
+ add r1, #0x1c
+ mov r2, #0
+ bl FUN_02019064
+ mov r0, #0xf
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0xa2
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r1, r5, #0
+ str r0, [sp, #0x10]
+ add r0, r6, #0
+ add r1, #0x2c
+ mov r2, #0
+ mov r3, #0x17
+ bl FUN_02019064
+ add r0, r4, #0
+ add r0, #0xc2
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x26
+ add r2, r6, #0
+ add r3, r1, #0
+ bl FUN_0200687C
+ add r0, r4, #0
+ add r0, #0xc2
+ str r0, [r5, #0x60]
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x23
+ mov r3, #7
+ str r0, [sp, #4]
+ mov r0, #0x26
+ mov r1, #0x18
+ mov r2, #0
+ lsl r3, r3, #6
+ bl FUN_02006930
+ ldr r0, [r5, #4]
+ bl MOD15_021D87E0
+ lsl r0, r0, #0x18
+ add r2, r4, #0
+ lsr r0, r0, #0x18
+ add r2, #0xcb
+ str r0, [sp]
+ mov r0, #0x23
+ lsl r2, r2, #0x10
+ str r0, [sp, #4]
+ add r0, r6, #0
+ mov r1, #0
+ lsr r2, r2, #0x10
+ mov r3, #0xf
+ bl FUN_0200CD68
+ add r0, r5, #0
+ add r4, #0xcb
+ add r0, #0x1c
+ add r1, r4, #0
+ mov r2, #0xf
+ bl FUN_0200D06C
+ add r0, r5, #0
+ add r0, #0xc
+ bl FUN_02019270
+ add r0, r5, #0
+ add r0, #0x1c
+ bl FUN_02019270
+ add r0, r5, #0
+ bl MOD15_021D9868
+ add r0, r5, #0
+ bl MOD15_021D9964
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD15_021D9CB4
+ add r0, r5, #0
+ bl MOD15_021D98C0
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_02017CD0
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD15_021D97E4
+MOD15_021D97E4: ; 0x021D97E4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #7
+ lsl r0, r0, #6
+ str r0, [sp]
+ mov r0, #0x23
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r0, #0x4c
+ mov r1, #6
+ add r2, sp, #8
+ mov r3, #0x23
+ bl FUN_02006C08
+ add r4, r0, #0
+ ldr r0, [sp, #8]
+ add r1, r5, #0
+ mov r2, #5
+ ldr r0, [r0, #0xc]
+ add r1, #0x70
+ lsl r2, r2, #6
+ bl MIi_CpuCopy16
+ add r5, #0x70
+ mov r1, #5
+ add r0, r5, #0
+ lsl r1, r1, #6
+ bl DC_FlushRange
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r4, r5, pc}
+
+ thumb_func_start MOD15_021D9834
+MOD15_021D9834: ; 0x021D9834
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E4
+ cmp r0, #2
+ bne _021D985A
+ ldr r0, [r4, #4]
+ bl MOD15_021D86FC
+ add r0, r0, #1
+ add r4, #0x70
+ lsl r0, r0, #5
+ add r0, r4, r0
+ mov r1, #0
+ mov r2, #0x20
+ bl GX_LoadBGPltt
+ pop {r4, pc}
+_021D985A:
+ add r4, #0x70
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x20
+ bl GX_LoadBGPltt
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9868
+MOD15_021D9868: ; 0x021D9868
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E4
+ cmp r0, #0
+ beq _021D9880
+ cmp r0, #1
+ beq _021D9896
+ cmp r0, #2
+ beq _021D98BA
+ pop {r4, pc}
+_021D9880:
+ add r0, r4, #0
+ mov r1, #0x68
+ add r0, #0x54
+ strh r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x10
+ add r0, #0x56
+ strh r1, [r0]
+ mov r0, #1
+ str r0, [r4, #0x5c]
+ pop {r4, pc}
+_021D9896:
+ add r0, r4, #0
+ mov r1, #0x30
+ add r0, #0x54
+ strh r1, [r0]
+ add r0, r4, #0
+ mov r2, #0x10
+ add r0, #0x56
+ strh r2, [r0]
+ add r0, r4, #0
+ mov r1, #0xa0
+ add r0, #0x58
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x5a
+ strh r2, [r0]
+ mov r0, #2
+ str r0, [r4, #0x5c]
+ pop {r4, pc}
+_021D98BA:
+ mov r0, #0
+ str r0, [r4, #0x5c]
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D98C0
+MOD15_021D98C0: ; 0x021D98C0
+ push {r3, r4, r5, lr}
+ sub sp, #0x30
+ add r4, r0, #0
+ ldr r0, [r4, #0x5c]
+ cmp r0, #0
+ beq _021D98D8
+ add r0, r4, #0
+ add r0, #0x54
+ add r1, sp, #8
+ bl MOD15_021D9C1C
+ b _021D98E2
+_021D98D8:
+ mov r1, #0x80
+ add r0, sp, #8
+ strh r1, [r0]
+ mov r1, #0x18
+ strh r1, [r0, #2]
+_021D98E2:
+ mov r2, #0
+ ldr r0, [r4]
+ add r1, sp, #0xc
+ add r3, r2, #0
+ bl MOD15_021D9550
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r5, sp, #8
+ mov r3, #2
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ ldr r0, [r4]
+ add r1, sp, #0xc
+ bl MOD15_021D9594
+ str r0, [r4, #0x3c]
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD15_021D9E98
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0xc
+ mov r2, #6
+ mov r3, #0x18
+ bl MOD15_021D9594
+ mov r1, #0xd
+ str r0, [r4, #0x40]
+ bl FUN_02020130
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0xc
+ mov r2, #0xfa
+ mov r3, #0x18
+ bl MOD15_021D9594
+ str r0, [r4, #0x44]
+ mov r1, #0xc
+ bl FUN_02020130
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E4
+ cmp r0, #2
+ beq _021D995E
+ ldr r0, [r4, #0x44]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r4, #0x40]
+ mov r1, #0
+ bl FUN_020200A0
+_021D995E:
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9964
+MOD15_021D9964: ; 0x021D9964
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD15_021D9834
+ add r0, r4, #0
+ add r0, #0xc
+ mov r1, #0xd
+ bl FUN_02019620
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E4
+ cmp r0, #0
+ beq _021D998A
+ cmp r0, #1
+ beq _021D99B0
+ cmp r0, #2
+ beq _021D99FA
+ b _021D9A02
+_021D998A:
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xc
+ add r1, #0x54
+ bl MOD15_021D9C30
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD15_021D8708
+ add r1, r4, #0
+ add r2, r4, #0
+ add r3, r0, #0
+ add r0, r4, #0
+ add r1, #0xc
+ add r2, #0x54
+ bl MOD15_021D9C58
+ b _021D9A02
+_021D99B0:
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xc
+ add r1, #0x54
+ bl MOD15_021D9C30
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xc
+ add r1, #0x58
+ bl MOD15_021D9C30
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD15_021D8708
+ add r1, r4, #0
+ add r2, r4, #0
+ add r3, r0, #0
+ add r0, r4, #0
+ add r1, #0xc
+ add r2, #0x54
+ bl MOD15_021D9C58
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl MOD15_021D8708
+ add r1, r4, #0
+ add r2, r4, #0
+ add r3, r0, #0
+ add r0, r4, #0
+ add r1, #0xc
+ add r2, #0x58
+ bl MOD15_021D9C58
+ b _021D9A02
+_021D99FA:
+ add r0, r4, #0
+ bl MOD15_021D9A0C
+ str r0, [r4, #0x5c]
+_021D9A02:
+ add r4, #0xc
+ add r0, r4, #0
+ bl FUN_02019548
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9A0C
+MOD15_021D9A0C: ; 0x021D9A0C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ str r0, [sp, #0x10]
+ ldr r0, [r0, #4]
+ mov r1, #0x23
+ bl MOD15_021D8720
+ mov r4, #0
+ str r0, [sp, #0x1c]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x10]
+ add r0, #0x64
+ str r4, [sp, #0x18]
+ add r5, r4, #0
+ bl MOD15_021D9B04
+ ldr r7, [sp, #0x10]
+ add r0, r7, #0
+ str r0, [sp, #0x24]
+ add r0, #0xc
+ str r0, [sp, #0x24]
+ add r0, r7, #0
+ add r6, r7, #0
+ str r0, [sp, #0x20]
+ add r0, #0x64
+ add r6, #0x54
+ str r0, [sp, #0x20]
+_021D9A46:
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x1c]
+ bl MOD15_021D9B3C
+ cmp r0, #3
+ bhi _021D9ADE
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9A5E: ; jump table
+ .short _021D9A66 - _021D9A5E - 2 ; case 0
+ .short _021D9A8E - _021D9A5E - 2 ; case 1
+ .short _021D9AD4 - _021D9A5E - 2 ; case 2
+ .short _021D9ADA - _021D9A5E - 2 ; case 3
+_021D9A66:
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9AFC ; =0x0003040D
+ ldr r2, [sp, #0x1c]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x24]
+ mov r1, #1
+ add r3, r5, #0
+ bl FUN_0201BDE0
+ ldr r1, [sp, #0x1c]
+ mov r0, #1
+ mov r2, #0
+ bl FUN_02002E14
+ add r5, r5, r0
+ b _021D9ADE
+_021D9A8E:
+ add r1, r5, #0
+ add r0, r7, #0
+ add r1, #0x32
+ add r0, #0x54
+ strh r1, [r0]
+ add r1, r4, #0
+ add r0, r7, #0
+ add r1, #8
+ add r0, #0x56
+ strh r1, [r0]
+ ldr r0, [sp, #0x24]
+ add r1, r6, #0
+ bl MOD15_021D9C30
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x18]
+ ldr r0, [r0, #4]
+ bl MOD15_021D8708
+ add r3, r0, #0
+ ldr r0, _021D9B00 ; =0x0000FFFF
+ cmp r3, r0
+ beq _021D9AC6
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x24]
+ add r2, r6, #0
+ bl MOD15_021D9C58
+_021D9AC6:
+ ldr r0, [sp, #0x18]
+ add r7, r7, #4
+ add r0, r0, #1
+ add r6, r6, #4
+ str r0, [sp, #0x18]
+ add r5, #0x64
+ b _021D9ADE
+_021D9AD4:
+ add r4, #0x10
+ mov r5, #0
+ b _021D9ADE
+_021D9ADA:
+ mov r0, #0
+ str r0, [sp, #0x14]
+_021D9ADE:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ bne _021D9A46
+ ldr r0, [sp, #0x10]
+ add r0, #0x64
+ str r0, [sp, #0x10]
+ bl MOD15_021D9B30
+ ldr r0, [sp, #0x1c]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x18]
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9AFC: .word 0x0003040D
+_021D9B00: .word 0x0000FFFF
+
+ thumb_func_start MOD15_021D9B04
+MOD15_021D9B04: ; 0x021D9B04
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #4]
+ mov r1, #0x23
+ bl MOD15_021D8720
+ str r0, [r4]
+ bl FUN_02021F2C
+ str r0, [r4, #4]
+ ldrh r1, [r0]
+ ldr r0, _021D9B2C ; =0x0000FFFE
+ cmp r1, r0
+ bne _021D9B26
+ mov r0, #1
+ str r0, [r4, #8]
+ pop {r4, pc}
+_021D9B26:
+ mov r0, #0
+ str r0, [r4, #8]
+ pop {r4, pc}
+ .align 2, 0
+_021D9B2C: .word 0x0000FFFE
+
+ thumb_func_start MOD15_021D9B30
+MOD15_021D9B30: ; 0x021D9B30
+ ldr r3, _021D9B38 ; =0x02021A21
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D9B38: .word 0x02021A21
+
+ thumb_func_start MOD15_021D9B3C
+MOD15_021D9B3C: ; 0x021D9B3C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ str r1, [sp]
+ mov ip, r0
+ ldr r0, [r4, #8]
+ cmp r0, #3
+ bhi _021D9BCC
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D9B58: ; jump table
+ .short _021D9B60 - _021D9B58 - 2 ; case 0
+ .short _021D9BB6 - _021D9B58 - 2 ; case 1
+ .short _021D9BC2 - _021D9B58 - 2 ; case 2
+ .short _021D9BCC - _021D9B58 - 2 ; case 3
+_021D9B60:
+ cmp r0, #0
+ bne _021D9B9C
+ ldr r6, _021D9C04 ; =0x0000FFFE
+ mov r3, #0xe
+ mov r0, #1
+ mov r1, #3
+ mov r2, #2
+ add r7, r6, #1
+ lsl r3, r3, #0xc
+_021D9B72:
+ ldr r5, [r4, #4]
+ ldrh r5, [r5]
+ cmp r5, r3
+ beq _021D9B84
+ cmp r5, r6
+ beq _021D9B8C
+ cmp r5, r7
+ beq _021D9B88
+ b _021D9B90
+_021D9B84:
+ str r2, [r4, #8]
+ b _021D9B96
+_021D9B88:
+ str r1, [r4, #8]
+ b _021D9B96
+_021D9B8C:
+ str r0, [r4, #8]
+ b _021D9B96
+_021D9B90:
+ ldr r5, [r4, #4]
+ add r5, r5, #2
+ str r5, [r4, #4]
+_021D9B96:
+ ldr r5, [r4, #8]
+ cmp r5, #0
+ beq _021D9B72
+_021D9B9C:
+ ldr r3, [r4, #4]
+ mov r2, ip
+ sub r3, r3, r2
+ lsr r2, r3, #0x1f
+ add r2, r3, r2
+ asr r2, r2, #1
+ ldr r0, [sp]
+ mov r1, ip
+ add r2, r2, #1
+ bl FUN_02021E8C
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9BB6:
+ mov r0, ip
+ bl FUN_0201B8B8
+ str r0, [r4, #4]
+ mov r0, #1
+ b _021D9BD0
+_021D9BC2:
+ mov r0, ip
+ add r0, r0, #2
+ str r0, [r4, #4]
+ mov r0, #2
+ b _021D9BD0
+_021D9BCC:
+ mov r0, #3
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9BD0:
+ ldr r1, [r4, #4]
+ ldrh r2, [r1]
+ mov r1, #0xe
+ lsl r1, r1, #0xc
+ cmp r2, r1
+ beq _021D9BEA
+ ldr r1, _021D9C04 ; =0x0000FFFE
+ cmp r2, r1
+ beq _021D9BF6
+ add r1, r1, #1
+ cmp r2, r1
+ beq _021D9BF0
+ b _021D9BFC
+_021D9BEA:
+ mov r1, #2
+ str r1, [r4, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9BF0:
+ mov r1, #3
+ str r1, [r4, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9BF6:
+ mov r1, #1
+ str r1, [r4, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9BFC:
+ mov r1, #0
+ str r1, [r4, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9C04: .word 0x0000FFFE
+
+ thumb_func_start MOD15_021D9C08
+MOD15_021D9C08: ; 0x021D9C08
+ mov r2, #0
+ ldrsh r2, [r0, r2]
+ sub r2, #0x30
+ strh r2, [r1]
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ sub r0, #8
+ strh r0, [r1, #2]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9C1C
+MOD15_021D9C1C: ; 0x021D9C1C
+ mov r2, #0
+ ldrsh r2, [r0, r2]
+ add r2, #0x18
+ strh r2, [r1]
+ mov r2, #2
+ ldrsh r0, [r0, r2]
+ add r0, #8
+ strh r0, [r1, #2]
+ bx lr
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9C30
+MOD15_021D9C30: ; 0x021D9C30
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r0, r1, #0
+ add r1, sp, #8
+ bl MOD15_021D9C08
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r3, sp, #8
+ ldrh r2, [r3]
+ ldrh r3, [r3, #2]
+ add r0, r4, #0
+ mov r1, #0xe
+ bl FUN_020196F4
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD15_021D9C58
+MOD15_021D9C58: ; 0x021D9C58
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, _021D9CA8 ; =0x0000FFFF
+ add r6, r3, #0
+ add r4, r1, #0
+ cmp r6, r0
+ beq _021D9CA2
+ add r0, r2, #0
+ add r1, sp, #0x10
+ bl MOD15_021D9C08
+ ldr r1, [r5, #0x4c]
+ add r0, r6, #0
+ bl FUN_02013A58
+ ldr r1, [r5, #0x4c]
+ mov r0, #1
+ mov r2, #0
+ bl FUN_02002E14
+ add r3, sp, #0x10
+ mov r0, #2
+ ldrsh r0, [r3, r0]
+ mov r6, #0
+ mov r1, #1
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9CAC ; =0x0005060E
+ str r0, [sp, #8]
+ str r6, [sp, #0xc]
+ ldrsh r3, [r3, r6]
+ ldr r2, [r5, #0x4c]
+ add r0, r4, #0
+ bl FUN_0201BDE0
+_021D9CA2:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D9CA8: .word 0x0000FFFF
+_021D9CAC: .word 0x0005060E
+
+ thumb_func_start MOD15_021D9CB0
+MOD15_021D9CB0: ; 0x021D9CB0
+ ldr r0, [r0, #0x5c]
+ bx lr
+
+ thumb_func_start MOD15_021D9CB4
+MOD15_021D9CB4: ; 0x021D9CB4
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ add r5, r1, #0
+ add r0, #0x1c
+ mov r1, #9
+ bl FUN_02019620
+ cmp r5, #3
+ bhi _021D9DB0
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9CD4: ; jump table
+ .short _021D9CDC - _021D9CD4 - 2 ; case 0
+ .short _021D9D66 - _021D9CD4 - 2 ; case 1
+ .short _021D9D40 - _021D9CD4 - 2 ; case 2
+ .short _021D9D8C - _021D9CD4 - 2 ; case 3
+_021D9CDC:
+ mov r0, #2
+ mov r1, #0x3c
+ mov r2, #0
+ bl FUN_0200AA90
+ add r5, r0, #0
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ mov r1, #0
+ bl FUN_020219F4
+ mov r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r2, r1, #0
+ bl FUN_0200AEE0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E8
+ add r1, r0, #0
+ ldr r0, [r4, #0x48]
+ ldr r2, [r4, #0x4c]
+ bl FUN_0200A8E0
+ ldr r2, [r4, #0x4c]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_0200B7B8
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9DBC ; =0x00010209
+ mov r1, #1
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x1c
+ add r2, r6, #0
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r5, #0
+ bl FUN_0200AB18
+ b _021D9DB0
+_021D9D40:
+ ldr r0, [r4, #0x48]
+ ldr r2, [r4, #0x4c]
+ mov r1, #6
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9DBC ; =0x00010209
+ mov r1, #1
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x4c]
+ add r0, #0x1c
+ bl FUN_0201BDE0
+ b _021D9DB0
+_021D9D66:
+ ldr r0, [r4, #0x48]
+ ldr r2, [r4, #0x4c]
+ mov r1, #7
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9DBC ; =0x00010209
+ mov r1, #1
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x4c]
+ add r0, #0x1c
+ bl FUN_0201BDE0
+ b _021D9DB0
+_021D9D8C:
+ ldr r0, [r4, #0x48]
+ ldr r2, [r4, #0x4c]
+ mov r1, #8
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9DBC ; =0x00010209
+ mov r1, #1
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x4c]
+ add r0, #0x1c
+ bl FUN_0201BDE0
+_021D9DB0:
+ add r4, #0x1c
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D9DBC: .word 0x00010209
+
+ thumb_func_start MOD15_021D9DC0
+MOD15_021D9DC0: ; 0x021D9DC0
+ ldr r3, _021D9DC8 ; =MOD15_021D9E98
+ mov r1, #0
+ bx r3
+ nop
+_021D9DC8: .word MOD15_021D9E98
+
+ thumb_func_start MOD15_021D9DCC
+MOD15_021D9DCC: ; 0x021D9DCC
+ ldr r3, _021D9DD4 ; =MOD15_021D9E98
+ mov r1, #1
+ bx r3
+ nop
+_021D9DD4: .word MOD15_021D9E98
+
+ thumb_func_start MOD15_021D9DD8
+MOD15_021D9DD8: ; 0x021D9DD8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x3c]
+ bl FUN_020200A0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD15_021D9E98
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9DEC
+MOD15_021D9DEC: ; 0x021D9DEC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E4
+ cmp r0, #2
+ bne _021D9E0A
+ ldr r0, [r4, #0x40]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r4, #0x44]
+ mov r1, #0
+ bl FUN_020200A0
+_021D9E0A:
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9E0C
+MOD15_021D9E0C: ; 0x021D9E0C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86E4
+ cmp r0, #2
+ bne _021D9E3A
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r4, #0x44]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r4, #0x40]
+ mov r1, #0xd
+ bl FUN_02020130
+ ldr r0, [r4, #0x44]
+ mov r1, #0xc
+ bl FUN_02020130
+_021D9E3A:
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9E3C
+MOD15_021D9E3C: ; 0x021D9E3C
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ ldr r0, [r4, #0x5c]
+ cmp r0, #0
+ beq _021D9E6C
+ add r2, r4, #0
+ lsl r0, r1, #2
+ add r2, #0x54
+ add r0, r2, r0
+ add r1, sp, #0
+ bl MOD15_021D9C1C
+ add r1, sp, #0
+ mov r2, #0
+ ldrsh r0, [r1, r2]
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #2
+ ldrsh r0, [r1, r0]
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ b _021D9E84
+_021D9E6C:
+ mov r0, #2
+ lsl r0, r0, #0x12
+ str r0, [sp, #4]
+ mov r0, #6
+ lsl r0, r0, #0xe
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x3c]
+ add r1, sp, #4
+ bl FUN_02020044
+_021D9E84:
+ ldr r0, [r4, #0x3c]
+ add r1, sp, #4
+ bl FUN_02020044
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD15_021D9E98
+ add sp, #0x10
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021D9E98
+MOD15_021D9E98: ; 0x021D9E98
+ push {r3, lr}
+ ldr r2, [r0, #0x5c]
+ cmp r2, #0
+ beq _021D9EB6
+ cmp r1, #0
+ ldr r0, [r0, #0x3c]
+ beq _021D9EAE
+ mov r1, #0
+ bl FUN_02020130
+ pop {r3, pc}
+_021D9EAE:
+ mov r1, #1
+ bl FUN_02020130
+ pop {r3, pc}
+_021D9EB6:
+ cmp r1, #0
+ ldr r0, [r0, #0x3c]
+ beq _021D9EC4
+ mov r1, #0xe
+ bl FUN_02020130
+ pop {r3, pc}
+_021D9EC4:
+ mov r1, #0xf
+ bl FUN_02020130
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021D9ECC
+MOD15_021D9ECC: ; 0x021D9ECC
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x2c
+ mov r1, #9
+ bl FUN_02019620
+ ldr r0, [r5, #0x48]
+ ldr r2, [r5, #0x4c]
+ mov r1, #9
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9F54 ; =0x00010209
+ mov r3, #0xe
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ ldr r2, [r5, #0x4c]
+ add r0, #0x2c
+ bl FUN_0201BDE0
+ ldr r0, [r5, #0x48]
+ ldr r2, [r5, #0x4c]
+ mov r1, #0xa
+ bl FUN_0200A8E0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9F54 ; =0x00010209
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ ldr r2, [r5, #0x4c]
+ add r0, #0x2c
+ mov r3, #0xe
+ bl FUN_0201BDE0
+ ldr r2, [r5, #0x60]
+ add r0, r5, #0
+ lsl r2, r2, #0x10
+ add r0, #0x2c
+ mov r1, #0
+ lsr r2, r2, #0x10
+ mov r3, #0xe
+ bl FUN_0200CCA4
+ add r1, r5, #0
+ ldr r0, [r5, #0x50]
+ add r1, #0x2c
+ mov r2, #0
+ lsl r3, r4, #4
+ bl FUN_020136F8
+ add r5, #0x2c
+ add r0, r5, #0
+ bl FUN_020191D0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021D9F54: .word 0x00010209
+
+ thumb_func_start MOD15_021D9F58
+MOD15_021D9F58: ; 0x021D9F58
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0xe
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0
+ add r4, r1, #0
+ add r0, #0x2c
+ mov r1, #9
+ add r3, r2, #0
+ bl FUN_020196F4
+ ldr r0, [r5, #0x50]
+ add r5, #0x2c
+ add r1, r5, #0
+ mov r2, #0
+ lsl r3, r4, #4
+ bl FUN_020136F8
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021D9F88
+MOD15_021D9F88: ; 0x021D9F88
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x2c
+ mov r1, #0
+ bl FUN_0200CCF8
+ add r4, #0x2c
+ add r0, r4, #0
+ bl FUN_02019570
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9FA0
+MOD15_021D9FA0: ; 0x021D9FA0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #0x23
+ mov r1, #0x10
+ add r6, r2, #0
+ bl FUN_02016998
+ str r5, [r0]
+ str r4, [r0, #4]
+ str r6, [r0, #8]
+ mov r1, #0
+ str r1, [r0, #0xc]
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD15_021D9FBC
+MOD15_021D9FBC: ; 0x021D9FBC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021D9FCA
+ bl FUN_0201FFC8
+_021D9FCA:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021D9FD4
+MOD15_021D9FD4: ; 0x021D9FD4
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5]
+ bl MOD15_021D9548
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x4c
+ mov r1, #4
+ add r2, r4, #0
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x4c
+ mov r1, #5
+ add r2, r4, #0
+ mov r3, #3
+ bl FUN_0200687C
+ ldr r1, _021DA03C ; =0x021DBA00
+ add r0, r4, #0
+ mov r2, #0
+ bl MOD15_021DA044
+ ldr r1, _021DA040 ; =0x021DBA08
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD15_021DA044
+ add r0, r5, #0
+ bl MOD15_021DA0B8
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02017CD0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DA03C: .word 0x021DBA00
+_021DA040: .word 0x021DBA08
+
+ thumb_func_start MOD15_021DA044
+MOD15_021DA044: ; 0x021DA044
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r5, r1, #0
+ add r4, r2, #0
+ add r1, sp, #0x10
+ add r2, r5, #0
+ bl FUN_02019150
+ add r0, sp, #0x10
+ bl FUN_02019270
+ add r0, sp, #0x10
+ mov r1, #0xe
+ bl FUN_02019620
+ ldr r1, _021DA0B0 ; =0x00000183
+ mov r0, #0x1a
+ add r2, r4, #0
+ mov r3, #0x23
+ bl FUN_0200A738
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ ldrb r1, [r5, #3]
+ add r2, r4, #0
+ lsl r1, r1, #3
+ sub r0, r1, r0
+ mov r1, #0
+ lsr r3, r0, #1
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DA0B4 ; =0x0001020E
+ str r0, [sp, #8]
+ add r0, sp, #0x10
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, sp, #0x10
+ bl FUN_02019548
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, sp, #0x10
+ bl FUN_02019178
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ nop
+_021DA0B0: .word 0x00000183
+_021DA0B4: .word 0x0001020E
+
+ thumb_func_start MOD15_021DA0B8
+MOD15_021DA0B8: ; 0x021DA0B8
+ push {r3, r4, lr}
+ sub sp, #0x2c
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0
+ mov r3, #3
+ bl MOD15_021D9550
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0x40
+ mov r3, #0x38
+ bl MOD15_021D9594
+ str r0, [r4, #0xc]
+ mov r1, #2
+ bl FUN_02020130
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x2c
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA0F4
+MOD15_021DA0F4: ; 0x021DA0F4
+ ldr r3, _021DA0FC ; =0x02020131
+ ldr r0, [r0, #0xc]
+ mov r1, #3
+ bx r3
+ .align 2, 0
+_021DA0FC: .word 0x02020131
+
+ thumb_func_start MOD15_021DA100
+MOD15_021DA100: ; 0x021DA100
+ ldr r3, _021DA108 ; =0x02020131
+ ldr r0, [r0, #0xc]
+ mov r1, #2
+ bx r3
+ .align 2, 0
+_021DA108: .word 0x02020131
+
+ thumb_func_start MOD15_021DA10C
+MOD15_021DA10C: ; 0x021DA10C
+ ldr r3, _021DA114 ; =0x020200A1
+ ldr r0, [r0, #0xc]
+ bx r3
+ nop
+_021DA114: .word 0x020200A1
+
+ thumb_func_start MOD15_021DA118
+MOD15_021DA118: ; 0x021DA118
+ ldr r3, _021DA120 ; =0x02020129
+ ldr r0, [r0, #0xc]
+ bx r3
+ nop
+_021DA120: .word 0x02020129
+
+ thumb_func_start MOD15_021DA124
+MOD15_021DA124: ; 0x021DA124
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp, #8]
+ cmp r1, #0
+ beq _021DA136
+ cmp r1, #1
+ beq _021DA144
+_021DA136:
+ mov r0, #1
+ lsl r0, r0, #0x12
+ str r0, [sp]
+ mov r0, #0xe
+ lsl r0, r0, #0xe
+ str r0, [sp, #4]
+ b _021DA150
+_021DA144:
+ mov r0, #3
+ lsl r0, r0, #0x12
+ str r0, [sp]
+ mov r0, #0xe
+ lsl r0, r0, #0xe
+ str r0, [sp, #4]
+_021DA150:
+ ldr r0, [r4, #0xc]
+ add r1, sp, #0
+ bl FUN_02020044
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl FUN_02020130
+ add sp, #0xc
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD15_021DA164
+MOD15_021DA164: ; 0x021DA164
+ push {r3, lr}
+ ldr r0, [r0]
+ bl MOD15_021D9548
+ mov r1, #3
+ add r2, r1, #0
+ mov r3, #0x40
+ bl FUN_020179E0
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA178
+MOD15_021DA178: ; 0x021DA178
+ push {r3, lr}
+ ldr r0, [r0]
+ bl MOD15_021D9548
+ mov r1, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA18C
+MOD15_021DA18C: ; 0x021DA18C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x23
+ mov r1, #0x60
+ add r7, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ str r7, [r4, #8]
+ add r0, r5, #0
+ bl MOD15_021D9548
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x5c]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD15_021DA1B8
+MOD15_021DA1B8: ; 0x021DA1B8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x5c]
+ cmp r0, #0
+ beq _021DA1C6
+ bl FUN_0201FFC8
+_021DA1C6:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA1D0
+MOD15_021DA1D0: ; 0x021DA1D0
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5]
+ bl MOD15_021D9548
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x4c
+ mov r1, #2
+ add r2, r4, #0
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ mov r0, #0x4c
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_0200687C
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ lsr r2, r2, #5
+ bl MOD15_021DA2AC
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD15_021DA3B4
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD15_021DA480
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #1
+ sub r3, r2, #4
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #3
+ mov r3, #2
+ bl FUN_020179E0
+ add r0, r5, #0
+ bl MOD15_021DA54C
+ mov r1, #2
+ add r2, r1, #0
+ ldr r0, _021DA2A0 ; =0x04000050
+ sub r2, #0xc
+ bl G2x_SetBlendBrightness_
+ ldr r0, _021DA2A4 ; =0x04000048
+ mov r2, #0x3f
+ ldrh r3, [r0]
+ mov r1, #0x1f
+ bic r3, r2
+ orr r3, r1
+ mov r1, #0x20
+ orr r3, r1
+ strh r3, [r0]
+ ldrh r3, [r0, #2]
+ bic r3, r2
+ mov r2, #0x1d
+ orr r2, r3
+ orr r2, r1
+ strh r2, [r0, #2]
+ add r2, r0, #0
+ mov r3, #0xff
+ sub r2, #8
+ strh r3, [r2]
+ mov r2, #0xa0
+ sub r0, r0, #4
+ strh r2, [r0]
+ lsl r3, r1, #0x15
+ ldr r2, [r3]
+ ldr r0, _021DA2A8 ; =0xFFFF1FFF
+ and r2, r0
+ lsl r0, r1, #8
+ orr r0, r2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02017CD0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021DA2A0: .word 0x04000050
+_021DA2A4: .word 0x04000048
+_021DA2A8: .word 0xFFFF1FFF
+
+ thumb_func_start MOD15_021DA2AC
+MOD15_021DA2AC: ; 0x021DA2AC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r6, r2, #0
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r2, _021DA3A4 ; =0x00000181
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #0x23
+ bl FUN_0200A86C
+ str r0, [sp, #0x20]
+ mov r0, #9
+ mov r7, #1
+ str r0, [sp, #0x24]
+ mov r4, #0
+_021DA2CC:
+ cmp r4, #0
+ beq _021DA2E4
+ add r0, r4, #0
+ mov r1, #3
+ bl _s32_div_f
+ cmp r1, #0
+ bne _021DA2E4
+ ldr r0, [sp, #0x24]
+ mov r7, #1
+ add r0, r0, #3
+ str r0, [sp, #0x24]
+_021DA2E4:
+ ldr r0, [sp, #0x14]
+ add r1, r4, #0
+ ldr r0, [r0, #8]
+ bl FUN_020892C4
+ cmp r0, #0
+ beq _021DA302
+ ldr r0, [sp, #0x20]
+ add r1, r4, #0
+ bl FUN_0200A914
+ add r5, r0, #0
+ ldr r0, _021DA3A8 ; =0x0001020F
+ str r0, [sp, #0x1c]
+ b _021DA310
+_021DA302:
+ ldr r0, [sp, #0x20]
+ mov r1, #0xc
+ bl FUN_0200A914
+ add r5, r0, #0
+ ldr r0, _021DA3AC ; =0x0003040F
+ str r0, [sp, #0x1c]
+_021DA310:
+ ldr r0, _021DA3B0 ; =0x000003EE
+ cmp r6, r0
+ blo _021DA31A
+ bl ErrorHandling
+_021DA31A:
+ ldr r0, [sp, #0x24]
+ lsl r3, r7, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #9
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x18]
+ add r1, sp, #0x28
+ mov r2, #1
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ add r0, sp, #0x28
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x48
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x1c]
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, sp, #0x28
+ add r2, r5, #0
+ bl FUN_0201BDE0
+ add r0, sp, #0x28
+ bl FUN_02019270
+ add r0, sp, #0x28
+ bl FUN_02019548
+ add r0, r5, #0
+ bl FUN_02021A20
+ add r0, sp, #0x28
+ bl FUN_02019178
+ add r4, r4, #1
+ add r6, #0x12
+ add r7, #0xa
+ cmp r4, #0xc
+ blt _021DA2CC
+ ldr r0, [sp, #0x20]
+ bl FUN_0200A8B8
+ add r0, r6, #0
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DA3A4: .word 0x00000181
+_021DA3A8: .word 0x0001020F
+_021DA3AC: .word 0x0003040F
+_021DA3B0: .word 0x000003EE
+
+ thumb_func_start MOD15_021DA3B4
+MOD15_021DA3B4: ; 0x021DA3B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r4, r1, #0
+ mov r1, #0xce
+ add r6, r0, #0
+ lsl r1, r1, #2
+ add r0, r2, #0
+ str r2, [sp, #0x14]
+ cmp r0, r1
+ blo _021DA3CC
+ bl ErrorHandling
+_021DA3CC:
+ mov r0, #0xa
+ str r0, [sp]
+ mov r0, #0x19
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ add r1, sp, #0x20
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ mov r2, #1
+ mov r3, #0x22
+ bl FUN_02019064
+ mov r0, #4
+ mov r1, #0x23
+ bl FUN_020219F4
+ add r4, r0, #0
+ add r0, sp, #0x20
+ mov r1, #0xf
+ bl FUN_02019620
+ bl MOD15_021DB770
+ add r7, r0, #0
+ ldr r5, _021DA474 ; =0x00000000
+ beq _021DA452
+_021DA40C:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD15_021DB774
+ add r0, r5, #0
+ add r1, sp, #0x1c
+ add r2, sp, #0x18
+ bl MOD15_021DB798
+ ldr r0, [r6, #8]
+ add r1, r5, #0
+ bl FUN_02089300
+ cmp r0, #0
+ beq _021DA42E
+ ldr r1, _021DA478 ; =0x0001020F
+ b _021DA430
+_021DA42E:
+ ldr r1, _021DA47C ; =0x0003040F
+_021DA430:
+ ldr r0, [sp, #0x18]
+ add r2, r4, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r3, [sp, #0x1c]
+ add r0, sp, #0x20
+ mov r1, #0
+ add r3, r3, #3
+ bl FUN_0201BDE0
+ add r5, r5, #1
+ cmp r5, r7
+ blo _021DA40C
+_021DA452:
+ add r0, sp, #0x20
+ bl FUN_02019548
+ add r0, sp, #0x20
+ bl FUN_02019270
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, sp, #0x20
+ bl FUN_02019178
+ ldr r0, [sp, #0x14]
+ add r0, #0xc8
+ str r0, [sp, #0x14]
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DA474: .word 0x00000000
+_021DA478: .word 0x0001020F
+_021DA47C: .word 0x0003040F
+
+ thumb_func_start MOD15_021DA480
+MOD15_021DA480: ; 0x021DA480
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r2, #0
+ str r1, [sp, #0x14]
+ ldr r2, _021DA540 ; =0x00000181
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #0x23
+ bl FUN_0200A86C
+ mov r1, #0xd
+ str r0, [sp, #0x20]
+ bl FUN_0200A914
+ str r0, [sp, #0x1c]
+ mov r0, #0
+ ldr r1, [sp, #0x1c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x40
+ sub r0, r1, r0
+ lsr r0, r0, #1
+ ldr r4, _021DA544 ; =0x021DBA10
+ str r0, [sp, #0x18]
+ mov r7, #0
+ add r6, sp, #0x24
+_021DA4B6:
+ mov r0, #0x3f
+ lsl r0, r0, #4
+ cmp r5, r0
+ blo _021DA4C2
+ bl ErrorHandling
+_021DA4C2:
+ ldrh r0, [r4, #2]
+ add r1, r6, #0
+ mov r2, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xb
+ str r0, [sp, #0xc]
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldrh r3, [r4]
+ ldr r0, [sp, #0x14]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ add r0, r6, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DA548 ; =0x0001020F
+ ldr r2, [sp, #0x1c]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r3, [sp, #0x18]
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02019270
+ add r0, r6, #0
+ bl FUN_02019548
+ add r0, r6, #0
+ bl FUN_02019178
+ add r7, r7, #1
+ add r5, #0x10
+ add r4, r4, #4
+ cmp r7, #2
+ blo _021DA4B6
+ ldr r0, [sp, #0x1c]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x20]
+ bl FUN_0200A8B8
+ add r0, r5, #0
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DA540: .word 0x00000181
+_021DA544: .word 0x021DBA10
+_021DA548: .word 0x0001020F
+
+ thumb_func_start MOD15_021DA54C
+MOD15_021DA54C: ; 0x021DA54C
+ push {r3, r4, lr}
+ sub sp, #0x2c
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0
+ mov r3, #1
+ bl MOD15_021D9550
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0x30
+ mov r3, #0x36
+ bl MOD15_021D9594
+ str r0, [r4, #0x5c]
+ mov r1, #4
+ bl FUN_02020130
+ ldr r0, [r4, #0x5c]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x2c
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA588
+MOD15_021DA588: ; 0x021DA588
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x5c]
+ add r4, r1, #0
+ bl FUN_020200A0
+ cmp r4, #0
+ beq _021DA5B2
+ ldr r0, [r5, #4]
+ bl MOD15_021D86F4
+ cmp r0, #0
+ ldr r0, [r5, #0x5c]
+ bne _021DA5AC
+ mov r1, #4
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DA5AC:
+ mov r1, #6
+ bl FUN_02020130
+_021DA5B2:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021DA5B4
+MOD15_021DA5B4: ; 0x021DA5B4
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ add r5, r1, #0
+ bl MOD15_021D86F4
+ mov r1, #0
+ str r1, [sp, #0x10]
+ cmp r5, #0xfe
+ bne _021DA5D6
+ mov r0, #0x84
+ str r0, [sp, #8]
+ mov r0, #0x96
+ str r0, [sp, #0xc]
+ mov r5, #0x10
+ b _021DA616
+_021DA5D6:
+ cmp r0, #0
+ bne _021DA5FE
+ add r0, r5, #0
+ mov r1, #3
+ bl _u32_div_f
+ mov r0, #0x50
+ mul r0, r1
+ add r0, #0x30
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r1, #3
+ bl _u32_div_f
+ mov r1, #0x18
+ mul r1, r0
+ add r1, #0x36
+ str r1, [sp, #0xc]
+ mov r5, #4
+ b _021DA616
+_021DA5FE:
+ add r0, r5, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD15_021DB798
+ ldr r0, [sp, #4]
+ mov r5, #6
+ add r0, #0x1a
+ str r0, [sp, #8]
+ ldr r0, [sp]
+ add r0, #0x3e
+ str r0, [sp, #0xc]
+_021DA616:
+ ldr r0, [sp, #8]
+ add r1, sp, #8
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x5c]
+ bl FUN_02020044
+ ldr r0, [r4, #0x5c]
+ add r1, r5, #0
+ bl FUN_02020130
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA638
+MOD15_021DA638: ; 0x021DA638
+ push {r3, lr}
+ mov r3, #0
+ str r3, [r0, #0x14]
+ mov r1, #0x10
+ str r1, [sp]
+ mov r1, #2
+ add r2, r1, #0
+ add r0, #0x1c
+ sub r2, #0xc
+ bl MOD15_021DB6DC
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA650
+MOD15_021DA650: ; 0x021DA650
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021DA662
+ cmp r0, #1
+ beq _021DA68C
+ b _021DA698
+_021DA662:
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD15_021DB71C
+ cmp r0, #0
+ beq _021DA698
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #1
+ ldr r1, [r4, #0xc]
+ add r0, #0x3c
+ add r3, r2, #0
+ bl MOD15_021DB564
+ ldr r0, [r4, #0x14]
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ b _021DA698
+_021DA68C:
+ add r4, #0x3c
+ add r0, r4, #0
+ bl MOD15_021DB5B8
+ add sp, #8
+ pop {r4, pc}
+_021DA698:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA6A0
+MOD15_021DA6A0: ; 0x021DA6A0
+ push {r3, lr}
+ sub sp, #8
+ add r1, r0, #0
+ mov r0, #0
+ str r0, [r1, #0x14]
+ sub r0, #0x18
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ add r0, r1, #0
+ mov r2, #1
+ ldr r1, [r1, #0xc]
+ add r0, #0x3c
+ add r3, r2, #0
+ bl MOD15_021DB564
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA6C4
+MOD15_021DA6C4: ; 0x021DA6C4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021DA6D6
+ cmp r0, #1
+ beq _021DA6FE
+ b _021DA70A
+_021DA6D6:
+ add r0, r4, #0
+ add r0, #0x3c
+ bl MOD15_021DB5B8
+ cmp r0, #0
+ beq _021DA70A
+ mov r0, #0x10
+ mov r2, #0
+ str r0, [sp]
+ add r0, r4, #0
+ add r3, r2, #0
+ add r0, #0x1c
+ mov r1, #2
+ sub r3, #0xa
+ bl MOD15_021DB6DC
+ ldr r0, [r4, #0x14]
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ b _021DA70A
+_021DA6FE:
+ add r4, #0x1c
+ add r0, r4, #0
+ bl MOD15_021DB71C
+ add sp, #4
+ pop {r3, r4, pc}
+_021DA70A:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD15_021DA710
+MOD15_021DA710: ; 0x021DA710
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ mov r1, #1
+ mov r2, #3
+ mov r3, #2
+ bl FUN_020179E0
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA720
+MOD15_021DA720: ; 0x021DA720
+ push {r3, lr}
+ mov r2, #0
+ mov r1, #0x10
+ add r3, r2, #0
+ str r1, [sp]
+ add r0, #0x1c
+ mov r1, #2
+ sub r3, #0xa
+ bl MOD15_021DB6DC
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA738
+MOD15_021DA738: ; 0x021DA738
+ ldr r3, _021DA740 ; =MOD15_021DB71C
+ add r0, #0x1c
+ bx r3
+ nop
+_021DA740: .word MOD15_021DB71C
+
+ thumb_func_start MOD15_021DA744
+MOD15_021DA744: ; 0x021DA744
+ push {r3, lr}
+ sub sp, #8
+ mov r1, #0
+ str r1, [sp]
+ mov r1, #0xc
+ str r1, [sp, #4]
+ add r0, #0x1c
+ mov r1, #2
+ mov r2, #0x3f
+ mov r3, #0x7c
+ bl MOD15_021DB648
+ add sp, #8
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA760
+MOD15_021DA760: ; 0x021DA760
+ push {r3, lr}
+ add r0, #0x1c
+ bl MOD15_021DB678
+ cmp r0, #0
+ beq _021DA778
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #1
+ pop {r3, pc}
+_021DA778:
+ mov r0, #0
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DA77C
+MOD15_021DA77C: ; 0x021DA77C
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021DA7B4 ; =0x04000050
+ mov r1, #2
+ mov r2, #0x3f
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201797C
+ mov r0, #0x7c
+ str r0, [sp]
+ mov r0, #0xc
+ add r4, #0x1c
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #0x3f
+ mov r3, #0
+ bl MOD15_021DB648
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_021DA7B4: .word 0x04000050
+
+ thumb_func_start MOD15_021DA7B8
+MOD15_021DA7B8: ; 0x021DA7B8
+ ldr r3, _021DA7C0 ; =MOD15_021DB678
+ add r0, #0x1c
+ bx r3
+ nop
+_021DA7C0: .word MOD15_021DB678
+
+ thumb_func_start MOD15_021DA7C4
+MOD15_021DA7C4: ; 0x021DA7C4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86F4
+ cmp r0, #0
+ bne _021DA7D8
+ mov r3, #3
+ mvn r3, r3
+ b _021DA7DA
+_021DA7D8:
+ mov r3, #0xfc
+_021DA7DA:
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ mov r2, #0
+ bl FUN_020179E0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA7E8
+MOD15_021DA7E8: ; 0x021DA7E8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD15_021D86F4
+ cmp r0, #0
+ bne _021DA7FE
+ mov r0, #0xff
+ mvn r0, r0
+ b _021DA802
+_021DA7FE:
+ mov r0, #1
+ lsl r0, r0, #8
+_021DA802:
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x3c
+ mov r2, #1
+ mov r3, #0
+ bl MOD15_021DB564
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA81C
+MOD15_021DA81C: ; 0x021DA81C
+ ldr r3, _021DA824 ; =MOD15_021DB5B8
+ add r0, #0x3c
+ bx r3
+ nop
+_021DA824: .word MOD15_021DB5B8
+
+ thumb_func_start MOD15_021DA828
+MOD15_021DA828: ; 0x021DA828
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x23
+ mov r1, #0x94
+ add r7, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ str r7, [r4, #8]
+ add r0, r5, #0
+ bl MOD15_021D9548
+ str r0, [r4, #0xc]
+ mov r0, #0x20
+ mov r1, #0x23
+ bl FUN_020219F4
+ str r0, [r4, #0x3c]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x1a
+ str r0, [sp, #4]
+ mov r0, #0x20
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x10
+ mov r2, #2
+ mov r3, #4
+ bl FUN_02019064
+ mov r3, #0
+ str r3, [sp]
+ mov r1, #0xc
+ str r1, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0x20
+ mov r2, #2
+ bl FUN_02019064
+ mov r0, #0
+ str r0, [r4, #0x30]
+ str r0, [r4, #0x34]
+ str r0, [r4, #0x38]
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA8A4
+MOD15_021DA8A4: ; 0x021DA8A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _021DA8B2
+ bl FUN_0201FFC8
+_021DA8B2:
+ ldr r0, [r4, #0x34]
+ cmp r0, #0
+ beq _021DA8BC
+ bl FUN_0201FFC8
+_021DA8BC:
+ ldr r0, [r4, #0x38]
+ cmp r0, #0
+ beq _021DA8C6
+ bl FUN_0201FFC8
+_021DA8C6:
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0
+ beq _021DA8D0
+ bl FUN_02021A20
+_021DA8D0:
+ add r0, r4, #0
+ add r0, #0x20
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x10
+ bl FUN_02019178
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021DA8E8
+MOD15_021DA8E8: ; 0x021DA8E8
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5]
+ bl MOD15_021D9548
+ add r4, r0, #0
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x23
+ bl FUN_02017F18
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_02018540
+ add r0, r5, #0
+ add r0, #0x10
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r0, #0x10
+ bl FUN_02019270
+ add r0, r5, #0
+ add r0, #0x10
+ bl FUN_02019548
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD15_021DA950
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA950
+MOD15_021DA950: ; 0x021DA950
+ push {r3, r4, lr}
+ sub sp, #0x2c
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0
+ mov r3, #2
+ bl MOD15_021D9550
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0x48
+ mov r3, #0x38
+ bl MOD15_021D9594
+ str r0, [r4, #0x30]
+ mov r1, #8
+ bl FUN_02020130
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0xf0
+ mov r3, #0x40
+ bl MOD15_021D9594
+ str r0, [r4, #0x34]
+ mov r1, #0xb
+ bl FUN_02020130
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #8
+ mov r2, #0xf0
+ mov r3, #0x90
+ bl MOD15_021D9594
+ str r0, [r4, #0x38]
+ mov r1, #0xa
+ bl FUN_02020130
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x2c
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DA9D4
+MOD15_021DA9D4: ; 0x021DA9D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r0, #0x10
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r6, #0
+ bl MOD15_021DAD78
+ ldr r0, [r6, #4]
+ bl MOD15_021D8744
+ add r7, r0, #0
+ cmp r7, #0xa
+ bls _021DA9F4
+ mov r7, #0xa
+_021DA9F4:
+ add r0, r6, #0
+ add r0, #0x8c
+ mov r5, #0
+ ldr r4, [r0]
+ cmp r7, #0
+ bls _021DAA18
+_021DAA00:
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD15_021DAD98
+ mov r0, #1
+ tst r0, r5
+ beq _021DAA12
+ add r4, #0x18
+_021DAA12:
+ add r5, r5, #1
+ cmp r5, r7
+ blo _021DAA00
+_021DAA18:
+ add r6, #0x10
+ add r0, r6, #0
+ bl FUN_02019548
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DAA24
+MOD15_021DAA24: ; 0x021DAA24
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021DAABC ; =0x04000050
+ mov r1, #4
+ mov r2, #0x3f
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ ldr r1, _021DAAC0 ; =0x04000048
+ ldr r0, _021DAAC4 ; =0xFFFFC0FF
+ ldrh r2, [r1]
+ mov r5, #0xff
+ and r2, r0
+ mov r0, #0x1f
+ lsl r0, r0, #8
+ orr r2, r0
+ lsr r0, r1, #0xd
+ orr r0, r2
+ strh r0, [r1]
+ add r0, r4, #0
+ ldrb r2, [r1, #2]
+ add r0, #0x84
+ strb r2, [r0]
+ add r0, r1, #0
+ sub r0, #0x48
+ mov r2, #0xe
+ ldr r3, [r0]
+ lsl r2, r2, #0xc
+ and r2, r3
+ lsr r3, r2, #0xd
+ add r2, r4, #0
+ add r2, #0x88
+ str r3, [r2]
+ ldrh r3, [r1, #2]
+ mov r2, #0x3f
+ bic r3, r2
+ mov r2, #0x1b
+ orr r3, r2
+ mov r2, #0x20
+ orr r3, r2
+ strh r3, [r1, #2]
+ sub r3, r1, #6
+ strh r5, [r3]
+ ldr r3, _021DAAC8 ; =0x00002EB0
+ sub r1, r1, #2
+ strh r3, [r1]
+ ldr r3, [r0]
+ ldr r1, _021DAACC ; =0xFFFF1FFF
+ and r3, r1
+ lsl r1, r2, #9
+ orr r1, r3
+ str r1, [r0]
+ add r0, r4, #0
+ mov r3, #0
+ add r0, #0x80
+ str r3, [r0]
+ mov r0, #0x7c
+ str r0, [sp]
+ mov r0, #0xc
+ add r4, #0x40
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #4
+ mov r2, #0x3f
+ bl MOD15_021DB648
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_021DAABC: .word 0x04000050
+_021DAAC0: .word 0x04000048
+_021DAAC4: .word 0xFFFFC0FF
+_021DAAC8: .word 0x00002EB0
+_021DAACC: .word 0xFFFF1FFF
+
+ thumb_func_start MOD15_021DAAD0
+MOD15_021DAAD0: ; 0x021DAAD0
+ push {r3, lr}
+ add r1, r0, #0
+ add r1, #0x80
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _021DAAEE
+ add r0, #0x40
+ bl MOD15_021DB678
+ cmp r0, #0
+ beq _021DAAEA
+ mov r0, #1
+ pop {r3, pc}
+_021DAAEA:
+ mov r0, #0
+ pop {r3, pc}
+_021DAAEE:
+ mov r0, #1
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DAAF4
+MOD15_021DAAF4: ; 0x021DAAF4
+ push {r3, lr}
+ sub sp, #8
+ add r1, r0, #0
+ mov r2, #0
+ add r1, #0x80
+ str r2, [r1]
+ str r2, [sp]
+ mov r1, #0xc
+ str r1, [sp, #4]
+ add r0, #0x40
+ mov r1, #4
+ mov r2, #0x3f
+ mov r3, #0x7c
+ bl MOD15_021DB648
+ add sp, #8
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DAB18
+MOD15_021DAB18: ; 0x021DAB18
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021DAB70
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD15_021DB678
+ cmp r0, #0
+ beq _021DAB74
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ ldr r0, _021DAB78 ; =0x0400004A
+ ldrh r2, [r0]
+ mov r0, #0x3f
+ bic r2, r0
+ add r0, r4, #0
+ add r0, #0x84
+ ldrb r0, [r0]
+ lsl r1, r0, #0x1b
+ lsr r1, r1, #0x1b
+ lsl r0, r0, #0x1a
+ orr r1, r2
+ lsr r0, r0, #0x1f
+ beq _021DAB56
+ mov r0, #0x20
+ orr r1, r0
+_021DAB56:
+ ldr r2, _021DAB78 ; =0x0400004A
+ ldr r0, _021DAB7C ; =0xFFFF1FFF
+ strh r1, [r2]
+ sub r2, #0x4a
+ ldr r1, [r2]
+ add r4, #0x88
+ and r1, r0
+ ldr r0, [r4]
+ lsl r0, r0, #0xd
+ orr r0, r1
+ str r0, [r2]
+ mov r0, #1
+ pop {r4, pc}
+_021DAB70:
+ mov r0, #1
+ pop {r4, pc}
+_021DAB74:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021DAB78: .word 0x0400004A
+_021DAB7C: .word 0xFFFF1FFF
+
+ thumb_func_start MOD15_021DAB80
+MOD15_021DAB80: ; 0x021DAB80
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ bl FUN_020200A0
+ cmp r4, #0
+ beq _021DABAE
+ ldr r0, [r5, #4]
+ bl MOD15_021D87AC
+ add r1, r0, #0
+ ldr r0, [r5, #0x34]
+ bl FUN_020200A0
+ ldr r0, [r5, #4]
+ bl MOD15_021D87C0
+ add r1, r0, #0
+ ldr r0, [r5, #0x38]
+ bl FUN_020200A0
+ pop {r3, r4, r5, pc}
+_021DABAE:
+ ldr r0, [r5, #0x34]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r5, #0x38]
+ mov r1, #0
+ bl FUN_020200A0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021DABC0
+MOD15_021DABC0: ; 0x021DABC0
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r2, r1, #0
+ mov r0, #1
+ and r2, r0
+ mov r0, #0x70
+ mul r0, r2
+ add r0, #0x48
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ lsr r1, r1, #1
+ mov r0, #0x18
+ mul r0, r1
+ add r0, #0x38
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x30]
+ add r1, sp, #0
+ bl FUN_02020044
+ ldr r0, [r4, #0x30]
+ mov r1, #8
+ bl FUN_02020130
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DABFC
+MOD15_021DABFC: ; 0x021DABFC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r7, r0, #0
+ add r4, r1, #0
+ bl MOD15_021DACEC
+ add r0, r7, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ lsl r6, r4, #1
+ str r0, [sp, #0x10]
+ add r0, r0, r6
+ str r0, [sp, #0x14]
+ mov r0, #0x18
+ mul r0, r4
+ str r0, [sp, #8]
+ add r0, r7, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ ldr r1, [sp, #8]
+ add r1, r0, r1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x18]
+ cmp r4, #0
+ bge _021DAC40
+ ldr r0, [sp, #0x14]
+ add r5, r1, #0
+ str r0, [sp, #0x10]
+ lsl r0, r4, #2
+ neg r0, r0
+ neg r6, r6
+ str r0, [sp, #0xc]
+ b _021DAC60
+_021DAC40:
+ add r0, #0x78
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r0, [sp, #0x10]
+ add r0, #0xa
+ str r0, [sp, #0x10]
+ ldr r0, [r7, #4]
+ bl MOD15_021D8744
+ ldr r1, [sp, #0x10]
+ add r1, r6, r1
+ cmp r1, r0
+ bls _021DAC5C
+ sub r6, r6, #1
+_021DAC5C:
+ lsl r0, r4, #2
+ str r0, [sp, #0xc]
+_021DAC60:
+ mov r4, #0
+ cmp r6, #0
+ ble _021DAC84
+_021DAC66:
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0
+ add r1, r1, r4
+ add r2, r5, #0
+ bl MOD15_021DAD98
+ mov r0, #1
+ tst r0, r4
+ beq _021DAC7E
+ add r5, #0x18
+ lsl r0, r5, #0x18
+ lsr r5, r0, #0x18
+_021DAC7E:
+ add r4, r4, #1
+ cmp r4, r6
+ blt _021DAC66
+_021DAC84:
+ add r1, r7, #0
+ ldr r0, [sp, #0x18]
+ add r1, #0x8c
+ str r0, [r1]
+ add r1, r7, #0
+ ldr r0, [sp, #0x14]
+ add r1, #0x90
+ str r0, [r1]
+ add r0, r7, #0
+ add r0, #0x10
+ bl FUN_02019548
+ ldr r0, [sp, #8]
+ mov r2, #2
+ str r0, [sp]
+ ldr r0, [sp, #0xc]
+ mov r3, #1
+ str r0, [sp, #4]
+ add r0, r7, #0
+ ldr r1, [r7, #0xc]
+ add r0, #0x60
+ bl MOD15_021DB564
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DACB8
+MOD15_021DACB8: ; 0x021DACB8
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x60
+ bl MOD15_021DB5B8
+ cmp r0, #0
+ beq _021DACE6
+ ldr r0, [r4, #4]
+ bl MOD15_021D87AC
+ add r1, r0, #0
+ ldr r0, [r4, #0x34]
+ bl FUN_020200A0
+ ldr r0, [r4, #4]
+ bl MOD15_021D87C0
+ add r1, r0, #0
+ ldr r0, [r4, #0x38]
+ bl FUN_020200A0
+ mov r0, #1
+ pop {r4, pc}
+_021DACE6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DACEC
+MOD15_021DACEC: ; 0x021DACEC
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ cmp r1, #0
+ ble _021DAD0C
+ add r0, #0x8c
+ ldr r0, [r0]
+ add r0, #0x78
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ mov r0, #0x18
+ mul r0, r1
+ add r0, r3, r0
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ b _021DAD1A
+_021DAD0C:
+ add r0, #0x8c
+ ldr r4, [r0]
+ mov r0, #0x18
+ mul r0, r1
+ add r0, r4, r0
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+_021DAD1A:
+ cmp r3, r4
+ bge _021DAD3E
+ mov r0, #0xd0
+ str r0, [sp]
+ sub r0, r4, r3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0
+ lsl r3, r3, #0x10
+ add r5, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r2, r1, #0
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_021DAD3E:
+ mov r0, #0xd0
+ str r0, [sp]
+ add r0, #0x30
+ sub r0, r0, r3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #0
+ lsl r3, r3, #0x10
+ add r0, #0x10
+ add r2, r1, #0
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0xd0
+ str r0, [sp]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ add r5, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD15_021DAD78
+MOD15_021DAD78: ; 0x021DAD78
+ push {r3, lr}
+ add r1, r0, #0
+ mov r2, #0x30
+ add r1, #0x8c
+ str r2, [r1]
+ add r1, r0, #0
+ mov r3, #0
+ add r1, #0x90
+ str r3, [r1]
+ ldr r0, [r0, #0xc]
+ mov r1, #2
+ mov r2, #3
+ bl FUN_020179E0
+ pop {r3, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DAD98
+MOD15_021DAD98: ; 0x021DAD98
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r4, r2, #0
+ ldr r0, [r5, #4]
+ ldr r2, [r5, #0x3c]
+ add r7, r1, #0
+ bl MOD15_021D8768
+ cmp r4, #0xf0
+ bhi _021DADD4
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DAE64 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ mov r3, #1
+ add r4, r7, #0
+ and r4, r3
+ mov r3, #0x70
+ ldr r2, [r5, #0x3c]
+ add r0, #0x10
+ mul r3, r4
+ bl FUN_0201BDE0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_021DADD4:
+ mov r0, #1
+ lsl r0, r0, #8
+ sub r6, r0, r4
+ add r0, r5, #0
+ add r0, #0x20
+ mov r1, #0
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DAE64 ; =0x00010200
+ add r3, r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ ldr r2, [r5, #0x3c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ mov r2, #0
+ mov r0, #1
+ add r1, r7, #0
+ and r1, r0
+ add r7, r1, #0
+ mov r0, #0x70
+ mul r7, r0
+ mov r0, #0x60
+ str r0, [sp]
+ mov r1, #0x10
+ str r1, [sp, #4]
+ lsl r1, r7, #0x10
+ lsr r1, r1, #0x10
+ str r1, [sp, #8]
+ lsl r1, r4, #0x10
+ lsr r1, r1, #0x10
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ ldr r1, [r5, #0x2c]
+ add r0, #0x10
+ add r3, r2, #0
+ bl FUN_02019658
+ mov r1, #0x60
+ lsl r2, r7, #0x10
+ lsl r3, r6, #0x10
+ str r1, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ lsr r2, r2, #0x10
+ str r2, [sp, #8]
+ mov r2, #0
+ sub r0, r0, r6
+ str r2, [sp, #0xc]
+ lsl r0, r0, #0x10
+ str r1, [sp, #0x10]
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ ldr r1, [r5, #0x2c]
+ add r0, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_02019658
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DAE64: .word 0x00010200
+
+ thumb_func_start MOD15_021DAE68
+MOD15_021DAE68: ; 0x021DAE68
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r1, #5
+ add r5, r0, #0
+ mov r0, #0x23
+ lsl r1, r1, #8
+ add r7, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ str r7, [r4, #8]
+ add r0, r5, #0
+ bl MOD15_021D9548
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD15_021D954C
+ str r0, [r4, #0x10]
+ mov r1, #0
+ str r1, [r4, #0x14]
+ ldr r0, _021DAEA0 ; =0x000004FC
+ str r1, [r4, #0x18]
+ str r1, [r4, r0]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAEA0: .word 0x000004FC
+
+ thumb_func_start MOD15_021DAEA4
+MOD15_021DAEA4: ; 0x021DAEA4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD15_021DB200
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021DAEB4
+MOD15_021DAEB4: ; 0x021DAEB4
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ mov r0, #0x40
+ str r0, [sp]
+ mov r0, #0x23
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ mov r1, #0x15
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x4c
+ mov r1, #0xb
+ mov r3, #4
+ bl FUN_020068C8
+ add r0, r4, #0
+ bl MOD15_021DAFAC
+ add r0, r4, #0
+ bl MOD15_021DAFF8
+ ldr r0, [r4, #4]
+ bl MOD15_021D86F4
+ cmp r0, #0
+ bne _021DAF4A
+ mov r2, #0xb
+ ldr r0, _021DAFA4 ; =0x000001FA
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ add r0, r4, r0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ mov r2, #3
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ add r3, r2, #0
+ bl FUN_02018170
+ mov r2, #0xb
+ mov r0, #0xa5
+ lsl r0, r0, #2
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ add r0, r4, r0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ mov r2, #3
+ mov r3, #0xe
+ bl FUN_02018170
+ b _021DAF92
+_021DAF4A:
+ mov r2, #0xb
+ add r0, r4, #0
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ add r0, #0x2c
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ mov r2, #3
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ add r3, r2, #0
+ bl FUN_02018170
+ mov r2, #0xb
+ ldr r0, _021DAFA8 ; =0x00000462
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ add r0, r4, r0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ mov r2, #3
+ mov r3, #0xe
+ bl FUN_02018170
+_021DAF92:
+ add r0, r4, #0
+ bl MOD15_021DB154
+ ldr r0, [r4, #0xc]
+ mov r1, #4
+ bl FUN_02017CD0
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ .align 2, 0
+_021DAFA4: .word 0x000001FA
+_021DAFA8: .word 0x00000462
+
+ thumb_func_start MOD15_021DAFAC
+MOD15_021DAFAC: ; 0x021DAFAC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r4, _021DAFF4 ; =0x021DBA20
+ mov r6, #0
+ add r5, #0x2c
+_021DAFB8:
+ mov r0, #0x23
+ str r0, [sp]
+ ldrh r1, [r4]
+ mov r0, #0x4c
+ mov r2, #1
+ add r3, sp, #4
+ bl FUN_02006BDC
+ add r7, r0, #0
+ beq _021DAFE6
+ ldr r0, [sp, #4]
+ add r1, r5, #0
+ add r0, #0xc
+ mov r2, #0x9a
+ bl MIi_CpuCopy16
+ add r0, r5, #0
+ mov r1, #0x9a
+ bl DC_FlushRange
+ add r0, r7, #0
+ bl FUN_02016A18
+_021DAFE6:
+ add r6, r6, #1
+ add r4, r4, #2
+ add r5, #0x9a
+ cmp r6, #8
+ blo _021DAFB8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAFF4: .word 0x021DBA20
+
+ thumb_func_start MOD15_021DAFF8
+MOD15_021DAFF8: ; 0x021DAFF8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ mov r0, #2
+ mov r1, #0
+ bl FUN_02002C50
+ ldr r1, _021DB0F8 ; =0x00000182
+ mov r0, #0x1a
+ mov r2, #0xb
+ mov r3, #0x23
+ bl FUN_0200A738
+ str r0, [sp, #4]
+ ldr r1, _021DB0F8 ; =0x00000182
+ mov r0, #0x1a
+ mov r2, #0xc
+ mov r3, #0x23
+ bl FUN_0200A738
+ add r7, r0, #0
+ ldr r1, _021DB0F8 ; =0x00000182
+ mov r0, #0x1a
+ mov r2, #0xd
+ mov r3, #0x23
+ bl FUN_0200A738
+ add r6, r0, #0
+ ldr r1, _021DB0F8 ; =0x00000182
+ mov r0, #0x1a
+ mov r2, #0xe
+ mov r3, #0x23
+ bl FUN_0200A738
+ add r4, r0, #0
+ mov r0, #0x23
+ str r0, [sp]
+ mov r0, #0x4c
+ mov r1, #0x14
+ mov r2, #1
+ add r3, sp, #0xc
+ bl FUN_02006BB0
+ str r0, [sp, #8]
+ cmp r0, #0
+ beq _021DB0D4
+ add r0, sp, #0x10
+ bl FUN_0201901C
+ ldr r0, [r5, #0xc]
+ add r1, sp, #0xc
+ str r0, [sp, #0x10]
+ mov r0, #0xb
+ strb r0, [r1, #0xb]
+ mov r0, #0x39
+ strb r0, [r1, #0xc]
+ ldrh r2, [r1, #0xe]
+ ldr r0, _021DB0FC ; =0xFFFF7FFF
+ mov r3, #0
+ and r0, r2
+ strh r0, [r1, #0xe]
+ ldr r0, [sp, #0xc]
+ ldr r2, [sp, #4]
+ ldr r0, [r0, #0x14]
+ str r0, [sp, #0x1c]
+ ldr r1, [r5, #0xc]
+ add r0, sp, #0x10
+ bl MOD15_021DB100
+ ldr r1, [r5, #0xc]
+ add r0, sp, #0x10
+ add r2, r7, #0
+ mov r3, #0x10
+ bl MOD15_021DB100
+ ldr r0, [sp, #0xc]
+ add r2, r6, #0
+ ldr r1, [r0, #0x14]
+ mov r0, #0x9a
+ lsl r0, r0, #6
+ add r0, r1, r0
+ str r0, [sp, #0x1c]
+ ldr r1, [r5, #0xc]
+ add r0, sp, #0x10
+ mov r3, #0
+ bl MOD15_021DB100
+ ldr r1, [r5, #0xc]
+ add r0, sp, #0x10
+ add r2, r4, #0
+ mov r3, #0x10
+ bl MOD15_021DB100
+ ldr r1, [sp, #0xc]
+ ldr r0, [r1, #0x14]
+ ldr r1, [r1, #0x10]
+ bl DC_FlushRange
+ ldr r3, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0xc]
+ ldr r3, [r3, #0x10]
+ mov r1, #4
+ bl FUN_02017E14
+ ldr r0, [sp, #8]
+ bl FUN_02016A18
+_021DB0D4:
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #4]
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+ mov r0, #2
+ bl FUN_02002CF8
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DB0F8: .word 0x00000182
+_021DB0FC: .word 0xFFFF7FFF
+
+ thumb_func_start MOD15_021DB100
+MOD15_021DB100: ; 0x021DB100
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r2, #0
+ str r0, [sp, #0x10]
+ mov r0, #2
+ add r1, r6, #0
+ mov r2, #0
+ add r7, r3, #0
+ bl FUN_02002F08
+ mov r1, #0x58
+ sub r0, r1, r0
+ lsr r0, r0, #1
+ ldr r5, _021DB14C ; =0x021DBA18
+ str r0, [sp, #0x14]
+ mov r4, #0
+_021DB120:
+ mov r0, #0
+ ldrsh r0, [r5, r0]
+ ldr r3, [sp, #0x14]
+ mov r1, #2
+ add r0, r7, r0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DB150 ; =0x00010203
+ add r2, r6, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ bl FUN_0201BDE0
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, #4
+ blo _021DB120
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB14C: .word 0x021DBA18
+_021DB150: .word 0x00010203
+
+ thumb_func_start MOD15_021DB154
+MOD15_021DB154: ; 0x021DB154
+ push {r3, r4, lr}
+ sub sp, #0x4c
+ add r4, r0, #0
+ add r0, sp, #0x38
+ bl FUN_020B19DC
+ add r0, sp, #0x14
+ bl FUN_020B1A24
+ mov r0, #0x23
+ str r0, [sp]
+ add r0, sp, #0x38
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ mov r1, #0x19
+ mov r2, #2
+ mov r3, #0
+ bl FUN_02006A8C
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x23
+ str r0, [sp, #0xc]
+ add r0, sp, #0x14
+ str r0, [sp, #0x10]
+ mov r0, #0x4c
+ mov r1, #0x18
+ mov r2, #1
+ bl FUN_02006AE4
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #0x4c
+ mov r2, #0x16
+ mov r3, #0x17
+ bl MOD15_021DB224
+ mov r0, #0xc0
+ str r0, [sp]
+ mov r0, #0x38
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r3, r4, #0
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r1, sp, #0x14
+ add r2, sp, #0x38
+ add r3, #0x1c
+ bl MOD15_021DB26C
+ str r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_02020130
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0xc0
+ str r0, [sp]
+ mov r0, #0x88
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r3, r4, #0
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r1, sp, #0x14
+ add r2, sp, #0x38
+ add r3, #0x1c
+ bl MOD15_021DB26C
+ mov r1, #2
+ str r0, [r4, #0x18]
+ bl FUN_02020130
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x4c
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD15_021DB200
+MOD15_021DB200: ; 0x021DB200
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021DB20E
+ bl FUN_0201FFC8
+_021DB20E:
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ beq _021DB218
+ bl FUN_0201FFC8
+_021DB218:
+ add r4, #0x1c
+ add r0, r4, #0
+ bl MOD15_021DB258
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DB224
+MOD15_021DB224: ; 0x021DB224
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #0x23
+ add r6, r3, #0
+ str r0, [sp]
+ add r1, r2, #0
+ add r0, r4, #0
+ mov r2, #1
+ add r3, r5, #4
+ bl FUN_02006C30
+ str r0, [r5]
+ mov r0, #0x23
+ add r3, r5, #0
+ str r0, [sp]
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #1
+ add r3, #0xc
+ bl FUN_02006C5C
+ str r0, [r5, #8]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+
+ thumb_func_start MOD15_021DB258
+MOD15_021DB258: ; 0x021DB258
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016A18
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start MOD15_021DB26C
+MOD15_021DB26C: ; 0x021DB26C
+ push {r3, r4, lr}
+ sub sp, #0x44
+ str r2, [sp, #0x28]
+ str r1, [sp, #0x20]
+ ldr r1, [r3, #4]
+ ldr r2, [sp, #0x58]
+ str r1, [sp, #0x2c]
+ ldr r1, [r3, #0xc]
+ str r1, [sp, #0x30]
+ add r1, sp, #0x40
+ strb r2, [r1]
+ mov r1, #0
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x34]
+ str r1, [sp, #0x38]
+ str r1, [sp, #0x3c]
+ ldr r0, [r0, #0x10]
+ str r0, [sp]
+ add r0, sp, #0x20
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x50]
+ str r1, [sp, #0x10]
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x54]
+ add r0, #0xc0
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x5c]
+ str r0, [sp, #0x14]
+ mov r0, #2
+ str r0, [sp, #0x18]
+ mov r0, #0x23
+ str r0, [sp, #0x1c]
+ add r0, sp, #0
+ bl FUN_0201FF84
+ add r4, r0, #0
+ beq _021DB2CA
+ mov r1, #1
+ bl FUN_020200BC
+ mov r1, #1
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+_021DB2CA:
+ add r0, r4, #0
+ add sp, #0x44
+ pop {r3, r4, pc}
+
+ thumb_func_start MOD15_021DB2D0
+MOD15_021DB2D0: ; 0x021DB2D0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x23
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _021DB32C
+ ldr r0, [r5, #4]
+ bl MOD15_021D86F4
+ str r5, [r4]
+ mov r1, #0
+ str r1, [r4, #4]
+ strh r1, [r4, #8]
+ mov r1, #0xe
+ mul r1, r0
+ ldr r0, _021DB334 ; =0x021DBA30
+ mov r2, #1
+ ldrh r0, [r0, r1]
+ strh r0, [r4, #0xa]
+ ldr r0, _021DB338 ; =0x021DBA32
+ ldrh r0, [r0, r1]
+ strh r0, [r4, #0xc]
+ ldr r0, _021DB33C ; =0x021DBA34
+ ldrh r0, [r0, r1]
+ strh r0, [r4, #0xe]
+ ldr r0, _021DB340 ; =0x021DBA36
+ ldrh r0, [r0, r1]
+ strh r0, [r4, #0x10]
+ ldr r0, _021DB344 ; =0x021DBA38
+ ldrh r0, [r0, r1]
+ strh r0, [r4, #0x12]
+ ldr r0, _021DB348 ; =0x021DBA3A
+ ldrh r0, [r0, r1]
+ strh r0, [r4, #0x14]
+ ldr r0, _021DB34C ; =0x021DBA3C
+ ldrh r0, [r0, r1]
+ add r1, r4, #0
+ strh r0, [r4, #0x16]
+ ldr r0, _021DB350 ; =MOD15_021DB36C
+ bl FUN_0200CA44
+ ldr r1, _021DB354 ; =0x000004FC
+ str r0, [r5, r1]
+ pop {r3, r4, r5, pc}
+_021DB32C:
+ ldr r0, _021DB354 ; =0x000004FC
+ mov r1, #0
+ str r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DB334: .word 0x021DBA30
+_021DB338: .word 0x021DBA32
+_021DB33C: .word 0x021DBA34
+_021DB340: .word 0x021DBA36
+_021DB344: .word 0x021DBA38
+_021DB348: .word 0x021DBA3A
+_021DB34C: .word 0x021DBA3C
+_021DB350: .word MOD15_021DB36C
+_021DB354: .word 0x000004FC
+
+ thumb_func_start MOD15_021DB358
+MOD15_021DB358: ; 0x021DB358
+ ldr r1, _021DB368 ; =0x000004FC
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ bne _021DB364
+ mov r0, #1
+ bx lr
+_021DB364:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021DB368: .word 0x000004FC
+
+ thumb_func_start MOD15_021DB36C
+MOD15_021DB36C: ; 0x021DB36C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x1c
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #3
+ bls _021DB37C
+ b _021DB4E0
+_021DB37C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DB388: ; jump table
+ .short _021DB390 - _021DB388 - 2 ; case 0
+ .short _021DB416 - _021DB388 - 2 ; case 1
+ .short _021DB476 - _021DB388 - 2 ; case 2
+ .short _021DB4CC - _021DB388 - 2 ; case 3
+_021DB390:
+ ldr r3, [r4]
+ mov r2, #0xb
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ ldrh r6, [r4, #0xa]
+ add r0, r3, #0
+ mov r5, #0x9a
+ add r0, #0x2c
+ mul r5, r6
+ add r0, r0, r5
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r3, #0xc]
+ ldrh r2, [r4, #0xe]
+ ldrh r3, [r4, #0x10]
+ mov r1, #4
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ ldr r3, [r4]
+ mov r2, #0xb
+ add r0, r3, #0
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ ldrh r6, [r4, #0x12]
+ mov r5, #0x9a
+ add r0, #0x2c
+ mul r5, r6
+ add r0, r0, r5
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r3, #0xc]
+ ldrh r2, [r4, #0x14]
+ ldrh r3, [r4, #0x16]
+ mov r1, #4
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ ldr r0, [r4]
+ mov r1, #4
+ ldr r0, [r0, #0xc]
+ bl FUN_02017CD0
+ ldrh r0, [r4, #0xa]
+ add sp, #0x1c
+ add r0, r0, #1
+ strh r0, [r4, #0xa]
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, r6, pc}
+_021DB416:
+ ldrh r0, [r4, #8]
+ add r0, r0, #1
+ strh r0, [r4, #8]
+ ldrh r0, [r4, #8]
+ cmp r0, #2
+ blo _021DB4E0
+ ldr r3, [r4]
+ mov r2, #0xb
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ ldrh r6, [r4, #0xa]
+ add r0, r3, #0
+ mov r5, #0x9a
+ add r0, #0x2c
+ mul r5, r6
+ add r0, r0, r5
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r3, #0xc]
+ ldrh r2, [r4, #0xe]
+ ldrh r3, [r4, #0x10]
+ mov r1, #4
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ ldr r0, [r4]
+ mov r1, #4
+ ldr r0, [r0, #0xc]
+ bl FUN_02017CD0
+ mov r0, #0
+ strh r0, [r4, #8]
+ ldrh r0, [r4, #0xa]
+ add sp, #0x1c
+ add r0, r0, #1
+ strh r0, [r4, #0xa]
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, r6, pc}
+_021DB476:
+ ldrh r0, [r4, #8]
+ add r0, r0, #1
+ strh r0, [r4, #8]
+ ldrh r0, [r4, #8]
+ cmp r0, #4
+ blo _021DB4E0
+ ldr r3, [r4]
+ mov r2, #0xb
+ str r2, [sp]
+ mov r1, #7
+ str r1, [sp, #4]
+ ldrh r6, [r4, #0xa]
+ add r0, r3, #0
+ mov r5, #0x9a
+ add r0, #0x2c
+ mul r5, r6
+ add r0, r0, r5
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x18]
+ ldr r0, [r3, #0xc]
+ ldrh r2, [r4, #0xe]
+ ldrh r3, [r4, #0x10]
+ mov r1, #4
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ ldr r0, [r4]
+ mov r1, #4
+ ldr r0, [r0, #0xc]
+ bl FUN_02017CD0
+ ldr r0, [r4, #4]
+ add sp, #0x1c
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, r6, pc}
+_021DB4CC:
+ ldr r1, [r4]
+ ldr r0, _021DB4E4 ; =0x000004FC
+ mov r2, #0
+ str r2, [r1, r0]
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_021DB4E0:
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021DB4E4: .word 0x000004FC
+
+ thumb_func_start MOD15_021DB4E8
+MOD15_021DB4E8: ; 0x021DB4E8
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r1, #0
+ beq _021DB50E
+ ldr r0, [r4, #4]
+ bl MOD15_021D87AC
+ add r1, r0, #0
+ ldr r0, [r4, #0x14]
+ bl FUN_020200A0
+ ldr r0, [r4, #4]
+ bl MOD15_021D87C0
+ add r1, r0, #0
+ ldr r0, [r4, #0x18]
+ bl FUN_020200A0
+ pop {r4, pc}
+_021DB50E:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_020200A0
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021DB520
+MOD15_021DB520: ; 0x021DB520
+ push {r3, lr}
+ cmp r1, #0
+ beq _021DB52C
+ cmp r1, #1
+ beq _021DB548
+ pop {r3, pc}
+_021DB52C:
+ cmp r2, #0
+ beq _021DB53E
+ cmp r2, #1
+ bne _021DB562
+ ldr r0, [r0, #0x14]
+ mov r1, #1
+ bl FUN_02020130
+ pop {r3, pc}
+_021DB53E:
+ ldr r0, [r0, #0x14]
+ mov r1, #0
+ bl FUN_02020130
+ pop {r3, pc}
+_021DB548:
+ cmp r2, #0
+ beq _021DB55A
+ cmp r2, #1
+ bne _021DB562
+ ldr r0, [r0, #0x18]
+ mov r1, #3
+ bl FUN_02020130
+ pop {r3, pc}
+_021DB55A:
+ ldr r0, [r0, #0x18]
+ mov r1, #2
+ bl FUN_02020130
+_021DB562:
+ pop {r3, pc}
+
+ thumb_func_start MOD15_021DB564
+MOD15_021DB564: ; 0x021DB564
+ push {r4, lr}
+ add r4, r0, #0
+ str r1, [r4]
+ str r2, [r4, #4]
+ cmp r3, #0
+ bne _021DB57E
+ add r0, r1, #0
+ add r1, r2, #0
+ bl FUN_02017B48
+ str r0, [r4, #0xc]
+ mov r0, #0
+ b _021DB58A
+_021DB57E:
+ add r0, r1, #0
+ add r1, r2, #0
+ bl FUN_02017B54
+ str r0, [r4, #0xc]
+ mov r0, #3
+_021DB58A:
+ str r0, [r4, #8]
+ ldr r0, [sp, #8]
+ ldr r1, [r4, #0xc]
+ add r2, r1, r0
+ ldr r1, _021DB5B4 ; =0x000001FF
+ lsl r0, r0, #0xc
+ and r1, r2
+ str r1, [r4, #0x10]
+ ldr r1, [r4, #0xc]
+ lsl r1, r1, #0xc
+ str r1, [r4, #0xc]
+ ldr r1, [sp, #0xc]
+ bl _s32_div_f
+ str r0, [r4, #0x14]
+ ldr r0, [sp, #0xc]
+ strh r0, [r4, #0x18]
+ mov r0, #0
+ strh r0, [r4, #0x1a]
+ pop {r4, pc}
+ nop
+_021DB5B4: .word 0x000001FF
+
+ thumb_func_start MOD15_021DB5B8
+MOD15_021DB5B8: ; 0x021DB5B8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrh r0, [r4, #0x1a]
+ cmp r0, #0
+ beq _021DB5CC
+ cmp r0, #1
+ beq _021DB5E0
+ cmp r0, #2
+ beq _021DB5F6
+ b _021DB5FA
+_021DB5CC:
+ ldr r0, _021DB600 ; =MOD15_021DB604
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD15_021D88D0
+ str r0, [r4, #0x1c]
+ ldrh r0, [r4, #0x1a]
+ add r0, r0, #1
+ strh r0, [r4, #0x1a]
+ b _021DB5FA
+_021DB5E0:
+ ldrh r0, [r4, #0x18]
+ cmp r0, #0
+ bne _021DB5FA
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200CAB4
+ ldrh r0, [r4, #0x1a]
+ add r0, r0, #1
+ strh r0, [r4, #0x1a]
+ mov r0, #1
+ pop {r4, pc}
+_021DB5F6:
+ mov r0, #1
+ pop {r4, pc}
+_021DB5FA:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021DB600: .word MOD15_021DB604
+
+ thumb_func_start MOD15_021DB604
+MOD15_021DB604: ; 0x021DB604
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #0x18]
+ cmp r0, #0
+ beq _021DB632
+ ldr r1, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ add r3, r1, r0
+ str r3, [r4, #0xc]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x18
+ ldr r0, [r4]
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ asr r3, r3, #0xc
+ bl FUN_020179E0
+ ldrh r0, [r4, #0x18]
+ sub r0, r0, #1
+ strh r0, [r4, #0x18]
+ pop {r4, pc}
+_021DB632:
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x18
+ ldr r0, [r4]
+ ldr r3, [r4, #0x10]
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_020179E0
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021DB648
+MOD15_021DB648: ; 0x021DB648
+ push {r4, lr}
+ add r4, r0, #0
+ str r1, [r4]
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #0xc]
+ str r2, [r4, #4]
+ str r1, [r4, #0x14]
+ str r3, [r4, #8]
+ sub r0, r0, r3
+ bl _s32_div_f
+ str r0, [r4, #0x10]
+ ldr r0, [sp, #8]
+ mov r2, #0
+ str r0, [r4, #0xc]
+ ldr r0, _021DB674 ; =MOD15_021DB6A0
+ add r1, r4, #0
+ str r2, [r4, #0x18]
+ bl MOD15_021D88D0
+ str r0, [r4, #0x1c]
+ pop {r4, pc}
+ .align 2, 0
+_021DB674: .word MOD15_021DB6A0
+
+ thumb_func_start MOD15_021DB678
+MOD15_021DB678: ; 0x021DB678
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ bne _021DB698
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ bne _021DB69C
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ mov r0, #1
+ pop {r4, pc}
+_021DB698:
+ mov r0, #1
+ pop {r4, pc}
+_021DB69C:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021DB6A0
+MOD15_021DB6A0: ; 0x021DB6A0
+ push {r3, lr}
+ add r2, r1, #0
+ ldr r0, [r2, #0x14]
+ cmp r0, #0
+ beq _021DB6BC
+ ldr r1, [r2, #8]
+ ldr r0, [r2, #0x10]
+ add r0, r1, r0
+ str r0, [r2, #8]
+ asr r3, r0, #3
+ ldr r0, [r2, #0x14]
+ sub r0, r0, #1
+ str r0, [r2, #0x14]
+ b _021DB6C0
+_021DB6BC:
+ ldr r0, [r2, #0xc]
+ asr r3, r0, #3
+_021DB6C0:
+ cmp r3, #0x10
+ ble _021DB6C6
+ mov r3, #0x10
+_021DB6C6:
+ mov r0, #0x10
+ sub r0, r0, r3
+ str r0, [sp]
+ ldr r0, _021DB6D8 ; =0x04000050
+ ldmia r2!, {r1, r2}
+ bl G2x_SetBlendAlpha_
+ pop {r3, pc}
+ nop
+_021DB6D8: .word 0x04000050
+
+ thumb_func_start MOD15_021DB6DC
+MOD15_021DB6DC: ; 0x021DB6DC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _021DB714 ; =0x04000050
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl G2x_SetBlendBrightness_
+ ldr r1, [sp, #0x18]
+ str r4, [r5]
+ str r1, [r5, #0x14]
+ lsl r0, r6, #0xc
+ str r0, [r5, #8]
+ lsl r2, r7, #0xc
+ str r2, [r5, #0xc]
+ ldr r0, [r5, #8]
+ sub r0, r2, r0
+ bl _s32_div_f
+ str r0, [r5, #0x10]
+ mov r2, #0
+ ldr r0, _021DB718 ; =MOD15_021DB744
+ add r1, r5, #0
+ str r2, [r5, #0x18]
+ bl MOD15_021D88D0
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB714: .word 0x04000050
+_021DB718: .word MOD15_021DB744
+
+ thumb_func_start MOD15_021DB71C
+MOD15_021DB71C: ; 0x021DB71C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ bne _021DB73C
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ bne _021DB740
+ ldr r0, [r4, #0x1c]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ mov r0, #1
+ pop {r4, pc}
+_021DB73C:
+ mov r0, #1
+ pop {r4, pc}
+_021DB740:
+ mov r0, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD15_021DB744
+MOD15_021DB744: ; 0x021DB744
+ ldr r0, [r1, #0x14]
+ cmp r0, #0
+ beq _021DB75C
+ ldr r2, [r1, #8]
+ ldr r0, [r1, #0x10]
+ add r0, r2, r0
+ str r0, [r1, #8]
+ asr r2, r0, #0xc
+ ldr r0, [r1, #0x14]
+ sub r0, r0, #1
+ str r0, [r1, #0x14]
+ b _021DB760
+_021DB75C:
+ ldr r0, [r1, #0xc]
+ asr r2, r0, #0xc
+_021DB760:
+ ldr r3, _021DB768 ; =0x020C74B8
+ ldr r0, _021DB76C ; =0x04000050
+ ldr r1, [r1]
+ bx r3
+ .align 2, 0
+_021DB768: .word 0x020C74B8
+_021DB76C: .word 0x04000050
+
+ thumb_func_start MOD15_021DB770
+MOD15_021DB770: ; 0x021DB770
+ mov r0, #0x1b
+ bx lr
+
+ thumb_func_start MOD15_021DB774
+MOD15_021DB774: ; 0x021DB774
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ cmp r4, #0x1b
+ blo _021DB782
+ bl ErrorHandling
+_021DB782:
+ mov r1, #0xa
+ ldr r2, _021DB794 ; =0x021DBA4C
+ mul r1, r4
+ add r1, r2, r1
+ add r0, r5, #0
+ mov r2, #2
+ bl FUN_02021E8C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DB794: .word 0x021DBA4C
+
+ thumb_func_start MOD15_021DB798
+MOD15_021DB798: ; 0x021DB798
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ cmp r5, #0x1b
+ blo _021DB7A8
+ bl ErrorHandling
+_021DB7A8:
+ mov r0, #0xa
+ add r1, r5, #0
+ mul r1, r0
+ ldr r0, _021DB7BC ; =0x021DBA4E
+ ldrb r0, [r0, r1]
+ str r0, [r4]
+ ldr r0, _021DB7C0 ; =0x021DBA4F
+ ldrb r0, [r0, r1]
+ str r0, [r6]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DB7BC: .word 0x021DBA4E
+_021DB7C0: .word 0x021DBA4F
+
+ thumb_func_start MOD15_021DB7C4
+MOD15_021DB7C4: ; 0x021DB7C4
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0x1b
+ blo _021DB7D0
+ bl ErrorHandling
+_021DB7D0:
+ mov r0, #0xa
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, _021DB7DC ; =0x021DBA50
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021DB7DC: .word 0x021DBA50
+
+ thumb_func_start MOD15_021DB7E0
+MOD15_021DB7E0: ; 0x021DB7E0
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0x1b
+ blo _021DB7EC
+ bl ErrorHandling
+_021DB7EC:
+ mov r0, #0xa
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, _021DB7F8 ; =0x021DBA51
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021DB7F8: .word 0x021DBA51
+
+ thumb_func_start MOD15_021DB7FC
+MOD15_021DB7FC: ; 0x021DB7FC
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0x1b
+ blo _021DB808
+ bl ErrorHandling
+_021DB808:
+ mov r0, #0xa
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, _021DB814 ; =0x021DBA52
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021DB814: .word 0x021DBA52
+
+ thumb_func_start MOD15_021DB818
+MOD15_021DB818: ; 0x021DB818
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0x1b
+ blo _021DB824
+ bl ErrorHandling
+_021DB824:
+ mov r0, #0xa
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, _021DB830 ; =0x021DBA53
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021DB830: .word 0x021DBA53
+
+ thumb_func_start MOD15_021DB834
+MOD15_021DB834: ; 0x021DB834
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0x1b
+ blo _021DB840
+ bl ErrorHandling
+_021DB840:
+ mov r0, #0xa
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, _021DB84C ; =0x021DBA54
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021DB84C: .word 0x021DBA54
+
+ thumb_func_start MOD15_021DB850
+MOD15_021DB850: ; 0x021DB850
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0x1b
+ blo _021DB85C
+ bl ErrorHandling
+_021DB85C:
+ mov r0, #0xa
+ add r1, r4, #0
+ mul r1, r0
+ ldr r0, _021DB868 ; =0x021DBA55
+ ldrb r0, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021DB868: .word 0x021DBA55
+
+ .section .rodata
+ ; 0x021DB86C
+ .incbin "baserom.nds", 0x23B78C, 0x2F0
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s
new file mode 100644
index 00000000..77cc5176
--- /dev/null
+++ b/arm9/modules/16/asm/module_16.s
@@ -0,0 +1,63325 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD16_021D74E0
+MOD16_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ mov r1, #0
+ add r5, r0, #0
+ mov r0, #0x36
+ add r2, r1, #0
+ bl FUN_0200433C
+ mov r2, #1
+ mov r0, #3
+ mov r1, #0x25
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ add r0, r5, #0
+ mov r1, #4
+ mov r2, #0x25
+ bl FUN_02006268
+ add r4, r0, #0
+ bne _021D750E
+ bl ErrorHandling
+_021D750E:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ mov r0, #8
+ mov r1, #0x25
+ bl FUN_0201C24C
+ add r0, r5, #0
+ bl FUN_0200628C
+ add r5, r0, #0
+ ldr r0, _021D7584 ; =MOD16_021D7650
+ add r1, r4, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ cmp r0, #1
+ beq _021D7546
+ bl ErrorHandling
+_021D7546:
+ mov r0, #0x25
+ bl MOD16_021D79FC
+ ldr r0, [r5]
+ add r1, sp, #0
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ str r0, [sp, #4]
+ ldr r0, [r5, #8]
+ str r0, [sp, #8]
+ ldr r0, [r5, #0xc]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x10]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x14]
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x1c]
+ str r0, [sp, #0x1c]
+ mov r0, #0x25
+ bl MOD16_021D76AC
+ str r0, [r4]
+ mov r0, #1
+ mov r1, #0x2a
+ bl FUN_020051EC
+ mov r0, #1
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7584: .word MOD16_021D7650
+ thumb_func_end MOD16_021D74E0
+
+ thumb_func_start MOD16_021D7588
+MOD16_021D7588: ; 0x021D7588
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ bl FUN_02006278
+ ldr r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhi _021D7608
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D75A4: ; jump table
+ .short _021D75AC - _021D75A4 - 2 ; case 0
+ .short _021D75C4 - _021D75A4 - 2 ; case 1
+ .short _021D75DA - _021D75A4 - 2 ; case 2
+ .short _021D75E6 - _021D75A4 - 2 ; case 3
+_021D75AC:
+ bl MOD16_021D7664
+ mov r0, #0xf
+ mvn r0, r0
+ mov r1, #0x3f
+ mov r2, #3
+ bl FUN_0200A274
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D7608
+_021D75C4:
+ ldr r0, [r5]
+ bl MOD16_021D7804
+ cmp r0, #1
+ bne _021D7608
+ mov r0, #0
+ str r0, [r5]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D7608
+_021D75DA:
+ bl MOD16_021D7684
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D7608
+_021D75E6:
+ bl MOD16_021D76A4
+ cmp r0, #0
+ beq _021D7608
+ mov r0, #0
+ bl FUN_0200E388
+ mov r0, #1
+ bl FUN_0200E388
+ ldr r0, _021D760C ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r0, _021D7610 ; =0x04001050
+ strh r1, [r0]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D7608:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D760C: .word 0x04000050
+_021D7610: .word 0x04001050
+ thumb_func_end MOD16_021D7588
+
+ thumb_func_start MOD16_021D7614
+MOD16_021D7614: ; 0x021D7614
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02006278
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_0201CD04
+ cmp r0, #1
+ beq _021D7630
+ bl ErrorHandling
+_021D7630:
+ bl MOD16_021D7A10
+ bl FUN_0201C29C
+ add r0, r4, #0
+ bl FUN_0200627C
+ mov r0, #0x25
+ bl FUN_020168D0
+ mov r0, #1
+ mov r1, #0x7f
+ bl FUN_020051EC
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD16_021D7614
+
+ thumb_func_start MOD16_021D7650
+MOD16_021D7650: ; 0x021D7650
+ push {r3, lr}
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D765C
+ bl MOD16_021D7A24
+_021D765C:
+ bl FUN_0201C30C
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D7650
+
+ thumb_func_start MOD16_021D7664
+MOD16_021D7664: ; 0x021D7664
+ push {lr}
+ sub sp, #0xc
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x25
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D7664
+
+ thumb_func_start MOD16_021D7684
+MOD16_021D7684: ; 0x021D7684
+ push {lr}
+ sub sp, #0xc
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x25
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {pc}
+ thumb_func_end MOD16_021D7684
+
+ thumb_func_start MOD16_021D76A4
+MOD16_021D76A4: ; 0x021D76A4
+ ldr r3, _021D76A8 ; =0x0200E309
+ bx r3
+ .align 2, 0
+_021D76A8: .word 0x0200E309
+ thumb_func_end MOD16_021D76A4
+
+ thumb_func_start MOD16_021D76AC
+MOD16_021D76AC: ; 0x021D76AC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r1, #0
+ ldr r1, _021D77D0 ; =0x00001D10
+ add r7, r0, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021D76C2
+ bl ErrorHandling
+_021D76C2:
+ ldr r2, _021D77D0 ; =0x00001D10
+ add r0, r4, #0
+ mov r1, #0
+ bl Call_FillMemWithValue
+ str r7, [r4, #4]
+ ldr r0, [r5, #0x1c]
+ str r0, [r4, #8]
+ add r0, r7, #0
+ bl MOD16_021DA858
+ ldr r1, _021D77D4 ; =0x00001A0C
+ str r0, [r4, r1]
+ add r0, r7, #0
+ bl MOD16_021DA858
+ ldr r1, _021D77D8 ; =0x00001A10
+ str r0, [r4, r1]
+ add r0, r7, #0
+ bl MOD16_021DA858
+ ldr r1, _021D77DC ; =0x00001A14
+ str r0, [r4, r1]
+ add r0, r7, #0
+ bl MOD16_021DA858
+ ldr r1, _021D77E0 ; =0x00001A18
+ str r0, [r4, r1]
+ add r0, r7, #0
+ bl MOD16_021DA5FC
+ mov r1, #0x1d
+ lsl r1, r1, #8
+ str r0, [r4, r1]
+ add r0, r7, #0
+ bl MOD16_021DA5FC
+ ldr r1, _021D77E4 ; =0x00001D04
+ str r0, [r4, r1]
+ add r0, r7, #0
+ bl MOD16_021DA5FC
+ ldr r1, _021D77E8 ; =0x00001D08
+ str r0, [r4, r1]
+ add r0, r7, #0
+ bl MOD16_021DA5FC
+ ldr r1, _021D77EC ; =0x00001D0C
+ str r0, [r4, r1]
+ ldr r0, [r5]
+ str r0, [sp, #8]
+ ldr r0, [r5, #4]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #8]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0xc]
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x10]
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x14]
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x20]
+ ldr r0, [r5, #0x1c]
+ bl FUN_0208A328
+ str r0, [sp, #0x24]
+ ldr r0, [r5, #0x1c]
+ bl FUN_0208A330
+ str r0, [sp, #0x28]
+ add r0, r4, #0
+ add r0, #0xc
+ add r1, sp, #8
+ add r2, r7, #0
+ bl MOD16_021D9798
+ ldr r0, _021D77F0 ; =0x0000177C
+ add r1, r7, #0
+ add r0, r4, r0
+ bl MOD16_021D8534
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _021D77F4 ; =0x00001A30
+ ldr r5, _021D77F8 ; =0x021FF418
+ add r6, r4, r0
+_021D7770:
+ ldr r3, [r5]
+ cmp r3, #0
+ beq _021D777E
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ blx r3
+_021D777E:
+ ldr r0, [sp, #4]
+ add r5, r5, #4
+ add r0, r0, #1
+ add r6, #0x28
+ str r0, [sp, #4]
+ cmp r0, #0xa
+ blt _021D7770
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x6f
+ lsl r0, r0, #6
+ ldr r5, _021D77FC ; =0x021FF3D8
+ add r6, r4, r0
+_021D7798:
+ ldr r3, [r5]
+ cmp r3, #0
+ beq _021D77A6
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ blx r3
+_021D77A6:
+ ldr r0, [sp]
+ add r5, r5, #4
+ add r0, r0, #1
+ add r6, #0x28
+ str r0, [sp]
+ cmp r0, #8
+ blt _021D7798
+ ldr r1, _021D7800 ; =0x00001A1C
+ add r0, r7, #0
+ add r1, r4, r1
+ add r2, r4, #0
+ mov r3, #1
+ bl MOD16_021DAE0C
+ add r0, r4, #0
+ bl MOD16_021D847C
+ add r0, r4, #0
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D77D0: .word 0x00001D10
+_021D77D4: .word 0x00001A0C
+_021D77D8: .word 0x00001A10
+_021D77DC: .word 0x00001A14
+_021D77E0: .word 0x00001A18
+_021D77E4: .word 0x00001D04
+_021D77E8: .word 0x00001D08
+_021D77EC: .word 0x00001D0C
+_021D77F0: .word 0x0000177C
+_021D77F4: .word 0x00001A30
+_021D77F8: .word 0x021FF418
+_021D77FC: .word 0x021FF3D8
+_021D7800: .word 0x00001A1C
+ thumb_func_end MOD16_021D76AC
+
+ thumb_func_start MOD16_021D7804
+MOD16_021D7804: ; 0x021D7804
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D780E
+ bl ErrorHandling
+_021D780E:
+ add r0, r4, #0
+ add r0, #0xc
+ bl MOD16_021D9F8C
+ ldr r0, _021D79D8 ; =0x00001A14
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D7872
+ ldr r0, _021D79DC ; =0x00001A0C
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D7872
+ ldr r0, _021D79E0 ; =0x00001A18
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D7872
+ ldr r0, _021D79E4 ; =0x00001A10
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D7872
+ ldr r0, _021D79E8 ; =0x00001D08
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD16_021DA7B0
+ ldr r0, _021D79EC ; =0x00001D0C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD16_021DA7B0
+ mov r0, #0x1d
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD16_021DA7B0
+ ldr r0, _021D79F0 ; =0x00001D04
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD16_021DA7B0
+ b _021D789C
+_021D7872:
+ ldr r0, _021D79E8 ; =0x00001D08
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl MOD16_021DA7B0
+ ldr r0, _021D79EC ; =0x00001D0C
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl MOD16_021DA7B0
+ mov r0, #0x1d
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD16_021DA7B0
+ ldr r0, _021D79F0 ; =0x00001D04
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl MOD16_021DA7B0
+_021D789C:
+ ldr r0, _021D79E8 ; =0x00001D08
+ ldr r0, [r4, r0]
+ bl MOD16_021DA694
+ ldr r0, _021D79EC ; =0x00001D0C
+ ldr r0, [r4, r0]
+ bl MOD16_021DA694
+ mov r0, #0x1d
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ bl MOD16_021DA694
+ ldr r0, _021D79F0 ; =0x00001D04
+ ldr r0, [r4, r0]
+ bl MOD16_021DA694
+ ldr r0, _021D79E8 ; =0x00001D08
+ ldr r0, [r4, r0]
+ bl MOD16_021DA71C
+ ldr r0, _021D79EC ; =0x00001D0C
+ ldr r0, [r4, r0]
+ bl MOD16_021DA71C
+ mov r0, #0x1d
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ bl MOD16_021DA71C
+ ldr r0, _021D79F0 ; =0x00001D04
+ ldr r0, [r4, r0]
+ bl MOD16_021DA71C
+ ldr r0, _021D79DC ; =0x00001A0C
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D7910
+ ldr r0, _021D79E0 ; =0x00001A18
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D7910
+ ldr r0, _021D79E4 ; =0x00001A10
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D7910
+ ldr r1, _021D79D8 ; =0x00001A14
+ ldr r0, [r4, r1]
+ sub r1, #0x10
+ ldr r1, [r4, r1]
+ bl MOD16_021DA8A0
+_021D7910:
+ ldr r0, _021D79D8 ; =0x00001A14
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D7940
+ ldr r0, _021D79E0 ; =0x00001A18
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D7940
+ ldr r0, _021D79E4 ; =0x00001A10
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D7940
+ ldr r1, _021D79DC ; =0x00001A0C
+ ldr r0, [r4, r1]
+ sub r1, #0x10
+ ldr r1, [r4, r1]
+ bl MOD16_021DA8A0
+_021D7940:
+ ldr r0, _021D79D8 ; =0x00001A14
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D7970
+ ldr r0, _021D79DC ; =0x00001A0C
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D7970
+ ldr r0, _021D79E4 ; =0x00001A10
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D7970
+ ldr r1, _021D79E0 ; =0x00001A18
+ ldr r0, [r4, r1]
+ sub r1, #0x10
+ ldr r1, [r4, r1]
+ bl MOD16_021DA8A0
+_021D7970:
+ ldr r0, _021D79D8 ; =0x00001A14
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D79A0
+ ldr r0, _021D79DC ; =0x00001A0C
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D79A0
+ ldr r0, _021D79E0 ; =0x00001A18
+ ldr r0, [r4, r0]
+ bl MOD16_021DA8F0
+ cmp r0, #0
+ bne _021D79A0
+ ldr r1, _021D79E4 ; =0x00001A10
+ ldr r0, [r4, r1]
+ sub r1, #0x10
+ ldr r1, [r4, r1]
+ bl MOD16_021DA8A0
+_021D79A0:
+ bl FUN_020222AC
+ ldr r0, _021D79F4 ; =0x0000177C
+ add r0, r4, r0
+ bl MOD16_021D86B4
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020222B4
+ ldr r1, _021D79F8 ; =0x00001A04
+ mov r0, #0
+ str r0, [r4, r1]
+ add r2, r1, #4
+ str r0, [r4, r2]
+ add r2, r1, #0
+ sub r2, #8
+ str r0, [r4, r2]
+ sub r1, r1, #4
+ str r0, [r4, r1]
+ ldr r1, [r4]
+ cmp r1, #1
+ bne _021D79D6
+ add r0, r4, #0
+ bl MOD16_021D8298
+ mov r0, #1
+_021D79D6:
+ pop {r4, pc}
+ .align 2, 0
+_021D79D8: .word 0x00001A14
+_021D79DC: .word 0x00001A0C
+_021D79E0: .word 0x00001A18
+_021D79E4: .word 0x00001A10
+_021D79E8: .word 0x00001D08
+_021D79EC: .word 0x00001D0C
+_021D79F0: .word 0x00001D04
+_021D79F4: .word 0x0000177C
+_021D79F8: .word 0x00001A04
+ thumb_func_end MOD16_021D7804
+
+ thumb_func_start MOD16_021D79FC
+MOD16_021D79FC: ; 0x021D79FC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD16_021D8404
+ add r0, r4, #0
+ bl MOD16_021D8424
+ bl MOD16_021D84A0
+ pop {r4, pc}
+ thumb_func_end MOD16_021D79FC
+
+ thumb_func_start MOD16_021D7A10
+MOD16_021D7A10: ; 0x021D7A10
+ push {r3, lr}
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ bl MOD16_021D8514
+ pop {r3, pc}
+ thumb_func_end MOD16_021D7A10
+
+ thumb_func_start MOD16_021D7A24
+MOD16_021D7A24: ; 0x021D7A24
+ push {r3, lr}
+ ldr r1, _021D7A34 ; =0x0000177C
+ add r0, r0, r1
+ bl MOD16_021D86DC
+ bl FUN_02009F80
+ pop {r3, pc}
+ .align 2, 0
+_021D7A34: .word 0x0000177C
+ thumb_func_end MOD16_021D7A24
+
+ thumb_func_start MOD16_021D7A38
+MOD16_021D7A38: ; 0x021D7A38
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7A42
+ bl ErrorHandling
+_021D7A42:
+ mov r0, #0x1d
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D7A38
+
+ thumb_func_start MOD16_021D7A4C
+MOD16_021D7A4C: ; 0x021D7A4C
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7A56
+ bl ErrorHandling
+_021D7A56:
+ ldr r0, _021D7A5C ; =0x00001D04
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021D7A5C: .word 0x00001D04
+ thumb_func_end MOD16_021D7A4C
+
+ thumb_func_start MOD16_021D7A60
+MOD16_021D7A60: ; 0x021D7A60
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7A6A
+ bl ErrorHandling
+_021D7A6A:
+ ldr r0, _021D7A70 ; =0x00001D08
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021D7A70: .word 0x00001D08
+ thumb_func_end MOD16_021D7A60
+
+ thumb_func_start MOD16_021D7A74
+MOD16_021D7A74: ; 0x021D7A74
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7A7E
+ bl ErrorHandling
+_021D7A7E:
+ ldr r0, _021D7A84 ; =0x00001D0C
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021D7A84: .word 0x00001D0C
+ thumb_func_end MOD16_021D7A74
+
+ thumb_func_start MOD16_021D7A88
+MOD16_021D7A88: ; 0x021D7A88
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7A92
+ bl ErrorHandling
+_021D7A92:
+ ldr r0, _021D7A98 ; =0x00001A0C
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021D7A98: .word 0x00001A0C
+ thumb_func_end MOD16_021D7A88
+
+ thumb_func_start MOD16_021D7A9C
+MOD16_021D7A9C: ; 0x021D7A9C
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7AA6
+ bl ErrorHandling
+_021D7AA6:
+ ldr r0, _021D7AAC ; =0x00001A10
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021D7AAC: .word 0x00001A10
+ thumb_func_end MOD16_021D7A9C
+
+ thumb_func_start MOD16_021D7AB0
+MOD16_021D7AB0: ; 0x021D7AB0
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7ABA
+ bl ErrorHandling
+_021D7ABA:
+ ldr r0, _021D7AC0 ; =0x00001A14
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021D7AC0: .word 0x00001A14
+ thumb_func_end MOD16_021D7AB0
+
+ thumb_func_start MOD16_021D7AC4
+MOD16_021D7AC4: ; 0x021D7AC4
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7ACE
+ bl ErrorHandling
+_021D7ACE:
+ ldr r0, _021D7AD4 ; =0x00001A18
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021D7AD4: .word 0x00001A18
+ thumb_func_end MOD16_021D7AC4
+
+ thumb_func_start MOD16_021D7AD8
+MOD16_021D7AD8: ; 0x021D7AD8
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7AE2
+ bl ErrorHandling
+_021D7AE2:
+ ldr r0, _021D7AE8 ; =0x000019FC
+ add r0, r4, r0
+ pop {r4, pc}
+ .align 2, 0
+_021D7AE8: .word 0x000019FC
+ thumb_func_end MOD16_021D7AD8
+
+ thumb_func_start MOD16_021D7AEC
+MOD16_021D7AEC: ; 0x021D7AEC
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7AF6
+ bl ErrorHandling
+_021D7AF6:
+ mov r0, #0x1a
+ lsl r0, r0, #8
+ add r0, r4, r0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D7AEC
+
+ thumb_func_start MOD16_021D7B00
+MOD16_021D7B00: ; 0x021D7B00
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7B0A
+ bl ErrorHandling
+_021D7B0A:
+ ldr r0, _021D7B10 ; =0x00001A04
+ add r0, r4, r0
+ pop {r4, pc}
+ .align 2, 0
+_021D7B10: .word 0x00001A04
+ thumb_func_end MOD16_021D7B00
+
+ thumb_func_start MOD16_021D7B14
+MOD16_021D7B14: ; 0x021D7B14
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7B1E
+ bl ErrorHandling
+_021D7B1E:
+ ldr r0, _021D7B24 ; =0x00001A08
+ add r0, r4, r0
+ pop {r4, pc}
+ .align 2, 0
+_021D7B24: .word 0x00001A08
+ thumb_func_end MOD16_021D7B14
+
+ thumb_func_start MOD16_021D7B28
+MOD16_021D7B28: ; 0x021D7B28
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7B32
+ bl ErrorHandling
+_021D7B32:
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D7B28
+
+ thumb_func_start MOD16_021D7B38
+MOD16_021D7B38: ; 0x021D7B38
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7B42
+ bl ErrorHandling
+_021D7B42:
+ add r4, #0xc
+ add r0, r4, #0
+ pop {r4, pc}
+ thumb_func_end MOD16_021D7B38
+
+ thumb_func_start MOD16_021D7B48
+MOD16_021D7B48: ; 0x021D7B48
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021D7B52
+ bl ErrorHandling
+_021D7B52:
+ ldr r0, _021D7B58 ; =0x0000177C
+ add r0, r4, r0
+ pop {r4, pc}
+ .align 2, 0
+_021D7B58: .word 0x0000177C
+ thumb_func_end MOD16_021D7B48
+
+ thumb_func_start MOD16_021D7B5C
+MOD16_021D7B5C: ; 0x021D7B5C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ cmp r4, #0xa
+ blt _021D7B6A
+ bl ErrorHandling
+_021D7B6A:
+ ldr r0, _021D7B78 ; =0x00001A30
+ add r1, r5, r0
+ mov r0, #0x28
+ mul r0, r4
+ add r0, r1, r0
+ pop {r3, r4, r5, pc}
+ nop
+_021D7B78: .word 0x00001A30
+ thumb_func_end MOD16_021D7B5C
+
+ thumb_func_start MOD16_021D7B7C
+MOD16_021D7B7C: ; 0x021D7B7C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ cmp r4, #8
+ blt _021D7B8A
+ bl ErrorHandling
+_021D7B8A:
+ mov r0, #0x6f
+ lsl r0, r0, #6
+ add r1, r5, r0
+ mov r0, #0x28
+ mul r0, r4
+ add r0, r1, r0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D7B7C
+
+ thumb_func_start MOD16_021D7B98
+MOD16_021D7B98: ; 0x021D7B98
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r1, #4
+ bhi _021D7BDE
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7BAC: ; jump table
+ .short _021D7BB6 - _021D7BAC - 2 ; case 0
+ .short _021D7BC6 - _021D7BAC - 2 ; case 1
+ .short _021D7BBE - _021D7BAC - 2 ; case 2
+ .short _021D7BCE - _021D7BAC - 2 ; case 3
+ .short _021D7BCE - _021D7BAC - 2 ; case 4
+_021D7BB6:
+ mov r1, #1
+ bl FUN_02020208
+ pop {r4, pc}
+_021D7BBE:
+ mov r1, #2
+ bl FUN_02020208
+ pop {r4, pc}
+_021D7BC6:
+ mov r1, #3
+ bl FUN_02020208
+ pop {r4, pc}
+_021D7BCE:
+ bl FUN_0202022C
+ cmp r0, #0
+ beq _021D7BDE
+ ldr r1, _021D7BE0 ; =0xFFFFE000
+ add r0, r4, #0
+ bl FUN_020201E4
+_021D7BDE:
+ pop {r4, pc}
+ .align 2, 0
+_021D7BE0: .word 0xFFFFE000
+ thumb_func_end MOD16_021D7B98
+
+ thumb_func_start MOD16_021D7BE4
+MOD16_021D7BE4: ; 0x021D7BE4
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r2, #0
+ bl FUN_0202022C
+ cmp r0, #3
+ bhi _021D7C6C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7C00: ; jump table
+ .short _021D7C08 - _021D7C00 - 2 ; case 0
+ .short _021D7C22 - _021D7C00 - 2 ; case 1
+ .short _021D7C3C - _021D7C00 - 2 ; case 2
+ .short _021D7C56 - _021D7C00 - 2 ; case 3
+_021D7C08:
+ ldr r0, [r4]
+ add r1, sp, #4
+ add r2, sp, #0
+ bl FUN_020119A4
+ str r5, [sp]
+ ldr r0, [r4]
+ ldr r1, [sp, #4]
+ add r2, r5, #0
+ bl FUN_020118C4
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_021D7C22:
+ ldr r0, [r4]
+ add r1, sp, #4
+ add r2, sp, #0
+ bl FUN_020119A4
+ sub r2, r5, #2
+ str r2, [sp]
+ ldr r0, [r4]
+ ldr r1, [sp, #4]
+ bl FUN_020118C4
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_021D7C3C:
+ ldr r0, [r4]
+ add r1, sp, #4
+ add r2, sp, #0
+ bl FUN_020119A4
+ sub r2, r5, #4
+ str r2, [sp]
+ ldr r0, [r4]
+ ldr r1, [sp, #4]
+ bl FUN_020118C4
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_021D7C56:
+ ldr r0, [r4]
+ add r1, sp, #4
+ add r2, sp, #0
+ bl FUN_020119A4
+ sub r2, r5, #2
+ str r2, [sp]
+ ldr r0, [r4]
+ ldr r1, [sp, #4]
+ bl FUN_020118C4
+_021D7C6C:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D7BE4
+
+ thumb_func_start MOD16_021D7C70
+MOD16_021D7C70: ; 0x021D7C70
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r3, #0
+ bl MOD16_021D7BE4
+ add r0, r5, #0
+ bl FUN_0202022C
+ cmp r0, #2
+ ldr r0, [r4]
+ bge _021D7C90
+ add r1, r6, #0
+ bl FUN_02011AC0
+ pop {r4, r5, r6, pc}
+_021D7C90:
+ ldr r1, [sp, #0x10]
+ bl FUN_02011AC0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021D7C70
+
+ thumb_func_start MOD16_021D7C98
+MOD16_021D7C98: ; 0x021D7C98
+ strb r1, [r0]
+ strb r2, [r0, #1]
+ ldr r1, [sp]
+ strb r3, [r0, #2]
+ strb r1, [r0, #3]
+ bx lr
+ thumb_func_end MOD16_021D7C98
+
+ thumb_func_start MOD16_021D7CA4
+MOD16_021D7CA4: ; 0x021D7CA4
+ str r1, [r0]
+ str r2, [r0, #8]
+ ldr r2, [sp]
+ ldr r1, [sp, #4]
+ str r3, [r0, #4]
+ str r2, [r0, #0xc]
+ sub r1, r1, r2
+ str r1, [r0, #0x14]
+ ldr r2, [sp, #8]
+ ldr r1, [sp, #0xc]
+ str r2, [r0, #0x10]
+ sub r1, r1, r2
+ str r1, [r0, #0x18]
+ ldr r1, [sp, #0x10]
+ str r1, [r0, #0x20]
+ mov r1, #0
+ str r1, [r0, #0x1c]
+ bx lr
+ thumb_func_end MOD16_021D7CA4
+
+ thumb_func_start MOD16_021D7CC8
+MOD16_021D7CC8: ; 0x021D7CC8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ ldr r1, [r5, #0x1c]
+ ldr r0, [r5, #0x20]
+ cmp r1, r0
+ bgt _021D7D94
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r1, [r5, #8]
+ ldr r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r3, r2, #0
+ bl FUN_02018540
+ ldr r1, [r5, #0x14]
+ ldr r6, [r5, #0x1c]
+ add r0, r1, #0
+ ldr r4, [r5, #0x20]
+ mul r0, r6
+ add r1, r4, #0
+ bl _s32_div_f
+ ldr r1, [r5, #0x18]
+ add r7, r0, #0
+ add r0, r1, #0
+ mul r0, r6
+ add r1, r4, #0
+ bl _s32_div_f
+ ldr r1, [r5, #0xc]
+ ldr r2, [r5, #0x10]
+ add r1, r7, r1
+ add r4, r0, r2
+ cmp r1, #0
+ ble _021D7D4C
+ mov r0, #0x20
+ lsl r2, r1, #0x18
+ str r0, [sp]
+ lsr r2, r2, #0x18
+ str r2, [sp, #4]
+ ldr r2, [r5, #4]
+ sub r1, r0, r1
+ add r2, #0xc
+ str r2, [sp, #8]
+ mov r2, #0
+ lsl r1, r1, #0x18
+ str r2, [sp, #0xc]
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ ldr r1, [r5, #8]
+ ldr r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r3, r2, #0
+ bl FUN_02018170
+_021D7D4C:
+ mov r0, #0x20
+ sub r3, r0, r4
+ cmp r3, #0
+ ble _021D7D7C
+ lsl r1, r4, #0x18
+ str r0, [sp]
+ lsr r1, r1, #0x18
+ str r1, [sp, #4]
+ ldr r1, [r5, #4]
+ mov r2, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ ldr r1, [r5, #8]
+ lsl r3, r3, #0x18
+ lsl r1, r1, #0x18
+ ldr r0, [r5]
+ lsr r1, r1, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+_021D7D7C:
+ ldr r1, [r5, #8]
+ ldr r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x1c]
+ add sp, #0x1c
+ add r0, r0, #1
+ str r0, [r5, #0x1c]
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021D7D94:
+ mov r0, #1
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D7CC8
+
+ thumb_func_start MOD16_021D7D9C
+MOD16_021D7D9C: ; 0x021D7D9C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #4
+ add r1, r3, #0
+ add r7, r2, #0
+ str r3, [sp, #0x10]
+ bl FUN_020219F4
+ mov r1, #1
+ str r1, [sp]
+ add r1, r6, #0
+ mov r2, #3
+ mov r3, #2
+ add r4, r0, #0
+ bl FUN_02021B04
+ ldr r2, [sp, #0x10]
+ add r0, r7, #0
+ mov r1, #2
+ bl MOD16_021DBBC8
+ mov r1, #0
+ add r6, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D7E10 ; =0x00030201
+ add r2, r4, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ mov r1, #2
+ mov r3, #0x16
+ bl FUN_0201BDE0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D7E10 ; =0x00030201
+ add r2, r6, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ mov r1, #2
+ mov r3, #0x31
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl MOD16_021DBBAC
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7E10: .word 0x00030201
+ thumb_func_end MOD16_021D7D9C
+
+ thumb_func_start MOD16_021D7E14
+MOD16_021D7E14: ; 0x021D7E14
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl MOD16_021D9D04
+ cmp r0, #0
+ bne _021D7E36
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021D7E68
+ pop {r4, r5, r6, pc}
+_021D7E36:
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021D7E48
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D7E14
+
+ thumb_func_start MOD16_021D7E48
+MOD16_021D7E48: ; 0x021D7E48
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r2, #0
+ mov r1, #0xf
+ mov r2, #2
+ bl MOD16_021DB388
+ add r1, r6, #0
+ add r2, r6, #0
+ add r3, r5, #0
+ add r4, r0, #0
+ bl MOD16_021D7D9C
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D7E48
+
+ thumb_func_start MOD16_021D7E68
+MOD16_021D7E68: ; 0x021D7E68
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r2, #0
+ add r4, r0, #0
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ add r5, r1, #0
+ bl FUN_02069B40
+ add r7, r0, #0
+ cmp r7, #0
+ bgt _021D7E82
+ bl ErrorHandling
+_021D7E82:
+ add r0, r4, #0
+ mov r1, #0xf
+ mov r2, #2
+ bl MOD16_021DB388
+ add r1, r7, #0
+ add r2, r6, #0
+ add r3, r5, #0
+ add r4, r0, #0
+ bl MOD16_021D7D9C
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021D7E68
+
+ thumb_func_start MOD16_021D7E9C
+MOD16_021D7E9C: ; 0x021D7E9C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ add r7, r1, #0
+ add r5, r0, #0
+ add r4, r3, #0
+ add r0, r7, #0
+ str r2, [sp, #4]
+ bl MOD16_021D9D04
+ str r0, [sp, #8]
+ add r0, r7, #0
+ add r1, r4, #0
+ bl MOD16_021D9E08
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021D8838
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021D8854
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x58]
+ add r1, sp, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x5c]
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ bl FUN_02020044
+ add r0, r6, #0
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [r4, #4]
+ cmp r0, #2
+ bne _021D7F08
+ mov r0, #0x36
+ ldr r1, [sp, #0x58]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x5c]
+ add r1, sp, #0x10
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0xc]
+ bl FUN_02020044
+ ldr r0, [sp, #0xc]
+ mov r1, #1
+ bl FUN_020200A0
+ b _021D7F10
+_021D7F08:
+ ldr r0, [sp, #0xc]
+ mov r1, #0
+ bl FUN_020200A0
+_021D7F10:
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021D88D4
+ mov r1, #0x15
+ lsl r1, r1, #4
+ ldr r1, [r5, r1]
+ str r1, [sp, #0x1c]
+ mov r1, #0
+ bl FUN_02009E54
+ str r0, [sp, #0x24]
+ mov r0, #0x3f
+ mvn r0, r0
+ str r0, [sp, #0x2c]
+ add r0, #0x38
+ str r0, [sp, #0x30]
+ mov r0, #0
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x38]
+ mov r0, #1
+ str r0, [sp, #0x3c]
+ ldr r0, [sp, #4]
+ str r6, [sp, #0x28]
+ str r0, [sp, #0x40]
+ ldr r2, [sp, #4]
+ ldr r3, [r4]
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021D7E14
+ add r6, r0, #0
+ ldr r0, [sp, #8]
+ str r6, [sp, #0x20]
+ str r0, [sp]
+ ldr r3, [r4]
+ add r0, r5, #0
+ add r1, sp, #0x1c
+ mov r2, #0
+ bl MOD16_021D8870
+ add r0, r6, #0
+ bl MOD16_021DB3BC
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021D7E9C
+
+ thumb_func_start MOD16_021D7F6C
+MOD16_021D7F6C: ; 0x021D7F6C
+ mov r3, #0x6d
+ lsl r3, r3, #2
+ add r0, r0, r3
+ ldr r3, _021D7F78 ; =MOD16_021D7F7C
+ bx r3
+ nop
+_021D7F78: .word MOD16_021D7F7C
+ thumb_func_end MOD16_021D7F6C
+
+ thumb_func_start MOD16_021D7F7C
+MOD16_021D7F7C: ; 0x021D7F7C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ lsl r0, r1, #0xc
+ str r0, [sp]
+ lsl r0, r2, #0xc
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0
+ bl FUN_02020044
+ mov r0, #0x36
+ ldr r1, [sp]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ add r1, sp, #0
+ bl FUN_02020044
+ ldr r0, [r4, #8]
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D7FB0
+ bl FUN_02011938
+_021D7FB0:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ thumb_func_end MOD16_021D7F7C
+
+ thumb_func_start MOD16_021D7FB4
+MOD16_021D7FB4: ; 0x021D7FB4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r6, [sp, #0x28]
+ ldr r5, [sp, #0x2c]
+ cmp r2, #0xc9
+ bne _021D7FD4
+ str r5, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ str r2, [sp, #8]
+ add r2, r3, #0
+ add r3, r6, #0
+ bl MOD16_021D80CC
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021D7FD4:
+ mov r7, #0x67
+ lsl r7, r7, #2
+ cmp r2, r7
+ bne _021D7FF0
+ str r5, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ str r2, [sp, #8]
+ add r2, r3, #0
+ add r3, r6, #0
+ bl MOD16_021D81A0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021D7FF0:
+ add r4, r7, #1
+ cmp r2, r4
+ bne _021D800A
+ str r5, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ str r2, [sp, #8]
+ add r2, r3, #0
+ add r3, r6, #0
+ bl MOD16_021D81E4
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021D800A:
+ add r4, r7, #0
+ add r4, #0xa
+ cmp r2, r4
+ bne _021D8026
+ str r5, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ str r2, [sp, #8]
+ add r2, r3, #0
+ add r3, r6, #0
+ bl MOD16_021D8110
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021D8026:
+ add r4, r7, #0
+ add r4, #0xb
+ cmp r2, r4
+ bne _021D8042
+ str r5, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ str r2, [sp, #8]
+ add r2, r3, #0
+ add r3, r6, #0
+ bl MOD16_021D8158
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021D8042:
+ sub r7, #0x1a
+ cmp r2, r7
+ bne _021D805C
+ str r5, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ str r2, [sp, #8]
+ add r2, r3, #0
+ add r3, r6, #0
+ bl MOD16_021D822C
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021D805C:
+ str r6, [sp]
+ str r5, [sp, #4]
+ mov r4, #0
+ str r4, [sp, #8]
+ str r4, [sp, #0xc]
+ bl MOD16_021D8070
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D7FB4
+
+ thumb_func_start MOD16_021D8070
+MOD16_021D8070: ; 0x021D8070
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r7, r0, #0
+ ldr r0, _021D80C8 ; =0x00000147
+ add r5, r2, #0
+ add r6, r1, #0
+ mov r4, #0
+ str r3, [sp, #0x18]
+ cmp r5, r0
+ bne _021D808C
+ add r0, r6, #0
+ bl MOD16_021D9A30
+ add r4, r0, #0
+_021D808C:
+ ldr r2, [sp, #0x38]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021D98DC
+ add r6, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r6, r0
+ beq _021D80C0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x30]
+ str r4, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x34]
+ ldr r3, [sp, #0x18]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x3c]
+ add r1, r5, #0
+ str r0, [sp, #0x14]
+ add r0, r7, #0
+ add r2, r6, #0
+ bl MOD16_021D8718
+_021D80C0:
+ add r0, r6, #0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D80C8: .word 0x00000147
+ thumb_func_end MOD16_021D8070
+
+ thumb_func_start MOD16_021D80CC
+MOD16_021D80CC: ; 0x021D80CC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0
+ add r0, r1, #0
+ ldr r1, [sp, #0x34]
+ add r7, r2, #0
+ add r5, r3, #0
+ bl MOD16_021D98EC
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ beq _021D810A
+ mov r1, #0
+ lsl r0, r4, #0x18
+ str r1, [sp]
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [sp, #0x30]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x38]
+ mov r1, #0xc9
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ mov r2, #2
+ add r3, r7, #0
+ bl MOD16_021D8718
+_021D810A:
+ add r0, r4, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021D80CC
+
+ thumb_func_start MOD16_021D8110
+MOD16_021D8110: ; 0x021D8110
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0
+ add r0, r1, #0
+ ldr r1, [sp, #0x34]
+ add r7, r2, #0
+ add r5, r3, #0
+ bl MOD16_021D9904
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ beq _021D814C
+ mov r2, #0
+ lsl r0, r4, #0x18
+ str r2, [sp]
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ str r2, [sp, #8]
+ ldr r0, [sp, #0x30]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x38]
+ ldr r1, _021D8154 ; =0x000001A6
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ add r3, r7, #0
+ bl MOD16_021D8718
+_021D814C:
+ add r0, r4, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8154: .word 0x000001A6
+ thumb_func_end MOD16_021D8110
+
+ thumb_func_start MOD16_021D8158
+MOD16_021D8158: ; 0x021D8158
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0
+ add r0, r1, #0
+ ldr r1, [sp, #0x34]
+ add r7, r2, #0
+ add r5, r3, #0
+ bl MOD16_021D991C
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ beq _021D8194
+ mov r2, #0
+ lsl r0, r4, #0x18
+ str r2, [sp]
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ str r2, [sp, #8]
+ ldr r0, [sp, #0x30]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x38]
+ ldr r1, _021D819C ; =0x000001A7
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ add r3, r7, #0
+ bl MOD16_021D8718
+_021D8194:
+ add r0, r4, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D819C: .word 0x000001A7
+ thumb_func_end MOD16_021D8158
+
+ thumb_func_start MOD16_021D81A0
+MOD16_021D81A0: ; 0x021D81A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0
+ add r0, r1, #0
+ ldr r1, [sp, #0x34]
+ add r7, r2, #0
+ add r5, r3, #0
+ bl MOD16_021D9934
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ beq _021D81DE
+ mov r2, #0
+ lsl r0, r4, #0x18
+ str r2, [sp]
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ str r2, [sp, #8]
+ mov r1, #0x67
+ ldr r0, [sp, #0x30]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x38]
+ lsl r1, r1, #2
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ add r3, r7, #0
+ bl MOD16_021D8718
+_021D81DE:
+ add r0, r4, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021D81A0
+
+ thumb_func_start MOD16_021D81E4
+MOD16_021D81E4: ; 0x021D81E4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0
+ add r0, r1, #0
+ ldr r1, [sp, #0x34]
+ add r7, r2, #0
+ add r5, r3, #0
+ bl MOD16_021D994C
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ beq _021D8222
+ mov r1, #0
+ lsl r0, r4, #0x18
+ str r1, [sp]
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [sp, #0x30]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x38]
+ ldr r1, _021D8228 ; =0x0000019D
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ mov r2, #1
+ add r3, r7, #0
+ bl MOD16_021D8718
+_021D8222:
+ add r0, r4, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8228: .word 0x0000019D
+ thumb_func_end MOD16_021D81E4
+
+ thumb_func_start MOD16_021D822C
+MOD16_021D822C: ; 0x021D822C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0
+ add r0, r1, #0
+ ldr r1, [sp, #0x34]
+ add r7, r2, #0
+ add r5, r3, #0
+ bl MOD16_021D9A3C
+ add r4, r0, #0
+ cmp r4, #0xf
+ beq _021D8266
+ mov r1, #0
+ lsl r0, r4, #0x18
+ str r1, [sp]
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [sp, #0x30]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x38]
+ ldr r1, _021D826C ; =0x00000182
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ mov r2, #1
+ add r3, r7, #0
+ bl MOD16_021D8718
+_021D8266:
+ add r0, r4, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D826C: .word 0x00000182
+ thumb_func_end MOD16_021D822C
+
+ thumb_func_start MOD16_021D8270
+MOD16_021D8270: ; 0x021D8270
+ push {r3, r4, r5, lr}
+ ldr r2, _021D8294 ; =0x00000266
+ add r4, r0, #0
+ add r3, r1, #0
+ mov r0, #0
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r5, r0, #0
+ add r1, r4, #0
+ bl FUN_0200A914
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8294: .word 0x00000266
+ thumb_func_end MOD16_021D8270
+
+ thumb_func_start MOD16_021D8298
+MOD16_021D8298: ; 0x021D8298
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, _021D83D4 ; =0x00001A1C
+ add r0, r6, r0
+ bl MOD16_021DAC7C
+ ldr r0, _021D83D8 ; =0x00001A0C
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bne _021D82B0
+ bl ErrorHandling
+_021D82B0:
+ ldr r0, _021D83D8 ; =0x00001A0C
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ ldr r0, _021D83DC ; =0x00001A10
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bne _021D82C4
+ bl ErrorHandling
+_021D82C4:
+ ldr r0, _021D83DC ; =0x00001A10
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ ldr r0, _021D83E0 ; =0x00001A14
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bne _021D82D8
+ bl ErrorHandling
+_021D82D8:
+ ldr r0, _021D83E0 ; =0x00001A14
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ ldr r0, _021D83E4 ; =0x00001A18
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bne _021D82EC
+ bl ErrorHandling
+_021D82EC:
+ ldr r0, _021D83E4 ; =0x00001A18
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ mov r0, #0x1d
+ lsl r0, r0, #8
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bne _021D8302
+ bl ErrorHandling
+_021D8302:
+ mov r0, #0x1d
+ lsl r0, r0, #8
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ ldr r0, _021D83E8 ; =0x00001D04
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bne _021D8318
+ bl ErrorHandling
+_021D8318:
+ ldr r0, _021D83E8 ; =0x00001D04
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ ldr r0, _021D83EC ; =0x00001D08
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bne _021D832C
+ bl ErrorHandling
+_021D832C:
+ ldr r0, _021D83EC ; =0x00001D08
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ ldr r0, _021D83F0 ; =0x00001D0C
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bne _021D8340
+ bl ErrorHandling
+_021D8340:
+ ldr r0, _021D83F0 ; =0x00001D0C
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ ldr r0, _021D83F4 ; =0x00001A30
+ ldr r4, _021D83F8 ; =0x021FF440
+ mov r7, #0
+ add r5, r6, r0
+_021D8350:
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021D835A
+ add r0, r5, #0
+ blx r1
+_021D835A:
+ add r7, r7, #1
+ add r4, r4, #4
+ add r5, #0x28
+ cmp r7, #0xa
+ blt _021D8350
+ mov r0, #0x6f
+ lsl r0, r0, #6
+ ldr r4, _021D83FC ; =0x021FF3F8
+ mov r7, #0
+ add r5, r6, r0
+_021D836E:
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021D8378
+ add r0, r5, #0
+ blx r1
+_021D8378:
+ add r7, r7, #1
+ add r4, r4, #4
+ add r5, #0x28
+ cmp r7, #8
+ blt _021D836E
+ add r0, r6, #0
+ add r0, #0xc
+ bl MOD16_021D9A6C
+ add r1, r0, #0
+ ldr r0, [r6, #8]
+ bl FUN_0208A32C
+ add r0, r6, #0
+ add r0, #0xc
+ mov r1, #1
+ bl MOD16_021D9CD0
+ cmp r0, #1
+ bne _021D83B2
+ add r0, r6, #0
+ add r0, #0xc
+ bl MOD16_021D9A84
+ add r1, r0, #0
+ ldr r0, [r6, #8]
+ bl FUN_0208A334
+ b _021D83BA
+_021D83B2:
+ ldr r0, [r6, #8]
+ mov r1, #2
+ bl FUN_0208A334
+_021D83BA:
+ add r0, r6, #0
+ add r0, #0xc
+ bl MOD16_021D98B0
+ ldr r0, _021D8400 ; =0x0000177C
+ add r0, r6, r0
+ bl MOD16_021D8628
+ add r0, r6, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D83D4: .word 0x00001A1C
+_021D83D8: .word 0x00001A0C
+_021D83DC: .word 0x00001A10
+_021D83E0: .word 0x00001A14
+_021D83E4: .word 0x00001A18
+_021D83E8: .word 0x00001D04
+_021D83EC: .word 0x00001D08
+_021D83F0: .word 0x00001D0C
+_021D83F4: .word 0x00001A30
+_021D83F8: .word 0x021FF440
+_021D83FC: .word 0x021FF3F8
+_021D8400: .word 0x0000177C
+ thumb_func_end MOD16_021D8298
+
+ thumb_func_start MOD16_021D8404
+MOD16_021D8404: ; 0x021D8404
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D8420 ; =0x021FF468
+ add r3, sp, #0
+ mov r2, #5
+_021D840E:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D840E
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D8420: .word 0x021FF468
+ thumb_func_end MOD16_021D8404
+
+ thumb_func_start MOD16_021D8424
+MOD16_021D8424: ; 0x021D8424
+ push {r4, r5, lr}
+ sub sp, #0x24
+ add r4, r0, #0
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x80
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ add r2, r0, #0
+ str r4, [sp, #0x10]
+ bl FUN_02009EAC
+ ldr r5, _021D8474 ; =0x021FF3C8
+ add r3, sp, #0x14
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ ldr r1, _021D8478 ; =0x00200010
+ mov r2, #0x10
+ str r4, [sp, #0x20]
+ bl FUN_0201D060
+ mov r0, #0x20
+ add r1, r4, #0
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021D8474: .word 0x021FF3C8
+_021D8478: .word 0x00200010
+ thumb_func_end MOD16_021D8424
+
+ thumb_func_start MOD16_021D847C
+MOD16_021D847C: ; 0x021D847C
+ push {r4, lr}
+ ldr r1, _021D8498 ; =0x00001A0C
+ add r4, r0, #0
+ ldr r0, [r4, r1]
+ add r1, #0x10
+ add r1, r4, r1
+ mov r2, #1
+ bl MOD16_021DA888
+ ldr r0, _021D849C ; =0x000019FC
+ mov r1, #1
+ str r1, [r4, r0]
+ pop {r4, pc}
+ nop
+_021D8498: .word 0x00001A0C
+_021D849C: .word 0x000019FC
+ thumb_func_end MOD16_021D847C
+
+ thumb_func_start MOD16_021D84A0
+MOD16_021D84A0: ; 0x021D84A0
+ push {r3, lr}
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
+ ldr r0, _021D8500 ; =0x04000060
+ ldr r2, _021D8504 ; =0xFFFFCFFD
+ ldrh r1, [r0]
+ and r1, r2
+ strh r1, [r0]
+ ldrh r3, [r0]
+ add r1, r2, #2
+ and r3, r1
+ mov r1, #0x10
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r3, [r0]
+ ldr r1, _021D8508 ; =0x0000CFFB
+ and r1, r3
+ strh r1, [r0]
+ add r1, r2, #2
+ ldrh r3, [r0]
+ lsr r2, r2, #0x11
+ and r3, r1
+ mov r1, #8
+ orr r1, r3
+ strh r1, [r0]
+ mov r0, #0
+ add r1, r0, #0
+ mov r3, #0x3f
+ str r0, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _021D850C ; =0x04000540
+ mov r0, #2
+ str r0, [r1]
+ ldr r0, _021D8510 ; =0xBFFF0000
+ str r0, [r1, #0x40]
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020AEB70
+ mov r0, #1
+ lsl r0, r0, #0xe
+ mov r1, #1
+ bl FUN_020AEDF4
+ pop {r3, pc}
+ .align 2, 0
+_021D8500: .word 0x04000060
+_021D8504: .word 0xFFFFCFFD
+_021D8508: .word 0x0000CFFB
+_021D850C: .word 0x04000540
+_021D8510: .word 0xBFFF0000
+ thumb_func_end MOD16_021D84A0
+
+ thumb_func_start MOD16_021D8514
+MOD16_021D8514: ; 0x021D8514
+ push {r3, lr}
+ bl FUN_020AEAF4
+ bl FUN_020AEC60
+ pop {r3, pc}
+ thumb_func_end MOD16_021D8514
+
+ thumb_func_start MOD16_021D8520
+MOD16_021D8520: ; 0x021D8520
+ mov r0, #0x46
+ bx lr
+ thumb_func_end MOD16_021D8520
+
+ thumb_func_start MOD16_021D8524
+MOD16_021D8524: ; 0x021D8524
+ add r0, r0, #3
+ bx lr
+ thumb_func_end MOD16_021D8524
+
+ thumb_func_start MOD16_021D8528
+MOD16_021D8528: ; 0x021D8528
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021D8528
+
+ thumb_func_start MOD16_021D852C
+MOD16_021D852C: ; 0x021D852C
+ mov r0, #2
+ bx lr
+ thumb_func_end MOD16_021D852C
+
+ thumb_func_start MOD16_021D8530
+MOD16_021D8530: ; 0x021D8530
+ mov r0, #1
+ bx lr
+ thumb_func_end MOD16_021D8530
+
+ thumb_func_start MOD16_021D8534
+MOD16_021D8534: ; 0x021D8534
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ mov r0, #0x45
+ add r4, r1, #0
+ bl FUN_02006670
+ mov r1, #0x9f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r4, #0
+ bl FUN_02016B94
+ str r0, [r5]
+ mov r1, #1
+ mov r0, #0
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x18]
+ str r1, [sp, #0x1c]
+ add r0, sp, #0x10
+ bl FUN_02016BBC
+ ldr r0, [r5]
+ add r1, r4, #0
+ bl MOD16_021D8DC0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021D8F60
+ add r1, r5, #0
+ mov r0, #0x80
+ add r1, #0x14
+ add r2, r4, #0
+ bl FUN_02008C9C
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x20
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_02008DEC
+ mov r1, #5
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r0, #0x20
+ mov r1, #1
+ add r2, r4, #0
+ bl FUN_02008DEC
+ mov r1, #0x51
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x20
+ mov r1, #2
+ add r2, r4, #0
+ bl FUN_02008DEC
+ mov r1, #0x52
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x20
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_02008DEC
+ mov r1, #0x53
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ str r0, [sp]
+ ldr r0, [r5]
+ str r0, [sp, #4]
+ mov r0, #0x10
+ str r0, [sp, #8]
+ add r0, sp, #0
+ str r4, [sp, #0xc]
+ bl MOD16_021DB228
+ mov r1, #0x15
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #2
+ add r1, r4, #0
+ bl FUN_02002C50
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021D8F9C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021D9078
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021D921C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021D9400
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021D94EC
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D8534
+
+ thumb_func_start MOD16_021D8628
+MOD16_021D8628: ; 0x021D8628
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD16_021D92DC
+ add r0, r4, #0
+ bl MOD16_021D91A0
+ add r0, r4, #0
+ bl MOD16_021D959C
+ add r0, r4, #0
+ bl MOD16_021D94A4
+ add r0, r4, #0
+ bl MOD16_021D8F90
+ ldr r0, [r4]
+ bl MOD16_021D8F2C
+ ldr r0, [r4]
+ bl FUN_02016A18
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FD58
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ bl FUN_02008E2C
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02008E2C
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02008E2C
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02008E2C
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD16_021DB288
+ mov r0, #2
+ bl FUN_02002CF8
+ add r0, r4, #0
+ bl MOD16_021D9044
+ mov r0, #0x9f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020066F4
+ mov r2, #0xa
+ add r0, r4, #0
+ mov r1, #0
+ lsl r2, r2, #6
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ thumb_func_end MOD16_021D8628
+
+ thumb_func_start MOD16_021D86B4
+MOD16_021D86B4: ; 0x021D86B4
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FDEC
+ bl FUN_020B02C8
+ mov r0, #0x55
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02006ED4
+ mov r0, #0x5a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02013D5C
+ pop {r4, pc}
+ thumb_func_end MOD16_021D86B4
+
+ thumb_func_start MOD16_021D86DC
+MOD16_021D86DC: ; 0x021D86DC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0201AB60
+ mov r0, #0x55
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020081C4
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D86DC
+
+ thumb_func_start MOD16_021D86F4
+MOD16_021D86F4: ; 0x021D86F4
+ push {r3, lr}
+ mov r3, #0
+ bl MOD16_021D87BC
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D86F4
+
+ thumb_func_start MOD16_021D8700
+MOD16_021D8700: ; 0x021D8700
+ ldr r3, _021D8708 ; =MOD16_021D8804
+ mov r1, #0
+ bx r3
+ nop
+_021D8708: .word MOD16_021D8804
+ thumb_func_end MOD16_021D8700
+
+ thumb_func_start MOD16_021D870C
+MOD16_021D870C: ; 0x021D870C
+ ldr r3, _021D8714 ; =MOD16_021D8810
+ mov r2, #0
+ bx r3
+ nop
+_021D8714: .word MOD16_021D8810
+ thumb_func_end MOD16_021D870C
+
+ thumb_func_start MOD16_021D8718
+MOD16_021D8718: ; 0x021D8718
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r5, r1, #0
+ mov r1, #0x56
+ lsl r1, r1, #2
+ str r0, [sp, #0x10]
+ add r7, r0, r1
+ ldr r0, [sp, #0x54]
+ add r4, r2, #0
+ lsl r0, r0, #2
+ str r0, [sp, #0x14]
+ ldr r0, [r7, r0]
+ add r6, r3, #0
+ cmp r0, #0
+ beq _021D873A
+ bl FUN_02007534
+_021D873A:
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _021D874E
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0
+ bl FUN_02068A20
+ add r4, r0, #0
+_021D874E:
+ ldr r0, [sp, #0x40]
+ lsl r1, r5, #0x10
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ add r0, sp, #0x30
+ ldrb r0, [r0, #0x14]
+ lsl r2, r4, #0x18
+ lsl r3, r6, #0x18
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x48]
+ lsr r1, r1, #0x10
+ str r0, [sp, #8]
+ add r0, sp, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02068C00
+ cmp r6, #0
+ bne _021D8792
+ ldr r0, [sp, #0x48]
+ lsl r1, r4, #0x18
+ str r0, [sp]
+ add r3, sp, #0x30
+ lsl r0, r5, #0x10
+ lsl r2, r6, #0x18
+ ldrb r3, [r3, #0x14]
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ bl FUN_02068E88
+ add r3, r0, #0
+ b _021D8794
+_021D8792:
+ mov r3, #0
+_021D8794:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r1, #0x55
+ ldr r4, [sp, #0x50]
+ ldr r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ ldr r2, [sp, #0x4c]
+ add r1, sp, #0x18
+ add r3, r4, r3
+ bl FUN_020073A0
+ ldr r1, [sp, #0x14]
+ str r0, [r7, r1]
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D8718
+
+ thumb_func_start MOD16_021D87BC
+MOD16_021D87BC: ; 0x021D87BC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r1, #0x56
+ lsl r1, r1, #2
+ add r5, r0, r1
+ lsl r4, r3, #2
+ add r7, r2, #0
+ ldr r0, [r5, r4]
+ mov r1, #0
+ add r2, r6, #0
+ bl FUN_02007558
+ ldr r0, [r5, r4]
+ mov r1, #1
+ add r2, r7, #0
+ bl FUN_02007558
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021D87BC
+
+ thumb_func_start MOD16_021D87E0
+MOD16_021D87E0: ; 0x021D87E0
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r1, #0x56
+ lsl r1, r1, #2
+ add r5, r0, r1
+ lsl r4, r3, #2
+ ldr r0, [r5, r4]
+ mov r1, #0
+ add r7, r2, #0
+ bl FUN_0200782C
+ str r0, [r6]
+ ldr r0, [r5, r4]
+ mov r1, #1
+ bl FUN_0200782C
+ str r0, [r7]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021D87E0
+
+ thumb_func_start MOD16_021D8804
+MOD16_021D8804: ; 0x021D8804
+ lsl r1, r1, #2
+ add r1, r0, r1
+ mov r0, #0x56
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bx lr
+ thumb_func_end MOD16_021D8804
+
+ thumb_func_start MOD16_021D8810
+MOD16_021D8810: ; 0x021D8810
+ push {r3, lr}
+ lsl r2, r2, #2
+ add r2, r0, r2
+ mov r0, #0x56
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ cmp r0, #0
+ beq _021D8836
+ cmp r1, #1
+ bne _021D882E
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ pop {r3, pc}
+_021D882E:
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+_021D8836:
+ pop {r3, pc}
+ thumb_func_end MOD16_021D8810
+
+ thumb_func_start MOD16_021D8838
+MOD16_021D8838: ; 0x021D8838
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D884A
+ bl ErrorHandling
+_021D884A:
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D8838
+
+ thumb_func_start MOD16_021D8854
+MOD16_021D8854: ; 0x021D8854
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D8866
+ bl ErrorHandling
+_021D8866:
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D8854
+
+ thumb_func_start MOD16_021D8870
+MOD16_021D8870: ; 0x021D8870
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r4, [sp, #0x10]
+ str r4, [sp]
+ mov r4, #0x6d
+ lsl r4, r4, #2
+ add r0, r0, r4
+ bl MOD16_021D8888
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D8870
+
+ thumb_func_start MOD16_021D8888
+MOD16_021D8888: ; 0x021D8888
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x28]
+ add r6, r1, #0
+ add r4, r2, #0
+ cmp r3, r0
+ bne _021D88AA
+ ldr r1, [sp, #0x10]
+ ldr r0, [r5, #0x2c]
+ cmp r1, r0
+ bne _021D88AA
+ ldr r0, [r5, #8]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_020119D0
+ pop {r4, r5, r6, pc}
+_021D88AA:
+ ldr r0, [sp, #0x10]
+ str r3, [r5, #0x28]
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021D88BA
+ bl MOD16_021DB338
+_021D88BA:
+ cmp r4, #0
+ beq _021D88CA
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD16_021DB2D4
+ str r0, [r5, #8]
+ pop {r4, r5, r6, pc}
+_021D88CA:
+ add r0, r6, #0
+ bl MOD16_021DB2BC
+ str r0, [r5, #8]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021D8888
+
+ thumb_func_start MOD16_021D88D4
+MOD16_021D88D4: ; 0x021D88D4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #3
+ ble _021D88E2
+ bl ErrorHandling
+_021D88E2:
+ lsl r0, r5, #2
+ add r1, r4, r0
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D88D4
+
+ thumb_func_start MOD16_021D88F0
+MOD16_021D88F0: ; 0x021D88F0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl FUN_02020398
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_02020398
+ mov r0, #0x6f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D88F0
+
+ thumb_func_start MOD16_021D891C
+MOD16_021D891C: ; 0x021D891C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x6d
+ add r4, r1, #0
+ lsl r0, r0, #2
+ lsl r1, r4, #0x18
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0x18
+ bl FUN_02020238
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ lsl r1, r4, #0x18
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0x18
+ bl FUN_02020238
+ mov r0, #0x6f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ lsl r1, r4, #0x18
+ ldr r0, [r0]
+ lsr r1, r1, #0x18
+ bl FUN_02011A00
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D891C
+
+ thumb_func_start MOD16_021D8950
+MOD16_021D8950: ; 0x021D8950
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _021D8964
+ bl FUN_020200A0
+_021D8964:
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8974
+ add r1, r4, #0
+ bl FUN_020200A0
+_021D8974:
+ mov r0, #0x6f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D8986
+ add r1, r4, #0
+ bl FUN_020119D0
+_021D8986:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D8950
+
+ thumb_func_start MOD16_021D8988
+MOD16_021D8988: ; 0x021D8988
+ push {r4, r5}
+ ldr r4, [sp, #0x18]
+ ldr r5, [sp, #0x14]
+ str r4, [r0]
+ ldr r4, [sp, #0x10]
+ str r4, [r0, #4]
+ mov r4, #0x20
+ orr r4, r5
+ str r4, [r0, #8]
+ str r2, [r0, #0xc]
+ sub r2, r3, r2
+ str r2, [r0, #0x10]
+ ldr r3, [sp, #8]
+ ldr r2, [sp, #0xc]
+ str r3, [r0, #0x14]
+ sub r2, r2, r3
+ str r2, [r0, #0x18]
+ str r1, [r0, #0x1c]
+ mov r1, #0
+ str r1, [r0, #0x20]
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD16_021D8988
+
+ thumb_func_start MOD16_021D89B4
+MOD16_021D89B4: ; 0x021D89B4
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ bl MOD16_021D8A7C
+ cmp r0, #0
+ bne _021D8A02
+ add r0, r5, #0
+ bl MOD16_021D8A14
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021D8A48
+ ldr r1, [r5]
+ cmp r1, #0
+ bne _021D89EA
+ mov r1, #0
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D8A0C ; =0x04000050
+ ldr r1, [r5, #4]
+ ldr r2, [r5, #8]
+ add r3, r4, #0
+ bl G2x_SetBlendBrightnessExt_
+ b _021D89FC
+_021D89EA:
+ mov r1, #0
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D8A10 ; =0x04001050
+ ldr r1, [r5, #4]
+ ldr r2, [r5, #8]
+ add r3, r4, #0
+ bl G2x_SetBlendBrightnessExt_
+_021D89FC:
+ ldr r0, [r5, #0x20]
+ add r0, r0, #1
+ str r0, [r5, #0x20]
+_021D8A02:
+ add r0, r5, #0
+ bl MOD16_021D8A7C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8A0C: .word 0x04000050
+_021D8A10: .word 0x04001050
+ thumb_func_end MOD16_021D89B4
+
+ thumb_func_start MOD16_021D8A14
+MOD16_021D8A14: ; 0x021D8A14
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ ldr r2, [r4, #0x20]
+ lsl r0, r0, #0xc
+ lsl r2, r2, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ ldr r1, [r4, #0x1c]
+ lsl r1, r1, #0xc
+ bl FX_Div
+ asr r1, r0, #0xc
+ ldr r0, [r4, #0x14]
+ add r0, r1, r0
+ pop {r4, pc}
+ thumb_func_end MOD16_021D8A14
+
+ thumb_func_start MOD16_021D8A48
+MOD16_021D8A48: ; 0x021D8A48
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ ldr r2, [r4, #0x20]
+ lsl r0, r0, #0xc
+ lsl r2, r2, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ ldr r1, [r4, #0x1c]
+ lsl r1, r1, #0xc
+ bl FX_Div
+ asr r1, r0, #0xc
+ ldr r0, [r4, #0xc]
+ add r0, r1, r0
+ pop {r4, pc}
+ thumb_func_end MOD16_021D8A48
+
+ thumb_func_start MOD16_021D8A7C
+MOD16_021D8A7C: ; 0x021D8A7C
+ ldr r1, [r0, #0x20]
+ ldr r0, [r0, #0x1c]
+ cmp r1, r0
+ ble _021D8A88
+ mov r0, #1
+ bx lr
+_021D8A88:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021D8A7C
+
+ thumb_func_start MOD16_021D8A8C
+MOD16_021D8A8C: ; 0x021D8A8C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ bl MOD16_021D8A48
+ neg r4, r0
+ add r0, r5, #0
+ bl MOD16_021D8700
+ mov r3, #0
+ add r1, r4, #0
+ add r2, r4, #0
+ str r3, [sp]
+ bl FUN_02007E68
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D8A8C
+
+ thumb_func_start MOD16_021D8AAC
+MOD16_021D8AAC: ; 0x021D8AAC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r2, #0
+ add r0, r1, #0
+ bl MOD16_021D8A48
+ neg r6, r0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021D8804
+ mov r3, #0
+ add r1, r6, #0
+ add r2, r6, #0
+ str r3, [sp]
+ bl FUN_02007E68
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021D8AAC
+
+ thumb_func_start MOD16_021D8AD4
+MOD16_021D8AD4: ; 0x021D8AD4
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r5, r0, #0
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021DB540
+ add r0, r5, #0
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD16_021DB568
+ ldr r0, [sp, #4]
+ str r0, [sp]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #8]
+ add r0, r4, #0
+ bl MOD16_021D8B04
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D8AD4
+
+ thumb_func_start MOD16_021D8B04
+MOD16_021D8B04: ; 0x021D8B04
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r4, [sp, #0x10]
+ str r4, [sp]
+ bl MOD16_021D96B4
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD16_021D8B04
+
+ thumb_func_start MOD16_021D8B14
+MOD16_021D8B14: ; 0x021D8B14
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+_021D8B1C:
+ ldr r0, [r5]
+ add r1, r6, #0
+ bl FUN_020200A0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D8B1C
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D8B14
+
+ thumb_func_start MOD16_021D8B30
+MOD16_021D8B30: ; 0x021D8B30
+ ldr r3, _021D8B38 ; =0x02020129
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D8B38: .word 0x02020129
+ thumb_func_end MOD16_021D8B30
+
+ thumb_func_start MOD16_021D8B3C
+MOD16_021D8B3C: ; 0x021D8B3C
+ str r1, [r0, #0x30]
+ cmp r1, #0
+ bne _021D8B46
+ mov r1, #0
+ str r1, [r0, #0x34]
+_021D8B46:
+ bx lr
+ thumb_func_end MOD16_021D8B3C
+
+ thumb_func_start MOD16_021D8B48
+MOD16_021D8B48: ; 0x021D8B48
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r5, r0, #0
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021DB540
+ add r0, r5, #0
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD16_021DB568
+ ldr r0, [sp, #4]
+ str r0, [sp]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #8]
+ add r0, r4, #0
+ bl MOD16_021D8B78
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D8B48
+
+ thumb_func_start MOD16_021D8B78
+MOD16_021D8B78: ; 0x021D8B78
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r3, #0
+ mov r3, #0x81
+ add r4, r1, #0
+ add r5, r0, #0
+ lsl r3, r3, #2
+ add r6, r2, #0
+ str r4, [r5, r3]
+ add r0, r3, #4
+ str r6, [r5, r0]
+ add r0, r3, #0
+ add r0, #8
+ str r7, [r5, r0]
+ add r0, r3, #0
+ ldr r1, [sp, #0x18]
+ add r0, #0xc
+ str r1, [r5, r0]
+ add r0, r3, #0
+ add r0, #0xc
+ ldr r0, [r5, r0]
+ add r2, r3, #4
+ str r0, [sp]
+ add r0, r3, #0
+ ldr r1, [r5, r3]
+ add r3, #8
+ sub r0, #0x20
+ ldr r2, [r5, r2]
+ ldr r3, [r5, r3]
+ add r0, r5, r0
+ bl MOD16_021D9668
+ mov r0, #0x26
+ lsl r0, r0, #4
+ str r4, [r5, r0]
+ add r1, r0, #4
+ str r6, [r5, r1]
+ add r1, r0, #0
+ add r1, #8
+ str r7, [r5, r1]
+ add r1, r0, #0
+ ldr r2, [sp, #0x18]
+ add r1, #0xc
+ str r2, [r5, r1]
+ mov r1, #0
+ add r0, #0x10
+ str r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D8B78
+
+ thumb_func_start MOD16_021D8BD8
+MOD16_021D8BD8: ; 0x021D8BD8
+ str r1, [r0]
+ str r3, [r0, #4]
+ str r1, [r0, #8]
+ str r3, [r0, #0xc]
+ sub r1, r2, r1
+ str r1, [r0, #0x10]
+ ldr r1, [sp]
+ sub r1, r1, r3
+ str r1, [r0, #0x14]
+ ldr r1, [sp, #4]
+ str r1, [r0, #0x1c]
+ mov r1, #0
+ str r1, [r0, #0x18]
+ bx lr
+ thumb_func_end MOD16_021D8BD8
+
+ thumb_func_start MOD16_021D8BF4
+MOD16_021D8BF4: ; 0x021D8BF4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ ldr r2, [r5, #0x18]
+ lsl r0, r0, #0xc
+ lsl r2, r2, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ ldr r1, [r5, #0x1c]
+ lsl r1, r1, #0xc
+ bl FX_Div
+ add r4, r0, #0
+ ldr r0, [r5, #0x14]
+ ldr r2, [r5, #0x18]
+ lsl r0, r0, #0xc
+ lsl r2, r2, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ ldr r1, [r5, #0x1c]
+ lsl r1, r1, #0xc
+ bl FX_Div
+ ldr r1, [r5, #8]
+ asr r2, r4, #0xc
+ add r1, r2, r1
+ str r1, [r5]
+ asr r1, r0, #0xc
+ ldr r0, [r5, #0xc]
+ add r0, r1, r0
+ str r0, [r5, #4]
+ ldr r0, [r5, #0x18]
+ ldr r1, [r5, #0x1c]
+ add r0, r0, #1
+ cmp r0, r1
+ bgt _021D8C6A
+ str r0, [r5, #0x18]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D8C6A:
+ str r1, [r5, #0x18]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D8BF4
+
+ thumb_func_start MOD16_021D8C70
+MOD16_021D8C70: ; 0x021D8C70
+ mov r1, #0x9f
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bx lr
+ thumb_func_end MOD16_021D8C70
+
+ thumb_func_start MOD16_021D8C78
+MOD16_021D8C78: ; 0x021D8C78
+ push {r4, r5, r6, lr}
+ add r5, r2, #0
+ mov r2, #0x9f
+ lsl r2, r2, #2
+ add r6, r3, #0
+ ldr r0, [r0, r2]
+ add r2, r6, #0
+ bl FUN_02006704
+ add r4, r0, #0
+ beq _021D8CB0
+ cmp r5, #0
+ beq _021D8CB0
+ ldr r1, [r4]
+ add r0, r6, #0
+ lsr r1, r1, #8
+ bl FUN_02016998
+ add r5, r0, #0
+ beq _021D8CAE
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MI_UncompressLZ8
+ add r0, r4, #0
+ bl FUN_02016A18
+_021D8CAE:
+ add r4, r5, #0
+_021D8CB0:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021D8C78
+
+ thumb_func_start MOD16_021D8CB4
+MOD16_021D8CB4: ; 0x021D8CB4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r2, #0
+ add r5, r3, #0
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x2c]
+ ldr r4, [sp, #0x24]
+ bl MOD16_021D8C78
+ add r7, r0, #0
+ beq _021D8CF6
+ add r1, sp, #4
+ bl FUN_020B0030
+ cmp r0, #0
+ beq _021D8CF0
+ cmp r4, #0
+ bne _021D8CDC
+ ldr r0, [sp, #4]
+ ldr r4, [r0, #0x10]
+_021D8CDC:
+ ldr r0, [sp, #0x20]
+ lsl r1, r5, #0x18
+ str r0, [sp]
+ ldr r2, [sp, #4]
+ add r0, r6, #0
+ ldr r2, [r2, #0x14]
+ lsr r1, r1, #0x18
+ add r3, r4, #0
+ bl FUN_02017E14
+_021D8CF0:
+ add r0, r7, #0
+ bl FUN_02016A18
+_021D8CF6:
+ add r0, r4, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021D8CB4
+
+ thumb_func_start MOD16_021D8CFC
+MOD16_021D8CFC: ; 0x021D8CFC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r3, #0
+ add r5, r2, #0
+ ldr r3, [sp, #0x1c]
+ mov r2, #0
+ ldr r4, [sp, #0x18]
+ bl MOD16_021D8C78
+ add r7, r0, #0
+ beq _021D8D42
+ add r1, sp, #0
+ bl FUN_020B0138
+ cmp r0, #0
+ beq _021D8D3C
+ cmp r4, #0
+ bne _021D8D22
+ ldr r0, [sp]
+ ldr r4, [r0, #8]
+_021D8D22:
+ ldr r0, [sp]
+ add r1, r4, #0
+ ldr r0, [r0, #0xc]
+ bl DC_FlushRange
+ ldr r0, [sp]
+ add r2, r4, #0
+ ldr r3, _021D8D44 ; =0x021FF548
+ lsl r4, r5, #2
+ ldr r0, [r0, #0xc]
+ ldr r3, [r3, r4]
+ add r1, r6, #0
+ blx r3
+_021D8D3C:
+ add r0, r7, #0
+ bl FUN_02016A18
+_021D8D42:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8D44: .word 0x021FF548
+ thumb_func_end MOD16_021D8CFC
+
+ thumb_func_start MOD16_021D8D48
+MOD16_021D8D48: ; 0x021D8D48
+ push {r3, r4, r5, lr}
+ add r5, r3, #0
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D8C78
+ add r4, r0, #0
+ beq _021D8D6A
+ add r1, r5, #0
+ bl FUN_020B0180
+ cmp r0, #0
+ bne _021D8D6A
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D8D6A:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D8D48
+
+ thumb_func_start MOD16_021D8D70
+MOD16_021D8D70: ; 0x021D8D70
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ mov r2, #0
+ bl MOD16_021D8C78
+ add r4, r0, #0
+ beq _021D8D92
+ add r1, r5, #0
+ bl FUN_020B0138
+ cmp r0, #0
+ bne _021D8D92
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D8D92:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D8D70
+
+ thumb_func_start MOD16_021D8D98
+MOD16_021D8D98: ; 0x021D8D98
+ push {r3, r4, r5, lr}
+ add r5, r3, #0
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D8C78
+ add r4, r0, #0
+ beq _021D8DBA
+ add r1, r5, #0
+ bl FUN_020B0030
+ cmp r0, #0
+ bne _021D8DBA
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D8DBA:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D8D98
+
+ thumb_func_start MOD16_021D8DC0
+MOD16_021D8DC0: ; 0x021D8DC0
+ push {r4, r5, r6, lr}
+ sub sp, #0xa8
+ ldr r6, _021D8F14 ; =0x021FF510
+ add r3, sp, #0x8c
+ add r5, r0, #0
+ add r4, r1, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_02018744
+ ldr r6, _021D8F18 ; =0x021FF4F4
+ add r3, sp, #0x70
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ mov r1, #2
+ str r0, [r3]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ add r0, r5, #0
+ mov r1, #2
+ bl FUN_02018744
+ mov r0, #0
+ mov r1, #2
+ bl FUN_020178BC
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r6, _021D8F1C ; =0x021FF4D8
+ add r3, sp, #0x54
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ mov r1, #3
+ str r0, [r3]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ add r0, r5, #0
+ mov r1, #3
+ bl FUN_02018744
+ ldr r6, _021D8F20 ; =0x021FF4BC
+ add r3, sp, #0x38
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ mov r1, #5
+ str r0, [r3]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #5
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ add r0, r5, #0
+ mov r1, #5
+ bl FUN_02018744
+ ldr r6, _021D8F24 ; =0x021FF4A0
+ add r3, sp, #0x1c
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ mov r1, #6
+ str r0, [r3]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #6
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ add r0, r5, #0
+ mov r1, #6
+ bl FUN_02018744
+ ldr r6, _021D8F28 ; =0x021FF52C
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ mov r1, #7
+ str r0, [r3]
+ add r0, r5, #0
+ mov r3, #1
+ bl FUN_02016C18
+ mov r0, #7
+ mov r1, #0x40
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ add r0, r5, #0
+ mov r1, #7
+ bl FUN_02018744
+ add sp, #0xa8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D8F14: .word 0x021FF510
+_021D8F18: .word 0x021FF4F4
+_021D8F1C: .word 0x021FF4D8
+_021D8F20: .word 0x021FF4BC
+_021D8F24: .word 0x021FF4A0
+_021D8F28: .word 0x021FF52C
+ thumb_func_end MOD16_021D8DC0
+
+ thumb_func_start MOD16_021D8F2C
+MOD16_021D8F2C: ; 0x021D8F2C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #7
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #6
+ bl FUN_020178A0
+ pop {r4, pc}
+ thumb_func_end MOD16_021D8F2C
+
+ thumb_func_start MOD16_021D8F60
+MOD16_021D8F60: ; 0x021D8F60
+ push {r3, r4, lr}
+ sub sp, #0x14
+ mov r3, #0
+ add r4, r0, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ str r3, [sp, #0x10]
+ ldr r0, [r4]
+ add r1, r4, #4
+ mov r2, #1
+ bl FUN_02019064
+ add r0, r4, #4
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #4
+ bl FUN_020191D0
+ add sp, #0x14
+ pop {r3, r4, pc}
+ thumb_func_end MOD16_021D8F60
+
+ thumb_func_start MOD16_021D8F90
+MOD16_021D8F90: ; 0x021D8F90
+ ldr r3, _021D8F98 ; =0x02019179
+ add r0, r0, #4
+ bx r3
+ nop
+_021D8F98: .word 0x02019179
+ thumb_func_end MOD16_021D8F90
+
+ thumb_func_start MOD16_021D8F9C
+MOD16_021D8F9C: ; 0x021D8F9C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r1, #0
+ add r5, r0, #0
+ add r0, r7, #0
+ bl FUN_02006D98
+ mov r1, #0x55
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r3, _021D9030 ; =0x021064B8
+ mov r0, #2
+ mov r1, #0
+ ldr r3, [r3]
+ lsl r0, r0, #0xe
+ add r2, r1, #0
+ blx r3
+ ldr r3, _021D9034 ; =0x021064C0
+ add r4, r0, #0
+ ldr r3, [r3]
+ mov r0, #0x80
+ mov r1, #0
+ mov r2, #1
+ blx r3
+ ldr r2, _021D9038 ; =0x7FFF0000
+ add r6, r0, #0
+ mov r0, #0x55
+ lsl r0, r0, #2
+ and r2, r4
+ lsl r1, r4, #0x10
+ lsr r2, r2, #0x10
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0xd
+ lsl r2, r2, #4
+ bl FUN_020081A8
+ ldr r2, _021D903C ; =0xFFFF0000
+ mov r0, #0x55
+ lsl r0, r0, #2
+ and r2, r6
+ lsl r1, r6, #0x10
+ lsr r2, r2, #0x10
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0xd
+ lsl r2, r2, #3
+ bl FUN_020081B4
+ mov r2, #0
+ mov r0, #0x56
+ add r3, r5, #0
+ add r1, r2, #0
+ lsl r0, r0, #2
+_021D9004:
+ add r2, r2, #1
+ str r1, [r3, r0]
+ add r3, r3, #4
+ cmp r2, #4
+ blt _021D9004
+ ldr r4, _021D9040 ; =0x021FF490
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ str r7, [sp, #0xc]
+ bl FUN_02013CD4
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9030: .word 0x021064B8
+_021D9034: .word 0x021064C0
+_021D9038: .word 0x7FFF0000
+_021D903C: .word 0xFFFF0000
+_021D9040: .word 0x021FF490
+ thumb_func_end MOD16_021D8F9C
+
+ thumb_func_start MOD16_021D9044
+MOD16_021D9044: ; 0x021D9044
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r6, #0x56
+ mov r4, #0
+ add r5, r7, #0
+ lsl r6, r6, #2
+_021D9050:
+ ldr r0, [r5, r6]
+ cmp r0, #0
+ beq _021D905A
+ bl FUN_02007534
+_021D905A:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D9050
+ mov r0, #0x55
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ bl FUN_020072E8
+ mov r0, #0x5a
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ bl FUN_02013D18
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021D9044
+
+ thumb_func_start MOD16_021D9078
+MOD16_021D9078: ; 0x021D9078
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r1, #0
+ mov r1, #0x6d
+ add r5, r0, #0
+ lsl r1, r1, #2
+ add r4, r5, r1
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021D9114 ; =0x00000BB8
+ mov r3, #1
+ str r0, [sp]
+ str r3, [sp, #4]
+ mov r0, #5
+ str r6, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ add r1, r7, #0
+ mov r2, #0x4e
+ bl FUN_020091E0
+ str r0, [r4, #0xc]
+ bl FUN_02009B04
+ ldr r0, [r4, #0xc]
+ bl FUN_02009474
+ ldr r0, _021D9114 ; =0x00000BB8
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r6, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r2, #3
+ mov r3, #0
+ bl FUN_02009298
+ str r0, [r4, #0x10]
+ bl FUN_02009D68
+ ldr r0, [r4, #0x10]
+ bl FUN_02009474
+ ldr r0, _021D9114 ; =0x00000BB8
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r6, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r2, #0x4c
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r4, #0x14]
+ ldr r0, _021D9114 ; =0x00000BB8
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r6, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r2, #0x4d
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r4, #0x18]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9114: .word 0x00000BB8
+ thumb_func_end MOD16_021D9078
+
+ thumb_func_start MOD16_021D9118
+MOD16_021D9118: ; 0x021D9118
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, _021D919C ; =0x00000BB8
+ mov r3, #1
+ str r0, [sp]
+ add r6, r2, #0
+ str r3, [sp, #4]
+ add r4, r1, #0
+ str r6, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x45
+ mov r2, #0x4e
+ bl FUN_02008F34
+ str r0, [r5, #0xc]
+ bl FUN_02009B04
+ ldr r0, [r5, #0xc]
+ bl FUN_02009474
+ ldr r0, _021D919C ; =0x00000BB8
+ mov r1, #0x45
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r6, [sp, #0xc]
+ ldr r0, [r4, #4]
+ mov r2, #3
+ mov r3, #0
+ bl FUN_02008FEC
+ str r0, [r5, #0x10]
+ bl FUN_02009D68
+ ldr r0, [r5, #0x10]
+ bl FUN_02009474
+ ldr r0, _021D919C ; =0x00000BB8
+ mov r1, #0x45
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldr r0, [r4, #8]
+ mov r2, #0x4c
+ mov r3, #1
+ bl FUN_020090AC
+ str r0, [r5, #0x14]
+ ldr r0, _021D919C ; =0x00000BB8
+ mov r1, #0x45
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldr r0, [r4, #0xc]
+ mov r2, #0x4d
+ mov r3, #1
+ bl FUN_020090AC
+ str r0, [r5, #0x18]
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_021D919C: .word 0x00000BB8
+ thumb_func_end MOD16_021D9118
+
+ thumb_func_start MOD16_021D91A0
+MOD16_021D91A0: ; 0x021D91A0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ add r4, r5, r0
+ ldr r0, [r4, #0xc]
+ bl FUN_02009C0C
+ ldr r0, [r4, #0x10]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #0xc]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #0x10]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #0x14]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #0x18]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D91A0
+
+ thumb_func_start MOD16_021D91E8
+MOD16_021D91E8: ; 0x021D91E8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0
+ bl FUN_02009C0C
+ ldr r0, [r5, #0x10]
+ bl FUN_02009E04
+ ldr r0, [r4]
+ ldr r1, [r5, #0xc]
+ bl FUN_02009490
+ ldr r0, [r4, #4]
+ ldr r1, [r5, #0x10]
+ bl FUN_02009490
+ ldr r0, [r4, #8]
+ ldr r1, [r5, #0x14]
+ bl FUN_02009490
+ ldr r0, [r4, #0xc]
+ ldr r1, [r5, #0x18]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D91E8
+
+ thumb_func_start MOD16_021D921C
+MOD16_021D921C: ; 0x021D921C
+ push {r3, r4, r5, lr}
+ sub sp, #0x70
+ add r4, r1, #0
+ ldr r1, _021D92D8 ; =0x00000BB8
+ add r5, r0, #0
+ mov r0, #0
+ str r1, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r3, #5
+ str r0, [sp, #0x10]
+ lsl r3, r3, #6
+ ldr r2, [r5, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r5, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r5, r2]
+ add r3, #0xc
+ str r2, [sp, #0x1c]
+ ldr r2, [r5, r3]
+ add r3, r1, #0
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, sp, #0x4c
+ add r2, r1, #0
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #1
+ str r0, [sp, #0x44]
+ add r0, sp, #0x2c
+ str r1, [sp, #0x40]
+ str r4, [sp, #0x48]
+ str r1, [sp, #0x34]
+ str r1, [sp, #0x38]
+ bl FUN_0201FF84
+ mov r1, #0x6d
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_02020310
+ mov r0, #0
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_02020130
+ mov r1, #0x6f
+ lsl r1, r1, #2
+ mov r2, #0
+ add r0, r1, #0
+ str r2, [r5, r1]
+ add r0, #0x20
+ str r2, [r5, r0]
+ add r1, #0x24
+ str r2, [r5, r1]
+ add sp, #0x70
+ pop {r3, r4, r5, pc}
+ nop
+_021D92D8: .word 0x00000BB8
+ thumb_func_end MOD16_021D921C
+
+ thumb_func_start MOD16_021D92DC
+MOD16_021D92DC: ; 0x021D92DC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FFC8
+ mov r0, #0x6d
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_0201FFC8
+ mov r0, #0x6e
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r0, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D9316
+ bl MOD16_021DB338
+ mov r0, #0x6f
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_021D9316:
+ pop {r4, pc}
+ thumb_func_end MOD16_021D92DC
+
+ thumb_func_start MOD16_021D9318
+MOD16_021D9318: ; 0x021D9318
+ push {r4, r5, r6, lr}
+ sub sp, #0x70
+ add r4, r1, #0
+ ldr r1, _021D93A8 ; =0x00000BB8
+ add r5, r0, #0
+ mov r0, #0
+ add r6, r3, #0
+ str r1, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ ldr r3, [sp, #0x80]
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ ldr r3, [r2]
+ str r3, [sp, #0x14]
+ ldr r3, [r2, #4]
+ str r3, [sp, #0x18]
+ ldr r3, [r2, #8]
+ str r3, [sp, #0x1c]
+ ldr r2, [r2, #0xc]
+ add r3, r1, #0
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, sp, #0x4c
+ add r2, r1, #0
+ bl FUN_02008AA4
+ mov r1, #0
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #1
+ str r0, [sp, #0x44]
+ str r4, [sp, #0x2c]
+ str r1, [sp, #0x40]
+ str r6, [sp, #0x48]
+ str r1, [sp, #0x34]
+ str r1, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ str r0, [r5]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r5]
+ mov r1, #1
+ bl FUN_02020310
+ mov r0, #0
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ str r0, [r5, #4]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r5, #4]
+ mov r1, #1
+ bl FUN_02020130
+ mov r0, #0
+ str r0, [r5, #8]
+ str r0, [r5, #0x28]
+ str r0, [r5, #0x2c]
+ add sp, #0x70
+ pop {r4, r5, r6, pc}
+ nop
+_021D93A8: .word 0x00000BB8
+ thumb_func_end MOD16_021D9318
+
+ thumb_func_start MOD16_021D93AC
+MOD16_021D93AC: ; 0x021D93AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0201FFC8
+ mov r0, #0
+ str r0, [r4]
+ ldr r0, [r4, #4]
+ bl FUN_0201FFC8
+ mov r0, #0
+ str r0, [r4, #4]
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021D93D2
+ bl MOD16_021DB338
+ mov r0, #0
+ str r0, [r4, #8]
+_021D93D2:
+ pop {r4, pc}
+ thumb_func_end MOD16_021D93AC
+
+ thumb_func_start MOD16_021D93D4
+MOD16_021D93D4: ; 0x021D93D4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _021D93E4
+ bl FUN_020200A0
+_021D93E4:
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _021D93F0
+ add r1, r4, #0
+ bl FUN_020200A0
+_021D93F0:
+ ldr r0, [r5, #8]
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D93FE
+ add r1, r4, #0
+ bl FUN_020119D0
+_021D93FE:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D93D4
+
+ thumb_func_start MOD16_021D9400
+MOD16_021D9400: ; 0x021D9400
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r1, #0
+ mov r1, #0x79
+ add r5, r0, #0
+ lsl r1, r1, #2
+ add r4, r5, r1
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021D94A0 ; =0x00002EE0
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #5
+ str r6, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ mov r2, #0x77
+ mov r3, #1
+ bl FUN_020091E0
+ str r0, [r4, #0x10]
+ bl FUN_02009B04
+ ldr r0, [r4, #0x10]
+ bl FUN_02009474
+ ldr r0, _021D94A0 ; =0x00002EE0
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r6, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r2, #0x15
+ mov r3, #0
+ bl FUN_02009298
+ str r0, [r4, #0x14]
+ bl FUN_02009D68
+ ldr r0, [r4, #0x14]
+ bl FUN_02009474
+ ldr r0, _021D94A0 ; =0x00002EE0
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r6, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r2, #0x78
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r4, #0x18]
+ ldr r0, _021D94A0 ; =0x00002EE0
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r6, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r2, #0x76
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r4, #0x1c]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D94A0: .word 0x00002EE0
+ thumb_func_end MOD16_021D9400
+
+ thumb_func_start MOD16_021D94A4
+MOD16_021D94A4: ; 0x021D94A4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x79
+ lsl r0, r0, #2
+ add r4, r5, r0
+ ldr r0, [r4, #0x10]
+ bl FUN_02009C0C
+ ldr r0, [r4, #0x14]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #0x10]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #0x14]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #0x18]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #0x1c]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D94A4
+
+ thumb_func_start MOD16_021D94EC
+MOD16_021D94EC: ; 0x021D94EC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x70
+ add r5, r1, #0
+ ldr r1, _021D9598 ; =0x00002EE0
+ add r6, r0, #0
+ mov r0, #0
+ mov r2, #0x79
+ lsl r2, r2, #2
+ str r1, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ sub r2, #0xa4
+ ldr r2, [r6, r2]
+ add r3, r1, #0
+ str r2, [sp, #0x14]
+ mov r2, #0x79
+ lsl r2, r2, #2
+ sub r2, #0xa0
+ ldr r2, [r6, r2]
+ str r2, [sp, #0x18]
+ mov r2, #0x79
+ lsl r2, r2, #2
+ sub r2, #0x9c
+ ldr r2, [r6, r2]
+ str r2, [sp, #0x1c]
+ mov r2, #0x79
+ lsl r2, r2, #2
+ sub r2, #0x98
+ ldr r2, [r6, r2]
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, sp, #0x4c
+ add r2, r1, #0
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r4, #0
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #2
+ str r0, [sp, #0x44]
+ mov r0, #0x49
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x38]
+ mov r0, #0x19
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ mov r0, #0x79
+ lsl r0, r0, #2
+ str r5, [sp, #0x48]
+ str r4, [sp, #0x40]
+ add r5, r6, r0
+ add r7, sp, #0x2c
+_021D9566:
+ add r0, r7, #0
+ bl FUN_0201FF84
+ add r1, r4, #0
+ stmia r5!, {r0}
+ bl FUN_02020130
+ add r4, r4, #1
+ cmp r4, #4
+ blt _021D9566
+ mov r0, #0x79
+ lsl r0, r0, #2
+ add r0, r6, r0
+ mov r1, #0
+ bl MOD16_021D8B14
+ add r0, r6, #0
+ bl MOD16_021D95C4
+ add r0, r6, #0
+ bl MOD16_021D9760
+ add sp, #0x70
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9598: .word 0x00002EE0
+ thumb_func_end MOD16_021D94EC
+
+ thumb_func_start MOD16_021D959C
+MOD16_021D959C: ; 0x021D959C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD16_021D9780
+ add r0, r5, #0
+ bl MOD16_021D95E4
+ mov r0, #0x79
+ lsl r0, r0, #2
+ mov r4, #0
+ add r5, r5, r0
+_021D95B2:
+ ldr r0, [r5]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D95B2
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D959C
+
+ thumb_func_start MOD16_021D95C4
+MOD16_021D95C4: ; 0x021D95C4
+ push {r4, lr}
+ mov r1, #0x79
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r0, _021D95E0 ; =MOD16_021D95F4
+ add r1, r4, r1
+ mov r2, #1
+ bl FUN_0200CA44
+ mov r1, #0x9d
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r4, pc}
+ nop
+_021D95E0: .word MOD16_021D95F4
+ thumb_func_end MOD16_021D95C4
+
+ thumb_func_start MOD16_021D95E4
+MOD16_021D95E4: ; 0x021D95E4
+ mov r1, #0x9d
+ lsl r1, r1, #2
+ ldr r3, _021D95F0 ; =0x0200CAB5
+ ldr r0, [r0, r1]
+ bx r3
+ nop
+_021D95F0: .word 0x0200CAB5
+ thumb_func_end MOD16_021D95E4
+
+ thumb_func_start MOD16_021D95F4
+MOD16_021D95F4: ; 0x021D95F4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _021D9610
+ ldr r0, [r4, #0x2c]
+ str r0, [sp]
+ ldr r1, [r4, #0x20]
+ ldr r2, [r4, #0x24]
+ ldr r3, [r4, #0x28]
+ add r0, r4, #0
+ bl MOD16_021D9668
+ pop {r3, r4, r5, pc}
+_021D9610:
+ ldr r0, [r4, #0x34]
+ add r0, r0, #1
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1a
+ sub r1, r1, r2
+ mov r0, #0x1a
+ ror r1, r0
+ add r0, r2, r1
+ str r0, [r4, #0x34]
+ cmp r0, #0x20
+ blt _021D962C
+ add r1, r0, #1
+ mov r0, #0x40
+ sub r0, r0, r1
+_021D962C:
+ lsl r2, r0, #0xc
+ asr r1, r2, #0x1f
+ lsr r0, r2, #0x12
+ lsl r3, r1, #0xe
+ mov r1, #2
+ orr r3, r0
+ lsl r2, r2, #0xe
+ mov r0, #0
+ lsl r1, r1, #0xa
+ add r5, r2, r1
+ adc r3, r0
+ lsl r2, r3, #0x14
+ lsr r0, r5, #0xc
+ orr r0, r2
+ lsl r1, r1, #6
+ bl FX_Div
+ asr r3, r0, #0xc
+ ldr r0, [r4, #0x2c]
+ add r0, r0, r3
+ str r0, [sp]
+ add r0, r4, #0
+ ldr r1, [r4, #0x20]
+ ldr r2, [r4, #0x24]
+ ldr r4, [r4, #0x28]
+ add r3, r4, r3
+ bl MOD16_021D9668
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D95F4
+
+ thumb_func_start MOD16_021D9668
+MOD16_021D9668: ; 0x021D9668
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ ldr r6, [sp, #0x40]
+ add r5, r0, #0
+ str r1, [sp, #0xc]
+ add r7, r2, #0
+ str r3, [sp, #0x10]
+ mov r4, #0
+_021D9678:
+ ldr r0, [sp, #0x10]
+ str r7, [sp]
+ str r0, [sp, #4]
+ ldr r3, [sp, #0xc]
+ str r6, [sp, #8]
+ add r0, r4, #0
+ add r1, sp, #0x18
+ add r2, sp, #0x14
+ bl MOD16_021DB5A8
+ ldr r0, [sp, #0x18]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x14]
+ lsl r1, r0, #0xc
+ mov r0, #3
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r0, [sp, #0x20]
+ ldr r0, [r5]
+ add r1, sp, #0x1c
+ bl FUN_02020044
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D9678
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D9668
+
+ thumb_func_start MOD16_021D96B4
+MOD16_021D96B4: ; 0x021D96B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r1, #0
+ mov r1, #0x87
+ lsl r1, r1, #2
+ add r4, r0, r1
+ ldr r1, [r4, #0x44]
+ add r5, r2, #0
+ add r7, r3, #0
+ cmp r1, r6
+ bne _021D96DE
+ ldr r1, [r4, #0x48]
+ cmp r1, r5
+ bne _021D96DE
+ ldr r1, [r4, #0x4c]
+ cmp r1, r7
+ bne _021D96DE
+ ldr r2, [r4, #0x50]
+ ldr r1, [sp, #0x20]
+ cmp r2, r1
+ beq _021D971E
+_021D96DE:
+ mov r1, #0x79
+ lsl r1, r1, #2
+ add r3, r0, r1
+ str r3, [r4]
+ str r5, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ ldr r1, [r3, #0x20]
+ ldr r3, [r3, #0x24]
+ add r0, r4, #4
+ add r2, r6, #0
+ bl MOD16_021D8BD8
+ ldr r3, [r4]
+ ldr r0, [sp, #0x20]
+ add r2, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ add r0, r4, #0
+ ldr r1, [r3, #0x28]
+ ldr r3, [r3, #0x2c]
+ add r0, #0x24
+ bl MOD16_021D8BD8
+ str r6, [r4, #0x44]
+ str r5, [r4, #0x48]
+ ldr r0, [sp, #0x20]
+ str r7, [r4, #0x4c]
+ str r0, [r4, #0x50]
+ mov r0, #1
+ str r0, [r4, #0x54]
+_021D971E:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D96B4
+
+ thumb_func_start MOD16_021D9724
+MOD16_021D9724: ; 0x021D9724
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x54]
+ cmp r0, #0
+ beq _021D975E
+ add r0, r5, #4
+ bl MOD16_021D8BF4
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0x24
+ bl MOD16_021D8BF4
+ ldr r1, [r5, #4]
+ ldr r0, [r5]
+ cmp r4, #1
+ str r1, [r0, #0x20]
+ ldr r1, [r5, #8]
+ ldr r0, [r5]
+ str r1, [r0, #0x24]
+ ldr r1, [r5, #0x24]
+ ldr r0, [r5]
+ str r1, [r0, #0x28]
+ ldr r1, [r5, #0x28]
+ ldr r0, [r5]
+ str r1, [r0, #0x2c]
+ bne _021D975E
+ mov r0, #0
+ str r0, [r5, #0x54]
+_021D975E:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D9724
+
+ thumb_func_start MOD16_021D9760
+MOD16_021D9760: ; 0x021D9760
+ push {r4, lr}
+ mov r1, #0x87
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r0, _021D977C ; =MOD16_021D9724
+ add r1, r4, r1
+ mov r2, #0
+ bl FUN_0200CA44
+ mov r1, #0x9e
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r4, pc}
+ nop
+_021D977C: .word MOD16_021D9724
+ thumb_func_end MOD16_021D9760
+
+ thumb_func_start MOD16_021D9780
+MOD16_021D9780: ; 0x021D9780
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200CAB4
+ mov r0, #0x9e
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+ thumb_func_end MOD16_021D9780
+
+ thumb_func_start MOD16_021D9798
+MOD16_021D9798: ; 0x021D9798
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r6, r2, #0
+ add r4, r1, #0
+ ldr r2, _021D988C ; =0x00001770
+ mov r1, #0
+ add r5, r0, #0
+ bl Call_FillMemWithValue
+ ldr r0, [r4]
+ str r0, [r5]
+ ldr r1, [r4, #8]
+ ldr r0, _021D9890 ; =0x00001744
+ str r1, [r5, r0]
+ ldr r0, [r5]
+ bl FUN_02024CA4
+ cmp r0, #0
+ beq _021D97C2
+ mov r1, #1
+ b _021D97C4
+_021D97C2:
+ mov r1, #0
+_021D97C4:
+ ldr r0, _021D9894 ; =0x00001734
+ str r1, [r5, r0]
+ ldr r0, [r4, #0x20]
+ cmp r0, #2
+ bne _021D97DC
+ ldr r0, _021D9894 ; =0x00001734
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D97DA
+ mov r0, #1
+ b _021D97DC
+_021D97DA:
+ mov r0, #0
+_021D97DC:
+ cmp r0, #1
+ ldr r0, _021D9898 ; =0x00001730
+ bne _021D97EA
+ mov r1, #1
+ str r1, [r5, r0]
+ mov r1, #0
+ b _021D97EE
+_021D97EA:
+ mov r1, #0
+ str r1, [r5, r0]
+_021D97EE:
+ str r1, [sp]
+ ldr r0, _021D9898 ; =0x00001730
+ str r1, [sp, #4]
+ ldr r0, [r5, r0]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r3, r1, #0
+ str r6, [sp, #0xc]
+ bl MOD16_021D9CB0
+ cmp r0, #0
+ bne _021D980C
+ bl ErrorHandling
+_021D980C:
+ ldr r1, [r4, #0x1c]
+ add r0, r5, #0
+ bl MOD16_021D9DC0
+ ldr r1, [r4, #0x1c]
+ add r0, r5, #0
+ bl MOD16_021D9A60
+ ldr r1, [r4, #0x20]
+ add r0, r5, #0
+ bl MOD16_021D9A78
+ ldr r0, [r4, #4]
+ bl FUN_02023A68
+ ldr r1, _021D989C ; =0x0000174C
+ str r0, [r5, r1]
+ ldr r0, [r4, #4]
+ bl FUN_020239CC
+ ldr r1, _021D98A0 ; =0x00001750
+ str r0, [r5, r1]
+ ldr r0, [r4, #4]
+ add r1, r6, #0
+ bl FUN_020239A0
+ ldr r1, _021D98A4 ; =0x00001754
+ str r0, [r5, r1]
+ add r0, r6, #0
+ bl FUN_02087A6C
+ ldr r1, _021D98A8 ; =0x00001748
+ str r0, [r5, r1]
+ add r0, r1, #0
+ add r0, #8
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ ldr r0, [r5, r1]
+ bne _021D9864
+ mov r1, #0
+ add r2, r6, #0
+ bl FUN_02087A98
+ b _021D986C
+_021D9864:
+ mov r1, #1
+ add r2, r6, #0
+ bl FUN_02087A98
+_021D986C:
+ ldr r0, [r4, #0xc]
+ ldr r1, _021D98AC ; =0x00001760
+ str r0, [r5, r1]
+ ldr r2, [r4, #0x10]
+ add r0, r1, #4
+ str r2, [r5, r0]
+ add r0, r1, #0
+ ldr r2, [r4, #0x14]
+ add r0, #8
+ str r2, [r5, r0]
+ ldr r0, [r4, #0x18]
+ add r1, #0xc
+ str r0, [r5, r1]
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_021D988C: .word 0x00001770
+_021D9890: .word 0x00001744
+_021D9894: .word 0x00001734
+_021D9898: .word 0x00001730
+_021D989C: .word 0x0000174C
+_021D98A0: .word 0x00001750
+_021D98A4: .word 0x00001754
+_021D98A8: .word 0x00001748
+_021D98AC: .word 0x00001760
+ thumb_func_end MOD16_021D9798
+
+ thumb_func_start MOD16_021D98B0
+MOD16_021D98B0: ; 0x021D98B0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D98D4 ; =0x00001754
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ ldr r0, _021D98D8 ; =0x00001748
+ ldr r0, [r4, r0]
+ bl FUN_02087B0C
+ ldr r0, _021D98D8 ; =0x00001748
+ ldr r0, [r4, r0]
+ bl FUN_02087A84
+ ldr r0, _021D98D8 ; =0x00001748
+ mov r1, #0
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021D98D4: .word 0x00001754
+_021D98D8: .word 0x00001748
+ thumb_func_end MOD16_021D98B0
+
+ thumb_func_start MOD16_021D98DC
+MOD16_021D98DC: ; 0x021D98DC
+ ldr r3, _021D98E8 ; =0x02024675
+ lsl r1, r1, #0x10
+ ldr r0, [r0]
+ lsr r1, r1, #0x10
+ bx r3
+ nop
+_021D98E8: .word 0x02024675
+ thumb_func_end MOD16_021D98DC
+
+ thumb_func_start MOD16_021D98EC
+MOD16_021D98EC: ; 0x021D98EC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ cmp r4, #0x1c
+ blt _021D98FA
+ bl ErrorHandling
+_021D98FA:
+ ldr r0, [r5]
+ add r1, r4, #0
+ bl FUN_020246DC
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D98EC
+
+ thumb_func_start MOD16_021D9904
+MOD16_021D9904: ; 0x021D9904
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ cmp r4, #2
+ blt _021D9912
+ bl ErrorHandling
+_021D9912:
+ ldr r0, [r5]
+ add r1, r4, #0
+ bl FUN_02024748
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D9904
+
+ thumb_func_start MOD16_021D991C
+MOD16_021D991C: ; 0x021D991C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ cmp r4, #2
+ blt _021D992A
+ bl ErrorHandling
+_021D992A:
+ ldr r0, [r5]
+ add r1, r4, #0
+ bl FUN_020247C8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D991C
+
+ thumb_func_start MOD16_021D9934
+MOD16_021D9934: ; 0x021D9934
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ cmp r4, #3
+ blt _021D9942
+ bl ErrorHandling
+_021D9942:
+ ldr r0, [r5]
+ add r1, r4, #0
+ bl FUN_0202484C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D9934
+
+ thumb_func_start MOD16_021D994C
+MOD16_021D994C: ; 0x021D994C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ cmp r4, #3
+ blt _021D995A
+ bl ErrorHandling
+_021D995A:
+ ldr r0, [r5]
+ add r1, r4, #0
+ bl FUN_020248BC
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021D994C
+
+ thumb_func_start MOD16_021D9964
+MOD16_021D9964: ; 0x021D9964
+ push {r3, lr}
+ ldr r3, _021D99D8 ; =0x0000019D
+ cmp r1, r3
+ bhi _021D998A
+ sub r2, r3, #1
+ cmp r1, r2
+ blo _021D997A
+ beq _021D99BA
+ cmp r1, r3
+ beq _021D99C2
+ b _021D99D2
+_021D997A:
+ cmp r1, #0xc9
+ bhi _021D9982
+ beq _021D99A2
+ b _021D99D2
+_021D9982:
+ sub r3, #0x1b
+ cmp r1, r3
+ beq _021D99CA
+ b _021D99D2
+_021D998A:
+ add r2, r3, #0
+ add r2, #9
+ cmp r1, r2
+ bhi _021D999A
+ add r3, #9
+ cmp r1, r3
+ beq _021D99AA
+ b _021D99D2
+_021D999A:
+ add r3, #0xa
+ cmp r1, r3
+ beq _021D99B2
+ b _021D99D2
+_021D99A2:
+ mov r1, #0
+ bl MOD16_021D98EC
+ pop {r3, pc}
+_021D99AA:
+ mov r1, #0
+ bl MOD16_021D9904
+ pop {r3, pc}
+_021D99B2:
+ mov r1, #0
+ bl MOD16_021D991C
+ pop {r3, pc}
+_021D99BA:
+ mov r1, #0
+ bl MOD16_021D9934
+ pop {r3, pc}
+_021D99C2:
+ mov r1, #0
+ bl MOD16_021D994C
+ pop {r3, pc}
+_021D99CA:
+ mov r1, #0
+ bl MOD16_021D9A3C
+ pop {r3, pc}
+_021D99D2:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D99D8: .word 0x0000019D
+ thumb_func_end MOD16_021D9964
+
+ thumb_func_start MOD16_021D99DC
+MOD16_021D99DC: ; 0x021D99DC
+ push {r3, lr}
+ mov r2, #1
+ bl MOD16_021D98DC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021D99F0
+ mov r0, #1
+ pop {r3, pc}
+_021D99F0:
+ mov r0, #2
+ pop {r3, pc}
+ thumb_func_end MOD16_021D99DC
+
+ thumb_func_start MOD16_021D99F4
+MOD16_021D99F4: ; 0x021D99F4
+ ldr r3, _021D99FC ; =0x0202471D
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D99FC: .word 0x0202471D
+ thumb_func_end MOD16_021D99F4
+
+ thumb_func_start MOD16_021D9A00
+MOD16_021D9A00: ; 0x021D9A00
+ ldr r3, _021D9A08 ; =0x020247A5
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D9A08: .word 0x020247A5
+ thumb_func_end MOD16_021D9A00
+
+ thumb_func_start MOD16_021D9A0C
+MOD16_021D9A0C: ; 0x021D9A0C
+ ldr r3, _021D9A14 ; =0x02024829
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D9A14: .word 0x02024829
+ thumb_func_end MOD16_021D9A0C
+
+ thumb_func_start MOD16_021D9A18
+MOD16_021D9A18: ; 0x021D9A18
+ ldr r3, _021D9A20 ; =0x0202489D
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D9A20: .word 0x0202489D
+ thumb_func_end MOD16_021D9A18
+
+ thumb_func_start MOD16_021D9A24
+MOD16_021D9A24: ; 0x021D9A24
+ ldr r3, _021D9A2C ; =0x0202490D
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D9A2C: .word 0x0202490D
+ thumb_func_end MOD16_021D9A24
+
+ thumb_func_start MOD16_021D9A30
+MOD16_021D9A30: ; 0x021D9A30
+ ldr r3, _021D9A38 ; =0x02024649
+ ldr r0, [r0]
+ mov r1, #0
+ bx r3
+ .align 2, 0
+_021D9A38: .word 0x02024649
+ thumb_func_end MOD16_021D9A30
+
+ thumb_func_start MOD16_021D9A3C
+MOD16_021D9A3C: ; 0x021D9A3C
+ ldr r3, _021D9A44 ; =0x02024931
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D9A44: .word 0x02024931
+ thumb_func_end MOD16_021D9A3C
+
+ thumb_func_start MOD16_021D9A48
+MOD16_021D9A48: ; 0x021D9A48
+ ldr r3, _021D9A50 ; =0x02024971
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D9A50: .word 0x02024971
+ thumb_func_end MOD16_021D9A48
+
+ thumb_func_start MOD16_021D9A54
+MOD16_021D9A54: ; 0x021D9A54
+ ldr r3, _021D9A5C ; =0x02024CA5
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D9A5C: .word 0x02024CA5
+ thumb_func_end MOD16_021D9A54
+
+ thumb_func_start MOD16_021D9A60
+MOD16_021D9A60: ; 0x021D9A60
+ ldr r2, _021D9A68 ; =0x0000175C
+ strh r1, [r0, r2]
+ bx lr
+ nop
+_021D9A68: .word 0x0000175C
+ thumb_func_end MOD16_021D9A60
+
+ thumb_func_start MOD16_021D9A6C
+MOD16_021D9A6C: ; 0x021D9A6C
+ ldr r1, _021D9A74 ; =0x0000175C
+ ldrh r0, [r0, r1]
+ bx lr
+ nop
+_021D9A74: .word 0x0000175C
+ thumb_func_end MOD16_021D9A6C
+
+ thumb_func_start MOD16_021D9A78
+MOD16_021D9A78: ; 0x021D9A78
+ ldr r2, _021D9A80 ; =0x0000175E
+ strh r1, [r0, r2]
+ bx lr
+ nop
+_021D9A80: .word 0x0000175E
+ thumb_func_end MOD16_021D9A78
+
+ thumb_func_start MOD16_021D9A84
+MOD16_021D9A84: ; 0x021D9A84
+ ldr r1, _021D9A8C ; =0x0000175E
+ ldrh r0, [r0, r1]
+ bx lr
+ nop
+_021D9A8C: .word 0x0000175E
+ thumb_func_end MOD16_021D9A84
+
+ thumb_func_start MOD16_021D9A90
+MOD16_021D9A90: ; 0x021D9A90
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ ldr r7, [sp, #0x4c]
+ str r1, [sp, #0xc]
+ add r5, r0, #0
+ ldr r1, _021D9CA8 ; =0x000003DA
+ add r0, r7, #0
+ str r2, [sp, #0x10]
+ str r3, [sp, #0x14]
+ bl FUN_020169D8
+ add r6, r0, #0
+ bne _021D9AAE
+ bl ErrorHandling
+_021D9AAE:
+ ldr r2, _021D9CA8 ; =0x000003DA
+ add r0, r6, #0
+ mov r1, #0
+ bl Call_FillMemWithValue
+ mov r0, #0
+ str r0, [sp, #0x24]
+ ldr r1, _021D9CA8 ; =0x000003DA
+ add r0, r7, #0
+ bl FUN_020169D8
+ add r4, r0, #0
+ bne _021D9ACC
+ bl ErrorHandling
+_021D9ACC:
+ ldr r2, _021D9CA8 ; =0x000003DA
+ add r0, r4, #0
+ mov r1, #0
+ bl Call_FillMemWithValue
+ mov r1, #0
+ ldr r0, [sp, #0x48]
+ str r1, [sp, #0x20]
+ cmp r0, #0
+ add r2, sp, #0x1c
+ bne _021D9AFE
+ add r0, r7, #0
+ mov r1, #1
+ bl MOD16_021DA184
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ ldr r3, [sp, #0x18]
+ str r0, [sp]
+ ldr r2, [r5]
+ add r0, r6, #0
+ add r1, sp, #0x24
+ bl MOD16_021D9FC4
+ b _021D9B16
+_021D9AFE:
+ add r0, r7, #0
+ bl MOD16_021DA184
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ ldr r3, [sp, #0x18]
+ str r0, [sp]
+ ldr r2, [r5]
+ add r0, r6, #0
+ add r1, sp, #0x24
+ bl MOD16_021D9FC4
+_021D9B16:
+ ldr r0, [sp, #0x24]
+ add r1, r4, #0
+ str r0, [sp]
+ str r7, [sp, #4]
+ ldr r0, [r5]
+ add r2, sp, #0x20
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ add r3, r6, #0
+ bl MOD16_021DA1B4
+ ldr r2, [sp, #0x20]
+ add r0, r6, #0
+ add r1, r4, #0
+ lsl r2, r2, #1
+ bl memcpy
+ ldr r2, [sp, #0x20]
+ add r0, r4, #0
+ str r2, [sp, #0x24]
+ mov r1, #0
+ lsl r2, r2, #1
+ bl Call_FillMemWithValue
+ mov r0, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x24]
+ add r1, r4, #0
+ str r0, [sp]
+ str r7, [sp, #4]
+ ldr r0, [r5]
+ add r2, sp, #0x20
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x10]
+ add r3, r6, #0
+ bl MOD16_021DA264
+ ldr r2, [sp, #0x20]
+ cmp r2, #0
+ bne _021D9B6A
+ mov r7, #0
+ b _021D9C82
+_021D9B6A:
+ add r0, r6, #0
+ add r1, r4, #0
+ lsl r2, r2, #1
+ bl memcpy
+ ldr r2, [sp, #0x20]
+ add r0, r4, #0
+ str r2, [sp, #0x24]
+ mov r1, #0
+ lsl r2, r2, #1
+ bl Call_FillMemWithValue
+ mov r0, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x24]
+ add r1, r4, #0
+ str r0, [sp]
+ str r7, [sp, #4]
+ ldr r0, [r5]
+ add r2, sp, #0x20
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x14]
+ add r3, r6, #0
+ bl MOD16_021DA348
+ ldr r2, [sp, #0x20]
+ cmp r2, #0
+ bne _021D9BA6
+ mov r7, #0
+ b _021D9C82
+_021D9BA6:
+ add r0, r6, #0
+ add r1, r4, #0
+ lsl r2, r2, #1
+ bl memcpy
+ ldr r2, [sp, #0x20]
+ add r0, r4, #0
+ str r2, [sp, #0x24]
+ mov r1, #0
+ lsl r2, r2, #1
+ bl Call_FillMemWithValue
+ mov r0, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x24]
+ add r1, r4, #0
+ str r0, [sp]
+ str r7, [sp, #4]
+ ldr r0, [r5]
+ add r2, sp, #0x20
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x40]
+ add r3, r6, #0
+ bl MOD16_021DA348
+ ldr r2, [sp, #0x20]
+ cmp r2, #0
+ bne _021D9BE2
+ mov r7, #0
+ b _021D9C82
+_021D9BE2:
+ add r0, r6, #0
+ add r1, r4, #0
+ lsl r2, r2, #1
+ bl memcpy
+ ldr r2, [sp, #0x20]
+ add r0, r4, #0
+ str r2, [sp, #0x24]
+ mov r1, #0
+ lsl r2, r2, #1
+ bl Call_FillMemWithValue
+ mov r0, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x24]
+ add r1, r4, #0
+ str r0, [sp]
+ str r7, [sp, #4]
+ ldr r0, [r5]
+ add r2, sp, #0x20
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x44]
+ add r3, r6, #0
+ bl MOD16_021DA49C
+ ldr r2, [sp, #0x20]
+ cmp r2, #0
+ bne _021D9C1E
+ mov r7, #0
+ b _021D9C82
+_021D9C1E:
+ add r0, r6, #0
+ add r1, r4, #0
+ lsl r2, r2, #1
+ bl memcpy
+ ldr r2, [sp, #0x20]
+ add r0, r4, #0
+ str r2, [sp, #0x24]
+ mov r1, #0
+ lsl r2, r2, #1
+ bl Call_FillMemWithValue
+ mov r0, #0
+ str r0, [sp, #0x20]
+ ldr r1, [r5]
+ ldr r3, [sp, #0x24]
+ add r0, r5, #4
+ add r2, r6, #0
+ bl MOD16_021DA080
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ bne _021D9C64
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ bne _021D9C64
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ bne _021D9C64
+ ldr r0, [sp, #0x40]
+ cmp r0, #0
+ bne _021D9C64
+ ldr r0, [sp, #0x44]
+ cmp r0, #0
+ beq _021D9C68
+_021D9C64:
+ mov r0, #1
+ str r0, [sp, #0x50]
+_021D9C68:
+ ldr r0, [sp, #0x50]
+ cmp r0, #0
+ bne _021D9C7A
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x1c]
+ add r0, r5, #4
+ bl MOD16_021DA0D8
+ b _021D9C80
+_021D9C7A:
+ add r0, r5, #4
+ bl MOD16_021DA148
+_021D9C80:
+ mov r7, #1
+_021D9C82:
+ ldr r2, _021D9CAC ; =0x00001738
+ add r0, r5, #4
+ add r1, r5, r2
+ add r2, r2, #4
+ add r2, r5, r2
+ bl MOD16_021DA5C4
+ add r0, r6, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [sp, #0x18]
+ bl FUN_02016A18
+ add r0, r7, #0
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9CA8: .word 0x000003DA
+_021D9CAC: .word 0x00001738
+ thumb_func_end MOD16_021D9A90
+
+ thumb_func_start MOD16_021D9CB0
+MOD16_021D9CB0: ; 0x021D9CB0
+ push {r3, r4, lr}
+ sub sp, #0x14
+ ldr r4, [sp, #0x20]
+ str r4, [sp]
+ ldr r4, [sp, #0x24]
+ str r4, [sp, #4]
+ ldr r4, [sp, #0x28]
+ str r4, [sp, #8]
+ ldr r4, [sp, #0x2c]
+ str r4, [sp, #0xc]
+ mov r4, #0
+ str r4, [sp, #0x10]
+ bl MOD16_021D9A90
+ add sp, #0x14
+ pop {r3, r4, pc}
+ thumb_func_end MOD16_021D9CB0
+
+ thumb_func_start MOD16_021D9CD0
+MOD16_021D9CD0: ; 0x021D9CD0
+ cmp r1, #0
+ bne _021D9CD8
+ mov r0, #1
+ bx lr
+_021D9CD8:
+ ldr r1, _021D9CE8 ; =0x00001734
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ beq _021D9CE4
+ mov r0, #1
+ bx lr
+_021D9CE4:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021D9CE8: .word 0x00001734
+ thumb_func_end MOD16_021D9CD0
+
+ thumb_func_start MOD16_021D9CEC
+MOD16_021D9CEC: ; 0x021D9CEC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021D9CD0
+ cmp r0, #0
+ beq _021D9CFE
+ ldr r1, _021D9D00 ; =0x00001730
+ str r4, [r5, r1]
+_021D9CFE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D9D00: .word 0x00001730
+ thumb_func_end MOD16_021D9CEC
+
+ thumb_func_start MOD16_021D9D04
+MOD16_021D9D04: ; 0x021D9D04
+ ldr r1, _021D9D0C ; =0x00001730
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_021D9D0C: .word 0x00001730
+ thumb_func_end MOD16_021D9D04
+
+ thumb_func_start MOD16_021D9D10
+MOD16_021D9D10: ; 0x021D9D10
+ cmp r1, #0
+ blt _021D9D22
+ mov r2, #0xf7
+ lsl r2, r2, #4
+ ldr r0, [r0, r2]
+ cmp r1, r0
+ bge _021D9D22
+ mov r0, #1
+ bx lr
+_021D9D22:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021D9D10
+
+ thumb_func_start MOD16_021D9D28
+MOD16_021D9D28: ; 0x021D9D28
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021D9D10
+ cmp r0, #0
+ beq _021D9D3E
+ ldr r0, _021D9D44 ; =0x00000F6C
+ str r4, [r5, r0]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D9D3E:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D9D44: .word 0x00000F6C
+ thumb_func_end MOD16_021D9D28
+
+ thumb_func_start MOD16_021D9D48
+MOD16_021D9D48: ; 0x021D9D48
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, _021D9D84 ; =0x00000F6C
+ add r5, r0, #0
+ ldr r1, [r5, r1]
+ add r1, r1, r4
+ bl MOD16_021D9D10
+ cmp r0, #0
+ beq _021D9D68
+ ldr r0, _021D9D84 ; =0x00000F6C
+ ldr r1, [r5, r0]
+ add r1, r1, r4
+ str r1, [r5, r0]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D9D68:
+ cmp r4, #0
+ blt _021D9D78
+ mov r0, #0xf7
+ lsl r0, r0, #4
+ ldr r1, [r5, r0]
+ sub r0, r0, #4
+ sub r1, r1, #1
+ b _021D9D7C
+_021D9D78:
+ ldr r0, _021D9D84 ; =0x00000F6C
+ mov r1, #0
+_021D9D7C:
+ str r1, [r5, r0]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D9D84: .word 0x00000F6C
+ thumb_func_end MOD16_021D9D48
+
+ thumb_func_start MOD16_021D9D88
+MOD16_021D9D88: ; 0x021D9D88
+ ldr r1, _021D9D90 ; =0x00000F6C
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_021D9D90: .word 0x00000F6C
+ thumb_func_end MOD16_021D9D88
+
+ thumb_func_start MOD16_021D9D94
+MOD16_021D9D94: ; 0x021D9D94
+ mov r1, #0xf7
+ lsl r1, r1, #4
+ ldr r0, [r0, r1]
+ bx lr
+ thumb_func_end MOD16_021D9D94
+
+ thumb_func_start MOD16_021D9D9C
+MOD16_021D9D9C: ; 0x021D9D9C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021D9D94
+ mov r2, #0
+ cmp r0, #0
+ ble _021D9DBA
+_021D9DAC:
+ ldr r1, [r5, #4]
+ cmp r1, r4
+ beq _021D9DBA
+ add r2, r2, #1
+ add r5, #8
+ cmp r2, r0
+ blt _021D9DAC
+_021D9DBA:
+ add r0, r2, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D9D9C
+
+ thumb_func_start MOD16_021D9DC0
+MOD16_021D9DC0: ; 0x021D9DC0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ bl MOD16_021D9D94
+ add r4, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021D9D9C
+ add r1, r0, #0
+ cmp r4, r1
+ bls _021D9DE2
+ add r0, r5, #0
+ bl MOD16_021D9D28
+ pop {r4, r5, r6, pc}
+_021D9DE2:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D9DC0
+
+ thumb_func_start MOD16_021D9DE8
+MOD16_021D9DE8: ; 0x021D9DE8
+ ldr r1, _021D9DF4 ; =0x00000F6C
+ ldr r1, [r0, r1]
+ lsl r1, r1, #3
+ add r0, r0, r1
+ ldr r0, [r0, #4]
+ bx lr
+ .align 2, 0
+_021D9DF4: .word 0x00000F6C
+ thumb_func_end MOD16_021D9DE8
+
+ thumb_func_start MOD16_021D9DF8
+MOD16_021D9DF8: ; 0x021D9DF8
+ ldr r1, _021D9E04 ; =0x00000F6C
+ ldr r1, [r0, r1]
+ lsl r1, r1, #3
+ add r0, r0, r1
+ ldr r0, [r0, #8]
+ bx lr
+ .align 2, 0
+_021D9E04: .word 0x00000F6C
+ thumb_func_end MOD16_021D9DF8
+
+ thumb_func_start MOD16_021D9E08
+MOD16_021D9E08: ; 0x021D9E08
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021D9D10
+ cmp r0, #0
+ beq _021D9E1E
+ add r1, r5, #4
+ lsl r0, r4, #3
+ add r0, r1, r0
+ pop {r3, r4, r5, pc}
+_021D9E1E:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D9E08
+
+ thumb_func_start MOD16_021D9E24
+MOD16_021D9E24: ; 0x021D9E24
+ ldr r2, _021D9E38 ; =0x0000172C
+ ldr r0, [r0, r2]
+ cmp r0, r1
+ ble _021D9E34
+ cmp r1, #0
+ blt _021D9E34
+ mov r0, #1
+ bx lr
+_021D9E34:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021D9E38: .word 0x0000172C
+ thumb_func_end MOD16_021D9E24
+
+ thumb_func_start MOD16_021D9E3C
+MOD16_021D9E3C: ; 0x021D9E3C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021D9E24
+ cmp r0, #0
+ beq _021D9E62
+ ldr r1, _021D9E68 ; =0x00001728
+ add r0, r5, #0
+ str r4, [r5, r1]
+ ldr r1, [r5, r1]
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _021D9E6C ; =0x00000F74
+ ldr r1, [r2, r1]
+ bl MOD16_021D9D28
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D9E62:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D9E68: .word 0x00001728
+_021D9E6C: .word 0x00000F74
+ thumb_func_end MOD16_021D9E3C
+
+ thumb_func_start MOD16_021D9E70
+MOD16_021D9E70: ; 0x021D9E70
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021D9EA8
+ cmp r0, #0
+ beq _021D9E9A
+ ldr r1, _021D9EA0 ; =0x00001728
+ ldr r0, [r5, r1]
+ add r0, r0, r4
+ str r0, [r5, r1]
+ ldr r1, [r5, r1]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ add r2, r5, r1
+ ldr r1, _021D9EA4 ; =0x00000F74
+ ldr r1, [r2, r1]
+ bl MOD16_021D9D28
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D9E9A:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D9EA0: .word 0x00001728
+_021D9EA4: .word 0x00000F74
+ thumb_func_end MOD16_021D9E70
+
+ thumb_func_start MOD16_021D9EA8
+MOD16_021D9EA8: ; 0x021D9EA8
+ push {r3, lr}
+ ldr r2, _021D9EC0 ; =0x00001728
+ ldr r2, [r0, r2]
+ add r1, r2, r1
+ bl MOD16_021D9E24
+ cmp r0, #0
+ beq _021D9EBC
+ mov r0, #1
+ pop {r3, pc}
+_021D9EBC:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_021D9EC0: .word 0x00001728
+ thumb_func_end MOD16_021D9EA8
+
+ thumb_func_start MOD16_021D9EC4
+MOD16_021D9EC4: ; 0x021D9EC4
+ ldr r1, _021D9ECC ; =0x00001728
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_021D9ECC: .word 0x00001728
+ thumb_func_end MOD16_021D9EC4
+
+ thumb_func_start MOD16_021D9ED0
+MOD16_021D9ED0: ; 0x021D9ED0
+ ldr r1, _021D9ED8 ; =0x0000172C
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_021D9ED8: .word 0x0000172C
+ thumb_func_end MOD16_021D9ED0
+
+ thumb_func_start MOD16_021D9EDC
+MOD16_021D9EDC: ; 0x021D9EDC
+ lsl r1, r1, #2
+ add r1, r0, r1
+ ldr r0, _021D9EE8 ; =0x00000F74
+ ldr r0, [r1, r0]
+ bx lr
+ nop
+_021D9EE8: .word 0x00000F74
+ thumb_func_end MOD16_021D9EDC
+
+ thumb_func_start MOD16_021D9EEC
+MOD16_021D9EEC: ; 0x021D9EEC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _021D9F24 ; =0x0000172C
+ mov r4, #0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ ble _021D9F22
+ ldr r7, _021D9F24 ; =0x0000172C
+_021D9EFC:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021D9EDC
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021D9D88
+ cmp r6, r0
+ bne _021D9F1A
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021D9E3C
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F1A:
+ ldr r0, [r5, r7]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _021D9EFC
+_021D9F22:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9F24: .word 0x0000172C
+ thumb_func_end MOD16_021D9EEC
+
+ thumb_func_start MOD16_021D9F28
+MOD16_021D9F28: ; 0x021D9F28
+ ldr r1, _021D9F30 ; =0x00001738
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_021D9F30: .word 0x00001738
+ thumb_func_end MOD16_021D9F28
+
+ thumb_func_start MOD16_021D9F34
+MOD16_021D9F34: ; 0x021D9F34
+ ldr r1, _021D9F3C ; =0x0000173C
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_021D9F3C: .word 0x0000173C
+ thumb_func_end MOD16_021D9F34
+
+ thumb_func_start MOD16_021D9F40
+MOD16_021D9F40: ; 0x021D9F40
+ ldr r1, _021D9F48 ; =0x00001754
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_021D9F48: .word 0x00001754
+ thumb_func_end MOD16_021D9F40
+
+ thumb_func_start MOD16_021D9F4C
+MOD16_021D9F4C: ; 0x021D9F4C
+ ldr r1, _021D9F54 ; =0x00001750
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_021D9F54: .word 0x00001750
+ thumb_func_end MOD16_021D9F4C
+
+ thumb_func_start MOD16_021D9F58
+MOD16_021D9F58: ; 0x021D9F58
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ bl MOD16_021D9DE8
+ add r4, r0, #0
+ ldr r0, [r5]
+ bl FUN_02024D58
+ cmp r0, #0
+ bne _021D9F72
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D9F72:
+ lsl r1, r4, #0x10
+ ldr r0, [r5]
+ lsr r1, r1, #0x10
+ add r2, r6, #0
+ bl FUN_02024D00
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021D9F58
+
+ thumb_func_start MOD16_021D9F80
+MOD16_021D9F80: ; 0x021D9F80
+ ldr r3, _021D9F88 ; =0x02024CC5
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D9F88: .word 0x02024CC5
+ thumb_func_end MOD16_021D9F80
+
+ thumb_func_start MOD16_021D9F8C
+MOD16_021D9F8C: ; 0x021D9F8C
+ ldr r1, _021D9FAC ; =0x021C48F8
+ ldrh r1, [r1, #0x22]
+ cmp r1, #0
+ beq _021D9F9C
+ ldr r1, _021D9FB0 ; =0x00001758
+ mov r2, #0
+ str r2, [r0, r1]
+ bx lr
+_021D9F9C:
+ ldr r1, _021D9FB4 ; =0x021C48B8
+ ldr r1, [r1, #0x44]
+ cmp r1, #0
+ beq _021D9FAA
+ ldr r1, _021D9FB0 ; =0x00001758
+ mov r2, #1
+ str r2, [r0, r1]
+_021D9FAA:
+ bx lr
+ .align 2, 0
+_021D9FAC: .word 0x021C48F8
+_021D9FB0: .word 0x00001758
+_021D9FB4: .word 0x021C48B8
+ thumb_func_end MOD16_021D9F8C
+
+ thumb_func_start MOD16_021D9FB8
+MOD16_021D9FB8: ; 0x021D9FB8
+ ldr r1, _021D9FC0 ; =0x00001758
+ ldr r0, [r0, r1]
+ bx lr
+ nop
+_021D9FC0: .word 0x00001758
+ thumb_func_end MOD16_021D9FB8
+
+ thumb_func_start MOD16_021D9FC4
+MOD16_021D9FC4: ; 0x021D9FC4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ ldr r7, [sp, #0x20]
+ add r5, r1, #0
+ mov r6, #0
+ add r4, r3, #0
+ str r0, [sp]
+ str r2, [sp, #4]
+ str r6, [r5]
+ cmp r7, #0
+ ble _021D9FFE
+_021D9FDA:
+ ldrh r1, [r4]
+ ldr r0, [sp, #4]
+ bl FUN_020245F0
+ cmp r0, #0
+ beq _021D9FF6
+ ldr r1, [r5]
+ ldrh r0, [r4]
+ lsl r2, r1, #1
+ ldr r1, [sp]
+ strh r0, [r1, r2]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+_021D9FF6:
+ add r6, r6, #1
+ add r4, r4, #2
+ cmp r6, r7
+ blt _021D9FDA
+_021D9FFE:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021D9FC4
+
+ thumb_func_start MOD16_021DA004
+MOD16_021DA004: ; 0x021DA004
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r1, [sp, #4]
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x30]
+ mov r1, #0
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x34]
+ add r6, r2, #0
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #4]
+ str r3, [sp, #8]
+ str r1, [r0]
+ add r0, r3, #0
+ ldr r7, [sp, #0x2c]
+ str r1, [sp, #0xc]
+ cmp r0, #0
+ ble _021DA07C
+_021DA02C:
+ mov r4, #0
+ cmp r7, #0
+ ble _021DA054
+ ldr r5, [sp, #0x28]
+_021DA034:
+ ldrh r1, [r6]
+ ldrh r0, [r5]
+ cmp r1, r0
+ bne _021DA04C
+ ldr r0, [sp, #0x30]
+ cmp r0, #1
+ beq _021DA054
+ ldr r0, [sp, #0x34]
+ bl FUN_02024594
+ cmp r0, #0
+ bne _021DA054
+_021DA04C:
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, r7
+ blt _021DA034
+_021DA054:
+ cmp r4, r7
+ bge _021DA06E
+ ldr r0, [sp, #4]
+ ldrh r2, [r6]
+ ldr r0, [r0]
+ lsl r1, r0, #1
+ ldr r0, [sp]
+ strh r2, [r0, r1]
+ ldr r0, [sp, #4]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #4]
+ str r1, [r0]
+_021DA06E:
+ ldr r0, [sp, #0xc]
+ add r6, r6, #2
+ add r1, r0, #1
+ ldr r0, [sp, #8]
+ str r1, [sp, #0xc]
+ cmp r1, r0
+ blt _021DA02C
+_021DA07C:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DA004
+
+ thumb_func_start MOD16_021DA080
+MOD16_021DA080: ; 0x021DA080
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _021DA0D4 ; =0x00000F6C
+ mov r6, #0
+ add r7, r3, #0
+ add r4, r2, #0
+ str r1, [sp]
+ str r6, [r5, r0]
+ cmp r7, #0
+ ble _021DA0D2
+_021DA094:
+ ldrh r1, [r4]
+ ldr r0, [sp]
+ bl FUN_02024594
+ cmp r0, #0
+ ldr r0, _021DA0D4 ; =0x00000F6C
+ beq _021DA0AC
+ ldr r0, [r5, r0]
+ lsl r0, r0, #3
+ add r1, r5, r0
+ mov r0, #2
+ b _021DA0B4
+_021DA0AC:
+ ldr r0, [r5, r0]
+ lsl r0, r0, #3
+ add r1, r5, r0
+ mov r0, #1
+_021DA0B4:
+ str r0, [r1, #4]
+ ldr r1, _021DA0D4 ; =0x00000F6C
+ ldrh r0, [r4]
+ ldr r1, [r5, r1]
+ add r6, r6, #1
+ lsl r1, r1, #3
+ str r0, [r5, r1]
+ ldr r0, _021DA0D4 ; =0x00000F6C
+ add r4, r4, #2
+ ldr r0, [r5, r0]
+ add r1, r0, #1
+ ldr r0, _021DA0D4 ; =0x00000F6C
+ str r1, [r5, r0]
+ cmp r6, r7
+ blt _021DA094
+_021DA0D2:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DA0D4: .word 0x00000F6C
+ thumb_func_end MOD16_021DA080
+
+ thumb_func_start MOD16_021DA0D8
+MOD16_021DA0D8: ; 0x021DA0D8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r4, #0
+ ldr r1, _021DA13C ; =0x00001728
+ mov ip, r2
+ str r4, [r0, r1]
+ add r1, r2, #0
+ mov lr, r4
+ cmp r1, #0
+ ble _021DA13A
+ ldr r7, _021DA13C ; =0x00001728
+ add r5, r0, #0
+_021DA0F0:
+ ldr r1, _021DA140 ; =0x00000F6C
+ ldr r1, [r0, r1]
+ cmp r4, r1
+ bge _021DA12C
+ ldrh r1, [r6]
+ ldr r2, [r5]
+ cmp r2, r1
+ ldr r1, _021DA13C ; =0x00001728
+ bne _021DA11A
+ ldr r1, [r0, r1]
+ add r5, #8
+ lsl r1, r1, #2
+ add r2, r0, r1
+ mov r1, #0xf7
+ lsl r1, r1, #4
+ str r4, [r2, r1]
+ ldr r1, [r0, r7]
+ add r4, r4, #1
+ add r1, r1, #1
+ str r1, [r0, r7]
+ b _021DA12C
+_021DA11A:
+ ldr r1, [r0, r1]
+ ldr r2, _021DA144 ; =0x000001EE
+ lsl r1, r1, #2
+ add r3, r0, r1
+ lsl r1, r2, #3
+ str r2, [r3, r1]
+ ldr r1, [r0, r7]
+ add r1, r1, #1
+ str r1, [r0, r7]
+_021DA12C:
+ mov r1, lr
+ add r1, r1, #1
+ mov r2, ip
+ add r6, r6, #2
+ mov lr, r1
+ cmp r1, r2
+ blt _021DA0F0
+_021DA13A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DA13C: .word 0x00001728
+_021DA140: .word 0x00000F6C
+_021DA144: .word 0x000001EE
+ thumb_func_end MOD16_021DA0D8
+
+ thumb_func_start MOD16_021DA148
+MOD16_021DA148: ; 0x021DA148
+ push {r3, r4, r5, r6}
+ ldr r2, _021DA17C ; =0x00001728
+ mov r1, #0
+ str r1, [r0, r2]
+ ldr r2, _021DA180 ; =0x00000F6C
+ ldr r2, [r0, r2]
+ cmp r2, #0
+ ble _021DA178
+ ldr r5, _021DA17C ; =0x00001728
+ mov r3, #0xf7
+ lsl r3, r3, #4
+ add r2, r5, #0
+ sub r4, r3, #4
+_021DA162:
+ ldr r6, [r0, r2]
+ lsl r6, r6, #2
+ add r6, r0, r6
+ str r1, [r6, r3]
+ ldr r6, [r0, r5]
+ add r1, r1, #1
+ add r6, r6, #1
+ str r6, [r0, r5]
+ ldr r6, [r0, r4]
+ cmp r1, r6
+ blt _021DA162
+_021DA178:
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+_021DA17C: .word 0x00001728
+_021DA180: .word 0x00000F6C
+ thumb_func_end MOD16_021DA148
+
+ thumb_func_start MOD16_021DA184
+MOD16_021DA184: ; 0x021DA184
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r6, r0, #0
+ add r4, r2, #0
+ cmp r5, #0x2f
+ blt _021DA196
+ bl ErrorHandling
+_021DA196:
+ mov r2, #0
+ add r5, #0xb
+ str r2, [sp]
+ add r0, sp, #8
+ str r0, [sp, #4]
+ mov r0, #0x4b
+ add r1, r5, #0
+ add r3, r6, #0
+ bl FUN_02006D18
+ ldr r1, [sp, #8]
+ lsr r1, r1, #1
+ str r1, [r4]
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021DA184
+
+ thumb_func_start MOD16_021DA1B4
+MOD16_021DA1B4: ; 0x021DA1B4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ str r1, [sp, #0x10]
+ add r7, r2, #0
+ mov r4, #0
+ str r3, [sp, #0x14]
+ ldr r0, [sp, #0x34]
+ cmp r5, #5
+ bhi _021DA222
+ add r1, r5, r5
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DA1D4: ; jump table
+ .short _021DA1E0 - _021DA1D4 - 2 ; case 0
+ .short _021DA1E4 - _021DA1D4 - 2 ; case 1
+ .short _021DA1F2 - _021DA1D4 - 2 ; case 2
+ .short _021DA1FE - _021DA1D4 - 2 ; case 3
+ .short _021DA20A - _021DA1D4 - 2 ; case 4
+ .short _021DA216 - _021DA1D4 - 2 ; case 5
+_021DA1E0:
+ add r6, r4, #0
+ b _021DA226
+_021DA1E4:
+ mov r1, #2
+ add r2, sp, #0x18
+ bl MOD16_021DA184
+ add r6, r0, #0
+ mov r4, #1
+ b _021DA226
+_021DA1F2:
+ mov r1, #3
+ add r2, sp, #0x18
+ bl MOD16_021DA184
+ add r6, r0, #0
+ b _021DA226
+_021DA1FE:
+ mov r1, #4
+ add r2, sp, #0x18
+ bl MOD16_021DA184
+ add r6, r0, #0
+ b _021DA226
+_021DA20A:
+ mov r1, #5
+ add r2, sp, #0x18
+ bl MOD16_021DA184
+ add r6, r0, #0
+ b _021DA226
+_021DA216:
+ mov r1, #6
+ add r2, sp, #0x18
+ bl MOD16_021DA184
+ add r6, r0, #0
+ b _021DA226
+_021DA222:
+ bl ErrorHandling
+_021DA226:
+ cmp r6, #0
+ beq _021DA24E
+ ldr r0, [sp, #0x14]
+ add r1, r7, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x30]
+ add r2, r6, #0
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x38]
+ str r4, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r3, [sp, #0x18]
+ bl MOD16_021DA004
+ add r0, r6, #0
+ bl FUN_02016A18
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+_021DA24E:
+ ldr r2, [sp, #0x30]
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ lsl r2, r2, #1
+ bl memcpy
+ ldr r0, [sp, #0x30]
+ str r0, [r7]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DA1B4
+
+ thumb_func_start MOD16_021DA264
+MOD16_021DA264: ; 0x021DA264
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r7, r1, #0
+ add r6, r2, #0
+ str r3, [sp, #0x10]
+ ldr r0, [sp, #0x34]
+ cmp r5, #9
+ bhi _021DA306
+ add r1, r5, r5
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DA282: ; jump table
+ .short _021DA296 - _021DA282 - 2 ; case 0
+ .short _021DA29A - _021DA282 - 2 ; case 1
+ .short _021DA2A6 - _021DA282 - 2 ; case 2
+ .short _021DA2B2 - _021DA282 - 2 ; case 3
+ .short _021DA2BE - _021DA282 - 2 ; case 4
+ .short _021DA2CA - _021DA282 - 2 ; case 5
+ .short _021DA2D6 - _021DA282 - 2 ; case 6
+ .short _021DA2E2 - _021DA282 - 2 ; case 7
+ .short _021DA2EE - _021DA282 - 2 ; case 8
+ .short _021DA2FA - _021DA282 - 2 ; case 9
+_021DA296:
+ mov r4, #0
+ b _021DA30A
+_021DA29A:
+ mov r1, #7
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA30A
+_021DA2A6:
+ mov r1, #8
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA30A
+_021DA2B2:
+ mov r1, #9
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA30A
+_021DA2BE:
+ mov r1, #0xa
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA30A
+_021DA2CA:
+ mov r1, #0xb
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA30A
+_021DA2D6:
+ mov r1, #0xc
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA30A
+_021DA2E2:
+ mov r1, #0xd
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA30A
+_021DA2EE:
+ mov r1, #0xe
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA30A
+_021DA2FA:
+ mov r1, #0xf
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA30A
+_021DA306:
+ bl ErrorHandling
+_021DA30A:
+ cmp r4, #0
+ beq _021DA332
+ str r4, [sp]
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x38]
+ ldr r3, [sp, #0x30]
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021DA004
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA332:
+ ldr r2, [sp, #0x30]
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0
+ lsl r2, r2, #1
+ bl memcpy
+ ldr r0, [sp, #0x30]
+ str r0, [r6]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DA264
+
+ thumb_func_start MOD16_021DA348
+MOD16_021DA348: ; 0x021DA348
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r7, r1, #0
+ add r6, r2, #0
+ str r3, [sp, #0x10]
+ ldr r0, [sp, #0x34]
+ cmp r5, #0x11
+ bhi _021DA45A
+ add r1, r5, r5
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DA366: ; jump table
+ .short _021DA38A - _021DA366 - 2 ; case 0
+ .short _021DA38E - _021DA366 - 2 ; case 1
+ .short _021DA39A - _021DA366 - 2 ; case 2
+ .short _021DA3A6 - _021DA366 - 2 ; case 3
+ .short _021DA3B2 - _021DA366 - 2 ; case 4
+ .short _021DA3BE - _021DA366 - 2 ; case 5
+ .short _021DA3CA - _021DA366 - 2 ; case 6
+ .short _021DA3D6 - _021DA366 - 2 ; case 7
+ .short _021DA3E2 - _021DA366 - 2 ; case 8
+ .short _021DA3EE - _021DA366 - 2 ; case 9
+ .short _021DA3FA - _021DA366 - 2 ; case 10
+ .short _021DA406 - _021DA366 - 2 ; case 11
+ .short _021DA412 - _021DA366 - 2 ; case 12
+ .short _021DA41E - _021DA366 - 2 ; case 13
+ .short _021DA42A - _021DA366 - 2 ; case 14
+ .short _021DA436 - _021DA366 - 2 ; case 15
+ .short _021DA442 - _021DA366 - 2 ; case 16
+ .short _021DA44E - _021DA366 - 2 ; case 17
+_021DA38A:
+ mov r4, #0
+ b _021DA45E
+_021DA38E:
+ mov r1, #0x10
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA39A:
+ mov r1, #0x11
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA3A6:
+ mov r1, #0x12
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA3B2:
+ mov r1, #0x13
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA3BE:
+ mov r1, #0x14
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA3CA:
+ mov r1, #0x15
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA3D6:
+ mov r1, #0x16
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA3E2:
+ mov r1, #0x17
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA3EE:
+ mov r1, #0x18
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA3FA:
+ mov r1, #0x19
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA406:
+ mov r1, #0x1a
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA412:
+ mov r1, #0x1b
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA41E:
+ mov r1, #0x1c
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA42A:
+ mov r1, #0x1d
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA436:
+ mov r1, #0x1e
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA442:
+ mov r1, #0x1f
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA44E:
+ mov r1, #0x20
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA45E
+_021DA45A:
+ bl ErrorHandling
+_021DA45E:
+ cmp r4, #0
+ beq _021DA486
+ str r4, [sp]
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x38]
+ ldr r3, [sp, #0x30]
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021DA004
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA486:
+ ldr r2, [sp, #0x30]
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0
+ lsl r2, r2, #1
+ bl memcpy
+ ldr r0, [sp, #0x30]
+ str r0, [r6]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DA348
+
+ thumb_func_start MOD16_021DA49C
+MOD16_021DA49C: ; 0x021DA49C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r7, r1, #0
+ add r6, r2, #0
+ str r3, [sp, #0x10]
+ ldr r0, [sp, #0x34]
+ cmp r5, #0xe
+ bhi _021DA584
+ add r1, r5, r5
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DA4BA: ; jump table
+ .short _021DA4D8 - _021DA4BA - 2 ; case 0
+ .short _021DA4DC - _021DA4BA - 2 ; case 1
+ .short _021DA4E8 - _021DA4BA - 2 ; case 2
+ .short _021DA4F4 - _021DA4BA - 2 ; case 3
+ .short _021DA500 - _021DA4BA - 2 ; case 4
+ .short _021DA50C - _021DA4BA - 2 ; case 5
+ .short _021DA518 - _021DA4BA - 2 ; case 6
+ .short _021DA524 - _021DA4BA - 2 ; case 7
+ .short _021DA530 - _021DA4BA - 2 ; case 8
+ .short _021DA53C - _021DA4BA - 2 ; case 9
+ .short _021DA548 - _021DA4BA - 2 ; case 10
+ .short _021DA554 - _021DA4BA - 2 ; case 11
+ .short _021DA560 - _021DA4BA - 2 ; case 12
+ .short _021DA56C - _021DA4BA - 2 ; case 13
+ .short _021DA578 - _021DA4BA - 2 ; case 14
+_021DA4D8:
+ mov r4, #0
+ b _021DA588
+_021DA4DC:
+ mov r1, #0x21
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA4E8:
+ mov r1, #0x22
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA4F4:
+ mov r1, #0x23
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA500:
+ mov r1, #0x24
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA50C:
+ mov r1, #0x25
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA518:
+ mov r1, #0x26
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA524:
+ mov r1, #0x27
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA530:
+ mov r1, #0x28
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA53C:
+ mov r1, #0x29
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA548:
+ mov r1, #0x2a
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA554:
+ mov r1, #0x2b
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA560:
+ mov r1, #0x2c
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA56C:
+ mov r1, #0x2d
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA578:
+ mov r1, #0x2e
+ add r2, sp, #0x14
+ bl MOD16_021DA184
+ add r4, r0, #0
+ b _021DA588
+_021DA584:
+ bl ErrorHandling
+_021DA588:
+ cmp r4, #0
+ beq _021DA5B0
+ str r4, [sp]
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x38]
+ ldr r3, [sp, #0x30]
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021DA004
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA5B0:
+ ldr r2, [sp, #0x30]
+ ldr r1, [sp, #0x10]
+ add r0, r7, #0
+ lsl r2, r2, #1
+ bl memcpy
+ ldr r0, [sp, #0x30]
+ str r0, [r6]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DA49C
+
+ thumb_func_start MOD16_021DA5C4
+MOD16_021DA5C4: ; 0x021DA5C4
+ push {r3, r4, r5, r6}
+ mov r3, #0
+ str r3, [r1]
+ ldr r4, _021DA5F8 ; =0x00000F6C
+ str r3, [r2]
+ ldr r4, [r0, r4]
+ cmp r4, #0
+ ble _021DA5F4
+ ldr r5, _021DA5F8 ; =0x00000F6C
+ add r4, r0, #0
+_021DA5D8:
+ ldr r6, [r4, #4]
+ cmp r6, #2
+ bne _021DA5E4
+ ldr r6, [r2]
+ add r6, r6, #1
+ str r6, [r2]
+_021DA5E4:
+ ldr r6, [r1]
+ add r3, r3, #1
+ add r6, r6, #1
+ str r6, [r1]
+ ldr r6, [r0, r5]
+ add r4, #8
+ cmp r3, r6
+ blt _021DA5D8
+_021DA5F4:
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+_021DA5F8: .word 0x00000F6C
+ thumb_func_end MOD16_021DA5C4
+
+ thumb_func_start MOD16_021DA5FC
+MOD16_021DA5FC: ; 0x021DA5FC
+ push {r3, r4, r5, lr}
+ mov r1, #0x48
+ add r5, r0, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DA60E
+ bl ErrorHandling
+_021DA60E:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x48
+ bl Call_FillMemWithValue
+ mov r0, #5
+ str r0, [r4, #8]
+ str r5, [r4, #0x44]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DA5FC
+
+ thumb_func_start MOD16_021DA624
+MOD16_021DA624: ; 0x021DA624
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r5, #0
+ bne _021DA632
+ bl ErrorHandling
+_021DA632:
+ cmp r4, #0
+ bne _021DA63A
+ bl ErrorHandling
+_021DA63A:
+ add r0, r5, #0
+ bl MOD16_021DA7C4
+ cmp r0, #0
+ bne _021DA648
+ bl ErrorHandling
+_021DA648:
+ ldr r0, [r4]
+ str r0, [r5]
+ ldr r0, [r4, #4]
+ str r0, [r5, #4]
+ mov r0, #0
+ str r0, [r5, #8]
+ add r0, r5, #0
+ add r0, #0xc
+ bl MOD16_021DA7F4
+ ldr r0, [r5, #0x44]
+ str r0, [r5, #0x10]
+ add r0, r5, #0
+ add r0, #0x2c
+ bl MOD16_021DA800
+ ldr r0, [r5, #0x44]
+ str r0, [r5, #0x30]
+ ldr r0, [r4, #8]
+ ldr r0, [r0]
+ str r0, [r5, #0x20]
+ ldr r0, [r4, #8]
+ ldr r0, [r0, #4]
+ str r0, [r5, #0x24]
+ ldr r0, [r4, #8]
+ ldr r0, [r0, #8]
+ str r0, [r5, #0x28]
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0]
+ str r0, [r5, #0x38]
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0, #4]
+ str r0, [r5, #0x3c]
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0, #8]
+ str r0, [r5, #0x40]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DA624
+
+ thumb_func_start MOD16_021DA694
+MOD16_021DA694: ; 0x021DA694
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DA69E
+ bl ErrorHandling
+_021DA69E:
+ ldr r0, [r4, #8]
+ cmp r0, #5
+ bhi _021DA712
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DA6B0: ; jump table
+ .short _021DA6BC - _021DA6B0 - 2 ; case 0
+ .short _021DA716 - _021DA6B0 - 2 ; case 1
+ .short _021DA6D8 - _021DA6B0 - 2 ; case 2
+ .short _021DA716 - _021DA6B0 - 2 ; case 3
+ .short _021DA6F6 - _021DA6B0 - 2 ; case 4
+ .short _021DA70E - _021DA6B0 - 2 ; case 5
+_021DA6BC:
+ add r1, r4, #0
+ ldr r0, [r4, #0x20]
+ ldr r2, [r4]
+ add r1, #0xc
+ bl MOD16_021DA808
+ cmp r0, #1
+ bne _021DA716
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #0
+ str r0, [r4, #0xc]
+ b _021DA716
+_021DA6D8:
+ add r1, r4, #0
+ ldr r0, [r4, #0x24]
+ ldr r2, [r4]
+ add r1, #0xc
+ bl MOD16_021DA808
+ cmp r0, #1
+ bne _021DA716
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #0
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x2c]
+ b _021DA716
+_021DA6F6:
+ add r1, r4, #0
+ ldr r0, [r4, #0x28]
+ ldr r2, [r4]
+ add r1, #0xc
+ bl MOD16_021DA808
+ cmp r0, #1
+ bne _021DA716
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _021DA716
+_021DA70E:
+ mov r0, #1
+ pop {r4, pc}
+_021DA712:
+ bl ErrorHandling
+_021DA716:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DA694
+
+ thumb_func_start MOD16_021DA71C
+MOD16_021DA71C: ; 0x021DA71C
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bne _021DA728
+ bl ErrorHandling
+_021DA728:
+ ldr r0, [r4, #8]
+ cmp r0, #5
+ bhi _021DA7A6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DA73A: ; jump table
+ .short _021DA7AA - _021DA73A - 2 ; case 0
+ .short _021DA746 - _021DA73A - 2 ; case 1
+ .short _021DA76A - _021DA73A - 2 ; case 2
+ .short _021DA780 - _021DA73A - 2 ; case 3
+ .short _021DA7AA - _021DA73A - 2 ; case 4
+ .short _021DA7A0 - _021DA73A - 2 ; case 5
+_021DA746:
+ add r0, r4, #0
+ add r0, #0xc
+ str r0, [sp]
+ add r2, r4, #0
+ ldr r0, [r4, #0x38]
+ ldr r1, [r4, #4]
+ ldr r3, [r4]
+ add r2, #0x2c
+ bl MOD16_021DA828
+ cmp r0, #1
+ bne _021DA7AA
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ b _021DA7AA
+_021DA76A:
+ add r0, r4, #0
+ add r0, #0xc
+ str r0, [sp]
+ add r2, r4, #0
+ ldr r0, [r4, #0x3c]
+ ldr r1, [r4, #4]
+ ldr r3, [r4]
+ add r2, #0x2c
+ bl MOD16_021DA828
+ b _021DA7AA
+_021DA780:
+ add r0, r4, #0
+ add r0, #0xc
+ str r0, [sp]
+ add r2, r4, #0
+ ldr r0, [r4, #0x40]
+ ldr r1, [r4, #4]
+ ldr r3, [r4]
+ add r2, #0x2c
+ bl MOD16_021DA828
+ cmp r0, #1
+ bne _021DA7AA
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ b _021DA7AA
+_021DA7A0:
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, pc}
+_021DA7A6:
+ bl ErrorHandling
+_021DA7AA:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD16_021DA71C
+
+ thumb_func_start MOD16_021DA7B0
+MOD16_021DA7B0: ; 0x021DA7B0
+ str r1, [r0, #0x1c]
+ bx lr
+ thumb_func_end MOD16_021DA7B0
+
+ thumb_func_start MOD16_021DA7B4
+MOD16_021DA7B4: ; 0x021DA7B4
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DA7BE
+ bl ErrorHandling
+_021DA7BE:
+ mov r0, #1
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+ thumb_func_end MOD16_021DA7B4
+
+ thumb_func_start MOD16_021DA7C4
+MOD16_021DA7C4: ; 0x021DA7C4
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DA7CE
+ bl ErrorHandling
+_021DA7CE:
+ ldr r0, [r4, #8]
+ cmp r0, #5
+ bne _021DA7D8
+ mov r0, #1
+ pop {r4, pc}
+_021DA7D8:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD16_021DA7C4
+
+ thumb_func_start MOD16_021DA7DC
+MOD16_021DA7DC: ; 0x021DA7DC
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DA7E6
+ bl ErrorHandling
+_021DA7E6:
+ ldr r0, [r4, #8]
+ cmp r0, #2
+ bne _021DA7F0
+ mov r0, #1
+ pop {r4, pc}
+_021DA7F0:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD16_021DA7DC
+
+ thumb_func_start MOD16_021DA7F4
+MOD16_021DA7F4: ; 0x021DA7F4
+ mov r1, #0
+ str r1, [r0]
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DA7F4
+
+ thumb_func_start MOD16_021DA800
+MOD16_021DA800: ; 0x021DA800
+ mov r1, #0
+ str r1, [r0]
+ str r1, [r0, #8]
+ bx lr
+ thumb_func_end MOD16_021DA800
+
+ thumb_func_start MOD16_021DA808
+MOD16_021DA808: ; 0x021DA808
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ cmp r5, #0
+ bne _021DA818
+ bl ErrorHandling
+_021DA818:
+ cmp r4, #0
+ bne _021DA820
+ bl ErrorHandling
+_021DA820:
+ add r0, r4, #0
+ add r1, r6, #0
+ blx r5
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021DA808
+
+ thumb_func_start MOD16_021DA828
+MOD16_021DA828: ; 0x021DA828
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ add r7, r3, #0
+ cmp r5, #0
+ bne _021DA83A
+ bl ErrorHandling
+_021DA83A:
+ cmp r4, #0
+ bne _021DA842
+ bl ErrorHandling
+_021DA842:
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ bne _021DA84C
+ bl ErrorHandling
+_021DA84C:
+ ldr r3, [sp, #0x18]
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ blx r5
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DA828
+
+ thumb_func_start MOD16_021DA858
+MOD16_021DA858: ; 0x021DA858
+ push {r4, lr}
+ mov r1, #0xc
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DA868
+ bl ErrorHandling
+_021DA868:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DA858
+
+ thumb_func_start MOD16_021DA888
+MOD16_021DA888: ; 0x021DA888
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ cmp r5, #0
+ bne _021DA898
+ bl ErrorHandling
+_021DA898:
+ str r4, [r5]
+ str r6, [r5, #4]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DA888
+
+ thumb_func_start MOD16_021DA8A0
+MOD16_021DA8A0: ; 0x021DA8A0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ cmp r4, #0
+ bne _021DA8AE
+ bl ErrorHandling
+_021DA8AE:
+ add r0, r4, #0
+ bl MOD16_021DA908
+ cmp r0, #0
+ bne _021DA8CA
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DA918
+ add r1, r0, #0
+ beq _021DA8CA
+ add r0, r4, #0
+ bl MOD16_021DA950
+_021DA8CA:
+ add r0, r4, #0
+ bl MOD16_021DA908
+ cmp r0, #1
+ bne _021DA8EA
+ ldr r1, [r4, #8]
+ add r0, r1, #0
+ ldr r1, [r1, #4]
+ add r0, #8
+ blx r1
+ cmp r0, #1
+ bne _021DA8EA
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD16_021DA950
+_021DA8EA:
+ ldr r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DA8A0
+
+ thumb_func_start MOD16_021DA8F0
+MOD16_021DA8F0: ; 0x021DA8F0
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DA8FA
+ bl ErrorHandling
+_021DA8FA:
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021DA904
+ mov r0, #1
+ pop {r4, pc}
+_021DA904:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD16_021DA8F0
+
+ thumb_func_start MOD16_021DA908
+MOD16_021DA908: ; 0x021DA908
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _021DA912
+ mov r0, #1
+ bx lr
+_021DA912:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DA908
+
+ thumb_func_start MOD16_021DA918
+MOD16_021DA918: ; 0x021DA918
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r7, r1, #0
+ mov r6, #0
+ cmp r0, #0
+ ble _021DA94C
+ add r4, r6, #0
+_021DA928:
+ ldr r0, [r5]
+ cmp r0, #0
+ bne _021DA932
+ bl ErrorHandling
+_021DA932:
+ ldr r0, [r5]
+ ldr r1, [r0, r4]
+ tst r1, r7
+ beq _021DA942
+ mov r1, #0x14
+ mul r1, r6
+ add r0, r0, r1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA942:
+ ldr r0, [r5, #4]
+ add r6, r6, #1
+ add r4, #0x14
+ cmp r6, r0
+ blt _021DA928
+_021DA94C:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DA918
+
+ thumb_func_start MOD16_021DA950
+MOD16_021DA950: ; 0x021DA950
+ str r1, [r0, #8]
+ cmp r1, #0
+ beq _021DA95A
+ mov r0, #0
+ str r0, [r1, #8]
+_021DA95A:
+ bx lr
+ thumb_func_end MOD16_021DA950
+
+ thumb_func_start MOD16_021DA95C
+MOD16_021DA95C: ; 0x021DA95C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r2, [r4, #8]
+ cmp r0, #3
+ bhi _021DA9BC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DA974: ; jump table
+ .short _021DA97C - _021DA974 - 2 ; case 0
+ .short _021DA98A - _021DA974 - 2 ; case 1
+ .short _021DA99C - _021DA974 - 2 ; case 2
+ .short _021DA9AE - _021DA974 - 2 ; case 3
+_021DA97C:
+ ldr r0, [r2, #4]
+ bl MOD16_021DA7B4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DA9C0
+_021DA98A:
+ ldr r0, [r2, #4]
+ bl MOD16_021DA7C4
+ cmp r0, #1
+ bne _021DA9C0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DA9C0
+_021DA99C:
+ ldr r0, [r2]
+ ldr r1, [r2, #8]
+ ldr r2, [r2, #4]
+ bl MOD16_021DAC44
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DA9C0
+_021DA9AE:
+ ldr r0, [r2, #4]
+ bl MOD16_021DA7DC
+ cmp r0, #1
+ bne _021DA9C0
+ mov r0, #1
+ pop {r4, pc}
+_021DA9BC:
+ bl ErrorHandling
+_021DA9C0:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD16_021DA95C
+
+ thumb_func_start MOD16_021DA9C4
+MOD16_021DA9C4: ; 0x021DA9C4
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5]
+ ldr r4, [r5, #8]
+ cmp r0, #0
+ beq _021DA9DC
+ cmp r0, #1
+ beq _021DA9FC
+ cmp r0, #2
+ beq _021DAA3A
+ b _021DAA44
+_021DA9DC:
+ ldr r0, [r4]
+ bl MOD16_021DA7B4
+ ldr r0, [r4, #4]
+ bl MOD16_021DA7B4
+ ldr r0, [r4, #8]
+ bl MOD16_021DA7B4
+ ldr r0, [r4, #0xc]
+ bl MOD16_021DA7B4
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DAA48
+_021DA9FC:
+ ldr r0, [r4]
+ bl MOD16_021DA7C4
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ bl MOD16_021DA7C4
+ str r0, [sp, #4]
+ ldr r0, [r4, #8]
+ bl MOD16_021DA7C4
+ str r0, [sp, #8]
+ ldr r0, [r4, #0xc]
+ bl MOD16_021DA7C4
+ str r0, [sp, #0xc]
+ mov r1, #0
+ add r2, sp, #0
+_021DAA20:
+ ldr r0, [r2]
+ cmp r0, #0
+ beq _021DAA2E
+ add r1, r1, #1
+ add r2, r2, #4
+ cmp r1, #4
+ blt _021DAA20
+_021DAA2E:
+ cmp r1, #4
+ blt _021DAA48
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DAA48
+_021DAA3A:
+ ldr r1, [r4, #0x10]
+ mov r0, #1
+ str r0, [r1]
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_021DAA44:
+ bl ErrorHandling
+_021DAA48:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DA9C4
+
+ thumb_func_start MOD16_021DAA50
+MOD16_021DAA50: ; 0x021DAA50
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5]
+ ldr r4, [r5, #8]
+ cmp r0, #3
+ bls _021DAA60
+ b _021DAB68
+_021DAA60:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DAA6C: ; jump table
+ .short _021DAA74 - _021DAA6C - 2 ; case 0
+ .short _021DAA94 - _021DAA6C - 2 ; case 1
+ .short _021DAAD2 - _021DAA6C - 2 ; case 2
+ .short _021DAB02 - _021DAA6C - 2 ; case 3
+_021DAA74:
+ ldr r0, [r4]
+ bl MOD16_021DA7B4
+ ldr r0, [r4, #4]
+ bl MOD16_021DA7B4
+ ldr r0, [r4, #8]
+ bl MOD16_021DA7B4
+ ldr r0, [r4, #0xc]
+ bl MOD16_021DA7B4
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DAB6C
+_021DAA94:
+ ldr r0, [r4]
+ bl MOD16_021DA7C4
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ bl MOD16_021DA7C4
+ str r0, [sp, #4]
+ ldr r0, [r4, #8]
+ bl MOD16_021DA7C4
+ str r0, [sp, #8]
+ ldr r0, [r4, #0xc]
+ bl MOD16_021DA7C4
+ str r0, [sp, #0xc]
+ mov r1, #0
+ add r2, sp, #0
+_021DAAB8:
+ ldr r0, [r2]
+ cmp r0, #0
+ beq _021DAAC6
+ add r1, r1, #1
+ add r2, r2, #4
+ cmp r1, #4
+ blt _021DAAB8
+_021DAAC6:
+ cmp r1, #4
+ blt _021DAB6C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DAB6C
+_021DAAD2:
+ ldr r0, [r4, #0x20]
+ ldr r1, [r4, #0x10]
+ ldr r2, [r4]
+ bl MOD16_021DAC44
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x14]
+ ldr r2, [r4, #4]
+ bl MOD16_021DAC44
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x18]
+ ldr r2, [r4, #8]
+ bl MOD16_021DAC44
+ ldr r0, [r4, #0x2c]
+ ldr r1, [r4, #0x1c]
+ ldr r2, [r4, #0xc]
+ bl MOD16_021DAC44
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DAB6C
+_021DAB02:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ beq _021DAB12
+ ldr r0, [r4]
+ bl MOD16_021DA7DC
+ str r0, [sp]
+ b _021DAB16
+_021DAB12:
+ mov r0, #1
+ str r0, [sp]
+_021DAB16:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021DAB24
+ ldr r0, [r4, #4]
+ bl MOD16_021DA7DC
+ str r0, [sp, #4]
+_021DAB24:
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _021DAB34
+ ldr r0, [r4, #8]
+ bl MOD16_021DA7DC
+ str r0, [sp, #8]
+ b _021DAB38
+_021DAB34:
+ mov r0, #1
+ str r0, [sp, #8]
+_021DAB38:
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _021DAB48
+ ldr r0, [r4, #0xc]
+ bl MOD16_021DA7DC
+ str r0, [sp, #0xc]
+ b _021DAB4C
+_021DAB48:
+ mov r0, #1
+ str r0, [sp, #0xc]
+_021DAB4C:
+ mov r2, #0
+ add r1, sp, #0
+_021DAB50:
+ ldr r0, [r1]
+ cmp r0, #0
+ beq _021DAB5E
+ add r2, r2, #1
+ add r1, r1, #4
+ cmp r2, #4
+ blt _021DAB50
+_021DAB5E:
+ cmp r2, #4
+ blt _021DAB6C
+ add sp, #0x10
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DAB68:
+ bl ErrorHandling
+_021DAB6C:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DAA50
+
+ thumb_func_start MOD16_021DAB74
+MOD16_021DAB74: ; 0x021DAB74
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5]
+ ldr r4, [r5, #8]
+ cmp r0, #3
+ bhi _021DAC38
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DAB8E: ; jump table
+ .short _021DAB96 - _021DAB8E - 2 ; case 0
+ .short _021DABAA - _021DAB8E - 2 ; case 1
+ .short _021DABD8 - _021DAB8E - 2 ; case 2
+ .short _021DABF4 - _021DAB8E - 2 ; case 3
+_021DAB96:
+ ldr r0, [r4]
+ bl MOD16_021DA7B4
+ ldr r0, [r4, #4]
+ bl MOD16_021DA7B4
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DAC3C
+_021DABAA:
+ ldr r0, [r4]
+ bl MOD16_021DA7C4
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ bl MOD16_021DA7C4
+ str r0, [sp, #4]
+ mov r1, #0
+ add r2, sp, #0
+_021DABBE:
+ ldr r0, [r2]
+ cmp r0, #0
+ beq _021DABCC
+ add r1, r1, #1
+ add r2, r2, #4
+ cmp r1, #2
+ blt _021DABBE
+_021DABCC:
+ cmp r1, #2
+ blt _021DAC3C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DAC3C
+_021DABD8:
+ ldr r0, [r4, #0x10]
+ ldr r1, [r4, #8]
+ ldr r2, [r4]
+ bl MOD16_021DAC44
+ ldr r0, [r4, #0x14]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #4]
+ bl MOD16_021DAC44
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DAC3C
+_021DABF4:
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021DAC04
+ ldr r0, [r4]
+ bl MOD16_021DA7DC
+ str r0, [sp]
+ b _021DAC08
+_021DAC04:
+ mov r0, #1
+ str r0, [sp]
+_021DAC08:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021DAC18
+ ldr r0, [r4, #4]
+ bl MOD16_021DA7DC
+ str r0, [sp, #4]
+ b _021DAC1C
+_021DAC18:
+ mov r0, #1
+ str r0, [sp, #4]
+_021DAC1C:
+ mov r2, #0
+ add r1, sp, #0
+_021DAC20:
+ ldr r0, [r1]
+ cmp r0, #0
+ beq _021DAC2E
+ add r2, r2, #1
+ add r1, r1, #4
+ cmp r2, #2
+ blt _021DAC20
+_021DAC2E:
+ cmp r2, #2
+ blt _021DAC3C
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DAC38:
+ bl ErrorHandling
+_021DAC3C:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DAB74
+
+ thumb_func_start MOD16_021DAC44
+MOD16_021DAC44: ; 0x021DAC44
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r5, #0
+ beq _021DAC76
+ ldr r0, [r5]
+ add r1, sp, #0
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #8
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x14
+ str r0, [sp, #0xc]
+ add r0, r2, #0
+ bl MOD16_021DA624
+ ldr r1, [r5, #0x20]
+ ldr r2, [r5, #0x24]
+ add r0, r4, #0
+ bl MOD16_021DA888
+_021DAC76:
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DAC44
+
+ thumb_func_start MOD16_021DAC7C
+MOD16_021DAC7C: ; 0x021DAC7C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ bne _021DAC8A
+ bl ErrorHandling
+_021DAC8A:
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DAC7C
+
+ thumb_func_start MOD16_021DAC98
+MOD16_021DAC98: ; 0x021DAC98
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ ldr r1, _021DAD1C ; =MOD16_021DAA50
+ str r3, [r6]
+ str r1, [r6, #4]
+ mov r1, #0x30
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DACB2
+ bl ErrorHandling
+_021DACB2:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x30
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl MOD16_021D7A38
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7A4C
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD16_021D7A60
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl MOD16_021D7A74
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD16_021D7A88
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ bl MOD16_021D7A9C
+ str r0, [r4, #0x14]
+ add r0, r5, #0
+ bl MOD16_021D7AB0
+ str r0, [r4, #0x18]
+ add r0, r5, #0
+ bl MOD16_021D7AC4
+ str r0, [r4, #0x1c]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x20]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021D7B7C
+ str r0, [r4, #0x24]
+ mov r0, #0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ str r4, [r6, #0x10]
+ pop {r4, r5, r6, pc}
+ nop
+_021DAD1C: .word MOD16_021DAA50
+ thumb_func_end MOD16_021DAC98
+
+ thumb_func_start MOD16_021DAD20
+MOD16_021DAD20: ; 0x021DAD20
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r1, _021DAD74 ; =MOD16_021DA9C4
+ str r3, [r5]
+ str r1, [r5, #4]
+ mov r1, #0x14
+ add r6, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DAD3A
+ bl ErrorHandling
+_021DAD3A:
+ add r2, r4, #0
+ mov r1, #0x14
+ mov r0, #0
+_021DAD40:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DAD40
+ add r0, r6, #0
+ bl MOD16_021D7A38
+ str r0, [r4]
+ add r0, r6, #0
+ bl MOD16_021D7A4C
+ str r0, [r4, #4]
+ add r0, r6, #0
+ bl MOD16_021D7A60
+ str r0, [r4, #8]
+ add r0, r6, #0
+ bl MOD16_021D7A74
+ str r0, [r4, #0xc]
+ add r0, r6, #0
+ bl MOD16_021D7B28
+ str r0, [r4, #0x10]
+ str r4, [r5, #0x10]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DAD74: .word MOD16_021DA9C4
+ thumb_func_end MOD16_021DAD20
+
+ thumb_func_start MOD16_021DAD78
+MOD16_021DAD78: ; 0x021DAD78
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ ldr r1, _021DAE08 ; =MOD16_021DAA50
+ str r3, [r6]
+ str r1, [r6, #4]
+ mov r1, #0x30
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DAD92
+ bl ErrorHandling
+_021DAD92:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x30
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl MOD16_021D7A38
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7A4C
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD16_021D7A60
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl MOD16_021D7A74
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD16_021D7A88
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ bl MOD16_021D7A9C
+ str r0, [r4, #0x14]
+ add r0, r5, #0
+ bl MOD16_021D7AB0
+ str r0, [r4, #0x18]
+ add r0, r5, #0
+ bl MOD16_021D7AC4
+ str r0, [r4, #0x1c]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x20]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD16_021D7B7C
+ str r0, [r4, #0x24]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x28]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD16_021D7B7C
+ str r0, [r4, #0x2c]
+ str r4, [r6, #0x10]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DAE08: .word MOD16_021DAA50
+ thumb_func_end MOD16_021DAD78
+
+ thumb_func_start MOD16_021DAE0C
+MOD16_021DAE0C: ; 0x021DAE0C
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ ldr r1, _021DAE90 ; =MOD16_021DAA50
+ str r3, [r6]
+ str r1, [r6, #4]
+ mov r1, #0x30
+ add r5, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DAE26
+ bl ErrorHandling
+_021DAE26:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x30
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl MOD16_021D7A38
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7A4C
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD16_021D7A60
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl MOD16_021D7A74
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD16_021D7A88
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ bl MOD16_021D7A9C
+ str r0, [r4, #0x14]
+ add r0, r5, #0
+ bl MOD16_021D7AB0
+ str r0, [r4, #0x18]
+ add r0, r5, #0
+ bl MOD16_021D7AC4
+ str r0, [r4, #0x1c]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x20]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD16_021D7B7C
+ str r0, [r4, #0x24]
+ mov r0, #0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ str r4, [r6, #0x10]
+ pop {r4, r5, r6, pc}
+ nop
+_021DAE90: .word MOD16_021DAA50
+ thumb_func_end MOD16_021DAE0C
+
+ thumb_func_start MOD16_021DAE94
+MOD16_021DAE94: ; 0x021DAE94
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _021DAED0 ; =MOD16_021DA95C
+ str r3, [r5]
+ add r6, r1, #0
+ str r0, [r5, #4]
+ add r0, r2, #0
+ mov r1, #0xc
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DAEB0
+ bl ErrorHandling
+_021DAEB0:
+ add r0, r6, #0
+ mov r1, #0
+ bl MOD16_021D7B5C
+ str r0, [r4]
+ add r0, r6, #0
+ bl MOD16_021D7A38
+ str r0, [r4, #4]
+ add r0, r6, #0
+ bl MOD16_021D7A88
+ str r0, [r4, #8]
+ str r4, [r5, #0x10]
+ pop {r4, r5, r6, pc}
+ nop
+_021DAED0: .word MOD16_021DA95C
+ thumb_func_end MOD16_021DAE94
+
+ thumb_func_start MOD16_021DAED4
+MOD16_021DAED4: ; 0x021DAED4
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r1, _021DAF34 ; =MOD16_021DAB74
+ str r3, [r5]
+ str r1, [r5, #4]
+ mov r1, #0x18
+ add r6, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DAEEE
+ bl ErrorHandling
+_021DAEEE:
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021DAEF4:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DAEF4
+ add r0, r6, #0
+ bl MOD16_021D7A38
+ str r0, [r4]
+ add r0, r6, #0
+ bl MOD16_021D7A4C
+ str r0, [r4, #4]
+ add r0, r6, #0
+ bl MOD16_021D7A88
+ str r0, [r4, #8]
+ add r0, r6, #0
+ bl MOD16_021D7A9C
+ str r0, [r4, #0xc]
+ add r0, r6, #0
+ mov r1, #6
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x10]
+ add r0, r6, #0
+ mov r1, #4
+ bl MOD16_021D7B7C
+ str r0, [r4, #0x14]
+ str r4, [r5, #0x10]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DAF34: .word MOD16_021DAB74
+ thumb_func_end MOD16_021DAED4
+
+ thumb_func_start MOD16_021DAF38
+MOD16_021DAF38: ; 0x021DAF38
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r1, _021DAF98 ; =MOD16_021DAB74
+ str r3, [r5]
+ str r1, [r5, #4]
+ mov r1, #0x18
+ add r6, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DAF52
+ bl ErrorHandling
+_021DAF52:
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021DAF58:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DAF58
+ add r0, r6, #0
+ bl MOD16_021D7A38
+ str r0, [r4]
+ add r0, r6, #0
+ bl MOD16_021D7A4C
+ str r0, [r4, #4]
+ add r0, r6, #0
+ bl MOD16_021D7A88
+ str r0, [r4, #8]
+ add r0, r6, #0
+ bl MOD16_021D7A9C
+ str r0, [r4, #0xc]
+ add r0, r6, #0
+ mov r1, #7
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x10]
+ add r0, r6, #0
+ mov r1, #5
+ bl MOD16_021D7B7C
+ str r0, [r4, #0x14]
+ str r4, [r5, #0x10]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DAF98: .word MOD16_021DAB74
+ thumb_func_end MOD16_021DAF38
+
+ thumb_func_start MOD16_021DAF9C
+MOD16_021DAF9C: ; 0x021DAF9C
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r1, _021DAFFC ; =MOD16_021DAB74
+ str r3, [r5]
+ str r1, [r5, #4]
+ mov r1, #0x18
+ add r6, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DAFB6
+ bl ErrorHandling
+_021DAFB6:
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021DAFBC:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DAFBC
+ add r0, r6, #0
+ bl MOD16_021D7A38
+ str r0, [r4]
+ add r0, r6, #0
+ bl MOD16_021D7A4C
+ str r0, [r4, #4]
+ add r0, r6, #0
+ bl MOD16_021D7A88
+ str r0, [r4, #8]
+ add r0, r6, #0
+ bl MOD16_021D7A9C
+ str r0, [r4, #0xc]
+ add r0, r6, #0
+ mov r1, #8
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x10]
+ add r0, r6, #0
+ mov r1, #6
+ bl MOD16_021D7B7C
+ str r0, [r4, #0x14]
+ str r4, [r5, #0x10]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DAFFC: .word MOD16_021DAB74
+ thumb_func_end MOD16_021DAF9C
+
+ thumb_func_start MOD16_021DB000
+MOD16_021DB000: ; 0x021DB000
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r1, _021DB054 ; =MOD16_021DA95C
+ str r3, [r5]
+ str r1, [r5, #4]
+ mov r1, #0xc
+ add r6, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DB01A
+ bl ErrorHandling
+_021DB01A:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+ add r0, r6, #0
+ bl MOD16_021D7A38
+ str r0, [r4, #4]
+ add r0, r6, #0
+ bl MOD16_021D7A88
+ str r0, [r4, #8]
+ add r0, r6, #0
+ mov r1, #8
+ bl MOD16_021D7B5C
+ str r0, [r4]
+ str r4, [r5, #0x10]
+ pop {r4, r5, r6, pc}
+ nop
+_021DB054: .word MOD16_021DA95C
+ thumb_func_end MOD16_021DB000
+
+ thumb_func_start MOD16_021DB058
+MOD16_021DB058: ; 0x021DB058
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r1, _021DB0AC ; =MOD16_021DA95C
+ str r3, [r5]
+ str r1, [r5, #4]
+ mov r1, #0xc
+ add r6, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DB072
+ bl ErrorHandling
+_021DB072:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+ add r0, r6, #0
+ bl MOD16_021D7A38
+ str r0, [r4, #4]
+ add r0, r6, #0
+ bl MOD16_021D7A88
+ str r0, [r4, #8]
+ add r0, r6, #0
+ mov r1, #9
+ bl MOD16_021D7B5C
+ str r0, [r4]
+ str r4, [r5, #0x10]
+ pop {r4, r5, r6, pc}
+ nop
+_021DB0AC: .word MOD16_021DA95C
+ thumb_func_end MOD16_021DB058
+
+ thumb_func_start MOD16_021DB0B0
+MOD16_021DB0B0: ; 0x021DB0B0
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r1, _021DB110 ; =MOD16_021DAB74
+ str r3, [r5]
+ str r1, [r5, #4]
+ mov r1, #0x18
+ add r6, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DB0CA
+ bl ErrorHandling
+_021DB0CA:
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021DB0D0:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DB0D0
+ add r0, r6, #0
+ bl MOD16_021D7A38
+ str r0, [r4]
+ add r0, r6, #0
+ bl MOD16_021D7A4C
+ str r0, [r4, #4]
+ add r0, r6, #0
+ bl MOD16_021D7A88
+ str r0, [r4, #8]
+ add r0, r6, #0
+ bl MOD16_021D7A9C
+ str r0, [r4, #0xc]
+ add r0, r6, #0
+ mov r1, #2
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x10]
+ add r0, r6, #0
+ mov r1, #2
+ bl MOD16_021D7B7C
+ str r0, [r4, #0x14]
+ str r4, [r5, #0x10]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DB110: .word MOD16_021DAB74
+ thumb_func_end MOD16_021DB0B0
+
+ thumb_func_start MOD16_021DB114
+MOD16_021DB114: ; 0x021DB114
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r1, _021DB168 ; =MOD16_021DA95C
+ str r3, [r5]
+ str r1, [r5, #4]
+ mov r1, #0xc
+ add r6, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DB12E
+ bl ErrorHandling
+_021DB12E:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+ add r0, r6, #0
+ bl MOD16_021D7A38
+ str r0, [r4, #4]
+ add r0, r6, #0
+ bl MOD16_021D7A88
+ str r0, [r4, #8]
+ add r0, r6, #0
+ mov r1, #2
+ bl MOD16_021D7B5C
+ str r0, [r4]
+ str r4, [r5, #0x10]
+ pop {r4, r5, r6, pc}
+ nop
+_021DB168: .word MOD16_021DA95C
+ thumb_func_end MOD16_021DB114
+
+ thumb_func_start MOD16_021DB16C
+MOD16_021DB16C: ; 0x021DB16C
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r1, _021DB1CC ; =MOD16_021DAB74
+ str r3, [r5]
+ str r1, [r5, #4]
+ mov r1, #0x18
+ add r6, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DB186
+ bl ErrorHandling
+_021DB186:
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021DB18C:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DB18C
+ add r0, r6, #0
+ bl MOD16_021D7A38
+ str r0, [r4]
+ add r0, r6, #0
+ bl MOD16_021D7A4C
+ str r0, [r4, #4]
+ add r0, r6, #0
+ bl MOD16_021D7A88
+ str r0, [r4, #8]
+ add r0, r6, #0
+ bl MOD16_021D7A9C
+ str r0, [r4, #0xc]
+ add r0, r6, #0
+ mov r1, #3
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x10]
+ add r0, r6, #0
+ mov r1, #7
+ bl MOD16_021D7B7C
+ str r0, [r4, #0x14]
+ str r4, [r5, #0x10]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DB1CC: .word MOD16_021DAB74
+ thumb_func_end MOD16_021DB16C
+
+ thumb_func_start MOD16_021DB1D0
+MOD16_021DB1D0: ; 0x021DB1D0
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r1, _021DB224 ; =MOD16_021DA95C
+ str r3, [r5]
+ str r1, [r5, #4]
+ mov r1, #0xc
+ add r6, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DB1EA
+ bl ErrorHandling
+_021DB1EA:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+ add r0, r6, #0
+ bl MOD16_021D7A38
+ str r0, [r4, #4]
+ add r0, r6, #0
+ bl MOD16_021D7A88
+ str r0, [r4, #8]
+ add r0, r6, #0
+ mov r1, #4
+ bl MOD16_021D7B5C
+ str r0, [r4]
+ str r4, [r5, #0x10]
+ pop {r4, r5, r6, pc}
+ nop
+_021DB224: .word MOD16_021DA95C
+ thumb_func_end MOD16_021DB1D0
+
+ thumb_func_start MOD16_021DB228
+MOD16_021DB228: ; 0x021DB228
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DB23C
+ bl ErrorHandling
+_021DB23C:
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021DB242:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DB242
+ ldr r0, [r5, #8]
+ ldr r1, [r5, #0xc]
+ bl FUN_02011744
+ str r0, [r4]
+ ldr r1, [r5, #8]
+ ldr r0, [r5, #0xc]
+ lsl r1, r1, #4
+ bl FUN_02016998
+ str r0, [r4, #0xc]
+ cmp r0, #0
+ bne _021DB268
+ bl ErrorHandling
+_021DB268:
+ ldr r2, [r5, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ lsl r2, r2, #4
+ bl Call_FillMemWithValue
+ ldr r0, [r5, #8]
+ str r0, [r4, #0x10]
+ ldr r0, [r5]
+ str r0, [r4, #4]
+ ldr r0, [r5, #4]
+ str r0, [r4, #8]
+ ldr r0, [r5, #0xc]
+ str r0, [r4, #0x14]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DB228
+
+ thumb_func_start MOD16_021DB288
+MOD16_021DB288: ; 0x021DB288
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DB292
+ bl ErrorHandling
+_021DB292:
+ add r0, r4, #0
+ bl MOD16_021DB358
+ ldr r0, [r4, #0xc]
+ bl FUN_02016A18
+ ldr r0, [r4]
+ bl FUN_020117BC
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021DB2AA:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DB2AA
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DB288
+
+ thumb_func_start MOD16_021DB2BC
+MOD16_021DB2BC: ; 0x021DB2BC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0x20]
+ ldr r2, [r4, #0x24]
+ bl FUN_02011898
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD16_021DB2D4
+ pop {r4, pc}
+ thumb_func_end MOD16_021DB2BC
+
+ thumb_func_start MOD16_021DB2D4
+MOD16_021DB2D4: ; 0x021DB2D4
+ push {r4, r5, r6, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r6, r1, #0
+ bl MOD16_021DB460
+ add r4, r0, #0
+ bne _021DB2EA
+ bl ErrorHandling
+_021DB2EA:
+ ldr r2, [r5, #0x20]
+ add r0, r6, #0
+ mov r1, #1
+ add r3, r4, #4
+ bl FUN_0201D568
+ ldr r0, [r5]
+ ldr r0, [r0]
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ ldr r0, [r0, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #8]
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x10]
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x14]
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x20]
+ ldr r0, [r5, #0x1c]
+ str r0, [sp, #0x24]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0x28]
+ ldr r0, [r5, #0x24]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0
+ bl FUN_020117E8
+ str r0, [r4]
+ add r0, r4, #0
+ add sp, #0x30
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021DB2D4
+
+ thumb_func_start MOD16_021DB338
+MOD16_021DB338: ; 0x021DB338
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02011870
+ add r0, r4, #4
+ bl FUN_0201D5E8
+ mov r1, #0x10
+ mov r0, #0
+_021DB34C:
+ strb r0, [r4]
+ add r4, r4, #1
+ sub r1, r1, #1
+ bne _021DB34C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DB338
+
+ thumb_func_start MOD16_021DB358
+MOD16_021DB358: ; 0x021DB358
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ mov r6, #0
+ cmp r0, #0
+ ble _021DB384
+ add r4, r6, #0
+_021DB366:
+ ldr r0, [r5, #0xc]
+ add r0, r0, r4
+ bl MOD16_021DB450
+ cmp r0, #0
+ beq _021DB37A
+ ldr r0, [r5, #0xc]
+ add r0, r0, r4
+ bl MOD16_021DB338
+_021DB37A:
+ ldr r0, [r5, #0x10]
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, r0
+ blt _021DB366
+_021DB384:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DB358
+
+ thumb_func_start MOD16_021DB388
+MOD16_021DB388: ; 0x021DB388
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5, #0x14]
+ add r4, r1, #0
+ mov r1, #1
+ add r6, r2, #0
+ bl FUN_02018FF4
+ add r7, r0, #0
+ bl FUN_0201901C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ lsl r2, r4, #0x18
+ lsl r3, r6, #0x18
+ ldr r0, [r5, #8]
+ add r1, r7, #0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020190EC
+ add r0, r7, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DB388
+
+ thumb_func_start MOD16_021DB3BC
+MOD16_021DB3BC: ; 0x021DB3BC
+ ldr r3, _021DB3C4 ; =0x020191A5
+ mov r1, #1
+ bx r3
+ nop
+_021DB3C4: .word 0x020191A5
+ thumb_func_end MOD16_021DB3BC
+
+ thumb_func_start MOD16_021DB3C8
+MOD16_021DB3C8: ; 0x021DB3C8
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r3, #0
+ add r6, r1, #0
+ ldr r3, [r5, #0x14]
+ mov r0, #0
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ add r5, r0, #0
+ bne _021DB3E4
+ bl ErrorHandling
+_021DB3E4:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0200A914
+ add r4, r0, #0
+ ldr r0, [sp, #0x24]
+ ldr r3, [sp, #0x20]
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DB428 ; =0x00030201
+ mov r1, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r2, r4, #0
+ bl FUN_0201BDE0
+ mov r0, #2
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_02002E14
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r5, #0
+ bl FUN_0200A8B8
+ add r0, r6, #0
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DB428: .word 0x00030201
+ thumb_func_end MOD16_021DB3C8
+
+ thumb_func_start MOD16_021DB42C
+MOD16_021DB42C: ; 0x021DB42C
+ push {r3, lr}
+ sub sp, #0x10
+ ldr r0, [sp, #0x18]
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DB44C ; =0x00030201
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r1, #0
+ mov r1, #2
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r3, pc}
+ .align 2, 0
+_021DB44C: .word 0x00030201
+ thumb_func_end MOD16_021DB42C
+
+ thumb_func_start MOD16_021DB450
+MOD16_021DB450: ; 0x021DB450
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DB45A
+ mov r0, #1
+ bx lr
+_021DB45A:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DB450
+
+ thumb_func_start MOD16_021DB460
+MOD16_021DB460: ; 0x021DB460
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ mov r6, #0
+ cmp r0, #0
+ ble _021DB48C
+ add r4, r6, #0
+_021DB46E:
+ ldr r0, [r5, #0xc]
+ add r0, r0, r4
+ bl MOD16_021DB450
+ cmp r0, #0
+ bne _021DB482
+ ldr r1, [r5, #0xc]
+ lsl r0, r6, #4
+ add r0, r1, r0
+ pop {r4, r5, r6, pc}
+_021DB482:
+ ldr r0, [r5, #0x10]
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, r0
+ blt _021DB46E
+_021DB48C:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021DB460
+
+ thumb_func_start MOD16_021DB490
+MOD16_021DB490: ; 0x021DB490
+ push {r3, lr}
+ mov r1, #0x14
+ bl FUN_02016998
+ add r3, r0, #0
+ mov r2, #0x14
+ mov r1, #0
+_021DB49E:
+ strb r1, [r3]
+ add r3, r3, #1
+ sub r2, r2, #1
+ bne _021DB49E
+ pop {r3, pc}
+ thumb_func_end MOD16_021DB490
+
+ thumb_func_start MOD16_021DB4A8
+MOD16_021DB4A8: ; 0x021DB4A8
+ ldr r3, _021DB4AC ; =0x02016A19
+ bx r3
+ .align 2, 0
+_021DB4AC: .word 0x02016A19
+ thumb_func_end MOD16_021DB4A8
+
+ thumb_func_start MOD16_021DB4B0
+MOD16_021DB4B0: ; 0x021DB4B0
+ push {r3, r4, r5, r6}
+ add r6, r0, #0
+ mov r5, #0x14
+ mov r4, #0
+_021DB4B8:
+ strb r4, [r6]
+ add r6, r6, #1
+ sub r5, r5, #1
+ bne _021DB4B8
+ str r1, [r0]
+ str r2, [r0, #4]
+ str r3, [r0, #8]
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DB4B0
+
+ thumb_func_start MOD16_021DB4CC
+MOD16_021DB4CC: ; 0x021DB4CC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ cmp r1, #4
+ bhi _021DB526
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DB4E2: ; jump table
+ .short _021DB4EC - _021DB4E2 - 2 ; case 0
+ .short _021DB4F4 - _021DB4E2 - 2 ; case 1
+ .short _021DB4FC - _021DB4E2 - 2 ; case 2
+ .short _021DB50E - _021DB4E2 - 2 ; case 3
+ .short _021DB520 - _021DB4E2 - 2 ; case 4
+_021DB4EC:
+ add r1, r4, #0
+ bl MOD16_021DB68C
+ pop {r3, r4, r5, pc}
+_021DB4F4:
+ add r1, r4, #0
+ bl MOD16_021DB6BC
+ pop {r3, r4, r5, pc}
+_021DB4FC:
+ cmp r4, #0
+ blt _021DB506
+ ldr r0, [r5, #4]
+ cmp r4, r0
+ blt _021DB50A
+_021DB506:
+ bl ErrorHandling
+_021DB50A:
+ str r4, [r5, #0xc]
+ pop {r3, r4, r5, pc}
+_021DB50E:
+ cmp r4, #0
+ blt _021DB518
+ ldr r0, [r5, #8]
+ cmp r4, r0
+ blt _021DB51C
+_021DB518:
+ bl ErrorHandling
+_021DB51C:
+ str r4, [r5, #0x10]
+ pop {r3, r4, r5, pc}
+_021DB520:
+ add r1, r4, #0
+ bl MOD16_021DB6EC
+_021DB526:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DB4CC
+
+ thumb_func_start MOD16_021DB528
+MOD16_021DB528: ; 0x021DB528
+ ldr r2, [r0, #0x10]
+ ldr r1, [r0, #4]
+ add r3, r2, #0
+ mul r3, r1
+ ldr r1, [r0, #0xc]
+ add r2, r3, r1
+ ldr r1, [r0]
+ mov r0, #0x1c
+ mul r0, r2
+ add r0, r1, r0
+ ldr r0, [r0, #0x18]
+ bx lr
+ thumb_func_end MOD16_021DB528
+
+ thumb_func_start MOD16_021DB540
+MOD16_021DB540: ; 0x021DB540
+ push {r4, r5}
+ ldr r4, [r0, #0x10]
+ ldr r3, [r0, #4]
+ add r5, r4, #0
+ mul r5, r3
+ ldr r3, [r0, #0xc]
+ add r5, r5, r3
+ mov r3, #0x1c
+ add r4, r5, #0
+ mul r4, r3
+ ldr r3, [r0]
+ ldr r3, [r3, r4]
+ str r3, [r1]
+ ldr r0, [r0]
+ add r0, r0, r4
+ ldr r0, [r0, #4]
+ str r0, [r2]
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DB540
+
+ thumb_func_start MOD16_021DB568
+MOD16_021DB568: ; 0x021DB568
+ push {r4, r5}
+ ldr r4, [r0, #0x10]
+ ldr r3, [r0, #4]
+ add r5, r4, #0
+ mul r5, r3
+ ldr r3, [r0, #0xc]
+ add r5, r5, r3
+ mov r3, #0x1c
+ add r4, r5, #0
+ mul r4, r3
+ ldr r3, [r0]
+ add r3, r3, r4
+ ldr r3, [r3, #8]
+ str r3, [r1]
+ ldr r0, [r0]
+ add r0, r0, r4
+ ldr r0, [r0, #0xc]
+ str r0, [r2]
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD16_021DB568
+
+ thumb_func_start MOD16_021DB590
+MOD16_021DB590: ; 0x021DB590
+ str r1, [r0]
+ str r2, [r0, #4]
+ ldr r1, [sp]
+ str r3, [r0, #8]
+ str r1, [r0, #0xc]
+ ldr r1, [sp, #4]
+ str r1, [r0, #0x10]
+ ldr r1, [sp, #8]
+ str r1, [r0, #0x14]
+ ldr r1, [sp, #0xc]
+ str r1, [r0, #0x18]
+ bx lr
+ thumb_func_end MOD16_021DB590
+
+ thumb_func_start MOD16_021DB5A8
+MOD16_021DB5A8: ; 0x021DB5A8
+ push {r3, r4, r5, r6}
+ ldr r4, [sp, #0x10]
+ cmp r0, #0
+ beq _021DB5B4
+ cmp r0, #2
+ bne _021DB5C0
+_021DB5B4:
+ ldr r6, [sp, #0x14]
+ lsr r5, r6, #0x1f
+ add r5, r6, r5
+ asr r5, r5, #1
+ sub r3, r3, r5
+ b _021DB5CA
+_021DB5C0:
+ ldr r6, [sp, #0x14]
+ lsr r5, r6, #0x1f
+ add r5, r6, r5
+ asr r5, r5, #1
+ add r3, r3, r5
+_021DB5CA:
+ cmp r0, #1
+ bhi _021DB5DA
+ ldr r5, [sp, #0x18]
+ lsr r0, r5, #0x1f
+ add r0, r5, r0
+ asr r0, r0, #1
+ sub r4, r4, r0
+ b _021DB5E4
+_021DB5DA:
+ ldr r5, [sp, #0x18]
+ lsr r0, r5, #0x1f
+ add r0, r5, r0
+ asr r0, r0, #1
+ add r4, r4, r0
+_021DB5E4:
+ str r3, [r1]
+ str r4, [r2]
+ pop {r3, r4, r5, r6}
+ bx lr
+ thumb_func_end MOD16_021DB5A8
+
+ thumb_func_start MOD16_021DB5EC
+MOD16_021DB5EC: ; 0x021DB5EC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0
+ add r4, r1, #0
+ mvn r0, r0
+ cmp r4, r0
+ beq _021DB602
+ cmp r4, #1
+ beq _021DB602
+ bl ErrorHandling
+_021DB602:
+ ldr r0, [r5, #0xc]
+ mov r1, #0x1c
+_021DB606:
+ add r0, r0, r4
+ bmi _021DB626
+ ldr r2, [r5, #4]
+ cmp r0, r2
+ bge _021DB626
+ ldr r3, [r5, #0x10]
+ ldr r2, [r5, #4]
+ mul r2, r3
+ add r6, r2, r0
+ add r2, r6, #0
+ ldr r3, [r5]
+ mul r2, r1
+ add r6, r3, r2
+ ldr r2, [r6, #0x10]
+ cmp r2, #2
+ beq _021DB606
+_021DB626:
+ cmp r0, #0
+ blt _021DB638
+ ldr r1, [r5, #4]
+ cmp r0, r1
+ bge _021DB638
+ ldr r1, [r6, #0x10]
+ cmp r1, #0
+ bne _021DB638
+ str r0, [r5, #0xc]
+_021DB638:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DB5EC
+
+ thumb_func_start MOD16_021DB63C
+MOD16_021DB63C: ; 0x021DB63C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0
+ add r4, r1, #0
+ mvn r0, r0
+ cmp r4, r0
+ beq _021DB652
+ cmp r4, #1
+ beq _021DB652
+ bl ErrorHandling
+_021DB652:
+ ldr r0, [r5, #0x10]
+ mov r1, #0x1c
+_021DB656:
+ add r0, r0, r4
+ bmi _021DB678
+ ldr r2, [r5, #8]
+ cmp r0, r2
+ bge _021DB678
+ ldr r2, [r5, #4]
+ add r3, r0, #0
+ mul r3, r2
+ ldr r2, [r5, #0xc]
+ add r6, r3, r2
+ add r2, r6, #0
+ ldr r3, [r5]
+ mul r2, r1
+ add r6, r3, r2
+ ldr r2, [r6, #0x14]
+ cmp r2, #2
+ beq _021DB656
+_021DB678:
+ cmp r0, #0
+ blt _021DB68A
+ ldr r1, [r5, #8]
+ cmp r0, r1
+ bge _021DB68A
+ ldr r1, [r6, #0x10]
+ cmp r1, #0
+ bne _021DB68A
+ str r0, [r5, #0x10]
+_021DB68A:
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021DB63C
+
+ thumb_func_start MOD16_021DB68C
+MOD16_021DB68C: ; 0x021DB68C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ cmp r1, #0
+ bge _021DB698
+ neg r5, r1
+ b _021DB69A
+_021DB698:
+ add r5, r1, #0
+_021DB69A:
+ add r0, r1, #0
+ add r1, r5, #0
+ bl _s32_div_f
+ add r7, r0, #0
+ mov r4, #0
+ cmp r5, #0
+ ble _021DB6B8
+_021DB6AA:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD16_021DB5EC
+ add r4, r4, #1
+ cmp r4, r5
+ blt _021DB6AA
+_021DB6B8:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DB68C
+
+ thumb_func_start MOD16_021DB6BC
+MOD16_021DB6BC: ; 0x021DB6BC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ cmp r1, #0
+ bge _021DB6C8
+ neg r5, r1
+ b _021DB6CA
+_021DB6C8:
+ add r5, r1, #0
+_021DB6CA:
+ add r0, r1, #0
+ add r1, r5, #0
+ bl _s32_div_f
+ add r7, r0, #0
+ mov r4, #0
+ cmp r5, #0
+ ble _021DB6E8
+_021DB6DA:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD16_021DB63C
+ add r4, r4, #1
+ cmp r4, r5
+ blt _021DB6DA
+_021DB6E8:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DB6BC
+
+ thumb_func_start MOD16_021DB6EC
+MOD16_021DB6EC: ; 0x021DB6EC
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ ldr r2, [r4, #4]
+ ldr r0, [r4, #8]
+ add r3, r2, #0
+ mul r3, r0
+ mov r5, #0
+ cmp r3, #0
+ ble _021DB724
+ ldr r6, [r4]
+_021DB700:
+ ldr r0, [r6, #0x18]
+ cmp r1, r0
+ bne _021DB71C
+ add r0, r5, #0
+ add r1, r2, #0
+ bl _s32_div_f
+ str r1, [r4, #0xc]
+ ldr r1, [r4, #4]
+ add r0, r5, #0
+ bl _s32_div_f
+ str r0, [r4, #0x10]
+ pop {r4, r5, r6, pc}
+_021DB71C:
+ add r5, r5, #1
+ add r6, #0x1c
+ cmp r5, r3
+ blt _021DB700
+_021DB724:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DB6EC
+
+ thumb_func_start MOD16_021DB728
+MOD16_021DB728: ; 0x021DB728
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x5c]
+ str r2, [sp, #0x18]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x5c]
+ mov r0, #0
+ str r3, [sp, #0x1c]
+ add r1, sp, #0x48
+ str r0, [sp, #0x38]
+ ldrb r0, [r1, #0x1c]
+ str r0, [sp, #0x20]
+ cmp r0, #0
+ ble _021DB7BC
+ ldr r0, [sp, #0x38]
+ ldrb r6, [r1, #0x10]
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x30]
+ ldrh r0, [r1, #0x24]
+ str r0, [sp, #0x2c]
+ ldrh r0, [r1, #0x20]
+ str r0, [sp, #0x28]
+ ldrb r0, [r1, #0x18]
+ str r0, [sp, #0x24]
+_021DB75A:
+ ldr r0, [sp, #0x24]
+ mov r7, #0
+ cmp r0, #0
+ ble _021DB7A2
+ ldr r1, [sp, #0x5c]
+ ldr r0, [sp, #0x30]
+ add r4, r7, #0
+ add r5, r1, r0
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x34]
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x3c]
+_021DB776:
+ str r6, [sp]
+ ldrb r0, [r5]
+ ldr r1, [sp, #0x14]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x28]
+ add r0, r0, r4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x3c]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ bl MOD16_021DB7F4
+ ldr r0, [sp, #0x24]
+ add r7, r7, #1
+ add r4, r4, r6
+ add r5, r5, #1
+ cmp r7, r0
+ blt _021DB776
+_021DB7A2:
+ ldr r0, [sp, #0x34]
+ ldr r1, [sp, #0x30]
+ add r0, r0, r6
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x20]
+ add r0, r1, r0
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x38]
+ add r1, r0, #1
+ ldr r0, [sp, #0x20]
+ str r1, [sp, #0x38]
+ cmp r1, r0
+ blt _021DB75A
+_021DB7BC:
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DB728
+
+ thumb_func_start MOD16_021DB7C0
+MOD16_021DB7C0: ; 0x021DB7C0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r2, #0
+ str r0, [sp, #4]
+ add r5, r1, #0
+ mov r6, #0
+ cmp r7, #0
+ ble _021DB7F0
+_021DB7D0:
+ mov r4, #0
+ cmp r5, #0
+ ble _021DB7EA
+_021DB7D6:
+ ldr r0, [sp, #4]
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r5, #0
+ str r7, [sp]
+ bl MOD16_021DB84C
+ add r4, r4, #1
+ cmp r4, r5
+ blt _021DB7D6
+_021DB7EA:
+ add r6, r6, #1
+ cmp r6, r7
+ blt _021DB7D0
+_021DB7F0:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DB7C0
+
+ thumb_func_start MOD16_021DB7F4
+MOD16_021DB7F4: ; 0x021DB7F4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r1, [sp, #0x1c]
+ ldr r1, [sp, #0x3c]
+ str r0, [sp, #0x18]
+ add r5, r2, #0
+ add r6, r3, #0
+ cmp r1, #0
+ beq _021DB848
+ ldr r0, [sp, #0x38]
+ add r4, r1, #0
+ mul r4, r0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl _s32_div_f
+ add r7, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl _s32_div_f
+ str r5, [sp]
+ add r4, r1, #0
+ str r6, [sp, #4]
+ add r0, sp, #0x28
+ ldrb r1, [r0, #0x18]
+ lsl r2, r4, #0x10
+ lsl r3, r7, #0x10
+ str r1, [sp, #8]
+ ldrb r0, [r0, #0x1c]
+ ldr r1, [sp, #0x1c]
+ lsr r2, r2, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x38]
+ lsr r3, r3, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ bl FUN_02019658
+_021DB848:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DB7F4
+
+ thumb_func_start MOD16_021DB84C
+MOD16_021DB84C: ; 0x021DB84C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r2, #0
+ add r6, r1, #0
+ add r1, r7, #0
+ mul r1, r3
+ add r4, r0, #0
+ add r5, r6, r1
+ ldrb r1, [r4, r5]
+ cmp r1, #0
+ bne _021DB87A
+ ldr r1, [sp, #0x20]
+ str r3, [sp]
+ str r1, [sp, #4]
+ add r1, sp, #8
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD16_021DB8B0
+ ldr r0, [sp, #8]
+ bl MOD16_021DB9D0
+ strb r0, [r4, r5]
+_021DB87A:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DB84C
+
+ thumb_func_start MOD16_021DB880
+MOD16_021DB880: ; 0x021DB880
+ push {r3, r4}
+ cmp r1, #0
+ blt _021DB88A
+ cmp r1, r3
+ blt _021DB892
+_021DB88A:
+ mov r0, #0
+ mvn r0, r0
+ pop {r3, r4}
+ bx lr
+_021DB892:
+ cmp r2, #0
+ blt _021DB89C
+ ldr r4, [sp, #8]
+ cmp r2, r4
+ blt _021DB8A4
+_021DB89C:
+ mov r0, #0
+ mvn r0, r0
+ pop {r3, r4}
+ bx lr
+_021DB8A4:
+ mul r3, r2
+ add r1, r1, r3
+ ldrb r0, [r0, r1]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DB880
+
+ thumb_func_start MOD16_021DB8B0
+MOD16_021DB8B0: ; 0x021DB8B0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r1, #0
+ ldr r1, [sp, #0x20]
+ add r6, r2, #0
+ str r1, [sp, #0x20]
+ add r7, r3, #0
+ mov r1, #0
+ str r1, [r5]
+ ldr r4, [sp, #0x24]
+ ldr r3, [sp, #0x20]
+ add r1, r6, #0
+ sub r2, r7, #1
+ str r0, [sp, #4]
+ str r4, [sp]
+ bl MOD16_021DB880
+ cmp r0, #1
+ bne _021DB8DE
+ ldr r1, [r5]
+ mov r0, #1
+ orr r0, r1
+ str r0, [r5]
+_021DB8DE:
+ ldr r0, [sp, #4]
+ ldr r3, [sp, #0x20]
+ add r1, r6, #0
+ add r2, r7, #1
+ str r4, [sp]
+ bl MOD16_021DB880
+ cmp r0, #1
+ bne _021DB8F8
+ ldr r1, [r5]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r5]
+_021DB8F8:
+ ldr r0, [sp, #4]
+ ldr r3, [sp, #0x20]
+ sub r1, r6, #1
+ add r2, r7, #0
+ str r4, [sp]
+ bl MOD16_021DB880
+ cmp r0, #1
+ bne _021DB912
+ ldr r1, [r5]
+ mov r0, #4
+ orr r0, r1
+ str r0, [r5]
+_021DB912:
+ ldr r0, [sp, #4]
+ ldr r3, [sp, #0x20]
+ add r1, r6, #1
+ add r2, r7, #0
+ str r4, [sp]
+ bl MOD16_021DB880
+ cmp r0, #1
+ bne _021DB92C
+ ldr r1, [r5]
+ mov r0, #8
+ orr r0, r1
+ str r0, [r5]
+_021DB92C:
+ ldr r0, [r5]
+ mov r1, #1
+ tst r1, r0
+ bne _021DB954
+ mov r1, #4
+ tst r0, r1
+ bne _021DB954
+ ldr r0, [sp, #4]
+ ldr r3, [sp, #0x20]
+ sub r1, r6, #1
+ sub r2, r7, #1
+ str r4, [sp]
+ bl MOD16_021DB880
+ cmp r0, #1
+ bne _021DB954
+ ldr r1, [r5]
+ mov r0, #0x10
+ orr r0, r1
+ str r0, [r5]
+_021DB954:
+ ldr r0, [r5]
+ mov r1, #1
+ tst r1, r0
+ bne _021DB97C
+ mov r1, #8
+ tst r0, r1
+ bne _021DB97C
+ ldr r0, [sp, #4]
+ ldr r3, [sp, #0x20]
+ add r1, r6, #1
+ sub r2, r7, #1
+ str r4, [sp]
+ bl MOD16_021DB880
+ cmp r0, #1
+ bne _021DB97C
+ ldr r1, [r5]
+ mov r0, #0x20
+ orr r0, r1
+ str r0, [r5]
+_021DB97C:
+ ldr r0, [r5]
+ mov r1, #2
+ tst r1, r0
+ bne _021DB9A4
+ mov r1, #4
+ tst r0, r1
+ bne _021DB9A4
+ ldr r0, [sp, #4]
+ ldr r3, [sp, #0x20]
+ sub r1, r6, #1
+ add r2, r7, #1
+ str r4, [sp]
+ bl MOD16_021DB880
+ cmp r0, #1
+ bne _021DB9A4
+ ldr r1, [r5]
+ mov r0, #0x40
+ orr r0, r1
+ str r0, [r5]
+_021DB9A4:
+ ldr r0, [r5]
+ mov r1, #2
+ tst r1, r0
+ bne _021DB9CC
+ mov r1, #8
+ tst r0, r1
+ bne _021DB9CC
+ ldr r0, [sp, #4]
+ ldr r3, [sp, #0x20]
+ add r1, r6, #1
+ add r2, r7, #1
+ str r4, [sp]
+ bl MOD16_021DB880
+ cmp r0, #1
+ bne _021DB9CC
+ ldr r1, [r5]
+ mov r0, #0x80
+ orr r0, r1
+ str r0, [r5]
+_021DB9CC:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DB8B0
+
+ thumb_func_start MOD16_021DB9D0
+MOD16_021DB9D0: ; 0x021DB9D0
+ push {r4, lr}
+ cmp r0, #0x84
+ bgt _021DBAA6
+ blt _021DB9DA
+ b _021DBB98
+_021DB9DA:
+ cmp r0, #0x58
+ bgt _021DBA8C
+ blt _021DB9E2
+ b _021DBB70
+_021DB9E2:
+ cmp r0, #0x48
+ bgt _021DBA7E
+ blt _021DB9EA
+ b _021DBBA0
+_021DB9EA:
+ cmp r0, #0x41
+ bhi _021DBA84
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DB9FA: ; jump table
+ .short _021DBAE8 - _021DB9FA - 2 ; case 0
+ .short _021DBAEC - _021DB9FA - 2 ; case 1
+ .short _021DBAF0 - _021DB9FA - 2 ; case 2
+ .short _021DBAFC - _021DB9FA - 2 ; case 3
+ .short _021DBAF4 - _021DB9FA - 2 ; case 4
+ .short _021DBB00 - _021DB9FA - 2 ; case 5
+ .short _021DBB08 - _021DB9FA - 2 ; case 6
+ .short _021DBB14 - _021DB9FA - 2 ; case 7
+ .short _021DBAF8 - _021DB9FA - 2 ; case 8
+ .short _021DBB04 - _021DB9FA - 2 ; case 9
+ .short _021DBB0C - _021DB9FA - 2 ; case 10
+ .short _021DBB18 - _021DB9FA - 2 ; case 11
+ .short _021DBB10 - _021DB9FA - 2 ; case 12
+ .short _021DBB1C - _021DB9FA - 2 ; case 13
+ .short _021DBB20 - _021DB9FA - 2 ; case 14
+ .short _021DBB24 - _021DB9FA - 2 ; case 15
+ .short _021DBB28 - _021DB9FA - 2 ; case 16
+ .short _021DBBA4 - _021DB9FA - 2 ; case 17
+ .short _021DBB8C - _021DB9FA - 2 ; case 18
+ .short _021DBBA4 - _021DB9FA - 2 ; case 19
+ .short _021DBBA4 - _021DB9FA - 2 ; case 20
+ .short _021DBBA4 - _021DB9FA - 2 ; case 21
+ .short _021DBBA4 - _021DB9FA - 2 ; case 22
+ .short _021DBBA4 - _021DB9FA - 2 ; case 23
+ .short _021DBB9C - _021DB9FA - 2 ; case 24
+ .short _021DBBA4 - _021DB9FA - 2 ; case 25
+ .short _021DBB80 - _021DB9FA - 2 ; case 26
+ .short _021DBBA4 - _021DB9FA - 2 ; case 27
+ .short _021DBBA4 - _021DB9FA - 2 ; case 28
+ .short _021DBBA4 - _021DB9FA - 2 ; case 29
+ .short _021DBBA4 - _021DB9FA - 2 ; case 30
+ .short _021DBBA4 - _021DB9FA - 2 ; case 31
+ .short _021DBB2C - _021DB9FA - 2 ; case 32
+ .short _021DBBA4 - _021DB9FA - 2 ; case 33
+ .short _021DBB90 - _021DB9FA - 2 ; case 34
+ .short _021DBBA4 - _021DB9FA - 2 ; case 35
+ .short _021DBB94 - _021DB9FA - 2 ; case 36
+ .short _021DBBA4 - _021DB9FA - 2 ; case 37
+ .short _021DBB7C - _021DB9FA - 2 ; case 38
+ .short _021DBBA4 - _021DB9FA - 2 ; case 39
+ .short _021DBBA4 - _021DB9FA - 2 ; case 40
+ .short _021DBBA4 - _021DB9FA - 2 ; case 41
+ .short _021DBBA4 - _021DB9FA - 2 ; case 42
+ .short _021DBBA4 - _021DB9FA - 2 ; case 43
+ .short _021DBBA4 - _021DB9FA - 2 ; case 44
+ .short _021DBBA4 - _021DB9FA - 2 ; case 45
+ .short _021DBBA4 - _021DB9FA - 2 ; case 46
+ .short _021DBBA4 - _021DB9FA - 2 ; case 47
+ .short _021DBB38 - _021DB9FA - 2 ; case 48
+ .short _021DBBA4 - _021DB9FA - 2 ; case 49
+ .short _021DBB68 - _021DB9FA - 2 ; case 50
+ .short _021DBBA4 - _021DB9FA - 2 ; case 51
+ .short _021DBBA4 - _021DB9FA - 2 ; case 52
+ .short _021DBBA4 - _021DB9FA - 2 ; case 53
+ .short _021DBBA4 - _021DB9FA - 2 ; case 54
+ .short _021DBBA4 - _021DB9FA - 2 ; case 55
+ .short _021DBBA4 - _021DB9FA - 2 ; case 56
+ .short _021DBBA4 - _021DB9FA - 2 ; case 57
+ .short _021DBBA4 - _021DB9FA - 2 ; case 58
+ .short _021DBBA4 - _021DB9FA - 2 ; case 59
+ .short _021DBBA4 - _021DB9FA - 2 ; case 60
+ .short _021DBBA4 - _021DB9FA - 2 ; case 61
+ .short _021DBBA4 - _021DB9FA - 2 ; case 62
+ .short _021DBBA4 - _021DB9FA - 2 ; case 63
+ .short _021DBB30 - _021DB9FA - 2 ; case 64
+ .short _021DBB84 - _021DB9FA - 2 ; case 65
+_021DBA7E:
+ cmp r0, #0x49
+ bgt _021DBA86
+ beq _021DBB78
+_021DBA84:
+ b _021DBBA4
+_021DBA86:
+ cmp r0, #0x50
+ beq _021DBB3C
+ b _021DBBA4
+_021DBA8C:
+ cmp r0, #0x70
+ bgt _021DBA98
+ bge _021DBB50
+ cmp r0, #0x60
+ beq _021DBB44
+ b _021DBBA4
+_021DBA98:
+ cmp r0, #0x80
+ bgt _021DBAA0
+ beq _021DBB34
+ b _021DBBA4
+_021DBAA0:
+ cmp r0, #0x81
+ beq _021DBB88
+ b _021DBBA4
+_021DBAA6:
+ cmp r0, #0xb0
+ bgt _021DBAC6
+ bge _021DBB54
+ cmp r0, #0x90
+ bgt _021DBAB8
+ bge _021DBB40
+ cmp r0, #0x85
+ beq _021DBB74
+ b _021DBBA4
+_021DBAB8:
+ cmp r0, #0xa0
+ bgt _021DBAC0
+ beq _021DBB48
+ b _021DBBA4
+_021DBAC0:
+ cmp r0, #0xa4
+ beq _021DBB6C
+ b _021DBBA4
+_021DBAC6:
+ cmp r0, #0xd0
+ bgt _021DBADA
+ bge _021DBB58
+ cmp r0, #0xc0
+ bgt _021DBAD4
+ beq _021DBB4C
+ b _021DBBA4
+_021DBAD4:
+ cmp r0, #0xc1
+ beq _021DBB64
+ b _021DBBA4
+_021DBADA:
+ cmp r0, #0xe0
+ bgt _021DBAE2
+ beq _021DBB5C
+ b _021DBBA4
+_021DBAE2:
+ cmp r0, #0xf0
+ beq _021DBB60
+ b _021DBBA4
+_021DBAE8:
+ mov r4, #0
+ b _021DBBA8
+_021DBAEC:
+ mov r4, #2
+ b _021DBBA8
+_021DBAF0:
+ mov r4, #3
+ b _021DBBA8
+_021DBAF4:
+ mov r4, #4
+ b _021DBBA8
+_021DBAF8:
+ mov r4, #5
+ b _021DBBA8
+_021DBAFC:
+ mov r4, #6
+ b _021DBBA8
+_021DBB00:
+ mov r4, #7
+ b _021DBBA8
+_021DBB04:
+ mov r4, #8
+ b _021DBBA8
+_021DBB08:
+ mov r4, #9
+ b _021DBBA8
+_021DBB0C:
+ mov r4, #0xa
+ b _021DBBA8
+_021DBB10:
+ mov r4, #0xb
+ b _021DBBA8
+_021DBB14:
+ mov r4, #0xc
+ b _021DBBA8
+_021DBB18:
+ mov r4, #0xd
+ b _021DBBA8
+_021DBB1C:
+ mov r4, #0xe
+ b _021DBBA8
+_021DBB20:
+ mov r4, #0xf
+ b _021DBBA8
+_021DBB24:
+ mov r4, #0x10
+ b _021DBBA8
+_021DBB28:
+ mov r4, #0x11
+ b _021DBBA8
+_021DBB2C:
+ mov r4, #0x12
+ b _021DBBA8
+_021DBB30:
+ mov r4, #0x13
+ b _021DBBA8
+_021DBB34:
+ mov r4, #0x14
+ b _021DBBA8
+_021DBB38:
+ mov r4, #0x15
+ b _021DBBA8
+_021DBB3C:
+ mov r4, #0x16
+ b _021DBBA8
+_021DBB40:
+ mov r4, #0x17
+ b _021DBBA8
+_021DBB44:
+ mov r4, #0x18
+ b _021DBBA8
+_021DBB48:
+ mov r4, #0x19
+ b _021DBBA8
+_021DBB4C:
+ mov r4, #0x1a
+ b _021DBBA8
+_021DBB50:
+ mov r4, #0x1b
+ b _021DBBA8
+_021DBB54:
+ mov r4, #0x1c
+ b _021DBBA8
+_021DBB58:
+ mov r4, #0x1d
+ b _021DBBA8
+_021DBB5C:
+ mov r4, #0x1e
+ b _021DBBA8
+_021DBB60:
+ mov r4, #0x1f
+ b _021DBBA8
+_021DBB64:
+ mov r4, #0x20
+ b _021DBBA8
+_021DBB68:
+ mov r4, #0x21
+ b _021DBBA8
+_021DBB6C:
+ mov r4, #0x22
+ b _021DBBA8
+_021DBB70:
+ mov r4, #0x23
+ b _021DBBA8
+_021DBB74:
+ mov r4, #0x24
+ b _021DBBA8
+_021DBB78:
+ mov r4, #0x25
+ b _021DBBA8
+_021DBB7C:
+ mov r4, #0x26
+ b _021DBBA8
+_021DBB80:
+ mov r4, #0x27
+ b _021DBBA8
+_021DBB84:
+ mov r4, #0x28
+ b _021DBBA8
+_021DBB88:
+ mov r4, #0x29
+ b _021DBBA8
+_021DBB8C:
+ mov r4, #0x2a
+ b _021DBBA8
+_021DBB90:
+ mov r4, #0x2b
+ b _021DBBA8
+_021DBB94:
+ mov r4, #0x2c
+ b _021DBBA8
+_021DBB98:
+ mov r4, #0x2d
+ b _021DBBA8
+_021DBB9C:
+ mov r4, #0x2e
+ b _021DBBA8
+_021DBBA0:
+ mov r4, #0x2f
+ b _021DBBA8
+_021DBBA4:
+ bl ErrorHandling
+_021DBBA8:
+ add r0, r4, #0
+ pop {r4, pc}
+ thumb_func_end MOD16_021DB9D0
+
+ thumb_func_start MOD16_021DBBAC
+MOD16_021DBBAC: ; 0x021DBBAC
+ ldr r3, _021DBBB0 ; =0x02021A21
+ bx r3
+ .align 2, 0
+_021DBBB0: .word 0x02021A21
+ thumb_func_end MOD16_021DBBAC
+
+ thumb_func_start MOD16_021DBBB4
+MOD16_021DBBB4: ; 0x021DBBB4
+ add r1, r0, #1
+ ldr r0, _021DBBC0 ; =0x021FF568
+ ldr r3, _021DBBC4 ; =0x02087A39
+ ldrb r0, [r0, r1]
+ bx r3
+ nop
+_021DBBC0: .word 0x021FF568
+_021DBBC4: .word 0x02087A39
+ thumb_func_end MOD16_021DBBB4
+
+ thumb_func_start MOD16_021DBBC8
+MOD16_021DBBC8: ; 0x021DBBC8
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r2, #0
+ add r2, sp, #4
+ str r2, [sp]
+ add r2, sp, #0xc
+ add r3, sp, #8
+ add r5, r0, #0
+ bl MOD16_021DBCE0
+ ldr r2, [sp, #4]
+ cmp r2, #6
+ bne _021DBBEE
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0200AA50
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_021DBBEE:
+ ldr r1, [sp, #0xc]
+ mov r0, #6
+ mul r0, r1
+ add r1, r2, r0
+ ldr r0, _021DBC04 ; =0x0000026E
+ add r2, r4, #0
+ str r1, [sp, #4]
+ bl MOD16_021DBCA0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DBC04: .word 0x0000026E
+ thumb_func_end MOD16_021DBBC8
+
+ thumb_func_start MOD16_021DBC08
+MOD16_021DBC08: ; 0x021DBC08
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r2, #0
+ add r2, sp, #4
+ str r2, [sp]
+ add r2, sp, #0xc
+ add r3, sp, #8
+ add r5, r0, #0
+ bl MOD16_021DBCE0
+ ldr r2, [sp, #4]
+ cmp r2, #6
+ bne _021DBC28
+ str r5, [sp, #4]
+ ldr r0, _021DBC40 ; =0x0000026D
+ b _021DBC34
+_021DBC28:
+ ldr r1, [sp, #0xc]
+ mov r0, #6
+ mul r0, r1
+ add r0, r2, r0
+ str r0, [sp, #4]
+ ldr r0, _021DBC44 ; =0x0000026F
+_021DBC34:
+ ldr r1, [sp, #4]
+ add r2, r4, #0
+ bl MOD16_021DBCA0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DBC40: .word 0x0000026D
+_021DBC44: .word 0x0000026F
+ thumb_func_end MOD16_021DBC08
+
+ thumb_func_start MOD16_021DBC48
+MOD16_021DBC48: ; 0x021DBC48
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r2, #0
+ add r2, sp, #4
+ add r6, r3, #0
+ str r2, [sp]
+ add r2, sp, #0xc
+ add r3, sp, #8
+ add r5, r0, #0
+ bl MOD16_021DBCE0
+ ldr r0, [sp, #4]
+ cmp r0, #6
+ bne _021DBC74
+ cmp r4, #1
+ blt _021DBC6C
+ bl ErrorHandling
+_021DBC6C:
+ add r0, r5, r4
+ str r0, [sp, #4]
+ ldr r0, _021DBC98 ; =0x00000267
+ b _021DBC8C
+_021DBC74:
+ cmp r4, #1
+ blt _021DBC7C
+ bl ErrorHandling
+_021DBC7C:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #0xc]
+ add r2, r0, r4
+ mov r0, #6
+ mul r0, r1
+ add r0, r2, r0
+ str r0, [sp, #4]
+ ldr r0, _021DBC9C ; =0x00000269
+_021DBC8C:
+ ldr r1, [sp, #4]
+ add r2, r6, #0
+ bl MOD16_021DBCA0
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DBC98: .word 0x00000267
+_021DBC9C: .word 0x00000269
+ thumb_func_end MOD16_021DBC48
+
+ thumb_func_start MOD16_021DBCA0
+MOD16_021DBCA0: ; 0x021DBCA0
+ push {r4, r5, r6, lr}
+ add r3, r0, #0
+ add r5, r2, #0
+ add r6, r1, #0
+ add r2, r3, #0
+ mov r0, #1
+ mov r1, #0x1a
+ add r3, r5, #0
+ bl FUN_0200A86C
+ add r4, r0, #0
+ beq _021DBCDA
+ mov r0, #1
+ lsl r0, r0, #8
+ add r1, r5, #0
+ bl FUN_020219F4
+ add r5, r0, #0
+ beq _021DBCD0
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ bl FUN_0200A8E0
+_021DBCD0:
+ add r0, r4, #0
+ bl FUN_0200A8B8
+ add r0, r5, #0
+ pop {r4, r5, r6, pc}
+_021DBCDA:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DBCA0
+
+ thumb_func_start MOD16_021DBCE0
+MOD16_021DBCE0: ; 0x021DBCE0
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r0, r1, #0
+ add r4, r2, #0
+ add r5, r3, #0
+ ldr r6, [sp, #0x18]
+ bl FUN_02087A1C
+ str r0, [r5]
+ cmp r0, #6
+ blt _021DBCFA
+ bl ErrorHandling
+_021DBCFA:
+ add r0, r7, #0
+ bl FUN_02087A50
+ str r0, [r4]
+ ldr r5, [r5]
+ cmp r5, #6
+ blt _021DBD0C
+ bl ErrorHandling
+_021DBD0C:
+ cmp r5, #1
+ bne _021DBD12
+ mov r5, #6
+_021DBD12:
+ str r5, [r6]
+ ldr r0, [r4]
+ cmp r0, #0xe
+ bne _021DBD22
+ cmp r5, #6
+ beq _021DBD22
+ mov r0, #0
+ b _021DBD24
+_021DBD22:
+ mov r0, #1
+_021DBD24:
+ cmp r0, #0
+ bne _021DBD2C
+ bl ErrorHandling
+_021DBD2C:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DBCE0
+
+ thumb_func_start MOD16_021DBD30
+MOD16_021DBD30: ; 0x021DBD30
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ cmp r2, #9
+ bhi _021DBD82
+ add r0, r2, r2
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DBD46: ; jump table
+ .short _021DBD5A - _021DBD46 - 2 ; case 0
+ .short _021DBD5E - _021DBD46 - 2 ; case 1
+ .short _021DBD62 - _021DBD46 - 2 ; case 2
+ .short _021DBD66 - _021DBD46 - 2 ; case 3
+ .short _021DBD6A - _021DBD46 - 2 ; case 4
+ .short _021DBD70 - _021DBD46 - 2 ; case 5
+ .short _021DBD74 - _021DBD46 - 2 ; case 6
+ .short _021DBD78 - _021DBD46 - 2 ; case 7
+ .short _021DBD7C - _021DBD46 - 2 ; case 8
+ .short _021DBD80 - _021DBD46 - 2 ; case 9
+_021DBD5A:
+ mov r5, #4
+ b _021DBD82
+_021DBD5E:
+ ldr r5, _021DBDA0 ; =0x000001F3
+ b _021DBD82
+_021DBD62:
+ ldr r5, _021DBDA4 ; =0x000003E2
+ b _021DBD82
+_021DBD66:
+ ldr r5, _021DBDA8 ; =0x000005D1
+ b _021DBD82
+_021DBD6A:
+ mov r5, #0x1f
+ lsl r5, r5, #6
+ b _021DBD82
+_021DBD70:
+ ldr r5, _021DBDAC ; =0x000009AF
+ b _021DBD82
+_021DBD74:
+ ldr r5, _021DBDB0 ; =0x00000B9E
+ b _021DBD82
+_021DBD78:
+ ldr r5, _021DBDB4 ; =0x00000D8D
+ b _021DBD82
+_021DBD7C:
+ ldr r5, _021DBDB8 ; =0x00000F7C
+ b _021DBD82
+_021DBD80:
+ ldr r5, _021DBDBC ; =0x0000116B
+_021DBD82:
+ mov r2, #0
+ str r2, [sp]
+ add r0, sp, #8
+ str r0, [sp, #4]
+ mov r0, #0x8b
+ add r1, r5, r1
+ bl FUN_02006D18
+ str r0, [r4]
+ ldr r0, [sp, #8]
+ lsr r0, r0, #2
+ str r0, [r4, #4]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021DBDA0: .word 0x000001F3
+_021DBDA4: .word 0x000003E2
+_021DBDA8: .word 0x000005D1
+_021DBDAC: .word 0x000009AF
+_021DBDB0: .word 0x00000B9E
+_021DBDB4: .word 0x00000D8D
+_021DBDB8: .word 0x00000F7C
+_021DBDBC: .word 0x0000116B
+ thumb_func_end MOD16_021DBD30
+
+ thumb_func_start MOD16_021DBDC0
+MOD16_021DBDC0: ; 0x021DBDC0
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DBDCA
+ bl ErrorHandling
+_021DBDCA:
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _021DBDD4
+ bl ErrorHandling
+_021DBDD4:
+ ldr r0, [r4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4]
+ str r0, [r4, #4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DBDC0
+
+ thumb_func_start MOD16_021DBDE4
+MOD16_021DBDE4: ; 0x021DBDE4
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ add r0, sp, #8
+ str r0, [sp, #4]
+ mov r0, #0x8b
+ add r2, r1, #0
+ bl FUN_02006D18
+ cmp r4, #0
+ beq _021DBE06
+ ldr r1, [sp, #8]
+ lsr r1, r1, #2
+ str r1, [r4]
+_021DBE06:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DBDE4
+
+ thumb_func_start MOD16_021DBE0C
+MOD16_021DBE0C: ; 0x021DBE0C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r2, #0
+ add r3, r0, #0
+ add r4, r1, #0
+ str r2, [sp]
+ add r0, sp, #8
+ str r0, [sp, #4]
+ mov r0, #0x8b
+ mov r1, #2
+ bl FUN_02006D18
+ add r5, r0, #0
+ cmp r4, #0
+ beq _021DBE34
+ ldr r0, [sp, #8]
+ mov r1, #0x24
+ bl _u32_div_f
+ str r0, [r4]
+_021DBE34:
+ add r0, r5, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DBE0C
+
+ thumb_func_start MOD16_021DBE3C
+MOD16_021DBE3C: ; 0x021DBE3C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r1, [sp, #4]
+ add r4, r3, #0
+ str r0, [sp]
+ ldrb r1, [r4, #1]
+ ldrb r0, [r4, #3]
+ add r0, r1, r0
+ cmp r0, r2
+ blt _021DBE54
+ bl ErrorHandling
+_021DBE54:
+ ldrb r1, [r4]
+ ldrb r0, [r4, #2]
+ add r1, r1, r0
+ ldr r0, [sp, #4]
+ cmp r1, r0
+ blt _021DBE64
+ bl ErrorHandling
+_021DBE64:
+ ldrb r7, [r4, #1]
+ ldrb r0, [r4, #3]
+ add r0, r7, r0
+ cmp r7, r0
+ bge _021DBEBE
+ ldr r0, [sp, #4]
+ mul r0, r7
+ mov ip, r0
+_021DBE74:
+ ldrb r5, [r4]
+ ldrb r3, [r4, #2]
+ add r1, r5, #0
+ add r0, r5, r3
+ cmp r5, r0
+ bge _021DBEAA
+ ldr r2, [sp]
+ mov r0, ip
+ add r0, r2, r0
+ add r2, r0, r5
+_021DBE88:
+ sub r6, r1, r5
+ ldrb r5, [r4, #1]
+ ldrb r0, [r2]
+ add r1, r1, #1
+ sub r5, r7, r5
+ mul r5, r3
+ add r3, r4, r6
+ add r3, r5, r3
+ ldrb r3, [r3, #4]
+ orr r0, r3
+ strb r0, [r2]
+ ldrb r3, [r4, #2]
+ ldrb r5, [r4]
+ add r2, r2, #1
+ add r0, r5, r3
+ cmp r1, r0
+ blt _021DBE88
+_021DBEAA:
+ ldr r0, [sp, #4]
+ mov r1, ip
+ add r0, r1, r0
+ mov ip, r0
+ ldrb r1, [r4, #1]
+ ldrb r0, [r4, #3]
+ add r7, r7, #1
+ add r0, r1, r0
+ cmp r7, r0
+ blt _021DBE74
+_021DBEBE:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DBE3C
+
+ thumb_func_start MOD16_021DBEC4
+MOD16_021DBEC4: ; 0x021DBEC4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x30]
+ str r3, [sp, #4]
+ str r0, [sp, #0x30]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x30]
+ ldr r5, [sp, #0x34]
+ ldr r0, [r0, #4]
+ ldr r4, [sp, #0x38]
+ sub r0, r0, #1
+ cmp r0, #0
+ ble _021DBF4E
+ lsl r0, r1, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x10]
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ ldr r7, [sp, #8]
+ str r0, [sp, #0x14]
+_021DBEF2:
+ ldr r0, [sp, #0x30]
+ ldr r0, [r0]
+ ldr r0, [r0, r7]
+ cmp r0, #0
+ bne _021DBF00
+ bl ErrorHandling
+_021DBF00:
+ mov r1, #0
+ cmp r4, #0
+ bls _021DBF18
+ ldr r0, [sp, #0x30]
+ ldr r0, [r0]
+ ldr r2, [r0, r7]
+_021DBF0C:
+ ldrb r0, [r5, r1]
+ cmp r2, r0
+ beq _021DBF18
+ add r1, r1, #1
+ cmp r1, r4
+ blo _021DBF0C
+_021DBF18:
+ cmp r1, r4
+ blo _021DBF3A
+ ldr r3, [sp, #0x30]
+ mov r6, #0x24
+ ldr r3, [r3]
+ ldr r0, [sp]
+ ldr r3, [r3, r7]
+ ldr r1, [sp, #0x10]
+ mul r6, r3
+ ldr r3, [sp, #4]
+ ldr r2, [sp, #0x14]
+ add r3, r3, r6
+ bl MOD16_021DBE3C
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+_021DBF3A:
+ ldr r0, [sp, #0xc]
+ add r7, r7, #4
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x30]
+ ldr r0, [r0, #4]
+ sub r1, r0, #1
+ ldr r0, [sp, #0xc]
+ cmp r0, r1
+ blt _021DBEF2
+_021DBF4E:
+ ldr r0, [sp, #8]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DBEC4
+
+ thumb_func_start MOD16_021DBF54
+MOD16_021DBF54: ; 0x021DBF54
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ ldr r4, [sp, #0x24]
+ add r5, r0, #0
+ ldrb r6, [r4]
+ mul r3, r6
+ add r1, r1, r3
+ str r1, [sp]
+ ldrb r6, [r4, #1]
+ ldr r3, [sp, #0x20]
+ lsl r1, r1, #0xc
+ mul r3, r6
+ add r2, r2, r3
+ str r1, [sp]
+ str r2, [sp, #4]
+ lsl r1, r2, #0xc
+ str r1, [sp, #4]
+ add r1, sp, #0
+ bl FUN_02020044
+ ldrb r0, [r4, #2]
+ cmp r0, #0
+ beq _021DBF8E
+ ldr r1, [sp, #0x2c]
+ add r0, r5, #0
+ bl FUN_02020130
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_021DBF8E:
+ ldr r1, [sp, #0x28]
+ add r0, r5, #0
+ bl FUN_02020130
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DBF54
+
+ thumb_func_start MOD16_021DBF9C
+MOD16_021DBF9C: ; 0x021DBF9C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ mov ip, r0
+ ldr r0, [sp, #0x40]
+ ldr r7, [sp, #0x50]
+ str r0, [sp, #0x40]
+ ldr r0, [sp, #0x44]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x44]
+ ldr r0, [sp, #0x48]
+ str r2, [sp, #0x14]
+ str r0, [sp, #0x48]
+ ldr r0, [sp, #0x4c]
+ str r3, [sp, #0x18]
+ str r0, [sp, #0x4c]
+ ldr r0, [sp, #0x54]
+ ldr r5, [sp, #0x5c]
+ str r0, [sp, #0x54]
+ ldr r0, [sp, #0x58]
+ ldr r4, [sp, #0x60]
+ str r0, [sp, #0x58]
+ mov r0, #0
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ ldr r0, [r7, #4]
+ sub r0, r0, #1
+ cmp r0, #0
+ ble _021DC05C
+ add r0, r1, #0
+ lsl r1, r0, #2
+ mov r0, ip
+ add r0, r0, r1
+ ldr r6, [sp, #0x20]
+ str r0, [sp, #0x1c]
+_021DBFE0:
+ ldr r0, [r7]
+ ldr r0, [r0, r6]
+ cmp r0, #0
+ bne _021DBFEC
+ bl ErrorHandling
+_021DBFEC:
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ cmp r1, r0
+ blt _021DBFF8
+ bl ErrorHandling
+_021DBFF8:
+ mov r1, #0
+ cmp r4, #0
+ bls _021DC00E
+ ldr r0, [r7]
+ ldr r2, [r0, r6]
+_021DC002:
+ ldrb r0, [r5, r1]
+ cmp r2, r0
+ beq _021DC00E
+ add r1, r1, #1
+ cmp r1, r4
+ blo _021DC002
+_021DC00E:
+ cmp r1, r4
+ blo _021DC04A
+ ldr r0, [sp, #0x48]
+ ldr r2, [sp, #0x40]
+ str r0, [sp]
+ ldr r0, [r7]
+ ldr r3, [sp, #0x44]
+ ldr r0, [r0, r6]
+ lsl r1, r0, #2
+ ldr r0, [sp, #0x4c]
+ add r0, r0, r1
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x54]
+ ldr r1, [sp, #0x18]
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x58]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x1c]
+ ldr r0, [r0]
+ bl MOD16_021DBF54
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #4
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x10]
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+_021DC04A:
+ ldr r0, [sp, #0x24]
+ add r6, r6, #4
+ add r0, r0, #1
+ str r0, [sp, #0x24]
+ ldr r0, [r7, #4]
+ sub r1, r0, #1
+ ldr r0, [sp, #0x24]
+ cmp r0, r1
+ blt _021DBFE0
+_021DC05C:
+ ldr r1, [sp, #0x64]
+ ldr r0, [sp, #0x20]
+ str r0, [r1]
+ ldr r0, [sp, #0x10]
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DBF9C
+
+ thumb_func_start MOD16_021DC068
+MOD16_021DC068: ; 0x021DC068
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r2, [sp]
+ add r0, r2, #0
+ add r4, r1, #0
+ bl MOD16_021DC10C
+ add r6, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021DC15C
+ add r7, r0, #0
+ ldr r0, [sp]
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD16_021DC198
+ str r6, [r5]
+ str r7, [r5, #4]
+ str r0, [r5, #0x20]
+ bl MOD16_021DC230
+ str r0, [r5, #0x24]
+ ldr r0, _021DC0B4 ; =MOD16_021DC234
+ str r0, [r5, #8]
+ ldr r0, _021DC0B8 ; =MOD16_021DC280
+ str r0, [r5, #0xc]
+ ldr r0, _021DC0BC ; =MOD16_021DC2B0
+ str r0, [r5, #0x10]
+ ldr r0, _021DC0C0 ; =MOD16_021DC2C4
+ str r0, [r5, #0x14]
+ ldr r0, _021DC0C4 ; =MOD16_021DC3A8
+ str r0, [r5, #0x18]
+ ldr r0, _021DC0C8 ; =MOD16_021DC424
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DC0B4: .word MOD16_021DC234
+_021DC0B8: .word MOD16_021DC280
+_021DC0BC: .word MOD16_021DC2B0
+_021DC0C0: .word MOD16_021DC2C4
+_021DC0C4: .word MOD16_021DC3A8
+_021DC0C8: .word MOD16_021DC424
+ thumb_func_end MOD16_021DC068
+
+ thumb_func_start MOD16_021DC0CC
+MOD16_021DC0CC: ; 0x021DC0CC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021DC148
+ ldr r0, [r4, #4]
+ bl MOD16_021DC184
+ ldr r0, [r4, #0x20]
+ bl MOD16_021DC1F8
+ pop {r4, pc}
+ thumb_func_end MOD16_021DC0CC
+
+ thumb_func_start MOD16_021DC0E4
+MOD16_021DC0E4: ; 0x021DC0E4
+ ldr r1, [r0, #0x24]
+ cmp r1, #1
+ beq _021DC102
+ ldr r1, [r0, #0x28]
+ cmp r1, #1
+ beq _021DC102
+ ldr r1, [r0, #0x2c]
+ cmp r1, #1
+ beq _021DC102
+ ldr r1, [r0, #0x30]
+ cmp r1, #1
+ beq _021DC102
+ ldr r0, [r0, #0x34]
+ cmp r0, #1
+ bne _021DC106
+_021DC102:
+ mov r0, #0
+ bx lr
+_021DC106:
+ mov r0, #1
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DC0E4
+
+ thumb_func_start MOD16_021DC10C
+MOD16_021DC10C: ; 0x021DC10C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x38
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DC11E
+ bl ErrorHandling
+_021DC11E:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x38
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl MOD16_021D7AD8
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x14]
+ mov r0, #1
+ str r0, [r4, #0x1c]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DC10C
+
+ thumb_func_start MOD16_021DC148
+MOD16_021DC148: ; 0x021DC148
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DC152
+ bl ErrorHandling
+_021DC152:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DC148
+
+ thumb_func_start MOD16_021DC15C
+MOD16_021DC15C: ; 0x021DC15C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DC16E
+ bl ErrorHandling
+_021DC16E:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DC15C
+
+ thumb_func_start MOD16_021DC184
+MOD16_021DC184: ; 0x021DC184
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DC18E
+ bl ErrorHandling
+_021DC18E:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DC184
+
+ thumb_func_start MOD16_021DC198
+MOD16_021DC198: ; 0x021DC198
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ bl MOD16_021DC230
+ add r2, r0, #0
+ mov r1, #0x14
+ add r0, r5, #0
+ mul r1, r2
+ bl FUN_02016998
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ mov r3, #1
+ bl MOD16_021DAC98
+ add r1, r6, #0
+ add r0, r5, #0
+ add r1, #0x14
+ add r2, r4, #0
+ mov r3, #2
+ bl MOD16_021DAD78
+ add r1, r6, #0
+ add r0, r5, #0
+ add r1, #0x28
+ add r2, r4, #0
+ mov r3, #4
+ bl MOD16_021DAD20
+ add r0, r6, #0
+ add r0, #0x3c
+ add r1, r4, #0
+ add r2, r5, #0
+ mov r3, #8
+ bl MOD16_021DAE94
+ add r1, r6, #0
+ add r0, r5, #0
+ add r1, #0x50
+ add r2, r4, #0
+ mov r3, #0x10
+ bl MOD16_021DAE0C
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021DC198
+
+ thumb_func_start MOD16_021DC1F8
+MOD16_021DC1F8: ; 0x021DC1F8
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DC202
+ bl ErrorHandling
+_021DC202:
+ add r0, r4, #0
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x28
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x3c
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x50
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD16_021DC1F8
+
+ thumb_func_start MOD16_021DC230
+MOD16_021DC230: ; 0x021DC230
+ mov r0, #5
+ bx lr
+ thumb_func_end MOD16_021DC230
+
+ thumb_func_start MOD16_021DC234
+MOD16_021DC234: ; 0x021DC234
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r4, r1, #0
+ mov r1, #0x24
+ bl FUN_02016998
+ str r0, [r5, #8]
+ cmp r0, #0
+ bne _021DC24C
+ bl ErrorHandling
+_021DC24C:
+ ldr r0, [r5, #8]
+ mov r1, #0
+ mov r2, #0x24
+ bl Call_FillMemWithValue
+ ldr r1, [r5, #8]
+ add r0, r4, #0
+ bl MOD16_021DC4D4
+ ldr r0, [r4, #4]
+ bl MOD16_021D9EEC
+ mov r1, #1
+ str r1, [r4, #0x1c]
+ mov r0, #0
+ str r0, [r4, #0x20]
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _021DC274
+ str r1, [r4, #0x10]
+_021DC274:
+ add r0, r4, #0
+ bl MOD16_021DC540
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DC234
+
+ thumb_func_start MOD16_021DC280
+MOD16_021DC280: ; 0x021DC280
+ push {r3, lr}
+ add r2, r0, #0
+ ldr r0, [r2, #0xc]
+ ldr r3, [r2, #8]
+ cmp r0, #1
+ bne _021DC290
+ mov r0, #1
+ pop {r3, pc}
+_021DC290:
+ ldr r0, [r2]
+ cmp r0, #0
+ bne _021DC2A0
+ mov r0, #0
+ str r0, [r1, #0x18]
+ mov r0, #1
+ str r0, [r2]
+ b _021DC2AA
+_021DC2A0:
+ ldr r2, [r2, #4]
+ add r0, r1, #0
+ add r1, r3, #0
+ bl MOD16_021DC4F8
+_021DC2AA:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DC280
+
+ thumb_func_start MOD16_021DC2B0
+MOD16_021DC2B0: ; 0x021DC2B0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DC2B0
+
+ thumb_func_start MOD16_021DC2C4
+MOD16_021DC2C4: ; 0x021DC2C4
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r6, r2, #0
+ ldr r7, [r4, #8]
+ cmp r0, #3
+ bhi _021DC39C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DC2E0: ; jump table
+ .short _021DC2E8 - _021DC2E0 - 2 ; case 0
+ .short _021DC316 - _021DC2E0 - 2 ; case 1
+ .short _021DC360 - _021DC2E0 - 2 ; case 2
+ .short _021DC388 - _021DC2E0 - 2 ; case 3
+_021DC2E8:
+ mov r1, #0x52
+ ldr r0, [r4, #4]
+ lsl r1, r1, #2
+ bl FUN_02016998
+ add r7, r0, #0
+ bne _021DC2FA
+ bl ErrorHandling
+_021DC2FA:
+ str r7, [r4, #8]
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021DD1A0
+ ldr r1, [r5]
+ add r0, r7, #0
+ add r2, r6, #0
+ bl MOD16_021DCE44
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DC3A0
+_021DC316:
+ mov r0, #0x5d
+ ldr r1, [r6, #4]
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ bne _021DC32E
+ ldr r1, [r5]
+ ldr r3, [r4, #4]
+ add r0, r7, #0
+ bl MOD16_021DC690
+ b _021DC338
+_021DC32E:
+ ldr r1, [r5]
+ ldr r3, [r4, #4]
+ add r0, r7, #0
+ bl MOD16_021DC770
+_021DC338:
+ ldr r0, [r6, #0x14]
+ cmp r0, #0
+ beq _021DC34C
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ mov r3, #1
+ bl MOD16_021DD7C4
+ b _021DC358
+_021DC34C:
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ mov r3, #1
+ bl MOD16_021DD724
+_021DC358:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DC3A0
+_021DC360:
+ ldr r0, [r6, #0x14]
+ cmp r0, #0
+ beq _021DC372
+ add r0, r7, #0
+ add r1, r5, #0
+ mov r3, #1
+ bl MOD16_021DD850
+ b _021DC37C
+_021DC372:
+ add r0, r7, #0
+ add r1, r5, #0
+ mov r3, #1
+ bl MOD16_021DD760
+_021DC37C:
+ cmp r0, #0
+ beq _021DC3A0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DC3A0
+_021DC388:
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021DC3A4 ; =0x04000050
+ mov r1, #1
+ mov r2, #8
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DC39C:
+ bl ErrorHandling
+_021DC3A0:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DC3A4: .word 0x04000050
+ thumb_func_end MOD16_021DC2C4
+
+ thumb_func_start MOD16_021DC3A8
+MOD16_021DC3A8: ; 0x021DC3A8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r2, #0
+ add r6, r0, #0
+ add r7, r1, #0
+ ldr r0, [r5, #0x1c]
+ ldr r4, [r7, #8]
+ cmp r0, #0
+ bne _021DC3BC
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DC3BC:
+ ldr r0, [r5, #4]
+ bl MOD16_021D9EC4
+ mov r1, #0x51
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ cmp r2, r0
+ beq _021DC3EC
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DCFD4
+ ldr r1, [r6]
+ ldr r3, [r7, #4]
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD16_021DD244
+ ldr r1, [r6]
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD16_021DCE44
+_021DC3EC:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DCF1C
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DD060
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DD12C
+ ldr r1, [r6]
+ ldr r3, [r7, #4]
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD16_021DD1C0
+ ldr r1, [r6]
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD16_021DD49C
+ add r0, r5, #0
+ bl MOD16_021DD4F0
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DC3A8
+
+ thumb_func_start MOD16_021DC424
+MOD16_021DC424: ; 0x021DC424
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r6, [r4, #8]
+ cmp r0, #3
+ bhi _021DC4C6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DC440: ; jump table
+ .short _021DC448 - _021DC440 - 2 ; case 0
+ .short _021DC484 - _021DC440 - 2 ; case 1
+ .short _021DC4AC - _021DC440 - 2 ; case 2
+ .short _021DC4C2 - _021DC440 - 2 ; case 3
+_021DC448:
+ ldr r0, _021DC4D0 ; =0x04000050
+ mov r3, #0
+ strh r3, [r0]
+ ldr r0, [r7, #0x14]
+ cmp r0, #0
+ beq _021DC474
+ ldr r1, [r5]
+ ldr r3, [r4, #4]
+ add r0, r6, #0
+ bl MOD16_021DD6DC
+ ldr r0, [r5]
+ add r1, r7, #0
+ bl MOD16_021DD4E0
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #0
+ bl MOD16_021DD7C4
+ b _021DC47C
+_021DC474:
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021DD724
+_021DC47C:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DC4CA
+_021DC484:
+ ldr r0, [r7, #0x14]
+ cmp r0, #0
+ beq _021DC496
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #0
+ bl MOD16_021DD850
+ b _021DC4A0
+_021DC496:
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #0
+ bl MOD16_021DD760
+_021DC4A0:
+ cmp r0, #0
+ beq _021DC4CA
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DC4CA
+_021DC4AC:
+ ldr r1, [r5]
+ add r0, r6, #0
+ bl MOD16_021DC754
+ add r0, r6, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DC4CA
+_021DC4C2:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DC4C6:
+ bl ErrorHandling
+_021DC4CA:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DC4D0: .word 0x04000050
+ thumb_func_end MOD16_021DC424
+
+ thumb_func_start MOD16_021DC4D4
+MOD16_021DC4D4: ; 0x021DC4D4
+ mov r2, #0
+ str r2, [r0, #8]
+ str r2, [r1]
+ mov r0, #0x3c
+ str r0, [r1, #4]
+ mov r0, #4
+ str r0, [r1, #8]
+ str r0, [r1, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DC4D4
+
+ thumb_func_start MOD16_021DC4E8
+MOD16_021DC4E8: ; 0x021DC4E8
+ mov r0, #0xa
+ lsl r0, r0, #6
+ str r0, [r1, #4]
+ mov r0, #0
+ str r0, [r1, #8]
+ str r0, [r1, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DC4E8
+
+ thumb_func_start MOD16_021DC4F8
+MOD16_021DC4F8: ; 0x021DC4F8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021DC598
+ cmp r0, #1
+ beq _021DC53E
+ add r0, r5, #0
+ bl MOD16_021DC540
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _021DC52A
+ ldr r0, [r4, #0x14]
+ cmp r0, #1
+ bne _021DC522
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DDB0C
+ b _021DC52A
+_021DC522:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DDB58
+_021DC52A:
+ ldr r0, [r5, #0x20]
+ cmp r0, #0
+ beq _021DC538
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DC620
+_021DC538:
+ add r0, r5, #0
+ bl MOD16_021DC550
+_021DC53E:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DC4F8
+
+ thumb_func_start MOD16_021DC540
+MOD16_021DC540: ; 0x021DC540
+ mov r1, #0
+ str r1, [r0, #0x24]
+ str r1, [r0, #0x28]
+ str r1, [r0, #0x2c]
+ str r1, [r0, #0x30]
+ str r1, [r0, #0x34]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DC540
+
+ thumb_func_start MOD16_021DC550
+MOD16_021DC550: ; 0x021DC550
+ ldr r1, _021DC594 ; =0x021C48B8
+ mov r2, #2
+ ldr r1, [r1, #0x48]
+ tst r2, r1
+ beq _021DC572
+ mov r1, #0x5d
+ ldr r2, [r0, #4]
+ lsl r1, r1, #6
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ bne _021DC56C
+ mov r1, #1
+ str r1, [r0, #0x28]
+ bx lr
+_021DC56C:
+ mov r1, #1
+ str r1, [r0, #0x24]
+ bx lr
+_021DC572:
+ mov r3, #1
+ add r2, r1, #0
+ tst r2, r3
+ beq _021DC57E
+ str r3, [r0, #0x2c]
+ bx lr
+_021DC57E:
+ lsl r2, r3, #0xa
+ tst r2, r1
+ beq _021DC588
+ str r3, [r0, #0x34]
+ bx lr
+_021DC588:
+ mov r2, #4
+ tst r1, r2
+ beq _021DC590
+ str r3, [r0, #0x30]
+_021DC590:
+ bx lr
+ nop
+_021DC594: .word 0x021C48B8
+ thumb_func_end MOD16_021DC550
+
+ thumb_func_start MOD16_021DC598
+MOD16_021DC598: ; 0x021DC598
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ ldr r1, [r5, #0x28]
+ add r4, r2, #0
+ cmp r1, #0
+ beq _021DC5B4
+ bl MOD16_021DD9C8
+ ldr r0, _021DC618 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021DC5B4:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _021DC5CA
+ add r1, r4, #0
+ bl MOD16_021DDAB4
+ ldr r0, _021DC618 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021DC5CA:
+ ldr r0, [r5, #0x2c]
+ cmp r0, #0
+ beq _021DC5F6
+ ldr r0, [r5, #4]
+ bl MOD16_021D9EC4
+ add r1, r0, #0
+ ldr r0, [r5, #4]
+ bl MOD16_021D9EDC
+ ldr r1, _021DC61C ; =0x000001EE
+ cmp r0, r1
+ beq _021DC5F6
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021DD9E0
+ ldr r0, _021DC618 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021DC5F6:
+ ldr r0, [r5, #0x34]
+ cmp r0, #0
+ beq _021DC604
+ add r0, r5, #0
+ bl MOD16_021DD9F8
+ pop {r4, r5, r6, pc}
+_021DC604:
+ ldr r0, [r5, #0x30]
+ cmp r0, #0
+ beq _021DC614
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DDA2C
+ pop {r4, r5, r6, pc}
+_021DC614:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DC618: .word 0x000005DD
+_021DC61C: .word 0x000001EE
+ thumb_func_end MOD16_021DC598
+
+ thumb_func_start MOD16_021DC620
+MOD16_021DC620: ; 0x021DC620
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021DC670
+ ldr r2, [r4, #4]
+ ldr r1, [r0, #0xc]
+ sub r1, r1, r2
+ cmp r1, #0
+ ble _021DC638
+ str r1, [r0, #0xc]
+ pop {r4, pc}
+_021DC638:
+ mov r1, #0
+ str r1, [r0, #0xc]
+ str r1, [r4]
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ ble _021DC670
+ ldr r0, [r4, #8]
+ sub r0, r0, #1
+ cmp r0, #0
+ ble _021DC650
+ str r0, [r4, #8]
+ pop {r4, pc}
+_021DC650:
+ ldr r0, [r4, #4]
+ bl _fflt
+ ldr r1, _021DC674 ; =0x3FCCCCCD
+ bl _fmul
+ bl _ffix
+ str r0, [r4, #4]
+ ldr r0, [r4, #0xc]
+ sub r1, r0, #1
+ mov r0, #4
+ sub r0, r0, r1
+ str r1, [r4, #0xc]
+ lsl r0, r0, #2
+ str r0, [r4, #8]
+_021DC670:
+ pop {r4, pc}
+ nop
+_021DC674: .word 0x3FCCCCCD
+ thumb_func_end MOD16_021DC620
+
+ thumb_func_start MOD16_021DC678
+MOD16_021DC678: ; 0x021DC678
+ mov r3, #0xa
+ lsl r3, r3, #6
+ str r3, [r0, #0xc]
+ str r2, [r1]
+ str r2, [r0, #8]
+ bx lr
+ thumb_func_end MOD16_021DC678
+
+ thumb_func_start MOD16_021DC684
+MOD16_021DC684: ; 0x021DC684
+ ldr r3, _021DC68C ; =MOD16_021D9E70
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021DC68C: .word MOD16_021D9E70
+ thumb_func_end MOD16_021DC684
+
+ thumb_func_start MOD16_021DC690
+MOD16_021DC690: ; 0x021DC690
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r1, #0
+ mov r1, #0
+ add r5, r0, #0
+ add r4, r2, #0
+ add r7, r3, #0
+ str r1, [sp]
+ add r0, r6, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ str r7, [sp, #4]
+ bl MOD16_021D8CFC
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD16_021DC860
+ ldr r0, [r4, #4]
+ bl MOD16_021D9D04
+ add r3, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD16_021DC8F8
+ ldr r0, [r4, #4]
+ bl MOD16_021D9F28
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ bl MOD16_021D9F34
+ add r3, r0, #0
+ ldr r2, [sp, #8]
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD16_021DC958
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021DCAB4
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD16_021DCB58
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD16_021DCCC0
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD16_021DD63C
+ str r0, [r5, #0x4c]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ add r3, r7, #0
+ bl MOD16_021DCD68
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DCF10
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DCF1C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DD060
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DD110
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DD12C
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ add r3, r7, #0
+ bl MOD16_021DD1C0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD16_021DD49C
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DC690
+
+ thumb_func_start MOD16_021DC754
+MOD16_021DC754: ; 0x021DC754
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD16_021DCED8
+ add r0, r4, #0
+ bl MOD16_021DCAFC
+ add r0, r4, #0
+ bl MOD16_021DCEBC
+ add r0, r4, #0
+ bl MOD16_021DC93C
+ pop {r4, pc}
+ thumb_func_end MOD16_021DC754
+
+ thumb_func_start MOD16_021DC770
+MOD16_021DC770: ; 0x021DC770
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r7, r1, #0
+ add r4, r2, #0
+ mov r0, #0x20
+ str r0, [sp]
+ add r6, r3, #0
+ mov r2, #0
+ add r0, r7, #0
+ mov r1, #4
+ add r3, r2, #0
+ str r6, [sp, #4]
+ bl MOD16_021D8CFC
+ add r0, r7, #0
+ mov r1, #0
+ add r2, sp, #0x10
+ add r3, r6, #0
+ bl MOD16_021D8D70
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ lsl r1, r1, #8
+ str r0, [sp, #8]
+ bl DC_FlushRange
+ ldr r0, [sp, #8]
+ mov r2, #0x1e
+ add r0, #0x20
+ mov r1, #0x20
+ lsl r2, r2, #4
+ str r0, [sp, #8]
+ bl GX_LoadBGPltt
+ ldr r0, [sp, #0xc]
+ bl FUN_02016A18
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021DC860
+ ldr r0, [r4, #4]
+ bl MOD16_021D9D04
+ add r3, r0, #0
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r6, #0
+ bl MOD16_021DC8F8
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021DCAB4
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r6, #0
+ bl MOD16_021DCB58
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r6, #0
+ bl MOD16_021DCCC0
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021DD63C
+ str r0, [r5, #0x4c]
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD16_021DCD68
+ ldr r0, [r4, #4]
+ bl MOD16_021D9F28
+ add r2, r0, #0
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021DCA2C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DCF10
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DCF1C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DD060
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DD110
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DD12C
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD16_021DD1C0
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD16_021DD49C
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DC770
+
+ thumb_func_start MOD16_021DC860
+MOD16_021DC860: ; 0x021DC860
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ add r5, r0, #0
+ str r4, [sp, #0xc]
+ ldr r2, [r5]
+ mov r1, #0x1c
+ mov r3, #3
+ bl MOD16_021D8CB4
+ str r4, [sp]
+ add r0, r5, #0
+ mov r1, #0x26
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r6, r0, #0
+ ldrh r0, [r2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ str r4, [sp]
+ add r0, r5, #0
+ mov r1, #0x27
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ add r4, r0, #0
+ ldr r2, [sp, #0x10]
+ mov r0, #4
+ str r0, [sp]
+ ldrh r0, [r2]
+ mov r1, #3
+ mov r3, #1
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ bl FUN_02018148
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r5]
+ mov r1, #3
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021DC860
+
+ thumb_func_start MOD16_021DC8F8
+MOD16_021DC8F8: ; 0x021DC8F8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ add r6, r1, #0
+ str r0, [sp, #8]
+ add r4, r2, #0
+ str r4, [sp, #0xc]
+ add r7, r3, #0
+ ldr r2, [r6]
+ add r0, r6, #0
+ mov r1, #0x1c
+ mov r3, #2
+ bl MOD16_021D8CB4
+ cmp r7, #1
+ bne _021DC924
+ mov r1, #0x2a
+ b _021DC926
+_021DC924:
+ mov r1, #0x28
+_021DC926:
+ add r3, r5, #0
+ add r0, r6, #0
+ mov r2, #1
+ add r3, #0xdc
+ str r4, [sp]
+ bl MOD16_021D8D48
+ add r5, #0xd8
+ str r0, [r5]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DC8F8
+
+ thumb_func_start MOD16_021DC93C
+MOD16_021DC93C: ; 0x021DC93C
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xd8
+ str r1, [r0]
+ add r4, #0xdc
+ str r1, [r4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DC93C
+
+ thumb_func_start MOD16_021DC958
+MOD16_021DC958: ; 0x021DC958
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0x20
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp, #0x10]
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r2, _021DCA24 ; =0x00000266
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r6, #0
+ bl FUN_0200A86C
+ mov r1, #0
+ add r2, r4, #0
+ add r6, r0, #0
+ bl FUN_0200A8E0
+ mov r0, #0x98
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DCA28 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #4
+ add r2, r4, #0
+ mov r3, #8
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ mov r1, #1
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #0x98
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DCA28 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #4
+ add r2, r4, #0
+ mov r3, #0x80
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ mov r0, #1
+ str r0, [sp]
+ add r0, r4, #0
+ add r1, r7, #0
+ mov r2, #3
+ mov r3, #2
+ bl FUN_02021B04
+ mov r0, #0xaa
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DCA28 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #4
+ add r2, r4, #0
+ mov r3, #0x30
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ mov r0, #1
+ str r0, [sp]
+ ldr r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r2, #3
+ mov r3, #2
+ bl FUN_02021B04
+ mov r0, #0xaa
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DCA28 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #4
+ add r2, r4, #0
+ mov r3, #0xb4
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ ldr r0, [r5]
+ mov r1, #1
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DCA24: .word 0x00000266
+_021DCA28: .word 0x00020100
+ thumb_func_end MOD16_021DC958
+
+ thumb_func_start MOD16_021DCA2C
+MOD16_021DCA2C: ; 0x021DCA2C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0x20
+ add r6, r1, #0
+ add r7, r2, #0
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r2, _021DCAAC ; =0x00000266
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r6, #0
+ bl FUN_0200A86C
+ mov r1, #0x6c
+ add r2, r4, #0
+ add r6, r0, #0
+ bl FUN_0200A8E0
+ mov r0, #0x98
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DCAB0 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #4
+ add r2, r4, #0
+ mov r3, #8
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ mov r0, #1
+ str r0, [sp]
+ add r0, r4, #0
+ add r1, r7, #0
+ mov r2, #3
+ mov r3, #2
+ bl FUN_02021B04
+ mov r0, #0xaa
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DCAB0 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #4
+ add r2, r4, #0
+ mov r3, #0x30
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ ldr r0, [r5]
+ mov r1, #1
+ bl FUN_0201AC68
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DCAAC: .word 0x00000266
+_021DCAB0: .word 0x00020100
+ thumb_func_end MOD16_021DCA2C
+
+ thumb_func_start MOD16_021DCAB4
+MOD16_021DCAB4: ; 0x021DCAB4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r0, #2
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_02008DEC
+ add r1, r5, #0
+ add r1, #0x80
+ str r0, [r1]
+ mov r0, #2
+ mov r1, #1
+ add r2, r4, #0
+ bl FUN_02008DEC
+ add r1, r5, #0
+ add r1, #0x84
+ str r0, [r1]
+ mov r0, #2
+ add r1, r0, #0
+ add r2, r4, #0
+ bl FUN_02008DEC
+ add r1, r5, #0
+ add r1, #0x88
+ str r0, [r1]
+ mov r0, #2
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_02008DEC
+ add r5, #0x8c
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DCAB4
+
+ thumb_func_start MOD16_021DCAFC
+MOD16_021DCAFC: ; 0x021DCAFC
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #0x51
+ bl FUN_020094F0
+ bl FUN_02009C0C
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #3
+ bl FUN_020094F0
+ bl FUN_02009E04
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #0x6f
+ bl FUN_020094F0
+ bl FUN_02009C0C
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ bl FUN_02008E2C
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ bl FUN_02008E2C
+ add r0, r4, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ bl FUN_02008E2C
+ add r4, #0x8c
+ ldr r0, [r4]
+ bl FUN_02008E2C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DCAFC
+
+ thumb_func_start MOD16_021DCB58
+MOD16_021DCB58: ; 0x021DCB58
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ add r0, r1, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r6, r0, #0
+ mov r2, #0x51
+ add r0, r5, #0
+ str r2, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ str r4, [sp, #8]
+ add r0, #0x80
+ ldr r0, [r0]
+ add r1, r6, #0
+ bl FUN_020091E0
+ add r7, r0, #0
+ bl FUN_02009B04
+ add r0, r7, #0
+ bl FUN_02009474
+ mov r2, #3
+ str r2, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0xc
+ str r0, [sp, #8]
+ add r0, r5, #0
+ str r4, [sp, #0xc]
+ add r0, #0x84
+ ldr r0, [r0]
+ add r1, r6, #0
+ mov r3, #0
+ bl FUN_02009298
+ add r7, r0, #0
+ bl FUN_02009D68
+ add r0, r7, #0
+ bl FUN_02009474
+ mov r2, #0x4f
+ str r2, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ add r0, r5, #0
+ str r4, [sp, #8]
+ add r0, #0x88
+ ldr r0, [r0]
+ add r1, r6, #0
+ mov r3, #1
+ bl FUN_02009358
+ mov r2, #0x50
+ str r2, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ add r0, r5, #0
+ str r4, [sp, #8]
+ add r0, #0x8c
+ ldr r0, [r0]
+ add r1, r6, #0
+ mov r3, #1
+ bl FUN_02009358
+ mov r0, #0x50
+ str r0, [sp]
+ sub r0, #0x51
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r1, #2
+ str r1, [sp, #0x10]
+ add r1, r5, #0
+ add r1, #0x80
+ ldr r1, [r1]
+ mov r2, #3
+ str r1, [sp, #0x14]
+ add r1, r5, #0
+ add r1, #0x84
+ ldr r1, [r1]
+ mov r3, #0x4f
+ str r1, [sp, #0x18]
+ add r1, r5, #0
+ add r1, #0x88
+ ldr r1, [r1]
+ str r1, [sp, #0x1c]
+ add r1, r5, #0
+ add r1, #0x8c
+ ldr r1, [r1]
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, r5, #0
+ add r0, #0x90
+ mov r1, #0x51
+ bl FUN_02008AA4
+ mov r2, #0x6f
+ str r2, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ add r0, r5, #0
+ str r4, [sp, #8]
+ add r0, #0x80
+ ldr r0, [r0]
+ add r1, r6, #0
+ bl FUN_020091E0
+ add r7, r0, #0
+ bl FUN_02009B04
+ add r0, r7, #0
+ bl FUN_02009474
+ mov r2, #0x6d
+ str r2, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ add r0, r5, #0
+ str r4, [sp, #8]
+ add r0, #0x88
+ ldr r0, [r0]
+ add r1, r6, #0
+ mov r3, #1
+ bl FUN_02009358
+ mov r2, #0x6e
+ str r2, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ add r0, r5, #0
+ str r4, [sp, #8]
+ add r0, #0x8c
+ ldr r0, [r0]
+ add r1, r6, #0
+ mov r3, #1
+ bl FUN_02009358
+ mov r0, #0x6e
+ str r0, [sp]
+ sub r0, #0x6f
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r1, #2
+ str r1, [sp, #0x10]
+ add r1, r5, #0
+ add r1, #0x80
+ ldr r1, [r1]
+ mov r2, #3
+ str r1, [sp, #0x14]
+ add r1, r5, #0
+ add r1, #0x84
+ ldr r1, [r1]
+ mov r3, #0x6d
+ str r1, [sp, #0x18]
+ add r1, r5, #0
+ add r1, #0x88
+ ldr r1, [r1]
+ str r1, [sp, #0x1c]
+ add r1, r5, #0
+ add r1, #0x8c
+ ldr r1, [r1]
+ add r5, #0xb4
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, r5, #0
+ mov r1, #0x6f
+ bl FUN_02008AA4
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DCB58
+
+ thumb_func_start MOD16_021DCCC0
+MOD16_021DCCC0: ; 0x021DCCC0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ mov r4, #0
+ add r6, r0, #0
+ add r3, r1, #0
+ add r5, sp, #0
+ add r0, r4, #0
+ add r1, r4, #0
+ stmia r5!, {r0, r1}
+ stmia r5!, {r0, r1}
+ stmia r5!, {r0, r1}
+ stmia r5!, {r0, r1}
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r3, r0]
+ add r5, r6, #0
+ str r0, [sp]
+ add r0, r6, #0
+ add r0, #0x90
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #0x18]
+ mov r0, #0x20
+ str r2, [sp, #0x1c]
+ str r0, [sp, #0x14]
+ add r7, r4, #0
+_021DCCF4:
+ add r0, sp, #0
+ bl FUN_0201FF84
+ add r1, r7, #0
+ stmia r5!, {r0}
+ bl FUN_02020130
+ add r4, r4, #1
+ cmp r4, #9
+ blt _021DCCF4
+ mov r5, #0
+ str r5, [sp, #0x14]
+ add r4, r6, #0
+ add r7, sp, #0
+_021DCD10:
+ add r0, r7, #0
+ bl FUN_0201FF84
+ mov r1, #1
+ str r0, [r4, #0x50]
+ bl FUN_02020130
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #9
+ blt _021DCD10
+ mov r0, #0
+ str r0, [sp, #0x14]
+ add r0, sp, #0
+ bl FUN_0201FF84
+ mov r1, #2
+ str r0, [r6, #0x74]
+ bl FUN_02020130
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r0, #0xe
+ lsl r0, r0, #0xe
+ str r0, [sp, #8]
+ mov r0, #5
+ lsl r0, r0, #0x10
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r0, #0xb4
+ str r0, [sp, #4]
+ add r0, sp, #0
+ bl FUN_0201FF84
+ str r0, [r6, #0x7c]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r6, #0x7c]
+ mov r1, #1
+ bl FUN_02020398
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DCCC0
+
+ thumb_func_start MOD16_021DCD68
+MOD16_021DCD68: ; 0x021DCD68
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ str r1, [sp, #8]
+ str r0, [sp, #4]
+ mov r1, #0x15
+ ldr r0, [sp, #8]
+ lsl r1, r1, #4
+ ldr r0, [r0, r1]
+ mov r1, #0
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #4]
+ add r7, r2, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ str r3, [sp, #0xc]
+ str r0, [sp, #0x24]
+ mov r0, #2
+ str r0, [sp, #0x34]
+ mov r0, #1
+ str r0, [sp, #0x3c]
+ add r0, r3, #0
+ str r1, [sp, #0x28]
+ str r1, [sp, #0x2c]
+ str r1, [sp, #0x30]
+ str r1, [sp, #0x38]
+ str r0, [sp, #0x40]
+ ldr r0, [r7, #4]
+ bl MOD16_021D9EC4
+ sub r4, r0, #4
+ ldr r0, [sp, #4]
+ ldr r6, [r0, #0x24]
+ ldr r0, [r7, #4]
+ bl MOD16_021D9ED0
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp, #0x14]
+_021DCDB4:
+ ldr r0, [sp, #4]
+ lsl r1, r6, #2
+ add r5, r0, r1
+ ldr r0, [r5, #0x28]
+ cmp r0, #0
+ beq _021DCDC8
+ bl MOD16_021DB338
+ mov r0, #0
+ str r0, [r5, #0x28]
+_021DCDC8:
+ cmp r4, #0
+ blt _021DCE20
+ ldr r0, [sp, #0x10]
+ cmp r4, r0
+ bge _021DCE20
+ ldr r0, [r7, #4]
+ add r1, r4, #0
+ bl MOD16_021D9EDC
+ add r1, r0, #0
+ ldr r0, _021DCE40 ; =0x000001EE
+ cmp r1, r0
+ beq _021DCE0E
+ ldr r0, [r7, #4]
+ bl MOD16_021D9E08
+ add r3, r0, #0
+ ldr r0, [sp, #8]
+ ldr r1, [r7, #4]
+ ldr r2, [sp, #0xc]
+ ldr r3, [r3]
+ bl MOD16_021D7E14
+ ldr r1, [sp, #4]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x18]
+ ldr r1, [r1, #0x4c]
+ add r0, sp, #0x1c
+ bl MOD16_021DB2D4
+ str r0, [r5, #0x28]
+ ldr r0, [sp, #0x18]
+ bl MOD16_021DB3BC
+ b _021DCE24
+_021DCE0E:
+ add r0, r4, #1
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #0xc]
+ add r3, r6, #0
+ bl MOD16_021DD370
+ b _021DCE24
+_021DCE20:
+ mov r0, #0
+ str r0, [r5, #0x28]
+_021DCE24:
+ add r0, r6, #1
+ mov r1, #9
+ bl _s32_div_f
+ ldr r0, [sp, #0x14]
+ add r6, r1, #0
+ add r0, r0, #1
+ add r4, r4, #1
+ str r0, [sp, #0x14]
+ cmp r0, #9
+ blt _021DCDB4
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DCE40: .word 0x000001EE
+ thumb_func_end MOD16_021DCD68
+
+ thumb_func_start MOD16_021DCE44
+MOD16_021DCE44: ; 0x021DCE44
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ add r6, r1, #0
+ bl MOD16_021D9EC4
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ bl MOD16_021D9D88
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9E08
+ add r7, r0, #0
+ ldr r0, [r4, #4]
+ ldr r1, [sp, #8]
+ bl MOD16_021D9EDC
+ ldr r1, _021DCEB8 ; =0x000001EE
+ cmp r0, r1
+ bne _021DCE8C
+ add r0, r6, #0
+ mov r1, #0
+ bl MOD16_021D870C
+ ldr r0, [r5, #0x7c]
+ cmp r0, #0
+ beq _021DCEB4
+ mov r1, #1
+ bl FUN_020200A0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_021DCE8C:
+ mov r0, #0x38
+ str r0, [sp]
+ mov r0, #0x50
+ str r0, [sp, #4]
+ ldr r1, [r4, #4]
+ ldr r2, [r7]
+ add r0, r6, #0
+ mov r3, #2
+ bl MOD16_021D7FB4
+ add r0, r6, #0
+ mov r1, #1
+ bl MOD16_021D870C
+ ldr r0, [r5, #0x7c]
+ cmp r0, #0
+ beq _021DCEB4
+ mov r1, #0
+ bl FUN_020200A0
+_021DCEB4:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DCEB8: .word 0x000001EE
+ thumb_func_end MOD16_021DCE44
+
+ thumb_func_start MOD16_021DCEBC
+MOD16_021DCEBC: ; 0x021DCEBC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021DCEC2:
+ ldr r0, [r5, #0x28]
+ cmp r0, #0
+ beq _021DCECC
+ bl MOD16_021DB338
+_021DCECC:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #9
+ blt _021DCEC2
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DCEBC
+
+ thumb_func_start MOD16_021DCED8
+MOD16_021DCED8: ; 0x021DCED8
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_021DCEE0:
+ ldr r0, [r5]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #9
+ blt _021DCEE0
+ mov r5, #0
+ add r4, r6, #0
+_021DCEF2:
+ ldr r0, [r4, #0x50]
+ bl FUN_0201FFC8
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #9
+ blt _021DCEF2
+ ldr r0, [r6, #0x74]
+ bl FUN_0201FFC8
+ ldr r0, [r6, #0x7c]
+ bl FUN_0201FFC8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DCED8
+
+ thumb_func_start MOD16_021DCF10
+MOD16_021DCF10: ; 0x021DCF10
+ ldr r3, _021DCF18 ; =MOD16_021DD44C
+ mov r2, #0
+ str r2, [r0, #0x24]
+ bx r3
+ .align 2, 0
+_021DCF18: .word MOD16_021DD44C
+ thumb_func_end MOD16_021DCF10
+
+ thumb_func_start MOD16_021DCF1C
+MOD16_021DCF1C: ; 0x021DCF1C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, [r5, #0x24]
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r4, #0
+_021DCF2A:
+ ldr r0, [sp]
+ ldr r0, [r0, #8]
+ cmp r0, #1
+ bne _021DCF36
+ add r0, r4, #2
+ b _021DCF38
+_021DCF36:
+ add r0, r4, #0
+_021DCF38:
+ add r1, r4, #1
+ ldr r3, [sp]
+ lsl r7, r1, #2
+ mov r2, #0xa
+ lsl r0, r0, #2
+ ldr r1, _021DCFCC ; =0x021FF570
+ str r0, [sp, #8]
+ ldr r0, [r1, r0]
+ lsl r2, r2, #6
+ ldr r6, [r3, #0xc]
+ add r3, r2, #0
+ ldr r1, [r1, r7]
+ sub r3, r3, r6
+ bl MOD16_021DD174
+ str r0, [sp, #0xc]
+ ldr r3, [sp]
+ mov r2, #0xa
+ ldr r1, _021DCFD0 ; =0x021FF59C
+ ldr r0, [sp, #8]
+ lsl r2, r2, #6
+ ldr r6, [r3, #0xc]
+ ldr r0, [r1, r0]
+ add r3, r2, #0
+ ldr r1, [r1, r7]
+ sub r3, r3, r6
+ bl MOD16_021DD174
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #4]
+ add r1, sp, #0xc
+ lsl r6, r0, #2
+ ldr r0, [r5, r6]
+ bl FUN_02020044
+ mov r0, #4
+ sub r7, r0, r4
+ bpl _021DCF86
+ neg r7, r7
+_021DCF86:
+ lsl r1, r7, #1
+ bpl _021DCF8C
+ neg r1, r1
+_021DCF8C:
+ ldr r0, [r5, r6]
+ add r1, #0x20
+ bl FUN_02020310
+ cmp r4, #4
+ bne _021DCFA2
+ ldr r0, [r5, r6]
+ mov r1, #0
+ bl FUN_020202DC
+ b _021DCFB6
+_021DCFA2:
+ add r1, r7, #6
+ cmp r1, #9
+ ldr r0, [r5, r6]
+ bge _021DCFB0
+ bl FUN_020202DC
+ b _021DCFB6
+_021DCFB0:
+ mov r1, #9
+ bl FUN_020202DC
+_021DCFB6:
+ ldr r0, [sp, #4]
+ mov r1, #9
+ add r0, r0, #1
+ bl _s32_div_f
+ add r4, r4, #1
+ str r1, [sp, #4]
+ cmp r4, #9
+ blt _021DCF2A
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DCFCC: .word 0x021FF570
+_021DCFD0: .word 0x021FF59C
+ thumb_func_end MOD16_021DCF1C
+
+ thumb_func_start MOD16_021DCFD4
+MOD16_021DCFD4: ; 0x021DCFD4
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9EC4
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9ED0
+ add r7, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #1
+ bne _021DD026
+ ldr r0, [r5, #0x24]
+ add r0, r0, #1
+ cmp r0, #9
+ bge _021DCFFA
+ b _021DCFFC
+_021DCFFA:
+ mov r0, #0
+_021DCFFC:
+ str r0, [r5, #0x24]
+ ldr r0, [r5, #0x24]
+ mov r1, #9
+ add r0, #8
+ bl _s32_div_f
+ add r0, r6, #4
+ cmp r0, r7
+ blt _021DD01A
+ lsl r0, r1, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DD01A:
+ lsl r0, r1, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DD026:
+ cmp r0, #2
+ bne _021DD054
+ ldr r0, [r5, #0x24]
+ sub r0, r0, #1
+ bmi _021DD032
+ b _021DD034
+_021DD032:
+ mov r0, #8
+_021DD034:
+ str r0, [r5, #0x24]
+ ldr r1, [r5, #0x24]
+ sub r0, r6, #4
+ bpl _021DD048
+ lsl r0, r1, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DD048:
+ lsl r0, r1, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DD054:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DD44C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DCFD4
+
+ thumb_func_start MOD16_021DD060
+MOD16_021DD060: ; 0x021DD060
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r1, #0
+ str r0, [sp]
+ ldr r0, [r7, #4]
+ bl MOD16_021D9EC4
+ add r5, r0, #0
+ ldr r0, [r7, #4]
+ bl MOD16_021D9ED0
+ str r0, [sp, #4]
+ sub r0, r5, #4
+ mov r4, #0
+ str r0, [sp, #8]
+_021DD07E:
+ ldr r0, [sp]
+ mov r1, #9
+ ldr r0, [r0, #0x24]
+ add r0, r0, r4
+ bl _s32_div_f
+ ldr r0, [sp, #8]
+ add r5, r1, #0
+ mov r6, #0
+ add r1, r0, r4
+ bmi _021DD0B6
+ ldr r0, [sp, #4]
+ cmp r1, r0
+ bge _021DD0B6
+ ldr r0, [r7, #4]
+ bl MOD16_021D9EDC
+ add r1, r0, #0
+ ldr r0, _021DD10C ; =0x000001EE
+ cmp r1, r0
+ beq _021DD0B6
+ ldr r0, [r7, #4]
+ bl MOD16_021D9E08
+ ldr r0, [r0, #4]
+ cmp r0, #2
+ bne _021DD0B6
+ mov r6, #1
+_021DD0B6:
+ ldr r0, [sp]
+ lsl r1, r5, #2
+ add r5, r0, r1
+ ldr r0, [r5, #0x50]
+ add r1, r6, #0
+ bl FUN_020200A0
+ cmp r6, #0
+ beq _021DD102
+ ldr r0, [r5]
+ bl FUN_0202011C
+ mov r1, #0x36
+ ldr r2, [r0]
+ lsl r1, r1, #0xc
+ sub r1, r2, r1
+ str r1, [sp, #0xc]
+ ldr r0, [r0, #4]
+ add r1, sp, #0xc
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x50]
+ bl FUN_02020044
+ ldr r0, [r5]
+ bl FUN_02020300
+ add r1, r0, #0
+ ldr r0, [r5, #0x50]
+ bl FUN_020202A8
+ ldr r0, [r5]
+ bl FUN_0202032C
+ add r1, r0, #0
+ ldr r0, [r5, #0x50]
+ sub r1, r1, #1
+ bl FUN_02020310
+_021DD102:
+ add r4, r4, #1
+ cmp r4, #9
+ blt _021DD07E
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DD10C: .word 0x000001EE
+ thumb_func_end MOD16_021DD060
+
+ thumb_func_start MOD16_021DD110
+MOD16_021DD110: ; 0x021DD110
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #4]
+ bl MOD16_021D9ED0
+ add r1, r0, #0
+ mov r0, #0x36
+ lsl r0, r0, #0xc
+ lsl r1, r1, #0xc
+ bl FX_Div
+ str r0, [r4, #0x78]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DD110
+
+ thumb_func_start MOD16_021DD12C
+MOD16_021DD12C: ; 0x021DD12C
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r1, #4]
+ bl MOD16_021D9EC4
+ add r2, r0, #0
+ ldr r0, [r4, #0x78]
+ lsl r2, r2, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ mov r0, #0x3a
+ lsl r0, r0, #0xc
+ str r1, [sp, #4]
+ add r0, r1, r0
+ str r0, [sp, #4]
+ mov r0, #0x3e
+ lsl r0, r0, #0xe
+ str r0, [sp]
+ ldr r0, [r4, #0x74]
+ add r1, sp, #0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DD12C
+
+ thumb_func_start MOD16_021DD174
+MOD16_021DD174: ; 0x021DD174
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ sub r0, r1, r5
+ lsl r2, r3, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ lsl r1, r4, #0xc
+ bl FX_Div
+ add r0, r0, r5
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DD174
+
+ thumb_func_start MOD16_021DD1A0
+MOD16_021DD1A0: ; 0x021DD1A0
+ push {r3, r4, r5, lr}
+ mov r2, #0x52
+ add r5, r1, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ ldr r0, [r5, #4]
+ bl MOD16_021D9EC4
+ mov r1, #0x51
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DD1A0
+
+ thumb_func_start MOD16_021DD1C0
+MOD16_021DD1C0: ; 0x021DD1C0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ ldr r5, [r7, #0x24]
+ mov r6, #0
+_021DD1CA:
+ lsl r0, r5, #2
+ add r4, r7, r0
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _021DD20C
+ ldr r0, [r4]
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD16_021DD220
+ ldr r0, [r4, #0x28]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r2, [sp]
+ bl FUN_020118C4
+ ldr r0, [r4]
+ bl FUN_0202032C
+ add r1, r0, #0
+ ldr r0, [r4, #0x28]
+ sub r1, r1, #1
+ ldr r0, [r0]
+ bl FUN_02011A30
+ ldr r0, [r4]
+ bl FUN_02020300
+ add r1, r0, #0
+ ldr r0, [r4, #0x28]
+ ldr r0, [r0]
+ bl FUN_02011A90
+_021DD20C:
+ add r0, r5, #1
+ mov r1, #9
+ bl _s32_div_f
+ add r6, r6, #1
+ add r5, r1, #0
+ cmp r6, #9
+ blt _021DD1CA
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DD1C0
+
+ thumb_func_start MOD16_021DD220
+MOD16_021DD220: ; 0x021DD220
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ bl FUN_0202011C
+ ldr r1, [r0]
+ asr r1, r1, #0xc
+ str r1, [r5]
+ ldr r0, [r0, #4]
+ asr r0, r0, #0xc
+ str r0, [r4]
+ ldr r0, [r5]
+ sub r0, #0x40
+ str r0, [r5]
+ ldr r0, [r4]
+ sub r0, #8
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DD220
+
+ thumb_func_start MOD16_021DD244
+MOD16_021DD244: ; 0x021DD244
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r4, r2, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ str r1, [sp, #8]
+ str r3, [sp, #0xc]
+ bl MOD16_021D9EC4
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #4]
+ bl MOD16_021D9ED0
+ ldr r1, [r4, #8]
+ str r0, [sp, #0x10]
+ cmp r1, #1
+ beq _021DD26C
+ cmp r1, #2
+ beq _021DD276
+ b _021DD27C
+_021DD26C:
+ ldr r6, [r5, #0x24]
+ ldr r0, [sp, #0x14]
+ add r6, #8
+ add r7, r0, #4
+ b _021DD27C
+_021DD276:
+ ldr r0, [sp, #0x14]
+ ldr r6, [r5, #0x24]
+ sub r7, r0, #4
+_021DD27C:
+ cmp r1, #0
+ bne _021DD290
+ ldr r1, [sp, #8]
+ ldr r3, [sp, #0xc]
+ add r0, r5, #0
+ add r2, r4, #0
+ bl MOD16_021DCD68
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_021DD290:
+ add r0, r6, #0
+ mov r1, #9
+ bl _s32_div_f
+ ldr r0, [sp, #0x10]
+ add r6, r1, #0
+ cmp r7, r0
+ bge _021DD2DA
+ cmp r7, #0
+ blt _021DD2DA
+ ldr r0, [r4, #4]
+ add r1, r7, #0
+ bl MOD16_021D9EDC
+ ldr r1, _021DD2F0 ; =0x000001EE
+ cmp r0, r1
+ beq _021DD2C6
+ str r6, [sp]
+ str r0, [sp, #4]
+ ldr r1, [sp, #8]
+ ldr r3, [sp, #0xc]
+ add r0, r5, #0
+ add r2, r4, #0
+ bl MOD16_021DD2F4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_021DD2C6:
+ add r0, r7, #1
+ str r0, [sp]
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #0xc]
+ add r0, r5, #0
+ add r3, r6, #0
+ bl MOD16_021DD370
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_021DD2DA:
+ lsl r4, r6, #2
+ add r5, #0x28
+ ldr r0, [r5, r4]
+ cmp r0, #0
+ beq _021DD2EC
+ bl MOD16_021DB338
+ mov r0, #0
+ str r0, [r5, r4]
+_021DD2EC:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DD2F0: .word 0x000001EE
+ thumb_func_end MOD16_021DD244
+
+ thumb_func_start MOD16_021DD2F4
+MOD16_021DD2F4: ; 0x021DD2F4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r4, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ ldr r0, [r4, #4]
+ ldr r1, [sp, #0x44]
+ add r7, r3, #0
+ bl MOD16_021D9E08
+ str r0, [sp]
+ cmp r0, #0
+ bne _021DD312
+ bl ErrorHandling
+_021DD312:
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r6, r0]
+ mov r1, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ ldr r3, [sp]
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x1c]
+ mov r0, #1
+ str r0, [sp, #0x24]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r1, [sp, #0x18]
+ str r1, [sp, #0x20]
+ str r7, [sp, #0x28]
+ ldr r1, [r4, #4]
+ ldr r3, [r3]
+ add r0, r6, #0
+ add r2, r7, #0
+ bl MOD16_021D7E14
+ add r6, r0, #0
+ ldr r0, [sp, #0x40]
+ add r4, r5, #0
+ add r4, #0x28
+ lsl r7, r0, #2
+ ldr r0, [r4, r7]
+ cmp r0, #0
+ beq _021DD358
+ bl MOD16_021DB338
+_021DD358:
+ str r6, [sp, #8]
+ ldr r1, [r5, #0x4c]
+ add r0, sp, #4
+ bl MOD16_021DB2D4
+ str r0, [r4, r7]
+ add r0, r6, #0
+ bl MOD16_021DB3BC
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DD2F4
+
+ thumb_func_start MOD16_021DD370
+MOD16_021DD370: ; 0x021DD370
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r4, r2, #0
+ str r0, [sp, #0x10]
+ add r5, r1, #0
+ mov r0, #0x20
+ add r1, r4, #0
+ add r6, r3, #0
+ bl FUN_020219F4
+ add r7, r0, #0
+ ldr r2, _021DD444 ; =0x00000266
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r4, #0
+ bl FUN_0200A86C
+ mov r1, #0x15
+ lsl r1, r1, #4
+ str r0, [sp, #0x14]
+ ldr r0, [r5, r1]
+ mov r2, #2
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x10]
+ add r0, #0x98
+ ldr r0, [r0]
+ str r0, [sp, #0x20]
+ mov r0, #0
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ str r0, [sp, #0x2c]
+ str r0, [sp, #0x34]
+ mov r0, #1
+ str r2, [sp, #0x30]
+ str r4, [sp, #0x3c]
+ str r0, [sp, #0x38]
+ ldr r0, [r5, r1]
+ mov r1, #0xf
+ bl MOD16_021DB388
+ add r5, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ ldr r1, [sp, #0x58]
+ add r0, r7, #0
+ mov r2, #3
+ mov r3, #2
+ bl FUN_02021B04
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DD448 ; =0x00030201
+ add r2, r7, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ mov r1, #2
+ mov r3, #0x16
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x14]
+ mov r1, #0x63
+ add r2, r7, #0
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DD448 ; =0x00030201
+ add r2, r7, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ mov r1, #2
+ mov r3, #0x31
+ bl FUN_0201BDE0
+ ldr r4, [sp, #0x10]
+ lsl r6, r6, #2
+ add r4, #0x28
+ ldr r0, [r4, r6]
+ cmp r0, #0
+ beq _021DD420
+ bl MOD16_021DB338
+_021DD420:
+ ldr r1, [sp, #0x10]
+ str r5, [sp, #0x1c]
+ ldr r1, [r1, #0x4c]
+ add r0, sp, #0x18
+ bl MOD16_021DB2D4
+ str r0, [r4, r6]
+ add r0, r5, #0
+ bl MOD16_021DB3BC
+ add r0, r7, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ bl FUN_0200A8B8
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DD444: .word 0x00000266
+_021DD448: .word 0x00030201
+ thumb_func_end MOD16_021DD370
+
+ thumb_func_start MOD16_021DD44C
+MOD16_021DD44C: ; 0x021DD44C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9EC4
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9ED0
+ sub r4, r5, #4
+ ldr r5, [r6, #0x24]
+ str r0, [sp]
+ mov r7, #0
+_021DD468:
+ cmp r4, #0
+ blt _021DD47E
+ ldr r0, [sp]
+ cmp r4, r0
+ bge _021DD47E
+ lsl r0, r5, #2
+ ldr r0, [r6, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ b _021DD488
+_021DD47E:
+ lsl r0, r5, #2
+ ldr r0, [r6, r0]
+ mov r1, #0
+ bl FUN_020200A0
+_021DD488:
+ add r0, r5, #1
+ mov r1, #9
+ bl _s32_div_f
+ add r7, r7, #1
+ add r5, r1, #0
+ add r4, r4, #1
+ cmp r7, #9
+ blt _021DD468
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DD44C
+
+ thumb_func_start MOD16_021DD49C
+MOD16_021DD49C: ; 0x021DD49C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r2, #0xc]
+ mov r0, #0xa
+ lsl r0, r0, #6
+ sub r0, r0, r1
+ lsl r0, r0, #0xc
+ mov r2, #0x1f
+ asr r1, r0, #0x1f
+ lsl r2, r2, #0xc
+ mov r3, #0
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ mov r1, #0xa
+ lsl r1, r1, #0x12
+ bl FX_Div
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD16_021D8700
+ mov r1, #0x17
+ asr r2, r5, #0xc
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DD49C
+
+ thumb_func_start MOD16_021DD4E0
+MOD16_021DD4E0: ; 0x021DD4E0
+ push {r3, lr}
+ bl MOD16_021D8700
+ mov r1, #0x17
+ mov r2, #0x1f
+ bl FUN_02007558
+ pop {r3, pc}
+ thumb_func_end MOD16_021DD4E0
+
+ thumb_func_start MOD16_021DD4F0
+MOD16_021DD4F0: ; 0x021DD4F0
+ push {r4, lr}
+ mov r1, #0xa
+ ldr r0, [r0, #0xc]
+ lsl r1, r1, #6
+ sub r0, r1, r0
+ lsl r3, r0, #0xc
+ asr r2, r3, #0x1f
+ lsr r0, r3, #0x10
+ lsl r4, r2, #0x10
+ orr r4, r0
+ mov r0, #2
+ lsl r3, r3, #0x10
+ mov r2, #0
+ lsl r0, r0, #0xa
+ add r0, r3, r0
+ adc r4, r2
+ lsl r2, r4, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r2
+ lsl r1, r1, #0xc
+ bl FX_Div
+ asr r1, r0, #0xc
+ mov r0, #0x10
+ sub r0, r0, r1
+ lsl r0, r0, #8
+ orr r1, r0
+ ldr r0, _021DD52C ; =0x04000052
+ strh r1, [r0]
+ pop {r4, pc}
+ .align 2, 0
+_021DD52C: .word 0x04000052
+ thumb_func_end MOD16_021DD4F0
+
+ thumb_func_start MOD16_021DD530
+MOD16_021DD530: ; 0x021DD530
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #0x14]
+ ldr r0, _021DD5BC ; =0x00000685
+ add r5, r2, #0
+ str r1, [sp, #0x18]
+ add r4, r3, #0
+ bl FUN_020054C8
+ ldr r0, [r5, #0x10]
+ cmp r0, #0
+ bne _021DD576
+ cmp r4, #0
+ beq _021DD568
+ ldr r0, [sp, #0x18]
+ mov r6, #3
+ ldr r0, [r0]
+ mov r4, #0
+ ldr r0, [r0]
+ mov r1, #1
+ add r2, r6, #0
+ mov r3, #0xc0
+ str r4, [sp, #0x1c]
+ mov r7, #0xe
+ mov r5, #4
+ bl FUN_020179E0
+ b _021DD594
+_021DD568:
+ mov r0, #3
+ mov r6, #0
+ str r0, [sp, #0x1c]
+ mov r4, #0xe
+ add r7, r6, #0
+ mov r5, #4
+ b _021DD594
+_021DD576:
+ cmp r4, #0
+ beq _021DD588
+ mov r0, #0xc
+ str r0, [sp, #0x1c]
+ mov r4, #0x14
+ mov r6, #3
+ mov r7, #0xe
+ mov r5, #4
+ b _021DD594
+_021DD588:
+ mov r0, #3
+ str r0, [sp, #0x1c]
+ mov r4, #0xe
+ mov r6, #0xc
+ mov r7, #0x14
+ mov r5, #4
+_021DD594:
+ ldr r0, [sp, #0x1c]
+ ldr r3, [sp, #0x14]
+ str r0, [sp]
+ str r6, [sp, #4]
+ str r4, [sp, #8]
+ str r7, [sp, #0xc]
+ ldr r1, [sp, #0x18]
+ str r5, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ ldr r1, [r1]
+ add r3, #0xdc
+ str r3, [sp, #0x14]
+ ldr r1, [r1]
+ ldr r3, [r3]
+ add r0, #0xe0
+ mov r2, #2
+ bl MOD16_021D7CA4
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DD5BC: .word 0x00000685
+ thumb_func_end MOD16_021DD530
+
+ thumb_func_start MOD16_021DD5C0
+MOD16_021DD5C0: ; 0x021DD5C0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0xe0
+ add r4, r1, #0
+ bl MOD16_021D7CC8
+ add r6, r0, #0
+ bne _021DD60A
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xfc
+ ldr r0, [r0]
+ sub r0, r0, #1
+ mul r0, r1
+ mov r1, #1
+ lsl r1, r1, #8
+ ldr r1, [r5, r1]
+ bl _s32_div_f
+ add r5, #0xf0
+ ldr r1, [r5]
+ add r0, r0, r1
+ lsl r3, r0, #3
+ mov r0, #0x2f
+ sub r3, #0x70
+ mvn r0, r0
+ cmp r3, r0
+ bge _021DD5FE
+ add r3, r0, #0
+_021DD5FE:
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0]
+ mov r2, #3
+ bl FUN_0201AEE4
+_021DD60A:
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DD5C0
+
+ thumb_func_start MOD16_021DD610
+MOD16_021DD610: ; 0x021DD610
+ push {r3, lr}
+ ldr r1, [r1, #0x10]
+ cmp r1, #0
+ bne _021DD62A
+ cmp r2, #0
+ bne _021DD62A
+ ldr r0, [r0]
+ mov r1, #1
+ ldr r0, [r0]
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+_021DD62A:
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021DD638 ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2]
+ pop {r3, pc}
+ .align 2, 0
+_021DD638: .word 0xFFFF1FFF
+ thumb_func_end MOD16_021DD610
+
+ thumb_func_start MOD16_021DD63C
+MOD16_021DD63C: ; 0x021DD63C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x15
+ lsl r1, r1, #4
+ ldr r0, [r0, r1]
+ mov r1, #0xf
+ mov r2, #2
+ bl MOD16_021DB388
+ add r4, r0, #0
+ mov r1, #1
+ add r2, r5, #0
+ bl FUN_02011898
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD16_021DB3BC
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DD63C
+
+ thumb_func_start MOD16_021DD664
+MOD16_021DD664: ; 0x021DD664
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x74]
+ mov r1, #1
+ bl FUN_02020398
+ mov r6, #1
+ mov r4, #0
+ add r7, r6, #0
+_021DD676:
+ ldr r0, [r5]
+ add r1, r6, #0
+ bl FUN_02020398
+ ldr r0, [r5, #0x50]
+ add r1, r7, #0
+ bl FUN_02020398
+ ldr r0, [r5, #0x28]
+ cmp r0, #0
+ beq _021DD694
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_02011AF0
+_021DD694:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #9
+ blt _021DD676
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DD664
+
+ thumb_func_start MOD16_021DD6A0
+MOD16_021DD6A0: ; 0x021DD6A0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x74]
+ mov r1, #0
+ bl FUN_02020398
+ mov r4, #0
+ add r6, r4, #0
+ add r7, r4, #0
+_021DD6B2:
+ ldr r0, [r5]
+ add r1, r6, #0
+ bl FUN_02020398
+ ldr r0, [r5, #0x50]
+ add r1, r7, #0
+ bl FUN_02020398
+ ldr r0, [r5, #0x28]
+ cmp r0, #0
+ beq _021DD6D0
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_02011AF0
+_021DD6D0:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #9
+ blt _021DD6B2
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DD6A0
+
+ thumb_func_start MOD16_021DD6DC
+MOD16_021DD6DC: ; 0x021DD6DC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0x24]
+ add r6, r1, #0
+ add r0, r0, #4
+ mov r1, #9
+ add r5, r2, #0
+ add r7, r3, #0
+ bl _s32_div_f
+ lsl r0, r1, #2
+ ldr r0, [r4, r0]
+ bl FUN_0202011C
+ add r4, r0, #0
+ ldr r0, [r5, #4]
+ bl MOD16_021D9D88
+ add r3, r0, #0
+ ldr r0, [r4]
+ add r2, r7, #0
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ str r0, [sp, #4]
+ ldr r1, [r5, #4]
+ add r0, r6, #0
+ bl MOD16_021D7E9C
+ add r0, r6, #0
+ mov r1, #0
+ bl MOD16_021D891C
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DD6DC
+
+ thumb_func_start MOD16_021DD724
+MOD16_021DD724: ; 0x021DD724
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ add r4, r3, #0
+ bl MOD16_021DD530
+ ldr r0, [r5, #0x10]
+ cmp r0, #1
+ beq _021DD75E
+ cmp r4, #0
+ beq _021DD74C
+ mov r1, #0
+ mov r0, #1
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #4
+ sub r2, #0x10
+ mov r3, #0x39
+ bl FUN_0200A208
+ pop {r3, r4, r5, pc}
+_021DD74C:
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #4
+ add r1, r0, #0
+ sub r1, #0x14
+ mov r2, #0
+ mov r3, #0x39
+ bl FUN_0200A208
+_021DD75E:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DD724
+
+ thumb_func_start MOD16_021DD760
+MOD16_021DD760: ; 0x021DD760
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r2, #0
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021DD5C0
+ add r7, r0, #0
+ ldr r0, [r4, #0x10]
+ cmp r0, #1
+ beq _021DD77C
+ mov r0, #1
+ bl FUN_0200A344
+ b _021DD77E
+_021DD77C:
+ mov r0, #1
+_021DD77E:
+ cmp r7, #1
+ bne _021DD7BE
+ cmp r0, #1
+ bne _021DD7BE
+ ldr r0, [r4, #0x10]
+ cmp r0, #1
+ beq _021DD7B0
+ cmp r6, #0
+ bne _021DD7B0
+ mov r0, #0xf
+ mvn r0, r0
+ mov r1, #0x3f
+ mov r2, #1
+ bl FUN_0200A274
+ ldr r0, [r5]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_02019620
+ ldr r0, [r5]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02018744
+_021DD7B0:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021DD610
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DD7BE:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DD760
+
+ thumb_func_start MOD16_021DD7C4
+MOD16_021DD7C4: ; 0x021DD7C4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ add r5, r1, #0
+ add r7, r2, #0
+ add r4, r3, #0
+ bl MOD16_021DD664
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ add r3, r4, #0
+ bl MOD16_021DD530
+ cmp r4, #0
+ bne _021DD7F4
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021DD910
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021DD96C
+_021DD7F4:
+ ldr r0, [r7, #0x10]
+ cmp r0, #1
+ beq _021DD84A
+ cmp r4, #0
+ beq _021DD826
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x28
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #4
+ add r2, r1, #0
+ sub r2, #0x14
+ bl MOD16_021D8988
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021DD826:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x28
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #4
+ add r3, r1, #0
+ sub r3, #0x14
+ bl MOD16_021D8988
+_021DD84A:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DD7C4
+
+ thumb_func_start MOD16_021DD850
+MOD16_021DD850: ; 0x021DD850
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r4, r2, #0
+ add r7, r0, #0
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021DD5C0
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x10]
+ cmp r0, #1
+ beq _021DD876
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ str r0, [sp, #0xc]
+_021DD876:
+ cmp r6, #0
+ bne _021DD890
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD16_021DD944
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD16_021DD9A0
+ str r0, [sp, #0x14]
+ b _021DD896
+_021DD890:
+ mov r0, #1
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+_021DD896:
+ mov r1, #0
+ add r2, sp, #8
+_021DD89A:
+ ldr r0, [r2]
+ cmp r0, #0
+ beq _021DD8A8
+ add r1, r1, #1
+ add r2, r2, #4
+ cmp r1, #4
+ blt _021DD89A
+_021DD8A8:
+ cmp r1, #4
+ bne _021DD906
+ cmp r6, #0
+ bne _021DD8E0
+ ldr r0, [r4, #0x10]
+ cmp r0, #1
+ beq _021DD8F6
+ mov r3, #0
+ add r0, r3, #0
+ str r3, [sp]
+ sub r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, _021DD90C ; =0x04000050
+ mov r1, #0x2e
+ mov r2, #8
+ bl G2x_SetBlendBrightnessExt_
+ ldr r0, [r5]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_02019620
+ ldr r0, [r5]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02018744
+ b _021DD8F6
+_021DD8E0:
+ add r0, r7, #0
+ bl MOD16_021DD6A0
+ ldr r0, [r5]
+ mov r1, #0
+ bl MOD16_021D8950
+ ldr r0, [r5]
+ mov r1, #0
+ bl MOD16_021D88F0
+_021DD8F6:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021DD610
+ add sp, #0x18
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DD906:
+ mov r0, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DD90C: .word 0x04000050
+ thumb_func_end MOD16_021DD850
+
+ thumb_func_start MOD16_021DD910
+MOD16_021DD910: ; 0x021DD910
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ mov r1, #0x48
+ add r5, r0, #0
+ str r1, [sp]
+ mov r0, #4
+ add r1, #0xbc
+ str r0, [sp, #4]
+ add r0, r5, r1
+ mov r1, #0x38
+ mov r2, #0x30
+ mov r3, #0x50
+ bl MOD16_021D8BD8
+ mov r2, #0x41
+ lsl r2, r2, #2
+ ldr r1, [r5, r2]
+ add r2, r2, #4
+ ldr r0, [r4]
+ ldr r2, [r5, r2]
+ bl MOD16_021D86F4
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DD910
+
+ thumb_func_start MOD16_021DD944
+MOD16_021DD944: ; 0x021DD944
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x41
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r4, r1, #0
+ bl MOD16_021D8BF4
+ mov r2, #0x41
+ lsl r2, r2, #2
+ ldr r1, [r5, r2]
+ add r2, r2, #4
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r2, [r5, r2]
+ bl MOD16_021D86F4
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DD944
+
+ thumb_func_start MOD16_021DD96C
+MOD16_021DD96C: ; 0x021DD96C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #0x49
+ lsl r0, r0, #2
+ add r4, r1, #0
+ add r0, r5, r0
+ mov r1, #0xaa
+ mov r2, #0xac
+ mov r3, #0x52
+ bl MOD16_021D8BD8
+ mov r2, #0x49
+ lsl r2, r2, #2
+ ldr r1, [r5, r2]
+ add r2, r2, #4
+ ldr r0, [r4]
+ ldr r2, [r5, r2]
+ bl MOD16_021D7F6C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DD96C
+
+ thumb_func_start MOD16_021DD9A0
+MOD16_021DD9A0: ; 0x021DD9A0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x49
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r4, r1, #0
+ bl MOD16_021D8BF4
+ mov r2, #0x49
+ lsl r2, r2, #2
+ ldr r1, [r5, r2]
+ add r2, r2, #4
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r2, [r5, r2]
+ bl MOD16_021D7F6C
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DD9A0
+
+ thumb_func_start MOD16_021DD9C8
+MOD16_021DD9C8: ; 0x021DD9C8
+ ldr r3, [r0]
+ mov r1, #4
+ ldr r2, [r3]
+ orr r1, r2
+ str r1, [r3]
+ mov r1, #0
+ str r1, [r0, #0x10]
+ str r1, [r0, #0x14]
+ mov r1, #2
+ str r1, [r0, #0x20]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DD9C8
+
+ thumb_func_start MOD16_021DD9E0
+MOD16_021DD9E0: ; 0x021DD9E0
+ ldr r3, [r1]
+ mov r0, #2
+ ldr r2, [r3]
+ orr r2, r0
+ str r2, [r3]
+ mov r3, #0
+ str r3, [r1, #0x10]
+ mov r2, #1
+ str r2, [r1, #0x14]
+ str r3, [r1, #0xc]
+ str r0, [r1, #0x20]
+ bx lr
+ thumb_func_end MOD16_021DD9E0
+
+ thumb_func_start MOD16_021DD9F8
+MOD16_021DD9F8: ; 0x021DD9F8
+ push {r3, lr}
+ mov r1, #0x5d
+ ldr r2, [r0, #4]
+ lsl r1, r1, #6
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ bne _021DDA24
+ ldr r3, [r0]
+ mov r1, #1
+ ldr r2, [r3]
+ orr r1, r2
+ str r1, [r3]
+ mov r1, #0
+ str r1, [r0, #0x10]
+ str r1, [r0, #0x14]
+ mov r1, #2
+ str r1, [r0, #0x20]
+ ldr r0, _021DDA28 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #1
+ pop {r3, pc}
+_021DDA24:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_021DDA28: .word 0x000005DD
+ thumb_func_end MOD16_021DD9F8
+
+ thumb_func_start MOD16_021DDA2C
+MOD16_021DDA2C: ; 0x021DDA2C
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r1, #0x5d
+ ldr r0, [r5, #4]
+ lsl r1, r1, #6
+ ldr r1, [r0, r1]
+ cmp r1, #1
+ bne _021DDA46
+ add sp, #0x10
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021DDA46:
+ bl MOD16_021D9D04
+ cmp r0, #0
+ bne _021DDA52
+ mov r4, #1
+ b _021DDA54
+_021DDA52:
+ mov r4, #0
+_021DDA54:
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ bl MOD16_021D9CD0
+ cmp r0, #0
+ beq _021DDAA8
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ bl MOD16_021D9CEC
+ ldr r0, _021DDAB0 ; =0x000005DD
+ bl FUN_020054C8
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r4, [sp, #8]
+ str r6, [sp, #0xc]
+ ldr r0, [r5, #4]
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD16_021D9CB0
+ ldr r0, [r5, #4]
+ mov r1, #0
+ bl MOD16_021D9D28
+ mov r3, #0
+ str r3, [r5, #0xc]
+ ldr r2, [r5]
+ mov r0, #0x10
+ ldr r1, [r2]
+ add sp, #0x10
+ orr r0, r1
+ str r0, [r2]
+ str r3, [r5, #0x10]
+ str r3, [r5, #0x14]
+ mov r0, #2
+ str r0, [r5, #0x20]
+ str r3, [r5, #0x1c]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021DDAA8:
+ mov r0, #0
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_021DDAB0: .word 0x000005DD
+ thumb_func_end MOD16_021DDA2C
+
+ thumb_func_start MOD16_021DDAB4
+MOD16_021DDAB4: ; 0x021DDAB4
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r4, r1, #0
+ bl MOD16_021D9DE8
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ bl MOD16_021D9D04
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r4, [sp, #0xc]
+ ldr r0, [r5, #4]
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD16_021D9CB0
+ ldr r2, [r5]
+ mov r0, #0x10
+ ldr r1, [r2]
+ orr r0, r1
+ str r0, [r2]
+ ldr r0, [r5, #4]
+ add r1, r6, #0
+ bl MOD16_021D9DC0
+ mov r2, #0
+ str r2, [r5, #0xc]
+ mov r0, #0x5d
+ ldr r1, [r5, #4]
+ lsl r0, r0, #6
+ str r2, [r1, r0]
+ str r2, [r5, #0x10]
+ str r2, [r5, #0x14]
+ str r2, [r5, #8]
+ mov r0, #2
+ str r0, [r5, #0x20]
+ str r2, [r5, #0x1c]
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021DDAB4
+
+ thumb_func_start MOD16_021DDB0C
+MOD16_021DDB0C: ; 0x021DDB0C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ add r4, r1, #0
+ sub r0, r0, #1
+ str r0, [r5, #0x18]
+ bmi _021DDB42
+ ldr r1, [r5, #0x1c]
+ add r0, r4, #0
+ bl MOD16_021DC684
+ cmp r0, #0
+ beq _021DDB3C
+ ldr r2, [r5, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DC678
+ mov r0, #1
+ str r0, [r4, #0x20]
+ ldr r0, _021DDB54 ; =0x0000068B
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_021DDB3C:
+ mov r0, #0
+ str r0, [r5, #0x18]
+ pop {r3, r4, r5, pc}
+_021DDB42:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DC4D4
+ mov r0, #0
+ str r0, [r5, #0x14]
+ str r0, [r4, #0x20]
+ pop {r3, r4, r5, pc}
+ nop
+_021DDB54: .word 0x0000068B
+ thumb_func_end MOD16_021DDB0C
+
+ thumb_func_start MOD16_021DDB58
+MOD16_021DDB58: ; 0x021DDB58
+ push {r3, r4, r5, lr}
+ ldr r2, _021DDC24 ; =0x021C48B8
+ add r4, r1, #0
+ ldr r3, [r2, #0x44]
+ add r5, r0, #0
+ mov r1, #0x40
+ add r0, r3, #0
+ tst r0, r1
+ beq _021DDB9A
+ add r0, r4, #0
+ sub r1, #0x41
+ bl MOD16_021DC684
+ cmp r0, #0
+ beq _021DDB8C
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #2
+ bl MOD16_021DC678
+ mov r0, #1
+ str r0, [r4, #0x20]
+ ldr r0, _021DDC28 ; =0x0000068B
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_021DDB8C:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DC4D4
+ mov r0, #0
+ str r0, [r4, #0x20]
+ pop {r3, r4, r5, pc}
+_021DDB9A:
+ mov r0, #0x80
+ tst r0, r3
+ beq _021DDBD0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021DC684
+ cmp r0, #0
+ beq _021DDBC2
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD16_021DC678
+ mov r0, #1
+ str r0, [r4, #0x20]
+ ldr r0, _021DDC28 ; =0x0000068B
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_021DDBC2:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DC4D4
+ mov r0, #0
+ str r0, [r4, #0x20]
+ pop {r3, r4, r5, pc}
+_021DDBD0:
+ ldr r1, [r2, #0x48]
+ mov r0, #0x20
+ tst r0, r1
+ beq _021DDBF2
+ mov r0, #1
+ str r0, [r5, #0x14]
+ mov r0, #5
+ str r0, [r5, #0x18]
+ sub r0, r0, #6
+ str r0, [r5, #0x1c]
+ mov r0, #2
+ str r0, [r5, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DC4E8
+ pop {r3, r4, r5, pc}
+_021DDBF2:
+ mov r0, #0x10
+ tst r0, r1
+ beq _021DDC0E
+ mov r1, #1
+ str r1, [r5, #0x14]
+ mov r0, #5
+ str r0, [r5, #0x18]
+ str r1, [r5, #0x1c]
+ str r1, [r5, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DC4E8
+ pop {r3, r4, r5, pc}
+_021DDC0E:
+ ldr r0, [r4, #0x20]
+ cmp r0, #1
+ bne _021DDC20
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DC4D4
+ mov r0, #0
+ str r0, [r4, #0x20]
+_021DDC20:
+ pop {r3, r4, r5, pc}
+ nop
+_021DDC24: .word 0x021C48B8
+_021DDC28: .word 0x0000068B
+ thumb_func_end MOD16_021DDB58
+
+ thumb_func_start MOD16_021DDC2C
+MOD16_021DDC2C: ; 0x021DDC2C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r2, [sp]
+ add r0, r2, #0
+ add r4, r1, #0
+ bl MOD16_021DDCA4
+ add r6, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021DDCEC
+ add r7, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021DDD14
+ str r6, [r5]
+ str r7, [r5, #4]
+ str r0, [r5, #0x20]
+ bl MOD16_021DDD90
+ str r0, [r5, #0x24]
+ ldr r0, _021DDC74 ; =MOD16_021DDD94
+ str r0, [r5, #8]
+ ldr r0, _021DDC78 ; =MOD16_021DDDDC
+ str r0, [r5, #0xc]
+ ldr r0, _021DDC7C ; =MOD16_021DDE28
+ str r0, [r5, #0x10]
+ ldr r0, _021DDC80 ; =MOD16_021DDE3C
+ str r0, [r5, #0x14]
+ ldr r0, _021DDC84 ; =MOD16_021DDECC
+ str r0, [r5, #0x18]
+ ldr r0, _021DDC88 ; =MOD16_021DDF60
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DDC74: .word MOD16_021DDD94
+_021DDC78: .word MOD16_021DDDDC
+_021DDC7C: .word MOD16_021DDE28
+_021DDC80: .word MOD16_021DDE3C
+_021DDC84: .word MOD16_021DDECC
+_021DDC88: .word MOD16_021DDF60
+ thumb_func_end MOD16_021DDC2C
+
+ thumb_func_start MOD16_021DDC8C
+MOD16_021DDC8C: ; 0x021DDC8C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021DDD50
+ ldr r0, [r4]
+ bl MOD16_021DDD64
+ ldr r0, [r4, #0x20]
+ bl MOD16_021DDD78
+ pop {r4, pc}
+ thumb_func_end MOD16_021DDC8C
+
+ thumb_func_start MOD16_021DDCA4
+MOD16_021DDCA4: ; 0x021DDCA4
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ mov r1, #0x28
+ add r5, r0, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DDCB8
+ bl ErrorHandling
+_021DDCB8:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x28
+ bl Call_FillMemWithValue
+ add r0, r6, #0
+ mov r1, #0
+ bl MOD16_021D7B5C
+ ldr r0, [r0]
+ mov r1, #0
+ str r0, [r4, #0x1c]
+ add r2, r4, #0
+ mov r0, #4
+_021DDCD4:
+ add r1, r1, #1
+ stmia r2!, {r0}
+ cmp r1, #7
+ blt _021DDCD4
+ add r0, r6, #0
+ bl MOD16_021D7AEC
+ str r0, [r4, #0x20]
+ str r5, [r4, #0x24]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DDCA4
+
+ thumb_func_start MOD16_021DDCEC
+MOD16_021DDCEC: ; 0x021DDCEC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DDCFE
+ bl ErrorHandling
+_021DDCFE:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DDCEC
+
+ thumb_func_start MOD16_021DDD14
+MOD16_021DDD14: ; 0x021DDD14
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ bl MOD16_021DDD90
+ add r7, r0, #0
+ mov r1, #0x14
+ mul r7, r1
+ add r0, r5, #0
+ add r1, r7, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DDD34
+ bl ErrorHandling
+_021DDD34:
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r7, #0
+ bl Call_FillMemWithValue
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ mov r3, #1
+ bl MOD16_021DAE94
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DDD14
+
+ thumb_func_start MOD16_021DDD50
+MOD16_021DDD50: ; 0x021DDD50
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DDD5A
+ bl ErrorHandling
+_021DDD5A:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DDD50
+
+ thumb_func_start MOD16_021DDD64
+MOD16_021DDD64: ; 0x021DDD64
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DDD6E
+ bl ErrorHandling
+_021DDD6E:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DDD64
+
+ thumb_func_start MOD16_021DDD78
+MOD16_021DDD78: ; 0x021DDD78
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DDD82
+ bl ErrorHandling
+_021DDD82:
+ add r0, r4, #0
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD16_021DDD78
+
+ thumb_func_start MOD16_021DDD90
+MOD16_021DDD90: ; 0x021DDD90
+ mov r0, #1
+ bx lr
+ thumb_func_end MOD16_021DDD90
+
+ thumb_func_start MOD16_021DDD94
+MOD16_021DDD94: ; 0x021DDD94
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r4, r1, #0
+ mov r1, #0x24
+ bl FUN_02016998
+ str r0, [r5, #8]
+ cmp r0, #0
+ bne _021DDDAC
+ bl ErrorHandling
+_021DDDAC:
+ ldr r0, [r5, #8]
+ mov r1, #0
+ mov r2, #0x24
+ bl Call_FillMemWithValue
+ ldr r1, _021DDDD8 ; =0x000004CD
+ ldr r0, [r5, #8]
+ add r2, r4, #0
+ str r1, [r0, #0x1c]
+ mov r1, #0
+ mov r0, #4
+_021DDDC2:
+ add r1, r1, #1
+ stmia r2!, {r0}
+ cmp r1, #7
+ blt _021DDDC2
+ ldr r0, [r5, #8]
+ ldr r2, [r5, #4]
+ add r1, r4, #0
+ bl MOD16_021DDFE0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DDDD8: .word 0x000004CD
+ thumb_func_end MOD16_021DDD94
+
+ thumb_func_start MOD16_021DDDDC
+MOD16_021DDDDC: ; 0x021DDDDC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r0, #0xc]
+ ldr r4, [r0, #8]
+ cmp r1, #1
+ bne _021DDDEC
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DDDEC:
+ ldr r0, [r0, #0x10]
+ cmp r0, #1
+ bne _021DDDF6
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021DDDF6:
+ ldr r2, [r5, #0x1c]
+ add r0, r4, #0
+ ldr r1, [r2, #0xc]
+ ldr r2, [r2, #8]
+ bl MOD16_021DE9B0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DE09C
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0, #0x20]
+ cmp r0, #0
+ bne _021DDE1C
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021DE824
+ b _021DDE22
+_021DDE1C:
+ mov r0, #0
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x10]
+_021DDE22:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DDDDC
+
+ thumb_func_start MOD16_021DDE28
+MOD16_021DDE28: ; 0x021DDE28
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD16_021DE0EC
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD16_021DDE28
+
+ thumb_func_start MOD16_021DDE3C
+MOD16_021DDE3C: ; 0x021DDE3C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r3, r0, #0
+ ldr r0, [r4, #8]
+ cmp r1, #4
+ bhi _021DDEC8
+ add r5, r1, r1
+ add r5, pc
+ ldrh r5, [r5, #6]
+ lsl r5, r5, #0x10
+ asr r5, r5, #0x10
+ add pc, r5
+_021DDE56: ; jump table
+ .short _021DDE60 - _021DDE56 - 2 ; case 0
+ .short _021DDE84 - _021DDE56 - 2 ; case 1
+ .short _021DDE94 - _021DDE56 - 2 ; case 2
+ .short _021DDEAE - _021DDE56 - 2 ; case 3
+ .short _021DDEC0 - _021DDE56 - 2 ; case 4
+_021DDE60:
+ ldr r0, [r4, #4]
+ mov r1, #0x3c
+ bl FUN_02016998
+ str r0, [r4, #8]
+ cmp r0, #0
+ bne _021DDE72
+ bl ErrorHandling
+_021DDE72:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0x3c
+ bl Call_FillMemWithValue
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDEC8
+_021DDE84:
+ add r1, r3, #0
+ ldr r3, [r4, #4]
+ bl MOD16_021DE1E0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDEC8
+_021DDE94:
+ mov r1, #0
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #4
+ sub r2, #0x10
+ mov r3, #0x3f
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDEC8
+_021DDEAE:
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021DDEC8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDEC8
+_021DDEC0:
+ add r0, r1, #1
+ str r0, [r4]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DDEC8:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DDE3C
+
+ thumb_func_start MOD16_021DDECC
+MOD16_021DDECC: ; 0x021DDECC
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, [r1, #8]
+ add r5, r2, #0
+ add r7, r0, #0
+ ldr r0, [r4]
+ ldr r1, [r5]
+ ldr r6, [r3, #8]
+ bl MOD16_021D7B98
+ ldr r0, [r4, #4]
+ ldr r1, [r5, #4]
+ bl MOD16_021D7B98
+ ldr r0, [r4, #8]
+ ldr r1, [r5, #8]
+ bl MOD16_021D7B98
+ ldr r0, [r4, #0x18]
+ ldr r1, [r5, #0xc]
+ bl MOD16_021D7B98
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r5, #0x10]
+ bl MOD16_021D7B98
+ mov r2, #5
+ str r2, [sp]
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ sub r2, #0x13
+ mov r3, #3
+ bl MOD16_021DEA24
+ mov r2, #5
+ str r2, [sp]
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0x10]
+ sub r2, #0x13
+ mov r3, #3
+ bl MOD16_021DEA24
+ mov r2, #5
+ str r2, [sp]
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0x14]
+ sub r2, #0x13
+ mov r3, #2
+ bl MOD16_021DEA24
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0, #0x20]
+ cmp r0, #0
+ bne _021DDF4E
+ mov r0, #0x83
+ ldr r1, [r6, #0xc]
+ lsl r0, r0, #2
+ bl FUN_0201BC84
+ add r2, r0, #0
+ ldr r3, [r6, #0x1c]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021DE8D0
+ b _021DDF5C
+_021DDF4E:
+ cmp r0, #1
+ bne _021DDF5C
+ add r0, r4, #0
+ add r1, r7, #0
+ add r2, r5, #0
+ bl MOD16_021DE93C
+_021DDF5C:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DDECC
+
+ thumb_func_start MOD16_021DDF60
+MOD16_021DDF60: ; 0x021DDF60
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r2, r0, #0
+ ldr r0, [r4, #8]
+ cmp r1, #4
+ bhi _021DDFD8
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DDF7C: ; jump table
+ .short _021DDF86 - _021DDF7C - 2 ; case 0
+ .short _021DDFA0 - _021DDF7C - 2 ; case 1
+ .short _021DDFB2 - _021DDF7C - 2 ; case 2
+ .short _021DDFC2 - _021DDF7C - 2 ; case 3
+ .short _021DDFD2 - _021DDF7C - 2 ; case 4
+_021DDF86:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ add r1, r0, #0
+ sub r1, #0x14
+ mov r2, #0
+ mov r3, #0x3f
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDFD8
+_021DDFA0:
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021DDFD8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDFD8
+_021DDFB2:
+ add r1, r2, #0
+ ldr r2, [r4, #4]
+ bl MOD16_021DE228
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDFD8
+_021DDFC2:
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDFD8
+_021DDFD2:
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, pc}
+_021DDFD8:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DDF60
+
+ thumb_func_start MOD16_021DDFE0
+MOD16_021DDFE0: ; 0x021DDFE0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r2, #0
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, r6, #0
+ mov r1, #0x1c
+ bl FUN_02016998
+ str r0, [r5, #8]
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r0, [r5, #8]
+ mov r1, #0x10
+ mov r2, #0x40
+ mov r3, #0
+ bl MOD16_021D7C98
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r0, [r5, #8]
+ mov r1, #0x40
+ add r0, r0, #4
+ mov r2, #0x70
+ mov r3, #0
+ bl MOD16_021D7C98
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r0, [r5, #8]
+ mov r1, #0x70
+ add r0, #8
+ mov r2, #0xc0
+ mov r3, #0
+ bl MOD16_021D7C98
+ mov r0, #0x84
+ str r0, [sp]
+ ldr r0, [r5, #8]
+ mov r1, #0x38
+ add r0, #0xc
+ mov r2, #0x48
+ mov r3, #0x74
+ bl MOD16_021D7C98
+ mov r0, #0x84
+ str r0, [sp]
+ ldr r0, [r5, #8]
+ mov r1, #0x8a
+ add r0, #0x10
+ mov r2, #0x9a
+ mov r3, #0x74
+ bl MOD16_021D7C98
+ ldr r0, [r5, #8]
+ mov r1, #0xfe
+ strb r1, [r0, #0x14]
+ ldr r0, [r5, #8]
+ mov r1, #0xf8
+ strb r1, [r0, #0x15]
+ ldr r0, [r5, #8]
+ mov r1, #0x68
+ strb r1, [r0, #0x16]
+ ldr r0, [r5, #8]
+ mov r2, #0x10
+ strb r1, [r0, #0x17]
+ mov r0, #0xb4
+ str r0, [sp]
+ ldr r0, [r5, #8]
+ mov r1, #0
+ add r0, #0x18
+ mov r3, #0x74
+ bl MOD16_021D7C98
+ add r0, r6, #0
+ mov r1, #8
+ bl FUN_02016998
+ add r3, r0, #0
+ str r5, [r3]
+ str r4, [r3, #4]
+ str r3, [r5, #4]
+ str r6, [sp]
+ ldr r0, [r5, #8]
+ ldr r2, _021DE098 ; =MOD16_021DE108
+ mov r1, #7
+ bl FUN_020220C4
+ str r0, [r5]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021DE098: .word MOD16_021DE108
+ thumb_func_end MOD16_021DDFE0
+
+ thumb_func_start MOD16_021DE09C
+MOD16_021DE09C: ; 0x021DE09C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #0
+ add r2, r4, #0
+ mov r0, #4
+_021DE0A8:
+ add r1, r1, #1
+ stmia r2!, {r0}
+ cmp r1, #7
+ blt _021DE0A8
+ add r0, r4, #0
+ bl MOD16_021DEA34
+ ldr r0, [r5]
+ bl FUN_02022144
+ ldr r1, [r4, #0x1c]
+ add r0, r5, #0
+ ldr r1, [r1, #4]
+ bl MOD16_021DEA5C
+ cmp r0, #0
+ bne _021DE0CE
+ mov r0, #0
+ str r0, [r5, #0xc]
+_021DE0CE:
+ ldr r0, [r4, #0x14]
+ cmp r0, #4
+ ldr r0, [r5, #0x1c]
+ beq _021DE0E0
+ ldr r1, [r5, #0xc]
+ bl MOD16_021DEAFC
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, pc}
+_021DE0E0:
+ mov r1, #0
+ bl MOD16_021DEAFC
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DE09C
+
+ thumb_func_start MOD16_021DE0EC
+MOD16_021DE0EC: ; 0x021DE0EC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0202212C
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ pop {r4, pc}
+ thumb_func_end MOD16_021DE0EC
+
+ thumb_func_start MOD16_021DE108
+MOD16_021DE108: ; 0x021DE108
+ push {r4, r5, r6, lr}
+ ldr r5, [r2, #4]
+ add r6, r0, #0
+ ldr r0, [r5, #0x1c]
+ ldr r4, [r2]
+ ldr r0, [r0, #4]
+ lsl r2, r6, #2
+ str r1, [r5, r2]
+ cmp r1, #0
+ beq _021DE122
+ cmp r1, #2
+ beq _021DE12E
+ b _021DE1D6
+_021DE122:
+ ldr r0, _021DE1DC ; =0x021C48F8
+ ldrh r1, [r0, #0x1c]
+ str r1, [r4, #0x14]
+ ldrh r0, [r0, #0x1e]
+ str r0, [r4, #0x18]
+ pop {r4, r5, r6, pc}
+_021DE12E:
+ cmp r6, #6
+ bhi _021DE1A2
+ add r1, r6, r6
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DE13E: ; jump table
+ .short _021DE14C - _021DE13E - 2 ; case 0
+ .short _021DE154 - _021DE13E - 2 ; case 1
+ .short _021DE15C - _021DE13E - 2 ; case 2
+ .short _021DE164 - _021DE13E - 2 ; case 3
+ .short _021DE174 - _021DE13E - 2 ; case 4
+ .short _021DE1A2 - _021DE13E - 2 ; case 5
+ .short _021DE18A - _021DE13E - 2 ; case 6
+_021DE14C:
+ ldr r0, [r5, #0x1c]
+ mov r1, #1
+ str r1, [r0, #0x34]
+ b _021DE1A2
+_021DE154:
+ ldr r0, [r5, #0x1c]
+ mov r1, #1
+ str r1, [r0, #0x30]
+ b _021DE1A2
+_021DE15C:
+ ldr r0, [r5, #0x1c]
+ mov r1, #1
+ str r1, [r0, #0x2c]
+ b _021DE1A2
+_021DE164:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ bne _021DE1A2
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD16_021DEAB8
+ b _021DE1A2
+_021DE174:
+ ldr r1, [r4, #0x20]
+ cmp r1, #0
+ bne _021DE1A2
+ bl MOD16_021D9D94
+ add r1, r0, #0
+ add r0, r5, #0
+ sub r1, r1, #1
+ bl MOD16_021DEAB8
+ b _021DE1A2
+_021DE18A:
+ ldr r0, [r5, #0x1c]
+ mov r1, #0x5d
+ ldr r2, [r0, #4]
+ lsl r1, r1, #6
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ bne _021DE19E
+ mov r1, #1
+ str r1, [r0, #0x28]
+ b _021DE1A2
+_021DE19E:
+ mov r1, #1
+ str r1, [r0, #0x24]
+_021DE1A2:
+ cmp r6, #5
+ bne _021DE1D0
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0, #0x20]
+ cmp r0, #0
+ bne _021DE1C6
+ add r0, r4, #0
+ bl MOD16_021DE8A0
+ ldr r1, [r4, #0xc]
+ cmp r1, #0x10
+ bgt _021DE1C6
+ mov r0, #0xf
+ mvn r0, r0
+ cmp r1, r0
+ blt _021DE1C6
+ mov r0, #0
+ str r0, [r4, #0xc]
+_021DE1C6:
+ ldr r0, _021DE1DC ; =0x021C48F8
+ ldrh r1, [r0, #0x1c]
+ str r1, [r4, #0x14]
+ ldrh r0, [r0, #0x1e]
+ str r0, [r4, #0x18]
+_021DE1D0:
+ mov r0, #1
+ str r0, [r4, #0x20]
+ pop {r4, r5, r6, pc}
+_021DE1D6:
+ mov r0, #0
+ str r0, [r4, #0x20]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DE1DC: .word 0x021C48F8
+ thumb_func_end MOD16_021DE108
+
+ thumb_func_start MOD16_021DE1E0
+MOD16_021DE1E0: ; 0x021DE1E0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD16_021DE254
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021DE788
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl MOD16_021DE308
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD16_021DE3FC
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD16_021DE594
+ mov r0, #7
+ mov r1, #3
+ bl FUN_020178BC
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DE1E0
+
+ thumb_func_start MOD16_021DE228
+MOD16_021DE228: ; 0x021DE228
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ bl MOD16_021DE768
+ add r0, r5, #0
+ bl MOD16_021DE568
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DE3B8
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021DE808
+ mov r0, #7
+ mov r1, #1
+ bl FUN_020178BC
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021DE228
+
+ thumb_func_start MOD16_021DE254
+MOD16_021DE254: ; 0x021DE254
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r7, r1, #0
+ ldr r6, [r0]
+ mov r1, #0
+ add r4, r2, #0
+ str r1, [sp]
+ str r4, [sp, #4]
+ mov r2, #4
+ add r3, r1, #0
+ bl MOD16_021D8CFC
+ ldr r0, [r7, #0x1c]
+ mov r1, #0x5d
+ ldr r0, [r0, #4]
+ lsl r1, r1, #6
+ ldr r1, [r0, r1]
+ cmp r1, #1
+ bne _021DE292
+ mov r0, #0x20
+ str r0, [sp]
+ str r4, [sp, #4]
+ ldr r0, [r5]
+ mov r1, #1
+ mov r2, #4
+ mov r3, #0x60
+ bl MOD16_021D8CFC
+ b _021DE2AC
+_021DE292:
+ bl MOD16_021D9D04
+ cmp r0, #1
+ bne _021DE2AC
+ mov r0, #0x20
+ str r0, [sp]
+ str r4, [sp, #4]
+ ldr r0, [r5]
+ mov r1, #0x19
+ mov r2, #4
+ mov r3, #0x60
+ bl MOD16_021D8CFC
+_021DE2AC:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ str r4, [sp, #0xc]
+ ldr r0, [r5]
+ mov r1, #0x1d
+ add r2, r6, #0
+ mov r3, #6
+ bl MOD16_021D8CB4
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x29
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r4, r0, #0
+ ldrh r0, [r2]
+ mov r1, #6
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ add r0, r6, #0
+ bl FUN_02018148
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r6, #0
+ mov r1, #6
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DE254
+
+ thumb_func_start MOD16_021DE308
+MOD16_021DE308: ; 0x021DE308
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021DE3A8 ; =0x0000043C
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ mov r2, #0x54
+ mov r3, #1
+ bl FUN_020091E0
+ str r0, [r5, #0x2c]
+ bl FUN_02009B04
+ ldr r0, [r5, #0x2c]
+ bl FUN_02009474
+ ldr r0, _021DE3AC ; =0x000003EB
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0xc
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #3
+ mov r3, #0
+ bl FUN_02009298
+ str r0, [r5, #0x30]
+ bl FUN_02009D68
+ ldr r0, [r5, #0x30]
+ bl FUN_02009474
+ ldr r0, _021DE3B0 ; =0x0000043A
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x52
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x34]
+ ldr r0, _021DE3B4 ; =0x0000043B
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x53
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x38]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DE3A8: .word 0x0000043C
+_021DE3AC: .word 0x000003EB
+_021DE3B0: .word 0x0000043A
+_021DE3B4: .word 0x0000043B
+ thumb_func_end MOD16_021DE308
+
+ thumb_func_start MOD16_021DE3B8
+MOD16_021DE3B8: ; 0x021DE3B8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x2c]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ ldr r0, [r5, #0x30]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x2c]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x30]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x34]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x38]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DE3B8
+
+ thumb_func_start MOD16_021DE3FC
+MOD16_021DE3FC: ; 0x021DE3FC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x70
+ add r7, r3, #0
+ add r5, r0, #0
+ mov r0, #0
+ ldr r4, [r1]
+ ldr r3, _021DE564 ; =0x0000043B
+ add r6, r2, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ mov r0, #5
+ str r2, [sp, #0x10]
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ str r1, [sp, #0x14]
+ add r1, r0, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #0x18]
+ add r1, r0, #0
+ add r1, #8
+ ldr r1, [r4, r1]
+ add r0, #0xc
+ str r1, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r1, r3, #1
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r2, r3, #0
+ add r0, sp, #0x4c
+ sub r2, #0x50
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xa
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #8
+ str r0, [sp, #0x40]
+ mov r0, #2
+ str r0, [sp, #0x44]
+ mov r0, #3
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x34]
+ lsl r1, r1, #0xe
+ lsl r0, r0, #2
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ str r7, [sp, #0x48]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ str r0, [r5]
+ mov r1, #2
+ bl FUN_02020130
+ ldr r0, [r6, #0x1c]
+ ldr r1, [r0, #4]
+ mov r0, #0x5d
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ cmp r0, #1
+ bne _021DE494
+ ldr r0, [r5]
+ mov r1, #0
+ bl FUN_020200A0
+_021DE494:
+ mov r0, #3
+ lsl r0, r0, #0x10
+ mov r1, #0x16
+ str r0, [sp, #0x34]
+ lsl r1, r1, #0xe
+ lsl r0, r0, #2
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ str r0, [r5, #4]
+ mov r1, #0
+ bl FUN_02020130
+ ldr r0, [r6, #0x1c]
+ mov r1, #1
+ ldr r0, [r0, #4]
+ bl MOD16_021D9CD0
+ cmp r0, #0
+ beq _021DE4D0
+ ldr r0, [r6, #0x1c]
+ ldr r1, [r0, #4]
+ mov r0, #0x5d
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ cmp r0, #1
+ bne _021DE4D8
+_021DE4D0:
+ ldr r0, [r5, #4]
+ mov r1, #0
+ bl FUN_020200A0
+_021DE4D8:
+ mov r0, #3
+ lsl r0, r0, #0x10
+ mov r1, #0x26
+ str r0, [sp, #0x34]
+ lsl r1, r1, #0xe
+ lsl r0, r0, #2
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ mov r1, #1
+ str r0, [r5, #8]
+ bl FUN_02020130
+ mov r0, #0x1f
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ mov r1, #1
+ mov r0, #3
+ lsl r1, r1, #0x12
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ mov r1, #3
+ str r0, [r5, #0x18]
+ bl FUN_02020130
+ mov r0, #0x1f
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ mov r1, #0x92
+ mov r0, #3
+ lsl r1, r1, #0xc
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ mov r1, #4
+ str r0, [r5, #0x1c]
+ bl FUN_02020130
+ mov r0, #0x1f
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ mov r1, #2
+ mov r0, #3
+ lsl r1, r1, #0xe
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ mov r1, #5
+ str r0, [r5, #0x20]
+ bl FUN_02020130
+ add sp, #0x70
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DE564: .word 0x0000043B
+ thumb_func_end MOD16_021DE3FC
+
+ thumb_func_start MOD16_021DE568
+MOD16_021DE568: ; 0x021DE568
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #4]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #8]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #0x18]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #0x1c]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #0x20]
+ bl FUN_0201FFC8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DE568
+
+ thumb_func_start MOD16_021DE594
+MOD16_021DE594: ; 0x021DE594
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r6, r2, #0
+ add r7, r3, #0
+ ldr r4, [r1]
+ cmp r0, #0
+ bne _021DE5AA
+ bl ErrorHandling
+_021DE5AA:
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, _021DE760 ; =0x000003EB
+ bl FUN_020094F0
+ mov r1, #0x15
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #0x18]
+ mov r1, #0
+ bl FUN_02009E54
+ mov r1, #0x27
+ mvn r1, r1
+ str r1, [sp, #0x28]
+ add r1, #0x1a
+ str r1, [sp, #0x2c]
+ mov r1, #0
+ str r1, [sp, #0x30]
+ str r1, [sp, #0x34]
+ mov r1, #2
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x38]
+ str r7, [sp, #0x3c]
+ bl FUN_0201E28C
+ add r7, r0, #0
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0xa
+ mov r2, #4
+ bl MOD16_021DB388
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0x10]
+ ldr r2, _021DE764 ; =0x00000266
+ mov r3, #7
+ bl MOD16_021DB3C8
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #0x1c]
+ ldr r0, [r5]
+ str r0, [sp, #0x24]
+ add r0, sp, #0x18
+ bl MOD16_021DB2BC
+ str r0, [r5, #0xc]
+ ldr r0, [r0]
+ add r1, r7, #3
+ bl FUN_02011A60
+ ldr r0, [r6, #0x1c]
+ ldr r1, [r0, #4]
+ mov r0, #0x5d
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ cmp r0, #1
+ bne _021DE638
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_020119D0
+_021DE638:
+ ldr r0, [sp, #0x10]
+ bl MOD16_021DB3BC
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0xa
+ mov r2, #4
+ bl MOD16_021DB388
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #8]
+ ldr r2, _021DE764 ; =0x00000266
+ mov r3, #5
+ bl MOD16_021DB3C8
+ ldr r0, [sp, #8]
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, #4]
+ str r0, [sp, #0x24]
+ add r0, sp, #0x18
+ bl MOD16_021DB2BC
+ str r0, [r5, #0x10]
+ ldr r0, [r0]
+ add r1, r7, #3
+ bl FUN_02011A60
+ ldr r0, [r6, #0x1c]
+ mov r1, #1
+ ldr r0, [r0, #4]
+ bl MOD16_021D9CD0
+ cmp r0, #0
+ beq _021DE698
+ ldr r0, [r6, #0x1c]
+ ldr r1, [r0, #4]
+ mov r0, #0x5d
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ cmp r0, #1
+ bne _021DE6A2
+_021DE698:
+ ldr r0, [r5, #0x10]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_020119D0
+_021DE6A2:
+ ldr r0, [sp, #8]
+ bl MOD16_021DB3BC
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0xa
+ mov r2, #4
+ bl MOD16_021DB388
+ str r0, [sp, #0x14]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0x14]
+ ldr r2, _021DE764 ; =0x00000266
+ mov r3, #0x1d
+ bl MOD16_021DB3C8
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, #8]
+ str r0, [sp, #0x24]
+ add r0, sp, #0x18
+ bl MOD16_021DB2BC
+ str r0, [r5, #0x14]
+ ldr r0, [r0]
+ add r1, r7, #2
+ bl FUN_02011A60
+ ldr r0, [sp, #0x14]
+ bl MOD16_021DB3BC
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0xe
+ mov r2, #2
+ bl MOD16_021DB388
+ str r0, [sp, #0xc]
+ ldr r0, [r6, #0x1c]
+ ldr r2, _021DE764 ; =0x00000266
+ ldr r1, [r0, #4]
+ mov r0, #0x5d
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ bne _021DE722
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0xc]
+ mov r3, #0x6a
+ bl MOD16_021DB3C8
+ b _021DE736
+_021DE722:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r1, [sp, #0xc]
+ mov r3, #0x6b
+ bl MOD16_021DB3C8
+_021DE736:
+ ldr r0, [sp, #0xc]
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0x24]
+ mov r0, #0xa
+ str r0, [sp, #0x28]
+ sub r0, #0x12
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x18
+ bl MOD16_021DB2BC
+ str r0, [r5, #0x24]
+ ldr r0, [r0]
+ add r1, r7, #1
+ bl FUN_02011A60
+ ldr r0, [sp, #0xc]
+ bl MOD16_021DB3BC
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DE760: .word 0x000003EB
+_021DE764: .word 0x00000266
+ thumb_func_end MOD16_021DE594
+
+ thumb_func_start MOD16_021DE768
+MOD16_021DE768: ; 0x021DE768
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD16_021DB338
+ ldr r0, [r4, #0x10]
+ bl MOD16_021DB338
+ ldr r0, [r4, #0x14]
+ bl MOD16_021DB338
+ ldr r0, [r4, #0x24]
+ bl MOD16_021DB338
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DE768
+
+ thumb_func_start MOD16_021DE788
+MOD16_021DE788: ; 0x021DE788
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r6, r1, #0
+ ldr r4, [r0]
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r6, [sp, #0xc]
+ mov r1, #0x1b
+ add r2, r4, #0
+ mov r3, #7
+ bl MOD16_021D8CB4
+ str r6, [sp]
+ ldr r0, [r5]
+ mov r1, #0x25
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r5, r0, #0
+ ldrh r0, [r2]
+ mov r1, #7
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ add r0, r4, #0
+ bl FUN_02018148
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ mov r1, #7
+ bl FUN_0201AC68
+ mov r2, #0
+ add r3, r2, #0
+ add r0, r4, #0
+ mov r1, #7
+ sub r3, #0x78
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #3
+ mov r3, #0
+ bl FUN_020179E0
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DE788
+
+ thumb_func_start MOD16_021DE808
+MOD16_021DE808: ; 0x021DE808
+ push {r4, lr}
+ ldr r0, [r0]
+ add r3, r1, #0
+ ldr r4, [r0]
+ mov r0, #7
+ mov r1, #0x40
+ mov r2, #0
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #7
+ bl FUN_02018744
+ pop {r4, pc}
+ thumb_func_end MOD16_021DE808
+
+ thumb_func_start MOD16_021DE824
+MOD16_021DE824: ; 0x021DE824
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r2, [r4, #0x1c]
+ add r5, r0, #0
+ ldr r3, [r2, #0xc]
+ ldr r1, [r2, #4]
+ cmp r3, #0
+ bgt _021DE860
+ ldr r3, [r5, #0x10]
+ cmp r3, #0
+ beq _021DE85C
+ bl MOD16_021DEA84
+ cmp r0, #0
+ bne _021DE84C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DEAAC
+ b _021DE860
+_021DE84C:
+ mov r1, #0xa
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #6
+ str r1, [r0, #0xc]
+ ldr r0, _021DE89C ; =0x0000068B
+ bl FUN_020054C8
+ b _021DE860
+_021DE85C:
+ mov r0, #0
+ str r0, [r2, #8]
+_021DE860:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0
+ bge _021DE86E
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ str r1, [r0, #8]
+ b _021DE876
+_021DE86E:
+ ble _021DE876
+ ldr r0, [r4, #0x1c]
+ mov r1, #2
+ str r1, [r0, #8]
+_021DE876:
+ ldr r2, [r4, #0x1c]
+ ldr r0, [r2, #8]
+ cmp r0, #0
+ beq _021DE898
+ ldr r1, [r5, #0x10]
+ cmp r1, #0
+ bge _021DE886
+ neg r1, r1
+_021DE886:
+ ldr r0, [r2, #0xc]
+ sub r0, r0, r1
+ str r0, [r2, #0xc]
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r1, #0xc]
+ cmp r0, #0
+ bge _021DE898
+ mov r0, #0
+ str r0, [r1, #0xc]
+_021DE898:
+ pop {r3, r4, r5, pc}
+ nop
+_021DE89C: .word 0x0000068B
+ thumb_func_end MOD16_021DE824
+
+ thumb_func_start MOD16_021DE8A0
+MOD16_021DE8A0: ; 0x021DE8A0
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mov r0, #0x83
+ lsl r0, r0, #2
+ str r0, [sp]
+ ldr r3, _021DE8CC ; =0x021C48F8
+ ldr r0, [r4, #0x14]
+ ldrh r2, [r3, #0x1c]
+ ldrh r3, [r3, #0x1e]
+ ldr r1, [r4, #0x18]
+ sub r0, #0xf8
+ sub r1, #0x68
+ sub r2, #0xf8
+ sub r3, #0x68
+ bl FUN_0201BBD0
+ mov r1, #0xa
+ mul r1, r0
+ str r1, [r4, #0xc]
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021DE8CC: .word 0x021C48F8
+ thumb_func_end MOD16_021DE8A0
+
+ thumb_func_start MOD16_021DE8D0
+MOD16_021DE8D0: ; 0x021DE8D0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ lsl r0, r2, #0xc
+ add r4, r1, #0
+ asr r6, r3, #0x1f
+ add r2, r3, #0
+ asr r1, r0, #0x1f
+ add r3, r6, #0
+ bl _ll_mul
+ mov r3, #2
+ mov r6, #0
+ lsl r3, r3, #0xa
+ add r3, r0, r3
+ adc r1, r6
+ lsl r0, r1, #0x14
+ lsr r1, r3, #0xc
+ orr r1, r0
+ asr r0, r1, #0xc
+ ldrh r2, [r5, #0x28]
+ mov r1, #0xb6
+ add r0, r2, r0
+ strh r0, [r5, #0x28]
+ ldrh r0, [r5, #0x28]
+ strh r0, [r5, #0x28]
+ bl _s32_div_f
+ add r3, r0, #0
+ ldr r0, [r4]
+ lsl r3, r3, #0x10
+ ldr r0, [r0]
+ mov r1, #7
+ add r2, r6, #0
+ lsr r3, r3, #0x10
+ bl FUN_0201AF08
+ ldr r0, [r4]
+ mov r1, #7
+ ldr r0, [r0]
+ mov r2, #9
+ mov r3, #0x80
+ bl FUN_0201AF50
+ ldr r0, [r4]
+ mov r1, #7
+ ldr r0, [r0]
+ mov r2, #0xc
+ mov r3, #0x68
+ bl FUN_0201AF50
+ ldrh r0, [r5, #0x28]
+ strh r0, [r5, #0x2a]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DE8D0
+
+ thumb_func_start MOD16_021DE93C
+MOD16_021DE93C: ; 0x021DE93C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r2, #0
+ ldr r6, [r7, #0x1c]
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r1, #0xa
+ ldr r0, [r6, #0xc]
+ lsl r1, r1, #6
+ sub r2, r1, r0
+ ldr r0, _021DE9AC ; =0x000011C7
+ mul r0, r2
+ bl _s32_div_f
+ ldr r1, [r6, #8]
+ cmp r1, #1
+ bne _021DE95E
+ neg r0, r0
+_021DE95E:
+ ldrh r1, [r5, #0x2a]
+ add r0, r1, r0
+ strh r0, [r5, #0x28]
+ ldrh r0, [r5, #0x28]
+ mov r1, #0xb6
+ strh r0, [r5, #0x28]
+ bl _s32_div_f
+ add r3, r0, #0
+ ldr r0, [r4]
+ lsl r3, r3, #0x10
+ ldr r0, [r0]
+ mov r1, #7
+ mov r2, #0
+ lsr r3, r3, #0x10
+ bl FUN_0201AF08
+ ldr r0, [r4]
+ mov r1, #7
+ ldr r0, [r0]
+ mov r2, #9
+ mov r3, #0x80
+ bl FUN_0201AF50
+ ldr r0, [r4]
+ mov r1, #7
+ ldr r0, [r0]
+ mov r2, #0xc
+ mov r3, #0x68
+ bl FUN_0201AF50
+ ldr r0, [r7, #0x1c]
+ ldr r0, [r0, #0xc]
+ cmp r0, #0
+ bne _021DE9A8
+ ldrh r0, [r5, #0x28]
+ strh r0, [r5, #0x2a]
+_021DE9A8:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DE9AC: .word 0x000011C7
+ thumb_func_end MOD16_021DE93C
+
+ thumb_func_start MOD16_021DE9B0
+MOD16_021DE9B0: ; 0x021DE9B0
+ push {r3, r4}
+ ldr r3, [r0, #0xc]
+ cmp r3, #0
+ ble _021DE9C8
+ sub r3, r3, #2
+ cmp r3, #4
+ blt _021DE9C2
+ str r3, [r0, #0xc]
+ b _021DE9D8
+_021DE9C2:
+ mov r3, #4
+ str r3, [r0, #0xc]
+ b _021DE9D8
+_021DE9C8:
+ add r4, r3, #2
+ mov r3, #3
+ mvn r3, r3
+ cmp r4, r3
+ bgt _021DE9D6
+ str r4, [r0, #0xc]
+ b _021DE9D8
+_021DE9D6:
+ str r3, [r0, #0xc]
+_021DE9D8:
+ ldr r3, [r0, #0xc]
+ str r3, [r0, #0x10]
+ ldr r4, [r0, #0xc]
+ cmp r4, #0x21
+ bgt _021DEA1A
+ mov r3, #0x20
+ mvn r3, r3
+ cmp r4, r3
+ blt _021DEA1A
+ cmp r1, #0
+ bne _021DEA08
+ mov r3, #0
+ str r3, [r0, #0x10]
+ ldr r2, [r0, #0xc]
+ cmp r2, #4
+ bgt _021DEA1A
+ sub r1, r3, #4
+ cmp r2, r1
+ blt _021DEA1A
+ ldr r1, _021DEA20 ; =0x000004CD
+ str r3, [r0, #0xc]
+ str r1, [r0, #0x1c]
+ pop {r3, r4}
+ bx lr
+_021DEA08:
+ cmp r2, #1
+ bne _021DEA14
+ str r3, [r0, #0x10]
+ str r3, [r0, #0xc]
+ pop {r3, r4}
+ bx lr
+_021DEA14:
+ mov r1, #0x21
+ str r1, [r0, #0x10]
+ str r1, [r0, #0xc]
+_021DEA1A:
+ pop {r3, r4}
+ bx lr
+ nop
+_021DEA20: .word 0x000004CD
+ thumb_func_end MOD16_021DE9B0
+
+ thumb_func_start MOD16_021DEA24
+MOD16_021DEA24: ; 0x021DEA24
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r4, [sp, #0x10]
+ str r4, [sp]
+ bl MOD16_021D7C70
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD16_021DEA24
+
+ thumb_func_start MOD16_021DEA34
+MOD16_021DEA34: ; 0x021DEA34
+ ldr r2, [r0, #0x1c]
+ ldr r1, [r2, #0x2c]
+ cmp r1, #0
+ beq _021DEA42
+ mov r1, #2
+ str r1, [r0, #8]
+ bx lr
+_021DEA42:
+ ldr r1, [r2, #0x34]
+ cmp r1, #0
+ beq _021DEA4E
+ mov r1, #2
+ str r1, [r0]
+ bx lr
+_021DEA4E:
+ ldr r1, [r2, #0x30]
+ cmp r1, #0
+ beq _021DEA58
+ mov r1, #2
+ str r1, [r0, #4]
+_021DEA58:
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DEA34
+
+ thumb_func_start MOD16_021DEA5C
+MOD16_021DEA5C: ; 0x021DEA5C
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ cmp r0, #0
+ beq _021DEA7E
+ bge _021DEA6A
+ mov r2, #1
+ b _021DEA6E
+_021DEA6A:
+ mov r2, #0
+ mvn r2, r2
+_021DEA6E:
+ add r0, r1, #0
+ add r1, r2, #0
+ bl MOD16_021D9EA8
+ cmp r0, #0
+ bne _021DEA7E
+ mov r0, #0
+ pop {r3, pc}
+_021DEA7E:
+ mov r0, #1
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DEA5C
+
+ thumb_func_start MOD16_021DEA84
+MOD16_021DEA84: ; 0x021DEA84
+ push {r3, lr}
+ ldr r0, [r0, #0x10]
+ cmp r0, #0
+ beq _021DEAA6
+ bge _021DEA92
+ mov r2, #1
+ b _021DEA96
+_021DEA92:
+ mov r2, #0
+ mvn r2, r2
+_021DEA96:
+ add r0, r1, #0
+ add r1, r2, #0
+ bl MOD16_021D9E70
+ cmp r0, #0
+ bne _021DEAA6
+ mov r0, #0
+ pop {r3, pc}
+_021DEAA6:
+ mov r0, #1
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DEA84
+
+ thumb_func_start MOD16_021DEAAC
+MOD16_021DEAAC: ; 0x021DEAAC
+ mov r2, #0
+ str r2, [r0, #0x10]
+ str r2, [r0, #0xc]
+ ldr r0, [r1, #0x1c]
+ str r2, [r0, #8]
+ bx lr
+ thumb_func_end MOD16_021DEAAC
+
+ thumb_func_start MOD16_021DEAB8
+MOD16_021DEAB8: ; 0x021DEAB8
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x1c]
+ add r5, r1, #0
+ bl MOD16_021DC0E4
+ cmp r0, #0
+ beq _021DEAF8
+ ldr r0, [r4, #0x1c]
+ add r1, r5, #0
+ ldr r0, [r0, #4]
+ bl MOD16_021D9D28
+ ldr r1, [r4, #0x20]
+ mov r2, #1
+ ldr r0, [r1]
+ mov r3, #2
+ orr r0, r2
+ str r0, [r1]
+ ldr r1, [r4, #0x1c]
+ mov r0, #0
+ str r0, [r1, #0xc]
+ ldr r1, [r4, #0x1c]
+ str r3, [r1, #0x20]
+ ldr r1, [r4, #0x1c]
+ str r2, [r1, #0x10]
+ ldr r1, [r4, #0x1c]
+ str r0, [r1, #0x14]
+ ldr r1, [r4, #0x1c]
+ str r0, [r1, #8]
+ ldr r1, [r4, #0x1c]
+ str r0, [r1, #0x1c]
+_021DEAF8:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DEAB8
+
+ thumb_func_start MOD16_021DEAFC
+MOD16_021DEAFC: ; 0x021DEAFC
+ cmp r1, #0
+ bge _021DEB02
+ neg r1, r1
+_021DEB02:
+ cmp r1, #0x40
+ bge _021DEB14
+ add r2, r0, #0
+ ldr r1, _021DEB24 ; =0x000004CD
+ sub r2, #0x29
+ cmp r2, r1
+ blt _021DEB22
+ sub r0, #0x29
+ bx lr
+_021DEB14:
+ ldr r1, _021DEB28 ; =0x00000333
+ add r2, r0, r1
+ mov r1, #1
+ lsl r1, r1, #0xc
+ cmp r2, r1
+ bgt _021DEB22
+ add r0, r2, #0
+_021DEB22:
+ bx lr
+ .align 2, 0
+_021DEB24: .word 0x000004CD
+_021DEB28: .word 0x00000333
+ thumb_func_end MOD16_021DEAFC
+
+ thumb_func_start MOD16_021DEB2C
+MOD16_021DEB2C: ; 0x021DEB2C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r2, [sp]
+ add r0, r2, #0
+ add r4, r1, #0
+ bl MOD16_021DEC64
+ add r6, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021DECA0
+ add r7, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021DECC8
+ str r6, [r5]
+ str r7, [r5, #4]
+ str r0, [r5, #0x20]
+ bl MOD16_021DED44
+ str r0, [r5, #0x24]
+ ldr r0, _021DEB74 ; =MOD16_021DED48
+ str r0, [r5, #8]
+ ldr r0, _021DEB78 ; =MOD16_021DED80
+ str r0, [r5, #0xc]
+ ldr r0, _021DEB7C ; =MOD16_021DEEA4
+ str r0, [r5, #0x10]
+ ldr r0, _021DEB80 ; =MOD16_021DEEB8
+ str r0, [r5, #0x14]
+ ldr r0, _021DEB84 ; =MOD16_021DEF34
+ str r0, [r5, #0x18]
+ ldr r0, _021DEB88 ; =MOD16_021DEF70
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DEB74: .word MOD16_021DED48
+_021DEB78: .word MOD16_021DED80
+_021DEB7C: .word MOD16_021DEEA4
+_021DEB80: .word MOD16_021DEEB8
+_021DEB84: .word MOD16_021DEF34
+_021DEB88: .word MOD16_021DEF70
+ thumb_func_end MOD16_021DEB2C
+
+ thumb_func_start MOD16_021DEB8C
+MOD16_021DEB8C: ; 0x021DEB8C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021DED04
+ ldr r0, [r4, #4]
+ bl MOD16_021DED18
+ ldr r0, [r4, #0x20]
+ bl MOD16_021DED2C
+ pop {r4, pc}
+ thumb_func_end MOD16_021DEB8C
+
+ thumb_func_start MOD16_021DEBA4
+MOD16_021DEBA4: ; 0x021DEBA4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r0]
+ cmp r5, #4
+ blt _021DEBB2
+ bl ErrorHandling
+_021DEBB2:
+ str r5, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DEBA4
+
+ thumb_func_start MOD16_021DEBB8
+MOD16_021DEBB8: ; 0x021DEBB8
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DEBB8
+
+ thumb_func_start MOD16_021DEBC0
+MOD16_021DEBC0: ; 0x021DEBC0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r0]
+ cmp r5, #6
+ blt _021DEBCE
+ bl ErrorHandling
+_021DEBCE:
+ str r5, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DEBC0
+
+ thumb_func_start MOD16_021DEBD4
+MOD16_021DEBD4: ; 0x021DEBD4
+ ldr r0, [r0]
+ ldr r0, [r0, #0x10]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DEBD4
+
+ thumb_func_start MOD16_021DEBDC
+MOD16_021DEBDC: ; 0x021DEBDC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r0]
+ cmp r5, #0xa
+ blt _021DEBEA
+ bl ErrorHandling
+_021DEBEA:
+ str r5, [r4, #0x14]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DEBDC
+
+ thumb_func_start MOD16_021DEBF0
+MOD16_021DEBF0: ; 0x021DEBF0
+ ldr r0, [r0]
+ ldr r0, [r0, #0x14]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DEBF0
+
+ thumb_func_start MOD16_021DEBF8
+MOD16_021DEBF8: ; 0x021DEBF8
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r2, #0
+ ldr r4, [r0]
+ cmp r5, #0x12
+ blt _021DEC08
+ bl ErrorHandling
+_021DEC08:
+ cmp r6, #0
+ bne _021DEC10
+ str r5, [r4, #0x18]
+ pop {r4, r5, r6, pc}
+_021DEC10:
+ str r5, [r4, #0x1c]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021DEBF8
+
+ thumb_func_start MOD16_021DEC14
+MOD16_021DEC14: ; 0x021DEC14
+ ldr r0, [r0]
+ cmp r1, #0
+ bne _021DEC1E
+ ldr r0, [r0, #0x18]
+ bx lr
+_021DEC1E:
+ ldr r0, [r0, #0x1c]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DEC14
+
+ thumb_func_start MOD16_021DEC24
+MOD16_021DEC24: ; 0x021DEC24
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r0]
+ cmp r5, #0xf
+ blt _021DEC32
+ bl ErrorHandling
+_021DEC32:
+ str r5, [r4, #0x20]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DEC24
+
+ thumb_func_start MOD16_021DEC38
+MOD16_021DEC38: ; 0x021DEC38
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DEC38
+
+ thumb_func_start MOD16_021DEC40
+MOD16_021DEC40: ; 0x021DEC40
+ ldr r2, [r0]
+ mov r0, #1
+ str r0, [r2, #0x24]
+ str r1, [r2, #0x28]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DEC40
+
+ thumb_func_start MOD16_021DEC4C
+MOD16_021DEC4C: ; 0x021DEC4C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x28]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DEC4C
+
+ thumb_func_start MOD16_021DEC54
+MOD16_021DEC54: ; 0x021DEC54
+ ldr r0, [r0]
+ ldr r0, [r0, #0x30]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DEC54
+
+ thumb_func_start MOD16_021DEC5C
+MOD16_021DEC5C: ; 0x021DEC5C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x34]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DEC5C
+
+ thumb_func_start MOD16_021DEC64
+MOD16_021DEC64: ; 0x021DEC64
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x38
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DEC76
+ bl ErrorHandling
+_021DEC76:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x38
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl MOD16_021D7AD8
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD16_021D7B5C
+ ldr r0, [r0]
+ str r0, [r4, #8]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DEC64
+
+ thumb_func_start MOD16_021DECA0
+MOD16_021DECA0: ; 0x021DECA0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DECB2
+ bl ErrorHandling
+_021DECB2:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DECA0
+
+ thumb_func_start MOD16_021DECC8
+MOD16_021DECC8: ; 0x021DECC8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ bl MOD16_021DED44
+ add r7, r0, #0
+ mov r1, #0x14
+ mul r7, r1
+ add r0, r5, #0
+ add r1, r7, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DECE8
+ bl ErrorHandling
+_021DECE8:
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r7, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ mov r3, #2
+ bl MOD16_021DAE0C
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DECC8
+
+ thumb_func_start MOD16_021DED04
+MOD16_021DED04: ; 0x021DED04
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DED0E
+ bl ErrorHandling
+_021DED0E:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DED04
+
+ thumb_func_start MOD16_021DED18
+MOD16_021DED18: ; 0x021DED18
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DED22
+ bl ErrorHandling
+_021DED22:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DED18
+
+ thumb_func_start MOD16_021DED2C
+MOD16_021DED2C: ; 0x021DED2C
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DED36
+ bl ErrorHandling
+_021DED36:
+ add r0, r4, #0
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD16_021DED2C
+
+ thumb_func_start MOD16_021DED44
+MOD16_021DED44: ; 0x021DED44
+ mov r0, #1
+ bx lr
+ thumb_func_end MOD16_021DED44
+
+ thumb_func_start MOD16_021DED48
+MOD16_021DED48: ; 0x021DED48
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r4, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r6, r0, #0
+ bne _021DED5E
+ bl ErrorHandling
+_021DED5E:
+ mov r0, #0
+ strb r0, [r6]
+ strb r0, [r6, #1]
+ strb r0, [r6, #2]
+ strb r0, [r6, #3]
+ str r6, [r5, #8]
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x10]
+ str r0, [r4, #0x14]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ str r0, [r4, #0x20]
+ str r0, [r4, #0x24]
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x30]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021DED48
+
+ thumb_func_start MOD16_021DED80
+MOD16_021DED80: ; 0x021DED80
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0
+ cmp r0, #1
+ bne _021DED94
+ add sp, #0x14
+ mov r0, #1
+ pop {r4, r5, pc}
+_021DED94:
+ ldr r0, [r5, #0x10]
+ cmp r0, #1
+ bne _021DEDA0
+ add sp, #0x14
+ mov r0, #0
+ pop {r4, r5, pc}
+_021DEDA0:
+ ldr r0, [r5]
+ cmp r0, #4
+ bhi _021DEE96
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DEDB2: ; jump table
+ .short _021DEDBC - _021DEDB2 - 2 ; case 0
+ .short _021DEDF2 - _021DEDB2 - 2 ; case 1
+ .short _021DEE10 - _021DEDB2 - 2 ; case 2
+ .short _021DEE20 - _021DEDB2 - 2 ; case 3
+ .short _021DEE84 - _021DEDB2 - 2 ; case 4
+_021DEDBC:
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _021DEDC6
+ mov r0, #0
+ str r0, [r4, #0x2c]
+_021DEDC6:
+ ldr r0, [r4, #0x24]
+ cmp r0, #1
+ bne _021DEE9A
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ bne _021DEDE2
+ ldr r2, [r4]
+ mov r0, #2
+ ldr r1, [r2]
+ orr r0, r1
+ str r0, [r2]
+ mov r0, #4
+ str r0, [r4, #0x30]
+ b _021DEE9A
+_021DEDE2:
+ mov r0, #1
+ str r0, [r4, #0x30]
+ mov r0, #4
+ str r0, [r4, #0x34]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DEE9A
+_021DEDF2:
+ ldr r0, [r4, #0x34]
+ sub r0, r0, #1
+ str r0, [r4, #0x34]
+ bpl _021DEE9A
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ mov r0, #2
+ str r0, [r4, #0x30]
+ mov r0, #0x20
+ str r0, [r4, #0x34]
+ ldr r0, _021DEEA0 ; =0x000005FF
+ bl FUN_020054C8
+ b _021DEE9A
+_021DEE10:
+ ldr r0, [r4, #0x34]
+ sub r0, r0, #1
+ str r0, [r4, #0x34]
+ bpl _021DEE9A
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DEE9A
+_021DEE20:
+ ldr r0, [r4, #4]
+ bl MOD16_021D9D04
+ ldr r1, [r4, #0x1c]
+ str r1, [sp]
+ ldr r1, [r4, #0x20]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5, #4]
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0x10]
+ ldr r2, [r4, #0x14]
+ ldr r3, [r4, #0x18]
+ bl MOD16_021D9A90
+ cmp r0, #1
+ bne _021DEE6A
+ ldr r2, [r4]
+ mov r0, #2
+ ldr r1, [r2]
+ orr r0, r1
+ str r0, [r2]
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD16_021D9E3C
+ mov r0, #0x5d
+ ldr r1, [r4, #4]
+ mov r2, #1
+ lsl r0, r0, #6
+ str r2, [r1, r0]
+ ldr r0, [r4, #8]
+ str r2, [r0, #0x18]
+ b _021DEE9A
+_021DEE6A:
+ mov r0, #0
+ str r0, [r4, #0x28]
+ str r0, [r4, #0x24]
+ mov r0, #1
+ str r0, [r4, #0x2c]
+ mov r0, #3
+ str r0, [r4, #0x30]
+ mov r0, #4
+ str r0, [r4, #0x34]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DEE9A
+_021DEE84:
+ ldr r0, [r4, #0x34]
+ sub r0, r0, #1
+ str r0, [r4, #0x34]
+ bpl _021DEE9A
+ mov r0, #0
+ str r0, [r4, #0x30]
+ str r0, [r4, #0x34]
+ str r0, [r5]
+ b _021DEE9A
+_021DEE96:
+ bl ErrorHandling
+_021DEE9A:
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_021DEEA0: .word 0x000005FF
+ thumb_func_end MOD16_021DED80
+
+ thumb_func_start MOD16_021DEEA4
+MOD16_021DEEA4: ; 0x021DEEA4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DEEA4
+
+ thumb_func_start MOD16_021DEEB8
+MOD16_021DEEB8: ; 0x021DEEB8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ ldr r3, [r3, #8]
+ ldr r0, [r4, #8]
+ cmp r1, #3
+ bhi _021DEF2E
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DEED4: ; jump table
+ .short _021DEEDC - _021DEED4 - 2 ; case 0
+ .short _021DEEF6 - _021DEED4 - 2 ; case 1
+ .short _021DEF18 - _021DEED4 - 2 ; case 2
+ .short _021DEF2A - _021DEED4 - 2 ; case 3
+_021DEEDC:
+ ldr r0, [r4, #4]
+ mov r1, #0x64
+ bl FUN_02016998
+ str r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0x64
+ bl Call_FillMemWithValue
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DEF2E
+_021DEEF6:
+ ldr r1, [r4, #4]
+ str r1, [sp]
+ add r1, r5, #0
+ bl MOD16_021DEFF8
+ mov r1, #0
+ mov r0, #1
+ add r2, r1, #0
+ str r0, [sp]
+ sub r2, #0x10
+ mov r3, #0x3f
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DEF2E
+_021DEF18:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021DEF2E
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DEF2E
+_021DEF2A:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DEF2E:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DEEB8
+
+ thumb_func_start MOD16_021DEF34
+MOD16_021DEF34: ; 0x021DEF34
+ push {r4, lr}
+ add r3, r1, #0
+ ldr r1, [r2, #0x30]
+ add r4, r0, #0
+ ldr r0, [r3, #8]
+ cmp r1, #0
+ bne _021DEF4C
+ ldr r3, [r3, #4]
+ add r1, r4, #0
+ bl MOD16_021DF450
+ b _021DEF6A
+_021DEF4C:
+ cmp r1, #1
+ beq _021DEF54
+ cmp r1, #3
+ bne _021DEF5E
+_021DEF54:
+ ldr r3, [r3, #4]
+ add r1, r4, #0
+ bl MOD16_021DF89C
+ b _021DEF6A
+_021DEF5E:
+ cmp r1, #4
+ beq _021DEF6A
+ ldr r3, [r3, #4]
+ add r1, r4, #0
+ bl MOD16_021DF90C
+_021DEF6A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DEF34
+
+ thumb_func_start MOD16_021DEF70
+MOD16_021DEF70: ; 0x021DEF70
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r3, r0, #0
+ ldr r0, [r4, #8]
+ cmp r1, #4
+ bhi _021DEFF2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DEF8C: ; jump table
+ .short _021DEF96 - _021DEF8C - 2 ; case 0
+ .short _021DEFBC - _021DEF8C - 2 ; case 1
+ .short _021DEFCE - _021DEF8C - 2 ; case 2
+ .short _021DEFDC - _021DEF8C - 2 ; case 3
+ .short _021DEFEC - _021DEF8C - 2 ; case 4
+_021DEF96:
+ ldr r0, [r2, #0x28]
+ cmp r0, #0
+ bne _021DEFB6
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #6
+ add r1, r0, #0
+ sub r1, #0x16
+ mov r2, #0
+ mov r3, #0x3f
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DEFF2
+_021DEFB6:
+ mov r0, #2
+ str r0, [r4]
+ b _021DEFF2
+_021DEFBC:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021DEFF2
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DEFF2
+_021DEFCE:
+ add r1, r3, #0
+ bl MOD16_021DF0BC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DEFF2
+_021DEFDC:
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DEFF2
+_021DEFEC:
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, pc}
+_021DEFF2:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD16_021DEF70
+
+ thumb_func_start MOD16_021DEFF8
+MOD16_021DEFF8: ; 0x021DEFF8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r7, r0, #0
+ ldr r0, [r5]
+ mov r1, #2
+ ldr r0, [r0]
+ add r4, r2, #0
+ ldr r6, [sp, #0x18]
+ bl FUN_02018744
+ ldr r0, [r5]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02018744
+ ldr r0, [r5]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_02019620
+ ldr r0, [r5]
+ mov r1, #7
+ add r0, r0, #4
+ bl FUN_0201AB24
+ add r0, r5, #0
+ bl MOD16_021DF17C
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021DF108
+ ldr r0, [r4, #4]
+ bl MOD16_021D9D04
+ str r0, [sp]
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD16_021DF140
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD16_021DF198
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD16_021DF288
+ ldr r1, [r4, #0xc]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021DF350
+ ldr r1, [r4, #0xc]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021DF514
+ ldr r1, [r4, #0x10]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021DF5D0
+ ldr r1, [r4, #0x14]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021DF630
+ ldr r1, [r4, #0x18]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021DF7B0
+ ldr r1, [r4, #0x1c]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021DF7BC
+ ldr r1, [r4, #0x20]
+ add r0, r7, #0
+ bl MOD16_021DF7C8
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #0
+ bl FUN_020178BC
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DEFF8
+
+ thumb_func_start MOD16_021DF0BC
+MOD16_021DF0BC: ; 0x021DF0BC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021DF33C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DF244
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021DF168
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02018744
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_02019620
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_0201AB24
+ mov r0, #1
+ mov r1, #0
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #1
+ bl FUN_020178BC
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DF0BC
+
+ thumb_func_start MOD16_021DF108
+MOD16_021DF108: ; 0x021DF108
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5]
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ add r4, r2, #0
+ str r4, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x1c
+ mov r3, #3
+ bl MOD16_021D8CB4
+ mov r0, #0x20
+ str r0, [sp]
+ str r4, [sp, #4]
+ mov r2, #0
+ ldr r0, [r5]
+ mov r1, #5
+ add r3, r2, #0
+ bl MOD16_021D8CFC
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DF108
+
+ thumb_func_start MOD16_021DF140
+MOD16_021DF140: ; 0x021DF140
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [sp, #0x10]
+ cmp r0, #1
+ bne _021DF150
+ mov r2, #0x2a
+ b _021DF152
+_021DF150:
+ mov r2, #0x28
+_021DF152:
+ str r3, [sp]
+ ldr r0, [r1]
+ add r3, r4, #0
+ add r1, r2, #0
+ mov r2, #1
+ add r3, #0x60
+ bl MOD16_021D8D48
+ str r0, [r4, #0x5c]
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD16_021DF140
+
+ thumb_func_start MOD16_021DF168
+MOD16_021DF168: ; 0x021DF168
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x5c]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x5c]
+ str r0, [r4, #0x60]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DF168
+
+ thumb_func_start MOD16_021DF17C
+MOD16_021DF17C: ; 0x021DF17C
+ push {r4, lr}
+ ldr r0, [r0]
+ bl MOD16_021D8700
+ add r4, r0, #0
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ add r0, r4, #0
+ bl FUN_02007EEC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DF17C
+
+ thumb_func_start MOD16_021DF198
+MOD16_021DF198: ; 0x021DF198
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021DF234 ; =0x00003AE9
+ mov r3, #1
+ str r0, [sp]
+ str r3, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ add r1, r7, #0
+ mov r2, #0x51
+ bl FUN_020091E0
+ str r0, [r5, #0x24]
+ bl FUN_02009B04
+ ldr r0, [r5, #0x24]
+ bl FUN_02009474
+ ldr r0, _021DF238 ; =0x00003A9B
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0xc
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #3
+ mov r3, #0
+ bl FUN_02009298
+ str r0, [r5, #0x28]
+ bl FUN_02009D68
+ ldr r0, [r5, #0x28]
+ bl FUN_02009474
+ ldr r0, _021DF23C ; =0x00003AE7
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x4f
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x2c]
+ ldr r0, _021DF240 ; =0x00003AE8
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x50
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x30]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DF234: .word 0x00003AE9
+_021DF238: .word 0x00003A9B
+_021DF23C: .word 0x00003AE7
+_021DF240: .word 0x00003AE8
+ thumb_func_end MOD16_021DF198
+
+ thumb_func_start MOD16_021DF244
+MOD16_021DF244: ; 0x021DF244
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x24]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ ldr r0, [r5, #0x28]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x24]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x28]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x2c]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x30]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DF244
+
+ thumb_func_start MOD16_021DF288
+MOD16_021DF288: ; 0x021DF288
+ push {r4, r5, r6, lr}
+ sub sp, #0x70
+ add r6, r3, #0
+ ldr r4, [r1]
+ ldr r3, _021DF338 ; =0x00003AE8
+ add r5, r0, #0
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r2, [r4, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r2, r3, #0
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x4c
+ sub r2, #0x4d
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #0x1f
+ str r0, [sp, #0x40]
+ mov r0, #1
+ str r0, [sp, #0x44]
+ lsl r0, r0, #0x13
+ str r0, [sp, #0x34]
+ mov r0, #0x29
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ str r6, [sp, #0x48]
+ bl FUN_0201FF84
+ mov r1, #3
+ str r0, [r5, #0x20]
+ bl FUN_02020130
+ mov r0, #2
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x34]
+ mov r0, #6
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ str r0, [r5, #0x58]
+ mov r1, #0x11
+ bl FUN_02020130
+ ldr r0, [r5, #0x58]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r5, #0x58]
+ mov r1, #1
+ bl FUN_020200EC
+ ldr r0, [r5, #0x58]
+ mov r1, #0
+ bl FUN_02020238
+ add sp, #0x70
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DF338: .word 0x00003AE8
+ thumb_func_end MOD16_021DF288
+
+ thumb_func_start MOD16_021DF33C
+MOD16_021DF33C: ; 0x021DF33C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x20]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #0x58]
+ bl FUN_0201FFC8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DF33C
+
+ thumb_func_start MOD16_021DF350
+MOD16_021DF350: ; 0x021DF350
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r5, [r0]
+ mov r0, #0xd0
+ str r0, [sp]
+ mov r0, #0x20
+ add r6, r1, #0
+ add r7, r2, #0
+ str r0, [sp, #4]
+ add r0, r5, #4
+ mov r1, #0
+ mov r2, #0x18
+ mov r3, #8
+ bl FUN_020196F4
+ cmp r6, #3
+ bhi _021DF394
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DF37E: ; jump table
+ .short _021DF386 - _021DF37E - 2 ; case 0
+ .short _021DF38A - _021DF37E - 2 ; case 1
+ .short _021DF38E - _021DF37E - 2 ; case 2
+ .short _021DF392 - _021DF37E - 2 ; case 3
+_021DF386:
+ mov r4, #0x5a
+ b _021DF394
+_021DF38A:
+ mov r4, #0x57
+ b _021DF394
+_021DF38E:
+ mov r4, #0x58
+ b _021DF394
+_021DF392:
+ mov r4, #0x59
+_021DF394:
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021D8270
+ add r6, r0, #0
+ mov r0, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ bl FUN_02002F08
+ mov r1, #0xd0
+ sub r0, r1, r0
+ lsr r4, r0, #1
+ add r0, r6, #0
+ add r4, #0x18
+ bl FUN_02002F90
+ lsl r1, r0, #4
+ mov r0, #0x20
+ sub r0, r0, r1
+ lsr r0, r0, #1
+ add r0, #8
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DF3E0 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #4
+ add r2, r6, #0
+ add r3, r4, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DF3E0: .word 0x00020100
+ thumb_func_end MOD16_021DF350
+
+ thumb_func_start MOD16_021DF3E4
+MOD16_021DF3E4: ; 0x021DF3E4
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ ldr r4, [r0]
+ mov r0, #0xd0
+ str r0, [sp]
+ mov r0, #0x20
+ add r5, r1, #0
+ str r0, [sp, #4]
+ add r0, r4, #4
+ mov r1, #0
+ mov r2, #0x18
+ mov r3, #8
+ bl FUN_020196F4
+ mov r0, #0x5d
+ add r1, r5, #0
+ bl MOD16_021D8270
+ add r6, r0, #0
+ mov r0, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ bl FUN_02002F08
+ mov r1, #0xd0
+ sub r0, r1, r0
+ lsr r5, r0, #1
+ add r0, r6, #0
+ add r5, #0x18
+ bl FUN_02002F90
+ lsl r1, r0, #4
+ mov r0, #0x20
+ sub r0, r0, r1
+ lsr r0, r0, #1
+ add r0, #8
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DF44C ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r4, #4
+ add r2, r6, #0
+ add r3, r5, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DF44C: .word 0x00020100
+ thumb_func_end MOD16_021DF3E4
+
+ thumb_func_start MOD16_021DF450
+MOD16_021DF450: ; 0x021DF450
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ add r6, r1, #0
+ ldr r1, [r4, #0x2c]
+ ldr r0, [r5, #0x18]
+ add r7, r3, #0
+ cmp r1, r0
+ beq _021DF474
+ str r1, [r5, #0x18]
+ cmp r1, #1
+ bne _021DF474
+ mov r0, #0x40
+ str r0, [r5, #0x1c]
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD16_021DF3E4
+_021DF474:
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ ble _021DF480
+ sub r0, r0, #1
+ str r0, [r5, #0x1c]
+ b _021DF492
+_021DF480:
+ bne _021DF492
+ ldr r1, [r4, #0xc]
+ add r0, r6, #0
+ add r2, r7, #0
+ bl MOD16_021DF350
+ ldr r0, [r5, #0x1c]
+ sub r0, r0, #1
+ str r0, [r5, #0x1c]
+_021DF492:
+ ldr r1, [r4, #0xc]
+ ldr r0, [r5]
+ cmp r0, r1
+ beq _021DF4B0
+ add r0, r6, #0
+ add r2, r7, #0
+ bl MOD16_021DF514
+ ldr r1, [r4, #0xc]
+ add r0, r6, #0
+ add r2, r7, #0
+ bl MOD16_021DF350
+ ldr r0, [r4, #0xc]
+ str r0, [r5]
+_021DF4B0:
+ ldr r1, [r4, #0x10]
+ ldr r0, [r5, #4]
+ cmp r0, r1
+ beq _021DF4C4
+ add r0, r6, #0
+ add r2, r7, #0
+ bl MOD16_021DF5D0
+ ldr r0, [r4, #0x10]
+ str r0, [r5, #4]
+_021DF4C4:
+ ldr r1, [r4, #0x14]
+ ldr r0, [r5, #8]
+ cmp r0, r1
+ beq _021DF4D8
+ add r0, r6, #0
+ add r2, r7, #0
+ bl MOD16_021DF630
+ ldr r0, [r4, #0x14]
+ str r0, [r5, #8]
+_021DF4D8:
+ ldr r1, [r4, #0x18]
+ ldr r0, [r5, #0xc]
+ cmp r0, r1
+ beq _021DF4EC
+ add r0, r6, #0
+ add r2, r7, #0
+ bl MOD16_021DF7B0
+ ldr r0, [r4, #0x18]
+ str r0, [r5, #0xc]
+_021DF4EC:
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r5, #0x10]
+ cmp r0, r1
+ beq _021DF500
+ add r0, r6, #0
+ add r2, r7, #0
+ bl MOD16_021DF7BC
+ ldr r0, [r4, #0x1c]
+ str r0, [r5, #0x10]
+_021DF500:
+ ldr r1, [r4, #0x20]
+ ldr r0, [r5, #0x14]
+ cmp r0, r1
+ beq _021DF512
+ add r0, r5, #0
+ bl MOD16_021DF7C8
+ ldr r0, [r4, #0x20]
+ str r0, [r5, #0x14]
+_021DF512:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DF450
+
+ thumb_func_start MOD16_021DF514
+MOD16_021DF514: ; 0x021DF514
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ str r2, [sp]
+ add r7, r1, #0
+ str r2, [sp, #0xc]
+ ldr r0, [r4]
+ mov r1, #0x2b
+ mov r2, #1
+ add r3, sp, #0x14
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x14]
+ mov r3, #0
+ str r3, [sp]
+ str r0, [sp, #0x10]
+ ldrh r0, [r2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_02018148
+ ldr r0, [sp, #0x10]
+ bl FUN_02016A18
+ cmp r7, #3
+ bhi _021DF584
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DF566: ; jump table
+ .short _021DF56E - _021DF566 - 2 ; case 0
+ .short _021DF574 - _021DF566 - 2 ; case 1
+ .short _021DF57A - _021DF566 - 2 ; case 2
+ .short _021DF580 - _021DF566 - 2 ; case 3
+_021DF56E:
+ mov r5, #6
+ mov r6, #0x2c
+ b _021DF584
+_021DF574:
+ mov r5, #9
+ mov r6, #0x2d
+ b _021DF584
+_021DF57A:
+ mov r5, #0xc
+ mov r6, #0x2e
+ b _021DF584
+_021DF580:
+ mov r5, #0x11
+ mov r6, #0x2f
+_021DF584:
+ ldr r0, [sp, #0xc]
+ add r1, r6, #0
+ str r0, [sp]
+ ldr r0, [r4]
+ mov r2, #1
+ add r3, sp, #0x14
+ bl MOD16_021D8D48
+ add r6, r0, #0
+ lsl r0, r5, #0x18
+ ldr r2, [sp, #0x14]
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldrh r0, [r2]
+ mov r1, #3
+ mov r3, #6
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ mov r1, #3
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DF514
+
+ thumb_func_start MOD16_021DF5D0
+MOD16_021DF5D0: ; 0x021DF5D0
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ ldr r4, [r0]
+ mov r0, #0x50
+ str r0, [sp]
+ mov r0, #0x10
+ add r5, r1, #0
+ add r6, r2, #0
+ str r0, [sp, #4]
+ add r0, r4, #4
+ mov r1, #0
+ mov r2, #0x58
+ mov r3, #0x34
+ bl FUN_020196F4
+ add r5, #0x51
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021D8270
+ add r5, r0, #0
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ mov r3, #0x50
+ bl FUN_02002F40
+ add r3, r0, #0
+ mov r0, #0x34
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DF62C ; =0x00040300
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r3, #0x58
+ add r0, r4, #4
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ bl FUN_02021A20
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_021DF62C: .word 0x00040300
+ thumb_func_end MOD16_021DF5D0
+
+ thumb_func_start MOD16_021DF630
+MOD16_021DF630: ; 0x021DF630
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r5, [r0]
+ mov r0, #0x50
+ str r0, [sp]
+ mov r0, #0x10
+ add r6, r1, #0
+ add r7, r2, #0
+ str r0, [sp, #4]
+ add r0, r5, #4
+ mov r1, #0
+ mov r2, #0x58
+ mov r3, #0x4d
+ bl FUN_020196F4
+ cmp r6, #9
+ bhi _021DF698
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DF65E: ; jump table
+ .short _021DF672 - _021DF65E - 2 ; case 0
+ .short _021DF676 - _021DF65E - 2 ; case 1
+ .short _021DF67A - _021DF65E - 2 ; case 2
+ .short _021DF67E - _021DF65E - 2 ; case 3
+ .short _021DF682 - _021DF65E - 2 ; case 4
+ .short _021DF686 - _021DF65E - 2 ; case 5
+ .short _021DF68A - _021DF65E - 2 ; case 6
+ .short _021DF68E - _021DF65E - 2 ; case 7
+ .short _021DF692 - _021DF65E - 2 ; case 8
+ .short _021DF696 - _021DF65E - 2 ; case 9
+_021DF672:
+ mov r4, #0x73
+ b _021DF698
+_021DF676:
+ mov r4, #0x36
+ b _021DF698
+_021DF67A:
+ mov r4, #0x37
+ b _021DF698
+_021DF67E:
+ mov r4, #0x38
+ b _021DF698
+_021DF682:
+ mov r4, #0x39
+ b _021DF698
+_021DF686:
+ mov r4, #0x3a
+ b _021DF698
+_021DF68A:
+ mov r4, #0x3b
+ b _021DF698
+_021DF68E:
+ mov r4, #0x3c
+ b _021DF698
+_021DF692:
+ mov r4, #0x3d
+ b _021DF698
+_021DF696:
+ mov r4, #0x3e
+_021DF698:
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021D8270
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ mov r3, #0x50
+ bl FUN_02002F40
+ add r3, r0, #0
+ mov r0, #0x4d
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DF6D4 ; =0x00040300
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r3, #0x58
+ add r0, r5, #4
+ add r2, r4, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DF6D4: .word 0x00040300
+ thumb_func_end MOD16_021DF630
+
+ thumb_func_start MOD16_021DF6D8
+MOD16_021DF6D8: ; 0x021DF6D8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r5, [r0]
+ add r7, r3, #0
+ mov r0, #0x50
+ str r0, [sp]
+ mov r0, #0x10
+ lsl r3, r7, #0x10
+ add r6, r1, #0
+ str r2, [sp, #0x10]
+ str r0, [sp, #4]
+ add r0, r5, #4
+ mov r1, #0
+ mov r2, #0x58
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ cmp r6, #0x11
+ bhi _021DF774
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DF70A: ; jump table
+ .short _021DF72E - _021DF70A - 2 ; case 0
+ .short _021DF732 - _021DF70A - 2 ; case 1
+ .short _021DF736 - _021DF70A - 2 ; case 2
+ .short _021DF73A - _021DF70A - 2 ; case 3
+ .short _021DF73E - _021DF70A - 2 ; case 4
+ .short _021DF742 - _021DF70A - 2 ; case 5
+ .short _021DF746 - _021DF70A - 2 ; case 6
+ .short _021DF74A - _021DF70A - 2 ; case 7
+ .short _021DF74E - _021DF70A - 2 ; case 8
+ .short _021DF752 - _021DF70A - 2 ; case 9
+ .short _021DF756 - _021DF70A - 2 ; case 10
+ .short _021DF75A - _021DF70A - 2 ; case 11
+ .short _021DF75E - _021DF70A - 2 ; case 12
+ .short _021DF762 - _021DF70A - 2 ; case 13
+ .short _021DF766 - _021DF70A - 2 ; case 14
+ .short _021DF76A - _021DF70A - 2 ; case 15
+ .short _021DF76E - _021DF70A - 2 ; case 16
+ .short _021DF772 - _021DF70A - 2 ; case 17
+_021DF72E:
+ mov r4, #0x74
+ b _021DF774
+_021DF732:
+ mov r4, #0x40
+ b _021DF774
+_021DF736:
+ mov r4, #0x46
+ b _021DF774
+_021DF73A:
+ mov r4, #0x49
+ b _021DF774
+_021DF73E:
+ mov r4, #0x47
+ b _021DF774
+_021DF742:
+ mov r4, #0x48
+ b _021DF774
+_021DF746:
+ mov r4, #0x4c
+ b _021DF774
+_021DF74A:
+ mov r4, #0x4b
+ b _021DF774
+_021DF74E:
+ mov r4, #0x4d
+ b _021DF774
+_021DF752:
+ mov r4, #0x50
+ b _021DF774
+_021DF756:
+ mov r4, #0x41
+ b _021DF774
+_021DF75A:
+ mov r4, #0x42
+ b _021DF774
+_021DF75E:
+ mov r4, #0x44
+ b _021DF774
+_021DF762:
+ mov r4, #0x43
+ b _021DF774
+_021DF766:
+ mov r4, #0x4a
+ b _021DF774
+_021DF76A:
+ mov r4, #0x45
+ b _021DF774
+_021DF76E:
+ mov r4, #0x4e
+ b _021DF774
+_021DF772:
+ mov r4, #0x4f
+_021DF774:
+ ldr r1, [sp, #0x10]
+ add r0, r4, #0
+ bl MOD16_021D8270
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ mov r3, #0x50
+ bl FUN_02002F40
+ add r3, r0, #0
+ str r7, [sp]
+ mov r1, #0
+ ldr r0, _021DF7AC ; =0x00040300
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r3, #0x58
+ add r0, r5, #4
+ add r2, r4, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DF7AC: .word 0x00040300
+ thumb_func_end MOD16_021DF6D8
+
+ thumb_func_start MOD16_021DF7B0
+MOD16_021DF7B0: ; 0x021DF7B0
+ push {r3, lr}
+ mov r3, #0x66
+ bl MOD16_021DF6D8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DF7B0
+
+ thumb_func_start MOD16_021DF7BC
+MOD16_021DF7BC: ; 0x021DF7BC
+ push {r3, lr}
+ mov r3, #0x78
+ bl MOD16_021DF6D8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DF7BC
+
+ thumb_func_start MOD16_021DF7C8
+MOD16_021DF7C8: ; 0x021DF7C8
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ ldr r0, [r4, #0x20]
+ bne _021DF7DA
+ mov r1, #0
+ bl FUN_020200A0
+ pop {r3, r4, r5, pc}
+_021DF7DA:
+ mov r1, #1
+ bl FUN_020200A0
+ cmp r5, #0xe
+ bhi _021DF898
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DF7F0: ; jump table
+ .short _021DF898 - _021DF7F0 - 2 ; case 0
+ .short _021DF80E - _021DF7F0 - 2 ; case 1
+ .short _021DF818 - _021DF7F0 - 2 ; case 2
+ .short _021DF822 - _021DF7F0 - 2 ; case 3
+ .short _021DF82C - _021DF7F0 - 2 ; case 4
+ .short _021DF836 - _021DF7F0 - 2 ; case 5
+ .short _021DF840 - _021DF7F0 - 2 ; case 6
+ .short _021DF84A - _021DF7F0 - 2 ; case 7
+ .short _021DF854 - _021DF7F0 - 2 ; case 8
+ .short _021DF85E - _021DF7F0 - 2 ; case 9
+ .short _021DF868 - _021DF7F0 - 2 ; case 10
+ .short _021DF872 - _021DF7F0 - 2 ; case 11
+ .short _021DF87C - _021DF7F0 - 2 ; case 12
+ .short _021DF886 - _021DF7F0 - 2 ; case 13
+ .short _021DF890 - _021DF7F0 - 2 ; case 14
+_021DF80E:
+ ldr r0, [r4, #0x20]
+ mov r1, #3
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DF818:
+ ldr r0, [r4, #0x20]
+ mov r1, #4
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DF822:
+ ldr r0, [r4, #0x20]
+ mov r1, #5
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DF82C:
+ ldr r0, [r4, #0x20]
+ mov r1, #6
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DF836:
+ ldr r0, [r4, #0x20]
+ mov r1, #7
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DF840:
+ ldr r0, [r4, #0x20]
+ mov r1, #8
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DF84A:
+ ldr r0, [r4, #0x20]
+ mov r1, #9
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DF854:
+ ldr r0, [r4, #0x20]
+ mov r1, #0xa
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DF85E:
+ ldr r0, [r4, #0x20]
+ mov r1, #0xb
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DF868:
+ ldr r0, [r4, #0x20]
+ mov r1, #0xc
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DF872:
+ ldr r0, [r4, #0x20]
+ mov r1, #0xd
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DF87C:
+ ldr r0, [r4, #0x20]
+ mov r1, #0xe
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DF886:
+ ldr r0, [r4, #0x20]
+ mov r1, #0xf
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+_021DF890:
+ ldr r0, [r4, #0x20]
+ mov r1, #0x10
+ bl FUN_02020130
+_021DF898:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DF7C8
+
+ thumb_func_start MOD16_021DF89C
+MOD16_021DF89C: ; 0x021DF89C
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r2, #0x34]
+ add r4, r1, #0
+ cmp r0, #4
+ bne _021DF900
+ ldr r0, [r2, #0x30]
+ cmp r0, #1
+ bne _021DF8D4
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0x14
+ str r0, [sp, #0xc]
+ mov r0, #4
+ str r0, [sp, #0x10]
+ ldr r1, [r4]
+ add r0, r5, #0
+ ldr r1, [r1]
+ ldr r3, [r5, #0x60]
+ add r0, #0x34
+ mov r2, #2
+ bl MOD16_021D7CA4
+ b _021DF900
+_021DF8D4:
+ add r0, r4, #0
+ add r1, r5, #0
+ add r2, r3, #0
+ bl MOD16_021DF9C0
+ mov r0, #0xc
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ mov r0, #0x14
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #4
+ str r0, [sp, #0x10]
+ ldr r1, [r4]
+ add r0, r5, #0
+ ldr r1, [r1]
+ ldr r3, [r5, #0x60]
+ add r0, #0x34
+ mov r2, #2
+ bl MOD16_021D7CA4
+_021DF900:
+ add r5, #0x34
+ add r0, r5, #0
+ bl MOD16_021D7CC8
+ add sp, #0x14
+ pop {r4, r5, pc}
+ thumb_func_end MOD16_021DF89C
+
+ thumb_func_start MOD16_021DF90C
+MOD16_021DF90C: ; 0x021DF90C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r2, #0
+ add r5, r0, #0
+ ldr r0, [r6, #0x34]
+ add r4, r1, #0
+ add r7, r3, #0
+ cmp r0, #0x20
+ bne _021DF92E
+ ldr r0, [r5, #0x58]
+ mov r1, #1
+ bl FUN_020200A0
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021DF970
+ b _021DF94C
+_021DF92E:
+ cmp r0, #0
+ bne _021DF94C
+ ldr r0, [r5, #0x58]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_02019620
+ ldr r0, [r4]
+ add r0, r0, #4
+ bl FUN_02019220
+_021DF94C:
+ ldr r2, [r6, #0x34]
+ mov r1, #4
+ sub r2, r1, r2
+ ldr r1, _021DF96C ; =0x00007FFF
+ add r3, r2, #0
+ mul r3, r1
+ asr r1, r3, #1
+ lsr r1, r1, #0x1e
+ add r1, r3, r1
+ lsl r1, r1, #0xe
+ ldr r0, [r5, #0x58]
+ lsr r1, r1, #0x10
+ bl FUN_02020088
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DF96C: .word 0x00007FFF
+ thumb_func_end MOD16_021DF90C
+
+ thumb_func_start MOD16_021DF970
+MOD16_021DF970: ; 0x021DF970
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ ldr r5, [r0]
+ add r4, r1, #0
+ add r0, r5, #4
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0x5e
+ add r1, r4, #0
+ bl MOD16_021D8270
+ add r4, r0, #0
+ mov r0, #0x80
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DF9BC ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #4
+ add r2, r4, #0
+ mov r3, #0x60
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ mov r0, #1
+ mov r1, #0
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #1
+ bl FUN_020178BC
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DF9BC: .word 0x00020100
+ thumb_func_end MOD16_021DF970
+
+ thumb_func_start MOD16_021DF9C0
+MOD16_021DF9C0: ; 0x021DF9C0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #1
+ add r4, r1, #0
+ add r1, r0, #0
+ add r6, r2, #0
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #0
+ bl FUN_020178BC
+ ldr r0, [r5]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_02019620
+ ldr r1, [r4]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021DF514
+ ldr r1, [r4]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021DF350
+ ldr r1, [r4, #4]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021DF5D0
+ ldr r1, [r4, #8]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021DF630
+ ldr r1, [r4, #0xc]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021DF7B0
+ ldr r1, [r4, #0x10]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021DF7BC
+ ldr r1, [r4, #0x14]
+ add r0, r4, #0
+ bl MOD16_021DF7C8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021DF9C0
+
+ thumb_func_start MOD16_021DFA28
+MOD16_021DFA28: ; 0x021DFA28
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r2, [sp]
+ add r0, r2, #0
+ add r4, r1, #0
+ bl MOD16_021DFAA0
+ add r6, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021DFAE8
+ add r7, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021DFB20
+ str r6, [r5]
+ str r7, [r5, #4]
+ str r0, [r5, #0x20]
+ bl MOD16_021DFB50
+ str r0, [r5, #0x24]
+ ldr r0, _021DFA70 ; =MOD16_021DFB54
+ str r0, [r5, #8]
+ ldr r0, _021DFA74 ; =MOD16_021DFBB8
+ str r0, [r5, #0xc]
+ ldr r0, _021DFA78 ; =MOD16_021DFCEC
+ str r0, [r5, #0x10]
+ ldr r0, _021DFA7C ; =MOD16_021DFD0C
+ str r0, [r5, #0x14]
+ ldr r0, _021DFA80 ; =MOD16_021DFD9C
+ str r0, [r5, #0x18]
+ ldr r0, _021DFA84 ; =MOD16_021DFECC
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DFA70: .word MOD16_021DFB54
+_021DFA74: .word MOD16_021DFBB8
+_021DFA78: .word MOD16_021DFCEC
+_021DFA7C: .word MOD16_021DFD0C
+_021DFA80: .word MOD16_021DFD9C
+_021DFA84: .word MOD16_021DFECC
+ thumb_func_end MOD16_021DFA28
+
+ thumb_func_start MOD16_021DFA88
+MOD16_021DFA88: ; 0x021DFA88
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021DFB24
+ ldr r0, [r4, #4]
+ bl MOD16_021DFB38
+ ldr r0, [r4, #0x20]
+ bl MOD16_021DFB4C
+ pop {r4, pc}
+ thumb_func_end MOD16_021DFA88
+
+ thumb_func_start MOD16_021DFAA0
+MOD16_021DFAA0: ; 0x021DFAA0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x10
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DFAB2
+ bl ErrorHandling
+_021DFAB2:
+ add r2, r4, #0
+ mov r1, #0x10
+ mov r0, #0
+_021DFAB8:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DFAB8
+ add r0, r5, #0
+ bl MOD16_021D7AD8
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021D7B5C
+ str r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021D7B7C
+ str r0, [r4, #0xc]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DFAA0
+
+ thumb_func_start MOD16_021DFAE8
+MOD16_021DFAE8: ; 0x021DFAE8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0xc
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DFAFA
+ bl ErrorHandling
+_021DFAFA:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DFAE8
+
+ thumb_func_start MOD16_021DFB20
+MOD16_021DFB20: ; 0x021DFB20
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021DFB20
+
+ thumb_func_start MOD16_021DFB24
+MOD16_021DFB24: ; 0x021DFB24
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DFB2E
+ bl ErrorHandling
+_021DFB2E:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DFB24
+
+ thumb_func_start MOD16_021DFB38
+MOD16_021DFB38: ; 0x021DFB38
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DFB42
+ bl ErrorHandling
+_021DFB42:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DFB38
+
+ thumb_func_start MOD16_021DFB4C
+MOD16_021DFB4C: ; 0x021DFB4C
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021DFB4C
+
+ thumb_func_start MOD16_021DFB50
+MOD16_021DFB50: ; 0x021DFB50
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021DFB50
+
+ thumb_func_start MOD16_021DFB54
+MOD16_021DFB54: ; 0x021DFB54
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r6, r1, #0
+ mov r1, #0x9c
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021DFB6A
+ bl ErrorHandling
+_021DFB6A:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x9c
+ bl Call_FillMemWithValue
+ add r0, r4, #0
+ ldr r1, _021DFBB4 ; =0x0000FFFF
+ str r4, [r5, #8]
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E2864
+ ldr r2, [r5, #4]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E0048
+ ldr r1, [r5, #4]
+ add r0, r4, #0
+ bl MOD16_021E18E8
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E1930
+ mov r1, #0
+ mov r0, #4
+_021DFBA4:
+ add r1, r1, #1
+ str r0, [r4, #0x2c]
+ add r4, r4, #4
+ cmp r1, #6
+ blt _021DFBA4
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ nop
+_021DFBB4: .word 0x0000FFFF
+ thumb_func_end MOD16_021DFB54
+
+ thumb_func_start MOD16_021DFBB8
+MOD16_021DFBB8: ; 0x021DFBB8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r1, #0
+ add r5, r0, #0
+ ldr r0, [r6, #0xc]
+ ldr r4, [r5, #8]
+ ldr r7, [r0, #4]
+ ldr r0, [r5, #0xc]
+ cmp r0, #1
+ bne _021DFBD2
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DFBD2:
+ ldr r0, [r5, #0x10]
+ cmp r0, #1
+ bne _021DFBDE
+ add sp, #8
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DFBDE:
+ ldr r0, [r6, #8]
+ bl MOD16_021DEC54
+ cmp r0, #0
+ beq _021DFBEE
+ add sp, #8
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DFBEE:
+ ldr r0, [r6, #8]
+ bl MOD16_021DEBB8
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ cmp r0, #4
+ bhi _021DFCE4
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DFC08: ; jump table
+ .short _021DFC12 - _021DFC08 - 2 ; case 0
+ .short _021DFC6E - _021DFC08 - 2 ; case 1
+ .short _021DFC7C - _021DFC08 - 2 ; case 2
+ .short _021DFCD2 - _021DFC08 - 2 ; case 3
+ .short _021DFCE0 - _021DFC08 - 2 ; case 4
+_021DFC12:
+ ldr r1, [r4, #0x24]
+ ldr r0, [sp, #4]
+ cmp r1, r0
+ bne _021DFC22
+ ldr r1, [r4, #0x28]
+ ldr r0, [r4, #0x20]
+ cmp r1, r0
+ beq _021DFC4A
+_021DFC22:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x98
+ str r1, [r0]
+ mov r0, #2
+ str r0, [r7, #4]
+ add r0, r4, #0
+ add r0, #0x98
+ str r0, [r7, #8]
+ add r0, r4, #0
+ bl MOD16_021E0214
+ ldr r1, [sp, #4]
+ add r0, r4, #0
+ bl MOD16_021E0224
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DFCE4
+_021DFC4A:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E0104
+ ldr r0, [r6, #4]
+ bl MOD16_021D9FB8
+ cmp r0, #1
+ bne _021DFC64
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E1804
+_021DFC64:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E2870
+ b _021DFCE4
+_021DFC6E:
+ add r4, #0x98
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021DFCE4
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DFCE4
+_021DFC7C:
+ ldr r0, [r4, #0x24]
+ add r1, r6, #0
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ str r0, [r4, #0x24]
+ ldr r0, [r4, #0x20]
+ str r0, [r4, #0x28]
+ ldr r2, [r5, #4]
+ add r0, r4, #0
+ bl MOD16_021E00A0
+ ldr r1, [r5, #4]
+ add r0, r4, #0
+ bl MOD16_021E1970
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E2864
+ ldr r1, [r4, #0x24]
+ ldr r0, [sp]
+ cmp r0, r1
+ beq _021DFCB2
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E1930
+_021DFCB2:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x98
+ str r1, [r0]
+ mov r0, #1
+ str r0, [r7, #4]
+ add r0, r4, #0
+ add r0, #0x98
+ str r0, [r7, #8]
+ add r0, r4, #0
+ bl MOD16_021E02C4
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DFCE4
+_021DFCD2:
+ add r4, #0x98
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021DFCE4
+ add r0, r0, #1
+ str r0, [r5]
+ b _021DFCE4
+_021DFCE0:
+ mov r0, #0
+ str r0, [r5]
+_021DFCE4:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DFBB8
+
+ thumb_func_start MOD16_021DFCEC
+MOD16_021DFCEC: ; 0x021DFCEC
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r5, [r4, #8]
+ add r0, r5, #0
+ bl MOD16_021E0090
+ add r0, r5, #0
+ bl MOD16_021E18D0
+ add r0, r5, #0
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DFCEC
+
+ thumb_func_start MOD16_021DFD0C
+MOD16_021DFD0C: ; 0x021DFD0C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r6, r0, #0
+ add r7, r2, #0
+ ldr r5, [r3, #8]
+ ldr r0, [r4, #8]
+ cmp r1, #3
+ bhi _021DFD96
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DFD2A: ; jump table
+ .short _021DFD32 - _021DFD2A - 2 ; case 0
+ .short _021DFD50 - _021DFD2A - 2 ; case 1
+ .short _021DFD80 - _021DFD2A - 2 ; case 2
+ .short _021DFD92 - _021DFD2A - 2 ; case 3
+_021DFD32:
+ mov r1, #0x4e
+ ldr r0, [r4, #4]
+ lsl r1, r1, #2
+ bl FUN_02016998
+ mov r2, #0x4e
+ str r0, [r4, #8]
+ mov r1, #0
+ lsl r2, r2, #2
+ bl Call_FillMemWithValue
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DFD96
+_021DFD50:
+ ldr r1, [r4, #4]
+ add r3, r5, #0
+ str r1, [sp]
+ add r1, r6, #0
+ bl MOD16_021DFF74
+ mov r1, #0
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #1
+ sub r2, #0x10
+ mov r3, #0x3f
+ bl FUN_0200A208
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD16_021E1988
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DFD96
+_021DFD80:
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021DFD96
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DFD96
+_021DFD92:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DFD96:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DFD0C
+
+ thumb_func_start MOD16_021DFD9C
+MOD16_021DFD9C: ; 0x021DFD9C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0
+ add r0, r2, #0
+ add r5, r1, #0
+ ldr r0, [r0, #8]
+ str r2, [sp, #4]
+ ldr r6, [r3, #8]
+ ldr r4, [r5, #8]
+ bl MOD16_021DEC54
+ cmp r0, #0
+ beq _021DFDC2
+ ldr r2, [sp, #4]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021E2E74
+ b _021DFE4C
+_021DFDC2:
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021E2CC8
+ mov r0, #0x41
+ lsl r0, r0, #2
+ ldr r2, [r6, #0x24]
+ ldr r3, [r4, r0]
+ cmp r3, r2
+ bne _021DFDE0
+ add r0, r0, #4
+ ldr r1, [r4, r0]
+ ldr r0, [r6, #0x28]
+ cmp r1, r0
+ beq _021DFE42
+_021DFDE0:
+ mov r0, #0x41
+ lsl r0, r0, #2
+ str r2, [r4, r0]
+ ldr r1, [r6, #0x28]
+ add r0, r0, #4
+ str r1, [r4, r0]
+ cmp r3, #3
+ bne _021DFDFE
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021E1BD0
+ add r0, r4, #0
+ bl MOD16_021E22A8
+_021DFDFE:
+ ldr r2, [r5, #4]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021E1CA4
+ ldr r2, [r5, #4]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021E2344
+ mov r0, #0x41
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #3
+ bne _021DFE30
+ ldr r2, [r5, #4]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021E1B3C
+ ldr r2, [r5, #4]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021E20EC
+_021DFE30:
+ mov r3, #0x41
+ lsl r3, r3, #2
+ ldr r2, [r4, r3]
+ add r3, r3, #4
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021E2DBC
+_021DFE42:
+ ldr r2, [sp, #4]
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021E19A4
+_021DFE4C:
+ mov r7, #0
+ str r6, [sp, #8]
+ add r5, r4, #0
+_021DFE52:
+ ldr r1, [sp, #8]
+ ldr r0, [r5]
+ ldr r1, [r1, #0x2c]
+ bl MOD16_021D7B98
+ ldr r1, [r5, #0x18]
+ cmp r1, #0
+ beq _021DFE7A
+ cmp r7, #5
+ bne _021DFE6A
+ mov r3, #1
+ b _021DFE6C
+_021DFE6A:
+ mov r3, #3
+_021DFE6C:
+ mov r0, #5
+ str r0, [sp]
+ mov r2, #5
+ ldr r0, [r5]
+ mvn r2, r2
+ bl MOD16_021D7C70
+_021DFE7A:
+ ldr r0, [sp, #8]
+ add r7, r7, #1
+ add r0, r0, #4
+ add r5, r5, #4
+ str r0, [sp, #8]
+ cmp r7, #6
+ blt _021DFE52
+ mov r5, #0
+ mov r7, #6
+_021DFE8C:
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _021DFE98
+ ldr r1, [r6, #0x44]
+ bl MOD16_021D7B98
+_021DFE98:
+ ldr r1, [r4, #0x6c]
+ cmp r1, #0
+ beq _021DFEAC
+ str r7, [sp]
+ mov r2, #5
+ ldr r0, [r4, #0x30]
+ mvn r2, r2
+ mov r3, #0xb
+ bl MOD16_021D7C70
+_021DFEAC:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DFEBC
+ ldr r1, [r6, #0x44]
+ bl MOD16_021D7B98
+_021DFEBC:
+ add r5, r5, #1
+ add r4, r4, #4
+ add r6, r6, #4
+ cmp r5, #0xf
+ blt _021DFE8C
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021DFD9C
+
+ thumb_func_start MOD16_021DFECC
+MOD16_021DFECC: ; 0x021DFECC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r4, #8]
+ cmp r0, #4
+ bhi _021DFF6E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DFEE8: ; jump table
+ .short _021DFEF2 - _021DFEE8 - 2 ; case 0
+ .short _021DFF1C - _021DFEE8 - 2 ; case 1
+ .short _021DFF2E - _021DFEE8 - 2 ; case 2
+ .short _021DFF56 - _021DFEE8 - 2 ; case 3
+ .short _021DFF68 - _021DFEE8 - 2 ; case 4
+_021DFEF2:
+ ldr r0, [r2, #8]
+ bl MOD16_021DEC4C
+ cmp r0, #1
+ bne _021DFF02
+ mov r0, #2
+ str r0, [r4]
+ b _021DFF6E
+_021DFF02:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #6
+ add r1, r0, #0
+ sub r1, #0x16
+ mov r2, #0
+ mov r3, #0x3f
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DFF6E
+_021DFF1C:
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021DFF6E
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DFF6E
+_021DFF2E:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021DFFB8
+ mov r0, #0x41
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #3
+ bne _021DFF4E
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021E1BD0
+ add r0, r5, #0
+ bl MOD16_021E22A8
+_021DFF4E:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DFF6E
+_021DFF56:
+ add r0, r5, #0
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DFF6E
+_021DFF68:
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021DFF6E:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021DFECC
+
+ thumb_func_start MOD16_021DFF74
+MOD16_021DFF74: ; 0x021DFF74
+ push {r4, r5, r6, lr}
+ ldr r4, [sp, #0x10]
+ add r6, r1, #0
+ add r5, r0, #0
+ add r1, r2, #0
+ add r0, r6, #0
+ add r2, r4, #0
+ bl MOD16_021DFFE0
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD16_021E1A14
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD16_021E1C10
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD16_021E22D0
+ mov r3, #0x41
+ lsl r3, r3, #2
+ ldr r2, [r5, r3]
+ add r3, r3, #4
+ ldr r3, [r5, r3]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021E2DBC
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021DFF74
+
+ thumb_func_start MOD16_021DFFB8
+MOD16_021DFFB8: ; 0x021DFFB8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021E2334
+ add r0, r5, #0
+ bl MOD16_021E1C94
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E1AE4
+ mov r0, #0x79
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #0
+ bl MOD16_021D8B14
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021DFFB8
+
+ thumb_func_start MOD16_021DFFE0
+MOD16_021DFFE0: ; 0x021DFFE0
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ add r5, r2, #0
+ str r5, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x1d
+ mov r3, #6
+ bl MOD16_021D8CB4
+ str r5, [sp]
+ ldr r0, [r4]
+ mov r1, #0x4b
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r5, r0, #0
+ ldrh r0, [r2]
+ mov r1, #6
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r5, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ mov r1, #6
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021DFFE0
+
+ thumb_func_start MOD16_021E0048
+MOD16_021E0048: ; 0x021E0048
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ bl MOD16_021E0158
+ ldr r0, [r5, #0x28]
+ add r1, r4, #0
+ str r0, [sp]
+ ldr r3, [r5, #0x24]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021E00C4
+ add r0, r5, #0
+ bl MOD16_021E0070
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021E0048
+
+ thumb_func_start MOD16_021E0070
+MOD16_021E0070: ; 0x021E0070
+ mov r2, #0
+ add r3, r0, #0
+ mov r1, #3
+_021E0076:
+ add r2, r2, #1
+ str r1, [r3, #0x2c]
+ add r3, r3, #4
+ cmp r2, #6
+ blt _021E0076
+ mov r2, #0
+ mov r1, #3
+_021E0084:
+ add r2, r2, #1
+ str r1, [r0, #0x44]
+ add r0, r0, #4
+ cmp r2, #0xf
+ blt _021E0084
+ bx lr
+ thumb_func_end MOD16_021E0070
+
+ thumb_func_start MOD16_021E0090
+MOD16_021E0090: ; 0x021E0090
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD16_021E026C
+ add r0, r4, #0
+ bl MOD16_021E02AC
+ pop {r4, pc}
+ thumb_func_end MOD16_021E0090
+
+ thumb_func_start MOD16_021E00A0
+MOD16_021E00A0: ; 0x021E00A0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ bl MOD16_021E02AC
+ ldr r0, [r5, #0x28]
+ add r1, r4, #0
+ str r0, [sp]
+ ldr r3, [r5, #0x24]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD16_021E00C4
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E00A0
+
+ thumb_func_start MOD16_021E00C4
+MOD16_021E00C4: ; 0x021E00C4
+ push {r3, lr}
+ cmp r3, #3
+ bhi _021E0100
+ add r3, r3, r3
+ add r3, pc
+ ldrh r3, [r3, #6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_021E00D6: ; jump table
+ .short _021E00DE - _021E00D6 - 2 ; case 0
+ .short _021E00E4 - _021E00D6 - 2 ; case 1
+ .short _021E00EA - _021E00D6 - 2 ; case 2
+ .short _021E00FC - _021E00D6 - 2 ; case 3
+_021E00DE:
+ bl MOD16_021E02D4
+ pop {r3, pc}
+_021E00E4:
+ bl MOD16_021E0400
+ pop {r3, pc}
+_021E00EA:
+ ldr r3, [sp, #8]
+ cmp r3, #0
+ bne _021E00F6
+ bl MOD16_021E0558
+ pop {r3, pc}
+_021E00F6:
+ bl MOD16_021E06F8
+ pop {r3, pc}
+_021E00FC:
+ bl MOD16_021E08A0
+_021E0100:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E00C4
+
+ thumb_func_start MOD16_021E0104
+MOD16_021E0104: ; 0x021E0104
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021E01FC
+ ldr r2, [r5, #0x24]
+ ldr r3, [r5, #0x28]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E011C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E0104
+
+ thumb_func_start MOD16_021E011C
+MOD16_021E011C: ; 0x021E011C
+ push {r3, lr}
+ cmp r2, #3
+ bhi _021E0156
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021E012E: ; jump table
+ .short _021E0136 - _021E012E - 2 ; case 0
+ .short _021E013C - _021E012E - 2 ; case 1
+ .short _021E0142 - _021E012E - 2 ; case 2
+ .short _021E0152 - _021E012E - 2 ; case 3
+_021E0136:
+ bl MOD16_021E0364
+ pop {r3, pc}
+_021E013C:
+ bl MOD16_021E0490
+ pop {r3, pc}
+_021E0142:
+ cmp r3, #0
+ bne _021E014C
+ bl MOD16_021E05FC
+ pop {r3, pc}
+_021E014C:
+ bl MOD16_021E07B0
+ pop {r3, pc}
+_021E0152:
+ bl MOD16_021E0930
+_021E0156:
+ pop {r3, pc}
+ thumb_func_end MOD16_021E011C
+
+ thumb_func_start MOD16_021E0158
+MOD16_021E0158: ; 0x021E0158
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r2, #0
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, r6, #0
+ mov r1, #0x18
+ bl FUN_02016998
+ str r0, [r5, #4]
+ mov r0, #1
+ lsl r0, r0, #8
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0x20
+ add r0, r0, #4
+ mov r2, #0x40
+ mov r3, #0xc0
+ bl MOD16_021D7C98
+ mov r0, #0xec
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0
+ mov r2, #0x20
+ mov r3, #0xbc
+ bl MOD16_021D7C98
+ mov r0, #1
+ lsl r0, r0, #8
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0x40
+ add r0, #8
+ mov r2, #0x60
+ mov r3, #0xc0
+ bl MOD16_021D7C98
+ mov r0, #1
+ lsl r0, r0, #8
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0x60
+ add r0, #0xc
+ mov r2, #0x80
+ mov r3, #0xc0
+ bl MOD16_021D7C98
+ mov r0, #1
+ lsl r0, r0, #8
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0x80
+ add r0, #0x10
+ mov r2, #0xa0
+ mov r3, #0xc0
+ bl MOD16_021D7C98
+ mov r0, #0xfc
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0xa0
+ add r0, #0x14
+ mov r2, #0xc0
+ mov r3, #0xac
+ bl MOD16_021D7C98
+ str r4, [r5, #0x10]
+ str r5, [r5, #0x14]
+ str r6, [sp]
+ add r3, r5, #0
+ ldr r0, [r5, #4]
+ ldr r2, _021E01F8 ; =MOD16_021E0284
+ mov r1, #6
+ add r3, #0x10
+ bl FUN_020220C4
+ str r0, [r5]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021E01F8: .word MOD16_021E0284
+ thumb_func_end MOD16_021E0158
+
+ thumb_func_start MOD16_021E01FC
+MOD16_021E01FC: ; 0x021E01FC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD16_021E0214
+ ldr r0, [r4]
+ bl FUN_02022144
+ ldr r1, [r4, #0x24]
+ add r0, r4, #0
+ bl MOD16_021E0224
+ pop {r4, pc}
+ thumb_func_end MOD16_021E01FC
+
+ thumb_func_start MOD16_021E0214
+MOD16_021E0214: ; 0x021E0214
+ mov r2, #0
+ mov r1, #3
+_021E0218:
+ add r2, r2, #1
+ str r1, [r0, #0x2c]
+ add r0, r0, #4
+ cmp r2, #6
+ blt _021E0218
+ bx lr
+ thumb_func_end MOD16_021E0214
+
+ thumb_func_start MOD16_021E0224
+MOD16_021E0224: ; 0x021E0224
+ cmp r1, #3
+ bhi _021E026A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E0234: ; jump table
+ .short _021E023C - _021E0234 - 2 ; case 0
+ .short _021E0248 - _021E0234 - 2 ; case 1
+ .short _021E0254 - _021E0234 - 2 ; case 2
+ .short _021E0260 - _021E0234 - 2 ; case 3
+_021E023C:
+ ldr r1, [r0, #0x30]
+ cmp r1, #2
+ beq _021E026A
+ mov r1, #1
+ str r1, [r0, #0x30]
+ bx lr
+_021E0248:
+ ldr r1, [r0, #0x34]
+ cmp r1, #2
+ beq _021E026A
+ mov r1, #1
+ str r1, [r0, #0x34]
+ bx lr
+_021E0254:
+ ldr r1, [r0, #0x38]
+ cmp r1, #2
+ beq _021E026A
+ mov r1, #1
+ str r1, [r0, #0x38]
+ bx lr
+_021E0260:
+ ldr r1, [r0, #0x3c]
+ cmp r1, #2
+ beq _021E026A
+ mov r1, #1
+ str r1, [r0, #0x3c]
+_021E026A:
+ bx lr
+ thumb_func_end MOD16_021E0224
+
+ thumb_func_start MOD16_021E026C
+MOD16_021E026C: ; 0x021E026C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0202212C
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E026C
+
+ thumb_func_start MOD16_021E0284
+MOD16_021E0284: ; 0x021E0284
+ ldr r2, [r2, #4]
+ lsl r3, r0, #2
+ add r3, r2, r3
+ str r1, [r3, #0x2c]
+ cmp r1, #2
+ bne _021E02A4
+ add r1, r2, #0
+ add r1, #0x80
+ str r0, [r1]
+ add r0, r2, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r2, #0x94
+ add r0, r0, #1
+ str r0, [r2]
+ bx lr
+_021E02A4:
+ mov r0, #0
+ add r2, #0x94
+ str r0, [r2]
+ bx lr
+ thumb_func_end MOD16_021E0284
+
+ thumb_func_start MOD16_021E02AC
+MOD16_021E02AC: ; 0x021E02AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl FUN_0202212C
+ ldr r0, [r4, #0xc]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E02AC
+
+ thumb_func_start MOD16_021E02C4
+MOD16_021E02C4: ; 0x021E02C4
+ mov r2, #0
+ mov r1, #3
+_021E02C8:
+ add r2, r2, #1
+ str r1, [r0, #0x44]
+ add r0, r0, #4
+ cmp r2, #0xf
+ blt _021E02C8
+ bx lr
+ thumb_func_end MOD16_021E02C4
+
+ thumb_func_start MOD16_021E02D4
+MOD16_021E02D4: ; 0x021E02D4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r2, #0
+ mov r1, #0x18
+ str r2, [sp, #0xc]
+ bl FUN_02016998
+ ldr r1, [sp, #4]
+ str r0, [r1, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r0, #0x30
+ ldr r6, [sp, #0x14]
+ str r0, [sp, #0x10]
+_021E02F4:
+ ldr r0, [sp, #0x10]
+ ldr r7, [sp, #0x10]
+ str r0, [sp, #0x18]
+ add r0, #0x10
+ mov r4, #0
+ mov r5, #0x30
+ sub r7, #0x10
+ str r0, [sp, #0x18]
+_021E0304:
+ add r0, r5, #0
+ add r0, #0x28
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r3, r5, #0
+ ldr r1, [r0, #0xc]
+ add r0, r4, r6
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r2, [sp, #0x18]
+ add r1, r7, #0
+ sub r3, #0x28
+ bl MOD16_021D7C98
+ add r4, r4, #1
+ add r5, #0x50
+ cmp r4, #2
+ blt _021E0304
+ ldr r0, [sp, #0x10]
+ add r6, r6, #2
+ add r0, #0x20
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ cmp r0, #3
+ blt _021E02F4
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ ldr r3, [sp, #4]
+ str r1, [r0, #0x10]
+ str r0, [r0, #0x14]
+ ldr r0, [sp, #0xc]
+ ldr r2, _021E0360 ; =MOD16_021E03EC
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ mov r1, #6
+ ldr r0, [r0, #0xc]
+ add r3, #0x10
+ bl FUN_020220C4
+ ldr r1, [sp, #4]
+ str r0, [r1, #8]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E0360: .word MOD16_021E03EC
+ thumb_func_end MOD16_021E02D4
+
+ thumb_func_start MOD16_021E0364
+MOD16_021E0364: ; 0x021E0364
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ mov r1, #0
+ add r2, r4, #0
+ mov r0, #3
+_021E0370:
+ add r1, r1, #1
+ str r0, [r2, #0x44]
+ add r2, r2, #4
+ cmp r1, #6
+ blt _021E0370
+ ldr r0, [r4, #8]
+ bl FUN_02022144
+ ldr r0, [r5, #8]
+ bl MOD16_021DEBD4
+ cmp r0, #5
+ bhi _021E03E8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E0396: ; jump table
+ .short _021E03A2 - _021E0396 - 2 ; case 0
+ .short _021E03AE - _021E0396 - 2 ; case 1
+ .short _021E03BA - _021E0396 - 2 ; case 2
+ .short _021E03C6 - _021E0396 - 2 ; case 3
+ .short _021E03D2 - _021E0396 - 2 ; case 4
+ .short _021E03DE - _021E0396 - 2 ; case 5
+_021E03A2:
+ ldr r0, [r4, #0x44]
+ cmp r0, #2
+ beq _021E03E8
+ mov r0, #1
+ str r0, [r4, #0x44]
+ pop {r3, r4, r5, pc}
+_021E03AE:
+ ldr r0, [r4, #0x48]
+ cmp r0, #2
+ beq _021E03E8
+ mov r0, #1
+ str r0, [r4, #0x48]
+ pop {r3, r4, r5, pc}
+_021E03BA:
+ ldr r0, [r4, #0x4c]
+ cmp r0, #2
+ beq _021E03E8
+ mov r0, #1
+ str r0, [r4, #0x4c]
+ pop {r3, r4, r5, pc}
+_021E03C6:
+ ldr r0, [r4, #0x50]
+ cmp r0, #2
+ beq _021E03E8
+ mov r0, #1
+ str r0, [r4, #0x50]
+ pop {r3, r4, r5, pc}
+_021E03D2:
+ ldr r0, [r4, #0x54]
+ cmp r0, #2
+ beq _021E03E8
+ mov r0, #1
+ str r0, [r4, #0x54]
+ pop {r3, r4, r5, pc}
+_021E03DE:
+ ldr r0, [r4, #0x58]
+ cmp r0, #2
+ beq _021E03E8
+ mov r0, #1
+ str r0, [r4, #0x58]
+_021E03E8:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E0364
+
+ thumb_func_start MOD16_021E03EC
+MOD16_021E03EC: ; 0x021E03EC
+ ldr r3, [r2, #4]
+ lsl r2, r0, #2
+ add r2, r3, r2
+ str r1, [r2, #0x44]
+ cmp r1, #2
+ bne _021E03FC
+ add r3, #0x84
+ str r0, [r3]
+_021E03FC:
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E03EC
+
+ thumb_func_start MOD16_021E0400
+MOD16_021E0400: ; 0x021E0400
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r2, #0
+ mov r1, #0x28
+ str r2, [sp, #0xc]
+ bl FUN_02016998
+ ldr r1, [sp, #4]
+ str r0, [r1, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r0, #0x10
+ ldr r6, [sp, #0x14]
+ str r0, [sp, #0x10]
+_021E0420:
+ ldr r0, [sp, #0x10]
+ ldr r7, [sp, #0x10]
+ str r0, [sp, #0x18]
+ add r0, #0x10
+ mov r4, #0
+ mov r5, #0x30
+ sub r7, #0x10
+ str r0, [sp, #0x18]
+_021E0430:
+ add r0, r5, #0
+ add r0, #0x28
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r3, r5, #0
+ ldr r1, [r0, #0xc]
+ add r0, r4, r6
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r2, [sp, #0x18]
+ add r1, r7, #0
+ sub r3, #0x28
+ bl MOD16_021D7C98
+ add r4, r4, #1
+ add r5, #0x50
+ cmp r4, #2
+ blt _021E0430
+ ldr r0, [sp, #0x10]
+ add r6, r6, #2
+ add r0, #0x20
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ cmp r0, #5
+ blt _021E0420
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ ldr r3, [sp, #4]
+ str r1, [r0, #0x10]
+ str r0, [r0, #0x14]
+ ldr r0, [sp, #0xc]
+ ldr r2, _021E048C ; =MOD16_021E0544
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ mov r1, #0xa
+ ldr r0, [r0, #0xc]
+ add r3, #0x10
+ bl FUN_020220C4
+ ldr r1, [sp, #4]
+ str r0, [r1, #8]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E048C: .word MOD16_021E0544
+ thumb_func_end MOD16_021E0400
+
+ thumb_func_start MOD16_021E0490
+MOD16_021E0490: ; 0x021E0490
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ mov r1, #0
+ add r2, r4, #0
+ mov r0, #3
+_021E049C:
+ add r1, r1, #1
+ str r0, [r2, #0x44]
+ add r2, r2, #4
+ cmp r1, #0xa
+ blt _021E049C
+ ldr r0, [r4, #8]
+ bl FUN_02022144
+ ldr r0, [r5, #8]
+ bl MOD16_021DEBF0
+ cmp r0, #9
+ bhi _021E0540
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E04C2: ; jump table
+ .short _021E0540 - _021E04C2 - 2 ; case 0
+ .short _021E04D6 - _021E04C2 - 2 ; case 1
+ .short _021E04E2 - _021E04C2 - 2 ; case 2
+ .short _021E04EE - _021E04C2 - 2 ; case 3
+ .short _021E04FA - _021E04C2 - 2 ; case 4
+ .short _021E0506 - _021E04C2 - 2 ; case 5
+ .short _021E0512 - _021E04C2 - 2 ; case 6
+ .short _021E051E - _021E04C2 - 2 ; case 7
+ .short _021E052A - _021E04C2 - 2 ; case 8
+ .short _021E0536 - _021E04C2 - 2 ; case 9
+_021E04D6:
+ ldr r0, [r4, #0x44]
+ cmp r0, #2
+ beq _021E0540
+ mov r0, #1
+ str r0, [r4, #0x44]
+ pop {r3, r4, r5, pc}
+_021E04E2:
+ ldr r0, [r4, #0x48]
+ cmp r0, #2
+ beq _021E0540
+ mov r0, #1
+ str r0, [r4, #0x48]
+ pop {r3, r4, r5, pc}
+_021E04EE:
+ ldr r0, [r4, #0x4c]
+ cmp r0, #2
+ beq _021E0540
+ mov r0, #1
+ str r0, [r4, #0x4c]
+ pop {r3, r4, r5, pc}
+_021E04FA:
+ ldr r0, [r4, #0x50]
+ cmp r0, #2
+ beq _021E0540
+ mov r0, #1
+ str r0, [r4, #0x50]
+ pop {r3, r4, r5, pc}
+_021E0506:
+ ldr r0, [r4, #0x54]
+ cmp r0, #2
+ beq _021E0540
+ mov r0, #1
+ str r0, [r4, #0x54]
+ pop {r3, r4, r5, pc}
+_021E0512:
+ ldr r0, [r4, #0x58]
+ cmp r0, #2
+ beq _021E0540
+ mov r0, #1
+ str r0, [r4, #0x58]
+ pop {r3, r4, r5, pc}
+_021E051E:
+ ldr r0, [r4, #0x5c]
+ cmp r0, #2
+ beq _021E0540
+ mov r0, #1
+ str r0, [r4, #0x5c]
+ pop {r3, r4, r5, pc}
+_021E052A:
+ ldr r0, [r4, #0x60]
+ cmp r0, #2
+ beq _021E0540
+ mov r0, #1
+ str r0, [r4, #0x60]
+ pop {r3, r4, r5, pc}
+_021E0536:
+ ldr r0, [r4, #0x64]
+ cmp r0, #2
+ beq _021E0540
+ mov r0, #1
+ str r0, [r4, #0x64]
+_021E0540:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E0490
+
+ thumb_func_start MOD16_021E0544
+MOD16_021E0544: ; 0x021E0544
+ ldr r3, [r2, #4]
+ lsl r2, r0, #2
+ add r2, r3, r2
+ str r1, [r2, #0x44]
+ cmp r1, #2
+ bne _021E0554
+ add r3, #0x84
+ str r0, [r3]
+_021E0554:
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E0544
+
+ thumb_func_start MOD16_021E0558
+MOD16_021E0558: ; 0x021E0558
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r2, #0
+ mov r1, #0x2c
+ str r2, [sp, #0xc]
+ bl FUN_02016998
+ ldr r1, [sp, #4]
+ str r0, [r1, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r0, #0x10
+ ldr r6, [sp, #0x14]
+ str r0, [sp, #0x10]
+_021E0578:
+ ldr r0, [sp, #0x10]
+ ldr r7, [sp, #0x10]
+ str r0, [sp, #0x18]
+ add r0, #0x10
+ mov r4, #0
+ mov r5, #0x30
+ sub r7, #0x10
+ str r0, [sp, #0x18]
+_021E0588:
+ add r0, r5, #0
+ add r0, #0x28
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r3, r5, #0
+ ldr r1, [r0, #0xc]
+ add r0, r4, r6
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r2, [sp, #0x18]
+ add r1, r7, #0
+ sub r3, #0x28
+ bl MOD16_021D7C98
+ add r4, r4, #1
+ add r5, #0x50
+ cmp r4, #2
+ blt _021E0588
+ ldr r0, [sp, #0x10]
+ add r6, r6, #2
+ add r0, #0x20
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ cmp r0, #5
+ blt _021E0578
+ mov r0, #0x28
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ mov r1, #0xa0
+ ldr r0, [r0, #0xc]
+ mov r2, #0xc0
+ add r0, #0x28
+ mov r3, #8
+ bl MOD16_021D7C98
+ ldr r3, [sp, #4]
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ ldr r2, _021E05F8 ; =MOD16_021E06CC
+ str r1, [r0, #0x10]
+ str r0, [r0, #0x14]
+ ldr r0, [sp, #0xc]
+ mov r1, #0xb
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r3, #0x10
+ ldr r0, [r0, #0xc]
+ bl FUN_020220C4
+ ldr r1, [sp, #4]
+ str r0, [r1, #8]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E05F8: .word MOD16_021E06CC
+ thumb_func_end MOD16_021E0558
+
+ thumb_func_start MOD16_021E05FC
+MOD16_021E05FC: ; 0x021E05FC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r1, #0
+ add r2, r5, #0
+ mov r0, #3
+_021E0608:
+ add r1, r1, #1
+ str r0, [r2, #0x44]
+ add r2, r2, #4
+ cmp r1, #0xb
+ blt _021E0608
+ ldr r0, [r5, #8]
+ bl FUN_02022144
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD16_021DEC14
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD16_021E063C
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD16_021DEC14
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD16_021E063C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E05FC
+
+ thumb_func_start MOD16_021E063C
+MOD16_021E063C: ; 0x021E063C
+ cmp r1, #9
+ bhi _021E06CA
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E064C: ; jump table
+ .short _021E06CA - _021E064C - 2 ; case 0
+ .short _021E0660 - _021E064C - 2 ; case 1
+ .short _021E066C - _021E064C - 2 ; case 2
+ .short _021E0678 - _021E064C - 2 ; case 3
+ .short _021E0684 - _021E064C - 2 ; case 4
+ .short _021E0690 - _021E064C - 2 ; case 5
+ .short _021E069C - _021E064C - 2 ; case 6
+ .short _021E06A8 - _021E064C - 2 ; case 7
+ .short _021E06B4 - _021E064C - 2 ; case 8
+ .short _021E06C0 - _021E064C - 2 ; case 9
+_021E0660:
+ ldr r1, [r0, #0x44]
+ cmp r1, #2
+ beq _021E06CA
+ mov r1, #1
+ str r1, [r0, #0x44]
+ bx lr
+_021E066C:
+ ldr r1, [r0, #0x48]
+ cmp r1, #2
+ beq _021E06CA
+ mov r1, #1
+ str r1, [r0, #0x48]
+ bx lr
+_021E0678:
+ ldr r1, [r0, #0x4c]
+ cmp r1, #2
+ beq _021E06CA
+ mov r1, #1
+ str r1, [r0, #0x4c]
+ bx lr
+_021E0684:
+ ldr r1, [r0, #0x50]
+ cmp r1, #2
+ beq _021E06CA
+ mov r1, #1
+ str r1, [r0, #0x50]
+ bx lr
+_021E0690:
+ ldr r1, [r0, #0x54]
+ cmp r1, #2
+ beq _021E06CA
+ mov r1, #1
+ str r1, [r0, #0x54]
+ bx lr
+_021E069C:
+ ldr r1, [r0, #0x58]
+ cmp r1, #2
+ beq _021E06CA
+ mov r1, #1
+ str r1, [r0, #0x58]
+ bx lr
+_021E06A8:
+ ldr r1, [r0, #0x5c]
+ cmp r1, #2
+ beq _021E06CA
+ mov r1, #1
+ str r1, [r0, #0x5c]
+ bx lr
+_021E06B4:
+ ldr r1, [r0, #0x60]
+ cmp r1, #2
+ beq _021E06CA
+ mov r1, #1
+ str r1, [r0, #0x60]
+ bx lr
+_021E06C0:
+ ldr r1, [r0, #0x64]
+ cmp r1, #2
+ beq _021E06CA
+ mov r1, #1
+ str r1, [r0, #0x64]
+_021E06CA:
+ bx lr
+ thumb_func_end MOD16_021E063C
+
+ thumb_func_start MOD16_021E06CC
+MOD16_021E06CC: ; 0x021E06CC
+ ldr r2, [r2, #4]
+ lsl r3, r0, #2
+ add r3, r2, r3
+ str r1, [r3, #0x44]
+ cmp r1, #2
+ bne _021E06F0
+ add r1, r2, #0
+ add r1, #0x90
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _021E06F6
+ add r1, r2, #0
+ add r1, #0x84
+ str r0, [r1]
+ mov r0, #1
+ add r2, #0x90
+ str r0, [r2]
+ bx lr
+_021E06F0:
+ mov r0, #0
+ add r2, #0x90
+ str r0, [r2]
+_021E06F6:
+ bx lr
+ thumb_func_end MOD16_021E06CC
+
+ thumb_func_start MOD16_021E06F8
+MOD16_021E06F8: ; 0x021E06F8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r2, #0
+ mov r1, #0x28
+ str r2, [sp, #0xc]
+ bl FUN_02016998
+ ldr r1, [sp, #4]
+ str r0, [r1, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r0, #0x10
+ ldr r6, [sp, #0x14]
+ str r0, [sp, #0x10]
+_021E0718:
+ ldr r0, [sp, #0x10]
+ ldr r7, [sp, #0x10]
+ str r0, [sp, #0x18]
+ add r0, #0x10
+ mov r4, #0
+ mov r5, #0x30
+ sub r7, #0x10
+ str r0, [sp, #0x18]
+_021E0728:
+ add r0, r5, #0
+ add r0, #0x28
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r3, r5, #0
+ ldr r1, [r0, #0xc]
+ add r0, r4, r6
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r2, [sp, #0x18]
+ add r1, r7, #0
+ sub r3, #0x28
+ bl MOD16_021D7C98
+ add r4, r4, #1
+ add r5, #0x50
+ cmp r4, #2
+ blt _021E0728
+ ldr r0, [sp, #0x10]
+ add r6, r6, #2
+ add r0, #0x20
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ cmp r0, #4
+ blt _021E0718
+ mov r0, #0xa8
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ mov r1, #0x80
+ ldr r0, [r0, #0xc]
+ mov r2, #0xa0
+ add r0, #0x20
+ mov r3, #0x58
+ bl MOD16_021D7C98
+ mov r0, #0x28
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ mov r1, #0xa0
+ ldr r0, [r0, #0xc]
+ mov r2, #0xc0
+ add r0, #0x24
+ mov r3, #8
+ bl MOD16_021D7C98
+ ldr r3, [sp, #4]
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ ldr r2, _021E07AC ; =MOD16_021E07F0
+ str r1, [r0, #0x10]
+ str r0, [r0, #0x14]
+ ldr r0, [sp, #0xc]
+ mov r1, #0xa
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r3, #0x10
+ ldr r0, [r0, #0xc]
+ bl FUN_020220C4
+ ldr r1, [sp, #4]
+ str r0, [r1, #8]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E07AC: .word MOD16_021E07F0
+ thumb_func_end MOD16_021E06F8
+
+ thumb_func_start MOD16_021E07B0
+MOD16_021E07B0: ; 0x021E07B0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r1, #0
+ add r2, r5, #0
+ mov r0, #3
+_021E07BC:
+ add r1, r1, #1
+ str r0, [r2, #0x44]
+ add r2, r2, #4
+ cmp r1, #0xa
+ blt _021E07BC
+ ldr r0, [r5, #8]
+ bl FUN_02022144
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD16_021DEC14
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD16_021E081C
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD16_021DEC14
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD16_021E081C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E07B0
+
+ thumb_func_start MOD16_021E07F0
+MOD16_021E07F0: ; 0x021E07F0
+ ldr r2, [r2, #4]
+ lsl r3, r0, #2
+ add r3, r2, r3
+ str r1, [r3, #0x44]
+ cmp r1, #2
+ bne _021E0814
+ add r1, r2, #0
+ add r1, #0x90
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _021E081A
+ add r1, r2, #0
+ add r1, #0x84
+ str r0, [r1]
+ mov r0, #1
+ add r2, #0x90
+ str r0, [r2]
+ bx lr
+_021E0814:
+ mov r0, #0
+ add r2, #0x90
+ str r0, [r2]
+_021E081A:
+ bx lr
+ thumb_func_end MOD16_021E07F0
+
+ thumb_func_start MOD16_021E081C
+MOD16_021E081C: ; 0x021E081C
+ sub r1, #0xa
+ cmp r1, #7
+ bhi _021E089C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E082E: ; jump table
+ .short _021E083E - _021E082E - 2 ; case 0
+ .short _021E084A - _021E082E - 2 ; case 1
+ .short _021E0856 - _021E082E - 2 ; case 2
+ .short _021E0862 - _021E082E - 2 ; case 3
+ .short _021E086E - _021E082E - 2 ; case 4
+ .short _021E087A - _021E082E - 2 ; case 5
+ .short _021E0886 - _021E082E - 2 ; case 6
+ .short _021E0892 - _021E082E - 2 ; case 7
+_021E083E:
+ ldr r1, [r0, #0x44]
+ cmp r1, #2
+ beq _021E089C
+ mov r1, #1
+ str r1, [r0, #0x44]
+ bx lr
+_021E084A:
+ ldr r1, [r0, #0x48]
+ cmp r1, #2
+ beq _021E089C
+ mov r1, #1
+ str r1, [r0, #0x48]
+ bx lr
+_021E0856:
+ ldr r1, [r0, #0x4c]
+ cmp r1, #2
+ beq _021E089C
+ mov r1, #1
+ str r1, [r0, #0x4c]
+ bx lr
+_021E0862:
+ ldr r1, [r0, #0x50]
+ cmp r1, #2
+ beq _021E089C
+ mov r1, #1
+ str r1, [r0, #0x50]
+ bx lr
+_021E086E:
+ ldr r1, [r0, #0x54]
+ cmp r1, #2
+ beq _021E089C
+ mov r1, #1
+ str r1, [r0, #0x54]
+ bx lr
+_021E087A:
+ ldr r1, [r0, #0x58]
+ cmp r1, #2
+ beq _021E089C
+ mov r1, #1
+ str r1, [r0, #0x58]
+ bx lr
+_021E0886:
+ ldr r1, [r0, #0x5c]
+ cmp r1, #2
+ beq _021E089C
+ mov r1, #1
+ str r1, [r0, #0x5c]
+ bx lr
+_021E0892:
+ ldr r1, [r0, #0x60]
+ cmp r1, #2
+ beq _021E089C
+ mov r1, #1
+ str r1, [r0, #0x60]
+_021E089C:
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E081C
+
+ thumb_func_start MOD16_021E08A0
+MOD16_021E08A0: ; 0x021E08A0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r2, #0
+ mov r1, #0x3c
+ str r2, [sp, #0xc]
+ bl FUN_02016998
+ ldr r1, [sp, #4]
+ str r0, [r1, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r0, #0x10
+ ldr r6, [sp, #0x14]
+ str r0, [sp, #0x10]
+_021E08C0:
+ ldr r0, [sp, #0x10]
+ ldr r7, [sp, #0x10]
+ str r0, [sp, #0x18]
+ add r0, #0x10
+ mov r4, #0
+ mov r5, #0x1c
+ sub r7, #0x10
+ str r0, [sp, #0x18]
+_021E08D0:
+ add r0, r5, #0
+ add r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r3, r5, #0
+ ldr r1, [r0, #0xc]
+ add r0, r4, r6
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r2, [sp, #0x18]
+ add r1, r7, #0
+ sub r3, #0x18
+ bl MOD16_021D7C98
+ add r4, r4, #1
+ add r5, #0x38
+ cmp r4, #3
+ blt _021E08D0
+ ldr r0, [sp, #0x10]
+ add r6, r6, #3
+ add r0, #0x20
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ cmp r0, #5
+ blt _021E08C0
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ ldr r3, [sp, #4]
+ str r1, [r0, #0x10]
+ str r0, [r0, #0x14]
+ ldr r0, [sp, #0xc]
+ ldr r2, _021E092C ; =MOD16_021E0A28
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ mov r1, #0xf
+ ldr r0, [r0, #0xc]
+ add r3, #0x10
+ bl FUN_020220C4
+ ldr r1, [sp, #4]
+ str r0, [r1, #8]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E092C: .word MOD16_021E0A28
+ thumb_func_end MOD16_021E08A0
+
+ thumb_func_start MOD16_021E0930
+MOD16_021E0930: ; 0x021E0930
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ mov r1, #0
+ add r2, r4, #0
+ mov r0, #3
+_021E093C:
+ add r1, r1, #1
+ str r0, [r2, #0x44]
+ add r2, r2, #4
+ cmp r1, #0xf
+ blt _021E093C
+ ldr r0, [r4, #8]
+ bl FUN_02022144
+ ldr r0, [r5, #8]
+ bl MOD16_021DEC38
+ cmp r0, #0xe
+ bhi _021E0A26
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E0962: ; jump table
+ .short _021E0A26 - _021E0962 - 2 ; case 0
+ .short _021E0980 - _021E0962 - 2 ; case 1
+ .short _021E098C - _021E0962 - 2 ; case 2
+ .short _021E0998 - _021E0962 - 2 ; case 3
+ .short _021E09A4 - _021E0962 - 2 ; case 4
+ .short _021E09B0 - _021E0962 - 2 ; case 5
+ .short _021E09BC - _021E0962 - 2 ; case 6
+ .short _021E09C8 - _021E0962 - 2 ; case 7
+ .short _021E09D4 - _021E0962 - 2 ; case 8
+ .short _021E09E0 - _021E0962 - 2 ; case 9
+ .short _021E09EC - _021E0962 - 2 ; case 10
+ .short _021E09F8 - _021E0962 - 2 ; case 11
+ .short _021E0A04 - _021E0962 - 2 ; case 12
+ .short _021E0A10 - _021E0962 - 2 ; case 13
+ .short _021E0A1C - _021E0962 - 2 ; case 14
+_021E0980:
+ ldr r0, [r4, #0x60]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x60]
+ pop {r3, r4, r5, pc}
+_021E098C:
+ ldr r0, [r4, #0x70]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x70]
+ pop {r3, r4, r5, pc}
+_021E0998:
+ ldr r0, [r4, #0x58]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x58]
+ pop {r3, r4, r5, pc}
+_021E09A4:
+ ldr r0, [r4, #0x48]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x48]
+ pop {r3, r4, r5, pc}
+_021E09B0:
+ ldr r0, [r4, #0x74]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x74]
+ pop {r3, r4, r5, pc}
+_021E09BC:
+ ldr r0, [r4, #0x64]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x64]
+ pop {r3, r4, r5, pc}
+_021E09C8:
+ ldr r0, [r4, #0x78]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x78]
+ pop {r3, r4, r5, pc}
+_021E09D4:
+ ldr r0, [r4, #0x54]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x54]
+ pop {r3, r4, r5, pc}
+_021E09E0:
+ ldr r0, [r4, #0x50]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x50]
+ pop {r3, r4, r5, pc}
+_021E09EC:
+ ldr r0, [r4, #0x5c]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x5c]
+ pop {r3, r4, r5, pc}
+_021E09F8:
+ ldr r0, [r4, #0x68]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x68]
+ pop {r3, r4, r5, pc}
+_021E0A04:
+ ldr r0, [r4, #0x4c]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x4c]
+ pop {r3, r4, r5, pc}
+_021E0A10:
+ ldr r0, [r4, #0x44]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x44]
+ pop {r3, r4, r5, pc}
+_021E0A1C:
+ ldr r0, [r4, #0x6c]
+ cmp r0, #2
+ beq _021E0A26
+ mov r0, #1
+ str r0, [r4, #0x6c]
+_021E0A26:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E0930
+
+ thumb_func_start MOD16_021E0A28
+MOD16_021E0A28: ; 0x021E0A28
+ ldr r3, [r2, #4]
+ lsl r2, r0, #2
+ add r2, r3, r2
+ str r1, [r2, #0x44]
+ cmp r1, #2
+ bne _021E0A38
+ add r3, #0x84
+ str r0, [r3]
+_021E0A38:
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E0A28
+
+ thumb_func_start MOD16_021E0A3C
+MOD16_021E0A3C: ; 0x021E0A3C
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r6, r0, #0
+ cmp r4, #5
+ bhi _021E0A9A
+ add r5, r4, r4
+ add r5, pc
+ ldrh r5, [r5, #6]
+ lsl r5, r5, #0x10
+ asr r5, r5, #0x10
+ add pc, r5
+_021E0A54: ; jump table
+ .short _021E0A60 - _021E0A54 - 2 ; case 0
+ .short _021E0A6A - _021E0A54 - 2 ; case 1
+ .short _021E0A74 - _021E0A54 - 2 ; case 2
+ .short _021E0A7E - _021E0A54 - 2 ; case 3
+ .short _021E0A88 - _021E0A54 - 2 ; case 4
+ .short _021E0A92 - _021E0A54 - 2 ; case 5
+_021E0A60:
+ mov r2, #0x10
+ mov r1, #0xd4
+ mov r3, #0x1c
+ add r0, r2, #0
+ b _021E0A9A
+_021E0A6A:
+ mov r1, #0xe0
+ mov r2, #0x30
+ mov r3, #0x2c
+ mov r0, #0x10
+ b _021E0A9A
+_021E0A74:
+ mov r1, #0xe0
+ mov r2, #0x50
+ mov r3, #0x2c
+ mov r0, #0x10
+ b _021E0A9A
+_021E0A7E:
+ mov r1, #0xe0
+ mov r2, #0x70
+ mov r3, #0x2c
+ mov r0, #0x10
+ b _021E0A9A
+_021E0A88:
+ mov r1, #0xe0
+ mov r2, #0x90
+ mov r3, #0x2c
+ mov r0, #0x10
+ b _021E0A9A
+_021E0A92:
+ mov r1, #0xd4
+ mov r2, #0xb0
+ mov r3, #0x3c
+ mov r0, #0x10
+_021E0A9A:
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ str r4, [sp, #0xc]
+ bl MOD16_021DB590
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E0A3C
+
+ thumb_func_start MOD16_021E0AB0
+MOD16_021E0AB0: ; 0x021E0AB0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E0BB4 ; =0x021C48B8
+ ldr r1, [r0, #0x44]
+ mov r0, #1
+ tst r0, r1
+ beq _021E0B86
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E0B94
+ ldr r0, [r4, #0x18]
+ bl MOD16_021DB528
+ cmp r0, #5
+ bhi _021E0B76
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E0ADE: ; jump table
+ .short _021E0B60 - _021E0ADE - 2 ; case 0
+ .short _021E0AEA - _021E0ADE - 2 ; case 1
+ .short _021E0B02 - _021E0ADE - 2 ; case 2
+ .short _021E0B18 - _021E0ADE - 2 ; case 3
+ .short _021E0B30 - _021E0ADE - 2 ; case 4
+ .short _021E0B48 - _021E0ADE - 2 ; case 5
+_021E0AEA:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x2c]
+ b _021E0B76
+_021E0B02:
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x2c]
+ b _021E0B76
+_021E0B18:
+ add r0, r4, #0
+ mov r1, #3
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x2c]
+ b _021E0B76
+_021E0B30:
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x2c]
+ b _021E0B76
+_021E0B48:
+ add r0, r4, #0
+ mov r1, #5
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x2c]
+ b _021E0B76
+_021E0B60:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x2c]
+_021E0B76:
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x94
+ str r1, [r0]
+ b _021E0B94
+_021E0B86:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x8c
+ str r1, [r0]
+_021E0B94:
+ ldr r0, _021E0BB4 ; =0x021C48B8
+ mov r1, #2
+ ldr r0, [r0, #0x48]
+ tst r0, r1
+ beq _021E0BB2
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x80
+ str r2, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x2c]
+_021E0BB2:
+ pop {r4, pc}
+ .align 2, 0
+_021E0BB4: .word 0x021C48B8
+ thumb_func_end MOD16_021E0AB0
+
+ thumb_func_start MOD16_021E0BB8
+MOD16_021E0BB8: ; 0x021E0BB8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ add r0, r1, #0
+ mov r1, #0x7e
+ lsl r1, r1, #2
+ bl FUN_02016998
+ ldr r1, [sp, #0x10]
+ str r0, [r1, #0x1c]
+ mov r0, #0
+ str r0, [sp, #0x20]
+ mov r0, #0x10
+ str r0, [sp, #0x1c]
+ mov r0, #6
+ ldr r7, [sp, #0x20]
+ str r0, [sp, #0x18]
+_021E0BDC:
+ mov r4, #0
+ mov r6, #0x30
+_021E0BE0:
+ ldr r0, [sp, #0x18]
+ add r1, r4, r0
+ ldr r0, [sp, #0x20]
+ cmp r0, #5
+ bhi _021E0C48
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E0BF6: ; jump table
+ .short _021E0C02 - _021E0BF6 - 2 ; case 0
+ .short _021E0C0E - _021E0BF6 - 2 ; case 1
+ .short _021E0C1A - _021E0BF6 - 2 ; case 2
+ .short _021E0C26 - _021E0BF6 - 2 ; case 3
+ .short _021E0C32 - _021E0BF6 - 2 ; case 4
+ .short _021E0C3E - _021E0BF6 - 2 ; case 5
+_021E0C02:
+ cmp r4, #2
+ bne _021E0C0A
+ mov r1, #0
+ b _021E0C48
+_021E0C0A:
+ mov r5, #1
+ b _021E0C48
+_021E0C0E:
+ cmp r4, #2
+ bne _021E0C16
+ mov r1, #1
+ b _021E0C48
+_021E0C16:
+ mov r5, #0
+ b _021E0C48
+_021E0C1A:
+ cmp r4, #2
+ bne _021E0C22
+ mov r1, #2
+ b _021E0C48
+_021E0C22:
+ mov r5, #0
+ b _021E0C48
+_021E0C26:
+ cmp r4, #2
+ bne _021E0C2E
+ mov r1, #3
+ b _021E0C48
+_021E0C2E:
+ mov r5, #0
+ b _021E0C48
+_021E0C32:
+ cmp r4, #2
+ bne _021E0C3A
+ mov r1, #4
+ b _021E0C48
+_021E0C3A:
+ mov r5, #1
+ b _021E0C48
+_021E0C3E:
+ cmp r4, #2
+ bne _021E0C46
+ mov r1, #5
+ b _021E0C48
+_021E0C46:
+ mov r5, #1
+_021E0C48:
+ cmp r4, #2
+ bge _021E0C6E
+ mov r0, #0x10
+ str r0, [sp]
+ str r5, [sp, #4]
+ str r5, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r2, r4, r7
+ mov r1, #0x1c
+ mul r1, r2
+ ldr r0, [r0, #0x1c]
+ ldr r2, [sp, #0x1c]
+ add r0, r0, r1
+ add r1, r6, #0
+ mov r3, #0x3c
+ bl MOD16_021DB590
+ b _021E0C7E
+_021E0C6E:
+ ldr r0, [sp, #0x10]
+ add r2, r4, r7
+ ldr r3, [r0, #0x1c]
+ mov r0, #0x1c
+ mul r0, r2
+ add r0, r3, r0
+ bl MOD16_021E0A3C
+_021E0C7E:
+ add r4, r4, #1
+ add r6, #0x50
+ cmp r4, #3
+ blt _021E0BE0
+ ldr r0, [sp, #0x1c]
+ add r7, r7, #3
+ add r0, #0x20
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r0, r0, #2
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ cmp r0, #6
+ blt _021E0BDC
+ ldr r0, [sp, #0x14]
+ bl MOD16_021DB490
+ ldr r1, [sp, #0x10]
+ mov r2, #3
+ str r0, [r1, #0x18]
+ ldr r1, [r1, #0x1c]
+ mov r3, #6
+ bl MOD16_021DB4B0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E0BB8
+
+ thumb_func_start MOD16_021E0CB8
+MOD16_021E0CB8: ; 0x021E0CB8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E0D8C ; =0x021C48B8
+ ldr r1, [r0, #0x44]
+ mov r0, #1
+ tst r0, r1
+ beq _021E0D82
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E0D88
+ ldr r0, [r4, #0x18]
+ bl MOD16_021DB528
+ sub r0, #8
+ cmp r0, #5
+ bhi _021E0D88
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E0CE8: ; jump table
+ .short _021E0CF4 - _021E0CE8 - 2 ; case 0
+ .short _021E0D0C - _021E0CE8 - 2 ; case 1
+ .short _021E0D24 - _021E0CE8 - 2 ; case 2
+ .short _021E0D3A - _021E0CE8 - 2 ; case 3
+ .short _021E0D52 - _021E0CE8 - 2 ; case 4
+ .short _021E0D6A - _021E0CE8 - 2 ; case 5
+_021E0CF4:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0D0C:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0D24:
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0D3A:
+ add r0, r4, #0
+ mov r1, #3
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0D52:
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0D6A:
+ add r0, r4, #0
+ mov r1, #5
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0D82:
+ mov r0, #0
+ add r4, #0x8c
+ str r0, [r4]
+_021E0D88:
+ pop {r4, pc}
+ nop
+_021E0D8C: .word 0x021C48B8
+ thumb_func_end MOD16_021E0CB8
+
+ thumb_func_start MOD16_021E0D90
+MOD16_021E0D90: ; 0x021E0D90
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ add r0, r1, #0
+ mov r1, #0x7e
+ lsl r1, r1, #2
+ bl FUN_02016998
+ ldr r1, [sp, #0x10]
+ str r0, [r1, #0x1c]
+ mov r0, #0
+ str r0, [sp, #0x20]
+ mov r0, #0x10
+ str r0, [sp, #0x1c]
+ mov r0, #6
+ ldr r7, [sp, #0x20]
+ str r0, [sp, #0x18]
+_021E0DB4:
+ mov r4, #0
+ mov r6, #0x30
+_021E0DB8:
+ ldr r0, [sp, #0x18]
+ add r1, r4, r0
+ ldr r0, [sp, #0x20]
+ cmp r0, #5
+ bhi _021E0E20
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E0DCE: ; jump table
+ .short _021E0DDA - _021E0DCE - 2 ; case 0
+ .short _021E0DE6 - _021E0DCE - 2 ; case 1
+ .short _021E0DF2 - _021E0DCE - 2 ; case 2
+ .short _021E0DFE - _021E0DCE - 2 ; case 3
+ .short _021E0E0A - _021E0DCE - 2 ; case 4
+ .short _021E0E16 - _021E0DCE - 2 ; case 5
+_021E0DDA:
+ cmp r4, #2
+ bne _021E0DE2
+ mov r1, #0
+ b _021E0E20
+_021E0DE2:
+ mov r5, #0
+ b _021E0E20
+_021E0DE6:
+ cmp r4, #2
+ bne _021E0DEE
+ mov r1, #1
+ b _021E0E20
+_021E0DEE:
+ mov r5, #0
+ b _021E0E20
+_021E0DF2:
+ cmp r4, #2
+ bne _021E0DFA
+ mov r1, #2
+ b _021E0E20
+_021E0DFA:
+ mov r5, #0
+ b _021E0E20
+_021E0DFE:
+ cmp r4, #2
+ bne _021E0E06
+ mov r1, #3
+ b _021E0E20
+_021E0E06:
+ mov r5, #0
+ b _021E0E20
+_021E0E0A:
+ cmp r4, #2
+ bne _021E0E12
+ mov r1, #4
+ b _021E0E20
+_021E0E12:
+ mov r5, #0
+ b _021E0E20
+_021E0E16:
+ cmp r4, #2
+ bne _021E0E1E
+ mov r1, #5
+ b _021E0E20
+_021E0E1E:
+ mov r5, #1
+_021E0E20:
+ cmp r4, #2
+ bge _021E0E46
+ mov r0, #0x10
+ str r0, [sp]
+ str r5, [sp, #4]
+ str r5, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r2, r4, r7
+ mov r1, #0x1c
+ mul r1, r2
+ ldr r0, [r0, #0x1c]
+ ldr r2, [sp, #0x1c]
+ add r0, r0, r1
+ add r1, r6, #0
+ mov r3, #0x3c
+ bl MOD16_021DB590
+ b _021E0E56
+_021E0E46:
+ ldr r0, [sp, #0x10]
+ add r2, r4, r7
+ ldr r3, [r0, #0x1c]
+ mov r0, #0x1c
+ mul r0, r2
+ add r0, r3, r0
+ bl MOD16_021E0A3C
+_021E0E56:
+ add r4, r4, #1
+ add r6, #0x50
+ cmp r4, #3
+ blt _021E0DB8
+ ldr r0, [sp, #0x1c]
+ add r7, r7, #3
+ add r0, #0x20
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r0, r0, #2
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ cmp r0, #6
+ blt _021E0DB4
+ ldr r0, [sp, #0x14]
+ bl MOD16_021DB490
+ ldr r1, [sp, #0x10]
+ mov r2, #3
+ str r0, [r1, #0x18]
+ ldr r1, [r1, #0x1c]
+ mov r3, #6
+ bl MOD16_021DB4B0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E0D90
+
+ thumb_func_start MOD16_021E0E90
+MOD16_021E0E90: ; 0x021E0E90
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E0FD8 ; =0x021C48B8
+ ldr r1, [r0, #0x44]
+ mov r0, #1
+ tst r0, r1
+ bne _021E0EA0
+ b _021E0FD0
+_021E0EA0:
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E0EB4
+ ldr r0, [r4, #0x18]
+ bl MOD16_021DB528
+ cmp r0, #0xf
+ bls _021E0EB6
+_021E0EB4:
+ b _021E0FD6
+_021E0EB6:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E0EC2: ; jump table
+ .short _021E0FD6 - _021E0EC2 - 2 ; case 0
+ .short _021E0FD6 - _021E0EC2 - 2 ; case 1
+ .short _021E0FD6 - _021E0EC2 - 2 ; case 2
+ .short _021E0FD6 - _021E0EC2 - 2 ; case 3
+ .short _021E0FD6 - _021E0EC2 - 2 ; case 4
+ .short _021E0FD6 - _021E0EC2 - 2 ; case 5
+ .short _021E0EE2 - _021E0EC2 - 2 ; case 6
+ .short _021E0EFA - _021E0EC2 - 2 ; case 7
+ .short _021E0F12 - _021E0EC2 - 2 ; case 8
+ .short _021E0F28 - _021E0EC2 - 2 ; case 9
+ .short _021E0F40 - _021E0EC2 - 2 ; case 10
+ .short _021E0F58 - _021E0EC2 - 2 ; case 11
+ .short _021E0F70 - _021E0EC2 - 2 ; case 12
+ .short _021E0F88 - _021E0EC2 - 2 ; case 13
+ .short _021E0FA0 - _021E0EC2 - 2 ; case 14
+ .short _021E0FB8 - _021E0EC2 - 2 ; case 15
+_021E0EE2:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0EFA:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0F12:
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0F28:
+ add r0, r4, #0
+ mov r1, #3
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0F40:
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0F58:
+ add r0, r4, #0
+ mov r1, #5
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0F70:
+ add r0, r4, #0
+ mov r1, #6
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0F88:
+ add r0, r4, #0
+ mov r1, #7
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0FA0:
+ add r0, r4, #0
+ mov r1, #8
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0FB8:
+ add r0, r4, #0
+ mov r1, #9
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E0FD0:
+ mov r0, #0
+ add r4, #0x8c
+ str r0, [r4]
+_021E0FD6:
+ pop {r4, pc}
+ .align 2, 0
+_021E0FD8: .word 0x021C48B8
+ thumb_func_end MOD16_021E0E90
+
+ thumb_func_start MOD16_021E0FDC
+MOD16_021E0FDC: ; 0x021E0FDC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ add r0, r1, #0
+ mov r1, #0x7e
+ lsl r1, r1, #2
+ bl FUN_02016998
+ ldr r1, [sp, #0x10]
+ str r0, [r1, #0x1c]
+ mov r0, #0
+ str r0, [sp, #0x28]
+ mov r0, #0x10
+ str r0, [sp, #0x24]
+ mov r0, #6
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #0x1c]
+_021E1002:
+ mov r0, #0x30
+ mov r4, #0
+ str r0, [sp, #0x18]
+_021E1008:
+ ldr r0, [sp, #0x20]
+ ldr r3, [sp, #0x18]
+ add r1, r4, r0
+ ldr r0, [sp, #0x28]
+ cmp r0, #5
+ bhi _021E1098
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E1020: ; jump table
+ .short _021E102C - _021E1020 - 2 ; case 0
+ .short _021E103C - _021E1020 - 2 ; case 1
+ .short _021E104C - _021E1020 - 2 ; case 2
+ .short _021E105C - _021E1020 - 2 ; case 3
+ .short _021E106C - _021E1020 - 2 ; case 4
+ .short _021E107C - _021E1020 - 2 ; case 5
+_021E102C:
+ cmp r4, #2
+ bne _021E1034
+ mov r1, #0
+ b _021E1098
+_021E1034:
+ mov r5, #0
+ mov r7, #0x3c
+ mov r6, #0x10
+ b _021E1098
+_021E103C:
+ cmp r4, #2
+ bne _021E1044
+ mov r1, #1
+ b _021E1098
+_021E1044:
+ mov r5, #0
+ mov r7, #0x3c
+ mov r6, #0x10
+ b _021E1098
+_021E104C:
+ cmp r4, #2
+ bne _021E1054
+ mov r1, #2
+ b _021E1098
+_021E1054:
+ mov r5, #0
+ mov r7, #0x3c
+ mov r6, #0x10
+ b _021E1098
+_021E105C:
+ cmp r4, #2
+ bne _021E1064
+ mov r1, #3
+ b _021E1098
+_021E1064:
+ mov r5, #0
+ mov r7, #0x3c
+ mov r6, #0x10
+ b _021E1098
+_021E106C:
+ cmp r4, #2
+ bne _021E1074
+ mov r1, #4
+ b _021E1098
+_021E1074:
+ mov r5, #0
+ mov r7, #0x3c
+ mov r6, #0x10
+ b _021E1098
+_021E107C:
+ cmp r4, #2
+ bne _021E1084
+ mov r1, #5
+ b _021E1098
+_021E1084:
+ cmp r4, #0
+ bne _021E1092
+ mov r7, #0x10
+ mov r5, #0
+ add r6, r7, #0
+ mov r3, #0x18
+ b _021E1098
+_021E1092:
+ mov r5, #1
+ mov r7, #0x3c
+ mov r6, #0x10
+_021E1098:
+ cmp r4, #2
+ bge _021E10BE
+ str r6, [sp]
+ str r5, [sp, #4]
+ str r5, [sp, #8]
+ ldr r0, [sp, #0x10]
+ str r1, [sp, #0xc]
+ ldr r2, [r0, #0x1c]
+ ldr r0, [sp, #0x1c]
+ add r1, r4, r0
+ mov r0, #0x1c
+ mul r0, r1
+ add r0, r2, r0
+ add r1, r3, #0
+ ldr r2, [sp, #0x24]
+ add r3, r7, #0
+ bl MOD16_021DB590
+ b _021E10D0
+_021E10BE:
+ ldr r0, [sp, #0x10]
+ ldr r3, [r0, #0x1c]
+ ldr r0, [sp, #0x1c]
+ add r2, r4, r0
+ mov r0, #0x1c
+ mul r0, r2
+ add r0, r3, r0
+ bl MOD16_021E0A3C
+_021E10D0:
+ ldr r0, [sp, #0x18]
+ add r4, r4, #1
+ add r0, #0x50
+ str r0, [sp, #0x18]
+ cmp r4, #3
+ blt _021E1008
+ ldr r0, [sp, #0x24]
+ add r0, #0x20
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #2
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #3
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x28]
+ add r0, r0, #1
+ str r0, [sp, #0x28]
+ cmp r0, #6
+ blt _021E1002
+ ldr r0, [sp, #0x14]
+ bl MOD16_021DB490
+ ldr r1, [sp, #0x10]
+ mov r2, #3
+ str r0, [r1, #0x18]
+ ldr r1, [r1, #0x1c]
+ mov r3, #6
+ bl MOD16_021DB4B0
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E0FDC
+
+ thumb_func_start MOD16_021E1110
+MOD16_021E1110: ; 0x021E1110
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E1278 ; =0x021C48B8
+ ldr r1, [r0, #0x44]
+ mov r0, #1
+ tst r0, r1
+ bne _021E1120
+ b _021E1270
+_021E1120:
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E1134
+ ldr r0, [r4, #0x18]
+ bl MOD16_021DB528
+ cmp r0, #0x10
+ bls _021E1136
+_021E1134:
+ b _021E1276
+_021E1136:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E1142: ; jump table
+ .short _021E1276 - _021E1142 - 2 ; case 0
+ .short _021E1276 - _021E1142 - 2 ; case 1
+ .short _021E1276 - _021E1142 - 2 ; case 2
+ .short _021E1276 - _021E1142 - 2 ; case 3
+ .short _021E1276 - _021E1142 - 2 ; case 4
+ .short _021E1276 - _021E1142 - 2 ; case 5
+ .short _021E1164 - _021E1142 - 2 ; case 6
+ .short _021E117C - _021E1142 - 2 ; case 7
+ .short _021E1194 - _021E1142 - 2 ; case 8
+ .short _021E11AA - _021E1142 - 2 ; case 9
+ .short _021E11C2 - _021E1142 - 2 ; case 10
+ .short _021E11DA - _021E1142 - 2 ; case 11
+ .short _021E11F2 - _021E1142 - 2 ; case 12
+ .short _021E120A - _021E1142 - 2 ; case 13
+ .short _021E1222 - _021E1142 - 2 ; case 14
+ .short _021E123A - _021E1142 - 2 ; case 15
+ .short _021E1258 - _021E1142 - 2 ; case 16
+_021E1164:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E117C:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E1194:
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E11AA:
+ add r0, r4, #0
+ mov r1, #3
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E11C2:
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E11DA:
+ add r0, r4, #0
+ mov r1, #5
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E11F2:
+ add r0, r4, #0
+ mov r1, #6
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E120A:
+ add r0, r4, #0
+ mov r1, #7
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E1222:
+ add r0, r4, #0
+ mov r1, #8
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E123A:
+ add r0, r4, #0
+ mov r1, #9
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ mov r0, #1
+ add r4, #0x8c
+ str r0, [r4]
+ pop {r4, pc}
+_021E1258:
+ add r0, r4, #0
+ mov r1, #0xa
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E1270:
+ mov r0, #0
+ add r4, #0x8c
+ str r0, [r4]
+_021E1276:
+ pop {r4, pc}
+ .align 2, 0
+_021E1278: .word 0x021C48B8
+ thumb_func_end MOD16_021E1110
+
+ thumb_func_start MOD16_021E127C
+MOD16_021E127C: ; 0x021E127C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ add r0, r1, #0
+ mov r1, #0x7e
+ lsl r1, r1, #2
+ bl FUN_02016998
+ ldr r1, [sp, #0x10]
+ str r0, [r1, #0x1c]
+ mov r0, #0
+ str r0, [sp, #0x2c]
+ mov r0, #0x10
+ str r0, [sp, #0x24]
+ mov r0, #6
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x2c]
+ str r0, [sp, #0x1c]
+_021E12A2:
+ mov r0, #0x30
+ mov r4, #0
+ str r0, [sp, #0x18]
+_021E12A8:
+ ldr r0, [sp, #0x20]
+ ldr r3, [sp, #0x18]
+ add r1, r4, r0
+ ldr r0, [sp, #0x2c]
+ cmp r0, #5
+ bhi _021E1364
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E12C0: ; jump table
+ .short _021E12CC - _021E12C0 - 2 ; case 0
+ .short _021E12E0 - _021E12C0 - 2 ; case 1
+ .short _021E12F4 - _021E12C0 - 2 ; case 2
+ .short _021E1308 - _021E12C0 - 2 ; case 3
+ .short _021E131C - _021E12C0 - 2 ; case 4
+ .short _021E1340 - _021E12C0 - 2 ; case 5
+_021E12CC:
+ cmp r4, #2
+ bne _021E12D4
+ mov r1, #0
+ b _021E1364
+_021E12D4:
+ mov r6, #0
+ mov r0, #0x3c
+ add r5, r6, #0
+ str r0, [sp, #0x28]
+ mov r7, #0x10
+ b _021E1364
+_021E12E0:
+ cmp r4, #2
+ bne _021E12E8
+ mov r1, #1
+ b _021E1364
+_021E12E8:
+ mov r6, #0
+ mov r0, #0x3c
+ add r5, r6, #0
+ str r0, [sp, #0x28]
+ mov r7, #0x10
+ b _021E1364
+_021E12F4:
+ cmp r4, #2
+ bne _021E12FC
+ mov r1, #2
+ b _021E1364
+_021E12FC:
+ mov r6, #0
+ mov r0, #0x3c
+ add r5, r6, #0
+ str r0, [sp, #0x28]
+ mov r7, #0x10
+ b _021E1364
+_021E1308:
+ cmp r4, #2
+ bne _021E1310
+ mov r1, #3
+ b _021E1364
+_021E1310:
+ mov r6, #0
+ mov r0, #0x3c
+ add r5, r6, #0
+ str r0, [sp, #0x28]
+ mov r7, #0x10
+ b _021E1364
+_021E131C:
+ cmp r4, #2
+ bne _021E1324
+ mov r1, #4
+ b _021E1364
+_021E1324:
+ cmp r4, #0
+ bne _021E1334
+ mov r0, #0x3c
+ mov r6, #1
+ mov r5, #2
+ str r0, [sp, #0x28]
+ mov r7, #0x10
+ b _021E1364
+_021E1334:
+ mov r6, #0
+ mov r0, #0x3c
+ add r5, r6, #0
+ str r0, [sp, #0x28]
+ mov r7, #0x10
+ b _021E1364
+_021E1340:
+ cmp r4, #2
+ bne _021E1348
+ mov r1, #5
+ b _021E1364
+_021E1348:
+ cmp r4, #0
+ bne _021E135A
+ mov r0, #0x10
+ mov r6, #0
+ add r5, r6, #0
+ str r0, [sp, #0x28]
+ add r7, r0, #0
+ mov r3, #0x18
+ b _021E1364
+_021E135A:
+ mov r6, #1
+ mov r0, #0x3c
+ add r5, r6, #0
+ str r0, [sp, #0x28]
+ mov r7, #0x10
+_021E1364:
+ cmp r4, #2
+ bge _021E138A
+ str r7, [sp]
+ str r6, [sp, #4]
+ str r5, [sp, #8]
+ ldr r0, [sp, #0x10]
+ str r1, [sp, #0xc]
+ ldr r2, [r0, #0x1c]
+ ldr r0, [sp, #0x1c]
+ add r1, r4, r0
+ mov r0, #0x1c
+ mul r0, r1
+ add r0, r2, r0
+ add r1, r3, #0
+ ldr r2, [sp, #0x24]
+ ldr r3, [sp, #0x28]
+ bl MOD16_021DB590
+ b _021E139C
+_021E138A:
+ ldr r0, [sp, #0x10]
+ ldr r3, [r0, #0x1c]
+ ldr r0, [sp, #0x1c]
+ add r2, r4, r0
+ mov r0, #0x1c
+ mul r0, r2
+ add r0, r3, r0
+ bl MOD16_021E0A3C
+_021E139C:
+ ldr r0, [sp, #0x18]
+ add r4, r4, #1
+ add r0, #0x50
+ str r0, [sp, #0x18]
+ cmp r4, #3
+ bge _021E13AA
+ b _021E12A8
+_021E13AA:
+ ldr r0, [sp, #0x24]
+ add r0, #0x20
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #2
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #3
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x2c]
+ add r0, r0, #1
+ str r0, [sp, #0x2c]
+ cmp r0, #6
+ bge _021E13C8
+ b _021E12A2
+_021E13C8:
+ ldr r0, [sp, #0x14]
+ bl MOD16_021DB490
+ ldr r1, [sp, #0x10]
+ mov r2, #3
+ str r0, [r1, #0x18]
+ ldr r1, [r1, #0x1c]
+ mov r3, #6
+ bl MOD16_021DB4B0
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E127C
+
+ thumb_func_start MOD16_021E13E0
+MOD16_021E13E0: ; 0x021E13E0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E1530 ; =0x021C48B8
+ ldr r1, [r0, #0x44]
+ mov r0, #1
+ tst r0, r1
+ bne _021E13F0
+ b _021E1528
+_021E13F0:
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E1404
+ ldr r0, [r4, #0x18]
+ bl MOD16_021DB528
+ cmp r0, #0x10
+ bls _021E1406
+_021E1404:
+ b _021E152E
+_021E1406:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E1412: ; jump table
+ .short _021E152E - _021E1412 - 2 ; case 0
+ .short _021E152E - _021E1412 - 2 ; case 1
+ .short _021E152E - _021E1412 - 2 ; case 2
+ .short _021E152E - _021E1412 - 2 ; case 3
+ .short _021E152E - _021E1412 - 2 ; case 4
+ .short _021E152E - _021E1412 - 2 ; case 5
+ .short _021E1434 - _021E1412 - 2 ; case 6
+ .short _021E144C - _021E1412 - 2 ; case 7
+ .short _021E1464 - _021E1412 - 2 ; case 8
+ .short _021E147A - _021E1412 - 2 ; case 9
+ .short _021E1492 - _021E1412 - 2 ; case 10
+ .short _021E14AA - _021E1412 - 2 ; case 11
+ .short _021E14C2 - _021E1412 - 2 ; case 12
+ .short _021E14DA - _021E1412 - 2 ; case 13
+ .short _021E152E - _021E1412 - 2 ; case 14
+ .short _021E14F2 - _021E1412 - 2 ; case 15
+ .short _021E1510 - _021E1412 - 2 ; case 16
+_021E1434:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E144C:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E1464:
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E147A:
+ add r0, r4, #0
+ mov r1, #3
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E1492:
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E14AA:
+ add r0, r4, #0
+ mov r1, #5
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E14C2:
+ add r0, r4, #0
+ mov r1, #6
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E14DA:
+ add r0, r4, #0
+ mov r1, #7
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E14F2:
+ add r0, r4, #0
+ mov r1, #8
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ mov r0, #1
+ add r4, #0x8c
+ str r0, [r4]
+ pop {r4, pc}
+_021E1510:
+ add r0, r4, #0
+ mov r1, #9
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E1528:
+ mov r0, #0
+ add r4, #0x8c
+ str r0, [r4]
+_021E152E:
+ pop {r4, pc}
+ .align 2, 0
+_021E1530: .word 0x021C48B8
+ thumb_func_end MOD16_021E13E0
+
+ thumb_func_start MOD16_021E1534
+MOD16_021E1534: ; 0x021E1534
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ add r0, r1, #0
+ mov r1, #0x2a
+ lsl r1, r1, #4
+ bl FUN_02016998
+ ldr r1, [sp, #0x10]
+ str r0, [r1, #0x1c]
+ mov r0, #0
+ str r0, [sp, #0x20]
+ mov r0, #0x10
+ str r0, [sp, #0x1c]
+ mov r0, #6
+ ldr r7, [sp, #0x20]
+ str r0, [sp, #0x18]
+_021E1558:
+ mov r4, #0
+ mov r6, #0x1c
+_021E155C:
+ ldr r0, [sp, #0x18]
+ add r1, r4, r0
+ ldr r0, [sp, #0x20]
+ cmp r0, #5
+ bhi _021E15C4
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E1572: ; jump table
+ .short _021E157E - _021E1572 - 2 ; case 0
+ .short _021E158A - _021E1572 - 2 ; case 1
+ .short _021E1596 - _021E1572 - 2 ; case 2
+ .short _021E15A2 - _021E1572 - 2 ; case 3
+ .short _021E15AE - _021E1572 - 2 ; case 4
+ .short _021E15BA - _021E1572 - 2 ; case 5
+_021E157E:
+ cmp r4, #3
+ bne _021E1586
+ mov r1, #0
+ b _021E15C4
+_021E1586:
+ mov r5, #0
+ b _021E15C4
+_021E158A:
+ cmp r4, #3
+ bne _021E1592
+ mov r1, #1
+ b _021E15C4
+_021E1592:
+ mov r5, #0
+ b _021E15C4
+_021E1596:
+ cmp r4, #3
+ bne _021E159E
+ mov r1, #2
+ b _021E15C4
+_021E159E:
+ mov r5, #0
+ b _021E15C4
+_021E15A2:
+ cmp r4, #3
+ bne _021E15AA
+ mov r1, #3
+ b _021E15C4
+_021E15AA:
+ mov r5, #0
+ b _021E15C4
+_021E15AE:
+ cmp r4, #3
+ bne _021E15B6
+ mov r1, #4
+ b _021E15C4
+_021E15B6:
+ mov r5, #0
+ b _021E15C4
+_021E15BA:
+ cmp r4, #3
+ bne _021E15C2
+ mov r1, #5
+ b _021E15C4
+_021E15C2:
+ mov r5, #1
+_021E15C4:
+ cmp r4, #3
+ bge _021E15EA
+ mov r0, #0x14
+ str r0, [sp]
+ str r5, [sp, #4]
+ str r5, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r2, r4, r7
+ mov r1, #0x1c
+ mul r1, r2
+ ldr r0, [r0, #0x1c]
+ ldr r2, [sp, #0x1c]
+ add r0, r0, r1
+ add r1, r6, #0
+ mov r3, #0x20
+ bl MOD16_021DB590
+ b _021E15FA
+_021E15EA:
+ ldr r0, [sp, #0x10]
+ add r2, r4, r7
+ ldr r3, [r0, #0x1c]
+ mov r0, #0x1c
+ mul r0, r2
+ add r0, r3, r0
+ bl MOD16_021E0A3C
+_021E15FA:
+ add r4, r4, #1
+ add r6, #0x38
+ cmp r4, #4
+ blt _021E155C
+ ldr r0, [sp, #0x1c]
+ add r7, r7, #4
+ add r0, #0x20
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r0, r0, #3
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ cmp r0, #6
+ blt _021E1558
+ ldr r0, [sp, #0x14]
+ bl MOD16_021DB490
+ ldr r1, [sp, #0x10]
+ mov r2, #4
+ str r0, [r1, #0x18]
+ ldr r1, [r1, #0x1c]
+ mov r3, #6
+ bl MOD16_021DB4B0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E1534
+
+ thumb_func_start MOD16_021E1634
+MOD16_021E1634: ; 0x021E1634
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021E1800 ; =0x021C48B8
+ ldr r1, [r0, #0x44]
+ mov r0, #1
+ tst r0, r1
+ bne _021E1644
+ b _021E17F6
+_021E1644:
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E1658
+ ldr r0, [r4, #0x18]
+ bl MOD16_021DB528
+ cmp r0, #0x14
+ bls _021E165A
+_021E1658:
+ b _021E17FC
+_021E165A:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E1666: ; jump table
+ .short _021E17FC - _021E1666 - 2 ; case 0
+ .short _021E17FC - _021E1666 - 2 ; case 1
+ .short _021E17FC - _021E1666 - 2 ; case 2
+ .short _021E17FC - _021E1666 - 2 ; case 3
+ .short _021E17FC - _021E1666 - 2 ; case 4
+ .short _021E17FC - _021E1666 - 2 ; case 5
+ .short _021E1690 - _021E1666 - 2 ; case 6
+ .short _021E16A8 - _021E1666 - 2 ; case 7
+ .short _021E16C0 - _021E1666 - 2 ; case 8
+ .short _021E16D6 - _021E1666 - 2 ; case 9
+ .short _021E16EE - _021E1666 - 2 ; case 10
+ .short _021E1706 - _021E1666 - 2 ; case 11
+ .short _021E171E - _021E1666 - 2 ; case 12
+ .short _021E1736 - _021E1666 - 2 ; case 13
+ .short _021E174E - _021E1666 - 2 ; case 14
+ .short _021E1766 - _021E1666 - 2 ; case 15
+ .short _021E177E - _021E1666 - 2 ; case 16
+ .short _021E1796 - _021E1666 - 2 ; case 17
+ .short _021E17AE - _021E1666 - 2 ; case 18
+ .short _021E17C6 - _021E1666 - 2 ; case 19
+ .short _021E17DE - _021E1666 - 2 ; case 20
+_021E1690:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E16A8:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E16C0:
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E16D6:
+ add r0, r4, #0
+ mov r1, #3
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E16EE:
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E1706:
+ add r0, r4, #0
+ mov r1, #5
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E171E:
+ add r0, r4, #0
+ mov r1, #6
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E1736:
+ add r0, r4, #0
+ mov r1, #7
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E174E:
+ add r0, r4, #0
+ mov r1, #8
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E1766:
+ add r0, r4, #0
+ mov r1, #9
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E177E:
+ add r0, r4, #0
+ mov r1, #0xa
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E1796:
+ add r0, r4, #0
+ mov r1, #0xb
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E17AE:
+ add r0, r4, #0
+ mov r1, #0xc
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E17C6:
+ add r0, r4, #0
+ mov r1, #0xd
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E17DE:
+ add r0, r4, #0
+ mov r1, #0xe
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ mov r1, #2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r1, [r0, #0x44]
+ pop {r4, pc}
+_021E17F6:
+ mov r0, #0
+ add r4, #0x8c
+ str r0, [r4]
+_021E17FC:
+ pop {r4, pc}
+ nop
+_021E1800: .word 0x021C48B8
+ thumb_func_end MOD16_021E1634
+
+ thumb_func_start MOD16_021E1804
+MOD16_021E1804: ; 0x021E1804
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021E1890 ; =0x021C48B8
+ add r4, r1, #0
+ ldr r1, [r0, #0x48]
+ mov r0, #0x10
+ tst r0, r1
+ beq _021E1826
+ ldr r0, [r5, #0x18]
+ mov r1, #0
+ mov r2, #1
+ bl MOD16_021DB4CC
+ add r0, r5, #0
+ mov r1, #1
+ add r0, #0x8c
+ str r1, [r0]
+_021E1826:
+ ldr r0, _021E1890 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x20
+ tst r0, r1
+ beq _021E1842
+ mov r1, #0
+ ldr r0, [r5, #0x18]
+ sub r2, r1, #1
+ bl MOD16_021DB4CC
+ add r0, r5, #0
+ mov r1, #1
+ add r0, #0x8c
+ str r1, [r0]
+_021E1842:
+ ldr r0, _021E1890 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x40
+ tst r0, r1
+ beq _021E185E
+ mov r1, #1
+ ldr r0, [r5, #0x18]
+ sub r2, r1, #2
+ bl MOD16_021DB4CC
+ add r0, r5, #0
+ mov r1, #1
+ add r0, #0x8c
+ str r1, [r0]
+_021E185E:
+ ldr r0, _021E1890 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x80
+ tst r0, r1
+ beq _021E187A
+ mov r1, #1
+ ldr r0, [r5, #0x18]
+ add r2, r1, #0
+ bl MOD16_021DB4CC
+ add r0, r5, #0
+ mov r1, #1
+ add r0, #0x8c
+ str r1, [r0]
+_021E187A:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E0AB0
+ ldr r2, [r5, #0x24]
+ ldr r3, [r5, #0x28]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E1894
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E1890: .word 0x021C48B8
+ thumb_func_end MOD16_021E1804
+
+ thumb_func_start MOD16_021E1894
+MOD16_021E1894: ; 0x021E1894
+ push {r3, lr}
+ cmp r2, #3
+ bhi _021E18CE
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021E18A6: ; jump table
+ .short _021E18AE - _021E18A6 - 2 ; case 0
+ .short _021E18B4 - _021E18A6 - 2 ; case 1
+ .short _021E18BA - _021E18A6 - 2 ; case 2
+ .short _021E18CA - _021E18A6 - 2 ; case 3
+_021E18AE:
+ bl MOD16_021E0CB8
+ pop {r3, pc}
+_021E18B4:
+ bl MOD16_021E0E90
+ pop {r3, pc}
+_021E18BA:
+ cmp r3, #0
+ bne _021E18C4
+ bl MOD16_021E1110
+ pop {r3, pc}
+_021E18C4:
+ bl MOD16_021E13E0
+ pop {r3, pc}
+_021E18CA:
+ bl MOD16_021E1634
+_021E18CE:
+ pop {r3, pc}
+ thumb_func_end MOD16_021E1894
+
+ thumb_func_start MOD16_021E18D0
+MOD16_021E18D0: ; 0x021E18D0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x1c]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x18]
+ bl MOD16_021DB4A8
+ mov r0, #0
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ pop {r4, pc}
+ thumb_func_end MOD16_021E18D0
+
+ thumb_func_start MOD16_021E18E8
+MOD16_021E18E8: ; 0x021E18E8
+ push {r3, lr}
+ ldr r2, [r0, #0x24]
+ ldr r3, [r0, #0x28]
+ bl MOD16_021E18F4
+ pop {r3, pc}
+ thumb_func_end MOD16_021E18E8
+
+ thumb_func_start MOD16_021E18F4
+MOD16_021E18F4: ; 0x021E18F4
+ push {r3, lr}
+ cmp r2, #3
+ bhi _021E192E
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021E1906: ; jump table
+ .short _021E190E - _021E1906 - 2 ; case 0
+ .short _021E1914 - _021E1906 - 2 ; case 1
+ .short _021E191A - _021E1906 - 2 ; case 2
+ .short _021E192A - _021E1906 - 2 ; case 3
+_021E190E:
+ bl MOD16_021E0BB8
+ pop {r3, pc}
+_021E1914:
+ bl MOD16_021E0D90
+ pop {r3, pc}
+_021E191A:
+ cmp r3, #0
+ bne _021E1924
+ bl MOD16_021E0FDC
+ pop {r3, pc}
+_021E1924:
+ bl MOD16_021E127C
+ pop {r3, pc}
+_021E192A:
+ bl MOD16_021E1534
+_021E192E:
+ pop {r3, pc}
+ thumb_func_end MOD16_021E18F4
+
+ thumb_func_start MOD16_021E1930
+MOD16_021E1930: ; 0x021E1930
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x24]
+ cmp r0, #3
+ bhi _021E195E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E1946: ; jump table
+ .short _021E194E - _021E1946 - 2 ; case 0
+ .short _021E1952 - _021E1946 - 2 ; case 1
+ .short _021E1956 - _021E1946 - 2 ; case 2
+ .short _021E195A - _021E1946 - 2 ; case 3
+_021E194E:
+ mov r4, #1
+ b _021E1962
+_021E1952:
+ mov r4, #2
+ b _021E1962
+_021E1956:
+ mov r4, #3
+ b _021E1962
+_021E195A:
+ mov r4, #4
+ b _021E1962
+_021E195E:
+ bl ErrorHandling
+_021E1962:
+ ldr r0, [r5, #0x18]
+ mov r1, #4
+ add r2, r4, #0
+ bl MOD16_021DB4CC
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E1930
+
+ thumb_func_start MOD16_021E1970
+MOD16_021E1970: ; 0x021E1970
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021E18D0
+ ldr r2, [r5, #0x24]
+ ldr r3, [r5, #0x28]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E18F4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E1970
+
+ thumb_func_start MOD16_021E1988
+MOD16_021E1988: ; 0x021E1988
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r0, [r4, #0x18]
+ ldr r1, [r5]
+ add r6, r2, #0
+ bl MOD16_021D8B48
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E19A4
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E1988
+
+ thumb_func_start MOD16_021E19A4
+MOD16_021E19A4: ; 0x021E19A4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r2, #4]
+ add r4, r1, #0
+ bl MOD16_021D9FB8
+ cmp r0, #1
+ bne _021E19D2
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021E19EC
+ cmp r0, #0
+ beq _021E19C8
+ ldr r0, [r4, #0x18]
+ ldr r1, [r5]
+ bl MOD16_021D8B48
+_021E19C8:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E19DC
+ pop {r3, r4, r5, pc}
+_021E19D2:
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD16_021E19EC
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E19A4
+
+ thumb_func_start MOD16_021E19DC
+MOD16_021E19DC: ; 0x021E19DC
+ ldr r3, _021E19E8 ; =MOD16_021D8AD4
+ add r2, r0, #0
+ ldr r0, [r1, #0x18]
+ ldr r1, [r2]
+ bx r3
+ nop
+_021E19E8: .word MOD16_021D8AD4
+ thumb_func_end MOD16_021E19DC
+
+ thumb_func_start MOD16_021E19EC
+MOD16_021E19EC: ; 0x021E19EC
+ push {r3, r4, r5, lr}
+ ldr r4, [r0]
+ mov r0, #0x79
+ lsl r0, r0, #2
+ add r0, r4, r0
+ add r5, r1, #0
+ bl MOD16_021D8B30
+ cmp r5, r0
+ beq _021E1A10
+ mov r0, #0x79
+ lsl r0, r0, #2
+ add r0, r4, r0
+ add r1, r5, #0
+ bl MOD16_021D8B14
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E1A10:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E19EC
+
+ thumb_func_start MOD16_021E1A14
+MOD16_021E1A14: ; 0x021E1A14
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021E1AD4 ; =0x00003EFD
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ mov r2, #0x7d
+ mov r3, #1
+ bl FUN_020091E0
+ add r1, r5, #0
+ add r1, #0xe4
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ bl FUN_02009B04
+ add r0, r5, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ bl FUN_02009474
+ ldr r0, _021E1AD8 ; =0x00003E83
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #3
+ mov r3, #0
+ bl FUN_02009298
+ add r1, r5, #0
+ add r1, #0xe8
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_02009D68
+ add r0, r5, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_02009474
+ ldr r0, _021E1ADC ; =0x00003EFE
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x7e
+ mov r3, #1
+ bl FUN_02009358
+ add r1, r5, #0
+ add r1, #0xec
+ str r0, [r1]
+ ldr r0, _021E1AE0 ; =0x00003EFC
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x7c
+ mov r3, #1
+ bl FUN_02009358
+ add r5, #0xf0
+ str r0, [r5]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E1AD4: .word 0x00003EFD
+_021E1AD8: .word 0x00003E83
+_021E1ADC: .word 0x00003EFE
+_021E1AE0: .word 0x00003EFC
+ thumb_func_end MOD16_021E1A14
+
+ thumb_func_start MOD16_021E1AE4
+MOD16_021E1AE4: ; 0x021E1AE4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ add r0, r5, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_02009E04
+ mov r0, #5
+ add r1, r5, #0
+ lsl r0, r0, #6
+ add r1, #0xe4
+ ldr r0, [r4, r0]
+ ldr r1, [r1]
+ bl FUN_02009490
+ mov r0, #0x51
+ add r1, r5, #0
+ lsl r0, r0, #2
+ add r1, #0xe8
+ ldr r0, [r4, r0]
+ ldr r1, [r1]
+ bl FUN_02009490
+ mov r0, #0x52
+ add r1, r5, #0
+ lsl r0, r0, #2
+ add r1, #0xec
+ ldr r0, [r4, r0]
+ ldr r1, [r1]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ add r5, #0xf0
+ ldr r0, [r4, r0]
+ ldr r1, [r5]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E1AE4
+
+ thumb_func_start MOD16_021E1B3C
+MOD16_021E1B3C: ; 0x021E1B3C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ add r1, r7, #0
+ mov r2, #0x80
+ mov r3, #1
+ bl FUN_020091E0
+ add r1, r5, #0
+ add r1, #0xf4
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xf4
+ ldr r0, [r0]
+ bl FUN_02009B04
+ add r0, r5, #0
+ add r0, #0xf4
+ ldr r0, [r0]
+ bl FUN_02009474
+ ldr r0, _021E1BC8 ; =0x00003F01
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x81
+ mov r3, #1
+ bl FUN_02009358
+ add r1, r5, #0
+ add r1, #0xfc
+ str r0, [r1]
+ ldr r0, _021E1BCC ; =0x00003EFF
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x7f
+ mov r3, #1
+ bl FUN_02009358
+ mov r1, #1
+ lsl r1, r1, #8
+ str r0, [r5, r1]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E1BC8: .word 0x00003F01
+_021E1BCC: .word 0x00003EFF
+ thumb_func_end MOD16_021E1B3C
+
+ thumb_func_start MOD16_021E1BD0
+MOD16_021E1BD0: ; 0x021E1BD0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0xf4
+ ldr r0, [r0]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ mov r0, #5
+ add r1, r5, #0
+ lsl r0, r0, #6
+ add r1, #0xf4
+ ldr r0, [r4, r0]
+ ldr r1, [r1]
+ bl FUN_02009490
+ mov r0, #0x52
+ add r1, r5, #0
+ lsl r0, r0, #2
+ add r1, #0xfc
+ ldr r0, [r4, r0]
+ ldr r1, [r1]
+ bl FUN_02009490
+ mov r1, #0x53
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ sub r1, #0x4c
+ ldr r1, [r5, r1]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E1BD0
+
+ thumb_func_start MOD16_021E1C10
+MOD16_021E1C10: ; 0x021E1C10
+ push {r4, r5, r6, lr}
+ sub sp, #0x70
+ ldr r4, [r1]
+ ldr r3, _021E1C90 ; =0x00003EFC
+ add r5, r0, #0
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #5
+ str r1, [sp, #0x10]
+ lsl r0, r0, #6
+ add r6, r2, #0
+ ldr r2, [r4, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r2, r3, #0
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x4c
+ sub r2, #0x79
+ add r3, r3, #2
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, sp, #0x2c
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #0x20
+ str r0, [sp, #0x40]
+ mov r0, #2
+ str r0, [sp, #0x44]
+ add r0, r5, #0
+ str r6, [sp, #0x48]
+ bl MOD16_021E1D60
+ mov r3, #0x41
+ lsl r3, r3, #2
+ ldr r2, [r5, r3]
+ add r3, r3, #4
+ ldr r3, [r5, r3]
+ add r0, r5, #0
+ add r1, sp, #0x2c
+ bl MOD16_021E1D24
+ add sp, #0x70
+ pop {r4, r5, r6, pc}
+ nop
+_021E1C90: .word 0x00003EFC
+ thumb_func_end MOD16_021E1C10
+
+ thumb_func_start MOD16_021E1C94
+MOD16_021E1C94: ; 0x021E1C94
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD16_021E1E14
+ add r0, r4, #0
+ bl MOD16_021E1E2C
+ pop {r4, pc}
+ thumb_func_end MOD16_021E1C94
+
+ thumb_func_start MOD16_021E1CA4
+MOD16_021E1CA4: ; 0x021E1CA4
+ push {r4, r5, r6, lr}
+ sub sp, #0x70
+ ldr r4, [r1]
+ ldr r3, _021E1D20 ; =0x00003EFC
+ add r5, r0, #0
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #5
+ str r1, [sp, #0x10]
+ lsl r0, r0, #6
+ add r6, r2, #0
+ ldr r2, [r4, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r2, r3, #0
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x4c
+ sub r2, #0x79
+ add r3, r3, #2
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #0x20
+ str r0, [sp, #0x40]
+ mov r0, #2
+ str r0, [sp, #0x44]
+ add r0, r5, #0
+ str r6, [sp, #0x48]
+ bl MOD16_021E1E2C
+ mov r3, #0x41
+ lsl r3, r3, #2
+ ldr r2, [r5, r3]
+ add r3, r3, #4
+ ldr r3, [r5, r3]
+ add r0, r5, #0
+ add r1, sp, #0x2c
+ bl MOD16_021E1D24
+ add sp, #0x70
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021E1D20: .word 0x00003EFC
+ thumb_func_end MOD16_021E1CA4
+
+ thumb_func_start MOD16_021E1D24
+MOD16_021E1D24: ; 0x021E1D24
+ push {r3, lr}
+ cmp r2, #3
+ bhi _021E1D5E
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021E1D36: ; jump table
+ .short _021E1D3E - _021E1D36 - 2 ; case 0
+ .short _021E1D44 - _021E1D36 - 2 ; case 1
+ .short _021E1D4A - _021E1D36 - 2 ; case 2
+ .short _021E1D5A - _021E1D36 - 2 ; case 3
+_021E1D3E:
+ bl MOD16_021E1E4C
+ pop {r3, pc}
+_021E1D44:
+ bl MOD16_021E1EBC
+ pop {r3, pc}
+_021E1D4A:
+ cmp r3, #0
+ bne _021E1D54
+ bl MOD16_021E1F2C
+ pop {r3, pc}
+_021E1D54:
+ bl MOD16_021E1FC0
+ pop {r3, pc}
+_021E1D5A:
+ bl MOD16_021E207C
+_021E1D5E:
+ pop {r3, pc}
+ thumb_func_end MOD16_021E1D24
+
+ thumb_func_start MOD16_021E1D60
+MOD16_021E1D60: ; 0x021E1D60
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0xe
+ add r6, r0, #0
+ add r4, r1, #0
+ mov r5, #0
+ lsl r7, r7, #0x10
+_021E1D6C:
+ cmp r5, #5
+ bhi _021E1DCA
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E1D7C: ; jump table
+ .short _021E1D88 - _021E1D7C - 2 ; case 0
+ .short _021E1D96 - _021E1D7C - 2 ; case 1
+ .short _021E1DA0 - _021E1D7C - 2 ; case 2
+ .short _021E1DAA - _021E1D7C - 2 ; case 3
+ .short _021E1DB4 - _021E1D7C - 2 ; case 4
+ .short _021E1DBE - _021E1D7C - 2 ; case 5
+_021E1D88:
+ mov r0, #0xd
+ lsl r0, r0, #0x10
+ str r0, [r4, #0xc]
+ mov r0, #0x35
+ lsl r0, r0, #0xe
+ str r0, [r4, #8]
+ b _021E1DCA
+_021E1D96:
+ mov r0, #0xf
+ lsl r0, r0, #0x10
+ str r0, [r4, #0xc]
+ str r7, [r4, #8]
+ b _021E1DCA
+_021E1DA0:
+ mov r0, #0x11
+ lsl r0, r0, #0x10
+ str r0, [r4, #0xc]
+ str r7, [r4, #8]
+ b _021E1DCA
+_021E1DAA:
+ mov r0, #0x13
+ lsl r0, r0, #0x10
+ str r0, [r4, #0xc]
+ str r7, [r4, #8]
+ b _021E1DCA
+_021E1DB4:
+ mov r0, #0x15
+ lsl r0, r0, #0x10
+ str r0, [r4, #0xc]
+ str r7, [r4, #8]
+ b _021E1DCA
+_021E1DBE:
+ mov r0, #0x17
+ lsl r0, r0, #0x10
+ str r0, [r4, #0xc]
+ mov r0, #0x35
+ lsl r0, r0, #0xe
+ str r0, [r4, #8]
+_021E1DCA:
+ add r0, r4, #0
+ bl FUN_0201FF84
+ str r0, [r6]
+ cmp r5, #5
+ bhi _021E1E0A
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E1DE2: ; jump table
+ .short _021E1DEE - _021E1DE2 - 2 ; case 0
+ .short _021E1DF8 - _021E1DE2 - 2 ; case 1
+ .short _021E1DF8 - _021E1DE2 - 2 ; case 2
+ .short _021E1DF8 - _021E1DE2 - 2 ; case 3
+ .short _021E1DF8 - _021E1DE2 - 2 ; case 4
+ .short _021E1E02 - _021E1DE2 - 2 ; case 5
+_021E1DEE:
+ ldr r0, [r6]
+ mov r1, #3
+ bl FUN_02020130
+ b _021E1E0A
+_021E1DF8:
+ ldr r0, [r6]
+ mov r1, #2
+ bl FUN_02020130
+ b _021E1E0A
+_021E1E02:
+ ldr r0, [r6]
+ mov r1, #1
+ bl FUN_02020130
+_021E1E0A:
+ add r5, r5, #1
+ add r6, r6, #4
+ cmp r5, #6
+ blt _021E1D6C
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E1D60
+
+ thumb_func_start MOD16_021E1E14
+MOD16_021E1E14: ; 0x021E1E14
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021E1E1A:
+ ldr r0, [r5]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _021E1E1A
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E1E14
+
+ thumb_func_start MOD16_021E1E2C
+MOD16_021E1E2C: ; 0x021E1E2C
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_021E1E34:
+ ldr r0, [r5, #0x30]
+ cmp r0, #0
+ beq _021E1E40
+ bl FUN_0201FFC8
+ str r6, [r5, #0x30]
+_021E1E40:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xf
+ blt _021E1E34
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E1E2C
+
+ thumb_func_start MOD16_021E1E4C
+MOD16_021E1E4C: ; 0x021E1E4C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ mov r0, #0x30
+ add r6, r1, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x10]
+ add r7, r6, #0
+ str r0, [sp, #4]
+ add r7, #8
+_021E1E64:
+ ldr r0, [sp, #8]
+ mov r4, #0x30
+ lsl r1, r0, #0xc
+ mov r0, #3
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r0, [r6, #0xc]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #4]
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ add r5, r0, r1
+_021E1E7E:
+ str r4, [r6, #8]
+ ldr r0, [r7]
+ lsl r0, r0, #0xc
+ str r0, [r7]
+ add r0, r6, #0
+ bl FUN_0201FF84
+ mov r1, #0
+ str r0, [r5, #0x30]
+ bl FUN_02020130
+ ldr r0, [sp, #0xc]
+ add r4, #0x50
+ add r0, r0, #1
+ add r5, r5, #4
+ str r0, [sp, #0xc]
+ cmp r0, #2
+ blt _021E1E7E
+ ldr r0, [sp, #8]
+ add r0, #0x20
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ add r0, r0, #2
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x10]
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #3
+ blt _021E1E64
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E1E4C
+
+ thumb_func_start MOD16_021E1EBC
+MOD16_021E1EBC: ; 0x021E1EBC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ mov r0, #0x10
+ add r6, r1, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x10]
+ add r7, r6, #0
+ str r0, [sp, #4]
+ add r7, #8
+_021E1ED4:
+ ldr r0, [sp, #8]
+ mov r4, #0x30
+ lsl r1, r0, #0xc
+ mov r0, #3
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r0, [r6, #0xc]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #4]
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ add r5, r0, r1
+_021E1EEE:
+ str r4, [r6, #8]
+ ldr r0, [r7]
+ lsl r0, r0, #0xc
+ str r0, [r7]
+ add r0, r6, #0
+ bl FUN_0201FF84
+ mov r1, #0
+ str r0, [r5, #0x30]
+ bl FUN_02020130
+ ldr r0, [sp, #0xc]
+ add r4, #0x50
+ add r0, r0, #1
+ add r5, r5, #4
+ str r0, [sp, #0xc]
+ cmp r0, #2
+ blt _021E1EEE
+ ldr r0, [sp, #8]
+ add r0, #0x20
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ add r0, r0, #2
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x10]
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #5
+ blt _021E1ED4
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E1EBC
+
+ thumb_func_start MOD16_021E1F2C
+MOD16_021E1F2C: ; 0x021E1F2C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ mov r0, #0x10
+ add r6, r1, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x10]
+ add r7, r6, #0
+ str r0, [sp, #4]
+ add r7, #8
+_021E1F44:
+ ldr r0, [sp, #8]
+ mov r4, #0x30
+ lsl r1, r0, #0xc
+ mov r0, #3
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r0, [r6, #0xc]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #4]
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ add r5, r0, r1
+_021E1F5E:
+ str r4, [r6, #8]
+ ldr r0, [r7]
+ lsl r0, r0, #0xc
+ str r0, [r7]
+ add r0, r6, #0
+ bl FUN_0201FF84
+ mov r1, #0
+ str r0, [r5, #0x30]
+ bl FUN_02020130
+ ldr r0, [sp, #0xc]
+ add r4, #0x50
+ add r0, r0, #1
+ add r5, r5, #4
+ str r0, [sp, #0xc]
+ cmp r0, #2
+ blt _021E1F5E
+ ldr r0, [sp, #8]
+ add r0, #0x20
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ add r0, r0, #2
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x10]
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #5
+ blt _021E1F44
+ mov r0, #0xb0
+ mov r2, #0x18
+ str r0, [r6, #0xc]
+ lsl r0, r2, #0xc
+ str r0, [r6, #8]
+ ldr r0, [r6, #0xc]
+ lsl r1, r0, #0xc
+ lsl r0, r2, #0xf
+ add r0, r1, r0
+ str r0, [r6, #0xc]
+ add r0, r6, #0
+ bl FUN_0201FF84
+ ldr r1, [sp]
+ str r0, [r1, #0x58]
+ mov r1, #5
+ bl FUN_02020130
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E1F2C
+
+ thumb_func_start MOD16_021E1FC0
+MOD16_021E1FC0: ; 0x021E1FC0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ mov r0, #0x10
+ add r6, r1, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x10]
+ add r7, r6, #0
+ str r0, [sp, #4]
+ add r7, #8
+_021E1FD8:
+ ldr r0, [sp, #8]
+ mov r4, #0x30
+ lsl r1, r0, #0xc
+ mov r0, #3
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r0, [r6, #0xc]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #4]
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ add r5, r0, r1
+_021E1FF2:
+ str r4, [r6, #8]
+ ldr r0, [r7]
+ lsl r0, r0, #0xc
+ str r0, [r7]
+ add r0, r6, #0
+ bl FUN_0201FF84
+ mov r1, #0
+ str r0, [r5, #0x30]
+ bl FUN_02020130
+ ldr r0, [sp, #0xc]
+ add r4, #0x50
+ add r0, r0, #1
+ add r5, r5, #4
+ str r0, [sp, #0xc]
+ cmp r0, #2
+ blt _021E1FF2
+ ldr r0, [sp, #8]
+ add r0, #0x20
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ add r0, r0, #2
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x10]
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #4
+ blt _021E1FD8
+ mov r0, #0x90
+ str r0, [r6, #0xc]
+ mov r0, #0x80
+ lsl r0, r0, #0xc
+ str r0, [r6, #8]
+ ldr r0, [r6, #0xc]
+ lsl r1, r0, #0xc
+ mov r0, #3
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r0, [r6, #0xc]
+ add r0, r6, #0
+ bl FUN_0201FF84
+ ldr r1, [sp]
+ str r0, [r1, #0x50]
+ mov r1, #0
+ bl FUN_02020130
+ mov r0, #0xb0
+ mov r2, #0x18
+ str r0, [r6, #0xc]
+ lsl r0, r2, #0xc
+ str r0, [r6, #8]
+ ldr r0, [r6, #0xc]
+ lsl r1, r0, #0xc
+ lsl r0, r2, #0xf
+ add r0, r1, r0
+ str r0, [r6, #0xc]
+ add r0, r6, #0
+ bl FUN_0201FF84
+ ldr r1, [sp]
+ str r0, [r1, #0x54]
+ mov r1, #4
+ bl FUN_02020130
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E1FC0
+
+ thumb_func_start MOD16_021E207C
+MOD16_021E207C: ; 0x021E207C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ mov r0, #0x10
+ add r6, r1, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x10]
+ add r7, r6, #0
+ str r0, [sp, #4]
+ add r7, #8
+_021E2094:
+ ldr r0, [sp, #8]
+ mov r4, #0x1c
+ lsl r1, r0, #0xc
+ mov r0, #3
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r0, [r6, #0xc]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #4]
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ add r5, r0, r1
+_021E20AE:
+ str r4, [r6, #8]
+ ldr r0, [r7]
+ lsl r0, r0, #0xc
+ str r0, [r7]
+ add r0, r6, #0
+ bl FUN_0201FF84
+ mov r1, #6
+ str r0, [r5, #0x30]
+ bl FUN_02020130
+ ldr r0, [sp, #0xc]
+ add r4, #0x38
+ add r0, r0, #1
+ add r5, r5, #4
+ str r0, [sp, #0xc]
+ cmp r0, #3
+ blt _021E20AE
+ ldr r0, [sp, #8]
+ add r0, #0x20
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ add r0, r0, #3
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x10]
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #5
+ blt _021E2094
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E207C
+
+ thumb_func_start MOD16_021E20EC
+MOD16_021E20EC: ; 0x021E20EC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x7c
+ ldr r4, [r1]
+ ldr r3, _021E22A4 ; =0x00003EFF
+ str r0, [sp, #0x2c]
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #5
+ str r1, [sp, #0x10]
+ lsl r0, r0, #6
+ add r5, r2, #0
+ ldr r2, [r4, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r2, r3, #0
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x58
+ sub r2, #0x7c
+ add r3, r3, #2
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x38]
+ add r0, sp, #0x58
+ str r0, [sp, #0x3c]
+ mov r0, #0xf
+ str r0, [sp, #0x4c]
+ mov r0, #2
+ str r0, [sp, #0x50]
+ mov r0, #0
+ str r0, [sp, #0x34]
+ mov r0, #0x10
+ ldr r7, [sp, #0x34]
+ str r5, [sp, #0x54]
+ str r0, [sp, #0x30]
+_021E2156:
+ ldr r0, [sp, #0x30]
+ mov r6, #0
+ str r0, [sp, #0x44]
+ lsl r1, r0, #0xc
+ mov r0, #3
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r0, [sp, #0x44]
+ ldr r0, [sp, #0x2c]
+ lsl r1, r7, #2
+ mov r5, #0x1c
+ add r4, r0, r1
+_021E216E:
+ str r5, [sp, #0x40]
+ lsl r0, r5, #0xc
+ str r0, [sp, #0x40]
+ add r0, sp, #0x38
+ bl FUN_0201FF84
+ add r1, r4, #0
+ add r1, #0xa8
+ str r0, [r1]
+ add r0, r6, r7
+ cmp r0, #0xe
+ bhi _021E2280
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E2192: ; jump table
+ .short _021E21B0 - _021E2192 - 2 ; case 0
+ .short _021E21BE - _021E2192 - 2 ; case 1
+ .short _021E21CC - _021E2192 - 2 ; case 2
+ .short _021E21DA - _021E2192 - 2 ; case 3
+ .short _021E21E8 - _021E2192 - 2 ; case 4
+ .short _021E21F6 - _021E2192 - 2 ; case 5
+ .short _021E2204 - _021E2192 - 2 ; case 6
+ .short _021E2212 - _021E2192 - 2 ; case 7
+ .short _021E2220 - _021E2192 - 2 ; case 8
+ .short _021E222E - _021E2192 - 2 ; case 9
+ .short _021E223C - _021E2192 - 2 ; case 10
+ .short _021E224A - _021E2192 - 2 ; case 11
+ .short _021E2258 - _021E2192 - 2 ; case 12
+ .short _021E2266 - _021E2192 - 2 ; case 13
+ .short _021E2274 - _021E2192 - 2 ; case 14
+_021E21B0:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_02020130
+ b _021E2280
+_021E21BE:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #5
+ bl FUN_02020130
+ b _021E2280
+_021E21CC:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #0xa
+ bl FUN_02020130
+ b _021E2280
+_021E21DA:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_02020130
+ b _021E2280
+_021E21E8:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #6
+ bl FUN_02020130
+ b _021E2280
+_021E21F6:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #0xb
+ bl FUN_02020130
+ b _021E2280
+_021E2204:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #2
+ bl FUN_02020130
+ b _021E2280
+_021E2212:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #9
+ bl FUN_02020130
+ b _021E2280
+_021E2220:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #0xc
+ bl FUN_02020130
+ b _021E2280
+_021E222E:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #3
+ bl FUN_02020130
+ b _021E2280
+_021E223C:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #8
+ bl FUN_02020130
+ b _021E2280
+_021E224A:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #0xd
+ bl FUN_02020130
+ b _021E2280
+_021E2258:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #4
+ bl FUN_02020130
+ b _021E2280
+_021E2266:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #7
+ bl FUN_02020130
+ b _021E2280
+_021E2274:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_020200A0
+_021E2280:
+ add r6, r6, #1
+ add r5, #0x38
+ add r4, r4, #4
+ cmp r6, #3
+ bge _021E228C
+ b _021E216E
+_021E228C:
+ ldr r0, [sp, #0x30]
+ add r7, r7, #3
+ add r0, #0x20
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x34]
+ add r0, r0, #1
+ str r0, [sp, #0x34]
+ cmp r0, #5
+ bge _021E22A0
+ b _021E2156
+_021E22A0:
+ add sp, #0x7c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E22A4: .word 0x00003EFF
+ thumb_func_end MOD16_021E20EC
+
+ thumb_func_start MOD16_021E22A8
+MOD16_021E22A8: ; 0x021E22A8
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_021E22B0:
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E22C4
+ bl FUN_0201FFC8
+ add r0, r5, #0
+ add r0, #0xa8
+ str r6, [r0]
+_021E22C4:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xf
+ blt _021E22B0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E22A8
+
+ thumb_func_start MOD16_021E22D0
+MOD16_021E22D0: ; 0x021E22D0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ ldr r4, [r1]
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, _021E2330 ; =0x00003E83
+ add r6, r2, #0
+ bl FUN_020094F0
+ mov r1, #0x15
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #4]
+ mov r1, #0
+ bl FUN_02009E54
+ str r0, [sp, #0xc]
+ mov r0, #0
+ mov r2, #0x15
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ mov r0, #2
+ str r0, [sp, #0x24]
+ str r6, [sp, #0x28]
+ lsl r2, r2, #4
+ ldr r2, [r4, r2]
+ add r0, r5, #0
+ add r1, sp, #4
+ bl MOD16_021E23D0
+ mov r3, #0x42
+ lsl r3, r3, #2
+ ldr r0, [r5, r3]
+ add r2, r3, #0
+ str r0, [sp]
+ add r2, #0x48
+ sub r3, r3, #4
+ ldr r2, [r4, r2]
+ ldr r3, [r5, r3]
+ add r0, r5, #0
+ add r1, sp, #4
+ bl MOD16_021E23A0
+ add sp, #0x2c
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E2330: .word 0x00003E83
+ thumb_func_end MOD16_021E22D0
+
+ thumb_func_start MOD16_021E2334
+MOD16_021E2334: ; 0x021E2334
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD16_021E2554
+ add r0, r4, #0
+ bl MOD16_021E2570
+ pop {r4, pc}
+ thumb_func_end MOD16_021E2334
+
+ thumb_func_start MOD16_021E2344
+MOD16_021E2344: ; 0x021E2344
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ ldr r4, [r1]
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, _021E239C ; =0x00003E83
+ add r6, r2, #0
+ bl FUN_020094F0
+ mov r1, #0x15
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #4]
+ mov r1, #0
+ bl FUN_02009E54
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ mov r0, #2
+ str r0, [sp, #0x24]
+ add r0, r5, #0
+ str r6, [sp, #0x28]
+ bl MOD16_021E2570
+ mov r3, #0x42
+ lsl r3, r3, #2
+ ldr r0, [r5, r3]
+ add r2, r3, #0
+ str r0, [sp]
+ add r2, #0x48
+ sub r3, r3, #4
+ ldr r2, [r4, r2]
+ ldr r3, [r5, r3]
+ add r0, r5, #0
+ add r1, sp, #4
+ bl MOD16_021E23A0
+ add sp, #0x2c
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E239C: .word 0x00003E83
+ thumb_func_end MOD16_021E2344
+
+ thumb_func_start MOD16_021E23A0
+MOD16_021E23A0: ; 0x021E23A0
+ push {r3, lr}
+ cmp r3, #0
+ beq _021E23B0
+ cmp r3, #1
+ beq _021E23B6
+ cmp r3, #2
+ beq _021E23BC
+ pop {r3, pc}
+_021E23B0:
+ bl MOD16_021E2590
+ pop {r3, pc}
+_021E23B6:
+ bl MOD16_021E2634
+ pop {r3, pc}
+_021E23BC:
+ ldr r3, [sp, #8]
+ cmp r3, #0
+ bne _021E23C8
+ bl MOD16_021E26F0
+ pop {r3, pc}
+_021E23C8:
+ bl MOD16_021E27AC
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E23A0
+
+ thumb_func_start MOD16_021E23D0
+MOD16_021E23D0: ; 0x021E23D0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #8]
+ add r6, r2, #0
+ mov r1, #2
+ bl FUN_0201E28C
+ add r7, r0, #0
+ add r0, r6, #0
+ mov r1, #8
+ mov r2, #2
+ bl MOD16_021DB388
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r1, [sp, #8]
+ ldr r2, _021E2550 ; =0x00000266
+ add r0, r6, #0
+ mov r3, #0x32
+ bl MOD16_021DB3C8
+ ldr r1, [sp, #8]
+ neg r0, r0
+ str r1, [r4, #4]
+ ldr r1, [r5, #4]
+ lsr r0, r0, #1
+ str r1, [r4, #0xc]
+ str r0, [r4, #0x10]
+ mov r0, #5
+ mvn r0, r0
+ str r0, [r4, #0x14]
+ add r0, r4, #0
+ bl MOD16_021DB2BC
+ str r0, [r5, #0x1c]
+ ldr r0, [r0]
+ add r1, r7, #3
+ bl FUN_02011A60
+ ldr r0, [sp, #8]
+ bl MOD16_021DB3BC
+ add r0, r6, #0
+ mov r1, #8
+ mov r2, #2
+ bl MOD16_021DB388
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r1, [sp, #0xc]
+ ldr r2, _021E2550 ; =0x00000266
+ add r0, r6, #0
+ mov r3, #0x2f
+ bl MOD16_021DB3C8
+ ldr r1, [sp, #0xc]
+ neg r0, r0
+ str r1, [r4, #4]
+ ldr r1, [r5, #8]
+ lsr r0, r0, #1
+ str r1, [r4, #0xc]
+ str r0, [r4, #0x10]
+ mov r0, #5
+ mvn r0, r0
+ str r0, [r4, #0x14]
+ add r0, r4, #0
+ bl MOD16_021DB2BC
+ str r0, [r5, #0x20]
+ ldr r0, [r0]
+ add r1, r7, #3
+ bl FUN_02011A60
+ ldr r0, [sp, #0xc]
+ bl MOD16_021DB3BC
+ add r0, r6, #0
+ mov r1, #8
+ mov r2, #2
+ bl MOD16_021DB388
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r1, [sp, #0x10]
+ ldr r2, _021E2550 ; =0x00000266
+ add r0, r6, #0
+ mov r3, #0x30
+ bl MOD16_021DB3C8
+ ldr r1, [sp, #0x10]
+ neg r0, r0
+ str r1, [r4, #4]
+ ldr r1, [r5, #0xc]
+ lsr r0, r0, #1
+ str r1, [r4, #0xc]
+ str r0, [r4, #0x10]
+ mov r0, #5
+ mvn r0, r0
+ str r0, [r4, #0x14]
+ add r0, r4, #0
+ bl MOD16_021DB2BC
+ str r0, [r5, #0x24]
+ ldr r0, [r0]
+ add r1, r7, #3
+ bl FUN_02011A60
+ ldr r0, [sp, #0x10]
+ bl MOD16_021DB3BC
+ add r0, r6, #0
+ mov r1, #8
+ mov r2, #2
+ bl MOD16_021DB388
+ str r0, [sp, #0x14]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r1, [sp, #0x14]
+ ldr r2, _021E2550 ; =0x00000266
+ add r0, r6, #0
+ mov r3, #0x31
+ bl MOD16_021DB3C8
+ ldr r1, [sp, #0x14]
+ neg r0, r0
+ str r1, [r4, #4]
+ ldr r1, [r5, #0x10]
+ lsr r0, r0, #1
+ str r1, [r4, #0xc]
+ str r0, [r4, #0x10]
+ mov r0, #5
+ mvn r0, r0
+ str r0, [r4, #0x14]
+ add r0, r4, #0
+ bl MOD16_021DB2BC
+ str r0, [r5, #0x28]
+ ldr r0, [r0]
+ add r1, r7, #3
+ bl FUN_02011A60
+ ldr r0, [sp, #0x14]
+ bl MOD16_021DB3BC
+ add r0, r6, #0
+ mov r1, #8
+ mov r2, #2
+ bl MOD16_021DB388
+ str r0, [sp, #0x18]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r1, [sp, #0x18]
+ ldr r2, _021E2550 ; =0x00000266
+ add r0, r6, #0
+ mov r3, #0x33
+ bl MOD16_021DB3C8
+ ldr r1, [sp, #0x18]
+ neg r0, r0
+ str r1, [r4, #4]
+ ldr r1, [r5, #0x14]
+ lsr r0, r0, #1
+ str r1, [r4, #0xc]
+ str r0, [r4, #0x10]
+ mov r0, #5
+ mvn r0, r0
+ str r0, [r4, #0x14]
+ add r0, r4, #0
+ bl MOD16_021DB2BC
+ str r0, [r5, #0x2c]
+ ldr r0, [r0]
+ add r1, r7, #1
+ bl FUN_02011A60
+ ldr r0, [sp, #0x18]
+ bl MOD16_021DB3BC
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E2550: .word 0x00000266
+ thumb_func_end MOD16_021E23D0
+
+ thumb_func_start MOD16_021E2554
+MOD16_021E2554: ; 0x021E2554
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021E255A:
+ ldr r0, [r5, #0x18]
+ cmp r0, #0
+ beq _021E2564
+ bl MOD16_021DB338
+_021E2564:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _021E255A
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E2554
+
+ thumb_func_start MOD16_021E2570
+MOD16_021E2570: ; 0x021E2570
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_021E2578:
+ ldr r0, [r5, #0x6c]
+ cmp r0, #0
+ beq _021E2584
+ bl MOD16_021DB338
+ str r6, [r5, #0x6c]
+_021E2584:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xf
+ blt _021E2578
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E2570
+
+ thumb_func_start MOD16_021E2590
+MOD16_021E2590: ; 0x021E2590
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ add r0, r1, #0
+ str r1, [sp, #8]
+ ldr r0, [r0, #8]
+ mov r1, #2
+ str r2, [sp, #0xc]
+ bl FUN_0201E28C
+ str r0, [sp, #0x10]
+ add r0, #0xb
+ mov r5, #0
+ str r0, [sp, #0x10]
+_021E25AC:
+ ldr r0, [sp, #0xc]
+ mov r1, #0xa
+ mov r2, #2
+ bl MOD16_021DB388
+ add r7, r0, #0
+ cmp r5, #5
+ bhi _021E25EA
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E25C8: ; jump table
+ .short _021E25D4 - _021E25C8 - 2 ; case 0
+ .short _021E25D8 - _021E25C8 - 2 ; case 1
+ .short _021E25DC - _021E25C8 - 2 ; case 2
+ .short _021E25E0 - _021E25C8 - 2 ; case 3
+ .short _021E25E4 - _021E25C8 - 2 ; case 4
+ .short _021E25E8 - _021E25C8 - 2 ; case 5
+_021E25D4:
+ mov r4, #0x51
+ b _021E25EA
+_021E25D8:
+ mov r4, #0x52
+ b _021E25EA
+_021E25DC:
+ mov r4, #0x53
+ b _021E25EA
+_021E25E0:
+ mov r4, #0x54
+ b _021E25EA
+_021E25E4:
+ mov r4, #0x55
+ b _021E25EA
+_021E25E8:
+ mov r4, #0x56
+_021E25EA:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0xc]
+ ldr r2, _021E2630 ; =0x00000266
+ add r1, r7, #0
+ add r3, r4, #0
+ bl MOD16_021DB3C8
+ neg r0, r0
+ lsr r1, r0, #1
+ ldr r0, [sp, #8]
+ str r1, [r0, #0x10]
+ str r7, [r0, #4]
+ ldr r1, [r6, #0x30]
+ str r1, [r0, #0xc]
+ mov r1, #5
+ mvn r1, r1
+ str r1, [r0, #0x14]
+ bl MOD16_021DB2BC
+ str r0, [r6, #0x6c]
+ ldr r0, [r0]
+ ldr r1, [sp, #0x10]
+ bl FUN_02011A60
+ add r0, r7, #0
+ bl MOD16_021DB3BC
+ add r5, r5, #1
+ add r6, r6, #4
+ cmp r5, #6
+ blt _021E25AC
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E2630: .word 0x00000266
+ thumb_func_end MOD16_021E2590
+
+ thumb_func_start MOD16_021E2634
+MOD16_021E2634: ; 0x021E2634
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ add r0, r1, #0
+ str r1, [sp, #8]
+ ldr r0, [r0, #8]
+ mov r1, #2
+ str r2, [sp, #0xc]
+ bl FUN_0201E28C
+ str r0, [sp, #0x10]
+ add r0, #0xb
+ mov r5, #0
+ str r0, [sp, #0x10]
+_021E2650:
+ ldr r0, [sp, #0xc]
+ mov r1, #0xa
+ mov r2, #2
+ bl MOD16_021DB388
+ add r7, r0, #0
+ cmp r5, #9
+ bhi _021E26A6
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E266C: ; jump table
+ .short _021E2680 - _021E266C - 2 ; case 0
+ .short _021E2684 - _021E266C - 2 ; case 1
+ .short _021E2688 - _021E266C - 2 ; case 2
+ .short _021E268C - _021E266C - 2 ; case 3
+ .short _021E2690 - _021E266C - 2 ; case 4
+ .short _021E2694 - _021E266C - 2 ; case 5
+ .short _021E2698 - _021E266C - 2 ; case 6
+ .short _021E269C - _021E266C - 2 ; case 7
+ .short _021E26A0 - _021E266C - 2 ; case 8
+ .short _021E26A4 - _021E266C - 2 ; case 9
+_021E2680:
+ mov r4, #0x36
+ b _021E26A6
+_021E2684:
+ mov r4, #0x37
+ b _021E26A6
+_021E2688:
+ mov r4, #0x38
+ b _021E26A6
+_021E268C:
+ mov r4, #0x39
+ b _021E26A6
+_021E2690:
+ mov r4, #0x3a
+ b _021E26A6
+_021E2694:
+ mov r4, #0x3b
+ b _021E26A6
+_021E2698:
+ mov r4, #0x3c
+ b _021E26A6
+_021E269C:
+ mov r4, #0x3d
+ b _021E26A6
+_021E26A0:
+ mov r4, #0x3e
+ b _021E26A6
+_021E26A4:
+ mov r4, #0x73
+_021E26A6:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0xc]
+ ldr r2, _021E26EC ; =0x00000266
+ add r1, r7, #0
+ add r3, r4, #0
+ bl MOD16_021DB3C8
+ neg r0, r0
+ lsr r1, r0, #1
+ ldr r0, [sp, #8]
+ str r1, [r0, #0x10]
+ str r7, [r0, #4]
+ ldr r1, [r6, #0x30]
+ str r1, [r0, #0xc]
+ mov r1, #5
+ mvn r1, r1
+ str r1, [r0, #0x14]
+ bl MOD16_021DB2BC
+ str r0, [r6, #0x6c]
+ ldr r0, [r0]
+ ldr r1, [sp, #0x10]
+ bl FUN_02011A60
+ add r0, r7, #0
+ bl MOD16_021DB3BC
+ add r5, r5, #1
+ add r6, r6, #4
+ cmp r5, #0xa
+ blt _021E2650
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E26EC: .word 0x00000266
+ thumb_func_end MOD16_021E2634
+
+ thumb_func_start MOD16_021E26F0
+MOD16_021E26F0: ; 0x021E26F0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ add r0, r1, #0
+ str r1, [sp, #8]
+ ldr r0, [r0, #8]
+ mov r1, #2
+ str r2, [sp, #0xc]
+ bl FUN_0201E28C
+ str r0, [sp, #0x10]
+ add r0, #0xb
+ mov r5, #0
+ str r0, [sp, #0x10]
+_021E270C:
+ ldr r0, [sp, #0xc]
+ mov r1, #0xa
+ mov r2, #2
+ bl MOD16_021DB388
+ add r7, r0, #0
+ cmp r5, #9
+ bhi _021E2762
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E2728: ; jump table
+ .short _021E273C - _021E2728 - 2 ; case 0
+ .short _021E2740 - _021E2728 - 2 ; case 1
+ .short _021E2744 - _021E2728 - 2 ; case 2
+ .short _021E2748 - _021E2728 - 2 ; case 3
+ .short _021E274C - _021E2728 - 2 ; case 4
+ .short _021E2750 - _021E2728 - 2 ; case 5
+ .short _021E2754 - _021E2728 - 2 ; case 6
+ .short _021E2758 - _021E2728 - 2 ; case 7
+ .short _021E275C - _021E2728 - 2 ; case 8
+ .short _021E2760 - _021E2728 - 2 ; case 9
+_021E273C:
+ mov r4, #0x40
+ b _021E2762
+_021E2740:
+ mov r4, #0x46
+ b _021E2762
+_021E2744:
+ mov r4, #0x49
+ b _021E2762
+_021E2748:
+ mov r4, #0x47
+ b _021E2762
+_021E274C:
+ mov r4, #0x48
+ b _021E2762
+_021E2750:
+ mov r4, #0x4c
+ b _021E2762
+_021E2754:
+ mov r4, #0x4b
+ b _021E2762
+_021E2758:
+ mov r4, #0x4d
+ b _021E2762
+_021E275C:
+ mov r4, #0x50
+ b _021E2762
+_021E2760:
+ mov r4, #0x74
+_021E2762:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0xc]
+ ldr r2, _021E27A8 ; =0x00000266
+ add r1, r7, #0
+ add r3, r4, #0
+ bl MOD16_021DB3C8
+ neg r0, r0
+ lsr r1, r0, #1
+ ldr r0, [sp, #8]
+ str r1, [r0, #0x10]
+ str r7, [r0, #4]
+ ldr r1, [r6, #0x30]
+ str r1, [r0, #0xc]
+ mov r1, #5
+ mvn r1, r1
+ str r1, [r0, #0x14]
+ bl MOD16_021DB2BC
+ str r0, [r6, #0x6c]
+ ldr r0, [r0]
+ ldr r1, [sp, #0x10]
+ bl FUN_02011A60
+ add r0, r7, #0
+ bl MOD16_021DB3BC
+ add r5, r5, #1
+ add r6, r6, #4
+ cmp r5, #0xa
+ blt _021E270C
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E27A8: .word 0x00000266
+ thumb_func_end MOD16_021E26F0
+
+ thumb_func_start MOD16_021E27AC
+MOD16_021E27AC: ; 0x021E27AC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ add r0, r1, #0
+ str r1, [sp, #8]
+ ldr r0, [r0, #8]
+ mov r1, #2
+ str r2, [sp, #0xc]
+ bl FUN_0201E28C
+ str r0, [sp, #0x10]
+ add r0, #0xb
+ mov r5, #0
+ str r0, [sp, #0x10]
+_021E27C8:
+ ldr r0, [sp, #0xc]
+ mov r1, #0xa
+ mov r2, #2
+ bl MOD16_021DB388
+ add r7, r0, #0
+ cmp r5, #8
+ bhi _021E2818
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E27E4: ; jump table
+ .short _021E27F6 - _021E27E4 - 2 ; case 0
+ .short _021E27FA - _021E27E4 - 2 ; case 1
+ .short _021E27FE - _021E27E4 - 2 ; case 2
+ .short _021E2802 - _021E27E4 - 2 ; case 3
+ .short _021E2806 - _021E27E4 - 2 ; case 4
+ .short _021E280A - _021E27E4 - 2 ; case 5
+ .short _021E280E - _021E27E4 - 2 ; case 6
+ .short _021E2812 - _021E27E4 - 2 ; case 7
+ .short _021E2816 - _021E27E4 - 2 ; case 8
+_021E27F6:
+ mov r4, #0x41
+ b _021E2818
+_021E27FA:
+ mov r4, #0x42
+ b _021E2818
+_021E27FE:
+ mov r4, #0x44
+ b _021E2818
+_021E2802:
+ mov r4, #0x43
+ b _021E2818
+_021E2806:
+ mov r4, #0x4a
+ b _021E2818
+_021E280A:
+ mov r4, #0x45
+ b _021E2818
+_021E280E:
+ mov r4, #0x4e
+ b _021E2818
+_021E2812:
+ mov r4, #0x4f
+ b _021E2818
+_021E2816:
+ mov r4, #0x74
+_021E2818:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0xc]
+ ldr r2, _021E2860 ; =0x00000266
+ add r1, r7, #0
+ add r3, r4, #0
+ bl MOD16_021DB3C8
+ neg r0, r0
+ lsr r1, r0, #1
+ ldr r0, [sp, #8]
+ str r1, [r0, #0x10]
+ str r7, [r0, #4]
+ ldr r1, [r6, #0x30]
+ str r1, [r0, #0xc]
+ mov r1, #5
+ mvn r1, r1
+ str r1, [r0, #0x14]
+ bl MOD16_021DB2BC
+ str r0, [r6, #0x6c]
+ ldr r0, [r0]
+ ldr r1, [sp, #0x10]
+ bl FUN_02011A60
+ add r0, r7, #0
+ bl MOD16_021DB3BC
+ add r5, r5, #1
+ add r6, r6, #4
+ cmp r5, #9
+ blt _021E27C8
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E2860: .word 0x00000266
+ thumb_func_end MOD16_021E27AC
+
+ thumb_func_start MOD16_021E2864
+MOD16_021E2864: ; 0x021E2864
+ ldr r1, _021E286C ; =0x0000FFFF
+ add r0, #0x84
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+_021E286C: .word 0x0000FFFF
+ thumb_func_end MOD16_021E2864
+
+ thumb_func_start MOD16_021E2870
+MOD16_021E2870: ; 0x021E2870
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021E28C4
+ ldr r2, [r5, #0x24]
+ ldr r3, [r5, #0x28]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E2888
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E2870
+
+ thumb_func_start MOD16_021E2888
+MOD16_021E2888: ; 0x021E2888
+ push {r3, lr}
+ cmp r2, #3
+ bhi _021E28C2
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021E289A: ; jump table
+ .short _021E28A2 - _021E289A - 2 ; case 0
+ .short _021E28A8 - _021E289A - 2 ; case 1
+ .short _021E28AE - _021E289A - 2 ; case 2
+ .short _021E28BE - _021E289A - 2 ; case 3
+_021E28A2:
+ bl MOD16_021E2994
+ pop {r3, pc}
+_021E28A8:
+ bl MOD16_021E2A00
+ pop {r3, pc}
+_021E28AE:
+ cmp r3, #0
+ bne _021E28B8
+ bl MOD16_021E2A84
+ pop {r3, pc}
+_021E28B8:
+ bl MOD16_021E2B08
+ pop {r3, pc}
+_021E28BE:
+ bl MOD16_021E2C28
+_021E28C2:
+ pop {r3, pc}
+ thumb_func_end MOD16_021E2888
+
+ thumb_func_start MOD16_021E28C4
+MOD16_021E28C4: ; 0x021E28C4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ add r4, r1, #0
+ cmp r0, #5
+ bhi _021E2982
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E28DE: ; jump table
+ .short _021E28EA - _021E28DE - 2 ; case 0
+ .short _021E28FA - _021E28DE - 2 ; case 1
+ .short _021E2914 - _021E28DE - 2 ; case 2
+ .short _021E292E - _021E28DE - 2 ; case 3
+ .short _021E2950 - _021E28DE - 2 ; case 4
+ .short _021E296A - _021E28DE - 2 ; case 5
+_021E28EA:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD16_021DEC40
+ ldr r0, _021E298C ; =0x000005DD
+ bl FUN_020054C8
+ b _021E2982
+_021E28FA:
+ ldr r0, [r4, #8]
+ bl MOD16_021DEBB8
+ cmp r0, #0
+ beq _021E2982
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD16_021DEBA4
+ ldr r0, _021E298C ; =0x000005DD
+ bl FUN_020054C8
+ b _021E2982
+_021E2914:
+ ldr r0, [r4, #8]
+ bl MOD16_021DEBB8
+ cmp r0, #1
+ beq _021E2982
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD16_021DEBA4
+ ldr r0, _021E298C ; =0x000005DD
+ bl FUN_020054C8
+ b _021E2982
+_021E292E:
+ ldr r0, [r4, #8]
+ bl MOD16_021DEBB8
+ cmp r0, #2
+ beq _021E2982
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD16_021DEBA4
+ ldr r0, _021E298C ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x88
+ str r1, [r0]
+ b _021E2982
+_021E2950:
+ ldr r0, [r4, #8]
+ bl MOD16_021DEBB8
+ cmp r0, #3
+ beq _021E2982
+ ldr r0, [r4, #8]
+ mov r1, #3
+ bl MOD16_021DEBA4
+ ldr r0, _021E298C ; =0x000005DD
+ bl FUN_020054C8
+ b _021E2982
+_021E296A:
+ add r0, r5, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ cmp r0, #1
+ bgt _021E2982
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD16_021DEC40
+ ldr r0, _021E298C ; =0x000005DD
+ bl FUN_020054C8
+_021E2982:
+ ldr r0, _021E2990 ; =0x0000FFFF
+ add r5, #0x80
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+ nop
+_021E298C: .word 0x000005DD
+_021E2990: .word 0x0000FFFF
+ thumb_func_end MOD16_021E28C4
+
+ thumb_func_start MOD16_021E2994
+MOD16_021E2994: ; 0x021E2994
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ add r6, r1, #0
+ mov r4, #0x64
+ cmp r0, #5
+ bhi _021E29D2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E29B0: ; jump table
+ .short _021E29BC - _021E29B0 - 2 ; case 0
+ .short _021E29C0 - _021E29B0 - 2 ; case 1
+ .short _021E29C4 - _021E29B0 - 2 ; case 2
+ .short _021E29C8 - _021E29B0 - 2 ; case 3
+ .short _021E29CC - _021E29B0 - 2 ; case 4
+ .short _021E29D0 - _021E29B0 - 2 ; case 5
+_021E29BC:
+ mov r4, #0
+ b _021E29D2
+_021E29C0:
+ mov r4, #1
+ b _021E29D2
+_021E29C4:
+ mov r4, #2
+ b _021E29D2
+_021E29C8:
+ mov r4, #3
+ b _021E29D2
+_021E29CC:
+ mov r4, #4
+ b _021E29D2
+_021E29D0:
+ mov r4, #5
+_021E29D2:
+ cmp r4, #0x64
+ beq _021E29EE
+ ldr r0, [r6, #8]
+ bl MOD16_021DEBD4
+ cmp r4, r0
+ beq _021E29EE
+ ldr r0, _021E29F8 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, [r6, #8]
+ add r1, r4, #0
+ bl MOD16_021DEBC0
+_021E29EE:
+ ldr r0, _021E29FC ; =0x0000FFFF
+ add r5, #0x84
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+ nop
+_021E29F8: .word 0x000005DD
+_021E29FC: .word 0x0000FFFF
+ thumb_func_end MOD16_021E2994
+
+ thumb_func_start MOD16_021E2A00
+MOD16_021E2A00: ; 0x021E2A00
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ add r6, r1, #0
+ mov r4, #0x64
+ cmp r0, #9
+ bhi _021E2A56
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E2A1C: ; jump table
+ .short _021E2A30 - _021E2A1C - 2 ; case 0
+ .short _021E2A34 - _021E2A1C - 2 ; case 1
+ .short _021E2A38 - _021E2A1C - 2 ; case 2
+ .short _021E2A3C - _021E2A1C - 2 ; case 3
+ .short _021E2A40 - _021E2A1C - 2 ; case 4
+ .short _021E2A44 - _021E2A1C - 2 ; case 5
+ .short _021E2A48 - _021E2A1C - 2 ; case 6
+ .short _021E2A4C - _021E2A1C - 2 ; case 7
+ .short _021E2A50 - _021E2A1C - 2 ; case 8
+ .short _021E2A54 - _021E2A1C - 2 ; case 9
+_021E2A30:
+ mov r4, #1
+ b _021E2A56
+_021E2A34:
+ mov r4, #2
+ b _021E2A56
+_021E2A38:
+ mov r4, #3
+ b _021E2A56
+_021E2A3C:
+ mov r4, #4
+ b _021E2A56
+_021E2A40:
+ mov r4, #5
+ b _021E2A56
+_021E2A44:
+ mov r4, #6
+ b _021E2A56
+_021E2A48:
+ mov r4, #7
+ b _021E2A56
+_021E2A4C:
+ mov r4, #8
+ b _021E2A56
+_021E2A50:
+ mov r4, #9
+ b _021E2A56
+_021E2A54:
+ mov r4, #0
+_021E2A56:
+ cmp r4, #0x64
+ beq _021E2A72
+ ldr r0, [r6, #8]
+ bl MOD16_021DEBF0
+ cmp r4, r0
+ beq _021E2A72
+ ldr r0, _021E2A7C ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, [r6, #8]
+ add r1, r4, #0
+ bl MOD16_021DEBDC
+_021E2A72:
+ ldr r0, _021E2A80 ; =0x0000FFFF
+ add r5, #0x84
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+ nop
+_021E2A7C: .word 0x000005DD
+_021E2A80: .word 0x0000FFFF
+ thumb_func_end MOD16_021E2A00
+
+ thumb_func_start MOD16_021E2A84
+MOD16_021E2A84: ; 0x021E2A84
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ add r6, r1, #0
+ mov r4, #0x64
+ cmp r0, #0xa
+ bhi _021E2AE8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E2AA0: ; jump table
+ .short _021E2AB6 - _021E2AA0 - 2 ; case 0
+ .short _021E2ABA - _021E2AA0 - 2 ; case 1
+ .short _021E2ABE - _021E2AA0 - 2 ; case 2
+ .short _021E2AC2 - _021E2AA0 - 2 ; case 3
+ .short _021E2AC6 - _021E2AA0 - 2 ; case 4
+ .short _021E2ACA - _021E2AA0 - 2 ; case 5
+ .short _021E2ACE - _021E2AA0 - 2 ; case 6
+ .short _021E2AD2 - _021E2AA0 - 2 ; case 7
+ .short _021E2AD6 - _021E2AA0 - 2 ; case 8
+ .short _021E2ADA - _021E2AA0 - 2 ; case 9
+ .short _021E2ADE - _021E2AA0 - 2 ; case 10
+_021E2AB6:
+ mov r4, #1
+ b _021E2AE8
+_021E2ABA:
+ mov r4, #2
+ b _021E2AE8
+_021E2ABE:
+ mov r4, #3
+ b _021E2AE8
+_021E2AC2:
+ mov r4, #4
+ b _021E2AE8
+_021E2AC6:
+ mov r4, #5
+ b _021E2AE8
+_021E2ACA:
+ mov r4, #6
+ b _021E2AE8
+_021E2ACE:
+ mov r4, #7
+ b _021E2AE8
+_021E2AD2:
+ mov r4, #8
+ b _021E2AE8
+_021E2AD6:
+ mov r4, #9
+ b _021E2AE8
+_021E2ADA:
+ mov r4, #0
+ b _021E2AE8
+_021E2ADE:
+ mov r0, #1
+ str r0, [r5, #0x20]
+ ldr r0, _021E2B00 ; =0x000005DD
+ bl FUN_020054C8
+_021E2AE8:
+ cmp r4, #0x64
+ beq _021E2AF6
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD16_021E2B84
+_021E2AF6:
+ ldr r0, _021E2B04 ; =0x0000FFFF
+ add r5, #0x84
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+ nop
+_021E2B00: .word 0x000005DD
+_021E2B04: .word 0x0000FFFF
+ thumb_func_end MOD16_021E2A84
+
+ thumb_func_start MOD16_021E2B08
+MOD16_021E2B08: ; 0x021E2B08
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ add r6, r1, #0
+ mov r4, #0x64
+ cmp r0, #9
+ bhi _021E2B66
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E2B24: ; jump table
+ .short _021E2B38 - _021E2B24 - 2 ; case 0
+ .short _021E2B3C - _021E2B24 - 2 ; case 1
+ .short _021E2B40 - _021E2B24 - 2 ; case 2
+ .short _021E2B44 - _021E2B24 - 2 ; case 3
+ .short _021E2B48 - _021E2B24 - 2 ; case 4
+ .short _021E2B4C - _021E2B24 - 2 ; case 5
+ .short _021E2B50 - _021E2B24 - 2 ; case 6
+ .short _021E2B54 - _021E2B24 - 2 ; case 7
+ .short _021E2B58 - _021E2B24 - 2 ; case 8
+ .short _021E2B5C - _021E2B24 - 2 ; case 9
+_021E2B38:
+ mov r4, #0xa
+ b _021E2B66
+_021E2B3C:
+ mov r4, #0xb
+ b _021E2B66
+_021E2B40:
+ mov r4, #0xc
+ b _021E2B66
+_021E2B44:
+ mov r4, #0xd
+ b _021E2B66
+_021E2B48:
+ mov r4, #0xe
+ b _021E2B66
+_021E2B4C:
+ mov r4, #0xf
+ b _021E2B66
+_021E2B50:
+ mov r4, #0x10
+ b _021E2B66
+_021E2B54:
+ mov r4, #0x11
+ b _021E2B66
+_021E2B58:
+ mov r4, #0
+ b _021E2B66
+_021E2B5C:
+ mov r0, #0
+ str r0, [r5, #0x20]
+ ldr r0, _021E2B7C ; =0x000005DD
+ bl FUN_020054C8
+_021E2B66:
+ cmp r4, #0x64
+ beq _021E2B74
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD16_021E2B84
+_021E2B74:
+ ldr r0, _021E2B80 ; =0x0000FFFF
+ add r5, #0x84
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021E2B7C: .word 0x000005DD
+_021E2B80: .word 0x0000FFFF
+ thumb_func_end MOD16_021E2B08
+
+ thumb_func_start MOD16_021E2B84
+MOD16_021E2B84: ; 0x021E2B84
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ ldr r0, [r4, #8]
+ beq _021E2BE4
+ mov r1, #0
+ bl MOD16_021DEC14
+ cmp r6, r0
+ beq _021E2C20
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD16_021DEC14
+ cmp r6, r0
+ beq _021E2C20
+ add r1, r5, #0
+ add r1, #0x88
+ ldr r0, [r4, #8]
+ ldr r1, [r1]
+ bl MOD16_021DEC14
+ cmp r6, r0
+ beq _021E2C20
+ add r2, r5, #0
+ add r2, #0x88
+ ldr r0, [r4, #8]
+ ldr r2, [r2]
+ add r1, r6, #0
+ bl MOD16_021DEBF8
+ add r0, r5, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ add r5, #0x88
+ add r0, r0, #1
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ str r0, [r5]
+ ldr r0, _021E2C24 ; =0x000005DD
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021E2BE4:
+ mov r1, #0
+ bl MOD16_021DEC14
+ cmp r0, #0
+ ldr r0, [r4, #8]
+ beq _021E2C00
+ add r1, r6, #0
+ mov r2, #0
+ bl MOD16_021DEBF8
+ ldr r0, _021E2C24 ; =0x000005DD
+ bl FUN_020054C8
+ b _021E2C1A
+_021E2C00:
+ mov r1, #1
+ bl MOD16_021DEC14
+ cmp r0, #0
+ beq _021E2C1A
+ ldr r0, [r4, #8]
+ add r1, r6, #0
+ mov r2, #1
+ bl MOD16_021DEBF8
+ ldr r0, _021E2C24 ; =0x000005DD
+ bl FUN_020054C8
+_021E2C1A:
+ mov r0, #0
+ add r5, #0x88
+ str r0, [r5]
+_021E2C20:
+ pop {r4, r5, r6, pc}
+ nop
+_021E2C24: .word 0x000005DD
+ thumb_func_end MOD16_021E2B84
+
+ thumb_func_start MOD16_021E2C28
+MOD16_021E2C28: ; 0x021E2C28
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ add r6, r1, #0
+ mov r4, #0x64
+ cmp r0, #0xe
+ bhi _021E2C9C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E2C44: ; jump table
+ .short _021E2C62 - _021E2C44 - 2 ; case 0
+ .short _021E2C66 - _021E2C44 - 2 ; case 1
+ .short _021E2C6A - _021E2C44 - 2 ; case 2
+ .short _021E2C6E - _021E2C44 - 2 ; case 3
+ .short _021E2C72 - _021E2C44 - 2 ; case 4
+ .short _021E2C76 - _021E2C44 - 2 ; case 5
+ .short _021E2C7A - _021E2C44 - 2 ; case 6
+ .short _021E2C7E - _021E2C44 - 2 ; case 7
+ .short _021E2C82 - _021E2C44 - 2 ; case 8
+ .short _021E2C86 - _021E2C44 - 2 ; case 9
+ .short _021E2C8A - _021E2C44 - 2 ; case 10
+ .short _021E2C8E - _021E2C44 - 2 ; case 11
+ .short _021E2C92 - _021E2C44 - 2 ; case 12
+ .short _021E2C96 - _021E2C44 - 2 ; case 13
+ .short _021E2C9A - _021E2C44 - 2 ; case 14
+_021E2C62:
+ mov r4, #0xd
+ b _021E2C9C
+_021E2C66:
+ mov r4, #4
+ b _021E2C9C
+_021E2C6A:
+ mov r4, #0xc
+ b _021E2C9C
+_021E2C6E:
+ mov r4, #9
+ b _021E2C9C
+_021E2C72:
+ mov r4, #8
+ b _021E2C9C
+_021E2C76:
+ mov r4, #3
+ b _021E2C9C
+_021E2C7A:
+ mov r4, #0xa
+ b _021E2C9C
+_021E2C7E:
+ mov r4, #1
+ b _021E2C9C
+_021E2C82:
+ mov r4, #6
+ b _021E2C9C
+_021E2C86:
+ mov r4, #0xb
+ b _021E2C9C
+_021E2C8A:
+ mov r4, #0xe
+ b _021E2C9C
+_021E2C8E:
+ mov r4, #2
+ b _021E2C9C
+_021E2C92:
+ mov r4, #5
+ b _021E2C9C
+_021E2C96:
+ mov r4, #7
+ b _021E2C9C
+_021E2C9A:
+ mov r4, #0
+_021E2C9C:
+ cmp r4, #0x64
+ beq _021E2CB8
+ ldr r0, [r6, #8]
+ bl MOD16_021DEC38
+ cmp r4, r0
+ beq _021E2CB8
+ ldr r0, _021E2CC0 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, [r6, #8]
+ add r1, r4, #0
+ bl MOD16_021DEC24
+_021E2CB8:
+ ldr r0, _021E2CC4 ; =0x0000FFFF
+ add r5, #0x84
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021E2CC0: .word 0x000005DD
+_021E2CC4: .word 0x0000FFFF
+ thumb_func_end MOD16_021E2C28
+
+ thumb_func_start MOD16_021E2CC8
+MOD16_021E2CC8: ; 0x021E2CC8
+ push {r3, r4, r5, lr}
+ mov r3, #0x4b
+ lsl r3, r3, #2
+ ldr r2, [r0, r3]
+ cmp r2, #0
+ bne _021E2CF4
+ ldr r2, [r1, #4]
+ cmp r2, #0
+ ble _021E2CF8
+ str r2, [r0, r3]
+ mov r5, #0
+ add r2, r3, #4
+ str r5, [r0, r2]
+ add r2, r3, #0
+ ldr r4, [r1, #8]
+ add r2, #8
+ add r3, #8
+ str r4, [r0, r2]
+ ldr r0, [r0, r3]
+ str r5, [r0]
+ str r5, [r1, #4]
+ pop {r3, r4, r5, pc}
+_021E2CF4:
+ bl MOD16_021E2CFC
+_021E2CF8:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E2CC8
+
+ thumb_func_start MOD16_021E2CFC
+MOD16_021E2CFC: ; 0x021E2CFC
+ push {r4, lr}
+ sub sp, #8
+ mov r3, #0x4b
+ add r4, r0, #0
+ lsl r3, r3, #2
+ ldr r1, [r4, r3]
+ cmp r1, #0
+ beq _021E2DAE
+ add r0, r3, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021E2D1C
+ cmp r0, #1
+ beq _021E2D6E
+ add sp, #8
+ pop {r4, pc}
+_021E2D1C:
+ cmp r1, #1
+ bne _021E2D36
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #2
+ sub r3, #0x20
+ str r0, [sp, #4]
+ add r0, r4, r3
+ mov r2, #0x10
+ add r3, r1, #0
+ bl MOD16_021D8BD8
+ b _021E2D4A
+_021E2D36:
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #2
+ sub r3, #0x20
+ str r0, [sp, #4]
+ add r0, r4, r3
+ mov r1, #0x10
+ add r3, r2, #0
+ bl MOD16_021D8BD8
+_021E2D4A:
+ mov r0, #0x43
+ lsl r0, r0, #2
+ ldr r3, [r4, r0]
+ mov r0, #0x10
+ sub r0, r0, r3
+ str r0, [sp]
+ ldr r0, _021E2DB4 ; =0x04001050
+ mov r1, #0
+ mov r2, #4
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ add sp, #8
+ add r1, r1, #1
+ str r1, [r4, r0]
+ pop {r4, pc}
+_021E2D6E:
+ sub r3, #0x20
+ add r0, r4, r3
+ bl MOD16_021D8BF4
+ mov r1, #0x43
+ lsl r1, r1, #2
+ ldr r3, [r4, r1]
+ mov r2, #0x10
+ sub r2, r2, r3
+ lsl r2, r2, #8
+ orr r3, r2
+ ldr r2, _021E2DB8 ; =0x04001052
+ cmp r0, #1
+ strh r3, [r2]
+ bne _021E2DAE
+ add r1, #0x20
+ ldr r0, [r4, r1]
+ cmp r0, #1
+ bne _021E2D9A
+ mov r1, #0
+ sub r0, r2, #2
+ strh r1, [r0]
+_021E2D9A:
+ mov r1, #0x4d
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ mov r2, #1
+ str r2, [r0]
+ sub r0, r1, #4
+ mov r2, #0
+ str r2, [r4, r0]
+ sub r1, #8
+ str r2, [r4, r1]
+_021E2DAE:
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021E2DB4: .word 0x04001050
+_021E2DB8: .word 0x04001052
+ thumb_func_end MOD16_021E2CFC
+
+ thumb_func_start MOD16_021E2DBC
+MOD16_021E2DBC: ; 0x021E2DBC
+ push {r3, lr}
+ cmp r2, #2
+ bne _021E2DD2
+ cmp r3, #0
+ bne _021E2DCC
+ bl MOD16_021E2E14
+ pop {r3, pc}
+_021E2DCC:
+ bl MOD16_021E2E44
+ pop {r3, pc}
+_021E2DD2:
+ bl MOD16_021E2DD8
+ pop {r3, pc}
+ thumb_func_end MOD16_021E2DBC
+
+ thumb_func_start MOD16_021E2DD8
+MOD16_021E2DD8: ; 0x021E2DD8
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r6, #0
+_021E2DE0:
+ ldr r0, [r5, #0x30]
+ cmp r0, #0
+ beq _021E2DEC
+ add r1, r4, #0
+ bl FUN_02020398
+_021E2DEC:
+ ldr r0, [r5, #0x6c]
+ cmp r0, #0
+ beq _021E2DFA
+ ldr r0, [r0]
+ add r1, r4, #0
+ bl FUN_02011AF0
+_021E2DFA:
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E2E0A
+ add r1, r4, #0
+ bl FUN_02020398
+_021E2E0A:
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #0xf
+ blt _021E2DE0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E2DD8
+
+ thumb_func_start MOD16_021E2E14
+MOD16_021E2E14: ; 0x021E2E14
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+_021E2E1C:
+ cmp r4, #0xa
+ beq _021E2E3A
+ ldr r0, [r5, #0x30]
+ cmp r0, #0
+ beq _021E2E2C
+ add r1, r6, #0
+ bl FUN_02020398
+_021E2E2C:
+ ldr r0, [r5, #0x6c]
+ cmp r0, #0
+ beq _021E2E3A
+ ldr r0, [r0]
+ add r1, r6, #0
+ bl FUN_02011AF0
+_021E2E3A:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xf
+ blt _021E2E1C
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E2E14
+
+ thumb_func_start MOD16_021E2E44
+MOD16_021E2E44: ; 0x021E2E44
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+_021E2E4C:
+ cmp r4, #9
+ beq _021E2E6A
+ ldr r0, [r5, #0x30]
+ cmp r0, #0
+ beq _021E2E5C
+ add r1, r6, #0
+ bl FUN_02020398
+_021E2E5C:
+ ldr r0, [r5, #0x6c]
+ cmp r0, #0
+ beq _021E2E6A
+ ldr r0, [r0]
+ add r1, r6, #0
+ bl FUN_02011AF0
+_021E2E6A:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xf
+ blt _021E2E4C
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E2E44
+
+ thumb_func_start MOD16_021E2E74
+MOD16_021E2E74: ; 0x021E2E74
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r2, #0
+ ldr r0, [r4, #8]
+ bl MOD16_021DEC5C
+ cmp r0, #4
+ bne _021E2EC0
+ ldr r0, [r4, #8]
+ bl MOD16_021DEC54
+ cmp r0, #3
+ bne _021E2EA4
+ mov r1, #0
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #4
+ sub r2, #0x10
+ mov r3, #0x3f
+ bl FUN_0200A208
+ add sp, #4
+ pop {r3, r4, pc}
+_021E2EA4:
+ ldr r0, [r4, #8]
+ bl MOD16_021DEC54
+ cmp r0, #1
+ bne _021E2EC0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ add r1, r0, #0
+ sub r1, #0x14
+ mov r2, #0
+ mov r3, #0x3f
+ bl FUN_0200A208
+_021E2EC0:
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD16_021E2E74
+
+ thumb_func_start MOD16_021E2EC4
+MOD16_021E2EC4: ; 0x021E2EC4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r0, r7, #0
+ bl MOD16_021E2F64
+ add r4, r0, #0
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021E2FA8
+ str r4, [r5]
+ str r0, [r5, #4]
+ mov r0, #0
+ str r0, [r5, #0x20]
+ bl MOD16_021E2FFC
+ str r0, [r5, #0x24]
+ ldr r0, _021E2F04 ; =MOD16_021E3000
+ str r0, [r5, #8]
+ ldr r0, _021E2F08 ; =MOD16_021E3074
+ str r0, [r5, #0xc]
+ ldr r0, _021E2F0C ; =MOD16_021E30B0
+ str r0, [r5, #0x10]
+ ldr r0, _021E2F10 ; =MOD16_021E30E0
+ str r0, [r5, #0x14]
+ ldr r0, _021E2F14 ; =MOD16_021E31E0
+ str r0, [r5, #0x18]
+ ldr r0, _021E2F18 ; =MOD16_021E320C
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E2F04: .word MOD16_021E3000
+_021E2F08: .word MOD16_021E3074
+_021E2F0C: .word MOD16_021E30B0
+_021E2F10: .word MOD16_021E30E0
+_021E2F14: .word MOD16_021E31E0
+_021E2F18: .word MOD16_021E320C
+ thumb_func_end MOD16_021E2EC4
+
+ thumb_func_start MOD16_021E2F1C
+MOD16_021E2F1C: ; 0x021E2F1C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021E2FD4
+ ldr r0, [r4, #4]
+ bl MOD16_021E2FE8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E2F1C
+
+ thumb_func_start MOD16_021E2F30
+MOD16_021E2F30: ; 0x021E2F30
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E2F30
+
+ thumb_func_start MOD16_021E2F38
+MOD16_021E2F38: ; 0x021E2F38
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r0]
+ cmp r5, #3
+ blt _021E2F46
+ bl ErrorHandling
+_021E2F46:
+ str r5, [r4, #4]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E2F38
+
+ thumb_func_start MOD16_021E2F4C
+MOD16_021E2F4C: ; 0x021E2F4C
+ ldr r0, [r0, #4]
+ str r1, [r0, #4]
+ str r2, [r0, #8]
+ bx lr
+ thumb_func_end MOD16_021E2F4C
+
+ thumb_func_start MOD16_021E2F54
+MOD16_021E2F54: ; 0x021E2F54
+ ldr r0, [r0, #4]
+ str r1, [r0, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E2F54
+
+ thumb_func_start MOD16_021E2F5C
+MOD16_021E2F5C: ; 0x021E2F5C
+ ldr r0, [r0, #4]
+ str r1, [r0, #0x10]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E2F5C
+
+ thumb_func_start MOD16_021E2F64
+MOD16_021E2F64: ; 0x021E2F64
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0xc
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E2F76
+ bl ErrorHandling
+_021E2F76:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD16_021D7B5C
+ str r0, [r4, #8]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E2F64
+
+ thumb_func_start MOD16_021E2FA8
+MOD16_021E2FA8: ; 0x021E2FA8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x14
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E2FBA
+ bl ErrorHandling
+_021E2FBA:
+ add r2, r4, #0
+ mov r1, #0x14
+ mov r0, #0
+_021E2FC0:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021E2FC0
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E2FA8
+
+ thumb_func_start MOD16_021E2FD4
+MOD16_021E2FD4: ; 0x021E2FD4
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E2FDE
+ bl ErrorHandling
+_021E2FDE:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E2FD4
+
+ thumb_func_start MOD16_021E2FE8
+MOD16_021E2FE8: ; 0x021E2FE8
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E2FF2
+ bl ErrorHandling
+_021E2FF2:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E2FE8
+
+ thumb_func_start MOD16_021E2FFC
+MOD16_021E2FFC: ; 0x021E2FFC
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021E2FFC
+
+ thumb_func_start MOD16_021E3000
+MOD16_021E3000: ; 0x021E3000
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r6, #4]
+ add r5, r1, #0
+ mov r1, #0x34
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E3016
+ bl ErrorHandling
+_021E3016:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x34
+ bl Call_FillMemWithValue
+ str r4, [r6, #8]
+ ldr r1, [r5]
+ ldr r0, _021E3070 ; =0x00001744
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ bne _021E3032
+ mov r0, #0
+ str r0, [r5, #4]
+ b _021E3042
+_021E3032:
+ sub r0, r0, #1
+ cmp r0, #1
+ bhi _021E303E
+ mov r0, #1
+ str r0, [r5, #4]
+ b _021E3042
+_021E303E:
+ mov r0, #2
+ str r0, [r5, #4]
+_021E3042:
+ add r2, r4, #0
+ ldr r0, [r6, #4]
+ add r1, r5, #0
+ add r2, #0xc
+ bl MOD16_021E3E08
+ str r0, [r4, #4]
+ add r2, r4, #0
+ ldr r0, [r6, #4]
+ add r1, r5, #0
+ add r2, #0x10
+ bl MOD16_021E3E10
+ str r0, [r4, #8]
+ ldr r2, [r6, #4]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021E3FC4
+ ldr r0, [r5, #4]
+ str r0, [r4]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021E3070: .word 0x00001744
+ thumb_func_end MOD16_021E3000
+
+ thumb_func_start MOD16_021E3074
+MOD16_021E3074: ; 0x021E3074
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ add r6, r1, #0
+ ldr r4, [r5, #8]
+ cmp r0, #1
+ bne _021E3086
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E3086:
+ ldr r0, [r5, #0x10]
+ cmp r0, #1
+ bne _021E3090
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021E3090:
+ ldr r1, [r4]
+ ldr r0, [r6, #4]
+ cmp r1, r0
+ beq _021E30AC
+ add r0, r4, #0
+ bl MOD16_021E4070
+ ldr r2, [r5, #4]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E3FC4
+ ldr r0, [r6, #4]
+ str r0, [r4]
+_021E30AC:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E3074
+
+ thumb_func_start MOD16_021E30B0
+MOD16_021E30B0: ; 0x021E30B0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r5, [r4, #8]
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _021E30C0
+ bl FUN_02016A18
+_021E30C0:
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021E30CA
+ bl FUN_02016A18
+_021E30CA:
+ add r0, r5, #0
+ bl MOD16_021E4070
+ add r0, r5, #0
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E30B0
+
+ thumb_func_start MOD16_021E30E0
+MOD16_021E30E0: ; 0x021E30E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r3, #8]
+ add r4, r1, #0
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r6, [r4, #8]
+ cmp r0, #3
+ bhi _021E31CE
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E3102: ; jump table
+ .short _021E310A - _021E3102 - 2 ; case 0
+ .short _021E3142 - _021E3102 - 2 ; case 1
+ .short _021E319A - _021E3102 - 2 ; case 2
+ .short _021E31C2 - _021E3102 - 2 ; case 3
+_021E310A:
+ ldr r0, [r4, #4]
+ ldr r1, _021E31D4 ; =0x00000844
+ bl FUN_02016998
+ ldr r2, _021E31D4 ; =0x00000844
+ str r0, [r4, #8]
+ mov r1, #0
+ bl Call_FillMemWithValue
+ ldr r5, [r4, #8]
+ ldr r0, [r7, #4]
+ mov r1, #0
+ str r0, [r5]
+ ldr r0, [r4, #4]
+ bl MOD16_021DBDE4
+ ldr r1, _021E31D8 ; =0x00000804
+ str r0, [r5, r1]
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD16_021DBE0C
+ ldr r1, _021E31DC ; =0x00000808
+ str r0, [r5, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E31CE
+_021E3142:
+ ldr r0, [r4, #4]
+ ldr r3, [sp, #4]
+ str r0, [sp]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021E32D8
+ ldr r0, [r4, #8]
+ ldr r2, [sp, #4]
+ ldr r3, [r4, #4]
+ add r1, r7, #0
+ bl MOD16_021E3C18
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #4]
+ bl MOD16_021E3EF0
+ add r0, r6, #0
+ bl MOD16_021E4094
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021E3E6C
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bne _021E3186
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021E3998
+ b _021E3192
+_021E3186:
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021E3A5C
+_021E3192:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E31CE
+_021E319A:
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bne _021E31AC
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #1
+ bl MOD16_021E3A10
+ b _021E31B6
+_021E31AC:
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #1
+ bl MOD16_021E3AEC
+_021E31B6:
+ cmp r0, #0
+ beq _021E31CE
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E31CE
+_021E31C2:
+ add r0, r6, #0
+ bl MOD16_021E40D4
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E31CE:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E31D4: .word 0x00000844
+_021E31D8: .word 0x00000804
+_021E31DC: .word 0x00000808
+ thumb_func_end MOD16_021E30E0
+
+ thumb_func_start MOD16_021E31E0
+MOD16_021E31E0: ; 0x021E31E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5, #8]
+ add r7, r2, #0
+ ldr r4, [r3, #8]
+ str r0, [sp, #4]
+ bl MOD16_021E411C
+ ldr r0, [r5, #4]
+ add r1, r6, #0
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r2, r7, #0
+ add r3, r4, #0
+ bl MOD16_021E3F88
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E31E0
+
+ thumb_func_start MOD16_021E320C
+MOD16_021E320C: ; 0x021E320C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r5, [r4, #8]
+ cmp r0, #4
+ bhi _021E32CC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E3228: ; jump table
+ .short _021E3232 - _021E3228 - 2 ; case 0
+ .short _021E3260 - _021E3228 - 2 ; case 1
+ .short _021E3288 - _021E3228 - 2 ; case 2
+ .short _021E329E - _021E3228 - 2 ; case 3
+ .short _021E32C8 - _021E3228 - 2 ; case 4
+_021E3232:
+ add r0, r5, #0
+ bl MOD16_021E4094
+ ldr r0, [r6, #0xc]
+ cmp r0, #0
+ bne _021E324C
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ mov r3, #0
+ bl MOD16_021E3998
+ b _021E3258
+_021E324C:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ mov r3, #0
+ bl MOD16_021E3A5C
+_021E3258:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E32CC
+_021E3260:
+ ldr r0, [r6, #0xc]
+ cmp r0, #0
+ bne _021E3272
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r3, #0
+ bl MOD16_021E3A10
+ b _021E327C
+_021E3272:
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r3, #0
+ bl MOD16_021E3AEC
+_021E327C:
+ cmp r0, #0
+ beq _021E32CC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E32CC
+_021E3288:
+ add r0, r5, #0
+ bl MOD16_021E3DBC
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021E3328
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E32CC
+_021E329E:
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021E32D0 ; =0x00000804
+ ldr r0, [r5, r0]
+ bl FUN_02016A18
+ ldr r0, _021E32D4 ; =0x00000808
+ ldr r0, [r5, r0]
+ bl FUN_02016A18
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E32CC
+_021E32C8:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E32CC:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E32D0: .word 0x00000804
+_021E32D4: .word 0x00000808
+ thumb_func_end MOD16_021E320C
+
+ thumb_func_start MOD16_021E32D8
+MOD16_021E32D8: ; 0x021E32D8
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r6, [sp, #0x18]
+ add r7, r2, #0
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r7, #0
+ add r2, r6, #0
+ bl MOD16_021E3348
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E3B70
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E34D0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E36B0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ add r3, r6, #0
+ bl MOD16_021E37E8
+ ldr r1, [r7, #4]
+ add r0, r5, #0
+ bl MOD16_021E3F50
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021E41FC
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E32D8
+
+ thumb_func_start MOD16_021E3328
+MOD16_021E3328: ; 0x021E3328
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021E3BC8
+ add r0, r5, #0
+ bl MOD16_021E3904
+ add r0, r5, #0
+ bl MOD16_021E37C0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E361C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E3328
+
+ thumb_func_start MOD16_021E3348
+MOD16_021E3348: ; 0x021E3348
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r6, r1, #0
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ add r4, r2, #0
+ str r4, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x21
+ mov r3, #3
+ bl MOD16_021D8CB4
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x40
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r7, r0, #0
+ ldrh r0, [r2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r7, #0
+ bl FUN_02016A18
+ ldr r1, [r6]
+ ldr r0, _021E34C0 ; =0x00001764
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021E33E6
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x41
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ add r7, r0, #0
+ ldr r2, [sp, #0x10]
+ mov r0, #8
+ str r0, [sp]
+ ldrh r0, [r2]
+ mov r1, #3
+ mov r3, #0xd
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r7, #0
+ bl FUN_02016A18
+_021E33E6:
+ ldr r1, [r6]
+ ldr r0, _021E34C4 ; =0x0000176C
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021E342A
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x42
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ add r7, r0, #0
+ ldr r2, [sp, #0x10]
+ mov r0, #7
+ str r0, [sp]
+ ldrh r0, [r2]
+ mov r1, #3
+ mov r3, #0x1c
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r7, #0
+ bl FUN_02016A18
+_021E342A:
+ ldr r1, [r6]
+ ldr r0, _021E34C8 ; =0x00001760
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021E346E
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x43
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ add r7, r0, #0
+ ldr r2, [sp, #0x10]
+ mov r0, #8
+ str r0, [sp]
+ ldrh r0, [r2]
+ mov r1, #3
+ mov r3, #0xb
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r7, #0
+ bl FUN_02016A18
+_021E346E:
+ ldr r1, [r6]
+ ldr r0, _021E34CC ; =0x00001768
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021E34B2
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x44
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ add r4, r0, #0
+ ldr r2, [sp, #0x10]
+ mov r0, #0x10
+ str r0, [sp]
+ ldrh r0, [r2]
+ mov r1, #3
+ mov r3, #0x19
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r4, #0
+ bl FUN_02016A18
+_021E34B2:
+ ldr r0, [r5]
+ mov r1, #3
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E34C0: .word 0x00001764
+_021E34C4: .word 0x0000176C
+_021E34C8: .word 0x00001760
+_021E34CC: .word 0x00001768
+ thumb_func_end MOD16_021E3348
+
+ thumb_func_start MOD16_021E34D0
+MOD16_021E34D0: ; 0x021E34D0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021E3600 ; =0x000017DC
+ mov r3, #1
+ str r0, [sp]
+ str r3, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ add r1, r7, #0
+ mov r2, #0x6c
+ bl FUN_020091E0
+ add r1, r5, #0
+ add r1, #0xb4
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ bl FUN_02009B04
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ bl FUN_02009474
+ ldr r0, _021E3604 ; =0x000017DA
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x6a
+ mov r3, #1
+ bl FUN_02009358
+ add r1, r5, #0
+ add r1, #0xbc
+ str r0, [r1]
+ ldr r0, _021E3608 ; =0x000017DB
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x6b
+ mov r3, #1
+ bl FUN_02009358
+ add r1, r5, #0
+ add r1, #0xc0
+ str r0, [r1]
+ ldr r0, _021E360C ; =0x000017CD
+ mov r3, #1
+ str r0, [sp]
+ str r3, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ add r1, r7, #0
+ mov r2, #0x5d
+ bl FUN_020091E0
+ add r1, r5, #0
+ add r1, #0xd0
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl FUN_02009B04
+ add r0, r5, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl FUN_02009474
+ ldr r0, _021E3610 ; =0x0000177E
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0xe
+ mov r3, #0
+ bl FUN_02009298
+ add r1, r5, #0
+ add r1, #0xd4
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ bl FUN_02009D68
+ add r0, r5, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ bl FUN_02009474
+ ldr r0, _021E3614 ; =0x000017CB
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x5b
+ mov r3, #1
+ bl FUN_02009358
+ add r1, r5, #0
+ add r1, #0xd8
+ str r0, [r1]
+ ldr r0, _021E3618 ; =0x000017CC
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x5c
+ mov r3, #1
+ bl FUN_02009358
+ add r5, #0xdc
+ str r0, [r5]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E3600: .word 0x000017DC
+_021E3604: .word 0x000017DA
+_021E3608: .word 0x000017DB
+_021E360C: .word 0x000017CD
+_021E3610: .word 0x0000177E
+_021E3614: .word 0x000017CB
+_021E3618: .word 0x000017CC
+ thumb_func_end MOD16_021E34D0
+
+ thumb_func_start MOD16_021E361C
+MOD16_021E361C: ; 0x021E361C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ mov r0, #5
+ add r1, r5, #0
+ lsl r0, r0, #6
+ add r1, #0xb4
+ ldr r0, [r4, r0]
+ ldr r1, [r1]
+ bl FUN_02009490
+ mov r0, #0x52
+ add r1, r5, #0
+ lsl r0, r0, #2
+ add r1, #0xbc
+ ldr r0, [r4, r0]
+ ldr r1, [r1]
+ bl FUN_02009490
+ mov r0, #0x53
+ add r1, r5, #0
+ lsl r0, r0, #2
+ add r1, #0xc0
+ ldr r0, [r4, r0]
+ ldr r1, [r1]
+ bl FUN_02009490
+ add r0, r5, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl FUN_02009C0C
+ add r0, r5, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ bl FUN_02009E04
+ mov r0, #5
+ add r1, r5, #0
+ lsl r0, r0, #6
+ add r1, #0xd0
+ ldr r0, [r4, r0]
+ ldr r1, [r1]
+ bl FUN_02009490
+ mov r0, #0x51
+ add r1, r5, #0
+ lsl r0, r0, #2
+ add r1, #0xd4
+ ldr r0, [r4, r0]
+ ldr r1, [r1]
+ bl FUN_02009490
+ mov r0, #0x52
+ add r1, r5, #0
+ lsl r0, r0, #2
+ add r1, #0xd8
+ ldr r0, [r4, r0]
+ ldr r1, [r1]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ add r5, #0xdc
+ ldr r0, [r4, r0]
+ ldr r1, [r5]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E361C
+
+ thumb_func_start MOD16_021E36B0
+MOD16_021E36B0: ; 0x021E36B0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x70
+ ldr r4, [r1]
+ ldr r3, _021E37B8 ; =0x000017CC
+ add r5, r0, #0
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ mov r0, #5
+ lsl r0, r0, #6
+ add r6, r2, #0
+ ldr r2, [r4, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r2, r3, #0
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x4c
+ sub r2, #0x4e
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #0x1f
+ str r0, [sp, #0x40]
+ mov r0, #1
+ str r0, [sp, #0x44]
+ mov r0, #0xa
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x34]
+ mov r0, #6
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ str r6, [sp, #0x48]
+ bl FUN_0201FF84
+ add r1, r5, #0
+ add r1, #0xc8
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #2
+ bl FUN_02020130
+ ldr r3, _021E37BC ; =0x000017DB
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #5
+ str r1, [sp, #0x10]
+ lsl r0, r0, #6
+ ldr r2, [r4, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r2, r3, #0
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x4c
+ sub r2, #0x5d
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r4, #0
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #0x1f
+ str r0, [sp, #0x40]
+ mov r0, #1
+ str r0, [sp, #0x44]
+ str r6, [sp, #0x48]
+ str r4, [sp, #0x34]
+ str r4, [sp, #0x38]
+ add r6, sp, #0x2c
+ add r7, r4, #0
+_021E3796:
+ add r0, r6, #0
+ bl FUN_0201FF84
+ str r0, [r5, #4]
+ add r1, r7, #0
+ bl FUN_020200A0
+ ldr r0, [r5, #4]
+ mov r1, #1
+ bl FUN_02020398
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x2c
+ blt _021E3796
+ add sp, #0x70
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E37B8: .word 0x000017CC
+_021E37BC: .word 0x000017DB
+ thumb_func_end MOD16_021E36B0
+
+ thumb_func_start MOD16_021E37C0
+MOD16_021E37C0: ; 0x021E37C0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ bl FUN_0201FFC8
+ add r0, r5, #0
+ mov r4, #0
+ add r0, #0xc8
+ str r4, [r0]
+ add r6, r4, #0
+_021E37D6:
+ ldr r0, [r5, #4]
+ bl FUN_0201FFC8
+ str r6, [r5, #4]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x2c
+ blt _021E37D6
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E37C0
+
+ thumb_func_start MOD16_021E37E8
+MOD16_021E37E8: ; 0x021E37E8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ add r0, #0xc8
+ add r4, r1, #0
+ ldr r0, [r0]
+ add r6, r3, #0
+ ldr r7, [r4]
+ cmp r0, #0
+ bne _021E3800
+ bl ErrorHandling
+_021E3800:
+ mov r0, #0x51
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r1, _021E38FC ; =0x0000177E
+ bl FUN_020094F0
+ mov r1, #0x15
+ lsl r1, r1, #4
+ ldr r1, [r7, r1]
+ str r1, [sp, #0xc]
+ mov r1, #0
+ bl FUN_02009E54
+ mov r1, #1
+ mov r2, #0x1e
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x24]
+ str r2, [sp, #0x28]
+ str r1, [sp, #0x2c]
+ str r6, [sp, #0x30]
+ bl FUN_0201E28C
+ str r0, [sp, #8]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r7, r0]
+ mov r1, #0x10
+ mov r2, #2
+ bl MOD16_021DB388
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r7, r0]
+ ldr r2, _021E3900 ; =0x00000266
+ add r1, r4, #0
+ mov r3, #0x23
+ bl MOD16_021DB3C8
+ add r1, r5, #0
+ lsr r0, r0, #1
+ str r4, [sp, #0x10]
+ add r1, #0xc8
+ ldr r1, [r1]
+ neg r0, r0
+ str r0, [sp, #0x1c]
+ mov r0, #7
+ mvn r0, r0
+ str r0, [sp, #0x20]
+ add r0, sp, #0xc
+ str r1, [sp, #0x18]
+ bl MOD16_021DB2BC
+ add r1, r5, #0
+ add r1, #0xcc
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xcc
+ ldr r0, [r0]
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ add r1, r1, #2
+ bl FUN_02011A60
+ add r0, r4, #0
+ bl MOD16_021DB3BC
+ mov r6, #0
+_021E3890:
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r7, r0]
+ mov r1, #9
+ mov r2, #2
+ bl MOD16_021DB388
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r3, r6, #0
+ ldr r0, [r7, r0]
+ ldr r2, _021E3900 ; =0x00000266
+ add r1, r4, #0
+ add r3, #0x24
+ bl MOD16_021DB3C8
+ mov r1, #0
+ str r1, [sp, #0x18]
+ mov r1, #0x48
+ sub r0, r1, r0
+ lsr r0, r0, #1
+ add r0, #8
+ str r0, [sp, #0x1c]
+ mov r0, #0x20
+ str r0, [sp, #0x20]
+ add r0, sp, #0xc
+ str r4, [sp, #0x10]
+ bl MOD16_021DB2BC
+ add r1, r5, #0
+ add r1, #0xe0
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ add r1, r1, #2
+ bl FUN_02011A60
+ add r0, r4, #0
+ bl MOD16_021DB3BC
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #3
+ blt _021E3890
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E38FC: .word 0x0000177E
+_021E3900: .word 0x00000266
+ thumb_func_end MOD16_021E37E8
+
+ thumb_func_start MOD16_021E3904
+MOD16_021E3904: ; 0x021E3904
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0xcc
+ ldr r0, [r0]
+ bl MOD16_021DB338
+ mov r4, #0
+_021E3912:
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ bl MOD16_021DB338
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021E3912
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E3904
+
+ thumb_func_start MOD16_021E3928
+MOD16_021E3928: ; 0x021E3928
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_02020398
+ add r0, r5, #0
+ add r0, #0xcc
+ ldr r0, [r0]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ mov r4, #0
+ mov r6, #1
+_021E3948:
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ add r1, r6, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021E3948
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E3928
+
+ thumb_func_start MOD16_021E3960
+MOD16_021E3960: ; 0x021E3960
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_02020398
+ add r0, r5, #0
+ add r0, #0xcc
+ ldr r0, [r0]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ mov r4, #0
+ add r6, r4, #0
+_021E3980:
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ add r1, r6, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021E3980
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E3960
+
+ thumb_func_start MOD16_021E3998
+MOD16_021E3998: ; 0x021E3998
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r2, #0
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021E3928
+ ldr r0, [r4, #8]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ beq _021E39FE
+ cmp r6, #0
+ beq _021E39DA
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r2, r1, #0
+ sub r2, #0x11
+ bl MOD16_021D8988
+ b _021E39FE
+_021E39DA:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r3, r1, #0
+ sub r3, #0x11
+ bl MOD16_021D8988
+_021E39FE:
+ mov r1, #0x5b
+ ldr r0, [r5]
+ lsl r1, r1, #2
+ add r1, r0, r1
+ bl MOD16_021D8A8C
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E3998
+
+ thumb_func_start MOD16_021E3A10
+MOD16_021E3A10: ; 0x021E3A10
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r2, #8]
+ add r5, r1, #0
+ add r4, r3, #0
+ bl MOD16_021E8C68
+ cmp r0, #0
+ ldr r1, [r5]
+ beq _021E3A30
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ b _021E3A3A
+_021E3A30:
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A7C
+_021E3A3A:
+ cmp r0, #0
+ beq _021E3A4C
+ cmp r4, #0
+ beq _021E3A48
+ add r0, r6, #0
+ bl MOD16_021E3960
+_021E3A48:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E3A4C:
+ mov r1, #0x5b
+ ldr r0, [r5]
+ lsl r1, r1, #2
+ add r1, r0, r1
+ bl MOD16_021D8A8C
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E3A10
+
+ thumb_func_start MOD16_021E3A5C
+MOD16_021E3A5C: ; 0x021E3A5C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ add r5, r1, #0
+ add r7, r2, #0
+ add r4, r3, #0
+ bl MOD16_021E3928
+ cmp r4, #0
+ bne _021E3A86
+ ldr r0, [r5, #8]
+ mov r1, #0x28
+ str r0, [sp]
+ ldr r0, [r5, #0x10]
+ mov r3, #0x78
+ str r0, [sp, #4]
+ ldr r0, _021E3AE8 ; =0x00000814
+ ldr r2, [r5, #4]
+ add r0, r6, r0
+ bl MOD16_021D8BD8
+_021E3A86:
+ ldr r0, [r7, #8]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ beq _021E3AE4
+ cmp r4, #0
+ beq _021E3ABE
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r2, #0x2f
+ str r2, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r1, [r5, #0x10]
+ sub r2, #0x3f
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD16_021D8988
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021E3ABE:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r3, #0x2f
+ str r3, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r1, [r5, #0x10]
+ sub r3, #0x3f
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD16_021D8988
+_021E3AE4:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E3AE8: .word 0x00000814
+ thumb_func_end MOD16_021E3A5C
+
+ thumb_func_start MOD16_021E3AEC
+MOD16_021E3AEC: ; 0x021E3AEC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bne _021E3B14
+ ldr r0, _021E3B6C ; =0x00000814
+ add r0, r5, r0
+ bl MOD16_021D8BF4
+ str r0, [sp]
+ ldr r2, _021E3B6C ; =0x00000814
+ ldr r0, [r4]
+ ldr r1, [r5, r2]
+ add r2, r2, #4
+ ldr r2, [r5, r2]
+ bl MOD16_021D86F4
+ b _021E3B18
+_021E3B14:
+ mov r0, #1
+ str r0, [sp]
+_021E3B18:
+ ldr r0, [r6, #8]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ ldr r1, [r4]
+ beq _021E3B32
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ str r0, [sp, #4]
+ b _021E3B3E
+_021E3B32:
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A7C
+ str r0, [sp, #4]
+_021E3B3E:
+ mov r1, #0
+ add r2, sp, #0
+_021E3B42:
+ ldr r0, [r2]
+ cmp r0, #0
+ beq _021E3B50
+ add r1, r1, #1
+ add r2, r2, #4
+ cmp r1, #2
+ blt _021E3B42
+_021E3B50:
+ cmp r1, #2
+ bne _021E3B64
+ cmp r7, #1
+ bne _021E3B5E
+ add r0, r5, #0
+ bl MOD16_021E3960
+_021E3B5E:
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E3B64:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E3B6C: .word 0x00000814
+ thumb_func_end MOD16_021E3AEC
+
+ thumb_func_start MOD16_021E3B70
+MOD16_021E3B70: ; 0x021E3B70
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r6, r2, #0
+ add r0, r0, #4
+ mov r1, #0
+ bl FUN_02019620
+ str r6, [sp]
+ ldr r3, _021E3BBC ; =0x000007F8
+ ldr r0, [r4]
+ mov r1, #0x1e
+ mov r2, #1
+ add r3, r5, r3
+ bl MOD16_021D8D98
+ ldr r1, _021E3BC0 ; =0x000007F4
+ mov r2, #1
+ str r0, [r5, r1]
+ str r6, [sp]
+ lsl r3, r2, #0xb
+ ldr r0, [r4]
+ mov r1, #0x1f
+ add r3, r5, r3
+ bl MOD16_021D8D98
+ ldr r1, _021E3BC4 ; =0x000007FC
+ str r0, [r5, r1]
+ ldr r0, [r4]
+ mov r1, #8
+ add r0, r0, #4
+ bl FUN_0201AB24
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021E3BBC: .word 0x000007F8
+_021E3BC0: .word 0x000007F4
+_021E3BC4: .word 0x000007FC
+ thumb_func_end MOD16_021E3B70
+
+ thumb_func_start MOD16_021E3BC8
+MOD16_021E3BC8: ; 0x021E3BC8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_02019620
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02018744
+ ldr r0, _021E3C10 ; =0x000007F4
+ ldr r0, [r5, r0]
+ bl FUN_02016A18
+ ldr r1, _021E3C10 ; =0x000007F4
+ mov r2, #0
+ str r2, [r5, r1]
+ add r0, r1, #4
+ add r1, #8
+ str r2, [r5, r0]
+ ldr r0, [r5, r1]
+ bl FUN_02016A18
+ ldr r0, _021E3C14 ; =0x000007FC
+ mov r1, #0
+ str r1, [r5, r0]
+ add r0, r0, #4
+ str r1, [r5, r0]
+ ldr r0, [r4]
+ add r0, r0, #4
+ bl FUN_0201AB24
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E3C10: .word 0x000007F4
+_021E3C14: .word 0x000007FC
+ thumb_func_end MOD16_021E3BC8
+
+ thumb_func_start MOD16_021E3C18
+MOD16_021E3C18: ; 0x021E3C18
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ add r4, r2, #0
+ add r6, r0, #0
+ str r1, [sp, #0x28]
+ str r3, [sp, #0x2c]
+ bl MOD16_021E3DBC
+ add r0, r4, #0
+ add r0, #0x1c
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ mov r1, #0x1e
+ str r0, [sp, #4]
+ ldr r0, [r4, #0xc]
+ ldr r3, _021E3DAC ; =0x00000808
+ str r0, [sp, #8]
+ add r0, r6, #0
+ ldr r3, [r6, r3]
+ add r0, #0xec
+ add r2, r1, #0
+ bl MOD16_021DBEC4
+ ldr r1, _021E3DB0 ; =0x00000838
+ str r0, [r6, r1]
+ ldr r0, [r4, #0x20]
+ sub r1, r0, #1
+ ldr r0, [r4, #0xc]
+ add r7, r1, r0
+ ldr r0, [sp, #0x2c]
+ add r1, r7, #0
+ bl FUN_020169D8
+ add r5, r0, #0
+ mov r1, #0
+ cmp r7, #0
+ ble _021E3C7E
+_021E3C62:
+ ldr r2, [r4, #0xc]
+ cmp r1, r2
+ bhs _021E3C6E
+ ldr r0, [r4, #4]
+ ldrb r0, [r0, r1]
+ b _021E3C76
+_021E3C6E:
+ sub r2, r1, r2
+ ldr r0, [r4, #0x1c]
+ lsl r2, r2, #2
+ ldr r0, [r0, r2]
+_021E3C76:
+ strb r0, [r5, r1]
+ add r1, r1, #1
+ cmp r1, r7
+ blt _021E3C62
+_021E3C7E:
+ add r0, r4, #0
+ add r0, #0x2c
+ str r0, [sp]
+ str r5, [sp, #4]
+ mov r0, #0x47
+ lsl r0, r0, #4
+ mov r1, #0x1e
+ ldr r3, _021E3DAC ; =0x00000808
+ str r7, [sp, #8]
+ ldr r3, [r6, r3]
+ add r0, r6, r0
+ add r2, r1, #0
+ bl MOD16_021DBEC4
+ mov r1, #0x21
+ lsl r1, r1, #6
+ str r0, [r6, r1]
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r6, #0
+ mov r1, #0x1e
+ add r0, #0xec
+ add r2, r1, #0
+ bl MOD16_021DB7C0
+ mov r0, #0x47
+ lsl r0, r0, #4
+ mov r1, #0x1e
+ add r0, r6, r0
+ add r2, r1, #0
+ bl MOD16_021DB7C0
+ ldr r0, [sp, #0x28]
+ ldr r0, [r0]
+ bl MOD16_021D9DE8
+ ldr r1, _021E3DB4 ; =0x0000015D
+ cmp r0, r1
+ bne _021E3CDE
+ mov r1, #5
+ str r1, [sp, #0x38]
+ mov r1, #0x5c
+ str r1, [sp, #0x34]
+ mov r1, #0xe
+ mov r0, #4
+ str r1, [sp, #0x30]
+ b _021E3CEC
+_021E3CDE:
+ mov r1, #1
+ str r1, [sp, #0x38]
+ mov r1, #0x5c
+ str r1, [sp, #0x34]
+ mov r1, #0x20
+ mov r0, #0
+ str r1, [sp, #0x30]
+_021E3CEC:
+ add r1, r6, #0
+ mov r2, #0
+ add r1, #0xc4
+ str r2, [r1]
+ ldr r1, [sp, #0x30]
+ ldr r3, [sp, #0x34]
+ str r1, [sp]
+ mov r1, #5
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldr r1, _021E3DB8 ; =0x00000804
+ ldr r2, [r6, r1]
+ add r1, #0x30
+ str r2, [sp, #0xc]
+ add r2, r4, #0
+ add r2, #0x14
+ str r2, [sp, #0x10]
+ mov r2, #2
+ str r2, [sp, #0x14]
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #8]
+ mov r2, #0x2c
+ str r0, [sp, #0x1c]
+ ldr r0, [r4, #0x10]
+ str r0, [sp, #0x20]
+ add r0, r6, r1
+ add r1, r6, #0
+ str r0, [sp, #0x24]
+ add r1, #0xc4
+ ldr r1, [r1]
+ add r0, r6, #4
+ bl MOD16_021DBF9C
+ add r1, r6, #0
+ add r1, #0xc4
+ str r0, [r1]
+ ldr r0, [r4, #0x18]
+ sub r1, r0, #1
+ ldr r0, [r4, #0x10]
+ add r7, r1, r0
+ ldr r0, [sp, #0x2c]
+ add r1, r7, #0
+ bl FUN_020169D8
+ add r5, r0, #0
+ mov r1, #0
+ cmp r7, #0
+ ble _021E3D68
+_021E3D4C:
+ ldr r2, [r4, #0x10]
+ cmp r1, r2
+ bhs _021E3D58
+ ldr r0, [r4, #8]
+ ldrb r0, [r0, r1]
+ b _021E3D60
+_021E3D58:
+ sub r2, r1, r2
+ ldr r0, [r4, #0x14]
+ lsl r2, r2, #2
+ ldr r0, [r0, r2]
+_021E3D60:
+ strb r0, [r5, r1]
+ add r1, r1, #1
+ cmp r1, r7
+ blt _021E3D4C
+_021E3D68:
+ ldr r0, [sp, #0x30]
+ ldr r1, _021E3DB8 ; =0x00000804
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r6, r1]
+ add r4, #0x24
+ str r0, [sp, #0xc]
+ str r4, [sp, #0x10]
+ mov r0, #3
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x38]
+ add r1, #0x38
+ str r0, [sp, #0x18]
+ str r5, [sp, #0x1c]
+ add r0, r6, r1
+ str r7, [sp, #0x20]
+ add r1, r6, #0
+ str r0, [sp, #0x24]
+ add r1, #0xc4
+ ldr r1, [r1]
+ ldr r3, [sp, #0x34]
+ add r0, r6, #4
+ mov r2, #0x2c
+ bl MOD16_021DBF9C
+ add r6, #0xc4
+ str r0, [r6]
+ add r0, r5, #0
+ bl FUN_02016A18
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E3DAC: .word 0x00000808
+_021E3DB0: .word 0x00000838
+_021E3DB4: .word 0x0000015D
+_021E3DB8: .word 0x00000804
+ thumb_func_end MOD16_021E3C18
+
+ thumb_func_start MOD16_021E3DBC
+MOD16_021E3DBC: ; 0x021E3DBC
+ push {r3, r4, r5, r6, r7, lr}
+ mov r2, #0xe1
+ add r6, r0, #0
+ add r0, #0xec
+ mov r1, #0
+ lsl r2, r2, #2
+ bl Call_FillMemWithValue
+ mov r2, #0x47
+ lsl r2, r2, #4
+ add r0, r6, r2
+ mov r1, #0
+ sub r2, #0xec
+ bl Call_FillMemWithValue
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ ble _021E3E00
+ add r5, r6, #0
+ add r7, r4, #0
+_021E3DEA:
+ ldr r0, [r5, #4]
+ add r1, r7, #0
+ bl FUN_020200A0
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blt _021E3DEA
+_021E3E00:
+ mov r0, #0
+ add r6, #0xc4
+ str r0, [r6]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E3DBC
+
+ thumb_func_start MOD16_021E3E08
+MOD16_021E3E08: ; 0x021E3E08
+ mov r0, #0
+ str r0, [r2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E3E08
+
+ thumb_func_start MOD16_021E3E10
+MOD16_021E3E10: ; 0x021E3E10
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r2, #0
+ ldr r2, [r5]
+ ldr r1, _021E3E60 ; =0x00001768
+ mov r4, #0
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ bne _021E3E30
+ ldr r3, _021E3E64 ; =0x021FF5D6
+ ldr r1, _021E3E68 ; =0x0000FFFF
+_021E3E26:
+ add r3, r3, #2
+ ldrh r2, [r3]
+ add r4, r4, #1
+ cmp r2, r1
+ bne _021E3E26
+_021E3E30:
+ cmp r4, #0
+ beq _021E3E3C
+ add r1, r4, #0
+ bl FUN_02016998
+ b _021E3E3E
+_021E3E3C:
+ mov r0, #0
+_021E3E3E:
+ str r4, [r6]
+ ldr r3, [r5]
+ ldr r2, _021E3E60 ; =0x00001768
+ mov r1, #0
+ ldr r2, [r3, r2]
+ cmp r2, #0
+ bne _021E3E5E
+ ldr r4, _021E3E64 ; =0x021FF5D6
+ ldr r2, _021E3E68 ; =0x0000FFFF
+_021E3E50:
+ ldrh r3, [r4]
+ add r4, r4, #2
+ strb r3, [r0, r1]
+ ldrh r3, [r4]
+ add r1, r1, #1
+ cmp r3, r2
+ bne _021E3E50
+_021E3E5E:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021E3E60: .word 0x00001768
+_021E3E64: .word 0x021FF5D6
+_021E3E68: .word 0x0000FFFF
+ thumb_func_end MOD16_021E3E10
+
+ thumb_func_start MOD16_021E3E6C
+MOD16_021E3E6C: ; 0x021E3E6C
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_02019620
+ mov r0, #2
+ lsl r0, r0, #0xa
+ ldr r3, [r5, r0]
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #0x47
+ lsl r0, r0, #4
+ add r0, r5, r0
+ str r0, [sp, #4]
+ mov r1, #0x1e
+ str r1, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0x59
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ ldrh r2, [r3, #2]
+ ldr r1, [r3, #0x14]
+ ldrh r3, [r3]
+ ldr r0, [r4]
+ lsl r2, r2, #0x13
+ lsl r3, r3, #0x13
+ add r0, r0, #4
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl MOD16_021DB728
+ ldr r0, _021E3EEC ; =0x000007F8
+ mov r1, #0x1e
+ ldr r3, [r5, r0]
+ mov r0, #5
+ str r0, [sp]
+ add r5, #0xec
+ str r5, [sp, #4]
+ str r1, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0x59
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ ldrh r2, [r3, #2]
+ ldr r1, [r3, #0x14]
+ ldrh r3, [r3]
+ ldr r0, [r4]
+ lsl r2, r2, #0x13
+ lsl r3, r3, #0x13
+ add r0, r0, #4
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl MOD16_021DB728
+ ldr r0, [r4]
+ add r0, r0, #4
+ bl FUN_020191D0
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E3EEC: .word 0x000007F8
+ thumb_func_end MOD16_021E3E6C
+
+ thumb_func_start MOD16_021E3EF0
+MOD16_021E3EF0: ; 0x021E3EF0
+ push {r4, lr}
+ ldr r1, _021E3F4C ; =0x00000834
+ add r4, r0, #0
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bne _021E3F30
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021E3F30
+ add r0, r1, #0
+ add r0, #8
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021E3F30
+ add r1, #0xc
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bne _021E3F30
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_020200A0
+ add r4, #0xcc
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_020119D0
+ pop {r4, pc}
+_021E3F30:
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r4, #0xcc
+ ldr r0, [r4]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_020119D0
+ pop {r4, pc}
+ nop
+_021E3F4C: .word 0x00000834
+ thumb_func_end MOD16_021E3EF0
+
+ thumb_func_start MOD16_021E3F50
+MOD16_021E3F50: ; 0x021E3F50
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+ mov r7, #1
+_021E3F5A:
+ cmp r4, r6
+ bne _021E3F6E
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ add r1, r7, #0
+ ldr r0, [r0]
+ bl FUN_020119D0
+ b _021E3F7C
+_021E3F6E:
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_020119D0
+_021E3F7C:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021E3F5A
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E3F50
+
+ thumb_func_start MOD16_021E3F88
+MOD16_021E3F88: ; 0x021E3F88
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r2, #0
+ add r4, r3, #0
+ add r7, r1, #0
+ ldr r2, [r5]
+ ldr r1, [r4]
+ cmp r2, r1
+ beq _021E3FC0
+ ldr r3, [sp, #0x18]
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD16_021E3C18
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021E3E6C
+ ldr r1, [r6, #4]
+ add r0, r5, #0
+ bl MOD16_021E3F50
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E3EF0
+ ldr r0, [r4]
+ str r0, [r5]
+_021E3FC0:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E3F88
+
+ thumb_func_start MOD16_021E3FC4
+MOD16_021E3FC4: ; 0x021E3FC4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r6, r2, #0
+ bl MOD16_021D9DE8
+ add r7, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021E3FE6
+ cmp r0, #1
+ beq _021E3FF0
+ cmp r0, #2
+ beq _021E3FFA
+ b _021E4004
+_021E3FE6:
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r0, #5
+ str r0, [sp]
+ b _021E4008
+_021E3FF0:
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp]
+ b _021E4008
+_021E3FFA:
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #7
+ str r0, [sp]
+ b _021E4008
+_021E4004:
+ bl ErrorHandling
+_021E4008:
+ add r0, r5, #0
+ ldr r2, [sp, #4]
+ add r0, #0x14
+ add r1, r7, #0
+ add r3, r6, #0
+ bl MOD16_021DBD30
+ add r0, r5, #0
+ ldr r2, [sp]
+ add r0, #0x1c
+ add r1, r7, #0
+ add r3, r6, #0
+ bl MOD16_021DBD30
+ ldr r0, [r4]
+ bl MOD16_021D9A54
+ cmp r0, #0
+ bne _021E404E
+ add r0, r5, #0
+ add r0, #0x24
+ add r1, r7, #0
+ mov r2, #3
+ add r3, r6, #0
+ bl MOD16_021DBD30
+ add r5, #0x2c
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #8
+ add r3, r6, #0
+ bl MOD16_021DBD30
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_021E404E:
+ add r0, r5, #0
+ add r0, #0x24
+ add r1, r7, #0
+ mov r2, #4
+ add r3, r6, #0
+ bl MOD16_021DBD30
+ add r5, #0x2c
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #9
+ add r3, r6, #0
+ bl MOD16_021DBD30
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E3FC4
+
+ thumb_func_start MOD16_021E4070
+MOD16_021E4070: ; 0x021E4070
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x14
+ bl MOD16_021DBDC0
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD16_021DBDC0
+ add r0, r4, #0
+ add r0, #0x24
+ bl MOD16_021DBDC0
+ add r4, #0x2c
+ add r0, r4, #0
+ bl MOD16_021DBDC0
+ pop {r4, pc}
+ thumb_func_end MOD16_021E4070
+
+ thumb_func_start MOD16_021E4094
+MOD16_021E4094: ; 0x021E4094
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, _021E40D0 ; =0x0000080C
+ mov r1, #0
+ str r1, [r6, r0]
+ add r0, r0, #4
+ str r1, [r6, r0]
+ mov r0, #2
+ bl FUN_0201E6E4
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ ble _021E40CE
+ add r5, r6, #0
+ add r7, r4, #0
+_021E40B8:
+ ldr r0, [r5, #4]
+ add r1, r7, #0
+ bl FUN_020200A0
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blt _021E40B8
+_021E40CE:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E40D0: .word 0x0000080C
+ thumb_func_end MOD16_021E4094
+
+ thumb_func_start MOD16_021E40D4
+MOD16_021E40D4: ; 0x021E40D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021E4118 ; =0x04000050
+ mov r1, #0xa
+ mov r2, #8
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ ble _021E4116
+ add r5, r6, #0
+ add r7, r4, #0
+_021E4100:
+ ldr r0, [r5, #4]
+ add r1, r7, #0
+ bl FUN_020200A0
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blt _021E4100
+_021E4116:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E4118: .word 0x04000050
+ thumb_func_end MOD16_021E40D4
+
+ thumb_func_start MOD16_021E411C
+MOD16_021E411C: ; 0x021E411C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _021E41F4 ; =0x0000080C
+ ldr r1, [r5, r0]
+ cmp r1, #0x20
+ blt _021E4172
+ mov r4, #0
+ str r4, [r5, r0]
+ add r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bne _021E4162
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021E4158
+ add r6, r5, #0
+ mov r7, #1
+_021E4142:
+ ldr r0, [r6, #4]
+ add r1, r7, #0
+ bl FUN_020200A0
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r4, r4, #1
+ add r6, r6, #4
+ cmp r4, r0
+ blt _021E4142
+_021E4158:
+ mov r0, #0x81
+ mov r1, #1
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _021E4172
+_021E4162:
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x81
+ add r1, r4, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021E4172:
+ ldr r0, _021E41F4 ; =0x0000080C
+ ldr r1, [r5, r0]
+ cmp r1, #0x10
+ blt _021E417E
+ mov r0, #0x20
+ sub r1, r0, r1
+_021E417E:
+ lsl r2, r1, #0xc
+ asr r1, r2, #0x1f
+ lsr r0, r2, #0x10
+ lsl r3, r1, #0x10
+ mov r1, #2
+ orr r3, r0
+ lsl r2, r2, #0x10
+ mov r0, #0
+ lsl r1, r1, #0xa
+ add r4, r2, r1
+ adc r3, r0
+ lsl r2, r3, #0x14
+ lsr r0, r4, #0xc
+ orr r0, r2
+ lsl r1, r1, #5
+ bl FX_Div
+ asr r1, r0, #0xc
+ mov r0, #1
+ lsl r0, r0, #0xc
+ orr r1, r0
+ ldr r0, _021E41F8 ; =0x04000052
+ strh r1, [r0]
+ ldr r0, _021E41F4 ; =0x0000080C
+ ldr r1, [r5, r0]
+ add r1, r1, #1
+ str r1, [r5, r0]
+ ldr r1, [r5, r0]
+ cmp r1, #0x20
+ blt _021E41F2
+ add r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bne _021E41CC
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ pop {r3, r4, r5, r6, r7, pc}
+_021E41CC:
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ ble _021E41F2
+ add r6, r5, #0
+ add r7, r4, #0
+_021E41DC:
+ ldr r0, [r6, #4]
+ add r1, r7, #0
+ bl FUN_020200A0
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r4, r4, #1
+ add r6, r6, #4
+ cmp r4, r0
+ blt _021E41DC
+_021E41F2:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E41F4: .word 0x0000080C
+_021E41F8: .word 0x04000052
+ thumb_func_end MOD16_021E411C
+
+ thumb_func_start MOD16_021E41FC
+MOD16_021E41FC: ; 0x021E41FC
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ bl MOD16_021D8700
+ add r6, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021D9DE8
+ add r2, r0, #0
+ mov r0, #0x28
+ str r0, [sp]
+ mov r0, #0x78
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ ldr r1, [r4]
+ mov r3, #2
+ bl MOD16_021D7FB4
+ add r0, r6, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E41FC
+
+ thumb_func_start MOD16_021E4234
+MOD16_021E4234: ; 0x021E4234
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r2, [sp]
+ add r0, r2, #0
+ add r4, r1, #0
+ bl MOD16_021E42AC
+ add r6, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021E42E8
+ add r7, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021E4310
+ str r6, [r5]
+ str r7, [r5, #4]
+ str r0, [r5, #0x20]
+ bl MOD16_021E4340
+ str r0, [r5, #0x24]
+ ldr r0, _021E427C ; =MOD16_021E4344
+ str r0, [r5, #8]
+ ldr r0, _021E4280 ; =MOD16_021E437C
+ str r0, [r5, #0xc]
+ ldr r0, _021E4284 ; =MOD16_021E43AC
+ str r0, [r5, #0x10]
+ ldr r0, _021E4288 ; =MOD16_021E43C0
+ str r0, [r5, #0x14]
+ ldr r0, _021E428C ; =MOD16_021E4478
+ str r0, [r5, #0x18]
+ ldr r0, _021E4290 ; =MOD16_021E44AC
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E427C: .word MOD16_021E4344
+_021E4280: .word MOD16_021E437C
+_021E4284: .word MOD16_021E43AC
+_021E4288: .word MOD16_021E43C0
+_021E428C: .word MOD16_021E4478
+_021E4290: .word MOD16_021E44AC
+ thumb_func_end MOD16_021E4234
+
+ thumb_func_start MOD16_021E4294
+MOD16_021E4294: ; 0x021E4294
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021E4314
+ ldr r0, [r4, #4]
+ bl MOD16_021E4328
+ ldr r0, [r4, #0x20]
+ bl MOD16_021E433C
+ pop {r4, pc}
+ thumb_func_end MOD16_021E4294
+
+ thumb_func_start MOD16_021E42AC
+MOD16_021E42AC: ; 0x021E42AC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #8
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E42BE
+ bl ErrorHandling
+_021E42BE:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD16_021D7B5C
+ str r0, [r4]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD16_021D7B7C
+ str r0, [r4, #4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E42AC
+
+ thumb_func_start MOD16_021E42E8
+MOD16_021E42E8: ; 0x021E42E8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E42FA
+ bl ErrorHandling
+_021E42FA:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E42E8
+
+ thumb_func_start MOD16_021E4310
+MOD16_021E4310: ; 0x021E4310
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021E4310
+
+ thumb_func_start MOD16_021E4314
+MOD16_021E4314: ; 0x021E4314
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E431E
+ bl ErrorHandling
+_021E431E:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4314
+
+ thumb_func_start MOD16_021E4328
+MOD16_021E4328: ; 0x021E4328
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E4332
+ bl ErrorHandling
+_021E4332:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4328
+
+ thumb_func_start MOD16_021E433C
+MOD16_021E433C: ; 0x021E433C
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E433C
+
+ thumb_func_start MOD16_021E4340
+MOD16_021E4340: ; 0x021E4340
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021E4340
+
+ thumb_func_start MOD16_021E4344
+MOD16_021E4344: ; 0x021E4344
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r6, r1, #0
+ mov r1, #0x28
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E435A
+ bl ErrorHandling
+_021E435A:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x28
+ bl Call_FillMemWithValue
+ str r4, [r5, #8]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E4A88
+ ldr r2, [r5, #4]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E47E4
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E4344
+
+ thumb_func_start MOD16_021E437C
+MOD16_021E437C: ; 0x021E437C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r0, #0xc]
+ ldr r4, [r0, #8]
+ cmp r1, #1
+ bne _021E438C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E438C:
+ ldr r0, [r0, #0x10]
+ cmp r0, #1
+ bne _021E4396
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021E4396:
+ ldr r0, [r5, #4]
+ bl MOD16_021E95C0
+ cmp r0, #0
+ beq _021E43A8
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021E482C
+_021E43A8:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E437C
+
+ thumb_func_start MOD16_021E43AC
+MOD16_021E43AC: ; 0x021E43AC
+ push {r4, lr}
+ ldr r4, [r0, #8]
+ add r0, r4, #0
+ bl MOD16_021E4968
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD16_021E43AC
+
+ thumb_func_start MOD16_021E43C0
+MOD16_021E43C0: ; 0x021E43C0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r3, #8]
+ add r4, r1, #0
+ str r0, [sp]
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r6, [r4, #8]
+ cmp r0, #3
+ bhi _021E4474
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E43E0: ; jump table
+ .short _021E43E8 - _021E43E0 - 2 ; case 0
+ .short _021E4402 - _021E43E0 - 2 ; case 1
+ .short _021E4436 - _021E43E0 - 2 ; case 2
+ .short _021E4458 - _021E43E0 - 2 ; case 3
+_021E43E8:
+ ldr r0, [r4, #4]
+ mov r1, #0x2c
+ bl FUN_02016998
+ str r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0x2c
+ bl Call_FillMemWithValue
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4474
+_021E4402:
+ ldr r2, [r4, #4]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021E45F8
+ ldr r2, [sp]
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD16_021E4980
+ ldr r3, [r4, #4]
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD16_021E49B8
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021E4550
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4474
+_021E4436:
+ ldr r3, [r4, #4]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021E49B8
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021E45BC
+ cmp r0, #0
+ beq _021E4474
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4474
+_021E4458:
+ ldr r3, [r4, #4]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021E49B8
+ mov r0, #0x79
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #0
+ bl MOD16_021D8B3C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E4474:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E43C0
+
+ thumb_func_start MOD16_021E4478
+MOD16_021E4478: ; 0x021E4478
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r3, #8]
+ add r5, r1, #0
+ add r4, r2, #0
+ str r0, [sp]
+ ldr r7, [r5, #8]
+ ldr r2, [sp]
+ add r0, r7, #0
+ add r1, r4, #0
+ bl MOD16_021E4980
+ ldr r1, [sp]
+ add r0, r6, #0
+ add r2, r4, #0
+ bl MOD16_021E4B14
+ ldr r3, [r5, #4]
+ add r0, r7, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD16_021E49B8
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4478
+
+ thumb_func_start MOD16_021E44AC
+MOD16_021E44AC: ; 0x021E44AC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r5, [r4, #8]
+ cmp r0, #4
+ bhi _021E4534
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E44C8: ; jump table
+ .short _021E44D2 - _021E44C8 - 2 ; case 0
+ .short _021E44F4 - _021E44C8 - 2 ; case 1
+ .short _021E450A - _021E44C8 - 2 ; case 2
+ .short _021E451C - _021E44C8 - 2 ; case 3
+ .short _021E4530 - _021E44C8 - 2 ; case 4
+_021E44D2:
+ mov r0, #0x79
+ ldr r1, [r6]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ bl MOD16_021D8B3C
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ mov r3, #0
+ bl MOD16_021E4550
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4534
+_021E44F4:
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r3, #0
+ bl MOD16_021E45BC
+ cmp r0, #0
+ beq _021E4534
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4534
+_021E450A:
+ ldr r2, [r4, #4]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021E4620
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4534
+_021E451C:
+ ldr r0, [r5, #0x14]
+ bl FUN_02016A18
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4534
+_021E4530:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E4534:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E44AC
+
+ thumb_func_start MOD16_021E4538
+MOD16_021E4538: ; 0x021E4538
+ ldr r3, _021E4540 ; =0x02020399
+ ldr r0, [r0]
+ mov r1, #1
+ bx r3
+ .align 2, 0
+_021E4540: .word 0x02020399
+ thumb_func_end MOD16_021E4538
+
+ thumb_func_start MOD16_021E4544
+MOD16_021E4544: ; 0x021E4544
+ ldr r3, _021E454C ; =0x02020399
+ ldr r0, [r0]
+ mov r1, #0
+ bx r3
+ .align 2, 0
+_021E454C: .word 0x02020399
+ thumb_func_end MOD16_021E4544
+
+ thumb_func_start MOD16_021E4550
+MOD16_021E4550: ; 0x021E4550
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r2, #0
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021E4538
+ ldr r0, [r4, #4]
+ bl MOD16_021E95B8
+ cmp r0, #0
+ beq _021E45B8
+ cmp r6, #0
+ beq _021E4594
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2c
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ mov r1, #1
+ str r1, [sp, #0x10]
+ mov r0, #0x19
+ ldr r2, [r5]
+ lsl r0, r0, #4
+ add r0, r2, r0
+ add r2, r1, #0
+ sub r2, #0x11
+ bl MOD16_021D8988
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+_021E4594:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2c
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ mov r1, #1
+ str r1, [sp, #0x10]
+ mov r0, #0x19
+ ldr r3, [r5]
+ lsl r0, r0, #4
+ add r0, r3, r0
+ add r3, r1, #0
+ sub r3, #0x11
+ bl MOD16_021D8988
+_021E45B8:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021E4550
+
+ thumb_func_start MOD16_021E45BC
+MOD16_021E45BC: ; 0x021E45BC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r2, #4]
+ add r5, r1, #0
+ add r4, r3, #0
+ bl MOD16_021E95B8
+ cmp r0, #0
+ beq _021E45DC
+ mov r0, #0x19
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ b _021E45E2
+_021E45DC:
+ mov r0, #2
+ bl FUN_0200A344
+_021E45E2:
+ cmp r0, #0
+ beq _021E45F4
+ cmp r4, #0
+ beq _021E45F0
+ add r0, r6, #0
+ bl MOD16_021E4544
+_021E45F0:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E45F4:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E45BC
+
+ thumb_func_start MOD16_021E45F8
+MOD16_021E45F8: ; 0x021E45F8
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E4634
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E469C
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E4750
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E45F8
+
+ thumb_func_start MOD16_021E4620
+MOD16_021E4620: ; 0x021E4620
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021E47D8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E471C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E4620
+
+ thumb_func_start MOD16_021E4634
+MOD16_021E4634: ; 0x021E4634
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r5, r1, #0
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r5, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x22
+ mov r3, #6
+ bl MOD16_021D8CB4
+ str r5, [sp]
+ ldr r0, [r4]
+ mov r1, #0x45
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r5, r0, #0
+ ldrh r0, [r2]
+ mov r1, #6
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r5, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ mov r1, #6
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4634
+
+ thumb_func_start MOD16_021E469C
+MOD16_021E469C: ; 0x021E469C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021E4710 ; =0x000017D9
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ mov r2, #0x69
+ mov r3, #1
+ bl FUN_020091E0
+ str r0, [r5, #4]
+ bl FUN_02009B04
+ ldr r0, [r5, #4]
+ bl FUN_02009474
+ ldr r0, _021E4714 ; =0x000017D7
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x67
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0xc]
+ ldr r0, _021E4718 ; =0x000017D8
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x68
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x10]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E4710: .word 0x000017D9
+_021E4714: .word 0x000017D7
+_021E4718: .word 0x000017D8
+ thumb_func_end MOD16_021E469C
+
+ thumb_func_start MOD16_021E471C
+MOD16_021E471C: ; 0x021E471C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #4]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0xc]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x10]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E471C
+
+ thumb_func_start MOD16_021E4750
+MOD16_021E4750: ; 0x021E4750
+ push {r4, r5, r6, lr}
+ sub sp, #0x70
+ ldr r4, [r1]
+ ldr r3, _021E47D0 ; =0x000017D8
+ add r5, r0, #0
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ mov r0, #5
+ lsl r0, r0, #6
+ add r6, r2, #0
+ ldr r2, [r4, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ ldr r2, _021E47D4 ; =0x0000083F
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x4c
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #0x1f
+ str r0, [sp, #0x40]
+ mov r0, #2
+ str r0, [sp, #0x44]
+ mov r0, #3
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ str r6, [sp, #0x48]
+ str r1, [sp, #0x34]
+ bl FUN_0201FF84
+ mov r1, #0
+ str r0, [r5]
+ bl FUN_02020130
+ add sp, #0x70
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021E47D0: .word 0x000017D8
+_021E47D4: .word 0x0000083F
+ thumb_func_end MOD16_021E4750
+
+ thumb_func_start MOD16_021E47D8
+MOD16_021E47D8: ; 0x021E47D8
+ ldr r3, _021E47E0 ; =0x0201FFC9
+ ldr r0, [r0]
+ bx r3
+ nop
+_021E47E0: .word 0x0201FFC9
+ thumb_func_end MOD16_021E47D8
+
+ thumb_func_start MOD16_021E47E4
+MOD16_021E47E4: ; 0x021E47E4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r2, #0
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, r6, #0
+ mov r1, #4
+ bl FUN_02016998
+ str r0, [r5, #0x14]
+ mov r1, #0xfe
+ strb r1, [r0]
+ ldr r1, [r5]
+ ldr r0, [r5, #0x14]
+ add r3, r5, #0
+ strb r1, [r0, #1]
+ ldr r1, [r5, #4]
+ ldr r0, [r5, #0x14]
+ ldr r2, _021E4828 ; =MOD16_021E4938
+ strb r1, [r0, #2]
+ ldr r0, [r5, #0x14]
+ mov r1, #0x20
+ strb r1, [r0, #3]
+ str r4, [r5, #0x18]
+ str r5, [r5, #0x1c]
+ str r6, [sp]
+ ldr r0, [r5, #0x14]
+ mov r1, #1
+ add r3, #0x18
+ bl FUN_020220C4
+ str r0, [r5, #0x10]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021E4828: .word MOD16_021E4938
+ thumb_func_end MOD16_021E47E4
+
+ thumb_func_start MOD16_021E482C
+MOD16_021E482C: ; 0x021E482C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ add r5, r1, #0
+ bl FUN_02022144
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021E48BC
+ ldr r1, [r4]
+ ldr r0, [r4, #0x14]
+ strb r1, [r0, #1]
+ ldr r1, [r4, #4]
+ ldr r0, [r4, #0x14]
+ strb r1, [r0, #2]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E482C
+
+ thumb_func_start MOD16_021E4850
+MOD16_021E4850: ; 0x021E4850
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021E48B4 ; =0x021C48F8
+ add r4, r1, #0
+ ldrh r0, [r0, #0x22]
+ cmp r0, #0
+ bne _021E48B2
+ ldr r0, [r4, #4]
+ bl MOD16_021E95C8
+ cmp r0, #1
+ bne _021E48B2
+ ldr r0, [r4]
+ bl MOD16_021E2F30
+ ldr r1, _021E48B8 ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #0x20
+ tst r1, r2
+ beq _021E4892
+ sub r1, r0, #1
+ bpl _021E487E
+ mov r1, #0
+_021E487E:
+ ldr r0, [r4]
+ bl MOD16_021E2F38
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E4A88
+ mov r0, #1
+ str r0, [r5, #0x24]
+ pop {r3, r4, r5, pc}
+_021E4892:
+ mov r1, #0x10
+ tst r1, r2
+ beq _021E48B2
+ add r1, r0, #1
+ cmp r1, #3
+ blt _021E48A0
+ mov r1, #2
+_021E48A0:
+ ldr r0, [r4]
+ bl MOD16_021E2F38
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E4A88
+ mov r0, #1
+ str r0, [r5, #0x24]
+_021E48B2:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E48B4: .word 0x021C48F8
+_021E48B8: .word 0x021C48B8
+ thumb_func_end MOD16_021E4850
+
+ thumb_func_start MOD16_021E48BC
+MOD16_021E48BC: ; 0x021E48BC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r2, #0
+ str r2, [r5, #0x24]
+ ldr r3, [r5, #0x20]
+ add r4, r1, #0
+ cmp r3, #0
+ beq _021E492E
+ ldr r0, _021E4934 ; =0x021C48F8
+ ldrh r1, [r0, #0x22]
+ cmp r1, #0
+ beq _021E492A
+ ldrh r2, [r0, #0x1c]
+ ldr r1, [r5, #8]
+ sub r1, r2, r1
+ str r1, [r5]
+ ldrh r1, [r0, #0x1e]
+ ldr r0, [r5, #0xc]
+ sub r0, r1, r0
+ str r0, [r5, #4]
+ ldr r0, [r5]
+ cmp r0, #0x18
+ bge _021E48EE
+ mov r0, #0x18
+ str r0, [r5]
+_021E48EE:
+ ldr r0, [r5]
+ cmp r0, #0xf6
+ ble _021E48F8
+ mov r0, #0xf6
+ str r0, [r5]
+_021E48F8:
+ ldr r0, [r5, #4]
+ cmp r0, #0x40
+ bge _021E4902
+ mov r0, #0x40
+ str r0, [r5, #4]
+_021E4902:
+ ldr r0, [r5]
+ bl MOD16_021E4AC0
+ ldr r1, [r5, #4]
+ add r0, #0x84
+ cmp r1, r0
+ ble _021E4912
+ str r0, [r5, #4]
+_021E4912:
+ ldr r0, [r5]
+ mov r1, #0x55
+ bl _s32_div_f
+ add r1, r0, #0
+ cmp r1, #2
+ ble _021E4922
+ mov r1, #2
+_021E4922:
+ ldr r0, [r4]
+ bl MOD16_021E2F38
+ pop {r3, r4, r5, pc}
+_021E492A:
+ str r2, [r5, #0x20]
+ pop {r3, r4, r5, pc}
+_021E492E:
+ bl MOD16_021E4850
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E4934: .word 0x021C48F8
+ thumb_func_end MOD16_021E48BC
+
+ thumb_func_start MOD16_021E4938
+MOD16_021E4938: ; 0x021E4938
+ push {r4, lr}
+ ldr r4, [r2, #4]
+ cmp r1, #0
+ bne _021E495C
+ ldr r0, _021E4960 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #1
+ str r0, [r4, #0x20]
+ ldr r0, _021E4964 ; =0x021C48F8
+ ldr r1, [r4]
+ ldrh r2, [r0, #0x1c]
+ sub r1, r2, r1
+ str r1, [r4, #8]
+ ldrh r1, [r0, #0x1e]
+ ldr r0, [r4, #4]
+ sub r0, r1, r0
+ str r0, [r4, #0xc]
+_021E495C:
+ pop {r4, pc}
+ nop
+_021E4960: .word 0x000005DD
+_021E4964: .word 0x021C48F8
+ thumb_func_end MOD16_021E4938
+
+ thumb_func_start MOD16_021E4968
+MOD16_021E4968: ; 0x021E4968
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ bl FUN_0202212C
+ ldr r0, [r4, #0x14]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4968
+
+ thumb_func_start MOD16_021E4980
+MOD16_021E4980: ; 0x021E4980
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [r2]
+ add r4, r1, #0
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ ldr r0, [r2, #4]
+ lsl r1, r0, #0xc
+ mov r0, #3
+ lsl r0, r0, #0x12
+ str r1, [sp, #4]
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ add r1, sp, #0
+ bl FUN_02020044
+ ldr r0, [r4]
+ bl MOD16_021E2F30
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_02020130
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4980
+
+ thumb_func_start MOD16_021E49B8
+MOD16_021E49B8: ; 0x021E49B8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r2]
+ add r7, r1, #0
+ str r3, [sp]
+ mov r4, #0
+ bl MOD16_021E2F30
+ ldr r1, [r5, #0x18]
+ add r6, r0, #0
+ cmp r1, r6
+ bne _021E49DC
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ beq _021E49DC
+ ldr r0, [r5, #0x1c]
+ cmp r0, r1
+ beq _021E4A86
+_021E49DC:
+ ldr r0, [r5, #0x1c]
+ cmp r0, r6
+ beq _021E49E8
+ str r0, [r5, #0x18]
+ mov r0, #0
+ str r0, [r5, #0x24]
+_021E49E8:
+ ldr r0, [r5, #0x24]
+ cmp r0, #0
+ beq _021E49F8
+ cmp r0, #1
+ beq _021E4A2E
+ cmp r0, #2
+ beq _021E4A64
+ b _021E4A6C
+_021E49F8:
+ str r6, [r5, #0x1c]
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ beq _021E4A04
+ bl FUN_02016A18
+_021E4A04:
+ ldr r1, [r5, #0x18]
+ add r2, r5, #0
+ ldr r0, [r7]
+ ldr r3, [sp]
+ add r1, #0xf
+ add r2, #0x20
+ bl MOD16_021D8D70
+ str r0, [r5, #0x14]
+ mov r0, #0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x18]
+ cmp r0, r6
+ ble _021E4A24
+ mov r4, #1
+ b _021E4A26
+_021E4A24:
+ mov r4, #2
+_021E4A26:
+ ldr r0, [r5, #0x24]
+ add r0, r0, #1
+ str r0, [r5, #0x24]
+ b _021E4A6C
+_021E4A2E:
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ beq _021E4A38
+ bl FUN_02016A18
+_021E4A38:
+ ldr r1, [r5, #0x1c]
+ add r2, r5, #0
+ ldr r0, [r7]
+ ldr r3, [sp]
+ add r1, #0xf
+ add r2, #0x20
+ bl MOD16_021D8D70
+ str r0, [r5, #0x14]
+ mov r0, #0
+ str r0, [r5, #0x28]
+ ldr r1, [r5, #0x18]
+ ldr r0, [r5, #0x1c]
+ cmp r1, r0
+ bge _021E4A5A
+ mov r4, #1
+ b _021E4A5C
+_021E4A5A:
+ mov r4, #2
+_021E4A5C:
+ ldr r0, [r5, #0x24]
+ add r0, r0, #1
+ str r0, [r5, #0x24]
+ b _021E4A6C
+_021E4A64:
+ mov r4, #0
+ str r4, [r5, #0x24]
+ ldr r0, [r5, #0x1c]
+ str r0, [r5, #0x18]
+_021E4A6C:
+ ldr r2, [r5, #0x20]
+ mov r0, #0x1f
+ ldr r3, [r2, #0xc]
+ lsl r2, r4, #5
+ add r2, r3, r2
+ mov r1, #0x40
+ mov r3, #0x20
+ bl FUN_0201C2C8
+ cmp r0, #0
+ bne _021E4A86
+ bl ErrorHandling
+_021E4A86:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E49B8
+
+ thumb_func_start MOD16_021E4A88
+MOD16_021E4A88: ; 0x021E4A88
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1]
+ bl MOD16_021E2F30
+ cmp r0, #0
+ beq _021E4AA0
+ cmp r0, #1
+ beq _021E4AAA
+ cmp r0, #2
+ beq _021E4AB4
+ pop {r4, pc}
+_021E4AA0:
+ mov r0, #0x20
+ str r0, [r4]
+ mov r0, #0x80
+ str r0, [r4, #4]
+ pop {r4, pc}
+_021E4AAA:
+ mov r0, #0x80
+ str r0, [r4]
+ mov r0, #0x60
+ str r0, [r4, #4]
+ pop {r4, pc}
+_021E4AB4:
+ mov r0, #0xe0
+ str r0, [r4]
+ mov r0, #0x80
+ str r0, [r4, #4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4A88
+
+ thumb_func_start MOD16_021E4AC0
+MOD16_021E4AC0: ; 0x021E4AC0
+ push {r3, lr}
+ cmp r0, #0x28
+ blt _021E4ACA
+ cmp r0, #0xd8
+ ble _021E4ACE
+_021E4ACA:
+ mov r0, #0x30
+ pop {r3, pc}
+_021E4ACE:
+ ldr r1, _021E4B0C ; =0x00007FFF
+ sub r0, #0x28
+ mul r1, r0
+ add r0, r1, #0
+ mov r1, #0xb0
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r1, r0, #2
+ ldr r0, _021E4B10 ; =0x020FFA38
+ mov r2, #3
+ ldrsh r0, [r0, r1]
+ lsl r2, r2, #0x10
+ mov r3, #0
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ asr r1, r1, #0xc
+ mov r0, #0x30
+ sub r0, r0, r1
+ pop {r3, pc}
+ .align 2, 0
+_021E4B0C: .word 0x00007FFF
+_021E4B10: .word 0x020FFA38
+ thumb_func_end MOD16_021E4AC0
+
+ thumb_func_start MOD16_021E4B14
+MOD16_021E4B14: ; 0x021E4B14
+ push {r3, r4, r5, lr}
+ ldr r4, [r0]
+ ldr r0, [r2, #4]
+ add r5, r1, #0
+ bl MOD16_021E95C8
+ cmp r0, #1
+ bne _021E4B48
+ ldr r0, [r5, #0x24]
+ cmp r0, #0
+ bne _021E4B3A
+ mov r3, #0x20
+ str r3, [sp]
+ ldr r1, [r5]
+ ldr r2, [r5, #4]
+ add r0, r4, #0
+ bl MOD16_021D8B04
+ pop {r3, r4, r5, pc}
+_021E4B3A:
+ mov r3, #0x20
+ str r3, [sp]
+ ldr r1, [r5]
+ ldr r2, [r5, #4]
+ add r0, r4, #0
+ bl MOD16_021D8B78
+_021E4B48:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4B14
+
+ thumb_func_start MOD16_021E4B4C
+MOD16_021E4B4C: ; 0x021E4B4C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r0, r7, #0
+ bl MOD16_021E4BCC
+ add r4, r0, #0
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021E4C08
+ str r4, [r5]
+ str r0, [r5, #4]
+ mov r0, #0
+ str r0, [r5, #0x20]
+ bl MOD16_021E4C58
+ str r0, [r5, #0x24]
+ ldr r0, _021E4B8C ; =MOD16_021E4C5C
+ str r0, [r5, #8]
+ ldr r0, _021E4B90 ; =MOD16_021E4C80
+ str r0, [r5, #0xc]
+ ldr r0, _021E4B94 ; =MOD16_021E4CD0
+ str r0, [r5, #0x10]
+ ldr r0, _021E4B98 ; =MOD16_021E4CDC
+ str r0, [r5, #0x14]
+ ldr r0, _021E4B9C ; =MOD16_021E4DBC
+ str r0, [r5, #0x18]
+ ldr r0, _021E4BA0 ; =MOD16_021E4DC0
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E4B8C: .word MOD16_021E4C5C
+_021E4B90: .word MOD16_021E4C80
+_021E4B94: .word MOD16_021E4CD0
+_021E4B98: .word MOD16_021E4CDC
+_021E4B9C: .word MOD16_021E4DBC
+_021E4BA0: .word MOD16_021E4DC0
+ thumb_func_end MOD16_021E4B4C
+
+ thumb_func_start MOD16_021E4BA4
+MOD16_021E4BA4: ; 0x021E4BA4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021E4C30
+ ldr r0, [r4, #4]
+ bl MOD16_021E4C44
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4BA4
+
+ thumb_func_start MOD16_021E4BB8
+MOD16_021E4BB8: ; 0x021E4BB8
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021E4BB8
+
+ thumb_func_start MOD16_021E4BBC
+MOD16_021E4BBC: ; 0x021E4BBC
+ mov r2, #1
+ cmp r1, #1
+ bne _021E4BC6
+ mov r1, #0
+ add r2, r1, #0
+_021E4BC6:
+ str r1, [r0, #0x18]
+ add r0, r2, #0
+ bx lr
+ thumb_func_end MOD16_021E4BBC
+
+ thumb_func_start MOD16_021E4BCC
+MOD16_021E4BCC: ; 0x021E4BCC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x20
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E4BDE
+ bl ErrorHandling
+_021E4BDE:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x20
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl MOD16_021D7AD8
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4BCC
+
+ thumb_func_start MOD16_021E4C08
+MOD16_021E4C08: ; 0x021E4C08
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E4C1A
+ bl ErrorHandling
+_021E4C1A:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E4C08
+
+ thumb_func_start MOD16_021E4C30
+MOD16_021E4C30: ; 0x021E4C30
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E4C3A
+ bl ErrorHandling
+_021E4C3A:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4C30
+
+ thumb_func_start MOD16_021E4C44
+MOD16_021E4C44: ; 0x021E4C44
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E4C4E
+ bl ErrorHandling
+_021E4C4E:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4C44
+
+ thumb_func_start MOD16_021E4C58
+MOD16_021E4C58: ; 0x021E4C58
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021E4C58
+
+ thumb_func_start MOD16_021E4C5C
+MOD16_021E4C5C: ; 0x021E4C5C
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DE8
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9A60
+ ldr r0, [r4, #4]
+ bl MOD16_021D9D04
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9A78
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD16_021E4C5C
+
+ thumb_func_start MOD16_021E4C80
+MOD16_021E4C80: ; 0x021E4C80
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0
+ cmp r0, #1
+ bne _021E4C90
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E4C90:
+ ldr r0, [r5, #0x10]
+ cmp r0, #1
+ bne _021E4C9A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021E4C9A:
+ ldr r0, [r5]
+ cmp r0, #0
+ bne _021E4CC8
+ ldr r0, [r4, #0x1c]
+ cmp r0, #1
+ bne _021E4CC2
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DE8
+ add r1, r0, #0
+ ldr r2, _021E4CCC ; =0x000001FF
+ lsl r1, r1, #0x10
+ mov r0, #0xe
+ lsr r1, r1, #0x10
+ add r3, r2, #0
+ str r2, [sp]
+ bl FUN_020056AC
+ mov r0, #0
+ str r0, [r4, #0x1c]
+_021E4CC2:
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+_021E4CC8:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E4CCC: .word 0x000001FF
+ thumb_func_end MOD16_021E4C80
+
+ thumb_func_start MOD16_021E4CD0
+MOD16_021E4CD0: ; 0x021E4CD0
+ push {r3, lr}
+ mov r0, #0
+ bl FUN_02005614
+ mov r0, #1
+ pop {r3, pc}
+ thumb_func_end MOD16_021E4CD0
+
+ thumb_func_start MOD16_021E4CDC
+MOD16_021E4CDC: ; 0x021E4CDC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r5, [r4, #8]
+ cmp r0, #3
+ bhi _021E4DB2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E4CF8: ; jump table
+ .short _021E4D00 - _021E4CF8 - 2 ; case 0
+ .short _021E4D1A - _021E4CF8 - 2 ; case 1
+ .short _021E4D64 - _021E4CF8 - 2 ; case 2
+ .short _021E4DA8 - _021E4CF8 - 2 ; case 3
+_021E4D00:
+ ldr r0, [r4, #4]
+ mov r1, #0x74
+ bl FUN_02016998
+ str r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0x74
+ bl Call_FillMemWithValue
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4DB2
+_021E4D1A:
+ ldr r3, [r4, #4]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021E4E7C
+ ldr r0, [r7, #0x14]
+ cmp r0, #0
+ beq _021E4D34
+ cmp r0, #1
+ beq _021E4D42
+ cmp r0, #2
+ beq _021E4D50
+ b _021E4D5C
+_021E4D34:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021E5908
+ b _021E4D5C
+_021E4D42:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021E5830
+ b _021E4D5C
+_021E4D50:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021E5A04
+_021E4D5C:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4DB2
+_021E4D64:
+ ldr r0, [r7, #0x14]
+ cmp r0, #0
+ beq _021E4D74
+ cmp r0, #1
+ beq _021E4D82
+ cmp r0, #2
+ beq _021E4D90
+ b _021E4D9C
+_021E4D74:
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r3, #1
+ bl MOD16_021E598C
+ add r1, r0, #0
+ b _021E4D9C
+_021E4D82:
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r3, #1
+ bl MOD16_021E58AC
+ add r1, r0, #0
+ b _021E4D9C
+_021E4D90:
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r3, #1
+ bl MOD16_021E5A8C
+ add r1, r0, #0
+_021E4D9C:
+ cmp r1, #0
+ beq _021E4DB2
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4DB2
+_021E4DA8:
+ ldr r0, _021E4DB8 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E4DB2:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E4DB8: .word 0x04000050
+ thumb_func_end MOD16_021E4CDC
+
+ thumb_func_start MOD16_021E4DBC
+MOD16_021E4DBC: ; 0x021E4DBC
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021E4DBC
+
+ thumb_func_start MOD16_021E4DC0
+MOD16_021E4DC0: ; 0x021E4DC0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r5, [r4]
+ add r3, r0, #0
+ add r1, r2, #0
+ ldr r0, [r4, #8]
+ cmp r5, #4
+ bhi _021E4E76
+ add r5, r5, r5
+ add r5, pc
+ ldrh r5, [r5, #6]
+ lsl r5, r5, #0x10
+ asr r5, r5, #0x10
+ add pc, r5
+_021E4DDC: ; jump table
+ .short _021E4DE6 - _021E4DDC - 2 ; case 0
+ .short _021E4E1A - _021E4DDC - 2 ; case 1
+ .short _021E4E58 - _021E4DDC - 2 ; case 2
+ .short _021E4E66 - _021E4DDC - 2 ; case 3
+ .short _021E4E72 - _021E4DDC - 2 ; case 4
+_021E4DE6:
+ ldr r1, [r1, #0x14]
+ cmp r1, #0
+ beq _021E4DF6
+ cmp r1, #1
+ beq _021E4E00
+ cmp r1, #2
+ beq _021E4E0A
+ b _021E4E12
+_021E4DF6:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E5908
+ b _021E4E12
+_021E4E00:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E5830
+ b _021E4E12
+_021E4E0A:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E5A04
+_021E4E12:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4E76
+_021E4E1A:
+ ldr r1, [r1, #0x14]
+ cmp r1, #0
+ beq _021E4E2A
+ cmp r1, #1
+ beq _021E4E36
+ cmp r1, #2
+ beq _021E4E42
+ b _021E4E4C
+_021E4E2A:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E598C
+ add r2, r0, #0
+ b _021E4E4C
+_021E4E36:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E58AC
+ add r2, r0, #0
+ b _021E4E4C
+_021E4E42:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E5A8C
+ add r2, r0, #0
+_021E4E4C:
+ cmp r2, #0
+ beq _021E4E76
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4E76
+_021E4E58:
+ add r1, r3, #0
+ bl MOD16_021E4EE4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4E76
+_021E4E66:
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E4E76
+_021E4E72:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E4E76:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4DC0
+
+ thumb_func_start MOD16_021E4E7C
+MOD16_021E4E7C: ; 0x021E4E7C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E53C4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E5410
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD16_021E5464
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD16_021E56D0
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021E4F1C
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E5030
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DF8
+ cmp r0, #2
+ bne _021E4EE2
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD16_021E51FC
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD16_021E5554
+_021E4EE2:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E4E7C
+
+ thumb_func_start MOD16_021E4EE4
+MOD16_021E4EE4: ; 0x021E4EE4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ bl MOD16_021E5818
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_02019620
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E5224
+ add r0, r5, #0
+ bl MOD16_021E56B4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E5510
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02018744
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4EE4
+
+ thumb_func_start MOD16_021E4F1C
+MOD16_021E4F1C: ; 0x021E4F1C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r4, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x21
+ mov r3, #3
+ bl MOD16_021D8CB4
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x32
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r6, r0, #0
+ ldrh r0, [r2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x33
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r1, #3
+ str r1, [sp]
+ add r6, r0, #0
+ ldrh r0, [r2]
+ mov r3, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x34
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ add r6, r0, #0
+ ldr r2, [sp, #0x10]
+ mov r0, #8
+ str r0, [sp]
+ ldrh r0, [r2]
+ mov r1, #3
+ mov r3, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x36
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ add r4, r0, #0
+ ldr r2, [sp, #0x10]
+ mov r0, #0x10
+ str r0, [sp]
+ ldrh r0, [r2]
+ mov r1, #3
+ mov r3, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r5]
+ mov r1, #3
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E4F1C
+
+ thumb_func_start MOD16_021E5030
+MOD16_021E5030: ; 0x021E5030
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ add r7, r2, #0
+ bl MOD16_021D9DE8
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DF8
+ cmp r0, #2
+ beq _021E504C
+ mov r6, #0
+_021E504C:
+ ldr r0, _021E5060 ; =0x00020100
+ add r1, r6, #0
+ str r0, [sp]
+ ldr r0, [r5]
+ ldr r3, [r4, #0x18]
+ add r0, r0, #4
+ add r2, r7, #0
+ bl MOD16_021E5064
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E5060: .word 0x00020100
+ thumb_func_end MOD16_021E5030
+
+ thumb_func_start MOD16_021E5064
+MOD16_021E5064: ; 0x021E5064
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r6, r2, #0
+ add r5, r0, #0
+ str r1, [sp, #0x10]
+ mov r0, #0x40
+ add r1, r6, #0
+ str r3, [sp, #0x14]
+ ldr r4, [sp, #0x30]
+ bl FUN_020219F4
+ add r7, r0, #0
+ ldr r2, _021E5100 ; =0x00000266
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r6, #0
+ bl FUN_0200A86C
+ mov r1, #9
+ add r2, r7, #0
+ str r0, [sp, #0x18]
+ bl FUN_0200A8E0
+ mov r0, #0x58
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ str r4, [sp, #8]
+ add r0, r5, #0
+ add r2, r7, #0
+ mov r3, #0x98
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x18]
+ mov r1, #0xa
+ add r2, r7, #0
+ bl FUN_0200A8E0
+ mov r0, #0x68
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ str r4, [sp, #8]
+ add r0, r5, #0
+ add r2, r7, #0
+ mov r3, #0x98
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x18]
+ bl FUN_0200A8B8
+ ldr r2, [sp, #0x10]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r4, #0
+ bl MOD16_021E5104
+ ldr r2, [sp, #0x10]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r4, #0
+ bl MOD16_021E5158
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ add r0, r5, #0
+ add r1, r6, #0
+ str r4, [sp]
+ bl MOD16_021E51AC
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E5100: .word 0x00000266
+ thumb_func_end MOD16_021E5064
+
+ thumb_func_start MOD16_021E5104
+MOD16_021E5104: ; 0x021E5104
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ mov r0, #0x40
+ add r6, r1, #0
+ str r2, [sp, #0x10]
+ add r5, r3, #0
+ bl FUN_020219F4
+ mov r2, #0x9b
+ add r4, r0, #0
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ add r3, r6, #0
+ bl FUN_0200A86C
+ ldr r1, [sp, #0x10]
+ add r2, r4, #0
+ add r6, r0, #0
+ bl FUN_0200A8E0
+ mov r0, #0x58
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ str r5, [sp, #8]
+ add r0, r7, #0
+ add r2, r4, #0
+ mov r3, #0xb8
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5104
+
+ thumb_func_start MOD16_021E5158
+MOD16_021E5158: ; 0x021E5158
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ mov r0, #0x40
+ add r6, r1, #0
+ str r2, [sp, #0x10]
+ add r5, r3, #0
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r2, _021E51A8 ; =0x0000026B
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r6, #0
+ bl FUN_0200A86C
+ ldr r1, [sp, #0x10]
+ add r2, r4, #0
+ add r6, r0, #0
+ bl FUN_0200A8E0
+ mov r0, #0x68
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ str r5, [sp, #8]
+ add r0, r7, #0
+ add r2, r4, #0
+ mov r3, #0xb8
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E51A8: .word 0x0000026B
+ thumb_func_end MOD16_021E5158
+
+ thumb_func_start MOD16_021E51AC
+MOD16_021E51AC: ; 0x021E51AC
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r2, #0
+ add r2, r3, #0
+ mov r1, #2
+ add r3, r4, #0
+ bl MOD16_021DBC48
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002F08
+ cmp r0, #0xf0
+ bhs _021E51D8
+ lsr r1, r0, #1
+ mov r0, #0x80
+ sub r3, r0, r1
+ b _021E51DA
+_021E51D8:
+ mov r3, #8
+_021E51DA:
+ mov r0, #0x88
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, [sp, #0x20]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r2, r4, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl MOD16_021DBBAC
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E51AC
+
+ thumb_func_start MOD16_021E51FC
+MOD16_021E51FC: ; 0x021E51FC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r2, #4]
+ add r4, r1, #0
+ add r6, r3, #0
+ bl MOD16_021D9DE8
+ add r3, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E5238
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E533C
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E51FC
+
+ thumb_func_start MOD16_021E5224
+MOD16_021E5224: ; 0x021E5224
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021E53B4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E52F4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E5224
+
+ thumb_func_start MOD16_021E5238
+MOD16_021E5238: ; 0x021E5238
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r3, [sp, #0x10]
+ add r5, r0, #0
+ add r6, r2, #0
+ ldr r4, [r1]
+ bl MOD16_021D8520
+ add r7, r0, #0
+ ldr r0, [sp, #0x10]
+ bl MOD16_021D8524
+ str r0, [sp, #0x14]
+ bl MOD16_021D8528
+ str r0, [sp, #0x18]
+ bl MOD16_021D852C
+ str r0, [sp, #0x1c]
+ bl MOD16_021D8530
+ str r0, [sp, #0x20]
+ mov r0, #0xfa
+ lsl r0, r0, #4
+ str r0, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ mov r0, #5
+ str r6, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r2, [sp, #0x14]
+ add r1, r7, #0
+ bl FUN_02008F34
+ str r0, [r5, #0x24]
+ bl FUN_02009B04
+ ldr r0, [r5, #0x24]
+ bl FUN_02009474
+ mov r0, #0xfa
+ lsl r0, r0, #4
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r6, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r2, [sp, #0x18]
+ add r1, r7, #0
+ mov r3, #0
+ bl FUN_02008FEC
+ str r0, [r5, #0x28]
+ bl FUN_02009D68
+ ldr r0, [r5, #0x28]
+ bl FUN_02009474
+ mov r0, #0xfa
+ lsl r0, r0, #4
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r6, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r2, [sp, #0x1c]
+ add r1, r7, #0
+ mov r3, #1
+ bl FUN_020090AC
+ str r0, [r5, #0x2c]
+ mov r0, #0xfa
+ lsl r0, r0, #4
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r6, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r2, [sp, #0x20]
+ add r1, r7, #0
+ mov r3, #1
+ bl FUN_020090AC
+ str r0, [r5, #0x30]
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E5238
+
+ thumb_func_start MOD16_021E52F4
+MOD16_021E52F4: ; 0x021E52F4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x24]
+ ldr r4, [r1]
+ cmp r0, #0
+ beq _021E533A
+ bl FUN_02009C0C
+ ldr r0, [r5, #0x28]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x24]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x28]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x2c]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x30]
+ bl FUN_02009490
+_021E533A:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E52F4
+
+ thumb_func_start MOD16_021E533C
+MOD16_021E533C: ; 0x021E533C
+ push {r4, r5, r6, lr}
+ sub sp, #0x70
+ ldr r4, [r1]
+ mov r1, #0xfa
+ add r5, r0, #0
+ lsl r1, r1, #4
+ mov r0, #0
+ add r6, r2, #0
+ str r1, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ mov r0, #5
+ str r2, [sp, #0x10]
+ lsl r0, r0, #6
+ ldr r3, [r4, r0]
+ str r3, [sp, #0x14]
+ add r3, r0, #4
+ ldr r3, [r4, r3]
+ str r3, [sp, #0x18]
+ add r3, r0, #0
+ add r3, #8
+ ldr r3, [r4, r3]
+ add r0, #0xc
+ str r3, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r3, r1, #0
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r0, sp, #0x4c
+ add r2, r1, #0
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #0x20
+ str r0, [sp, #0x40]
+ mov r0, #1
+ str r0, [sp, #0x44]
+ mov r0, #0x16
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x38]
+ mov r0, #0x1e
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ add r0, sp, #0x2c
+ str r6, [sp, #0x48]
+ bl FUN_0201FF84
+ str r0, [r5]
+ add sp, #0x70
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E533C
+
+ thumb_func_start MOD16_021E53B4
+MOD16_021E53B4: ; 0x021E53B4
+ push {r3, lr}
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E53C0
+ bl FUN_0201FFC8
+_021E53C0:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E53B4
+
+ thumb_func_start MOD16_021E53C4
+MOD16_021E53C4: ; 0x021E53C4
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ add r6, r2, #0
+ bl MOD16_021D9D88
+ add r3, r0, #0
+ mov r0, #0x2b
+ lsl r0, r0, #0xe
+ str r0, [sp]
+ mov r0, #2
+ lsl r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ ldr r1, [r4, #4]
+ add r2, r6, #0
+ bl MOD16_021D7E9C
+ ldr r0, [r5]
+ mov r1, #0
+ bl MOD16_021D891C
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E53C4
+
+ thumb_func_start MOD16_021E53F8
+MOD16_021E53F8: ; 0x021E53F8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD16_021D8950
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD16_021D88F0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E53F8
+
+ thumb_func_start MOD16_021E5410
+MOD16_021E5410: ; 0x021E5410
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ bl MOD16_021D8700
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DE8
+ add r2, r0, #0
+ mov r0, #0x30
+ str r0, [sp]
+ mov r0, #0x48
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ ldr r1, [r4, #4]
+ mov r3, #2
+ bl MOD16_021D7FB4
+ add r0, r6, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E5410
+
+ thumb_func_start MOD16_021E5448
+MOD16_021E5448: ; 0x021E5448
+ push {r4, lr}
+ ldr r0, [r0]
+ bl MOD16_021D8700
+ add r4, r0, #0
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ add r0, r4, #0
+ bl FUN_02007EEC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5448
+
+ thumb_func_start MOD16_021E5464
+MOD16_021E5464: ; 0x021E5464
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021E5500 ; =0x00000FFA
+ mov r3, #1
+ str r0, [sp]
+ str r3, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ add r1, r7, #0
+ mov r2, #0x5a
+ bl FUN_020091E0
+ str r0, [r5, #0x14]
+ bl FUN_02009B04
+ ldr r0, [r5, #0x14]
+ bl FUN_02009474
+ ldr r0, _021E5504 ; =0x00000FAD
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0xd
+ mov r3, #0
+ bl FUN_02009298
+ str r0, [r5, #0x18]
+ bl FUN_02009D68
+ ldr r0, [r5, #0x18]
+ bl FUN_02009474
+ ldr r0, _021E5508 ; =0x00000FF8
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x58
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x1c]
+ ldr r0, _021E550C ; =0x00000FF9
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x59
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x20]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E5500: .word 0x00000FFA
+_021E5504: .word 0x00000FAD
+_021E5508: .word 0x00000FF8
+_021E550C: .word 0x00000FF9
+ thumb_func_end MOD16_021E5464
+
+ thumb_func_start MOD16_021E5510
+MOD16_021E5510: ; 0x021E5510
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ ldr r0, [r5, #0x18]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x14]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x18]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x1c]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x20]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E5510
+
+ thumb_func_start MOD16_021E5554
+MOD16_021E5554: ; 0x021E5554
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x78
+ add r6, r2, #0
+ add r5, r0, #0
+ ldr r0, [r6, #4]
+ str r3, [sp, #0x2c]
+ ldr r4, [r1]
+ bl MOD16_021D9DE8
+ add r7, r0, #0
+ ldr r0, [r6, #4]
+ add r1, r7, #0
+ bl MOD16_021D9964
+ str r0, [sp, #0x30]
+ ldr r1, [sp, #0x30]
+ add r0, r7, #0
+ mov r2, #6
+ bl FUN_02068654
+ add r6, r0, #0
+ ldr r1, [sp, #0x30]
+ add r0, r7, #0
+ mov r2, #7
+ bl FUN_02068654
+ add r7, r0, #0
+ add r0, r6, #0
+ bl MOD16_021E563C
+ add r6, r0, #0
+ add r0, r7, #0
+ bl MOD16_021E563C
+ ldr r3, _021E5638 ; =0x00000FF9
+ add r7, r0, #0
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ mov r0, #5
+ str r2, [sp, #0x10]
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ str r1, [sp, #0x14]
+ add r1, r0, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #0x18]
+ add r1, r0, #0
+ add r1, #8
+ ldr r1, [r4, r1]
+ add r0, #0xc
+ str r1, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r1, r3, #1
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r2, r3, #0
+ add r0, sp, #0x54
+ sub r2, #0x4c
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x34]
+ add r0, sp, #0x54
+ str r0, [sp, #0x38]
+ mov r0, #0x20
+ str r0, [sp, #0x48]
+ mov r0, #1
+ str r0, [sp, #0x4c]
+ ldr r0, [sp, #0x2c]
+ str r0, [sp, #0x50]
+ mov r0, #0xaa
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x3c]
+ mov r0, #0x12
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x40]
+ add r0, sp, #0x34
+ bl FUN_0201FF84
+ add r1, r6, #0
+ str r0, [r5, #4]
+ bl FUN_02020130
+ cmp r6, r7
+ beq _021E562E
+ mov r0, #0x37
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x3c]
+ mov r0, #0x12
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x40]
+ add r0, sp, #0x34
+ bl FUN_0201FF84
+ add r1, r7, #0
+ str r0, [r5, #8]
+ bl FUN_02020130
+ add sp, #0x78
+ pop {r3, r4, r5, r6, r7, pc}
+_021E562E:
+ mov r0, #0
+ str r0, [r5, #8]
+ add sp, #0x78
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E5638: .word 0x00000FF9
+ thumb_func_end MOD16_021E5554
+
+ thumb_func_start MOD16_021E563C
+MOD16_021E563C: ; 0x021E563C
+ cmp r0, #0x11
+ bhi _021E56B2
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E564C: ; jump table
+ .short _021E5670 - _021E564C - 2 ; case 0
+ .short _021E5674 - _021E564C - 2 ; case 1
+ .short _021E5678 - _021E564C - 2 ; case 2
+ .short _021E567C - _021E564C - 2 ; case 3
+ .short _021E5680 - _021E564C - 2 ; case 4
+ .short _021E5684 - _021E564C - 2 ; case 5
+ .short _021E5688 - _021E564C - 2 ; case 6
+ .short _021E568C - _021E564C - 2 ; case 7
+ .short _021E5690 - _021E564C - 2 ; case 8
+ .short _021E568C - _021E564C - 2 ; case 9
+ .short _021E5694 - _021E564C - 2 ; case 10
+ .short _021E5698 - _021E564C - 2 ; case 11
+ .short _021E569C - _021E564C - 2 ; case 12
+ .short _021E56A0 - _021E564C - 2 ; case 13
+ .short _021E56A4 - _021E564C - 2 ; case 14
+ .short _021E56A8 - _021E564C - 2 ; case 15
+ .short _021E56AC - _021E564C - 2 ; case 16
+ .short _021E56B0 - _021E564C - 2 ; case 17
+_021E5670:
+ mov r0, #0
+ bx lr
+_021E5674:
+ mov r0, #6
+ bx lr
+_021E5678:
+ mov r0, #0xe
+ bx lr
+_021E567C:
+ mov r0, #0xa
+ bx lr
+_021E5680:
+ mov r0, #8
+ bx lr
+_021E5684:
+ mov r0, #5
+ bx lr
+_021E5688:
+ mov r0, #0xb
+ bx lr
+_021E568C:
+ mov r0, #7
+ bx lr
+_021E5690:
+ mov r0, #9
+ bx lr
+_021E5694:
+ mov r0, #1
+ bx lr
+_021E5698:
+ mov r0, #3
+ bx lr
+_021E569C:
+ mov r0, #2
+ bx lr
+_021E56A0:
+ mov r0, #4
+ bx lr
+_021E56A4:
+ mov r0, #0xf
+ bx lr
+_021E56A8:
+ mov r0, #0xd
+ bx lr
+_021E56AC:
+ mov r0, #0x10
+ bx lr
+_021E56B0:
+ mov r0, #0xc
+_021E56B2:
+ bx lr
+ thumb_func_end MOD16_021E563C
+
+ thumb_func_start MOD16_021E56B4
+MOD16_021E56B4: ; 0x021E56B4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021E56C2
+ bl FUN_0201FFC8
+_021E56C2:
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021E56CC
+ bl FUN_0201FFC8
+_021E56CC:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E56B4
+
+ thumb_func_start MOD16_021E56D0
+MOD16_021E56D0: ; 0x021E56D0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0xa0
+ add r6, r0, #0
+ add r0, r2, #0
+ add r5, r1, #0
+ ldr r0, [r0, #4]
+ str r2, [sp, #0x2c]
+ add r7, r3, #0
+ ldr r4, [r5]
+ bl MOD16_021D9DE8
+ ldr r3, _021E57C4 ; =0x00000FF9
+ str r0, [sp, #0x30]
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ mov r0, #5
+ str r2, [sp, #0x10]
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ str r1, [sp, #0x14]
+ add r1, r0, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #0x18]
+ add r1, r0, #0
+ add r1, #8
+ ldr r1, [r4, r1]
+ add r0, #0xc
+ str r1, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r1, r3, #1
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r2, r3, #0
+ add r0, sp, #0x7c
+ sub r2, #0x4c
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x5c]
+ add r0, sp, #0x7c
+ str r0, [sp, #0x60]
+ mov r0, #0x20
+ str r0, [sp, #0x70]
+ mov r0, #1
+ str r0, [sp, #0x74]
+ mov r0, #3
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x64]
+ mov r0, #0xd
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x68]
+ add r0, sp, #0x5c
+ str r7, [sp, #0x78]
+ bl FUN_0201FF84
+ mov r1, #0x11
+ str r0, [r6, #0xc]
+ bl FUN_02020130
+ ldr r0, [sp, #0x2c]
+ ldr r0, [r0, #4]
+ bl MOD16_021D9DF8
+ cmp r0, #2
+ beq _021E5768
+ mov r0, #0
+ str r0, [sp, #0x30]
+_021E5768:
+ mov r0, #0x15
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ ldr r1, [sp, #0x30]
+ add r2, r7, #0
+ bl MOD16_021E57C8
+ add r4, r0, #0
+ ldr r0, [r5]
+ mov r1, #1
+ bl MOD16_021D88D4
+ mov r1, #0x15
+ ldr r2, [r5]
+ lsl r1, r1, #4
+ ldr r1, [r2, r1]
+ str r1, [sp, #0x34]
+ mov r1, #0
+ bl FUN_02009E54
+ str r0, [sp, #0x3c]
+ ldr r0, [r6, #0xc]
+ str r0, [sp, #0x40]
+ mov r0, #0x4d
+ mvn r0, r0
+ str r0, [sp, #0x44]
+ add r0, #0x46
+ str r0, [sp, #0x48]
+ mov r0, #0
+ str r0, [sp, #0x4c]
+ mov r0, #0x1f
+ str r0, [sp, #0x50]
+ mov r0, #1
+ str r0, [sp, #0x54]
+ str r7, [sp, #0x58]
+ str r4, [sp, #0x38]
+ add r0, sp, #0x34
+ bl MOD16_021DB2BC
+ str r0, [r6, #0x10]
+ add r0, r4, #0
+ bl MOD16_021DB3BC
+ add sp, #0xa0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E57C4: .word 0x00000FF9
+ thumb_func_end MOD16_021E56D0
+
+ thumb_func_start MOD16_021E57C8
+MOD16_021E57C8: ; 0x021E57C8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r6, r2, #0
+ mov r1, #0x12
+ mov r2, #2
+ add r7, r0, #0
+ bl MOD16_021DB388
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #2
+ add r2, r6, #0
+ bl MOD16_021DBC08
+ add r5, r0, #0
+ mov r0, #2
+ add r1, r5, #0
+ mov r2, #0
+ bl FUN_02002E14
+ cmp r0, #0x88
+ bhs _021E57FC
+ mov r1, #0x88
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ b _021E57FE
+_021E57FC:
+ mov r3, #0
+_021E57FE:
+ mov r0, #0
+ str r0, [sp]
+ add r0, r7, #0
+ add r1, r4, #0
+ add r2, r5, #0
+ bl MOD16_021DB42C
+ add r0, r5, #0
+ bl MOD16_021DBBAC
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E57C8
+
+ thumb_func_start MOD16_021E5818
+MOD16_021E5818: ; 0x021E5818
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_0201FFC8
+ mov r0, #0
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x10]
+ bl MOD16_021DB338
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5818
+
+ thumb_func_start MOD16_021E5830
+MOD16_021E5830: ; 0x021E5830
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r7, r0, #0
+ ldr r0, [r5]
+ mov r1, #1
+ add r4, r2, #0
+ add r6, r3, #0
+ bl MOD16_021D88F0
+ add r0, r7, #0
+ bl MOD16_021E5B08
+ ldr r0, [r4, #0x10]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ beq _021E58A2
+ cmp r6, #0
+ beq _021E587E
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2b
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r2, r1, #0
+ sub r2, #0x11
+ bl MOD16_021D8988
+ b _021E58A2
+_021E587E:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2b
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r3, r1, #0
+ sub r3, #0x11
+ bl MOD16_021D8988
+_021E58A2:
+ add r0, r5, #0
+ bl MOD16_021E5B70
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E5830
+
+ thumb_func_start MOD16_021E58AC
+MOD16_021E58AC: ; 0x021E58AC
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, [r2, #0x10]
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021E8C68
+ cmp r0, #0
+ ldr r1, [r5]
+ beq _021E58CC
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ b _021E58D6
+_021E58CC:
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A7C
+_021E58D6:
+ add r4, r0, #0
+ cmp r4, #1
+ bne _021E58FE
+ cmp r6, #1
+ bne _021E58F0
+ add r0, r7, #0
+ bl MOD16_021E5B3C
+ ldr r0, [r5]
+ mov r1, #0
+ bl MOD16_021D88F0
+ b _021E5904
+_021E58F0:
+ add r0, r5, #0
+ bl MOD16_021E5448
+ add r0, r5, #0
+ bl MOD16_021E53F8
+ b _021E5904
+_021E58FE:
+ add r0, r5, #0
+ bl MOD16_021E5B70
+_021E5904:
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E58AC
+
+ thumb_func_start MOD16_021E5908
+MOD16_021E5908: ; 0x021E5908
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl MOD16_021E5B08
+ cmp r6, #0
+ bne _021E592E
+ ldr r1, [r4, #8]
+ ldr r2, [r4, #0xc]
+ add r0, r7, #0
+ mov r3, #4
+ bl MOD16_021E5B80
+ add r0, r7, #0
+ bl MOD16_021E5BB8
+_021E592E:
+ ldr r0, [r4, #0x10]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ beq _021E5988
+ cmp r6, #0
+ beq _021E5964
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #4
+ add r2, r1, #0
+ sub r2, #0x14
+ bl MOD16_021D8988
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021E5964:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #4
+ add r3, r1, #0
+ sub r3, #0x14
+ bl MOD16_021D8988
+_021E5988:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E5908
+
+ thumb_func_start MOD16_021E598C
+MOD16_021E598C: ; 0x021E598C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bne _021E59AC
+ bl MOD16_021E5B9C
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E5BD4
+ str r0, [sp, #4]
+ b _021E59B2
+_021E59AC:
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+_021E59B2:
+ ldr r0, [r6, #0x10]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ ldr r1, [r4]
+ beq _021E59CC
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ str r0, [sp, #8]
+ b _021E59D8
+_021E59CC:
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A7C
+ str r0, [sp, #8]
+_021E59D8:
+ mov r1, #0
+ add r2, sp, #0
+_021E59DC:
+ ldr r0, [r2]
+ cmp r0, #0
+ beq _021E59EA
+ add r1, r1, #1
+ add r2, r2, #4
+ cmp r1, #3
+ blt _021E59DC
+_021E59EA:
+ cmp r1, #3
+ bne _021E59FE
+ cmp r7, #1
+ bne _021E59F8
+ add r0, r5, #0
+ bl MOD16_021E5B3C
+_021E59F8:
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021E59FE:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E598C
+
+ thumb_func_start MOD16_021E5A04
+MOD16_021E5A04: ; 0x021E5A04
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r7, r0, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl MOD16_021E5B08
+ ldr r0, [r5]
+ mov r1, #1
+ bl MOD16_021D88F0
+ cmp r6, #0
+ bne _021E5A2C
+ ldr r1, [r4, #8]
+ ldr r2, [r4, #0xc]
+ add r0, r7, #0
+ mov r3, #1
+ bl MOD16_021E5B80
+_021E5A2C:
+ ldr r0, [r4, #0x10]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ beq _021E5A86
+ cmp r6, #0
+ beq _021E5A62
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r2, r1, #0
+ sub r2, #0x11
+ bl MOD16_021D8988
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021E5A62:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r3, r1, #0
+ sub r3, #0x11
+ bl MOD16_021D8988
+_021E5A86:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5A04
+
+ thumb_func_start MOD16_021E5A8C
+MOD16_021E5A8C: ; 0x021E5A8C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bne _021E5AA2
+ bl MOD16_021E5B9C
+ str r0, [sp]
+ b _021E5AA6
+_021E5AA2:
+ mov r0, #1
+ str r0, [sp]
+_021E5AA6:
+ ldr r0, [r4, #0x10]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ ldr r1, [r5]
+ beq _021E5AC0
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ str r0, [sp, #4]
+ b _021E5ACC
+_021E5AC0:
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A7C
+ str r0, [sp, #4]
+_021E5ACC:
+ mov r1, #0
+ add r2, sp, #0
+_021E5AD0:
+ ldr r0, [r2]
+ cmp r0, #0
+ beq _021E5ADE
+ add r1, r1, #1
+ add r2, r2, #4
+ cmp r1, #2
+ blt _021E5AD0
+_021E5ADE:
+ cmp r1, #2
+ bne _021E5B02
+ cmp r6, #1
+ bne _021E5AF6
+ add r0, r7, #0
+ bl MOD16_021E5B3C
+ ldr r0, [r5]
+ mov r1, #0
+ bl MOD16_021D88F0
+ b _021E5AFC
+_021E5AF6:
+ add r0, r5, #0
+ bl MOD16_021E53F8
+_021E5AFC:
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E5B02:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E5A8C
+
+ thumb_func_start MOD16_021E5B08
+MOD16_021E5B08: ; 0x021E5B08
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r4, #0
+ add r5, r7, #0
+ mov r6, #1
+_021E5B12:
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021E5B1E
+ add r1, r6, #0
+ bl FUN_02020398
+_021E5B1E:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021E5B12
+ ldr r0, [r7, #0xc]
+ mov r1, #1
+ bl FUN_02020398
+ ldr r0, [r7, #0x10]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5B08
+
+ thumb_func_start MOD16_021E5B3C
+MOD16_021E5B3C: ; 0x021E5B3C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r4, #0
+ add r5, r7, #0
+ add r6, r4, #0
+_021E5B46:
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021E5B52
+ add r1, r6, #0
+ bl FUN_02020398
+_021E5B52:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021E5B46
+ ldr r0, [r7, #0xc]
+ mov r1, #0
+ bl FUN_02020398
+ ldr r0, [r7, #0x10]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5B3C
+
+ thumb_func_start MOD16_021E5B70
+MOD16_021E5B70: ; 0x021E5B70
+ mov r1, #0x5b
+ ldr r0, [r0]
+ lsl r1, r1, #2
+ ldr r3, _021E5B7C ; =MOD16_021D8A8C
+ add r1, r0, r1
+ bx r3
+ .align 2, 0
+_021E5B7C: .word MOD16_021D8A8C
+ thumb_func_end MOD16_021E5B70
+
+ thumb_func_start MOD16_021E5B80
+MOD16_021E5B80: ; 0x021E5B80
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ str r2, [sp]
+ str r3, [sp, #4]
+ add r0, #0x34
+ mov r1, #0x30
+ add r2, r4, #0
+ mov r3, #0x48
+ bl MOD16_021D8BD8
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5B80
+
+ thumb_func_start MOD16_021E5B9C
+MOD16_021E5B9C: ; 0x021E5B9C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x34
+ bl MOD16_021D8BF4
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r1, [r5, #0x34]
+ ldr r2, [r5, #0x38]
+ bl MOD16_021D86F4
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E5B9C
+
+ thumb_func_start MOD16_021E5BB8
+MOD16_021E5BB8: ; 0x021E5BB8
+ push {r3, lr}
+ sub sp, #8
+ mov r1, #0x52
+ str r1, [sp]
+ mov r1, #4
+ str r1, [sp, #4]
+ add r0, #0x54
+ mov r1, #0xac
+ mov r2, #0xaa
+ mov r3, #0x20
+ bl MOD16_021D8BD8
+ add sp, #8
+ pop {r3, pc}
+ thumb_func_end MOD16_021E5BB8
+
+ thumb_func_start MOD16_021E5BD4
+MOD16_021E5BD4: ; 0x021E5BD4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x54
+ bl MOD16_021D8BF4
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r1, [r5, #0x54]
+ ldr r2, [r5, #0x58]
+ bl MOD16_021D7F6C
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E5BD4
+
+ thumb_func_start MOD16_021E5BF0
+MOD16_021E5BF0: ; 0x021E5BF0
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r0, r7, #0
+ bl MOD16_021E5C88
+ add r4, r0, #0
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021E5CC8
+ str r4, [r5]
+ str r0, [r5, #4]
+ mov r0, #0
+ str r0, [r5, #0x20]
+ bl MOD16_021E5D28
+ str r0, [r5, #0x24]
+ ldr r0, _021E5C30 ; =MOD16_021E5D44
+ str r0, [r5, #8]
+ ldr r0, _021E5C34 ; =MOD16_021E5D6C
+ str r0, [r5, #0xc]
+ ldr r0, _021E5C38 ; =MOD16_021E5D7C
+ str r0, [r5, #0x10]
+ ldr r0, _021E5C3C ; =MOD16_021E5D80
+ str r0, [r5, #0x14]
+ ldr r0, _021E5C40 ; =MOD16_021E5E14
+ str r0, [r5, #0x18]
+ ldr r0, _021E5C44 ; =MOD16_021E5ED4
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E5C30: .word MOD16_021E5D44
+_021E5C34: .word MOD16_021E5D6C
+_021E5C38: .word MOD16_021E5D7C
+_021E5C3C: .word MOD16_021E5D80
+_021E5C40: .word MOD16_021E5E14
+_021E5C44: .word MOD16_021E5ED4
+ thumb_func_end MOD16_021E5BF0
+
+ thumb_func_start MOD16_021E5C48
+MOD16_021E5C48: ; 0x021E5C48
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021E5D00
+ ldr r0, [r4, #4]
+ bl MOD16_021E5D14
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5C48
+
+ thumb_func_start MOD16_021E5C5C
+MOD16_021E5C5C: ; 0x021E5C5C
+ push {r3, r4, r5, lr}
+ ldr r4, [r0]
+ ldr r0, [r0, #4]
+ add r2, r1, #0
+ ldr r0, [r0, #4]
+ cmp r0, #1
+ bne _021E5C6E
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021E5C6E:
+ ldr r5, [r4, #0x14]
+ ldr r0, [r4, #0xc]
+ ldr r3, [r4, #0x10]
+ add r1, r5, #0
+ bl MOD16_021E5D2C
+ str r0, [r4, #0x14]
+ cmp r5, r0
+ beq _021E5C84
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E5C84:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E5C5C
+
+ thumb_func_start MOD16_021E5C88
+MOD16_021E5C88: ; 0x021E5C88
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E5C9A
+ bl ErrorHandling
+_021E5C9A:
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021E5CA0:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021E5CA0
+ add r0, r5, #0
+ bl MOD16_021D7AD8
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD16_021D7B5C
+ str r0, [r4, #8]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5C88
+
+ thumb_func_start MOD16_021E5CC8
+MOD16_021E5CC8: ; 0x021E5CC8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0xc
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E5CDA
+ bl ErrorHandling
+_021E5CDA:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E5CC8
+
+ thumb_func_start MOD16_021E5D00
+MOD16_021E5D00: ; 0x021E5D00
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E5D0A
+ bl ErrorHandling
+_021E5D0A:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5D00
+
+ thumb_func_start MOD16_021E5D14
+MOD16_021E5D14: ; 0x021E5D14
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E5D1E
+ bl ErrorHandling
+_021E5D1E:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5D14
+
+ thumb_func_start MOD16_021E5D28
+MOD16_021E5D28: ; 0x021E5D28
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021E5D28
+
+ thumb_func_start MOD16_021E5D2C
+MOD16_021E5D2C: ; 0x021E5D2C
+ cmp r2, #0
+ ble _021E5D3A
+ add r2, r1, r2
+ cmp r2, r3
+ blt _021E5D40
+ mov r2, #0
+ b _021E5D40
+_021E5D3A:
+ add r0, r1, r2
+ bpl _021E5D40
+ sub r2, r3, #1
+_021E5D40:
+ add r0, r2, #0
+ bx lr
+ thumb_func_end MOD16_021E5D2C
+
+ thumb_func_start MOD16_021E5D44
+MOD16_021E5D44: ; 0x021E5D44
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DE8
+ add r5, r0, #0
+ add r1, r4, #0
+ bl MOD16_021E6648
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E6690
+ str r0, [r4, #0x10]
+ mov r0, #0
+ str r0, [r4, #0x14]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5D44
+
+ thumb_func_start MOD16_021E5D6C
+MOD16_021E5D6C: ; 0x021E5D6C
+ ldr r0, [r0, #0xc]
+ cmp r0, #1
+ bne _021E5D76
+ mov r0, #1
+ bx lr
+_021E5D76:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E5D6C
+
+ thumb_func_start MOD16_021E5D7C
+MOD16_021E5D7C: ; 0x021E5D7C
+ mov r0, #1
+ bx lr
+ thumb_func_end MOD16_021E5D7C
+
+ thumb_func_start MOD16_021E5D80
+MOD16_021E5D80: ; 0x021E5D80
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r6, [r4, #8]
+ cmp r0, #3
+ bhi _021E5E0A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E5D9C: ; jump table
+ .short _021E5DA4 - _021E5D9C - 2 ; case 0
+ .short _021E5DCC - _021E5D9C - 2 ; case 1
+ .short _021E5DEA - _021E5D9C - 2 ; case 2
+ .short _021E5E00 - _021E5D9C - 2 ; case 3
+_021E5DA4:
+ ldr r0, [r4, #4]
+ mov r1, #0xd0
+ bl FUN_02016998
+ str r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0xd0
+ bl Call_FillMemWithValue
+ ldr r0, [r4, #8]
+ ldr r1, [r7, #0xc]
+ add r0, #0xc8
+ str r1, [r0]
+ mov r0, #0
+ str r0, [r5, #4]
+ str r0, [r5, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E5E0A
+_021E5DCC:
+ ldr r3, [r4, #4]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021E5F40
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021E63B4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E5E0A
+_021E5DEA:
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #1
+ bl MOD16_021E6424
+ cmp r0, #0
+ beq _021E5E0A
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E5E0A
+_021E5E00:
+ ldr r0, _021E5E10 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E5E0A:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E5E10: .word 0x04000050
+ thumb_func_end MOD16_021E5D80
+
+ thumb_func_start MOD16_021E5E14
+MOD16_021E5E14: ; 0x021E5E14
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r6, [r4, #8]
+ cmp r0, #0
+ beq _021E5E30
+ cmp r0, #1
+ beq _021E5E7C
+ cmp r0, #2
+ beq _021E5E94
+ b _021E5EC0
+_021E5E30:
+ add r0, r6, #0
+ add r0, #0xcc
+ ldr r1, [r7, #0x14]
+ ldr r0, [r0]
+ cmp r1, r0
+ beq _021E5EC4
+ add r0, r6, #0
+ add r0, #0xcc
+ str r1, [r0]
+ add r0, r6, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ add r0, r0, #1
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r6, #0
+ add r1, r2, r1
+ add r0, #0xb8
+ str r1, [r0]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021E6510
+ add r0, r6, #0
+ bl MOD16_021E6E24
+ mov r0, #1
+ str r0, [r5, #4]
+ ldr r0, _021E5ED0 ; =0x0000068B
+ bl FUN_020054C8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E5EC4
+_021E5E7C:
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021E6534
+ cmp r0, #1
+ bne _021E5EC4
+ mov r0, #1
+ str r0, [r5, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E5EC4
+_021E5E94:
+ ldr r0, [r5, #8]
+ cmp r0, #1
+ bne _021E5EC4
+ ldr r0, [r7, #0xc]
+ add r1, r5, #0
+ str r0, [sp]
+ ldr r0, [r7, #0x14]
+ str r0, [sp, #4]
+ ldr r3, [r4, #4]
+ add r0, r6, #0
+ bl MOD16_021E6BA4
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD16_021E6070
+ mov r0, #0
+ str r0, [r5, #8]
+ str r0, [r5, #4]
+ str r0, [r4]
+ b _021E5EC4
+_021E5EC0:
+ bl ErrorHandling
+_021E5EC4:
+ add r0, r6, #0
+ bl MOD16_021E6E44
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E5ED0: .word 0x0000068B
+ thumb_func_end MOD16_021E5E14
+
+ thumb_func_start MOD16_021E5ED4
+MOD16_021E5ED4: ; 0x021E5ED4
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r3, r0, #0
+ ldr r0, [r4, #8]
+ cmp r1, #4
+ bhi _021E5F3A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E5EEE: ; jump table
+ .short _021E5EF8 - _021E5EEE - 2 ; case 0
+ .short _021E5F08 - _021E5EEE - 2 ; case 1
+ .short _021E5F1C - _021E5EEE - 2 ; case 2
+ .short _021E5F2A - _021E5EEE - 2 ; case 3
+ .short _021E5F36 - _021E5EEE - 2 ; case 4
+_021E5EF8:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E63B4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E5F3A
+_021E5F08:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E6424
+ cmp r0, #0
+ beq _021E5F3A
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E5F3A
+_021E5F1C:
+ add r1, r3, #0
+ bl MOD16_021E5F88
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E5F3A
+_021E5F2A:
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E5F3A
+_021E5F36:
+ mov r0, #1
+ pop {r4, pc}
+_021E5F3A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5ED4
+
+ thumb_func_start MOD16_021E5F40
+MOD16_021E5F40: ; 0x021E5F40
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ add r5, r1, #0
+ add r6, r3, #0
+ add r4, r2, #0
+ bl MOD16_021E600C
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD16_021E6198
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021E5FA4
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD16_021E6288
+ ldr r0, [r4, #0xc]
+ add r1, r5, #0
+ str r0, [sp]
+ ldr r0, [r4, #0x14]
+ add r2, r4, #0
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r3, r6, #0
+ bl MOD16_021E6B30
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5F40
+
+ thumb_func_start MOD16_021E5F88
+MOD16_021E5F88: ; 0x021E5F88
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021E6E0C
+ add r0, r5, #0
+ bl MOD16_021E6394
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E6244
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5F88
+
+ thumb_func_start MOD16_021E5FA4
+MOD16_021E5FA4: ; 0x021E5FA4
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r5, r1, #0
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r5, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x21
+ mov r3, #3
+ bl MOD16_021D8CB4
+ str r5, [sp]
+ ldr r0, [r4]
+ mov r1, #0x32
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r5, r0, #0
+ ldrh r0, [r2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r5, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ mov r1, #3
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E5FA4
+
+ thumb_func_start MOD16_021E600C
+MOD16_021E600C: ; 0x021E600C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ add r5, r1, #0
+ bl MOD16_021D9DE8
+ add r7, r0, #0
+ ldr r0, [r4, #0xc]
+ add r1, r5, #0
+ str r0, [sp]
+ ldr r0, [r4, #0x14]
+ add r2, r4, #0
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r3, r7, #0
+ bl MOD16_021E60A8
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x14]
+ ldr r3, [r4, #0x10]
+ mov r2, #1
+ bl MOD16_021E5D2C
+ ldr r1, [r4, #0xc]
+ add r2, r4, #0
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r1, r5, #0
+ add r3, r7, #0
+ bl MOD16_021E60A8
+ mov r4, #0
+ mov r6, #1
+_021E605C:
+ ldr r0, [r5]
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD16_021D8810
+ add r4, r4, #1
+ cmp r4, #4
+ blt _021E605C
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E600C
+
+ thumb_func_start MOD16_021E6070
+MOD16_021E6070: ; 0x021E6070
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ add r6, r1, #0
+ bl MOD16_021D9DE8
+ add r7, r0, #0
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x14]
+ ldr r3, [r4, #0x10]
+ mov r2, #1
+ bl MOD16_021E5D2C
+ ldr r1, [r4, #0xc]
+ add r2, r4, #0
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r3, r7, #0
+ bl MOD16_021E60A8
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E6070
+
+ thumb_func_start MOD16_021E60A8
+MOD16_021E60A8: ; 0x021E60A8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r5, [sp, #0x30]
+ add r6, r0, #0
+ add r7, r1, #0
+ str r2, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r4, [sp, #0x2c]
+ cmp r5, #2
+ ble _021E60C0
+ bl ErrorHandling
+_021E60C0:
+ ldr r0, [sp, #0x28]
+ cmp r0, #9
+ bhi _021E6172
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E60D2: ; jump table
+ .short _021E60E6 - _021E60D2 - 2 ; case 0
+ .short _021E60E6 - _021E60D2 - 2 ; case 1
+ .short _021E60E6 - _021E60D2 - 2 ; case 2
+ .short _021E60E6 - _021E60D2 - 2 ; case 3
+ .short _021E6122 - _021E60D2 - 2 ; case 4
+ .short _021E6136 - _021E60D2 - 2 ; case 5
+ .short _021E60FA - _021E60D2 - 2 ; case 6
+ .short _021E610E - _021E60D2 - 2 ; case 7
+ .short _021E614A - _021E60D2 - 2 ; case 8
+ .short _021E615E - _021E60D2 - 2 ; case 9
+_021E60E6:
+ ldr r2, [sp, #8]
+ str r4, [sp]
+ ldr r3, [sp, #0xc]
+ add r0, r6, #0
+ add r1, r7, #0
+ str r5, [sp, #4]
+ bl MOD16_021E6758
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021E60FA:
+ ldr r2, [sp, #8]
+ str r4, [sp]
+ ldr r3, [sp, #0xc]
+ add r0, r6, #0
+ add r1, r7, #0
+ str r5, [sp, #4]
+ bl MOD16_021E67F0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021E610E:
+ ldr r2, [sp, #8]
+ str r4, [sp]
+ ldr r3, [sp, #0xc]
+ add r0, r6, #0
+ add r1, r7, #0
+ str r5, [sp, #4]
+ bl MOD16_021E687C
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021E6122:
+ ldr r2, [sp, #8]
+ str r4, [sp]
+ ldr r3, [sp, #0xc]
+ add r0, r6, #0
+ add r1, r7, #0
+ str r5, [sp, #4]
+ bl MOD16_021E6908
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021E6136:
+ ldr r2, [sp, #8]
+ str r4, [sp]
+ ldr r3, [sp, #0xc]
+ add r0, r6, #0
+ add r1, r7, #0
+ str r5, [sp, #4]
+ bl MOD16_021E6994
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021E614A:
+ ldr r2, [sp, #8]
+ str r4, [sp]
+ ldr r3, [sp, #0xc]
+ add r0, r6, #0
+ add r1, r7, #0
+ str r5, [sp, #4]
+ bl MOD16_021E6A20
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021E615E:
+ ldr r2, [sp, #8]
+ str r4, [sp]
+ ldr r3, [sp, #0xc]
+ add r0, r6, #0
+ add r1, r7, #0
+ str r5, [sp, #4]
+ bl MOD16_021E6AAC
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021E6172:
+ bl ErrorHandling
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E60A8
+
+ thumb_func_start MOD16_021E617C
+MOD16_021E617C: ; 0x021E617C
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_021E6184:
+ ldr r0, [r5]
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD16_021D8810
+ add r4, r4, #1
+ cmp r4, #4
+ blt _021E6184
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E617C
+
+ thumb_func_start MOD16_021E6198
+MOD16_021E6198: ; 0x021E6198
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021E6234 ; =0x0000372A
+ mov r3, #1
+ str r0, [sp]
+ str r3, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ add r1, r7, #0
+ mov r2, #0x7a
+ bl FUN_020091E0
+ str r0, [r5, #0x10]
+ bl FUN_02009B04
+ ldr r0, [r5, #0x10]
+ bl FUN_02009474
+ ldr r0, _021E6238 ; =0x000036C6
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x16
+ mov r3, #0
+ bl FUN_02009298
+ str r0, [r5, #0x14]
+ bl FUN_02009D68
+ ldr r0, [r5, #0x14]
+ bl FUN_02009474
+ ldr r0, _021E623C ; =0x0000372B
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x7b
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x18]
+ ldr r0, _021E6240 ; =0x00003729
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x79
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x1c]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E6234: .word 0x0000372A
+_021E6238: .word 0x000036C6
+_021E623C: .word 0x0000372B
+_021E6240: .word 0x00003729
+ thumb_func_end MOD16_021E6198
+
+ thumb_func_start MOD16_021E6244
+MOD16_021E6244: ; 0x021E6244
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ ldr r0, [r5, #0x14]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x10]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x14]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x18]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x1c]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E6244
+
+ thumb_func_start MOD16_021E6288
+MOD16_021E6288: ; 0x021E6288
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x7c
+ add r5, r3, #0
+ ldr r4, [r1]
+ ldr r3, _021E6390 ; =0x00003729
+ add r6, r0, #0
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #3
+ str r0, [sp, #0x10]
+ mov r0, #5
+ lsl r0, r0, #6
+ str r2, [sp, #0x2c]
+ ldr r2, [r4, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r2, r3, #0
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x58
+ sub r2, #0x63
+ add r3, r3, #2
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r4, #0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x58
+ str r0, [sp, #0x3c]
+ mov r0, #0x20
+ str r0, [sp, #0x4c]
+ mov r0, #1
+ str r5, [sp, #0x54]
+ str r0, [sp, #0x50]
+ str r4, [sp, #0x40]
+ str r4, [sp, #0x44]
+ add r5, r6, #0
+ mov r7, #0x1f
+_021E62F6:
+ add r0, r4, #0
+ add r1, sp, #0x34
+ add r2, sp, #0x30
+ bl MOD16_021E6D54
+ ldr r0, [sp, #0x34]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x40]
+ ldr r0, [sp, #0x30]
+ add r0, #8
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x44]
+ add r0, sp, #0x38
+ bl FUN_0201FF84
+ str r0, [r5]
+ lsr r1, r4, #0x1f
+ lsl r0, r4, #0x1f
+ sub r0, r0, r1
+ ror r0, r7
+ add r0, r1, r0
+ ldr r0, [r5]
+ bne _021E632C
+ mov r1, #0
+ bl FUN_02020130
+ b _021E6332
+_021E632C:
+ mov r1, #2
+ bl FUN_02020130
+_021E6332:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021E62F6
+ mov r0, #0x3e
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x40]
+ mov r0, #6
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x44]
+ mov r0, #0
+ str r0, [sp, #0x4c]
+ add r0, sp, #0x38
+ bl FUN_0201FF84
+ add r1, r6, #0
+ add r1, #0xbc
+ str r0, [r1]
+ add r0, r6, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_02020130
+ add r0, r6, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_020200BC
+ add r0, r6, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_02020238
+ ldr r0, [sp, #0x2c]
+ ldr r0, [r0, #0x10]
+ cmp r0, #1
+ bgt _021E638C
+ add r6, #0xbc
+ ldr r0, [r6]
+ mov r1, #0
+ bl FUN_020200A0
+_021E638C:
+ add sp, #0x7c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E6390: .word 0x00003729
+ thumb_func_end MOD16_021E6288
+
+ thumb_func_start MOD16_021E6394
+MOD16_021E6394: ; 0x021E6394
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_021E639C:
+ ldr r0, [r5]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021E639C
+ add r6, #0xbc
+ ldr r0, [r6]
+ bl FUN_0201FFC8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E6394
+
+ thumb_func_start MOD16_021E63B4
+MOD16_021E63B4: ; 0x021E63B4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r2, #0
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021E6474
+ ldr r0, [r4, #8]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ beq _021E641A
+ cmp r6, #0
+ beq _021E63F6
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2b
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r2, r1, #0
+ sub r2, #0x11
+ bl MOD16_021D8988
+ b _021E641A
+_021E63F6:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2b
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r3, r1, #0
+ sub r3, #0x11
+ bl MOD16_021D8988
+_021E641A:
+ add r0, r5, #0
+ bl MOD16_021E64F4
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021E63B4
+
+ thumb_func_start MOD16_021E6424
+MOD16_021E6424: ; 0x021E6424
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, [r2, #8]
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021E8C68
+ cmp r0, #0
+ ldr r1, [r5]
+ beq _021E6444
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ b _021E644E
+_021E6444:
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A7C
+_021E644E:
+ add r4, r0, #0
+ cmp r4, #1
+ bne _021E6468
+ cmp r6, #1
+ bne _021E6460
+ add r0, r7, #0
+ bl MOD16_021E64B4
+ b _021E646E
+_021E6460:
+ add r0, r5, #0
+ bl MOD16_021E617C
+ b _021E646E
+_021E6468:
+ add r0, r5, #0
+ bl MOD16_021E64F4
+_021E646E:
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6424
+
+ thumb_func_start MOD16_021E6474
+MOD16_021E6474: ; 0x021E6474
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+ mov r7, #1
+_021E647E:
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl FUN_02020398
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _021E647E
+ add r0, r5, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_02020398
+ mov r4, #0
+ mov r6, #1
+_021E649E:
+ ldr r0, [r5, #0x20]
+ add r1, r6, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021E649E
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6474
+
+ thumb_func_start MOD16_021E64B4
+MOD16_021E64B4: ; 0x021E64B4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+ add r7, r6, #0
+_021E64BE:
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl FUN_02020398
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _021E64BE
+ add r0, r5, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_02020398
+ mov r4, #0
+ add r6, r4, #0
+_021E64DE:
+ ldr r0, [r5, #0x20]
+ add r1, r6, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021E64DE
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E64B4
+
+ thumb_func_start MOD16_021E64F4
+MOD16_021E64F4: ; 0x021E64F4
+ push {r4, r5, r6, lr}
+ mov r6, #0x5b
+ add r5, r0, #0
+ mov r4, #0
+ lsl r6, r6, #2
+_021E64FE:
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r1, r0, r6
+ bl MOD16_021D8AAC
+ add r4, r4, #1
+ cmp r4, #4
+ blt _021E64FE
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E64F4
+
+ thumb_func_start MOD16_021E6510
+MOD16_021E6510: ; 0x021E6510
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0xff
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+ mvn r7, r7
+_021E651C:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ mov r3, #0
+ str r4, [sp]
+ bl MOD16_021E6570
+ add r4, r4, #1
+ cmp r4, #4
+ blt _021E651C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6510
+
+ thumb_func_start MOD16_021E6534
+MOD16_021E6534: ; 0x021E6534
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ ldr r0, [r6, #4]
+ cmp r0, #0
+ bne _021E6544
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E6544:
+ mov r4, #0
+_021E6546:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD16_021E65D8
+ add r4, r4, #1
+ add r7, r0, #0
+ cmp r4, #4
+ blt _021E6546
+ mov r4, #0
+_021E655A:
+ ldr r0, [r5, #0x20]
+ ldr r0, [r0]
+ bl FUN_02011938
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021E655A
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6534
+
+ thumb_func_start MOD16_021E6570
+MOD16_021E6570: ; 0x021E6570
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r6, r0, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ add r7, r1, #0
+ str r2, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r5, [sp, #0x38]
+ cmp r0, #0
+ bne _021E658A
+ add r4, r5, #0
+ b _021E6590
+_021E658A:
+ sub r4, r5, #2
+ bpl _021E6590
+ add r4, r4, #4
+_021E6590:
+ add r0, r5, #0
+ add r1, sp, #0x14
+ add r2, sp, #0x10
+ bl MOD16_021E6D54
+ ldr r0, [r7]
+ add r1, sp, #0x1c
+ add r2, sp, #0x18
+ add r3, r4, #0
+ bl MOD16_021D87E0
+ add r1, r6, #0
+ ldr r3, [sp, #0x10]
+ ldr r2, [sp, #0x14]
+ mov r0, #0x10
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r4, [sp, #0xc]
+ add r1, #0x28
+ lsl r0, r5, #5
+ add r0, r1, r0
+ ldr r1, [sp, #8]
+ add r3, r3, r4
+ add r1, r2, r1
+ bl MOD16_021D8BD8
+ ldr r1, [sp, #0x18]
+ ldr r0, [sp, #0x10]
+ sub r1, r1, r0
+ lsl r0, r5, #2
+ add r0, r6, r0
+ add r0, #0xa8
+ str r1, [r0]
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6570
+
+ thumb_func_start MOD16_021E65D8
+MOD16_021E65D8: ; 0x021E65D8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r6, r0, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ add r4, r2, #0
+ str r1, [sp]
+ str r2, [sp, #4]
+ cmp r0, #0
+ beq _021E65F2
+ sub r4, r4, #2
+ bpl _021E65F2
+ add r4, r4, #4
+_021E65F2:
+ ldr r0, [sp, #4]
+ add r7, r6, #0
+ lsl r5, r0, #5
+ add r7, #0x28
+ add r0, r7, r5
+ bl MOD16_021D8BF4
+ str r0, [sp, #8]
+ add r0, r6, #0
+ str r0, [sp, #0xc]
+ add r0, #0x2c
+ str r0, [sp, #0xc]
+ ldr r2, [sp, #0xc]
+ ldr r0, [sp]
+ ldr r3, [r2, r5]
+ ldr r2, [sp, #4]
+ ldr r0, [r0]
+ lsl r2, r2, #2
+ add r2, r6, r2
+ add r2, #0xa8
+ ldr r2, [r2]
+ ldr r1, [r7, r5]
+ add r2, r3, r2
+ add r3, r4, #0
+ bl MOD16_021D87BC
+ ldr r0, [r7, r5]
+ add r1, sp, #0x10
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0xc]
+ ldr r0, [r0, r5]
+ add r0, #8
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x14]
+ lsl r0, r4, #2
+ ldr r0, [r6, r0]
+ bl FUN_02020044
+ ldr r0, [sp, #8]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E65D8
+
+ thumb_func_start MOD16_021E6648
+MOD16_021E6648: ; 0x021E6648
+ push {r3, lr}
+ mov r3, #0x67
+ lsl r3, r3, #2
+ cmp r0, r3
+ bne _021E6656
+ mov r0, #6
+ pop {r3, pc}
+_021E6656:
+ add r2, r3, #1
+ cmp r0, r2
+ bne _021E6660
+ mov r0, #7
+ pop {r3, pc}
+_021E6660:
+ add r2, r3, #0
+ add r2, #0xa
+ cmp r0, r2
+ bne _021E666C
+ mov r0, #4
+ pop {r3, pc}
+_021E666C:
+ add r2, r3, #0
+ add r2, #0xb
+ cmp r0, r2
+ bne _021E6678
+ mov r0, #5
+ pop {r3, pc}
+_021E6678:
+ cmp r0, #0xc9
+ bne _021E6680
+ mov r0, #8
+ pop {r3, pc}
+_021E6680:
+ sub r3, #0x1a
+ cmp r0, r3
+ bne _021E668A
+ mov r0, #9
+ pop {r3, pc}
+_021E668A:
+ bl MOD16_021E66F4
+ pop {r3, pc}
+ thumb_func_end MOD16_021E6648
+
+ thumb_func_start MOD16_021E6690
+MOD16_021E6690: ; 0x021E6690
+ push {r3, lr}
+ mov r2, #0x67
+ add r3, r0, #0
+ lsl r2, r2, #2
+ cmp r3, r2
+ bne _021E66A4
+ ldr r0, [r1, #4]
+ bl MOD16_021D9A18
+ pop {r3, pc}
+_021E66A4:
+ add r0, r2, #1
+ cmp r3, r0
+ bne _021E66B2
+ ldr r0, [r1, #4]
+ bl MOD16_021D9A24
+ pop {r3, pc}
+_021E66B2:
+ add r0, r2, #0
+ add r0, #0xa
+ cmp r3, r0
+ bne _021E66C2
+ ldr r0, [r1, #4]
+ bl MOD16_021D9A00
+ pop {r3, pc}
+_021E66C2:
+ add r0, r2, #0
+ add r0, #0xb
+ cmp r3, r0
+ bne _021E66D2
+ ldr r0, [r1, #4]
+ bl MOD16_021D9A0C
+ pop {r3, pc}
+_021E66D2:
+ cmp r3, #0xc9
+ bne _021E66DE
+ ldr r0, [r1, #4]
+ bl MOD16_021D99F4
+ pop {r3, pc}
+_021E66DE:
+ sub r2, #0x1a
+ cmp r3, r2
+ ldr r0, [r1, #4]
+ bne _021E66EC
+ bl MOD16_021D9A48
+ pop {r3, pc}
+_021E66EC:
+ add r1, r3, #0
+ bl MOD16_021D99DC
+ pop {r3, pc}
+ thumb_func_end MOD16_021E6690
+
+ thumb_func_start MOD16_021E66F4
+MOD16_021E66F4: ; 0x021E66F4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0x12
+ add r5, r0, #0
+ bl FUN_02068678
+ cmp r0, #0
+ bne _021E6708
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E6708:
+ cmp r0, #0xfe
+ bne _021E6710
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021E6710:
+ cmp r0, #0xff
+ bne _021E6718
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_021E6718:
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD16_021D99DC
+ cmp r0, #1
+ bne _021E6754
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ mov r2, #0
+ bl MOD16_021D98DC
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _021E673C
+ bl ErrorHandling
+_021E673C:
+ cmp r4, #0
+ bne _021E6744
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E6744:
+ cmp r4, #0xfe
+ bne _021E674C
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021E674C:
+ cmp r4, #0xff
+ bne _021E6754
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_021E6754:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E66F4
+
+ thumb_func_start MOD16_021E6758
+MOD16_021E6758: ; 0x021E6758
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ ldr r4, [sp, #0x34]
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ add r0, r4, #0
+ add r1, sp, #0x18
+ add r2, sp, #0x14
+ str r3, [sp, #0x10]
+ bl MOD16_021E6D54
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E677E
+ add r0, r4, #0
+ b _021E6784
+_021E677E:
+ sub r0, r4, #2
+ bpl _021E6784
+ add r0, r0, #4
+_021E6784:
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x10]
+ str r1, [sp]
+ ldr r1, [sp, #0x14]
+ mov r3, #2
+ str r1, [sp, #4]
+ ldr r1, [sp, #0x30]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ bl MOD16_021D8070
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021E67AA
+ bl ErrorHandling
+_021E67AA:
+ add r0, r4, #1
+ add r1, sp, #0x18
+ add r2, sp, #0x14
+ bl MOD16_021E6D54
+ add r5, #0xb8
+ ldr r1, [r5]
+ add r0, r4, #1
+ cmp r1, #0
+ beq _021E67C4
+ sub r0, r0, #2
+ bpl _021E67C4
+ add r0, r0, #4
+_021E67C4:
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x10]
+ str r1, [sp]
+ ldr r1, [sp, #0x14]
+ mov r3, #0
+ str r1, [sp, #4]
+ ldr r1, [sp, #0x30]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ bl MOD16_021D8070
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021E67EA
+ bl ErrorHandling
+_021E67EA:
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6758
+
+ thumb_func_start MOD16_021E67F0
+MOD16_021E67F0: ; 0x021E67F0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r4, [sp, #0x2c]
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ add r0, r4, #0
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021E6D54
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E6814
+ add r1, r4, #0
+ b _021E681A
+_021E6814:
+ sub r1, r4, #2
+ bpl _021E681A
+ add r1, r1, #4
+_021E681A:
+ ldr r0, [sp, #0xc]
+ mov r2, #2
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D81A0
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021E683C
+ bl ErrorHandling
+_021E683C:
+ add r0, r4, #1
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021E6D54
+ add r5, #0xb8
+ ldr r0, [r5]
+ add r1, r4, #1
+ cmp r0, #0
+ beq _021E6856
+ sub r1, r1, #2
+ bpl _021E6856
+ add r1, r1, #4
+_021E6856:
+ ldr r0, [sp, #0xc]
+ mov r2, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D81A0
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021E6878
+ bl ErrorHandling
+_021E6878:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E67F0
+
+ thumb_func_start MOD16_021E687C
+MOD16_021E687C: ; 0x021E687C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r4, [sp, #0x2c]
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ add r0, r4, #0
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021E6D54
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E68A0
+ add r1, r4, #0
+ b _021E68A6
+_021E68A0:
+ sub r1, r4, #2
+ bpl _021E68A6
+ add r1, r1, #4
+_021E68A6:
+ ldr r0, [sp, #0xc]
+ mov r2, #2
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D81E4
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021E68C8
+ bl ErrorHandling
+_021E68C8:
+ add r0, r4, #1
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021E6D54
+ add r5, #0xb8
+ ldr r0, [r5]
+ add r1, r4, #1
+ cmp r0, #0
+ beq _021E68E2
+ sub r1, r1, #2
+ bpl _021E68E2
+ add r1, r1, #4
+_021E68E2:
+ ldr r0, [sp, #0xc]
+ mov r2, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D81E4
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021E6904
+ bl ErrorHandling
+_021E6904:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E687C
+
+ thumb_func_start MOD16_021E6908
+MOD16_021E6908: ; 0x021E6908
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r4, [sp, #0x2c]
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ add r0, r4, #0
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021E6D54
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E692C
+ add r1, r4, #0
+ b _021E6932
+_021E692C:
+ sub r1, r4, #2
+ bpl _021E6932
+ add r1, r1, #4
+_021E6932:
+ ldr r0, [sp, #0xc]
+ mov r2, #2
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D8110
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021E6954
+ bl ErrorHandling
+_021E6954:
+ add r0, r4, #1
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021E6D54
+ add r5, #0xb8
+ ldr r0, [r5]
+ add r1, r4, #1
+ cmp r0, #0
+ beq _021E696E
+ sub r1, r1, #2
+ bpl _021E696E
+ add r1, r1, #4
+_021E696E:
+ ldr r0, [sp, #0xc]
+ mov r2, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D8110
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021E6990
+ bl ErrorHandling
+_021E6990:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E6908
+
+ thumb_func_start MOD16_021E6994
+MOD16_021E6994: ; 0x021E6994
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r4, [sp, #0x2c]
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ add r0, r4, #0
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021E6D54
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E69B8
+ add r1, r4, #0
+ b _021E69BE
+_021E69B8:
+ sub r1, r4, #2
+ bpl _021E69BE
+ add r1, r1, #4
+_021E69BE:
+ ldr r0, [sp, #0xc]
+ mov r2, #2
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D8158
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021E69E0
+ bl ErrorHandling
+_021E69E0:
+ add r0, r4, #1
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021E6D54
+ add r5, #0xb8
+ ldr r0, [r5]
+ add r1, r4, #1
+ cmp r0, #0
+ beq _021E69FA
+ sub r1, r1, #2
+ bpl _021E69FA
+ add r1, r1, #4
+_021E69FA:
+ ldr r0, [sp, #0xc]
+ mov r2, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D8158
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021E6A1C
+ bl ErrorHandling
+_021E6A1C:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E6994
+
+ thumb_func_start MOD16_021E6A20
+MOD16_021E6A20: ; 0x021E6A20
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r4, [sp, #0x2c]
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ add r0, r4, #0
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021E6D54
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E6A44
+ add r1, r4, #0
+ b _021E6A4A
+_021E6A44:
+ sub r1, r4, #2
+ bpl _021E6A4A
+ add r1, r1, #4
+_021E6A4A:
+ ldr r0, [sp, #0xc]
+ mov r2, #2
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D80CC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021E6A6C
+ bl ErrorHandling
+_021E6A6C:
+ add r0, r4, #1
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021E6D54
+ add r5, #0xb8
+ ldr r0, [r5]
+ add r1, r4, #1
+ cmp r0, #0
+ beq _021E6A86
+ sub r1, r1, #2
+ bpl _021E6A86
+ add r1, r1, #4
+_021E6A86:
+ ldr r0, [sp, #0xc]
+ mov r2, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D80CC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021E6AA8
+ bl ErrorHandling
+_021E6AA8:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E6A20
+
+ thumb_func_start MOD16_021E6AAC
+MOD16_021E6AAC: ; 0x021E6AAC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r4, [sp, #0x2c]
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ add r0, r4, #0
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021E6D54
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021E6AD0
+ add r1, r4, #0
+ b _021E6AD6
+_021E6AD0:
+ sub r1, r4, #2
+ bpl _021E6AD6
+ add r1, r1, #4
+_021E6AD6:
+ ldr r0, [sp, #0xc]
+ mov r2, #2
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D822C
+ cmp r0, #0xf
+ bne _021E6AF4
+ bl ErrorHandling
+_021E6AF4:
+ add r0, r4, #1
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD16_021E6D54
+ add r5, #0xb8
+ ldr r0, [r5]
+ add r1, r4, #1
+ cmp r0, #0
+ beq _021E6B0E
+ sub r1, r1, #2
+ bpl _021E6B0E
+ add r1, r1, #4
+_021E6B0E:
+ ldr r0, [sp, #0xc]
+ mov r2, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r6]
+ ldr r1, [r7, #4]
+ ldr r3, [sp, #0x10]
+ bl MOD16_021D822C
+ cmp r0, #0xf
+ bne _021E6B2C
+ bl ErrorHandling
+_021E6B2C:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E6AAC
+
+ thumb_func_start MOD16_021E6B30
+MOD16_021E6B30: ; 0x021E6B30
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r6, r1, #0
+ add r1, r5, #0
+ add r1, #0xb8
+ ldr r1, [r1]
+ add r4, r2, #0
+ add r7, r3, #0
+ mov r0, #0
+ cmp r1, #0
+ beq _021E6B4E
+ sub r0, r0, #2
+ bpl _021E6B4E
+ add r0, r0, #4
+_021E6B4E:
+ ldr r1, [sp, #0x28]
+ add r2, r4, #0
+ str r1, [sp]
+ ldr r1, [sp, #0x2c]
+ add r3, r7, #0
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021E6C04
+ ldr r0, [sp, #0x28]
+ ldr r1, [sp, #0x2c]
+ ldr r3, [r4, #0x10]
+ mov r2, #1
+ bl MOD16_021E5D2C
+ add r2, r5, #0
+ add r2, #0xb8
+ ldr r2, [r2]
+ mov r1, #2
+ cmp r2, #0
+ beq _021E6B86
+ sub r1, r1, #2
+ bpl _021E6B86
+ add r1, r1, #4
+_021E6B86:
+ ldr r2, [sp, #0x28]
+ add r3, r7, #0
+ str r2, [sp]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD16_021E6C04
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6B30
+
+ thumb_func_start MOD16_021E6BA4
+MOD16_021E6BA4: ; 0x021E6BA4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r6, r2, #0
+ add r5, r0, #0
+ str r1, [sp, #0x10]
+ str r3, [sp, #0x14]
+ ldr r0, [sp, #0x30]
+ ldr r1, [sp, #0x34]
+ ldr r3, [r6, #0x10]
+ mov r2, #1
+ bl MOD16_021E5D2C
+ str r0, [sp, #0x18]
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ mov r4, #2
+ cmp r0, #0
+ beq _021E6BD0
+ sub r4, r4, #2
+ bpl _021E6BD0
+ add r4, r4, #4
+_021E6BD0:
+ add r0, r0, #1
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r7, r2, r1
+ lsl r0, r7, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x20]
+ bl MOD16_021DB338
+ ldr r0, [sp, #0x30]
+ ldr r1, [sp, #0x10]
+ str r0, [sp]
+ ldr r0, [sp, #0x18]
+ ldr r3, [sp, #0x14]
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ add r0, r5, #0
+ add r2, r6, #0
+ str r7, [sp, #0xc]
+ bl MOD16_021E6C04
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E6BA4
+
+ thumb_func_start MOD16_021E6C04
+MOD16_021E6C04: ; 0x021E6C04
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r4, r0, #0
+ ldr r0, [sp, #0x60]
+ add r6, r1, #0
+ lsl r7, r0, #2
+ ldr r0, [r4, r7]
+ str r2, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r5, [r6]
+ cmp r0, #0
+ bne _021E6C20
+ bl ErrorHandling
+_021E6C20:
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #0x58]
+ ldr r3, [sp, #0x5c]
+ add r0, r6, #0
+ bl MOD16_021E6D94
+ str r0, [sp, #0x10]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x14]
+ bl FUN_02009E54
+ mov r1, #0x28
+ str r1, [sp, #0x2c]
+ mov r1, #3
+ str r1, [sp, #0x30]
+ mov r1, #0
+ ldr r2, [sp, #0xc]
+ str r1, [sp, #0x34]
+ mov r1, #1
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x38]
+ str r2, [sp, #0x3c]
+ bl FUN_0201E28C
+ str r0, [sp, #0x14]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0xa
+ mov r2, #2
+ bl MOD16_021DB388
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ ldr r2, _021E6CB0 ; =0x00000266
+ ldr r3, [sp, #0x10]
+ add r1, r6, #0
+ bl MOD16_021DB3C8
+ lsr r0, r0, #1
+ neg r0, r0
+ str r6, [sp, #0x1c]
+ str r0, [sp, #0x28]
+ ldr r0, [r4, r7]
+ add r4, #0x20
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x64]
+ lsl r5, r0, #2
+ add r0, sp, #0x18
+ bl MOD16_021DB2BC
+ str r0, [r4, r5]
+ ldr r0, [r4, r5]
+ ldr r1, [sp, #0x14]
+ ldr r0, [r0]
+ bl FUN_02011A60
+ add r0, r6, #0
+ bl MOD16_021DB3BC
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E6CB0: .word 0x00000266
+ thumb_func_end MOD16_021E6C04
+
+ thumb_func_start MOD16_021E6CB4
+MOD16_021E6CB4: ; 0x021E6CB4
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #4]
+ add r6, r2, #0
+ bl MOD16_021D9DE8
+ add r1, r0, #0
+ ldr r0, [r5, #4]
+ add r2, r6, #0
+ bl MOD16_021D98DC
+ add r5, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r5, r0
+ bne _021E6CD8
+ bl ErrorHandling
+_021E6CD8:
+ cmp r5, #0
+ beq _021E6CE2
+ cmp r5, #1
+ beq _021E6CE6
+ b _021E6CEA
+_021E6CE2:
+ mov r4, #0xd
+ b _021E6CEE
+_021E6CE6:
+ mov r4, #0xe
+ b _021E6CEE
+_021E6CEA:
+ bl ErrorHandling
+_021E6CEE:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6CB4
+
+ thumb_func_start MOD16_021E6CF4
+MOD16_021E6CF4: ; 0x021E6CF4
+ mov r0, #0xd
+ bx lr
+ thumb_func_end MOD16_021E6CF4
+
+ thumb_func_start MOD16_021E6CF8
+MOD16_021E6CF8: ; 0x021E6CF8
+ mov r0, #0xe
+ bx lr
+ thumb_func_end MOD16_021E6CF8
+
+ thumb_func_start MOD16_021E6CFC
+MOD16_021E6CFC: ; 0x021E6CFC
+ mov r0, #0x15
+ bx lr
+ thumb_func_end MOD16_021E6CFC
+
+ thumb_func_start MOD16_021E6D00
+MOD16_021E6D00: ; 0x021E6D00
+ push {r3, lr}
+ ldr r0, [r1, #4]
+ add r1, r2, #0
+ bl MOD16_021D9934
+ add r0, #0x11
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6D00
+
+ thumb_func_start MOD16_021E6D10
+MOD16_021E6D10: ; 0x021E6D10
+ push {r3, lr}
+ ldr r0, [r1, #4]
+ add r1, r2, #0
+ bl MOD16_021D994C
+ add r0, #0x11
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6D10
+
+ thumb_func_start MOD16_021E6D20
+MOD16_021E6D20: ; 0x021E6D20
+ push {r3, lr}
+ ldr r0, [r1, #4]
+ add r1, r2, #0
+ bl MOD16_021D9904
+ add r0, #0xf
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6D20
+
+ thumb_func_start MOD16_021E6D30
+MOD16_021E6D30: ; 0x021E6D30
+ push {r3, lr}
+ ldr r0, [r1, #4]
+ add r1, r2, #0
+ bl MOD16_021D991C
+ add r0, #0xf
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6D30
+
+ thumb_func_start MOD16_021E6D40
+MOD16_021E6D40: ; 0x021E6D40
+ mov r0, #0x14
+ bx lr
+ thumb_func_end MOD16_021E6D40
+
+ thumb_func_start MOD16_021E6D44
+MOD16_021E6D44: ; 0x021E6D44
+ push {r3, lr}
+ ldr r0, [r1, #4]
+ add r1, r2, #0
+ bl MOD16_021D9A3C
+ add r0, #0x6e
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6D44
+
+ thumb_func_start MOD16_021E6D54
+MOD16_021E6D54: ; 0x021E6D54
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ add r5, r4, #0
+ cmp r0, #3
+ bhi _021E6D8A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E6D6E: ; jump table
+ .short _021E6D78 - _021E6D6E - 2 ; case 0
+ .short _021E6D76 - _021E6D6E - 2 ; case 1
+ .short _021E6D80 - _021E6D6E - 2 ; case 2
+ .short _021E6D7E - _021E6D6E - 2 ; case 3
+_021E6D76:
+ mov r4, #0x70
+_021E6D78:
+ add r4, #0x48
+ mov r5, #0x58
+ b _021E6D8E
+_021E6D7E:
+ mov r4, #0x70
+_021E6D80:
+ mov r0, #0x52
+ lsl r0, r0, #2
+ add r4, r4, r0
+ mov r5, #0x58
+ b _021E6D8E
+_021E6D8A:
+ bl ErrorHandling
+_021E6D8E:
+ str r4, [r6]
+ str r5, [r7]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E6D54
+
+ thumb_func_start MOD16_021E6D94
+MOD16_021E6D94: ; 0x021E6D94
+ push {r3, lr}
+ cmp r2, #9
+ bhi _021E6E08
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021E6DA6: ; jump table
+ .short _021E6DBA - _021E6DA6 - 2 ; case 0
+ .short _021E6DC2 - _021E6DA6 - 2 ; case 1
+ .short _021E6DCA - _021E6DA6 - 2 ; case 2
+ .short _021E6DD2 - _021E6DA6 - 2 ; case 3
+ .short _021E6DEA - _021E6DA6 - 2 ; case 4
+ .short _021E6DF2 - _021E6DA6 - 2 ; case 5
+ .short _021E6DDA - _021E6DA6 - 2 ; case 6
+ .short _021E6DE2 - _021E6DA6 - 2 ; case 7
+ .short _021E6DFA - _021E6DA6 - 2 ; case 8
+ .short _021E6E02 - _021E6DA6 - 2 ; case 9
+_021E6DBA:
+ add r2, r3, #0
+ bl MOD16_021E6CB4
+ pop {r3, pc}
+_021E6DC2:
+ add r2, r3, #0
+ bl MOD16_021E6CF4
+ pop {r3, pc}
+_021E6DCA:
+ add r2, r3, #0
+ bl MOD16_021E6CF8
+ pop {r3, pc}
+_021E6DD2:
+ add r2, r3, #0
+ bl MOD16_021E6CFC
+ pop {r3, pc}
+_021E6DDA:
+ add r2, r3, #0
+ bl MOD16_021E6D00
+ pop {r3, pc}
+_021E6DE2:
+ add r2, r3, #0
+ bl MOD16_021E6D10
+ pop {r3, pc}
+_021E6DEA:
+ add r2, r3, #0
+ bl MOD16_021E6D20
+ pop {r3, pc}
+_021E6DF2:
+ add r2, r3, #0
+ bl MOD16_021E6D30
+ pop {r3, pc}
+_021E6DFA:
+ add r2, r3, #0
+ bl MOD16_021E6D40
+ pop {r3, pc}
+_021E6E02:
+ add r2, r3, #0
+ bl MOD16_021E6D44
+_021E6E08:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6D94
+
+ thumb_func_start MOD16_021E6E0C
+MOD16_021E6E0C: ; 0x021E6E0C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021E6E12:
+ ldr r0, [r5, #0x20]
+ bl MOD16_021DB338
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021E6E12
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6E0C
+
+ thumb_func_start MOD16_021E6E24
+MOD16_021E6E24: ; 0x021E6E24
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r0, r4, #0
+ mov r1, #0x18
+ add r0, #0xc0
+ str r1, [r0]
+ mov r0, #1
+ add r4, #0xc4
+ str r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6E24
+
+ thumb_func_start MOD16_021E6E44
+MOD16_021E6E44: ; 0x021E6E44
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E6E7A
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xc0
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ cmp r0, #0
+ bgt _021E6E7A
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0
+ add r4, #0xc4
+ str r0, [r4]
+_021E6E7A:
+ pop {r4, pc}
+ thumb_func_end MOD16_021E6E44
+
+ thumb_func_start MOD16_021E6E7C
+MOD16_021E6E7C: ; 0x021E6E7C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r0, r7, #0
+ bl MOD16_021E6F18
+ add r4, r0, #0
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021E6F54
+ str r4, [r5]
+ str r0, [r5, #4]
+ mov r0, #0
+ str r0, [r5, #0x20]
+ bl MOD16_021E6FA4
+ str r0, [r5, #0x24]
+ ldr r0, _021E6EBC ; =MOD16_021E6FA8
+ str r0, [r5, #8]
+ ldr r0, _021E6EC0 ; =MOD16_021E6FAC
+ str r0, [r5, #0xc]
+ ldr r0, _021E6EC4 ; =MOD16_021E6FBC
+ str r0, [r5, #0x10]
+ ldr r0, _021E6EC8 ; =MOD16_021E6FC0
+ str r0, [r5, #0x14]
+ ldr r0, _021E6ECC ; =MOD16_021E70A0
+ str r0, [r5, #0x18]
+ ldr r0, _021E6ED0 ; =MOD16_021E70A4
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E6EBC: .word MOD16_021E6FA8
+_021E6EC0: .word MOD16_021E6FAC
+_021E6EC4: .word MOD16_021E6FBC
+_021E6EC8: .word MOD16_021E6FC0
+_021E6ECC: .word MOD16_021E70A0
+_021E6ED0: .word MOD16_021E70A4
+ thumb_func_end MOD16_021E6E7C
+
+ thumb_func_start MOD16_021E6ED4
+MOD16_021E6ED4: ; 0x021E6ED4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021E6F7C
+ ldr r0, [r4, #4]
+ bl MOD16_021E6F90
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6ED4
+
+ thumb_func_start MOD16_021E6EE8
+MOD16_021E6EE8: ; 0x021E6EE8
+ ldr r0, [r0]
+ str r1, [r0, #8]
+ str r2, [r0, #0xc]
+ bx lr
+ thumb_func_end MOD16_021E6EE8
+
+ thumb_func_start MOD16_021E6EF0
+MOD16_021E6EF0: ; 0x021E6EF0
+ ldr r0, [r0]
+ str r1, [r0, #0x14]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E6EF0
+
+ thumb_func_start MOD16_021E6EF8
+MOD16_021E6EF8: ; 0x021E6EF8
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021E6EF8
+
+ thumb_func_start MOD16_021E6EFC
+MOD16_021E6EFC: ; 0x021E6EFC
+ ldr r2, [r0]
+ mov r0, #1
+ cmp r1, #1
+ bne _021E6F08
+ mov r1, #0
+ add r0, r1, #0
+_021E6F08:
+ str r1, [r2, #0x1c]
+ bx lr
+ thumb_func_end MOD16_021E6EFC
+
+ thumb_func_start MOD16_021E6F0C
+MOD16_021E6F0C: ; 0x021E6F0C
+ ldr r2, [r0]
+ mov r0, #0
+ str r1, [r2, #0x18]
+ str r0, [r2, #0x1c]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E6F0C
+
+ thumb_func_start MOD16_021E6F18
+MOD16_021E6F18: ; 0x021E6F18
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x20
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E6F2A
+ bl ErrorHandling
+_021E6F2A:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x20
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl MOD16_021D7AD8
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6F18
+
+ thumb_func_start MOD16_021E6F54
+MOD16_021E6F54: ; 0x021E6F54
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E6F66
+ bl ErrorHandling
+_021E6F66:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E6F54
+
+ thumb_func_start MOD16_021E6F7C
+MOD16_021E6F7C: ; 0x021E6F7C
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E6F86
+ bl ErrorHandling
+_021E6F86:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6F7C
+
+ thumb_func_start MOD16_021E6F90
+MOD16_021E6F90: ; 0x021E6F90
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E6F9A
+ bl ErrorHandling
+_021E6F9A:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E6F90
+
+ thumb_func_start MOD16_021E6FA4
+MOD16_021E6FA4: ; 0x021E6FA4
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021E6FA4
+
+ thumb_func_start MOD16_021E6FA8
+MOD16_021E6FA8: ; 0x021E6FA8
+ mov r0, #1
+ bx lr
+ thumb_func_end MOD16_021E6FA8
+
+ thumb_func_start MOD16_021E6FAC
+MOD16_021E6FAC: ; 0x021E6FAC
+ ldr r0, [r0, #0xc]
+ cmp r0, #1
+ bne _021E6FB6
+ mov r0, #1
+ bx lr
+_021E6FB6:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E6FAC
+
+ thumb_func_start MOD16_021E6FBC
+MOD16_021E6FBC: ; 0x021E6FBC
+ mov r0, #1
+ bx lr
+ thumb_func_end MOD16_021E6FBC
+
+ thumb_func_start MOD16_021E6FC0
+MOD16_021E6FC0: ; 0x021E6FC0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r5, [r4, #8]
+ cmp r0, #3
+ bhi _021E7096
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E6FDC: ; jump table
+ .short _021E6FE4 - _021E6FDC - 2 ; case 0
+ .short _021E6FFE - _021E6FDC - 2 ; case 1
+ .short _021E7048 - _021E6FDC - 2 ; case 2
+ .short _021E708C - _021E6FDC - 2 ; case 3
+_021E6FE4:
+ ldr r0, [r4, #4]
+ mov r1, #0x58
+ bl FUN_02016998
+ str r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0x58
+ bl Call_FillMemWithValue
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E7096
+_021E6FFE:
+ ldr r3, [r4, #4]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021E7160
+ ldr r0, [r7, #0x14]
+ cmp r0, #0
+ beq _021E7018
+ cmp r0, #1
+ beq _021E7026
+ cmp r0, #2
+ beq _021E7034
+ b _021E7040
+_021E7018:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021E77C0
+ b _021E7040
+_021E7026:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021E76E8
+ b _021E7040
+_021E7034:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021E78BC
+_021E7040:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E7096
+_021E7048:
+ ldr r0, [r7, #0x14]
+ cmp r0, #0
+ beq _021E7058
+ cmp r0, #1
+ beq _021E7066
+ cmp r0, #2
+ beq _021E7074
+ b _021E7080
+_021E7058:
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r3, #1
+ bl MOD16_021E7844
+ add r1, r0, #0
+ b _021E7080
+_021E7066:
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r3, #1
+ bl MOD16_021E7764
+ add r1, r0, #0
+ b _021E7080
+_021E7074:
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r3, #1
+ bl MOD16_021E7944
+ add r1, r0, #0
+_021E7080:
+ cmp r1, #0
+ beq _021E7096
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E7096
+_021E708C:
+ ldr r0, _021E709C ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E7096:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E709C: .word 0x04000050
+ thumb_func_end MOD16_021E6FC0
+
+ thumb_func_start MOD16_021E70A0
+MOD16_021E70A0: ; 0x021E70A0
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021E70A0
+
+ thumb_func_start MOD16_021E70A4
+MOD16_021E70A4: ; 0x021E70A4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r5, [r4]
+ add r3, r0, #0
+ add r1, r2, #0
+ ldr r0, [r4, #8]
+ cmp r5, #4
+ bhi _021E715A
+ add r5, r5, r5
+ add r5, pc
+ ldrh r5, [r5, #6]
+ lsl r5, r5, #0x10
+ asr r5, r5, #0x10
+ add pc, r5
+_021E70C0: ; jump table
+ .short _021E70CA - _021E70C0 - 2 ; case 0
+ .short _021E70FE - _021E70C0 - 2 ; case 1
+ .short _021E713C - _021E70C0 - 2 ; case 2
+ .short _021E714A - _021E70C0 - 2 ; case 3
+ .short _021E7156 - _021E70C0 - 2 ; case 4
+_021E70CA:
+ ldr r1, [r1, #0x14]
+ cmp r1, #0
+ beq _021E70DA
+ cmp r1, #1
+ beq _021E70E4
+ cmp r1, #2
+ beq _021E70EE
+ b _021E70F6
+_021E70DA:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E77C0
+ b _021E70F6
+_021E70E4:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E76E8
+ b _021E70F6
+_021E70EE:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E78BC
+_021E70F6:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E715A
+_021E70FE:
+ ldr r1, [r1, #0x14]
+ cmp r1, #0
+ beq _021E710E
+ cmp r1, #1
+ beq _021E711A
+ cmp r1, #2
+ beq _021E7126
+ b _021E7130
+_021E710E:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E7844
+ add r2, r0, #0
+ b _021E7130
+_021E711A:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E7764
+ add r2, r0, #0
+ b _021E7130
+_021E7126:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021E7944
+ add r2, r0, #0
+_021E7130:
+ cmp r2, #0
+ beq _021E715A
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E715A
+_021E713C:
+ add r1, r3, #0
+ bl MOD16_021E71A8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E715A
+_021E714A:
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E715A
+_021E7156:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E715A:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E70A4
+
+ thumb_func_start MOD16_021E7160
+MOD16_021E7160: ; 0x021E7160
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E73F0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E743C
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD16_021E7490
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD16_021E7580
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021E71D0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E72E4
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E7160
+
+ thumb_func_start MOD16_021E71A8
+MOD16_021E71A8: ; 0x021E71A8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ bl MOD16_021E76D0
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_02019620
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E753C
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02018744
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E71A8
+
+ thumb_func_start MOD16_021E71D0
+MOD16_021E71D0: ; 0x021E71D0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r4, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x21
+ mov r3, #3
+ bl MOD16_021D8CB4
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x32
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r6, r0, #0
+ ldrh r0, [r2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x33
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r1, #3
+ str r1, [sp]
+ add r6, r0, #0
+ ldrh r0, [r2]
+ mov r3, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x37
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ add r6, r0, #0
+ ldr r2, [sp, #0x10]
+ mov r0, #0x10
+ str r0, [sp]
+ ldrh r0, [r2]
+ mov r1, #3
+ mov r3, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x38
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ add r4, r0, #0
+ ldr r2, [sp, #0x10]
+ mov r0, #8
+ str r0, [sp]
+ ldrh r0, [r2]
+ mov r1, #3
+ mov r3, #0xe
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r5]
+ mov r1, #3
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E71D0
+
+ thumb_func_start MOD16_021E72E4
+MOD16_021E72E4: ; 0x021E72E4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ add r4, r1, #0
+ str r2, [sp, #0x10]
+ mov r0, #0x40
+ add r1, r2, #0
+ bl FUN_020219F4
+ str r0, [sp, #0x18]
+ ldr r2, _021E7394 ; =0x00000266
+ ldr r3, [sp, #0x10]
+ mov r0, #0
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DE8
+ add r7, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DF8
+ cmp r0, #2
+ beq _021E731E
+ mov r7, #0
+ bl ErrorHandling
+_021E731E:
+ ldr r0, [r4, #0x18]
+ bl MOD16_021E7A70
+ add r1, r0, #0
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x18]
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [sp, #0x18]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ mov r0, #0x48
+ str r0, [sp]
+ mov r1, #0
+ lsr r6, r3, #0x1f
+ add r6, r3, r6
+ ldr r0, _021E7398 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ ldr r2, [sp, #0x18]
+ asr r6, r6, #1
+ mov r3, #0xb8
+ add r0, r0, #4
+ sub r3, r3, r6
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ bl FUN_0200A8B8
+ ldr r0, [r4, #0x1c]
+ ldr r1, [sp, #0x10]
+ str r0, [sp]
+ ldr r3, [r4, #0x18]
+ add r0, r5, #0
+ add r2, r7, #0
+ bl MOD16_021E739C
+ ldr r1, [sp, #0x10]
+ ldr r3, [r4, #0x18]
+ add r0, r5, #0
+ add r2, r7, #0
+ bl MOD16_021E7AB4
+ ldr r1, [sp, #0x10]
+ ldr r3, [r4, #0x18]
+ add r0, r5, #0
+ add r2, r7, #0
+ bl MOD16_021E7AF0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E7394: .word 0x00000266
+_021E7398: .word 0x00020100
+ thumb_func_end MOD16_021E72E4
+
+ thumb_func_start MOD16_021E739C
+MOD16_021E739C: ; 0x021E739C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, r2, #0
+ add r1, r3, #0
+ ldr r2, [sp, #0x20]
+ add r3, r4, #0
+ bl MOD16_021DBC48
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002F08
+ cmp r0, #0xf0
+ bhs _021E73C8
+ lsr r1, r0, #1
+ mov r0, #0x80
+ sub r3, r0, r1
+ b _021E73CA
+_021E73C8:
+ mov r3, #8
+_021E73CA:
+ mov r0, #0x88
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021E73EC ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r0, r0, #4
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl MOD16_021DBBAC
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E73EC: .word 0x00020100
+ thumb_func_end MOD16_021E739C
+
+ thumb_func_start MOD16_021E73F0
+MOD16_021E73F0: ; 0x021E73F0
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ add r6, r2, #0
+ bl MOD16_021D9D88
+ add r3, r0, #0
+ mov r0, #0x2b
+ lsl r0, r0, #0xe
+ str r0, [sp]
+ mov r0, #2
+ lsl r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ ldr r1, [r4, #4]
+ add r2, r6, #0
+ bl MOD16_021D7E9C
+ ldr r0, [r5]
+ mov r1, #0
+ bl MOD16_021D891C
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E73F0
+
+ thumb_func_start MOD16_021E7424
+MOD16_021E7424: ; 0x021E7424
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD16_021D8950
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD16_021D88F0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E7424
+
+ thumb_func_start MOD16_021E743C
+MOD16_021E743C: ; 0x021E743C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ bl MOD16_021D8700
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DE8
+ add r2, r0, #0
+ mov r0, #0x30
+ str r0, [sp]
+ mov r0, #0x48
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ ldr r1, [r4, #4]
+ mov r3, #2
+ bl MOD16_021D7FB4
+ add r0, r6, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E743C
+
+ thumb_func_start MOD16_021E7474
+MOD16_021E7474: ; 0x021E7474
+ push {r4, lr}
+ ldr r0, [r0]
+ bl MOD16_021D8700
+ add r4, r0, #0
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ add r0, r4, #0
+ bl FUN_02007EEC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E7474
+
+ thumb_func_start MOD16_021E7490
+MOD16_021E7490: ; 0x021E7490
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021E752C ; =0x00000FFA
+ mov r3, #1
+ str r0, [sp]
+ str r3, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ add r1, r7, #0
+ mov r2, #0x5a
+ bl FUN_020091E0
+ str r0, [r5, #8]
+ bl FUN_02009B04
+ ldr r0, [r5, #8]
+ bl FUN_02009474
+ ldr r0, _021E7530 ; =0x00000FAD
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0xd
+ mov r3, #0
+ bl FUN_02009298
+ str r0, [r5, #0xc]
+ bl FUN_02009D68
+ ldr r0, [r5, #0xc]
+ bl FUN_02009474
+ ldr r0, _021E7534 ; =0x00000FF8
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x58
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x10]
+ ldr r0, _021E7538 ; =0x00000FF9
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x59
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x14]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E752C: .word 0x00000FFA
+_021E7530: .word 0x00000FAD
+_021E7534: .word 0x00000FF8
+_021E7538: .word 0x00000FF9
+ thumb_func_end MOD16_021E7490
+
+ thumb_func_start MOD16_021E753C
+MOD16_021E753C: ; 0x021E753C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ ldr r0, [r5, #0xc]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #8]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0xc]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x10]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x14]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E753C
+
+ thumb_func_start MOD16_021E7580
+MOD16_021E7580: ; 0x021E7580
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0xa0
+ add r6, r0, #0
+ add r0, r2, #0
+ add r5, r1, #0
+ ldr r0, [r0, #4]
+ str r2, [sp, #0x2c]
+ add r7, r3, #0
+ ldr r4, [r5]
+ bl MOD16_021D9DE8
+ ldr r3, _021E7670 ; =0x00000FF9
+ str r0, [sp, #0x30]
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ mov r0, #5
+ str r2, [sp, #0x10]
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ str r1, [sp, #0x14]
+ add r1, r0, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #0x18]
+ add r1, r0, #0
+ add r1, #8
+ ldr r1, [r4, r1]
+ add r0, #0xc
+ str r1, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r1, r3, #1
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r2, r3, #0
+ add r0, sp, #0x7c
+ sub r2, #0x4c
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x5c]
+ add r0, sp, #0x7c
+ str r0, [sp, #0x60]
+ mov r0, #0x20
+ str r0, [sp, #0x70]
+ mov r0, #1
+ str r0, [sp, #0x74]
+ mov r0, #3
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x64]
+ mov r0, #0xd
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x68]
+ add r0, sp, #0x5c
+ str r7, [sp, #0x78]
+ bl FUN_0201FF84
+ mov r1, #0x11
+ str r0, [r6]
+ bl FUN_02020130
+ ldr r0, [sp, #0x2c]
+ ldr r0, [r0, #4]
+ bl MOD16_021D9DF8
+ cmp r0, #2
+ beq _021E7618
+ mov r0, #0
+ str r0, [sp, #0x30]
+_021E7618:
+ ldr r1, [sp, #0x30]
+ add r0, r5, #0
+ add r2, r7, #0
+ bl MOD16_021E7674
+ add r4, r0, #0
+ ldr r0, [r5]
+ mov r1, #1
+ bl MOD16_021D88D4
+ mov r1, #0x15
+ ldr r2, [r5]
+ lsl r1, r1, #4
+ ldr r1, [r2, r1]
+ str r1, [sp, #0x34]
+ mov r1, #0
+ bl FUN_02009E54
+ str r0, [sp, #0x3c]
+ ldr r0, [r6]
+ str r0, [sp, #0x40]
+ mov r0, #0x4d
+ mvn r0, r0
+ str r0, [sp, #0x44]
+ add r0, #0x46
+ str r0, [sp, #0x48]
+ mov r0, #0
+ str r0, [sp, #0x4c]
+ mov r0, #0x1f
+ str r0, [sp, #0x50]
+ mov r0, #1
+ str r0, [sp, #0x54]
+ str r7, [sp, #0x58]
+ str r4, [sp, #0x38]
+ add r0, sp, #0x34
+ bl MOD16_021DB2BC
+ str r0, [r6, #4]
+ add r0, r4, #0
+ bl MOD16_021DB3BC
+ add sp, #0xa0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E7670: .word 0x00000FF9
+ thumb_func_end MOD16_021E7580
+
+ thumb_func_start MOD16_021E7674
+MOD16_021E7674: ; 0x021E7674
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x15
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ add r7, r2, #0
+ mov r1, #0x12
+ mov r2, #2
+ bl MOD16_021DB388
+ add r4, r0, #0
+ add r0, r6, #0
+ mov r1, #2
+ add r2, r7, #0
+ bl MOD16_021DBC08
+ add r6, r0, #0
+ mov r0, #2
+ add r1, r6, #0
+ mov r2, #0
+ bl FUN_02002E14
+ cmp r0, #0x88
+ bhs _021E76B0
+ mov r1, #0x88
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ b _021E76B2
+_021E76B0:
+ mov r3, #0
+_021E76B2:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x15
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021DB42C
+ add r0, r6, #0
+ bl MOD16_021DBBAC
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E7674
+
+ thumb_func_start MOD16_021E76D0
+MOD16_021E76D0: ; 0x021E76D0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0201FFC8
+ mov r0, #0
+ str r0, [r4]
+ ldr r0, [r4, #4]
+ bl MOD16_021DB338
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E76D0
+
+ thumb_func_start MOD16_021E76E8
+MOD16_021E76E8: ; 0x021E76E8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r7, r0, #0
+ ldr r0, [r5]
+ mov r1, #1
+ add r4, r2, #0
+ add r6, r3, #0
+ bl MOD16_021D88F0
+ add r0, r7, #0
+ bl MOD16_021E79C0
+ ldr r0, [r4, #0x10]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ beq _021E775A
+ cmp r6, #0
+ beq _021E7736
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2b
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r2, r1, #0
+ sub r2, #0x11
+ bl MOD16_021D8988
+ b _021E775A
+_021E7736:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2b
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r3, r1, #0
+ sub r3, #0x11
+ bl MOD16_021D8988
+_021E775A:
+ add r0, r5, #0
+ bl MOD16_021E79F0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E76E8
+
+ thumb_func_start MOD16_021E7764
+MOD16_021E7764: ; 0x021E7764
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, [r2, #0x10]
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021E8C68
+ cmp r0, #0
+ ldr r1, [r5]
+ beq _021E7784
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ b _021E778E
+_021E7784:
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A7C
+_021E778E:
+ add r4, r0, #0
+ cmp r4, #1
+ bne _021E77B6
+ cmp r6, #1
+ bne _021E77A8
+ add r0, r7, #0
+ bl MOD16_021E79D8
+ ldr r0, [r5]
+ mov r1, #0
+ bl MOD16_021D88F0
+ b _021E77BC
+_021E77A8:
+ add r0, r5, #0
+ bl MOD16_021E7474
+ add r0, r5, #0
+ bl MOD16_021E7424
+ b _021E77BC
+_021E77B6:
+ add r0, r5, #0
+ bl MOD16_021E79F0
+_021E77BC:
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E7764
+
+ thumb_func_start MOD16_021E77C0
+MOD16_021E77C0: ; 0x021E77C0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl MOD16_021E79C0
+ cmp r6, #0
+ bne _021E77E6
+ ldr r1, [r4, #8]
+ ldr r2, [r4, #0xc]
+ add r0, r7, #0
+ mov r3, #4
+ bl MOD16_021E7A00
+ add r0, r7, #0
+ bl MOD16_021E7A38
+_021E77E6:
+ ldr r0, [r4, #0x10]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ beq _021E7840
+ cmp r6, #0
+ beq _021E781C
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r2, r1, #0
+ sub r2, #0x11
+ bl MOD16_021D8988
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021E781C:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r3, r1, #0
+ sub r3, #0x11
+ bl MOD16_021D8988
+_021E7840:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E77C0
+
+ thumb_func_start MOD16_021E7844
+MOD16_021E7844: ; 0x021E7844
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bne _021E7864
+ bl MOD16_021E7A1C
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E7A54
+ str r0, [sp, #4]
+ b _021E786A
+_021E7864:
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+_021E786A:
+ ldr r0, [r6, #0x10]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ ldr r1, [r4]
+ beq _021E7884
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ str r0, [sp, #8]
+ b _021E7890
+_021E7884:
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A7C
+ str r0, [sp, #8]
+_021E7890:
+ mov r1, #0
+ add r2, sp, #0
+_021E7894:
+ ldr r0, [r2]
+ cmp r0, #0
+ beq _021E78A2
+ add r1, r1, #1
+ add r2, r2, #4
+ cmp r1, #3
+ blt _021E7894
+_021E78A2:
+ cmp r1, #3
+ bne _021E78B6
+ cmp r7, #1
+ bne _021E78B0
+ add r0, r5, #0
+ bl MOD16_021E79D8
+_021E78B0:
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021E78B6:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E7844
+
+ thumb_func_start MOD16_021E78BC
+MOD16_021E78BC: ; 0x021E78BC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r7, r0, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl MOD16_021E79C0
+ ldr r0, [r5]
+ mov r1, #1
+ bl MOD16_021D88F0
+ cmp r6, #0
+ bne _021E78E4
+ ldr r1, [r4, #8]
+ ldr r2, [r4, #0xc]
+ add r0, r7, #0
+ mov r3, #1
+ bl MOD16_021E7A00
+_021E78E4:
+ ldr r0, [r4, #0x10]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ beq _021E793E
+ cmp r6, #0
+ beq _021E791A
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r2, r1, #0
+ sub r2, #0x11
+ bl MOD16_021D8988
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021E791A:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r3, r1, #0
+ sub r3, #0x11
+ bl MOD16_021D8988
+_021E793E:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E78BC
+
+ thumb_func_start MOD16_021E7944
+MOD16_021E7944: ; 0x021E7944
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bne _021E795A
+ bl MOD16_021E7A1C
+ str r0, [sp]
+ b _021E795E
+_021E795A:
+ mov r0, #1
+ str r0, [sp]
+_021E795E:
+ ldr r0, [r4, #0x10]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ ldr r1, [r5]
+ beq _021E7978
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ str r0, [sp, #4]
+ b _021E7984
+_021E7978:
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A7C
+ str r0, [sp, #4]
+_021E7984:
+ mov r1, #0
+ add r2, sp, #0
+_021E7988:
+ ldr r0, [r2]
+ cmp r0, #0
+ beq _021E7996
+ add r1, r1, #1
+ add r2, r2, #4
+ cmp r1, #2
+ blt _021E7988
+_021E7996:
+ cmp r1, #2
+ bne _021E79BA
+ cmp r6, #1
+ bne _021E79AE
+ add r0, r7, #0
+ bl MOD16_021E79D8
+ ldr r0, [r5]
+ mov r1, #0
+ bl MOD16_021D88F0
+ b _021E79B4
+_021E79AE:
+ add r0, r5, #0
+ bl MOD16_021E7424
+_021E79B4:
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E79BA:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E7944
+
+ thumb_func_start MOD16_021E79C0
+MOD16_021E79C0: ; 0x021E79C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_02020398
+ ldr r0, [r4, #4]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ pop {r4, pc}
+ thumb_func_end MOD16_021E79C0
+
+ thumb_func_start MOD16_021E79D8
+MOD16_021E79D8: ; 0x021E79D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_02020398
+ ldr r0, [r4, #4]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ pop {r4, pc}
+ thumb_func_end MOD16_021E79D8
+
+ thumb_func_start MOD16_021E79F0
+MOD16_021E79F0: ; 0x021E79F0
+ mov r1, #0x5b
+ ldr r0, [r0]
+ lsl r1, r1, #2
+ ldr r3, _021E79FC ; =MOD16_021D8A8C
+ add r1, r0, r1
+ bx r3
+ .align 2, 0
+_021E79FC: .word MOD16_021D8A8C
+ thumb_func_end MOD16_021E79F0
+
+ thumb_func_start MOD16_021E7A00
+MOD16_021E7A00: ; 0x021E7A00
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ str r2, [sp]
+ str r3, [sp, #4]
+ add r0, #0x18
+ mov r1, #0x30
+ add r2, r4, #0
+ mov r3, #0x48
+ bl MOD16_021D8BD8
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E7A00
+
+ thumb_func_start MOD16_021E7A1C
+MOD16_021E7A1C: ; 0x021E7A1C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x18
+ bl MOD16_021D8BF4
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r1, [r5, #0x18]
+ ldr r2, [r5, #0x1c]
+ bl MOD16_021D86F4
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E7A1C
+
+ thumb_func_start MOD16_021E7A38
+MOD16_021E7A38: ; 0x021E7A38
+ push {r3, lr}
+ sub sp, #8
+ mov r1, #0x52
+ str r1, [sp]
+ mov r1, #4
+ str r1, [sp, #4]
+ add r0, #0x38
+ mov r1, #0xac
+ mov r2, #0xaa
+ mov r3, #0x20
+ bl MOD16_021D8BD8
+ add sp, #8
+ pop {r3, pc}
+ thumb_func_end MOD16_021E7A38
+
+ thumb_func_start MOD16_021E7A54
+MOD16_021E7A54: ; 0x021E7A54
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x38
+ bl MOD16_021D8BF4
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r1, [r5, #0x38]
+ ldr r2, [r5, #0x3c]
+ bl MOD16_021D7F6C
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E7A54
+
+ thumb_func_start MOD16_021E7A70
+MOD16_021E7A70: ; 0x021E7A70
+ push {r4, lr}
+ cmp r0, #7
+ bhi _021E7AAA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E7A82: ; jump table
+ .short _021E7AAA - _021E7A82 - 2 ; case 0
+ .short _021E7A92 - _021E7A82 - 2 ; case 1
+ .short _021E7A96 - _021E7A82 - 2 ; case 2
+ .short _021E7A9A - _021E7A82 - 2 ; case 3
+ .short _021E7A9E - _021E7A82 - 2 ; case 4
+ .short _021E7AA2 - _021E7A82 - 2 ; case 5
+ .short _021E7AAA - _021E7A82 - 2 ; case 6
+ .short _021E7AA6 - _021E7A82 - 2 ; case 7
+_021E7A92:
+ mov r4, #0x72
+ b _021E7AAE
+_021E7A96:
+ mov r4, #0x16
+ b _021E7AAE
+_021E7A9A:
+ mov r4, #0x17
+ b _021E7AAE
+_021E7A9E:
+ mov r4, #0x19
+ b _021E7AAE
+_021E7AA2:
+ mov r4, #0x18
+ b _021E7AAE
+_021E7AA6:
+ mov r4, #0x1a
+ b _021E7AAE
+_021E7AAA:
+ bl ErrorHandling
+_021E7AAE:
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E7A70
+
+ thumb_func_start MOD16_021E7AB4
+MOD16_021E7AB4: ; 0x021E7AB4
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r2, #0
+ add r1, r3, #0
+ add r2, r4, #0
+ bl MOD16_021DBBC8
+ add r4, r0, #0
+ mov r0, #0x60
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021E7AEC ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r0, r0, #4
+ mov r3, #0x80
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl MOD16_021DBBAC
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E7AEC: .word 0x00020100
+ thumb_func_end MOD16_021E7AB4
+
+ thumb_func_start MOD16_021E7AF0
+MOD16_021E7AF0: ; 0x021E7AF0
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r2, #0
+ add r1, r3, #0
+ add r2, r4, #0
+ bl MOD16_021DBC08
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xf2
+ sub r3, r1, r0
+ mov r0, #0x70
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021E7B34 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r0, r0, #4
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl MOD16_021DBBAC
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E7B34: .word 0x00020100
+ thumb_func_end MOD16_021E7AF0
+
+ thumb_func_start MOD16_021E7B38
+MOD16_021E7B38: ; 0x021E7B38
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r2, [sp]
+ add r0, r2, #0
+ add r4, r1, #0
+ bl MOD16_021E7BB0
+ add r6, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021E7C10
+ add r7, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021E7C38
+ str r6, [r5]
+ str r7, [r5, #4]
+ str r0, [r5, #0x20]
+ bl MOD16_021E7CE0
+ str r0, [r5, #0x24]
+ ldr r0, _021E7B80 ; =MOD16_021E7CE4
+ str r0, [r5, #8]
+ ldr r0, _021E7B84 ; =MOD16_021E7D28
+ str r0, [r5, #0xc]
+ ldr r0, _021E7B88 ; =MOD16_021E7D68
+ str r0, [r5, #0x10]
+ ldr r0, _021E7B8C ; =MOD16_021E7D7C
+ str r0, [r5, #0x14]
+ ldr r0, _021E7B90 ; =MOD16_021E7E10
+ str r0, [r5, #0x18]
+ ldr r0, _021E7B94 ; =MOD16_021E7ECC
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E7B80: .word MOD16_021E7CE4
+_021E7B84: .word MOD16_021E7D28
+_021E7B88: .word MOD16_021E7D68
+_021E7B8C: .word MOD16_021E7D7C
+_021E7B90: .word MOD16_021E7E10
+_021E7B94: .word MOD16_021E7ECC
+ thumb_func_end MOD16_021E7B38
+
+ thumb_func_start MOD16_021E7B98
+MOD16_021E7B98: ; 0x021E7B98
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021E7C90
+ ldr r0, [r4]
+ bl MOD16_021E7CA4
+ ldr r0, [r4, #0x20]
+ bl MOD16_021E7CB8
+ pop {r4, pc}
+ thumb_func_end MOD16_021E7B98
+
+ thumb_func_start MOD16_021E7BB0
+MOD16_021E7BB0: ; 0x021E7BB0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E7BC2
+ bl ErrorHandling
+_021E7BC2:
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021E7BC8:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021E7BC8
+ add r0, r5, #0
+ bl MOD16_021D7AEC
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD16_021D7B7C
+ str r0, [r4, #0x14]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD16_021D7B5C
+ ldr r0, [r0]
+ mov r1, #3
+ str r0, [r4, #8]
+ add r0, r5, #0
+ bl MOD16_021D7B5C
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E7BB0
+
+ thumb_func_start MOD16_021E7C10
+MOD16_021E7C10: ; 0x021E7C10
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E7C22
+ bl ErrorHandling
+_021E7C22:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E7C10
+
+ thumb_func_start MOD16_021E7C38
+MOD16_021E7C38: ; 0x021E7C38
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ bl MOD16_021E7CE0
+ add r7, r0, #0
+ mov r1, #0x14
+ mul r7, r1
+ add r0, r5, #0
+ add r1, r7, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E7C58
+ bl ErrorHandling
+_021E7C58:
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r7, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ mov r3, #1
+ bl MOD16_021DB0B0
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x14
+ add r2, r6, #0
+ mov r3, #2
+ bl MOD16_021DB1D0
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x28
+ add r2, r6, #0
+ mov r3, #4
+ bl MOD16_021DB114
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E7C38
+
+ thumb_func_start MOD16_021E7C90
+MOD16_021E7C90: ; 0x021E7C90
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E7C9A
+ bl ErrorHandling
+_021E7C9A:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E7C90
+
+ thumb_func_start MOD16_021E7CA4
+MOD16_021E7CA4: ; 0x021E7CA4
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E7CAE
+ bl ErrorHandling
+_021E7CAE:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E7CA4
+
+ thumb_func_start MOD16_021E7CB8
+MOD16_021E7CB8: ; 0x021E7CB8
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E7CC2
+ bl ErrorHandling
+_021E7CC2:
+ add r0, r4, #0
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x28
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD16_021E7CB8
+
+ thumb_func_start MOD16_021E7CE0
+MOD16_021E7CE0: ; 0x021E7CE0
+ mov r0, #3
+ bx lr
+ thumb_func_end MOD16_021E7CE0
+
+ thumb_func_start MOD16_021E7CE4
+MOD16_021E7CE4: ; 0x021E7CE4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r6, r1, #0
+ mov r1, #0x3c
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x3c
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r1, #0
+ add r2, r4, #0
+ mov r0, #4
+_021E7D02:
+ add r1, r1, #1
+ str r0, [r2, #0x14]
+ add r2, r2, #4
+ cmp r1, #8
+ blt _021E7D02
+ mov r0, #0
+ str r0, [r4, #0x10]
+ ldr r2, [r5, #4]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E7F54
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E8B7C
+ str r4, [r5, #8]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E7CE4
+
+ thumb_func_start MOD16_021E7D28
+MOD16_021E7D28: ; 0x021E7D28
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r0, #0xc]
+ ldr r4, [r0, #8]
+ cmp r1, #1
+ bne _021E7D38
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E7D38:
+ ldr r0, [r0, #0x10]
+ cmp r0, #1
+ bne _021E7D42
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021E7D42:
+ ldr r0, [r5, #0x14]
+ bl MOD16_021E95C0
+ cmp r0, #0
+ beq _021E7D62
+ add r0, r4, #0
+ bl MOD16_021E8ABC
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021E8014
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021E8A78
+_021E7D62:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E7D28
+
+ thumb_func_start MOD16_021E7D68
+MOD16_021E7D68: ; 0x021E7D68
+ push {r4, lr}
+ ldr r4, [r0, #8]
+ add r0, r4, #0
+ bl MOD16_021E8088
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD16_021E7D68
+
+ thumb_func_start MOD16_021E7D7C
+MOD16_021E7D7C: ; 0x021E7D7C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ str r2, [sp]
+ ldr r7, [r3, #8]
+ ldr r6, [r4, #8]
+ cmp r0, #3
+ bhi _021E7E0A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E7D9A: ; jump table
+ .short _021E7DA2 - _021E7D9A - 2 ; case 0
+ .short _021E7DBC - _021E7D9A - 2 ; case 1
+ .short _021E7DE2 - _021E7D9A - 2 ; case 2
+ .short _021E7DF8 - _021E7D9A - 2 ; case 3
+_021E7DA2:
+ ldr r0, [r4, #4]
+ mov r1, #0xc4
+ bl FUN_02016998
+ str r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0xc4
+ bl Call_FillMemWithValue
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E7E0A
+_021E7DBC:
+ ldr r2, [r4, #4]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021E8228
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD16_021E8AE4
+ ldr r2, [sp]
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #1
+ bl MOD16_021E880C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E7E0A
+_021E7DE2:
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #1
+ bl MOD16_021E8878
+ cmp r0, #0
+ beq _021E7E0A
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E7E0A
+_021E7DF8:
+ mov r0, #0x79
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #0
+ bl MOD16_021D8B3C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E7E0A:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E7D7C
+
+ thumb_func_start MOD16_021E7E10
+MOD16_021E7E10: ; 0x021E7E10
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ str r0, [sp, #0x1c]
+ add r0, r1, #0
+ ldr r7, [r0, #8]
+ ldr r6, [r3, #8]
+ add r0, r7, #0
+ add r0, #0xc0
+ str r1, [sp, #0x20]
+ ldr r1, [r0]
+ ldr r0, [r6, #0x38]
+ cmp r1, r0
+ beq _021E7E3A
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021E8AE4
+ add r0, r7, #0
+ ldr r1, [r6, #0x38]
+ add r0, #0xc0
+ str r1, [r0]
+_021E7E3A:
+ mov r0, #0
+ str r0, [sp, #0x2c]
+ add r0, r7, #0
+ str r0, [sp, #0x28]
+ add r0, #0xa0
+ str r0, [sp, #0x28]
+ add r0, r7, #0
+ str r0, [sp, #0x24]
+ add r0, #0x80
+ str r0, [sp, #0x24]
+ add r4, r6, #0
+ add r5, r7, #0
+_021E7E52:
+ ldr r0, [sp, #0x2c]
+ cmp r0, #0
+ bne _021E7E5C
+ mov r1, #4
+ b _021E7E5E
+_021E7E5C:
+ mov r1, #5
+_021E7E5E:
+ mov r0, #5
+ mvn r0, r0
+ str r0, [sp]
+ ldr r0, [sp, #0x24]
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x20]
+ ldr r0, [r0, #4]
+ str r0, [sp, #0xc]
+ mov r0, #4
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [r5]
+ ldr r2, [r5, #0x20]
+ ldr r3, [r4, #0x14]
+ bl MOD16_021E88B4
+ ldr r0, [r5, #0x50]
+ ldr r1, [r4, #0x14]
+ bl MOD16_021D7B98
+ ldr r0, [sp, #0x28]
+ add r4, r4, #4
+ add r0, r0, #4
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x24]
+ add r5, r5, #4
+ add r0, r0, #4
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x2c]
+ add r0, r0, #1
+ str r0, [sp, #0x2c]
+ cmp r0, #1
+ ble _021E7E52
+ mov r4, #2
+ add r6, #8
+ add r7, #8
+_021E7EB0:
+ ldr r0, [r7]
+ ldr r1, [r6, #0x14]
+ add r2, r4, #0
+ bl MOD16_021E8BB8
+ add r4, r4, #1
+ add r6, r6, #4
+ add r7, r7, #4
+ cmp r4, #8
+ blt _021E7EB0
+ mov r0, #0
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E7E10
+
+ thumb_func_start MOD16_021E7ECC
+MOD16_021E7ECC: ; 0x021E7ECC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r6, [r4, #8]
+ cmp r0, #4
+ bhi _021E7F4E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E7EE8: ; jump table
+ .short _021E7EF2 - _021E7EE8 - 2 ; case 0
+ .short _021E7F14 - _021E7EE8 - 2 ; case 1
+ .short _021E7F2A - _021E7EE8 - 2 ; case 2
+ .short _021E7F3C - _021E7EE8 - 2 ; case 3
+ .short _021E7F4A - _021E7EE8 - 2 ; case 4
+_021E7EF2:
+ mov r0, #0x79
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ bl MOD16_021D8B3C
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #0
+ bl MOD16_021E880C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E7F4E
+_021E7F14:
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #0
+ bl MOD16_021E8878
+ cmp r0, #0
+ beq _021E7F4E
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E7F4E
+_021E7F2A:
+ ldr r2, [r4, #4]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021E8258
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E7F4E
+_021E7F3C:
+ add r0, r6, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E7F4E
+_021E7F4A:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E7F4E:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E7ECC
+
+ thumb_func_start MOD16_021E7F54
+MOD16_021E7F54: ; 0x021E7F54
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r2, #0
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, r6, #0
+ mov r1, #0x20
+ bl FUN_02016998
+ str r0, [r5, #4]
+ mov r0, #0xd0
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0x70
+ mov r2, #0x98
+ mov r3, #0x30
+ bl MOD16_021D7C98
+ mov r0, #0xd0
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0x38
+ add r0, r0, #4
+ mov r2, #0x60
+ mov r3, #0x30
+ bl MOD16_021D7C98
+ mov r0, #0x30
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0xa0
+ add r0, #8
+ mov r2, #0xc0
+ mov r3, #8
+ bl MOD16_021D7C98
+ mov r0, #0x58
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0xa0
+ add r0, #0xc
+ mov r2, #0xc0
+ mov r3, #0x30
+ bl MOD16_021D7C98
+ mov r0, #0x80
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0xa0
+ add r0, #0x10
+ mov r2, #0xc0
+ mov r3, #0x58
+ bl MOD16_021D7C98
+ mov r0, #0xa8
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0xa0
+ add r0, #0x14
+ mov r2, #0xc0
+ mov r3, #0x80
+ bl MOD16_021D7C98
+ mov r0, #0xd0
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0xa0
+ add r0, #0x18
+ mov r2, #0xc0
+ mov r3, #0xa8
+ bl MOD16_021D7C98
+ mov r0, #0xf8
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0xa0
+ add r0, #0x1c
+ mov r2, #0xc0
+ mov r3, #0xd0
+ bl MOD16_021D7C98
+ str r4, [r5, #8]
+ str r5, [r5, #0xc]
+ str r6, [sp]
+ add r3, r5, #0
+ ldr r0, [r5, #4]
+ ldr r2, _021E8010 ; =MOD16_021E80A0
+ mov r1, #8
+ add r3, #8
+ bl FUN_020220C4
+ str r0, [r5]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021E8010: .word MOD16_021E80A0
+ thumb_func_end MOD16_021E7F54
+
+ thumb_func_start MOD16_021E8014
+MOD16_021E8014: ; 0x021E8014
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0
+ add r2, r4, #0
+ mov r0, #3
+_021E801E:
+ add r1, r1, #1
+ str r0, [r2, #0x14]
+ add r2, r2, #4
+ cmp r1, #8
+ blt _021E801E
+ ldr r0, [r4]
+ bl FUN_02022144
+ ldr r0, [r4, #0x10]
+ cmp r0, #5
+ bhi _021E806E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E8040: ; jump table
+ .short _021E804C - _021E8040 - 2 ; case 0
+ .short _021E8052 - _021E8040 - 2 ; case 1
+ .short _021E8058 - _021E8040 - 2 ; case 2
+ .short _021E805E - _021E8040 - 2 ; case 3
+ .short _021E8064 - _021E8040 - 2 ; case 4
+ .short _021E806A - _021E8040 - 2 ; case 5
+_021E804C:
+ mov r0, #1
+ str r0, [r4, #0x1c]
+ b _021E806E
+_021E8052:
+ mov r0, #1
+ str r0, [r4, #0x20]
+ b _021E806E
+_021E8058:
+ mov r0, #1
+ str r0, [r4, #0x24]
+ b _021E806E
+_021E805E:
+ mov r0, #1
+ str r0, [r4, #0x28]
+ b _021E806E
+_021E8064:
+ mov r0, #1
+ str r0, [r4, #0x2c]
+ b _021E806E
+_021E806A:
+ mov r0, #1
+ str r0, [r4, #0x30]
+_021E806E:
+ ldr r0, [r4, #0x34]
+ cmp r0, #0
+ beq _021E807A
+ cmp r0, #1
+ beq _021E8080
+ pop {r4, pc}
+_021E807A:
+ mov r0, #2
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+_021E8080:
+ mov r0, #2
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E8014
+
+ thumb_func_start MOD16_021E8088
+MOD16_021E8088: ; 0x021E8088
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0202212C
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E8088
+
+ thumb_func_start MOD16_021E80A0
+MOD16_021E80A0: ; 0x021E80A0
+ push {r3, r4, r5, lr}
+ ldr r4, [r2, #4]
+ ldr r5, [r2]
+ lsl r2, r0, #2
+ add r2, r4, r2
+ str r1, [r2, #0x14]
+ cmp r1, #2
+ bne _021E811A
+ cmp r0, #7
+ bhi _021E811A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E80C0: ; jump table
+ .short _021E80D0 - _021E80C0 - 2 ; case 0
+ .short _021E80D6 - _021E80C0 - 2 ; case 1
+ .short _021E80DC - _021E80C0 - 2 ; case 2
+ .short _021E8112 - _021E80C0 - 2 ; case 3
+ .short _021E814A - _021E80C0 - 2 ; case 4
+ .short _021E8180 - _021E80C0 - 2 ; case 5
+ .short _021E81B6 - _021E80C0 - 2 ; case 6
+ .short _021E81EC - _021E80C0 - 2 ; case 7
+_021E80D0:
+ mov r0, #0
+ str r0, [r4, #0x34]
+ pop {r3, r4, r5, pc}
+_021E80D6:
+ mov r0, #1
+ str r0, [r4, #0x34]
+ pop {r3, r4, r5, pc}
+_021E80DC:
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ tst r0, r1
+ beq _021E811A
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ ldr r0, [r5, #8]
+ bne _021E80F2
+ bl MOD16_021E4BB8
+ b _021E80FA
+_021E80F2:
+ mov r1, #0
+ bl MOD16_021E4BBC
+ mov r0, #1
+_021E80FA:
+ cmp r0, #0
+ beq _021E811A
+ ldr r2, [r4, #0x10]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r3, #0
+ bl MOD16_021E89D4
+ ldr r0, _021E8224 ; =0x0000068B
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_021E8112:
+ ldr r1, [r4, #0x38]
+ mov r0, #2
+ tst r0, r1
+ bne _021E811C
+_021E811A:
+ b _021E8220
+_021E811C:
+ ldr r0, [r4, #0x10]
+ cmp r0, #1
+ ldr r0, [r5, #0x10]
+ bne _021E812A
+ bl MOD16_021E6EF8
+ b _021E8132
+_021E812A:
+ mov r1, #0
+ bl MOD16_021E6EFC
+ mov r0, #1
+_021E8132:
+ cmp r0, #0
+ beq _021E8220
+ ldr r2, [r4, #0x10]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r3, #1
+ bl MOD16_021E89D4
+ ldr r0, _021E8224 ; =0x0000068B
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_021E814A:
+ ldr r1, [r4, #0x38]
+ mov r0, #4
+ tst r0, r1
+ beq _021E8220
+ ldr r0, [r4, #0x10]
+ cmp r0, #2
+ ldr r0, [r5, #0x10]
+ bne _021E8160
+ bl MOD16_021E6EF8
+ b _021E8168
+_021E8160:
+ mov r1, #0
+ bl MOD16_021E6EFC
+ mov r0, #1
+_021E8168:
+ cmp r0, #0
+ beq _021E8220
+ ldr r2, [r4, #0x10]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r3, #2
+ bl MOD16_021E89D4
+ ldr r0, _021E8224 ; =0x0000068B
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_021E8180:
+ ldr r1, [r4, #0x38]
+ mov r0, #8
+ tst r0, r1
+ beq _021E8220
+ ldr r0, [r4, #0x10]
+ cmp r0, #3
+ ldr r0, [r5, #0x10]
+ bne _021E8196
+ bl MOD16_021E6EF8
+ b _021E819E
+_021E8196:
+ mov r1, #0
+ bl MOD16_021E6EFC
+ mov r0, #1
+_021E819E:
+ cmp r0, #0
+ beq _021E8220
+ ldr r2, [r4, #0x10]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r3, #3
+ bl MOD16_021E89D4
+ ldr r0, _021E8224 ; =0x0000068B
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_021E81B6:
+ ldr r1, [r4, #0x38]
+ mov r0, #0x10
+ tst r0, r1
+ beq _021E8220
+ ldr r0, [r4, #0x10]
+ cmp r0, #4
+ ldr r0, [r5, #0x10]
+ bne _021E81CC
+ bl MOD16_021E6EF8
+ b _021E81D4
+_021E81CC:
+ mov r1, #0
+ bl MOD16_021E6EFC
+ mov r0, #1
+_021E81D4:
+ cmp r0, #0
+ beq _021E8220
+ ldr r2, [r4, #0x10]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r3, #4
+ bl MOD16_021E89D4
+ ldr r0, _021E8224 ; =0x0000068B
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_021E81EC:
+ ldr r1, [r4, #0x38]
+ mov r0, #0x20
+ tst r0, r1
+ beq _021E8220
+ ldr r0, [r4, #0x10]
+ cmp r0, #5
+ ldr r0, [r5, #0x10]
+ bne _021E8202
+ bl MOD16_021E6EF8
+ b _021E820A
+_021E8202:
+ mov r1, #0
+ bl MOD16_021E6EFC
+ mov r0, #1
+_021E820A:
+ cmp r0, #0
+ beq _021E8220
+ ldr r2, [r4, #0x10]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r3, #5
+ bl MOD16_021E89D4
+ ldr r0, _021E8224 ; =0x0000068B
+ bl FUN_020054C8
+_021E8220:
+ pop {r3, r4, r5, pc}
+ nop
+_021E8224: .word 0x0000068B
+ thumb_func_end MOD16_021E80A0
+
+ thumb_func_start MOD16_021E8228
+MOD16_021E8228: ; 0x021E8228
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021E82B8
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E8394
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E84DC
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021E868C
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E8228
+
+ thumb_func_start MOD16_021E8258
+MOD16_021E8258: ; 0x021E8258
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0x20
+ add r6, r2, #0
+ str r0, [sp]
+ add r4, r1, #0
+ str r6, [sp, #4]
+ ldr r0, [r4]
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0x80
+ bl MOD16_021D8CFC
+ mov r0, #0x20
+ str r0, [sp]
+ str r6, [sp, #4]
+ ldr r0, [r4]
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0xa0
+ bl MOD16_021D8CFC
+ add r0, r5, #0
+ bl MOD16_021E866C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E8780
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E8480
+ mov r4, #0
+_021E829E:
+ add r0, r5, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E82AC
+ bl FUN_02016A18
+_021E82AC:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _021E829E
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E8258
+
+ thumb_func_start MOD16_021E82B8
+MOD16_021E82B8: ; 0x021E82B8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r4, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x22
+ mov r3, #6
+ bl MOD16_021D8CB4
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x3e
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r6, r0, #0
+ ldrh r0, [r2]
+ mov r1, #6
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x3c
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ add r6, r0, #0
+ mov r1, #6
+ ldr r2, [sp, #0x10]
+ mov r0, #0xe
+ str r0, [sp]
+ ldrh r0, [r2]
+ add r3, r1, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x3f
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ add r4, r0, #0
+ mov r1, #6
+ ldr r2, [sp, #0x10]
+ mov r0, #7
+ str r0, [sp]
+ ldrh r0, [r2]
+ add r3, r1, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r5]
+ mov r1, #6
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E82B8
+
+ thumb_func_start MOD16_021E8394
+MOD16_021E8394: ; 0x021E8394
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021E8468 ; =0x000013EE
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ mov r2, #0x66
+ mov r3, #1
+ bl FUN_020091E0
+ str r0, [r5, #0x40]
+ bl FUN_02009B04
+ ldr r0, [r5, #0x40]
+ bl FUN_02009474
+ ldr r0, _021E846C ; =0x000013EC
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x64
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x48]
+ ldr r0, _021E8470 ; =0x000013ED
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x65
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x4c]
+ ldr r0, _021E8474 ; =0x000013EB
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ mov r2, #0x63
+ mov r3, #1
+ bl FUN_020091E0
+ str r0, [r5, #0x70]
+ bl FUN_02009B04
+ ldr r0, [r5, #0x70]
+ bl FUN_02009474
+ ldr r0, _021E8478 ; =0x000013E9
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x61
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x78]
+ ldr r0, _021E847C ; =0x000013EA
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x62
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x7c]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E8468: .word 0x000013EE
+_021E846C: .word 0x000013EC
+_021E8470: .word 0x000013ED
+_021E8474: .word 0x000013EB
+_021E8478: .word 0x000013E9
+_021E847C: .word 0x000013EA
+ thumb_func_end MOD16_021E8394
+
+ thumb_func_start MOD16_021E8480
+MOD16_021E8480: ; 0x021E8480
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x40]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x40]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x48]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x4c]
+ bl FUN_02009490
+ ldr r0, [r5, #0x70]
+ bl FUN_02009C0C
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x70]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x78]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x7c]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E8480
+
+ thumb_func_start MOD16_021E84DC
+MOD16_021E84DC: ; 0x021E84DC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x74
+ ldr r4, [r1]
+ ldr r3, _021E8658 ; =0x000013ED
+ add r7, r0, #0
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ mov r0, #5
+ lsl r0, r0, #6
+ add r5, r2, #0
+ ldr r2, [r4, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ ldr r2, _021E865C ; =0x0000083F
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x50
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x21
+ str r0, [sp, #0x30]
+ add r0, sp, #0x50
+ str r0, [sp, #0x34]
+ mov r0, #0x1f
+ str r0, [sp, #0x44]
+ mov r0, #2
+ str r0, [sp, #0x48]
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x38]
+ mov r0, #3
+ lsl r1, r1, #0xe
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x3c]
+ add r0, r1, r0
+ str r0, [sp, #0x3c]
+ add r0, sp, #0x30
+ str r5, [sp, #0x4c]
+ bl FUN_0201FF84
+ mov r1, #0
+ str r0, [r7]
+ bl FUN_02020130
+ mov r0, #2
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x38]
+ mov r1, #0x13
+ mov r0, #3
+ lsl r1, r1, #0xe
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x3c]
+ add r0, r1, r0
+ str r0, [sp, #0x3c]
+ add r0, sp, #0x30
+ bl FUN_0201FF84
+ mov r1, #0
+ str r0, [r7, #4]
+ bl FUN_02020130
+ ldr r3, _021E8660 ; =0x000013EA
+ mov r0, #0
+ mov r2, #5
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r1, #2
+ lsl r2, r2, #6
+ str r1, [sp, #0x10]
+ ldr r1, [r4, r2]
+ str r1, [sp, #0x14]
+ add r1, r2, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #0x18]
+ add r1, r2, #0
+ add r1, #8
+ ldr r1, [r4, r1]
+ add r2, #0xc
+ str r1, [sp, #0x1c]
+ ldr r1, [r4, r2]
+ ldr r2, _021E865C ; =0x0000083F
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x50
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ add r0, sp, #0x50
+ str r0, [sp, #0x34]
+ mov r1, #0xb
+ mov r0, #3
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x3c]
+ add r0, r1, r0
+ str r0, [sp, #0x3c]
+ mov r0, #0
+ ldr r4, _021E8664 ; =0x021FF5DC
+ ldr r5, _021E8668 ; =0x021FF5F4
+ str r0, [sp, #0x2c]
+ add r6, r7, #0
+_021E85DA:
+ ldr r0, [r4]
+ str r0, [sp, #0x38]
+ add r0, sp, #0x30
+ bl FUN_0201FF84
+ str r0, [r6, #8]
+ ldr r1, [r5]
+ bl FUN_02020130
+ ldr r0, [sp, #0x2c]
+ add r4, r4, #4
+ add r0, r0, #1
+ add r6, r6, #4
+ add r5, r5, #4
+ str r0, [sp, #0x2c]
+ cmp r0, #6
+ blt _021E85DA
+ mov r0, #0x1e
+ str r0, [sp, #0x44]
+ mov r0, #0xa
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x38]
+ mov r1, #0x86
+ mov r0, #3
+ lsl r1, r1, #0xc
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x3c]
+ add r0, r1, r0
+ str r0, [sp, #0x3c]
+ add r0, sp, #0x30
+ bl FUN_0201FF84
+ mov r1, #0xd
+ str r0, [r7, #0x50]
+ bl FUN_02020130
+ mov r0, #6
+ lsl r0, r0, #0x10
+ mov r1, #0x4e
+ str r0, [sp, #0x38]
+ lsl r1, r1, #0xc
+ lsl r0, r0, #1
+ str r1, [sp, #0x3c]
+ add r0, r1, r0
+ str r0, [sp, #0x3c]
+ add r0, sp, #0x30
+ bl FUN_0201FF84
+ mov r1, #0xc
+ str r0, [r7, #0x54]
+ bl FUN_02020130
+ mov r1, #2
+ add r7, #8
+ mov r0, #0
+_021E8648:
+ add r1, r1, #1
+ str r0, [r7, #0x50]
+ add r7, r7, #4
+ cmp r1, #8
+ blt _021E8648
+ add sp, #0x74
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E8658: .word 0x000013ED
+_021E865C: .word 0x0000083F
+_021E8660: .word 0x000013EA
+_021E8664: .word 0x021FF5DC
+_021E8668: .word 0x021FF5F4
+ thumb_func_end MOD16_021E84DC
+
+ thumb_func_start MOD16_021E866C
+MOD16_021E866C: ; 0x021E866C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021E8672:
+ ldr r0, [r5]
+ bl FUN_0201FFC8
+ ldr r0, [r5, #0x50]
+ cmp r0, #0
+ beq _021E8682
+ bl FUN_0201FFC8
+_021E8682:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _021E8672
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E866C
+
+ thumb_func_start MOD16_021E868C
+MOD16_021E868C: ; 0x021E868C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r6, r2, #0
+ ldr r4, [r1]
+ cmp r0, #0
+ bne _021E86A0
+ bl ErrorHandling
+_021E86A0:
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, _021E8778 ; =0x0000083F
+ bl FUN_020094F0
+ mov r1, #0x15
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #8]
+ mov r1, #0
+ bl FUN_02009E54
+ mov r1, #5
+ mvn r1, r1
+ str r1, [sp, #0x1c]
+ mov r1, #2
+ mov r2, #0
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r1, [sp, #0x28]
+ str r6, [sp, #0x2c]
+ bl FUN_0201E28C
+ add r7, r0, #0
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #8
+ mov r2, #4
+ bl MOD16_021DB388
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r2, _021E877C ; =0x00000266
+ add r1, r6, #0
+ mov r3, #0x21
+ bl MOD16_021DB3C8
+ str r6, [sp, #0xc]
+ ldr r0, [r5]
+ str r0, [sp, #0x14]
+ mov r0, #0x1f
+ mvn r0, r0
+ str r0, [sp, #0x18]
+ add r0, sp, #8
+ bl MOD16_021DB2BC
+ str r0, [r5, #0x20]
+ ldr r0, [r0]
+ add r1, r7, #4
+ bl FUN_02011A60
+ add r0, r6, #0
+ bl MOD16_021DB3BC
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #8
+ mov r2, #4
+ bl MOD16_021DB388
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r2, _021E877C ; =0x00000266
+ add r1, r6, #0
+ mov r3, #0x22
+ bl MOD16_021DB3C8
+ mov r1, #0x20
+ sub r0, r1, r0
+ str r6, [sp, #0xc]
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #4]
+ str r0, [sp, #0x14]
+ add r0, sp, #8
+ bl MOD16_021DB2BC
+ str r0, [r5, #0x24]
+ ldr r0, [r0]
+ add r1, r7, #4
+ bl FUN_02011A60
+ add r0, r6, #0
+ bl MOD16_021DB3BC
+ mov r1, #2
+ add r5, #8
+ mov r0, #0
+_021E876A:
+ add r1, r1, #1
+ str r0, [r5, #0x20]
+ add r5, r5, #4
+ cmp r1, #8
+ blt _021E876A
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E8778: .word 0x0000083F
+_021E877C: .word 0x00000266
+ thumb_func_end MOD16_021E868C
+
+ thumb_func_start MOD16_021E8780
+MOD16_021E8780: ; 0x021E8780
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021E8786:
+ ldr r0, [r5, #0x20]
+ cmp r0, #0
+ beq _021E8790
+ bl MOD16_021DB338
+_021E8790:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _021E8786
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E8780
+
+ thumb_func_start MOD16_021E879C
+MOD16_021E879C: ; 0x021E879C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #1
+ add r5, r0, #0
+ mov r4, #0
+ add r6, r7, #0
+_021E87A6:
+ ldr r0, [r5]
+ add r1, r6, #0
+ bl FUN_02020398
+ ldr r0, [r5, #0x20]
+ cmp r0, #0
+ beq _021E87BC
+ ldr r0, [r0]
+ add r1, r7, #0
+ bl FUN_02011AF0
+_021E87BC:
+ ldr r0, [r5, #0x50]
+ cmp r0, #0
+ beq _021E87C8
+ mov r1, #1
+ bl FUN_02020398
+_021E87C8:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _021E87A6
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E879C
+
+ thumb_func_start MOD16_021E87D4
+MOD16_021E87D4: ; 0x021E87D4
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r7, r4, #0
+ add r6, r4, #0
+_021E87DE:
+ ldr r0, [r5]
+ add r1, r6, #0
+ bl FUN_02020398
+ ldr r0, [r5, #0x20]
+ cmp r0, #0
+ beq _021E87F4
+ ldr r0, [r0]
+ add r1, r7, #0
+ bl FUN_02011AF0
+_021E87F4:
+ ldr r0, [r5, #0x50]
+ cmp r0, #0
+ beq _021E8800
+ mov r1, #0
+ bl FUN_02020398
+_021E8800:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _021E87DE
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E87D4
+
+ thumb_func_start MOD16_021E880C
+MOD16_021E880C: ; 0x021E880C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r2, #0
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021E879C
+ ldr r0, [r4, #0x14]
+ bl MOD16_021E95B8
+ cmp r0, #0
+ beq _021E8874
+ cmp r6, #0
+ beq _021E8850
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2c
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ mov r1, #1
+ str r1, [sp, #0x10]
+ mov r0, #0x19
+ ldr r2, [r5]
+ lsl r0, r0, #4
+ add r0, r2, r0
+ add r2, r1, #0
+ sub r2, #0x11
+ bl MOD16_021D8988
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+_021E8850:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2c
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ mov r1, #1
+ str r1, [sp, #0x10]
+ mov r0, #0x19
+ ldr r3, [r5]
+ lsl r0, r0, #4
+ add r0, r3, r0
+ add r3, r1, #0
+ sub r3, #0x11
+ bl MOD16_021D8988
+_021E8874:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021E880C
+
+ thumb_func_start MOD16_021E8878
+MOD16_021E8878: ; 0x021E8878
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r2, #0x14]
+ add r5, r1, #0
+ add r4, r3, #0
+ bl MOD16_021E95B8
+ cmp r0, #0
+ beq _021E8898
+ mov r0, #0x19
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ b _021E889E
+_021E8898:
+ mov r0, #2
+ bl FUN_0200A344
+_021E889E:
+ cmp r0, #0
+ beq _021E88B0
+ cmp r4, #0
+ beq _021E88AC
+ add r0, r6, #0
+ bl MOD16_021E87D4
+_021E88AC:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021E88B0:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E8878
+
+ thumb_func_start MOD16_021E88B4
+MOD16_021E88B4: ; 0x021E88B4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r1, #0
+ add r1, r3, #0
+ str r2, [sp, #0xc]
+ ldr r4, [sp, #0x30]
+ ldr r6, [sp, #0x40]
+ mov r5, #0
+ bl MOD16_021D7B98
+ ldr r0, [sp, #0x3c]
+ ldr r1, [sp, #0xc]
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x38]
+ bl MOD16_021E8960
+ ldr r0, [sp, #8]
+ bl FUN_0202022C
+ cmp r0, #3
+ bhi _021E8926
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E88F2: ; jump table
+ .short _021E88FA - _021E88F2 - 2 ; case 0
+ .short _021E88FA - _021E88F2 - 2 ; case 1
+ .short _021E890A - _021E88F2 - 2 ; case 2
+ .short _021E8918 - _021E88F2 - 2 ; case 3
+_021E88FA:
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021E8926
+ mov r0, #0
+ mov r5, #1
+ mov r7, #9
+ str r0, [r4]
+ b _021E8926
+_021E890A:
+ ldr r0, [r4]
+ cmp r0, #1
+ beq _021E8926
+ mov r5, #1
+ mov r7, #0xa
+ str r5, [r4]
+ b _021E8926
+_021E8918:
+ ldr r0, [r4]
+ cmp r0, #2
+ beq _021E8926
+ mov r0, #2
+ mov r5, #1
+ mov r7, #8
+ str r0, [r4]
+_021E8926:
+ cmp r5, #0
+ beq _021E895C
+ ldr r0, [r6]
+ cmp r0, #0
+ beq _021E8934
+ bl FUN_02016A18
+_021E8934:
+ ldr r0, [sp, #4]
+ ldr r3, [sp, #0x34]
+ ldr r0, [r0]
+ add r1, r7, #0
+ add r2, sp, #0x10
+ bl MOD16_021D8D70
+ str r0, [r6]
+ ldr r2, [sp, #0x10]
+ ldr r1, [sp, #0x2c]
+ ldr r2, [r2, #0xc]
+ mov r0, #0x1f
+ lsl r1, r1, #5
+ mov r3, #0x20
+ bl FUN_0201C2C8
+ cmp r0, #0
+ bne _021E895C
+ bl ErrorHandling
+_021E895C:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E88B4
+
+ thumb_func_start MOD16_021E8960
+MOD16_021E8960: ; 0x021E8960
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r4, [sp, #0x10]
+ str r4, [sp]
+ bl MOD16_021D7C70
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD16_021E8960
+
+ thumb_func_start MOD16_021E8970
+MOD16_021E8970: ; 0x021E8970
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #8]
+ mov r6, #1
+ str r6, [r1, #0x1c]
+ ldr r3, [r4]
+ add r5, r2, #0
+ ldr r2, [r3]
+ mov r1, #4
+ orr r1, r2
+ str r1, [r3]
+ mov r1, #0
+ str r1, [r0, #0x10]
+ mov r1, #2
+ ldr r0, [r4, #8]
+ cmp r5, #5
+ str r1, [r0, #0x14]
+ bhi _021E89D0
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E89A0: ; jump table
+ .short _021E89AC - _021E89A0 - 2 ; case 0
+ .short _021E89BE - _021E89A0 - 2 ; case 1
+ .short _021E89BE - _021E89A0 - 2 ; case 2
+ .short _021E89BE - _021E89A0 - 2 ; case 3
+ .short _021E89BE - _021E89A0 - 2 ; case 4
+ .short _021E89BE - _021E89A0 - 2 ; case 5
+_021E89AC:
+ ldr r0, [r4, #8]
+ mov r1, #0x30
+ str r1, [r0, #8]
+ ldr r0, [r4, #8]
+ mov r1, #0x48
+ str r1, [r0, #0xc]
+ ldr r0, [r4, #8]
+ str r6, [r0, #0x14]
+ pop {r4, r5, r6, pc}
+_021E89BE:
+ ldr r0, [r4, #0x10]
+ mov r1, #0x30
+ mov r2, #0x48
+ bl MOD16_021E6EE8
+ ldr r0, [r4, #0x10]
+ add r1, r6, #0
+ bl MOD16_021E6EF0
+_021E89D0:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E8970
+
+ thumb_func_start MOD16_021E89D4
+MOD16_021E89D4: ; 0x021E89D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r3, #0
+ add r4, r1, #0
+ str r2, [sp]
+ cmp r5, #5
+ bhi _021E8A36
+ add r1, r5, r5
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E89EC: ; jump table
+ .short _021E89F8 - _021E89EC - 2 ; case 0
+ .short _021E8A12 - _021E89EC - 2 ; case 1
+ .short _021E8A12 - _021E89EC - 2 ; case 2
+ .short _021E8A12 - _021E89EC - 2 ; case 3
+ .short _021E8A12 - _021E89EC - 2 ; case 4
+ .short _021E8A12 - _021E89EC - 2 ; case 5
+_021E89F8:
+ ldr r3, [r4]
+ mov r1, #4
+ ldr r2, [r3]
+ mov r7, #0x30
+ orr r1, r2
+ str r1, [r3]
+ mov r1, #0
+ str r1, [r0, #0x10]
+ ldr r0, [r4, #8]
+ mov r1, #2
+ mov r6, #0x48
+ str r1, [r0, #0x14]
+ b _021E8A36
+_021E8A12:
+ ldr r2, [r4]
+ mov r1, #2
+ ldr r3, [r2]
+ mov r7, #0x30
+ orr r3, r1
+ str r3, [r2]
+ str r5, [r0, #0x10]
+ ldr r0, [r4, #0x10]
+ mov r6, #0x48
+ bl MOD16_021E6EF0
+ sub r0, r5, #1
+ bl MOD16_021DBBB4
+ add r1, r0, #0
+ ldr r0, [r4, #0x10]
+ bl MOD16_021E6F0C
+_021E8A36:
+ ldr r0, [sp]
+ cmp r0, #5
+ bhi _021E8A76
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E8A48: ; jump table
+ .short _021E8A54 - _021E8A48 - 2 ; case 0
+ .short _021E8A64 - _021E8A48 - 2 ; case 1
+ .short _021E8A64 - _021E8A48 - 2 ; case 2
+ .short _021E8A64 - _021E8A48 - 2 ; case 3
+ .short _021E8A64 - _021E8A48 - 2 ; case 4
+ .short _021E8A64 - _021E8A48 - 2 ; case 5
+_021E8A54:
+ ldr r0, [r4, #8]
+ mov r1, #2
+ str r7, [r0, #8]
+ ldr r0, [r4, #8]
+ str r6, [r0, #0xc]
+ ldr r0, [r4, #8]
+ str r1, [r0, #0x14]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E8A64:
+ ldr r0, [r4, #0x10]
+ add r1, r7, #0
+ add r2, r6, #0
+ bl MOD16_021E6EE8
+ ldr r0, [r4, #0x10]
+ mov r1, #2
+ bl MOD16_021E6EF0
+_021E8A76:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E89D4
+
+ thumb_func_start MOD16_021E8A78
+MOD16_021E8A78: ; 0x021E8A78
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x34]
+ add r4, r1, #0
+ cmp r0, #8
+ beq _021E8AB6
+ cmp r0, #1
+ ldr r0, [r4, #4]
+ bne _021E8A94
+ mov r1, #0
+ mvn r1, r1
+ bl MOD16_021D9D48
+ b _021E8A9A
+_021E8A94:
+ mov r1, #1
+ bl MOD16_021D9D48
+_021E8A9A:
+ cmp r0, #1
+ bne _021E8AB6
+ ldr r2, [r5, #0x10]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E8970
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E8B7C
+ ldr r0, _021E8AB8 ; =0x0000068B
+ bl FUN_020054C8
+_021E8AB6:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021E8AB8: .word 0x0000068B
+ thumb_func_end MOD16_021E8A78
+
+ thumb_func_start MOD16_021E8ABC
+MOD16_021E8ABC: ; 0x021E8ABC
+ ldr r1, _021E8AE0 ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #0x40
+ tst r1, r2
+ beq _021E8ACC
+ mov r1, #1
+ str r1, [r0, #0x34]
+ bx lr
+_021E8ACC:
+ mov r1, #0x80
+ tst r1, r2
+ beq _021E8AD8
+ mov r1, #0
+ str r1, [r0, #0x34]
+ bx lr
+_021E8AD8:
+ mov r1, #8
+ str r1, [r0, #0x34]
+ bx lr
+ nop
+_021E8AE0: .word 0x021C48B8
+ thumb_func_end MOD16_021E8ABC
+
+ thumb_func_start MOD16_021E8AE4
+MOD16_021E8AE4: ; 0x021E8AE4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ tst r0, r1
+ ldr r0, [r5, #8]
+ bne _021E8AFC
+ mov r1, #0
+ bl FUN_020200A0
+ b _021E8B00
+_021E8AFC:
+ bl FUN_020200A0
+_021E8B00:
+ ldr r1, [r4, #0x38]
+ mov r0, #2
+ tst r0, r1
+ ldr r0, [r5, #0xc]
+ bne _021E8B12
+ mov r1, #0
+ bl FUN_020200A0
+ b _021E8B18
+_021E8B12:
+ mov r1, #1
+ bl FUN_020200A0
+_021E8B18:
+ ldr r1, [r4, #0x38]
+ mov r0, #4
+ tst r0, r1
+ ldr r0, [r5, #0x10]
+ bne _021E8B2A
+ mov r1, #0
+ bl FUN_020200A0
+ b _021E8B30
+_021E8B2A:
+ mov r1, #1
+ bl FUN_020200A0
+_021E8B30:
+ ldr r1, [r4, #0x38]
+ mov r0, #8
+ tst r0, r1
+ ldr r0, [r5, #0x14]
+ bne _021E8B42
+ mov r1, #0
+ bl FUN_020200A0
+ b _021E8B48
+_021E8B42:
+ mov r1, #1
+ bl FUN_020200A0
+_021E8B48:
+ ldr r1, [r4, #0x38]
+ mov r0, #0x10
+ tst r0, r1
+ ldr r0, [r5, #0x18]
+ bne _021E8B5A
+ mov r1, #0
+ bl FUN_020200A0
+ b _021E8B60
+_021E8B5A:
+ mov r1, #1
+ bl FUN_020200A0
+_021E8B60:
+ ldr r1, [r4, #0x38]
+ mov r0, #0x20
+ tst r0, r1
+ ldr r0, [r5, #0x1c]
+ bne _021E8B72
+ mov r1, #0
+ bl FUN_020200A0
+ pop {r3, r4, r5, pc}
+_021E8B72:
+ mov r1, #1
+ bl FUN_020200A0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E8AE4
+
+ thumb_func_start MOD16_021E8B7C
+MOD16_021E8B7C: ; 0x021E8B7C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r5, #0
+ add r4, r0, #0
+ add r6, r1, #0
+ str r5, [r0, #0x38]
+ add r4, #0x38
+ mov r7, #1
+_021E8B8A:
+ add r0, r5, #0
+ bl MOD16_021DBBB4
+ add r1, r0, #0
+ ldr r0, [r6, #4]
+ bl MOD16_021D9F58
+ cmp r0, #0
+ beq _021E8BB0
+ ldr r1, [r4]
+ mov r0, #1
+ add r2, r1, #0
+ orr r2, r0
+ add r0, r5, #1
+ add r1, r7, #0
+ lsl r1, r0
+ add r0, r2, #0
+ orr r0, r1
+ str r0, [r4]
+_021E8BB0:
+ add r5, r5, #1
+ cmp r5, #6
+ blt _021E8B8A
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E8B7C
+
+ thumb_func_start MOD16_021E8BB8
+MOD16_021E8BB8: ; 0x021E8BB8
+ push {r4, r5, r6, lr}
+ add r4, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ cmp r4, #2
+ blt _021E8BC8
+ cmp r4, #8
+ blt _021E8BCC
+_021E8BC8:
+ bl ErrorHandling
+_021E8BCC:
+ sub r0, r4, #2
+ lsl r1, r0, #2
+ ldr r0, _021E8BEC ; =0x021FF5F4
+ cmp r6, #1
+ ldr r1, [r0, r1]
+ bne _021E8BE2
+ add r0, r5, #0
+ add r1, r1, #1
+ bl FUN_02020130
+ pop {r4, r5, r6, pc}
+_021E8BE2:
+ add r0, r5, #0
+ bl FUN_02020130
+ pop {r4, r5, r6, pc}
+ nop
+_021E8BEC: .word 0x021FF5F4
+ thumb_func_end MOD16_021E8BB8
+
+ thumb_func_start MOD16_021E8BF0
+MOD16_021E8BF0: ; 0x021E8BF0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r2, [sp]
+ add r0, r2, #0
+ add r4, r1, #0
+ bl MOD16_021E8C70
+ add r6, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021E8CF4
+ add r7, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021E8D1C
+ str r6, [r5]
+ str r7, [r5, #4]
+ str r0, [r5, #0x20]
+ bl MOD16_021E8E34
+ str r0, [r5, #0x24]
+ ldr r0, _021E8C38 ; =MOD16_021E8E38
+ str r0, [r5, #8]
+ ldr r0, _021E8C3C ; =MOD16_021E8E40
+ str r0, [r5, #0xc]
+ ldr r0, _021E8C40 ; =MOD16_021E8E70
+ str r0, [r5, #0x10]
+ ldr r0, _021E8C44 ; =MOD16_021E8E78
+ str r0, [r5, #0x14]
+ ldr r0, _021E8C48 ; =MOD16_021E8F24
+ str r0, [r5, #0x18]
+ ldr r0, _021E8C4C ; =MOD16_021E8F4C
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E8C38: .word MOD16_021E8E38
+_021E8C3C: .word MOD16_021E8E40
+_021E8C40: .word MOD16_021E8E70
+_021E8C44: .word MOD16_021E8E78
+_021E8C48: .word MOD16_021E8F24
+_021E8C4C: .word MOD16_021E8F4C
+ thumb_func_end MOD16_021E8BF0
+
+ thumb_func_start MOD16_021E8C50
+MOD16_021E8C50: ; 0x021E8C50
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021E8DBC
+ ldr r0, [r4, #4]
+ bl MOD16_021E8DD0
+ ldr r0, [r4, #0x20]
+ bl MOD16_021E8DE4
+ pop {r4, pc}
+ thumb_func_end MOD16_021E8C50
+
+ thumb_func_start MOD16_021E8C68
+MOD16_021E8C68: ; 0x021E8C68
+ ldr r0, [r0]
+ ldr r0, [r0, #0x28]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E8C68
+
+ thumb_func_start MOD16_021E8C70
+MOD16_021E8C70: ; 0x021E8C70
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x34
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E8C82
+ bl ErrorHandling
+_021E8C82:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x34
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl MOD16_021D7B00
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD16_021D7B5C
+ ldr r0, [r0]
+ mov r1, #3
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x14]
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x18]
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x1c]
+ add r0, r5, #0
+ mov r1, #7
+ bl MOD16_021D7B5C
+ str r0, [r4, #0x20]
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD16_021D7B7C
+ str r0, [r4, #0x24]
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD16_021D7B5C
+ ldr r0, [r0]
+ str r0, [r4, #0xc]
+ mov r0, #1
+ str r0, [r4, #0x2c]
+ str r0, [r4, #0x30]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E8C70
+
+ thumb_func_start MOD16_021E8CF4
+MOD16_021E8CF4: ; 0x021E8CF4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E8D06
+ bl ErrorHandling
+_021E8D06:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E8CF4
+
+ thumb_func_start MOD16_021E8D1C
+MOD16_021E8D1C: ; 0x021E8D1C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ bl MOD16_021E8E34
+ add r7, r0, #0
+ mov r1, #0x14
+ mul r7, r1
+ add r0, r5, #0
+ add r1, r7, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E8D3C
+ bl ErrorHandling
+_021E8D3C:
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r7, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ mov r3, #2
+ bl MOD16_021DAE0C
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x14
+ add r2, r6, #0
+ mov r3, #4
+ bl MOD16_021DB0B0
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x28
+ add r2, r6, #0
+ mov r3, #8
+ bl MOD16_021DAED4
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x3c
+ add r2, r6, #0
+ mov r3, #0x10
+ bl MOD16_021DAF38
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x50
+ add r2, r6, #0
+ mov r3, #0x20
+ bl MOD16_021DAF9C
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x64
+ add r2, r6, #0
+ mov r3, #0x40
+ bl MOD16_021DB000
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x78
+ add r2, r6, #0
+ mov r3, #0x80
+ bl MOD16_021DB058
+ add r1, r4, #0
+ mov r3, #1
+ add r0, r5, #0
+ add r1, #0x8c
+ add r2, r6, #0
+ lsl r3, r3, #8
+ bl MOD16_021DB16C
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E8D1C
+
+ thumb_func_start MOD16_021E8DBC
+MOD16_021E8DBC: ; 0x021E8DBC
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E8DC6
+ bl ErrorHandling
+_021E8DC6:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E8DBC
+
+ thumb_func_start MOD16_021E8DD0
+MOD16_021E8DD0: ; 0x021E8DD0
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E8DDA
+ bl ErrorHandling
+_021E8DDA:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E8DD0
+
+ thumb_func_start MOD16_021E8DE4
+MOD16_021E8DE4: ; 0x021E8DE4
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E8DEE
+ bl ErrorHandling
+_021E8DEE:
+ add r0, r4, #0
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x28
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x3c
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x50
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x64
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x78
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x8c
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD16_021E8DE4
+
+ thumb_func_start MOD16_021E8E34
+MOD16_021E8E34: ; 0x021E8E34
+ mov r0, #8
+ bx lr
+ thumb_func_end MOD16_021E8E34
+
+ thumb_func_start MOD16_021E8E38
+MOD16_021E8E38: ; 0x021E8E38
+ ldr r1, [r1, #0x10]
+ mov r0, #1
+ str r0, [r1, #0x1c]
+ bx lr
+ thumb_func_end MOD16_021E8E38
+
+ thumb_func_start MOD16_021E8E40
+MOD16_021E8E40: ; 0x021E8E40
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #1
+ bne _021E8E4E
+ mov r0, #1
+ pop {r4, pc}
+_021E8E4E:
+ ldr r0, [r4, #0x10]
+ cmp r0, #1
+ bne _021E8E58
+ mov r0, #0
+ pop {r4, pc}
+_021E8E58:
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _021E8E6A
+ add r0, r1, #0
+ bl MOD16_021E9534
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+_021E8E6A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E8E40
+
+ thumb_func_start MOD16_021E8E70
+MOD16_021E8E70: ; 0x021E8E70
+ mov r0, #0
+ str r0, [r1, #8]
+ mov r0, #1
+ bx lr
+ thumb_func_end MOD16_021E8E70
+
+ thumb_func_start MOD16_021E8E78
+MOD16_021E8E78: ; 0x021E8E78
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ add r7, r2, #0
+ ldr r6, [r4, #8]
+ cmp r1, #3
+ bhi _021E8F1A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E8E96: ; jump table
+ .short _021E8E9E - _021E8E96 - 2 ; case 0
+ .short _021E8EBE - _021E8E96 - 2 ; case 1
+ .short _021E8EF6 - _021E8E96 - 2 ; case 2
+ .short _021E8F0E - _021E8E96 - 2 ; case 3
+_021E8E9E:
+ ldr r0, [r4, #4]
+ mov r1, #0x28
+ bl FUN_02016998
+ str r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0x28
+ bl Call_FillMemWithValue
+ ldr r1, [r7, #8]
+ ldr r0, [r4, #8]
+ str r1, [r0]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E8F1E
+_021E8EBE:
+ ldr r3, [r4, #4]
+ add r1, r6, #0
+ bl MOD16_021E9294
+ add r0, r6, #0
+ bl MOD16_021E9DE0
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2f
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #4
+ add r2, r1, #0
+ sub r2, #0x14
+ bl MOD16_021D8988
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E8F1E
+_021E8EF6:
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ cmp r0, #0
+ beq _021E8F1E
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E8F1E
+_021E8F0E:
+ add r0, r6, #0
+ bl MOD16_021E9DFC
+ add sp, #0x14
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021E8F1A:
+ bl ErrorHandling
+_021E8F1E:
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E8E78
+
+ thumb_func_start MOD16_021E8F24
+MOD16_021E8F24: ; 0x021E8F24
+ push {r3, r4, r5, lr}
+ ldr r4, [r1, #8]
+ add r5, r2, #0
+ ldr r1, [r5, #8]
+ ldr r0, [r4]
+ cmp r0, r1
+ beq _021E8F46
+ add r0, r4, #0
+ bl MOD16_021E9530
+ ldr r1, [r5, #8]
+ ldr r2, [r4]
+ add r0, r4, #0
+ bl MOD16_021EA1B4
+ ldr r0, [r5, #8]
+ str r0, [r4]
+_021E8F46:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E8F24
+
+ thumb_func_start MOD16_021E8F4C
+MOD16_021E8F4C: ; 0x021E8F4C
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ ldr r3, [r4]
+ add r5, r0, #0
+ ldr r1, [r4, #8]
+ cmp r3, #4
+ bhi _021E9008
+ add r3, r3, r3
+ add r3, pc
+ ldrh r3, [r3, #6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_021E8F68: ; jump table
+ .short _021E8F72 - _021E8F68 - 2 ; case 0
+ .short _021E8FCC - _021E8F68 - 2 ; case 1
+ .short _021E8FE4 - _021E8F68 - 2 ; case 2
+ .short _021E8FF0 - _021E8F68 - 2 ; case 3
+ .short _021E9002 - _021E8F68 - 2 ; case 4
+_021E8F72:
+ ldr r0, [r2, #0x2c]
+ cmp r0, #0
+ beq _021E8FA2
+ add r0, r1, #0
+ bl MOD16_021E9DE0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2f
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #4
+ add r3, r1, #0
+ sub r3, #0x14
+ bl MOD16_021D8988
+ b _021E8FC4
+_021E8FA2:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x3f
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #4
+ add r3, r1, #0
+ sub r3, #0x14
+ bl MOD16_021D8988
+_021E8FC4:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E900C
+_021E8FCC:
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ cmp r0, #0
+ beq _021E900C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E900C
+_021E8FE4:
+ bl MOD16_021E92D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E900C
+_021E8FF0:
+ add r0, r1, #0
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E900C
+_021E9002:
+ add sp, #0x14
+ mov r0, #1
+ pop {r4, r5, pc}
+_021E9008:
+ bl ErrorHandling
+_021E900C:
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E8F4C
+
+ thumb_func_start MOD16_021E9014
+MOD16_021E9014: ; 0x021E9014
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD16_021E9024
+ mov r0, #1
+ str r0, [r4, #0x30]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E9014
+
+ thumb_func_start MOD16_021E9024
+MOD16_021E9024: ; 0x021E9024
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, [r4]
+ mov r0, #2
+ ldr r1, [r2]
+ orr r0, r1
+ str r0, [r2]
+ mov r1, #0
+ str r1, [r4, #0x28]
+ ldr r0, [r4, #0x10]
+ str r1, [r0, #0x14]
+ ldr r0, [r4, #0x18]
+ bl MOD16_021E6EF0
+ ldr r0, [r4, #8]
+ cmp r0, #4
+ bhi _021E90D2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E9052: ; jump table
+ .short _021E905C - _021E9052 - 2 ; case 0
+ .short _021E9078 - _021E9052 - 2 ; case 1
+ .short _021E909C - _021E9052 - 2 ; case 2
+ .short _021E90C0 - _021E9052 - 2 ; case 3
+ .short _021E90CA - _021E9052 - 2 ; case 4
+_021E905C:
+ ldr r0, [r4, #0x10]
+ mov r1, #0x38
+ str r1, [r0, #8]
+ ldr r0, [r4, #0x10]
+ mov r2, #0x50
+ str r2, [r0, #0xc]
+ ldr r0, [r4, #0x18]
+ bl MOD16_021E6EE8
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ str r1, [r0, #0x14]
+ str r1, [r4, #0x2c]
+ pop {r4, pc}
+_021E9078:
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl MOD16_021E2F54
+ ldr r0, [r4, #0x1c]
+ mov r1, #4
+ bl MOD16_021E2F5C
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x38
+ mov r2, #0x50
+ bl MOD16_021E2F4C
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ str r1, [r0, #0x14]
+ str r1, [r4, #0x2c]
+ pop {r4, pc}
+_021E909C:
+ ldr r0, [r4, #0x20]
+ mov r1, #1
+ bl MOD16_021EA264
+ ldr r0, [r4, #0x20]
+ mov r1, #4
+ bl MOD16_021EA26C
+ ldr r0, [r4, #0x20]
+ mov r1, #0x38
+ mov r2, #0x50
+ bl MOD16_021EA25C
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ str r1, [r0, #0x14]
+ str r1, [r4, #0x2c]
+ pop {r4, pc}
+_021E90C0:
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ str r1, [r0, #0x14]
+ str r1, [r4, #0x2c]
+ pop {r4, pc}
+_021E90CA:
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ str r1, [r0, #0x14]
+ str r1, [r4, #0x2c]
+_021E90D2:
+ pop {r4, pc}
+ thumb_func_end MOD16_021E9024
+
+ thumb_func_start MOD16_021E90D4
+MOD16_021E90D4: ; 0x021E90D4
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021E90D4
+
+ thumb_func_start MOD16_021E90D8
+MOD16_021E90D8: ; 0x021E90D8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #1
+ add r7, r1, #0
+ str r2, [sp]
+ str r0, [sp, #4]
+ cmp r7, #4
+ bhi _021E91D6
+ add r0, r7, r7
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E90F6: ; jump table
+ .short _021E9100 - _021E90F6 - 2 ; case 0
+ .short _021E9128 - _021E90F6 - 2 ; case 1
+ .short _021E915E - _021E90F6 - 2 ; case 2
+ .short _021E9194 - _021E90F6 - 2 ; case 3
+ .short _021E91B4 - _021E90F6 - 2 ; case 4
+_021E9100:
+ add r0, r2, #0
+ bl MOD16_021E90D4
+ cmp r0, #0
+ beq _021E910E
+ mov r1, #2
+ b _021E9110
+_021E910E:
+ mov r1, #1
+_021E9110:
+ ldr r0, [r4, #0x10]
+ mov r6, #0x30
+ str r1, [r0, #0x14]
+ ldr r2, [r4]
+ mov r0, #4
+ ldr r1, [r2]
+ mov r5, #0x48
+ orr r0, r1
+ str r0, [r2]
+ mov r0, #0
+ str r0, [r4, #8]
+ b _021E91DA
+_021E9128:
+ add r0, r2, #0
+ bl MOD16_021E90D4
+ cmp r0, #0
+ ldr r0, [r4, #0x1c]
+ beq _021E9144
+ mov r1, #1
+ bl MOD16_021E2F54
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl MOD16_021E2F5C
+ b _021E914A
+_021E9144:
+ mov r1, #0
+ bl MOD16_021E2F54
+_021E914A:
+ ldr r2, [r4]
+ mov r0, #8
+ ldr r1, [r2]
+ mov r6, #0x28
+ orr r0, r1
+ str r0, [r2]
+ mov r0, #1
+ str r0, [r4, #8]
+ mov r5, #0x78
+ b _021E91DA
+_021E915E:
+ add r0, r2, #0
+ bl MOD16_021E90D4
+ cmp r0, #0
+ ldr r0, [r4, #0x20]
+ beq _021E917A
+ mov r1, #1
+ bl MOD16_021EA264
+ ldr r0, [r4, #0x20]
+ mov r1, #1
+ bl MOD16_021EA26C
+ b _021E9180
+_021E917A:
+ mov r1, #0
+ bl MOD16_021EA264
+_021E9180:
+ ldr r2, [r4]
+ mov r0, #0x10
+ ldr r1, [r2]
+ mov r6, #0x30
+ orr r0, r1
+ str r0, [r2]
+ mov r0, #2
+ str r0, [r4, #8]
+ mov r5, #0x40
+ b _021E91DA
+_021E9194:
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DF8
+ cmp r0, #2
+ bne _021E91AE
+ ldr r2, [r4]
+ mov r0, #0x20
+ ldr r1, [r2]
+ orr r0, r1
+ str r0, [r2]
+ mov r0, #3
+ str r0, [r4, #8]
+ b _021E91DA
+_021E91AE:
+ mov r0, #0
+ str r0, [sp, #4]
+ b _021E91DA
+_021E91B4:
+ ldr r0, [r4, #4]
+ bl MOD16_021D9F80
+ cmp r0, #1
+ bne _021E91D0
+ ldr r2, [r4]
+ mov r0, #1
+ ldr r1, [r2]
+ lsl r0, r0, #8
+ orr r0, r1
+ str r0, [r2]
+ mov r0, #4
+ str r0, [r4, #8]
+ b _021E91DA
+_021E91D0:
+ mov r0, #0
+ str r0, [sp, #4]
+ b _021E91DA
+_021E91D6:
+ bl ErrorHandling
+_021E91DA:
+ ldr r0, [sp]
+ cmp r0, #4
+ bhi _021E928A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E91EC: ; jump table
+ .short _021E91F6 - _021E91EC - 2 ; case 0
+ .short _021E922E - _021E91EC - 2 ; case 1
+ .short _021E925C - _021E91EC - 2 ; case 2
+ .short _021E928E - _021E91EC - 2 ; case 3
+ .short _021E928E - _021E91EC - 2 ; case 4
+_021E91F6:
+ add r0, r7, #0
+ bl MOD16_021E90D4
+ cmp r0, #0
+ beq _021E920E
+ ldr r0, [r4, #0x10]
+ mov r1, #2
+ str r1, [r0, #0x14]
+ ldr r0, [r4, #0x18]
+ bl MOD16_021E6EF0
+ b _021E921A
+_021E920E:
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ str r1, [r0, #0x14]
+ ldr r0, [r4, #0x18]
+ bl MOD16_021E6EF0
+_021E921A:
+ ldr r0, [r4, #0x10]
+ add r1, r6, #0
+ str r6, [r0, #8]
+ ldr r0, [r4, #0x10]
+ add r2, r5, #0
+ str r5, [r0, #0xc]
+ ldr r0, [r4, #0x18]
+ bl MOD16_021E6EE8
+ b _021E928E
+_021E922E:
+ add r0, r7, #0
+ bl MOD16_021E90D4
+ cmp r0, #0
+ ldr r0, [r4, #0x1c]
+ beq _021E924A
+ mov r1, #1
+ bl MOD16_021E2F54
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl MOD16_021E2F5C
+ b _021E9250
+_021E924A:
+ mov r1, #0
+ bl MOD16_021E2F54
+_021E9250:
+ ldr r0, [r4, #0x1c]
+ add r1, r6, #0
+ add r2, r5, #0
+ bl MOD16_021E2F4C
+ b _021E928E
+_021E925C:
+ add r0, r7, #0
+ bl MOD16_021E90D4
+ cmp r0, #0
+ ldr r0, [r4, #0x20]
+ beq _021E9278
+ mov r1, #1
+ bl MOD16_021EA264
+ ldr r0, [r4, #0x20]
+ mov r1, #1
+ bl MOD16_021EA26C
+ b _021E927E
+_021E9278:
+ mov r1, #0
+ bl MOD16_021EA264
+_021E927E:
+ ldr r0, [r4, #0x20]
+ add r1, r6, #0
+ add r2, r5, #0
+ bl MOD16_021EA25C
+ b _021E928E
+_021E928A:
+ bl ErrorHandling
+_021E928E:
+ ldr r0, [sp, #4]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E90D8
+
+ thumb_func_start MOD16_021E9294
+MOD16_021E9294: ; 0x021E9294
+ push {r4, r5, r6, lr}
+ add r4, r3, #0
+ add r5, r1, #0
+ add r1, r2, #0
+ add r6, r0, #0
+ add r2, r4, #0
+ bl MOD16_021E92F8
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD16_021E938C
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD16_021E947C
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD16_021E9484
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD16_021EA1B4
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E9294
+
+ thumb_func_start MOD16_021E92D0
+MOD16_021E92D0: ; 0x021E92D0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD16_021E9480
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E9438
+ add r0, r4, #0
+ bl MOD16_021E9518
+ ldr r0, [r5]
+ mov r1, #2
+ ldr r0, [r0]
+ bl FUN_02018744
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E92D0
+
+ thumb_func_start MOD16_021E92F8
+MOD16_021E92F8: ; 0x021E92F8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r2, #0
+ mov r2, #0
+ str r2, [sp]
+ add r5, r0, #0
+ str r4, [sp, #4]
+ add r6, r1, #0
+ ldr r0, [r5]
+ mov r1, #6
+ add r3, r2, #0
+ bl MOD16_021D8CFC
+ ldr r0, [r6, #4]
+ bl MOD16_021D9D04
+ cmp r0, #1
+ bne _021E932E
+ mov r0, #0x20
+ str r0, [sp]
+ str r4, [sp, #4]
+ mov r2, #0
+ ldr r0, [r5]
+ mov r1, #0x18
+ add r3, r2, #0
+ bl MOD16_021D8CFC
+_021E932E:
+ ldr r0, [r5]
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r4, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x21
+ mov r3, #2
+ bl MOD16_021D8CB4
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x39
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r4, r0, #0
+ ldrh r0, [r2]
+ mov r1, #2
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r5]
+ mov r1, #2
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021E92F8
+
+ thumb_func_start MOD16_021E938C
+MOD16_021E938C: ; 0x021E938C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r6, [r0]
+ add r5, r1, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021E9428 ; =0x00000827
+ mov r3, #1
+ str r0, [sp]
+ str r3, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ add r1, r7, #0
+ mov r2, #0x57
+ bl FUN_020091E0
+ str r0, [r5, #0x18]
+ bl FUN_02009B04
+ ldr r0, [r5, #0x18]
+ bl FUN_02009474
+ ldr r0, _021E942C ; =0x000007DC
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0xc
+ mov r3, #0
+ bl FUN_02009298
+ str r0, [r5, #0x1c]
+ bl FUN_02009D68
+ ldr r0, [r5, #0x1c]
+ bl FUN_02009474
+ ldr r0, _021E9430 ; =0x00000825
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x55
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x20]
+ ldr r0, _021E9434 ; =0x00000826
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x56
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x24]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E9428: .word 0x00000827
+_021E942C: .word 0x000007DC
+_021E9430: .word 0x00000825
+_021E9434: .word 0x00000826
+ thumb_func_end MOD16_021E938C
+
+ thumb_func_start MOD16_021E9438
+MOD16_021E9438: ; 0x021E9438
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r0]
+ ldr r0, [r5, #0x18]
+ bl FUN_02009C0C
+ ldr r0, [r5, #0x1c]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x18]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x1c]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x20]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x24]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E9438
+
+ thumb_func_start MOD16_021E947C
+MOD16_021E947C: ; 0x021E947C
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E947C
+
+ thumb_func_start MOD16_021E9480
+MOD16_021E9480: ; 0x021E9480
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E9480
+
+ thumb_func_start MOD16_021E9484
+MOD16_021E9484: ; 0x021E9484
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ ldr r7, [r0]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r7, r0]
+ add r5, r1, #0
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x1c]
+ mov r1, #0
+ add r4, r2, #0
+ bl FUN_02009E54
+ mov r1, #0x10
+ str r1, [sp, #0x1c]
+ mov r1, #0
+ str r1, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ str r1, [sp, #0x18]
+ mov r1, #1
+ str r0, [sp, #0x14]
+ str r1, [sp, #0x2c]
+ str r4, [sp, #0x30]
+ bl FUN_0201E28C
+ str r0, [sp, #8]
+ mov r6, #0
+_021E94BC:
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r7, r0]
+ mov r1, #8
+ mov r2, #2
+ bl MOD16_021DB388
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r3, r6, #0
+ ldr r0, [r7, r0]
+ ldr r2, _021E9514 ; =0x00000266
+ add r1, r4, #0
+ add r3, #0x65
+ bl MOD16_021DB3C8
+ str r4, [sp, #0x10]
+ add r0, sp, #0xc
+ bl MOD16_021DB2BC
+ str r0, [r5, #4]
+ ldr r0, [r0]
+ ldr r1, [sp, #8]
+ bl FUN_02011A60
+ ldr r0, [r5, #4]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_020119D0
+ add r0, r4, #0
+ bl MOD16_021DB3BC
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #5
+ blt _021E94BC
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E9514: .word 0x00000266
+ thumb_func_end MOD16_021E9484
+
+ thumb_func_start MOD16_021E9518
+MOD16_021E9518: ; 0x021E9518
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021E951E:
+ ldr r0, [r5, #4]
+ bl MOD16_021DB338
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _021E951E
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E9518
+
+ thumb_func_start MOD16_021E9530
+MOD16_021E9530: ; 0x021E9530
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E9530
+
+ thumb_func_start MOD16_021E9534
+MOD16_021E9534: ; 0x021E9534
+ mov r1, #1
+ str r1, [r0, #0x28]
+ ldr r0, [r0, #0x10]
+ str r1, [r0, #0x14]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E9534
+
+ thumb_func_start MOD16_021E9540
+MOD16_021E9540: ; 0x021E9540
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r2, [sp]
+ add r0, r2, #0
+ add r4, r1, #0
+ bl MOD16_021E95D0
+ add r6, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021E960C
+ add r7, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021E9634
+ str r6, [r5]
+ str r7, [r5, #4]
+ str r0, [r5, #0x20]
+ bl MOD16_021E9664
+ str r0, [r5, #0x24]
+ ldr r0, _021E9588 ; =MOD16_021E9668
+ str r0, [r5, #8]
+ ldr r0, _021E958C ; =MOD16_021E96B8
+ str r0, [r5, #0xc]
+ ldr r0, _021E9590 ; =MOD16_021E972C
+ str r0, [r5, #0x10]
+ ldr r0, _021E9594 ; =MOD16_021E974C
+ str r0, [r5, #0x14]
+ ldr r0, _021E9598 ; =MOD16_021E97DC
+ str r0, [r5, #0x18]
+ ldr r0, _021E959C ; =MOD16_021E9810
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021E9588: .word MOD16_021E9668
+_021E958C: .word MOD16_021E96B8
+_021E9590: .word MOD16_021E972C
+_021E9594: .word MOD16_021E974C
+_021E9598: .word MOD16_021E97DC
+_021E959C: .word MOD16_021E9810
+ thumb_func_end MOD16_021E9540
+
+ thumb_func_start MOD16_021E95A0
+MOD16_021E95A0: ; 0x021E95A0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021E9638
+ ldr r0, [r4, #4]
+ bl MOD16_021E964C
+ ldr r0, [r4, #0x20]
+ bl MOD16_021E9660
+ pop {r4, pc}
+ thumb_func_end MOD16_021E95A0
+
+ thumb_func_start MOD16_021E95B8
+MOD16_021E95B8: ; 0x021E95B8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E95B8
+
+ thumb_func_start MOD16_021E95C0
+MOD16_021E95C0: ; 0x021E95C0
+ ldr r0, [r0]
+ ldr r0, [r0, #0x28]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E95C0
+
+ thumb_func_start MOD16_021E95C8
+MOD16_021E95C8: ; 0x021E95C8
+ ldr r0, [r0]
+ ldr r0, [r0, #0x30]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E95C8
+
+ thumb_func_start MOD16_021E95D0
+MOD16_021E95D0: ; 0x021E95D0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x34
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E95E2
+ bl ErrorHandling
+_021E95E2:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x34
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl MOD16_021D7B14
+ str r0, [r4]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD16_021D7B5C
+ ldr r0, [r0]
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #8]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E95D0
+
+ thumb_func_start MOD16_021E960C
+MOD16_021E960C: ; 0x021E960C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021E961E
+ bl ErrorHandling
+_021E961E:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E960C
+
+ thumb_func_start MOD16_021E9634
+MOD16_021E9634: ; 0x021E9634
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021E9634
+
+ thumb_func_start MOD16_021E9638
+MOD16_021E9638: ; 0x021E9638
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E9642
+ bl ErrorHandling
+_021E9642:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E9638
+
+ thumb_func_start MOD16_021E964C
+MOD16_021E964C: ; 0x021E964C
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021E9656
+ bl ErrorHandling
+_021E9656:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E964C
+
+ thumb_func_start MOD16_021E9660
+MOD16_021E9660: ; 0x021E9660
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E9660
+
+ thumb_func_start MOD16_021E9664
+MOD16_021E9664: ; 0x021E9664
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021E9664
+
+ thumb_func_start MOD16_021E9668
+MOD16_021E9668: ; 0x021E9668
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r4, r1, #0
+ mov r1, #0x1c
+ bl FUN_02016998
+ add r6, r0, #0
+ add r2, r6, #0
+ mov r1, #0x1c
+ mov r0, #0
+_021E967E:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021E967E
+ ldr r2, [r5, #4]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD16_021E9894
+ ldr r2, [r5, #4]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD16_021E9E6C
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD16_021EA08C
+ mov r1, #0
+ mov r0, #4
+_021E96A6:
+ add r1, r1, #1
+ str r0, [r4, #0xc]
+ add r4, r4, #4
+ cmp r1, #6
+ blt _021E96A6
+ str r6, [r5, #8]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E9668
+
+ thumb_func_start MOD16_021E96B8
+MOD16_021E96B8: ; 0x021E96B8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r0, #0xc]
+ ldr r4, [r0, #8]
+ cmp r1, #1
+ bne _021E96CC
+ mov r0, #0
+ str r0, [r5, #0x24]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E96CC:
+ ldr r1, [r0, #0x10]
+ cmp r1, #1
+ bne _021E96D6
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021E96D6:
+ ldr r1, [r0]
+ cmp r1, #0
+ bne _021E96F0
+ mov r3, #1
+ str r3, [r5, #0x24]
+ ldr r1, [r5, #4]
+ mov r2, #0
+ str r2, [r1, #0x30]
+ str r3, [r5, #0x28]
+ ldr r1, [r0]
+ add r1, r1, #1
+ str r1, [r0]
+ b _021E9728
+_021E96F0:
+ mov r0, #1
+ str r0, [r5, #0x28]
+ add r0, r5, #0
+ bl MOD16_021E9E2C
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021EA0EC
+ add r0, r5, #0
+ bl MOD16_021E9930
+ ldr r0, [r5, #8]
+ bl MOD16_021D9FB8
+ cmp r0, #1
+ bne _021E9720
+ ldr r0, [r5, #0x30]
+ cmp r0, #0
+ bne _021E9720
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021E9F48
+_021E9720:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021E9940
+_021E9728:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E96B8
+
+ thumb_func_start MOD16_021E972C
+MOD16_021E972C: ; 0x021E972C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r5, [r4, #8]
+ add r0, r5, #0
+ bl MOD16_021E99C0
+ add r0, r5, #0
+ bl MOD16_021EA074
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E972C
+
+ thumb_func_start MOD16_021E974C
+MOD16_021E974C: ; 0x021E974C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ add r7, r2, #0
+ ldr r6, [r3, #8]
+ ldr r0, [r4, #8]
+ cmp r1, #4
+ bhi _021E97D8
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E976A: ; jump table
+ .short _021E9774 - _021E976A - 2 ; case 0
+ .short _021E978E - _021E976A - 2 ; case 1
+ .short _021E979E - _021E976A - 2 ; case 2
+ .short _021E97C2 - _021E976A - 2 ; case 3
+ .short _021E97D4 - _021E976A - 2 ; case 4
+_021E9774:
+ ldr r0, [r4, #4]
+ mov r1, #0x28
+ bl FUN_02016998
+ str r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0x28
+ bl Call_FillMemWithValue
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E97D8
+_021E978E:
+ ldr r3, [r4, #4]
+ add r1, r5, #0
+ bl MOD16_021E9B00
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E97D8
+_021E979E:
+ mov r1, #0
+ mov r0, #2
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #4
+ sub r2, #0x10
+ mov r3, #0x3f
+ bl FUN_0200A208
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD16_021EA120
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E97D8
+_021E97C2:
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021E97D8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E97D8
+_021E97D4:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021E97D8:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E974C
+
+ thumb_func_start MOD16_021E97DC
+MOD16_021E97DC: ; 0x021E97DC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp]
+ ldr r0, [r3, #8]
+ add r7, r2, #0
+ ldr r5, [r1, #8]
+ str r0, [sp, #4]
+ mov r6, #0
+ add r4, r7, #0
+_021E97EE:
+ ldr r0, [r5]
+ ldr r1, [r4, #0xc]
+ bl MOD16_021D7B98
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #6
+ blt _021E97EE
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ add r2, r7, #0
+ bl MOD16_021EA13C
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E97DC
+
+ thumb_func_start MOD16_021E9810
+MOD16_021E9810: ; 0x021E9810
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ ldr r0, [r4, #8]
+ cmp r1, #4
+ bhi _021E9890
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E982A: ; jump table
+ .short _021E9834 - _021E982A - 2 ; case 0
+ .short _021E984E - _021E982A - 2 ; case 1
+ .short _021E9860 - _021E982A - 2 ; case 2
+ .short _021E987C - _021E982A - 2 ; case 3
+ .short _021E988C - _021E982A - 2 ; case 4
+_021E9834:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ add r1, r0, #0
+ sub r1, #0x14
+ mov r2, #0
+ mov r3, #0x3f
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E9890
+_021E984E:
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021E9890
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E9890
+_021E9860:
+ add r1, r5, #0
+ bl MOD16_021E9B3C
+ mov r0, #0x79
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #0
+ bl MOD16_021D8B14
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E9890
+_021E987C:
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021E9890
+_021E988C:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E9890:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E9810
+
+ thumb_func_start MOD16_021E9894
+MOD16_021E9894: ; 0x021E9894
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r2, #0
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, r6, #0
+ mov r1, #0x18
+ bl FUN_02016998
+ str r0, [r5, #4]
+ mov r0, #0x30
+ str r0, [sp]
+ mov r1, #8
+ ldr r0, [r5, #4]
+ mov r2, #0x28
+ add r3, r1, #0
+ bl MOD16_021D7C98
+ mov r0, #0xf8
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #8
+ add r0, #0x14
+ mov r2, #0x28
+ mov r3, #0xd0
+ bl MOD16_021D7C98
+ mov r0, #0x58
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #8
+ add r0, r0, #4
+ mov r2, #0x28
+ mov r3, #0x30
+ bl MOD16_021D7C98
+ mov r0, #0x80
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #8
+ add r0, #8
+ mov r2, #0x28
+ mov r3, #0x58
+ bl MOD16_021D7C98
+ mov r0, #0xa8
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #8
+ add r0, #0xc
+ mov r2, #0x28
+ mov r3, #0x80
+ bl MOD16_021D7C98
+ mov r0, #0xd0
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #8
+ add r0, #0x10
+ mov r2, #0x28
+ mov r3, #0xa8
+ bl MOD16_021D7C98
+ str r4, [r5, #8]
+ str r5, [r5, #0xc]
+ str r6, [sp]
+ add r3, r5, #0
+ ldr r0, [r5, #4]
+ ldr r2, _021E992C ; =MOD16_021E99D8
+ mov r1, #6
+ add r3, #8
+ bl FUN_020220C4
+ str r0, [r5]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021E992C: .word MOD16_021E99D8
+ thumb_func_end MOD16_021E9894
+
+ thumb_func_start MOD16_021E9930
+MOD16_021E9930: ; 0x021E9930
+ mov r2, #0
+ mov r1, #3
+_021E9934:
+ add r2, r2, #1
+ str r1, [r0, #0xc]
+ add r0, r0, #4
+ cmp r2, #6
+ blt _021E9934
+ bx lr
+ thumb_func_end MOD16_021E9930
+
+ thumb_func_start MOD16_021E9940
+MOD16_021E9940: ; 0x021E9940
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0x2c]
+ cmp r1, #0
+ bne _021E9950
+ ldr r0, [r0]
+ bl FUN_02022144
+_021E9950:
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _021E9960
+ ldr r0, [r4, #0x20]
+ cmp r0, #2
+ beq _021E9960
+ mov r0, #1
+ str r0, [r4, #0x20]
+_021E9960:
+ ldr r0, [r4, #4]
+ ldr r0, [r0, #8]
+ cmp r0, #4
+ bhi _021E99BA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E9974: ; jump table
+ .short _021E997E - _021E9974 - 2 ; case 0
+ .short _021E998A - _021E9974 - 2 ; case 1
+ .short _021E9996 - _021E9974 - 2 ; case 2
+ .short _021E99A2 - _021E9974 - 2 ; case 3
+ .short _021E99AE - _021E9974 - 2 ; case 4
+_021E997E:
+ ldr r0, [r4, #0xc]
+ cmp r0, #2
+ beq _021E99BE
+ mov r0, #1
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+_021E998A:
+ ldr r0, [r4, #0x10]
+ cmp r0, #2
+ beq _021E99BE
+ mov r0, #1
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+_021E9996:
+ ldr r0, [r4, #0x14]
+ cmp r0, #2
+ beq _021E99BE
+ mov r0, #1
+ str r0, [r4, #0x14]
+ pop {r4, pc}
+_021E99A2:
+ ldr r0, [r4, #0x18]
+ cmp r0, #2
+ beq _021E99BE
+ mov r0, #1
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+_021E99AE:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #2
+ beq _021E99BE
+ mov r0, #1
+ str r0, [r4, #0x1c]
+ pop {r4, pc}
+_021E99BA:
+ bl ErrorHandling
+_021E99BE:
+ pop {r4, pc}
+ thumb_func_end MOD16_021E9940
+
+ thumb_func_start MOD16_021E99C0
+MOD16_021E99C0: ; 0x021E99C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0202212C
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E99C0
+
+ thumb_func_start MOD16_021E99D8
+MOD16_021E99D8: ; 0x021E99D8
+ push {r4, r5, r6, lr}
+ ldr r6, [r2]
+ ldr r5, [r2, #4]
+ lsl r2, r0, #2
+ add r2, r6, r2
+ ldr r4, [r6, #4]
+ cmp r1, #0
+ str r1, [r2, #0xc]
+ beq _021E99F0
+ cmp r1, #2
+ beq _021E99F6
+ pop {r4, r5, r6, pc}
+_021E99F0:
+ mov r0, #0
+ str r0, [r5, #0x10]
+ pop {r4, r5, r6, pc}
+_021E99F6:
+ cmp r0, #5
+ bhi _021E9AF6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E9A06: ; jump table
+ .short _021E9A20 - _021E9A06 - 2 ; case 0
+ .short _021E9A3E - _021E9A06 - 2 ; case 1
+ .short _021E9A5C - _021E9A06 - 2 ; case 2
+ .short _021E9A7A - _021E9A06 - 2 ; case 3
+ .short _021E9AB4 - _021E9A06 - 2 ; case 4
+ .short _021E9A12 - _021E9A06 - 2 ; case 5
+_021E9A12:
+ add r0, r4, #0
+ bl MOD16_021E9014
+ ldr r0, _021E9AF8 ; =0x000005DD
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021E9A20:
+ ldr r2, [r4, #8]
+ cmp r2, #0
+ beq _021E9AF6
+ add r0, r6, #0
+ mov r1, #0
+ bl MOD16_021E9E18
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021EA08C
+ ldr r0, _021E9AFC ; =0x0000068B
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021E9A3E:
+ ldr r2, [r4, #8]
+ cmp r2, #1
+ beq _021E9AF6
+ add r0, r6, #0
+ mov r1, #1
+ bl MOD16_021E9E18
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021EA08C
+ ldr r0, _021E9AFC ; =0x0000068B
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021E9A5C:
+ ldr r2, [r4, #8]
+ cmp r2, #2
+ beq _021E9AF6
+ add r0, r6, #0
+ mov r1, #2
+ bl MOD16_021E9E18
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021EA08C
+ ldr r0, _021E9AFC ; =0x0000068B
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021E9A7A:
+ ldr r2, [r4, #8]
+ cmp r2, #3
+ beq _021E9AF6
+ add r0, r6, #0
+ mov r1, #3
+ bl MOD16_021E9E18
+ cmp r0, #0
+ beq _021E9A9C
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021EA08C
+ ldr r0, _021E9AFC ; =0x0000068B
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021E9A9C:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0
+ bne _021E9AF6
+ ldr r0, [r4, #8]
+ cmp r0, #2
+ beq _021E9AAE
+ ldr r0, _021E9AF8 ; =0x000005DD
+ bl FUN_020054C8
+_021E9AAE:
+ mov r0, #1
+ str r0, [r5, #0x10]
+ pop {r4, r5, r6, pc}
+_021E9AB4:
+ ldr r2, [r4, #8]
+ cmp r2, #4
+ beq _021E9AF6
+ add r0, r6, #0
+ mov r1, #4
+ bl MOD16_021E9E18
+ cmp r0, #0
+ beq _021E9AD6
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021EA08C
+ ldr r0, _021E9AFC ; =0x0000068B
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021E9AD6:
+ ldr r0, [r5, #0x10]
+ cmp r0, #0
+ bne _021E9AF6
+ ldr r0, [r4, #4]
+ bl MOD16_021D9F80
+ cmp r0, #1
+ bne _021E9AF2
+ ldr r0, [r4, #8]
+ cmp r0, #2
+ beq _021E9AF2
+ ldr r0, _021E9AF8 ; =0x000005DD
+ bl FUN_020054C8
+_021E9AF2:
+ mov r0, #0
+ str r0, [r5, #0x10]
+_021E9AF6:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021E9AF8: .word 0x000005DD
+_021E9AFC: .word 0x0000068B
+ thumb_func_end MOD16_021E99D8
+
+ thumb_func_start MOD16_021E9B00
+MOD16_021E9B00: ; 0x021E9B00
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD16_021E9B60
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl MOD16_021E9BFC
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl MOD16_021E9CF0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl MOD16_021E9DD8
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021EA1D8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021E9B00
+
+ thumb_func_start MOD16_021E9B3C
+MOD16_021E9B3C: ; 0x021E9B3C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021E9DDC
+ add r0, r5, #0
+ bl MOD16_021E9DC0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021E9CAC
+ ldr r0, [r4]
+ mov r1, #5
+ ldr r0, [r0]
+ bl FUN_02018744
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E9B3C
+
+ thumb_func_start MOD16_021E9B60
+MOD16_021E9B60: ; 0x021E9B60
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r6, r1, #0
+ add r5, r0, #0
+ ldr r0, [r6, #4]
+ add r4, r2, #0
+ ldr r0, [r0, #0x30]
+ cmp r0, #0
+ beq _021E9B9E
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ ldr r0, [r5]
+ mov r1, #6
+ mov r2, #4
+ bl MOD16_021D8CFC
+ ldr r0, [r6, #8]
+ bl MOD16_021D9D04
+ cmp r0, #1
+ bne _021E9B9E
+ mov r0, #0x20
+ str r0, [sp]
+ str r4, [sp, #4]
+ ldr r0, [r5]
+ mov r1, #0x18
+ mov r2, #4
+ mov r3, #0
+ bl MOD16_021D8CFC
+_021E9B9E:
+ ldr r0, [r5]
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r4, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x22
+ mov r3, #5
+ bl MOD16_021D8CB4
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x3b
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r4, r0, #0
+ ldrh r0, [r2]
+ mov r1, #5
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r5]
+ mov r1, #5
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021E9B60
+
+ thumb_func_start MOD16_021E9BFC
+MOD16_021E9BFC: ; 0x021E9BFC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021E9C9C ; =0x00000894
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ mov r2, #0x60
+ mov r3, #1
+ bl FUN_020091E0
+ str r0, [r5, #0x18]
+ bl FUN_02009B04
+ ldr r0, [r5, #0x18]
+ bl FUN_02009474
+ ldr r0, _021E9CA0 ; =0x0000083F
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0xb
+ mov r3, #0
+ bl FUN_02009298
+ str r0, [r5, #0x1c]
+ bl FUN_02009D68
+ ldr r0, [r5, #0x1c]
+ bl FUN_02009474
+ ldr r0, _021E9CA4 ; =0x00000892
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x5e
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x20]
+ ldr r0, _021E9CA8 ; =0x00000893
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x5f
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x24]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E9C9C: .word 0x00000894
+_021E9CA0: .word 0x0000083F
+_021E9CA4: .word 0x00000892
+_021E9CA8: .word 0x00000893
+ thumb_func_end MOD16_021E9BFC
+
+ thumb_func_start MOD16_021E9CAC
+MOD16_021E9CAC: ; 0x021E9CAC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ ldr r0, [r5, #0x1c]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x18]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x1c]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x20]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x24]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021E9CAC
+
+ thumb_func_start MOD16_021E9CF0
+MOD16_021E9CF0: ; 0x021E9CF0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x70
+ ldr r4, [r1]
+ ldr r3, _021E9DBC ; =0x00000893
+ add r5, r0, #0
+ mov r0, #0
+ add r6, r2, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ mov r0, #5
+ str r2, [sp, #0x10]
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ str r1, [sp, #0x14]
+ add r1, r0, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #0x18]
+ add r1, r0, #0
+ add r1, #8
+ ldr r1, [r4, r1]
+ add r0, #0xc
+ str r1, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r1, r3, #1
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r2, r3, #0
+ add r0, sp, #0x4c
+ sub r2, #0x54
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r7, #7
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #0x20
+ str r0, [sp, #0x40]
+ mov r0, #2
+ str r0, [sp, #0x44]
+ mov r0, #0x36
+ str r6, [sp, #0x48]
+ lsl r0, r0, #0xe
+ mov r6, #0x39
+ str r0, [sp, #0x38]
+ mov r4, #0
+ lsl r7, r7, #0xe
+ lsl r6, r6, #0xe
+_021E9D60:
+ cmp r4, #5
+ bhi _021E9DA2
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E9D70: ; jump table
+ .short _021E9D80 - _021E9D70 - 2 ; case 0
+ .short _021E9D84 - _021E9D70 - 2 ; case 1
+ .short _021E9D8C - _021E9D70 - 2 ; case 2
+ .short _021E9D94 - _021E9D70 - 2 ; case 3
+ .short _021E9D9C - _021E9D70 - 2 ; case 4
+ .short _021E9D7C - _021E9D70 - 2 ; case 5
+_021E9D7C:
+ str r6, [sp, #0x34]
+ b _021E9DA2
+_021E9D80:
+ str r7, [sp, #0x34]
+ b _021E9DA2
+_021E9D84:
+ mov r0, #0x11
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ b _021E9DA2
+_021E9D8C:
+ mov r0, #0x1b
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ b _021E9DA2
+_021E9D94:
+ mov r0, #0x25
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ b _021E9DA2
+_021E9D9C:
+ mov r0, #0x2f
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+_021E9DA2:
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ add r1, r4, #0
+ stmia r5!, {r0}
+ bl FUN_02020130
+ add r4, r4, #1
+ cmp r4, #6
+ blt _021E9D60
+ add sp, #0x70
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E9DBC: .word 0x00000893
+ thumb_func_end MOD16_021E9CF0
+
+ thumb_func_start MOD16_021E9DC0
+MOD16_021E9DC0: ; 0x021E9DC0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021E9DC6:
+ ldr r0, [r5]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _021E9DC6
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021E9DC0
+
+ thumb_func_start MOD16_021E9DD8
+MOD16_021E9DD8: ; 0x021E9DD8
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E9DD8
+
+ thumb_func_start MOD16_021E9DDC
+MOD16_021E9DDC: ; 0x021E9DDC
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E9DDC
+
+ thumb_func_start MOD16_021E9DE0
+MOD16_021E9DE0: ; 0x021E9DE0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r4, #0
+ mov r6, #1
+_021E9DE8:
+ ldr r0, [r5, #4]
+ add r1, r6, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _021E9DE8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E9DE0
+
+ thumb_func_start MOD16_021E9DFC
+MOD16_021E9DFC: ; 0x021E9DFC
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_021E9E04:
+ ldr r0, [r5, #4]
+ add r1, r6, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _021E9E04
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E9DFC
+
+ thumb_func_start MOD16_021E9E18
+MOD16_021E9E18: ; 0x021E9E18
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021E90D8
+ cmp r0, #1
+ bne _021E9E2A
+ mov r1, #0
+ str r1, [r4, #0x28]
+_021E9E2A:
+ pop {r4, pc}
+ thumb_func_end MOD16_021E9E18
+
+ thumb_func_start MOD16_021E9E2C
+MOD16_021E9E2C: ; 0x021E9E2C
+ ldr r3, _021E9E30 ; =MOD16_021E9E34
+ bx r3
+ .align 2, 0
+_021E9E30: .word MOD16_021E9E34
+ thumb_func_end MOD16_021E9E2C
+
+ thumb_func_start MOD16_021E9E34
+MOD16_021E9E34: ; 0x021E9E34
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r4, [r5, #4]
+ bl MOD16_021E9E64
+ ldr r0, _021E9E5C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #2
+ tst r0, r1
+ beq _021E9E58
+ add r0, r4, #0
+ bl MOD16_021E9014
+ mov r0, #1
+ str r0, [r5, #0x2c]
+ ldr r0, _021E9E60 ; =0x000005DD
+ bl FUN_020054C8
+_021E9E58:
+ pop {r3, r4, r5, pc}
+ nop
+_021E9E5C: .word 0x021C48B8
+_021E9E60: .word 0x000005DD
+ thumb_func_end MOD16_021E9E34
+
+ thumb_func_start MOD16_021E9E64
+MOD16_021E9E64: ; 0x021E9E64
+ mov r1, #0
+ str r1, [r0, #0x2c]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021E9E64
+
+ thumb_func_start MOD16_021E9E6C
+MOD16_021E9E6C: ; 0x021E9E6C
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r6, r2, #0
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, r6, #0
+ mov r1, #0xa8
+ bl FUN_02016998
+ str r0, [r5, #0x18]
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r2, #0x18
+ ldr r0, [r5, #0x18]
+ mov r1, #0x1c
+ add r3, r2, #0
+ bl MOD16_021DB590
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ mov r2, #0x18
+ add r0, #0x1c
+ mov r1, #0x44
+ add r3, r2, #0
+ bl MOD16_021DB590
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ mov r2, #0x18
+ add r0, #0x38
+ mov r1, #0x6c
+ add r3, r2, #0
+ bl MOD16_021DB590
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #3
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ mov r2, #0x18
+ add r0, #0x54
+ mov r1, #0x94
+ add r3, r2, #0
+ bl MOD16_021DB590
+ ldr r0, [r4, #8]
+ bl MOD16_021D9F80
+ cmp r0, #1
+ bne _021E9EFA
+ mov r1, #0
+ b _021E9EFC
+_021E9EFA:
+ mov r1, #2
+_021E9EFC:
+ mov r0, #0x10
+ str r0, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ mov r2, #0x18
+ add r0, #0x70
+ mov r1, #0xbc
+ add r3, r2, #0
+ bl MOD16_021DB590
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #5
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ mov r2, #0x18
+ add r0, #0x8c
+ mov r1, #0xe4
+ add r3, r2, #0
+ bl MOD16_021DB590
+ add r0, r6, #0
+ bl MOD16_021DB490
+ str r0, [r5, #0x14]
+ ldr r1, [r5, #0x18]
+ mov r2, #6
+ mov r3, #1
+ bl MOD16_021DB4B0
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021E9E6C
+
+ thumb_func_start MOD16_021E9F48
+MOD16_021E9F48: ; 0x021E9F48
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4, #0x2c]
+ ldr r5, [r4, #4]
+ cmp r0, #0
+ beq _021E9F58
+ b _021EA066
+_021E9F58:
+ ldr r0, _021EA068 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x10
+ tst r0, r1
+ beq _021E9F6C
+ ldr r0, [r6, #0x14]
+ mov r1, #0
+ mov r2, #1
+ bl MOD16_021DB4CC
+_021E9F6C:
+ ldr r0, _021EA068 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x20
+ tst r0, r1
+ beq _021E9F80
+ mov r1, #0
+ ldr r0, [r6, #0x14]
+ sub r2, r1, #1
+ bl MOD16_021DB4CC
+_021E9F80:
+ ldr r0, _021EA068 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _021EA066
+ ldr r0, [r6, #0x14]
+ bl MOD16_021DB528
+ cmp r0, #5
+ bhi _021EA066
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E9FA0: ; jump table
+ .short _021E9FAC - _021E9FA0 - 2 ; case 0
+ .short _021E9FC6 - _021E9FA0 - 2 ; case 1
+ .short _021E9FE0 - _021E9FA0 - 2 ; case 2
+ .short _021E9FFA - _021E9FA0 - 2 ; case 3
+ .short _021EA026 - _021E9FA0 - 2 ; case 4
+ .short _021EA052 - _021E9FA0 - 2 ; case 5
+_021E9FAC:
+ ldr r2, [r5, #8]
+ cmp r2, #0
+ beq _021EA066
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD16_021E9E18
+ mov r0, #2
+ str r0, [r4, #0xc]
+ ldr r0, _021EA06C ; =0x0000068B
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021E9FC6:
+ ldr r2, [r5, #8]
+ cmp r2, #1
+ beq _021EA066
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021E9E18
+ mov r0, #2
+ str r0, [r4, #0x10]
+ ldr r0, _021EA06C ; =0x0000068B
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021E9FE0:
+ ldr r2, [r5, #8]
+ cmp r2, #2
+ beq _021EA066
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD16_021E9E18
+ mov r0, #2
+ str r0, [r4, #0x14]
+ ldr r0, _021EA06C ; =0x0000068B
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021E9FFA:
+ ldr r2, [r5, #8]
+ cmp r2, #3
+ beq _021EA066
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD16_021E9E18
+ cmp r0, #0
+ beq _021EA018
+ mov r0, #2
+ str r0, [r4, #0x18]
+ ldr r0, _021EA06C ; =0x0000068B
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021EA018:
+ ldr r0, [r5, #8]
+ cmp r0, #2
+ beq _021EA066
+ ldr r0, _021EA070 ; =0x000005DD
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021EA026:
+ ldr r2, [r5, #8]
+ cmp r2, #4
+ beq _021EA066
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD16_021E9E18
+ cmp r0, #0
+ beq _021EA044
+ mov r0, #2
+ str r0, [r4, #0x1c]
+ ldr r0, _021EA06C ; =0x0000068B
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021EA044:
+ ldr r0, [r5, #8]
+ cmp r0, #2
+ beq _021EA066
+ ldr r0, _021EA070 ; =0x000005DD
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_021EA052:
+ add r0, r5, #0
+ bl MOD16_021E9014
+ mov r0, #1
+ str r0, [r4, #0x2c]
+ mov r0, #2
+ str r0, [r4, #0x20]
+ ldr r0, _021EA070 ; =0x000005DD
+ bl FUN_020054C8
+_021EA066:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021EA068: .word 0x021C48B8
+_021EA06C: .word 0x0000068B
+_021EA070: .word 0x000005DD
+ thumb_func_end MOD16_021E9F48
+
+ thumb_func_start MOD16_021EA074
+MOD16_021EA074: ; 0x021EA074
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x14]
+ bl MOD16_021DB4A8
+ mov r0, #0
+ str r0, [r4, #0x14]
+ str r0, [r4, #0x18]
+ pop {r4, pc}
+ thumb_func_end MOD16_021EA074
+
+ thumb_func_start MOD16_021EA08C
+MOD16_021EA08C: ; 0x021EA08C
+ push {r3, lr}
+ ldr r3, [r1, #4]
+ mov r2, #0
+ str r2, [r1, #0x30]
+ ldr r1, [r3, #8]
+ cmp r1, #4
+ bhi _021EA0E8
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EA0A6: ; jump table
+ .short _021EA0B0 - _021EA0A6 - 2 ; case 0
+ .short _021EA0BA - _021EA0A6 - 2 ; case 1
+ .short _021EA0C6 - _021EA0A6 - 2 ; case 2
+ .short _021EA0D2 - _021EA0A6 - 2 ; case 3
+ .short _021EA0DE - _021EA0A6 - 2 ; case 4
+_021EA0B0:
+ ldr r0, [r0, #0x14]
+ mov r1, #4
+ bl MOD16_021DB4CC
+ pop {r3, pc}
+_021EA0BA:
+ ldr r0, [r0, #0x14]
+ mov r1, #4
+ mov r2, #1
+ bl MOD16_021DB4CC
+ pop {r3, pc}
+_021EA0C6:
+ ldr r0, [r0, #0x14]
+ mov r1, #4
+ mov r2, #2
+ bl MOD16_021DB4CC
+ pop {r3, pc}
+_021EA0D2:
+ ldr r0, [r0, #0x14]
+ mov r1, #4
+ mov r2, #3
+ bl MOD16_021DB4CC
+ pop {r3, pc}
+_021EA0DE:
+ mov r1, #4
+ ldr r0, [r0, #0x14]
+ add r2, r1, #0
+ bl MOD16_021DB4CC
+_021EA0E8:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EA08C
+
+ thumb_func_start MOD16_021EA0EC
+MOD16_021EA0EC: ; 0x021EA0EC
+ ldr r0, [r1, #4]
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _021EA118
+ ldr r0, [r1, #0x30]
+ cmp r0, #0
+ bne _021EA10A
+ ldr r0, _021EA11C ; =0x021C48B8
+ ldr r2, [r0, #0x48]
+ mov r0, #0x80
+ tst r0, r2
+ beq _021EA118
+ mov r0, #1
+ str r0, [r1, #0x30]
+ bx lr
+_021EA10A:
+ ldr r0, _021EA11C ; =0x021C48B8
+ ldr r2, [r0, #0x48]
+ mov r0, #0x40
+ tst r0, r2
+ beq _021EA118
+ mov r0, #0
+ str r0, [r1, #0x30]
+_021EA118:
+ bx lr
+ nop
+_021EA11C: .word 0x021C48B8
+ thumb_func_end MOD16_021EA0EC
+
+ thumb_func_start MOD16_021EA120
+MOD16_021EA120: ; 0x021EA120
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r0, [r4, #0x14]
+ ldr r1, [r5]
+ add r6, r2, #0
+ bl MOD16_021D8B48
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021EA13C
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021EA120
+
+ thumb_func_start MOD16_021EA13C
+MOD16_021EA13C: ; 0x021EA13C
+ push {r4, r5, r6, lr}
+ add r6, r2, #0
+ add r5, r0, #0
+ ldr r0, [r6, #8]
+ add r4, r1, #0
+ bl MOD16_021D9FB8
+ cmp r0, #1
+ bne _021EA172
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021EA18C
+ ldr r1, [r6, #0x30]
+ cmp r1, #0
+ bne _021EA17A
+ cmp r0, #0
+ beq _021EA168
+ ldr r0, [r4, #0x14]
+ ldr r1, [r5]
+ bl MOD16_021D8B48
+_021EA168:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EA17C
+ pop {r4, r5, r6, pc}
+_021EA172:
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD16_021EA18C
+_021EA17A:
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021EA13C
+
+ thumb_func_start MOD16_021EA17C
+MOD16_021EA17C: ; 0x021EA17C
+ ldr r3, _021EA188 ; =MOD16_021D8AD4
+ add r2, r0, #0
+ ldr r0, [r1, #0x14]
+ ldr r1, [r2]
+ bx r3
+ nop
+_021EA188: .word MOD16_021D8AD4
+ thumb_func_end MOD16_021EA17C
+
+ thumb_func_start MOD16_021EA18C
+MOD16_021EA18C: ; 0x021EA18C
+ push {r3, r4, r5, lr}
+ ldr r4, [r0]
+ mov r0, #0x79
+ lsl r0, r0, #2
+ add r0, r4, r0
+ add r5, r1, #0
+ bl MOD16_021D8B30
+ cmp r5, r0
+ beq _021EA1B0
+ mov r0, #0x79
+ lsl r0, r0, #2
+ add r0, r4, r0
+ add r1, r5, #0
+ bl MOD16_021D8B14
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021EA1B0:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EA18C
+
+ thumb_func_start MOD16_021EA1B4
+MOD16_021EA1B4: ; 0x021EA1B4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r2, #2
+ add r0, r5, r0
+ ldr r0, [r0, #4]
+ add r4, r1, #0
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_020119D0
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, #4]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_020119D0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EA1B4
+
+ thumb_func_start MOD16_021EA1D8
+MOD16_021EA1D8: ; 0x021EA1D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #8]
+ bl MOD16_021D9F80
+ cmp r0, #0
+ bne _021EA1EE
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_020200A0
+_021EA1EE:
+ pop {r4, pc}
+ thumb_func_end MOD16_021EA1D8
+
+ thumb_func_start MOD16_021EA1F0
+MOD16_021EA1F0: ; 0x021EA1F0
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r0, r7, #0
+ bl MOD16_021EA274
+ add r4, r0, #0
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021EA2BC
+ str r4, [r5]
+ str r0, [r5, #4]
+ mov r0, #0
+ str r0, [r5, #0x20]
+ bl MOD16_021EA310
+ str r0, [r5, #0x24]
+ ldr r0, _021EA230 ; =MOD16_021EA314
+ str r0, [r5, #8]
+ ldr r0, _021EA234 ; =MOD16_021EA35C
+ str r0, [r5, #0xc]
+ ldr r0, _021EA238 ; =MOD16_021EA388
+ str r0, [r5, #0x10]
+ ldr r0, _021EA23C ; =MOD16_021EA39C
+ str r0, [r5, #0x14]
+ ldr r0, _021EA240 ; =MOD16_021EA45C
+ str r0, [r5, #0x18]
+ ldr r0, _021EA244 ; =MOD16_021EA47C
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EA230: .word MOD16_021EA314
+_021EA234: .word MOD16_021EA35C
+_021EA238: .word MOD16_021EA388
+_021EA23C: .word MOD16_021EA39C
+_021EA240: .word MOD16_021EA45C
+_021EA244: .word MOD16_021EA47C
+ thumb_func_end MOD16_021EA1F0
+
+ thumb_func_start MOD16_021EA248
+MOD16_021EA248: ; 0x021EA248
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021EA2E8
+ ldr r0, [r4, #4]
+ bl MOD16_021EA2FC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EA248
+
+ thumb_func_start MOD16_021EA25C
+MOD16_021EA25C: ; 0x021EA25C
+ ldr r0, [r0, #4]
+ str r1, [r0, #4]
+ str r2, [r0, #8]
+ bx lr
+ thumb_func_end MOD16_021EA25C
+
+ thumb_func_start MOD16_021EA264
+MOD16_021EA264: ; 0x021EA264
+ ldr r0, [r0, #4]
+ str r1, [r0, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EA264
+
+ thumb_func_start MOD16_021EA26C
+MOD16_021EA26C: ; 0x021EA26C
+ ldr r0, [r0, #4]
+ str r1, [r0, #0x10]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EA26C
+
+ thumb_func_start MOD16_021EA274
+MOD16_021EA274: ; 0x021EA274
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x10
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021EA286
+ bl ErrorHandling
+_021EA286:
+ add r2, r4, #0
+ mov r1, #0x10
+ mov r0, #0
+_021EA28C:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021EA28C
+ add r0, r5, #0
+ bl MOD16_021D7AD8
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD16_021D7B5C
+ str r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD16_021D7B7C
+ str r0, [r4, #0xc]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EA274
+
+ thumb_func_start MOD16_021EA2BC
+MOD16_021EA2BC: ; 0x021EA2BC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x14
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021EA2CE
+ bl ErrorHandling
+_021EA2CE:
+ add r2, r4, #0
+ mov r1, #0x14
+ mov r0, #0
+_021EA2D4:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021EA2D4
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EA2BC
+
+ thumb_func_start MOD16_021EA2E8
+MOD16_021EA2E8: ; 0x021EA2E8
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021EA2F2
+ bl ErrorHandling
+_021EA2F2:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EA2E8
+
+ thumb_func_start MOD16_021EA2FC
+MOD16_021EA2FC: ; 0x021EA2FC
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021EA306
+ bl ErrorHandling
+_021EA306:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EA2FC
+
+ thumb_func_start MOD16_021EA310
+MOD16_021EA310: ; 0x021EA310
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021EA310
+
+ thumb_func_start MOD16_021EA314
+MOD16_021EA314: ; 0x021EA314
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ ldr r0, [r6, #4]
+ bl MOD16_021D9DE8
+ add r7, r0, #0
+ ldr r0, [r5, #4]
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021EA332
+ bl ErrorHandling
+_021EA332:
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021EA338:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021EA338
+ str r4, [r5, #8]
+ add r0, r7, #0
+ bl FUN_02004E98
+ str r0, [r4]
+ bl FUN_02004E8C
+ str r0, [r4, #8]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021EAA8C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EA314
+
+ thumb_func_start MOD16_021EA35C
+MOD16_021EA35C: ; 0x021EA35C
+ push {r3, r4, r5, lr}
+ ldr r2, [r0, #0xc]
+ add r5, r1, #0
+ ldr r4, [r0, #8]
+ cmp r2, #1
+ bne _021EA36C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021EA36C:
+ ldr r0, [r0, #0x10]
+ cmp r0, #1
+ bne _021EA376
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021EA376:
+ add r0, r4, #0
+ bl MOD16_021EAA8C
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021EAE5C
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EA35C
+
+ thumb_func_start MOD16_021EA388
+MOD16_021EA388: ; 0x021EA388
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EA388
+
+ thumb_func_start MOD16_021EA39C
+MOD16_021EA39C: ; 0x021EA39C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r3, [r3, #8]
+ ldr r6, [r4, #8]
+ cmp r0, #3
+ bhi _021EA458
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EA3BA: ; jump table
+ .short _021EA3C2 - _021EA3BA - 2 ; case 0
+ .short _021EA3E0 - _021EA3BA - 2 ; case 1
+ .short _021EA41C - _021EA3BA - 2 ; case 2
+ .short _021EA454 - _021EA3BA - 2 ; case 3
+_021EA3C2:
+ mov r1, #0x33
+ ldr r0, [r4, #4]
+ lsl r1, r1, #4
+ bl FUN_02016998
+ mov r2, #0x33
+ str r0, [r4, #8]
+ mov r1, #0
+ lsl r2, r2, #4
+ bl Call_FillMemWithValue
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EA458
+_021EA3E0:
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ str r0, [sp]
+ add r0, r6, #0
+ bl MOD16_021EA784
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bne _021EA400
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021EA5BC
+ b _021EA40C
+_021EA400:
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021EA680
+_021EA40C:
+ mov r0, #0
+ mov r1, #3
+ bl FUN_020053CC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EA458
+_021EA41C:
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bne _021EA42E
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #1
+ bl MOD16_021EA634
+ b _021EA438
+_021EA42E:
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #1
+ bl MOD16_021EA70C
+_021EA438:
+ cmp r0, #1
+ bne _021EA458
+ bl FUN_02005404
+ cmp r0, #0
+ bne _021EA458
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020047C8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EA458
+_021EA454:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021EA458:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EA39C
+
+ thumb_func_start MOD16_021EA45C
+MOD16_021EA45C: ; 0x021EA45C
+ push {r3, r4, r5, lr}
+ ldr r4, [r3, #8]
+ ldr r5, [r1, #8]
+ add r2, r0, #0
+ add r1, r2, #0
+ add r0, r5, #0
+ add r2, r4, #0
+ bl MOD16_021EAC1C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EAD04
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EA45C
+
+ thumb_func_start MOD16_021EA47C
+MOD16_021EA47C: ; 0x021EA47C
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r3, r0, #0
+ ldr r0, [r4, #8]
+ cmp r1, #4
+ bhi _021EA518
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EA496: ; jump table
+ .short _021EA4A0 - _021EA496 - 2 ; case 0
+ .short _021EA4D2 - _021EA496 - 2 ; case 1
+ .short _021EA4F6 - _021EA496 - 2 ; case 2
+ .short _021EA504 - _021EA496 - 2 ; case 3
+ .short _021EA514 - _021EA496 - 2 ; case 4
+_021EA4A0:
+ ldr r1, [r3, #0xc]
+ cmp r1, #0
+ bne _021EA4B0
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021EA5BC
+ b _021EA4B8
+_021EA4B0:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021EA680
+_021EA4B8:
+ mov r0, #1
+ mov r1, #0
+ bl FUN_020047C8
+ mov r0, #0x7f
+ mov r1, #3
+ mov r2, #0
+ bl FUN_0200538C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EA518
+_021EA4D2:
+ ldr r1, [r3, #0xc]
+ cmp r1, #0
+ bne _021EA4E2
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021EA634
+ b _021EA4EA
+_021EA4E2:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021EA70C
+_021EA4EA:
+ cmp r0, #0
+ beq _021EA518
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EA518
+_021EA4F6:
+ add r1, r3, #0
+ bl MOD16_021EA7D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EA518
+_021EA504:
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EA518
+_021EA514:
+ mov r0, #1
+ pop {r4, pc}
+_021EA518:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD16_021EA47C
+
+ thumb_func_start MOD16_021EA51C
+MOD16_021EA51C: ; 0x021EA51C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ bl MOD16_021D8700
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DE8
+ add r2, r0, #0
+ mov r0, #0x30
+ str r0, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ ldr r1, [r4, #4]
+ mov r3, #2
+ bl MOD16_021D7FB4
+ add r0, r6, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021EA51C
+
+ thumb_func_start MOD16_021EA554
+MOD16_021EA554: ; 0x021EA554
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r6, #1
+_021EA55E:
+ mov r4, #0
+ add r5, r7, #0
+_021EA562:
+ ldr r0, [r5, #0x20]
+ add r1, r6, #0
+ bl FUN_02020398
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #9
+ blt _021EA562
+ ldr r0, [r7, #0x68]
+ mov r1, #1
+ bl FUN_02020398
+ ldr r0, [sp]
+ add r7, #0x54
+ add r0, r0, #1
+ str r0, [sp]
+ cmp r0, #9
+ blt _021EA55E
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EA554
+
+ thumb_func_start MOD16_021EA588
+MOD16_021EA588: ; 0x021EA588
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ add r6, r0, #0
+_021EA592:
+ mov r4, #0
+ add r5, r7, #0
+_021EA596:
+ ldr r0, [r5, #0x20]
+ add r1, r6, #0
+ bl FUN_02020398
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #9
+ blt _021EA596
+ ldr r0, [r7, #0x68]
+ mov r1, #0
+ bl FUN_02020398
+ ldr r0, [sp]
+ add r7, #0x54
+ add r0, r0, #1
+ str r0, [sp]
+ cmp r0, #9
+ blt _021EA592
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EA588
+
+ thumb_func_start MOD16_021EA5BC
+MOD16_021EA5BC: ; 0x021EA5BC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r2, #0
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021EA554
+ ldr r0, [r4, #8]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ beq _021EA622
+ cmp r6, #0
+ beq _021EA5FE
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #3
+ add r2, r1, #0
+ sub r2, #0x13
+ bl MOD16_021D8988
+ b _021EA622
+_021EA5FE:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #3
+ add r3, r1, #0
+ sub r3, #0x13
+ bl MOD16_021D8988
+_021EA622:
+ mov r1, #0x5b
+ ldr r0, [r5]
+ lsl r1, r1, #2
+ add r1, r0, r1
+ bl MOD16_021D8A8C
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EA5BC
+
+ thumb_func_start MOD16_021EA634
+MOD16_021EA634: ; 0x021EA634
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r2, #8]
+ add r5, r1, #0
+ add r4, r3, #0
+ bl MOD16_021E8C68
+ cmp r0, #0
+ ldr r1, [r5]
+ beq _021EA654
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ b _021EA65E
+_021EA654:
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A7C
+_021EA65E:
+ cmp r0, #0
+ beq _021EA670
+ cmp r4, #0
+ beq _021EA66C
+ add r0, r6, #0
+ bl MOD16_021EA588
+_021EA66C:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021EA670:
+ mov r1, #0x5b
+ ldr r0, [r5]
+ lsl r1, r1, #2
+ add r1, r0, r1
+ bl MOD16_021D8A8C
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021EA634
+
+ thumb_func_start MOD16_021EA680
+MOD16_021EA680: ; 0x021EA680
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ add r4, r3, #0
+ bl MOD16_021EA554
+ cmp r4, #0
+ bne _021EA6A8
+ ldr r0, [r5, #8]
+ mov r1, #0x30
+ str r0, [sp]
+ ldr r0, [r5, #0x10]
+ mov r3, #0x40
+ str r0, [sp, #4]
+ ldr r2, [r5, #4]
+ add r0, r7, #0
+ bl MOD16_021D8BD8
+_021EA6A8:
+ ldr r0, [r6, #8]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ beq _021EA706
+ cmp r4, #0
+ beq _021EA6E0
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r2, #0x2f
+ str r2, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r1, [r5, #0x10]
+ sub r2, #0x3f
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD16_021D8988
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021EA6E0:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r3, #0x2f
+ str r3, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r1, [r5, #0x10]
+ sub r3, #0x3f
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD16_021D8988
+_021EA706:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EA680
+
+ thumb_func_start MOD16_021EA70C
+MOD16_021EA70C: ; 0x021EA70C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bne _021EA72C
+ bl MOD16_021D8BF4
+ str r0, [sp]
+ ldr r0, [r4]
+ ldr r1, [r5]
+ ldr r2, [r5, #4]
+ bl MOD16_021D86F4
+ b _021EA730
+_021EA72C:
+ mov r0, #1
+ str r0, [sp]
+_021EA730:
+ ldr r0, [r6, #8]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ ldr r1, [r4]
+ beq _021EA74A
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ str r0, [sp, #4]
+ b _021EA756
+_021EA74A:
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A7C
+ str r0, [sp, #4]
+_021EA756:
+ mov r1, #0
+ add r2, sp, #0
+_021EA75A:
+ ldr r0, [r2]
+ cmp r0, #0
+ beq _021EA768
+ add r1, r1, #1
+ add r2, r2, #4
+ cmp r1, #2
+ blt _021EA75A
+_021EA768:
+ cmp r1, #2
+ bne _021EA77C
+ cmp r7, #1
+ bne _021EA776
+ add r0, r5, #0
+ bl MOD16_021EA588
+_021EA776:
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021EA77C:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EA70C
+
+ thumb_func_start MOD16_021EA784
+MOD16_021EA784: ; 0x021EA784
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r6, [sp, #0x18]
+ add r7, r2, #0
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r7, #0
+ add r2, r6, #0
+ bl MOD16_021EA7F0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021EA89C
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021EA9C0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ add r3, r6, #0
+ bl MOD16_021EAA84
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021EA51C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EACB0
+ add r0, r5, #0
+ bl MOD16_021EACE8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EA784
+
+ thumb_func_start MOD16_021EA7D0
+MOD16_021EA7D0: ; 0x021EA7D0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021EAA88
+ add r0, r5, #0
+ bl MOD16_021EAA5C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EA964
+ add r0, r4, #0
+ bl MOD16_021EA858
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EA7D0
+
+ thumb_func_start MOD16_021EA7F0
+MOD16_021EA7F0: ; 0x021EA7F0
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ add r5, r2, #0
+ str r5, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x21
+ mov r3, #3
+ bl MOD16_021D8CB4
+ str r5, [sp]
+ ldr r0, [r4]
+ mov r1, #0x46
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r5, r0, #0
+ ldrh r0, [r2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r5, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ mov r1, #3
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EA7F0
+
+ thumb_func_start MOD16_021EA858
+MOD16_021EA858: ; 0x021EA858
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r2, #0
+ ldr r0, [r0]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_0201AEE4
+ mov r1, #0
+ mov r0, #1
+ lsl r0, r0, #8
+ str r0, [sp]
+ mov r0, #0xc0
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ add r0, r0, #4
+ add r3, r1, #0
+ bl FUN_020196F4
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02018744
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_0201AB24
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD16_021EA858
+
+ thumb_func_start MOD16_021EA89C
+MOD16_021EA89C: ; 0x021EA89C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021EA954 ; =0x00002B6C
+ mov r3, #1
+ str r0, [sp]
+ str r3, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ add r1, r7, #0
+ mov r2, #0x74
+ bl FUN_020091E0
+ mov r1, #0xc5
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ bl FUN_02009B04
+ mov r0, #0xc5
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009474
+ ldr r0, _021EA958 ; =0x00002B0B
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x13
+ mov r3, #0
+ bl FUN_02009298
+ mov r1, #0xc6
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ bl FUN_02009D68
+ mov r0, #0xc6
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009474
+ ldr r0, _021EA95C ; =0x00002B6D
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x75
+ mov r3, #1
+ bl FUN_02009358
+ mov r1, #0xc7
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, _021EA960 ; =0x00002B6B
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x73
+ mov r3, #1
+ bl FUN_02009358
+ mov r1, #0x32
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021EA954: .word 0x00002B6C
+_021EA958: .word 0x00002B0B
+_021EA95C: .word 0x00002B6D
+_021EA960: .word 0x00002B6B
+ thumb_func_end MOD16_021EA89C
+
+ thumb_func_start MOD16_021EA964
+MOD16_021EA964: ; 0x021EA964
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0xc5
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ mov r0, #0xc6
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009E04
+ mov r0, #5
+ mov r1, #0xc5
+ lsl r0, r0, #6
+ lsl r1, r1, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, r1]
+ bl FUN_02009490
+ mov r0, #0x51
+ mov r1, #0xc6
+ lsl r0, r0, #2
+ lsl r1, r1, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, r1]
+ bl FUN_02009490
+ mov r0, #0x52
+ mov r1, #0xc7
+ lsl r0, r0, #2
+ lsl r1, r1, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, r1]
+ bl FUN_02009490
+ mov r0, #0x53
+ mov r1, #0x32
+ lsl r0, r0, #2
+ lsl r1, r1, #4
+ ldr r0, [r4, r0]
+ ldr r1, [r5, r1]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EA964
+
+ thumb_func_start MOD16_021EA9C0
+MOD16_021EA9C0: ; 0x021EA9C0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x74
+ ldr r4, [r1]
+ ldr r3, _021EAA58 ; =0x00002B6B
+ add r7, r0, #0
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #5
+ str r1, [sp, #0x10]
+ lsl r0, r0, #6
+ add r5, r2, #0
+ ldr r2, [r4, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r2, r3, #0
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x50
+ sub r2, #0x60
+ add r3, r3, #2
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r6, sp, #0x30
+ str r0, [sp, #0x30]
+ add r0, sp, #0x50
+ str r0, [sp, #0x34]
+ mov r0, #0x11
+ str r0, [sp, #0x44]
+ mov r0, #1
+ str r0, [sp, #0x48]
+ mov r0, #0
+ str r5, [sp, #0x4c]
+ str r0, [sp, #0x2c]
+ str r0, [sp, #0x38]
+ str r0, [sp, #0x3c]
+_021EAA2A:
+ mov r4, #0
+ add r5, r7, #0
+_021EAA2E:
+ add r0, r6, #0
+ bl FUN_0201FF84
+ str r0, [r5, #0x20]
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #9
+ blt _021EAA2E
+ add r0, r6, #0
+ bl FUN_0201FF84
+ str r0, [r7, #0x68]
+ ldr r0, [sp, #0x2c]
+ add r7, #0x54
+ add r0, r0, #1
+ str r0, [sp, #0x2c]
+ cmp r0, #9
+ blt _021EAA2A
+ add sp, #0x74
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021EAA58: .word 0x00002B6B
+ thumb_func_end MOD16_021EA9C0
+
+ thumb_func_start MOD16_021EAA5C
+MOD16_021EAA5C: ; 0x021EAA5C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r7, #0
+_021EAA62:
+ mov r4, #0
+ add r5, r6, #0
+_021EAA66:
+ ldr r0, [r5, #0x20]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #9
+ blt _021EAA66
+ ldr r0, [r6, #0x68]
+ bl FUN_0201FFC8
+ add r7, r7, #1
+ add r6, #0x54
+ cmp r7, #9
+ blt _021EAA62
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EAA5C
+
+ thumb_func_start MOD16_021EAA84
+MOD16_021EAA84: ; 0x021EAA84
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EAA84
+
+ thumb_func_start MOD16_021EAA88
+MOD16_021EAA88: ; 0x021EAA88
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EAA88
+
+ thumb_func_start MOD16_021EAA8C
+MOD16_021EAA8C: ; 0x021EAA8C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #0xc]
+ bl MOD16_021EAF10
+ add r2, r0, #0
+ ldr r1, [r4]
+ mov r0, #1
+ bl FUN_02004F28
+ str r0, [r4, #4]
+ pop {r4, pc}
+ thumb_func_end MOD16_021EAA8C
+
+ thumb_func_start MOD16_021EAAA4
+MOD16_021EAAA4: ; 0x021EAAA4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ ldr r0, [sp, #0x44]
+ ldr r7, [sp, #0x3c]
+ str r0, [sp, #0x44]
+ ldr r0, [sp, #0x48]
+ str r1, [sp, #8]
+ str r0, [sp, #0x48]
+ add r0, r2, #0
+ str r3, [sp, #0xc]
+ ldr r5, [sp, #0x40]
+ bl FUN_02004E80
+ str r0, [sp, #0x1c]
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ ldr r3, [sp, #0x44]
+ ldr r0, [r0]
+ sub r3, #0x20
+ lsl r2, r5, #0x10
+ lsl r3, r3, #0x10
+ add r0, r0, #4
+ mov r1, #0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ ldr r1, [sp, #0x38]
+ ldr r0, [sp, #0xc]
+ mov r6, #0
+ sub r0, r1, r0
+ cmp r7, #0
+ ble _021EAB48
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x14]
+ asr r0, r0, #0x1f
+ str r0, [sp, #0x18]
+ lsl r0, r7, #0xc
+ add r4, r6, #0
+ str r0, [sp, #0x10]
+_021EAAFC:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ asr r3, r4, #0x1f
+ add r2, r4, #0
+ bl _ll_mul
+ mov r2, #2
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ ldr r2, _021EAB4C ; =0x00000000
+ adc r1, r2
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ ldr r1, [sp, #0x10]
+ bl FX_Div
+ asr r1, r0, #0xc
+ ldr r0, [sp, #0xc]
+ ldr r2, [sp, #0x1c]
+ add r1, r1, r0
+ ldr r0, [sp, #0x48]
+ ldr r3, [sp, #0x44]
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ ldrb r1, [r2, r1]
+ ldr r0, [r0]
+ add r2, r5, #0
+ add r0, r0, #4
+ bl MOD16_021EAB50
+ mov r0, #1
+ lsl r0, r0, #0xc
+ add r6, r6, #1
+ add r5, r5, #1
+ add r4, r4, r0
+ cmp r6, r7
+ blt _021EAAFC
+_021EAB48:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EAB4C: .word 0x00000000
+ thumb_func_end MOD16_021EAAA4
+
+ thumb_func_start MOD16_021EAB50
+MOD16_021EAB50: ; 0x021EAB50
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ str r0, [sp, #8]
+ add r6, r2, #0
+ add r7, r3, #0
+ ldr r4, [sp, #0x20]
+ cmp r5, #0x7f
+ bls _021EAB64
+ sub r5, #0xff
+_021EAB64:
+ cmp r5, #0
+ beq _021EAB8E
+ lsl r2, r5, #0xc
+ asr r0, r2, #0x1f
+ lsr r1, r2, #0xf
+ lsl r0, r0, #0x11
+ orr r0, r1
+ mov r1, #2
+ lsl r3, r2, #0x11
+ mov r2, #0
+ lsl r1, r1, #0xa
+ add r3, r3, r1
+ adc r0, r2
+ lsl r1, r0, #0x14
+ lsr r0, r3, #0xc
+ orr r0, r1
+ mov r1, #0x7f
+ lsl r1, r1, #0xc
+ bl FX_Div
+ asr r5, r0, #0xc
+_021EAB8E:
+ ldr r1, [r4]
+ add r0, r7, r5
+ add r1, r7, r1
+ cmp r0, r1
+ ble _021EAB9E
+ add r3, r1, #0
+ sub r1, r0, r1
+ b _021EABA2
+_021EAB9E:
+ add r3, r0, #0
+ sub r1, r1, r0
+_021EABA2:
+ mov r0, #1
+ str r0, [sp]
+ add r0, r1, #1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ lsl r2, r6, #0x10
+ lsl r3, r3, #0x10
+ ldr r0, [sp, #8]
+ mov r1, #6
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ str r5, [r4]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EAB50
+
+ thumb_func_start MOD16_021EABC4
+MOD16_021EABC4: ; 0x021EABC4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ ldr r0, [sp, #0x20]
+ add r5, r1, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x24]
+ add r6, r2, #0
+ add r4, r3, #0
+ str r0, [sp, #0x24]
+ sub r0, r6, r5
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ ldr r3, [sp, #0x20]
+ str r0, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ ldr r0, [r7]
+ sub r3, #0x20
+ lsl r2, r4, #0x10
+ lsl r3, r3, #0x10
+ add r0, r0, #4
+ mov r1, #0
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ cmp r5, r6
+ bge _021EAC18
+_021EABFE:
+ ldr r0, [sp, #0x24]
+ ldr r3, [sp, #0x20]
+ str r0, [sp]
+ ldr r0, [r7]
+ mov r1, #0
+ add r0, r0, #4
+ add r2, r4, #0
+ bl MOD16_021EAB50
+ add r5, r5, #1
+ add r4, r4, #1
+ cmp r5, r6
+ blt _021EABFE
+_021EAC18:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EABC4
+
+ thumb_func_start MOD16_021EAC1C
+MOD16_021EAC1C: ; 0x021EAC1C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r3, #0xc9
+ add r5, r0, #0
+ lsl r3, r3, #2
+ ldr r0, [r5, r3]
+ add r4, r1, #0
+ add r0, r0, #4
+ str r0, [r5, r3]
+ ldr r0, [r5, r3]
+ add r6, r2, #0
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x18
+ sub r1, r1, r2
+ mov r0, #0x18
+ ror r1, r0
+ add r1, r2, r1
+ str r1, [r5, r3]
+ ldr r3, [r5, r3]
+ sub r3, #8
+ bpl _021EAC4A
+ add r0, #0xe8
+ add r3, r3, r0
+_021EAC4A:
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r1, [r6, #4]
+ ldr r7, [r5, r0]
+ cmp r7, r1
+ beq _021EAC76
+ str r1, [sp]
+ mov r1, #4
+ str r1, [sp, #4]
+ str r3, [sp, #8]
+ mov r1, #0x97
+ sub r0, r0, #4
+ str r1, [sp, #0xc]
+ add r0, r5, r0
+ str r0, [sp, #0x10]
+ ldr r2, [r6]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r3, r7, #0
+ bl MOD16_021EAAA4
+ b _021EAC8A
+_021EAC76:
+ mov r1, #0x97
+ sub r0, r0, #4
+ str r1, [sp]
+ add r0, r5, r0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #4
+ bl MOD16_021EABC4
+_021EAC8A:
+ ldr r0, [r4]
+ mov r3, #0xc9
+ lsl r3, r3, #2
+ ldr r0, [r0]
+ ldr r3, [r5, r3]
+ mov r1, #1
+ mov r2, #0
+ bl FUN_0201AEE4
+ ldr r0, [r4]
+ add r0, r0, #4
+ bl FUN_02019220
+ mov r0, #0xcb
+ ldr r1, [r6, #4]
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EAC1C
+
+ thumb_func_start MOD16_021EACB0
+MOD16_021EACB0: ; 0x021EACB0
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ mov r1, #9
+ add r0, r0, #4
+ bl FUN_0201AB24
+ mov r0, #0xca
+ mov r2, #0x97
+ lsl r0, r0, #2
+ str r2, [sp]
+ add r0, r5, r0
+ mov r1, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r2, #0x69
+ add r3, r1, #0
+ bl MOD16_021EABC4
+ ldr r0, [r4]
+ add r0, r0, #4
+ bl FUN_020191D0
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EACB0
+
+ thumb_func_start MOD16_021EACE8
+MOD16_021EACE8: ; 0x021EACE8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+ add r5, #0x20
+_021EACF0:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EAD24
+ add r4, r4, #1
+ add r5, #0x54
+ cmp r4, #9
+ blt _021EACF0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EACE8
+
+ thumb_func_start MOD16_021EAD04
+MOD16_021EAD04: ; 0x021EAD04
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+ add r5, #0x20
+_021EAD0E:
+ add r1, r6, r4
+ ldrb r1, [r1, #0xc]
+ add r0, r5, #0
+ bl MOD16_021EAD88
+ add r4, r4, #1
+ add r5, #0x54
+ cmp r4, #9
+ blt _021EAD0E
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EAD04
+
+ thumb_func_start MOD16_021EAD24
+MOD16_021EAD24: ; 0x021EAD24
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp]
+ lsl r0, r1, #4
+ add r0, #0x70
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #6
+ lsl r0, r0, #0x10
+ mov r6, #2
+ ldr r5, [sp]
+ str r0, [sp, #8]
+ mov r4, #0
+ add r7, sp, #4
+ lsl r6, r6, #0xe
+_021EAD42:
+ ldr r0, [r5]
+ add r1, r7, #0
+ bl FUN_02020044
+ ldr r0, [r5]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [sp, #8]
+ mov r1, #1
+ sub r0, r0, r6
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ bl FUN_02020130
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #9
+ blt _021EAD42
+ mov r0, #6
+ lsl r0, r0, #0x10
+ str r0, [sp, #8]
+ ldr r0, [sp]
+ add r1, sp, #4
+ ldr r0, [r0, #0x48]
+ bl FUN_02020044
+ ldr r0, [sp]
+ mov r1, #0
+ ldr r0, [r0, #0x48]
+ bl FUN_020200A0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EAD24
+
+ thumb_func_start MOD16_021EAD88
+MOD16_021EAD88: ; 0x021EAD88
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ add r7, r1, #0
+ add r6, r0, #0
+ str r4, [sp]
+ cmp r7, #0
+ ble _021EADAC
+ add r5, r6, #0
+_021EAD98:
+ ldr r0, [r5]
+ mov r1, #1
+ bl FUN_020200A0
+ add r4, r4, #1
+ lsl r0, r4, #1
+ str r0, [r5, #4]
+ add r5, #8
+ cmp r4, r7
+ blt _021EAD98
+_021EADAC:
+ mov r5, #0
+ add r4, r6, #0
+ add r7, r5, #0
+_021EADB2:
+ ldr r0, [r4]
+ bl FUN_02020128
+ cmp r0, #0
+ beq _021EADD4
+ ldr r0, [r4, #4]
+ sub r0, r0, #1
+ cmp r0, #0
+ ble _021EADCC
+ str r0, [r4, #4]
+ add r0, r5, #1
+ str r0, [sp]
+ b _021EADD4
+_021EADCC:
+ ldr r0, [r4]
+ add r1, r7, #0
+ bl FUN_020200A0
+_021EADD4:
+ add r5, r5, #1
+ add r4, #8
+ cmp r5, #9
+ blt _021EADB2
+ ldr r1, [r6, #0x4c]
+ ldr r0, [sp]
+ cmp r1, r0
+ bgt _021EAE04
+ ldr r0, [r6, #0x48]
+ ldr r1, [sp]
+ bl MOD16_021EAE2C
+ mov r0, #0x10
+ str r0, [r6, #0x50]
+ ldr r1, [r6, #0x4c]
+ ldr r0, [sp]
+ cmp r1, r0
+ bge _021EAE00
+ ldr r0, [r6, #0x48]
+ mov r1, #1
+ bl FUN_020200A0
+_021EAE00:
+ ldr r0, [sp]
+ str r0, [r6, #0x4c]
+_021EAE04:
+ ldr r1, [r6, #0x4c]
+ cmp r1, #0
+ ble _021EAE22
+ ldr r0, [r6, #0x50]
+ cmp r0, #0
+ bge _021EAE1C
+ sub r1, r1, #1
+ str r1, [r6, #0x4c]
+ ldr r0, [r6, #0x48]
+ bl MOD16_021EAE2C
+ pop {r3, r4, r5, r6, r7, pc}
+_021EAE1C:
+ sub r0, r0, #1
+ str r0, [r6, #0x50]
+ pop {r3, r4, r5, r6, r7, pc}
+_021EAE22:
+ ldr r0, [r6, #0x48]
+ mov r1, #0
+ bl FUN_020200A0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EAD88
+
+ thumb_func_start MOD16_021EAE2C
+MOD16_021EAE2C: ; 0x021EAE2C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r2, #0
+ str r0, [r3]
+ lsl r0, r4, #3
+ neg r0, r0
+ add r0, #0x60
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ add r0, r5, #0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021EAE2C
+
+ thumb_func_start MOD16_021EAE5C
+MOD16_021EAE5C: ; 0x021EAE5C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r1, #0xc]
+ bl MOD16_021EAF10
+ add r4, r0, #0
+ add r1, r5, #0
+ mov r0, #0
+ add r1, #0xc
+ strb r0, [r5, #0xc]
+ strb r0, [r1, #1]
+ strb r0, [r1, #2]
+ strb r0, [r1, #3]
+ strb r0, [r1, #4]
+ strb r0, [r1, #5]
+ strb r0, [r1, #6]
+ strb r0, [r1, #7]
+ strb r0, [r1, #8]
+ bl FUN_02005670
+ cmp r0, #0
+ beq _021EAE96
+ ldr r0, [r5]
+ add r5, #0xc
+ add r1, r5, #0
+ mov r2, #9
+ add r3, r4, #0
+ bl FUN_02004F70
+_021EAE96:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EAE5C
+
+ thumb_func_start MOD16_021EAE98
+MOD16_021EAE98: ; 0x021EAE98
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r2, [sp]
+ add r0, r2, #0
+ add r4, r1, #0
+ bl MOD16_021EAF18
+ add r6, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021EAF58
+ add r7, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021EAF80
+ str r6, [r5]
+ str r7, [r5, #4]
+ str r0, [r5, #0x20]
+ bl MOD16_021EAFB0
+ str r0, [r5, #0x24]
+ ldr r0, _021EAEE0 ; =MOD16_021EAFB4
+ str r0, [r5, #8]
+ ldr r0, _021EAEE4 ; =MOD16_021EAFF4
+ str r0, [r5, #0xc]
+ ldr r0, _021EAEE8 ; =MOD16_021EB078
+ str r0, [r5, #0x10]
+ ldr r0, _021EAEEC ; =MOD16_021EB08C
+ str r0, [r5, #0x14]
+ ldr r0, _021EAEF0 ; =MOD16_021EB114
+ str r0, [r5, #0x18]
+ ldr r0, _021EAEF4 ; =MOD16_021EB16C
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EAEE0: .word MOD16_021EAFB4
+_021EAEE4: .word MOD16_021EAFF4
+_021EAEE8: .word MOD16_021EB078
+_021EAEEC: .word MOD16_021EB08C
+_021EAEF0: .word MOD16_021EB114
+_021EAEF4: .word MOD16_021EB16C
+ thumb_func_end MOD16_021EAE98
+
+ thumb_func_start MOD16_021EAEF8
+MOD16_021EAEF8: ; 0x021EAEF8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021EAF84
+ ldr r0, [r4, #4]
+ bl MOD16_021EAF98
+ ldr r0, [r4, #0x20]
+ bl MOD16_021EAFAC
+ pop {r4, pc}
+ thumb_func_end MOD16_021EAEF8
+
+ thumb_func_start MOD16_021EAF10
+MOD16_021EAF10: ; 0x021EAF10
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EAF10
+
+ thumb_func_start MOD16_021EAF18
+MOD16_021EAF18: ; 0x021EAF18
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x10
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021EAF2A
+ bl ErrorHandling
+_021EAF2A:
+ add r2, r4, #0
+ mov r1, #0x10
+ mov r0, #0
+_021EAF30:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021EAF30
+ add r0, r5, #0
+ bl MOD16_021D7AEC
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD16_021D7B7C
+ str r0, [r4, #8]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EAF18
+
+ thumb_func_start MOD16_021EAF58
+MOD16_021EAF58: ; 0x021EAF58
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021EAF6A
+ bl ErrorHandling
+_021EAF6A:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EAF58
+
+ thumb_func_start MOD16_021EAF80
+MOD16_021EAF80: ; 0x021EAF80
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021EAF80
+
+ thumb_func_start MOD16_021EAF84
+MOD16_021EAF84: ; 0x021EAF84
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021EAF8E
+ bl ErrorHandling
+_021EAF8E:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EAF84
+
+ thumb_func_start MOD16_021EAF98
+MOD16_021EAF98: ; 0x021EAF98
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021EAFA2
+ bl ErrorHandling
+_021EAFA2:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EAF98
+
+ thumb_func_start MOD16_021EAFAC
+MOD16_021EAFAC: ; 0x021EAFAC
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EAFAC
+
+ thumb_func_start MOD16_021EAFB0
+MOD16_021EAFB0: ; 0x021EAFB0
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021EAFB0
+
+ thumb_func_start MOD16_021EAFB4
+MOD16_021EAFB4: ; 0x021EAFB4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ ldr r0, [r6, #4]
+ bl MOD16_021D9DE8
+ add r7, r0, #0
+ ldr r0, [r5, #4]
+ mov r1, #0x70
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x70
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ ldr r2, [r5, #4]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021EB31C
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021EB3D0
+ add r0, r7, #0
+ bl FUN_02004E98
+ str r0, [r4, #0x6c]
+ str r4, [r5, #8]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EAFB4
+
+ thumb_func_start MOD16_021EAFF4
+MOD16_021EAFF4: ; 0x021EAFF4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r0, #0xc]
+ ldr r4, [r0, #8]
+ cmp r1, #1
+ bne _021EB010
+ add r0, r4, #0
+ bl MOD16_021EC000
+ add r0, r4, #0
+ bl MOD16_021EC010
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021EB010:
+ ldr r0, [r0, #0x10]
+ cmp r0, #1
+ bne _021EB01A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021EB01A:
+ ldr r0, [r4, #0x3c]
+ str r0, [r5, #0xc]
+ ldr r0, [r5, #8]
+ bl MOD16_021E95C0
+ cmp r0, #0
+ beq _021EB074
+ bl FUN_02005670
+ cmp r0, #0
+ bne _021EB03C
+ ldr r0, [r4, #0x64]
+ cmp r0, #0
+ bne _021EB03C
+ add r0, r4, #0
+ bl MOD16_021EC000
+_021EB03C:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021EB3D0
+ ldr r0, [r5, #8]
+ bl MOD16_021E95C8
+ cmp r0, #0
+ beq _021EB060
+ ldr r0, [r5, #4]
+ bl MOD16_021D9FB8
+ cmp r0, #0
+ beq _021EB060
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021EC144
+_021EB060:
+ ldr r0, [r4, #0x64]
+ cmp r0, #0
+ beq _021EB074
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _021EB074
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021EC030
+_021EB074:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EAFF4
+
+ thumb_func_start MOD16_021EB078
+MOD16_021EB078: ; 0x021EB078
+ push {r4, lr}
+ ldr r4, [r0, #8]
+ add r0, r4, #0
+ bl MOD16_021EB3F4
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD16_021EB078
+
+ thumb_func_start MOD16_021EB08C
+MOD16_021EB08C: ; 0x021EB08C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r6, [r4, #8]
+ cmp r0, #3
+ bhi _021EB110
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EB0A8: ; jump table
+ .short _021EB0B0 - _021EB0A8 - 2 ; case 0
+ .short _021EB0CA - _021EB0A8 - 2 ; case 1
+ .short _021EB0E8 - _021EB0A8 - 2 ; case 2
+ .short _021EB0FE - _021EB0A8 - 2 ; case 3
+_021EB0B0:
+ ldr r0, [r4, #4]
+ mov r1, #0x74
+ bl FUN_02016998
+ str r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0x74
+ bl Call_FillMemWithValue
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EB110
+_021EB0CA:
+ ldr r2, [r4, #4]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021EB6C0
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021EB270
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EB110
+_021EB0E8:
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #1
+ bl MOD16_021EB2E0
+ cmp r0, #0
+ beq _021EB110
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EB110
+_021EB0FE:
+ mov r0, #0x79
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #0
+ bl MOD16_021D8B3C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021EB110:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EB08C
+
+ thumb_func_start MOD16_021EB114
+MOD16_021EB114: ; 0x021EB114
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r2, #0
+ add r7, r0, #0
+ ldr r0, [r6, #8]
+ ldr r4, [r3, #8]
+ ldr r5, [r1, #8]
+ bl MOD16_021E95C0
+ cmp r0, #0
+ beq _021EB168
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EBBA0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EBBF0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EBC18
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EBD3C
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD16_021EBD58
+ add r0, r5, #0
+ bl MOD16_021EBE38
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EC120
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021EC1B8
+_021EB168:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EB114
+
+ thumb_func_start MOD16_021EB16C
+MOD16_021EB16C: ; 0x021EB16C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r5, [r4, #8]
+ cmp r0, #4
+ bhi _021EB1F4
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EB188: ; jump table
+ .short _021EB192 - _021EB188 - 2 ; case 0
+ .short _021EB1BA - _021EB188 - 2 ; case 1
+ .short _021EB1D0 - _021EB188 - 2 ; case 2
+ .short _021EB1E2 - _021EB188 - 2 ; case 3
+ .short _021EB1F0 - _021EB188 - 2 ; case 4
+_021EB192:
+ mov r0, #0x79
+ ldr r1, [r6]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ bl MOD16_021D8B3C
+ add r0, r5, #0
+ bl MOD16_021EC0A8
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ mov r3, #0
+ bl MOD16_021EB270
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EB1F4
+_021EB1BA:
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r3, #0
+ bl MOD16_021EB2E0
+ cmp r0, #0
+ beq _021EB1F4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EB1F4
+_021EB1D0:
+ ldr r2, [r4, #4]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021EB6FC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EB1F4
+_021EB1E2:
+ add r0, r5, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EB1F4
+_021EB1F0:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021EB1F4:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EB16C
+
+ thumb_func_start MOD16_021EB1F8
+MOD16_021EB1F8: ; 0x021EB1F8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_02020398
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl FUN_02020398
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_02020398
+ ldr r0, [r4, #0x20]
+ mov r1, #1
+ bl FUN_02020398
+ ldr r0, [r4, #0x50]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EB1F8
+
+ thumb_func_start MOD16_021EB234
+MOD16_021EB234: ; 0x021EB234
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_02020398
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ bl FUN_02020398
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_02020398
+ ldr r0, [r4, #0x20]
+ mov r1, #0
+ bl FUN_02020398
+ ldr r0, [r4, #0x50]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EB234
+
+ thumb_func_start MOD16_021EB270
+MOD16_021EB270: ; 0x021EB270
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r2, #0
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021EB1F8
+ ldr r0, [r4, #8]
+ bl MOD16_021E95B8
+ cmp r0, #0
+ beq _021EB2DC
+ cmp r6, #0
+ beq _021EB2B6
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2c
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ mov r0, #0x19
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #3
+ add r2, r1, #0
+ sub r2, #0x13
+ bl MOD16_021D8988
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+_021EB2B6:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2c
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ mov r0, #0x19
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ mov r1, #3
+ add r3, r1, #0
+ sub r3, #0x13
+ bl MOD16_021D8988
+_021EB2DC:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021EB270
+
+ thumb_func_start MOD16_021EB2E0
+MOD16_021EB2E0: ; 0x021EB2E0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r2, #8]
+ add r5, r1, #0
+ add r4, r3, #0
+ bl MOD16_021E95B8
+ cmp r0, #0
+ beq _021EB300
+ mov r0, #0x19
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ b _021EB306
+_021EB300:
+ mov r0, #2
+ bl FUN_0200A344
+_021EB306:
+ cmp r0, #0
+ beq _021EB318
+ cmp r4, #0
+ beq _021EB314
+ add r0, r6, #0
+ bl MOD16_021EB234
+_021EB314:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021EB318:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021EB2E0
+
+ thumb_func_start MOD16_021EB31C
+MOD16_021EB31C: ; 0x021EB31C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r0, r4, #0
+ mov r1, #0xc
+ bl FUN_02016998
+ str r0, [r5, #4]
+ add r0, r4, #0
+ mov r1, #8
+ bl FUN_02016998
+ str r0, [r5, #0x10]
+ mov r0, #0x6a
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0x35
+ mov r2, #0x51
+ mov r3, #0x16
+ bl MOD16_021D7C98
+ ldr r1, [r5, #4]
+ mov r0, #0xfe
+ strb r0, [r1, #4]
+ ldr r1, [r5, #4]
+ mov r2, #0x33
+ strb r2, [r1, #5]
+ ldr r1, [r5, #4]
+ mov r2, #0x9d
+ strb r2, [r1, #6]
+ ldr r1, [r5, #4]
+ mov r2, #0x20
+ strb r2, [r1, #7]
+ ldr r1, [r5, #4]
+ mov r2, #0x9b
+ strb r0, [r1, #8]
+ ldr r0, [r5, #4]
+ mov r1, #0xb3
+ strb r1, [r0, #9]
+ ldr r0, [r5, #4]
+ mov r1, #0x7b
+ strb r1, [r0, #0xa]
+ ldr r0, [r5, #4]
+ mov r1, #0x48
+ strb r1, [r0, #0xb]
+ mov r0, #0xcc
+ str r0, [sp]
+ ldr r0, [r5, #0x10]
+ mov r1, #0x6b
+ mov r3, #0x9c
+ bl MOD16_021D7C98
+ mov r0, #0xf6
+ str r0, [sp]
+ ldr r0, [r5, #0x10]
+ mov r1, #0x96
+ add r0, r0, #4
+ mov r2, #0xb6
+ mov r3, #0xd6
+ bl MOD16_021D7C98
+ str r6, [r5, #8]
+ str r5, [r5, #0xc]
+ str r4, [sp]
+ add r3, r5, #0
+ ldr r0, [r5, #4]
+ ldr r2, _021EB3C8 ; =MOD16_021EB41C
+ mov r1, #3
+ add r3, #8
+ bl FUN_020220C4
+ str r0, [r5]
+ str r4, [sp]
+ add r3, r5, #0
+ ldr r0, [r5, #0x10]
+ ldr r2, _021EB3CC ; =MOD16_021EB45C
+ mov r1, #2
+ add r3, #8
+ bl FUN_020220C4
+ str r0, [r5, #0x14]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021EB3C8: .word MOD16_021EB41C
+_021EB3CC: .word MOD16_021EB45C
+ thumb_func_end MOD16_021EB31C
+
+ thumb_func_start MOD16_021EB3D0
+MOD16_021EB3D0: ; 0x021EB3D0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0
+ add r2, r4, #0
+ mov r0, #0x64
+_021EB3DA:
+ add r1, r1, #1
+ str r0, [r2, #0x18]
+ add r2, r2, #4
+ cmp r1, #2
+ blt _021EB3DA
+ ldr r0, [r4]
+ bl FUN_02022144
+ ldr r0, [r4, #0x14]
+ bl FUN_02022144
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EB3D0
+
+ thumb_func_start MOD16_021EB3F4
+MOD16_021EB3F4: ; 0x021EB3F4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0202212C
+ ldr r0, [r4, #0x14]
+ bl FUN_0202212C
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #4]
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EB3F4
+
+ thumb_func_start MOD16_021EB41C
+MOD16_021EB41C: ; 0x021EB41C
+ push {r3, lr}
+ ldr r3, [r2]
+ ldr r2, [r2, #4]
+ cmp r1, #3
+ bhi _021EB458
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EB432: ; jump table
+ .short _021EB43A - _021EB432 - 2 ; case 0
+ .short _021EB44A - _021EB432 - 2 ; case 1
+ .short _021EB442 - _021EB432 - 2 ; case 2
+ .short _021EB452 - _021EB432 - 2 ; case 3
+_021EB43A:
+ add r1, r3, #0
+ bl MOD16_021EB4F8
+ pop {r3, pc}
+_021EB442:
+ add r1, r3, #0
+ bl MOD16_021EB568
+ pop {r3, pc}
+_021EB44A:
+ add r1, r3, #0
+ bl MOD16_021EB648
+ pop {r3, pc}
+_021EB452:
+ add r1, r3, #0
+ bl MOD16_021EB684
+_021EB458:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EB41C
+
+ thumb_func_start MOD16_021EB45C
+MOD16_021EB45C: ; 0x021EB45C
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r7, [r2]
+ add r5, r0, #0
+ ldr r0, [r7, #4]
+ ldr r4, [r2, #4]
+ add r6, r1, #0
+ bl MOD16_021D9DE8
+ str r0, [sp]
+ lsl r0, r5, #2
+ add r0, r4, r0
+ str r6, [r0, #0x18]
+ cmp r6, #3
+ bhi _021EB4F0
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EB484: ; jump table
+ .short _021EB48C - _021EB484 - 2 ; case 0
+ .short _021EB4F0 - _021EB484 - 2 ; case 1
+ .short _021EB492 - _021EB484 - 2 ; case 2
+ .short _021EB4F0 - _021EB484 - 2 ; case 3
+_021EB48C:
+ mov r0, #0
+ str r0, [r4, #0x24]
+ pop {r3, r4, r5, r6, r7, pc}
+_021EB492:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ bne _021EB4F0
+ mov r2, #1
+ str r2, [r4, #0x24]
+ cmp r5, #0
+ beq _021EB4A6
+ cmp r5, #1
+ beq _021EB4DC
+ pop {r3, r4, r5, r6, r7, pc}
+_021EB4A6:
+ ldr r0, [r4, #0x64]
+ cmp r0, #1
+ ldr r0, [r4, #0x2c]
+ bne _021EB4C6
+ cmp r0, #0
+ bne _021EB4BE
+ ldr r2, [sp]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021EBFD4
+ pop {r3, r4, r5, r6, r7, pc}
+_021EB4BE:
+ add r0, r4, #0
+ bl MOD16_021EC000
+ pop {r3, r4, r5, r6, r7, pc}
+_021EB4C6:
+ cmp r0, #1
+ bne _021EB4D0
+ mov r0, #0
+ bl FUN_02005614
+_021EB4D0:
+ ldr r2, [sp]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021EBFD4
+ pop {r3, r4, r5, r6, r7, pc}
+_021EB4DC:
+ mov r0, #2
+ str r0, [r4, #0x28]
+ ldr r1, [r4, #0x64]
+ add r0, r4, #0
+ eor r1, r2
+ bl MOD16_021EC060
+ ldr r0, _021EB4F4 ; =0x000005DD
+ bl FUN_020054C8
+_021EB4F0:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021EB4F4: .word 0x000005DD
+ thumb_func_end MOD16_021EB45C
+
+ thumb_func_start MOD16_021EB4F8
+MOD16_021EB4F8: ; 0x021EB4F8
+ push {r4, lr}
+ add r4, r2, #0
+ cmp r0, #0
+ beq _021EB50A
+ cmp r0, #1
+ beq _021EB522
+ cmp r0, #2
+ beq _021EB53E
+ pop {r4, pc}
+_021EB50A:
+ ldr r0, [r4, #0x2c]
+ cmp r0, #1
+ bne _021EB516
+ add r0, r4, #0
+ bl MOD16_021EC000
+_021EB516:
+ ldr r0, _021EB564 ; =0x021C48F8
+ ldrh r0, [r0, #0x1c]
+ str r0, [r4, #0x38]
+ mov r0, #1
+ str r0, [r4, #0x30]
+ pop {r4, pc}
+_021EB522:
+ ldr r0, [r4, #0x2c]
+ cmp r0, #1
+ bne _021EB52E
+ add r0, r4, #0
+ bl MOD16_021EC000
+_021EB52E:
+ mov r0, #1
+ str r0, [r4, #0x4c]
+ ldr r0, _021EB564 ; =0x021C48F8
+ ldrh r1, [r0, #0x1c]
+ str r1, [r4, #0x54]
+ ldrh r0, [r0, #0x1e]
+ str r0, [r4, #0x58]
+ pop {r4, pc}
+_021EB53E:
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _021EB55C
+ ldr r0, [r4, #0x10]
+ bl FUN_02020A40
+ str r0, [r4, #0x20]
+ ldr r0, [r4, #0x10]
+ add r0, r0, #4
+ bl FUN_02020A40
+ ldr r1, [r4, #0x20]
+ orr r0, r1
+ str r0, [r4, #0x20]
+ pop {r4, pc}
+_021EB55C:
+ mov r0, #1
+ str r0, [r4, #0x20]
+ pop {r4, pc}
+ nop
+_021EB564: .word 0x021C48F8
+ thumb_func_end MOD16_021EB4F8
+
+ thumb_func_start MOD16_021EB568
+MOD16_021EB568: ; 0x021EB568
+ push {r4, lr}
+ add r4, r2, #0
+ cmp r0, #0
+ beq _021EB57A
+ cmp r0, #1
+ beq _021EB5BA
+ cmp r0, #2
+ beq _021EB5DE
+ pop {r4, pc}
+_021EB57A:
+ ldr r0, [r4, #0x30]
+ cmp r0, #1
+ bne _021EB638
+ ldr r1, _021EB63C ; =0x021C48F8
+ ldr r0, [r4, #0x38]
+ ldrh r2, [r1, #0x1c]
+ sub r2, r2, r0
+ ldr r0, [r4, #0x34]
+ cmp r0, #0
+ bne _021EB5A2
+ cmp r2, #0xc
+ blt _021EB638
+ mov r0, #1
+ str r0, [r4, #0x34]
+ ldrh r0, [r1, #0x1c]
+ str r0, [r4, #0x38]
+ ldr r0, _021EB640 ; =0x000005F7
+ bl FUN_020054C8
+ pop {r4, pc}
+_021EB5A2:
+ mov r0, #0xb
+ mvn r0, r0
+ cmp r2, r0
+ bgt _021EB638
+ mov r0, #0
+ str r0, [r4, #0x34]
+ ldrh r0, [r1, #0x1c]
+ str r0, [r4, #0x38]
+ ldr r0, _021EB640 ; =0x000005F7
+ bl FUN_020054C8
+ pop {r4, pc}
+_021EB5BA:
+ ldr r0, [r4, #0x4c]
+ cmp r0, #1
+ bne _021EB638
+ add r0, r4, #0
+ bl MOD16_021EBC30
+ add r0, r4, #0
+ bl MOD16_021EBC98
+ add r0, r4, #0
+ bl MOD16_021EBCC4
+ ldr r0, _021EB63C ; =0x021C48F8
+ ldrh r1, [r0, #0x1c]
+ str r1, [r4, #0x54]
+ ldrh r0, [r0, #0x1e]
+ str r0, [r4, #0x58]
+ pop {r4, pc}
+_021EB5DE:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ bne _021EB638
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ bne _021EB5F8
+ mov r0, #1
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD16_021EC0C0
+ b _021EB632
+_021EB5F8:
+ ldr r1, _021EB63C ; =0x021C48F8
+ ldrh r0, [r1, #0x1e]
+ cmp r0, #0x83
+ bhs _021EB626
+ ldr r0, [r4, #0x34]
+ cmp r0, #0
+ bne _021EB610
+ ldrh r1, [r1, #0x1c]
+ add r0, r4, #0
+ bl MOD16_021EBDD0
+ b _021EB618
+_021EB610:
+ ldrh r1, [r1, #0x1c]
+ add r0, r4, #0
+ bl MOD16_021EBE04
+_021EB618:
+ mov r0, #0
+ str r0, [r4, #0x3c]
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021EC0C0
+ b _021EB632
+_021EB626:
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD16_021EC0D8
+ ldr r0, _021EB644 ; =0xFFFFFA00
+ str r0, [r4, #0x3c]
+_021EB632:
+ add r0, r4, #0
+ bl MOD16_021EC0E8
+_021EB638:
+ pop {r4, pc}
+ nop
+_021EB63C: .word 0x021C48F8
+_021EB640: .word 0x000005F7
+_021EB644: .word 0xFFFFFA00
+ thumb_func_end MOD16_021EB568
+
+ thumb_func_start MOD16_021EB648
+MOD16_021EB648: ; 0x021EB648
+ push {r4, lr}
+ add r4, r2, #0
+ cmp r0, #0
+ beq _021EB65A
+ cmp r0, #1
+ beq _021EB660
+ cmp r0, #2
+ beq _021EB66C
+ pop {r4, pc}
+_021EB65A:
+ mov r0, #0
+ str r0, [r4, #0x30]
+ pop {r4, pc}
+_021EB660:
+ ldr r0, [r4, #0x60]
+ lsl r0, r0, #2
+ str r0, [r4, #0x5c]
+ mov r0, #0
+ str r0, [r4, #0x4c]
+ pop {r4, pc}
+_021EB66C:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ bne _021EB680
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD16_021EC0C0
+ add r0, r4, #0
+ bl MOD16_021EC0E8
+_021EB680:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EB648
+
+ thumb_func_start MOD16_021EB684
+MOD16_021EB684: ; 0x021EB684
+ push {r4, lr}
+ add r4, r2, #0
+ cmp r0, #0
+ beq _021EB696
+ cmp r0, #1
+ beq _021EB69C
+ cmp r0, #2
+ beq _021EB6A8
+ pop {r4, pc}
+_021EB696:
+ mov r0, #0
+ str r0, [r4, #0x30]
+ pop {r4, pc}
+_021EB69C:
+ ldr r0, [r4, #0x60]
+ lsl r0, r0, #2
+ str r0, [r4, #0x5c]
+ mov r0, #0
+ str r0, [r4, #0x4c]
+ pop {r4, pc}
+_021EB6A8:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ bne _021EB6BC
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD16_021EC0C0
+ add r0, r4, #0
+ bl MOD16_021EC0E8
+_021EB6BC:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EB684
+
+ thumb_func_start MOD16_021EB6C0
+MOD16_021EB6C0: ; 0x021EB6C0
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021EB724
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021EB830
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021EB920
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021EBAA4
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021EC068
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EB6C0
+
+ thumb_func_start MOD16_021EB6FC
+MOD16_021EB6FC: ; 0x021EB6FC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021EBA84
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EBB88
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EB8DC
+ add r0, r4, #0
+ bl MOD16_021EB80C
+ add r0, r5, #0
+ bl MOD16_021EC080
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EB6FC
+
+ thumb_func_start MOD16_021EB724
+MOD16_021EB724: ; 0x021EB724
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r4, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x22
+ mov r3, #6
+ bl MOD16_021D8CB4
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x47
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r6, r0, #0
+ ldrh r0, [r2]
+ mov r1, #6
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ ldr r0, [r5]
+ mov r1, #6
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ ldr r0, [r5]
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r4, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x23
+ mov r3, #7
+ bl MOD16_021D8CB4
+ str r4, [sp]
+ ldr r0, [r5]
+ mov r1, #0x48
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r4, r0, #0
+ ldrh r0, [r2]
+ mov r1, #7
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, [r5]
+ mov r1, #7
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ ldr r0, [r5]
+ mov r2, #0
+ add r3, r2, #0
+ ldr r0, [r0]
+ mov r1, #7
+ sub r3, #0x30
+ bl FUN_020179E0
+ ldr r0, [r5]
+ mov r2, #3
+ add r3, r2, #0
+ ldr r0, [r0]
+ mov r1, #7
+ sub r3, #0x13
+ bl FUN_020179E0
+ mov r0, #7
+ mov r1, #3
+ bl FUN_020178BC
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021EB724
+
+ thumb_func_start MOD16_021EB80C
+MOD16_021EB80C: ; 0x021EB80C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #6
+ ldr r0, [r0]
+ bl FUN_02018744
+ ldr r0, [r4]
+ mov r1, #7
+ ldr r0, [r0]
+ bl FUN_02018744
+ mov r0, #7
+ mov r1, #1
+ bl FUN_020178BC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EB80C
+
+ thumb_func_start MOD16_021EB830
+MOD16_021EB830: ; 0x021EB830
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021EB8D0 ; =0x00002781
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ mov r2, #0x71
+ mov r3, #1
+ bl FUN_020091E0
+ str r0, [r5, #0x58]
+ bl FUN_02009B04
+ ldr r0, [r5, #0x58]
+ bl FUN_02009474
+ ldr r0, _021EB8D4 ; =0x00002722
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x12
+ mov r3, #0
+ bl FUN_02009298
+ str r0, [r5, #0x5c]
+ bl FUN_02009D68
+ ldr r0, [r5, #0x5c]
+ bl FUN_02009474
+ ldr r0, _021EB8D8 ; =0x00002782
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x72
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x60]
+ mov r0, #0x9e
+ lsl r0, r0, #6
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ add r1, r7, #0
+ mov r2, #0x70
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x64]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EB8D0: .word 0x00002781
+_021EB8D4: .word 0x00002722
+_021EB8D8: .word 0x00002782
+ thumb_func_end MOD16_021EB830
+
+ thumb_func_start MOD16_021EB8DC
+MOD16_021EB8DC: ; 0x021EB8DC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x58]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ ldr r0, [r5, #0x5c]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x58]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x5c]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x60]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x64]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EB8DC
+
+ thumb_func_start MOD16_021EB920
+MOD16_021EB920: ; 0x021EB920
+ push {r4, r5, r6, lr}
+ sub sp, #0x70
+ ldr r4, [r1]
+ mov r3, #0x9e
+ add r5, r0, #0
+ lsl r3, r3, #6
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ mov r0, #5
+ lsl r0, r0, #6
+ add r6, r2, #0
+ ldr r2, [r4, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r2, r3, #0
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x4c
+ sub r2, #0x5e
+ add r3, r3, #2
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x43
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #0x1f
+ str r0, [sp, #0x40]
+ mov r0, #2
+ str r0, [sp, #0x44]
+ lsl r0, r0, #0x11
+ str r0, [sp, #0x34]
+ mov r0, #3
+ lsl r1, r1, #0xc
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ str r6, [sp, #0x48]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ str r0, [r5, #0x3c]
+ mov r1, #4
+ bl FUN_02020130
+ ldr r0, [r5, #0x3c]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r1, #2
+ ldr r0, [r5, #0x3c]
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+ ldr r0, [r5, #0x3c]
+ mov r1, #8
+ bl FUN_02020208
+ mov r0, #0x33
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x34]
+ mov r1, #0x9d
+ mov r0, #3
+ lsl r1, r1, #0xc
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ str r0, [r5]
+ mov r1, #1
+ bl FUN_02020130
+ ldr r0, [r5]
+ mov r1, #1
+ bl FUN_020200EC
+ mov r0, #0x2d
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ mov r1, #0x83
+ mov r0, #3
+ lsl r1, r1, #0xc
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ str r0, [r5, #4]
+ mov r1, #3
+ bl FUN_02020130
+ ldr r0, [r5, #4]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r1, #2
+ ldr r0, [r5, #4]
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+ ldr r0, [r5, #4]
+ mov r1, #5
+ bl FUN_02020208
+ mov r2, #3
+ str r2, [r5, #8]
+ mov r1, #2
+ str r1, [r5, #0xc]
+ str r2, [r5, #0x10]
+ mov r0, #5
+ str r0, [r5, #0x18]
+ mov r0, #0xe6
+ str r1, [r5, #0x1c]
+ lsl r0, r0, #0xc
+ mov r1, #0xa6
+ str r0, [sp, #0x34]
+ lsl r1, r1, #0xc
+ lsl r0, r2, #0x12
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ str r0, [r5, #0x20]
+ mov r1, #6
+ bl FUN_02020130
+ ldr r0, [r5, #0x20]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r1, #2
+ ldr r0, [r5, #0x20]
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+ ldr r0, [r5, #0x20]
+ mov r1, #5
+ bl FUN_02020208
+ mov r1, #6
+ str r1, [r5, #0x24]
+ mov r0, #5
+ str r0, [r5, #0x28]
+ str r1, [r5, #0x2c]
+ str r0, [r5, #0x34]
+ mov r0, #2
+ str r0, [r5, #0x38]
+ add sp, #0x70
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EB920
+
+ thumb_func_start MOD16_021EBA84
+MOD16_021EBA84: ; 0x021EBA84
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #0x3c]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #4]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #0x20]
+ bl FUN_0201FFC8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EBA84
+
+ thumb_func_start MOD16_021EBAA4
+MOD16_021EBAA4: ; 0x021EBAA4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ ldr r4, [r1]
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, _021EBB80 ; =0x00002722
+ add r6, r2, #0
+ bl FUN_020094F0
+ mov r1, #0x15
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #8]
+ mov r1, #0
+ bl FUN_02009E54
+ mov r2, #0
+ mov r1, #0x45
+ lsl r1, r1, #2
+ str r1, [sp, #0x1c]
+ mov r1, #2
+ str r0, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r1, [sp, #0x28]
+ str r6, [sp, #0x2c]
+ bl FUN_0201E28C
+ add r7, r0, #0
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #8
+ mov r2, #2
+ bl MOD16_021DB388
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r2, _021EBB84 ; =0x00000266
+ add r1, r6, #0
+ mov r3, #0x29
+ bl MOD16_021DB3C8
+ lsr r1, r0, #1
+ mov r0, #0x40
+ sub r0, r0, r1
+ str r0, [sp, #0x18]
+ str r6, [sp, #0xc]
+ add r0, sp, #8
+ bl MOD16_021DB2BC
+ str r0, [r5, #0x50]
+ ldr r0, [r0]
+ add r1, r7, #0
+ bl FUN_02011A60
+ add r0, r6, #0
+ bl MOD16_021DB3BC
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #8
+ mov r2, #2
+ bl MOD16_021DB388
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r2, _021EBB84 ; =0x00000266
+ add r1, r6, #0
+ mov r3, #0x2a
+ bl MOD16_021DB3C8
+ lsr r1, r0, #1
+ mov r0, #0x40
+ sub r0, r0, r1
+ str r0, [sp, #0x18]
+ str r6, [sp, #0xc]
+ add r0, sp, #8
+ bl MOD16_021DB2BC
+ str r0, [r5, #0x54]
+ ldr r0, [r0]
+ add r1, r7, #0
+ bl FUN_02011A60
+ add r0, r6, #0
+ bl MOD16_021DB3BC
+ ldr r0, [r5, #0x54]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_020119D0
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021EBB80: .word 0x00002722
+_021EBB84: .word 0x00000266
+ thumb_func_end MOD16_021EBAA4
+
+ thumb_func_start MOD16_021EBB88
+MOD16_021EBB88: ; 0x021EBB88
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021EBB8E:
+ ldr r0, [r5, #0x50]
+ bl MOD16_021DB338
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021EBB8E
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EBB88
+
+ thumb_func_start MOD16_021EBBA0
+MOD16_021EBBA0: ; 0x021EBBA0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, [r5, #0x40]
+ ldr r0, [r4, #0x34]
+ cmp r1, r0
+ beq _021EBBEC
+ ldr r0, [r5, #0x3c]
+ bl FUN_0202022C
+ add r6, r0, #0
+ ldr r0, [r4, #0x34]
+ cmp r0, #0
+ ldr r0, [r5, #0x3c]
+ bne _021EBBD4
+ mov r1, #4
+ bl FUN_02020130
+ mov r1, #8
+ sub r1, r1, r6
+ lsl r1, r1, #0x10
+ ldr r0, [r5, #0x3c]
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ b _021EBBE8
+_021EBBD4:
+ mov r1, #0
+ bl FUN_02020130
+ mov r1, #8
+ sub r1, r1, r6
+ lsl r1, r1, #0x10
+ ldr r0, [r5, #0x3c]
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+_021EBBE8:
+ ldr r0, [r4, #0x34]
+ str r0, [r5, #0x40]
+_021EBBEC:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EBBA0
+
+ thumb_func_start MOD16_021EBBF0
+MOD16_021EBBF0: ; 0x021EBBF0
+ push {r4, lr}
+ add r2, r1, #0
+ add r4, r0, #0
+ ldr r0, [r2, #0x64]
+ ldr r3, [r2, #0x18]
+ cmp r0, #0
+ ldr r0, [r4, #4]
+ bne _021EBC0C
+ add r4, #8
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD16_021EBEE4
+ pop {r4, pc}
+_021EBC0C:
+ add r4, #8
+ ldr r2, [r2, #0x2c]
+ add r1, r4, #0
+ bl MOD16_021EBE6C
+ pop {r4, pc}
+ thumb_func_end MOD16_021EBBF0
+
+ thumb_func_start MOD16_021EBC18
+MOD16_021EBC18: ; 0x021EBC18
+ push {r3, lr}
+ add r2, r0, #0
+ ldr r0, [r2, #0x20]
+ add r3, r1, #0
+ add r2, #0x24
+ add r1, r2, #0
+ ldr r2, [r3, #0x64]
+ ldr r3, [r3, #0x1c]
+ bl MOD16_021EBE6C
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EBC18
+
+ thumb_func_start MOD16_021EBC30
+MOD16_021EBC30: ; 0x021EBC30
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r3, _021EBC94 ; =0x021C48F8
+ ldr r0, [r5, #0x54]
+ ldrh r2, [r3, #0x1c]
+ ldrh r3, [r3, #0x1e]
+ ldr r1, [r5, #0x58]
+ sub r0, #0x33
+ sub r1, #0x9d
+ sub r2, #0x33
+ sub r3, #0x9d
+ bl FUN_0201BBD0
+ add r6, r0, #0
+ bpl _021EBC56
+ neg r0, r6
+_021EBC56:
+ cmp r0, #1
+ blt _021EBC90
+ ldr r0, [r5, #0x5c]
+ add r4, r5, #0
+ add r4, #0x5c
+ add r0, r0, r6
+ str r0, [r5, #0x5c]
+ ldr r0, [r4]
+ bpl _021EBC6E
+ add r0, #0x58
+ str r0, [r4]
+ b _021EBC76
+_021EBC6E:
+ mov r1, #0x58
+ bl _s32_div_f
+ str r1, [r4]
+_021EBC76:
+ ldr r0, [r5, #0x5c]
+ cmp r0, #0x20
+ blt _021EBC90
+ cmp r0, #0x38
+ bgt _021EBC90
+ cmp r6, #0
+ ble _021EBC8C
+ mov r0, #0x20
+ add sp, #4
+ str r0, [r5, #0x5c]
+ pop {r3, r4, r5, r6, pc}
+_021EBC8C:
+ mov r0, #0x38
+ str r0, [r5, #0x5c]
+_021EBC90:
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021EBC94: .word 0x021C48F8
+ thumb_func_end MOD16_021EBC30
+
+ thumb_func_start MOD16_021EBC98
+MOD16_021EBC98: ; 0x021EBC98
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x5c]
+ asr r0, r1, #1
+ lsr r0, r0, #0x1e
+ add r0, r1, r0
+ asr r1, r0, #2
+ ldr r0, [r4, #0x60]
+ cmp r1, r0
+ beq _021EBCBE
+ ldr r0, _021EBCC0 ; =0x000005F7
+ bl FUN_020054C8
+ ldr r1, [r4, #0x5c]
+ asr r0, r1, #1
+ lsr r0, r0, #0x1e
+ add r0, r1, r0
+ asr r0, r0, #2
+ str r0, [r4, #0x60]
+_021EBCBE:
+ pop {r4, pc}
+ .align 2, 0
+_021EBCC0: .word 0x000005F7
+ thumb_func_end MOD16_021EBC98
+
+ thumb_func_start MOD16_021EBCC4
+MOD16_021EBCC4: ; 0x021EBCC4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x5c]
+ cmp r1, #0
+ bne _021EBCD4
+ bl MOD16_021EC010
+ pop {r4, pc}
+_021EBCD4:
+ ble _021EBD02
+ cmp r1, #0x2c
+ bgt _021EBD02
+ ldr r0, [r4, #0x50]
+ cmp r0, #1
+ bne _021EBCE6
+ mov r0, #0
+ bl FUN_02004CA4
+_021EBCE6:
+ ldr r0, [r4, #0x50]
+ cmp r0, #2
+ beq _021EBCF4
+ bl FUN_02004CB4
+ mov r0, #2
+ str r0, [r4, #0x50]
+_021EBCF4:
+ ldr r0, [r4, #0x60]
+ cmp r0, #0
+ bne _021EBCFC
+ mov r0, #1
+_021EBCFC:
+ bl FUN_02004D04
+ pop {r4, pc}
+_021EBD02:
+ ldr r0, [r4, #0x50]
+ cmp r0, #2
+ bne _021EBD0C
+ bl FUN_02004CFC
+_021EBD0C:
+ ldr r0, [r4, #0x50]
+ cmp r0, #1
+ beq _021EBD1C
+ mov r0, #0
+ bl FUN_02004C80
+ mov r0, #1
+ str r0, [r4, #0x50]
+_021EBD1C:
+ ldr r0, [r4, #0x5c]
+ cmp r0, #0
+ bne _021EBD26
+ mov r0, #0x58
+ str r0, [r4, #0x5c]
+_021EBD26:
+ ldr r1, [r4, #0x60]
+ mov r0, #0x16
+ sub r0, r0, r1
+ lsl r0, r0, #3
+ cmp r0, #0
+ ble _021EBD34
+ sub r0, r0, #1
+_021EBD34:
+ mov r1, #0
+ bl FUN_02004CAC
+ pop {r4, pc}
+ thumb_func_end MOD16_021EBCC4
+
+ thumb_func_start MOD16_021EBD3C
+MOD16_021EBD3C: ; 0x021EBD3C
+ push {r4, lr}
+ ldr r1, [r1, #0x5c]
+ add r4, r0, #0
+ mov r0, #0xe
+ bl FUN_0201BC84
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ ldr r0, [r4]
+ lsr r1, r1, #0x10
+ bl FUN_02020088
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EBD3C
+
+ thumb_func_start MOD16_021EBD58
+MOD16_021EBD58: ; 0x021EBD58
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ ldr r1, [r2, #0x6c]
+ add r5, r0, #0
+ ldr r2, [r2, #0x3c]
+ mov r0, #1
+ bl FUN_02004F28
+ add r6, r0, #0
+ bne _021EBD70
+ mov r0, #0
+ str r0, [r5, #0x48]
+_021EBD70:
+ add r0, r5, #0
+ ldr r1, [r5, #0x48]
+ add r0, #0x4c
+ sub r1, r6, r1
+ lsl r1, r1, #4
+ ldrh r0, [r0]
+ neg r1, r1
+ add r1, r0, r1
+ add r0, r5, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ add r0, r5, #0
+ add r0, #0x4c
+ ldrh r1, [r0]
+ add r0, r5, #0
+ add r0, #0x4c
+ strh r1, [r0]
+ add r0, r5, #0
+ add r0, #0x4c
+ ldrh r0, [r0]
+ mov r1, #0xb6
+ bl _s32_div_f
+ add r3, r0, #0
+ ldr r0, [r4]
+ lsl r3, r3, #0x10
+ ldr r0, [r0]
+ mov r1, #7
+ mov r2, #0
+ lsr r3, r3, #0x10
+ bl FUN_0201AF08
+ ldr r0, [r4]
+ mov r1, #7
+ ldr r0, [r0]
+ mov r2, #9
+ mov r3, #0x83
+ bl FUN_0201AF50
+ ldr r0, [r4]
+ mov r1, #7
+ ldr r0, [r0]
+ mov r2, #0xc
+ mov r3, #0x63
+ bl FUN_0201AF50
+ str r6, [r5, #0x48]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021EBD58
+
+ thumb_func_start MOD16_021EBDD0
+MOD16_021EBDD0: ; 0x021EBDD0
+ push {r4, lr}
+ sub r1, #0x6b
+ add r4, r0, #0
+ lsl r0, r1, #0xc
+ mov r2, #0x7f
+ asr r1, r0, #0x1f
+ lsl r2, r2, #0xc
+ mov r3, #0
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ mov r1, #9
+ lsl r1, r1, #0x10
+ bl FX_Div
+ asr r0, r0, #0xc
+ str r0, [r4, #0x44]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EBDD0
+
+ thumb_func_start MOD16_021EBE04
+MOD16_021EBE04: ; 0x021EBE04
+ push {r4, lr}
+ sub r1, #0xb3
+ add r4, r0, #0
+ lsl r0, r1, #0xc
+ mov r2, #0x7f
+ asr r1, r0, #0x1f
+ lsl r2, r2, #0xc
+ mov r3, #0
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ mov r1, #0x12
+ lsl r1, r1, #0xe
+ bl FX_Div
+ asr r0, r0, #0xc
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EBE04
+
+ thumb_func_start MOD16_021EBE38
+MOD16_021EBE38: ; 0x021EBE38
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ cmp r0, #0
+ ldr r0, [r4, #0x50]
+ bne _021EBE58
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_020119D0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_020119D0
+ pop {r4, pc}
+_021EBE58:
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_020119D0
+ ldr r0, [r4, #0x54]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_020119D0
+ pop {r4, pc}
+ thumb_func_end MOD16_021EBE38
+
+ thumb_func_start MOD16_021EBE6C
+MOD16_021EBE6C: ; 0x021EBE6C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r3, #0
+ add r6, r0, #0
+ add r5, r1, #0
+ add r7, r2, #0
+ cmp r4, #3
+ bne _021EBE7C
+ mov r4, #1
+_021EBE7C:
+ add r0, r6, #0
+ bl FUN_0202022C
+ str r0, [sp]
+ ldr r0, [r5, #0xc]
+ cmp r0, r7
+ beq _021EBE96
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD16_021EBF7C
+ str r7, [r5, #0xc]
+_021EBE96:
+ cmp r4, #2
+ bgt _021EBEAA
+ cmp r4, #0
+ blt _021EBEE0
+ beq _021EBEE0
+ cmp r4, #1
+ beq _021EBECC
+ cmp r4, #2
+ beq _021EBEB0
+ pop {r3, r4, r5, r6, r7, pc}
+_021EBEAA:
+ cmp r4, #0x64
+ beq _021EBECC
+ pop {r3, r4, r5, r6, r7, pc}
+_021EBEB0:
+ ldr r1, [r5, #0x14]
+ ldr r0, [sp]
+ cmp r0, r1
+ ble _021EBEE0
+ lsl r1, r1, #0x10
+ add r0, r6, #0
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_020200D8
+ pop {r3, r4, r5, r6, r7, pc}
+_021EBECC:
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD16_021EBF7C
+ mov r1, #2
+ add r0, r6, #0
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+_021EBEE0:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EBE6C
+
+ thumb_func_start MOD16_021EBEE4
+MOD16_021EBEE4: ; 0x021EBEE4
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r3, #0
+ add r6, r0, #0
+ add r5, r1, #0
+ add r7, r2, #0
+ cmp r4, #1
+ bne _021EBEF4
+ mov r4, #3
+_021EBEF4:
+ add r0, r6, #0
+ bl FUN_0202022C
+ ldr r0, [r5, #0xc]
+ cmp r0, r7
+ beq _021EBF0C
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD16_021EBF7C
+ str r7, [r5, #0xc]
+_021EBF0C:
+ cmp r4, #3
+ bgt _021EBF20
+ cmp r4, #0
+ blt _021EBF7A
+ beq _021EBF26
+ cmp r4, #2
+ beq _021EBF50
+ cmp r4, #3
+ beq _021EBF66
+ pop {r3, r4, r5, r6, r7, pc}
+_021EBF20:
+ cmp r4, #0x64
+ beq _021EBF66
+ pop {r3, r4, r5, r6, r7, pc}
+_021EBF26:
+ cmp r7, #1
+ bne _021EBF36
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r2, #0
+ bl MOD16_021EBF7C
+ b _021EBF40
+_021EBF36:
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD16_021EBF7C
+_021EBF40:
+ ldr r1, [r5, #0x14]
+ add r0, r6, #0
+ sub r1, r1, #1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ pop {r3, r4, r5, r6, r7, pc}
+_021EBF50:
+ ldr r1, [r5, #0x14]
+ add r0, r6, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_020200D8
+ pop {r3, r4, r5, r6, r7, pc}
+_021EBF66:
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD16_021EBF7C
+ mov r1, #2
+ add r0, r6, #0
+ lsl r1, r1, #0xc
+ bl FUN_020200D8
+_021EBF7A:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EBEE4
+
+ thumb_func_start MOD16_021EBF7C
+MOD16_021EBF7C: ; 0x021EBF7C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r7, r2, #0
+ bl FUN_0202022C
+ add r6, r0, #0
+ cmp r7, #1
+ ldr r1, [r4, #8]
+ bne _021EBFB2
+ ldr r0, [r4]
+ cmp r1, r0
+ bne _021EBFD2
+ ldr r1, [r4, #4]
+ add r0, r5, #0
+ bl FUN_02020130
+ ldr r0, [r4, #4]
+ str r0, [r4, #8]
+ ldr r1, [r4, #0x10]
+ add r0, r5, #0
+ sub r1, r1, r6
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ pop {r3, r4, r5, r6, r7, pc}
+_021EBFB2:
+ ldr r0, [r4, #4]
+ cmp r1, r0
+ bne _021EBFD2
+ ldr r1, [r4]
+ add r0, r5, #0
+ bl FUN_02020130
+ ldr r0, [r4]
+ str r0, [r4, #8]
+ ldr r1, [r4, #0x10]
+ add r0, r5, #0
+ sub r1, r1, r6
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+_021EBFD2:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EBF7C
+
+ thumb_func_start MOD16_021EBFD4
+MOD16_021EBFD4: ; 0x021EBFD4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mov r0, #1
+ lsl r1, r2, #0x10
+ str r0, [r4, #0x2c]
+ ldr r0, _021EBFFC ; =0x000001FF
+ lsr r1, r1, #0x10
+ str r0, [sp]
+ mov r0, #0xd
+ mov r2, #0
+ mov r3, #0x7f
+ bl FUN_020056AC
+ add r0, r4, #0
+ bl MOD16_021EC0E8
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021EBFFC: .word 0x000001FF
+ thumb_func_end MOD16_021EBFD4
+
+ thumb_func_start MOD16_021EC000
+MOD16_021EC000: ; 0x021EC000
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ bl FUN_02005614
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+ thumb_func_end MOD16_021EC000
+
+ thumb_func_start MOD16_021EC010
+MOD16_021EC010: ; 0x021EC010
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x50]
+ cmp r0, #1
+ bne _021EC020
+ mov r0, #0
+ bl FUN_02004CA4
+_021EC020:
+ ldr r0, [r4, #0x50]
+ cmp r0, #2
+ bne _021EC02A
+ bl FUN_02004CFC
+_021EC02A:
+ mov r0, #0
+ str r0, [r4, #0x50]
+ pop {r4, pc}
+ thumb_func_end MOD16_021EC010
+
+ thumb_func_start MOD16_021EC030
+MOD16_021EC030: ; 0x021EC030
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DE8
+ add r6, r0, #0
+ bl FUN_02005670
+ cmp r0, #0
+ bne _021EC05C
+ ldr r0, [r5, #0x68]
+ sub r0, r0, #1
+ str r0, [r5, #0x68]
+ bne _021EC05C
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021EBFD4
+ mov r0, #0xa
+ str r0, [r5, #0x68]
+_021EC05C:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC030
+
+ thumb_func_start MOD16_021EC060
+MOD16_021EC060: ; 0x021EC060
+ str r1, [r0, #0x64]
+ mov r1, #0xa
+ str r1, [r0, #0x68]
+ bx lr
+ thumb_func_end MOD16_021EC060
+
+ thumb_func_start MOD16_021EC068
+MOD16_021EC068: ; 0x021EC068
+ push {r4, lr}
+ add r4, r0, #0
+ add r3, r2, #0
+ ldr r0, [r1]
+ add r2, r4, #0
+ mov r1, #0x14
+ add r2, #0x6c
+ bl MOD16_021D8D70
+ str r0, [r4, #0x68]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC068
+
+ thumb_func_start MOD16_021EC080
+MOD16_021EC080: ; 0x021EC080
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x68]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x68]
+ str r0, [r4, #0x6c]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC080
+
+ thumb_func_start MOD16_021EC094
+MOD16_021EC094: ; 0x021EC094
+ push {r3, lr}
+ add r2, r0, #0
+ ldr r2, [r2, #0x6c]
+ mov r0, #0x1f
+ ldr r2, [r2, #0xc]
+ mov r1, #0xe0
+ mov r3, #0x20
+ bl FUN_0201C2C8
+ pop {r3, pc}
+ thumb_func_end MOD16_021EC094
+
+ thumb_func_start MOD16_021EC0A8
+MOD16_021EC0A8: ; 0x021EC0A8
+ push {r3, lr}
+ add r2, r0, #0
+ ldr r2, [r2, #0x6c]
+ mov r0, #0x1f
+ ldr r2, [r2, #0xc]
+ mov r1, #0xe0
+ add r2, #0x20
+ mov r3, #0x20
+ bl FUN_0201C2C8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC0A8
+
+ thumb_func_start MOD16_021EC0C0
+MOD16_021EC0C0: ; 0x021EC0C0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021EC0D8
+ cmp r4, #0
+ bne _021EC0D4
+ add r0, r5, #0
+ bl MOD16_021EC0DC
+_021EC0D4:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC0C0
+
+ thumb_func_start MOD16_021EC0D8
+MOD16_021EC0D8: ; 0x021EC0D8
+ str r1, [r0, #0x48]
+ bx lr
+ thumb_func_end MOD16_021EC0D8
+
+ thumb_func_start MOD16_021EC0DC
+MOD16_021EC0DC: ; 0x021EC0DC
+ mov r1, #0
+ str r1, [r0, #0x3c]
+ str r1, [r0, #0x40]
+ str r1, [r0, #0x44]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EC0DC
+
+ thumb_func_start MOD16_021EC0E8
+MOD16_021EC0E8: ; 0x021EC0E8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _021EC108
+ ldr r0, [r4, #0x3c]
+ bl MOD16_021EC1DC
+ ldr r1, _021EC10C ; =0x0000FFFF
+ ldr r2, [r4, #0x40]
+ mov r0, #1
+ bl FUN_02004D4C
+ ldr r0, [r4, #0x44]
+ bl MOD16_021EC110
+_021EC108:
+ pop {r4, pc}
+ nop
+_021EC10C: .word 0x0000FFFF
+ thumb_func_end MOD16_021EC0E8
+
+ thumb_func_start MOD16_021EC110
+MOD16_021EC110: ; 0x021EC110
+ ldr r3, _021EC11C ; =0x02004829
+ add r1, r0, #0
+ mov r0, #8
+ mov r2, #0
+ bx r3
+ nop
+_021EC11C: .word 0x02004829
+ thumb_func_end MOD16_021EC110
+
+ thumb_func_start MOD16_021EC120
+MOD16_021EC120: ; 0x021EC120
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r2, [r4, #0x48]
+ ldr r1, [r5, #0x70]
+ cmp r2, r1
+ beq _021EC140
+ cmp r2, #1
+ bne _021EC138
+ bl MOD16_021EC094
+ b _021EC13C
+_021EC138:
+ bl MOD16_021EC0A8
+_021EC13C:
+ ldr r0, [r4, #0x48]
+ str r0, [r5, #0x70]
+_021EC140:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC120
+
+ thumb_func_start MOD16_021EC144
+MOD16_021EC144: ; 0x021EC144
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DE8
+ add r6, r0, #0
+ ldr r0, _021EC1B4 ; =0x021C48B8
+ mov r1, #1
+ ldr r0, [r0, #0x48]
+ tst r0, r1
+ beq _021EC198
+ str r1, [r5, #0x28]
+ mov r0, #0
+ str r0, [r5, #0x18]
+ ldr r1, [r5, #0x64]
+ cmp r1, #0
+ bne _021EC17E
+ ldr r1, [r5, #0x2c]
+ cmp r1, #1
+ bne _021EC172
+ bl FUN_02005614
+_021EC172:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021EBFD4
+ pop {r4, r5, r6, pc}
+_021EC17E:
+ ldr r0, [r5, #0x2c]
+ cmp r0, #0
+ bne _021EC190
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021EBFD4
+ pop {r4, r5, r6, pc}
+_021EC190:
+ add r0, r5, #0
+ bl MOD16_021EC000
+ pop {r4, r5, r6, pc}
+_021EC198:
+ ldr r0, [r5, #0x28]
+ cmp r0, #1
+ bne _021EC1A6
+ mov r0, #2
+ str r0, [r5, #0x28]
+ str r0, [r5, #0x18]
+ pop {r4, r5, r6, pc}
+_021EC1A6:
+ cmp r0, #2
+ bne _021EC1B0
+ mov r0, #0
+ str r0, [r5, #0x28]
+ str r1, [r5, #0x18]
+_021EC1B0:
+ pop {r4, r5, r6, pc}
+ nop
+_021EC1B4: .word 0x021C48B8
+ thumb_func_end MOD16_021EC144
+
+ thumb_func_start MOD16_021EC1B8
+MOD16_021EC1B8: ; 0x021EC1B8
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r4, [r0]
+ ldr r0, [r1, #8]
+ bl MOD16_021E95C8
+ cmp r0, #1
+ bne _021EC1D6
+ mov r3, #0x18
+ add r0, r4, #0
+ mov r1, #0xb4
+ mov r2, #0x83
+ str r3, [sp]
+ bl MOD16_021D8B04
+_021EC1D6:
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC1B8
+
+ thumb_func_start MOD16_021EC1DC
+MOD16_021EC1DC: ; 0x021EC1DC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, _021EC1F8 ; =0x0000FFFF
+ mov r0, #1
+ add r2, r4, #0
+ bl FUN_02004D20
+ add r4, #0x14
+ ldr r1, _021EC1F8 ; =0x0000FFFF
+ mov r0, #8
+ add r2, r4, #0
+ bl FUN_02004D20
+ pop {r4, pc}
+ .align 2, 0
+_021EC1F8: .word 0x0000FFFF
+ thumb_func_end MOD16_021EC1DC
+
+ thumb_func_start MOD16_021EC1FC
+MOD16_021EC1FC: ; 0x021EC1FC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r2, [sp]
+ add r0, r2, #0
+ add r4, r1, #0
+ bl MOD16_021EC274
+ add r6, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021EC2C0
+ add r7, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021EC2E8
+ str r6, [r5]
+ str r7, [r5, #4]
+ str r0, [r5, #0x20]
+ bl MOD16_021EC318
+ str r0, [r5, #0x24]
+ ldr r0, _021EC244 ; =MOD16_021EC31C
+ str r0, [r5, #8]
+ ldr r0, _021EC248 ; =MOD16_021EC340
+ str r0, [r5, #0xc]
+ ldr r0, _021EC24C ; =MOD16_021EC350
+ str r0, [r5, #0x10]
+ ldr r0, _021EC250 ; =MOD16_021EC364
+ str r0, [r5, #0x14]
+ ldr r0, _021EC254 ; =MOD16_021EC3E8
+ str r0, [r5, #0x18]
+ ldr r0, _021EC258 ; =MOD16_021EC3EC
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EC244: .word MOD16_021EC31C
+_021EC248: .word MOD16_021EC340
+_021EC24C: .word MOD16_021EC350
+_021EC250: .word MOD16_021EC364
+_021EC254: .word MOD16_021EC3E8
+_021EC258: .word MOD16_021EC3EC
+ thumb_func_end MOD16_021EC1FC
+
+ thumb_func_start MOD16_021EC25C
+MOD16_021EC25C: ; 0x021EC25C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021EC2EC
+ ldr r0, [r4, #4]
+ bl MOD16_021EC300
+ ldr r0, [r4, #0x20]
+ bl MOD16_021EC314
+ pop {r4, pc}
+ thumb_func_end MOD16_021EC25C
+
+ thumb_func_start MOD16_021EC274
+MOD16_021EC274: ; 0x021EC274
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0xc
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021EC286
+ bl ErrorHandling
+_021EC286:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+ add r0, r5, #0
+ bl MOD16_021D7AD8
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #4]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD16_021D7B5C
+ str r0, [r4, #8]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC274
+
+ thumb_func_start MOD16_021EC2C0
+MOD16_021EC2C0: ; 0x021EC2C0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021EC2D2
+ bl ErrorHandling
+_021EC2D2:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EC2C0
+
+ thumb_func_start MOD16_021EC2E8
+MOD16_021EC2E8: ; 0x021EC2E8
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021EC2E8
+
+ thumb_func_start MOD16_021EC2EC
+MOD16_021EC2EC: ; 0x021EC2EC
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021EC2F6
+ bl ErrorHandling
+_021EC2F6:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC2EC
+
+ thumb_func_start MOD16_021EC300
+MOD16_021EC300: ; 0x021EC300
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021EC30A
+ bl ErrorHandling
+_021EC30A:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC300
+
+ thumb_func_start MOD16_021EC314
+MOD16_021EC314: ; 0x021EC314
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EC314
+
+ thumb_func_start MOD16_021EC318
+MOD16_021EC318: ; 0x021EC318
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021EC318
+
+ thumb_func_start MOD16_021EC31C
+MOD16_021EC31C: ; 0x021EC31C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021EC330
+ bl ErrorHandling
+_021EC330:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ str r4, [r5, #8]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EC31C
+
+ thumb_func_start MOD16_021EC340
+MOD16_021EC340: ; 0x021EC340
+ ldr r0, [r0, #0xc]
+ cmp r0, #1
+ bne _021EC34A
+ mov r0, #1
+ bx lr
+_021EC34A:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EC340
+
+ thumb_func_start MOD16_021EC350
+MOD16_021EC350: ; 0x021EC350
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC350
+
+ thumb_func_start MOD16_021EC364
+MOD16_021EC364: ; 0x021EC364
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r3, [r3, #8]
+ ldr r5, [r4, #8]
+ cmp r0, #3
+ bhi _021EC3E2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EC382: ; jump table
+ .short _021EC38A - _021EC382 - 2 ; case 0
+ .short _021EC3A8 - _021EC382 - 2 ; case 1
+ .short _021EC3C8 - _021EC382 - 2 ; case 2
+ .short _021EC3DE - _021EC382 - 2 ; case 3
+_021EC38A:
+ ldr r0, [r4, #4]
+ mov r1, #0x14
+ bl FUN_02016998
+ str r0, [r4, #8]
+ mov r2, #0x14
+ mov r1, #0
+_021EC398:
+ strb r1, [r0]
+ add r0, r0, #1
+ sub r2, r2, #1
+ bne _021EC398
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EC3E2
+_021EC3A8:
+ ldr r0, [r4, #4]
+ add r1, r6, #0
+ str r0, [sp]
+ add r0, r5, #0
+ bl MOD16_021EC520
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021EC474
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EC3E2
+_021EC3C8:
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r3, #1
+ bl MOD16_021EC4E0
+ cmp r0, #0
+ beq _021EC3E2
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EC3E2
+_021EC3DE:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021EC3E2:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC364
+
+ thumb_func_start MOD16_021EC3E8
+MOD16_021EC3E8: ; 0x021EC3E8
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021EC3E8
+
+ thumb_func_start MOD16_021EC3EC
+MOD16_021EC3EC: ; 0x021EC3EC
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r3, r0, #0
+ ldr r0, [r4, #8]
+ cmp r1, #4
+ bhi _021EC456
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EC406: ; jump table
+ .short _021EC410 - _021EC406 - 2 ; case 0
+ .short _021EC420 - _021EC406 - 2 ; case 1
+ .short _021EC434 - _021EC406 - 2 ; case 2
+ .short _021EC442 - _021EC406 - 2 ; case 3
+ .short _021EC452 - _021EC406 - 2 ; case 4
+_021EC410:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021EC474
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EC456
+_021EC420:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021EC4E0
+ cmp r0, #0
+ beq _021EC456
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EC456
+_021EC434:
+ add r1, r3, #0
+ bl MOD16_021EC574
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EC456
+_021EC442:
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EC456
+_021EC452:
+ mov r0, #1
+ pop {r4, pc}
+_021EC456:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC3EC
+
+ thumb_func_start MOD16_021EC45C
+MOD16_021EC45C: ; 0x021EC45C
+ ldr r3, _021EC464 ; =0x02020399
+ ldr r0, [r0, #0x10]
+ mov r1, #1
+ bx r3
+ .align 2, 0
+_021EC464: .word 0x02020399
+ thumb_func_end MOD16_021EC45C
+
+ thumb_func_start MOD16_021EC468
+MOD16_021EC468: ; 0x021EC468
+ ldr r3, _021EC470 ; =0x02020399
+ ldr r0, [r0, #0x10]
+ mov r1, #0
+ bx r3
+ .align 2, 0
+_021EC470: .word 0x02020399
+ thumb_func_end MOD16_021EC468
+
+ thumb_func_start MOD16_021EC474
+MOD16_021EC474: ; 0x021EC474
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r2, #0
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021EC45C
+ ldr r0, [r4, #8]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ beq _021EC4DC
+ cmp r6, #0
+ beq _021EC4B8
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r2, r1, #0
+ sub r2, #0x11
+ bl MOD16_021D8988
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+_021EC4B8:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2a
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r3, r1, #0
+ sub r3, #0x11
+ bl MOD16_021D8988
+_021EC4DC:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021EC474
+
+ thumb_func_start MOD16_021EC4E0
+MOD16_021EC4E0: ; 0x021EC4E0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r2, #8]
+ add r5, r1, #0
+ add r4, r3, #0
+ bl MOD16_021E8C68
+ cmp r0, #0
+ ldr r1, [r5]
+ beq _021EC500
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ b _021EC50A
+_021EC500:
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A7C
+_021EC50A:
+ cmp r0, #0
+ beq _021EC51C
+ cmp r4, #0
+ beq _021EC518
+ add r0, r6, #0
+ bl MOD16_021EC468
+_021EC518:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021EC51C:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021EC4E0
+
+ thumb_func_start MOD16_021EC520
+MOD16_021EC520: ; 0x021EC520
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, [sp, #0x18]
+ add r7, r2, #0
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD16_021EC5A8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EC7E8
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD16_021EC898
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD16_021EC610
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ add r3, r4, #0
+ bl MOD16_021EC700
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ add r3, r4, #0
+ bl MOD16_021EC7E0
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021EC9B0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC520
+
+ thumb_func_start MOD16_021EC574
+MOD16_021EC574: ; 0x021EC574
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021EC7E4
+ add r0, r5, #0
+ bl MOD16_021EC7D4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EC6BC
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_02019620
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02018744
+ add r0, r4, #0
+ bl MOD16_021ECA2C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EC574
+
+ thumb_func_start MOD16_021EC5A8
+MOD16_021EC5A8: ; 0x021EC5A8
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ add r5, r2, #0
+ str r5, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x21
+ mov r3, #3
+ bl MOD16_021D8CB4
+ str r5, [sp]
+ ldr r0, [r4]
+ mov r1, #0x4a
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r5, r0, #0
+ ldrh r0, [r2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r5, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ mov r1, #3
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EC5A8
+
+ thumb_func_start MOD16_021EC610
+MOD16_021EC610: ; 0x021EC610
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021EC6AC ; =0x00001BB5
+ mov r3, #1
+ str r0, [sp]
+ str r3, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ add r1, r7, #0
+ mov r2, #0x5d
+ bl FUN_020091E0
+ str r0, [r5]
+ bl FUN_02009B04
+ ldr r0, [r5]
+ bl FUN_02009474
+ ldr r0, _021EC6B0 ; =0x00001B66
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0xe
+ mov r3, #0
+ bl FUN_02009298
+ str r0, [r5, #4]
+ bl FUN_02009D68
+ ldr r0, [r5, #4]
+ bl FUN_02009474
+ ldr r0, _021EC6B4 ; =0x00001BB3
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x5b
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #8]
+ ldr r0, _021EC6B8 ; =0x00001BB4
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x5c
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0xc]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EC6AC: .word 0x00001BB5
+_021EC6B0: .word 0x00001B66
+_021EC6B4: .word 0x00001BB3
+_021EC6B8: .word 0x00001BB4
+ thumb_func_end MOD16_021EC610
+
+ thumb_func_start MOD16_021EC6BC
+MOD16_021EC6BC: ; 0x021EC6BC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ ldr r0, [r5, #4]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #4]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #8]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0xc]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EC6BC
+
+ thumb_func_start MOD16_021EC700
+MOD16_021EC700: ; 0x021EC700
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x74
+ add r6, r2, #0
+ add r5, r0, #0
+ ldr r0, [r6, #4]
+ add r7, r3, #0
+ ldr r4, [r1]
+ bl MOD16_021D9DE8
+ ldr r3, _021EC7CC ; =0x00001BB4
+ str r0, [sp, #0x2c]
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ str r1, [sp, #0x14]
+ add r1, r0, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #0x18]
+ add r1, r0, #0
+ add r1, #8
+ ldr r1, [r4, r1]
+ add r0, #0xc
+ str r1, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r1, r3, #1
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r2, r3, #0
+ add r0, sp, #0x50
+ sub r2, #0x4e
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x30]
+ add r0, sp, #0x50
+ str r0, [sp, #0x34]
+ mov r0, #0x1f
+ str r0, [sp, #0x44]
+ mov r0, #1
+ str r0, [sp, #0x48]
+ str r7, [sp, #0x4c]
+ ldr r1, [r6, #4]
+ ldr r0, _021EC7D0 ; =0x00001748
+ ldr r0, [r1, r0]
+ ldr r1, [sp, #0x2c]
+ bl FUN_02087B98
+ add r4, r0, #0
+ ldr r1, [r6, #4]
+ ldr r0, _021EC7D0 ; =0x00001748
+ ldr r0, [r1, r0]
+ ldr r1, [sp, #0x2c]
+ bl FUN_02087BD8
+ add r7, r0, #0
+ mov r0, #0x2a
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x38]
+ add r0, r4, #0
+ add r0, #0x58
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x3c]
+ add r0, sp, #0x30
+ bl FUN_0201FF84
+ str r0, [r5, #0x10]
+ ldr r0, [r6, #4]
+ bl MOD16_021D9F4C
+ cmp r0, #0
+ ldr r0, [r5, #0x10]
+ bne _021EC7B2
+ mov r1, #5
+ bl FUN_02020130
+ b _021EC7B8
+_021EC7B2:
+ mov r1, #6
+ bl FUN_02020130
+_021EC7B8:
+ ldr r0, [r5, #0x10]
+ add r1, r4, #0
+ bl MOD16_021ECA48
+ ldr r0, [r5, #0x10]
+ add r1, r7, #0
+ bl MOD16_021ECA74
+ add sp, #0x74
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EC7CC: .word 0x00001BB4
+_021EC7D0: .word 0x00001748
+ thumb_func_end MOD16_021EC700
+
+ thumb_func_start MOD16_021EC7D4
+MOD16_021EC7D4: ; 0x021EC7D4
+ ldr r3, _021EC7DC ; =0x0201FFC9
+ ldr r0, [r0, #0x10]
+ bx r3
+ nop
+_021EC7DC: .word 0x0201FFC9
+ thumb_func_end MOD16_021EC7D4
+
+ thumb_func_start MOD16_021EC7E0
+MOD16_021EC7E0: ; 0x021EC7E0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EC7E0
+
+ thumb_func_start MOD16_021EC7E4
+MOD16_021EC7E4: ; 0x021EC7E4
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EC7E4
+
+ thumb_func_start MOD16_021EC7E8
+MOD16_021EC7E8: ; 0x021EC7E8
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0x20
+ add r6, r1, #0
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r2, _021EC890 ; =0x00000266
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r6, #0
+ bl FUN_0200A86C
+ mov r1, #0x2b
+ add r2, r4, #0
+ add r6, r0, #0
+ bl FUN_0200A8E0
+ mov r0, #0
+ mov r3, #1
+ add r1, r4, #0
+ add r2, r0, #0
+ lsl r3, r3, #8
+ bl FUN_02002F40
+ add r3, r0, #0
+ mov r0, #0x18
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EC894 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r0, r0, #4
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ mov r1, #9
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #0xa8
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EC894 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r0, r0, #4
+ mov r3, #0x20
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ mov r1, #9
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #0xa8
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EC894 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r0, r0, #4
+ mov r3, #0x98
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_021EC890: .word 0x00000266
+_021EC894: .word 0x00020100
+ thumb_func_end MOD16_021EC7E8
+
+ thumb_func_start MOD16_021EC898
+MOD16_021EC898: ; 0x021EC898
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r7, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x20
+ add r1, r7, #0
+ bl FUN_020219F4
+ mov r2, #0x9b
+ add r4, r0, #0
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ add r3, r7, #0
+ bl FUN_0200A86C
+ str r0, [sp, #0x10]
+ ldr r0, [r6, #4]
+ bl MOD16_021D9DE8
+ add r1, r7, #0
+ str r0, [sp, #0x14]
+ bl FUN_0200AA50
+ str r0, [sp, #0x18]
+ mov r0, #0x98
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EC9A8 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ ldr r2, [sp, #0x18]
+ add r0, r0, #4
+ mov r3, #0x1a
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x6e
+ sub r3, r1, r0
+ mov r0, #0xa8
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EC9A8 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r0, r0, #4
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x10]
+ bl FUN_0200A8B8
+ ldr r2, _021EC9AC ; =0x00000266
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r7, #0
+ bl FUN_0200A86C
+ add r7, r0, #0
+ ldr r0, [r6, #4]
+ bl MOD16_021D9F40
+ add r2, r0, #0
+ mov r0, #0x98
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EC9A8 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ mov r3, #0x92
+ add r0, r0, #4
+ bl FUN_0201BDE0
+ ldr r0, [r6, #4]
+ bl MOD16_021D9F4C
+ cmp r0, #0
+ bne _021EC966
+ add r0, r7, #0
+ mov r1, #0x5f
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ b _021EC970
+_021EC966:
+ add r0, r7, #0
+ mov r1, #0x60
+ add r2, r4, #0
+ bl FUN_0200A8E0
+_021EC970:
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xe6
+ sub r3, r1, r0
+ mov r0, #0xa8
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EC9A8 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r0, r0, #4
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021EC9A8: .word 0x00020100
+_021EC9AC: .word 0x00000266
+ thumb_func_end MOD16_021EC898
+
+ thumb_func_start MOD16_021EC9B0
+MOD16_021EC9B0: ; 0x021EC9B0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ bl MOD16_021D8700
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD16_021D9DE8
+ add r7, r0, #0
+ ldr r1, [r4, #4]
+ ldr r0, _021ECA28 ; =0x00001748
+ ldr r0, [r1, r0]
+ add r1, r7, #0
+ bl FUN_02087BB8
+ str r0, [sp, #8]
+ ldr r1, [r4, #4]
+ ldr r0, _021ECA28 ; =0x00001748
+ ldr r0, [r1, r0]
+ add r1, r7, #0
+ bl FUN_02087BF8
+ str r0, [sp, #0xc]
+ mov r0, #0x58
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ add r2, r7, #0
+ add r0, #0x58
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ ldr r1, [r4, #4]
+ mov r3, #2
+ bl MOD16_021D7FB4
+ add r0, r6, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_02007558
+ mov r1, #0xf
+ mov r3, #0
+ add r0, r6, #0
+ add r2, r1, #0
+ str r3, [sp]
+ bl FUN_02007E68
+ ldr r1, [sp, #8]
+ add r0, r6, #0
+ bl MOD16_021ECA64
+ ldr r1, [sp, #0xc]
+ add r0, r6, #0
+ bl MOD16_021ECA98
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021ECA28: .word 0x00001748
+ thumb_func_end MOD16_021EC9B0
+
+ thumb_func_start MOD16_021ECA2C
+MOD16_021ECA2C: ; 0x021ECA2C
+ push {r4, lr}
+ ldr r0, [r0]
+ bl MOD16_021D8700
+ add r4, r0, #0
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ add r0, r4, #0
+ bl FUN_02007EEC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ECA2C
+
+ thumb_func_start MOD16_021ECA48
+MOD16_021ECA48: ; 0x021ECA48
+ push {lr}
+ sub sp, #0xc
+ add r1, #0x58
+ mov r2, #0x2a
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xe
+ str r1, [sp, #4]
+ add r1, sp, #0
+ str r2, [sp]
+ bl FUN_02020044
+ add sp, #0xc
+ pop {pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ECA48
+
+ thumb_func_start MOD16_021ECA64
+MOD16_021ECA64: ; 0x021ECA64
+ ldr r3, _021ECA70 ; =0x02007559
+ add r2, r1, #0
+ mov r1, #1
+ add r2, #0x58
+ bx r3
+ nop
+_021ECA70: .word 0x02007559
+ thumb_func_end MOD16_021ECA64
+
+ thumb_func_start MOD16_021ECA74
+MOD16_021ECA74: ; 0x021ECA74
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #1
+ lsl r0, r0, #0x14
+ lsl r1, r1, #0xc
+ bl FX_Div
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r1, sp, #0
+ mov r2, #2
+ bl FUN_02020074
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ECA74
+
+ thumb_func_start MOD16_021ECA98
+MOD16_021ECA98: ; 0x021ECA98
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ mov r0, #1
+ lsl r0, r0, #0x14
+ lsl r1, r1, #0xc
+ bl FX_Div
+ asr r2, r0, #0x1f
+ lsl r3, r2, #0x14
+ lsr r1, r0, #0xc
+ lsl r2, r0, #0x14
+ mov r0, #2
+ orr r3, r1
+ mov r1, #0
+ lsl r0, r0, #0xa
+ add r2, r2, r0
+ adc r3, r1
+ lsl r0, r3, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ lsl r0, r1, #4
+ asr r5, r0, #0x10
+ add r0, r4, #0
+ mov r1, #0xc
+ add r2, r5, #0
+ bl FUN_02007558
+ add r0, r4, #0
+ mov r1, #0xd
+ add r2, r5, #0
+ bl FUN_02007558
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ECA98
+
+ thumb_func_start MOD16_021ECADC
+MOD16_021ECADC: ; 0x021ECADC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r2, [sp]
+ add r0, r2, #0
+ add r4, r1, #0
+ bl MOD16_021ECB54
+ add r6, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021ECB98
+ add r7, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021ECBC0
+ str r6, [r5]
+ str r7, [r5, #4]
+ str r0, [r5, #0x20]
+ bl MOD16_021ECC50
+ str r0, [r5, #0x24]
+ ldr r0, _021ECB24 ; =MOD16_021ECC54
+ str r0, [r5, #8]
+ ldr r0, _021ECB28 ; =MOD16_021ECCA0
+ str r0, [r5, #0xc]
+ ldr r0, _021ECB2C ; =MOD16_021ECCF4
+ str r0, [r5, #0x10]
+ ldr r0, _021ECB30 ; =MOD16_021ECD08
+ str r0, [r5, #0x14]
+ ldr r0, _021ECB34 ; =MOD16_021ECD90
+ str r0, [r5, #0x18]
+ ldr r0, _021ECB38 ; =MOD16_021ECDC0
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021ECB24: .word MOD16_021ECC54
+_021ECB28: .word MOD16_021ECCA0
+_021ECB2C: .word MOD16_021ECCF4
+_021ECB30: .word MOD16_021ECD08
+_021ECB34: .word MOD16_021ECD90
+_021ECB38: .word MOD16_021ECDC0
+ thumb_func_end MOD16_021ECADC
+
+ thumb_func_start MOD16_021ECB3C
+MOD16_021ECB3C: ; 0x021ECB3C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021ECC08
+ ldr r0, [r4, #4]
+ bl MOD16_021ECC1C
+ ldr r0, [r4, #0x20]
+ bl MOD16_021ECC30
+ pop {r4, pc}
+ thumb_func_end MOD16_021ECB3C
+
+ thumb_func_start MOD16_021ECB54
+MOD16_021ECB54: ; 0x021ECB54
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x10
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021ECB66
+ bl ErrorHandling
+_021ECB66:
+ add r2, r4, #0
+ mov r1, #0x10
+ mov r0, #0
+_021ECB6C:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021ECB6C
+ add r0, r5, #0
+ bl MOD16_021D7AEC
+ str r0, [r4]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD16_021D7B7C
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #8]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ECB54
+
+ thumb_func_start MOD16_021ECB98
+MOD16_021ECB98: ; 0x021ECB98
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021ECBAA
+ bl ErrorHandling
+_021ECBAA:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021ECB98
+
+ thumb_func_start MOD16_021ECBC0
+MOD16_021ECBC0: ; 0x021ECBC0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ bl MOD16_021ECC50
+ add r7, r0, #0
+ mov r1, #0x14
+ mul r7, r1
+ add r0, r5, #0
+ add r1, r7, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021ECBE0
+ bl ErrorHandling
+_021ECBE0:
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r7, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ mov r3, #1
+ bl MOD16_021DB000
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x14
+ add r2, r6, #0
+ mov r3, #2
+ bl MOD16_021DB058
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021ECBC0
+
+ thumb_func_start MOD16_021ECC08
+MOD16_021ECC08: ; 0x021ECC08
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021ECC12
+ bl ErrorHandling
+_021ECC12:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ECC08
+
+ thumb_func_start MOD16_021ECC1C
+MOD16_021ECC1C: ; 0x021ECC1C
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021ECC26
+ bl ErrorHandling
+_021ECC26:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ECC1C
+
+ thumb_func_start MOD16_021ECC30
+MOD16_021ECC30: ; 0x021ECC30
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021ECC3A
+ bl ErrorHandling
+_021ECC3A:
+ add r0, r4, #0
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD16_021DAC7C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD16_021ECC30
+
+ thumb_func_start MOD16_021ECC50
+MOD16_021ECC50: ; 0x021ECC50
+ mov r0, #2
+ bx lr
+ thumb_func_end MOD16_021ECC50
+
+ thumb_func_start MOD16_021ECC54
+MOD16_021ECC54: ; 0x021ECC54
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r4, r1, #0
+ mov r1, #0x18
+ bl FUN_02016998
+ add r6, r0, #0
+ add r2, r6, #0
+ mov r1, #0x18
+ mov r0, #0
+_021ECC6A:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021ECC6A
+ mov r1, #0
+ add r2, r6, #0
+ mov r0, #4
+_021ECC78:
+ add r1, r1, #1
+ str r0, [r2, #0x10]
+ add r2, r2, #4
+ cmp r1, #2
+ blt _021ECC78
+ mov r0, #0
+ str r0, [r4, #4]
+ ldr r2, [r5, #4]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD16_021ECF40
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD16_021ECFA4
+ str r6, [r5, #8]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ECC54
+
+ thumb_func_start MOD16_021ECCA0
+MOD16_021ECCA0: ; 0x021ECCA0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r0, #0xc]
+ ldr r4, [r0, #8]
+ cmp r1, #1
+ bne _021ECCB0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021ECCB0:
+ ldr r0, [r0, #0x10]
+ cmp r0, #1
+ bne _021ECCBA
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021ECCBA:
+ ldr r0, [r5, #0xc]
+ bl MOD16_021E95C0
+ cmp r0, #0
+ beq _021ECCEE
+ add r0, r4, #0
+ bl MOD16_021ECF94
+ ldr r0, [r5, #0xc]
+ bl MOD16_021E95C8
+ cmp r0, #0
+ beq _021ECCE6
+ ldr r0, [r5, #8]
+ bl MOD16_021D9FB8
+ cmp r0, #0
+ beq _021ECCE6
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021ED4C8
+_021ECCE6:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021ECFA4
+_021ECCEE:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ECCA0
+
+ thumb_func_start MOD16_021ECCF4
+MOD16_021ECCF4: ; 0x021ECCF4
+ push {r4, lr}
+ ldr r4, [r0, #8]
+ add r0, r4, #0
+ bl MOD16_021ECFD4
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD16_021ECCF4
+
+ thumb_func_start MOD16_021ECD08
+MOD16_021ECD08: ; 0x021ECD08
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r6, [r4, #8]
+ cmp r0, #3
+ bhi _021ECD8C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021ECD24: ; jump table
+ .short _021ECD2C - _021ECD24 - 2 ; case 0
+ .short _021ECD46 - _021ECD24 - 2 ; case 1
+ .short _021ECD64 - _021ECD24 - 2 ; case 2
+ .short _021ECD7A - _021ECD24 - 2 ; case 3
+_021ECD2C:
+ ldr r0, [r4, #4]
+ mov r1, #0x40
+ bl FUN_02016998
+ str r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0x40
+ bl Call_FillMemWithValue
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ECD8C
+_021ECD46:
+ ldr r2, [r4, #4]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021ED044
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021ECE98
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ECD8C
+_021ECD64:
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #1
+ bl MOD16_021ECF04
+ cmp r0, #0
+ beq _021ECD8C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ECD8C
+_021ECD7A:
+ mov r0, #0x79
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #0
+ bl MOD16_021D8B3C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021ECD8C:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021ECD08
+
+ thumb_func_start MOD16_021ECD90
+MOD16_021ECD90: ; 0x021ECD90
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r3, #8]
+ add r4, r2, #0
+ str r0, [sp]
+ add r5, r1, #0
+ ldr r0, [r4, #0xc]
+ ldr r7, [r5, #8]
+ bl MOD16_021E95C0
+ cmp r0, #0
+ beq _021ECDBC
+ ldr r2, [sp]
+ ldr r3, [r5, #4]
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021ED46C
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD16_021ED50C
+_021ECDBC:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021ECD90
+
+ thumb_func_start MOD16_021ECDC0
+MOD16_021ECDC0: ; 0x021ECDC0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r6, [r4, #8]
+ cmp r0, #4
+ bhi _021ECE42
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021ECDDC: ; jump table
+ .short _021ECDE6 - _021ECDDC - 2 ; case 0
+ .short _021ECE08 - _021ECDDC - 2 ; case 1
+ .short _021ECE1E - _021ECDDC - 2 ; case 2
+ .short _021ECE30 - _021ECDDC - 2 ; case 3
+ .short _021ECE3E - _021ECDDC - 2 ; case 4
+_021ECDE6:
+ mov r0, #0x79
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ bl MOD16_021D8B3C
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #0
+ bl MOD16_021ECE98
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ECE42
+_021ECE08:
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #0
+ bl MOD16_021ECF04
+ cmp r0, #0
+ beq _021ECE42
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ECE42
+_021ECE1E:
+ ldr r2, [r4, #4]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021ED074
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ECE42
+_021ECE30:
+ add r0, r6, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ECE42
+_021ECE3E:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021ECE42:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ECDC0
+
+ thumb_func_start MOD16_021ECE48
+MOD16_021ECE48: ; 0x021ECE48
+ push {r3, r4, r5, r6, r7, lr}
+ mov r6, #1
+ add r5, r0, #0
+ mov r4, #0
+ add r7, r6, #0
+_021ECE52:
+ ldr r0, [r5]
+ add r1, r6, #0
+ bl FUN_02020398
+ ldr r0, [r5, #8]
+ add r1, r7, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021ECE52
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ECE48
+
+ thumb_func_start MOD16_021ECE70
+MOD16_021ECE70: ; 0x021ECE70
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+ add r7, r4, #0
+_021ECE7A:
+ ldr r0, [r5]
+ add r1, r6, #0
+ bl FUN_02020398
+ ldr r0, [r5, #8]
+ add r1, r7, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021ECE7A
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ECE70
+
+ thumb_func_start MOD16_021ECE98
+MOD16_021ECE98: ; 0x021ECE98
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r2, #0
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021ECE48
+ ldr r0, [r4, #0xc]
+ bl MOD16_021E95B8
+ cmp r0, #0
+ beq _021ECF00
+ cmp r6, #0
+ beq _021ECEDC
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2c
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ mov r1, #1
+ str r1, [sp, #0x10]
+ mov r0, #0x19
+ ldr r2, [r5]
+ lsl r0, r0, #4
+ add r0, r2, r0
+ add r2, r1, #0
+ sub r2, #0x11
+ bl MOD16_021D8988
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+_021ECEDC:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2c
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ mov r1, #1
+ str r1, [sp, #0x10]
+ mov r0, #0x19
+ ldr r3, [r5]
+ lsl r0, r0, #4
+ add r0, r3, r0
+ add r3, r1, #0
+ sub r3, #0x11
+ bl MOD16_021D8988
+_021ECF00:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021ECE98
+
+ thumb_func_start MOD16_021ECF04
+MOD16_021ECF04: ; 0x021ECF04
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r2, #0xc]
+ add r5, r1, #0
+ add r4, r3, #0
+ bl MOD16_021E95B8
+ cmp r0, #0
+ beq _021ECF24
+ mov r0, #0x19
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ b _021ECF2A
+_021ECF24:
+ mov r0, #2
+ bl FUN_0200A344
+_021ECF2A:
+ cmp r0, #0
+ beq _021ECF3C
+ cmp r4, #0
+ beq _021ECF38
+ add r0, r6, #0
+ bl MOD16_021ECE70
+_021ECF38:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021ECF3C:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021ECF04
+
+ thumb_func_start MOD16_021ECF40
+MOD16_021ECF40: ; 0x021ECF40
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r2, #0
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, r6, #0
+ mov r1, #8
+ bl FUN_02016998
+ str r0, [r5, #4]
+ mov r0, #0x80
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0x40
+ mov r2, #0xb0
+ mov r3, #8
+ bl MOD16_021D7C98
+ mov r0, #0xf8
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0x40
+ add r0, r0, #4
+ mov r2, #0xb0
+ mov r3, #0x80
+ bl MOD16_021D7C98
+ str r4, [r5, #8]
+ str r5, [r5, #0xc]
+ str r6, [sp]
+ add r3, r5, #0
+ ldr r0, [r5, #4]
+ ldr r2, _021ECF90 ; =MOD16_021ECFEC
+ mov r1, #2
+ add r3, #8
+ bl FUN_020220C4
+ str r0, [r5]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021ECF90: .word MOD16_021ECFEC
+ thumb_func_end MOD16_021ECF40
+
+ thumb_func_start MOD16_021ECF94
+MOD16_021ECF94: ; 0x021ECF94
+ mov r2, #0
+ mov r1, #3
+_021ECF98:
+ add r2, r2, #1
+ str r1, [r0, #0x10]
+ add r0, r0, #4
+ cmp r2, #2
+ blt _021ECF98
+ bx lr
+ thumb_func_end MOD16_021ECF94
+
+ thumb_func_start MOD16_021ECFA4
+MOD16_021ECFA4: ; 0x021ECFA4
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r5, r1, #0
+ bl FUN_02022144
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _021ECFBC
+ cmp r0, #1
+ beq _021ECFC8
+ pop {r3, r4, r5, pc}
+_021ECFBC:
+ ldr r0, [r4, #0x10]
+ cmp r0, #2
+ beq _021ECFD2
+ mov r0, #1
+ str r0, [r4, #0x10]
+ pop {r3, r4, r5, pc}
+_021ECFC8:
+ ldr r0, [r4, #0x14]
+ cmp r0, #2
+ beq _021ECFD2
+ mov r0, #1
+ str r0, [r4, #0x14]
+_021ECFD2:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021ECFA4
+
+ thumb_func_start MOD16_021ECFD4
+MOD16_021ECFD4: ; 0x021ECFD4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0202212C
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ECFD4
+
+ thumb_func_start MOD16_021ECFEC
+MOD16_021ECFEC: ; 0x021ECFEC
+ push {r4, lr}
+ ldr r3, [r2, #4]
+ ldr r4, [r2]
+ lsl r2, r0, #2
+ add r2, r3, r2
+ str r1, [r2, #0x10]
+ cmp r1, #2
+ bne _021ED03C
+ cmp r0, #0
+ beq _021ED006
+ cmp r0, #1
+ beq _021ED022
+ pop {r4, pc}
+_021ED006:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021ED03C
+ ldr r0, _021ED040 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0
+ str r0, [r4, #4]
+ ldr r2, [r4]
+ mov r0, #1
+ ldr r1, [r2]
+ orr r0, r1
+ str r0, [r2]
+ pop {r4, pc}
+_021ED022:
+ ldr r0, [r4, #4]
+ cmp r0, #1
+ beq _021ED03C
+ ldr r0, _021ED040 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #1
+ str r0, [r4, #4]
+ ldr r2, [r4]
+ mov r0, #2
+ ldr r1, [r2]
+ orr r0, r1
+ str r0, [r2]
+_021ED03C:
+ pop {r4, pc}
+ nop
+_021ED040: .word 0x000005DD
+ thumb_func_end MOD16_021ECFEC
+
+ thumb_func_start MOD16_021ED044
+MOD16_021ED044: ; 0x021ED044
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021ED0D0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021ED138
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021ED1EC
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021ED2B4
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021ED044
+
+ thumb_func_start MOD16_021ED074
+MOD16_021ED074: ; 0x021ED074
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0x20
+ add r6, r2, #0
+ str r0, [sp]
+ add r4, r1, #0
+ str r6, [sp, #4]
+ ldr r0, [r4]
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0x80
+ bl MOD16_021D8CFC
+ mov r0, #0x20
+ str r0, [sp]
+ str r6, [sp, #4]
+ ldr r0, [r4]
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0xa0
+ bl MOD16_021D8CFC
+ add r0, r5, #0
+ bl MOD16_021ED29C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021ED398
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021ED1B8
+ mov r4, #0
+_021ED0BA:
+ ldr r0, [r5, #0x38]
+ cmp r0, #0
+ beq _021ED0C4
+ bl FUN_02016A18
+_021ED0C4:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021ED0BA
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021ED074
+
+ thumb_func_start MOD16_021ED0D0
+MOD16_021ED0D0: ; 0x021ED0D0
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r5, r1, #0
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r5, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x22
+ mov r3, #6
+ bl MOD16_021D8CB4
+ str r5, [sp]
+ ldr r0, [r4]
+ mov r1, #0x3d
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r5, r0, #0
+ ldrh r0, [r2]
+ mov r1, #6
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r5, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ mov r1, #6
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED0D0
+
+ thumb_func_start MOD16_021ED138
+MOD16_021ED138: ; 0x021ED138
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021ED1AC ; =0x0000238E
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ mov r2, #0x66
+ mov r3, #1
+ bl FUN_020091E0
+ str r0, [r5, #0x10]
+ bl FUN_02009B04
+ ldr r0, [r5, #0x10]
+ bl FUN_02009474
+ ldr r0, _021ED1B0 ; =0x0000238C
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x64
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x18]
+ ldr r0, _021ED1B4 ; =0x0000238D
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x65
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x1c]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021ED1AC: .word 0x0000238E
+_021ED1B0: .word 0x0000238C
+_021ED1B4: .word 0x0000238D
+ thumb_func_end MOD16_021ED138
+
+ thumb_func_start MOD16_021ED1B8
+MOD16_021ED1B8: ; 0x021ED1B8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x10]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x18]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x1c]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED1B8
+
+ thumb_func_start MOD16_021ED1EC
+MOD16_021ED1EC: ; 0x021ED1EC
+ push {r4, r5, r6, lr}
+ sub sp, #0x70
+ ldr r4, [r1]
+ ldr r3, _021ED294 ; =0x0000238D
+ add r5, r0, #0
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ mov r0, #5
+ lsl r0, r0, #6
+ add r6, r2, #0
+ ldr r2, [r4, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ ldr r2, _021ED298 ; =0x0000083F
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x4c
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x1e
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #0x1f
+ str r0, [sp, #0x40]
+ mov r0, #2
+ str r0, [sp, #0x44]
+ mov r0, #0x11
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ mov r0, #3
+ lsl r1, r1, #0xe
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ str r6, [sp, #0x48]
+ bl FUN_0201FF84
+ mov r1, #1
+ str r0, [r5]
+ bl FUN_02020130
+ mov r0, #0x2f
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ mov r1, #0x1e
+ mov r0, #3
+ lsl r1, r1, #0xe
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ mov r1, #1
+ str r0, [r5, #4]
+ bl FUN_02020130
+ add sp, #0x70
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021ED294: .word 0x0000238D
+_021ED298: .word 0x0000083F
+ thumb_func_end MOD16_021ED1EC
+
+ thumb_func_start MOD16_021ED29C
+MOD16_021ED29C: ; 0x021ED29C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021ED2A2:
+ ldr r0, [r5]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021ED2A2
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED29C
+
+ thumb_func_start MOD16_021ED2B4
+MOD16_021ED2B4: ; 0x021ED2B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r6, r2, #0
+ ldr r4, [r1]
+ cmp r0, #0
+ bne _021ED2C8
+ bl ErrorHandling
+_021ED2C8:
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, _021ED390 ; =0x0000083F
+ bl FUN_020094F0
+ mov r1, #0x15
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #8]
+ mov r1, #0
+ bl FUN_02009E54
+ mov r1, #7
+ mvn r1, r1
+ str r1, [sp, #0x1c]
+ mov r1, #2
+ mov r2, #0
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r1, [sp, #0x28]
+ str r6, [sp, #0x2c]
+ bl FUN_0201E28C
+ add r7, r0, #0
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ mov r2, #2
+ bl MOD16_021DB388
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r2, _021ED394 ; =0x00000266
+ add r1, r6, #0
+ mov r3, #0x2d
+ bl MOD16_021DB3C8
+ lsr r0, r0, #1
+ neg r0, r0
+ str r6, [sp, #0xc]
+ str r0, [sp, #0x18]
+ ldr r0, [r5]
+ str r0, [sp, #0x14]
+ add r0, sp, #8
+ bl MOD16_021DB2BC
+ str r0, [r5, #8]
+ ldr r0, [r0]
+ add r1, r7, #4
+ bl FUN_02011A60
+ add r0, r6, #0
+ bl MOD16_021DB3BC
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ mov r2, #2
+ bl MOD16_021DB388
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r2, _021ED394 ; =0x00000266
+ add r1, r6, #0
+ mov r3, #0x2e
+ bl MOD16_021DB3C8
+ lsr r0, r0, #1
+ neg r0, r0
+ str r6, [sp, #0xc]
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #4]
+ str r0, [sp, #0x14]
+ add r0, sp, #8
+ bl MOD16_021DB2BC
+ str r0, [r5, #0xc]
+ ldr r0, [r0]
+ add r1, r7, #4
+ bl FUN_02011A60
+ add r0, r6, #0
+ bl MOD16_021DB3BC
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021ED390: .word 0x0000083F
+_021ED394: .word 0x00000266
+ thumb_func_end MOD16_021ED2B4
+
+ thumb_func_start MOD16_021ED398
+MOD16_021ED398: ; 0x021ED398
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021ED39E:
+ ldr r0, [r5, #8]
+ bl MOD16_021DB338
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021ED39E
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED398
+
+ thumb_func_start MOD16_021ED3B0
+MOD16_021ED3B0: ; 0x021ED3B0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r1, #0
+ add r1, r3, #0
+ str r2, [sp, #0xc]
+ ldr r4, [sp, #0x30]
+ ldr r6, [sp, #0x40]
+ mov r5, #0
+ bl MOD16_021D7B98
+ ldr r0, [sp, #0x3c]
+ ldr r1, [sp, #0xc]
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x38]
+ bl MOD16_021ED45C
+ ldr r0, [sp, #8]
+ bl FUN_0202022C
+ cmp r0, #3
+ bhi _021ED422
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021ED3EE: ; jump table
+ .short _021ED3F6 - _021ED3EE - 2 ; case 0
+ .short _021ED3F6 - _021ED3EE - 2 ; case 1
+ .short _021ED406 - _021ED3EE - 2 ; case 2
+ .short _021ED414 - _021ED3EE - 2 ; case 3
+_021ED3F6:
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021ED422
+ mov r0, #0
+ mov r5, #1
+ mov r7, #9
+ str r0, [r4]
+ b _021ED422
+_021ED406:
+ ldr r0, [r4]
+ cmp r0, #1
+ beq _021ED422
+ mov r5, #1
+ mov r7, #0xa
+ str r5, [r4]
+ b _021ED422
+_021ED414:
+ ldr r0, [r4]
+ cmp r0, #2
+ beq _021ED422
+ mov r0, #2
+ mov r5, #1
+ mov r7, #8
+ str r0, [r4]
+_021ED422:
+ cmp r5, #0
+ beq _021ED458
+ ldr r0, [r6]
+ cmp r0, #0
+ beq _021ED430
+ bl FUN_02016A18
+_021ED430:
+ ldr r0, [sp, #4]
+ ldr r3, [sp, #0x34]
+ ldr r0, [r0]
+ add r1, r7, #0
+ add r2, sp, #0x10
+ bl MOD16_021D8D70
+ str r0, [r6]
+ ldr r2, [sp, #0x10]
+ ldr r1, [sp, #0x2c]
+ ldr r2, [r2, #0xc]
+ mov r0, #0x1f
+ lsl r1, r1, #5
+ mov r3, #0x20
+ bl FUN_0201C2C8
+ cmp r0, #0
+ bne _021ED458
+ bl ErrorHandling
+_021ED458:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021ED3B0
+
+ thumb_func_start MOD16_021ED45C
+MOD16_021ED45C: ; 0x021ED45C
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r4, [sp, #0x10]
+ str r4, [sp]
+ bl MOD16_021D7C70
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD16_021ED45C
+
+ thumb_func_start MOD16_021ED46C
+MOD16_021ED46C: ; 0x021ED46C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0
+ add r6, r5, #0
+ add r4, r5, #0
+ str r1, [sp, #0x1c]
+ str r2, [sp, #0x20]
+ str r3, [sp, #0x24]
+ mov r7, #0
+ add r6, #0x38
+ add r4, #0x30
+_021ED482:
+ cmp r7, #0
+ bne _021ED48A
+ mov r1, #4
+ b _021ED48C
+_021ED48A:
+ mov r1, #5
+_021ED48C:
+ mov r0, #7
+ mvn r0, r0
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [sp, #0x24]
+ str r4, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #4
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ str r6, [sp, #0x18]
+ ldr r3, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [r5]
+ ldr r2, [r5, #8]
+ ldr r3, [r3, #0x10]
+ bl MOD16_021ED3B0
+ ldr r0, [sp, #0x20]
+ add r7, r7, #1
+ add r0, r0, #4
+ add r6, r6, #4
+ add r4, r4, #4
+ add r5, r5, #4
+ str r0, [sp, #0x20]
+ cmp r7, #2
+ blt _021ED482
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021ED46C
+
+ thumb_func_start MOD16_021ED4C8
+MOD16_021ED4C8: ; 0x021ED4C8
+ push {r3, lr}
+ ldr r2, _021ED504 ; =0x021C48B8
+ ldr r3, [r2, #0x48]
+ mov r2, #1
+ tst r3, r2
+ beq _021ED500
+ ldr r3, [r1, #4]
+ cmp r3, #1
+ bne _021ED4EC
+ mov r3, #0
+ str r3, [r1, #4]
+ ldr r3, [r1]
+ ldr r1, [r3]
+ orr r1, r2
+ str r1, [r3]
+ mov r1, #2
+ str r1, [r0, #0x10]
+ b _021ED4FA
+_021ED4EC:
+ str r2, [r1, #4]
+ ldr r3, [r1]
+ mov r1, #2
+ ldr r2, [r3]
+ orr r2, r1
+ str r2, [r3]
+ str r1, [r0, #0x14]
+_021ED4FA:
+ ldr r0, _021ED508 ; =0x000005DD
+ bl FUN_020054C8
+_021ED500:
+ pop {r3, pc}
+ nop
+_021ED504: .word 0x021C48B8
+_021ED508: .word 0x000005DD
+ thumb_func_end MOD16_021ED4C8
+
+ thumb_func_start MOD16_021ED50C
+MOD16_021ED50C: ; 0x021ED50C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ ldr r0, [r5, #0xc]
+ bl MOD16_021E95C8
+ cmp r0, #1
+ bne _021ED544
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ bne _021ED534
+ mov r0, #0x60
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0xbc
+ mov r2, #0x78
+ mov r3, #0x68
+ bl MOD16_021ED548
+ pop {r3, r4, r5, pc}
+_021ED534:
+ mov r0, #0x60
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x44
+ mov r2, #0x78
+ mov r3, #0x68
+ bl MOD16_021ED548
+_021ED544:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED50C
+
+ thumb_func_start MOD16_021ED548
+MOD16_021ED548: ; 0x021ED548
+ push {r3, r4, lr}
+ sub sp, #4
+ thumb_func_end MOD16_021ED548
+
+ thumb_func_start MOD16_021ED54C
+MOD16_021ED54C: ; 0x021ED54C
+ ldr r4, [sp, #0x10]
+ str r4, [sp]
+ ldr r0, [r0]
+ bl MOD16_021D8B04
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED54C
+
+ thumb_func_start MOD16_021ED55C
+MOD16_021ED55C: ; 0x021ED55C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r0, r7, #0
+ bl MOD16_021ED5C8
+ add r4, r0, #0
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD16_021ED604
+ str r4, [r5]
+ str r0, [r5, #4]
+ mov r0, #0
+ str r0, [r5, #0x20]
+ bl MOD16_021ED67C
+ str r0, [r5, #0x24]
+ ldr r0, _021ED59C ; =MOD16_021ED680
+ str r0, [r5, #8]
+ ldr r0, _021ED5A0 ; =MOD16_021ED6EC
+ str r0, [r5, #0xc]
+ ldr r0, _021ED5A4 ; =MOD16_021ED6FC
+ str r0, [r5, #0x10]
+ ldr r0, _021ED5A8 ; =MOD16_021ED710
+ str r0, [r5, #0x14]
+ ldr r0, _021ED5AC ; =MOD16_021ED7B4
+ str r0, [r5, #0x18]
+ ldr r0, _021ED5B0 ; =MOD16_021ED874
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021ED59C: .word MOD16_021ED680
+_021ED5A0: .word MOD16_021ED6EC
+_021ED5A4: .word MOD16_021ED6FC
+_021ED5A8: .word MOD16_021ED710
+_021ED5AC: .word MOD16_021ED7B4
+_021ED5B0: .word MOD16_021ED874
+ thumb_func_end MOD16_021ED55C
+
+ thumb_func_start MOD16_021ED5B4
+MOD16_021ED5B4: ; 0x021ED5B4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021ED648
+ ldr r0, [r4, #4]
+ bl MOD16_021ED65C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED5B4
+
+ thumb_func_start MOD16_021ED5C8
+MOD16_021ED5C8: ; 0x021ED5C8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #8
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021ED5DA
+ bl ErrorHandling
+_021ED5DA:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4]
+ add r0, r5, #0
+ mov r1, #5
+ bl MOD16_021D7B5C
+ str r0, [r4, #4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED5C8
+
+ thumb_func_start MOD16_021ED604
+MOD16_021ED604: ; 0x021ED604
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ mov r1, #0x20
+ add r5, r0, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021ED618
+ bl ErrorHandling
+_021ED618:
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x20
+ bl Call_FillMemWithValue
+ add r0, r6, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021EE090
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021EE110
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_02013EB0
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED604
+
+ thumb_func_start MOD16_021ED648
+MOD16_021ED648: ; 0x021ED648
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021ED652
+ bl ErrorHandling
+_021ED652:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED648
+
+ thumb_func_start MOD16_021ED65C
+MOD16_021ED65C: ; 0x021ED65C
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021ED666
+ bl ErrorHandling
+_021ED666:
+ add r0, r4, #0
+ bl MOD16_021EE0F0
+ add r0, r4, #0
+ bl MOD16_021EE14C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED65C
+
+ thumb_func_start MOD16_021ED67C
+MOD16_021ED67C: ; 0x021ED67C
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021ED67C
+
+ thumb_func_start MOD16_021ED680
+MOD16_021ED680: ; 0x021ED680
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r6, #4]
+ add r5, r1, #0
+ mov r1, #8
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021ED696
+ bl ErrorHandling
+_021ED696:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ str r4, [r6, #8]
+ ldr r0, [r5]
+ bl MOD16_021D9DE8
+ add r1, r0, #0
+ ldr r2, [r5]
+ ldr r0, _021ED6E8 ; =0x00001748
+ ldr r0, [r2, r0]
+ bl FUN_02087B78
+ add r6, r0, #0
+ ldr r0, [r5]
+ bl MOD16_021D9F4C
+ cmp r0, #0
+ bne _021ED6CC
+ mov r0, #0x5f
+ b _021ED6CE
+_021ED6CC:
+ mov r0, #0x55
+_021ED6CE:
+ lsl r0, r0, #2
+ cmp r6, r0
+ blt _021ED6DC
+ sub r0, r6, r0
+ str r0, [r4]
+ mov r0, #1
+ b _021ED6E2
+_021ED6DC:
+ sub r0, r0, r6
+ str r0, [r4]
+ mov r0, #0
+_021ED6E2:
+ str r0, [r4, #4]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021ED6E8: .word 0x00001748
+ thumb_func_end MOD16_021ED680
+
+ thumb_func_start MOD16_021ED6EC
+MOD16_021ED6EC: ; 0x021ED6EC
+ ldr r0, [r0, #0xc]
+ cmp r0, #1
+ bne _021ED6F6
+ mov r0, #1
+ bx lr
+_021ED6F6:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021ED6EC
+
+ thumb_func_start MOD16_021ED6FC
+MOD16_021ED6FC: ; 0x021ED6FC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED6FC
+
+ thumb_func_start MOD16_021ED710
+MOD16_021ED710: ; 0x021ED710
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r7, r0, #0
+ ldr r0, [r4]
+ str r2, [sp, #4]
+ ldr r6, [r3, #8]
+ ldr r5, [r4, #8]
+ cmp r0, #3
+ bhi _021ED7A8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021ED730: ; jump table
+ .short _021ED738 - _021ED730 - 2 ; case 0
+ .short _021ED75A - _021ED730 - 2 ; case 1
+ .short _021ED77C - _021ED730 - 2 ; case 2
+ .short _021ED792 - _021ED730 - 2 ; case 3
+_021ED738:
+ ldr r0, [r4, #4]
+ mov r1, #0xc4
+ bl FUN_02016998
+ str r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0xc4
+ bl Call_FillMemWithValue
+ ldr r0, [r4, #8]
+ mov r1, #1
+ add r0, #0xb8
+ str r1, [r0]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ED7A8
+_021ED75A:
+ ldr r0, [r4, #4]
+ add r1, r7, #0
+ str r0, [sp]
+ add r0, r5, #0
+ add r3, r6, #0
+ bl MOD16_021ED9E0
+ ldr r2, [sp, #4]
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r3, #1
+ bl MOD16_021ED8FC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ED7A8
+_021ED77C:
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r3, #1
+ bl MOD16_021ED984
+ cmp r0, #0
+ beq _021ED7A8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ED7A8
+_021ED792:
+ ldr r0, _021ED7B0 ; =0x021FF60C
+ ldr r2, [r6]
+ mov r1, #0x11
+ bl MOD16_021EE5A8
+ str r0, [r5, #0x34]
+ ldr r0, [r6, #4]
+ add sp, #8
+ str r0, [r5, #0x38]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021ED7A8:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021ED7B0: .word 0x021FF60C
+ thumb_func_end MOD16_021ED710
+
+ thumb_func_start MOD16_021ED7B4
+MOD16_021ED7B4: ; 0x021ED7B4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r2, r0, #0
+ ldr r0, [r4, #8]
+ cmp r1, #7
+ bhi _021ED86C
+ add r3, r1, r1
+ add r3, pc
+ ldrh r3, [r3, #6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_021ED7D0: ; jump table
+ .short _021ED7E0 - _021ED7D0 - 2 ; case 0
+ .short _021ED7FA - _021ED7D0 - 2 ; case 1
+ .short _021ED80A - _021ED7D0 - 2 ; case 2
+ .short _021ED818 - _021ED7D0 - 2 ; case 3
+ .short _021ED830 - _021ED7D0 - 2 ; case 4
+ .short _021ED83E - _021ED7D0 - 2 ; case 5
+ .short _021ED860 - _021ED7D0 - 2 ; case 6
+ .short _021ED86C - _021ED7D0 - 2 ; case 7
+_021ED7E0:
+ add r1, r0, #0
+ mov r2, #1
+ add r1, #0xb8
+ str r2, [r1]
+ ldr r0, [r0, #0x34]
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021ED7F4
+ str r2, [r4]
+ b _021ED86C
+_021ED7F4:
+ mov r0, #3
+ str r0, [r4]
+ b _021ED86C
+_021ED7FA:
+ add r1, r2, #0
+ ldr r2, [r0, #0x38]
+ bl MOD16_021EE158
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ED86C
+_021ED80A:
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021ED86C
+ add r0, r1, #1
+ str r0, [r4]
+ b _021ED86C
+_021ED818:
+ ldr r3, [r0, #0x34]
+ ldr r1, [r0, #0x38]
+ str r1, [sp]
+ add r1, r2, #0
+ ldrh r2, [r3, #8]
+ ldrh r3, [r3, #0xa]
+ bl MOD16_021EE358
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ED86C
+_021ED830:
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021ED86C
+ add r0, r1, #1
+ str r0, [r4]
+ b _021ED86C
+_021ED83E:
+ ldr r2, [r0, #0x34]
+ ldr r1, [r2, #0xc]
+ cmp r1, #0
+ beq _021ED85A
+ ldr r1, [r2, #0x10]
+ ldr r2, [r0, #0x38]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ bl MOD16_021EE428
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ED86C
+_021ED85A:
+ mov r0, #7
+ str r0, [r4]
+ b _021ED86C
+_021ED860:
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021ED86C
+ add r0, r1, #1
+ str r0, [r4]
+_021ED86C:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED7B4
+
+ thumb_func_start MOD16_021ED874
+MOD16_021ED874: ; 0x021ED874
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r3, r0, #0
+ ldr r0, [r4, #8]
+ cmp r1, #4
+ bhi _021ED8F0
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021ED88E: ; jump table
+ .short _021ED898 - _021ED88E - 2 ; case 0
+ .short _021ED8A8 - _021ED88E - 2 ; case 1
+ .short _021ED8BC - _021ED88E - 2 ; case 2
+ .short _021ED8CA - _021ED88E - 2 ; case 3
+ .short _021ED8EC - _021ED88E - 2 ; case 4
+_021ED898:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021ED8FC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ED8F0
+_021ED8A8:
+ add r1, r3, #0
+ mov r3, #0
+ bl MOD16_021ED984
+ cmp r0, #0
+ beq _021ED8F0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ED8F0
+_021ED8BC:
+ add r1, r3, #0
+ bl MOD16_021EDA3C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ED8F0
+_021ED8CA:
+ add r1, r0, #0
+ add r1, #0xb8
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _021ED8DA
+ ldr r0, [r0, #0x3c]
+ bl FUN_0200CAB4
+_021ED8DA:
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021ED8F0
+_021ED8EC:
+ mov r0, #1
+ pop {r4, pc}
+_021ED8F0:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD16_021ED874
+
+ thumb_func_start MOD16_021ED8F4
+MOD16_021ED8F4: ; 0x021ED8F4
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021ED8F4
+
+ thumb_func_start MOD16_021ED8F8
+MOD16_021ED8F8: ; 0x021ED8F8
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021ED8F8
+
+ thumb_func_start MOD16_021ED8FC
+MOD16_021ED8FC: ; 0x021ED8FC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r2, #0
+ add r7, r0, #0
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021ED8F4
+ ldr r0, [r4, #4]
+ bl MOD16_021E8C68
+ cmp r0, #0
+ beq _021ED97E
+ cmp r6, #0
+ beq _021ED95C
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2b
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ str r3, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r2, r1, #0
+ sub r2, #0x11
+ bl MOD16_021D8988
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A48
+ add r1, r0, #0
+ neg r1, r1
+ lsl r1, r1, #0x18
+ add r0, r7, #0
+ lsr r1, r1, #0x18
+ mov r2, #0
+ bl MOD16_021EE5D0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_021ED95C:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2b
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r0, #0x5b
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ add r3, r1, #0
+ sub r3, #0x11
+ bl MOD16_021D8988
+_021ED97E:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021ED8FC
+
+ thumb_func_start MOD16_021ED984
+MOD16_021ED984: ; 0x021ED984
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r2, #4]
+ add r4, r1, #0
+ add r6, r3, #0
+ bl MOD16_021E8C68
+ cmp r0, #0
+ ldr r1, [r4]
+ beq _021ED9A4
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ b _021ED9AE
+_021ED9A4:
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A7C
+_021ED9AE:
+ cmp r0, #0
+ beq _021ED9C0
+ cmp r6, #0
+ beq _021ED9BC
+ add r0, r5, #0
+ bl MOD16_021ED8F8
+_021ED9BC:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021ED9C0:
+ mov r0, #0x5b
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD16_021D8A48
+ add r1, r0, #0
+ neg r1, r1
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ mov r2, #0
+ bl MOD16_021EE5D0
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021ED984
+
+ thumb_func_start MOD16_021ED9E0
+MOD16_021ED9E0: ; 0x021ED9E0
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, [sp, #0x18]
+ add r7, r2, #0
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD16_021EDA7C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EDEC8
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD16_021EDF78
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ add r3, r4, #0
+ bl MOD16_021EDAE4
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ add r3, r4, #0
+ bl MOD16_021EDD04
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ add r3, r4, #0
+ bl MOD16_021EDEC0
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ bl FUN_02013F2C
+ ldr r0, [r5, #0xc]
+ mov r1, #1
+ bl FUN_02013EB0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021ED9E0
+
+ thumb_func_start MOD16_021EDA3C
+MOD16_021EDA3C: ; 0x021EDA3C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD16_021EDEC4
+ add r0, r5, #0
+ bl MOD16_021EDE9C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EDC70
+ ldr r0, [r4]
+ mov r1, #0
+ add r0, r0, #4
+ bl FUN_02019620
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02018744
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_02013EB0
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_02013F2C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EDA3C
+
+ thumb_func_start MOD16_021EDA7C
+MOD16_021EDA7C: ; 0x021EDA7C
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ add r5, r2, #0
+ str r5, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x21
+ mov r3, #3
+ bl MOD16_021D8CB4
+ str r5, [sp]
+ ldr r0, [r4]
+ mov r1, #0x49
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r5, r0, #0
+ ldrh r0, [r2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r5, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ mov r1, #3
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EDA7C
+
+ thumb_func_start MOD16_021EDAE4
+MOD16_021EDAE4: ; 0x021EDAE4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0
+ add r0, r2, #0
+ add r7, r1, #0
+ ldr r0, [r0]
+ str r2, [sp, #0x10]
+ add r4, r3, #0
+ ldr r6, [r7]
+ bl MOD16_021D9DE8
+ str r0, [sp, #0x1c]
+ ldr r0, [r7]
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x1c]
+ ldr r0, [r0]
+ bl MOD16_021D9964
+ add r2, r0, #0
+ ldr r0, [sp, #0x1c]
+ mov r1, #0
+ bl FUN_0206B6D4
+ str r0, [sp, #0x20]
+ bl FUN_0206B888
+ str r0, [sp, #0x24]
+ bl FUN_0206B88C
+ str r0, [sp, #0x18]
+ bl FUN_0206B898
+ str r0, [sp, #0x14]
+ mov r0, #0x7d
+ lsl r0, r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ ldr r2, [sp, #0x20]
+ mov r1, #0x13
+ mov r3, #0
+ bl FUN_02008F34
+ str r0, [r5, #0x14]
+ bl FUN_02009B78
+ ldr r0, [r5, #0x14]
+ bl FUN_02009474
+ mov r0, #0x7d
+ lsl r0, r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ ldr r2, [sp, #0x24]
+ mov r1, #0x13
+ mov r3, #0
+ bl FUN_02008FEC
+ str r0, [r5, #0x18]
+ bl FUN_02009D68
+ cmp r0, #0
+ bne _021EDB82
+ bl ErrorHandling
+_021EDB82:
+ add r0, r4, #0
+ mov r1, #0x60
+ bl FUN_02016998
+ add r1, r5, #0
+ add r1, #0xbc
+ str r0, [r1]
+ mov r0, #0x7d
+ lsl r0, r0, #6
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ ldr r2, [sp, #0x18]
+ mov r1, #0x13
+ mov r3, #0
+ bl FUN_020090AC
+ str r0, [r5, #0x1c]
+ mov r0, #0x7d
+ lsl r0, r0, #6
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ ldr r2, [sp, #0x14]
+ mov r1, #0x13
+ mov r3, #0
+ bl FUN_020090AC
+ str r0, [r5, #0x20]
+ ldr r0, _021EDC60 ; =0x00001BB5
+ mov r3, #1
+ str r0, [sp]
+ str r3, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ add r1, r7, #0
+ mov r2, #0x5d
+ bl FUN_020091E0
+ str r0, [r5, #0x24]
+ bl FUN_02009B04
+ ldr r0, [r5, #0x24]
+ bl FUN_02009474
+ ldr r0, _021EDC64 ; =0x00001B66
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ mov r0, #0x51
+ str r4, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0xe
+ mov r3, #0
+ bl FUN_02009298
+ str r0, [r5, #0x28]
+ bl FUN_02009D68
+ add r0, r4, #0
+ mov r1, #0xa0
+ bl FUN_02016998
+ add r1, r5, #0
+ add r1, #0xc0
+ str r0, [r1]
+ ldr r0, _021EDC68 ; =0x00001BB3
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x5b
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x2c]
+ ldr r0, _021EDC6C ; =0x00001BB4
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x5c
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x30]
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021EDC60: .word 0x00001BB5
+_021EDC64: .word 0x00001B66
+_021EDC68: .word 0x00001BB3
+_021EDC6C: .word 0x00001BB4
+ thumb_func_end MOD16_021EDAE4
+
+ thumb_func_start MOD16_021EDC70
+MOD16_021EDC70: ; 0x021EDC70
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x14]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ ldr r0, [r5, #0x18]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x14]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x18]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x1c]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x20]
+ bl FUN_02009490
+ ldr r0, [r5, #0x24]
+ bl FUN_02009C0C
+ ldr r0, [r5, #0x28]
+ bl FUN_02009E04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x24]
+ bl FUN_02009490
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x28]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x2c]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x30]
+ bl FUN_02009490
+ add r0, r5, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r5, #0xc0
+ ldr r0, [r5]
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EDC70
+
+ thumb_func_start MOD16_021EDD04
+MOD16_021EDD04: ; 0x021EDD04
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x80
+ add r6, r2, #0
+ add r5, r0, #0
+ ldr r0, [r6]
+ add r7, r3, #0
+ ldr r4, [r1]
+ bl MOD16_021D9DE8
+ str r0, [sp, #0x2c]
+ ldr r0, [r6]
+ ldr r1, [sp, #0x2c]
+ bl MOD16_021D9964
+ ldr r3, _021EDE98 ; =0x00001BB4
+ str r0, [sp, #0x30]
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ mov r0, #3
+ str r0, [sp, #0x10]
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ str r1, [sp, #0x14]
+ add r1, r0, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #0x18]
+ add r1, r0, #0
+ add r1, #8
+ ldr r1, [r4, r1]
+ add r0, #0xc
+ str r1, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ add r1, r3, #1
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r2, r3, #0
+ add r0, sp, #0x5c
+ sub r2, #0x4e
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ str r0, [sp, #0x3c]
+ add r0, sp, #0x5c
+ str r0, [sp, #0x40]
+ mov r0, #0x1f
+ str r0, [sp, #0x50]
+ mov r0, #0x2e
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x44]
+ lsl r0, r1, #0x12
+ str r0, [sp, #0x48]
+ str r1, [sp, #0x54]
+ str r7, [sp, #0x58]
+ add r0, sp, #0x3c
+ bl FUN_0201FF84
+ str r0, [r5]
+ ldr r0, [r6]
+ bl MOD16_021D9F4C
+ cmp r0, #0
+ ldr r0, [r5]
+ bne _021EDDA0
+ mov r1, #3
+ bl FUN_02020130
+ b _021EDDA6
+_021EDDA0:
+ mov r1, #4
+ bl FUN_02020130
+_021EDDA6:
+ mov r0, #2
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x44]
+ mov r0, #0x6a
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x48]
+ add r0, sp, #0x3c
+ bl FUN_0201FF84
+ str r0, [r5, #8]
+ mov r1, #1
+ bl FUN_02020130
+ ldr r0, [r5, #8]
+ mov r1, #1
+ bl FUN_02020238
+ mov r0, #0x2e
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x44]
+ mov r0, #0x16
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x48]
+ add r0, sp, #0x3c
+ bl FUN_0201FF84
+ mov r1, #0
+ str r0, [r5, #0xc]
+ bl FUN_02020130
+ mov r0, #0x12
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x44]
+ mov r0, #0x16
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x48]
+ add r0, sp, #0x3c
+ bl FUN_0201FF84
+ str r0, [r5, #0x10]
+ mov r1, #0
+ bl FUN_02020130
+ ldr r0, [r5, #0x14]
+ bl FUN_02009530
+ add r6, r0, #0
+ ldr r0, [r5, #0x18]
+ bl FUN_02009530
+ str r0, [sp, #0x34]
+ ldr r0, [r5, #0x1c]
+ bl FUN_02009530
+ str r0, [sp, #0x38]
+ ldr r0, [r5, #0x20]
+ bl FUN_02009530
+ str r0, [sp]
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #3
+ str r0, [sp, #0x10]
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r2, [r4, r0]
+ ldr r3, [sp, #0x38]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ ldr r2, [sp, #0x34]
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r0, sp, #0x5c
+ add r1, r6, #0
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x3c]
+ add r0, sp, #0x5c
+ str r0, [sp, #0x40]
+ mov r0, #0x1f
+ str r0, [sp, #0x50]
+ mov r0, #0x12
+ mov r1, #1
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x44]
+ lsl r0, r1, #0x12
+ str r0, [sp, #0x48]
+ str r1, [sp, #0x54]
+ str r7, [sp, #0x58]
+ add r0, sp, #0x3c
+ bl FUN_0201FF84
+ str r0, [r5, #4]
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #0x30]
+ mov r2, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [r5, #4]
+ bl FUN_0202027C
+ add sp, #0x80
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021EDE98: .word 0x00001BB4
+ thumb_func_end MOD16_021EDD04
+
+ thumb_func_start MOD16_021EDE9C
+MOD16_021EDE9C: ; 0x021EDE9C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #4]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #8]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #0xc]
+ bl FUN_0201FFC8
+ ldr r0, [r4, #0x10]
+ bl FUN_0201FFC8
+ pop {r4, pc}
+ thumb_func_end MOD16_021EDE9C
+
+ thumb_func_start MOD16_021EDEC0
+MOD16_021EDEC0: ; 0x021EDEC0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EDEC0
+
+ thumb_func_start MOD16_021EDEC4
+MOD16_021EDEC4: ; 0x021EDEC4
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EDEC4
+
+ thumb_func_start MOD16_021EDEC8
+MOD16_021EDEC8: ; 0x021EDEC8
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0x20
+ add r6, r1, #0
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r2, _021EDF70 ; =0x00000266
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r6, #0
+ bl FUN_0200A86C
+ mov r1, #0x2c
+ add r2, r4, #0
+ add r6, r0, #0
+ bl FUN_0200A8E0
+ mov r0, #0
+ mov r3, #1
+ add r1, r4, #0
+ add r2, r0, #0
+ lsl r3, r3, #8
+ bl FUN_02002F40
+ add r3, r0, #0
+ mov r0, #0x18
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EDF74 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r0, r0, #4
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ mov r1, #0xa
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #0xa8
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EDF74 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r0, r0, #4
+ mov r3, #0x20
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ mov r1, #0xa
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #0xa8
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EDF74 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r0, r0, #4
+ mov r3, #0x98
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_021EDF70: .word 0x00000266
+_021EDF74: .word 0x00020100
+ thumb_func_end MOD16_021EDEC8
+
+ thumb_func_start MOD16_021EDF78
+MOD16_021EDF78: ; 0x021EDF78
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r7, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x20
+ add r1, r7, #0
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r2, _021EE084 ; =0x0000026B
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r7, #0
+ bl FUN_0200A86C
+ str r0, [sp, #0x10]
+ ldr r0, [r6]
+ bl MOD16_021D9DE8
+ add r1, r7, #0
+ str r0, [sp, #0x14]
+ bl FUN_0200AA50
+ str r0, [sp, #0x18]
+ mov r0, #0x98
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EE088 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ ldr r2, [sp, #0x18]
+ add r0, r0, #4
+ mov r3, #0x1a
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x6e
+ sub r3, r1, r0
+ mov r0, #0xa8
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EE088 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r0, r0, #4
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x10]
+ bl FUN_0200A8B8
+ ldr r2, _021EE08C ; =0x00000266
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r7, #0
+ bl FUN_0200A86C
+ add r7, r0, #0
+ ldr r0, [r6]
+ bl MOD16_021D9F40
+ add r2, r0, #0
+ mov r0, #0x98
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EE088 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ mov r3, #0x92
+ add r0, r0, #4
+ bl FUN_0201BDE0
+ ldr r0, [r6]
+ bl MOD16_021D9F4C
+ cmp r0, #0
+ bne _021EE044
+ add r0, r7, #0
+ mov r1, #0x61
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ b _021EE04E
+_021EE044:
+ add r0, r7, #0
+ mov r1, #0x62
+ add r2, r4, #0
+ bl FUN_0200A8E0
+_021EE04E:
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xe6
+ sub r3, r1, r0
+ mov r0, #0xa8
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021EE088 ; =0x00020100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r0, [r5]
+ add r2, r4, #0
+ add r0, r0, #4
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EE084: .word 0x0000026B
+_021EE088: .word 0x00020100
+_021EE08C: .word 0x00000266
+ thumb_func_end MOD16_021EDF78
+
+ thumb_func_start MOD16_021EE090
+MOD16_021EE090: ; 0x021EE090
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ add r4, r0, #0
+ str r5, [sp]
+ add r3, r4, #0
+ ldr r0, [r4]
+ mov r1, #0x24
+ mov r2, #1
+ add r3, #0x18
+ bl MOD16_021D8D98
+ str r0, [r4, #0x10]
+ add r2, r4, #0
+ ldr r0, [r4]
+ mov r1, #6
+ add r2, #0x1c
+ add r3, r5, #0
+ bl MOD16_021D8D70
+ str r0, [r4, #0x14]
+ mov r0, #0x5a
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #8]
+ add r0, sp, #4
+ bl FUN_02013D98
+ str r0, [r4, #4]
+ mov r0, #0x5a
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x1c]
+ str r0, [sp, #0x10]
+ mov r0, #0x10
+ str r0, [sp, #0x14]
+ add r0, sp, #0xc
+ bl FUN_02013E14
+ str r0, [r4, #8]
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EE090
+
+ thumb_func_start MOD16_021EE0F0
+MOD16_021EE0F0: ; 0x021EE0F0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_02013DD4
+ ldr r0, [r4, #8]
+ bl FUN_02013E44
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x14]
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EE0F0
+
+ thumb_func_start MOD16_021EE110
+MOD16_021EE110: ; 0x021EE110
+ push {r4, lr}
+ sub sp, #0x20
+ add r4, r0, #0
+ mov r0, #0x5a
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x40
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ mov r2, #0
+ str r0, [sp, #4]
+ ldr r0, [r4, #8]
+ str r0, [sp, #8]
+ add r0, sp, #0
+ strh r1, [r0, #0xc]
+ mov r1, #0x58
+ strh r1, [r0, #0xe]
+ strh r2, [r0, #0x10]
+ mov r1, #0x1f
+ str r1, [sp, #0x14]
+ str r2, [sp, #0x18]
+ strh r2, [r0, #0x1c]
+ add r0, sp, #0
+ bl FUN_02013E84
+ str r0, [r4, #0xc]
+ add sp, #0x20
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EE110
+
+ thumb_func_start MOD16_021EE14C
+MOD16_021EE14C: ; 0x021EE14C
+ ldr r3, _021EE154 ; =0x02013EA9
+ ldr r0, [r0, #0xc]
+ bx r3
+ nop
+_021EE154: .word 0x02013EA9
+ thumb_func_end MOD16_021EE14C
+
+ thumb_func_start MOD16_021EE158
+MOD16_021EE158: ; 0x021EE158
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #0xc]
+ mov r1, #0
+ str r0, [r4, #0x40]
+ ldr r0, [r4, #0xc]
+ str r0, [r4, #0x44]
+ ldr r0, [r4, #0x10]
+ str r0, [r4, #0x48]
+ ldr r0, [r4]
+ str r0, [r4, #0x4c]
+ ldr r0, [r4, #4]
+ str r0, [r4, #0x50]
+ add r0, r4, #0
+ str r1, [r4, #0x6c]
+ add r0, #0xb8
+ str r0, [r4, #0x70]
+ add r0, r4, #0
+ add r0, #0xb8
+ str r1, [r0]
+ cmp r2, #0
+ bne _021EE188
+ sub r0, r1, #1
+ b _021EE18A
+_021EE188:
+ mov r0, #1
+_021EE18A:
+ str r0, [r4, #0x54]
+ add r1, r4, #0
+ ldr r0, _021EE19C ; =MOD16_021EE1A0
+ add r1, #0x40
+ mov r2, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x3c]
+ pop {r4, pc}
+ .align 2, 0
+_021EE19C: .word MOD16_021EE1A0
+ thumb_func_end MOD16_021EE158
+
+ thumb_func_start MOD16_021EE1A0
+MOD16_021EE1A0: ; 0x021EE1A0
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0x2c]
+ cmp r1, #5
+ bhi _021EE248
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021EE1B6: ; jump table
+ .short _021EE1C2 - _021EE1B6 - 2 ; case 0
+ .short _021EE1CA - _021EE1B6 - 2 ; case 1
+ .short _021EE1D2 - _021EE1B6 - 2 ; case 2
+ .short _021EE1F4 - _021EE1B6 - 2 ; case 3
+ .short _021EE214 - _021EE1B6 - 2 ; case 4
+ .short _021EE23E - _021EE1B6 - 2 ; case 5
+_021EE1C2:
+ mov r0, #2
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_021EE1CA:
+ add r0, r4, #0
+ bl MOD16_021EE254
+ pop {r4, pc}
+_021EE1D2:
+ ldr r1, [r4, #0x14]
+ ldr r0, _021EE24C ; =0xFFFFFDDE
+ mul r0, r1
+ str r0, [r4, #0x24]
+ mov r0, #0xb5
+ ldr r1, [r4, #0x14]
+ mvn r0, r0
+ mul r0, r1
+ str r0, [r4, #0x20]
+ mov r0, #3
+ str r0, [r4, #0x28]
+ mov r0, #1
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ bl MOD16_021EE254
+ pop {r4, pc}
+_021EE1F4:
+ ldr r1, [r4, #0x14]
+ ldr r0, _021EE250 ; =0x00000222
+ mul r0, r1
+ str r0, [r4, #0x24]
+ ldr r1, [r4, #0x14]
+ mov r0, #0xb6
+ mul r0, r1
+ str r0, [r4, #0x20]
+ mov r0, #4
+ str r0, [r4, #0x28]
+ mov r0, #1
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ bl MOD16_021EE254
+ pop {r4, pc}
+_021EE214:
+ mov r1, #0
+ str r1, [r4, #0x24]
+ ldr r0, [r4, #0x14]
+ sub r1, #0xb6
+ mul r1, r0
+ str r1, [r4, #0x20]
+ mov r0, #1
+ str r0, [r4, #0x2c]
+ ldr r0, [r4, #0x18]
+ sub r0, r0, #1
+ str r0, [r4, #0x18]
+ cmp r0, #0
+ ble _021EE232
+ mov r0, #2
+ b _021EE234
+_021EE232:
+ mov r0, #5
+_021EE234:
+ str r0, [r4, #0x28]
+ add r0, r4, #0
+ bl MOD16_021EE254
+ pop {r4, pc}
+_021EE23E:
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x30]
+ mov r1, #1
+ str r1, [r0]
+_021EE248:
+ pop {r4, pc}
+ nop
+_021EE24C: .word 0xFFFFFDDE
+_021EE250: .word 0x00000222
+ thumb_func_end MOD16_021EE1A0
+
+ thumb_func_start MOD16_021EE254
+MOD16_021EE254: ; 0x021EE254
+ push {r3, lr}
+ sub sp, #8
+ add r3, r0, #0
+ ldr r2, [r3, #0x20]
+ ldr r1, [r3, #0x24]
+ cmp r2, #0
+ bge _021EE276
+ ldr r0, [r3, #0x1c]
+ add r0, r0, r2
+ cmp r0, r1
+ blt _021EE26E
+ str r0, [r3, #0x1c]
+ b _021EE288
+_021EE26E:
+ str r1, [r3, #0x1c]
+ ldr r0, [r3, #0x28]
+ str r0, [r3, #0x2c]
+ b _021EE288
+_021EE276:
+ ldr r0, [r3, #0x1c]
+ add r0, r0, r2
+ cmp r0, r1
+ bgt _021EE282
+ str r0, [r3, #0x1c]
+ b _021EE288
+_021EE282:
+ str r1, [r3, #0x1c]
+ ldr r0, [r3, #0x28]
+ str r0, [r3, #0x2c]
+_021EE288:
+ ldr r0, [r3, #0x10]
+ str r0, [sp]
+ ldr r0, [r3, #0x1c]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r3]
+ ldr r1, [r3, #4]
+ ldr r2, [r3, #8]
+ ldr r3, [r3, #0xc]
+ bl MOD16_021EE2A4
+ add sp, #8
+ pop {r3, pc}
+ thumb_func_end MOD16_021EE254
+
+ thumb_func_start MOD16_021EE2A4
+MOD16_021EE2A4: ; 0x021EE2A4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r1, #0
+ add r1, sp, #0x18
+ ldrh r1, [r1, #0x14]
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02013F2C
+ add r0, sp, #0x18
+ ldrh r0, [r0, #0x14]
+ mov r2, #0xe
+ lsl r2, r2, #0xe
+ asr r0, r0, #4
+ lsl r4, r0, #1
+ add r0, r4, #1
+ lsl r1, r0, #1
+ ldr r0, _021EE354 ; =0x020FFA38
+ mov r3, #0
+ ldrsh r0, [r0, r1]
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r5, r2, #0xc
+ orr r5, r0
+ mov r2, #0xe
+ ldr r0, _021EE354 ; =0x020FFA38
+ lsl r1, r4, #1
+ ldrsh r0, [r0, r1]
+ lsl r2, r2, #0xe
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ lsl r2, r2, #0xa
+ mov r3, #0
+ add r0, r0, r2
+ adc r1, r3
+ lsr r4, r0, #0xc
+ lsl r0, r2, #8
+ lsl r1, r1, #0x14
+ add r0, r5, r0
+ orr r4, r1
+ str r0, [sp, #4]
+ lsl r0, r2, #7
+ add r0, r4, r0
+ str r0, [sp, #8]
+ ldr r0, [sp]
+ add r1, sp, #4
+ bl FUN_02020044
+ mov r0, #6
+ ldr r1, [sp, #8]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r1, sp, #4
+ bl FUN_02020044
+ mov r0, #2
+ lsl r0, r0, #0x12
+ sub r1, r0, r5
+ lsr r0, r0, #1
+ sub r0, r0, r4
+ str r0, [sp, #8]
+ str r1, [sp, #4]
+ ldr r0, [sp, #0x28]
+ add r1, sp, #4
+ bl FUN_02020044
+ mov r0, #6
+ ldr r1, [sp, #8]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #8]
+ add r0, r7, #0
+ add r1, sp, #4
+ bl FUN_02020044
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EE354: .word 0x020FFA38
+ thumb_func_end MOD16_021EE2A4
+
+ thumb_func_start MOD16_021EE358
+MOD16_021EE358: ; 0x021EE358
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #0xc]
+ add r5, r4, #0
+ str r0, [r4, #0x74]
+ ldr r0, [r4, #0xc]
+ add r5, #0xb8
+ str r0, [r4, #0x78]
+ ldr r0, [r4, #0x10]
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ ldr r1, [r4]
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ add r0, #0x84
+ str r1, [r0]
+ add r1, r4, #0
+ mov r0, #0
+ add r1, #0x88
+ str r0, [r1]
+ add r1, r4, #0
+ add r1, #0x94
+ str r5, [r1]
+ add r1, r4, #0
+ add r1, #0xb8
+ str r0, [r1]
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ bne _021EE3A4
+ add r0, r4, #0
+ add r0, #0x8c
+ str r2, [r0]
+ add r0, r4, #0
+ add r0, #0x90
+ str r3, [r0]
+ b _021EE3B4
+_021EE3A4:
+ add r0, r4, #0
+ neg r1, r2
+ add r0, #0x8c
+ str r1, [r0]
+ add r0, r4, #0
+ neg r1, r3
+ add r0, #0x90
+ str r1, [r0]
+_021EE3B4:
+ add r1, r4, #0
+ ldr r0, _021EE3C4 ; =MOD16_021EE3C8
+ add r1, #0x74
+ mov r2, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x3c]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021EE3C4: .word MOD16_021EE3C8
+ thumb_func_end MOD16_021EE358
+
+ thumb_func_start MOD16_021EE3C8
+MOD16_021EE3C8: ; 0x021EE3C8
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5, #0x18]
+ mov r4, #0
+ cmp r0, #0
+ ldr r2, [r5, #0x1c]
+ bge _021EE3EC
+ ldr r1, [r5, #0x14]
+ add r0, r1, r0
+ cmp r0, r2
+ blt _021EE3E6
+ str r0, [r5, #0x14]
+ b _021EE3FC
+_021EE3E6:
+ str r2, [r5, #0x14]
+ mov r4, #1
+ b _021EE3FC
+_021EE3EC:
+ ldr r1, [r5, #0x14]
+ add r0, r1, r0
+ cmp r0, r2
+ bgt _021EE3F8
+ str r0, [r5, #0x14]
+ b _021EE3FC
+_021EE3F8:
+ str r2, [r5, #0x14]
+ mov r4, #1
+_021EE3FC:
+ ldr r0, [r5, #0x10]
+ str r0, [sp]
+ ldr r0, [r5, #0x14]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ ldr r1, [r5, #4]
+ ldr r2, [r5, #8]
+ ldr r3, [r5, #0xc]
+ bl MOD16_021EE2A4
+ cmp r4, #1
+ bne _021EE424
+ add r0, r6, #0
+ bl FUN_0200CAB4
+ ldr r0, [r5, #0x20]
+ mov r1, #1
+ str r1, [r0]
+_021EE424:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021EE3C8
+
+ thumb_func_start MOD16_021EE428
+MOD16_021EE428: ; 0x021EE428
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r2, #0
+ bne _021EE436
+ ldr r1, [r5, #4]
+ b _021EE438
+_021EE436:
+ ldr r1, [r5]
+_021EE438:
+ add r0, #0x98
+ str r1, [r0]
+ neg r0, r4
+ lsl r1, r0, #1
+ add r0, r5, #0
+ add r0, #0xa8
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ bl FUN_0202011C
+ add r1, r5, #0
+ ldr r2, [r0]
+ add r1, #0x9c
+ str r2, [r1]
+ ldr r1, [r0, #4]
+ add r0, r5, #0
+ add r0, #0xa0
+ str r1, [r0]
+ add r0, r5, #0
+ add r1, r5, #0
+ mov r2, #0
+ add r0, #0xac
+ str r2, [r0]
+ add r0, r5, #0
+ add r0, #0xa4
+ strh r4, [r0]
+ add r0, r5, #0
+ add r0, #0xb0
+ str r2, [r0]
+ add r0, r5, #0
+ add r1, #0xb8
+ add r0, #0xb4
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xb8
+ str r2, [r0]
+ add r1, r5, #0
+ ldr r0, _021EE494 ; =MOD16_021EE498
+ add r1, #0x98
+ bl FUN_0200CA44
+ str r0, [r5, #0x3c]
+ pop {r3, r4, r5, pc}
+ nop
+_021EE494: .word MOD16_021EE498
+ thumb_func_end MOD16_021EE428
+
+ thumb_func_start MOD16_021EE498
+MOD16_021EE498: ; 0x021EE498
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x18]
+ cmp r0, #3
+ bhi _021EE5A2
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EE4B2: ; jump table
+ .short _021EE4BA - _021EE4B2 - 2 ; case 0
+ .short _021EE50C - _021EE4B2 - 2 ; case 1
+ .short _021EE540 - _021EE4B2 - 2 ; case 2
+ .short _021EE586 - _021EE4B2 - 2 ; case 3
+_021EE4BA:
+ ldr r0, [r4, #0x14]
+ add r3, r0, #1
+ str r3, [r4, #0x14]
+ mov r0, #0xc
+ ldrsh r0, [r4, r0]
+ add r1, r3, #0
+ mul r1, r3
+ add r2, r0, #0
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ mul r2, r3
+ asr r0, r0, #1
+ add r2, r2, r0
+ ldr r0, [r4, #4]
+ str r0, [sp]
+ ldr r1, [r4, #8]
+ lsl r0, r2, #0xc
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0
+ bl FUN_02020044
+ ldr r1, [r4, #0x14]
+ ldr r0, [r4, #0x10]
+ cmp r1, r0
+ blt _021EE5A2
+ mov r0, #0
+ str r0, [r4, #0x14]
+ mov r0, #0xc
+ ldrsh r1, [r4, r0]
+ add sp, #0xc
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ add r0, r0, #1
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ pop {r4, r5, pc}
+_021EE50C:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ bne _021EE528
+ mov r0, #2
+ ldr r1, [r4, #4]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp]
+ ldr r0, [r4, #8]
+ add r1, sp, #0
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ bl FUN_02020044
+_021EE528:
+ ldr r0, [r4, #0x14]
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ cmp r0, #1
+ ble _021EE5A2
+ mov r0, #0
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0x18]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ pop {r4, r5, pc}
+_021EE540:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ bne _021EE55C
+ mov r0, #2
+ ldr r1, [r4, #4]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp]
+ ldr r0, [r4, #8]
+ add r1, sp, #0
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ bl FUN_02020044
+_021EE55C:
+ ldr r0, [r4, #0x14]
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ cmp r0, #1
+ ble _021EE5A2
+ ldr r0, [r4, #0x10]
+ sub r0, r0, #1
+ str r0, [r4, #0x10]
+ cmp r0, #0
+ ble _021EE57C
+ mov r0, #0
+ str r0, [r4, #0x14]
+ mov r0, #1
+ add sp, #0xc
+ str r0, [r4, #0x18]
+ pop {r4, r5, pc}
+_021EE57C:
+ ldr r0, [r4, #0x18]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ pop {r4, r5, pc}
+_021EE586:
+ ldr r0, [r4, #4]
+ add r1, sp, #0
+ str r0, [sp]
+ ldr r0, [r4, #8]
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ bl FUN_02020044
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ str r1, [r0]
+_021EE5A2:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EE498
+
+ thumb_func_start MOD16_021EE5A8
+MOD16_021EE5A8: ; 0x021EE5A8
+ push {r4, r5}
+ mov r4, #0
+ cmp r1, #0
+ ble _021EE5CA
+ add r5, r0, #0
+_021EE5B2:
+ ldr r3, [r5]
+ cmp r3, r2
+ blt _021EE5C2
+ mov r1, #0x14
+ mul r1, r4
+ add r0, r0, r1
+ pop {r4, r5}
+ bx lr
+_021EE5C2:
+ add r4, r4, #1
+ add r5, #0x14
+ cmp r4, r1
+ blt _021EE5B2
+_021EE5CA:
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD16_021EE5A8
+
+ thumb_func_start MOD16_021EE5D0
+MOD16_021EE5D0: ; 0x021EE5D0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [r5, #0x18]
+ add r7, r1, #0
+ add r4, r2, #0
+ bl FUN_0200955C
+ add r6, r0, #0
+ ldr r0, [r5, #0x18]
+ mov r1, #0
+ bl FUN_02009E54
+ add r1, r5, #0
+ str r4, [sp]
+ add r1, #0xbc
+ str r0, [sp, #4]
+ ldr r0, [r6, #0xc]
+ ldr r1, [r1]
+ mov r2, #0x30
+ add r3, r7, #0
+ bl FUN_02003974
+ ldr r0, [sp, #4]
+ mov r1, #1
+ bl FUN_020B19C4
+ add r2, r5, #0
+ add r2, #0xbc
+ add r1, r0, #0
+ ldr r2, [r2]
+ mov r0, #0xe
+ mov r3, #0x60
+ bl FUN_0201C2C8
+ ldr r0, [r5, #0x28]
+ bl FUN_0200955C
+ add r6, r0, #0
+ ldr r0, [r5, #0x28]
+ mov r1, #0
+ bl FUN_02009E54
+ add r1, r5, #0
+ str r4, [sp]
+ add r1, #0xc0
+ str r0, [sp, #8]
+ ldr r0, [r6, #0xc]
+ ldr r1, [r1]
+ mov r2, #0x50
+ add r3, r7, #0
+ bl FUN_02003974
+ ldr r0, [sp, #8]
+ mov r1, #1
+ bl FUN_020B19C4
+ add r5, #0xc0
+ add r1, r0, #0
+ ldr r2, [r5]
+ mov r0, #0xe
+ mov r3, #0xa0
+ bl FUN_0201C2C8
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EE5D0
+
+ thumb_func_start MOD16_021EE654
+MOD16_021EE654: ; 0x021EE654
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r2, [sp]
+ add r0, r2, #0
+ add r4, r1, #0
+ bl MOD16_021EE6CC
+ add r6, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021EE714
+ add r7, r0, #0
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl MOD16_021EE73C
+ str r6, [r5]
+ str r7, [r5, #4]
+ str r0, [r5, #0x20]
+ bl MOD16_021EE76C
+ str r0, [r5, #0x24]
+ ldr r0, _021EE69C ; =MOD16_021EE770
+ str r0, [r5, #8]
+ ldr r0, _021EE6A0 ; =MOD16_021EE7AC
+ str r0, [r5, #0xc]
+ ldr r0, _021EE6A4 ; =MOD16_021EE810
+ str r0, [r5, #0x10]
+ ldr r0, _021EE6A8 ; =MOD16_021EE824
+ str r0, [r5, #0x14]
+ ldr r0, _021EE6AC ; =MOD16_021EE8AC
+ str r0, [r5, #0x18]
+ ldr r0, _021EE6B0 ; =MOD16_021EE8DC
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EE69C: .word MOD16_021EE770
+_021EE6A0: .word MOD16_021EE7AC
+_021EE6A4: .word MOD16_021EE810
+_021EE6A8: .word MOD16_021EE824
+_021EE6AC: .word MOD16_021EE8AC
+_021EE6B0: .word MOD16_021EE8DC
+ thumb_func_end MOD16_021EE654
+
+ thumb_func_start MOD16_021EE6B4
+MOD16_021EE6B4: ; 0x021EE6B4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl MOD16_021EE740
+ ldr r0, [r4, #4]
+ bl MOD16_021EE754
+ ldr r0, [r4, #0x20]
+ bl MOD16_021EE768
+ pop {r4, pc}
+ thumb_func_end MOD16_021EE6B4
+
+ thumb_func_start MOD16_021EE6CC
+MOD16_021EE6CC: ; 0x021EE6CC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x10
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021EE6DE
+ bl ErrorHandling
+_021EE6DE:
+ add r2, r4, #0
+ mov r1, #0x10
+ mov r0, #0
+_021EE6E4:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021EE6E4
+ add r0, r5, #0
+ bl MOD16_021D7AEC
+ str r0, [r4]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD16_021D7B7C
+ str r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD16_021D7B5C
+ str r0, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD16_021D7B38
+ str r0, [r4, #4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EE6CC
+
+ thumb_func_start MOD16_021EE714
+MOD16_021EE714: ; 0x021EE714
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ bne _021EE726
+ bl ErrorHandling
+_021EE726:
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add r0, r5, #0
+ bl MOD16_021D7B48
+ str r0, [r4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EE714
+
+ thumb_func_start MOD16_021EE73C
+MOD16_021EE73C: ; 0x021EE73C
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021EE73C
+
+ thumb_func_start MOD16_021EE740
+MOD16_021EE740: ; 0x021EE740
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021EE74A
+ bl ErrorHandling
+_021EE74A:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EE740
+
+ thumb_func_start MOD16_021EE754
+MOD16_021EE754: ; 0x021EE754
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021EE75E
+ bl ErrorHandling
+_021EE75E:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EE754
+
+ thumb_func_start MOD16_021EE768
+MOD16_021EE768: ; 0x021EE768
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EE768
+
+ thumb_func_start MOD16_021EE76C
+MOD16_021EE76C: ; 0x021EE76C
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD16_021EE76C
+
+ thumb_func_start MOD16_021EE770
+MOD16_021EE770: ; 0x021EE770
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r6, r1, #0
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021EE786:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021EE786
+ mov r0, #4
+ str r0, [r4, #0x10]
+ ldr r2, [r5, #4]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021EEA3C
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021EEA88
+ str r4, [r5, #8]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EE770
+
+ thumb_func_start MOD16_021EE7AC
+MOD16_021EE7AC: ; 0x021EE7AC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, [r0, #0xc]
+ ldr r4, [r0, #8]
+ cmp r1, #1
+ bne _021EE7BC
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021EE7BC:
+ ldr r0, [r0, #0x10]
+ cmp r0, #1
+ bne _021EE7C6
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021EE7C6:
+ ldr r0, [r5, #8]
+ bl MOD16_021E95C0
+ cmp r0, #0
+ beq _021EE80A
+ add r0, r4, #0
+ bl MOD16_021EEA80
+ ldr r0, [r5, #8]
+ bl MOD16_021E95C8
+ cmp r0, #0
+ beq _021EE7F2
+ ldr r0, [r5, #4]
+ bl MOD16_021D9FB8
+ cmp r0, #0
+ beq _021EE7F2
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021EEEB4
+_021EE7F2:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021EEA88
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021EE80A
+ add r0, r5, #0
+ bl MOD16_021EEF00
+ mov r0, #0
+ str r0, [r4, #0x14]
+_021EE80A:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EE7AC
+
+ thumb_func_start MOD16_021EE810
+MOD16_021EE810: ; 0x021EE810
+ push {r4, lr}
+ ldr r4, [r0, #8]
+ add r0, r4, #0
+ bl MOD16_021EEAA0
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD16_021EE810
+
+ thumb_func_start MOD16_021EE824
+MOD16_021EE824: ; 0x021EE824
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r6, [r4, #8]
+ cmp r0, #3
+ bhi _021EE8A8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EE840: ; jump table
+ .short _021EE848 - _021EE840 - 2 ; case 0
+ .short _021EE862 - _021EE840 - 2 ; case 1
+ .short _021EE880 - _021EE840 - 2 ; case 2
+ .short _021EE896 - _021EE840 - 2 ; case 3
+_021EE848:
+ ldr r0, [r4, #4]
+ mov r1, #0x30
+ bl FUN_02016998
+ str r0, [r4, #8]
+ mov r1, #0
+ mov r2, #0x30
+ bl Call_FillMemWithValue
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EE8A8
+_021EE862:
+ ldr r2, [r4, #4]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021EEAE0
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #1
+ bl MOD16_021EE994
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EE8A8
+_021EE880:
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #1
+ bl MOD16_021EEA00
+ cmp r0, #0
+ beq _021EE8A8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EE8A8
+_021EE896:
+ mov r0, #0x79
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #0
+ bl MOD16_021D8B3C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021EE8A8:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EE824
+
+ thumb_func_start MOD16_021EE8AC
+MOD16_021EE8AC: ; 0x021EE8AC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r3, #8]
+ add r4, r2, #0
+ str r0, [sp]
+ add r5, r1, #0
+ ldr r0, [r4, #8]
+ ldr r7, [r5, #8]
+ bl MOD16_021E95C0
+ cmp r0, #0
+ beq _021EE8D8
+ ldr r2, [sp]
+ ldr r3, [r5, #4]
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD16_021EEE80
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD16_021EEEC8
+_021EE8D8:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EE8AC
+
+ thumb_func_start MOD16_021EE8DC
+MOD16_021EE8DC: ; 0x021EE8DC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r7, r2, #0
+ ldr r6, [r4, #8]
+ cmp r0, #4
+ bhi _021EE95E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EE8F8: ; jump table
+ .short _021EE902 - _021EE8F8 - 2 ; case 0
+ .short _021EE924 - _021EE8F8 - 2 ; case 1
+ .short _021EE93A - _021EE8F8 - 2 ; case 2
+ .short _021EE94C - _021EE8F8 - 2 ; case 3
+ .short _021EE95A - _021EE8F8 - 2 ; case 4
+_021EE902:
+ mov r0, #0x79
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #1
+ bl MOD16_021D8B3C
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r7, #0
+ mov r3, #0
+ bl MOD16_021EE994
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EE95E
+_021EE924:
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r3, #0
+ bl MOD16_021EEA00
+ cmp r0, #0
+ beq _021EE95E
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EE95E
+_021EE93A:
+ ldr r2, [r4, #4]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD16_021EEB10
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EE95E
+_021EE94C:
+ add r0, r6, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021EE95E
+_021EE95A:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021EE95E:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EE8DC
+
+ thumb_func_start MOD16_021EE964
+MOD16_021EE964: ; 0x021EE964
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_02020398
+ ldr r0, [r4, #4]
+ mov r1, #1
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ pop {r4, pc}
+ thumb_func_end MOD16_021EE964
+
+ thumb_func_start MOD16_021EE97C
+MOD16_021EE97C: ; 0x021EE97C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_02020398
+ ldr r0, [r4, #4]
+ mov r1, #0
+ ldr r0, [r0]
+ bl FUN_02011AF0
+ pop {r4, pc}
+ thumb_func_end MOD16_021EE97C
+
+ thumb_func_start MOD16_021EE994
+MOD16_021EE994: ; 0x021EE994
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r4, r2, #0
+ add r5, r1, #0
+ add r6, r3, #0
+ bl MOD16_021EE964
+ ldr r0, [r4, #8]
+ bl MOD16_021E95B8
+ cmp r0, #0
+ beq _021EE9FC
+ cmp r6, #0
+ beq _021EE9D8
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x2c
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ mov r1, #1
+ str r1, [sp, #0x10]
+ mov r0, #0x19
+ ldr r2, [r5]
+ lsl r0, r0, #4
+ add r0, r2, r0
+ add r2, r1, #0
+ sub r2, #0x11
+ bl MOD16_021D8988
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+_021EE9D8:
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ mov r0, #0x2c
+ str r0, [sp, #8]
+ mov r0, #0x2f
+ str r0, [sp, #0xc]
+ mov r1, #1
+ str r1, [sp, #0x10]
+ mov r0, #0x19
+ ldr r3, [r5]
+ lsl r0, r0, #4
+ add r0, r3, r0
+ add r3, r1, #0
+ sub r3, #0x11
+ bl MOD16_021D8988
+_021EE9FC:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021EE994
+
+ thumb_func_start MOD16_021EEA00
+MOD16_021EEA00: ; 0x021EEA00
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r2, #8]
+ add r5, r1, #0
+ add r4, r3, #0
+ bl MOD16_021E95B8
+ cmp r0, #0
+ beq _021EEA20
+ mov r0, #0x19
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ bl MOD16_021D89B4
+ b _021EEA26
+_021EEA20:
+ mov r0, #2
+ bl FUN_0200A344
+_021EEA26:
+ cmp r0, #0
+ beq _021EEA38
+ cmp r4, #0
+ beq _021EEA34
+ add r0, r6, #0
+ bl MOD16_021EE97C
+_021EEA34:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021EEA38:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021EEA00
+
+ thumb_func_start MOD16_021EEA3C
+MOD16_021EEA3C: ; 0x021EEA3C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r2, #0
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, r6, #0
+ mov r1, #4
+ bl FUN_02016998
+ str r0, [r5, #4]
+ mov r0, #0xf8
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0x68
+ mov r2, #0xb8
+ mov r3, #8
+ bl MOD16_021D7C98
+ str r4, [r5, #8]
+ str r5, [r5, #0xc]
+ str r6, [sp]
+ add r3, r5, #0
+ ldr r0, [r5, #4]
+ ldr r2, _021EEA7C ; =MOD16_021EEAB8
+ mov r1, #1
+ add r3, #8
+ bl FUN_020220C4
+ str r0, [r5]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021EEA7C: .word MOD16_021EEAB8
+ thumb_func_end MOD16_021EEA3C
+
+ thumb_func_start MOD16_021EEA80
+MOD16_021EEA80: ; 0x021EEA80
+ mov r1, #3
+ str r1, [r0, #0x10]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EEA80
+
+ thumb_func_start MOD16_021EEA88
+MOD16_021EEA88: ; 0x021EEA88
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02022144
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021EEA9C
+ mov r0, #2
+ str r0, [r4, #0x10]
+_021EEA9C:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EEA88
+
+ thumb_func_start MOD16_021EEAA0
+MOD16_021EEAA0: ; 0x021EEAA0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0202212C
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EEAA0
+
+ thumb_func_start MOD16_021EEAB8
+MOD16_021EEAB8: ; 0x021EEAB8
+ ldr r3, [r2, #4]
+ lsl r2, r0, #2
+ add r2, r3, r2
+ str r1, [r2, #0x10]
+ cmp r1, #0
+ beq _021EEACA
+ cmp r1, #2
+ beq _021EEAD4
+ bx lr
+_021EEACA:
+ cmp r0, #0
+ bne _021EEADC
+ mov r0, #1
+ str r0, [r3, #0x14]
+ bx lr
+_021EEAD4:
+ cmp r0, #0
+ bne _021EEADC
+ mov r0, #1
+ str r0, [r3, #0x14]
+_021EEADC:
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EEAB8
+
+ thumb_func_start MOD16_021EEAE0
+MOD16_021EEAE0: ; 0x021EEAE0
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021EEB50
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021EEBB8
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021EEC6C
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021EED04
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021EEAE0
+
+ thumb_func_start MOD16_021EEB10
+MOD16_021EEB10: ; 0x021EEB10
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0x20
+ str r0, [sp]
+ add r4, r1, #0
+ str r2, [sp, #4]
+ ldr r0, [r4]
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0x80
+ bl MOD16_021D8CFC
+ add r0, r5, #0
+ bl MOD16_021EECF8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EEDA0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EEC38
+ ldr r0, [r5, #0x2c]
+ cmp r0, #0
+ beq _021EEB4A
+ bl FUN_02016A18
+_021EEB4A:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EEB10
+
+ thumb_func_start MOD16_021EEB50
+MOD16_021EEB50: ; 0x021EEB50
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r5, r1, #0
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ str r5, [sp, #0xc]
+ ldr r2, [r0]
+ mov r1, #0x22
+ mov r3, #6
+ bl MOD16_021D8CB4
+ str r5, [sp]
+ ldr r0, [r4]
+ mov r1, #0x3a
+ mov r2, #1
+ add r3, sp, #0x10
+ bl MOD16_021D8D48
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r5, r0, #0
+ ldrh r0, [r2]
+ mov r1, #6
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ bl FUN_02018148
+ add r0, r5, #0
+ bl FUN_02016A18
+ ldr r0, [r4]
+ mov r1, #6
+ ldr r0, [r0]
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EEB50
+
+ thumb_func_start MOD16_021EEBB8
+MOD16_021EEBB8: ; 0x021EEBB8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r6, [r1]
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r2, #0
+ bl MOD16_021D8C70
+ add r7, r0, #0
+ ldr r0, _021EEC2C ; =0x0000332E
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #5
+ str r4, [sp, #8]
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ mov r2, #0x66
+ mov r3, #1
+ bl FUN_020091E0
+ str r0, [r5, #8]
+ bl FUN_02009B04
+ ldr r0, [r5, #8]
+ bl FUN_02009474
+ ldr r0, _021EEC30 ; =0x0000332C
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x52
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x64
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x10]
+ ldr r0, _021EEC34 ; =0x0000332D
+ add r1, r7, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x53
+ str r4, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #0x65
+ mov r3, #1
+ bl FUN_02009358
+ str r0, [r5, #0x14]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EEC2C: .word 0x0000332E
+_021EEC30: .word 0x0000332C
+_021EEC34: .word 0x0000332D
+ thumb_func_end MOD16_021EEBB8
+
+ thumb_func_start MOD16_021EEC38
+MOD16_021EEC38: ; 0x021EEC38
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ ldr r4, [r1]
+ bl FUN_02009C0C
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #8]
+ bl FUN_02009490
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x10]
+ bl FUN_02009490
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r5, #0x14]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EEC38
+
+ thumb_func_start MOD16_021EEC6C
+MOD16_021EEC6C: ; 0x021EEC6C
+ push {r4, r5, r6, lr}
+ sub sp, #0x70
+ ldr r4, [r1]
+ ldr r3, _021EECF0 ; =0x0000332D
+ add r5, r0, #0
+ mov r0, #0
+ str r3, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ mov r0, #5
+ lsl r0, r0, #6
+ add r6, r2, #0
+ ldr r2, [r4, r0]
+ str r2, [sp, #0x14]
+ add r2, r0, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r0, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ add r0, #0xc
+ str r2, [sp, #0x1c]
+ ldr r0, [r4, r0]
+ ldr r2, _021EECF4 ; =0x0000083F
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r1, r3, #1
+ add r0, sp, #0x4c
+ sub r3, r3, #1
+ bl FUN_02008AA4
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #9
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #0x1f
+ str r0, [sp, #0x40]
+ mov r0, #2
+ str r0, [sp, #0x44]
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x34]
+ mov r0, #3
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x12
+ str r1, [sp, #0x38]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ str r6, [sp, #0x48]
+ bl FUN_0201FF84
+ mov r1, #2
+ str r0, [r5]
+ bl FUN_02020130
+ add sp, #0x70
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021EECF0: .word 0x0000332D
+_021EECF4: .word 0x0000083F
+ thumb_func_end MOD16_021EEC6C
+
+ thumb_func_start MOD16_021EECF8
+MOD16_021EECF8: ; 0x021EECF8
+ ldr r3, _021EED00 ; =0x0201FFC9
+ ldr r0, [r0]
+ bx r3
+ nop
+_021EED00: .word 0x0201FFC9
+ thumb_func_end MOD16_021EECF8
+
+ thumb_func_start MOD16_021EED04
+MOD16_021EED04: ; 0x021EED04
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r6, r2, #0
+ ldr r4, [r1]
+ cmp r0, #0
+ bne _021EED18
+ bl ErrorHandling
+_021EED18:
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r1, _021EED98 ; =0x0000083F
+ bl FUN_020094F0
+ mov r1, #0x15
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ str r1, [sp, #8]
+ mov r1, #0
+ bl FUN_02009E54
+ mov r1, #7
+ mvn r1, r1
+ str r1, [sp, #0x1c]
+ mov r1, #2
+ mov r2, #0
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r1, [sp, #0x28]
+ str r6, [sp, #0x2c]
+ bl FUN_0201E28C
+ add r7, r0, #0
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0x10
+ mov r2, #2
+ bl MOD16_021DB388
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ ldr r2, _021EED9C ; =0x00000266
+ add r1, r6, #0
+ mov r3, #0x64
+ bl MOD16_021DB3C8
+ lsr r0, r0, #1
+ neg r0, r0
+ str r6, [sp, #0xc]
+ str r0, [sp, #0x18]
+ ldr r0, [r5]
+ str r0, [sp, #0x14]
+ add r0, sp, #8
+ bl MOD16_021DB2BC
+ str r0, [r5, #4]
+ ldr r0, [r0]
+ add r1, r7, #4
+ bl FUN_02011A60
+ add r0, r6, #0
+ bl MOD16_021DB3BC
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EED98: .word 0x0000083F
+_021EED9C: .word 0x00000266
+ thumb_func_end MOD16_021EED04
+
+ thumb_func_start MOD16_021EEDA0
+MOD16_021EEDA0: ; 0x021EEDA0
+ ldr r3, _021EEDA8 ; =MOD16_021DB338
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021EEDA8: .word MOD16_021DB338
+ thumb_func_end MOD16_021EEDA0
+
+ thumb_func_start MOD16_021EEDAC
+MOD16_021EEDAC: ; 0x021EEDAC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r1, #0
+ add r1, r3, #0
+ str r2, [sp, #0xc]
+ ldr r4, [sp, #0x30]
+ ldr r6, [sp, #0x40]
+ mov r5, #0
+ bl MOD16_021D7B98
+ ldr r0, [sp, #0x3c]
+ ldr r1, [sp, #0xc]
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x38]
+ bl MOD16_021EEE58
+ ldr r0, [sp, #8]
+ bl FUN_0202022C
+ cmp r0, #3
+ bhi _021EEE1E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EEDEA: ; jump table
+ .short _021EEDF2 - _021EEDEA - 2 ; case 0
+ .short _021EEDF2 - _021EEDEA - 2 ; case 1
+ .short _021EEE02 - _021EEDEA - 2 ; case 2
+ .short _021EEE10 - _021EEDEA - 2 ; case 3
+_021EEDF2:
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021EEE1E
+ mov r0, #0
+ mov r5, #1
+ mov r7, #9
+ str r0, [r4]
+ b _021EEE1E
+_021EEE02:
+ ldr r0, [r4]
+ cmp r0, #1
+ beq _021EEE1E
+ mov r5, #1
+ mov r7, #0xa
+ str r5, [r4]
+ b _021EEE1E
+_021EEE10:
+ ldr r0, [r4]
+ cmp r0, #2
+ beq _021EEE1E
+ mov r0, #2
+ mov r5, #1
+ mov r7, #8
+ str r0, [r4]
+_021EEE1E:
+ cmp r5, #0
+ beq _021EEE54
+ ldr r0, [r6]
+ cmp r0, #0
+ beq _021EEE2C
+ bl FUN_02016A18
+_021EEE2C:
+ ldr r0, [sp, #4]
+ ldr r3, [sp, #0x34]
+ ldr r0, [r0]
+ add r1, r7, #0
+ add r2, sp, #0x10
+ bl MOD16_021D8D70
+ str r0, [r6]
+ ldr r2, [sp, #0x10]
+ ldr r1, [sp, #0x2c]
+ ldr r2, [r2, #0xc]
+ mov r0, #0x1f
+ lsl r1, r1, #5
+ mov r3, #0x20
+ bl FUN_0201C2C8
+ cmp r0, #0
+ bne _021EEE54
+ bl ErrorHandling
+_021EEE54:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EEDAC
+
+ thumb_func_start MOD16_021EEE58
+MOD16_021EEE58: ; 0x021EEE58
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r3, #0
+ bl MOD16_021D7BE4
+ add r0, r5, #0
+ bl FUN_0202022C
+ cmp r0, #2
+ ldr r0, [r4]
+ bge _021EEE78
+ add r1, r6, #0
+ bl FUN_02011AC0
+ pop {r4, r5, r6, pc}
+_021EEE78:
+ ldr r1, [sp, #0x10]
+ bl FUN_02011AC0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021EEE58
+
+ thumb_func_start MOD16_021EEE80
+MOD16_021EEE80: ; 0x021EEE80
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ add r5, r1, #0
+ mov r1, #7
+ mvn r1, r1
+ add r4, r2, #0
+ str r1, [sp]
+ mov r2, #4
+ add r1, r5, #0
+ str r2, [sp, #4]
+ add r1, #0x28
+ str r1, [sp, #8]
+ str r3, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r1, #1
+ str r1, [sp, #0x14]
+ add r1, r5, #0
+ add r1, #0x2c
+ str r1, [sp, #0x18]
+ ldr r1, [r5]
+ ldr r2, [r5, #4]
+ ldr r3, [r4, #0x10]
+ bl MOD16_021EEDAC
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ thumb_func_end MOD16_021EEE80
+
+ thumb_func_start MOD16_021EEEB4
+MOD16_021EEEB4: ; 0x021EEEB4
+ ldr r1, _021EEEC4 ; =0x021C48B8
+ ldr r2, [r1, #0x44]
+ mov r1, #1
+ tst r2, r1
+ beq _021EEEC0
+ str r1, [r0, #0x14]
+_021EEEC0:
+ bx lr
+ nop
+_021EEEC4: .word 0x021C48B8
+ thumb_func_end MOD16_021EEEB4
+
+ thumb_func_start MOD16_021EEEC8
+MOD16_021EEEC8: ; 0x021EEEC8
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r1, #8]
+ bl MOD16_021E95C8
+ cmp r0, #1
+ bne _021EEEE8
+ mov r0, #0x40
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0x80
+ mov r2, #0x90
+ mov r3, #0xe4
+ bl MOD16_021EEEEC
+_021EEEE8:
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD16_021EEEC8
+
+ thumb_func_start MOD16_021EEEEC
+MOD16_021EEEEC: ; 0x021EEEEC
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r4, [sp, #0x10]
+ str r4, [sp]
+ ldr r0, [r0]
+ bl MOD16_021D8B04
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EEEEC
+
+ thumb_func_start MOD16_021EEF00
+MOD16_021EEF00: ; 0x021EEF00
+ ldr r3, _021EEF08 ; =MOD16_021E5C5C
+ ldr r0, [r0, #0xc]
+ mov r1, #1
+ bx r3
+ .align 2, 0
+_021EEF08: .word MOD16_021E5C5C
+ thumb_func_end MOD16_021EEF00
+
+ thumb_func_start MOD16_021EEF0C
+MOD16_021EEF0C: ; 0x021EEF0C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r1, #0x7a
+ ldr r0, [r5, #0xc]
+ lsl r1, r1, #2
+ bl FUN_02016998
+ mov r2, #0x7a
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl Call_FillMemWithValue
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021EEFA4
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ bl MOD16_021EF9B8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ mov r2, #0xa
+ mov r3, #0xf
+ bl MOD16_021EF9D8
+ ldr r0, _021EEF64 ; =MOD16_021EF90C
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ mov r1, #7
+ lsl r1, r1, #6
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021EEF64: .word MOD16_021EF90C
+ thumb_func_end MOD16_021EEF0C
+
+ thumb_func_start MOD16_021EEF68
+MOD16_021EEF68: ; 0x021EEF68
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD16_021EF174
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EEF68
+
+ thumb_func_start MOD16_021EEF84
+MOD16_021EEF84: ; 0x021EEF84
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ cmp r0, #4
+ bne _021EEF92
+ mov r0, #1
+ bx lr
+_021EEF92:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021EEF84
+
+ thumb_func_start MOD16_021EEF98
+MOD16_021EEF98: ; 0x021EEF98
+ ldr r0, [r0, #0xc]
+ bx lr
+ thumb_func_end MOD16_021EEF98
+
+ thumb_func_start MOD16_021EEF9C
+MOD16_021EEF9C: ; 0x021EEF9C
+ mov r2, #0x79
+ lsl r2, r2, #2
+ str r1, [r0, r2]
+ bx lr
+ thumb_func_end MOD16_021EEF9C
+
+ thumb_func_start MOD16_021EEFA4
+MOD16_021EEFA4: ; 0x021EEFA4
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x10]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ mov r1, #0x6f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r4]
+ add r1, r5, #0
+ str r0, [r5]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x20
+ add r1, #0x10
+ bl FUN_02008C9C
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r4, #0xc]
+ bl FUN_020203CC
+ ldr r0, [r4, #0xc]
+ bl MOD16_021EFAEC
+ ldr r0, [r4, #0xc]
+ mov r2, #0x30
+ str r0, [sp]
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0x10]
+ mov r3, #0x48
+ bl MOD16_021EFAC0
+ str r0, [r5, #0xc]
+ ldr r0, [r4, #4]
+ str r0, [r5, #8]
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ str r0, [sp, #8]
+ mov r0, #3
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0xc]
+ str r0, [sp, #0x10]
+ add r0, sp, #4
+ bl MOD16_021DB228
+ mov r1, #0x53
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r5]
+ ldr r1, [r4, #0xc]
+ bl MOD16_021EF218
+ mov r1, #0x3f
+ add r2, r1, #0
+ ldr r0, _021EF170 ; =0x04000050
+ sub r2, #0x4f
+ bl G2x_SetBlendBrightness_
+ ldr r0, [r5]
+ ldr r1, [r4, #0xc]
+ bl MOD16_021EF318
+ str r0, [r5, #4]
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r1, [r4, #0xc]
+ add r0, r5, r0
+ bl MOD16_021EF370
+ mov r1, #0x15
+ lsl r1, r1, #4
+ add r0, r5, r1
+ sub r1, #0x14
+ ldr r2, [r4, #0xc]
+ add r1, r5, r1
+ bl MOD16_021D9118
+ mov r2, #0x15
+ lsl r2, r2, #4
+ mov r0, #2
+ str r0, [sp]
+ add r1, r2, #0
+ sub r1, #0x18
+ add r0, r5, r2
+ sub r2, #0x14
+ ldr r1, [r5, r1]
+ ldr r3, [r4, #0xc]
+ add r2, r5, r2
+ bl MOD16_021D9318
+ ldr r0, [r4, #0x14]
+ mov r3, #0x15
+ lsl r3, r3, #4
+ str r0, [sp]
+ sub r1, r3, #4
+ add r0, r5, r3
+ add r3, #0x6c
+ ldr r1, [r5, r1]
+ ldr r2, [r4, #0xc]
+ ldr r3, [r5, r3]
+ bl MOD16_021EF3A8
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r0, r5, r0
+ mov r1, #0xac
+ mov r2, #0x20
+ bl MOD16_021D7F7C
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r0, r5, r0
+ mov r1, #1
+ bl MOD16_021D93D4
+ mov r2, #6
+ lsl r2, r2, #6
+ add r1, r2, #0
+ add r0, r5, r2
+ add r2, #0x3c
+ sub r1, #0x44
+ ldr r2, [r5, r2]
+ ldr r3, [r4, #0xc]
+ add r1, r5, r1
+ bl MOD16_021EF540
+ mov r2, #6
+ lsl r2, r2, #6
+ add r1, r2, #0
+ sub r1, #0x48
+ add r0, r5, r2
+ sub r2, #0x44
+ ldr r1, [r5, r1]
+ ldr r3, [r4, #0xc]
+ add r2, r5, r2
+ bl MOD16_021EF598
+ mov r2, #0x67
+ lsl r2, r2, #2
+ add r1, r2, #0
+ add r0, r5, r2
+ add r2, #0x20
+ sub r1, #0x60
+ ldr r2, [r5, r2]
+ ldr r3, [r4, #0xc]
+ add r1, r5, r1
+ bl MOD16_021EF6A4
+ mov r2, #0x6f
+ lsl r2, r2, #2
+ ldr r0, [r5, r2]
+ add r1, r2, #0
+ str r0, [sp]
+ add r0, r2, #0
+ sub r1, #0x84
+ sub r0, #0x20
+ sub r2, #0x80
+ ldr r1, [r5, r1]
+ ldr r3, [r4, #0xc]
+ add r0, r5, r0
+ add r2, r5, r2
+ bl MOD16_021EF6E0
+ mov r2, #0x69
+ lsl r2, r2, #2
+ add r0, r5, r2
+ str r0, [sp]
+ add r1, r2, #0
+ add r0, r2, #0
+ sub r1, #0x6c
+ sub r0, #0x10
+ sub r2, #0x68
+ ldr r1, [r5, r1]
+ ldr r3, [r4, #0xc]
+ add r0, r5, r0
+ add r2, r5, r2
+ bl MOD16_021EF5EC
+ mov r3, #0x16
+ lsl r3, r3, #4
+ ldr r0, [r5, r3]
+ add r1, r3, #0
+ str r0, [sp]
+ add r0, r3, #0
+ sub r1, #0x14
+ add r3, #0x5c
+ add r0, #0x34
+ ldr r1, [r5, r1]
+ ldr r2, [r4, #0xc]
+ ldr r3, [r5, r3]
+ add r0, r5, r0
+ bl MOD16_021EF648
+ ldr r0, [r5]
+ ldr r1, [r4, #0xc]
+ bl MOD16_021EF790
+ ldr r0, [r5]
+ ldr r1, [r4, #0xc]
+ bl MOD16_021EF8A8
+ mov r2, #0x6f
+ lsl r2, r2, #2
+ ldr r0, [r5, #4]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r5, r2]
+ bl MOD16_021EFA48
+ mov r0, #0x71
+ lsl r0, r0, #2
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x14]
+ add r0, r5, r0
+ bl MOD16_021EFB20
+ mov r0, #0x79
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_021EF170: .word 0x04000050
+ thumb_func_end MOD16_021EEFA4
+
+ thumb_func_start MOD16_021EF174
+MOD16_021EF174: ; 0x021EF174
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x71
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD16_021EFBA4
+ mov r0, #0x67
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD16_021EF774
+ mov r1, #0x67
+ lsl r1, r1, #2
+ add r0, r4, r1
+ sub r1, #0x60
+ add r1, r4, r1
+ bl MOD16_021EF6D4
+ mov r0, #0x65
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD16_021EF698
+ mov r0, #0x65
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD16_021EF63C
+ mov r0, #6
+ lsl r0, r0, #6
+ add r0, r4, r0
+ bl MOD16_021EF5E0
+ mov r1, #6
+ lsl r1, r1, #6
+ add r0, r4, r1
+ sub r1, #0x44
+ add r1, r4, r1
+ bl MOD16_021EF58C
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD16_021EF418
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD16_021D93AC
+ mov r1, #0x15
+ lsl r1, r1, #4
+ add r0, r4, r1
+ sub r1, #0x14
+ add r1, r4, r1
+ bl MOD16_021D91E8
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD16_021EF390
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FD58
+ ldr r0, [r4, #4]
+ bl MOD16_021EF358
+ ldr r0, [r4]
+ bl MOD16_021EF2FC
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD16_021DB288
+ bl MOD16_021EFB18
+ pop {r4, pc}
+ thumb_func_end MOD16_021EF174
+
+ thumb_func_start MOD16_021EF218
+MOD16_021EF218: ; 0x021EF218
+ push {r4, r5, lr}
+ sub sp, #0x54
+ ldr r3, _021EF2F0 ; =0x021FF78C
+ add r5, r0, #0
+ add r4, r1, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x38
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, #1
+ str r0, [r2]
+ add r0, r5, #0
+ bl FUN_020178A0
+ add r0, r5, #0
+ mov r1, #1
+ add r2, sp, #0x38
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_02018744
+ ldr r3, _021EF2F4 ; =0x021FF770
+ add r2, sp, #0x1c
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, #2
+ str r0, [r2]
+ add r0, r5, #0
+ bl FUN_020178A0
+ add r0, r5, #0
+ mov r1, #2
+ add r2, sp, #0x1c
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ add r0, r5, #0
+ mov r1, #2
+ bl FUN_02018744
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020178BC
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r3, _021EF2F8 ; =0x021FF7A8
+ add r2, sp, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, #3
+ str r0, [r2]
+ add r0, r5, #0
+ bl FUN_020178A0
+ add r0, r5, #0
+ mov r1, #3
+ add r2, sp, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ add r0, r5, #0
+ mov r1, #3
+ bl FUN_02018744
+ add sp, #0x54
+ pop {r4, r5, pc}
+ .align 2, 0
+_021EF2F0: .word 0x021FF78C
+_021EF2F4: .word 0x021FF770
+_021EF2F8: .word 0x021FF7A8
+ thumb_func_end MOD16_021EF218
+
+ thumb_func_start MOD16_021EF2FC
+MOD16_021EF2FC: ; 0x021EF2FC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020178A0
+ pop {r4, pc}
+ thumb_func_end MOD16_021EF2FC
+
+ thumb_func_start MOD16_021EF318
+MOD16_021EF318: ; 0x021EF318
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r0, r1, #0
+ mov r1, #1
+ bl FUN_02018FF4
+ add r4, r0, #0
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #1
+ str r3, [sp, #0x10]
+ bl FUN_02019064
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ bl FUN_020191D0
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EF318
+
+ thumb_func_start MOD16_021EF358
+MOD16_021EF358: ; 0x021EF358
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02019570
+ add r0, r4, #0
+ bl FUN_02019178
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020191A4
+ pop {r4, pc}
+ thumb_func_end MOD16_021EF358
+
+ thumb_func_start MOD16_021EF370
+MOD16_021EF370: ; 0x021EF370
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+ mov r7, #8
+_021EF37A:
+ add r0, r7, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_02008DEC
+ add r4, r4, #1
+ stmia r5!, {r0}
+ cmp r4, #4
+ blt _021EF37A
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EF370
+
+ thumb_func_start MOD16_021EF390
+MOD16_021EF390: ; 0x021EF390
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r5, r0, #0
+ add r6, r4, #0
+_021EF398:
+ ldr r0, [r5]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ stmia r5!, {r6}
+ cmp r4, #4
+ blt _021EF398
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021EF390
+
+ thumb_func_start MOD16_021EF3A8
+MOD16_021EF3A8: ; 0x021EF3A8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ add r4, r1, #0
+ str r4, [sp, #4]
+ mov r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl FUN_02009E54
+ str r0, [sp, #0xc]
+ ldr r0, [r5]
+ str r0, [sp, #0x10]
+ mov r0, #0x3f
+ mvn r0, r0
+ str r0, [sp, #0x14]
+ add r0, #0x38
+ str r0, [sp, #0x18]
+ mov r0, #2
+ str r0, [sp, #0x1c]
+ mov r0, #0
+ str r0, [sp, #0x20]
+ mov r0, #1
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x40]
+ str r6, [sp, #0x28]
+ cmp r0, #0
+ bne _021EF3EE
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD16_021D7E68
+ b _021EF3F8
+_021EF3EE:
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD16_021D7E48
+_021EF3F8:
+ add r4, r0, #0
+ ldr r0, [sp, #0x40]
+ str r4, [sp, #8]
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, sp, #4
+ mov r2, #0
+ add r3, r7, #0
+ bl MOD16_021D8888
+ add r0, r4, #0
+ bl MOD16_021DB3BC
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EF3A8
+
+ thumb_func_start MOD16_021EF418
+MOD16_021EF418: ; 0x021EF418
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _021EF42A
+ bl MOD16_021DB338
+ mov r0, #0
+ str r0, [r4, #8]
+_021EF42A:
+ pop {r4, pc}
+ thumb_func_end MOD16_021EF418
+
+ thumb_func_start MOD16_021EF42C
+MOD16_021EF42C: ; 0x021EF42C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r7, [sp, #0x3c]
+ str r3, [sp, #0x10]
+ str r7, [sp]
+ mov r3, #1
+ add r6, r2, #0
+ str r3, [sp, #4]
+ add r4, r1, #0
+ str r6, [sp, #8]
+ add r5, r0, #0
+ ldr r0, [r4]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0x28]
+ bl FUN_02008F34
+ str r0, [r5]
+ bl FUN_02009B04
+ ldr r0, [r5]
+ bl FUN_02009474
+ str r7, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x38]
+ ldr r1, [sp, #0x10]
+ str r0, [sp, #8]
+ str r6, [sp, #0xc]
+ ldr r0, [r4, #4]
+ ldr r2, [sp, #0x2c]
+ mov r3, #0
+ bl FUN_02008FEC
+ str r0, [r5, #4]
+ bl FUN_02009D68
+ ldr r0, [r5, #4]
+ bl FUN_02009474
+ str r7, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0x30]
+ mov r3, #1
+ bl FUN_020090AC
+ str r0, [r5, #8]
+ str r7, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldr r0, [r4, #0xc]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0x34]
+ mov r3, #1
+ bl FUN_020090AC
+ str r0, [r5, #0xc]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EF42C
+
+ thumb_func_start MOD16_021EF4AC
+MOD16_021EF4AC: ; 0x021EF4AC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ bl FUN_02009C0C
+ ldr r0, [r5, #4]
+ bl FUN_02009E04
+ ldr r0, [r4]
+ ldr r1, [r5]
+ bl FUN_02009490
+ ldr r0, [r4, #4]
+ ldr r1, [r5, #4]
+ bl FUN_02009490
+ ldr r0, [r4, #8]
+ ldr r1, [r5, #8]
+ bl FUN_02009490
+ ldr r0, [r4, #0xc]
+ ldr r1, [r5, #0xc]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EF4AC
+
+ thumb_func_start MOD16_021EF4E0
+MOD16_021EF4E0: ; 0x021EF4E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ add r7, r2, #0
+ add r6, r3, #0
+ bl FUN_02009530
+ str r0, [sp, #0x2c]
+ ldr r0, [r5, #4]
+ bl FUN_02009530
+ str r0, [sp, #0x30]
+ ldr r0, [r5, #8]
+ bl FUN_02009530
+ str r0, [sp, #0x34]
+ ldr r0, [r5, #0xc]
+ bl FUN_02009530
+ str r0, [sp]
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r6, [sp, #0x10]
+ ldr r1, [r4]
+ ldr r2, [sp, #0x30]
+ str r1, [sp, #0x14]
+ ldr r1, [r4, #4]
+ ldr r3, [sp, #0x34]
+ str r1, [sp, #0x18]
+ ldr r1, [r4, #8]
+ str r1, [sp, #0x1c]
+ ldr r1, [r4, #0xc]
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ ldr r1, [sp, #0x2c]
+ add r0, r7, #0
+ bl FUN_02008AA4
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EF4E0
+
+ thumb_func_start MOD16_021EF540
+MOD16_021EF540: ; 0x021EF540
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r4, r2, #0
+ add r5, r0, #0
+ str r1, [sp, #0x18]
+ str r3, [sp, #0x1c]
+ bl MOD16_021D8520
+ str r0, [sp, #0x20]
+ add r0, r4, #0
+ bl MOD16_021D8524
+ add r4, r0, #0
+ bl MOD16_021D8528
+ add r6, r0, #0
+ bl MOD16_021D852C
+ add r7, r0, #0
+ bl MOD16_021D8530
+ str r4, [sp]
+ str r6, [sp, #4]
+ str r7, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ mov r0, #0xfa
+ lsl r0, r0, #4
+ str r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x20]
+ add r0, r5, #4
+ bl MOD16_021EF42C
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EF540
+
+ thumb_func_start MOD16_021EF58C
+MOD16_021EF58C: ; 0x021EF58C
+ ldr r3, _021EF594 ; =MOD16_021EF4AC
+ add r0, r0, #4
+ bx r3
+ nop
+_021EF594: .word MOD16_021EF4AC
+ thumb_func_end MOD16_021EF58C
+
+ thumb_func_start MOD16_021EF598
+MOD16_021EF598: ; 0x021EF598
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x44
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r3, #0
+ add r1, r2, #0
+ add r0, r5, #4
+ add r2, sp, #0
+ mov r3, #2
+ bl MOD16_021EF4E0
+ add r0, sp, #0
+ str r0, [sp, #0x28]
+ mov r0, #1
+ str r0, [sp, #0x3c]
+ mov r0, #0x20
+ str r0, [sp, #0x38]
+ mov r0, #0x1e
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x2c]
+ mov r0, #0x16
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x30]
+ add r0, sp, #0x24
+ str r4, [sp, #0x24]
+ str r6, [sp, #0x40]
+ bl FUN_0201FF84
+ str r0, [r5]
+ cmp r0, #0
+ bne _021EF5DA
+ bl ErrorHandling
+_021EF5DA:
+ add sp, #0x44
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EF598
+
+ thumb_func_start MOD16_021EF5E0
+MOD16_021EF5E0: ; 0x021EF5E0
+ ldr r3, _021EF5E8 ; =0x0201FFC9
+ ldr r0, [r0]
+ bx r3
+ nop
+_021EF5E8: .word 0x0201FFC9
+ thumb_func_end MOD16_021EF5E0
+
+ thumb_func_start MOD16_021EF5EC
+MOD16_021EF5EC: ; 0x021EF5EC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x44
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r3, #0
+ add r1, r2, #0
+ ldr r0, [sp, #0x58]
+ add r2, sp, #0
+ mov r3, #2
+ bl MOD16_021EF4E0
+ add r0, sp, #0
+ str r0, [sp, #0x28]
+ mov r0, #1
+ str r0, [sp, #0x3c]
+ mov r0, #0x20
+ str r0, [sp, #0x38]
+ mov r0, #3
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x2c]
+ mov r0, #0xd
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x30]
+ add r0, sp, #0x24
+ str r4, [sp, #0x24]
+ str r6, [sp, #0x40]
+ bl FUN_0201FF84
+ str r0, [r5]
+ cmp r0, #0
+ bne _021EF62E
+ bl ErrorHandling
+_021EF62E:
+ ldr r0, [r5]
+ mov r1, #0x11
+ bl FUN_02020130
+ add sp, #0x44
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EF5EC
+
+ thumb_func_start MOD16_021EF63C
+MOD16_021EF63C: ; 0x021EF63C
+ ldr r3, _021EF644 ; =0x0201FFC9
+ ldr r0, [r0]
+ bx r3
+ nop
+_021EF644: .word 0x0201FFC9
+ thumb_func_end MOD16_021EF63C
+
+ thumb_func_start MOD16_021EF648
+MOD16_021EF648: ; 0x021EF648
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r7, r1, #0
+ add r5, r0, #0
+ add r0, r7, #0
+ add r1, r3, #0
+ add r6, r2, #0
+ bl MOD16_021E57C8
+ add r4, r0, #0
+ ldr r0, [sp, #0x40]
+ str r7, [sp]
+ mov r1, #0
+ bl FUN_02009E54
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ str r0, [sp, #0xc]
+ mov r0, #0x4d
+ mvn r0, r0
+ str r0, [sp, #0x10]
+ add r0, #0x46
+ str r0, [sp, #0x14]
+ mov r0, #2
+ str r0, [sp, #0x18]
+ mov r0, #0x1f
+ str r0, [sp, #0x1c]
+ mov r0, #1
+ str r0, [sp, #0x20]
+ str r6, [sp, #0x24]
+ str r4, [sp, #4]
+ add r0, sp, #0
+ bl MOD16_021DB2BC
+ str r0, [r5, #4]
+ add r0, r4, #0
+ bl MOD16_021DB3BC
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EF648
+
+ thumb_func_start MOD16_021EF698
+MOD16_021EF698: ; 0x021EF698
+ ldr r3, _021EF6A0 ; =MOD16_021DB338
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021EF6A0: .word MOD16_021DB338
+ thumb_func_end MOD16_021EF698
+
+ thumb_func_start MOD16_021EF6A4
+MOD16_021EF6A4: ; 0x021EF6A4
+ push {r3, lr}
+ sub sp, #0x18
+ mov r2, #0x5a
+ str r2, [sp]
+ mov r2, #0xd
+ str r2, [sp, #4]
+ mov r2, #0x58
+ str r2, [sp, #8]
+ mov r2, #0x59
+ str r2, [sp, #0xc]
+ mov r2, #5
+ str r2, [sp, #0x10]
+ ldr r2, _021EF6D0 ; =0x00004268
+ add r0, #8
+ str r2, [sp, #0x14]
+ add r2, r3, #0
+ mov r3, #0x45
+ bl MOD16_021EF42C
+ add sp, #0x18
+ pop {r3, pc}
+ nop
+_021EF6D0: .word 0x00004268
+ thumb_func_end MOD16_021EF6A4
+
+ thumb_func_start MOD16_021EF6D4
+MOD16_021EF6D4: ; 0x021EF6D4
+ ldr r3, _021EF6DC ; =MOD16_021EF4AC
+ add r0, #8
+ bx r3
+ nop
+_021EF6DC: .word MOD16_021EF4AC
+ thumb_func_end MOD16_021EF6D4
+
+ thumb_func_start MOD16_021EF6E0
+MOD16_021EF6E0: ; 0x021EF6E0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ add r5, r0, #0
+ add r7, r1, #0
+ ldr r0, [sp, #0x60]
+ mov r1, #6
+ str r2, [sp]
+ str r3, [sp, #4]
+ bl FUN_02068678
+ add r4, r0, #0
+ ldr r0, [sp, #0x60]
+ mov r1, #7
+ bl FUN_02068678
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD16_021E563C
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD16_021E563C
+ add r6, r0, #0
+ add r0, r5, #0
+ ldr r1, [sp]
+ add r0, #8
+ add r2, sp, #8
+ mov r3, #2
+ bl MOD16_021EF4E0
+ add r0, sp, #8
+ str r0, [sp, #0x30]
+ mov r0, #1
+ str r0, [sp, #0x44]
+ mov r0, #0x20
+ str r0, [sp, #0x40]
+ ldr r0, [sp, #4]
+ str r7, [sp, #0x2c]
+ str r0, [sp, #0x48]
+ mov r0, #0xaa
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x34]
+ mov r0, #0x12
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ add r1, r4, #0
+ str r0, [r5]
+ bl FUN_02020130
+ cmp r4, r6
+ beq _021EF76C
+ mov r0, #0x37
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ mov r0, #0x12
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ add r1, r6, #0
+ str r0, [r5, #4]
+ bl FUN_02020130
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+_021EF76C:
+ mov r0, #0
+ str r0, [r5, #4]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021EF6E0
+
+ thumb_func_start MOD16_021EF774
+MOD16_021EF774: ; 0x021EF774
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021EF782
+ bl FUN_0201FFC8
+_021EF782:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021EF78C
+ bl FUN_0201FFC8
+_021EF78C:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EF774
+
+ thumb_func_start MOD16_021EF790
+MOD16_021EF790: ; 0x021EF790
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ mov r2, #0
+ add r5, r0, #0
+ add r4, r1, #0
+ str r2, [sp]
+ mov r0, #0x45
+ mov r1, #6
+ add r3, r2, #0
+ str r4, [sp, #4]
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ str r4, [sp, #0xc]
+ mov r0, #0x45
+ mov r1, #0x21
+ add r2, r5, #0
+ mov r3, #3
+ bl FUN_0200687C
+ str r4, [sp]
+ mov r0, #0x45
+ mov r1, #0x32
+ mov r2, #1
+ add r3, sp, #0x10
+ bl FUN_02006BDC
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r6, r0, #0
+ ldrh r0, [r2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ add r0, r5, #0
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ str r4, [sp]
+ mov r0, #0x45
+ mov r1, #0x33
+ mov r2, #1
+ add r3, sp, #0x10
+ bl FUN_02006BDC
+ ldr r2, [sp, #0x10]
+ mov r1, #3
+ str r1, [sp]
+ add r6, r0, #0
+ ldrh r0, [r2]
+ mov r3, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ add r0, r5, #0
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ str r4, [sp]
+ mov r0, #0x45
+ mov r1, #0x34
+ mov r2, #1
+ add r3, sp, #0x10
+ bl FUN_02006BDC
+ add r6, r0, #0
+ ldr r2, [sp, #0x10]
+ mov r0, #8
+ str r0, [sp]
+ ldrh r0, [r2]
+ mov r1, #3
+ mov r3, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ add r0, r5, #0
+ bl FUN_02018148
+ add r0, r6, #0
+ bl FUN_02016A18
+ str r4, [sp]
+ mov r0, #0x45
+ mov r1, #0x36
+ mov r2, #1
+ add r3, sp, #0x10
+ bl FUN_02006BDC
+ add r4, r0, #0
+ ldr r2, [sp, #0x10]
+ mov r0, #0x10
+ str r0, [sp]
+ ldrh r0, [r2]
+ mov r1, #3
+ mov r3, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ add r0, r5, #0
+ bl FUN_02018148
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ mov r1, #3
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD16_021EF790
+
+ thumb_func_start MOD16_021EF8A8
+MOD16_021EF8A8: ; 0x021EF8A8
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ add r5, r1, #0
+ str r0, [sp, #8]
+ str r5, [sp, #0xc]
+ mov r0, #0x45
+ mov r1, #0x21
+ add r2, r4, #0
+ mov r3, #2
+ bl FUN_0200687C
+ str r5, [sp]
+ mov r0, #0x45
+ mov r1, #0x39
+ mov r2, #1
+ add r3, sp, #0x10
+ bl FUN_02006BDC
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r5, r0, #0
+ ldrh r0, [r2]
+ mov r1, #2
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ add r0, r4, #0
+ bl FUN_02018148
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EF8A8
+
+ thumb_func_start MOD16_021EF90C
+MOD16_021EF90C: ; 0x021EF90C
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ cmp r0, #4
+ bhi _021EF994
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021EF928: ; jump table
+ .short _021EF932 - _021EF928 - 2 ; case 0
+ .short _021EF940 - _021EF928 - 2 ; case 1
+ .short _021EF958 - _021EF928 - 2 ; case 2
+ .short _021EF982 - _021EF928 - 2 ; case 3
+ .short _021EF994 - _021EF928 - 2 ; case 4
+_021EF932:
+ ldr r0, _021EF9B4 ; =0x04000050
+ mov r2, #0
+ strh r2, [r0]
+ ldr r0, [r4, r1]
+ add r0, r0, #1
+ str r0, [r4, r1]
+ b _021EF994
+_021EF940:
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ bl MOD16_021EFA28
+ cmp r0, #0
+ beq _021EF994
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _021EF994
+_021EF958:
+ add r2, r1, #0
+ add r2, #0x47
+ str r2, [sp]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ mov r0, #0xe
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r3, r2, #0
+ bl FUN_020056AC
+ cmp r0, #0
+ bne _021EF976
+ bl ErrorHandling
+_021EF976:
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _021EF994
+_021EF982:
+ bl FUN_02005670
+ cmp r0, #0
+ bne _021EF994
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+_021EF994:
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021EF9A6
+ sub r0, #0x20
+ add r0, r4, r0
+ bl MOD16_021EFB78
+_021EF9A6:
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FDEC
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021EF9B4: .word 0x04000050
+ thumb_func_end MOD16_021EF90C
+
+ thumb_func_start MOD16_021EF9B8
+MOD16_021EF9B8: ; 0x021EF9B8
+ push {r4, lr}
+ mov r1, #0
+ mov r3, #2
+ add r2, r1, #0
+ lsl r3, r3, #8
+ add r4, r0, #0
+ bl FUN_02003108
+ mov r3, #7
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #0
+ lsl r3, r3, #6
+ bl FUN_02003108
+ pop {r4, pc}
+ thumb_func_end MOD16_021EF9B8
+
+ thumb_func_start MOD16_021EF9D8
+MOD16_021EF9D8: ; 0x021EF9D8
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [sp, #0x20]
+ add r4, r3, #0
+ str r0, [sp]
+ add r0, r1, #0
+ add r1, r2, #0
+ ldr r2, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ bl FUN_02007E68
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x20]
+ lsl r3, r3, #0x18
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ ldr r2, _021EFA24 ; =0x0000FFFF
+ add r0, r5, #0
+ mov r1, #5
+ asr r3, r3, #0x18
+ bl FUN_02003210
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_020038F0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021EFA24: .word 0x0000FFFF
+ thumb_func_end MOD16_021EF9D8
+
+ thumb_func_start MOD16_021EFA28
+MOD16_021EFA28: ; 0x021EFA28
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ bl FUN_020038E4
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_02007F20
+ cmp r4, #0
+ bne _021EFA44
+ cmp r0, #0
+ bne _021EFA44
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021EFA44:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EFA28
+
+ thumb_func_start MOD16_021EFA48
+MOD16_021EFA48: ; 0x021EFA48
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, _021EFA68 ; =0x00020100
+ add r5, r0, #0
+ str r1, [sp]
+ add r1, r2, #0
+ add r2, r4, #0
+ mov r3, #0
+ bl MOD16_021E5064
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EFA6C
+ pop {r3, r4, r5, pc}
+ nop
+_021EFA68: .word 0x00020100
+ thumb_func_end MOD16_021EFA48
+
+ thumb_func_start MOD16_021EFA6C
+MOD16_021EFA6C: ; 0x021EFA6C
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ mov r0, #0x40
+ add r4, r1, #0
+ bl FUN_020219F4
+ add r5, r0, #0
+ ldr r2, _021EFABC ; =0x00000266
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r4, #0
+ bl FUN_0200A86C
+ mov r1, #0x6d
+ add r2, r5, #0
+ add r4, r0, #0
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xc1
+ str r1, [sp, #4]
+ lsl r0, r0, #0xa
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r2, r5, #0
+ mov r3, #0x20
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_0200A8B8
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_021EFABC: .word 0x00000266
+ thumb_func_end MOD16_021EFA6C
+
+ thumb_func_start MOD16_021EFAC0
+MOD16_021EFAC0: ; 0x021EFAC0
+ push {r4, r5, r6, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ add r4, r2, #0
+ add r0, sp, #0x10
+ mov r2, #2
+ add r6, r3, #0
+ bl FUN_02068B68
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r1, sp, #0x10
+ add r2, r4, #0
+ add r3, r6, #0
+ bl FUN_020073A0
+ add sp, #0x20
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021EFAC0
+
+ thumb_func_start MOD16_021EFAEC
+MOD16_021EFAEC: ; 0x021EFAEC
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ ldr r4, _021EFB10 ; =0x021FF760
+ add r3, sp, #0
+ add r5, r0, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ ldr r1, _021EFB14 ; =0x00200010
+ mov r2, #0x10
+ str r5, [sp, #0xc]
+ bl FUN_0201D060
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021EFB10: .word 0x021FF760
+_021EFB14: .word 0x00200010
+ thumb_func_end MOD16_021EFAEC
+
+ thumb_func_start MOD16_021EFB18
+MOD16_021EFB18: ; 0x021EFB18
+ ldr r3, _021EFB1C ; =0x0201D12D
+ bx r3
+ .align 2, 0
+_021EFB1C: .word 0x0201D12D
+ thumb_func_end MOD16_021EFB18
+
+ thumb_func_start MOD16_021EFB20
+MOD16_021EFB20: ; 0x021EFB20
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ cmp r2, #0
+ bne _021EFB3A
+ add r2, r4, #0
+ mov r0, #0x45
+ mov r1, #0x17
+ add r2, #8
+ add r3, r5, #0
+ bl FUN_02006C08
+ b _021EFB48
+_021EFB3A:
+ add r2, r4, #0
+ mov r0, #0x45
+ mov r1, #0x18
+ add r2, #8
+ add r3, r5, #0
+ bl FUN_02006C08
+_021EFB48:
+ add r2, r4, #0
+ str r0, [r4]
+ mov r0, #0x45
+ mov r1, #0x1a
+ add r2, #0xc
+ add r3, r5, #0
+ bl FUN_02006C08
+ str r0, [r4, #4]
+ mov r1, #0
+ str r1, [r4, #0x10]
+ str r1, [r4, #0x1c]
+ add r2, r4, #0
+_021EFB62:
+ add r1, r1, #1
+ lsl r0, r1, #4
+ str r0, [r2, #0x14]
+ add r2, r2, #4
+ cmp r1, #2
+ blt _021EFB62
+ ldr r1, [r4, #0x1c]
+ add r0, r4, #0
+ bl MOD16_021EFBC4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021EFB20
+
+ thumb_func_start MOD16_021EFB78
+MOD16_021EFB78: ; 0x021EFB78
+ push {r3, lr}
+ ldr r3, [r0, #0x1c]
+ lsl r1, r3, #2
+ add r1, r0, r1
+ ldr r2, [r1, #0x14]
+ ldr r1, [r0, #0x10]
+ cmp r2, r1
+ bgt _021EFB9E
+ add r1, r3, #1
+ str r1, [r0, #0x1c]
+ cmp r1, #2
+ blt _021EFB96
+ mov r1, #0
+ str r1, [r0, #0x1c]
+ str r1, [r0, #0x10]
+_021EFB96:
+ ldr r1, [r0, #0x1c]
+ bl MOD16_021EFBD8
+ pop {r3, pc}
+_021EFB9E:
+ add r1, r1, #1
+ str r1, [r0, #0x10]
+ pop {r3, pc}
+ thumb_func_end MOD16_021EFB78
+
+ thumb_func_start MOD16_021EFBA4
+MOD16_021EFBA4: ; 0x021EFBA4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021EFBAA:
+ ldr r0, [r5]
+ bl FUN_02016A18
+ add r4, r4, #1
+ cmp r4, #2
+ blt _021EFBAA
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #0x20
+ bl Call_FillMemWithValue
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EFBA4
+
+ thumb_func_start MOD16_021EFBC4
+MOD16_021EFBC4: ; 0x021EFBC4
+ lsl r1, r1, #2
+ add r0, r0, r1
+ ldr r0, [r0, #8]
+ ldr r3, _021EFBD4 ; =0x020C9550
+ ldr r0, [r0, #0xc]
+ mov r1, #0
+ mov r2, #0x20
+ bx r3
+ .align 2, 0
+_021EFBD4: .word 0x020C9550
+ thumb_func_end MOD16_021EFBC4
+
+ thumb_func_start MOD16_021EFBD8
+MOD16_021EFBD8: ; 0x021EFBD8
+ push {r3, lr}
+ add r2, r1, #0
+ add r3, r0, #0
+ lsl r2, r2, #2
+ add r2, r3, r2
+ ldr r2, [r2, #8]
+ mov r0, #0xf
+ ldr r2, [r2, #0xc]
+ mov r1, #0
+ mov r3, #0x20
+ bl FUN_0201C2C8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EFBD8
+
+ thumb_func_start MOD16_021EFBF4
+MOD16_021EFBF4: ; 0x021EFBF4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r2, #0xd5
+ lsl r2, r2, #2
+ str r1, [sp, #4]
+ add r1, r1, r2
+ str r0, [sp]
+ ldr r2, _021EFC7C ; =0x00001DE0
+ mov r0, #0
+ bl MIi_CpuClear32
+ ldr r0, [sp]
+ ldr r1, [r0, #0x2c]
+ mov r0, #1
+ tst r0, r1
+ beq _021EFC70
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ tst r0, r1
+ bne _021EFC70
+ ldr r6, _021EFC80 ; =0x000003CD
+ mov r0, #0
+ add r7, r6, #0
+ mov ip, r0
+ sub r7, #0x31
+_021EFC26:
+ mov r1, ip
+ mov r0, #1
+ tst r0, r1
+ beq _021EFC60
+ mov r0, ip
+ asr r4, r0, #1
+ ldr r0, [sp, #4]
+ lsl r3, r4, #3
+ ldr r2, [sp]
+ mov r1, #0
+ add r3, r0, r3
+ add r4, r0, r4
+_021EFC3E:
+ add r0, r2, #0
+ add r0, #0xb0
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021EFC58
+ ldr r5, _021EFC80 ; =0x000003CD
+ ldrb r5, [r4, r5]
+ lsl r5, r5, #1
+ add r5, r3, r5
+ strh r0, [r5, r7]
+ ldrb r0, [r4, r6]
+ add r0, r0, #1
+ strb r0, [r4, r6]
+_021EFC58:
+ add r1, r1, #1
+ add r2, r2, #2
+ cmp r1, #4
+ blt _021EFC3E
+_021EFC60:
+ ldr r0, [sp]
+ add r0, #0x34
+ str r0, [sp]
+ mov r0, ip
+ add r0, r0, #1
+ mov ip, r0
+ cmp r0, #4
+ blt _021EFC26
+_021EFC70:
+ ldr r2, _021EFC84 ; =0x021F4E34
+ ldr r1, _021EFC88 ; =0x00002134
+ ldr r0, [sp, #4]
+ str r2, [r0, r1]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EFC7C: .word 0x00001DE0
+_021EFC80: .word 0x000003CD
+_021EFC84: .word 0x021F4E34
+_021EFC88: .word 0x00002134
+ thumb_func_end MOD16_021EFBF4
+
+ thumb_func_start MOD16_021EFC8C
+MOD16_021EFC8C: ; 0x021EFC8C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ str r0, [sp, #4]
+ mov r0, #0xd5
+ add r5, r1, #0
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0
+ str r2, [sp, #8]
+ add r2, r0, #0
+_021EFCA0:
+ strb r2, [r1, r0]
+ add r0, r0, #1
+ cmp r0, #0x1c
+ blo _021EFCA0
+ mov r0, #0
+ mov r1, #0x64
+ mov r7, #1
+_021EFCAE:
+ add r4, r3, #0
+ tst r4, r7
+ beq _021EFCBE
+ mov r4, #0xd6
+ add r6, r5, r2
+ lsl r4, r4, #2
+ strb r1, [r6, r4]
+ b _021EFCC6
+_021EFCBE:
+ mov r4, #0xd6
+ add r6, r5, r2
+ lsl r4, r4, #2
+ strb r0, [r6, r4]
+_021EFCC6:
+ lsl r3, r3, #0x17
+ add r2, r2, #1
+ lsr r3, r3, #0x18
+ cmp r2, #4
+ blt _021EFCAE
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #8]
+ add r1, r5, #0
+ mov r3, #0
+ bl MOD11_02245D38
+ lsl r0, r0, #0x18
+ mov r4, #0
+ lsr r6, r0, #0x18
+ add r7, r4, #0
+_021EFCEA:
+ add r0, r4, #0
+ bl FUN_0206A92C
+ tst r0, r6
+ beq _021EFCFC
+ mov r0, #0xd6
+ add r1, r5, r4
+ lsl r0, r0, #2
+ strb r7, [r1, r0]
+_021EFCFC:
+ bl FUN_0201B9EC
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x1c
+ sub r2, r2, r1
+ mov r0, #0x1c
+ ror r2, r0
+ add r1, r1, r2
+ mov r0, #0x64
+ sub r2, r0, r1
+ mov r0, #0xdb
+ add r1, r5, r4
+ lsl r0, r0, #2
+ add r4, r4, #1
+ strb r2, [r1, r0]
+ cmp r4, #4
+ blt _021EFCEA
+ mov r1, #0
+ add r0, #0x60
+ strb r1, [r5, r0]
+ ldr r1, [sp, #4]
+ mov r3, #0x80
+ ldr r2, [r1, #0x2c]
+ add r1, r2, #0
+ tst r1, r3
+ beq _021EFD38
+ mov r1, #7
+ sub r0, #0x6c
+ str r1, [r5, r0]
+ b _021EFD6E
+_021EFD38:
+ add r1, r3, #0
+ add r1, #0x80
+ tst r1, r2
+ beq _021EFD48
+ lsl r1, r3, #0x16
+ sub r0, #0x6c
+ str r1, [r5, r0]
+ b _021EFD6E
+_021EFD48:
+ ldr r2, _021EFD88 ; =0x00002408
+ ldr r1, [sp, #4]
+ ldr r2, [r1, r2]
+ mov r1, #1
+ tst r1, r2
+ beq _021EFD5C
+ lsl r1, r3, #0x18
+ sub r0, #0x6c
+ str r1, [r5, r0]
+ b _021EFD6E
+_021EFD5C:
+ ldr r1, [sp, #8]
+ mov r2, #0x34
+ mul r2, r1
+ ldr r1, [sp, #4]
+ sub r0, #0x6c
+ add r1, r1, r2
+ add r1, #0xb8
+ ldr r1, [r1]
+ str r1, [r5, r0]
+_021EFD6E:
+ ldr r0, [sp, #4]
+ ldr r1, [r0, #0x2c]
+ mov r0, #2
+ tst r0, r1
+ beq _021EFD84
+ mov r1, #0x36
+ lsl r1, r1, #4
+ ldr r2, [r5, r1]
+ mov r0, #0x80
+ orr r0, r2
+ str r0, [r5, r1]
+_021EFD84:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021EFD88: .word 0x00002408
+ thumb_func_end MOD16_021EFC8C
+
+ thumb_func_start MOD16_021EFD8C
+MOD16_021EFD8C: ; 0x021EFD8C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r2, r1, #0
+ mov r1, #0xd9
+ ldr r4, [r5, #0x30]
+ lsl r1, r1, #2
+ ldrb r6, [r4, r1]
+ mov r3, #0x10
+ tst r3, r6
+ bne _021EFDBE
+ add r1, #0x6b
+ strb r2, [r4, r1]
+ add r1, r4, #0
+ bl MOD11_022482A4
+ mov r2, #0x3d
+ lsl r2, r2, #4
+ strb r0, [r4, r2]
+ sub r2, r2, #1
+ ldrb r2, [r4, r2]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r3, #0xf
+ bl MOD16_021EFC8C
+_021EFDBE:
+ ldr r1, [r5, #0x2c]
+ mov r0, #2
+ tst r0, r1
+ bne _021EFDD0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EFDDC
+ pop {r4, r5, r6, pc}
+_021EFDD0:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021EFED0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021EFD8C
+
+ thumb_func_start MOD16_021EFDDC
+MOD16_021EFDDC: ; 0x021EFDDC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r5, r1, #0
+ bl MOD16_021F2CEC
+ mov r0, #0x36
+ lsl r0, r0, #4
+ ldr r1, [r5, r0]
+ cmp r1, #0
+ beq _021EFE32
+ add r7, r0, #0
+ add r6, r0, #5
+_021EFDF6:
+ mov r0, #1
+ tst r0, r1
+ beq _021EFE18
+ mov r0, #0xd9
+ lsl r0, r0, #2
+ ldrb r1, [r5, r0]
+ mov r0, #0x10
+ tst r0, r1
+ bne _021EFE10
+ mov r0, #0xd5
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+_021EFE10:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD16_021F00F0
+_021EFE18:
+ ldr r0, [r5, r7]
+ mov r1, #0
+ lsr r0, r0, #1
+ str r0, [r5, r7]
+ ldrb r0, [r5, r6]
+ add r0, r0, #1
+ strb r0, [r5, r6]
+ ldr r0, _021EFEC8 ; =0x00000355
+ strb r1, [r5, r0]
+ add r0, #0xb
+ ldr r1, [r5, r0]
+ cmp r1, #0
+ bne _021EFDF6
+_021EFE32:
+ mov r3, #0xd9
+ lsl r3, r3, #2
+ ldrb r1, [r5, r3]
+ mov r0, #2
+ tst r0, r1
+ beq _021EFE42
+ mov r0, #4
+ b _021EFEB2
+_021EFE42:
+ mov r0, #4
+ tst r0, r1
+ beq _021EFE4C
+ mov r0, #5
+ b _021EFEB2
+_021EFE4C:
+ add r0, r3, #0
+ sub r0, #0xc
+ ldrsb r0, [r5, r0]
+ add r1, sp, #0
+ mov r4, #1
+ strb r0, [r1, #4]
+ mov r0, #0
+ strb r0, [r1]
+ add r3, #0x6b
+ ldrb r3, [r5, r3]
+ mov r0, #0xc0
+ add r2, r4, #0
+ mul r0, r3
+ add r0, r5, r0
+ add r3, r0, #2
+_021EFE6A:
+ ldr r0, _021EFECC ; =0x00002D4C
+ ldrh r0, [r3, r0]
+ cmp r0, #0
+ beq _021EFE9C
+ mov r0, #0xd6
+ add r6, r5, r2
+ lsl r0, r0, #2
+ ldrsb r6, [r6, r0]
+ ldrb r0, [r1, #4]
+ cmp r0, r6
+ bne _021EFE90
+ add r0, sp, #4
+ strb r6, [r0, r4]
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ add r7, r4, #0
+ lsr r4, r0, #0x18
+ add r0, sp, #0
+ strb r2, [r0, r7]
+_021EFE90:
+ ldrb r0, [r1, #4]
+ cmp r0, r6
+ bge _021EFE9C
+ strb r6, [r1, #4]
+ mov r4, #1
+ strb r2, [r1]
+_021EFE9C:
+ add r2, r2, #1
+ add r3, r3, #2
+ cmp r2, #4
+ blt _021EFE6A
+ bl FUN_0201B9EC
+ add r1, r4, #0
+ bl _s32_div_f
+ add r0, sp, #0
+ ldrb r0, [r0, r1]
+_021EFEB2:
+ mov r2, #0x3d
+ lsl r2, r2, #4
+ sub r1, r2, #1
+ ldrb r1, [r5, r1]
+ ldrb r3, [r5, r2]
+ add r2, #0xa
+ add r1, r5, r1
+ strb r3, [r1, r2]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021EFEC8: .word 0x00000355
+_021EFECC: .word 0x00002D4C
+ thumb_func_end MOD16_021EFDDC
+
+ thumb_func_start MOD16_021EFED0
+MOD16_021EFED0: ; 0x021EFED0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r7, r0, #0
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, sp, #0x18
+ add r5, r1, #0
+ str r0, [sp, #4]
+ add r0, sp, #0x20
+ str r5, [sp, #8]
+ str r0, [sp]
+_021EFEE6:
+ ldr r0, _021F00DC ; =0x000003CF
+ ldrb r2, [r5, r0]
+ ldr r0, [sp, #0xc]
+ cmp r0, r2
+ beq _021EFEFA
+ ldr r1, _021F00E0 ; =0x00002D8C
+ ldr r0, [sp, #8]
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ bne _021EFF08
+_021EFEFA:
+ mov r1, #0
+ ldr r0, [sp, #4]
+ mvn r1, r1
+ strb r1, [r0]
+ ldr r0, [sp]
+ strh r1, [r0]
+ b _021F0026
+_021EFF08:
+ add r0, r7, #0
+ add r1, r5, #0
+ mov r3, #0xf
+ bl MOD16_021EFC8C
+ mov r1, #0x3d
+ ldr r0, [sp, #0xc]
+ lsl r1, r1, #4
+ strb r0, [r5, r1]
+ sub r1, r1, #1
+ mov r2, #1
+ ldrb r1, [r5, r1]
+ and r0, r2
+ and r1, r2
+ cmp r0, r1
+ beq _021EFF30
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD16_021F2CEC
+_021EFF30:
+ ldr r0, _021F00E4 ; =0x00000365
+ mov r2, #0
+ add r1, r0, #0
+ strb r2, [r5, r0]
+ sub r1, #0x10
+ strb r2, [r5, r1]
+ sub r0, r0, #5
+ ldr r4, [r5, r0]
+ cmp r4, #0
+ beq _021EFF7A
+ ldr r6, _021F00E4 ; =0x00000365
+_021EFF46:
+ mov r0, #1
+ tst r0, r4
+ beq _021EFF68
+ mov r0, #0xd9
+ lsl r0, r0, #2
+ ldrb r1, [r5, r0]
+ mov r0, #0x10
+ tst r0, r1
+ bne _021EFF60
+ mov r0, #0xd5
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+_021EFF60:
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD16_021F00F0
+_021EFF68:
+ ldrb r0, [r5, r6]
+ asr r4, r4, #1
+ mov r1, #0
+ add r0, r0, #1
+ strb r0, [r5, r6]
+ ldr r0, _021F00E8 ; =0x00000355
+ cmp r4, #0
+ strb r1, [r5, r0]
+ bne _021EFF46
+_021EFF7A:
+ mov r2, #0xd9
+ lsl r2, r2, #2
+ ldrb r1, [r5, r2]
+ mov r0, #2
+ tst r0, r1
+ beq _021EFF8E
+ ldr r0, [sp, #4]
+ mov r1, #4
+ strb r1, [r0]
+ b _021F0026
+_021EFF8E:
+ mov r0, #4
+ tst r0, r1
+ beq _021EFF9C
+ ldr r0, [sp, #4]
+ mov r1, #5
+ strb r1, [r0]
+ b _021F0026
+_021EFF9C:
+ add r0, r2, #0
+ sub r0, #0xc
+ ldrsb r1, [r5, r0]
+ add r0, sp, #0x10
+ add r2, #0x6b
+ strb r1, [r0, #4]
+ mov r1, #0
+ strb r1, [r0]
+ ldrb r3, [r5, r2]
+ mov r2, #0xc0
+ mov r4, #1
+ mul r2, r3
+ add r2, r5, r2
+ add r1, r4, #0
+ add r2, r2, #2
+_021EFFBA:
+ ldr r3, _021F00EC ; =0x00002D4C
+ ldrh r3, [r2, r3]
+ cmp r3, #0
+ beq _021EFFE6
+ mov r3, #0xd6
+ add r6, r5, r1
+ lsl r3, r3, #2
+ ldrsb r3, [r6, r3]
+ ldrb r6, [r0, #4]
+ cmp r6, r3
+ bne _021EFFDA
+ add r6, sp, #0x14
+ strb r3, [r6, r4]
+ add r6, sp, #0x10
+ strb r1, [r6, r4]
+ add r4, r4, #1
+_021EFFDA:
+ ldrb r6, [r0, #4]
+ cmp r6, r3
+ bge _021EFFE6
+ strb r3, [r0, #4]
+ strb r1, [r0]
+ mov r4, #1
+_021EFFE6:
+ add r1, r1, #1
+ add r2, r2, #2
+ cmp r1, #4
+ blt _021EFFBA
+ bl FUN_0201B9EC
+ add r1, r4, #0
+ bl _s32_div_f
+ add r0, sp, #0x10
+ ldrb r1, [r0, r1]
+ ldr r0, [sp, #4]
+ strb r1, [r0]
+ add r0, sp, #0x10
+ ldrb r1, [r0, #4]
+ ldr r0, [sp]
+ strh r1, [r0]
+ ldr r0, _021F00DC ; =0x000003CF
+ ldrb r1, [r5, r0]
+ mov r0, #2
+ eor r1, r0
+ ldr r0, [sp, #0xc]
+ cmp r0, r1
+ bne _021F0026
+ ldr r0, [sp]
+ mov r1, #0
+ ldrsh r0, [r0, r1]
+ cmp r0, #0x64
+ bge _021F0026
+ ldr r0, [sp]
+ sub r1, r1, #1
+ strh r1, [r0]
+_021F0026:
+ ldr r0, [sp, #8]
+ add r0, #0xc0
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ add r0, r0, #2
+ str r0, [sp]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+ cmp r0, #4
+ bge _021F0044
+ b _021EFEE6
+_021F0044:
+ mov r1, #0x10
+ add r0, sp, #0x10
+ ldrsh r1, [r0, r1]
+ mov r2, #0
+ mov r6, #1
+ strb r2, [r0, #0xc]
+ add r2, sp, #0x20
+ add r4, r6, #0
+ add r2, #2
+_021F0056:
+ mov r0, #0
+ ldrsh r3, [r2, r0]
+ cmp r1, r3
+ bne _021F0064
+ add r0, sp, #0x1c
+ strb r4, [r0, r6]
+ add r6, r6, #1
+_021F0064:
+ cmp r1, r3
+ bge _021F0070
+ add r0, sp, #0x10
+ add r1, r3, #0
+ strb r4, [r0, #0xc]
+ mov r6, #1
+_021F0070:
+ add r4, r4, #1
+ add r2, r2, #2
+ cmp r4, #4
+ blt _021F0056
+ bl FUN_0201B9EC
+ add r1, r6, #0
+ bl _s32_div_f
+ add r0, sp, #0x1c
+ ldrb r3, [r0, r1]
+ ldr r0, _021F00DC ; =0x000003CF
+ ldrb r1, [r5, r0]
+ add r2, r5, r1
+ add r1, r0, #0
+ add r1, #0xb
+ strb r3, [r2, r1]
+ ldrb r2, [r5, r0]
+ add r1, r0, #0
+ add r1, #0xb
+ add r3, r5, r2
+ ldrb r1, [r3, r1]
+ add r3, sp, #0x18
+ add r0, #0x17
+ ldrsb r4, [r3, r1]
+ mov r3, #0xc0
+ mul r3, r2
+ add r3, r5, r3
+ lsl r2, r4, #1
+ add r3, r3, r2
+ ldr r2, _021F00EC ; =0x00002D4C
+ ldrh r2, [r3, r2]
+ lsl r2, r2, #4
+ add r2, r5, r2
+ ldrh r2, [r2, r0]
+ mov r0, #2
+ lsl r0, r0, #8
+ cmp r2, r0
+ bne _021F00D2
+ add r0, r7, #0
+ bl MOD11_02230270
+ cmp r0, #0
+ bne _021F00D2
+ ldr r0, _021F00DC ; =0x000003CF
+ ldrb r2, [r5, r0]
+ add r0, #0xb
+ add r1, r5, r2
+ strb r2, [r1, r0]
+_021F00D2:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F00DC: .word 0x000003CF
+_021F00E0: .word 0x00002D8C
+_021F00E4: .word 0x00000365
+_021F00E8: .word 0x00000355
+_021F00EC: .word 0x00002D4C
+ thumb_func_end MOD16_021EFED0
+
+ thumb_func_start MOD16_021F00F0
+MOD16_021F00F0: ; 0x021F00F0
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #0xd5
+ add r5, r1, #0
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ cmp r0, #2
+ beq _021F01D6
+ mov r6, #0xd9
+ lsl r6, r6, #2
+ add r4, r6, #0
+ sub r4, #0x10
+_021F0108:
+ cmp r0, #0
+ beq _021F0114
+ cmp r0, #1
+ beq _021F0154
+ cmp r0, #2
+ b _021F01CC
+_021F0114:
+ ldr r1, _021F01D8 ; =0x00000365
+ ldr r0, _021F01DC ; =0x00002134
+ ldrb r1, [r5, r1]
+ ldr r0, [r5, r0]
+ lsl r1, r1, #2
+ ldr r1, [r0, r1]
+ ldr r0, _021F01E0 ; =0x00002138
+ str r1, [r5, r0]
+ ldr r0, _021F01E4 ; =0x000003CF
+ ldrb r1, [r5, r0]
+ mov r0, #0xc0
+ mul r0, r1
+ add r3, r5, r0
+ ldr r0, _021F01E8 ; =0x00000355
+ ldrb r2, [r5, r0]
+ ldr r0, _021F01EC ; =0x00002D6C
+ add r1, r3, r2
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _021F0140
+ mov r1, #0
+ b _021F0148
+_021F0140:
+ lsl r0, r2, #1
+ add r1, r3, r0
+ ldr r0, _021F01F0 ; =0x00002D4C
+ ldrh r1, [r1, r0]
+_021F0148:
+ ldr r0, _021F01F4 ; =0x00000356
+ strh r1, [r5, r0]
+ ldrb r0, [r5, r4]
+ add r0, r0, #1
+ strb r0, [r5, r4]
+ b _021F01CC
+_021F0154:
+ ldr r0, _021F01F4 ; =0x00000356
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021F0176
+ ldr r3, _021F01E0 ; =0x00002138
+ ldr r2, _021F01DC ; =0x00002134
+ ldr r3, [r5, r3]
+ ldr r2, [r5, r2]
+ lsl r3, r3, #2
+ ldr r2, [r2, r3]
+ add r0, r7, #0
+ lsl r3, r2, #2
+ ldr r2, _021F01F8 ; =0x021FF810
+ add r1, r5, #0
+ ldr r2, [r2, r3]
+ blx r2
+ b _021F018C
+_021F0176:
+ ldr r0, _021F01E8 ; =0x00000355
+ mov r1, #0
+ ldrb r0, [r5, r0]
+ add r2, r5, r0
+ mov r0, #0xd6
+ lsl r0, r0, #2
+ strb r1, [r2, r0]
+ ldrb r1, [r5, r6]
+ mov r0, #1
+ orr r0, r1
+ strb r0, [r5, r6]
+_021F018C:
+ mov r0, #0xd9
+ lsl r0, r0, #2
+ ldrb r1, [r5, r0]
+ mov r0, #1
+ tst r0, r1
+ beq _021F01CC
+ ldr r0, _021F01E8 ; =0x00000355
+ ldrb r0, [r5, r0]
+ add r1, r0, #1
+ ldr r0, _021F01E8 ; =0x00000355
+ strb r1, [r5, r0]
+ ldrb r0, [r5, r0]
+ cmp r0, #4
+ bhs _021F01BE
+ mov r0, #0xd9
+ lsl r0, r0, #2
+ ldrb r1, [r5, r0]
+ mov r0, #8
+ tst r0, r1
+ bne _021F01BE
+ mov r0, #0xd5
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ b _021F01C4
+_021F01BE:
+ ldrb r0, [r5, r4]
+ add r0, r0, #1
+ strb r0, [r5, r4]
+_021F01C4:
+ ldrb r1, [r5, r6]
+ mov r0, #0xfe
+ and r0, r1
+ strb r0, [r5, r6]
+_021F01CC:
+ mov r0, #0xd5
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ cmp r0, #2
+ bne _021F0108
+_021F01D6:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F01D8: .word 0x00000365
+_021F01DC: .word 0x00002134
+_021F01E0: .word 0x00002138
+_021F01E4: .word 0x000003CF
+_021F01E8: .word 0x00000355
+_021F01EC: .word 0x00002D6C
+_021F01F0: .word 0x00002D4C
+_021F01F4: .word 0x00000356
+_021F01F8: .word 0x021FF810
+ thumb_func_end MOD16_021F00F0
+
+ thumb_func_start MOD16_021F01FC
+MOD16_021F01FC: ; 0x021F01FC
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x18
+ sub r1, r1, r2
+ mov r0, #0x18
+ ror r1, r0
+ add r0, r2, r1
+ cmp r0, r4
+ bge _021F0234
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021F2D88
+_021F0234:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F01FC
+
+ thumb_func_start MOD16_021F0238
+MOD16_021F0238: ; 0x021F0238
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x18
+ sub r1, r1, r2
+ mov r0, #0x18
+ ror r1, r0
+ add r0, r2, r1
+ cmp r0, r4
+ ble _021F0270
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021F2D88
+_021F0270:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F0238
+
+ thumb_func_start MOD16_021F0274
+MOD16_021F0274: ; 0x021F0274
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x18
+ sub r1, r1, r2
+ mov r0, #0x18
+ ror r1, r0
+ add r0, r2, r1
+ cmp r4, r0
+ bne _021F02AC
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021F2D88
+_021F02AC:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F0274
+
+ thumb_func_start MOD16_021F02B0
+MOD16_021F02B0: ; 0x021F02B0
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x18
+ sub r1, r1, r2
+ mov r0, #0x18
+ ror r1, r0
+ add r0, r2, r1
+ cmp r4, r0
+ beq _021F02E8
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021F2D88
+_021F02E8:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F02B0
+
+ thumb_func_start MOD16_021F02EC
+MOD16_021F02EC: ; 0x021F02EC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ mov r2, #0xd6
+ lsl r2, r2, #2
+ sub r3, r2, #3
+ ldrb r5, [r4, r3]
+ add r1, r4, r2
+ ldrsb r3, [r1, r5]
+ add r0, r3, r0
+ strb r0, [r1, r5]
+ sub r0, r2, #3
+ ldrb r2, [r4, r0]
+ ldrsb r0, [r1, r2]
+ cmp r0, #0
+ bge _021F031C
+ mov r0, #0
+ strb r0, [r1, r2]
+_021F031C:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F02EC
+
+ thumb_func_start MOD16_021F0320
+MOD16_021F0320: ; 0x021F0320
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r3, _021F0374 ; =0x00002D8C
+ add r2, r5, r1
+ ldr r1, [r2, r3]
+ mov r0, #0x64
+ mul r0, r1
+ add r1, r3, #4
+ ldr r1, [r2, r1]
+ bl _u32_div_f
+ cmp r0, r6
+ bhs _021F0370
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F0370:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F0374: .word 0x00002D8C
+ thumb_func_end MOD16_021F0320
+
+ thumb_func_start MOD16_021F0378
+MOD16_021F0378: ; 0x021F0378
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r3, _021F03CC ; =0x00002D8C
+ add r2, r5, r1
+ ldr r1, [r2, r3]
+ mov r0, #0x64
+ mul r0, r1
+ add r1, r3, #4
+ ldr r1, [r2, r1]
+ bl _u32_div_f
+ cmp r0, r6
+ bls _021F03C8
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F03C8:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F03CC: .word 0x00002D8C
+ thumb_func_end MOD16_021F0378
+
+ thumb_func_start MOD16_021F03D0
+MOD16_021F03D0: ; 0x021F03D0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r3, _021F0424 ; =0x00002D8C
+ add r2, r5, r1
+ ldr r1, [r2, r3]
+ mov r0, #0x64
+ mul r0, r1
+ add r1, r3, #4
+ ldr r1, [r2, r1]
+ bl _u32_div_f
+ cmp r0, r6
+ bne _021F0420
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F0420:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F0424: .word 0x00002D8C
+ thumb_func_end MOD16_021F03D0
+
+ thumb_func_start MOD16_021F0428
+MOD16_021F0428: ; 0x021F0428
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r3, _021F047C ; =0x00002D8C
+ add r2, r5, r1
+ ldr r1, [r2, r3]
+ mov r0, #0x64
+ mul r0, r1
+ add r1, r3, #4
+ ldr r1, [r2, r1]
+ bl _u32_div_f
+ cmp r0, r6
+ beq _021F0478
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F0478:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F047C: .word 0x00002D8C
+ thumb_func_end MOD16_021F0428
+
+ thumb_func_start MOD16_021F0480
+MOD16_021F0480: ; 0x021F0480
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F04C8 ; =0x00002DAC
+ add r1, r5, r1
+ ldr r0, [r1, r0]
+ tst r0, r6
+ beq _021F04C4
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F04C4:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F04C8: .word 0x00002DAC
+ thumb_func_end MOD16_021F0480
+
+ thumb_func_start MOD16_021F04CC
+MOD16_021F04CC: ; 0x021F04CC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F0514 ; =0x00002DAC
+ add r1, r5, r1
+ ldr r0, [r1, r0]
+ tst r0, r6
+ bne _021F0510
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F0510:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F0514: .word 0x00002DAC
+ thumb_func_end MOD16_021F04CC
+
+ thumb_func_start MOD16_021F0518
+MOD16_021F0518: ; 0x021F0518
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F0560 ; =0x00002DB0
+ add r1, r5, r1
+ ldr r0, [r1, r0]
+ tst r0, r6
+ beq _021F055C
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F055C:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F0560: .word 0x00002DB0
+ thumb_func_end MOD16_021F0518
+
+ thumb_func_start MOD16_021F0564
+MOD16_021F0564: ; 0x021F0564
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F05AC ; =0x00002DB0
+ add r1, r5, r1
+ ldr r0, [r1, r0]
+ tst r0, r6
+ bne _021F05A8
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F05A8:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F05AC: .word 0x00002DB0
+ thumb_func_end MOD16_021F0564
+
+ thumb_func_start MOD16_021F05B0
+MOD16_021F05B0: ; 0x021F05B0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ mov r0, #0xb7
+ add r1, r5, r1
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ tst r0, r6
+ beq _021F05F6
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F05F6:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021F05B0
+
+ thumb_func_start MOD16_021F05F8
+MOD16_021F05F8: ; 0x021F05F8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ mov r0, #0xb7
+ add r1, r5, r1
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ tst r0, r6
+ bne _021F063E
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F063E:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021F05F8
+
+ thumb_func_start MOD16_021F0640
+MOD16_021F0640: ; 0x021F0640
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ str r0, [sp]
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r1, r0, #0
+ add r0, r7, #0
+ bl MOD11_02230270
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0x6f
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ tst r0, r6
+ beq _021F068E
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F068E:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021F0640
+
+ thumb_func_start MOD16_021F0690
+MOD16_021F0690: ; 0x021F0690
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ str r0, [sp]
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r1, r0, #0
+ add r0, r7, #0
+ bl MOD11_02230270
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0x6f
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ tst r0, r6
+ bne _021F06DE
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F06DE:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021F0690
+
+ thumb_func_start MOD16_021F06E0
+MOD16_021F06E0: ; 0x021F06E0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, r4
+ bge _021F070C
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F070C:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F06E0
+
+ thumb_func_start MOD16_021F0710
+MOD16_021F0710: ; 0x021F0710
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, r4
+ ble _021F073C
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F073C:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F0710
+
+ thumb_func_start MOD16_021F0740
+MOD16_021F0740: ; 0x021F0740
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, r4
+ bne _021F076C
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F076C:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F0740
+
+ thumb_func_start MOD16_021F0770
+MOD16_021F0770: ; 0x021F0770
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, r4
+ beq _021F079C
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F079C:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F0770
+
+ thumb_func_start MOD16_021F07A0
+MOD16_021F07A0: ; 0x021F07A0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ tst r0, r4
+ beq _021F07CC
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F07CC:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F07A0
+
+ thumb_func_start MOD16_021F07D0
+MOD16_021F07D0: ; 0x021F07D0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ tst r0, r4
+ bne _021F07FC
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F07FC:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F07D0
+
+ thumb_func_start MOD16_021F0800
+MOD16_021F0800: ; 0x021F0800
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ ldr r0, _021F082C ; =0x00000356
+ ldrh r0, [r5, r0]
+ cmp r0, r4
+ bne _021F082A
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F082A:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021F082C: .word 0x00000356
+ thumb_func_end MOD16_021F0800
+
+ thumb_func_start MOD16_021F0830
+MOD16_021F0830: ; 0x021F0830
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ ldr r0, _021F085C ; =0x00000356
+ ldrh r0, [r5, r0]
+ cmp r0, r4
+ beq _021F085A
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F085A:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021F085C: .word 0x00000356
+ thumb_func_end MOD16_021F0830
+
+ thumb_func_start MOD16_021F0860
+MOD16_021F0860: ; 0x021F0860
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021F2D74
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _021F08B0
+ mov r6, #0xd7
+ add r7, r1, #0
+ lsl r6, r6, #2
+_021F0892:
+ ldr r1, [r5, r6]
+ cmp r1, r0
+ bne _021F08A2
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl MOD16_021F2D88
+ pop {r3, r4, r5, r6, r7, pc}
+_021F08A2:
+ add r4, r4, #1
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021F2D74
+ cmp r0, r7
+ bne _021F0892
+_021F08B0:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F0860
+
+ thumb_func_start MOD16_021F08B4
+MOD16_021F08B4: ; 0x021F08B4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ str r0, [sp]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021F2D74
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _021F08FA
+ mov r6, #0xd7
+ add r7, r1, #0
+ lsl r6, r6, #2
+_021F08E6:
+ ldr r1, [r5, r6]
+ cmp r1, r0
+ beq _021F0902
+ add r4, r4, #1
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021F2D74
+ cmp r0, r7
+ bne _021F08E6
+_021F08FA:
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F0902:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021F08B4
+
+ thumb_func_start MOD16_021F0904
+MOD16_021F0904: ; 0x021F0904
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r6, #0
+ bl MOD16_021F2D54
+ ldr r1, _021F095C ; =0x000003CF
+ mov ip, r0
+ ldrb r2, [r6, r1]
+ mov r1, #0xc0
+ mov r0, #0
+ mul r1, r2
+ add r3, r6, r1
+ ldr r7, _021F0960 ; =0x00002D4C
+ add r1, r3, #0
+ add r2, r0, #0
+_021F092A:
+ ldrh r4, [r1, r7]
+ cmp r4, #0
+ beq _021F0942
+ ldr r4, _021F0960 ; =0x00002D4C
+ add r5, r3, r2
+ ldrh r4, [r5, r4]
+ lsl r4, r4, #4
+ add r5, r6, r4
+ ldr r4, _021F0964 ; =0x000003E1
+ ldrb r4, [r5, r4]
+ cmp r4, #0
+ bne _021F094C
+_021F0942:
+ add r0, r0, #1
+ add r1, r1, #2
+ add r2, r2, #2
+ cmp r0, #4
+ blt _021F092A
+_021F094C:
+ cmp r0, #4
+ bge _021F0958
+ add r0, r6, #0
+ mov r1, ip
+ bl MOD16_021F2D88
+_021F0958:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F095C: .word 0x000003CF
+_021F0960: .word 0x00002D4C
+_021F0964: .word 0x000003E1
+ thumb_func_end MOD16_021F0904
+
+ thumb_func_start MOD16_021F0968
+MOD16_021F0968: ; 0x021F0968
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r6, #0
+ bl MOD16_021F2D54
+ ldr r1, _021F09C0 ; =0x000003CF
+ mov ip, r0
+ ldrb r2, [r6, r1]
+ mov r1, #0xc0
+ mov r0, #0
+ mul r1, r2
+ add r3, r6, r1
+ ldr r7, _021F09C4 ; =0x00002D4C
+ add r1, r3, #0
+ add r2, r0, #0
+_021F098E:
+ ldrh r4, [r1, r7]
+ cmp r4, #0
+ beq _021F09A6
+ ldr r4, _021F09C4 ; =0x00002D4C
+ add r5, r3, r2
+ ldrh r4, [r5, r4]
+ lsl r4, r4, #4
+ add r5, r6, r4
+ ldr r4, _021F09C8 ; =0x000003E1
+ ldrb r4, [r5, r4]
+ cmp r4, #0
+ bne _021F09B0
+_021F09A6:
+ add r0, r0, #1
+ add r1, r1, #2
+ add r2, r2, #2
+ cmp r0, #4
+ blt _021F098E
+_021F09B0:
+ cmp r0, #4
+ bne _021F09BC
+ add r0, r6, #0
+ mov r1, ip
+ bl MOD16_021F2D88
+_021F09BC:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F09C0: .word 0x000003CF
+_021F09C4: .word 0x00002D4C
+_021F09C8: .word 0x000003E1
+ thumb_func_end MOD16_021F0968
+
+ thumb_func_start MOD16_021F09CC
+MOD16_021F09CC: ; 0x021F09CC
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F09CC
+
+ thumb_func_start MOD16_021F09E8
+MOD16_021F09E8: ; 0x021F09E8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ cmp r0, #8
+ bls _021F0A02
+ b _021F0B0C
+_021F0A02:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021F0A0E: ; jump table
+ .short _021F0A36 - _021F0A0E - 2 ; case 0
+ .short _021F0A20 - _021F0A0E - 2 ; case 1
+ .short _021F0A64 - _021F0A0E - 2 ; case 2
+ .short _021F0A4E - _021F0A0E - 2 ; case 3
+ .short _021F0A7C - _021F0A0E - 2 ; case 4
+ .short _021F0AAE - _021F0A0E - 2 ; case 5
+ .short _021F0A90 - _021F0A0E - 2 ; case 6
+ .short _021F0AEC - _021F0A0E - 2 ; case 7
+ .short _021F0ACE - _021F0A0E - 2 ; case 8
+_021F0A20:
+ ldr r1, _021F0B14 ; =0x000003CF
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r3, r4, r5, pc}
+_021F0A36:
+ mov r1, #0x3d
+ lsl r1, r1, #4
+ ldrb r1, [r4, r1]
+ add r0, r4, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r3, r4, r5, pc}
+_021F0A4E:
+ ldr r1, _021F0B14 ; =0x000003CF
+ add r0, r4, #0
+ ldrb r1, [r4, r1]
+ mov r2, #0x1c
+ mov r3, #0
+ bl MOD11_02243420
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r3, r4, r5, pc}
+_021F0A64:
+ mov r1, #0x3d
+ lsl r1, r1, #4
+ ldrb r1, [r4, r1]
+ add r0, r4, #0
+ mov r2, #0x1c
+ mov r3, #0
+ bl MOD11_02243420
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r3, r4, r5, pc}
+_021F0A7C:
+ ldr r0, _021F0B18 ; =0x00000356
+ ldrh r1, [r4, r0]
+ lsl r1, r1, #4
+ add r2, r4, r1
+ add r1, r0, #0
+ add r1, #0x8c
+ ldrb r1, [r2, r1]
+ add r0, r0, #6
+ str r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021F0A90:
+ ldr r1, _021F0B14 ; =0x000003CF
+ add r0, r5, #0
+ ldrb r1, [r4, r1]
+ bl MOD11_022302BC
+ add r1, r0, #0
+ add r0, r4, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r3, r4, r5, pc}
+_021F0AAE:
+ mov r1, #0x3d
+ lsl r1, r1, #4
+ ldrb r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD11_022302BC
+ add r1, r0, #0
+ add r0, r4, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r3, r4, r5, pc}
+_021F0ACE:
+ ldr r1, _021F0B14 ; =0x000003CF
+ add r0, r5, #0
+ ldrb r1, [r4, r1]
+ bl MOD11_022302BC
+ add r1, r0, #0
+ add r0, r4, #0
+ mov r2, #0x1c
+ mov r3, #0
+ bl MOD11_02243420
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r3, r4, r5, pc}
+_021F0AEC:
+ mov r1, #0x3d
+ lsl r1, r1, #4
+ ldrb r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD11_022302BC
+ add r1, r0, #0
+ add r0, r4, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r3, r4, r5, pc}
+_021F0B0C:
+ bl ErrorHandling
+ pop {r3, r4, r5, pc}
+ nop
+_021F0B14: .word 0x000003CF
+_021F0B18: .word 0x00000356
+ thumb_func_end MOD16_021F09E8
+
+ thumb_func_start MOD16_021F0B1C
+MOD16_021F0B1C: ; 0x021F0B1C
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r6, #0x18
+ add r4, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ cmp r4, r0
+ beq _021F0B64
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0x1c
+ mov r3, #0
+ bl MOD11_02243420
+ cmp r4, r0
+ bne _021F0B6E
+_021F0B64:
+ mov r0, #0xd7
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ pop {r4, r5, r6, pc}
+_021F0B6E:
+ mov r0, #0xd7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD16_021F0B1C
+
+ thumb_func_start MOD16_021F0B78
+MOD16_021F0B78: ; 0x021F0B78
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ ldr r0, _021F0B98 ; =0x00000356
+ ldrh r1, [r4, r0]
+ lsl r1, r1, #4
+ add r2, r4, r1
+ add r1, r0, #0
+ add r1, #0x8b
+ ldrb r1, [r2, r1]
+ add r0, r0, #6
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021F0B98: .word 0x00000356
+ thumb_func_end MOD16_021F0B78
+
+ thumb_func_start MOD16_021F0B9C
+MOD16_021F0B9C: ; 0x021F0B9C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r6, r1, #0
+ str r0, [sp, #0x18]
+ add r0, r6, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r6, #0
+ bl MOD16_021F2D54
+ ldr r2, _021F0CB8 ; =0x00000356
+ str r0, [sp, #0x1c]
+ ldrh r3, [r6, r2]
+ add r2, #0x88
+ ldr r1, _021F0CBC ; =0x021FF7F4
+ lsl r7, r3, #4
+ add r3, r6, r7
+ ldrh r3, [r3, r2]
+ ldr r2, _021F0CC0 ; =0x0000FFFF
+ mov r0, #0
+_021F0BC6:
+ ldrh r4, [r1]
+ cmp r3, r4
+ beq _021F0BD6
+ add r1, r1, #2
+ ldrh r4, [r1]
+ add r0, r0, #1
+ cmp r4, r2
+ bne _021F0BC6
+_021F0BD6:
+ ldr r2, _021F0CC4 ; =0x021FF7DC
+ ldr r4, _021F0CC0 ; =0x0000FFFF
+ mov r1, #0
+_021F0BDC:
+ ldrh r5, [r2]
+ cmp r3, r5
+ beq _021F0BEC
+ add r2, r2, #2
+ ldrh r5, [r2]
+ add r1, r1, #1
+ cmp r5, r4
+ bne _021F0BDC
+_021F0BEC:
+ lsl r2, r1, #1
+ ldr r1, _021F0CC4 ; =0x021FF7DC
+ ldrh r1, [r1, r2]
+ ldr r2, _021F0CC0 ; =0x0000FFFF
+ cmp r1, r2
+ bne _021F0C0C
+ ldr r1, _021F0CC8 ; =0x000003E1
+ add r3, r6, r7
+ ldrb r1, [r3, r1]
+ cmp r1, #1
+ bls _021F0CAA
+ lsl r1, r0, #1
+ ldr r0, _021F0CBC ; =0x021FF7F4
+ ldrh r0, [r0, r1]
+ cmp r0, r2
+ bne _021F0CAA
+_021F0C0C:
+ ldr r7, _021F0CCC ; =0x000003CF
+ mov r4, #0
+ add r5, sp, #0x20
+_021F0C12:
+ ldrb r1, [r6, r7]
+ add r2, r4, #0
+ add r0, r6, #0
+ add r2, #0xa
+ mov r3, #0
+ bl MOD11_02243420
+ strb r0, [r5]
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r4, #6
+ blt _021F0C12
+ ldr r0, _021F0CCC ; =0x000003CF
+ ldrb r4, [r6, r0]
+ mov r0, #0xc0
+ add r5, r4, #0
+ mul r5, r0
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD11_02246D1C
+ add r1, sp, #0x28
+ str r1, [sp]
+ ldr r3, _021F0CD0 ; =0x00002DB8
+ add r1, r6, r5
+ ldrh r1, [r1, r3]
+ add r2, r4, #0
+ str r1, [sp, #4]
+ add r1, sp, #0x20
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #0xc0
+ mul r0, r4
+ add r1, r6, r0
+ add r0, r3, #0
+ add r0, #0x14
+ ldr r0, [r1, r0]
+ sub r3, #0x6c
+ lsl r0, r0, #0xa
+ lsr r0, r0, #0x1d
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x1c]
+ add r3, r6, r3
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r1, r6, #0
+ add r3, r3, r5
+ bl MOD16_021F2DE0
+ ldr r0, _021F0CD4 ; =0x00000355
+ add r1, sp, #0x28
+ ldrb r0, [r6, r0]
+ mov r3, #0
+ lsl r0, r0, #2
+ ldr r2, [r1, r0]
+_021F0C80:
+ ldr r0, [r1]
+ cmp r0, r2
+ bgt _021F0C8E
+ add r3, r3, #1
+ add r1, r1, #4
+ cmp r3, #4
+ blt _021F0C80
+_021F0C8E:
+ cmp r3, #4
+ bne _021F0C9E
+ mov r0, #0xd7
+ mov r1, #2
+ lsl r0, r0, #2
+ add sp, #0x38
+ str r1, [r6, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F0C9E:
+ mov r0, #0xd7
+ mov r1, #1
+ lsl r0, r0, #2
+ add sp, #0x38
+ str r1, [r6, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F0CAA:
+ mov r0, #0xd7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r6, r0]
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F0CB8: .word 0x00000356
+_021F0CBC: .word 0x021FF7F4
+_021F0CC0: .word 0x0000FFFF
+_021F0CC4: .word 0x021FF7DC
+_021F0CC8: .word 0x000003E1
+_021F0CCC: .word 0x000003CF
+_021F0CD0: .word 0x00002DB8
+_021F0CD4: .word 0x00000355
+ thumb_func_end MOD16_021F0B9C
+
+ thumb_func_start MOD16_021F0CD8
+MOD16_021F0CD8: ; 0x021F0CD8
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ lsl r0, r0, #1
+ add r1, r4, r0
+ ldr r0, _021F0D08 ; =0x0000307C
+ ldrh r1, [r1, r0]
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+ nop
+_021F0D08: .word 0x0000307C
+ thumb_func_end MOD16_021F0CD8
+
+ thumb_func_start MOD16_021F0D0C
+MOD16_021F0D0C: ; 0x021F0D0C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r4, r0
+ bne _021F0D38
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F0D38:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F0D0C
+
+ thumb_func_start MOD16_021F0D3C
+MOD16_021F0D3C: ; 0x021F0D3C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r4, r0
+ beq _021F0D68
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F0D68:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F0D3C
+
+ thumb_func_start MOD16_021F0D6C
+MOD16_021F0D6C: ; 0x021F0D6C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r7, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ ldr r3, _021F0DAC ; =0x000003CF
+ add r0, r6, #0
+ ldrb r2, [r5, r3]
+ add r3, r3, #1
+ ldrb r3, [r5, r3]
+ add r1, r5, #0
+ bl MOD11_02244248
+ cmp r4, r0
+ bne _021F0DAA
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F0DAA:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F0DAC: .word 0x000003CF
+ thumb_func_end MOD16_021F0D6C
+
+ thumb_func_start MOD16_021F0DB0
+MOD16_021F0DB0: ; 0x021F0DB0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r7, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ ldr r3, _021F0DF0 ; =0x000003CF
+ add r0, r6, #0
+ ldrb r2, [r5, r3]
+ add r3, r3, #1
+ ldrb r3, [r5, r3]
+ add r1, r5, #0
+ bl MOD11_02244248
+ cmp r4, r0
+ beq _021F0DEE
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F0DEE:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F0DF0: .word 0x000003CF
+ thumb_func_end MOD16_021F0DB0
+
+ thumb_func_start MOD16_021F0DF4
+MOD16_021F0DF4: ; 0x021F0DF4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r2, r0, #0
+ mov r0, #0xd7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ lsl r1, r2, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ str r0, [sp]
+ ldr r1, [sp]
+ add r0, r7, #0
+ bl MOD11_0222FF88
+ str r0, [sp, #0xc]
+ ldr r1, [r7, #0x2c]
+ mov r0, #2
+ tst r0, r1
+ beq _021F0E4E
+ ldr r0, [sp]
+ add r1, r5, r0
+ ldr r0, _021F0EC8 ; =0x0000219C
+ ldrb r0, [r1, r0]
+ ldr r1, [sp]
+ str r0, [sp, #8]
+ add r0, r7, #0
+ bl MOD11_022302BC
+ add r1, r5, r0
+ ldr r0, _021F0EC8 ; =0x0000219C
+ ldrb r0, [r1, r0]
+ str r0, [sp, #4]
+ b _021F0E5A
+_021F0E4E:
+ ldr r0, [sp]
+ add r1, r5, r0
+ ldr r0, _021F0EC8 ; =0x0000219C
+ ldrb r0, [r1, r0]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+_021F0E5A:
+ ldr r1, [sp]
+ add r0, r7, #0
+ mov r4, #0
+ bl MOD11_0222FFC8
+ cmp r0, #0
+ ble _021F0EC4
+_021F0E68:
+ ldr r0, [sp, #0xc]
+ add r1, r4, #0
+ bl FUN_0206B9B0
+ ldr r1, [sp, #8]
+ add r6, r0, #0
+ cmp r4, r1
+ beq _021F0EB6
+ ldr r1, [sp, #4]
+ cmp r4, r1
+ beq _021F0EB6
+ mov r1, #0xa2
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F0EB6
+ add r0, r6, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F0EB6
+ add r0, r6, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, _021F0ECC ; =0x000001EE
+ cmp r0, r1
+ beq _021F0EB6
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r0, #1
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_021F0EB6:
+ ldr r1, [sp]
+ add r0, r7, #0
+ add r4, r4, #1
+ bl MOD11_0222FFC8
+ cmp r4, r0
+ blt _021F0E68
+_021F0EC4:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F0EC8: .word 0x0000219C
+_021F0ECC: .word 0x000001EE
+ thumb_func_end MOD16_021F0DF4
+
+ thumb_func_start MOD16_021F0ED0
+MOD16_021F0ED0: ; 0x021F0ED0
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ ldr r0, _021F0EE8 ; =0x00000356
+ ldrh r1, [r4, r0]
+ add r0, r0, #6
+ str r1, [r4, r0]
+ pop {r4, pc}
+ nop
+_021F0EE8: .word 0x00000356
+ thumb_func_end MOD16_021F0ED0
+
+ thumb_func_start MOD16_021F0EEC
+MOD16_021F0EEC: ; 0x021F0EEC
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ ldr r0, _021F0F0C ; =0x00000356
+ ldrh r1, [r4, r0]
+ lsl r1, r1, #4
+ add r2, r4, r1
+ add r1, r0, #0
+ add r1, #0x88
+ ldrh r1, [r2, r1]
+ add r0, r0, #6
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021F0F0C: .word 0x00000356
+ thumb_func_end MOD16_021F0EEC
+
+ thumb_func_start MOD16_021F0F10
+MOD16_021F0F10: ; 0x021F0F10
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r7, r0, #0
+ lsl r1, r7, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r1, r0, #0
+ mov r3, #0xb7
+ mov r2, #2
+ mov r0, #0xc0
+ add r6, r1, #0
+ mul r6, r0
+ add r0, r5, r6
+ lsl r3, r3, #6
+ ldr r4, [r0, r3]
+ lsl r2, r2, #0x14
+ tst r2, r4
+ beq _021F0F50
+ mov r0, #0xd7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F0F50:
+ ldr r2, _021F0FE4 ; =0x000003CF
+ ldrb r4, [r5, r2]
+ cmp r4, r1
+ beq _021F0FD6
+ cmp r7, #3
+ beq _021F0FD6
+ add r4, r5, r1
+ add r1, r2, #0
+ sub r1, #0x3f
+ ldrb r1, [r4, r1]
+ cmp r1, #0
+ beq _021F0F6E
+ sub r2, #0x73
+ str r1, [r5, r2]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F0F6E:
+ add r1, r3, #0
+ sub r1, #0x59
+ ldrb r1, [r0, r1]
+ cmp r1, #0x17
+ beq _021F0F80
+ cmp r1, #0x2a
+ beq _021F0F80
+ cmp r1, #0x47
+ bne _021F0F88
+_021F0F80:
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F0F88:
+ sub r3, #0x80
+ add r7, r5, r3
+ ldrh r0, [r7, r6]
+ mov r1, #0x18
+ bl FUN_02068678
+ add r4, r0, #0
+ ldrh r0, [r7, r6]
+ mov r1, #0x19
+ bl FUN_02068678
+ add r6, r0, #0
+ cmp r4, #0
+ beq _021F0FC2
+ cmp r6, #0
+ beq _021F0FC2
+ bl FUN_0201B9EC
+ mov r1, #1
+ tst r0, r1
+ beq _021F0FBA
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r4, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F0FBA:
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r6, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F0FC2:
+ cmp r4, #0
+ beq _021F0FCE
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r4, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F0FCE:
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r6, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F0FD6:
+ ldr r0, _021F0FE8 ; =0x00002D67
+ add r1, r5, r6
+ ldrb r1, [r1, r0]
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F0FE4: .word 0x000003CF
+_021F0FE8: .word 0x00002D67
+ thumb_func_end MOD16_021F0F10
+
+ thumb_func_start MOD16_021F0FEC
+MOD16_021F0FEC: ; 0x021F0FEC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ mov r2, #2
+ mov ip, r1
+ add r6, r5, r1
+ mov r1, #0xb7
+ lsl r1, r1, #6
+ ldr r3, [r6, r1]
+ lsl r2, r2, #0x14
+ tst r2, r3
+ beq _021F102C
+ mov r4, #0
+ b _021F1098
+_021F102C:
+ cmp r4, #0
+ beq _021F1034
+ cmp r4, #2
+ bne _021F1094
+_021F1034:
+ mov r1, #0x39
+ add r2, r5, r0
+ lsl r1, r1, #4
+ ldrb r4, [r2, r1]
+ cmp r4, #0
+ beq _021F1046
+ sub r1, #0x34
+ str r4, [r5, r1]
+ b _021F1098
+_021F1046:
+ mov r1, ip
+ add r2, r5, r1
+ ldr r1, _021F10C0 ; =0x00002D67
+ ldrb r4, [r2, r1]
+ cmp r4, #0x17
+ beq _021F1098
+ cmp r4, #0x2a
+ beq _021F1098
+ cmp r4, #0x47
+ beq _021F1098
+ sub r1, #0x27
+ add r6, r5, r1
+ mov r1, #0xc0
+ mul r1, r0
+ ldrh r0, [r6, r1]
+ str r1, [sp]
+ mov r1, #0x18
+ bl FUN_02068678
+ add r4, r0, #0
+ ldr r0, [sp]
+ mov r1, #0x19
+ ldrh r0, [r6, r0]
+ bl FUN_02068678
+ cmp r4, #0
+ beq _021F108C
+ cmp r0, #0
+ beq _021F108C
+ cmp r4, r7
+ beq _021F1088
+ cmp r0, r7
+ bne _021F1098
+_021F1088:
+ mov r4, #0
+ b _021F1098
+_021F108C:
+ cmp r4, #0
+ bne _021F1098
+ add r4, r0, #0
+ b _021F1098
+_021F1094:
+ sub r1, #0x59
+ ldrb r4, [r6, r1]
+_021F1098:
+ cmp r4, #0
+ bne _021F10A6
+ mov r0, #0xd7
+ mov r1, #2
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F10A6:
+ cmp r4, r7
+ bne _021F10B4
+ mov r0, #0xd7
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F10B4:
+ mov r0, #0xd7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F10C0: .word 0x00002D67
+ thumb_func_end MOD16_021F0FEC
+
+ thumb_func_start MOD16_021F10C4
+MOD16_021F10C4: ; 0x021F10C4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ mov r0, #0
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [sp, #0x10]
+ str r0, [r5, r1]
+ add r4, r0, #0
+_021F10E0:
+ mov r0, #0
+ str r0, [sp, #0x14]
+ ldr r0, _021F116C ; =0x000003CF
+ ldrb r2, [r5, r0]
+ mov r0, #0xc0
+ mul r0, r2
+ add r0, r5, r0
+ add r1, r4, r0
+ ldr r0, _021F1170 ; =0x00002D4C
+ ldrh r6, [r1, r0]
+ add r0, r7, #0
+ add r1, r5, #0
+ add r3, r6, #0
+ bl MOD16_021F32DC
+ add r3, r0, #0
+ cmp r6, #0
+ beq _021F115C
+ ldr r0, _021F116C ; =0x000003CF
+ add r1, r5, #0
+ ldrb r0, [r5, r0]
+ add r2, r6, #0
+ str r0, [sp]
+ mov r0, #0x3d
+ lsl r0, r0, #4
+ ldrb r0, [r5, r0]
+ str r0, [sp, #4]
+ mov r0, #0x28
+ str r0, [sp, #8]
+ add r0, sp, #0x14
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD11_02246274
+ cmp r0, #0x78
+ bne _021F112C
+ mov r0, #0x50
+ b _021F1142
+_021F112C:
+ cmp r0, #0xf0
+ bne _021F1134
+ mov r0, #0xa0
+ b _021F1142
+_021F1134:
+ cmp r0, #0x1e
+ bne _021F113C
+ mov r0, #0x14
+ b _021F1142
+_021F113C:
+ cmp r0, #0xf
+ bne _021F1142
+ mov r0, #0xa
+_021F1142:
+ ldr r2, [sp, #0x14]
+ ldr r1, _021F1174 ; =0x00140808
+ tst r1, r2
+ beq _021F114C
+ mov r0, #0
+_021F114C:
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ cmp r1, r0
+ bhs _021F115C
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+_021F115C:
+ ldr r0, [sp, #0x10]
+ add r4, r4, #2
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #4
+ blt _021F10E0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F116C: .word 0x000003CF
+_021F1170: .word 0x00002D4C
+_021F1174: .word 0x00140808
+ thumb_func_end MOD16_021F10C4
+
+ thumb_func_start MOD16_021F1178
+MOD16_021F1178: ; 0x021F1178
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r7, r0, #0
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp, #0x14]
+ ldr r3, _021F1208 ; =0x000003CF
+ add r0, r5, #0
+ ldrb r6, [r4, r3]
+ sub r3, #0x79
+ ldrh r3, [r4, r3]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD16_021F32DC
+ mov r2, #0x3d
+ str r6, [sp]
+ lsl r2, r2, #4
+ add r3, r0, #0
+ ldrb r0, [r4, r2]
+ sub r2, #0x7a
+ add r1, r4, #0
+ str r0, [sp, #4]
+ mov r0, #0x28
+ str r0, [sp, #8]
+ add r0, sp, #0x14
+ str r0, [sp, #0xc]
+ ldrh r2, [r4, r2]
+ add r0, r5, #0
+ bl MOD11_02246274
+ cmp r0, #0x78
+ bne _021F11D6
+ mov r0, #0x50
+ b _021F11EC
+_021F11D6:
+ cmp r0, #0xf0
+ bne _021F11DE
+ mov r0, #0xa0
+ b _021F11EC
+_021F11DE:
+ cmp r0, #0x1e
+ bne _021F11E6
+ mov r0, #0x14
+ b _021F11EC
+_021F11E6:
+ cmp r0, #0xf
+ bne _021F11EC
+ mov r0, #0xa
+_021F11EC:
+ ldr r2, [sp, #0x14]
+ ldr r1, _021F120C ; =0x00140808
+ tst r1, r2
+ beq _021F11F6
+ mov r0, #0
+_021F11F6:
+ cmp r0, r7
+ bne _021F1202
+ ldr r1, [sp, #0x10]
+ add r0, r4, #0
+ bl MOD16_021F2D88
+_021F1202:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F1208: .word 0x000003CF
+_021F120C: .word 0x00140808
+ thumb_func_end MOD16_021F1178
+
+ thumb_func_start MOD16_021F1210
+MOD16_021F1210: ; 0x021F1210
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r0, #0
+ str r1, [sp]
+ add r0, r1, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ ldr r0, [sp]
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ ldr r0, [sp]
+ bl MOD16_021F2D54
+ str r0, [sp, #0x10]
+ ldr r0, [sp]
+ bl MOD16_021F2D54
+ str r0, [sp, #0xc]
+ lsl r1, r4, #0x18
+ ldr r0, [sp]
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r6, r0, #0
+ ldr r1, [r7, #0x2c]
+ mov r0, #2
+ tst r0, r1
+ beq _021F126A
+ ldr r0, [sp]
+ add r1, r0, r6
+ ldr r0, _021F12FC ; =0x0000219C
+ ldrb r0, [r1, r0]
+ add r1, r6, #0
+ str r0, [sp, #8]
+ add r0, r7, #0
+ bl MOD11_022302BC
+ ldr r1, [sp]
+ add r1, r1, r0
+ ldr r0, _021F12FC ; =0x0000219C
+ ldrb r0, [r1, r0]
+ str r0, [sp, #4]
+ b _021F1276
+_021F126A:
+ ldr r0, [sp]
+ add r1, r0, r6
+ ldr r0, _021F12FC ; =0x0000219C
+ ldrb r0, [r1, r0]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+_021F1276:
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD11_0222FF88
+ str r0, [sp, #0x14]
+ add r0, r7, #0
+ add r1, r6, #0
+ mov r5, #0
+ bl MOD11_0222FFC8
+ cmp r0, #0
+ ble _021F12F8
+_021F128E:
+ ldr r0, [sp, #0x14]
+ add r1, r5, #0
+ bl FUN_0206B9B0
+ ldr r1, [sp, #8]
+ add r4, r0, #0
+ cmp r5, r1
+ beq _021F12EA
+ ldr r1, [sp, #4]
+ cmp r5, r1
+ beq _021F12EA
+ mov r1, #0xa2
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F12EA
+ add r0, r4, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F12EA
+ add r0, r4, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, _021F1300 ; =0x000001EE
+ cmp r0, r1
+ beq _021F12EA
+ add r0, r4, #0
+ mov r1, #0x9f
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x10]
+ tst r0, r1
+ beq _021F12EA
+ ldr r0, [sp]
+ ldr r1, [sp, #0xc]
+ bl MOD16_021F2D88
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_021F12EA:
+ add r0, r7, #0
+ add r1, r6, #0
+ add r5, r5, #1
+ bl MOD11_0222FFC8
+ cmp r5, r0
+ blt _021F128E
+_021F12F8:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F12FC: .word 0x0000219C
+_021F1300: .word 0x000001EE
+ thumb_func_end MOD16_021F1210
+
+ thumb_func_start MOD16_021F1304
+MOD16_021F1304: ; 0x021F1304
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r0, #0
+ str r1, [sp]
+ add r0, r1, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ ldr r0, [sp]
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ ldr r0, [sp]
+ bl MOD16_021F2D54
+ str r0, [sp, #0x10]
+ ldr r0, [sp]
+ bl MOD16_021F2D54
+ str r0, [sp, #0xc]
+ lsl r1, r4, #0x18
+ ldr r0, [sp]
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r6, r0, #0
+ ldr r1, [r7, #0x2c]
+ mov r0, #2
+ tst r0, r1
+ beq _021F135E
+ ldr r0, [sp]
+ add r1, r0, r6
+ ldr r0, _021F13F0 ; =0x0000219C
+ ldrb r0, [r1, r0]
+ add r1, r6, #0
+ str r0, [sp, #8]
+ add r0, r7, #0
+ bl MOD11_022302BC
+ ldr r1, [sp]
+ add r1, r1, r0
+ ldr r0, _021F13F0 ; =0x0000219C
+ ldrb r0, [r1, r0]
+ str r0, [sp, #4]
+ b _021F136A
+_021F135E:
+ ldr r0, [sp]
+ add r1, r0, r6
+ ldr r0, _021F13F0 ; =0x0000219C
+ ldrb r0, [r1, r0]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+_021F136A:
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD11_0222FF88
+ str r0, [sp, #0x14]
+ add r0, r7, #0
+ add r1, r6, #0
+ mov r5, #0
+ bl MOD11_0222FFC8
+ cmp r0, #0
+ ble _021F13EC
+_021F1382:
+ ldr r0, [sp, #0x14]
+ add r1, r5, #0
+ bl FUN_0206B9B0
+ ldr r1, [sp, #8]
+ add r4, r0, #0
+ cmp r5, r1
+ beq _021F13DE
+ ldr r1, [sp, #4]
+ cmp r5, r1
+ beq _021F13DE
+ mov r1, #0xa2
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F13DE
+ add r0, r4, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F13DE
+ add r0, r4, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, _021F13F4 ; =0x000001EE
+ cmp r0, r1
+ beq _021F13DE
+ add r0, r4, #0
+ mov r1, #0x9f
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x10]
+ tst r0, r1
+ bne _021F13DE
+ ldr r0, [sp]
+ ldr r1, [sp, #0xc]
+ bl MOD16_021F2D88
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_021F13DE:
+ add r0, r7, #0
+ add r1, r6, #0
+ add r5, r5, #1
+ bl MOD11_0222FFC8
+ cmp r5, r0
+ blt _021F1382
+_021F13EC:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F13F0: .word 0x0000219C
+_021F13F4: .word 0x000001EE
+ thumb_func_end MOD16_021F1304
+
+ thumb_func_start MOD16_021F13F8
+MOD16_021F13F8: ; 0x021F13F8
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ mov r0, #0xd7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r1, #6
+ lsl r1, r1, #6
+ ldr r2, [r4, r1]
+ mov r1, #3
+ tst r1, r2
+ beq _021F141C
+ mov r1, #2
+ str r1, [r4, r0]
+_021F141C:
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ mov r0, #0xc
+ tst r0, r1
+ beq _021F1430
+ mov r0, #0xd7
+ mov r1, #3
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_021F1430:
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ mov r0, #0x30
+ tst r0, r1
+ beq _021F1444
+ mov r0, #0xd7
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_021F1444:
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ mov r0, #0xc0
+ tst r0, r1
+ beq _021F1458
+ mov r0, #0xd7
+ mov r1, #4
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_021F1458:
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ mov r0, #2
+ lsl r0, r0, #0xe
+ tst r0, r1
+ beq _021F146E
+ mov r0, #0xd7
+ mov r1, #5
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_021F146E:
+ pop {r4, pc}
+ thumb_func_end MOD16_021F13F8
+
+ thumb_func_start MOD16_021F1470
+MOD16_021F1470: ; 0x021F1470
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ ldr r0, _021F14A4 ; =0x00000356
+ ldrh r2, [r5, r0]
+ add r0, #0x88
+ lsl r2, r2, #4
+ add r2, r5, r2
+ ldrh r0, [r2, r0]
+ cmp r4, r0
+ bne _021F14A2
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F14A2:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021F14A4: .word 0x00000356
+ thumb_func_end MOD16_021F1470
+
+ thumb_func_start MOD16_021F14A8
+MOD16_021F14A8: ; 0x021F14A8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ ldr r0, _021F14DC ; =0x00000356
+ ldrh r2, [r5, r0]
+ add r0, #0x88
+ lsl r2, r2, #4
+ add r2, r5, r2
+ ldrh r0, [r2, r0]
+ cmp r4, r0
+ beq _021F14DA
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F14DA:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021F14DC: .word 0x00000356
+ thumb_func_end MOD16_021F14A8
+
+ thumb_func_start MOD16_021F14E0
+MOD16_021F14E0: ; 0x021F14E0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r7, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ str r0, [sp]
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ add r0, r5, r1
+ add r1, r0, r6
+ ldr r0, _021F1530 ; =0x00002D58
+ ldrsb r0, [r1, r0]
+ cmp r0, r7
+ bge _021F152E
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F152E:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F1530: .word 0x00002D58
+ thumb_func_end MOD16_021F14E0
+
+ thumb_func_start MOD16_021F1534
+MOD16_021F1534: ; 0x021F1534
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r7, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ str r0, [sp]
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ add r0, r5, r1
+ add r1, r0, r6
+ ldr r0, _021F1584 ; =0x00002D58
+ ldrsb r0, [r1, r0]
+ cmp r0, r7
+ ble _021F1582
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F1582:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F1584: .word 0x00002D58
+ thumb_func_end MOD16_021F1534
+
+ thumb_func_start MOD16_021F1588
+MOD16_021F1588: ; 0x021F1588
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r7, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ str r0, [sp]
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ add r0, r5, r1
+ add r1, r0, r6
+ ldr r0, _021F15D8 ; =0x00002D58
+ ldrsb r0, [r1, r0]
+ cmp r7, r0
+ bne _021F15D6
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F15D6:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F15D8: .word 0x00002D58
+ thumb_func_end MOD16_021F1588
+
+ thumb_func_start MOD16_021F15DC
+MOD16_021F15DC: ; 0x021F15DC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r7, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ str r0, [sp]
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ add r0, r5, r1
+ add r1, r0, r6
+ ldr r0, _021F162C ; =0x00002D58
+ ldrsb r0, [r1, r0]
+ cmp r7, r0
+ beq _021F162A
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F162A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F162C: .word 0x00002D58
+ thumb_func_end MOD16_021F15DC
+
+ thumb_func_start MOD16_021F1630
+MOD16_021F1630: ; 0x021F1630
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r6, r1, #0
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r6, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD16_021F2D54
+ str r0, [sp, #0x1c]
+ cmp r4, #1
+ bne _021F1662
+ ldr r0, _021F1738 ; =0x00000355
+ ldrb r1, [r6, r0]
+ add r0, #0x17
+ add r1, r6, r1
+ ldrb r0, [r1, r0]
+ str r0, [sp, #0x18]
+ b _021F1666
+_021F1662:
+ mov r0, #0x64
+ str r0, [sp, #0x18]
+_021F1666:
+ ldr r2, _021F173C ; =0x00000356
+ ldr r1, _021F1740 ; =0x021FF7F4
+ ldrh r3, [r6, r2]
+ add r2, #0x88
+ mov r0, #0
+ lsl r7, r3, #4
+ add r3, r6, r7
+ ldrh r3, [r3, r2]
+ ldr r2, _021F1744 ; =0x0000FFFF
+_021F1678:
+ ldrh r4, [r1]
+ cmp r3, r4
+ beq _021F1688
+ add r1, r1, #2
+ ldrh r4, [r1]
+ add r0, r0, #1
+ cmp r4, r2
+ bne _021F1678
+_021F1688:
+ ldr r2, _021F1748 ; =0x021FF7DC
+ ldr r4, _021F1744 ; =0x0000FFFF
+ mov r1, #0
+_021F168E:
+ ldrh r5, [r2]
+ cmp r3, r5
+ beq _021F169E
+ add r2, r2, #2
+ ldrh r5, [r2]
+ add r1, r1, #1
+ cmp r5, r4
+ bne _021F168E
+_021F169E:
+ lsl r2, r1, #1
+ ldr r1, _021F1748 ; =0x021FF7DC
+ ldrh r1, [r1, r2]
+ ldr r2, _021F1744 ; =0x0000FFFF
+ cmp r1, r2
+ bne _021F16BE
+ ldr r1, _021F174C ; =0x000003E1
+ add r3, r6, r7
+ ldrb r1, [r3, r1]
+ cmp r1, #1
+ bls _021F1734
+ lsl r1, r0, #1
+ ldr r0, _021F1740 ; =0x021FF7F4
+ ldrh r0, [r0, r1]
+ cmp r0, r2
+ bne _021F1734
+_021F16BE:
+ ldr r7, _021F1750 ; =0x000003CF
+ mov r4, #0
+ add r5, sp, #0x20
+_021F16C4:
+ ldrb r1, [r6, r7]
+ add r2, r4, #0
+ add r0, r6, #0
+ add r2, #0xa
+ mov r3, #0
+ bl MOD11_02243420
+ strb r0, [r5]
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r4, #6
+ blt _021F16C4
+ ldr r0, _021F1750 ; =0x000003CF
+ ldrb r4, [r6, r0]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD11_02246D1C
+ add r1, sp, #0x20
+ str r1, [sp]
+ str r4, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0xc0
+ mul r0, r4
+ ldr r3, _021F1754 ; =0x00002DCC
+ add r4, r6, r0
+ ldr r0, [r4, r3]
+ ldr r2, _021F173C ; =0x00000356
+ lsl r0, r0, #0xa
+ lsr r0, r0, #0x1d
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x18]
+ sub r3, #0x14
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x10]
+ ldrh r2, [r6, r2]
+ ldrh r3, [r4, r3]
+ ldr r0, [sp, #0x14]
+ add r1, r6, #0
+ bl MOD16_021F2EE8
+ mov r1, #0x3d
+ lsl r1, r1, #4
+ ldrb r2, [r6, r1]
+ mov r1, #0xc0
+ mul r1, r2
+ add r2, r6, r1
+ ldr r1, _021F1758 ; =0x00002D8C
+ ldr r1, [r2, r1]
+ cmp r1, r0
+ bhi _021F1734
+ ldr r1, [sp, #0x1c]
+ add r0, r6, #0
+ bl MOD16_021F2D88
+_021F1734:
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F1738: .word 0x00000355
+_021F173C: .word 0x00000356
+_021F1740: .word 0x021FF7F4
+_021F1744: .word 0x0000FFFF
+_021F1748: .word 0x021FF7DC
+_021F174C: .word 0x000003E1
+_021F1750: .word 0x000003CF
+_021F1754: .word 0x00002DCC
+_021F1758: .word 0x00002D8C
+ thumb_func_end MOD16_021F1630
+
+ thumb_func_start MOD16_021F175C
+MOD16_021F175C: ; 0x021F175C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r6, r1, #0
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r6, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD16_021F2D54
+ str r0, [sp, #0x1c]
+ cmp r4, #1
+ bne _021F178E
+ ldr r0, _021F1864 ; =0x00000355
+ ldrb r1, [r6, r0]
+ add r0, #0x17
+ add r1, r6, r1
+ ldrb r0, [r1, r0]
+ str r0, [sp, #0x18]
+ b _021F1792
+_021F178E:
+ mov r0, #0x64
+ str r0, [sp, #0x18]
+_021F1792:
+ ldr r2, _021F1868 ; =0x00000356
+ ldr r1, _021F186C ; =0x021FF7F4
+ ldrh r3, [r6, r2]
+ add r2, #0x88
+ mov r0, #0
+ lsl r7, r3, #4
+ add r3, r6, r7
+ ldrh r3, [r3, r2]
+ ldr r2, _021F1870 ; =0x0000FFFF
+_021F17A4:
+ ldrh r4, [r1]
+ cmp r3, r4
+ beq _021F17B4
+ add r1, r1, #2
+ ldrh r4, [r1]
+ add r0, r0, #1
+ cmp r4, r2
+ bne _021F17A4
+_021F17B4:
+ ldr r2, _021F1874 ; =0x021FF7DC
+ ldr r4, _021F1870 ; =0x0000FFFF
+ mov r1, #0
+_021F17BA:
+ ldrh r5, [r2]
+ cmp r3, r5
+ beq _021F17CA
+ add r2, r2, #2
+ ldrh r5, [r2]
+ add r1, r1, #1
+ cmp r5, r4
+ bne _021F17BA
+_021F17CA:
+ lsl r2, r1, #1
+ ldr r1, _021F1874 ; =0x021FF7DC
+ ldrh r1, [r1, r2]
+ ldr r2, _021F1870 ; =0x0000FFFF
+ cmp r1, r2
+ bne _021F17EA
+ ldr r1, _021F1878 ; =0x000003E1
+ add r3, r6, r7
+ ldrb r1, [r3, r1]
+ cmp r1, #1
+ bls _021F1860
+ lsl r1, r0, #1
+ ldr r0, _021F186C ; =0x021FF7F4
+ ldrh r0, [r0, r1]
+ cmp r0, r2
+ bne _021F1860
+_021F17EA:
+ ldr r7, _021F187C ; =0x000003CF
+ mov r4, #0
+ add r5, sp, #0x20
+_021F17F0:
+ ldrb r1, [r6, r7]
+ add r2, r4, #0
+ add r0, r6, #0
+ add r2, #0xa
+ mov r3, #0
+ bl MOD11_02243420
+ strb r0, [r5]
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r4, #6
+ blt _021F17F0
+ ldr r0, _021F187C ; =0x000003CF
+ ldrb r4, [r6, r0]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD11_02246D1C
+ add r1, sp, #0x20
+ str r1, [sp]
+ str r4, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0xc0
+ mul r0, r4
+ ldr r3, _021F1880 ; =0x00002DCC
+ add r4, r6, r0
+ ldr r0, [r4, r3]
+ ldr r2, _021F1868 ; =0x00000356
+ lsl r0, r0, #0xa
+ lsr r0, r0, #0x1d
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x18]
+ sub r3, #0x14
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x10]
+ ldrh r2, [r6, r2]
+ ldrh r3, [r4, r3]
+ ldr r0, [sp, #0x14]
+ add r1, r6, #0
+ bl MOD16_021F2EE8
+ mov r1, #0x3d
+ lsl r1, r1, #4
+ ldrb r2, [r6, r1]
+ mov r1, #0xc0
+ mul r1, r2
+ add r2, r6, r1
+ ldr r1, _021F1884 ; =0x00002D8C
+ ldr r1, [r2, r1]
+ cmp r1, r0
+ bls _021F1860
+ ldr r1, [sp, #0x1c]
+ add r0, r6, #0
+ bl MOD16_021F2D88
+_021F1860:
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F1864: .word 0x00000355
+_021F1868: .word 0x00000356
+_021F186C: .word 0x021FF7F4
+_021F1870: .word 0x0000FFFF
+_021F1874: .word 0x021FF7DC
+_021F1878: .word 0x000003E1
+_021F187C: .word 0x000003CF
+_021F1880: .word 0x00002DCC
+_021F1884: .word 0x00002D8C
+ thumb_func_end MOD16_021F175C
+
+ thumb_func_start MOD16_021F1888
+MOD16_021F1888: ; 0x021F1888
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r6, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ cmp r6, #0
+ beq _021F1918
+ cmp r6, #1
+ beq _021F18C4
+ cmp r6, #3
+ beq _021F18EA
+ pop {r3, r4, r5, r6, r7, pc}
+_021F18C4:
+ mov r2, #0xc0
+ mul r2, r0
+ ldr r0, _021F1940 ; =0x00002D4C
+ mov r1, #0
+ add r3, r5, r2
+_021F18CE:
+ ldrh r2, [r3, r0]
+ cmp r4, r2
+ beq _021F18DC
+ add r1, r1, #1
+ add r3, r3, #2
+ cmp r1, #4
+ blt _021F18CE
+_021F18DC:
+ cmp r1, #4
+ bge _021F193C
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+ pop {r3, r4, r5, r6, r7, pc}
+_021F18EA:
+ mov r1, #0xc0
+ mul r1, r0
+ add r0, r5, r1
+ ldr r1, _021F1944 ; =0x00002D8C
+ ldr r1, [r0, r1]
+ cmp r1, #0
+ beq _021F193C
+ ldr r1, _021F1940 ; =0x00002D4C
+ mov r3, #0
+_021F18FC:
+ ldrh r2, [r0, r1]
+ cmp r4, r2
+ beq _021F190A
+ add r3, r3, #1
+ add r0, r0, #2
+ cmp r3, #4
+ blt _021F18FC
+_021F190A:
+ cmp r3, #4
+ bge _021F193C
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+ pop {r3, r4, r5, r6, r7, pc}
+_021F1918:
+ lsl r0, r0, #3
+ add r3, r5, r0
+ mov r0, #0x37
+ mov r1, #0
+ lsl r0, r0, #4
+_021F1922:
+ ldrh r2, [r3, r0]
+ cmp r4, r2
+ beq _021F1930
+ add r1, r1, #1
+ add r3, r3, #2
+ cmp r1, #4
+ blt _021F1922
+_021F1930:
+ cmp r1, #4
+ bge _021F193C
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F193C:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F1940: .word 0x00002D4C
+_021F1944: .word 0x00002D8C
+ thumb_func_end MOD16_021F1888
+
+ thumb_func_start MOD16_021F1948
+MOD16_021F1948: ; 0x021F1948
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r6, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ cmp r6, #0
+ beq _021F19D8
+ cmp r6, #1
+ beq _021F1984
+ cmp r6, #3
+ beq _021F19AA
+ pop {r3, r4, r5, r6, r7, pc}
+_021F1984:
+ mov r2, #0xc0
+ mul r2, r0
+ ldr r0, _021F1A00 ; =0x00002D4C
+ mov r1, #0
+ add r3, r5, r2
+_021F198E:
+ ldrh r2, [r3, r0]
+ cmp r4, r2
+ beq _021F199C
+ add r1, r1, #1
+ add r3, r3, #2
+ cmp r1, #4
+ blt _021F198E
+_021F199C:
+ cmp r1, #4
+ bne _021F19FC
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+ pop {r3, r4, r5, r6, r7, pc}
+_021F19AA:
+ mov r1, #0xc0
+ mul r1, r0
+ add r0, r5, r1
+ ldr r1, _021F1A04 ; =0x00002D8C
+ ldr r1, [r0, r1]
+ cmp r1, #0
+ beq _021F19FC
+ ldr r1, _021F1A00 ; =0x00002D4C
+ mov r3, #0
+_021F19BC:
+ ldrh r2, [r0, r1]
+ cmp r4, r2
+ beq _021F19CA
+ add r3, r3, #1
+ add r0, r0, #2
+ cmp r3, #4
+ blt _021F19BC
+_021F19CA:
+ cmp r3, #4
+ bne _021F19FC
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+ pop {r3, r4, r5, r6, r7, pc}
+_021F19D8:
+ lsl r0, r0, #3
+ add r3, r5, r0
+ mov r0, #0x37
+ mov r1, #0
+ lsl r0, r0, #4
+_021F19E2:
+ ldrh r2, [r3, r0]
+ cmp r4, r2
+ beq _021F19F0
+ add r1, r1, #1
+ add r3, r3, #2
+ cmp r1, #4
+ blt _021F19E2
+_021F19F0:
+ cmp r1, #4
+ bne _021F19FC
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F19FC:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F1A00: .word 0x00002D4C
+_021F1A04: .word 0x00002D8C
+ thumb_func_end MOD16_021F1948
+
+ thumb_func_start MOD16_021F1A08
+MOD16_021F1A08: ; 0x021F1A08
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r6, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ cmp r6, #0
+ beq _021F1A70
+ cmp r6, #1
+ bne _021F1AA0
+ mov r2, #0xc0
+ mul r2, r0
+ add r0, r5, r2
+ ldr r2, _021F1AA4 ; =0x000003DE
+ ldr r3, _021F1AA8 ; =0x00002D4C
+ mov r1, #0
+_021F1A4A:
+ ldrh r6, [r0, r3]
+ cmp r6, #0
+ beq _021F1A5A
+ lsl r6, r6, #4
+ add r6, r5, r6
+ ldrh r6, [r6, r2]
+ cmp r4, r6
+ beq _021F1A62
+_021F1A5A:
+ add r1, r1, #1
+ add r0, r0, #2
+ cmp r1, #4
+ blt _021F1A4A
+_021F1A62:
+ cmp r1, #4
+ bge _021F1AA0
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+ pop {r3, r4, r5, r6, r7, pc}
+_021F1A70:
+ ldr r2, _021F1AA4 ; =0x000003DE
+ lsl r0, r0, #3
+ add r3, r2, #0
+ mov r1, #0
+ add r0, r5, r0
+ sub r3, #0x6e
+_021F1A7C:
+ ldrh r6, [r0, r3]
+ cmp r6, #0
+ beq _021F1A8C
+ lsl r6, r6, #4
+ add r6, r5, r6
+ ldrh r6, [r6, r2]
+ cmp r4, r6
+ beq _021F1A94
+_021F1A8C:
+ add r1, r1, #1
+ add r0, r0, #2
+ cmp r1, #4
+ blt _021F1A7C
+_021F1A94:
+ cmp r1, #4
+ bge _021F1AA0
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F1AA0:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F1AA4: .word 0x000003DE
+_021F1AA8: .word 0x00002D4C
+ thumb_func_end MOD16_021F1A08
+
+ thumb_func_start MOD16_021F1AAC
+MOD16_021F1AAC: ; 0x021F1AAC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r6, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ cmp r6, #0
+ beq _021F1B14
+ cmp r6, #1
+ bne _021F1B44
+ mov r2, #0xc0
+ mul r2, r0
+ add r0, r5, r2
+ ldr r2, _021F1B48 ; =0x000003DE
+ ldr r3, _021F1B4C ; =0x00002D4C
+ mov r1, #0
+_021F1AEE:
+ ldrh r6, [r0, r3]
+ cmp r6, #0
+ beq _021F1AFE
+ lsl r6, r6, #4
+ add r6, r5, r6
+ ldrh r6, [r6, r2]
+ cmp r4, r6
+ beq _021F1B06
+_021F1AFE:
+ add r1, r1, #1
+ add r0, r0, #2
+ cmp r1, #4
+ blt _021F1AEE
+_021F1B06:
+ cmp r1, #4
+ bne _021F1B44
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+ pop {r3, r4, r5, r6, r7, pc}
+_021F1B14:
+ ldr r2, _021F1B48 ; =0x000003DE
+ lsl r0, r0, #3
+ add r3, r2, #0
+ mov r1, #0
+ add r0, r5, r0
+ sub r3, #0x6e
+_021F1B20:
+ ldrh r6, [r0, r3]
+ cmp r6, #0
+ beq _021F1B30
+ lsl r6, r6, #4
+ add r6, r5, r6
+ ldrh r6, [r6, r2]
+ cmp r4, r6
+ beq _021F1B38
+_021F1B30:
+ add r1, r1, #1
+ add r0, r0, #2
+ cmp r1, #4
+ blt _021F1B20
+_021F1B38:
+ cmp r1, #4
+ bne _021F1B44
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F1B44:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F1B48: .word 0x000003DE
+_021F1B4C: .word 0x00002D4C
+ thumb_func_end MOD16_021F1AAC
+
+ thumb_func_start MOD16_021F1B50
+MOD16_021F1B50: ; 0x021F1B50
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r6, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ cmp r4, #0
+ beq _021F1B88
+ cmp r4, #1
+ beq _021F1BA2
+ pop {r3, r4, r5, r6, r7, pc}
+_021F1B88:
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F1BBC ; =0x00002DC8
+ add r1, r5, r1
+ ldr r0, [r1, r0]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1d
+ beq _021F1BBA
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+ pop {r3, r4, r5, r6, r7, pc}
+_021F1BA2:
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F1BBC ; =0x00002DC8
+ add r1, r5, r1
+ ldr r0, [r1, r0]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1d
+ beq _021F1BBA
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F1BBA:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F1BBC: .word 0x00002DC8
+ thumb_func_end MOD16_021F1B50
+
+ thumb_func_start MOD16_021F1BC0
+MOD16_021F1BC0: ; 0x021F1BC0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ cmp r5, #0
+ beq _021F1BE6
+ cmp r5, #1
+ beq _021F1C04
+ pop {r3, r4, r5, pc}
+_021F1BE6:
+ ldr r2, _021F1C24 ; =0x00000356
+ ldrh r0, [r4, r2]
+ add r2, #0x79
+ ldrb r3, [r4, r2]
+ mov r2, #0xc0
+ mul r2, r3
+ add r3, r4, r2
+ ldr r2, _021F1C28 ; =0x00002DE8
+ ldrh r2, [r3, r2]
+ cmp r0, r2
+ bne _021F1C20
+ add r0, r4, #0
+ bl MOD16_021F2D88
+ pop {r3, r4, r5, pc}
+_021F1C04:
+ ldr r2, _021F1C24 ; =0x00000356
+ ldrh r0, [r4, r2]
+ add r2, #0x79
+ ldrb r3, [r4, r2]
+ mov r2, #0xc0
+ mul r2, r3
+ add r3, r4, r2
+ ldr r2, _021F1C2C ; =0x00002DEC
+ ldrh r2, [r3, r2]
+ cmp r0, r2
+ bne _021F1C20
+ add r0, r4, #0
+ bl MOD16_021F2D88
+_021F1C20:
+ pop {r3, r4, r5, pc}
+ nop
+_021F1C24: .word 0x00000356
+_021F1C28: .word 0x00002DE8
+_021F1C2C: .word 0x00002DEC
+ thumb_func_end MOD16_021F1BC0
+
+ thumb_func_start MOD16_021F1C30
+MOD16_021F1C30: ; 0x021F1C30
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ mov r1, #0xd9
+ lsl r1, r1, #2
+ ldrb r2, [r4, r1]
+ mov r0, #0xb
+ orr r0, r2
+ strb r0, [r4, r1]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F1C30
+
+ thumb_func_start MOD16_021F1C4C
+MOD16_021F1C4C: ; 0x021F1C4C
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021F1C4C
+
+ thumb_func_start MOD16_021F1C50
+MOD16_021F1C50: ; 0x021F1C50
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD16_021F1C50
+
+ thumb_func_start MOD16_021F1C54
+MOD16_021F1C54: ; 0x021F1C54
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F1C84 ; =0x00002DB8
+ add r1, r4, r1
+ ldrh r1, [r1, r0]
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021F1C84: .word 0x00002DB8
+ thumb_func_end MOD16_021F1C54
+
+ thumb_func_start MOD16_021F1C88
+MOD16_021F1C88: ; 0x021F1C88
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ ldr r1, _021F1CE4 ; =0x000003CF
+ add r2, r0, #0
+ ldrb r0, [r4, r1]
+ cmp r0, r2
+ beq _021F1CC8
+ lsl r2, r2, #1
+ add r2, r4, r2
+ sub r1, #0x3b
+ ldrh r1, [r2, r1]
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD11_0224C12C
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r4, pc}
+_021F1CC8:
+ mov r1, #0xc0
+ mul r1, r2
+ add r2, r4, r1
+ ldr r1, _021F1CE8 ; =0x00002DB8
+ add r0, r4, #0
+ ldrh r1, [r2, r1]
+ mov r2, #1
+ bl MOD11_0224C12C
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r4, pc}
+ nop
+_021F1CE4: .word 0x000003CF
+_021F1CE8: .word 0x00002DB8
+ thumb_func_end MOD16_021F1C88
+
+ thumb_func_start MOD16_021F1CEC
+MOD16_021F1CEC: ; 0x021F1CEC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r6, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r6, r0, #0
+ ldr r0, _021F1D4C ; =0x000003CF
+ mov r1, #1
+ add r3, r6, #0
+ ldrb r2, [r5, r0]
+ and r3, r1
+ and r1, r2
+ cmp r3, r1
+ bne _021F1D36
+ mov r0, #0xc0
+ mul r0, r6
+ add r1, r5, r0
+ ldr r0, _021F1D50 ; =0x00002DB8
+ b _021F1D3C
+_021F1D36:
+ lsl r1, r6, #1
+ add r1, r5, r1
+ sub r0, #0x3b
+_021F1D3C:
+ ldrh r0, [r1, r0]
+ cmp r0, r4
+ bne _021F1D4A
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F1D4A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F1D4C: .word 0x000003CF
+_021F1D50: .word 0x00002DB8
+ thumb_func_end MOD16_021F1CEC
+
+ thumb_func_start MOD16_021F1D54
+MOD16_021F1D54: ; 0x021F1D54
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ tst r0, r4
+ beq _021F1D80
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F1D80:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F1D54
+
+ thumb_func_start MOD16_021F1D84
+MOD16_021F1D84: ; 0x021F1D84
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r6, #0x18
+ add r4, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r1, r0, #0
+ add r0, r7, #0
+ bl MOD11_02230270
+ cmp r4, #4
+ beq _021F1DC2
+ mov r1, #1
+ lsl r1, r1, #0xa
+ cmp r4, r1
+ beq _021F1DD8
+ pop {r3, r4, r5, r6, r7, pc}
+_021F1DC2:
+ lsl r0, r0, #3
+ add r1, r5, r0
+ mov r0, #0x72
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ lsl r0, r0, #0x1e
+ lsr r1, r0, #0x1e
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F1DD8:
+ lsl r0, r0, #3
+ add r2, r5, r0
+ mov r0, #0x72
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ sub r1, #0xa4
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1e
+ str r0, [r5, r1]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021F1D84
+
+ thumb_func_start MOD16_021F1DEC
+MOD16_021F1DEC: ; 0x021F1DEC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ str r1, [sp]
+ add r0, r1, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ ldr r0, [sp]
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ ldr r0, [sp]
+ bl MOD16_021F2D54
+ str r0, [sp, #8]
+ lsl r1, r4, #0x18
+ ldr r0, [sp]
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r4, #0
+ bl MOD11_0222FFC8
+ cmp r0, #0
+ ble _021F1E74
+ ldr r0, [sp]
+ add r0, r0, r6
+ str r0, [sp, #4]
+_021F1E2C:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD11_02230014
+ ldr r2, [sp, #4]
+ ldr r1, _021F1E78 ; =0x0000219C
+ str r0, [sp, #0xc]
+ ldrb r1, [r2, r1]
+ cmp r4, r1
+ beq _021F1E66
+ mov r1, #0xa2
+ mov r2, #0
+ bl FUN_020671BC
+ add r7, r0, #0
+ ldr r0, [sp, #0xc]
+ mov r1, #0xa3
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r7, r0
+ beq _021F1E66
+ ldr r0, [sp]
+ ldr r1, [sp, #8]
+ bl MOD16_021F2D88
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021F1E66:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r4, r4, #1
+ bl MOD11_0222FFC8
+ cmp r4, r0
+ blt _021F1E2C
+_021F1E74:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F1E78: .word 0x0000219C
+ thumb_func_end MOD16_021F1DEC
+
+ thumb_func_start MOD16_021F1E7C
+MOD16_021F1E7C: ; 0x021F1E7C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp]
+ str r1, [sp, #4]
+ add r0, r1, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ ldr r0, [sp, #4]
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ ldr r0, [sp, #4]
+ bl MOD16_021F2D54
+ str r0, [sp, #0x10]
+ lsl r1, r4, #0x18
+ ldr r0, [sp, #4]
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ str r0, [sp, #8]
+ ldr r0, [sp]
+ ldr r1, [sp, #8]
+ mov r7, #0
+ bl MOD11_0222FFC8
+ cmp r0, #0
+ ble _021F1F16
+ ldr r1, [sp, #4]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+_021F1EBE:
+ ldr r0, [sp]
+ ldr r1, [sp, #8]
+ add r2, r7, #0
+ bl MOD11_02230014
+ add r5, r0, #0
+ ldr r1, [sp, #0xc]
+ ldr r0, _021F1F1C ; =0x0000219C
+ ldrb r0, [r1, r0]
+ cmp r7, r0
+ beq _021F1F08
+ mov r4, #0
+_021F1ED6:
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x3a
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r4, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, #0x42
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r6, r0
+ beq _021F1EFE
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #0x10]
+ bl MOD16_021F2D88
+ b _021F1F04
+_021F1EFE:
+ add r4, r4, #1
+ cmp r4, #4
+ blt _021F1ED6
+_021F1F04:
+ cmp r4, #4
+ bne _021F1F16
+_021F1F08:
+ ldr r0, [sp]
+ ldr r1, [sp, #8]
+ add r7, r7, #1
+ bl MOD11_0222FFC8
+ cmp r7, r0
+ blt _021F1EBE
+_021F1F16:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021F1F1C: .word 0x0000219C
+ thumb_func_end MOD16_021F1E7C
+
+ thumb_func_start MOD16_021F1F20
+MOD16_021F1F20: ; 0x021F1F20
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD11_02249E58
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F1F20
+
+ thumb_func_start MOD16_021F1F50
+MOD16_021F1F50: ; 0x021F1F50
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ ldr r1, _021F1F78 ; =0x000003CF
+ mov r0, #0xc0
+ ldrb r2, [r4, r1]
+ mul r0, r2
+ add r2, r4, r0
+ add r0, r1, #0
+ sub r0, #0x7a
+ ldrb r0, [r4, r0]
+ sub r1, #0x73
+ add r2, r2, r0
+ ldr r0, _021F1F7C ; =0x00002D6C
+ ldrb r0, [r2, r0]
+ str r0, [r4, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021F1F78: .word 0x000003CF
+_021F1F7C: .word 0x00002D6C
+ thumb_func_end MOD16_021F1F50
+
+ thumb_func_start MOD16_021F1F80
+MOD16_021F1F80: ; 0x021F1F80
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r6, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ lsl r1, r5, #0x18
+ add r7, r0, #0
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r5, r0, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r5, #0
+ bl MOD11_022473F8
+ mov r1, #0xc0
+ mul r1, r5
+ add r2, r4, r1
+ ldr r1, _021F1FD8 ; =0x00002DCC
+ ldr r1, [r2, r1]
+ lsl r1, r1, #0x13
+ lsr r2, r1, #0x1d
+ sub r1, r0, #1
+ cmp r2, r1
+ blo _021F1FD4
+ cmp r0, #1
+ ble _021F1FD4
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F1FD4:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F1FD8: .word 0x00002DCC
+ thumb_func_end MOD16_021F1F80
+
+ thumb_func_start MOD16_021F1FDC
+MOD16_021F1FDC: ; 0x021F1FDC
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ ldr r0, _021F1FFC ; =0x00000356
+ ldrh r1, [r4, r0]
+ lsl r1, r1, #4
+ add r2, r4, r1
+ add r1, r0, #0
+ add r1, #0x8a
+ ldrb r1, [r2, r1]
+ add r0, r0, #6
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021F1FFC: .word 0x00000356
+ thumb_func_end MOD16_021F1FDC
+
+ thumb_func_start MOD16_021F2000
+MOD16_021F2000: ; 0x021F2000
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ mov r1, #0x3d
+ lsl r1, r1, #4
+ ldrb r0, [r4, r1]
+ lsl r0, r0, #1
+ add r2, r4, r0
+ ldr r0, _021F202C ; =0x0000307C
+ ldrh r0, [r2, r0]
+ lsl r0, r0, #4
+ add r2, r4, r0
+ add r0, r1, #0
+ add r0, #0x10
+ ldrb r0, [r2, r0]
+ sub r1, #0x74
+ str r0, [r4, r1]
+ pop {r4, pc}
+ nop
+_021F202C: .word 0x0000307C
+ thumb_func_end MOD16_021F2000
+
+ thumb_func_start MOD16_021F2030
+MOD16_021F2030: ; 0x021F2030
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r1, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ ldr r0, [sp, #8]
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ ldr r0, [sp, #8]
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #4]
+ bl MOD11_0222FF84
+ mov r1, #0
+ str r0, [sp, #0x14]
+ cmp r0, #0
+ ble _021F206E
+ add r2, sp, #0x24
+_021F2064:
+ ldr r0, [sp, #0x14]
+ stmia r2!, {r1}
+ add r1, r1, #1
+ cmp r1, r0
+ blt _021F2064
+_021F206E:
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ sub r0, r0, #1
+ str r0, [sp, #0x1c]
+ cmp r0, #0
+ ble _021F20C8
+ add r6, sp, #0x24
+ str r6, [sp, #0x20]
+_021F2080:
+ ldr r0, [sp, #0xc]
+ add r7, r0, #1
+ ldr r0, [sp, #0x14]
+ cmp r7, r0
+ bge _021F20BA
+ ldr r0, [sp, #0x20]
+ lsl r1, r7, #2
+ add r5, r0, r1
+_021F2090:
+ ldr r0, [r6]
+ ldr r4, [r5]
+ str r0, [sp, #0x18]
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #0x18]
+ add r3, r4, #0
+ bl MOD11_02244248
+ cmp r0, #0
+ beq _021F20B0
+ ldr r0, [sp, #0x18]
+ str r4, [r6]
+ str r0, [r5]
+_021F20B0:
+ ldr r0, [sp, #0x14]
+ add r7, r7, #1
+ add r5, r5, #4
+ cmp r7, r0
+ blt _021F2090
+_021F20BA:
+ ldr r0, [sp, #0xc]
+ add r6, r6, #4
+ add r1, r0, #1
+ ldr r0, [sp, #0x1c]
+ str r1, [sp, #0xc]
+ cmp r1, r0
+ blt _021F2080
+_021F20C8:
+ ldr r1, [sp, #0x14]
+ mov r0, #0
+ cmp r1, #0
+ ble _021F20F0
+ add r3, sp, #0x24
+_021F20D2:
+ ldr r2, [r3]
+ ldr r1, [sp, #0x10]
+ cmp r1, r2
+ bne _021F20E6
+ mov r2, #0xd7
+ ldr r1, [sp, #8]
+ lsl r2, r2, #2
+ str r0, [r1, r2]
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+_021F20E6:
+ ldr r1, [sp, #0x14]
+ add r0, r0, #1
+ add r3, r3, #4
+ cmp r0, r1
+ blt _021F20D2
+_021F20F0:
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD16_021F2030
+
+ thumb_func_start MOD16_021F20F4
+MOD16_021F20F4: ; 0x021F20F4
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0x15
+ lsl r1, r1, #4
+ ldr r2, [r4, r1]
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F212C ; =0x00002DD4
+ add r1, r4, r1
+ ldr r0, [r1, r0]
+ sub r1, r2, r0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021F212C: .word 0x00002DD4
+ thumb_func_end MOD16_021F20F4
+
+ thumb_func_start MOD16_021F2130
+MOD16_021F2130: ; 0x021F2130
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x54
+ str r0, [sp, #0x18]
+ str r1, [sp, #0x1c]
+ add r0, r1, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ ldr r0, [sp, #0x1c]
+ bl MOD16_021F2D54
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x1c]
+ bl MOD16_021F2D54
+ str r0, [sp, #0x2c]
+ mov r4, #0
+ ldr r1, _021F22B4 ; =0x000003CF
+ ldr r0, [sp, #0x1c]
+ add r5, sp, #0x34
+ ldrb r0, [r0, r1]
+ add r6, r4, #0
+ str r0, [sp, #0x28]
+_021F215E:
+ add r2, r4, #0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x28]
+ add r2, #0xa
+ add r3, r6, #0
+ bl MOD11_02243420
+ strb r0, [r5]
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r4, #6
+ blt _021F215E
+ ldr r0, [sp, #0x28]
+ mov r1, #0xc0
+ add r4, r0, #0
+ mul r4, r1
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x28]
+ bl MOD11_02246D1C
+ add r1, sp, #0x44
+ str r1, [sp]
+ ldr r1, [sp, #0x1c]
+ ldr r3, _021F22B8 ; =0x00002DB8
+ add r2, r1, r4
+ ldrh r1, [r2, r3]
+ ldr r5, _021F22B4 ; =0x000003CF
+ str r1, [sp, #4]
+ add r1, sp, #0x34
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r3, #0
+ add r0, #0x14
+ ldr r0, [r2, r0]
+ ldr r1, [sp, #0x1c]
+ lsl r0, r0, #0xa
+ lsr r0, r0, #0x1d
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x30]
+ add r2, r1, #0
+ str r0, [sp, #0x14]
+ ldrb r2, [r2, r5]
+ sub r3, #0x6c
+ add r5, r1, #0
+ add r3, r5, r3
+ ldr r0, [sp, #0x18]
+ add r3, r3, r4
+ bl MOD16_021F2DE0
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x28]
+ mov r7, #0
+ bl MOD11_0222FFC8
+ cmp r0, #0
+ ble _021F22AE
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x28]
+ add r0, r1, r0
+ str r0, [sp, #0x20]
+_021F21D8:
+ ldr r1, _021F22BC ; =0x0000219C
+ ldr r0, [sp, #0x20]
+ ldrb r0, [r0, r1]
+ cmp r7, r0
+ beq _021F22A0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x28]
+ add r2, r7, #0
+ bl MOD11_02230014
+ mov r1, #0xa2
+ mov r2, #0
+ add r6, r0, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F22A0
+ add r0, r6, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F22A0
+ add r0, r6, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, _021F22C0 ; =0x000001EE
+ cmp r0, r1
+ beq _021F22A0
+ add r5, sp, #0x38
+ mov r4, #0
+ add r5, #2
+_021F221E:
+ add r1, r4, #0
+ add r0, r6, #0
+ add r1, #0x36
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r5]
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, #4
+ blt _021F221E
+ mov r5, #0
+ add r4, sp, #0x34
+_021F2238:
+ add r1, r5, #0
+ add r0, r6, #0
+ add r1, #0x46
+ mov r2, #0
+ bl FUN_020671BC
+ strb r0, [r4]
+ add r5, r5, #1
+ add r4, r4, #1
+ cmp r5, #6
+ blt _021F2238
+ add r0, r6, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_020671BC
+ add r4, r0, #0
+ add r0, r6, #0
+ mov r1, #0xa
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, sp, #0x44
+ str r1, [sp]
+ lsl r1, r4, #0x10
+ lsr r1, r1, #0x10
+ str r1, [sp, #4]
+ add r1, sp, #0x34
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x30]
+ ldr r1, [sp, #0x1c]
+ str r0, [sp, #0x14]
+ ldr r3, _021F22B4 ; =0x000003CF
+ add r2, r1, #0
+ ldrb r2, [r2, r3]
+ add r3, sp, #0x38
+ ldr r0, [sp, #0x18]
+ add r3, #2
+ bl MOD16_021F2DE0
+ ldr r1, [sp, #0x24]
+ cmp r0, r1
+ ble _021F22A0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x2c]
+ bl MOD16_021F2D88
+ add sp, #0x54
+ pop {r4, r5, r6, r7, pc}
+_021F22A0:
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x28]
+ add r7, r7, #1
+ bl MOD11_0222FFC8
+ cmp r7, r0
+ blt _021F21D8
+_021F22AE:
+ add sp, #0x54
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021F22B4: .word 0x000003CF
+_021F22B8: .word 0x00002DB8
+_021F22BC: .word 0x0000219C
+_021F22C0: .word 0x000001EE
+ thumb_func_end MOD16_021F2130
+
+ thumb_func_start MOD16_021F22C4
+MOD16_021F22C4: ; 0x021F22C4
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ ldr r2, _021F22F8 ; =0x000003CF
+ add r6, r0, #0
+ ldrb r2, [r4, r2]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r3, #1
+ bl MOD16_021F3D3C
+ cmp r0, #1
+ bne _021F22F4
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD16_021F2D88
+_021F22F4:
+ pop {r4, r5, r6, pc}
+ nop
+_021F22F8: .word 0x000003CF
+ thumb_func_end MOD16_021F22C4
+
+ thumb_func_start MOD16_021F22FC
+MOD16_021F22FC: ; 0x021F22FC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ add r6, r1, #0
+ str r0, [sp, #0x18]
+ add r0, r6, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r6, #0
+ bl MOD16_021F2D54
+ str r0, [sp, #0x28]
+ add r0, r6, #0
+ bl MOD16_021F2D54
+ str r0, [sp, #0x24]
+ add r0, r6, #0
+ bl MOD16_021F2D54
+ ldr r7, _021F2400 ; =0x000003CF
+ str r0, [sp, #0x20]
+ mov r4, #0
+ add r5, sp, #0x2c
+_021F232A:
+ ldrb r1, [r6, r7]
+ add r2, r4, #0
+ add r0, r6, #0
+ add r2, #0xa
+ mov r3, #0
+ bl MOD11_02243420
+ strb r0, [r5]
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r4, #6
+ blt _021F232A
+ ldr r0, _021F2400 ; =0x000003CF
+ ldrb r4, [r6, r0]
+ mov r0, #0xc0
+ add r5, r4, #0
+ mul r5, r0
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD11_02246D1C
+ add r1, sp, #0x34
+ str r1, [sp]
+ ldr r3, _021F2404 ; =0x00002DB8
+ add r1, r6, r5
+ ldrh r1, [r1, r3]
+ add r2, r4, #0
+ str r1, [sp, #4]
+ add r1, sp, #0x2c
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #0xc0
+ mul r0, r4
+ add r1, r6, r0
+ add r0, r3, #0
+ add r0, #0x14
+ ldr r0, [r1, r0]
+ sub r3, #0x6c
+ lsl r0, r0, #0xa
+ lsr r0, r0, #0x1d
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x24]
+ add r3, r6, r3
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r1, r6, #0
+ add r3, r3, r5
+ bl MOD16_021F2DE0
+ ldr r1, [sp, #0x28]
+ str r0, [sp, #0x1c]
+ lsl r1, r1, #0x18
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r4, r0, #0
+ ldr r0, [sp, #0x24]
+ cmp r0, #1
+ bne _021F23AE
+ ldr r0, _021F2408 ; =0x00000355
+ ldrb r1, [r6, r0]
+ add r0, #0x17
+ add r1, r6, r1
+ ldrb r5, [r1, r0]
+ b _021F23B0
+_021F23AE:
+ mov r5, #0x64
+_021F23B0:
+ mov r0, #0xc0
+ add r7, r4, #0
+ mul r7, r0
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD11_02246D1C
+ add r1, sp, #0x2c
+ str r1, [sp]
+ str r4, [sp, #4]
+ lsl r2, r4, #1
+ add r4, r6, r2
+ ldr r3, _021F240C ; =0x00002DCC
+ add r7, r6, r7
+ str r0, [sp, #8]
+ ldr r0, [r7, r3]
+ ldr r2, _021F2410 ; =0x0000307C
+ lsl r0, r0, #0xa
+ lsr r0, r0, #0x1d
+ str r0, [sp, #0xc]
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x10]
+ sub r3, #0x14
+ ldrh r2, [r4, r2]
+ ldrh r3, [r7, r3]
+ ldr r0, [sp, #0x18]
+ add r1, r6, #0
+ bl MOD16_021F2EE8
+ ldr r1, [sp, #0x1c]
+ cmp r0, r1
+ ble _021F23FA
+ ldr r1, [sp, #0x20]
+ add r0, r6, #0
+ bl MOD16_021F2D88
+_021F23FA:
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021F2400: .word 0x000003CF
+_021F2404: .word 0x00002DB8
+_021F2408: .word 0x00000355
+_021F240C: .word 0x00002DCC
+_021F2410: .word 0x0000307C
+ thumb_func_end MOD16_021F22FC
+
+ thumb_func_start MOD16_021F2414
+MOD16_021F2414: ; 0x021F2414
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r2, #0xd7
+ mov r3, #0xd7
+ mov r1, #0
+ lsl r2, r2, #2
+ str r1, [r4, r2]
+ mov r2, #0xc0
+ mul r2, r0
+ add r0, r4, r2
+ ldr r2, _021F2460 ; =0x00002D58
+ lsl r3, r3, #2
+_021F2446:
+ ldrsb r5, [r0, r2]
+ cmp r5, #6
+ ble _021F2454
+ ldr r6, [r4, r3]
+ sub r5, r5, #6
+ add r5, r6, r5
+ str r5, [r4, r3]
+_021F2454:
+ add r1, r1, #1
+ add r0, r0, #1
+ cmp r1, #8
+ blt _021F2446
+ pop {r4, r5, r6, pc}
+ nop
+_021F2460: .word 0x00002D58
+ thumb_func_end MOD16_021F2414
+
+ thumb_func_start MOD16_021F2464
+MOD16_021F2464: ; 0x021F2464
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r6, #0x18
+ add r4, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ ldr r3, _021F24AC ; =0x000003CF
+ mov r1, #0xc0
+ ldrb r6, [r5, r3]
+ add r2, r0, #0
+ mul r2, r1
+ add r0, r5, r2
+ mul r1, r6
+ add r1, r5, r1
+ ldr r2, _021F24B0 ; =0x00002D58
+ add r0, r0, r4
+ add r1, r1, r4
+ ldrsb r0, [r0, r2]
+ ldrsb r1, [r1, r2]
+ sub r3, #0x73
+ sub r0, r0, r1
+ str r0, [r5, r3]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021F24AC: .word 0x000003CF
+_021F24B0: .word 0x00002D58
+ thumb_func_end MOD16_021F2464
+
+ thumb_func_start MOD16_021F24B4
+MOD16_021F24B4: ; 0x021F24B4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r1, r0, #0
+ str r6, [sp]
+ add r0, r5, #0
+ add r2, sp, #8
+ add r3, sp, #4
+ bl MOD16_021F25B0
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ cmp r1, r0
+ bge _021F2502
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F2502:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F24B4
+
+ thumb_func_start MOD16_021F2508
+MOD16_021F2508: ; 0x021F2508
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r1, r0, #0
+ str r6, [sp]
+ add r0, r5, #0
+ add r2, sp, #8
+ add r3, sp, #4
+ bl MOD16_021F25B0
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ cmp r1, r0
+ ble _021F2556
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F2556:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F2508
+
+ thumb_func_start MOD16_021F255C
+MOD16_021F255C: ; 0x021F255C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r7, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r1, r0, #0
+ str r6, [sp]
+ add r0, r5, #0
+ add r2, sp, #8
+ add r3, sp, #4
+ bl MOD16_021F25B0
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ cmp r1, r0
+ bne _021F25AA
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD16_021F2D88
+_021F25AA:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F255C
+
+ thumb_func_start MOD16_021F25B0
+MOD16_021F25B0: ; 0x021F25B0
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r1, r3, #0
+ ldr r3, [sp, #0x10]
+ cmp r3, #5
+ bhi _021F2688
+ add r3, r3, r3
+ add r3, pc
+ ldrh r3, [r3, #6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_021F25C8: ; jump table
+ .short _021F25D4 - _021F25C8 - 2 ; case 0
+ .short _021F25F2 - _021F25C8 - 2 ; case 1
+ .short _021F2610 - _021F25C8 - 2 ; case 2
+ .short _021F266A - _021F25C8 - 2 ; case 3
+ .short _021F262E - _021F25C8 - 2 ; case 4
+ .short _021F264C - _021F25C8 - 2 ; case 5
+_021F25D4:
+ ldr r3, _021F2690 ; =0x000003CF
+ ldrb r5, [r0, r3]
+ mov r3, #0xc0
+ add r6, r5, #0
+ mul r6, r3
+ ldr r5, _021F2694 ; =0x00002D8C
+ add r6, r0, r6
+ ldr r6, [r6, r5]
+ str r6, [r2]
+ add r2, r4, #0
+ mul r2, r3
+ add r0, r0, r2
+ ldr r0, [r0, r5]
+ str r0, [r1]
+ pop {r4, r5, r6, pc}
+_021F25F2:
+ ldr r3, _021F2690 ; =0x000003CF
+ ldrb r5, [r0, r3]
+ mov r3, #0xc0
+ add r6, r5, #0
+ mul r6, r3
+ ldr r5, _021F2698 ; =0x00002D42
+ add r6, r0, r6
+ ldrh r6, [r6, r5]
+ str r6, [r2]
+ add r2, r4, #0
+ mul r2, r3
+ add r0, r0, r2
+ ldrh r0, [r0, r5]
+ str r0, [r1]
+ pop {r4, r5, r6, pc}
+_021F2610:
+ ldr r3, _021F2690 ; =0x000003CF
+ ldrb r5, [r0, r3]
+ mov r3, #0xc0
+ add r6, r5, #0
+ mul r6, r3
+ ldr r5, _021F269C ; =0x00002D44
+ add r6, r0, r6
+ ldrh r6, [r6, r5]
+ str r6, [r2]
+ add r2, r4, #0
+ mul r2, r3
+ add r0, r0, r2
+ ldrh r0, [r0, r5]
+ str r0, [r1]
+ pop {r4, r5, r6, pc}
+_021F262E:
+ ldr r3, _021F2690 ; =0x000003CF
+ ldrb r5, [r0, r3]
+ mov r3, #0xc0
+ add r6, r5, #0
+ mul r6, r3
+ ldr r5, _021F26A0 ; =0x00002D48
+ add r6, r0, r6
+ ldrh r6, [r6, r5]
+ str r6, [r2]
+ add r2, r4, #0
+ mul r2, r3
+ add r0, r0, r2
+ ldrh r0, [r0, r5]
+ str r0, [r1]
+ pop {r4, r5, r6, pc}
+_021F264C:
+ ldr r3, _021F2690 ; =0x000003CF
+ ldrb r5, [r0, r3]
+ mov r3, #0xc0
+ add r6, r5, #0
+ mul r6, r3
+ ldr r5, _021F26A4 ; =0x00002D4A
+ add r6, r0, r6
+ ldrh r6, [r6, r5]
+ str r6, [r2]
+ add r2, r4, #0
+ mul r2, r3
+ add r0, r0, r2
+ ldrh r0, [r0, r5]
+ str r0, [r1]
+ pop {r4, r5, r6, pc}
+_021F266A:
+ ldr r3, _021F2690 ; =0x000003CF
+ ldrb r5, [r0, r3]
+ mov r3, #0xc0
+ add r6, r5, #0
+ mul r6, r3
+ ldr r5, _021F26A8 ; =0x00002D46
+ add r6, r0, r6
+ ldrh r6, [r6, r5]
+ str r6, [r2]
+ add r2, r4, #0
+ mul r2, r3
+ add r0, r0, r2
+ ldrh r0, [r0, r5]
+ str r0, [r1]
+ pop {r4, r5, r6, pc}
+_021F2688:
+ bl ErrorHandling
+ pop {r4, r5, r6, pc}
+ nop
+_021F2690: .word 0x000003CF
+_021F2694: .word 0x00002D8C
+_021F2698: .word 0x00002D42
+_021F269C: .word 0x00002D44
+_021F26A0: .word 0x00002D48
+_021F26A4: .word 0x00002D4A
+_021F26A8: .word 0x00002D46
+ thumb_func_end MOD16_021F25B0
+
+ thumb_func_start MOD16_021F26AC
+MOD16_021F26AC: ; 0x021F26AC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r6, r1, #0
+ str r0, [sp, #0x18]
+ add r0, r6, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r6, #0
+ bl MOD16_021F2D54
+ ldr r2, _021F27E8 ; =0x00000356
+ str r0, [sp, #0x20]
+ ldrh r3, [r6, r2]
+ add r2, #0x88
+ ldr r1, _021F27EC ; =0x021FF7F4
+ lsl r7, r3, #4
+ add r3, r6, r7
+ ldrh r3, [r3, r2]
+ ldr r2, _021F27F0 ; =0x0000FFFF
+ mov r0, #0
+_021F26D6:
+ ldrh r4, [r1]
+ cmp r3, r4
+ beq _021F26E6
+ add r1, r1, #2
+ ldrh r4, [r1]
+ add r0, r0, #1
+ cmp r4, r2
+ bne _021F26D6
+_021F26E6:
+ ldr r2, _021F27F4 ; =0x021FF7DC
+ ldr r4, _021F27F0 ; =0x0000FFFF
+ mov r1, #0
+_021F26EC:
+ ldrh r5, [r2]
+ cmp r3, r5
+ beq _021F26FC
+ add r2, r2, #2
+ ldrh r5, [r2]
+ add r1, r1, #1
+ cmp r5, r4
+ bne _021F26EC
+_021F26FC:
+ lsl r2, r1, #1
+ ldr r1, _021F27F4 ; =0x021FF7DC
+ ldrh r1, [r1, r2]
+ ldr r2, _021F27F0 ; =0x0000FFFF
+ cmp r1, r2
+ bne _021F271C
+ ldr r1, _021F27F8 ; =0x000003E1
+ add r3, r6, r7
+ ldrb r1, [r3, r1]
+ cmp r1, #1
+ bls _021F27DA
+ lsl r1, r0, #1
+ ldr r0, _021F27EC ; =0x021FF7F4
+ ldrh r0, [r0, r1]
+ cmp r0, r2
+ bne _021F27DA
+_021F271C:
+ ldr r0, _021F27FC ; =0x000003CF
+ ldrb r7, [r6, r0]
+ mov r0, #0
+ str r0, [sp, #0x1c]
+_021F2724:
+ mov r4, #0
+ add r5, sp, #0x28
+_021F2728:
+ add r2, r4, #0
+ add r0, r6, #0
+ add r1, r7, #0
+ add r2, #0xa
+ mov r3, #0
+ bl MOD11_02243420
+ strb r0, [r5]
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r4, #6
+ blt _021F2728
+ mov r0, #0xc0
+ add r4, r7, #0
+ mul r4, r0
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD11_02246D1C
+ add r1, sp, #0x30
+ str r1, [sp]
+ ldr r3, _021F2800 ; =0x00002DB8
+ add r1, r6, r4
+ ldrh r2, [r1, r3]
+ str r2, [sp, #4]
+ add r2, sp, #0x28
+ str r2, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r3, #0
+ add r0, #0x14
+ ldr r0, [r1, r0]
+ sub r3, #0x6c
+ lsl r0, r0, #0xa
+ lsr r0, r0, #0x1d
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x20]
+ add r3, r6, r3
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r1, r6, #0
+ add r2, r7, #0
+ add r3, r3, r4
+ bl MOD16_021F2DE0
+ ldr r1, _021F27FC ; =0x000003CF
+ ldr r0, [sp, #0x18]
+ ldrb r1, [r6, r1]
+ bl MOD11_022302BC
+ add r7, r0, #0
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0
+ bne _021F279E
+ ldr r0, _021F2804 ; =0x00000355
+ ldrb r0, [r6, r0]
+ lsl r1, r0, #2
+ add r0, sp, #0x30
+ ldr r0, [r0, r1]
+ str r0, [sp, #0x24]
+_021F279E:
+ mov r3, #0
+ add r2, sp, #0x30
+_021F27A2:
+ ldr r1, [r2]
+ ldr r0, [sp, #0x24]
+ cmp r1, r0
+ bgt _021F27B2
+ add r3, r3, #1
+ add r2, r2, #4
+ cmp r3, #4
+ blt _021F27A2
+_021F27B2:
+ cmp r3, #4
+ bne _021F27C0
+ mov r0, #0xd7
+ mov r1, #2
+ lsl r0, r0, #2
+ str r1, [r6, r0]
+ b _021F27CC
+_021F27C0:
+ mov r0, #0xd7
+ mov r1, #1
+ lsl r0, r0, #2
+ add sp, #0x40
+ str r1, [r6, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F27CC:
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ cmp r0, #2
+ blt _021F2724
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+_021F27DA:
+ mov r0, #0xd7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r6, r0]
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F27E8: .word 0x00000356
+_021F27EC: .word 0x021FF7F4
+_021F27F0: .word 0x0000FFFF
+_021F27F4: .word 0x021FF7DC
+_021F27F8: .word 0x000003E1
+_021F27FC: .word 0x000003CF
+_021F2800: .word 0x00002DB8
+_021F2804: .word 0x00000355
+ thumb_func_end MOD16_021F26AC
+
+ thumb_func_start MOD16_021F2808
+MOD16_021F2808: ; 0x021F2808
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ cmp r4, #1
+ bne _021F282C
+ bl ErrorHandling
+_021F282C:
+ cmp r4, #0
+ bne _021F2834
+ bl ErrorHandling
+_021F2834:
+ lsl r1, r4, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ bl FUN_0206A92C
+ ldr r1, _021F2854 ; =0x00003108
+ ldrb r1, [r5, r1]
+ tst r0, r1
+ beq _021F2852
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021F2D88
+_021F2852:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021F2854: .word 0x00003108
+ thumb_func_end MOD16_021F2808
+
+ thumb_func_start MOD16_021F2858
+MOD16_021F2858: ; 0x021F2858
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r6, r0, #0
+ cmp r4, #1
+ bne _021F287C
+ bl ErrorHandling
+_021F287C:
+ cmp r4, #0
+ bne _021F2884
+ bl ErrorHandling
+_021F2884:
+ lsl r1, r4, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ bl FUN_0206A92C
+ ldr r1, _021F28A4 ; =0x00003108
+ ldrb r1, [r5, r1]
+ tst r0, r1
+ bne _021F28A2
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021F2D88
+_021F28A2:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021F28A4: .word 0x00003108
+ thumb_func_end MOD16_021F2858
+
+ thumb_func_start MOD16_021F28A8
+MOD16_021F28A8: ; 0x021F28A8
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F28DC ; =0x00002DBE
+ add r1, r4, r1
+ ldrb r0, [r1, r0]
+ lsl r0, r0, #0x1c
+ lsr r1, r0, #0x1c
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021F28DC: .word 0x00002DBE
+ thumb_func_end MOD16_021F28A8
+
+ thumb_func_start MOD16_021F28E0
+MOD16_021F28E0: ; 0x021F28E0
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r2, r0, #0
+ mov r1, #0xc0
+ mul r2, r1
+ ldr r0, _021F2928 ; =0x00002DD4
+ add r2, r4, r2
+ add r1, #0x90
+ ldr r2, [r2, r0]
+ ldr r0, [r4, r1]
+ cmp r2, r0
+ bge _021F291C
+ mov r0, #0xd7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+_021F291C:
+ mov r1, #1
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+ nop
+_021F2928: .word 0x00002DD4
+ thumb_func_end MOD16_021F28E0
+
+ thumb_func_start MOD16_021F292C
+MOD16_021F292C: ; 0x021F292C
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F2960 ; =0x00002DC8
+ add r1, r4, r1
+ ldr r0, [r1, r0]
+ lsl r0, r0, #8
+ lsr r1, r0, #0x1d
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021F2960: .word 0x00002DC8
+ thumb_func_end MOD16_021F292C
+
+ thumb_func_start MOD16_021F2964
+MOD16_021F2964: ; 0x021F2964
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ mov r0, #0xd7
+ ldr r1, [r5, #0x2c]
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021F2964
+
+ thumb_func_start MOD16_021F297C
+MOD16_021F297C: ; 0x021F297C
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ lsl r0, r0, #1
+ add r1, r4, r0
+ ldr r0, _021F29AC ; =0x00003124
+ ldrh r1, [r1, r0]
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+ nop
+_021F29AC: .word 0x00003124
+ thumb_func_end MOD16_021F297C
+
+ thumb_func_start MOD16_021F29B0
+MOD16_021F29B0: ; 0x021F29B0
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ lsl r0, r0, #4
+ add r2, r4, r0
+ add r0, r1, #0
+ add r0, #0x86
+ ldrb r0, [r2, r0]
+ str r0, [r4, r1]
+ pop {r4, pc}
+ thumb_func_end MOD16_021F29B0
+
+ thumb_func_start MOD16_021F29D0
+MOD16_021F29D0: ; 0x021F29D0
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ lsl r0, r0, #4
+ add r2, r4, r0
+ add r0, r1, #0
+ add r0, #0x85
+ ldrb r0, [r2, r0]
+ str r0, [r4, r1]
+ pop {r4, pc}
+ thumb_func_end MOD16_021F29D0
+
+ thumb_func_start MOD16_021F29F0
+MOD16_021F29F0: ; 0x021F29F0
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ lsl r0, r0, #4
+ add r2, r4, r0
+ add r0, r1, #0
+ add r0, #0x82
+ ldrh r0, [r2, r0]
+ str r0, [r4, r1]
+ pop {r4, pc}
+ thumb_func_end MOD16_021F29F0
+
+ thumb_func_start MOD16_021F2A10
+MOD16_021F2A10: ; 0x021F2A10
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ lsl r1, r0, #1
+ add r2, r4, r1
+ ldr r1, _021F2A64 ; =0x0000305C
+ ldrh r1, [r2, r1]
+ cmp r1, #0xb6
+ beq _021F2A4C
+ cmp r1, #0xc5
+ beq _021F2A4C
+ cmp r1, #0xcb
+ beq _021F2A4C
+ mov r0, #0xd7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+_021F2A4C:
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F2A68 ; =0x00002DC8
+ add r1, r4, r1
+ ldr r0, [r1, r0]
+ lsl r0, r0, #0x13
+ lsr r1, r0, #0x1e
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+ nop
+_021F2A64: .word 0x0000305C
+_021F2A68: .word 0x00002DC8
+ thumb_func_end MOD16_021F2A10
+
+ thumb_func_start MOD16_021F2A6C
+MOD16_021F2A6C: ; 0x021F2A6C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r2, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021F2C8C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021F2A6C
+
+ thumb_func_start MOD16_021F2A8C
+MOD16_021F2A8C: ; 0x021F2A8C
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD16_021F2D88
+ pop {r4, pc}
+ thumb_func_end MOD16_021F2A8C
+
+ thumb_func_start MOD16_021F2AA8
+MOD16_021F2AA8: ; 0x021F2AA8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD16_021F2CC4
+ cmp r0, #1
+ beq _021F2ACE
+ mov r1, #0xd9
+ lsl r1, r1, #2
+ ldrb r2, [r4, r1]
+ mov r0, #1
+ orr r0, r2
+ strb r0, [r4, r1]
+_021F2ACE:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD16_021F2AA8
+
+ thumb_func_start MOD16_021F2AD0
+MOD16_021F2AD0: ; 0x021F2AD0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ cmp r4, #0
+ beq _021F2AFA
+ cmp r4, #1
+ beq _021F2B20
+ cmp r4, #2
+ beq _021F2B46
+ pop {r3, r4, r5, pc}
+_021F2AFA:
+ ldr r2, _021F2B6C ; =0x000003CF
+ mov r3, #0xc0
+ ldrb r0, [r5, r2]
+ add r2, r2, #1
+ ldrb r2, [r5, r2]
+ add r4, r0, #0
+ mul r4, r3
+ add r0, r5, r4
+ ldr r4, _021F2B70 ; =0x00002D74
+ mul r3, r2
+ add r2, r5, r3
+ ldrb r0, [r0, r4]
+ ldrb r2, [r2, r4]
+ cmp r0, r2
+ bls _021F2B6A
+ add r0, r5, #0
+ bl MOD16_021F2D88
+ pop {r3, r4, r5, pc}
+_021F2B20:
+ ldr r2, _021F2B6C ; =0x000003CF
+ mov r3, #0xc0
+ ldrb r0, [r5, r2]
+ add r2, r2, #1
+ ldrb r2, [r5, r2]
+ add r4, r0, #0
+ mul r4, r3
+ add r0, r5, r4
+ ldr r4, _021F2B70 ; =0x00002D74
+ mul r3, r2
+ add r2, r5, r3
+ ldrb r0, [r0, r4]
+ ldrb r2, [r2, r4]
+ cmp r0, r2
+ bhs _021F2B6A
+ add r0, r5, #0
+ bl MOD16_021F2D88
+ pop {r3, r4, r5, pc}
+_021F2B46:
+ ldr r2, _021F2B6C ; =0x000003CF
+ mov r3, #0xc0
+ ldrb r0, [r5, r2]
+ add r2, r2, #1
+ ldrb r2, [r5, r2]
+ add r4, r0, #0
+ mul r4, r3
+ add r0, r5, r4
+ ldr r4, _021F2B70 ; =0x00002D74
+ mul r3, r2
+ add r2, r5, r3
+ ldrb r0, [r0, r4]
+ ldrb r2, [r2, r4]
+ cmp r0, r2
+ bne _021F2B6A
+ add r0, r5, #0
+ bl MOD16_021F2D88
+_021F2B6A:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021F2B6C: .word 0x000003CF
+_021F2B70: .word 0x00002D74
+ thumb_func_end MOD16_021F2AD0
+
+ thumb_func_start MOD16_021F2B74
+MOD16_021F2B74: ; 0x021F2B74
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ mov r0, #0x3d
+ lsl r0, r0, #4
+ ldrb r2, [r4, r0]
+ mov r0, #0xc0
+ mul r0, r2
+ add r2, r4, r0
+ ldr r0, _021F2BA8 ; =0x00002DC8
+ ldr r0, [r2, r0]
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x1d
+ beq _021F2BA4
+ add r0, r4, #0
+ bl MOD16_021F2D88
+_021F2BA4:
+ pop {r4, pc}
+ nop
+_021F2BA8: .word 0x00002DC8
+ thumb_func_end MOD16_021F2B74
+
+ thumb_func_start MOD16_021F2BAC
+MOD16_021F2BAC: ; 0x021F2BAC
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ mov r0, #0x3d
+ lsl r0, r0, #4
+ ldrb r2, [r4, r0]
+ mov r0, #0xc0
+ mul r0, r2
+ add r2, r4, r0
+ ldr r0, _021F2BE0 ; =0x00002DC8
+ ldr r0, [r2, r0]
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x1d
+ bne _021F2BDC
+ add r0, r4, #0
+ bl MOD16_021F2D88
+_021F2BDC:
+ pop {r4, pc}
+ nop
+_021F2BE0: .word 0x00002DC8
+ thumb_func_end MOD16_021F2BAC
+
+ thumb_func_start MOD16_021F2BE4
+MOD16_021F2BE4: ; 0x021F2BE4
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ ldr r2, _021F2C14 ; =0x000003CF
+ add r1, r0, #0
+ ldrb r0, [r4, r2]
+ add r2, r2, #1
+ mov r3, #1
+ ldrb r2, [r4, r2]
+ and r0, r3
+ and r2, r3
+ cmp r0, r2
+ bne _021F2C10
+ add r0, r4, #0
+ bl MOD16_021F2D88
+_021F2C10:
+ pop {r4, pc}
+ nop
+_021F2C14: .word 0x000003CF
+ thumb_func_end MOD16_021F2BE4
+
+ thumb_func_start MOD16_021F2C18
+MOD16_021F2C18: ; 0x021F2C18
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD16_021F2D54
+ lsl r1, r4, #0x18
+ add r6, r0, #0
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F2C58 ; =0x00002DC8
+ add r1, r5, r1
+ ldr r0, [r1, r0]
+ lsr r0, r0, #0x1f
+ beq _021F2C54
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD16_021F2D88
+_021F2C54:
+ pop {r4, r5, r6, pc}
+ nop
+_021F2C58: .word 0x00002DC8
+ thumb_func_end MOD16_021F2C18
+
+ thumb_func_start MOD16_021F2C5C
+MOD16_021F2C5C: ; 0x021F2C5C
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD16_021F2D88
+ add r0, r4, #0
+ bl MOD16_021F2D54
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD16_021F2D98
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD11_02246D1C
+ mov r1, #0xd7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD16_021F2C5C
+
+ thumb_func_start MOD16_021F2C8C
+MOD16_021F2C8C: ; 0x021F2C8C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0xf3
+ lsl r1, r1, #2
+ ldrb r5, [r4, r1]
+ add r0, r5, #1
+ strb r0, [r4, r1]
+ ldr r0, _021F2CC0 ; =0x00002138
+ sub r1, #0x20
+ ldr r3, [r4, r0]
+ lsl r0, r5, #2
+ add r0, r4, r0
+ str r3, [r0, r1]
+ add r0, r4, #0
+ add r1, r2, #0
+ bl MOD16_021F2D88
+ mov r0, #0xf3
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ cmp r0, #8
+ bls _021F2CBC
+ bl ErrorHandling
+_021F2CBC:
+ pop {r3, r4, r5, pc}
+ nop
+_021F2CC0: .word 0x00002138
+ thumb_func_end MOD16_021F2C8C
+
+ thumb_func_start MOD16_021F2CC4
+MOD16_021F2CC4: ; 0x021F2CC4
+ mov r0, #0xf3
+ lsl r0, r0, #2
+ ldrb r2, [r1, r0]
+ cmp r2, #0
+ beq _021F2CE4
+ sub r2, r2, #1
+ strb r2, [r1, r0]
+ ldrb r2, [r1, r0]
+ sub r0, #0x20
+ lsl r2, r2, #2
+ add r2, r1, r2
+ ldr r2, [r2, r0]
+ ldr r0, _021F2CE8 ; =0x00002138
+ str r2, [r1, r0]
+ mov r0, #1
+ bx lr
+_021F2CE4:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021F2CE8: .word 0x00002138
+ thumb_func_end MOD16_021F2CC4
+
+ thumb_func_start MOD16_021F2CEC
+MOD16_021F2CEC: ; 0x021F2CEC
+ push {r3, r4, r5, r6, r7, lr}
+ mov r2, #0x3d
+ lsl r2, r2, #4
+ str r1, [sp]
+ ldrb r1, [r1, r2]
+ mov r7, #0x37
+ lsl r7, r7, #4
+ mov lr, r1
+ mov r3, lr
+ lsl r4, r3, #1
+ ldr r3, [sp]
+ ldr r2, [sp]
+ lsl r1, r1, #3
+ add r4, r3, r4
+ ldr r3, _021F2D50 ; =0x0000307C
+ mov r0, #0
+ add r5, r2, r1
+ mov ip, r1
+ ldrh r3, [r4, r3]
+ add r1, r5, #0
+ add r2, r0, #0
+ add r6, r7, #0
+_021F2D18:
+ ldrh r4, [r1, r6]
+ cmp r3, r4
+ beq _021F2D4E
+ add r4, r5, r2
+ ldrh r4, [r4, r7]
+ cmp r4, #0
+ bne _021F2D44
+ mov r1, lr
+ lsl r2, r1, #1
+ ldr r1, [sp]
+ ldr r3, [sp]
+ add r2, r1, r2
+ ldr r1, _021F2D50 ; =0x0000307C
+ lsl r0, r0, #1
+ ldrh r1, [r2, r1]
+ mov r2, ip
+ add r2, r3, r2
+ add r2, r2, r0
+ mov r0, #0x37
+ lsl r0, r0, #4
+ strh r1, [r2, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021F2D44:
+ add r0, r0, #1
+ add r1, r1, #2
+ add r2, r2, #2
+ cmp r0, #4
+ blt _021F2D18
+_021F2D4E:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F2D50: .word 0x0000307C
+ thumb_func_end MOD16_021F2CEC
+
+ thumb_func_start MOD16_021F2D54
+MOD16_021F2D54: ; 0x021F2D54
+ ldr r1, _021F2D70 ; =0x00002134
+ add r2, r1, #4
+ ldr r2, [r0, r2]
+ ldr r3, [r0, r1]
+ lsl r2, r2, #2
+ ldr r3, [r3, r2]
+ add r2, r1, #4
+ ldr r2, [r0, r2]
+ add r1, r1, #4
+ add r2, r2, #1
+ str r2, [r0, r1]
+ add r0, r3, #0
+ bx lr
+ nop
+_021F2D70: .word 0x00002134
+ thumb_func_end MOD16_021F2D54
+
+ thumb_func_start MOD16_021F2D74
+MOD16_021F2D74: ; 0x021F2D74
+ ldr r2, _021F2D84 ; =0x00002134
+ ldr r3, [r0, r2]
+ add r2, r2, #4
+ ldr r0, [r0, r2]
+ add r0, r0, r1
+ lsl r0, r0, #2
+ ldr r0, [r3, r0]
+ bx lr
+ .align 2, 0
+_021F2D84: .word 0x00002134
+ thumb_func_end MOD16_021F2D74
+
+ thumb_func_start MOD16_021F2D88
+MOD16_021F2D88: ; 0x021F2D88
+ ldr r2, _021F2D94 ; =0x00002138
+ ldr r3, [r0, r2]
+ add r1, r3, r1
+ str r1, [r0, r2]
+ bx lr
+ nop
+_021F2D94: .word 0x00002138
+ thumb_func_end MOD16_021F2D88
+
+ thumb_func_start MOD16_021F2D98
+MOD16_021F2D98: ; 0x021F2D98
+ cmp r1, #3
+ bhi _021F2DB6
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021F2DA8: ; jump table
+ .short _021F2DB6 - _021F2DA8 - 2 ; case 0
+ .short _021F2DB0 - _021F2DA8 - 2 ; case 1
+ .short _021F2DCC - _021F2DA8 - 2 ; case 2
+ .short _021F2DBE - _021F2DA8 - 2 ; case 3
+_021F2DB0:
+ ldr r1, _021F2DDC ; =0x000003CF
+ ldrb r0, [r0, r1]
+ bx lr
+_021F2DB6:
+ mov r1, #0x3d
+ lsl r1, r1, #4
+ ldrb r0, [r0, r1]
+ bx lr
+_021F2DBE:
+ ldr r1, _021F2DDC ; =0x000003CF
+ ldrb r1, [r0, r1]
+ mov r0, #2
+ eor r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+_021F2DCC:
+ mov r1, #0x3d
+ lsl r1, r1, #4
+ ldrb r1, [r0, r1]
+ mov r0, #2
+ eor r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bx lr
+ .align 2, 0
+_021F2DDC: .word 0x000003CF
+ thumb_func_end MOD16_021F2D98
+
+ thumb_func_start MOD16_021F2DE0
+MOD16_021F2DE0: ; 0x021F2DE0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x44]
+ ldr r6, [sp, #0x40]
+ str r0, [sp, #0x44]
+ ldr r0, [sp, #0x48]
+ add r7, r1, #0
+ str r0, [sp, #0x48]
+ ldr r0, [sp, #0x4c]
+ str r2, [sp, #0x18]
+ str r0, [sp, #0x4c]
+ ldr r0, [sp, #0x50]
+ str r3, [sp, #0x1c]
+ str r0, [sp, #0x50]
+ ldr r0, [sp, #0x54]
+ str r0, [sp, #0x54]
+ mov r0, #0
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+_021F2E08:
+ ldr r2, [sp, #0x1c]
+ ldr r3, _021F2ED4 ; =0x000003DE
+ ldrh r2, [r2]
+ ldr r1, _021F2ED8 ; =0x021FF7F4
+ mov r0, #0
+ mov ip, r2
+ lsl r2, r2, #4
+ add r2, r7, r2
+ ldrh r3, [r2, r3]
+ str r2, [sp, #0x20]
+ ldr r2, _021F2EDC ; =0x0000FFFF
+_021F2E1E:
+ ldrh r4, [r1]
+ cmp r4, r3
+ beq _021F2E2E
+ add r1, r1, #2
+ ldrh r4, [r1]
+ add r0, r0, #1
+ cmp r4, r2
+ bne _021F2E1E
+_021F2E2E:
+ ldr r2, _021F2EE0 ; =0x021FF7DC
+ ldr r4, _021F2EDC ; =0x0000FFFF
+ mov r1, #0
+_021F2E34:
+ ldrh r5, [r2]
+ cmp r5, r3
+ beq _021F2E44
+ add r2, r2, #2
+ ldrh r5, [r2]
+ add r1, r1, #1
+ cmp r5, r4
+ bne _021F2E34
+_021F2E44:
+ lsl r2, r1, #1
+ ldr r1, _021F2EE0 ; =0x021FF7DC
+ ldrh r1, [r1, r2]
+ ldr r2, _021F2EDC ; =0x0000FFFF
+ cmp r1, r2
+ bne _021F2E6A
+ mov r1, ip
+ cmp r1, #0
+ beq _021F2EA0
+ lsl r1, r0, #1
+ ldr r0, _021F2ED8 ; =0x021FF7F4
+ ldrh r0, [r0, r1]
+ cmp r0, r2
+ bne _021F2EA0
+ ldr r1, _021F2EE4 ; =0x000003E1
+ ldr r0, [sp, #0x20]
+ ldrb r0, [r0, r1]
+ cmp r0, #1
+ bls _021F2EA0
+_021F2E6A:
+ ldr r0, [sp, #0x54]
+ cmp r0, #1
+ bne _021F2E7C
+ ldr r0, [sp, #0x28]
+ add r1, r7, r0
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ ldrb r0, [r1, r0]
+ b _021F2E7E
+_021F2E7C:
+ mov r0, #0x64
+_021F2E7E:
+ ldr r1, [sp, #0x48]
+ mov r2, ip
+ str r1, [sp]
+ ldr r1, [sp, #0x18]
+ str r1, [sp, #4]
+ ldr r1, [sp, #0x4c]
+ str r1, [sp, #8]
+ ldr r1, [sp, #0x50]
+ str r1, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ ldr r3, [sp, #0x44]
+ add r1, r7, #0
+ bl MOD16_021F2EE8
+ str r0, [r6]
+ b _021F2EA4
+_021F2EA0:
+ mov r0, #0
+ str r0, [r6]
+_021F2EA4:
+ ldr r0, [sp, #0x1c]
+ add r6, r6, #4
+ add r0, r0, #2
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x28]
+ add r0, r0, #1
+ str r0, [sp, #0x28]
+ cmp r0, #4
+ blt _021F2E08
+ ldr r2, [sp, #0x40]
+ mov r3, #0
+_021F2EBA:
+ ldr r1, [r2]
+ ldr r0, [sp, #0x24]
+ cmp r0, r1
+ bge _021F2EC4
+ str r1, [sp, #0x24]
+_021F2EC4:
+ add r3, r3, #1
+ add r2, r2, #4
+ cmp r3, #4
+ blt _021F2EBA
+ ldr r0, [sp, #0x24]
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021F2ED4: .word 0x000003DE
+_021F2ED8: .word 0x021FF7F4
+_021F2EDC: .word 0x0000FFFF
+_021F2EE0: .word 0x021FF7DC
+_021F2EE4: .word 0x000003E1
+ thumb_func_end MOD16_021F2DE0
+
+ thumb_func_start MOD16_021F2EE8
+MOD16_021F2EE8: ; 0x021F2EE8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ add r6, r1, #0
+ ldr r1, [sp, #0x60]
+ str r3, [sp, #0x1c]
+ str r1, [sp, #0x60]
+ ldr r1, [sp, #0x64]
+ str r0, [sp, #0x18]
+ str r1, [sp, #0x64]
+ mov r1, #0x3d
+ lsl r1, r1, #4
+ ldrb r1, [r6, r1]
+ add r5, r2, #0
+ bl MOD11_02230270
+ mov r4, #0
+ str r0, [sp, #0x28]
+ add r0, r4, #0
+ add r7, r4, #0
+ str r4, [sp, #0x20]
+ str r0, [sp, #0x48]
+ cmp r5, #0xd8
+ bgt _021F2F4E
+ blt _021F2F1A
+ b _021F3156
+_021F2F1A:
+ cmp r5, #0x52
+ bgt _021F2F3C
+ blt _021F2F22
+ b _021F311C
+_021F2F22:
+ cmp r5, #0x31
+ bgt _021F2F2C
+ bne _021F2F2A
+ b _021F31CE
+_021F2F2A:
+ b _021F3210
+_021F2F2C:
+ cmp r5, #0x45
+ bgt _021F2F3A
+ cmp r5, #0x43
+ blt _021F2F3A
+ beq _021F2F84
+ cmp r5, #0x45
+ beq _021F2F42
+_021F2F3A:
+ b _021F3210
+_021F2F3C:
+ cmp r5, #0x65
+ bgt _021F2F46
+ bne _021F2F44
+_021F2F42:
+ b _021F3122
+_021F2F44:
+ b _021F3210
+_021F2F46:
+ cmp r5, #0x95
+ bne _021F2F4C
+ b _021F3132
+_021F2F4C:
+ b _021F3210
+_021F2F4E:
+ mov r0, #0x5a
+ lsl r0, r0, #2
+ cmp r5, r0
+ bgt _021F2F74
+ blt _021F2F5A
+ b _021F30F2
+_021F2F5A:
+ cmp r5, #0xde
+ bgt _021F2F6E
+ cmp r5, #0xda
+ blt _021F2F6C
+ bne _021F2F66
+ b _021F3170
+_021F2F66:
+ cmp r5, #0xde
+ bne _021F2F6C
+ b _021F318E
+_021F2F6C:
+ b _021F3210
+_021F2F6E:
+ cmp r5, #0xed
+ beq _021F304C
+ b _021F3210
+_021F2F74:
+ add r1, r0, #0
+ add r1, #0x57
+ cmp r5, r1
+ bgt _021F2F8E
+ add r1, r0, #0
+ add r1, #0x57
+ cmp r5, r1
+ blt _021F2F86
+_021F2F84:
+ b _021F31D4
+_021F2F86:
+ add r0, r0, #3
+ cmp r5, r0
+ beq _021F2F96
+ b _021F3210
+_021F2F8E:
+ add r0, #0x59
+ cmp r5, r0
+ beq _021F2FBE
+ b _021F3210
+_021F2F96:
+ ldr r0, [sp, #0x68]
+ cmp r0, #0x67
+ beq _021F2FCA
+ ldr r0, [sp, #0x6c]
+ cmp r0, #0
+ bne _021F2FCA
+ ldr r1, [sp, #0x1c]
+ add r0, r6, #0
+ mov r2, #0xb
+ bl MOD11_0224C12C
+ add r4, r0, #0
+ beq _021F2FCA
+ ldr r1, [sp, #0x1c]
+ add r0, r6, #0
+ mov r2, #0xc
+ bl MOD11_0224C12C
+ add r7, r0, #0
+ b _021F3214
+_021F2FBE:
+ ldr r0, [sp, #0x68]
+ cmp r0, #0x67
+ beq _021F2FCA
+ ldr r0, [sp, #0x6c]
+ cmp r0, #0
+ beq _021F2FCC
+_021F2FCA:
+ b _021F3214
+_021F2FCC:
+ ldr r1, [sp, #0x1c]
+ add r0, r6, #0
+ mov r2, #1
+ bl MOD11_0224C12C
+ sub r0, #0x7d
+ cmp r0, #0xf
+ bhi _021F3048
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021F2FE8: ; jump table
+ .short _021F3028 - _021F2FE8 - 2 ; case 0
+ .short _021F302C - _021F2FE8 - 2 ; case 1
+ .short _021F3034 - _021F2FE8 - 2 ; case 2
+ .short _021F3030 - _021F2FE8 - 2 ; case 3
+ .short _021F303C - _021F2FE8 - 2 ; case 4
+ .short _021F3008 - _021F2FE8 - 2 ; case 5
+ .short _021F3010 - _021F2FE8 - 2 ; case 6
+ .short _021F3014 - _021F2FE8 - 2 ; case 7
+ .short _021F300C - _021F2FE8 - 2 ; case 8
+ .short _021F3038 - _021F2FE8 - 2 ; case 9
+ .short _021F301C - _021F2FE8 - 2 ; case 10
+ .short _021F3018 - _021F2FE8 - 2 ; case 11
+ .short _021F3020 - _021F2FE8 - 2 ; case 12
+ .short _021F3040 - _021F2FE8 - 2 ; case 13
+ .short _021F3044 - _021F2FE8 - 2 ; case 14
+ .short _021F3024 - _021F2FE8 - 2 ; case 15
+_021F3008:
+ mov r7, #1
+ b _021F3214
+_021F300C:
+ mov r7, #2
+ b _021F3214
+_021F3010:
+ mov r7, #3
+ b _021F3214
+_021F3014:
+ mov r7, #4
+ b _021F3214
+_021F3018:
+ mov r7, #5
+ b _021F3214
+_021F301C:
+ mov r7, #6
+ b _021F3214
+_021F3020:
+ mov r7, #7
+ b _021F3214
+_021F3024:
+ mov r7, #8
+ b _021F3214
+_021F3028:
+ mov r7, #0xa
+ b _021F3214
+_021F302C:
+ mov r7, #0xb
+ b _021F3214
+_021F3030:
+ mov r7, #0xc
+ b _021F3214
+_021F3034:
+ mov r7, #0xd
+ b _021F3214
+_021F3038:
+ mov r7, #0xe
+ b _021F3214
+_021F303C:
+ mov r7, #0xf
+ b _021F3214
+_021F3040:
+ mov r7, #0x10
+ b _021F3214
+_021F3044:
+ mov r7, #0x11
+ b _021F3214
+_021F3048:
+ mov r7, #0
+ b _021F3214
+_021F304C:
+ ldr r0, [sp, #0x60]
+ ldr r1, [sp, #0x60]
+ ldrb r0, [r0, #1]
+ ldrb r3, [r1, #4]
+ ldrb r1, [r1, #5]
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x60]
+ str r1, [sp, #0x34]
+ ldrb r0, [r0]
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x1a
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x60]
+ str r1, [sp, #0x38]
+ ldrb r2, [r0, #2]
+ lsl r1, r3, #0x1f
+ lsr r1, r1, #0x1b
+ ldrb r0, [r0, #3]
+ str r1, [sp, #0x3c]
+ mov r4, #1
+ lsl r1, r0, #0x1f
+ lsr r1, r1, #0x1c
+ str r1, [sp, #0x40]
+ lsl r1, r2, #0x1f
+ lsr r7, r1, #0x1d
+ ldr r1, [sp, #0x30]
+ and r1, r4
+ ldr r4, [sp, #0x2c]
+ lsl r4, r4, #0x1f
+ lsr r4, r4, #0x1e
+ orr r1, r4
+ add r4, r7, #0
+ orr r4, r1
+ ldr r1, [sp, #0x40]
+ orr r4, r1
+ ldr r1, [sp, #0x3c]
+ orr r4, r1
+ ldr r1, [sp, #0x38]
+ orr r1, r4
+ str r1, [sp, #0x24]
+ mov r1, #2
+ ldr r4, [sp, #0x34]
+ and r3, r1
+ and r4, r1
+ lsl r4, r4, #4
+ str r4, [sp, #0x44]
+ and r0, r1
+ lsl r4, r3, #3
+ lsl r3, r0, #2
+ add r0, r2, #0
+ and r0, r1
+ lsl r2, r0, #1
+ ldr r0, [sp, #0x30]
+ and r0, r1
+ asr r7, r0, #1
+ ldr r0, [sp, #0x2c]
+ and r0, r1
+ orr r0, r7
+ orr r0, r2
+ orr r0, r3
+ add r1, r4, #0
+ orr r1, r0
+ ldr r0, [sp, #0x44]
+ orr r1, r0
+ mov r0, #0x28
+ mul r0, r1
+ mov r1, #0x3f
+ bl _s32_div_f
+ add r4, r0, #0
+ ldr r1, [sp, #0x24]
+ mov r0, #0xf
+ mul r0, r1
+ mov r1, #0x3f
+ add r4, #0x1e
+ bl _s32_div_f
+ add r7, r0, #1
+ cmp r7, #9
+ bge _021F30EE
+ b _021F3214
+_021F30EE:
+ add r7, r7, #1
+ b _021F3214
+_021F30F2:
+ mov r0, #0x3d
+ lsl r0, r0, #4
+ ldrb r0, [r6, r0]
+ ldr r2, _021F32B4 ; =0x000021F0
+ lsl r0, r0, #2
+ add r0, r6, r0
+ ldr r1, [r0, r2]
+ mov r0, #0x19
+ mul r0, r1
+ ldr r1, [sp, #0x64]
+ lsl r1, r1, #2
+ add r1, r6, r1
+ ldr r1, [r1, r2]
+ bl _u32_div_f
+ add r4, r0, #1
+ cmp r4, #0x96
+ ble _021F3118
+ mov r4, #0x96
+_021F3118:
+ mov r7, #0
+ b _021F3214
+_021F311C:
+ mov r0, #0x28
+ str r0, [sp, #0x20]
+ b _021F3214
+_021F3122:
+ ldr r0, [sp, #0x64]
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F32B8 ; =0x00002D74
+ add r1, r6, r1
+ ldrb r0, [r1, r0]
+ str r0, [sp, #0x20]
+ b _021F3214
+_021F3132:
+ bl FUN_0201B9EC
+ mov r1, #0xb
+ bl _s32_div_f
+ ldr r0, [sp, #0x64]
+ mov r2, #0xc0
+ mul r2, r0
+ ldr r0, _021F32B8 ; =0x00002D74
+ add r2, r6, r2
+ ldrb r2, [r2, r0]
+ add r0, r1, #5
+ mov r1, #0xa
+ mul r0, r2
+ bl _s32_div_f
+ str r0, [sp, #0x20]
+ b _021F3214
+_021F3156:
+ ldr r0, [sp, #0x64]
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F32BC ; =0x00002D75
+ add r1, r6, r1
+ ldrb r1, [r1, r0]
+ mov r0, #0xa
+ mul r0, r1
+ mov r1, #0x19
+ bl _s32_div_f
+ add r4, r0, #0
+ b _021F3214
+_021F3170:
+ ldr r0, [sp, #0x64]
+ mov r1, #0xc0
+ mul r1, r0
+ ldr r0, _021F32BC ; =0x00002D75
+ add r1, r6, r1
+ ldrb r1, [r1, r0]
+ mov r0, #0xff
+ sub r1, r0, r1
+ mov r0, #0xa
+ mul r0, r1
+ mov r1, #0x19
+ bl _s32_div_f
+ add r4, r0, #0
+ b _021F3214
+_021F318E:
+ bl FUN_0201B9EC
+ mov r1, #0x64
+ bl _s32_div_f
+ cmp r1, #5
+ bge _021F31A0
+ mov r4, #0xa
+ b _021F31CA
+_021F31A0:
+ cmp r1, #0xf
+ bge _021F31A8
+ mov r4, #0x1e
+ b _021F31CA
+_021F31A8:
+ cmp r1, #0x23
+ bge _021F31B0
+ mov r4, #0x32
+ b _021F31CA
+_021F31B0:
+ cmp r1, #0x41
+ bge _021F31B8
+ mov r4, #0x46
+ b _021F31CA
+_021F31B8:
+ cmp r1, #0x55
+ bge _021F31C0
+ mov r4, #0x5a
+ b _021F31CA
+_021F31C0:
+ cmp r1, #0x5f
+ bge _021F31C8
+ mov r4, #0x6e
+ b _021F31CA
+_021F31C8:
+ mov r4, #0x96
+_021F31CA:
+ mov r7, #0
+ b _021F3214
+_021F31CE:
+ mov r0, #0x14
+ str r0, [sp, #0x20]
+ b _021F3214
+_021F31D4:
+ mov r2, #0x3d
+ lsl r2, r2, #4
+ ldrb r3, [r6, r2]
+ mov r2, #0xc0
+ ldr r1, _021F32C0 ; =0x021FF7C4
+ mul r2, r3
+ add r3, r6, r2
+ ldr r2, _021F32C4 ; =0x00002D60
+ ldr r4, _021F32C8 ; =0x0000FFFF
+ ldr r2, [r3, r2]
+ mov r0, #0
+_021F31EA:
+ ldrh r3, [r1]
+ cmp r3, r2
+ bge _021F31FA
+ add r1, r1, #4
+ ldrh r3, [r1]
+ add r0, r0, #1
+ cmp r3, r4
+ bne _021F31EA
+_021F31FA:
+ ldr r1, _021F32C0 ; =0x021FF7C4
+ lsl r0, r0, #2
+ ldrh r2, [r1, r0]
+ ldr r1, _021F32C8 ; =0x0000FFFF
+ cmp r2, r1
+ beq _021F320C
+ ldr r1, _021F32CC ; =0x021FF7C6
+ ldrh r4, [r1, r0]
+ b _021F3214
+_021F320C:
+ mov r4, #0x78
+ b _021F3214
+_021F3210:
+ mov r4, #0
+ add r7, r4, #0
+_021F3214:
+ ldr r0, [sp, #0x20]
+ cmp r0, #0
+ bne _021F325E
+ mov r0, #6
+ lsl r0, r0, #6
+ mov ip, r0
+ ldr r0, [r6, r0]
+ ldr r3, [sp, #0x28]
+ str r0, [sp]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x64]
+ lsl r3, r3, #2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ mov r0, #0x3d
+ lsl r0, r0, #4
+ ldrb r0, [r6, r0]
+ add r4, r6, r3
+ mov r3, ip
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ add r3, #0x3c
+ ldr r0, [sp, #0x18]
+ ldr r3, [r4, r3]
+ add r1, r6, #0
+ add r2, r5, #0
+ bl MOD11_0224B310
+ str r0, [sp, #0x20]
+ b _021F326A
+_021F325E:
+ ldr r1, _021F32D0 ; =0x0000213C
+ mov r0, #2
+ ldr r2, [r6, r1]
+ lsl r0, r0, #0xa
+ orr r0, r2
+ str r0, [r6, r1]
+_021F326A:
+ ldr r0, [sp, #0x64]
+ add r1, r6, #0
+ str r0, [sp]
+ mov r0, #0x3d
+ lsl r0, r0, #4
+ ldrb r0, [r6, r0]
+ add r2, r5, #0
+ add r3, r7, #0
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x20]
+ str r0, [sp, #8]
+ add r0, sp, #0x48
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x18]
+ bl MOD11_02246274
+ ldr r2, _021F32D0 ; =0x0000213C
+ ldr r1, _021F32D4 ; =0xFFFFF7FF
+ ldr r3, [r6, r2]
+ and r1, r3
+ str r1, [r6, r2]
+ ldr r2, [sp, #0x48]
+ ldr r1, _021F32D8 ; =0x00140808
+ tst r1, r2
+ beq _021F32A2
+ add sp, #0x4c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021F32A2:
+ add r1, sp, #0x70
+ ldrb r1, [r1]
+ mul r1, r0
+ add r0, r1, #0
+ mov r1, #0x64
+ bl MOD11_022476C0
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F32B4: .word 0x000021F0
+_021F32B8: .word 0x00002D74
+_021F32BC: .word 0x00002D75
+_021F32C0: .word 0x021FF7C4
+_021F32C4: .word 0x00002D60
+_021F32C8: .word 0x0000FFFF
+_021F32CC: .word 0x021FF7C6
+_021F32D0: .word 0x0000213C
+_021F32D4: .word 0xFFFFF7FF
+_021F32D8: .word 0x00140808
+ thumb_func_end MOD16_021F2EE8
+
+ thumb_func_start MOD16_021F32DC
+MOD16_021F32DC: ; 0x021F32DC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r2, #0
+ ldr r2, _021F3448 ; =0x00000137
+ add r7, r0, #0
+ add r4, r1, #0
+ cmp r3, r2
+ bgt _021F32F4
+ blt _021F32EE
+ b _021F33F0
+_021F32EE:
+ cmp r3, #0xed
+ beq _021F3396
+ b _021F3442
+_021F32F4:
+ add r0, r2, #0
+ add r0, #0x34
+ cmp r3, r0
+ bgt _021F3304
+ add r2, #0x34
+ cmp r3, r2
+ beq _021F330C
+ b _021F3442
+_021F3304:
+ add r2, #0x8a
+ cmp r3, r2
+ beq _021F3318
+ b _021F3442
+_021F330C:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD11_02249E04
+ add r5, r0, #0
+ b _021F3444
+_021F3318:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD11_02249D90
+ sub r0, #0x7d
+ cmp r0, #0xf
+ bhi _021F3392
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021F3332: ; jump table
+ .short _021F3372 - _021F3332 - 2 ; case 0
+ .short _021F3376 - _021F3332 - 2 ; case 1
+ .short _021F337E - _021F3332 - 2 ; case 2
+ .short _021F337A - _021F3332 - 2 ; case 3
+ .short _021F3386 - _021F3332 - 2 ; case 4
+ .short _021F3352 - _021F3332 - 2 ; case 5
+ .short _021F335A - _021F3332 - 2 ; case 6
+ .short _021F335E - _021F3332 - 2 ; case 7
+ .short _021F3356 - _021F3332 - 2 ; case 8
+ .short _021F3382 - _021F3332 - 2 ; case 9
+ .short _021F3366 - _021F3332 - 2 ; case 10
+ .short _021F3362 - _021F3332 - 2 ; case 11
+ .short _021F336A - _021F3332 - 2 ; case 12
+ .short _021F338A - _021F3332 - 2 ; case 13
+ .short _021F338E - _021F3332 - 2 ; case 14
+ .short _021F336E - _021F3332 - 2 ; case 15
+_021F3352:
+ mov r5, #1
+ b _021F3444
+_021F3356:
+ mov r5, #2
+ b _021F3444
+_021F335A:
+ mov r5, #3
+ b _021F3444
+_021F335E:
+ mov r5, #4
+ b _021F3444
+_021F3362:
+ mov r5, #5
+ b _021F3444
+_021F3366:
+ mov r5, #6
+ b _021F3444
+_021F336A:
+ mov r5, #7
+ b _021F3444
+_021F336E:
+ mov r5, #8
+ b _021F3444
+_021F3372:
+ mov r5, #0xa
+ b _021F3444
+_021F3376:
+ mov r5, #0xb
+ b _021F3444
+_021F337A:
+ mov r5, #0xc
+ b _021F3444
+_021F337E:
+ mov r5, #0xd
+ b _021F3444
+_021F3382:
+ mov r5, #0xe
+ b _021F3444
+_021F3386:
+ mov r5, #0xf
+ b _021F3444
+_021F338A:
+ mov r5, #0x10
+ b _021F3444
+_021F338E:
+ mov r5, #0x11
+ b _021F3444
+_021F3392:
+ mov r5, #0
+ b _021F3444
+_021F3396:
+ ldr r0, _021F344C ; =0x00002D54
+ add r1, r4, r0
+ mov r0, #0xc0
+ mul r0, r6
+ ldr r4, [r1, r0]
+ lsl r0, r4, #2
+ lsr r0, r0, #0x1b
+ lsl r0, r0, #0x1f
+ lsr r5, r0, #0x1a
+ lsl r0, r4, #7
+ lsr r0, r0, #0x1b
+ lsl r0, r0, #0x1f
+ lsr r3, r0, #0x1b
+ lsl r0, r4, #0xc
+ lsr r0, r0, #0x1b
+ lsl r0, r0, #0x1f
+ lsr r2, r0, #0x1c
+ lsl r0, r4, #0x11
+ lsr r0, r0, #0x1b
+ lsl r0, r0, #0x1f
+ lsr r1, r0, #0x1d
+ lsl r0, r4, #0x1b
+ lsl r4, r4, #0x16
+ lsr r4, r4, #0x1b
+ lsr r6, r0, #0x1b
+ mov r0, #1
+ lsl r4, r4, #0x1f
+ and r0, r6
+ lsr r4, r4, #0x1e
+ orr r0, r4
+ orr r0, r1
+ orr r0, r2
+ orr r0, r3
+ add r1, r5, #0
+ orr r1, r0
+ mov r0, #0xf
+ mul r0, r1
+ mov r1, #0x3f
+ bl _s32_div_f
+ add r5, r0, #1
+ cmp r5, #9
+ blt _021F3444
+ add r5, r5, #1
+ b _021F3444
+_021F33F0:
+ mov r2, #0xd
+ str r2, [sp]
+ mov r2, #8
+ mov r3, #0
+ bl MOD11_02246870
+ cmp r0, #0
+ bne _021F3444
+ mov r0, #0x4c
+ str r0, [sp]
+ add r0, r7, #0
+ add r1, r4, #0
+ mov r2, #8
+ mov r3, #0
+ bl MOD11_02246870
+ cmp r0, #0
+ bne _021F3444
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r1, _021F3450 ; =0x000080FF
+ tst r1, r0
+ beq _021F3444
+ mov r1, #3
+ tst r1, r0
+ beq _021F3428
+ mov r5, #0xb
+_021F3428:
+ mov r1, #0xc
+ tst r1, r0
+ beq _021F3430
+ mov r5, #5
+_021F3430:
+ mov r1, #0x30
+ tst r1, r0
+ beq _021F3438
+ mov r5, #0xa
+_021F3438:
+ mov r1, #0xc0
+ tst r0, r1
+ beq _021F3444
+ mov r5, #0xf
+ b _021F3444
+_021F3442:
+ mov r5, #0
+_021F3444:
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F3448: .word 0x00000137
+_021F344C: .word 0x00002D54
+_021F3450: .word 0x000080FF
+ thumb_func_end MOD16_021F32DC
+
+ thumb_func_start MOD16_021F3454
+MOD16_021F3454: ; 0x021F3454
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ ldr r2, _021F360C ; =0x00000137
+ add r7, r0, #0
+ add r6, r1, #0
+ cmp r3, r2
+ bgt _021F346E
+ blt _021F3468
+ b _021F35B2
+_021F3468:
+ cmp r3, #0xed
+ beq _021F3530
+ b _021F3604
+_021F346E:
+ add r0, r2, #0
+ add r0, #0x34
+ cmp r3, r0
+ bgt _021F347E
+ add r2, #0x34
+ cmp r3, r2
+ beq _021F3486
+ b _021F3604
+_021F347E:
+ add r2, #0x8a
+ cmp r3, r2
+ beq _021F34A2
+ b _021F3604
+_021F3486:
+ add r0, r4, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ add r0, r6, #0
+ lsr r1, r1, #0x10
+ mov r2, #0xc
+ bl MOD11_0224C12C
+ add r5, r0, #0
+ b _021F3606
+_021F34A2:
+ add r0, r4, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ add r0, r6, #0
+ lsr r1, r1, #0x10
+ mov r2, #1
+ bl MOD11_0224C12C
+ sub r0, #0x7d
+ cmp r0, #0xf
+ bhi _021F352C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021F34CC: ; jump table
+ .short _021F350C - _021F34CC - 2 ; case 0
+ .short _021F3510 - _021F34CC - 2 ; case 1
+ .short _021F3518 - _021F34CC - 2 ; case 2
+ .short _021F3514 - _021F34CC - 2 ; case 3
+ .short _021F3520 - _021F34CC - 2 ; case 4
+ .short _021F34EC - _021F34CC - 2 ; case 5
+ .short _021F34F4 - _021F34CC - 2 ; case 6
+ .short _021F34F8 - _021F34CC - 2 ; case 7
+ .short _021F34F0 - _021F34CC - 2 ; case 8
+ .short _021F351C - _021F34CC - 2 ; case 9
+ .short _021F3500 - _021F34CC - 2 ; case 10
+ .short _021F34FC - _021F34CC - 2 ; case 11
+ .short _021F3504 - _021F34CC - 2 ; case 12
+ .short _021F3524 - _021F34CC - 2 ; case 13
+ .short _021F3528 - _021F34CC - 2 ; case 14
+ .short _021F3508 - _021F34CC - 2 ; case 15
+_021F34EC:
+ mov r5, #1
+ b _021F3606
+_021F34F0:
+ mov r5, #2
+ b _021F3606
+_021F34F4:
+ mov r5, #3
+ b _021F3606
+_021F34F8:
+ mov r5, #4
+ b _021F3606
+_021F34FC:
+ mov r5, #5
+ b _021F3606
+_021F3500:
+ mov r5, #6
+ b _021F3606
+_021F3504:
+ mov r5, #7
+ b _021F3606
+_021F3508:
+ mov r5, #8
+ b _021F3606
+_021F350C:
+ mov r5, #0xa
+ b _021F3606
+_021F3510:
+ mov r5, #0xb
+ b _021F3606
+_021F3514:
+ mov r5, #0xc
+ b _021F3606
+_021F3518:
+ mov r5, #0xd
+ b _021F3606
+_021F351C:
+ mov r5, #0xe
+ b _021F3606
+_021F3520:
+ mov r5, #0xf
+ b _021F3606
+_021F3524:
+ mov r5, #0x10
+ b _021F3606
+_021F3528:
+ mov r5, #0x11
+ b _021F3606
+_021F352C:
+ mov r5, #0
+ b _021F3606
+_021F3530:
+ add r0, r4, #0
+ mov r1, #0x4b
+ mov r2, #0
+ bl FUN_020671BC
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #0x4a
+ mov r2, #0
+ bl FUN_020671BC
+ add r6, r0, #0
+ add r0, r4, #0
+ mov r1, #0x49
+ mov r2, #0
+ bl FUN_020671BC
+ add r7, r0, #0
+ add r0, r4, #0
+ mov r1, #0x48
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #0x46
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0x47
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r0, #0
+ lsl r2, r6, #0x1f
+ lsl r0, r5, #0x1f
+ lsr r5, r2, #0x1b
+ lsl r2, r7, #0x1f
+ lsr r4, r2, #0x1c
+ ldr r2, [sp, #4]
+ lsl r1, r1, #0x1f
+ lsl r2, r2, #0x1f
+ lsr r3, r2, #0x1d
+ ldr r2, [sp, #8]
+ mov r6, #1
+ and r2, r6
+ lsr r1, r1, #0x1e
+ orr r1, r2
+ orr r1, r3
+ orr r1, r4
+ lsr r0, r0, #0x1a
+ orr r1, r5
+ orr r1, r0
+ mov r0, #0xf
+ mul r0, r1
+ mov r1, #0x3f
+ bl _s32_div_f
+ add r5, r0, #1
+ cmp r5, #9
+ blt _021F3606
+ add r5, r5, #1
+ b _021F3606
+_021F35B2:
+ mov r2, #0xd
+ str r2, [sp]
+ mov r2, #8
+ mov r3, #0
+ bl MOD11_02246870
+ cmp r0, #0
+ bne _021F3606
+ mov r0, #0x4c
+ str r0, [sp]
+ add r0, r7, #0
+ add r1, r6, #0
+ mov r2, #8
+ mov r3, #0
+ bl MOD11_02246870
+ cmp r0, #0
+ bne _021F3606
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ ldr r1, _021F3610 ; =0x000080FF
+ tst r1, r0
+ beq _021F3606
+ mov r1, #3
+ tst r1, r0
+ beq _021F35EA
+ mov r5, #0xb
+_021F35EA:
+ mov r1, #0xc
+ tst r1, r0
+ beq _021F35F2
+ mov r5, #5
+_021F35F2:
+ mov r1, #0x30
+ tst r1, r0
+ beq _021F35FA
+ mov r5, #0xa
+_021F35FA:
+ mov r1, #0xc0
+ tst r0, r1
+ beq _021F3606
+ mov r5, #0xf
+ b _021F3606
+_021F3604:
+ mov r5, #0
+_021F3606:
+ add r0, r5, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F360C: .word 0x00000137
+_021F3610: .word 0x000080FF
+ thumb_func_end MOD16_021F3454
+
+ thumb_func_start MOD16_021F3614
+MOD16_021F3614: ; 0x021F3614
+ push {r4, r5}
+ mov r2, #0xc0
+ mul r2, r1
+ add r5, r0, r2
+ mov r2, #0xb7
+ lsl r2, r2, #6
+ ldr r4, [r5, r2]
+ mov r3, #0x20
+ tst r3, r4
+ beq _021F3640
+ add r2, #8
+ ldr r2, [r5, r2]
+ lsl r2, r2, #0x11
+ lsr r2, r2, #0x1e
+ bne _021F3640
+ add r1, r0, r1
+ ldr r0, _021F3648 ; =0x000021A4
+ mov r2, #6
+ strb r2, [r1, r0]
+ mov r0, #1
+ pop {r4, r5}
+ bx lr
+_021F3640:
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+ nop
+_021F3648: .word 0x000021A4
+ thumb_func_end MOD16_021F3614
+
+ thumb_func_start MOD16_021F364C
+MOD16_021F364C: ; 0x021F364C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ str r0, [sp, #0x14]
+ add r5, r1, #0
+ str r2, [sp, #0x18]
+ bl MOD11_0222FF74
+ mov r1, #2
+ tst r0, r1
+ beq _021F3666
+ add sp, #0x44
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021F3666:
+ ldr r0, [sp, #0x18]
+ mov r1, #1
+ add r4, r0, #0
+ eor r4, r1
+ mov r1, #0xc0
+ add r0, r4, #0
+ mul r0, r1
+ add r2, r5, r0
+ ldr r0, _021F37FC ; =0x00002D67
+ ldrb r0, [r2, r0]
+ cmp r0, #0x19
+ bne _021F36E4
+ mov r0, #0
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x18]
+ mul r1, r0
+ add r6, r5, r1
+_021F3688:
+ ldr r0, _021F3800 ; =0x00002D4C
+ ldr r2, [sp, #0x18]
+ ldrh r7, [r6, r0]
+ ldr r0, [sp, #0x14]
+ add r1, r5, #0
+ add r3, r7, #0
+ bl MOD16_021F32DC
+ add r3, r0, #0
+ cmp r7, #0
+ beq _021F36C8
+ mov r0, #0
+ str r0, [sp, #0x40]
+ ldr r0, [sp, #0x18]
+ add r1, r5, #0
+ str r0, [sp]
+ str r4, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, sp, #0x40
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ add r2, r7, #0
+ bl MOD11_02246274
+ ldr r1, [sp, #0x40]
+ mov r0, #2
+ tst r0, r1
+ beq _021F36C8
+ add sp, #0x44
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021F36C8:
+ ldr r0, [sp, #0x28]
+ add r6, r6, #2
+ add r0, r0, #1
+ str r0, [sp, #0x28]
+ cmp r0, #4
+ blt _021F3688
+ mov r0, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ bl MOD11_0222FFC8
+ cmp r0, #0
+ bgt _021F36E6
+_021F36E4:
+ b _021F37F4
+_021F36E6:
+ ldr r0, [sp, #0x18]
+ add r0, r5, r0
+ str r0, [sp, #0x24]
+_021F36EC:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x20]
+ bl MOD11_02230014
+ mov r1, #0xa2
+ mov r2, #0
+ add r6, r0, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F37DE
+ add r0, r6, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F37DE
+ add r0, r6, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, _021F3804 ; =0x000001EE
+ cmp r0, r1
+ beq _021F37DE
+ ldr r1, _021F3808 ; =0x0000219C
+ ldr r0, [sp, #0x24]
+ ldrb r1, [r0, r1]
+ ldr r0, [sp, #0x20]
+ cmp r0, r1
+ beq _021F37DE
+ mov r7, #0
+_021F3730:
+ add r1, r7, #0
+ add r0, r6, #0
+ add r1, #0x36
+ mov r2, #0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x14]
+ ldr r3, [sp, #0x1c]
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD16_021F3454
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0
+ beq _021F37D8
+ mov r0, #0
+ str r0, [sp, #0x40]
+ add r0, r6, #0
+ mov r1, #0xa
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0x30]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD11_02246D1C
+ str r0, [sp, #0x34]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD11_02249D90
+ str r0, [sp, #0x38]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ str r0, [sp, #0x3c]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x1c
+ mov r3, #0
+ bl MOD11_02243420
+ ldr r1, [sp, #0x34]
+ ldr r2, [sp, #0x2c]
+ str r1, [sp]
+ ldr r1, [sp, #0x38]
+ ldr r3, [sp, #0x30]
+ str r1, [sp, #4]
+ ldr r1, [sp, #0x3c]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, sp, #0x40
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x1c]
+ add r0, r5, #0
+ bl MOD11_022465A0
+ ldr r1, [sp, #0x40]
+ mov r0, #2
+ tst r0, r1
+ beq _021F37D8
+ bl FUN_0201B9EC
+ mov r1, #3
+ bl _s32_div_f
+ cmp r1, #2
+ bge _021F37D8
+ ldr r0, [sp, #0x18]
+ ldr r1, _021F380C ; =0x000021A4
+ add r2, r5, r0
+ ldr r0, [sp, #0x20]
+ add sp, #0x44
+ strb r0, [r2, r1]
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021F37D8:
+ add r7, r7, #1
+ cmp r7, #4
+ blt _021F3730
+_021F37DE:
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x18]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x14]
+ bl MOD11_0222FFC8
+ ldr r1, [sp, #0x20]
+ cmp r1, r0
+ bge _021F37F4
+ b _021F36EC
+_021F37F4:
+ mov r0, #0
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021F37FC: .word 0x00002D67
+_021F3800: .word 0x00002D4C
+_021F3804: .word 0x000001EE
+_021F3808: .word 0x0000219C
+_021F380C: .word 0x000021A4
+ thumb_func_end MOD16_021F364C
+
+ thumb_func_start MOD16_021F3810
+MOD16_021F3810: ; 0x021F3810
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xb4
+ str r0, [sp, #0x14]
+ add r5, r1, #0
+ str r2, [sp, #0x18]
+ bl MOD11_0222FF74
+ mov r4, #2
+ tst r0, r4
+ beq _021F3828
+ mov r6, #0
+ b _021F382C
+_021F3828:
+ mov r6, #0
+ add r4, r6, #0
+_021F382C:
+ mov r0, #0
+ str r0, [sp, #0x54]
+ str r0, [sp, #0x6c]
+ ldr r0, [sp, #0x18]
+ mov r1, #0xc0
+ add r2, r0, #0
+ mul r2, r1
+ add r0, r5, r2
+ str r0, [sp, #0x3c]
+ add r0, r6, #0
+ mul r0, r1
+ add r0, r5, r0
+ str r0, [sp, #0x38]
+ add r0, r4, #0
+ mul r0, r1
+ add r0, r5, r0
+ str r0, [sp, #0x34]
+_021F384E:
+ ldr r1, [sp, #0x3c]
+ ldr r0, _021F3B78 ; =0x00002D4C
+ ldr r2, [sp, #0x18]
+ ldrh r7, [r1, r0]
+ ldr r0, [sp, #0x14]
+ add r1, r5, #0
+ add r3, r7, #0
+ bl MOD16_021F32DC
+ str r0, [sp, #0x5c]
+ cmp r7, #0
+ beq _021F38E4
+ lsl r0, r7, #4
+ add r1, r5, r0
+ ldr r0, _021F3B7C ; =0x000003E1
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _021F38E4
+ ldr r0, [sp, #0x54]
+ ldr r1, [sp, #0x38]
+ add r0, r0, #1
+ str r0, [sp, #0x54]
+ mov r0, #0
+ str r0, [sp, #0xb0]
+ ldr r0, _021F3B80 ; =0x00002D8C
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021F38A0
+ ldr r0, [sp, #0x18]
+ ldr r3, [sp, #0x5c]
+ str r0, [sp]
+ str r6, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, sp, #0xb0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD11_02246274
+_021F38A0:
+ ldr r1, [sp, #0xb0]
+ mov r0, #8
+ tst r0, r1
+ bne _021F38AE
+ add sp, #0xb4
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021F38AE:
+ mov r0, #0
+ str r0, [sp, #0xb0]
+ ldr r1, [sp, #0x34]
+ ldr r0, _021F3B80 ; =0x00002D8C
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021F38D6
+ ldr r0, [sp, #0x18]
+ ldr r3, [sp, #0x5c]
+ str r0, [sp]
+ str r4, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, sp, #0xb0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD11_02246274
+_021F38D6:
+ ldr r1, [sp, #0xb0]
+ mov r0, #8
+ tst r0, r1
+ bne _021F38E4
+ add sp, #0xb4
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021F38E4:
+ ldr r0, [sp, #0x3c]
+ add r0, r0, #2
+ str r0, [sp, #0x3c]
+ ldr r0, [sp, #0x6c]
+ add r0, r0, #1
+ str r0, [sp, #0x6c]
+ cmp r0, #4
+ blt _021F384E
+ ldr r0, [sp, #0x54]
+ cmp r0, #2
+ bge _021F3900
+ add sp, #0xb4
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021F3900:
+ ldr r0, [sp, #0x18]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x64]
+ ldr r0, [sp, #0x14]
+ bl MOD11_0222FF74
+ mov r1, #0x10
+ tst r0, r1
+ bne _021F3920
+ ldr r0, [sp, #0x14]
+ bl MOD11_0222FF74
+ mov r1, #8
+ tst r0, r1
+ beq _021F3926
+_021F3920:
+ ldr r0, [sp, #0x64]
+ str r0, [sp, #0x60]
+ b _021F3934
+_021F3926:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ bl MOD11_022302BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x60]
+_021F3934:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ bl MOD11_0222FFC8
+ str r0, [sp, #0x58]
+ mov r0, #0
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x58]
+ cmp r0, #0
+ bgt _021F394A
+ b _021F3B24
+_021F394A:
+ ldr r0, [sp, #0x64]
+ add r0, r5, r0
+ str r0, [sp, #0x44]
+ ldr r0, [sp, #0x60]
+ add r0, r5, r0
+ str r0, [sp, #0x40]
+_021F3956:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x2c]
+ bl MOD11_02230014
+ mov r1, #0xa2
+ mov r2, #0
+ str r0, [sp, #0x50]
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F39BC
+ ldr r0, [sp, #0x50]
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F39BC
+ ldr r0, [sp, #0x50]
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, _021F3B84 ; =0x000001EE
+ cmp r0, r1
+ beq _021F39BC
+ ldr r0, _021F3B88 ; =0x0000219C
+ ldr r1, [sp, #0x44]
+ ldrb r2, [r1, r0]
+ ldr r1, [sp, #0x2c]
+ cmp r1, r2
+ beq _021F39BC
+ ldr r1, [sp, #0x40]
+ ldrb r2, [r1, r0]
+ ldr r1, [sp, #0x2c]
+ cmp r1, r2
+ beq _021F39BC
+ add r2, r0, #0
+ ldr r1, [sp, #0x44]
+ add r2, #8
+ ldrb r2, [r1, r2]
+ ldr r1, [sp, #0x2c]
+ cmp r1, r2
+ beq _021F39BC
+ ldr r1, [sp, #0x40]
+ add r0, #8
+ ldrb r1, [r1, r0]
+ ldr r0, [sp, #0x2c]
+ cmp r0, r1
+ bne _021F39BE
+_021F39BC:
+ b _021F3B16
+_021F39BE:
+ mov r0, #0
+ str r0, [sp, #0x68]
+_021F39C2:
+ ldr r1, [sp, #0x68]
+ ldr r0, [sp, #0x50]
+ add r1, #0x36
+ mov r2, #0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x50]
+ add r1, r5, #0
+ add r3, r7, #0
+ bl MOD16_021F3454
+ str r0, [sp, #0x24]
+ cmp r7, #0
+ beq _021F39F0
+ lsl r0, r7, #4
+ add r1, r5, r0
+ ldr r0, _021F3B7C ; =0x000003E1
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _021F39F2
+_021F39F0:
+ b _021F3B0A
+_021F39F2:
+ mov r0, #0
+ str r0, [sp, #0xb0]
+ ldr r1, [sp, #0x38]
+ ldr r0, _021F3B80 ; =0x00002D8C
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021F3A58
+ ldr r0, [sp, #0x50]
+ mov r1, #0xa
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0x70]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD11_02246D1C
+ str r0, [sp, #0x74]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD11_02249D90
+ str r0, [sp, #0x78]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ str r0, [sp, #0x7c]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0x1c
+ mov r3, #0
+ bl MOD11_02243420
+ ldr r1, [sp, #0x74]
+ ldr r2, [sp, #0x24]
+ str r1, [sp]
+ ldr r1, [sp, #0x78]
+ ldr r3, [sp, #0x70]
+ str r1, [sp, #4]
+ ldr r1, [sp, #0x7c]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, sp, #0xb0
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD11_022465A0
+_021F3A58:
+ ldr r1, [sp, #0xb0]
+ mov r0, #2
+ tst r0, r1
+ beq _021F3A7E
+ bl FUN_0201B9EC
+ mov r1, #3
+ bl _s32_div_f
+ cmp r1, #2
+ bge _021F3A7E
+ ldr r0, [sp, #0x18]
+ ldr r1, _021F3B8C ; =0x000021A4
+ add r2, r5, r0
+ ldr r0, [sp, #0x2c]
+ add sp, #0xb4
+ strb r0, [r2, r1]
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021F3A7E:
+ mov r0, #0
+ str r0, [sp, #0xb0]
+ ldr r1, [sp, #0x34]
+ ldr r0, _021F3B80 ; =0x00002D8C
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021F3AE4
+ ldr r0, [sp, #0x50]
+ mov r1, #0xa
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0x80]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD11_02246D1C
+ str r0, [sp, #0x84]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD11_02249D90
+ str r0, [sp, #0x88]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ str r0, [sp, #0x8c]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x1c
+ mov r3, #0
+ bl MOD11_02243420
+ ldr r1, [sp, #0x84]
+ ldr r2, [sp, #0x24]
+ str r1, [sp]
+ ldr r1, [sp, #0x88]
+ ldr r3, [sp, #0x80]
+ str r1, [sp, #4]
+ ldr r1, [sp, #0x8c]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, sp, #0xb0
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD11_022465A0
+_021F3AE4:
+ ldr r1, [sp, #0xb0]
+ mov r0, #2
+ tst r0, r1
+ beq _021F3B0A
+ bl FUN_0201B9EC
+ mov r1, #3
+ bl _s32_div_f
+ cmp r1, #2
+ bge _021F3B0A
+ ldr r0, [sp, #0x18]
+ ldr r1, _021F3B8C ; =0x000021A4
+ add r2, r5, r0
+ ldr r0, [sp, #0x2c]
+ add sp, #0xb4
+ strb r0, [r2, r1]
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021F3B0A:
+ ldr r0, [sp, #0x68]
+ add r0, r0, #1
+ str r0, [sp, #0x68]
+ cmp r0, #4
+ bge _021F3B16
+ b _021F39C2
+_021F3B16:
+ ldr r0, [sp, #0x2c]
+ add r1, r0, #1
+ ldr r0, [sp, #0x58]
+ str r1, [sp, #0x2c]
+ cmp r1, r0
+ bge _021F3B24
+ b _021F3956
+_021F3B24:
+ mov r0, #0
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x58]
+ cmp r0, #0
+ bgt _021F3B30
+ b _021F3D2A
+_021F3B30:
+ ldr r0, [sp, #0x64]
+ add r0, r5, r0
+ str r0, [sp, #0x4c]
+ ldr r0, [sp, #0x60]
+ add r0, r5, r0
+ str r0, [sp, #0x48]
+_021F3B3C:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x30]
+ bl MOD11_02230014
+ mov r1, #0xa2
+ mov r2, #0
+ str r0, [sp, #0x20]
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F3BBE
+ ldr r0, [sp, #0x20]
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F3BBE
+ ldr r0, [sp, #0x20]
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, _021F3B84 ; =0x000001EE
+ cmp r0, r1
+ beq _021F3BBE
+ ldr r0, _021F3B88 ; =0x0000219C
+ b _021F3B90
+ nop
+_021F3B78: .word 0x00002D4C
+_021F3B7C: .word 0x000003E1
+_021F3B80: .word 0x00002D8C
+_021F3B84: .word 0x000001EE
+_021F3B88: .word 0x0000219C
+_021F3B8C: .word 0x000021A4
+_021F3B90:
+ ldr r1, [sp, #0x4c]
+ ldrb r2, [r1, r0]
+ ldr r1, [sp, #0x30]
+ cmp r1, r2
+ beq _021F3BBE
+ ldr r1, [sp, #0x48]
+ ldrb r2, [r1, r0]
+ ldr r1, [sp, #0x30]
+ cmp r1, r2
+ beq _021F3BBE
+ add r2, r0, #0
+ ldr r1, [sp, #0x4c]
+ add r2, #8
+ ldrb r2, [r1, r2]
+ ldr r1, [sp, #0x30]
+ cmp r1, r2
+ beq _021F3BBE
+ ldr r1, [sp, #0x48]
+ add r0, #8
+ ldrb r1, [r1, r0]
+ ldr r0, [sp, #0x30]
+ cmp r0, r1
+ bne _021F3BC0
+_021F3BBE:
+ b _021F3D1C
+_021F3BC0:
+ mov r0, #0
+ str r0, [sp, #0x1c]
+_021F3BC4:
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x20]
+ add r1, #0x36
+ mov r2, #0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x20]
+ add r1, r5, #0
+ add r3, r7, #0
+ bl MOD16_021F3454
+ str r0, [sp, #0x28]
+ cmp r7, #0
+ beq _021F3BF2
+ lsl r0, r7, #4
+ add r1, r5, r0
+ ldr r0, _021F3D30 ; =0x000003E1
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _021F3BF4
+_021F3BF2:
+ b _021F3D10
+_021F3BF4:
+ mov r0, #0
+ str r0, [sp, #0xb0]
+ ldr r1, [sp, #0x38]
+ ldr r0, _021F3D34 ; =0x00002D8C
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021F3C5A
+ ldr r0, [sp, #0x20]
+ mov r1, #0xa
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0x90]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD11_02246D1C
+ str r0, [sp, #0x94]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD11_02249D90
+ str r0, [sp, #0x98]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ str r0, [sp, #0x9c]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0x1c
+ mov r3, #0
+ bl MOD11_02243420
+ ldr r1, [sp, #0x94]
+ ldr r2, [sp, #0x28]
+ str r1, [sp]
+ ldr r1, [sp, #0x98]
+ ldr r3, [sp, #0x90]
+ str r1, [sp, #4]
+ ldr r1, [sp, #0x9c]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, sp, #0xb0
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD11_022465A0
+_021F3C5A:
+ ldr r0, [sp, #0xb0]
+ cmp r0, #0
+ bne _021F3C82
+ bl FUN_0201B9EC
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x1f
+ sub r2, r2, r1
+ mov r0, #0x1f
+ ror r2, r0
+ add r0, r1, r2
+ bne _021F3C82
+ ldr r0, [sp, #0x18]
+ ldr r1, _021F3D38 ; =0x000021A4
+ add r2, r5, r0
+ ldr r0, [sp, #0x30]
+ add sp, #0xb4
+ strb r0, [r2, r1]
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021F3C82:
+ mov r0, #0
+ str r0, [sp, #0xb0]
+ ldr r1, [sp, #0x34]
+ ldr r0, _021F3D34 ; =0x00002D8C
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _021F3CE8
+ ldr r0, [sp, #0x20]
+ mov r1, #0xa
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0xa0]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD11_02246D1C
+ str r0, [sp, #0xa4]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD11_02249D90
+ str r0, [sp, #0xa8]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ str r0, [sp, #0xac]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x1c
+ mov r3, #0
+ bl MOD11_02243420
+ ldr r1, [sp, #0xa4]
+ ldr r2, [sp, #0x28]
+ str r1, [sp]
+ ldr r1, [sp, #0xa8]
+ ldr r3, [sp, #0xa0]
+ str r1, [sp, #4]
+ ldr r1, [sp, #0xac]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, sp, #0xb0
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD11_022465A0
+_021F3CE8:
+ ldr r0, [sp, #0xb0]
+ cmp r0, #0
+ bne _021F3D10
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ bne _021F3D10
+ ldr r0, [sp, #0x18]
+ ldr r1, _021F3D38 ; =0x000021A4
+ add r2, r5, r0
+ ldr r0, [sp, #0x30]
+ add sp, #0xb4
+ strb r0, [r2, r1]
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021F3D10:
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ cmp r0, #4
+ bge _021F3D1C
+ b _021F3BC4
+_021F3D1C:
+ ldr r0, [sp, #0x30]
+ add r1, r0, #1
+ ldr r0, [sp, #0x58]
+ str r1, [sp, #0x30]
+ cmp r1, r0
+ bge _021F3D2A
+ b _021F3B3C
+_021F3D2A:
+ mov r0, #0
+ add sp, #0xb4
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F3D30: .word 0x000003E1
+_021F3D34: .word 0x00002D8C
+_021F3D38: .word 0x000021A4
+ thumb_func_end MOD16_021F3810
+
+ thumb_func_start MOD16_021F3D3C
+MOD16_021F3D3C: ; 0x021F3D3C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r4, r2, #0
+ add r5, r1, #0
+ add r1, r4, #0
+ add r6, r0, #0
+ str r3, [sp, #0x10]
+ bl MOD11_02230260
+ mov r1, #1
+ eor r0, r1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ add r0, r6, #0
+ bl MOD11_0223022C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x24]
+ bl FUN_0206A92C
+ ldr r1, _021F3E88 ; =0x00003108
+ ldrb r1, [r5, r1]
+ tst r0, r1
+ bne _021F3DE2
+ mov r0, #0
+ str r0, [sp, #0x28]
+ mov r0, #0xc0
+ mul r0, r4
+ add r7, r5, r0
+_021F3D78:
+ ldr r0, _021F3E8C ; =0x00002D4C
+ add r1, r5, #0
+ ldrh r0, [r7, r0]
+ add r2, r4, #0
+ str r0, [sp, #0x20]
+ ldr r3, [sp, #0x20]
+ add r0, r6, #0
+ bl MOD16_021F32DC
+ add r3, r0, #0
+ ldr r0, [sp, #0x20]
+ cmp r0, #0
+ beq _021F3DD6
+ mov r0, #0
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x24]
+ str r4, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, sp, #0x2c
+ str r0, [sp, #0xc]
+ ldr r2, [sp, #0x20]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD11_02246274
+ ldr r1, [sp, #0x2c]
+ mov r0, #2
+ tst r0, r1
+ beq _021F3DD6
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ beq _021F3DC2
+ add sp, #0x30
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3DC2:
+ bl FUN_0201B9EC
+ mov r1, #0xa
+ bl _s32_div_f
+ cmp r1, #0
+ beq _021F3DD6
+ add sp, #0x30
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3DD6:
+ ldr r0, [sp, #0x28]
+ add r7, r7, #2
+ add r0, r0, #1
+ str r0, [sp, #0x28]
+ cmp r0, #4
+ blt _021F3D78
+_021F3DE2:
+ add r0, r6, #0
+ bl MOD11_0222FF74
+ mov r1, #2
+ tst r0, r1
+ bne _021F3DF4
+ add sp, #0x30
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3DF4:
+ ldr r1, [sp, #0x24]
+ add r0, r6, #0
+ bl MOD11_022302BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x1c]
+ bl FUN_0206A92C
+ ldr r1, _021F3E88 ; =0x00003108
+ ldrb r1, [r5, r1]
+ tst r0, r1
+ bne _021F3E82
+ mov r0, #0
+ str r0, [sp, #0x18]
+ mov r0, #0xc0
+ mul r0, r4
+ add r7, r5, r0
+_021F3E18:
+ ldr r0, _021F3E8C ; =0x00002D4C
+ add r1, r5, #0
+ ldrh r0, [r7, r0]
+ add r2, r4, #0
+ str r0, [sp, #0x14]
+ ldr r3, [sp, #0x14]
+ add r0, r6, #0
+ bl MOD16_021F32DC
+ add r3, r0, #0
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _021F3E76
+ mov r0, #0
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x1c]
+ str r4, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, sp, #0x2c
+ str r0, [sp, #0xc]
+ ldr r2, [sp, #0x14]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD11_02246274
+ ldr r1, [sp, #0x2c]
+ mov r0, #2
+ tst r0, r1
+ beq _021F3E76
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ beq _021F3E62
+ add sp, #0x30
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3E62:
+ bl FUN_0201B9EC
+ mov r1, #0xa
+ bl _s32_div_f
+ cmp r1, #0
+ beq _021F3E76
+ add sp, #0x30
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F3E76:
+ ldr r0, [sp, #0x18]
+ add r7, r7, #2
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ cmp r0, #4
+ blt _021F3E18
+_021F3E82:
+ mov r0, #0
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F3E88: .word 0x00003108
+_021F3E8C: .word 0x00002D4C
+ thumb_func_end MOD16_021F3D3C
+
+ thumb_func_start MOD16_021F3E90
+MOD16_021F3E90: ; 0x021F3E90
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r3, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ bl MOD16_021F3D3C
+ cmp r0, #0
+ beq _021F3EB8
+ bl FUN_0201B9EC
+ mov r1, #3
+ bl _s32_div_f
+ cmp r1, #0
+ beq _021F3EB8
+ add sp, #0x14
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021F3EB8:
+ ldr r0, [sp, #8]
+ lsl r1, r0, #1
+ ldr r0, [sp, #4]
+ add r1, r0, r1
+ ldr r0, _021F3FF4 ; =0x00003064
+ ldrh r0, [r1, r0]
+ cmp r0, #0
+ bne _021F3ECE
+ add sp, #0x14
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021F3ECE:
+ lsl r1, r0, #4
+ ldr r0, [sp, #4]
+ add r2, r0, r1
+ ldr r0, _021F3FF8 ; =0x000003E1
+ ldrb r1, [r2, r0]
+ cmp r1, #0
+ bne _021F3EE2
+ add sp, #0x14
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021F3EE2:
+ add r0, r0, #1
+ ldrb r0, [r2, r0]
+ cmp r0, #0xa
+ bne _021F3EF0
+ mov r0, #0x12
+ str r0, [sp, #0x10]
+ b _021F3F0A
+_021F3EF0:
+ cmp r0, #0xb
+ bne _021F3EFA
+ mov r0, #0xb
+ str r0, [sp, #0x10]
+ b _021F3F0A
+_021F3EFA:
+ cmp r0, #0xd
+ bne _021F3F04
+ mov r0, #0xa
+ str r0, [sp, #0x10]
+ b _021F3F0A
+_021F3F04:
+ add sp, #0x14
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021F3F0A:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ bl MOD11_02246D1C
+ ldr r1, [sp, #0x10]
+ cmp r1, r0
+ bne _021F3F1E
+ add sp, #0x14
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021F3F1E:
+ ldr r0, [sp, #8]
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, [sp]
+ bl MOD11_0222FF74
+ mov r1, #0x10
+ tst r0, r1
+ bne _021F3F3C
+ ldr r0, [sp]
+ bl MOD11_0222FF74
+ mov r1, #8
+ tst r0, r1
+ beq _021F3F40
+_021F3F3C:
+ add r6, r4, #0
+ b _021F3F4C
+_021F3F40:
+ ldr r0, [sp]
+ ldr r1, [sp, #8]
+ bl MOD11_022302BC
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+_021F3F4C:
+ ldr r0, [sp]
+ ldr r1, [sp, #8]
+ bl MOD11_0222FFC8
+ mov r5, #0
+ str r0, [sp, #0xc]
+ cmp r0, #0
+ ble _021F3FEE
+ ldr r0, [sp, #4]
+ add r7, r0, r4
+ add r6, r0, r6
+_021F3F62:
+ ldr r0, [sp]
+ ldr r1, [sp, #8]
+ add r2, r5, #0
+ bl MOD11_02230014
+ mov r1, #0xa2
+ mov r2, #0
+ add r4, r0, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F3FE6
+ add r0, r4, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F3FE6
+ add r0, r4, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, _021F3FFC ; =0x000001EE
+ cmp r0, r1
+ beq _021F3FE6
+ ldr r0, _021F4000 ; =0x0000219C
+ ldrb r0, [r7, r0]
+ cmp r5, r0
+ beq _021F3FE6
+ ldr r0, _021F4000 ; =0x0000219C
+ ldrb r0, [r6, r0]
+ cmp r5, r0
+ beq _021F3FE6
+ ldr r0, _021F4004 ; =0x000021A4
+ ldrb r0, [r7, r0]
+ cmp r5, r0
+ beq _021F3FE6
+ ldr r0, _021F4004 ; =0x000021A4
+ ldrb r0, [r6, r0]
+ cmp r5, r0
+ beq _021F3FE6
+ add r0, r4, #0
+ mov r1, #0xa
+ mov r2, #0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r0, [sp, #0x10]
+ cmp r0, r1
+ bne _021F3FE6
+ bl FUN_0201B9EC
+ mov r1, #1
+ tst r0, r1
+ beq _021F3FE6
+ ldr r1, [sp, #4]
+ ldr r0, [sp, #8]
+ add sp, #0x14
+ add r1, r1, r0
+ ldr r0, _021F4004 ; =0x000021A4
+ strb r5, [r1, r0]
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021F3FE6:
+ ldr r0, [sp, #0xc]
+ add r5, r5, #1
+ cmp r5, r0
+ blt _021F3F62
+_021F3FEE:
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F3FF4: .word 0x00003064
+_021F3FF8: .word 0x000003E1
+_021F3FFC: .word 0x000001EE
+_021F4000: .word 0x0000219C
+_021F4004: .word 0x000021A4
+ thumb_func_end MOD16_021F3E90
+
+ thumb_func_start MOD16_021F4008
+MOD16_021F4008: ; 0x021F4008
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x60
+ add r5, r1, #0
+ add r1, r2, #0
+ lsl r6, r1, #1
+ str r3, [sp, #0x1c]
+ ldr r1, _021F424C ; =0x00003064
+ add r3, r5, r6
+ str r2, [sp, #0x18]
+ ldrh r2, [r3, r1]
+ str r0, [sp, #0x14]
+ cmp r2, #0
+ beq _021F402A
+ add r1, #8
+ ldrh r1, [r3, r1]
+ cmp r1, #0xff
+ bne _021F4030
+_021F402A:
+ add sp, #0x60
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4030:
+ lsl r1, r2, #4
+ add r2, r5, r1
+ ldr r1, _021F4250 ; =0x000003E1
+ ldrb r1, [r2, r1]
+ cmp r1, #0
+ bne _021F4042
+ add sp, #0x60
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4042:
+ ldr r1, [sp, #0x18]
+ lsl r1, r1, #0x18
+ lsr r4, r1, #0x18
+ bl MOD11_0222FF74
+ mov r1, #0x10
+ tst r0, r1
+ bne _021F405E
+ ldr r0, [sp, #0x14]
+ bl MOD11_0222FF74
+ mov r1, #8
+ tst r0, r1
+ beq _021F4062
+_021F405E:
+ add r7, r4, #0
+ b _021F406E
+_021F4062:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ bl MOD11_022302BC
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+_021F406E:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ bl MOD11_0222FFC8
+ str r0, [sp, #0x30]
+ mov r0, #0
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x30]
+ cmp r0, #0
+ bgt _021F4084
+ b _021F4246
+_021F4084:
+ add r0, r5, r4
+ str r0, [sp, #0x2c]
+ add r0, r5, r7
+ str r0, [sp, #0x28]
+ add r0, sp, #0x68
+ ldrb r0, [r0, #0x10]
+ add r4, r5, r6
+ str r0, [sp, #0x24]
+_021F4094:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x34]
+ bl MOD11_02230014
+ mov r1, #0xa2
+ mov r2, #0
+ add r6, r0, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F40FA
+ add r0, r6, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F40FA
+ add r0, r6, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, _021F4254 ; =0x000001EE
+ cmp r0, r1
+ beq _021F40FA
+ ldr r0, _021F4258 ; =0x0000219C
+ ldr r1, [sp, #0x2c]
+ ldrb r2, [r1, r0]
+ ldr r1, [sp, #0x34]
+ cmp r1, r2
+ beq _021F40FA
+ ldr r1, [sp, #0x28]
+ ldrb r2, [r1, r0]
+ ldr r1, [sp, #0x34]
+ cmp r1, r2
+ beq _021F40FA
+ add r2, r0, #0
+ ldr r1, [sp, #0x2c]
+ add r2, #8
+ ldrb r2, [r1, r2]
+ ldr r1, [sp, #0x34]
+ cmp r1, r2
+ beq _021F40FA
+ ldr r1, [sp, #0x28]
+ add r0, #8
+ ldrb r1, [r1, r0]
+ ldr r0, [sp, #0x34]
+ cmp r0, r1
+ bne _021F40FC
+_021F40FA:
+ b _021F4238
+_021F40FC:
+ mov r0, #0
+ str r0, [sp, #0x5c]
+ ldr r3, _021F425C ; =0x0000306C
+ ldr r0, [sp, #0x14]
+ ldrh r2, [r4, r3]
+ sub r3, #8
+ ldrh r3, [r4, r3]
+ add r1, r5, #0
+ bl MOD16_021F32DC
+ ldr r1, _021F425C ; =0x0000306C
+ str r0, [sp, #0x38]
+ ldrh r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD11_02246D1C
+ str r0, [sp, #0x3c]
+ add r0, r6, #0
+ mov r1, #0xa
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0x40]
+ add r0, r6, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ add r0, r5, #0
+ lsr r1, r1, #0x10
+ mov r2, #1
+ bl MOD11_0224C12C
+ str r0, [sp, #0x44]
+ add r0, r6, #0
+ mov r1, #0xb0
+ mov r2, #0
+ bl FUN_020671BC
+ add r7, r0, #0
+ add r0, r6, #0
+ mov r1, #0xb1
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, [sp, #0x40]
+ ldr r2, [sp, #0x38]
+ str r1, [sp]
+ ldr r1, [sp, #0x44]
+ ldr r3, [sp, #0x3c]
+ str r1, [sp, #4]
+ str r7, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, sp, #0x5c
+ str r0, [sp, #0x10]
+ ldr r1, _021F424C ; =0x00003064
+ add r0, r5, #0
+ ldrh r1, [r4, r1]
+ bl MOD11_022465A0
+ ldr r1, [sp, #0x5c]
+ ldr r0, [sp, #0x1c]
+ tst r0, r1
+ beq _021F4238
+ mov r7, #0
+_021F4182:
+ add r1, r7, #0
+ add r0, r6, #0
+ add r1, #0x36
+ mov r2, #0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x14]
+ ldr r3, [sp, #0x20]
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD16_021F3454
+ str r0, [sp, #0x48]
+ ldr r0, [sp, #0x20]
+ cmp r0, #0
+ beq _021F4232
+ mov r0, #0
+ str r0, [sp, #0x5c]
+ add r0, r6, #0
+ mov r1, #0xa
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, _021F425C ; =0x0000306C
+ str r0, [sp, #0x4c]
+ ldrh r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD11_02246D1C
+ ldr r1, _021F425C ; =0x0000306C
+ str r0, [sp, #0x50]
+ ldrh r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD11_02249D90
+ ldr r1, _021F425C ; =0x0000306C
+ str r0, [sp, #0x54]
+ ldrh r1, [r4, r1]
+ add r0, r5, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ ldr r1, _021F425C ; =0x0000306C
+ str r0, [sp, #0x58]
+ ldrh r1, [r4, r1]
+ add r0, r5, #0
+ mov r2, #0x1c
+ mov r3, #0
+ bl MOD11_02243420
+ ldr r1, [sp, #0x50]
+ ldr r2, [sp, #0x48]
+ str r1, [sp]
+ ldr r1, [sp, #0x54]
+ ldr r3, [sp, #0x4c]
+ str r1, [sp, #4]
+ ldr r1, [sp, #0x58]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, sp, #0x5c
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x20]
+ add r0, r5, #0
+ bl MOD11_022465A0
+ ldr r1, [sp, #0x5c]
+ mov r0, #2
+ tst r0, r1
+ beq _021F4232
+ bl FUN_0201B9EC
+ ldr r1, [sp, #0x24]
+ bl _s32_div_f
+ cmp r1, #0
+ bne _021F4232
+ ldr r0, [sp, #0x18]
+ ldr r1, _021F4260 ; =0x000021A4
+ add r2, r5, r0
+ ldr r0, [sp, #0x34]
+ add sp, #0x60
+ strb r0, [r2, r1]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4232:
+ add r7, r7, #1
+ cmp r7, #4
+ blt _021F4182
+_021F4238:
+ ldr r0, [sp, #0x34]
+ add r1, r0, #1
+ ldr r0, [sp, #0x30]
+ str r1, [sp, #0x34]
+ cmp r1, r0
+ bge _021F4246
+ b _021F4094
+_021F4246:
+ mov r0, #0
+ add sp, #0x60
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F424C: .word 0x00003064
+_021F4250: .word 0x000003E1
+_021F4254: .word 0x000001EE
+_021F4258: .word 0x0000219C
+_021F425C: .word 0x0000306C
+_021F4260: .word 0x000021A4
+ thumb_func_end MOD16_021F4008
+
+ thumb_func_start MOD16_021F4264
+MOD16_021F4264: ; 0x021F4264
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp, #4]
+ add r4, r2, #0
+ mov r0, #0xc0
+ add r5, r1, #0
+ mul r0, r4
+ add r1, r5, r0
+ ldr r0, _021F4340 ; =0x00002DAC
+ ldr r1, [r1, r0]
+ mov r0, #7
+ tst r0, r1
+ beq _021F429E
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD11_02246D1C
+ cmp r0, #0x1e
+ bne _021F429E
+ mov r0, #0xc0
+ mul r0, r4
+ add r2, r5, r0
+ ldr r0, _021F4344 ; =0x00002D8C
+ ldr r1, [r2, r0]
+ add r0, r0, #4
+ ldr r0, [r2, r0]
+ lsr r0, r0, #1
+ cmp r1, r0
+ bhs _021F42A4
+_021F429E:
+ add sp, #8
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F42A4:
+ ldr r0, _021F4348 ; =0x00003064
+ lsl r7, r4, #1
+ add r6, r5, r0
+ ldrh r0, [r6, r7]
+ cmp r0, #0
+ bne _021F42C8
+ bl FUN_0201B9EC
+ mov r1, #1
+ tst r0, r1
+ beq _021F42C8
+ ldr r0, _021F434C ; =0x000021A4
+ mov r3, #6
+ add r2, r5, r4
+ strb r3, [r2, r0]
+ add sp, #8
+ add r0, r1, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F42C8:
+ ldrh r0, [r6, r7]
+ lsl r0, r0, #4
+ add r1, r5, r0
+ ldr r0, _021F4350 ; =0x000003E1
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _021F42EE
+ bl FUN_0201B9EC
+ mov r1, #1
+ tst r0, r1
+ beq _021F42EE
+ ldr r0, _021F434C ; =0x000021A4
+ mov r3, #6
+ add r2, r5, r4
+ strb r3, [r2, r0]
+ add sp, #8
+ add r0, r1, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F42EE:
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r1, r5, #0
+ add r2, r4, #0
+ mov r3, #8
+ bl MOD16_021F4008
+ cmp r0, #0
+ beq _021F4308
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4308:
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r1, r5, #0
+ add r2, r4, #0
+ mov r3, #4
+ bl MOD16_021F4008
+ cmp r0, #0
+ beq _021F4322
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4322:
+ bl FUN_0201B9EC
+ mov r1, #1
+ tst r0, r1
+ beq _021F433A
+ ldr r0, _021F434C ; =0x000021A4
+ mov r3, #6
+ add r2, r5, r4
+ strb r3, [r2, r0]
+ add sp, #8
+ add r0, r1, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F433A:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021F4340: .word 0x00002DAC
+_021F4344: .word 0x00002D8C
+_021F4348: .word 0x00003064
+_021F434C: .word 0x000021A4
+_021F4350: .word 0x000003E1
+ thumb_func_end MOD16_021F4264
+
+ thumb_func_start MOD16_021F4354
+MOD16_021F4354: ; 0x021F4354
+ push {r3, r4}
+ mov r4, #0xc0
+ mul r4, r2
+ mov r3, #0
+ ldr r2, _021F4388 ; =0x00002D58
+ add r0, r3, #0
+ add r4, r1, r4
+_021F4362:
+ ldrsb r1, [r4, r2]
+ cmp r1, #6
+ ble _021F4370
+ sub r1, r1, #6
+ add r1, r3, r1
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+_021F4370:
+ add r0, r0, #1
+ add r4, r4, #1
+ cmp r0, #8
+ blt _021F4362
+ cmp r3, #4
+ blo _021F4382
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_021F4382:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+_021F4388: .word 0x00002D58
+ thumb_func_end MOD16_021F4354
+
+ thumb_func_start MOD16_021F438C
+MOD16_021F438C: ; 0x021F438C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r2, #0
+ mov r2, #0xc0
+ add r3, r6, #0
+ mul r3, r2
+ add r2, r1, #0
+ add r5, r2, r3
+ ldr r2, _021F4590 ; =0x00002DB0
+ ldr r3, _021F4594 ; =0x0400E000
+ ldr r4, [r5, r2]
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ tst r4, r3
+ bne _021F440C
+ add r2, #0x10
+ ldr r4, [r5, r2]
+ lsr r2, r3, #0x10
+ tst r2, r4
+ bne _021F440C
+ mov r2, #0x17
+ str r2, [sp]
+ mov r2, #2
+ add r3, r6, #0
+ bl MOD11_02246870
+ cmp r0, #0
+ bne _021F440C
+ mov r0, #0x47
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ mov r2, #2
+ add r3, r6, #0
+ bl MOD11_02246870
+ cmp r0, #0
+ bne _021F440C
+ mov r0, #0x2a
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ mov r2, #6
+ add r3, r6, #0
+ bl MOD11_02246870
+ cmp r0, #0
+ beq _021F4412
+ ldr r0, [sp, #8]
+ add r1, r6, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ cmp r0, #8
+ beq _021F440C
+ ldr r0, [sp, #8]
+ add r1, r6, #0
+ mov r2, #0x1c
+ mov r3, #0
+ bl MOD11_02243420
+ cmp r0, #8
+ bne _021F4412
+_021F440C:
+ add sp, #0x18
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4412:
+ mov r0, #0
+ str r0, [sp, #0x14]
+ lsl r0, r6, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, [sp, #4]
+ bl MOD11_0222FF74
+ mov r1, #0x10
+ tst r0, r1
+ bne _021F4432
+ ldr r0, [sp, #4]
+ bl MOD11_0222FF74
+ mov r1, #8
+ tst r0, r1
+ beq _021F4436
+_021F4432:
+ add r7, r4, #0
+ b _021F4442
+_021F4436:
+ ldr r0, [sp, #4]
+ add r1, r6, #0
+ bl MOD11_022302BC
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+_021F4442:
+ ldr r0, [sp, #4]
+ add r1, r6, #0
+ bl MOD11_0222FFC8
+ mov r5, #0
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ ble _021F44C2
+ ldr r0, [sp, #8]
+ add r0, r0, r4
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #8]
+ add r7, r0, r7
+_021F445C:
+ ldr r0, [sp, #4]
+ add r1, r6, #0
+ add r2, r5, #0
+ bl MOD11_02230014
+ mov r1, #0xa2
+ mov r2, #0
+ add r4, r0, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F44BA
+ add r0, r4, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F44BA
+ add r0, r4, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, _021F4598 ; =0x000001EE
+ cmp r0, r1
+ beq _021F44BA
+ ldr r1, [sp, #0xc]
+ ldr r0, _021F459C ; =0x0000219C
+ ldrb r0, [r1, r0]
+ cmp r5, r0
+ beq _021F44BA
+ ldr r0, _021F459C ; =0x0000219C
+ ldrb r0, [r7, r0]
+ cmp r5, r0
+ beq _021F44BA
+ ldr r0, _021F45A0 ; =0x000021A4
+ ldrb r0, [r1, r0]
+ cmp r5, r0
+ beq _021F44BA
+ ldr r0, _021F45A0 ; =0x000021A4
+ ldrb r0, [r7, r0]
+ cmp r5, r0
+ beq _021F44BA
+ ldr r0, [sp, #0x14]
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+_021F44BA:
+ ldr r0, [sp, #0x10]
+ add r5, r5, #1
+ cmp r5, r0
+ blt _021F445C
+_021F44C2:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _021F4588
+ ldr r0, [sp, #8]
+ add r1, r6, #0
+ bl MOD16_021F3614
+ cmp r0, #0
+ beq _021F44DA
+ add sp, #0x18
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F44DA:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ add r2, r6, #0
+ bl MOD16_021F364C
+ cmp r0, #0
+ beq _021F44EE
+ add sp, #0x18
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F44EE:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ add r2, r6, #0
+ bl MOD16_021F3810
+ cmp r0, #0
+ beq _021F4502
+ add sp, #0x18
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4502:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ add r2, r6, #0
+ bl MOD16_021F3E90
+ cmp r0, #0
+ beq _021F4516
+ add sp, #0x18
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4516:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ add r2, r6, #0
+ bl MOD16_021F4264
+ cmp r0, #0
+ beq _021F452A
+ add sp, #0x18
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F452A:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ add r2, r6, #0
+ mov r3, #0
+ bl MOD16_021F3D3C
+ cmp r0, #0
+ beq _021F4540
+ add sp, #0x18
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4540:
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ add r2, r6, #0
+ bl MOD16_021F4354
+ cmp r0, #0
+ beq _021F4554
+ add sp, #0x18
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4554:
+ mov r0, #2
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ add r2, r6, #0
+ mov r3, #8
+ bl MOD16_021F4008
+ cmp r0, #0
+ beq _021F456E
+ add sp, #0x18
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F456E:
+ mov r0, #3
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ add r2, r6, #0
+ mov r3, #4
+ bl MOD16_021F4008
+ cmp r0, #0
+ beq _021F4588
+ add sp, #0x18
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4588:
+ mov r0, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F4590: .word 0x00002DB0
+_021F4594: .word 0x0400E000
+_021F4598: .word 0x000001EE
+_021F459C: .word 0x0000219C
+_021F45A0: .word 0x000021A4
+ thumb_func_end MOD16_021F438C
+
+ thumb_func_start MOD16_021F45A4
+MOD16_021F45A4: ; 0x021F45A4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r1, #0
+ add r1, r0, #0
+ str r0, [sp]
+ ldr r5, [r1, #0x30]
+ bl MOD11_0222FF74
+ add r6, r0, #0
+ mov r0, #1
+ tst r0, r6
+ bne _021F45C8
+ ldr r0, [sp]
+ add r1, r7, #0
+ bl MOD11_02230270
+ cmp r0, #0
+ bne _021F4688
+_021F45C8:
+ ldr r0, [sp]
+ add r1, r5, #0
+ add r2, r7, #0
+ bl MOD16_021F438C
+ cmp r0, #0
+ beq _021F4676
+ ldr r0, _021F4690 ; =0x000021A4
+ add r0, r5, r0
+ str r0, [sp, #0x10]
+ ldrb r0, [r0, r7]
+ cmp r0, #6
+ bne _021F4670
+ ldr r0, [sp]
+ add r1, r7, #0
+ bl MOD16_021F4698
+ add r4, r0, #0
+ cmp r4, #6
+ bne _021F466C
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ mov r0, #0x10
+ tst r0, r6
+ bne _021F4602
+ mov r0, #8
+ tst r0, r6
+ beq _021F4608
+_021F4602:
+ ldr r0, [sp, #0xc]
+ str r0, [sp, #8]
+ b _021F4616
+_021F4608:
+ ldr r0, [sp]
+ add r1, r7, #0
+ bl MOD11_022302BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+_021F4616:
+ ldr r0, [sp]
+ add r1, r7, #0
+ bl MOD11_0222FFC8
+ mov r4, #0
+ str r0, [sp, #4]
+ cmp r0, #0
+ ble _021F466C
+ ldr r0, [sp, #0xc]
+ add r6, r5, r0
+ ldr r0, [sp, #8]
+ add r5, r5, r0
+_021F462E:
+ ldr r0, [sp]
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD11_02230014
+ mov r1, #0xa2
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F4664
+ ldr r0, _021F4694 ; =0x0000219C
+ ldrb r0, [r6, r0]
+ cmp r4, r0
+ beq _021F4664
+ ldr r0, _021F4694 ; =0x0000219C
+ ldrb r0, [r5, r0]
+ cmp r4, r0
+ beq _021F4664
+ ldr r0, _021F4690 ; =0x000021A4
+ ldrb r0, [r6, r0]
+ cmp r4, r0
+ beq _021F4664
+ ldr r0, _021F4690 ; =0x000021A4
+ ldrb r0, [r5, r0]
+ cmp r4, r0
+ bne _021F466C
+_021F4664:
+ ldr r0, [sp, #4]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _021F462E
+_021F466C:
+ ldr r0, [sp, #0x10]
+ strb r4, [r0, r7]
+_021F4670:
+ add sp, #0x14
+ mov r0, #3
+ pop {r4, r5, r6, r7, pc}
+_021F4676:
+ ldr r0, [sp]
+ add r1, r7, #0
+ bl MOD16_021F4A40
+ cmp r0, #0
+ beq _021F4688
+ add sp, #0x14
+ mov r0, #2
+ pop {r4, r5, r6, r7, pc}
+_021F4688:
+ mov r0, #1
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021F4690: .word 0x000021A4
+_021F4694: .word 0x0000219C
+ thumb_func_end MOD16_021F45A4
+
+ thumb_func_start MOD16_021F4698
+MOD16_021F4698: ; 0x021F4698
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x94
+ add r7, r0, #0
+ str r1, [sp, #0x18]
+ lsl r1, r1, #0x18
+ ldr r5, [r7, #0x30]
+ lsr r4, r1, #0x18
+ bl MOD11_0222FF74
+ mov r1, #0x10
+ tst r0, r1
+ bne _021F46BC
+ add r0, r7, #0
+ bl MOD11_0222FF74
+ mov r1, #8
+ tst r0, r1
+ beq _021F46C0
+_021F46BC:
+ str r4, [sp, #0x44]
+ b _021F46CE
+_021F46C0:
+ ldr r1, [sp, #0x18]
+ add r0, r7, #0
+ bl MOD11_022302BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x44]
+_021F46CE:
+ ldr r2, [sp, #0x18]
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD11_022482A4
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r1, [sp, #0x18]
+ add r0, r7, #0
+ bl MOD11_0222FFC8
+ str r0, [sp, #0x40]
+ mov r0, #0
+ str r0, [sp, #0x50]
+ add r0, r5, r4
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x44]
+ add r0, r5, r0
+ str r0, [sp, #0x30]
+_021F46F4:
+ mov r0, #0
+ str r0, [sp, #0x48]
+ mov r0, #6
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0x40]
+ ldr r4, [sp, #0x48]
+ cmp r0, #0
+ ble _021F47F8
+_021F4704:
+ ldr r1, [sp, #0x18]
+ add r0, r7, #0
+ add r2, r4, #0
+ bl MOD11_02230014
+ mov r1, #0xad
+ mov r2, #0
+ str r0, [sp, #0x68]
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ beq _021F47E0
+ ldr r0, _021F4A1C ; =0x000001EE
+ cmp r1, r0
+ beq _021F47E0
+ ldr r0, [sp, #0x68]
+ mov r1, #0xa2
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F47E0
+ add r0, r4, #0
+ bl FUN_0206A92C
+ ldr r1, [sp, #0x50]
+ tst r0, r1
+ bne _021F47E0
+ ldr r1, [sp, #0x34]
+ ldr r0, _021F4A20 ; =0x0000219C
+ ldrb r0, [r1, r0]
+ cmp r4, r0
+ beq _021F47E0
+ ldr r1, [sp, #0x30]
+ ldr r0, _021F4A20 ; =0x0000219C
+ ldrb r0, [r1, r0]
+ cmp r4, r0
+ beq _021F47E0
+ ldr r1, [sp, #0x34]
+ ldr r0, _021F4A24 ; =0x000021A4
+ ldrb r0, [r1, r0]
+ cmp r4, r0
+ beq _021F47E0
+ ldr r1, [sp, #0x30]
+ ldr r0, _021F4A24 ; =0x000021A4
+ ldrb r0, [r1, r0]
+ cmp r4, r0
+ beq _021F47E0
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x60]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0x1c
+ mov r3, #0
+ bl MOD11_02243420
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x5c]
+ ldr r0, [sp, #0x68]
+ mov r1, #0xb0
+ mov r2, #0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x58]
+ ldr r0, [sp, #0x68]
+ mov r1, #0xb1
+ mov r2, #0
+ bl FUN_020671BC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x54]
+ ldr r0, [sp, #0x58]
+ ldr r1, [sp, #0x60]
+ ldr r2, [sp, #0x5c]
+ bl MOD11_02246B9C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4c]
+ ldr r0, [sp, #0x54]
+ ldr r1, [sp, #0x60]
+ ldr r2, [sp, #0x5c]
+ bl MOD11_02246B9C
+ ldr r1, [sp, #0x4c]
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4c]
+ ldr r1, [sp, #0x48]
+ cmp r1, r0
+ bhs _021F47F0
+ ldr r0, [sp, #0x4c]
+ str r0, [sp, #0x48]
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x38]
+ b _021F47F0
+_021F47E0:
+ add r0, r4, #0
+ bl FUN_0206A92C
+ ldr r1, [sp, #0x50]
+ orr r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x50]
+_021F47F0:
+ ldr r0, [sp, #0x40]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _021F4704
+_021F47F8:
+ ldr r0, [sp, #0x38]
+ cmp r0, #6
+ beq _021F48C0
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x38]
+ add r0, r7, #0
+ bl MOD11_02230014
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp, #0x20]
+_021F480E:
+ ldr r1, [sp, #0x20]
+ add r0, r4, #0
+ add r1, #0x36
+ mov r2, #0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x3c]
+ ldr r3, [sp, #0x3c]
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD16_021F3454
+ str r0, [sp, #0x6c]
+ ldr r0, [sp, #0x3c]
+ cmp r0, #0
+ beq _021F4898
+ mov r0, #0
+ str r0, [sp, #0x90]
+ add r0, r4, #0
+ mov r1, #0xa
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0x70]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD11_02246D1C
+ str r0, [sp, #0x74]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD11_02249D90
+ str r0, [sp, #0x78]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0x1b
+ mov r3, #0
+ bl MOD11_02243420
+ str r0, [sp, #0x7c]
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0x1c
+ mov r3, #0
+ bl MOD11_02243420
+ ldr r1, [sp, #0x74]
+ ldr r2, [sp, #0x6c]
+ str r1, [sp]
+ ldr r1, [sp, #0x78]
+ ldr r3, [sp, #0x70]
+ str r1, [sp, #4]
+ ldr r1, [sp, #0x7c]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, sp, #0x90
+ str r0, [sp, #0x10]
+ ldr r1, [sp, #0x3c]
+ add r0, r5, #0
+ bl MOD11_022465A0
+ ldr r1, [sp, #0x90]
+ mov r0, #2
+ tst r0, r1
+ bne _021F48A2
+_021F4898:
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ cmp r0, #4
+ blt _021F480E
+_021F48A2:
+ ldr r0, [sp, #0x20]
+ cmp r0, #4
+ bne _021F48BA
+ ldr r0, [sp, #0x38]
+ bl FUN_0206A92C
+ ldr r1, [sp, #0x50]
+ orr r0, r1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x50]
+ b _021F48C4
+_021F48BA:
+ ldr r0, [sp, #0x38]
+ add sp, #0x94
+ pop {r4, r5, r6, r7, pc}
+_021F48C0:
+ mov r0, #0x3f
+ str r0, [sp, #0x50]
+_021F48C4:
+ ldr r0, [sp, #0x50]
+ cmp r0, #0x3f
+ beq _021F48CC
+ b _021F46F4
+_021F48CC:
+ mov r0, #0
+ str r0, [sp, #0x28]
+ mov r0, #6
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x28]
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x40]
+ cmp r0, #0
+ bgt _021F48E0
+ b _021F4A14
+_021F48E0:
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x24]
+ add r0, r7, #0
+ bl MOD11_02230014
+ mov r1, #0xad
+ mov r2, #0
+ str r0, [sp, #0x1c]
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ beq _021F4900
+ ldr r0, _021F4A1C ; =0x000001EE
+ cmp r1, r0
+ bne _021F4902
+_021F4900:
+ b _021F4A06
+_021F4902:
+ ldr r0, [sp, #0x1c]
+ mov r1, #0xa2
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F4A06
+ ldr r0, _021F4A20 ; =0x0000219C
+ ldr r1, [sp, #0x34]
+ ldrb r2, [r1, r0]
+ ldr r1, [sp, #0x24]
+ cmp r1, r2
+ beq _021F4A06
+ ldr r1, [sp, #0x30]
+ ldrb r2, [r1, r0]
+ ldr r1, [sp, #0x24]
+ cmp r1, r2
+ beq _021F4A06
+ add r2, r0, #0
+ ldr r1, [sp, #0x34]
+ add r2, #8
+ ldrb r2, [r1, r2]
+ ldr r1, [sp, #0x24]
+ cmp r1, r2
+ beq _021F4A06
+ ldr r1, [sp, #0x30]
+ add r0, #8
+ ldrb r1, [r1, r0]
+ ldr r0, [sp, #0x24]
+ cmp r0, r1
+ beq _021F4A06
+ mov r0, #0
+ str r0, [sp, #0x64]
+ ldr r0, [sp, #0x18]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x84]
+ ldr r0, [sp, #0x24]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x88]
+_021F4954:
+ ldr r1, [sp, #0x64]
+ ldr r0, [sp, #0x1c]
+ add r1, #0x36
+ mov r2, #0
+ bl FUN_020671BC
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x8c]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x8c]
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD16_021F3454
+ str r0, [sp, #0x80]
+ ldr r0, [sp, #0x8c]
+ cmp r0, #0
+ beq _021F49EE
+ lsl r0, r0, #4
+ add r1, r5, r0
+ ldr r0, _021F4A28 ; =0x000003E1
+ ldrb r0, [r1, r0]
+ cmp r0, #1
+ beq _021F49EE
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD11_02230270
+ add r3, r0, #0
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ lsl r3, r3, #2
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x84]
+ add r4, r5, r3
+ str r0, [sp, #0xc]
+ mov r3, #0x6f
+ str r6, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x14]
+ lsl r3, r3, #2
+ ldr r2, [sp, #0x8c]
+ ldr r3, [r4, r3]
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD11_0224B310
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0
+ str r0, [sp, #0x90]
+ ldr r0, [sp, #0x18]
+ ldr r3, [sp, #0x80]
+ str r0, [sp]
+ str r6, [sp, #4]
+ str r1, [sp, #8]
+ add r0, sp, #0x90
+ str r0, [sp, #0xc]
+ ldr r2, [sp, #0x8c]
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD11_02246274
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x4c]
+ ldr r1, [sp, #0x90]
+ ldr r0, _021F4A2C ; =0x00140808
+ tst r0, r1
+ beq _021F49EE
+ mov r0, #0
+ str r0, [sp, #0x4c]
+_021F49EE:
+ ldr r1, [sp, #0x28]
+ ldr r0, [sp, #0x4c]
+ cmp r1, r0
+ bhs _021F49FC
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x88]
+ str r0, [sp, #0x2c]
+_021F49FC:
+ ldr r0, [sp, #0x64]
+ add r0, r0, #1
+ str r0, [sp, #0x64]
+ cmp r0, #4
+ blt _021F4954
+_021F4A06:
+ ldr r0, [sp, #0x24]
+ add r1, r0, #1
+ ldr r0, [sp, #0x40]
+ str r1, [sp, #0x24]
+ cmp r1, r0
+ bge _021F4A14
+ b _021F48E0
+_021F4A14:
+ ldr r0, [sp, #0x2c]
+ add sp, #0x94
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021F4A1C: .word 0x000001EE
+_021F4A20: .word 0x0000219C
+_021F4A24: .word 0x000021A4
+_021F4A28: .word 0x000003E1
+_021F4A2C: .word 0x00140808
+ thumb_func_end MOD16_021F4698
+
+ thumb_func_start MOD16_021F4A30
+MOD16_021F4A30: ; 0x021F4A30
+ ldr r0, [r0, #0x30]
+ add r1, r0, r1
+ ldr r0, _021F4A3C ; =0x000021A4
+ ldrb r0, [r1, r0]
+ bx lr
+ nop
+_021F4A3C: .word 0x000021A4
+ thumb_func_end MOD16_021F4A30
+
+ thumb_func_start MOD16_021F4A40
+MOD16_021F4A40: ; 0x021F4A40
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ mov r2, #0
+ str r2, [sp, #0x14]
+ add r2, r1, #0
+ asr r2, r2, #1
+ ldr r4, [r5, #0x30]
+ str r2, [sp, #0xc]
+ add r6, r4, r2
+ ldr r2, [sp, #0x14]
+ ldr r3, _021F4D6C ; =0x000003D3
+ str r2, [sp, #0x1c]
+ strb r2, [r6, r3]
+ ldr r3, [r5, #0x2c]
+ mov r2, #0x4b
+ and r2, r3
+ str r1, [sp]
+ cmp r2, #0x4b
+ bne _021F4A76
+ bl MOD11_02230260
+ cmp r0, #4
+ bne _021F4A76
+ add sp, #0x20
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4A76:
+ ldr r0, [sp]
+ mov r1, #0xc0
+ mul r1, r0
+ mov r0, #0xb7
+ str r1, [sp, #8]
+ add r1, r4, r1
+ lsl r0, r0, #6
+ ldr r1, [r1, r0]
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ tst r0, r1
+ beq _021F4A94
+ add sp, #0x20
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021F4A94:
+ ldr r1, [sp]
+ add r0, r5, #0
+ bl MOD11_0222FF88
+ add r7, r0, #0
+ mov r5, #0
+ bl FUN_0206B9AC
+ cmp r0, #0
+ ble _021F4AF2
+_021F4AA8:
+ add r0, r7, #0
+ add r1, r5, #0
+ bl FUN_0206B9B0
+ mov r1, #0xa2
+ mov r2, #0
+ add r6, r0, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F4AE6
+ add r0, r6, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _021F4AE6
+ add r0, r6, #0
+ mov r1, #0xad
+ mov r2, #0
+ bl FUN_020671BC
+ ldr r1, _021F4D70 ; =0x000001EE
+ cmp r0, r1
+ beq _021F4AE6
+ ldr r0, [sp, #0x14]
+ add r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x14]
+_021F4AE6:
+ add r0, r7, #0
+ add r5, r5, #1
+ bl FUN_0206B9AC
+ cmp r5, r0
+ blt _021F4AA8
+_021F4AF2:
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, [sp, #0xc]
+ mov r1, #1
+ lsl r0, r0, #3
+ add r0, r4, r0
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0xc]
+ add r5, r4, r0
+ ldr r0, [sp, #8]
+ add r7, r4, r0
+ ldr r0, [sp]
+ bic r0, r1
+ str r0, [sp]
+ add r0, r4, r0
+ str r0, [sp, #0x10]
+_021F4B12:
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ beq _021F4B28
+ ldr r0, _021F4D74 ; =0x000003CD
+ ldrb r1, [r5, r0]
+ ldr r0, [sp, #4]
+ sub r0, r1, r0
+ add r1, r0, #1
+ ldr r0, [sp, #0x14]
+ cmp r0, r1
+ bgt _021F4B34
+_021F4B28:
+ mov r0, #0xe7
+ ldr r1, [sp, #0x18]
+ lsl r0, r0, #2
+ ldrh r6, [r1, r0]
+ cmp r6, #0
+ bne _021F4B36
+_021F4B34:
+ b _021F4E0E
+_021F4B36:
+ cmp r6, #0x17
+ bne _021F4B58
+ ldr r1, _021F4D78 ; =0x00002D90
+ ldr r0, _021F4D7C ; =0x00002D8C
+ ldr r1, [r7, r1]
+ ldr r0, [r7, r0]
+ lsr r1, r1, #2
+ cmp r0, r1
+ bhs _021F4BB2
+ cmp r0, #0
+ beq _021F4BB2
+ ldr r0, _021F4D80 ; =0x000003D1
+ mov r1, #0
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4B58:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x26
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4B9A
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x36
+ bl MOD11_0224C12C
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ beq _021F4BB2
+ ldr r0, _021F4D7C ; =0x00002D8C
+ ldr r1, [r7, r0]
+ cmp r1, #0
+ beq _021F4BB2
+ add r0, r0, #4
+ ldr r3, [r7, r0]
+ lsr r0, r3, #2
+ cmp r1, r0
+ blo _021F4B8E
+ sub r0, r3, r1
+ cmp r0, r2
+ bls _021F4BB2
+_021F4B8E:
+ ldr r0, _021F4D80 ; =0x000003D1
+ mov r1, #1
+ strb r1, [r5, r0]
+ add r0, r1, #0
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4B9A:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0xf
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4BD0
+ ldr r0, _021F4D84 ; =0x00002DAC
+ ldr r1, [r7, r0]
+ mov r0, #7
+ tst r0, r1
+ bne _021F4BB4
+_021F4BB2:
+ b _021F4DFA
+_021F4BB4:
+ mov r0, #5
+ bl FUN_0206A92C
+ ldr r1, _021F4D6C ; =0x000003D3
+ ldrb r1, [r5, r1]
+ orr r1, r0
+ ldr r0, _021F4D6C ; =0x000003D3
+ strb r1, [r5, r0]
+ mov r1, #2
+ sub r0, r0, #2
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4BD0:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x10
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4C0A
+ ldr r0, _021F4D84 ; =0x00002DAC
+ mov r1, #8
+ ldr r0, [r7, r0]
+ tst r1, r0
+ bne _021F4BEE
+ mov r1, #0x80
+ tst r0, r1
+ beq _021F4CBE
+_021F4BEE:
+ mov r0, #4
+ bl FUN_0206A92C
+ ldr r1, _021F4D6C ; =0x000003D3
+ ldrb r1, [r5, r1]
+ orr r1, r0
+ ldr r0, _021F4D6C ; =0x000003D3
+ strb r1, [r5, r0]
+ mov r1, #2
+ sub r0, r0, #2
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4C0A:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x11
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4C3E
+ ldr r0, _021F4D84 ; =0x00002DAC
+ ldr r1, [r7, r0]
+ mov r0, #0x10
+ tst r0, r1
+ beq _021F4CBE
+ mov r0, #3
+ bl FUN_0206A92C
+ ldr r1, _021F4D6C ; =0x000003D3
+ ldrb r1, [r5, r1]
+ orr r1, r0
+ ldr r0, _021F4D6C ; =0x000003D3
+ strb r1, [r5, r0]
+ mov r1, #2
+ sub r0, r0, #2
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4C3E:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x12
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4C72
+ ldr r0, _021F4D84 ; =0x00002DAC
+ ldr r1, [r7, r0]
+ mov r0, #0x20
+ tst r0, r1
+ beq _021F4CBE
+ mov r0, #2
+ bl FUN_0206A92C
+ ldr r1, _021F4D6C ; =0x000003D3
+ ldrb r1, [r5, r1]
+ orr r1, r0
+ ldr r0, _021F4D6C ; =0x000003D3
+ strb r1, [r5, r0]
+ mov r1, #2
+ sub r0, r0, #2
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4C72:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x13
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4CA6
+ ldr r0, _021F4D84 ; =0x00002DAC
+ ldr r1, [r7, r0]
+ mov r0, #0x40
+ tst r0, r1
+ beq _021F4CBE
+ mov r0, #1
+ bl FUN_0206A92C
+ ldr r1, _021F4D6C ; =0x000003D3
+ ldrb r1, [r5, r1]
+ orr r1, r0
+ ldr r0, _021F4D6C ; =0x000003D3
+ strb r1, [r5, r0]
+ mov r1, #2
+ sub r0, r0, #2
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4CA6:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x14
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4CDC
+ ldr r0, _021F4D88 ; =0x00002DB0
+ ldr r1, [r7, r0]
+ mov r0, #7
+ tst r0, r1
+ bne _021F4CC0
+_021F4CBE:
+ b _021F4DFA
+_021F4CC0:
+ mov r0, #0
+ bl FUN_0206A92C
+ ldr r1, _021F4D6C ; =0x000003D3
+ ldrb r1, [r5, r1]
+ orr r1, r0
+ ldr r0, _021F4D6C ; =0x000003D3
+ strb r1, [r5, r0]
+ mov r1, #2
+ sub r0, r0, #2
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4CDC:
+ ldr r0, _021F4D8C ; =0x00002DD4
+ ldr r1, [r7, r0]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ sub r0, r1, r0
+ bpl _021F4CEC
+ b _021F4DF4
+_021F4CEC:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x1b
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4D0C
+ ldr r0, _021F4D6C ; =0x000003D3
+ mov r1, #1
+ strb r1, [r5, r0]
+ mov r1, #3
+ sub r0, r0, #2
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4D0C:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x1c
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4D2C
+ ldr r0, _021F4D6C ; =0x000003D3
+ mov r1, #2
+ strb r1, [r5, r0]
+ mov r1, #3
+ sub r0, r0, #2
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4D2C:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x1d
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4D4C
+ ldr r0, _021F4D6C ; =0x000003D3
+ mov r1, #4
+ strb r1, [r5, r0]
+ mov r1, #3
+ sub r0, r0, #2
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4D4C:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x1e
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4D90
+ ldr r0, _021F4D6C ; =0x000003D3
+ mov r1, #5
+ strb r1, [r5, r0]
+ mov r1, #3
+ sub r0, r0, #2
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+ .align 2, 0
+_021F4D6C: .word 0x000003D3
+_021F4D70: .word 0x000001EE
+_021F4D74: .word 0x000003CD
+_021F4D78: .word 0x00002D90
+_021F4D7C: .word 0x00002D8C
+_021F4D80: .word 0x000003D1
+_021F4D84: .word 0x00002DAC
+_021F4D88: .word 0x00002DB0
+_021F4D8C: .word 0x00002DD4
+_021F4D90:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x1f
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4DAE
+ ldr r0, _021F4E28 ; =0x000003D3
+ mov r1, #3
+ strb r1, [r5, r0]
+ sub r0, r0, #2
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4DAE:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x20
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4DCE
+ ldr r0, _021F4E28 ; =0x000003D3
+ mov r1, #6
+ strb r1, [r5, r0]
+ mov r1, #3
+ sub r0, r0, #2
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4DCE:
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x16
+ bl MOD11_0224C12C
+ cmp r0, #0
+ beq _021F4DFA
+ mov r0, #7
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ mov r0, #0x40
+ tst r0, r1
+ bne _021F4DFA
+ ldr r0, _021F4E2C ; =0x000003D1
+ mov r1, #4
+ strb r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ b _021F4DFA
+_021F4DF4:
+ ldr r0, _021F4E2C ; =0x000003D1
+ mov r1, #5
+ strb r1, [r5, r0]
+_021F4DFA:
+ ldr r0, [sp, #0x1c]
+ cmp r0, #1
+ bne _021F4E0E
+ ldr r1, [sp, #0x10]
+ ldr r0, _021F4E30 ; =0x000003D6
+ mov r2, #0
+ strh r6, [r1, r0]
+ ldr r1, [sp, #0x18]
+ sub r0, #0x3a
+ strh r2, [r1, r0]
+_021F4E0E:
+ ldr r0, [sp, #0x18]
+ add r0, r0, #2
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #4
+ bge _021F4E20
+ b _021F4B12
+_021F4E20:
+ ldr r0, [sp, #0x1c]
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021F4E28: .word 0x000003D3
+_021F4E2C: .word 0x000003D1
+_021F4E30: .word 0x000003D6
+ thumb_func_end MOD16_021F4A40
+
+ .section .rodata
+ ; 0x021F4E34
+ .incbin "baserom.nds", 0x259554, 0xAB90
diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s
new file mode 100644
index 00000000..b839403b
--- /dev/null
+++ b/arm9/modules/17/asm/module_17.s
@@ -0,0 +1,14606 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD17_021D74E0
+MOD17_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r5, r0, #0
+ add r0, r7, #0
+ mov r1, #8
+ bl FUN_02016998
+ lsl r6, r5, #3
+ add r4, r0, #0
+ add r0, r7, #0
+ add r1, r6, #0
+ bl FUN_02016998
+ mov r1, #0
+ add r2, r6, #0
+ str r0, [r4]
+ bl Call_FillMemWithValue
+ str r5, [r4, #4]
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D74E0
+
+ thumb_func_start MOD17_021D750C
+MOD17_021D750C: ; 0x021D750C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D750C
+
+ thumb_func_start MOD17_021D7520
+MOD17_021D7520: ; 0x021D7520
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ bl MOD17_021D76E0
+ add r4, r0, #0
+ bne _021D7532
+ bl ErrorHandling
+_021D7532:
+ ldr r0, [r5, #0x18]
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD17_021D770C
+ str r0, [r4, #4]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7520
+
+ thumb_func_start MOD17_021D7544
+MOD17_021D7544: ; 0x021D7544
+ push {r3, lr}
+ add r1, sp, #0
+ bl MOD17_021D7740
+ add r0, sp, #0
+ bl FUN_02020A40
+ pop {r3, pc}
+ thumb_func_end MOD17_021D7544
+
+ thumb_func_start MOD17_021D7554
+MOD17_021D7554: ; 0x021D7554
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r6, r1, #0
+ str r2, [sp]
+ add r7, r3, #0
+ bl MOD17_021D7544
+ cmp r0, #0
+ bne _021D756E
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_021D756E:
+ add r0, r4, #0
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD17_021D7600
+ ldr r0, _021D75D8 ; =0x021C48F8
+ ldr r1, [sp, #8]
+ ldrh r2, [r0, #0x1c]
+ sub r1, r2, r1
+ str r1, [r6]
+ ldrh r1, [r0, #0x1e]
+ ldr r0, [sp, #4]
+ sub r1, r1, r0
+ ldr r0, [sp]
+ sub r4, r1, #4
+ str r1, [r0]
+ add r0, r1, #4
+ cmp r4, r0
+ bge _021D75D2
+_021D7594:
+ cmp r4, #0
+ blt _021D75C6
+ ldr r0, [r6]
+ sub r5, r0, #4
+ add r0, r0, #4
+ cmp r5, r0
+ bge _021D75C6
+_021D75A2:
+ cmp r5, #0
+ blt _021D75BC
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ mov r3, #0
+ bl MOD17_021D7B0C
+ cmp r0, #0
+ bne _021D75BC
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021D75BC:
+ ldr r0, [r6]
+ add r5, r5, #1
+ add r0, r0, #4
+ cmp r5, r0
+ blt _021D75A2
+_021D75C6:
+ ldr r0, [sp]
+ add r4, r4, #1
+ ldr r0, [r0]
+ add r0, r0, #4
+ cmp r4, r0
+ blt _021D7594
+_021D75D2:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D75D8: .word 0x021C48F8
+ thumb_func_end MOD17_021D7554
+
+ thumb_func_start MOD17_021D75DC
+MOD17_021D75DC: ; 0x021D75DC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ add r1, sp, #0
+ bl MOD17_021D7740
+ add r0, sp, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl FUN_02020AE8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021D75DC
+
+ thumb_func_start MOD17_021D75F4
+MOD17_021D75F4: ; 0x021D75F4
+ ldr r3, _021D75FC ; =0x02013EC5
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021D75FC: .word 0x02013EC5
+ thumb_func_end MOD17_021D75F4
+
+ thumb_func_start MOD17_021D7600
+MOD17_021D7600: ; 0x021D7600
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ ldr r0, [r0, #4]
+ add r5, r1, #0
+ add r4, r2, #0
+ bl FUN_02013ECC
+ add r1, sp, #0
+ strh r0, [r1]
+ lsr r0, r0, #0x10
+ strh r0, [r1, #2]
+ ldrh r0, [r1]
+ strh r0, [r1, #4]
+ ldrh r0, [r1, #2]
+ strh r0, [r1, #6]
+ mov r0, #4
+ ldrsh r0, [r1, r0]
+ str r0, [r5]
+ mov r0, #6
+ ldrsh r0, [r1, r0]
+ str r0, [r4]
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7600
+
+ thumb_func_start MOD17_021D7630
+MOD17_021D7630: ; 0x021D7630
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ ldr r0, [r0, #4]
+ add r5, r1, #0
+ add r4, r2, #0
+ bl FUN_02013EF0
+ add r1, sp, #0
+ strh r0, [r1]
+ lsr r0, r0, #0x10
+ strh r0, [r1, #2]
+ ldrh r0, [r1]
+ strh r0, [r1, #4]
+ ldrh r0, [r1, #2]
+ strh r0, [r1, #6]
+ mov r0, #4
+ ldrsh r0, [r1, r0]
+ str r0, [r5]
+ mov r0, #6
+ ldrsh r0, [r1, r0]
+ str r0, [r4]
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7630
+
+ thumb_func_start MOD17_021D7660
+MOD17_021D7660: ; 0x021D7660
+ ldr r3, _021D7668 ; =0x02013EB1
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021D7668: .word 0x02013EB1
+ thumb_func_end MOD17_021D7660
+
+ thumb_func_start MOD17_021D766C
+MOD17_021D766C: ; 0x021D766C
+ ldr r3, _021D7674 ; =0x02013EFD
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021D7674: .word 0x02013EFD
+ thumb_func_end MOD17_021D766C
+
+ thumb_func_start MOD17_021D7678
+MOD17_021D7678: ; 0x021D7678
+ ldr r3, _021D7680 ; =0x02013F01
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021D7680: .word 0x02013F01
+ thumb_func_end MOD17_021D7678
+
+ thumb_func_start MOD17_021D7684
+MOD17_021D7684: ; 0x021D7684
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r1, #0
+ add r4, r2, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021D7630
+ ldr r0, [sp, #4]
+ cmp r0, #0x10
+ beq _021D76A4
+ cmp r0, #0x20
+ beq _021D76AA
+ cmp r0, #0x40
+ beq _021D76B0
+ b _021D76B4
+_021D76A4:
+ mov r0, #0
+ str r0, [r5]
+ b _021D76B4
+_021D76AA:
+ mov r0, #0xa
+ str r0, [r5]
+ b _021D76B4
+_021D76B0:
+ mov r0, #0x14
+ str r0, [r5]
+_021D76B4:
+ ldr r0, [sp]
+ cmp r0, #0x10
+ beq _021D76C6
+ cmp r0, #0x20
+ beq _021D76CE
+ cmp r0, #0x40
+ beq _021D76D6
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_021D76C6:
+ mov r0, #0
+ add sp, #8
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D76CE:
+ mov r0, #0xa
+ add sp, #8
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021D76D6:
+ mov r0, #0x14
+ str r0, [r4]
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7684
+
+ thumb_func_start MOD17_021D76E0
+MOD17_021D76E0: ; 0x021D76E0
+ push {r3, r4}
+ ldr r4, [r0, #4]
+ mov r1, #0
+ cmp r4, #0
+ ble _021D7704
+ ldr r3, [r0]
+ add r2, r3, #0
+_021D76EE:
+ ldr r0, [r2, #4]
+ cmp r0, #0
+ bne _021D76FC
+ lsl r0, r1, #3
+ add r0, r3, r0
+ pop {r3, r4}
+ bx lr
+_021D76FC:
+ add r1, r1, #1
+ add r2, #8
+ cmp r1, r4
+ blt _021D76EE
+_021D7704:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021D76E0
+
+ thumb_func_start MOD17_021D770C
+MOD17_021D770C: ; 0x021D770C
+ push {r3, lr}
+ sub sp, #0x20
+ ldr r1, [r0, #4]
+ mov r3, #0
+ str r1, [sp]
+ ldr r1, [r0, #8]
+ str r1, [sp, #4]
+ ldr r1, [r0, #0xc]
+ str r1, [sp, #8]
+ ldr r2, [r0, #0x10]
+ add r1, sp, #0
+ strh r2, [r1, #0xc]
+ ldr r2, [r0, #0x14]
+ strh r2, [r1, #0xe]
+ strh r3, [r1, #0x10]
+ mov r2, #0x1f
+ str r2, [sp, #0x14]
+ str r3, [sp, #0x18]
+ ldr r0, [r0, #0x1c]
+ strh r0, [r1, #0x1c]
+ add r0, sp, #0
+ bl FUN_02013E84
+ add sp, #0x20
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D770C
+
+ thumb_func_start MOD17_021D7740
+MOD17_021D7740: ; 0x021D7740
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r4, r1, #0
+ bl FUN_02013ECC
+ add r1, sp, #0
+ strh r0, [r1, #4]
+ lsr r0, r0, #0x10
+ strh r0, [r1, #6]
+ ldrh r0, [r1, #4]
+ strh r0, [r1, #0xc]
+ ldrh r0, [r1, #6]
+ strh r0, [r1, #0xe]
+ ldr r0, [r5, #4]
+ bl FUN_02013EF0
+ add r1, sp, #0
+ strh r0, [r1]
+ lsr r0, r0, #0x10
+ strh r0, [r1, #2]
+ ldrh r0, [r1]
+ strh r0, [r1, #8]
+ ldrh r0, [r1, #2]
+ strh r0, [r1, #0xa]
+ mov r0, #0xe
+ ldrsh r2, [r1, r0]
+ mov r0, #0xa
+ strb r2, [r4]
+ ldrsh r0, [r1, r0]
+ add r0, r2, r0
+ strb r0, [r4, #1]
+ mov r0, #0xc
+ ldrsh r2, [r1, r0]
+ mov r0, #8
+ strb r2, [r4, #2]
+ ldrsh r0, [r1, r0]
+ add r0, r2, r0
+ strb r0, [r4, #3]
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021D7740
+
+ thumb_func_start MOD17_021D7794
+MOD17_021D7794: ; 0x021D7794
+ push {r3, lr}
+ bl MOD17_021D7D08
+ bl MOD17_021D7D28
+ bl MOD17_021D7DB0
+ ldr r0, _021D77B0 ; =0x021C4918
+ mov r1, #1
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ pop {r3, pc}
+ nop
+_021D77B0: .word 0x021C4918
+ thumb_func_end MOD17_021D7794
+
+ thumb_func_start MOD17_021D77B4
+MOD17_021D77B4: ; 0x021D77B4
+ push {r3, lr}
+ ldr r0, _021D77D0 ; =0x021C4918
+ mov r1, #0
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ bl MOD17_021D7E0C
+ bl MOD17_021D7E00
+ bl GX_ResetBankForTex
+ pop {r3, pc}
+ nop
+_021D77D0: .word 0x021C4918
+ thumb_func_end MOD17_021D77B4
+
+ thumb_func_start MOD17_021D77D4
+MOD17_021D77D4: ; 0x021D77D4
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ ldr r5, _021D7824 ; =0x021DE274
+ add r3, sp, #0
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r4, #0
+ add r1, r2, #0
+ bl MOD17_021D7E1C
+ mov r2, #0xa
+ add r0, r4, #0
+ mov r1, #0xe
+ lsl r2, r2, #0xa
+ mov r3, #0x20
+ bl MOD17_021D82E4
+ add r0, r4, #0
+ bl MOD17_021D8088
+ add r0, r4, #0
+ mov r1, #0xd
+ bl MOD17_021D82B8
+ add r0, r4, #0
+ bl MOD17_021D80CC
+ mov r0, #0xe
+ bl FUN_02016B94
+ str r0, [r4, #0x38]
+ add r0, r4, #0
+ bl MOD17_021D7F34
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7824: .word 0x021DE274
+ thumb_func_end MOD17_021D77D4
+
+ thumb_func_start MOD17_021D7828
+MOD17_021D7828: ; 0x021D7828
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D82D4
+ add r0, r4, #0
+ bl MOD17_021D7E58
+ add r0, r4, #0
+ bl MOD17_021D8058
+ ldr r0, [r4, #0x38]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl MOD17_021D834C
+ add r0, r4, #0
+ bl MOD17_021D816C
+ add r0, r4, #0
+ bl MOD17_021D80B4
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #4]
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7828
+
+ thumb_func_start MOD17_021D786C
+MOD17_021D786C: ; 0x021D786C
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020222AC
+ bl FUN_020B02C8
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _021D7884
+ add r0, r4, #0
+ bl MOD17_021D7E68
+_021D7884:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021D7890
+ ldr r0, [r4, #0x20]
+ bl FUN_02006ED4
+_021D7890:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020222B4
+ add r0, r4, #0
+ bl MOD17_021D8194
+ pop {r4, pc}
+ thumb_func_end MOD17_021D786C
+
+ thumb_func_start MOD17_021D78A0
+MOD17_021D78A0: ; 0x021D78A0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ ldr r2, [r4, #4]
+ add r5, r0, #0
+ bl MOD17_021D7E74
+ ldr r1, [r4, #8]
+ ldr r2, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD17_021D7ED4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D78A0
+
+ thumb_func_start MOD17_021D78BC
+MOD17_021D78BC: ; 0x021D78BC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02013DEC
+ ldr r0, [r4]
+ bl FUN_02013E5C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D78BC
+
+ thumb_func_start MOD17_021D78D0
+MOD17_021D78D0: ; 0x021D78D0
+ push {r4, r5, r6, lr}
+ sub sp, #0x70
+ add r5, r0, #0
+ mov r0, #0
+ str r1, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ add r4, r2, #0
+ ldr r2, [r5, #0x40]
+ add r6, r3, #0
+ str r2, [sp, #0x14]
+ ldr r2, [r5, #0x44]
+ add r3, r1, #0
+ str r2, [sp, #0x18]
+ ldr r2, [r5, #0x48]
+ str r2, [sp, #0x1c]
+ ldr r2, [r5, #0x4c]
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, sp, #0x4c
+ add r2, r1, #0
+ bl FUN_02008AA4
+ ldr r0, [r5, #0x3c]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ lsl r0, r4, #0xc
+ str r0, [sp, #0x34]
+ lsl r0, r6, #0xc
+ str r0, [sp, #0x38]
+ mov r0, #0
+ str r0, [sp, #0x3c]
+ ldr r0, [sp, #0x80]
+ str r0, [sp, #0x40]
+ ldr r0, [sp, #0x84]
+ str r0, [sp, #0x44]
+ mov r0, #0xe
+ str r0, [sp, #0x48]
+ add r0, sp, #0x2c
+ bl FUN_0201FF84
+ add sp, #0x70
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D78D0
+
+ thumb_func_start MOD17_021D7934
+MOD17_021D7934: ; 0x021D7934
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r4, [sp, #0x1c]
+ str r4, [sp]
+ ldr r4, [sp, #0x18]
+ str r4, [sp, #4]
+ mov r4, #0xe
+ str r4, [sp, #8]
+ ldr r0, [r0, #0x40]
+ bl FUN_02008F34
+ bl FUN_02009B04
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7934
+
+ thumb_func_start MOD17_021D7954
+MOD17_021D7954: ; 0x021D7954
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, [sp, #0x20]
+ str r4, [sp]
+ ldr r4, [sp, #0x18]
+ str r4, [sp, #4]
+ ldr r4, [sp, #0x1c]
+ str r4, [sp, #8]
+ mov r4, #0xe
+ str r4, [sp, #0xc]
+ ldr r0, [r0, #0x44]
+ bl FUN_02008FEC
+ bl FUN_02009D68
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7954
+
+ thumb_func_start MOD17_021D7978
+MOD17_021D7978: ; 0x021D7978
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r4, [sp, #0x18]
+ str r4, [sp]
+ mov r4, #2
+ str r4, [sp, #4]
+ mov r4, #0xe
+ str r4, [sp, #8]
+ ldr r0, [r0, #0x48]
+ bl FUN_020090AC
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7978
+
+ thumb_func_start MOD17_021D7994
+MOD17_021D7994: ; 0x021D7994
+ push {r3, r4, lr}
+ sub sp, #0xc
+ ldr r4, [sp, #0x18]
+ str r4, [sp]
+ mov r4, #3
+ str r4, [sp, #4]
+ mov r4, #0xe
+ str r4, [sp, #8]
+ ldr r0, [r0, #0x4c]
+ bl FUN_020090AC
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7994
+
+ thumb_func_start MOD17_021D79B0
+MOD17_021D79B0: ; 0x021D79B0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ bl FUN_020094F0
+ add r1, r0, #0
+ ldr r0, [r4, #0x40]
+ bl FUN_02009490
+ pop {r4, pc}
+ thumb_func_end MOD17_021D79B0
+
+ thumb_func_start MOD17_021D79C4
+MOD17_021D79C4: ; 0x021D79C4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x44]
+ bl FUN_020094F0
+ add r1, r0, #0
+ ldr r0, [r4, #0x44]
+ bl FUN_02009490
+ pop {r4, pc}
+ thumb_func_end MOD17_021D79C4
+
+ thumb_func_start MOD17_021D79D8
+MOD17_021D79D8: ; 0x021D79D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x48]
+ bl FUN_020094F0
+ add r1, r0, #0
+ ldr r0, [r4, #0x48]
+ bl FUN_02009490
+ pop {r4, pc}
+ thumb_func_end MOD17_021D79D8
+
+ thumb_func_start MOD17_021D79EC
+MOD17_021D79EC: ; 0x021D79EC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x4c]
+ bl FUN_020094F0
+ add r1, r0, #0
+ ldr r0, [r4, #0x4c]
+ bl FUN_02009490
+ pop {r4, pc}
+ thumb_func_end MOD17_021D79EC
+
+ thumb_func_start MOD17_021D7A00
+MOD17_021D7A00: ; 0x021D7A00
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #0x76
+ mov r2, #0x13
+ mov r3, #0xe
+ bl MOD17_021D8358
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021D81A0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021D821C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021D7A00
+
+ thumb_func_start MOD17_021D7A24
+MOD17_021D7A24: ; 0x021D7A24
+ ldr r3, _021D7A28 ; =MOD17_021D83AC
+ bx r3
+ .align 2, 0
+_021D7A28: .word MOD17_021D83AC
+ thumb_func_end MOD17_021D7A24
+
+ thumb_func_start MOD17_021D7A2C
+MOD17_021D7A2C: ; 0x021D7A2C
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ add r6, r1, #0
+ add r5, r2, #0
+ bl FUN_02020CD4
+ ldr r1, [r4, #0x30]
+ lsl r5, r5, #2
+ add r0, r6, #0
+ add r1, r1, r5
+ bl FUN_020B0088
+ ldr r0, [r4, #0x30]
+ ldr r0, [r0, r5]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021D7A2C
+
+ thumb_func_start MOD17_021D7A4C
+MOD17_021D7A4C: ; 0x021D7A4C
+ push {r3, r4}
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r2, [r0]
+ ldr r1, _021D7A78 ; =0xFFFF1FFF
+ add r3, r0, #0
+ and r1, r2
+ str r1, [r0]
+ add r3, #8
+ ldrh r4, [r3]
+ mov r2, #3
+ mov r1, #1
+ bic r4, r2
+ orr r1, r4
+ add r0, #0xa
+ strh r1, [r3]
+ ldrh r1, [r0]
+ bic r1, r2
+ strh r1, [r0]
+ pop {r3, r4}
+ bx lr
+ nop
+_021D7A78: .word 0xFFFF1FFF
+ thumb_func_end MOD17_021D7A4C
+
+ thumb_func_start MOD17_021D7A7C
+MOD17_021D7A7C: ; 0x021D7A7C
+ push {r3, r4}
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r2, [r0]
+ ldr r1, _021D7AD8 ; =0xFFFF1FFF
+ add r3, r0, #0
+ and r2, r1
+ lsr r1, r0, #0xd
+ orr r1, r2
+ str r1, [r0]
+ add r3, #0x48
+ ldrh r4, [r3]
+ mov r2, #0x3f
+ mov r1, #0x1f
+ bic r4, r2
+ orr r1, r4
+ strh r1, [r3]
+ add r3, r0, #0
+ add r3, #0x4a
+ ldrh r4, [r3]
+ mov r1, #0x12
+ bic r4, r2
+ orr r1, r4
+ strh r1, [r3]
+ add r1, r0, #0
+ ldr r2, _021D7ADC ; =0x00000AF6
+ add r1, #0x40
+ strh r2, [r1]
+ add r1, r0, #0
+ ldr r2, _021D7AE0 ; =0x0000128F
+ add r1, #0x44
+ strh r2, [r1]
+ add r2, r0, #0
+ add r2, #8
+ ldrh r3, [r2]
+ mov r1, #3
+ add r0, #0xa
+ bic r3, r1
+ strh r3, [r2]
+ ldrh r2, [r0]
+ bic r2, r1
+ mov r1, #1
+ orr r1, r2
+ strh r1, [r0]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+_021D7AD8: .word 0xFFFF1FFF
+_021D7ADC: .word 0x00000AF6
+_021D7AE0: .word 0x0000128F
+ thumb_func_end MOD17_021D7A7C
+
+ thumb_func_start MOD17_021D7AE4
+MOD17_021D7AE4: ; 0x021D7AE4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ bl FUN_0201AB60
+ ldr r0, [r4, #0x20]
+ bl FUN_020081C4
+ bl FUN_02009F80
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7AE4
+
+ thumb_func_start MOD17_021D7AFC
+MOD17_021D7AFC: ; 0x021D7AFC
+ push {r3, lr}
+ add r3, r1, #0
+ mov r1, #0x76
+ mov r2, #0x13
+ bl MOD17_021D8358
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7AFC
+
+ thumb_func_start MOD17_021D7B0C
+MOD17_021D7B0C: ; 0x021D7B0C
+ push {r4, r5}
+ ldrh r5, [r0, #2]
+ ldrh r4, [r0]
+ lsl r5, r5, #3
+ cmp r1, #0
+ blt _021D7B26
+ cmp r2, #0
+ blt _021D7B26
+ cmp r1, r5
+ bge _021D7B26
+ lsl r4, r4, #3
+ cmp r2, r4
+ blt _021D7B2C
+_021D7B26:
+ mov r0, #2
+ pop {r4, r5}
+ bx lr
+_021D7B2C:
+ add r4, r2, #0
+ mul r4, r5
+ add r4, r1, r4
+ lsr r5, r4, #0x1f
+ lsl r2, r4, #0x1d
+ sub r2, r2, r5
+ mov r1, #0x1d
+ ror r2, r1
+ add r1, r5, r2
+ lsl r2, r1, #2
+ add r1, r3, #0
+ ldr r3, [r0, #0x14]
+ asr r0, r4, #2
+ lsr r0, r0, #0x1d
+ add r0, r4, r0
+ asr r0, r0, #3
+ lsl r0, r0, #2
+ ldr r3, [r3, r0]
+ mov r0, #0xf
+ lsl r0, r2
+ lsl r1, r2
+ and r0, r3
+ cmp r1, r0
+ bne _021D7B62
+ mov r0, #1
+ pop {r4, r5}
+ bx lr
+_021D7B62:
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD17_021D7B0C
+
+ thumb_func_start MOD17_021D7B68
+MOD17_021D7B68: ; 0x021D7B68
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ bl MOD17_021D7E1C
+ mov r2, #0xa
+ add r0, r5, #0
+ add r1, r4, #0
+ lsl r2, r2, #0xa
+ mov r3, #0x20
+ bl MOD17_021D82E4
+ ldr r0, [r5, #0x20]
+ mov r1, #1
+ bl FUN_0200825C
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021D82B8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7B68
+
+ thumb_func_start MOD17_021D7B94
+MOD17_021D7B94: ; 0x021D7B94
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ ldr r3, _021D7BE0 ; =0x021DE2D8
+ add r5, r0, #0
+ str r1, [r5, #0x38]
+ add r4, r2, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, #2
+ str r0, [r2]
+ ldr r0, [r5, #0x38]
+ bl FUN_020178A0
+ ldr r0, [r5, #0x38]
+ mov r1, #2
+ add r2, sp, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ ldr r0, [r5, #0x38]
+ mov r1, #2
+ bl FUN_02018744
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ nop
+_021D7BE0: .word 0x021DE2D8
+ thumb_func_end MOD17_021D7B94
+
+ thumb_func_start MOD17_021D7BE4
+MOD17_021D7BE4: ; 0x021D7BE4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D82D4
+ add r0, r4, #0
+ bl MOD17_021D7E58
+ add r0, r4, #0
+ bl MOD17_021D834C
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #4]
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7BE4
+
+ thumb_func_start MOD17_021D7C10
+MOD17_021D7C10: ; 0x021D7C10
+ ldr r3, _021D7C18 ; =0x020178A1
+ ldr r0, [r0, #0x38]
+ mov r1, #2
+ bx r3
+ .align 2, 0
+_021D7C18: .word 0x020178A1
+ thumb_func_end MOD17_021D7C10
+
+ thumb_func_start MOD17_021D7C1C
+MOD17_021D7C1C: ; 0x021D7C1C
+ ldr r3, _021D7C24 ; =0x020081C5
+ ldr r0, [r0, #0x20]
+ bx r3
+ nop
+_021D7C24: .word 0x020081C5
+ thumb_func_end MOD17_021D7C1C
+
+ thumb_func_start MOD17_021D7C28
+MOD17_021D7C28: ; 0x021D7C28
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r0, _021D7CAC ; =0x04000454
+ str r3, [sp]
+ mov r1, #0
+ str r1, [r0]
+ sub r0, #0x10
+ add r6, r2, #0
+ ldr r7, [sp, #0x18]
+ str r1, [r0]
+ bl FUN_020B02C8
+ ldr r1, _021D7CB0 ; =0x04000470
+ lsl r0, r4, #0xc
+ str r0, [r1]
+ lsl r0, r6, #0xc
+ str r0, [r1]
+ mov r0, #0
+ str r0, [r1]
+ ldr r0, [sp]
+ ldr r1, _021D7CB4 ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r0, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r0, [r1, r0]
+ ldrsh r1, [r1, r2]
+ bl G3_RotZ
+ ldr r2, [r7, #8]
+ ldr r1, [r7, #4]
+ ldr r3, [r7]
+ ldr r0, _021D7CB8 ; =0x0400046C
+ str r3, [r0]
+ str r1, [r0]
+ neg r1, r4
+ str r2, [r0]
+ lsl r1, r1, #0xc
+ str r1, [r0, #4]
+ neg r1, r6
+ lsl r1, r1, #0xc
+ str r1, [r0, #4]
+ mov r1, #0
+ str r1, [r0, #4]
+ sub r0, #0x28
+ str r1, [r0]
+ ldr r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _021D7C94
+ add r0, r5, #0
+ bl MOD17_021D7E68
+_021D7C94:
+ ldr r0, [r5, #0x24]
+ cmp r0, #0
+ beq _021D7CA0
+ ldr r0, [r5, #0x20]
+ bl FUN_02006ED4
+_021D7CA0:
+ ldr r0, _021D7CBC ; =0x04000448
+ mov r1, #1
+ str r1, [r0]
+ str r1, [r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7CAC: .word 0x04000454
+_021D7CB0: .word 0x04000470
+_021D7CB4: .word 0x020FFA38
+_021D7CB8: .word 0x0400046C
+_021D7CBC: .word 0x04000448
+ thumb_func_end MOD17_021D7C28
+
+ thumb_func_start MOD17_021D7CC0
+MOD17_021D7CC0: ; 0x021D7CC0
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D80CC
+ mov r0, #0xe
+ bl FUN_02016B94
+ str r0, [r4, #0x38]
+ add r0, r4, #0
+ bl MOD17_021D7F34
+ pop {r4, pc}
+ thumb_func_end MOD17_021D7CC0
+
+ thumb_func_start MOD17_021D7CD8
+MOD17_021D7CD8: ; 0x021D7CD8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D8058
+ ldr r0, [r4, #0x38]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl MOD17_021D816C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7CD8
+
+ thumb_func_start MOD17_021D7CF0
+MOD17_021D7CF0: ; 0x021D7CF0
+ push {r3, lr}
+ ldr r0, [r0, #0x38]
+ bl FUN_0201AB60
+ bl FUN_02009F80
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7CF0
+
+ thumb_func_start MOD17_021D7D00
+MOD17_021D7D00: ; 0x021D7D00
+ ldr r3, _021D7D04 ; =MOD17_021D8194
+ bx r3
+ .align 2, 0
+_021D7D04: .word MOD17_021D8194
+ thumb_func_end MOD17_021D7D00
+
+ thumb_func_start MOD17_021D7D08
+MOD17_021D7D08: ; 0x021D7D08
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7D24 ; =0x021DE32C
+ add r3, sp, #0
+ mov r2, #5
+_021D7D12:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7D12
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7D24: .word 0x021DE32C
+ thumb_func_end MOD17_021D7D08
+
+ thumb_func_start MOD17_021D7D28
+MOD17_021D7D28: ; 0x021D7D28
+ push {r3, lr}
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r0, _021D7D9C ; =0x04000008
+ mov r1, #3
+ ldrh r2, [r0]
+ bic r2, r1
+ mov r1, #1
+ orr r1, r2
+ strh r1, [r0]
+ add r0, #0x58
+ ldrh r1, [r0]
+ ldr r2, _021D7DA0 ; =0xFFFFCFFD
+ and r1, r2
+ strh r1, [r0]
+ ldrh r3, [r0]
+ add r1, r2, #2
+ and r3, r1
+ mov r1, #0x10
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r3, [r0]
+ ldr r1, _021D7DA4 ; =0x0000CFFB
+ and r1, r3
+ strh r1, [r0]
+ add r1, r2, #2
+ ldrh r3, [r0]
+ lsr r2, r2, #0x11
+ and r3, r1
+ mov r1, #8
+ orr r1, r3
+ strh r1, [r0]
+ mov r0, #0
+ add r1, r0, #0
+ mov r3, #0x3f
+ str r0, [sp]
+ bl G3X_SetClearColor
+ ldr r2, _021D7DA8 ; =0x04000540
+ mov r0, #2
+ ldr r1, _021D7DAC ; =0xBFFF0000
+ str r0, [r2]
+ str r1, [r2, #0x40]
+ mov r1, #1
+ bl FUN_020AEB70
+ mov r0, #1
+ lsl r0, r0, #0xe
+ mov r1, #1
+ bl FUN_020AEDF4
+ pop {r3, pc}
+ .align 2, 0
+_021D7D9C: .word 0x04000008
+_021D7DA0: .word 0xFFFFCFFD
+_021D7DA4: .word 0x0000CFFB
+_021D7DA8: .word 0x04000540
+_021D7DAC: .word 0xBFFF0000
+ thumb_func_end MOD17_021D7D28
+
+ thumb_func_start MOD17_021D7DB0
+MOD17_021D7DB0: ; 0x021D7DB0
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021D7DF8 ; =0x021DE254
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7DFC ; =0xFFCFFFEF
+ and r1, r0
+ mov r0, #0x10
+ orr r0, r1
+ str r0, [r2]
+ bl FUN_020B0FC0
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r0, #0x1f
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x13
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021D7DF8: .word 0x021DE254
+_021D7DFC: .word 0xFFCFFFEF
+ thumb_func_end MOD17_021D7DB0
+
+ thumb_func_start MOD17_021D7E00
+MOD17_021D7E00: ; 0x021D7E00
+ push {r3, lr}
+ bl FUN_020AEAF4
+ bl FUN_020AEC60
+ pop {r3, pc}
+ thumb_func_end MOD17_021D7E00
+
+ thumb_func_start MOD17_021D7E0C
+MOD17_021D7E0C: ; 0x021D7E0C
+ push {r3, lr}
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ bl FUN_020B0FC0
+ pop {r3, pc}
+ thumb_func_end MOD17_021D7E0C
+
+ thumb_func_start MOD17_021D7E1C
+MOD17_021D7E1C: ; 0x021D7E1C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_02013CD4
+ str r0, [r5]
+ mov r1, #0x76
+ ldr r0, [r4, #0xc]
+ lsl r1, r1, #2
+ bl FUN_02016998
+ str r0, [r5, #4]
+ mov r0, #0x76
+ str r0, [r5, #8]
+ mov r0, #0
+ str r0, [r5, #0xc]
+ ldr r0, [r4, #0xc]
+ mov r1, #0x4c
+ bl FUN_02016998
+ str r0, [r5, #0x10]
+ mov r0, #0x13
+ str r0, [r5, #0x14]
+ mov r0, #0
+ str r0, [r5, #0x18]
+ mov r0, #1
+ str r0, [r5, #0x1c]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D7E1C
+
+ thumb_func_start MOD17_021D7E58
+MOD17_021D7E58: ; 0x021D7E58
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02013D18
+ mov r0, #0
+ str r0, [r4]
+ pop {r4, pc}
+ thumb_func_end MOD17_021D7E58
+
+ thumb_func_start MOD17_021D7E68
+MOD17_021D7E68: ; 0x021D7E68
+ ldr r3, _021D7E70 ; =0x02013D5D
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D7E70: .word 0x02013D5D
+ thumb_func_end MOD17_021D7E68
+
+ thumb_func_start MOD17_021D7E74
+MOD17_021D7E74: ; 0x021D7E74
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp, #4]
+ add r0, r2, #0
+ add r4, r1, #0
+ str r2, [sp]
+ cmp r0, #0
+ ble _021D7ED0
+ add r7, r5, #0
+ add r6, r4, #0
+ add r7, #0xc
+_021D7E8E:
+ ldr r1, [r5, #0xc]
+ ldr r0, [r5, #8]
+ cmp r1, r0
+ blt _021D7E9A
+ bl ErrorHandling
+_021D7E9A:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021D7EB0
+ add r0, r6, #0
+ bl FUN_02013D98
+ ldr r2, [r5, #0xc]
+ ldr r1, [r5, #4]
+ lsl r2, r2, #2
+ str r0, [r1, r2]
+ b _021D7EBA
+_021D7EB0:
+ ldr r1, [r5, #0xc]
+ ldr r0, [r5, #4]
+ lsl r2, r1, #2
+ mov r1, #0
+ str r1, [r0, r2]
+_021D7EBA:
+ ldr r0, [r7]
+ add r4, #8
+ add r0, r0, #1
+ str r0, [r7]
+ ldr r0, [sp, #4]
+ add r6, #8
+ add r1, r0, #1
+ ldr r0, [sp]
+ str r1, [sp, #4]
+ cmp r1, r0
+ blt _021D7E8E
+_021D7ED0:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021D7E74
+
+ thumb_func_start MOD17_021D7ED4
+MOD17_021D7ED4: ; 0x021D7ED4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp, #4]
+ add r0, r2, #0
+ add r4, r1, #0
+ str r2, [sp]
+ cmp r0, #0
+ ble _021D7F30
+ add r7, r5, #0
+ add r6, r4, #0
+ add r7, #0x18
+_021D7EEE:
+ ldr r1, [r5, #0x18]
+ ldr r0, [r5, #0x14]
+ cmp r1, r0
+ blt _021D7EFA
+ bl ErrorHandling
+_021D7EFA:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021D7F10
+ add r0, r6, #0
+ bl FUN_02013E14
+ ldr r2, [r5, #0x18]
+ ldr r1, [r5, #0x10]
+ lsl r2, r2, #2
+ str r0, [r1, r2]
+ b _021D7F1A
+_021D7F10:
+ ldr r1, [r5, #0x18]
+ ldr r0, [r5, #0x10]
+ lsl r2, r1, #2
+ mov r1, #0
+ str r1, [r0, r2]
+_021D7F1A:
+ ldr r0, [r7]
+ add r4, #0xc
+ add r0, r0, #1
+ str r0, [r7]
+ ldr r0, [sp, #4]
+ add r6, #0xc
+ add r1, r0, #1
+ ldr r0, [sp]
+ str r1, [sp, #4]
+ cmp r1, r0
+ blt _021D7EEE
+_021D7F30:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021D7ED4
+
+ thumb_func_start MOD17_021D7F34
+MOD17_021D7F34: ; 0x021D7F34
+ push {r4, r5, lr}
+ sub sp, #0x8c
+ ldr r5, _021D8044 ; =0x021DE2A0
+ add r4, r0, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x70
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ ldr r0, [r4, #0x38]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02017F18
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl FUN_02018744
+ ldr r5, _021D8048 ; =0x021DE2BC
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ ldr r0, [r4, #0x38]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02017F18
+ ldr r0, [r4, #0x38]
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _021D804C ; =0x021DE2F4
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ ldr r0, [r4, #0x38]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02017F18
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl FUN_02018744
+ ldr r5, _021D8050 ; =0x021DE284
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ ldr r0, [r4, #0x38]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02017F18
+ ldr r0, [r4, #0x38]
+ mov r1, #4
+ bl FUN_02018744
+ ldr r5, _021D8054 ; =0x021DE310
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #5
+ str r0, [r3]
+ ldr r0, [r4, #0x38]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #5
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02017F18
+ ldr r0, [r4, #0x38]
+ mov r1, #5
+ bl FUN_02018744
+ add sp, #0x8c
+ pop {r4, r5, pc}
+ nop
+_021D8044: .word 0x021DE2A0
+_021D8048: .word 0x021DE2BC
+_021D804C: .word 0x021DE2F4
+_021D8050: .word 0x021DE284
+_021D8054: .word 0x021DE310
+ thumb_func_end MOD17_021D7F34
+
+ thumb_func_start MOD17_021D8058
+MOD17_021D8058: ; 0x021D8058
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x38]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x38]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #0x38]
+ mov r1, #5
+ bl FUN_020178A0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D8058
+
+ thumb_func_start MOD17_021D8088
+MOD17_021D8088: ; 0x021D8088
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x77
+ mov r1, #0xe
+ bl FUN_02020C44
+ mov r1, #0x77
+ str r0, [r4, #0x2c]
+ mov r0, #0xe
+ lsl r1, r1, #2
+ bl FUN_02016998
+ mov r2, #0x77
+ mov r1, #0
+ lsl r2, r2, #2
+ str r0, [r4, #0x30]
+ bl Call_FillMemWithValue
+ mov r0, #0x77
+ str r0, [r4, #0x34]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D8088
+
+ thumb_func_start MOD17_021D80B4
+MOD17_021D80B4: ; 0x021D80B4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x30]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x2c]
+ bl FUN_02020C90
+ mov r0, #0
+ str r0, [r4, #0x34]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D80B4
+
+ thumb_func_start MOD17_021D80CC
+MOD17_021D80CC: ; 0x021D80CC
+ push {r4, r5, lr}
+ sub sp, #0x24
+ ldr r5, _021D8168 ; =0x021DE264
+ add r3, sp, #0x14
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ mov r1, #0x10
+ add r0, r2, #0
+ add r2, r1, #0
+ bl FUN_0201D060
+ mov r0, #5
+ mov r1, #0xe
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x7c
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x1f
+ str r3, [sp, #0xc]
+ mov r2, #0xe
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ add r1, r4, #0
+ mov r0, #0x30
+ add r1, #0x50
+ mov r2, #0xe
+ bl FUN_02008C9C
+ str r0, [r4, #0x3c]
+ add r0, r4, #0
+ mov r2, #2
+ add r0, #0x50
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ mov r0, #8
+ mov r1, #0
+ mov r2, #0xe
+ bl FUN_02008DEC
+ str r0, [r4, #0x40]
+ mov r0, #5
+ mov r1, #1
+ mov r2, #0xe
+ bl FUN_02008DEC
+ str r0, [r4, #0x44]
+ mov r0, #0x30
+ mov r1, #2
+ mov r2, #0xe
+ bl FUN_02008DEC
+ str r0, [r4, #0x48]
+ mov r0, #0x30
+ mov r1, #3
+ mov r2, #0xe
+ bl FUN_02008DEC
+ str r0, [r4, #0x4c]
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021D8168: .word 0x021DE264
+ thumb_func_end MOD17_021D80CC
+
+ thumb_func_start MOD17_021D816C
+MOD17_021D816C: ; 0x021D816C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x3c]
+ bl FUN_0201FD58
+ mov r4, #0
+_021D8178:
+ ldr r0, [r5, #0x40]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D8178
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ bl FUN_02009FA0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021D816C
+
+ thumb_func_start MOD17_021D8194
+MOD17_021D8194: ; 0x021D8194
+ ldr r3, _021D819C ; =0x0201FDED
+ ldr r0, [r0, #0x3c]
+ bx r3
+ nop
+_021D819C: .word 0x0201FDED
+ thumb_func_end MOD17_021D8194
+
+ thumb_func_start MOD17_021D81A0
+MOD17_021D81A0: ; 0x021D81A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r4, #0
+ add r7, r0, #0
+ add r6, r1, #0
+ add r5, r4, #0
+_021D81AC:
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x19
+ add r1, r4, #1
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02006C98
+ str r0, [sp, #4]
+ cmp r0, #0
+ bne _021D81C6
+ bl ErrorHandling
+_021D81C6:
+ ldr r1, [sp, #4]
+ add r0, r7, #0
+ add r2, r4, #0
+ bl MOD17_021D7A2C
+ ldr r1, [r6]
+ add r4, r4, #1
+ add r1, r1, r5
+ str r0, [r1, #4]
+ ldr r1, [r7]
+ ldr r0, [r6]
+ str r1, [r0, r5]
+ add r5, #8
+ cmp r4, #0x64
+ blt _021D81AC
+ mov r0, #1
+ mov r1, #0
+ str r0, [sp]
+ mov r0, #0x19
+ add r2, r1, #0
+ mov r3, #0xe
+ bl FUN_02006C98
+ add r4, r0, #0
+ ldr r0, [r6, #0x14]
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_02020CD4
+ ldr r1, [r6, #8]
+ add r0, r4, #0
+ add r1, r1, #4
+ bl FUN_020B0138
+ ldr r1, [r7]
+ ldr r0, [r6, #8]
+ str r1, [r0]
+ ldr r0, [r6, #8]
+ mov r1, #3
+ str r1, [r0, #8]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D81A0
+
+ thumb_func_start MOD17_021D821C
+MOD17_021D821C: ; 0x021D821C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ mov r0, #0x87
+ add r5, r1, #0
+ mov r4, #0
+ str r0, [sp, #8]
+_021D822A:
+ mov r0, #1
+ add r1, r4, #0
+ str r0, [sp]
+ mov r0, #0x19
+ add r1, #0xce
+ mov r2, #0
+ mov r3, #0xe
+ bl FUN_02006C98
+ add r2, r4, #0
+ add r1, r0, #0
+ add r2, #0x64
+ add r0, r7, #0
+ lsl r6, r2, #3
+ bl MOD17_021D7A2C
+ ldr r1, [r5]
+ mov r2, #0
+ add r1, r1, r6
+ str r0, [r1, #4]
+ ldr r1, [r7]
+ ldr r0, [r5]
+ mov r3, #0xe
+ str r1, [r0, r6]
+ add r0, r4, #1
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp]
+ ldr r1, [sp, #8]
+ mov r0, #0x19
+ bl FUN_02006C98
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #4]
+ bl FUN_02020CD4
+ ldr r1, [sp, #4]
+ mov r0, #0xc
+ add r6, r1, #0
+ mul r6, r0
+ ldr r1, [r5, #8]
+ ldr r0, [sp, #0xc]
+ add r1, r1, r6
+ add r1, r1, #4
+ bl FUN_020B0138
+ ldr r0, [r5, #8]
+ add r0, r0, r6
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ bne _021D8298
+ bl ErrorHandling
+_021D8298:
+ ldr r1, [r7]
+ ldr r0, [r5, #8]
+ add r4, r4, #1
+ str r1, [r0, r6]
+ ldr r0, [r5, #8]
+ add r1, r0, r6
+ mov r0, #1
+ str r0, [r1, #8]
+ ldr r0, [sp, #8]
+ add r0, r0, #4
+ str r0, [sp, #8]
+ cmp r4, #0x12
+ blt _021D822A
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D821C
+
+ thumb_func_start MOD17_021D82B8
+MOD17_021D82B8: ; 0x021D82B8
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ add r3, r1, #0
+ mov r2, #0
+ mov r0, #0x19
+ mov r1, #0xeb
+ str r2, [sp]
+ bl FUN_02006C98
+ str r0, [r4, #0x28]
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D82B8
+
+ thumb_func_start MOD17_021D82D4
+MOD17_021D82D4: ; 0x021D82D4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #0x28]
+ pop {r4, pc}
+ thumb_func_end MOD17_021D82D4
+
+ thumb_func_start MOD17_021D82E4
+MOD17_021D82E4: ; 0x021D82E4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl FUN_02006D98
+ str r0, [r5, #0x20]
+ ldr r3, _021D833C ; =0x021064B8
+ mov r1, #0
+ ldr r3, [r3]
+ add r0, r4, #0
+ add r2, r1, #0
+ blx r3
+ ldr r3, _021D8340 ; =0x021064C0
+ add r4, r0, #0
+ ldr r3, [r3]
+ add r0, r6, #0
+ mov r1, #0
+ mov r2, #1
+ blx r3
+ ldr r2, _021D8344 ; =0x7FFF0000
+ add r6, r0, #0
+ and r2, r4
+ lsl r1, r4, #0x10
+ lsr r2, r2, #0x10
+ ldr r0, [r5, #0x20]
+ lsr r1, r1, #0xd
+ lsl r2, r2, #4
+ bl FUN_020081A8
+ ldr r2, _021D8348 ; =0xFFFF0000
+ lsl r1, r6, #0x10
+ and r2, r6
+ lsr r2, r2, #0x10
+ ldr r0, [r5, #0x20]
+ lsr r1, r1, #0xd
+ lsl r2, r2, #3
+ bl FUN_020081B4
+ mov r0, #1
+ str r0, [r5, #0x24]
+ pop {r4, r5, r6, pc}
+ nop
+_021D833C: .word 0x021064B8
+_021D8340: .word 0x021064C0
+_021D8344: .word 0x7FFF0000
+_021D8348: .word 0xFFFF0000
+ thumb_func_end MOD17_021D82E4
+
+ thumb_func_start MOD17_021D834C
+MOD17_021D834C: ; 0x021D834C
+ ldr r3, _021D8354 ; =0x020072E9
+ ldr r0, [r0, #0x20]
+ bx r3
+ nop
+_021D8354: .word 0x020072E9
+ thumb_func_end MOD17_021D834C
+
+ thumb_func_start MOD17_021D8358
+MOD17_021D8358: ; 0x021D8358
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ lsl r0, r4, #3
+ str r0, [sp]
+ add r7, r3, #0
+ ldr r1, [sp]
+ add r0, r7, #0
+ add r6, r2, #0
+ bl FUN_02016998
+ ldr r2, [sp]
+ mov r1, #0
+ str r0, [r5]
+ bl Call_FillMemWithValue
+ add r0, r4, #0
+ add r1, r7, #0
+ bl FUN_02020C44
+ str r0, [r5, #0x10]
+ str r4, [r5, #4]
+ mov r0, #0xc
+ add r4, r6, #0
+ mul r4, r0
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02016998
+ mov r1, #0
+ add r2, r4, #0
+ str r0, [r5, #8]
+ bl Call_FillMemWithValue
+ add r0, r6, #0
+ add r1, r7, #0
+ bl FUN_02020C44
+ str r0, [r5, #0x14]
+ str r6, [r5, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D8358
+
+ thumb_func_start MOD17_021D83AC
+MOD17_021D83AC: ; 0x021D83AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021D83BE
+ bl FUN_02020C90
+ mov r0, #0
+ str r0, [r4, #0x10]
+_021D83BE:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021D83CC
+ bl FUN_02020C90
+ mov r0, #0
+ str r0, [r4, #0x14]
+_021D83CC:
+ ldr r0, [r4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4]
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4, #8]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D83AC
+
+ thumb_func_start MOD17_021D83E4
+MOD17_021D83E4: ; 0x021D83E4
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ mov r2, #2
+ add r4, r0, #0
+ mov r0, #3
+ mov r1, #0xd
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r2, #1
+ mov r0, #3
+ mov r1, #0xe
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ ldr r1, _021D84D8 ; =0x000006D8
+ add r0, r4, #0
+ mov r2, #0xd
+ bl FUN_02006268
+ ldr r2, _021D84D8 ; =0x000006D8
+ mov r1, #0
+ add r5, r0, #0
+ bl Call_FillMemWithValue
+ ldr r0, _021D84DC ; =MOD17_021D8FC8
+ add r1, r5, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ add r0, r4, #0
+ bl FUN_0200628C
+ add r4, r0, #0
+ ldr r1, [r4, #0xc]
+ ldr r0, _021D84E0 ; =0x000006C8
+ str r1, [r5, r0]
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ ldr r0, [r4, #8]
+ add r1, r5, r1
+ bl MOD17_021DAFA4
+ add r0, r5, #0
+ bl MOD17_021D8D60
+ mov r1, #0x35
+ lsl r1, r1, #4
+ add r0, r5, r1
+ sub r1, #0x81
+ mov r2, #0xd
+ bl MOD17_021DB9F4
+ mov r0, #0xaf
+ lsl r0, r0, #2
+ mov r1, #0xd
+ bl MOD17_021D74E0
+ mov r1, #0xd6
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r1, [r4]
+ add r0, r5, #0
+ mov r2, #0xa
+ bl MOD17_021D8DA8
+ add r0, r5, #0
+ bl MOD17_021D8E84
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD17_021D8FD0
+ add r0, r5, #0
+ bl MOD17_021D9024
+ ldr r1, [r4, #0xc]
+ add r0, r5, #0
+ bl MOD17_021D9228
+ ldr r0, _021D84E4 ; =0x00000554
+ mov r2, #0xfa
+ add r1, r5, r0
+ str r1, [sp]
+ mov r1, #1
+ sub r0, #0xc8
+ lsl r2, r2, #2
+ str r1, [sp, #4]
+ add r1, r5, r2
+ sub r2, #0x8c
+ add r0, r5, r0
+ add r2, r5, r2
+ add r3, r5, #0
+ bl MOD17_021DB038
+ mov r0, #0xd
+ bl FUN_02014590
+ ldr r1, _021D84E8 ; =0x000006A4
+ str r0, [r5, r1]
+ mov r0, #0xd
+ mov r1, #1
+ bl FUN_02018FF4
+ ldr r2, _021D84EC ; =0x000006A8
+ mov r1, #0
+ str r0, [r5, r2]
+ sub r2, #0xc
+ str r1, [r5, r2]
+ mov r0, #0x35
+ add r2, r1, #0
+ bl FUN_0200433C
+ mov r0, #1
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D84D8: .word 0x000006D8
+_021D84DC: .word MOD17_021D8FC8
+_021D84E0: .word 0x000006C8
+_021D84E4: .word 0x00000554
+_021D84E8: .word 0x000006A4
+_021D84EC: .word 0x000006A8
+ thumb_func_end MOD17_021D83E4
+
+ thumb_func_start MOD17_021D84F0
+MOD17_021D84F0: ; 0x021D84F0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ add r0, r7, #0
+ mov r6, #0
+ bl FUN_0200628C
+ ldr r1, [r5]
+ cmp r1, #0xc
+ bhi _021D85BA
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D8518: ; jump table
+ .short _021D8532 - _021D8518 - 2 ; case 0
+ .short _021D8532 - _021D8518 - 2 ; case 1
+ .short _021D854E - _021D8518 - 2 ; case 2
+ .short _021D855E - _021D8518 - 2 ; case 3
+ .short _021D858A - _021D8518 - 2 ; case 4
+ .short _021D85AA - _021D8518 - 2 ; case 5
+ .short _021D85D8 - _021D8518 - 2 ; case 6
+ .short _021D860C - _021D8518 - 2 ; case 7
+ .short _021D8636 - _021D8518 - 2 ; case 8
+ .short _021D8678 - _021D8518 - 2 ; case 9
+ .short _021D86B2 - _021D8518 - 2 ; case 10
+ .short _021D86D4 - _021D8518 - 2 ; case 11
+ .short _021D86F2 - _021D8518 - 2 ; case 12
+_021D8532:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0xd
+ str r1, [sp, #8]
+ mov r1, #5
+ add r2, r1, #0
+ add r3, r6, #0
+ bl FUN_0200E1D0
+ mov r0, #2
+ str r0, [r5]
+ b _021D8710
+_021D854E:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D85BA
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8710
+_021D855E:
+ ldr r0, [r0, #0x1c]
+ cmp r0, #1
+ bne _021D8584
+ mov r0, #1
+ bl FUN_02002BB8
+ ldr r0, _021D871C ; =0x00000554
+ ldr r2, _021D8720 ; =0x00000151
+ add r0, r4, r0
+ mov r1, #0x1a
+ mov r3, #0x2f
+ bl MOD17_021DCB80
+ ldr r1, _021D8724 ; =0x000006CC
+ str r0, [r4, r1]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8710
+_021D8584:
+ mov r0, #6
+ str r0, [r5]
+ b _021D8710
+_021D858A:
+ ldr r0, _021D8724 ; =0x000006CC
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D85BA
+ ldr r0, _021D871C ; =0x00000554
+ add r0, r4, r0
+ bl MOD17_021DCBC0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8710
+_021D85AA:
+ ldr r0, _021D8728 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ and r1, r0
+ ldr r0, _021D872C ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ orr r0, r1
+ bne _021D85BC
+_021D85BA:
+ b _021D8710
+_021D85BC:
+ ldr r0, _021D871C ; =0x00000554
+ ldr r2, _021D8720 ; =0x00000151
+ add r0, r4, r0
+ mov r1, #0x1a
+ mov r3, #0x30
+ bl MOD17_021DCB48
+ add r0, r6, #0
+ bl FUN_02002BB8
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8710
+_021D85D8:
+ ldr r1, _021D8730 ; =0x0000069C
+ ldr r0, [r4, r1]
+ cmp r0, #3
+ bne _021D85EE
+ add r1, r1, #4
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD17_021D92BC
+ mov r0, #7
+ str r0, [r5]
+_021D85EE:
+ ldr r0, _021D8734 ; =0x0000048C
+ add r0, r4, r0
+ bl MOD17_021DAF64
+ add r0, r4, #0
+ bl MOD17_021D9BE8
+ ldr r0, _021D871C ; =0x00000554
+ add r0, r4, r0
+ bl MOD17_021DCB30
+ add r0, r4, #0
+ bl MOD17_021D9140
+ b _021D8710
+_021D860C:
+ mov r0, #0x6a
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D8710
+ add r1, r6, #0
+ str r1, [r4, r0]
+ mov r1, #8
+ str r1, [r5]
+ mov r1, #4
+ sub r0, r0, #4
+ str r1, [r4, r0]
+ mov r1, #0x47
+ lsl r1, r1, #4
+ add r0, r4, r1
+ sub r1, #0x88
+ add r1, r4, r1
+ mov r2, #0xe
+ bl MOD17_021DD464
+ b _021D8710
+_021D8636:
+ ldr r1, _021D8730 ; =0x0000069C
+ ldr r0, [r4, r1]
+ cmp r0, #9
+ bne _021D864E
+ add r1, r1, #4
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD17_021D942C
+ mov r0, #0xa
+ str r0, [r5]
+ b _021D8710
+_021D864E:
+ cmp r0, #8
+ bne _021D8662
+ mov r0, #9
+ str r0, [r5]
+ mov r0, #5
+ str r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD17_021D9C3C
+ b _021D8710
+_021D8662:
+ add r0, r4, #0
+ bl MOD17_021D98F0
+ ldr r1, _021D8730 ; =0x0000069C
+ str r0, [r4, r1]
+ mov r0, #0x47
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD17_021DD488
+ b _021D8710
+_021D8678:
+ ldr r0, _021D8730 ; =0x0000069C
+ ldr r1, [r4, r0]
+ cmp r1, #6
+ bne _021D868C
+ mov r1, #1
+ add r0, #0x10
+ str r1, [r4, r0]
+ mov r0, #0xb
+ str r0, [r5]
+ b _021D8710
+_021D868C:
+ cmp r1, #7
+ bne _021D869C
+ add r1, r6, #0
+ add r0, #0x10
+ str r1, [r4, r0]
+ mov r0, #0xb
+ str r0, [r5]
+ b _021D8710
+_021D869C:
+ add r0, r4, #0
+ bl MOD17_021D9CAC
+ ldr r1, _021D8730 ; =0x0000069C
+ str r0, [r4, r1]
+ mov r0, #0x47
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD17_021DD488
+ b _021D8710
+_021D86B2:
+ mov r0, #0x6a
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D8710
+ add r2, r6, #0
+ str r2, [r4, r0]
+ mov r1, #6
+ str r1, [r5]
+ sub r0, r0, #4
+ str r2, [r4, r0]
+ mov r0, #0x47
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD17_021DD494
+ b _021D8710
+_021D86D4:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0xd
+ str r1, [sp, #8]
+ add r1, r6, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D8710
+_021D86F2:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D8710
+ add r0, r6, #0
+ str r0, [r5]
+ ldr r0, _021D8730 ; =0x0000069C
+ mov r1, #0xa
+ str r1, [r4, r0]
+ mov r0, #0x47
+ lsl r0, r0, #4
+ add r0, r4, r0
+ mov r6, #1
+ bl MOD17_021DD494
+_021D8710:
+ add r0, r4, #0
+ bl MOD17_021D8D8C
+ add r0, r6, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D871C: .word 0x00000554
+_021D8720: .word 0x00000151
+_021D8724: .word 0x000006CC
+_021D8728: .word 0x021C48B8
+_021D872C: .word 0x021C48F8
+_021D8730: .word 0x0000069C
+_021D8734: .word 0x0000048C
+ thumb_func_end MOD17_021D84F0
+
+ thumb_func_start MOD17_021D8738
+MOD17_021D8738: ; 0x021D8738
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ add r0, r6, #0
+ bl FUN_0200628C
+ add r5, r0, #0
+ ldr r0, _021D8808 ; =0x000006AC
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021D8768
+ ldr r0, [r5, #0x10]
+ mov r1, #7
+ bl FUN_0202A170
+ mov r1, #0xfa
+ lsl r1, r1, #2
+ ldr r0, [r5, #4]
+ ldr r2, [r5, #0x14]
+ add r1, r4, r1
+ bl MOD17_021D95AC
+_021D8768:
+ ldr r1, [r5, #0x18]
+ cmp r1, #0
+ beq _021D8780
+ ldr r0, _021D8808 ; =0x000006AC
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021D877C
+ mov r0, #1
+ str r0, [r1]
+ b _021D8780
+_021D877C:
+ mov r0, #0
+ str r0, [r1]
+_021D8780:
+ ldr r0, _021D880C ; =0x000006A4
+ ldr r0, [r4, r0]
+ bl FUN_020145A8
+ ldr r0, _021D8810 ; =0x000006A8
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl FUN_020191A4
+ add r0, r4, #0
+ bl MOD17_021D92AC
+ ldr r0, _021D8814 ; =0x0000048C
+ add r0, r4, r0
+ bl MOD17_021DB08C
+ add r0, r4, #0
+ bl MOD17_021D912C
+ add r0, r4, #0
+ bl MOD17_021D9014
+ add r0, r4, #0
+ bl MOD17_021D8E60
+ add r0, r4, #0
+ bl MOD17_021D8F40
+ mov r0, #0xd6
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD17_021D750C
+ mov r0, #0xd6
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r0, #8
+ add r0, r4, r0
+ bl MOD17_021DBA1C
+ add r0, r4, #0
+ bl MOD17_021D8D94
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201CD04
+ cmp r0, #1
+ beq _021D87F0
+ bl ErrorHandling
+_021D87F0:
+ add r0, r6, #0
+ bl FUN_0200627C
+ mov r0, #0xd
+ bl FUN_020168D0
+ mov r0, #0xe
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ nop
+_021D8808: .word 0x000006AC
+_021D880C: .word 0x000006A4
+_021D8810: .word 0x000006A8
+_021D8814: .word 0x0000048C
+ thumb_func_end MOD17_021D8738
+
+ thumb_func_start MOD17_021D8818
+MOD17_021D8818: ; 0x021D8818
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ mov r2, #2
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0xd
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r2, #1
+ mov r0, #3
+ mov r1, #0xe
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ ldr r1, _021D897C ; =0x000006D8
+ add r0, r5, #0
+ mov r2, #0xd
+ bl FUN_02006268
+ ldr r2, _021D897C ; =0x000006D8
+ mov r1, #0
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ ldr r0, _021D8980 ; =MOD17_021D8FC8
+ add r1, r4, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ add r0, r5, #0
+ bl FUN_0200628C
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ ldr r1, _021D8984 ; =0x000006B4
+ str r0, [r4, r1]
+ ldr r2, [r5, #0x10]
+ add r0, r1, #4
+ str r2, [r4, r0]
+ add r0, r1, #0
+ ldr r2, [r5, #0x14]
+ add r0, #8
+ str r2, [r4, r0]
+ add r0, r1, #0
+ ldr r2, [r5, #8]
+ add r0, #0xc
+ str r2, [r4, r0]
+ ldr r0, [r5, #0x1c]
+ add r1, #0x10
+ str r0, [r4, r1]
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ ldr r0, [r5, #0x18]
+ add r1, r4, r1
+ bl MOD17_021DAFA4
+ add r0, r4, #0
+ bl MOD17_021D8D60
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ bl FUN_0201FD98
+ bl FUN_02033E74
+ mov r0, #1
+ mov r1, #0x10
+ bl FUN_02008D44
+ mov r0, #1
+ bl FUN_02008DDC
+ mov r1, #0x35
+ lsl r1, r1, #4
+ add r0, r4, r1
+ sub r1, #0x81
+ mov r2, #0xd
+ bl MOD17_021DB9F4
+ mov r0, #0xaf
+ lsl r0, r0, #2
+ mov r1, #0xd
+ bl MOD17_021D74E0
+ mov r1, #0xd6
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r1, [r5, #0x20]
+ ldr r0, _021D8988 ; =0x000006C8
+ str r1, [r4, r0]
+ sub r1, r0, #4
+ ldr r1, [r4, r1]
+ ldrb r1, [r1, #0x16]
+ cmp r1, #0
+ bne _021D88F2
+ ldr r0, [r5, #0xc]
+ bl MOD17_021D9C08
+ mov r1, #0x6b
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ b _021D88F8
+_021D88F2:
+ mov r1, #0x14
+ sub r0, #0x18
+ str r1, [r4, r0]
+_021D88F8:
+ mov r2, #0x6b
+ lsl r2, r2, #4
+ ldr r1, [r5]
+ ldr r2, [r4, r2]
+ add r0, r4, #0
+ bl MOD17_021D8E18
+ add r0, r4, #0
+ bl MOD17_021D8E84
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD17_021D8FD0
+ add r0, r4, #0
+ bl MOD17_021D90A8
+ ldr r0, [r5, #0x20]
+ mov r1, #0x6b
+ str r0, [sp]
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ ldr r2, [r5, #8]
+ ldr r3, [r5, #0x1c]
+ add r0, r4, #0
+ bl MOD17_021D926C
+ ldr r0, _021D898C ; =0x00000554
+ mov r2, #0xfa
+ add r1, r4, r0
+ str r1, [sp]
+ mov r1, #0
+ sub r0, #0xc8
+ lsl r2, r2, #2
+ str r1, [sp, #4]
+ add r1, r4, r2
+ sub r2, #0x8c
+ add r0, r4, r0
+ add r2, r4, r2
+ add r3, r4, #0
+ bl MOD17_021DB038
+ mov r0, #0xd
+ bl FUN_02014590
+ ldr r1, _021D8990 ; =0x000006A4
+ str r0, [r4, r1]
+ mov r0, #0xd
+ mov r1, #1
+ bl FUN_02018FF4
+ ldr r1, _021D8994 ; =0x000006A8
+ mov r2, #0
+ str r0, [r4, r1]
+ add r0, r1, #0
+ sub r0, #0xc
+ add r1, #0x1c
+ str r2, [r4, r0]
+ ldr r0, [r4, r1]
+ ldrb r0, [r0, #0x16]
+ bl FUN_020833D4
+ mov r0, #1
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_021D897C: .word 0x000006D8
+_021D8980: .word MOD17_021D8FC8
+_021D8984: .word 0x000006B4
+_021D8988: .word 0x000006C8
+_021D898C: .word 0x00000554
+_021D8990: .word 0x000006A4
+_021D8994: .word 0x000006A8
+ thumb_func_end MOD17_021D8818
+
+ thumb_func_start MOD17_021D8998
+MOD17_021D8998: ; 0x021D8998
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ bl FUN_02006278
+ ldr r1, [r4]
+ add r5, r0, #0
+ mov r6, #0
+ cmp r1, #0x14
+ bhi _021D89FA
+ add r2, r1, r1
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021D89B8: ; jump table
+ .short _021D89E2 - _021D89B8 - 2 ; case 0
+ .short _021D89F2 - _021D89B8 - 2 ; case 1
+ .short _021D8A04 - _021D89B8 - 2 ; case 2
+ .short _021D8A3C - _021D89B8 - 2 ; case 3
+ .short _021D8A5A - _021D89B8 - 2 ; case 4
+ .short _021D8A72 - _021D89B8 - 2 ; case 5
+ .short _021D8A90 - _021D89B8 - 2 ; case 6
+ .short _021D8AB2 - _021D89B8 - 2 ; case 7
+ .short _021D8AD0 - _021D89B8 - 2 ; case 8
+ .short _021D8AE8 - _021D89B8 - 2 ; case 9
+ .short _021D8B0A - _021D89B8 - 2 ; case 10
+ .short _021D8B1C - _021D89B8 - 2 ; case 11
+ .short _021D8B3A - _021D89B8 - 2 ; case 12
+ .short _021D8B56 - _021D89B8 - 2 ; case 13
+ .short _021D8BBC - _021D89B8 - 2 ; case 14
+ .short _021D8BEA - _021D89B8 - 2 ; case 15
+ .short _021D8C64 - _021D89B8 - 2 ; case 16
+ .short _021D8C64 - _021D89B8 - 2 ; case 17
+ .short _021D8C64 - _021D89B8 - 2 ; case 18
+ .short _021D8C04 - _021D89B8 - 2 ; case 19
+ .short _021D8C34 - _021D89B8 - 2 ; case 20
+_021D89E2:
+ mov r0, #0x2a
+ mov r1, #0x1e
+ bl FUN_020053CC
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D89F2:
+ bl FUN_02005404
+ cmp r0, #0
+ beq _021D89FC
+_021D89FA:
+ b _021D8C64
+_021D89FC:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8A04:
+ bl MOD17_021D9778
+ mov r2, #0x6b
+ lsl r2, r2, #4
+ ldr r2, [r5, r2]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD17_021D9BA4
+ ldr r0, _021D8C70 ; =0x000006B8
+ ldr r0, [r5, r0]
+ cmp r0, #3
+ beq _021D8A28
+ add r0, r5, #0
+ mov r1, #0x1a
+ bl MOD17_021D9B9C
+ b _021D8A30
+_021D8A28:
+ add r0, r5, #0
+ mov r1, #0x1c
+ bl MOD17_021D9B9C
+_021D8A30:
+ ldr r1, _021D8C74 ; =0x000006CC
+ str r0, [r5, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8A3C:
+ ldr r0, _021D8C74 ; =0x000006CC
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D8B42
+ add r0, r5, #0
+ bl MOD17_021D9BC4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8A5A:
+ mov r1, #0x1b
+ lsl r1, r1, #6
+ ldr r1, [r5, r1]
+ add r1, #0x1d
+ bl MOD17_021D9B9C
+ ldr r1, _021D8C74 ; =0x000006CC
+ str r0, [r5, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8A72:
+ ldr r0, _021D8C74 ; =0x000006CC
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D8B42
+ add r0, r5, #0
+ bl MOD17_021D9BC4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8A90:
+ ldr r1, _021D8C70 ; =0x000006B8
+ ldr r1, [r5, r1]
+ cmp r1, #3
+ beq _021D8AA0
+ mov r1, #0x2a
+ bl MOD17_021D9B9C
+ b _021D8AA6
+_021D8AA0:
+ mov r1, #0x29
+ bl MOD17_021D9B9C
+_021D8AA6:
+ ldr r1, _021D8C74 ; =0x000006CC
+ str r0, [r5, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8AB2:
+ ldr r0, _021D8C74 ; =0x000006CC
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D8B42
+ add r0, r5, #0
+ bl MOD17_021D9BC4
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8AD0:
+ ldr r0, _021D8C78 ; =0x000006C4
+ ldr r0, [r5, r0]
+ ldrb r0, [r0, #0x16]
+ cmp r0, #0
+ beq _021D8AE0
+ mov r0, #2
+ bl FUN_02031588
+_021D8AE0:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8AE8:
+ ldr r0, _021D8C78 ; =0x000006C4
+ ldr r0, [r5, r0]
+ ldrb r0, [r0, #0x16]
+ cmp r0, #0
+ beq _021D8B04
+ mov r0, #2
+ bl FUN_020315D8
+ cmp r0, #0
+ beq _021D8B42
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8B04:
+ add r0, r1, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8B0A:
+ bl MOD17_021D9800
+ ldr r0, _021D8C7C ; =0x00000643
+ bl FUN_020054C8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8B1C:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0xd
+ str r1, [sp, #8]
+ mov r1, #0x11
+ mov r2, #0x13
+ add r3, r6, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8B3A:
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D8B44
+_021D8B42:
+ b _021D8C64
+_021D8B44:
+ ldr r1, _021D8C80 ; =0x00000491
+ mov r0, #7
+ add r2, r6, #0
+ bl FUN_0200433C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8B56:
+ ldr r0, _021D8C84 ; =0x0000069C
+ ldr r1, [r5, r0]
+ cmp r1, #3
+ bne _021D8B86
+ add r0, #0x28
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_02083A7C
+ ldr r0, _021D8C78 ; =0x000006C4
+ ldr r0, [r5, r0]
+ ldrb r0, [r0, #0x16]
+ cmp r0, #0
+ beq _021D8B80
+ ldr r0, _021D8C88 ; =0x00000554
+ ldr r2, _021D8C8C ; =0x00000151
+ add r0, r5, r0
+ mov r1, #0x1a
+ mov r3, #0x2e
+ bl MOD17_021DCB48
+_021D8B80:
+ mov r0, #0xe
+ str r0, [r4]
+ b _021D8C64
+_021D8B86:
+ ldr r0, _021D8C88 ; =0x00000554
+ add r0, r5, r0
+ bl MOD17_021DCBE4
+ cmp r0, #0
+ bne _021D8B9E
+ mov r0, #0xf
+ str r0, [r4]
+ mov r0, #0x1a
+ lsl r0, r0, #6
+ bl FUN_020054C8
+_021D8B9E:
+ ldr r0, _021D8C90 ; =0x0000048C
+ add r0, r5, r0
+ bl MOD17_021DAF64
+ add r0, r5, #0
+ bl MOD17_021D9BE8
+ ldr r0, _021D8C88 ; =0x00000554
+ add r0, r5, r0
+ bl MOD17_021DCB30
+ add r0, r5, #0
+ bl MOD17_021D9140
+ b _021D8C64
+_021D8BBC:
+ ldr r0, _021D8C88 ; =0x00000554
+ add r0, r5, r0
+ bl MOD17_021DCBE4
+ cmp r0, #0
+ bne _021D8BD4
+ mov r0, #0xf
+ str r0, [r4]
+ mov r0, #0x1a
+ lsl r0, r0, #6
+ bl FUN_020054C8
+_021D8BD4:
+ add r0, r5, #0
+ bl MOD17_021D9BE8
+ ldr r0, _021D8C88 ; =0x00000554
+ add r0, r5, r0
+ bl MOD17_021DCB30
+ add r0, r5, #0
+ bl MOD17_021D9E28
+ b _021D8C64
+_021D8BEA:
+ ldr r0, _021D8C88 ; =0x00000554
+ add r0, r5, r0
+ bl MOD17_021DCB30
+ ldr r0, _021D8C88 ; =0x00000554
+ add r0, r5, r0
+ bl MOD17_021DCBF4
+ cmp r0, #0
+ beq _021D8C64
+ mov r0, #0x13
+ str r0, [r4]
+ b _021D8C64
+_021D8C04:
+ mov r0, #0x1a
+ lsl r0, r0, #6
+ bl FUN_02005508
+ cmp r0, #1
+ beq _021D8C64
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0xd
+ str r1, [sp, #8]
+ mov r1, #0x1a
+ add r2, r1, #0
+ add r3, r6, #0
+ bl FUN_0200E1D0
+ ldr r0, _021D8C94 ; =0x00000684
+ bl FUN_020054C8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8C64
+_021D8C34:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D8C64
+ add r0, r6, #0
+ str r0, [r4]
+ mov r2, #1
+ ldr r0, _021D8C84 ; =0x0000069C
+ mov r1, #0xa
+ str r1, [r5, r0]
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D8C98 ; =0xFFFF1FFF
+ mov r6, #1
+ and r0, r1
+ str r0, [r2]
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r1, r6, #0
+ add r0, r5, r0
+ sub r1, #0x41
+ mov r2, #0x28
+ bl MOD17_021DA118
+_021D8C64:
+ add r0, r5, #0
+ bl MOD17_021D8D8C
+ add r0, r6, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D8C70: .word 0x000006B8
+_021D8C74: .word 0x000006CC
+_021D8C78: .word 0x000006C4
+_021D8C7C: .word 0x00000643
+_021D8C80: .word 0x00000491
+_021D8C84: .word 0x0000069C
+_021D8C88: .word 0x00000554
+_021D8C8C: .word 0x00000151
+_021D8C90: .word 0x0000048C
+_021D8C94: .word 0x00000684
+_021D8C98: .word 0xFFFF1FFF
+ thumb_func_end MOD17_021D8998
+
+ thumb_func_start MOD17_021D8C9C
+MOD17_021D8C9C: ; 0x021D8C9C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0200628C
+ ldr r2, _021D8D50 ; =0x000006B4
+ add r3, r0, #0
+ mov r1, #0xfa
+ ldr r0, [r3, #4]
+ lsl r1, r1, #2
+ ldr r2, [r4, r2]
+ ldr r3, [r3, #0x24]
+ add r1, r4, r1
+ bl MOD17_021D964C
+ ldr r0, _021D8D54 ; =0x000006A4
+ ldr r0, [r4, r0]
+ bl FUN_020145A8
+ ldr r0, _021D8D58 ; =0x000006A8
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl FUN_020191A4
+ add r0, r4, #0
+ bl MOD17_021D92AC
+ ldr r0, _021D8D5C ; =0x0000048C
+ add r0, r4, r0
+ bl MOD17_021DB08C
+ add r0, r4, #0
+ bl MOD17_021D912C
+ add r0, r4, #0
+ bl MOD17_021D9014
+ add r0, r4, #0
+ bl MOD17_021D8E60
+ add r0, r4, #0
+ bl MOD17_021D8F40
+ mov r0, #0xd6
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD17_021D750C
+ mov r0, #0xd6
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r0, #8
+ add r0, r4, r0
+ bl MOD17_021DBA1C
+ add r0, r4, #0
+ bl MOD17_021D8D94
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201CD04
+ cmp r0, #1
+ beq _021D8D30
+ bl ErrorHandling
+_021D8D30:
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0xd
+ bl FUN_020168D0
+ mov r0, #0xe
+ bl FUN_020168D0
+ bl FUN_02083404
+ bl FUN_02033ED0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_021D8D50: .word 0x000006B4
+_021D8D54: .word 0x000006A4
+_021D8D58: .word 0x000006A8
+_021D8D5C: .word 0x0000048C
+ thumb_func_end MOD17_021D8C9C
+
+ thumb_func_start MOD17_021D8D60
+MOD17_021D8D60: ; 0x021D8D60
+ push {r4, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ bl MOD17_021D7794
+ add r0, r4, #0
+ bl MOD17_021D77D4
+ add r0, r4, #0
+ add r1, sp, #0
+ bl MOD17_021D7A00
+ add r0, r4, #0
+ add r1, sp, #0
+ bl MOD17_021D78A0
+ add r0, sp, #0
+ bl MOD17_021D7A24
+ add sp, #0x18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D8D60
+
+ thumb_func_start MOD17_021D8D8C
+MOD17_021D8D8C: ; 0x021D8D8C
+ ldr r3, _021D8D90 ; =MOD17_021D786C
+ bx r3
+ .align 2, 0
+_021D8D90: .word MOD17_021D786C
+ thumb_func_end MOD17_021D8D8C
+
+ thumb_func_start MOD17_021D8D94
+MOD17_021D8D94: ; 0x021D8D94
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D78BC
+ add r0, r4, #0
+ bl MOD17_021D7828
+ bl MOD17_021D77B4
+ pop {r4, pc}
+ thumb_func_end MOD17_021D8D94
+
+ thumb_func_start MOD17_021D8DA8
+MOD17_021D8DA8: ; 0x021D8DA8
+ push {r4, r5, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ mov r1, #0xd6
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x10]
+ lsl r1, r1, #2
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x28]
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0x20]
+ ldr r0, [r5, #0x38]
+ str r2, [sp, #0x30]
+ str r0, [sp, #0x24]
+ ldr r0, [r5, r1]
+ str r0, [sp, #0x28]
+ add r0, r1, #0
+ sub r0, #8
+ add r0, r5, r0
+ add r1, #0x90
+ str r0, [sp, #0x2c]
+ add r0, r5, r1
+ add r1, sp, #0x10
+ bl MOD17_021D9F80
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r1, r4, #0
+ add r2, sp, #0
+ mov r3, #0xe
+ bl MOD17_021DA024
+ add r0, r5, #0
+ add r1, sp, #0
+ bl MOD17_021DB6D8
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl MOD17_021DA178
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ mov r2, #0xe
+ bl MOD17_021DA2F0
+ add sp, #0x34
+ pop {r4, r5, pc}
+ thumb_func_end MOD17_021D8DA8
+
+ thumb_func_start MOD17_021D8E18
+MOD17_021D8E18: ; 0x021D8E18
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ bl MOD17_021D8DA8
+ mov r0, #0x46
+ lsl r0, r0, #4
+ add r0, r4, r0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DB878
+ mov r0, #0x46
+ lsl r0, r0, #4
+ add r0, r4, r0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DB960
+ ldr r3, [sp, #8]
+ mov r0, #0x46
+ lsr r2, r3, #0x1f
+ add r2, r3, r2
+ asr r3, r2, #1
+ ldr r2, [sp]
+ lsl r0, r0, #4
+ sub r3, r3, r2
+ mov r2, #0x8d
+ add r0, r4, r0
+ mov r1, #0xc0
+ sub r2, r2, r3
+ bl MOD17_021DB7F4
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D8E18
+
+ thumb_func_start MOD17_021D8E60
+MOD17_021D8E60: ; 0x021D8E60
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DA33C
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DA100
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021D9FD4
+ pop {r4, pc}
+ thumb_func_end MOD17_021D8E60
+
+ thumb_func_start MOD17_021D8E84
+MOD17_021D8E84: ; 0x021D8E84
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ ldr r0, [r5]
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x10]
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x28]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x38]
+ str r0, [sp, #0x10]
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ add r0, r5, r0
+ str r0, [sp, #0x28]
+ mov r0, #0xd6
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ str r1, [sp, #0x14]
+ add r1, r0, #0
+ sub r1, #8
+ add r1, r5, r1
+ str r1, [sp, #0x18]
+ mov r1, #0xe
+ str r1, [sp, #0x1c]
+ mov r1, #2
+ str r1, [sp, #0x20]
+ mov r1, #1
+ add r0, r0, #4
+ str r1, [sp, #0x24]
+ add r0, r5, r0
+ add r1, sp, #0
+ bl MOD17_021DA5A8
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ mov r1, #0
+ add r0, r5, r0
+ add r2, r1, #0
+ bl MOD17_021DA918
+ mov r6, #0
+_021D8EDC:
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r1, r6, #0
+ bl MOD17_021DAFF4
+ add r7, r0, #0
+ mov r4, #0
+ cmp r7, #0
+ ble _021D8F04
+_021D8EF0:
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ add r2, r6, #0
+ bl MOD17_021DA6FC
+ add r4, r4, #1
+ cmp r4, r7
+ blt _021D8EF0
+_021D8F04:
+ add r6, r6, #1
+ cmp r6, #0x64
+ blt _021D8EDC
+ mov r7, #0xd7
+ mov r6, #0x5e
+ mov r4, #0
+ lsl r7, r7, #2
+ lsl r6, r6, #2
+_021D8F14:
+ add r0, r5, r6
+ add r1, r4, #0
+ bl MOD17_021DB008
+ add r2, r0, #0
+ cmp r2, #0x12
+ bge _021D8F2A
+ add r0, r5, r7
+ mov r1, #1
+ bl MOD17_021DA6FC
+_021D8F2A:
+ add r4, r4, #1
+ cmp r4, #0x12
+ blt _021D8F14
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl MOD17_021DA844
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D8E84
+
+ thumb_func_start MOD17_021D8F40
+MOD17_021D8F40: ; 0x021D8F40
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DAA60
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DA818
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DA5E0
+ pop {r4, pc}
+ thumb_func_end MOD17_021D8F40
+
+ thumb_func_start MOD17_021D8F64
+MOD17_021D8F64: ; 0x021D8F64
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, _021D8FC4 ; =0x04000008
+ mov r2, #3
+ ldrh r3, [r0]
+ mov r1, #1
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r1, [r0, #2]
+ bic r1, r2
+ strh r1, [r0, #2]
+ ldrh r3, [r0, #4]
+ mov r1, #2
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #4]
+ ldrh r3, [r0, #6]
+ mov r1, #3
+ bic r3, r2
+ add r2, r3, #0
+ orr r2, r1
+ strh r2, [r0, #6]
+ add r3, r1, #0
+ ldr r0, [r4, #0x38]
+ add r2, r1, #0
+ sub r3, #0x13
+ bl FUN_020179E0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD17_021DA9AC
+ mov r1, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r2, #2
+ add r3, r1, #0
+ str r1, [sp]
+ bl MOD17_021DA9F8
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D8FC4: .word 0x04000008
+ thumb_func_end MOD17_021D8F64
+
+ thumb_func_start MOD17_021D8FC8
+MOD17_021D8FC8: ; 0x021D8FC8
+ ldr r3, _021D8FCC ; =MOD17_021D7AE4
+ bx r3
+ .align 2, 0
+_021D8FCC: .word MOD17_021D7AE4
+ thumb_func_end MOD17_021D8FC8
+
+ thumb_func_start MOD17_021D8FD0
+MOD17_021D8FD0: ; 0x021D8FD0
+ push {r3, lr}
+ sub sp, #0x30
+ ldr r2, [r0, #0x38]
+ str r2, [sp]
+ mov r2, #0x19
+ str r2, [sp, #4]
+ lsl r2, r1, #1
+ add r1, r2, #0
+ add r1, #0x79
+ str r1, [sp, #8]
+ mov r1, #0x85
+ str r1, [sp, #0xc]
+ mov r1, #1
+ add r2, #0x7a
+ str r2, [sp, #0x10]
+ mov r2, #0
+ str r1, [sp, #0x1c]
+ str r1, [sp, #0x20]
+ mov r1, #2
+ str r1, [sp, #0x24]
+ mov r1, #0xe
+ str r1, [sp, #0x2c]
+ ldr r1, _021D9010 ; =0x000004A8
+ str r2, [sp, #0x14]
+ add r0, r0, r1
+ add r1, sp, #0
+ str r2, [sp, #0x18]
+ str r2, [sp, #0x28]
+ bl MOD17_021DBD04
+ add sp, #0x30
+ pop {r3, pc}
+ .align 2, 0
+_021D9010: .word 0x000004A8
+ thumb_func_end MOD17_021D8FD0
+
+ thumb_func_start MOD17_021D9014
+MOD17_021D9014: ; 0x021D9014
+ ldr r1, _021D901C ; =0x000004A8
+ ldr r3, _021D9020 ; =MOD17_021DBD4C
+ add r0, r0, r1
+ bx r3
+ .align 2, 0
+_021D901C: .word 0x000004A8
+_021D9020: .word MOD17_021DBD4C
+ thumb_func_end MOD17_021D9014
+
+ thumb_func_start MOD17_021D9024
+MOD17_021D9024: ; 0x021D9024
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, _021D9090 ; =0x000004D4
+ add r1, r4, #0
+ add r0, r4, r0
+ bl MOD17_021DC304
+ ldr r0, _021D9090 ; =0x000004D4
+ mov r1, #0
+ ldr r2, _021D9094 ; =MOD17_021D9180
+ add r0, r4, r0
+ add r3, r4, #0
+ str r1, [sp]
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9090 ; =0x000004D4
+ ldr r2, _021D9098 ; =MOD17_021D91A0
+ add r0, r4, r0
+ mov r1, #1
+ add r3, r4, #0
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9090 ; =0x000004D4
+ ldr r2, _021D909C ; =MOD17_021D91C0
+ add r0, r4, r0
+ mov r1, #2
+ add r3, r4, #0
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9090 ; =0x000004D4
+ ldr r2, _021D90A0 ; =MOD17_021D91F4
+ add r0, r4, r0
+ mov r1, #3
+ add r3, r4, #0
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9090 ; =0x000004D4
+ ldr r2, _021D90A4 ; =MOD17_021D9160
+ add r0, r4, r0
+ mov r1, #4
+ add r3, r4, #0
+ bl MOD17_021DC538
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D9090: .word 0x000004D4
+_021D9094: .word MOD17_021D9180
+_021D9098: .word MOD17_021D91A0
+_021D909C: .word MOD17_021D91C0
+_021D90A0: .word MOD17_021D91F4
+_021D90A4: .word MOD17_021D9160
+ thumb_func_end MOD17_021D9024
+
+ thumb_func_start MOD17_021D90A8
+MOD17_021D90A8: ; 0x021D90A8
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, _021D9114 ; =0x000004D4
+ add r1, r4, #0
+ add r0, r4, r0
+ bl MOD17_021DC304
+ ldr r0, _021D9114 ; =0x000004D4
+ mov r1, #0
+ ldr r2, _021D9118 ; =MOD17_021D9180
+ add r0, r4, r0
+ add r3, r4, #0
+ str r1, [sp]
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9114 ; =0x000004D4
+ ldr r2, _021D911C ; =MOD17_021D91A0
+ add r0, r4, r0
+ mov r1, #1
+ add r3, r4, #0
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9114 ; =0x000004D4
+ ldr r2, _021D9120 ; =MOD17_021D91C0
+ add r0, r4, r0
+ mov r1, #2
+ add r3, r4, #0
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9114 ; =0x000004D4
+ ldr r2, _021D9124 ; =MOD17_021D91F4
+ add r0, r4, r0
+ mov r1, #3
+ add r3, r4, #0
+ bl MOD17_021DC538
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D9114 ; =0x000004D4
+ ldr r2, _021D9128 ; =MOD17_021D9160
+ add r0, r4, r0
+ mov r1, #4
+ add r3, r4, #0
+ bl MOD17_021DC538
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D9114: .word 0x000004D4
+_021D9118: .word MOD17_021D9180
+_021D911C: .word MOD17_021D91A0
+_021D9120: .word MOD17_021D91C0
+_021D9124: .word MOD17_021D91F4
+_021D9128: .word MOD17_021D9160
+ thumb_func_end MOD17_021D90A8
+
+ thumb_func_start MOD17_021D912C
+MOD17_021D912C: ; 0x021D912C
+ add r1, r0, #0
+ ldr r0, _021D9138 ; =0x000004D4
+ ldr r3, _021D913C ; =MOD17_021DC468
+ add r0, r1, r0
+ bx r3
+ nop
+_021D9138: .word 0x000004D4
+_021D913C: .word MOD17_021DC468
+ thumb_func_end MOD17_021D912C
+
+ thumb_func_start MOD17_021D9140
+MOD17_021D9140: ; 0x021D9140
+ ldr r1, _021D9148 ; =0x000004D4
+ ldr r3, _021D914C ; =MOD17_021DC4CC
+ add r0, r0, r1
+ bx r3
+ .align 2, 0
+_021D9148: .word 0x000004D4
+_021D914C: .word MOD17_021DC4CC
+ thumb_func_end MOD17_021D9140
+
+ thumb_func_start MOD17_021D9150
+MOD17_021D9150: ; 0x021D9150
+ ldr r1, _021D9158 ; =0x000004D4
+ ldr r3, _021D915C ; =MOD17_021DC4E4
+ add r0, r0, r1
+ bx r3
+ .align 2, 0
+_021D9158: .word 0x000004D4
+_021D915C: .word MOD17_021DC4E4
+ thumb_func_end MOD17_021D9150
+
+ thumb_func_start MOD17_021D9160
+MOD17_021D9160: ; 0x021D9160
+ push {r4, lr}
+ mov r0, #0xd7
+ add r4, r1, #0
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DAAB8
+ cmp r0, #0
+ beq _021D9178
+ ldr r0, _021D917C ; =0x0000069C
+ mov r1, #3
+ str r1, [r4, r0]
+_021D9178:
+ pop {r4, pc}
+ nop
+_021D917C: .word 0x0000069C
+ thumb_func_end MOD17_021D9160
+
+ thumb_func_start MOD17_021D9180
+MOD17_021D9180: ; 0x021D9180
+ push {r4, lr}
+ mov r0, #0xd7
+ add r4, r1, #0
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DAA6C
+ add r1, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r2, #0
+ bl MOD17_021DA8B0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9180
+
+ thumb_func_start MOD17_021D91A0
+MOD17_021D91A0: ; 0x021D91A0
+ push {r4, lr}
+ mov r0, #0xd7
+ add r4, r1, #0
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DAA6C
+ add r1, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r2, #1
+ bl MOD17_021DA8B0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D91A0
+
+ thumb_func_start MOD17_021D91C0
+MOD17_021D91C0: ; 0x021D91C0
+ push {r4, lr}
+ ldr r0, _021D91F0 ; =0x0000069C
+ add r4, r1, #0
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D91EC
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD17_021DAA7C
+ add r2, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD17_021DA918
+ ldr r0, _021D91F0 ; =0x0000069C
+ mov r1, #0
+ str r1, [r4, r0]
+_021D91EC:
+ pop {r4, pc}
+ nop
+_021D91F0: .word 0x0000069C
+ thumb_func_end MOD17_021D91C0
+
+ thumb_func_start MOD17_021D91F4
+MOD17_021D91F4: ; 0x021D91F4
+ push {r4, lr}
+ ldr r0, _021D9224 ; =0x0000069C
+ add r4, r1, #0
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ beq _021D9220
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #1
+ bl MOD17_021DAA7C
+ add r2, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #1
+ bl MOD17_021DA918
+ ldr r0, _021D9224 ; =0x0000069C
+ mov r1, #1
+ str r1, [r4, r0]
+_021D9220:
+ pop {r4, pc}
+ nop
+_021D9224: .word 0x0000069C
+ thumb_func_end MOD17_021D91F4
+
+ thumb_func_start MOD17_021D9228
+MOD17_021D9228: ; 0x021D9228
+ push {r4, r5, lr}
+ sub sp, #0x24
+ add r4, r0, #0
+ add r2, sp, #0
+ mov r0, #0
+ add r3, r1, #0
+ add r5, r2, #0
+ add r1, r0, #0
+ stmia r5!, {r0, r1}
+ stmia r5!, {r0, r1}
+ stmia r5!, {r0, r1}
+ stmia r5!, {r0, r1}
+ str r0, [r5]
+ ldr r0, [r4, #0x38]
+ add r1, r2, #0
+ str r0, [sp]
+ ldr r0, [r4, #0x3c]
+ mov r2, #0xf
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x40
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0x10]
+ ldr r0, _021D9268 ; =0x00000554
+ str r3, [sp, #0xc]
+ add r0, r4, r0
+ bl MOD17_021DC950
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021D9268: .word 0x00000554
+ thumb_func_end MOD17_021D9228
+
+ thumb_func_start MOD17_021D926C
+MOD17_021D926C: ; 0x021D926C
+ push {r3, r4, lr}
+ sub sp, #0x24
+ ldr r4, [r0, #0x38]
+ str r4, [sp]
+ ldr r4, [r0, #0x3c]
+ str r1, [sp, #0x10]
+ ldr r1, _021D92A4 ; =0x00000151
+ str r4, [sp, #4]
+ str r1, [sp, #0x14]
+ add r1, r2, #7
+ str r1, [sp, #0x18]
+ mov r1, #0x3c
+ str r1, [sp, #0x1c]
+ ldr r1, [sp, #0x30]
+ add r4, r0, #0
+ str r1, [sp, #0xc]
+ ldr r1, _021D92A8 ; =0x00000554
+ add r4, #0x40
+ add r0, r0, r1
+ add r1, sp, #0
+ mov r2, #0x3f
+ str r4, [sp, #8]
+ str r3, [sp, #0x20]
+ bl MOD17_021DC950
+ add sp, #0x24
+ pop {r3, r4, pc}
+ nop
+_021D92A4: .word 0x00000151
+_021D92A8: .word 0x00000554
+ thumb_func_end MOD17_021D926C
+
+ thumb_func_start MOD17_021D92AC
+MOD17_021D92AC: ; 0x021D92AC
+ ldr r1, _021D92B4 ; =0x00000554
+ ldr r3, _021D92B8 ; =MOD17_021DCA80
+ add r0, r0, r1
+ bx r3
+ .align 2, 0
+_021D92B4: .word 0x00000554
+_021D92B8: .word MOD17_021DCA80
+ thumb_func_end MOD17_021D92AC
+
+ thumb_func_start MOD17_021D92BC
+MOD17_021D92BC: ; 0x021D92BC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r0, _021D92E0 ; =MOD17_021D92E4
+ mov r1, #0x10
+ mov r2, #0xa
+ mov r3, #0xd
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ str r5, [r0]
+ str r4, [r0, #4]
+ mov r1, #0
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ pop {r3, r4, r5, pc}
+ nop
+_021D92E0: .word MOD17_021D92E4
+ thumb_func_end MOD17_021D92BC
+
+ thumb_func_start MOD17_021D92E4
+MOD17_021D92E4: ; 0x021D92E4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ cmp r1, #9
+ bls _021D92F2
+ b _021D9424
+_021D92F2:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D92FE: ; jump table
+ .short _021D9312 - _021D92FE - 2 ; case 0
+ .short _021D9334 - _021D92FE - 2 ; case 1
+ .short _021D934E - _021D92FE - 2 ; case 2
+ .short _021D936A - _021D92FE - 2 ; case 3
+ .short _021D937E - _021D92FE - 2 ; case 4
+ .short _021D93A4 - _021D92FE - 2 ; case 5
+ .short _021D93C4 - _021D92FE - 2 ; case 6
+ .short _021D93EA - _021D92FE - 2 ; case 7
+ .short _021D9406 - _021D92FE - 2 ; case 8
+ .short _021D941A - _021D92FE - 2 ; case 9
+_021D9312:
+ mov r0, #0xd7
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #3
+ mov r2, #0
+ bl MOD17_021DA870
+ cmp r0, #0
+ bne _021D932A
+ bl ErrorHandling
+_021D932A:
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D9334:
+ mov r0, #0xd7
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD17_021DAAB8
+ cmp r0, #0
+ beq _021D9424
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D934E:
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #8
+ add r1, r0, #0
+ sub r1, #0x18
+ mov r2, #0
+ mov r3, #0xa
+ bl FUN_0200A208
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D936A:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021D9424
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D937E:
+ ldr r1, [r4]
+ ldr r0, _021D9428 ; =0x000004D4
+ mov r2, #8
+ add r0, r1, r0
+ mov r1, #0
+ bl MOD17_021DC508
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #8
+ blt _021D9424
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D93A4:
+ mov r1, #7
+ add r0, r4, #0
+ mvn r1, r1
+ mov r2, #5
+ mov r3, #8
+ bl MOD17_021D970C
+ cmp r0, #0
+ beq _021D9424
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D93C4:
+ ldr r0, [r4]
+ mov r1, #1
+ bl MOD17_021D8FD0
+ ldr r0, [r4]
+ mov r1, #1
+ ldr r0, [r0, #0x38]
+ mov r2, #3
+ mov r3, #0
+ bl FUN_0201AEE4
+ ldr r0, [r4]
+ bl MOD17_021D9848
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D93EA:
+ mov r1, #0
+ mov r0, #1
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #8
+ sub r2, #0x10
+ mov r3, #0xa
+ bl FUN_0200A208
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D9406:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021D9424
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D941A:
+ ldr r1, [r4, #4]
+ mov r2, #1
+ str r2, [r1]
+ bl FUN_0200621C
+_021D9424:
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D9428: .word 0x000004D4
+ thumb_func_end MOD17_021D92E4
+
+ thumb_func_start MOD17_021D942C
+MOD17_021D942C: ; 0x021D942C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r0, _021D9450 ; =MOD17_021D9454
+ mov r1, #0x10
+ mov r2, #0xa
+ mov r3, #0xd
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ str r5, [r0]
+ str r4, [r0, #4]
+ mov r1, #0
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ pop {r3, r4, r5, pc}
+ nop
+_021D9450: .word MOD17_021D9454
+ thumb_func_end MOD17_021D942C
+
+ thumb_func_start MOD17_021D9454
+MOD17_021D9454: ; 0x021D9454
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ cmp r1, #9
+ bls _021D9462
+ b _021D95A4
+_021D9462:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D946E: ; jump table
+ .short _021D9482 - _021D946E - 2 ; case 0
+ .short _021D949E - _021D946E - 2 ; case 1
+ .short _021D94B2 - _021D946E - 2 ; case 2
+ .short _021D94E6 - _021D946E - 2 ; case 3
+ .short _021D9506 - _021D946E - 2 ; case 4
+ .short _021D952E - _021D946E - 2 ; case 5
+ .short _021D954A - _021D946E - 2 ; case 6
+ .short _021D955E - _021D946E - 2 ; case 7
+ .short _021D9580 - _021D946E - 2 ; case 8
+ .short _021D959A - _021D946E - 2 ; case 9
+_021D9482:
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #8
+ add r1, r0, #0
+ sub r1, #0x18
+ mov r2, #0
+ mov r3, #0xa
+ bl FUN_0200A208
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D949E:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021D95A4
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D94B2:
+ ldr r0, [r4]
+ bl MOD17_021D98D0
+ ldr r0, [r4]
+ bl MOD17_021D8F64
+ ldr r0, [r4]
+ bl MOD17_021D9150
+ ldr r0, [r4]
+ mov r1, #0
+ bl MOD17_021D8FD0
+ ldr r0, [r4]
+ mov r2, #3
+ add r3, r2, #0
+ ldr r0, [r0, #0x38]
+ mov r1, #1
+ sub r3, #0x2b
+ bl FUN_0201AEE4
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D94E6:
+ mov r1, #8
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0xd
+ add r3, r1, #0
+ bl MOD17_021D970C
+ cmp r0, #0
+ beq _021D95A4
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D9506:
+ ldr r1, [r4]
+ ldr r0, _021D95A8 ; =0x000004D4
+ add r0, r1, r0
+ mov r1, #0
+ add r2, r1, #0
+ sub r2, #8
+ bl MOD17_021DC508
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #8
+ blt _021D95A4
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D952E:
+ mov r1, #0
+ mov r0, #1
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #8
+ sub r2, #0x10
+ mov r3, #0xa
+ bl FUN_0200A208
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D954A:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #0
+ beq _021D95A4
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D955E:
+ mov r0, #0xd7
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ mov r1, #0
+ add r2, r1, #0
+ bl MOD17_021DA870
+ cmp r0, #0
+ bne _021D9576
+ bl ErrorHandling
+_021D9576:
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D9580:
+ mov r0, #0xd7
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD17_021DAAB8
+ cmp r0, #0
+ beq _021D95A4
+ ldr r0, [r4, #0xc]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r3, r4, pc}
+_021D959A:
+ ldr r1, [r4, #4]
+ mov r2, #1
+ str r2, [r1]
+ bl FUN_0200621C
+_021D95A4:
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D95A8: .word 0x000004D4
+ thumb_func_end MOD17_021D9454
+
+ thumb_func_start MOD17_021D95AC
+MOD17_021D95AC: ; 0x021D95AC
+ push {r3, r4, r5, r6, r7, lr}
+ str r1, [sp]
+ add r6, r0, #0
+ add r4, r2, #0
+ bl FUN_02027310
+ ldr r1, [sp]
+ ldr r2, [sp]
+ add r1, #0x84
+ ldr r1, [r1]
+ add r0, r6, #0
+ add r2, #0x78
+ bl FUN_02027348
+ cmp r4, #0
+ beq _021D95EC
+ add r0, r4, #0
+ mov r1, #0xd
+ bl FUN_020239A0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_020239CC
+ add r2, r0, #0
+ add r0, r6, #0
+ add r1, r5, #0
+ bl FUN_020274F0
+ add r0, r5, #0
+ bl FUN_02021A20
+_021D95EC:
+ ldr r0, [sp]
+ mov r5, #0
+ add r7, r0, #0
+ ldr r4, [r0, #0x1c]
+ add r7, #0x14
+ cmp r4, r7
+ beq _021D9612
+_021D95FA:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021D960C
+ ldr r1, [r4]
+ add r0, r6, #0
+ add r2, r5, #0
+ bl FUN_02027380
+ add r5, r5, #1
+_021D960C:
+ ldr r4, [r4, #8]
+ cmp r4, r7
+ bne _021D95FA
+_021D9612:
+ ldr r0, [sp]
+ ldr r4, [r0, #0xc]
+ add r7, r0, #4
+ cmp r4, r7
+ beq _021D9634
+_021D961C:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021D962E
+ ldr r1, [r4]
+ add r0, r6, #0
+ add r2, r5, #0
+ bl FUN_02027380
+ add r5, r5, #1
+_021D962E:
+ ldr r4, [r4, #8]
+ cmp r4, r7
+ bne _021D961C
+_021D9634:
+ ldr r1, [sp]
+ add r0, r6, #0
+ ldr r1, [r1, #0x74]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02027448
+ add r0, r6, #0
+ bl FUN_020272D4
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D95AC
+
+ thumb_func_start MOD17_021D964C
+MOD17_021D964C: ; 0x021D964C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ str r1, [sp]
+ mov r0, #0xd
+ mov r1, #0xac
+ str r2, [sp, #4]
+ add r4, r3, #0
+ bl FUN_02016998
+ add r6, r0, #0
+ bl MOD17_021D9CD4
+ ldr r1, [sp]
+ ldr r2, [sp]
+ add r1, #0x84
+ ldr r1, [r1]
+ add r0, r7, #0
+ add r2, #0x78
+ bl FUN_02027778
+ cmp r4, #0
+ beq _021D969A
+ add r0, r4, #0
+ mov r1, #0xd
+ bl FUN_020239A0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_020239CC
+ add r2, r0, #0
+ add r0, r7, #0
+ add r1, r5, #0
+ bl FUN_02027A58
+ add r0, r5, #0
+ bl FUN_02021A20
+_021D969A:
+ ldr r1, [sp]
+ add r0, r6, #0
+ add r1, #0x14
+ mov r2, #1
+ bl MOD17_021D9E00
+ ldr r1, [sp]
+ add r0, r6, #0
+ add r1, r1, #4
+ mov r2, #0
+ bl MOD17_021D9E00
+ add r0, r6, #0
+ bl MOD17_021D9D14
+ mov r4, #0
+ add r5, r4, #0
+_021D96BC:
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD17_021D9D84
+ cmp r0, #1
+ bne _021D96DE
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD17_021D9D70
+ add r1, r0, #0
+ ldr r1, [r1]
+ add r0, r7, #0
+ add r2, r4, #0
+ bl FUN_020277B4
+ add r4, r4, #1
+_021D96DE:
+ add r5, r5, #1
+ cmp r5, #0x15
+ blt _021D96BC
+ ldr r1, [sp]
+ add r0, r7, #0
+ ldr r1, [r1, #0x74]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0202787C
+ ldr r1, [sp, #4]
+ add r0, r7, #0
+ bl FUN_020278AC
+ add r0, r7, #0
+ bl FUN_02027710
+ add r0, r6, #0
+ bl FUN_02016A18
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D964C
+
+ thumb_func_start MOD17_021D970C
+MOD17_021D970C: ; 0x021D970C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r0, #8
+ bge _021D9728
+ mov r0, #0xfa
+ ldr r3, [r5]
+ lsl r0, r0, #2
+ add r0, r3, r0
+ bl MOD17_021DA118
+_021D9728:
+ ldr r0, [r5, #8]
+ cmp r0, #1
+ blt _021D9766
+ ldr r0, [r5]
+ mov r1, #2
+ ldr r0, [r0, #0x38]
+ add r2, r1, #0
+ add r3, r4, #0
+ bl FUN_0201AEE4
+ ldr r0, [r5]
+ mov r1, #1
+ ldr r0, [r0, #0x38]
+ mov r2, #2
+ add r3, r4, #0
+ bl FUN_0201AEE4
+ ldr r0, [r5]
+ mov r1, #2
+ ldr r0, [r0, #0x38]
+ mov r2, #5
+ add r3, r6, #0
+ bl FUN_0201AEE4
+ ldr r0, [r5]
+ mov r1, #1
+ ldr r0, [r0, #0x38]
+ mov r2, #5
+ add r3, r6, #0
+ bl FUN_0201AEE4
+_021D9766:
+ ldr r0, [r5, #8]
+ add r0, r0, #1
+ str r0, [r5, #8]
+ cmp r0, r7
+ ble _021D9774
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9774:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021D970C
+
+ thumb_func_start MOD17_021D9778
+MOD17_021D9778: ; 0x021D9778
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl FUN_02018744
+ mov r2, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r1, #3
+ ldr r0, [r4, #0x38]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD17_021D9B74
+ ldr r1, _021D97FC ; =0x04000008
+ mov r3, #3
+ ldrh r2, [r1]
+ mov r0, #2
+ bic r2, r3
+ orr r0, r2
+ strh r0, [r1]
+ ldrh r2, [r1, #2]
+ mov r0, #1
+ bic r2, r3
+ orr r2, r0
+ strh r2, [r1, #2]
+ ldrh r4, [r1, #4]
+ mov r2, #3
+ bic r4, r3
+ orr r2, r4
+ strh r2, [r1, #4]
+ ldrh r2, [r1, #6]
+ bic r2, r3
+ strh r2, [r1, #6]
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0
+ bl FUN_0200E394
+ pop {r4, pc}
+ nop
+_021D97FC: .word 0x04000008
+ thumb_func_end MOD17_021D9778
+
+ thumb_func_start MOD17_021D9800
+MOD17_021D9800: ; 0x021D9800
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D9BCC
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl FUN_02018744
+ add r0, r4, #0
+ bl MOD17_021D8F64
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl FUN_0201FD98
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ pop {r4, pc}
+ thumb_func_end MOD17_021D9800
+
+ thumb_func_start MOD17_021D9848
+MOD17_021D9848: ; 0x021D9848
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl FUN_02018744
+ mov r2, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r1, #3
+ ldr r0, [r4, #0x38]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0x38]
+ mov r1, #0x19
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #5
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ strb r1, [r0, #0x10]
+ mov r1, #4
+ strb r1, [r0, #0x11]
+ ldr r0, _021D98C8 ; =0x000006A4
+ add r1, sp, #0
+ ldr r0, [r4, r0]
+ bl FUN_020145C8
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD17_021D9B4C
+ ldr r0, _021D98CC ; =0x04000008
+ mov r2, #3
+ ldrh r3, [r0]
+ mov r1, #2
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r3, [r0, #2]
+ mov r1, #1
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #2]
+ ldrh r3, [r0, #4]
+ mov r1, #3
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #4]
+ ldrh r1, [r0, #6]
+ bic r1, r2
+ strh r1, [r0, #6]
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_021D98C8: .word 0x000006A4
+_021D98CC: .word 0x04000008
+ thumb_func_end MOD17_021D9848
+
+ thumb_func_start MOD17_021D98D0
+MOD17_021D98D0: ; 0x021D98D0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D98EC ; =0x000006A4
+ ldr r0, [r4, r0]
+ bl FUN_020146C4
+ add r0, r4, #0
+ bl MOD17_021D9B6C
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl FUN_02018744
+ pop {r4, pc}
+ .align 2, 0
+_021D98EC: .word 0x000006A4
+ thumb_func_end MOD17_021D98D0
+
+ thumb_func_start MOD17_021D98F0
+MOD17_021D98F0: ; 0x021D98F0
+ push {r3, lr}
+ ldr r1, _021D9914 ; =0x000006A4
+ ldr r0, [r0, r1]
+ bl FUN_0201466C
+ cmp r0, #0
+ beq _021D9908
+ cmp r0, #1
+ beq _021D990C
+ cmp r0, #2
+ beq _021D9910
+ pop {r3, pc}
+_021D9908:
+ mov r0, #4
+ pop {r3, pc}
+_021D990C:
+ mov r0, #8
+ pop {r3, pc}
+_021D9910:
+ mov r0, #9
+ pop {r3, pc}
+ .align 2, 0
+_021D9914: .word 0x000006A4
+ thumb_func_end MOD17_021D98F0
+
+ thumb_func_start MOD17_021D9918
+MOD17_021D9918: ; 0x021D9918
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, _021D99D0 ; =0x000006C8
+ str r1, [sp, #0x14]
+ ldr r0, [r5, r0]
+ add r7, r2, #0
+ add r4, r3, #0
+ bl FUN_02025084
+ add r6, r0, #0
+ mov r0, #0
+ mov r1, #0xe0
+ mov r2, #0xe
+ bl FUN_02002EEC
+ str r4, [sp]
+ add r0, sp, #0x20
+ ldrb r1, [r0, #0x10]
+ mov r2, #3
+ add r3, r7, #0
+ str r1, [sp, #4]
+ ldrb r0, [r0, #0x14]
+ ldr r1, _021D99D4 ; =0x000006A8
+ str r0, [sp, #8]
+ mov r0, #7
+ str r0, [sp, #0xc]
+ mov r0, #0x92
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x38]
+ ldr r1, [r5, r1]
+ bl FUN_02019064
+ ldr r0, _021D99D4 ; =0x000006A8
+ mov r1, #0xf
+ ldr r0, [r5, r0]
+ bl FUN_02019620
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xe
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x38]
+ mov r1, #3
+ mov r2, #0x74
+ mov r3, #8
+ bl FUN_0200CD68
+ ldr r0, _021D99D4 ; =0x000006A8
+ mov r1, #0
+ ldr r0, [r5, r0]
+ mov r2, #0x74
+ mov r3, #8
+ bl FUN_0200D0BC
+ ldr r2, _021D99D8 ; =0x00000151
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0xd
+ bl FUN_0200A86C
+ ldr r1, [sp, #0x14]
+ add r6, r0, #0
+ bl FUN_0200A914
+ add r4, r0, #0
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021D99DC ; =0x0001020F
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, _021D99D4 ; =0x000006A8
+ str r3, [sp, #0xc]
+ ldr r0, [r5, r0]
+ mov r1, #1
+ add r2, r4, #0
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ ldr r0, _021D99D4 ; =0x000006A8
+ ldr r0, [r5, r0]
+ bl FUN_020191D0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D99D0: .word 0x000006C8
+_021D99D4: .word 0x000006A8
+_021D99D8: .word 0x00000151
+_021D99DC: .word 0x0001020F
+ thumb_func_end MOD17_021D9918
+
+ thumb_func_start MOD17_021D99E0
+MOD17_021D99E0: ; 0x021D99E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, _021D9A58 ; =0x000006A8
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r2, _021D9A5C ; =0x00000151
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0xd
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r7, r0, #0
+ bl FUN_0200A914
+ add r6, r0, #0
+ mov r0, #1
+ lsl r0, r0, #8
+ mov r1, #0xd
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, _021D9A60 ; =0x000006D4
+ add r1, r4, #0
+ ldr r0, [r5, r0]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021D9A64 ; =0x0001020F
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, _021D9A58 ; =0x000006A8
+ str r3, [sp, #0xc]
+ ldr r0, [r5, r0]
+ mov r1, #1
+ add r2, r4, #0
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ ldr r0, _021D9A58 ; =0x000006A8
+ ldr r0, [r5, r0]
+ bl FUN_020191D0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9A58: .word 0x000006A8
+_021D9A5C: .word 0x00000151
+_021D9A60: .word 0x000006D4
+_021D9A64: .word 0x0001020F
+ thumb_func_end MOD17_021D99E0
+
+ thumb_func_start MOD17_021D9A68
+MOD17_021D9A68: ; 0x021D9A68
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0x6d
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _021D9A7E
+ bl ErrorHandling
+_021D9A7E:
+ ldr r0, _021D9B08 ; =0x000006A8
+ mov r1, #0xf
+ ldr r0, [r5, r0]
+ bl FUN_02019620
+ ldr r2, _021D9B0C ; =0x00000151
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0xd
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r7, r0, #0
+ bl FUN_0200A914
+ add r4, r0, #0
+ mov r0, #1
+ lsl r0, r0, #8
+ mov r1, #0xd
+ bl FUN_020219F4
+ mov r1, #0x6d
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r1, #4
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ ldr r0, _021D9B10 ; =0x000006C4
+ ldr r1, [r5, r0]
+ ldrb r1, [r1, #0x16]
+ cmp r1, #0
+ bne _021D9ACE
+ add r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02024FF4
+ b _021D9AD0
+_021D9ACE:
+ mov r0, #1
+_021D9AD0:
+ mov r3, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D9B14 ; =0x0001020F
+ ldr r2, _021D9B08 ; =0x000006A8
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r0, [r5, r2]
+ add r2, #0x28
+ ldr r2, [r5, r2]
+ mov r1, #1
+ bl FUN_0201BDE0
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ ldr r0, _021D9B08 ; =0x000006A8
+ ldr r0, [r5, r0]
+ bl FUN_020191D0
+ add r0, r6, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9B08: .word 0x000006A8
+_021D9B0C: .word 0x00000151
+_021D9B10: .word 0x000006C4
+_021D9B14: .word 0x0001020F
+ thumb_func_end MOD17_021D9A68
+
+ thumb_func_start MOD17_021D9B18
+MOD17_021D9B18: ; 0x021D9B18
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6d
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r0, #0x6d
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ pop {r4, pc}
+ thumb_func_end MOD17_021D9B18
+
+ thumb_func_start MOD17_021D9B30
+MOD17_021D9B30: ; 0x021D9B30
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D9B48 ; =0x000006A8
+ ldr r0, [r4, r0]
+ bl FUN_02019570
+ ldr r0, _021D9B48 ; =0x000006A8
+ ldr r0, [r4, r0]
+ bl FUN_02019178
+ pop {r4, pc}
+ nop
+_021D9B48: .word 0x000006A8
+ thumb_func_end MOD17_021D9B30
+
+ thumb_func_start MOD17_021D9B4C
+MOD17_021D9B4C: ; 0x021D9B4C
+ push {r3, lr}
+ sub sp, #8
+ mov r2, #0x1b
+ str r2, [sp]
+ mov r2, #2
+ mov r3, #1
+ str r2, [sp, #4]
+ bl MOD17_021D9918
+ add sp, #8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9B4C
+
+ thumb_func_start MOD17_021D9B64
+MOD17_021D9B64: ; 0x021D9B64
+ ldr r3, _021D9B68 ; =MOD17_021D99E0
+ bx r3
+ .align 2, 0
+_021D9B68: .word MOD17_021D99E0
+ thumb_func_end MOD17_021D9B64
+
+ thumb_func_start MOD17_021D9B6C
+MOD17_021D9B6C: ; 0x021D9B6C
+ ldr r3, _021D9B70 ; =MOD17_021D9B30
+ bx r3
+ .align 2, 0
+_021D9B70: .word MOD17_021D9B30
+ thumb_func_end MOD17_021D9B6C
+
+ thumb_func_start MOD17_021D9B74
+MOD17_021D9B74: ; 0x021D9B74
+ push {r4, lr}
+ sub sp, #8
+ mov r2, #0x1b
+ str r2, [sp]
+ mov r2, #4
+ str r2, [sp, #4]
+ mov r2, #2
+ mov r3, #0x13
+ add r4, r0, #0
+ bl MOD17_021D9918
+ mov r0, #0xd
+ bl FUN_0200AA80
+ ldr r1, _021D9B98 ; =0x000006D4
+ str r0, [r4, r1]
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_021D9B98: .word 0x000006D4
+ thumb_func_end MOD17_021D9B74
+
+ thumb_func_start MOD17_021D9B9C
+MOD17_021D9B9C: ; 0x021D9B9C
+ ldr r3, _021D9BA0 ; =MOD17_021D9A68
+ bx r3
+ .align 2, 0
+_021D9BA0: .word MOD17_021D9A68
+ thumb_func_end MOD17_021D9B9C
+
+ thumb_func_start MOD17_021D9BA4
+MOD17_021D9BA4: ; 0x021D9BA4
+ push {r3, lr}
+ sub sp, #8
+ mov r3, #0
+ str r3, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ ldr r3, _021D9BC0 ; =0x000006D4
+ ldr r0, [r0, r3]
+ mov r3, #2
+ bl FUN_0200AD38
+ add sp, #8
+ pop {r3, pc}
+ nop
+_021D9BC0: .word 0x000006D4
+ thumb_func_end MOD17_021D9BA4
+
+ thumb_func_start MOD17_021D9BC4
+MOD17_021D9BC4: ; 0x021D9BC4
+ ldr r3, _021D9BC8 ; =MOD17_021D9B18
+ bx r3
+ .align 2, 0
+_021D9BC8: .word MOD17_021D9B18
+ thumb_func_end MOD17_021D9BC4
+
+ thumb_func_start MOD17_021D9BCC
+MOD17_021D9BCC: ; 0x021D9BCC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D9B30
+ ldr r0, _021D9BE4 ; =0x000006D4
+ ldr r0, [r4, r0]
+ bl FUN_0200AB18
+ ldr r0, _021D9BE4 ; =0x000006D4
+ mov r1, #0
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021D9BE4: .word 0x000006D4
+ thumb_func_end MOD17_021D9BCC
+
+ thumb_func_start MOD17_021D9BE8
+MOD17_021D9BE8: ; 0x021D9BE8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DA368
+ add r1, r0, #0
+ ldr r0, _021D9C04 ; =0x00000554
+ add r0, r4, r0
+ bl MOD17_021DCBD8
+ pop {r4, pc}
+ nop
+_021D9C04: .word 0x00000554
+ thumb_func_end MOD17_021D9BE8
+
+ thumb_func_start MOD17_021D9C08
+MOD17_021D9C08: ; 0x021D9C08
+ push {r4, lr}
+ cmp r0, #3
+ bhi _021D9C32
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9C1A: ; jump table
+ .short _021D9C22 - _021D9C1A - 2 ; case 0
+ .short _021D9C26 - _021D9C1A - 2 ; case 1
+ .short _021D9C2A - _021D9C1A - 2 ; case 2
+ .short _021D9C2E - _021D9C1A - 2 ; case 3
+_021D9C22:
+ mov r4, #5
+ b _021D9C36
+_021D9C26:
+ mov r4, #0xa
+ b _021D9C36
+_021D9C2A:
+ mov r4, #0xf
+ b _021D9C36
+_021D9C2E:
+ mov r4, #0x14
+ b _021D9C36
+_021D9C32:
+ bl ErrorHandling
+_021D9C36:
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9C08
+
+ thumb_func_start MOD17_021D9C3C
+MOD17_021D9C3C: ; 0x021D9C3C
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ mov r1, #0x19
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #5
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ strb r1, [r0, #0x10]
+ mov r1, #4
+ strb r1, [r0, #0x11]
+ ldr r0, _021D9CA4 ; =0x000006A4
+ ldr r0, [r4, r0]
+ bl FUN_020146C4
+ ldr r0, _021D9CA4 ; =0x000006A4
+ add r1, sp, #0
+ ldr r0, [r4, r0]
+ bl FUN_020145C8
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD17_021D9B64
+ ldr r0, _021D9CA8 ; =0x04000008
+ mov r2, #3
+ ldrh r3, [r0]
+ mov r1, #2
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r3, [r0, #2]
+ mov r1, #1
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #2]
+ ldrh r3, [r0, #4]
+ mov r1, #3
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0, #4]
+ ldrh r1, [r0, #6]
+ bic r1, r2
+ strh r1, [r0, #6]
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_021D9CA4: .word 0x000006A4
+_021D9CA8: .word 0x04000008
+ thumb_func_end MOD17_021D9C3C
+
+ thumb_func_start MOD17_021D9CAC
+MOD17_021D9CAC: ; 0x021D9CAC
+ push {r3, lr}
+ ldr r1, _021D9CD0 ; =0x000006A4
+ ldr r0, [r0, r1]
+ bl FUN_0201466C
+ cmp r0, #0
+ beq _021D9CC4
+ cmp r0, #1
+ beq _021D9CC8
+ cmp r0, #2
+ beq _021D9CCC
+ pop {r3, pc}
+_021D9CC4:
+ mov r0, #5
+ pop {r3, pc}
+_021D9CC8:
+ mov r0, #6
+ pop {r3, pc}
+_021D9CCC:
+ mov r0, #7
+ pop {r3, pc}
+ .align 2, 0
+_021D9CD0: .word 0x000006A4
+ thumb_func_end MOD17_021D9CAC
+
+ thumb_func_start MOD17_021D9CD4
+MOD17_021D9CD4: ; 0x021D9CD4
+ ldr r3, _021D9CDC ; =0x020DF4A4
+ mov r1, #0
+ mov r2, #0xac
+ bx r3
+ .align 2, 0
+_021D9CDC: .word 0x020DF4A4
+ thumb_func_end MOD17_021D9CD4
+
+ thumb_func_start MOD17_021D9CE0
+MOD17_021D9CE0: ; 0x021D9CE0
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ cmp r4, #0
+ bne _021D9CF0
+ bl ErrorHandling
+_021D9CF0:
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ lsl r0, r0, #3
+ str r4, [r5, r0]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ lsl r0, r0, #3
+ add r0, r5, r0
+ str r6, [r0, #4]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ add r5, #0xa8
+ add r0, r0, #1
+ str r0, [r5]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021D9CE0
+
+ thumb_func_start MOD17_021D9D14
+MOD17_021D9D14: ; 0x021D9D14
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r0, #0xa8
+ ldr r2, [r0]
+ mov r1, #0
+ cmp r2, #0
+ ble _021D9D6C
+_021D9D22:
+ lsl r0, r1, #3
+ add r7, r6, r0
+ ldr r0, [r7, #4]
+ cmp r0, #1
+ bne _021D9D60
+ mov r4, #0
+ cmp r2, #0
+ ble _021D9D58
+ add r5, r6, #0
+_021D9D34:
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ bne _021D9D4A
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD17_021D9DA4
+ cmp r0, #1
+ bne _021D9D4A
+ mov r0, #1
+ str r0, [r5, #4]
+_021D9D4A:
+ add r0, r6, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, r0
+ blt _021D9D34
+_021D9D58:
+ mov r0, #2
+ str r0, [r7, #4]
+ mov r1, #0
+ b _021D9D62
+_021D9D60:
+ add r1, r1, #1
+_021D9D62:
+ add r0, r6, #0
+ add r0, #0xa8
+ ldr r2, [r0]
+ cmp r1, r2
+ blt _021D9D22
+_021D9D6C:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9D14
+
+ thumb_func_start MOD17_021D9D70
+MOD17_021D9D70: ; 0x021D9D70
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #0x15
+ blo _021D9D7E
+ bl ErrorHandling
+_021D9D7E:
+ lsl r0, r5, #3
+ ldr r0, [r4, r0]
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021D9D70
+
+ thumb_func_start MOD17_021D9D84
+MOD17_021D9D84: ; 0x021D9D84
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #0x15
+ blo _021D9D92
+ bl ErrorHandling
+_021D9D92:
+ lsl r0, r5, #3
+ add r0, r4, r0
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _021D9DA0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D9DA0:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021D9D84
+
+ thumb_func_start MOD17_021D9DA4
+MOD17_021D9DA4: ; 0x021D9DA4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r5, r1, #0
+ add r1, sp, #0x28
+ add r2, sp, #0x24
+ bl MOD17_021DBCC8
+ add r0, sp, #0x20
+ str r0, [sp]
+ ldr r0, [r4]
+ add r1, sp, #0x14
+ add r2, sp, #0x18
+ add r3, sp, #0x1c
+ bl MOD17_021DBC70
+ mov r4, #0
+ add r6, sp, #0x10
+ add r7, sp, #0xc
+_021D9DCC:
+ str r4, [sp]
+ str r6, [sp, #4]
+ str r7, [sp, #8]
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x20]
+ bl MOD17_021D9E78
+ ldr r0, [r5]
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ bl MOD17_021DBAE8
+ cmp r0, #1
+ bne _021D9DF2
+ add sp, #0x2c
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021D9DF2:
+ add r4, r4, #1
+ cmp r4, #0x10
+ blt _021D9DCC
+ mov r0, #0
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9DA4
+
+ thumb_func_start MOD17_021D9E00
+MOD17_021D9E00: ; 0x021D9E00
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ ldr r4, [r5, #8]
+ add r6, r0, #0
+ add r7, r2, #0
+ cmp r4, r5
+ beq _021D9E24
+_021D9E0E:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021D9E1E
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl MOD17_021D9CE0
+_021D9E1E:
+ ldr r4, [r4, #8]
+ cmp r4, r5
+ bne _021D9E0E
+_021D9E24:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9E00
+
+ thumb_func_start MOD17_021D9E28
+MOD17_021D9E28: ; 0x021D9E28
+ push {r3, r4, r5, lr}
+ ldr r2, _021D9E70 ; =0x000006C4
+ mov r1, #0
+ ldr r2, [r0, r2]
+ ldrb r3, [r2, #0x16]
+ cmp r3, #0
+ bne _021D9E40
+ ldr r2, _021D9E74 ; =0x00000554
+ add r0, r0, r2
+ bl MOD17_021DCBEC
+ pop {r3, r4, r5, pc}
+_021D9E40:
+ ldrb r4, [r2, #0x14]
+ ldrb r3, [r2, #0x15]
+ cmp r4, r3
+ bne _021D9E6C
+ add r4, r1, #0
+ add r5, r2, #0
+_021D9E4C:
+ ldrb r3, [r5, #0x10]
+ cmp r3, #1
+ bne _021D9E54
+ add r1, r1, #1
+_021D9E54:
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r4, #4
+ blt _021D9E4C
+ ldrb r2, [r2, #0x17]
+ cmp r2, r1
+ bgt _021D9E6C
+ ldr r1, _021D9E74 ; =0x00000554
+ add r0, r0, r1
+ mov r1, #0
+ bl MOD17_021DCBEC
+_021D9E6C:
+ pop {r3, r4, r5, pc}
+ nop
+_021D9E70: .word 0x000006C4
+_021D9E74: .word 0x00000554
+ thumb_func_end MOD17_021D9E28
+
+ thumb_func_start MOD17_021D9E78
+MOD17_021D9E78: ; 0x021D9E78
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ str r1, [sp]
+ add r7, r2, #0
+ add r0, r3, #0
+ sub r0, r0, r7
+ mov r1, #3
+ str r3, [sp, #4]
+ ldr r4, [sp, #0x2c]
+ ldr r5, [sp, #0x30]
+ bl _u32_div_f
+ add r1, r7, r0
+ lsl r0, r0, #1
+ add r0, r7, r0
+ str r0, [sp, #8]
+ ldr r0, [sp]
+ str r1, [sp, #0xc]
+ sub r0, r0, r6
+ mov r1, #3
+ bl _u32_div_f
+ add r2, r6, r0
+ lsl r0, r0, #1
+ ldr r1, [sp, #0x28]
+ add r0, r6, r0
+ cmp r1, #0xf
+ bhi _021D9F7A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D9EBE: ; jump table
+ .short _021D9EDE - _021D9EBE - 2 ; case 0
+ .short _021D9EE6 - _021D9EBE - 2 ; case 1
+ .short _021D9EEE - _021D9EBE - 2 ; case 2
+ .short _021D9EF6 - _021D9EBE - 2 ; case 3
+ .short _021D9F00 - _021D9EBE - 2 ; case 4
+ .short _021D9F0A - _021D9EBE - 2 ; case 5
+ .short _021D9F14 - _021D9EBE - 2 ; case 6
+ .short _021D9F1E - _021D9EBE - 2 ; case 7
+ .short _021D9F2A - _021D9EBE - 2 ; case 8
+ .short _021D9F34 - _021D9EBE - 2 ; case 9
+ .short _021D9F3E - _021D9EBE - 2 ; case 10
+ .short _021D9F48 - _021D9EBE - 2 ; case 11
+ .short _021D9F54 - _021D9EBE - 2 ; case 12
+ .short _021D9F5E - _021D9EBE - 2 ; case 13
+ .short _021D9F68 - _021D9EBE - 2 ; case 14
+ .short _021D9F72 - _021D9EBE - 2 ; case 15
+_021D9EDE:
+ str r7, [r4]
+ add sp, #0x10
+ str r6, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9EE6:
+ str r7, [r4]
+ add sp, #0x10
+ str r2, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9EEE:
+ str r7, [r4]
+ add sp, #0x10
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9EF6:
+ ldr r0, [sp]
+ str r7, [r4]
+ add sp, #0x10
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F00:
+ ldr r0, [sp, #0xc]
+ add sp, #0x10
+ str r0, [r4]
+ str r6, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F0A:
+ ldr r0, [sp, #0xc]
+ add sp, #0x10
+ str r0, [r4]
+ str r2, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F14:
+ ldr r1, [sp, #0xc]
+ add sp, #0x10
+ str r1, [r4]
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F1E:
+ ldr r0, [sp, #0xc]
+ str r0, [r4]
+ ldr r0, [sp]
+ add sp, #0x10
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F2A:
+ ldr r0, [sp, #8]
+ add sp, #0x10
+ str r0, [r4]
+ str r6, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F34:
+ ldr r0, [sp, #8]
+ add sp, #0x10
+ str r0, [r4]
+ str r2, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F3E:
+ ldr r1, [sp, #8]
+ add sp, #0x10
+ str r1, [r4]
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F48:
+ ldr r0, [sp, #8]
+ str r0, [r4]
+ ldr r0, [sp]
+ add sp, #0x10
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F54:
+ ldr r0, [sp, #4]
+ add sp, #0x10
+ str r0, [r4]
+ str r6, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F5E:
+ ldr r0, [sp, #4]
+ add sp, #0x10
+ str r0, [r4]
+ str r2, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F68:
+ ldr r1, [sp, #4]
+ add sp, #0x10
+ str r1, [r4]
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9F72:
+ ldr r0, [sp, #4]
+ str r0, [r4]
+ ldr r0, [sp]
+ str r0, [r5]
+_021D9F7A:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9E78
+
+ thumb_func_start MOD17_021D9F80
+MOD17_021D9F80: ; 0x021D9F80
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1]
+ mov r2, #0
+ str r0, [r4, #0x2c]
+ ldr r0, [r1, #4]
+ str r0, [r4, #0x30]
+ ldr r0, [r1, #8]
+ str r0, [r4, #0x34]
+ ldr r0, [r1, #0xc]
+ str r0, [r4, #0x38]
+ ldr r0, [r1, #0x10]
+ str r0, [r4, #0x3c]
+ ldr r0, [r1, #0x14]
+ str r0, [r4, #0x40]
+ ldr r0, [r1, #0x18]
+ str r0, [r4, #0x44]
+ str r2, [r4, #0x74]
+ ldr r0, [r1, #0x1c]
+ str r0, [r4]
+ add r0, r4, #4
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ add r0, #0x14
+ str r0, [r4, #0x1c]
+ str r0, [r4, #0x20]
+ str r2, [r4, #0x24]
+ ldr r0, [r1, #0x20]
+ add r1, r4, #0
+ str r0, [r4, #0x28]
+ ldr r0, [r4]
+ add r1, #0x78
+ mov r2, #3
+ bl MOD17_021DBA30
+ add r4, #0x14
+ add r1, r4, #0
+ bl MOD17_021DBA90
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9F80
+
+ thumb_func_start MOD17_021D9FD4
+MOD17_021D9FD4: ; 0x021D9FD4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021DA058
+ add r0, r4, #0
+ bl MOD17_021DA100
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x88
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021D9FD4
+
+ thumb_func_start MOD17_021D9FF0
+MOD17_021D9FF0: ; 0x021D9FF0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r0, [sp, #0x20]
+ add r6, r1, #0
+ str r0, [sp]
+ add r5, r2, #0
+ add r0, r4, #0
+ add r7, r3, #0
+ ldr r1, [r4, #0x3c]
+ add r0, #0x78
+ add r2, r6, #0
+ add r3, r5, #0
+ bl MOD17_021DB700
+ add r0, r4, #0
+ ldr r1, [sp, #0x1c]
+ add r0, #0x78
+ bl MOD17_021DB7D8
+ add r4, #0x78
+ ldr r2, [sp, #0x18]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD17_021DB7F4
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021D9FF0
+
+ thumb_func_start MOD17_021DA024
+MOD17_021DA024: ; 0x021DA024
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r0, #0
+ str r3, [sp]
+ add r5, r1, #0
+ add r4, r2, #0
+ ldr r1, [r6, #0x3c]
+ add r0, #0x78
+ add r2, r5, #0
+ add r3, r4, #0
+ bl MOD17_021DB700
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD17_021DA024
+
+ thumb_func_start MOD17_021DA040
+MOD17_021DA040: ; 0x021DA040
+ ldr r3, _021DA04C ; =MOD17_021DBA90
+ add r2, r0, #0
+ add r0, r1, #0
+ ldr r1, [r2, #0x20]
+ bx r3
+ nop
+_021DA04C: .word MOD17_021DBA90
+ thumb_func_end MOD17_021DA040
+
+ thumb_func_start MOD17_021DA050
+MOD17_021DA050: ; 0x021DA050
+ ldr r3, _021DA054 ; =MOD17_021DBAA0
+ bx r3
+ .align 2, 0
+_021DA054: .word MOD17_021DBAA0
+ thumb_func_end MOD17_021DA050
+
+ thumb_func_start MOD17_021DA058
+MOD17_021DA058: ; 0x021DA058
+ ldr r3, _021DA060 ; =MOD17_021DB7C0
+ add r0, #0x78
+ bx r3
+ nop
+_021DA060: .word MOD17_021DB7C0
+ thumb_func_end MOD17_021DA058
+
+ thumb_func_start MOD17_021DA064
+MOD17_021DA064: ; 0x021DA064
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r4, r0, #0
+ ldr r5, [r4, #0x24]
+ ldr r0, [r4, #0x28]
+ cmp r5, r0
+ bge _021DA0BE
+ ldr r0, [r4, #0x44]
+ str r0, [sp]
+ ldr r0, [r4, #0x2c]
+ str r0, [sp, #4]
+ ldr r5, [r4, #0x30]
+ lsl r0, r1, #2
+ ldr r0, [r5, r0]
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x34]
+ ldr r0, [r0]
+ str r2, [sp, #0x10]
+ str r3, [sp, #0x14]
+ str r1, [sp, #0x18]
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x38]
+ ldrb r0, [r0, r1]
+ str r0, [sp, #0x1c]
+ add r0, sp, #0
+ bl MOD17_021D7520
+ ldr r1, [sp, #0x30]
+ add r5, r0, #0
+ bl MOD17_021D766C
+ ldr r0, [r4]
+ add r1, r5, #0
+ mov r2, #0
+ bl MOD17_021DBA30
+ add r1, r4, #4
+ bl MOD17_021DBA90
+ ldr r0, [r4, #0x24]
+ add sp, #0x20
+ add r0, r0, #1
+ str r0, [r4, #0x24]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DA0BE:
+ mov r0, #0
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DA064
+
+ thumb_func_start MOD17_021DA0C4
+MOD17_021DA0C4: ; 0x021DA0C4
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r3, r2, #0
+ ldr r5, [r4, #0x24]
+ ldr r2, [r4, #0x28]
+ cmp r5, r2
+ bge _021DA0E2
+ mov r2, #1
+ bl MOD17_021DA454
+ ldr r0, [r4, #0x24]
+ add r0, r0, #1
+ str r0, [r4, #0x24]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DA0E2:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA0C4
+
+ thumb_func_start MOD17_021DA0E8
+MOD17_021DA0E8: ; 0x021DA0E8
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ bl MOD17_021DBAA0
+ ldr r0, [r4, #0x24]
+ sub r0, r0, #1
+ str r0, [r4, #0x24]
+ bpl _021DA0FE
+ bl ErrorHandling
+_021DA0FE:
+ pop {r4, pc}
+ thumb_func_end MOD17_021DA0E8
+
+ thumb_func_start MOD17_021DA100
+MOD17_021DA100: ; 0x021DA100
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r4, #4
+ bl MOD17_021DBAB0
+ add r0, r4, #0
+ add r0, #0x14
+ bl MOD17_021DBAB0
+ mov r0, #0
+ str r0, [r4, #0x24]
+ pop {r4, pc}
+ thumb_func_end MOD17_021DA100
+
+ thumb_func_start MOD17_021DA118
+MOD17_021DA118: ; 0x021DA118
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, r5, #4
+ add r4, r1, #0
+ add r6, r2, #0
+ bl MOD17_021DBC38
+ add r5, #0x14
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD17_021DBC38
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DA118
+
+ thumb_func_start MOD17_021DA134
+MOD17_021DA134: ; 0x021DA134
+ ldr r3, _021DA13C ; =MOD17_021DBC38
+ add r0, #0x14
+ bx r3
+ nop
+_021DA13C: .word MOD17_021DBC38
+ thumb_func_end MOD17_021DA134
+
+ thumb_func_start MOD17_021DA140
+MOD17_021DA140: ; 0x021DA140
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ neg r4, r2
+ neg r7, r1
+ add r0, r5, #4
+ add r1, r7, #0
+ add r2, r4, #0
+ add r6, r3, #0
+ bl MOD17_021DBC38
+ ldr r2, [sp, #0x18]
+ add r0, r5, #4
+ add r1, r6, #0
+ bl MOD17_021DBC38
+ add r0, r5, #0
+ add r0, #0x14
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD17_021DBC38
+ add r5, #0x14
+ ldr r2, [sp, #0x18]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD17_021DBC38
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DA140
+
+ thumb_func_start MOD17_021DA178
+MOD17_021DA178: ; 0x021DA178
+ ldr r3, _021DA180 ; =MOD17_021DA184
+ mov r1, #0
+ mvn r1, r1
+ bx r3
+ .align 2, 0
+_021DA180: .word MOD17_021DA184
+ thumb_func_end MOD17_021DA178
+
+ thumb_func_start MOD17_021DA184
+MOD17_021DA184: ; 0x021DA184
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r6, r7, #0
+ ldr r4, [r7, #0x1c]
+ add r6, #0x14
+ add r5, r1, #0
+ cmp r4, r6
+ beq _021DA1B2
+_021DA194:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ ldr r0, [r4]
+ bne _021DA1A4
+ add r1, r5, #0
+ bl MOD17_021D766C
+ b _021DA1AA
+_021DA1A4:
+ add r1, r5, #0
+ bl MOD17_021DB7D8
+_021DA1AA:
+ ldr r4, [r4, #8]
+ sub r5, r5, #1
+ cmp r4, r6
+ bne _021DA194
+_021DA1B2:
+ ldr r4, [r7, #0xc]
+ add r6, r7, #4
+ sub r5, #8
+ cmp r4, r6
+ beq _021DA1DA
+_021DA1BC:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ ldr r0, [r4]
+ bne _021DA1CC
+ add r1, r5, #0
+ bl MOD17_021D766C
+ b _021DA1D2
+_021DA1CC:
+ add r1, r5, #0
+ bl MOD17_021DB7D8
+_021DA1D2:
+ ldr r4, [r4, #8]
+ sub r5, r5, #1
+ cmp r4, r6
+ bne _021DA1BC
+_021DA1DA:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DA184
+
+ thumb_func_start MOD17_021DA1DC
+MOD17_021DA1DC: ; 0x021DA1DC
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r6, r7, #0
+ ldr r4, [r7, #0x1c]
+ add r6, #0x14
+ add r5, r1, #0
+ cmp r4, r6
+ beq _021DA218
+_021DA1EC:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ ldr r0, [r4]
+ bne _021DA204
+ bl MOD17_021D7678
+ add r1, r0, #0
+ ldr r0, [r4]
+ add r1, r1, r5
+ bl MOD17_021D766C
+ b _021DA212
+_021DA204:
+ bl MOD17_021DB7E8
+ add r1, r0, #0
+ ldr r0, [r4]
+ add r1, r1, r5
+ bl MOD17_021DB7D8
+_021DA212:
+ ldr r4, [r4, #8]
+ cmp r4, r6
+ bne _021DA1EC
+_021DA218:
+ ldr r4, [r7, #0xc]
+ add r6, r7, #4
+ cmp r4, r6
+ beq _021DA24C
+_021DA220:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ ldr r0, [r4]
+ bne _021DA238
+ bl MOD17_021D7678
+ add r1, r0, #0
+ ldr r0, [r4]
+ add r1, r1, r5
+ bl MOD17_021D766C
+ b _021DA246
+_021DA238:
+ bl MOD17_021DB7E8
+ add r1, r0, #0
+ ldr r0, [r4]
+ add r1, r1, r5
+ bl MOD17_021DB7D8
+_021DA246:
+ ldr r4, [r4, #8]
+ cmp r4, r6
+ bne _021DA220
+_021DA24C:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA1DC
+
+ thumb_func_start MOD17_021DA250
+MOD17_021DA250: ; 0x021DA250
+ push {r3, lr}
+ mov r1, #0x12
+ add r0, sp, #0
+ strb r1, [r0]
+ mov r1, #0x8f
+ strb r1, [r0, #1]
+ mov r1, #0x8a
+ strb r1, [r0, #2]
+ mov r1, #0xf6
+ strb r1, [r0, #3]
+ add r0, sp, #0
+ bl FUN_02020A40
+ pop {r3, pc}
+ thumb_func_end MOD17_021DA250
+
+ thumb_func_start MOD17_021DA26C
+MOD17_021DA26C: ; 0x021DA26C
+ push {r3, lr}
+ mov r3, #0x12
+ add r0, sp, #0
+ strb r3, [r0]
+ mov r3, #0x8f
+ strb r3, [r0, #1]
+ mov r3, #0x8a
+ strb r3, [r0, #2]
+ mov r3, #0xf6
+ strb r3, [r0, #3]
+ add r0, sp, #0
+ bl FUN_02020AE8
+ pop {r3, pc}
+ thumb_func_end MOD17_021DA26C
+
+ thumb_func_start MOD17_021DA288
+MOD17_021DA288: ; 0x021DA288
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r5, [r0, #0x1c]
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, #0x14
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ str r0, [sp, #4]
+ cmp r5, r0
+ beq _021DA2BE
+_021DA2A0:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD17_021DBB1C
+ cmp r0, #1
+ bne _021DA2B6
+ add sp, #0xc
+ add r0, r5, #0
+ pop {r4, r5, r6, r7, pc}
+_021DA2B6:
+ ldr r5, [r5, #8]
+ ldr r0, [sp, #4]
+ cmp r5, r0
+ bne _021DA2A0
+_021DA2BE:
+ ldr r0, [sp]
+ ldr r5, [r0, #0xc]
+ add r0, r0, #4
+ str r0, [sp, #8]
+ cmp r5, r0
+ beq _021DA2E8
+_021DA2CA:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD17_021DBB1C
+ cmp r0, #1
+ bne _021DA2E0
+ add sp, #0xc
+ add r0, r5, #0
+ pop {r4, r5, r6, r7, pc}
+_021DA2E0:
+ ldr r5, [r5, #8]
+ ldr r0, [sp, #8]
+ cmp r5, r0
+ bne _021DA2CA
+_021DA2E8:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA288
+
+ thumb_func_start MOD17_021DA2F0
+MOD17_021DA2F0: ; 0x021DA2F0
+ push {r3, r4, r5, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ ldr r0, [r5, #0x40]
+ add r4, r1, #0
+ str r0, [sp]
+ mov r0, #0x19
+ lsl r1, r4, #2
+ str r0, [sp, #4]
+ add r0, r1, #0
+ add r0, #0x86
+ str r0, [sp, #8]
+ add r0, r1, #0
+ add r0, #0x87
+ str r0, [sp, #0xc]
+ mov r0, #0x88
+ str r0, [sp, #0x14]
+ mov r0, #0x10
+ str r0, [sp, #0x18]
+ mov r0, #2
+ str r0, [sp, #0x1c]
+ mov r0, #1
+ add r1, #0x88
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ mov r0, #0
+ str r0, [sp, #0x28]
+ add r0, r5, #0
+ add r0, #0x48
+ add r1, sp, #0
+ str r2, [sp, #0x2c]
+ bl MOD17_021DBD04
+ str r4, [r5, #0x74]
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA2F0
+
+ thumb_func_start MOD17_021DA33C
+MOD17_021DA33C: ; 0x021DA33C
+ ldr r3, _021DA344 ; =MOD17_021DBD4C
+ add r0, #0x48
+ bx r3
+ nop
+_021DA344: .word MOD17_021DBD4C
+ thumb_func_end MOD17_021DA33C
+
+ thumb_func_start MOD17_021DA348
+MOD17_021DA348: ; 0x021DA348
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x78]
+ add r4, r1, #0
+ mov r1, #0
+ add r6, r2, #0
+ bl FUN_0200782C
+ str r0, [r4]
+ ldr r0, [r5, #0x78]
+ mov r1, #1
+ bl FUN_0200782C
+ str r0, [r6]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA348
+
+ thumb_func_start MOD17_021DA368
+MOD17_021DA368: ; 0x021DA368
+ ldr r0, [r0, #0x24]
+ bx lr
+ thumb_func_end MOD17_021DA368
+
+ thumb_func_start MOD17_021DA36C
+MOD17_021DA36C: ; 0x021DA36C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ ldr r6, [r7, #0x1c]
+ mov r4, #0
+ add r7, #0x14
+ str r1, [sp]
+ str r2, [sp, #4]
+ add r5, r4, #0
+ cmp r6, r7
+ beq _021DA3CA
+_021DA382:
+ add r0, r6, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DA528
+ cmp r4, #0
+ bge _021DA394
+ neg r1, r4
+ b _021DA396
+_021DA394:
+ add r1, r4, #0
+_021DA396:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ bge _021DA3A0
+ neg r2, r0
+ b _021DA3A2
+_021DA3A0:
+ add r2, r0, #0
+_021DA3A2:
+ cmp r2, r1
+ ble _021DA3A8
+ add r4, r0, #0
+_021DA3A8:
+ cmp r5, #0
+ bge _021DA3B0
+ neg r1, r5
+ b _021DA3B2
+_021DA3B0:
+ add r1, r5, #0
+_021DA3B2:
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ bge _021DA3BC
+ neg r2, r0
+ b _021DA3BE
+_021DA3BC:
+ add r2, r0, #0
+_021DA3BE:
+ cmp r2, r1
+ ble _021DA3C4
+ add r5, r0, #0
+_021DA3C4:
+ ldr r6, [r6, #8]
+ cmp r6, r7
+ bne _021DA382
+_021DA3CA:
+ ldr r0, [sp]
+ str r4, [r0]
+ ldr r0, [sp, #4]
+ str r5, [r0]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA36C
+
+ thumb_func_start MOD17_021DA3D8
+MOD17_021DA3D8: ; 0x021DA3D8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ ldr r4, [r0, #0x1c]
+ add r7, #0x14
+ str r0, [sp]
+ add r6, r1, #0
+ cmp r4, r7
+ beq _021DA436
+ asr r0, r6, #0xa
+ mov r1, #0x1f
+ and r0, r1
+ str r0, [sp, #0xc]
+ asr r0, r6, #5
+ and r0, r1
+ str r0, [sp, #8]
+ add r0, r6, #0
+ and r0, r1
+ str r0, [sp, #4]
+_021DA3FE:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bne _021DA410
+ ldr r0, [r4]
+ add r1, r6, #0
+ ldr r0, [r0, #4]
+ bl FUN_02013F0C
+ b _021DA430
+_021DA410:
+ ldr r5, [r4]
+ ldr r2, [sp, #0xc]
+ ldr r0, [r5]
+ mov r1, #0x18
+ bl FUN_02007558
+ ldr r0, [r5]
+ ldr r2, [sp, #8]
+ mov r1, #0x19
+ bl FUN_02007558
+ ldr r0, [r5]
+ ldr r2, [sp, #4]
+ mov r1, #0x1a
+ bl FUN_02007558
+_021DA430:
+ ldr r4, [r4, #8]
+ cmp r4, r7
+ bne _021DA3FE
+_021DA436:
+ ldr r0, [sp]
+ ldr r4, [r0, #0xc]
+ add r5, r0, #4
+ cmp r4, r5
+ beq _021DA450
+_021DA440:
+ ldr r0, [r4]
+ add r1, r6, #0
+ ldr r0, [r0, #4]
+ bl FUN_02013F0C
+ ldr r4, [r4, #8]
+ cmp r4, r5
+ bne _021DA440
+_021DA450:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DA3D8
+
+ thumb_func_start MOD17_021DA454
+MOD17_021DA454: ; 0x021DA454
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x50
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x14]
+ str r1, [sp, #0x10]
+ add r0, r1, #0
+ add r1, sp, #0x4c
+ add r2, sp, #0x48
+ add r4, r3, #0
+ bl MOD17_021DBBB8
+ ldr r0, [sp, #0x10]
+ add r1, sp, #0x44
+ add r2, sp, #0x40
+ bl MOD17_021DBC08
+ ldr r0, [sp, #0x10]
+ add r1, sp, #0x3c
+ add r2, sp, #0x38
+ bl MOD17_021DBC20
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r5, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x4c]
+ ldr r1, [sp, #0x44]
+ str r0, [sp, #0x24]
+ add r0, r0, r1
+ ldr r6, [sp, #0x3c]
+ ldr r1, [sp, #0x40]
+ sub r0, r0, r6
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x48]
+ ldr r7, [sp, #0x38]
+ str r0, [sp, #0x28]
+ add r0, r0, r1
+ sub r0, r0, r7
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0xc]
+ add r4, r5, #0
+ str r0, [sp, #0x2c]
+ add r0, #0x78
+ str r0, [sp, #0x2c]
+_021DA4AE:
+ str r4, [sp]
+ add r0, sp, #0x34
+ str r0, [sp, #4]
+ add r0, sp, #0x30
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x28]
+ ldr r2, [sp, #0x24]
+ ldr r1, [sp, #0x18]
+ ldr r3, [sp, #0x1c]
+ add r0, r0, r7
+ add r2, r2, r6
+ bl MOD17_021D9E78
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #0x34]
+ ldr r2, [sp, #0x30]
+ ldr r3, [sp, #0x20]
+ bl MOD17_021DB8F8
+ add r4, r4, #1
+ orr r5, r0
+ cmp r4, #0x10
+ blt _021DA4AE
+ cmp r5, #0
+ beq _021DA504
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _021DA4F6
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r1, #0x14
+ str r1, [sp, #0xc]
+ bl MOD17_021DBA90
+ add sp, #0x50
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA4F6:
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r1, [r1, #0x20]
+ bl MOD17_021DBA90
+ add sp, #0x50
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA504:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _021DA518
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r1, r1, #4
+ bl MOD17_021DBA90
+ add sp, #0x50
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA518:
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r1, [r1, #0x10]
+ bl MOD17_021DBA90
+ add sp, #0x50
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA454
+
+ thumb_func_start MOD17_021DA528
+MOD17_021DA528: ; 0x021DA528
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r0, #0
+ add r1, sp, #0x14
+ add r2, sp, #0x10
+ bl MOD17_021DBC08
+ add r0, r6, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DBBB8
+ add r0, r6, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBC20
+ ldr r1, [sp, #4]
+ ldr r0, [sp, #0xc]
+ mov r2, #0x8a
+ add r3, r0, r1
+ sub r6, r2, r3
+ ldr r2, [sp, #0x14]
+ ldr r7, [sp, #8]
+ add r0, r0, r2
+ sub r3, r0, r1
+ ldr r2, [sp]
+ mov r0, #0x12
+ add r1, r7, r2
+ sub r0, r0, r1
+ ldr r1, [sp, #0x10]
+ sub r3, #0xf6
+ add r1, r7, r1
+ sub r2, r1, r2
+ sub r2, #0x8f
+ cmp r6, #0
+ ble _021DA57A
+ str r6, [r5]
+ b _021DA588
+_021DA57A:
+ cmp r3, #0
+ ble _021DA584
+ neg r1, r3
+ str r1, [r5]
+ b _021DA588
+_021DA584:
+ mov r1, #0
+ str r1, [r5]
+_021DA588:
+ cmp r0, #0
+ ble _021DA592
+ add sp, #0x18
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA592:
+ cmp r2, #0
+ ble _021DA59E
+ neg r0, r2
+ add sp, #0x18
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA59E:
+ mov r0, #0
+ str r0, [r4]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA528
+
+ thumb_func_start MOD17_021DA5A8
+MOD17_021DA5A8: ; 0x021DA5A8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r5, r0, #0
+ str r1, [r5, #0x44]
+ ldr r1, [r4, #4]
+ str r1, [r5, #0x48]
+ ldr r1, [r4, #8]
+ str r1, [r5, #0x4c]
+ ldr r1, [r4, #0xc]
+ str r1, [r5, #0x50]
+ ldr r1, [r4, #0x10]
+ str r1, [r5, #0x54]
+ ldr r1, [r4, #0x14]
+ str r1, [r5, #0x58]
+ ldr r1, [r4, #0x18]
+ str r1, [r5, #8]
+ ldr r1, [r4, #0x28]
+ str r1, [r5, #4]
+ mov r1, #0
+ bl MOD17_021DA9AC
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021DAAC8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA5A8
+
+ thumb_func_start MOD17_021DA5E0
+MOD17_021DA5E0: ; 0x021DA5E0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ bl MOD17_021DA818
+ add r5, r6, #0
+ mov r4, #0
+ add r5, #0xc
+_021DA5EE:
+ add r0, r5, #0
+ bl MOD17_021DAB8C
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, #4
+ blt _021DA5EE
+ add r0, r6, #0
+ mov r1, #0
+ mov r2, #0x8c
+ bl Call_FillMemWithValue
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DA5E0
+
+ thumb_func_start MOD17_021DA608
+MOD17_021DA608: ; 0x021DA608
+ push {r3, lr}
+ cmp r0, #0
+ beq _021DA618
+ cmp r0, #1
+ beq _021DA688
+ cmp r0, #2
+ beq _021DA696
+ pop {r3, pc}
+_021DA618:
+ cmp r1, #5
+ bgt _021DA620
+ mov r0, #0
+ pop {r3, pc}
+_021DA620:
+ cmp r1, #0xb
+ bgt _021DA628
+ mov r0, #1
+ pop {r3, pc}
+_021DA628:
+ cmp r1, #0x11
+ bgt _021DA630
+ mov r0, #2
+ pop {r3, pc}
+_021DA630:
+ cmp r1, #0x15
+ bgt _021DA638
+ mov r0, #3
+ pop {r3, pc}
+_021DA638:
+ cmp r1, #0x1c
+ bgt _021DA640
+ mov r0, #4
+ pop {r3, pc}
+_021DA640:
+ cmp r1, #0x21
+ bgt _021DA648
+ mov r0, #5
+ pop {r3, pc}
+_021DA648:
+ cmp r1, #0x26
+ bgt _021DA650
+ mov r0, #6
+ pop {r3, pc}
+_021DA650:
+ cmp r1, #0x2a
+ bgt _021DA658
+ mov r0, #7
+ pop {r3, pc}
+_021DA658:
+ cmp r1, #0x31
+ bgt _021DA660
+ mov r0, #8
+ pop {r3, pc}
+_021DA660:
+ cmp r1, #0x37
+ bgt _021DA668
+ mov r0, #9
+ pop {r3, pc}
+_021DA668:
+ cmp r1, #0x3c
+ bgt _021DA670
+ mov r0, #0xa
+ pop {r3, pc}
+_021DA670:
+ cmp r1, #0x47
+ bgt _021DA678
+ mov r0, #0xb
+ pop {r3, pc}
+_021DA678:
+ cmp r1, #0x5b
+ bgt _021DA680
+ mov r0, #0xc
+ pop {r3, pc}
+_021DA680:
+ cmp r1, #0x63
+ bgt _021DA6A2
+ mov r0, #0xd
+ pop {r3, pc}
+_021DA688:
+ add r0, r2, #0
+ bl MOD17_021DB014
+ mov r1, #9
+ bl _s32_div_f
+ pop {r3, pc}
+_021DA696:
+ add r0, r2, #0
+ bl MOD17_021DB014
+ mov r1, #9
+ bl _s32_div_f
+_021DA6A2:
+ pop {r3, pc}
+ thumb_func_end MOD17_021DA608
+
+ thumb_func_start MOD17_021DA6A4
+MOD17_021DA6A4: ; 0x021DA6A4
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ add r4, r3, #0
+ cmp r0, #0
+ beq _021DA6B8
+ cmp r0, #1
+ beq _021DA6EA
+ cmp r0, #2
+ beq _021DA6EA
+ pop {r3, r4, r5, pc}
+_021DA6B8:
+ mov r0, #0xa
+ str r0, [r5]
+ mov r0, #0x12
+ str r0, [r4]
+ bl FUN_0201BA60
+ ldr r2, [sp, #0x10]
+ mov r1, #0x6c
+ sub r1, r1, r2
+ bl _u32_div_f
+ ldr r0, [r5]
+ add r0, r0, r1
+ str r0, [r5]
+ bl FUN_0201BA60
+ ldr r2, [sp, #0x14]
+ mov r1, #0x7d
+ sub r1, r1, r2
+ bl _u32_div_f
+ ldr r0, [r4]
+ add r0, r0, r1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_021DA6EA:
+ ldr r0, [sp, #0x18]
+ bl MOD17_021DB014
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD17_021DAC68
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA6A4
+
+ thumb_func_start MOD17_021DA6FC
+MOD17_021DA6FC: ; 0x021DA6FC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x48
+ add r5, r0, #0
+ ldr r0, [r5, #0x58]
+ add r4, r2, #0
+ str r4, [sp, #0x40]
+ str r0, [sp, #0x28]
+ ldr r0, [r5, #0x44]
+ add r6, r1, #0
+ mov r1, #0
+ str r0, [sp, #0x2c]
+ str r1, [sp, #0x38]
+ str r1, [sp, #0x3c]
+ cmp r6, #0
+ beq _021DA724
+ cmp r6, #1
+ beq _021DA730
+ cmp r6, #2
+ beq _021DA73E
+ b _021DA74C
+_021DA724:
+ ldr r0, [r5, #0x50]
+ str r4, [sp, #0xc]
+ ldrb r0, [r0, r4]
+ add r7, r1, #0
+ str r0, [sp, #0x44]
+ b _021DA750
+_021DA730:
+ add r0, r4, #0
+ str r0, [sp, #0xc]
+ add r0, #0x64
+ str r0, [sp, #0xc]
+ add r7, r4, #1
+ str r1, [sp, #0x44]
+ b _021DA750
+_021DA73E:
+ add r0, r4, #0
+ str r0, [sp, #0xc]
+ add r0, #0x64
+ str r0, [sp, #0xc]
+ add r7, r4, #1
+ str r1, [sp, #0x44]
+ b _021DA750
+_021DA74C:
+ bl ErrorHandling
+_021DA750:
+ ldr r0, [sp, #0xc]
+ ldr r1, [r5, #0x48]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ lsl r1, r7, #2
+ str r0, [sp, #0x30]
+ ldr r2, [r5, #0x4c]
+ cmp r0, #0
+ ldr r1, [r2, r1]
+ str r1, [sp, #0x34]
+ bne _021DA76A
+ bl ErrorHandling
+_021DA76A:
+ ldr r0, [sp, #0x34]
+ cmp r0, #0
+ bne _021DA774
+ bl ErrorHandling
+_021DA774:
+ ldr r2, [r5, #4]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD17_021DA608
+ add r7, r0, #0
+ add r0, sp, #0x28
+ bl MOD17_021D7520
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #8]
+ ldr r1, [sp, #0x10]
+ add r2, r6, #0
+ bl MOD17_021DBA30
+ mov r1, #0xc
+ mul r1, r6
+ add r1, r5, r1
+ ldr r2, [r1, #0xc]
+ lsl r1, r7, #4
+ add r1, r2, r1
+ ldr r1, [r1, #0xc]
+ str r0, [sp, #0x14]
+ bl MOD17_021DBA90
+ ldr r0, [sp, #0x14]
+ add r1, sp, #0x1c
+ add r2, sp, #0x18
+ bl MOD17_021DBC08
+ ldr r0, [sp, #0x1c]
+ add r1, r4, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x18]
+ add r2, sp, #0x24
+ str r0, [sp, #4]
+ ldr r0, [r5, #4]
+ add r3, sp, #0x20
+ str r0, [sp, #8]
+ add r0, r6, #0
+ bl MOD17_021DA6A4
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x24]
+ ldr r2, [sp, #0x20]
+ bl MOD17_021DBB68
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD17_021DAC40
+ add sp, #0x48
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA6FC
+
+ thumb_func_start MOD17_021DA7E4
+MOD17_021DA7E4: ; 0x021DA7E4
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ mov r1, #0xc
+ add r5, r0, #0
+ mul r1, r4
+ add r7, r3, #0
+ add r1, r5, r1
+ add r6, r2, #0
+ ldr r2, [r1, #0xc]
+ lsl r1, r6, #4
+ add r0, r7, #0
+ add r1, r2, r1
+ bl MOD17_021DBA90
+ ldr r1, [r7]
+ add r0, r5, #0
+ add r2, r4, #0
+ add r3, r6, #0
+ bl MOD17_021DAC40
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA7E4
+
+ thumb_func_start MOD17_021DA810
+MOD17_021DA810: ; 0x021DA810
+ ldr r3, _021DA814 ; =MOD17_021DBAA0
+ bx r3
+ .align 2, 0
+_021DA814: .word MOD17_021DBAA0
+ thumb_func_end MOD17_021DA810
+
+ thumb_func_start MOD17_021DA818
+MOD17_021DA818: ; 0x021DA818
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r7, #0
+_021DA81E:
+ ldr r0, [r5, #0x10]
+ mov r6, #0
+ cmp r0, #0
+ ble _021DA83A
+ add r4, r6, #0
+_021DA828:
+ ldr r0, [r5, #0xc]
+ add r0, r0, r4
+ bl MOD17_021DBAB0
+ ldr r0, [r5, #0x10]
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, r0
+ blt _021DA828
+_021DA83A:
+ add r7, r7, #1
+ add r5, #0xc
+ cmp r7, #3
+ blt _021DA81E
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DA818
+
+ thumb_func_start MOD17_021DA844
+MOD17_021DA844: ; 0x021DA844
+ push {r4, r5, r6, lr}
+ mov r5, #0
+ mvn r5, r5
+ bl MOD17_021DABB4
+ add r6, r0, #0
+ ldr r4, [r6, #8]
+ cmp r4, r6
+ beq _021DA86C
+_021DA856:
+ ldr r0, [r4, #4]
+ cmp r0, #2
+ bhi _021DA864
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD17_021D766C
+_021DA864:
+ ldr r4, [r4, #8]
+ sub r5, r5, #1
+ cmp r4, r6
+ bne _021DA856
+_021DA86C:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA844
+
+ thumb_func_start MOD17_021DA870
+MOD17_021DA870: ; 0x021DA870
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r6, r1, #0
+ ldr r1, [r5, #0x3c]
+ add r4, r2, #0
+ cmp r1, #0
+ bne _021DA8A8
+ ldr r1, [r5]
+ mov r2, #0xc
+ mul r2, r1
+ str r4, [sp]
+ add r2, r5, r2
+ ldr r2, [r2, #0x14]
+ add r3, r6, #0
+ bl MOD17_021DACA4
+ mov r0, #0xc
+ mul r0, r6
+ str r6, [r5]
+ add r0, r5, r0
+ str r4, [r0, #0x14]
+ add r0, r5, #0
+ bl MOD17_021DA844
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021DA8A8:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA870
+
+ thumb_func_start MOD17_021DA8B0
+MOD17_021DA8B0: ; 0x021DA8B0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ str r1, [sp, #4]
+ str r0, [sp]
+ str r2, [sp, #8]
+ bl MOD17_021DAA7C
+ add r7, r0, #0
+ ldr r0, [sp, #4]
+ mov r1, #0xc
+ mul r1, r0
+ ldr r0, [sp]
+ mov r4, #1
+ add r6, r0, r1
+ ldr r0, [r6, #0x10]
+ cmp r0, #1
+ ble _021DA912
+_021DA8D2:
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ bne _021DA8E4
+ ldr r1, [r6, #0x10]
+ add r0, r4, r7
+ bl _s32_div_f
+ add r5, r1, #0
+ b _021DA8EC
+_021DA8E4:
+ sub r5, r7, r4
+ bpl _021DA8EC
+ ldr r0, [r6, #0x10]
+ add r5, r5, r0
+_021DA8EC:
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ add r2, r5, #0
+ bl MOD17_021DABDC
+ ldr r1, [r0, #8]
+ cmp r1, r0
+ beq _021DA90A
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ add r2, r5, #0
+ bl MOD17_021DA870
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_021DA90A:
+ ldr r0, [r6, #0x10]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _021DA8D2
+_021DA912:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DA8B0
+
+ thumb_func_start MOD17_021DA918
+MOD17_021DA918: ; 0x021DA918
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ mov r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ bl MOD17_021DAB38
+ mov r0, #0xc
+ mul r0, r4
+ str r4, [r5]
+ add r0, r5, r0
+ str r6, [r0, #0x14]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD17_021DAB38
+ add r0, r5, #0
+ bl MOD17_021DA844
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DA918
+
+ thumb_func_start MOD17_021DA940
+MOD17_021DA940: ; 0x021DA940
+ push {r3, lr}
+ mov r1, #0x12
+ add r0, sp, #0
+ strb r1, [r0]
+ mov r1, #0x8f
+ strb r1, [r0, #1]
+ mov r1, #0xa
+ strb r1, [r0, #2]
+ mov r1, #0x76
+ strb r1, [r0, #3]
+ add r0, sp, #0
+ bl FUN_02020A40
+ pop {r3, pc}
+ thumb_func_end MOD17_021DA940
+
+ thumb_func_start MOD17_021DA95C
+MOD17_021DA95C: ; 0x021DA95C
+ push {r3, lr}
+ mov r3, #0x12
+ add r0, sp, #0
+ strb r3, [r0]
+ mov r3, #0x8f
+ strb r3, [r0, #1]
+ mov r3, #0xa
+ strb r3, [r0, #2]
+ mov r3, #0x76
+ strb r3, [r0, #3]
+ add r0, sp, #0
+ bl FUN_02020AE8
+ pop {r3, pc}
+ thumb_func_end MOD17_021DA95C
+
+ thumb_func_start MOD17_021DA978
+MOD17_021DA978: ; 0x021DA978
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp]
+ bl MOD17_021DABB4
+ add r5, r0, #0
+ ldr r4, [r5, #8]
+ cmp r4, r5
+ beq _021DA9A6
+_021DA98C:
+ ldr r3, [sp]
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD17_021DBB1C
+ cmp r0, #1
+ bne _021DA9A0
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA9A0:
+ ldr r4, [r4, #8]
+ cmp r4, r5
+ bne _021DA98C
+_021DA9A6:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DA978
+
+ thumb_func_start MOD17_021DA9AC
+MOD17_021DA9AC: ; 0x021DA9AC
+ push {r3, r4, r5, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ ldr r0, [r5, #0x54]
+ add r4, r1, #0
+ str r0, [sp]
+ mov r0, #0x19
+ lsl r1, r4, #1
+ str r0, [sp, #4]
+ add r0, r1, #0
+ add r0, #0x81
+ str r0, [sp, #8]
+ mov r0, #0x85
+ str r0, [sp, #0xc]
+ mov r0, #8
+ str r0, [sp, #0x14]
+ mov r0, #0x81
+ str r0, [sp, #0x18]
+ mov r0, #3
+ str r0, [sp, #0x1c]
+ mov r0, #1
+ str r0, [sp, #0x20]
+ mov r0, #2
+ str r0, [sp, #0x24]
+ mov r0, #0
+ str r0, [sp, #0x28]
+ mov r0, #0xe
+ add r1, #0x82
+ str r0, [sp, #0x2c]
+ add r0, r5, #0
+ str r1, [sp, #0x10]
+ add r0, #0x5c
+ add r1, sp, #0
+ bl MOD17_021DBD04
+ str r4, [r5, #0x40]
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DA9AC
+
+ thumb_func_start MOD17_021DA9F8
+MOD17_021DA9F8: ; 0x021DA9F8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r5, r0, #0
+ ldr r0, [r5, #0x54]
+ add r4, r1, #0
+ str r0, [sp, #8]
+ mov r0, #0x19
+ lsl r1, r4, #1
+ str r0, [sp, #0xc]
+ add r0, r1, #0
+ add r0, #0x81
+ str r0, [sp, #0x10]
+ mov r0, #0x85
+ str r0, [sp, #0x14]
+ mov r0, #8
+ add r1, #0x82
+ str r0, [sp, #0x1c]
+ mov r0, #0x81
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x20]
+ mov r0, #3
+ mov r1, #2
+ str r0, [sp, #0x24]
+ mov r0, #1
+ str r1, [sp, #0x2c]
+ mov r7, #0
+ mov r1, #0xe
+ str r0, [sp, #0x28]
+ str r7, [sp, #0x30]
+ str r1, [sp, #0x34]
+ tst r0, r2
+ beq _021DAA3A
+ mov r7, #0x70
+_021DAA3A:
+ mov r0, #2
+ tst r0, r2
+ beq _021DAA44
+ mov r6, #0x81
+ b _021DAA46
+_021DAA44:
+ mov r6, #0
+_021DAA46:
+ ldr r0, [sp, #0x50]
+ str r3, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x5c
+ add r1, sp, #8
+ add r2, r7, #0
+ add r3, r6, #0
+ bl MOD17_021DBE3C
+ str r4, [r5, #0x40]
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DA9F8
+
+ thumb_func_start MOD17_021DAA60
+MOD17_021DAA60: ; 0x021DAA60
+ ldr r3, _021DAA68 ; =MOD17_021DBD4C
+ add r0, #0x5c
+ bx r3
+ nop
+_021DAA68: .word MOD17_021DBD4C
+ thumb_func_end MOD17_021DAA60
+
+ thumb_func_start MOD17_021DAA6C
+MOD17_021DAA6C: ; 0x021DAA6C
+ push {r4, lr}
+ add r4, r0, #0
+ bne _021DAA76
+ bl ErrorHandling
+_021DAA76:
+ ldr r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAA6C
+
+ thumb_func_start MOD17_021DAA7C
+MOD17_021DAA7C: ; 0x021DAA7C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r5, #0
+ bne _021DAA8C
+ bl ErrorHandling
+_021DAA8C:
+ mov r0, #0xc
+ mul r0, r4
+ add r3, r5, r0
+ add r3, #0xc
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [sp, #8]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD17_021DAA7C
+
+ thumb_func_start MOD17_021DAAA4
+MOD17_021DAAA4: ; 0x021DAAA4
+ push {r4, lr}
+ add r4, r3, #0
+ bl MOD17_021DABDC
+ ldr r2, [sp, #8]
+ add r1, r4, #0
+ bl MOD17_021DBC38
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAAA4
+
+ thumb_func_start MOD17_021DAAB8
+MOD17_021DAAB8: ; 0x021DAAB8
+ ldr r0, [r0, #0x3c]
+ cmp r0, #0
+ bne _021DAAC2
+ mov r0, #1
+ bx lr
+_021DAAC2:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DAAB8
+
+ thumb_func_start MOD17_021DAAC8
+MOD17_021DAAC8: ; 0x021DAAC8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0x1c]
+ add r5, r0, #0
+ add r0, #0xc
+ bl MOD17_021DAB48
+ mov r0, #0
+ str r0, [r5]
+ ldr r0, [r5, #0xc]
+ mov r1, #1
+ bl MOD17_021DAB04
+ add r0, r5, #0
+ ldr r1, [r4, #0x20]
+ add r0, #0x18
+ bl MOD17_021DAB48
+ add r0, r5, #0
+ ldr r1, [r4, #0x24]
+ add r0, #0x24
+ bl MOD17_021DAB48
+ add r5, #0x30
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD17_021DAB48
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAAC8
+
+ thumb_func_start MOD17_021DAB04
+MOD17_021DAB04: ; 0x021DAB04
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r4, [r5, #8]
+ add r6, r1, #0
+ cmp r4, r5
+ beq _021DAB24
+_021DAB10:
+ ldr r0, [r4, #4]
+ cmp r0, #2
+ bhi _021DAB1E
+ ldr r0, [r4]
+ add r1, r6, #0
+ bl MOD17_021D7660
+_021DAB1E:
+ ldr r4, [r4, #8]
+ cmp r4, r5
+ bne _021DAB10
+_021DAB24:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAB04
+
+ thumb_func_start MOD17_021DAB28
+MOD17_021DAB28: ; 0x021DAB28
+ push {r4, lr}
+ add r4, r3, #0
+ bl MOD17_021DABDC
+ add r1, r4, #0
+ bl MOD17_021DAB04
+ pop {r4, pc}
+ thumb_func_end MOD17_021DAB28
+
+ thumb_func_start MOD17_021DAB38
+MOD17_021DAB38: ; 0x021DAB38
+ push {r4, lr}
+ add r4, r1, #0
+ bl MOD17_021DABB4
+ add r1, r4, #0
+ bl MOD17_021DAB04
+ pop {r4, pc}
+ thumb_func_end MOD17_021DAB38
+
+ thumb_func_start MOD17_021DAB48
+MOD17_021DAB48: ; 0x021DAB48
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r0, #0xe
+ lsl r1, r4, #4
+ bl FUN_02016998
+ str r0, [r5]
+ str r4, [r5, #4]
+ mov r6, #0
+ str r6, [r5, #8]
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ ble _021DAB88
+ add r4, r6, #0
+ add r7, r6, #0
+_021DAB68:
+ ldr r0, [r5]
+ add r1, r7, #0
+ add r0, r0, r4
+ str r0, [r0, #8]
+ ldr r0, [r5]
+ add r0, r0, r4
+ str r0, [r0, #0xc]
+ ldr r0, [r5]
+ add r0, r0, r4
+ bl MOD17_021DAB04
+ ldr r0, [r5, #4]
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, r0
+ blt _021DAB68
+_021DAB88:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAB48
+
+ thumb_func_start MOD17_021DAB8C
+MOD17_021DAB8C: ; 0x021DAB8C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4]
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+ pop {r4, pc}
+ thumb_func_end MOD17_021DAB8C
+
+ thumb_func_start MOD17_021DABB4
+MOD17_021DABB4: ; 0x021DABB4
+ push {r3}
+ sub sp, #0xc
+ ldr r2, [r0]
+ mov r1, #0xc
+ mul r1, r2
+ add r3, r0, r1
+ add r3, #0xc
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [sp, #8]
+ ldr r1, [sp]
+ lsl r0, r0, #4
+ add r0, r1, r0
+ add sp, #0xc
+ pop {r3}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DABB4
+
+ thumb_func_start MOD17_021DABDC
+MOD17_021DABDC: ; 0x021DABDC
+ push {r4}
+ sub sp, #0xc
+ mov r3, #0xc
+ mul r3, r1
+ add r4, r0, r3
+ add r4, #0xc
+ ldmia r4!, {r0, r1}
+ add r3, sp, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r4]
+ str r0, [r3]
+ ldr r1, [sp]
+ lsl r0, r2, #4
+ add r0, r1, r0
+ add sp, #0xc
+ pop {r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DABDC
+
+ thumb_func_start MOD17_021DAC00
+MOD17_021DAC00: ; 0x021DAC00
+ push {r4, lr}
+ mov r4, #0
+ bl MOD17_021DABDC
+ ldr r1, [r0, #8]
+ cmp r1, r0
+ beq _021DAC16
+_021DAC0E:
+ ldr r1, [r1, #8]
+ add r4, r4, #1
+ cmp r1, r0
+ bne _021DAC0E
+_021DAC16:
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAC00
+
+ thumb_func_start MOD17_021DAC1C
+MOD17_021DAC1C: ; 0x021DAC1C
+ push {r3, r4, r5, lr}
+ add r5, r3, #0
+ mov r4, #0
+ bl MOD17_021DABDC
+ ldr r1, [r0, #8]
+ cmp r1, r0
+ beq _021DAC3C
+_021DAC2C:
+ cmp r4, r5
+ bne _021DAC34
+ add r0, r1, #0
+ pop {r3, r4, r5, pc}
+_021DAC34:
+ ldr r1, [r1, #8]
+ add r4, r4, #1
+ cmp r1, r0
+ bne _021DAC2C
+_021DAC3C:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DAC1C
+
+ thumb_func_start MOD17_021DAC40
+MOD17_021DAC40: ; 0x021DAC40
+ push {r4, lr}
+ ldr r4, [r0]
+ cmp r4, r2
+ bne _021DAC54
+ mov r4, #0xc
+ mul r4, r2
+ add r0, r0, r4
+ ldr r0, [r0, #0x14]
+ cmp r3, r0
+ beq _021DAC5E
+_021DAC54:
+ add r0, r1, #0
+ mov r1, #0
+ bl MOD17_021D7660
+ pop {r4, pc}
+_021DAC5E:
+ add r0, r1, #0
+ mov r1, #1
+ bl MOD17_021D7660
+ pop {r4, pc}
+ thumb_func_end MOD17_021DAC40
+
+ thumb_func_start MOD17_021DAC68
+MOD17_021DAC68: ; 0x021DAC68
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ mov r1, #9
+ add r4, r2, #0
+ bl _s32_div_f
+ add r7, r1, #0
+ add r0, r7, #0
+ mov r1, #3
+ bl _s32_div_f
+ add r6, r0, #0
+ add r0, r7, #0
+ mov r1, #3
+ bl _s32_div_f
+ add r0, r6, #1
+ lsl r2, r0, #3
+ lsl r0, r6, #5
+ add r0, r2, r0
+ add r0, #0x10
+ str r0, [r4]
+ add r0, r1, #1
+ lsl r2, r0, #3
+ mov r0, #0x18
+ mul r0, r1
+ add r0, r2, r0
+ add r0, #8
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DAC68
+
+ thumb_func_start MOD17_021DACA4
+MOD17_021DACA4: ; 0x021DACA4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp]
+ ldr r0, _021DAD18 ; =MOD17_021DAD1C
+ mov r1, #0x30
+ mov r2, #0
+ mov r3, #0xd
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ add r4, r0, #0
+ str r5, [r4]
+ str r6, [r4, #4]
+ ldr r0, [sp]
+ str r7, [r4, #8]
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #0x18]
+ add r1, r6, #0
+ str r0, [r4, #0x10]
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ add r0, r5, #0
+ add r2, r7, #0
+ bl MOD17_021DAC00
+ str r0, [r4, #0x20]
+ ldr r1, [sp]
+ ldr r2, [sp, #0x18]
+ add r0, r5, #0
+ bl MOD17_021DAC00
+ str r0, [r4, #0x24]
+ ldr r1, [r4, #0x20]
+ add r2, r1, r0
+ mov r1, #0xc
+ mov r0, #0xd
+ mul r1, r2
+ str r2, [r4, #0x2c]
+ bl FUN_02016998
+ str r0, [r4, #0x28]
+ cmp r0, #0
+ bne _021DAD04
+ bl ErrorHandling
+_021DAD04:
+ ldr r3, [r4, #0x2c]
+ mov r2, #0xc
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ mul r2, r3
+ bl Call_FillMemWithValue
+ mov r0, #1
+ str r0, [r5, #0x3c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAD18: .word MOD17_021DAD1C
+ thumb_func_end MOD17_021DACA4
+
+ thumb_func_start MOD17_021DAD1C
+MOD17_021DAD1C: ; 0x021DAD1C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x1c]
+ cmp r0, #4
+ bls _021DAD2C
+ b _021DAE74
+_021DAD2C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DAD38: ; jump table
+ .short _021DAD42 - _021DAD38 - 2 ; case 0
+ .short _021DAD96 - _021DAD38 - 2 ; case 1
+ .short _021DADE2 - _021DAD38 - 2 ; case 2
+ .short _021DAE28 - _021DAD38 - 2 ; case 3
+ .short _021DAE40 - _021DAD38 - 2 ; case 4
+_021DAD42:
+ mov r0, #0x83
+ mvn r0, r0
+ str r0, [sp]
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x10]
+ mov r3, #0
+ bl MOD17_021DAAA4
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x10]
+ mov r3, #1
+ bl MOD17_021DAB28
+ mov r0, #0
+ str r0, [r4, #0x14]
+ add r1, r4, #0
+ ldr r0, [r4]
+ add r1, #0x14
+ str r1, [sp]
+ ldr r1, [r0, #0x40]
+ add r1, r1, #1
+ lsr r3, r1, #0x1f
+ lsl r2, r1, #0x1f
+ sub r2, r2, r3
+ mov r1, #0x1f
+ ror r2, r1
+ add r1, r3, r2
+ mov r2, #2
+ mov r3, #5
+ bl MOD17_021DA9F8
+ ldr r0, [r4, #0x20]
+ mov r1, #1
+ bl MOD17_021DAF30
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ b _021DAE78
+_021DAD96:
+ ldr r0, [r4, #0x18]
+ mov r6, #0
+ cmp r0, #0
+ ble _021DADCA
+ add r5, r4, #0
+ add r5, #0x20
+_021DADA2:
+ ldr r0, [r4, #0x20]
+ sub r0, r0, #1
+ bmi _021DADC2
+ ldr r0, [r5]
+ sub r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ ldr r3, [r4, #0x20]
+ bl MOD17_021DAC1C
+ ldr r1, [r4, #0x28]
+ ldr r2, [r4, #0x2c]
+ bl MOD17_021DAE84
+_021DADC2:
+ ldr r0, [r4, #0x18]
+ add r6, r6, #1
+ cmp r6, r0
+ blt _021DADA2
+_021DADCA:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ bne _021DAE78
+ ldr r0, [r4, #0x24]
+ mov r1, #2
+ bl MOD17_021DAF30
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ b _021DAE78
+_021DADE2:
+ ldr r0, [r4, #0x18]
+ mov r6, #0
+ cmp r0, #0
+ ble _021DAE16
+ add r5, r4, #0
+ add r5, #0x24
+_021DADEE:
+ ldr r0, [r4, #0x24]
+ sub r0, r0, #1
+ bmi _021DAE0E
+ ldr r0, [r5]
+ sub r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x10]
+ ldr r3, [r4, #0x24]
+ bl MOD17_021DAC1C
+ ldr r1, [r4, #0x28]
+ ldr r2, [r4, #0x2c]
+ bl MOD17_021DAE84
+_021DAE0E:
+ ldr r0, [r4, #0x18]
+ add r6, r6, #1
+ cmp r6, r0
+ blt _021DADEE
+_021DAE16:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ bne _021DAE78
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ mov r0, #0
+ str r0, [r4, #0x18]
+ b _021DAE78
+_021DAE28:
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ cmp r0, #3
+ ble _021DAE78
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021DAE78
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ b _021DAE78
+_021DAE40:
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ mov r3, #0
+ bl MOD17_021DAB28
+ mov r0, #0x83
+ mvn r0, r0
+ str r0, [sp]
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ mov r3, #0
+ bl MOD17_021DAAA4
+ ldr r0, [r4]
+ mov r1, #0
+ str r1, [r0, #0x3c]
+ ldr r0, [r4, #0x28]
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200621C
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_021DAE74:
+ bl ErrorHandling
+_021DAE78:
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ bl MOD17_021DAEC4
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD17_021DAD1C
+
+ thumb_func_start MOD17_021DAE84
+MOD17_021DAE84: ; 0x021DAE84
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ add r1, r2, #0
+ bl MOD17_021DAE9C
+ str r4, [r0]
+ mov r1, #3
+ str r1, [r0, #4]
+ mov r1, #0x2c
+ str r1, [r0, #8]
+ pop {r4, pc}
+ thumb_func_end MOD17_021DAE84
+
+ thumb_func_start MOD17_021DAE9C
+MOD17_021DAE9C: ; 0x021DAE9C
+ push {r3, r4}
+ mov r3, #0
+ cmp r1, #0
+ ble _021DAEBE
+ add r4, r0, #0
+_021DAEA6:
+ ldr r2, [r4]
+ cmp r2, #0
+ bne _021DAEB6
+ mov r1, #0xc
+ mul r1, r3
+ add r0, r0, r1
+ pop {r3, r4}
+ bx lr
+_021DAEB6:
+ add r3, r3, #1
+ add r4, #0xc
+ cmp r3, r1
+ blt _021DAEA6
+_021DAEBE:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD17_021DAE9C
+
+ thumb_func_start MOD17_021DAEC4
+MOD17_021DAEC4: ; 0x021DAEC4
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ mov r4, #0
+ cmp r6, #0
+ ble _021DAEE4
+_021DAED0:
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021DAEDC
+ add r0, r5, #0
+ bl MOD17_021DAEE8
+_021DAEDC:
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, r6
+ blt _021DAED0
+_021DAEE4:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAEC4
+
+ thumb_func_start MOD17_021DAEE8
+MOD17_021DAEE8: ; 0x021DAEE8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4]
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBBB8
+ ldr r1, [sp]
+ ldr r0, [r4, #8]
+ add r2, r1, r0
+ str r2, [sp]
+ ldr r0, [r4]
+ ldr r1, [sp, #4]
+ bl MOD17_021DBB68
+ ldr r0, [r4, #4]
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ cmp r0, #0
+ bgt _021DAF2C
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ strb r0, [r4, #4]
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ strb r0, [r4, #9]
+ strb r0, [r4, #0xa]
+ strb r0, [r4, #0xb]
+_021DAF2C:
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD17_021DAEE8
+
+ thumb_func_start MOD17_021DAF30
+MOD17_021DAF30: ; 0x021DAF30
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ bl _s32_div_f
+ sub r0, r4, r1
+ add r0, r5, r0
+ add r1, r4, #0
+ bl _s32_div_f
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAF30
+
+ thumb_func_start MOD17_021DAF48
+MOD17_021DAF48: ; 0x021DAF48
+ add r3, r0, #0
+ mov r2, #0x1c
+ mov r1, #0
+_021DAF4E:
+ strb r1, [r3]
+ add r3, r3, #1
+ sub r2, r2, #1
+ bne _021DAF4E
+ ldr r1, _021DAF60 ; =MOD17_021DAFA0
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ bx lr
+ .align 2, 0
+_021DAF60: .word MOD17_021DAFA0
+ thumb_func_end MOD17_021DAF48
+
+ thumb_func_start MOD17_021DAF64
+MOD17_021DAF64: ; 0x021DAF64
+ push {r4, lr}
+ ldr r1, _021DAF9C ; =0x021C48F8
+ add r4, r0, #0
+ ldrh r2, [r1, #0x20]
+ cmp r2, #0
+ beq _021DAF76
+ ldr r1, [r4, #4]
+ blx r1
+ b _021DAF8C
+_021DAF76:
+ ldrh r1, [r1, #0x22]
+ cmp r1, #0
+ beq _021DAF82
+ ldr r1, [r4, #0xc]
+ blx r1
+ b _021DAF8C
+_021DAF82:
+ ldrb r1, [r4, #0x18]
+ cmp r1, #0
+ beq _021DAF8C
+ ldr r1, [r4, #8]
+ blx r1
+_021DAF8C:
+ ldr r0, _021DAF9C ; =0x021C48F8
+ ldrh r1, [r0, #0x1c]
+ strh r1, [r4, #0x14]
+ ldrh r1, [r0, #0x1e]
+ strh r1, [r4, #0x16]
+ ldrh r0, [r0, #0x22]
+ strb r0, [r4, #0x18]
+ pop {r4, pc}
+ .align 2, 0
+_021DAF9C: .word 0x021C48F8
+ thumb_func_end MOD17_021DAF64
+
+ thumb_func_start MOD17_021DAFA0
+MOD17_021DAFA0: ; 0x021DAFA0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DAFA0
+
+ thumb_func_start MOD17_021DAFA4
+MOD17_021DAFA4: ; 0x021DAFA4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r7, #0
+_021DAFAE:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_02027114
+ add r4, r4, #1
+ stmia r5!, {r0}
+ cmp r4, #0x64
+ blt _021DAFAE
+ mov r0, #0x19
+ mov r3, #0
+ add r2, r7, #0
+ mov r1, #0x12
+ lsl r0, r0, #4
+_021DAFC8:
+ add r3, r3, #1
+ str r1, [r2, r0]
+ add r2, r2, #4
+ cmp r3, #0x12
+ blt _021DAFC8
+ mov r5, #0x19
+ mov r4, #0
+ lsl r5, r5, #4
+_021DAFD8:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0202714C
+ cmp r0, #0x12
+ beq _021DAFEA
+ lsl r0, r0, #2
+ add r0, r7, r0
+ str r4, [r0, r5]
+_021DAFEA:
+ add r4, r4, #1
+ cmp r4, #0x12
+ blt _021DAFD8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DAFA4
+
+ thumb_func_start MOD17_021DAFF4
+MOD17_021DAFF4: ; 0x021DAFF4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #0x64
+ blo _021DB002
+ bl ErrorHandling
+_021DB002:
+ lsl r0, r5, #2
+ ldr r0, [r4, r0]
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DAFF4
+
+ thumb_func_start MOD17_021DB008
+MOD17_021DB008: ; 0x021DB008
+ lsl r1, r1, #2
+ add r1, r0, r1
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bx lr
+ thumb_func_end MOD17_021DB008
+
+ thumb_func_start MOD17_021DB014
+MOD17_021DB014: ; 0x021DB014
+ push {r3, r4}
+ mov r2, #0x19
+ mov r4, #0
+ lsl r2, r2, #4
+_021DB01C:
+ ldr r3, [r0, r2]
+ cmp r1, r3
+ bne _021DB028
+ add r0, r4, #0
+ pop {r3, r4}
+ bx lr
+_021DB028:
+ add r4, r4, #1
+ add r0, r0, #4
+ cmp r4, #0x12
+ blt _021DB01C
+ add r0, r4, #0
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DB014
+
+ thumb_func_start MOD17_021DB038
+MOD17_021DB038: ; 0x021DB038
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD17_021DAF48
+ mov r0, #0xd
+ mov r1, #0x34
+ bl FUN_02016998
+ str r0, [r5]
+ mov r1, #0
+ mov r2, #0x34
+ bl Call_FillMemWithValue
+ ldr r1, [r5]
+ ldr r0, [sp, #0x18]
+ str r4, [r1, #4]
+ str r6, [r1, #8]
+ str r7, [r1]
+ str r0, [r1, #0xc]
+ ldr r0, [sp, #0x1c]
+ str r0, [r1, #0x2c]
+ ldr r0, _021DB07C ; =MOD17_021DB0A0
+ str r0, [r5, #4]
+ ldr r0, _021DB080 ; =MOD17_021DB210
+ str r0, [r5, #8]
+ ldr r0, _021DB084 ; =MOD17_021DB3A4
+ str r0, [r5, #0xc]
+ ldr r0, _021DB088 ; =MOD17_021DB08C
+ str r0, [r5, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DB07C: .word MOD17_021DB0A0
+_021DB080: .word MOD17_021DB210
+_021DB084: .word MOD17_021DB3A4
+_021DB088: .word MOD17_021DB08C
+ thumb_func_end MOD17_021DB038
+
+ thumb_func_start MOD17_021DB08C
+MOD17_021DB08C: ; 0x021DB08C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl MOD17_021DAF48
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB08C
+
+ thumb_func_start MOD17_021DB0A0
+MOD17_021DB0A0: ; 0x021DB0A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r4, [r5]
+ ldr r0, [r4, #4]
+ bl MOD17_021DA250
+ cmp r0, #0
+ beq _021DB122
+ ldr r3, [r4]
+ ldr r0, [r4, #4]
+ ldr r3, [r3, #0x30]
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DA288
+ add r6, r0, #0
+ beq _021DB0D2
+ ldr r0, [r6, #4]
+ cmp r0, #3
+ bne _021DB0D2
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ bne _021DB0D2
+ mov r6, #0
+_021DB0D2:
+ cmp r6, #0
+ beq _021DB15E
+ ldr r0, [r6, #4]
+ cmp r0, #0
+ bne _021DB0E8
+ ldr r0, [r4, #4]
+ add r1, r6, #0
+ bl MOD17_021DA0E8
+ mov r7, #0
+ b _021DB104
+_021DB0E8:
+ add r0, r6, #0
+ bl MOD17_021DA050
+ ldr r0, [r6]
+ bl MOD17_021DB7E8
+ add r1, r4, #0
+ add r2, r4, #0
+ add r7, r0, #0
+ add r0, r6, #0
+ add r1, #0x24
+ add r2, #0x28
+ bl MOD17_021DBBB8
+_021DB104:
+ ldr r0, [r4, #4]
+ bl MOD17_021DA178
+ ldr r0, [sp, #8]
+ add r1, r6, #0
+ str r0, [sp]
+ str r7, [sp, #4]
+ ldr r3, [sp, #0xc]
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD17_021DB4D8
+ bl MOD17_021D7A7C
+ b _021DB15E
+_021DB122:
+ ldr r0, [r4, #8]
+ bl MOD17_021DA940
+ cmp r0, #0
+ beq _021DB15E
+ ldr r3, [r4]
+ ldr r0, [r4, #8]
+ ldr r3, [r3, #0x30]
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DA978
+ add r6, r0, #0
+ beq _021DB15E
+ bl MOD17_021DA810
+ ldr r0, [r4, #8]
+ bl MOD17_021DA844
+ ldr r0, [sp, #8]
+ mov r2, #0
+ str r0, [sp]
+ str r2, [sp, #4]
+ ldr r3, [sp, #0xc]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD17_021DB4D8
+ bl MOD17_021D7A7C
+_021DB15E:
+ ldr r1, [r4, #0x10]
+ cmp r1, #0
+ beq _021DB1A8
+ ldr r1, [r1, #4]
+ ldr r0, _021DB1AC ; =0x000005EB
+ cmp r1, #0
+ beq _021DB176
+ cmp r1, #1
+ beq _021DB180
+ cmp r1, #3
+ beq _021DB192
+ b _021DB19A
+_021DB176:
+ ldr r1, _021DB1B0 ; =MOD17_021DB210
+ str r1, [r5, #8]
+ ldr r1, _021DB1B4 ; =MOD17_021DB3A4
+ str r1, [r5, #0xc]
+ b _021DB19A
+_021DB180:
+ ldr r0, _021DB1B8 ; =MOD17_021DB1D0
+ str r0, [r5, #8]
+ ldr r0, _021DB1BC ; =MOD17_021DB1CC
+ str r0, [r5, #0xc]
+ add r0, r5, #0
+ bl MOD17_021DB4AC
+ ldr r0, _021DB1C0 ; =0x0000067E
+ b _021DB19A
+_021DB192:
+ ldr r1, _021DB1C4 ; =MOD17_021DB3D4
+ str r1, [r5, #8]
+ ldr r1, _021DB1C8 ; =MOD17_021DB404
+ str r1, [r5, #0xc]
+_021DB19A:
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD17_021DB680
+_021DB1A8:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB1AC: .word 0x000005EB
+_021DB1B0: .word MOD17_021DB210
+_021DB1B4: .word MOD17_021DB3A4
+_021DB1B8: .word MOD17_021DB1D0
+_021DB1BC: .word MOD17_021DB1CC
+_021DB1C0: .word 0x0000067E
+_021DB1C4: .word MOD17_021DB3D4
+_021DB1C8: .word MOD17_021DB404
+ thumb_func_end MOD17_021DB0A0
+
+ thumb_func_start MOD17_021DB1CC
+MOD17_021DB1CC: ; 0x021DB1CC
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DB1CC
+
+ thumb_func_start MOD17_021DB1D0
+MOD17_021DB1D0: ; 0x021DB1D0
+ push {r4, lr}
+ sub sp, #8
+ ldr r4, [r0]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021DB20A
+ ldr r0, [r0, #4]
+ cmp r0, #1
+ beq _021DB1E6
+ bl ErrorHandling
+_021DB1E6:
+ ldr r0, [r4, #0x10]
+ mov r2, #0x1c
+ ldr r0, [r0, #4]
+ mov r3, #0x1e
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x21
+ ldrb r0, [r0]
+ mov r1, #4
+ str r0, [sp, #4]
+ ldrsh r2, [r4, r2]
+ ldrsh r3, [r4, r3]
+ add r0, r4, #0
+ bl MOD17_021DB59C
+ add r0, r4, #0
+ bl MOD17_021DB534
+_021DB20A:
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB1D0
+
+ thumb_func_start MOD17_021DB210
+MOD17_021DB210: ; 0x021DB210
+ push {r4, r5, r6, lr}
+ sub sp, #0x28
+ add r6, r0, #0
+ ldr r4, [r6]
+ ldr r1, [r4, #0x10]
+ cmp r1, #0
+ bne _021DB220
+ b _021DB38E
+_021DB220:
+ add r1, sp, #0x18
+ str r1, [sp]
+ add r1, sp, #0x24
+ add r2, sp, #0x20
+ add r3, sp, #0x1c
+ bl MOD17_021DB588
+ ldr r0, [r4, #4]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x24]
+ bl MOD17_021DA26C
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x24]
+ bl MOD17_021DA26C
+ add r5, r5, r0
+ ldr r0, [r4, #4]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x20]
+ bl MOD17_021DA26C
+ add r5, r5, r0
+ ldr r0, [r4, #4]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x20]
+ bl MOD17_021DA26C
+ add r0, r5, r0
+ cmp r0, #4
+ blt _021DB2C2
+ ldr r2, [r4]
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0x10]
+ ldr r2, [r2, #0x30]
+ bl MOD17_021DA0C4
+ cmp r0, #0
+ bne _021DB2AC
+ mov r0, #0x1c
+ ldrsh r0, [r4, r0]
+ str r0, [sp, #0xc]
+ mov r0, #0x1e
+ ldrsh r0, [r4, r0]
+ str r0, [sp, #8]
+ ldr r0, _021DB394 ; =0x00000683
+ bl FUN_020054C8
+ ldr r0, [r4, #0xc]
+ ldr r2, _021DB398 ; =0x00000151
+ mov r1, #0x1a
+ mov r3, #3
+ bl MOD17_021DCB48
+ ldr r0, [r4, #0x10]
+ mov r1, #4
+ ldr r0, [r0, #4]
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x21
+ ldrb r0, [r0]
+ str r0, [sp, #4]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #8]
+ add r0, r4, #0
+ bl MOD17_021DB59C
+ b _021DB388
+_021DB2AC:
+ ldr r0, [r4, #4]
+ bl MOD17_021DA178
+ bl MOD17_021D7A4C
+ mov r0, #0
+ str r0, [r4, #0x30]
+ ldr r0, _021DB39C ; =0x000005EA
+ bl FUN_020054C8
+ b _021DB388
+_021DB2C2:
+ ldr r0, [r4, #0x10]
+ add r1, sp, #0x24
+ ldr r5, [r0]
+ add r0, sp, #0x18
+ str r0, [sp]
+ add r0, r6, #0
+ add r2, sp, #0x20
+ add r3, sp, #0x1c
+ bl MOD17_021DB548
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x24]
+ bl MOD17_021DA95C
+ add r6, r0, #0
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x20]
+ bl MOD17_021DA95C
+ add r0, r6, r0
+ cmp r0, #2
+ bge _021DB340
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021DB32C
+ ldr r0, [r4, #0x10]
+ add r1, sp, #0x14
+ add r2, sp, #0x10
+ bl MOD17_021DBC08
+ bl FUN_0201BA60
+ ldr r2, [sp, #0x14]
+ mov r1, #0x6c
+ sub r1, r1, r2
+ bl _u32_div_f
+ add r1, #0xa
+ str r1, [sp, #0xc]
+ bl FUN_0201BA60
+ ldr r2, [sp, #0x10]
+ mov r1, #0x7d
+ sub r1, r1, r2
+ bl _u32_div_f
+ add r1, #0x12
+ str r1, [sp, #8]
+ b _021DB338
+_021DB32C:
+ mov r0, #0x1c
+ ldrsh r0, [r4, r0]
+ str r0, [sp, #0xc]
+ mov r0, #0x1e
+ ldrsh r0, [r4, r0]
+ str r0, [sp, #8]
+_021DB338:
+ ldr r0, _021DB394 ; =0x00000683
+ bl FUN_020054C8
+ b _021DB350
+_021DB340:
+ ldr r0, [r4, #0x10]
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DBBB8
+ ldr r0, _021DB3A0 ; =0x000005EB
+ bl FUN_020054C8
+_021DB350:
+ add r0, r4, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021DB36E
+ ldr r0, [r4, #0x10]
+ ldr r2, [r4, #8]
+ ldr r0, [r0, #4]
+ ldr r1, [r5]
+ ldr r2, [r2, #4]
+ bl MOD17_021DA608
+ add r1, r4, #0
+ add r1, #0x21
+ strb r0, [r1]
+_021DB36E:
+ ldr r0, [r4, #0x10]
+ mov r1, #4
+ ldr r0, [r0, #4]
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x21
+ ldrb r0, [r0]
+ str r0, [sp, #4]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #8]
+ add r0, r4, #0
+ bl MOD17_021DB59C
+_021DB388:
+ add r0, r4, #0
+ bl MOD17_021DB534
+_021DB38E:
+ add sp, #0x28
+ pop {r4, r5, r6, pc}
+ nop
+_021DB394: .word 0x00000683
+_021DB398: .word 0x00000151
+_021DB39C: .word 0x000005EA
+_021DB3A0: .word 0x000005EB
+ thumb_func_end MOD17_021DB210
+
+ thumb_func_start MOD17_021DB3A4
+MOD17_021DB3A4: ; 0x021DB3A4
+ push {r4, lr}
+ ldr r2, [r0]
+ ldr r0, [r2, #0x10]
+ cmp r0, #0
+ beq _021DB3C8
+ ldr r3, _021DB3CC ; =0x021C48F8
+ ldr r1, _021DB3D0 ; =0x0000FFFF
+ ldrh r4, [r3, #0x1c]
+ cmp r4, r1
+ beq _021DB3C8
+ beq _021DB3C8
+ ldrh r3, [r3, #0x1e]
+ ldr r1, [r2, #0x14]
+ ldr r2, [r2, #0x18]
+ sub r1, r4, r1
+ sub r2, r3, r2
+ bl MOD17_021DBB68
+_021DB3C8:
+ pop {r4, pc}
+ nop
+_021DB3CC: .word 0x021C48F8
+_021DB3D0: .word 0x0000FFFF
+ thumb_func_end MOD17_021DB3A4
+
+ thumb_func_start MOD17_021DB3D4
+MOD17_021DB3D4: ; 0x021DB3D4
+ push {r4, lr}
+ ldr r4, [r0]
+ ldr r1, [r4, #0x10]
+ cmp r1, #0
+ beq _021DB3FE
+ ldr r0, [r4, #4]
+ bl MOD17_021DA040
+ ldr r0, [r4, #4]
+ bl MOD17_021DA178
+ bl MOD17_021D7A4C
+ mov r0, #0
+ str r0, [r4, #0x30]
+ ldr r0, _021DB400 ; =0x000005EB
+ bl FUN_020054C8
+ add r0, r4, #0
+ bl MOD17_021DB534
+_021DB3FE:
+ pop {r4, pc}
+ .align 2, 0
+_021DB400: .word 0x000005EB
+ thumb_func_end MOD17_021DB3D4
+
+ thumb_func_start MOD17_021DB404
+MOD17_021DB404: ; 0x021DB404
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r4, [r0]
+ str r0, [sp]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021DB49E
+ ldr r1, _021DB4A4 ; =0x021C48F8
+ ldrh r2, [r1, #0x1c]
+ ldr r1, _021DB4A8 ; =0x0000FFFF
+ cmp r2, r1
+ beq _021DB49E
+ beq _021DB49E
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD17_021DBC20
+ ldr r0, [r4, #0x10]
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD17_021DBC08
+ ldr r0, _021DB4A4 ; =0x021C48F8
+ ldr r1, [r4, #0x14]
+ ldrh r2, [r0, #0x1c]
+ ldr r3, [sp, #0xc]
+ sub r5, r2, r1
+ ldrh r1, [r0, #0x1e]
+ ldr r0, [r4, #0x18]
+ ldr r2, [sp, #4]
+ sub r6, r1, r0
+ sub r3, r3, r2
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #0x10]
+ str r3, [sp, #0xc]
+ sub r0, r0, r1
+ add r3, r5, r1
+ add r7, r6, r2
+ str r0, [sp, #0x10]
+ cmp r3, #0x8a
+ bgt _021DB45C
+ mov r0, #0x8a
+ sub r5, r0, r1
+ b _021DB466
+_021DB45C:
+ add r1, r5, r0
+ cmp r1, #0xf6
+ blt _021DB466
+ mov r1, #0xf6
+ sub r5, r1, r0
+_021DB466:
+ cmp r7, #0x12
+ bgt _021DB470
+ mov r0, #0x12
+ sub r6, r0, r2
+ b _021DB47C
+_021DB470:
+ ldr r1, [sp, #0xc]
+ add r0, r6, r1
+ cmp r0, #0x8f
+ blt _021DB47C
+ mov r0, #0x8f
+ sub r6, r0, r1
+_021DB47C:
+ ldr r0, [sp]
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD17_021DB6B4
+ ldr r0, [r4, #4]
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD17_021DA36C
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #4]
+ ldr r0, [sp]
+ add r1, r5, r1
+ add r2, r6, r2
+ bl MOD17_021DB6B4
+_021DB49E:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DB4A4: .word 0x021C48F8
+_021DB4A8: .word 0x0000FFFF
+ thumb_func_end MOD17_021DB404
+
+ thumb_func_start MOD17_021DB4AC
+MOD17_021DB4AC: ; 0x021DB4AC
+ push {r3, r4, r5, lr}
+ ldr r4, [r0]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021DB4D4
+ ldr r0, [r0, #4]
+ cmp r0, #1
+ beq _021DB4C0
+ bl ErrorHandling
+_021DB4C0:
+ ldr r0, [r4, #0x10]
+ ldr r5, [r0]
+ ldr r0, [r4, #4]
+ bl MOD17_021DA33C
+ ldr r0, [r4, #4]
+ ldr r1, [r5]
+ mov r2, #0xe
+ bl MOD17_021DA2F0
+_021DB4D4:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB4AC
+
+ thumb_func_start MOD17_021DB4D8
+MOD17_021DB4D8: ; 0x021DB4D8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ add r0, r4, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ add r7, r3, #0
+ bl MOD17_021DBBB8
+ str r4, [r5, #0x10]
+ ldr r0, [sp, #4]
+ strh r0, [r5, #0x1c]
+ ldr r0, [sp]
+ strh r0, [r5, #0x1e]
+ add r0, r5, #0
+ add r0, #0x20
+ strb r6, [r0]
+ ldr r0, [sp, #0x20]
+ str r7, [r5, #0x14]
+ str r0, [r5, #0x18]
+ cmp r6, #0
+ bne _021DB51A
+ ldr r1, [r5, #0x10]
+ ldr r0, [r5, #8]
+ ldr r1, [r1, #4]
+ bl MOD17_021DAA7C
+ add r1, r5, #0
+ add r1, #0x21
+ strb r0, [r1]
+ b _021DB522
+_021DB51A:
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x21
+ strb r1, [r0]
+_021DB522:
+ mov r0, #1
+ str r0, [r5, #0x30]
+ ldr r1, [sp, #0x24]
+ add r0, r4, #0
+ bl MOD17_021DBAD0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB4D8
+
+ thumb_func_start MOD17_021DB534
+MOD17_021DB534: ; 0x021DB534
+ mov r2, #0
+ str r2, [r0, #0x10]
+ strh r2, [r0, #0x1c]
+ add r1, r0, #0
+ strh r2, [r0, #0x1e]
+ add r1, #0x20
+ strb r2, [r1]
+ add r0, #0x21
+ strb r2, [r0]
+ bx lr
+ thumb_func_end MOD17_021DB534
+
+ thumb_func_start MOD17_021DB548
+MOD17_021DB548: ; 0x021DB548
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r4, [r0]
+ add r5, r1, #0
+ ldr r0, [r4, #0x10]
+ add r6, r2, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ add r7, r3, #0
+ bl MOD17_021DBC08
+ ldr r0, [r4, #0x10]
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBBB8
+ ldr r0, [sp]
+ str r0, [r5]
+ ldr r1, [sp]
+ ldr r0, [sp, #8]
+ add r0, r1, r0
+ str r0, [r6]
+ ldr r0, [sp, #4]
+ str r0, [r7]
+ ldr r1, [sp, #4]
+ ldr r0, [sp, #0xc]
+ add r1, r1, r0
+ ldr r0, [sp, #0x28]
+ str r1, [r0]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB548
+
+ thumb_func_start MOD17_021DB588
+MOD17_021DB588: ; 0x021DB588
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r4, [sp, #0x10]
+ str r4, [sp]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x10]
+ bl MOD17_021DBC70
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD17_021DB588
+
+ thumb_func_start MOD17_021DB59C
+MOD17_021DB59C: ; 0x021DB59C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp]
+ ldr r0, _021DB60C ; =MOD17_021DB610
+ mov r1, #0x2c
+ mov r2, #0
+ mov r3, #0xd
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ add r4, r0, #0
+ ldr r0, [r5, #8]
+ add r1, sp, #8
+ str r0, [r4]
+ ldr r0, [r5, #0x10]
+ add r2, sp, #4
+ str r0, [r4, #4]
+ str r6, [r4, #0x20]
+ ldr r0, [sp]
+ str r7, [r4, #0x10]
+ str r0, [r4, #0x14]
+ ldr r0, [sp, #0x20]
+ str r0, [r4, #0x18]
+ ldr r0, [sp, #0x24]
+ str r0, [r4, #0x1c]
+ ldr r0, [r5, #8]
+ add r0, #0x3c
+ str r0, [r4, #0x24]
+ add r0, r5, #0
+ add r0, #0x30
+ str r0, [r4, #0x28]
+ ldr r0, [r5, #0x10]
+ bl MOD17_021DBBB8
+ ldr r1, [r4, #0x10]
+ ldr r0, [sp, #8]
+ sub r0, r1, r0
+ add r1, r6, #0
+ bl _s32_div_f
+ str r0, [r4, #8]
+ ldr r1, [r4, #0x14]
+ ldr r0, [sp, #4]
+ sub r0, r1, r0
+ add r1, r6, #0
+ bl _s32_div_f
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r5, #0x30]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB60C: .word MOD17_021DB610
+ thumb_func_end MOD17_021DB59C
+
+ thumb_func_start MOD17_021DB610
+MOD17_021DB610: ; 0x021DB610
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x24]
+ ldr r0, [r0]
+ cmp r0, #1
+ beq _021DB67C
+ ldr r0, [r4, #4]
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBBB8
+ ldr r1, [sp, #4]
+ ldr r0, [r4, #8]
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r1, [sp]
+ ldr r0, [r4, #0xc]
+ add r0, r1, r0
+ str r0, [sp]
+ ldr r0, [r4, #0x20]
+ sub r0, r0, #1
+ str r0, [r4, #0x20]
+ ldr r0, [r4, #4]
+ bpl _021DB674
+ ldr r1, [r4, #0x10]
+ ldr r2, [r4, #0x14]
+ bl MOD17_021DBB68
+ ldr r0, [r4]
+ ldr r1, [r4, #0x18]
+ ldr r2, [r4, #0x1c]
+ ldr r3, [r4, #4]
+ bl MOD17_021DA7E4
+ ldr r0, [r4]
+ bl MOD17_021DA844
+ ldr r0, [r4, #0x28]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021DB66A
+ bl MOD17_021D7A4C
+_021DB66A:
+ add r0, r5, #0
+ bl FUN_0200621C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_021DB674:
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ bl MOD17_021DBB68
+_021DB67C:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DB610
+
+ thumb_func_start MOD17_021DB680
+MOD17_021DB680: ; 0x021DB680
+ push {r3, lr}
+ ldr r3, [r0, #0x10]
+ ldr r1, [r3, #4]
+ cmp r1, #0
+ bne _021DB69A
+ ldr r3, [r3]
+ ldr r0, [r0, #0xc]
+ ldr r2, _021DB6B0 ; =0x00000152
+ ldr r3, [r3]
+ mov r1, #0x1a
+ bl MOD17_021DCB48
+ pop {r3, pc}
+_021DB69A:
+ cmp r1, #1
+ bne _021DB6AE
+ ldr r3, [r3]
+ mov r2, #0x55
+ ldr r0, [r0, #0xc]
+ ldr r3, [r3]
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ bl MOD17_021DCB48
+_021DB6AE:
+ pop {r3, pc}
+ .align 2, 0
+_021DB6B0: .word 0x00000152
+ thumb_func_end MOD17_021DB680
+
+ thumb_func_start MOD17_021DB6B4
+MOD17_021DB6B4: ; 0x021DB6B4
+ push {r4, r5, r6, lr}
+ ldr r4, [r0]
+ add r5, r1, #0
+ ldr r0, [r4, #0x10]
+ add r6, r2, #0
+ bl MOD17_021DBB68
+ ldr r1, [r4, #0x24]
+ ldr r2, [r4, #0x28]
+ ldr r0, [r4, #4]
+ sub r1, r5, r1
+ sub r2, r6, r2
+ bl MOD17_021DA134
+ str r5, [r4, #0x24]
+ str r6, [r4, #0x28]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB6B4
+
+ thumb_func_start MOD17_021DB6D8
+MOD17_021DB6D8: ; 0x021DB6D8
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r2, #0
+ str r2, [sp]
+ add r4, r0, #0
+ ldrh r0, [r1]
+ ldrh r1, [r1, #2]
+ mov r3, #0xe
+ bl FUN_02006C98
+ add r1, r0, #0
+ add r0, r4, #0
+ mov r2, #0x76
+ bl MOD17_021D7A2C
+ ldr r0, [r0, #0x14]
+ bl FUN_02008A74
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD17_021DB6D8
+
+ thumb_func_start MOD17_021DB700
+MOD17_021DB700: ; 0x021DB700
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r2, #0
+ add r5, r0, #0
+ add r7, r1, #0
+ add r6, r3, #0
+ add r0, r4, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ add r0, r6, #0
+ add r1, r4, #0
+ mov r2, #2
+ bl FUN_02068B68
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ add r1, r6, #0
+ mov r2, #0xc0
+ mov r3, #0x38
+ bl FUN_020073A0
+ str r0, [r5]
+ add r0, r5, #0
+ add r1, sp, #0x18
+ add r2, sp, #0x14
+ bl MOD17_021DB878
+ ldr r1, [sp, #0x18]
+ mov r2, #0x38
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ ldr r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ str r0, [sp, #0x14]
+ sub r0, r2, r0
+ strb r0, [r5, #4]
+ ldr r0, [sp, #0x14]
+ mov r1, #0xc0
+ add r0, #0x38
+ strb r0, [r5, #5]
+ ldr r0, [sp, #0x18]
+ sub r0, r1, r0
+ strb r0, [r5, #6]
+ ldr r0, [sp, #0x18]
+ add r0, #0xc0
+ strb r0, [r5, #7]
+ ldr r0, [sp, #0x14]
+ str r0, [sp]
+ ldr r3, [sp, #0x18]
+ add r0, r5, #4
+ bl MOD17_021DB9B8
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02068E14
+ mov r2, #0
+ str r2, [sp]
+ add r7, r0, #0
+ ldrh r0, [r6]
+ ldrh r1, [r6, #2]
+ ldr r3, [sp, #0x30]
+ bl FUN_02006C98
+ add r1, sp, #0x10
+ add r6, r0, #0
+ bl FUN_020B0088
+ ldr r0, [sp, #0x10]
+ ldr r0, [r0, #0x14]
+ bl FUN_02008A74
+ ldr r1, [sp, #0x10]
+ ldr r0, [r1, #0x14]
+ ldrh r1, [r1, #2]
+ lsl r1, r1, #3
+ bl MOD17_021DB96C
+ strb r0, [r5, #8]
+ add r0, r6, #0
+ strb r7, [r5, #9]
+ bl FUN_02016A18
+ str r4, [r5, #0xc]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DB700
+
+ thumb_func_start MOD17_021DB7C0
+MOD17_021DB7C0: ; 0x021DB7C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02007534
+ mov r1, #0x10
+ mov r0, #0
+_021DB7CE:
+ strb r0, [r4]
+ add r4, r4, #1
+ sub r1, r1, #1
+ bne _021DB7CE
+ pop {r4, pc}
+ thumb_func_end MOD17_021DB7C0
+
+ thumb_func_start MOD17_021DB7D8
+MOD17_021DB7D8: ; 0x021DB7D8
+ ldr r3, _021DB7E4 ; =0x02007559
+ add r2, r1, #0
+ ldr r0, [r0]
+ mov r1, #2
+ bx r3
+ nop
+_021DB7E4: .word 0x02007559
+ thumb_func_end MOD17_021DB7D8
+
+ thumb_func_start MOD17_021DB7E8
+MOD17_021DB7E8: ; 0x021DB7E8
+ ldr r3, _021DB7F0 ; =0x0200782D
+ ldr r0, [r0]
+ mov r1, #2
+ bx r3
+ .align 2, 0
+_021DB7F0: .word 0x0200782D
+ thumb_func_end MOD17_021DB7E8
+
+ thumb_func_start MOD17_021DB7F4
+MOD17_021DB7F4: ; 0x021DB7F4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD17_021DB878
+ ldr r0, [r5]
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_02007558
+ ldr r0, [r5]
+ mov r1, #1
+ add r2, r6, #0
+ bl FUN_02007558
+ ldr r1, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r2, r0, #1
+ ldr r1, [sp, #8]
+ str r2, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ str r0, [sp, #8]
+ str r2, [sp]
+ ldr r3, [sp, #8]
+ add r0, r5, #4
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD17_021DB9B8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD17_021DB7F4
+
+ thumb_func_start MOD17_021DB840
+MOD17_021DB840: ; 0x021DB840
+ ldr r3, _021DB848 ; =0x02020A41
+ add r0, r0, #4
+ bx r3
+ nop
+_021DB848: .word 0x02020A41
+ thumb_func_end MOD17_021DB840
+
+ thumb_func_start MOD17_021DB84C
+MOD17_021DB84C: ; 0x021DB84C
+ ldr r3, _021DB854 ; =0x02020AE9
+ add r0, r0, #4
+ bx r3
+ nop
+_021DB854: .word 0x02020AE9
+ thumb_func_end MOD17_021DB84C
+
+ thumb_func_start MOD17_021DB858
+MOD17_021DB858: ; 0x021DB858
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ mov r1, #0
+ add r6, r2, #0
+ bl FUN_0200782C
+ str r0, [r4]
+ ldr r0, [r5]
+ mov r1, #1
+ bl FUN_0200782C
+ str r0, [r6]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB858
+
+ thumb_func_start MOD17_021DB878
+MOD17_021DB878: ; 0x021DB878
+ mov r0, #0x50
+ str r0, [r1]
+ str r0, [r2]
+ bx lr
+ thumb_func_end MOD17_021DB878
+
+ thumb_func_start MOD17_021DB880
+MOD17_021DB880: ; 0x021DB880
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD17_021DB840
+ cmp r0, #0
+ bne _021DB89A
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB89A:
+ add r0, r5, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DB858
+ add r0, r5, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DB878
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ sub r1, r2, r0
+ ldr r3, [sp, #8]
+ ldr r0, [sp]
+ lsr r2, r3, #0x1f
+ add r2, r3, r2
+ asr r2, r2, #1
+ sub r0, r0, r2
+ str r0, [sp]
+ ldr r0, _021DB8F4 ; =0x021C48F8
+ str r1, [sp, #4]
+ ldrh r2, [r0, #0x1c]
+ mov r3, #0
+ sub r1, r2, r1
+ str r1, [r4]
+ ldrh r1, [r0, #0x1e]
+ ldr r0, [sp]
+ sub r2, r1, r0
+ str r2, [r6]
+ ldr r1, [r4]
+ add r0, r7, #0
+ bl MOD17_021D7B0C
+ cmp r0, #0
+ bne _021DB8EE
+ add sp, #0x10
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB8EE:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB8F4: .word 0x021C48F8
+ thumb_func_end MOD17_021DB880
+
+ thumb_func_start MOD17_021DB8F8
+MOD17_021DB8F8: ; 0x021DB8F8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD17_021DB84C
+ cmp r0, #0
+ bne _021DB912
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB912:
+ add r0, r5, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DB858
+ add r0, r5, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DB878
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ sub r1, r2, r0
+ ldr r3, [sp, #8]
+ str r1, [sp, #4]
+ lsr r2, r3, #0x1f
+ add r2, r3, r2
+ ldr r0, [sp]
+ asr r2, r2, #1
+ sub r0, r0, r2
+ str r0, [sp]
+ sub r2, r6, r0
+ sub r1, r4, r1
+ add r0, r7, #0
+ mov r3, #0
+ bl MOD17_021D7B0C
+ cmp r0, #0
+ bne _021DB958
+ add sp, #0x10
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB958:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DB8F8
+
+ thumb_func_start MOD17_021DB960
+MOD17_021DB960: ; 0x021DB960
+ ldrb r3, [r0, #8]
+ str r3, [r1]
+ ldrb r0, [r0, #9]
+ str r0, [r2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DB960
+
+ thumb_func_start MOD17_021DB96C
+MOD17_021DB96C: ; 0x021DB96C
+ push {r4, r5, r6, r7}
+ mov ip, r0
+ add r7, r1, #0
+ mov r2, #0
+_021DB974:
+ mov r3, #0
+ add r4, r3, #0
+_021DB978:
+ add r1, r2, r4
+ lsr r0, r1, #0x1f
+ lsl r6, r1, #0x1f
+ sub r6, r6, r0
+ mov r5, #0x1f
+ ror r6, r5
+ add r5, r0, r6
+ lsl r6, r5, #2
+ mov r5, #0xf
+ add r0, r1, r0
+ lsl r5, r6
+ asr r1, r0, #1
+ mov r0, ip
+ lsl r5, r5, #0x18
+ ldrsb r0, [r0, r1]
+ lsr r5, r5, #0x18
+ tst r0, r5
+ beq _021DB9A2
+ add r0, r2, #0
+ pop {r4, r5, r6, r7}
+ bx lr
+_021DB9A2:
+ add r3, r3, #1
+ add r4, r4, r7
+ cmp r3, #0x50
+ blt _021DB978
+ add r2, r2, #1
+ cmp r2, #0x50
+ blt _021DB974
+ mov r0, #0x50
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DB96C
+
+ thumb_func_start MOD17_021DB9B8
+MOD17_021DB9B8: ; 0x021DB9B8
+ push {r3, r4}
+ ldr r4, [sp, #8]
+ sub r4, r2, r4
+ bmi _021DB9C2
+ b _021DB9C4
+_021DB9C2:
+ mov r4, #0
+_021DB9C4:
+ strb r4, [r0]
+ ldr r4, [sp, #8]
+ add r2, r2, r4
+ cmp r2, #0xbf
+ bgt _021DB9D0
+ b _021DB9D2
+_021DB9D0:
+ mov r2, #0xbf
+_021DB9D2:
+ strb r2, [r0, #1]
+ sub r2, r1, r3
+ bmi _021DB9DA
+ b _021DB9DC
+_021DB9DA:
+ mov r2, #0
+_021DB9DC:
+ add r1, r1, r3
+ strb r2, [r0, #2]
+ cmp r1, #0xff
+ bgt _021DB9EA
+ strb r1, [r0, #3]
+ pop {r3, r4}
+ bx lr
+_021DB9EA:
+ mov r1, #0xff
+ strb r1, [r0, #3]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DB9B8
+
+ thumb_func_start MOD17_021DB9F4
+MOD17_021DB9F4: ; 0x021DB9F4
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ lsl r4, r6, #4
+ add r5, r0, #0
+ add r0, r2, #0
+ add r1, r4, #0
+ bl FUN_02016998
+ str r0, [r5]
+ cmp r0, #0
+ bne _021DBA0E
+ bl ErrorHandling
+_021DBA0E:
+ ldr r0, [r5]
+ mov r1, #0
+ add r2, r4, #0
+ bl Call_FillMemWithValue
+ str r6, [r5, #4]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DB9F4
+
+ thumb_func_start MOD17_021DBA1C
+MOD17_021DBA1C: ; 0x021DBA1C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r4]
+ str r0, [r4, #4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBA1C
+
+ thumb_func_start MOD17_021DBA30
+MOD17_021DBA30: ; 0x021DBA30
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r6, r1, #0
+ add r7, r2, #0
+ cmp r0, #0
+ bne _021DBA42
+ bl ErrorHandling
+_021DBA42:
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ bne _021DBA4C
+ bl ErrorHandling
+_021DBA4C:
+ ldr r2, [r5, #4]
+ mov r4, #0
+ cmp r2, #0
+ ble _021DBA64
+ ldr r1, [r5]
+_021DBA56:
+ ldr r0, [r1]
+ cmp r0, #0
+ beq _021DBA64
+ add r4, r4, #1
+ add r1, #0x10
+ cmp r4, r2
+ blt _021DBA56
+_021DBA64:
+ cmp r2, r4
+ bgt _021DBA6C
+ bl ErrorHandling
+_021DBA6C:
+ ldr r0, [r5]
+ lsl r1, r4, #4
+ str r6, [r0, r1]
+ ldr r0, [r5]
+ add r0, r0, r1
+ str r7, [r0, #4]
+ ldr r0, [r5]
+ add r0, r0, r1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBA30
+
+ thumb_func_start MOD17_021DBA80
+MOD17_021DBA80: ; 0x021DBA80
+ mov r2, #0x10
+ mov r1, #0
+_021DBA84:
+ strb r1, [r0]
+ add r0, r0, #1
+ sub r2, r2, #1
+ bne _021DBA84
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DBA80
+
+ thumb_func_start MOD17_021DBA90
+MOD17_021DBA90: ; 0x021DBA90
+ ldr r2, [r1, #8]
+ str r2, [r0, #8]
+ ldr r2, [r1, #8]
+ str r0, [r2, #0xc]
+ str r1, [r0, #0xc]
+ str r0, [r1, #8]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DBA90
+
+ thumb_func_start MOD17_021DBAA0
+MOD17_021DBAA0: ; 0x021DBAA0
+ ldr r2, [r0, #8]
+ ldr r1, [r0, #0xc]
+ str r2, [r1, #8]
+ ldr r1, [r0, #0xc]
+ ldr r0, [r0, #8]
+ str r1, [r0, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DBAA0
+
+ thumb_func_start MOD17_021DBAB0
+MOD17_021DBAB0: ; 0x021DBAB0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r4, [r6, #8]
+ cmp r4, r6
+ beq _021DBACE
+_021DBABA:
+ add r0, r4, #0
+ ldr r5, [r4, #8]
+ bl MOD17_021DBAA0
+ add r0, r4, #0
+ bl MOD17_021DBA80
+ add r4, r5, #0
+ cmp r5, r6
+ bne _021DBABA
+_021DBACE:
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DBAB0
+
+ thumb_func_start MOD17_021DBAD0
+MOD17_021DBAD0: ; 0x021DBAD0
+ push {r3, lr}
+ ldr r2, [r0, #4]
+ ldr r0, [r0]
+ cmp r2, #3
+ bge _021DBAE0
+ bl MOD17_021D766C
+ pop {r3, pc}
+_021DBAE0:
+ bl MOD17_021DB7D8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBAD0
+
+ thumb_func_start MOD17_021DBAE8
+MOD17_021DBAE8: ; 0x021DBAE8
+ push {r3, lr}
+ ldr r3, [r0, #4]
+ ldr r0, [r0]
+ cmp r3, #3
+ bge _021DBB06
+ mov r3, #0
+ mvn r3, r3
+ cmp r1, r3
+ bne _021DBB00
+ bl MOD17_021D7544
+ pop {r3, pc}
+_021DBB00:
+ bl MOD17_021D75DC
+ pop {r3, pc}
+_021DBB06:
+ mov r3, #0
+ mvn r3, r3
+ cmp r1, r3
+ bne _021DBB14
+ bl MOD17_021DB840
+ pop {r3, pc}
+_021DBB14:
+ bl MOD17_021DB84C
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBAE8
+
+ thumb_func_start MOD17_021DBB1C
+MOD17_021DBB1C: ; 0x021DBB1C
+ push {r4, lr}
+ ldr r4, [r0, #4]
+ cmp r4, #0
+ bne _021DBB32
+ ldr r0, [r0]
+ ldr r4, [r0]
+ lsl r4, r4, #2
+ ldr r3, [r3, r4]
+ bl MOD17_021D7554
+ pop {r4, pc}
+_021DBB32:
+ cmp r4, #1
+ bne _021DBB46
+ ldr r0, [r0]
+ ldr r4, [r0]
+ add r4, #0x64
+ lsl r4, r4, #2
+ ldr r3, [r3, r4]
+ bl MOD17_021D7554
+ pop {r4, pc}
+_021DBB46:
+ cmp r4, #2
+ ldr r0, [r0]
+ bne _021DBB5A
+ ldr r4, [r0]
+ add r4, #0x64
+ lsl r4, r4, #2
+ ldr r3, [r3, r4]
+ bl MOD17_021D7554
+ pop {r4, pc}
+_021DBB5A:
+ mov r4, #0x76
+ lsl r4, r4, #2
+ ldr r3, [r3, r4]
+ bl MOD17_021DB880
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBB1C
+
+ thumb_func_start MOD17_021DBB68
+MOD17_021DBB68: ; 0x021DBB68
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r1, #0
+ ldr r1, [r0, #4]
+ add r4, r2, #0
+ cmp r1, #3
+ bge _021DBB88
+ lsl r1, r5, #0x10
+ lsl r2, r4, #0x10
+ ldr r0, [r0]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl MOD17_021D75F4
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_021DBB88:
+ ldr r6, [r0]
+ add r1, sp, #4
+ add r0, r6, #0
+ add r2, sp, #0
+ bl MOD17_021DB878
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r1, r0, #1
+ lsr r0, r2, #0x1f
+ add r0, r2, r0
+ asr r2, r0, #1
+ str r1, [sp, #4]
+ str r2, [sp]
+ add r0, r6, #0
+ add r1, r5, r1
+ add r2, r4, r2
+ bl MOD17_021DB7F4
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBB68
+
+ thumb_func_start MOD17_021DBBB8
+MOD17_021DBBB8: ; 0x021DBBB8
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ ldr r3, [r0, #4]
+ add r5, r1, #0
+ add r4, r2, #0
+ cmp r3, #3
+ bge _021DBBD0
+ ldr r0, [r0]
+ bl MOD17_021D7600
+ add sp, #8
+ pop {r4, r5, r6, pc}
+_021DBBD0:
+ ldr r6, [r0]
+ add r0, r6, #0
+ bl MOD17_021DB858
+ add r0, r6, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DB878
+ ldr r1, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r2, r0, #1
+ ldr r1, [sp]
+ str r2, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ str r0, [sp]
+ ldr r0, [r5]
+ sub r0, r0, r2
+ str r0, [r5]
+ ldr r1, [r4]
+ ldr r0, [sp]
+ sub r0, r1, r0
+ str r0, [r4]
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DBBB8
+
+ thumb_func_start MOD17_021DBC08
+MOD17_021DBC08: ; 0x021DBC08
+ push {r3, lr}
+ ldr r3, [r0, #4]
+ ldr r0, [r0]
+ cmp r3, #3
+ bge _021DBC18
+ bl MOD17_021D7630
+ pop {r3, pc}
+_021DBC18:
+ bl MOD17_021DB878
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBC08
+
+ thumb_func_start MOD17_021DBC20
+MOD17_021DBC20: ; 0x021DBC20
+ push {r3, lr}
+ ldr r3, [r0, #4]
+ ldr r0, [r0]
+ cmp r3, #3
+ bge _021DBC30
+ bl MOD17_021D7684
+ pop {r3, pc}
+_021DBC30:
+ bl MOD17_021DB960
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBC20
+
+ thumb_func_start MOD17_021DBC38
+MOD17_021DBC38: ; 0x021DBC38
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r4, [r5, #8]
+ add r6, r1, #0
+ add r7, r2, #0
+ cmp r4, r5
+ beq _021DBC6A
+_021DBC48:
+ add r0, r4, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBBB8
+ ldr r0, [sp, #4]
+ add r1, r0, r6
+ ldr r0, [sp]
+ str r1, [sp, #4]
+ add r2, r0, r7
+ str r2, [sp]
+ add r0, r4, #0
+ bl MOD17_021DBB68
+ ldr r4, [r4, #8]
+ cmp r4, r5
+ bne _021DBC48
+_021DBC6A:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBC38
+
+ thumb_func_start MOD17_021DBC70
+MOD17_021DBC70: ; 0x021DBC70
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ add r1, sp, #0x14
+ add r2, sp, #0x10
+ add r7, r3, #0
+ bl MOD17_021DBC08
+ add r0, r5, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DBBB8
+ add r0, r5, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBC20
+ ldr r1, [sp, #8]
+ ldr r0, [sp]
+ add r0, r1, r0
+ str r0, [r4]
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #0x10]
+ add r1, r1, r0
+ ldr r0, [sp]
+ sub r0, r1, r0
+ str r0, [r6]
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #4]
+ add r0, r1, r0
+ str r0, [r7]
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ add r1, r1, r0
+ ldr r0, [sp, #4]
+ sub r1, r1, r0
+ ldr r0, [sp, #0x30]
+ str r1, [r0]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBC70
+
+ thumb_func_start MOD17_021DBCC8
+MOD17_021DBCC8: ; 0x021DBCC8
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r0, #0
+ add r1, sp, #0xc
+ add r2, sp, #8
+ bl MOD17_021DBC08
+ add r0, r6, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD17_021DBBB8
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #4]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ add r0, r2, r0
+ str r0, [r5]
+ ldr r1, [sp, #8]
+ ldr r2, [sp]
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ add r0, r2, r0
+ str r0, [r4]
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DBCC8
+
+ thumb_func_start MOD17_021DBD04
+MOD17_021DBD04: ; 0x021DBD04
+ add r2, r0, #0
+ ldr r0, [r1]
+ str r0, [r2]
+ ldr r3, [r1, #0x14]
+ asr r0, r3, #2
+ lsr r0, r0, #0x1d
+ add r0, r3, r0
+ asr r0, r0, #3
+ str r0, [r2, #0xc]
+ ldr r3, [r1, #0x18]
+ asr r0, r3, #2
+ lsr r0, r0, #0x1d
+ add r0, r3, r0
+ asr r0, r0, #3
+ str r0, [r2, #0x10]
+ ldr r0, [r1, #0x1c]
+ ldr r3, _021DBD48 ; =MOD17_021DBEE8
+ str r0, [r2, #0x1c]
+ ldr r0, [r1, #0x24]
+ str r0, [r2, #0x20]
+ ldr r0, [r1, #0x20]
+ str r0, [r2, #0x24]
+ ldr r0, [r1, #0x28]
+ str r0, [r2, #0x28]
+ ldr r0, [r1, #4]
+ str r0, [r2, #4]
+ ldr r0, [r1, #0x10]
+ str r0, [r2, #8]
+ add r0, r1, #0
+ add r1, r2, #0
+ add r1, #0x14
+ add r2, #0x18
+ bx r3
+ nop
+_021DBD48: .word MOD17_021DBEE8
+ thumb_func_end MOD17_021DBD04
+
+ thumb_func_start MOD17_021DBD4C
+MOD17_021DBD4C: ; 0x021DBD4C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r4]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x2c
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ thumb_func_end MOD17_021DBD4C
+
+ thumb_func_start MOD17_021DBD68
+MOD17_021DBD68: ; 0x021DBD68
+ ldr r2, [r1]
+ str r2, [r0]
+ ldr r2, [r1, #4]
+ str r2, [r0, #4]
+ ldr r2, [r1, #8]
+ str r2, [r0, #8]
+ mov r2, #0
+ str r2, [r0, #0xc]
+ str r2, [r0, #0x10]
+ ldr r1, [r1, #0xc]
+ str r1, [r0, #0x14]
+ bx lr
+ thumb_func_end MOD17_021DBD68
+
+ thumb_func_start MOD17_021DBD80
+MOD17_021DBD80: ; 0x021DBD80
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ add r1, r0, r1
+ str r1, [r5, #0xc]
+ ldr r0, [r5, #8]
+ cmp r1, r0
+ ble _021DBDE4
+ mov r2, #0
+ str r2, [r5, #0xc]
+ ldr r0, [r5, #0x10]
+ cmp r0, #0
+ bne _021DBDA4
+ ldr r1, [r5, #4]
+ mov r0, #1
+ str r0, [r5, #0x10]
+ b _021DBDAA
+_021DBDA4:
+ ldr r0, [r5]
+ ldr r1, [r0, #8]
+ str r2, [r5, #0x10]
+_021DBDAA:
+ ldr r0, [r5, #0x14]
+ mov r2, #0
+ str r0, [sp]
+ ldr r0, [r5]
+ add r3, sp, #0x14
+ ldr r0, [r0, #4]
+ bl FUN_02006BDC
+ ldr r3, [r5]
+ add r4, r0, #0
+ ldr r0, [r3, #0x18]
+ str r0, [sp]
+ ldr r0, [r3, #0xc]
+ str r0, [sp, #4]
+ ldr r0, [r3, #0x10]
+ str r0, [sp, #8]
+ ldr r0, [r3, #0x28]
+ str r0, [sp, #0xc]
+ ldr r0, [r3, #0x20]
+ str r0, [sp, #0x10]
+ ldr r0, [r3]
+ ldr r1, [r3, #0x1c]
+ ldr r2, [sp, #0x14]
+ ldr r3, [r3, #0x14]
+ bl MOD17_021DC004
+ add r0, r4, #0
+ bl FUN_02016A18
+_021DBDE4:
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DBD80
+
+ thumb_func_start MOD17_021DBDE8
+MOD17_021DBDE8: ; 0x021DBDE8
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r1, [r5]
+ ldr r0, [r5, #0x14]
+ mov r2, #0
+ str r0, [sp]
+ ldr r0, [r1, #4]
+ ldr r1, [r1, #8]
+ add r3, sp, #0x14
+ bl FUN_02006BDC
+ ldr r3, [r5]
+ add r4, r0, #0
+ ldr r0, [r3, #0x18]
+ str r0, [sp]
+ ldr r0, [r3, #0xc]
+ str r0, [sp, #4]
+ ldr r0, [r3, #0x10]
+ str r0, [sp, #8]
+ ldr r0, [r3, #0x28]
+ str r0, [sp, #0xc]
+ ldr r0, [r3, #0x20]
+ str r0, [sp, #0x10]
+ ldr r0, [r3]
+ ldr r1, [r3, #0x1c]
+ ldr r2, [sp, #0x14]
+ ldr r3, [r3, #0x14]
+ bl MOD17_021DC004
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r1, #0x18
+ mov r0, #0
+_021DBE2E:
+ strb r0, [r5]
+ add r5, r5, #1
+ sub r1, r1, #1
+ bne _021DBE2E
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBDE8
+
+ thumb_func_start MOD17_021DBE3C
+MOD17_021DBE3C: ; 0x021DBE3C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ add r5, r1, #0
+ str r2, [sp]
+ str r3, [sp, #4]
+ ldr r0, _021DBEC4 ; =MOD17_021DBF94
+ mov r1, #0x4c
+ mov r2, #0
+ mov r3, #0xd
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ add r4, r0, #0
+ str r6, [r4]
+ add r7, r5, #0
+ add r3, r4, #4
+ mov r2, #6
+_021DBE62:
+ ldmia r7!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021DBE62
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #0x20]
+ str r0, [r4, #0x34]
+ ldr r0, [sp]
+ str r1, [r4, #0x38]
+ bl _s32_div_f
+ str r0, [r4, #0x3c]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #0x20]
+ bl _s32_div_f
+ str r0, [r4, #0x40]
+ ldr r0, [r6]
+ ldr r1, [r6, #0x1c]
+ bl FUN_02017B48
+ str r0, [r4, #0x44]
+ ldr r0, [r6]
+ ldr r1, [r6, #0x1c]
+ bl FUN_02017B54
+ str r0, [r4, #0x48]
+ mov r0, #0x80
+ str r0, [r5, #0x28]
+ mov r0, #5
+ str r0, [r5, #0x24]
+ ldr r1, [r5, #0x14]
+ ldr r0, [sp]
+ sub r0, r1, r0
+ str r0, [r5, #0x14]
+ ldr r1, [r5, #0x18]
+ ldr r0, [sp, #4]
+ sub r0, r1, r0
+ str r0, [r5, #0x18]
+ mov r0, #0xe
+ mov r1, #0
+ str r0, [r5, #0x2c]
+ add r0, r5, #0
+ add r2, r1, #0
+ bl MOD17_021DBEE8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DBEC4: .word MOD17_021DBF94
+ thumb_func_end MOD17_021DBE3C
+
+ thumb_func_start MOD17_021DBEC8
+MOD17_021DBEC8: ; 0x021DBEC8
+ push {r3, r4}
+ ldr r2, [r0, #8]
+ add r0, #0xc
+ lsr r4, r2, #1
+ mov r3, #0
+ cmp r4, #0
+ ble _021DBEE4
+_021DBED6:
+ ldrh r2, [r0]
+ add r3, r3, #1
+ add r2, r2, r1
+ strh r2, [r0]
+ add r0, r0, #2
+ cmp r3, r4
+ blt _021DBED6
+_021DBEE4:
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD17_021DBEC8
+
+ thumb_func_start MOD17_021DBEE8
+MOD17_021DBEE8: ; 0x021DBEE8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, [r5, #0x14]
+ add r6, r2, #0
+ asr r0, r1, #2
+ lsr r0, r0, #0x1d
+ add r0, r1, r0
+ asr r0, r0, #3
+ ldr r1, [r5, #0x18]
+ str r0, [sp, #0x18]
+ asr r0, r1, #2
+ lsr r0, r0, #0x1d
+ add r0, r1, r0
+ asr r0, r0, #3
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x28]
+ str r0, [sp]
+ ldr r0, [r5, #0x2c]
+ str r0, [sp, #4]
+ ldr r0, [r5, #4]
+ ldr r1, [r5, #8]
+ ldr r2, [r5]
+ ldr r3, [r5, #0x1c]
+ bl MOD17_021DC084
+ ldr r0, [r5, #0x1c]
+ cmp r0, #4
+ bge _021DBF28
+ mov r2, #0
+ b _021DBF2A
+_021DBF28:
+ mov r2, #4
+_021DBF2A:
+ ldr r0, [r5, #0x20]
+ lsl r0, r0, #5
+ str r0, [sp]
+ ldr r0, [r5, #0x2c]
+ str r0, [sp, #4]
+ ldr r3, [r5, #0x24]
+ ldr r0, [r5, #4]
+ ldr r1, [r5, #0xc]
+ lsl r3, r3, #5
+ bl MOD17_021DC0D4
+ ldr r0, [r5, #0x2c]
+ mov r2, #0
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ ldr r1, [r5, #0x10]
+ add r3, sp, #0x24
+ bl FUN_02006BDC
+ ldr r2, [sp, #0x24]
+ str r0, [sp, #0x20]
+ ldrh r0, [r2]
+ lsr r7, r0, #3
+ ldrh r0, [r2, #2]
+ add r3, r7, #0
+ lsr r0, r0, #3
+ str r0, [sp, #0x1c]
+ str r0, [sp]
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x14]
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x28]
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x24]
+ str r0, [sp, #0x10]
+ ldr r0, [r5]
+ ldr r1, [r5, #0x1c]
+ bl MOD17_021DC004
+ ldr r0, [sp, #0x20]
+ bl FUN_02016A18
+ cmp r4, #0
+ beq _021DBF86
+ str r7, [r4]
+_021DBF86:
+ cmp r6, #0
+ beq _021DBF8E
+ ldr r0, [sp, #0x1c]
+ str r0, [r6]
+_021DBF8E:
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DBEE8
+
+ thumb_func_start MOD17_021DBF94
+MOD17_021DBF94: ; 0x021DBF94
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x38]
+ sub r0, r0, #1
+ str r0, [r4, #0x38]
+ ldr r1, [r4]
+ bmi _021DBFC8
+ ldr r0, [r1]
+ ldr r1, [r1, #0x1c]
+ ldr r3, [r4, #0x3c]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #2
+ bl FUN_0201AEE4
+ ldr r1, [r4]
+ ldr r3, [r4, #0x40]
+ ldr r0, [r1]
+ ldr r1, [r1, #0x1c]
+ mov r2, #5
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0201AEE4
+ pop {r3, r4, r5, pc}
+_021DBFC8:
+ ldr r0, [r1]
+ ldr r1, [r1, #0x1c]
+ ldr r3, [r4, #0x44]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #0
+ bl FUN_0201AEE4
+ ldr r1, [r4]
+ ldr r3, [r4, #0x48]
+ ldr r0, [r1]
+ ldr r1, [r1, #0x1c]
+ mov r2, #3
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_0201AEE4
+ ldr r0, [r4]
+ add r1, r4, #4
+ bl MOD17_021DBD04
+ ldr r1, [r4, #0x34]
+ cmp r1, #0
+ beq _021DBFFC
+ mov r0, #1
+ str r0, [r1]
+_021DBFFC:
+ add r0, r5, #0
+ bl FUN_0200621C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DBF94
+
+ thumb_func_start MOD17_021DC004
+MOD17_021DC004: ; 0x021DC004
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r1, #0
+ add r4, r2, #0
+ add r7, r0, #0
+ ldr r1, [sp, #0x3c]
+ add r0, r4, #0
+ add r6, r3, #0
+ bl MOD17_021DBEC8
+ ldr r1, [sp, #0x30]
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ str r0, [sp]
+ ldr r3, [sp, #0x38]
+ str r2, [sp, #4]
+ add r4, #0xc
+ lsl r3, r3, #0x18
+ str r4, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ str r2, [sp, #0x18]
+ ldr r2, [sp, #0x34]
+ lsl r1, r5, #0x18
+ lsl r2, r2, #0x18
+ add r0, r7, #0
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x30]
+ ldr r2, [sp, #0x34]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x40]
+ ldr r3, [sp, #0x38]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r1, r5, #0x18
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ str r0, [sp, #8]
+ add r0, r7, #0
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020186B4
+ lsl r1, r5, #0x18
+ add r0, r7, #0
+ lsr r1, r1, #0x18
+ bl FUN_0201AC68
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DC004
+
+ thumb_func_start MOD17_021DC084
+MOD17_021DC084: ; 0x021DC084
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ str r1, [sp, #4]
+ ldr r0, [sp, #0x24]
+ mov r1, #0x14
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ add r2, r4, #0
+ mov r1, #0x14
+ mov r0, #0
+_021DC0A0:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DC0A0
+ ldr r0, [sp, #0x24]
+ ldr r1, [sp, #4]
+ str r0, [sp]
+ add r0, r7, #0
+ mov r2, #0
+ add r3, r4, #4
+ bl FUN_02006BB0
+ str r0, [r4, #8]
+ str r5, [r4]
+ ldr r0, [sp, #0x20]
+ str r6, [r4, #0xc]
+ str r0, [r4, #0x10]
+ ldr r0, _021DC0D0 ; =MOD17_021DC11C
+ add r1, r4, #0
+ mov r2, #0x80
+ bl FUN_0200CA98
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DC0D0: .word MOD17_021DC11C
+ thumb_func_end MOD17_021DC084
+
+ thumb_func_start MOD17_021DC0D4
+MOD17_021DC0D4: ; 0x021DC0D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ str r1, [sp]
+ ldr r0, [sp, #0x1c]
+ mov r1, #0x14
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ add r2, r4, #0
+ mov r1, #0x14
+ mov r0, #0
+_021DC0EE:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DC0EE
+ ldr r1, [sp]
+ ldr r3, [sp, #0x1c]
+ add r0, r7, #0
+ add r2, r4, #0
+ bl FUN_02006C08
+ str r0, [r4, #4]
+ str r5, [r4, #8]
+ ldr r0, [sp, #0x18]
+ str r6, [r4, #0xc]
+ str r0, [r4, #0x10]
+ ldr r0, _021DC118 ; =MOD17_021DC158
+ add r1, r4, #0
+ mov r2, #0x80
+ bl FUN_0200CA98
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DC118: .word MOD17_021DC158
+ thumb_func_end MOD17_021DC0D4
+
+ thumb_func_start MOD17_021DC11C
+MOD17_021DC11C: ; 0x021DC11C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #4]
+ add r5, r0, #0
+ ldr r0, [r1, #0x14]
+ ldr r1, [r1, #0x10]
+ bl DC_FlushRange
+ ldr r3, [r4, #4]
+ ldr r0, [r4, #0x10]
+ str r0, [sp]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r3, #0x14]
+ lsl r1, r1, #0x18
+ ldr r0, [r4]
+ ldr r3, [r3, #0x10]
+ lsr r1, r1, #0x18
+ bl FUN_02017E14
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC11C
+
+ thumb_func_start MOD17_021DC158
+MOD17_021DC158: ; 0x021DC158
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ ldr r1, [r4, #0x10]
+ ldr r0, [r0, #0xc]
+ bl DC_FlushRange
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ bne _021DC17C
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ ldr r0, [r0, #0xc]
+ ldr r2, [r4, #0x10]
+ bl GX_LoadBGPltt
+ b _021DC18C
+_021DC17C:
+ cmp r0, #4
+ bne _021DC18C
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ ldr r0, [r0, #0xc]
+ ldr r2, [r4, #0x10]
+ bl GXS_LoadBGPltt
+_021DC18C:
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DC158
+
+ thumb_func_start MOD17_021DC1A0
+MOD17_021DC1A0: ; 0x021DC1A0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r5, #0
+ bne _021DC1AE
+ bl ErrorHandling
+_021DC1AE:
+ cmp r4, #0
+ bne _021DC1B6
+ bl ErrorHandling
+_021DC1B6:
+ ldr r0, [r4]
+ bl FUN_0201FE94
+ str r0, [r5]
+ cmp r0, #0
+ bne _021DC1C6
+ bl ErrorHandling
+_021DC1C6:
+ ldr r0, [r4, #0xc]
+ str r0, [r5, #4]
+ ldr r0, [r4, #8]
+ str r0, [r5, #8]
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021DC1D8
+ str r0, [r5, #0xc]
+ pop {r3, r4, r5, pc}
+_021DC1D8:
+ ldr r0, _021DC1E0 ; =MOD17_021DC2DC
+ str r0, [r5, #0xc]
+ pop {r3, r4, r5, pc}
+ nop
+_021DC1E0: .word MOD17_021DC2DC
+ thumb_func_end MOD17_021DC1A0
+
+ thumb_func_start MOD17_021DC1E4
+MOD17_021DC1E4: ; 0x021DC1E4
+ push {r3, r4, r5, lr}
+ sub sp, #0x30
+ add r4, r1, #0
+ add r5, r0, #0
+ bl MOD17_021DC1A0
+ ldr r0, [r4, #0x14]
+ str r0, [sp]
+ ldr r0, [r4, #0x10]
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ str r0, [sp, #8]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0xc]
+ ldr r0, [r5]
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x24]
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0x1c]
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x20]
+ str r0, [sp, #0x1c]
+ mov r0, #0
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x28]
+ str r0, [sp, #0x28]
+ ldr r0, [r4]
+ ldr r0, [r0, #0x2c]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0
+ bl FUN_020117E8
+ str r0, [r5, #0x10]
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DC1E4
+
+ thumb_func_start MOD17_021DC230
+MOD17_021DC230: ; 0x021DC230
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_0201FFC8
+ mov r1, #0x10
+ mov r0, #0
+_021DC23E:
+ strb r0, [r4]
+ add r4, r4, #1
+ sub r1, r1, #1
+ bne _021DC23E
+ pop {r4, pc}
+ thumb_func_end MOD17_021DC230
+
+ thumb_func_start MOD17_021DC248
+MOD17_021DC248: ; 0x021DC248
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021DC230
+ ldr r0, [r4, #0x10]
+ bl FUN_02011870
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x20
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC248
+
+ thumb_func_start MOD17_021DC264
+MOD17_021DC264: ; 0x021DC264
+ push {r3, lr}
+ ldr r2, [r0, #4]
+ cmp r1, r2
+ bne _021DC272
+ ldr r1, [r0, #8]
+ ldr r2, [r0, #0xc]
+ blx r2
+_021DC272:
+ pop {r3, pc}
+ thumb_func_end MOD17_021DC264
+
+ thumb_func_start MOD17_021DC274
+MOD17_021DC274: ; 0x021DC274
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ add r6, r2, #0
+ mov r4, #2
+ add r5, #0x20
+_021DC280:
+ cmp r4, r7
+ beq _021DC28C
+ add r0, r5, #0
+ bl MOD17_021DC2EC
+ b _021DC2B0
+_021DC28C:
+ cmp r6, #0
+ bne _021DC29E
+ add r0, r5, #0
+ bl MOD17_021DC2F8
+ ldr r0, _021DC2BC ; =0x0000067D
+ bl FUN_020054C8
+ b _021DC2B0
+_021DC29E:
+ cmp r6, #2
+ bne _021DC2AA
+ add r0, r5, #0
+ bl MOD17_021DC2E0
+ b _021DC2B0
+_021DC2AA:
+ add r0, r5, #0
+ bl MOD17_021DC2F8
+_021DC2B0:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #3
+ ble _021DC280
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DC2BC: .word 0x0000067D
+ thumb_func_end MOD17_021DC274
+
+ thumb_func_start MOD17_021DC2C0
+MOD17_021DC2C0: ; 0x021DC2C0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r5, #0
+ bne _021DC2D2
+ bl ErrorHandling
+_021DC2D2:
+ str r7, [r5, #4]
+ str r6, [r5, #8]
+ str r4, [r5, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC2C0
+
+ thumb_func_start MOD17_021DC2DC
+MOD17_021DC2DC: ; 0x021DC2DC
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DC2DC
+
+ thumb_func_start MOD17_021DC2E0
+MOD17_021DC2E0: ; 0x021DC2E0
+ ldr r3, _021DC2E8 ; =0x02020209
+ ldr r0, [r0]
+ mov r1, #2
+ bx r3
+ .align 2, 0
+_021DC2E8: .word 0x02020209
+ thumb_func_end MOD17_021DC2E0
+
+ thumb_func_start MOD17_021DC2EC
+MOD17_021DC2EC: ; 0x021DC2EC
+ ldr r3, _021DC2F4 ; =0x02020209
+ ldr r0, [r0]
+ mov r1, #0
+ bx r3
+ .align 2, 0
+_021DC2F4: .word 0x02020209
+ thumb_func_end MOD17_021DC2EC
+
+ thumb_func_start MOD17_021DC2F8
+MOD17_021DC2F8: ; 0x021DC2F8
+ ldr r3, _021DC300 ; =0x02020209
+ ldr r0, [r0]
+ mov r1, #1
+ bx r3
+ .align 2, 0
+_021DC300: .word 0x02020209
+ thumb_func_end MOD17_021DC2F8
+
+ thumb_func_start MOD17_021DC304
+MOD17_021DC304: ; 0x021DC304
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #1
+ mov r1, #0xd
+ bl FUN_02011744
+ str r0, [r5, #0x64]
+ add r0, r4, #0
+ bl MOD17_021DC760
+ mov r0, #0x90
+ str r0, [sp]
+ mov r0, #0x28
+ str r0, [sp, #4]
+ mov r0, #0x20
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r1, #0
+ add r2, r4, #0
+ mov r3, #0x30
+ bl MOD17_021DC628
+ mov r0, #0x28
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x6c
+ mov r1, #0
+ mov r2, #0x30
+ mov r3, #0x98
+ bl MOD17_021DC748
+ mov r0, #0x90
+ str r0, [sp]
+ mov r0, #0x28
+ str r0, [sp, #4]
+ mov r0, #0x20
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x10
+ mov r1, #1
+ add r2, r4, #0
+ mov r3, #8
+ bl MOD17_021DC628
+ mov r0, #0x28
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x6c
+ mov r1, #1
+ mov r2, #8
+ mov r3, #0x98
+ bl MOD17_021DC748
+ mov r0, #0x90
+ str r0, [sp]
+ mov r0, #0x2a
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x20
+ mov r1, #2
+ add r2, r4, #0
+ mov r3, #0x60
+ bl MOD17_021DC628
+ mov r0, #0x2a
+ str r0, [sp]
+ mov r0, #0x22
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x6c
+ mov r1, #2
+ mov r2, #0x60
+ mov r3, #0x9c
+ bl MOD17_021DC748
+ mov r0, #0x90
+ str r0, [sp]
+ mov r0, #0x2a
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x30
+ mov r1, #3
+ add r2, r4, #0
+ mov r3, #0x88
+ bl MOD17_021DC628
+ mov r0, #0x2a
+ str r0, [sp]
+ mov r0, #0x22
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x6c
+ mov r1, #3
+ mov r2, #0x88
+ mov r3, #0x9c
+ bl MOD17_021DC748
+ mov r0, #2
+ mov r1, #0xe
+ bl FUN_02002C50
+ mov r0, #9
+ str r0, [sp]
+ mov r0, #5
+ str r0, [sp, #4]
+ ldr r2, _021DC460 ; =0x00000151
+ add r0, r4, #0
+ mov r1, #0x1a
+ mov r3, #0
+ bl MOD17_021DC880
+ add r6, r0, #0
+ str r6, [sp]
+ mov r0, #0xb8
+ str r0, [sp, #4]
+ mov r0, #0x90
+ str r0, [sp, #8]
+ mov r0, #0x48
+ str r0, [sp, #0xc]
+ mov r0, #0x2a
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ ldr r3, [r5, #0x64]
+ add r0, #0x40
+ mov r1, #4
+ add r2, r4, #0
+ bl MOD17_021DC698
+ mov r0, #0x48
+ str r0, [sp]
+ mov r0, #0x22
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x6c
+ mov r1, #4
+ mov r2, #0xb8
+ mov r3, #0x9c
+ bl MOD17_021DC748
+ add r0, r6, #0
+ bl MOD17_021DC8F8
+ mov r0, #2
+ bl FUN_02002CF8
+ mov r0, #1
+ str r0, [r5, #0x60]
+ add r0, r4, #0
+ bl MOD17_021DC7E0
+ add r0, r5, #0
+ add r0, #0x20
+ bl MOD17_021DC2E0
+ mov r0, #0xd
+ str r0, [sp]
+ add r0, r5, #0
+ ldr r2, _021DC464 ; =MOD17_021DC570
+ add r0, #0x6c
+ mov r1, #5
+ add r3, r5, #0
+ bl FUN_020220C4
+ str r0, [r5, #0x68]
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021DC460: .word 0x00000151
+_021DC464: .word MOD17_021DC570
+ thumb_func_end MOD17_021DC304
+
+ thumb_func_start MOD17_021DC468
+MOD17_021DC468: ; 0x021DC468
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r4, #0
+_021DC470:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021D79D8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021D79EC
+ add r0, r4, #0
+ bl FUN_0201D324
+ add r4, r4, #1
+ cmp r4, #5
+ blt _021DC470
+ mov r0, #0
+ bl FUN_0201E1C8
+ mov r0, #1
+ bl FUN_0201E1C8
+ mov r5, #0
+ add r4, r6, #0
+_021DC49C:
+ add r0, r4, #0
+ bl MOD17_021DC230
+ add r5, r5, #1
+ add r4, #0x10
+ cmp r5, #4
+ blt _021DC49C
+ add r0, r6, #0
+ add r0, #0x54
+ bl FUN_0201D5E8
+ add r0, r6, #0
+ add r0, #0x40
+ bl MOD17_021DC248
+ ldr r0, [r6, #0x64]
+ bl FUN_020117BC
+ ldr r0, [r6, #0x68]
+ bl FUN_0202212C
+ mov r0, #0
+ str r0, [r6, #0x68]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD17_021DC468
+
+ thumb_func_start MOD17_021DC4CC
+MOD17_021DC4CC: ; 0x021DC4CC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x68]
+ cmp r0, #0
+ bne _021DC4DA
+ bl ErrorHandling
+_021DC4DA:
+ ldr r0, [r4, #0x68]
+ bl FUN_02022144
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC4CC
+
+ thumb_func_start MOD17_021DC4E4
+MOD17_021DC4E4: ; 0x021DC4E4
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x40
+ mov r1, #3
+ bl MOD17_021DC808
+ add r0, r4, #0
+ add r0, #0x40
+ mov r1, #3
+ bl MOD17_021DC82C
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #3
+ bl MOD17_021DC274
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC4E4
+
+ thumb_func_start MOD17_021DC508
+MOD17_021DC508: ; 0x021DC508
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ add r6, r1, #0
+ add r7, r2, #0
+ mov r4, #0
+ add r5, r0, #0
+_021DC514:
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD17_021DC904
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #4
+ blt _021DC514
+ ldr r0, [sp]
+ add r1, r6, #0
+ add r0, #0x40
+ add r2, r7, #0
+ str r0, [sp]
+ bl MOD17_021DC940
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC508
+
+ thumb_func_start MOD17_021DC538
+MOD17_021DC538: ; 0x021DC538
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r5, #0
+ bne _021DC54A
+ bl ErrorHandling
+_021DC54A:
+ cmp r4, #4
+ bge _021DC55E
+ lsl r0, r4, #4
+ ldr r3, [sp, #0x18]
+ add r0, r5, r0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD17_021DC2C0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DC55E:
+ add r5, #0x40
+ ldr r3, [sp, #0x18]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD17_021DC2C0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC538
+
+ thumb_func_start MOD17_021DC570
+MOD17_021DC570: ; 0x021DC570
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ add r4, r2, #0
+ cmp r6, #4
+ bhi _021DC618
+ add r0, r6, r6
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DC588: ; jump table
+ .short _021DC592 - _021DC588 - 2 ; case 0
+ .short _021DC5AE - _021DC588 - 2 ; case 1
+ .short _021DC5D0 - _021DC588 - 2 ; case 2
+ .short _021DC5D0 - _021DC588 - 2 ; case 3
+ .short _021DC5E6 - _021DC588 - 2 ; case 4
+_021DC592:
+ add r0, r4, #0
+ bl MOD17_021DC808
+ ldr r1, _021DC620 ; =0x00000681
+ add r0, r4, #0
+ mov r2, #0
+ add r3, r5, #0
+ bl MOD17_021DC870
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DC264
+ pop {r4, r5, r6, pc}
+_021DC5AE:
+ add r0, r4, #0
+ add r0, #0x10
+ bl MOD17_021DC808
+ add r0, r4, #0
+ ldr r1, _021DC620 ; =0x00000681
+ add r0, #0x10
+ mov r2, #0
+ add r3, r5, #0
+ bl MOD17_021DC870
+ add r4, #0x10
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DC264
+ pop {r4, r5, r6, pc}
+_021DC5D0:
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ bl MOD17_021DC274
+ lsl r0, r6, #4
+ add r0, r4, r0
+ add r1, r5, #0
+ bl MOD17_021DC264
+ pop {r4, r5, r6, pc}
+_021DC5E6:
+ ldr r0, [r4, #0x60]
+ cmp r0, #1
+ bne _021DC61C
+ add r0, r4, #0
+ add r0, #0x40
+ bl MOD17_021DC808
+ add r0, r4, #0
+ add r0, #0x40
+ add r1, r5, #0
+ bl MOD17_021DC82C
+ add r0, r4, #0
+ ldr r1, _021DC624 ; =0x000005E2
+ add r0, #0x40
+ mov r2, #0
+ add r3, r5, #0
+ bl MOD17_021DC870
+ add r4, #0x40
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DC264
+ pop {r4, r5, r6, pc}
+_021DC618:
+ bl ErrorHandling
+_021DC61C:
+ pop {r4, r5, r6, pc}
+ nop
+_021DC620: .word 0x00000681
+_021DC624: .word 0x000005E2
+ thumb_func_end MOD17_021DC570
+
+ thumb_func_start MOD17_021DC628
+MOD17_021DC628: ; 0x021DC628
+ push {r4, r5, r6, lr}
+ sub sp, #0x90
+ add r6, r0, #0
+ mov r0, #0
+ str r1, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ add r5, r2, #0
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldr r0, [r5, #0x40]
+ add r4, r3, #0
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #0x44]
+ add r3, r1, #0
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x48]
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, #0x4c]
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r0, sp, #0x5c
+ bl FUN_02008AA4
+ ldr r0, [r5, #0x3c]
+ mov r2, #0
+ mov r1, #1
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x5c
+ str r0, [sp, #0x30]
+ lsl r0, r4, #0xc
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0xa0]
+ str r1, [sp, #0x54]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x38]
+ mov r0, #2
+ str r0, [sp, #0x50]
+ mov r0, #0xe
+ str r0, [sp, #0x58]
+ add r0, sp, #0x2c
+ str r0, [sp, #0x80]
+ str r1, [sp, #0x8c]
+ add r0, r6, #0
+ add r1, sp, #0x80
+ str r2, [sp, #0x3c]
+ str r2, [sp, #0x84]
+ str r2, [sp, #0x88]
+ bl MOD17_021DC1A0
+ add sp, #0x90
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC628
+
+ thumb_func_start MOD17_021DC698
+MOD17_021DC698: ; 0x021DC698
+ push {r4, r5, r6, lr}
+ sub sp, #0xa8
+ add r5, r0, #0
+ mov r0, #0
+ str r1, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ add r4, r2, #0
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldr r0, [r4, #0x40]
+ add r6, r3, #0
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0x44]
+ add r3, r1, #0
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x48]
+ str r0, [sp, #0x1c]
+ ldr r0, [r4, #0x4c]
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r0, sp, #0x5c
+ bl FUN_02008AA4
+ ldr r0, [r4, #0x3c]
+ mov r1, #2
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x5c
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0xbc]
+ mov r2, #0xe
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0xc0]
+ str r1, [sp, #0x50]
+ mov r1, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x38]
+ mov r0, #0
+ str r2, [sp, #0x58]
+ add r2, sp, #0x2c
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x84]
+ str r0, [sp, #0x88]
+ ldr r0, [sp, #0xb8]
+ str r1, [sp, #0x54]
+ str r0, [sp, #0x90]
+ mov r0, #0x10
+ str r0, [sp, #0x9c]
+ mov r0, #0x13
+ str r2, [sp, #0x80]
+ str r1, [sp, #0x8c]
+ str r6, [sp, #0x94]
+ str r0, [sp, #0xa0]
+ ldr r0, [r4, #0x44]
+ bl FUN_020094F0
+ mov r1, #0
+ bl FUN_02009E54
+ str r0, [sp, #0x98]
+ ldr r0, [sp, #0xb8]
+ mov r1, #1
+ mov r2, #0xd
+ bl FUN_02011898
+ mov r1, #1
+ add r3, r5, #0
+ add r2, r1, #0
+ add r3, #0x14
+ bl FUN_0201D568
+ cmp r0, #0
+ bne _021DC736
+ bl ErrorHandling
+_021DC736:
+ ldr r0, [r5, #0x18]
+ add r1, sp, #0x80
+ str r0, [sp, #0xa4]
+ add r0, r5, #0
+ bl MOD17_021DC1E4
+ add sp, #0xa8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC698
+
+ thumb_func_start MOD17_021DC748
+MOD17_021DC748: ; 0x021DC748
+ lsl r1, r1, #2
+ strb r3, [r0, r1]
+ add r1, r0, r1
+ ldr r0, [sp, #4]
+ strb r2, [r1, #2]
+ add r0, r3, r0
+ strb r0, [r1, #1]
+ ldr r0, [sp]
+ add r0, r2, r0
+ strb r0, [r1, #3]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DC748
+
+ thumb_func_start MOD17_021DC760
+MOD17_021DC760: ; 0x021DC760
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0x6b
+ mov r4, #0
+ str r0, [sp, #0xc]
+ mov r7, #0x6a
+ mov r6, #0x69
+_021DC770:
+ mov r0, #1
+ str r0, [sp]
+ ldr r2, [sp, #0xc]
+ add r0, r5, #0
+ mov r1, #0x19
+ mov r3, #0
+ str r4, [sp, #4]
+ bl MOD17_021D7934
+ add r0, r5, #0
+ mov r1, #0x19
+ add r2, r7, #0
+ mov r3, #0
+ str r4, [sp]
+ bl MOD17_021D7978
+ add r0, r5, #0
+ mov r1, #0x19
+ add r2, r6, #0
+ mov r3, #0
+ str r4, [sp]
+ bl MOD17_021D7994
+ ldr r0, [sp, #0xc]
+ add r4, r4, #1
+ add r0, r0, #3
+ str r0, [sp, #0xc]
+ add r7, r7, #3
+ add r6, r6, #3
+ cmp r4, #5
+ blt _021DC770
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r3, #0
+ add r0, r5, #0
+ mov r1, #0x19
+ mov r2, #0x68
+ str r3, [sp, #8]
+ bl MOD17_021D7954
+ mov r1, #1
+ str r1, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r5, #0
+ mov r1, #0x19
+ mov r2, #0x78
+ mov r3, #0
+ bl MOD17_021D7954
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC760
+
+ thumb_func_start MOD17_021DC7E0
+MOD17_021DC7E0: ; 0x021DC7E0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021DC7E6:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021D79B0
+ add r4, r4, #1
+ cmp r4, #5
+ blt _021DC7E6
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD17_021D79C4
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD17_021D79C4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC7E0
+
+ thumb_func_start MOD17_021DC808
+MOD17_021DC808: ; 0x021DC808
+ push {r3, lr}
+ cmp r1, #0
+ bne _021DC814
+ bl MOD17_021DC2F8
+ pop {r3, pc}
+_021DC814:
+ cmp r1, #2
+ bne _021DC81E
+ bl MOD17_021DC2E0
+ pop {r3, pc}
+_021DC81E:
+ cmp r1, #1
+ beq _021DC826
+ cmp r1, #3
+ bne _021DC82A
+_021DC826:
+ bl MOD17_021DC2EC
+_021DC82A:
+ pop {r3, pc}
+ thumb_func_end MOD17_021DC808
+
+ thumb_func_start MOD17_021DC82C
+MOD17_021DC82C: ; 0x021DC82C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bne _021DC848
+ ldr r0, [r5, #0x10]
+ mov r1, #0x10
+ mov r2, #0xf
+ bl FUN_020118C4
+ ldr r0, [r5, #0x10]
+ mov r1, #4
+ bl FUN_02011A60
+ pop {r3, r4, r5, pc}
+_021DC848:
+ cmp r4, #1
+ bne _021DC856
+ ldr r0, [r5, #0x10]
+ mov r1, #0x10
+ mov r2, #0x13
+ bl FUN_020118C4
+_021DC856:
+ cmp r4, #3
+ bne _021DC86C
+ ldr r0, [r5, #0x10]
+ mov r1, #0x10
+ mov r2, #0x13
+ bl FUN_020118C4
+ ldr r0, [r5, #0x10]
+ mov r1, #3
+ bl FUN_02011A60
+_021DC86C:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC82C
+
+ thumb_func_start MOD17_021DC870
+MOD17_021DC870: ; 0x021DC870
+ push {r3, lr}
+ cmp r3, r2
+ bne _021DC87E
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020054C8
+_021DC87E:
+ pop {r3, pc}
+ thumb_func_end MOD17_021DC870
+
+ thumb_func_start MOD17_021DC880
+MOD17_021DC880: ; 0x021DC880
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r3, #0
+ mov r0, #0
+ mov r3, #0xd
+ bl FUN_0200A86C
+ add r6, r0, #0
+ bne _021DC898
+ bl ErrorHandling
+_021DC898:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0200A914
+ add r7, r0, #0
+ mov r0, #0xe
+ mov r1, #1
+ bl FUN_02018FF4
+ add r4, r0, #0
+ bl FUN_0201901C
+ mov r0, #0
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x2c]
+ str r0, [sp]
+ str r0, [sp, #4]
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ ldr r0, [r5, #0x38]
+ add r1, r4, #0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_020190EC
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021DC8F4 ; =0x00010203
+ mov r1, #2
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r2, r7, #0
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DC8F4: .word 0x00010203
+ thumb_func_end MOD17_021DC880
+
+ thumb_func_start MOD17_021DC8F8
+MOD17_021DC8F8: ; 0x021DC8F8
+ ldr r3, _021DC900 ; =0x020191A5
+ mov r1, #1
+ bx r3
+ nop
+_021DC900: .word 0x020191A5
+ thumb_func_end MOD17_021DC8F8
+
+ thumb_func_start MOD17_021DC904
+MOD17_021DC904: ; 0x021DC904
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ add r6, r2, #0
+ bl FUN_0202011C
+ add r3, r0, #0
+ add r2, sp, #0
+ ldmia r3!, {r0, r1}
+ add r7, r2, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r1, [sp]
+ lsl r0, r4, #0xc
+ add r0, r1, r0
+ str r0, [sp]
+ ldr r1, [sp, #4]
+ lsl r0, r6, #0xc
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ add r1, r7, #0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DC904
+
+ thumb_func_start MOD17_021DC940
+MOD17_021DC940: ; 0x021DC940
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021DC904
+ ldr r0, [r4, #0x10]
+ bl FUN_02011938
+ pop {r4, pc}
+ thumb_func_end MOD17_021DC940
+
+ thumb_func_start MOD17_021DC950
+MOD17_021DC950: ; 0x021DC950
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r6, r2, #0
+ mov r1, #1
+ add r5, r0, #0
+ tst r1, r6
+ beq _021DC96A
+ mov r2, #0x52
+ mov r1, #0
+ lsl r2, r2, #2
+ bl Call_FillMemWithValue
+_021DC96A:
+ mov r0, #2
+ tst r0, r6
+ beq _021DC978
+ ldr r1, [r4]
+ add r0, r5, #0
+ bl MOD17_021DCC00
+_021DC978:
+ mov r0, #4
+ add r1, r6, #0
+ tst r1, r0
+ beq _021DC99C
+ mov r1, #0x1b
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x1f
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ ldr r1, [r4]
+ add r0, #0x2c
+ mov r2, #2
+ mov r3, #0x13
+ bl MOD17_021DCC68
+_021DC99C:
+ mov r0, #8
+ tst r0, r6
+ beq _021DC9B0
+ add r0, r5, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ ldr r3, [r4, #0x10]
+ add r0, #0x38
+ bl MOD17_021DCE34
+_021DC9B0:
+ mov r0, #0x10
+ tst r0, r6
+ beq _021DC9CC
+ ldr r0, [r4]
+ str r0, [sp]
+ ldr r0, [r4, #0x20]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4, #8]
+ ldr r3, [r4, #0x1c]
+ add r0, #0xa0
+ bl MOD17_021DD074
+_021DC9CC:
+ mov r0, #0x20
+ tst r0, r6
+ beq _021DCA42
+ mov r0, #0x1b
+ str r0, [sp]
+ mov r2, #2
+ str r2, [sp, #4]
+ mov r0, #0x8b
+ str r0, [sp, #8]
+ mov r3, #1
+ str r3, [sp, #0xc]
+ add r0, #0xa9
+ ldr r1, [r4]
+ add r0, r5, r0
+ bl MOD17_021DCC68
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021DCA7C ; =0x0001020F
+ mov r1, #0x1a
+ str r0, [sp, #8]
+ mov r0, #0xff
+ str r0, [sp, #0xc]
+ add r0, #0x35
+ ldr r0, [r5, r0]
+ ldr r2, [r4, #0x14]
+ mov r3, #6
+ bl MOD17_021DCD80
+ mov r0, #0x48
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _021DCA7C ; =0x0001020F
+ mov r1, #0x1a
+ str r0, [sp, #8]
+ mov r0, #0xff
+ str r0, [sp, #0xc]
+ add r0, #0x35
+ ldr r0, [r5, r0]
+ ldr r2, [r4, #0x14]
+ ldr r3, [r4, #0x18]
+ bl MOD17_021DCD80
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ mov r2, #1
+ ldr r0, [r5, r0]
+ mov r1, #0
+ add r3, r2, #0
+ bl FUN_0200D0BC
+_021DCA42:
+ ldr r0, [r4, #4]
+ str r0, [r5, #0x30]
+ ldr r0, [r4, #8]
+ str r0, [r5, #0x34]
+ ldr r0, [r4]
+ ldr r1, [r4, #0xc]
+ bl MOD17_021DCC38
+ ldr r0, [r4, #0xc]
+ bl FUN_02025084
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r4, #0xc]
+ bl FUN_02024FF4
+ mov r1, #5
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add r0, r1, #0
+ sub r0, #8
+ ldr r0, [r5, r0]
+ sub r1, #8
+ orr r0, r6
+ str r0, [r5, r1]
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_021DCA7C: .word 0x0001020F
+ thumb_func_end MOD17_021DC950
+
+ thumb_func_start MOD17_021DCA80
+MOD17_021DCA80: ; 0x021DCA80
+ push {r4, lr}
+ mov r1, #0x4e
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r1, #2
+ tst r1, r2
+ beq _021DCAA0
+ bl MOD17_021DCCD8
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r0, #2
+ bic r2, r0
+ str r2, [r4, r1]
+_021DCAA0:
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ mov r0, #4
+ tst r0, r1
+ beq _021DCABE
+ ldr r0, [r4, #0x2c]
+ bl MOD17_021DCCE0
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r0, #4
+ bic r2, r0
+ str r2, [r4, r1]
+_021DCABE:
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ mov r0, #8
+ tst r0, r1
+ beq _021DCAE0
+ add r0, r4, #0
+ ldr r1, [r4, #0x34]
+ add r0, #0x38
+ bl MOD17_021DCF30
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r0, #8
+ bic r2, r0
+ str r2, [r4, r1]
+_021DCAE0:
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ mov r0, #0x10
+ tst r0, r1
+ beq _021DCB02
+ add r0, r4, #0
+ ldr r1, [r4, #0x34]
+ add r0, #0xa0
+ bl MOD17_021DD178
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r0, #0x10
+ bic r2, r0
+ str r2, [r4, r1]
+_021DCB02:
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r2, [r4, r0]
+ mov r1, #0x20
+ tst r1, r2
+ beq _021DCB22
+ sub r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD17_021DCCE0
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ mov r0, #0x20
+ bic r2, r0
+ str r2, [r4, r1]
+_021DCB22:
+ mov r2, #0x52
+ add r0, r4, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl Call_FillMemWithValue
+ pop {r4, pc}
+ thumb_func_end MOD17_021DCA80
+
+ thumb_func_start MOD17_021DCB30
+MOD17_021DCB30: ; 0x021DCB30
+ push {r3, lr}
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ ldr r2, [r0, r1]
+ mov r1, #0x10
+ tst r1, r2
+ beq _021DCB44
+ add r0, #0xa0
+ bl MOD17_021DD1AC
+_021DCB44:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCB30
+
+ thumb_func_start MOD17_021DCB48
+MOD17_021DCB48: ; 0x021DCB48
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ add r4, r1, #0
+ ldr r1, [r5, r0]
+ mov r0, #4
+ add r6, r2, #0
+ add r7, r3, #0
+ tst r0, r1
+ bne _021DCB64
+ bl ErrorHandling
+_021DCB64:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0xff
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x2c]
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD17_021DCCEC
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCB48
+
+ thumb_func_start MOD17_021DCB80
+MOD17_021DCB80: ; 0x021DCB80
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ add r4, r1, #0
+ ldr r1, [r5, r0]
+ mov r0, #4
+ add r6, r2, #0
+ add r7, r3, #0
+ tst r0, r1
+ bne _021DCB9C
+ bl ErrorHandling
+_021DCB9C:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r1, [r5, r0]
+ add r0, r0, #4
+ str r1, [sp, #8]
+ add r0, r5, r0
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x2c]
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD17_021DCD34
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DCB80
+
+ thumb_func_start MOD17_021DCBC0
+MOD17_021DCBC0: ; 0x021DCBC0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ mov r0, #0x51
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ pop {r4, pc}
+ thumb_func_end MOD17_021DCBC0
+
+ thumb_func_start MOD17_021DCBD8
+MOD17_021DCBD8: ; 0x021DCBD8
+ ldr r3, _021DCBE0 ; =MOD17_021DCEE8
+ add r0, #0x38
+ bx r3
+ nop
+_021DCBE0: .word MOD17_021DCEE8
+ thumb_func_end MOD17_021DCBD8
+
+ thumb_func_start MOD17_021DCBE4
+MOD17_021DCBE4: ; 0x021DCBE4
+ add r0, #0xbc
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DCBE4
+
+ thumb_func_start MOD17_021DCBEC
+MOD17_021DCBEC: ; 0x021DCBEC
+ add r0, #0xc0
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DCBEC
+
+ thumb_func_start MOD17_021DCBF4
+MOD17_021DCBF4: ; 0x021DCBF4
+ ldr r3, _021DCBFC ; =MOD17_021DD454
+ add r0, #0xd0
+ bx r3
+ nop
+_021DCBFC: .word MOD17_021DD454
+ thumb_func_end MOD17_021DCBF4
+
+ thumb_func_start MOD17_021DCC00
+MOD17_021DCC00: ; 0x021DCC00
+ push {r3, lr}
+ sub sp, #0x30
+ str r1, [sp]
+ mov r1, #0x19
+ str r1, [sp, #4]
+ mov r1, #0xe0
+ str r1, [sp, #8]
+ mov r1, #0xe1
+ str r1, [sp, #0xc]
+ mov r2, #0
+ mov r1, #0xe2
+ str r1, [sp, #0x10]
+ mov r1, #4
+ str r1, [sp, #0x1c]
+ mov r1, #1
+ str r1, [sp, #0x20]
+ mov r1, #0xe
+ str r1, [sp, #0x2c]
+ add r1, sp, #0
+ str r2, [sp, #0x14]
+ str r2, [sp, #0x18]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ bl MOD17_021DBD04
+ add sp, #0x30
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCC00
+
+ thumb_func_start MOD17_021DCC38
+MOD17_021DCC38: ; 0x021DCC38
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, r1, #0
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xe
+ mov r2, #1
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #5
+ add r3, r2, #0
+ bl FUN_0200CD68
+ mov r0, #4
+ mov r1, #0x40
+ mov r2, #0xe
+ bl FUN_02002EEC
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD17_021DCC38
+
+ thumb_func_start MOD17_021DCC68
+MOD17_021DCC68: ; 0x021DCC68
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r7, r1, #0
+ add r6, r3, #0
+ mov r0, #0xe
+ mov r1, #1
+ add r4, r2, #0
+ bl FUN_02018FF4
+ str r0, [r5]
+ bl FUN_0201901C
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x28]
+ lsl r3, r4, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x2c]
+ mov r2, #5
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x30]
+ lsr r3, r3, #0x18
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r1, [r5]
+ add r0, r7, #0
+ bl FUN_02019064
+ ldr r0, [r5]
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r0, [sp, #0x34]
+ cmp r0, #0
+ beq _021DCCCC
+ mov r2, #1
+ ldr r0, [r5]
+ mov r1, #0
+ add r3, r2, #0
+ bl FUN_0200D0BC
+_021DCCCC:
+ ldr r0, [r5]
+ bl FUN_020191D0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCC68
+
+ thumb_func_start MOD17_021DCCD8
+MOD17_021DCCD8: ; 0x021DCCD8
+ ldr r3, _021DCCDC ; =MOD17_021DBD4C
+ bx r3
+ .align 2, 0
+_021DCCDC: .word MOD17_021DBD4C
+ thumb_func_end MOD17_021DCCD8
+
+ thumb_func_start MOD17_021DCCE0
+MOD17_021DCCE0: ; 0x021DCCE0
+ ldr r3, _021DCCE8 ; =0x020191A5
+ mov r1, #1
+ bx r3
+ nop
+_021DCCE8: .word 0x020191A5
+ thumb_func_end MOD17_021DCCE0
+
+ thumb_func_start MOD17_021DCCEC
+MOD17_021DCCEC: ; 0x021DCCEC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ mov r1, #0xf
+ add r5, r0, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl FUN_02019620
+ ldr r0, [sp, #0x28]
+ add r1, r4, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x2c]
+ add r2, r6, #0
+ str r0, [sp, #4]
+ ldr r0, _021DCD30 ; =0x0001020F
+ add r3, r7, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ bl MOD17_021DCD80
+ mov r2, #1
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ add r3, r2, #0
+ bl FUN_0200D0BC
+ add r0, r4, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DCD30: .word 0x0001020F
+ thumb_func_end MOD17_021DCCEC
+
+ thumb_func_start MOD17_021DCD34
+MOD17_021DCD34: ; 0x021DCD34
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ mov r1, #0xf
+ add r5, r0, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl FUN_02019620
+ ldr r0, [sp, #0x28]
+ add r1, r4, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x2c]
+ add r2, r6, #0
+ str r0, [sp, #4]
+ ldr r0, _021DCD7C ; =0x0001020F
+ add r3, r7, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x34]
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ bl MOD17_021DCDD4
+ mov r2, #1
+ add r4, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ add r3, r2, #0
+ bl FUN_0200D0BC
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DCD7C: .word 0x0001020F
+ thumb_func_end MOD17_021DCD34
+
+ thumb_func_start MOD17_021DCD80
+MOD17_021DCD80: ; 0x021DCD80
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ add r4, r3, #0
+ mov r0, #0
+ mov r3, #0xd
+ bl FUN_0200A86C
+ add r5, r0, #0
+ bne _021DCD98
+ bl ErrorHandling
+_021DCD98:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0200A914
+ add r4, r0, #0
+ ldr r0, [sp, #0x24]
+ ldr r3, [sp, #0x20]
+ str r0, [sp]
+ ldr r0, [sp, #0x2c]
+ mov r1, #1
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x28]
+ add r2, r4, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ bl FUN_0201BDE0
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r5, #0
+ bl FUN_0200A8B8
+ add r0, r6, #0
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCD80
+
+ thumb_func_start MOD17_021DCDD4
+MOD17_021DCDD4: ; 0x021DCDD4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r4, [sp, #0x38]
+ add r7, r0, #0
+ ldr r0, [r4]
+ add r5, r1, #0
+ add r6, r2, #0
+ str r3, [sp, #0x10]
+ cmp r0, #0
+ beq _021DCDEC
+ bl ErrorHandling
+_021DCDEC:
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ mov r3, #0xd
+ bl FUN_0200A86C
+ add r5, r0, #0
+ bne _021DCE00
+ bl ErrorHandling
+_021DCE00:
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0
+ bl FUN_0200A914
+ str r0, [r4]
+ ldr r0, [sp, #0x2c]
+ ldr r3, [sp, #0x28]
+ str r0, [sp]
+ ldr r0, [sp, #0x34]
+ mov r1, #1
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ add r0, r7, #0
+ bl FUN_0201BDE0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DCDD4
+
+ thumb_func_start MOD17_021DCE34
+MOD17_021DCE34: ; 0x021DCE34
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x6c
+ add r5, r1, #0
+ mov r1, #0x67
+ str r1, [sp]
+ mov r1, #0xe1
+ str r1, [sp, #4]
+ mov r1, #0x66
+ str r1, [sp, #8]
+ mov r1, #0x65
+ str r1, [sp, #0xc]
+ mov r1, #2
+ str r1, [sp, #0x10]
+ mov r1, #0x7d
+ add r4, r2, #0
+ lsl r1, r1, #4
+ str r3, [sp, #0x1c]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ add r1, r4, #0
+ mov r2, #0xe
+ mov r3, #0x19
+ bl MOD17_021DCF54
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0
+ add r2, sp, #0x48
+ mov r3, #0
+ bl MOD17_021DD014
+ add r0, sp, #0x48
+ str r0, [sp, #0x2c]
+ mov r0, #2
+ str r0, [sp, #0x40]
+ mov r0, #0
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x3c]
+ mov r0, #0xe
+ str r0, [sp, #0x44]
+ mov r0, #0x68
+ ldr r7, [sp, #0x24]
+ str r5, [sp, #0x28]
+ str r0, [sp, #0x20]
+_021DCE8A:
+ ldr r0, [sp, #0x20]
+ mov r6, #0
+ str r0, [sp, #0x34]
+ lsl r1, r0, #0xc
+ mov r0, #2
+ lsl r0, r0, #0x14
+ str r1, [sp, #0x34]
+ add r0, r1, r0
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x18]
+ lsl r1, r7, #2
+ mov r4, #0x26
+ add r5, r0, r1
+_021DCEA4:
+ str r4, [sp, #0x30]
+ lsl r0, r4, #0xc
+ str r0, [sp, #0x30]
+ add r0, sp, #0x28
+ bl FUN_0201FF84
+ mov r1, #1
+ str r0, [r5, #0x10]
+ bl FUN_02020130
+ ldr r0, [sp, #0x1c]
+ add r1, r6, r7
+ cmp r1, r0
+ blt _021DCEC8
+ ldr r0, [r5, #0x10]
+ mov r1, #0
+ bl FUN_020200A0
+_021DCEC8:
+ add r6, r6, #1
+ add r4, #0x12
+ add r5, r5, #4
+ cmp r6, #0xa
+ blt _021DCEA4
+ ldr r0, [sp, #0x20]
+ add r7, #0xa
+ add r0, #0x12
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x24]
+ add r0, r0, #1
+ str r0, [sp, #0x24]
+ cmp r0, #2
+ blt _021DCE8A
+ add sp, #0x6c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DCE34
+
+ thumb_func_start MOD17_021DCEE8
+MOD17_021DCEE8: ; 0x021DCEE8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r6, [r7, #0x60]
+ add r5, r1, #0
+ cmp r6, r5
+ bge _021DCF0E
+ cmp r6, r5
+ bge _021DCF2C
+ lsl r0, r6, #2
+ add r4, r7, r0
+_021DCEFC:
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl FUN_02020130
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, r5
+ blt _021DCEFC
+ b _021DCF2C
+_021DCF0E:
+ cmp r6, r5
+ ble _021DCF2C
+ sub r6, r6, #1
+ cmp r6, r5
+ blt _021DCF2C
+ lsl r0, r6, #2
+ add r4, r7, r0
+_021DCF1C:
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_02020130
+ sub r6, r6, #1
+ sub r4, r4, #4
+ cmp r6, r5
+ bge _021DCF1C
+_021DCF2C:
+ str r5, [r7, #0x60]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DCEE8
+
+ thumb_func_start MOD17_021DCF30
+MOD17_021DCF30: ; 0x021DCF30
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r4, #0
+ add r5, r6, #0
+_021DCF3A:
+ ldr r0, [r5, #0x10]
+ bl FUN_0201FFC8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x14
+ blt _021DCF3A
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD17_021DCFE0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCF30
+
+ thumb_func_start MOD17_021DCF54
+MOD17_021DCF54: ; 0x021DCF54
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r2, #0
+ ldr r7, [sp, #0x3c]
+ ldr r2, [sp, #0x28]
+ add r5, r0, #0
+ add r0, r7, r2
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ add r4, r1, #0
+ str r6, [sp, #8]
+ ldr r0, [r4]
+ str r3, [sp, #0x10]
+ add r1, r3, #0
+ mov r3, #0
+ bl FUN_02008F34
+ str r0, [r5]
+ bl FUN_02009B04
+ ldr r0, [r5]
+ bl FUN_02009474
+ ldr r2, [sp, #0x2c]
+ ldr r1, [sp, #0x10]
+ add r0, r7, r2
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x38]
+ mov r3, #0
+ str r0, [sp, #8]
+ str r6, [sp, #0xc]
+ ldr r0, [r4, #4]
+ bl FUN_02008FEC
+ str r0, [r5, #4]
+ bl FUN_02009D68
+ ldr r0, [r5, #4]
+ bl FUN_02009474
+ ldr r2, [sp, #0x30]
+ ldr r1, [sp, #0x10]
+ add r0, r7, r2
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldr r0, [r4, #8]
+ mov r3, #0
+ bl FUN_020090AC
+ ldr r2, [sp, #0x34]
+ str r0, [r5, #8]
+ add r0, r7, r2
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldr r0, [r4, #0xc]
+ ldr r1, [sp, #0x10]
+ mov r3, #0
+ bl FUN_020090AC
+ str r0, [r5, #0xc]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DCF54
+
+ thumb_func_start MOD17_021DCFE0
+MOD17_021DCFE0: ; 0x021DCFE0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ bl FUN_02009C0C
+ ldr r0, [r5, #4]
+ bl FUN_02009E04
+ ldr r0, [r4]
+ ldr r1, [r5]
+ bl FUN_02009490
+ ldr r0, [r4, #4]
+ ldr r1, [r5, #4]
+ bl FUN_02009490
+ ldr r0, [r4, #8]
+ ldr r1, [r5, #8]
+ bl FUN_02009490
+ ldr r0, [r4, #0xc]
+ ldr r1, [r5, #0xc]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DCFE0
+
+ thumb_func_start MOD17_021DD014
+MOD17_021DD014: ; 0x021DD014
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ add r7, r2, #0
+ add r6, r3, #0
+ bl FUN_02009530
+ str r0, [sp, #0x2c]
+ ldr r0, [r5, #4]
+ bl FUN_02009530
+ str r0, [sp, #0x30]
+ ldr r0, [r5, #8]
+ bl FUN_02009530
+ str r0, [sp, #0x34]
+ ldr r0, [r5, #0xc]
+ bl FUN_02009530
+ str r0, [sp]
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r6, [sp, #0x10]
+ ldr r1, [r4]
+ ldr r2, [sp, #0x30]
+ str r1, [sp, #0x14]
+ ldr r1, [r4, #4]
+ ldr r3, [sp, #0x34]
+ str r1, [sp, #0x18]
+ ldr r1, [r4, #8]
+ str r1, [sp, #0x1c]
+ ldr r1, [r4, #0xc]
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ ldr r1, [sp, #0x2c]
+ add r0, r7, #0
+ bl FUN_02008AA4
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD014
+
+ thumb_func_start MOD17_021DD074
+MOD17_021DD074: ; 0x021DD074
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x60
+ add r4, r1, #0
+ mov r1, #0xe5
+ str r1, [sp]
+ mov r1, #0xe6
+ str r1, [sp, #4]
+ mov r1, #0xe4
+ str r1, [sp, #8]
+ mov r1, #0xe3
+ str r1, [sp, #0xc]
+ mov r1, #2
+ str r1, [sp, #0x10]
+ ldr r1, _021DD170 ; =0x00000BB8
+ add r5, r2, #0
+ str r3, [sp, #0x18]
+ str r1, [sp, #0x14]
+ add r7, r0, #0
+ add r1, r5, #0
+ mov r2, #0xe
+ mov r3, #0x19
+ bl MOD17_021DCF54
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, sp, #0x3c
+ mov r3, #0
+ bl MOD17_021DD014
+ add r0, sp, #0x3c
+ str r0, [sp, #0x20]
+ mov r2, #2
+ mov r0, #0xe
+ mov r1, #0x3a
+ str r0, [sp, #0x38]
+ lsl r1, r1, #0xc
+ lsl r0, r2, #0x14
+ mov r6, #0
+ str r4, [sp, #0x1c]
+ str r1, [sp, #0x28]
+ add r0, r1, r0
+ str r2, [sp, #0x34]
+ str r6, [sp, #0x30]
+ str r0, [sp, #0x28]
+ mov r4, #0x67
+ add r5, r7, #0
+_021DD0D0:
+ str r4, [sp, #0x24]
+ lsl r0, r4, #0xc
+ str r0, [sp, #0x24]
+ add r0, sp, #0x1c
+ bl FUN_0201FF84
+ str r0, [r5, #0x10]
+ add r6, r6, #1
+ add r4, #0x18
+ add r5, r5, #4
+ cmp r6, #2
+ blt _021DD0D0
+ ldr r0, [sp, #0x18]
+ mov r1, #0x1e
+ str r0, [r7, #0x1c]
+ mul r1, r0
+ str r1, [r7, #0x20]
+ ldr r1, [sp, #0x7c]
+ str r1, [r7, #0x2c]
+ str r0, [r1]
+ ldr r1, [r7, #0x2c]
+ str r0, [r1, #8]
+ add r0, r7, #0
+ mov r1, #0
+ add r0, #0x90
+ str r1, [r0]
+ add r0, r7, #0
+ bl MOD17_021DD204
+ mov r0, #0xe
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #0xc1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ ldr r1, [sp, #0x78]
+ add r0, #0x18
+ mov r2, #0xa
+ mov r3, #8
+ bl MOD17_021DCC68
+ ldr r0, [r7, #0x18]
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #4
+ ldr r0, _021DD174 ; =0x00010200
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ mov r2, #0xff
+ str r2, [sp, #0xc]
+ ldr r0, [r7, #0x18]
+ mov r1, #0x1a
+ add r2, #0x52
+ bl MOD17_021DCD80
+ mov r0, #0x48
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, _021DD174 ; =0x00010200
+ mov r2, #0xff
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r7, #0x18]
+ mov r1, #0x1a
+ add r2, #0x52
+ mov r3, #5
+ bl MOD17_021DCD80
+ ldr r0, [r7, #0x18]
+ bl FUN_020191D0
+ add sp, #0x60
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DD170: .word 0x00000BB8
+_021DD174: .word 0x00010200
+ thumb_func_end MOD17_021DD074
+
+ thumb_func_start MOD17_021DD178
+MOD17_021DD178: ; 0x021DD178
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x24]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _021DD188
+ bl FUN_0200CAB4
+_021DD188:
+ ldr r0, [r5, #0x28]
+ cmp r0, #0
+ beq _021DD192
+ bl FUN_0200CAB4
+_021DD192:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD17_021DCFE0
+ ldr r0, [r5, #0x18]
+ bl MOD17_021DCCE0
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #0x94
+ bl Call_FillMemWithValue
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DD178
+
+ thumb_func_start MOD17_021DD1AC
+MOD17_021DD1AC: ; 0x021DD1AC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021DD27C
+ ldr r0, [r4, #0x20]
+ mov r1, #0x1e
+ bl _s32_div_f
+ add r1, r0, #0
+ ldr r0, [r4, #0x2c]
+ bl FUN_02083A34
+ add r0, r4, #0
+ bl MOD17_021DD1DC
+ add r0, r4, #0
+ bl MOD17_021DD204
+ add r4, #0x30
+ add r0, r4, #0
+ bl MOD17_021DD3BC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD1AC
+
+ thumb_func_start MOD17_021DD1DC
+MOD17_021DD1DC: ; 0x021DD1DC
+ push {r3, lr}
+ ldr r1, [r0, #0x2c]
+ ldr r2, [r1]
+ ldr r1, [r0, #0x1c]
+ cmp r1, r2
+ beq _021DD1FC
+ str r2, [r0, #0x1c]
+ cmp r2, #0xa
+ bgt _021DD1FC
+ add r1, r0, #0
+ add r1, #0x30
+ bl MOD17_021DD2E0
+ ldr r0, _021DD200 ; =0x00000683
+ bl FUN_020054C8
+_021DD1FC:
+ pop {r3, pc}
+ nop
+_021DD200: .word 0x00000683
+ thumb_func_end MOD17_021DD1DC
+
+ thumb_func_start MOD17_021DD204
+MOD17_021DD204: ; 0x021DD204
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ ldr r0, [r6, #0x1c]
+ mov r1, #1
+ str r0, [sp]
+ mov r0, #0xa
+ add r4, r1, #0
+ mul r4, r0
+ mov r7, #0
+ add r5, r6, #0
+_021DD21A:
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl _s32_div_f
+ str r0, [sp, #4]
+ cmp r0, #0xa
+ ble _021DD22C
+ bl ErrorHandling
+_021DD22C:
+ ldr r0, [r5, #0x10]
+ ldr r1, [sp, #4]
+ bl FUN_02020130
+ ldr r0, [sp, #4]
+ add r1, r0, #0
+ ldr r0, [sp]
+ mul r1, r4
+ sub r0, r0, r1
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0xa
+ bl _s32_div_f
+ add r4, r0, #0
+ add r0, r6, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021DD26E
+ ldr r0, [r6, #0x1c]
+ cmp r0, #0xa
+ bgt _021DD26E
+ ldr r0, [r5, #0x10]
+ mov r1, #1
+ bl FUN_0202027C
+ cmp r7, #1
+ bne _021DD26E
+ add r1, r6, #0
+ add r1, #0x90
+ mov r0, #1
+ str r0, [r1]
+_021DD26E:
+ add r7, r7, #1
+ add r5, r5, #4
+ cmp r7, #2
+ blt _021DD21A
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD204
+
+ thumb_func_start MOD17_021DD27C
+MOD17_021DD27C: ; 0x021DD27C
+ ldr r1, [r0, #0x20]
+ sub r1, r1, #1
+ bmi _021DD284
+ str r1, [r0, #0x20]
+_021DD284:
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DD27C
+
+ thumb_func_start MOD17_021DD288
+MOD17_021DD288: ; 0x021DD288
+ str r1, [r0]
+ str r1, [r0, #4]
+ sub r1, r2, r1
+ str r1, [r0, #8]
+ str r3, [r0, #0x10]
+ mov r1, #0
+ str r1, [r0, #0xc]
+ bx lr
+ thumb_func_end MOD17_021DD288
+
+ thumb_func_start MOD17_021DD298
+MOD17_021DD298: ; 0x021DD298
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, [r4, #0xc]
+ ldr r0, [r4, #8]
+ lsl r2, r2, #0xc
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ ldr r1, [r4, #0x10]
+ lsl r1, r1, #0xc
+ bl FX_Div
+ ldr r1, [r4, #4]
+ add r0, r0, r1
+ str r0, [r4]
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ add r0, r0, #1
+ cmp r0, r1
+ bgt _021DD2D8
+ str r0, [r4, #0xc]
+ mov r0, #0
+ pop {r4, pc}
+_021DD2D8:
+ str r1, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD298
+
+ thumb_func_start MOD17_021DD2E0
+MOD17_021DD2E0: ; 0x021DD2E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r0, [sp]
+ str r1, [sp, #4]
+ mov r1, #0x3a
+ mov r0, #2
+ lsl r1, r1, #0xc
+ lsl r0, r0, #0x14
+ ldr r4, [sp, #4]
+ str r1, [sp, #0x10]
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ ldr r6, [sp]
+ mov r7, #0
+ mov r5, #0x67
+ str r0, [sp, #8]
+_021DD302:
+ ldr r0, [r6, #0x10]
+ mov r1, #2
+ str r0, [r4, #4]
+ bl FUN_020200EC
+ ldr r2, [sp, #8]
+ str r5, [sp, #0xc]
+ lsl r0, r5, #0xc
+ add r2, #0xc
+ add r3, sp, #0xc
+ str r0, [sp, #0xc]
+ ldmia r3!, {r0, r1}
+ str r2, [sp, #8]
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r7, r7, #1
+ str r0, [r2]
+ add r6, r6, #4
+ add r4, r4, #4
+ add r5, #0x18
+ cmp r7, #2
+ blt _021DD302
+ ldr r0, [sp]
+ ldr r1, [r0, #0x1c]
+ mov r0, #0xa
+ sub r0, r0, r1
+ cmp r0, #0
+ ble _021DD35C
+ lsl r0, r0, #0xc
+ ldr r2, _021DD3B8 ; =0x00000266
+ asr r1, r0, #0x1f
+ mov r3, #0
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r4, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r4, #0xc
+ orr r1, r0
+ lsl r0, r2, #1
+ add r4, r1, r0
+ b _021DD360
+_021DD35C:
+ mov r4, #1
+ lsl r4, r4, #0xc
+_021DD360:
+ ldr r0, [sp, #4]
+ mov r2, #1
+ add r0, #0x24
+ add r1, r4, #0
+ lsl r2, r2, #0xc
+ mov r3, #0x10
+ bl MOD17_021DD288
+ mov r2, #6
+ asr r1, r4, #0x1f
+ add r0, r4, #0
+ lsl r2, r2, #0xe
+ mov r3, #0
+ bl _ll_mul
+ mov r3, #2
+ mov r2, #0
+ lsl r3, r3, #0xa
+ add r3, r0, r3
+ adc r1, r2
+ lsl r0, r1, #0x14
+ lsr r1, r3, #0xc
+ orr r1, r0
+ mov r0, #6
+ lsl r0, r0, #0xe
+ sub r4, r1, r0
+ ldr r0, [sp, #4]
+ add r1, r4, #0
+ add r0, #0x38
+ mov r3, #0x10
+ bl MOD17_021DD288
+ ldr r0, [sp, #4]
+ add r1, r4, #0
+ add r0, #0x4c
+ mov r2, #0
+ mov r3, #0x10
+ bl MOD17_021DD288
+ ldr r0, [sp, #4]
+ mov r1, #1
+ str r1, [r0]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DD3B8: .word 0x00000266
+ thumb_func_end MOD17_021DD2E0
+
+ thumb_func_start MOD17_021DD3BC
+MOD17_021DD3BC: ; 0x021DD3BC
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _021DD44E
+ add r0, r5, #0
+ add r0, #0x24
+ bl MOD17_021DD298
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0x38
+ bl MOD17_021DD298
+ add r0, r5, #0
+ add r0, #0x4c
+ bl MOD17_021DD298
+ ldr r0, [r5, #0x24]
+ add r1, sp, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x24]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x24]
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #4]
+ bl FUN_02020064
+ ldr r0, [r5, #8]
+ add r1, sp, #0xc
+ bl FUN_02020064
+ add r6, r5, #0
+ add r6, #0xc
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ ldr r1, [sp]
+ ldr r0, [r5, #0x38]
+ sub r0, r1, r0
+ str r0, [sp]
+ ldr r1, [sp, #4]
+ ldr r0, [r5, #0x4c]
+ sub r0, r1, r0
+ str r0, [sp, #4]
+ ldr r0, [r5, #4]
+ add r1, r2, #0
+ bl FUN_02020044
+ add r6, r5, #0
+ add r6, #0x18
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ ldr r1, [sp, #4]
+ ldr r0, [r5, #0x4c]
+ sub r0, r1, r0
+ str r0, [sp, #4]
+ ldr r0, [r5, #8]
+ add r1, r2, #0
+ bl FUN_02020044
+ cmp r4, #0
+ beq _021DD44E
+ mov r0, #0
+ str r0, [r5]
+_021DD44E:
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD3BC
+
+ thumb_func_start MOD17_021DD454
+MOD17_021DD454: ; 0x021DD454
+ ldr r0, [r0]
+ cmp r0, #1
+ beq _021DD45E
+ mov r0, #1
+ bx lr
+_021DD45E:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DD454
+
+ thumb_func_start MOD17_021DD464
+MOD17_021DD464: ; 0x021DD464
+ push {r3, lr}
+ sub sp, #0x10
+ add r3, r1, #0
+ stmia r0!, {r1}
+ add r3, #0x48
+ str r3, [sp]
+ ldr r1, [r1, #0x74]
+ lsl r1, r1, #2
+ add r1, #0x89
+ str r1, [sp, #4]
+ mov r1, #0x10
+ str r1, [sp, #8]
+ add r1, sp, #0
+ str r2, [sp, #0xc]
+ bl MOD17_021DBD68
+ add sp, #0x10
+ pop {r3, pc}
+ thumb_func_end MOD17_021DD464
+
+ thumb_func_start MOD17_021DD488
+MOD17_021DD488: ; 0x021DD488
+ ldr r3, _021DD490 ; =MOD17_021DBD80
+ add r0, r0, #4
+ mov r1, #1
+ bx r3
+ .align 2, 0
+_021DD490: .word MOD17_021DBD80
+ thumb_func_end MOD17_021DD488
+
+ thumb_func_start MOD17_021DD494
+MOD17_021DD494: ; 0x021DD494
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r4, #4
+ bl MOD17_021DBDE8
+ mov r1, #0x1c
+ mov r0, #0
+_021DD4A2:
+ strb r0, [r4]
+ add r4, r4, #1
+ sub r1, r1, #1
+ bne _021DD4A2
+ pop {r4, pc}
+ thumb_func_end MOD17_021DD494
+
+ thumb_func_start MOD17_021DD4AC
+MOD17_021DD4AC: ; 0x021DD4AC
+ push {r3, r4, lr}
+ sub sp, #0x6c
+ add r2, r0, #0
+ add r4, r1, #0
+ add r0, sp, #0
+ add r1, r2, #0
+ bl MOD17_021DD9E8
+ add r0, sp, #0
+ add r1, r4, #0
+ bl MOD17_021DD9FC
+ add r0, sp, #0
+ bl MOD17_021DD6DC
+ add sp, #0x6c
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD4AC
+
+ thumb_func_start MOD17_021DD4D0
+MOD17_021DD4D0: ; 0x021DD4D0
+ push {r3, r4, lr}
+ sub sp, #0x6c
+ add r2, r0, #0
+ add r4, r1, #0
+ add r0, sp, #0
+ add r1, r2, #0
+ bl MOD17_021DD9E8
+ add r0, sp, #0
+ add r1, r4, #0
+ bl MOD17_021DDA44
+ add r0, sp, #0
+ bl MOD17_021DD6DC
+ add sp, #0x6c
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD4D0
+
+ thumb_func_start MOD17_021DD4F4
+MOD17_021DD4F4: ; 0x021DD4F4
+ push {r3, r4, lr}
+ sub sp, #0x6c
+ add r2, r0, #0
+ add r4, r1, #0
+ add r0, sp, #0
+ add r1, r2, #0
+ bl MOD17_021DD9E8
+ add r0, sp, #0
+ add r1, r4, #0
+ bl MOD17_021DDA44
+ add r0, sp, #0
+ bl MOD17_021DD778
+ add sp, #0x6c
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD4F4
+
+ thumb_func_start MOD17_021DD518
+MOD17_021DD518: ; 0x021DD518
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x95
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #1
+ bne _021DD52E
+ sub r0, #0x48
+ add r0, r4, r0
+ bl MOD17_021DD488
+_021DD52E:
+ mov r0, #0x96
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021DD53E
+ add r0, r4, #0
+ bl MOD17_021DD838
+_021DD53E:
+ pop {r4, pc}
+ thumb_func_end MOD17_021DD518
+
+ thumb_func_start MOD17_021DD540
+MOD17_021DD540: ; 0x021DD540
+ push {r4, lr}
+ mov r1, #0x95
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ cmp r1, #0
+ beq _021DD552
+ bl MOD17_021DD984
+_021DD552:
+ add r0, r4, #0
+ bl MOD17_021DD968
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ bl MOD17_021D750C
+ mov r0, #6
+ mov r1, #0
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ sub r0, #8
+ add r0, r4, r0
+ bl MOD17_021DBA1C
+ add r0, r4, #0
+ bl MOD17_021DD86C
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD540
+
+ thumb_func_start MOD17_021DD58C
+MOD17_021DD58C: ; 0x021DD58C
+ ldr r3, _021DD590 ; =MOD17_021D7C1C
+ bx r3
+ .align 2, 0
+_021DD590: .word MOD17_021D7C1C
+ thumb_func_end MOD17_021DD58C
+
+ thumb_func_start MOD17_021DD594
+MOD17_021DD594: ; 0x021DD594
+ mov r2, #0x96
+ lsl r2, r2, #2
+ str r1, [r0, r2]
+ bx lr
+ thumb_func_end MOD17_021DD594
+
+ thumb_func_start MOD17_021DD59C
+MOD17_021DD59C: ; 0x021DD59C
+ str r1, [r0, #0x1c]
+ bx lr
+ thumb_func_end MOD17_021DD59C
+
+ thumb_func_start MOD17_021DD5A0
+MOD17_021DD5A0: ; 0x021DD5A0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r2, #0
+ mov r2, #0x61
+ add r4, r1, #0
+ lsl r2, r2, #2
+ add r5, r0, #0
+ add r1, r2, #0
+ add r0, r5, r2
+ str r6, [sp]
+ add r1, #0xac
+ add r2, #0xb0
+ ldr r1, [r5, r1]
+ ldr r2, [r5, r2]
+ add r3, r4, #0
+ bl MOD17_021DA140
+ mov r0, #0x95
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021DD5E8
+ mov r3, #0x88
+ ldr r0, [r5, #0x38]
+ mov r1, #2
+ mov r2, #0
+ sub r3, r3, r4
+ bl FUN_020179E0
+ mov r3, #0x10
+ ldr r0, [r5, #0x38]
+ mov r1, #2
+ mov r2, #3
+ sub r3, r3, r6
+ bl FUN_020179E0
+_021DD5E8:
+ mov r0, #0x23
+ lsl r0, r0, #4
+ str r4, [r5, r0]
+ add r0, r0, #4
+ str r6, [r5, r0]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD5A0
+
+ thumb_func_start MOD17_021DD5F8
+MOD17_021DD5F8: ; 0x021DD5F8
+ mov r3, #0x8e
+ lsl r3, r3, #2
+ str r1, [r0, r3]
+ add r1, r3, #4
+ str r2, [r0, r1]
+ bx lr
+ thumb_func_end MOD17_021DD5F8
+
+ thumb_func_start MOD17_021DD604
+MOD17_021DD604: ; 0x021DD604
+ mov r2, #9
+ lsl r2, r2, #6
+ strh r1, [r0, r2]
+ bx lr
+ thumb_func_end MOD17_021DD604
+
+ thumb_func_start MOD17_021DD60C
+MOD17_021DD60C: ; 0x021DD60C
+ push {r3, r4}
+ mov r4, #0x91
+ lsl r4, r4, #2
+ str r1, [r0, r4]
+ add r1, r4, #4
+ str r2, [r0, r1]
+ add r4, #8
+ str r3, [r0, r4]
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD17_021DD60C
+
+ thumb_func_start MOD17_021DD620
+MOD17_021DD620: ; 0x021DD620
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0x7f
+ lsl r0, r0, #2
+ add r4, r1, #0
+ add r6, r2, #0
+ add r0, r5, r0
+ add r1, sp, #8
+ add r2, sp, #4
+ bl MOD17_021DB878
+ mov r0, #0x61
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD17_021DA348
+ mov r0, #0x23
+ lsl r0, r0, #4
+ ldr r1, [sp, #0x10]
+ ldr r2, [r5, r0]
+ sub r1, r4, r1
+ add r0, r0, #4
+ add r7, r2, r1
+ ldr r1, [r5, r0]
+ ldr r0, [sp, #0xc]
+ sub r0, r6, r0
+ add r0, r1, r0
+ str r0, [sp]
+ ldr r2, [sp]
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD17_021DD5A0
+ ldr r2, [sp]
+ add r0, r5, #0
+ sub r1, r4, r7
+ sub r2, r6, r2
+ bl MOD17_021DD5F8
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DD620
+
+ thumb_func_start MOD17_021DD678
+MOD17_021DD678: ; 0x021DD678
+ push {r4, r5, r6, lr}
+ add r4, r2, #0
+ mov r2, #0x92
+ add r5, r0, #0
+ mov r0, #0x28
+ lsl r2, r2, #2
+ sub r0, r0, r3
+ ldr r2, [r5, r2]
+ lsl r0, r0, #0xc
+ add r6, r1, #0
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ add r2, r0, #0
+ add r0, r5, #0
+ mov r5, #2
+ add r3, r1, #0
+ add r1, r6, #0
+ mov r6, #0
+ lsl r5, r5, #0xa
+ add r5, r2, r5
+ adc r3, r6
+ lsl r2, r3, #0x14
+ lsr r3, r5, #0xc
+ orr r3, r2
+ asr r2, r3, #0xc
+ sub r2, r4, r2
+ bl MOD17_021DD620
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD678
+
+ thumb_func_start MOD17_021DD6B8
+MOD17_021DD6B8: ; 0x021DD6B8
+ mov r2, #0x25
+ lsl r2, r2, #4
+ strh r1, [r0, r2]
+ sub r2, #0xcc
+ ldr r3, _021DD6C8 ; =MOD17_021DA3D8
+ add r0, r0, r2
+ bx r3
+ nop
+_021DD6C8: .word MOD17_021DA3D8
+ thumb_func_end MOD17_021DD6B8
+
+ thumb_func_start MOD17_021DD6CC
+MOD17_021DD6CC: ; 0x021DD6CC
+ mov r2, #0x61
+ lsl r2, r2, #2
+ ldr r3, _021DD6D8 ; =MOD17_021DA1DC
+ add r0, r0, r2
+ bx r3
+ nop
+_021DD6D8: .word MOD17_021DA1DC
+ thumb_func_end MOD17_021DD6CC
+
+ thumb_func_start MOD17_021DD6DC
+MOD17_021DD6DC: ; 0x021DD6DC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #0x97
+ ldr r0, [r5, #0x68]
+ lsl r1, r1, #2
+ bl FUN_02016998
+ mov r2, #0x97
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x8b
+ ldr r1, [r5, #0x68]
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, [r5, #0x68]
+ bl FUN_020669C0
+ mov r1, #0x8a
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r5]
+ ldr r1, [r4, r1]
+ bl FUN_02027CB8
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD7F4
+ ldr r1, [r5, #0x58]
+ ldr r2, [r5, #0x68]
+ add r0, r4, #0
+ bl MOD17_021D7B94
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r2, [r5, #0x68]
+ add r0, r4, r0
+ mov r1, #0x15
+ bl MOD17_021DB9F4
+ ldr r1, [r5, #0x68]
+ mov r0, #0x14
+ bl MOD17_021D74E0
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD88C
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD954
+ mov r1, #0x83
+ lsl r1, r1, #2
+ add r0, r4, r1
+ sub r1, #0x88
+ ldr r2, [r5, #0x68]
+ add r1, r4, r1
+ bl MOD17_021DD464
+ mov r0, #0x95
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r0, #4
+ str r1, [r4, r0]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD994
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DD6DC
+
+ thumb_func_start MOD17_021DD778
+MOD17_021DD778: ; 0x021DD778
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #0x97
+ ldr r0, [r5, #0x68]
+ lsl r1, r1, #2
+ bl FUN_02016998
+ mov r2, #0x97
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x8b
+ ldr r1, [r5, #0x68]
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, [r5, #0x68]
+ bl FUN_020669C0
+ mov r1, #0x8a
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r5]
+ ldr r1, [r4, r1]
+ bl FUN_02027CB8
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD7F4
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r2, [r5, #0x68]
+ add r0, r4, r0
+ mov r1, #0x15
+ bl MOD17_021DB9F4
+ ldr r1, [r5, #0x68]
+ mov r0, #0x14
+ bl MOD17_021D74E0
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD88C
+ mov r0, #0x95
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r1, #1
+ add r0, r0, #4
+ str r1, [r4, r0]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD17_021DD994
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD17_021DD778
+
+ thumb_func_start MOD17_021DD7F4
+MOD17_021DD7F4: ; 0x021DD7F4
+ push {r3, r4, r5, lr}
+ sub sp, #0x28
+ add r4, r1, #0
+ ldr r1, _021DD834 ; =0x000002CE
+ add r5, r0, #0
+ str r1, [sp]
+ mov r1, #0x76
+ str r1, [sp, #4]
+ mov r1, #0x13
+ str r1, [sp, #8]
+ ldr r1, [r4, #0x68]
+ str r1, [sp, #0xc]
+ ldr r2, [r4, #0x68]
+ add r1, sp, #0
+ bl MOD17_021D7B68
+ ldr r3, [r4, #0x68]
+ add r0, r5, #0
+ add r1, sp, #0x10
+ add r2, r4, #0
+ bl MOD17_021DDA8C
+ add r0, r5, #0
+ add r1, sp, #0x10
+ bl MOD17_021D78A0
+ add r0, sp, #0x10
+ bl MOD17_021D7A24
+ add sp, #0x28
+ pop {r3, r4, r5, pc}
+ nop
+_021DD834: .word 0x000002CE
+ thumb_func_end MOD17_021DD7F4
+
+ thumb_func_start MOD17_021DD838
+MOD17_021DD838: ; 0x021DD838
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r3, #0x91
+ lsl r3, r3, #2
+ add r1, r0, r3
+ str r1, [sp]
+ add r1, r3, #0
+ sub r1, #0x14
+ ldr r2, [r0, r1]
+ add r1, r3, #0
+ sub r1, #0xc
+ ldr r1, [r0, r1]
+ add r1, r2, r1
+ add r2, r3, #0
+ sub r2, #0x10
+ ldr r4, [r0, r2]
+ add r2, r3, #0
+ sub r2, #8
+ sub r3, r3, #4
+ ldr r2, [r0, r2]
+ ldrh r3, [r0, r3]
+ add r2, r4, r2
+ bl MOD17_021D7C28
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD17_021DD838
+
+ thumb_func_start MOD17_021DD86C
+MOD17_021DD86C: ; 0x021DD86C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD17_021D78BC
+ add r0, r4, #0
+ bl MOD17_021D7BE4
+ mov r0, #0x95
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021DD88A
+ add r0, r4, #0
+ bl MOD17_021D7C10
+_021DD88A:
+ pop {r4, pc}
+ thumb_func_end MOD17_021DD86C
+
+ thumb_func_start MOD17_021DD88C
+MOD17_021DD88C: ; 0x021DD88C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ add r5, r0, #0
+ add r2, sp, #0x28
+ mov r0, #0
+ add r6, r1, #0
+ add r3, r2, #0
+ add r1, r0, #0
+ stmia r3!, {r0, r1}
+ stmia r3!, {r0, r1}
+ stmia r3!, {r0, r1}
+ stmia r3!, {r0, r1}
+ str r0, [r3]
+ ldr r0, [r5]
+ str r0, [sp, #0x28]
+ ldr r0, [r5, #4]
+ str r0, [sp, #0x2c]
+ ldr r0, [r5, #0x10]
+ str r0, [sp, #0x30]
+ ldr r0, [r5, #0x28]
+ str r0, [sp, #0x34]
+ ldr r0, [r5, #0x20]
+ str r0, [sp, #0x38]
+ ldr r0, [r5, #0x38]
+ str r0, [sp, #0x3c]
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r1, [r5, r0]
+ str r1, [sp, #0x40]
+ add r1, r0, #0
+ sub r1, #8
+ add r1, r5, r1
+ str r1, [sp, #0x44]
+ mov r1, #0x15
+ add r0, r0, #4
+ str r1, [sp, #0x48]
+ add r0, r5, r0
+ add r1, r2, #0
+ bl MOD17_021D9F80
+ ldr r0, [r6]
+ bl FUN_02027CA8
+ add r7, r0, #0
+ ldr r0, [r6]
+ bl FUN_02027CB0
+ add r4, r0, #0
+ ldr r0, [r6]
+ bl FUN_02027CA0
+ str r4, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r6, #0x68]
+ mov r1, #0x61
+ lsl r1, r1, #2
+ str r0, [sp, #8]
+ add r0, r5, r1
+ add r1, #0xa4
+ ldr r1, [r5, r1]
+ add r2, sp, #0x18
+ add r3, r7, #0
+ bl MOD17_021D9FF0
+ ldr r0, [r6, #0x54]
+ mov r7, #0
+ cmp r0, #0
+ ble _021DD950
+ add r4, r6, #0
+_021DD916:
+ ldr r0, [r4, #4]
+ bl FUN_02027CF8
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #4]
+ bl FUN_02027CFC
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ bl FUN_02027D00
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #4]
+ bl FUN_02027D04
+ str r0, [sp]
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ add r0, r5, r0
+ bl MOD17_021DA064
+ ldr r0, [r6, #0x54]
+ add r7, r7, #1
+ add r4, r4, #4
+ cmp r7, r0
+ blt _021DD916
+_021DD950:
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DD88C
+
+ thumb_func_start MOD17_021DD954
+MOD17_021DD954: ; 0x021DD954
+ add r2, r1, #0
+ mov r1, #0x61
+ lsl r1, r1, #2
+ add r0, r0, r1
+ ldr r1, [r2, #0x5c]
+ ldr r3, _021DD964 ; =MOD17_021DA2F0
+ ldr r2, [r2, #0x68]
+ bx r3
+ .align 2, 0
+_021DD964: .word MOD17_021DA2F0
+ thumb_func_end MOD17_021DD954
+
+ thumb_func_start MOD17_021DD968
+MOD17_021DD968: ; 0x021DD968
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x61
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021DA100
+ mov r0, #0x61
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD17_021D9FD4
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DD968
+
+ thumb_func_start MOD17_021DD984
+MOD17_021DD984: ; 0x021DD984
+ mov r1, #0x61
+ lsl r1, r1, #2
+ ldr r3, _021DD990 ; =MOD17_021DA33C
+ add r0, r0, r1
+ bx r3
+ nop
+_021DD990: .word MOD17_021DA33C
+ thumb_func_end MOD17_021DD984
+
+ thumb_func_start MOD17_021DD994
+MOD17_021DD994: ; 0x021DD994
+ push {r3, r4, r5, lr}
+ add r3, r1, #0
+ mov r1, #0x23
+ add r4, r0, #0
+ mov r2, #0x48
+ lsl r1, r1, #4
+ str r2, [r4, r1]
+ mov r5, #0x38
+ add r2, r1, #4
+ str r5, [r4, r2]
+ add r2, r1, #0
+ add r2, #8
+ str r5, [r4, r2]
+ add r2, r1, #0
+ mov r5, #0x40
+ add r2, #0xc
+ str r5, [r4, r2]
+ lsl r2, r5, #6
+ add r5, r1, #0
+ add r5, #0x14
+ str r2, [r4, r5]
+ add r5, r1, #0
+ add r5, #0x18
+ str r2, [r4, r5]
+ add r5, r1, #0
+ add r5, #0x1c
+ str r2, [r4, r5]
+ mov r2, #0
+ add r1, #0x10
+ strh r2, [r4, r1]
+ ldr r1, [r3, #0x60]
+ ldr r2, [r3, #0x64]
+ bl MOD17_021DD5A0
+ mov r0, #0x25
+ ldr r1, _021DD9E4 ; =0x00007FFF
+ lsl r0, r0, #4
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+ nop
+_021DD9E4: .word 0x00007FFF
+ thumb_func_end MOD17_021DD994
+
+ thumb_func_start MOD17_021DD9E8
+MOD17_021DD9E8: ; 0x021DD9E8
+ ldr r2, [r1]
+ str r2, [r0, #0x58]
+ ldr r2, [r1, #4]
+ str r2, [r0, #0x60]
+ ldr r2, [r1, #8]
+ str r2, [r0, #0x64]
+ ldr r1, [r1, #0xc]
+ str r1, [r0, #0x68]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD17_021DD9E8
+
+ thumb_func_start MOD17_021DD9FC
+MOD17_021DD9FC: ; 0x021DD9FC
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r5, r0, #0
+ add r0, r7, #0
+ bl FUN_02027564
+ add r6, r5, #0
+ str r0, [r5]
+ mov r4, #0
+ str r4, [r5, #0x54]
+ add r6, #0x54
+_021DDA12:
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02027528
+ cmp r0, #0
+ beq _021DDA34
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02027590
+ ldr r1, [r5, #0x54]
+ lsl r1, r1, #2
+ add r1, r5, r1
+ str r0, [r1, #4]
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+_021DDA34:
+ add r4, r4, #1
+ cmp r4, #0xa
+ blt _021DDA12
+ add r0, r7, #0
+ bl FUN_0202766C
+ str r0, [r5, #0x5c]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DD9FC
+
+ thumb_func_start MOD17_021DDA44
+MOD17_021DDA44: ; 0x021DDA44
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r5, r0, #0
+ add r0, r7, #0
+ bl FUN_02027A94
+ add r6, r5, #0
+ str r0, [r5]
+ mov r4, #0
+ str r4, [r5, #0x54]
+ add r6, #0x54
+_021DDA5A:
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02027A14
+ cmp r0, #0
+ beq _021DDA7C
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02027AC4
+ ldr r1, [r5, #0x54]
+ lsl r1, r1, #2
+ add r1, r5, r1
+ str r0, [r1, #4]
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+_021DDA7C:
+ add r4, r4, #1
+ cmp r4, #0x14
+ blt _021DDA5A
+ add r0, r7, #0
+ bl FUN_02027C28
+ str r0, [r5, #0x5c]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DDA44
+
+ thumb_func_start MOD17_021DDA8C
+MOD17_021DDA8C: ; 0x021DDA8C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r7, r3, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD17_021D7AFC
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl MOD17_021DDAAC
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD17_021DDA8C
+
+ thumb_func_start MOD17_021DDAAC
+MOD17_021DDAAC: ; 0x021DDAAC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ add r0, r2, #0
+ ldr r0, [r0, #0x54]
+ add r4, r1, #0
+ str r2, [sp, #8]
+ str r3, [sp, #0xc]
+ cmp r0, #0
+ ble _021DDB1E
+ add r6, r2, #0
+_021DDAC6:
+ ldr r0, [r6, #4]
+ bl FUN_02027CF8
+ add r5, r0, #0
+ ldr r0, [r4, #0x10]
+ add r1, r5, #0
+ bl FUN_02020CB0
+ cmp r0, #1
+ bne _021DDB0C
+ mov r0, #1
+ str r0, [sp]
+ ldr r3, [sp, #0xc]
+ mov r0, #0x19
+ add r1, r5, #1
+ mov r2, #0
+ bl FUN_02006C98
+ add r7, r0, #0
+ ldr r0, [r4, #0x10]
+ add r1, r7, #0
+ add r2, r5, #0
+ bl FUN_02020CD4
+ ldr r1, [r4]
+ lsl r5, r5, #3
+ add r1, r1, r5
+ add r0, r7, #0
+ add r1, r1, #4
+ bl FUN_020B0088
+ ldr r0, [sp, #4]
+ ldr r1, [r0]
+ ldr r0, [r4]
+ str r1, [r0, r5]
+_021DDB0C:
+ ldr r0, [sp, #0x10]
+ add r6, r6, #4
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #8]
+ ldr r1, [r0, #0x54]
+ ldr r0, [sp, #0x10]
+ cmp r0, r1
+ blt _021DDAC6
+_021DDB1E:
+ mov r0, #1
+ mov r1, #0
+ str r0, [sp]
+ ldr r3, [sp, #0xc]
+ mov r0, #0x19
+ add r2, r1, #0
+ bl FUN_02006C98
+ add r5, r0, #0
+ ldr r0, [r4, #0x14]
+ add r1, r5, #0
+ mov r2, #0
+ bl FUN_02020CD4
+ ldr r1, [r4, #8]
+ add r0, r5, #0
+ add r1, r1, #4
+ bl FUN_020B0138
+ ldr r0, [sp, #4]
+ ldr r1, [r0]
+ ldr r0, [r4, #8]
+ str r1, [r0]
+ ldr r0, [r4, #8]
+ mov r1, #3
+ str r1, [r0, #8]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DDAAC
+
+ thumb_func_start MOD17_021DDB58
+MOD17_021DDB58: ; 0x021DDB58
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ mov r2, #2
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0xd
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r2, #1
+ mov r0, #3
+ mov r1, #0xe
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ mov r1, #0x65
+ add r0, r5, #0
+ lsl r1, r1, #2
+ mov r2, #0xd
+ bl FUN_02006268
+ mov r2, #0x65
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ ldr r0, _021DDC28 ; =MOD17_021DDD40
+ add r1, r4, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ add r0, r5, #0
+ bl FUN_0200628C
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ ldr r0, [r5]
+ bne _021DDBB4
+ ldr r1, [r5, #4]
+ bl FUN_02027008
+ str r0, [r4]
+ b _021DDBBC
+_021DDBB4:
+ ldr r1, [r5, #4]
+ bl FUN_02027044
+ str r0, [r4, #4]
+_021DDBBC:
+ ldr r0, [r5, #4]
+ str r0, [r4, #8]
+ ldr r0, [r5, #8]
+ str r0, [r4, #0xc]
+ bl MOD17_021D7794
+ ldr r0, _021DDC2C ; =0x021C4918
+ mov r1, #0
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #0xe
+ bl MOD17_021D7CC0
+ ldr r0, [r4, #0x4c]
+ str r0, [sp]
+ mov r0, #0x48
+ str r0, [sp, #4]
+ mov r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ add r0, sp, #0
+ bne _021DDBFC
+ ldr r1, [r4]
+ bl MOD17_021DD4AC
+ b _021DDC02
+_021DDBFC:
+ ldr r1, [r4, #4]
+ bl MOD17_021DD4D0
+_021DDC02:
+ str r0, [r4, #0x10]
+ add r0, r4, #0
+ bl MOD17_021DDD54
+ add r0, r4, #0
+ bl MOD17_021DDDFC
+ add r0, r4, #0
+ bl MOD17_021DDE50
+ add r0, r4, #0
+ bl MOD17_021DDF1C
+ add r0, r4, #0
+ bl MOD17_021DDFAC
+ mov r0, #1
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DDC28: .word MOD17_021DDD40
+_021DDC2C: .word 0x021C4918
+ thumb_func_end MOD17_021DDB58
+
+ thumb_func_start MOD17_021DDC30
+MOD17_021DDC30: ; 0x021DDC30
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ bl FUN_02006278
+ add r5, r0, #0
+ bl FUN_020222AC
+ bl FUN_020B02C8
+ ldr r0, [r5, #0x10]
+ bl MOD17_021DD518
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020222B4
+ add r5, #0x14
+ add r0, r5, #0
+ bl MOD17_021D7D00
+ ldr r0, [r4]
+ cmp r0, #5
+ bhi _021DDCEA
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DDC6C: ; jump table
+ .short _021DDC78 - _021DDC6C - 2 ; case 0
+ .short _021DDC7E - _021DDC6C - 2 ; case 1
+ .short _021DDC9C - _021DDC6C - 2 ; case 2
+ .short _021DDCAC - _021DDC6C - 2 ; case 3
+ .short _021DDCBC - _021DDC6C - 2 ; case 4
+ .short _021DDCDC - _021DDC6C - 2 ; case 5
+_021DDC78:
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDCEA
+_021DDC7E:
+ mov r0, #6
+ str r0, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #0xd
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #5
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDCEA
+_021DDC9C:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021DDCEA
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDCEA
+_021DDCAC:
+ ldr r1, _021DDCF0 ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #3
+ tst r1, r2
+ beq _021DDCEA
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDCEA
+_021DDCBC:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0xd
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #2
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021DDCEA
+_021DDCDC:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021DDCEA
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_021DDCEA:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_021DDCF0: .word 0x021C48B8
+ thumb_func_end MOD17_021DDC30
+
+ thumb_func_start MOD17_021DDCF4
+MOD17_021DDCF4: ; 0x021DDCF4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ bl MOD17_021DD540
+ add r0, r4, #0
+ bl MOD17_021DDEDC
+ add r0, r4, #0
+ bl MOD17_021DDF84
+ add r4, #0x14
+ add r0, r4, #0
+ bl MOD17_021D7CD8
+ bl MOD17_021D77B4
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0xd
+ bl FUN_020168D0
+ mov r0, #0xe
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DDCF4
+
+ thumb_func_start MOD17_021DDD40
+MOD17_021DDD40: ; 0x021DDD40
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ bl MOD17_021DD58C
+ add r4, #0x14
+ add r0, r4, #0
+ bl MOD17_021D7CF0
+ pop {r4, pc}
+ thumb_func_end MOD17_021DDD40
+
+ thumb_func_start MOD17_021DDD54
+MOD17_021DDD54: ; 0x021DDD54
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0x40
+ str r0, [sp]
+ mov r0, #0xe
+ str r0, [sp, #4]
+ mov r0, #0x19
+ mov r1, #0x7e
+ mov r2, #0
+ mov r3, #0x60
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x4c]
+ mov r0, #0x19
+ mov r1, #0x7d
+ mov r3, #1
+ bl FUN_0200687C
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ bne _021DDD92
+ mov r1, #0x80
+ mov r4, #4
+ b _021DDD96
+_021DDD92:
+ mov r1, #0x7f
+ mov r4, #3
+_021DDD96:
+ mov r0, #0xe
+ str r0, [sp]
+ mov r0, #0x19
+ mov r2, #0
+ add r3, sp, #0x10
+ bl FUN_02006BDC
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ str r3, [sp]
+ add r6, r0, #0
+ ldrh r0, [r2]
+ mov r1, #1
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldrh r0, [r2, #2]
+ add r2, #0xc
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x4c]
+ bl FUN_02018148
+ ldr r1, [sp, #0x10]
+ mov r2, #0
+ ldrh r0, [r1]
+ add r3, r2, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldrh r0, [r1, #2]
+ mov r1, #1
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x4c]
+ bl FUN_020186B4
+ add r0, r6, #0
+ bl FUN_02016A18
+ ldr r0, [r5, #0x4c]
+ mov r1, #1
+ bl FUN_0201AC68
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD17_021DDD54
+
+ thumb_func_start MOD17_021DDDFC
+MOD17_021DDDFC: ; 0x021DDDFC
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0xe
+ str r0, [sp, #4]
+ mov r0, #0xc
+ add r1, r0, #0
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x4c]
+ mov r0, #0xc
+ mov r1, #0xb
+ mov r3, #4
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x4c]
+ mov r0, #0xc
+ mov r1, #0xa
+ mov r3, #4
+ bl FUN_0200687C
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DDDFC
+
+ thumb_func_start MOD17_021DDE50
+MOD17_021DDE50: ; 0x021DDE50
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #0x19
+ mov r2, #0xe9
+ mov r3, #0
+ bl MOD17_021D7934
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #0x19
+ mov r2, #0xea
+ mov r3, #0
+ bl MOD17_021D7954
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #0x19
+ mov r2, #0xe8
+ mov r3, #0
+ bl MOD17_021D7978
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #0x19
+ mov r2, #0xe7
+ mov r3, #0
+ bl MOD17_021D7994
+ mov r0, #0x64
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #0xfa
+ add r0, #0x14
+ lsl r1, r1, #2
+ mov r2, #0
+ mov r3, #0x90
+ bl MOD17_021D78D0
+ mov r1, #0x63
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #1
+ bl FUN_02020238
+ add sp, #0xc
+ pop {r3, r4, pc}
+ thumb_func_end MOD17_021DDE50
+
+ thumb_func_start MOD17_021DDEDC
+MOD17_021DDEDC: ; 0x021DDEDC
+ push {r4, lr}
+ mov r1, #0xfa
+ add r4, r0, #0
+ add r0, #0x14
+ lsl r1, r1, #2
+ bl MOD17_021D79B0
+ add r0, r4, #0
+ mov r1, #0xfa
+ add r0, #0x14
+ lsl r1, r1, #2
+ bl MOD17_021D79C4
+ add r0, r4, #0
+ mov r1, #0xfa
+ add r0, #0x14
+ lsl r1, r1, #2
+ bl MOD17_021D79D8
+ add r0, r4, #0
+ mov r1, #0xfa
+ add r0, #0x14
+ lsl r1, r1, #2
+ bl MOD17_021D79EC
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FFC8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DDEDC
+
+ thumb_func_start MOD17_021DDF1C
+MOD17_021DDF1C: ; 0x021DDF1C
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0xe
+ mov r1, #1
+ bl FUN_02018FF4
+ mov r1, #0x19
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ mov r0, #0x12
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ mov r0, #5
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x4c]
+ ldr r1, [r4, r1]
+ mov r2, #3
+ mov r3, #0
+ bl FUN_02019064
+ mov r0, #0
+ mov r1, #0xa0
+ mov r2, #0xe
+ bl FUN_02002ED0
+ mov r0, #3
+ mov r1, #0
+ bl FUN_020178BC
+ mov r0, #0
+ mov r1, #2
+ bl FUN_020178BC
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020178BC
+ mov r1, #3
+ ldr r0, [r4, #0x4c]
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_020179E0
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DDF1C
+
+ thumb_func_start MOD17_021DDF84
+MOD17_021DDF84: ; 0x021DDF84
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02019570
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02019178
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020191A4
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD17_021DDF84
+
+ thumb_func_start MOD17_021DDFAC
+MOD17_021DDFAC: ; 0x021DDFAC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ bne _021DDFCA
+ add r0, r4, #0
+ bl MOD17_021DDFDC
+ b _021DDFD0
+_021DDFCA:
+ add r0, r4, #0
+ bl MOD17_021DE0F4
+_021DDFD0:
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_020191D0
+ pop {r4, pc}
+ thumb_func_end MOD17_021DDFAC
+
+ thumb_func_start MOD17_021DDFDC
+MOD17_021DDFDC: ; 0x021DDFDC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ ldr r2, _021DE0EC ; =0x00000151
+ add r5, r0, #0
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0xd
+ bl FUN_0200A86C
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ bne _021DDFF8
+ bl ErrorHandling
+_021DDFF8:
+ mov r0, #0xd
+ bl FUN_0200AA80
+ add r6, r0, #0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #5
+ bl FUN_02020130
+ mov r0, #3
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x14]
+ mov r0, #9
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x18]
+ mov r0, #0
+ str r0, [sp, #0x1c]
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, sp, #0x14
+ bl FUN_02020044
+ mov r0, #0xc
+ mov r1, #0xd
+ bl FUN_020219F4
+ add r7, r0, #0
+ ldr r0, [r5]
+ add r1, r7, #0
+ bl FUN_02027608
+ mov r0, #0
+ add r1, r7, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r4, r0, #0
+ mov r0, #7
+ str r0, [sp]
+ mov r1, #0
+ lsr r3, r4, #0x1f
+ add r3, r4, r3
+ asr r4, r3, #1
+ mov r3, #0x80
+ ldr r0, _021DE0F0 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r1, [sp, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r2, r7, #0
+ sub r3, r3, r4
+ bl FUN_0201BDE0
+ add r0, r7, #0
+ bl FUN_02021A20
+ ldr r0, [r5]
+ bl FUN_0202769C
+ add r2, r0, #0
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_0200B518
+ mov r0, #0xc8
+ mov r1, #0xd
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, [sp, #0x10]
+ mov r1, #0x2d
+ bl FUN_0200A914
+ add r7, r0, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ mov r0, #0x1b
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DE0F0 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r1, [sp, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ lsr r5, r3, #0x1f
+ add r5, r3, r5
+ asr r5, r5, #1
+ mov r3, #0x80
+ add r2, r4, #0
+ sub r3, r3, r5
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x10]
+ bl FUN_0200A8B8
+ add r0, r6, #0
+ bl FUN_0200AB18
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DE0EC: .word 0x00000151
+_021DE0F0: .word 0x00010200
+ thumb_func_end MOD17_021DDFDC
+
+ thumb_func_start MOD17_021DE0F4
+MOD17_021DE0F4: ; 0x021DE0F4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r5, #8]
+ bl FUN_02020130
+ ldr r0, [r5, #4]
+ bl FUN_02027C58
+ add r6, r0, #0
+ mov r0, #0xd
+ bl FUN_0200AA80
+ add r7, r0, #0
+ mov r0, #0xc8
+ mov r1, #0xd
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, [r5, #8]
+ bl FUN_02083298
+ add r2, r0, #0
+ add r0, r7, #0
+ mov r1, #0
+ bl FUN_0200B2AC
+ add r0, r6, #0
+ bl FUN_02083268
+ add r2, r0, #0
+ add r0, r7, #0
+ mov r1, #1
+ bl FUN_0200B278
+ ldr r0, [r5, #4]
+ bl FUN_02027B44
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ bl FUN_02027B0C
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ add r0, r7, #0
+ mov r1, #3
+ add r2, r4, #0
+ add r3, r6, #0
+ bl FUN_0200ABB4
+ mov r0, #0xd
+ bl FUN_020669C0
+ add r6, r0, #0
+ ldr r0, [r5, #4]
+ add r1, r6, #0
+ bl FUN_02027B78
+ add r0, r6, #0
+ bl FUN_020690E4
+ add r2, r0, #0
+ add r0, r7, #0
+ mov r1, #4
+ bl FUN_0200ACF8
+ add r0, r6, #0
+ bl FUN_02016A18
+ ldr r2, _021DE24C ; =0x00000151
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0xd
+ bl FUN_0200A86C
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ bne _021DE1A0
+ bl ErrorHandling
+_021DE1A0:
+ ldr r0, [sp, #0x10]
+ mov r1, #0x2b
+ bl FUN_0200A914
+ add r6, r0, #0
+ add r0, r7, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ mov r0, #7
+ str r0, [sp]
+ mov r1, #0
+ lsr r6, r3, #0x1f
+ add r6, r3, r6
+ ldr r0, _021DE250 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r1, [sp, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ asr r6, r6, #1
+ mov r3, #0x80
+ add r2, r4, #0
+ sub r3, r3, r6
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ mov r1, #0x2c
+ bl FUN_0200A914
+ add r6, r0, #0
+ add r0, r7, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ mov r0, #0x1b
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021DE250 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r1, [sp, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ lsr r5, r3, #0x1f
+ add r5, r3, r5
+ asr r5, r5, #1
+ mov r3, #0x80
+ add r2, r4, #0
+ sub r3, r3, r5
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x10]
+ bl FUN_0200A8B8
+ add r0, r7, #0
+ bl FUN_0200AB18
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DE24C: .word 0x00000151
+_021DE250: .word 0x00010200
+ thumb_func_end MOD17_021DE0F4
+
+ .section .rodata
+ ; 0x021DE254
+ .incbin "baserom.nds", 0x26AF74, 0x100
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
new file mode 100644
index 00000000..f6e4bcea
--- /dev/null
+++ b/arm9/modules/18/asm/module_18.s
@@ -0,0 +1,46264 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD18_022396A0
+MOD18_022396A0: ; 0x022396A0
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r2, _02239730 ; =0x000008CC
+ ldr r4, _02239734 ; =0x02251380
+ add r3, r2, #0
+ mov r1, #0
+ mov r0, #0xff
+ add r3, #8
+_022396AE:
+ ldr r5, [r4]
+ add r5, r5, r1
+ strb r0, [r5, r2]
+ ldr r5, [r4]
+ add r5, r5, r1
+ add r1, r1, #1
+ strb r0, [r5, r3]
+ cmp r1, #8
+ blt _022396AE
+ ldr r0, _02239734 ; =0x02251380
+ ldr r1, _02239738 ; =0x000009E4
+ ldr r2, [r0]
+ mov r3, #1
+ strb r3, [r2, r1]
+ ldr r4, [r0]
+ mov r2, #0
+ add r3, r1, #1
+ strb r2, [r4, r3]
+ ldr r3, [r0]
+ mov r4, #0xc4
+ add r1, r1, #3
+ strb r4, [r3, r1]
+ mov r3, #0x81
+ lsl r3, r3, #4
+ add r4, r3, #0
+ add r1, r2, #0
+ add r5, r2, #0
+ add r4, #8
+_022396E6:
+ ldr r6, [r0]
+ add r2, r2, #1
+ add r6, r6, r1
+ str r5, [r6, r3]
+ ldr r6, [r0]
+ add r6, r6, r1
+ add r1, #0xc
+ strb r5, [r6, r4]
+ cmp r2, #8
+ blt _022396E6
+ ldr r6, _02239734 ; =0x02251380
+ mov r7, #0
+_022396FE:
+ add r0, r5, #0
+ mov r1, #0xd
+ bl _s32_div_f
+ add r4, r0, #0
+ mov r1, #0xd
+ add r0, r5, #0
+ mul r4, r1
+ bl _s32_div_f
+ ldr r0, [r6]
+ add r5, r5, #1
+ add r0, r0, r4
+ add r2, r1, r0
+ ldr r0, _0223973C ; =0x000008DC
+ strb r7, [r2, r0]
+ ldr r0, [r6]
+ add r0, r0, r4
+ add r2, r1, r0
+ mov r1, #2
+ ldr r0, _02239740 ; =0x0000095E
+ cmp r5, #0x82
+ strb r1, [r2, r0]
+ blt _022396FE
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02239730: .word 0x000008CC
+_02239734: .word 0x02251380
+_02239738: .word 0x000009E4
+_0223973C: .word 0x000008DC
+_02239740: .word 0x0000095E
+ thumb_func_end MOD18_022396A0
+
+ thumb_func_start MOD18_02239744
+MOD18_02239744: ; 0x02239744
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ ldr r1, _02239834 ; =0x02251380
+ ldr r2, [r1]
+ cmp r2, #0
+ bne _02239830
+ mov r2, #0x9f
+ str r0, [r1]
+ mov r1, #0
+ lsl r2, r2, #4
+ bl MI_CpuFill8
+ ldr r0, _02239834 ; =0x02251380
+ ldr r0, [r0]
+ add r0, #8
+ bl FUN_020312BC
+ ldr r5, _02239834 ; =0x02251380
+ mov r2, #0
+ ldr r0, [r5]
+ ldr r7, _02239838 ; =0x0000020A
+ str r4, [r0]
+ ldr r0, _0223983C ; =0x0000FFFF
+ add r3, r2, #0
+ mov r1, #0xff
+_02239778:
+ ldr r4, [r5]
+ add r2, r2, #1
+ add r6, r4, r3
+ mov r4, #0x83
+ lsl r4, r4, #2
+ strb r1, [r6, r4]
+ ldr r4, [r5]
+ add r6, r4, r3
+ mov r4, #0x82
+ lsl r4, r4, #2
+ strh r0, [r6, r4]
+ ldr r4, [r5]
+ add r4, r4, r3
+ add r3, r3, #6
+ strh r0, [r4, r7]
+ cmp r2, #0xfa
+ blt _02239778
+ bl MOD18_022396A0
+ ldr r1, _02239834 ; =0x02251380
+ mov r3, #0
+ mov r0, #0x9e
+ ldr r2, [r1]
+ mvn r3, r3
+ lsl r0, r0, #4
+ str r3, [r2, r0]
+ ldr r0, [r1]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ add r4, r0, #0
+ bl FUN_02026648
+ cmp r0, #0
+ beq _02239828
+ add r0, r4, #0
+ bl FUN_02025D40
+ str r0, [sp, #4]
+ ldr r0, _02239840 ; =0x5D588B65
+ mov r5, #0
+ str r0, [sp, #8]
+ ldr r0, _02239844 ; =0x00269EC3
+ str r0, [sp, #0xc]
+_022397D2:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_020265B8
+ add r5, r5, #1
+ cmp r5, #0xff
+ blt _022397D2
+ mov r5, #0
+ add r6, r5, #0
+_022397E4:
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ add r3, r6, #0
+ str r6, [sp]
+ bl FUN_0202630C
+ add r5, r5, #1
+ cmp r5, #0x40
+ blt _022397E4
+ add r0, sp, #4
+ bl MOD18_0223D298
+ mov r1, #0xa
+ bl _s32_div_f
+ mov r1, #0x18
+ sub r6, r1, r0
+ mov r5, #0
+ cmp r6, #0
+ ble _0223981E
+ add r7, sp, #4
+_02239810:
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD18_02239994
+ add r5, r5, #1
+ cmp r5, r6
+ blt _02239810
+_0223981E:
+ add r0, r4, #0
+ bl FUN_02026654
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_02239828:
+ bl MOD18_02239D94
+ bl MOD18_0223F174
+_02239830:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02239834: .word 0x02251380
+_02239838: .word 0x0000020A
+_0223983C: .word 0x0000FFFF
+_02239840: .word 0x5D588B65
+_02239844: .word 0x00269EC3
+ thumb_func_end MOD18_02239744
+
+ thumb_func_start MOD18_02239848
+MOD18_02239848: ; 0x02239848
+ mov r0, #0x9f
+ lsl r0, r0, #4
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_02239848
+
+ thumb_func_start MOD18_02239850
+MOD18_02239850: ; 0x02239850
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_02239850
+
+ thumb_func_start MOD18_02239854
+MOD18_02239854: ; 0x02239854
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_02239854
+
+ thumb_func_start MOD18_02239858
+MOD18_02239858: ; 0x02239858
+ push {r3, lr}
+ ldr r0, _022398A8 ; =0x02251380
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _022398A4
+ ldr r0, _022398AC ; =0x0000087C
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _02239896
+ bl FUN_0200CAB4
+ ldr r0, _022398A8 ; =0x02251380
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _022398AC ; =0x0000087C
+ str r2, [r1, r0]
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ ldr r0, _022398A8 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, _022398B0 ; =0x000007E4
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _02239892
+ mov r1, #4
+ bl FUN_020021EC
+_02239892:
+ bl FUN_0204F7FC
+_02239896:
+ ldr r0, _022398A8 ; =0x02251380
+ ldr r0, [r0]
+ bl FUN_02016A18
+ ldr r0, _022398A8 ; =0x02251380
+ mov r1, #0
+ str r1, [r0]
+_022398A4:
+ pop {r3, pc}
+ nop
+_022398A8: .word 0x02251380
+_022398AC: .word 0x0000087C
+_022398B0: .word 0x000007E4
+ thumb_func_end MOD18_02239858
+
+ thumb_func_start MOD18_022398B4
+MOD18_022398B4: ; 0x022398B4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldrh r0, [r1]
+ ldrh r1, [r1, #2]
+ bl MOD18_02239DEC
+ add r4, r0, #0
+ add r0, sp, #0
+ strb r5, [r0]
+ beq _022398FE
+ ldrb r0, [r4, #4]
+ cmp r0, #0xff
+ bne _022398FE
+ add r0, r5, #0
+ bl FUN_0204F210
+ cmp r0, #0
+ beq _022398DC
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022398DC:
+ mov r0, #0x40
+ add r1, sp, #0
+ mov r2, #1
+ bl FUN_02030BC4
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ ldr r0, _02239904 ; =0x02251380
+ ldr r1, [r0]
+ lsl r0, r5, #2
+ add r1, r1, r0
+ ldr r0, _02239908 ; =0x000007E8
+ str r4, [r1, r0]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022398FE:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02239904: .word 0x02251380
+_02239908: .word 0x000007E8
+ thumb_func_end MOD18_022398B4
+
+ thumb_func_start MOD18_0223990C
+MOD18_0223990C: ; 0x0223990C
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ beq _02239924
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_02239924:
+ ldr r0, _02239990 ; =0x000001DE
+ cmp r4, r0
+ ble _0223992E
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0223992E:
+ cmp r5, r0
+ ble _02239936
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_02239936:
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl FUN_0204A6B4
+ cmp r0, #0
+ beq _0223998C
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, r4, #1
+ bl FUN_0204A6B4
+ cmp r0, #0
+ bne _02239956
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02239956:
+ add r0, r6, #0
+ add r1, r5, #0
+ sub r2, r4, #1
+ bl FUN_0204A6B4
+ cmp r0, #0
+ bne _02239968
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02239968:
+ add r0, r6, #0
+ add r1, r5, #1
+ add r2, r4, #0
+ bl FUN_0204A6B4
+ cmp r0, #0
+ bne _0223997A
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_0223997A:
+ add r0, r6, #0
+ sub r1, r5, #1
+ add r2, r4, #0
+ bl FUN_0204A6B4
+ cmp r0, #0
+ bne _0223998C
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_0223998C:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02239990: .word 0x000001DE
+ thumb_func_end MOD18_0223990C
+
+ thumb_func_start MOD18_02239994
+MOD18_02239994: ; 0x02239994
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0
+ ldr r0, _02239BA8 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ str r0, [sp, #0x10]
+ ldr r0, _02239BA8 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x28]
+ bl FUN_020344FC
+ sub r0, r0, #2
+ lsl r0, r0, #0x15
+ lsr r6, r0, #0x10
+ ldr r0, _02239BA8 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x28]
+ bl FUN_0203450C
+ sub r0, r0, #2
+ lsl r0, r0, #0x15
+ lsr r4, r0, #0x10
+_022399CC:
+ ldr r1, [r5, #4]
+ ldr r0, [r5]
+ ldr r2, [r5, #8]
+ mul r0, r1
+ add r0, r2, r0
+ str r0, [r5]
+ cmp r6, #0
+ ldr r0, [r5]
+ bne _022399E2
+ lsr r1, r0, #0x10
+ b _022399EA
+_022399E2:
+ lsr r1, r0, #0x10
+ add r2, r1, #0
+ mul r2, r6
+ lsr r1, r2, #0x10
+_022399EA:
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r1, #0x20
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ str r1, [sp, #0xc]
+ ldr r1, [r5, #4]
+ ldr r2, [r5, #8]
+ mul r0, r1
+ add r0, r2, r0
+ str r0, [r5]
+ cmp r4, #0
+ ldr r0, [r5]
+ bne _02239A0A
+ lsr r0, r0, #0x10
+ b _02239A12
+_02239A0A:
+ lsr r0, r0, #0x10
+ add r1, r0, #0
+ mul r1, r4
+ lsr r0, r1, #0x10
+_02239A12:
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r0, #0x40
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ ldr r0, _02239BA8 ; =0x02251380
+ ldr r1, [sp, #0xc]
+ ldr r0, [r0]
+ add r2, r7, #0
+ ldr r0, [r0]
+ bl MOD18_0223990C
+ cmp r0, #0
+ beq _022399CC
+ ldr r1, [r5, #4]
+ ldr r0, [r5]
+ ldr r2, [r5, #8]
+ mul r0, r1
+ add r0, r2, r0
+ str r0, [r5]
+ lsr r1, r0, #0x10
+ mov r0, #6
+ mul r0, r1
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r0, r0, #6
+ str r0, [sp, #0x20]
+ mov r0, #0
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x20]
+ cmp r0, #0
+ ble _02239AEE
+_02239A54:
+ mov r0, #0
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+_02239A5A:
+ ldr r1, [r5, #4]
+ ldr r0, [r5]
+ ldr r2, [r5, #8]
+ mul r0, r1
+ add r0, r2, r0
+ lsr r2, r0, #0x10
+ mov r1, #0x14
+ mul r1, r2
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x10
+ lsr r2, r1, #0x10
+ ldr r1, [sp, #0xc]
+ str r0, [r5]
+ add r1, r1, r2
+ sub r1, #0xa
+ lsl r1, r1, #0x10
+ lsr r4, r1, #0x10
+ ldr r1, [r5, #4]
+ ldr r2, [r5, #8]
+ mul r0, r1
+ add r0, r2, r0
+ str r0, [r5]
+ lsr r1, r0, #0x10
+ mov r0, #0x14
+ mul r0, r1
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r0, r7, r0
+ sub r0, #0xa
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ ldr r0, _02239BA8 ; =0x02251380
+ add r1, r4, #0
+ ldr r0, [r0]
+ add r2, r6, #0
+ ldr r0, [r0]
+ bl MOD18_0223990C
+ cmp r0, #0
+ beq _02239AB2
+ mov r0, #1
+ str r0, [sp, #0x14]
+ b _02239ABC
+_02239AB2:
+ ldr r0, [sp, #0x18]
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ cmp r0, #0x64
+ blt _02239A5A
+_02239ABC:
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _02239AE2
+ bl MOD18_02239C58
+ cmp r0, #0
+ beq _02239AEE
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD18_02239CA0
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x10]
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_02026554
+ ldr r1, [sp, #0x24]
+ strb r0, [r1, #5]
+_02239AE2:
+ ldr r0, [sp, #0x1c]
+ add r1, r0, #1
+ ldr r0, [sp, #0x20]
+ str r1, [sp, #0x1c]
+ cmp r1, r0
+ blt _02239A54
+_02239AEE:
+ ldr r1, [r5, #4]
+ ldr r0, [r5]
+ ldr r2, [r5, #8]
+ mul r0, r1
+ add r0, r2, r0
+ str r0, [r5]
+ lsr r1, r0, #0x10
+ mov r0, #6
+ mul r0, r1
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ ble _02239BA2
+_02239B12:
+ mov r0, #0
+ str r0, [sp]
+_02239B16:
+ ldr r1, [r5, #4]
+ ldr r0, [r5]
+ ldr r2, [r5, #8]
+ mul r0, r1
+ add r0, r2, r0
+ lsr r2, r0, #0x10
+ mov r1, #0x14
+ mul r1, r2
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x10
+ lsr r2, r1, #0x10
+ ldr r1, [sp, #0xc]
+ str r0, [r5]
+ add r1, r1, r2
+ sub r1, #0xa
+ lsl r1, r1, #0x10
+ lsr r6, r1, #0x10
+ ldr r1, [r5, #4]
+ ldr r2, [r5, #8]
+ mul r0, r1
+ add r0, r2, r0
+ str r0, [r5]
+ lsr r1, r0, #0x10
+ mov r0, #0x14
+ mul r0, r1
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r0, r7, r0
+ sub r0, #0xa
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, _02239BA8 ; =0x02251380
+ add r1, r6, #0
+ ldr r0, [r0]
+ add r2, r4, #0
+ ldr r0, [r0]
+ bl FUN_0204A6B4
+ cmp r0, #0
+ bne _02239B8C
+ ldr r3, _02239BA8 ; =0x02251380
+ add r1, r4, #0
+ ldr r4, [r3]
+ ldr r3, _02239BAC ; =0x000009EC
+ add r0, r6, #0
+ ldrb r3, [r4, r3]
+ add r2, r5, #0
+ bl MOD18_0223F0C8
+ cmp r0, #0
+ beq _02239B8C
+ ldr r0, _02239BA8 ; =0x02251380
+ ldr r2, [r0]
+ ldr r0, _02239BAC ; =0x000009EC
+ ldrb r1, [r2, r0]
+ add r1, r1, #1
+ strb r1, [r2, r0]
+ b _02239B96
+_02239B8C:
+ ldr r0, [sp]
+ add r0, r0, #1
+ str r0, [sp]
+ cmp r0, #0x64
+ blt _02239B16
+_02239B96:
+ ldr r0, [sp, #4]
+ add r1, r0, #1
+ ldr r0, [sp, #8]
+ str r1, [sp, #4]
+ cmp r1, r0
+ blt _02239B12
+_02239BA2:
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02239BA8: .word 0x02251380
+_02239BAC: .word 0x000009EC
+ thumb_func_end MOD18_02239994
+
+ thumb_func_start MOD18_02239BB0
+MOD18_02239BB0: ; 0x02239BB0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp]
+ ldr r0, _02239C54 ; =0x02251380
+ str r1, [sp, #4]
+ ldr r0, [r0]
+ add r5, r2, #0
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ mov r4, #0
+ str r0, [sp, #8]
+ str r4, [sp, #0xc]
+_02239BCC:
+ ldr r1, [r5, #4]
+ ldr r0, [r5]
+ ldr r2, [r5, #8]
+ mul r0, r1
+ add r0, r2, r0
+ lsr r2, r0, #0x10
+ mov r1, #0x14
+ mul r1, r2
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x10
+ lsr r2, r1, #0x10
+ ldr r1, [sp]
+ str r0, [r5]
+ add r1, r1, r2
+ sub r1, #0xa
+ lsl r1, r1, #0x10
+ lsr r6, r1, #0x10
+ ldr r1, [r5, #4]
+ ldr r2, [r5, #8]
+ mul r0, r1
+ add r0, r2, r0
+ str r0, [r5]
+ lsr r1, r0, #0x10
+ mov r0, #0x14
+ mul r0, r1
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, [sp, #4]
+ add r0, r0, r1
+ sub r0, #0xa
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ ldr r0, _02239C54 ; =0x02251380
+ add r1, r6, #0
+ ldr r0, [r0]
+ add r2, r7, #0
+ ldr r0, [r0]
+ bl MOD18_0223990C
+ cmp r0, #0
+ beq _02239C26
+ mov r0, #1
+ str r0, [sp, #0xc]
+ b _02239C2C
+_02239C26:
+ add r4, r4, #1
+ cmp r4, #0x64
+ blt _02239BCC
+_02239C2C:
+ ldr r0, [sp, #0xc]
+ cmp r0, #0
+ beq _02239C50
+ bl MOD18_02239C58
+ cmp r0, #0
+ beq _02239C50
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD18_02239CA0
+ add r4, r0, #0
+ ldr r0, [sp, #8]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl FUN_02026554
+ strb r0, [r4, #5]
+_02239C50:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02239C54: .word 0x02251380
+ thumb_func_end MOD18_02239BB0
+
+ thumb_func_start MOD18_02239C58
+MOD18_02239C58: ; 0x02239C58
+ push {r4, r5, r6, r7}
+ ldr r1, _02239C94 ; =0x02251380
+ ldr r3, _02239C98 ; =0x0000020A
+ ldr r2, [r1]
+ ldr r4, _02239C9C ; =0x0000FFFF
+ mov r0, #0
+ add r1, r2, #0
+ sub r5, r3, #2
+ add r6, r4, #0
+_02239C6A:
+ ldrh r7, [r1, r5]
+ cmp r7, r6
+ bne _02239C86
+ ldrh r7, [r1, r3]
+ cmp r7, r4
+ bne _02239C86
+ mov r1, #0x82
+ lsl r1, r1, #2
+ add r2, r2, r1
+ mov r1, #6
+ mul r1, r0
+ add r0, r2, r1
+ pop {r4, r5, r6, r7}
+ bx lr
+_02239C86:
+ add r0, r0, #1
+ add r1, r1, #6
+ cmp r0, #0xfa
+ blt _02239C6A
+ mov r0, #0
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+_02239C94: .word 0x02251380
+_02239C98: .word 0x0000020A
+_02239C9C: .word 0x0000FFFF
+ thumb_func_end MOD18_02239C58
+
+ thumb_func_start MOD18_02239CA0
+MOD18_02239CA0: ; 0x02239CA0
+ push {r3, r4, r5, r6, r7, lr}
+ mov lr, r1
+ mov r1, #0xf
+ str r0, [sp]
+ lsl r1, r1, #6
+ mov r0, lr
+ mul r1, r0
+ ldr r0, [sp]
+ mov r6, #0
+ add r5, r0, r1
+ ldr r0, _02239D80 ; =0x02251380
+ mvn r6, r6
+ ldr r3, [r0]
+ mov r2, #0
+ mov ip, r3
+ lsr r7, r6, #0x10
+_02239CC0:
+ mov r0, #0x82
+ lsl r0, r0, #2
+ ldrh r1, [r3, r0]
+ cmp r1, r7
+ beq _02239CE4
+ add r0, r0, #2
+ ldrh r0, [r3, r0]
+ ldr r4, _02239D84 ; =0x0000FFFF
+ cmp r0, r4
+ beq _02239CE4
+ mov r4, #0xf
+ lsl r4, r4, #6
+ mul r4, r0
+ add r0, r1, r4
+ cmp r5, r0
+ bge _02239D08
+ add r6, r2, #0
+ b _02239D10
+_02239CE4:
+ mov r0, #6
+ mul r0, r2
+ mov r1, ip
+ add r2, r1, r0
+ mov r3, #0x82
+ ldr r1, [sp]
+ lsl r3, r3, #2
+ strh r1, [r2, r3]
+ ldr r4, _02239D80 ; =0x02251380
+ add r2, r3, #2
+ ldr r1, [r4]
+ add r5, r1, r0
+ mov r1, lr
+ strh r1, [r5, r2]
+ ldr r1, [r4]
+ add r1, r1, r3
+ add r0, r1, r0
+ pop {r3, r4, r5, r6, r7, pc}
+_02239D08:
+ add r2, r2, #1
+ add r3, r3, #6
+ cmp r2, #0xfa
+ blt _02239CC0
+_02239D10:
+ mov r0, #0
+ mvn r0, r0
+ cmp r6, r0
+ beq _02239D6E
+ mov r1, #0xf8
+ cmp r6, #0xf8
+ bgt _02239D52
+ mov r0, #0x5d
+ ldr r3, _02239D80 ; =0x02251380
+ ldr r7, _02239D88 ; =0x00000213
+ lsl r0, r0, #4
+_02239D26:
+ ldr r2, [r3]
+ sub r1, r1, #1
+ add r5, r2, r0
+ mov r2, #0x82
+ lsl r2, r2, #2
+ ldrh r4, [r5, r2]
+ add r2, r2, #6
+ strh r4, [r5, r2]
+ ldr r2, [r3]
+ add r5, r2, r0
+ ldr r2, _02239D8C ; =0x0000020A
+ ldrh r4, [r5, r2]
+ add r2, r2, #6
+ strh r4, [r5, r2]
+ ldr r2, [r3]
+ ldr r4, _02239D90 ; =0x0000020D
+ add r2, r2, r0
+ ldrb r4, [r2, r4]
+ sub r0, r0, #6
+ strb r4, [r2, r7]
+ cmp r1, r6
+ bge _02239D26
+_02239D52:
+ ldr r3, _02239D80 ; =0x02251380
+ mov r0, #6
+ ldr r1, [r3]
+ mul r0, r6
+ add r4, r1, r0
+ mov r2, #0x82
+ ldr r1, [sp]
+ lsl r2, r2, #2
+ strh r1, [r4, r2]
+ ldr r1, [r3]
+ add r3, r1, r0
+ add r1, r2, #2
+ mov r0, lr
+ strh r0, [r3, r1]
+_02239D6E:
+ ldr r0, _02239D80 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x82
+ lsl r0, r0, #2
+ add r1, r1, r0
+ mov r0, #6
+ mul r0, r6
+ add r0, r1, r0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02239D80: .word 0x02251380
+_02239D84: .word 0x0000FFFF
+_02239D88: .word 0x00000213
+_02239D8C: .word 0x0000020A
+_02239D90: .word 0x0000020D
+ thumb_func_end MOD18_02239CA0
+
+ thumb_func_start MOD18_02239D94
+MOD18_02239D94: ; 0x02239D94
+ push {r4, r5, r6, lr}
+ ldr r0, _02239DD4 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ add r6, r0, #0
+ mov r5, #0
+_02239DA6:
+ add r0, r6, #0
+ add r1, r5, #0
+ bl FUN_020265E0
+ add r4, r0, #0
+ add r0, r6, #0
+ add r1, r5, #0
+ bl FUN_02026600
+ add r1, r0, #0
+ cmp r4, #0
+ beq _02239DCA
+ cmp r1, #0
+ beq _02239DCA
+ add r0, r4, #0
+ bl MOD18_02239CA0
+ strb r5, [r0, #5]
+_02239DCA:
+ add r5, r5, #1
+ cmp r5, #0xff
+ blt _02239DA6
+ pop {r4, r5, r6, pc}
+ nop
+_02239DD4: .word 0x02251380
+ thumb_func_end MOD18_02239D94
+
+ thumb_func_start MOD18_02239DD8
+MOD18_02239DD8: ; 0x02239DD8
+ push {r3, lr}
+ bl FUN_02031190
+ cmp r0, #0
+ bne _02239DEA
+ bl MOD18_0223C9B8
+ bl MOD18_0223C898
+_02239DEA:
+ pop {r3, pc}
+ thumb_func_end MOD18_02239DD8
+
+ thumb_func_start MOD18_02239DEC
+MOD18_02239DEC: ; 0x02239DEC
+ push {r4, r5, r6, r7}
+ ldr r3, _02239E24 ; =0x02251380
+ ldr r5, _02239E28 ; =0x0000020A
+ ldr r4, [r3]
+ mov r2, #0
+ add r3, r4, #0
+ sub r6, r5, #2
+_02239DFA:
+ ldrh r7, [r3, r6]
+ cmp r0, r7
+ bne _02239E16
+ ldrh r7, [r3, r5]
+ cmp r1, r7
+ bne _02239E16
+ mov r0, #0x82
+ lsl r0, r0, #2
+ add r1, r4, r0
+ mov r0, #6
+ mul r0, r2
+ add r0, r1, r0
+ pop {r4, r5, r6, r7}
+ bx lr
+_02239E16:
+ add r2, r2, #1
+ add r3, r3, #6
+ cmp r2, #0xfa
+ blt _02239DFA
+ mov r0, #0
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+_02239E24: .word 0x02251380
+_02239E28: .word 0x0000020A
+ thumb_func_end MOD18_02239DEC
+
+ thumb_func_start MOD18_02239E2C
+MOD18_02239E2C: ; 0x02239E2C
+ push {r3, r4, r5, r6, r7, lr}
+ add r2, r1, #0
+ add r6, r1, #0
+ str r2, [sp]
+ add r2, #0x50
+ add r4, r0, #0
+ add r7, r0, #0
+ sub r6, #0x50
+ str r2, [sp]
+ sub r4, #0x50
+ add r7, #0x50
+ mov r5, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ beq _02239E50
+ sub r0, r5, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02239E50:
+ cmp r4, #0x40
+ bge _02239E56
+ mov r4, #0x40
+_02239E56:
+ mov r0, #2
+ lsl r0, r0, #8
+ cmp r7, r0
+ ble _02239E60
+ add r7, r0, #0
+_02239E60:
+ cmp r6, #0x20
+ bge _02239E66
+ mov r6, #0x20
+_02239E66:
+ mov r1, #0x1e
+ ldr r0, [sp]
+ lsl r1, r1, #4
+ cmp r0, r1
+ ble _02239E72
+ str r1, [sp]
+_02239E72:
+ ldr r0, _02239EF4 ; =0x02251380
+ mov r2, #0
+ ldr r3, [r0]
+_02239E78:
+ ldr r0, _02239EF8 ; =0x0000020A
+ ldrh r1, [r3, r0]
+ cmp r1, r6
+ blt _02239E96
+ ldr r0, [sp]
+ cmp r1, r0
+ bgt _02239E96
+ mov r0, #0x82
+ lsl r0, r0, #2
+ ldrh r0, [r3, r0]
+ cmp r0, r4
+ ble _02239E96
+ cmp r0, r7
+ bge _02239E96
+ add r5, r5, #1
+_02239E96:
+ add r2, r2, #1
+ add r3, r3, #6
+ cmp r2, #0xfa
+ blt _02239E78
+ cmp r5, #0
+ bne _02239EA8
+ mov r0, #0
+ mvn r0, r0
+ pop {r3, r4, r5, r6, r7, pc}
+_02239EA8:
+ bl FUN_0201B9EC
+ add r1, r5, #0
+ bl _s32_div_f
+ ldr r0, _02239EF4 ; =0x02251380
+ mov r3, #0
+ ldr r2, [r0]
+ mov ip, r1
+ add r5, r3, #0
+_02239EBC:
+ ldr r0, _02239EF8 ; =0x0000020A
+ ldrh r1, [r2, r0]
+ cmp r1, r6
+ blt _02239EE4
+ ldr r0, [sp]
+ cmp r1, r0
+ bgt _02239EE4
+ mov r0, #0x82
+ lsl r0, r0, #2
+ ldrh r0, [r2, r0]
+ cmp r0, r4
+ ble _02239EE4
+ cmp r0, r7
+ bge _02239EE4
+ mov r0, ip
+ cmp r3, r0
+ bne _02239EE2
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02239EE2:
+ add r3, r3, #1
+_02239EE4:
+ add r5, r5, #1
+ add r2, r2, #6
+ cmp r5, #0xfa
+ blt _02239EBC
+ mov r0, #0
+ mvn r0, r0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02239EF4: .word 0x02251380
+_02239EF8: .word 0x0000020A
+ thumb_func_end MOD18_02239E2C
+
+ thumb_func_start MOD18_02239EFC
+MOD18_02239EFC: ; 0x02239EFC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02239F2C ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, _02239F30 ; =0x000007E4
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _02239F12
+ mov r1, #4
+ bl FUN_020021EC
+_02239F12:
+ ldr r1, _02239F2C ; =0x02251380
+ ldr r0, _02239F30 ; =0x000007E4
+ ldr r2, [r1]
+ mov r3, #0
+ str r3, [r2, r0]
+ ldr r1, [r1]
+ add r0, #0x98
+ str r3, [r1, r0]
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+ nop
+_02239F2C: .word 0x02251380
+_02239F30: .word 0x000007E4
+ thumb_func_end MOD18_02239EFC
+
+ thumb_func_start MOD18_02239F34
+MOD18_02239F34: ; 0x02239F34
+ push {r4, lr}
+ add r4, r2, #0
+ bl FUN_02031190
+ ldrb r1, [r4]
+ cmp r1, r0
+ bne _02239F84
+ bl FUN_02030FE0
+ cmp r0, #0
+ beq _02239F84
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x13
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r2, _02239F88 ; =0x02251380
+ mov r1, #0x9e
+ ldr r3, [r2]
+ lsl r1, r1, #4
+ str r0, [r3, r1]
+ ldr r1, [r2]
+ ldr r0, _02239F8C ; =MOD18_02239F98
+ mov r2, #0
+ bl FUN_0200CA44
+ ldr r2, _02239F88 ; =0x02251380
+ ldr r1, _02239F90 ; =0x0000087C
+ ldr r3, [r2]
+ str r0, [r3, r1]
+ ldr r2, [r2]
+ mov r0, #0
+ ldr r1, [r2, r1]
+ ldr r2, _02239F94 ; =MOD18_02239EFC
+ bl MOD18_0223E688
+ bl FUN_0204F7E4
+_02239F84:
+ pop {r4, pc}
+ nop
+_02239F88: .word 0x02251380
+_02239F8C: .word MOD18_02239F98
+_02239F90: .word 0x0000087C
+_02239F94: .word MOD18_02239EFC
+ thumb_func_end MOD18_02239F34
+
+ thumb_func_start MOD18_02239F98
+MOD18_02239F98: ; 0x02239F98
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, _0223A044 ; =0x02251380
+ ldr r2, [r0]
+ mov r0, #0x9e
+ lsl r0, r0, #4
+ ldr r1, [r2, r0]
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ beq _02239FEA
+ lsl r0, r1, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0223A03E
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, _0223A044 ; =0x02251380
+ ldr r1, _0223A048 ; =0x0224FFE6
+ ldr r0, [r0]
+ ldr r2, _0223A04C ; =0x000003D9
+ ldr r0, [r0]
+ mov r3, #0xb
+ ldr r0, [r0, #8]
+ bl FUN_02002198
+ ldr r2, _0223A044 ; =0x02251380
+ ldr r1, _0223A050 ; =0x000007E4
+ ldr r3, [r2]
+ add sp, #8
+ str r0, [r3, r1]
+ mov r3, #0
+ mov r0, #0x9e
+ ldr r1, [r2]
+ mvn r3, r3
+ lsl r0, r0, #4
+ str r3, [r1, r0]
+ pop {r4, pc}
+_02239FEA:
+ ldr r0, _0223A050 ; =0x000007E4
+ mov r1, #4
+ ldr r0, [r2, r0]
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0223A03E
+ cmp r0, #0
+ add r0, sp, #4
+ bne _0223A008
+ mov r1, #1
+ strb r1, [r0]
+ b _0223A010
+_0223A008:
+ mov r1, #0
+ strb r1, [r0]
+ bl FUN_0204F7FC
+_0223A010:
+ mov r0, #0x41
+ add r1, sp, #4
+ bl FUN_020311D0
+ ldr r0, _0223A044 ; =0x02251380
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _0223A050 ; =0x000007E4
+ str r2, [r1, r0]
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ bl MOD18_0223E6A0
+ ldr r0, _0223A044 ; =0x02251380
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _0223A054 ; =0x0000087C
+ str r2, [r1, r0]
+_0223A03E:
+ add sp, #8
+ pop {r4, pc}
+ nop
+_0223A044: .word 0x02251380
+_0223A048: .word 0x0224FFE6
+_0223A04C: .word 0x000003D9
+_0223A050: .word 0x000007E4
+_0223A054: .word 0x0000087C
+ thumb_func_end MOD18_02239F98
+
+ thumb_func_start MOD18_0223A058
+MOD18_0223A058: ; 0x0223A058
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, _0223A0DC ; =0x02251380
+ add r7, r2, #0
+ ldr r0, [r0]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ str r0, [sp]
+ ldr r0, _0223A0DC ; =0x02251380
+ lsl r6, r5, #2
+ ldr r1, [r0]
+ ldr r0, _0223A0E0 ; =0x000007E8
+ add r2, r1, r6
+ ldr r4, [r2, r0]
+ add r0, sp, #4
+ strb r5, [r0]
+ ldrb r0, [r7]
+ cmp r0, #0
+ beq _0223A0C4
+ cmp r4, #0
+ beq _0223A0C4
+ ldrb r0, [r4, #4]
+ cmp r0, #0xff
+ bne _0223A0D6
+ mov r0, #0x42
+ add r1, sp, #4
+ mov r2, #1
+ bl FUN_02030BC4
+ mov r0, #0xff
+ strb r0, [r4, #4]
+ ldr r0, _0223A0E4 ; =0x0000FFFF
+ strh r0, [r4]
+ strh r0, [r4, #2]
+ ldrb r1, [r4, #5]
+ ldr r0, [sp]
+ bl FUN_020265B8
+ ldr r1, _0223A0DC ; =0x02251380
+ mov r3, #1
+ ldr r0, [r1]
+ add sp, #8
+ add r2, r0, r5
+ ldr r0, _0223A0E8 ; =0x00000808
+ strb r3, [r2, r0]
+ ldr r1, [r1]
+ mov r2, #0
+ add r1, r1, r6
+ sub r0, #0x20
+ str r2, [r1, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223A0C4:
+ add r2, r1, r5
+ ldr r1, _0223A0E8 ; =0x00000808
+ mov r0, #0
+ strb r0, [r2, r1]
+ ldr r2, _0223A0DC ; =0x02251380
+ sub r1, #0x20
+ ldr r2, [r2]
+ add r2, r2, r6
+ str r0, [r2, r1]
+_0223A0D6:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223A0DC: .word 0x02251380
+_0223A0E0: .word 0x000007E8
+_0223A0E4: .word 0x0000FFFF
+_0223A0E8: .word 0x00000808
+ thumb_func_end MOD18_0223A058
+
+ thumb_func_start MOD18_0223A0EC
+MOD18_0223A0EC: ; 0x0223A0EC
+ push {r4, lr}
+ add r4, r2, #0
+ bl FUN_02031190
+ ldrb r1, [r4]
+ cmp r1, r0
+ bne _0223A108
+ bl FUN_0204F7E4
+ ldr r0, _0223A118 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD18_0223AC24
+_0223A108:
+ ldr r0, _0223A118 ; =0x02251380
+ mov r2, #1
+ ldr r1, [r0]
+ ldrb r0, [r4]
+ add r1, r1, r0
+ ldr r0, _0223A11C ; =0x000008C4
+ strb r2, [r1, r0]
+ pop {r4, pc}
+ .align 2, 0
+_0223A118: .word 0x02251380
+_0223A11C: .word 0x000008C4
+ thumb_func_end MOD18_0223A0EC
+
+ thumb_func_start MOD18_0223A120
+MOD18_0223A120: ; 0x0223A120
+ ldr r1, _0223A130 ; =0x02251380
+ mov r2, #0
+ ldr r1, [r1]
+ add r1, r1, r0
+ ldr r0, _0223A134 ; =0x00000808
+ strb r2, [r1, r0]
+ bx lr
+ nop
+_0223A130: .word 0x02251380
+_0223A134: .word 0x00000808
+ thumb_func_end MOD18_0223A120
+
+ thumb_func_start MOD18_0223A138
+MOD18_0223A138: ; 0x0223A138
+ push {r3, lr}
+ add r1, sp, #0
+ strb r0, [r1]
+ ldrb r0, [r2]
+ strb r0, [r1, #1]
+ ldrb r0, [r2, #1]
+ strb r0, [r1, #2]
+ mov r0, #0x45
+ add r1, sp, #0
+ bl FUN_02030C4C
+ pop {r3, pc}
+ thumb_func_end MOD18_0223A138
+
+ thumb_func_start MOD18_0223A150
+MOD18_0223A150: ; 0x0223A150
+ mov r0, #2
+ bx lr
+ thumb_func_end MOD18_0223A150
+
+ thumb_func_start MOD18_0223A154
+MOD18_0223A154: ; 0x0223A154
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ ldrb r4, [r5]
+ bl FUN_02031190
+ cmp r4, r0
+ beq _0223A17A
+ ldr r1, _0223A17C ; =0x02251380
+ ldrb r3, [r5, #1]
+ ldr r0, [r1]
+ add r2, r0, r4
+ ldr r0, _0223A180 ; =0x000008CC
+ strb r3, [r2, r0]
+ ldr r2, [r1]
+ ldrb r1, [r5]
+ ldrb r3, [r5, #2]
+ add r0, #8
+ add r1, r2, r1
+ strb r3, [r1, r0]
+_0223A17A:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223A17C: .word 0x02251380
+_0223A180: .word 0x000008CC
+ thumb_func_end MOD18_0223A154
+
+ thumb_func_start MOD18_0223A184
+MOD18_0223A184: ; 0x0223A184
+ mov r0, #3
+ bx lr
+ thumb_func_end MOD18_0223A184
+
+ thumb_func_start MOD18_0223A188
+MOD18_0223A188: ; 0x0223A188
+ push {r3, r4, r5, lr}
+ sub sp, #0xa8
+ ldr r5, _0223A2A4 ; =0x02250080
+ add r4, r0, #0
+ add r3, sp, #0x80
+ mov r2, #5
+_0223A194:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0223A194
+ add r0, sp, #0x80
+ bl FUN_0201E66C
+ ldr r5, _0223A2A8 ; =0x02250000
+ add r3, sp, #0x70
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _0223A2AC ; =0x02250010
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_02016C18
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x1d
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02018744
+ ldr r5, _0223A2B0 ; =0x0225002C
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x1d
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ ldr r5, _0223A2B4 ; =0x02250048
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x1d
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _0223A2B8 ; =0x02250064
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x1d
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02018744
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x1d
+ bl FUN_02017F18
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x1d
+ bl FUN_02017F18
+ add sp, #0xa8
+ pop {r3, r4, r5, pc}
+ nop
+_0223A2A4: .word 0x02250080
+_0223A2A8: .word 0x02250000
+_0223A2AC: .word 0x02250010
+_0223A2B0: .word 0x0225002C
+_0223A2B4: .word 0x02250048
+_0223A2B8: .word 0x02250064
+ thumb_func_end MOD18_0223A188
+
+ thumb_func_start MOD18_0223A2BC
+MOD18_0223A2BC: ; 0x0223A2BC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r3, #0
+ cmp r4, #0
+ beq _0223A2DE
+ ldr r0, _0223A3C4 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_02020130
+ b _0223A2EE
+_0223A2DE:
+ ldr r0, _0223A3C4 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_02020130
+_0223A2EE:
+ cmp r7, #0
+ beq _0223A30A
+ ldr r0, _0223A3C4 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #2
+ bl FUN_02020130
+ ldr r0, _0223A3C8 ; =0x000006A4
+ bl FUN_020054C8
+ b _0223A33C
+_0223A30A:
+ cmp r4, #0
+ beq _0223A326
+ ldr r0, _0223A3C4 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #3
+ bl FUN_02020130
+ ldr r0, _0223A3CC ; =0x000006A2
+ bl FUN_020054C8
+ b _0223A33C
+_0223A326:
+ ldr r0, _0223A3C4 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #4
+ bl FUN_02020130
+ ldr r0, _0223A3D0 ; =0x000006A3
+ bl FUN_020054C8
+_0223A33C:
+ ldr r0, _0223A3C4 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, _0223A3C4 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ add r5, #8
+ lsl r0, r5, #0xc
+ add r6, #8
+ str r0, [sp]
+ lsl r0, r6, #0xc
+ str r0, [sp, #4]
+ ldr r0, _0223A3C4 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #0
+ bl FUN_02020044
+ ldr r0, _0223A3C4 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #0
+ bl FUN_02020044
+ ldr r0, [sp, #0x20]
+ cmp r0, #0
+ beq _0223A3BE
+ ldr r0, _0223A3C4 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #5
+ bl FUN_02020130
+ ldr r0, _0223A3C4 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, _0223A3C4 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #0
+ bl FUN_02020044
+_0223A3BE:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0223A3C4: .word 0x02251380
+_0223A3C8: .word 0x000006A4
+_0223A3CC: .word 0x000006A2
+_0223A3D0: .word 0x000006A3
+ thumb_func_end MOD18_0223A2BC
+
+ thumb_func_start MOD18_0223A3D4
+MOD18_0223A3D4: ; 0x0223A3D4
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ mov r1, #0
+ add r5, r0, #0
+ mov r0, #0x3a
+ add r2, r1, #0
+ bl FUN_0200433C
+ bl MOD18_022396A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r2, #5
+ mov r0, #3
+ mov r1, #0x1d
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r0, #0x1d
+ bl FUN_02016B94
+ add r4, r0, #0
+ ldr r0, _0223A4CC ; =0x02251380
+ add r1, r4, #0
+ ldr r0, [r0]
+ str r4, [r0, #4]
+ ldr r0, _0223A4D0 ; =MOD18_0223C6CC
+ bl FUN_02015F10
+ bl MOD18_0223D638
+ add r1, r4, #0
+ bl MOD18_0224DBB0
+ add r0, r4, #0
+ bl MOD18_0223A188
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x1d
+ str r0, [sp, #4]
+ ldr r2, _0223A4D4 ; =0x000001E2
+ add r0, r4, #0
+ mov r1, #3
+ mov r3, #0xa
+ bl FUN_0200CD68
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0x1d
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x34
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0x1d
+ str r0, [sp, #0xc]
+ mov r0, #0x34
+ add r2, r4, #0
+ add r3, r1, #0
+ bl FUN_0200687C
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ add r6, r0, #0
+ str r3, [sp, #8]
+ mov r0, #0x1d
+ str r0, [sp, #0xc]
+ mov r0, #0x34
+ mov r1, #2
+ add r2, r4, #0
+ bl FUN_020068C8
+ mov r3, #0x80
+ str r3, [sp]
+ mov r0, #0x1d
+ str r0, [sp, #4]
+ mov r0, #0x32
+ mov r1, #0x34
+ mov r2, #0
+ add r3, #0xc0
+ bl FUN_02006930
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ bl MOD18_0223AF48
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_0223A4CC: .word 0x02251380
+_0223A4D0: .word MOD18_0223C6CC
+_0223A4D4: .word 0x000001E2
+ thumb_func_end MOD18_0223A3D4
+
+ thumb_func_start MOD18_0223A4D8
+MOD18_0223A4D8: ; 0x0223A4D8
+ push {r3, lr}
+ sub sp, #0x10
+ ldr r0, _0223A55C ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD18_0223B9BC
+ ldr r0, _0223A55C ; =0x02251380
+ mov r1, #1
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl FUN_02017CD0
+ ldr r0, _0223A55C ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD18_0223B480
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x1d
+ str r0, [sp, #0xc]
+ ldr r2, _0223A55C ; =0x02251380
+ mov r0, #0x37
+ ldr r2, [r2]
+ mov r1, #9
+ ldr r2, [r2, #4]
+ mov r3, #2
+ bl FUN_0200687C
+ ldr r0, _0223A55C ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD18_0223B6A4
+ mov r0, #0
+ mov r1, #3
+ bl FUN_020178BC
+ mov r0, #1
+ mov r1, #2
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #1
+ bl FUN_020178BC
+ mov r0, #3
+ mov r1, #0
+ bl FUN_020178BC
+ bl MOD18_0223C37C
+ bl MOD18_0223C570
+ ldr r0, _0223A55C ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD18_0223BB7C
+ add sp, #0x10
+ pop {r3, pc}
+ nop
+_0223A55C: .word 0x02251380
+ thumb_func_end MOD18_0223A4D8
+
+ thumb_func_start MOD18_0223A560
+MOD18_0223A560: ; 0x0223A560
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _0223A648 ; =0x02251380
+ mov r1, #0
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl FUN_020178A0
+ ldr r0, _0223A648 ; =0x02251380
+ mov r1, #1
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl FUN_020178A0
+ ldr r0, _0223A648 ; =0x02251380
+ mov r1, #2
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl FUN_020178A0
+ ldr r0, _0223A648 ; =0x02251380
+ mov r1, #3
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl FUN_020178A0
+ ldr r0, _0223A648 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02009C0C
+ ldr r0, _0223A648 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02009C0C
+ ldr r0, _0223A648 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl FUN_02009E04
+ ldr r0, _0223A648 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl FUN_02009E04
+ mov r6, #0
+ ldr r7, _0223A648 ; =0x02251380
+ add r4, r6, #0
+_0223A5D2:
+ ldr r0, [r7]
+ add r1, r0, r4
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02008E2C
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _0223A5D2
+ mov r4, #0
+ add r6, r4, #0
+_0223A5EC:
+ ldr r0, [r5, #0x18]
+ cmp r0, #0
+ beq _0223A5F8
+ bl FUN_02016A18
+ str r6, [r5, #0x18]
+_0223A5F8:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _0223A5EC
+ ldr r0, _0223A648 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ ldr r0, _0223A648 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl FUN_02016A18
+ ldr r0, _0223A648 ; =0x02251380
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #4]
+ mov r0, #0x1d
+ bl FUN_020168D0
+ bl MOD18_0223D638
+ ldr r1, _0223A648 ; =0x02251380
+ ldr r1, [r1]
+ ldr r1, [r1]
+ ldr r1, [r1, #8]
+ bl MOD18_0224DBB0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223A648: .word 0x02251380
+ thumb_func_end MOD18_0223A560
+
+ thumb_func_start MOD18_0223A64C
+MOD18_0223A64C: ; 0x0223A64C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r6, r0, #0
+ ldr r0, [r4]
+ ldr r5, [r4, #0x10]
+ cmp r0, #0x1b
+ bls _0223A65E
+ b _0223AC10
+_0223A65E:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223A66A: ; jump table
+ .short _0223A6A2 - _0223A66A - 2 ; case 0
+ .short _0223A6BE - _0223A66A - 2 ; case 1
+ .short _0223A6E6 - _0223A66A - 2 ; case 2
+ .short _0223A704 - _0223A66A - 2 ; case 3
+ .short _0223A71C - _0223A66A - 2 ; case 4
+ .short _0223A72C - _0223A66A - 2 ; case 5
+ .short _0223A73A - _0223A66A - 2 ; case 6
+ .short _0223A780 - _0223A66A - 2 ; case 7
+ .short _0223A79A - _0223A66A - 2 ; case 8
+ .short _0223A7AC - _0223A66A - 2 ; case 9
+ .short _0223A7DE - _0223A66A - 2 ; case 10
+ .short _0223A81E - _0223A66A - 2 ; case 11
+ .short _0223A844 - _0223A66A - 2 ; case 12
+ .short _0223A87E - _0223A66A - 2 ; case 13
+ .short _0223A8A2 - _0223A66A - 2 ; case 14
+ .short _0223A8E4 - _0223A66A - 2 ; case 15
+ .short _0223A934 - _0223A66A - 2 ; case 16
+ .short _0223A958 - _0223A66A - 2 ; case 17
+ .short _0223A9A8 - _0223A66A - 2 ; case 18
+ .short _0223A9DC - _0223A66A - 2 ; case 19
+ .short _0223AA08 - _0223A66A - 2 ; case 20
+ .short _0223AA4C - _0223A66A - 2 ; case 21
+ .short _0223AAD6 - _0223A66A - 2 ; case 22
+ .short _0223AB28 - _0223A66A - 2 ; case 23
+ .short _0223AB58 - _0223A66A - 2 ; case 24
+ .short _0223AB94 - _0223A66A - 2 ; case 25
+ .short _0223ABAC - _0223A66A - 2 ; case 26
+ .short _0223ABDC - _0223A66A - 2 ; case 27
+_0223A6A2:
+ mov r0, #0
+ bl MOD18_02247970
+ bl MOD18_0223CC80
+ bl FUN_0204CC48
+ bl MOD18_022451BC
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A6BE:
+ ldr r0, [r5, #0x68]
+ bl MOD18_0224484C
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #2
+ mov r1, #0x10
+ mov r2, #0x12
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A6E6:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223A7E8
+ ldr r0, [r5, #0x68]
+ cmp r0, #0
+ bne _0223A7E8
+ add r0, r5, #0
+ bl FUN_02037394
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A704:
+ add r0, r5, #0
+ bl FUN_0203739C
+ cmp r0, #0
+ bne _0223A7E8
+ bl FUN_02033ED0
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A71C:
+ add r0, r4, #0
+ bl MOD18_0223A3D4
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A72C:
+ bl MOD18_0223A4D8
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A73A:
+ bl FUN_02033E74
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x1d
+ mov r1, #0x11
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A780:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223A7E8
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, _0223AB00 ; =0x00000621
+ bl FUN_020054C8
+ mov r0, #8
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A79A:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0x14
+ ble _0223A7E8
+ mov r0, #9
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A7AC:
+ bl MOD18_0223D638
+ ldr r2, [r4, #0xc]
+ mov r1, #0
+ bl MOD18_0224DE5C
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x3e
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+ ldr r1, _0223AB04 ; =0x02251380
+ add sp, #0xc
+ ldr r2, [r1]
+ mov r1, #0x9e
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A7DE:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ cmp r0, #0x50
+ bgt _0223A7EA
+_0223A7E8:
+ b _0223AC10
+_0223A7EA:
+ ldr r0, _0223AB04 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r5, r0, #0
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add r0, r5, #0
+ bl FUN_02026620
+ cmp r0, #0
+ beq _0223A816
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A816:
+ mov r0, #0xd
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A81E:
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x55
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r1, _0223AB04 ; =0x02251380
+ add sp, #0xc
+ ldr r2, [r1]
+ mov r1, #0x9e
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A844:
+ ldr r0, _0223AB04 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x9e
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0223A922
+ ldr r0, _0223AB08 ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0
+ bne _0223A86C
+ ldr r0, _0223AB0C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _0223A922
+_0223A86C:
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A87E:
+ add r0, r4, #0
+ bl MOD18_0223C1F0
+ ldr r0, _0223AB04 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD18_0223C078
+ add r0, r4, #0
+ bl MOD18_0223B2D4
+ ldr r0, _0223AB04 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bl FUN_0201FDEC
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0223A8A2:
+ add r0, r4, #0
+ bl MOD18_0223B2D4
+ ldr r0, _0223AB04 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bl FUN_0201FDEC
+ ldr r0, [r4, #8]
+ sub r0, r0, #1
+ str r0, [r4, #8]
+ bne _0223A922
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x40
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r1, _0223AB04 ; =0x02251380
+ ldr r2, [r1]
+ mov r1, #0x9e
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ ldr r0, _0223AB10 ; =0x000005E3
+ bl FUN_020054C8
+ mov r0, #0x3c
+ str r0, [r4, #0x4c]
+ mov r0, #0xf
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A8E4:
+ ldr r0, _0223AB04 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bl FUN_0201FDEC
+ ldr r0, _0223AB04 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x9e
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0223A922
+ ldr r0, [r4, #0x4c]
+ sub r0, r0, #1
+ str r0, [r4, #0x4c]
+ ldr r0, _0223AB08 ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0
+ bne _0223A924
+ ldr r0, _0223AB0C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ bne _0223A924
+ ldr r0, [r4, #0x4c]
+ cmp r0, #0
+ beq _0223A924
+_0223A922:
+ b _0223AC10
+_0223A924:
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ mov r0, #0x10
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A934:
+ ldr r0, _0223AB04 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bl FUN_0201FDEC
+ add r0, r4, #0
+ bl MOD18_0223BEE4
+ cmp r0, #0
+ beq _0223A950
+ mov r0, #0x11
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A950:
+ mov r0, #0x12
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A958:
+ ldr r0, _0223AB04 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bl FUN_0201FDEC
+ ldr r0, _0223AB04 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x9e
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0223AA5A
+ ldr r0, _0223AB08 ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0
+ bne _0223A98A
+ ldr r0, _0223AB0C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _0223AA5A
+_0223A98A:
+ add r0, r4, #0
+ bl MOD18_0223BF84
+ cmp r0, #0
+ beq _0223A9A0
+ mov r0, #0x3c
+ str r0, [r4, #0x4c]
+ mov r0, #0xf
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A9A0:
+ mov r0, #0x10
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A9A8:
+ ldr r0, _0223AB04 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bl FUN_0201FDEC
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x1d
+ mov r1, #0x10
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223A9DC:
+ ldr r0, _0223AB04 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bl FUN_0201FDEC
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223AA5A
+ bl FUN_02033ED0
+ add r0, r4, #0
+ bl MOD18_0223A560
+ add r0, r5, #0
+ bl FUN_0204649C
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223AA08:
+ add r0, r5, #0
+ bl FUN_020464A4
+ cmp r0, #0
+ beq _0223AA5A
+ add r0, r5, #0
+ bl MOD18_02244824
+ str r0, [r5, #0x68]
+ bl FUN_02033E74
+ bl FUN_0204F7E4
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F4608
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #4
+ str r1, [sp, #8]
+ mov r1, #0x11
+ mov r2, #0x13
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223AA4C:
+ mov r0, #0
+ bl FUN_0200E394
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _0223AA5C
+_0223AA5A:
+ b _0223AC10
+_0223AA5C:
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F4608
+ ldr r0, [r4, #0x10]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F45E8
+ mov r3, #0x80
+ str r3, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #0x32
+ mov r1, #0x34
+ mov r2, #0
+ add r3, #0xc0
+ bl FUN_02006930
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x10]
+ ldr r2, _0223AB14 ; =0x000003D9
+ ldr r0, [r0, #8]
+ mov r1, #3
+ mov r3, #0xb
+ bl FUN_0200CB00
+ bl FUN_0204CC9C
+ bl MOD18_022451EC
+ bl MOD18_0223CC94
+ add r1, r4, #0
+ mov r0, #0x43
+ add r1, #0x50
+ bl FUN_020311D0
+ bl FUN_0204F7FC
+ ldr r0, _0223AB04 ; =0x02251380
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #0x22
+ lsl r0, r0, #6
+ str r2, [r1, r0]
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r6, #0
+ bl FUN_0200CAB4
+ mov r0, #1
+ bl MOD18_02247970
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0223AAD6:
+ ldr r1, _0223AB04 ; =0x02251380
+ ldr r0, _0223AB18 ; =0x000009E8
+ ldr r2, [r1]
+ mov r3, #1
+ strb r3, [r2, r0]
+ ldr r2, [r4, #8]
+ sub r2, r2, #1
+ str r2, [r4, #8]
+ bne _0223AAF2
+ ldr r1, [r1]
+ mov r2, #0x64
+ strb r2, [r1, r0]
+ mov r0, #0x17
+ str r0, [r4]
+_0223AAF2:
+ ldr r0, _0223AB04 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD18_0223C078
+ ldr r0, _0223AB04 ; =0x02251380
+ b _0223AB1C
+ .align 2, 0
+_0223AB00: .word 0x00000621
+_0223AB04: .word 0x02251380
+_0223AB08: .word 0x021C48F8
+_0223AB0C: .word 0x021C48B8
+_0223AB10: .word 0x000005E3
+_0223AB14: .word 0x000003D9
+_0223AB18: .word 0x000009E8
+_0223AB1C:
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bl FUN_0201FDEC
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0223AB28:
+ ldr r0, _0223AC14 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bl FUN_0201FDEC
+ mov r0, #0xf
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x1d
+ mov r1, #2
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldr r0, _0223AC18 ; =0x000006A1
+ bl FUN_020054C8
+ mov r0, #0x18
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223AB58:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0223AB86
+ mov r6, #0
+ ldr r7, _0223AC14 ; =0x02251380
+ add r5, r6, #0
+_0223AB66:
+ ldr r0, [r7]
+ add r1, r0, r5
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #8
+ blt _0223AB66
+ mov r0, #0x19
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223AB86:
+ ldr r0, _0223AC14 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #0x20]
+ bl FUN_0201FDEC
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0223AB94:
+ mov r0, #1
+ add r1, r0, #0
+ sub r1, #0x11
+ add r2, r1, #0
+ mov r3, #7
+ str r0, [sp]
+ bl FUN_0200A208
+ mov r0, #0x1a
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223ABAC:
+ mov r0, #0
+ bl FUN_0200E388
+ mov r0, #0
+ bl FUN_0200E394
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x3f
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r1, _0223AC14 ; =0x02251380
+ add sp, #0xc
+ ldr r2, [r1]
+ mov r1, #0x9e
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ mov r0, #0x3c
+ str r0, [r4, #0x4c]
+ mov r0, #0xf
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_0223ABDC:
+ ldr r0, _0223AC14 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x9e
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0223AC10
+ ldr r0, _0223AC1C ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0
+ bne _0223AC04
+ ldr r0, _0223AC20 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _0223AC10
+_0223AC04:
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ mov r0, #0x13
+ str r0, [r4]
+_0223AC10:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223AC14: .word 0x02251380
+_0223AC18: .word 0x000006A1
+_0223AC1C: .word 0x021C48F8
+_0223AC20: .word 0x021C48B8
+ thumb_func_end MOD18_0223A64C
+
+ thumb_func_start MOD18_0223AC24
+MOD18_0223AC24: ; 0x0223AC24
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0xb
+ bl FUN_02029160
+ add r1, r0, #0
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ mov r2, #1
+ bl FUN_02028AD4
+ mov r0, #0xb
+ mov r1, #0x54
+ bl FUN_020169D8
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x54
+ bl MI_CpuFill8
+ str r5, [r4, #0x10]
+ ldr r0, [r5, #4]
+ ldr r0, [r0, #0x1c]
+ bl MOD05_021F4608
+ ldr r0, [r5, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205EDBC
+ ldr r0, _0223AC78 ; =MOD18_0223A64C
+ add r1, r4, #0
+ mov r2, #0x64
+ bl FUN_0200CA44
+ ldr r1, _0223AC7C ; =0x02251380
+ ldr r2, [r1]
+ mov r1, #0x22
+ lsl r1, r1, #6
+ str r0, [r2, r1]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223AC78: .word MOD18_0223A64C
+_0223AC7C: .word 0x02251380
+ thumb_func_end MOD18_0223AC24
+
+ thumb_func_start MOD18_0223AC80
+MOD18_0223AC80: ; 0x0223AC80
+ ldr r0, _0223ACA0 ; =0x02251380
+ mov r2, #0
+ ldr r3, [r0]
+ mov r0, #0x81
+ lsl r0, r0, #4
+_0223AC8A:
+ ldr r1, [r3, r0]
+ cmp r1, #0
+ bne _0223AC94
+ mov r0, #1
+ bx lr
+_0223AC94:
+ add r2, r2, #1
+ add r3, #0xc
+ cmp r2, #8
+ blt _0223AC8A
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0223ACA0: .word 0x02251380
+ thumb_func_end MOD18_0223AC80
+
+ thumb_func_start MOD18_0223ACA4
+MOD18_0223ACA4: ; 0x0223ACA4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r2, #0
+ ldr r2, _0223AD10 ; =0x02251380
+ mov r3, #0x81
+ ldr r2, [r2]
+ mov ip, r1
+ mov r1, #0
+ add r5, r2, #0
+ lsl r3, r3, #4
+_0223ACB6:
+ ldr r4, [r5, r3]
+ cmp r4, #0
+ bne _0223AD00
+ add r4, r0, #0
+ mov r3, #0x14
+ mul r4, r3
+ ldr r3, _0223AD14 ; =0x02250B30
+ mov r0, #0xc
+ mul r0, r1
+ add r5, r3, r4
+ mov r3, #0x81
+ add r2, r2, r0
+ lsl r3, r3, #4
+ str r5, [r2, r3]
+ ldr r2, _0223AD18 ; =0x02250B3E
+ ldrb r6, [r2, r4]
+ ldr r4, _0223AD10 ; =0x02251380
+ ldr r2, [r4]
+ add r5, r2, r0
+ add r2, r3, #4
+ strb r6, [r5, r2]
+ ldr r2, [r4]
+ mov r6, ip
+ add r5, r2, r0
+ add r2, r3, #5
+ strb r6, [r5, r2]
+ ldr r2, [r4]
+ add r5, r2, r0
+ add r2, r3, #6
+ strb r7, [r5, r2]
+ ldr r2, [r4]
+ mov r5, #0
+ add r0, r2, r0
+ add r3, #8
+ strb r5, [r0, r3]
+ add r0, r1, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223AD00:
+ add r1, r1, #1
+ add r5, #0xc
+ cmp r1, #8
+ blt _0223ACB6
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223AD10: .word 0x02251380
+_0223AD14: .word 0x02250B30
+_0223AD18: .word 0x02250B3E
+ thumb_func_end MOD18_0223ACA4
+
+ thumb_func_start MOD18_0223AD1C
+MOD18_0223AD1C: ; 0x0223AD1C
+ push {r3, r4}
+ ldr r3, [r0]
+ cmp r3, #0
+ bne _0223AD2A
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_0223AD2A:
+ lsr r4, r1, #0x1f
+ add r4, r1, r4
+ ldrb r0, [r0, #0xc]
+ asr r1, r4, #1
+ lsr r4, r2, #0x1f
+ add r4, r2, r4
+ asr r2, r4, #1
+ lsr r0, r0, #1
+ mul r0, r2
+ add r0, r1, r0
+ ldrb r0, [r3, r0]
+ cmp r0, #0x6f
+ beq _0223AD4A
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_0223AD4A:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD18_0223AD1C
+
+ thumb_func_start MOD18_0223AD50
+MOD18_0223AD50: ; 0x0223AD50
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ str r0, [sp]
+ str r1, [sp, #4]
+ add r6, r2, #0
+ bl MOD18_0223AC80
+ cmp r0, #0
+ bne _0223AD68
+ add sp, #0x2c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_0223AD68:
+ ldr r0, [sp]
+ mov r1, #0x14
+ mul r1, r0
+ str r1, [sp, #0xc]
+ ldr r1, _0223AE74 ; =0x02250B3C
+ ldr r0, [sp, #0xc]
+ ldrb r0, [r1, r0]
+ lsr r1, r0, #1
+ ldr r0, [sp, #4]
+ add r0, r0, r1
+ str r0, [sp, #0x1c]
+ ldr r1, _0223AE78 ; =0x02250B3D
+ ldr r0, [sp, #0xc]
+ ldrb r0, [r1, r0]
+ lsr r0, r0, #1
+ add r7, r6, r0
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0xd
+ ble _0223AD94
+ add sp, #0x2c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_0223AD94:
+ cmp r7, #0xa
+ ble _0223AD9E
+ add sp, #0x2c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_0223AD9E:
+ ldr r0, [sp, #4]
+ str r0, [sp, #0x10]
+ add r1, r0, #0
+ ldr r0, [sp, #0x1c]
+ cmp r1, r0
+ bge _0223AE02
+ mov r0, #0xd
+ mul r0, r6
+ str r0, [sp, #0x20]
+_0223ADB0:
+ add r4, r6, #0
+ cmp r6, r7
+ bge _0223ADF6
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #4]
+ ldr r5, [sp, #0x20]
+ sub r0, r1, r0
+ lsl r0, r0, #1
+ str r0, [sp, #0x14]
+_0223ADC2:
+ ldr r1, _0223AE7C ; =0x02250B30
+ ldr r0, [sp, #0xc]
+ sub r2, r4, r6
+ add r0, r1, r0
+ ldr r1, [sp, #0x14]
+ lsl r2, r2, #1
+ bl MOD18_0223AD1C
+ cmp r0, #0
+ beq _0223ADEE
+ ldr r0, _0223AE80 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, [sp, #0x10]
+ add r0, r0, r1
+ add r1, r5, r0
+ ldr r0, _0223AE84 ; =0x000008DC
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _0223ADEE
+ add sp, #0x2c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_0223ADEE:
+ add r4, r4, #1
+ add r5, #0xd
+ cmp r4, r7
+ blt _0223ADC2
+_0223ADF6:
+ ldr r0, [sp, #0x10]
+ add r1, r0, #1
+ ldr r0, [sp, #0x1c]
+ str r1, [sp, #0x10]
+ cmp r1, r0
+ blt _0223ADB0
+_0223AE02:
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ add r2, r6, #0
+ bl MOD18_0223ACA4
+ ldr r1, [sp, #4]
+ str r1, [sp, #8]
+ add r2, r1, #0
+ ldr r1, [sp, #0x1c]
+ cmp r2, r1
+ bge _0223AE6E
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x28]
+ mov r0, #0xd
+ mul r0, r6
+ str r0, [sp, #0x24]
+_0223AE24:
+ add r5, r6, #0
+ cmp r6, r7
+ bge _0223AE62
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ ldr r4, [sp, #0x24]
+ sub r0, r1, r0
+ lsl r0, r0, #1
+ str r0, [sp, #0x18]
+_0223AE36:
+ ldr r1, _0223AE7C ; =0x02250B30
+ ldr r0, [sp, #0xc]
+ sub r2, r5, r6
+ add r0, r1, r0
+ ldr r1, [sp, #0x18]
+ lsl r2, r2, #1
+ bl MOD18_0223AD1C
+ cmp r0, #0
+ beq _0223AE5A
+ ldr r0, _0223AE80 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, [sp, #8]
+ add r0, r0, r1
+ add r2, r4, r0
+ ldr r1, [sp, #0x28]
+ ldr r0, _0223AE84 ; =0x000008DC
+ strb r1, [r2, r0]
+_0223AE5A:
+ add r5, r5, #1
+ add r4, #0xd
+ cmp r5, r7
+ blt _0223AE36
+_0223AE62:
+ ldr r0, [sp, #8]
+ add r1, r0, #1
+ ldr r0, [sp, #0x1c]
+ str r1, [sp, #8]
+ cmp r1, r0
+ blt _0223AE24
+_0223AE6E:
+ mov r0, #1
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223AE74: .word 0x02250B3C
+_0223AE78: .word 0x02250B3D
+_0223AE7C: .word 0x02250B30
+_0223AE80: .word 0x02251380
+_0223AE84: .word 0x000008DC
+ thumb_func_end MOD18_0223AD50
+
+ thumb_func_start MOD18_0223AE88
+MOD18_0223AE88: ; 0x0223AE88
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _0223AED0 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_020377AC
+ add r6, r0, #0
+ bl FUN_02026CC4
+ bl FUN_02025C38
+ add r4, r0, #0
+ add r0, r6, #0
+ bl FUN_02024DA0
+ bl FUN_02024CA4
+ mov r1, #0
+ cmp r0, #0
+ beq _0223AEB6
+ ldrh r0, [r5, #8]
+ b _0223AEB8
+_0223AEB6:
+ ldrh r0, [r5, #4]
+_0223AEB8:
+ add r0, r1, r0
+ cmp r4, #0
+ beq _0223AECC
+ ldrb r1, [r5, #0xe]
+ cmp r1, #6
+ bne _0223AEC6
+ add r0, #0x21
+_0223AEC6:
+ cmp r1, #1
+ bne _0223AECC
+ add r0, #0x42
+_0223AECC:
+ pop {r4, r5, r6, pc}
+ nop
+_0223AED0: .word 0x02251380
+ thumb_func_end MOD18_0223AE88
+
+ thumb_func_start MOD18_0223AED4
+MOD18_0223AED4: ; 0x0223AED4
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ ldr r5, _0223AEF8 ; =0x02250B30
+ add r6, r4, #0
+_0223AEDC:
+ ldrb r0, [r5, #0xe]
+ cmp r0, #0x3c
+ beq _0223AEF2
+ add r0, r5, #0
+ bl MOD18_0223AE88
+ add r6, r6, #1
+ add r4, r4, r0
+ add r5, #0x14
+ cmp r6, #0x55
+ blo _0223AEDC
+_0223AEF2:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ nop
+_0223AEF8: .word 0x02250B30
+ thumb_func_end MOD18_0223AED4
+
+ thumb_func_start MOD18_0223AEFC
+MOD18_0223AEFC: ; 0x0223AEFC
+ push {r4, r5, r6, lr}
+ ldr r5, _0223AF28 ; =0x02250B30
+ add r6, r0, #0
+ mov r4, #0
+_0223AF04:
+ ldrb r0, [r5, #0xe]
+ cmp r0, #0x3c
+ beq _0223AF20
+ add r0, r5, #0
+ bl MOD18_0223AE88
+ sub r6, r6, r0
+ bpl _0223AF18
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_0223AF18:
+ add r4, r4, #1
+ add r5, #0x14
+ cmp r4, #0x55
+ blo _0223AF04
+_0223AF20:
+ bl ErrorHandling
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223AF28: .word 0x02250B30
+ thumb_func_end MOD18_0223AEFC
+
+ thumb_func_start MOD18_0223AF2C
+MOD18_0223AF2C: ; 0x0223AF2C
+ mov r0, #0
+ ldr r3, _0223AF44 ; =0x02250B30
+ add r2, r0, #0
+_0223AF32:
+ ldrb r1, [r3, #0xe]
+ cmp r1, #0x3c
+ blo _0223AF3A
+ add r0, r0, #1
+_0223AF3A:
+ add r2, r2, #1
+ add r3, #0x14
+ cmp r2, #0x55
+ blo _0223AF32
+ bx lr
+ .align 2, 0
+_0223AF44: .word 0x02250B30
+ thumb_func_end MOD18_0223AF2C
+
+ thumb_func_start MOD18_0223AF48
+MOD18_0223AF48: ; 0x0223AF48
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x58
+ str r0, [sp]
+ ldr r0, _0223B1A0 ; =0x02251380
+ str r1, [sp, #4]
+ ldr r0, [r0]
+ str r2, [sp, #8]
+ ldr r0, [r0]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ str r0, [sp, #0x38]
+ bl MOD18_0223AED4
+ str r0, [sp, #0x1c]
+ bl MOD18_0223AF2C
+ str r0, [sp, #0x28]
+ ldr r0, _0223B1A0 ; =0x02251380
+ ldr r4, [r0]
+ add r5, r4, #0
+ add r5, #8
+ ldr r0, [r5, #8]
+ ldr r1, [r5, #0xc]
+ ldr r2, [r4, #8]
+ ldr r3, [r5, #4]
+ bl _ll_mul
+ ldr r2, [r5, #0x10]
+ ldr r3, [r5, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r4, #8]
+ str r3, [r5, #4]
+ add r0, r3, #0
+ mov r1, #0
+ mov r2, #3
+ mov r3, #0
+ bl _ll_mul
+ ldr r0, [sp, #8]
+ add r1, r1, #2
+ str r1, [r0, #0xc]
+ ldr r0, [sp, #0x38]
+ bl FUN_02026620
+ cmp r0, #0
+ beq _0223AFB0
+ ldr r0, [sp, #8]
+ mov r1, #3
+ str r1, [r0, #0xc]
+_0223AFB0:
+ ldr r0, [sp, #8]
+ mov r4, #0
+ ldr r0, [r0, #0xc]
+ cmp r0, #0
+ ble _0223B0BA
+ add r7, sp, #0x48
+ str r4, [sp, #0x20]
+_0223AFBE:
+ ldr r0, _0223B1A0 ; =0x02251380
+ ldr r6, [r0]
+ add r5, r6, #0
+ add r5, #8
+ ldr r0, [r5, #8]
+ ldr r1, [r5, #0xc]
+ ldr r2, [r6, #8]
+ ldr r3, [r5, #4]
+ bl _ll_mul
+ add r2, r0, #0
+ add r3, r1, #0
+ ldr r0, [r5, #0x10]
+ ldr r1, [r5, #0x14]
+ add r0, r0, r2
+ str r0, [r6, #8]
+ adc r1, r3
+ ldr r0, [sp, #0x1c]
+ str r1, [r5, #4]
+ cmp r0, #0
+ bne _0223AFEC
+ ldr r1, [r5, #4]
+ b _0223AFF8
+_0223AFEC:
+ ldr r0, [r5, #4]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x20]
+ mov r1, #0
+ bl _ll_mul
+_0223AFF8:
+ add r0, r1, #0
+ bl MOD18_0223AEFC
+ mov r1, #0x14
+ str r0, [sp, #0x30]
+ mul r1, r0
+ ldr r0, _0223B1A4 ; =0x02250B30
+ add r0, r0, r1
+ ldrb r5, [r0, #0xe]
+ ldr r0, [sp, #0x38]
+ add r1, r5, #0
+ bl FUN_02026688
+ cmp r0, #0
+ beq _0223B0B2
+ cmp r5, #0x2c
+ blt _0223B042
+ cmp r5, #0x3b
+ bgt _0223B042
+ mov r3, #0
+ add r2, r3, #0
+ str r5, [r7]
+ cmp r4, #0
+ ble _0223B03C
+ add r6, sp, #0x48
+ mov r0, #1
+_0223B02C:
+ ldr r1, [r6]
+ cmp r5, r1
+ bne _0223B034
+ add r3, r0, #0
+_0223B034:
+ add r2, r2, #1
+ add r6, r6, #4
+ cmp r2, r4
+ blt _0223B02C
+_0223B03C:
+ cmp r3, #0
+ bne _0223B0B2
+ b _0223B046
+_0223B042:
+ mov r0, #0x1c
+ str r0, [r7]
+_0223B046:
+ ldr r0, _0223B1A0 ; =0x02251380
+ ldr r5, [r0]
+ add r6, r5, #0
+ add r6, #8
+ ldr r0, [r6, #8]
+ ldr r1, [r6, #0xc]
+ ldr r2, [r5, #8]
+ ldr r3, [r6, #4]
+ bl _ll_mul
+ add r3, r0, #0
+ ldr r0, [r6, #0x10]
+ ldr r2, [r6, #0x14]
+ add r0, r0, r3
+ adc r2, r1
+ str r0, [r5, #8]
+ str r2, [r6, #4]
+ add r0, r2, #0
+ mov r1, #0
+ mov r2, #0xd
+ mov r3, #0
+ bl _ll_mul
+ add r6, r5, #0
+ add r6, #8
+ str r1, [sp, #0x18]
+ ldr r0, [r6, #8]
+ ldr r1, [r6, #0xc]
+ ldr r2, [r5, #8]
+ ldr r3, [r6, #4]
+ bl _ll_mul
+ add r3, r0, #0
+ ldr r0, [r6, #0x10]
+ ldr r2, [r6, #0x14]
+ add r0, r0, r3
+ adc r2, r1
+ str r0, [r5, #8]
+ str r2, [r6, #4]
+ add r0, r2, #0
+ mov r1, #0
+ mov r2, #0xa
+ mov r3, #0
+ bl _ll_mul
+ add r2, r1, #0
+ ldr r0, [sp, #0x30]
+ ldr r1, [sp, #0x18]
+ bl MOD18_0223AD50
+ cmp r0, #0
+ beq _0223B0B2
+ add r7, r7, #4
+ add r4, r4, #1
+_0223B0B2:
+ ldr r0, [sp, #8]
+ ldr r0, [r0, #0xc]
+ cmp r4, r0
+ blt _0223AFBE
+_0223B0BA:
+ ldr r0, [sp, #0x38]
+ bl FUN_02026620
+ cmp r0, #0
+ bne _0223B18E
+ mov r0, #0
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x28]
+ mov r1, #0x55
+ sub r0, r1, r0
+ str r0, [sp, #0x24]
+ mov r0, #0
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ str r0, [sp, #0x44]
+_0223B0DA:
+ ldr r0, _0223B1A0 ; =0x02251380
+ ldr r6, [r0]
+ add r5, r6, #0
+ add r5, #8
+ ldr r0, [r5, #8]
+ ldr r1, [r5, #0xc]
+ ldr r2, [r6, #8]
+ ldr r3, [r5, #4]
+ bl _ll_mul
+ ldr r2, [r5, #0x10]
+ ldr r3, [r5, #0x14]
+ add r0, r2, r0
+ str r0, [r6, #8]
+ adc r3, r1
+ ldr r0, [sp, #0x28]
+ str r3, [r5, #4]
+ cmp r0, #0
+ ldr r0, [r5, #4]
+ bne _0223B106
+ str r0, [sp, #0x10]
+ b _0223B112
+_0223B106:
+ ldr r1, [sp, #0x3c]
+ ldr r2, [sp, #0x28]
+ ldr r3, [sp, #0x2c]
+ bl _ll_mul
+ str r1, [sp, #0x10]
+_0223B112:
+ ldr r0, _0223B1A0 ; =0x02251380
+ ldr r5, [r0]
+ add r6, r5, #0
+ add r6, #8
+ ldr r0, [r6, #8]
+ ldr r1, [r6, #0xc]
+ ldr r2, [r5, #8]
+ ldr r3, [r6, #4]
+ bl _ll_mul
+ ldr r2, [r6, #0x10]
+ ldr r3, [r6, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r5, #8]
+ ldr r1, [sp, #0x40]
+ str r3, [r6, #4]
+ add r0, r3, #0
+ mov r2, #0xd
+ mov r3, #0
+ bl _ll_mul
+ add r6, r5, #0
+ add r6, #8
+ add r7, r1, #0
+ ldr r0, [r6, #8]
+ ldr r1, [r6, #0xc]
+ ldr r2, [r5, #8]
+ ldr r3, [r6, #4]
+ bl _ll_mul
+ add r2, r0, #0
+ add r3, r1, #0
+ ldr r0, [r6, #0x10]
+ ldr r1, [r6, #0x14]
+ add r0, r0, r2
+ adc r1, r3
+ str r0, [r5, #8]
+ str r1, [r6, #4]
+ add r0, r1, #0
+ ldr r1, [sp, #0x44]
+ mov r2, #0xa
+ mov r3, #0
+ bl _ll_mul
+ add r2, r1, #0
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #0x24]
+ add r0, r1, r0
+ add r1, r7, #0
+ bl MOD18_0223AD50
+ cmp r0, #0
+ beq _0223B180
+ add r4, r4, #1
+_0223B180:
+ cmp r4, #0xc
+ bgt _0223B18E
+ ldr r0, [sp, #0x34]
+ add r0, r0, #1
+ str r0, [sp, #0x34]
+ cmp r0, #0x64
+ blt _0223B0DA
+_0223B18E:
+ ldr r1, [sp]
+ ldr r2, [sp, #4]
+ ldr r3, [sp, #8]
+ add r0, r4, #0
+ bl MOD18_0223B454
+ add sp, #0x58
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223B1A0: .word 0x02251380
+_0223B1A4: .word 0x02250B30
+ thumb_func_end MOD18_0223AF48
+
+ thumb_func_start MOD18_0223B1A8
+MOD18_0223B1A8: ; 0x0223B1A8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r4, r0, #0
+ ldr r0, _0223B2D0 ; =0x02251380
+ str r1, [sp, #0x10]
+ ldr r1, [r0]
+ mov r0, #0x81
+ lsl r0, r0, #4
+ add r5, r1, r0
+ mov r0, #0xc
+ add r6, r4, #0
+ mul r6, r0
+ add r0, r5, r6
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0x10]
+ mov r1, #1
+ str r2, [sp, #0x14]
+ str r3, [sp, #0x18]
+ bl FUN_0201886C
+ ldr r1, [r5, r6]
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x38]
+ ldrb r2, [r1, #0xd]
+ ldrb r0, [r0, #5]
+ add r6, r4, #0
+ lsl r7, r0, #1
+ ldr r0, [sp, #0x38]
+ ldrb r0, [r0, #6]
+ lsl r0, r0, #1
+ str r0, [sp, #0x30]
+ ldrb r0, [r1, #0xc]
+ add r0, r7, r0
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x30]
+ add r0, r0, r2
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x18]
+ ldr r0, [r0, #0xc]
+ cmp r4, r0
+ blt _0223B1FC
+ mov r6, #4
+_0223B1FC:
+ cmp r4, r0
+ blt _0223B218
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x1d
+ str r0, [sp, #4]
+ add r3, r6, #3
+ ldrh r1, [r1, #0x12]
+ mov r0, #0x37
+ mov r2, #0
+ lsl r3, r3, #5
+ bl FUN_02006930
+ b _0223B248
+_0223B218:
+ ldr r5, [sp, #0x18]
+ ldrh r1, [r1, #0x12]
+ lsl r4, r4, #2
+ add r5, #0x28
+ mov r0, #0x37
+ add r2, r5, r4
+ mov r3, #0x1d
+ bl FUN_02006C08
+ ldr r1, [sp, #0x18]
+ add r1, r1, r4
+ str r0, [r1, #0x18]
+ ldr r0, [r5, r4]
+ mov r1, #0x20
+ ldr r0, [r0, #0xc]
+ bl DC_FlushRange
+ ldr r0, [r5, r4]
+ add r1, r6, #3
+ ldr r0, [r0, #0xc]
+ lsl r1, r1, #5
+ mov r2, #0x20
+ bl GX_LoadBGPltt
+_0223B248:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x38]
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x1d
+ str r0, [sp, #0xc]
+ ldr r1, [r1]
+ ldr r2, [sp, #0x10]
+ ldrh r1, [r1, #0x10]
+ mov r0, #0x37
+ mov r3, #1
+ bl FUN_0200687C
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #0x24]
+ add r1, r0, #0
+ ldr r0, [sp, #0x28]
+ cmp r1, r0
+ bge _0223B2CA
+ add r0, r6, #3
+ lsl r1, r0, #0xc
+ ldr r0, [sp, #0x14]
+ add r6, r0, r1
+ lsl r0, r7, #1
+ str r0, [sp, #0x3c]
+_0223B280:
+ ldr r0, [sp, #0x2c]
+ add r4, r7, #0
+ cmp r7, r0
+ bge _0223B2BE
+ ldr r0, [sp, #0x24]
+ add r0, r0, #4
+ lsl r1, r0, #6
+ ldr r0, [sp, #0x34]
+ add r1, r0, r1
+ ldr r0, [sp, #0x3c]
+ add r5, r1, r0
+ ldr r1, [sp, #0x24]
+ ldr r0, [sp, #0x30]
+ sub r0, r1, r0
+ str r0, [sp, #0x1c]
+_0223B29E:
+ ldr r0, [sp, #0x38]
+ ldr r2, [sp, #0x1c]
+ ldr r0, [r0]
+ sub r1, r4, r7
+ add r6, r6, #1
+ bl MOD18_0223AD1C
+ cmp r0, #0
+ beq _0223B2B4
+ sub r0, r6, #1
+ strh r0, [r5]
+_0223B2B4:
+ ldr r0, [sp, #0x2c]
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, r0
+ blt _0223B29E
+_0223B2BE:
+ ldr r0, [sp, #0x24]
+ add r1, r0, #1
+ ldr r0, [sp, #0x28]
+ str r1, [sp, #0x24]
+ cmp r1, r0
+ blt _0223B280
+_0223B2CA:
+ ldr r0, [sp, #0x20]
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223B2D0: .word 0x02251380
+ thumb_func_end MOD18_0223B1A8
+
+ thumb_func_start MOD18_0223B2D4
+MOD18_0223B2D4: ; 0x0223B2D4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #0x1c]
+ ldr r0, [sp]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x1c]
+ str r0, [sp, #0x10]
+_0223B2E6:
+ ldr r0, [sp, #0x14]
+ ldr r0, [r0, #0x38]
+ cmp r0, #1
+ bne _0223B3DA
+ ldr r0, _0223B440 ; =0x000006A7
+ bl FUN_020054C8
+ mov r0, #0
+ mov r4, #0
+ str r4, [sp, #0x18]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+_0223B2FE:
+ ldr r0, _0223B444 ; =0x02251380
+ ldr r5, [r0]
+ ldr r0, [sp, #0x10]
+ add r6, r5, #0
+ add r1, r0, r5
+ mov r0, #0x81
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ add r6, #8
+ ldrb r0, [r0, #0xc]
+ str r1, [sp, #0xc]
+ ldr r1, [r6, #0xc]
+ lsl r7, r0, #3
+ ldr r0, [r6, #8]
+ ldr r2, [r5, #8]
+ ldr r3, [r6, #4]
+ bl _ll_mul
+ add r3, r0, #0
+ add r2, r1, #0
+ ldr r0, [r6, #0x10]
+ ldr r1, [r6, #0x14]
+ add r0, r0, r3
+ adc r1, r2
+ str r0, [r5, #8]
+ str r1, [r6, #4]
+ cmp r7, #0
+ ldr r0, [r6, #4]
+ bne _0223B33C
+ str r0, [sp, #8]
+ b _0223B348
+_0223B33C:
+ ldr r1, [sp, #0x20]
+ add r2, r7, #0
+ mov r3, #0
+ bl _ll_mul
+ str r1, [sp, #8]
+_0223B348:
+ mov r0, #0x81
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ add r6, r5, #0
+ ldrb r0, [r0, #0xd]
+ add r6, #8
+ ldr r1, [r6, #0xc]
+ lsl r7, r0, #3
+ ldr r0, [r6, #8]
+ ldr r2, [r5, #8]
+ ldr r3, [r6, #4]
+ bl _ll_mul
+ add r3, r0, #0
+ add r2, r1, #0
+ ldr r0, [r6, #0x10]
+ ldr r1, [r6, #0x14]
+ add r0, r0, r3
+ adc r1, r2
+ str r0, [r5, #8]
+ str r1, [r6, #4]
+ cmp r7, #0
+ bne _0223B37C
+ ldr r1, [r6, #4]
+ b _0223B388
+_0223B37C:
+ ldr r0, [r6, #4]
+ ldr r1, [sp, #0x24]
+ add r2, r7, #0
+ mov r3, #0
+ bl _ll_mul
+_0223B388:
+ ldr r0, _0223B444 ; =0x02251380
+ ldr r3, [sp, #0xc]
+ ldr r2, [r0]
+ ldr r0, _0223B448 ; =0x00000815
+ ldr r5, [sp, #0xc]
+ ldrb r0, [r3, r0]
+ lsl r3, r0, #4
+ ldr r0, [sp, #8]
+ add r0, r0, r3
+ ldr r3, _0223B44C ; =0x00000816
+ lsl r0, r0, #0xc
+ ldrb r3, [r5, r3]
+ lsl r3, r3, #4
+ str r0, [sp, #0x28]
+ add r0, r1, r3
+ add r0, #0x20
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x2c]
+ mov r0, #0x7f
+ add r1, r2, r4
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r1, [sp, #0x18]
+ add r1, #8
+ bl FUN_02020130
+ ldr r0, _0223B444 ; =0x02251380
+ ldr r0, [r0]
+ add r1, r0, r4
+ mov r0, #0x7f
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #0x28
+ bl FUN_02020044
+ ldr r0, [sp, #0x18]
+ add r4, r4, #4
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ cmp r0, #3
+ blt _0223B2FE
+_0223B3DA:
+ ldr r0, [sp, #0x14]
+ add r0, r0, #4
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ add r0, #0xc
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ cmp r0, #4
+ bge _0223B3F2
+ b _0223B2E6
+_0223B3F2:
+ mov r5, #0
+ ldr r4, _0223B450 ; =0x022511F0
+ mov r7, #0x20
+ add r6, r5, #0
+_0223B3FA:
+ ldr r0, [sp]
+ ldr r0, [r0, #0x38]
+ cmp r0, #0
+ beq _0223B430
+ ldr r1, [sp]
+ ldr r1, [r1, #0x28]
+ ldr r3, [r1, #0xc]
+ add r1, r4, r0
+ sub r1, r1, #1
+ ldrb r2, [r1]
+ cmp r2, #0xff
+ bne _0223B418
+ ldr r0, [sp]
+ str r6, [r0, #0x38]
+ b _0223B430
+_0223B418:
+ add r1, r0, #1
+ ldr r0, [sp]
+ cmp r2, #0xfe
+ str r1, [r0, #0x38]
+ beq _0223B430
+ lsl r0, r2, #1
+ add r1, r5, #3
+ add r0, r3, r0
+ lsl r1, r1, #5
+ add r2, r7, #0
+ bl GX_LoadBGPltt
+_0223B430:
+ ldr r0, [sp]
+ add r5, r5, #1
+ add r0, r0, #4
+ str r0, [sp]
+ cmp r5, #4
+ blt _0223B3FA
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223B440: .word 0x000006A7
+_0223B444: .word 0x02251380
+_0223B448: .word 0x00000815
+_0223B44C: .word 0x00000816
+_0223B450: .word 0x022511F0
+ thumb_func_end MOD18_0223B2D4
+
+ thumb_func_start MOD18_0223B454
+MOD18_0223B454: ; 0x0223B454
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r4, #0
+ str r3, [sp]
+ ldr r5, _0223B47C ; =0x00000269
+ cmp r6, #0
+ ble _0223B47A
+_0223B464:
+ ldr r3, [sp]
+ add r0, r4, #0
+ add r1, r7, #0
+ add r2, r5, #0
+ bl MOD18_0223B1A8
+ lsr r0, r0, #5
+ add r4, r4, #1
+ add r5, r5, r0
+ cmp r4, r6
+ blt _0223B464
+_0223B47A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223B47C: .word 0x00000269
+ thumb_func_end MOD18_0223B454
+
+ thumb_func_start MOD18_0223B480
+MOD18_0223B480: ; 0x0223B480
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ mov r0, #0
+ str r0, [sp, #0xc]
+_0223B488:
+ ldr r0, _0223B694 ; =0x02251380
+ ldr r4, [r0]
+ add r5, r4, #0
+ add r5, #8
+ ldr r0, [r5, #8]
+ ldr r1, [r5, #0xc]
+ ldr r2, [r4, #8]
+ ldr r3, [r5, #4]
+ bl _ll_mul
+ ldr r2, [r5, #0x10]
+ ldr r3, [r5, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r4, #8]
+ str r3, [r5, #4]
+ add r0, r3, #0
+ mov r1, #0
+ mov r2, #0x15
+ mov r3, #0
+ bl _ll_mul
+ add r5, r4, #0
+ add r5, #8
+ str r1, [sp, #0x20]
+ sub r1, #8
+ str r1, [sp, #0x20]
+ ldr r0, [r5, #8]
+ ldr r1, [r5, #0xc]
+ ldr r2, [r4, #8]
+ ldr r3, [r5, #4]
+ bl _ll_mul
+ ldr r2, [r5, #0x10]
+ ldr r3, [r5, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r4, #8]
+ str r3, [r5, #4]
+ add r0, r3, #0
+ mov r1, #0
+ mov r2, #0x12
+ mov r3, #0
+ bl _ll_mul
+ sub r5, r1, #5
+ add r0, r5, #0
+ str r0, [sp, #0x14]
+ add r0, #8
+ add r1, r5, #0
+ str r5, [sp, #0x10]
+ str r0, [sp, #0x14]
+ cmp r1, r0
+ bge _0223B548
+ add r0, r5, #0
+ ldr r3, [sp, #0x20]
+ mov r1, #0xd
+ add r6, r0, #0
+ mul r6, r1
+ add r3, #8
+_0223B500:
+ cmp r5, #0xa
+ bge _0223B53E
+ cmp r5, #0
+ blt _0223B53E
+ ldr r4, [sp, #0x20]
+ add r0, r4, #0
+ cmp r0, r3
+ bge _0223B53E
+ ldr r0, [sp, #0x10]
+ sub r0, r5, r0
+ lsl r1, r0, #3
+ ldr r0, _0223B698 ; =0x02250AF0
+ add r7, r0, r1
+_0223B51A:
+ cmp r4, #0xd
+ bge _0223B538
+ cmp r4, #0
+ blt _0223B538
+ ldr r0, [sp, #0x20]
+ sub r0, r4, r0
+ ldrb r2, [r7, r0]
+ cmp r2, #0
+ beq _0223B538
+ ldr r0, _0223B694 ; =0x02251380
+ ldr r0, [r0]
+ add r0, r6, r0
+ add r1, r4, r0
+ ldr r0, _0223B69C ; =0x0000095E
+ strb r2, [r1, r0]
+_0223B538:
+ add r4, r4, #1
+ cmp r4, r3
+ blt _0223B51A
+_0223B53E:
+ ldr r0, [sp, #0x14]
+ add r5, r5, #1
+ add r6, #0xd
+ cmp r5, r0
+ blt _0223B500
+_0223B548:
+ ldr r0, [sp, #0xc]
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+ cmp r0, #0xa
+ blt _0223B488
+ mov r0, #0
+ str r0, [sp, #4]
+_0223B556:
+ ldr r0, _0223B694 ; =0x02251380
+ ldr r5, [r0]
+ add r4, r5, #0
+ add r4, #8
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r5, #8]
+ ldr r3, [r4, #4]
+ bl _ll_mul
+ ldr r2, [r4, #0x10]
+ ldr r3, [r4, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r5, #8]
+ str r3, [r4, #4]
+ add r0, r3, #0
+ mov r1, #0
+ mov r2, #0x12
+ mov r3, #0
+ bl _ll_mul
+ add r6, r5, #0
+ add r6, #8
+ sub r4, r1, #5
+ ldr r0, [r6, #8]
+ ldr r1, [r6, #0xc]
+ ldr r2, [r5, #8]
+ ldr r3, [r6, #4]
+ bl _ll_mul
+ ldr r2, [r6, #0x10]
+ ldr r3, [r6, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r5, #8]
+ str r3, [r6, #4]
+ add r0, r3, #0
+ mov r1, #0
+ mov r2, #0xf
+ mov r3, #0
+ bl _ll_mul
+ sub r0, r1, #5
+ str r0, [sp]
+ ldr r3, [sp]
+ mov r0, #1
+ str r0, [sp, #8]
+ add r0, r3, #0
+ add r0, r0, #5
+ add r1, r3, #0
+ str r0, [sp, #0x18]
+ cmp r1, r0
+ bge _0223B61A
+ mov r1, #0xd
+ add r0, r3, #0
+ mul r1, r0
+ ldr r7, _0223B69C ; =0x0000095E
+ add r1, r5, r1
+ add r0, r4, #5
+_0223B5CE:
+ cmp r3, #0xa
+ bge _0223B610
+ cmp r3, #0
+ blt _0223B610
+ add r5, r4, #0
+ cmp r4, r0
+ bge _0223B60A
+ ldr r2, [sp]
+ sub r2, r3, r2
+ lsl r6, r2, #3
+ ldr r2, _0223B698 ; =0x02250AF0
+ add r2, r2, r6
+_0223B5E6:
+ cmp r5, #0xd
+ bge _0223B604
+ cmp r5, #0
+ blt _0223B604
+ sub r6, r5, r4
+ ldrb r6, [r2, r6]
+ cmp r6, #0
+ beq _0223B604
+ add r6, r1, r5
+ ldrb r6, [r6, r7]
+ cmp r6, #4
+ bhs _0223B604
+ mov r2, #0
+ str r2, [sp, #8]
+ b _0223B60A
+_0223B604:
+ add r5, r5, #1
+ cmp r5, r0
+ blt _0223B5E6
+_0223B60A:
+ ldr r2, [sp, #8]
+ cmp r2, #0
+ beq _0223B61A
+_0223B610:
+ ldr r2, [sp, #0x18]
+ add r3, r3, #1
+ add r1, #0xd
+ cmp r3, r2
+ blt _0223B5CE
+_0223B61A:
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ beq _0223B684
+ ldr r0, [sp]
+ ldr r1, [sp]
+ str r0, [sp, #0x1c]
+ add r0, r0, #5
+ mov ip, r0
+ cmp r1, r0
+ bge _0223B684
+ ldr r0, [sp]
+ mov r1, #0xd
+ add r3, r0, #0
+ mul r3, r1
+ add r6, r4, #5
+_0223B638:
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0xa
+ bge _0223B676
+ cmp r0, #0
+ blt _0223B676
+ add r5, r4, #0
+ cmp r4, r6
+ bge _0223B676
+ ldr r1, [sp]
+ sub r1, r0, r1
+ lsl r0, r1, #2
+ add r1, r1, r0
+ ldr r0, _0223B6A0 ; =0x02250ABA
+ add r7, r0, r1
+_0223B654:
+ cmp r5, #0xd
+ bge _0223B670
+ cmp r5, #0
+ blt _0223B670
+ sub r0, r5, r4
+ ldrb r2, [r7, r0]
+ cmp r2, #0
+ beq _0223B670
+ ldr r0, _0223B694 ; =0x02251380
+ ldr r0, [r0]
+ add r0, r3, r0
+ add r1, r5, r0
+ ldr r0, _0223B69C ; =0x0000095E
+ strb r2, [r1, r0]
+_0223B670:
+ add r5, r5, #1
+ cmp r5, r6
+ blt _0223B654
+_0223B676:
+ ldr r0, [sp, #0x1c]
+ mov r1, ip
+ add r0, r0, #1
+ add r3, #0xd
+ str r0, [sp, #0x1c]
+ cmp r0, r1
+ blt _0223B638
+_0223B684:
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ str r0, [sp, #4]
+ cmp r0, #0xf
+ bge _0223B690
+ b _0223B556
+_0223B690:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223B694: .word 0x02251380
+_0223B698: .word 0x02250AF0
+_0223B69C: .word 0x0000095E
+_0223B6A0: .word 0x02250ABA
+ thumb_func_end MOD18_0223B480
+
+ thumb_func_start MOD18_0223B6A4
+MOD18_0223B6A4: ; 0x0223B6A4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ mov r1, #2
+ str r0, [sp]
+ bl FUN_0201886C
+ str r0, [sp, #8]
+ mov r2, #0
+ mov r0, #4
+ mov ip, r2
+ str r0, [sp, #4]
+_0223B6BA:
+ ldr r0, [sp, #4]
+ mov r6, #0
+ lsl r3, r0, #5
+_0223B6C0:
+ ldr r0, _0223B728 ; =0x02251380
+ lsl r7, r3, #1
+ ldr r0, [r0]
+ ldr r4, _0223B72C ; =0x00002001
+ add r0, r2, r0
+ add r1, r6, r0
+ ldr r0, _0223B730 ; =0x0000095E
+ add r6, r6, #1
+ ldrb r0, [r1, r0]
+ add r3, r3, #2
+ lsl r1, r0, #2
+ ldr r0, _0223B734 ; =0x02250AD4
+ ldr r1, [r0, r1]
+ ldr r0, [sp, #8]
+ ldrb r5, [r1]
+ add r0, r0, r7
+ add r5, r5, r4
+ ldr r4, [sp, #8]
+ strh r5, [r4, r7]
+ ldrb r5, [r1, #1]
+ ldr r4, _0223B72C ; =0x00002001
+ add r4, r5, r4
+ strh r4, [r0, #2]
+ ldrb r5, [r1, #2]
+ ldr r4, _0223B72C ; =0x00002001
+ add r4, r5, r4
+ add r5, r0, #0
+ add r5, #0x40
+ strh r4, [r5]
+ ldrb r4, [r1, #3]
+ ldr r1, _0223B72C ; =0x00002001
+ add r0, #0x42
+ add r1, r4, r1
+ strh r1, [r0]
+ cmp r6, #0xd
+ blt _0223B6C0
+ ldr r0, [sp, #4]
+ add r2, #0xd
+ add r0, r0, #2
+ str r0, [sp, #4]
+ mov r0, ip
+ add r0, r0, #1
+ mov ip, r0
+ cmp r0, #0xa
+ blt _0223B6BA
+ ldr r0, [sp]
+ mov r1, #2
+ bl FUN_02017CD0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0223B728: .word 0x02251380
+_0223B72C: .word 0x00002001
+_0223B730: .word 0x0000095E
+_0223B734: .word 0x02250AD4
+ thumb_func_end MOD18_0223B6A4
+
+ thumb_func_start MOD18_0223B738
+MOD18_0223B738: ; 0x0223B738
+ ldr r2, _0223B76C ; =0x02251380
+ mov r3, #0xd
+ ldr r2, [r2]
+ mul r3, r1
+ add r1, r2, r3
+ add r0, r1, r0
+ ldr r1, _0223B770 ; =0x000008DC
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ bne _0223B750
+ mov r0, #0
+ bx lr
+_0223B750:
+ sub r3, r0, #1
+ mov r0, #0xc
+ mul r0, r3
+ add r0, r2, r0
+ sub r1, #0xc8
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ beq _0223B768
+ cmp r0, #0x3c
+ bge _0223B768
+ mov r0, #1
+ bx lr
+_0223B768:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0223B76C: .word 0x02251380
+_0223B770: .word 0x000008DC
+ thumb_func_end MOD18_0223B738
+
+ thumb_func_start MOD18_0223B774
+MOD18_0223B774: ; 0x0223B774
+ ldr r2, _0223B7A4 ; =0x02251380
+ mov r3, #0xd
+ ldr r2, [r2]
+ mul r3, r1
+ add r1, r2, r3
+ add r0, r1, r0
+ ldr r1, _0223B7A8 ; =0x000008DC
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ bne _0223B78C
+ mov r0, #0
+ bx lr
+_0223B78C:
+ sub r3, r0, #1
+ mov r0, #0xc
+ mul r0, r3
+ add r0, r2, r0
+ sub r1, #0xc8
+ ldrb r0, [r0, r1]
+ cmp r0, #0x3c
+ blo _0223B7A0
+ mov r0, #1
+ bx lr
+_0223B7A0:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0223B7A4: .word 0x02251380
+_0223B7A8: .word 0x000008DC
+ thumb_func_end MOD18_0223B774
+
+ thumb_func_start MOD18_0223B7AC
+MOD18_0223B7AC: ; 0x0223B7AC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r2, [sp, #4]
+ asr r2, r0, #3
+ lsr r2, r2, #0x1c
+ add r2, r0, r2
+ asr r0, r1, #3
+ lsr r0, r0, #0x1c
+ add r0, r1, r0
+ asr r0, r0, #4
+ mov r5, #0
+ sub r0, r0, #2
+ asr r7, r2, #4
+ add r6, r5, #0
+ str r3, [sp, #8]
+ str r0, [sp, #0xc]
+ cmp r7, #0
+ blt _0223B7DC
+ cmp r7, #0xd
+ bge _0223B7DC
+ cmp r0, #0
+ blt _0223B7DC
+ cmp r0, #0xa
+ blt _0223B7DE
+_0223B7DC:
+ b _0223B92A
+_0223B7DE:
+ add r4, r0, #0
+ mov r1, #0xd
+ ldr r0, _0223B930 ; =0x02251380
+ mul r4, r1
+ ldr r1, [r0]
+ ldr r0, _0223B934 ; =0x0000095E
+ add r0, r1, r0
+ add r1, r0, r4
+ ldrb r0, [r1, r7]
+ cmp r0, #0
+ beq _0223B7F8
+ sub r0, r0, #1
+ strb r0, [r1, r7]
+_0223B7F8:
+ ldr r0, _0223B930 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, _0223B934 ; =0x0000095E
+ add r0, r1, r0
+ add r1, r0, r4
+ ldrb r0, [r1, r7]
+ cmp r0, #0
+ beq _0223B80C
+ sub r0, r0, #1
+ strb r0, [r1, r7]
+_0223B80C:
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD18_0223B774
+ cmp r0, #0
+ beq _0223B82A
+ ldr r0, _0223B930 ; =0x02251380
+ ldr r0, [r0]
+ add r0, r0, r4
+ add r1, r0, r7
+ ldr r0, _0223B934 ; =0x0000095E
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _0223B82A
+ mov r5, #1
+_0223B82A:
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD18_0223B738
+ cmp r0, #0
+ beq _0223B84E
+ ldr r0, _0223B930 ; =0x02251380
+ ldr r0, [r0]
+ add r0, r0, r4
+ add r1, r0, r7
+ ldr r0, _0223B934 ; =0x0000095E
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _0223B84E
+ ldr r0, [sp, #8]
+ mov r1, #0xf
+ mov r6, #1
+ str r1, [r0, #0x14]
+_0223B84E:
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #4]
+ add r1, r1, #2
+ lsl r0, r7, #4
+ lsl r1, r1, #4
+ add r3, r5, #0
+ str r6, [sp]
+ bl MOD18_0223A2BC
+ cmp r5, #0
+ bne _0223B92A
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _0223B8B6
+ ldr r4, _0223B938 ; =0x022511D4
+ ldr r5, _0223B93C ; =0x02250860
+ mov r3, #0
+_0223B870:
+ mov r0, #0
+ ldrsb r1, [r4, r0]
+ ldr r0, [sp, #0xc]
+ add r2, r0, r1
+ mov r0, #0
+ ldrsb r0, [r5, r0]
+ add r1, r7, r0
+ cmp r2, #0
+ blt _0223B8AC
+ cmp r2, #0xa
+ bge _0223B8AC
+ cmp r1, #0
+ blt _0223B8AC
+ cmp r1, #0xd
+ bge _0223B8AC
+ ldr r0, _0223B930 ; =0x02251380
+ mov r6, #0xd
+ ldr r0, [r0]
+ mul r6, r2
+ add r0, r0, r6
+ add r0, r0, r1
+ ldr r1, _0223B934 ; =0x0000095E
+ ldrb r1, [r0, r1]
+ cmp r1, #0
+ beq _0223B8AC
+ ldr r1, _0223B934 ; =0x0000095E
+ ldrb r1, [r0, r1]
+ sub r2, r1, #1
+ ldr r1, _0223B934 ; =0x0000095E
+ strb r2, [r0, r1]
+_0223B8AC:
+ add r3, r3, #1
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r3, #4
+ blt _0223B870
+_0223B8B6:
+ mov r0, #0
+ ldr r2, _0223B940 ; =0x022511EC
+ ldr r3, _0223B944 ; =0x022511D8
+ mov ip, r0
+_0223B8BE:
+ mov r0, #0
+ ldrsb r1, [r2, r0]
+ ldr r0, [sp, #0xc]
+ add r0, r0, r1
+ mov r1, #0
+ ldrsb r1, [r3, r1]
+ add r5, r7, r1
+ cmp r0, #0
+ blt _0223B91C
+ cmp r0, #0xa
+ bge _0223B91C
+ cmp r5, #0
+ blt _0223B91C
+ cmp r5, #0xd
+ bge _0223B91C
+ add r4, r0, #0
+ ldr r0, _0223B930 ; =0x02251380
+ mov r1, #0xd
+ ldr r0, [r0]
+ mul r4, r1
+ add r0, r0, r4
+ add r6, r0, r5
+ ldr r0, _0223B934 ; =0x0000095E
+ ldrb r0, [r6, r0]
+ cmp r0, #0
+ beq _0223B8FC
+ ldr r0, _0223B934 ; =0x0000095E
+ ldrb r0, [r6, r0]
+ sub r1, r0, #1
+ ldr r0, _0223B934 ; =0x0000095E
+ strb r1, [r6, r0]
+_0223B8FC:
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _0223B91C
+ ldr r0, _0223B930 ; =0x02251380
+ ldr r1, _0223B934 ; =0x0000095E
+ ldr r0, [r0]
+ add r0, r0, r4
+ add r0, r0, r5
+ ldrb r1, [r0, r1]
+ cmp r1, #0
+ beq _0223B91C
+ ldr r1, _0223B934 ; =0x0000095E
+ ldrb r1, [r0, r1]
+ sub r4, r1, #1
+ ldr r1, _0223B934 ; =0x0000095E
+ strb r4, [r0, r1]
+_0223B91C:
+ mov r0, ip
+ add r0, r0, #1
+ add r2, r2, #1
+ add r3, r3, #1
+ mov ip, r0
+ cmp r0, #4
+ blt _0223B8BE
+_0223B92A:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223B930: .word 0x02251380
+_0223B934: .word 0x0000095E
+_0223B938: .word 0x022511D4
+_0223B93C: .word 0x02250860
+_0223B940: .word 0x022511EC
+_0223B944: .word 0x022511D8
+ thumb_func_end MOD18_0223B7AC
+
+ thumb_func_start MOD18_0223B948
+MOD18_0223B948: ; 0x0223B948
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r1, #0
+ ldrb r1, [r6, #1]
+ str r2, [sp]
+ ldrb r2, [r6, #3]
+ mov ip, r1
+ mov r1, #0
+ mov lr, r1
+ mov r1, ip
+ str r3, [sp, #4]
+ cmp r1, r2
+ bge _0223B9B6
+ mov r1, ip
+ cmp r1, r2
+ bge _0223B9B6
+ mov r1, lr
+ str r1, [sp, #8]
+ mov r1, ip
+ mov r7, #0x3f
+ lsl r5, r1, #5
+ lsl r7, r7, #0xa
+_0223B974:
+ ldr r2, [sp]
+ ldr r1, [sp, #8]
+ add r3, r2, r1
+ ldrb r2, [r6]
+ ldrb r1, [r6, #2]
+ cmp r2, r1
+ bge _0223B998
+_0223B982:
+ add r1, r2, r5
+ lsl r1, r1, #1
+ ldrh r4, [r0, r1]
+ add r2, r2, #1
+ and r4, r7
+ add r4, r3, r4
+ strh r4, [r0, r1]
+ ldrb r1, [r6, #2]
+ add r3, r3, #1
+ cmp r2, r1
+ blt _0223B982
+_0223B998:
+ mov r1, ip
+ add r1, r1, #1
+ mov ip, r1
+ ldr r2, [sp, #8]
+ ldr r1, [sp, #4]
+ add r5, #0x20
+ add r1, r2, r1
+ str r1, [sp, #8]
+ mov r1, lr
+ add r1, r1, #1
+ mov lr, r1
+ ldrb r2, [r6, #3]
+ mov r1, ip
+ cmp r1, r2
+ blt _0223B974
+_0223B9B6:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223B948
+
+ thumb_func_start MOD18_0223B9BC
+MOD18_0223B9BC: ; 0x0223B9BC
+ push {r4, lr}
+ ldr r3, _0223B9E0 ; =0x02251380
+ ldr r2, _0223B9E4 ; =0x000009E6
+ ldr r4, [r3]
+ mov r1, #1
+ strb r1, [r4, r2]
+ ldr r3, [r3]
+ sub r2, r2, #2
+ strb r1, [r3, r2]
+ bl FUN_0201886C
+ ldr r1, _0223B9E8 ; =0x02250874
+ mov r2, #0x30
+ mov r3, #0x36
+ bl MOD18_0223B948
+ pop {r4, pc}
+ nop
+_0223B9E0: .word 0x02251380
+_0223B9E4: .word 0x000009E6
+_0223B9E8: .word 0x02250874
+ thumb_func_end MOD18_0223B9BC
+
+ thumb_func_start MOD18_0223B9EC
+MOD18_0223B9EC: ; 0x0223B9EC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r3, #0
+ add r5, r0, #0
+ cmp r4, #2
+ blt _0223BA24
+ bne _0223BA36
+ cmp r1, #0xd6
+ ble _0223BA24
+ cmp r1, #0xfc
+ bge _0223BA24
+ cmp r2, #0x2b
+ ble _0223BA1C
+ cmp r2, #0x6e
+ bge _0223BA1C
+ ldr r2, _0223BB40 ; =0x02251380
+ ldr r1, _0223BB44 ; =0x000009E6
+ ldr r3, [r2]
+ mov r0, #0
+ strb r0, [r3, r1]
+ ldr r2, [r2]
+ sub r1, r1, #2
+ strb r0, [r2, r1]
+ b _0223BA36
+_0223BA1C:
+ cmp r2, #0x72
+ ble _0223BA24
+ cmp r2, #0xae
+ blt _0223BA26
+_0223BA24:
+ b _0223BB3C
+_0223BA26:
+ ldr r2, _0223BB40 ; =0x02251380
+ ldr r1, _0223BB44 ; =0x000009E6
+ ldr r3, [r2]
+ mov r0, #1
+ strb r0, [r3, r1]
+ ldr r2, [r2]
+ sub r1, r1, #2
+ strb r0, [r2, r1]
+_0223BA36:
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0201886C
+ ldr r1, _0223BB40 ; =0x02251380
+ add r6, r0, #0
+ ldr r2, [r1]
+ ldr r1, _0223BB44 ; =0x000009E6
+ ldrb r1, [r2, r1]
+ cmp r1, #0
+ beq _0223BA52
+ cmp r1, #1
+ beq _0223BAC4
+ b _0223BB34
+_0223BA52:
+ cmp r4, #2
+ bne _0223BA74
+ ldr r1, _0223BB48 ; =0x02250878
+ mov r2, #0x18
+ mov r3, #0x36
+ bl MOD18_0223B948
+ ldr r1, _0223BB4C ; =0x02250874
+ add r0, r6, #0
+ mov r2, #0x24
+ mov r3, #0x36
+ bl MOD18_0223B948
+ ldr r0, _0223BB50 ; =0x000005DC
+ bl FUN_020054C8
+ b _0223BA82
+_0223BA74:
+ cmp r4, #3
+ bne _0223BA82
+ ldr r1, _0223BB48 ; =0x02250878
+ mov r2, #0x1e
+ mov r3, #0x36
+ bl MOD18_0223B948
+_0223BA82:
+ cmp r4, #2
+ bne _0223BB34
+ ldr r0, _0223BB40 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #6
+ bl FUN_02020130
+ ldr r0, _0223BB40 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x3a
+ lsl r0, r0, #0xe
+ str r0, [sp]
+ mov r0, #5
+ lsl r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, _0223BB40 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ add r1, sp, #0
+ bl FUN_02020044
+ b _0223BB34
+_0223BAC4:
+ cmp r4, #2
+ bne _0223BAE6
+ ldr r1, _0223BB48 ; =0x02250878
+ mov r2, #0x12
+ mov r3, #0x36
+ bl MOD18_0223B948
+ ldr r1, _0223BB4C ; =0x02250874
+ add r0, r6, #0
+ mov r2, #0x2a
+ mov r3, #0x36
+ bl MOD18_0223B948
+ ldr r0, _0223BB50 ; =0x000005DC
+ bl FUN_020054C8
+ b _0223BAF4
+_0223BAE6:
+ cmp r4, #3
+ bne _0223BAF4
+ ldr r1, _0223BB4C ; =0x02250874
+ mov r2, #0x30
+ mov r3, #0x36
+ bl MOD18_0223B948
+_0223BAF4:
+ cmp r4, #2
+ bne _0223BB34
+ ldr r0, _0223BB40 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #7
+ bl FUN_02020130
+ ldr r0, _0223BB40 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x3a
+ lsl r0, r0, #0xe
+ str r0, [sp]
+ mov r0, #0x26
+ lsl r0, r0, #0xe
+ str r0, [sp, #4]
+ ldr r0, _0223BB40 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ add r1, sp, #0
+ bl FUN_02020044
+_0223BB34:
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_02017CD0
+_0223BB3C:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0223BB40: .word 0x02251380
+_0223BB44: .word 0x000009E6
+_0223BB48: .word 0x02250878
+_0223BB4C: .word 0x02250874
+_0223BB50: .word 0x000005DC
+ thumb_func_end MOD18_0223B9EC
+
+ thumb_func_start MOD18_0223BB54
+MOD18_0223BB54: ; 0x0223BB54
+ ldr r1, _0223BB74 ; =0x02251380
+ ldr r2, [r1]
+ ldr r1, _0223BB78 ; =0x000009E7
+ ldrb r2, [r2, r1]
+ asr r1, r2, #1
+ lsr r1, r1, #0x1e
+ add r1, r2, r1
+ asr r1, r1, #2
+ lsl r1, r1, #2
+ add r1, #0x10
+ lsl r1, r1, #0xc
+ str r1, [r0]
+ mov r1, #1
+ lsl r1, r1, #0x10
+ str r1, [r0, #4]
+ bx lr
+ .align 2, 0
+_0223BB74: .word 0x02251380
+_0223BB78: .word 0x000009E7
+ thumb_func_end MOD18_0223BB54
+
+ thumb_func_start MOD18_0223BB7C
+MOD18_0223BB7C: ; 0x0223BB7C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r1, _0223BC44 ; =0x02251380
+ str r0, [sp]
+ ldr r2, [r1]
+ ldr r1, _0223BC48 ; =0x000009E7
+ ldrb r4, [r2, r1]
+ mov r1, #0
+ bl FUN_0201886C
+ add r5, r0, #0
+ asr r0, r4, #1
+ lsr r0, r0, #0x1e
+ add r0, r4, r0
+ asr r0, r0, #2
+ lsl r4, r0, #2
+ add r0, sp, #4
+ bl MOD18_0223BB54
+ add r0, r4, #0
+ mov r1, #0x18
+ bl _s32_div_f
+ ldr r0, _0223BC44 ; =0x02251380
+ ldr r2, [r0]
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ asr r2, r1, #1
+ lsr r2, r2, #0x1e
+ add r2, r1, r2
+ asr r2, r2, #2
+ mov r1, #6
+ sub r1, r1, r2
+ bl FUN_02020130
+ add r4, #8
+ mov r0, #0xd0
+ sub r1, r0, r4
+ asr r0, r1, #2
+ lsr r0, r0, #0x1d
+ add r0, r1, r0
+ asr r7, r0, #3
+ mov r4, #0
+ cmp r7, #0
+ ble _0223BC38
+_0223BBD8:
+ mov r0, #0x19
+ sub r0, r0, r4
+ lsl r6, r0, #1
+ add r0, r4, #0
+ mov r1, #3
+ bl _s32_div_f
+ add r0, r1, #0
+ mov r1, #0x3f
+ ldrh r2, [r5, r6]
+ lsl r1, r1, #0xa
+ and r1, r2
+ add r1, #0xb
+ sub r1, r1, r0
+ strh r1, [r5, r6]
+ mov r1, #0x39
+ sub r1, r1, r4
+ lsl r1, r1, #1
+ mov r2, #0x3f
+ ldrh r3, [r5, r1]
+ lsl r2, r2, #0xa
+ and r2, r3
+ add r2, #0x41
+ sub r2, r2, r0
+ strh r2, [r5, r1]
+ mov r1, #0x59
+ sub r1, r1, r4
+ lsl r1, r1, #1
+ mov r2, #0x3f
+ ldrh r3, [r5, r1]
+ lsl r2, r2, #0xa
+ and r2, r3
+ add r2, #0x77
+ sub r2, r2, r0
+ strh r2, [r5, r1]
+ mov r1, #0x79
+ sub r1, r1, r4
+ lsl r1, r1, #1
+ mov r2, #0x3f
+ ldrh r3, [r5, r1]
+ lsl r2, r2, #0xa
+ add r4, r4, #1
+ and r2, r3
+ add r2, #0xad
+ sub r0, r2, r0
+ strh r0, [r5, r1]
+ cmp r4, r7
+ blt _0223BBD8
+_0223BC38:
+ ldr r0, [sp]
+ mov r1, #0
+ bl FUN_02017CD0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223BC44: .word 0x02251380
+_0223BC48: .word 0x000009E7
+ thumb_func_end MOD18_0223BB7C
+
+ thumb_func_start MOD18_0223BC4C
+MOD18_0223BC4C: ; 0x0223BC4C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r5, #0
+ str r0, [sp]
+ str r5, [sp, #4]
+_0223BC56:
+ ldr r0, _0223BCF4 ; =0x02251380
+ ldr r0, [r0]
+ add r1, r0, r5
+ ldr r0, _0223BCF8 ; =0x000008CC
+ ldrb r0, [r1, r0]
+ cmp r0, #0xff
+ beq _0223BCDA
+ ldr r0, _0223BCFC ; =0x000008D4
+ ldrb r0, [r1, r0]
+ cmp r0, #0xff
+ beq _0223BCDA
+ bl FUN_02031190
+ bl FUN_0204E3EC
+ add r4, r0, #0
+ bl FUN_02031190
+ bl FUN_0204E440
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_0204E35C
+ add r7, r0, #0
+ add r0, r5, #0
+ bl FUN_0204E3A4
+ add r1, r4, #0
+ sub r1, #0xa
+ cmp r7, r1
+ ble _0223BCDA
+ add r4, #0xa
+ cmp r7, r4
+ bge _0223BCDA
+ add r1, r6, #0
+ sub r1, #0xa
+ cmp r0, r1
+ ble _0223BCDA
+ add r6, #0xa
+ cmp r0, r6
+ bge _0223BCDA
+ ldr r0, _0223BCF4 ; =0x02251380
+ ldr r1, _0223BCFC ; =0x000008D4
+ ldr r0, [r0]
+ ldr r3, [sp]
+ add r2, r0, r5
+ ldr r0, _0223BCF8 ; =0x000008CC
+ ldrb r1, [r2, r1]
+ ldrb r0, [r2, r0]
+ mov r2, #1
+ bl MOD18_0223B7AC
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _0223BCF4 ; =0x02251380
+ mov r1, #0xff
+ ldr r0, [r0]
+ add r2, r0, r5
+ ldr r0, _0223BCF8 ; =0x000008CC
+ strb r1, [r2, r0]
+ ldr r0, _0223BCF4 ; =0x02251380
+ ldr r0, [r0]
+ add r2, r0, r5
+ ldr r0, _0223BCFC ; =0x000008D4
+ strb r1, [r2, r0]
+_0223BCDA:
+ add r5, r5, #1
+ cmp r5, #8
+ blt _0223BC56
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ beq _0223BCF0
+ ldr r0, _0223BCF4 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD18_0223B6A4
+_0223BCF0:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223BCF4: .word 0x02251380
+_0223BCF8: .word 0x000008CC
+_0223BCFC: .word 0x000008D4
+ thumb_func_end MOD18_0223BC4C
+
+ thumb_func_start MOD18_0223BD00
+MOD18_0223BD00: ; 0x0223BD00
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ bl MOD18_0223D194
+ cmp r0, #0
+ beq _0223BD88
+ cmp r6, #6
+ beq _0223BD1C
+ cmp r6, #7
+ beq _0223BD1C
+ sub r0, r6, #1
+ cmp r0, #1
+ bhi _0223BD42
+_0223BD1C:
+ ldr r0, _0223BD8C ; =0x02251380
+ ldr r5, [r0]
+ add r4, r5, #0
+ add r4, #8
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r5, #8]
+ ldr r3, [r4, #4]
+ bl _ll_mul
+ ldr r2, [r4, #0x10]
+ ldr r3, [r4, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r5, #8]
+ mov r0, #0
+ str r3, [r4, #4]
+ add r4, r0, #1
+ b _0223BD6C
+_0223BD42:
+ ldr r0, _0223BD8C ; =0x02251380
+ ldr r5, [r0]
+ add r4, r5, #0
+ add r4, #8
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r5, #8]
+ ldr r3, [r4, #4]
+ bl _ll_mul
+ ldr r3, [r4, #0x10]
+ ldr r2, [r4, #0x14]
+ add r0, r3, r0
+ adc r2, r1
+ str r0, [r5, #8]
+ mov r1, #0
+ lsr r0, r2, #0x1e
+ lsl r1, r1, #2
+ orr r1, r0
+ str r2, [r4, #4]
+ add r4, r1, #1
+_0223BD6C:
+ sub r0, r6, #6
+ cmp r0, #4
+ bhi _0223BD74
+ add r4, #0xa
+_0223BD74:
+ ldr r0, _0223BD90 ; =0x000009E7
+ mov r1, #0x27
+ ldrb r5, [r5, r0]
+ add r0, r5, #0
+ bl _s32_div_f
+ add r4, r4, r0
+ cmp r5, #0
+ beq _0223BD88
+ add r4, r4, #5
+_0223BD88:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223BD8C: .word 0x02251380
+_0223BD90: .word 0x000009E7
+ thumb_func_end MOD18_0223BD00
+
+ thumb_func_start MOD18_0223BD94
+MOD18_0223BD94: ; 0x0223BD94
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _0223BDDC ; =0x02251380
+ add r4, r1, #0
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_020377AC
+ bl FUN_02026CB4
+ ldr r0, _0223BDDC ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD18_0223D194
+ cmp r0, #0
+ beq _0223BDCC
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02249450
+ pop {r4, r5, r6, pc}
+_0223BDCC:
+ add r0, r5, #0
+ bl MOD18_02249480
+ add r0, r6, #0
+ add r1, r5, #0
+ bl FUN_02026664
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223BDDC: .word 0x02251380
+ thumb_func_end MOD18_0223BD94
+
+ thumb_func_start MOD18_0223BDE0
+MOD18_0223BDE0: ; 0x0223BDE0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, _0223BE24 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD18_0223D194
+ cmp r0, #0
+ beq _0223BE10
+ add r0, r5, #0
+ bl FUN_02026050
+ cmp r0, #0x28
+ beq _0223BE0C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0223BE0C:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0223BE10:
+ add r0, r5, #0
+ bl FUN_0202616C
+ cmp r0, #0x28
+ beq _0223BE1E
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0223BE1E:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_0223BE24: .word 0x02251380
+ thumb_func_end MOD18_0223BDE0
+
+ thumb_func_start MOD18_0223BE28
+MOD18_0223BE28: ; 0x0223BE28
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #1
+ mov lr, r0
+ ldr r0, [r4, #0xc]
+ mov r2, #0
+ cmp r0, #0
+ ble _0223BE48
+ add r3, sp, #0
+ mov r1, #1
+_0223BE3E:
+ stmia r3!, {r1}
+ ldr r0, [r4, #0xc]
+ add r2, r2, #1
+ cmp r2, r0
+ blt _0223BE3E
+_0223BE48:
+ mov r0, #0
+ mov ip, r0
+ ldr r0, _0223BED4 ; =0x02251380
+ mov r6, #0
+ ldr r3, [r0]
+ add r7, sp, #0
+_0223BE54:
+ mov r2, #0
+_0223BE56:
+ ldr r0, _0223BED8 ; =0x000008DC
+ add r1, r3, r2
+ ldrb r0, [r1, r0]
+ ldr r5, [r4, #0xc]
+ cmp r0, r5
+ bgt _0223BE76
+ cmp r0, #0
+ beq _0223BE76
+ ldr r5, _0223BEDC ; =0x0000095E
+ ldrb r1, [r1, r5]
+ cmp r1, #0
+ beq _0223BE76
+ lsl r0, r0, #2
+ add r0, r7, r0
+ sub r0, r0, #4
+ str r6, [r0]
+_0223BE76:
+ add r2, r2, #1
+ cmp r2, #0xd
+ blt _0223BE56
+ mov r0, ip
+ add r0, r0, #1
+ add r3, #0xd
+ mov ip, r0
+ cmp r0, #0xa
+ blt _0223BE54
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ cmp r0, #0
+ ble _0223BECC
+ add r0, sp, #0
+ add r1, r3, #0
+ add r2, r4, #0
+ mov r7, #1
+_0223BE98:
+ ldr r5, [r0]
+ cmp r5, #0
+ bne _0223BEA4
+ mov r5, #0
+ mov lr, r5
+ b _0223BEBE
+_0223BEA4:
+ ldr r5, _0223BED4 ; =0x02251380
+ ldr r5, [r5]
+ add r6, r5, r1
+ ldr r5, _0223BEE0 ; =0x00000818
+ ldrb r5, [r6, r5]
+ cmp r5, #0
+ bne _0223BEBE
+ ldr r5, _0223BED4 ; =0x02251380
+ str r7, [r2, #0x38]
+ ldr r5, [r5]
+ add r6, r5, r1
+ ldr r5, _0223BEE0 ; =0x00000818
+ strb r7, [r6, r5]
+_0223BEBE:
+ ldr r5, [r4, #0xc]
+ add r3, r3, #1
+ add r0, r0, #4
+ add r1, #0xc
+ add r2, r2, #4
+ cmp r3, r5
+ blt _0223BE98
+_0223BECC:
+ mov r0, lr
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223BED4: .word 0x02251380
+_0223BED8: .word 0x000008DC
+_0223BEDC: .word 0x0000095E
+_0223BEE0: .word 0x00000818
+ thumb_func_end MOD18_0223BE28
+
+ thumb_func_start MOD18_0223BEE4
+MOD18_0223BEE4: ; 0x0223BEE4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r1, [r5, #0xc]
+ mov r0, #0
+ cmp r1, #0
+ ble _0223BF74
+ ldr r2, _0223BF78 ; =0x02251380
+ ldr r3, _0223BF7C ; =0x00000818
+ ldr r2, [r2]
+ add r6, r2, #0
+_0223BEF8:
+ ldrb r4, [r6, r3]
+ cmp r4, #1
+ bne _0223BF6C
+ add r4, r0, #0
+ mov r1, #0xc
+ mul r4, r1
+ ldr r0, _0223BF80 ; =0x00000814
+ add r1, r2, r4
+ ldrb r0, [r1, r0]
+ bl MOD18_0223BD00
+ str r0, [r5, #0x48]
+ bl MOD18_0223D638
+ ldr r1, _0223BF78 ; =0x02251380
+ ldr r1, [r1]
+ add r2, r1, r4
+ ldr r1, _0223BF80 ; =0x00000814
+ ldrb r1, [r2, r1]
+ bl MOD18_0224DDD0
+ ldr r0, _0223BF78 ; =0x02251380
+ ldr r0, [r0]
+ add r1, r0, r4
+ ldr r0, _0223BF80 ; =0x00000814
+ ldrb r0, [r1, r0]
+ bl MOD18_0223D194
+ cmp r0, #0
+ beq _0223BF44
+ mov r4, #0x45
+ bl MOD18_0223D638
+ ldr r2, [r5, #0x48]
+ mov r1, #1
+ bl MOD18_0224DEA4
+ b _0223BF50
+_0223BF44:
+ mov r4, #0x11
+ bl MOD18_0223D638
+ mov r1, #2
+ bl MOD18_0224DF54
+_0223BF50:
+ bl MOD18_0223D638
+ mov r2, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r1, _0223BF78 ; =0x02251380
+ ldr r2, [r1]
+ mov r1, #0x9e
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_0223BF6C:
+ add r0, r0, #1
+ add r6, #0xc
+ cmp r0, r1
+ blt _0223BEF8
+_0223BF74:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223BF78: .word 0x02251380
+_0223BF7C: .word 0x00000818
+_0223BF80: .word 0x00000814
+ thumb_func_end MOD18_0223BEE4
+
+ thumb_func_start MOD18_0223BF84
+MOD18_0223BF84: ; 0x0223BF84
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r0, _0223C070 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CB4
+ add r7, r0, #0
+ ldr r0, _0223C070 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ ldr r5, [r4, #0xc]
+ mov r2, #0
+ cmp r5, #0
+ ble _0223C06A
+ ldr r0, _0223C070 ; =0x02251380
+ ldr r6, [r0]
+ ldr r0, _0223C074 ; =0x00000818
+ add r3, r6, #0
+_0223BFB2:
+ ldrb r1, [r3, r0]
+ cmp r1, #1
+ bne _0223C062
+ mov r0, #0xc
+ mul r0, r2
+ ldr r1, _0223C074 ; =0x00000818
+ mov r3, #0
+ add r2, r6, r0
+ strb r3, [r2, r1]
+ ldr r2, _0223C070 ; =0x02251380
+ ldr r2, [r2]
+ add r2, r2, r0
+ sub r0, r1, #4
+ ldrb r5, [r2, r0]
+ add r0, r5, #0
+ bl MOD18_0223D194
+ cmp r0, #0
+ beq _0223BFE2
+ add r0, r7, #0
+ mov r1, #1
+ bl FUN_02026A0C
+ b _0223C032
+_0223BFE2:
+ ldr r0, _0223C070 ; =0x02251380
+ add r1, r5, #0
+ ldr r0, [r0]
+ mov r2, #1
+ ldr r0, [r0]
+ bl FUN_0206151C
+ cmp r5, #0x17
+ blt _0223BFF8
+ cmp r5, #0x1d
+ blt _0223C000
+_0223BFF8:
+ add r0, r5, #0
+ sub r0, #0x24
+ cmp r0, #1
+ bhi _0223C02A
+_0223C000:
+ add r0, r7, #0
+ mov r1, #1
+ bl FUN_02026A58
+ ldr r0, _0223C070 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r6, r0, #0
+ bl FUN_0205F740
+ add r1, r0, #0
+ add r1, r1, #1
+ lsl r1, r1, #0x10
+ add r0, r6, #0
+ lsr r1, r1, #0x10
+ bl FUN_0205F750
+ b _0223C032
+_0223C02A:
+ add r0, r7, #0
+ mov r1, #1
+ bl FUN_02026A9C
+_0223C032:
+ add r0, r5, #0
+ bl MOD18_0223BDE0
+ cmp r0, #0
+ beq _0223C046
+ ldr r1, [r4, #0x48]
+ add r0, r5, #0
+ bl MOD18_0223BD94
+ b _0223C06A
+_0223C046:
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x41
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r1, _0223C070 ; =0x02251380
+ ldr r2, [r1]
+ mov r1, #0x9e
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223C062:
+ add r2, r2, #1
+ add r3, #0xc
+ cmp r2, r5
+ blt _0223BFB2
+_0223C06A:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223C070: .word 0x02251380
+_0223C074: .word 0x00000818
+ thumb_func_end MOD18_0223BF84
+
+ thumb_func_start MOD18_0223C078
+MOD18_0223C078: ; 0x0223C078
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r0, _0223C178 ; =0x02251380
+ ldr r4, [r0]
+ ldr r0, _0223C17C ; =0x000009E8
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _0223C174
+ sub r0, r0, #1
+ ldrb r1, [r4, r0]
+ mov r0, #0xc4
+ sub r6, r0, r1
+ add r0, r6, #0
+ mov r1, #0x32
+ bl _s32_div_f
+ add r7, r0, #0
+ ldr r0, _0223C17C ; =0x000009E8
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ ldr r0, _0223C178 ; =0x02251380
+ mov r1, #0xf
+ ldr r5, [r0]
+ add r0, r6, #0
+ bl _s32_div_f
+ ldr r1, _0223C17C ; =0x000009E8
+ ldrb r2, [r5, r1]
+ cmp r2, r0
+ ble _0223C0CA
+ mov r2, #0
+ add r0, r1, #2
+ strb r2, [r5, r0]
+ ldr r0, _0223C178 ; =0x02251380
+ ldr r3, [r0]
+ add r0, r1, #2
+ ldrsb r2, [r3, r0]
+ add r0, r1, #1
+ strb r2, [r3, r0]
+ b _0223C146
+_0223C0CA:
+ add r4, r5, #0
+ add r4, #8
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r5, #8]
+ ldr r3, [r4, #4]
+ bl _ll_mul
+ ldr r2, [r4, #0x10]
+ ldr r3, [r4, #0x14]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r5, #8]
+ str r3, [r4, #4]
+ add r6, r7, #3
+ bne _0223C0EE
+ ldr r1, [r4, #4]
+ b _0223C0FA
+_0223C0EE:
+ ldr r0, [r4, #4]
+ mov r1, #0
+ mov r3, #0
+ add r2, r6, #0
+ bl _ll_mul
+_0223C0FA:
+ add r2, r7, #3
+ lsr r0, r2, #0x1f
+ add r0, r2, r0
+ asr r7, r0, #1
+ ldr r0, _0223C180 ; =0x000009E9
+ sub r1, r1, r7
+ strb r1, [r5, r0]
+ ldr r0, _0223C178 ; =0x02251380
+ ldr r5, [r0]
+ add r4, r5, #0
+ add r4, #8
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r5, #8]
+ ldr r3, [r4, #4]
+ bl _ll_mul
+ add r2, r0, #0
+ add r3, r1, #0
+ ldr r0, [r4, #0x10]
+ ldr r1, [r4, #0x14]
+ add r0, r0, r2
+ adc r1, r3
+ str r0, [r5, #8]
+ str r1, [r4, #4]
+ cmp r6, #0
+ bne _0223C134
+ ldr r1, [r4, #4]
+ b _0223C140
+_0223C134:
+ ldr r0, [r4, #4]
+ mov r1, #0
+ mov r3, #0
+ add r2, r6, #0
+ bl _ll_mul
+_0223C140:
+ ldr r0, _0223C184 ; =0x000009EA
+ sub r1, r1, r7
+ strb r1, [r5, r0]
+_0223C146:
+ add r0, sp, #0
+ bl MOD18_0223BB54
+ ldr r0, _0223C178 ; =0x02251380
+ ldr r1, _0223C180 ; =0x000009E9
+ ldr r0, [r0]
+ ldr r3, [sp]
+ ldrsb r2, [r0, r1]
+ add r1, r1, #1
+ lsl r2, r2, #0xc
+ sub r2, r3, r2
+ str r2, [sp]
+ ldrsb r1, [r0, r1]
+ ldr r2, [sp, #4]
+ lsl r1, r1, #0xc
+ sub r1, r2, r1
+ str r1, [sp, #4]
+ mov r1, #0x7b
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ add r1, sp, #0
+ bl FUN_02020044
+_0223C174:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223C178: .word 0x02251380
+_0223C17C: .word 0x000009E8
+_0223C180: .word 0x000009E9
+_0223C184: .word 0x000009EA
+ thumb_func_end MOD18_0223C078
+
+ thumb_func_start MOD18_0223C188
+MOD18_0223C188: ; 0x0223C188
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _0223C1E0 ; =0x02251380
+ ldr r4, [r0]
+ ldr r0, _0223C1E4 ; =0x000009E8
+ ldrb r6, [r4, r0]
+ cmp r6, #0
+ beq _0223C1DE
+ sub r0, r0, #1
+ ldrb r1, [r4, r0]
+ mov r0, #0xc4
+ sub r0, r0, r1
+ mov r1, #0xa
+ bl _s32_div_f
+ cmp r6, r0
+ ble _0223C1B0
+ ldr r0, _0223C1E4 ; =0x000009E8
+ mov r1, #0
+ strb r1, [r4, r0]
+_0223C1B0:
+ ldr r7, _0223C1E0 ; =0x02251380
+ mov r4, #0
+_0223C1B4:
+ ldr r6, [r7]
+ ldr r3, _0223C1E8 ; =0x000009E9
+ lsl r1, r4, #0x18
+ ldrsb r3, [r6, r3]
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ mov r2, #0
+ bl FUN_020179E0
+ lsl r1, r4, #0x18
+ ldr r6, [r7]
+ ldr r3, _0223C1EC ; =0x000009EA
+ add r0, r5, #0
+ ldrsb r3, [r6, r3]
+ lsr r1, r1, #0x18
+ mov r2, #3
+ bl FUN_020179E0
+ add r4, r4, #1
+ cmp r4, #3
+ blt _0223C1B4
+_0223C1DE:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223C1E0: .word 0x02251380
+_0223C1E4: .word 0x000009E8
+_0223C1E8: .word 0x000009E9
+_0223C1EC: .word 0x000009EA
+ thumb_func_end MOD18_0223C188
+
+ thumb_func_start MOD18_0223C1F0
+MOD18_0223C1F0: ; 0x0223C1F0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ ldr r0, _0223C338 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r6, r0, #0
+ ldr r0, _0223C338 ; =0x02251380
+ ldr r2, [r0]
+ ldr r0, _0223C33C ; =0x000009E5
+ ldrb r1, [r2, r0]
+ cmp r1, #1
+ bne _0223C216
+ mov r1, #0
+ strb r1, [r2, r0]
+_0223C216:
+ ldr r1, _0223C340 ; =0x021C48F8
+ ldrh r0, [r1, #0x20]
+ cmp r0, #0
+ beq _0223C29A
+ ldrh r0, [r1, #0x1c]
+ cmp r0, #0xd0
+ bhs _0223C28C
+ ldrh r1, [r1, #0x1e]
+ cmp r1, #0x20
+ blo _0223C28C
+ add r2, sp, #0
+ strb r0, [r2]
+ strb r1, [r2, #1]
+ ldr r2, _0223C338 ; =0x02251380
+ ldr r3, [r2]
+ ldr r2, _0223C344 ; =0x000009E4
+ ldrb r2, [r3, r2]
+ add r3, r5, #0
+ bl MOD18_0223B7AC
+ ldr r0, _0223C338 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, _0223C344 ; =0x000009E4
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _0223C24E
+ mov r4, #4
+ b _0223C250
+_0223C24E:
+ mov r4, #8
+_0223C250:
+ mov r0, #0x44
+ add r1, sp, #0
+ bl FUN_020311D0
+ ldr r0, _0223C338 ; =0x02251380
+ ldr r1, _0223C348 ; =0x000009E7
+ ldr r0, [r0]
+ ldrb r2, [r0, r1]
+ cmp r2, r4
+ ble _0223C268
+ sub r2, r2, r4
+ b _0223C26A
+_0223C268:
+ mov r2, #0
+_0223C26A:
+ strb r2, [r0, r1]
+ ldr r0, _0223C338 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD18_0223B6A4
+ ldr r0, _0223C338 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl MOD18_0223BB7C
+ ldr r0, _0223C338 ; =0x02251380
+ mov r2, #1
+ ldr r1, [r0]
+ ldr r0, _0223C34C ; =0x000009E8
+ strb r2, [r1, r0]
+ b _0223C29A
+_0223C28C:
+ cmp r0, #0xd0
+ blo _0223C29A
+ ldr r0, _0223C338 ; =0x02251380
+ mov r2, #2
+ ldr r1, [r0]
+ ldr r0, _0223C33C ; =0x000009E5
+ strb r2, [r1, r0]
+_0223C29A:
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ beq _0223C2AC
+ sub r0, r0, #1
+ str r0, [r5, #0x14]
+ bne _0223C2AC
+ ldr r0, _0223C350 ; =0x000006A5
+ bl FUN_020054C8
+_0223C2AC:
+ ldr r0, _0223C338 ; =0x02251380
+ ldr r2, _0223C340 ; =0x021C48F8
+ ldr r3, [r0]
+ ldr r4, _0223C33C ; =0x000009E5
+ ldr r0, [r3, #4]
+ ldrh r1, [r2, #0x1c]
+ ldrh r2, [r2, #0x1e]
+ ldrb r3, [r3, r4]
+ bl MOD18_0223B9EC
+ ldr r0, _0223C338 ; =0x02251380
+ ldr r2, [r0]
+ add r0, r4, #0
+ ldrb r1, [r2, r0]
+ cmp r1, #2
+ blo _0223C2D0
+ add r1, r1, #1
+ strb r1, [r2, r0]
+_0223C2D0:
+ add r0, r5, #0
+ bl MOD18_0223BC4C
+ add r0, r5, #0
+ bl MOD18_0223BE28
+ cmp r0, #0
+ beq _0223C30A
+ add r0, r6, #0
+ bl FUN_02026634
+ ldr r0, _0223C338 ; =0x02251380
+ ldr r0, [r0]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x1e
+ bl FUN_0202A170
+ mov r0, #0xe
+ str r0, [r5]
+ mov r0, #0x19
+ str r0, [r5, #8]
+ mov r0, #1
+ add r5, #0x50
+ add sp, #4
+ strb r0, [r5]
+ pop {r3, r4, r5, r6, pc}
+_0223C30A:
+ ldr r0, _0223C338 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, _0223C348 ; =0x000009E7
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _0223C332
+ add r0, r6, #0
+ bl FUN_02026634
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x50
+ strb r1, [r0]
+ mov r0, #0x2d
+ str r0, [r5, #8]
+ mov r0, #0x16
+ str r0, [r5]
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_0223C332:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0223C338: .word 0x02251380
+_0223C33C: .word 0x000009E5
+_0223C340: .word 0x021C48F8
+_0223C344: .word 0x000009E4
+_0223C348: .word 0x000009E7
+_0223C34C: .word 0x000009E8
+_0223C350: .word 0x000006A5
+ thumb_func_end MOD18_0223C1F0
+
+ thumb_func_start MOD18_0223C354
+MOD18_0223C354: ; 0x0223C354
+ push {r3, r4}
+ ldr r3, _0223C374 ; =0x02251380
+ ldr r2, _0223C378 ; =0x000009EB
+ ldr r4, [r3]
+ ldrb r1, [r4, r2]
+ lsl r1, r1, #2
+ add r4, r4, r1
+ mov r1, #0x57
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r1, [r3]
+ ldrb r0, [r1, r2]
+ add r0, r0, #1
+ strb r0, [r1, r2]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+_0223C374: .word 0x02251380
+_0223C378: .word 0x000009EB
+ thumb_func_end MOD18_0223C354
+
+ thumb_func_start MOD18_0223C37C
+MOD18_0223C37C: ; 0x0223C37C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r0, _0223C568 ; =0x02251380
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _0223C56C ; =0x000009EB
+ strb r2, [r1, r0]
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x7c
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x1f
+ str r3, [sp, #0xc]
+ mov r2, #0x1d
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ bl MOD18_0223C680
+ ldr r1, _0223C568 ; =0x02251380
+ mov r0, #0x1a
+ ldr r1, [r1]
+ mov r2, #0x1d
+ add r1, #0x24
+ bl FUN_02008C9C
+ ldr r1, _0223C568 ; =0x02251380
+ ldr r2, [r1]
+ str r0, [r2, #0x20]
+ ldr r0, [r1]
+ mov r2, #6
+ add r0, #0x24
+ mov r1, #0
+ lsl r2, r2, #0x12
+ bl FUN_02008D24
+ mov r4, #0
+ mov r7, #0x53
+ ldr r6, _0223C568 ; =0x02251380
+ add r5, r4, #0
+ lsl r7, r7, #2
+_0223C3D6:
+ mov r0, #2
+ add r1, r4, #0
+ mov r2, #0x1d
+ bl FUN_02008DEC
+ ldr r1, [r6]
+ add r4, r4, #1
+ add r1, r1, r5
+ add r5, r5, #4
+ str r0, [r1, r7]
+ cmp r4, #4
+ blt _0223C3D6
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x1d
+ str r0, [sp, #8]
+ ldr r0, _0223C568 ; =0x02251380
+ mov r2, #6
+ ldr r1, [r0]
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x40
+ bl FUN_02008F34
+ bl MOD18_0223C354
+ ldr r0, _0223C568 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, _0223C56C ; =0x000009EB
+ ldrb r0, [r1, r0]
+ sub r0, r0, #1
+ lsl r0, r0, #2
+ add r1, r1, r0
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02009A50
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x1d
+ str r0, [sp, #0xc]
+ ldr r0, _0223C568 ; =0x02251380
+ mov r2, #7
+ ldr r1, [r0]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0x40
+ bl FUN_02008FEC
+ bl MOD18_0223C354
+ ldr r0, _0223C568 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, _0223C56C ; =0x000009EB
+ ldrb r0, [r1, r0]
+ sub r0, r0, #1
+ lsl r0, r0, #2
+ add r1, r1, r0
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02009D68
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x1d
+ str r0, [sp, #8]
+ ldr r0, _0223C568 ; =0x02251380
+ mov r2, #5
+ ldr r1, [r0]
+ mov r0, #0x55
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x40
+ bl FUN_020090AC
+ bl MOD18_0223C354
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x1d
+ str r0, [sp, #8]
+ ldr r0, _0223C568 ; =0x02251380
+ mov r2, #4
+ ldr r1, [r0]
+ mov r0, #0x56
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x40
+ bl FUN_020090AC
+ bl MOD18_0223C354
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x1d
+ str r0, [sp, #8]
+ ldr r0, _0223C568 ; =0x02251380
+ mov r2, #3
+ ldr r1, [r0]
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x40
+ mov r3, #0
+ bl FUN_02008F34
+ bl MOD18_0223C354
+ ldr r0, _0223C568 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, _0223C56C ; =0x000009EB
+ ldrb r0, [r1, r0]
+ sub r0, r0, #1
+ lsl r0, r0, #2
+ add r1, r1, r0
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02009A50
+ mov r2, #1
+ str r2, [sp]
+ str r2, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0x1d
+ str r0, [sp, #0xc]
+ ldr r0, _0223C568 ; =0x02251380
+ mov r3, #0
+ ldr r1, [r0]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0x34
+ bl FUN_02008FEC
+ bl MOD18_0223C354
+ ldr r0, _0223C568 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, _0223C56C ; =0x000009EB
+ ldrb r0, [r1, r0]
+ sub r0, r0, #1
+ lsl r0, r0, #2
+ add r1, r1, r0
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02009D68
+ mov r0, #1
+ str r0, [sp]
+ mov r2, #2
+ str r2, [sp, #4]
+ mov r0, #0x1d
+ str r0, [sp, #8]
+ ldr r0, _0223C568 ; =0x02251380
+ mov r3, #0
+ ldr r1, [r0]
+ mov r0, #0x55
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x40
+ bl FUN_020090AC
+ bl MOD18_0223C354
+ mov r2, #1
+ str r2, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x1d
+ str r0, [sp, #8]
+ ldr r0, _0223C568 ; =0x02251380
+ mov r3, #0
+ ldr r1, [r0]
+ mov r0, #0x56
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x40
+ bl FUN_020090AC
+ bl MOD18_0223C354
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0223C568: .word 0x02251380
+_0223C56C: .word 0x000009EB
+ thumb_func_end MOD18_0223C37C
+
+ thumb_func_start MOD18_0223C570
+MOD18_0223C570: ; 0x0223C570
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x64
+ mov r7, #0
+ str r7, [sp, #0x30]
+ str r7, [sp, #0x2c]
+_0223C57A:
+ ldr r0, _0223C67C ; =0x02251380
+ mov r3, #0x53
+ ldr r1, [r0]
+ mov r0, #0
+ str r7, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r3, r3, #2
+ ldr r2, [r1, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r1, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r1, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r1, r2]
+ add r3, #0x54
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r1, r1, r3
+ ldr r0, [sp, #0x30]
+ add r2, r7, #0
+ add r0, r1, r0
+ add r1, r7, #0
+ add r3, r7, #0
+ bl FUN_02008AA4
+ ldr r6, _0223C67C ; =0x02251380
+ mov r2, #2
+ ldr r1, [r6]
+ lsl r2, r2, #0x10
+ ldr r0, [r1, #0x20]
+ str r0, [sp, #0x34]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ add r1, r1, r0
+ ldr r0, [sp, #0x30]
+ str r2, [sp, #0x3c]
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ mov r0, #6
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x40]
+ lsr r0, r2, #5
+ mov r1, #0
+ str r1, [sp, #0x44]
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x4c]
+ str r0, [sp, #0x50]
+ add r0, sp, #0x34
+ strh r1, [r0, #0x20]
+ mov r0, #1
+ str r0, [sp, #0x5c]
+ mov r0, #0x1d
+ str r0, [sp, #0x60]
+ mov r0, #0xf
+ lsl r0, r0, #0x10
+ str r1, [sp, #0x58]
+ str r1, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ cmp r7, #0
+ bne _0223C634
+ mov r4, #2
+ mov r5, #8
+_0223C60C:
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ ldr r1, [r6]
+ add r2, r1, r5
+ mov r1, #0x7a
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r6]
+ add r1, r0, r5
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #7
+ ble _0223C60C
+_0223C634:
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ ldr r2, _0223C67C ; =0x02251380
+ ldr r1, [sp, #0x2c]
+ ldr r3, [r2]
+ add r3, r3, r1
+ mov r1, #0x7a
+ lsl r1, r1, #2
+ str r0, [r3, r1]
+ ldr r2, [r2]
+ ldr r0, [sp, #0x2c]
+ add r0, r2, r0
+ ldr r0, [r0, r1]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [sp, #0x30]
+ add r7, r7, #1
+ add r0, #0x24
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x2c]
+ add r0, r0, #4
+ str r0, [sp, #0x2c]
+ cmp r7, #2
+ blt _0223C57A
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x64
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223C67C: .word 0x02251380
+ thumb_func_end MOD18_0223C570
+
+ thumb_func_start MOD18_0223C680
+MOD18_0223C680: ; 0x0223C680
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _0223C6C0 ; =0x0224FFF0
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r1, _0223C6C4 ; =0x00200010
+ add r0, r2, #0
+ add r2, r1, #0
+ bl FUN_0201D060
+ mov r0, #0x14
+ mov r1, #0x1d
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ ldr r1, _0223C6C8 ; =0x00100010
+ mov r0, #1
+ bl FUN_02008D44
+ mov r0, #1
+ bl FUN_02008DDC
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_0223C6C0: .word 0x0224FFF0
+_0223C6C4: .word 0x00200010
+_0223C6C8: .word 0x00100010
+ thumb_func_end MOD18_0223C680
+
+ thumb_func_start MOD18_0223C6CC
+MOD18_0223C6CC: ; 0x0223C6CC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD18_0223C188
+ add r0, r4, #0
+ bl FUN_0201AB60
+ bl FUN_0201C30C
+ bl FUN_02009F80
+ pop {r4, pc}
+ thumb_func_end MOD18_0223C6CC
+
+ thumb_func_start MOD18_0223C6E4
+MOD18_0223C6E4: ; 0x0223C6E4
+ push {r3, lr}
+ lsl r0, r0, #0x10
+ lsl r1, r1, #0x10
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x10
+ bl MOD18_02239DEC
+ cmp r0, #0
+ beq _0223C6FA
+ mov r0, #1
+ pop {r3, pc}
+_0223C6FA:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223C6E4
+
+ thumb_func_start MOD18_0223C700
+MOD18_0223C700: ; 0x0223C700
+ ldr r1, _0223C718 ; =0x02251380
+ ldr r2, [r1]
+ cmp r2, #0
+ beq _0223C714
+ mov r1, #6
+ mul r1, r0
+ ldr r0, _0223C71C ; =0x00000888
+ add r1, r2, r1
+ ldrh r0, [r1, r0]
+ bx lr
+_0223C714:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0223C718: .word 0x02251380
+_0223C71C: .word 0x00000888
+ thumb_func_end MOD18_0223C700
+
+ thumb_func_start MOD18_0223C720
+MOD18_0223C720: ; 0x0223C720
+ ldr r1, _0223C738 ; =0x02251380
+ ldr r2, [r1]
+ cmp r2, #0
+ beq _0223C734
+ mov r1, #6
+ mul r1, r0
+ ldr r0, _0223C73C ; =0x0000088A
+ add r1, r2, r1
+ ldrh r0, [r1, r0]
+ bx lr
+_0223C734:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0223C738: .word 0x02251380
+_0223C73C: .word 0x0000088A
+ thumb_func_end MOD18_0223C720
+
+ thumb_func_start MOD18_0223C740
+MOD18_0223C740: ; 0x0223C740
+ push {r4, lr}
+ ldr r1, _0223C76C ; =0x02251380
+ ldr r2, [r1]
+ cmp r2, #0
+ beq _0223C766
+ ldr r1, _0223C770 ; =0x00000884
+ ldr r4, [r2, r1]
+ cmp r4, #0
+ beq _0223C766
+ ldr r1, _0223C774 ; =0x000005DE
+ ldrh r1, [r4, r1]
+ add r0, r1, r0
+ mov r1, #0x53
+ bl _s32_div_f
+ mov r0, #6
+ mul r0, r1
+ ldrh r0, [r4, r0]
+ pop {r4, pc}
+_0223C766:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_0223C76C: .word 0x02251380
+_0223C770: .word 0x00000884
+_0223C774: .word 0x000005DE
+ thumb_func_end MOD18_0223C740
+
+ thumb_func_start MOD18_0223C778
+MOD18_0223C778: ; 0x0223C778
+ push {r4, lr}
+ ldr r1, _0223C7A4 ; =0x02251380
+ ldr r2, [r1]
+ cmp r2, #0
+ beq _0223C7A0
+ ldr r1, _0223C7A8 ; =0x00000884
+ ldr r4, [r2, r1]
+ cmp r4, #0
+ beq _0223C7A0
+ ldr r1, _0223C7AC ; =0x000005DE
+ ldrh r1, [r4, r1]
+ add r0, r1, r0
+ mov r1, #0x53
+ bl _s32_div_f
+ mov r0, #6
+ mul r0, r1
+ add r0, r4, r0
+ ldrh r0, [r0, #2]
+ pop {r4, pc}
+_0223C7A0:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_0223C7A4: .word 0x02251380
+_0223C7A8: .word 0x00000884
+_0223C7AC: .word 0x000005DE
+ thumb_func_end MOD18_0223C778
+
+ thumb_func_start MOD18_0223C7B0
+MOD18_0223C7B0: ; 0x0223C7B0
+ push {r4, lr}
+ ldr r0, _0223C7D0 ; =0x000005DE
+ add r4, r1, #0
+ ldrh r1, [r4, r0]
+ add r1, r1, #1
+ strh r1, [r4, r0]
+ ldrh r1, [r4, r0]
+ cmp r1, #0x53
+ bls _0223C7CE
+ add r0, #0x43
+ bl FUN_020054C8
+ ldr r0, _0223C7D0 ; =0x000005DE
+ mov r1, #0
+ strh r1, [r4, r0]
+_0223C7CE:
+ pop {r4, pc}
+ .align 2, 0
+_0223C7D0: .word 0x000005DE
+ thumb_func_end MOD18_0223C7B0
+
+ thumb_func_start MOD18_0223C7D4
+MOD18_0223C7D4: ; 0x0223C7D4
+ push {r4, lr}
+ ldr r0, _0223C834 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, _0223C838 ; =0x00000884
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223C7E6
+ bl ErrorHandling
+_0223C7E6:
+ ldr r0, _0223C834 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, _0223C83C ; =0x00000878
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223C7F6
+ bl ErrorHandling
+_0223C7F6:
+ mov r1, #0x5e
+ mov r0, #0xb
+ lsl r1, r1, #4
+ bl FUN_020169D8
+ mov r2, #0x5e
+ mov r1, #0
+ lsl r2, r2, #4
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x47
+ bl FUN_020311DC
+ ldr r0, _0223C840 ; =0x000005DE
+ mov r1, #0x49
+ strh r1, [r4, r0]
+ ldr r0, _0223C834 ; =0x02251380
+ mov r2, #0x64
+ ldr r1, [r0]
+ ldr r0, _0223C838 ; =0x00000884
+ str r4, [r1, r0]
+ ldr r0, _0223C844 ; =MOD18_0223C7B0
+ add r1, r4, #0
+ bl FUN_0200CA44
+ ldr r1, _0223C834 ; =0x02251380
+ ldr r2, [r1]
+ ldr r1, _0223C83C ; =0x00000878
+ str r0, [r2, r1]
+ pop {r4, pc}
+ .align 2, 0
+_0223C834: .word 0x02251380
+_0223C838: .word 0x00000884
+_0223C83C: .word 0x00000878
+_0223C840: .word 0x000005DE
+_0223C844: .word MOD18_0223C7B0
+ thumb_func_end MOD18_0223C7D4
+
+ thumb_func_start MOD18_0223C848
+MOD18_0223C848: ; 0x0223C848
+ push {r3, lr}
+ ldr r0, _0223C878 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, _0223C87C ; =0x00000878
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223C876
+ bl FUN_0200CAB4
+ ldr r0, _0223C878 ; =0x02251380
+ ldr r1, [r0]
+ ldr r0, _0223C880 ; =0x00000884
+ ldr r0, [r1, r0]
+ bl FUN_02016A18
+ ldr r1, _0223C878 ; =0x02251380
+ ldr r0, _0223C87C ; =0x00000878
+ ldr r2, [r1]
+ mov r3, #0
+ str r3, [r2, r0]
+ ldr r1, [r1]
+ add r0, #0xc
+ str r3, [r1, r0]
+_0223C876:
+ pop {r3, pc}
+ .align 2, 0
+_0223C878: .word 0x02251380
+_0223C87C: .word 0x00000878
+_0223C880: .word 0x00000884
+ thumb_func_end MOD18_0223C848
+
+ thumb_func_start MOD18_0223C884
+MOD18_0223C884: ; 0x0223C884
+ ldr r1, _0223C894 ; =0x02251380
+ mov r2, #1
+ ldr r1, [r1]
+ add r1, r1, r0
+ mov r0, #0x87
+ lsl r0, r0, #4
+ strb r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223C894: .word 0x02251380
+ thumb_func_end MOD18_0223C884
+
+ thumb_func_start MOD18_0223C898
+MOD18_0223C898: ; 0x0223C898
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r5, #0
+_0223C89E:
+ ldr r0, _0223C908 ; =0x02251380
+ ldr r1, [r0]
+ mov r0, #0x87
+ add r7, r1, r5
+ lsl r0, r0, #4
+ ldrb r0, [r7, r0]
+ sub r4, r0, #1
+ cmp r0, #0
+ beq _0223C8FE
+ mov r0, #0x82
+ lsl r0, r0, #2
+ add r1, r1, r0
+ mov r0, #6
+ mul r0, r4
+ add r6, r1, r0
+ ldr r0, _0223C90C ; =0x0000FFFF
+ add r1, r0, #0
+_0223C8C0:
+ ldrh r3, [r6]
+ cmp r3, r1
+ beq _0223C8EE
+ ldrh r2, [r6, #2]
+ cmp r2, r0
+ beq _0223C8EE
+ add r0, sp, #0
+ strh r3, [r0]
+ ldrh r1, [r6, #2]
+ strh r1, [r0, #2]
+ strb r5, [r0, #4]
+ mov r0, #0x48
+ add r1, sp, #0
+ bl FUN_02030C4C
+ ldr r0, _0223C908 ; =0x02251380
+ add r2, r4, #3
+ ldr r0, [r0]
+ add r1, r0, r5
+ mov r0, #0x87
+ lsl r0, r0, #4
+ strb r2, [r1, r0]
+ b _0223C8FE
+_0223C8EE:
+ add r4, r4, #3
+ add r6, #0x12
+ cmp r4, #0xfa
+ blt _0223C8C0
+ mov r1, #0x87
+ lsl r1, r1, #4
+ mov r0, #0
+ strb r0, [r7, r1]
+_0223C8FE:
+ add r5, r5, #1
+ cmp r5, #8
+ blt _0223C89E
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223C908: .word 0x02251380
+_0223C90C: .word 0x0000FFFF
+ thumb_func_end MOD18_0223C898
+
+ thumb_func_start MOD18_0223C910
+MOD18_0223C910: ; 0x0223C910
+ push {r3, r4, r5, lr}
+ ldr r0, _0223C9A4 ; =0x02251380
+ add r5, r2, #0
+ ldr r2, [r0]
+ cmp r2, #0
+ beq _0223C9A0
+ ldrb r1, [r5, #4]
+ mov r0, #0xf
+ add r4, r1, #0
+ and r4, r0
+ ldr r0, _0223C9A8 ; =0x00000884
+ ldr r0, [r2, r0]
+ cmp r0, #0
+ bne _0223C960
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0223C9A0
+ ldrb r0, [r5, #4]
+ asr r1, r0, #4
+ mov r0, #0xf
+ add r3, r1, #0
+ and r3, r0
+ cmp r3, #0
+ ble _0223C9A0
+ cmp r3, #8
+ bgt _0223C9A0
+ ldr r1, _0223C9A4 ; =0x02251380
+ add r0, r5, #0
+ ldr r2, [r1]
+ ldr r1, _0223C9AC ; =0x00000888
+ add r4, r2, r1
+ sub r1, r3, #1
+ mov r2, #6
+ add r3, r1, #0
+ mul r3, r2
+ add r1, r4, r3
+ bl MI_CpuCopy8
+ pop {r3, r4, r5, pc}
+_0223C960:
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0223C9A0
+ ldr r0, _0223C9A4 ; =0x02251380
+ mov r2, #6
+ ldr r1, [r0]
+ ldr r0, _0223C9A8 ; =0x00000884
+ ldr r4, [r1, r0]
+ ldr r1, _0223C9B0 ; =0x000005DC
+ add r0, r5, #0
+ ldrb r1, [r4, r1]
+ add r3, r1, #0
+ mul r3, r2
+ add r1, r4, r3
+ bl MI_CpuCopy8
+ ldr r2, _0223C9A4 ; =0x02251380
+ ldr r0, _0223C9A8 ; =0x00000884
+ ldr r1, [r2]
+ ldr r4, [r1, r0]
+ ldr r1, _0223C9B0 ; =0x000005DC
+ ldrb r3, [r4, r1]
+ add r3, r3, #1
+ strb r3, [r4, r1]
+ ldr r2, [r2]
+ ldr r2, [r2, r0]
+ ldrb r0, [r2, r1]
+ cmp r0, #0xfa
+ blo _0223C9A0
+ mov r0, #0
+ strb r0, [r2, r1]
+_0223C9A0:
+ pop {r3, r4, r5, pc}
+ nop
+_0223C9A4: .word 0x02251380
+_0223C9A8: .word 0x00000884
+_0223C9AC: .word 0x00000888
+_0223C9B0: .word 0x000005DC
+ thumb_func_end MOD18_0223C910
+
+ thumb_func_start MOD18_0223C9B4
+MOD18_0223C9B4: ; 0x0223C9B4
+ mov r0, #6
+ bx lr
+ thumb_func_end MOD18_0223C9B4
+
+ thumb_func_start MOD18_0223C9B8
+MOD18_0223C9B8: ; 0x0223C9B8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ ldr r4, _0223CA6C ; =0x02251380
+ mov r5, #0
+ add r7, sp, #0
+_0223C9C2:
+ lsl r0, r5, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0
+ beq _0223CA62
+ add r0, r5, #0
+ bl FUN_0204F6B4
+ cmp r0, #0
+ ldr r0, [r4]
+ beq _0223C9E4
+ add r2, r0, r5
+ ldr r0, _0223CA70 ; =0x000008B8
+ mov r1, #0
+ strb r1, [r2, r0]
+ b _0223CA62
+_0223C9E4:
+ ldr r1, _0223CA70 ; =0x000008B8
+ add r0, r0, r5
+ ldrb r1, [r0, r1]
+ cmp r1, #0x1c
+ bhs _0223CA62
+ ldr r1, _0223CA70 ; =0x000008B8
+ ldrb r1, [r0, r1]
+ add r2, r1, #1
+ ldr r1, _0223CA70 ; =0x000008B8
+ strb r2, [r0, r1]
+ ldr r0, [r4]
+ add r1, r0, r5
+ ldr r0, _0223CA70 ; =0x000008B8
+ ldrb r0, [r1, r0]
+ cmp r0, #0x14
+ blo _0223CA62
+ add r0, r5, #0
+ bl FUN_0204E544
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_0204E598
+ add r1, r0, #0
+ lsl r0, r6, #0x10
+ lsl r1, r1, #0x10
+ lsr r0, r0, #0x10
+ lsr r1, r1, #0x10
+ bl MOD18_02239E2C
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0223CA62
+ mov r2, #0x82
+ ldr r1, [r4]
+ lsl r2, r2, #2
+ add r3, r1, r2
+ mov r2, #6
+ mul r2, r0
+ add r0, r3, r2
+ ldrh r3, [r3, r2]
+ ldr r2, _0223CA74 ; =0x0000FFFF
+ cmp r3, r2
+ beq _0223CA62
+ ldrh r3, [r0, #2]
+ cmp r3, r2
+ beq _0223CA62
+ add r2, r1, r5
+ ldr r1, _0223CA70 ; =0x000008B8
+ ldrb r1, [r2, r1]
+ sub r1, #0x13
+ lsl r1, r1, #4
+ add r1, r5, r1
+ strb r1, [r7, #4]
+ ldrh r1, [r0]
+ strh r1, [r7]
+ ldrh r0, [r0, #2]
+ add r1, sp, #0
+ strh r0, [r7, #2]
+ mov r0, #0x48
+ bl FUN_02030C4C
+_0223CA62:
+ add r5, r5, #1
+ cmp r5, #8
+ blt _0223C9C2
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223CA6C: .word 0x02251380
+_0223CA70: .word 0x000008B8
+_0223CA74: .word 0x0000FFFF
+ thumb_func_end MOD18_0223C9B8
+
+ thumb_func_start MOD18_0223CA78
+MOD18_0223CA78: ; 0x0223CA78
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r6, _0223CAC4 ; =0x02251380
+ add r5, r0, #0
+ ldr r0, [r6]
+ cmp r0, #0
+ bne _0223CA88
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0223CA88:
+ mov r4, #0
+ add r7, r4, #0
+_0223CA8C:
+ ldr r0, [r6]
+ add r1, r0, r4
+ ldr r0, _0223CAC8 ; =0x000008C4
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _0223CAB8
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ ldr r1, [r6]
+ add r3, r5, #0
+ add r2, r1, r4
+ ldr r1, _0223CAC8 ; =0x000008C4
+ strb r7, [r2, r1]
+ add r1, r7, #0
+ mov r2, #0x69
+ bl MOD18_0223D744
+ cmp r0, #0
+ beq _0223CAB8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223CAB8:
+ add r4, r4, #1
+ cmp r4, #8
+ blt _0223CA8C
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223CAC4: .word 0x02251380
+_0223CAC8: .word 0x000008C4
+ thumb_func_end MOD18_0223CA78
+
+ thumb_func_start MOD18_0223CACC
+MOD18_0223CACC: ; 0x0223CACC
+ push {r3, lr}
+ ldr r0, _0223CAE4 ; =0x02251380
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _0223CAE2
+ ldr r0, _0223CAE8 ; =0x000008C4
+ mov r2, #8
+ add r0, r1, r0
+ mov r1, #0
+ bl MI_CpuFill8
+_0223CAE2:
+ pop {r3, pc}
+ .align 2, 0
+_0223CAE4: .word 0x02251380
+_0223CAE8: .word 0x000008C4
+ thumb_func_end MOD18_0223CACC
+
+ thumb_func_start MOD18_0223CAEC
+MOD18_0223CAEC: ; 0x0223CAEC
+ ldr r1, _0223CB00 ; =0x02251380
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _0223CAFC
+ add r1, r1, r0
+ ldr r0, _0223CB04 ; =0x00000808
+ ldrb r0, [r1, r0]
+ bx lr
+_0223CAFC:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0223CB00: .word 0x02251380
+_0223CB04: .word 0x00000808
+ thumb_func_end MOD18_0223CAEC
+
+ thumb_func_start MOD18_0223CB08
+MOD18_0223CB08: ; 0x0223CB08
+ ldr r1, _0223CB1C ; =0x02251380
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _0223CB18
+ add r1, r1, r0
+ ldr r0, _0223CB20 ; =0x00000808
+ mov r2, #0
+ strb r2, [r1, r0]
+_0223CB18:
+ bx lr
+ nop
+_0223CB1C: .word 0x02251380
+_0223CB20: .word 0x00000808
+ thumb_func_end MOD18_0223CB08
+
+ thumb_func_start MOD18_0223CB24
+MOD18_0223CB24: ; 0x0223CB24
+ ldr r0, _0223CB40 ; =0x02251380
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _0223CB3A
+ mov r0, #0x22
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223CB3A
+ mov r0, #1
+ bx lr
+_0223CB3A:
+ mov r0, #0
+ bx lr
+ nop
+_0223CB40: .word 0x02251380
+ thumb_func_end MOD18_0223CB24
+
+ thumb_func_start MOD18_0223CB44
+MOD18_0223CB44: ; 0x0223CB44
+ ldr r2, _0223CB54 ; =0x02251380
+ ldr r2, [r2]
+ cmp r2, #0
+ beq _0223CB52
+ add r2, r2, r0
+ ldr r0, _0223CB58 ; =0x00000808
+ strb r1, [r2, r0]
+_0223CB52:
+ bx lr
+ .align 2, 0
+_0223CB54: .word 0x02251380
+_0223CB58: .word 0x00000808
+ thumb_func_end MOD18_0223CB44
+
+ thumb_func_start MOD18_0223CB5C
+MOD18_0223CB5C: ; 0x0223CB5C
+ ldr r3, _0223CB60 ; =0x0204F7FD
+ bx r3
+ .align 2, 0
+_0223CB60: .word 0x0204F7FD
+ thumb_func_end MOD18_0223CB5C
+
+ thumb_func_start MOD18_0223CB64
+MOD18_0223CB64: ; 0x0223CB64
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0
+ ble _0223CB88
+ bl MOD18_0223D638
+ mov r1, #0
+ add r2, r4, #0
+ bl MOD18_0224DEA4
+ bl MOD18_0223D638
+ ldr r3, _0223CB90 ; =MOD18_0223CB5C
+ mov r1, #0x4b
+ mov r2, #1
+ bl MOD18_0224DCB8
+ pop {r4, pc}
+_0223CB88:
+ bl MOD18_0223CB5C
+ pop {r4, pc}
+ nop
+_0223CB90: .word MOD18_0223CB5C
+ thumb_func_end MOD18_0223CB64
+
+ thumb_func_start MOD18_0223CB94
+MOD18_0223CB94: ; 0x0223CB94
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ ldr r1, _0223CC20 ; =0x02251384
+ ldr r2, [r1]
+ cmp r2, #0
+ bne _0223CC1E
+ ldr r2, _0223CC24 ; =0x000004DC
+ str r0, [r1]
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r0, _0223CC20 ; =0x02251384
+ ldr r1, [r0]
+ ldr r0, _0223CC28 ; =0x000004C8
+ str r4, [r1, r0]
+ add r0, r4, #0
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ mov r4, #0
+ ldr r7, _0223CC20 ; =0x02251384
+ add r6, r0, #0
+ add r5, r4, #0
+_0223CBC4:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_020264F0
+ ldr r1, [r7]
+ add r1, r1, r5
+ strb r0, [r1, #6]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_020264FC
+ ldr r1, [r7]
+ strh r0, [r1, r5]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0202651C
+ ldr r1, [r7]
+ add r1, r1, r5
+ strh r0, [r1, #2]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0202653C
+ ldr r1, [r7]
+ add r1, r1, r5
+ strb r0, [r1, #4]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_02026548
+ ldr r1, [r7]
+ add r1, r1, r5
+ strb r0, [r1, #5]
+ ldr r0, [r7]
+ add r0, r0, r5
+ ldrb r1, [r0, #6]
+ cmp r1, #0
+ beq _0223CC16
+ bl MOD18_0223CD74
+_0223CC16:
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #0x64
+ blt _0223CBC4
+_0223CC1E:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223CC20: .word 0x02251384
+_0223CC24: .word 0x000004DC
+_0223CC28: .word 0x000004C8
+ thumb_func_end MOD18_0223CB94
+
+ thumb_func_start MOD18_0223CC2C
+MOD18_0223CC2C: ; 0x0223CC2C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r0, _0223CC70 ; =0x02251384
+ ldr r1, [r0]
+ ldr r0, _0223CC74 ; =0x000004C8
+ ldr r0, [r1, r0]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ mov r4, #0
+ ldr r7, _0223CC70 ; =0x02251384
+ add r6, r0, #0
+ add r5, r4, #0
+_0223CC48:
+ ldr r3, [r7]
+ add r2, r4, #0
+ add r1, r3, r5
+ ldrh r0, [r1, #2]
+ str r0, [sp]
+ ldrb r0, [r1, #4]
+ str r0, [sp, #4]
+ ldrb r0, [r1, #5]
+ str r0, [sp, #8]
+ ldrb r1, [r1, #6]
+ ldrh r3, [r3, r5]
+ add r0, r6, #0
+ bl FUN_0202649C
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #0x64
+ blt _0223CC48
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223CC70: .word 0x02251384
+_0223CC74: .word 0x000004C8
+ thumb_func_end MOD18_0223CC2C
+
+ thumb_func_start MOD18_0223CC78
+MOD18_0223CC78: ; 0x0223CC78
+ ldr r0, _0223CC7C ; =0x000004DC
+ bx lr
+ .align 2, 0
+_0223CC7C: .word 0x000004DC
+ thumb_func_end MOD18_0223CC78
+
+ thumb_func_start MOD18_0223CC80
+MOD18_0223CC80: ; 0x0223CC80
+ ldr r0, _0223CC8C ; =0x02251384
+ mov r2, #1
+ ldr r1, [r0]
+ ldr r0, _0223CC90 ; =0x000004DA
+ strb r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223CC8C: .word 0x02251384
+_0223CC90: .word 0x000004DA
+ thumb_func_end MOD18_0223CC80
+
+ thumb_func_start MOD18_0223CC94
+MOD18_0223CC94: ; 0x0223CC94
+ ldr r0, _0223CCA0 ; =0x02251384
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _0223CCA4 ; =0x000004DA
+ strb r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223CCA0: .word 0x02251384
+_0223CCA4: .word 0x000004DA
+ thumb_func_end MOD18_0223CC94
+
+ thumb_func_start MOD18_0223CCA8
+MOD18_0223CCA8: ; 0x0223CCA8
+ push {r3, lr}
+ ldr r0, _0223CCC0 ; =0x02251384
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223CCBC
+ bl FUN_02016A18
+ ldr r0, _0223CCC0 ; =0x02251384
+ mov r1, #0
+ str r1, [r0]
+_0223CCBC:
+ pop {r3, pc}
+ nop
+_0223CCC0: .word 0x02251384
+ thumb_func_end MOD18_0223CCA8
+
+ thumb_func_start MOD18_0223CCC4
+MOD18_0223CCC4: ; 0x0223CCC4
+ push {r3, r4, r5, lr}
+ ldr r3, _0223CD34 ; =0x02251384
+ ldr r2, _0223CD38 ; =0x000004DA
+ ldr r0, [r3]
+ ldrb r1, [r0, r2]
+ cmp r1, #0
+ bne _0223CD32
+ sub r1, r2, #6
+ ldr r1, [r0, r1]
+ add r4, r1, #1
+ sub r1, r2, #6
+ str r4, [r0, r1]
+ ldr r3, [r3]
+ add r0, r1, #0
+ ldr r1, [r3, r0]
+ mov r0, #0x7d
+ lsl r0, r0, #4
+ cmp r1, r0
+ blt _0223CCF0
+ mov r1, #0
+ sub r0, r2, #6
+ str r1, [r3, r0]
+_0223CCF0:
+ ldr r0, _0223CD34 ; =0x02251384
+ ldr r1, [r0]
+ ldr r0, _0223CD3C ; =0x000004D4
+ ldr r4, [r1, r0]
+ mov r1, #0x14
+ add r0, r4, #0
+ bl _s32_div_f
+ cmp r1, #0xa
+ bne _0223CD32
+ add r0, r4, #0
+ mov r1, #0x14
+ bl _s32_div_f
+ add r5, r0, #0
+ bl MOD18_0223D1B8
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD18_0223D1D8
+ add r2, r0, #0
+ cmp r4, #0
+ beq _0223CD32
+ cmp r2, #0
+ beq _0223CD32
+ ldr r0, _0223CD34 ; =0x02251384
+ ldr r1, [r0]
+ ldr r0, _0223CD40 ; =0x000004C8
+ ldr r0, [r1, r0]
+ add r1, r4, #0
+ bl MOD05_021E5D0C
+_0223CD32:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223CD34: .word 0x02251384
+_0223CD38: .word 0x000004DA
+_0223CD3C: .word 0x000004D4
+_0223CD40: .word 0x000004C8
+ thumb_func_end MOD18_0223CCC4
+
+ thumb_func_start MOD18_0223CD44
+MOD18_0223CD44: ; 0x0223CD44
+ push {r3, r4}
+ ldr r3, _0223CD70 ; =0x02251384
+ lsl r1, r1, #2
+ ldr r2, [r3]
+ add r4, r2, r1
+ mov r2, #0x32
+ lsl r2, r2, #4
+ ldr r4, [r4, r2]
+ cmp r4, #0
+ bne _0223CD5E
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+_0223CD5E:
+ ldrh r4, [r4]
+ strh r4, [r0]
+ ldr r3, [r3]
+ add r1, r3, r1
+ ldr r1, [r1, r2]
+ ldrh r1, [r1, #2]
+ strh r1, [r0, #2]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+_0223CD70: .word 0x02251384
+ thumb_func_end MOD18_0223CD44
+
+ thumb_func_start MOD18_0223CD74
+MOD18_0223CD74: ; 0x0223CD74
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp]
+ ldrh r0, [r0]
+ add r1, sp, #4
+ strh r0, [r1]
+ ldr r0, [sp]
+ ldrh r0, [r0, #2]
+ strh r0, [r1, #2]
+ ldr r1, _0223CDD4 ; =MOD18_0223CD44
+ mov r0, #0x64
+ bl MOD18_0223DC7C
+ add r0, sp, #4
+ bl MOD18_0223DC28
+ add r4, r0, #0
+ cmp r4, #0x64
+ blt _0223CD9E
+ bl ErrorHandling
+_0223CD9E:
+ mov r5, #0x63
+ cmp r4, #0x63
+ bge _0223CDBE
+ mov r7, #0xc7
+ lsl r7, r7, #2
+ ldr r1, _0223CDD8 ; =0x02251384
+ lsl r6, r5, #2
+ add r0, r7, #4
+_0223CDAE:
+ ldr r2, [r1]
+ sub r5, r5, #1
+ add r3, r2, r6
+ ldr r2, [r3, r7]
+ sub r6, r6, #4
+ str r2, [r3, r0]
+ cmp r5, r4
+ bgt _0223CDAE
+_0223CDBE:
+ ldr r0, _0223CDD8 ; =0x02251384
+ ldr r1, [r0]
+ lsl r0, r4, #2
+ add r2, r1, r0
+ mov r1, #0x32
+ ldr r0, [sp]
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223CDD4: .word MOD18_0223CD44
+_0223CDD8: .word 0x02251384
+ thumb_func_end MOD18_0223CD74
+
+ thumb_func_start MOD18_0223CDDC
+MOD18_0223CDDC: ; 0x0223CDDC
+ push {r4, r5, r6, lr}
+ ldr r0, _0223CE10 ; =0x02251384
+ mov r2, #0x32
+ ldr r0, [r0]
+ lsl r2, r2, #4
+ add r0, r0, r2
+ mov r1, #0
+ lsr r2, r2, #1
+ bl MI_CpuFill8
+ mov r4, #0
+ ldr r6, _0223CE10 ; =0x02251384
+ add r5, r4, #0
+_0223CDF6:
+ ldr r0, [r6]
+ add r0, r0, r5
+ ldrb r1, [r0, #6]
+ cmp r1, #0
+ beq _0223CE04
+ bl MOD18_0223CD74
+_0223CE04:
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #0x64
+ blt _0223CDF6
+ pop {r4, r5, r6, pc}
+ nop
+_0223CE10: .word 0x02251384
+ thumb_func_end MOD18_0223CDDC
+
+ thumb_func_start MOD18_0223CE14
+MOD18_0223CE14: ; 0x0223CE14
+ mov r2, #0
+_0223CE16:
+ ldrb r1, [r0, #6]
+ cmp r1, #0
+ beq _0223CE26
+ add r2, r2, #1
+ add r0, #8
+ cmp r2, #0x64
+ blt _0223CE16
+ mov r0, #0
+_0223CE26:
+ bx lr
+ thumb_func_end MOD18_0223CE14
+
+ thumb_func_start MOD18_0223CE28
+MOD18_0223CE28: ; 0x0223CE28
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_0223CE28
+
+ thumb_func_start MOD18_0223CE2C
+MOD18_0223CE2C: ; 0x0223CE2C
+ push {r3, lr}
+ add r2, sp, #0
+ strh r0, [r2]
+ strh r1, [r2, #2]
+ ldr r1, _0223CE60 ; =MOD18_0223CD44
+ mov r0, #0x64
+ bl MOD18_0223DC7C
+ add r0, sp, #0
+ bl MOD18_0223DBBC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _0223CE4E
+ mov r0, #0
+ pop {r3, pc}
+_0223CE4E:
+ ldr r1, _0223CE64 ; =0x02251384
+ lsl r0, r0, #2
+ ldr r1, [r1]
+ add r1, r1, r0
+ mov r0, #0x32
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ pop {r3, pc}
+ nop
+_0223CE60: .word MOD18_0223CD44
+_0223CE64: .word 0x02251384
+ thumb_func_end MOD18_0223CE2C
+
+ thumb_func_start MOD18_0223CE68
+MOD18_0223CE68: ; 0x0223CE68
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ bl FUN_02031190
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, r5
+ bne _0223CF1C
+ bl FUN_0204E4D4
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0204E50C
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD18_0223CE2C
+ add r4, r0, #0
+ beq _0223CF1C
+ bl FUN_0204F7E4
+ ldrb r2, [r4, #4]
+ ldrb r1, [r4, #5]
+ ldrb r0, [r4, #6]
+ add r1, r2, r1
+ bl MOD18_02249450
+ cmp r0, #0
+ beq _0223CF0E
+ ldr r0, _0223CF20 ; =0x02251384
+ ldrb r2, [r4, #6]
+ ldr r0, [r0]
+ add r1, r0, r5
+ ldr r0, _0223CF24 ; =0x000004CC
+ strb r2, [r1, r0]
+ ldr r0, _0223CF28 ; =0x000005E3
+ bl FUN_020054C8
+ ldrb r1, [r4, #4]
+ ldrb r0, [r4, #5]
+ mov r5, #0x63
+ add r0, r1, r0
+ cmp r0, #0x63
+ bge _0223CEC4
+ add r5, r0, #0
+_0223CEC4:
+ bl MOD18_0223D638
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD18_0224DEA4
+ bl MOD18_0223D638
+ ldrb r2, [r4, #6]
+ mov r1, #2
+ bl MOD18_0224DF2C
+ ldrb r5, [r4, #5]
+ ldrb r1, [r4, #4]
+ add r0, r5, r1
+ cmp r0, #0x63
+ ble _0223CEEA
+ mov r0, #0x63
+ sub r5, r0, r1
+_0223CEEA:
+ bl MOD18_0223D638
+ ldr r3, _0223CF2C ; =MOD18_0223CB64
+ mov r1, #0x45
+ mov r2, #1
+ str r5, [sp]
+ bl MOD18_0224DCF0
+ bl MOD18_0223D638
+ bl MOD18_0224DD10
+ add r0, r4, #0
+ bl MOD18_0223D0E8
+ bl MOD18_0223CC2C
+ pop {r3, r4, r5, pc}
+_0223CF0E:
+ bl MOD18_0223D638
+ ldr r3, _0223CF30 ; =MOD18_0223CB5C
+ mov r1, #0x53
+ mov r2, #1
+ bl MOD18_0224DCB8
+_0223CF1C:
+ pop {r3, r4, r5, pc}
+ nop
+_0223CF20: .word 0x02251384
+_0223CF24: .word 0x000004CC
+_0223CF28: .word 0x000005E3
+_0223CF2C: .word MOD18_0223CB64
+_0223CF30: .word MOD18_0223CB5C
+ thumb_func_end MOD18_0223CE68
+
+ thumb_func_start MOD18_0223CF34
+MOD18_0223CF34: ; 0x0223CF34
+ strh r1, [r0, #2]
+ mov r1, #0
+ strh r1, [r0]
+ bx lr
+ thumb_func_end MOD18_0223CF34
+
+ thumb_func_start MOD18_0223CF3C
+MOD18_0223CF3C: ; 0x0223CF3C
+ push {r3, r4, r5, r6}
+ ldrh r6, [r0, #2]
+ mov r2, #0
+ ldrh r3, [r0]
+ cmp r6, #0
+ blt _0223CF96
+ add r5, r2, #0
+_0223CF4A:
+ sub r4, r3, r5
+ cmp r4, #0
+ ble _0223CF54
+ add r3, r4, #0
+ b _0223CF8E
+_0223CF54:
+ cmp r3, #0
+ beq _0223CF5A
+ sub r3, r3, #1
+_0223CF5A:
+ lsl r4, r2, #1
+ cmp r3, r4
+ bge _0223CF64
+ sub r5, r2, r3
+ b _0223CF68
+_0223CF64:
+ add r5, r2, r4
+ sub r5, r3, r5
+_0223CF68:
+ cmp r3, r2
+ blt _0223CF7E
+ lsl r6, r2, #1
+ add r6, r2, r6
+ cmp r3, r6
+ bge _0223CF78
+ sub r3, r4, r3
+ b _0223CF7E
+_0223CF78:
+ lsl r2, r2, #2
+ neg r2, r2
+ add r3, r2, r3
+_0223CF7E:
+ strh r3, [r1]
+ strh r5, [r1, #2]
+ ldrh r1, [r0]
+ add r1, r1, #1
+ strh r1, [r0]
+ mov r0, #1
+ pop {r3, r4, r5, r6}
+ bx lr
+_0223CF8E:
+ add r2, r2, #1
+ add r5, r5, #4
+ cmp r2, r6
+ ble _0223CF4A
+_0223CF96:
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+ thumb_func_end MOD18_0223CF3C
+
+ thumb_func_start MOD18_0223CF9C
+MOD18_0223CF9C: ; 0x0223CF9C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r6, r2, #0
+ add r1, sp, #0xc
+ add r7, r3, #0
+ strh r6, [r1]
+ strh r7, [r1, #2]
+ ldr r0, [sp]
+ strb r5, [r1, #4]
+ strb r0, [r1, #6]
+ ldr r0, [sp, #8]
+ strb r0, [r1, #5]
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ beq _0223CFDA
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x54
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_0223CFDA:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl FUN_0204D76C
+ cmp r0, #0
+ beq _0223CFF8
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x37
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_0223CFF8:
+ ldr r0, _0223D0DC ; =0x02251384
+ add r2, r7, #0
+ ldr r1, [r0]
+ ldr r0, _0223D0E0 ; =0x000004C8
+ ldr r0, [r1, r0]
+ add r1, r6, #0
+ bl FUN_0204A6B4
+ cmp r0, #0
+ beq _0223D01E
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x3c
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_0223D01E:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD18_0223CE2C
+ add r4, r0, #0
+ add r0, sp, #0xc
+ beq _0223D076
+ ldrb r1, [r4, #6]
+ ldrb r0, [r0, #6]
+ cmp r1, r0
+ bne _0223D066
+ ldrb r0, [r4, #4]
+ str r0, [sp, #4]
+ cmp r0, r5
+ ble _0223D04A
+ add r0, r5, #0
+ mov r1, #5
+ bl _s32_div_f
+ ldr r1, [sp, #4]
+ add r0, r1, r0
+ b _0223D052
+_0223D04A:
+ mov r1, #5
+ bl _s32_div_f
+ add r0, r5, r0
+_0223D052:
+ add r0, r0, #1
+ strb r0, [r4, #4]
+ ldrb r0, [r4, #4]
+ cmp r0, #0x63
+ bls _0223D060
+ mov r0, #0x63
+ strb r0, [r4, #4]
+_0223D060:
+ mov r0, #1
+ str r0, [sp, #8]
+ b _0223D07E
+_0223D066:
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x3b
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ b _0223D07E
+_0223D076:
+ bl MOD18_0223D14C
+ mov r0, #1
+ str r0, [sp, #8]
+_0223D07E:
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ beq _0223D0D8
+ bl MOD18_0223D638
+ ldr r2, [sp]
+ mov r1, #0
+ bl MOD18_0224DEF0
+ bl MOD18_0223D638
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD18_0224DEA4
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x3a
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, [sp]
+ bl MOD18_02249E98
+ ldr r0, _0223D0E4 ; =0x00000631
+ bl FUN_020054C8
+ ldr r0, _0223D0DC ; =0x02251384
+ ldr r1, [r0]
+ ldr r0, _0223D0E0 ; =0x000004C8
+ ldr r0, [r1, r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205EDCC
+ ldr r0, _0223D0DC ; =0x02251384
+ add r2, r7, #0
+ ldr r1, [r0]
+ ldr r0, _0223D0E0 ; =0x000004C8
+ ldr r0, [r1, r0]
+ add r1, r6, #0
+ bl MOD05_021E5D0C
+_0223D0D8:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223D0DC: .word 0x02251384
+_0223D0E0: .word 0x000004C8
+_0223D0E4: .word 0x00000631
+ thumb_func_end MOD18_0223CF9C
+
+ thumb_func_start MOD18_0223D0E8
+MOD18_0223D0E8: ; 0x0223D0E8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, _0223D144 ; =0x02251384
+ mov r1, #0
+ ldr r0, [r0]
+ mvn r1, r1
+ mov r4, #0
+_0223D0F6:
+ cmp r0, r6
+ bne _0223D0FE
+ add r1, r4, #0
+ b _0223D106
+_0223D0FE:
+ add r4, r4, #1
+ add r0, #8
+ cmp r4, #0x64
+ blt _0223D0F6
+_0223D106:
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ bne _0223D112
+ bl ErrorHandling
+_0223D112:
+ cmp r4, #0x63
+ bge _0223D132
+ ldr r7, _0223D144 ; =0x02251384
+ lsl r5, r4, #3
+_0223D11A:
+ add r0, r4, #1
+ ldr r1, [r7]
+ lsl r0, r0, #3
+ add r0, r1, r0
+ add r1, r1, r5
+ mov r2, #8
+ bl MI_CpuCopy8
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #0x63
+ blt _0223D11A
+_0223D132:
+ ldr r0, _0223D144 ; =0x02251384
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _0223D148 ; =0x0000031E
+ strb r2, [r1, r0]
+ add r0, r6, #0
+ bl MOD18_0223CDDC
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223D144: .word 0x02251384
+_0223D148: .word 0x0000031E
+ thumb_func_end MOD18_0223D0E8
+
+ thumb_func_start MOD18_0223D14C
+MOD18_0223D14C: ; 0x0223D14C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, _0223D190 ; =0x02251384
+ ldr r0, [r0]
+ bl MOD18_0223CE14
+ add r5, r0, #0
+ bne _0223D178
+ ldr r0, _0223D190 ; =0x02251384
+ ldr r0, [r0]
+ bl MOD18_0223CE28
+ bl MOD18_0223D0E8
+ ldr r0, _0223D190 ; =0x02251384
+ ldr r0, [r0]
+ bl MOD18_0223CE14
+ add r5, r0, #0
+ bne _0223D178
+ bl ErrorHandling
+_0223D178:
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #8
+ bl MI_CpuCopy8
+ add r0, r5, #0
+ bl MOD18_0223CD74
+ bl MOD18_0223CC2C
+ pop {r3, r4, r5, pc}
+ nop
+_0223D190: .word 0x02251384
+ thumb_func_end MOD18_0223D14C
+
+ thumb_func_start MOD18_0223D194
+MOD18_0223D194: ; 0x0223D194
+ cmp r0, #0
+ beq _0223D1A0
+ cmp r0, #0xb
+ bge _0223D1A0
+ mov r0, #1
+ bx lr
+_0223D1A0:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD18_0223D194
+
+ thumb_func_start MOD18_0223D1A4
+MOD18_0223D1A4: ; 0x0223D1A4
+ push {r3, lr}
+ bl MOD18_0223CE2C
+ cmp r0, #0
+ beq _0223D1B2
+ mov r0, #1
+ pop {r3, pc}
+_0223D1B2:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223D1A4
+
+ thumb_func_start MOD18_0223D1B8
+MOD18_0223D1B8: ; 0x0223D1B8
+ ldr r1, _0223D1D4 ; =0x02251384
+ ldr r2, [r1]
+ cmp r2, #0
+ beq _0223D1CE
+ lsl r1, r0, #3
+ add r0, r2, r1
+ ldrb r0, [r0, #6]
+ cmp r0, #0
+ beq _0223D1CE
+ ldrh r0, [r2, r1]
+ bx lr
+_0223D1CE:
+ mov r0, #0
+ bx lr
+ nop
+_0223D1D4: .word 0x02251384
+ thumb_func_end MOD18_0223D1B8
+
+ thumb_func_start MOD18_0223D1D8
+MOD18_0223D1D8: ; 0x0223D1D8
+ ldr r1, _0223D1F4 ; =0x02251384
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _0223D1EE
+ lsl r0, r0, #3
+ add r1, r1, r0
+ ldrb r0, [r1, #6]
+ cmp r0, #0
+ beq _0223D1EE
+ ldrh r0, [r1, #2]
+ bx lr
+_0223D1EE:
+ mov r0, #0
+ bx lr
+ nop
+_0223D1F4: .word 0x02251384
+ thumb_func_end MOD18_0223D1D8
+
+ thumb_func_start MOD18_0223D1F8
+MOD18_0223D1F8: ; 0x0223D1F8
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ ldr r0, _0223D290 ; =0x02251384
+ mov r5, #0
+ ldr r2, [r0]
+ add r6, r5, #0
+ add r7, r5, #0
+ cmp r2, #0
+ bne _0223D20E
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0223D20E:
+ ldr r0, _0223D294 ; =0x000004CC
+ add r4, r5, #0
+_0223D212:
+ ldrb r1, [r2, r0]
+ cmp r1, #0
+ beq _0223D26E
+ mov r0, #4
+ bl FUN_0200AA80
+ add r5, r0, #0
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ ldr r2, _0223D290 ; =0x02251384
+ add r6, r0, #0
+ ldr r2, [r2]
+ add r0, r5, #0
+ add r3, r2, r4
+ ldr r2, _0223D294 ; =0x000004CC
+ mov r1, #2
+ ldrb r2, [r3, r2]
+ bl FUN_0200B19C
+ add r0, r5, #0
+ mov r1, #2
+ bl FUN_0200B7A8
+ bl MOD18_0223D638
+ bl MOD18_0224DBB4
+ mov r1, #0x5f
+ add r2, r6, #0
+ bl FUN_0200A8E0
+ ldr r1, [sp]
+ add r0, r5, #0
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ ldr r1, _0223D290 ; =0x02251384
+ mov r0, #0
+ ldr r1, [r1]
+ mov r7, #1
+ add r2, r1, r4
+ ldr r1, _0223D294 ; =0x000004CC
+ strb r0, [r2, r1]
+ b _0223D276
+_0223D26E:
+ add r4, r4, #1
+ add r2, r2, #1
+ cmp r4, #8
+ blt _0223D212
+_0223D276:
+ cmp r6, #0
+ beq _0223D280
+ add r0, r6, #0
+ bl FUN_02021A20
+_0223D280:
+ cmp r5, #0
+ beq _0223D28A
+ add r0, r5, #0
+ bl FUN_0200AB18
+_0223D28A:
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223D290: .word 0x02251384
+_0223D294: .word 0x000004CC
+ thumb_func_end MOD18_0223D1F8
+
+ thumb_func_start MOD18_0223D298
+MOD18_0223D298: ; 0x0223D298
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, _0223D2E4 ; =0x02251384
+ ldr r1, [r0]
+ ldr r0, _0223D2E8 ; =0x000004C8
+ ldr r0, [r1, r0]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r4, r0, #0
+ mov r5, #0
+_0223D2B0:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_020264F0
+ cmp r0, #0
+ beq _0223D2D8
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_020264FC
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_0202651C
+ add r1, r0, #0
+ add r0, r6, #0
+ add r2, r7, #0
+ bl MOD18_02239BB0
+_0223D2D8:
+ add r5, r5, #1
+ cmp r5, #0x64
+ blt _0223D2B0
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223D2E4: .word 0x02251384
+_0223D2E8: .word 0x000004C8
+ thumb_func_end MOD18_0223D298
+
+ thumb_func_start MOD18_0223D2EC
+MOD18_0223D2EC: ; 0x0223D2EC
+ push {r4, lr}
+ add r4, r1, #0
+ ldrh r0, [r4, #2]
+ add r0, r0, #1
+ strh r0, [r4, #2]
+ ldrh r0, [r4, #2]
+ cmp r0, #0x64
+ bls _0223D306
+ ldr r0, _0223D308 ; =0x00000621
+ bl FUN_020054C8
+ mov r0, #0
+ strh r0, [r4, #2]
+_0223D306:
+ pop {r4, pc}
+ .align 2, 0
+_0223D308: .word 0x00000621
+ thumb_func_end MOD18_0223D2EC
+
+ thumb_func_start MOD18_0223D30C
+MOD18_0223D30C: ; 0x0223D30C
+ push {r4, lr}
+ ldr r0, _0223D364 ; =0x02251384
+ ldr r1, [r0]
+ ldr r0, _0223D368 ; =0x000004C4
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223D31E
+ bl ErrorHandling
+_0223D31E:
+ ldr r0, _0223D364 ; =0x02251384
+ ldr r1, [r0]
+ mov r0, #0x13
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223D330
+ bl ErrorHandling
+_0223D330:
+ mov r0, #0xb
+ mov r1, #4
+ bl FUN_020169D8
+ mov r1, #0
+ mov r2, #4
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r2, #0x64
+ ldr r0, _0223D364 ; =0x02251384
+ strh r2, [r4, #2]
+ ldr r1, [r0]
+ ldr r0, _0223D368 ; =0x000004C4
+ str r4, [r1, r0]
+ ldr r0, _0223D36C ; =MOD18_0223D2EC
+ add r1, r4, #0
+ bl FUN_0200CA44
+ ldr r1, _0223D364 ; =0x02251384
+ ldr r2, [r1]
+ mov r1, #0x13
+ lsl r1, r1, #6
+ str r0, [r2, r1]
+ pop {r4, pc}
+ nop
+_0223D364: .word 0x02251384
+_0223D368: .word 0x000004C4
+_0223D36C: .word MOD18_0223D2EC
+ thumb_func_end MOD18_0223D30C
+
+ thumb_func_start MOD18_0223D370
+MOD18_0223D370: ; 0x0223D370
+ push {r3, lr}
+ ldr r0, _0223D3A4 ; =0x02251384
+ ldr r1, [r0]
+ mov r0, #0x13
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223D3A2
+ bl FUN_0200CAB4
+ ldr r0, _0223D3A4 ; =0x02251384
+ ldr r1, [r0]
+ ldr r0, _0223D3A8 ; =0x000004C4
+ ldr r0, [r1, r0]
+ bl FUN_02016A18
+ ldr r1, _0223D3A4 ; =0x02251384
+ mov r0, #0x13
+ ldr r2, [r1]
+ mov r3, #0
+ lsl r0, r0, #6
+ str r3, [r2, r0]
+ ldr r1, [r1]
+ add r0, r0, #4
+ str r3, [r1, r0]
+_0223D3A2:
+ pop {r3, pc}
+ .align 2, 0
+_0223D3A4: .word 0x02251384
+_0223D3A8: .word 0x000004C4
+ thumb_func_end MOD18_0223D370
+
+ thumb_func_start MOD18_0223D3AC
+MOD18_0223D3AC: ; 0x0223D3AC
+ push {r3, lr}
+ ldr r1, _0223D3D8 ; =0x02251384
+ ldr r2, [r1]
+ cmp r2, #0
+ beq _0223D3D2
+ ldr r1, _0223D3DC ; =0x000004C4
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ beq _0223D3D2
+ ldrh r1, [r1, #2]
+ lsr r1, r1, #1
+ add r0, r1, r0
+ mov r1, #0x64
+ bl _s32_div_f
+ add r0, r1, #0
+ bl MOD18_0223D1B8
+ pop {r3, pc}
+_0223D3D2:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_0223D3D8: .word 0x02251384
+_0223D3DC: .word 0x000004C4
+ thumb_func_end MOD18_0223D3AC
+
+ thumb_func_start MOD18_0223D3E0
+MOD18_0223D3E0: ; 0x0223D3E0
+ push {r3, lr}
+ ldr r1, _0223D40C ; =0x02251384
+ ldr r2, [r1]
+ cmp r2, #0
+ beq _0223D406
+ ldr r1, _0223D410 ; =0x000004C4
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ beq _0223D406
+ ldrh r1, [r1, #2]
+ lsr r1, r1, #1
+ add r0, r1, r0
+ mov r1, #0x64
+ bl _s32_div_f
+ add r0, r1, #0
+ bl MOD18_0223D1D8
+ pop {r3, pc}
+_0223D406:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_0223D40C: .word 0x02251384
+_0223D410: .word 0x000004C4
+ thumb_func_end MOD18_0223D3E0
+
+ thumb_func_start MOD18_0223D414
+MOD18_0223D414: ; 0x0223D414
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5, #0xc]
+ bl LoadPlayerDataAddress
+ bl FUN_02024FF4
+ add r4, r0, #0
+ ldr r0, _0223D580 ; =0x02251388
+ mov r2, #0x15
+ str r6, [r0]
+ add r0, r6, #0
+ mov r1, #0
+ lsl r2, r2, #4
+ bl MI_CpuFill8
+ ldr r2, _0223D580 ; =0x02251388
+ mov r3, #0x4d
+ ldr r0, [r2]
+ lsl r3, r3, #2
+ str r5, [r0, #0xc]
+ ldr r1, [r2]
+ mov r0, #0
+ strb r0, [r1, r3]
+ ldr r1, [r2]
+ strh r0, [r1, #0x1c]
+ ldr r1, [r2]
+ strh r0, [r1, #0x1e]
+ add r1, r3, #0
+ ldr r6, [r2]
+ add r1, #0x17
+ strb r0, [r6, r1]
+ add r0, r3, #0
+ ldr r1, [r2]
+ mov r6, #1
+ add r0, #0x13
+ strb r6, [r1, r0]
+ add r3, #0xc0
+ str r3, [sp]
+ ldr r0, _0223D584 ; =0x0000023F
+ ldr r2, [r5, #8]
+ mov r1, #0x21
+ add r3, r4, #0
+ bl MOD18_0224DAE0
+ ldr r1, _0223D580 ; =0x02251388
+ add r3, r4, #0
+ ldr r2, [r1]
+ mov r1, #0x46
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _0223D588 ; =0x00000243
+ ldr r2, [r5, #8]
+ mov r1, #0x21
+ bl MOD18_0224DAE0
+ ldr r1, _0223D580 ; =0x02251388
+ add r3, r4, #0
+ ldr r2, [r1]
+ mov r1, #0x47
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ str r0, [sp]
+ ldr r0, _0223D58C ; =0x00000241
+ ldr r2, [r5, #8]
+ mov r1, #0x21
+ bl MOD18_0224DAE0
+ ldr r1, _0223D580 ; =0x02251388
+ add r3, r4, #0
+ ldr r2, [r1]
+ mov r1, #0x12
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _0223D590 ; =0x00000242
+ ldr r2, [r5, #8]
+ mov r1, #0x21
+ bl MOD18_0224DAE0
+ ldr r1, _0223D580 ; =0x02251388
+ add r3, r4, #0
+ ldr r2, [r1]
+ mov r1, #0x49
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _0223D594 ; =0x0000023B
+ ldr r2, [r5, #8]
+ mov r1, #0x21
+ bl MOD18_0224DAE0
+ ldr r1, _0223D580 ; =0x02251388
+ mov r2, #0x4a
+ ldr r3, [r1]
+ lsl r2, r2, #2
+ str r0, [r3, r2]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, [r1]
+ mov r1, #3
+ ldr r0, [r0, #0xc]
+ add r2, #0xba
+ ldr r0, [r0, #8]
+ mov r3, #0xa
+ bl FUN_0200CD68
+ mov r3, #0x80
+ str r3, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #0x32
+ mov r1, #0x34
+ mov r2, #0
+ add r3, #0xc0
+ bl FUN_02006930
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, _0223D580 ; =0x02251388
+ ldr r2, _0223D598 ; =0x000003D9
+ ldr r0, [r0]
+ mov r1, #3
+ ldr r0, [r0, #0xc]
+ mov r3, #0xb
+ ldr r0, [r0, #8]
+ bl FUN_0200CB00
+ mov r3, #0
+ ldr r0, _0223D580 ; =0x02251388
+ add r4, r3, #0
+ mov r2, #0xff
+ add r1, r3, #0
+_0223D536:
+ ldr r5, [r0]
+ add r5, r5, r3
+ add r5, #0xc2
+ strb r2, [r5]
+ ldr r5, [r0]
+ add r5, r5, r3
+ add r5, #0xd2
+ strb r2, [r5]
+ ldr r5, [r0]
+ add r3, r3, #1
+ add r5, r5, r4
+ add r5, #0xdc
+ add r4, r4, #4
+ str r1, [r5]
+ cmp r3, #8
+ blt _0223D536
+ ldr r0, _0223D580 ; =0x02251388
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205EDAC
+ mov r1, #0
+ ldr r0, _0223D59C ; =MOD18_0223E7AC
+ add r2, r1, #0
+ bl FUN_0200CA44
+ ldr r1, _0223D580 ; =0x02251388
+ ldr r1, [r1]
+ str r0, [r1, #0x14]
+ ldr r0, _0223D5A0 ; =MOD18_0223E890
+ bl FUN_0202D31C
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223D580: .word 0x02251388
+_0223D584: .word 0x0000023F
+_0223D588: .word 0x00000243
+_0223D58C: .word 0x00000241
+_0223D590: .word 0x00000242
+_0223D594: .word 0x0000023B
+_0223D598: .word 0x000003D9
+_0223D59C: .word MOD18_0223E7AC
+_0223D5A0: .word MOD18_0223E890
+ thumb_func_end MOD18_0223D414
+
+ thumb_func_start MOD18_0223D5A4
+MOD18_0223D5A4: ; 0x0223D5A4
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ ldr r6, _0223D634 ; =0x02251388
+ add r5, r4, #0
+_0223D5AC:
+ ldr r0, [r6]
+ add r0, r0, r5
+ add r0, #0xdc
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223D5BC
+ bl FUN_02021A20
+_0223D5BC:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _0223D5AC
+ mov r0, #0
+ bl FUN_0202D31C
+ ldr r0, _0223D634 ; =0x02251388
+ ldr r0, [r0]
+ ldr r0, [r0, #0x14]
+ bl FUN_0200CAB4
+ ldr r0, _0223D634 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DB5C
+ ldr r0, _0223D634 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DB5C
+ ldr r0, _0223D634 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl MOD18_0224DB5C
+ ldr r0, _0223D634 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DB5C
+ ldr r0, _0223D634 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DB5C
+ ldr r0, _0223D634 ; =0x02251388
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r1, [r1, #0xc]
+ add r1, #0x8c
+ str r2, [r1]
+ ldr r0, [r0]
+ bl FUN_02016A18
+ ldr r0, _0223D634 ; =0x02251388
+ mov r1, #0
+ str r1, [r0]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223D634: .word 0x02251388
+ thumb_func_end MOD18_0223D5A4
+
+ thumb_func_start MOD18_0223D638
+MOD18_0223D638: ; 0x0223D638
+ ldr r0, _0223D644 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223D644: .word 0x02251388
+ thumb_func_end MOD18_0223D638
+
+ thumb_func_start MOD18_0223D648
+MOD18_0223D648: ; 0x0223D648
+ ldr r0, _0223D654 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223D654: .word 0x02251388
+ thumb_func_end MOD18_0223D648
+
+ thumb_func_start MOD18_0223D658
+MOD18_0223D658: ; 0x0223D658
+ ldr r0, _0223D664 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223D664: .word 0x02251388
+ thumb_func_end MOD18_0223D658
+
+ thumb_func_start MOD18_0223D668
+MOD18_0223D668: ; 0x0223D668
+ ldr r0, _0223D674 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223D674: .word 0x02251388
+ thumb_func_end MOD18_0223D668
+
+ thumb_func_start MOD18_0223D678
+MOD18_0223D678: ; 0x0223D678
+ ldr r0, _0223D684 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223D684: .word 0x02251388
+ thumb_func_end MOD18_0223D678
+
+ thumb_func_start MOD18_0223D688
+MOD18_0223D688: ; 0x0223D688
+ push {r3, lr}
+ ldr r0, _0223D6D4 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DF60
+ ldr r0, _0223D6D4 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DF60
+ ldr r0, _0223D6D4 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl MOD18_0224DF60
+ ldr r0, _0223D6D4 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DF60
+ ldr r0, _0223D6D4 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DF60
+ pop {r3, pc}
+ nop
+_0223D6D4: .word 0x02251388
+ thumb_func_end MOD18_0223D688
+
+ thumb_func_start MOD18_0223D6D8
+MOD18_0223D6D8: ; 0x0223D6D8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r6, r1, #0
+ str r2, [sp]
+ str r3, [sp, #4]
+ cmp r5, #0
+ beq _0223D73E
+ cmp r6, #0
+ beq _0223D73E
+ mov r0, #4
+ bl FUN_0200AA80
+ add r4, r0, #0
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ add r7, r0, #0
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r5, #0
+ bl FUN_0200ABC0
+ add r0, r4, #0
+ mov r1, #1
+ add r2, r6, #0
+ bl FUN_0200ABC0
+ bl MOD18_0223D638
+ bl MOD18_0224DBB4
+ ldr r1, [sp]
+ add r2, r7, #0
+ bl FUN_0200A8E0
+ ldr r1, [sp, #4]
+ add r0, r4, #0
+ add r2, r7, #0
+ bl FUN_0200B7B8
+ add r0, r7, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_0200AB18
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223D73E:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_0223D6D8
+
+ thumb_func_start MOD18_0223D744
+MOD18_0223D744: ; 0x0223D744
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r7, r1, #0
+ str r2, [sp]
+ str r3, [sp, #4]
+ cmp r5, #0
+ beq _0223D79C
+ mov r0, #4
+ bl FUN_0200AA80
+ add r4, r0, #0
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r7, #0
+ add r2, r5, #0
+ bl FUN_0200ABC0
+ bl MOD18_0223D638
+ bl MOD18_0224DBB4
+ ldr r1, [sp]
+ add r2, r6, #0
+ bl FUN_0200A8E0
+ ldr r1, [sp, #4]
+ add r0, r4, #0
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_0200AB18
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223D79C:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223D744
+
+ thumb_func_start MOD18_0223D7A4
+MOD18_0223D7A4: ; 0x0223D7A4
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, _0223D8A0 ; =0x02251388
+ add r6, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _0223D7B4
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0223D7B4:
+ mov r5, #0
+_0223D7B6:
+ add r0, r5, #0
+ bl FUN_0202DEC0
+ cmp r0, #0
+ beq _0223D7E2
+ add r0, r5, #0
+ bl FUN_0202DFA4
+ add r7, r0, #0
+ add r0, r5, #0
+ bl FUN_0202DEF4
+ add r0, r7, #0
+ mov r1, #1
+ mov r2, #0x5b
+ add r3, r6, #0
+ bl MOD18_0223D744
+ cmp r0, #0
+ beq _0223D7E2
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223D7E2:
+ ldr r0, [r4]
+ add r0, r0, r5
+ add r0, #0xc2
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq _0223D820
+ add r0, r5, #0
+ bl FUN_0202DFA4
+ add r7, r0, #0
+ ldr r0, [r4]
+ add r0, r0, r5
+ add r0, #0xc2
+ ldrb r0, [r0]
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ ldr r0, [r4]
+ add r3, r6, #0
+ add r2, r0, r5
+ add r2, #0xc2
+ mov r0, #0xff
+ strb r0, [r2]
+ add r0, r7, #0
+ mov r2, #0x6f
+ bl MOD18_0223D6D8
+ cmp r0, #0
+ beq _0223D820
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223D820:
+ ldr r0, [r4]
+ add r0, r0, r5
+ add r0, #0xd2
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq _0223D84E
+ add r0, r5, #0
+ bl FUN_0202DFA4
+ ldr r1, [r4]
+ add r3, r6, #0
+ add r2, r1, r5
+ add r2, #0xd2
+ mov r1, #0xff
+ strb r1, [r2]
+ mov r1, #0
+ mov r2, #0x70
+ bl MOD18_0223D744
+ cmp r0, #0
+ beq _0223D84E
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223D84E:
+ ldr r0, [r4]
+ ldr r1, _0223D8A4 ; =0x0000013D
+ add r2, r0, r5
+ ldrb r1, [r2, r1]
+ cmp r1, #1
+ bne _0223D896
+ lsl r4, r5, #2
+ add r0, r0, r4
+ add r0, #0xdc
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _0223D886
+ add r0, r6, #0
+ bl FUN_02021A74
+ ldr r0, _0223D8A0 ; =0x02251388
+ ldr r0, [r0]
+ add r0, r0, r4
+ add r0, #0xdc
+ ldr r0, [r0]
+ bl FUN_02021A20
+ ldr r0, _0223D8A0 ; =0x02251388
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, r4
+ add r0, #0xdc
+ str r1, [r0]
+_0223D886:
+ ldr r0, _0223D8A0 ; =0x02251388
+ mov r2, #0
+ ldr r0, [r0]
+ add r1, r0, r5
+ ldr r0, _0223D8A4 ; =0x0000013D
+ strb r2, [r1, r0]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223D896:
+ add r5, r5, #1
+ cmp r5, #8
+ blt _0223D7B6
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223D8A0: .word 0x02251388
+_0223D8A4: .word 0x0000013D
+ thumb_func_end MOD18_0223D7A4
+
+ thumb_func_start MOD18_0223D8A8
+MOD18_0223D8A8: ; 0x0223D8A8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, sp, #0
+ strh r5, [r0]
+ strh r4, [r0, #2]
+ ldr r0, _0223D8F0 ; =0x02251388
+ add r1, r5, #0
+ ldr r0, [r0]
+ add r2, r4, #0
+ ldr r0, [r0, #0xc]
+ bl FUN_0204A6B4
+ cmp r0, #0
+ beq _0223D8CA
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0223D8CA:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_0223F764
+ cmp r0, #0
+ beq _0223D8DA
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0223D8DA:
+ mov r1, #0
+ add r0, sp, #0
+ mvn r1, r1
+ bl MOD18_0224B04C
+ cmp r0, #0xff
+ beq _0223D8EC
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0223D8EC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223D8F0: .word 0x02251388
+ thumb_func_end MOD18_0223D8A8
+
+ thumb_func_start MOD18_0223D8F4
+MOD18_0223D8F4: ; 0x0223D8F4
+ push {r3, lr}
+ sub sp, #0x18
+ ldr r0, _0223D9D4 ; =0x02251388
+ ldr r1, _0223D9D8 ; =0x00000146
+ ldr r0, [r0]
+ ldrb r2, [r0, r1]
+ cmp r2, #0
+ beq _0223D912
+ sub r1, #0x12
+ ldrb r1, [r0, r1]
+ cmp r1, #0
+ beq _0223D912
+ add sp, #0x18
+ mov r0, #0
+ pop {r3, pc}
+_0223D912:
+ ldr r1, _0223D9DC ; =0x021C48F8
+ ldrh r1, [r1, #0x20]
+ cmp r1, #0
+ beq _0223D9BA
+ mov r1, #0x4d
+ mov r2, #0x1e
+ lsl r1, r1, #2
+ strb r2, [r0, r1]
+ ldr r0, _0223D9D4 ; =0x02251388
+ add r1, #0x17
+ ldr r0, [r0]
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ bne _0223D9BA
+ bl FUN_0204D610
+ cmp r0, #0
+ beq _0223D9BA
+ bl FUN_02031190
+ bl FUN_0204D830
+ cmp r0, #0
+ bne _0223D9BA
+ bl FUN_020311F0
+ cmp r0, #0
+ beq _0223D950
+ add sp, #0x18
+ mov r0, #0
+ pop {r3, pc}
+_0223D950:
+ bl FUN_02031190
+ bl FUN_0204F6B4
+ cmp r0, #0
+ beq _0223D962
+ add sp, #0x18
+ mov r0, #0
+ pop {r3, pc}
+_0223D962:
+ ldr r3, _0223D9D4 ; =0x02251388
+ ldr r2, _0223D9DC ; =0x021C48F8
+ ldr r3, [r3]
+ ldrh r1, [r2, #0x1c]
+ ldr r3, [r3, #0xc]
+ ldrh r2, [r2, #0x1e]
+ add r3, #0x88
+ ldr r3, [r3]
+ add r0, sp, #0xc
+ bl MOD05_021F0318
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x14]
+ add r2, sp, #8
+ add r3, sp, #4
+ bl MOD05_021EF4F8
+ ldr r1, [sp, #8]
+ add r0, sp, #0
+ strh r1, [r0]
+ ldr r1, [sp, #4]
+ strh r1, [r0, #2]
+ ldr r1, _0223D9DC ; =0x021C48F8
+ ldr r0, _0223D9D4 ; =0x02251388
+ ldrh r3, [r1, #0x1c]
+ ldr r2, [r0]
+ strh r3, [r2, #0x18]
+ ldrh r2, [r1, #0x1e]
+ ldr r1, [r0]
+ strh r2, [r1, #0x1a]
+ ldr r2, [sp, #8]
+ ldr r1, [r0]
+ strh r2, [r1, #0x1c]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ mov r2, #4
+ strh r1, [r0, #0x1e]
+ mov r0, #0x30
+ add r1, sp, #0
+ bl FUN_02030ADC
+ add sp, #0x18
+ mov r0, #1
+ pop {r3, pc}
+_0223D9BA:
+ ldr r0, _0223D9D4 ; =0x02251388
+ ldr r2, [r0]
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ ldrb r1, [r2, r0]
+ cmp r1, #0
+ beq _0223D9CC
+ sub r1, r1, #1
+ strb r1, [r2, r0]
+_0223D9CC:
+ mov r0, #0
+ add sp, #0x18
+ pop {r3, pc}
+ nop
+_0223D9D4: .word 0x02251388
+_0223D9D8: .word 0x00000146
+_0223D9DC: .word 0x021C48F8
+ thumb_func_end MOD18_0223D8F4
+
+ thumb_func_start MOD18_0223D9E0
+MOD18_0223D9E0: ; 0x0223D9E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r2, #0
+ str r0, [sp]
+ ldrh r0, [r6]
+ str r1, [sp, #4]
+ mov r1, #6
+ sub r0, r0, #6
+ str r0, [sp, #0xc]
+ ldrh r0, [r6, #2]
+ mov r4, #1
+ sub r0, r0, #6
+ str r0, [sp, #8]
+ add r0, sp, #0x14
+ bl MOD18_0223CF34
+ add r0, sp, #0x14
+ add r1, sp, #0x10
+ bl MOD18_0223CF3C
+ cmp r0, #0
+ beq _0223DA50
+_0223DA0C:
+ add r1, sp, #0x10
+ mov r0, #0
+ ldrh r2, [r6]
+ ldrsh r0, [r1, r0]
+ add r5, r2, r0
+ mov r0, #2
+ ldrh r2, [r6, #2]
+ ldrsh r0, [r1, r0]
+ add r7, r2, r0
+ ldr r2, [sp, #4]
+ add r0, r5, #0
+ add r1, r7, #0
+ blx r2
+ cmp r0, #0
+ beq _0223DA44
+ ldr r0, [sp, #0xc]
+ sub r1, r5, r0
+ ldr r0, [sp, #8]
+ sub r0, r7, r0
+ lsl r0, r0, #4
+ add r1, r1, r0
+ ldr r0, [sp]
+ cmp r4, #8
+ strb r1, [r0, r4]
+ bne _0223DA42
+ add r4, r4, #1
+ b _0223DA50
+_0223DA42:
+ add r4, r4, #1
+_0223DA44:
+ add r0, sp, #0x14
+ add r1, sp, #0x10
+ bl MOD18_0223CF3C
+ cmp r0, #0
+ bne _0223DA0C
+_0223DA50:
+ add r0, r4, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223D9E0
+
+ thumb_func_start MOD18_0223DA58
+MOD18_0223DA58: ; 0x0223DA58
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r1, sp, #0
+ strb r0, [r1]
+ ldr r1, _0223DA90 ; =MOD18_0223F764
+ add r0, sp, #0
+ add r2, r4, #0
+ bl MOD18_0223D9E0
+ add r2, r0, #0
+ mov r0, #0x31
+ add r1, sp, #0
+ bl FUN_02030BC4
+ ldr r1, _0223DA94 ; =MOD18_0223C6E4
+ add r0, sp, #0
+ add r2, r4, #0
+ bl MOD18_0223D9E0
+ add r2, r0, #0
+ mov r0, #0x32
+ add r1, sp, #0
+ bl FUN_02030BC4
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_0223DA90: .word MOD18_0223F764
+_0223DA94: .word MOD18_0223C6E4
+ thumb_func_end MOD18_0223DA58
+
+ thumb_func_start MOD18_0223DA98
+MOD18_0223DA98: ; 0x0223DA98
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ bl FUN_0204EB14
+ cmp r0, #0
+ beq _0223DAC0
+ add r0, r5, #0
+ bl FUN_0204D830
+ cmp r0, #0
+ bne _0223DAC0
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_0223DA58
+_0223DAC0:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223DA98
+
+ thumb_func_start MOD18_0223DAC4
+MOD18_0223DAC4: ; 0x0223DAC4
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ add r5, r1, #0
+ bl FUN_02031190
+ ldrb r1, [r4]
+ cmp r1, r0
+ bne _0223DAEE
+ ldr r1, _0223DAF0 ; =0x02251388
+ add r0, r4, #1
+ ldr r1, [r1]
+ sub r2, r5, #1
+ add r1, #0xfc
+ bl MI_CpuCopy8
+ ldr r0, _0223DAF0 ; =0x02251388
+ sub r2, r5, #1
+ ldr r1, [r0]
+ mov r0, #0x52
+ lsl r0, r0, #2
+ strb r2, [r1, r0]
+_0223DAEE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0223DAF0: .word 0x02251388
+ thumb_func_end MOD18_0223DAC4
+
+ thumb_func_start MOD18_0223DAF4
+MOD18_0223DAF4: ; 0x0223DAF4
+ push {r3, r4, r5, lr}
+ sub sp, #0x28
+ add r4, r2, #0
+ add r5, r1, #0
+ bl FUN_02031190
+ ldrb r1, [r4]
+ cmp r1, r0
+ bne _0223DB8E
+ ldr r1, _0223DB94 ; =0x02251388
+ add r0, r4, #1
+ ldr r2, [r1]
+ mov r1, #0x41
+ lsl r1, r1, #2
+ add r1, r2, r1
+ sub r2, r5, #1
+ bl MI_CpuCopy8
+ ldr r2, _0223DB94 ; =0x02251388
+ ldr r0, _0223DB98 ; =0x00000149
+ ldr r1, [r2]
+ sub r3, r5, #1
+ strb r3, [r1, r0]
+ ldr r2, [r2]
+ ldr r1, _0223DB9C ; =MOD18_0223D1A4
+ add r0, sp, #0x1c
+ add r2, #0x1c
+ bl MOD18_0223D9E0
+ ldr r1, _0223DB94 ; =0x02251388
+ ldr r2, _0223DBA0 ; =0x0000014A
+ ldr r3, [r1]
+ strb r0, [r3, r2]
+ ldr r3, [r1]
+ ldrb r0, [r3, r2]
+ sub r0, r0, #1
+ strb r0, [r3, r2]
+ ldr r3, [r1]
+ add r1, r2, #0
+ add r0, sp, #0x1c
+ sub r1, #0x3e
+ ldrb r2, [r3, r2]
+ add r0, #1
+ add r1, r3, r1
+ bl MI_CpuCopy8
+ ldr r0, _0223DB94 ; =0x02251388
+ ldr r3, [r0]
+ ldrh r0, [r3, #0x1a]
+ str r0, [sp]
+ add r0, r3, #0
+ add r0, #0xfc
+ str r0, [sp, #4]
+ mov r0, #0x52
+ lsl r0, r0, #2
+ ldrb r1, [r3, r0]
+ str r1, [sp, #8]
+ add r1, r0, #0
+ sub r1, #0x44
+ add r1, r3, r1
+ str r1, [sp, #0xc]
+ add r1, r0, #1
+ ldrb r1, [r3, r1]
+ str r1, [sp, #0x10]
+ add r1, r0, #0
+ sub r1, #0x3c
+ add r1, r3, r1
+ str r1, [sp, #0x14]
+ add r0, r0, #2
+ ldrb r0, [r3, r0]
+ str r0, [sp, #0x18]
+ ldr r0, [r3, #0xc]
+ ldrh r1, [r3, #0x1c]
+ ldrh r2, [r3, #0x1e]
+ ldrh r3, [r3, #0x18]
+ bl MOD18_02243E18
+_0223DB8E:
+ add sp, #0x28
+ pop {r3, r4, r5, pc}
+ nop
+_0223DB94: .word 0x02251388
+_0223DB98: .word 0x00000149
+_0223DB9C: .word MOD18_0223D1A4
+_0223DBA0: .word 0x0000014A
+ thumb_func_end MOD18_0223DAF4
+
+ thumb_func_start MOD18_0223DBA4
+MOD18_0223DBA4: ; 0x0223DBA4
+ cmp r0, #0
+ bne _0223DBAE
+ mov r0, #0xe1
+ lsl r0, r0, #0xc
+ bx lr
+_0223DBAE:
+ ldrh r1, [r0, #2]
+ ldrh r2, [r0]
+ mov r0, #0xf
+ lsl r0, r0, #6
+ mul r0, r1
+ add r0, r2, r0
+ bx lr
+ thumb_func_end MOD18_0223DBA4
+
+ thumb_func_start MOD18_0223DBBC
+MOD18_0223DBBC: ; 0x0223DBBC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ ldr r1, _0223DC24 ; =0x02251388
+ mov r4, #0
+ ldr r2, [r1]
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ sub r5, r1, #1
+ bl MOD18_0223DBA4
+ str r0, [sp]
+ ldr r0, _0223DC24 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r7, [r1, r0]
+ cmp r5, #0
+ ble _0223DC04
+_0223DBE2:
+ add r1, r4, r5
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r6, r0, #1
+ add r0, sp, #4
+ add r1, r6, #0
+ blx r7
+ bl MOD18_0223DBA4
+ ldr r1, [sp]
+ cmp r0, r1
+ bge _0223DBFE
+ add r4, r6, #1
+ b _0223DC00
+_0223DBFE:
+ add r5, r6, #0
+_0223DC00:
+ cmp r4, r5
+ blt _0223DBE2
+_0223DC04:
+ add r0, sp, #4
+ add r1, r4, #0
+ blx r7
+ bl MOD18_0223DBA4
+ ldr r1, [sp]
+ cmp r1, r0
+ bne _0223DC1A
+ add sp, #8
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0223DC1A:
+ mov r0, #0
+ mvn r0, r0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223DC24: .word 0x02251388
+ thumb_func_end MOD18_0223DBBC
+
+ thumb_func_start MOD18_0223DC28
+MOD18_0223DC28: ; 0x0223DC28
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ ldr r1, _0223DC78 ; =0x02251388
+ mov r4, #0
+ ldr r2, [r1]
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ sub r5, r1, #2
+ bl MOD18_0223DBA4
+ str r0, [sp]
+ ldr r0, _0223DC78 ; =0x02251388
+ add r5, r5, #1
+ ldr r1, [r0]
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r7, [r1, r0]
+ cmp r5, #0
+ ble _0223DC72
+_0223DC50:
+ add r1, r4, r5
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r6, r0, #1
+ add r0, sp, #4
+ add r1, r6, #0
+ blx r7
+ bl MOD18_0223DBA4
+ ldr r1, [sp]
+ cmp r0, r1
+ bge _0223DC6C
+ add r4, r6, #1
+ b _0223DC6E
+_0223DC6C:
+ add r5, r6, #0
+_0223DC6E:
+ cmp r4, r5
+ blt _0223DC50
+_0223DC72:
+ add r0, r4, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223DC78: .word 0x02251388
+ thumb_func_end MOD18_0223DC28
+
+ thumb_func_start MOD18_0223DC7C
+MOD18_0223DC7C: ; 0x0223DC7C
+ push {r3, r4}
+ ldr r3, _0223DC94 ; =0x02251388
+ mov r2, #0x45
+ ldr r4, [r3]
+ lsl r2, r2, #2
+ str r1, [r4, r2]
+ ldr r1, [r3]
+ add r2, #0x18
+ str r0, [r1, r2]
+ pop {r3, r4}
+ bx lr
+ nop
+_0223DC94: .word 0x02251388
+ thumb_func_end MOD18_0223DC7C
+
+ thumb_func_start MOD18_0223DC98
+MOD18_0223DC98: ; 0x0223DC98
+ push {r3, lr}
+ bl FUN_02031190
+ bl FUN_0204F6B4
+ cmp r0, #0
+ bne _0223DCB0
+ mov r0, #0x1b
+ bl FUN_020311DC
+ bl FUN_0203086C
+_0223DCB0:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223DC98
+
+ thumb_func_start MOD18_0223DCB4
+MOD18_0223DCB4: ; 0x0223DCB4
+ ldr r0, _0223DCC8 ; =0x02251388
+ ldr r2, [r0]
+ ldr r0, _0223DCCC ; =0x00000146
+ ldrb r1, [r2, r0]
+ cmp r1, #0
+ beq _0223DCC4
+ sub r1, r1, #1
+ strb r1, [r2, r0]
+_0223DCC4:
+ bx lr
+ nop
+_0223DCC8: .word 0x02251388
+_0223DCCC: .word 0x00000146
+ thumb_func_end MOD18_0223DCB4
+
+ thumb_func_start MOD18_0223DCD0
+MOD18_0223DCD0: ; 0x0223DCD0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ ldr r0, _0223DD6C ; =0x02251388
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ add r4, r0, #0
+ ldr r0, _0223DD6C ; =0x02251388
+ ldr r2, [r0]
+ ldr r0, _0223DD70 ; =0x00000146
+ ldrb r1, [r2, r0]
+ cmp r1, #0
+ beq _0223DCF8
+ sub r0, #0x12
+ ldrb r0, [r2, r0]
+ cmp r0, #0
+ bne _0223DD66
+_0223DCF8:
+ bl FUN_02031190
+ bl FUN_0204F6B4
+ cmp r0, #0
+ bne _0223DD66
+ add r0, r4, #0
+ bl FUN_0202623C
+ cmp r0, #0x28
+ bne _0223DD16
+ mov r0, #0x10
+ orr r0, r5
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+_0223DD16:
+ bl FUN_02031190
+ bl FUN_0204E4D4
+ add r4, r0, #0
+ bl FUN_02031190
+ bl FUN_0204E50C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD18_0223D1A4
+ cmp r0, #0
+ beq _0223DD3E
+ mov r0, #0x20
+ orr r0, r5
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+_0223DD3E:
+ mov r0, #0xf
+ add r2, r6, #0
+ and r2, r0
+ lsl r0, r4, #0x1c
+ add r1, sp, #0
+ lsr r0, r0, #0x18
+ strb r5, [r1]
+ add r0, r2, r0
+ strb r0, [r1, #1]
+ mov r0, #0x1c
+ add r1, sp, #0
+ bl FUN_020311D0
+ bl FUN_0203086C
+ ldr r0, _0223DD6C ; =0x02251388
+ mov r2, #8
+ ldr r1, [r0]
+ ldr r0, _0223DD70 ; =0x00000146
+ strb r2, [r1, r0]
+_0223DD66:
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_0223DD6C: .word 0x02251388
+_0223DD70: .word 0x00000146
+ thumb_func_end MOD18_0223DCD0
+
+ thumb_func_start MOD18_0223DD74
+MOD18_0223DD74: ; 0x0223DD74
+ mov r0, #2
+ bx lr
+ thumb_func_end MOD18_0223DD74
+
+ thumb_func_start MOD18_0223DD78
+MOD18_0223DD78: ; 0x0223DD78
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r1, sp, #0
+ add r6, r2, #0
+ strb r5, [r1]
+ bl FUN_0204E62C
+ add r1, sp, #0
+ strh r0, [r1, #2]
+ add r0, r5, #0
+ bl FUN_0204E664
+ add r1, sp, #0
+ strh r0, [r1, #4]
+ add r0, r5, #0
+ bl FUN_0204E544
+ ldr r1, _0223DFB0 ; =0x0000FFFF
+ cmp r0, r1
+ bne _0223DDAE
+ add r0, r5, #0
+ bl FUN_0204E598
+ ldr r1, _0223DFB0 ; =0x0000FFFF
+ cmp r0, r1
+ beq _0223DE62
+_0223DDAE:
+ add r0, r5, #0
+ bl FUN_0204EB14
+ cmp r0, #0
+ beq _0223DE62
+ add r0, r5, #0
+ bl FUN_0204D830
+ cmp r0, #0
+ bne _0223DE62
+ add r1, sp, #0
+ ldrh r0, [r1, #2]
+ ldrh r1, [r1, #4]
+ bl FUN_0204E8B0
+ add r4, r0, #0
+ cmp r4, #0xff
+ bne _0223DDD4
+ b _0223DEDA
+_0223DDD4:
+ bl MOD18_02245F4C
+ cmp r0, #0
+ bne _0223DE62
+ add r0, r4, #0
+ bl MOD18_0223CAEC
+ cmp r0, #0
+ beq _0223DE08
+ mov r1, #4
+ add r0, sp, #0
+ strb r1, [r0, #6]
+ strb r4, [r0, #8]
+ add r1, sp, #4
+ strb r5, [r0, #7]
+ mov r0, #0x1e
+ add r1, #2
+ mov r2, #3
+ bl FUN_02030BC4
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0223DE08:
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0204F1B0
+ cmp r0, #0
+ bne _0223DE62
+ add r0, r4, #0
+ bl FUN_0204D830
+ cmp r0, #0
+ beq _0223DE58
+ add r0, r4, #0
+ bl MOD18_0223F8FC
+ cmp r0, #0
+ bne _0223DE36
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_022409F0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0223DE36:
+ mov r1, #2
+ add r0, sp, #0
+ strb r1, [r0, #6]
+ strb r4, [r0, #8]
+ add r1, sp, #4
+ strb r5, [r0, #7]
+ mov r0, #0x1e
+ add r1, #2
+ mov r2, #3
+ bl FUN_02030BC4
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0223DE58:
+ add r0, r5, #0
+ bl FUN_0204EB14
+ cmp r0, #0
+ bne _0223DE64
+_0223DE62:
+ b _0223DFAC
+_0223DE64:
+ add r0, r4, #0
+ bl FUN_0204EB14
+ cmp r0, #0
+ beq _0223DE78
+ add r0, r4, #0
+ bl FUN_0204F6C8
+ cmp r0, #0
+ beq _0223DE9A
+_0223DE78:
+ mov r1, #2
+ add r0, sp, #0
+ strb r1, [r0, #6]
+ strb r4, [r0, #8]
+ add r1, sp, #4
+ strb r5, [r0, #7]
+ mov r0, #0x1e
+ add r1, #2
+ mov r2, #3
+ bl FUN_02030BC4
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0223DE9A:
+ mov r1, #1
+ add r0, sp, #0
+ strb r1, [r0, #6]
+ strb r4, [r0, #8]
+ strb r5, [r0, #7]
+ add r0, r4, #0
+ bl FUN_0204EB14
+ cmp r0, #0
+ beq _0223DFAC
+ add r1, sp, #4
+ mov r0, #0x1e
+ add r1, #2
+ mov r2, #3
+ bl FUN_02030BC4
+ cmp r0, #0
+ beq _0223DFAC
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0204E6FC
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0223DEDA:
+ ldrb r2, [r6]
+ add r1, sp, #0
+ add r0, r5, #0
+ add r1, #2
+ bl MOD18_0223F50C
+ cmp r0, #0
+ beq _0223DEF6
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0223DEF6:
+ add r1, sp, #0
+ add r0, r5, #0
+ add r1, #2
+ bl MOD18_022398B4
+ cmp r0, #0
+ beq _0223DF10
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0223DF10:
+ add r1, sp, #0
+ add r0, r5, #0
+ add r1, #2
+ bl MOD18_0224B09C
+ cmp r0, #0
+ beq _0223DF2A
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0223DF2A:
+ add r1, sp, #0
+ add r0, r5, #0
+ add r1, #2
+ bl MOD18_022471D0
+ cmp r0, #0
+ beq _0223DF44
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0223DF44:
+ add r1, sp, #0
+ ldrh r0, [r1, #2]
+ ldrh r1, [r1, #4]
+ bl FUN_0204D76C
+ cmp r0, #0
+ beq _0223DF74
+ add r0, r5, #0
+ mov r1, #0xff
+ mov r2, #0
+ bl FUN_0204F1B0
+ cmp r0, #0
+ bne _0223DFAC
+ mov r0, #0x18
+ add r1, sp, #0
+ bl FUN_02030C4C
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0223DF74:
+ ldrb r1, [r6]
+ mov r0, #0x20
+ tst r0, r1
+ beq _0223DFAC
+ add r0, r5, #0
+ bl FUN_0204F210
+ cmp r0, #0
+ bne _0223DFAC
+ add r2, sp, #0
+ ldrh r3, [r2, #4]
+ mov r1, #0xf
+ ldrb r0, [r6, #1]
+ and r3, r1
+ ldrh r1, [r2, #2]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x18
+ add r1, r3, r1
+ cmp r0, r1
+ bne _0223DFAC
+ mov r0, #0x3f
+ add r1, sp, #0
+ bl FUN_02030C4C
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+_0223DFAC:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0223DFB0: .word 0x0000FFFF
+ thumb_func_end MOD18_0223DD78
+
+ thumb_func_start MOD18_0223DFB4
+MOD18_0223DFB4: ; 0x0223DFB4
+ push {r3, r4, r5, r6, r7, lr}
+ bl FUN_02031190
+ cmp r0, #0
+ bne _0223E00C
+ mov r5, #0
+ ldr r4, _0223E050 ; =0x02251388
+ add r7, r5, #0
+ mov r6, #1
+_0223DFC6:
+ add r0, r5, #0
+ bl FUN_0202DFA4
+ cmp r0, #0
+ beq _0223DFE2
+ ldr r0, [r4]
+ add r1, r0, r5
+ ldr r0, _0223E054 ; =0x00000135
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _0223DFE2
+ add r0, r5, #0
+ bl MOD18_02245358
+_0223DFE2:
+ add r0, r5, #0
+ bl FUN_0202DFA4
+ cmp r0, #0
+ ldr r0, [r4]
+ beq _0223DFF6
+ add r1, r0, r5
+ ldr r0, _0223E054 ; =0x00000135
+ strb r6, [r1, r0]
+ b _0223DFFC
+_0223DFF6:
+ add r1, r0, r5
+ ldr r0, _0223E054 ; =0x00000135
+ strb r7, [r1, r0]
+_0223DFFC:
+ add r5, r5, #1
+ cmp r5, #8
+ blt _0223DFC6
+ bl MOD18_0223E86C
+ add r0, r0, #2
+ bl FUN_02032B6C
+_0223E00C:
+ ldr r0, _0223E050 ; =0x02251388
+ ldr r2, [r0]
+ ldr r0, _0223E058 ; =0x00000145
+ ldrb r1, [r2, r0]
+ add r1, r1, #1
+ strb r1, [r2, r0]
+ bl FUN_02031190
+ cmp r0, #0
+ bne _0223E02E
+ bl FUN_0202DDE8
+ cmp r0, #0
+ beq _0223E02E
+ mov r0, #1
+ bl FUN_0204D168
+_0223E02E:
+ bl MOD18_0223CCC4
+ bl MOD18_0223EF74
+ bl MOD18_02239DD8
+ ldr r0, _0223E050 ; =0x02251388
+ ldr r1, [r0]
+ ldr r0, _0223E05C ; =0x0000014B
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _0223E04E
+ ldr r0, [r1, #0xc]
+ ldr r0, [r0, #8]
+ bl MOD18_02241D38
+_0223E04E:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223E050: .word 0x02251388
+_0223E054: .word 0x00000135
+_0223E058: .word 0x00000145
+_0223E05C: .word 0x0000014B
+ thumb_func_end MOD18_0223DFB4
+
+ thumb_func_start MOD18_0223E060
+MOD18_0223E060: ; 0x0223E060
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _0223E114 ; =0x02251388
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0223E110
+ mov r1, #0x15
+ mov r0, #0xf
+ lsl r1, r1, #4
+ bl FUN_02016998
+ add r1, r5, #0
+ bl MOD18_0223D414
+ bl FUN_0204D320
+ add r1, r0, #0
+ mov r0, #0xf
+ bl FUN_02016998
+ add r1, r5, #0
+ mov r2, #1
+ bl FUN_0204CB20
+ bl MOD18_0223ECE4
+ add r1, r0, #0
+ mov r0, #0xf
+ bl FUN_02016998
+ add r1, r5, #0
+ bl MOD18_0223E958
+ bl MOD18_02245350
+ add r1, r0, #0
+ mov r0, #0xf
+ bl FUN_02016998
+ add r1, r5, #0
+ bl MOD18_02244ED0
+ bl MOD18_0223CC78
+ add r1, r0, #0
+ mov r0, #0xf
+ bl FUN_02016998
+ add r1, r5, #0
+ bl MOD18_0223CB94
+ bl MOD18_02239848
+ add r1, r0, #0
+ mov r0, #0xf
+ bl FUN_02016998
+ add r1, r5, #0
+ bl MOD18_02239744
+ bl MOD18_0224D360
+ add r1, r0, #0
+ mov r0, #0xf
+ bl FUN_02016998
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_020377AC
+ bl FUN_02026CB4
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_020377AC
+ add r2, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD18_0224D2F0
+ add r0, r5, #0
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ bl MOD18_022492F8
+_0223E110:
+ pop {r4, r5, r6, pc}
+ nop
+_0223E114: .word 0x02251388
+ thumb_func_end MOD18_0223E060
+
+ thumb_func_start MOD18_0223E118
+MOD18_0223E118: ; 0x0223E118
+ push {r3, lr}
+ ldr r0, _0223E14C ; =0x02251388
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223E148
+ bl MOD18_0224D344
+ bl MOD18_0223CC80
+ bl MOD18_022451BC
+ bl MOD18_0223E9BC
+ bl FUN_0204CC48
+ bl MOD18_02239850
+ bl MOD18_0223D688
+ ldr r0, _0223E14C ; =0x02251388
+ mov r2, #1
+ ldr r1, [r0]
+ ldr r0, _0223E150 ; =0x0000014B
+ strb r2, [r1, r0]
+_0223E148:
+ pop {r3, pc}
+ nop
+_0223E14C: .word 0x02251388
+_0223E150: .word 0x0000014B
+ thumb_func_end MOD18_0223E118
+
+ thumb_func_start MOD18_0223E154
+MOD18_0223E154: ; 0x0223E154
+ push {r3, lr}
+ sub sp, #8
+ ldr r0, _0223E19C ; =0x02251388
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223E198
+ bl FUN_0204CC9C
+ bl MOD18_0224D35C
+ bl MOD18_0223CC94
+ bl MOD18_022451EC
+ bl MOD18_0223EA44
+ bl MOD18_02239854
+ ldr r0, _0223E19C ; =0x02251388
+ ldr r2, _0223E1A0 ; =0x0000014B
+ ldr r1, [r0]
+ mov r3, #0
+ strb r3, [r1, r2]
+ str r3, [sp]
+ mov r1, #4
+ str r1, [sp, #4]
+ ldr r0, [r0]
+ mov r1, #3
+ ldr r0, [r0, #0xc]
+ add r2, #0x97
+ ldr r0, [r0, #8]
+ mov r3, #0xa
+ bl FUN_0200CD68
+_0223E198:
+ add sp, #8
+ pop {r3, pc}
+ .align 2, 0
+_0223E19C: .word 0x02251388
+_0223E1A0: .word 0x0000014B
+ thumb_func_end MOD18_0223E154
+
+ thumb_func_start MOD18_0223E1A4
+MOD18_0223E1A4: ; 0x0223E1A4
+ push {r3, lr}
+ ldr r0, _0223E1DC ; =0x02251388
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223E1D8
+ ldr r0, [r0, #0xc]
+ ldr r0, [r0, #0xc]
+ bl FUN_02025C00
+ bl MOD18_02245270
+ bl MOD18_0223EA78
+ mov r0, #1
+ bl FUN_0204CCE0
+ bl MOD18_0223CCA8
+ bl MOD18_02239858
+ bl MOD18_02249328
+ bl MOD18_0224D324
+ bl MOD18_0223D5A4
+_0223E1D8:
+ pop {r3, pc}
+ nop
+_0223E1DC: .word 0x02251388
+ thumb_func_end MOD18_0223E1A4
+
+ thumb_func_start MOD18_0223E1E0
+MOD18_0223E1E0: ; 0x0223E1E0
+ push {r3, lr}
+ ldr r1, _0223E1F8 ; =0x02251388
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _0223E1F6
+ bl MOD18_0223EB0C
+ bl FUN_0204CDB4
+ bl MOD18_022452A4
+_0223E1F6:
+ pop {r3, pc}
+ .align 2, 0
+_0223E1F8: .word 0x02251388
+ thumb_func_end MOD18_0223E1E0
+
+ thumb_func_start MOD18_0223E1FC
+MOD18_0223E1FC: ; 0x0223E1FC
+ push {r4, lr}
+ ldr r1, _0223E2A8 ; =0x02251388
+ add r4, r0, #0
+ ldr r3, [r1]
+ mov r1, #0x53
+ lsl r1, r1, #2
+ ldrb r2, [r3, r1]
+ cmp r2, #0
+ beq _0223E214
+ mov r0, #0
+ strb r0, [r3, r1]
+ pop {r4, pc}
+_0223E214:
+ bl MOD18_0223D7A4
+ cmp r0, #0
+ beq _0223E22A
+ ldr r1, _0223E2A8 ; =0x02251388
+ mov r0, #1
+ ldr r2, [r1]
+ mov r1, #0x53
+ lsl r1, r1, #2
+ strb r0, [r2, r1]
+ pop {r4, pc}
+_0223E22A:
+ add r0, r4, #0
+ bl MOD18_0223FB3C
+ cmp r0, #0
+ beq _0223E242
+ ldr r1, _0223E2A8 ; =0x02251388
+ mov r0, #1
+ ldr r2, [r1]
+ mov r1, #0x53
+ lsl r1, r1, #2
+ strb r0, [r2, r1]
+ pop {r4, pc}
+_0223E242:
+ add r0, r4, #0
+ bl MOD18_0223FC14
+ cmp r0, #0
+ beq _0223E25A
+ ldr r1, _0223E2A8 ; =0x02251388
+ mov r0, #1
+ ldr r2, [r1]
+ mov r1, #0x53
+ lsl r1, r1, #2
+ strb r0, [r2, r1]
+ pop {r4, pc}
+_0223E25A:
+ add r0, r4, #0
+ bl MOD18_02246D9C
+ cmp r0, #0
+ beq _0223E272
+ ldr r1, _0223E2A8 ; =0x02251388
+ mov r0, #1
+ ldr r2, [r1]
+ mov r1, #0x53
+ lsl r1, r1, #2
+ strb r0, [r2, r1]
+ pop {r4, pc}
+_0223E272:
+ add r0, r4, #0
+ bl MOD18_0223CA78
+ cmp r0, #0
+ beq _0223E28A
+ ldr r1, _0223E2A8 ; =0x02251388
+ mov r0, #1
+ ldr r2, [r1]
+ mov r1, #0x53
+ lsl r1, r1, #2
+ strb r0, [r2, r1]
+ pop {r4, pc}
+_0223E28A:
+ add r0, r4, #0
+ bl MOD18_0223D1F8
+ cmp r0, #0
+ beq _0223E2A2
+ ldr r1, _0223E2A8 ; =0x02251388
+ mov r0, #1
+ ldr r2, [r1]
+ mov r1, #0x53
+ lsl r1, r1, #2
+ strb r0, [r2, r1]
+ pop {r4, pc}
+_0223E2A2:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_0223E2A8: .word 0x02251388
+ thumb_func_end MOD18_0223E1FC
+
+ thumb_func_start MOD18_0223E2AC
+MOD18_0223E2AC: ; 0x0223E2AC
+ push {r3, lr}
+ ldr r1, _0223E2C0 ; =0x02251388
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _0223E2BC
+ bl MOD18_02246EAC
+ pop {r3, pc}
+_0223E2BC:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_0223E2C0: .word 0x02251388
+ thumb_func_end MOD18_0223E2AC
+
+ thumb_func_start MOD18_0223E2C4
+MOD18_0223E2C4: ; 0x0223E2C4
+ push {r3, lr}
+ ldr r0, _0223E2D8 ; =0x02251388
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223E2D4
+ bl MOD18_02246ECC
+ pop {r3, pc}
+_0223E2D4:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_0223E2D8: .word 0x02251388
+ thumb_func_end MOD18_0223E2C4
+
+ thumb_func_start MOD18_0223E2DC
+MOD18_0223E2DC: ; 0x0223E2DC
+ push {r3, lr}
+ ldr r0, _0223E2F0 ; =0x02251388
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223E2EC
+ bl MOD18_02246EF4
+ pop {r3, pc}
+_0223E2EC:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_0223E2F0: .word 0x02251388
+ thumb_func_end MOD18_0223E2DC
+
+ thumb_func_start MOD18_0223E2F4
+MOD18_0223E2F4: ; 0x0223E2F4
+ cmp r0, #0x20
+ ble _0223E30A
+ cmp r1, #0x40
+ ble _0223E30A
+ ldr r2, _0223E310 ; =0x000001DF
+ cmp r0, r2
+ bge _0223E30A
+ cmp r1, r2
+ bge _0223E30A
+ mov r0, #0
+ bx lr
+_0223E30A:
+ mov r0, #1
+ bx lr
+ nop
+_0223E310: .word 0x000001DF
+ thumb_func_end MOD18_0223E2F4
+
+ thumb_func_start MOD18_0223E314
+MOD18_0223E314: ; 0x0223E314
+ push {r3, lr}
+ ldr r1, _0223E374 ; =0x02251388
+ ldr r2, [r1]
+ cmp r2, #0
+ beq _0223E36E
+ cmp r0, #0x10
+ bge _0223E360
+ ldr r1, _0223E378 ; =0x00000147
+ ldrb r1, [r2, r1]
+ cmp r1, #4
+ bhi _0223E36E
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223E336: ; jump table
+ .short _0223E340 - _0223E336 - 2 ; case 0
+ .short _0223E344 - _0223E336 - 2 ; case 1
+ .short _0223E34E - _0223E336 - 2 ; case 2
+ .short _0223E35A - _0223E336 - 2 ; case 3
+ .short _0223E354 - _0223E336 - 2 ; case 4
+_0223E340:
+ mov r0, #0
+ pop {r3, pc}
+_0223E344:
+ cmp r0, #8
+ bge _0223E34E
+ bl MOD18_0223C700
+ pop {r3, pc}
+_0223E34E:
+ bl MOD18_0223D3AC
+ pop {r3, pc}
+_0223E354:
+ bl MOD18_02240B28
+ pop {r3, pc}
+_0223E35A:
+ bl MOD18_0223C740
+ pop {r3, pc}
+_0223E360:
+ ldr r0, [r2, #0xc]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CA8
+ bl FUN_02026C88
+ pop {r3, pc}
+_0223E36E:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_0223E374: .word 0x02251388
+_0223E378: .word 0x00000147
+ thumb_func_end MOD18_0223E314
+
+ thumb_func_start MOD18_0223E37C
+MOD18_0223E37C: ; 0x0223E37C
+ push {r3, lr}
+ ldr r1, _0223E3DC ; =0x02251388
+ ldr r2, [r1]
+ cmp r2, #0
+ beq _0223E3D6
+ cmp r0, #0x10
+ bge _0223E3C8
+ ldr r1, _0223E3E0 ; =0x00000147
+ ldrb r1, [r2, r1]
+ cmp r1, #4
+ bhi _0223E3D6
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223E39E: ; jump table
+ .short _0223E3A8 - _0223E39E - 2 ; case 0
+ .short _0223E3AC - _0223E39E - 2 ; case 1
+ .short _0223E3B6 - _0223E39E - 2 ; case 2
+ .short _0223E3C2 - _0223E39E - 2 ; case 3
+ .short _0223E3BC - _0223E39E - 2 ; case 4
+_0223E3A8:
+ mov r0, #0
+ pop {r3, pc}
+_0223E3AC:
+ cmp r0, #8
+ bge _0223E3B6
+ bl MOD18_0223C720
+ pop {r3, pc}
+_0223E3B6:
+ bl MOD18_0223D3E0
+ pop {r3, pc}
+_0223E3BC:
+ bl MOD18_02240B5C
+ pop {r3, pc}
+_0223E3C2:
+ bl MOD18_0223C778
+ pop {r3, pc}
+_0223E3C8:
+ ldr r0, [r2, #0xc]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CA8
+ bl FUN_02026C90
+ pop {r3, pc}
+_0223E3D6:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_0223E3DC: .word 0x02251388
+_0223E3E0: .word 0x00000147
+ thumb_func_end MOD18_0223E37C
+
+ thumb_func_start MOD18_0223E3E4
+MOD18_0223E3E4: ; 0x0223E3E4
+ push {r3, lr}
+ ldr r1, _0223E43C ; =0x02251388
+ ldr r2, [r1]
+ cmp r2, #0
+ beq _0223E438
+ cmp r0, #0x10
+ bge _0223E424
+ ldr r1, _0223E440 ; =0x00000147
+ ldrb r1, [r2, r1]
+ cmp r1, #4
+ bhi _0223E438
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0223E406: ; jump table
+ .short _0223E438 - _0223E406 - 2 ; case 0
+ .short _0223E410 - _0223E406 - 2 ; case 1
+ .short _0223E418 - _0223E406 - 2 ; case 2
+ .short _0223E420 - _0223E406 - 2 ; case 3
+ .short _0223E41C - _0223E406 - 2 ; case 4
+_0223E410:
+ cmp r0, #8
+ bge _0223E418
+ mov r0, #0xc
+ pop {r3, pc}
+_0223E418:
+ mov r0, #9
+ pop {r3, pc}
+_0223E41C:
+ mov r0, #0xb
+ pop {r3, pc}
+_0223E420:
+ mov r0, #0xc
+ pop {r3, pc}
+_0223E424:
+ ldr r0, [r2, #0xc]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CA8
+ bl FUN_02026CA0
+ cmp r0, #0
+ beq _0223E438
+ mov r0, #3
+ pop {r3, pc}
+_0223E438:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_0223E43C: .word 0x02251388
+_0223E440: .word 0x00000147
+ thumb_func_end MOD18_0223E3E4
+
+ thumb_func_start MOD18_0223E444
+MOD18_0223E444: ; 0x0223E444
+ ldr r0, _0223E450 ; =0x02251388
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _0223E454 ; =0x00000147
+ strb r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223E450: .word 0x02251388
+_0223E454: .word 0x00000147
+ thumb_func_end MOD18_0223E444
+
+ thumb_func_start MOD18_0223E458
+MOD18_0223E458: ; 0x0223E458
+ ldr r0, _0223E464 ; =0x02251388
+ mov r2, #1
+ ldr r1, [r0]
+ ldr r0, _0223E468 ; =0x00000147
+ strb r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223E464: .word 0x02251388
+_0223E468: .word 0x00000147
+ thumb_func_end MOD18_0223E458
+
+ thumb_func_start MOD18_0223E46C
+MOD18_0223E46C: ; 0x0223E46C
+ ldr r0, _0223E478 ; =0x02251388
+ mov r2, #2
+ ldr r1, [r0]
+ ldr r0, _0223E47C ; =0x00000147
+ strb r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223E478: .word 0x02251388
+_0223E47C: .word 0x00000147
+ thumb_func_end MOD18_0223E46C
+
+ thumb_func_start MOD18_0223E480
+MOD18_0223E480: ; 0x0223E480
+ ldr r0, _0223E48C ; =0x02251388
+ mov r2, #4
+ ldr r1, [r0]
+ ldr r0, _0223E490 ; =0x00000147
+ strb r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223E48C: .word 0x02251388
+_0223E490: .word 0x00000147
+ thumb_func_end MOD18_0223E480
+
+ thumb_func_start MOD18_0223E494
+MOD18_0223E494: ; 0x0223E494
+ ldr r0, _0223E4A0 ; =0x02251388
+ mov r2, #3
+ ldr r1, [r0]
+ ldr r0, _0223E4A4 ; =0x00000147
+ strb r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223E4A0: .word 0x02251388
+_0223E4A4: .word 0x00000147
+ thumb_func_end MOD18_0223E494
+
+ thumb_func_start MOD18_0223E4A8
+MOD18_0223E4A8: ; 0x0223E4A8
+ ldr r2, _0223E4B8 ; =0x02251388
+ ldr r2, [r2]
+ cmp r2, #0
+ beq _0223E4B6
+ add r0, r2, r0
+ add r0, #0xc2
+ strb r1, [r0]
+_0223E4B6:
+ bx lr
+ .align 2, 0
+_0223E4B8: .word 0x02251388
+ thumb_func_end MOD18_0223E4A8
+
+ thumb_func_start MOD18_0223E4BC
+MOD18_0223E4BC: ; 0x0223E4BC
+ ldr r1, _0223E4D0 ; =0x02251388
+ ldr r2, [r1]
+ cmp r2, #0
+ beq _0223E4CC
+ add r0, r2, r0
+ mov r1, #1
+ add r0, #0xd2
+ strb r1, [r0]
+_0223E4CC:
+ bx lr
+ nop
+_0223E4D0: .word 0x02251388
+ thumb_func_end MOD18_0223E4BC
+
+ thumb_func_start MOD18_0223E4D4
+MOD18_0223E4D4: ; 0x0223E4D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _0223E550 ; =0x02251388
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0223E54E
+ lsl r4, r5, #2
+ add r0, r0, r4
+ add r0, #0xdc
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0223E54E
+ mov r0, #0x64
+ mov r1, #0xf
+ bl FUN_020219F4
+ ldr r1, _0223E550 ; =0x02251388
+ ldr r1, [r1]
+ add r1, r1, r4
+ add r1, #0xdc
+ str r0, [r1]
+ mov r0, #0xb
+ bl FUN_0200AA80
+ add r6, r0, #0
+ mov r0, #0x64
+ mov r1, #0xb
+ bl FUN_020219F4
+ add r7, r0, #0
+ add r0, r5, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_0200ABC0
+ bl MOD18_0223D638
+ bl MOD18_0224DBB4
+ mov r1, #0x73
+ add r2, r7, #0
+ bl FUN_0200A8E0
+ ldr r1, _0223E550 ; =0x02251388
+ add r0, r6, #0
+ ldr r1, [r1]
+ add r2, r7, #0
+ add r1, r1, r4
+ add r1, #0xdc
+ ldr r1, [r1]
+ bl FUN_0200B7B8
+ add r0, r7, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200AB18
+_0223E54E:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223E550: .word 0x02251388
+ thumb_func_end MOD18_0223E4D4
+
+ thumb_func_start MOD18_0223E554
+MOD18_0223E554: ; 0x0223E554
+ ldr r1, _0223E564 ; =0x02251388
+ mov r2, #1
+ ldr r1, [r1]
+ add r1, r1, r0
+ ldr r0, _0223E568 ; =0x0000013D
+ strb r2, [r1, r0]
+ bx lr
+ nop
+_0223E564: .word 0x02251388
+_0223E568: .word 0x0000013D
+ thumb_func_end MOD18_0223E554
+
+ thumb_func_start MOD18_0223E56C
+MOD18_0223E56C: ; 0x0223E56C
+ ldr r1, _0223E578 ; =0x02251388
+ ldr r1, [r1]
+ add r1, #0xc0
+ strh r0, [r1]
+ bx lr
+ nop
+_0223E578: .word 0x02251388
+ thumb_func_end MOD18_0223E56C
+
+ thumb_func_start MOD18_0223E57C
+MOD18_0223E57C: ; 0x0223E57C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ ldr r1, _0223E5EC ; =0x02251388
+ add r5, r2, #0
+ ldr r3, [r1]
+ add r1, r3, #0
+ add r1, #0xc0
+ ldrh r4, [r1]
+ cmp r4, #0
+ beq _0223E5EA
+ mov r1, #0
+ add r2, r3, #0
+_0223E594:
+ ldrh r6, [r2, #0x20]
+ cmp r4, r6
+ bne _0223E5B0
+ ldrh r6, [r2, #0x22]
+ cmp r0, r6
+ bne _0223E5B0
+ lsl r1, r1, #3
+ add r0, r3, r1
+ strh r7, [r0, #0x24]
+ ldr r0, _0223E5EC ; =0x02251388
+ ldr r0, [r0]
+ add r0, r0, r1
+ strh r5, [r0, #0x26]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223E5B0:
+ add r1, r1, #1
+ add r2, #8
+ cmp r1, #0x14
+ blt _0223E594
+ mov r6, #0
+ add r2, r3, #0
+_0223E5BC:
+ ldrh r1, [r2, #0x20]
+ cmp r1, #0
+ bne _0223E5DE
+ lsl r1, r6, #3
+ add r2, r3, r1
+ strh r4, [r2, #0x20]
+ ldr r2, _0223E5EC ; =0x02251388
+ ldr r3, [r2]
+ add r3, r3, r1
+ strh r0, [r3, #0x22]
+ ldr r0, [r2]
+ add r0, r0, r1
+ strh r7, [r0, #0x24]
+ ldr r0, [r2]
+ add r0, r0, r1
+ strh r5, [r0, #0x26]
+ pop {r3, r4, r5, r6, r7, pc}
+_0223E5DE:
+ add r6, r6, #1
+ add r2, #8
+ cmp r6, #0x14
+ blt _0223E5BC
+ bl ErrorHandling
+_0223E5EA:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223E5EC: .word 0x02251388
+ thumb_func_end MOD18_0223E57C
+
+ thumb_func_start MOD18_0223E5F0
+MOD18_0223E5F0: ; 0x0223E5F0
+ push {r4, r5}
+ ldr r1, _0223E624 ; =0x02251388
+ mov r3, #0
+ ldr r1, [r1]
+ add r2, r1, #0
+ add r2, #0xc0
+ ldrh r5, [r2]
+ add r4, r1, #0
+_0223E600:
+ ldrh r2, [r4, #0x20]
+ cmp r5, r2
+ bne _0223E616
+ ldrh r2, [r4, #0x22]
+ cmp r0, r2
+ bne _0223E616
+ lsl r0, r3, #3
+ add r0, r1, r0
+ ldrh r0, [r0, #0x26]
+ pop {r4, r5}
+ bx lr
+_0223E616:
+ add r3, r3, #1
+ add r4, #8
+ cmp r3, #0x14
+ blt _0223E600
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+_0223E624: .word 0x02251388
+ thumb_func_end MOD18_0223E5F0
+
+ thumb_func_start MOD18_0223E628
+MOD18_0223E628: ; 0x0223E628
+ push {r4, r5}
+ ldr r1, _0223E65C ; =0x02251388
+ mov r3, #0
+ ldr r1, [r1]
+ add r2, r1, #0
+ add r2, #0xc0
+ ldrh r5, [r2]
+ add r4, r1, #0
+_0223E638:
+ ldrh r2, [r4, #0x20]
+ cmp r5, r2
+ bne _0223E64E
+ ldrh r2, [r4, #0x22]
+ cmp r0, r2
+ bne _0223E64E
+ lsl r0, r3, #3
+ add r0, r1, r0
+ ldrh r0, [r0, #0x24]
+ pop {r4, r5}
+ bx lr
+_0223E64E:
+ add r3, r3, #1
+ add r4, #8
+ cmp r3, #0x14
+ blt _0223E638
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+_0223E65C: .word 0x02251388
+ thumb_func_end MOD18_0223E628
+
+ thumb_func_start MOD18_0223E660
+MOD18_0223E660: ; 0x0223E660
+ push {r4, lr}
+ ldrb r4, [r2]
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0223E680
+ ldr r0, _0223E684 ; =0x02251388
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl MOD18_0224D1F8
+ mov r0, #0x19
+ bl FUN_020311DC
+ bl FUN_0204F7E4
+_0223E680:
+ pop {r4, pc}
+ nop
+_0223E684: .word 0x02251388
+ thumb_func_end MOD18_0223E660
+
+ thumb_func_start MOD18_0223E688
+MOD18_0223E688: ; 0x0223E688
+ push {r3, r4}
+ ldr r3, _0223E69C ; =0x02251388
+ ldr r4, [r3]
+ str r0, [r4]
+ ldr r0, [r3]
+ str r1, [r0, #4]
+ ldr r0, [r3]
+ str r2, [r0, #8]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+_0223E69C: .word 0x02251388
+ thumb_func_end MOD18_0223E688
+
+ thumb_func_start MOD18_0223E6A0
+MOD18_0223E6A0: ; 0x0223E6A0
+ ldr r0, _0223E6B4 ; =0x02251388
+ mov r2, #0
+ ldr r1, [r0]
+ str r2, [r1]
+ ldr r1, [r0]
+ str r2, [r1, #4]
+ ldr r0, [r0]
+ str r2, [r0, #8]
+ bx lr
+ nop
+_0223E6B4: .word 0x02251388
+ thumb_func_end MOD18_0223E6A0
+
+ thumb_func_start MOD18_0223E6B8
+MOD18_0223E6B8: ; 0x0223E6B8
+ push {r4, lr}
+ ldr r0, _0223E730 ; =0x02251388
+ mov r4, #0
+ ldr r2, [r0]
+ ldr r0, [r2, #4]
+ cmp r0, #0
+ beq _0223E6D2
+ ldr r1, [r2]
+ ldr r2, [r2, #8]
+ blx r2
+ bl MOD18_0223E6A0
+ mov r4, #1
+_0223E6D2:
+ bl MOD18_0223D688
+ ldr r0, _0223E730 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DD94
+ ldr r0, _0223E730 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DD94
+ ldr r0, _0223E730 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl MOD18_0224DD94
+ ldr r0, _0223E730 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DD94
+ ldr r0, _0223E730 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DD94
+ ldr r0, _0223E730 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DD94
+ add r0, r4, #0
+ pop {r4, pc}
+ nop
+_0223E730: .word 0x02251388
+ thumb_func_end MOD18_0223E6B8
+
+ thumb_func_start MOD18_0223E734
+MOD18_0223E734: ; 0x0223E734
+ push {r3, r4, r5, lr}
+ ldr r2, _0223E7A8 ; =0x02251388
+ add r4, r0, #0
+ ldr r1, [r2]
+ ldr r3, [r1, #4]
+ cmp r3, #0
+ beq _0223E746
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0223E746:
+ ldr r3, [r1, #0xc]
+ ldr r3, [r3, #0x10]
+ cmp r3, #0
+ beq _0223E768
+ mov r0, #0x13
+ lsl r0, r0, #4
+ ldr r3, [r1, r0]
+ add r3, r3, #1
+ str r3, [r1, r0]
+ ldr r1, [r2]
+ ldr r0, [r1, r0]
+ cmp r0, #0x64
+ ble _0223E764
+ bl ErrorHandling
+_0223E764:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0223E768:
+ bl FUN_0204D830
+ cmp r0, #0
+ beq _0223E774
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0223E774:
+ add r0, r4, #0
+ bl FUN_0204E494
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_0204E4B4
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ beq _0223E796
+ cmp r4, #0
+ beq _0223E796
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0223E796:
+ ldr r0, _0223E7A8 ; =0x02251388
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #0x13
+ lsl r0, r0, #4
+ str r2, [r1, r0]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_0223E7A8: .word 0x02251388
+ thumb_func_end MOD18_0223E734
+
+ thumb_func_start MOD18_0223E7AC
+MOD18_0223E7AC: ; 0x0223E7AC
+ push {r3, lr}
+ ldr r0, _0223E7F8 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DFA0
+ ldr r0, _0223E7F8 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x47
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DFA0
+ ldr r0, _0223E7F8 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl MOD18_0224DFA0
+ ldr r0, _0223E7F8 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DFA0
+ ldr r0, _0223E7F8 ; =0x02251388
+ ldr r1, [r0]
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl MOD18_0224DFA0
+ pop {r3, pc}
+ nop
+_0223E7F8: .word 0x02251388
+ thumb_func_end MOD18_0223E7AC
+
+ thumb_func_start MOD18_0223E7FC
+MOD18_0223E7FC: ; 0x0223E7FC
+ push {r3, lr}
+ sub sp, #8
+ bl MOD18_022478C4
+ add r1, sp, #0
+ strh r0, [r1]
+ bl MOD18_022478E0
+ add r1, sp, #0
+ strh r0, [r1, #2]
+ bl MOD18_02247900
+ add r1, sp, #0
+ strb r0, [r1, #4]
+ bl MOD18_0223CB24
+ add r1, sp, #0
+ strb r0, [r1, #5]
+ mov r0, #0x46
+ add r1, sp, #0
+ bl FUN_020311D0
+ add sp, #8
+ pop {r3, pc}
+ thumb_func_end MOD18_0223E7FC
+
+ thumb_func_start MOD18_0223E82C
+MOD18_0223E82C: ; 0x0223E82C
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ ldrh r1, [r4]
+ add r5, r0, #0
+ bl MOD18_0224791C
+ ldrh r1, [r4, #2]
+ add r0, r5, #0
+ bl MOD18_02247938
+ ldrb r1, [r4, #4]
+ add r0, r5, #0
+ bl MOD18_02247954
+ ldrb r1, [r4, #5]
+ add r0, r5, #0
+ bl MOD18_0223CB44
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223E82C
+
+ thumb_func_start MOD18_0223E854
+MOD18_0223E854: ; 0x0223E854
+ mov r0, #6
+ bx lr
+ thumb_func_end MOD18_0223E854
+
+ thumb_func_start MOD18_0223E858
+MOD18_0223E858: ; 0x0223E858
+ ldr r1, _0223E868 ; =0x02251388
+ mov r2, #1
+ ldr r1, [r1]
+ add r0, r1, r0
+ add r0, #0xca
+ strb r2, [r0]
+ bx lr
+ nop
+_0223E868: .word 0x02251388
+ thumb_func_end MOD18_0223E858
+
+ thumb_func_start MOD18_0223E86C
+MOD18_0223E86C: ; 0x0223E86C
+ ldr r1, _0223E88C ; =0x02251388
+ mov r0, #0
+ ldr r3, [r1]
+ add r2, r0, #0
+_0223E874:
+ add r1, r3, #0
+ add r1, #0xca
+ ldrb r1, [r1]
+ cmp r1, #0
+ beq _0223E880
+ add r0, r0, #1
+_0223E880:
+ add r2, r2, #1
+ add r3, r3, #1
+ cmp r2, #8
+ blt _0223E874
+ bx lr
+ nop
+_0223E88C: .word 0x02251388
+ thumb_func_end MOD18_0223E86C
+
+ thumb_func_start MOD18_0223E890
+MOD18_0223E890: ; 0x0223E890
+ ldr r1, _0223E8A0 ; =0x02251388
+ ldr r3, _0223E8A4 ; =MOD18_02245358
+ ldr r1, [r1]
+ mov r2, #0
+ add r1, r1, r0
+ add r1, #0xca
+ strb r2, [r1]
+ bx r3
+ .align 2, 0
+_0223E8A0: .word 0x02251388
+_0223E8A4: .word MOD18_02245358
+ thumb_func_end MOD18_0223E890
+
+ thumb_func_start MOD18_0223E8A8
+MOD18_0223E8A8: ; 0x0223E8A8
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r0, _0223E948 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ mov r4, #0
+ ldr r7, _0223E948 ; =0x022513A0
+ add r6, r0, #0
+ add r5, r4, #0
+ str r4, [sp]
+_0223E8C2:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_02026444
+ ldr r1, [r7, #4]
+ add r2, r1, r5
+ mov r1, #0xaa
+ lsl r1, r1, #2
+ strb r0, [r2, r1]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_02026450
+ ldr r1, [r7, #4]
+ add r2, r1, r5
+ mov r1, #0xa9
+ lsl r1, r1, #2
+ strh r0, [r2, r1]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_02026470
+ ldr r1, [r7, #4]
+ add r2, r1, r5
+ ldr r1, _0223E94C ; =0x000002A6
+ strh r0, [r2, r1]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_02026490
+ ldr r1, [r7, #4]
+ add r2, r1, r5
+ ldr r1, _0223E950 ; =0x000002A9
+ strb r0, [r2, r1]
+ ldr r1, [r7, #4]
+ ldr r0, _0223E954 ; =0x00000B46
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _0223E936
+ mov r0, #0xaa
+ add r2, r1, r5
+ lsl r0, r0, #2
+ ldrb r3, [r2, r0]
+ cmp r3, #0
+ beq _0223E936
+ ldr r1, _0223E94C ; =0x000002A6
+ sub r0, r0, #4
+ ldrh r0, [r2, r0]
+ ldrh r1, [r2, r1]
+ mov r2, #1
+ bl MOD18_022402F8
+ ldr r2, [r7, #4]
+ ldr r1, [sp]
+ add r2, r2, r1
+ mov r1, #0xc1
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+_0223E936:
+ ldr r0, [sp]
+ add r4, r4, #1
+ add r0, r0, #4
+ add r5, r5, #6
+ str r0, [sp]
+ cmp r4, #0x10
+ blt _0223E8C2
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223E948: .word 0x022513A0
+_0223E94C: .word 0x000002A6
+_0223E950: .word 0x000002A9
+_0223E954: .word 0x00000B46
+ thumb_func_end MOD18_0223E8A8
+
+ thumb_func_start MOD18_0223E958
+MOD18_0223E958: ; 0x0223E958
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, _0223E9B0 ; =0x022513A0
+ ldr r2, [r1, #4]
+ cmp r2, #0
+ bne _0223E9AC
+ ldr r2, _0223E9B4 ; =0x00000B48
+ str r0, [r1, #4]
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r0, _0223E9B0 ; =0x022513A0
+ ldr r0, [r0, #4]
+ str r4, [r0, #0x40]
+ add r0, r4, #0
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ ldr r2, _0223E9B0 ; =0x022513A0
+ mov r1, #0xa3
+ ldr r3, [r2, #4]
+ mov r0, #0
+ lsl r1, r1, #2
+ str r0, [r3, r1]
+ ldr r1, _0223E9B8 ; =0x00000B04
+ mov r5, #0xff
+_0223E98E:
+ ldr r3, [r2, #4]
+ add r3, r3, r0
+ add r0, r0, #1
+ strb r5, [r3, r1]
+ cmp r0, #8
+ blt _0223E98E
+ ldr r0, [r4, #0x20]
+ bl MOD05_021F043C
+ add r4, #0x88
+ str r0, [r4]
+ bl MOD18_0223EBF0
+ bl MOD18_0223E8A8
+_0223E9AC:
+ pop {r3, r4, r5, pc}
+ nop
+_0223E9B0: .word 0x022513A0
+_0223E9B4: .word 0x00000B48
+_0223E9B8: .word 0x00000B04
+ thumb_func_end MOD18_0223E958
+
+ thumb_func_start MOD18_0223E9BC
+MOD18_0223E9BC: ; 0x0223E9BC
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r0, _0223EA3C ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ add r0, #0x88
+ bl MOD05_021F04F8
+ bl MOD18_0223ECB8
+ bl MOD18_02243FF0
+ mov r5, #0
+ mov r7, #0xc1
+ lsl r7, r7, #2
+ ldr r1, _0223EA3C ; =0x022513A0
+ add r6, r5, #0
+ add r2, r5, #0
+ add r0, r7, #0
+_0223E9E0:
+ ldr r3, [r1, #4]
+ add r4, r3, r6
+ ldr r3, [r4, r0]
+ cmp r3, #0
+ beq _0223E9EC
+ str r2, [r4, r7]
+_0223E9EC:
+ add r5, r5, #1
+ add r6, r6, #4
+ cmp r5, #0x10
+ blt _0223E9E0
+ ldr r0, _0223EA3C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223EA12
+ bl FUN_0200CAB4
+ ldr r0, _0223EA3C ; =0x022513A0
+ mov r2, #0
+ ldr r1, [r0, #4]
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ str r2, [r1, r0]
+_0223EA12:
+ ldr r0, _0223EA3C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223EA30
+ bl FUN_02016A18
+ ldr r0, _0223EA3C ; =0x022513A0
+ mov r2, #0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ str r2, [r1, r0]
+_0223EA30:
+ ldr r0, _0223EA3C ; =0x022513A0
+ mov r2, #1
+ ldr r1, [r0, #4]
+ ldr r0, _0223EA40 ; =0x00000B46
+ strb r2, [r1, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223EA3C: .word 0x022513A0
+_0223EA40: .word 0x00000B46
+ thumb_func_end MOD18_0223E9BC
+
+ thumb_func_start MOD18_0223EA44
+MOD18_0223EA44: ; 0x0223EA44
+ push {r3, lr}
+ ldr r0, _0223EA70 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x20]
+ bl MOD05_021F043C
+ ldr r1, _0223EA70 ; =0x022513A0
+ ldr r2, [r1, #4]
+ ldr r2, [r2, #0x40]
+ add r2, #0x88
+ str r0, [r2]
+ ldr r1, [r1, #4]
+ ldr r0, _0223EA74 ; =0x00000B46
+ mov r2, #0
+ strb r2, [r1, r0]
+ bl MOD18_0223E8A8
+ bl MOD18_0223EBF0
+ pop {r3, pc}
+ nop
+_0223EA70: .word 0x022513A0
+_0223EA74: .word 0x00000B46
+ thumb_func_end MOD18_0223EA44
+
+ thumb_func_start MOD18_0223EA78
+MOD18_0223EA78: ; 0x0223EA78
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ ldr r6, _0223EB04 ; =0x022513A0
+ add r5, r4, #0
+ add r7, r4, #0
+_0223EA82:
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223EA9E
+ bl FUN_02064520
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ str r7, [r1, r0]
+_0223EA9E:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x10
+ blt _0223EA82
+ bl MOD18_02243FF0
+ bl MOD18_0223ECB8
+ ldr r0, _0223EB04 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ add r0, #0x88
+ bl MOD05_021F04F8
+ ldr r0, _0223EB04 ; =0x022513A0
+ ldr r1, _0223EB08 ; =0x00000B34
+ ldr r3, [r0, #4]
+ ldrh r2, [r3, r1]
+ cmp r2, #0xa
+ blo _0223EAD0
+ add r1, r1, #2
+ ldrb r1, [r3, r1]
+ ldr r0, [r3, #0x40]
+ bl FUN_02061B0C
+_0223EAD0:
+ ldr r0, _0223EB04 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223EAE2
+ bl FUN_0200CAB4
+_0223EAE2:
+ ldr r0, _0223EB04 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223EAF4
+ bl FUN_02016A18
+_0223EAF4:
+ ldr r0, _0223EB04 ; =0x022513A0
+ ldr r0, [r0, #4]
+ bl FUN_02016A18
+ ldr r0, _0223EB04 ; =0x022513A0
+ mov r1, #0
+ str r1, [r0, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223EB04: .word 0x022513A0
+_0223EB08: .word 0x00000B34
+ thumb_func_end MOD18_0223EA78
+
+ thumb_func_start MOD18_0223EB0C
+MOD18_0223EB0C: ; 0x0223EB0C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ ldr r6, _0223EB80 ; =0x022513A0
+ add r5, r4, #0
+ add r7, r4, #0
+_0223EB16:
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223EB32
+ bl FUN_02064520
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ str r7, [r1, r0]
+_0223EB32:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x10
+ blt _0223EB16
+ bl MOD18_02243FF0
+ bl MOD18_0223E8A8
+ mov r4, #0
+ ldr r2, _0223EB80 ; =0x022513A0
+ ldr r0, _0223EB84 ; =0x00000B3C
+ add r1, r4, #0
+_0223EB4A:
+ ldr r3, [r2, #4]
+ add r3, r3, r4
+ add r4, r4, #1
+ strb r1, [r3, r0]
+ cmp r4, #8
+ blt _0223EB4A
+ ldr r0, _0223EB80 ; =0x022513A0
+ ldr r2, [r0, #4]
+ mov r0, #0xd1
+ lsl r0, r0, #2
+ add r0, r2, r0
+ mov r2, #0x12
+ lsl r2, r2, #6
+ bl MI_CpuFill8
+ ldr r0, _0223EB80 ; =0x022513A0
+ mov r2, #3
+ ldr r1, [r0, #4]
+ ldr r0, _0223EB88 ; =0x000007C4
+ lsl r2, r2, #8
+ add r0, r1, r0
+ mov r1, #0
+ bl MI_CpuFill8
+ bl MOD18_0223F174
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223EB80: .word 0x022513A0
+_0223EB84: .word 0x00000B3C
+_0223EB88: .word 0x000007C4
+ thumb_func_end MOD18_0223EB0C
+
+ thumb_func_start MOD18_0223EB8C
+MOD18_0223EB8C: ; 0x0223EB8C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _0223EBE8 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xd1
+ lsl r0, r0, #2
+ add r2, r1, r0
+ lsl r1, r4, #4
+ mov r0, #6
+ mul r0, r1
+ add r1, r2, r0
+ mov r2, #0
+ add r0, r2, #0
+_0223EBA6:
+ add r2, r2, #1
+ strb r0, [r1, #4]
+ add r1, r1, #6
+ cmp r2, #0x10
+ blt _0223EBA6
+ add r0, r4, #0
+ bl MOD18_0223EDFC
+ ldr r0, _0223EBE8 ; =0x022513A0
+ ldr r0, [r0, #4]
+ add r1, r0, r4
+ ldr r0, _0223EBEC ; =0x00000B3C
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _0223EBE6
+ add r0, r4, #0
+ bl FUN_0204E778
+ ldr r1, _0223EBE8 ; =0x022513A0
+ add r0, r4, #0
+ ldr r1, [r1, #4]
+ add r2, r1, r4
+ ldr r1, _0223EBEC ; =0x00000B3C
+ ldrb r1, [r2, r1]
+ bl MOD18_0223FCD4
+ ldr r0, _0223EBE8 ; =0x022513A0
+ mov r2, #0
+ ldr r0, [r0, #4]
+ add r1, r0, r4
+ ldr r0, _0223EBEC ; =0x00000B3C
+ strb r2, [r1, r0]
+_0223EBE6:
+ pop {r4, pc}
+ .align 2, 0
+_0223EBE8: .word 0x022513A0
+_0223EBEC: .word 0x00000B3C
+ thumb_func_end MOD18_0223EB8C
+
+ thumb_func_start MOD18_0223EBF0
+MOD18_0223EBF0: ; 0x0223EBF0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r4, #0
+ mov r7, #6
+ ldr r6, _0223ECB4 ; =0x022513A0
+ add r5, r4, #0
+ lsl r7, r7, #6
+_0223EBFE:
+ mov r0, #1
+ add r1, r4, #0
+ mov r2, #4
+ bl FUN_02008DEC
+ ldr r1, [r6, #4]
+ add r4, r4, #1
+ add r1, r1, r5
+ add r5, r5, #4
+ str r0, [r1, r7]
+ cmp r4, #4
+ blt _0223EBFE
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r0, _0223ECB4 ; =0x022513A0
+ mov r2, #0x11
+ ldr r1, [r0, #4]
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ mov r1, #0x32
+ bl FUN_02008F34
+ ldr r2, _0223ECB4 ; =0x022513A0
+ mov r1, #0x1a
+ ldr r3, [r2, #4]
+ lsl r1, r1, #4
+ str r0, [r3, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #7
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ ldr r0, [r2, #4]
+ sub r1, #0x1c
+ ldr r0, [r0, r1]
+ mov r1, #0x32
+ mov r2, #0x12
+ bl FUN_02008FEC
+ ldr r2, _0223ECB4 ; =0x022513A0
+ mov r1, #0x69
+ ldr r3, [r2, #4]
+ lsl r1, r1, #2
+ str r0, [r3, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r0, [r2, #4]
+ sub r1, #0x1c
+ ldr r0, [r0, r1]
+ mov r1, #0x32
+ mov r2, #0x10
+ bl FUN_020090AC
+ ldr r2, _0223ECB4 ; =0x022513A0
+ mov r1, #0x6a
+ ldr r3, [r2, #4]
+ lsl r1, r1, #2
+ str r0, [r3, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r0, [r2, #4]
+ sub r1, #0x1c
+ ldr r0, [r0, r1]
+ mov r1, #0x32
+ mov r2, #0xf
+ bl FUN_020090AC
+ ldr r1, _0223ECB4 ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0x6b
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223ECB4: .word 0x022513A0
+ thumb_func_end MOD18_0223EBF0
+
+ thumb_func_start MOD18_0223ECB8
+MOD18_0223ECB8: ; 0x0223ECB8
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ mov r7, #6
+ ldr r6, _0223ECD8 ; =0x022513A0
+ add r5, r4, #0
+ lsl r7, r7, #6
+_0223ECC4:
+ ldr r0, [r6, #4]
+ add r0, r0, r5
+ ldr r0, [r0, r7]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _0223ECC4
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223ECD8: .word 0x022513A0
+ thumb_func_end MOD18_0223ECB8
+
+ thumb_func_start MOD18_0223ECDC
+MOD18_0223ECDC: ; 0x0223ECDC
+ ldr r3, _0223ECE0 ; =0x0204F7FD
+ bx r3
+ .align 2, 0
+_0223ECE0: .word 0x0204F7FD
+ thumb_func_end MOD18_0223ECDC
+
+ thumb_func_start MOD18_0223ECE4
+MOD18_0223ECE4: ; 0x0223ECE4
+ ldr r0, _0223ECE8 ; =0x00000B48
+ bx lr
+ .align 2, 0
+_0223ECE8: .word 0x00000B48
+ thumb_func_end MOD18_0223ECE4
+
+ thumb_func_start MOD18_0223ECEC
+MOD18_0223ECEC: ; 0x0223ECEC
+ mov r0, #0x60
+ bx lr
+ thumb_func_end MOD18_0223ECEC
+
+ thumb_func_start MOD18_0223ECF0
+MOD18_0223ECF0: ; 0x0223ECF0
+ push {r3, r4}
+ ldr r3, _0223ED1C ; =0x022513A0
+ lsl r1, r1, #2
+ ldr r2, [r3, #4]
+ add r4, r2, r1
+ ldr r2, _0223ED20 ; =0x000007C4
+ ldr r4, [r4, r2]
+ cmp r4, #0
+ bne _0223ED08
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+_0223ED08:
+ ldrh r4, [r4]
+ strh r4, [r0]
+ ldr r3, [r3, #4]
+ add r1, r3, r1
+ ldr r1, [r1, r2]
+ ldrh r1, [r1, #2]
+ strh r1, [r0, #2]
+ pop {r3, r4}
+ bx lr
+ nop
+_0223ED1C: .word 0x022513A0
+_0223ED20: .word 0x000007C4
+ thumb_func_end MOD18_0223ECF0
+
+ thumb_func_start MOD18_0223ED24
+MOD18_0223ED24: ; 0x0223ED24
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldrh r1, [r4]
+ add r0, sp, #0
+ strh r1, [r0]
+ ldrh r1, [r4, #2]
+ strh r1, [r0, #2]
+ ldr r1, _0223ED8C ; =MOD18_0223ECF0
+ mov r0, #0xc0
+ bl MOD18_0223DC7C
+ add r0, sp, #0
+ bl MOD18_0223DC28
+ cmp r0, #0xc0
+ bge _0223ED8A
+ ldr r1, _0223ED90 ; =0x022513A0
+ mov r3, #0
+ ldr r5, [r1, #4]
+ ldr r1, _0223ED94 ; =0x000007C4
+_0223ED4C:
+ ldr r2, [r5, r1]
+ cmp r2, r4
+ beq _0223ED8A
+ add r3, r3, #1
+ add r5, r5, #4
+ cmp r3, #0xc0
+ blt _0223ED4C
+ mov r2, #0xbe
+ cmp r0, #0xbe
+ bgt _0223ED78
+ ldr r7, _0223ED90 ; =0x022513A0
+ ldr r6, _0223ED98 ; =0x000007C8
+ lsl r3, r2, #2
+_0223ED66:
+ ldr r1, [r7, #4]
+ ldr r5, _0223ED94 ; =0x000007C4
+ add r1, r1, r3
+ ldr r5, [r1, r5]
+ sub r2, r2, #1
+ str r5, [r1, r6]
+ sub r3, r3, #4
+ cmp r2, r0
+ bge _0223ED66
+_0223ED78:
+ ldr r1, _0223ED90 ; =0x022513A0
+ lsl r3, r0, #2
+ ldr r0, [r1, #4]
+ add r2, r0, r3
+ ldr r0, _0223ED94 ; =0x000007C4
+ str r4, [r2, r0]
+ ldr r1, [r1, #4]
+ add r1, r1, r3
+ str r4, [r1, r0]
+_0223ED8A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223ED8C: .word MOD18_0223ECF0
+_0223ED90: .word 0x022513A0
+_0223ED94: .word 0x000007C4
+_0223ED98: .word 0x000007C8
+ thumb_func_end MOD18_0223ED24
+
+ thumb_func_start MOD18_0223ED9C
+MOD18_0223ED9C: ; 0x0223ED9C
+ push {r3, r4, r5, r6}
+ ldr r2, _0223EDF0 ; =0x022513A0
+ mov r1, #0
+ ldr r5, [r2, #4]
+ ldr r2, _0223EDF4 ; =0x000007C4
+ mvn r1, r1
+ mov r4, #0
+_0223EDAA:
+ ldr r3, [r5, r2]
+ cmp r3, r0
+ bne _0223EDB4
+ add r1, r4, #0
+ b _0223EDBC
+_0223EDB4:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xc0
+ blt _0223EDAA
+_0223EDBC:
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ beq _0223EDEC
+ cmp r1, #0xbf
+ bge _0223EDE0
+ ldr r0, _0223EDF8 ; =0x000007C8
+ ldr r3, _0223EDF0 ; =0x022513A0
+ lsl r6, r1, #2
+ sub r2, r0, #4
+_0223EDD0:
+ ldr r4, [r3, #4]
+ add r1, r1, #1
+ add r5, r4, r6
+ ldr r4, [r5, r0]
+ add r6, r6, #4
+ str r4, [r5, r2]
+ cmp r1, #0xbf
+ blt _0223EDD0
+_0223EDE0:
+ ldr r0, _0223EDF0 ; =0x022513A0
+ mov r2, #0
+ ldr r1, [r0, #4]
+ mov r0, #0x2b
+ lsl r0, r0, #6
+ str r2, [r1, r0]
+_0223EDEC:
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+_0223EDF0: .word 0x022513A0
+_0223EDF4: .word 0x000007C4
+_0223EDF8: .word 0x000007C8
+ thumb_func_end MOD18_0223ED9C
+
+ thumb_func_start MOD18_0223EDFC
+MOD18_0223EDFC: ; 0x0223EDFC
+ push {r3, r4, r5, r6, r7, lr}
+ lsl r5, r0, #4
+ ldr r7, _0223EE58 ; =0x022513A0
+ mov r6, #0
+ add r4, r5, #0
+_0223EE06:
+ mov r0, #0xd1
+ ldr r1, [r7, #4]
+ lsl r0, r0, #2
+ add r1, r1, r0
+ mov r0, #6
+ mul r0, r4
+ add r0, r1, r0
+ bl MOD18_0223ED9C
+ add r6, r6, #1
+ add r4, r4, #1
+ cmp r6, #0x10
+ blt _0223EE06
+ mov r6, #0
+ mov r0, #6
+ add r7, r5, #0
+ add r4, r6, #0
+ mul r7, r0
+_0223EE2A:
+ ldr r0, _0223EE58 ; =0x022513A0
+ ldr r0, [r0, #4]
+ add r1, r7, r0
+ add r2, r4, r1
+ mov r1, #0xd2
+ lsl r1, r1, #2
+ ldrb r1, [r2, r1]
+ cmp r1, #0
+ beq _0223EE4C
+ mov r1, #0xd1
+ lsl r1, r1, #2
+ add r1, r0, r1
+ mov r0, #6
+ mul r0, r5
+ add r0, r1, r0
+ bl MOD18_0223ED24
+_0223EE4C:
+ add r6, r6, #1
+ add r4, r4, #6
+ add r5, r5, #1
+ cmp r6, #0x10
+ blt _0223EE2A
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223EE58: .word 0x022513A0
+ thumb_func_end MOD18_0223EDFC
+
+ thumb_func_start MOD18_0223EE5C
+MOD18_0223EE5C: ; 0x0223EE5C
+ mov r2, #0
+_0223EE5E:
+ ldrb r1, [r0, #4]
+ cmp r1, #0
+ beq _0223EE6E
+ add r2, r2, #1
+ add r0, r0, #6
+ cmp r2, #0x10
+ blt _0223EE5E
+ mov r0, #0
+_0223EE6E:
+ bx lr
+ thumb_func_end MOD18_0223EE5C
+
+ thumb_func_start MOD18_0223EE70
+MOD18_0223EE70: ; 0x0223EE70
+ mov r2, #0
+_0223EE72:
+ ldrb r1, [r0, #4]
+ cmp r1, #0
+ bne _0223EE7C
+ add r0, r2, #0
+ bx lr
+_0223EE7C:
+ add r2, r2, #1
+ add r0, r0, #6
+ cmp r2, #0x10
+ blt _0223EE72
+ mov r0, #0
+ mvn r0, r0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_0223EE70
+
+ thumb_func_start MOD18_0223EE8C
+MOD18_0223EE8C: ; 0x0223EE8C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ ldr r1, _0223EF04 ; =0x022513A0
+ ldr r6, [r1, #4]
+ mov r1, #0xd1
+ lsl r1, r1, #2
+ add r1, r6, r1
+ sub r0, r0, r1
+ mov r1, #6
+ bl _u32_div_f
+ add r4, r0, #0
+ lsr r0, r4, #4
+ str r0, [sp, #4]
+ add r0, r0, #1
+ lsl r0, r0, #4
+ str r0, [sp]
+ mov r0, #6
+ add r5, r4, #0
+ mul r5, r0
+ mov r0, #0xd2
+ mov r2, #0
+ add r1, r6, r5
+ lsl r0, r0, #2
+ strb r2, [r1, r0]
+ ldr r0, [sp]
+ sub r6, r0, #1
+ cmp r4, r6
+ bhs _0223EEE8
+ ldr r7, _0223EF04 ; =0x022513A0
+_0223EEC8:
+ mov r0, #0xd1
+ ldr r1, [r7, #4]
+ lsl r0, r0, #2
+ add r1, r1, r0
+ add r2, r4, #1
+ mov r0, #6
+ mul r0, r2
+ add r0, r1, r0
+ add r1, r1, r5
+ mov r2, #6
+ bl MI_CpuCopy8
+ add r4, r4, #1
+ add r5, r5, #6
+ cmp r4, r6
+ blo _0223EEC8
+_0223EEE8:
+ ldr r1, _0223EF04 ; =0x022513A0
+ mov r2, #6
+ ldr r3, [r1, #4]
+ ldr r1, [sp]
+ mov r0, #0
+ mul r2, r1
+ ldr r1, _0223EF08 ; =0x00000342
+ add r2, r3, r2
+ strb r0, [r2, r1]
+ ldr r0, [sp, #4]
+ bl MOD18_0223EDFC
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223EF04: .word 0x022513A0
+_0223EF08: .word 0x00000342
+ thumb_func_end MOD18_0223EE8C
+
+ thumb_func_start MOD18_0223EF0C
+MOD18_0223EF0C: ; 0x0223EF0C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _0223EF5C ; =0x022513A0
+ add r6, r1, #0
+ ldr r0, [r0, #4]
+ add r7, r2, #0
+ ldr r0, [r0, #0x40]
+ add r1, r5, #0
+ add r2, r6, #0
+ str r3, [sp]
+ bl FUN_0204A6B4
+ cmp r0, #0
+ beq _0223EF2C
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0223EF2C:
+ add r0, r7, #0
+ bl MOD18_0223EE5C
+ add r4, r0, #0
+ bne _0223EF4A
+ add r0, r7, #0
+ bl MOD18_02240330
+ add r4, r0, #0
+ bl MOD18_0223EE8C
+ add r0, r4, #0
+ bl MOD18_0223EE5C
+ add r4, r0, #0
+_0223EF4A:
+ strh r5, [r4]
+ ldr r0, [sp]
+ strh r6, [r4, #2]
+ strb r0, [r4, #4]
+ add r0, r4, #0
+ bl MOD18_0223ED24
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223EF5C: .word 0x022513A0
+ thumb_func_end MOD18_0223EF0C
+
+ thumb_func_start MOD18_0223EF60
+MOD18_0223EF60: ; 0x0223EF60
+ push {r0, r1, r2, r3}
+ push {r3, lr}
+ mov r0, #0x20
+ add r1, sp, #8
+ bl FUN_020311D0
+ pop {r3}
+ pop {r3}
+ add sp, #0x10
+ bx r3
+ thumb_func_end MOD18_0223EF60
+
+ thumb_func_start MOD18_0223EF74
+MOD18_0223EF74: ; 0x0223EF74
+ ldr r3, _0223EF78 ; =MOD18_02240C8C
+ bx r3
+ .align 2, 0
+_0223EF78: .word MOD18_02240C8C
+ thumb_func_end MOD18_0223EF74
+
+ thumb_func_start MOD18_0223EF7C
+MOD18_0223EF7C: ; 0x0223EF7C
+ ldr r1, _0223EF90 ; =0x022513A0
+ ldr r3, _0223EF94 ; =0x0203105D
+ ldr r2, [r1, #4]
+ mov r1, #0xa9
+ lsl r1, r1, #2
+ add r1, r2, r1
+ mov r0, #0x23
+ mov r2, #0x60
+ bx r3
+ nop
+_0223EF90: .word 0x022513A0
+_0223EF94: .word 0x0203105D
+ thumb_func_end MOD18_0223EF7C
+
+ thumb_func_start MOD18_0223EF98
+MOD18_0223EF98: ; 0x0223EF98
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ ldr r1, _0223F0BC ; =0x022513A0
+ add r5, r0, #0
+ ldr r1, [r1, #4]
+ add r7, r2, #0
+ cmp r1, #0
+ bne _0223EFAA
+ b _0223F0B6
+_0223EFAA:
+ add r1, sp, #0
+ strb r5, [r1, #6]
+ mov r2, #3
+ strb r2, [r1, #7]
+ bl FUN_0204E62C
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_0204E664
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0204E544
+ ldr r1, _0223F0C0 ; =0x0000FFFF
+ cmp r0, r1
+ bne _0223EFEC
+ add r0, r5, #0
+ bl FUN_0204E598
+ ldr r1, _0223F0C0 ; =0x0000FFFF
+ cmp r0, r1
+ bne _0223EFEC
+ mov r1, #7
+ add r0, sp, #0
+ strb r1, [r0, #7]
+ mov r0, #0x22
+ add r1, sp, #0
+ mov r2, #8
+ bl FUN_02030BC4
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_0223EFEC:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0204E8B0
+ cmp r0, #0xff
+ beq _0223F00C
+ mov r1, #5
+ add r0, sp, #0
+ strb r1, [r0, #7]
+ mov r0, #0x22
+ add r1, sp, #0
+ mov r2, #8
+ bl FUN_02030BC4
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_0223F00C:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0204D76C
+ cmp r0, #0
+ beq _0223F02C
+ mov r1, #5
+ add r0, sp, #0
+ strb r1, [r0, #7]
+ mov r0, #0x22
+ add r1, sp, #0
+ mov r2, #8
+ bl FUN_02030BC4
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_0223F02C:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ beq _0223F04C
+ mov r1, #4
+ add r0, sp, #0
+ strb r1, [r0, #7]
+ mov r0, #0x22
+ add r1, sp, #0
+ mov r2, #8
+ bl FUN_02030BC4
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_0223F04C:
+ ldr r0, _0223F0BC ; =0x022513A0
+ add r1, r6, #0
+ ldr r0, [r0, #4]
+ add r2, r4, #0
+ ldr r0, [r0, #0x40]
+ bl FUN_0204A6B4
+ cmp r0, #0
+ beq _0223F072
+ mov r1, #6
+ add r0, sp, #0
+ strb r1, [r0, #7]
+ mov r0, #0x22
+ add r1, sp, #0
+ mov r2, #8
+ bl FUN_02030BC4
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_0223F072:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD18_0223D8A8
+ cmp r0, #0
+ bne _0223F0AC
+ ldr r2, _0223F0BC ; =0x022513A0
+ add r1, r4, #0
+ ldr r3, [r2, #4]
+ mov r2, #0xd1
+ lsl r2, r2, #2
+ add r2, r3, r2
+ lsl r4, r5, #4
+ mov r3, #6
+ mul r3, r4
+ add r2, r2, r3
+ ldrb r3, [r7]
+ add r0, r6, #0
+ bl MOD18_0223EF0C
+ cmp r0, #0
+ beq _0223F0AC
+ mov r2, #1
+ add r1, sp, #0
+ strb r2, [r1, #7]
+ add r1, sp, #0
+ mov r2, #6
+ bl MI_CpuCopy8
+_0223F0AC:
+ mov r0, #0x22
+ add r1, sp, #0
+ mov r2, #8
+ bl FUN_02030BC4
+_0223F0B6:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223F0BC: .word 0x022513A0
+_0223F0C0: .word 0x0000FFFF
+ thumb_func_end MOD18_0223EF98
+
+ thumb_func_start MOD18_0223F0C4
+MOD18_0223F0C4: ; 0x0223F0C4
+ mov r0, #8
+ bx lr
+ thumb_func_end MOD18_0223F0C4
+
+ thumb_func_start MOD18_0223F0C8
+MOD18_0223F0C8: ; 0x0223F0C8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp, #4]
+ ldr r0, _0223F16C ; =0x022513A0
+ str r1, [sp, #8]
+ ldr r0, [r0, #4]
+ add r7, r2, #0
+ ldr r0, [r0, #0x40]
+ add r5, r3, #0
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ str r0, [sp, #0xc]
+ cmp r5, #0x40
+ blt _0223F0EC
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0223F0EC:
+ ldr r0, _0223F16C ; =0x022513A0
+ ldr r2, [r7, #4]
+ ldr r1, [r0, #4]
+ mov r0, #0xd1
+ lsl r0, r0, #2
+ add r4, r1, r0
+ asr r0, r5, #3
+ lsr r0, r0, #0x1c
+ add r0, r5, r0
+ asr r0, r0, #4
+ add r0, #8
+ lsl r1, r0, #4
+ add r6, r1, #0
+ mov r0, #6
+ ldr r1, [r7]
+ mul r6, r0
+ ldr r0, [r7, #8]
+ mul r1, r2
+ add r0, r0, r1
+ str r0, [r7]
+ lsr r1, r0, #0x10
+ mov r0, #0x1a
+ mul r0, r1
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r0, _0223F170 ; =0x02250460
+ ldrb r7, [r0, r1]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ bl MOD18_0223D8A8
+ cmp r0, #0
+ bne _0223F166
+ add r0, r4, r6
+ bl MOD18_0223EE5C
+ cmp r0, #0
+ beq _0223F166
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #8]
+ add r2, r4, r6
+ add r3, r7, #0
+ bl MOD18_0223EF0C
+ cmp r0, #0
+ beq _0223F166
+ strb r5, [r0, #5]
+ ldr r0, [sp, #8]
+ ldr r3, [sp, #4]
+ str r0, [sp]
+ ldr r0, [sp, #0xc]
+ add r1, r7, #0
+ add r2, r5, #0
+ bl FUN_0202630C
+ add sp, #0x10
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0223F166:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223F16C: .word 0x022513A0
+_0223F170: .word 0x02250460
+ thumb_func_end MOD18_0223F0C8
+
+ thumb_func_start MOD18_0223F174
+MOD18_0223F174: ; 0x0223F174
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r0, _0223F1D8 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ add r5, r0, #0
+ mov r4, #0
+_0223F186:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02026354
+ add r7, r0, #0
+ beq _0223F1D0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02026370
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_0202639C
+ ldr r2, _0223F1D8 ; =0x022513A0
+ add r1, r0, #0
+ ldr r3, [r2, #4]
+ mov r2, #0xd1
+ lsl r2, r2, #2
+ add r2, r3, r2
+ asr r3, r4, #3
+ lsr r3, r3, #0x1c
+ add r3, r4, r3
+ asr r3, r3, #4
+ add r3, #8
+ add r0, r6, #0
+ lsl r6, r3, #4
+ mov r3, #6
+ mul r3, r6
+ add r2, r2, r3
+ add r3, r7, #0
+ bl MOD18_0223EF0C
+ cmp r0, #0
+ beq _0223F1D0
+ strb r4, [r0, #5]
+_0223F1D0:
+ add r4, r4, #1
+ cmp r4, #0x40
+ blt _0223F186
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223F1D8: .word 0x022513A0
+ thumb_func_end MOD18_0223F174
+
+ thumb_func_start MOD18_0223F1DC
+MOD18_0223F1DC: ; 0x0223F1DC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ ldr r0, _0223F228 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ mov r4, #0
+ add r7, r0, #0
+ add r5, r4, #0
+_0223F1F4:
+ ldr r0, _0223F228 ; =0x022513A0
+ mov r1, #0xaa
+ ldr r0, [r0, #4]
+ mov r3, #0xa9
+ add r6, r0, r5
+ ldr r0, _0223F22C ; =0x000002A6
+ lsl r1, r1, #2
+ ldrh r0, [r6, r0]
+ lsl r3, r3, #2
+ add r2, r4, #0
+ str r0, [sp]
+ ldr r0, _0223F230 ; =0x000002A9
+ ldrb r0, [r6, r0]
+ str r0, [sp, #4]
+ ldrb r1, [r6, r1]
+ ldrh r3, [r6, r3]
+ add r0, r7, #0
+ bl FUN_020263F4
+ add r4, r4, #1
+ add r5, r5, #6
+ cmp r4, #0x10
+ blt _0223F1F4
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223F228: .word 0x022513A0
+_0223F22C: .word 0x000002A6
+_0223F230: .word 0x000002A9
+ thumb_func_end MOD18_0223F1DC
+
+ thumb_func_start MOD18_0223F234
+MOD18_0223F234: ; 0x0223F234
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, _0223F2A8 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa9
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD18_0223EE5C
+ add r5, r0, #0
+ bne _0223F26C
+ ldr r0, _0223F2A8 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa9
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD18_02240330
+ bl MOD18_0223F2AC
+ ldr r0, _0223F2A8 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa9
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD18_0223EE5C
+ add r5, r0, #0
+_0223F26C:
+ ldr r0, _0223F2A8 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa9
+ lsl r0, r0, #2
+ add r0, r1, r0
+ bl MOD18_0223EE70
+ add r4, r0, #0
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r2, #6
+ bl MI_CpuCopy8
+ bl MOD18_0223F1DC
+ ldrh r0, [r5]
+ ldrh r1, [r5, #2]
+ ldrb r3, [r5, #4]
+ mov r2, #1
+ bl MOD18_022402F8
+ ldr r1, _0223F2A8 ; =0x022513A0
+ ldr r2, [r1, #4]
+ lsl r1, r4, #2
+ add r2, r2, r1
+ mov r1, #0xc1
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ pop {r4, r5, r6, pc}
+ nop
+_0223F2A8: .word 0x022513A0
+ thumb_func_end MOD18_0223F234
+
+ thumb_func_start MOD18_0223F2AC
+MOD18_0223F2AC: ; 0x0223F2AC
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r2, _0223F358 ; =0x022513A0
+ mov r6, #0
+ ldr r3, [r2, #4]
+ mov r2, #0xa9
+ lsl r2, r2, #2
+ add r2, r3, r2
+ ldrh r3, [r0]
+ mvn r6, r6
+ mov r1, #0
+_0223F2C0:
+ ldrh r4, [r2]
+ cmp r3, r4
+ bne _0223F2D2
+ ldrh r5, [r0, #2]
+ ldrh r4, [r2, #2]
+ cmp r5, r4
+ bne _0223F2D2
+ add r6, r1, #0
+ b _0223F2DA
+_0223F2D2:
+ add r1, r1, #1
+ add r2, r2, #6
+ cmp r1, #0x10
+ blt _0223F2C0
+_0223F2DA:
+ mov r0, #0
+ mvn r0, r0
+ cmp r6, r0
+ beq _0223F354
+ add r5, r6, #0
+ cmp r6, #0xf
+ bge _0223F310
+ mov r0, #6
+ add r4, r6, #0
+ ldr r7, _0223F358 ; =0x022513A0
+ mul r4, r0
+_0223F2F0:
+ mov r0, #0xa9
+ ldr r1, [r7, #4]
+ lsl r0, r0, #2
+ add r1, r1, r0
+ add r2, r5, #1
+ mov r0, #6
+ mul r0, r2
+ add r0, r1, r0
+ add r1, r1, r4
+ mov r2, #6
+ bl MI_CpuCopy8
+ add r5, r5, #1
+ add r4, r4, #6
+ cmp r5, #0xf
+ blt _0223F2F0
+_0223F310:
+ ldr r1, _0223F358 ; =0x022513A0
+ ldr r0, _0223F35C ; =0x00000302
+ ldr r2, [r1, #4]
+ mov r3, #0
+ strb r3, [r2, r0]
+ ldr r1, [r1, #4]
+ lsl r4, r6, #2
+ add r1, r1, r4
+ add r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0223F32C
+ bl FUN_02064520
+_0223F32C:
+ cmp r6, #0xf
+ bge _0223F348
+ mov r0, #0xc2
+ lsl r0, r0, #2
+ ldr r2, _0223F358 ; =0x022513A0
+ sub r1, r0, #4
+_0223F338:
+ ldr r3, [r2, #4]
+ add r6, r6, #1
+ add r5, r3, r4
+ ldr r3, [r5, r0]
+ add r4, r4, #4
+ str r3, [r5, r1]
+ cmp r6, #0xf
+ blt _0223F338
+_0223F348:
+ ldr r0, _0223F358 ; =0x022513A0
+ mov r2, #0
+ ldr r1, [r0, #4]
+ mov r0, #0xd
+ lsl r0, r0, #6
+ str r2, [r1, r0]
+_0223F354:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223F358: .word 0x022513A0
+_0223F35C: .word 0x00000302
+ thumb_func_end MOD18_0223F2AC
+
+ thumb_func_start MOD18_0223F360
+MOD18_0223F360: ; 0x0223F360
+ push {r4, lr}
+ add r4, r2, #0
+ bl FUN_02031190
+ ldrb r1, [r4, #6]
+ cmp r1, r0
+ bne _0223F3FA
+ bl FUN_0204F7E4
+ ldrb r0, [r4, #7]
+ cmp r0, #1
+ bne _0223F3A4
+ add r0, r4, #0
+ bl MOD18_0223F234
+ ldrb r0, [r4, #4]
+ bl MOD18_02249AD8
+ bl MOD18_0223D638
+ ldrb r1, [r4, #4]
+ bl MOD18_0224DDE8
+ bl MOD18_0223D638
+ ldr r3, _0223F3FC ; =MOD18_0223ECDC
+ mov r1, #0x83
+ mov r2, #1
+ bl MOD18_0224DCB8
+ ldr r0, _0223F400 ; =0x00000623
+ bl FUN_020054C8
+ pop {r4, pc}
+_0223F3A4:
+ cmp r0, #4
+ bne _0223F3B8
+ bl MOD18_0223D638
+ ldr r3, _0223F3FC ; =MOD18_0223ECDC
+ mov r1, #0x49
+ mov r2, #1
+ bl MOD18_0224DCB8
+ pop {r4, pc}
+_0223F3B8:
+ cmp r0, #5
+ bne _0223F3CC
+ bl MOD18_0223D638
+ ldr r3, _0223F3FC ; =MOD18_0223ECDC
+ mov r1, #0x37
+ mov r2, #1
+ bl MOD18_0224DCB8
+ pop {r4, pc}
+_0223F3CC:
+ cmp r0, #6
+ bne _0223F3E0
+ bl MOD18_0223D638
+ ldr r3, _0223F3FC ; =MOD18_0223ECDC
+ mov r1, #0x3c
+ mov r2, #1
+ bl MOD18_0224DCB8
+ pop {r4, pc}
+_0223F3E0:
+ cmp r0, #7
+ bne _0223F3EC
+ mov r0, #0
+ bl MOD18_0223ECDC
+ pop {r4, pc}
+_0223F3EC:
+ bl MOD18_0223D638
+ ldr r3, _0223F3FC ; =MOD18_0223ECDC
+ mov r1, #0x3b
+ mov r2, #1
+ bl MOD18_0224DCB8
+_0223F3FA:
+ pop {r4, pc}
+ .align 2, 0
+_0223F3FC: .word MOD18_0223ECDC
+_0223F400: .word 0x00000623
+ thumb_func_end MOD18_0223F360
+
+ thumb_func_start MOD18_0223F404
+MOD18_0223F404: ; 0x0223F404
+ ldr r0, _0223F41C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xd1
+ lsl r0, r0, #2
+ add r3, r1, r0
+ ldrh r1, [r2]
+ mov r0, #6
+ mul r0, r1
+ add r0, r3, r0
+ ldr r3, _0223F420 ; =MOD18_0223EE8C
+ bx r3
+ nop
+_0223F41C: .word 0x022513A0
+_0223F420: .word MOD18_0223EE8C
+ thumb_func_end MOD18_0223F404
+
+ thumb_func_start MOD18_0223F424
+MOD18_0223F424: ; 0x0223F424
+ mov r0, #2
+ bx lr
+ thumb_func_end MOD18_0223F424
+
+ thumb_func_start MOD18_0223F428
+MOD18_0223F428: ; 0x0223F428
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ lsl r1, r0, #4
+ str r0, [sp]
+ mov r0, #6
+ add r7, r1, #0
+ mul r7, r0
+ ldr r0, _0223F4A4 ; =0x022513A0
+ add r5, r2, #0
+ ldr r1, [r0, #4]
+ mov r0, #0xd1
+ lsl r0, r0, #2
+ add r0, r1, r0
+ add r6, r0, r7
+ bl FUN_02031190
+ cmp r0, #0
+ bne _0223F49E
+ cmp r4, #0x60
+ beq _0223F456
+ bl ErrorHandling
+_0223F456:
+ mov r0, #0
+ add r4, r0, #0
+_0223F45A:
+ add r0, r0, #1
+ strb r4, [r6, #4]
+ add r6, r6, #6
+ cmp r0, #0x10
+ blt _0223F45A
+_0223F464:
+ ldrb r3, [r5, #4]
+ cmp r3, #0
+ beq _0223F47E
+ ldr r2, _0223F4A4 ; =0x022513A0
+ ldrh r0, [r5]
+ ldr r6, [r2, #4]
+ mov r2, #0xd1
+ lsl r2, r2, #2
+ add r2, r6, r2
+ ldrh r1, [r5, #2]
+ add r2, r2, r7
+ bl MOD18_0223EF0C
+_0223F47E:
+ add r4, r4, #1
+ add r5, r5, #6
+ cmp r4, #0x10
+ blt _0223F464
+ ldr r0, [sp]
+ add r1, sp, #4
+ strb r0, [r1]
+ mov r0, #1
+ strb r0, [r1, #1]
+ mov r0, #0x24
+ add r1, sp, #4
+ mov r2, #2
+ bl FUN_02030BC4
+ bl MOD18_0223FAC4
+_0223F49E:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223F4A4: .word 0x022513A0
+ thumb_func_end MOD18_0223F428
+
+ thumb_func_start MOD18_0223F4A8
+MOD18_0223F4A8: ; 0x0223F4A8
+ push {r4, lr}
+ ldr r0, _0223F4CC ; =0x022513A0
+ add r4, r2, #0
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _0223F4C8
+ bl FUN_02031190
+ ldrb r1, [r4]
+ cmp r1, r0
+ bne _0223F4C8
+ ldr r0, _0223F4CC ; =0x022513A0
+ ldrb r2, [r4, #1]
+ ldr r1, [r0, #4]
+ ldr r0, _0223F4D0 ; =0x00000B45
+ strb r2, [r1, r0]
+_0223F4C8:
+ pop {r4, pc}
+ nop
+_0223F4CC: .word 0x022513A0
+_0223F4D0: .word 0x00000B45
+ thumb_func_end MOD18_0223F4A8
+
+ thumb_func_start MOD18_0223F4D4
+MOD18_0223F4D4: ; 0x0223F4D4
+ mov r0, #2
+ bx lr
+ thumb_func_end MOD18_0223F4D4
+
+ thumb_func_start MOD18_0223F4D8
+MOD18_0223F4D8: ; 0x0223F4D8
+ ldr r0, _0223F4EC ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, _0223F4F0 ; =0x00000B45
+ ldrb r0, [r1, r0]
+ cmp r0, #1
+ bne _0223F4E8
+ mov r0, #1
+ bx lr
+_0223F4E8:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0223F4EC: .word 0x022513A0
+_0223F4F0: .word 0x00000B45
+ thumb_func_end MOD18_0223F4D8
+
+ thumb_func_start MOD18_0223F4F4
+MOD18_0223F4F4: ; 0x0223F4F4
+ ldr r0, _0223F500 ; =0x022513A0
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _0223F504 ; =0x00000B45
+ strb r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_0223F500: .word 0x022513A0
+_0223F504: .word 0x00000B45
+ thumb_func_end MOD18_0223F4F4
+
+ thumb_func_start MOD18_0223F508
+MOD18_0223F508: ; 0x0223F508
+ mov r0, #4
+ bx lr
+ thumb_func_end MOD18_0223F508
+
+ thumb_func_start MOD18_0223F50C
+MOD18_0223F50C: ; 0x0223F50C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, _0223F5C4 ; =0x022513A0
+ add r6, r2, #0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r7, r0, #0
+ add r0, r5, #0
+ bl FUN_0204E62C
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0204E664
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD18_0223F728
+ add r4, r0, #0
+ beq _0223F5BE
+ add r0, r5, #0
+ bl FUN_0204F210
+ cmp r0, #0
+ beq _0223F54E
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223F54E:
+ add r3, sp, #0
+ ldrb r2, [r3, #7]
+ mov r0, #0xf
+ bic r2, r0
+ lsl r0, r5, #0x18
+ lsr r1, r0, #0x18
+ mov r0, #0xf
+ and r0, r1
+ orr r0, r2
+ strb r0, [r3, #7]
+ add r0, r4, #0
+ bl MOD18_0223F6F8
+ add r1, sp, #0
+ strb r0, [r1, #6]
+ add r0, r4, #0
+ add r1, sp, #0
+ mov r2, #6
+ bl MI_CpuCopy8
+ mov r0, #0x10
+ tst r0, r6
+ add r1, sp, #0
+ beq _0223F588
+ ldrb r2, [r1, #7]
+ mov r0, #0x40
+ orr r0, r2
+ strb r0, [r1, #7]
+ b _0223F596
+_0223F588:
+ ldrb r2, [r1, #7]
+ mov r0, #0x40
+ bic r2, r0
+ add r0, r4, #0
+ strb r2, [r1, #7]
+ bl MOD18_0223EE8C
+_0223F596:
+ add r1, sp, #0
+ ldrb r0, [r1, #6]
+ cmp r0, #8
+ blo _0223F5A6
+ ldrb r1, [r1, #5]
+ add r0, r7, #0
+ bl FUN_020263C8
+_0223F5A6:
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ mov r0, #0x33
+ add r1, sp, #0
+ mov r2, #8
+ bl FUN_02030BC4
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223F5BE:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223F5C4: .word 0x022513A0
+ thumb_func_end MOD18_0223F50C
+
+ thumb_func_start MOD18_0223F5C8
+MOD18_0223F5C8: ; 0x0223F5C8
+ mov r0, #8
+ bx lr
+ thumb_func_end MOD18_0223F5C8
+
+ thumb_func_start MOD18_0223F5CC
+MOD18_0223F5CC: ; 0x0223F5CC
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ ldrb r0, [r4, #7]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ cmp r0, #8
+ blo _0223F5DE
+ bl ErrorHandling
+_0223F5DE:
+ ldrb r3, [r4, #7]
+ lsl r0, r3, #0x19
+ lsr r0, r0, #0x1f
+ cmp r0, #1
+ bne _0223F60A
+ bl FUN_02031190
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ cmp r1, r0
+ bne _0223F6DC
+ bl MOD18_0223D638
+ ldr r3, _0223F6E0 ; =MOD18_0223ECDC
+ mov r1, #0x4e
+ mov r2, #1
+ bl MOD18_0224DCB8
+ bl FUN_0204F7E4
+ pop {r3, r4, r5, pc}
+_0223F60A:
+ ldr r1, _0223F6E4 ; =0x022513A0
+ mov r0, #1
+ ldr r2, [r1, #4]
+ lsl r1, r3, #0x1c
+ lsr r1, r1, #0x1c
+ add r2, r2, r1
+ ldr r1, _0223F6E8 ; =0x00000B2C
+ strb r0, [r2, r1]
+ bl FUN_02031190
+ ldrb r1, [r4, #6]
+ cmp r1, r0
+ bne _0223F62E
+ add r0, r4, #0
+ bl MOD18_0223F2AC
+ bl MOD18_0223F1DC
+_0223F62E:
+ bl FUN_02031190
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ cmp r1, r0
+ bne _0223F6DC
+ ldrb r0, [r4, #4]
+ bl MOD18_022494A0
+ cmp r0, #0
+ beq _0223F6CA
+ bl FUN_02031190
+ ldrb r1, [r4, #6]
+ cmp r1, r0
+ beq _0223F674
+ ldr r0, _0223F6E4 ; =0x022513A0
+ ldr r2, [r0, #4]
+ ldr r0, _0223F6EC ; =0x00000B34
+ ldrh r1, [r2, r0]
+ cmp r1, #0
+ bne _0223F662
+ ldrb r1, [r4, #4]
+ add r0, r0, #2
+ strb r1, [r2, r0]
+_0223F662:
+ ldr r0, _0223F6E4 ; =0x022513A0
+ ldr r1, _0223F6F0 ; =0x0000FFFF
+ ldr r3, [r0, #4]
+ ldr r0, _0223F6EC ; =0x00000B34
+ ldrh r2, [r3, r0]
+ cmp r2, r1
+ beq _0223F674
+ add r1, r2, #1
+ strh r1, [r3, r0]
+_0223F674:
+ ldr r0, _0223F6F4 ; =0x000005E3
+ bl FUN_020054C8
+ bl MOD18_0223D638
+ add r5, r0, #0
+ ldrb r0, [r4, #7]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD18_0224DDA0
+ bl MOD18_0223D638
+ ldrb r2, [r4, #4]
+ mov r1, #2
+ bl MOD18_0224DF40
+ bl MOD18_0223D638
+ mov r1, #2
+ bl MOD18_0224DF54
+ bl MOD18_0223D638
+ ldrb r1, [r4, #4]
+ bl MOD18_0224DDE8
+ bl MOD18_0223D638
+ ldr r3, _0223F6E0 ; =MOD18_0223ECDC
+ mov r1, #0x12
+ mov r2, #1
+ bl MOD18_0224DCB8
+ bl MOD18_0223D638
+ bl MOD18_0224DD10
+ b _0223F6D8
+_0223F6CA:
+ bl MOD18_0223D638
+ ldr r3, _0223F6E0 ; =MOD18_0223ECDC
+ mov r1, #0x4e
+ mov r2, #1
+ bl MOD18_0224DCB8
+_0223F6D8:
+ bl FUN_0204F7E4
+_0223F6DC:
+ pop {r3, r4, r5, pc}
+ nop
+_0223F6E0: .word MOD18_0223ECDC
+_0223F6E4: .word 0x022513A0
+_0223F6E8: .word 0x00000B2C
+_0223F6EC: .word 0x00000B34
+_0223F6F0: .word 0x0000FFFF
+_0223F6F4: .word 0x000005E3
+ thumb_func_end MOD18_0223F5CC
+
+ thumb_func_start MOD18_0223F6F8
+MOD18_0223F6F8: ; 0x0223F6F8
+ push {r3, lr}
+ ldr r1, _0223F724 ; =0x022513A0
+ mov r3, #0
+ ldr r2, [r1, #4]
+ mov r1, #0xd1
+ lsl r1, r1, #2
+ add r1, r2, r1
+_0223F706:
+ cmp r1, r0
+ bne _0223F714
+ asr r0, r3, #3
+ lsr r0, r0, #0x1c
+ add r0, r3, r0
+ asr r0, r0, #4
+ pop {r3, pc}
+_0223F714:
+ add r3, r3, #1
+ add r1, r1, #6
+ cmp r3, #0xc0
+ blt _0223F706
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_0223F724: .word 0x022513A0
+ thumb_func_end MOD18_0223F6F8
+
+ thumb_func_start MOD18_0223F728
+MOD18_0223F728: ; 0x0223F728
+ push {r3, lr}
+ add r2, sp, #0
+ strh r0, [r2]
+ strh r1, [r2, #2]
+ ldr r1, _0223F758 ; =MOD18_0223ECF0
+ mov r0, #0xc0
+ bl MOD18_0223DC7C
+ add r0, sp, #0
+ bl MOD18_0223DBBC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _0223F74A
+ mov r0, #0
+ pop {r3, pc}
+_0223F74A:
+ ldr r1, _0223F75C ; =0x022513A0
+ lsl r0, r0, #2
+ ldr r1, [r1, #4]
+ add r1, r1, r0
+ ldr r0, _0223F760 ; =0x000007C4
+ ldr r0, [r1, r0]
+ pop {r3, pc}
+ .align 2, 0
+_0223F758: .word MOD18_0223ECF0
+_0223F75C: .word 0x022513A0
+_0223F760: .word 0x000007C4
+ thumb_func_end MOD18_0223F728
+
+ thumb_func_start MOD18_0223F764
+MOD18_0223F764: ; 0x0223F764
+ push {r3, lr}
+ bl MOD18_0223F728
+ cmp r0, #0
+ beq _0223F772
+ mov r0, #1
+ pop {r3, pc}
+_0223F772:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223F764
+
+ thumb_func_start MOD18_0223F778
+MOD18_0223F778: ; 0x0223F778
+ mov r0, #8
+ bx lr
+ thumb_func_end MOD18_0223F778
+
+ thumb_func_start MOD18_0223F77C
+MOD18_0223F77C: ; 0x0223F77C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, _0223F850 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD18_0223CAEC
+ cmp r0, #0
+ beq _0223F7A0
+ add sp, #8
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0223F7A0:
+ add r0, r4, #0
+ bl FUN_0204E544
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_0204E598
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD18_0223F728
+ add r5, r0, #0
+ bne _0223F7C0
+ add sp, #8
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0223F7C0:
+ ldr r0, _0223F850 ; =0x022513A0
+ ldr r0, [r0, #4]
+ add r1, r0, r4
+ ldr r0, _0223F854 ; =0x00000B3C
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _0223F7E4
+ add r0, r4, #0
+ bl FUN_0204E778
+ ldr r1, _0223F850 ; =0x022513A0
+ add r0, r4, #0
+ ldr r1, [r1, #4]
+ add r2, r1, r4
+ ldr r1, _0223F854 ; =0x00000B3C
+ ldrb r1, [r2, r1]
+ bl MOD18_0223FCD4
+_0223F7E4:
+ ldrb r1, [r5, #4]
+ add r0, r4, #0
+ bl MOD18_0223FCC0
+ add r0, sp, #0
+ ldrb r2, [r0, #7]
+ mov r1, #0x80
+ bic r2, r1
+ strb r2, [r0, #7]
+ ldrb r1, [r0, #7]
+ mov r2, #0xf
+ bic r1, r2
+ lsl r2, r4, #0x18
+ lsr r3, r2, #0x18
+ mov r2, #0xf
+ and r2, r3
+ orr r1, r2
+ strb r1, [r0, #7]
+ add r0, r5, #0
+ bl MOD18_0223F6F8
+ add r1, sp, #0
+ strb r0, [r1, #6]
+ add r0, r5, #0
+ add r1, sp, #0
+ mov r2, #6
+ bl MI_CpuCopy8
+ add r1, sp, #0
+ ldrb r0, [r1, #6]
+ cmp r0, #8
+ blo _0223F82C
+ ldrb r1, [r1, #5]
+ add r0, r6, #0
+ bl FUN_020263C8
+_0223F82C:
+ mov r0, #0x25
+ add r1, sp, #0
+ mov r2, #8
+ bl FUN_02030BC4
+ ldr r0, _0223F850 ; =0x022513A0
+ ldrb r2, [r5, #4]
+ ldr r0, [r0, #4]
+ add r1, r0, r4
+ ldr r0, _0223F854 ; =0x00000B3C
+ strb r2, [r1, r0]
+ add r0, r5, #0
+ bl MOD18_0223EE8C
+ mov r0, #1
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_0223F850: .word 0x022513A0
+_0223F854: .word 0x00000B3C
+ thumb_func_end MOD18_0223F77C
+
+ thumb_func_start MOD18_0223F858
+MOD18_0223F858: ; 0x0223F858
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r1, #0
+ ldr r1, _0223F8D0 ; =0x022513A0
+ add r5, r0, #0
+ ldr r1, [r1, #4]
+ add r4, r2, #0
+ add r2, r1, r5
+ ldr r1, _0223F8D4 ; =0x00000B3C
+ add r7, r3, #0
+ ldrb r1, [r2, r1]
+ cmp r1, #0
+ beq _0223F876
+ bl MOD18_0223FCD4
+_0223F876:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_0223FCC0
+ add r1, sp, #0
+ ldrb r3, [r1, #7]
+ mov r0, #0xf
+ bic r3, r0
+ lsl r0, r5, #0x18
+ lsr r2, r0, #0x18
+ mov r0, #0xf
+ and r0, r2
+ orr r0, r3
+ strb r0, [r1, #7]
+ strb r6, [r1, #6]
+ ldrb r2, [r1, #7]
+ mov r0, #0x80
+ orr r0, r2
+ strb r0, [r1, #7]
+ strb r4, [r1, #4]
+ ldr r0, [sp, #0x20]
+ strh r7, [r1]
+ strh r0, [r1, #2]
+ ldrb r0, [r1, #7]
+ mov r2, #0x30
+ bic r0, r2
+ ldr r2, [sp, #0x24]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ lsl r2, r2, #0x1e
+ lsr r2, r2, #0x1a
+ orr r0, r2
+ strb r0, [r1, #7]
+ mov r0, #0x25
+ add r1, sp, #0
+ mov r2, #8
+ bl FUN_02030BC4
+ ldr r0, _0223F8D0 ; =0x022513A0
+ ldr r0, [r0, #4]
+ add r1, r0, r5
+ ldr r0, _0223F8D4 ; =0x00000B3C
+ strb r4, [r1, r0]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223F8D0: .word 0x022513A0
+_0223F8D4: .word 0x00000B3C
+ thumb_func_end MOD18_0223F858
+
+ thumb_func_start MOD18_0223F8D8
+MOD18_0223F8D8: ; 0x0223F8D8
+ push {r4, lr}
+ ldr r1, _0223F8F8 ; =0x022513A0
+ add r4, r0, #0
+ ldr r1, [r1, #4]
+ cmp r1, #0
+ beq _0223F8F4
+ bl FUN_0204EB14
+ cmp r0, #0
+ beq _0223F8F4
+ add r0, r4, #0
+ bl MOD18_0223F77C
+ pop {r4, pc}
+_0223F8F4:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_0223F8F8: .word 0x022513A0
+ thumb_func_end MOD18_0223F8D8
+
+ thumb_func_start MOD18_0223F8FC
+MOD18_0223F8FC: ; 0x0223F8FC
+ ldr r1, _0223F910 ; =0x022513A0
+ lsl r0, r0, #3
+ ldr r1, [r1, #4]
+ add r1, r1, r0
+ ldr r0, _0223F914 ; =0x00000ACB
+ ldrb r0, [r1, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ bx lr
+ nop
+_0223F910: .word 0x022513A0
+_0223F914: .word 0x00000ACB
+ thumb_func_end MOD18_0223F8FC
+
+ thumb_func_start MOD18_0223F918
+MOD18_0223F918: ; 0x0223F918
+ push {r4, r5, r6, lr}
+ ldr r0, _0223FA60 ; =0x022513A0
+ add r4, r2, #0
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ bne _0223F926
+ b _0223FA5E
+_0223F926:
+ ldr r0, [r0, #0x40]
+ bl FUN_020377AC
+ bl FUN_02026CB4
+ add r6, r0, #0
+ ldr r0, _0223FA64 ; =0x00000622
+ bl FUN_020054C8
+ ldr r1, _0223FA60 ; =0x022513A0
+ add r0, r4, #0
+ ldr r2, [r1, #4]
+ ldr r1, _0223FA68 ; =0x00000AC4
+ add r1, r2, r1
+ ldrb r2, [r4, #7]
+ lsl r2, r2, #0x1c
+ lsr r2, r2, #0x19
+ add r1, r1, r2
+ mov r2, #8
+ bl MI_CpuCopy8
+ ldrb r0, [r4, #4]
+ sub r0, #0x18
+ cmp r0, #3
+ bhi _0223F9BC
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0223F964: ; jump table
+ .short _0223F96C - _0223F964 - 2 ; case 0
+ .short _0223F980 - _0223F964 - 2 ; case 1
+ .short _0223F994 - _0223F964 - 2 ; case 2
+ .short _0223F9A8 - _0223F964 - 2 ; case 3
+_0223F96C:
+ ldr r1, _0223FA60 ; =0x022513A0
+ mov r0, #0x75
+ ldr r2, [r1, #4]
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ add r2, r2, r1
+ ldr r1, _0223FA6C ; =0x00000B24
+ strb r0, [r2, r1]
+ b _0223F9D2
+_0223F980:
+ ldr r1, _0223FA60 ; =0x022513A0
+ mov r0, #0x76
+ ldr r2, [r1, #4]
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ add r2, r2, r1
+ ldr r1, _0223FA6C ; =0x00000B24
+ strb r0, [r2, r1]
+ b _0223F9D2
+_0223F994:
+ ldr r1, _0223FA60 ; =0x022513A0
+ mov r0, #0x77
+ ldr r2, [r1, #4]
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ add r2, r2, r1
+ ldr r1, _0223FA6C ; =0x00000B24
+ strb r0, [r2, r1]
+ b _0223F9D2
+_0223F9A8:
+ ldr r1, _0223FA60 ; =0x022513A0
+ mov r0, #0x78
+ ldr r2, [r1, #4]
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ add r2, r2, r1
+ ldr r1, _0223FA6C ; =0x00000B24
+ strb r0, [r2, r1]
+ b _0223F9D2
+_0223F9BC:
+ ldr r0, _0223FA60 ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, _0223FA70 ; =0x00000ACB
+ add r0, r1, r0
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #0x1c
+ lsr r3, r1, #0x19
+ ldrb r2, [r0, r3]
+ mov r1, #0x40
+ orr r1, r2
+ strb r1, [r0, r3]
+_0223F9D2:
+ ldrb r0, [r4, #7]
+ lsl r0, r0, #0x1c
+ lsr r5, r0, #0x1c
+ bl FUN_02031190
+ cmp r5, r0
+ bne _0223F9F4
+ ldrb r3, [r4, #7]
+ ldrb r1, [r4, #4]
+ add r0, r5, #0
+ lsl r2, r3, #0x18
+ lsl r3, r3, #0x1a
+ lsr r2, r2, #0x1f
+ lsr r3, r3, #0x1e
+ bl MOD18_0223FD54
+ b _0223F9FC
+_0223F9F4:
+ ldrb r1, [r4, #4]
+ add r0, r5, #0
+ bl MOD18_02243F5C
+_0223F9FC:
+ ldrb r0, [r4, #7]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ bl FUN_0204F074
+ bl FUN_02031190
+ ldrb r1, [r4, #7]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ cmp r1, r0
+ bne _0223FA1A
+ add r0, r6, #0
+ bl FUN_02026B20
+_0223FA1A:
+ ldrb r5, [r4, #6]
+ bl FUN_02031190
+ cmp r5, r0
+ bne _0223FA5E
+ ldrb r0, [r4, #7]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1c
+ cmp r5, r0
+ beq _0223FA34
+ add r0, r6, #0
+ bl FUN_02026AE8
+_0223FA34:
+ ldr r0, _0223FA60 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r5, r0, #0
+ bl FUN_0205F760
+ add r1, r0, #0
+ add r1, r1, #1
+ lsl r1, r1, #0x10
+ add r0, r5, #0
+ lsr r1, r1, #0x10
+ bl FUN_0205F770
+ add r0, r4, #0
+ bl MOD18_0223F2AC
+ bl MOD18_0223F1DC
+_0223FA5E:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0223FA60: .word 0x022513A0
+_0223FA64: .word 0x00000622
+_0223FA68: .word 0x00000AC4
+_0223FA6C: .word 0x00000B24
+_0223FA70: .word 0x00000ACB
+ thumb_func_end MOD18_0223F918
+
+ thumb_func_start MOD18_0223FA74
+MOD18_0223FA74: ; 0x0223FA74
+ push {r4, lr}
+ ldrb r2, [r2]
+ ldr r1, _0223FA9C ; =0x02250230
+ lsl r3, r2, #2
+ ldr r1, [r1, r3]
+ ldr r3, _0223FAA0 ; =0x022513A0
+ ldr r3, [r3, #4]
+ add r4, r3, r0
+ ldr r3, _0223FAA4 ; =0x00000B3C
+ ldrb r3, [r4, r3]
+ cmp r2, r3
+ beq _0223FA94
+ mov r0, #1
+ bl FUN_020335A4
+ pop {r4, pc}
+_0223FA94:
+ cmp r1, #0
+ beq _0223FA9A
+ blx r1
+_0223FA9A:
+ pop {r4, pc}
+ .align 2, 0
+_0223FA9C: .word 0x02250230
+_0223FAA0: .word 0x022513A0
+_0223FAA4: .word 0x00000B3C
+ thumb_func_end MOD18_0223FA74
+
+ thumb_func_start MOD18_0223FAA8
+MOD18_0223FAA8: ; 0x0223FAA8
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ ldrb r4, [r5]
+ bl FUN_02031190
+ cmp r4, r0
+ beq _0223FAC0
+ ldrb r1, [r5, #1]
+ ldrb r2, [r5, #2]
+ add r0, r4, #0
+ bl FUN_0204E214
+_0223FAC0:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223FAA8
+
+ thumb_func_start MOD18_0223FAC4
+MOD18_0223FAC4: ; 0x0223FAC4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ mov r0, #0
+ add r3, sp, #0
+ ldr r1, _0223FB00 ; =0x022513A0
+ strb r0, [r3]
+ ldr r1, [r1, #4]
+ cmp r1, #0
+ beq _0223FAFA
+ ldr r2, _0223FB04 ; =0x00000B3C
+ mov r4, #1
+_0223FADA:
+ ldrb r5, [r1, r2]
+ cmp r5, #0
+ beq _0223FAEA
+ add r5, r4, #0
+ ldrb r6, [r3]
+ lsl r5, r0
+ orr r5, r6
+ strb r5, [r3]
+_0223FAEA:
+ add r0, r0, #1
+ add r1, r1, #1
+ cmp r0, #8
+ blt _0223FADA
+ mov r0, #0x2d
+ add r1, sp, #0
+ bl FUN_02030C4C
+_0223FAFA:
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_0223FB00: .word 0x022513A0
+_0223FB04: .word 0x00000B3C
+ thumb_func_end MOD18_0223FAC4
+
+ thumb_func_start MOD18_0223FB08
+MOD18_0223FB08: ; 0x0223FB08
+ push {r4, r5, r6, lr}
+ ldr r0, _0223FB34 ; =0x022513A0
+ ldrb r5, [r2]
+ ldr r1, [r0, #4]
+ ldr r0, _0223FB38 ; =0x00000B3B
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _0223FB30
+ mov r4, #0
+ mov r6, #1
+_0223FB1C:
+ add r0, r6, #0
+ lsl r0, r4
+ tst r0, r5
+ beq _0223FB2A
+ add r0, r4, #0
+ bl FUN_0204F074
+_0223FB2A:
+ add r4, r4, #1
+ cmp r4, #8
+ blt _0223FB1C
+_0223FB30:
+ pop {r4, r5, r6, pc}
+ nop
+_0223FB34: .word 0x022513A0
+_0223FB38: .word 0x00000B3B
+ thumb_func_end MOD18_0223FB08
+
+ thumb_func_start MOD18_0223FB3C
+MOD18_0223FB3C: ; 0x0223FB3C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r7, _0223FC04 ; =0x022513A0
+ add r6, r0, #0
+ ldr r0, [r7, #4]
+ cmp r0, #0
+ bne _0223FB50
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_0223FB50:
+ mov r4, #0
+ mov r0, #0x40
+ add r5, r4, #0
+ str r0, [sp, #8]
+_0223FB58:
+ ldr r1, [r7, #4]
+ ldr r0, _0223FC08 ; =0x00000ACB
+ add r0, r1, r0
+ ldrb r2, [r0, r5]
+ lsl r1, r2, #0x19
+ lsr r1, r1, #0x1f
+ cmp r1, #1
+ bne _0223FBB4
+ ldr r1, [sp, #8]
+ bic r2, r1
+ strb r2, [r0, r5]
+ ldr r0, [r7, #4]
+ add r1, r0, r5
+ ldr r0, _0223FC0C ; =0x00000ACA
+ ldrb r0, [r1, r0]
+ cmp r0, #8
+ blo _0223FB94
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ mov r1, #0
+ mov r2, #0x63
+ add r3, r6, #0
+ bl MOD18_0223D744
+ cmp r0, #0
+ beq _0223FBB4
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0223FB94:
+ bl FUN_0202DFA4
+ str r0, [sp]
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ ldr r1, [sp]
+ mov r2, #0x64
+ add r3, r6, #0
+ bl MOD18_0223D6D8
+ cmp r0, #0
+ beq _0223FBB4
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0223FBB4:
+ ldr r0, [r7, #4]
+ add r1, r0, r4
+ ldr r0, _0223FC10 ; =0x00000B04
+ ldrb r0, [r1, r0]
+ cmp r0, #0xff
+ beq _0223FBF6
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ str r0, [sp, #4]
+ ldr r0, [r7, #4]
+ add r1, r0, r4
+ ldr r0, _0223FC10 ; =0x00000B04
+ ldrb r0, [r1, r0]
+ bl FUN_0202DFA4
+ add r3, r0, #0
+ ldr r0, [r7, #4]
+ mov r1, #0xff
+ add r2, r0, r4
+ ldr r0, _0223FC10 ; =0x00000B04
+ strb r1, [r2, r0]
+ add r1, r3, #0
+ ldr r0, [sp, #4]
+ mov r2, #0x74
+ add r3, r6, #0
+ bl MOD18_0223D6D8
+ cmp r0, #0
+ beq _0223FBF6
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0223FBF6:
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #8
+ blt _0223FB58
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223FC04: .word 0x022513A0
+_0223FC08: .word 0x00000ACB
+_0223FC0C: .word 0x00000ACA
+_0223FC10: .word 0x00000B04
+ thumb_func_end MOD18_0223FB3C
+
+ thumb_func_start MOD18_0223FC14
+MOD18_0223FC14: ; 0x0223FC14
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r6, _0223FCB0 ; =0x022513A0
+ add r5, r0, #0
+ ldr r0, [r6, #4]
+ cmp r0, #0
+ bne _0223FC24
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0223FC24:
+ mov r4, #0
+_0223FC26:
+ ldr r0, [r6, #4]
+ ldr r1, _0223FCB4 ; =0x00000B24
+ add r0, r0, r4
+ ldrb r7, [r0, r1]
+ cmp r7, #0
+ beq _0223FC4E
+ mov r2, #0
+ strb r2, [r0, r1]
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ mov r1, #0
+ add r2, r7, #0
+ add r3, r5, #0
+ bl MOD18_0223D744
+ cmp r0, #0
+ beq _0223FC4E
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223FC4E:
+ ldr r0, [r6, #4]
+ ldr r1, _0223FCB8 ; =0x00000B2C
+ add r0, r0, r4
+ ldrb r1, [r0, r1]
+ cmp r1, #1
+ bne _0223FC78
+ ldr r1, _0223FCB8 ; =0x00000B2C
+ mov r2, #0
+ strb r2, [r0, r1]
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ mov r1, #0
+ mov r2, #0x5a
+ add r3, r5, #0
+ bl MOD18_0223D744
+ cmp r0, #0
+ beq _0223FC78
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223FC78:
+ ldr r0, [r6, #4]
+ add r1, r0, r4
+ ldr r0, _0223FCBC ; =0x00000B1C
+ ldrb r0, [r1, r0]
+ cmp r0, #1
+ bne _0223FCA6
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ ldr r1, [r6, #4]
+ mov r2, #0
+ add r3, r1, r4
+ ldr r1, _0223FCBC ; =0x00000B1C
+ strb r2, [r3, r1]
+ add r1, r2, #0
+ mov r2, #0x62
+ add r3, r5, #0
+ bl MOD18_0223D744
+ cmp r0, #0
+ beq _0223FCA6
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223FCA6:
+ add r4, r4, #1
+ cmp r4, #8
+ blt _0223FC26
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223FCB0: .word 0x022513A0
+_0223FCB4: .word 0x00000B24
+_0223FCB8: .word 0x00000B2C
+_0223FCBC: .word 0x00000B1C
+ thumb_func_end MOD18_0223FC14
+
+ thumb_func_start MOD18_0223FCC0
+MOD18_0223FCC0: ; 0x0223FCC0
+ push {r3, lr}
+ lsl r2, r1, #2
+ ldr r1, _0223FCD0 ; =0x022501A4
+ ldr r1, [r1, r2]
+ cmp r1, #0
+ beq _0223FCCE
+ blx r1
+_0223FCCE:
+ pop {r3, pc}
+ .align 2, 0
+_0223FCD0: .word 0x022501A4
+ thumb_func_end MOD18_0223FCC0
+
+ thumb_func_start MOD18_0223FCD4
+MOD18_0223FCD4: ; 0x0223FCD4
+ push {r3, lr}
+ lsl r2, r1, #2
+ ldr r1, _0223FCE4 ; =0x022502BC
+ ldr r1, [r1, r2]
+ cmp r1, #0
+ beq _0223FCE2
+ blx r1
+_0223FCE2:
+ pop {r3, pc}
+ .align 2, 0
+_0223FCE4: .word 0x022502BC
+ thumb_func_end MOD18_0223FCD4
+
+ thumb_func_start MOD18_0223FCE8
+MOD18_0223FCE8: ; 0x0223FCE8
+ push {r4, lr}
+ ldr r2, _0223FD44 ; =0x022513A0
+ add r4, r0, #0
+ ldr r3, [r2, #4]
+ ldr r2, _0223FD48 ; =0x00000B3B
+ ldrb r2, [r3, r2]
+ cmp r2, #0
+ beq _0223FD42
+ lsl r3, r2, #2
+ ldr r2, _0223FD4C ; =0x022503D4
+ ldr r2, [r2, r3]
+ cmp r2, #0
+ beq _0223FD04
+ blx r2
+_0223FD04:
+ bl FUN_02031190
+ cmp r0, #0
+ beq _0223FD12
+ add r0, r4, #0
+ bl FUN_0204E778
+_0223FD12:
+ mov r0, #0x10
+ bl FUN_0204F774
+ ldr r0, _0223FD50 ; =0x00000609
+ bl FUN_020054C8
+ ldr r0, _0223FD44 ; =0x022513A0
+ mov r2, #0
+ ldr r1, [r0, #4]
+ mov r0, #0x2a
+ lsl r0, r0, #4
+ str r2, [r1, r0]
+ add r0, r4, #0
+ bl FUN_0204F0A8
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ ldr r0, _0223FD44 ; =0x022513A0
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _0223FD48 ; =0x00000B3B
+ strb r2, [r1, r0]
+_0223FD42:
+ pop {r4, pc}
+ .align 2, 0
+_0223FD44: .word 0x022513A0
+_0223FD48: .word 0x00000B3B
+_0223FD4C: .word 0x022503D4
+_0223FD50: .word 0x00000609
+ thumb_func_end MOD18_0223FCE8
+
+ thumb_func_start MOD18_0223FD54
+MOD18_0223FD54: ; 0x0223FD54
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ mov r1, #1
+ add r5, r0, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD18_0223FCE8
+ ldr r0, _0223FD80 ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, _0223FD84 ; =0x00000B3B
+ strb r4, [r1, r0]
+ ldr r0, _0223FD88 ; =0x02250118
+ lsl r1, r4, #2
+ ldr r3, [r0, r1]
+ cmp r3, #0
+ beq _0223FD7E
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ blx r3
+_0223FD7E:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0223FD80: .word 0x022513A0
+_0223FD84: .word 0x00000B3B
+_0223FD88: .word 0x02250118
+ thumb_func_end MOD18_0223FD54
+
+ thumb_func_start MOD18_0223FD8C
+MOD18_0223FD8C: ; 0x0223FD8C
+ push {r3, r4, r5, r6, r7, lr}
+ bl FUN_0204F610
+ add r6, r0, #0
+ ldr r0, _0223FDE0 ; =0x022513A0
+ add r1, r6, #0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055304
+ bl FUN_02031190
+ ldr r1, _0223FDE0 ; =0x022513A0
+ lsl r0, r0, #3
+ ldr r1, [r1, #4]
+ add r1, r1, r0
+ ldr r0, _0223FDE4 ; =0x00000AC4
+ ldrh r4, [r1, r0]
+ bl FUN_02031190
+ ldr r1, _0223FDE0 ; =0x022513A0
+ lsl r0, r0, #3
+ ldr r1, [r1, #4]
+ add r1, r1, r0
+ ldr r0, _0223FDE8 ; =0x00000AC6
+ ldrh r5, [r1, r0]
+ add r0, r6, #0
+ bl FUN_02059BF4
+ add r7, r0, #0
+ add r0, r6, #0
+ bl FUN_02059C00
+ add r2, r0, #0
+ mov r0, #0
+ add r1, r4, r7
+ add r2, r5, r2
+ bl FUN_0204D118
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223FDE0: .word 0x022513A0
+_0223FDE4: .word 0x00000AC4
+_0223FDE8: .word 0x00000AC6
+ thumb_func_end MOD18_0223FD8C
+
+ thumb_func_start MOD18_0223FDEC
+MOD18_0223FDEC: ; 0x0223FDEC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, _0223FE64 ; =0x022513A0
+ add r6, r1, #0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055320
+ str r0, [sp]
+ ldr r0, _0223FE64 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+ add r7, r0, #0
+ add r0, r4, #0
+ bl FUN_0204F610
+ str r0, [sp, #4]
+ bl FUN_02031190
+ ldr r1, _0223FE64 ; =0x022513A0
+ lsl r0, r0, #3
+ ldr r1, [r1, #4]
+ add r1, r1, r0
+ ldr r0, _0223FE68 ; =0x00000AC4
+ ldrh r4, [r1, r0]
+ bl FUN_02031190
+ ldr r1, _0223FE64 ; =0x022513A0
+ lsl r0, r0, #3
+ ldr r1, [r1, #4]
+ add r1, r1, r0
+ ldr r0, _0223FE6C ; =0x00000AC6
+ cmp r6, #0
+ ldrh r5, [r1, r0]
+ bne _0223FE4C
+ ldr r0, [sp, #4]
+ bl FUN_02059BF4
+ add r4, r4, r0
+ ldr r0, [sp, #4]
+ bl FUN_02059C00
+ add r5, r5, r0
+_0223FE4C:
+ ldr r0, [sp]
+ cmp r0, r4
+ bne _0223FE5C
+ cmp r7, r5
+ bne _0223FE5C
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0223FE5C:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0223FE64: .word 0x022513A0
+_0223FE68: .word 0x00000AC4
+_0223FE6C: .word 0x00000AC6
+ thumb_func_end MOD18_0223FDEC
+
+ thumb_func_start MOD18_0223FE70
+MOD18_0223FE70: ; 0x0223FE70
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #1
+ bl FUN_0204E758
+ add r0, r4, #0
+ mov r1, #0x1e
+ bl FUN_0204F63C
+ pop {r4, pc}
+ thumb_func_end MOD18_0223FE70
+
+ thumb_func_start MOD18_0223FE84
+MOD18_0223FE84: ; 0x0223FE84
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #1
+ bl FUN_0204E758
+ add r0, r4, #0
+ mov r1, #0x1e
+ bl FUN_0204F63C
+ pop {r4, pc}
+ thumb_func_end MOD18_0223FE84
+
+ thumb_func_start MOD18_0223FE98
+MOD18_0223FE98: ; 0x0223FE98
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0
+ bl FUN_0204E758
+ add r0, r4, #0
+ bl FUN_0204F660
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223FE98
+
+ thumb_func_start MOD18_0223FEAC
+MOD18_0223FEAC: ; 0x0223FEAC
+ ldr r3, _0223FEB4 ; =0x0204E759
+ mov r1, #2
+ bx r3
+ nop
+_0223FEB4: .word 0x0204E759
+ thumb_func_end MOD18_0223FEAC
+
+ thumb_func_start MOD18_0223FEB8
+MOD18_0223FEB8: ; 0x0223FEB8
+ ldr r3, _0223FEC0 ; =0x0204E759
+ mov r1, #2
+ bx r3
+ nop
+_0223FEC0: .word 0x0204E759
+ thumb_func_end MOD18_0223FEB8
+
+ thumb_func_start MOD18_0223FEC4
+MOD18_0223FEC4: ; 0x0223FEC4
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #3
+ bl FUN_0204E758
+ add r0, r4, #0
+ bl FUN_0204E200
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223FEC4
+
+ thumb_func_start MOD18_0223FED8
+MOD18_0223FED8: ; 0x0223FED8
+ ldr r3, _0223FEE0 ; =0x0204E179
+ mov r1, #0
+ add r2, r1, #0
+ bx r3
+ .align 2, 0
+_0223FEE0: .word 0x0204E179
+ thumb_func_end MOD18_0223FED8
+
+ thumb_func_start MOD18_0223FEE4
+MOD18_0223FEE4: ; 0x0223FEE4
+ ldr r3, _0223FEEC ; =0x0204E179
+ mov r1, #1
+ mov r2, #0
+ bx r3
+ .align 2, 0
+_0223FEEC: .word 0x0204E179
+ thumb_func_end MOD18_0223FEE4
+
+ thumb_func_start MOD18_0223FEF0
+MOD18_0223FEF0: ; 0x0223FEF0
+ ldr r3, _0223FEF8 ; =0x0204E179
+ mov r1, #2
+ mov r2, #0
+ bx r3
+ .align 2, 0
+_0223FEF8: .word 0x0204E179
+ thumb_func_end MOD18_0223FEF0
+
+ thumb_func_start MOD18_0223FEFC
+MOD18_0223FEFC: ; 0x0223FEFC
+ ldr r3, _0223FF04 ; =0x0204E179
+ mov r1, #3
+ mov r2, #0
+ bx r3
+ .align 2, 0
+_0223FF04: .word 0x0204E179
+ thumb_func_end MOD18_0223FEFC
+
+ thumb_func_start MOD18_0223FF08
+MOD18_0223FF08: ; 0x0223FF08
+ ldr r3, _0223FF10 ; =0x0204E179
+ mov r1, #0
+ mov r2, #1
+ bx r3
+ .align 2, 0
+_0223FF10: .word 0x0204E179
+ thumb_func_end MOD18_0223FF08
+
+ thumb_func_start MOD18_0223FF14
+MOD18_0223FF14: ; 0x0223FF14
+ ldr r3, _0223FF1C ; =0x0204E179
+ mov r1, #1
+ add r2, r1, #0
+ bx r3
+ .align 2, 0
+_0223FF1C: .word 0x0204E179
+ thumb_func_end MOD18_0223FF14
+
+ thumb_func_start MOD18_0223FF20
+MOD18_0223FF20: ; 0x0223FF20
+ ldr r3, _0223FF28 ; =0x0204E179
+ mov r1, #2
+ mov r2, #1
+ bx r3
+ .align 2, 0
+_0223FF28: .word 0x0204E179
+ thumb_func_end MOD18_0223FF20
+
+ thumb_func_start MOD18_0223FF2C
+MOD18_0223FF2C: ; 0x0223FF2C
+ ldr r3, _0223FF34 ; =0x0204E179
+ mov r1, #3
+ mov r2, #1
+ bx r3
+ .align 2, 0
+_0223FF34: .word 0x0204E179
+ thumb_func_end MOD18_0223FF2C
+
+ thumb_func_start MOD18_0223FF38
+MOD18_0223FF38: ; 0x0223FF38
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0
+ bl FUN_0204E758
+ add r0, r4, #0
+ bl FUN_0204E1E8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223FF38
+
+ thumb_func_start MOD18_0223FF4C
+MOD18_0223FF4C: ; 0x0223FF4C
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_0223FF4C
+
+ thumb_func_start MOD18_0223FF50
+MOD18_0223FF50: ; 0x0223FF50
+ push {r4, lr}
+ mov r1, #1
+ add r4, r0, #0
+ bl FUN_0204E758
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0223FF68
+ mov r0, #1
+ bl MOD18_02240EE8
+_0223FF68:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223FF50
+
+ thumb_func_start MOD18_0223FF6C
+MOD18_0223FF6C: ; 0x0223FF6C
+ push {r4, lr}
+ mov r1, #1
+ add r4, r0, #0
+ bl FUN_0204E758
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0223FF84
+ mov r0, #0
+ bl MOD18_02240EE8
+_0223FF84:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0223FF6C
+
+ thumb_func_start MOD18_0223FF88
+MOD18_0223FF88: ; 0x0223FF88
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ mov r1, #2
+ add r5, r0, #0
+ add r6, r2, #0
+ bl FUN_0204E758
+ bl FUN_02031190
+ cmp r5, r0
+ bne _0223FFAC
+ ldr r0, _0223FFB0 ; =0x022513A0
+ add r1, r4, #0
+ ldr r0, [r0, #4]
+ add r2, r6, #0
+ ldr r0, [r0, #0x40]
+ bl MOD18_02240334
+_0223FFAC:
+ pop {r4, r5, r6, pc}
+ nop
+_0223FFB0: .word 0x022513A0
+ thumb_func_end MOD18_0223FF88
+
+ thumb_func_start MOD18_0223FFB4
+MOD18_0223FFB4: ; 0x0223FFB4
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ mov r1, #2
+ add r5, r0, #0
+ add r6, r2, #0
+ bl FUN_0204E758
+ bl FUN_02031190
+ cmp r5, r0
+ bne _0223FFD8
+ ldr r0, _0223FFDC ; =0x022513A0
+ add r1, r4, #0
+ ldr r0, [r0, #4]
+ add r2, r6, #0
+ ldr r0, [r0, #0x40]
+ bl MOD18_02241738
+_0223FFD8:
+ pop {r4, r5, r6, pc}
+ nop
+_0223FFDC: .word 0x022513A0
+ thumb_func_end MOD18_0223FFB4
+
+ thumb_func_start MOD18_0223FFE0
+MOD18_0223FFE0: ; 0x0223FFE0
+ push {r3, lr}
+ add r1, r0, #0
+ ldr r0, _0223FFF4 ; =0x022513A0
+ mov r2, #0
+ ldr r0, [r0, #4]
+ add r3, r2, #0
+ ldr r0, [r0, #0x40]
+ bl MOD18_02240210
+ pop {r3, pc}
+ .align 2, 0
+_0223FFF4: .word 0x022513A0
+ thumb_func_end MOD18_0223FFE0
+
+ thumb_func_start MOD18_0223FFF8
+MOD18_0223FFF8: ; 0x0223FFF8
+ push {r3, lr}
+ add r1, r0, #0
+ ldr r0, _0224000C ; =0x022513A0
+ mov r2, #1
+ ldr r0, [r0, #4]
+ mov r3, #0
+ ldr r0, [r0, #0x40]
+ bl MOD18_02240210
+ pop {r3, pc}
+ .align 2, 0
+_0224000C: .word 0x022513A0
+ thumb_func_end MOD18_0223FFF8
+
+ thumb_func_start MOD18_02240010
+MOD18_02240010: ; 0x02240010
+ push {r3, lr}
+ add r1, r0, #0
+ ldr r0, _02240024 ; =0x022513A0
+ mov r2, #2
+ ldr r0, [r0, #4]
+ mov r3, #0
+ ldr r0, [r0, #0x40]
+ bl MOD18_02240210
+ pop {r3, pc}
+ .align 2, 0
+_02240024: .word 0x022513A0
+ thumb_func_end MOD18_02240010
+
+ thumb_func_start MOD18_02240028
+MOD18_02240028: ; 0x02240028
+ push {r3, lr}
+ add r1, r0, #0
+ ldr r0, _0224003C ; =0x022513A0
+ mov r2, #3
+ ldr r0, [r0, #4]
+ mov r3, #0
+ ldr r0, [r0, #0x40]
+ bl MOD18_02240210
+ pop {r3, pc}
+ .align 2, 0
+_0224003C: .word 0x022513A0
+ thumb_func_end MOD18_02240028
+
+ thumb_func_start MOD18_02240040
+MOD18_02240040: ; 0x02240040
+ push {r3, lr}
+ add r1, r0, #0
+ ldr r0, _02240054 ; =0x022513A0
+ mov r2, #0
+ ldr r0, [r0, #4]
+ mov r3, #1
+ ldr r0, [r0, #0x40]
+ bl MOD18_02240210
+ pop {r3, pc}
+ .align 2, 0
+_02240054: .word 0x022513A0
+ thumb_func_end MOD18_02240040
+
+ thumb_func_start MOD18_02240058
+MOD18_02240058: ; 0x02240058
+ push {r3, lr}
+ add r1, r0, #0
+ ldr r0, _0224006C ; =0x022513A0
+ mov r2, #1
+ ldr r0, [r0, #4]
+ add r3, r2, #0
+ ldr r0, [r0, #0x40]
+ bl MOD18_02240210
+ pop {r3, pc}
+ .align 2, 0
+_0224006C: .word 0x022513A0
+ thumb_func_end MOD18_02240058
+
+ thumb_func_start MOD18_02240070
+MOD18_02240070: ; 0x02240070
+ push {r3, lr}
+ add r1, r0, #0
+ ldr r0, _02240084 ; =0x022513A0
+ mov r2, #2
+ ldr r0, [r0, #4]
+ mov r3, #1
+ ldr r0, [r0, #0x40]
+ bl MOD18_02240210
+ pop {r3, pc}
+ .align 2, 0
+_02240084: .word 0x022513A0
+ thumb_func_end MOD18_02240070
+
+ thumb_func_start MOD18_02240088
+MOD18_02240088: ; 0x02240088
+ push {r3, lr}
+ add r1, r0, #0
+ ldr r0, _0224009C ; =0x022513A0
+ mov r2, #3
+ ldr r0, [r0, #4]
+ mov r3, #1
+ ldr r0, [r0, #0x40]
+ bl MOD18_02240210
+ pop {r3, pc}
+ .align 2, 0
+_0224009C: .word 0x022513A0
+ thumb_func_end MOD18_02240088
+
+ thumb_func_start MOD18_022400A0
+MOD18_022400A0: ; 0x022400A0
+ push {r4, lr}
+ ldr r0, _022400F8 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055320
+ add r4, r0, #0
+ ldr r0, _022400F8 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+ add r3, r0, #0
+ ldr r0, _022400F8 ; =0x022513A0
+ add r1, r4, #0
+ ldr r0, [r0, #4]
+ mov r2, #0
+ ldr r0, [r0, #0x40]
+ bl MOD05_021E5B30
+ bl MOD18_0223D638
+ ldr r2, _022400F8 ; =0x022513A0
+ mov r1, #0
+ ldr r3, [r2, #4]
+ ldr r2, _022400FC ; =0x00000B3B
+ ldrb r2, [r3, r2]
+ bl MOD18_0224DF04
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x46
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+ add r4, r0, #0
+ mov r0, #0x10
+ bl FUN_0204F74C
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+_022400F8: .word 0x022513A0
+_022400FC: .word 0x00000B3B
+ thumb_func_end MOD18_022400A0
+
+ thumb_func_start MOD18_02240100
+MOD18_02240100: ; 0x02240100
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #7
+ bhi _02240200
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0224011A: ; jump table
+ .short _0224012A - _0224011A - 2 ; case 0
+ .short _0224013A - _0224011A - 2 ; case 1
+ .short _02240152 - _0224011A - 2 ; case 2
+ .short _0224015A - _0224011A - 2 ; case 3
+ .short _02240172 - _0224011A - 2 ; case 4
+ .short _022401CA - _0224011A - 2 ; case 5
+ .short _02240200 - _0224011A - 2 ; case 6
+ .short _022401D2 - _0224011A - 2 ; case 7
+_0224012A:
+ bl MOD18_022400A0
+ str r0, [r4, #4]
+ ldr r0, [r4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_0224013A:
+ mov r0, #1
+ str r0, [sp]
+ mov r1, #0xa
+ mov r2, #0
+ add r3, r0, #0
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_02240152:
+ add r0, r0, #1
+ add sp, #8
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_0224015A:
+ mov r0, #1
+ str r0, [sp]
+ mov r1, #0
+ mov r2, #0xa
+ add r3, r0, #0
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_02240172:
+ ldr r0, [r4, #0x14]
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ cmp r0, #0x1c
+ bne _02240190
+ ldr r0, _02240204 ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, _02240208 ; =0x00000B3B
+ ldrb r1, [r1, r0]
+ add r0, sp, #4
+ strb r1, [r0]
+ mov r0, #0x26
+ add r1, sp, #4
+ bl FUN_020311D0
+_02240190:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0x1e
+ ble _02240200
+ mov r0, #0x10
+ bl FUN_0204F774
+ mov r0, #1
+ str r0, [sp]
+ sub r1, r0, #5
+ mov r2, #0
+ add r3, r0, #0
+ bl FUN_0200A208
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ ldr r2, [r4, #0x18]
+ bl FUN_0204E214
+ ldr r0, _0224020C ; =0x0000065F
+ bl FUN_020054C8
+ mov r0, #5
+ add sp, #8
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_022401CA:
+ mov r0, #6
+ add sp, #8
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_022401D2:
+ mov r1, #1
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200A274
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r2, _02240204 ; =0x022513A0
+ mov r0, #0xa3
+ ldr r3, [r2, #4]
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r3, r0]
+ ldr r2, [r2, #4]
+ add r0, #0x10
+ str r1, [r2, r0]
+ ldr r0, _0224020C ; =0x0000065F
+ bl FUN_020054F0
+_02240200:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02240204: .word 0x022513A0
+_02240208: .word 0x00000B3B
+_0224020C: .word 0x0000065F
+ thumb_func_end MOD18_02240100
+
+ thumb_func_start MOD18_02240210
+MOD18_02240210: ; 0x02240210
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #4
+ mov r1, #0x1c
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_020169D8
+ mov r1, #0
+ mov r2, #0x1c
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, _02240268 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0224023E
+ bl ErrorHandling
+_0224023E:
+ ldr r0, _02240268 ; =0x022513A0
+ mov r2, #0x64
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ str r4, [r1, r0]
+ str r5, [r4, #8]
+ str r6, [r4, #0xc]
+ ldr r0, [sp]
+ str r7, [r4, #0x10]
+ str r0, [r4, #0x18]
+ ldr r0, _0224026C ; =MOD18_02240100
+ add r1, r4, #0
+ bl FUN_0200CA44
+ ldr r1, _02240268 ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0xa3
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02240268: .word 0x022513A0
+_0224026C: .word MOD18_02240100
+ thumb_func_end MOD18_02240210
+
+ thumb_func_start MOD18_02240270
+MOD18_02240270: ; 0x02240270
+ push {r3, lr}
+ bl FUN_0204E254
+ ldr r2, _02240298 ; =0x022513A0
+ mov r0, #0xa7
+ ldr r1, [r2, #4]
+ lsl r0, r0, #2
+ ldr r3, [r1, r0]
+ cmp r3, #0
+ beq _02240294
+ mov r1, #7
+ str r1, [r3]
+ ldr r2, [r2, #4]
+ mov r1, #0
+ str r1, [r2, r0]
+ ldr r0, _0224029C ; =0x0000065F
+ bl FUN_020054F0
+_02240294:
+ pop {r3, pc}
+ nop
+_02240298: .word 0x022513A0
+_0224029C: .word 0x0000065F
+ thumb_func_end MOD18_02240270
+
+ thumb_func_start MOD18_022402A0
+MOD18_022402A0: ; 0x022402A0
+ push {r4, lr}
+ bl FUN_0204E254
+ ldr r0, _022402EC ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r4, [r1, r0]
+ cmp r4, #0
+ beq _022402EA
+ mov r1, #1
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200A274
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, _022402EC ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+ ldr r2, _022402EC ; =0x022513A0
+ mov r0, #0xa3
+ ldr r3, [r2, #4]
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r3, r0]
+ ldr r2, [r2, #4]
+ add r0, #0x10
+ str r1, [r2, r0]
+ ldr r0, _022402F0 ; =0x0000065F
+ bl FUN_020054F0
+_022402EA:
+ pop {r4, pc}
+ .align 2, 0
+_022402EC: .word 0x022513A0
+_022402F0: .word 0x0000065F
+ thumb_func_end MOD18_022402A0
+
+ thumb_func_start MOD18_022402F4
+MOD18_022402F4: ; 0x022402F4
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_022402F4
+
+ thumb_func_start MOD18_022402F8
+MOD18_022402F8: ; 0x022402F8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r0, #0
+ ldr r0, _02240328 ; =0x022513A0
+ add r5, r1, #0
+ ldr r0, [r0, #4]
+ ldr r1, _0224032C ; =0x00000B46
+ add r4, r2, #0
+ ldrb r1, [r0, r1]
+ cmp r1, #0
+ bne _02240322
+ sub r1, r3, #1
+ str r1, [sp]
+ ldr r0, [r0, #0x40]
+ add r1, r6, #0
+ add r2, r5, #0
+ add r3, r4, #0
+ bl MOD05_021E53B4
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_02240322:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02240328: .word 0x022513A0
+_0224032C: .word 0x00000B46
+ thumb_func_end MOD18_022402F8
+
+ thumb_func_start MOD18_02240330
+MOD18_02240330: ; 0x02240330
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_02240330
+
+ thumb_func_start MOD18_02240334
+MOD18_02240334: ; 0x02240334
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #4
+ mov r1, #0x20
+ add r7, r2, #0
+ bl FUN_020169D8
+ mov r1, #0
+ mov r2, #0x20
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, _02240380 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ str r4, [r1, r0]
+ add r0, r4, #0
+ bl MOD18_0224064C
+ ldr r0, [r5, #8]
+ add r1, r4, #0
+ str r0, [r4, #0x10]
+ str r5, [r4, #0x14]
+ strb r6, [r4, #0x19]
+ ldr r0, _02240384 ; =MOD18_02240658
+ mov r2, #0x64
+ strb r7, [r4, #0x18]
+ bl FUN_0200CA44
+ ldr r1, _02240380 ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0xa3
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02240380: .word 0x022513A0
+_02240384: .word MOD18_02240658
+ thumb_func_end MOD18_02240334
+
+ thumb_func_start MOD18_02240388
+MOD18_02240388: ; 0x02240388
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ ldr r0, [sp, #0x38]
+ str r3, [sp, #4]
+ str r0, [sp, #0x38]
+ add r0, r2, #0
+ sub r0, r5, r0
+ add r4, r1, #0
+ str r2, [sp]
+ bl abs
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #4]
+ sub r0, r0, r4
+ bl abs
+ ldr r1, [sp]
+ mov r7, #0
+ cmp r5, r1
+ bge _022403B8
+ mov r1, #1
+ str r1, [sp, #0x1c]
+ b _022403BC
+_022403B8:
+ sub r1, r7, #1
+ str r1, [sp, #0x1c]
+_022403BC:
+ ldr r1, [sp, #4]
+ cmp r4, r1
+ bge _022403C8
+ mov r1, #1
+ str r1, [sp, #0x18]
+ b _022403CE
+_022403C8:
+ mov r1, #0
+ mvn r1, r1
+ str r1, [sp, #0x18]
+_022403CE:
+ ldr r1, [sp, #0x20]
+ cmp r1, r0
+ blt _0224040C
+ neg r6, r1
+ ldr r1, [sp]
+ cmp r5, r1
+ beq _02240442
+ lsl r0, r0, #1
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x20]
+ lsl r0, r0, #1
+ str r0, [sp, #8]
+_022403E6:
+ ldr r2, [sp, #0x38]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02240564
+ add r7, r7, r0
+ ldr r0, [sp, #0x1c]
+ add r5, r5, r0
+ ldr r0, [sp, #0xc]
+ add r6, r6, r0
+ bmi _02240404
+ ldr r0, [sp, #8]
+ sub r6, r6, r0
+ ldr r0, [sp, #0x18]
+ add r4, r4, r0
+_02240404:
+ ldr r0, [sp]
+ cmp r5, r0
+ bne _022403E6
+ b _02240442
+_0224040C:
+ ldr r1, [sp, #4]
+ neg r6, r0
+ cmp r4, r1
+ beq _02240442
+ ldr r1, [sp, #0x20]
+ lsl r0, r0, #1
+ lsl r1, r1, #1
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x10]
+_0224041E:
+ ldr r2, [sp, #0x38]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02240564
+ add r7, r7, r0
+ ldr r0, [sp, #0x18]
+ add r4, r4, r0
+ ldr r0, [sp, #0x14]
+ add r6, r6, r0
+ bmi _0224043C
+ ldr r0, [sp, #0x10]
+ sub r6, r6, r0
+ ldr r0, [sp, #0x1c]
+ add r5, r5, r0
+_0224043C:
+ ldr r0, [sp, #4]
+ cmp r4, r0
+ bne _0224041E
+_02240442:
+ cmp r7, #0
+ beq _02240456
+ ldr r0, _0224045C ; =0x00000629
+ bl FUN_02005508
+ cmp r0, #0
+ bne _02240456
+ ldr r0, _0224045C ; =0x00000629
+ bl FUN_020054C8
+_02240456:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0224045C: .word 0x00000629
+ thumb_func_end MOD18_02240388
+
+ thumb_func_start MOD18_02240460
+MOD18_02240460: ; 0x02240460
+ push {r4, lr}
+ ldr r0, _022404EC ; =0x022513A0
+ ldr r2, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r4, [r2, r0]
+ cmp r4, #0
+ beq _022404E8
+ ldrb r0, [r4, #0x19]
+ cmp r0, #0
+ beq _02240480
+ cmp r1, #0
+ beq _02240480
+ ldrb r0, [r4, #0x18]
+ bl MOD18_0223FD8C
+_02240480:
+ ldr r1, _022404F0 ; =0x04000050
+ mov r0, #0
+ strh r0, [r1]
+ mov r1, #1
+ add r2, r1, #0
+ bl FUN_0200A274
+ ldr r0, _022404EC ; =0x022513A0
+ mov r1, #2
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #8]
+ bl FUN_0201886C
+ mov r3, #0
+ mov r1, #2
+ add r2, r3, #0
+ lsl r1, r1, #0xa
+_022404A4:
+ strb r2, [r0, r3]
+ add r3, r3, #2
+ cmp r3, r1
+ blt _022404A4
+ mov r0, #2
+ mov r1, #3
+ bl FUN_020178BC
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ bl FUN_0204F774
+ ldr r0, _022404EC ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r1, _022404EC ; =0x022513A0
+ mov r0, #0xa3
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #2
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ add r0, #0x10
+ str r3, [r1, r0]
+_022404E8:
+ pop {r4, pc}
+ nop
+_022404EC: .word 0x022513A0
+_022404F0: .word 0x04000050
+ thumb_func_end MOD18_02240460
+
+ thumb_func_start MOD18_022404F4
+MOD18_022404F4: ; 0x022404F4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ str r1, [sp, #4]
+ add r0, r1, #0
+ mov r1, #2
+ add r6, r2, #0
+ mov r4, #0
+ bl FUN_0201886C
+ add r5, r0, #0
+ bne _02240512
+ add sp, #8
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02240512:
+ ldrh r2, [r6, #8]
+ ldr r0, _02240560 ; =0x0000FFFF
+ cmp r2, r0
+ beq _02240532
+ ldrh r3, [r6, #0xa]
+ cmp r3, r0
+ beq _02240532
+ str r5, [sp]
+ ldrh r0, [r7]
+ ldrh r1, [r7, #2]
+ bl MOD18_02240388
+ ldr r0, [sp, #4]
+ mov r1, #2
+ bl FUN_02017CD0
+_02240532:
+ ldrh r0, [r7]
+ mov r2, #0
+ strh r0, [r6, #8]
+ ldrh r0, [r7, #2]
+ strh r0, [r6, #0xa]
+ mov r0, #2
+ lsl r0, r0, #0xa
+_02240540:
+ ldrb r1, [r5, r2]
+ cmp r1, #0
+ beq _02240548
+ add r4, r4, #1
+_02240548:
+ add r2, r2, #2
+ cmp r2, r0
+ blt _02240540
+ cmp r4, #0xd
+ bge _02240558
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02240558:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02240560: .word 0x0000FFFF
+ thumb_func_end MOD18_022404F4
+
+ thumb_func_start MOD18_02240564
+MOD18_02240564: ; 0x02240564
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r5, r2, #0
+ asr r2, r0, #2
+ lsr r2, r2, #0x1d
+ add r2, r0, r2
+ asr r0, r2, #3
+ asr r2, r1, #2
+ lsr r2, r2, #0x1d
+ add r2, r1, r2
+ asr r1, r2, #3
+ lsl r1, r1, #5
+ add r0, r0, r1
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x10
+ ldr r4, _02240648 ; =0x022500F4
+ str r0, [sp, #4]
+ add r3, sp, #0xc
+ mov r2, #4
+_0224058A:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0224058A
+ ldr r0, [r4]
+ mov r1, #2
+ str r0, [r3]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ lsl r1, r1, #0xa
+ cmp r0, r1
+ bls _022405AA
+ ldr r0, [sp, #8]
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+_022405AA:
+ ldr r1, [sp, #4]
+ lsr r0, r0, #0x1f
+ lsl r2, r1, #0x1a
+ sub r2, r2, r0
+ mov r1, #0x1a
+ ror r2, r1
+ add r0, r0, r2
+ ldr r6, [sp, #8]
+ add r7, sp, #0xc
+ str r0, [sp]
+_022405BE:
+ ldr r1, [r7]
+ ldr r0, [sp, #4]
+ add r4, r0, r1
+ ldr r0, [sp]
+ cmp r0, #0x3e
+ bne _022405D6
+ add r0, r6, #0
+ mov r1, #3
+ bl _s32_div_f
+ cmp r1, #2
+ beq _02240638
+_022405D6:
+ ldr r0, [sp]
+ cmp r0, #0
+ bne _022405E8
+ add r0, r6, #0
+ mov r1, #3
+ bl _s32_div_f
+ cmp r1, #0
+ beq _02240638
+_022405E8:
+ mov r0, #2
+ lsl r0, r0, #0xa
+ cmp r4, r0
+ bge _02240638
+ cmp r4, #0
+ blt _02240638
+ ldrb r0, [r5, r4]
+ cmp r0, #0
+ beq _02240638
+ mov r1, #1
+ str r1, [sp, #8]
+ cmp r6, #7
+ bhi _0224062A
+ add r1, r6, r6
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0224060E: ; jump table
+ .short _0224062A - _0224060E - 2 ; case 0
+ .short _02240624 - _0224060E - 2 ; case 1
+ .short _0224062A - _0224060E - 2 ; case 2
+ .short _02240624 - _0224060E - 2 ; case 3
+ .short _0224061E - _0224060E - 2 ; case 4
+ .short _02240624 - _0224060E - 2 ; case 5
+ .short _0224062A - _0224060E - 2 ; case 6
+ .short _02240624 - _0224060E - 2 ; case 7
+_0224061E:
+ add r0, r0, #3
+ strb r0, [r5, r4]
+ b _0224062E
+_02240624:
+ add r0, r0, #2
+ strb r0, [r5, r4]
+ b _0224062E
+_0224062A:
+ add r0, r0, #1
+ strb r0, [r5, r4]
+_0224062E:
+ ldrb r0, [r5, r4]
+ cmp r0, #5
+ bls _02240638
+ mov r0, #0
+ strb r0, [r5, r4]
+_02240638:
+ add r6, r6, #1
+ add r7, r7, #4
+ cmp r6, #9
+ blo _022405BE
+ ldr r0, [sp, #8]
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02240648: .word 0x022500F4
+ thumb_func_end MOD18_02240564
+
+ thumb_func_start MOD18_0224064C
+MOD18_0224064C: ; 0x0224064C
+ ldr r1, _02240654 ; =0x0000FFFF
+ strh r1, [r0, #8]
+ strh r1, [r0, #0xa]
+ bx lr
+ .align 2, 0
+_02240654: .word 0x0000FFFF
+ thumb_func_end MOD18_0224064C
+
+ thumb_func_start MOD18_02240658
+MOD18_02240658: ; 0x02240658
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r1, #0
+ ldr r0, [r4]
+ cmp r0, #0xc
+ bls _02240666
+ b _02240880
+_02240666:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02240672: ; jump table
+ .short _0224068C - _02240672 - 2 ; case 0
+ .short _022406A4 - _02240672 - 2 ; case 1
+ .short _022406D8 - _02240672 - 2 ; case 2
+ .short _022406F6 - _02240672 - 2 ; case 3
+ .short _0224079E - _02240672 - 2 ; case 4
+ .short _0224079E - _02240672 - 2 ; case 5
+ .short _0224079E - _02240672 - 2 ; case 6
+ .short _022407DE - _02240672 - 2 ; case 7
+ .short _02240836 - _02240672 - 2 ; case 8
+ .short _02240842 - _02240672 - 2 ; case 9
+ .short _02240880 - _02240672 - 2 ; case 10
+ .short _02240850 - _02240672 - 2 ; case 11
+ .short _0224086C - _02240672 - 2 ; case 12
+_0224068C:
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ bl MOD18_022400A0
+ str r0, [r4, #4]
+ ldr r0, [r4]
+ add sp, #0x1c
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, pc}
+_022406A4:
+ mov r0, #1
+ mov r1, #0xa
+ mov r2, #0
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ mov r1, #0
+ mov r0, #0x12
+ str r1, [sp]
+ lsl r0, r0, #4
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x10]
+ mov r0, #0x32
+ mov r1, #9
+ mov r3, #2
+ bl FUN_0200687C
+ ldr r0, [r4]
+ add sp, #0x1c
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, pc}
+_022406D8:
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #4
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x32
+ mov r1, #0xa
+ add r3, r2, #0
+ bl FUN_02006930
+ ldr r0, [r4]
+ add sp, #0x1c
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, pc}
+_022406F6:
+ mov r0, #1
+ mov r1, #0
+ mov r2, #0xa
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ ldr r0, _02240884 ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, _02240888 ; =0x00000B3B
+ ldrb r0, [r1, r0]
+ cmp r0, #0x13
+ bne _0224072E
+ mov r1, #0
+ mov r0, #6
+ str r1, [sp]
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x10]
+ mov r0, #0x32
+ mov r1, #8
+ mov r3, #2
+ bl FUN_020068C8
+ b _02240774
+_0224072E:
+ ldr r1, _0224088C ; =0x022500A8
+ add r0, sp, #0x10
+ ldrh r2, [r1, #0x10]
+ strh r2, [r0, #4]
+ ldrh r2, [r1, #0x12]
+ strh r2, [r0, #6]
+ ldrh r2, [r1, #0x14]
+ ldrh r1, [r1, #0x16]
+ strh r2, [r0, #8]
+ strh r1, [r0, #0xa]
+ bl FUN_0201B9EC
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ lsl r1, r0, #0x10
+ mov r2, #0
+ mov r0, #6
+ str r2, [sp]
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ str r2, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ lsr r2, r1, #0xf
+ add r1, sp, #0x14
+ ldrh r1, [r1, r2]
+ ldr r2, [r4, #0x10]
+ mov r0, #0x32
+ mov r3, #2
+ bl FUN_020068C8
+_02240774:
+ mov r0, #0
+ mov r1, #3
+ bl FUN_020178BC
+ mov r0, #1
+ mov r1, #2
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #1
+ bl FUN_020178BC
+ mov r0, #3
+ mov r1, #0
+ bl FUN_020178BC
+ ldr r0, [r4]
+ add sp, #0x1c
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, pc}
+_0224079E:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ cmp r0, #0x1e
+ ble _02240880
+ mov r0, #1
+ sub r1, r0, #5
+ mov r2, #0
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #7
+ str r0, [r4]
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x4d
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldr r0, _02240890 ; =0x00000661
+ bl FUN_020054C8
+ add sp, #0x1c
+ pop {r3, r4, pc}
+_022407DE:
+ ldr r1, _02240894 ; =0x021C48F8
+ ldrh r0, [r1, #0x22]
+ cmp r0, #0
+ beq _02240816
+ ldrh r2, [r1, #0x1c]
+ add r0, sp, #0x10
+ strh r2, [r0]
+ ldrh r1, [r1, #0x1e]
+ add r2, r4, #0
+ strh r1, [r0, #2]
+ ldr r1, [r4, #0x10]
+ add r0, sp, #0x10
+ bl MOD18_022404F4
+ cmp r0, #0
+ beq _0224081C
+ ldrb r0, [r4, #0x19]
+ cmp r0, #0
+ beq _0224080A
+ mov r0, #0xb
+ str r0, [r4]
+ b _0224081C
+_0224080A:
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #8
+ str r0, [r4]
+ b _0224081C
+_02240816:
+ add r0, r4, #0
+ bl MOD18_0224064C
+_0224081C:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0x3c
+ bge _02240880
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ cmp r0, #0x3c
+ bne _02240880
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add sp, #0x1c
+ pop {r3, r4, pc}
+_02240836:
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add sp, #0x1c
+ pop {r3, r4, pc}
+_02240842:
+ bl FUN_02031190
+ ldrb r1, [r4, #0x19]
+ bl MOD18_02240460
+ add sp, #0x1c
+ pop {r3, r4, pc}
+_02240850:
+ mov r0, #0
+ strb r0, [r4, #0x19]
+ mov r0, #0x10
+ bl FUN_0204F774
+ ldrb r0, [r4, #0x18]
+ bl MOD18_0223FD8C
+ mov r0, #0
+ str r0, [r4, #0xc]
+ mov r0, #0xc
+ add sp, #0x1c
+ str r0, [r4]
+ pop {r3, r4, pc}
+_0224086C:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ cmp r0, #8
+ ble _02240880
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #8
+ str r0, [r4]
+_02240880:
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ .align 2, 0
+_02240884: .word 0x022513A0
+_02240888: .word 0x00000B3B
+_0224088C: .word 0x022500A8
+_02240890: .word 0x00000661
+_02240894: .word 0x021C48F8
+ thumb_func_end MOD18_02240658
+
+ thumb_func_start MOD18_02240898
+MOD18_02240898: ; 0x02240898
+ mov r0, #4
+ bx lr
+ thumb_func_end MOD18_02240898
+
+ thumb_func_start MOD18_0224089C
+MOD18_0224089C: ; 0x0224089C
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl FUN_0204D830
+ cmp r0, #0
+ beq _022408E4
+ add r0, r4, #0
+ bl FUN_0204E778
+ ldr r1, _022408F4 ; =0x022513A0
+ add r0, r4, #0
+ ldr r1, [r1, #4]
+ add r2, r1, r4
+ ldr r1, _022408F8 ; =0x00000B3C
+ ldrb r1, [r2, r1]
+ bl MOD18_0223FCD4
+ add r0, r4, #0
+ bl MOD18_022475F8
+ add r1, sp, #0
+ strb r0, [r1, #3]
+ ldr r0, _022408F4 ; =0x022513A0
+ ldr r0, [r0, #4]
+ add r2, r0, r4
+ ldr r0, _022408F8 ; =0x00000B3C
+ ldrb r0, [r2, r0]
+ strb r0, [r1]
+ strb r4, [r1, #1]
+ mov r0, #1
+ strb r0, [r1, #2]
+ mov r0, #0x2a
+ add r1, sp, #0
+ bl FUN_02030C4C
+_022408E4:
+ ldr r0, _022408F4 ; =0x022513A0
+ mov r2, #0
+ ldr r0, [r0, #4]
+ add r1, r0, r4
+ ldr r0, _022408F8 ; =0x00000B3C
+ strb r2, [r1, r0]
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_022408F4: .word 0x022513A0
+_022408F8: .word 0x00000B3C
+ thumb_func_end MOD18_0224089C
+
+ thumb_func_start MOD18_022408FC
+MOD18_022408FC: ; 0x022408FC
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0204E778
+ ldr r0, _0224093C ; =0x022513A0
+ ldr r0, [r0, #4]
+ add r1, r0, r4
+ ldr r0, _02240940 ; =0x00000B3C
+ ldrb r1, [r1, r0]
+ cmp r1, #0
+ beq _02240918
+ add r0, r4, #0
+ bl MOD18_0223FCD4
+_02240918:
+ ldr r1, _0224093C ; =0x022513A0
+ mov r3, #0
+ ldr r0, [r1, #4]
+ add r2, r0, r4
+ ldr r0, _02240940 ; =0x00000B3C
+ strb r3, [r2, r0]
+ ldr r1, [r1, #4]
+ sub r0, #0x71
+ add r3, r1, r0
+ lsl r2, r4, #3
+ ldrb r1, [r3, r2]
+ mov r0, #0x80
+ bic r1, r0
+ add r0, r4, #0
+ strb r1, [r3, r2]
+ bl MOD18_022475F8
+ pop {r4, pc}
+ .align 2, 0
+_0224093C: .word 0x022513A0
+_02240940: .word 0x00000B3C
+ thumb_func_end MOD18_022408FC
+
+ thumb_func_start MOD18_02240944
+MOD18_02240944: ; 0x02240944
+ push {r4, r5, r6, lr}
+ add r4, r2, #0
+ ldrb r0, [r4, #2]
+ ldrb r5, [r4]
+ cmp r0, #0
+ ldrb r0, [r4, #1]
+ beq _02240958
+ bl FUN_0204F08C
+ b _0224095C
+_02240958:
+ bl FUN_0204F0A8
+_0224095C:
+ ldrb r0, [r4, #1]
+ bl MOD18_02243FB8
+ ldrb r6, [r4, #1]
+ bl FUN_02031190
+ cmp r6, r0
+ bne _02240986
+ ldr r0, _022409C0 ; =0x02250348
+ lsl r1, r5, #2
+ ldr r2, [r0, r1]
+ cmp r2, #0
+ beq _0224097C
+ ldrb r1, [r4, #3]
+ add r0, r6, #0
+ blx r2
+_0224097C:
+ ldr r0, _022409C4 ; =0x022513A0
+ mov r2, #0
+ ldr r1, [r0, #4]
+ ldr r0, _022409C8 ; =0x00000B3B
+ strb r2, [r1, r0]
+_02240986:
+ sub r5, #0x18
+ cmp r5, #3
+ bhi _022409A0
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02240998: ; jump table
+ .short _022409AE - _02240998 - 2 ; case 0
+ .short _022409AE - _02240998 - 2 ; case 1
+ .short _022409AE - _02240998 - 2 ; case 2
+ .short _022409AE - _02240998 - 2 ; case 3
+_022409A0:
+ ldr r0, _022409C4 ; =0x022513A0
+ mov r2, #1
+ ldr r1, [r0, #4]
+ ldrb r0, [r4, #1]
+ add r1, r1, r0
+ ldr r0, _022409CC ; =0x00000B1C
+ strb r2, [r1, r0]
+_022409AE:
+ bl FUN_02031190
+ cmp r0, #0
+ beq _022409BC
+ ldrb r0, [r4, #1]
+ bl FUN_0204E778
+_022409BC:
+ pop {r4, r5, r6, pc}
+ nop
+_022409C0: .word 0x02250348
+_022409C4: .word 0x022513A0
+_022409C8: .word 0x00000B3B
+_022409CC: .word 0x00000B1C
+ thumb_func_end MOD18_02240944
+
+ thumb_func_start MOD18_022409D0
+MOD18_022409D0: ; 0x022409D0
+ push {r3, lr}
+ ldr r0, _022409E8 ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, _022409EC ; =0x00000B3B
+ ldrb r0, [r1, r0]
+ sub r0, #0xb
+ cmp r0, #1
+ bhi _022409E6
+ ldrb r0, [r2]
+ bl MOD18_02241008
+_022409E6:
+ pop {r3, pc}
+ .align 2, 0
+_022409E8: .word 0x022513A0
+_022409EC: .word 0x00000B3B
+ thumb_func_end MOD18_022409D0
+
+ thumb_func_start MOD18_022409F0
+MOD18_022409F0: ; 0x022409F0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_0204E778
+ ldr r1, _02240A3C ; =0x022513A0
+ add r0, r4, #0
+ ldr r1, [r1, #4]
+ add r2, r1, r4
+ ldr r1, _02240A40 ; =0x00000B3C
+ ldrb r1, [r2, r1]
+ bl MOD18_0223FCD4
+ add r1, sp, #0
+ strb r4, [r1, #1]
+ ldr r0, _02240A3C ; =0x022513A0
+ strb r5, [r1]
+ ldr r0, [r0, #4]
+ add r2, r0, r4
+ ldr r0, _02240A40 ; =0x00000B3C
+ ldrb r0, [r2, r0]
+ strb r0, [r1, #2]
+ mov r0, #0x2c
+ add r1, sp, #0
+ bl FUN_02030C4C
+ ldr r0, _02240A3C ; =0x022513A0
+ mov r1, #0
+ ldr r0, [r0, #4]
+ add r2, r0, r4
+ ldr r0, _02240A40 ; =0x00000B3C
+ strb r1, [r2, r0]
+ add r0, r5, #0
+ bl FUN_0204EAD8
+ pop {r3, r4, r5, pc}
+ nop
+_02240A3C: .word 0x022513A0
+_02240A40: .word 0x00000B3C
+ thumb_func_end MOD18_022409F0
+
+ thumb_func_start MOD18_02240A44
+MOD18_02240A44: ; 0x02240A44
+ push {r3, r4, r5, lr}
+ ldr r0, _02240B10 ; =0x022513A0
+ add r4, r2, #0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ bl FUN_020377AC
+ bl FUN_02026CB4
+ add r5, r0, #0
+ ldrb r0, [r4, #1]
+ bl FUN_0204F08C
+ bl FUN_02031190
+ ldrb r1, [r4]
+ cmp r1, r0
+ bne _02240AA6
+ add r0, r5, #0
+ bl FUN_02026B58
+ ldr r0, _02240B10 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x22
+ bl FUN_0202A170
+ bl FUN_0204F7E4
+ bl MOD18_0223D638
+ add r5, r0, #0
+ ldrb r0, [r4, #1]
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD18_0224DDB8
+ bl MOD18_0223D638
+ ldr r3, _02240B14 ; =MOD18_0223ECDC
+ mov r1, #0x47
+ mov r2, #1
+ bl MOD18_0224DCB8
+_02240AA6:
+ ldrb r0, [r4, #1]
+ bl MOD18_02243FB8
+ ldrb r5, [r4, #1]
+ bl FUN_02031190
+ cmp r5, r0
+ bne _02240AF2
+ ldr r0, _02240B10 ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, _02240B18 ; =0x00000B3B
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ beq _02240AF2
+ lsl r1, r0, #2
+ ldr r0, _02240B1C ; =0x022503D4
+ ldr r2, [r0, r1]
+ cmp r2, #0
+ beq _02240AD2
+ add r0, r5, #0
+ mov r1, #0
+ blx r2
+_02240AD2:
+ ldr r1, _02240B10 ; =0x022513A0
+ mov r0, #0x2a
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #4
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ ldr r0, _02240B18 ; =0x00000B3B
+ strb r3, [r1, r0]
+ mov r0, #0x10
+ bl FUN_0204F774
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+_02240AF2:
+ bl FUN_02031190
+ cmp r0, #0
+ beq _02240B00
+ ldrb r0, [r4, #1]
+ bl FUN_0204E778
+_02240B00:
+ ldr r0, _02240B10 ; =0x022513A0
+ ldrb r2, [r4, #1]
+ ldr r1, [r0, #4]
+ ldrb r0, [r4]
+ add r1, r1, r0
+ ldr r0, _02240B20 ; =0x00000B04
+ strb r2, [r1, r0]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02240B10: .word 0x022513A0
+_02240B14: .word MOD18_0223ECDC
+_02240B18: .word 0x00000B3B
+_02240B1C: .word 0x022503D4
+_02240B20: .word 0x00000B04
+ thumb_func_end MOD18_02240A44
+
+ thumb_func_start MOD18_02240B24
+MOD18_02240B24: ; 0x02240B24
+ mov r0, #3
+ bx lr
+ thumb_func_end MOD18_02240B24
+
+ thumb_func_start MOD18_02240B28
+MOD18_02240B28: ; 0x02240B28
+ push {r4, lr}
+ ldr r1, _02240B58 ; =0x022513A0
+ ldr r2, [r1, #4]
+ cmp r2, #0
+ beq _02240B52
+ mov r1, #0xa6
+ lsl r1, r1, #2
+ ldr r4, [r2, r1]
+ cmp r4, #0
+ beq _02240B52
+ sub r1, #0xb6
+ ldrh r1, [r4, r1]
+ lsr r1, r1, #1
+ add r0, r1, r0
+ mov r1, #0x50
+ bl _s32_div_f
+ mov r0, #6
+ mul r0, r1
+ ldrh r0, [r4, r0]
+ pop {r4, pc}
+_02240B52:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02240B58: .word 0x022513A0
+ thumb_func_end MOD18_02240B28
+
+ thumb_func_start MOD18_02240B5C
+MOD18_02240B5C: ; 0x02240B5C
+ push {r4, lr}
+ ldr r1, _02240B8C ; =0x022513A0
+ ldr r2, [r1, #4]
+ cmp r2, #0
+ beq _02240B88
+ mov r1, #0xa6
+ lsl r1, r1, #2
+ ldr r4, [r2, r1]
+ cmp r4, #0
+ beq _02240B88
+ sub r1, #0xb6
+ ldrh r1, [r4, r1]
+ lsr r1, r1, #1
+ add r0, r1, r0
+ mov r1, #0x50
+ bl _s32_div_f
+ mov r0, #6
+ mul r0, r1
+ add r0, r4, r0
+ ldrh r0, [r0, #2]
+ pop {r4, pc}
+_02240B88:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_02240B8C: .word 0x022513A0
+ thumb_func_end MOD18_02240B5C
+
+ thumb_func_start MOD18_02240B90
+MOD18_02240B90: ; 0x02240B90
+ push {r4, lr}
+ ldr r0, _02240BB0 ; =0x000001E2
+ add r4, r1, #0
+ ldrh r1, [r4, r0]
+ add r1, r1, #1
+ strh r1, [r4, r0]
+ ldrh r0, [r4, r0]
+ cmp r0, #0xa0
+ bls _02240BAE
+ ldr r0, _02240BB4 ; =0x00000621
+ bl FUN_020054C8
+ ldr r0, _02240BB0 ; =0x000001E2
+ mov r1, #0
+ strh r1, [r4, r0]
+_02240BAE:
+ pop {r4, pc}
+ .align 2, 0
+_02240BB0: .word 0x000001E2
+_02240BB4: .word 0x00000621
+ thumb_func_end MOD18_02240B90
+
+ thumb_func_start MOD18_02240BB8
+MOD18_02240BB8: ; 0x02240BB8
+ push {r4, lr}
+ ldr r0, _02240C0C ; =0x022513A0
+ mov r1, #0xa6
+ ldr r2, [r0, #4]
+ lsl r1, r1, #2
+ ldr r0, [r2, r1]
+ cmp r0, #0
+ bne _02240C08
+ sub r0, r1, #4
+ ldr r0, [r2, r0]
+ cmp r0, #0
+ bne _02240C08
+ mov r0, #4
+ sub r1, #0xb4
+ bl FUN_020169D8
+ mov r2, #0x79
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x2e
+ bl FUN_020311DC
+ ldr r0, _02240C0C ; =0x022513A0
+ mov r2, #0x64
+ ldr r1, [r0, #4]
+ mov r0, #0xa6
+ lsl r0, r0, #2
+ str r4, [r1, r0]
+ ldr r0, _02240C10 ; =MOD18_02240B90
+ add r1, r4, #0
+ bl FUN_0200CA44
+ ldr r1, _02240C0C ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0xa5
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+_02240C08:
+ pop {r4, pc}
+ nop
+_02240C0C: .word 0x022513A0
+_02240C10: .word MOD18_02240B90
+ thumb_func_end MOD18_02240BB8
+
+ thumb_func_start MOD18_02240C14
+MOD18_02240C14: ; 0x02240C14
+ push {r3, lr}
+ ldr r0, _02240C6C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa5
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _02240C68
+ mov r1, #1
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200A274
+ ldr r0, _02240C70 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ add r0, #0x1c
+ bl GXx_SetMasterBrightness_
+ ldr r0, _02240C6C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa5
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+ ldr r0, _02240C6C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa6
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02016A18
+ ldr r1, _02240C6C ; =0x022513A0
+ mov r0, #0xa5
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #2
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ add r0, r0, #4
+ str r3, [r1, r0]
+_02240C68:
+ pop {r3, pc}
+ nop
+_02240C6C: .word 0x022513A0
+_02240C70: .word 0x04000050
+ thumb_func_end MOD18_02240C14
+
+ thumb_func_start MOD18_02240C74
+MOD18_02240C74: ; 0x02240C74
+ ldr r1, _02240C84 ; =0x022513A0
+ lsl r0, r0, #1
+ ldr r1, [r1, #4]
+ mov r2, #1
+ add r1, r1, r0
+ ldr r0, _02240C88 ; =0x00000B0C
+ strh r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_02240C84: .word 0x022513A0
+_02240C88: .word 0x00000B0C
+ thumb_func_end MOD18_02240C74
+
+ thumb_func_start MOD18_02240C8C
+MOD18_02240C8C: ; 0x02240C8C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ mov r5, #0
+ str r5, [sp]
+_02240C94:
+ ldr r0, _02240D20 ; =0x022513A0
+ ldr r1, _02240D24 ; =0x00000B0C
+ ldr r0, [r0, #4]
+ add r2, r0, r5
+ ldrh r1, [r2, r1]
+ sub r4, r1, #1
+ cmp r1, #0
+ beq _02240D10
+ lsl r7, r4, #2
+_02240CA6:
+ add r1, r0, r7
+ ldr r0, _02240D28 ; =0x000007C4
+ ldr r6, [r1, r0]
+ cmp r6, #0
+ beq _02240CEA
+ ldrb r0, [r6, #4]
+ cmp r0, #0
+ beq _02240CEA
+ add r0, r6, #0
+ bl MOD18_0223F6F8
+ ldr r1, [sp]
+ cmp r0, r1
+ beq _02240CC6
+ cmp r0, #8
+ blt _02240CEA
+_02240CC6:
+ ldrh r0, [r6]
+ add r1, sp, #4
+ strh r0, [r1]
+ ldrh r0, [r6, #2]
+ strh r0, [r1, #2]
+ ldr r0, [sp]
+ strb r0, [r1, #4]
+ mov r0, #0x2f
+ add r1, sp, #4
+ bl FUN_02030C4C
+ ldr r0, _02240D20 ; =0x022513A0
+ add r2, r4, #2
+ ldr r0, [r0, #4]
+ add r1, r0, r5
+ ldr r0, _02240D24 ; =0x00000B0C
+ strh r2, [r1, r0]
+ b _02240D10
+_02240CEA:
+ add r4, r4, #1
+ add r7, r7, #4
+ cmp r4, #0xc0
+ blt _02240D00
+ ldr r0, _02240D20 ; =0x022513A0
+ mov r2, #0
+ ldr r0, [r0, #4]
+ add r1, r0, r5
+ ldr r0, _02240D24 ; =0x00000B0C
+ strh r2, [r1, r0]
+ b _02240D10
+_02240D00:
+ ldr r0, _02240D20 ; =0x022513A0
+ ldr r1, _02240D24 ; =0x00000B0C
+ ldr r0, [r0, #4]
+ add r2, r5, r0
+ ldrh r1, [r2, r1]
+ sub r1, r1, #1
+ cmp r4, r1
+ bne _02240CA6
+_02240D10:
+ ldr r0, [sp]
+ add r5, r5, #2
+ add r0, r0, #1
+ str r0, [sp]
+ cmp r0, #8
+ blt _02240C94
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02240D20: .word 0x022513A0
+_02240D24: .word 0x00000B0C
+_02240D28: .word 0x000007C4
+ thumb_func_end MOD18_02240C8C
+
+ thumb_func_start MOD18_02240D2C
+MOD18_02240D2C: ; 0x02240D2C
+ push {r3, r4, r5, lr}
+ ldr r0, _02240D94 ; =0x022513A0
+ add r4, r2, #0
+ ldr r1, [r0, #4]
+ mov r0, #0xa6
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _02240D90
+ bl FUN_02031190
+ ldrb r1, [r4, #4]
+ cmp r1, r0
+ bne _02240D90
+ ldr r0, _02240D94 ; =0x022513A0
+ mov r1, #0xa6
+ ldr r0, [r0, #4]
+ lsl r1, r1, #2
+ ldr r5, [r0, r1]
+ sub r1, #0xb8
+ ldrb r1, [r5, r1]
+ mov r2, #6
+ add r0, r4, #0
+ add r3, r1, #0
+ mul r3, r2
+ add r1, r5, r3
+ bl MI_CpuCopy8
+ ldr r2, _02240D94 ; =0x022513A0
+ mov r1, #0xa6
+ ldr r0, [r2, #4]
+ lsl r1, r1, #2
+ ldr r4, [r0, r1]
+ add r0, r1, #0
+ sub r0, #0xb8
+ ldrb r0, [r4, r0]
+ add r3, r0, #1
+ add r0, r1, #0
+ sub r0, #0xb8
+ strb r3, [r4, r0]
+ ldr r0, [r2, #4]
+ ldr r2, [r0, r1]
+ add r0, r1, #0
+ sub r0, #0xb8
+ ldrb r0, [r2, r0]
+ cmp r0, #0x50
+ blo _02240D90
+ mov r0, #0
+ sub r1, #0xb8
+ strb r0, [r2, r1]
+_02240D90:
+ pop {r3, r4, r5, pc}
+ nop
+_02240D94: .word 0x022513A0
+ thumb_func_end MOD18_02240D2C
+
+ thumb_func_start MOD18_02240D98
+MOD18_02240D98: ; 0x02240D98
+ mov r0, #6
+ bx lr
+ thumb_func_end MOD18_02240D98
+
+ thumb_func_start MOD18_02240D9C
+MOD18_02240D9C: ; 0x02240D9C
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02031190
+ cmp r4, r0
+ bne _02240DC0
+ ldr r1, _02240DC4 ; =0x022513A0
+ mov r0, #0xa7
+ ldr r2, [r1, #4]
+ lsl r0, r0, #2
+ ldr r3, [r2, r0]
+ cmp r3, #0
+ beq _02240DC0
+ mov r2, #2
+ str r2, [r3]
+ ldr r1, [r1, #4]
+ mov r2, #0
+ str r2, [r1, r0]
+_02240DC0:
+ pop {r4, pc}
+ nop
+_02240DC4: .word 0x022513A0
+ thumb_func_end MOD18_02240D9C
+
+ thumb_func_start MOD18_02240DC8
+MOD18_02240DC8: ; 0x02240DC8
+ push {r3, lr}
+ ldr r0, _02240E24 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _02240E20
+ mov r1, #1
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200A274
+ ldr r0, _02240E28 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ add r0, #0x1c
+ bl GXx_SetMasterBrightness_
+ bl FUN_020307D0
+ ldr r0, _02240E24 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+ ldr r0, _02240E24 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02016A18
+ ldr r1, _02240E24 ; =0x022513A0
+ mov r0, #0xa3
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #2
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ add r0, #0x10
+ str r3, [r1, r0]
+_02240E20:
+ pop {r3, pc}
+ nop
+_02240E24: .word 0x022513A0
+_02240E28: .word 0x04000050
+ thumb_func_end MOD18_02240DC8
+
+ thumb_func_start MOD18_02240E2C
+MOD18_02240E2C: ; 0x02240E2C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _02240E42
+ cmp r0, #1
+ beq _02240EDC
+ cmp r0, #2
+ beq _02240EA4
+ pop {r3, r4, r5, pc}
+_02240E42:
+ ldr r0, [r4, #0x10]
+ add r0, r0, #1
+ str r0, [r4, #0x10]
+ cmp r0, #1
+ bne _02240E54
+ bl MOD18_022400A0
+ str r0, [r4, #4]
+ b _02240E7A
+_02240E54:
+ cmp r0, #2
+ bne _02240E68
+ mov r0, #1
+ mov r1, #0xa
+ mov r2, #0
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ b _02240E7A
+_02240E68:
+ cmp r0, #4
+ bne _02240E7A
+ mov r0, #1
+ mov r1, #0
+ mov r2, #0xa
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+_02240E7A:
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x1e
+ ble _02240EDC
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ mov r0, #1
+ str r0, [r4]
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _02240E98
+ bl FUN_020307BC
+ b _02240E9C
+_02240E98:
+ bl FUN_020307A8
+_02240E9C:
+ mov r0, #0x10
+ bl FUN_0204F774
+ pop {r3, r4, r5, pc}
+_02240EA4:
+ mov r1, #1
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200A274
+ ldr r0, _02240EE0 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ add r0, #0x1c
+ bl GXx_SetMasterBrightness_
+ bl FUN_020307D0
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r1, _02240EE4 ; =0x022513A0
+ mov r0, #0xa3
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #2
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ add r0, #0x10
+ str r3, [r1, r0]
+_02240EDC:
+ pop {r3, r4, r5, pc}
+ nop
+_02240EE0: .word 0x04000050
+_02240EE4: .word 0x022513A0
+ thumb_func_end MOD18_02240E2C
+
+ thumb_func_start MOD18_02240EE8
+MOD18_02240EE8: ; 0x02240EE8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #4
+ mov r1, #0x14
+ bl FUN_020169D8
+ mov r1, #0
+ mov r2, #0x14
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ str r0, [r4]
+ str r5, [r4, #8]
+ str r0, [r4, #0x10]
+ ldr r0, _02240F2C ; =0x022513A0
+ mov r2, #0x64
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ str r4, [r1, r0]
+ ldr r0, _02240F30 ; =MOD18_02240E2C
+ add r1, r4, #0
+ bl FUN_0200CA44
+ ldr r1, _02240F2C ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0xa3
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ mov r0, #0x10
+ bl FUN_0204F74C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02240F2C: .word 0x022513A0
+_02240F30: .word MOD18_02240E2C
+ thumb_func_end MOD18_02240EE8
+
+ thumb_func_start MOD18_02240F34
+MOD18_02240F34: ; 0x02240F34
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02031190
+ cmp r4, r0
+ bne _02240F7E
+ ldr r0, _02240F80 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r4, [r1, r0]
+ cmp r4, #0
+ beq _02240F7E
+ ldr r0, [r1, #0x40]
+ mov r1, #0
+ ldr r0, [r0, #0x38]
+ bl FUN_02055540
+ ldr r0, _02240F80 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r1, _02240F80 ; =0x022513A0
+ mov r0, #0xa3
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #2
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ add r0, #0x10
+ str r3, [r1, r0]
+_02240F7E:
+ pop {r4, pc}
+ .align 2, 0
+_02240F80: .word 0x022513A0
+ thumb_func_end MOD18_02240F34
+
+ thumb_func_start MOD18_02240F84
+MOD18_02240F84: ; 0x02240F84
+ push {r3, r4, r5, lr}
+ ldr r0, _02241000 ; =0x022513A0
+ add r5, r1, #0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r4, [r1, r0]
+ cmp r4, #0
+ beq _02240FFE
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02240FA4
+ bl FUN_02064520
+ mov r0, #0
+ str r0, [r4, #0x14]
+_02240FA4:
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0
+ beq _02240FB4
+ cmp r5, #0
+ beq _02240FB4
+ ldrb r0, [r4, #0xc]
+ bl MOD18_0223FD8C
+_02240FB4:
+ mov r1, #1
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200A274
+ ldr r0, _02241004 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ add r0, #0x1c
+ bl GXx_SetMasterBrightness_
+ ldr r0, _02241000 ; =0x022513A0
+ mov r1, #0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055540
+ ldr r0, _02241000 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r1, _02241000 ; =0x022513A0
+ mov r0, #0xa3
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #2
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ add r0, #0x10
+ str r3, [r1, r0]
+_02240FFE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02241000: .word 0x022513A0
+_02241004: .word 0x04000050
+ thumb_func_end MOD18_02240F84
+
+ thumb_func_start MOD18_02241008
+MOD18_02241008: ; 0x02241008
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02031190
+ cmp r4, r0
+ bne _0224102C
+ ldr r0, _02241030 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r1, [r1, r0]
+ cmp r1, #0
+ beq _0224102C
+ mov r0, #0xe
+ str r0, [r1]
+ ldr r0, _02241034 ; =0x0000060B
+ bl FUN_020054C8
+_0224102C:
+ pop {r4, pc}
+ nop
+_02241030: .word 0x022513A0
+_02241034: .word 0x0000060B
+ thumb_func_end MOD18_02241008
+
+ thumb_func_start MOD18_02241038
+MOD18_02241038: ; 0x02241038
+ push {r4, r5, lr}
+ sub sp, #0x14
+ ldr r3, _02241274 ; =0x022500CC
+ add r4, r1, #0
+ add r5, r0, #0
+ add r2, sp, #4
+ mov r1, #0xf
+_02241046:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _02241046
+ ldr r0, [r4]
+ cmp r0, #0xe
+ bhi _0224110A
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02241064: ; jump table
+ .short _02241082 - _02241064 - 2 ; case 0
+ .short _02241096 - _02241064 - 2 ; case 1
+ .short _022410AE - _02241064 - 2 ; case 2
+ .short _022410B6 - _02241064 - 2 ; case 3
+ .short _022410CE - _02241064 - 2 ; case 4
+ .short _02241100 - _02241064 - 2 ; case 5
+ .short _02241100 - _02241064 - 2 ; case 6
+ .short _0224118C - _02241064 - 2 ; case 7
+ .short _0224126E - _02241064 - 2 ; case 8
+ .short _022411B0 - _02241064 - 2 ; case 9
+ .short _0224126E - _02241064 - 2 ; case 10
+ .short _022411E0 - _02241064 - 2 ; case 11
+ .short _022411FC - _02241064 - 2 ; case 12
+ .short _0224126E - _02241064 - 2 ; case 13
+ .short _02241222 - _02241064 - 2 ; case 14
+_02241082:
+ bl MOD18_022400A0
+ str r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, pc}
+_02241096:
+ mov r0, #1
+ str r0, [sp]
+ mov r1, #0xa
+ mov r2, #0
+ add r3, r0, #0
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, pc}
+_022410AE:
+ add r0, r0, #1
+ add sp, #0x14
+ str r0, [r4]
+ pop {r4, r5, pc}
+_022410B6:
+ mov r0, #1
+ str r0, [sp]
+ mov r1, #0
+ mov r2, #0xa
+ add r3, r0, #0
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, r5, pc}
+_022410CE:
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ cmp r0, #0x3c
+ ble _022410E6
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ pop {r4, r5, pc}
+_022410E6:
+ ldrb r0, [r4, #0xc]
+ mov r1, #1
+ bl MOD18_0223FDEC
+ cmp r0, #0
+ beq _0224110A
+ ldr r0, [r4]
+ add sp, #0x14
+ add r0, r0, #1
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ pop {r4, r5, pc}
+_02241100:
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ cmp r0, #0x1e
+ bgt _0224110C
+_0224110A:
+ b _0224126E
+_0224110C:
+ mov r0, #0x10
+ bl FUN_0204F774
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ mov r0, #7
+ str r0, [r4]
+ ldr r0, _02241278 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055320
+ add r5, r0, #0
+ ldr r0, _02241278 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+ add r2, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ bne _02241166
+ mov r0, #0x20
+ str r0, [sp]
+ ldr r0, _02241278 ; =0x022513A0
+ add r1, r5, #0
+ ldr r0, [r0, #4]
+ mov r3, #2
+ ldr r0, [r0, #0x40]
+ bl MOD05_021E53B4
+ str r0, [r4, #0x14]
+ ldr r0, _02241278 ; =0x022513A0
+ ldr r1, _0224127C ; =0xFFFFE000
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055540
+ add sp, #0x14
+ pop {r4, r5, pc}
+_02241166:
+ mov r0, #0x20
+ str r0, [sp]
+ ldr r0, _02241278 ; =0x022513A0
+ add r1, r5, #0
+ ldr r0, [r0, #4]
+ mov r3, #3
+ ldr r0, [r0, #0x40]
+ bl MOD05_021E53B4
+ str r0, [r4, #0x14]
+ ldr r0, _02241278 ; =0x022513A0
+ ldr r1, _02241280 ; =0xFFFFD000
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055540
+ add sp, #0x14
+ pop {r4, r5, pc}
+_0224118C:
+ ldr r0, _02241278 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_020552F8
+ add r5, r0, #0
+ ldr r0, [r4, #0x18]
+ cmp r0, r5
+ beq _022411A6
+ ldr r0, _02241284 ; =0x000005EB
+ bl FUN_020054C8
+_022411A6:
+ str r5, [r4, #0x18]
+ mov r0, #0
+ add sp, #0x14
+ str r0, [r4, #0x10]
+ pop {r4, r5, pc}
+_022411B0:
+ ldr r0, _02241278 ; =0x022513A0
+ mov r1, #0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055540
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r1, _02241278 ; =0x022513A0
+ mov r0, #0xa3
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #2
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ add r0, #0x10
+ str r3, [r1, r0]
+ add sp, #0x14
+ pop {r4, r5, pc}
+_022411E0:
+ mov r0, #0
+ strb r0, [r4, #0xd]
+ mov r0, #0x10
+ bl FUN_0204F774
+ ldrb r0, [r4, #0xc]
+ bl MOD18_0223FD8C
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ mov r0, #0xc
+ add sp, #0x14
+ str r0, [r4]
+ pop {r4, r5, pc}
+_022411FC:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ ldrb r0, [r4, #0xc]
+ bl MOD18_0223FDEC
+ cmp r0, #0
+ bne _02241214
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0x3c
+ ble _0224126E
+_02241214:
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #8
+ add sp, #0x14
+ str r0, [r4]
+ pop {r4, r5, pc}
+_02241222:
+ ldr r1, [r4, #0x10]
+ add r0, sp, #4
+ ldrsb r1, [r0, r1]
+ mov r0, #9
+ mvn r0, r0
+ cmp r1, r0
+ beq _0224126E
+ ldr r0, _02241278 ; =0x022513A0
+ lsl r1, r1, #0xc
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055540
+ ldr r0, [r4, #0x10]
+ add r0, r0, #1
+ str r0, [r4, #0x10]
+ cmp r0, #5
+ bne _0224126E
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02241256
+ bl FUN_02064520
+ mov r0, #0
+ str r0, [r4, #0x14]
+_02241256:
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0
+ beq _02241264
+ mov r0, #0xb
+ add sp, #0x14
+ str r0, [r4]
+ pop {r4, r5, pc}
+_02241264:
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #9
+ str r0, [r4]
+_0224126E:
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02241274: .word 0x022500CC
+_02241278: .word 0x022513A0
+_0224127C: .word 0xFFFFE000
+_02241280: .word 0xFFFFD000
+_02241284: .word 0x000005EB
+ thumb_func_end MOD18_02241038
+
+ thumb_func_start MOD18_02241288
+MOD18_02241288: ; 0x02241288
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #4
+ mov r1, #0x24
+ add r7, r2, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x24
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ str r0, [r4]
+ str r5, [r4, #8]
+ str r0, [r4, #0x10]
+ ldr r0, _022412DC ; =0x022513A0
+ strb r6, [r4, #0xd]
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_020552F8
+ str r0, [r4, #0x18]
+ ldr r0, _022412DC ; =0x022513A0
+ strb r7, [r4, #0xc]
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ str r4, [r1, r0]
+ ldr r0, _022412E0 ; =MOD18_02241038
+ add r1, r4, #0
+ mov r2, #0x64
+ bl FUN_0200CA44
+ ldr r1, _022412DC ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0xa3
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022412DC: .word 0x022513A0
+_022412E0: .word MOD18_02241038
+ thumb_func_end MOD18_02241288
+
+ thumb_func_start MOD18_022412E4
+MOD18_022412E4: ; 0x022412E4
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ mov r1, #4
+ add r5, r0, #0
+ add r6, r2, #0
+ bl FUN_0204E758
+ bl FUN_02031190
+ cmp r5, r0
+ bne _02241304
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD18_02241288
+_02241304:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD18_022412E4
+
+ thumb_func_start MOD18_02241308
+MOD18_02241308: ; 0x02241308
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ mov r1, #4
+ add r5, r0, #0
+ add r6, r2, #0
+ bl FUN_0204E758
+ bl FUN_02031190
+ cmp r5, r0
+ bne _02241328
+ mov r0, #1
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD18_02241288
+_02241328:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02241308
+
+ thumb_func_start MOD18_0224132C
+MOD18_0224132C: ; 0x0224132C
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0204E778
+ add r0, r4, #0
+ bl FUN_0204F69C
+ pop {r4, pc}
+ thumb_func_end MOD18_0224132C
+
+ thumb_func_start MOD18_0224133C
+MOD18_0224133C: ; 0x0224133C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #4
+ bl FUN_0204E758
+ add r0, r4, #0
+ mov r1, #0xa
+ bl FUN_0204F678
+ pop {r4, pc}
+ thumb_func_end MOD18_0224133C
+
+ thumb_func_start MOD18_02241350
+MOD18_02241350: ; 0x02241350
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #4
+ bl FUN_0204E758
+ add r0, r4, #0
+ mov r1, #0x14
+ bl FUN_0204F678
+ pop {r4, pc}
+ thumb_func_end MOD18_02241350
+
+ thumb_func_start MOD18_02241364
+MOD18_02241364: ; 0x02241364
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r7, r0, #0
+ add r0, sp, #0xc
+ bl FUN_020312BC
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldrb r0, [r7, r0]
+ mov r4, #0
+ cmp r0, #0
+ ble _0224141A
+ mov r0, #0
+ add r5, r7, #0
+ add r6, r7, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+_02241388:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ bl _ll_mul
+ add r2, r0, #0
+ add r3, r1, #0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x20]
+ add r0, r0, r2
+ str r0, [sp, #0xc]
+ adc r1, r3
+ ldr r0, [sp]
+ str r1, [sp, #0x10]
+ lsl r2, r0, #8
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ orr r2, r1
+ add r0, #0x48
+ strh r2, [r0]
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ bl _ll_mul
+ add r2, r0, #0
+ add r3, r1, #0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x20]
+ add r0, r0, r2
+ adc r1, r3
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ add r0, r1, #0
+ ldr r1, [sp, #4]
+ mov r2, #0xc0
+ mov r3, #0
+ bl _ll_mul
+ add r0, r5, #0
+ add r0, #0x4a
+ strh r1, [r0]
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0xc]
+ ldr r3, [sp, #0x10]
+ bl _ll_mul
+ add r2, r0, #0
+ add r3, r1, #0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x20]
+ add r0, r0, r2
+ adc r1, r3
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ add r0, r1, #0
+ ldr r1, [sp, #8]
+ ldr r2, _02241420 ; =0x0000FFFF
+ mov r3, #0
+ bl _ll_mul
+ mov r0, #0x45
+ strh r1, [r6, #8]
+ lsl r0, r0, #2
+ ldrb r0, [r7, r0]
+ add r4, r4, #1
+ add r5, r5, #4
+ add r6, r6, #2
+ cmp r4, r0
+ blt _02241388
+_0224141A:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02241420: .word 0x0000FFFF
+ thumb_func_end MOD18_02241364
+
+ thumb_func_start MOD18_02241424
+MOD18_02241424: ; 0x02241424
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ ldr r0, [r4]
+ cmp r0, #0xc
+ bls _02241432
+ b _02241698
+_02241432:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0224143E: ; jump table
+ .short _02241458 - _0224143E - 2 ; case 0
+ .short _02241472 - _0224143E - 2 ; case 1
+ .short _022414BE - _0224143E - 2 ; case 2
+ .short _02241500 - _0224143E - 2 ; case 3
+ .short _0224154C - _0224143E - 2 ; case 4
+ .short _0224158A - _0224143E - 2 ; case 5
+ .short _022415C0 - _0224143E - 2 ; case 6
+ .short _022415FA - _0224143E - 2 ; case 7
+ .short _02241642 - _0224143E - 2 ; case 8
+ .short _0224164E - _0224143E - 2 ; case 9
+ .short _02241698 - _0224143E - 2 ; case 10
+ .short _0224165E - _0224143E - 2 ; case 11
+ .short _02241680 - _0224143E - 2 ; case 12
+_02241458:
+ bl MOD18_022400A0
+ str r0, [r4, #4]
+ ldr r0, _0224169C ; =0x00000111
+ mov r1, #0
+ strb r1, [r4, r0]
+ bl MOD18_022417B4
+ ldr r0, [r4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_02241472:
+ mov r0, #1
+ mov r1, #0xa
+ mov r2, #0
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ ldr r0, _022416A0 ; =0x022513A0
+ ldr r1, _022416A4 ; =0x00000B3B
+ ldr r0, [r0, #4]
+ ldrb r1, [r0, r1]
+ cmp r1, #0x1d
+ bne _02241490
+ mov r2, #2
+ b _02241492
+_02241490:
+ mov r2, #0x1c
+_02241492:
+ mov r3, #0
+ str r3, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r1, #4
+ str r1, [sp, #8]
+ mov r1, #0x17
+ lsl r1, r1, #4
+ ldr r0, [r0, r1]
+ mov r1, #0x32
+ bl FUN_02008F34
+ ldr r1, _022416A0 ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x19
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_022414BE:
+ ldr r0, _022416A0 ; =0x022513A0
+ ldr r1, _022416A4 ; =0x00000B3B
+ ldr r0, [r0, #4]
+ ldrb r1, [r0, r1]
+ cmp r1, #0x1d
+ bne _022414CE
+ mov r2, #3
+ b _022414D0
+_022414CE:
+ mov r2, #0x1d
+_022414D0:
+ mov r3, #0
+ str r3, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r1, #7
+ str r1, [sp, #8]
+ mov r1, #4
+ str r1, [sp, #0xc]
+ mov r1, #0x5d
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #0x32
+ bl FUN_02008FEC
+ ldr r1, _022416A0 ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x65
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_02241500:
+ mov r0, #1
+ mov r1, #0
+ mov r2, #0xa
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ ldr r0, _022416A0 ; =0x022513A0
+ ldr r1, _022416A4 ; =0x00000B3B
+ ldr r0, [r0, #4]
+ ldrb r1, [r0, r1]
+ cmp r1, #0x1d
+ bne _0224151E
+ mov r2, #1
+ b _02241520
+_0224151E:
+ mov r2, #0x1b
+_02241520:
+ mov r3, #0
+ str r3, [sp]
+ mov r1, #2
+ str r1, [sp, #4]
+ mov r1, #4
+ str r1, [sp, #8]
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #0x32
+ bl FUN_020090AC
+ ldr r1, _022416A0 ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x66
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_0224154C:
+ ldr r0, _022416A0 ; =0x022513A0
+ ldr r1, _022416A4 ; =0x00000B3B
+ ldr r0, [r0, #4]
+ ldrb r1, [r0, r1]
+ cmp r1, #0x1d
+ bne _0224155C
+ mov r2, #0
+ b _0224155E
+_0224155C:
+ mov r2, #0x1a
+_0224155E:
+ mov r3, #0
+ str r3, [sp]
+ mov r1, #3
+ str r1, [sp, #4]
+ mov r1, #4
+ str r1, [sp, #8]
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #0x32
+ bl FUN_020090AC
+ ldr r1, _022416A0 ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x67
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_0224158A:
+ ldr r0, _022416A0 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl FUN_02009B78
+ ldr r0, _022416A0 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02009D68
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ bl MOD18_022418DC
+ add r0, r4, #0
+ bl MOD18_02241364
+ ldr r0, [r4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_022415C0:
+ ldr r0, _0224169C ; =0x00000111
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ ldrb r0, [r4, r0]
+ cmp r0, #0x1e
+ bls _02241698
+ mov r0, #1
+ sub r1, r0, #5
+ mov r2, #0
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x4c
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ mov r0, #7
+ str r0, [r4]
+ mov r0, #0x46
+ mov r1, #0
+ lsl r0, r0, #2
+ add sp, #0x10
+ str r1, [r4, r0]
+ pop {r4, pc}
+_022415FA:
+ ldr r0, _022416A0 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #8]
+ bl MOD18_02241AD0
+ cmp r0, #0
+ beq _02241622
+ ldr r0, _022416A8 ; =0x00000113
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ beq _02241618
+ mov r0, #0xb
+ str r0, [r4]
+ b _02241622
+_02241618:
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #8
+ str r0, [r4]
+_02241622:
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0x3c
+ bge _02241698
+ add r1, r1, #1
+ str r1, [r4, r0]
+ ldr r0, [r4, r0]
+ cmp r0, #0x3c
+ bne _02241698
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add sp, #0x10
+ pop {r4, pc}
+_02241642:
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add sp, #0x10
+ pop {r4, pc}
+_0224164E:
+ bl FUN_02031190
+ ldr r1, _022416A8 ; =0x00000113
+ ldrb r1, [r4, r1]
+ bl MOD18_022416B0
+ add sp, #0x10
+ pop {r4, pc}
+_0224165E:
+ ldr r0, _022416A8 ; =0x00000113
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r0, #0x10
+ bl FUN_0204F774
+ ldr r0, _022416AC ; =0x00000112
+ ldrb r0, [r4, r0]
+ bl MOD18_0223FD8C
+ ldr r0, _0224169C ; =0x00000111
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r0, #0xc
+ add sp, #0x10
+ str r0, [r4]
+ pop {r4, pc}
+_02241680:
+ ldr r0, _0224169C ; =0x00000111
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ ldrb r0, [r4, r0]
+ cmp r0, #8
+ bls _02241698
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #8
+ str r0, [r4]
+_02241698:
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_0224169C: .word 0x00000111
+_022416A0: .word 0x022513A0
+_022416A4: .word 0x00000B3B
+_022416A8: .word 0x00000113
+_022416AC: .word 0x00000112
+ thumb_func_end MOD18_02241424
+
+ thumb_func_start MOD18_022416B0
+MOD18_022416B0: ; 0x022416B0
+ push {r3, r4, lr}
+ sub sp, #4
+ ldr r0, _02241730 ; =0x022513A0
+ ldr r2, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r4, [r2, r0]
+ cmp r4, #0
+ beq _0224172C
+ ldr r0, _02241734 ; =0x00000113
+ ldrb r2, [r4, r0]
+ cmp r2, #0
+ beq _022416D6
+ cmp r1, #0
+ beq _022416D6
+ sub r0, r0, #1
+ ldrb r0, [r4, r0]
+ bl MOD18_0223FD8C
+_022416D6:
+ mov r1, #1
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200A274
+ mov r0, #1
+ mov r1, #0
+ sub r2, r1, #4
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ bl MOD18_02241800
+ mov r0, #0x10
+ bl FUN_0204F774
+ ldr r0, _02241730 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+ ldr r0, _02241730 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02016A18
+ ldr r1, _02241730 ; =0x022513A0
+ mov r0, #0xa3
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #2
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ add r0, #0x10
+ str r3, [r1, r0]
+_0224172C:
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_02241730: .word 0x022513A0
+_02241734: .word 0x00000113
+ thumb_func_end MOD18_022416B0
+
+ thumb_func_start MOD18_02241738
+MOD18_02241738: ; 0x02241738
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r1, #0x12
+ add r5, r0, #0
+ mov r0, #4
+ lsl r1, r1, #4
+ add r7, r2, #0
+ bl FUN_02016998
+ mov r2, #0x12
+ mov r1, #0
+ lsl r2, r2, #4
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, _022417A0 ; =0x00000113
+ add r1, r0, #0
+ strb r6, [r4, r0]
+ add r1, #9
+ str r5, [r4, r1]
+ ldr r1, _022417A4 ; =0x022513A0
+ ldr r2, [r1, #4]
+ ldr r1, _022417A8 ; =0x00000B3B
+ ldrb r1, [r2, r1]
+ cmp r1, #0x1d
+ bne _02241774
+ mov r1, #0x20
+ add r0, r1, #0
+ add r0, #0xf4
+ b _02241778
+_02241774:
+ mov r1, #0x10
+ add r0, r0, #1
+_02241778:
+ strb r1, [r4, r0]
+ ldr r0, _022417AC ; =0x00000112
+ mov r2, #0x64
+ strb r7, [r4, r0]
+ ldr r0, _022417A4 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ str r4, [r1, r0]
+ ldr r0, _022417B0 ; =MOD18_02241424
+ add r1, r4, #0
+ bl FUN_0200CA44
+ ldr r1, _022417A4 ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0xa3
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022417A0: .word 0x00000113
+_022417A4: .word 0x022513A0
+_022417A8: .word 0x00000B3B
+_022417AC: .word 0x00000112
+_022417B0: .word MOD18_02241424
+ thumb_func_end MOD18_02241738
+
+ thumb_func_start MOD18_022417B4
+MOD18_022417B4: ; 0x022417B4
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r1, _022417FC ; =0x022513A0
+ mov r0, #0x20
+ ldr r1, [r1, #4]
+ mov r2, #4
+ add r1, #0x48
+ bl FUN_02008C9C
+ ldr r1, _022417FC ; =0x022513A0
+ ldr r2, [r1, #4]
+ str r0, [r2, #0x44]
+ ldr r0, [r1, #4]
+ mov r2, #6
+ add r0, #0x48
+ mov r1, #0
+ lsl r2, r2, #0x12
+ bl FUN_02008D24
+ mov r4, #0
+ mov r7, #0x17
+ ldr r6, _022417FC ; =0x022513A0
+ add r5, r4, #0
+ lsl r7, r7, #4
+_022417E2:
+ mov r0, #2
+ add r1, r4, #0
+ mov r2, #4
+ bl FUN_02008DEC
+ ldr r1, [r6, #4]
+ add r4, r4, #1
+ add r1, r1, r5
+ add r5, r5, #4
+ str r0, [r1, r7]
+ cmp r4, #4
+ blt _022417E2
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022417FC: .word 0x022513A0
+ thumb_func_end MOD18_022417B4
+
+ thumb_func_start MOD18_02241800
+MOD18_02241800: ; 0x02241800
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r4, #0
+ cmp r6, #0
+ ble _02241834
+ ldr r7, _022418D8 ; =0x022513A0
+ add r5, r4, #0
+_0224180E:
+ ldr r0, [r7, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0224182C
+ bl FUN_0201FFC8
+ ldr r0, [r7, #4]
+ mov r1, #0
+ add r2, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ str r1, [r2, r0]
+_0224182C:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r6
+ blt _0224180E
+_02241834:
+ ldr r0, _022418D8 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0224185C
+ bl FUN_02009530
+ bl FUN_0201D2AC
+ cmp r0, #0
+ beq _0224185C
+ ldr r0, _022418D8 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl FUN_02009C0C
+_0224185C:
+ ldr r1, _022418D8 ; =0x022513A0
+ mov r0, #0x19
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #4
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ add r0, r0, #4
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0224188C
+ bl FUN_02009530
+ bl FUN_0201E1B4
+ cmp r0, #0
+ beq _0224188C
+ ldr r0, _022418D8 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02009E04
+_0224188C:
+ ldr r6, _022418D8 ; =0x022513A0
+ mov r5, #0
+ mov r0, #0x65
+ ldr r1, [r6, #4]
+ lsl r0, r0, #2
+ str r5, [r1, r0]
+ add r4, r5, #0
+ add r7, r5, #0
+_0224189C:
+ ldr r0, [r6, #4]
+ add r1, r0, r4
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _022418AE
+ bl FUN_02008E2C
+_022418AE:
+ ldr r0, [r6, #4]
+ add r5, r5, #1
+ add r1, r0, r4
+ mov r0, #0x17
+ lsl r0, r0, #4
+ add r4, r4, #4
+ str r7, [r1, r0]
+ cmp r5, #4
+ blt _0224189C
+ ldr r0, _022418D8 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x44]
+ cmp r0, #0
+ beq _022418CE
+ bl FUN_0201FD58
+_022418CE:
+ ldr r0, _022418D8 ; =0x022513A0
+ mov r1, #0
+ ldr r0, [r0, #4]
+ str r1, [r0, #0x44]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022418D8: .word 0x022513A0
+ thumb_func_end MOD18_02241800
+
+ thumb_func_start MOD18_022418DC
+MOD18_022418DC: ; 0x022418DC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x5c
+ add r7, r0, #0
+ ldr r0, _022419D4 ; =0x022513A0
+ mov r1, #0
+ ldr r0, [r0, #4]
+ sub r2, r1, #1
+ str r1, [sp]
+ str r2, [sp, #4]
+ str r2, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r3, #0x17
+ str r1, [sp, #0x10]
+ lsl r3, r3, #4
+ ldr r2, [r0, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r0, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r0, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r0, r2]
+ add r3, #0x64
+ str r2, [sp, #0x20]
+ str r1, [sp, #0x24]
+ add r0, r0, r3
+ add r2, r1, #0
+ add r3, r1, #0
+ str r1, [sp, #0x28]
+ bl FUN_02008AA4
+ ldr r4, _022419D4 ; =0x022513A0
+ mov r6, #0
+ ldr r1, [r4, #4]
+ ldr r0, [r1, #0x44]
+ str r0, [sp, #0x2c]
+ mov r0, #0x75
+ lsl r0, r0, #2
+ add r0, r1, r0
+ str r0, [sp, #0x30]
+ mov r1, #2
+ mov r0, #6
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x38]
+ lsr r0, r1, #5
+ str r1, [sp, #0x34]
+ str r6, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ add r0, sp, #0x2c
+ strh r6, [r0, #0x20]
+ mov r0, #1
+ str r0, [sp, #0x54]
+ mov r0, #4
+ str r6, [sp, #0x50]
+ str r0, [sp, #0x58]
+ cmp r7, #0
+ ble _022419BE
+ add r5, r6, #0
+_0224195E:
+ mov r0, #0x4b
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FE94
+ ldr r1, [r4, #4]
+ add r2, r1, r5
+ mov r1, #0x7e
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_02020130
+ ldr r0, [r4, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_020200BC
+ ldr r0, [r4, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_02020208
+ ldr r0, [r4, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_02020238
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, r7
+ blt _0224195E
+_022419BE:
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x5c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022419D4: .word 0x022513A0
+ thumb_func_end MOD18_022418DC
+
+ thumb_func_start MOD18_022419D8
+MOD18_022419D8: ; 0x022419D8
+ push {r4, lr}
+ lsl r4, r0, #2
+ ldr r0, _02241A00 ; =0x022513A0
+ ldr r0, [r0, #4]
+ add r1, r0, r4
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _022419FE
+ bl FUN_0201FFC8
+ ldr r0, _02241A00 ; =0x022513A0
+ mov r2, #0
+ ldr r0, [r0, #4]
+ add r1, r0, r4
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ str r2, [r1, r0]
+_022419FE:
+ pop {r4, pc}
+ .align 2, 0
+_02241A00: .word 0x022513A0
+ thumb_func_end MOD18_022419D8
+
+ thumb_func_start MOD18_02241A04
+MOD18_02241A04: ; 0x02241A04
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r3, r0, #0
+ add r0, r1, #0
+ lsl r5, r3, #2
+ add r1, r0, r5
+ add r1, #0x48
+ ldrh r1, [r1]
+ str r1, [sp]
+ add r1, r0, r5
+ add r1, #0x4a
+ ldrh r7, [r1]
+ cmp r2, #0
+ bne _02241A30
+ add r6, r0, #0
+ add r6, #8
+ lsl r4, r3, #1
+ mov r1, #1
+ ldrh r2, [r6, r4]
+ lsl r1, r1, #0xa
+ add r1, r2, r1
+ strh r1, [r6, r4]
+_02241A30:
+ lsl r1, r3, #1
+ add r0, r0, r1
+ ldrh r0, [r0, #8]
+ mov r2, #0x12
+ lsl r2, r2, #0xa
+ asr r0, r0, #4
+ lsl r6, r0, #1
+ ldr r0, _02241AAC ; =0x020FFA38
+ lsl r1, r6, #1
+ ldrsh r0, [r0, r1]
+ mov r3, #0
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsr r4, r2, #0xc
+ lsl r0, r1, #0x14
+ orr r4, r0
+ add r0, r6, #1
+ lsl r1, r0, #1
+ ldr r0, _02241AAC ; =0x020FFA38
+ mov r2, #0xa
+ ldrsh r0, [r0, r1]
+ lsl r2, r2, #0xa
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ bpl _02241A82
+ neg r1, r1
+_02241A82:
+ ldr r0, _02241AB0 ; =0x022513A0
+ ldr r2, [r0, #4]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ add r0, r2, r0
+ ldr r2, [r0, r5]
+ cmp r2, #0
+ beq _02241AA8
+ ldr r2, [sp]
+ lsl r2, r2, #0xc
+ add r2, r4, r2
+ str r2, [sp, #4]
+ lsl r2, r7, #0xc
+ add r1, r1, r2
+ str r1, [sp, #8]
+ ldr r0, [r0, r5]
+ add r1, sp, #4
+ bl FUN_02020044
+_02241AA8:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02241AAC: .word 0x020FFA38
+_02241AB0: .word 0x022513A0
+ thumb_func_end MOD18_02241A04
+
+ thumb_func_start MOD18_02241AB4
+MOD18_02241AB4: ; 0x02241AB4
+ cmp r0, #0
+ bne _02241AC4
+ ldr r1, _02241AC8 ; =0x022513A0
+ mov r0, #0
+ ldrsb r2, [r1, r0]
+ ldr r1, [r1, #4]
+ ldr r0, _02241ACC ; =0x00000B3A
+ strb r2, [r1, r0]
+_02241AC4:
+ bx lr
+ nop
+_02241AC8: .word 0x022513A0
+_02241ACC: .word 0x00000B3A
+ thumb_func_end MOD18_02241AB4
+
+ thumb_func_start MOD18_02241AD0
+MOD18_02241AD0: ; 0x02241AD0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ ldr r1, _02241D20 ; =0x022513A0
+ ldr r2, _02241D24 ; =MOD18_02241AB4
+ mov r3, #0
+ mov r0, #2
+ bl FUN_02004928
+ ldr r0, _02241D28 ; =0x022513A0
+ ldr r2, [r0, #4]
+ ldr r0, _02241D2C ; =0x00000B3B
+ ldrb r1, [r2, r0]
+ cmp r1, #0x1d
+ bne _02241AFE
+ sub r0, r0, #1
+ ldrsb r0, [r2, r0]
+ bl abs
+ mov r1, #0x21
+ bl _s32_div_f
+ b _02241B0C
+_02241AFE:
+ sub r0, r0, #1
+ ldrsb r0, [r2, r0]
+ bl abs
+ mov r1, #0x19
+ bl _s32_div_f
+_02241B0C:
+ mov r1, #0x11
+ lsl r1, r1, #4
+ ldrb r1, [r5, r1]
+ mov r2, #0x7e
+ lsl r2, r2, #2
+ add r1, r5, r1
+ add r1, #0xc8
+ strb r0, [r1]
+ ldr r0, _02241D28 ; =0x022513A0
+ add r1, r2, #0
+ mov r4, #0
+ ldr r0, [r0, #4]
+ sub r1, #0xe4
+ b _02241B34
+_02241B28:
+ lsl r3, r4, #2
+ add r3, r0, r3
+ ldr r3, [r3, r2]
+ cmp r3, #0
+ bne _02241B3A
+ add r4, r4, #1
+_02241B34:
+ ldrb r3, [r5, r1]
+ cmp r4, r3
+ blt _02241B28
+_02241B3A:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ cmp r4, r0
+ bne _02241B4A
+ add sp, #0x18
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02241B4A:
+ add r0, r5, #0
+ str r0, [sp, #0x10]
+ add r0, #0x4a
+ add r7, r5, #0
+ mov r4, #0
+ str r0, [sp, #0x10]
+ add r7, #0x48
+ b _02241CEE
+_02241B5A:
+ lsl r2, r4, #2
+ add r0, r5, r2
+ add r0, #0x48
+ ldrh r1, [r0]
+ cmp r1, #0
+ beq _02241B7C
+ mov r0, #1
+ lsl r0, r0, #8
+ cmp r1, r0
+ bhs _02241B7C
+ add r0, r5, r2
+ add r0, #0x4a
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _02241B7C
+ cmp r0, #0xc0
+ blo _02241B84
+_02241B7C:
+ add r0, r4, #0
+ bl MOD18_022419D8
+ b _02241CEC
+_02241B84:
+ mov r0, #0x11
+ lsl r0, r0, #4
+ ldrb r1, [r5, r0]
+ add r0, r5, r4
+ add r0, #0xf0
+ ldrb r0, [r0]
+ sub r0, r1, r0
+ bpl _02241B96
+ add r0, #0x28
+_02241B96:
+ add r0, r5, r0
+ add r0, #0xc8
+ lsl r1, r4, #2
+ ldrb r6, [r0]
+ add r0, r5, r1
+ add r0, #0x48
+ add r1, r5, r1
+ ldrh r0, [r0]
+ add r1, #0x4a
+ ldrh r1, [r1]
+ sub r0, #0x80
+ lsl r0, r0, #0xc
+ sub r1, #0x60
+ str r0, [sp, #4]
+ lsl r0, r1, #0xc
+ asr r1, r0, #0x1f
+ add r2, r0, #0
+ add r3, r1, #0
+ bl _ll_mul
+ mov r2, #2
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ ldr r2, _02241D30 ; =0x00000000
+ adc r1, r2
+ lsr r0, r0, #0xc
+ lsl r1, r1, #0x14
+ str r0, [sp, #8]
+ orr r0, r1
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ asr r1, r0, #0x1f
+ add r2, r0, #0
+ add r3, r1, #0
+ bl _ll_mul
+ mov r2, #2
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ ldr r2, _02241D30 ; =0x00000000
+ adc r1, r2
+ lsr r2, r0, #0xc
+ lsl r1, r1, #0x14
+ ldr r0, [sp, #8]
+ orr r2, r1
+ add r0, r2, r0
+ bl FX_Sqrt
+ str r0, [sp, #0xc]
+ cmp r6, #0
+ bne _02241C2A
+ mov r1, #0xa
+ lsl r1, r1, #0x10
+ bl FX_Div
+ mov r2, #0x26
+ asr r1, r0, #0x1f
+ lsl r2, r2, #0xc
+ mov r3, #0
+ bl _ll_mul
+ mov r2, #2
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ ldr r2, _02241D30 ; =0x00000000
+ adc r1, r2
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ asr r1, r0, #0xc
+ add r0, r5, r4
+ add r0, #0xf0
+ strb r1, [r0]
+ b _02241CE2
+_02241C2A:
+ lsl r2, r4, #2
+ add r0, r5, r2
+ add r0, #0x48
+ ldrh r1, [r0]
+ add r0, r5, r2
+ add r0, #0x4a
+ ldrh r0, [r0]
+ sub r1, #0x80
+ sub r0, #0x60
+ bne _02241C50
+ cmp r1, #0
+ ldrh r0, [r7, r2]
+ bge _02241C4A
+ sub r0, r0, r6
+ strh r0, [r7, r2]
+ b _02241CE2
+_02241C4A:
+ add r0, r0, r6
+ strh r0, [r7, r2]
+ b _02241CE2
+_02241C50:
+ cmp r1, #0
+ bne _02241C70
+ cmp r0, #0
+ bge _02241C64
+ ldr r0, [sp, #0x10]
+ ldrh r0, [r0, r2]
+ sub r1, r0, r6
+ ldr r0, [sp, #0x10]
+ strh r1, [r0, r2]
+ b _02241CE2
+_02241C64:
+ ldr r0, [sp, #0x10]
+ ldrh r0, [r0, r2]
+ add r1, r0, r6
+ ldr r0, [sp, #0x10]
+ strh r1, [r0, r2]
+ b _02241CE2
+_02241C70:
+ bl FX_Atan2
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0xc]
+ lsl r1, r6, #0xc
+ add r0, r0, r1
+ str r0, [sp]
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp]
+ asr r0, r0, #4
+ lsl r1, r0, #2
+ ldr r0, _02241D34 ; =0x020FFA38
+ asr r3, r2, #0x1f
+ ldrsh r0, [r0, r1]
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ ldr r2, _02241D30 ; =0x00000000
+ adc r1, r2
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ asr r1, r0, #0xc
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r2, [sp]
+ add r1, #0x60
+ add r0, #0x4a
+ strh r1, [r0]
+ ldr r0, [sp, #0x14]
+ asr r3, r2, #0x1f
+ asr r0, r0, #4
+ lsl r0, r0, #1
+ add r0, r0, #1
+ lsl r1, r0, #1
+ ldr r0, _02241D34 ; =0x020FFA38
+ ldrsh r0, [r0, r1]
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ ldr r2, _02241D30 ; =0x00000000
+ adc r1, r2
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ asr r1, r0, #0xc
+ lsl r0, r4, #2
+ add r0, r5, r0
+ add r1, #0x80
+ add r0, #0x48
+ strh r1, [r0]
+_02241CE2:
+ add r0, r4, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD18_02241A04
+_02241CEC:
+ add r4, r4, #1
+_02241CEE:
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ cmp r4, r0
+ bge _02241CFA
+ b _02241B5A
+_02241CFA:
+ mov r0, #0x11
+ lsl r0, r0, #4
+ ldrb r1, [r5, r0]
+ add r1, r1, #1
+ strb r1, [r5, r0]
+ ldrb r1, [r5, r0]
+ cmp r1, #0x28
+ blo _02241D0E
+ mov r1, #0
+ strb r1, [r5, r0]
+_02241D0E:
+ ldr r0, _02241D28 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x44]
+ bl FUN_0201FDEC
+ mov r0, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02241D20: .word 0x022513A0
+_02241D24: .word MOD18_02241AB4
+_02241D28: .word 0x022513A0
+_02241D2C: .word 0x00000B3B
+_02241D30: .word 0x00000000
+_02241D34: .word 0x020FFA38
+ thumb_func_end MOD18_02241AD0
+
+ thumb_func_start MOD18_02241D38
+MOD18_02241D38: ; 0x02241D38
+ push {r3, lr}
+ ldr r1, _02241D4C ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0x2a
+ lsl r1, r1, #4
+ ldr r1, [r2, r1]
+ cmp r1, #0
+ beq _02241D4A
+ blx r1
+_02241D4A:
+ pop {r3, pc}
+ .align 2, 0
+_02241D4C: .word 0x022513A0
+ thumb_func_end MOD18_02241D38
+
+ thumb_func_start MOD18_02241D50
+MOD18_02241D50: ; 0x02241D50
+ ldr r0, _02241D64 ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, _02241D68 ; =0x00000B3B
+ ldrb r0, [r1, r0]
+ cmp r0, #0x17
+ bne _02241D60
+ mov r0, #0x14
+ bx lr
+_02241D60:
+ mov r0, #7
+ bx lr
+ .align 2, 0
+_02241D64: .word 0x022513A0
+_02241D68: .word 0x00000B3B
+ thumb_func_end MOD18_02241D50
+
+ thumb_func_start MOD18_02241D6C
+MOD18_02241D6C: ; 0x02241D6C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, sp, #0x24
+ bl FUN_020312BC
+ bl MOD18_02241D50
+ str r0, [sp, #4]
+ ldr r0, _02241F00 ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, _02241F04 ; =0x00000B3B
+ ldrb r0, [r1, r0]
+ cmp r0, #0x17
+ bne _02241DB2
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #0x30]
+ ldr r2, [sp, #0x24]
+ ldr r3, [sp, #0x28]
+ bl _ll_mul
+ ldr r2, [sp, #0x34]
+ ldr r3, [sp, #0x38]
+ add r0, r2, r0
+ adc r3, r1
+ mov r1, #0
+ str r0, [sp, #0x24]
+ lsr r0, r3, #0x1f
+ lsl r1, r1, #1
+ orr r1, r0
+ add r0, r1, #1
+ str r3, [sp, #0x28]
+ str r0, [sp, #0xc]
+_02241DB2:
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #0x30]
+ ldr r2, [sp, #0x24]
+ ldr r3, [sp, #0x28]
+ bl _ll_mul
+ ldr r2, [sp, #0x34]
+ ldr r3, [sp, #0x38]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [sp, #0x24]
+ str r3, [sp, #0x28]
+ add r0, r3, #0
+ mov r1, #0
+ mov r2, #3
+ mov r3, #0
+ bl _ll_mul
+ ldr r0, [sp, #0xc]
+ mov r6, #0
+ add r0, r0, r1
+ add r0, r0, #5
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bgt _02241DE8
+ b _02241EFA
+_02241DE8:
+ mov r0, #0
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x20]
+_02241DF2:
+ ldr r0, [sp, #4]
+ sub r0, r0, r6
+ sub r4, r0, #1
+ ldr r0, [sp, #0xc]
+ cmp r6, r0
+ bge _02241E06
+ add r1, r5, r4
+ mov r0, #0
+ strb r0, [r1, #8]
+ b _02241E1A
+_02241E06:
+ ldr r0, [sp, #8]
+ cmp r6, r0
+ bge _02241E14
+ add r1, r5, r4
+ mov r0, #1
+ strb r0, [r1, #8]
+ b _02241E1A
+_02241E14:
+ add r1, r5, r4
+ mov r0, #2
+ strb r0, [r1, #8]
+_02241E1A:
+ ldrb r0, [r1, #8]
+ ldr r2, [sp, #0x24]
+ ldr r3, [sp, #0x28]
+ lsl r1, r0, #2
+ ldr r0, _02241F08 ; =0x022500C0
+ ldr r0, [r0, r1]
+ ldr r1, [sp, #0x30]
+ str r0, [sp]
+ lsl r7, r0, #1
+ mov r0, #0xc0
+ sub r0, r0, r7
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x2c]
+ bl _ll_mul
+ add r3, r1, #0
+ add r2, r0, #0
+ ldr r1, [sp, #0x34]
+ ldr r0, [sp, #0x38]
+ add r1, r1, r2
+ adc r0, r3
+ str r1, [sp, #0x24]
+ mov r1, #1
+ lsl r1, r1, #8
+ str r0, [sp, #0x28]
+ sub r2, r1, r7
+ beq _02241E5A
+ ldr r1, [sp, #0x14]
+ mov r3, #0
+ bl _ll_mul
+ add r0, r1, #0
+_02241E5A:
+ lsl r1, r4, #3
+ add r7, r5, r1
+ ldr r1, [sp]
+ add r0, r1, r0
+ lsl r0, r0, #0xc
+ str r0, [r7, #0x44]
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #0x30]
+ ldr r2, [sp, #0x24]
+ ldr r3, [sp, #0x28]
+ bl _ll_mul
+ add r2, r0, #0
+ ldr r0, [sp, #0x34]
+ ldr r3, [sp, #0x38]
+ add r0, r0, r2
+ str r0, [sp, #0x24]
+ adc r3, r1
+ ldr r0, [sp, #0x10]
+ str r3, [sp, #0x28]
+ cmp r0, #0
+ beq _02241E94
+ ldr r1, [sp, #0x18]
+ add r0, r3, #0
+ ldr r2, [sp, #0x10]
+ mov r3, #0
+ bl _ll_mul
+ add r3, r1, #0
+_02241E94:
+ ldr r0, [sp]
+ add r0, r0, r3
+ lsl r0, r0, #0xc
+ str r0, [r7, #0x48]
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #0x30]
+ ldr r2, [sp, #0x24]
+ ldr r3, [sp, #0x28]
+ bl _ll_mul
+ ldr r3, [sp, #0x34]
+ ldr r2, [sp, #0x38]
+ add r0, r3, r0
+ adc r2, r1
+ str r0, [sp, #0x24]
+ lsl r0, r4, #1
+ add r4, r5, r0
+ str r2, [sp, #0x28]
+ add r0, r2, #0
+ ldr r1, [sp, #0x1c]
+ ldr r2, _02241F0C ; =0x0000FFFF
+ mov r3, #0
+ bl _ll_mul
+ strh r1, [r4, #0x1c]
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #0x30]
+ ldr r2, [sp, #0x24]
+ ldr r3, [sp, #0x28]
+ bl _ll_mul
+ ldr r2, [sp, #0x34]
+ ldr r3, [sp, #0x38]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [sp, #0x24]
+ ldr r1, [sp, #0x20]
+ ldr r2, _02241F0C ; =0x0000FFFF
+ str r3, [sp, #0x28]
+ add r0, r3, #0
+ mov r3, #0
+ bl _ll_mul
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ strh r1, [r4, r0]
+ ldr r0, [sp, #4]
+ add r6, r6, #1
+ cmp r6, r0
+ bge _02241EFA
+ b _02241DF2
+_02241EFA:
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02241F00: .word 0x022513A0
+_02241F04: .word 0x00000B3B
+_02241F08: .word 0x022500C0
+_02241F0C: .word 0x0000FFFF
+ thumb_func_end MOD18_02241D6C
+
+ thumb_func_start MOD18_02241F10
+MOD18_02241F10: ; 0x02241F10
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ ldr r0, [r4]
+ cmp r0, #0xc
+ bls _02241F1E
+ b _02242166
+_02241F1E:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02241F2A: ; jump table
+ .short _02241F44 - _02241F2A - 2 ; case 0
+ .short _02241F60 - _02241F2A - 2 ; case 1
+ .short _02241FA0 - _02241F2A - 2 ; case 2
+ .short _02241FD4 - _02241F2A - 2 ; case 3
+ .short _02242014 - _02241F2A - 2 ; case 4
+ .short _02242044 - _02241F2A - 2 ; case 5
+ .short _0224205A - _02241F2A - 2 ; case 6
+ .short _0224209A - _02241F2A - 2 ; case 7
+ .short _022420FE - _02241F2A - 2 ; case 8
+ .short _02242114 - _02241F2A - 2 ; case 9
+ .short _02242166 - _02241F2A - 2 ; case 10
+ .short _02242128 - _02241F2A - 2 ; case 11
+ .short _0224214C - _02241F2A - 2 ; case 12
+_02241F44:
+ bl MOD18_022400A0
+ str r0, [r4, #4]
+ mov r0, #0x57
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r4, r0]
+ bl MOD18_022417B4
+ ldr r0, [r4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_02241F60:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r0, _0224216C ; =0x022513A0
+ mov r2, #6
+ ldr r1, [r0, #4]
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0x32
+ bl FUN_02008F34
+ ldr r1, _0224216C ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0x19
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ mov r0, #1
+ str r0, [sp]
+ mov r1, #0xa
+ mov r2, #0
+ add r3, r0, #0
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_02241FA0:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r2, #7
+ str r2, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ ldr r0, _0224216C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x32
+ bl FUN_02008FEC
+ ldr r1, _0224216C ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x65
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_02241FD4:
+ mov r0, #1
+ mov r1, #0
+ mov r2, #0xa
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r0, _0224216C ; =0x022513A0
+ mov r2, #5
+ ldr r1, [r0, #4]
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x32
+ bl FUN_020090AC
+ ldr r1, _0224216C ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x66
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_02242014:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r2, #4
+ ldr r0, _0224216C ; =0x022513A0
+ str r2, [sp, #8]
+ ldr r1, [r0, #4]
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x32
+ bl FUN_020090AC
+ ldr r1, _0224216C ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x67
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_02242044:
+ add r0, r4, #0
+ bl MOD18_02241D6C
+ add r0, r4, #0
+ bl MOD18_022421D4
+ ldr r0, [r4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_0224205A:
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ ldrb r0, [r4, r0]
+ cmp r0, #0x1e
+ bls _02242166
+ mov r1, #3
+ ldr r0, _02242170 ; =0x0400006C
+ mvn r1, r1
+ bl GXx_SetMasterBrightness_
+ mov r0, #7
+ str r0, [r4]
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x4d
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ mov r0, #0x16
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ mov r0, #0x66
+ lsl r0, r0, #4
+ bl FUN_020054C8
+ add sp, #0x10
+ pop {r4, pc}
+_0224209A:
+ mov r0, #7
+ str r0, [sp]
+ ldr r0, _02242174 ; =0x04000050
+ mov r1, #0x10
+ mov r2, #1
+ mov r3, #0xe
+ bl G2x_SetBlendAlpha_
+ ldr r0, _0224216C ; =0x022513A0
+ add r1, r4, #0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #8]
+ bl MOD18_022423B0
+ cmp r0, #0
+ beq _022420DE
+ mov r0, #0x66
+ lsl r0, r0, #4
+ mov r1, #0
+ bl FUN_020054F0
+ ldr r0, _02242178 ; =0x0000015E
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ beq _022420D4
+ mov r0, #0xb
+ str r0, [r4]
+ b _022420DE
+_022420D4:
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #8
+ str r0, [r4]
+_022420DE:
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ cmp r1, #0x3c
+ bge _02242166
+ add r1, r1, #1
+ str r1, [r4, r0]
+ ldr r0, [r4, r0]
+ cmp r0, #0x3c
+ bne _02242166
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add sp, #0x10
+ pop {r4, pc}
+_022420FE:
+ mov r0, #0x66
+ lsl r0, r0, #4
+ mov r1, #0
+ bl FUN_020054F0
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add sp, #0x10
+ pop {r4, pc}
+_02242114:
+ mov r0, #0xa
+ str r0, [r4]
+ bl FUN_02031190
+ ldr r1, _02242178 ; =0x0000015E
+ ldrb r1, [r4, r1]
+ bl MOD18_022425D4
+ add sp, #0x10
+ pop {r4, pc}
+_02242128:
+ ldr r0, _02242178 ; =0x0000015E
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r0, #0x10
+ bl FUN_0204F774
+ ldr r0, _0224217C ; =0x0000015D
+ ldrb r0, [r4, r0]
+ bl MOD18_0223FD8C
+ mov r0, #0x57
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r4, r0]
+ mov r0, #0xc
+ add sp, #0x10
+ str r0, [r4]
+ pop {r4, pc}
+_0224214C:
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ ldrb r0, [r4, r0]
+ cmp r0, #8
+ bls _02242166
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #8
+ str r0, [r4]
+_02242166:
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_0224216C: .word 0x022513A0
+_02242170: .word 0x0400006C
+_02242174: .word 0x04000050
+_02242178: .word 0x0000015E
+_0224217C: .word 0x0000015D
+ thumb_func_end MOD18_02241F10
+
+ thumb_func_start MOD18_02242180
+MOD18_02242180: ; 0x02242180
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r1, #0x59
+ mov r0, #4
+ lsl r1, r1, #2
+ add r6, r2, #0
+ bl FUN_020169D8
+ mov r2, #0x59
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, _022421C4 ; =0x0000015E
+ mov r2, #0x64
+ strb r5, [r4, r0]
+ ldr r0, _022421C8 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ str r4, [r1, r0]
+ ldr r0, _022421CC ; =MOD18_02241F10
+ add r1, r4, #0
+ bl FUN_0200CA44
+ ldr r1, _022421C8 ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0xa3
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, _022421D0 ; =0x0000015D
+ strb r6, [r4, r0]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022421C4: .word 0x0000015E
+_022421C8: .word 0x022513A0
+_022421CC: .word MOD18_02241F10
+_022421D0: .word 0x0000015D
+ thumb_func_end MOD18_02242180
+
+ thumb_func_start MOD18_022421D4
+MOD18_022421D4: ; 0x022421D4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x60
+ str r0, [sp, #0x2c]
+ ldr r0, _0224231C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl FUN_02009B78
+ ldr r0, _0224231C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02009D68
+ ldr r0, _0224231C ; =0x022513A0
+ mov r1, #0
+ ldr r0, [r0, #4]
+ mov r3, #0x17
+ str r1, [sp]
+ sub r2, r1, #1
+ str r2, [sp, #4]
+ str r2, [sp, #8]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ lsl r3, r3, #4
+ ldr r2, [r0, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r0, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r0, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r0, r2]
+ add r3, #0x64
+ str r2, [sp, #0x20]
+ str r1, [sp, #0x24]
+ add r0, r0, r3
+ add r2, r1, #0
+ add r3, r1, #0
+ str r1, [sp, #0x28]
+ bl FUN_02008AA4
+ ldr r0, _0224231C ; =0x022513A0
+ mov r4, #0
+ ldr r1, [r0, #4]
+ ldr r0, [r1, #0x44]
+ str r0, [sp, #0x30]
+ mov r0, #0x75
+ lsl r0, r0, #2
+ add r0, r1, r0
+ str r0, [sp, #0x34]
+ mov r1, #2
+ mov r0, #6
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x3c]
+ lsr r0, r1, #5
+ str r1, [sp, #0x38]
+ str r4, [sp, #0x40]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x4c]
+ add r0, sp, #0x30
+ strh r4, [r0, #0x20]
+ mov r0, #1
+ str r0, [sp, #0x58]
+ mov r0, #4
+ str r4, [sp, #0x54]
+ str r0, [sp, #0x5c]
+ bl MOD18_02241D50
+ cmp r0, #0
+ ble _02242308
+ add r5, r4, #0
+ ldr r6, _0224231C ; =0x022513A0
+ add r7, r5, #0
+_0224227A:
+ mov r0, #0x4b
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x38]
+ str r0, [sp, #0x3c]
+ add r0, sp, #0x30
+ bl FUN_0201FE94
+ ldr r1, [r6, #4]
+ add r2, r1, r5
+ mov r1, #0x7e
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200EC
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r1, [sp, #0x2c]
+ add r1, r1, r4
+ ldrb r1, [r1, #8]
+ lsl r1, r1, #1
+ bl FUN_02020130
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ lsl r1, r7, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_02020398
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_02020238
+ add r5, r5, #4
+ add r7, r7, #4
+ add r4, r4, #1
+ bl MOD18_02241D50
+ cmp r4, r0
+ blt _0224227A
+_02242308:
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x60
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224231C: .word 0x022513A0
+ thumb_func_end MOD18_022421D4
+
+ thumb_func_start MOD18_02242320
+MOD18_02242320: ; 0x02242320
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _022423A8 ; =0x022513A0
+ add r4, r1, #0
+ ldr r1, [r0, #4]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ add r1, r1, r0
+ lsl r0, r5, #2
+ ldr r2, [r1, r0]
+ cmp r2, #0
+ beq _022423A4
+ lsl r2, r5, #3
+ add r3, r4, r2
+ ldr r2, [r3, #0x44]
+ str r2, [sp]
+ ldr r2, [r3, #0x48]
+ str r2, [sp, #4]
+ ldr r0, [r1, r0]
+ add r1, sp, #0
+ bl FUN_02020044
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ add r2, r4, r0
+ lsl r1, r5, #1
+ mov r3, #0x64
+ add r4, r5, #0
+ mul r4, r3
+ mov r3, #0x25
+ lsl r3, r3, #4
+ ldrh r0, [r2, r1]
+ add r3, r4, r3
+ add r0, r0, r3
+ strh r0, [r2, r1]
+ ldrh r0, [r2, r1]
+ asr r0, r0, #4
+ lsl r1, r0, #2
+ ldr r0, _022423AC ; =0x020FFA38
+ ldrsh r1, [r0, r1]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ mov r1, #5
+ asr r0, r0, #0x10
+ lsl r1, r1, #0xe
+ bl FX_Div
+ mov r1, #1
+ lsl r1, r1, #0xc
+ sub r0, r1, r0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, _022423A8 ; =0x022513A0
+ ldr r1, [r0, #4]
+ lsl r0, r5, #2
+ add r1, r1, r0
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #0
+ bl FUN_02020064
+_022423A4:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_022423A8: .word 0x022513A0
+_022423AC: .word 0x020FFA38
+ thumb_func_end MOD18_02242320
+
+ thumb_func_start MOD18_022423B0
+MOD18_022423B0: ; 0x022423B0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r6, #0
+ str r1, [sp]
+ add r4, r6, #0
+ bl MOD18_02241D50
+ cmp r0, #0
+ ble _022423E6
+ ldr r5, [sp]
+_022423C4:
+ add r0, r5, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _022423D8
+ ldr r1, [sp]
+ add r0, r4, #0
+ bl MOD18_02242320
+ b _022423DA
+_022423D8:
+ add r6, r6, #1
+_022423DA:
+ add r5, r5, #4
+ add r4, r4, #1
+ bl MOD18_02241D50
+ cmp r4, r0
+ blt _022423C4
+_022423E6:
+ bl MOD18_02241D50
+ cmp r6, r0
+ bne _022423F4
+ add sp, #0x14
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_022423F4:
+ ldr r0, _02242580 ; =0x021C48F8
+ ldrh r0, [r0, #0x20]
+ cmp r0, #0
+ beq _022424C4
+ mov r5, #0
+ bl MOD18_02241D50
+ cmp r0, #0
+ ble _022424C4
+ ldr r6, [sp]
+ add r4, r6, #0
+_0224240A:
+ add r0, r6, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _022424B6
+ ldr r0, _02242580 ; =0x021C48F8
+ ldrh r0, [r0, #0x1e]
+ lsl r1, r0, #0xc
+ ldr r0, [r4, #0x48]
+ sub r0, r1, r0
+ str r0, [sp, #0xc]
+ asr r7, r0, #0x1f
+ ldr r0, _02242580 ; =0x021C48F8
+ ldrh r0, [r0, #0x1c]
+ lsl r1, r0, #0xc
+ ldr r0, [r4, #0x44]
+ sub r0, r1, r0
+ asr r1, r0, #0x1f
+ add r2, r0, #0
+ add r3, r1, #0
+ bl _ll_mul
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0xc]
+ str r1, [sp, #8]
+ add r1, r7, #0
+ add r2, r0, #0
+ add r3, r7, #0
+ bl _ll_mul
+ add r7, r0, #0
+ add r3, r1, #0
+ mov r0, #2
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0xa
+ add r2, r1, r0
+ ldr r1, [sp, #8]
+ ldr r0, _02242584 ; =0x00000000
+ adc r1, r0
+ str r1, [sp, #8]
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ mov r0, #2
+ lsl r0, r0, #0xa
+ ldr r2, _02242584 ; =0x00000000
+ add r0, r7, r0
+ adc r3, r2
+ lsl r2, r3, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r2
+ add r0, r1, r0
+ bl FX_Sqrt
+ ldr r1, [sp]
+ add r1, r1, r5
+ ldrb r1, [r1, #8]
+ lsl r2, r1, #2
+ ldr r1, _02242588 ; =0x022500C0
+ ldr r1, [r1, r2]
+ lsl r1, r1, #0xc
+ cmp r1, r0
+ ble _022424B6
+ ldr r0, _0224258C ; =0x00000626
+ bl FUN_020054C8
+ ldr r0, _02242590 ; =0x022513A0
+ lsl r4, r5, #2
+ ldr r0, [r0, #4]
+ add r1, r0, r4
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r1, [sp]
+ add r1, r1, r5
+ ldrb r1, [r1, #8]
+ lsl r1, r1, #1
+ add r1, r1, #1
+ bl FUN_02020130
+ ldr r0, [sp]
+ mov r1, #1
+ add r0, r0, r4
+ add r0, #0xe4
+ str r1, [r0]
+ b _022424C4
+_022424B6:
+ add r6, r6, #4
+ add r4, #8
+ add r5, r5, #1
+ bl MOD18_02241D50
+ cmp r5, r0
+ blt _0224240A
+_022424C4:
+ mov r6, #0
+ bl MOD18_02241D50
+ cmp r0, #0
+ ble _02242570
+ ldr r7, [sp]
+ add r4, r7, #0
+ add r5, r7, #0
+_022424D4:
+ add r0, r7, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02242560
+ ldrh r0, [r4, #0x1c]
+ asr r0, r0, #4
+ lsl r1, r0, #2
+ ldr r0, _02242594 ; =0x020FFA38
+ ldrsh r1, [r0, r1]
+ ldr r0, [r5, #0x48]
+ sub r0, r0, r1
+ str r0, [r5, #0x48]
+ ldrh r1, [r4, #0x1c]
+ ldr r0, [r5, #0x44]
+ asr r1, r1, #4
+ lsl r2, r1, #2
+ ldr r1, _02242594 ; =0x020FFA38
+ add r2, r1, r2
+ mov r1, #2
+ ldrsh r1, [r2, r1]
+ add r0, r0, r1
+ str r0, [r5, #0x44]
+ ldr r0, [sp]
+ add r0, r0, r6
+ ldrb r0, [r0, #8]
+ lsl r1, r0, #2
+ ldr r0, _02242588 ; =0x022500C0
+ ldr r1, [r0, r1]
+ ldr r0, [r5, #0x48]
+ lsl r3, r1, #0xc
+ cmp r0, r3
+ bge _02242520
+ ldrh r2, [r4, #0x1c]
+ ldr r0, _02242598 ; =0x0000FFFF
+ sub r0, r0, r2
+ strh r0, [r4, #0x1c]
+ b _02242532
+_02242520:
+ mov r2, #0xc0
+ sub r2, r2, r1
+ lsl r2, r2, #0xc
+ cmp r0, r2
+ blt _02242532
+ ldrh r2, [r4, #0x1c]
+ ldr r0, _02242598 ; =0x0000FFFF
+ sub r0, r0, r2
+ strh r0, [r4, #0x1c]
+_02242532:
+ ldr r0, [r5, #0x44]
+ cmp r0, r3
+ bge _02242548
+ ldrh r1, [r4, #0x1c]
+ mov r0, #2
+ lsl r0, r0, #0xe
+ sub r1, r1, r0
+ ldr r0, _02242598 ; =0x0000FFFF
+ sub r0, r0, r1
+ strh r0, [r4, #0x1c]
+ b _02242560
+_02242548:
+ mov r2, #1
+ lsl r2, r2, #8
+ sub r1, r2, r1
+ lsl r1, r1, #0xc
+ cmp r0, r1
+ blt _02242560
+ ldrh r1, [r4, #0x1c]
+ lsl r0, r2, #7
+ sub r1, r1, r0
+ ldr r0, _02242598 ; =0x0000FFFF
+ sub r0, r0, r1
+ strh r0, [r4, #0x1c]
+_02242560:
+ add r7, r7, #4
+ add r4, r4, #2
+ add r5, #8
+ add r6, r6, #1
+ bl MOD18_02241D50
+ cmp r6, r0
+ blt _022424D4
+_02242570:
+ ldr r0, _02242590 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x44]
+ bl FUN_0201FDEC
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02242580: .word 0x021C48F8
+_02242584: .word 0x00000000
+_02242588: .word 0x022500C0
+_0224258C: .word 0x00000626
+_02242590: .word 0x022513A0
+_02242594: .word 0x020FFA38
+_02242598: .word 0x0000FFFF
+ thumb_func_end MOD18_022423B0
+
+ thumb_func_start MOD18_0224259C
+MOD18_0224259C: ; 0x0224259C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ mov r1, #2
+ add r5, r0, #0
+ add r6, r2, #0
+ bl FUN_0204E758
+ bl FUN_02031190
+ cmp r5, r0
+ bne _022425C2
+ ldr r0, _022425C4 ; =0x022513A0
+ add r1, r4, #0
+ ldr r0, [r0, #4]
+ add r2, r6, #0
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #8]
+ bl MOD18_02242180
+_022425C2:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022425C4: .word 0x022513A0
+ thumb_func_end MOD18_0224259C
+
+ thumb_func_start MOD18_022425C8
+MOD18_022425C8: ; 0x022425C8
+ ldr r3, _022425D0 ; =0x0204E759
+ mov r1, #2
+ bx r3
+ nop
+_022425D0: .word 0x0204E759
+ thumb_func_end MOD18_022425C8
+
+ thumb_func_start MOD18_022425D4
+MOD18_022425D4: ; 0x022425D4
+ push {r3, r4, r5, lr}
+ ldr r0, _02242658 ; =0x022513A0
+ add r5, r1, #0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r4, [r1, r0]
+ cmp r4, #0
+ beq _02242656
+ mov r0, #0x66
+ lsl r0, r0, #4
+ mov r1, #0
+ bl FUN_020054F0
+ ldr r0, _0224265C ; =0x0000015E
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _02242604
+ cmp r5, #0
+ beq _02242604
+ sub r0, r0, #1
+ ldrb r0, [r4, r0]
+ bl MOD18_0223FD8C
+_02242604:
+ ldr r1, _02242660 ; =0x04000050
+ mov r0, #0
+ strh r0, [r1]
+ mov r1, #1
+ add r2, r1, #0
+ bl FUN_0200A274
+ ldr r0, _02242664 ; =0x0400006C
+ mov r1, #0
+ bl GXx_SetMasterBrightness_
+ bl MOD18_02241D50
+ bl MOD18_02241800
+ mov r0, #0x10
+ bl FUN_0204F774
+ ldr r0, _02242658 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+ ldr r0, _02242658 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02016A18
+ ldr r1, _02242658 ; =0x022513A0
+ mov r0, #0xa3
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #2
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ add r0, #0x10
+ str r3, [r1, r0]
+_02242656:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02242658: .word 0x022513A0
+_0224265C: .word 0x0000015E
+_02242660: .word 0x04000050
+_02242664: .word 0x0400006C
+ thumb_func_end MOD18_022425D4
+
+ thumb_func_start MOD18_02242668
+MOD18_02242668: ; 0x02242668
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x5c
+ ldr r0, _02242798 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl FUN_02009B78
+ ldr r0, _02242798 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02009D68
+ ldr r0, _02242798 ; =0x022513A0
+ mov r1, #0
+ ldr r0, [r0, #4]
+ mov r3, #0x17
+ str r1, [sp]
+ sub r2, r1, #1
+ str r2, [sp, #4]
+ str r2, [sp, #8]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ lsl r3, r3, #4
+ ldr r2, [r0, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r0, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r0, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r0, r2]
+ add r3, #0x64
+ str r2, [sp, #0x20]
+ str r1, [sp, #0x24]
+ add r0, r0, r3
+ add r2, r1, #0
+ add r3, r1, #0
+ str r1, [sp, #0x28]
+ bl FUN_02008AA4
+ ldr r4, _02242798 ; =0x022513A0
+ mov r6, #0
+ ldr r1, [r4, #4]
+ mov r7, #0x19
+ ldr r0, [r1, #0x44]
+ add r5, r6, #0
+ str r0, [sp, #0x2c]
+ mov r0, #0x75
+ lsl r0, r0, #2
+ add r0, r1, r0
+ str r0, [sp, #0x30]
+ mov r1, #2
+ mov r0, #6
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x38]
+ lsr r0, r1, #5
+ str r1, [sp, #0x34]
+ str r6, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ add r0, sp, #0x2c
+ strh r6, [r0, #0x20]
+ mov r0, #1
+ str r0, [sp, #0x54]
+ mov r0, #4
+ str r6, [sp, #0x50]
+ str r0, [sp, #0x58]
+ lsl r7, r7, #0xe
+_02242704:
+ add r0, sp, #0x2c
+ str r7, [sp, #0x34]
+ str r7, [sp, #0x38]
+ bl FUN_0201FE94
+ ldr r1, [r4, #4]
+ add r2, r1, r5
+ mov r1, #0x7e
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #2
+ bl FUN_02020130
+ ldr r0, [r4, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r4, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r4, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_02020208
+ ldr r0, [r4, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0xf
+ sub r1, r1, r6
+ bl FUN_02020310
+ ldr r0, [r4, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_02020238
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #0xf
+ blt _02242704
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x5c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02242798: .word 0x022513A0
+ thumb_func_end MOD18_02242668
+
+ thumb_func_start MOD18_0224279C
+MOD18_0224279C: ; 0x0224279C
+ push {r4, lr}
+ lsl r1, r1, #2
+ add r4, r0, r1
+ str r2, [r4, #8]
+ add r0, r4, #0
+ ldr r2, [sp, #8]
+ add r0, #0x80
+ str r2, [r0]
+ str r3, [r4, #0x44]
+ ldr r0, [sp, #0xc]
+ add r4, #0xbc
+ str r0, [r4]
+ ldr r0, _022427C8 ; =0x022513A0
+ ldr r0, [r0, #4]
+ add r1, r0, r1
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ pop {r4, pc}
+ .align 2, 0
+_022427C8: .word 0x022513A0
+ thumb_func_end MOD18_0224279C
+
+ thumb_func_start MOD18_022427CC
+MOD18_022427CC: ; 0x022427CC
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ cmp r1, #4
+ bhi _022427EC
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022427E2: ; jump table
+ .short _02242946 - _022427E2 - 2 ; case 0
+ .short _0224290E - _022427E2 - 2 ; case 1
+ .short _022428BE - _022427E2 - 2 ; case 2
+ .short _02242856 - _022427E2 - 2 ; case 3
+ .short _022427EC - _022427E2 - 2 ; case 4
+_022427EC:
+ mov r0, #2
+ mov r2, #0x69
+ str r0, [sp]
+ sub r0, r0, #6
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0xb7
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #0xb
+ sub r3, r3, #5
+ bl MOD18_0224279C
+ mov r0, #1
+ mvn r0, r0
+ mov r2, #0x8c
+ str r0, [sp]
+ sub r0, r0, #2
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0x94
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #0xc
+ sub r3, #0xf
+ bl MOD18_0224279C
+ mov r0, #1
+ mvn r0, r0
+ mov r2, #0x87
+ str r0, [sp]
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0x99
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #0xd
+ sub r3, #0x14
+ bl MOD18_0224279C
+ mov r0, #2
+ mov r2, #0x78
+ str r0, [sp]
+ mov r0, #0
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0xa8
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #0xe
+ sub r3, #0xb
+ bl MOD18_0224279C
+_02242856:
+ mov r0, #3
+ mov r2, #0x80
+ str r0, [sp]
+ sub r0, r0, #7
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0xa0
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #7
+ sub r3, r3, #5
+ bl MOD18_0224279C
+ mov r0, #2
+ mvn r0, r0
+ mov r2, #0x84
+ str r0, [sp]
+ sub r0, r0, #1
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0x9c
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #8
+ sub r3, #0xf
+ bl MOD18_0224279C
+ mov r0, #1
+ mov r2, #0x70
+ str r0, [sp]
+ sub r0, r0, #3
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0xb0
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #9
+ bl MOD18_0224279C
+ mov r0, #1
+ mov r2, #0x73
+ str r0, [sp]
+ sub r0, r0, #3
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0xad
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #0xa
+ add r3, r3, #2
+ bl MOD18_0224279C
+_022428BE:
+ mov r0, #2
+ mov r2, #0x8c
+ str r0, [sp]
+ sub r0, r0, #5
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0x94
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #4
+ sub r3, #0xa
+ bl MOD18_0224279C
+ mov r0, #1
+ mvn r0, r0
+ mov r2, #0x8c
+ str r0, [sp]
+ sub r0, r0, #1
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0x94
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #5
+ sub r3, #0x14
+ bl MOD18_0224279C
+ mov r0, #0
+ mvn r0, r0
+ mov r2, #0x6e
+ str r0, [sp]
+ sub r0, r0, #1
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0xb2
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD18_0224279C
+_0224290E:
+ mov r0, #1
+ mvn r0, r0
+ mov r2, #0x78
+ str r0, [sp]
+ sub r0, r0, #1
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0xa8
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #2
+ sub r3, #0x1e
+ bl MOD18_0224279C
+ mov r0, #1
+ mvn r0, r0
+ mov r2, #0x64
+ str r0, [sp]
+ sub r0, r0, #1
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0xbc
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #3
+ sub r3, #0xa
+ bl MOD18_0224279C
+_02242946:
+ mov r0, #2
+ mov r2, #0x80
+ str r0, [sp]
+ sub r0, r0, #5
+ add r3, r2, #0
+ str r0, [sp, #4]
+ add r3, #0xa0
+ ldr r3, [r4, r3]
+ add r0, r4, #0
+ mov r1, #1
+ sub r3, #0x1e
+ bl MOD18_0224279C
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD18_022427CC
+
+ thumb_func_start MOD18_02242964
+MOD18_02242964: ; 0x02242964
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ mov r7, #0
+ add r4, r6, #0
+ add r5, r7, #0
+_02242970:
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _022429E6
+ ldr r0, [r4, #8]
+ add r0, r0, r1
+ str r0, [r4, #8]
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r1, [r4, #0x44]
+ ldr r0, [r0]
+ add r0, r1, r0
+ str r0, [r4, #0x44]
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r1, [r0]
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldrb r0, [r6, r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ ldr r0, [r4, #0x44]
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r0, _022429F4 ; =0x022513A0
+ ldr r0, [r0, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #0
+ bl FUN_02020044
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r6, r0]
+ ldr r1, [r4, #0x44]
+ add r0, #0x23
+ cmp r1, r0
+ ble _022429E6
+ ldr r0, _022429F4 ; =0x022513A0
+ ldr r0, [r0, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r1, r4, #0
+ add r1, #0x80
+ mov r0, #0
+ str r0, [r1]
+_022429E6:
+ add r7, r7, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r7, #0xf
+ blt _02242970
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022429F4: .word 0x022513A0
+ thumb_func_end MOD18_02242964
+
+ thumb_func_start MOD18_022429F8
+MOD18_022429F8: ; 0x022429F8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r0, _02242D64 ; =0x00000125
+ add r4, r1, #0
+ ldrb r1, [r4, r0]
+ cmp r1, #6
+ bhi _02242AFE
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02242A12: ; jump table
+ .short _02242A20 - _02242A12 - 2 ; case 0
+ .short _02242A68 - _02242A12 - 2 ; case 1
+ .short _02242A98 - _02242A12 - 2 ; case 2
+ .short _02242B22 - _02242A12 - 2 ; case 3
+ .short _02242C30 - _02242A12 - 2 ; case 4
+ .short _02242CAA - _02242A12 - 2 ; case 5
+ .short _02242E42 - _02242A12 - 2 ; case 6
+_02242A20:
+ mov r1, #0
+ sub r0, r0, #1
+ strb r1, [r4, r0]
+ ldr r0, _02242D68 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055320
+ add r5, r0, #0
+ ldr r0, _02242D68 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+ add r2, r0, #0
+ mov r0, #0x20
+ str r0, [sp]
+ ldr r0, _02242D68 ; =0x022513A0
+ add r1, r5, #0
+ ldr r0, [r0, #4]
+ mov r3, #5
+ ldr r0, [r0, #0x40]
+ bl MOD05_021E5420
+ mov r1, #0x45
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #1
+ add r1, #0x11
+ strb r0, [r4, r1]
+ ldr r0, _02242D6C ; =0x0000065E
+ bl FUN_020054C8
+ b _02242E6C
+_02242A68:
+ sub r1, r0, #1
+ ldrb r1, [r4, r1]
+ add r2, r1, #1
+ sub r1, r0, #1
+ strb r2, [r4, r1]
+ ldrb r1, [r4, r1]
+ cmp r1, #0x14
+ bls _02242AFE
+ mov r1, #2
+ strb r1, [r4, r0]
+ mov r1, #0
+ sub r2, r0, #5
+ str r1, [r4, r2]
+ add r2, r0, #0
+ mov r3, #5
+ sub r2, #9
+ str r3, [r4, r2]
+ ldr r2, _02242D68 ; =0x022513A0
+ add r0, #0xd3
+ ldr r2, [r2, #4]
+ ldr r0, [r2, r0]
+ bl FUN_02020130
+ b _02242E6C
+_02242A98:
+ mov r1, #2
+ lsl r1, r1, #0x12
+ str r1, [sp, #8]
+ sub r1, r0, #5
+ ldr r1, [r4, r1]
+ add r0, #0xd3
+ lsl r1, r1, #0xc
+ str r1, [sp, #0xc]
+ ldr r1, _02242D68 ; =0x022513A0
+ ldr r1, [r1, #4]
+ ldr r0, [r1, r0]
+ add r1, sp, #8
+ bl FUN_02020044
+ ldr r0, _02242D68 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r1, #0x12
+ lsl r1, r1, #4
+ ldr r2, [r4, r1]
+ cmp r2, #0x41
+ ble _02242B0E
+ mov r2, #3
+ add r0, r1, #5
+ strb r2, [r4, r0]
+ ldr r0, _02242D70 ; =0x0000065D
+ bl FUN_020054C8
+ ldr r0, _02242D68 ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, _02242D74 ; =0x00000B3B
+ ldrb r0, [r1, r0]
+ cmp r0, #0x15
+ bne _02242AEC
+ mov r1, #0
+ mvn r1, r1
+ b _02242AEE
+_02242AEC:
+ mov r1, #5
+_02242AEE:
+ mov r0, #0x46
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _02242B00
+_02242AFE:
+ b _02242E6C
+_02242B00:
+ bl FUN_02064520
+ mov r0, #0x45
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _02242E6C
+_02242B0E:
+ sub r0, r1, #4
+ ldr r0, [r4, r0]
+ add r0, r2, r0
+ str r0, [r4, r1]
+ sub r0, r1, #4
+ ldr r0, [r4, r0]
+ add r2, r0, #3
+ sub r0, r1, #4
+ str r2, [r4, r0]
+ b _02242E6C
+_02242B22:
+ ldr r1, _02242D78 ; =0x021C48F8
+ ldrh r2, [r1, #0x20]
+ cmp r2, #0
+ beq _02242BD2
+ sub r0, r0, #5
+ ldrh r2, [r1, #0x1e]
+ ldr r0, [r4, r0]
+ sub r0, r2, r0
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ asr r7, r0, #0x1f
+ ldrh r0, [r1, #0x1c]
+ sub r0, #0x80
+ lsl r0, r0, #0xc
+ asr r1, r0, #0x1f
+ add r2, r0, #0
+ add r3, r1, #0
+ bl _ll_mul
+ add r6, r0, #0
+ ldr r0, [sp, #4]
+ add r5, r1, #0
+ add r1, r7, #0
+ add r2, r0, #0
+ add r3, r7, #0
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r6, r6, r2
+ adc r5, r3
+ lsl r5, r5, #0x14
+ lsr r6, r6, #0xc
+ orr r6, r5
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ add r0, r6, r1
+ bl FX_Sqrt
+ mov r1, #3
+ lsl r1, r1, #0x10
+ cmp r0, r1
+ bge _02242BD2
+ mov r0, #0x4b
+ mov r1, #3
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, _02242D7C ; =0x00000627
+ bl FUN_020054C8
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ ldr r5, [r4, r0]
+ mov r1, #3
+ add r0, r5, #0
+ bl _s32_div_f
+ cmp r1, #2
+ bne _02242BD2
+ add r0, r5, #0
+ mov r1, #3
+ bl _s32_div_f
+ add r1, r0, #0
+ add r1, r1, #1
+ lsl r1, r1, #2
+ add r0, r4, #0
+ add r1, r4, r1
+ add r0, #0xf8
+ add r1, #0xf8
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_02009BB8
+ mov r0, #0x49
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r4, r0]
+ mov r1, #4
+ add r0, r0, #1
+ strb r1, [r4, r0]
+_02242BD2:
+ mov r1, #0x46
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ cmp r0, #0xf
+ ble _02242BF0
+ add r0, r1, #0
+ mov r3, #0
+ add r0, #0xc
+ strb r3, [r4, r0]
+ add r0, r1, #0
+ mov r2, #5
+ add r0, #0xd
+ strb r2, [r4, r0]
+ add r1, #0x14
+ str r3, [r4, r1]
+_02242BF0:
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _02242C0A
+ bge _02242C00
+ add r1, r1, #1
+ str r1, [r4, r0]
+_02242C00:
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ neg r1, r1
+ str r1, [r4, r0]
+_02242C0A:
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ add r0, #0x80
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ add r0, r1, #0
+ sub r0, #0xc
+ ldr r0, [r4, r0]
+ add r1, #0xcc
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _02242D68 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, r1]
+ add r1, sp, #8
+ bl FUN_02020044
+ b _02242E6C
+_02242C30:
+ sub r1, r0, #1
+ ldrb r1, [r4, r1]
+ cmp r1, #0
+ bne _02242C4A
+ sub r0, #0xd
+ ldr r0, [r4, r0]
+ mov r1, #3
+ bl _s32_div_f
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD18_022427CC
+_02242C4A:
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD18_02242964
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldrb r1, [r4, r0]
+ cmp r1, #0x14
+ bne _02242C6A
+ mov r1, #3
+ add r0, r0, #1
+ strb r1, [r4, r0]
+_02242C6A:
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _02242C84
+ bge _02242C7A
+ add r1, r1, #1
+ str r1, [r4, r0]
+_02242C7A:
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ neg r1, r1
+ str r1, [r4, r0]
+_02242C84:
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ add r0, #0x80
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ add r0, r1, #0
+ sub r0, #0xc
+ ldr r0, [r4, r0]
+ add r1, #0xcc
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _02242D68 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, r1]
+ add r1, sp, #8
+ bl FUN_02020044
+ b _02242E6C
+_02242CAA:
+ sub r0, r0, #1
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ beq _02242CB4
+ b _02242DD2
+_02242CB4:
+ ldr r0, _02242D80 ; =0x0000062A
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0x11
+ add r0, #0xf8
+ lsl r1, r1, #4
+ ldr r0, [r0]
+ ldr r1, [r4, r1]
+ bl FUN_02009BB8
+ mov r7, #1
+ mov r5, #4
+ mov r6, #0x52
+_02242CD0:
+ ldr r0, _02242D68 ; =0x022513A0
+ ldr r0, [r0, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_02020130
+ lsl r0, r6, #0xc
+ str r0, [sp, #8]
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r2, [r4, r0]
+ lsr r1, r7, #0x1f
+ lsl r3, r7, #0x1f
+ sub r3, r3, r1
+ mov r0, #0x1f
+ ror r3, r0
+ add r2, #0x27
+ add r0, r1, r3
+ add r0, r2, r0
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _02242D68 ; =0x022513A0
+ ldr r0, [r0, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #8
+ bl FUN_02020044
+ ldr r0, _02242D68 ; =0x022513A0
+ ldr r0, [r0, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ add r7, r7, #1
+ add r5, r5, #4
+ add r6, #0xc
+ cmp r7, #9
+ blt _02242CD0
+ ldr r0, _02242D68 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x22
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_02020130
+ mov r0, #0x19
+ lsl r0, r0, #0xe
+ str r0, [sp, #8]
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r0, #0x15
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _02242D68 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x22
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ add r1, sp, #8
+ bl FUN_02020044
+ ldr r0, _02242D68 ; =0x022513A0
+ b _02242D84
+ .align 2, 0
+_02242D64: .word 0x00000125
+_02242D68: .word 0x022513A0
+_02242D6C: .word 0x0000065E
+_02242D70: .word 0x0000065D
+_02242D74: .word 0x00000B3B
+_02242D78: .word 0x021C48F8
+_02242D7C: .word 0x00000627
+_02242D80: .word 0x0000062A
+_02242D84:
+ ldr r1, [r0, #4]
+ mov r0, #0x22
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, _02242E7C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_02020130
+ mov r0, #0x7a
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _02242E7C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #8
+ bl FUN_02020044
+ ldr r0, _02242E7C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+_02242DD2:
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ bl FUN_0201B9EC
+ mov r1, #0xa
+ bl _s32_div_f
+ add r1, #0x7b
+ lsl r0, r1, #0xc
+ str r0, [sp, #8]
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ add r0, #0xd8
+ lsl r1, r1, #0xc
+ str r1, [sp, #0xc]
+ ldr r1, _02242E7C ; =0x022513A0
+ ldr r1, [r1, #4]
+ ldr r0, [r1, r0]
+ add r1, sp, #8
+ bl FUN_02020044
+ mov r0, #0x12
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ mov r2, #0x1d
+ add r1, r1, #1
+ str r1, [r4, r0]
+ add r1, r0, #4
+ ldrb r1, [r4, r1]
+ lsr r5, r1, #0x1f
+ lsl r3, r1, #0x1d
+ sub r3, r3, r5
+ ror r3, r2
+ add r2, r5, r3
+ beq _02242E30
+ ldr r2, _02242E7C ; =0x022513A0
+ lsr r1, r1, #3
+ ldr r2, [r2, #4]
+ add r0, #0xd8
+ ldr r0, [r2, r0]
+ add r1, r1, #3
+ bl FUN_02020130
+_02242E30:
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldrb r1, [r4, r0]
+ cmp r1, #0x4b
+ bne _02242E6C
+ mov r1, #6
+ add r0, r0, #1
+ strb r1, [r4, r0]
+ b _02242E6C
+_02242E42:
+ sub r0, #0x11
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02242E56
+ bl FUN_02064520
+ mov r0, #0x45
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_02242E56:
+ ldr r0, _02242E7C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x14
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_02242E6C:
+ ldr r0, _02242E7C ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x44]
+ bl FUN_0201FDEC
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02242E7C: .word 0x022513A0
+ thumb_func_end MOD18_022429F8
+
+ thumb_func_start MOD18_02242E80
+MOD18_02242E80: ; 0x02242E80
+ push {r4, r5, lr}
+ sub sp, #0x24
+ ldr r4, _02242ED4 ; =0x022500DC
+ add r3, sp, #0xc
+ add r5, r0, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldrb r1, [r5, r0]
+ sub r4, r1, #1
+ cmp r4, #6
+ bge _02242ECE
+ add r1, r4, #1
+ str r1, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r1, #4
+ str r1, [sp, #8]
+ ldr r1, _02242ED8 ; =0x022513A0
+ lsl r3, r4, #2
+ ldr r2, [r2, r3]
+ ldr r1, [r1, #4]
+ add r0, #0x4c
+ ldr r0, [r1, r0]
+ mov r1, #0x32
+ mov r3, #0
+ bl FUN_02008F34
+ add r1, r4, #1
+ lsl r1, r1, #2
+ add r1, r5, r1
+ add r1, #0xf8
+ str r0, [r1]
+_02242ECE:
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_02242ED4: .word 0x022500DC
+_02242ED8: .word 0x022513A0
+ thumb_func_end MOD18_02242E80
+
+ thumb_func_start MOD18_02242EDC
+MOD18_02242EDC: ; 0x02242EDC
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0x17
+ ldr r6, _02242F04 ; =0x022513A0
+ mov r4, #1
+ add r5, r0, #4
+ lsl r7, r7, #4
+_02242EE8:
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _02242EFA
+ ldr r0, [r6, #4]
+ ldr r0, [r0, r7]
+ bl FUN_02009490
+_02242EFA:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #7
+ blt _02242EE8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02242F04: .word 0x022513A0
+ thumb_func_end MOD18_02242EDC
+
+ thumb_func_start MOD18_02242F08
+MOD18_02242F08: ; 0x02242F08
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ ldr r0, [r4]
+ cmp r0, #0xc
+ bls _02242F16
+ b _0224318E
+_02242F16:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02242F22: ; jump table
+ .short _02242F3C - _02242F22 - 2 ; case 0
+ .short _02242F98 - _02242F22 - 2 ; case 1
+ .short _02242FE2 - _02242F22 - 2 ; case 2
+ .short _02243018 - _02242F22 - 2 ; case 3
+ .short _02243058 - _02242F22 - 2 ; case 4
+ .short _0224308A - _02242F22 - 2 ; case 5
+ .short _0224309A - _02242F22 - 2 ; case 6
+ .short _022430EC - _02242F22 - 2 ; case 7
+ .short _02243134 - _02242F22 - 2 ; case 8
+ .short _02243140 - _02242F22 - 2 ; case 9
+ .short _0224318E - _02242F22 - 2 ; case 10
+ .short _02243150 - _02242F22 - 2 ; case 11
+ .short _02243174 - _02242F22 - 2 ; case 12
+_02242F3C:
+ bl MOD18_022400A0
+ str r0, [r4, #4]
+ mov r0, #0x49
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r4, r0]
+ ldr r1, _02243194 ; =0x022513A0
+ mov r0, #0x20
+ ldr r1, [r1, #4]
+ mov r2, #4
+ add r1, #0x48
+ bl FUN_02008C9C
+ ldr r1, _02243194 ; =0x022513A0
+ ldr r2, [r1, #4]
+ str r0, [r2, #0x44]
+ ldr r0, [r1, #4]
+ mov r2, #6
+ add r0, #0x48
+ mov r1, #0
+ lsl r2, r2, #0x12
+ bl FUN_02008D24
+ mov r6, #0
+ ldr r7, _02243194 ; =0x022513A0
+ add r5, r6, #0
+_02242F72:
+ mov r0, #8
+ add r1, r6, #0
+ mov r2, #4
+ bl FUN_02008DEC
+ ldr r1, [r7, #4]
+ add r6, r6, #1
+ add r2, r1, r5
+ mov r1, #0x17
+ lsl r1, r1, #4
+ add r5, r5, #4
+ str r0, [r2, r1]
+ cmp r6, #4
+ blt _02242F72
+ ldr r0, [r4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02242F98:
+ mov r0, #1
+ mov r1, #0xa
+ mov r2, #0
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r0, _02243194 ; =0x022513A0
+ mov r2, #0x20
+ ldr r1, [r0, #4]
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ mov r1, #0x32
+ bl FUN_02008F34
+ ldr r2, _02243194 ; =0x022513A0
+ mov r1, #0x19
+ ldr r3, [r2, #4]
+ lsl r1, r1, #4
+ str r0, [r3, r1]
+ ldr r0, [r2, #4]
+ add sp, #0x10
+ ldr r1, [r0, r1]
+ add r0, r4, #0
+ add r0, #0xf8
+ str r1, [r0]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02242FE2:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #7
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ ldr r0, _02243194 ; =0x022513A0
+ mov r2, #0x33
+ ldr r1, [r0, #4]
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x32
+ bl FUN_02008FEC
+ ldr r1, _02243194 ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x65
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02243018:
+ mov r0, #1
+ mov r1, #0
+ mov r2, #0xa
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r0, _02243194 ; =0x022513A0
+ mov r2, #0x1f
+ ldr r1, [r0, #4]
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x32
+ bl FUN_020090AC
+ ldr r1, _02243194 ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x66
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02243058:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r0, _02243194 ; =0x022513A0
+ mov r2, #0x1e
+ ldr r1, [r0, #4]
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x32
+ bl FUN_020090AC
+ ldr r1, _02243194 ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x67
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_0224308A:
+ add r0, r4, #0
+ bl MOD18_02242668
+ ldr r0, [r4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_0224309A:
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD18_02242E80
+ mov r1, #0x49
+ lsl r1, r1, #2
+ ldrb r0, [r4, r1]
+ cmp r0, #0x1e
+ bls _0224318E
+ ldr r0, _02243194 ; =0x022513A0
+ ldr r2, [r0, #4]
+ ldr r0, _02243198 ; =0x00000B3B
+ ldrb r0, [r2, r0]
+ cmp r0, #0x14
+ bne _022430CE
+ add r0, r4, #0
+ add r0, #0xf8
+ sub r1, #0x24
+ ldr r0, [r0]
+ ldr r1, [r4, r1]
+ bl FUN_02009BB8
+_022430CE:
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x4d
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ mov r0, #0x4a
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r0, #7
+ add sp, #0x10
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_022430EC:
+ ldr r0, _02243194 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #8]
+ bl MOD18_022429F8
+ cmp r0, #0
+ beq _02243114
+ ldr r0, _0224319C ; =0x00000127
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ beq _0224310A
+ mov r0, #0xb
+ str r0, [r4]
+ b _02243114
+_0224310A:
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #8
+ str r0, [r4]
+_02243114:
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0x3c
+ bge _0224318E
+ add r1, r1, #1
+ str r1, [r4, r0]
+ ldr r0, [r4, r0]
+ cmp r0, #0x3c
+ bne _0224318E
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_02243134:
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_02243140:
+ bl FUN_02031190
+ ldr r1, _0224319C ; =0x00000127
+ ldrb r1, [r4, r1]
+ bl MOD18_0224322C
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_02243150:
+ ldr r0, _0224319C ; =0x00000127
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r0, #0x10
+ bl FUN_0204F774
+ ldr r0, _022431A0 ; =0x00000126
+ ldrb r0, [r4, r0]
+ bl MOD18_0223FD8C
+ mov r0, #0x49
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r4, r0]
+ mov r0, #0xc
+ add sp, #0x10
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_02243174:
+ mov r0, #0x49
+ lsl r0, r0, #2
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ ldrb r0, [r4, r0]
+ cmp r0, #8
+ bls _0224318E
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #8
+ str r0, [r4]
+_0224318E:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02243194: .word 0x022513A0
+_02243198: .word 0x00000B3B
+_0224319C: .word 0x00000127
+_022431A0: .word 0x00000126
+ thumb_func_end MOD18_02242F08
+
+ thumb_func_start MOD18_022431A4
+MOD18_022431A4: ; 0x022431A4
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r1, #0x13
+ mov r0, #4
+ lsl r1, r1, #4
+ add r6, r2, #0
+ bl FUN_020169D8
+ mov r2, #0x13
+ mov r1, #0
+ lsl r2, r2, #4
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, _022431E8 ; =0x00000127
+ mov r2, #0x64
+ strb r5, [r4, r0]
+ sub r0, r0, #1
+ strb r6, [r4, r0]
+ ldr r0, _022431EC ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ str r4, [r1, r0]
+ ldr r0, _022431F0 ; =MOD18_02242F08
+ add r1, r4, #0
+ bl FUN_0200CA44
+ ldr r1, _022431EC ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0xa3
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022431E8: .word 0x00000127
+_022431EC: .word 0x022513A0
+_022431F0: .word MOD18_02242F08
+ thumb_func_end MOD18_022431A4
+
+ thumb_func_start MOD18_022431F4
+MOD18_022431F4: ; 0x022431F4
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ mov r1, #2
+ add r5, r0, #0
+ add r6, r2, #0
+ bl FUN_0204E758
+ bl FUN_02031190
+ cmp r5, r0
+ bne _0224321A
+ ldr r0, _0224321C ; =0x022513A0
+ add r1, r4, #0
+ ldr r0, [r0, #4]
+ add r2, r6, #0
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #8]
+ bl MOD18_022431A4
+_0224321A:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0224321C: .word 0x022513A0
+ thumb_func_end MOD18_022431F4
+
+ thumb_func_start MOD18_02243220
+MOD18_02243220: ; 0x02243220
+ ldr r3, _02243228 ; =0x0204E759
+ mov r1, #2
+ bx r3
+ nop
+_02243228: .word 0x0204E759
+ thumb_func_end MOD18_02243220
+
+ thumb_func_start MOD18_0224322C
+MOD18_0224322C: ; 0x0224322C
+ push {r3, r4, r5, lr}
+ ldr r0, _022432AC ; =0x022513A0
+ add r5, r1, #0
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r4, [r1, r0]
+ cmp r4, #0
+ beq _022432AA
+ mov r0, #0x45
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02243254
+ bl FUN_02064520
+ mov r0, #0x45
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_02243254:
+ ldr r0, _022432B0 ; =0x00000127
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _02243268
+ cmp r5, #0
+ beq _02243268
+ sub r0, r0, #1
+ ldrb r0, [r4, r0]
+ bl MOD18_0223FD8C
+_02243268:
+ add r0, r4, #0
+ bl MOD18_02242EDC
+ mov r0, #0xf
+ bl MOD18_02241800
+ mov r1, #1
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200A274
+ mov r0, #0x10
+ bl FUN_0204F774
+ ldr r0, _022432AC ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r1, _022432AC ; =0x022513A0
+ mov r0, #0xa3
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #2
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ add r0, #0x10
+ str r3, [r1, r0]
+_022432AA:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022432AC: .word 0x022513A0
+_022432B0: .word 0x00000127
+ thumb_func_end MOD18_0224322C
+
+ thumb_func_start MOD18_022432B4
+MOD18_022432B4: ; 0x022432B4
+ push {lr}
+ sub sp, #0x5c
+ ldr r0, _022433C4 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl FUN_02009B78
+ ldr r0, _022433C4 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02009D68
+ ldr r0, _022433C4 ; =0x022513A0
+ mov r1, #0
+ ldr r0, [r0, #4]
+ mov r3, #0x17
+ str r1, [sp]
+ sub r2, r1, #1
+ str r2, [sp, #4]
+ str r2, [sp, #8]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ lsl r3, r3, #4
+ ldr r2, [r0, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r0, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r0, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r0, r2]
+ add r3, #0x64
+ str r2, [sp, #0x20]
+ str r1, [sp, #0x24]
+ add r0, r0, r3
+ add r2, r1, #0
+ add r3, r1, #0
+ str r1, [sp, #0x28]
+ bl FUN_02008AA4
+ ldr r0, _022433C4 ; =0x022513A0
+ mov r2, #2
+ ldr r1, [r0, #4]
+ lsl r2, r2, #0x10
+ ldr r0, [r1, #0x44]
+ str r0, [sp, #0x2c]
+ mov r0, #0x75
+ lsl r0, r0, #2
+ add r0, r1, r0
+ str r0, [sp, #0x30]
+ mov r0, #6
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x38]
+ lsr r0, r2, #5
+ mov r1, #0
+ str r2, [sp, #0x34]
+ str r1, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ add r0, sp, #0x2c
+ strh r1, [r0, #0x20]
+ mov r0, #1
+ str r0, [sp, #0x54]
+ mov r0, #4
+ str r0, [sp, #0x58]
+ lsl r0, r0, #0x11
+ str r0, [sp, #0x34]
+ mov r0, #0x15
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ str r1, [sp, #0x50]
+ bl FUN_0201FE94
+ ldr r2, _022433C4 ; =0x022513A0
+ mov r1, #0x7e
+ ldr r3, [r2, #4]
+ lsl r1, r1, #2
+ str r0, [r3, r1]
+ ldr r0, [r2, #4]
+ ldr r0, [r0, r1]
+ mov r1, #2
+ bl FUN_020200EC
+ ldr r0, _022433C4 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_02020130
+ ldr r0, _022433C4 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, _022433C4 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_02020208
+ ldr r0, _022433C4 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_02020238
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x5c
+ pop {pc}
+ nop
+_022433C4: .word 0x022513A0
+ thumb_func_end MOD18_022432B4
+
+ thumb_func_start MOD18_022433C8
+MOD18_022433C8: ; 0x022433C8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r0, r5, #0
+ add r0, #0x28
+ ldrb r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ beq _022433E2
+ cmp r0, #1
+ beq _02243402
+ cmp r0, #2
+ b _02243512
+_022433E2:
+ ldr r0, _02243524 ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, _02243528 ; =0x00000B3B
+ ldrb r0, [r1, r0]
+ cmp r0, #0x1f
+ bne _022433F2
+ mov r0, #4
+ b _022433F4
+_022433F2:
+ mov r0, #2
+_022433F4:
+ str r0, [r5, #0x20]
+ mov r0, #0
+ str r0, [r5, #0x24]
+ add r0, r5, #0
+ mov r1, #1
+ add r0, #0x28
+ strb r1, [r0]
+_02243402:
+ ldr r1, _0224352C ; =0x022513A0
+ ldr r2, _02243530 ; =MOD18_02241AB4
+ mov r0, #2
+ mov r3, #0
+ bl FUN_02004928
+ ldr r0, [r5, #0x14]
+ add r0, r0, #1
+ str r0, [r5, #0x14]
+ ldr r0, _02243524 ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, _02243534 ; =0x00000B3A
+ ldrsb r0, [r1, r0]
+ bl abs
+ add r6, r0, #0
+ ldr r0, [r5, #0x14]
+ mov r1, #0xa
+ bl _s32_div_f
+ add r0, r5, r1
+ strb r6, [r0, #8]
+ mov r1, #0
+ b _0224343A
+_02243432:
+ add r0, r5, r1
+ ldrb r0, [r0, #8]
+ add r1, r1, #1
+ add r4, r4, r0
+_0224343A:
+ cmp r1, #0xa
+ blt _02243432
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ cmp r4, r0
+ ble _02243454
+ ldr r0, [r5, #0x24]
+ add r0, r0, #1
+ str r0, [r5, #0x24]
+ ldr r0, _02243538 ; =0x00000628
+ bl FUN_020054C8
+ b _0224345C
+_02243454:
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x28
+ strb r1, [r0]
+_0224345C:
+ ldr r0, [r5, #0x24]
+ mov r1, #0xa
+ bl _s32_div_f
+ cmp r1, #9
+ bne _0224346E
+ ldr r0, [r5, #0x20]
+ sub r0, r0, #1
+ str r0, [r5, #0x20]
+_0224346E:
+ ldr r2, [r5, #0x20]
+ cmp r2, #0
+ bne _02243480
+ mov r0, #2
+ add r5, #0x28
+ strb r0, [r5]
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_02243480:
+ ldr r0, _02243524 ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, _02243528 ; =0x00000B3B
+ ldrb r0, [r1, r0]
+ cmp r0, #0x1f
+ bne _022434B0
+ cmp r2, #2
+ beq _022434A4
+ cmp r2, #3
+ beq _0224349E
+ cmp r2, #4
+ bne _022434AA
+ mov r4, #1
+ lsl r4, r4, #0x1e
+ b _022434BE
+_0224349E:
+ mov r4, #0xff
+ lsl r4, r4, #0x16
+ b _022434BE
+_022434A4:
+ mov r4, #0xfe
+ lsl r4, r4, #0x16
+ b _022434BE
+_022434AA:
+ mov r4, #0x3f
+ lsl r4, r4, #0x18
+ b _022434BE
+_022434B0:
+ cmp r2, #2
+ bne _022434BA
+ mov r4, #1
+ lsl r4, r4, #0x1e
+ b _022434BE
+_022434BA:
+ mov r4, #0xff
+ lsl r4, r4, #0x16
+_022434BE:
+ ldr r0, [r5, #0x24]
+ mov r6, #0
+ cmp r0, #0
+ beq _022434C8
+ add r6, r6, #1
+_022434C8:
+ ldr r0, _0224353C ; =0x45800000
+ add r1, r4, #0
+ bl _fmul
+ bl _ffix
+ str r0, [sp]
+ ldr r0, _0224353C ; =0x45800000
+ add r1, r4, #0
+ bl _fmul
+ bl _ffix
+ str r0, [sp, #4]
+ ldr r0, _0224353C ; =0x45800000
+ add r1, r4, #0
+ bl _fmul
+ bl _ffix
+ str r0, [sp, #8]
+ ldr r0, _02243524 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #0
+ bl FUN_02020064
+ ldr r0, _02243524 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, r6, #0
+ bl FUN_02020184
+_02243512:
+ ldr r0, _02243524 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x44]
+ bl FUN_0201FDEC
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02243524: .word 0x022513A0
+_02243528: .word 0x00000B3B
+_0224352C: .word 0x022513A0
+_02243530: .word MOD18_02241AB4
+_02243534: .word 0x00000B3A
+_02243538: .word 0x00000628
+_0224353C: .word 0x45800000
+ thumb_func_end MOD18_022433C8
+
+ thumb_func_start MOD18_02243540
+MOD18_02243540: ; 0x02243540
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ ldr r0, [r4]
+ cmp r0, #0xc
+ bls _0224354E
+ b _02243780
+_0224354E:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0224355A: ; jump table
+ .short _02243574 - _0224355A - 2 ; case 0
+ .short _0224358C - _0224355A - 2 ; case 1
+ .short _022435D8 - _0224355A - 2 ; case 2
+ .short _0224360E - _0224355A - 2 ; case 3
+ .short _0224365A - _0224355A - 2 ; case 4
+ .short _02243698 - _0224355A - 2 ; case 5
+ .short _022436A8 - _0224355A - 2 ; case 6
+ .short _022436D6 - _0224355A - 2 ; case 7
+ .short _0224372C - _0224355A - 2 ; case 8
+ .short _02243738 - _0224355A - 2 ; case 9
+ .short _02243780 - _0224355A - 2 ; case 10
+ .short _02243748 - _0224355A - 2 ; case 11
+ .short _0224376C - _0224355A - 2 ; case 12
+_02243574:
+ bl MOD18_022400A0
+ str r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #0x24]
+ bl MOD18_022417B4
+ ldr r0, [r4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_0224358C:
+ mov r0, #1
+ mov r1, #0xa
+ mov r2, #0
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ ldr r0, _02243784 ; =0x022513A0
+ ldr r1, _02243788 ; =0x00000B3B
+ ldr r0, [r0, #4]
+ ldrb r1, [r0, r1]
+ cmp r1, #0x1f
+ bne _022435AA
+ mov r2, #0x16
+ b _022435AC
+_022435AA:
+ mov r2, #0x19
+_022435AC:
+ mov r3, #0
+ str r3, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r1, #4
+ str r1, [sp, #8]
+ mov r1, #0x17
+ lsl r1, r1, #4
+ ldr r0, [r0, r1]
+ mov r1, #0x32
+ bl FUN_02008F34
+ ldr r1, _02243784 ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x19
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_022435D8:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #7
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ ldr r0, _02243784 ; =0x022513A0
+ mov r2, #0x13
+ ldr r1, [r0, #4]
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0x32
+ bl FUN_02008FEC
+ ldr r1, _02243784 ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x65
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_0224360E:
+ mov r0, #1
+ mov r1, #0
+ mov r2, #0xa
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ ldr r0, _02243784 ; =0x022513A0
+ ldr r1, _02243788 ; =0x00000B3B
+ ldr r0, [r0, #4]
+ ldrb r1, [r0, r1]
+ cmp r1, #0x1f
+ bne _0224362C
+ mov r2, #0x15
+ b _0224362E
+_0224362C:
+ mov r2, #0x18
+_0224362E:
+ mov r3, #0
+ str r3, [sp]
+ mov r1, #2
+ str r1, [sp, #4]
+ mov r1, #4
+ str r1, [sp, #8]
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #0x32
+ bl FUN_020090AC
+ ldr r1, _02243784 ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x66
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_0224365A:
+ ldr r0, _02243784 ; =0x022513A0
+ ldr r1, _02243788 ; =0x00000B3B
+ ldr r0, [r0, #4]
+ ldrb r1, [r0, r1]
+ cmp r1, #0x1f
+ bne _0224366A
+ mov r2, #0x14
+ b _0224366C
+_0224366A:
+ mov r2, #0x17
+_0224366C:
+ mov r3, #0
+ str r3, [sp]
+ mov r1, #3
+ str r1, [sp, #4]
+ mov r1, #4
+ str r1, [sp, #8]
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #0x32
+ bl FUN_020090AC
+ ldr r1, _02243784 ; =0x022513A0
+ add sp, #0x10
+ ldr r2, [r1, #4]
+ mov r1, #0x67
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_02243698:
+ add r0, r4, #0
+ bl MOD18_022432B4
+ ldr r0, [r4]
+ add sp, #0x10
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_022436A8:
+ ldr r0, [r4, #0x24]
+ add r0, r0, #1
+ str r0, [r4, #0x24]
+ cmp r0, #0x1e
+ ble _02243780
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x4c
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ mov r1, #3
+ ldr r0, _0224378C ; =0x0400006C
+ mvn r1, r1
+ bl GXx_SetMasterBrightness_
+ mov r0, #7
+ str r0, [r4]
+ mov r0, #0
+ add sp, #0x10
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+_022436D6:
+ mov r0, #7
+ str r0, [sp]
+ ldr r0, _02243790 ; =0x04000050
+ mov r1, #0x10
+ mov r2, #1
+ mov r3, #0xe
+ bl G2x_SetBlendAlpha_
+ ldr r0, _02243784 ; =0x022513A0
+ add r1, r4, #0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #8]
+ bl MOD18_022433C8
+ cmp r0, #0
+ beq _02243712
+ add r0, r4, #0
+ add r0, #0x2a
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02243708
+ mov r0, #0xb
+ str r0, [r4]
+ b _02243712
+_02243708:
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #8
+ str r0, [r4]
+_02243712:
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0x3c
+ bge _02243780
+ add r0, r0, #1
+ str r0, [r4, #0x2c]
+ cmp r0, #0x3c
+ bne _02243780
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add sp, #0x10
+ pop {r4, pc}
+_0224372C:
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add sp, #0x10
+ pop {r4, pc}
+_02243738:
+ bl FUN_02031190
+ add r4, #0x2a
+ ldrb r1, [r4]
+ bl MOD18_02243818
+ add sp, #0x10
+ pop {r4, pc}
+_02243748:
+ mov r0, #0x10
+ bl FUN_0204F774
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x2a
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x29
+ ldrb r0, [r0]
+ bl MOD18_0223FD8C
+ mov r0, #0
+ str r0, [r4, #0x24]
+ mov r0, #0xc
+ add sp, #0x10
+ str r0, [r4]
+ pop {r4, pc}
+_0224376C:
+ ldr r0, [r4, #0x24]
+ add r0, r0, #1
+ str r0, [r4, #0x24]
+ cmp r0, #8
+ ble _02243780
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #8
+ str r0, [r4]
+_02243780:
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_02243784: .word 0x022513A0
+_02243788: .word 0x00000B3B
+_0224378C: .word 0x0400006C
+_02243790: .word 0x04000050
+ thumb_func_end MOD18_02243540
+
+ thumb_func_start MOD18_02243794
+MOD18_02243794: ; 0x02243794
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r0, #4
+ mov r1, #0x30
+ add r6, r2, #0
+ bl FUN_020169D8
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x30
+ bl MI_CpuFill8
+ add r0, r4, #0
+ add r0, #0x2a
+ strb r5, [r0]
+ add r0, r4, #0
+ add r0, #0x29
+ strb r6, [r0]
+ ldr r0, _022437D8 ; =0x022513A0
+ mov r2, #0x64
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ str r4, [r1, r0]
+ ldr r0, _022437DC ; =MOD18_02243540
+ add r1, r4, #0
+ bl FUN_0200CA44
+ ldr r1, _022437D8 ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0xa3
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022437D8: .word 0x022513A0
+_022437DC: .word MOD18_02243540
+ thumb_func_end MOD18_02243794
+
+ thumb_func_start MOD18_022437E0
+MOD18_022437E0: ; 0x022437E0
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ mov r1, #2
+ add r5, r0, #0
+ add r6, r2, #0
+ bl FUN_0204E758
+ bl FUN_02031190
+ cmp r5, r0
+ bne _02243806
+ ldr r0, _02243808 ; =0x022513A0
+ add r1, r4, #0
+ ldr r0, [r0, #4]
+ add r2, r6, #0
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #8]
+ bl MOD18_02243794
+_02243806:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02243808: .word 0x022513A0
+ thumb_func_end MOD18_022437E0
+
+ thumb_func_start MOD18_0224380C
+MOD18_0224380C: ; 0x0224380C
+ ldr r3, _02243814 ; =0x0204E759
+ mov r1, #2
+ bx r3
+ nop
+_02243814: .word 0x0204E759
+ thumb_func_end MOD18_0224380C
+
+ thumb_func_start MOD18_02243818
+MOD18_02243818: ; 0x02243818
+ push {r4, lr}
+ ldr r0, _0224388C ; =0x022513A0
+ ldr r2, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r4, [r2, r0]
+ cmp r4, #0
+ beq _02243888
+ add r0, r4, #0
+ add r0, #0x2a
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02243840
+ cmp r1, #0
+ beq _02243840
+ add r0, r4, #0
+ add r0, #0x29
+ ldrb r0, [r0]
+ bl MOD18_0223FD8C
+_02243840:
+ mov r1, #1
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200A274
+ ldr r0, _02243890 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ add r0, #0x1c
+ bl GXx_SetMasterBrightness_
+ mov r0, #1
+ bl MOD18_02241800
+ mov r0, #0x10
+ bl FUN_0204F774
+ ldr r0, _0224388C ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r1, _0224388C ; =0x022513A0
+ mov r0, #0xa3
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #2
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ add r0, #0x10
+ str r3, [r1, r0]
+_02243888:
+ pop {r4, pc}
+ nop
+_0224388C: .word 0x022513A0
+_02243890: .word 0x04000050
+ thumb_func_end MOD18_02243818
+
+ thumb_func_start MOD18_02243894
+MOD18_02243894: ; 0x02243894
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldr r1, [r4]
+ cmp r1, #0xc
+ bhi _022439A0
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022438AC: ; jump table
+ .short _022438C6 - _022438AC - 2 ; case 0
+ .short _022438DA - _022438AC - 2 ; case 1
+ .short _022438F2 - _022438AC - 2 ; case 2
+ .short _022438FA - _022438AC - 2 ; case 3
+ .short _02243912 - _022438AC - 2 ; case 4
+ .short _0224391A - _022438AC - 2 ; case 5
+ .short _02243922 - _022438AC - 2 ; case 6
+ .short _02243946 - _022438AC - 2 ; case 7
+ .short _022439A0 - _022438AC - 2 ; case 8
+ .short _02243962 - _022438AC - 2 ; case 9
+ .short _022439A0 - _022438AC - 2 ; case 10
+ .short _02243970 - _022438AC - 2 ; case 11
+ .short _0224398C - _022438AC - 2 ; case 12
+_022438C6:
+ bl MOD18_022400A0
+ str r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #0xc]
+ ldr r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, pc}
+_022438DA:
+ mov r0, #1
+ str r0, [sp]
+ mov r1, #0xa
+ mov r2, #0
+ add r3, r0, #0
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, pc}
+_022438F2:
+ add r0, r1, #1
+ add sp, #4
+ str r0, [r4]
+ pop {r3, r4, pc}
+_022438FA:
+ mov r0, #1
+ str r0, [sp]
+ mov r1, #0
+ mov r2, #0xa
+ add r3, r0, #0
+ bl FUN_0200A208
+ ldr r0, [r4]
+ add sp, #4
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, pc}
+_02243912:
+ add r0, r1, #1
+ add sp, #4
+ str r0, [r4]
+ pop {r3, r4, pc}
+_0224391A:
+ add r0, r1, #1
+ add sp, #4
+ str r0, [r4]
+ pop {r3, r4, pc}
+_02243922:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ cmp r0, #0x1e
+ ble _022439A0
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ mov r1, #3
+ ldr r0, _022439A4 ; =0x0400006C
+ mvn r1, r1
+ bl GXx_SetMasterBrightness_
+ mov r0, #7
+ add sp, #4
+ str r0, [r4]
+ pop {r3, r4, pc}
+_02243946:
+ ldrb r0, [r4, #0x11]
+ cmp r0, #0
+ beq _02243954
+ mov r0, #0xb
+ add sp, #4
+ str r0, [r4]
+ pop {r3, r4, pc}
+_02243954:
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #8
+ add sp, #4
+ str r0, [r4]
+ pop {r3, r4, pc}
+_02243962:
+ bl FUN_02031190
+ ldrb r1, [r4, #0x11]
+ bl MOD18_02243A24
+ add sp, #4
+ pop {r3, r4, pc}
+_02243970:
+ mov r0, #0x10
+ bl FUN_0204F774
+ mov r0, #0
+ strb r0, [r4, #0x11]
+ ldrb r0, [r4, #0x10]
+ bl MOD18_0223FD8C
+ mov r0, #0
+ str r0, [r4, #0xc]
+ mov r0, #0xc
+ add sp, #4
+ str r0, [r4]
+ pop {r3, r4, pc}
+_0224398C:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ cmp r0, #8
+ ble _022439A0
+ mov r0, #0x29
+ bl FUN_020311DC
+ mov r0, #8
+ str r0, [r4]
+_022439A0:
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_022439A4: .word 0x0400006C
+ thumb_func_end MOD18_02243894
+
+ thumb_func_start MOD18_022439A8
+MOD18_022439A8: ; 0x022439A8
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r0, #4
+ mov r1, #0x14
+ add r6, r2, #0
+ bl FUN_020169D8
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x14
+ bl MI_CpuFill8
+ strb r5, [r4, #0x11]
+ ldr r0, _022439E4 ; =0x022513A0
+ strb r6, [r4, #0x10]
+ ldr r1, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ str r4, [r1, r0]
+ ldr r0, _022439E8 ; =MOD18_02243894
+ add r1, r4, #0
+ mov r2, #0x64
+ bl FUN_0200CA44
+ ldr r1, _022439E4 ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0xa3
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022439E4: .word 0x022513A0
+_022439E8: .word MOD18_02243894
+ thumb_func_end MOD18_022439A8
+
+ thumb_func_start MOD18_022439EC
+MOD18_022439EC: ; 0x022439EC
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ mov r1, #2
+ add r5, r0, #0
+ add r6, r2, #0
+ bl FUN_0204E758
+ bl FUN_02031190
+ cmp r5, r0
+ bne _02243A12
+ ldr r0, _02243A14 ; =0x022513A0
+ add r1, r4, #0
+ ldr r0, [r0, #4]
+ add r2, r6, #0
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #8]
+ bl MOD18_022439A8
+_02243A12:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02243A14: .word 0x022513A0
+ thumb_func_end MOD18_022439EC
+
+ thumb_func_start MOD18_02243A18
+MOD18_02243A18: ; 0x02243A18
+ ldr r3, _02243A20 ; =0x0204E759
+ mov r1, #2
+ bx r3
+ nop
+_02243A20: .word 0x0204E759
+ thumb_func_end MOD18_02243A18
+
+ thumb_func_start MOD18_02243A24
+MOD18_02243A24: ; 0x02243A24
+ push {r4, lr}
+ ldr r0, _02243A88 ; =0x022513A0
+ ldr r2, [r0, #4]
+ mov r0, #0xa7
+ lsl r0, r0, #2
+ ldr r4, [r2, r0]
+ cmp r4, #0
+ beq _02243A86
+ ldrb r0, [r4, #0x11]
+ cmp r0, #0
+ beq _02243A44
+ cmp r1, #0
+ beq _02243A44
+ ldrb r0, [r4, #0x10]
+ bl MOD18_0223FD8C
+_02243A44:
+ mov r1, #1
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200A274
+ ldr r0, _02243A8C ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ add r0, #0x1c
+ bl GXx_SetMasterBrightness_
+ mov r0, #0x10
+ bl FUN_0204F774
+ ldr r0, _02243A88 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r1, _02243A88 ; =0x022513A0
+ mov r0, #0xa3
+ ldr r2, [r1, #4]
+ mov r3, #0
+ lsl r0, r0, #2
+ str r3, [r2, r0]
+ ldr r1, [r1, #4]
+ add r0, #0x10
+ str r3, [r1, r0]
+_02243A86:
+ pop {r4, pc}
+ .align 2, 0
+_02243A88: .word 0x022513A0
+_02243A8C: .word 0x04000050
+ thumb_func_end MOD18_02243A24
+
+ thumb_func_start MOD18_02243A90
+MOD18_02243A90: ; 0x02243A90
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ ldr r0, [r1, #0x28]
+ str r1, [sp, #0x10]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x1c]
+ add r0, r1, #0
+ ldr r0, [r0, #0x2c]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x20]
+ ldr r0, _02243BBC ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #0x1c
+ bl FUN_02020044
+ ldr r0, [sp, #0x10]
+ mov r1, #0xa
+ ldr r0, [r0, #0x30]
+ lsl r0, r0, #0xc
+ bl _s32_div_f
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x20]
+ ldr r0, _02243BBC ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #0x1c
+ bl FUN_02020064
+ ldr r0, _02243BBC ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_02020398
+ mov r1, #0x10
+ ldr r3, [sp, #0x10]
+ str r1, [sp]
+ ldr r4, [r3, #0x30]
+ ldr r0, _02243BC0 ; =0x04000050
+ lsr r3, r4, #0x1f
+ add r3, r4, r3
+ asr r3, r3, #1
+ mov r2, #1
+ sub r3, r1, r3
+ bl G2x_SetBlendAlpha_
+ mov r0, #0
+ ldr r7, [sp, #0x10]
+ str r0, [sp, #0xc]
+ str r0, [sp, #8]
+_02243B06:
+ ldr r0, [r7, #0x14]
+ mov r4, #0
+ cmp r0, #0
+ ble _02243B86
+ ldr r0, [sp, #8]
+ add r5, r4, #0
+ lsl r0, r0, #2
+ str r0, [sp, #4]
+_02243B16:
+ ldr r0, [r7, #8]
+ ldrb r6, [r0, r4]
+ ldr r0, [sp, #0x10]
+ ldr r0, [r0, #0x20]
+ lsr r2, r6, #0x1f
+ lsl r1, r6, #0x1c
+ sub r3, r0, #6
+ sub r1, r1, r2
+ mov r0, #0x1c
+ ror r1, r0
+ add r0, r2, r1
+ add r0, r3, r0
+ lsl r1, r0, #0x10
+ mov r0, #2
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x1c]
+ mov r0, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x10]
+ add r2, sp, #0x14
+ ldr r0, [r0, #0x24]
+ sub r1, r0, #6
+ lsr r0, r6, #4
+ add r0, r1, r0
+ lsl r1, r0, #0x10
+ mov r0, #2
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x24]
+ add r0, sp, #0x1c
+ add r1, sp, #0x18
+ bl FUN_020BB408
+ ldr r0, [sp, #0x18]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x14]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x20]
+ ldr r0, _02243BBC ; =0x022513A0
+ ldr r1, [r0, #4]
+ ldr r0, [sp, #4]
+ add r0, r0, r1
+ add r1, r5, r0
+ mov r0, #0x7f
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #0x1c
+ bl FUN_02020044
+ ldr r0, [r7, #0x14]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blt _02243B16
+_02243B86:
+ ldr r0, [sp, #8]
+ add r7, r7, #4
+ add r0, #8
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+ cmp r0, #3
+ blt _02243B06
+ ldr r0, [sp, #0x10]
+ ldr r0, [r0, #0x30]
+ add r1, r0, #1
+ ldr r0, [sp, #0x10]
+ cmp r1, #0x14
+ str r1, [r0, #0x30]
+ ble _02243BAC
+ add sp, #0x28
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02243BAC:
+ ldr r0, _02243BBC ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x44]
+ bl FUN_0201FDEC
+ mov r0, #0
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02243BBC: .word 0x022513A0
+_02243BC0: .word 0x04000050
+ thumb_func_end MOD18_02243A90
+
+ thumb_func_start MOD18_02243BC4
+MOD18_02243BC4: ; 0x02243BC4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x5c
+ ldr r0, _02243CFC ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl FUN_02009B78
+ ldr r0, _02243CFC ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x69
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02009D68
+ ldr r0, _02243CFC ; =0x022513A0
+ mov r1, #0
+ ldr r0, [r0, #4]
+ mov r3, #6
+ str r1, [sp]
+ sub r2, r1, #1
+ str r2, [sp, #4]
+ str r2, [sp, #8]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ lsl r3, r3, #6
+ ldr r2, [r0, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r0, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r0, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r0, r2]
+ add r3, #0x54
+ str r2, [sp, #0x20]
+ str r1, [sp, #0x24]
+ add r0, r0, r3
+ add r2, r1, #0
+ add r3, r1, #0
+ str r1, [sp, #0x28]
+ bl FUN_02008AA4
+ ldr r6, _02243CFC ; =0x022513A0
+ mov r4, #0
+ ldr r1, [r6, #4]
+ mov r7, #0x4b
+ ldr r0, [r1, #0x44]
+ add r5, r4, #0
+ str r0, [sp, #0x2c]
+ mov r0, #0x75
+ lsl r0, r0, #2
+ add r0, r1, r0
+ str r0, [sp, #0x30]
+ mov r1, #2
+ mov r0, #6
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x38]
+ lsr r0, r1, #5
+ str r1, [sp, #0x34]
+ str r4, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ add r0, sp, #0x2c
+ strh r4, [r0, #0x20]
+ mov r0, #1
+ str r0, [sp, #0x54]
+ mov r0, #4
+ str r4, [sp, #0x50]
+ str r0, [sp, #0x58]
+ lsl r7, r7, #0xe
+_02243C60:
+ add r0, sp, #0x2c
+ str r7, [sp, #0x34]
+ str r7, [sp, #0x38]
+ bl FUN_0201FE94
+ ldr r1, [r6, #4]
+ add r2, r1, r5
+ mov r1, #0x7e
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ cmp r4, #0
+ bne _02243C9A
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #2
+ bl FUN_020200EC
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_02020130
+ b _02243CBE
+_02243C9A:
+ cmp r4, #9
+ ldr r0, [r6, #4]
+ bge _02243CB0
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_02020130
+ b _02243CBE
+_02243CB0:
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #2
+ bl FUN_02020130
+_02243CBE:
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_02020208
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x19
+ blt _02243C60
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x5c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02243CFC: .word 0x022513A0
+ thumb_func_end MOD18_02243BC4
+
+ thumb_func_start MOD18_02243D00
+MOD18_02243D00: ; 0x02243D00
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ str r0, [sp]
+ ldr r0, [r7]
+ cmp r0, #9
+ bhi _02243E06
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02243D18: ; jump table
+ .short _02243D2C - _02243D18 - 2 ; case 0
+ .short _02243E06 - _02243D18 - 2 ; case 1
+ .short _02243E06 - _02243D18 - 2 ; case 2
+ .short _02243E06 - _02243D18 - 2 ; case 3
+ .short _02243E06 - _02243D18 - 2 ; case 4
+ .short _02243D68 - _02243D18 - 2 ; case 5
+ .short _02243E06 - _02243D18 - 2 ; case 6
+ .short _02243D74 - _02243D18 - 2 ; case 7
+ .short _02243E06 - _02243D18 - 2 ; case 8
+ .short _02243D8A - _02243D18 - 2 ; case 9
+_02243D2C:
+ mov r1, #3
+ ldr r0, _02243E08 ; =0x0400006C
+ mvn r1, r1
+ bl GXx_SetMasterBrightness_
+ bl FUN_0204F7E4
+ ldr r0, _02243E0C ; =0x00000621
+ bl FUN_020054C8
+ ldr r1, _02243E10 ; =0x022513A0
+ mov r0, #0x20
+ ldr r1, [r1, #4]
+ mov r2, #4
+ add r1, #0x48
+ bl FUN_02008C9C
+ ldr r1, _02243E10 ; =0x022513A0
+ ldr r2, [r1, #4]
+ str r0, [r2, #0x44]
+ ldr r0, [r1, #4]
+ mov r2, #6
+ add r0, #0x48
+ mov r1, #0
+ lsl r2, r2, #0x12
+ bl FUN_02008D24
+ mov r0, #5
+ str r0, [r7]
+ pop {r3, r4, r5, r6, r7, pc}
+_02243D68:
+ add r0, r7, #0
+ bl MOD18_02243BC4
+ mov r0, #7
+ str r0, [r7]
+ pop {r3, r4, r5, r6, r7, pc}
+_02243D74:
+ ldr r0, _02243E10 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x40]
+ ldr r0, [r0, #8]
+ bl MOD18_02243A90
+ cmp r0, #0
+ beq _02243E06
+ mov r0, #9
+ str r0, [r7]
+ pop {r3, r4, r5, r6, r7, pc}
+_02243D8A:
+ ldr r0, _02243E14 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ add r0, #0x1c
+ bl GXx_SetMasterBrightness_
+ ldr r0, _02243E10 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ bl FUN_02009C0C
+ ldr r0, _02243E10 ; =0x022513A0
+ ldr r1, [r0, #4]
+ mov r0, #0x69
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02009E04
+ mov r4, #0
+ ldr r6, _02243E10 ; =0x022513A0
+ add r5, r4, #0
+_02243DB8:
+ ldr r0, [r6, #4]
+ add r1, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _02243DCA
+ bl FUN_0201FFC8
+_02243DCA:
+ ldr r0, [r6, #4]
+ mov r1, #0
+ add r2, r0, r5
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ add r4, r4, #1
+ add r5, r5, #4
+ str r1, [r2, r0]
+ cmp r4, #0x19
+ blt _02243DB8
+ ldr r0, _02243E10 ; =0x022513A0
+ ldr r0, [r0, #4]
+ ldr r0, [r0, #0x44]
+ bl FUN_0201FD58
+ ldr r0, [sp]
+ bl FUN_0200CAB4
+ add r0, r7, #0
+ bl FUN_02016A18
+ ldr r0, _02243E10 ; =0x022513A0
+ mov r2, #0
+ ldr r1, [r0, #4]
+ mov r0, #0x29
+ lsl r0, r0, #4
+ str r2, [r1, r0]
+ mov r0, #0x80
+ bl FUN_0204F774
+_02243E06:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02243E08: .word 0x0400006C
+_02243E0C: .word 0x00000621
+_02243E10: .word 0x022513A0
+_02243E14: .word 0x04000050
+ thumb_func_end MOD18_02243D00
+
+ thumb_func_start MOD18_02243E18
+MOD18_02243E18: ; 0x02243E18
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r0, _02243E84 ; =0x022513A0
+ add r5, r1, #0
+ ldr r1, [r0, #4]
+ mov r0, #0x29
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r0, #0
+ bne _02243E82
+ mov r0, #4
+ mov r1, #0x34
+ bl FUN_020169D8
+ mov r1, #0
+ mov r2, #0x34
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ str r0, [r4]
+ str r0, [r4, #0x30]
+ str r5, [r4, #0x20]
+ str r6, [r4, #0x24]
+ ldr r0, [sp, #0x18]
+ str r7, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ ldr r0, [sp, #0x1c]
+ add r1, r4, #0
+ str r0, [r4, #8]
+ ldr r0, [sp, #0x24]
+ mov r2, #0x64
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #0x2c]
+ str r0, [r4, #0x10]
+ ldr r0, [sp, #0x20]
+ str r0, [r4, #0x14]
+ ldr r0, [sp, #0x28]
+ str r0, [r4, #0x18]
+ ldr r0, [sp, #0x30]
+ str r0, [r4, #0x1c]
+ ldr r0, _02243E88 ; =MOD18_02243D00
+ bl FUN_0200CA44
+ ldr r1, _02243E84 ; =0x022513A0
+ ldr r2, [r1, #4]
+ mov r1, #0x29
+ lsl r1, r1, #4
+ str r0, [r2, r1]
+ mov r0, #0x80
+ bl FUN_0204F74C
+_02243E82:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02243E84: .word 0x022513A0
+_02243E88: .word MOD18_02243D00
+ thumb_func_end MOD18_02243E18
+
+ thumb_func_start MOD18_02243E8C
+MOD18_02243E8C: ; 0x02243E8C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ ldr r1, _02243F58 ; =0x022513A0
+ add r6, r0, #0
+ ldr r1, [r1, #4]
+ cmp r1, #0
+ bne _02243EA6
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+_02243EA6:
+ ldr r5, [r4, #8]
+ add r0, r5, #0
+ bl FUN_0204F72C
+ add r1, r0, #0
+ ldr r0, [r4]
+ cmp r0, #1
+ beq _02243EBE
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ bne _02243EE2
+_02243EBE:
+ ldr r2, _02243F58 ; =0x022513A0
+ lsl r1, r5, #2
+ ldr r3, [r2, #4]
+ mov r0, #0
+ str r0, [r3, r1]
+ ldr r2, [r2, #4]
+ add r1, r2, r1
+ str r0, [r1, #0x20]
+ add r0, r6, #0
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0204E254
+ pop {r4, r5, r6, pc}
+_02243EE2:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0xe
+ bhi _02243F14
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02243EF4: ; jump table
+ .short _02243F14 - _02243EF4 - 2 ; case 0
+ .short _02243F12 - _02243EF4 - 2 ; case 1
+ .short _02243F12 - _02243EF4 - 2 ; case 2
+ .short _02243F12 - _02243EF4 - 2 ; case 3
+ .short _02243F12 - _02243EF4 - 2 ; case 4
+ .short _02243F12 - _02243EF4 - 2 ; case 5
+ .short _02243F12 - _02243EF4 - 2 ; case 6
+ .short _02243F12 - _02243EF4 - 2 ; case 7
+ .short _02243F12 - _02243EF4 - 2 ; case 8
+ .short _02243F14 - _02243EF4 - 2 ; case 9
+ .short _02243F14 - _02243EF4 - 2 ; case 10
+ .short _02243F14 - _02243EF4 - 2 ; case 11
+ .short _02243F14 - _02243EF4 - 2 ; case 12
+ .short _02243F12 - _02243EF4 - 2 ; case 13
+ .short _02243F12 - _02243EF4 - 2 ; case 14
+_02243F12:
+ pop {r4, r5, r6, pc}
+_02243F14:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ lsr r3, r0, #0x1f
+ lsl r2, r0, #0x1d
+ str r0, [r4, #4]
+ sub r2, r2, r3
+ mov r0, #0x1d
+ ror r2, r0
+ add r0, r3, r2
+ bne _02243F54
+ cmp r1, #3
+ bhi _02243F4E
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02243F38: ; jump table
+ .short _02243F40 - _02243F38 - 2 ; case 0
+ .short _02243F44 - _02243F38 - 2 ; case 1
+ .short _02243F48 - _02243F38 - 2 ; case 2
+ .short _02243F4C - _02243F38 - 2 ; case 3
+_02243F40:
+ mov r1, #3
+ b _02243F4E
+_02243F44:
+ mov r1, #2
+ b _02243F4E
+_02243F48:
+ mov r1, #0
+ b _02243F4E
+_02243F4C:
+ mov r1, #1
+_02243F4E:
+ add r0, r5, #0
+ bl FUN_0204F70C
+_02243F54:
+ pop {r4, r5, r6, pc}
+ nop
+_02243F58: .word 0x022513A0
+ thumb_func_end MOD18_02243E8C
+
+ thumb_func_start MOD18_02243F5C
+MOD18_02243F5C: ; 0x02243F5C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, _02243FAC ; =0x022513A0
+ add r7, r1, #0
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ beq _02243FA8
+ ldr r0, _02243FB0 ; =0x00000B46
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _02243FA8
+ lsl r5, r6, #2
+ ldr r4, [r1, r5]
+ cmp r4, #0
+ bne _02243FA4
+ mov r0, #4
+ mov r1, #0x10
+ bl FUN_020169D8
+ mov r1, #0
+ mov r2, #0x10
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, _02243FAC ; =0x022513A0
+ add r1, r4, #0
+ ldr r0, [r0, #4]
+ mov r2, #0x64
+ str r4, [r0, r5]
+ ldr r0, _02243FB4 ; =MOD18_02243E8C
+ bl FUN_0200CA44
+ ldr r1, _02243FAC ; =0x022513A0
+ ldr r1, [r1, #4]
+ add r1, r1, r5
+ str r0, [r1, #0x20]
+_02243FA4:
+ str r6, [r4, #8]
+ str r7, [r4, #0xc]
+_02243FA8:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02243FAC: .word 0x022513A0
+_02243FB0: .word 0x00000B46
+_02243FB4: .word MOD18_02243E8C
+ thumb_func_end MOD18_02243F5C
+
+ thumb_func_start MOD18_02243FB8
+MOD18_02243FB8: ; 0x02243FB8
+ push {r3, r4, r5, lr}
+ ldr r1, _02243FEC ; =0x022513A0
+ add r5, r0, #0
+ ldr r1, [r1, #4]
+ lsl r4, r5, #2
+ ldr r1, [r1, r4]
+ cmp r1, #0
+ beq _02243FE8
+ bl FUN_0204F0A8
+ ldr r0, _02243FEC ; =0x022513A0
+ mov r2, #1
+ ldr r1, [r0, #4]
+ ldr r1, [r1, r4]
+ str r2, [r1]
+ ldr r1, [r0, #4]
+ mov r2, #0
+ str r2, [r1, r4]
+ ldr r0, [r0, #4]
+ add r0, r0, r4
+ str r2, [r0, #0x20]
+ add r0, r5, #0
+ bl FUN_0204E254
+_02243FE8:
+ pop {r3, r4, r5, pc}
+ nop
+_02243FEC: .word 0x022513A0
+ thumb_func_end MOD18_02243FB8
+
+ thumb_func_start MOD18_02243FF0
+MOD18_02243FF0: ; 0x02243FF0
+ push {r3, r4, r5, r6, r7, lr}
+ mov r6, #0
+ ldr r4, _02244024 ; =0x022513A0
+ add r5, r6, #0
+ add r7, r6, #0
+_02243FFA:
+ ldr r0, [r4, #4]
+ add r0, r0, r5
+ ldr r0, [r0, #0x20]
+ cmp r0, #0
+ beq _0224401A
+ bl FUN_0200CAB4
+ ldr r0, [r4, #4]
+ ldr r0, [r0, r5]
+ bl FUN_02016A18
+ ldr r0, [r4, #4]
+ add r0, r0, r5
+ str r7, [r0, #0x20]
+ ldr r0, [r4, #4]
+ str r7, [r0, r5]
+_0224401A:
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #8
+ blt _02243FFA
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02244024: .word 0x022513A0
+ thumb_func_end MOD18_02243FF0
+
+ thumb_func_start MOD18_02244028
+MOD18_02244028: ; 0x02244028
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r1, [sp]
+ add r5, r0, #0
+ str r2, [sp, #4]
+ add r0, r3, #0
+ mov r1, #0x24
+ str r3, [sp, #8]
+ bl FUN_02016998
+ str r0, [sp, #0xc]
+ mov r1, #0
+ mov r2, #0x24
+ bl MI_CpuFill8
+ ldr r1, [sp, #0x28]
+ ldr r0, [sp, #0xc]
+ cmp r1, #0
+ str r1, [r0]
+ beq _0224409E
+ ldr r1, [sp, #0x2c]
+ str r1, [r0, #4]
+ ldr r1, [sp, #0x30]
+ strb r1, [r0, #0x1e]
+ ldr r0, [sp, #8]
+ bl FUN_02013690
+ ldr r1, [sp, #0xc]
+ str r0, [r1, #0x10]
+ ldr r1, _022440C0 ; =0x0008090F
+ bl FUN_020136E0
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #0xc]
+ strb r1, [r0, #0x1d]
+ ldr r1, [sp, #0xc]
+ ldrh r0, [r5, #0x10]
+ ldrb r1, [r1, #0x1d]
+ bl FUN_02012838
+ add r7, r0, #0
+ ldrh r0, [r5, #0x10]
+ mov r6, #0
+ cmp r0, #0
+ ble _02244098
+ add r4, r6, #0
+_02244084:
+ ldr r1, [r5]
+ add r0, r7, #0
+ add r1, r1, r4
+ bl FUN_020128C4
+ ldrh r0, [r5, #0x10]
+ add r6, r6, #1
+ add r4, #8
+ cmp r6, r0
+ blt _02244084
+_02244098:
+ ldr r0, [sp, #0xc]
+ str r7, [r5]
+ str r7, [r0, #8]
+_0224409E:
+ ldr r1, [sp]
+ ldr r0, [sp, #4]
+ add r1, r1, r0
+ ldr r0, [sp, #0xc]
+ strh r1, [r0, #0x20]
+ ldr r1, [sp]
+ ldr r2, [sp, #4]
+ ldr r3, [sp, #8]
+ add r0, r5, #0
+ bl FUN_020010A8
+ ldr r1, [sp, #0xc]
+ str r0, [r1, #0xc]
+ add r0, r1, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022440C0: .word 0x0008090F
+ thumb_func_end MOD18_02244028
+
+ thumb_func_start MOD18_022440C4
+MOD18_022440C4: ; 0x022440C4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r2, #0
+ add r5, r0, #0
+ add r7, r1, #0
+ ldrh r1, [r4, #0x14]
+ ldrh r0, [r4, #0x16]
+ add r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ bl FUN_02001470
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldrh r0, [r4, #0x18]
+ cmp r0, r5
+ bne _022440F0
+ ldrh r0, [r4, #0x1a]
+ cmp r0, r7
+ beq _0224413A
+_022440F0:
+ strh r5, [r4, #0x18]
+ add r0, r5, r1
+ strh r7, [r4, #0x1a]
+ cmp r0, r6
+ blt _0224413A
+ cmp r5, r6
+ bhi _0224413A
+ ldr r0, [r4, #0xc]
+ mov r1, #7
+ bl FUN_02001470
+ str r0, [sp]
+ ldr r0, [r4, #0xc]
+ mov r1, #9
+ bl FUN_02001470
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r0, [r4, #0xc]
+ mov r1, #8
+ bl FUN_02001470
+ str r0, [sp, #4]
+ sub r0, r6, r5
+ add r5, r7, #0
+ mul r5, r0
+ ldr r0, [r4, #0xc]
+ mov r1, #0x12
+ bl FUN_02001470
+ ldr r3, [sp, #4]
+ add r1, r0, #0
+ ldr r0, [r4, #0x10]
+ ldr r2, [sp]
+ add r3, r5, r3
+ bl FUN_020136F8
+_0224413A:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_022440C4
+
+ thumb_func_start MOD18_02244140
+MOD18_02244140: ; 0x02244140
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ str r0, [sp, #4]
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _0224418A
+ ldr r0, [sp, #4]
+ mov r1, #2
+ bl FUN_02001470
+ add r7, r0, #0
+ add r1, sp, #0xc
+ ldr r0, [sp, #4]
+ add r1, #2
+ add r2, sp, #0xc
+ bl FUN_02001448
+ ldrb r0, [r5, #0x1c]
+ cmp r0, #0
+ bne _0224416E
+ b _0224428C
+_0224416E:
+ add r1, sp, #0xc
+ ldrh r0, [r1, #2]
+ ldrh r1, [r1]
+ add r2, r5, #0
+ bl MOD18_022440C4
+ ldr r0, _02244310 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ bne _0224418C
+ mov r0, #4
+ tst r0, r1
+ bne _0224418C
+_0224418A:
+ b _022442CA
+_0224418C:
+ ldr r0, _02244314 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, sp, #0xc
+ ldrh r1, [r0, #2]
+ ldrh r0, [r0]
+ add r2, r1, r0
+ sub r0, r7, #1
+ cmp r0, r2
+ bne _022441A8
+ mov r0, #0
+ add sp, #0x10
+ mvn r0, r0
+ pop {r3, r4, r5, r6, r7, pc}
+_022441A8:
+ ldrh r1, [r5, #0x14]
+ ldrh r0, [r5, #0x16]
+ add r1, r1, r0
+ cmp r2, r1
+ bne _022441BA
+ mov r0, #0
+ add sp, #0x10
+ mvn r0, r0
+ pop {r3, r4, r5, r6, r7, pc}
+_022441BA:
+ ldr r0, [r5, #4]
+ ldr r3, [r5]
+ blx r3
+ ldrb r1, [r5, #0x1d]
+ add r0, r7, #0
+ bl FUN_02012838
+ mov r4, #0
+ add r6, r4, #0
+ str r0, [sp]
+ cmp r7, #0
+ ble _02244210
+_022441D2:
+ ldrh r1, [r5, #0x14]
+ ldrh r0, [r5, #0x16]
+ add r0, r1, r0
+ cmp r6, r0
+ bne _022441DE
+ b _022441EA
+_022441DE:
+ ldr r2, [r5, #8]
+ lsl r1, r4, #3
+ ldr r0, [sp]
+ add r1, r2, r1
+ bl FUN_020128C4
+_022441EA:
+ add r0, sp, #0xc
+ ldrh r1, [r0, #2]
+ ldrh r0, [r0]
+ add r4, r4, #1
+ add r0, r1, r0
+ cmp r6, r0
+ bne _0224420A
+ ldrh r2, [r5, #0x14]
+ ldrh r1, [r5, #0x16]
+ ldr r3, [r5, #8]
+ ldr r0, [sp]
+ add r1, r2, r1
+ lsl r1, r1, #3
+ add r1, r3, r1
+ bl FUN_020128C4
+_0224420A:
+ add r6, r6, #1
+ cmp r6, r7
+ blt _022441D2
+_02244210:
+ ldrb r0, [r5, #0x1e]
+ cmp r0, #0
+ beq _02244254
+ sub r0, r7, #1
+ mov r4, #0
+ str r0, [sp, #8]
+ cmp r0, #0
+ ble _02244246
+ ldr r6, [sp]
+ add r7, r4, #0
+_02244224:
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ bl FUN_02025F0C
+ cmp r0, #0
+ bne _02244234
+ mov r0, #1
+ b _02244236
+_02244234:
+ mov r0, #0
+_02244236:
+ add r0, r7, r0
+ str r0, [r6, #4]
+ ldr r0, [sp, #8]
+ add r4, r4, #1
+ add r7, r7, #2
+ add r6, #8
+ cmp r4, r0
+ blt _02244224
+_02244246:
+ lsl r0, r4, #1
+ add r2, r0, #1
+ ldr r0, [sp]
+ lsl r1, r4, #3
+ add r0, r0, r1
+ str r2, [r0, #4]
+ b _02244268
+_02244254:
+ sub r0, r7, #1
+ mov r2, #0
+ cmp r0, #0
+ ble _02244268
+ ldr r1, [sp]
+_0224425E:
+ str r2, [r1, #4]
+ add r2, r2, #1
+ add r1, #8
+ cmp r2, r0
+ blt _0224425E
+_02244268:
+ ldr r0, [r5, #8]
+ bl FUN_02016A18
+ ldr r0, [sp]
+ ldr r1, [sp]
+ str r0, [r5, #8]
+ ldr r0, [sp, #4]
+ bl FUN_02001658
+ mov r0, #0
+ strb r0, [r5, #0x1c]
+ ldr r0, [sp, #4]
+ bl FUN_02001328
+ mov r0, #0
+ add sp, #0x10
+ mvn r0, r0
+ pop {r3, r4, r5, r6, r7, pc}
+_0224428C:
+ ldr r0, _02244310 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #4
+ tst r0, r1
+ beq _022442CA
+ ldr r0, _02244314 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, sp, #0xc
+ ldrh r3, [r0, #2]
+ ldrh r1, [r0]
+ sub r2, r7, #1
+ add r1, r3, r1
+ cmp r2, r1
+ bne _022442B2
+ mov r0, #0
+ add sp, #0x10
+ mvn r0, r0
+ pop {r3, r4, r5, r6, r7, pc}
+_022442B2:
+ strh r3, [r5, #0x14]
+ ldrh r1, [r0]
+ add sp, #0x10
+ strh r1, [r5, #0x16]
+ ldrh r1, [r0, #2]
+ strh r1, [r5, #0x18]
+ ldrh r0, [r0]
+ strh r0, [r5, #0x1a]
+ mov r0, #1
+ strb r0, [r5, #0x1c]
+ sub r0, r0, #2
+ pop {r3, r4, r5, r6, r7, pc}
+_022442CA:
+ ldr r0, [sp, #4]
+ bl FUN_02001204
+ add r4, r0, #0
+ add r1, r5, #0
+ ldr r0, [sp, #4]
+ add r1, #0x20
+ ldrh r6, [r5, #0x20]
+ bl FUN_0200143C
+ ldrh r0, [r5, #0x20]
+ cmp r6, r0
+ beq _022442EA
+ ldr r0, _02244314 ; =0x000005DC
+ bl FUN_020054C8
+_022442EA:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _022442FA
+ add r0, r0, #1
+ cmp r4, r0
+ beq _02244308
+ b _02244302
+_022442FA:
+ ldr r0, _02244314 ; =0x000005DC
+ bl FUN_020054C8
+ b _02244308
+_02244302:
+ ldr r0, _02244314 ; =0x000005DC
+ bl FUN_020054C8
+_02244308:
+ add r0, r4, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02244310: .word 0x021C48B8
+_02244314: .word 0x000005DC
+ thumb_func_end MOD18_02244140
+
+ thumb_func_start MOD18_02244318
+MOD18_02244318: ; 0x02244318
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_02001300
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _02244334
+ ldr r0, [r4, #0x10]
+ bl FUN_020136C0
+ ldr r0, [r4, #8]
+ bl FUN_02016A18
+_02244334:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD18_02244318
+
+ thumb_func_start MOD18_0224433C
+MOD18_0224433C: ; 0x0224433C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x60
+ add r4, r1, #0
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ str r2, [sp, #0x2c]
+ ldr r2, _022445E8 ; =0x022513A8
+ str r4, [r2]
+ ldr r2, [r4]
+ cmp r2, #8
+ bls _02244356
+ b _022445E4
+_02244356:
+ add r3, r2, r2
+ add r3, pc
+ ldrh r3, [r3, #6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_02244362: ; jump table
+ .short _02244374 - _02244362 - 2 ; case 0
+ .short _0224439E - _02244362 - 2 ; case 1
+ .short _022444A4 - _02244362 - 2 ; case 2
+ .short _022444AC - _02244362 - 2 ; case 3
+ .short _022444DE - _02244362 - 2 ; case 4
+ .short _022444E6 - _02244362 - 2 ; case 5
+ .short _02244550 - _02244362 - 2 ; case 6
+ .short _0224456C - _02244362 - 2 ; case 7
+ .short _022445D8 - _02244362 - 2 ; case 8
+_02244374:
+ mov r1, #0x39
+ lsl r1, r1, #4
+ ldr r0, [sp, #0x2c]
+ add r1, r4, r1
+ bl MOD18_0224486C
+ add r1, r4, #0
+ add r0, r4, #4
+ add r1, #0x44
+ bl MOD18_022445EC
+ mov r0, #0xeb
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD18_02244B28
+ ldr r0, [r4]
+ add sp, #0x60
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_0224439E:
+ add r0, r4, #0
+ bl MOD18_02244998
+ mov r1, #0xfa
+ lsl r1, r1, #2
+ mov r0, #0
+ mov r3, #0xba
+ str r1, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r3, r3, #2
+ ldr r2, [r4, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r4, r2]
+ add r3, #0x20
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, r4, r3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02008AA4
+ mov r0, #0x6f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #2
+ str r0, [sp, #0x30]
+ mov r0, #0xc2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ str r0, [sp, #0x34]
+ mov r0, #0x12
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x3c]
+ lsr r0, r1, #5
+ mov r6, #0
+ mov r7, #0xcb
+ str r1, [sp, #0x38]
+ str r6, [sp, #0x40]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x4c]
+ add r0, sp, #0x30
+ strh r6, [r0, #0x20]
+ mov r0, #2
+ str r0, [sp, #0x58]
+ mov r0, #4
+ str r6, [sp, #0x54]
+ str r0, [sp, #0x5c]
+ add r5, r4, #0
+ lsl r7, r7, #2
+_02244422:
+ add r0, sp, #0x30
+ bl FUN_0201FE94
+ mov r1, #0xcb
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r5, r7]
+ mov r1, #0
+ bl FUN_020200A0
+ cmp r6, #0
+ bne _02244450
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_02020130
+_02244450:
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #8
+ blt _02244422
+ mov r7, #0xd3
+ mov r6, #0
+ add r5, r4, #0
+ lsl r7, r7, #2
+_02244460:
+ add r0, sp, #0x30
+ bl FUN_0201FE94
+ mov r1, #0xd3
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0xd3
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ ldr r0, [r5, r7]
+ mov r1, #2
+ bl FUN_02020130
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #0x11
+ blt _02244460
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ ldr r0, [r4]
+ add sp, #0x60
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_022444A4:
+ add r0, r2, #1
+ add sp, #0x60
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_022444AC:
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E74C
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ ldr r0, [r4]
+ add sp, #0x60
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_022444DE:
+ add r0, r2, #1
+ add sp, #0x60
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_022444E6:
+ sub r0, r1, #4
+ ldr r0, [r4, r0]
+ add r2, r4, #0
+ ldr r0, [r0, #0x38]
+ add r1, r4, #4
+ add r2, #0x44
+ bl MOD18_02244634
+ mov r1, #0xcb
+ add r0, r4, #0
+ lsl r1, r1, #2
+ add r0, #0x44
+ add r1, r4, r1
+ bl MOD18_022446E8
+ add r0, r4, #0
+ add r0, #0xa4
+ bl MOD18_02244754
+ mov r1, #0xd3
+ add r0, r4, #0
+ lsl r1, r1, #2
+ add r0, #0xa4
+ add r1, r4, r1
+ bl MOD18_0224479C
+ mov r3, #0xea
+ lsl r3, r3, #2
+ add r0, r4, r3
+ str r0, [sp]
+ add r0, r3, #4
+ add r0, r4, r0
+ str r0, [sp, #4]
+ mov r0, #0x6e
+ lsl r0, r0, #2
+ add r1, r3, #0
+ add r2, r3, #0
+ sub r1, #0x18
+ sub r2, #8
+ sub r3, r3, #4
+ ldr r0, [r4, r0]
+ add r1, r4, r1
+ add r2, r4, r2
+ add r3, r4, r3
+ bl MOD18_02244A70
+ mov r0, #0x6f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FDEC
+ add sp, #0x60
+ pop {r3, r4, r5, r6, r7, pc}
+_02244550:
+ mov r0, #0x3a
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020546C8
+ cmp r0, #0
+ beq _022445E4
+ ldr r0, [r4]
+ add sp, #0x60
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_0224456C:
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02009C0C
+ mov r0, #0xbf
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02009E04
+ mov r7, #0xba
+ mov r6, #0
+ add r5, r4, #0
+ lsl r7, r7, #2
+_02244588:
+ ldr r0, [r5, r7]
+ bl FUN_02008E2C
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _02244588
+ mov r0, #0x6f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FD58
+ mov r0, #0x39
+ lsl r0, r0, #4
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0x39
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl FUN_02019178
+ ldr r0, [sp, #0x2c]
+ mov r1, #7
+ bl FUN_020178A0
+ ldr r0, [sp, #0x2c]
+ bl MOD18_02244858
+ mov r0, #0xeb
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD18_02244B7C
+ ldr r0, [r4]
+ add sp, #0x60
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_022445D8:
+ sub r1, r1, #4
+ ldr r1, [r4, r1]
+ mov r2, #0
+ str r2, [r1, #0x68]
+ bl FUN_0200621C
+_022445E4:
+ add sp, #0x60
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022445E8: .word 0x022513A8
+ thumb_func_end MOD18_0224433C
+
+ thumb_func_start MOD18_022445EC
+MOD18_022445EC: ; 0x022445EC
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, _02244630 ; =0x022513AC
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r7, #0
+_022445F6:
+ mov r0, #0
+ str r0, [r6]
+ str r0, [r6, #4]
+ str r0, [r5]
+ str r0, [r5, #4]
+ str r0, [r5, #8]
+ bl FUN_0201B9EC
+ mov r1, #0x7d
+ lsl r1, r1, #2
+ bl _s32_div_f
+ add r1, #0x32
+ str r1, [r4]
+ bl FUN_0201B9EC
+ mov r1, #0x7d
+ lsl r1, r1, #2
+ bl _s32_div_f
+ add r1, #0x32
+ str r1, [r4, #4]
+ add r7, r7, #1
+ add r6, #8
+ add r5, #0xc
+ add r4, #8
+ cmp r7, #8
+ blt _022445F6
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02244630: .word 0x022513AC
+ thumb_func_end MOD18_022445EC
+
+ thumb_func_start MOD18_02244634
+MOD18_02244634: ; 0x02244634
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ str r0, [sp]
+ add r4, r2, #0
+ mov r7, #0
+ add r6, r5, #0
+_02244640:
+ add r0, r7, #0
+ bl FUN_0204E3EC
+ str r0, [r6]
+ add r0, r7, #0
+ bl FUN_0204E440
+ str r0, [r6, #4]
+ add r7, r7, #1
+ add r6, #8
+ cmp r7, #8
+ blt _02244640
+ bl FUN_02030F40
+ cmp r0, #0
+ beq _022446AA
+ bl FUN_02031190
+ bl FUN_02030E7C
+ cmp r0, #0
+ bne _0224467E
+ ldr r0, [sp]
+ bl FUN_02055320
+ str r0, [r5]
+ ldr r0, [sp]
+ bl FUN_0205532C
+ str r0, [r5, #4]
+ b _022446AA
+_0224467E:
+ ldr r7, [r5]
+ ldr r6, [r5, #4]
+ bl FUN_02031190
+ lsl r0, r0, #3
+ ldr r0, [r5, r0]
+ str r0, [r5]
+ bl FUN_02031190
+ lsl r0, r0, #3
+ add r0, r5, r0
+ ldr r0, [r0, #4]
+ str r0, [r5, #4]
+ bl FUN_02031190
+ lsl r0, r0, #3
+ str r7, [r5, r0]
+ bl FUN_02031190
+ lsl r0, r0, #3
+ add r0, r5, r0
+ str r6, [r0, #4]
+_022446AA:
+ mov r6, #0
+ mov r7, #0x3c
+_022446AE:
+ ldr r0, [r5]
+ ldr r1, [r5, #4]
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ bne _022446CA
+ ldr r0, [r5]
+ sub r0, #0x20
+ str r0, [r4]
+ ldr r0, [r5, #4]
+ sub r0, #0x40
+ str r0, [r4, #4]
+ str r7, [r4, #8]
+ b _022446DA
+_022446CA:
+ ldr r1, [r4, #8]
+ cmp r1, #0
+ beq _022446DA
+ ldr r0, [r4]
+ cmp r0, #0
+ blt _022446DA
+ sub r0, r1, #1
+ str r0, [r4, #8]
+_022446DA:
+ add r6, r6, #1
+ add r5, #8
+ add r4, #0xc
+ cmp r6, #8
+ blt _022446AE
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02244634
+
+ thumb_func_start MOD18_022446E8
+MOD18_022446E8: ; 0x022446E8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ mov r7, #1
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r6, #0
+ lsl r7, r7, #0xc
+_022446F6:
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _0224473C
+ ldr r1, [r5]
+ mov r0, #0x8a
+ mul r0, r1
+ mov r1, #7
+ lsl r1, r1, #6
+ bl _s32_div_f
+ add r0, #0x3c
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0x1a
+ lsl r0, r0, #7
+ lsl r1, r1, #4
+ bl _s32_div_f
+ add r0, #9
+ lsl r1, r0, #0xc
+ mov r0, #3
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r7, [sp, #8]
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0
+ bl FUN_02020044
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_020200A0
+ b _02244744
+_0224473C:
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_020200A0
+_02244744:
+ add r6, r6, #1
+ add r5, #0xc
+ add r4, r4, #4
+ cmp r6, #8
+ blt _022446F6
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_022446E8
+
+ thumb_func_start MOD18_02244754
+MOD18_02244754: ; 0x02244754
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r4, #0
+_0224475A:
+ add r0, r4, #0
+ bl MOD18_0223E314
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD18_0223E37C
+ add r7, r0, #0
+ add r0, r4, #0
+ bl MOD18_0223E3E4
+ str r0, [sp]
+ add r0, r6, #0
+ add r1, r7, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ bne _0224478A
+ sub r6, #0x20
+ str r6, [r5]
+ sub r7, #0x40
+ str r7, [r5, #4]
+ ldr r0, [sp]
+ b _02244790
+_0224478A:
+ mov r0, #0
+ str r0, [r5]
+ str r0, [r5, #4]
+_02244790:
+ add r4, r4, #1
+ str r0, [r5, #8]
+ add r5, #0x10
+ cmp r4, #0x11
+ blt _0224475A
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_02244754
+
+ thumb_func_start MOD18_0224479C
+MOD18_0224479C: ; 0x0224479C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ mov r7, #1
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r6, #0
+ lsl r7, r7, #0xc
+_022447AA:
+ ldr r1, [r5]
+ cmp r1, #0
+ beq _02244808
+ mov r0, #0x8a
+ mul r0, r1
+ mov r1, #7
+ lsl r1, r1, #6
+ bl _s32_div_f
+ add r0, #0x3c
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #0x1a
+ lsl r0, r0, #7
+ lsl r1, r1, #4
+ bl _s32_div_f
+ add r0, #9
+ lsl r1, r0, #0xc
+ mov r0, #3
+ lsl r0, r0, #0x12
+ add r0, r1, r0
+ str r7, [sp, #8]
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, sp, #0
+ bl FUN_02020044
+ ldr r1, [r5, #8]
+ ldr r0, [r5, #0xc]
+ cmp r1, r0
+ beq _02244810
+ cmp r1, #0
+ ldr r0, [r4]
+ beq _02244800
+ bl FUN_02020130
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_020200A0
+ b _02244810
+_02244800:
+ mov r1, #0
+ bl FUN_020200A0
+ b _02244810
+_02244808:
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_020200A0
+_02244810:
+ ldr r0, [r5, #8]
+ add r6, r6, #1
+ str r0, [r5, #0xc]
+ add r5, #0x10
+ add r4, r4, #4
+ cmp r6, #0x11
+ blt _022447AA
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224479C
+
+ thumb_func_start MOD18_02244824
+MOD18_02244824: ; 0x02244824
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0x4e
+ mov r2, #4
+ ldr r0, _02244848 ; =MOD18_0224433C
+ lsl r1, r1, #4
+ add r3, r2, #0
+ bl FUN_020061E8
+ bl FUN_0201B6C8
+ mov r1, #0x6d
+ lsl r1, r1, #2
+ str r4, [r0, r1]
+ ldr r2, [r4, #8]
+ add r1, r1, #4
+ str r2, [r0, r1]
+ pop {r4, pc}
+ .align 2, 0
+_02244848: .word MOD18_0224433C
+ thumb_func_end MOD18_02244824
+
+ thumb_func_start MOD18_0224484C
+MOD18_0224484C: ; 0x0224484C
+ ldr r1, [r0]
+ cmp r1, #5
+ bne _02244856
+ mov r1, #6
+ str r1, [r0]
+_02244856:
+ bx lr
+ thumb_func_end MOD18_0224484C
+
+ thumb_func_start MOD18_02244858
+MOD18_02244858: ; 0x02244858
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #4
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_020178A0
+ pop {r4, pc}
+ thumb_func_end MOD18_02244858
+
+ thumb_func_start MOD18_0224486C
+MOD18_0224486C: ; 0x0224486C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x64
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ add r0, r5, #0
+ bl MOD18_02244858
+ ldr r6, _0224498C ; =0x022504B4
+ add r3, sp, #0x48
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ mov r1, #4
+ str r0, [r3]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E74C
+ ldr r6, _02244990 ; =0x02250498
+ add r3, sp, #0x2c
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ mov r1, #5
+ str r0, [r3]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E74C
+ ldr r6, _02244994 ; =0x0225047C
+ add r3, sp, #0x10
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ mov r1, #7
+ str r0, [r3]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E74C
+ add r0, r5, #0
+ mov r1, #7
+ bl FUN_02018744
+ mov r0, #0x40
+ mov r1, #0
+ str r0, [sp]
+ mov r2, #4
+ mov r0, #0x1c
+ add r3, r1, #0
+ str r2, [sp, #4]
+ bl FUN_02006930
+ mov r1, #0
+ mov r0, #5
+ str r1, [sp]
+ lsl r0, r0, #0xa
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r3, #4
+ mov r0, #0x1c
+ mov r1, #1
+ add r2, r5, #0
+ str r3, [sp, #0xc]
+ bl FUN_0200687C
+ mov r1, #0
+ mov r0, #6
+ str r1, [sp]
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r3, #4
+ mov r0, #0x1c
+ mov r1, #2
+ add r2, r5, #0
+ str r3, [sp, #0xc]
+ bl FUN_020068C8
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02054590
+ mov r0, #7
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #4
+ bl FUN_02017F18
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #7
+ bl FUN_020545B8
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02019620
+ mov r3, #0x80
+ str r3, [sp]
+ mov r2, #4
+ mov r0, #0x32
+ mov r1, #0x34
+ add r3, #0xc0
+ str r2, [sp, #4]
+ bl FUN_02006930
+ mov r0, #1
+ bl FUN_0200E394
+ add sp, #0x64
+ pop {r3, r4, r5, r6, pc}
+ nop
+_0224498C: .word 0x022504B4
+_02244990: .word 0x02250498
+_02244994: .word 0x0225047C
+ thumb_func_end MOD18_0224486C
+
+ thumb_func_start MOD18_02244998
+MOD18_02244998: ; 0x02244998
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r1, #7
+ add r6, r0, #0
+ lsl r1, r1, #6
+ mov r0, #0x19
+ add r1, r6, r1
+ mov r2, #4
+ bl FUN_02008C9C
+ mov r1, #0x6f
+ lsl r1, r1, #2
+ mov r7, #0xba
+ str r0, [r6, r1]
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_022449BA:
+ mov r0, #1
+ add r1, r4, #0
+ mov r2, #4
+ bl FUN_02008DEC
+ str r0, [r5, r7]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _022449BA
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r2, #4
+ mov r0, #0xba
+ str r2, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r1, #0x1c
+ mov r3, #0
+ bl FUN_02008F34
+ mov r1, #0xbe
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ add r0, r1, #0
+ add r0, #0xf0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #4
+ sub r1, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r6, r1]
+ mov r1, #0x1c
+ mov r2, #3
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #0xbf
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ add r0, r1, #0
+ add r0, #0xec
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #4
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r6, r1]
+ mov r1, #0x1c
+ mov r2, #5
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #3
+ lsl r1, r1, #8
+ str r0, [r6, r1]
+ add r0, r1, #0
+ add r0, #0xe8
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #4
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r6, r1]
+ mov r1, #0x1c
+ mov r2, #6
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0xc1
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ sub r1, #0xc
+ ldr r0, [r6, r1]
+ bl FUN_02009B04
+ mov r0, #0xbf
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009D68
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02244998
+
+ thumb_func_start MOD18_02244A70
+MOD18_02244A70: ; 0x02244A70
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r4, [sp, #0x2c]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ add r7, r2, #0
+ add r6, r3, #0
+ ldr r5, [sp, #0x28]
+ bl MOD18_0223E1FC
+ cmp r0, #0
+ beq _02244AA6
+_02244A8C:
+ add r1, r4, #0
+ add r1, #0x80
+ ldr r1, [r1]
+ add r0, r4, #0
+ bl MOD18_02244C48
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ bl MOD18_0223E1FC
+ cmp r0, #0
+ bne _02244A8C
+_02244AA6:
+ ldr r0, [r6]
+ cmp r0, #0
+ beq _02244AB8
+ cmp r0, #1
+ beq _02244ADE
+ cmp r0, #2
+ beq _02244AF8
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_02244AB8:
+ add r0, r4, #0
+ bl MOD18_02244CC8
+ add r2, r0, #0
+ beq _02244B24
+ mov r0, #0x10
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r3, #0
+ ldr r0, [sp, #0xc]
+ str r3, [sp, #8]
+ bl FUN_0201BD84
+ str r0, [r7]
+ mov r0, #1
+ add sp, #0x10
+ str r0, [r6]
+ pop {r3, r4, r5, r6, r7, pc}
+_02244ADE:
+ ldr r0, [r7]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_020546C8
+ cmp r0, #0
+ beq _02244B24
+ mov r0, #2
+ str r0, [r6]
+ mov r0, #0
+ add sp, #0x10
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_02244AF8:
+ add r0, r4, #0
+ bl MOD18_02244D04
+ cmp r0, #0
+ bne _02244B24
+ mov r1, #0
+ ldr r0, [sp, #0xc]
+ mov r2, #2
+ add r3, r1, #0
+ bl FUN_0201A8C8
+ ldr r0, [sp, #0xc]
+ bl FUN_020191D0
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ cmp r0, #8
+ blt _02244B24
+ mov r0, #0
+ str r0, [r5]
+ str r0, [r6]
+_02244B24:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_02244A70
+
+ thumb_func_start MOD18_02244B28
+MOD18_02244B28: ; 0x02244B28
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+ mov r7, #0x64
+_02244B32:
+ add r0, r7, #0
+ mov r1, #4
+ bl FUN_020219F4
+ add r6, r6, #1
+ stmia r4!, {r0}
+ cmp r6, #0x20
+ blt _02244B32
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x8c
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0x90
+ str r1, [r0]
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ add r1, r5, #0
+ add r1, #0x80
+ str r0, [r1]
+ mov r4, #0
+ mov r6, #0x50
+ mov r7, #4
+_02244B64:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl FUN_020219F4
+ add r1, r5, #0
+ add r1, #0x84
+ add r4, r4, #1
+ add r5, r5, #4
+ str r0, [r1]
+ cmp r4, #2
+ blt _02244B64
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_02244B28
+
+ thumb_func_start MOD18_02244B7C
+MOD18_02244B7C: ; 0x02244B7C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+_02244B84:
+ ldr r0, [r4]
+ bl FUN_02021A20
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #0x20
+ blt _02244B84
+ add r0, r5, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ bl FUN_02021A20
+ mov r4, #0
+_02244B9E:
+ add r0, r5, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ bl FUN_02021A20
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _02244B9E
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02244B7C
+
+ thumb_func_start MOD18_02244BB4
+MOD18_02244BB4: ; 0x02244BB4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ str r1, [sp]
+ add r0, r1, #0
+ add r1, r5, #0
+ add r1, #0x94
+ mov r2, #0x50
+ bl FUN_02021EF0
+ add r0, r5, #0
+ add r0, #0x94
+ ldrh r2, [r0]
+ mov r4, #0
+ ldr r0, _02244C44 ; =0x0000FFFF
+ add r1, r4, #0
+ cmp r2, r0
+ beq _02244BFA
+ add r7, r0, #0
+ mov r0, #0xe
+ add r2, r5, #0
+ lsl r0, r0, #0xc
+_02244BDE:
+ add r3, r2, #0
+ add r3, #0x94
+ ldrh r3, [r3]
+ cmp r3, r0
+ bne _02244BEC
+ add r4, r4, #1
+ add r6, r1, #0
+_02244BEC:
+ add r2, r2, #2
+ add r3, r2, #0
+ add r3, #0x94
+ ldrh r3, [r3]
+ add r1, r1, #1
+ cmp r3, r7
+ bne _02244BDE
+_02244BFA:
+ cmp r4, #2
+ blt _02244C02
+ bl ErrorHandling
+_02244C02:
+ cmp r4, #0
+ bne _02244C14
+ add r5, #0x84
+ ldr r0, [r5]
+ ldr r1, [sp]
+ bl FUN_02021A74
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02244C14:
+ lsl r0, r6, #1
+ add r0, r5, r0
+ ldr r1, _02244C44 ; =0x0000FFFF
+ add r0, #0x94
+ strh r1, [r0]
+ add r0, r5, #0
+ add r0, #0x84
+ add r1, r5, #0
+ ldr r0, [r0]
+ add r1, #0x94
+ bl FUN_02021E28
+ add r0, r5, #0
+ add r0, #0x88
+ add r1, r6, #1
+ ldr r0, [r0]
+ add r5, #0x94
+ lsl r1, r1, #1
+ add r1, r5, r1
+ bl FUN_02021E28
+ mov r0, #2
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02244C44: .word 0x0000FFFF
+ thumb_func_end MOD18_02244BB4
+
+ thumb_func_start MOD18_02244C48
+MOD18_02244C48: ; 0x02244C48
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl MOD18_02244BB4
+ add r6, r0, #0
+ add r0, r5, #0
+ add r0, #0x8c
+ mov r2, #0
+ ldr r1, [r0]
+ cmp r6, #0
+ ble _02244C7C
+ add r0, r5, #0
+ add r0, #0x90
+ ldr r3, [r0]
+ add r0, r2, #0
+_02244C66:
+ add r1, r1, #1
+ cmp r1, #0x20
+ bne _02244C6E
+ add r1, r0, #0
+_02244C6E:
+ cmp r1, r3
+ bne _02244C76
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02244C76:
+ add r2, r2, #1
+ cmp r2, r6
+ blt _02244C66
+_02244C7C:
+ mov r0, #0
+ str r0, [sp]
+ cmp r6, #0
+ ble _02244CC2
+ add r7, r5, #0
+ add r4, r5, #0
+ add r7, #0x8c
+_02244C8A:
+ add r0, r5, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ add r1, r4, #0
+ lsl r0, r0, #2
+ add r1, #0x84
+ ldr r0, [r5, r0]
+ ldr r1, [r1]
+ bl FUN_02021A74
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ add r0, r5, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ cmp r0, #0x20
+ bne _02244CB6
+ add r1, r5, #0
+ add r1, #0x8c
+ mov r0, #0
+ str r0, [r1]
+_02244CB6:
+ ldr r0, [sp]
+ add r4, r4, #4
+ add r0, r0, #1
+ str r0, [sp]
+ cmp r0, r6
+ blt _02244C8A
+_02244CC2:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02244C48
+
+ thumb_func_start MOD18_02244CC8
+MOD18_02244CC8: ; 0x02244CC8
+ add r1, r0, #0
+ add r2, r0, #0
+ add r1, #0x90
+ add r2, #0x8c
+ ldr r1, [r1]
+ ldr r2, [r2]
+ cmp r2, r1
+ beq _02244CFE
+ add r2, r0, #0
+ add r2, #0x90
+ ldr r2, [r2]
+ add r3, r2, #1
+ add r2, r0, #0
+ add r2, #0x90
+ str r3, [r2]
+ add r2, r0, #0
+ add r2, #0x90
+ ldr r2, [r2]
+ cmp r2, #0x20
+ bne _02244CF8
+ add r2, r0, #0
+ mov r3, #0
+ add r2, #0x90
+ str r3, [r2]
+_02244CF8:
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bx lr
+_02244CFE:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_02244CC8
+
+ thumb_func_start MOD18_02244D04
+MOD18_02244D04: ; 0x02244D04
+ add r1, r0, #0
+ add r1, #0x8c
+ add r0, #0x90
+ ldr r1, [r1]
+ ldr r0, [r0]
+ cmp r1, r0
+ bne _02244D16
+ mov r0, #1
+ bx lr
+_02244D16:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_02244D04
+
+ thumb_func_start MOD18_02244D1C
+MOD18_02244D1C: ; 0x02244D1C
+ mov r0, #0x78
+ bx lr
+ thumb_func_end MOD18_02244D1C
+
+ thumb_func_start MOD18_02244D20
+MOD18_02244D20: ; 0x02244D20
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020312BC
+ mov r1, #0
+ add r4, #0x18
+ add r0, r1, #0
+_02244D2E:
+ strb r0, [r4, #0xa]
+ str r0, [r4, #4]
+ add r1, r1, #1
+ add r4, #0xc
+ cmp r1, #8
+ blt _02244D2E
+ pop {r4, pc}
+ thumb_func_end MOD18_02244D20
+
+ thumb_func_start MOD18_02244D3C
+MOD18_02244D3C: ; 0x02244D3C
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_02244D3C
+
+ thumb_func_start MOD18_02244D40
+MOD18_02244D40: ; 0x02244D40
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ cmp r4, #8
+ blt _02244D4E
+ bl ErrorHandling
+_02244D4E:
+ mov r0, #0xc
+ add r5, #0x18
+ mul r0, r4
+ add r0, r5, r0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_02244D40
+
+ thumb_func_start MOD18_02244D58
+MOD18_02244D58: ; 0x02244D58
+ mov r3, #0
+ add r0, #0x18
+ add r1, r3, #0
+_02244D5E:
+ ldr r2, [r0, #4]
+ cmp r2, #0
+ ble _02244D68
+ sub r2, r2, #1
+ str r2, [r0, #4]
+_02244D68:
+ ldr r2, [r0, #4]
+ cmp r2, #0
+ bne _02244D70
+ strb r1, [r0, #0xa]
+_02244D70:
+ add r3, r3, #1
+ add r0, #0xc
+ cmp r3, #8
+ blt _02244D5E
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_02244D58
+
+ thumb_func_start MOD18_02244D7C
+MOD18_02244D7C: ; 0x02244D7C
+ strb r1, [r0, #0xa]
+ lsl r2, r1, #2
+ ldr r1, _02244D90 ; =0x02251200
+ ldr r1, [r1, r2]
+ str r1, [r0, #4]
+ ldr r1, _02244D94 ; =0x0225121C
+ ldr r1, [r1, r2]
+ str r1, [r0]
+ bx lr
+ nop
+_02244D90: .word 0x02251200
+_02244D94: .word 0x0225121C
+ thumb_func_end MOD18_02244D7C
+
+ thumb_func_start MOD18_02244D98
+MOD18_02244D98: ; 0x02244D98
+ ldr r3, _02244D9C ; =MOD18_02244D7C
+ bx r3
+ .align 2, 0
+_02244D9C: .word MOD18_02244D7C
+ thumb_func_end MOD18_02244D98
+
+ thumb_func_start MOD18_02244DA0
+MOD18_02244DA0: ; 0x02244DA0
+ ldrb r0, [r0, #0xa]
+ cmp r0, #0
+ bne _02244DAA
+ mov r0, #1
+ bx lr
+_02244DAA:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_02244DA0
+
+ thumb_func_start MOD18_02244DB0
+MOD18_02244DB0: ; 0x02244DB0
+ ldrb r0, [r0, #0xa]
+ cmp r0, #2
+ bne _02244DBA
+ mov r0, #0
+ bx lr
+_02244DBA:
+ cmp r0, #5
+ bne _02244DC2
+ mov r0, #0
+ bx lr
+_02244DC2:
+ cmp r0, #3
+ bne _02244DCA
+ mov r0, #1
+ bx lr
+_02244DCA:
+ cmp r0, #1
+ bne _02244DD2
+ mov r0, #1
+ bx lr
+_02244DD2:
+ cmp r0, #4
+ bne _02244DDA
+ mov r0, #1
+ bx lr
+_02244DDA:
+ cmp r0, #0
+ bne _02244DE2
+ mov r0, #1
+ bx lr
+_02244DE2:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_02244DB0
+
+ thumb_func_start MOD18_02244DE8
+MOD18_02244DE8: ; 0x02244DE8
+ push {r4, r5}
+ asr r2, r0, #4
+ lsr r2, r2, #0x1b
+ add r2, r0, r2
+ asr r0, r1, #4
+ lsr r0, r0, #0x1b
+ add r0, r1, r0
+ asr r3, r0, #5
+ ldr r4, _02244E1C ; =0x02251238
+ ldr r5, _02244E20 ; =0x0225124C
+ asr r2, r2, #5
+ mov r0, #0
+_02244E00:
+ ldrb r1, [r4]
+ cmp r2, r1
+ bne _02244E0C
+ ldrb r1, [r5]
+ cmp r3, r1
+ beq _02244E18
+_02244E0C:
+ add r0, r0, #1
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r0, #0x11
+ blt _02244E00
+ mov r0, #0x10
+_02244E18:
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+_02244E1C: .word 0x02251238
+_02244E20: .word 0x0225124C
+ thumb_func_end MOD18_02244DE8
+
+ thumb_func_start MOD18_02244E24
+MOD18_02244E24: ; 0x02244E24
+ push {r4, r5}
+ sub sp, #8
+ ldr r3, _02244E64 ; =0x022504D0
+ add r2, sp, #0
+ ldrh r4, [r3, #0x1c]
+ strh r4, [r2]
+ ldrh r4, [r3, #0x1e]
+ ldrh r3, [r3, #0x20]
+ strh r4, [r2, #2]
+ strh r3, [r2, #4]
+ ldrh r4, [r2]
+ ldrh r5, [r2, #2]
+ mov r3, #0
+_02244E3E:
+ add r2, r4, #0
+ add r2, #0x20
+ cmp r0, r2
+ bne _02244E52
+ cmp r1, r5
+ bne _02244E52
+ add sp, #8
+ mov r0, #1
+ pop {r4, r5}
+ bx lr
+_02244E52:
+ add r3, r3, #1
+ add r4, #0x20
+ cmp r3, #8
+ blt _02244E3E
+ mov r0, #0
+ add sp, #8
+ pop {r4, r5}
+ bx lr
+ nop
+_02244E64: .word 0x022504D0
+ thumb_func_end MOD18_02244E24
+
+ thumb_func_start MOD18_02244E68
+MOD18_02244E68: ; 0x02244E68
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r1, _02244EB0 ; =0x022504D0
+ add r5, r0, #0
+ ldrh r2, [r1, #0x22]
+ add r0, sp, #0
+ strh r2, [r0]
+ ldrh r2, [r1, #0x24]
+ ldrh r1, [r1, #0x26]
+ strh r2, [r0, #2]
+ strh r1, [r0, #4]
+ bl FUN_0202EDD8
+ cmp r0, #0
+ beq _02244E96
+ add r0, sp, #0
+ ldrh r1, [r0]
+ add sp, #8
+ strh r1, [r4]
+ ldrh r0, [r0, #2]
+ strh r0, [r4, #2]
+ pop {r3, r4, r5, pc}
+_02244E96:
+ cmp r5, #0x10
+ bne _02244E9C
+ mov r5, #0
+_02244E9C:
+ add r0, sp, #0
+ ldrh r2, [r0]
+ lsl r1, r5, #5
+ add r1, r2, r1
+ add r1, #0x20
+ strh r1, [r4]
+ ldrh r0, [r0, #2]
+ strh r0, [r4, #2]
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02244EB0: .word 0x022504D0
+ thumb_func_end MOD18_02244E68
+
+ thumb_func_start MOD18_02244EB4
+MOD18_02244EB4: ; 0x02244EB4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02031280
+ cmp r0, #0
+ beq _02244EC4
+ mov r5, #0x10
+_02244EC4:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02244E68
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02244EB4
+
+ thumb_func_start MOD18_02244ED0
+MOD18_02244ED0: ; 0x02244ED0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r0, _02245000 ; =0x022513EC
+ str r1, [sp]
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02244EE0
+ b _02244FFE
+_02244EE0:
+ bl FUN_0202595C
+ cmp r0, #0x94
+ beq _02244EEC
+ bl ErrorHandling
+_02244EEC:
+ ldr r0, _02245000 ; =0x022513EC
+ ldr r2, _02245004 ; =0x000013E8
+ str r4, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r0, _02245000 ; =0x022513EC
+ ldr r1, [sp]
+ ldr r2, [r0]
+ mov r7, #0xff
+ str r1, [r2]
+ mov r1, #0
+ add r2, r1, #0
+ add r3, r1, #0
+_02244F0A:
+ ldr r4, [r0]
+ ldr r5, _02245008 ; =0x00001284
+ add r6, r4, r2
+ ldr r4, _0224500C ; =0x00000FFF
+ strh r4, [r6, r5]
+ ldr r4, [r0]
+ add r5, r5, #2
+ add r6, r4, r2
+ ldr r4, _0224500C ; =0x00000FFF
+ strh r4, [r6, r5]
+ ldr r4, [r0]
+ ldr r5, _02245010 ; =0x000012B4
+ add r6, r4, r2
+ ldr r4, _0224500C ; =0x00000FFF
+ strh r4, [r6, r5]
+ ldr r4, [r0]
+ add r5, r5, #2
+ add r6, r4, r2
+ ldr r4, _0224500C ; =0x00000FFF
+ add r2, r2, #6
+ strh r4, [r6, r5]
+ ldr r4, [r0]
+ add r5, r4, r1
+ ldr r4, _02245014 ; =0x0000136B
+ strb r7, [r5, r4]
+ ldr r4, [r0]
+ add r5, r4, r1
+ ldr r4, _02245018 ; =0x00001373
+ strb r7, [r5, r4]
+ ldr r4, [r0]
+ add r5, r4, r1
+ ldr r4, _0224501C ; =0x00001363
+ strb r7, [r5, r4]
+ ldr r4, [r0]
+ add r5, r4, r1
+ ldr r4, _02245020 ; =0x0000137B
+ strb r7, [r5, r4]
+ ldr r4, [r0]
+ add r5, r4, r1
+ ldr r4, _02245024 ; =0x0000134B
+ strb r7, [r5, r4]
+ ldr r4, [r0]
+ add r5, r4, r1
+ ldr r4, _02245028 ; =0x00001353
+ strb r7, [r5, r4]
+ ldr r4, [r0]
+ add r5, r4, r1
+ ldr r4, _0224502C ; =0x0000135B
+ add r1, r1, #1
+ strb r7, [r5, r4]
+ ldr r4, [r0]
+ ldr r5, _02245030 ; =0x000013AC
+ add r6, r4, r3
+ mov r4, #0x48
+ strh r4, [r6, r5]
+ ldr r4, [r0]
+ ldr r5, _02245034 ; =0x000001B5
+ add r6, r4, r3
+ ldr r4, _02245038 ; =0x000013BC
+ strh r5, [r6, r4]
+ ldr r4, [r0]
+ mov r5, #1
+ add r6, r4, r3
+ ldr r4, _0224503C ; =0x000013CC
+ add r3, r3, #2
+ strh r5, [r6, r4]
+ cmp r1, #8
+ blt _02244F0A
+ mov r5, #0
+ ldr r6, _02245000 ; =0x022513EC
+ add r4, r5, #0
+ mov r7, #0xff
+_02244F9A:
+ ldr r0, [r6]
+ add r0, #0xa
+ add r0, r0, r4
+ bl FUN_020266D4
+ ldr r0, [r6]
+ add r4, #0x96
+ add r1, r0, r5
+ ldr r0, _02245040 ; =0x000012E5
+ strb r7, [r1, r0]
+ ldr r0, [r6]
+ add r1, r0, r5
+ ldr r0, _02245044 ; =0x0000133A
+ add r5, r5, #1
+ strb r7, [r1, r0]
+ cmp r5, #0x11
+ blt _02244F9A
+ ldr r0, _02245000 ; =0x022513EC
+ mov r2, #0x22
+ ldr r1, [r0]
+ ldr r0, _02245048 ; =0x00000A04
+ lsl r2, r2, #6
+ add r0, r1, r0
+ add r1, r7, #0
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ bl MOD18_02245054
+ ldr r2, _02245000 ; =0x022513EC
+ ldr r0, _0224504C ; =0x000013DC
+ ldr r1, [r2]
+ mov r3, #0x48
+ strh r3, [r1, r0]
+ add r1, r0, #2
+ ldr r4, _02245034 ; =0x000001B5
+ ldr r3, [r2]
+ add r0, r0, #4
+ strh r4, [r3, r1]
+ ldr r1, [r2]
+ mov r3, #1
+ strb r3, [r1, r0]
+ ldr r0, _02245050 ; =MOD18_02246338
+ mov r1, #0
+ mov r2, #0x64
+ bl FUN_0200CA44
+ ldr r1, _02245000 ; =0x022513EC
+ ldr r1, [r1]
+ str r0, [r1, #4]
+_02244FFE:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02245000: .word 0x022513EC
+_02245004: .word 0x000013E8
+_02245008: .word 0x00001284
+_0224500C: .word 0x00000FFF
+_02245010: .word 0x000012B4
+_02245014: .word 0x0000136B
+_02245018: .word 0x00001373
+_0224501C: .word 0x00001363
+_02245020: .word 0x0000137B
+_02245024: .word 0x0000134B
+_02245028: .word 0x00001353
+_0224502C: .word 0x0000135B
+_02245030: .word 0x000013AC
+_02245034: .word 0x000001B5
+_02245038: .word 0x000013BC
+_0224503C: .word 0x000013CC
+_02245040: .word 0x000012E5
+_02245044: .word 0x0000133A
+_02245048: .word 0x00000A04
+_0224504C: .word 0x000013DC
+_02245050: .word MOD18_02246338
+ thumb_func_end MOD18_02244ED0
+
+ thumb_func_start MOD18_02245054
+MOD18_02245054: ; 0x02245054
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ bl FUN_020377AC
+ bl FUN_02026CA8
+ add r4, r0, #0
+ bl FUN_02026CC0
+ add r6, r0, #0
+ ldr r0, [r5, #0xc]
+ bl FUN_02029FC8
+ bl FUN_0202A1B8
+ add r1, r0, #0
+ add r0, r6, #0
+ bl FUN_020268E8
+ ldr r1, _022450B8 ; =0x022513EC
+ add r0, r4, #0
+ ldr r2, [r1]
+ ldr r1, _022450BC ; =0x0000096A
+ add r1, r2, r1
+ mov r2, #0x94
+ bl MI_CpuCopy8
+ ldr r1, _022450B8 ; =0x022513EC
+ add r0, r4, #0
+ ldr r2, [r1]
+ ldr r1, _022450C0 ; =0x00001204
+ add r1, r2, r1
+ bl MOD18_02245128
+ ldr r1, _022450B8 ; =0x022513EC
+ add r0, r4, #0
+ ldr r1, [r1]
+ mov r2, #0x94
+ add r1, #0xa
+ bl MI_CpuCopy8
+ ldr r1, _022450B8 ; =0x022513EC
+ add r0, r4, #0
+ ldr r2, [r1]
+ ldr r1, _022450C4 ; =0x00000A04
+ add r1, r2, r1
+ bl MOD18_02245128
+ pop {r4, r5, r6, pc}
+ nop
+_022450B8: .word 0x022513EC
+_022450BC: .word 0x0000096A
+_022450C0: .word 0x00001204
+_022450C4: .word 0x00000A04
+ thumb_func_end MOD18_02245054
+
+ thumb_func_start MOD18_022450C8
+MOD18_022450C8: ; 0x022450C8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ mov r0, #0
+ mov ip, r0
+ mov lr, r0
+ add r0, r1, #0
+ lsl r0, r0, #2
+ str r1, [sp]
+ str r2, [sp, #4]
+ add r3, r3, r0
+ mov r7, #1
+_022450E0:
+ ldr r1, [sp]
+ mov r0, ip
+ add r0, r1, r0
+ cmp r0, #0x20
+ bge _02245112
+ ldr r1, [sp, #4]
+ mov r0, lr
+ mov r2, #0
+ add r4, r1, r0
+_022450F2:
+ ldrb r0, [r4]
+ cmp r0, #0
+ beq _0224510A
+ add r1, r6, r2
+ cmp r1, #0x20
+ bge _0224510A
+ add r0, r7, #0
+ lsl r0, r1
+ ldr r5, [r3]
+ mvn r0, r0
+ and r0, r5
+ str r0, [r3]
+_0224510A:
+ add r2, r2, #1
+ add r4, r4, #1
+ cmp r2, #3
+ blt _022450F2
+_02245112:
+ mov r0, lr
+ add r0, r0, #3
+ mov lr, r0
+ mov r0, ip
+ add r0, r0, #1
+ add r3, r3, #4
+ mov ip, r0
+ cmp r0, #3
+ blt _022450E0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_022450C8
+
+ thumb_func_start MOD18_02245128
+MOD18_02245128: ; 0x02245128
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r2, sp, #0x10
+ str r1, [sp]
+ ldr r3, _022451B4 ; =0x02250508
+ add r5, r0, #0
+ add r2, #1
+ mov r1, #9
+_02245138:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _02245138
+ ldr r3, _022451B8 ; =0x02250511
+ add r2, sp, #8
+ mov r1, #9
+_0224514A:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _0224514A
+ ldr r0, [sp]
+ mov r1, #0xff
+ mov r2, #0x80
+ bl MI_CpuFill8
+ mov r4, #0
+_02245162:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_020267C4
+ str r0, [sp, #4]
+ cmp r0, #0
+ beq _022451A8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02026810
+ add r7, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02026840
+ add r6, r0, #0
+ cmp r4, #0
+ bne _0224518E
+ add r2, sp, #0x10
+ add r2, #1
+ b _0224519E
+_0224518E:
+ cmp r4, #0x10
+ bge _0224519C
+ ldr r0, [sp, #4]
+ bl FUN_0204CAA0
+ add r2, r0, #0
+ b _0224519E
+_0224519C:
+ add r2, sp, #8
+_0224519E:
+ ldr r3, [sp]
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD18_022450C8
+_022451A8:
+ add r4, r4, #1
+ cmp r4, #0x20
+ blt _02245162
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022451B4: .word 0x02250508
+_022451B8: .word 0x02250511
+ thumb_func_end MOD18_02245128
+
+ thumb_func_start MOD18_022451BC
+MOD18_022451BC: ; 0x022451BC
+ push {r3, lr}
+ bl MOD18_0224646C
+ ldr r0, _022451E4 ; =0x022513EC
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _022451D8
+ bl FUN_0200CAB4
+ ldr r0, _022451E4 ; =0x022513EC
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #4]
+_022451D8:
+ ldr r0, _022451E4 ; =0x022513EC
+ mov r2, #1
+ ldr r1, [r0]
+ ldr r0, _022451E8 ; =0x000013E4
+ strb r2, [r1, r0]
+ pop {r3, pc}
+ .align 2, 0
+_022451E4: .word 0x022513EC
+_022451E8: .word 0x000013E4
+ thumb_func_end MOD18_022451BC
+
+ thumb_func_start MOD18_022451EC
+MOD18_022451EC: ; 0x022451EC
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r1, _0224525C ; =0x022513EC
+ ldr r0, _02245260 ; =0x000013E4
+ ldr r2, [r1]
+ mov r4, #0
+ strb r4, [r2, r0]
+ ldr r1, [r1]
+ add r0, r0, #2
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _0224523E
+_02245202:
+ add r0, r4, #0
+ bl MOD18_02246430
+ add r4, r4, #1
+ cmp r4, #8
+ blt _02245202
+ mov r5, #0
+ ldr r6, _0224525C ; =0x022513EC
+ ldr r7, _02245264 ; =0x00000FFF
+ add r4, r5, #0
+_02245216:
+ ldr r1, [r6]
+ ldr r0, _02245268 ; =0x00001284
+ add r0, r1, r0
+ ldrh r3, [r0, r4]
+ add r2, r0, r4
+ cmp r3, r7
+ beq _02245236
+ ldrh r1, [r2, #2]
+ ldr r0, _02245264 ; =0x00000FFF
+ cmp r1, r0
+ beq _02245236
+ ldrb r2, [r2, #4]
+ add r0, r3, #0
+ add r3, r5, #0
+ bl MOD18_0224630C
+_02245236:
+ add r5, r5, #1
+ add r4, r4, #6
+ cmp r5, #8
+ blt _02245216
+_0224523E:
+ ldr r0, _0224525C ; =0x022513EC
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ bne _02245258
+ ldr r0, _0224526C ; =MOD18_02246338
+ mov r1, #0
+ mov r2, #0x64
+ bl FUN_0200CA44
+ ldr r1, _0224525C ; =0x022513EC
+ ldr r1, [r1]
+ str r0, [r1, #4]
+_02245258:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0224525C: .word 0x022513EC
+_02245260: .word 0x000013E4
+_02245264: .word 0x00000FFF
+_02245268: .word 0x00001284
+_0224526C: .word MOD18_02246338
+ thumb_func_end MOD18_022451EC
+
+ thumb_func_start MOD18_02245270
+MOD18_02245270: ; 0x02245270
+ push {r3, lr}
+ ldr r0, _022452A0 ; =0x022513EC
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _02245288
+ bl FUN_0200CAB4
+ ldr r0, _022452A0 ; =0x022513EC
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #4]
+_02245288:
+ bl MOD18_0224646C
+ ldr r0, _022452A0 ; =0x022513EC
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02245298
+ bl FUN_02016A18
+_02245298:
+ ldr r0, _022452A0 ; =0x022513EC
+ mov r1, #0
+ str r1, [r0]
+ pop {r3, pc}
+ .align 2, 0
+_022452A0: .word 0x022513EC
+ thumb_func_end MOD18_02245270
+
+ thumb_func_start MOD18_022452A4
+MOD18_022452A4: ; 0x022452A4
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ ldr r7, _02245308 ; =0x00000FFF
+ ldr r6, _0224530C ; =0x022513EC
+ str r4, [sp]
+ add r5, r4, #0
+_022452B0:
+ ldr r0, [r6]
+ add r0, #0xa
+ add r0, r0, r4
+ bl FUN_02026714
+ ldr r0, [r6]
+ add r4, #0x96
+ add r1, r0, r5
+ ldr r0, _02245310 ; =0x00001284
+ strh r7, [r1, r0]
+ ldr r0, [r6]
+ add r1, r0, r5
+ ldr r0, _02245314 ; =0x00001286
+ strh r7, [r1, r0]
+ ldr r0, [r6]
+ add r1, r0, r5
+ ldr r0, _02245318 ; =0x000012B4
+ strh r7, [r1, r0]
+ ldr r0, [r6]
+ add r1, r0, r5
+ ldr r0, _0224531C ; =0x000012B6
+ add r5, r5, #6
+ strh r7, [r1, r0]
+ ldr r0, [sp]
+ add r0, r0, #1
+ str r0, [sp]
+ cmp r0, #8
+ blt _022452B0
+ ldr r0, _0224530C ; =0x022513EC
+ mov r2, #0x22
+ ldr r1, [r0]
+ ldr r0, _02245320 ; =0x00000A04
+ lsl r2, r2, #6
+ add r0, r1, r0
+ mov r1, #0xff
+ bl MI_CpuFill8
+ ldr r0, _0224530C ; =0x022513EC
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD18_02245054
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02245308: .word 0x00000FFF
+_0224530C: .word 0x022513EC
+_02245310: .word 0x00001284
+_02245314: .word 0x00001286
+_02245318: .word 0x000012B4
+_0224531C: .word 0x000012B6
+_02245320: .word 0x00000A04
+ thumb_func_end MOD18_022452A4
+
+ thumb_func_start MOD18_02245324
+MOD18_02245324: ; 0x02245324
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ ldr r6, _0224534C ; =0x022513EC
+ add r5, r4, #0
+_0224532C:
+ ldr r0, [r6]
+ add r0, #0xa
+ add r0, r0, r5
+ bl FUN_020266D4
+ add r4, r4, #1
+ add r5, #0x96
+ cmp r4, #0x11
+ blt _0224532C
+ ldr r0, _0224534C ; =0x022513EC
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD18_02245054
+ pop {r4, r5, r6, pc}
+ nop
+_0224534C: .word 0x022513EC
+ thumb_func_end MOD18_02245324
+
+ thumb_func_start MOD18_02245350
+MOD18_02245350: ; 0x02245350
+ ldr r0, _02245354 ; =0x000013E8
+ bx lr
+ .align 2, 0
+_02245354: .word 0x000013E8
+ thumb_func_end MOD18_02245350
+
+ thumb_func_start MOD18_02245358
+MOD18_02245358: ; 0x02245358
+ push {r4, r5}
+ ldr r2, _0224539C ; =0x022513EC
+ ldr r1, [r2]
+ cmp r1, #0
+ beq _02245396
+ add r4, r1, r0
+ ldr r1, _022453A0 ; =0x00001363
+ mov r3, #0xff
+ strb r3, [r4, r1]
+ ldr r4, [r2]
+ add r5, r4, r0
+ add r4, r1, #0
+ add r4, #8
+ strb r3, [r5, r4]
+ ldr r4, [r2]
+ add r5, r4, r0
+ add r4, r1, #0
+ add r4, #0x10
+ strb r3, [r5, r4]
+ mov r3, #6
+ mul r3, r0
+ ldr r4, [r2]
+ ldr r0, _022453A4 ; =0x00000FFF
+ add r5, r4, r3
+ add r4, r1, #0
+ sub r4, #0xaf
+ strh r0, [r5, r4]
+ ldr r2, [r2]
+ sub r1, #0xad
+ add r2, r2, r3
+ strh r0, [r2, r1]
+_02245396:
+ pop {r4, r5}
+ bx lr
+ nop
+_0224539C: .word 0x022513EC
+_022453A0: .word 0x00001363
+_022453A4: .word 0x00000FFF
+ thumb_func_end MOD18_02245358
+
+ thumb_func_start MOD18_022453A8
+MOD18_022453A8: ; 0x022453A8
+ push {r3, r4, r5, lr}
+ ldr r1, _022453D4 ; =0x022513EC
+ add r4, r0, #0
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _022453D2
+ bl MOD18_02246430
+ ldr r1, _022453D4 ; =0x022513EC
+ mov r0, #6
+ add r5, r4, #0
+ mul r5, r0
+ ldr r0, [r1]
+ ldr r3, _022453D8 ; =0x00000FFF
+ add r2, r0, r5
+ ldr r0, _022453DC ; =0x00001284
+ strh r3, [r2, r0]
+ ldr r1, [r1]
+ add r0, r0, #2
+ add r1, r1, r5
+ strh r3, [r1, r0]
+_022453D2:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022453D4: .word 0x022513EC
+_022453D8: .word 0x00000FFF
+_022453DC: .word 0x00001284
+ thumb_func_end MOD18_022453A8
+
+ thumb_func_start MOD18_022453E0
+MOD18_022453E0: ; 0x022453E0
+ ldr r3, _022453E4 ; =0x0204F7FD
+ bx r3
+ .align 2, 0
+_022453E4: .word 0x0204F7FD
+ thumb_func_end MOD18_022453E0
+
+ thumb_func_start MOD18_022453E8
+MOD18_022453E8: ; 0x022453E8
+ push {r3, r4, r5, r6, r7, lr}
+ mov r6, #0
+ add r7, r0, #0
+ str r1, [sp]
+ add r5, r6, #0
+_022453F2:
+ ldr r0, _02245434 ; =0x022513EC
+ ldr r4, [r0]
+ add r4, #0xa
+ add r0, r4, r5
+ bl FUN_02026CA0
+ cmp r0, #0
+ beq _02245426
+ add r0, r6, #0
+ bl FUN_0204E34C
+ cmp r0, #0
+ beq _02245426
+ add r0, r4, r5
+ bl FUN_02026C88
+ cmp r7, r0
+ bne _02245426
+ add r0, r4, r5
+ bl FUN_02026C90
+ ldr r1, [sp]
+ cmp r1, r0
+ bne _02245426
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02245426:
+ add r6, r6, #1
+ add r5, #0x96
+ cmp r6, #8
+ blt _022453F2
+ mov r0, #0xff
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02245434: .word 0x022513EC
+ thumb_func_end MOD18_022453E8
+
+ thumb_func_start MOD18_02245438
+MOD18_02245438: ; 0x02245438
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r2, #0
+ ldrb r4, [r5, #4]
+ bl FUN_02031190
+ cmp r4, r0
+ bne _02245480
+ ldr r0, _02245484 ; =0x022513EC
+ ldr r1, _02245488 ; =0x000013E4
+ ldr r0, [r0]
+ ldrb r1, [r0, r1]
+ cmp r1, #0
+ bne _02245480
+ ldrb r1, [r5, #7]
+ cmp r1, #0
+ str r4, [sp]
+ beq _02245470
+ ldrb r1, [r5, #5]
+ mov r3, #0
+ str r1, [sp, #4]
+ ldrh r1, [r5]
+ ldrh r2, [r5, #2]
+ ldr r0, [r0]
+ bl MOD18_02245E1C
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02245470:
+ ldrb r1, [r5, #5]
+ str r1, [sp, #4]
+ ldrh r1, [r5]
+ ldrh r2, [r5, #2]
+ ldrb r3, [r5, #6]
+ ldr r0, [r0]
+ bl MOD18_022459E8
+_02245480:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02245484: .word 0x022513EC
+_02245488: .word 0x000013E4
+ thumb_func_end MOD18_02245438
+
+ thumb_func_start MOD18_0224548C
+MOD18_0224548C: ; 0x0224548C
+ push {r4, lr}
+ add r4, r2, #0
+ bl FUN_02031190
+ ldrb r1, [r4]
+ cmp r1, r0
+ bne _022454B0
+ bl FUN_0204F7E4
+ bl MOD18_0223D638
+ ldr r3, _022454B4 ; =MOD18_022453E0
+ mov r1, #0x58
+ mov r2, #1
+ bl MOD18_0224DCB8
+ bl MOD18_022479A0
+_022454B0:
+ pop {r4, pc}
+ nop
+_022454B4: .word MOD18_022453E0
+ thumb_func_end MOD18_0224548C
+
+ thumb_func_start MOD18_022454B8
+MOD18_022454B8: ; 0x022454B8
+ mov r0, #8
+ bx lr
+ thumb_func_end MOD18_022454B8
+
+ thumb_func_start MOD18_022454BC
+MOD18_022454BC: ; 0x022454BC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, sp, #0
+ add r4, r2, #0
+ strb r5, [r0]
+ bl FUN_02031190
+ cmp r0, #0
+ beq _022454D4
+ bl ErrorHandling
+ pop {r3, r4, r5, pc}
+_022454D4:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _0224550C
+ ldrb r0, [r4, #2]
+ cmp r0, #0
+ ldrb r0, [r4]
+ beq _02245502
+ add r1, r5, #0
+ bl MOD18_02245528
+ cmp r0, #0
+ bne _02245518
+ ldr r0, _0224551C ; =0x022513EC
+ mov r2, #0xff
+ ldr r0, [r0]
+ add r1, r0, r5
+ ldr r0, _02245520 ; =0x0000136B
+ strb r2, [r1, r0]
+ mov r0, #0x3d
+ add r1, sp, #0
+ bl FUN_02030C4C
+ pop {r3, r4, r5, pc}
+_02245502:
+ add r1, r5, #0
+ mov r2, #0
+ bl MOD18_022455D0
+ pop {r3, r4, r5, pc}
+_0224550C:
+ ldr r0, _0224551C ; =0x022513EC
+ mov r2, #0xff
+ ldr r0, [r0]
+ add r1, r0, r5
+ ldr r0, _02245520 ; =0x0000136B
+ strb r2, [r1, r0]
+_02245518:
+ pop {r3, r4, r5, pc}
+ nop
+_0224551C: .word 0x022513EC
+_02245520: .word 0x0000136B
+ thumb_func_end MOD18_022454BC
+
+ thumb_func_start MOD18_02245524
+MOD18_02245524: ; 0x02245524
+ mov r0, #3
+ bx lr
+ thumb_func_end MOD18_02245524
+
+ thumb_func_start MOD18_02245528
+MOD18_02245528: ; 0x02245528
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _022455C4 ; =0x022513EC
+ add r6, r1, #0
+ ldr r1, [r0]
+ mov r0, #0x96
+ add r1, #8
+ mul r0, r5
+ add r0, r1, r0
+ str r0, [sp]
+ add r0, r0, #2
+ bl FUN_02026CA0
+ cmp r0, #0
+ bne _0224554E
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_0224554E:
+ mov r0, #0x36
+ bl FUN_02031354
+ cmp r0, #0
+ beq _0224555E
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_0224555E:
+ ldr r7, _022455C4 ; =0x022513EC
+ mov r4, #0
+_02245562:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0
+ beq _02245580
+ ldr r0, [r7]
+ add r1, r0, r4
+ ldr r0, _022455C8 ; =0x00001373
+ ldrb r0, [r1, r0]
+ cmp r5, r0
+ bne _02245580
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_02245580:
+ add r4, r4, #1
+ cmp r4, #8
+ blt _02245562
+ add r0, r5, #0
+ add r1, sp, #4
+ bl MOD18_02244EB4
+ ldr r0, [sp]
+ strb r6, [r0, #1]
+ add r0, r5, #0
+ bl MOD18_02245FC0
+ ldr r2, _022455C4 ; =0x022513EC
+ lsl r0, r5, #0x18
+ ldr r1, [r2]
+ lsr r0, r0, #0x18
+ add r3, r1, r6
+ ldr r1, _022455CC ; =0x0000136B
+ strb r0, [r3, r1]
+ ldr r2, [r2]
+ add r1, #8
+ add r2, r2, r6
+ strb r0, [r2, r1]
+ add r2, sp, #4
+ ldrh r1, [r2]
+ ldrh r2, [r2, #2]
+ add r0, r6, #0
+ mov r3, #0
+ bl FUN_0204E794
+ mov r0, #1
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022455C4: .word 0x022513EC
+_022455C8: .word 0x00001373
+_022455CC: .word 0x0000136B
+ thumb_func_end MOD18_02245528
+
+ thumb_func_start MOD18_022455D0
+MOD18_022455D0: ; 0x022455D0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r1, sp, #4
+ add r4, r0, #0
+ str r2, [sp]
+ bl MOD18_02244E68
+ ldr r0, _0224565C ; =0x022513EC
+ ldr r0, [r0]
+ add r1, r0, r5
+ ldr r0, _02245660 ; =0x0000136B
+ strb r4, [r1, r0]
+ bl FUN_02031280
+ cmp r0, #0
+ beq _02245604
+ ldr r0, _0224565C ; =0x022513EC
+ ldr r2, [r0]
+ ldr r0, _02245664 ; =0x000013DC
+ add r1, r0, #2
+ ldrh r4, [r2, r0]
+ add r0, r0, #4
+ ldrh r7, [r2, r1]
+ ldrb r6, [r2, r0]
+ b _0224561A
+_02245604:
+ ldr r0, _0224565C ; =0x022513EC
+ lsl r1, r5, #1
+ ldr r0, [r0]
+ add r2, r0, r1
+ ldr r1, _02245668 ; =0x000013AC
+ add r0, r1, #0
+ ldrh r4, [r2, r1]
+ add r0, #0x10
+ add r1, #0x20
+ ldrh r7, [r2, r0]
+ ldrh r6, [r2, r1]
+_0224561A:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ add r3, r6, #0
+ bl FUN_0204E794
+ add r0, r6, #0
+ bl FUN_02059BF4
+ add r4, r4, r0
+ add r0, r6, #0
+ bl FUN_02059C00
+ add r1, sp, #4
+ add r0, r7, r0
+ strh r4, [r1, #6]
+ strh r0, [r1, #8]
+ strb r5, [r1, #0xa]
+ ldr r0, [sp]
+ strb r6, [r1, #0xb]
+ strb r0, [r1, #0xc]
+ add r1, sp, #8
+ mov r0, #0x39
+ add r1, #2
+ bl FUN_02030C4C
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0224565C: .word 0x022513EC
+_02245660: .word 0x0000136B
+_02245664: .word 0x000013DC
+_02245668: .word 0x000013AC
+ thumb_func_end MOD18_022455D0
+
+ thumb_func_start MOD18_0224566C
+MOD18_0224566C: ; 0x0224566C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r6, r0, #0
+ ldr r0, _022457C8 ; =0x022513EC
+ add r7, r1, #0
+ ldr r0, [r0]
+ str r2, [sp]
+ cmp r0, #0
+ bne _02245684
+ add sp, #0x1c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_02245684:
+ cmp r6, #0
+ beq _0224569A
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0
+ bne _0224569A
+ add sp, #0x1c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_0224569A:
+ add r0, r6, #0
+ bl FUN_0204D830
+ cmp r0, #0
+ beq _022456AA
+ add sp, #0x1c
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_022456AA:
+ ldr r0, _022457C8 ; =0x022513EC
+ ldr r0, [r0]
+ add r1, r0, r6
+ ldr r0, _022457CC ; =0x0000136B
+ ldrb r0, [r1, r0]
+ cmp r0, #0xff
+ beq _022456BE
+ add sp, #0x1c
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_022456BE:
+ ldr r1, [sp]
+ add r0, r7, #0
+ bl MOD18_022453E8
+ cmp r0, #0xff
+ beq _02245702
+ ldr r1, _022457C8 ; =0x022513EC
+ lsl r0, r0, #0x18
+ ldr r1, [r1]
+ lsr r0, r0, #0x18
+ add r2, r1, r6
+ ldr r1, _022457CC ; =0x0000136B
+ strb r0, [r2, r1]
+ mov r1, #1
+ add r2, sp, #4
+ strb r1, [r2, #7]
+ ldr r1, [sp]
+ strh r7, [r2]
+ strh r1, [r2, #2]
+ mov r1, #0
+ strb r1, [r2, #6]
+ strb r6, [r2, #4]
+ strb r0, [r2, #5]
+ mov r0, #0x3a
+ add r1, sp, #4
+ bl FUN_02030C4C
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add sp, #0x1c
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_02245702:
+ mov r5, #0
+ add r4, r5, #0
+_02245706:
+ ldr r0, _022457C8 ; =0x022513EC
+ ldr r0, [r0]
+ add r0, #0xa
+ add r0, r0, r4
+ bl FUN_02026CA0
+ cmp r0, #0
+ beq _02245766
+ add r0, r5, #0
+ add r1, sp, #0xc
+ bl MOD18_02244E68
+ add r0, sp, #4
+ ldrh r0, [r0, #8]
+ cmp r7, r0
+ bne _02245766
+ add r0, sp, #4
+ ldrh r1, [r0, #0xa]
+ ldr r0, [sp]
+ cmp r0, r1
+ bne _02245766
+ ldr r1, _022457C8 ; =0x022513EC
+ lsl r0, r5, #0x18
+ ldr r1, [r1]
+ lsr r0, r0, #0x18
+ add r2, r1, r6
+ ldr r1, _022457CC ; =0x0000136B
+ mov r3, #0
+ strb r0, [r2, r1]
+ add r2, sp, #4
+ strb r3, [r2, #7]
+ ldr r1, [sp]
+ strh r7, [r2]
+ strh r1, [r2, #2]
+ strb r3, [r2, #6]
+ strb r6, [r2, #4]
+ strb r0, [r2, #5]
+ mov r0, #0x3a
+ add r1, sp, #4
+ bl FUN_02030C4C
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add sp, #0x1c
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_02245766:
+ add r5, r5, #1
+ add r4, #0x96
+ cmp r5, #8
+ ble _02245706
+ ldr r1, [sp]
+ add r0, r7, #0
+ bl MOD18_02244E24
+ cmp r0, #0
+ beq _022457C2
+ ldr r0, _022457C8 ; =0x022513EC
+ lsl r2, r6, #1
+ ldr r1, [r0]
+ ldr r4, _022457D0 ; =0x000013AC
+ add r0, r1, r2
+ ldrh r2, [r0, r4]
+ add r3, sp, #4
+ strh r2, [r3, #0xe]
+ add r2, r4, #0
+ add r2, #0x10
+ ldrh r2, [r0, r2]
+ strh r2, [r3, #0x10]
+ add r2, r4, #0
+ strb r6, [r3, #0x12]
+ add r2, #0x20
+ ldrh r0, [r0, r2]
+ mov r2, #0
+ sub r4, #0x41
+ strb r0, [r3, #0x13]
+ strb r2, [r3, #0x14]
+ add r0, r1, r6
+ strb r2, [r0, r4]
+ ldrh r1, [r3, #0xe]
+ ldrh r2, [r3, #0x10]
+ ldrb r3, [r3, #0x13]
+ add r0, r6, #0
+ bl FUN_0204E794
+ add r1, sp, #0x10
+ mov r0, #0x39
+ add r1, #2
+ bl FUN_02030C4C
+ add sp, #0x1c
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_022457C2:
+ mov r0, #0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022457C8: .word 0x022513EC
+_022457CC: .word 0x0000136B
+_022457D0: .word 0x000013AC
+ thumb_func_end MOD18_0224566C
+
+ thumb_func_start MOD18_022457D4
+MOD18_022457D4: ; 0x022457D4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _022457E6
+ mov r1, #4
+ bl FUN_020021EC
+_022457E6:
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ bl MOD18_0223E6A0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_022457D4
+
+ thumb_func_start MOD18_022457F8
+MOD18_022457F8: ; 0x022457F8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _0224580A
+ mov r1, #4
+ bl FUN_020021EC
+_0224580A:
+ add r0, r4, #0
+ mov r2, #0
+ add r1, sp, #0
+ strb r2, [r1, #1]
+ add r0, #0x2c
+ ldrb r0, [r0]
+ strb r0, [r1]
+ strb r2, [r1, #2]
+ mov r0, #0x3b
+ add r1, sp, #0
+ bl FUN_020311D0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ bl MOD18_0223E6A0
+ bl MOD18_022479A0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_022457F8
+
+ thumb_func_start MOD18_02245838
+MOD18_02245838: ; 0x02245838
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r7, r0, #0
+ ldr r0, [r4, #0xc]
+ mov r5, #0
+ ldr r6, [r4]
+ cmp r0, #7
+ bhi _02245896
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02245856: ; jump table
+ .short _02245866 - _02245856 - 2 ; case 0
+ .short _0224588A - _02245856 - 2 ; case 1
+ .short _022458B0 - _02245856 - 2 ; case 2
+ .short _022458D4 - _02245856 - 2 ; case 3
+ .short _022458F8 - _02245856 - 2 ; case 4
+ .short _0224592A - _02245856 - 2 ; case 5
+ .short _0224594E - _02245856 - 2 ; case 6
+ .short _02245972 - _02245856 - 2 ; case 7
+_02245866:
+ bl FUN_0202EDD8
+ cmp r0, #0
+ beq _02245874
+ mov r6, #0x2f
+ mov r0, #3
+ b _02245878
+_02245874:
+ mov r6, #0x32
+ mov r0, #1
+_02245878:
+ str r0, [r4, #0xc]
+ bl MOD18_0223D638
+ mov r2, #0
+ add r1, r6, #0
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ b _022459A0
+_0224588A:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ beq _02245898
+_02245896:
+ b _022459A0
+_02245898:
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r6, #8]
+ ldr r1, _022459E0 ; =0x022504F8
+ ldr r2, _022459E4 ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r4, #4]
+ mov r0, #2
+ str r0, [r4, #0xc]
+ b _022459A0
+_022458B0:
+ ldr r0, [r4, #4]
+ mov r1, #4
+ bl FUN_020021AC
+ cmp r0, #0
+ bne _022458C6
+ add r0, r5, #0
+ str r0, [r4, #4]
+ mov r0, #7
+ str r0, [r4, #0xc]
+ b _022459A0
+_022458C6:
+ sub r1, r5, #1
+ cmp r0, r1
+ beq _022459A0
+ add r0, r5, #0
+ str r0, [r4, #4]
+ mov r5, #1
+ b _022459A0
+_022458D4:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _022459A0
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r6, #8]
+ ldr r1, _022459E0 ; =0x022504F8
+ ldr r2, _022459E4 ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r4, #4]
+ mov r0, #4
+ str r0, [r4, #0xc]
+ b _022459A0
+_022458F8:
+ ldr r0, [r4, #4]
+ mov r1, #4
+ bl FUN_020021AC
+ cmp r0, #0
+ bne _0224591C
+ add r0, r5, #0
+ str r0, [r4, #4]
+ bl MOD18_0223D638
+ add r2, r5, #0
+ mov r1, #0x30
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ mov r0, #5
+ str r0, [r4, #0xc]
+ b _022459A0
+_0224591C:
+ sub r1, r5, #1
+ cmp r0, r1
+ beq _022459A0
+ add r0, r5, #0
+ str r0, [r4, #4]
+ mov r5, #1
+ b _022459A0
+_0224592A:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _022459A0
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r6, #8]
+ ldr r1, _022459E0 ; =0x022504F8
+ ldr r2, _022459E4 ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r4, #4]
+ mov r0, #6
+ str r0, [r4, #0xc]
+ b _022459A0
+_0224594E:
+ ldr r0, [r4, #4]
+ mov r1, #4
+ bl FUN_020021AC
+ cmp r0, #0
+ bne _02245964
+ add r0, r5, #0
+ str r0, [r4, #4]
+ mov r0, #7
+ str r0, [r4, #0xc]
+ b _022459A0
+_02245964:
+ sub r1, r5, #1
+ cmp r0, r1
+ beq _022459A0
+ add r0, r5, #0
+ str r0, [r4, #4]
+ mov r5, #1
+ b _022459A0
+_02245972:
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ mov r0, #1
+ add r1, sp, #4
+ strb r0, [r1, #1]
+ add r0, r4, #0
+ add r0, #0x2c
+ ldrb r0, [r0]
+ strb r0, [r1]
+ add r0, r5, #0
+ strb r0, [r1, #2]
+ mov r0, #0x3b
+ add r1, sp, #4
+ bl FUN_020311D0
+ add r0, r7, #0
+ add r1, r4, #0
+ bl MOD18_022457D4
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_022459A0:
+ bl FUN_0202EDD8
+ cmp r0, #0
+ bne _022459C4
+ add r0, r4, #0
+ add r0, #0x2c
+ ldrb r0, [r0]
+ cmp r0, #8
+ bhs _022459C4
+ bl FUN_02030E7C
+ cmp r0, #0
+ bne _022459C4
+ bl FUN_02031190
+ cmp r0, #0
+ beq _022459C4
+ mov r5, #1
+_022459C4:
+ cmp r5, #0
+ beq _022459DC
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add r0, r7, #0
+ add r1, r4, #0
+ bl MOD18_022457F8
+ bl FUN_0204F7FC
+_022459DC:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022459E0: .word 0x022504F8
+_022459E4: .word 0x000003D9
+ thumb_func_end MOD18_02245838
+
+ thumb_func_start MOD18_022459E8
+MOD18_022459E8: ; 0x022459E8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp]
+ bl MOD18_02247984
+ mov r0, #4
+ mov r1, #0x30
+ bl FUN_020169D8
+ mov r1, #0
+ mov r2, #0x30
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4, #0x18]
+ str r6, [r4, #0x1c]
+ add r0, r4, #0
+ ldr r1, [sp, #0x18]
+ str r7, [r4, #0x20]
+ add r0, #0x2b
+ strb r1, [r0]
+ add r0, r4, #0
+ ldr r1, [sp, #0x1c]
+ add r0, #0x2c
+ strb r1, [r0]
+ mov r0, #2
+ str r0, [r4, #0x14]
+ ldr r0, [sp]
+ add r1, r4, #0
+ str r0, [r4, #0x24]
+ ldr r0, _02245A48 ; =MOD18_02245838
+ str r5, [r4]
+ mov r2, #0x64
+ bl FUN_0200CA44
+ str r0, [r4, #8]
+ ldr r1, [r4, #8]
+ ldr r2, _02245A4C ; =MOD18_022457F8
+ add r0, r4, #0
+ bl MOD18_0223E688
+ bl FUN_0204F7E4
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02245A48: .word MOD18_02245838
+_02245A4C: .word MOD18_022457F8
+ thumb_func_end MOD18_022459E8
+
+ thumb_func_start MOD18_02245A50
+MOD18_02245A50: ; 0x02245A50
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ add r6, r1, #0
+ add r7, r2, #0
+ mov r4, #0
+ str r3, [sp]
+ cmp r0, #0
+ bne _02245AA2
+ mov r0, #0xb
+ mov r1, #0x30
+ bl FUN_020169D8
+ mov r1, #0
+ mov r2, #0x30
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4, #0x18]
+ str r6, [r4, #0x1c]
+ add r0, r4, #0
+ ldr r1, [sp, #0x18]
+ str r7, [r4, #0x20]
+ add r0, #0x2b
+ strb r1, [r0]
+ add r0, r4, #0
+ ldr r1, [sp, #0x1c]
+ add r0, #0x2c
+ strb r1, [r0]
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0]
+ cmp r0, #2
+ beq _02245A9A
+ bl ErrorHandling
+_02245A9A:
+ mov r0, #2
+ str r0, [r4, #0x14]
+ ldr r0, [sp]
+ str r0, [r4, #0x24]
+_02245AA2:
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02245A50
+
+ thumb_func_start MOD18_02245AA8
+MOD18_02245AA8: ; 0x02245AA8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r7, #0
+ str r0, [sp]
+ str r1, [sp, #4]
+ add r4, r7, #0
+_02245AB4:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0
+ beq _02245B0C
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ beq _02245AD6
+ add r0, r4, #0
+ bl FUN_0204E544
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_0204E598
+ b _02245AE4
+_02245AD6:
+ add r0, r4, #0
+ bl FUN_0204E3EC
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_0204E440
+_02245AE4:
+ add r5, r0, #0
+ ldr r0, _02245B18 ; =0x0000FFFF
+ cmp r6, r0
+ bne _02245AF0
+ cmp r5, r0
+ beq _02245B0C
+_02245AF0:
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ beq _02245B0C
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD18_02244DE8
+ ldr r1, [sp]
+ cmp r0, r1
+ bne _02245B0C
+ add r7, r7, #1
+_02245B0C:
+ add r4, r4, #1
+ cmp r4, #8
+ blt _02245AB4
+ add r0, r7, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02245B18: .word 0x0000FFFF
+ thumb_func_end MOD18_02245AA8
+
+ thumb_func_start MOD18_02245B1C
+MOD18_02245B1C: ; 0x02245B1C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ str r2, [sp, #8]
+ add r6, r0, #0
+ add r7, r1, #0
+ str r3, [sp, #0xc]
+ bl MOD18_0223D638
+ bl MOD18_0224DBB4
+ add r5, r0, #0
+ ldr r1, [sp, #0x30]
+ mov r0, #2
+ bl FUN_02012838
+ add r4, r0, #0
+ add r1, r5, #0
+ mov r2, #0x26
+ mov r3, #0
+ bl FUN_02012880
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #0x27
+ mov r3, #1
+ bl FUN_02012880
+ ldr r0, [sp, #0x30]
+ mov r1, #1
+ str r4, [sp, #0x10]
+ bl FUN_02018FF4
+ add r1, r0, #0
+ str r1, [sp, #0x14]
+ mov r0, #0
+ add r3, sp, #0x10
+ strb r0, [r3, #8]
+ mov r0, #1
+ strb r0, [r3, #9]
+ mov r0, #2
+ strb r0, [r3, #0xa]
+ ldrb r0, [r3, #0xb]
+ mov r2, #0xf
+ bic r0, r2
+ strb r0, [r3, #0xb]
+ ldrb r4, [r3, #0xb]
+ mov r0, #0x30
+ bic r4, r0
+ strb r4, [r3, #0xb]
+ ldrb r0, [r3, #0xb]
+ bic r0, r2
+ strb r0, [r3, #0xb]
+ add r0, r6, #0
+ add r2, r7, #0
+ bl FUN_02019150
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #8]
+ ldr r3, [sp, #0xc]
+ mov r1, #1
+ bl FUN_0200CCA4
+ ldr r0, [sp, #0x30]
+ mov r2, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ add r0, sp, #0x10
+ mov r1, #8
+ add r3, r2, #0
+ bl FUN_02001C14
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_02245B1C
+
+ thumb_func_start MOD18_02245BB4
+MOD18_02245BB4: ; 0x02245BB4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r7, r0, #0
+ ldr r0, [r4, #0xc]
+ mov r5, #0
+ ldr r6, [r4]
+ cmp r0, #0xa
+ bhi _02245C7A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02245BD2: ; jump table
+ .short _02245BE8 - _02245BD2 - 2 ; case 0
+ .short _02245C14 - _02245BD2 - 2 ; case 1
+ .short _02245C38 - _02245BD2 - 2 ; case 2
+ .short _02245C5C - _02245BD2 - 2 ; case 3
+ .short _02245C6E - _02245BD2 - 2 ; case 4
+ .short _02245C94 - _02245BD2 - 2 ; case 5
+ .short _02245CF8 - _02245BD2 - 2 ; case 6
+ .short _02245D1C - _02245BD2 - 2 ; case 7
+ .short _02245D4E - _02245BD2 - 2 ; case 8
+ .short _02245D6C - _02245BD2 - 2 ; case 9
+ .short _02245D96 - _02245BD2 - 2 ; case 10
+_02245BE8:
+ add r0, r4, #0
+ add r0, #0x2c
+ ldrb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x2b
+ ldrb r0, [r0]
+ cmp r1, r0
+ beq _02245BFE
+ mov r6, #0x2d
+ mov r0, #1
+ b _02245C02
+_02245BFE:
+ mov r6, #0x29
+ mov r0, #4
+_02245C02:
+ str r0, [r4, #0xc]
+ bl MOD18_0223D638
+ mov r2, #0
+ add r1, r6, #0
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ b _02245DCE
+_02245C14:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02245C7A
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r6, #8]
+ ldr r1, _02245E08 ; =0x022504F8
+ ldr r2, _02245E0C ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r4, #4]
+ mov r0, #2
+ str r0, [r4, #0xc]
+ b _02245DCE
+_02245C38:
+ ldr r0, [r4, #4]
+ mov r1, #4
+ bl FUN_020021AC
+ cmp r0, #0
+ bne _02245C4E
+ add r0, r5, #0
+ str r0, [r4, #4]
+ mov r0, #3
+ str r0, [r4, #0xc]
+ b _02245DCE
+_02245C4E:
+ sub r1, r5, #1
+ cmp r0, r1
+ beq _02245C7A
+ add r0, r5, #0
+ str r0, [r4, #4]
+ mov r5, #1
+ b _02245DCE
+_02245C5C:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02245C7A
+ mov r0, #0xa
+ str r0, [r4, #0xc]
+ b _02245DCE
+_02245C6E:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ beq _02245C7C
+_02245C7A:
+ b _02245DCE
+_02245C7C:
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r6, #8]
+ ldr r1, _02245E08 ; =0x022504F8
+ ldr r2, _02245E0C ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r4, #4]
+ mov r0, #5
+ str r0, [r4, #0xc]
+ b _02245DCE
+_02245C94:
+ ldr r0, [r4, #4]
+ mov r1, #4
+ bl FUN_020021AC
+ cmp r0, #0
+ bne _02245CEA
+ add r0, r5, #0
+ str r0, [r4, #4]
+ add r0, r4, #0
+ add r0, #0x2c
+ ldrb r0, [r0]
+ bl FUN_0204EE9C
+ cmp r0, #0
+ bne _02245CC2
+ add r0, r4, #0
+ add r0, #0x2c
+ ldrb r0, [r0]
+ add r1, r5, #0
+ bl MOD18_02245AA8
+ cmp r0, #0
+ ble _02245CD6
+_02245CC2:
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x2c
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ mov r0, #3
+ str r0, [r4, #0xc]
+ b _02245DCE
+_02245CD6:
+ bl MOD18_0223D638
+ add r2, r5, #0
+ mov r1, #0x25
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ mov r0, #6
+ str r0, [r4, #0xc]
+ b _02245DCE
+_02245CEA:
+ sub r1, r5, #1
+ cmp r0, r1
+ beq _02245DCE
+ add r0, r5, #0
+ str r0, [r4, #4]
+ mov r5, #1
+ b _02245DCE
+_02245CF8:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02245DCE
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r6, #8]
+ ldr r1, _02245E10 ; =0x02250500
+ ldr r2, _02245E0C ; =0x000003D9
+ mov r3, #0xb
+ bl MOD18_02245B1C
+ str r0, [r4, #4]
+ mov r0, #7
+ str r0, [r4, #0xc]
+ b _02245DCE
+_02245D1C:
+ ldr r0, [r4, #4]
+ mov r1, #4
+ bl FUN_020021AC
+ cmp r0, #0
+ bne _02245D32
+ add r0, r5, #0
+ str r0, [r4, #4]
+ mov r0, #3
+ str r0, [r4, #0xc]
+ b _02245DCE
+_02245D32:
+ cmp r0, #1
+ bne _02245D40
+ add r0, r5, #0
+ str r0, [r4, #4]
+ mov r0, #8
+ str r0, [r4, #0xc]
+ b _02245DCE
+_02245D40:
+ sub r1, r5, #1
+ cmp r0, r1
+ beq _02245DCE
+ add r0, r5, #0
+ str r0, [r4, #4]
+ mov r5, #1
+ b _02245DCE
+_02245D4E:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02245DCE
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ bl FUN_0204FCF4
+ mov r0, #9
+ str r0, [r4, #0xc]
+ b _02245DCE
+_02245D6C:
+ bl FUN_0202EDD8
+ cmp r0, #0
+ beq _02245DCE
+ bl FUN_02031190
+ cmp r0, #0
+ bne _02245DCE
+ mov r1, #1
+ add r0, sp, #4
+ strb r1, [r0]
+ mov r0, #0x56
+ add r1, sp, #4
+ bl FUN_020311D0
+ add r0, r7, #0
+ add r1, r4, #0
+ bl MOD18_022457D4
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_02245D96:
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add r0, r4, #0
+ mov r2, #1
+ add r1, sp, #4
+ strb r2, [r1, #2]
+ add r0, #0x2c
+ ldrb r0, [r0]
+ strb r0, [r1, #1]
+ strb r2, [r1, #3]
+ add r1, sp, #4
+ mov r0, #0x3b
+ add r1, #1
+ bl FUN_020311D0
+ add r0, r7, #0
+ add r1, r4, #0
+ bl MOD18_022457D4
+ ldr r0, _02245E14 ; =0x022513EC
+ mov r2, #1
+ ldr r1, [r0]
+ ldr r0, _02245E18 ; =0x000012E4
+ add sp, #8
+ strb r2, [r1, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_02245DCE:
+ add r0, r4, #0
+ add r0, #0x2c
+ ldrb r0, [r0]
+ cmp r0, #0x10
+ beq _02245DEC
+ bl FUN_0204E34C
+ cmp r0, #0
+ bne _02245DEC
+ ldr r0, [r4, #0xc]
+ cmp r0, #8
+ beq _02245DEC
+ cmp r0, #9
+ beq _02245DEC
+ mov r5, #1
+_02245DEC:
+ cmp r5, #0
+ beq _02245E04
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add r0, r7, #0
+ add r1, r4, #0
+ bl MOD18_022457F8
+ bl FUN_0204F7FC
+_02245E04:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02245E08: .word 0x022504F8
+_02245E0C: .word 0x000003D9
+_02245E10: .word 0x02250500
+_02245E14: .word 0x022513EC
+_02245E18: .word 0x000012E4
+ thumb_func_end MOD18_02245BB4
+
+ thumb_func_start MOD18_02245E1C
+MOD18_02245E1C: ; 0x02245E1C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #4
+ mov r1, #0x30
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_020169D8
+ mov r1, #0
+ mov r2, #0x30
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4, #0x18]
+ str r6, [r4, #0x1c]
+ add r0, r4, #0
+ ldr r1, [sp, #0x18]
+ str r7, [r4, #0x20]
+ add r0, #0x2b
+ strb r1, [r0]
+ add r0, r4, #0
+ ldr r1, [sp, #0x1c]
+ add r0, #0x2c
+ strb r1, [r0]
+ mov r0, #2
+ str r0, [r4, #0x14]
+ ldr r0, [sp]
+ mov r1, #0
+ str r0, [r4, #0x24]
+ add r0, r4, #0
+ str r5, [r4]
+ add r0, #0x29
+ strb r1, [r0]
+ bl MOD18_02247984
+ ldr r0, _02245E84 ; =MOD18_02245BB4
+ add r1, r4, #0
+ mov r2, #0x64
+ bl FUN_0200CA44
+ str r0, [r4, #8]
+ ldr r1, [r4, #8]
+ ldr r2, _02245E88 ; =MOD18_022457F8
+ add r0, r4, #0
+ bl MOD18_0223E688
+ bl FUN_0204F7E4
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02245E84: .word MOD18_02245BB4
+_02245E88: .word MOD18_022457F8
+ thumb_func_end MOD18_02245E1C
+
+ thumb_func_start MOD18_02245E8C
+MOD18_02245E8C: ; 0x02245E8C
+ mov r0, #8
+ bx lr
+ thumb_func_end MOD18_02245E8C
+
+ thumb_func_start MOD18_02245E90
+MOD18_02245E90: ; 0x02245E90
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ ldr r0, _02245F10 ; =0x022513EC
+ add r4, r2, #0
+ ldr r1, [r0]
+ ldrb r0, [r4, #4]
+ mov r2, #0xff
+ add r1, r1, r0
+ ldr r0, _02245F14 ; =0x00001363
+ strb r2, [r1, r0]
+ ldrb r5, [r4, #4]
+ bl FUN_02031190
+ cmp r5, r0
+ bne _02245EFA
+ bl MOD18_0224D344
+ bl MOD18_02248FC8
+ bl MOD18_0223E6B8
+ bl FUN_02031190
+ mov r1, #0
+ bl MOD18_0223FCE8
+ mov r0, #0x2b
+ bl FUN_020311DC
+ ldr r1, _02245F10 ; =0x022513EC
+ ldr r0, _02245F18 ; =0x000013E6
+ ldr r2, [r1]
+ mov r3, #0
+ strb r3, [r2, r0]
+ ldrb r0, [r4, #4]
+ str r0, [sp]
+ ldrb r0, [r4, #6]
+ str r0, [sp, #4]
+ ldr r0, [r1]
+ ldrh r1, [r4]
+ ldrh r2, [r4, #2]
+ ldrb r3, [r4, #5]
+ ldr r0, [r0]
+ bl MOD18_0224686C
+ ldr r0, _02245F10 ; =0x022513EC
+ mov r2, #0
+ ldr r1, [r0]
+ mov r0, #0xa
+ lsl r0, r0, #8
+ str r2, [r1, r0]
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_02245EFA:
+ add r0, r5, #0
+ bl MOD18_02243FB8
+ ldrb r0, [r4, #4]
+ ldrh r1, [r4]
+ ldrh r2, [r4, #2]
+ ldrb r3, [r4, #5]
+ bl FUN_0204E7CC
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02245F10: .word 0x022513EC
+_02245F14: .word 0x00001363
+_02245F18: .word 0x000013E6
+ thumb_func_end MOD18_02245E90
+
+ thumb_func_start MOD18_02245F1C
+MOD18_02245F1C: ; 0x02245F1C
+ ldr r3, _02245F24 ; =0x020311DD
+ mov r0, #0x38
+ bx r3
+ nop
+_02245F24: .word 0x020311DD
+ thumb_func_end MOD18_02245F1C
+
+ thumb_func_start MOD18_02245F28
+MOD18_02245F28: ; 0x02245F28
+ push {r3, r4}
+ ldr r2, _02245F44 ; =0x022513EC
+ mov r4, #0xff
+ ldr r1, [r2]
+ add r3, r1, r0
+ ldr r1, _02245F48 ; =0x0000136B
+ strb r4, [r3, r1]
+ ldr r2, [r2]
+ add r1, #8
+ add r0, r2, r0
+ strb r4, [r0, r1]
+ pop {r3, r4}
+ bx lr
+ nop
+_02245F44: .word 0x022513EC
+_02245F48: .word 0x0000136B
+ thumb_func_end MOD18_02245F28
+
+ thumb_func_start MOD18_02245F4C
+MOD18_02245F4C: ; 0x02245F4C
+ ldr r1, _02245F68 ; =0x022513EC
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _02245F62
+ add r1, r1, r0
+ ldr r0, _02245F6C ; =0x0000136B
+ ldrb r0, [r1, r0]
+ cmp r0, #0xff
+ beq _02245F62
+ mov r0, #1
+ bx lr
+_02245F62:
+ mov r0, #0
+ bx lr
+ nop
+_02245F68: .word 0x022513EC
+_02245F6C: .word 0x0000136B
+ thumb_func_end MOD18_02245F4C
+
+ thumb_func_start MOD18_02245F70
+MOD18_02245F70: ; 0x02245F70
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, _02245F9C ; =0x022513EC
+ add r7, r1, #0
+ ldr r1, [r0]
+ add r5, r3, #0
+ mov r0, #0x96
+ add r1, #8
+ mul r0, r5
+ add r4, r1, r0
+ beq _02245F9A
+ add r0, r2, #0
+ bl FUN_0204F610
+ add r3, r0, #0
+ add r0, r4, #2
+ add r1, r6, #0
+ add r2, r7, #0
+ bl FUN_02026C68
+ strb r5, [r4]
+_02245F9A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02245F9C: .word 0x022513EC
+ thumb_func_end MOD18_02245F70
+
+ thumb_func_start MOD18_02245FA0
+MOD18_02245FA0: ; 0x02245FA0
+ push {r3, lr}
+ bl FUN_02031190
+ ldr r1, _02245FB8 ; =0x022513EC
+ mov r0, #0x35
+ ldr r2, [r1]
+ ldr r1, _02245FBC ; =0x00000968
+ add r1, r2, r1
+ mov r2, #0x96
+ bl FUN_0203105C
+ pop {r3, pc}
+ .align 2, 0
+_02245FB8: .word 0x022513EC
+_02245FBC: .word 0x00000968
+ thumb_func_end MOD18_02245FA0
+
+ thumb_func_start MOD18_02245FC0
+MOD18_02245FC0: ; 0x02245FC0
+ push {r4, lr}
+ ldr r1, _02245FDC ; =0x022513EC
+ add r4, r0, #0
+ ldr r3, [r1]
+ mov r2, #0x96
+ add r1, r4, #0
+ add r3, #8
+ mul r1, r2
+ mov r0, #0x36
+ add r1, r3, r1
+ bl FUN_02031000
+ pop {r4, pc}
+ nop
+_02245FDC: .word 0x022513EC
+ thumb_func_end MOD18_02245FC0
+
+ thumb_func_start MOD18_02245FE0
+MOD18_02245FE0: ; 0x02245FE0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r0, _022460EC ; =0x022513EC
+ add r6, r2, #0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022460E6
+ bl FUN_02031190
+ ldrb r1, [r6, #1]
+ cmp r1, r0
+ bne _02246020
+ ldr r0, _022460EC ; =0x022513EC
+ ldr r2, [r0]
+ ldr r0, _022460F0 ; =0x000012E4
+ ldrb r1, [r2, r0]
+ cmp r1, #2
+ bne _02246020
+ mov r1, #0
+ strb r1, [r2, r0]
+ bl FUN_0204F7FC
+ mov r0, #0x38
+ bl FUN_020311DC
+ mov r0, #0
+ bl FUN_0204D168
+ bl MOD18_022479A0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_02246020:
+ ldr r0, _022460EC ; =0x022513EC
+ mov r2, #5
+ ldr r1, [r0]
+ ldr r0, _022460F0 ; =0x000012E4
+ strb r2, [r1, r0]
+ ldrb r5, [r6]
+ cmp r5, #0x11
+ blt _02246034
+ bl ErrorHandling
+_02246034:
+ ldr r0, _022460EC ; =0x022513EC
+ mov r2, #0x96
+ ldr r4, [r0]
+ add r7, r5, #0
+ add r4, #8
+ mul r7, r2
+ add r5, r4, r7
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MI_CpuCopy8
+ ldr r2, _022460EC ; =0x022513EC
+ ldrb r1, [r5, #1]
+ ldr r3, [r2]
+ ldrb r0, [r4, r7]
+ add r3, r3, r1
+ ldr r1, _022460F4 ; =0x00001363
+ strb r0, [r3, r1]
+ ldrb r3, [r4, r7]
+ cmp r3, #0x10
+ beq _02246068
+ ldrb r0, [r5, #1]
+ ldr r2, [r2]
+ add r1, #0x18
+ add r0, r2, r0
+ strb r3, [r0, r1]
+_02246068:
+ ldrb r0, [r5]
+ add r1, sp, #8
+ bl MOD18_02244EB4
+ ldrb r4, [r5, #1]
+ bl FUN_02031190
+ cmp r4, r0
+ bne _022460D8
+ ldr r1, _022460EC ; =0x022513EC
+ ldr r0, _022460F8 ; =0x000013E6
+ ldr r2, [r1]
+ mov r3, #1
+ strb r3, [r2, r0]
+ ldrb r0, [r5, #1]
+ mov r3, #0
+ add r2, sp, #8
+ str r0, [sp]
+ str r3, [sp, #4]
+ ldr r0, [r1]
+ ldrh r1, [r2]
+ ldrh r2, [r2, #2]
+ ldr r0, [r0]
+ sub r2, r2, #1
+ bl MOD18_0224686C
+ ldr r0, _022460EC ; =0x022513EC
+ ldr r1, [r0]
+ mov r0, #0xa
+ lsl r0, r0, #8
+ str r5, [r1, r0]
+ add r0, r5, #2
+ bl FUN_02026C88
+ ldr r1, _022460EC ; =0x022513EC
+ ldr r2, [r1]
+ ldr r1, _022460FC ; =0x000013DC
+ strh r0, [r2, r1]
+ add r0, r5, #2
+ bl FUN_02026C90
+ ldr r1, _022460EC ; =0x022513EC
+ ldr r2, [r1]
+ ldr r1, _02246100 ; =0x000013DE
+ strh r0, [r2, r1]
+ add r0, r5, #2
+ bl FUN_02026C98
+ ldr r1, _022460EC ; =0x022513EC
+ ldr r2, [r1]
+ ldr r1, _02246104 ; =0x000013E0
+ strb r0, [r2, r1]
+ bl MOD18_0223E7FC
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_022460D8:
+ add r2, sp, #8
+ ldrh r1, [r2]
+ ldrh r2, [r2, #2]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_0204E7CC
+_022460E6:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022460EC: .word 0x022513EC
+_022460F0: .word 0x000012E4
+_022460F4: .word 0x00001363
+_022460F8: .word 0x000013E6
+_022460FC: .word 0x000013DC
+_02246100: .word 0x000013DE
+_02246104: .word 0x000013E0
+ thumb_func_end MOD18_02245FE0
+
+ thumb_func_start MOD18_02246108
+MOD18_02246108: ; 0x02246108
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _02246188 ; =0x022513EC
+ ldr r6, [r0]
+ cmp r6, #0
+ beq _02246186
+ mov r3, #0x96
+ add r7, r5, #0
+ add r6, #8
+ mul r7, r3
+ add r4, r6, r7
+ add r0, r2, #0
+ add r1, r4, #0
+ add r2, r3, #0
+ bl MI_CpuCopy8
+ strb r5, [r6, r7]
+ ldr r0, _02246188 ; =0x022513EC
+ mov r2, #1
+ ldr r1, [r0]
+ ldr r0, _0224618C ; =0x000013E2
+ add r6, r5, #0
+ strb r2, [r1, r0]
+ mov r0, #6
+ mul r6, r0
+ add r0, r4, #2
+ bl FUN_02026C88
+ ldr r1, _02246188 ; =0x022513EC
+ ldr r1, [r1]
+ add r2, r1, r6
+ ldr r1, _02246190 ; =0x000012B4
+ strh r0, [r2, r1]
+ add r0, r4, #2
+ bl FUN_02026C90
+ ldr r1, _02246188 ; =0x022513EC
+ ldr r1, [r1]
+ add r2, r1, r6
+ ldr r1, _02246194 ; =0x000012B6
+ strh r0, [r2, r1]
+ add r0, r4, #2
+ bl FUN_02026C98
+ ldr r1, _02246188 ; =0x022513EC
+ ldr r1, [r1]
+ add r2, r1, r6
+ ldr r1, _02246198 ; =0x000012B8
+ strb r0, [r2, r1]
+ bl MOD18_022461CC
+ ldr r1, _02246188 ; =0x022513EC
+ add r0, r4, #2
+ ldr r2, [r1]
+ ldr r1, _0224619C ; =0x00000A04
+ add r2, r2, r1
+ lsl r1, r5, #7
+ add r1, r2, r1
+ bl MOD18_02245128
+ add r0, r5, #0
+ bl MOD18_0224784C
+_02246186:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02246188: .word 0x022513EC
+_0224618C: .word 0x000013E2
+_02246190: .word 0x000012B4
+_02246194: .word 0x000012B6
+_02246198: .word 0x000012B8
+_0224619C: .word 0x00000A04
+ thumb_func_end MOD18_02246108
+
+ thumb_func_start MOD18_022461A0
+MOD18_022461A0: ; 0x022461A0
+ mov r0, #0x96
+ bx lr
+ thumb_func_end MOD18_022461A0
+
+ thumb_func_start MOD18_022461A4
+MOD18_022461A4: ; 0x022461A4
+ ldr r0, _022461B0 ; =0x022513EC
+ ldr r1, [r0]
+ ldr r0, _022461B4 ; =0x000013E3
+ ldrb r0, [r1, r0]
+ bx lr
+ nop
+_022461B0: .word 0x022513EC
+_022461B4: .word 0x000013E3
+ thumb_func_end MOD18_022461A4
+
+ thumb_func_start MOD18_022461B8
+MOD18_022461B8: ; 0x022461B8
+ ldr r0, _022461C4 ; =0x022513EC
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _022461C8 ; =0x000013E3
+ strb r2, [r1, r0]
+ bx lr
+ .align 2, 0
+_022461C4: .word 0x022513EC
+_022461C8: .word 0x000013E3
+ thumb_func_end MOD18_022461B8
+
+ thumb_func_start MOD18_022461CC
+MOD18_022461CC: ; 0x022461CC
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ ldr r7, _02246238 ; =0x022513EC
+ mov ip, r4
+ add r5, r4, #0
+_022461D6:
+ ldr r0, [r7]
+ ldr r1, _0224623C ; =0x000012B4
+ add r2, r0, r1
+ add r1, r0, r4
+ ldrh r6, [r2, r5]
+ ldr r0, _02246240 ; =0x0000138B
+ add r3, r2, r5
+ strb r6, [r1, r0]
+ ldrh r0, [r2, r5]
+ add r5, r5, #6
+ asr r1, r0, #8
+ mov r0, #0xf
+ add r2, r1, #0
+ and r2, r0
+ ldrh r0, [r3, #2]
+ asr r1, r0, #4
+ mov r0, #0xf0
+ and r0, r1
+ add r2, r2, r0
+ ldr r0, [r7]
+ add r1, r0, r4
+ ldr r0, _02246244 ; =0x0000138C
+ strb r2, [r1, r0]
+ ldr r0, [r7]
+ ldrh r2, [r3, #2]
+ add r1, r0, r4
+ ldr r0, _02246248 ; =0x0000138D
+ strb r2, [r1, r0]
+ ldr r1, [r7]
+ ldrb r0, [r3, #4]
+ add r2, r1, r4
+ ldr r1, _0224624C ; =0x0000138E
+ add r4, r4, #4
+ strb r0, [r2, r1]
+ mov r0, ip
+ add r0, r0, #1
+ mov ip, r0
+ cmp r0, #8
+ blt _022461D6
+ ldr r1, _02246238 ; =0x022513EC
+ mov r0, #0x37
+ ldr r2, [r1]
+ ldr r1, _02246240 ; =0x0000138B
+ add r1, r2, r1
+ mov r2, #0x20
+ bl FUN_02031000
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02246238: .word 0x022513EC
+_0224623C: .word 0x000012B4
+_02246240: .word 0x0000138B
+_02246244: .word 0x0000138C
+_02246248: .word 0x0000138D
+_0224624C: .word 0x0000138E
+ thumb_func_end MOD18_022461CC
+
+ thumb_func_start MOD18_02246250
+MOD18_02246250: ; 0x02246250
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r0, _022462F8 ; =0x022513EC
+ str r2, [sp]
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022462F2
+ mov r4, #0
+_02246260:
+ add r0, r4, #0
+ bl MOD18_02246430
+ add r4, r4, #1
+ cmp r4, #8
+ blt _02246260
+ mov r5, #0
+ add r7, r5, #0
+ add r6, r5, #0
+ add r4, sp, #4
+_02246274:
+ ldr r0, _022462F8 ; =0x022513EC
+ ldr r1, [r0]
+ ldr r0, _022462FC ; =0x00001284
+ add r0, r1, r0
+ mov ip, r0
+ ldr r0, [sp]
+ add r2, r0, r5
+ ldrb r0, [r0, r5]
+ add r5, r5, #4
+ strh r0, [r4]
+ ldrb r0, [r2, #1]
+ ldrh r3, [r4]
+ lsl r1, r0, #8
+ mov r0, #0xf
+ lsl r0, r0, #8
+ and r0, r1
+ add r0, r3, r0
+ strh r0, [r4]
+ ldrb r0, [r2, #1]
+ lsl r1, r0, #4
+ mov r0, #0xf
+ lsl r0, r0, #8
+ and r0, r1
+ strh r0, [r4, #2]
+ ldrh r1, [r4, #2]
+ ldrb r0, [r2, #2]
+ add r0, r1, r0
+ strh r0, [r4, #2]
+ ldrb r0, [r2, #3]
+ strb r0, [r4, #4]
+ ldrh r1, [r4]
+ ldr r0, _02246300 ; =0x00000FFF
+ cmp r1, r0
+ beq _022462E0
+ add r0, sp, #4
+ ldrh r1, [r0, #2]
+ ldr r0, _02246300 ; =0x00000FFF
+ cmp r1, r0
+ beq _022462E0
+ mov r1, ip
+ add r0, sp, #4
+ add r1, r1, r6
+ mov r2, #6
+ bl MI_CpuCopy8
+ add r0, sp, #4
+ add r1, sp, #4
+ add r2, sp, #4
+ ldrh r0, [r0]
+ ldrh r1, [r1, #2]
+ ldrb r2, [r2, #4]
+ add r3, r7, #0
+ bl MOD18_0224630C
+_022462E0:
+ add r7, r7, #1
+ add r6, r6, #6
+ cmp r7, #8
+ blt _02246274
+ ldr r0, _022462F8 ; =0x022513EC
+ mov r2, #1
+ ldr r1, [r0]
+ ldr r0, _02246304 ; =0x000013E3
+ strb r2, [r1, r0]
+_022462F2:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022462F8: .word 0x022513EC
+_022462FC: .word 0x00001284
+_02246300: .word 0x00000FFF
+_02246304: .word 0x000013E3
+ thumb_func_end MOD18_02246250
+
+ thumb_func_start MOD18_02246308
+MOD18_02246308: ; 0x02246308
+ mov r0, #0x20
+ bx lr
+ thumb_func_end MOD18_02246308
+
+ thumb_func_start MOD18_0224630C
+MOD18_0224630C: ; 0x0224630C
+ push {r3, r4, r5, r6}
+ ldr r5, _02246330 ; =0x022513EC
+ ldr r4, [r5]
+ add r6, r4, r3
+ ldr r4, _02246334 ; =0x0000133A
+ strb r2, [r6, r4]
+ lsl r2, r3, #1
+ ldr r3, [r5]
+ add r6, r3, r2
+ add r3, r4, #0
+ sub r3, #0x44
+ strh r0, [r6, r3]
+ ldr r0, [r5]
+ sub r4, #0x22
+ add r0, r0, r2
+ strh r1, [r0, r4]
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+_02246330: .word 0x022513EC
+_02246334: .word 0x0000133A
+ thumb_func_end MOD18_0224630C
+
+ thumb_func_start MOD18_02246338
+MOD18_02246338: ; 0x02246338
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ ldr r0, _02246414 ; =0x022513EC
+ ldr r2, [r0]
+ ldr r0, _02246418 ; =0x000013E4
+ ldrb r1, [r2, r0]
+ cmp r1, #0
+ bne _0224640E
+ add r0, r0, #1
+ ldrb r0, [r2, r0]
+ cmp r0, #0
+ beq _0224640E
+ ldr r0, [r2]
+ ldr r0, [r0, #0x38]
+ cmp r0, #0
+ beq _0224640E
+ bl FUN_02055320
+ add r4, r0, #0
+ ldr r0, _02246414 ; =0x022513EC
+ ldr r0, [r0]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ bne _0224640E
+ mov r5, #0
+ add r4, r5, #0
+_0224637A:
+ cmp r5, #8
+ bge _02246394
+ add r0, r5, #0
+ bl FUN_0202DFA4
+ cmp r0, #0
+ bne _02246394
+ add r0, r5, #0
+ bl MOD18_022453A8
+ add r0, r5, #0
+ bl MOD18_022475F8
+_02246394:
+ ldr r0, _02246414 ; =0x022513EC
+ ldr r1, [r0]
+ ldr r0, _0224641C ; =0x0000133A
+ add r2, r1, r5
+ ldrb r6, [r2, r0]
+ cmp r6, #0xff
+ beq _02246406
+ ldr r3, _02246420 ; =0x000012F6
+ add r0, r1, r4
+ ldrh r3, [r0, r3]
+ str r3, [sp, #8]
+ ldr r3, _02246424 ; =0x00001318
+ ldrh r7, [r0, r3]
+ add r0, r3, #0
+ sub r0, #0x33
+ ldrb r0, [r2, r0]
+ cmp r0, #0xff
+ beq _022463C2
+ ldr r1, [r1]
+ add r1, #0xa0
+ ldr r1, [r1]
+ bl MOD05_021E7C80
+_022463C2:
+ ldr r0, [sp, #8]
+ ldr r2, _02246428 ; =0x000001AD
+ lsl r1, r0, #0x10
+ mov r0, #2
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ mov r0, #2
+ lsl r1, r7, #0x10
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x14]
+ ldr r0, _02246414 ; =0x022513EC
+ add r2, r6, r2
+ ldr r0, [r0]
+ add r3, sp, #0xc
+ ldr r1, [r0]
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r1, #0x4c]
+ str r0, [sp, #4]
+ add r0, r1, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ ldr r1, [r1, #0x2c]
+ bl MOD05_021E7FBC
+ ldr r1, _02246414 ; =0x022513EC
+ ldr r1, [r1]
+ add r2, r1, r5
+ ldr r1, _0224642C ; =0x000012E5
+ strb r0, [r2, r1]
+_02246406:
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r5, #0x11
+ blt _0224637A
+_0224640E:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02246414: .word 0x022513EC
+_02246418: .word 0x000013E4
+_0224641C: .word 0x0000133A
+_02246420: .word 0x000012F6
+_02246424: .word 0x00001318
+_02246428: .word 0x000001AD
+_0224642C: .word 0x000012E5
+ thumb_func_end MOD18_02246338
+
+ thumb_func_start MOD18_02246430
+MOD18_02246430: ; 0x02246430
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02246464 ; =0x022513EC
+ ldr r2, [r0]
+ ldr r0, _02246468 ; =0x000012E5
+ add r1, r2, r4
+ ldrb r0, [r1, r0]
+ cmp r0, #0xff
+ beq _02246460
+ ldr r1, [r2]
+ add r1, #0xa0
+ ldr r1, [r1]
+ bl MOD05_021E7C80
+ ldr r1, _02246464 ; =0x022513EC
+ mov r3, #0xff
+ ldr r0, [r1]
+ add r2, r0, r4
+ ldr r0, _02246468 ; =0x000012E5
+ strb r3, [r2, r0]
+ ldr r1, [r1]
+ add r0, #0x55
+ add r1, r1, r4
+ strb r3, [r1, r0]
+_02246460:
+ pop {r4, pc}
+ nop
+_02246464: .word 0x022513EC
+_02246468: .word 0x000012E5
+ thumb_func_end MOD18_02246430
+
+ thumb_func_start MOD18_0224646C
+MOD18_0224646C: ; 0x0224646C
+ push {r4, lr}
+ ldr r0, _02246488 ; =0x022513EC
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02246484
+ mov r4, #0
+_02246478:
+ add r0, r4, #0
+ bl MOD18_02246430
+ add r4, r4, #1
+ cmp r4, #0x11
+ blt _02246478
+_02246484:
+ pop {r4, pc}
+ nop
+_02246488: .word 0x022513EC
+ thumb_func_end MOD18_0224646C
+
+ thumb_func_start MOD18_0224648C
+MOD18_0224648C: ; 0x0224648C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_02046528
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _022464AA
+ cmp r0, #1
+ beq _022464B8
+ b _022464CA
+_022464AA:
+ add r0, r5, #0
+ bl FUN_02037394
+ ldr r0, [r4, #0x10]
+ add r0, r0, #1
+ str r0, [r4, #0x10]
+ b _022464CA
+_022464B8:
+ add r0, r5, #0
+ bl FUN_0203739C
+ cmp r0, #0
+ bne _022464CA
+ mov r0, #0
+ str r0, [r4, #0x10]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022464CA:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224648C
+
+ thumb_func_start MOD18_022464D0
+MOD18_022464D0: ; 0x022464D0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_02046528
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _022464EE
+ cmp r0, #1
+ beq _022464FC
+ b _0224650E
+_022464EE:
+ add r0, r5, #0
+ bl LoadOverlay_MODULE_05
+ ldr r0, [r4, #0x10]
+ add r0, r0, #1
+ str r0, [r4, #0x10]
+ b _0224650E
+_022464FC:
+ add r0, r5, #0
+ bl FUN_020464A4
+ cmp r0, #0
+ beq _0224650E
+ mov r0, #0
+ str r0, [r4, #0x10]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224650E:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD18_022464D0
+
+ thumb_func_start MOD18_02246514
+MOD18_02246514: ; 0x02246514
+ push {r4, r5, r6, lr}
+ sub sp, #0x20
+ add r6, r0, #0
+ bl FUN_02046528
+ add r5, r0, #0
+ add r0, r6, #0
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0xd
+ bhi _02246606
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0224653A: ; jump table
+ .short _02246556 - _0224653A - 2 ; case 0
+ .short _02246580 - _0224653A - 2 ; case 1
+ .short _022465B0 - _0224653A - 2 ; case 2
+ .short _022465C6 - _0224653A - 2 ; case 3
+ .short _022465D8 - _0224653A - 2 ; case 4
+ .short _022465FC - _0224653A - 2 ; case 5
+ .short _02246610 - _0224653A - 2 ; case 6
+ .short _0224663A - _0224653A - 2 ; case 7
+ .short _02246802 - _0224653A - 2 ; case 8
+ .short _022466DA - _0224653A - 2 ; case 9
+ .short _022466F6 - _0224653A - 2 ; case 10
+ .short _0224672E - _0224653A - 2 ; case 11
+ .short _02246762 - _0224653A - 2 ; case 12
+ .short _0224678C - _0224653A - 2 ; case 13
+_02246556:
+ mov r0, #0
+ bl MOD18_02247970
+ bl MOD18_02247984
+ bl FUN_02030F20
+ add r1, r4, #0
+ add r1, #0x28
+ strb r0, [r1]
+ bl FUN_02030FC8
+ bl MOD18_0223CC80
+ bl FUN_0204FD38
+ cmp r0, #0
+ beq _02246606
+ mov r0, #1
+ str r0, [r4, #0xc]
+ b _02246848
+_02246580:
+ bl FUN_0200E31C
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #2
+ mov r1, #0x10
+ mov r2, #0x12
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldr r0, [r5, #0x68]
+ bl MOD18_0224484C
+ ldr r0, _02246850 ; =0x00000603
+ bl FUN_020054C8
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02246848
+_022465B0:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _02246606
+ ldr r0, [r5, #0x68]
+ cmp r0, #0
+ bne _02246606
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02246848
+_022465C6:
+ add r0, r6, #0
+ bl MOD18_0224648C
+ cmp r0, #0
+ beq _02246606
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02246848
+_022465D8:
+ ldr r0, [r4, #0x14]
+ add r1, sp, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x1c]
+ str r0, [sp, #0x14]
+ ldr r0, [r4, #0x20]
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #0x24]
+ str r0, [sp, #0x1c]
+ add r0, r6, #0
+ bl FUN_02049CB0
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02246848
+_022465FC:
+ add r0, r6, #0
+ bl MOD18_022464D0
+ cmp r0, #0
+ bne _02246608
+_02246606:
+ b _02246848
+_02246608:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02246848
+_02246610:
+ add r0, r5, #0
+ bl MOD18_02244824
+ str r0, [r5, #0x68]
+ bl FUN_0200E31C
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #4
+ str r1, [sp, #8]
+ mov r1, #0x11
+ mov r2, #0x13
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ b _02246848
+_0224663A:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0224670E
+ bl FUN_0202EDD8
+ cmp r0, #0
+ beq _02246660
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x20]
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ bne _02246660
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x2e
+ strb r1, [r0]
+ b _02246668
+_02246660:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x2e
+ strb r1, [r0]
+_02246668:
+ bl FUN_02030FA8
+ bl FUN_0204F7E4
+ mov r3, #0x80
+ str r3, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #0x32
+ mov r1, #0x34
+ mov r2, #0
+ add r3, #0xc0
+ bl FUN_02006930
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, [r5, #8]
+ ldr r2, _02246854 ; =0x000003D9
+ mov r1, #3
+ mov r3, #0xb
+ bl FUN_0200CB00
+ add r0, r4, #0
+ add r0, #0x2d
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _022466BA
+ bl FUN_0204F7D4
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x33
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ mov r0, #8
+ str r0, [r4, #0xc]
+ b _02246848
+_022466BA:
+ ldr r0, _02246858 ; =0x022513EC
+ ldr r1, [r0]
+ ldr r0, _0224685C ; =0x000013E6
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _022466CC
+ mov r0, #0xd
+ str r0, [r4, #0xc]
+ b _02246848
+_022466CC:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x29
+ strb r1, [r0]
+ mov r0, #9
+ str r0, [r4, #0xc]
+ b _02246848
+_022466DA:
+ add r0, r4, #0
+ add r0, #0x29
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x29
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x29
+ strb r1, [r0]
+ mov r0, #0xa
+ str r0, [r4, #0xc]
+ b _02246848
+_022466F6:
+ add r0, r4, #0
+ add r0, #0x29
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x29
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x29
+ ldrb r0, [r0]
+ cmp r0, #0xa
+ bhi _02246710
+_0224670E:
+ b _02246848
+_02246710:
+ bl FUN_0202EDD8
+ cmp r0, #0
+ beq _02246722
+ add r0, r4, #0
+ add r0, #0x2e
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02246728
+_02246722:
+ mov r0, #0xd
+ str r0, [r4, #0xc]
+ b _02246848
+_02246728:
+ mov r0, #0xb
+ str r0, [r4, #0xc]
+ b _02246848
+_0224672E:
+ bl FUN_0204FB14
+ mov r0, #1
+ mov r1, #0x24
+ bl FUN_0205AFDC
+ add r1, r0, #0
+ ldr r0, [r5, #0x38]
+ bl FUN_02057260
+ mov r0, #1
+ bl FUN_0204F6DC
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x44
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, _02246860 ; =0x00000604
+ bl FUN_020054C8
+ mov r0, #0xc
+ str r0, [r4, #0xc]
+ b _02246848
+_02246762:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02246848
+ ldr r0, _02246864 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _02246848
+ mov r0, #0xd
+ str r0, [r4, #0xc]
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ mov r0, #0
+ bl FUN_0204F6DC
+ b _02246848
+_0224678C:
+ bl FUN_0202EDD8
+ cmp r0, #0
+ beq _022467A6
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x20]
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ bne _022467A6
+ bl FUN_0204FD24
+ b _022467AA
+_022467A6:
+ bl FUN_0204FDE4
+_022467AA:
+ bl FUN_0204F7FC
+ add r0, r4, #0
+ bl FUN_02016A18
+ bl FUN_0202EDD8
+ cmp r0, #0
+ beq _022467CE
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x20]
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ beq _022467CE
+ bl MOD18_0223E444
+ b _022467D2
+_022467CE:
+ bl MOD18_0223E458
+_022467D2:
+ ldr r0, _02246858 ; =0x022513EC
+ ldr r2, _02246868 ; =0x000012E4
+ ldr r0, [r0]
+ ldrb r1, [r0, r2]
+ cmp r1, #4
+ bne _022467EC
+ ldr r1, _0224685C ; =0x000013E6
+ ldrb r1, [r0, r1]
+ cmp r1, #0
+ beq _022467EC
+ mov r1, #6
+ strb r1, [r0, r2]
+ b _022467F2
+_022467EC:
+ ldr r1, _02246868 ; =0x000012E4
+ mov r2, #0
+ strb r2, [r0, r1]
+_022467F2:
+ bl MOD18_022479A0
+ mov r0, #1
+ bl MOD18_02247970
+ add sp, #0x20
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02246802:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224682A
+ ldr r0, _02246864 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _0224682A
+ mov r0, #0xd
+ str r0, [r4, #0xc]
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add sp, #0x20
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0224682A:
+ bl FUN_02030F20
+ cmp r0, #1
+ ble _02246848
+ add r0, r4, #0
+ add r0, #0x28
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02246848
+ mov r0, #0xd
+ str r0, [r4, #0xc]
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+_02246848:
+ mov r0, #0
+ add sp, #0x20
+ pop {r4, r5, r6, pc}
+ nop
+_02246850: .word 0x00000603
+_02246854: .word 0x000003D9
+_02246858: .word 0x022513EC
+_0224685C: .word 0x000013E6
+_02246860: .word 0x00000604
+_02246864: .word 0x021C48B8
+_02246868: .word 0x000012E4
+ thumb_func_end MOD18_02246514
+
+ thumb_func_start MOD18_0224686C
+MOD18_0224686C: ; 0x0224686C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ ldr r5, [sp, #0x18]
+ add r4, r0, #0
+ str r5, [sp]
+ str r5, [sp, #4]
+ bl MOD18_02245A50
+ add r2, r0, #0
+ beq _0224688E
+ ldr r1, [sp, #0x1c]
+ add r0, #0x2d
+ strb r1, [r0]
+ ldr r1, _02246894 ; =MOD18_02246514
+ add r0, r4, #0
+ bl FUN_020463CC
+_0224688E:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_02246894: .word MOD18_02246514
+ thumb_func_end MOD18_0224686C
+
+ thumb_func_start MOD18_02246898
+MOD18_02246898: ; 0x02246898
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ str r0, [sp, #4]
+ ldr r0, [r4, #0xc]
+ mov r7, #0
+ ldr r5, [r4]
+ cmp r0, #0xa
+ bhi _0224692C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022468B6: ; jump table
+ .short _022468CC - _022468B6 - 2 ; case 0
+ .short _02246914 - _022468B6 - 2 ; case 1
+ .short _02246934 - _022468B6 - 2 ; case 2
+ .short _02246980 - _022468B6 - 2 ; case 3
+ .short _022469C6 - _022468B6 - 2 ; case 4
+ .short _022469E0 - _022468B6 - 2 ; case 5
+ .short _02246A04 - _022468B6 - 2 ; case 6
+ .short _02246A80 - _022468B6 - 2 ; case 7
+ .short _02246A80 - _022468B6 - 2 ; case 8
+ .short _02246A28 - _022468B6 - 2 ; case 9
+ .short _02246A40 - _022468B6 - 2 ; case 10
+_022468CC:
+ ldr r0, [r5, #0xc]
+ bl FUN_02026CA8
+ bl FUN_02026CA0
+ strb r0, [r4, #0x12]
+ bl FUN_0204F7E4
+ bl MOD18_0223D638
+ mov r1, #0x21
+ bl MOD18_0224DDE8
+ ldr r0, _02246AD0 ; =0x0000061E
+ bl FUN_020054C8
+ ldr r0, [r5, #0x38]
+ bl FUN_020553A0
+ add r1, r7, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD05_021E5E8C
+ bl MOD18_0223D638
+ add r2, r7, #0
+ mov r1, #0x21
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ mov r0, #1
+ str r0, [r4, #0xc]
+ add r0, r7, #0
+ strb r0, [r4, #0x11]
+ b _02246A80
+_02246914:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224692C
+ ldrb r0, [r4, #0x11]
+ add r0, r0, #1
+ strb r0, [r4, #0x11]
+ ldrb r0, [r4, #0x11]
+ cmp r0, #0x1e
+ bhi _0224692E
+_0224692C:
+ b _02246A80
+_0224692E:
+ mov r0, #2
+ str r0, [r4, #0xc]
+ b _02246A80
+_02246934:
+ bl FUN_02031190
+ bl FUN_0204E4D4
+ add r6, r0, #0
+ bl FUN_02031190
+ bl FUN_0204E50C
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x38]
+ bl FUN_020552F8
+ bl FUN_0204F610
+ str r0, [sp, #0xc]
+ bl MOD18_0223D638
+ add r2, r7, #0
+ mov r1, #0x22
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #0xc]
+ add r0, r6, #0
+ mov r3, #0x10
+ bl MOD18_0224630C
+ ldr r3, [sp, #8]
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD05_021E5B30
+ mov r0, #3
+ str r0, [r4, #0xc]
+ b _02246A80
+_02246980:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02246A80
+ bl FUN_02031190
+ add r1, r7, #0
+ bl MOD18_02245AA8
+ cmp r0, #0
+ beq _022469A2
+ mov r0, #4
+ mov r6, #0x39
+ str r0, [r4, #0xc]
+ b _022469B6
+_022469A2:
+ ldrb r0, [r4, #0x12]
+ cmp r0, #0
+ beq _022469B0
+ mov r0, #5
+ mov r6, #0x24
+ str r0, [r4, #0xc]
+ b _022469B6
+_022469B0:
+ mov r0, #5
+ mov r6, #0x23
+ str r0, [r4, #0xc]
+_022469B6:
+ bl MOD18_0223D638
+ mov r2, #0
+ add r1, r6, #0
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ b _02246A80
+_022469C6:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02246A80
+ ldr r0, _02246AD4 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r1, r0
+ beq _02246A80
+ add r7, r0, #0
+ b _02246A80
+_022469E0:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02246A80
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r5, #8]
+ ldr r1, _02246AD8 ; =0x022504F8
+ ldr r2, _02246ADC ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r4, #8]
+ mov r0, #6
+ str r0, [r4, #0xc]
+ b _02246A80
+_02246A04:
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl FUN_020021AC
+ cmp r0, #0
+ bne _02246A1A
+ mov r0, #9
+ str r0, [r4, #0xc]
+ add r0, r7, #0
+ str r0, [r4, #8]
+ b _02246A80
+_02246A1A:
+ sub r1, r7, #1
+ cmp r0, r1
+ beq _02246A80
+ mov r0, #0
+ mov r7, #1
+ str r0, [r4, #8]
+ b _02246A80
+_02246A28:
+ mov r0, #0x21
+ bl MOD18_02249AD8
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ bl FUN_0204FCF4
+ mov r0, #0xa
+ str r0, [r4, #0xc]
+ b _02246A80
+_02246A40:
+ bl FUN_0202EDD8
+ cmp r0, #0
+ beq _02246A80
+ bl FUN_02031190
+ cmp r0, #0
+ bne _02246A80
+ mov r1, #2
+ add r0, sp, #0x10
+ strb r1, [r0]
+ ldrb r1, [r4, #0x12]
+ cmp r1, #0
+ beq _02246A60
+ mov r1, #3
+ strb r1, [r0]
+_02246A60:
+ bl MOD18_02246FB4
+ mov r0, #0x56
+ add r1, sp, #0x10
+ bl FUN_020311D0
+ ldr r0, [sp, #4]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ bl MOD18_0223E6A0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_02246A80:
+ cmp r7, #0
+ beq _02246ACA
+ bl MOD18_0223D638
+ ldr r3, _02246AE0 ; =MOD18_022453E0
+ mov r1, #0x38
+ mov r2, #1
+ bl MOD18_0224DCB8
+ mov r0, #0x10
+ bl MOD18_02246430
+ bl FUN_02031190
+ bl FUN_0204E4D4
+ add r6, r0, #0
+ bl FUN_02031190
+ bl FUN_0204E50C
+ add r3, r0, #0
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0
+ bl MOD05_021E5B30
+ ldr r0, [sp, #4]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ bl MOD18_0223E6A0
+ bl MOD18_022479A0
+_02246ACA:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02246AD0: .word 0x0000061E
+_02246AD4: .word 0x021C48B8
+_02246AD8: .word 0x022504F8
+_02246ADC: .word 0x000003D9
+_02246AE0: .word MOD18_022453E0
+ thumb_func_end MOD18_02246898
+
+ thumb_func_start MOD18_02246AE4
+MOD18_02246AE4: ; 0x02246AE4
+ push {r3, lr}
+ mov r1, #0
+ add r0, sp, #0
+ strb r1, [r0]
+ mov r0, #0x56
+ add r1, sp, #0
+ bl FUN_020311D0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02246AE4
+
+ thumb_func_start MOD18_02246AF8
+MOD18_02246AF8: ; 0x02246AF8
+ mov r0, #2
+ bx lr
+ thumb_func_end MOD18_02246AF8
+
+ thumb_func_start MOD18_02246AFC
+MOD18_02246AFC: ; 0x02246AFC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r0, #0
+ add r6, r2, #0
+ bl FUN_0204E62C
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FUN_0204E664
+ add r5, r0, #0
+ add r0, r7, #0
+ bl FUN_0204E6CC
+ str r0, [sp, #4]
+ add r0, r7, #0
+ bl FUN_0204E544
+ add r0, r7, #0
+ bl FUN_0204E598
+ sub r0, r5, r0
+ beq _02246B38
+ add r0, r4, #1
+ str r0, [sp, #0x10]
+ sub r0, r4, #1
+ str r0, [sp, #8]
+ str r5, [sp, #0xc]
+ str r5, [sp]
+ b _02246B44
+_02246B38:
+ add r0, r5, #1
+ str r0, [sp, #0xc]
+ sub r0, r5, #1
+ str r0, [sp]
+ str r4, [sp, #0x10]
+ str r4, [sp, #8]
+_02246B44:
+ add r0, sp, #0x14
+ strb r7, [r0]
+ ldrb r1, [r6]
+ cmp r1, #0
+ bne _02246B52
+ mov r1, #0
+ b _02246B54
+_02246B52:
+ mov r1, #5
+_02246B54:
+ strb r1, [r0, #1]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD18_022453E8
+ ldrb r1, [r6]
+ cmp r1, #0
+ bne _02246B68
+ cmp r0, #0xff
+ bne _02246BFE
+_02246B68:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ beq _02246B7C
+ mov r1, #6
+ add r0, sp, #0x14
+ strb r1, [r0, #1]
+ b _02246BFE
+_02246B7C:
+ ldr r0, _02246C0C ; =0x022513EC
+ add r1, r4, #0
+ ldr r0, [r0]
+ add r2, r5, #0
+ ldr r0, [r0]
+ bl FUN_0204A6B4
+ cmp r0, #0
+ beq _02246BFE
+ ldr r0, _02246C0C ; =0x022513EC
+ ldr r1, [sp, #0x10]
+ ldr r0, [r0]
+ ldr r2, [sp, #0xc]
+ ldr r0, [r0]
+ bl FUN_0204A6B4
+ cmp r0, #0
+ beq _02246BFE
+ ldr r0, _02246C0C ; =0x022513EC
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ ldr r2, [sp]
+ ldr r0, [r0]
+ bl FUN_0204A6B4
+ cmp r0, #0
+ beq _02246BFE
+ ldrb r0, [r6]
+ cmp r0, #0
+ bne _02246BC0
+ mov r1, #1
+ add r0, sp, #0x14
+ strb r1, [r0, #1]
+ b _02246BFE
+_02246BC0:
+ ldr r2, [sp, #4]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r3, #0x10
+ bl MOD18_02245F70
+ mov r0, #0x10
+ add r1, r7, #0
+ bl MOD18_02245528
+ cmp r0, #0
+ beq _02246BFE
+ ldrb r0, [r6]
+ cmp r0, #1
+ beq _02246BE8
+ cmp r0, #2
+ beq _02246BF8
+ cmp r0, #3
+ beq _02246BF0
+ b _02246BFE
+_02246BE8:
+ mov r1, #2
+ add r0, sp, #0x14
+ strb r1, [r0, #1]
+ b _02246BFE
+_02246BF0:
+ mov r1, #3
+ add r0, sp, #0x14
+ strb r1, [r0, #1]
+ b _02246BFE
+_02246BF8:
+ mov r1, #4
+ add r0, sp, #0x14
+ strb r1, [r0, #1]
+_02246BFE:
+ mov r0, #0x57
+ add r1, sp, #0x14
+ bl FUN_02030C4C
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02246C0C: .word 0x022513EC
+ thumb_func_end MOD18_02246AFC
+
+ thumb_func_start MOD18_02246C10
+MOD18_02246C10: ; 0x02246C10
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #0x10
+ bl MOD18_02246430
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _02246C28
+ mov r1, #4
+ bl FUN_020021EC
+_02246C28:
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ bl MOD18_0223E6A0
+ bl FUN_0204F7FC
+ bl MOD18_022479A0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02246C10
+
+ thumb_func_start MOD18_02246C44
+MOD18_02246C44: ; 0x02246C44
+ push {r4, lr}
+ bl MOD18_02247984
+ mov r0, #4
+ mov r1, #0x14
+ bl FUN_020169D8
+ mov r1, #0
+ mov r2, #0x14
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ str r0, [r4, #0xc]
+ bl FUN_02031190
+ strb r0, [r4, #0x10]
+ ldr r0, _02246C88 ; =0x022513EC
+ add r1, r4, #0
+ ldr r0, [r0]
+ mov r2, #0x64
+ ldr r0, [r0]
+ str r0, [r4]
+ ldr r0, _02246C8C ; =MOD18_02246898
+ bl FUN_0200CA44
+ str r0, [r4, #4]
+ ldr r1, [r4, #4]
+ ldr r2, _02246C90 ; =MOD18_02246C10
+ add r0, r4, #0
+ bl MOD18_0223E688
+ pop {r4, pc}
+ nop
+_02246C88: .word 0x022513EC
+_02246C8C: .word MOD18_02246898
+_02246C90: .word MOD18_02246C10
+ thumb_func_end MOD18_02246C44
+
+ thumb_func_start MOD18_02246C94
+MOD18_02246C94: ; 0x02246C94
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r0, _02246D94 ; =0x022513EC
+ add r5, r2, #0
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_020377AC
+ bl FUN_02026CB4
+ ldrb r4, [r5]
+ add r7, r0, #0
+ bl FUN_02031190
+ cmp r4, r0
+ bne _02246D92
+ ldrb r0, [r5, #1]
+ cmp r0, #0
+ bne _02246CD0
+ bl FUN_0204F7E4
+ bl MOD18_0223D638
+ ldr r3, _02246D98 ; =MOD18_022453E0
+ mov r1, #0x36
+ mov r2, #1
+ bl MOD18_0224DCB8
+ bl MOD18_022479A0
+ pop {r3, r4, r5, r6, r7, pc}
+_02246CD0:
+ cmp r0, #1
+ bne _02246CDA
+ bl MOD18_02246C44
+ pop {r3, r4, r5, r6, r7, pc}
+_02246CDA:
+ cmp r0, #6
+ bne _02246CF6
+ bl FUN_0204F7E4
+ bl MOD18_0223D638
+ ldr r3, _02246D98 ; =MOD18_022453E0
+ mov r1, #0x4a
+ mov r2, #1
+ bl MOD18_0224DCB8
+ bl MOD18_022479A0
+ pop {r3, r4, r5, r6, r7, pc}
+_02246CF6:
+ cmp r0, #5
+ bne _02246D16
+ bl FUN_0204F7E4
+ bl MOD18_0223D638
+ ldr r3, _02246D98 ; =MOD18_022453E0
+ mov r1, #0x58
+ mov r2, #1
+ bl MOD18_0224DCB8
+ bl FUN_0204FD24
+ bl MOD18_022479A0
+ pop {r3, r4, r5, r6, r7, pc}
+_02246D16:
+ add r0, #0xfe
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #2
+ bhi _02246D92
+ add r0, r4, #0
+ bl FUN_0204E4D4
+ add r4, r0, #0
+ ldrb r0, [r5]
+ bl FUN_0204E50C
+ add r6, r0, #0
+ ldrb r0, [r5]
+ bl FUN_0204E69C
+ str r0, [sp]
+ ldrb r3, [r5]
+ ldr r2, [sp]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD18_02245F70
+ ldr r2, [sp]
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r3, #0x10
+ bl MOD18_02245F70
+ ldrb r0, [r5, #1]
+ cmp r0, #3
+ bne _02246D5C
+ add r0, r7, #0
+ bl FUN_02026C38
+_02246D5C:
+ ldrb r0, [r5, #1]
+ add r0, #0xfd
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #1
+ bhi _02246D92
+ mov r0, #0xb
+ bl FUN_0202916C
+ add r1, r0, #0
+ ldr r0, _02246D94 ; =0x022513EC
+ mov r2, #1
+ ldr r0, [r0]
+ ldr r0, [r0]
+ add r0, #0x98
+ ldr r0, [r0]
+ bl FUN_02028AD4
+ ldr r0, _02246D94 ; =0x022513EC
+ ldr r0, [r0]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x23
+ bl FUN_0202A170
+_02246D92:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02246D94: .word 0x022513EC
+_02246D98: .word MOD18_022453E0
+ thumb_func_end MOD18_02246C94
+
+ thumb_func_start MOD18_02246D9C
+MOD18_02246D9C: ; 0x02246D9C
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, _02246E98 ; =0x022513EC
+ add r6, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _02246DAC
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02246DAC:
+ mov r5, #0
+_02246DAE:
+ ldr r0, [r4]
+ ldr r1, _02246E9C ; =0x0000137B
+ add r0, r0, r5
+ ldrb r7, [r0, r1]
+ cmp r7, #0xff
+ beq _02246DE4
+ mov r2, #0xff
+ strb r2, [r0, r1]
+ cmp r5, r7
+ beq _02246DE4
+ add r0, r5, #0
+ bl FUN_0202DFA4
+ str r0, [sp]
+ add r0, r7, #0
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ ldr r0, [sp]
+ mov r2, #0x68
+ add r3, r6, #0
+ bl MOD18_0223D6D8
+ cmp r0, #0
+ beq _02246DE4
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02246DE4:
+ ldr r0, [r4]
+ add r1, r0, r5
+ ldr r0, _02246EA0 ; =0x0000134B
+ ldrb r0, [r1, r0]
+ cmp r0, #0xff
+ beq _02246E22
+ add r0, r5, #0
+ bl FUN_0202DFA4
+ add r7, r0, #0
+ ldr r0, [r4]
+ add r1, r0, r5
+ ldr r0, _02246EA0 ; =0x0000134B
+ ldrb r0, [r1, r0]
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ ldr r0, [r4]
+ mov r2, #0xff
+ add r3, r0, r5
+ ldr r0, _02246EA0 ; =0x0000134B
+ strb r2, [r3, r0]
+ add r0, r7, #0
+ mov r2, #0x6c
+ add r3, r6, #0
+ bl MOD18_0223D6D8
+ cmp r0, #0
+ beq _02246E22
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02246E22:
+ ldr r0, [r4]
+ add r1, r0, r5
+ ldr r0, _02246EA4 ; =0x0000135B
+ ldrb r0, [r1, r0]
+ cmp r0, #0xff
+ beq _02246E52
+ add r0, r5, #0
+ bl FUN_0202DFA4
+ ldr r2, _02246E98 ; =0x022513EC
+ mov r1, #0xff
+ ldr r2, [r2]
+ add r3, r2, r5
+ ldr r2, _02246EA4 ; =0x0000135B
+ strb r1, [r3, r2]
+ mov r1, #0
+ mov r2, #0x6d
+ add r3, r6, #0
+ bl MOD18_0223D744
+ cmp r0, #0
+ beq _02246E92
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02246E52:
+ ldr r0, _02246EA8 ; =0x00001353
+ ldrb r0, [r1, r0]
+ cmp r0, #0xff
+ beq _02246E8C
+ add r0, r5, #0
+ bl FUN_0202DFA4
+ add r7, r0, #0
+ ldr r0, [r4]
+ add r1, r0, r5
+ ldr r0, _02246EA8 ; =0x00001353
+ ldrb r0, [r1, r0]
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ ldr r0, [r4]
+ mov r2, #0xff
+ add r3, r0, r5
+ ldr r0, _02246EA8 ; =0x00001353
+ strb r2, [r3, r0]
+ add r0, r7, #0
+ mov r2, #0x6e
+ add r3, r6, #0
+ bl MOD18_0223D6D8
+ cmp r0, #0
+ beq _02246E8C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02246E8C:
+ add r5, r5, #1
+ cmp r5, #8
+ blt _02246DAE
+_02246E92:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02246E98: .word 0x022513EC
+_02246E9C: .word 0x0000137B
+_02246EA0: .word 0x0000134B
+_02246EA4: .word 0x0000135B
+_02246EA8: .word 0x00001353
+ thumb_func_end MOD18_02246D9C
+
+ thumb_func_start MOD18_02246EAC
+MOD18_02246EAC: ; 0x02246EAC
+ ldr r0, _02246EC8 ; =0x022513EC
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _02246EC2
+ mov r0, #0xa
+ lsl r0, r0, #8
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _02246EC2
+ add r0, r0, #2
+ bx lr
+_02246EC2:
+ mov r0, #0
+ bx lr
+ nop
+_02246EC8: .word 0x022513EC
+ thumb_func_end MOD18_02246EAC
+
+ thumb_func_start MOD18_02246ECC
+MOD18_02246ECC: ; 0x02246ECC
+ ldr r0, _02246EEC ; =0x022513EC
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _02246EE6
+ mov r0, #0xa
+ lsl r0, r0, #8
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _02246EE6
+ ldrb r1, [r0]
+ ldr r0, _02246EF0 ; =0x02251238
+ ldrb r0, [r0, r1]
+ bx lr
+_02246EE6:
+ mov r0, #0
+ bx lr
+ nop
+_02246EEC: .word 0x022513EC
+_02246EF0: .word 0x02251238
+ thumb_func_end MOD18_02246ECC
+
+ thumb_func_start MOD18_02246EF4
+MOD18_02246EF4: ; 0x02246EF4
+ ldr r0, _02246F14 ; =0x022513EC
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _02246F0E
+ mov r0, #0xa
+ lsl r0, r0, #8
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _02246F0E
+ ldrb r1, [r0]
+ ldr r0, _02246F18 ; =0x0225124C
+ ldrb r0, [r0, r1]
+ bx lr
+_02246F0E:
+ mov r0, #0
+ bx lr
+ nop
+_02246F14: .word 0x022513EC
+_02246F18: .word 0x0225124C
+ thumb_func_end MOD18_02246EF4
+
+ thumb_func_start MOD18_02246F1C
+MOD18_02246F1C: ; 0x02246F1C
+ push {r4, r5, r6, r7}
+ add r7, r0, #0
+ ldr r0, _02246FA4 ; =0x022513EC
+ add r5, r1, #0
+ ldr r0, [r0]
+ mov ip, r0
+ cmp r0, #0
+ bne _02246F32
+ mov r0, #1
+ pop {r4, r5, r6, r7}
+ bx lr
+_02246F32:
+ cmp r5, #0x40
+ blt _02246F3C
+ mov r0, #1
+ pop {r4, r5, r6, r7}
+ bx lr
+_02246F3C:
+ asr r0, r7, #4
+ asr r1, r5, #4
+ lsr r0, r0, #0x1b
+ lsr r1, r1, #0x1b
+ add r0, r7, r0
+ add r1, r5, r1
+ ldr r3, _02246FA8 ; =0x02251238
+ ldr r4, _02246FAC ; =0x0225124C
+ asr r0, r0, #5
+ asr r1, r1, #5
+ mov r2, #0
+_02246F52:
+ ldrb r6, [r3]
+ cmp r0, r6
+ bne _02246F92
+ ldrb r6, [r4]
+ cmp r1, r6
+ bne _02246F92
+ lsr r4, r7, #0x1f
+ lsl r3, r7, #0x1b
+ sub r3, r3, r4
+ mov r1, #0x1b
+ ror r3, r1
+ mov r0, #1
+ add r4, r4, r3
+ add r3, r0, #0
+ lsl r3, r4
+ lsl r4, r2, #7
+ mov r2, ip
+ add r2, r2, r4
+ lsr r6, r5, #0x1f
+ lsl r4, r5, #0x1b
+ sub r4, r4, r6
+ ror r4, r1
+ add r1, r6, r4
+ lsl r1, r1, #2
+ add r2, r2, r1
+ ldr r1, _02246FB0 ; =0x00000A04
+ ldr r1, [r2, r1]
+ tst r1, r3
+ bne _02246F9E
+ mov r0, #0
+ pop {r4, r5, r6, r7}
+ bx lr
+_02246F92:
+ add r2, r2, #1
+ add r3, r3, #1
+ add r4, r4, #1
+ cmp r2, #0x11
+ blt _02246F52
+ mov r0, #1
+_02246F9E:
+ pop {r4, r5, r6, r7}
+ bx lr
+ nop
+_02246FA4: .word 0x022513EC
+_02246FA8: .word 0x02251238
+_02246FAC: .word 0x0225124C
+_02246FB0: .word 0x00000A04
+ thumb_func_end MOD18_02246F1C
+
+ thumb_func_start MOD18_02246FB4
+MOD18_02246FB4: ; 0x02246FB4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0xb0
+ ldr r0, _02247108 ; =0x022513EC
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_020377AC
+ bl FUN_02026CA8
+ str r0, [sp, #0xc]
+ ldr r0, _02247108 ; =0x022513EC
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r4, r0, #0
+ mov r0, #0
+ bl FUN_0204E62C
+ str r0, [sp, #8]
+ mov r0, #0
+ bl FUN_0204E664
+ str r0, [sp, #4]
+ mov r0, #0
+ bl FUN_0204E6CC
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #0x28]
+ mov r0, #0xc
+ str r0, [sp, #0x2c]
+ ldr r0, _02247108 ; =0x022513EC
+ ldr r0, [r0]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205EDD8
+ ldr r0, [sp, #0xc]
+ bl FUN_020266E0
+ add r0, r4, #0
+ bl FUN_02025F44
+ add r0, sp, #0x10
+ bl FUN_020312BC
+ mov r4, #0
+_0224701C:
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x10]
+ ldr r3, [sp, #0x14]
+ bl _ll_mul
+ ldr r2, [sp, #0x20]
+ ldr r6, [sp, #0x24]
+ add r7, r2, r0
+ adc r6, r1
+ mov r1, #0
+ add r0, r6, #0
+ mov r2, #5
+ mov r3, #0
+ str r7, [sp, #0x10]
+ str r6, [sp, #0x14]
+ bl _ll_mul
+ cmp r1, #2
+ bge _0224704A
+ lsl r5, r1, #1
+ add r5, #0xa
+ b _02247050
+_0224704A:
+ sub r0, r1, #3
+ lsl r5, r0, #1
+ add r5, #0x12
+_02247050:
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r2, r7, #0
+ add r3, r6, #0
+ bl _ll_mul
+ ldr r2, [sp, #0x20]
+ ldr r3, [sp, #0x24]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [sp, #0x10]
+ str r3, [sp, #0x14]
+ add r0, r3, #0
+ mov r1, #0
+ mov r2, #6
+ mov r3, #0
+ bl _ll_mul
+ lsl r6, r1, #1
+ add r6, #0xc
+ mov r0, #1
+ mov r1, #0
+ cmp r4, #0
+ blt _0224709A
+ add r2, sp, #0x28
+_02247082:
+ ldr r3, [r2]
+ cmp r5, r3
+ bne _02247092
+ ldr r3, [r2, #4]
+ cmp r6, r3
+ bne _02247092
+ mov r0, #0
+ b _0224709A
+_02247092:
+ add r1, r1, #1
+ add r2, #8
+ cmp r1, r4
+ ble _02247082
+_0224709A:
+ cmp r0, #0
+ bne _022470A2
+ sub r4, r4, #1
+ b _022470BA
+_022470A2:
+ add r1, r4, #0
+ ldr r0, [sp, #0xc]
+ add r1, #0x10
+ add r2, r5, #0
+ add r3, r6, #0
+ bl FUN_02026778
+ add r1, sp, #0x28
+ lsl r0, r4, #3
+ add r0, r1, r0
+ str r5, [r0, #8]
+ str r6, [r0, #0xc]
+_022470BA:
+ add r4, r4, #1
+ cmp r4, #0x10
+ blt _0224701C
+ ldr r0, _02247108 ; =0x022513EC
+ mov r2, #0x22
+ ldr r1, [r0]
+ ldr r0, _0224710C ; =0x00000A04
+ lsl r2, r2, #6
+ add r0, r1, r0
+ mov r1, #0xff
+ bl MI_CpuFill8
+ ldr r0, [sp]
+ bl FUN_0204F610
+ add r3, r0, #0
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #8]
+ ldr r2, [sp, #4]
+ bl FUN_02026C68
+ ldr r1, _02247108 ; =0x022513EC
+ ldr r0, [sp, #0xc]
+ ldr r2, [r1]
+ ldr r1, _02247110 ; =0x0000096A
+ add r1, r2, r1
+ mov r2, #0x94
+ bl MI_CpuCopy8
+ ldr r1, _02247108 ; =0x022513EC
+ ldr r0, [sp, #0xc]
+ ldr r2, [r1]
+ ldr r1, _02247114 ; =0x00001204
+ add r1, r2, r1
+ bl MOD18_02245128
+ add sp, #0xb0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02247108: .word 0x022513EC
+_0224710C: .word 0x00000A04
+_02247110: .word 0x0000096A
+_02247114: .word 0x00001204
+ thumb_func_end MOD18_02246FB4
+
+ thumb_func_start MOD18_02247118
+MOD18_02247118: ; 0x02247118
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD18_0223D668
+ mov r2, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ pop {r4, pc}
+ thumb_func_end MOD18_02247118
+
+ thumb_func_start MOD18_0224712C
+MOD18_0224712C: ; 0x0224712C
+ push {r3, lr}
+ bl MOD18_0223D668
+ bl MOD18_0224DD94
+ pop {r3, pc}
+ thumb_func_end MOD18_0224712C
+
+ thumb_func_start MOD18_02247138
+MOD18_02247138: ; 0x02247138
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD18_0223D668
+ mov r1, #0
+ add r2, r4, #0
+ bl MOD18_0224DF18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02247138
+
+ thumb_func_start MOD18_0224714C
+MOD18_0224714C: ; 0x0224714C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD18_0223D668
+ add r1, r4, #0
+ add r2, r5, #0
+ bl MOD18_0224DEA4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_0224714C
+
+ thumb_func_start MOD18_02247160
+MOD18_02247160: ; 0x02247160
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ str r1, [sp]
+ str r2, [sp, #4]
+ mov r4, #0
+_0224716C:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_020267C4
+ str r0, [sp, #8]
+ cmp r0, #0
+ beq _022471C4
+ cmp r4, #0
+ beq _022471C4
+ cmp r4, #0x10
+ bge _022471C4
+ bl FUN_0204CAA0
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02026810
+ add r7, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02026840
+ ldr r1, [sp]
+ ldr r2, [sp, #4]
+ sub r1, r1, r7
+ sub r2, r2, r0
+ cmp r1, #0
+ blt _022471C4
+ cmp r1, #2
+ bgt _022471C4
+ cmp r2, #0
+ blt _022471C4
+ cmp r2, #2
+ bgt _022471C4
+ lsl r0, r2, #1
+ add r2, r2, r0
+ add r0, r6, r1
+ ldrb r0, [r2, r0]
+ cmp r0, #0
+ beq _022471C4
+ ldr r0, [sp, #8]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_022471C4:
+ add r4, r4, #1
+ cmp r4, #0x20
+ blt _0224716C
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_02247160
+
+ thumb_func_start MOD18_022471D0
+MOD18_022471D0: ; 0x022471D0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ ldrh r4, [r1]
+ ldrh r6, [r1, #2]
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD18_02246F1C
+ cmp r0, #0
+ bne _0224723C
+ add r0, sp, #0
+ strb r5, [r0]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD18_02244DE8
+ ldr r1, _02247244 ; =0x022513EC
+ mov r3, #0x1b
+ ldr r2, [r1]
+ mov r1, #0x96
+ add r2, #0xa
+ mul r1, r0
+ add r0, r2, r1
+ lsr r2, r4, #0x1f
+ lsl r1, r4, #0x1b
+ sub r1, r1, r2
+ ror r1, r3
+ add r1, r2, r1
+ lsr r4, r6, #0x1f
+ lsl r2, r6, #0x1b
+ sub r2, r2, r4
+ ror r2, r3
+ add r2, r4, r2
+ bl MOD18_02247160
+ bl FUN_0204CAF0
+ add r1, sp, #0
+ strb r0, [r1, #1]
+ ldrb r0, [r1, #1]
+ cmp r0, #0
+ beq _0224723C
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ mov r0, #0x3c
+ add r1, sp, #0
+ bl FUN_02030C4C
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_0224723C:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02247244: .word 0x022513EC
+ thumb_func_end MOD18_022471D0
+
+ thumb_func_start MOD18_02247248
+MOD18_02247248: ; 0x02247248
+ push {r3, r4, r5, lr}
+ ldr r0, _02247274 ; =0x022513EC
+ add r5, r2, #0
+ ldr r1, [r0]
+ mov r0, #0xa
+ lsl r0, r0, #8
+ ldr r0, [r1, r0]
+ add r0, r0, #2
+ bl FUN_02026CC0
+ add r4, r0, #0
+ bl FUN_02031190
+ ldrb r1, [r5]
+ cmp r1, r0
+ bne _02247270
+ ldrb r1, [r5, #1]
+ add r0, r4, #0
+ bl MOD18_0224D79C
+_02247270:
+ pop {r3, r4, r5, pc}
+ nop
+_02247274: .word 0x022513EC
+ thumb_func_end MOD18_02247248
+
+ thumb_func_start MOD18_02247278
+MOD18_02247278: ; 0x02247278
+ mov r0, #2
+ bx lr
+ thumb_func_end MOD18_02247278
+
+ thumb_func_start MOD18_0224727C
+MOD18_0224727C: ; 0x0224727C
+ ldr r2, _0224728C ; =0x022513EC
+ ldr r2, [r2]
+ cmp r2, #0
+ beq _0224728A
+ add r2, r2, r0
+ ldr r0, _02247290 ; =0x0000134B
+ strb r1, [r2, r0]
+_0224728A:
+ bx lr
+ .align 2, 0
+_0224728C: .word 0x022513EC
+_02247290: .word 0x0000134B
+ thumb_func_end MOD18_0224727C
+
+ thumb_func_start MOD18_02247294
+MOD18_02247294: ; 0x02247294
+ ldr r2, _022472A4 ; =0x022513EC
+ ldr r2, [r2]
+ cmp r2, #0
+ beq _022472A2
+ add r2, r2, r0
+ ldr r0, _022472A8 ; =0x00001353
+ strb r1, [r2, r0]
+_022472A2:
+ bx lr
+ .align 2, 0
+_022472A4: .word 0x022513EC
+_022472A8: .word 0x00001353
+ thumb_func_end MOD18_02247294
+
+ thumb_func_start MOD18_022472AC
+MOD18_022472AC: ; 0x022472AC
+ ldr r1, _022472C0 ; =0x022513EC
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _022472BC
+ add r1, r1, r0
+ ldr r0, _022472C4 ; =0x0000135B
+ mov r2, #1
+ strb r2, [r1, r0]
+_022472BC:
+ bx lr
+ nop
+_022472C0: .word 0x022513EC
+_022472C4: .word 0x0000135B
+ thumb_func_end MOD18_022472AC
+
+ thumb_func_start MOD18_022472C8
+MOD18_022472C8: ; 0x022472C8
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, _0224731C ; =0x022513EC
+ mov r1, #0
+ ldr r0, [r0]
+ ldr r0, [r0]
+ add r0, #0xa0
+ ldr r0, [r0]
+ bl MOD05_021E7ED0
+ add r1, r0, #0
+ add r0, sp, #8
+ bl MOD05_021E7EA0
+ ldr r1, _0224731C ; =0x022513EC
+ mov r0, #0
+ ldr r1, [r1]
+ ldr r1, [r1]
+ add r1, #0xa0
+ ldr r1, [r1]
+ bl MOD05_021E7C80
+ ldr r0, _0224731C ; =0x022513EC
+ ldr r2, _02247320 ; =0x0000013D
+ ldr r0, [r0]
+ ldr r1, [r0]
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r1, #0x4c]
+ str r0, [sp, #4]
+ add r0, r1, #0
+ ldrb r3, [r4, #5]
+ add r0, #0xa0
+ ldr r0, [r0]
+ add r2, r3, r2
+ ldr r1, [r1, #0x2c]
+ add r3, sp, #8
+ bl MOD05_021E7FBC
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+_0224731C: .word 0x022513EC
+_02247320: .word 0x0000013D
+ thumb_func_end MOD18_022472C8
+
+ thumb_func_start MOD18_02247324
+MOD18_02247324: ; 0x02247324
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02247324
+
+ thumb_func_start MOD18_02247338
+MOD18_02247338: ; 0x02247338
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #4
+ bhi _02247406
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02247352: ; jump table
+ .short _0224735C - _02247352 - 2 ; case 0
+ .short _0224737C - _02247352 - 2 ; case 1
+ .short _022473AA - _02247352 - 2 ; case 2
+ .short _022473DA - _02247352 - 2 ; case 3
+ .short _022473F6 - _02247352 - 2 ; case 4
+_0224735C:
+ bl FUN_0204F7E4
+ bl MOD18_0223D648
+ mov r2, #0
+ mov r1, #7
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, _0224740C ; =0x000005E3
+ bl FUN_020054C8
+ mov r0, #1
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, pc}
+_0224737C:
+ bl MOD18_0223D648
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02247406
+ ldr r0, _02247410 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _02247406
+ bl MOD18_0223D648
+ ldrb r1, [r4, #5]
+ mov r2, #0
+ add r3, r2, #0
+ add r1, #0xe
+ bl MOD18_0224DCB8
+ mov r0, #2
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, pc}
+_022473AA:
+ bl MOD18_0223D648
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02247406
+ ldr r0, _02247410 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _02247406
+ add r0, r4, #0
+ bl MOD18_022472C8
+ mov r0, #4
+ str r0, [r4]
+ bl MOD18_0223D648
+ bl MOD18_0224DD94
+ bl FUN_0204F7FC
+ add sp, #0xc
+ pop {r4, r5, pc}
+_022473DA:
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #2
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {r4, r5, pc}
+_022473F6:
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ bl MOD18_0223E6A0
+_02247406:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_0224740C: .word 0x000005E3
+_02247410: .word 0x021C48B8
+ thumb_func_end MOD18_02247338
+
+ thumb_func_start MOD18_02247414
+MOD18_02247414: ; 0x02247414
+ push {r3, lr}
+ add r1, sp, #0
+ strb r0, [r1]
+ ldrb r0, [r2]
+ strb r0, [r1, #1]
+ mov r0, #0x61
+ add r1, sp, #0
+ bl FUN_02030C4C
+ pop {r3, pc}
+ thumb_func_end MOD18_02247414
+
+ thumb_func_start MOD18_02247428
+MOD18_02247428: ; 0x02247428
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ bl FUN_02031190
+ ldrb r1, [r5]
+ cmp r1, r0
+ bne _02247464
+ mov r0, #0xb
+ mov r1, #8
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #4
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ str r0, [r4]
+ ldrb r0, [r5, #1]
+ add r1, r4, #0
+ mov r2, #0x64
+ strb r0, [r4, #5]
+ ldr r0, _02247468 ; =MOD18_02247338
+ bl FUN_0200CA44
+ add r1, r0, #0
+ ldr r2, _0224746C ; =MOD18_02247324
+ add r0, r4, #0
+ bl MOD18_0223E688
+_02247464:
+ pop {r3, r4, r5, pc}
+ nop
+_02247468: .word MOD18_02247338
+_0224746C: .word MOD18_02247324
+ thumb_func_end MOD18_02247428
+
+ thumb_func_start MOD18_02247470
+MOD18_02247470: ; 0x02247470
+ mov r0, #2
+ bx lr
+ thumb_func_end MOD18_02247470
+
+ thumb_func_start MOD18_02247474
+MOD18_02247474: ; 0x02247474
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r7, r1, #0
+ str r2, [sp]
+ mov r4, #0
+_02247480:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_020267C4
+ str r0, [sp, #4]
+ cmp r0, #0
+ beq _022474C0
+ cmp r4, #0
+ beq _022474C0
+ cmp r4, #0x10
+ bge _022474C0
+ bl FUN_0204CAA0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02026810
+ add r6, r0, #0
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02026840
+ ldr r1, [sp]
+ sub r2, r7, r6
+ sub r0, r1, r0
+ cmp r2, #0
+ bne _022474C0
+ cmp r0, #0
+ bne _022474C0
+ ldr r0, [sp, #4]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+_022474C0:
+ add r4, r4, #1
+ cmp r4, #0x20
+ blt _02247480
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_02247474
+
+ thumb_func_start MOD18_022474CC
+MOD18_022474CC: ; 0x022474CC
+ sub r0, #0x38
+ cmp r0, #0xf
+ bhi _0224753E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022474DE: ; jump table
+ .short _022474FE - _022474DE - 2 ; case 0
+ .short _02247502 - _022474DE - 2 ; case 1
+ .short _02247506 - _022474DE - 2 ; case 2
+ .short _0224750A - _022474DE - 2 ; case 3
+ .short _0224750E - _022474DE - 2 ; case 4
+ .short _02247512 - _022474DE - 2 ; case 5
+ .short _02247516 - _022474DE - 2 ; case 6
+ .short _0224751A - _022474DE - 2 ; case 7
+ .short _0224751E - _022474DE - 2 ; case 8
+ .short _02247522 - _022474DE - 2 ; case 9
+ .short _02247526 - _022474DE - 2 ; case 10
+ .short _0224752A - _022474DE - 2 ; case 11
+ .short _0224752E - _022474DE - 2 ; case 12
+ .short _02247532 - _022474DE - 2 ; case 13
+ .short _02247536 - _022474DE - 2 ; case 14
+ .short _0224753A - _022474DE - 2 ; case 15
+_022474FE:
+ mov r0, #0xb
+ bx lr
+_02247502:
+ mov r0, #0xc
+ bx lr
+_02247506:
+ mov r0, #0x12
+ bx lr
+_0224750A:
+ mov r0, #0x13
+ bx lr
+_0224750E:
+ mov r0, #0x14
+ bx lr
+_02247512:
+ mov r0, #0x15
+ bx lr
+_02247516:
+ mov r0, #0x16
+ bx lr
+_0224751A:
+ mov r0, #0x17
+ bx lr
+_0224751E:
+ mov r0, #0x18
+ bx lr
+_02247522:
+ mov r0, #0x19
+ bx lr
+_02247526:
+ mov r0, #0x1a
+ bx lr
+_0224752A:
+ mov r0, #0x1b
+ bx lr
+_0224752E:
+ mov r0, #0x1c
+ bx lr
+_02247532:
+ mov r0, #0x1d
+ bx lr
+_02247536:
+ mov r0, #0x1e
+ bx lr
+_0224753A:
+ mov r0, #0x1f
+ bx lr
+_0224753E:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_022474CC
+
+ thumb_func_start MOD18_02247544
+MOD18_02247544: ; 0x02247544
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ bl FUN_0204E544
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_0204E598
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0204E6CC
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ bne _02247572
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_02247572:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD18_02246F1C
+ cmp r0, #1
+ bne _022475EA
+ ldr r0, _022475F0 ; =0x022513EC
+ ldr r0, [r0]
+ add r1, r0, r5
+ ldr r0, _022475F4 ; =0x00001383
+ ldrb r0, [r1, r0]
+ cmp r0, #0
+ bne _022475EA
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD18_02244DE8
+ ldr r1, _022475F0 ; =0x022513EC
+ lsr r3, r6, #0x1f
+ ldr r2, [r1]
+ mov r1, #0x96
+ add r2, #0xa
+ mul r1, r0
+ add r0, r2, r1
+ lsl r2, r6, #0x1b
+ sub r2, r2, r3
+ mov r1, #0x1b
+ ror r2, r1
+ add r1, r3, r2
+ lsr r3, r4, #0x1f
+ lsl r7, r4, #0x1b
+ sub r7, r7, r3
+ mov r2, #0x1b
+ ror r7, r2
+ add r2, r3, r7
+ bl MOD18_02247474
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl MOD18_022474CC
+ add r2, r0, #0
+ beq _022475EA
+ ldr r1, _022475F0 ; =0x022513EC
+ mov r0, #1
+ ldr r1, [r1]
+ add r3, r1, r5
+ ldr r1, _022475F4 ; =0x00001383
+ strb r0, [r3, r1]
+ ldr r0, [sp, #8]
+ str r4, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #0xff
+ add r3, r6, #0
+ bl MOD18_0223F858
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_022475EA:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022475F0: .word 0x022513EC
+_022475F4: .word 0x00001383
+ thumb_func_end MOD18_02247544
+
+ thumb_func_start MOD18_022475F8
+MOD18_022475F8: ; 0x022475F8
+ ldr r1, _0224760C ; =0x022513EC
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _02247608
+ add r1, r1, r0
+ ldr r0, _02247610 ; =0x00001383
+ mov r2, #0
+ strb r2, [r1, r0]
+_02247608:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_0224760C: .word 0x022513EC
+_02247610: .word 0x00001383
+ thumb_func_end MOD18_022475F8
+
+ thumb_func_start MOD18_02247614
+MOD18_02247614: ; 0x02247614
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r0, sp, #4
+ mov r1, #0
+ mov r2, #8
+ bl MI_CpuFill8
+ mov r4, #0
+ add r5, sp, #4
+_02247626:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0
+ beq _022476A2
+ add r0, r4, #0
+ bl FUN_0204E544
+ str r0, [sp]
+ add r0, r4, #0
+ bl FUN_0204E598
+ add r7, r0, #0
+ ldr r1, [sp]
+ ldr r0, _02247714 ; =0x0000FFFF
+ cmp r1, r0
+ bne _0224764E
+ cmp r7, r0
+ beq _022476A2
+_0224764E:
+ ldr r0, [sp]
+ add r1, r7, #0
+ bl MOD18_02244DE8
+ add r6, r0, #0
+ cmp r4, r6
+ beq _022476A2
+ cmp r6, #0x10
+ beq _022476A2
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02030E7C
+ cmp r0, #0
+ bne _022476A2
+ ldr r0, _02247718 ; =0x022513EC
+ ldr r1, _0224771C ; =0x0000136B
+ ldr r0, [r0]
+ add r0, r0, r4
+ ldrb r1, [r0, r1]
+ cmp r1, #0xff
+ bne _022476A2
+ ldr r1, _02247720 ; =0x00001373
+ ldrb r0, [r0, r1]
+ cmp r0, #0xff
+ bne _022476A2
+ ldr r0, [sp]
+ add r1, r7, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ beq _022476A2
+ ldrb r0, [r5]
+ cmp r0, #0
+ bne _022476A2
+ add r0, r6, #0
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD18_022455D0
+ mov r0, #1
+ strb r0, [r5]
+_022476A2:
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r4, #8
+ blt _02247626
+ bl FUN_02031190
+ ldr r1, _02247718 ; =0x022513EC
+ add r4, r0, #0
+ ldr r2, [r1]
+ ldr r1, _02247724 ; =0x000012E4
+ ldrb r1, [r2, r1]
+ cmp r1, #6
+ bne _0224770E
+ bl FUN_0204E544
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_0204E598
+ add r5, r0, #0
+ ldr r0, _02247714 ; =0x0000FFFF
+ cmp r6, r0
+ bne _022476D4
+ cmp r5, r0
+ beq _022476FC
+_022476D4:
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ beq _022476FC
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD18_02244DE8
+ add r5, sp, #4
+ ldrb r1, [r5, r4]
+ cmp r1, #0
+ bne _022476FC
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD18_022455D0
+ mov r0, #1
+ strb r0, [r5, r4]
+_022476FC:
+ add r0, sp, #4
+ ldrb r0, [r0, r4]
+ cmp r0, #0
+ beq _0224770E
+ ldr r0, _02247718 ; =0x022513EC
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r0, _02247724 ; =0x000012E4
+ strb r2, [r1, r0]
+_0224770E:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02247714: .word 0x0000FFFF
+_02247718: .word 0x022513EC
+_0224771C: .word 0x0000136B
+_02247720: .word 0x00001373
+_02247724: .word 0x000012E4
+ thumb_func_end MOD18_02247614
+
+ thumb_func_start MOD18_02247728
+MOD18_02247728: ; 0x02247728
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, _022477F8 ; =0x022513EC
+ str r1, [sp, #8]
+ ldr r0, [r0]
+ add r1, r0, r5
+ ldr r0, _022477FC ; =0x00001363
+ ldrb r0, [r1, r0]
+ cmp r0, #0xff
+ bne _02247744
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02247744:
+ bl FUN_02031190
+ bl FUN_0204E3EC
+ add r4, r0, #0
+ bl FUN_02031190
+ bl FUN_0204E440
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ bne _02247774
+ ldr r0, _022477F8 ; =0x022513EC
+ mov r2, #0xff
+ ldr r0, [r0]
+ add sp, #0x10
+ add r1, r0, r5
+ ldr r0, _022477FC ; =0x00001363
+ strb r2, [r1, r0]
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02247774:
+ bl MOD18_0224D344
+ bl MOD18_02248FC8
+ bl MOD18_0223E6B8
+ bl FUN_02031190
+ mov r1, #0
+ bl MOD18_0223FCE8
+ ldr r0, _022477F8 ; =0x022513EC
+ ldr r2, [r0]
+ ldr r0, _02247800 ; =0x000013DC
+ add r1, r0, #2
+ ldrh r6, [r2, r0]
+ add r0, r0, #4
+ ldrh r4, [r2, r1]
+ ldrb r7, [r2, r0]
+ cmp r6, #0
+ beq _022477A2
+ cmp r4, #0
+ bne _022477A6
+_022477A2:
+ bl ErrorHandling
+_022477A6:
+ add r0, r7, #0
+ bl FUN_02059BF4
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ bl FUN_02059C00
+ add r2, r0, #0
+ ldr r0, _022477F8 ; =0x022513EC
+ mov r3, #0
+ ldr r1, [r0]
+ ldr r0, _02247804 ; =0x000013E6
+ add r2, r4, r2
+ strb r3, [r1, r0]
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #8]
+ str r5, [sp]
+ str r0, [sp, #4]
+ ldr r0, _022477F8 ; =0x022513EC
+ add r1, r6, r1
+ ldr r0, [r0]
+ add r3, r7, #0
+ ldr r0, [r0]
+ bl MOD18_0224686C
+ bl FUN_0204FD38
+ ldr r1, _022477F8 ; =0x022513EC
+ mov r0, #0xa
+ ldr r2, [r1]
+ mov r3, #0
+ lsl r0, r0, #8
+ str r3, [r2, r0]
+ ldr r0, [r1]
+ mov r2, #0xff
+ add r1, r0, r5
+ ldr r0, _022477FC ; =0x00001363
+ strb r2, [r1, r0]
+ mov r0, #1
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022477F8: .word 0x022513EC
+_022477FC: .word 0x00001363
+_02247800: .word 0x000013DC
+_02247804: .word 0x000013E6
+ thumb_func_end MOD18_02247728
+
+ thumb_func_start MOD18_02247808
+MOD18_02247808: ; 0x02247808
+ push {r3, lr}
+ ldr r0, _02247828 ; =0x022513EC
+ ldr r2, [r0]
+ ldr r0, _0224782C ; =0x000012E4
+ ldrb r1, [r2, r0]
+ cmp r1, #1
+ bne _02247824
+ mov r1, #2
+ strb r1, [r2, r0]
+ bl FUN_0204CF60
+ mov r0, #0
+ bl MOD18_02245358
+_02247824:
+ pop {r3, pc}
+ nop
+_02247828: .word 0x022513EC
+_0224782C: .word 0x000012E4
+ thumb_func_end MOD18_02247808
+
+ thumb_func_start MOD18_02247830
+MOD18_02247830: ; 0x02247830
+ ldr r0, _02247844 ; =0x022513EC
+ ldr r2, [r0]
+ ldr r0, _02247848 ; =0x000012E4
+ ldrb r1, [r2, r0]
+ cmp r1, #5
+ bne _02247840
+ mov r1, #4
+ strb r1, [r2, r0]
+_02247840:
+ bx lr
+ nop
+_02247844: .word 0x022513EC
+_02247848: .word 0x000012E4
+ thumb_func_end MOD18_02247830
+
+ thumb_func_start MOD18_0224784C
+MOD18_0224784C: ; 0x0224784C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ bl FUN_0204E5EC
+ add r5, r0, #0
+ add r0, r6, #0
+ bl FUN_0204E60C
+ add r4, r0, #0
+ ldr r0, _022478BC ; =0x022513EC
+ add r1, r5, #0
+ ldr r0, [r0]
+ add r2, r4, #0
+ ldr r0, [r0]
+ bl FUN_0204A6B4
+ cmp r0, #0
+ bne _0224787C
+ cmp r6, #0
+ beq _022478BA
+ bl FUN_0202EDD8
+ cmp r0, #0
+ bne _022478BA
+_0224787C:
+ ldr r0, _022478C0 ; =0x0000FFFF
+ cmp r5, r0
+ bne _02247892
+ cmp r4, r0
+ bne _02247892
+ add r0, r6, #0
+ add r1, r6, #0
+ mov r2, #1
+ bl MOD18_022455D0
+ pop {r4, r5, r6, pc}
+_02247892:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ bne _022478B0
+ ldr r0, _022478BC ; =0x022513EC
+ add r1, r5, #0
+ ldr r0, [r0]
+ add r2, r4, #0
+ ldr r0, [r0]
+ bl FUN_0204A6B4
+ cmp r0, #0
+ beq _022478BA
+_022478B0:
+ add r0, r6, #0
+ add r1, r6, #0
+ mov r2, #1
+ bl MOD18_022455D0
+_022478BA:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022478BC: .word 0x022513EC
+_022478C0: .word 0x0000FFFF
+ thumb_func_end MOD18_0224784C
+
+ thumb_func_start MOD18_022478C4
+MOD18_022478C4: ; 0x022478C4
+ ldr r0, _022478D8 ; =0x022513EC
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _022478D2
+ ldr r0, _022478DC ; =0x000013DC
+ ldrh r0, [r1, r0]
+ bx lr
+_022478D2:
+ mov r0, #0x48
+ bx lr
+ nop
+_022478D8: .word 0x022513EC
+_022478DC: .word 0x000013DC
+ thumb_func_end MOD18_022478C4
+
+ thumb_func_start MOD18_022478E0
+MOD18_022478E0: ; 0x022478E0
+ ldr r0, _022478F4 ; =0x022513EC
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _022478EE
+ ldr r0, _022478F8 ; =0x000013DE
+ ldrh r0, [r1, r0]
+ bx lr
+_022478EE:
+ ldr r0, _022478FC ; =0x000001B5
+ bx lr
+ nop
+_022478F4: .word 0x022513EC
+_022478F8: .word 0x000013DE
+_022478FC: .word 0x000001B5
+ thumb_func_end MOD18_022478E0
+
+ thumb_func_start MOD18_02247900
+MOD18_02247900: ; 0x02247900
+ ldr r0, _02247914 ; =0x022513EC
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _0224790E
+ ldr r0, _02247918 ; =0x000013E0
+ ldrb r0, [r1, r0]
+ bx lr
+_0224790E:
+ mov r0, #1
+ bx lr
+ nop
+_02247914: .word 0x022513EC
+_02247918: .word 0x000013E0
+ thumb_func_end MOD18_02247900
+
+ thumb_func_start MOD18_0224791C
+MOD18_0224791C: ; 0x0224791C
+ ldr r2, _02247930 ; =0x022513EC
+ ldr r2, [r2]
+ cmp r2, #0
+ beq _0224792C
+ lsl r0, r0, #1
+ add r2, r2, r0
+ ldr r0, _02247934 ; =0x000013AC
+ strh r1, [r2, r0]
+_0224792C:
+ bx lr
+ nop
+_02247930: .word 0x022513EC
+_02247934: .word 0x000013AC
+ thumb_func_end MOD18_0224791C
+
+ thumb_func_start MOD18_02247938
+MOD18_02247938: ; 0x02247938
+ ldr r2, _0224794C ; =0x022513EC
+ ldr r2, [r2]
+ cmp r2, #0
+ beq _02247948
+ lsl r0, r0, #1
+ add r2, r2, r0
+ ldr r0, _02247950 ; =0x000013BC
+ strh r1, [r2, r0]
+_02247948:
+ bx lr
+ nop
+_0224794C: .word 0x022513EC
+_02247950: .word 0x000013BC
+ thumb_func_end MOD18_02247938
+
+ thumb_func_start MOD18_02247954
+MOD18_02247954: ; 0x02247954
+ ldr r2, _02247968 ; =0x022513EC
+ ldr r2, [r2]
+ cmp r2, #0
+ beq _02247964
+ lsl r0, r0, #1
+ add r2, r2, r0
+ ldr r0, _0224796C ; =0x000013CC
+ strh r1, [r2, r0]
+_02247964:
+ bx lr
+ nop
+_02247968: .word 0x022513EC
+_0224796C: .word 0x000013CC
+ thumb_func_end MOD18_02247954
+
+ thumb_func_start MOD18_02247970
+MOD18_02247970: ; 0x02247970
+ ldr r1, _0224797C ; =0x022513EC
+ ldr r2, [r1]
+ ldr r1, _02247980 ; =0x000013E5
+ strb r0, [r2, r1]
+ bx lr
+ nop
+_0224797C: .word 0x022513EC
+_02247980: .word 0x000013E5
+ thumb_func_end MOD18_02247970
+
+ thumb_func_start MOD18_02247984
+MOD18_02247984: ; 0x02247984
+ push {r3, lr}
+ mov r0, #1
+ bl FUN_0202D380
+ mov r0, #1
+ bl FUN_0202D344
+ mov r0, #1
+ bl FUN_020318A4
+ bl FUN_0202F0B8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02247984
+
+ thumb_func_start MOD18_022479A0
+MOD18_022479A0: ; 0x022479A0
+ push {r3, lr}
+ mov r0, #0
+ bl FUN_0202D380
+ mov r0, #0
+ bl FUN_0202D344
+ mov r0, #0
+ bl FUN_020318A4
+ bl FUN_0202F0B8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_022479A0
+
+ thumb_func_start MOD18_022479BC
+MOD18_022479BC: ; 0x022479BC
+ push {r3, lr}
+ ldrh r2, [r0, #0x2c]
+ add r0, sp, #0
+ strb r2, [r0]
+ strb r1, [r0, #1]
+ mov r0, #0x4a
+ add r1, sp, #0
+ bl FUN_020311D0
+ pop {r3, pc}
+ thumb_func_end MOD18_022479BC
+
+ thumb_func_start MOD18_022479D0
+MOD18_022479D0: ; 0x022479D0
+ push {r3, lr}
+ ldrh r2, [r0, #0x30]
+ add r0, sp, #0
+ strb r2, [r0]
+ strb r1, [r0, #1]
+ mov r0, #0x49
+ add r1, sp, #0
+ bl FUN_020311D0
+ pop {r3, pc}
+ thumb_func_end MOD18_022479D0
+
+ thumb_func_start MOD18_022479E4
+MOD18_022479E4: ; 0x022479E4
+ push {r4, lr}
+ add r4, r1, #0
+ cmp r4, #0x88
+ blt _022479FC
+ ldrh r0, [r0, #0x30]
+ bl FUN_0202DFA4
+ bl FUN_020239CC
+ cmp r0, #1
+ bne _022479FC
+ add r4, #0x13
+_022479FC:
+ bl MOD18_0223D638
+ mov r2, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ pop {r4, pc}
+ thumb_func_end MOD18_022479E4
+
+ thumb_func_start MOD18_02247A0C
+MOD18_02247A0C: ; 0x02247A0C
+ push {r4, lr}
+ add r4, r1, #0
+ cmp r4, #0x88
+ blt _02247A24
+ ldrh r0, [r0, #0x2c]
+ bl FUN_0202DFA4
+ bl FUN_020239CC
+ cmp r0, #1
+ bne _02247A24
+ add r4, #0x13
+_02247A24:
+ bl MOD18_0223D638
+ mov r2, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ pop {r4, pc}
+ thumb_func_end MOD18_02247A0C
+
+ thumb_func_start MOD18_02247A34
+MOD18_02247A34: ; 0x02247A34
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x21
+ mov r1, #0x3c
+ add r7, r2, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x3c
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, _02247A98 ; =0x022513F0
+ mov r1, #1
+ str r4, [r0, #4]
+ str r7, [r4, #8]
+ str r6, [r4, #0x2c]
+ add r0, r4, #0
+ strh r5, [r4, #0x30]
+ add r0, #0x37
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x38
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x29
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x2a
+ strb r1, [r0]
+ add r0, r4, #0
+ ldrh r1, [r4, #0x30]
+ add r0, #0x28
+ strb r1, [r0]
+ ldr r0, _02247A9C ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD18_022479E4
+ ldr r0, _02247AA0 ; =MOD18_02248054
+ ldr r2, _02247AA4 ; =0x00002710
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02247A98: .word 0x022513F0
+_02247A9C: .word 0x000005DC
+_02247AA0: .word MOD18_02248054
+_02247AA4: .word 0x00002710
+ thumb_func_end MOD18_02247A34
+
+ thumb_func_start MOD18_02247AA8
+MOD18_02247AA8: ; 0x02247AA8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ mov r0, #4
+ add r1, r0, #0
+ bl FUN_02012838
+ str r0, [r5, #0x1c]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _02247B50 ; =0x000002DD
+ add r1, r5, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #8]
+ add r1, #0xc
+ ldr r0, [r0, #8]
+ mov r2, #3
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _02247B54 ; =0x000003D9
+ add r0, #0xc
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ ldr r2, _02247B58 ; =0x0000023F
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #4
+ bl FUN_0200A86C
+ ldr r4, _02247B5C ; =0x02250548
+ add r7, r0, #0
+ mov r6, #0
+_02247AFA:
+ ldr r0, [r5, #0x1c]
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ add r1, r7, #0
+ bl FUN_02012880
+ add r6, r6, #1
+ add r4, #8
+ cmp r6, #4
+ blo _02247AFA
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ bl MOD18_0224DAD8
+ add r1, sp, #0x14
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ ldr r0, [r5, #0x1c]
+ mov r1, #0
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r0, #0xc
+ str r0, [sp, #0x20]
+ mov r3, #4
+ add r0, sp, #0x14
+ strh r3, [r0, #0x10]
+ strh r3, [r0, #0x12]
+ strh r1, [r5, #0x3a]
+ add r0, sp, #0x14
+ add r2, r1, #0
+ bl FUN_020010A8
+ str r0, [r5, #0x20]
+ add r5, #0xc
+ add r0, r5, #0
+ bl FUN_020191D0
+ bl FUN_0204F7E4
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02247B50: .word 0x000002DD
+_02247B54: .word 0x000003D9
+_02247B58: .word 0x0000023F
+_02247B5C: .word 0x02250548
+ thumb_func_end MOD18_02247AA8
+
+ thumb_func_start MOD18_02247B60
+MOD18_02247B60: ; 0x02247B60
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _02247B76
+ mov r1, #4
+ bl FUN_020021EC
+ mov r0, #0
+ str r0, [r4, #0x24]
+_02247B76:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02247B88
+ mov r1, #1
+ mvn r1, r1
+ bl MOD18_0224ADBC
+ bl MOD18_0223E6A0
+_02247B88:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02247FC0
+ ldr r1, [r4, #0x2c]
+ cmp r1, #0
+ beq _02247B9A
+ mov r0, #0
+ blx r1
+_02247B9A:
+ add r0, r4, #0
+ bl FUN_02016A18
+ bl FUN_0204F7FC
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, _02247BB4 ; =0x022513F0
+ mov r1, #0
+ str r1, [r0, #4]
+ pop {r3, r4, r5, pc}
+ nop
+_02247BB4: .word 0x022513F0
+ thumb_func_end MOD18_02247B60
+
+ thumb_func_start MOD18_02247BB8
+MOD18_02247BB8: ; 0x02247BB8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r5, r0, #0
+ mov r0, #4
+ add r1, r0, #0
+ bl FUN_02012838
+ str r0, [r5, #0x1c]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _02247C88 ; =0x000002AD
+ add r1, r5, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #8]
+ add r1, #0xc
+ ldr r0, [r0, #8]
+ mov r2, #3
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _02247C8C ; =0x000003D9
+ add r0, #0xc
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ ldr r2, _02247C90 ; =0x0000023E
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #4
+ bl FUN_0200A86C
+ add r6, r0, #0
+ mov r4, #0
+ add r7, sp, #0x14
+_02247C0A:
+ bl FUN_0201BA60
+ mov r1, #0xc
+ bl _u32_div_f
+ add r2, r1, #0
+ mov r1, #0
+ cmp r4, #0
+ ble _02247C2C
+ add r3, r7, #0
+_02247C1E:
+ ldrb r0, [r3]
+ cmp r0, r2
+ beq _02247C2C
+ add r1, r1, #1
+ add r3, r3, #1
+ cmp r1, r4
+ blt _02247C1E
+_02247C2C:
+ cmp r1, r4
+ bne _02247C3E
+ strb r2, [r7, r4]
+ ldr r0, [r5, #0x1c]
+ add r1, r6, #0
+ add r3, r2, #0
+ bl FUN_02012880
+ b _02247C40
+_02247C3E:
+ sub r4, r4, #1
+_02247C40:
+ add r4, r4, #1
+ cmp r4, #4
+ blt _02247C0A
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ ldr r4, _02247C94 ; =0x02250528
+ add r3, sp, #0x18
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5, #0x1c]
+ mov r1, #0
+ str r0, [sp, #0x18]
+ add r0, r5, #0
+ add r0, #0xc
+ str r0, [sp, #0x24]
+ add r0, r2, #0
+ strh r1, [r5, #0x3a]
+ add r2, r1, #0
+ mov r3, #4
+ bl FUN_020010A8
+ str r0, [r5, #0x20]
+ add r5, #0xc
+ add r0, r5, #0
+ bl FUN_020191D0
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02247C88: .word 0x000002AD
+_02247C8C: .word 0x000003D9
+_02247C90: .word 0x0000023E
+_02247C94: .word 0x02250528
+ thumb_func_end MOD18_02247BB8
+
+ thumb_func_start MOD18_02247C98
+MOD18_02247C98: ; 0x02247C98
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5, #0x20]
+ bl FUN_02001204
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD18_02248FEC
+ bl FUN_020311F0
+ cmp r0, #0
+ beq _02247CCC
+ add r0, r5, #0
+ mov r1, #3
+ add r0, #0x37
+ strb r1, [r0]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD18_02247FC0
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_02247CCC:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _02247CDA
+ add r0, r0, #1
+ cmp r4, r0
+ bne _02247CE0
+_02247CDA:
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, r5, r6, pc}
+_02247CE0:
+ ldr r0, _02247D18 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, sp, #0
+ strb r4, [r0]
+ ldrh r1, [r5, #0x30]
+ strb r1, [r0, #1]
+ mov r1, #0
+ strb r1, [r0, #2]
+ mov r0, #0x4f
+ add r1, sp, #0
+ bl FUN_020311D0
+ add r0, r5, #0
+ add r0, #0x32
+ strb r4, [r0]
+ add r0, r5, #0
+ mov r1, #0x1e
+ add r0, #0x37
+ strb r1, [r0]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD18_02247FC0
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02247D18: .word 0x000005DC
+ thumb_func_end MOD18_02247C98
+
+ thumb_func_start MOD18_02247D1C
+MOD18_02247D1C: ; 0x02247D1C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ mov r0, #4
+ add r1, r0, #0
+ bl FUN_02012838
+ str r0, [r5, #0x1c]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _02247DC8 ; =0x000002AD
+ add r1, r5, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #8]
+ add r1, #0xc
+ ldr r0, [r0, #8]
+ mov r2, #3
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _02247DCC ; =0x000003D9
+ add r0, #0xc
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ ldr r2, _02247DD0 ; =0x0000023D
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #4
+ bl FUN_0200A86C
+ add r6, r0, #0
+ mov r4, #0
+_02247D6C:
+ add r2, r5, #0
+ add r2, #0x32
+ ldrb r2, [r2]
+ ldr r0, [r5, #0x1c]
+ add r1, r6, #0
+ lsl r2, r2, #2
+ add r2, r4, r2
+ add r3, r4, #0
+ bl FUN_02012880
+ add r4, r4, #1
+ cmp r4, #4
+ blt _02247D6C
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ ldr r4, _02247DD4 ; =0x02250528
+ add r3, sp, #0x14
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5, #0x1c]
+ mov r1, #0
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r0, #0xc
+ str r0, [sp, #0x20]
+ add r0, r2, #0
+ strh r1, [r5, #0x3a]
+ add r2, r1, #0
+ mov r3, #4
+ bl FUN_020010A8
+ str r0, [r5, #0x20]
+ add r5, #0xc
+ add r0, r5, #0
+ bl FUN_020191D0
+ add sp, #0x34
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02247DC8: .word 0x000002AD
+_02247DCC: .word 0x000003D9
+_02247DD0: .word 0x0000023D
+_02247DD4: .word 0x02250528
+ thumb_func_end MOD18_02247D1C
+
+ thumb_func_start MOD18_02247DD8
+MOD18_02247DD8: ; 0x02247DD8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5, #0x20]
+ bl FUN_02001204
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD18_02248FEC
+ bl FUN_020311F0
+ cmp r0, #0
+ beq _02247E0A
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD18_02247FC0
+ mov r0, #3
+ add r5, #0x37
+ strb r0, [r5]
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_02247E0A:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _02247E18
+ add r0, r0, #1
+ cmp r4, r0
+ bne _02247E1E
+_02247E18:
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, r5, r6, pc}
+_02247E1E:
+ ldr r0, _02247E9C ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD18_02247FC0
+ add r0, r5, #0
+ add r0, #0x32
+ ldrb r0, [r0]
+ lsl r0, r0, #2
+ add r1, r4, r0
+ add r0, sp, #0
+ strb r1, [r0]
+ ldrh r1, [r5, #0x30]
+ strb r1, [r0, #1]
+ mov r1, #2
+ strb r1, [r0, #2]
+ mov r0, #0x4f
+ add r1, sp, #0
+ bl FUN_020311D0
+ bl MOD18_0223D638
+ add r1, sp, #0
+ ldrb r1, [r1]
+ bl MOD18_0224DE18
+ bl MOD18_0223D638
+ add r2, r5, #0
+ add r2, #0x33
+ ldrb r2, [r2]
+ mov r1, #6
+ bl MOD18_0224DE30
+ add r0, r5, #0
+ add r0, #0x33
+ ldrb r1, [r0]
+ add r0, sp, #0
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne _02247E7E
+ add r0, r5, #0
+ mov r1, #0x8d
+ bl MOD18_022479E4
+ b _02247E86
+_02247E7E:
+ add r0, r5, #0
+ mov r1, #0x8c
+ bl MOD18_022479E4
+_02247E86:
+ add r0, r5, #0
+ mov r1, #0x24
+ add r0, #0x37
+ strb r1, [r0]
+ add r0, r5, #0
+ mov r1, #0x1b
+ bl MOD18_022479D0
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02247E9C: .word 0x000005DC
+ thumb_func_end MOD18_02247DD8
+
+ thumb_func_start MOD18_02247EA0
+MOD18_02247EA0: ; 0x02247EA0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl MOD18_0223D638
+ add r5, r0, #0
+ ldrh r0, [r4, #0x30]
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD18_0224DDB8
+ bl MOD18_0223D638
+ add r1, r4, #0
+ add r1, #0x2a
+ ldrb r1, [r1]
+ bl MOD18_0224DE44
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0xe
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, [r4, #8]
+ bl FUN_020377AC
+ bl FUN_02026CB4
+ bl FUN_02026940
+ add r4, #0x2a
+ ldrb r0, [r4]
+ bl MOD18_022493A4
+ ldr r0, _02247EF4 ; =0x000005E3
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+ nop
+_02247EF4: .word 0x000005E3
+ thumb_func_end MOD18_02247EA0
+
+ thumb_func_start MOD18_02247EF8
+MOD18_02247EF8: ; 0x02247EF8
+ push {r4, lr}
+ add r4, r1, #0
+ bl MOD18_0223D638
+ add r1, r4, #0
+ bl MOD18_0224DE44
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0xc
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02247EF8
+
+ thumb_func_start MOD18_02247F18
+MOD18_02247F18: ; 0x02247F18
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x24]
+ mov r1, #4
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02247F5A
+ cmp r0, #0
+ bne _02247F46
+ ldrh r1, [r4, #0x30]
+ add r0, r4, #0
+ add r0, #0x28
+ strb r1, [r0]
+ add r1, r4, #0
+ mov r0, #0x4d
+ add r1, #0x28
+ bl FUN_020311D0
+ mov r1, #0x15
+ b _02247F50
+_02247F46:
+ add r0, r4, #0
+ mov r1, #0xb
+ bl MOD18_022479E4
+ mov r1, #0xf
+_02247F50:
+ add r0, r4, #0
+ add r0, #0x37
+ strb r1, [r0]
+ mov r0, #0
+ str r0, [r4, #0x24]
+_02247F5A:
+ pop {r4, pc}
+ thumb_func_end MOD18_02247F18
+
+ thumb_func_start MOD18_02247F5C
+MOD18_02247F5C: ; 0x02247F5C
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5, #0x20]
+ bl FUN_02001204
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD18_02248FEC
+ bl FUN_020311F0
+ cmp r0, #0
+ beq _02247F7C
+ mov r4, #1
+ mvn r4, r4
+_02247F7C:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _02247F8E
+ add r0, r0, #1
+ cmp r4, r0
+ bne _02247FA4
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_02247F8E:
+ ldr r0, _02247FBC ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ bl MOD18_0224865C
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD18_02247FC0
+ b _02247FB6
+_02247FA4:
+ ldr r0, _02247FBC ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ blx r4
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD18_02247FC0
+_02247FB6:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ nop
+_02247FBC: .word 0x000005DC
+ thumb_func_end MOD18_02247F5C
+
+ thumb_func_start MOD18_02247FC0
+MOD18_02247FC0: ; 0x02247FC0
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _02247FF8
+ add r0, r4, #0
+ add r0, #0xc
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r1, #0
+ ldr r0, [r4, #0x20]
+ add r2, r1, #0
+ bl FUN_02001300
+ add r0, r4, #0
+ add r0, #0xc
+ bl FUN_02019570
+ add r0, r4, #0
+ add r0, #0xc
+ bl FUN_02019178
+ ldr r0, [r4, #0x1c]
+ bl FUN_02012870
+ mov r0, #0
+ str r0, [r4, #0x1c]
+_02247FF8:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02247FC0
+
+ thumb_func_start MOD18_02247FFC
+MOD18_02247FFC: ; 0x02247FFC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #5
+ bl MOD18_022479D0
+ add r0, r4, #0
+ mov r1, #7
+ bl MOD18_022479E4
+ mov r0, #5
+ add r4, #0x37
+ strb r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02247FFC
+
+ thumb_func_start MOD18_02248018
+MOD18_02248018: ; 0x02248018
+ push {r4, lr}
+ mov r1, #0x16
+ add r4, r0, #0
+ bl MOD18_022479D0
+ mov r0, #0x1b
+ add r4, #0x37
+ strb r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02248018
+
+ thumb_func_start MOD18_0224802C
+MOD18_0224802C: ; 0x0224802C
+ mov r1, #0x10
+ add r0, #0x37
+ strb r1, [r0]
+ bx lr
+ thumb_func_end MOD18_0224802C
+
+ thumb_func_start MOD18_02248034
+MOD18_02248034: ; 0x02248034
+ ldr r1, _02248048 ; =0x022513F0
+ ldr r2, [r1, #4]
+ add r2, #0x2a
+ strb r0, [r2]
+ ldr r0, [r1, #4]
+ mov r2, #0x12
+ add r0, #0x37
+ strb r2, [r0]
+ bx lr
+ nop
+_02248048: .word 0x022513F0
+ thumb_func_end MOD18_02248034
+
+ thumb_func_start MOD18_0224804C
+MOD18_0224804C: ; 0x0224804C
+ mov r1, #0xb
+ add r0, #0x37
+ strb r1, [r0]
+ bx lr
+ thumb_func_end MOD18_0224804C
+
+ thumb_func_start MOD18_02248054
+MOD18_02248054: ; 0x02248054
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0x37
+ ldrb r0, [r0]
+ cmp r0, #0x11
+ beq _02248080
+ ldrh r0, [r4, #0x30]
+ bl FUN_02030E7C
+ cmp r0, #0
+ bne _02248080
+ mov r0, #0
+ str r0, [r4, #4]
+ bl MOD18_0224D344
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x37
+ strb r1, [r0]
+_02248080:
+ add r0, r4, #0
+ add r0, #0x37
+ ldrb r0, [r0]
+ cmp r0, #0x29
+ bhi _02248134
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02248096: ; jump table
+ .short _022485F6 - _02248096 - 2 ; case 0
+ .short _022480EA - _02248096 - 2 ; case 1
+ .short _0224810C - _02248096 - 2 ; case 2
+ .short _02248116 - _02248096 - 2 ; case 3
+ .short _02248116 - _02248096 - 2 ; case 4
+ .short _02248128 - _02248096 - 2 ; case 5
+ .short _02248174 - _02248096 - 2 ; case 6
+ .short _02248186 - _02248096 - 2 ; case 7
+ .short _02248162 - _02248096 - 2 ; case 8
+ .short _022481A6 - _02248096 - 2 ; case 9
+ .short _022485F6 - _02248096 - 2 ; case 10
+ .short _022481D8 - _02248096 - 2 ; case 11
+ .short _022481FC - _02248096 - 2 ; case 12
+ .short _0224821A - _02248096 - 2 ; case 13
+ .short _0224822E - _02248096 - 2 ; case 14
+ .short _02248240 - _02248096 - 2 ; case 15
+ .short _02248262 - _02248096 - 2 ; case 16
+ .short _022485F6 - _02248096 - 2 ; case 17
+ .short _02248276 - _02248096 - 2 ; case 18
+ .short _0224830C - _02248096 - 2 ; case 19
+ .short _02248348 - _02248096 - 2 ; case 20
+ .short _02248352 - _02248096 - 2 ; case 21
+ .short _022483BC - _02248096 - 2 ; case 22
+ .short _02248398 - _02248096 - 2 ; case 23
+ .short _022483AA - _02248096 - 2 ; case 24
+ .short _022483F6 - _02248096 - 2 ; case 25
+ .short _02248400 - _02248096 - 2 ; case 26
+ .short _02248420 - _02248096 - 2 ; case 27
+ .short _02248432 - _02248096 - 2 ; case 28
+ .short _0224844E - _02248096 - 2 ; case 29
+ .short _02248458 - _02248096 - 2 ; case 30
+ .short _02248478 - _02248096 - 2 ; case 31
+ .short _0224849A - _02248096 - 2 ; case 32
+ .short _022484F4 - _02248096 - 2 ; case 33
+ .short _0224851C - _02248096 - 2 ; case 34
+ .short _02248538 - _02248096 - 2 ; case 35
+ .short _02248542 - _02248096 - 2 ; case 36
+ .short _0224856E - _02248096 - 2 ; case 37
+ .short _0224858E - _02248096 - 2 ; case 38
+ .short _022485AA - _02248096 - 2 ; case 39
+ .short _022485C6 - _02248096 - 2 ; case 40
+ .short _022485E4 - _02248096 - 2 ; case 41
+_022480EA:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248134
+ add r0, r4, #0
+ bl MOD18_02247AA8
+ add r0, r4, #0
+ add r0, #0x37
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_0224810C:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02247F5C
+ b _022485F6
+_02248116:
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02247B60
+ b _022485F6
+_02248128:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ beq _02248136
+_02248134:
+ b _022485F6
+_02248136:
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #9
+ bne _0224814E
+ add r0, r4, #0
+ mov r1, #9
+ add r0, #0x37
+ strb r1, [r0]
+ ldrh r0, [r4, #0x30]
+ bl MOD18_0224D698
+_0224814E:
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #6
+ bne _02248256
+ add r0, r4, #0
+ mov r1, #6
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_02248162:
+ add r0, r4, #0
+ mov r1, #0xf
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #7
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_02248174:
+ add r0, r4, #0
+ mov r1, #8
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #7
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_02248186:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248256
+ ldr r0, _022484C0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _02248256
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_022481A6:
+ bl MOD18_0224D774
+ cmp r0, #0
+ beq _02248256
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ ldrh r0, [r4, #0x30]
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r4, #8]
+ ldr r2, _022484C4 ; =MOD18_0224804C
+ ldr r0, [r0, #8]
+ add r3, r4, #0
+ bl MOD18_0224D5CC
+ add r0, r4, #0
+ mov r1, #0xa
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_022481D8:
+ ldr r0, [r4, #8]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x20
+ bl FUN_0202A170
+ bl MOD18_0224D784
+ add r0, r4, #0
+ mov r1, #9
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #0xc
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_022481FC:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248256
+ add r0, r4, #0
+ mov r1, #0xe
+ bl MOD18_022479D0
+ add r0, r4, #0
+ mov r1, #0xd
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_0224821A:
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #0xd
+ bne _02248256
+ add r0, r4, #0
+ mov r1, #0xe
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_0224822E:
+ add r0, r4, #0
+ mov r1, #0xa
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_02248240:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248256
+ ldr r0, _022484C0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ bne _02248258
+_02248256:
+ b _022485F6
+_02248258:
+ add r0, r4, #0
+ mov r1, #0xe
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_02248262:
+ ldr r0, _022484C8 ; =MOD18_02248034
+ ldr r1, [r4, #8]
+ bl MOD18_0224AF28
+ str r0, [r4, #4]
+ add r0, r4, #0
+ mov r1, #0x11
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_02248276:
+ mov r0, #0
+ str r0, [r4, #4]
+ ldr r0, _022484CC ; =0x022513F0
+ ldr r0, [r0, #4]
+ add r0, #0x2a
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02248298
+ add r0, r4, #0
+ mov r1, #0xb
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #0xf
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_02248298:
+ ldrh r0, [r4, #0x30]
+ bl FUN_0202E068
+ cmp r0, #0
+ beq _022482B4
+ add r0, r4, #0
+ mov r1, #0x57
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #0xf
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_022482B4:
+ ldr r0, [r4, #8]
+ ldr r0, [r0, #0xc]
+ bl FUN_02025C18
+ cmp r0, #0
+ bne _022482D2
+ add r0, r4, #0
+ mov r1, #0x57
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #0xf
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_022482D2:
+ ldr r0, _022484CC ; =0x022513F0
+ ldr r0, [r0, #4]
+ add r0, #0x2a
+ ldrb r0, [r0]
+ bl FUN_0204CB10
+ cmp r0, #0
+ beq _022482F4
+ add r0, r4, #0
+ mov r1, #0x56
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #0xf
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_022482F4:
+ ldr r1, _022484CC ; =0x022513F0
+ add r0, r4, #0
+ ldr r1, [r1, #4]
+ add r1, #0x2a
+ ldrb r1, [r1]
+ bl MOD18_02247EF8
+ add r0, r4, #0
+ mov r1, #0x13
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_0224830C:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224838C
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r4, #8]
+ ldr r1, _022484D0 ; =0x02250520
+ ldr r0, [r0, #8]
+ ldr r2, _022484D4 ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r4, #0x24]
+ add r0, r4, #0
+ mov r1, #0x14
+ add r0, #0x37
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #8
+ beq _0224838C
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x38
+ strb r1, [r0]
+ b _022485F6
+_02248348:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02247F18
+ b _022485F6
+_02248352:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224838C
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #0x16
+ bne _02248370
+ add r0, r4, #0
+ mov r1, #0x16
+ add r0, #0x37
+ strb r1, [r0]
+_02248370:
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #0x18
+ bne _02248382
+ add r0, r4, #0
+ mov r1, #0x18
+ add r0, #0x37
+ strb r1, [r0]
+_02248382:
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #0x17
+ beq _0224838E
+_0224838C:
+ b _022485F6
+_0224838E:
+ add r0, r4, #0
+ mov r1, #0x17
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_02248398:
+ add r0, r4, #0
+ mov r1, #0x1e
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #0x1a
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_022483AA:
+ add r0, r4, #0
+ mov r1, #0xd
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #0x1a
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_022483BC:
+ add r0, r4, #0
+ bl MOD18_02247EA0
+ ldr r0, [r4, #8]
+ ldr r0, [r0, #0xc]
+ bl FUN_020462AC
+ add r6, r0, #0
+ bl FUN_0205F720
+ add r1, r0, #0
+ add r1, r1, #1
+ lsl r1, r1, #0x10
+ add r0, r6, #0
+ lsr r1, r1, #0x10
+ bl FUN_0205F730
+ ldr r0, [r4, #8]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x1f
+ bl FUN_0202A170
+ add r0, r4, #0
+ mov r1, #0x19
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_022483F6:
+ add r0, r4, #0
+ mov r1, #0x1a
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_02248400:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224848E
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #0xf
+ bne _0224848E
+ add r0, r4, #0
+ mov r1, #0xe
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_02248420:
+ add r0, r4, #0
+ mov r1, #0x88
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #0x1c
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_02248432:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224848E
+ add r0, r4, #0
+ bl MOD18_02247BB8
+ add r0, r4, #0
+ mov r1, #0x1d
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_0224844E:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02247C98
+ b _022485F6
+_02248458:
+ bl MOD18_0223D638
+ add r1, r4, #0
+ add r1, #0x32
+ ldrb r1, [r1]
+ bl MOD18_0224DE00
+ add r0, r4, #0
+ mov r1, #0x89
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #0x1f
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_02248478:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224848E
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #0x20
+ beq _02248490
+_0224848E:
+ b _022485F6
+_02248490:
+ add r0, r4, #0
+ mov r1, #0x20
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_0224849A:
+ add r0, r4, #0
+ add r0, #0x33
+ ldrb r6, [r0]
+ cmp r6, #0x33
+ bne _022484D8
+ add r0, r4, #0
+ mov r1, #0x8b
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x38
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x21
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+ nop
+_022484C0: .word 0x021C48B8
+_022484C4: .word MOD18_0224804C
+_022484C8: .word MOD18_02248034
+_022484CC: .word 0x022513F0
+_022484D0: .word 0x02250520
+_022484D4: .word 0x000003D9
+_022484D8:
+ bl MOD18_0223D638
+ add r1, r6, #0
+ bl MOD18_0224DE18
+ add r0, r4, #0
+ mov r1, #0x8a
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #0x22
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_022484F4:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _022485F6
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #0x2a
+ bne _022485F6
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x38
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0xe
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_0224851C:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _022485F6
+ add r0, r4, #0
+ bl MOD18_02247D1C
+ add r0, r4, #0
+ mov r1, #0x23
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_02248538:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02247DD8
+ b _022485F6
+_02248542:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _022485F6
+ ldr r0, [r4, #8]
+ ldr r0, [r0, #0xc]
+ bl FUN_02029FC8
+ mov r1, #0x21
+ bl FUN_0202A170
+ add r0, r4, #0
+ mov r1, #0x8e
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #0x25
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_0224856E:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _022485F6
+ ldr r0, _02248658 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _022485F6
+ add r0, r4, #0
+ mov r1, #0x26
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_0224858E:
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #0x25
+ bne _022485F6
+ add r0, r4, #0
+ mov r1, #0x64
+ bl MOD18_022479D0
+ add r0, r4, #0
+ mov r1, #0x27
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_022485AA:
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #0x64
+ bne _022485F6
+ add r0, r4, #0
+ mov r1, #0x96
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #0x28
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_022485C6:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _022485F6
+ add r0, r4, #0
+ mov r1, #0x65
+ bl MOD18_022479D0
+ add r0, r4, #0
+ mov r1, #0x29
+ add r0, #0x37
+ strb r1, [r0]
+ b _022485F6
+_022485E4:
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #0x65
+ bne _022485F6
+ add r0, r4, #0
+ mov r1, #0xe
+ add r0, #0x37
+ strb r1, [r0]
+_022485F6:
+ add r0, r4, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #8
+ bne _02248652
+ add r0, r4, #0
+ add r0, #0x37
+ ldrb r0, [r0]
+ cmp r0, #4
+ beq _02248652
+ cmp r0, #7
+ beq _02248652
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _0224861E
+ mov r1, #4
+ bl FUN_020021EC
+ mov r0, #0
+ str r0, [r4, #0x24]
+_0224861E:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _0224863C
+ mov r1, #1
+ mvn r1, r1
+ bl MOD18_0224ADBC
+ bl MOD18_0223E6A0
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+ mov r0, #0
+ str r0, [r4, #4]
+_0224863C:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02247FC0
+ add r0, r4, #0
+ mov r1, #8
+ add r0, #0x37
+ strb r1, [r0]
+ mov r0, #0
+ add r4, #0x38
+ strb r0, [r4]
+_02248652:
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02248658: .word 0x021C48B8
+ thumb_func_end MOD18_02248054
+
+ thumb_func_start MOD18_0224865C
+MOD18_0224865C: ; 0x0224865C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0xf
+ bl MOD18_022479E4
+ add r0, r4, #0
+ mov r1, #8
+ bl MOD18_022479D0
+ mov r0, #7
+ add r4, #0x37
+ strb r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224865C
+
+ thumb_func_start MOD18_02248678
+MOD18_02248678: ; 0x02248678
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x20]
+ mov r1, #4
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _022486B6
+ cmp r0, #0
+ bne _022486A2
+ add r0, r4, #0
+ mov r1, #9
+ bl MOD18_022479BC
+ ldrh r0, [r4, #0x2c]
+ bl MOD18_0224D698
+ mov r1, #0xa
+ b _022486AC
+_022486A2:
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD18_022479BC
+ mov r1, #8
+_022486AC:
+ add r0, r4, #0
+ add r0, #0x34
+ strb r1, [r0]
+ mov r0, #0
+ str r0, [r4, #0x20]
+_022486B6:
+ pop {r4, pc}
+ thumb_func_end MOD18_02248678
+
+ thumb_func_start MOD18_022486B8
+MOD18_022486B8: ; 0x022486B8
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x20]
+ mov r1, #4
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0224873A
+ cmp r0, #0
+ bne _0224871E
+ add r0, r4, #0
+ add r0, #0x26
+ ldrb r0, [r0]
+ bl MOD18_022494B4
+ cmp r0, #0
+ beq _02248704
+ ldr r0, [r4, #4]
+ bl FUN_020377AC
+ bl FUN_02026CB4
+ bl FUN_02026B90
+ ldr r0, _0224873C ; =0x000005E3
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0x16
+ bl MOD18_022479BC
+ add r0, r4, #0
+ mov r1, #0x13
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248736
+_02248704:
+ add r0, r4, #0
+ mov r1, #0x17
+ bl MOD18_022479BC
+ add r0, r4, #0
+ mov r1, #0x15
+ bl MOD18_02247A0C
+ add r0, r4, #0
+ mov r1, #0x15
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248736
+_0224871E:
+ add r0, r4, #0
+ mov r1, #0x18
+ bl MOD18_022479BC
+ add r0, r4, #0
+ mov r1, #0x1d
+ bl MOD18_02247A0C
+ add r0, r4, #0
+ mov r1, #0x15
+ add r0, #0x34
+ strb r1, [r0]
+_02248736:
+ mov r0, #0
+ str r0, [r4, #0x20]
+_0224873A:
+ pop {r4, pc}
+ .align 2, 0
+_0224873C: .word 0x000005E3
+ thumb_func_end MOD18_022486B8
+
+ thumb_func_start MOD18_02248740
+MOD18_02248740: ; 0x02248740
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ beq _02248756
+ mov r1, #4
+ bl FUN_020021EC
+ mov r0, #0
+ str r0, [r4, #0x20]
+_02248756:
+ ldr r1, [r4, #0x28]
+ cmp r1, #0
+ beq _02248760
+ mov r0, #0
+ blx r1
+_02248760:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02248784
+ add r0, r4, #0
+ bl FUN_02016A18
+ bl FUN_0204F7FC
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, _02248780 ; =0x022513F0
+ mov r1, #0
+ str r1, [r0]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02248780: .word 0x022513F0
+ thumb_func_end MOD18_02248740
+
+ thumb_func_start MOD18_02248784
+MOD18_02248784: ; 0x02248784
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ beq _022487BC
+ add r0, r4, #0
+ add r0, #8
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r1, #0
+ ldr r0, [r4, #0x1c]
+ add r2, r1, #0
+ bl FUN_02001300
+ add r0, r4, #0
+ add r0, #8
+ bl FUN_02019570
+ add r0, r4, #0
+ add r0, #8
+ bl FUN_02019178
+ ldr r0, [r4, #0x18]
+ bl FUN_02012870
+ mov r0, #0
+ str r0, [r4, #0x18]
+_022487BC:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02248784
+
+ thumb_func_start MOD18_022487C0
+MOD18_022487C0: ; 0x022487C0
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r2, #0
+ bl MOD18_0223D638
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD18_0224DDB8
+ bl MOD18_0223D638
+ mov r2, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD18_022487C0
+
+ thumb_func_start MOD18_022487EC
+MOD18_022487EC: ; 0x022487EC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD18_0223D638
+ add r4, r0, #0
+ ldrh r0, [r5, #0x2c]
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD18_0224DDB8
+ bl MOD18_0223D638
+ add r5, #0x26
+ ldrb r1, [r5]
+ bl MOD18_0224DE44
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x1f
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_022487EC
+
+ thumb_func_start MOD18_02248820
+MOD18_02248820: ; 0x02248820
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ mov r0, #5
+ mov r1, #4
+ bl FUN_02012838
+ str r0, [r5, #0x18]
+ mov r3, #1
+ add r1, r5, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0xa
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _022488E0 ; =0x0000028D
+ add r1, #8
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ mov r2, #3
+ ldr r0, [r0, #8]
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _022488E4 ; =0x000003D9
+ add r0, #8
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ ldr r2, _022488E8 ; =0x0000023D
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #4
+ bl FUN_0200A86C
+ add r6, r0, #0
+ mov r4, #0
+_02248870:
+ add r2, r5, #0
+ add r2, #0x2e
+ ldrb r2, [r2]
+ ldr r0, [r5, #0x18]
+ add r1, r6, #0
+ lsl r2, r2, #2
+ add r2, r4, r2
+ add r3, r4, #0
+ bl FUN_02012880
+ add r4, r4, #1
+ cmp r4, #4
+ blt _02248870
+ ldr r0, [r5, #0x18]
+ add r1, r6, #0
+ mov r2, #0x30
+ mov r3, #0x33
+ bl FUN_02012880
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ ldr r4, _022488EC ; =0x02250528
+ add r3, sp, #0x14
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5, #0x18]
+ mov r1, #5
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r0, #8
+ str r0, [sp, #0x20]
+ add r0, sp, #0x14
+ strh r1, [r0, #0x10]
+ strh r1, [r0, #0x12]
+ mov r1, #0
+ add r0, r2, #0
+ strh r1, [r5, #0x36]
+ add r2, r1, #0
+ mov r3, #4
+ bl FUN_020010A8
+ str r0, [r5, #0x1c]
+ add r5, #8
+ add r0, r5, #0
+ bl FUN_020191D0
+ add sp, #0x34
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_022488E0: .word 0x0000028D
+_022488E4: .word 0x000003D9
+_022488E8: .word 0x0000023D
+_022488EC: .word 0x02250528
+ thumb_func_end MOD18_02248820
+
+ thumb_func_start MOD18_022488F0
+MOD18_022488F0: ; 0x022488F0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r7, r0, #0
+ ldr r0, [r5, #0x1c]
+ bl FUN_02001204
+ add r4, r0, #0
+ add r1, r5, #0
+ ldr r0, [r5, #0x1c]
+ add r1, #0x36
+ ldrh r6, [r5, #0x36]
+ bl FUN_0200143C
+ ldrh r0, [r5, #0x36]
+ cmp r6, r0
+ beq _02248916
+ ldr r0, _022489C0 ; =0x000005DC
+ bl FUN_020054C8
+_02248916:
+ bl FUN_020311F0
+ cmp r0, #0
+ beq _02248922
+ mov r4, #1
+ mvn r4, r4
+_02248922:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _02248934
+ add r0, r0, #1
+ cmp r4, r0
+ bne _02248936
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02248934:
+ mov r4, #0x33
+_02248936:
+ ldr r0, _022489C0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD18_02248784
+ cmp r4, #0x33
+ beq _02248978
+ add r0, r5, #0
+ add r0, #0x2e
+ ldrb r0, [r0]
+ lsl r0, r0, #2
+ add r1, r4, r0
+ add r0, r5, #0
+ add r0, #0x2f
+ strb r1, [r0]
+ add r0, r5, #0
+ mov r1, #0x1a
+ add r0, #0x34
+ strb r1, [r0]
+ bl MOD18_0223D638
+ add r1, r5, #0
+ add r1, #0x2f
+ ldrb r1, [r1]
+ bl MOD18_0224DE18
+ add r0, r5, #0
+ mov r1, #0x92
+ bl MOD18_02247A0C
+ b _02248998
+_02248978:
+ add r0, r5, #0
+ mov r1, #0x33
+ add r0, #0x2f
+ strb r1, [r0]
+ add r0, r5, #0
+ mov r1, #0x10
+ add r0, #0x34
+ strb r1, [r0]
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x35
+ strb r1, [r0]
+ add r0, r5, #0
+ mov r1, #0x91
+ bl MOD18_02247A0C
+_02248998:
+ add r0, r5, #0
+ add r0, #0x2f
+ ldrb r1, [r0]
+ add r0, sp, #0
+ strb r1, [r0]
+ ldrh r1, [r5, #0x2c]
+ strb r1, [r0, #1]
+ mov r1, #1
+ strb r1, [r0, #2]
+ mov r0, #0x4f
+ add r1, sp, #0
+ bl FUN_020311D0
+ add r0, r5, #0
+ mov r1, #0x20
+ bl MOD18_022479BC
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022489C0: .word 0x000005DC
+ thumb_func_end MOD18_022488F0
+
+ thumb_func_start MOD18_022489C4
+MOD18_022489C4: ; 0x022489C4
+ mov r1, #0xc
+ add r0, #0x34
+ strb r1, [r0]
+ bx lr
+ thumb_func_end MOD18_022489C4
+
+ thumb_func_start MOD18_022489CC
+MOD18_022489CC: ; 0x022489CC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrh r0, [r4, #0x2c]
+ bl FUN_02030E7C
+ cmp r0, #0
+ bne _022489EA
+ bl MOD18_0224D344
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x34
+ strb r1, [r0]
+_022489EA:
+ add r0, r4, #0
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, #0x20
+ bls _022489F6
+ b _02248DB6
+_022489F6:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02248A02: ; jump table
+ .short _02248DB6 - _02248A02 - 2 ; case 0
+ .short _02248DB6 - _02248A02 - 2 ; case 1
+ .short _02248A56 - _02248A02 - 2 ; case 2
+ .short _02248DB6 - _02248A02 - 2 ; case 3
+ .short _02248A44 - _02248A02 - 2 ; case 4
+ .short _02248A9C - _02248A02 - 2 ; case 5
+ .short _02248AAE - _02248A02 - 2 ; case 6
+ .short _02248AD8 - _02248A02 - 2 ; case 7
+ .short _02248AE2 - _02248A02 - 2 ; case 8
+ .short _02248AF4 - _02248A02 - 2 ; case 9
+ .short _02248B14 - _02248A02 - 2 ; case 10
+ .short _02248DB6 - _02248A02 - 2 ; case 11
+ .short _02248B46 - _02248A02 - 2 ; case 12
+ .short _02248B5E - _02248A02 - 2 ; case 13
+ .short _02248B7C - _02248A02 - 2 ; case 14
+ .short _02248B92 - _02248A02 - 2 ; case 15
+ .short _02248BA4 - _02248A02 - 2 ; case 16
+ .short _02248BC2 - _02248A02 - 2 ; case 17
+ .short _02248BEC - _02248A02 - 2 ; case 18
+ .short _02248BF6 - _02248A02 - 2 ; case 19
+ .short _02248C06 - _02248A02 - 2 ; case 20
+ .short _02248C10 - _02248A02 - 2 ; case 21
+ .short _02248C38 - _02248A02 - 2 ; case 22
+ .short _02248C50 - _02248A02 - 2 ; case 23
+ .short _02248C82 - _02248A02 - 2 ; case 24
+ .short _02248CA0 - _02248A02 - 2 ; case 25
+ .short _02248CAA - _02248A02 - 2 ; case 26
+ .short _02248CD2 - _02248A02 - 2 ; case 27
+ .short _02248D1C - _02248A02 - 2 ; case 28
+ .short _02248D3A - _02248A02 - 2 ; case 29
+ .short _02248D50 - _02248A02 - 2 ; case 30
+ .short _02248D74 - _02248A02 - 2 ; case 31
+ .short _02248D9C - _02248A02 - 2 ; case 32
+_02248A44:
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02248740
+ b _02248DB6
+_02248A56:
+ add r0, r4, #0
+ mov r1, #0xc
+ add r0, #0x2e
+ strb r1, [r0]
+ ldr r0, _02248D8C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #2
+ tst r0, r1
+ beq _02248A7A
+ add r0, r4, #0
+ mov r1, #8
+ bl MOD18_022479BC
+ add r0, r4, #0
+ mov r1, #8
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248A7A:
+ add r0, r4, #0
+ add r0, #0x35
+ ldrb r0, [r0]
+ cmp r0, #5
+ bne _02248A8E
+ add r0, r4, #0
+ mov r1, #5
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248A8E:
+ cmp r0, #0x16
+ bne _02248B86
+ add r0, r4, #0
+ mov r1, #0x16
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248A9C:
+ add r0, r4, #0
+ mov r1, #0x18
+ bl MOD18_02247A0C
+ add r0, r4, #0
+ mov r1, #6
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248AAE:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248B86
+ add r0, r4, #0
+ mov r1, #7
+ add r0, #0x34
+ strb r1, [r0]
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ ldr r1, _02248D90 ; =0x02250520
+ ldr r0, [r0, #8]
+ ldr r2, _02248D94 ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r4, #0x20]
+ b _02248DB6
+_02248AD8:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02248678
+ b _02248DB6
+_02248AE2:
+ add r0, r4, #0
+ mov r1, #0xf
+ bl MOD18_02247A0C
+ add r0, r4, #0
+ mov r1, #9
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248AF4:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248B86
+ ldr r0, _02248D8C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _02248B86
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248B14:
+ bl MOD18_0224D774
+ cmp r0, #0
+ beq _02248B86
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ ldrh r0, [r4, #0x2c]
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ ldr r2, _02248D98 ; =MOD18_022489C4
+ ldr r0, [r0, #8]
+ add r3, r4, #0
+ bl MOD18_0224D5CC
+ add r0, r4, #0
+ mov r1, #0xb
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248B46:
+ bl MOD18_0224D784
+ ldrh r1, [r4, #0x2c]
+ add r0, r4, #0
+ mov r2, #0x1a
+ bl MOD18_022487C0
+ add r0, r4, #0
+ mov r1, #0xd
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248B5E:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248B86
+ add r0, r4, #0
+ mov r1, #0xd
+ bl MOD18_022479BC
+ add r0, r4, #0
+ mov r1, #0xe
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248B7C:
+ add r0, r4, #0
+ add r0, #0x35
+ ldrb r0, [r0]
+ cmp r0, #0xe
+ beq _02248B88
+_02248B86:
+ b _02248DB6
+_02248B88:
+ add r0, r4, #0
+ mov r1, #0xf
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248B92:
+ add r0, r4, #0
+ mov r1, #0x1b
+ bl MOD18_02247A0C
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248BA4:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248C8E
+ add r0, r4, #0
+ mov r1, #0xf
+ add r0, #0x34
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x2a
+ bl MOD18_022479BC
+ b _02248DB6
+_02248BC2:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248C8E
+ add r0, r4, #0
+ mov r1, #0x12
+ add r0, #0x34
+ strb r1, [r0]
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ ldr r1, _02248D90 ; =0x02250520
+ ldr r0, [r0, #8]
+ ldr r2, _02248D94 ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r4, #0x20]
+ b _02248DB6
+_02248BEC:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_022486B8
+ b _02248DB6
+_02248BF6:
+ add r0, r4, #0
+ bl MOD18_022487EC
+ add r0, r4, #0
+ mov r1, #0x14
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248C06:
+ add r0, r4, #0
+ mov r1, #0x15
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248C10:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248C8E
+ ldr r0, _02248D8C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _02248C8E
+ add r0, r4, #0
+ mov r1, #0xf
+ bl MOD18_022479BC
+ add r0, r4, #0
+ mov r1, #0xf
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248C38:
+ add r0, r4, #0
+ mov r1, #0x8f
+ bl MOD18_02247A0C
+ add r0, r4, #0
+ add r0, #0x34
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248C50:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248C8E
+ add r0, r4, #0
+ add r0, #0x2e
+ ldrb r6, [r0]
+ cmp r6, #0xc
+ beq _02248C8E
+ bl MOD18_0223D638
+ add r1, r6, #0
+ bl MOD18_0224DE00
+ add r0, r4, #0
+ mov r1, #0x90
+ bl MOD18_02247A0C
+ add r0, r4, #0
+ mov r1, #0x18
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248C82:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ beq _02248C90
+_02248C8E:
+ b _02248DB6
+_02248C90:
+ add r0, r4, #0
+ bl MOD18_02248820
+ add r0, r4, #0
+ mov r1, #0x19
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248CA0:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_022488F0
+ b _02248DB6
+_02248CAA:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248DB6
+ add r0, r4, #0
+ add r0, #0x35
+ ldrb r0, [r0]
+ cmp r0, #0x1b
+ bne _02248DB6
+ add r0, r4, #0
+ mov r1, #0x25
+ bl MOD18_022479BC
+ add r0, r4, #0
+ mov r1, #0x1b
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248CD2:
+ bl MOD18_0223D638
+ add r1, r4, #0
+ add r1, #0x30
+ ldrb r1, [r1]
+ bl MOD18_0224DE18
+ bl MOD18_0223D638
+ add r2, r4, #0
+ add r2, #0x2f
+ ldrb r2, [r2]
+ mov r1, #6
+ bl MOD18_0224DE30
+ add r0, r4, #0
+ add r0, #0x2f
+ ldrb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x30
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne _02248D0A
+ add r0, r4, #0
+ mov r1, #0x94
+ bl MOD18_02247A0C
+ b _02248D12
+_02248D0A:
+ add r0, r4, #0
+ mov r1, #0x93
+ bl MOD18_02247A0C
+_02248D12:
+ add r0, r4, #0
+ mov r1, #0x1c
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248D1C:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248DB6
+ add r0, r4, #0
+ mov r1, #0x95
+ bl MOD18_02247A0C
+ add r0, r4, #0
+ mov r1, #0x1d
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248D3A:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248DB6
+ add r0, r4, #0
+ mov r1, #0x1e
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248D50:
+ add r0, r4, #0
+ add r0, #0x35
+ ldrb r0, [r0]
+ cmp r0, #0x64
+ bne _02248DB6
+ add r0, r4, #0
+ mov r1, #0x64
+ bl MOD18_022479BC
+ add r0, r4, #0
+ mov r1, #0x96
+ bl MOD18_02247A0C
+ add r0, r4, #0
+ mov r1, #0x1f
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+_02248D74:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _02248DB6
+ add r0, r4, #0
+ mov r1, #0x20
+ add r0, #0x34
+ strb r1, [r0]
+ b _02248DB6
+ nop
+_02248D8C: .word 0x021C48B8
+_02248D90: .word 0x02250520
+_02248D94: .word 0x000003D9
+_02248D98: .word MOD18_022489C4
+_02248D9C:
+ add r0, r4, #0
+ add r0, #0x35
+ ldrb r0, [r0]
+ cmp r0, #0x65
+ bne _02248DB6
+ add r0, r4, #0
+ mov r1, #0x65
+ bl MOD18_022479BC
+ add r0, r4, #0
+ mov r1, #0xf
+ add r0, #0x34
+ strb r1, [r0]
+_02248DB6:
+ add r0, r4, #0
+ add r0, #0x35
+ ldrb r0, [r0]
+ cmp r0, #8
+ bne _02248DF4
+ add r0, r4, #0
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, #4
+ beq _02248DF4
+ cmp r0, #9
+ beq _02248DF4
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ beq _02248DDE
+ mov r1, #4
+ bl FUN_020021EC
+ mov r0, #0
+ str r0, [r4, #0x20]
+_02248DDE:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_02248784
+ add r0, r4, #0
+ mov r1, #8
+ add r0, #0x34
+ strb r1, [r0]
+ mov r0, #0
+ add r4, #0x35
+ strb r0, [r4]
+_02248DF4:
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD18_022489CC
+
+ thumb_func_start MOD18_02248DF8
+MOD18_02248DF8: ; 0x02248DF8
+ push {r4, r5, r6, lr}
+ ldr r0, _02248E60 ; =0x022513F0
+ add r5, r1, #0
+ ldr r0, [r0]
+ add r6, r2, #0
+ cmp r0, #0
+ beq _02248E0C
+ bl ErrorHandling
+ pop {r4, r5, r6, pc}
+_02248E0C:
+ mov r0, #0x21
+ mov r1, #0x38
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x38
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, _02248E60 ; =0x022513F0
+ mov r1, #2
+ str r4, [r0]
+ str r6, [r4, #4]
+ add r0, r4, #0
+ strh r5, [r4, #0x2c]
+ add r0, #0x34
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x35
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0xc
+ add r0, #0x2e
+ strb r1, [r0]
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x16
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ bl FUN_0204FB14
+ ldr r0, _02248E64 ; =MOD18_022489CC
+ ldr r2, _02248E68 ; =0x00002710
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4]
+ pop {r4, r5, r6, pc}
+ nop
+_02248E60: .word 0x022513F0
+_02248E64: .word MOD18_022489CC
+_02248E68: .word 0x00002710
+ thumb_func_end MOD18_02248DF8
+
+ thumb_func_start MOD18_02248E6C
+MOD18_02248E6C: ; 0x02248E6C
+ ldr r3, _02248E74 ; =0x02030C4D
+ mov r0, #0x4b
+ add r1, r2, #0
+ bx r3
+ .align 2, 0
+_02248E74: .word 0x02030C4D
+ thumb_func_end MOD18_02248E6C
+
+ thumb_func_start MOD18_02248E78
+MOD18_02248E78: ; 0x02248E78
+ ldr r3, _02248E80 ; =0x02030C4D
+ mov r0, #0x4c
+ add r1, r2, #0
+ bx r3
+ .align 2, 0
+_02248E80: .word 0x02030C4D
+ thumb_func_end MOD18_02248E78
+
+ thumb_func_start MOD18_02248E84
+MOD18_02248E84: ; 0x02248E84
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ add r5, r1, #0
+ bl FUN_02031190
+ ldrb r1, [r4]
+ cmp r1, r0
+ bne _02248EAE
+ ldr r0, _02248EB0 ; =0x022513F0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02248EAE
+ cmp r5, #2
+ beq _02248EA4
+ bl ErrorHandling
+_02248EA4:
+ ldr r0, _02248EB0 ; =0x022513F0
+ ldrb r1, [r4, #1]
+ ldr r0, [r0]
+ add r0, #0x35
+ strb r1, [r0]
+_02248EAE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02248EB0: .word 0x022513F0
+ thumb_func_end MOD18_02248E84
+
+ thumb_func_start MOD18_02248EB4
+MOD18_02248EB4: ; 0x02248EB4
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ add r5, r1, #0
+ bl FUN_02031190
+ ldrb r1, [r4]
+ cmp r1, r0
+ bne _02248EEA
+ ldr r0, _02248EEC ; =0x022513F0
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _02248EEA
+ cmp r5, #2
+ beq _02248ED4
+ bl ErrorHandling
+_02248ED4:
+ ldr r0, _02248EEC ; =0x022513F0
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ bne _02248EE0
+ bl ErrorHandling
+_02248EE0:
+ ldr r0, _02248EEC ; =0x022513F0
+ ldrb r1, [r4, #1]
+ ldr r0, [r0, #4]
+ add r0, #0x38
+ strb r1, [r0]
+_02248EEA:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02248EEC: .word 0x022513F0
+ thumb_func_end MOD18_02248EB4
+
+ thumb_func_start MOD18_02248EF0
+MOD18_02248EF0: ; 0x02248EF0
+ mov r0, #2
+ bx lr
+ thumb_func_end MOD18_02248EF0
+
+ thumb_func_start MOD18_02248EF4
+MOD18_02248EF4: ; 0x02248EF4
+ ldr r3, _02248EFC ; =0x02030C4D
+ mov r0, #0x4e
+ add r1, r2, #0
+ bx r3
+ .align 2, 0
+_02248EFC: .word 0x02030C4D
+ thumb_func_end MOD18_02248EF4
+
+ thumb_func_start MOD18_02248F00
+MOD18_02248F00: ; 0x02248F00
+ push {r3, r4, r5, lr}
+ ldr r0, _02248F70 ; =0x022513F0
+ add r5, r2, #0
+ ldr r4, [r0]
+ bl FUN_02031190
+ ldrb r1, [r5]
+ cmp r1, r0
+ bne _02248F6E
+ ldr r0, _02248F70 ; =0x022513F0
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02248F1E
+ bl ErrorHandling
+_02248F1E:
+ add r0, r4, #0
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, #2
+ beq _02248F38
+ add r0, r4, #0
+ mov r1, #8
+ bl MOD18_022479BC
+ mov r0, #8
+ add r4, #0x34
+ strb r0, [r4]
+ pop {r3, r4, r5, pc}
+_02248F38:
+ ldrb r1, [r5]
+ add r0, r4, #0
+ add r0, #0x24
+ strb r1, [r0]
+ add r0, r4, #0
+ ldrb r1, [r5, #1]
+ add r0, #0x25
+ strb r1, [r0]
+ add r0, r4, #0
+ ldrb r1, [r5, #2]
+ add r0, #0x26
+ add r4, #0x34
+ strb r1, [r0]
+ mov r0, #0x11
+ strb r0, [r4]
+ bl MOD18_0223D638
+ ldrb r1, [r5, #2]
+ bl MOD18_0224DE44
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x1c
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+_02248F6E:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02248F70: .word 0x022513F0
+ thumb_func_end MOD18_02248F00
+
+ thumb_func_start MOD18_02248F74
+MOD18_02248F74: ; 0x02248F74
+ mov r0, #3
+ bx lr
+ thumb_func_end MOD18_02248F74
+
+ thumb_func_start MOD18_02248F78
+MOD18_02248F78: ; 0x02248F78
+ ldr r3, _02248F80 ; =0x02030C4D
+ mov r0, #0x50
+ add r1, r2, #0
+ bx r3
+ .align 2, 0
+_02248F80: .word 0x02030C4D
+ thumb_func_end MOD18_02248F78
+
+ thumb_func_start MOD18_02248F84
+MOD18_02248F84: ; 0x02248F84
+ push {r4, r5, r6, lr}
+ ldr r0, _02248FC0 ; =0x022513F0
+ add r5, r2, #0
+ ldr r4, [r0]
+ ldr r6, [r0, #4]
+ bl FUN_02031190
+ ldrb r1, [r5, #1]
+ cmp r1, r0
+ bne _02248FBE
+ ldrb r0, [r5, #2]
+ cmp r0, #0
+ beq _02248FA8
+ cmp r0, #1
+ beq _02248FB0
+ cmp r0, #2
+ beq _02248FB8
+ pop {r4, r5, r6, pc}
+_02248FA8:
+ ldrb r0, [r5]
+ add r4, #0x2e
+ strb r0, [r4]
+ pop {r4, r5, r6, pc}
+_02248FB0:
+ ldrb r0, [r5]
+ add r6, #0x33
+ strb r0, [r6]
+ pop {r4, r5, r6, pc}
+_02248FB8:
+ ldrb r0, [r5]
+ add r4, #0x30
+ strb r0, [r4]
+_02248FBE:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02248FC0: .word 0x022513F0
+ thumb_func_end MOD18_02248F84
+
+ thumb_func_start MOD18_02248FC4
+MOD18_02248FC4: ; 0x02248FC4
+ mov r0, #3
+ bx lr
+ thumb_func_end MOD18_02248FC4
+
+ thumb_func_start MOD18_02248FC8
+MOD18_02248FC8: ; 0x02248FC8
+ push {r3, lr}
+ ldr r0, _02248FE8 ; =0x022513F0
+ ldr r1, [r0, #4]
+ cmp r1, #0
+ beq _02248FD8
+ ldr r0, [r1]
+ bl MOD18_02247B60
+_02248FD8:
+ ldr r0, _02248FE8 ; =0x022513F0
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _02248FE6
+ ldr r0, [r1]
+ bl MOD18_02248740
+_02248FE6:
+ pop {r3, pc}
+ .align 2, 0
+_02248FE8: .word 0x022513F0
+ thumb_func_end MOD18_02248FC8
+
+ thumb_func_start MOD18_02248FEC
+MOD18_02248FEC: ; 0x02248FEC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r1, r5, #0
+ ldr r0, [r5, #0x20]
+ add r1, #0x3a
+ ldrh r4, [r5, #0x3a]
+ bl FUN_0200143C
+ ldrh r0, [r5, #0x3a]
+ cmp r4, r0
+ beq _02249008
+ ldr r0, _0224900C ; =0x000005DC
+ bl FUN_020054C8
+_02249008:
+ pop {r3, r4, r5, pc}
+ nop
+_0224900C: .word 0x000005DC
+ thumb_func_end MOD18_02248FEC
+
+ thumb_func_start MOD18_02249010
+MOD18_02249010: ; 0x02249010
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xb4
+ ldr r4, _022491BC ; =0x02250580
+ add r3, sp, #0x9c
+ str r2, [sp, #0x14]
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [sp, #0xc]
+ add r1, r2, #0
+ add r0, #0x74
+ mov r2, #8
+ mov r3, #0xb
+ bl MOD05_021D959C
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0xe3
+ lsl r0, r0, #6
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ mov r1, #0x42
+ add r0, #0x74
+ mov r2, #9
+ mov r3, #0
+ bl MOD05_021D967C
+ mov r0, #0xe3
+ lsl r0, r0, #6
+ str r0, [sp]
+ ldr r0, [sp, #0xc]
+ mov r1, #0x42
+ add r0, #0x74
+ mov r2, #1
+ mov r3, #0
+ bl MOD05_021D96F4
+ mov r0, #0xe3
+ lsl r0, r0, #6
+ str r0, [sp]
+ ldr r0, [sp, #0xc]
+ mov r2, #0
+ add r0, #0x74
+ mov r1, #0x42
+ add r3, r2, #0
+ bl MOD05_021D9708
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xe3
+ lsl r0, r0, #6
+ str r0, [sp, #4]
+ ldr r0, [sp, #0xc]
+ mov r1, #0x42
+ add r0, #0x74
+ mov r2, #2
+ mov r3, #0
+ bl MOD05_021D971C
+ ldr r0, [sp, #0xc]
+ ldr r1, _022491C0 ; =0x022505F0
+ add r0, #0x74
+ bl MOD05_021D9820
+ mov r2, #0x76
+ ldr r1, [sp, #0xc]
+ lsl r2, r2, #2
+ str r0, [r1, r2]
+ add r0, r1, #0
+ ldr r0, [r0, r2]
+ add r2, #0x60
+ ldrh r1, [r1, r2]
+ ldr r0, [r0]
+ bl MOD18_02249240
+ ldr r0, _022491C4 ; =0x000038C1
+ mov r1, #0x42
+ str r0, [sp]
+ ldr r0, [sp, #0xc]
+ mov r2, #8
+ add r0, #0x74
+ mov r3, #0
+ bl MOD05_021D96F4
+ ldr r0, _022491C4 ; =0x000038C1
+ mov r1, #0x42
+ str r0, [sp]
+ ldr r0, [sp, #0xc]
+ mov r2, #7
+ add r0, #0x74
+ mov r3, #0
+ bl MOD05_021D9708
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _022491C4 ; =0x000038C1
+ mov r1, #0x42
+ str r0, [sp, #4]
+ ldr r0, [sp, #0xc]
+ mov r2, #0xa
+ add r0, #0x74
+ mov r3, #0
+ bl MOD05_021D971C
+ ldr r0, [sp, #0x14]
+ mov r4, #0
+ cmp r0, #0
+ bls _02249184
+ ldr r5, [sp, #0xc]
+ ldr r3, _022491C8 ; =0x02250624
+ add r7, r4, #0
+ add r2, sp, #0x28
+ mov r6, #6
+_02249102:
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ sub r6, r6, #1
+ bne _02249102
+ ldr r0, [r3]
+ ldr r3, _022491CC ; =0x02250574
+ str r0, [r2]
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x1c
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [sp, #0xc]
+ str r0, [sp, #0x18]
+ add r0, #0x74
+ str r0, [sp, #0x18]
+_02249122:
+ add r6, sp, #0x28
+ add r3, sp, #0x68
+ mov r2, #6
+_02249128:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02249128
+ ldr r0, [r6]
+ add r1, sp, #0x68
+ str r0, [r3]
+ mov r0, #2
+ ldrsh r0, [r1, r0]
+ add r1, r0, r7
+ add r0, sp, #0x68
+ strh r1, [r0, #2]
+ ldr r0, [sp, #0x10]
+ ldrb r1, [r0, r4]
+ lsl r0, r1, #1
+ add r1, r1, r0
+ add r0, sp, #0x68
+ strh r1, [r0, #6]
+ ldr r0, [sp, #0x18]
+ add r1, sp, #0x68
+ bl MOD05_021D9820
+ mov r1, #0x77
+ lsl r1, r1, #2
+ add r2, sp, #0x5c
+ add r3, sp, #0x1c
+ str r0, [r5, r1]
+ ldmia r3!, {r0, r1}
+ add r6, r2, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r1, r6, #0
+ str r0, [r2]
+ mov r0, #0x77
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r2, #1
+ ldr r0, [r0]
+ bl FUN_02020074
+ ldr r0, [sp, #0x14]
+ add r4, r4, #1
+ add r7, #0x18
+ add r5, r5, #4
+ cmp r4, r0
+ blo _02249122
+_02249184:
+ mov r1, #0x8e
+ ldr r0, [sp, #0xc]
+ lsl r1, r1, #2
+ ldrh r0, [r0, r1]
+ sub r1, #0x60
+ add r0, r0, #1
+ lsl r2, r0, #2
+ ldr r0, [sp, #0xc]
+ add r0, r0, r2
+ ldr r0, [r0, r1]
+ mov r1, #2
+ ldr r0, [r0]
+ mov r2, #1
+ bl MOD18_02249270
+ ldr r0, [sp, #0x14]
+ mov r1, #0x7e
+ add r2, r0, #1
+ ldr r0, [sp, #0xc]
+ lsl r1, r1, #2
+ str r2, [r0, r1]
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ add sp, #0xb4
+ pop {r4, r5, r6, r7, pc}
+ nop
+_022491BC: .word 0x02250580
+_022491C0: .word 0x022505F0
+_022491C4: .word 0x000038C1
+_022491C8: .word 0x02250624
+_022491CC: .word 0x02250574
+ thumb_func_end MOD18_02249010
+
+ thumb_func_start MOD18_022491D0
+MOD18_022491D0: ; 0x022491D0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r4, #0
+ cmp r0, #0
+ bls _022491FE
+ mov r7, #0x76
+ lsl r7, r7, #2
+ add r6, r7, #0
+ add r6, #0x20
+_022491E8:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, r7]
+ bl FUN_0200C3DC
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [r5, r6]
+ cmp r4, r0
+ blo _022491E8
+_022491FE:
+ add r5, #0x74
+ add r0, r5, #0
+ bl MOD05_021D99F8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_022491D0
+
+ thumb_func_start MOD18_02249208
+MOD18_02249208: ; 0x02249208
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r4, #0
+ cmp r0, #0
+ bls _0224923C
+ mov r7, #0x76
+ lsl r7, r7, #2
+ add r6, r7, #0
+ add r6, #0x20
+_02249220:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, r7]
+ mov r1, #1
+ ldr r0, [r0]
+ lsl r1, r1, #0xc
+ bl FUN_020201E4
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, [r5, r6]
+ cmp r4, r0
+ blo _02249220
+_0224923C:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02249208
+
+ thumb_func_start MOD18_02249240
+MOD18_02249240: ; 0x02249240
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r2, #0
+ str r0, [r3]
+ mov r0, #0x18
+ mul r0, r4
+ add r0, #0x14
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ add r0, r5, #0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD18_02249240
+
+ thumb_func_start MOD18_02249270
+MOD18_02249270: ; 0x02249270
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ bl FUN_020201DC
+ mov r1, #3
+ bl _u32_div_f
+ add r2, r0, #0
+ lsl r1, r2, #1
+ add r1, r2, r1
+ add r0, r5, #0
+ add r1, r4, r1
+ bl FUN_02020130
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_0202027C
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02249270
+
+ thumb_func_start MOD18_0224929C
+MOD18_0224929C: ; 0x0224929C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, r1, #1
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ add r4, r2, #0
+ ldr r0, [r0]
+ add r2, r1, #0
+ bl MOD18_02249270
+ add r0, r4, #1
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ ldr r0, [r0]
+ add r2, r1, #0
+ bl MOD18_02249270
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_0224929C
+
+ thumb_func_start MOD18_022492D0
+MOD18_022492D0: ; 0x022492D0
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_020201DC
+ mov r1, #3
+ bl _u32_div_f
+ cmp r1, #1
+ bne _022492F6
+ add r0, r4, #0
+ bl FUN_02020388
+ cmp r0, #0
+ bne _022492F6
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #1
+ bl MOD18_02249270
+_022492F6:
+ pop {r4, pc}
+ thumb_func_end MOD18_022492D0
+
+ thumb_func_start MOD18_022492F8
+MOD18_022492F8: ; 0x022492F8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xf
+ mov r1, #8
+ bl FUN_02016998
+ ldr r1, _02249324 ; =0x022513F8
+ mov r2, #8
+ str r0, [r1]
+ mov r1, #0
+ bl MI_CpuFill8
+ ldr r0, _02249324 ; =0x022513F8
+ mov r2, #0
+ ldr r1, [r0]
+ strb r2, [r1, #4]
+ ldr r1, [r0]
+ strb r2, [r1, #5]
+ ldr r0, [r0]
+ str r4, [r0]
+ pop {r4, pc}
+ nop
+_02249324: .word 0x022513F8
+ thumb_func_end MOD18_022492F8
+
+ thumb_func_start MOD18_02249328
+MOD18_02249328: ; 0x02249328
+ ldr r0, _02249330 ; =0x022513F8
+ ldr r3, _02249334 ; =0x02016A19
+ ldr r0, [r0]
+ bx r3
+ .align 2, 0
+_02249330: .word 0x022513F8
+_02249334: .word 0x02016A19
+ thumb_func_end MOD18_02249328
+
+ thumb_func_start MOD18_02249338
+MOD18_02249338: ; 0x02249338
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ bl FUN_0202623C
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02249338
+
+ thumb_func_start MOD18_0224934C
+MOD18_0224934C: ; 0x0224934C
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ bl FUN_02025DB0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224934C
+
+ thumb_func_start MOD18_02249360
+MOD18_02249360: ; 0x02249360
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r1, r4, #0
+ bl FUN_02025DC8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02249360
+
+ thumb_func_start MOD18_02249378
+MOD18_02249378: ; 0x02249378
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ bl FUN_02025F80
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02249378
+
+ thumb_func_start MOD18_0224938C
+MOD18_0224938C: ; 0x0224938C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r1, r4, #0
+ bl FUN_02025F98
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224938C
+
+ thumb_func_start MOD18_022493A4
+MOD18_022493A4: ; 0x022493A4
+ push {r3, lr}
+ ldr r1, _022493C4 ; =0x022513F8
+ ldr r1, [r1]
+ ldrb r1, [r1, #5]
+ cmp r1, r0
+ beq _022493B4
+ bl ErrorHandling
+_022493B4:
+ ldr r0, _022493C4 ; =0x022513F8
+ ldr r1, [r0]
+ ldr r0, [r1]
+ ldrb r1, [r1, #4]
+ bl FUN_02025FA4
+ pop {r3, pc}
+ nop
+_022493C4: .word 0x022513F8
+ thumb_func_end MOD18_022493A4
+
+ thumb_func_start MOD18_022493C8
+MOD18_022493C8: ; 0x022493C8
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ bl FUN_02026050
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_022493C8
+
+ thumb_func_start MOD18_022493DC
+MOD18_022493DC: ; 0x022493DC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r1, r4, #0
+ bl FUN_02026258
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_022493DC
+
+ thumb_func_start MOD18_022493F4
+MOD18_022493F4: ; 0x022493F4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r1, r4, #0
+ bl FUN_02026068
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_022493F4
+
+ thumb_func_start MOD18_0224940C
+MOD18_0224940C: ; 0x0224940C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r1, r4, #0
+ bl FUN_02026074
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224940C
+
+ thumb_func_start MOD18_02249424
+MOD18_02249424: ; 0x02249424
+ push {r3, lr}
+ ldr r0, [r0, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ bl FUN_0202616C
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02249424
+
+ thumb_func_start MOD18_02249438
+MOD18_02249438: ; 0x02249438
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r1, r4, #0
+ bl FUN_02026188
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02249438
+
+ thumb_func_start MOD18_02249450
+MOD18_02249450: ; 0x02249450
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r5, #0xb
+ blt _0224945E
+ bl ErrorHandling
+_0224945E:
+ cmp r5, #6
+ blt _02249464
+ sub r5, r5, #5
+_02249464:
+ cmp r4, #0x63
+ ble _0224946A
+ mov r4, #0x63
+_0224946A:
+ ldr r0, _0224947C ; =0x022513F8
+ add r1, r5, #0
+ ldr r0, [r0]
+ add r2, r4, #0
+ ldr r0, [r0]
+ bl FUN_020260C4
+ pop {r3, r4, r5, pc}
+ nop
+_0224947C: .word 0x022513F8
+ thumb_func_end MOD18_02249450
+
+ thumb_func_start MOD18_02249480
+MOD18_02249480: ; 0x02249480
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r4, #0x3c
+ blt _0224948C
+ bl ErrorHandling
+_0224948C:
+ ldr r0, _0224949C ; =0x022513F8
+ add r1, r4, #0
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl FUN_020261C8
+ pop {r4, pc}
+ nop
+_0224949C: .word 0x022513F8
+ thumb_func_end MOD18_02249480
+
+ thumb_func_start MOD18_022494A0
+MOD18_022494A0: ; 0x022494A0
+ add r1, r0, #0
+ ldr r0, _022494AC ; =0x022513F8
+ ldr r3, _022494B0 ; =0x02026299
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bx r3
+ .align 2, 0
+_022494AC: .word 0x022513F8
+_022494B0: .word 0x02026299
+ thumb_func_end MOD18_022494A0
+
+ thumb_func_start MOD18_022494B4
+MOD18_022494B4: ; 0x022494B4
+ add r1, r0, #0
+ ldr r0, _022494C0 ; =0x022513F8
+ ldr r3, _022494C4 ; =0x02025FD9
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bx r3
+ .align 2, 0
+_022494C0: .word 0x022513F8
+_022494C4: .word 0x02025FD9
+ thumb_func_end MOD18_022494B4
+
+ thumb_func_start MOD18_022494C8
+MOD18_022494C8: ; 0x022494C8
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _02249534 ; =0x000005FD
+ add r6, r1, #0
+ bl FUN_020054C8
+ mov r0, #2
+ bl MOD18_0223E56C
+ mov r1, #0x25
+ mov r0, #4
+ lsl r1, r1, #4
+ bl FUN_02016998
+ mov r2, #0x25
+ mov r1, #0
+ lsl r2, r2, #4
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x7f
+ str r6, [r4, #0xc]
+ lsl r0, r0, #2
+ str r5, [r4, r0]
+ mov r1, #0
+ add r0, #0x4a
+ strb r1, [r4, r0]
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ str r0, [r4, #0x68]
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ str r0, [r4, #0x6c]
+ mov r0, #4
+ bl FUN_0200AA80
+ str r0, [r4, #0x70]
+ ldr r0, _02249538 ; =MOD18_02249684
+ ldr r2, _0224953C ; =0x00002710
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #4]
+ ldr r1, [r4, #4]
+ ldr r2, _02249540 ; =MOD18_0224AFE8
+ add r0, r4, #0
+ bl MOD18_0223E688
+ pop {r4, r5, r6, pc}
+ nop
+_02249534: .word 0x000005FD
+_02249538: .word MOD18_02249684
+_0224953C: .word 0x00002710
+_02249540: .word MOD18_0224AFE8
+ thumb_func_end MOD18_022494C8
+
+ thumb_func_start MOD18_02249544
+MOD18_02249544: ; 0x02249544
+ mov r1, #0
+ strb r1, [r0]
+ mov r1, #1
+ strb r1, [r0, #1]
+ mov r1, #2
+ strb r1, [r0, #2]
+ mov r1, #3
+ strb r1, [r0, #3]
+ mov r1, #4
+ strb r1, [r0, #4]
+ mov r1, #5
+ strb r1, [r0, #5]
+ mov r1, #6
+ strb r1, [r0, #6]
+ mov r0, #7
+ bx lr
+ thumb_func_end MOD18_02249544
+
+ thumb_func_start MOD18_02249564
+MOD18_02249564: ; 0x02249564
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ add r0, sp, #0x18
+ bl MOD18_02249544
+ mov r0, #7
+ mov r1, #4
+ bl FUN_02012838
+ str r0, [r5, #0x40]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xb
+ str r0, [sp, #4]
+ mov r0, #0x15
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _02249674 ; =0x000002E7
+ add r1, r5, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0xc]
+ add r1, #0x10
+ ldr r0, [r0, #8]
+ mov r2, #3
+ mov r3, #0x14
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _02249678 ; =0x000003D9
+ add r0, #0x10
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ bl MOD18_0223D638
+ bl MOD18_0224DBB4
+ ldr r4, _0224967C ; =0x022505B8
+ str r0, [sp, #0x14]
+ mov r6, #0
+_022495BA:
+ cmp r6, #4
+ bne _022495E2
+ ldr r0, [r5, #0xc]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ mov r1, #4
+ bl FUN_020239A0
+ add r7, r0, #0
+ ldr r0, [r5, #0x40]
+ ldr r2, [r4, #4]
+ add r1, r7, #0
+ bl FUN_020128A0
+ add r0, r7, #0
+ bl FUN_02021A20
+ b _022495EE
+_022495E2:
+ ldr r0, [r5, #0x40]
+ ldr r1, [sp, #0x14]
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ bl FUN_02012880
+_022495EE:
+ add r6, r6, #1
+ add r4, #8
+ cmp r6, #7
+ blo _022495BA
+ ldr r0, [r5, #0xc]
+ mov r3, #0x8e
+ add r0, #0x8c
+ ldr r0, [r0]
+ lsl r3, r3, #2
+ strh r0, [r5, r3]
+ ldr r0, [r5, #0x40]
+ mov r1, #1
+ str r0, [sp, #0x20]
+ add r0, r5, #0
+ add r0, #0x10
+ str r0, [sp, #0x24]
+ add r0, sp, #0x18
+ strb r1, [r0, #0x10]
+ strb r1, [r0, #0x11]
+ mov r1, #7
+ strb r1, [r0, #0x12]
+ ldrb r2, [r0, #0x13]
+ mov r1, #0xf
+ bic r2, r1
+ mov r1, #8
+ orr r1, r2
+ strb r1, [r0, #0x13]
+ ldrb r2, [r0, #0x13]
+ mov r1, #0x30
+ bic r2, r1
+ mov r1, #0x10
+ orr r1, r2
+ strb r1, [r0, #0x13]
+ ldrb r2, [r0, #0x13]
+ mov r1, #0xc0
+ bic r2, r1
+ mov r1, #0x40
+ orr r1, r2
+ strb r1, [r0, #0x13]
+ mov r0, #0xb
+ str r0, [sp]
+ ldr r0, _02249680 ; =0x00000402
+ mov r1, #0x1c
+ str r0, [sp, #4]
+ ldrh r3, [r5, r3]
+ add r0, sp, #0x20
+ mov r2, #4
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02001B8C
+ str r0, [r5, #0x54]
+ mov r0, #0
+ str r0, [r5, #0x48]
+ add r0, r5, #0
+ add r0, #0x10
+ bl FUN_02019220
+ add r0, r5, #0
+ add r1, sp, #0x18
+ mov r2, #7
+ bl MOD18_02249010
+ bl FUN_0204F7E4
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02249674: .word 0x000002E7
+_02249678: .word 0x000003D9
+_0224967C: .word 0x022505B8
+_02249680: .word 0x00000402
+ thumb_func_end MOD18_02249564
+
+ thumb_func_start MOD18_02249684
+MOD18_02249684: ; 0x02249684
+ push {r3, r4, r5, lr}
+ ldr r2, _022497BC ; =0x00000246
+ add r4, r1, #0
+ ldrb r2, [r4, r2]
+ add r5, r0, #0
+ cmp r2, #0x13
+ bls _02249694
+ b _022497BA
+_02249694:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_022496A0: ; jump table
+ .short _022496C8 - _022496A0 - 2 ; case 0
+ .short _022496D8 - _022496A0 - 2 ; case 1
+ .short _022496DE - _022496A0 - 2 ; case 2
+ .short _022496F4 - _022496A0 - 2 ; case 3
+ .short _022497BA - _022496A0 - 2 ; case 4
+ .short _0224970A - _022496A0 - 2 ; case 5
+ .short _02249710 - _022496A0 - 2 ; case 6
+ .short _02249716 - _022496A0 - 2 ; case 7
+ .short _0224971C - _022496A0 - 2 ; case 8
+ .short _02249722 - _022496A0 - 2 ; case 9
+ .short _022497BA - _022496A0 - 2 ; case 10
+ .short _02249728 - _022496A0 - 2 ; case 11
+ .short _0224972E - _022496A0 - 2 ; case 12
+ .short _02249734 - _022496A0 - 2 ; case 13
+ .short _02249762 - _022496A0 - 2 ; case 14
+ .short _02249788 - _022496A0 - 2 ; case 15
+ .short _022497AA - _022496A0 - 2 ; case 16
+ .short _022497B0 - _022496A0 - 2 ; case 17
+ .short _022497A4 - _022496A0 - 2 ; case 18
+ .short _022497B6 - _022496A0 - 2 ; case 19
+_022496C8:
+ add r0, r4, #0
+ bl MOD18_02249564
+ ldr r0, _022497BC ; =0x00000246
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_022496D8:
+ bl MOD18_022497C8
+ pop {r3, r4, r5, pc}
+_022496DE:
+ add r0, r4, #0
+ bl MOD18_022498EC
+ bl MOD18_0223E6A0
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD18_0224A8AC
+ pop {r3, r4, r5, pc}
+_022496F4:
+ add r0, r4, #0
+ bl MOD18_022498EC
+ bl MOD18_0223E6A0
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD18_0224A8AC
+ pop {r3, r4, r5, pc}
+_0224970A:
+ bl MOD18_02249CC8
+ pop {r3, r4, r5, pc}
+_02249710:
+ bl MOD18_0224A0EC
+ pop {r3, r4, r5, pc}
+_02249716:
+ bl MOD18_0224A47C
+ pop {r3, r4, r5, pc}
+_0224971C:
+ bl MOD18_0224AC24
+ pop {r3, r4, r5, pc}
+_02249722:
+ bl MOD18_0224AE68
+ pop {r3, r4, r5, pc}
+_02249728:
+ bl MOD18_0224A710
+ pop {r3, r4, r5, pc}
+_0224972E:
+ bl MOD18_0224A74C
+ pop {r3, r4, r5, pc}
+_02249734:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _022497BA
+ ldr r0, _022497C0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _022497BA
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD18_0224A8AC
+ bl MOD18_0223E6A0
+ pop {r3, r4, r5, pc}
+_02249762:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _022497BA
+ ldr r0, _022497C0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _022497BA
+ ldr r1, [r4]
+ add r0, r4, #0
+ blx r1
+ ldr r0, _022497C4 ; =0x00000245
+ ldrb r1, [r4, r0]
+ add r0, r0, #1
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_02249788:
+ add r0, r4, #0
+ bl MOD18_022498EC
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD18_0224A8AC
+ bl MOD18_0223E6A0
+ ldr r0, [r4, #0xc]
+ bl FUN_02049824
+ pop {r3, r4, r5, pc}
+_022497A4:
+ bl MOD18_02249DB8
+ pop {r3, r4, r5, pc}
+_022497AA:
+ bl MOD18_0224A1C0
+ pop {r3, r4, r5, pc}
+_022497B0:
+ bl MOD18_0224A550
+ pop {r3, r4, r5, pc}
+_022497B6:
+ bl MOD18_0224AD04
+_022497BA:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022497BC: .word 0x00000246
+_022497C0: .word 0x021C48B8
+_022497C4: .word 0x00000245
+ thumb_func_end MOD18_02249684
+
+ thumb_func_start MOD18_022497C8
+MOD18_022497C8: ; 0x022497C8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x54]
+ bl FUN_02001E5C
+ add r5, r0, #0
+ mov r1, #0x5e
+ ldr r0, [r4, #0x54]
+ lsl r1, r1, #4
+ bl FUN_02001D2C
+ mov r1, #0x8f
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, #0x54]
+ bl FUN_02001E5C
+ mov r2, #0x8e
+ lsl r2, r2, #2
+ strh r0, [r4, r2]
+ ldrh r1, [r4, r2]
+ cmp r5, r1
+ beq _0224981A
+ sub r2, #0x60
+ ldr r0, [r4, r2]
+ ldr r0, [r0]
+ bl MOD18_02249240
+ mov r2, #0x8e
+ lsl r2, r2, #2
+ ldrh r2, [r4, r2]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD18_0224929C
+ mov r0, #0x8e
+ lsl r0, r0, #2
+ ldrh r1, [r4, r0]
+ ldr r0, [r4, #0xc]
+ add r0, #0x8c
+ str r1, [r0]
+_0224981A:
+ mov r0, #0x8e
+ lsl r0, r0, #2
+ ldrh r1, [r4, r0]
+ sub r0, #0x60
+ add r1, r1, #1
+ lsl r1, r1, #2
+ add r1, r4, r1
+ ldr r0, [r1, r0]
+ ldr r0, [r0]
+ bl MOD18_022492D0
+ bl FUN_020311F0
+ cmp r0, #0
+ beq _02249842
+ mov r1, #1
+ mov r0, #0x8f
+ mvn r1, r1
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_02249842:
+ mov r1, #0x8f
+ lsl r1, r1, #2
+ mov r2, #1
+ ldr r0, [r4, r1]
+ mvn r2, r2
+ cmp r0, r2
+ beq _02249866
+ add r1, r2, #1
+ cmp r0, r1
+ bne _0224986E
+ add r0, r4, #0
+ bl MOD18_02249208
+ ldr r0, [r4, #0x74]
+ bl FUN_0201FDEC
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02249866:
+ mov r0, #2
+ add r1, #0xa
+ strb r0, [r4, r1]
+ b _022498D6
+_0224986E:
+ ldr r1, _022498DC ; =MOD18_02249B50
+ cmp r0, r1
+ beq _02249886
+ ldr r1, _022498E0 ; =MOD18_02249F2C
+ cmp r0, r1
+ beq _02249886
+ ldr r1, _022498E4 ; =MOD18_0224AA4C
+ cmp r0, r1
+ beq _02249886
+ ldr r1, _022498E8 ; =MOD18_0224A30C
+ cmp r0, r1
+ bne _022498AC
+_02249886:
+ mov r0, #4
+ bl FUN_0205EB38
+ str r0, [r4, #8]
+ mov r1, #0xc8
+ mov r2, #0x14
+ mov r3, #0x7a
+ bl FUN_0205EC48
+ mov r1, #0
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ bl FUN_0205EC6C
+ ldr r0, [r4, #8]
+ mov r1, #1
+ mov r2, #0
+ bl FUN_0205EC6C
+_022498AC:
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _022498CC
+ add r0, r4, #0
+ bl MOD18_022491D0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_02001C5C
+ mov r0, #0x7e
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_022498CC:
+ mov r1, #0x8f
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ add r0, r4, #0
+ blx r1
+_022498D6:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_022498DC: .word MOD18_02249B50
+_022498E0: .word MOD18_02249F2C
+_022498E4: .word MOD18_0224AA4C
+_022498E8: .word MOD18_0224A30C
+ thumb_func_end MOD18_022497C8
+
+ thumb_func_start MOD18_022498EC
+MOD18_022498EC: ; 0x022498EC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x4c]
+ cmp r0, #0
+ beq _02249902
+ mov r1, #0
+ add r2, r1, #0
+ bl MOD18_02244318
+ mov r0, #0
+ str r0, [r4, #0x4c]
+_02249902:
+ ldr r0, [r4, #0x48]
+ cmp r0, #0
+ beq _02249916
+ mov r1, #0
+ add r2, r1, #0
+ bl FUN_02001300
+ mov r0, #0
+ str r0, [r4, #0x48]
+ b _02249936
+_02249916:
+ mov r0, #0x7e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02249936
+ add r0, r4, #0
+ bl MOD18_022491D0
+ ldr r0, [r4, #0x54]
+ mov r1, #0
+ bl FUN_02001C5C
+ mov r0, #0x7e
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_02249936:
+ add r0, r4, #0
+ add r0, #0x10
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02249968
+ add r0, r4, #0
+ add r0, #0x10
+ mov r1, #1
+ bl FUN_0200CCF8
+ ldrb r1, [r4, #0x14]
+ ldr r0, [r4, #0x10]
+ bl FUN_0201AC68
+ add r0, r4, #0
+ add r0, #0x10
+ bl FUN_02019178
+ ldr r0, [r4, #0x40]
+ bl FUN_02012870
+ add r0, r4, #0
+ bl MOD18_0224CBAC
+_02249968:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_022498EC
+
+ thumb_func_start MOD18_0224996C
+MOD18_0224996C: ; 0x0224996C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r5, r0, #0
+ mov r0, #6
+ str r0, [sp, #0x1c]
+ mov r0, #0x19
+ mov r7, #0xb
+ str r0, [sp, #0x18]
+ cmp r1, #1
+ beq _0224998A
+ cmp r1, #2
+ beq _02249990
+ cmp r1, #3
+ beq _02249998
+ b _022499A2
+_0224998A:
+ mov r6, #3
+ ldr r4, _02249A4C ; =0x02251270
+ b _022499A2
+_02249990:
+ mov r6, #2
+ mov r7, #0xd
+ ldr r4, _02249A50 ; =0x02251260
+ b _022499A2
+_02249998:
+ mov r0, #0x14
+ ldr r4, _02249A54 ; =0x02251288
+ mov r6, #3
+ str r7, [sp, #0x1c]
+ str r0, [sp, #0x18]
+_022499A2:
+ add r0, r6, #0
+ mov r1, #4
+ bl FUN_02012838
+ str r0, [r5, #0x44]
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x1c]
+ ldr r3, [sp, #0x18]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ lsl r0, r6, #0x19
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _02249A58 ; =0x000002E7
+ add r1, r5, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0xc]
+ lsl r3, r3, #0x18
+ ldr r0, [r0, #8]
+ add r1, #0x20
+ mov r2, #3
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _02249A5C ; =0x000003D9
+ add r0, #0x20
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ bl MOD18_0223D638
+ bl MOD18_0224DBB4
+ mov r7, #0
+ str r0, [sp, #0x14]
+ cmp r6, #0
+ ble _02249A0E
+_022499FA:
+ ldr r0, [r5, #0x44]
+ ldr r1, [sp, #0x14]
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ bl FUN_02012880
+ add r7, r7, #1
+ add r4, #8
+ cmp r7, r6
+ blt _022499FA
+_02249A0E:
+ ldr r4, _02249A60 ; =0x02250598
+ add r3, sp, #0x20
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ lsl r0, r6, #0x10
+ lsr r1, r0, #0x10
+ add r0, sp, #0x20
+ strh r1, [r0, #0x10]
+ strh r1, [r0, #0x12]
+ ldr r0, [r5, #0x44]
+ mov r1, #0
+ str r0, [sp, #0x20]
+ add r0, r5, #0
+ add r0, #0x20
+ str r0, [sp, #0x2c]
+ add r0, r2, #0
+ add r2, r1, #0
+ mov r3, #4
+ str r5, [sp, #0x3c]
+ bl FUN_020010A8
+ str r0, [r5, #0x50]
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02249A4C: .word 0x02251270
+_02249A50: .word 0x02251260
+_02249A54: .word 0x02251288
+_02249A58: .word 0x000002E7
+_02249A5C: .word 0x000003D9
+_02249A60: .word 0x02250598
+ thumb_func_end MOD18_0224996C
+
+ thumb_func_start MOD18_02249A64
+MOD18_02249A64: ; 0x02249A64
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x50]
+ cmp r0, #0
+ beq _02249A8C
+ mov r1, #0
+ add r2, r1, #0
+ bl FUN_02001300
+ add r1, r4, #0
+ add r1, #0x24
+ ldrb r1, [r1]
+ ldr r0, [r4, #0x20]
+ bl FUN_0201AC68
+ ldr r0, [r4, #0x44]
+ bl FUN_02012870
+ mov r0, #0
+ str r0, [r4, #0x50]
+_02249A8C:
+ add r0, r4, #0
+ add r0, #0x20
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02249AAA
+ add r0, r4, #0
+ add r0, #0x20
+ mov r1, #1
+ bl FUN_0200CCF8
+ add r4, #0x20
+ add r0, r4, #0
+ bl FUN_02019178
+_02249AAA:
+ pop {r4, pc}
+ thumb_func_end MOD18_02249A64
+
+ thumb_func_start MOD18_02249AAC
+MOD18_02249AAC: ; 0x02249AAC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD18_022498EC
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _02249AC2
+ bl FUN_0205EBEC
+ mov r0, #0
+ str r0, [r4, #8]
+_02249AC2:
+ ldr r0, _02249AD4 ; =0x00000246
+ mov r1, #0
+ strb r1, [r4, r0]
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+ pop {r4, pc}
+ nop
+_02249AD4: .word 0x00000246
+ thumb_func_end MOD18_02249AAC
+
+ thumb_func_start MOD18_02249AD8
+MOD18_02249AD8: ; 0x02249AD8
+ push {r3, lr}
+ ldr r1, _02249AF0 ; =0x022513F8
+ ldr r2, [r1]
+ ldrb r1, [r2, #5]
+ cmp r1, r0
+ bne _02249AEC
+ ldrb r1, [r2, #4]
+ ldr r0, [r2]
+ bl FUN_02026264
+_02249AEC:
+ pop {r3, pc}
+ nop
+_02249AF0: .word 0x022513F8
+ thumb_func_end MOD18_02249AD8
+
+ thumb_func_start MOD18_02249AF4
+MOD18_02249AF4: ; 0x02249AF4
+ push {r4, lr}
+ add r4, r1, #0
+ mov r1, #0x13
+ bl FUN_02001470
+ mov r2, #0x81
+ add r1, r0, #0
+ lsl r2, r2, #2
+ ldr r2, [r1, r2]
+ add r0, r4, #0
+ blx r2
+ mov r1, #1
+ mvn r1, r1
+ cmp r4, r1
+ bne _02249B16
+ mov r4, #0x44
+ b _02249B1A
+_02249B16:
+ add r4, r0, #0
+ add r4, #0x22
+_02249B1A:
+ bl MOD18_0223D678
+ mov r2, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02249AF4
+
+ thumb_func_start MOD18_02249B2C
+MOD18_02249B2C: ; 0x02249B2C
+ mov r1, #2
+ ldr r2, _02249B44 ; =MOD18_02249338
+ lsl r1, r1, #8
+ str r2, [r0, r1]
+ ldr r2, _02249B48 ; =MOD18_022493DC
+ add r1, r1, #4
+ str r2, [r0, r1]
+ mov r1, #0
+ ldr r3, _02249B4C ; =MOD18_02249BA8
+ str r1, [r0, #0x64]
+ bx r3
+ nop
+_02249B44: .word MOD18_02249338
+_02249B48: .word MOD18_022493DC
+_02249B4C: .word MOD18_02249BA8
+ thumb_func_end MOD18_02249B2C
+
+ thumb_func_start MOD18_02249B50
+MOD18_02249B50: ; 0x02249B50
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #8
+ bl MOD18_0223E628
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #8
+ bl MOD18_0223E5F0
+ mov r1, #0x23
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r2, _02249B98 ; =MOD18_02249338
+ sub r0, #0x30
+ str r2, [r4, r0]
+ add r0, r1, #0
+ ldr r2, _02249B9C ; =MOD18_022493DC
+ sub r0, #0x2c
+ str r2, [r4, r0]
+ ldr r0, _02249BA0 ; =MOD18_02249AF4
+ str r0, [r4, #0x60]
+ mov r0, #0
+ str r0, [r4, #0x64]
+ sub r0, r1, #4
+ ldr r0, [r4, r0]
+ add r1, #0x1c
+ strh r0, [r4, r1]
+ ldr r1, _02249BA4 ; =0x020262BD
+ add r0, r4, #0
+ bl MOD18_02249BA8
+ pop {r4, pc}
+ nop
+_02249B98: .word MOD18_02249338
+_02249B9C: .word MOD18_022493DC
+_02249BA0: .word MOD18_02249AF4
+_02249BA4: .word 0x020262BD
+ thumb_func_end MOD18_02249B50
+
+ thumb_func_start MOD18_02249BA8
+MOD18_02249BA8: ; 0x02249BA8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ str r1, [sp, #0x14]
+ mov r1, #0x81
+ add r5, r0, #0
+ lsl r1, r1, #2
+ ldr r7, [r5, r1]
+ sub r1, r1, #4
+ ldr r1, [r5, r1]
+ blx r1
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD18_022498EC
+ bl MOD18_0223D678
+ ldr r1, _02249CB0 ; =0x0000023B
+ mov r2, #0
+ bl MOD18_0224DB80
+ add r0, r6, #1
+ mov r1, #4
+ bl FUN_02012838
+ str r0, [r5, #0x40]
+ mov r2, #3
+ add r1, r5, #0
+ str r2, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _02249CB4 ; =0x00000257
+ add r1, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0xc]
+ mov r3, #0x13
+ ldr r0, [r0, #8]
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _02249CB8 ; =0x000003D9
+ add r0, #0x10
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ bl MOD18_0223D678
+ bl MOD18_0224DBB4
+ mov r4, #0
+ str r0, [sp, #0x18]
+ cmp r6, #0
+ ble _02249C30
+_02249C18:
+ add r0, r4, #0
+ add r1, r5, #0
+ blx r7
+ add r2, r0, #0
+ ldr r0, [r5, #0x40]
+ ldr r1, [sp, #0x18]
+ add r3, r4, #0
+ bl FUN_02012880
+ add r4, r4, #1
+ cmp r4, r6
+ blt _02249C18
+_02249C30:
+ mov r2, #0x22
+ add r3, r2, #0
+ ldr r0, [r5, #0x40]
+ ldr r1, [sp, #0x18]
+ sub r3, #0x24
+ bl FUN_02012880
+ ldr r3, _02249CBC ; =0x02250598
+ add r2, sp, #0x1c
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, r6, #1
+ add r2, sp, #0x1c
+ strh r0, [r2, #0x10]
+ mov r1, #6
+ strh r1, [r2, #0x12]
+ ldr r0, [r5, #0x40]
+ str r0, [sp, #0x1c]
+ add r0, r5, #0
+ add r0, #0x10
+ str r0, [sp, #0x28]
+ ldr r0, [r5, #0x60]
+ str r0, [sp, #0x20]
+ ldr r0, [r5, #0x64]
+ str r0, [sp, #0x24]
+ str r5, [sp, #0x38]
+ ldrh r2, [r2, #0x10]
+ add r0, r5, #0
+ bl MOD18_0224AFB0
+ ldr r0, [sp, #0x14]
+ mov r2, #0x23
+ str r0, [sp]
+ ldr r0, _02249CC0 ; =0x022513F8
+ lsl r2, r2, #4
+ ldr r0, [r0]
+ mov r3, #4
+ ldr r0, [r0]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r1, [r5, r2]
+ sub r2, r2, #4
+ ldr r2, [r5, r2]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, sp, #0x1c
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ bl MOD18_02244028
+ str r0, [r5, #0x4c]
+ ldr r0, _02249CC4 ; =0x00000246
+ mov r1, #5
+ strb r1, [r5, r0]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02249CB0: .word 0x0000023B
+_02249CB4: .word 0x00000257
+_02249CB8: .word 0x000003D9
+_02249CBC: .word 0x02250598
+_02249CC0: .word 0x022513F8
+_02249CC4: .word 0x00000246
+ thumb_func_end MOD18_02249BA8
+
+ thumb_func_start MOD18_02249CC8
+MOD18_02249CC8: ; 0x02249CC8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x4c]
+ bl MOD18_02244140
+ add r4, r0, #0
+ ldr r0, [r5, #0x4c]
+ add r1, sp, #0
+ ldr r0, [r0, #0xc]
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_02001448
+ add r2, sp, #0
+ ldrh r1, [r2]
+ ldrh r2, [r2, #2]
+ mov r0, #8
+ bl MOD18_0223E57C
+ ldr r0, [r5, #0x4c]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ bl FUN_02001470
+ add r1, sp, #0
+ add r2, r0, #0
+ ldrh r1, [r1, #2]
+ add r0, r5, #0
+ mov r3, #6
+ bl MOD18_0224B004
+ bl FUN_020311F0
+ cmp r0, #0
+ beq _02249D12
+ mov r4, #1
+ mvn r4, r4
+_02249D12:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _02249D1C
+ add r4, r0, #0
+_02249D1C:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _02249D2E
+ add r0, r0, #1
+ cmp r4, r0
+ bne _02249D36
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02249D2E:
+ add r0, r5, #0
+ bl MOD18_02249AAC
+ b _02249DAC
+_02249D36:
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+ ldr r0, _02249DB0 ; =0x022513F8
+ add r1, r5, #0
+ ldr r0, [r0]
+ strb r4, [r0, #4]
+ add r0, r4, #0
+ bl MOD18_022493DC
+ ldr r1, _02249DB0 ; =0x022513F8
+ ldr r2, [r1]
+ strb r0, [r2, #5]
+ ldr r0, [r1]
+ ldrb r0, [r0, #5]
+ cmp r0, #0x21
+ bne _02249D66
+ bl MOD18_02246AE4
+ ldr r0, _02249DB4 ; =0x00000246
+ mov r1, #3
+ strb r1, [r5, r0]
+ b _02249D98
+_02249D66:
+ add r0, r5, #0
+ bl MOD18_022498EC
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD18_0224996C
+ ldr r0, _02249DB4 ; =0x00000246
+ mov r1, #0x12
+ strb r1, [r5, r0]
+ bl MOD18_0223D638
+ ldr r2, _02249DB0 ; =0x022513F8
+ mov r1, #2
+ ldr r2, [r2]
+ ldrb r2, [r2, #5]
+ bl MOD18_0224DF04
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x81
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+_02249D98:
+ mov r1, #0
+ ldr r0, [r5, #8]
+ add r2, r1, #0
+ bl FUN_0205EC6C
+ ldr r0, [r5, #8]
+ mov r1, #1
+ mov r2, #0
+ bl FUN_0205EC6C
+_02249DAC:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02249DB0: .word 0x022513F8
+_02249DB4: .word 0x00000246
+ thumb_func_end MOD18_02249CC8
+
+ thumb_func_start MOD18_02249DB8
+MOD18_02249DB8: ; 0x02249DB8
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x50]
+ bl FUN_02001204
+ mov r1, #0x93
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldrh r6, [r5, r1]
+ ldr r0, [r5, #0x50]
+ add r1, r5, r1
+ bl FUN_0200143C
+ mov r0, #0x93
+ lsl r0, r0, #2
+ ldrh r0, [r5, r0]
+ cmp r6, r0
+ beq _02249DE2
+ ldr r0, _02249E80 ; =0x000005DC
+ bl FUN_020054C8
+_02249DE2:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _02249DF4
+ add r0, r0, #1
+ cmp r4, r0
+ bne _02249E0E
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_02249DF4:
+ ldr r0, _02249E80 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ bl MOD18_02249A64
+ add r0, r5, #0
+ bl MOD18_02249B50
+ ldr r0, _02249E84 ; =0x00000246
+ mov r1, #5
+ strb r1, [r5, r0]
+ b _02249E7C
+_02249E0E:
+ add r0, r5, #0
+ bl MOD18_02249A64
+ cmp r4, #1
+ bne _02249E3A
+ ldr r0, _02249E88 ; =0x022513F8
+ add r1, r5, #0
+ ldr r0, [r0]
+ ldrb r0, [r0, #4]
+ bl MOD18_022493DC
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl MOD18_0223EF60
+ ldr r0, _02249E8C ; =0x00000631
+ bl FUN_020054C8
+ ldr r0, _02249E84 ; =0x00000246
+ mov r1, #3
+ strb r1, [r5, r0]
+ b _02249E7C
+_02249E3A:
+ cmp r4, #2
+ bne _02249E7C
+ ldr r0, _02249E80 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _02249E88 ; =0x022513F8
+ ldr r0, [r0]
+ ldrb r0, [r0, #5]
+ bl MOD18_02249AD8
+ bl MOD18_0223D638
+ ldr r2, _02249E88 ; =0x022513F8
+ mov r1, #2
+ ldr r2, [r2]
+ ldrb r2, [r2, #5]
+ bl MOD18_0224DF04
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x82
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, _02249E90 ; =MOD18_02249B50
+ mov r1, #5
+ str r0, [r5]
+ ldr r0, _02249E94 ; =0x00000245
+ strb r1, [r5, r0]
+ mov r1, #0xe
+ add r0, r0, #1
+ strb r1, [r5, r0]
+_02249E7C:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02249E80: .word 0x000005DC
+_02249E84: .word 0x00000246
+_02249E88: .word 0x022513F8
+_02249E8C: .word 0x00000631
+_02249E90: .word MOD18_02249B50
+_02249E94: .word 0x00000245
+ thumb_func_end MOD18_02249DB8
+
+ thumb_func_start MOD18_02249E98
+MOD18_02249E98: ; 0x02249E98
+ push {r3, lr}
+ ldr r1, _02249EB8 ; =0x022513F8
+ ldr r1, [r1]
+ ldrb r1, [r1, #5]
+ cmp r1, r0
+ beq _02249EA8
+ bl ErrorHandling
+_02249EA8:
+ ldr r0, _02249EB8 ; =0x022513F8
+ ldr r1, [r0]
+ ldr r0, [r1]
+ ldrb r1, [r1, #4]
+ bl FUN_02026080
+ pop {r3, pc}
+ nop
+_02249EB8: .word 0x022513F8
+ thumb_func_end MOD18_02249E98
+
+ thumb_func_start MOD18_02249EBC
+MOD18_02249EBC: ; 0x02249EBC
+ push {r4, lr}
+ add r4, r1, #0
+ mov r1, #0x13
+ bl FUN_02001470
+ mov r2, #0x81
+ add r1, r0, #0
+ lsl r2, r2, #2
+ ldr r2, [r1, r2]
+ add r0, r4, #0
+ blx r2
+ mov r1, #1
+ mvn r1, r1
+ cmp r4, r1
+ bne _02249EDE
+ mov r4, #0x3d
+ b _02249EE2
+_02249EDE:
+ add r4, r0, #0
+ add r4, #0x3e
+_02249EE2:
+ bl MOD18_0223D678
+ mov r2, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_02249EBC
+
+ thumb_func_start MOD18_02249EF4
+MOD18_02249EF4: ; 0x02249EF4
+ mov r2, #2
+ ldr r1, _02249F14 ; =MOD18_022493C8
+ lsl r2, r2, #8
+ str r1, [r0, r2]
+ add r1, r2, #4
+ ldr r3, _02249F18 ; =MOD18_022493F4
+ add r2, #8
+ str r3, [r0, r1]
+ ldr r1, _02249F1C ; =MOD18_0224940C
+ ldr r3, _02249F20 ; =MOD18_02249F8C
+ str r1, [r0, r2]
+ ldr r1, _02249F24 ; =MOD18_02249EBC
+ str r1, [r0, #0x60]
+ ldr r1, _02249F28 ; =0x020260ED
+ bx r3
+ nop
+_02249F14: .word MOD18_022493C8
+_02249F18: .word MOD18_022493F4
+_02249F1C: .word MOD18_0224940C
+_02249F20: .word MOD18_02249F8C
+_02249F24: .word MOD18_02249EBC
+_02249F28: .word 0x020260ED
+ thumb_func_end MOD18_02249EF4
+
+ thumb_func_start MOD18_02249F2C
+MOD18_02249F2C: ; 0x02249F2C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #9
+ bl MOD18_0223E628
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #9
+ bl MOD18_0223E5F0
+ mov r1, #0x23
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r2, _02249F78 ; =MOD18_022493C8
+ sub r0, #0x30
+ str r2, [r4, r0]
+ add r0, r1, #0
+ ldr r2, _02249F7C ; =MOD18_022493F4
+ sub r0, #0x2c
+ str r2, [r4, r0]
+ add r0, r1, #0
+ ldr r2, _02249F80 ; =MOD18_0224940C
+ sub r0, #0x28
+ str r2, [r4, r0]
+ ldr r0, _02249F84 ; =MOD18_02249EBC
+ str r0, [r4, #0x60]
+ sub r0, r1, #4
+ ldr r0, [r4, r0]
+ add r1, #0x1c
+ strh r0, [r4, r1]
+ ldr r1, _02249F88 ; =0x020260ED
+ add r0, r4, #0
+ bl MOD18_02249F8C
+ pop {r4, pc}
+ nop
+_02249F78: .word MOD18_022493C8
+_02249F7C: .word MOD18_022493F4
+_02249F80: .word MOD18_0224940C
+_02249F84: .word MOD18_02249EBC
+_02249F88: .word 0x020260ED
+ thumb_func_end MOD18_02249F2C
+
+ thumb_func_start MOD18_02249F8C
+MOD18_02249F8C: ; 0x02249F8C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ mov r2, #0x81
+ add r5, r0, #0
+ lsl r2, r2, #2
+ str r1, [sp, #0x14]
+ ldr r1, [r5, r2]
+ str r1, [sp, #0x1c]
+ add r1, r2, #4
+ ldr r7, [r5, r1]
+ sub r1, r2, #4
+ ldr r1, [r5, r1]
+ blx r1
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD18_022498EC
+ bl MOD18_0223D678
+ ldr r1, _0224A0D4 ; =0x00000239
+ mov r2, #0
+ bl MOD18_0224DB80
+ add r0, r6, #1
+ mov r1, #4
+ bl FUN_02012838
+ str r0, [r5, #0x40]
+ mov r2, #3
+ add r1, r5, #0
+ str r2, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _0224A0D8 ; =0x00000257
+ add r1, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0xc]
+ mov r3, #0x13
+ ldr r0, [r0, #8]
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _0224A0DC ; =0x000003D9
+ add r0, #0x10
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ bl MOD18_0223D678
+ bl MOD18_0224DBB4
+ mov r4, #0
+ str r0, [sp, #0x18]
+ cmp r6, #0
+ ble _0224A058
+_0224A002:
+ ldr r2, [sp, #0x1c]
+ add r0, r4, #0
+ add r1, r5, #0
+ blx r2
+ add r2, r0, #0
+ ldr r0, [r5, #0x70]
+ mov r1, #2
+ bl FUN_0200B164
+ add r0, r4, #0
+ add r1, r5, #0
+ blx r7
+ add r2, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x70]
+ mov r1, #6
+ mov r3, #2
+ bl FUN_0200AD38
+ bl MOD18_0223D638
+ bl MOD18_0224DBB4
+ ldr r2, [r5, #0x6c]
+ mov r1, #0x80
+ bl FUN_0200A8E0
+ ldr r0, [r5, #0x70]
+ ldr r1, [r5, #0x68]
+ ldr r2, [r5, #0x6c]
+ bl FUN_0200B7B8
+ ldr r0, [r5, #0x40]
+ ldr r1, [r5, #0x68]
+ add r2, r4, #0
+ bl FUN_020128A0
+ add r4, r4, #1
+ cmp r4, r6
+ blt _0224A002
+_0224A058:
+ mov r2, #0x3c
+ add r3, r2, #0
+ ldr r0, [r5, #0x40]
+ ldr r1, [sp, #0x18]
+ sub r3, #0x3e
+ bl FUN_02012880
+ ldr r3, _0224A0E0 ; =0x02250598
+ add r2, sp, #0x20
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, r6, #1
+ add r2, sp, #0x20
+ strh r0, [r2, #0x10]
+ mov r1, #6
+ strh r1, [r2, #0x12]
+ ldr r0, [r5, #0x40]
+ str r0, [sp, #0x20]
+ add r0, r5, #0
+ add r0, #0x10
+ str r0, [sp, #0x2c]
+ ldr r0, [r5, #0x60]
+ str r0, [sp, #0x24]
+ str r5, [sp, #0x3c]
+ ldrh r2, [r2, #0x10]
+ add r0, r5, #0
+ bl MOD18_0224AFB0
+ ldr r0, [sp, #0x14]
+ mov r2, #0x23
+ str r0, [sp]
+ ldr r0, _0224A0E4 ; =0x022513F8
+ lsl r2, r2, #4
+ ldr r0, [r0]
+ mov r3, #4
+ ldr r0, [r0]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r1, [r5, r2]
+ sub r2, r2, #4
+ ldr r2, [r5, r2]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, sp, #0x20
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ bl MOD18_02244028
+ str r0, [r5, #0x4c]
+ ldr r0, _0224A0E8 ; =0x00000246
+ mov r1, #6
+ strb r1, [r5, r0]
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0224A0D4: .word 0x00000239
+_0224A0D8: .word 0x00000257
+_0224A0DC: .word 0x000003D9
+_0224A0E0: .word 0x02250598
+_0224A0E4: .word 0x022513F8
+_0224A0E8: .word 0x00000246
+ thumb_func_end MOD18_02249F8C
+
+ thumb_func_start MOD18_0224A0EC
+MOD18_0224A0EC: ; 0x0224A0EC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x4c]
+ bl MOD18_02244140
+ add r4, r0, #0
+ ldr r0, [r5, #0x4c]
+ add r1, sp, #0
+ ldr r0, [r0, #0xc]
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_02001448
+ add r2, sp, #0
+ ldrh r1, [r2]
+ ldrh r2, [r2, #2]
+ mov r0, #9
+ bl MOD18_0223E57C
+ ldr r0, [r5, #0x4c]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ bl FUN_02001470
+ add r1, sp, #0
+ add r2, r0, #0
+ ldrh r1, [r1, #2]
+ add r0, r5, #0
+ mov r3, #6
+ bl MOD18_0224B004
+ bl FUN_020311F0
+ cmp r0, #0
+ beq _0224A136
+ mov r4, #1
+ mvn r4, r4
+_0224A136:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _0224A140
+ add r4, r0, #0
+_0224A140:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _0224A152
+ add r0, r0, #1
+ cmp r4, r0
+ bne _0224A15A
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0224A152:
+ add r0, r5, #0
+ bl MOD18_02249AAC
+ b _0224A1B4
+_0224A15A:
+ add r0, r5, #0
+ bl MOD18_022498EC
+ ldr r0, _0224A1B8 ; =0x022513F8
+ add r1, r5, #0
+ ldr r0, [r0]
+ strb r4, [r0, #4]
+ add r0, r4, #0
+ bl MOD18_022493F4
+ ldr r1, _0224A1B8 ; =0x022513F8
+ ldr r1, [r1]
+ strb r0, [r1, #5]
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD18_0224996C
+ ldr r0, _0224A1BC ; =0x00000246
+ mov r1, #0x10
+ strb r1, [r5, r0]
+ bl MOD18_0223D638
+ ldr r2, _0224A1B8 ; =0x022513F8
+ mov r1, #2
+ ldr r2, [r2]
+ ldrb r2, [r2, #5]
+ bl MOD18_0224DEF0
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x81
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+ mov r1, #0
+ ldr r0, [r5, #8]
+ add r2, r1, #0
+ bl FUN_0205EC6C
+ ldr r0, [r5, #8]
+ mov r1, #1
+ mov r2, #0
+ bl FUN_0205EC6C
+_0224A1B4:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224A1B8: .word 0x022513F8
+_0224A1BC: .word 0x00000246
+ thumb_func_end MOD18_0224A0EC
+
+ thumb_func_start MOD18_0224A1C0
+MOD18_0224A1C0: ; 0x0224A1C0
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x50]
+ bl FUN_02001204
+ mov r1, #0x93
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldrh r6, [r5, r1]
+ ldr r0, [r5, #0x50]
+ add r1, r5, r1
+ bl FUN_0200143C
+ mov r0, #0x93
+ lsl r0, r0, #2
+ ldrh r0, [r5, r0]
+ cmp r6, r0
+ beq _0224A1EA
+ ldr r0, _0224A2A0 ; =0x000005DC
+ bl FUN_020054C8
+_0224A1EA:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _0224A1FC
+ add r0, r0, #1
+ cmp r4, r0
+ bne _0224A216
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0224A1FC:
+ ldr r0, _0224A2A0 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ bl MOD18_02249A64
+ add r0, r5, #0
+ bl MOD18_02249F2C
+ ldr r0, _0224A2A4 ; =0x00000246
+ mov r1, #6
+ strb r1, [r5, r0]
+ b _0224A29C
+_0224A216:
+ add r0, r5, #0
+ bl MOD18_02249A64
+ cmp r4, #1
+ bne _0224A25A
+ bl FUN_02031190
+ add r4, r0, #0
+ bl FUN_0204E4D4
+ add r6, r0, #0
+ add r0, r4, #0
+ bl FUN_0204E50C
+ add r4, r0, #0
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+ ldr r0, _0224A2A8 ; =0x022513F8
+ add r1, r5, #0
+ ldr r0, [r0]
+ ldrb r0, [r0, #4]
+ bl MOD18_0224940C
+ add r1, r0, #0
+ ldr r0, _0224A2A8 ; =0x022513F8
+ add r2, r6, #0
+ ldr r0, [r0]
+ add r3, r4, #0
+ ldrb r0, [r0, #5]
+ bl MOD18_0223CF9C
+ b _0224A28C
+_0224A25A:
+ cmp r4, #2
+ bne _0224A28C
+ ldr r0, _0224A2A0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _0224A2A8 ; =0x022513F8
+ ldr r0, [r0]
+ ldrb r0, [r0, #5]
+ bl MOD18_02249E98
+ bl MOD18_0223D638
+ ldr r2, _0224A2A8 ; =0x022513F8
+ mov r1, #2
+ ldr r2, [r2]
+ ldrb r2, [r2, #5]
+ bl MOD18_0224DEF0
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x82
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+_0224A28C:
+ ldr r0, _0224A2AC ; =MOD18_02249F2C
+ mov r1, #6
+ str r0, [r5]
+ ldr r0, _0224A2B0 ; =0x00000245
+ strb r1, [r5, r0]
+ mov r1, #0xe
+ add r0, r0, #1
+ strb r1, [r5, r0]
+_0224A29C:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0224A2A0: .word 0x000005DC
+_0224A2A4: .word 0x00000246
+_0224A2A8: .word 0x022513F8
+_0224A2AC: .word MOD18_02249F2C
+_0224A2B0: .word 0x00000245
+ thumb_func_end MOD18_0224A1C0
+
+ thumb_func_start MOD18_0224A2B4
+MOD18_0224A2B4: ; 0x0224A2B4
+ push {r4, lr}
+ add r4, r1, #0
+ mov r1, #0x13
+ bl FUN_02001470
+ mov r2, #0x81
+ add r1, r0, #0
+ lsl r2, r2, #2
+ ldr r2, [r1, r2]
+ add r0, r4, #0
+ blx r2
+ mov r1, #1
+ mvn r1, r1
+ cmp r4, r1
+ bne _0224A2D6
+ mov r4, #0x3d
+ b _0224A2DA
+_0224A2D6:
+ add r4, r0, #0
+ add r4, #0x3e
+_0224A2DA:
+ bl MOD18_0223D678
+ mov r2, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224A2B4
+
+ thumb_func_start MOD18_0224A2EC
+MOD18_0224A2EC: ; 0x0224A2EC
+ mov r1, #2
+ ldr r2, _0224A300 ; =MOD18_02249424
+ lsl r1, r1, #8
+ str r2, [r0, r1]
+ ldr r2, _0224A304 ; =MOD18_02249438
+ add r1, r1, #4
+ str r2, [r0, r1]
+ ldr r3, _0224A308 ; =MOD18_0224A360
+ mov r1, #0
+ bx r3
+ .align 2, 0
+_0224A300: .word MOD18_02249424
+_0224A304: .word MOD18_02249438
+_0224A308: .word MOD18_0224A360
+ thumb_func_end MOD18_0224A2EC
+
+ thumb_func_start MOD18_0224A30C
+MOD18_0224A30C: ; 0x0224A30C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xb
+ bl MOD18_0223E628
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #0xb
+ bl MOD18_0223E5F0
+ mov r1, #0x23
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r2, _0224A350 ; =MOD18_02249424
+ sub r0, #0x30
+ str r2, [r4, r0]
+ add r0, r1, #0
+ ldr r2, _0224A354 ; =MOD18_02249438
+ sub r0, #0x2c
+ str r2, [r4, r0]
+ ldr r0, _0224A358 ; =MOD18_0224A2B4
+ str r0, [r4, #0x60]
+ sub r0, r1, #4
+ ldr r0, [r4, r0]
+ add r1, #0x1c
+ strh r0, [r4, r1]
+ ldr r1, _0224A35C ; =0x020261ED
+ add r0, r4, #0
+ bl MOD18_0224A360
+ pop {r4, pc}
+ nop
+_0224A350: .word MOD18_02249424
+_0224A354: .word MOD18_02249438
+_0224A358: .word MOD18_0224A2B4
+_0224A35C: .word 0x020261ED
+ thumb_func_end MOD18_0224A30C
+
+ thumb_func_start MOD18_0224A360
+MOD18_0224A360: ; 0x0224A360
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ str r1, [sp, #0x14]
+ mov r1, #0x81
+ add r5, r0, #0
+ lsl r1, r1, #2
+ ldr r7, [r5, r1]
+ sub r1, r1, #4
+ ldr r1, [r5, r1]
+ blx r1
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD18_022498EC
+ bl MOD18_0223D678
+ ldr r1, _0224A464 ; =0x00000239
+ mov r2, #0
+ bl MOD18_0224DB80
+ add r0, r6, #1
+ mov r1, #4
+ bl FUN_02012838
+ str r0, [r5, #0x40]
+ mov r2, #3
+ add r1, r5, #0
+ str r2, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _0224A468 ; =0x00000257
+ add r1, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0xc]
+ mov r3, #0x13
+ ldr r0, [r0, #8]
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _0224A46C ; =0x000003D9
+ add r0, #0x10
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ bl MOD18_0223D678
+ bl MOD18_0224DBB4
+ mov r4, #0
+ str r0, [sp, #0x18]
+ cmp r6, #0
+ ble _0224A3E8
+_0224A3D0:
+ add r0, r4, #0
+ add r1, r5, #0
+ blx r7
+ add r2, r0, #0
+ ldr r0, [r5, #0x40]
+ ldr r1, [sp, #0x18]
+ add r3, r4, #0
+ bl FUN_02012880
+ add r4, r4, #1
+ cmp r4, r6
+ blt _0224A3D0
+_0224A3E8:
+ mov r2, #0x3c
+ add r3, r2, #0
+ ldr r0, [r5, #0x40]
+ ldr r1, [sp, #0x18]
+ sub r3, #0x3e
+ bl FUN_02012880
+ ldr r3, _0224A470 ; =0x02250598
+ add r2, sp, #0x1c
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, r6, #1
+ add r2, sp, #0x1c
+ strh r0, [r2, #0x10]
+ mov r1, #6
+ strh r1, [r2, #0x12]
+ ldr r0, [r5, #0x40]
+ str r0, [sp, #0x1c]
+ add r0, r5, #0
+ add r0, #0x10
+ str r0, [sp, #0x28]
+ ldr r0, [r5, #0x60]
+ str r0, [sp, #0x20]
+ str r5, [sp, #0x38]
+ ldrh r2, [r2, #0x10]
+ add r0, r5, #0
+ bl MOD18_0224AFB0
+ ldr r0, [sp, #0x14]
+ mov r2, #0x23
+ str r0, [sp]
+ ldr r0, _0224A474 ; =0x022513F8
+ lsl r2, r2, #4
+ ldr r0, [r0]
+ mov r3, #4
+ ldr r0, [r0]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r1, [r5, r2]
+ sub r2, r2, #4
+ ldr r2, [r5, r2]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, sp, #0x1c
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ bl MOD18_02244028
+ str r0, [r5, #0x4c]
+ ldr r0, _0224A478 ; =0x00000246
+ mov r1, #7
+ strb r1, [r5, r0]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0224A464: .word 0x00000239
+_0224A468: .word 0x00000257
+_0224A46C: .word 0x000003D9
+_0224A470: .word 0x02250598
+_0224A474: .word 0x022513F8
+_0224A478: .word 0x00000246
+ thumb_func_end MOD18_0224A360
+
+ thumb_func_start MOD18_0224A47C
+MOD18_0224A47C: ; 0x0224A47C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x4c]
+ bl MOD18_02244140
+ add r4, r0, #0
+ ldr r0, [r5, #0x4c]
+ add r1, sp, #0
+ ldr r0, [r0, #0xc]
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_02001448
+ add r2, sp, #0
+ ldrh r1, [r2]
+ ldrh r2, [r2, #2]
+ mov r0, #0xb
+ bl MOD18_0223E57C
+ ldr r0, [r5, #0x4c]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ bl FUN_02001470
+ add r1, sp, #0
+ add r2, r0, #0
+ ldrh r1, [r1, #2]
+ add r0, r5, #0
+ mov r3, #6
+ bl MOD18_0224B004
+ bl FUN_020311F0
+ cmp r0, #0
+ beq _0224A4C6
+ mov r4, #1
+ mvn r4, r4
+_0224A4C6:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _0224A4D0
+ add r4, r0, #0
+_0224A4D0:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _0224A4E2
+ add r0, r0, #1
+ cmp r4, r0
+ bne _0224A4EA
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0224A4E2:
+ add r0, r5, #0
+ bl MOD18_02249AAC
+ b _0224A544
+_0224A4EA:
+ add r0, r5, #0
+ bl MOD18_022498EC
+ ldr r0, _0224A548 ; =0x022513F8
+ add r1, r5, #0
+ ldr r0, [r0]
+ strb r4, [r0, #4]
+ add r0, r4, #0
+ bl MOD18_02249438
+ ldr r1, _0224A548 ; =0x022513F8
+ ldr r1, [r1]
+ strb r0, [r1, #5]
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD18_0224996C
+ bl MOD18_0223D638
+ ldr r2, _0224A548 ; =0x022513F8
+ mov r1, #2
+ ldr r2, [r2]
+ ldrb r2, [r2, #5]
+ bl MOD18_0224DEF0
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x81
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+ ldr r0, _0224A54C ; =0x00000246
+ mov r1, #0x11
+ strb r1, [r5, r0]
+ mov r1, #0
+ ldr r0, [r5, #8]
+ add r2, r1, #0
+ bl FUN_0205EC6C
+ ldr r0, [r5, #8]
+ mov r1, #1
+ mov r2, #0
+ bl FUN_0205EC6C
+_0224A544:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224A548: .word 0x022513F8
+_0224A54C: .word 0x00000246
+ thumb_func_end MOD18_0224A47C
+
+ thumb_func_start MOD18_0224A550
+MOD18_0224A550: ; 0x0224A550
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x50]
+ bl FUN_02001204
+ mov r1, #0x93
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldrh r6, [r5, r1]
+ ldr r0, [r5, #0x50]
+ add r1, r5, r1
+ bl FUN_0200143C
+ mov r0, #0x93
+ lsl r0, r0, #2
+ ldrh r0, [r5, r0]
+ cmp r6, r0
+ beq _0224A57A
+ ldr r0, _0224A694 ; =0x000005DC
+ bl FUN_020054C8
+_0224A57A:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _0224A58C
+ add r0, r0, #1
+ cmp r4, r0
+ bne _0224A5A6
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0224A58C:
+ ldr r0, _0224A694 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ bl MOD18_02249A64
+ add r0, r5, #0
+ bl MOD18_0224A30C
+ ldr r0, _0224A698 ; =0x00000246
+ mov r1, #7
+ strb r1, [r5, r0]
+ b _0224A68E
+_0224A5A6:
+ add r0, r5, #0
+ bl MOD18_02249A64
+ cmp r4, #3
+ bne _0224A64A
+ ldr r0, _0224A69C ; =0x022513F8
+ ldr r0, [r0]
+ ldrb r0, [r0, #5]
+ bl FUN_02025D48
+ add r4, r0, #0
+ ldr r0, [r5, #0xc]
+ ldr r0, [r0, #0xc]
+ bl FUN_0206F158
+ add r6, r0, #0
+ ldr r0, _0224A694 ; =0x000005DC
+ bl FUN_020054C8
+ lsl r1, r4, #0x10
+ add r0, r6, #0
+ lsr r1, r1, #0x10
+ mov r2, #1
+ mov r3, #4
+ bl FUN_0206ED38
+ cmp r0, #0
+ beq _0224A62A
+ ldr r0, _0224A69C ; =0x022513F8
+ ldr r1, [r0]
+ ldr r0, [r1]
+ ldrb r1, [r1, #4]
+ bl FUN_02026194
+ bl MOD18_0223D638
+ ldr r2, _0224A69C ; =0x022513F8
+ mov r1, #0
+ ldr r2, [r2]
+ ldrb r2, [r2, #5]
+ bl MOD18_0224DEF0
+ ldr r0, _0224A69C ; =0x022513F8
+ ldr r0, [r0]
+ ldrb r0, [r0, #5]
+ add r0, #0xe3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #1
+ bhi _0224A61A
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x51
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ b _0224A67E
+_0224A61A:
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x4f
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ b _0224A67E
+_0224A62A:
+ bl MOD18_0223D638
+ ldr r2, _0224A69C ; =0x022513F8
+ mov r1, #0
+ ldr r2, [r2]
+ ldrb r2, [r2, #5]
+ bl MOD18_0224DEF0
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x50
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ b _0224A67E
+_0224A64A:
+ cmp r4, #2
+ bne _0224A67E
+ ldr r0, _0224A694 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _0224A69C ; =0x022513F8
+ ldr r1, [r0]
+ ldr r0, [r1]
+ ldrb r1, [r1, #4]
+ bl FUN_02026194
+ bl MOD18_0223D638
+ ldr r2, _0224A69C ; =0x022513F8
+ mov r1, #2
+ ldr r2, [r2]
+ ldrb r2, [r2, #5]
+ bl MOD18_0224DEF0
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x82
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+_0224A67E:
+ ldr r0, _0224A6A0 ; =MOD18_0224A30C
+ mov r1, #7
+ str r0, [r5]
+ ldr r0, _0224A6A4 ; =0x00000245
+ strb r1, [r5, r0]
+ mov r1, #0xe
+ add r0, r0, #1
+ strb r1, [r5, r0]
+_0224A68E:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ nop
+_0224A694: .word 0x000005DC
+_0224A698: .word 0x00000246
+_0224A69C: .word 0x022513F8
+_0224A6A0: .word MOD18_0224A30C
+_0224A6A4: .word 0x00000245
+ thumb_func_end MOD18_0224A550
+
+ thumb_func_start MOD18_0224A6A8
+MOD18_0224A6A8: ; 0x0224A6A8
+ ldr r1, _0224A6B0 ; =0x00000246
+ mov r2, #2
+ strb r2, [r0, r1]
+ bx lr
+ .align 2, 0
+_0224A6B0: .word 0x00000246
+ thumb_func_end MOD18_0224A6A8
+
+ thumb_func_start MOD18_0224A6B4
+MOD18_0224A6B4: ; 0x0224A6B4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD18_022498EC
+ ldr r0, [r5, #0xc]
+ ldr r0, [r0, #0x38]
+ bl FUN_02055320
+ add r4, r0, #0
+ ldr r0, [r5, #0xc]
+ ldr r0, [r0, #0x38]
+ bl FUN_0205532C
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD18_0223E2F4
+ cmp r0, #0
+ beq _0224A6F0
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x42
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, _0224A70C ; =0x00000246
+ mov r1, #0xd
+ strb r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+_0224A6F0:
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x34
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ mov r1, #0x8a
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0xb
+ add r1, #0x1e
+ strb r0, [r5, r1]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224A70C: .word 0x00000246
+ thumb_func_end MOD18_0224A6B4
+
+ thumb_func_start MOD18_0224A710
+MOD18_0224A710: ; 0x0224A710
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224A73C
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r4, #0xc]
+ ldr r1, _0224A740 ; =0x0225056C
+ ldr r0, [r0, #8]
+ ldr r2, _0224A744 ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r4, #0x5c]
+ ldr r0, _0224A748 ; =0x00000246
+ mov r1, #0xc
+ strb r1, [r4, r0]
+_0224A73C:
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_0224A740: .word 0x0225056C
+_0224A744: .word 0x000003D9
+_0224A748: .word 0x00000246
+ thumb_func_end MOD18_0224A710
+
+ thumb_func_start MOD18_0224A74C
+MOD18_0224A74C: ; 0x0224A74C
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x5c]
+ mov r1, #4
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0224A77E
+ cmp r0, #0
+ bne _0224A76C
+ ldr r0, _0224A780 ; =0x00000246
+ mov r1, #0xf
+ strb r1, [r4, r0]
+ b _0224A77A
+_0224A76C:
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ add r0, r4, #0
+ bl MOD18_02249AAC
+_0224A77A:
+ mov r0, #0
+ str r0, [r4, #0x5c]
+_0224A77E:
+ pop {r4, pc}
+ .align 2, 0
+_0224A780: .word 0x00000246
+ thumb_func_end MOD18_0224A74C
+
+ thumb_func_start MOD18_0224A784
+MOD18_0224A784: ; 0x0224A784
+ ldr r3, _0224A788 ; =MOD18_02249AAC
+ bx r3
+ .align 2, 0
+_0224A788: .word MOD18_02249AAC
+ thumb_func_end MOD18_0224A784
+
+ thumb_func_start MOD18_0224A78C
+MOD18_0224A78C: ; 0x0224A78C
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl MOD18_022498EC
+ bl MOD18_0224D704
+ ldr r0, [r4, #0xc]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r1, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, [r4, #0xc]
+ ldr r2, _0224A7C0 ; =MOD18_0224A784
+ ldr r0, [r0, #8]
+ add r3, r4, #0
+ bl MOD18_0224D5CC
+ ldr r0, _0224A7C4 ; =0x00000246
+ mov r1, #0xa
+ strb r1, [r4, r0]
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_0224A7C0: .word MOD18_0224A784
+_0224A7C4: .word 0x00000246
+ thumb_func_end MOD18_0224A78C
+
+ thumb_func_start MOD18_0224A7C8
+MOD18_0224A7C8: ; 0x0224A7C8
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ mov r1, #0x25
+ add r5, r0, #0
+ mov r0, #4
+ lsl r1, r1, #4
+ bl FUN_02016998
+ mov r2, #0x25
+ mov r1, #0
+ lsl r2, r2, #4
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x7f
+ str r6, [r4, #0xc]
+ lsl r0, r0, #2
+ str r5, [r4, r0]
+ mov r1, #0
+ add r0, #0x4a
+ strb r1, [r4, r0]
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ str r0, [r4, #0x68]
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ str r0, [r4, #0x6c]
+ mov r0, #4
+ bl FUN_0200AA80
+ str r0, [r4, #0x70]
+ bl FUN_0204F7E4
+ bl MOD18_0223D648
+ mov r1, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD18_0224DCB8
+ ldr r0, _0224A838 ; =MOD18_0224A914
+ ldr r2, _0224A83C ; =0x00002710
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #4]
+ ldr r1, [r4, #4]
+ ldr r2, _0224A840 ; =MOD18_0224AFE8
+ add r0, r4, #0
+ bl MOD18_0223E688
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0224A838: .word MOD18_0224A914
+_0224A83C: .word 0x00002710
+_0224A840: .word MOD18_0224AFE8
+ thumb_func_end MOD18_0224A7C8
+
+ thumb_func_start MOD18_0224A844
+MOD18_0224A844: ; 0x0224A844
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl MOD18_0223D648
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224A870
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r4, #0xc]
+ ldr r1, _0224A874 ; =0x0225056C
+ ldr r0, [r0, #8]
+ ldr r2, _0224A878 ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r4, #0x5c]
+ ldr r0, _0224A87C ; =0x00000246
+ mov r1, #1
+ strb r1, [r4, r0]
+_0224A870:
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_0224A874: .word 0x0225056C
+_0224A878: .word 0x000003D9
+_0224A87C: .word 0x00000246
+ thumb_func_end MOD18_0224A844
+
+ thumb_func_start MOD18_0224A880
+MOD18_0224A880: ; 0x0224A880
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x5c]
+ mov r1, #4
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0224A8A6
+ cmp r0, #0
+ bne _0224A89C
+ mov r1, #3
+ b _0224A89E
+_0224A89C:
+ mov r1, #2
+_0224A89E:
+ ldr r0, _0224A8A8 ; =0x00000246
+ strb r1, [r4, r0]
+ mov r0, #0
+ str r0, [r4, #0x5c]
+_0224A8A6:
+ pop {r4, pc}
+ .align 2, 0
+_0224A8A8: .word 0x00000246
+ thumb_func_end MOD18_0224A880
+
+ thumb_func_start MOD18_0224A8AC
+MOD18_0224A8AC: ; 0x0224A8AC
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ ldr r0, [r5, #0x5c]
+ add r4, r2, #0
+ cmp r0, #0
+ beq _0224A8C0
+ mov r1, #4
+ bl FUN_020021EC
+_0224A8C0:
+ ldr r0, [r5, #0x68]
+ bl FUN_02021A20
+ ldr r0, [r5, #0x6c]
+ bl FUN_02021A20
+ ldr r0, [r5, #0x70]
+ bl FUN_0200AB18
+ bl MOD18_0223D648
+ bl MOD18_0224DD94
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+ mov r0, #0x7f
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ cmp r1, #0
+ beq _0224A8F0
+ mov r0, #0
+ blx r1
+_0224A8F0:
+ mov r0, #0
+ str r0, [r5, #4]
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _0224A8FE
+ bl FUN_0205EBEC
+_0224A8FE:
+ add r0, r5, #0
+ bl FUN_02016A18
+ cmp r4, #0
+ bne _0224A90C
+ bl FUN_0204F7FC
+_0224A90C:
+ add r0, r6, #0
+ bl FUN_0200CAB4
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD18_0224A8AC
+
+ thumb_func_start MOD18_0224A914
+MOD18_0224A914: ; 0x0224A914
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02031190
+ bl FUN_0204EE9C
+ cmp r0, #0
+ bne _0224A932
+ ldr r0, _0224A9AC ; =0x00000246
+ ldrb r1, [r4, r0]
+ cmp r1, #1
+ bhi _0224A932
+ mov r1, #2
+ strb r1, [r4, r0]
+_0224A932:
+ ldr r0, _0224A9AC ; =0x00000246
+ ldrb r0, [r4, r0]
+ cmp r0, #4
+ bhi _0224A9AA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0224A946: ; jump table
+ .short _0224A950 - _0224A946 - 2 ; case 0
+ .short _0224A958 - _0224A946 - 2 ; case 1
+ .short _0224A960 - _0224A946 - 2 ; case 2
+ .short _0224A970 - _0224A946 - 2 ; case 3
+ .short _0224A98E - _0224A946 - 2 ; case 4
+_0224A950:
+ add r0, r4, #0
+ bl MOD18_0224A844
+ pop {r3, r4, r5, pc}
+_0224A958:
+ add r0, r4, #0
+ bl MOD18_0224A880
+ pop {r3, r4, r5, pc}
+_0224A960:
+ bl MOD18_0223E6A0
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD18_0224A8AC
+ pop {r3, r4, r5, pc}
+_0224A970:
+ bl MOD18_0223E6A0
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD18_0224A8AC
+ mov r1, #0
+ add r0, sp, #0
+ strb r1, [r0]
+ mov r0, #0x54
+ add r1, sp, #0
+ bl FUN_020311D0
+ pop {r3, r4, r5, pc}
+_0224A98E:
+ bl MOD18_0223D648
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224A9AA
+ ldr r0, _0224A9B0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _0224A9AA
+ ldr r0, _0224A9AC ; =0x00000246
+ mov r1, #2
+ strb r1, [r4, r0]
+_0224A9AA:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224A9AC: .word 0x00000246
+_0224A9B0: .word 0x021C48B8
+ thumb_func_end MOD18_0224A914
+
+ thumb_func_start MOD18_0224A9B4
+MOD18_0224A9B4: ; 0x0224A9B4
+ push {r4, lr}
+ add r4, r1, #0
+ mov r1, #0x13
+ bl FUN_02001470
+ mov r2, #0x81
+ add r1, r0, #0
+ lsl r2, r2, #2
+ ldr r2, [r1, r2]
+ add r0, r4, #0
+ blx r2
+ mov r1, #1
+ mvn r1, r1
+ cmp r4, r1
+ bne _0224A9D6
+ mov r4, #0x8b
+ b _0224A9DA
+_0224A9D6:
+ add r4, r0, #0
+ add r4, #0x8a
+_0224A9DA:
+ bl MOD18_0223D678
+ mov r2, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224A9B4
+
+ thumb_func_start MOD18_0224A9EC
+MOD18_0224A9EC: ; 0x0224A9EC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0x13
+ add r5, r0, #0
+ bl FUN_02001470
+ ldr r0, [r0, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r1, r4, #0
+ bl FUN_02025F0C
+ cmp r0, #0
+ bne _0224AA1A
+ add r0, r5, #0
+ mov r1, #1
+ mov r2, #0xf
+ mov r3, #2
+ bl FUN_020013E8
+ pop {r3, r4, r5, pc}
+_0224AA1A:
+ mov r1, #2
+ add r0, r5, #0
+ mov r2, #0xf
+ add r3, r1, #0
+ bl FUN_020013E8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_0224A9EC
+
+ thumb_func_start MOD18_0224AA28
+MOD18_0224AA28: ; 0x0224AA28
+ mov r1, #2
+ ldr r2, _0224AA40 ; =MOD18_02249378
+ lsl r1, r1, #8
+ str r2, [r0, r1]
+ ldr r2, _0224AA44 ; =MOD18_0224938C
+ add r1, r1, #4
+ str r2, [r0, r1]
+ mov r1, #0
+ ldr r3, _0224AA48 ; =MOD18_0224AB08
+ str r1, [r0, #0x64]
+ bx r3
+ nop
+_0224AA40: .word MOD18_02249378
+_0224AA44: .word MOD18_0224938C
+_0224AA48: .word MOD18_0224AB08
+ thumb_func_end MOD18_0224AA28
+
+ thumb_func_start MOD18_0224AA4C
+MOD18_0224AA4C: ; 0x0224AA4C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xa
+ bl MOD18_0223E628
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #0xa
+ bl MOD18_0223E5F0
+ mov r1, #0x23
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r2, _0224AA94 ; =MOD18_02249378
+ sub r0, #0x30
+ str r2, [r4, r0]
+ add r0, r1, #0
+ ldr r2, _0224AA98 ; =MOD18_0224938C
+ sub r0, #0x2c
+ str r2, [r4, r0]
+ ldr r0, _0224AA9C ; =MOD18_0224A9B4
+ str r0, [r4, #0x60]
+ mov r0, #0
+ str r0, [r4, #0x64]
+ sub r0, r1, #4
+ ldr r0, [r4, r0]
+ add r1, #0x1c
+ strh r0, [r4, r1]
+ ldr r1, _0224AAA0 ; =0x02025FFD
+ add r0, r4, #0
+ bl MOD18_0224AB08
+ pop {r4, pc}
+ nop
+_0224AA94: .word MOD18_02249378
+_0224AA98: .word MOD18_0224938C
+_0224AA9C: .word MOD18_0224A9B4
+_0224AAA0: .word 0x02025FFD
+ thumb_func_end MOD18_0224AA4C
+
+ thumb_func_start MOD18_0224AAA4
+MOD18_0224AAA4: ; 0x0224AAA4
+ mov r1, #2
+ ldr r2, _0224AAC0 ; =MOD18_02249378
+ lsl r1, r1, #8
+ str r2, [r0, r1]
+ ldr r2, _0224AAC4 ; =MOD18_0224938C
+ add r1, r1, #4
+ str r2, [r0, r1]
+ ldr r1, _0224AAC8 ; =MOD18_0224A9B4
+ ldr r3, _0224AACC ; =MOD18_0224AB08
+ str r1, [r0, #0x60]
+ mov r1, #0
+ str r1, [r0, #0x64]
+ ldr r1, _0224AAD0 ; =0x02025FFD
+ bx r3
+ .align 2, 0
+_0224AAC0: .word MOD18_02249378
+_0224AAC4: .word MOD18_0224938C
+_0224AAC8: .word MOD18_0224A9B4
+_0224AACC: .word MOD18_0224AB08
+_0224AAD0: .word 0x02025FFD
+ thumb_func_end MOD18_0224AAA4
+
+ thumb_func_start MOD18_0224AAD4
+MOD18_0224AAD4: ; 0x0224AAD4
+ mov r1, #2
+ ldr r2, _0224AAF0 ; =MOD18_0224934C
+ lsl r1, r1, #8
+ str r2, [r0, r1]
+ ldr r2, _0224AAF4 ; =MOD18_02249360
+ add r1, r1, #4
+ str r2, [r0, r1]
+ ldr r1, _0224AAF8 ; =MOD18_0224A9B4
+ ldr r3, _0224AAFC ; =MOD18_0224AB08
+ str r1, [r0, #0x60]
+ ldr r1, _0224AB00 ; =MOD18_0224A9EC
+ str r1, [r0, #0x64]
+ ldr r1, _0224AB04 ; =0x02025E21
+ bx r3
+ .align 2, 0
+_0224AAF0: .word MOD18_0224934C
+_0224AAF4: .word MOD18_02249360
+_0224AAF8: .word MOD18_0224A9B4
+_0224AAFC: .word MOD18_0224AB08
+_0224AB00: .word MOD18_0224A9EC
+_0224AB04: .word 0x02025E21
+ thumb_func_end MOD18_0224AAD4
+
+ thumb_func_start MOD18_0224AB08
+MOD18_0224AB08: ; 0x0224AB08
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ str r1, [sp, #0x14]
+ mov r1, #0x81
+ add r5, r0, #0
+ lsl r1, r1, #2
+ ldr r7, [r5, r1]
+ sub r1, r1, #4
+ ldr r1, [r5, r1]
+ blx r1
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD18_022498EC
+ bl MOD18_0223D678
+ ldr r1, _0224AC0C ; =0x00000237
+ mov r2, #0
+ bl MOD18_0224DB80
+ add r0, r6, #1
+ mov r1, #4
+ bl FUN_02012838
+ str r0, [r5, #0x40]
+ mov r2, #3
+ add r1, r5, #0
+ str r2, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _0224AC10 ; =0x00000257
+ add r1, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0xc]
+ mov r3, #0x13
+ ldr r0, [r0, #8]
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _0224AC14 ; =0x000003D9
+ add r0, #0x10
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ bl MOD18_0223D678
+ bl MOD18_0224DBB4
+ mov r4, #0
+ str r0, [sp, #0x18]
+ cmp r6, #0
+ ble _0224AB90
+_0224AB78:
+ add r0, r4, #0
+ add r1, r5, #0
+ blx r7
+ add r2, r0, #0
+ ldr r0, [r5, #0x40]
+ ldr r1, [sp, #0x18]
+ add r3, r4, #0
+ bl FUN_02012880
+ add r4, r4, #1
+ cmp r4, r6
+ blt _0224AB78
+_0224AB90:
+ mov r2, #0
+ ldr r0, [r5, #0x40]
+ ldr r1, [sp, #0x18]
+ sub r3, r2, #2
+ bl FUN_02012880
+ ldr r3, _0224AC18 ; =0x02250598
+ add r2, sp, #0x1c
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, r6, #1
+ add r2, sp, #0x1c
+ strh r0, [r2, #0x10]
+ mov r1, #6
+ strh r1, [r2, #0x12]
+ ldr r0, [r5, #0x64]
+ str r0, [sp, #0x24]
+ ldr r0, [r5, #0x40]
+ str r0, [sp, #0x1c]
+ add r0, r5, #0
+ add r0, #0x10
+ str r0, [sp, #0x28]
+ ldr r0, [r5, #0x60]
+ str r0, [sp, #0x20]
+ str r5, [sp, #0x38]
+ ldrh r2, [r2, #0x10]
+ add r0, r5, #0
+ bl MOD18_0224AFB0
+ ldr r0, [sp, #0x14]
+ mov r2, #0x23
+ str r0, [sp]
+ ldr r0, _0224AC1C ; =0x022513F8
+ lsl r2, r2, #4
+ ldr r0, [r0]
+ mov r3, #4
+ ldr r0, [r0]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r1, [r5, r2]
+ sub r2, r2, #4
+ ldr r2, [r5, r2]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, sp, #0x1c
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ bl MOD18_02244028
+ str r0, [r5, #0x4c]
+ ldr r0, _0224AC20 ; =0x00000246
+ mov r1, #8
+ strb r1, [r5, r0]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224AC0C: .word 0x00000237
+_0224AC10: .word 0x00000257
+_0224AC14: .word 0x000003D9
+_0224AC18: .word 0x02250598
+_0224AC1C: .word 0x022513F8
+_0224AC20: .word 0x00000246
+ thumb_func_end MOD18_0224AB08
+
+ thumb_func_start MOD18_0224AC24
+MOD18_0224AC24: ; 0x0224AC24
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x4c]
+ bl MOD18_02244140
+ add r4, r0, #0
+ ldr r0, [r5, #0x4c]
+ add r1, sp, #0
+ ldr r0, [r0, #0xc]
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_02001448
+ add r2, sp, #0
+ ldrh r1, [r2]
+ ldrh r2, [r2, #2]
+ mov r0, #0xa
+ bl MOD18_0223E57C
+ ldr r0, [r5, #0x4c]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ bl FUN_02001470
+ add r1, sp, #0
+ add r2, r0, #0
+ ldrh r1, [r1, #2]
+ add r0, r5, #0
+ mov r3, #6
+ bl MOD18_0224B004
+ bl FUN_020311F0
+ cmp r0, #0
+ beq _0224AC6E
+ mov r4, #1
+ mvn r4, r4
+_0224AC6E:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _0224AC78
+ add r4, r0, #0
+_0224AC78:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _0224AC8A
+ add r0, r0, #1
+ cmp r4, r0
+ bne _0224AC98
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0224AC8A:
+ ldr r0, _0224ACF8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ bl MOD18_02249AAC
+ b _0224ACF2
+_0224AC98:
+ add r0, r5, #0
+ bl MOD18_022498EC
+ ldr r0, _0224ACFC ; =0x022513F8
+ add r1, r5, #0
+ ldr r0, [r0]
+ strb r4, [r0, #4]
+ add r0, r4, #0
+ bl MOD18_0224938C
+ ldr r1, _0224ACFC ; =0x022513F8
+ ldr r1, [r1]
+ strb r0, [r1, #5]
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD18_0224996C
+ bl MOD18_0223D638
+ ldr r2, _0224ACFC ; =0x022513F8
+ mov r1, #2
+ ldr r2, [r2]
+ ldrb r2, [r2, #5]
+ bl MOD18_0224DF18
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x81
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+ ldr r0, _0224AD00 ; =0x00000246
+ mov r1, #0x13
+ strb r1, [r5, r0]
+ mov r1, #0
+ ldr r0, [r5, #8]
+ add r2, r1, #0
+ bl FUN_0205EC6C
+ ldr r0, [r5, #8]
+ mov r1, #1
+ mov r2, #0
+ bl FUN_0205EC6C
+_0224ACF2:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_0224ACF8: .word 0x000005DC
+_0224ACFC: .word 0x022513F8
+_0224AD00: .word 0x00000246
+ thumb_func_end MOD18_0224AC24
+
+ thumb_func_start MOD18_0224AD04
+MOD18_0224AD04: ; 0x0224AD04
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x50]
+ bl FUN_02001204
+ mov r1, #0x93
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldrh r6, [r5, r1]
+ ldr r0, [r5, #0x50]
+ add r1, r5, r1
+ bl FUN_0200143C
+ mov r0, #0x93
+ lsl r0, r0, #2
+ ldrh r0, [r5, r0]
+ cmp r6, r0
+ beq _0224AD2E
+ ldr r0, _0224ADA8 ; =0x000005DC
+ bl FUN_020054C8
+_0224AD2E:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _0224AD40
+ add r0, r0, #1
+ cmp r4, r0
+ bne _0224AD5A
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0224AD40:
+ ldr r0, _0224ADA8 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ bl MOD18_02249A64
+ add r0, r5, #0
+ bl MOD18_0224AA4C
+ ldr r0, _0224ADAC ; =0x00000246
+ mov r1, #8
+ strb r1, [r5, r0]
+ b _0224ADA4
+_0224AD5A:
+ add r0, r5, #0
+ bl MOD18_02249A64
+ cmp r4, #2
+ bne _0224AD94
+ ldr r0, _0224ADA8 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _0224ADB0 ; =0x022513F8
+ ldr r1, [r0]
+ ldr r0, [r1]
+ ldrb r1, [r1, #4]
+ bl FUN_02025FA4
+ bl MOD18_0223D638
+ ldr r2, _0224ADB0 ; =0x022513F8
+ mov r1, #2
+ ldr r2, [r2]
+ ldrb r2, [r2, #5]
+ bl MOD18_0224DF18
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x82
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+_0224AD94:
+ ldr r0, _0224ADB4 ; =MOD18_0224AA4C
+ mov r1, #8
+ str r0, [r5]
+ ldr r0, _0224ADB8 ; =0x00000245
+ strb r1, [r5, r0]
+ mov r1, #0xe
+ add r0, r0, #1
+ strb r1, [r5, r0]
+_0224ADA4:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0224ADA8: .word 0x000005DC
+_0224ADAC: .word 0x00000246
+_0224ADB0: .word 0x022513F8
+_0224ADB4: .word MOD18_0224AA4C
+_0224ADB8: .word 0x00000245
+ thumb_func_end MOD18_0224AD04
+
+ thumb_func_start MOD18_0224ADBC
+MOD18_0224ADBC: ; 0x0224ADBC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD18_022498EC
+ bl MOD18_0223E458
+ bl MOD18_0224D344
+ bl MOD18_02240C14
+ bl MOD18_0223C848
+ bl MOD18_0223D370
+ mov r0, #0x83
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _0224ADE8
+ bl MOD18_0224DAA8
+_0224ADE8:
+ ldr r0, [r5, #0x5c]
+ cmp r0, #0
+ beq _0224ADF4
+ mov r1, #4
+ bl FUN_020021EC
+_0224ADF4:
+ add r0, r5, #0
+ bl MOD18_02249A64
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _0224AE04
+ bl FUN_0205EBEC
+_0224AE04:
+ mov r0, #0x7f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _0224AE34
+ ldr r0, _0224AE64 ; =0x022513F8
+ add r1, r5, #0
+ ldr r0, [r0]
+ strb r4, [r0, #4]
+ add r0, r4, #0
+ bl MOD18_0224938C
+ ldr r1, _0224AE64 ; =0x022513F8
+ ldr r1, [r1]
+ strb r0, [r1, #5]
+ mov r1, #0x7f
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ mov r0, #0
+ blx r1
+ mov r0, #0x7f
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_0224AE34:
+ ldr r0, [r5, #0x68]
+ cmp r0, #0
+ beq _0224AE3E
+ bl FUN_02021A20
+_0224AE3E:
+ ldr r0, [r5, #0x6c]
+ cmp r0, #0
+ beq _0224AE48
+ bl FUN_02021A20
+_0224AE48:
+ ldr r0, [r5, #0x70]
+ cmp r0, #0
+ beq _0224AE52
+ bl FUN_0200AB18
+_0224AE52:
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _0224AE5C
+ bl FUN_0200CAB4
+_0224AE5C:
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224AE64: .word 0x022513F8
+ thumb_func_end MOD18_0224ADBC
+
+ thumb_func_start MOD18_0224AE68
+MOD18_0224AE68: ; 0x0224AE68
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x4c]
+ bl MOD18_02244140
+ add r4, r0, #0
+ bl FUN_020311F0
+ cmp r0, #0
+ beq _0224AE80
+ mov r4, #1
+ mvn r4, r4
+_0224AE80:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _0224AE8A
+ add r4, r0, #0
+_0224AE8A:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _0224AE9C
+ add r0, r0, #1
+ cmp r4, r0
+ bne _0224AEDA
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0224AE9C:
+ mov r1, #0x7f
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ cmp r0, #0
+ beq _0224AEC2
+ ldr r0, _0224AF24 ; =0x022513F8
+ mov r3, #0
+ ldr r2, [r0]
+ strb r4, [r2, #4]
+ ldr r2, [r0]
+ strb r3, [r2, #5]
+ ldr r0, [r0]
+ ldr r1, [r5, r1]
+ ldrb r0, [r0, #5]
+ blx r1
+ mov r0, #0x7f
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_0224AEC2:
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_0224ADBC
+ bl MOD18_0223E6A0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224AEDA:
+ mov r0, #0x7f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _0224AF0C
+ ldr r0, _0224AF24 ; =0x022513F8
+ add r1, r5, #0
+ ldr r0, [r0]
+ strb r4, [r0, #4]
+ add r0, r4, #0
+ bl MOD18_0224938C
+ ldr r1, _0224AF24 ; =0x022513F8
+ ldr r2, [r1]
+ strb r0, [r2, #5]
+ ldr r0, [r1]
+ mov r1, #0x7f
+ lsl r1, r1, #2
+ ldrb r0, [r0, #5]
+ ldr r1, [r5, r1]
+ blx r1
+ mov r0, #0x7f
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_0224AF0C:
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_0224ADBC
+ bl MOD18_0223E6A0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224AF24: .word 0x022513F8
+ thumb_func_end MOD18_0224AE68
+
+ thumb_func_start MOD18_0224AF28
+MOD18_0224AF28: ; 0x0224AF28
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ mov r1, #0x25
+ add r5, r0, #0
+ mov r0, #4
+ lsl r1, r1, #4
+ bl FUN_02016998
+ mov r2, #0x25
+ mov r1, #0
+ lsl r2, r2, #4
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x7f
+ lsl r0, r0, #2
+ str r6, [r4, #0xc]
+ add r1, r0, #0
+ str r5, [r4, r0]
+ mov r2, #0
+ add r1, #0x4a
+ strb r2, [r4, r1]
+ sub r0, r0, #4
+ str r2, [r4, r0]
+ str r2, [r4, #0x48]
+ str r2, [r4, #0x60]
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ str r0, [r4, #0x68]
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ str r0, [r4, #0x6c]
+ mov r0, #4
+ bl FUN_0200AA80
+ str r0, [r4, #0x70]
+ add r0, r4, #0
+ bl MOD18_0224AA4C
+ ldr r0, _0224AFA0 ; =0x00000246
+ mov r1, #9
+ strb r1, [r4, r0]
+ ldr r0, _0224AFA4 ; =MOD18_02249684
+ ldr r2, _0224AFA8 ; =0x00002710
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #4]
+ ldr r1, [r4, #4]
+ ldr r2, _0224AFAC ; =MOD18_0224AFE8
+ add r0, r4, #0
+ bl MOD18_0223E688
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ nop
+_0224AFA0: .word 0x00000246
+_0224AFA4: .word MOD18_02249684
+_0224AFA8: .word 0x00002710
+_0224AFAC: .word MOD18_0224AFE8
+ thumb_func_end MOD18_0224AF28
+
+ thumb_func_start MOD18_0224AFB0
+MOD18_0224AFB0: ; 0x0224AFB0
+ push {r3, r4}
+ mov r3, #0x23
+ lsl r3, r3, #4
+ ldr r4, [r0, r3]
+ add r4, r4, r1
+ cmp r4, r2
+ blt _0224AFCC
+ sub r1, r2, r1
+ str r1, [r0, r3]
+ ldr r1, [r0, r3]
+ cmp r1, #0
+ bge _0224AFCC
+ mov r1, #0
+ str r1, [r0, r3]
+_0224AFCC:
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ ldr r3, [r0, r1]
+ sub r2, r2, #1
+ cmp r3, r2
+ blt _0224AFE4
+ str r2, [r0, r1]
+ ldr r2, [r0, r1]
+ cmp r2, #0
+ bge _0224AFE4
+ mov r2, #0
+ str r2, [r0, r1]
+_0224AFE4:
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD18_0224AFB0
+
+ thumb_func_start MOD18_0224AFE8
+MOD18_0224AFE8: ; 0x0224AFE8
+ push {r4, lr}
+ add r4, r1, #0
+ mov r1, #1
+ mov r0, #0
+ add r2, r1, #0
+ bl FUN_0200A274
+ mov r1, #1
+ add r0, r4, #0
+ mvn r1, r1
+ bl MOD18_0224ADBC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224AFE8
+
+ thumb_func_start MOD18_0224B004
+MOD18_0224B004: ; 0x0224B004
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r2, #0
+ add r7, r3, #0
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r6, r7
+ ble _0224B04A
+ cmp r4, #0
+ ldr r0, [r5, #8]
+ beq _0224B022
+ mov r1, #0
+ mov r2, #1
+ bl FUN_0205EC6C
+ b _0224B02A
+_0224B022:
+ mov r1, #0
+ add r2, r1, #0
+ bl FUN_0205EC6C
+_0224B02A:
+ add r0, r4, r7
+ cmp r6, r0
+ ldr r0, [r5, #8]
+ beq _0224B03C
+ mov r1, #1
+ add r2, r1, #0
+ bl FUN_0205EC6C
+ b _0224B044
+_0224B03C:
+ mov r1, #1
+ mov r2, #0
+ bl FUN_0205EC6C
+_0224B044:
+ ldr r0, [r5, #8]
+ bl FUN_0205EC18
+_0224B04A:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_0224B004
+
+ thumb_func_start MOD18_0224B04C
+MOD18_0224B04C: ; 0x0224B04C
+ ldrh r2, [r0]
+ ldrh r3, [r0, #2]
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ beq _0224B060
+ cmp r1, #0
+ beq _0224B060
+ mov r0, #0xff
+ bx lr
+_0224B060:
+ cmp r3, #0xc
+ bne _0224B068
+ mov r3, #0
+ b _0224B074
+_0224B068:
+ cmp r3, #0x2c
+ bne _0224B070
+ mov r3, #8
+ b _0224B074
+_0224B070:
+ mov r0, #0xff
+ bx lr
+_0224B074:
+ add r0, r2, #0
+ sub r0, #0xf
+ cmp r0, #1
+ bhi _0224B080
+ mov r0, #0
+ bx lr
+_0224B080:
+ mov r1, #0
+_0224B082:
+ add r0, r2, #0
+ sub r0, #0x2f
+ cmp r0, #1
+ bhi _0224B08E
+ add r0, r1, r3
+ bx lr
+_0224B08E:
+ add r1, r1, #1
+ sub r2, #0x20
+ cmp r1, #8
+ blt _0224B082
+ mov r0, #0xff
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_0224B04C
+
+ thumb_func_start MOD18_0224B09C
+MOD18_0224B09C: ; 0x0224B09C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ bl FUN_0204E6CC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD18_0224B04C
+ add r4, r0, #0
+ bl FUN_0204E69C
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _0224B0BE
+ mov r4, #0xff
+_0224B0BE:
+ cmp r4, #0xff
+ beq _0224B118
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_0204EAD8
+ add r0, sp, #0
+ strb r4, [r0, #2]
+ strb r5, [r0, #1]
+ mov r1, #0
+ strb r1, [r0, #3]
+ cmp r4, r5
+ beq _0224B0EA
+ add r0, r5, #0
+ bl FUN_0204EE9C
+ cmp r0, #0
+ bne _0224B10A
+ mov r1, #1
+ add r0, sp, #0
+ strb r1, [r0, #3]
+ b _0224B10A
+_0224B0EA:
+ add r0, r5, #0
+ bl FUN_0204EE9C
+ cmp r0, #0
+ beq _0224B10A
+ mov r1, #3
+ add r0, sp, #0
+ strb r1, [r0]
+ add r0, r5, #0
+ mov r1, #1
+ add r2, sp, #0
+ mov r3, #0
+ bl FUN_0204F0C8
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224B10A:
+ add r1, sp, #0
+ mov r0, #0x53
+ add r1, #1
+ bl FUN_02030C4C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224B118:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_0224B09C
+
+ thumb_func_start MOD18_0224B11C
+MOD18_0224B11C: ; 0x0224B11C
+ ldr r3, _0224B124 ; =0x0204F775
+ mov r0, #0x40
+ bx r3
+ nop
+_0224B124: .word 0x0204F775
+ thumb_func_end MOD18_0224B11C
+
+ thumb_func_start MOD18_0224B128
+MOD18_0224B128: ; 0x0224B128
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ add r4, r3, #0
+ bl FUN_02030FE0
+ cmp r0, #0
+ beq _0224B180
+ bl FUN_02031190
+ ldrb r1, [r5]
+ cmp r1, r0
+ bne _0224B180
+ bl FUN_02031190
+ ldrb r1, [r5, #1]
+ cmp r1, r0
+ bne _0224B15C
+ ldr r0, _0224B184 ; =0x0000060C
+ bl FUN_020054C8
+ bl FUN_0204F7E4
+ add r0, r4, #0
+ bl MOD18_0224BD54
+ pop {r3, r4, r5, pc}
+_0224B15C:
+ mov r0, #0x40
+ bl FUN_0204F74C
+ ldrb r0, [r5, #2]
+ cmp r0, #0
+ beq _0224B172
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD18_0224BEA4
+ pop {r3, r4, r5, pc}
+_0224B172:
+ bl MOD18_0223D648
+ ldr r3, _0224B188 ; =MOD18_0224B11C
+ mov r1, #9
+ mov r2, #1
+ bl MOD18_0224DCB8
+_0224B180:
+ pop {r3, r4, r5, pc}
+ nop
+_0224B184: .word 0x0000060C
+_0224B188: .word MOD18_0224B11C
+ thumb_func_end MOD18_0224B128
+
+ thumb_func_start MOD18_0224B18C
+MOD18_0224B18C: ; 0x0224B18C
+ mov r0, #3
+ bx lr
+ thumb_func_end MOD18_0224B18C
+
+ thumb_func_start MOD18_0224B190
+MOD18_0224B190: ; 0x0224B190
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r1, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r4, r0, #0
+ add r1, r5, #0
+ bl FUN_02025F98
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_02025D6C
+ cmp r0, #0
+ beq _0224B1BE
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_02025FA4
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224B1BE:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224B190
+
+ thumb_func_start MOD18_0224B1C4
+MOD18_0224B1C4: ; 0x0224B1C4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r1, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r1, r5, #0
+ add r4, r0, #0
+ bl FUN_02025F0C
+ cmp r0, #0
+ beq _0224B1E4
+ mov r0, #0
+ mvn r0, r0
+ pop {r3, r4, r5, pc}
+_0224B1E4:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_02025DC8
+ bl MOD18_022494B4
+ cmp r0, #0
+ beq _0224B200
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_02025DD4
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224B200:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_0224B1C4
+
+ thumb_func_start MOD18_0224B204
+MOD18_0224B204: ; 0x0224B204
+ push {r4, lr}
+ add r4, r1, #0
+ mov r1, #0x13
+ bl FUN_02001470
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _0224B218
+ mov r4, #5
+_0224B218:
+ bl MOD18_0223D658
+ mov r2, #0
+ add r1, r4, #6
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+ pop {r4, pc}
+ thumb_func_end MOD18_0224B204
+
+ thumb_func_start MOD18_0224B228
+MOD18_0224B228: ; 0x0224B228
+ push {r4, lr}
+ add r4, r1, #0
+ mov r1, #0x13
+ bl FUN_02001470
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _0224B23C
+ mov r4, #3
+_0224B23C:
+ bl MOD18_0223D658
+ add r4, #0x2c
+ mov r2, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224B228
+
+ thumb_func_start MOD18_0224B250
+MOD18_0224B250: ; 0x0224B250
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x48]
+ bl FUN_02001204
+ add r5, r0, #0
+ add r1, sp, #0
+ ldr r0, [r4, #0x48]
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_02001448
+ add r2, sp, #0
+ ldrh r1, [r2]
+ ldrh r2, [r2, #2]
+ mov r0, #0x17
+ bl MOD18_0223E57C
+ add r0, r4, #0
+ bl MOD18_0224BF84
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ bhi _0224B29E
+ bhs _0224B2AA
+ cmp r5, #4
+ bhi _0224B33E
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0224B294: ; jump table
+ .short _0224B2B8 - _0224B294 - 2 ; case 0
+ .short _0224B324 - _0224B294 - 2 ; case 1
+ .short _0224B332 - _0224B294 - 2 ; case 2
+ .short _0224B316 - _0224B294 - 2 ; case 3
+ .short _0224B308 - _0224B294 - 2 ; case 4
+_0224B29E:
+ mov r0, #0
+ mvn r0, r0
+ cmp r5, r0
+ bne _0224B33E
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0224B2AA:
+ ldr r0, _0224B344 ; =0x0000060E
+ bl FUN_020054C8
+ ldr r0, _0224B348 ; =0x00000246
+ mov r1, #2
+ strb r1, [r4, r0]
+ b _0224B33E
+_0224B2B8:
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ bl FUN_02025DB0
+ cmp r0, #0
+ bne _0224B2DE
+ bl MOD18_0223D658
+ mov r2, #0
+ mov r1, #0x3c
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, _0224B348 ; =0x00000246
+ mov r1, #0x17
+ strb r1, [r4, r0]
+ b _0224B33E
+_0224B2DE:
+ bl FUN_0202EDD8
+ cmp r0, #0
+ beq _0224B2F2
+ bl MOD18_0223E6A0
+ ldr r0, _0224B348 ; =0x00000246
+ mov r1, #3
+ strb r1, [r4, r0]
+ b _0224B33E
+_0224B2F2:
+ bl MOD18_0223D658
+ mov r2, #0
+ mov r1, #0x38
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, _0224B348 ; =0x00000246
+ mov r1, #0x17
+ strb r1, [r4, r0]
+ b _0224B33E
+_0224B308:
+ ldr r0, _0224B34C ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _0224B348 ; =0x00000246
+ mov r1, #8
+ strb r1, [r4, r0]
+ b _0224B33E
+_0224B316:
+ ldr r0, _0224B34C ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _0224B348 ; =0x00000246
+ mov r1, #6
+ strb r1, [r4, r0]
+ b _0224B33E
+_0224B324:
+ ldr r0, _0224B34C ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _0224B348 ; =0x00000246
+ mov r1, #0x11
+ strb r1, [r4, r0]
+ b _0224B33E
+_0224B332:
+ ldr r0, _0224B34C ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _0224B348 ; =0x00000246
+ mov r1, #0x14
+ strb r1, [r4, r0]
+_0224B33E:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_0224B344: .word 0x0000060E
+_0224B348: .word 0x00000246
+_0224B34C: .word 0x000005DC
+ thumb_func_end MOD18_0224B250
+
+ thumb_func_start MOD18_0224B350
+MOD18_0224B350: ; 0x0224B350
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r5, r0, #0
+ add r0, r2, #1
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0xc]
+ add r6, r1, #0
+ ldr r0, [r0, #0xc]
+ str r3, [sp, #0x14]
+ bl FUN_02026CB4
+ bl FUN_020269A0
+ cmp r0, #3
+ bge _0224B374
+ ldr r0, [sp, #0x18]
+ sub r0, r0, #1
+ str r0, [sp, #0x18]
+_0224B374:
+ add r0, r5, #0
+ bl MOD18_022498EC
+ ldr r0, [sp, #0x18]
+ mov r1, #4
+ bl FUN_02012838
+ str r0, [r5, #0x40]
+ mov r2, #3
+ str r2, [sp]
+ mov r0, #0xe
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x18]
+ add r1, r5, #0
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _0224B45C ; =0x000002F9
+ add r1, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0xc]
+ mov r3, #0x11
+ ldr r0, [r0, #8]
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _0224B460 ; =0x000003D9
+ add r0, #0x10
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ mov r2, #0x91
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ mov r3, #4
+ bl FUN_0200A86C
+ add r7, r0, #0
+ ldr r0, [sp, #0x18]
+ mov r4, #0
+ cmp r0, #0
+ ble _0224B3FC
+ sub r0, r0, #1
+ str r0, [sp, #0x1c]
+_0224B3D4:
+ ldr r0, [sp, #0x1c]
+ cmp r4, r0
+ ldr r0, [r5, #0x40]
+ bne _0224B3EA
+ mov r3, #1
+ add r1, r7, #0
+ add r2, r6, #5
+ mvn r3, r3
+ bl FUN_02012880
+ b _0224B3F4
+_0224B3EA:
+ add r1, r7, #0
+ add r2, r6, r4
+ add r3, r4, #0
+ bl FUN_02012880
+_0224B3F4:
+ ldr r0, [sp, #0x18]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _0224B3D4
+_0224B3FC:
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ bl MOD18_0224DAD8
+ add r1, sp, #0x20
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ ldr r0, [sp, #0x18]
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ add r0, sp, #0x20
+ strh r1, [r0, #0x10]
+ strh r1, [r0, #0x12]
+ ldr r0, [r5, #0x40]
+ str r0, [sp, #0x20]
+ add r0, r5, #0
+ add r0, #0x10
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x14]
+ cmp r0, #0
+ beq _0224B42C
+ str r0, [sp, #0x24]
+_0224B42C:
+ str r5, [sp, #0x3c]
+ add r2, sp, #0x20
+ ldrh r2, [r2, #0x10]
+ ldr r1, [sp, #0x18]
+ add r0, r5, #0
+ bl MOD18_0224AFB0
+ mov r2, #0x23
+ lsl r2, r2, #4
+ ldr r1, [r5, r2]
+ sub r2, r2, #4
+ ldr r2, [r5, r2]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, sp, #0x20
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ mov r3, #4
+ bl FUN_020010A8
+ str r0, [r5, #0x48]
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0224B45C: .word 0x000002F9
+_0224B460: .word 0x000003D9
+ thumb_func_end MOD18_0224B350
+
+ thumb_func_start MOD18_0224B464
+MOD18_0224B464: ; 0x0224B464
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r6, r1, #0
+ add r1, r2, #0
+ add r1, r1, #1
+ str r1, [sp, #0x1c]
+ add r5, r0, #0
+ str r2, [sp, #0x14]
+ str r3, [sp, #0x18]
+ bl MOD18_022498EC
+ ldr r0, [sp, #0x1c]
+ mov r1, #4
+ bl FUN_02012838
+ str r0, [r5, #0x40]
+ mov r2, #3
+ add r1, r5, #0
+ str r2, [sp]
+ mov r0, #0xe
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x1c]
+ add r1, #0x10
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _0224B558 ; =0x00000219
+ mov r3, #0x11
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0xc]
+ ldr r0, [r0, #8]
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _0224B55C ; =0x000003D9
+ add r0, #0x10
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ mov r2, #0x91
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ mov r3, #4
+ bl FUN_0200A86C
+ add r7, r0, #0
+ ldr r0, [sp, #0x1c]
+ mov r4, #0
+ cmp r0, #0
+ ble _0224B4F8
+_0224B4D0:
+ ldr r0, [sp, #0x14]
+ cmp r4, r0
+ ldr r0, [r5, #0x40]
+ bne _0224B4E6
+ mov r3, #1
+ add r1, r7, #0
+ add r2, r6, r4
+ mvn r3, r3
+ bl FUN_02012880
+ b _0224B4F0
+_0224B4E6:
+ add r1, r7, #0
+ add r2, r6, r4
+ add r3, r4, #0
+ bl FUN_02012880
+_0224B4F0:
+ ldr r0, [sp, #0x1c]
+ add r4, r4, #1
+ cmp r4, r0
+ blt _0224B4D0
+_0224B4F8:
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ bl MOD18_0224DAD8
+ add r1, sp, #0x20
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ ldr r0, [sp, #0x14]
+ add r1, sp, #0x20
+ add r0, r0, #1
+ strh r0, [r1, #0x10]
+ ldr r0, [sp, #0x1c]
+ strh r0, [r1, #0x12]
+ ldr r0, [r5, #0x40]
+ str r0, [sp, #0x20]
+ add r0, r5, #0
+ add r0, #0x10
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ beq _0224B528
+ str r0, [sp, #0x24]
+_0224B528:
+ str r5, [sp, #0x3c]
+ add r2, sp, #0x20
+ ldrh r2, [r2, #0x10]
+ ldr r1, [sp, #0x1c]
+ add r0, r5, #0
+ bl MOD18_0224AFB0
+ mov r2, #0x23
+ lsl r2, r2, #4
+ ldr r1, [r5, r2]
+ sub r2, r2, #4
+ ldr r2, [r5, r2]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, sp, #0x20
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ mov r3, #4
+ bl FUN_020010A8
+ str r0, [r5, #0x48]
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0224B558: .word 0x00000219
+_0224B55C: .word 0x000003D9
+ thumb_func_end MOD18_0224B464
+
+ thumb_func_start MOD18_0224B560
+MOD18_0224B560: ; 0x0224B560
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r0, [r5, #0x48]
+ bl FUN_02001204
+ add r4, r0, #0
+ add r1, sp, #0
+ ldr r0, [r5, #0x48]
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_02001448
+ add r2, sp, #0
+ ldrh r1, [r2]
+ ldrh r2, [r2, #2]
+ mov r0, #0x16
+ bl MOD18_0223E57C
+ add r0, r5, #0
+ bl MOD18_0224BF84
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bhi _0224B5A6
+ bhs _0224B5B0
+ cmp r4, #2
+ bhi _0224B600
+ cmp r4, #0
+ beq _0224B5BE
+ cmp r4, #1
+ beq _0224B5D4
+ cmp r4, #2
+ beq _0224B5EA
+ b _0224B600
+_0224B5A6:
+ add r0, r0, #1
+ cmp r4, r0
+ bne _0224B600
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0224B5B0:
+ ldr r0, _0224B60C ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _0224B610 ; =0x00000246
+ mov r1, #0
+ strb r1, [r5, r0]
+ b _0224B606
+_0224B5BE:
+ bl FUN_0202EDD8
+ cmp r0, #0
+ ldr r0, _0224B610 ; =0x00000246
+ beq _0224B5CE
+ mov r1, #0xb
+ strb r1, [r5, r0]
+ b _0224B606
+_0224B5CE:
+ mov r1, #0xa
+ strb r1, [r5, r0]
+ b _0224B606
+_0224B5D4:
+ bl FUN_0202EDD8
+ cmp r0, #0
+ ldr r0, _0224B610 ; =0x00000246
+ beq _0224B5E4
+ mov r1, #0xd
+ strb r1, [r5, r0]
+ b _0224B606
+_0224B5E4:
+ mov r1, #0xc
+ strb r1, [r5, r0]
+ b _0224B606
+_0224B5EA:
+ bl FUN_0202EDD8
+ cmp r0, #0
+ ldr r0, _0224B610 ; =0x00000246
+ beq _0224B5FA
+ mov r1, #0xf
+ strb r1, [r5, r0]
+ b _0224B606
+_0224B5FA:
+ mov r1, #0xe
+ strb r1, [r5, r0]
+ b _0224B606
+_0224B600:
+ ldr r0, _0224B610 ; =0x00000246
+ mov r1, #2
+ strb r1, [r5, r0]
+_0224B606:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_0224B60C: .word 0x000005DC
+_0224B610: .word 0x00000246
+ thumb_func_end MOD18_0224B560
+
+ thumb_func_start MOD18_0224B614
+MOD18_0224B614: ; 0x0224B614
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r1, #0
+ ldr r0, [r5, #0x4c]
+ bl MOD18_02244140
+ add r4, r0, #0
+ ldr r0, [r5, #0x4c]
+ add r1, sp, #0
+ ldr r0, [r0, #0xc]
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_02001448
+ add r2, sp, #0
+ ldrh r1, [r2]
+ ldrh r2, [r2, #2]
+ mov r0, #2
+ bl MOD18_0223E57C
+ ldr r0, [r5, #0x4c]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ bl FUN_02001470
+ add r1, sp, #0
+ add r2, r0, #0
+ ldrh r1, [r1, #2]
+ add r0, r5, #0
+ mov r3, #6
+ bl MOD18_0224B004
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _0224B65E
+ add r4, r0, #0
+_0224B65E:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _0224B672
+ add r0, r0, #1
+ cmp r4, r0
+ bne _0224B682
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, r5, r6, pc}
+_0224B672:
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+ ldr r0, _0224B6DC ; =0x00000246
+ mov r1, #0
+ strb r1, [r5, r0]
+ b _0224B6D4
+_0224B682:
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD18_0224938C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD18_0224B190
+ cmp r0, #0
+ beq _0224B6BA
+ bl MOD18_0223D658
+ add r1, r6, #0
+ bl MOD18_0224DE44
+ bl MOD18_0223D658
+ mov r2, #0
+ mov r1, #0x25
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ b _0224B6C8
+_0224B6BA:
+ bl MOD18_0223D658
+ mov r2, #0
+ mov r1, #0x26
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+_0224B6C8:
+ ldr r0, _0224B6DC ; =0x00000246
+ mov r1, #0x13
+ strb r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD18_022498EC
+_0224B6D4:
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_0224B6DC: .word 0x00000246
+ thumb_func_end MOD18_0224B614
+
+ thumb_func_start MOD18_0224B6E0
+MOD18_0224B6E0: ; 0x0224B6E0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r1, #0
+ ldr r0, [r5, #0x4c]
+ bl MOD18_02244140
+ add r4, r0, #0
+ ldr r0, [r5, #0x4c]
+ add r1, sp, #0
+ ldr r0, [r0, #0xc]
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_02001448
+ add r2, sp, #0
+ ldrh r1, [r2]
+ ldrh r2, [r2, #2]
+ mov r0, #6
+ bl MOD18_0223E57C
+ ldr r0, [r5, #0x4c]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ bl FUN_02001470
+ add r1, sp, #0
+ add r2, r0, #0
+ ldrh r1, [r1, #2]
+ add r0, r5, #0
+ mov r3, #6
+ bl MOD18_0224B004
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ bne _0224B72A
+ add r4, r0, #0
+_0224B72A:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _0224B73E
+ add r0, r0, #1
+ cmp r4, r0
+ bne _0224B74E
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, r5, r6, pc}
+_0224B73E:
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+ ldr r0, _0224B7D4 ; =0x00000246
+ mov r1, #0
+ strb r1, [r5, r0]
+ b _0224B7B8
+_0224B74E:
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD18_02249360
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD18_0224B1C4
+ cmp r0, #1
+ bne _0224B786
+ bl MOD18_0223D658
+ add r1, r6, #0
+ bl MOD18_0224DE44
+ bl MOD18_0223D658
+ mov r2, #0
+ mov r1, #0x24
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ b _0224B7AC
+_0224B786:
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _0224B79E
+ bl MOD18_0223D658
+ mov r2, #0
+ mov r1, #0x37
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ b _0224B7AC
+_0224B79E:
+ bl MOD18_0223D658
+ mov r2, #0
+ mov r1, #0x27
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+_0224B7AC:
+ ldr r0, _0224B7D4 ; =0x00000246
+ mov r1, #0x16
+ strb r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD18_022498EC
+_0224B7B8:
+ mov r1, #0
+ ldr r0, [r5, #8]
+ add r2, r1, #0
+ bl FUN_0205EC6C
+ ldr r0, [r5, #8]
+ mov r1, #1
+ mov r2, #0
+ bl FUN_0205EC6C
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_0224B7D4: .word 0x00000246
+ thumb_func_end MOD18_0224B6E0
+
+ thumb_func_start MOD18_0224B7D8
+MOD18_0224B7D8: ; 0x0224B7D8
+ push {r3, lr}
+ bl MOD18_0223D658
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224B7FC
+ ldr r0, _0224B800 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _0224B7FC
+ bl MOD18_0223D658
+ bl MOD18_0224DD94
+ mov r0, #1
+ pop {r3, pc}
+_0224B7FC:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_0224B800: .word 0x021C48B8
+ thumb_func_end MOD18_0224B7D8
+
+ thumb_func_start MOD18_0224B804
+MOD18_0224B804: ; 0x0224B804
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0
+ add r4, r1, #0
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x38]
+ bl FUN_02055320
+ lsl r1, r0, #0x10
+ mov r0, #0xf
+ lsl r0, r0, #0x10
+ sub r0, r0, r1
+ str r0, [sp]
+ ldr r0, [r4, #0x38]
+ bl FUN_0205532C
+ lsl r1, r0, #0x10
+ mov r0, #0x11
+ lsl r0, r0, #0x10
+ sub r1, r0, r1
+ str r1, [sp, #8]
+ cmp r5, #0
+ bne _0224B83E
+ ldr r0, [sp]
+ neg r0, r0
+ str r0, [sp]
+ neg r0, r1
+ str r0, [sp, #8]
+_0224B83E:
+ ldr r1, [r4, #0x20]
+ add r0, sp, #0
+ bl FUN_0201EF70
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224B804
+
+ thumb_func_start MOD18_0224B84C
+MOD18_0224B84C: ; 0x0224B84C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ bl FUN_02046528
+ add r4, r0, #0
+ add r0, r6, #0
+ bl FUN_0204652C
+ add r5, r0, #0
+ ldr r0, [r5]
+ cmp r0, #5
+ bls _0224B868
+ b _0224B970
+_0224B868:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0224B874: ; jump table
+ .short _0224B880 - _0224B874 - 2 ; case 0
+ .short _0224B8A4 - _0224B874 - 2 ; case 1
+ .short _0224B8D8 - _0224B874 - 2 ; case 2
+ .short _0224B8EE - _0224B874 - 2 ; case 3
+ .short _0224B912 - _0224B874 - 2 ; case 4
+ .short _0224B946 - _0224B874 - 2 ; case 5
+_0224B880:
+ ldr r0, _0224B978 ; =0x0000060D
+ bl FUN_020054C8
+ mov r1, #0
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #2
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #1
+ str r0, [r5]
+ b _0224B970
+_0224B8A4:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0224B970
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl FUN_0205537C
+ mov r0, #1
+ add r1, r4, #0
+ bl MOD18_0224B804
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #4
+ str r1, [sp, #8]
+ mov r1, #0x29
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #2
+ str r0, [r5]
+ b _0224B970
+_0224B8D8:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0224B970
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD18_0224EA74
+ mov r0, #3
+ str r0, [r5]
+ b _0224B970
+_0224B8EE:
+ ldr r0, _0224B97C ; =0x0000060E
+ bl FUN_020054C8
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #4
+ mov r1, #0x28
+ str r0, [sp, #8]
+ mov r0, #2
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #4
+ str r0, [r5]
+ b _0224B970
+_0224B912:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0224B970
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl FUN_0205537C
+ mov r0, #0
+ add r1, r4, #0
+ bl MOD18_0224B804
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #4
+ str r1, [sp, #8]
+ add r1, r0, #0
+ add r2, r0, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #5
+ str r0, [r5]
+ b _0224B970
+_0224B946:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _0224B970
+ add r0, r4, #0
+ bl MOD18_02245054
+ ldr r0, [r4, #0xc]
+ bl FUN_020462AC
+ bl FUN_0205EDE8
+ add r0, r4, #0
+ bl MOD18_0224BD54
+ add r0, r5, #0
+ bl FUN_02016A18
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_0224B970:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_0224B978: .word 0x0000060D
+_0224B97C: .word 0x0000060E
+ thumb_func_end MOD18_0224B84C
+
+ thumb_func_start MOD18_0224B980
+MOD18_0224B980: ; 0x0224B980
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0x68]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x6c]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x70]
+ bl FUN_0200AB18
+ mov r0, #0x7f
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _0224B9A6
+ mov r0, #0
+ blx r1
+_0224B9A6:
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _0224B9B4
+ bl FUN_0205EBEC
+ mov r0, #0
+ str r0, [r4, #8]
+_0224B9B4:
+ add r0, r4, #0
+ bl MOD18_022498EC
+ bl MOD18_0223D658
+ bl MOD18_0224DD94
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_0224B980
+
+ thumb_func_start MOD18_0224B9D0
+MOD18_0224B9D0: ; 0x0224B9D0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ ldr r2, _0224BD40 ; =0x00000246
+ add r4, r1, #0
+ ldrb r3, [r4, r2]
+ add r6, r0, #0
+ cmp r3, #0x17
+ bhi _0224BABE
+ add r3, r3, r3
+ add r3, pc
+ ldrh r3, [r3, #6]
+ lsl r3, r3, #0x10
+ asr r3, r3, #0x10
+ add pc, r3
+_0224B9EC: ; jump table
+ .short _0224BA1C - _0224B9EC - 2 ; case 0
+ .short _0224BA54 - _0224B9EC - 2 ; case 1
+ .short _0224BA5C - _0224B9EC - 2 ; case 2
+ .short _0224BC5C - _0224B9EC - 2 ; case 3
+ .short _0224BD3A - _0224B9EC - 2 ; case 4
+ .short _0224BD3A - _0224B9EC - 2 ; case 5
+ .short _0224BA70 - _0224B9EC - 2 ; case 6
+ .short _0224BAB4 - _0224B9EC - 2 ; case 7
+ .short _0224BAD8 - _0224B9EC - 2 ; case 8
+ .short _0224BB1A - _0224B9EC - 2 ; case 9
+ .short _0224BB22 - _0224B9EC - 2 ; case 10
+ .short _0224BB56 - _0224B9EC - 2 ; case 11
+ .short _0224BB6E - _0224B9EC - 2 ; case 12
+ .short _0224BBA2 - _0224B9EC - 2 ; case 13
+ .short _0224BBBA - _0224B9EC - 2 ; case 14
+ .short _0224BBEE - _0224B9EC - 2 ; case 15
+ .short _0224BC06 - _0224B9EC - 2 ; case 16
+ .short _0224BC92 - _0224B9EC - 2 ; case 17
+ .short _0224BCC2 - _0224B9EC - 2 ; case 18
+ .short _0224BCCA - _0224B9EC - 2 ; case 19
+ .short _0224BCDE - _0224B9EC - 2 ; case 20
+ .short _0224BD0E - _0224B9EC - 2 ; case 21
+ .short _0224BD16 - _0224B9EC - 2 ; case 22
+ .short _0224BD2A - _0224B9EC - 2 ; case 23
+_0224BA1C:
+ mov r0, #0x17
+ bl MOD18_0223E628
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #0x17
+ bl MOD18_0223E5F0
+ mov r1, #0x23
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ sub r0, r1, #4
+ ldr r0, [r4, r0]
+ add r1, #0x1a
+ strh r0, [r4, r1]
+ mov r1, #0
+ ldr r3, _0224BD44 ; =MOD18_0224B204
+ add r0, r4, #0
+ mov r2, #5
+ str r1, [sp]
+ bl MOD18_0224B350
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #1
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BA54:
+ bl MOD18_0224B250
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0224BA5C:
+ bl FUN_0204F7FC
+ bl MOD18_0223E6A0
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD18_0224B980
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0224BA70:
+ add r0, r4, #0
+ bl MOD18_022498EC
+ bl MOD18_0223D658
+ bl MOD18_0224DD94
+ ldr r0, [r4, #0xc]
+ bl FUN_020377AC
+ bl FUN_020238F4
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ mov r3, #0
+ str r3, [sp]
+ add r2, r0, #0
+ ldr r0, [r4, #0xc]
+ add r1, r5, #0
+ ldr r0, [r0, #8]
+ bl MOD18_0224DA00
+ mov r1, #0x83
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #7
+ add r1, #0x3a
+ add sp, #4
+ strb r0, [r4, r1]
+ pop {r3, r4, r5, r6, pc}
+_0224BAB4:
+ ldr r0, _0224BD48 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ bne _0224BAC0
+_0224BABE:
+ b _0224BD3A
+_0224BAC0:
+ sub r2, #0x3a
+ ldr r0, [r4, r2]
+ bl MOD18_0224DAA8
+ mov r0, #0x83
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, #0x3a
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BAD8:
+ bl MOD18_0223D658
+ bl MOD18_0224DD94
+ mov r0, #0x16
+ bl MOD18_0223E628
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #0x16
+ bl MOD18_0223E5F0
+ mov r1, #0x23
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ sub r0, r1, #4
+ ldr r0, [r4, r0]
+ add r1, #0x1a
+ strh r0, [r4, r1]
+ mov r0, #1
+ str r0, [sp]
+ ldr r3, _0224BD4C ; =MOD18_0224B228
+ add r0, r4, #0
+ mov r1, #0x28
+ mov r2, #3
+ bl MOD18_0224B464
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #9
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BB1A:
+ bl MOD18_0224B560
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0224BB22:
+ add r0, r4, #0
+ bl MOD18_022498EC
+ bl MOD18_0223E494
+ bl MOD18_0223C7D4
+ mov r0, #1
+ sub r1, r0, #7
+ mov r2, #0
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ bl MOD18_0223D658
+ mov r2, #0
+ mov r1, #0x30
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #0x10
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BB56:
+ bl MOD18_0223D658
+ mov r2, #0
+ mov r1, #0x39
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #0x10
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BB6E:
+ add r0, r4, #0
+ bl MOD18_022498EC
+ bl MOD18_0223E46C
+ bl MOD18_0223D30C
+ mov r0, #1
+ sub r1, r0, #7
+ mov r2, #0
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ bl MOD18_0223D658
+ mov r2, #0
+ mov r1, #0x31
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #0x10
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BBA2:
+ bl MOD18_0223D658
+ mov r2, #0
+ mov r1, #0x3a
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #0x10
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BBBA:
+ add r0, r4, #0
+ bl MOD18_022498EC
+ bl MOD18_0223E480
+ bl MOD18_02240BB8
+ mov r0, #1
+ sub r1, r0, #7
+ mov r2, #0
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ bl MOD18_0223D658
+ mov r2, #0
+ mov r1, #0x32
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #0x10
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BBEE:
+ bl MOD18_0223D658
+ mov r2, #0
+ mov r1, #0x3b
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #0x10
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BC06:
+ bl MOD18_0223D658
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224BC1C
+ ldr r0, _0224BD48 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ bne _0224BC1E
+_0224BC1C:
+ b _0224BD3A
+_0224BC1E:
+ mov r0, #1
+ mov r1, #0
+ sub r2, r1, #6
+ add r3, r0, #0
+ str r0, [sp]
+ bl FUN_0200A208
+ bl MOD18_0223D658
+ bl MOD18_0224DD94
+ bl FUN_0202EDD8
+ cmp r0, #0
+ beq _0224BC42
+ bl MOD18_0223E444
+ b _0224BC46
+_0224BC42:
+ bl MOD18_0223E458
+_0224BC46:
+ bl MOD18_02240C14
+ bl MOD18_0223C848
+ bl MOD18_0223D370
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #8
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BC5C:
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0, #0x10]
+ cmp r0, #0
+ bne _0224BC86
+ mov r0, #0xb
+ mov r1, #0xc
+ bl FUN_020169D8
+ mov r1, #0
+ mov r2, #0xc
+ add r5, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ str r0, [r5]
+ str r0, [r5, #4]
+ ldr r0, [r4, #0xc]
+ ldr r1, _0224BD50 ; =MOD18_0224B84C
+ add r2, r5, #0
+ bl FUN_020463CC
+_0224BC86:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD18_0224B980
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0224BC92:
+ mov r0, #2
+ bl MOD18_0223E628
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #2
+ bl MOD18_0223E5F0
+ mov r1, #0x23
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD18_0224AAA4
+ add r0, r4, #0
+ mov r1, #0x1c
+ bl MOD18_0224CB34
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #0x12
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BCC2:
+ bl MOD18_0224B614
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0224BCCA:
+ add r0, r4, #0
+ bl MOD18_0224B7D8
+ cmp r0, #0
+ beq _0224BD3A
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #0x11
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BCDE:
+ mov r0, #6
+ bl MOD18_0223E628
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #6
+ bl MOD18_0223E5F0
+ mov r1, #0x23
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD18_0224AAD4
+ add r0, r4, #0
+ mov r1, #0x20
+ bl MOD18_0224CB34
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #0x15
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BD0E:
+ bl MOD18_0224B6E0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_0224BD16:
+ add r0, r4, #0
+ bl MOD18_0224B7D8
+ cmp r0, #0
+ beq _0224BD3A
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #0x14
+ add sp, #4
+ strb r1, [r4, r0]
+ pop {r3, r4, r5, r6, pc}
+_0224BD2A:
+ add r0, r4, #0
+ bl MOD18_0224B7D8
+ cmp r0, #0
+ beq _0224BD3A
+ ldr r0, _0224BD40 ; =0x00000246
+ mov r1, #0
+ strb r1, [r4, r0]
+_0224BD3A:
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_0224BD40: .word 0x00000246
+_0224BD44: .word MOD18_0224B204
+_0224BD48: .word 0x021C48B8
+_0224BD4C: .word MOD18_0224B228
+_0224BD50: .word MOD18_0224B84C
+ thumb_func_end MOD18_0224B9D0
+
+ thumb_func_start MOD18_0224BD54
+MOD18_0224BD54: ; 0x0224BD54
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #1
+ bl MOD18_0223E56C
+ mov r1, #0x25
+ mov r0, #4
+ lsl r1, r1, #4
+ bl FUN_02016998
+ mov r2, #0x25
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #4
+ bl MI_CpuFill8
+ str r5, [r4, #0xc]
+ bl MOD18_0223D658
+ mov r1, #0x91
+ lsl r1, r1, #2
+ mov r2, #1
+ bl MOD18_0224DB80
+ ldr r0, _0224BDE4 ; =0x00000246
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ str r0, [r4, #0x68]
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ str r0, [r4, #0x6c]
+ mov r0, #4
+ bl FUN_0200AA80
+ str r0, [r4, #0x70]
+ mov r0, #4
+ bl FUN_0205EB38
+ str r0, [r4, #8]
+ mov r1, #0xc8
+ mov r2, #0x14
+ mov r3, #0x7a
+ bl FUN_0205EC48
+ mov r1, #0
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ bl FUN_0205EC6C
+ ldr r0, [r4, #8]
+ mov r1, #1
+ mov r2, #0
+ bl FUN_0205EC6C
+ ldr r0, _0224BDE8 ; =MOD18_0224B9D0
+ ldr r2, _0224BDEC ; =0x00002710
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #4]
+ ldr r1, [r4, #4]
+ ldr r2, _0224BDF0 ; =MOD18_0224AFE8
+ add r0, r4, #0
+ bl MOD18_0223E688
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224BDE4: .word 0x00000246
+_0224BDE8: .word MOD18_0224B9D0
+_0224BDEC: .word 0x00002710
+_0224BDF0: .word MOD18_0224AFE8
+ thumb_func_end MOD18_0224BD54
+
+ thumb_func_start MOD18_0224BDF4
+MOD18_0224BDF4: ; 0x0224BDF4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _0224BE0A
+ cmp r0, #1
+ beq _0224BE30
+ cmp r0, #2
+ beq _0224BE68
+ pop {r3, r4, r5, pc}
+_0224BE0A:
+ bl MOD18_0223D638
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224BE78
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r4, #4]
+ ldr r1, _0224BE7C ; =0x0225065C
+ ldr r0, [r0, #8]
+ ldr r2, _0224BE80 ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r4, #8]
+ mov r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_0224BE30:
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0224BE78
+ cmp r0, #0
+ bne _0224BE50
+ add r1, r4, #0
+ mov r0, #0x59
+ add r1, #0xc
+ bl FUN_020311D0
+ b _0224BE5E
+_0224BE50:
+ mov r0, #0x40
+ bl FUN_0204F774
+ bl MOD18_0223D638
+ bl MOD18_0224DD94
+_0224BE5E:
+ mov r0, #2
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_0224BE68:
+ add r0, r4, #0
+ bl FUN_02016A18
+ bl MOD18_0223E6A0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_0224BE78:
+ pop {r3, r4, r5, pc}
+ nop
+_0224BE7C: .word 0x0225065C
+_0224BE80: .word 0x000003D9
+ thumb_func_end MOD18_0224BDF4
+
+ thumb_func_start MOD18_0224BE84
+MOD18_0224BE84: ; 0x0224BE84
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _0224BE96
+ mov r1, #4
+ bl FUN_020021EC
+_0224BE96:
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_0224BE84
+
+ thumb_func_start MOD18_0224BEA4
+MOD18_0224BEA4: ; 0x0224BEA4
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r1, #0x25
+ add r6, r0, #0
+ mov r0, #4
+ lsl r1, r1, #4
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x14
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ str r0, [r4]
+ ldr r0, _0224BF0C ; =MOD18_0224BDF4
+ ldr r2, _0224BF10 ; =0x00002710
+ str r6, [r4, #4]
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x10]
+ bl MOD18_0223D638
+ add r6, r0, #0
+ ldrb r0, [r5, #1]
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ add r0, r6, #0
+ bl MOD18_0224DDB8
+ bl MOD18_0223D638
+ mov r2, #0
+ mov r1, #0x43
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ ldrb r0, [r5]
+ ldr r2, _0224BF14 ; =MOD18_0224BE84
+ strb r0, [r4, #0xc]
+ ldrb r0, [r5, #1]
+ strb r0, [r4, #0xd]
+ ldrb r0, [r5, #2]
+ strb r0, [r4, #0xe]
+ ldr r1, [r4, #0x10]
+ add r0, r4, #0
+ bl MOD18_0223E688
+ pop {r4, r5, r6, pc}
+ nop
+_0224BF0C: .word MOD18_0224BDF4
+_0224BF10: .word 0x00002710
+_0224BF14: .word MOD18_0224BE84
+ thumb_func_end MOD18_0224BEA4
+
+ thumb_func_start MOD18_0224BF18
+MOD18_0224BF18: ; 0x0224BF18
+ push {r4, lr}
+ add r4, r2, #0
+ ldrb r0, [r4]
+ ldrb r1, [r4, #1]
+ bl FUN_0204EEBC
+ cmp r0, #0
+ beq _0224BF30
+ mov r0, #0x5a
+ add r1, r4, #0
+ bl FUN_02030C4C
+_0224BF30:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224BF18
+
+ thumb_func_start MOD18_0224BF34
+MOD18_0224BF34: ; 0x0224BF34
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ bl FUN_02031190
+ ldrb r1, [r4]
+ cmp r1, r0
+ bne _0224BF6A
+ bl MOD18_0223D648
+ add r5, r0, #0
+ ldrb r0, [r4, #1]
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD18_0224DDB8
+ bl MOD18_0223D648
+ ldr r3, _0224BF7C ; =MOD18_0224B11C
+ mov r1, #8
+ mov r2, #1
+ bl MOD18_0224DCB8
+ ldr r0, _0224BF80 ; =0x00000425
+ bl FUN_0200521C
+_0224BF6A:
+ ldrb r0, [r4]
+ ldrb r1, [r4, #1]
+ bl FUN_0204EEBC
+ ldrb r0, [r4]
+ ldrb r1, [r4, #1]
+ bl MOD18_0224727C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224BF7C: .word MOD18_0224B11C
+_0224BF80: .word 0x00000425
+ thumb_func_end MOD18_0224BF34
+
+ thumb_func_start MOD18_0224BF84
+MOD18_0224BF84: ; 0x0224BF84
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r1, _0224BFA4 ; =0x0000024A
+ ldr r0, [r5, #0x48]
+ ldrh r4, [r5, r1]
+ add r1, r5, r1
+ bl FUN_0200143C
+ ldr r0, _0224BFA4 ; =0x0000024A
+ ldrh r0, [r5, r0]
+ cmp r4, r0
+ beq _0224BFA2
+ ldr r0, _0224BFA8 ; =0x000005DC
+ bl FUN_020054C8
+_0224BFA2:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224BFA4: .word 0x0000024A
+_0224BFA8: .word 0x000005DC
+ thumb_func_end MOD18_0224BF84
+
+ thumb_func_start MOD18_0224BFAC
+MOD18_0224BFAC: ; 0x0224BFAC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ ldr r0, [r6, #0xc]
+ add r4, r1, #0
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ bl FUN_02025D40
+ add r7, r4, r0
+ mov r4, #0
+_0224BFC6:
+ cmp r4, #0
+ bne _0224BFCE
+ mov r5, #0x21
+ b _0224BFE6
+_0224BFCE:
+ ldr r0, _0224C09C ; =0x5D588B65
+ add r1, r7, #0
+ mul r1, r0
+ ldr r0, _0224C0A0 ; =0x00269EC3
+ add r7, r1, r0
+ lsr r1, r7, #0x10
+ lsl r0, r1, #5
+ add r0, r1, r0
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r5, r0, #1
+_0224BFE6:
+ mov r0, #0
+ cmp r4, #0
+ ble _0224C002
+ mov r1, #0x21
+ add r3, r0, #0
+ lsl r1, r1, #4
+_0224BFF2:
+ add r2, r6, r0
+ ldrb r2, [r2, r1]
+ cmp r5, r2
+ bne _0224BFFC
+ add r5, r3, #0
+_0224BFFC:
+ add r0, r0, #1
+ cmp r0, r4
+ blt _0224BFF2
+_0224C002:
+ cmp r5, #0
+ bne _0224C00A
+ sub r4, r4, #1
+ b _0224C092
+_0224C00A:
+ add r0, r5, #0
+ bl MOD18_0224DFFC
+ str r0, [sp, #4]
+ add r0, r5, #0
+ bl MOD18_0224E00C
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _0224C02A
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ bne _0224C02A
+ sub r4, r4, #1
+ b _0224C092
+_0224C02A:
+ mov r1, #0x21
+ add r0, r6, r4
+ lsl r1, r1, #4
+ str r0, [sp]
+ strb r5, [r0, r1]
+ add r0, r5, #0
+ bl MOD18_0224DFEC
+ ldr r1, _0224C0A4 ; =0x00000215
+ ldr r2, [sp]
+ strb r0, [r2, r1]
+ add r0, r2, #0
+ ldrb r0, [r0, r1]
+ cmp r0, #6
+ bne _0224C064
+ ldr r0, _0224C09C ; =0x5D588B65
+ add r2, r7, #0
+ mul r2, r0
+ ldr r0, _0224C0A0 ; =0x00269EC3
+ add r7, r2, r0
+ lsr r2, r7, #0x10
+ lsl r0, r2, #2
+ add r0, r2, r0
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r2, r0, #1
+ ldr r0, [sp]
+ strb r2, [r0, r1]
+_0224C064:
+ ldr r0, _0224C09C ; =0x5D588B65
+ add r1, r7, #0
+ mul r1, r0
+ ldr r0, _0224C0A0 ; =0x00269EC3
+ add r7, r1, r0
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ sub r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ bne _0224C07E
+ lsr r0, r7, #0x10
+ b _0224C084
+_0224C07E:
+ lsr r0, r7, #0x10
+ mul r1, r0
+ lsr r0, r1, #0x10
+_0224C084:
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, [sp, #4]
+ add r2, r0, r1
+ ldr r1, _0224C0A8 ; =0x0000021A
+ ldr r0, [sp]
+ strb r2, [r0, r1]
+_0224C092:
+ add r4, r4, #1
+ cmp r4, #5
+ blt _0224BFC6
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224C09C: .word 0x5D588B65
+_0224C0A0: .word 0x00269EC3
+_0224C0A4: .word 0x00000215
+_0224C0A8: .word 0x0000021A
+ thumb_func_end MOD18_0224BFAC
+
+ thumb_func_start MOD18_0224C0AC
+MOD18_0224C0AC: ; 0x0224C0AC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ ldr r0, [r6, #0xc]
+ add r4, r1, #0
+ bl FUN_020377AC
+ add r5, r0, #0
+ bl FUN_02026CC4
+ add r7, r0, #0
+ add r0, r5, #0
+ bl FUN_02024DA0
+ bl FUN_02024CA4
+ str r0, [sp, #4]
+ add r0, r7, #0
+ bl FUN_02025D40
+ add r7, r4, r0
+ mov r4, #0
+_0224C0D8:
+ ldr r0, _0224C1B0 ; =0x5D588B65
+ add r1, r7, #0
+ mul r1, r0
+ ldr r0, _0224C1B4 ; =0x00269EC3
+ add r7, r1, r0
+ lsr r1, r7, #0x10
+ mov r0, #0x8a
+ mul r0, r1
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r5, r0, #1
+ mov r0, #0
+ cmp r4, #0
+ ble _0224C10C
+ mov r1, #0x21
+ add r3, r0, #0
+ lsl r1, r1, #4
+_0224C0FC:
+ add r2, r6, r0
+ ldrb r2, [r2, r1]
+ cmp r5, r2
+ bne _0224C106
+ add r5, r3, #0
+_0224C106:
+ add r0, r0, #1
+ cmp r0, r4
+ blt _0224C0FC
+_0224C10C:
+ cmp r5, #0
+ bne _0224C114
+ sub r4, r4, #1
+ b _0224C1A6
+_0224C114:
+ mov r1, #0x21
+ add r0, r6, r4
+ lsl r1, r1, #4
+ str r0, [sp]
+ strb r5, [r0, r1]
+ add r0, r5, #0
+ bl FUN_0204CAB0
+ ldr r2, _0224C1B8 ; =0x00000215
+ ldr r1, [sp]
+ strb r0, [r1, r2]
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _0224C13E
+ add r0, r5, #0
+ bl FUN_0204CB00
+ cmp r0, #1
+ bne _0224C13E
+ sub r4, r4, #1
+ b _0224C1A6
+_0224C13E:
+ ldr r0, _0224C1B8 ; =0x00000215
+ ldr r1, [sp]
+ ldrb r1, [r1, r0]
+ cmp r1, #0
+ bne _0224C14C
+ sub r4, r4, #1
+ b _0224C1A6
+_0224C14C:
+ cmp r1, #6
+ bne _0224C16C
+ ldr r1, _0224C1B0 ; =0x5D588B65
+ add r2, r7, #0
+ mul r2, r1
+ ldr r1, _0224C1B4 ; =0x00269EC3
+ add r7, r2, r1
+ lsr r2, r7, #0x10
+ lsl r1, r2, #2
+ add r1, r2, r1
+ lsr r1, r1, #0x10
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r2, r1, #1
+ ldr r1, [sp]
+ strb r2, [r1, r0]
+_0224C16C:
+ add r0, r5, #0
+ bl FUN_0204CAC0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ bl FUN_0204CAD0
+ ldr r1, _0224C1B0 ; =0x5D588B65
+ add r2, r7, #0
+ mul r2, r1
+ ldr r1, _0224C1B4 ; =0x00269EC3
+ add r7, r2, r1
+ ldr r1, [sp, #8]
+ sub r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ bne _0224C192
+ lsr r0, r7, #0x10
+ b _0224C198
+_0224C192:
+ lsr r0, r7, #0x10
+ mul r1, r0
+ lsr r0, r1, #0x10
+_0224C198:
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, [sp, #8]
+ add r2, r0, r1
+ ldr r1, _0224C1BC ; =0x0000021A
+ ldr r0, [sp]
+ strb r2, [r0, r1]
+_0224C1A6:
+ add r4, r4, #1
+ cmp r4, #5
+ blt _0224C0D8
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224C1B0: .word 0x5D588B65
+_0224C1B4: .word 0x00269EC3
+_0224C1B8: .word 0x00000215
+_0224C1BC: .word 0x0000021A
+ thumb_func_end MOD18_0224C0AC
+
+ thumb_func_start MOD18_0224C1C0
+MOD18_0224C1C0: ; 0x0224C1C0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5, #0xc]
+ add r7, r2, #0
+ add r4, r1, #0
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ add r6, r0, #0
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD18_022493F4
+ ldr r1, _0224C260 ; =0x00000215
+ add r2, r5, r4
+ ldrb r1, [r2, r1]
+ cmp r1, r0
+ beq _0224C1EE
+ ldr r0, _0224C264 ; =0x0000FFFD
+ pop {r3, r4, r5, r6, r7, pc}
+_0224C1EE:
+ add r0, r7, #0
+ add r1, r5, #0
+ bl MOD18_0224940C
+ ldr r1, _0224C268 ; =0x0000021A
+ add r2, r5, r4
+ add r3, r0, #0
+ ldrb r0, [r2, r1]
+ cmp r0, r3
+ ble _0224C206
+ ldr r0, _0224C26C ; =0x0000FFFB
+ pop {r3, r4, r5, r6, r7, pc}
+_0224C206:
+ add r0, r1, #0
+ add r0, #0x2e
+ ldrb r0, [r5, r0]
+ cmp r0, #1
+ bne _0224C21E
+ sub r1, #0xa
+ ldrb r1, [r2, r1]
+ add r0, r6, #0
+ bl FUN_02026298
+ str r0, [sp]
+ b _0224C240
+_0224C21E:
+ cmp r0, #0
+ bne _0224C230
+ sub r1, #0xa
+ ldrb r1, [r2, r1]
+ add r0, r6, #0
+ bl FUN_02025FD8
+ str r0, [sp]
+ b _0224C240
+_0224C230:
+ cmp r0, #2
+ bne _0224C240
+ sub r1, #0xa
+ ldrb r1, [r2, r1]
+ add r0, r6, #0
+ bl FUN_020261C8
+ str r0, [sp]
+_0224C240:
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _0224C250
+ add r0, r6, #0
+ add r1, r7, #0
+ bl FUN_02026080
+ b _0224C254
+_0224C250:
+ ldr r0, _0224C270 ; =0x0000FFFC
+ pop {r3, r4, r5, r6, r7, pc}
+_0224C254:
+ mov r0, #0x21
+ add r1, r5, r4
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0224C260: .word 0x00000215
+_0224C264: .word 0x0000FFFD
+_0224C268: .word 0x0000021A
+_0224C26C: .word 0x0000FFFB
+_0224C270: .word 0x0000FFFC
+ thumb_func_end MOD18_0224C1C0
+
+ thumb_func_start MOD18_0224C274
+MOD18_0224C274: ; 0x0224C274
+ push {r4, r5, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ mov r0, #0x92
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ mov r4, #3
+ cmp r0, #2
+ bne _0224C288
+ mov r4, #2
+_0224C288:
+ add r0, r5, #0
+ bl MOD18_022498EC
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02012838
+ str r0, [r5, #0x40]
+ mov r2, #3
+ add r1, r5, #0
+ str r2, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ lsl r0, r4, #0x19
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _0224C410 ; =0x00000391
+ add r1, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0xc]
+ mov r3, #0x13
+ ldr r0, [r0, #8]
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _0224C414 ; =0x000003D9
+ add r0, #0x10
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ mov r1, #0x92
+ lsl r1, r1, #2
+ ldrb r0, [r5, r1]
+ cmp r0, #1
+ bne _0224C31E
+ sub r1, #0x24
+ ldr r1, [r5, r1]
+ add r0, r5, #0
+ bl MOD18_0224BFAC
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ add r1, r0, #0
+ ldr r0, [r5, #0x40]
+ mov r2, #0xd
+ mov r3, #0
+ bl FUN_02012880
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ add r1, r0, #0
+ ldr r0, [r5, #0x40]
+ mov r2, #0xe
+ mov r3, #1
+ bl FUN_02012880
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ mov r2, #0xf
+ add r1, r0, #0
+ add r3, r2, #0
+ ldr r0, [r5, #0x40]
+ sub r3, #0x11
+ bl FUN_02012880
+ b _0224C396
+_0224C31E:
+ cmp r0, #0
+ bne _0224C36C
+ sub r1, #0x24
+ ldr r1, [r5, r1]
+ add r0, r5, #0
+ bl MOD18_0224C0AC
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ add r1, r0, #0
+ ldr r0, [r5, #0x40]
+ mov r2, #0x10
+ mov r3, #0
+ bl FUN_02012880
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ add r1, r0, #0
+ ldr r0, [r5, #0x40]
+ mov r2, #0x11
+ mov r3, #1
+ bl FUN_02012880
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ mov r2, #0x12
+ add r1, r0, #0
+ add r3, r2, #0
+ ldr r0, [r5, #0x40]
+ sub r3, #0x14
+ bl FUN_02012880
+ b _0224C396
+_0224C36C:
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ add r1, r0, #0
+ ldr r0, [r5, #0x40]
+ mov r2, #0x1c
+ mov r3, #0
+ bl FUN_02012880
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ mov r2, #0x16
+ add r1, r0, #0
+ add r3, r2, #0
+ ldr r0, [r5, #0x40]
+ sub r3, #0x18
+ bl FUN_02012880
+_0224C396:
+ bl MOD18_0224DAD8
+ add r1, sp, #0x14
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ ldr r0, [r5, #0x40]
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r0, #0x10
+ str r0, [sp, #0x20]
+ lsl r0, r4, #0x10
+ lsr r1, r0, #0x10
+ add r0, sp, #0x14
+ strh r1, [r0, #0x10]
+ strh r1, [r0, #0x12]
+ mov r0, #0x13
+ bl MOD18_0223E5F0
+ mov r1, #0x23
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #0x13
+ bl MOD18_0223E628
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r2, sp, #0x14
+ ldrh r1, [r2, #0x12]
+ ldrh r2, [r2, #0x10]
+ add r0, r5, #0
+ bl MOD18_0224AFB0
+ mov r2, #0x23
+ lsl r2, r2, #4
+ ldr r1, [r5, r2]
+ sub r2, r2, #4
+ ldr r2, [r5, r2]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, sp, #0x14
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ mov r3, #4
+ bl FUN_020010A8
+ str r0, [r5, #0x48]
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ add r0, #0x1e
+ strh r1, [r5, r0]
+ add r0, r5, #0
+ add r0, #0x10
+ bl FUN_020191D0
+ add r0, r5, #0
+ add sp, #0x34
+ pop {r4, r5, pc}
+ nop
+_0224C410: .word 0x00000391
+_0224C414: .word 0x000003D9
+ thumb_func_end MOD18_0224C274
+
+ thumb_func_start MOD18_0224C418
+MOD18_0224C418: ; 0x0224C418
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ mov r1, #0x13
+ add r7, r0, #0
+ add r6, r2, #0
+ bl FUN_02001470
+ add r4, r0, #0
+ cmp r6, #0
+ beq _0224C434
+ add r0, r7, #0
+ bl FUN_02001B80
+_0224C434:
+ add r0, r4, #0
+ add r0, #0x20
+ mov r1, #0xf
+ bl FUN_02019620
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ ldr r1, _0224C504 ; =0x00000247
+ ldr r2, [r4, #0x68]
+ ldrb r1, [r4, r1]
+ add r1, #0x17
+ bl FUN_0200A8E0
+ mov r3, #1
+ add r0, r4, #0
+ str r3, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldr r2, [r4, #0x68]
+ add r0, #0x20
+ bl FUN_0201BD84
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ beq _0224C4C2
+ ldr r2, _0224C508 ; =0x00000215
+ add r3, r4, r5
+ ldrb r2, [r3, r2]
+ ldr r0, [r4, #0x70]
+ mov r1, #2
+ bl FUN_0200B164
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r2, _0224C50C ; =0x0000021A
+ add r3, r4, r5
+ ldrb r2, [r3, r2]
+ ldr r0, [r4, #0x70]
+ mov r1, #6
+ mov r3, #2
+ bl FUN_0200AD38
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ ldr r2, [r4, #0x68]
+ mov r1, #0x19
+ bl FUN_0200A8E0
+ ldr r0, [r4, #0x70]
+ ldr r1, [r4, #0x6c]
+ ldr r2, [r4, #0x68]
+ bl FUN_0200B7B8
+ mov r0, #0x11
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r4, #0
+ ldr r2, [r4, #0x6c]
+ add r0, #0x20
+ mov r3, #1
+ bl FUN_0201BD84
+_0224C4C2:
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ bne _0224C4CC
+ add r5, r0, #0
+_0224C4CC:
+ mov r0, #0x92
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ cmp r0, #1
+ bne _0224C4E4
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD18_02249AF4
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0224C4E4:
+ cmp r0, #0
+ bne _0224C4F6
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD18_0224A9B4
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_0224C4F6:
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ bl MOD18_0224A2B4
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224C504: .word 0x00000247
+_0224C508: .word 0x00000215
+_0224C50C: .word 0x0000021A
+ thumb_func_end MOD18_0224C418
+
+ thumb_func_start MOD18_0224C510
+MOD18_0224C510: ; 0x0224C510
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ add r6, r1, #0
+ mov r1, #0x13
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ bl FUN_02001470
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ str r0, [sp, #0x2c]
+ add r0, r4, #0
+ add r0, #0x20
+ mov r1, #0xf
+ mov r5, #0
+ bl FUN_02019620
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ beq _0224C546
+ ldr r0, [sp, #0xc]
+ bl FUN_02001B80
+_0224C546:
+ mov r0, #1
+ mvn r0, r0
+ cmp r6, r0
+ bne _0224C550
+ b _0224C6C4
+_0224C550:
+ mov r0, #0x92
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ cmp r0, #1
+ bne _0224C5D4
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD18_022493DC
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x2c]
+ bl FUN_02025D40
+ mov r1, #0x89
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ add r1, r1, r0
+ ldr r0, [sp, #0x24]
+ add r7, r0, r1
+ bl MOD18_0224DFEC
+ add r5, r0, #0
+ cmp r5, #6
+ bne _0224C598
+ ldr r0, _0224C7B0 ; =0x5D588B65
+ add r1, r7, #0
+ mul r1, r0
+ ldr r0, _0224C7B4 ; =0x00269EC3
+ add r7, r1, r0
+ lsr r1, r7, #0x10
+ lsl r0, r1, #2
+ add r0, r1, r0
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r5, r0, #1
+_0224C598:
+ ldr r0, [sp, #0x24]
+ bl MOD18_0224DFFC
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x24]
+ bl MOD18_0224E00C
+ ldr r1, _0224C7B0 ; =0x5D588B65
+ add r2, r7, #0
+ mul r2, r1
+ ldr r1, _0224C7B4 ; =0x00269EC3
+ add r1, r2, r1
+ ldr r2, [sp, #0x28]
+ sub r0, r0, r2
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ bne _0224C5BC
+ b _0224C5C2
+_0224C5BC:
+ lsr r0, r1, #0x10
+ add r1, r0, #0
+ mul r1, r2
+_0224C5C2:
+ lsr r0, r1, #0x10
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, [sp, #0x28]
+ add r1, r0, r1
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r7, r0, #1
+ b _0224C6C4
+_0224C5D4:
+ cmp r0, #0
+ bne _0224C652
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD18_0224938C
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x2c]
+ bl FUN_02025D40
+ mov r1, #0x89
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ add r1, r1, r0
+ ldr r0, [sp, #0x20]
+ add r7, r0, r1
+ bl FUN_0204CAB0
+ add r5, r0, #0
+ cmp r5, #6
+ bne _0224C616
+ ldr r0, _0224C7B0 ; =0x5D588B65
+ add r1, r7, #0
+ mul r1, r0
+ ldr r0, _0224C7B4 ; =0x00269EC3
+ add r7, r1, r0
+ lsr r1, r7, #0x10
+ lsl r0, r1, #2
+ add r0, r1, r0
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r5, r0, #1
+_0224C616:
+ ldr r0, [sp, #0x20]
+ bl FUN_0204CAC0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x20]
+ bl FUN_0204CAD0
+ ldr r1, _0224C7B0 ; =0x5D588B65
+ add r2, r7, #0
+ mul r2, r1
+ ldr r1, _0224C7B4 ; =0x00269EC3
+ add r1, r2, r1
+ ldr r2, [sp, #0x14]
+ sub r0, r0, r2
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ bne _0224C63A
+ b _0224C640
+_0224C63A:
+ lsr r0, r1, #0x10
+ add r1, r0, #0
+ mul r1, r2
+_0224C640:
+ lsr r0, r1, #0x10
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, [sp, #0x14]
+ add r1, r0, r1
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r7, r0, #1
+ b _0224C6C4
+_0224C652:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD18_02249438
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x2c]
+ bl FUN_02025D40
+ mov r1, #0x89
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ add r1, r1, r0
+ ldr r0, [sp, #0x1c]
+ add r7, r0, r1
+ bl MOD18_0224DFBC
+ add r5, r0, #0
+ cmp r5, #6
+ bne _0224C690
+ ldr r0, _0224C7B0 ; =0x5D588B65
+ add r1, r7, #0
+ mul r1, r0
+ ldr r0, _0224C7B4 ; =0x00269EC3
+ add r7, r1, r0
+ lsr r1, r7, #0x10
+ lsl r0, r1, #2
+ add r0, r1, r0
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r5, r0, #1
+_0224C690:
+ ldr r0, [sp, #0x1c]
+ bl MOD18_0224DFCC
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ bl MOD18_0224DFDC
+ ldr r1, _0224C7B0 ; =0x5D588B65
+ add r2, r7, #0
+ mul r2, r1
+ ldr r1, _0224C7B4 ; =0x00269EC3
+ add r1, r2, r1
+ ldr r2, [sp, #0x18]
+ sub r0, r0, r2
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ bne _0224C6B4
+ b _0224C6BA
+_0224C6B4:
+ lsr r0, r1, #0x10
+ add r1, r0, #0
+ mul r1, r2
+_0224C6BA:
+ lsr r0, r1, #0x10
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, [sp, #0x18]
+ add r7, r0, r1
+_0224C6C4:
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ ldr r1, _0224C7B8 ; =0x00000247
+ ldr r2, [r4, #0x68]
+ ldrb r1, [r4, r1]
+ add r1, #0x17
+ bl FUN_0200A8E0
+ mov r3, #1
+ add r0, r4, #0
+ str r3, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldr r2, [r4, #0x68]
+ add r0, #0x20
+ bl FUN_0201BD84
+ mov r0, #1
+ mvn r0, r0
+ cmp r6, r0
+ beq _0224C778
+ cmp r5, #0
+ beq _0224C74E
+ ldr r0, [r4, #0x70]
+ mov r1, #2
+ add r2, r5, #0
+ bl FUN_0200B164
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x70]
+ mov r1, #6
+ add r2, r7, #0
+ mov r3, #2
+ bl FUN_0200AD38
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ ldr r2, [r4, #0x68]
+ mov r1, #0x19
+ bl FUN_0200A8E0
+ ldr r0, [r4, #0x70]
+ ldr r1, [r4, #0x6c]
+ ldr r2, [r4, #0x68]
+ bl FUN_0200B7B8
+ mov r0, #0x11
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r4, #0
+ ldr r2, [r4, #0x6c]
+ add r0, #0x20
+ mov r3, #1
+ bl FUN_0201BD84
+ ldr r0, _0224C7BC ; =0x00000215
+ strb r5, [r4, r0]
+ add r0, r0, #5
+ strb r7, [r4, r0]
+ b _0224C778
+_0224C74E:
+ ldr r0, _0224C7BC ; =0x00000215
+ strb r5, [r4, r0]
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ ldr r2, [r4, #0x68]
+ mov r1, #0x1a
+ bl FUN_0200A8E0
+ mov r0, #0x11
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ add r0, r4, #0
+ ldr r2, [r4, #0x68]
+ add r0, #0x20
+ mov r3, #1
+ bl FUN_0201BD84
+_0224C778:
+ mov r0, #0x92
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ cmp r0, #1
+ bne _0224C790
+ ldr r0, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ add r1, r6, #0
+ bl MOD18_02249AF4
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+_0224C790:
+ cmp r0, #0
+ bne _0224C7A2
+ ldr r0, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ add r1, r6, #0
+ bl MOD18_0224A9B4
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+_0224C7A2:
+ ldr r0, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ add r1, r6, #0
+ bl MOD18_0224A2B4
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224C7B0: .word 0x5D588B65
+_0224C7B4: .word 0x00269EC3
+_0224C7B8: .word 0x00000247
+_0224C7BC: .word 0x00000215
+ thumb_func_end MOD18_0224C510
+
+ thumb_func_start MOD18_0224C7C0
+MOD18_0224C7C0: ; 0x0224C7C0
+ cmp r0, #5
+ blt _0224C7C8
+ mov r0, #0
+ bx lr
+_0224C7C8:
+ add r1, r1, r0
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_0224C7C0
+
+ thumb_func_start MOD18_0224C7D4
+MOD18_0224C7D4: ; 0x0224C7D4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ bl MOD18_022498EC
+ mov r0, #6
+ mov r1, #4
+ bl FUN_02012838
+ str r0, [r5, #0x40]
+ mov r2, #3
+ add r1, r5, #0
+ str r2, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _0224C930 ; =0x00000301
+ add r1, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0xc]
+ mov r3, #0x13
+ ldr r0, [r0, #8]
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _0224C934 ; =0x000003D9
+ add r0, #0x10
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ mov r2, #0x92
+ lsl r2, r2, #2
+ ldrb r0, [r5, r2]
+ cmp r0, #1
+ bne _0224C83C
+ mov r0, #0
+ mov r1, #0x1a
+ sub r2, #0xd
+ mov r3, #4
+ bl FUN_0200A86C
+ add r6, r0, #0
+ bl MOD18_0223D678
+ ldr r1, _0224C938 ; =0x0000023B
+ mov r2, #0
+ bl MOD18_0224DB80
+ b _0224C876
+_0224C83C:
+ cmp r0, #0
+ bne _0224C85C
+ mov r0, #0
+ mov r1, #0x1a
+ sub r2, #0x11
+ mov r3, #4
+ bl FUN_0200A86C
+ add r6, r0, #0
+ bl MOD18_0223D678
+ ldr r1, _0224C93C ; =0x00000237
+ mov r2, #0
+ bl MOD18_0224DB80
+ b _0224C876
+_0224C85C:
+ mov r0, #0
+ mov r1, #0x1a
+ sub r2, #0xf
+ mov r3, #4
+ bl FUN_0200A86C
+ add r6, r0, #0
+ bl MOD18_0223D678
+ ldr r1, _0224C940 ; =0x00000239
+ mov r2, #0
+ bl MOD18_0224DB80
+_0224C876:
+ mov r7, #0x21
+ mov r4, #0
+ lsl r7, r7, #4
+_0224C87C:
+ add r2, r5, r4
+ ldrb r2, [r2, r7]
+ ldr r0, [r5, #0x40]
+ add r1, r6, #0
+ add r3, r4, #0
+ bl FUN_02012880
+ add r4, r4, #1
+ cmp r4, #5
+ blt _0224C87C
+ mov r2, #0
+ ldr r0, [r5, #0x40]
+ add r1, r6, #0
+ sub r3, r2, #2
+ bl FUN_02012880
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ bl MOD18_0224DAD8
+ add r1, sp, #0x14
+ mov r2, #0x20
+ bl MI_CpuCopy8
+ ldr r0, [r5, #0x40]
+ mov r1, #6
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r0, #0x10
+ str r0, [sp, #0x20]
+ add r0, sp, #0x14
+ strh r1, [r0, #0x10]
+ strh r1, [r0, #0x12]
+ ldr r0, _0224C944 ; =MOD18_0224C418
+ ldr r1, _0224C948 ; =MOD18_0224C7C0
+ str r0, [sp, #0x18]
+ mov r0, #0x81
+ str r5, [sp, #0x30]
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, #0x44
+ ldrb r0, [r5, r0]
+ add r0, #0xd
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl MOD18_0223E5F0
+ mov r1, #0x23
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r1, #0x18
+ ldrb r0, [r5, r1]
+ add r0, #0xd
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl MOD18_0223E628
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ add r1, #0x1e
+ strh r0, [r5, r1]
+ add r2, sp, #0x14
+ ldrh r1, [r2, #0x12]
+ ldrh r2, [r2, #0x10]
+ add r0, r5, #0
+ bl MOD18_0224AFB0
+ mov r2, #0x23
+ lsl r2, r2, #4
+ ldr r1, [r5, r2]
+ sub r2, r2, #4
+ ldr r2, [r5, r2]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, sp, #0x14
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ mov r3, #4
+ bl FUN_020010A8
+ str r0, [r5, #0x48]
+ add r5, #0x10
+ add r0, r5, #0
+ bl FUN_020191D0
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224C930: .word 0x00000301
+_0224C934: .word 0x000003D9
+_0224C938: .word 0x0000023B
+_0224C93C: .word 0x00000237
+_0224C940: .word 0x00000239
+_0224C944: .word MOD18_0224C418
+_0224C948: .word MOD18_0224C7C0
+ thumb_func_end MOD18_0224C7D4
+
+ thumb_func_start MOD18_0224C94C
+MOD18_0224C94C: ; 0x0224C94C
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x20
+ bl FUN_02019048
+ cmp r0, #0
+ beq _0224C96C
+ add r0, r4, #0
+ add r0, #0x20
+ mov r1, #1
+ bl FUN_0200CCF8
+ add r0, r4, #0
+ add r0, #0x20
+ bl FUN_02019178
+_0224C96C:
+ add r0, r4, #0
+ bl MOD18_022498EC
+ pop {r4, pc}
+ thumb_func_end MOD18_0224C94C
+
+ thumb_func_start MOD18_0224C974
+MOD18_0224C974: ; 0x0224C974
+ push {r4, lr}
+ mov r2, #0x92
+ add r4, r1, #0
+ lsl r2, r2, #2
+ ldrb r2, [r4, r2]
+ cmp r2, #1
+ bne _0224C990
+ bl MOD18_022493DC
+ add r1, r0, #0
+ mov r0, #2
+ bl MOD18_0224CAB4
+ b _0224C9AE
+_0224C990:
+ cmp r2, #0
+ bne _0224C9A2
+ bl MOD18_0224938C
+ add r1, r0, #0
+ mov r0, #2
+ bl MOD18_0224CAC8
+ b _0224C9AE
+_0224C9A2:
+ bl MOD18_02249438
+ add r1, r0, #0
+ mov r0, #2
+ bl MOD18_0224CAA0
+_0224C9AE:
+ ldr r1, _0224C9C0 ; =0x00000215
+ mov r0, #4
+ ldrb r1, [r4, r1]
+ bl MOD18_0224CAA0
+ mov r0, #0xa
+ bl MOD18_0224CA58
+ pop {r4, pc}
+ .align 2, 0
+_0224C9C0: .word 0x00000215
+ thumb_func_end MOD18_0224C974
+
+ thumb_func_start MOD18_0224C9C4
+MOD18_0224C9C4: ; 0x0224C9C4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ bl FUN_020377AC
+ bl FUN_02026CC4
+ ldr r1, _0224CA24 ; =0x00000215
+ add r4, r0, #0
+ ldrb r0, [r5, r1]
+ add r1, r1, #5
+ ldrb r1, [r5, r1]
+ bl MOD18_02249450
+ cmp r0, #0
+ beq _0224CA1E
+ mov r1, #0x92
+ lsl r1, r1, #2
+ ldrb r0, [r5, r1]
+ cmp r0, #1
+ bne _0224C9FA
+ sub r1, r1, #4
+ ldrb r1, [r5, r1]
+ add r0, r4, #0
+ bl FUN_02026264
+ b _0224CA18
+_0224C9FA:
+ cmp r0, #0
+ bne _0224CA0A
+ sub r1, r1, #4
+ ldrb r1, [r5, r1]
+ add r0, r4, #0
+ bl FUN_02025FA4
+ b _0224CA18
+_0224CA0A:
+ cmp r0, #2
+ bne _0224CA18
+ sub r1, r1, #4
+ ldrb r1, [r5, r1]
+ add r0, r4, #0
+ bl FUN_02026194
+_0224CA18:
+ ldr r0, _0224CA24 ; =0x00000215
+ ldrb r0, [r5, r0]
+ pop {r3, r4, r5, pc}
+_0224CA1E:
+ ldr r0, _0224CA28 ; =0x0000FFFC
+ pop {r3, r4, r5, pc}
+ nop
+_0224CA24: .word 0x00000215
+_0224CA28: .word 0x0000FFFC
+ thumb_func_end MOD18_0224C9C4
+
+ thumb_func_start MOD18_0224CA2C
+MOD18_0224CA2C: ; 0x0224CA2C
+ ldr r0, _0224CA30 ; =0x0000FFFE
+ bx lr
+ .align 2, 0
+_0224CA30: .word 0x0000FFFE
+ thumb_func_end MOD18_0224CA2C
+
+ thumb_func_start MOD18_0224CA34
+MOD18_0224CA34: ; 0x0224CA34
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x68]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x6c]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x70]
+ bl FUN_0200AB18
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224CA34
+
+ thumb_func_start MOD18_0224CA54
+MOD18_0224CA54: ; 0x0224CA54
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD18_0224CA54
+
+ thumb_func_start MOD18_0224CA58
+MOD18_0224CA58: ; 0x0224CA58
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD18_0223D658
+ ldr r1, _0224CA90 ; =0x00000241
+ mov r2, #1
+ bl MOD18_0224DB80
+ bl MOD18_0223D658
+ add r4, r0, #0
+ bl FUN_02031190
+ bl FUN_0202DFA4
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD18_0224DDB8
+ bl MOD18_0223D658
+ mov r2, #0
+ add r1, r5, #0
+ add r3, r2, #0
+ bl MOD18_0224DCB8
+ pop {r3, r4, r5, pc}
+ nop
+_0224CA90: .word 0x00000241
+ thumb_func_end MOD18_0224CA58
+
+ thumb_func_start MOD18_0224CA94
+MOD18_0224CA94: ; 0x0224CA94
+ push {r3, lr}
+ bl MOD18_0223D658
+ bl MOD18_0224DD94
+ pop {r3, pc}
+ thumb_func_end MOD18_0224CA94
+
+ thumb_func_start MOD18_0224CAA0
+MOD18_0224CAA0: ; 0x0224CAA0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD18_0223D658
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD18_0224DEF0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_0224CAA0
+
+ thumb_func_start MOD18_0224CAB4
+MOD18_0224CAB4: ; 0x0224CAB4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD18_0223D658
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD18_0224DF04
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_0224CAB4
+
+ thumb_func_start MOD18_0224CAC8
+MOD18_0224CAC8: ; 0x0224CAC8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD18_0223D658
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD18_0224DF18
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_0224CAC8
+
+ thumb_func_start MOD18_0224CADC
+MOD18_0224CADC: ; 0x0224CADC
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ add r0, #0x20
+ bl FUN_02019048
+ cmp r0, #0
+ bne _0224CB1A
+ mov r0, #0xc
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r3, #1
+ str r3, [sp, #0x10]
+ ldr r0, [r4, #0xc]
+ add r1, r4, #0
+ ldr r0, [r0, #8]
+ add r1, #0x20
+ mov r2, #3
+ bl FUN_02019064
+ add r0, r4, #0
+ ldr r2, _0224CB30 ; =0x000003D9
+ add r0, #0x20
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+_0224CB1A:
+ add r0, r4, #0
+ add r0, #0x20
+ mov r1, #0xf
+ bl FUN_02019620
+ add r4, #0x20
+ add r0, r4, #0
+ bl FUN_020191D0
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+_0224CB30: .word 0x000003D9
+ thumb_func_end MOD18_0224CADC
+
+ thumb_func_start MOD18_0224CB34
+MOD18_0224CB34: ; 0x0224CB34
+ push {r4, r5, lr}
+ sub sp, #0x14
+ mov r3, #1
+ add r5, r0, #0
+ str r3, [sp]
+ mov r0, #7
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x33
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0
+ add r1, r5, #0
+ ldr r0, [r0, #8]
+ add r1, #0x30
+ mov r2, #3
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _0224CBA8 ; =0x000003D9
+ add r0, #0x30
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add r0, r5, #0
+ add r0, #0x30
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r5, #0
+ add r0, #0x30
+ bl FUN_020191D0
+ bl MOD18_0223D658
+ bl MOD18_0224DBB4
+ ldr r2, [r5, #0x68]
+ add r1, r4, #0
+ bl FUN_0200A8E0
+ mov r3, #1
+ add r0, r5, #0
+ str r3, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldr r2, [r5, #0x68]
+ add r0, #0x30
+ bl FUN_0201BD84
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_0224CBA8: .word 0x000003D9
+ thumb_func_end MOD18_0224CB34
+
+ thumb_func_start MOD18_0224CBAC
+MOD18_0224CBAC: ; 0x0224CBAC
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x30
+ bl FUN_02019048
+ cmp r0, #0
+ beq _0224CBCC
+ add r0, r4, #0
+ add r0, #0x30
+ mov r1, #1
+ bl FUN_0200CCF8
+ add r4, #0x30
+ add r0, r4, #0
+ bl FUN_02019178
+_0224CBCC:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224CBAC
+
+ thumb_func_start MOD18_0224CBD0
+MOD18_0224CBD0: ; 0x0224CBD0
+ push {r3, r4, r5, lr}
+ ldr r5, _0224CC00 ; =0x022512A0
+ mov r3, #0
+_0224CBD6:
+ ldrh r4, [r5, #2]
+ cmp r0, r4
+ bne _0224CBF0
+ ldrh r4, [r5, #4]
+ cmp r1, r4
+ bne _0224CBF0
+ mov r0, #6
+ add r1, r3, #0
+ mul r1, r0
+ ldr r0, _0224CC00 ; =0x022512A0
+ str r3, [r2]
+ ldrh r0, [r0, r1]
+ pop {r3, r4, r5, pc}
+_0224CBF0:
+ add r3, r3, #1
+ add r5, r5, #6
+ cmp r3, #0x14
+ blt _0224CBD6
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224CC00: .word 0x022512A0
+ thumb_func_end MOD18_0224CBD0
+
+ thumb_func_start MOD18_0224CC04
+MOD18_0224CC04: ; 0x0224CC04
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r1, _0224CF50 ; =0x00000246
+ add r5, r0, #0
+ ldrb r0, [r4, r1]
+ cmp r0, #0x13
+ bhi _0224CCD6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0224CC20: ; jump table
+ .short _0224CC48 - _0224CC20 - 2 ; case 0
+ .short _0224CC68 - _0224CC20 - 2 ; case 1
+ .short _0224CC7E - _0224CC20 - 2 ; case 2
+ .short _0224CC8E - _0224CC20 - 2 ; case 3
+ .short _0224CD32 - _0224CC20 - 2 ; case 4
+ .short _0224CD48 - _0224CC20 - 2 ; case 5
+ .short _0224CE38 - _0224CC20 - 2 ; case 6
+ .short _0224CE68 - _0224CC20 - 2 ; case 7
+ .short _0224CF40 - _0224CC20 - 2 ; case 8
+ .short _0224CFA8 - _0224CC20 - 2 ; case 9
+ .short _0224CF30 - _0224CC20 - 2 ; case 10
+ .short _0224CFCE - _0224CC20 - 2 ; case 11
+ .short _0224D046 - _0224CC20 - 2 ; case 12
+ .short _0224D0DA - _0224CC20 - 2 ; case 13
+ .short _0224D104 - _0224CC20 - 2 ; case 14
+ .short _0224D14E - _0224CC20 - 2 ; case 15
+ .short _0224D190 - _0224CC20 - 2 ; case 16
+ .short _0224D1A0 - _0224CC20 - 2 ; case 17
+ .short _0224CDE2 - _0224CC20 - 2 ; case 18
+ .short _0224CE20 - _0224CC20 - 2 ; case 19
+_0224CC48:
+ add r0, r1, #2
+ ldrb r0, [r4, r0]
+ cmp r0, #2
+ bne _0224CC58
+ mov r0, #0x1b
+ bl MOD18_0224CA58
+ b _0224CC5E
+_0224CC58:
+ mov r0, #0
+ bl MOD18_0224CA58
+_0224CC5E:
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #1
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CC68:
+ bl MOD18_0223D658
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224CCD6
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #2
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CC7E:
+ add r0, r4, #0
+ bl MOD18_0224C274
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #3
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CC8E:
+ ldr r0, [r4, #0x48]
+ bl FUN_02001204
+ add r5, r0, #0
+ add r1, sp, #4
+ ldr r0, [r4, #0x48]
+ add r1, #2
+ add r2, sp, #4
+ bl FUN_02001448
+ add r2, sp, #4
+ ldrh r1, [r2]
+ ldrh r2, [r2, #2]
+ mov r0, #0x13
+ bl MOD18_0223E57C
+ ldr r1, _0224CF54 ; =0x0000024A
+ ldr r0, [r4, #0x48]
+ ldrh r6, [r4, r1]
+ add r1, r4, r1
+ bl FUN_0200143C
+ ldr r0, _0224CF54 ; =0x0000024A
+ ldrh r0, [r4, r0]
+ cmp r6, r0
+ beq _0224CCC8
+ ldr r0, _0224CF58 ; =0x000005DC
+ bl FUN_020054C8
+_0224CCC8:
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ beq _0224CCDA
+ add r0, r0, #1
+ cmp r5, r0
+ bne _0224CCD8
+_0224CCD6:
+ b _0224D1CE
+_0224CCD8:
+ b _0224CCF2
+_0224CCDA:
+ ldr r0, _0224CF58 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD18_0224C94C
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #0x10
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CCF2:
+ mov r1, #0x92
+ lsl r1, r1, #2
+ ldrb r0, [r4, r1]
+ cmp r0, #2
+ bne _0224CD0C
+ mov r2, #1
+ sub r0, r1, #1
+ strb r2, [r4, r0]
+ mov r2, #0xb
+ sub r0, r1, #2
+ add sp, #8
+ strb r2, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CD0C:
+ sub r0, r1, #1
+ strb r5, [r4, r0]
+ cmp r5, #0
+ ldr r0, _0224CF58 ; =0x000005DC
+ bne _0224CD24
+ bl FUN_020054C8
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #4
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CD24:
+ bl FUN_020054C8
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #0xb
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CD32:
+ add r0, r4, #0
+ bl MOD18_0224CADC
+ add r0, r4, #0
+ bl MOD18_0224C7D4
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #5
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CD48:
+ ldr r0, [r4, #0x48]
+ bl FUN_02001204
+ add r5, r0, #0
+ add r1, sp, #4
+ ldr r0, [r4, #0x48]
+ add r1, #2
+ add r2, sp, #4
+ bl FUN_02001448
+ mov r0, #0x92
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ add r2, sp, #4
+ ldrh r1, [r2]
+ add r0, #0xd
+ lsl r0, r0, #0x10
+ ldrh r2, [r2, #2]
+ lsr r0, r0, #0x10
+ bl MOD18_0223E57C
+ ldr r1, _0224CF54 ; =0x0000024A
+ ldr r0, [r4, #0x48]
+ ldrh r6, [r4, r1]
+ add r1, r4, r1
+ bl FUN_0200143C
+ ldr r0, _0224CF54 ; =0x0000024A
+ ldrh r0, [r4, r0]
+ cmp r6, r0
+ beq _0224CD8C
+ ldr r0, _0224CF58 ; =0x000005DC
+ bl FUN_020054C8
+_0224CD8C:
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ bne _0224CD96
+ add r5, r0, #0
+_0224CD96:
+ mov r0, #0
+ mvn r0, r0
+ cmp r5, r0
+ beq _0224CDA6
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+_0224CDA6:
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ beq _0224CDB6
+ add r0, r0, #1
+ cmp r5, r0
+ beq _0224CE2C
+ b _0224CDCE
+_0224CDB6:
+ ldr r0, _0224CF58 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD18_0224C94C
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #2
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CDCE:
+ ldr r0, _0224CF58 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #0x12
+ strb r1, [r4, r0]
+ sub r0, r0, #2
+ add sp, #8
+ strb r5, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CDE2:
+ add r0, r1, #2
+ ldrb r0, [r4, r0]
+ cmp r0, #1
+ bne _0224CDFC
+ sub r2, r1, #2
+ ldrb r2, [r4, r2]
+ sub r1, #0x36
+ mov r0, #2
+ add r2, r4, r2
+ ldrb r1, [r2, r1]
+ bl MOD18_0224CAB4
+ b _0224CE10
+_0224CDFC:
+ cmp r0, #0
+ bne _0224CE10
+ sub r2, r1, #2
+ ldrb r2, [r4, r2]
+ sub r1, #0x36
+ mov r0, #2
+ add r2, r4, r2
+ ldrb r1, [r2, r1]
+ bl MOD18_0224CAC8
+_0224CE10:
+ mov r0, #1
+ bl MOD18_0224CA58
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #0x13
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CE20:
+ bl MOD18_0223D658
+ bl MOD18_0224DF88
+ cmp r0, #0
+ beq _0224CE2E
+_0224CE2C:
+ b _0224D1CE
+_0224CE2E:
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #6
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CE38:
+ mov r0, #0xc
+ bl MOD18_0223E628
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #0xc
+ bl MOD18_0223E5F0
+ mov r1, #0x23
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD18_02249EF4
+ add r0, r4, #0
+ mov r1, #0x13
+ bl MOD18_0224CB34
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #7
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CE68:
+ ldr r0, [r4, #0x4c]
+ bl MOD18_02244140
+ add r5, r0, #0
+ ldr r0, [r4, #0x4c]
+ add r1, sp, #4
+ ldr r0, [r0, #0xc]
+ add r1, #2
+ add r2, sp, #4
+ bl FUN_02001448
+ add r2, sp, #4
+ ldrh r1, [r2]
+ ldrh r2, [r2, #2]
+ mov r0, #0xc
+ bl MOD18_0223E57C
+ mov r0, #0
+ mvn r0, r0
+ cmp r5, r0
+ beq _0224CE9A
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+_0224CE9A:
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ beq _0224CEAA
+ add r0, r0, #1
+ cmp r5, r0
+ beq _0224CF6C
+ b _0224CEBA
+_0224CEAA:
+ add r0, r4, #0
+ bl MOD18_0224CBAC
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #4
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CEBA:
+ mov r1, #0x91
+ lsl r1, r1, #2
+ ldrb r1, [r4, r1]
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD18_0224C1C0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD18_0224C94C
+ add r0, r4, #0
+ bl MOD18_0224CBAC
+ ldr r1, _0224CF5C ; =0x0000FFFC
+ cmp r5, r1
+ bne _0224CEEE
+ mov r0, #3
+ bl MOD18_0224CA58
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #9
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CEEE:
+ add r0, r1, #1
+ cmp r5, r0
+ bne _0224CF04
+ mov r0, #4
+ bl MOD18_0224CA58
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #9
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CF04:
+ sub r0, r1, #1
+ cmp r5, r0
+ bne _0224CF1A
+ mov r0, #5
+ bl MOD18_0224CA58
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #9
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CF1A:
+ mov r0, #0x91
+ lsl r0, r0, #2
+ strb r5, [r4, r0]
+ mov r0, #2
+ bl MOD18_0224CA58
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #8
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CF30:
+ mov r0, #3
+ bl MOD18_0224CA58
+ ldr r0, _0224CF50 ; =0x00000246
+ mov r1, #9
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CF40:
+ bl MOD18_0223D658
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224CF6C
+ ldr r0, _0224CF60 ; =0x021C48B8
+ b _0224CF64
+ .align 2, 0
+_0224CF50: .word 0x00000246
+_0224CF54: .word 0x0000024A
+_0224CF58: .word 0x000005DC
+_0224CF5C: .word 0x0000FFFC
+_0224CF60: .word 0x021C48B8
+_0224CF64:
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ bne _0224CF6E
+_0224CF6C:
+ b _0224D1CE
+_0224CF6E:
+ mov r1, #0x92
+ lsl r1, r1, #2
+ ldrb r0, [r4, r1]
+ cmp r0, #1
+ bne _0224CF84
+ sub r1, r1, #4
+ ldrb r1, [r4, r1]
+ mov r0, #2
+ bl MOD18_0224CAB4
+ b _0224CF92
+_0224CF84:
+ cmp r0, #0
+ bne _0224CF92
+ sub r1, r1, #4
+ ldrb r1, [r4, r1]
+ mov r0, #2
+ bl MOD18_0224CAC8
+_0224CF92:
+ mov r0, #6
+ bl MOD18_0224CA58
+ ldr r0, _0224D1D4 ; =0x000005E3
+ bl FUN_020054C8
+ ldr r0, _0224D1D8 ; =0x00000246
+ mov r1, #9
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CFA8:
+ bl MOD18_0223D658
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224D0AA
+ ldr r0, _0224D1DC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _0224D0AA
+ mov r0, #8
+ bl MOD18_0224CA58
+ ldr r0, _0224D1D8 ; =0x00000246
+ mov r1, #2
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224CFCE:
+ add r0, r4, #0
+ bl MOD18_0224CADC
+ mov r0, #0x92
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ add r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl MOD18_0223E628
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r1, #0x1c
+ ldrb r0, [r4, r1]
+ add r0, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl MOD18_0223E5F0
+ mov r1, #0x23
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ ldr r0, _0224D1E0 ; =MOD18_0224C510
+ add r1, #0x18
+ str r0, [r4, #0x60]
+ ldrb r0, [r4, r1]
+ cmp r0, #1
+ bne _0224D01A
+ add r0, r4, #0
+ bl MOD18_02249B2C
+ add r0, r4, #0
+ mov r1, #0x14
+ bl MOD18_0224CB34
+ b _0224D03C
+_0224D01A:
+ cmp r0, #0
+ bne _0224D02E
+ add r0, r4, #0
+ bl MOD18_0224AA28
+ add r0, r4, #0
+ mov r1, #0x15
+ bl MOD18_0224CB34
+ b _0224D03C
+_0224D02E:
+ add r0, r4, #0
+ bl MOD18_0224A2EC
+ add r0, r4, #0
+ mov r1, #0x1d
+ bl MOD18_0224CB34
+_0224D03C:
+ ldr r0, _0224D1D8 ; =0x00000246
+ mov r1, #0xc
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224D046:
+ ldr r0, [r4, #0x4c]
+ bl MOD18_02244140
+ add r5, r0, #0
+ ldr r0, [r4, #0x4c]
+ add r1, sp, #4
+ ldr r0, [r0, #0xc]
+ add r1, #2
+ add r2, sp, #4
+ bl FUN_02001448
+ mov r0, #0x92
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ add r2, sp, #4
+ ldrh r1, [r2]
+ add r0, #0x10
+ lsl r0, r0, #0x10
+ ldrh r2, [r2, #2]
+ lsr r0, r0, #0x10
+ bl MOD18_0223E57C
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ beq _0224D082
+ add r0, r0, #1
+ cmp r5, r0
+ beq _0224D0AA
+ b _0224D0A2
+_0224D082:
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD18_0224C94C
+ add r0, r4, #0
+ bl MOD18_0224CBAC
+ ldr r0, _0224D1D8 ; =0x00000246
+ mov r1, #2
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224D0A2:
+ ldr r0, _0224D1E4 ; =0x00000215
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bne _0224D0AC
+_0224D0AA:
+ b _0224D1CE
+_0224D0AC:
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+ mov r0, #0x91
+ lsl r0, r0, #2
+ strb r5, [r4, r0]
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD18_0224C94C
+ add r0, r4, #0
+ bl MOD18_0224CBAC
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD18_0224C974
+ ldr r0, _0224D1D8 ; =0x00000246
+ mov r1, #0xd
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224D0DA:
+ bl MOD18_0223D658
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224D1CE
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, [r4, #0xc]
+ ldr r1, _0224D1E8 ; =0x0225066C
+ ldr r0, [r0, #8]
+ ldr r2, _0224D1EC ; =0x000003D9
+ mov r3, #0xb
+ bl FUN_02002198
+ str r0, [r4, #0x5c]
+ ldr r0, _0224D1D8 ; =0x00000246
+ mov r1, #0xe
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224D104:
+ ldr r0, [r4, #0x5c]
+ mov r1, #4
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _0224D1CE
+ cmp r0, #0
+ bne _0224D140
+ add r0, r4, #0
+ bl MOD18_0224C9C4
+ ldr r1, _0224D1F0 ; =0x0000FFFC
+ cmp r0, r1
+ bne _0224D132
+ mov r0, #3
+ bl MOD18_0224CA58
+ ldr r0, _0224D1D8 ; =0x00000246
+ mov r1, #9
+ strb r1, [r4, r0]
+ b _0224D146
+_0224D132:
+ mov r0, #0xb
+ bl MOD18_0224CA58
+ ldr r0, _0224D1D8 ; =0x00000246
+ mov r1, #0xf
+ strb r1, [r4, r0]
+ b _0224D146
+_0224D140:
+ ldr r0, _0224D1D8 ; =0x00000246
+ mov r1, #0x10
+ strb r1, [r4, r0]
+_0224D146:
+ mov r0, #0
+ add sp, #8
+ str r0, [r4, #0x5c]
+ pop {r4, r5, r6, pc}
+_0224D14E:
+ bl MOD18_0223D658
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224D1CE
+ ldr r0, _0224D1DC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _0224D1CE
+ bl MOD18_0223D658
+ ldr r1, _0224D1F4 ; =0x0000021A
+ ldrb r1, [r4, r1]
+ bl MOD18_0224DE7C
+ ldr r1, _0224D1E4 ; =0x00000215
+ mov r0, #2
+ ldrb r1, [r4, r1]
+ bl MOD18_0224CAA0
+ mov r0, #7
+ bl MOD18_0224CA58
+ ldr r0, _0224D1D4 ; =0x000005E3
+ bl FUN_020054C8
+ ldr r0, _0224D1D8 ; =0x00000246
+ mov r1, #9
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224D190:
+ mov r0, #9
+ bl MOD18_0224CA58
+ ldr r0, _0224D1D8 ; =0x00000246
+ mov r1, #0x11
+ add sp, #8
+ strb r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0224D1A0:
+ bl MOD18_0223D658
+ bl MOD18_0224DF88
+ cmp r0, #0
+ bne _0224D1CE
+ ldr r0, _0224D1DC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _0224D1CE
+ bl MOD18_0224CA94
+ add r0, r4, #0
+ bl MOD18_0224CA34
+ bl MOD18_0223E6A0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ bl FUN_0204F7FC
+_0224D1CE:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_0224D1D4: .word 0x000005E3
+_0224D1D8: .word 0x00000246
+_0224D1DC: .word 0x021C48B8
+_0224D1E0: .word MOD18_0224C510
+_0224D1E4: .word 0x00000215
+_0224D1E8: .word 0x0225066C
+_0224D1EC: .word 0x000003D9
+_0224D1F0: .word 0x0000FFFC
+_0224D1F4: .word 0x0000021A
+ thumb_func_end MOD18_0224CC04
+
+ thumb_func_start MOD18_0224D1F8
+MOD18_0224D1F8: ; 0x0224D1F8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ bl FUN_02031190
+ bl FUN_0204E4D4
+ str r0, [sp, #8]
+ bl FUN_02031190
+ bl FUN_0204E50C
+ str r0, [sp, #4]
+ bl FUN_02031190
+ bl FUN_0204E69C
+ bl FUN_0204F610
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #4]
+ add r2, sp, #0xc
+ bl MOD18_0224CBD0
+ add r5, r0, #0
+ add r0, r5, #3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl MOD18_0223E56C
+ mov r1, #0x25
+ mov r0, #4
+ lsl r1, r1, #4
+ bl FUN_02016998
+ mov r2, #0x25
+ mov r1, #0
+ lsl r2, r2, #4
+ add r6, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x92
+ str r4, [r6, #0xc]
+ lsl r0, r0, #2
+ strb r5, [r6, r0]
+ ldr r1, [sp, #0xc]
+ sub r0, #0x24
+ str r1, [r6, r0]
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ str r0, [r6, #0x68]
+ mov r0, #0x64
+ mov r1, #4
+ bl FUN_020219F4
+ str r0, [r6, #0x6c]
+ mov r0, #4
+ bl FUN_0200AA80
+ str r0, [r6, #0x70]
+ ldr r0, _0224D2DC ; =0x00000246
+ mov r1, #0
+ strb r1, [r6, r0]
+ ldr r0, _0224D2E0 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r0, _0224D2E4 ; =MOD18_0224CC04
+ ldr r2, _0224D2E8 ; =0x00002710
+ add r1, r6, #0
+ bl FUN_0200CA44
+ str r0, [r6, #4]
+ ldr r1, [r6, #4]
+ ldr r2, _0224D2EC ; =MOD18_0224AFE8
+ add r0, r6, #0
+ bl MOD18_0223E688
+ ldr r0, [r6, #0xc]
+ bl FUN_02034B64
+ add r7, r0, #0
+ ldr r0, [r6, #0xc]
+ bl FUN_02034B6C
+ add r5, r0, #0
+ mov r4, #0
+ cmp r7, #0
+ ble _0224D2D6
+_0224D2AE:
+ ldrh r1, [r5, #0x18]
+ ldr r0, [sp, #8]
+ cmp r0, r1
+ bne _0224D2CE
+ ldrh r1, [r5, #0x1a]
+ ldr r0, [sp, #4]
+ cmp r0, r1
+ bne _0224D2CE
+ ldr r0, [r6, #0xc]
+ add r1, r4, #0
+ ldr r0, [r0, #0x34]
+ bl FUN_02058060
+ ldr r1, [sp]
+ bl FUN_020584AC
+_0224D2CE:
+ add r4, r4, #1
+ add r5, #0x20
+ cmp r4, r7
+ blt _0224D2AE
+_0224D2D6:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0224D2DC: .word 0x00000246
+_0224D2E0: .word 0x000005DC
+_0224D2E4: .word MOD18_0224CC04
+_0224D2E8: .word 0x00002710
+_0224D2EC: .word MOD18_0224AFE8
+ thumb_func_end MOD18_0224D1F8
+
+ thumb_func_start MOD18_0224D2F0
+MOD18_0224D2F0: ; 0x0224D2F0
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ mov r1, #0
+ mov r2, #0x30
+ add r5, r0, #0
+ bl MI_CpuFill8
+ ldr r0, _0224D320 ; =0x022513FC
+ str r5, [r0]
+ str r6, [r5, #8]
+ ldr r0, [r0]
+ str r4, [r0, #0xc]
+ mov r0, #0xf
+ bl FUN_02025964
+ ldr r1, _0224D320 ; =0x022513FC
+ ldr r2, [r1]
+ str r0, [r2, #0x10]
+ ldr r0, [r1]
+ add r0, #0x14
+ bl FUN_020312BC
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0224D320: .word 0x022513FC
+ thumb_func_end MOD18_0224D2F0
+
+ thumb_func_start MOD18_0224D324
+MOD18_0224D324: ; 0x0224D324
+ push {r3, lr}
+ ldr r0, _0224D340 ; =0x022513FC
+ ldr r0, [r0]
+ ldr r0, [r0, #0x10]
+ bl FUN_02016A18
+ ldr r0, _0224D340 ; =0x022513FC
+ ldr r0, [r0]
+ bl FUN_02016A18
+ ldr r0, _0224D340 ; =0x022513FC
+ mov r1, #0
+ str r1, [r0]
+ pop {r3, pc}
+ .align 2, 0
+_0224D340: .word 0x022513FC
+ thumb_func_end MOD18_0224D324
+
+ thumb_func_start MOD18_0224D344
+MOD18_0224D344: ; 0x0224D344
+ push {r3, lr}
+ ldr r0, _0224D358 ; =0x022513FC
+ ldr r1, [r0]
+ ldr r0, [r1, #4]
+ cmp r0, #0
+ beq _0224D356
+ ldr r1, [r1]
+ bl MOD18_0224D56C
+_0224D356:
+ pop {r3, pc}
+ .align 2, 0
+_0224D358: .word 0x022513FC
+ thumb_func_end MOD18_0224D344
+
+ thumb_func_start MOD18_0224D35C
+MOD18_0224D35C: ; 0x0224D35C
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_0224D35C
+
+ thumb_func_start MOD18_0224D360
+MOD18_0224D360: ; 0x0224D360
+ mov r0, #0x30
+ bx lr
+ thumb_func_end MOD18_0224D360
+
+ thumb_func_start MOD18_0224D364
+MOD18_0224D364: ; 0x0224D364
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r7, r0, #0
+ mov r0, #4
+ str r1, [sp, #0xc]
+ add r5, r2, #0
+ str r3, [sp, #0x10]
+ bl FUN_0200AA80
+ str r0, [sp, #0x1c]
+ mov r0, #0x1e
+ mov r1, #4
+ bl FUN_020219F4
+ add r4, r0, #0
+ mov r0, #0x1e
+ mov r1, #4
+ bl FUN_020219F4
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0xc]
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ add r0, r7, #0
+ add r2, r4, #0
+ mov r3, #2
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ ldr r0, [sp, #0xc]
+ mov r1, #1
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #0x11
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ add r0, r7, #0
+ add r2, r4, #0
+ mov r3, #2
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ ldr r0, [sp, #0xc]
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ add r0, r7, #0
+ add r2, r4, #0
+ mov r3, #0x39
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ ldr r0, [sp, #0xc]
+ mov r1, #2
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ add r0, r7, #0
+ add r2, r4, #0
+ mov r3, #0x84
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ ldr r0, [sp, #0xc]
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #0x11
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ add r0, r7, #0
+ add r2, r4, #0
+ mov r3, #0x39
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r5, #0
+ bl FUN_020239C0
+ add r2, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x1c]
+ mov r1, #6
+ mov r3, #5
+ bl FUN_0200AD38
+ ldr r0, [sp, #0xc]
+ mov r1, #5
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ ldr r2, [sp, #0x18]
+ add r0, r7, #0
+ mov r3, #0x94
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x1c]
+ mov r1, #0
+ add r2, r5, #0
+ bl FUN_0200ABC0
+ ldr r0, [sp, #0xc]
+ mov r1, #4
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ ldr r2, [sp, #0x18]
+ add r0, r7, #0
+ mov r3, #0x39
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x10]
+ bl FUN_020269A0
+ add r1, r0, #0
+ ldr r0, [sp, #0xc]
+ add r1, #0x14
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #0x11
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ add r0, r7, #0
+ add r2, r4, #0
+ mov r3, #0x39
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ mov r5, #0
+ mov r6, #0x27
+_0224D4D0:
+ ldr r0, [sp, #0xc]
+ add r1, r5, #6
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ str r6, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, r7, #0
+ mov r1, #0
+ add r2, r4, #0
+ mov r3, #2
+ bl FUN_0201BD84
+ add r5, r5, #1
+ add r6, #0x10
+ cmp r5, #7
+ blt _0224D4D0
+ mov r0, #0
+ ldr r6, _0224D568 ; =0x02251318
+ str r0, [sp, #0x14]
+ mov r5, #0x27
+_0224D500:
+ ldr r0, [sp, #0x10]
+ ldr r1, [r6]
+ blx r1
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r1, #6
+ ldr r0, [sp, #0x1c]
+ add r3, r1, #0
+ bl FUN_0200AD38
+ ldr r0, [sp, #0xc]
+ mov r1, #0xd
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ str r5, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r2, [sp, #0x18]
+ add r0, r7, #0
+ mov r1, #0
+ mov r3, #0x94
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x14]
+ add r6, r6, #4
+ add r0, r0, #1
+ add r5, #0x10
+ str r0, [sp, #0x14]
+ cmp r0, #7
+ blt _0224D500
+ add r0, r4, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x1c]
+ bl FUN_0200AB18
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0224D568: .word 0x02251318
+ thumb_func_end MOD18_0224D364
+
+ thumb_func_start MOD18_0224D56C
+MOD18_0224D56C: ; 0x0224D56C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #8
+ mov r1, #0
+ bl FUN_0200CCF8
+ add r0, r4, #0
+ add r0, #8
+ bl FUN_02019570
+ add r0, r4, #0
+ add r0, #8
+ bl FUN_02019178
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _0224D596
+ ldr r0, [r4, #4]
+ blx r1
+_0224D596:
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, _0224D5B0 ; =0x022513FC
+ mov r2, #0
+ ldr r1, [r0]
+ str r2, [r1, #4]
+ ldr r0, [r0]
+ str r2, [r0]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224D5B0: .word 0x022513FC
+ thumb_func_end MOD18_0224D56C
+
+ thumb_func_start MOD18_0224D5B4
+MOD18_0224D5B4: ; 0x0224D5B4
+ push {r3, lr}
+ ldr r2, _0224D5C8 ; =0x021C48B8
+ ldr r3, [r2, #0x48]
+ mov r2, #3
+ tst r2, r3
+ beq _0224D5C4
+ bl MOD18_0224D56C
+_0224D5C4:
+ pop {r3, pc}
+ nop
+_0224D5C8: .word 0x021C48B8
+ thumb_func_end MOD18_0224D5B4
+
+ thumb_func_start MOD18_0224D5CC
+MOD18_0224D5CC: ; 0x0224D5CC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r0, #0
+ str r1, [sp, #0x14]
+ mov r0, #4
+ mov r1, #0x2c
+ add r5, r2, #0
+ add r6, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r1, #0
+ mov r2, #0x2c
+ bl MI_CpuFill8
+ str r5, [r4]
+ add r1, r4, #0
+ str r6, [r4, #4]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ mov r0, #0x13
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ add r1, #8
+ mov r2, #3
+ mov r3, #4
+ bl FUN_02019064
+ add r0, r4, #0
+ ldr r2, _0224D684 ; =0x000003D9
+ add r0, #8
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ ldr r2, _0224D688 ; =0x00000245
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #4
+ bl FUN_0200A86C
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #8
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r0, [sp, #0x30]
+ cmp r0, #0
+ beq _0224D644
+ ldr r0, _0224D68C ; =0x022513FC
+ ldr r0, [r0]
+ ldr r3, [r0, #0xc]
+ b _0224D64A
+_0224D644:
+ ldr r0, _0224D68C ; =0x022513FC
+ ldr r0, [r0]
+ ldr r3, [r0, #0x10]
+_0224D64A:
+ add r0, r4, #0
+ ldr r2, [sp, #0x14]
+ add r0, #8
+ add r1, r5, #0
+ bl MOD18_0224D364
+ add r0, r4, #0
+ add r0, #8
+ bl FUN_02019220
+ ldr r0, _0224D690 ; =0x000005FD
+ bl FUN_020054C8
+ ldr r0, _0224D694 ; =MOD18_0224D5B4
+ add r1, r4, #0
+ mov r2, #0xa
+ bl FUN_0200CA44
+ ldr r1, _0224D68C ; =0x022513FC
+ ldr r2, [r1]
+ str r0, [r2, #4]
+ ldr r0, [r1]
+ str r4, [r0]
+ add r0, r5, #0
+ bl FUN_0200A8B8
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0224D684: .word 0x000003D9
+_0224D688: .word 0x00000245
+_0224D68C: .word 0x022513FC
+_0224D690: .word 0x000005FD
+_0224D694: .word MOD18_0224D5B4
+ thumb_func_end MOD18_0224D5CC
+
+ thumb_func_start MOD18_0224D698
+MOD18_0224D698: ; 0x0224D698
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ bl FUN_02025960
+ add r4, r0, #0
+ ldr r0, _0224D6FC ; =0x022513FC
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ bl FUN_02029FC8
+ bl FUN_0202A1B8
+ add r6, r0, #0
+ mov r0, #4
+ add r1, r4, #1
+ bl FUN_02016998
+ mov r1, #0
+ add r2, r4, #1
+ add r5, r0, #0
+ bl MI_CpuFill8
+ ldr r0, _0224D700 ; =0x000F423F
+ strb r7, [r5]
+ cmp r6, r0
+ blt _0224D6CE
+ add r6, r0, #0
+_0224D6CE:
+ ldr r0, _0224D6FC ; =0x022513FC
+ add r1, r6, #0
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020268E8
+ ldr r0, _0224D6FC ; =0x022513FC
+ add r1, r5, #1
+ ldr r0, [r0]
+ add r2, r4, #0
+ ldr r0, [r0, #0xc]
+ bl MI_CpuCopy8
+ mov r0, #0x51
+ add r1, r5, #0
+ add r2, r4, #1
+ bl FUN_02030ADC
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0224D6FC: .word 0x022513FC
+_0224D700: .word 0x000F423F
+ thumb_func_end MOD18_0224D698
+
+ thumb_func_start MOD18_0224D704
+MOD18_0224D704: ; 0x0224D704
+ push {r3, lr}
+ ldr r0, _0224D72C ; =0x022513FC
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ bl FUN_02029FC8
+ bl FUN_0202A1B8
+ add r1, r0, #0
+ ldr r0, _0224D730 ; =0x000F423F
+ cmp r1, r0
+ blt _0224D71E
+ add r1, r0, #0
+_0224D71E:
+ ldr r0, _0224D72C ; =0x022513FC
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_020268E8
+ pop {r3, pc}
+ nop
+_0224D72C: .word 0x022513FC
+_0224D730: .word 0x000F423F
+ thumb_func_end MOD18_0224D704
+
+ thumb_func_start MOD18_0224D734
+MOD18_0224D734: ; 0x0224D734
+ add r3, r1, #0
+ add r1, r2, #0
+ add r2, r3, #0
+ ldr r3, _0224D740 ; =0x02030BC5
+ mov r0, #0x52
+ bx r3
+ .align 2, 0
+_0224D740: .word 0x02030BC5
+ thumb_func_end MOD18_0224D734
+
+ thumb_func_start MOD18_0224D744
+MOD18_0224D744: ; 0x0224D744
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ add r5, r1, #0
+ bl FUN_02031190
+ ldrb r1, [r4]
+ cmp r1, r0
+ bne _0224D76C
+ ldr r1, _0224D770 ; =0x022513FC
+ add r0, r4, #1
+ ldr r1, [r1]
+ sub r2, r5, #1
+ ldr r1, [r1, #0x10]
+ bl MI_CpuCopy8
+ ldr r0, _0224D770 ; =0x022513FC
+ mov r1, #1
+ ldr r0, [r0]
+ add r0, #0x2c
+ strb r1, [r0]
+_0224D76C:
+ pop {r3, r4, r5, pc}
+ nop
+_0224D770: .word 0x022513FC
+ thumb_func_end MOD18_0224D744
+
+ thumb_func_start MOD18_0224D774
+MOD18_0224D774: ; 0x0224D774
+ ldr r0, _0224D780 ; =0x022513FC
+ ldr r0, [r0]
+ add r0, #0x2c
+ ldrb r0, [r0]
+ bx lr
+ nop
+_0224D780: .word 0x022513FC
+ thumb_func_end MOD18_0224D774
+
+ thumb_func_start MOD18_0224D784
+MOD18_0224D784: ; 0x0224D784
+ ldr r0, _0224D790 ; =0x022513FC
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, #0x2c
+ strb r1, [r0]
+ bx lr
+ .align 2, 0
+_0224D790: .word 0x022513FC
+ thumb_func_end MOD18_0224D784
+
+ thumb_func_start MOD18_0224D794
+MOD18_0224D794: ; 0x0224D794
+ ldr r3, _0224D798 ; =0x0204F7FD
+ bx r3
+ .align 2, 0
+_0224D798: .word 0x0204F7FD
+ thumb_func_end MOD18_0224D794
+
+ thumb_func_start MOD18_0224D79C
+MOD18_0224D79C: ; 0x0224D79C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ sub r0, #0x20
+ lsl r1, r0, #2
+ ldr r0, _0224D808 ; =0x02251318
+ cmp r5, #0x20
+ ldr r4, [r0, r1]
+ bge _0224D7B4
+ bl ErrorHandling
+_0224D7B4:
+ cmp r5, #0x2d
+ ble _0224D7BC
+ bl ErrorHandling
+_0224D7BC:
+ bl FUN_0204F7E4
+ bl MOD18_0223D658
+ ldr r1, _0224D80C ; =0x00000245
+ mov r2, #1
+ bl MOD18_0224DB80
+ mov r0, #4
+ bl FUN_02025964
+ add r6, r0, #0
+ bl FUN_02025960
+ add r2, r0, #0
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MI_CpuCopy8
+ add r0, r6, #0
+ blx r4
+ add r4, r0, #0
+ add r0, r6, #0
+ bl FUN_02016A18
+ bl MOD18_0223D658
+ add r1, r4, #0
+ bl MOD18_0224DEC8
+ bl MOD18_0223D658
+ ldr r3, _0224D810 ; =MOD18_0224D794
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD18_0224DCB8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224D808: .word 0x02251318
+_0224D80C: .word 0x00000245
+_0224D810: .word MOD18_0224D794
+ thumb_func_end MOD18_0224D79C
+
+ thumb_func_start MOD18_0224D814
+MOD18_0224D814: ; 0x0224D814
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x40]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x40]
+ mov r0, #4
+ add r5, r2, #0
+ str r3, [sp, #0x14]
+ bl FUN_0200AA80
+ add r7, r0, #0
+ mov r0, #0x28
+ mov r1, #4
+ bl FUN_020219F4
+ add r4, r0, #0
+ mov r0, #0x28
+ mov r1, #4
+ bl FUN_020219F4
+ add r6, r0, #0
+ add r0, r7, #0
+ mov r1, #1
+ add r2, r5, #0
+ bl FUN_0200ABC0
+ ldr r0, [sp, #0x10]
+ mov r1, #0xc
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ add r0, r7, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ ldr r0, [sp, #0xc]
+ add r2, r6, #0
+ mov r3, #2
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x10]
+ mov r1, #0xd
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #0x12
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ ldr r0, [sp, #0xc]
+ add r2, r4, #0
+ mov r3, #2
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x14]
+ bl FUN_020269CC
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r1, #6
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r3, r1, #0
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x10]
+ mov r1, #0xe
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ add r0, r7, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ mov r0, #0x12
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ ldr r0, [sp, #0xc]
+ add r2, r6, #0
+ mov r3, #0x66
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x10]
+ mov r1, #0xf
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r0, #0x34
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ ldr r0, [sp, #0xc]
+ add r2, r4, #0
+ mov r3, #2
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ mov r5, #0
+ str r5, [sp, #0x20]
+_0224D8FA:
+ ldr r0, [sp, #0x40]
+ ldr r2, [sp, #0x20]
+ mov r1, #4
+ bl FUN_02025CD8
+ str r0, [sp, #0x24]
+ cmp r0, #0
+ beq _0224D994
+ ldr r2, [sp, #0x24]
+ add r0, r7, #0
+ mov r1, #0
+ bl FUN_0200ABC0
+ ldr r0, [sp, #0x10]
+ mov r1, #0x10
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ add r0, r7, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ add r0, r5, #0
+ str r0, [sp, #0x1c]
+ add r0, #0x45
+ str r0, [sp, #0x1c]
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ mov r1, #0
+ add r2, r6, #0
+ mov r3, #2
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x24]
+ bl FUN_020239C0
+ add r2, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ mov r1, #5
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r3, r1, #0
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x10]
+ mov r1, #0x11
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ add r0, r7, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ ldr r0, [sp, #0x1c]
+ mov r1, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ add r2, r6, #0
+ mov r3, #0x66
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x24]
+ bl FUN_02016A18
+ b _0224D9DE
+_0224D994:
+ ldr r0, [sp, #0x10]
+ mov r1, #0x33
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ add r0, r5, #0
+ str r0, [sp, #0x18]
+ add r0, #0x45
+ str r0, [sp, #0x18]
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ mov r1, #0
+ add r2, r4, #0
+ mov r3, #2
+ bl FUN_0201BD84
+ ldr r0, [sp, #0x10]
+ mov r1, #0x34
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ ldr r0, [sp, #0x18]
+ mov r1, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ add r2, r4, #0
+ mov r3, #0x66
+ bl FUN_0201BD84
+_0224D9DE:
+ ldr r0, [sp, #0x20]
+ add r5, #0x11
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ cmp r0, #5
+ blt _0224D8FA
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200AB18
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_0224D814
+
+ thumb_func_start MOD18_0224DA00
+MOD18_0224DA00: ; 0x0224DA00
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r0, #0
+ str r1, [sp, #0x14]
+ mov r0, #4
+ mov r1, #0x2c
+ add r6, r2, #0
+ add r4, r3, #0
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x2c
+ add r5, r0, #0
+ bl MI_CpuFill8
+ add r1, r5, #0
+ ldr r0, [sp, #0x30]
+ str r4, [r5]
+ str r0, [r5, #4]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ mov r0, #0x13
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ add r1, #8
+ mov r2, #3
+ mov r3, #4
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _0224DA9C ; =0x000003D9
+ add r0, #8
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ mov r2, #0x91
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #2
+ mov r3, #4
+ bl FUN_0200A86C
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #8
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r5, #0
+ ldr r3, _0224DAA0 ; =0x022513FC
+ str r6, [sp]
+ ldr r3, [r3]
+ ldr r2, [sp, #0x14]
+ ldr r3, [r3, #0xc]
+ add r0, #8
+ add r1, r4, #0
+ bl MOD18_0224D814
+ ldr r0, _0224DAA4 ; =0x000005FD
+ bl FUN_020054C8
+ add r0, r5, #0
+ add r0, #8
+ bl FUN_02019220
+ add r0, r4, #0
+ bl FUN_0200A8B8
+ add r0, r5, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224DA9C: .word 0x000003D9
+_0224DAA0: .word 0x022513FC
+_0224DAA4: .word 0x000005FD
+ thumb_func_end MOD18_0224DA00
+
+ thumb_func_start MOD18_0224DAA8
+MOD18_0224DAA8: ; 0x0224DAA8
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #8
+ mov r1, #0
+ bl FUN_0200CCF8
+ add r0, r4, #0
+ add r0, #8
+ bl FUN_02019570
+ add r0, r4, #0
+ add r0, #8
+ bl FUN_02019178
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _0224DACE
+ ldr r0, [r4, #4]
+ blx r1
+_0224DACE:
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224DAA8
+
+ thumb_func_start MOD18_0224DAD8
+MOD18_0224DAD8: ; 0x0224DAD8
+ ldr r0, _0224DADC ; =0x02250674
+ bx lr
+ .align 2, 0
+_0224DADC: .word 0x02250674
+ thumb_func_end MOD18_0224DAD8
+
+ thumb_func_start MOD18_0224DAE0
+MOD18_0224DAE0: ; 0x0224DAE0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r1, #0
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0x44
+ add r7, r2, #0
+ str r3, [sp, #4]
+ ldr r6, [sp, #0x20]
+ bl FUN_02016998
+ mov r1, #0
+ mov r2, #0x44
+ add r4, r0, #0
+ bl MI_CpuFill8
+ ldr r0, [sp, #0x20]
+ cmp r0, #0
+ bne _0224DB08
+ mov r6, #0xe6
+_0224DB08:
+ add r0, r6, #0
+ add r1, r5, #0
+ bl FUN_020219F4
+ str r0, [r4]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl FUN_020219F4
+ str r0, [r4, #4]
+ add r0, r5, #0
+ bl FUN_0200AA80
+ str r0, [r4, #0x28]
+ ldr r0, [sp]
+ ldr r2, [sp]
+ str r0, [r4, #0x2c]
+ mov r0, #1
+ mov r1, #0x1a
+ add r3, r5, #0
+ bl FUN_0200A86C
+ str r0, [r4, #0x24]
+ str r5, [r4, #0x34]
+ add r0, r4, #0
+ str r7, [r4, #0x18]
+ add r0, #8
+ bl FUN_0201901C
+ ldr r1, [r4, #0x40]
+ mov r0, #1
+ bic r1, r0
+ mov r0, #2
+ bic r1, r0
+ str r1, [r4, #0x40]
+ mov r0, #0
+ str r0, [r4, #0x20]
+ ldr r0, [sp, #4]
+ str r0, [r4, #0x38]
+ add r0, r4, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_0224DAE0
+
+ thumb_func_start MOD18_0224DB5C
+MOD18_0224DB5C: ; 0x0224DB5C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02021A20
+ ldr r0, [r4, #4]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x28]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0x24]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DB5C
+
+ thumb_func_start MOD18_0224DB80
+MOD18_0224DB80: ; 0x0224DB80
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x2c]
+ add r4, r1, #0
+ add r6, r2, #0
+ cmp r0, r4
+ beq _0224DBAC
+ str r4, [r5, #0x2c]
+ ldr r0, [r5, #0x24]
+ bl FUN_0200A8B8
+ ldr r3, [r5, #0x34]
+ add r0, r6, #0
+ mov r1, #0x1a
+ add r2, r4, #0
+ bl FUN_0200A86C
+ str r0, [r5, #0x24]
+ cmp r0, #0
+ bne _0224DBAC
+ bl ErrorHandling
+_0224DBAC:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224DB80
+
+ thumb_func_start MOD18_0224DBB0
+MOD18_0224DBB0: ; 0x0224DBB0
+ str r1, [r0, #0x18]
+ bx lr
+ thumb_func_end MOD18_0224DBB0
+
+ thumb_func_start MOD18_0224DBB4
+MOD18_0224DBB4: ; 0x0224DBB4
+ ldr r0, [r0, #0x24]
+ bx lr
+ thumb_func_end MOD18_0224DBB4
+
+ thumb_func_start MOD18_0224DBB8
+MOD18_0224DBB8: ; 0x0224DBB8
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #8
+ bge _0224DBCE
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0224DBDE
+_0224DBCE:
+ ldr r0, _0224DBE0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _0224DBDE
+ add r0, r4, #0
+ bl MOD18_0224DD94
+_0224DBDE:
+ pop {r4, pc}
+ .align 2, 0
+_0224DBE0: .word 0x021C48B8
+ thumb_func_end MOD18_0224DBB8
+
+ thumb_func_start MOD18_0224DBE4
+MOD18_0224DBE4: ; 0x0224DBE4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ ldr r2, [r4]
+ lsl r0, r0, #0x1e
+ asr r0, r0, #0x1f
+ beq _0224DC04
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #4]
+ bl FUN_0200B7B8
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ ldr r2, [r4, #4]
+ bic r1, r0
+ str r1, [r4, #0x40]
+_0224DC04:
+ add r0, r2, #0
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DBE4
+
+ thumb_func_start MOD18_0224DC08
+MOD18_0224DC08: ; 0x0224DC08
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ bl MOD18_0224DD1C
+ bl MOD18_0223D688
+ add r0, r5, #0
+ add r0, #8
+ bl FUN_02019048
+ cmp r0, #0
+ bne _0224DC4C
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _0224DCAC ; =0x0000012D
+ add r1, r5, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #8
+ mov r2, #3
+ mov r3, #2
+ bl FUN_02019064
+_0224DC4C:
+ add r0, r5, #0
+ add r0, #8
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r5, #0
+ ldr r2, _0224DCB0 ; =0x000001E2
+ add r0, #8
+ mov r1, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ cmp r4, #0
+ beq _0224DC74
+ ldr r0, _0224DCB4 ; =MOD18_0224DBB8
+ add r1, r5, #0
+ mov r2, #0x64
+ bl FUN_0200CA44
+ str r0, [r5, #0x20]
+_0224DC74:
+ ldr r1, [r5, #0x40]
+ mov r0, #1
+ bic r1, r0
+ mov r0, #1
+ orr r1, r0
+ mov r0, #4
+ bic r1, r0
+ add r0, r5, #0
+ str r1, [r5, #0x40]
+ bl MOD18_0224DBE4
+ mov r3, #0
+ str r3, [sp]
+ add r2, r0, #0
+ ldr r0, [r5, #0x38]
+ mov r1, #1
+ str r0, [sp, #4]
+ add r0, r5, #0
+ str r3, [sp, #8]
+ add r0, #8
+ bl FUN_0201BD84
+ str r0, [r5, #0x30]
+ str r6, [r5, #0x1c]
+ str r7, [r5, #0x3c]
+ ldr r0, [r5, #0x30]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224DCAC: .word 0x0000012D
+_0224DCB0: .word 0x000001E2
+_0224DCB4: .word MOD18_0224DBB8
+ thumb_func_end MOD18_0224DC08
+
+ thumb_func_start MOD18_0224DCB8
+MOD18_0224DCB8: ; 0x0224DCB8
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ ldr r0, [r5, #0x24]
+ ldr r2, [r5]
+ add r6, r3, #0
+ bl FUN_0200A8E0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ mov r3, #0
+ bl MOD18_0224DC08
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224DCB8
+
+ thumb_func_start MOD18_0224DCD8
+MOD18_0224DCD8: ; 0x0224DCD8
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r4, [r5, #0x38]
+ mov r6, #0
+ str r6, [r5, #0x38]
+ bl MOD18_0224DCB8
+ mov r1, #8
+ str r1, [r5, #0x30]
+ str r4, [r5, #0x38]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224DCD8
+
+ thumb_func_start MOD18_0224DCF0
+MOD18_0224DCF0: ; 0x0224DCF0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ ldr r0, [r5, #0x24]
+ ldr r2, [r5]
+ add r6, r3, #0
+ bl FUN_0200A8E0
+ ldr r3, [sp, #0x10]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD18_0224DC08
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224DCF0
+
+ thumb_func_start MOD18_0224DD10
+MOD18_0224DD10: ; 0x0224DD10
+ ldr r2, [r0, #0x40]
+ mov r1, #4
+ orr r1, r2
+ str r1, [r0, #0x40]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_0224DD10
+
+ thumb_func_start MOD18_0224DD1C
+MOD18_0224DD1C: ; 0x0224DD1C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, [r5, #0x40]
+ lsl r0, r1, #0x1f
+ asr r0, r0, #0x1f
+ beq _0224DD92
+ mov r0, #1
+ bic r1, r0
+ str r1, [r5, #0x40]
+ ldr r0, [r5, #0x30]
+ cmp r0, #8
+ bge _0224DD4C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _0224DD4C
+ ldr r0, [r5, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD7C
+_0224DD4C:
+ cmp r4, #1
+ bne _0224DD6C
+ add r0, r5, #0
+ add r0, #8
+ mov r1, #0
+ bl FUN_0200D0E0
+ add r0, r5, #0
+ add r0, #8
+ bl FUN_02019570
+ add r0, r5, #0
+ add r0, #8
+ bl FUN_02019178
+ b _0224DD76
+_0224DD6C:
+ add r0, r5, #0
+ add r0, #8
+ mov r1, #1
+ bl FUN_0200D0E0
+_0224DD76:
+ mov r0, #8
+ str r0, [r5, #0x30]
+ ldr r0, [r5, #0x20]
+ cmp r0, #0
+ beq _0224DD88
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r5, #0x20]
+_0224DD88:
+ ldr r1, [r5, #0x1c]
+ cmp r1, #0
+ beq _0224DD92
+ ldr r0, [r5, #0x3c]
+ blx r1
+_0224DD92:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD18_0224DD1C
+
+ thumb_func_start MOD18_0224DD94
+MOD18_0224DD94: ; 0x0224DD94
+ ldr r3, _0224DD9C ; =MOD18_0224DD1C
+ mov r1, #1
+ bx r3
+ nop
+_0224DD9C: .word MOD18_0224DD1C
+ thumb_func_end MOD18_0224DD94
+
+ thumb_func_start MOD18_0224DDA0
+MOD18_0224DDA0: ; 0x0224DDA0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ add r2, r1, #0
+ mov r1, #1
+ bl FUN_0200ABC0
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DDA0
+
+ thumb_func_start MOD18_0224DDB8
+MOD18_0224DDB8: ; 0x0224DDB8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ add r2, r1, #0
+ mov r1, #0
+ bl FUN_0200ABC0
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DDB8
+
+ thumb_func_start MOD18_0224DDD0
+MOD18_0224DDD0: ; 0x0224DDD0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ add r2, r1, #0
+ mov r1, #2
+ bl FUN_0200B19C
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DDD0
+
+ thumb_func_start MOD18_0224DDE8
+MOD18_0224DDE8: ; 0x0224DDE8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ add r2, r1, #0
+ mov r1, #3
+ bl FUN_0200B1D4
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DDE8
+
+ thumb_func_start MOD18_0224DE00
+MOD18_0224DE00: ; 0x0224DE00
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ add r2, r1, #0
+ mov r1, #5
+ bl FUN_0200B2E0
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DE00
+
+ thumb_func_start MOD18_0224DE18
+MOD18_0224DE18: ; 0x0224DE18
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ add r2, r1, #0
+ mov r1, #5
+ bl FUN_0200B318
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DE18
+
+ thumb_func_start MOD18_0224DE30
+MOD18_0224DE30: ; 0x0224DE30
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ bl FUN_0200B318
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DE30
+
+ thumb_func_start MOD18_0224DE44
+MOD18_0224DE44: ; 0x0224DE44
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ add r2, r1, #0
+ mov r1, #2
+ bl FUN_0200B350
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DE44
+
+ thumb_func_start MOD18_0224DE5C
+MOD18_0224DE5C: ; 0x0224DE5C
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ ldr r0, [r4, #0x28]
+ bl FUN_0200AD38
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DE5C
+
+ thumb_func_start MOD18_0224DE7C
+MOD18_0224DE7C: ; 0x0224DE7C
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r2, r1, #0
+ ldr r0, [r4, #0x28]
+ mov r1, #6
+ mov r3, #2
+ bl FUN_0200AD38
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224DE7C
+
+ thumb_func_start MOD18_0224DEA4
+MOD18_0224DEA4: ; 0x0224DEA4
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x28]
+ mov r3, #2
+ bl FUN_0200AD38
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224DEA4
+
+ thumb_func_start MOD18_0224DEC8
+MOD18_0224DEC8: ; 0x0224DEC8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ add r2, r1, #0
+ str r0, [sp, #4]
+ mov r1, #6
+ ldr r0, [r4, #0x28]
+ add r3, r1, #0
+ bl FUN_0200AD38
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224DEC8
+
+ thumb_func_start MOD18_0224DEF0
+MOD18_0224DEF0: ; 0x0224DEF0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ bl FUN_0200B164
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DEF0
+
+ thumb_func_start MOD18_0224DF04
+MOD18_0224DF04: ; 0x0224DF04
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ bl FUN_0200B1D4
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DF04
+
+ thumb_func_start MOD18_0224DF18
+MOD18_0224DF18: ; 0x0224DF18
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ bl FUN_0200B350
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DF18
+
+ thumb_func_start MOD18_0224DF2C
+MOD18_0224DF2C: ; 0x0224DF2C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ bl FUN_0200B19C
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DF2C
+
+ thumb_func_start MOD18_0224DF40
+MOD18_0224DF40: ; 0x0224DF40
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ bl FUN_0200B20C
+ ldr r1, [r4, #0x40]
+ mov r0, #2
+ orr r0, r1
+ str r0, [r4, #0x40]
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DF40
+
+ thumb_func_start MOD18_0224DF54
+MOD18_0224DF54: ; 0x0224DF54
+ ldr r3, _0224DF5C ; =0x0200B7A9
+ ldr r0, [r0, #0x28]
+ bx r3
+ nop
+_0224DF5C: .word 0x0200B7A9
+ thumb_func_end MOD18_0224DF54
+
+ thumb_func_start MOD18_0224DF60
+MOD18_0224DF60: ; 0x0224DF60
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #8
+ bge _0224DF84
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _0224DF84
+ ldr r0, [r4, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD7C
+ mov r0, #8
+ str r0, [r4, #0x30]
+_0224DF84:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224DF60
+
+ thumb_func_start MOD18_0224DF88
+MOD18_0224DF88: ; 0x0224DF88
+ push {r3, lr}
+ ldr r0, [r0, #0x30]
+ cmp r0, #8
+ bne _0224DF94
+ mov r0, #0
+ pop {r3, pc}
+_0224DF94:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224DF88
+
+ thumb_func_start MOD18_0224DFA0
+MOD18_0224DFA0: ; 0x0224DFA0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #8
+ bge _0224DFBA
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0224DFBA
+ mov r0, #8
+ str r0, [r4, #0x30]
+_0224DFBA:
+ pop {r4, pc}
+ thumb_func_end MOD18_0224DFA0
+
+ thumb_func_start MOD18_0224DFBC
+MOD18_0224DFBC: ; 0x0224DFBC
+ lsl r1, r0, #1
+ add r1, r0, r1
+ ldr r0, _0224DFC8 ; =0x02250694
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0224DFC8: .word 0x02250694
+ thumb_func_end MOD18_0224DFBC
+
+ thumb_func_start MOD18_0224DFCC
+MOD18_0224DFCC: ; 0x0224DFCC
+ lsl r1, r0, #1
+ add r1, r0, r1
+ ldr r0, _0224DFD8 ; =0x02250695
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0224DFD8: .word 0x02250695
+ thumb_func_end MOD18_0224DFCC
+
+ thumb_func_start MOD18_0224DFDC
+MOD18_0224DFDC: ; 0x0224DFDC
+ lsl r1, r0, #1
+ add r1, r0, r1
+ ldr r0, _0224DFE8 ; =0x02250696
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0224DFE8: .word 0x02250696
+ thumb_func_end MOD18_0224DFDC
+
+ thumb_func_start MOD18_0224DFEC
+MOD18_0224DFEC: ; 0x0224DFEC
+ lsl r1, r0, #1
+ add r1, r0, r1
+ ldr r0, _0224DFF8 ; =0x02250748
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0224DFF8: .word 0x02250748
+ thumb_func_end MOD18_0224DFEC
+
+ thumb_func_start MOD18_0224DFFC
+MOD18_0224DFFC: ; 0x0224DFFC
+ lsl r1, r0, #1
+ add r1, r0, r1
+ ldr r0, _0224E008 ; =0x02250749
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0224E008: .word 0x02250749
+ thumb_func_end MOD18_0224DFFC
+
+ thumb_func_start MOD18_0224E00C
+MOD18_0224E00C: ; 0x0224E00C
+ lsl r1, r0, #1
+ add r1, r0, r1
+ ldr r0, _0224E018 ; =0x0225074A
+ ldrb r0, [r0, r1]
+ bx lr
+ nop
+_0224E018: .word 0x0225074A
+ thumb_func_end MOD18_0224E00C
+
+ thumb_func_start MOD18_0224E01C
+MOD18_0224E01C: ; 0x0224E01C
+ ldr r3, _0224E024 ; =0x02016999
+ mov r0, #4
+ mov r1, #0x44
+ bx r3
+ .align 2, 0
+_0224E024: .word 0x02016999
+ thumb_func_end MOD18_0224E01C
+
+ thumb_func_start MOD18_0224E028
+MOD18_0224E028: ; 0x0224E028
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r0, #0
+ str r1, [r0]
+ mov r5, #0
+ add r4, #0x38
+ strb r5, [r4]
+ str r2, [r0, #0x30]
+ str r3, [r0, #0x34]
+ add r0, #0x40
+ strh r5, [r0]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, [r1, #8]
+ ldr r2, _0224E058 ; =0x000003D9
+ mov r1, #3
+ mov r3, #0xb
+ bl FUN_0200CB00
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_0224E058: .word 0x000003D9
+ thumb_func_end MOD18_0224E028
+
+ thumb_func_start MOD18_0224E05C
+MOD18_0224E05C: ; 0x0224E05C
+ ldr r3, _0224E060 ; =0x02016A19
+ bx r3
+ .align 2, 0
+_0224E060: .word 0x02016A19
+ thumb_func_end MOD18_0224E05C
+
+ thumb_func_start MOD18_0224E064
+MOD18_0224E064: ; 0x0224E064
+ ldr r0, [r0, #0x3c]
+ bx lr
+ thumb_func_end MOD18_0224E064
+
+ thumb_func_start MOD18_0224E068
+MOD18_0224E068: ; 0x0224E068
+ push {r3, lr}
+ add r1, r0, #0
+ add r1, #0x38
+ ldrb r1, [r1]
+ cmp r1, #0
+ beq _0224E07E
+ cmp r1, #1
+ beq _0224E084
+ cmp r1, #2
+ beq _0224E08A
+ b _0224E09A
+_0224E07E:
+ bl MOD18_0224E0CC
+ b _0224E09A
+_0224E084:
+ bl MOD18_0224E210
+ b _0224E09A
+_0224E08A:
+ add r1, r0, #0
+ mov r2, #0
+ add r1, #0x38
+ strb r2, [r1]
+ bl MOD18_0224E26C
+ mov r0, #1
+ pop {r3, pc}
+_0224E09A:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224E068
+
+ thumb_func_start MOD18_0224E0A0
+MOD18_0224E0A0: ; 0x0224E0A0
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r3, _0224E0C8 ; =0x022507B0
+ add r2, sp, #0
+ add r4, r1, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ bl MOD18_0223D668
+ lsl r2, r4, #2
+ add r1, sp, #0
+ ldr r1, [r1, r2]
+ mov r2, #0
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_0224E0C8: .word 0x022507B0
+ thumb_func_end MOD18_0224E0A0
+
+ thumb_func_start MOD18_0224E0CC
+MOD18_0224E0CC: ; 0x0224E0CC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ add r5, r0, #0
+ mov r0, #4
+ add r1, r0, #0
+ bl FUN_02012838
+ str r0, [r5, #0x24]
+ mov r2, #3
+ str r2, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _0224E1F4 ; =0x000002CD
+ add r1, r5, #4
+ str r0, [sp, #0x10]
+ ldr r0, [r5]
+ mov r3, #0x13
+ ldr r0, [r0, #8]
+ bl FUN_02019064
+ mov r3, #1
+ add r1, r5, #0
+ str r3, [sp]
+ mov r0, #7
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _0224E1F8 ; =0x000002BF
+ add r1, #0x14
+ str r0, [sp, #0x10]
+ ldr r0, [r5]
+ mov r2, #3
+ ldr r0, [r0, #8]
+ bl FUN_02019064
+ ldr r2, _0224E1FC ; =0x000003D9
+ add r0, r5, #4
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add r0, r5, #0
+ ldr r2, _0224E1FC ; =0x000003D9
+ add r0, #0x14
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ ldr r3, _0224E200 ; =0x022507C0
+ add r2, sp, #0x14
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r2, _0224E204 ; =0x00000242
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #4
+ bl FUN_0200A86C
+ add r7, r0, #0
+ add r0, r5, #0
+ add r0, #0x14
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r7, #0
+ mov r1, #0
+ bl FUN_0200A914
+ mov r1, #0
+ add r4, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0x14
+ add r2, r4, #0
+ add r3, r1, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r4, #0
+ bl FUN_02021A20
+ mov r6, #0
+ add r4, sp, #0x14
+_0224E186:
+ ldr r0, [r5, #0x24]
+ ldr r2, [r4]
+ add r1, r7, #0
+ add r3, r6, #0
+ bl FUN_02012880
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _0224E186
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ ldr r4, _0224E208 ; =0x022507D0
+ add r3, sp, #0x24
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ mov r3, #4
+ add r0, sp, #0x14
+ strh r3, [r0, #0x20]
+ strh r3, [r0, #0x22]
+ ldr r0, [r5, #0x24]
+ str r0, [sp, #0x24]
+ add r0, r5, #4
+ str r0, [sp, #0x30]
+ ldr r0, _0224E20C ; =MOD18_0224E0A0
+ str r0, [sp, #0x28]
+ add r0, r2, #0
+ ldr r1, [r5, #0x30]
+ ldr r2, [r5, #0x34]
+ ldrh r1, [r1]
+ ldrh r2, [r2]
+ bl FUN_020010A8
+ str r0, [r5, #0x28]
+ add r0, r5, #4
+ bl FUN_020191D0
+ add r0, r5, #0
+ add r0, #0x14
+ bl FUN_020191D0
+ mov r0, #1
+ add r5, #0x38
+ strb r0, [r5]
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0224E1F4: .word 0x000002CD
+_0224E1F8: .word 0x000002BF
+_0224E1FC: .word 0x000003D9
+_0224E200: .word 0x022507C0
+_0224E204: .word 0x00000242
+_0224E208: .word 0x022507D0
+_0224E20C: .word MOD18_0224E0A0
+ thumb_func_end MOD18_0224E0CC
+
+ thumb_func_start MOD18_0224E210
+MOD18_0224E210: ; 0x0224E210
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x28]
+ bl FUN_02001204
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD18_0224E73C
+ cmp r4, #3
+ bne _0224E22A
+ mov r4, #1
+ mvn r4, r4
+_0224E22A:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _0224E23A
+ add r0, r0, #1
+ cmp r4, r0
+ bne _0224E250
+ pop {r3, r4, r5, pc}
+_0224E23A:
+ ldr r0, _0224E268 ; =0x000005DC
+ bl FUN_020054C8
+ str r4, [r5, #0x3c]
+ mov r0, #2
+ add r5, #0x38
+ strb r0, [r5]
+ ldr r0, _0224E268 ; =0x000005DC
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_0224E250:
+ ldr r0, _0224E268 ; =0x000005DC
+ bl FUN_020054C8
+ str r4, [r5, #0x3c]
+ mov r0, #2
+ add r5, #0x38
+ strb r0, [r5]
+ ldr r0, _0224E268 ; =0x000005DC
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+ nop
+_0224E268: .word 0x000005DC
+ thumb_func_end MOD18_0224E210
+
+ thumb_func_start MOD18_0224E26C
+MOD18_0224E26C: ; 0x0224E26C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD18_0223D668
+ bl MOD18_0224DD94
+ add r0, r4, #0
+ add r0, #0x14
+ mov r1, #1
+ bl FUN_0200CCF8
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x30]
+ ldr r2, [r4, #0x34]
+ bl FUN_02001300
+ add r0, r4, #4
+ mov r1, #1
+ bl FUN_0200CCF8
+ ldrb r1, [r4, #8]
+ ldr r0, [r4, #4]
+ bl FUN_0201AC68
+ add r0, r4, #4
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x14
+ bl FUN_02019178
+ ldr r0, [r4, #0x24]
+ bl FUN_02012870
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224E26C
+
+ thumb_func_start MOD18_0224E2B4
+MOD18_0224E2B4: ; 0x0224E2B4
+ push {r3, lr}
+ mov r2, #1
+ and r1, r2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ beq _0224E2CC
+ add r1, r2, #0
+ mov r2, #0xf
+ mov r3, #2
+ bl FUN_020013E8
+ pop {r3, pc}
+_0224E2CC:
+ mov r1, #2
+ mov r2, #0xf
+ add r3, r1, #0
+ bl FUN_020013E8
+ pop {r3, pc}
+ thumb_func_end MOD18_0224E2B4
+
+ thumb_func_start MOD18_0224E2D8
+MOD18_0224E2D8: ; 0x0224E2D8
+ ldr r3, _0224E2E0 ; =0x02016999
+ mov r0, #4
+ mov r1, #0x4c
+ bx r3
+ .align 2, 0
+_0224E2E0: .word 0x02016999
+ thumb_func_end MOD18_0224E2D8
+
+ thumb_func_start MOD18_0224E2E4
+MOD18_0224E2E4: ; 0x0224E2E4
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r0, #0
+ str r1, [r0]
+ mov r5, #0
+ add r4, #0x42
+ strb r5, [r4]
+ str r5, [r0, #4]
+ str r2, [r0, #0x38]
+ str r3, [r0, #0x3c]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, [r1, #8]
+ ldr r2, _0224E310 ; =0x000003D9
+ mov r1, #3
+ mov r3, #0xb
+ bl FUN_0200CB00
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224E310: .word 0x000003D9
+ thumb_func_end MOD18_0224E2E4
+
+ thumb_func_start MOD18_0224E314
+MOD18_0224E314: ; 0x0224E314
+ add r3, r0, #0
+ add r3, #0x40
+ strb r1, [r3]
+ add r0, #0x41
+ strb r2, [r0]
+ bx lr
+ thumb_func_end MOD18_0224E314
+
+ thumb_func_start MOD18_0224E320
+MOD18_0224E320: ; 0x0224E320
+ ldr r3, _0224E324 ; =0x02016A19
+ bx r3
+ .align 2, 0
+_0224E324: .word 0x02016A19
+ thumb_func_end MOD18_0224E320
+
+ thumb_func_start MOD18_0224E328
+MOD18_0224E328: ; 0x0224E328
+ ldr r0, [r0, #0x44]
+ bx lr
+ thumb_func_end MOD18_0224E328
+
+ thumb_func_start MOD18_0224E32C
+MOD18_0224E32C: ; 0x0224E32C
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ add r1, #0x42
+ ldrb r1, [r1]
+ cmp r1, #0
+ beq _0224E344
+ cmp r1, #1
+ beq _0224E34A
+ cmp r1, #2
+ beq _0224E350
+ b _0224E35E
+_0224E344:
+ bl MOD18_0224E430
+ b _0224E35E
+_0224E34A:
+ bl MOD18_0224E36C
+ b _0224E35E
+_0224E350:
+ mov r1, #0
+ add r4, #0x42
+ strb r1, [r4]
+ bl MOD18_0224E6A8
+ mov r0, #1
+ pop {r4, pc}
+_0224E35E:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _0224E368
+ bl FUN_0205EC18
+_0224E368:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD18_0224E32C
+
+ thumb_func_start MOD18_0224E36C
+MOD18_0224E36C: ; 0x0224E36C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x2c]
+ bl MOD18_02244140
+ add r6, r0, #0
+ ldr r0, [r5, #0x48]
+ lsr r4, r6, #1
+ cmp r0, r4
+ bne _0224E384
+ mov r4, #1
+ mvn r4, r4
+_0224E384:
+ ldr r0, [r5, #0x2c]
+ add r1, sp, #0
+ ldr r0, [r0, #0xc]
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_02001448
+ ldr r0, [r5, #0x2c]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ bl FUN_02001470
+ add r7, r0, #0
+ ldr r0, [r5, #0x2c]
+ mov r1, #3
+ ldr r0, [r0, #0xc]
+ bl FUN_02001470
+ add r3, r0, #0
+ add r1, sp, #0
+ lsl r2, r7, #0x10
+ lsl r3, r3, #0x10
+ ldrh r1, [r1, #2]
+ ldr r0, [r5, #4]
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl MOD18_0224E6F8
+ mov r0, #1
+ mvn r0, r0
+ cmp r6, r0
+ beq _0224E3CC
+ add r0, r0, #1
+ cmp r6, r0
+ bne _0224E3DC
+ pop {r3, r4, r5, r6, r7, pc}
+_0224E3CC:
+ str r0, [r5, #0x44]
+ mov r0, #2
+ add r5, #0x42
+ strb r0, [r5]
+ ldr r0, _0224E3EC ; =0x000005DC
+ bl FUN_020054C8
+ pop {r3, r4, r5, r6, r7, pc}
+_0224E3DC:
+ str r4, [r5, #0x44]
+ mov r0, #2
+ add r5, #0x42
+ strb r0, [r5]
+ ldr r0, _0224E3EC ; =0x000005DC
+ bl FUN_020054C8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224E3EC: .word 0x000005DC
+ thumb_func_end MOD18_0224E36C
+
+ thumb_func_start MOD18_0224E3F0
+MOD18_0224E3F0: ; 0x0224E3F0
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #0x13
+ bl FUN_02001470
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #2
+ bl FUN_02001470
+ lsr r1, r4, #1
+ sub r0, r0, #1
+ cmp r1, r0
+ bne _0224E412
+ ldr r4, _0224E42C ; =0x00000116
+ b _0224E41C
+_0224E412:
+ add r0, r6, #0
+ bl FUN_02025DC8
+ add r4, r0, #0
+ add r4, #0x8a
+_0224E41C:
+ bl MOD18_0223D678
+ mov r2, #0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD18_0224DCD8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0224E42C: .word 0x00000116
+ thumb_func_end MOD18_0224E3F0
+
+ thumb_func_start MOD18_0224E430
+MOD18_0224E430: ; 0x0224E430
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x50
+ add r5, r0, #0
+ ldr r0, [r5]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ add r7, r0, #0
+ bl FUN_02025DB0
+ str r0, [sp, #0x20]
+ str r0, [r5, #0x48]
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ cmp r0, #7
+ ble _0224E454
+ mov r0, #7
+ str r0, [sp, #0x1c]
+_0224E454:
+ ldr r0, [sp, #0x20]
+ mov r1, #4
+ add r0, r0, #1
+ bl FUN_02012838
+ str r0, [r5, #0x28]
+ mov r2, #3
+ str r2, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x1c]
+ add r1, r5, #0
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _0224E680 ; =0x00000285
+ add r1, #8
+ str r0, [sp, #0x10]
+ ldr r0, [r5]
+ mov r3, #0x13
+ ldr r0, [r0, #8]
+ bl FUN_02019064
+ mov r3, #1
+ add r1, r5, #0
+ str r3, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _0224E684 ; =0x00000265
+ add r1, #0x18
+ str r0, [sp, #0x10]
+ ldr r0, [r5]
+ mov r2, #3
+ ldr r0, [r0, #8]
+ bl FUN_02019064
+ add r0, r5, #0
+ ldr r2, _0224E688 ; =0x000003D9
+ add r0, #8
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add r0, r5, #0
+ ldr r2, _0224E688 ; =0x000003D9
+ add r0, #0x18
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ ldr r2, _0224E68C ; =0x00000237
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #4
+ bl FUN_0200A86C
+ str r0, [sp, #0x18]
+ ldr r2, _0224E690 ; =0x00000242
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #4
+ bl FUN_0200A86C
+ str r0, [sp, #0x24]
+ add r0, r5, #0
+ add r0, #0x18
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r0, [sp, #0x24]
+ mov r1, #9
+ bl FUN_0200A914
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x24]
+ mov r1, #0xa
+ bl FUN_0200A914
+ str r0, [sp, #0x2c]
+ mov r0, #6
+ mov r1, #4
+ bl FUN_020219F4
+ mov r1, #0
+ add r4, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ add r0, r5, #0
+ ldr r2, [sp, #0x28]
+ add r0, #0x18
+ add r3, r1, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ mov r0, #4
+ bl FUN_0200AA80
+ mov r1, #1
+ str r1, [sp]
+ add r2, r5, #0
+ str r1, [sp, #4]
+ add r2, #0x40
+ ldrb r2, [r2]
+ mov r1, #0
+ mov r3, #2
+ add r6, r0, #0
+ bl FUN_0200AD38
+ mov r1, #1
+ str r1, [sp]
+ add r2, r5, #0
+ str r1, [sp, #4]
+ add r2, #0x41
+ ldrb r2, [r2]
+ add r0, r6, #0
+ mov r3, #2
+ bl FUN_0200AD38
+ ldr r2, [sp, #0x2c]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0200B7B8
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r1, #0
+ add r0, r5, #0
+ add r0, #0x18
+ add r2, r4, #0
+ add r3, r1, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r6, #0
+ bl FUN_0200AB18
+ ldr r0, [sp, #0x28]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x2c]
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x24]
+ bl FUN_0200A8B8
+ ldr r0, [sp, #0x20]
+ mov r4, #0
+ cmp r0, #0
+ ble _0224E5CE
+ add r6, r4, #0
+_0224E598:
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02025DC8
+ str r0, [sp, #0x14]
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02025F0C
+ cmp r0, #0
+ bne _0224E5B2
+ mov r3, #1
+ b _0224E5B4
+_0224E5B2:
+ mov r3, #0
+_0224E5B4:
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ ldr r0, [r5, #0x28]
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ add r3, r6, r3
+ bl FUN_02012880
+ ldr r0, [sp, #0x20]
+ add r4, r4, #1
+ add r6, r6, #2
+ cmp r4, r0
+ blt _0224E598
+_0224E5CE:
+ lsl r3, r4, #1
+ ldr r0, [r5, #0x28]
+ ldr r1, [sp, #0x18]
+ ldr r2, _0224E694 ; =0x00000115
+ add r3, r3, #1
+ bl FUN_02012880
+ ldr r0, [sp, #0x18]
+ bl FUN_0200A8B8
+ bl MOD18_0223D678
+ ldr r1, _0224E68C ; =0x00000237
+ mov r2, #0
+ bl MOD18_0224DB80
+ ldr r4, _0224E698 ; =0x022507D0
+ add r3, sp, #0x30
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, _0224E69C ; =MOD18_0224E2B4
+ add r1, sp, #0x30
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0x20]
+ mov r3, #4
+ add r0, r0, #1
+ strh r0, [r1, #0x10]
+ ldr r0, [sp, #0x1c]
+ strh r0, [r1, #0x12]
+ ldr r0, [r5, #0x28]
+ str r0, [sp, #0x30]
+ add r0, r5, #0
+ add r0, #8
+ str r0, [sp, #0x3c]
+ ldr r0, _0224E6A0 ; =MOD18_0224E3F0
+ str r7, [sp, #0x4c]
+ str r0, [sp, #0x34]
+ ldr r0, _0224E6A4 ; =0x02025E21
+ str r0, [sp]
+ str r7, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ add r0, r2, #0
+ ldr r1, [r5, #0x38]
+ ldr r2, [r5, #0x3c]
+ ldrh r1, [r1]
+ ldrh r2, [r2]
+ bl MOD18_02244028
+ str r0, [r5, #0x2c]
+ add r0, r5, #0
+ add r0, #8
+ bl FUN_020191D0
+ add r0, r5, #0
+ add r0, #0x18
+ bl FUN_020191D0
+ mov r0, #4
+ bl FUN_0205EB38
+ str r0, [r5, #4]
+ mov r1, #0xc8
+ mov r2, #0x1a
+ mov r3, #0x86
+ bl FUN_0205EC48
+ mov r1, #0
+ ldr r0, [r5, #4]
+ add r2, r1, #0
+ bl FUN_0205EC6C
+ ldr r0, [r5, #4]
+ mov r1, #1
+ mov r2, #0
+ bl FUN_0205EC6C
+ mov r0, #1
+ add r5, #0x42
+ strb r0, [r5]
+ add sp, #0x50
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224E680: .word 0x00000285
+_0224E684: .word 0x00000265
+_0224E688: .word 0x000003D9
+_0224E68C: .word 0x00000237
+_0224E690: .word 0x00000242
+_0224E694: .word 0x00000115
+_0224E698: .word 0x022507D0
+_0224E69C: .word MOD18_0224E2B4
+_0224E6A0: .word MOD18_0224E3F0
+_0224E6A4: .word 0x02025E21
+ thumb_func_end MOD18_0224E430
+
+ thumb_func_start MOD18_0224E6A8
+MOD18_0224E6A8: ; 0x0224E6A8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD18_0223D678
+ bl MOD18_0224DD94
+ add r0, r4, #0
+ add r0, #0x18
+ mov r1, #1
+ bl FUN_0200CCF8
+ ldr r0, [r4, #0x2c]
+ ldr r1, [r4, #0x38]
+ ldr r2, [r4, #0x3c]
+ bl MOD18_02244318
+ add r0, r4, #0
+ add r0, #8
+ mov r1, #1
+ bl FUN_0200CCF8
+ ldrb r1, [r4, #0xc]
+ ldr r0, [r4, #8]
+ bl FUN_0201AC68
+ add r0, r4, #0
+ add r0, #8
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x18
+ bl FUN_02019178
+ ldr r0, [r4, #0x28]
+ bl FUN_02012870
+ ldr r0, [r4, #4]
+ bl FUN_0205EBEC
+ pop {r4, pc}
+ thumb_func_end MOD18_0224E6A8
+
+ thumb_func_start MOD18_0224E6F8
+MOD18_0224E6F8: ; 0x0224E6F8
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r2, #0
+ add r7, r3, #0
+ add r6, r0, #0
+ add r5, r1, #0
+ cmp r4, r7
+ bls _0224E738
+ cmp r5, #0
+ beq _0224E714
+ mov r1, #0
+ mov r2, #1
+ bl FUN_0205EC6C
+ b _0224E71C
+_0224E714:
+ mov r1, #0
+ add r2, r1, #0
+ bl FUN_0205EC6C
+_0224E71C:
+ add r0, r5, r7
+ cmp r4, r0
+ beq _0224E72E
+ mov r1, #1
+ add r0, r6, #0
+ add r2, r1, #0
+ bl FUN_0205EC6C
+ pop {r3, r4, r5, r6, r7, pc}
+_0224E72E:
+ add r0, r6, #0
+ mov r1, #1
+ mov r2, #0
+ bl FUN_0205EC6C
+_0224E738:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224E6F8
+
+ thumb_func_start MOD18_0224E73C
+MOD18_0224E73C: ; 0x0224E73C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0x40
+ ldrh r4, [r0]
+ add r1, r5, #0
+ ldr r0, [r5, #0x28]
+ add r1, #0x40
+ bl FUN_0200143C
+ add r5, #0x40
+ ldrh r0, [r5]
+ cmp r4, r0
+ beq _0224E75C
+ ldr r0, _0224E760 ; =0x000005DC
+ bl FUN_020054C8
+_0224E75C:
+ pop {r3, r4, r5, pc}
+ nop
+_0224E760: .word 0x000005DC
+ thumb_func_end MOD18_0224E73C
+
+ thumb_func_start MOD18_0224E764
+MOD18_0224E764: ; 0x0224E764
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r6, r0, #0
+ add r7, r2, #0
+ cmp r5, #0
+ bne _0224E776
+ bl ErrorHandling
+_0224E776:
+ add r4, r7, #0
+ add r4, #0x3c
+ add r0, r5, #0
+ bl FUN_0204CA80
+ str r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_0204CA90
+ str r0, [r4, #0x1c]
+ ldr r0, [r4, #0x18]
+ lsl r1, r0, #0xf
+ mov r0, #1
+ lsl r0, r0, #0x14
+ add r1, r1, r0
+ lsr r0, r0, #8
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r0, #0xf
+ mov r0, #0xd
+ lsl r0, r0, #0x10
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD18_0224FAEC
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r6, #0x4c]
+ add r3, sp, #8
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ ldr r1, [r6, #0x2c]
+ bl MOD05_021E7FBC
+ str r0, [r4, #0x10]
+ mov r0, #0x10
+ str r0, [r7, #0x3c]
+ mov r0, #0xd
+ str r0, [r4, #4]
+ ldr r0, [r4, #0x18]
+ add r0, #0xf
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x1c]
+ add r0, #0xc
+ str r0, [r4, #0xc]
+ str r5, [r4, #0x14]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224E764
+
+ thumb_func_start MOD18_0224E7E4
+MOD18_0224E7E4: ; 0x0224E7E4
+ add r2, r0, #0
+ ldr r3, _0224E7F0 ; =0x021E7C81
+ add r2, #0xa0
+ add r0, r1, #0
+ ldr r1, [r2]
+ bx r3
+ .align 2, 0
+_0224E7F0: .word 0x021E7C81
+ thumb_func_end MOD18_0224E7E4
+
+ thumb_func_start MOD18_0224E7F4
+MOD18_0224E7F4: ; 0x0224E7F4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x24
+ add r4, r0, #0
+ mul r4, r1
+ add r0, r5, r4
+ ldr r0, [r0, #0x5c]
+ cmp r0, #0
+ bne _0224E80A
+ bl ErrorHandling
+_0224E80A:
+ add r2, r5, r4
+ add r2, #0x60
+ add r5, #0x3c
+ ldmia r2!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldmia r2!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldmia r2!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldmia r2!, {r0, r1}
+ stmia r5!, {r0, r1}
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224E7F4
+
+ thumb_func_start MOD18_0224E824
+MOD18_0224E824: ; 0x0224E824
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ bl FUN_02046528
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #7
+ bhi _0224E93C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0224E848: ; jump table
+ .short _0224E858 - _0224E848 - 2 ; case 0
+ .short _0224E8B4 - _0224E848 - 2 ; case 1
+ .short _0224E8C0 - _0224E848 - 2 ; case 2
+ .short _0224E8CC - _0224E848 - 2 ; case 3
+ .short _0224E8D8 - _0224E848 - 2 ; case 4
+ .short _0224E8E4 - _0224E848 - 2 ; case 5
+ .short _0224E8F0 - _0224E848 - 2 ; case 6
+ .short _0224E91A - _0224E848 - 2 ; case 7
+_0224E858:
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ bl MOD18_0224E01C
+ ldr r3, _0224E940 ; =0x00000504
+ add r1, r6, #0
+ add r2, r3, #0
+ str r0, [r4, r3]
+ ldr r0, [r4, r3]
+ add r2, #0x14
+ add r3, #0x18
+ add r2, r4, r2
+ add r3, r4, r3
+ bl MOD18_0224E028
+ bl MOD18_0224E2D8
+ ldr r3, _0224E944 ; =0x00000508
+ add r1, r6, #0
+ add r2, r3, #0
+ str r0, [r4, r3]
+ ldr r0, [r4, r3]
+ add r2, #0x12
+ add r3, #0x16
+ add r2, r4, r2
+ add r3, r4, r3
+ bl MOD18_0224E2E4
+ add r2, r4, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, #0x5c
+ bl MOD18_0224F950
+ add r1, r4, #0
+ add r0, r6, #0
+ add r1, #0x5c
+ bl MOD18_0224FA50
+ mov r0, #1
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ b _0224E93C
+_0224E8B4:
+ ldr r1, _0224E948 ; =MOD18_0224E960
+ add r0, r5, #0
+ add r2, r4, #0
+ bl FUN_0204640C
+ b _0224E93C
+_0224E8C0:
+ ldr r1, _0224E94C ; =MOD18_0224EAD4
+ add r0, r5, #0
+ add r2, r4, #0
+ bl FUN_0204640C
+ b _0224E93C
+_0224E8CC:
+ ldr r1, _0224E950 ; =MOD18_0224EDDC
+ add r0, r5, #0
+ add r2, r4, #0
+ bl FUN_0204640C
+ b _0224E93C
+_0224E8D8:
+ ldr r1, _0224E954 ; =MOD18_0224F258
+ add r0, r5, #0
+ add r2, r4, #0
+ bl FUN_0204640C
+ b _0224E93C
+_0224E8E4:
+ ldr r1, _0224E958 ; =MOD18_0224F528
+ add r0, r5, #0
+ add r2, r4, #0
+ bl FUN_0204640C
+ b _0224E93C
+_0224E8F0:
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0224E93C
+ mov r0, #0x52
+ lsl r0, r0, #4
+ ldrb r2, [r4, r0]
+ add r1, r2, #1
+ strb r1, [r4, r0]
+ cmp r2, #0x1e
+ blo _0224E93C
+ bl MOD18_0224712C
+ mov r0, #1
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ b _0224E93C
+_0224E91A:
+ ldr r0, _0224E944 ; =0x00000508
+ ldr r0, [r4, r0]
+ bl MOD18_0224E320
+ ldr r0, _0224E940 ; =0x00000504
+ ldr r0, [r4, r0]
+ bl MOD18_0224E05C
+ ldr r0, _0224E95C ; =0x0000050C
+ ldr r0, [r4, r0]
+ bl MOD05_021D80A4
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_0224E93C:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0224E940: .word 0x00000504
+_0224E944: .word 0x00000508
+_0224E948: .word MOD18_0224E960
+_0224E94C: .word MOD18_0224EAD4
+_0224E950: .word MOD18_0224EDDC
+_0224E954: .word MOD18_0224F258
+_0224E958: .word MOD18_0224F528
+_0224E95C: .word 0x0000050C
+ thumb_func_end MOD18_0224E824
+
+ thumb_func_start MOD18_0224E960
+MOD18_0224E960: ; 0x0224E960
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_02046528
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, _0224EA68 ; =0x00000504
+ ldr r0, [r4, r0]
+ bl MOD18_0224E068
+ cmp r0, #0
+ beq _0224EA62
+ ldr r0, _0224EA68 ; =0x00000504
+ ldr r0, [r4, r0]
+ bl MOD18_0224E064
+ cmp r0, #0
+ beq _0224E994
+ cmp r0, #1
+ beq _0224EA1C
+ cmp r0, #2
+ beq _0224EA34
+ b _0224EA4C
+_0224E994:
+ ldr r0, [r5, #0xc]
+ bl FUN_02026CC4
+ bl FUN_02025DB0
+ cmp r0, #0
+ bne _0224E9BE
+ mov r0, #0x13
+ bl MOD18_02247118
+ str r0, [r4, #8]
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #6
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224E9BE:
+ ldr r3, _0224EA6C ; =0x00000521
+ ldrb r1, [r4, r3]
+ cmp r1, #0xf
+ bls _0224E9E2
+ mov r0, #0x14
+ bl MOD18_02247118
+ str r0, [r4, #8]
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #6
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224E9E2:
+ add r0, r3, #3
+ ldrb r2, [r4, r0]
+ add r0, r1, #1
+ cmp r0, r2
+ ble _0224EA08
+ mov r0, #0x14
+ bl MOD18_02247118
+ str r0, [r4, #8]
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #6
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224EA08:
+ sub r3, #0x19
+ ldr r0, [r4, r3]
+ bl MOD18_0224E314
+ mov r0, #2
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224EA1C:
+ ldr r2, _0224EA70 ; =0x000004FC
+ mov r0, #0x10
+ ldr r2, [r4, r2]
+ mov r1, #0xd
+ bl MOD18_0224FBDC
+ mov r0, #3
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224EA34:
+ ldr r2, _0224EA70 ; =0x000004FC
+ mov r0, #0x10
+ ldr r2, [r4, r2]
+ mov r1, #0xd
+ bl MOD18_0224FBDC
+ mov r0, #4
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224EA4C:
+ add r1, r4, #0
+ add r0, r5, #0
+ add r1, #0x5c
+ bl MOD18_0224FAB4
+ mov r0, #7
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224EA62:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_0224EA68: .word 0x00000504
+_0224EA6C: .word 0x00000521
+_0224EA70: .word 0x000004FC
+ thumb_func_end MOD18_0224E960
+
+ thumb_func_start MOD18_0224EA74
+MOD18_0224EA74: ; 0x0224EA74
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ ldr r1, _0224EAC0 ; =0x00000528
+ mov r0, #0xb
+ bl FUN_020169D8
+ ldr r2, _0224EAC0 ; =0x00000528
+ add r4, r0, #0
+ mov r1, #0
+ bl MI_CpuFill8
+ mov r0, #0
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ mov r0, #5
+ lsl r0, r0, #8
+ str r5, [r4, r0]
+ ldr r0, [r5, #4]
+ ldr r1, _0224EAC4 ; =0x0225081C
+ ldr r0, [r0, #4]
+ bl MOD05_021D8024
+ ldr r1, _0224EAC8 ; =0x0000050C
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ bl MOD05_021D80E4
+ ldr r1, _0224EACC ; =0x000004FC
+ add r2, r4, #0
+ str r0, [r4, r1]
+ ldr r1, _0224EAD0 ; =MOD18_0224E824
+ add r0, r6, #0
+ bl FUN_0204640C
+ pop {r4, r5, r6, pc}
+ nop
+_0224EAC0: .word 0x00000528
+_0224EAC4: .word 0x0225081C
+_0224EAC8: .word 0x0000050C
+_0224EACC: .word 0x000004FC
+_0224EAD0: .word MOD18_0224E824
+ thumb_func_end MOD18_0224EA74
+
+ thumb_func_start MOD18_0224EAD4
+MOD18_0224EAD4: ; 0x0224EAD4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r4, r0, #0
+ bl FUN_02046528
+ add r5, r0, #0
+ add r0, r4, #0
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #5
+ bhi _0224EB12
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0224EAFA: ; jump table
+ .short _0224EB06 - _0224EAFA - 2 ; case 0
+ .short _0224EB88 - _0224EAFA - 2 ; case 1
+ .short _0224EBA2 - _0224EAFA - 2 ; case 2
+ .short _0224ED42 - _0224EAFA - 2 ; case 3
+ .short _0224ED68 - _0224EAFA - 2 ; case 4
+ .short _0224ED96 - _0224EAFA - 2 ; case 5
+_0224EB06:
+ ldr r0, _0224EDC0 ; =0x00000508
+ ldr r0, [r4, r0]
+ bl MOD18_0224E32C
+ cmp r0, #0
+ bne _0224EB14
+_0224EB12:
+ b _0224EDBA
+_0224EB14:
+ mov r0, #5
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ add r6, r0, #0
+ ldr r0, _0224EDC0 ; =0x00000508
+ ldr r0, [r4, r0]
+ bl MOD18_0224E328
+ add r7, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r7, r0
+ bne _0224EB42
+ mov r0, #1
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ add sp, #0x28
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0224EB42:
+ add r0, r6, #0
+ add r1, r7, #0
+ bl FUN_02025DC8
+ str r0, [sp, #4]
+ cmp r0, #0
+ beq _0224EB82
+ add r0, r6, #0
+ add r1, r7, #0
+ bl FUN_02025F0C
+ cmp r0, #0
+ bne _0224EB6C
+ ldr r1, [sp, #4]
+ add r0, r5, #0
+ add r2, r4, #0
+ bl MOD18_0224E764
+ mov r0, #1
+ str r0, [r4, #4]
+ b _0224EDBA
+_0224EB6C:
+ mov r0, #0x15
+ bl MOD18_02247118
+ str r0, [r4, #8]
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #5
+ str r0, [r4, #4]
+ b _0224EDBA
+_0224EB82:
+ bl ErrorHandling
+ b _0224EDBA
+_0224EB88:
+ ldr r0, _0224EDC4 ; =0x000004DC
+ add r0, r4, r0
+ bl MOD18_0224FF00
+ ldr r2, _0224EDC4 ; =0x000004DC
+ ldr r0, [r4, #0x4c]
+ mov r1, #4
+ add r2, r4, r2
+ bl MOD18_0224FF14
+ mov r0, #2
+ str r0, [r4, #4]
+ b _0224EDBA
+_0224EBA2:
+ ldr r1, _0224EDC4 ; =0x000004DC
+ add r0, r5, #0
+ add r1, r4, r1
+ bl MOD18_0224FF24
+ add r0, r4, #0
+ add r1, r5, #0
+ add r2, sp, #8
+ bl MOD18_0224FD70
+ cmp r0, #0
+ bne _0224ECAE
+ add r3, r4, #0
+ add r3, #0x3c
+ add r2, sp, #0x18
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, _0224EDC8 ; =0x021C48B8
+ mov r1, #0x20
+ ldr r0, [r0, #0x4c]
+ mov r6, #1
+ tst r1, r0
+ beq _0224EBE8
+ ldr r0, _0224EDCC ; =0xFFFF0000
+ mov r7, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x18]
+ sub r0, r0, #1
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ sub r0, r0, #1
+ str r0, [sp, #0x20]
+ b _0224EC3A
+_0224EBE8:
+ mov r1, #0x10
+ add r2, r0, #0
+ tst r2, r1
+ beq _0224EC04
+ lsl r0, r1, #0xc
+ str r0, [sp]
+ ldr r0, [sp, #0x18]
+ mov r7, #0
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ b _0224EC3A
+_0224EC04:
+ mov r1, #0x40
+ tst r1, r0
+ beq _0224EC1E
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x1c]
+ ldr r7, _0224EDCC ; =0xFFFF0000
+ sub r0, r0, #1
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x24]
+ sub r0, r0, #1
+ str r0, [sp, #0x24]
+ b _0224EC3A
+_0224EC1E:
+ mov r1, #0x80
+ tst r0, r1
+ beq _0224EC38
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [sp, #0x1c]
+ lsl r7, r1, #9
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x24]
+ add r0, r0, #1
+ str r0, [sp, #0x24]
+ b _0224EC3A
+_0224EC38:
+ mov r6, #0
+_0224EC3A:
+ cmp r6, #0
+ beq _0224EC88
+ add r0, sp, #0x18
+ bl MOD18_0224F830
+ cmp r0, #0
+ bne _0224EC88
+ add r2, r4, #0
+ add r3, sp, #0x18
+ add r2, #0x3c
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, r5, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ ldr r1, [r4, #0x4c]
+ bl MOD05_021E7EEC
+ add r6, r0, #0
+ add r0, sp, #0xc
+ add r1, r6, #0
+ bl MOD05_021E7EA0
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp]
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ add r1, sp, #0xc
+ add r0, r0, r7
+ str r0, [sp, #0x14]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x10]
+ add r0, r6, #0
+ bl MOD05_021E7EB0
+_0224EC88:
+ ldr r0, _0224EDC8 ; =0x021C48B8
+ ldr r2, [r0, #0x48]
+ mov r0, #1
+ add r1, r2, #0
+ tst r1, r0
+ beq _0224EC98
+ str r0, [sp, #8]
+ b _0224ECAE
+_0224EC98:
+ mov r0, #2
+ tst r0, r2
+ beq _0224ECAE
+ ldr r1, [r4, #0x4c]
+ add r0, r5, #0
+ bl MOD18_0224E7E4
+ mov r0, #0
+ add sp, #0x28
+ str r0, [r4, #4]
+ pop {r3, r4, r5, r6, r7, pc}
+_0224ECAE:
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ bne _0224ECB6
+ b _0224EDBA
+_0224ECB6:
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0x3c
+ add r1, #0x5c
+ bl MOD18_0224F770
+ cmp r0, #0
+ beq _0224ED26
+ mov r0, #5
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0x3c
+ add r1, #0x5c
+ bl MOD18_0224F850
+ add r7, r0, #0
+ ldr r0, _0224EDC0 ; =0x00000508
+ ldr r0, [r4, r0]
+ bl MOD18_0224E328
+ add r1, r0, #0
+ add r0, r6, #0
+ add r2, r7, #0
+ bl FUN_02025EDC
+ ldr r0, _0224EDD0 ; =0x000005FE
+ bl FUN_020054C8
+ ldr r0, [r4, #0x50]
+ bl MOD18_02247138
+ mov r0, #0xb
+ bl MOD18_02247118
+ ldr r1, _0224EDC4 ; =0x000004DC
+ str r0, [r4, #8]
+ add r0, r5, #0
+ add r1, r4, r1
+ bl MOD18_0224FF64
+ ldr r0, _0224EDD4 ; =0x00000521
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ mov r1, #0
+ sub r0, r0, #1
+ strb r1, [r4, r0]
+ mov r0, #4
+ str r0, [r4, #4]
+ b _0224EDBA
+_0224ED26:
+ ldr r0, _0224EDD8 ; =0x00000602
+ bl FUN_020054C8
+ mov r0, #0xc
+ bl MOD18_02247118
+ str r0, [r4, #8]
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #3
+ str r0, [r4, #4]
+ b _0224EDBA
+_0224ED42:
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0224EDBA
+ mov r0, #0x52
+ lsl r0, r0, #4
+ ldrb r2, [r4, r0]
+ add r1, r2, #1
+ strb r1, [r4, r0]
+ cmp r2, #0x1e
+ blo _0224EDBA
+ bl MOD18_0224712C
+ mov r0, #2
+ str r0, [r4, #4]
+ b _0224EDBA
+_0224ED68:
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0224EDBA
+ mov r0, #0x52
+ lsl r0, r0, #4
+ ldrb r2, [r4, r0]
+ add r1, r2, #1
+ strb r1, [r4, r0]
+ cmp r2, #0x1e
+ blo _0224EDBA
+ bl MOD18_0224712C
+ mov r0, #1
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ add sp, #0x28
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0224ED96:
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0224EDBA
+ mov r0, #0x52
+ lsl r0, r0, #4
+ ldrb r2, [r4, r0]
+ add r1, r2, #1
+ strb r1, [r4, r0]
+ cmp r2, #0x1e
+ blo _0224EDBA
+ bl MOD18_0224712C
+ mov r0, #0
+ str r0, [r4, #4]
+_0224EDBA:
+ mov r0, #0
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224EDC0: .word 0x00000508
+_0224EDC4: .word 0x000004DC
+_0224EDC8: .word 0x021C48B8
+_0224EDCC: .word 0xFFFF0000
+_0224EDD0: .word 0x000005FE
+_0224EDD4: .word 0x00000521
+_0224EDD8: .word 0x00000602
+ thumb_func_end MOD18_0224EAD4
+
+ thumb_func_start MOD18_0224EDDC
+MOD18_0224EDDC: ; 0x0224EDDC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r4, r0, #0
+ bl FUN_02046528
+ add r7, r0, #0
+ add r0, r4, #0
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #6
+ bls _0224EDF8
+ b _0224F252
+_0224EDF8:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0224EE04: ; jump table
+ .short _0224EE12 - _0224EE04 - 2 ; case 0
+ .short _0224EE52 - _0224EE04 - 2 ; case 1
+ .short _0224F122 - _0224EE04 - 2 ; case 2
+ .short _0224F192 - _0224EE04 - 2 ; case 3
+ .short _0224F1BC - _0224EE04 - 2 ; case 4
+ .short _0224F1E2 - _0224EE04 - 2 ; case 5
+ .short _0224F224 - _0224EE04 - 2 ; case 6
+_0224EE12:
+ ldr r0, _0224F148 ; =0x000004DC
+ add r0, r4, r0
+ bl MOD18_0224FF00
+ ldr r0, _0224F14C ; =0x000004FC
+ ldr r0, [r4, r0]
+ bl MOD18_0224FBD4
+ ldr r0, _0224F14C ; =0x000004FC
+ add r2, r4, #0
+ ldr r1, [r4, r0]
+ add r2, #0x5c
+ ldr r0, [r1, #0x64]
+ ldr r1, [r1, #0x68]
+ add r3, sp, #0xc
+ bl MOD18_0224F7EC
+ cmp r0, #0
+ beq _0224EE4C
+ ldr r1, [sp, #0xc]
+ mov r0, #0x24
+ mul r0, r1
+ add r0, r4, r0
+ ldr r2, _0224F148 ; =0x000004DC
+ ldr r0, [r0, #0x70]
+ mov r1, #8
+ add r2, r4, r2
+ bl MOD18_0224FF14
+_0224EE4C:
+ mov r0, #1
+ str r0, [r4, #4]
+ b _0224F252
+_0224EE52:
+ ldr r1, _0224F148 ; =0x000004DC
+ mov r0, #1
+ str r0, [sp]
+ add r0, r7, #0
+ add r1, r4, r1
+ bl MOD18_0224FF24
+ add r0, r4, #0
+ add r1, r7, #0
+ add r2, sp, #0x10
+ bl MOD18_0224FDDC
+ ldr r1, _0224F14C ; =0x000004FC
+ cmp r0, #0
+ ldr r2, [r4, r1]
+ ldr r2, [r2, #0x64]
+ str r2, [sp, #0x14]
+ ldr r2, [r4, r1]
+ ldr r2, [r2, #0x64]
+ str r2, [sp, #0x1c]
+ ldr r2, [r4, r1]
+ ldr r2, [r2, #0x68]
+ str r2, [sp, #0x18]
+ ldr r2, [r4, r1]
+ ldr r2, [r2, #0x68]
+ str r2, [sp, #0x20]
+ ldr r2, [r4, r1]
+ ldr r6, [r2, #0x58]
+ ldr r5, [r2, #0x60]
+ bne _0224EF54
+ ldr r0, _0224F150 ; =0x021C48B8
+ mov r2, #0x20
+ ldr r0, [r0, #0x4c]
+ tst r2, r0
+ beq _0224EEB4
+ add r1, #0xe9
+ add r0, r1, #0
+ bl FUN_020054C8
+ mov r0, #1
+ lsl r0, r0, #0x10
+ sub r6, r6, r0
+ ldr r0, [sp, #0x14]
+ sub r0, r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x1c]
+ sub r0, r0, #1
+ str r0, [sp, #0x1c]
+ b _0224EF1E
+_0224EEB4:
+ mov r2, #0x10
+ tst r2, r0
+ beq _0224EED6
+ add r1, #0xe9
+ add r0, r1, #0
+ bl FUN_020054C8
+ mov r0, #1
+ lsl r0, r0, #0x10
+ add r6, r6, r0
+ ldr r0, [sp, #0x14]
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ b _0224EF1E
+_0224EED6:
+ mov r2, #0x40
+ tst r2, r0
+ beq _0224EEF8
+ add r1, #0xe9
+ add r0, r1, #0
+ bl FUN_020054C8
+ mov r0, #1
+ lsl r0, r0, #0x10
+ sub r5, r5, r0
+ ldr r0, [sp, #0x18]
+ sub r0, r0, #1
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ sub r0, r0, #1
+ str r0, [sp, #0x20]
+ b _0224EF1E
+_0224EEF8:
+ mov r2, #0x80
+ tst r0, r2
+ beq _0224EF1A
+ add r1, #0xe9
+ add r0, r1, #0
+ bl FUN_020054C8
+ mov r0, #1
+ lsl r0, r0, #0x10
+ add r5, r5, r0
+ ldr r0, [sp, #0x18]
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ b _0224EF1E
+_0224EF1A:
+ mov r0, #0
+ str r0, [sp]
+_0224EF1E:
+ ldr r0, _0224F150 ; =0x021C48B8
+ mov r1, #1
+ ldr r0, [r0, #0x48]
+ add r2, r0, #0
+ tst r2, r1
+ beq _0224EF2E
+ str r1, [sp, #0x10]
+ b _0224EF54
+_0224EF2E:
+ mov r1, #2
+ tst r0, r1
+ beq _0224EF54
+ ldr r0, _0224F14C ; =0x000004FC
+ ldr r0, [r4, r0]
+ bl MOD18_0224FBF8
+ ldr r1, _0224F148 ; =0x000004DC
+ add r0, r7, #0
+ add r1, r4, r1
+ bl MOD18_0224FF64
+ mov r0, #1
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ add sp, #0x24
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0224EF54:
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _0224EFD6
+ add r0, sp, #0x14
+ bl MOD18_0224F830
+ cmp r0, #0
+ bne _0224EFD6
+ ldr r0, _0224F14C ; =0x000004FC
+ add r3, sp, #8
+ ldr r1, [r4, r0]
+ str r6, [r1, #0x58]
+ ldr r1, [r4, r0]
+ str r5, [r1, #0x60]
+ ldr r2, [sp, #0x14]
+ ldr r1, [r4, r0]
+ str r2, [r1, #0x64]
+ ldr r2, [sp, #0x18]
+ ldr r1, [r4, r0]
+ str r2, [r1, #0x68]
+ ldr r1, [r4, r0]
+ add r2, r4, #0
+ ldr r0, [r1, #0x64]
+ ldr r1, [r1, #0x68]
+ add r2, #0x5c
+ bl MOD18_0224F7EC
+ cmp r0, #0
+ beq _0224EFC4
+ ldr r0, _0224F148 ; =0x000004DC
+ add r0, r4, r0
+ bl MOD18_0224FF80
+ ldr r2, [sp, #8]
+ mov r1, #0x24
+ mul r1, r2
+ add r1, r4, r1
+ ldr r1, [r1, #0x70]
+ cmp r0, r1
+ beq _0224EFD6
+ ldr r1, _0224F148 ; =0x000004DC
+ add r0, r7, #0
+ add r1, r4, r1
+ bl MOD18_0224FF64
+ ldr r2, _0224F148 ; =0x000004DC
+ ldr r1, [sp, #8]
+ mov r0, #0x24
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #0x70]
+ mov r1, #8
+ add r2, r4, r2
+ bl MOD18_0224FF14
+ b _0224EFD6
+_0224EFC4:
+ ldr r1, _0224F148 ; =0x000004DC
+ add r0, r7, #0
+ add r1, r4, r1
+ bl MOD18_0224FF64
+ ldr r0, _0224F148 ; =0x000004DC
+ add r0, r4, r0
+ bl MOD18_0224FF00
+_0224EFD6:
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ beq _0224F00E
+ ldr r0, _0224F14C ; =0x000004FC
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x64]
+ cmp r0, #0x20
+ blt _0224EFEA
+ bl ErrorHandling
+_0224EFEA:
+ ldr r0, _0224F14C ; =0x000004FC
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0x68]
+ cmp r0, #0x20
+ blt _0224EFF8
+ bl ErrorHandling
+_0224EFF8:
+ ldr r0, _0224F14C ; =0x000004FC
+ add r2, r4, #0
+ ldr r1, [r4, r0]
+ add r2, #0x5c
+ ldr r0, [r1, #0x64]
+ ldr r1, [r1, #0x68]
+ add r3, sp, #4
+ bl MOD18_0224F7EC
+ cmp r0, #0
+ bne _0224F010
+_0224F00E:
+ b _0224F252
+_0224F010:
+ ldr r1, [sp, #4]
+ cmp r1, #0
+ beq _0224F10C
+ mov r0, #0x24
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #0x74]
+ bl MOD18_02247138
+ ldr r1, [sp, #4]
+ mov r0, #0x24
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #0x74]
+ cmp r0, #6
+ bne _0224F09E
+ ldr r0, _0224F154 ; =0x00000523
+ ldrb r1, [r4, r0]
+ cmp r1, #0x10
+ bne _0224F04E
+ mov r0, #0xf
+ bl MOD18_02247118
+ str r0, [r4, #8]
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #4
+ str r0, [r4, #4]
+ b _0224F252
+_0224F04E:
+ sub r0, r0, #1
+ ldrb r0, [r4, r0]
+ sub r0, r0, #1
+ cmp r0, r1
+ bge _0224F06E
+ mov r0, #0x12
+ bl MOD18_02247118
+ str r0, [r4, #8]
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #4
+ str r0, [r4, #4]
+ b _0224F252
+_0224F06E:
+ mov r0, #0x19
+ lsl r0, r0, #6
+ bl FUN_020054C8
+ mov r0, #0xe
+ bl MOD18_02247118
+ str r0, [r4, #8]
+ ldr r0, _0224F158 ; =0x00000522
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bne _0224F08A
+ bl ErrorHandling
+_0224F08A:
+ ldr r0, _0224F158 ; =0x00000522
+ ldrb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, r0]
+ mov r1, #0
+ sub r0, r0, #2
+ strb r1, [r4, r0]
+ mov r0, #2
+ str r0, [r4, #4]
+ b _0224F0E0
+_0224F09E:
+ mov r0, #5
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ ldr r0, [r0, #0xc]
+ bl FUN_02026CC4
+ add r5, r0, #0
+ ldr r0, _0224F15C ; =0x000005EB
+ bl FUN_020054C8
+ ldr r1, [sp, #4]
+ add r0, r5, #0
+ bl FUN_02025F30
+ mov r0, #0xd
+ bl MOD18_02247118
+ str r0, [r4, #8]
+ ldr r0, _0224F160 ; =0x00000521
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bne _0224F0CE
+ bl ErrorHandling
+_0224F0CE:
+ ldr r0, _0224F160 ; =0x00000521
+ ldrb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, r0]
+ mov r1, #0
+ sub r0, r0, #1
+ strb r1, [r4, r0]
+ mov r0, #3
+ str r0, [r4, #4]
+_0224F0E0:
+ ldr r2, [sp, #4]
+ mov r1, #0x24
+ mul r1, r2
+ add r1, r4, r1
+ ldr r1, [r1, #0x70]
+ add r0, r7, #0
+ bl MOD18_0224E7E4
+ add r1, r4, #0
+ ldr r0, [sp, #4]
+ add r1, #0x5c
+ bl MOD18_0224F8CC
+ ldr r0, _0224F14C ; =0x000004FC
+ ldr r0, [r4, r0]
+ bl MOD18_0224FBF8
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ b _0224F252
+_0224F10C:
+ mov r0, #0x16
+ bl MOD18_02247118
+ str r0, [r4, #8]
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #4
+ str r0, [r4, #4]
+ b _0224F252
+_0224F122:
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0224F13E
+ mov r0, #0x52
+ lsl r0, r0, #4
+ ldrb r2, [r4, r0]
+ add r1, r2, #1
+ strb r1, [r4, r0]
+ cmp r2, #0x1e
+ bhs _0224F140
+_0224F13E:
+ b _0224F252
+_0224F140:
+ bl MOD18_0224712C
+ ldr r0, _0224F158 ; =0x00000522
+ b _0224F164
+ .align 2, 0
+_0224F148: .word 0x000004DC
+_0224F14C: .word 0x000004FC
+_0224F150: .word 0x021C48B8
+_0224F154: .word 0x00000523
+_0224F158: .word 0x00000522
+_0224F15C: .word 0x000005EB
+_0224F160: .word 0x00000521
+_0224F164:
+ ldrb r1, [r4, r0]
+ add r0, r0, #1
+ ldrb r0, [r4, r0]
+ sub r5, r1, r0
+ bpl _0224F172
+ bl ErrorHandling
+_0224F172:
+ cmp r5, #0
+ bne _0224F184
+ mov r0, #1
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ add sp, #0x24
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0224F184:
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #5
+ str r0, [r4, #4]
+ b _0224F252
+_0224F192:
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0224F252
+ mov r0, #0x52
+ lsl r0, r0, #4
+ ldrb r2, [r4, r0]
+ add r1, r2, #1
+ strb r1, [r4, r0]
+ cmp r2, #0x1e
+ blo _0224F252
+ bl MOD18_0224712C
+ mov r0, #0
+ str r0, [r4, #4]
+ add sp, #0x24
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0224F1BC:
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0224F252
+ mov r0, #0x52
+ lsl r0, r0, #4
+ ldrb r2, [r4, r0]
+ add r1, r2, #1
+ strb r1, [r4, r0]
+ cmp r2, #0x1e
+ blo _0224F252
+ bl MOD18_0224712C
+ mov r0, #1
+ str r0, [r4, #4]
+ b _0224F252
+_0224F1E2:
+ mov r1, #0x52
+ lsl r1, r1, #4
+ ldrb r2, [r4, r1]
+ add r0, r2, #1
+ strb r0, [r4, r1]
+ cmp r2, #0xa
+ blo _0224F252
+ add r0, r1, #2
+ ldrb r2, [r4, r0]
+ add r0, r1, #3
+ ldrb r0, [r4, r0]
+ mov r1, #0
+ sub r5, r2, r0
+ add r0, r5, #0
+ bl MOD18_0224714C
+ cmp r5, #1
+ bne _0224F20E
+ mov r0, #0x11
+ bl MOD18_02247118
+ b _0224F214
+_0224F20E:
+ mov r0, #0x19
+ bl MOD18_02247118
+_0224F214:
+ str r0, [r4, #8]
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #6
+ str r0, [r4, #4]
+ b _0224F252
+_0224F224:
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0224F252
+ mov r0, #0x52
+ lsl r0, r0, #4
+ ldrb r2, [r4, r0]
+ add r1, r2, #1
+ strb r1, [r4, r0]
+ cmp r2, #0x1e
+ blo _0224F252
+ bl MOD18_0224712C
+ mov r0, #1
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ add sp, #0x24
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0224F252:
+ mov r0, #0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_0224EDDC
+
+ thumb_func_start MOD18_0224F258
+MOD18_0224F258: ; 0x0224F258
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r4, r0, #0
+ bl FUN_02046528
+ add r7, r0, #0
+ add r0, r4, #0
+ bl FUN_0204652C
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _0224F27E
+ cmp r0, #1
+ beq _0224F2BE
+ cmp r0, #2
+ bne _0224F27C
+ b _0224F4EC
+_0224F27C:
+ b _0224F510
+_0224F27E:
+ ldr r0, _0224F518 ; =0x000004DC
+ add r0, r5, r0
+ bl MOD18_0224FF00
+ ldr r0, _0224F51C ; =0x000004FC
+ ldr r0, [r5, r0]
+ bl MOD18_0224FBD4
+ ldr r0, _0224F51C ; =0x000004FC
+ add r2, r5, #0
+ ldr r1, [r5, r0]
+ add r2, #0x5c
+ ldr r0, [r1, #0x64]
+ ldr r1, [r1, #0x68]
+ add r3, sp, #0xc
+ bl MOD18_0224F7EC
+ cmp r0, #0
+ beq _0224F2B8
+ ldr r1, [sp, #0xc]
+ mov r0, #0x24
+ mul r0, r1
+ add r0, r5, r0
+ ldr r2, _0224F518 ; =0x000004DC
+ ldr r0, [r0, #0x70]
+ mov r1, #8
+ add r2, r5, r2
+ bl MOD18_0224FF14
+_0224F2B8:
+ mov r0, #1
+ str r0, [r5, #4]
+ b _0224F510
+_0224F2BE:
+ ldr r1, _0224F518 ; =0x000004DC
+ mov r0, #1
+ str r0, [sp]
+ add r0, r7, #0
+ add r1, r5, r1
+ bl MOD18_0224FF24
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, sp, #0x10
+ bl MOD18_0224FE4C
+ ldr r1, _0224F51C ; =0x000004FC
+ cmp r0, #0
+ ldr r2, [r5, r1]
+ ldr r2, [r2, #0x64]
+ str r2, [sp, #0x14]
+ ldr r2, [r5, r1]
+ ldr r2, [r2, #0x64]
+ str r2, [sp, #0x1c]
+ ldr r2, [r5, r1]
+ ldr r2, [r2, #0x68]
+ str r2, [sp, #0x18]
+ ldr r2, [r5, r1]
+ ldr r2, [r2, #0x68]
+ str r2, [sp, #0x20]
+ ldr r2, [r5, r1]
+ ldr r6, [r2, #0x58]
+ ldr r4, [r2, #0x60]
+ bne _0224F3C0
+ ldr r0, _0224F520 ; =0x021C48B8
+ mov r2, #0x20
+ ldr r0, [r0, #0x4c]
+ tst r2, r0
+ beq _0224F320
+ add r1, #0xe9
+ add r0, r1, #0
+ bl FUN_020054C8
+ mov r0, #1
+ lsl r0, r0, #0x10
+ sub r6, r6, r0
+ ldr r0, [sp, #0x14]
+ sub r0, r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x1c]
+ sub r0, r0, #1
+ str r0, [sp, #0x1c]
+ b _0224F38A
+_0224F320:
+ mov r2, #0x10
+ tst r2, r0
+ beq _0224F342
+ add r1, #0xe9
+ add r0, r1, #0
+ bl FUN_020054C8
+ mov r0, #1
+ lsl r0, r0, #0x10
+ add r6, r6, r0
+ ldr r0, [sp, #0x14]
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ b _0224F38A
+_0224F342:
+ mov r2, #0x40
+ tst r2, r0
+ beq _0224F364
+ add r1, #0xe9
+ add r0, r1, #0
+ bl FUN_020054C8
+ mov r0, #1
+ lsl r0, r0, #0x10
+ sub r4, r4, r0
+ ldr r0, [sp, #0x18]
+ sub r0, r0, #1
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ sub r0, r0, #1
+ str r0, [sp, #0x20]
+ b _0224F38A
+_0224F364:
+ mov r2, #0x80
+ tst r0, r2
+ beq _0224F386
+ add r1, #0xe9
+ add r0, r1, #0
+ bl FUN_020054C8
+ mov r0, #1
+ lsl r0, r0, #0x10
+ add r4, r4, r0
+ ldr r0, [sp, #0x18]
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ b _0224F38A
+_0224F386:
+ mov r0, #0
+ str r0, [sp]
+_0224F38A:
+ ldr r0, _0224F520 ; =0x021C48B8
+ mov r1, #1
+ ldr r0, [r0, #0x48]
+ add r2, r0, #0
+ tst r2, r1
+ beq _0224F39A
+ str r1, [sp, #0x10]
+ b _0224F3C0
+_0224F39A:
+ mov r1, #2
+ tst r0, r1
+ beq _0224F3C0
+ ldr r0, _0224F51C ; =0x000004FC
+ ldr r0, [r5, r0]
+ bl MOD18_0224FBF8
+ ldr r1, _0224F518 ; =0x000004DC
+ add r0, r7, #0
+ add r1, r5, r1
+ bl MOD18_0224FF64
+ mov r0, #1
+ add r1, r5, #0
+ bl MOD18_0224FB94
+ add sp, #0x24
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0224F3C0:
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _0224F442
+ add r0, sp, #0x14
+ bl MOD18_0224F830
+ cmp r0, #0
+ bne _0224F442
+ ldr r0, _0224F51C ; =0x000004FC
+ add r3, sp, #8
+ ldr r1, [r5, r0]
+ str r6, [r1, #0x58]
+ ldr r1, [r5, r0]
+ str r4, [r1, #0x60]
+ ldr r2, [sp, #0x14]
+ ldr r1, [r5, r0]
+ str r2, [r1, #0x64]
+ ldr r2, [sp, #0x18]
+ ldr r1, [r5, r0]
+ str r2, [r1, #0x68]
+ ldr r1, [r5, r0]
+ add r2, r5, #0
+ ldr r0, [r1, #0x64]
+ ldr r1, [r1, #0x68]
+ add r2, #0x5c
+ bl MOD18_0224F7EC
+ cmp r0, #0
+ beq _0224F430
+ ldr r0, _0224F518 ; =0x000004DC
+ add r0, r5, r0
+ bl MOD18_0224FF80
+ ldr r2, [sp, #8]
+ mov r1, #0x24
+ mul r1, r2
+ add r1, r5, r1
+ ldr r1, [r1, #0x70]
+ cmp r0, r1
+ beq _0224F442
+ ldr r1, _0224F518 ; =0x000004DC
+ add r0, r7, #0
+ add r1, r5, r1
+ bl MOD18_0224FF64
+ ldr r2, _0224F518 ; =0x000004DC
+ ldr r1, [sp, #8]
+ mov r0, #0x24
+ mul r0, r1
+ add r0, r5, r0
+ ldr r0, [r0, #0x70]
+ mov r1, #8
+ add r2, r5, r2
+ bl MOD18_0224FF14
+ b _0224F442
+_0224F430:
+ ldr r1, _0224F518 ; =0x000004DC
+ add r0, r7, #0
+ add r1, r5, r1
+ bl MOD18_0224FF64
+ ldr r0, _0224F518 ; =0x000004DC
+ add r0, r5, r0
+ bl MOD18_0224FF00
+_0224F442:
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ beq _0224F510
+ ldr r0, _0224F51C ; =0x000004FC
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0x64]
+ cmp r0, #0x20
+ blt _0224F456
+ bl ErrorHandling
+_0224F456:
+ ldr r0, _0224F51C ; =0x000004FC
+ ldr r0, [r5, r0]
+ ldr r0, [r0, #0x68]
+ cmp r0, #0x20
+ blt _0224F464
+ bl ErrorHandling
+_0224F464:
+ ldr r0, _0224F51C ; =0x000004FC
+ add r2, r5, #0
+ ldr r1, [r5, r0]
+ add r2, #0x5c
+ ldr r0, [r1, #0x64]
+ ldr r1, [r1, #0x68]
+ add r3, sp, #4
+ bl MOD18_0224F7EC
+ cmp r0, #0
+ beq _0224F510
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ beq _0224F4D6
+ mov r1, #0x24
+ mul r1, r0
+ add r1, r5, r1
+ ldr r1, [r1, #0x74]
+ cmp r1, #6
+ bne _0224F4A2
+ mov r0, #0x10
+ bl MOD18_02247118
+ str r0, [r5, #8]
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r5, r0]
+ mov r0, #2
+ str r0, [r5, #4]
+ b _0224F510
+_0224F4A2:
+ add r1, r5, #0
+ bl MOD18_0224E7F4
+ ldr r0, [sp, #4]
+ add r1, r5, #0
+ bl MOD18_0224FB04
+ add r1, r5, #0
+ ldr r0, [sp, #4]
+ add r1, #0x5c
+ bl MOD18_0224F8CC
+ ldr r0, _0224F524 ; =0x000005EB
+ bl FUN_020054C8
+ ldr r0, _0224F51C ; =0x000004FC
+ ldr r0, [r5, r0]
+ bl MOD18_0224FBF8
+ mov r0, #5
+ add r1, r5, #0
+ bl MOD18_0224FB94
+ add sp, #0x24
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0224F4D6:
+ mov r0, #0x17
+ bl MOD18_02247118
+ str r0, [r5, #8]
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r5, r0]
+ mov r0, #2
+ str r0, [r5, #4]
+ b _0224F510
+_0224F4EC:
+ ldr r0, [r5, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0224F510
+ mov r0, #0x52
+ lsl r0, r0, #4
+ ldrb r2, [r5, r0]
+ add r1, r2, #1
+ strb r1, [r5, r0]
+ cmp r2, #0x1e
+ blo _0224F510
+ bl MOD18_0224712C
+ mov r0, #1
+ str r0, [r5, #4]
+_0224F510:
+ mov r0, #0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0224F518: .word 0x000004DC
+_0224F51C: .word 0x000004FC
+_0224F520: .word 0x021C48B8
+_0224F524: .word 0x000005EB
+ thumb_func_end MOD18_0224F258
+
+ thumb_func_start MOD18_0224F528
+MOD18_0224F528: ; 0x0224F528
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r4, r0, #0
+ bl FUN_02046528
+ str r0, [sp]
+ add r0, r4, #0
+ bl FUN_0204652C
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ cmp r0, #3
+ bls _0224F544
+ b _0224F750
+_0224F544:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0224F550: ; jump table
+ .short _0224F558 - _0224F550 - 2 ; case 0
+ .short _0224F572 - _0224F550 - 2 ; case 1
+ .short _0224F6FC - _0224F550 - 2 ; case 2
+ .short _0224F722 - _0224F550 - 2 ; case 3
+_0224F558:
+ ldr r0, _0224F758 ; =0x000004DC
+ add r0, r4, r0
+ bl MOD18_0224FF00
+ ldr r2, _0224F758 ; =0x000004DC
+ ldr r0, [r4, #0x4c]
+ mov r1, #4
+ add r2, r4, r2
+ bl MOD18_0224FF14
+ mov r0, #1
+ str r0, [r4, #4]
+ b _0224F750
+_0224F572:
+ ldr r1, _0224F758 ; =0x000004DC
+ ldr r0, [sp]
+ add r1, r4, r1
+ bl MOD18_0224FF24
+ ldr r1, [sp]
+ add r0, r4, #0
+ add r2, sp, #4
+ bl MOD18_0224FE94
+ cmp r0, #0
+ beq _0224F58C
+ b _0224F692
+_0224F58C:
+ add r3, r4, #0
+ add r3, #0x3c
+ add r2, sp, #0x14
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, _0224F75C ; =0x021C48B8
+ mov r1, #0x20
+ ldr r0, [r0, #0x4c]
+ mov r6, #1
+ tst r1, r0
+ beq _0224F5B8
+ ldr r0, [sp, #0x14]
+ ldr r7, _0224F760 ; =0xFFFF0000
+ sub r0, r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x1c]
+ mov r5, #0
+ sub r0, r0, #1
+ str r0, [sp, #0x1c]
+ b _0224F604
+_0224F5B8:
+ mov r1, #0x10
+ add r2, r0, #0
+ tst r2, r1
+ beq _0224F5D2
+ ldr r0, [sp, #0x14]
+ lsl r7, r1, #0xc
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x1c]
+ mov r5, #0
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ b _0224F604
+_0224F5D2:
+ mov r1, #0x40
+ tst r1, r0
+ beq _0224F5EA
+ ldr r0, [sp, #0x18]
+ mov r7, #0
+ sub r0, r0, #1
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ ldr r5, _0224F760 ; =0xFFFF0000
+ sub r0, r0, #1
+ str r0, [sp, #0x20]
+ b _0224F604
+_0224F5EA:
+ mov r1, #0x80
+ tst r0, r1
+ beq _0224F602
+ ldr r0, [sp, #0x18]
+ mov r7, #0
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ lsl r5, r1, #9
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ b _0224F604
+_0224F602:
+ mov r6, #0
+_0224F604:
+ cmp r6, #0
+ beq _0224F650
+ add r0, sp, #0x14
+ bl MOD18_0224F830
+ cmp r0, #0
+ bne _0224F650
+ add r2, r4, #0
+ add r3, sp, #0x14
+ add r2, #0x3c
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [sp]
+ ldr r1, [r4, #0x4c]
+ add r0, #0xa0
+ ldr r0, [r0]
+ bl MOD05_021E7EEC
+ add r6, r0, #0
+ add r0, sp, #8
+ add r1, r6, #0
+ bl MOD05_021E7EA0
+ ldr r0, [sp, #8]
+ add r1, sp, #8
+ add r0, r0, r7
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x10]
+ add r0, r0, r5
+ str r0, [sp, #0x10]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ bl MOD05_021E7EB0
+_0224F650:
+ ldr r0, _0224F75C ; =0x021C48B8
+ ldr r2, [r0, #0x48]
+ mov r0, #1
+ add r1, r2, #0
+ tst r1, r0
+ beq _0224F660
+ str r0, [sp, #4]
+ b _0224F692
+_0224F660:
+ mov r0, #2
+ tst r0, r2
+ beq _0224F692
+ add r0, r4, #0
+ add r2, r4, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x1c
+ add r2, #0x5c
+ bl MOD18_0224F890
+ add r0, r4, #0
+ bl MOD18_0224FB64
+ ldr r1, _0224F758 ; =0x000004DC
+ ldr r0, [sp]
+ add r1, r4, r1
+ bl MOD18_0224FF64
+ mov r0, #4
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ add sp, #0x24
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0224F692:
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ beq _0224F750
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0x3c
+ add r1, #0x5c
+ bl MOD18_0224F770
+ cmp r0, #0
+ beq _0224F6E0
+ add r0, r4, #0
+ add r2, r4, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x3c
+ add r2, #0x5c
+ bl MOD18_0224F890
+ ldr r0, _0224F764 ; =0x000005FE
+ bl FUN_020054C8
+ ldr r2, _0224F768 ; =0x000004FC
+ ldr r0, [r4, #0x3c]
+ ldr r1, [r4, #0x40]
+ ldr r2, [r4, r2]
+ bl MOD18_0224FBDC
+ ldr r1, _0224F758 ; =0x000004DC
+ ldr r0, [sp]
+ add r1, r4, r1
+ bl MOD18_0224FF64
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #3
+ str r0, [r4, #4]
+ b _0224F750
+_0224F6E0:
+ ldr r0, _0224F76C ; =0x00000602
+ bl FUN_020054C8
+ mov r0, #0xc
+ bl MOD18_02247118
+ str r0, [r4, #8]
+ mov r0, #0x52
+ mov r1, #0
+ lsl r0, r0, #4
+ strb r1, [r4, r0]
+ mov r0, #2
+ str r0, [r4, #4]
+ b _0224F750
+_0224F6FC:
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0224F750
+ mov r0, #0x52
+ lsl r0, r0, #4
+ ldrb r2, [r4, r0]
+ add r1, r2, #1
+ strb r1, [r4, r0]
+ cmp r2, #0x1e
+ blo _0224F750
+ bl MOD18_0224712C
+ mov r0, #1
+ str r0, [r4, #4]
+ b _0224F750
+_0224F722:
+ ldr r0, [r4, #8]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0224F750
+ mov r0, #0x52
+ lsl r0, r0, #4
+ ldrb r2, [r4, r0]
+ add r1, r2, #1
+ strb r1, [r4, r0]
+ cmp r2, #0x1e
+ blo _0224F750
+ bl MOD18_0224712C
+ mov r0, #4
+ add r1, r4, #0
+ bl MOD18_0224FB94
+ add sp, #0x24
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0224F750:
+ mov r0, #0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0224F758: .word 0x000004DC
+_0224F75C: .word 0x021C48B8
+_0224F760: .word 0xFFFF0000
+_0224F764: .word 0x000005FE
+_0224F768: .word 0x000004FC
+_0224F76C: .word 0x00000602
+ thumb_func_end MOD18_0224F528
+
+ thumb_func_start MOD18_0224F770
+MOD18_0224F770: ; 0x0224F770
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r1, #0
+ add r7, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+_0224F77C:
+ ldr r0, [r5]
+ cmp r0, #1
+ bne _0224F794
+ add r0, r4, #4
+ add r1, r7, #0
+ bl MOD18_0224F908
+ cmp r0, #0
+ beq _0224F794
+ add sp, #0x20
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0224F794:
+ add r6, r6, #1
+ add r5, #0x24
+ add r4, #0x24
+ cmp r6, #0x20
+ blt _0224F77C
+ ldr r4, _0224F7E4 ; =0x0225080C
+ add r3, sp, #0x10
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r7, #0
+ add r1, r2, #0
+ bl MOD18_0224F908
+ cmp r0, #0
+ beq _0224F7BE
+ add sp, #0x20
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0224F7BE:
+ ldr r4, _0224F7E8 ; =0x022507FC
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r7, #0
+ add r1, r2, #0
+ bl MOD18_0224F908
+ cmp r0, #0
+ bne _0224F7DE
+ add sp, #0x20
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0224F7DE:
+ mov r0, #0
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224F7E4: .word 0x0225080C
+_0224F7E8: .word 0x022507FC
+ thumb_func_end MOD18_0224F770
+
+ thumb_func_start MOD18_0224F7EC
+MOD18_0224F7EC: ; 0x0224F7EC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r2, #0
+ add r7, r0, #0
+ str r1, [sp]
+ str r3, [sp, #4]
+ mov r6, #0
+ add r4, r5, #0
+_0224F7FC:
+ ldr r0, [r5]
+ cmp r0, #1
+ bne _0224F81A
+ ldr r2, [sp]
+ add r0, r4, #4
+ add r1, r7, #0
+ bl MOD18_0224F930
+ cmp r0, #0
+ beq _0224F81A
+ ldr r0, [sp, #4]
+ add sp, #8
+ str r6, [r0]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0224F81A:
+ add r6, r6, #1
+ add r5, #0x24
+ add r4, #0x24
+ cmp r6, #0x20
+ blt _0224F7FC
+ ldr r0, [sp, #4]
+ mov r1, #0x20
+ str r1, [r0]
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_0224F7EC
+
+ thumb_func_start MOD18_0224F830
+MOD18_0224F830: ; 0x0224F830
+ ldr r1, [r0]
+ cmp r1, #0xa
+ blt _0224F84C
+ ldr r1, [r0, #8]
+ cmp r1, #0x15
+ bgt _0224F84C
+ ldr r1, [r0, #4]
+ cmp r1, #0xc
+ blt _0224F84C
+ ldr r0, [r0, #0xc]
+ cmp r0, #0x17
+ bgt _0224F84C
+ mov r0, #0
+ bx lr
+_0224F84C:
+ mov r0, #1
+ bx lr
+ thumb_func_end MOD18_0224F830
+
+ thumb_func_start MOD18_0224F850
+MOD18_0224F850: ; 0x0224F850
+ push {r4, lr}
+ add r3, r0, #0
+ mov r2, #0
+ add r4, r1, #0
+_0224F858:
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _0224F880
+ mov r0, #0x24
+ add r4, r2, #0
+ mul r4, r0
+ mov r0, #1
+ str r0, [r1, r4]
+ add r0, r1, r4
+ add r4, r0, #4
+ ldmia r3!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r4!, {r0, r1}
+ add r0, r2, #0
+ pop {r4, pc}
+_0224F880:
+ add r2, r2, #1
+ add r4, #0x24
+ cmp r2, #0x20
+ blt _0224F858
+ bl ErrorHandling
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD18_0224F850
+
+ thumb_func_start MOD18_0224F890
+MOD18_0224F890: ; 0x0224F890
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r5, r0, #0
+ add r4, r2, #0
+ cmp r7, #0x20
+ blt _0224F8A0
+ bl ErrorHandling
+_0224F8A0:
+ mov r0, #0x24
+ add r6, r7, #0
+ mul r6, r0
+ ldr r0, [r4, r6]
+ cmp r0, #0
+ beq _0224F8B0
+ bl ErrorHandling
+_0224F8B0:
+ mov r0, #1
+ str r0, [r4, r6]
+ add r0, r4, r6
+ add r2, r0, #4
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224F890
+
+ thumb_func_start MOD18_0224F8CC
+MOD18_0224F8CC: ; 0x0224F8CC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ cmp r5, #0x20
+ blt _0224F8DA
+ bl ErrorHandling
+_0224F8DA:
+ cmp r5, #0
+ bne _0224F8E2
+ bl ErrorHandling
+_0224F8E2:
+ mov r0, #0x24
+ add r6, r5, #0
+ mul r6, r0
+ ldr r0, [r4, r6]
+ cmp r0, #0
+ bne _0224F8F2
+ bl ErrorHandling
+_0224F8F2:
+ mov r1, #0
+ add r0, r4, r6
+ str r1, [r0, #0x14]
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ str r1, [r0, #0xc]
+ str r1, [r0, #0x10]
+ str r1, [r0, #0x18]
+ str r1, [r4, r6]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224F8CC
+
+ thumb_func_start MOD18_0224F908
+MOD18_0224F908: ; 0x0224F908
+ ldr r3, [r0]
+ ldr r2, [r1, #8]
+ cmp r3, r2
+ bgt _0224F92C
+ ldr r3, [r1]
+ ldr r2, [r0, #8]
+ cmp r3, r2
+ bgt _0224F92C
+ ldr r3, [r0, #4]
+ ldr r2, [r1, #0xc]
+ cmp r3, r2
+ bgt _0224F92C
+ ldr r1, [r1, #4]
+ ldr r0, [r0, #0xc]
+ cmp r1, r0
+ bgt _0224F92C
+ mov r0, #1
+ bx lr
+_0224F92C:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD18_0224F908
+
+ thumb_func_start MOD18_0224F930
+MOD18_0224F930: ; 0x0224F930
+ ldr r3, [r0]
+ cmp r3, r1
+ bgt _0224F94C
+ ldr r3, [r0, #8]
+ cmp r1, r3
+ bgt _0224F94C
+ ldr r1, [r0, #4]
+ cmp r1, r2
+ bgt _0224F94C
+ ldr r0, [r0, #0xc]
+ cmp r2, r0
+ bgt _0224F94C
+ mov r0, #1
+ bx lr
+_0224F94C:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD18_0224F930
+
+ thumb_func_start MOD18_0224F950
+MOD18_0224F950: ; 0x0224F950
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ ldr r0, [r0, #0xc]
+ add r6, r1, #0
+ str r2, [sp, #4]
+ bl FUN_02026CA8
+ ldr r1, _0224F9E4 ; =0x00000521
+ mov r2, #0
+ strb r2, [r6, r1]
+ add r1, r1, #1
+ add r7, r0, #0
+ strb r2, [r6, r1]
+ bl FUN_02026874
+ ldr r1, _0224F9E8 ; =0x00000523
+ strb r0, [r6, r1]
+ add r0, r7, #0
+ bl FUN_020268A0
+ ldr r1, _0224F9EC ; =0x00000524
+ mov r4, #0
+ strb r0, [r6, r1]
+_0224F97E:
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_020267C4
+ add r5, r0, #0
+ beq _0224F9DA
+ cmp r5, #6
+ bne _0224F99A
+ ldr r0, _0224F9F0 ; =0x00000522
+ ldrb r0, [r6, r0]
+ add r1, r0, #1
+ ldr r0, _0224F9F0 ; =0x00000522
+ strb r1, [r6, r0]
+ b _0224F9B8
+_0224F99A:
+ cmp r5, #1
+ beq _0224F9B8
+ cmp r5, #2
+ beq _0224F9B8
+ cmp r5, #3
+ beq _0224F9B8
+ cmp r5, #4
+ beq _0224F9B8
+ cmp r5, #5
+ beq _0224F9B8
+ ldr r0, _0224F9E4 ; =0x00000521
+ ldrb r0, [r6, r0]
+ add r1, r0, #1
+ ldr r0, _0224F9E4 ; =0x00000521
+ strb r1, [r6, r0]
+_0224F9B8:
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02026810
+ str r0, [sp, #8]
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_02026840
+ add r3, r0, #0
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #8]
+ str r0, [sp]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD18_0224F9F4
+_0224F9DA:
+ add r4, r4, #1
+ cmp r4, #0x20
+ blt _0224F97E
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0224F9E4: .word 0x00000521
+_0224F9E8: .word 0x00000523
+_0224F9EC: .word 0x00000524
+_0224F9F0: .word 0x00000522
+ thumb_func_end MOD18_0224F950
+
+ thumb_func_start MOD18_0224F9F4
+MOD18_0224F9F4: ; 0x0224F9F4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r7, r0, #0
+ mov r0, #0
+ add r5, r2, #0
+ add r6, r3, #0
+ str r0, [sp, #0x14]
+ add r0, r1, #0
+ str r1, [sp]
+ ldr r4, [sp, #0x38]
+ str r0, [sp, #0x18]
+ str r5, [sp, #4]
+ str r6, [sp, #8]
+ bl FUN_0204CA80
+ str r0, [sp, #0x1c]
+ ldr r0, [sp]
+ bl FUN_0204CA90
+ str r0, [sp, #0x20]
+ sub r0, r0, #1
+ add r0, r6, r0
+ ldr r1, [sp, #0x1c]
+ str r0, [sp, #0x10]
+ sub r1, r1, #1
+ add r1, r5, r1
+ mov r0, #0x24
+ add r2, r7, #0
+ mul r2, r0
+ add r0, r4, r2
+ add r5, sp, #4
+ add r3, r0, #4
+ str r1, [sp, #0xc]
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ mov r0, #1
+ str r0, [r4, r2]
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224F9F4
+
+ thumb_func_start MOD18_0224FA50
+MOD18_0224FA50: ; 0x0224FA50
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ add r4, r1, #0
+ bl MOD05_021E7C1C
+ mov r7, #1
+ mov r6, #0
+ lsl r7, r7, #0xc
+_0224FA66:
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _0224FAA8
+ ldr r1, [r4, #0x18]
+ add r0, r5, #0
+ bl MOD18_0224FAEC
+ add r2, r0, #0
+ ldr r0, [r4, #4]
+ ldr r3, [r4, #0x1c]
+ ldr r1, [r4, #0x20]
+ lsl r0, r0, #0x10
+ lsl r3, r3, #0xf
+ add r0, r0, r3
+ str r0, [sp, #8]
+ ldr r0, [r4, #8]
+ lsl r1, r1, #0xf
+ lsl r0, r0, #0x10
+ add r0, r0, r1
+ str r0, [sp, #0x10]
+ str r7, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5, #0x4c]
+ add r3, sp, #8
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ ldr r1, [r5, #0x2c]
+ bl MOD05_021E7FBC
+ str r0, [r4, #0x14]
+_0224FAA8:
+ add r6, r6, #1
+ add r4, #0x24
+ cmp r6, #0x20
+ blt _0224FA66
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_0224FA50
+
+ thumb_func_start MOD18_0224FAB4
+MOD18_0224FAB4: ; 0x0224FAB4
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r0, [r0, #0xc]
+ add r5, r1, #0
+ bl FUN_02026CA8
+ mov r4, #0
+ add r6, r0, #0
+ add r7, r4, #0
+_0224FAC4:
+ ldr r0, [r5]
+ cmp r0, #1
+ bne _0224FAD2
+ ldr r2, [r5, #0x18]
+ ldr r3, [r5, #4]
+ ldr r0, [r5, #8]
+ b _0224FAD8
+_0224FAD2:
+ add r2, r7, #0
+ add r3, r7, #0
+ add r0, r7, #0
+_0224FAD8:
+ str r0, [sp]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0202671C
+ add r4, r4, #1
+ add r5, #0x24
+ cmp r4, #0x20
+ blt _0224FAC4
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD18_0224FAB4
+
+ thumb_func_start MOD18_0224FAEC
+MOD18_0224FAEC: ; 0x0224FAEC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bne _0224FAF8
+ bl ErrorHandling
+_0224FAF8:
+ ldr r0, [r5, #0x2c]
+ add r1, r4, #0
+ bl MOD05_021F4CD4
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224FAEC
+
+ thumb_func_start MOD18_0224FB04
+MOD18_0224FB04: ; 0x0224FB04
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ mov r0, #0x24
+ add r4, r6, #0
+ add r5, r1, #0
+ mul r4, r0
+ add r0, r5, r4
+ ldr r0, [r0, #0x5c]
+ cmp r0, #0
+ bne _0224FB1E
+ bl ErrorHandling
+_0224FB1E:
+ add r0, r5, #0
+ add r0, #0x60
+ add r4, r0, r4
+ mov r0, #5
+ lsl r0, r0, #8
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #0x10]
+ add r0, #0xa0
+ ldr r0, [r0]
+ bl MOD05_021E7EEC
+ add r1, r0, #0
+ add r0, sp, #0
+ bl MOD05_021E7EA0
+ add r3, sp, #0
+ add r2, r5, #0
+ ldmia r3!, {r0, r1}
+ add r2, #0x10
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ str r6, [r5, #0xc]
+ add r5, #0x1c
+ ldmia r4!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r5!, {r0, r1}
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224FB04
+
+ thumb_func_start MOD18_0224FB64
+MOD18_0224FB64: ; 0x0224FB64
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0xc]
+ mov r0, #0x24
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #0x5c]
+ cmp r0, #0
+ bne _0224FB7A
+ bl ErrorHandling
+_0224FB7A:
+ mov r0, #5
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ ldr r1, [r4, #0x2c]
+ add r0, #0xa0
+ ldr r0, [r0]
+ bl MOD05_021E7EEC
+ add r4, #0x10
+ add r1, r4, #0
+ bl MOD05_021E7EB0
+ pop {r4, pc}
+ thumb_func_end MOD18_0224FB64
+
+ thumb_func_start MOD18_0224FB94
+MOD18_0224FB94: ; 0x0224FB94
+ str r0, [r1]
+ mov r0, #0
+ str r0, [r1, #4]
+ bx lr
+ thumb_func_end MOD18_0224FB94
+
+ thumb_func_start MOD18_0224FB9C
+MOD18_0224FB9C: ; 0x0224FB9C
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, #0x54
+ str r0, [sp]
+ ldr r1, _0224FBC4 ; =0x02251350
+ mov r0, #4
+ add r2, r4, #0
+ add r3, sp, #4
+ bl FUN_0201B21C
+ mov r0, #0
+ str r0, [r4, #0x58]
+ str r0, [r4, #0x5c]
+ str r0, [r4, #0x60]
+ str r0, [r4, #0x64]
+ str r0, [r4, #0x68]
+ str r0, [r4, #0x6c]
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_0224FBC4: .word 0x02251350
+ thumb_func_end MOD18_0224FB9C
+
+ thumb_func_start MOD18_0224FBC8
+MOD18_0224FBC8: ; 0x0224FBC8
+ ldr r3, _0224FBD0 ; =0x02016A19
+ ldr r0, [r0, #0x54]
+ bx r3
+ nop
+_0224FBD0: .word 0x02016A19
+ thumb_func_end MOD18_0224FBC8
+
+ thumb_func_start MOD18_0224FBD4
+MOD18_0224FBD4: ; 0x0224FBD4
+ mov r1, #1
+ str r1, [r0, #0x6c]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_0224FBD4
+
+ thumb_func_start MOD18_0224FBDC
+MOD18_0224FBDC: ; 0x0224FBDC
+ str r0, [r2, #0x64]
+ lsl r3, r0, #0x10
+ mov r0, #2
+ lsl r0, r0, #0xe
+ str r1, [r2, #0x68]
+ add r3, r3, r0
+ str r3, [r2, #0x58]
+ lsr r3, r0, #3
+ lsl r1, r1, #0x10
+ str r3, [r2, #0x5c]
+ add r0, r1, r0
+ str r0, [r2, #0x60]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_0224FBDC
+
+ thumb_func_start MOD18_0224FBF8
+MOD18_0224FBF8: ; 0x0224FBF8
+ mov r1, #0
+ str r1, [r0, #0x6c]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_0224FBF8
+
+ thumb_func_start MOD18_0224FC00
+MOD18_0224FC00: ; 0x0224FC00
+ ldr r3, _0224FC14 ; =0x0000FFFF
+ cmp r0, r3
+ beq _0224FC08
+ str r0, [r2]
+_0224FC08:
+ ldr r0, _0224FC14 ; =0x0000FFFF
+ cmp r1, r0
+ beq _0224FC10
+ str r1, [r2, #4]
+_0224FC10:
+ bx lr
+ nop
+_0224FC14: .word 0x0000FFFF
+ thumb_func_end MOD18_0224FC00
+
+ thumb_func_start MOD18_0224FC18
+MOD18_0224FC18: ; 0x0224FC18
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r1, #0
+ str r0, [sp]
+ add r0, #0x88
+ ldr r1, _0224FCD4 ; =0x021C48F8
+ ldr r6, [r0]
+ ldrh r0, [r1, #0x1c]
+ ldrh r1, [r1, #0x1e]
+ add r4, r2, #0
+ bl MOD18_0224FC00
+ ldr r1, [r4]
+ ldr r2, [r4, #4]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, sp, #8
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ add r3, r6, #0
+ bl MOD05_021F0318
+ ldr r1, [sp, #8]
+ mov r3, #0x1b
+ asr r0, r1, #0xf
+ lsr r0, r0, #0x10
+ add r0, r1, r0
+ asr r0, r0, #0x10
+ ldr r1, [sp, #0x10]
+ str r0, [sp, #4]
+ asr r0, r1, #0xf
+ lsr r0, r0, #0x10
+ add r0, r1, r0
+ asr r7, r0, #0x10
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #4]
+ lsr r0, r0, #0x1f
+ lsl r1, r1, #0x1b
+ sub r1, r1, r0
+ ror r1, r3
+ add r2, r0, r1
+ lsr r1, r7, #0x1f
+ lsl r0, r7, #0x1b
+ sub r0, r0, r1
+ ror r0, r3
+ ldr r6, [r5, #0x18]
+ ldr r4, [r5, #0x1c]
+ add r0, r1, r0
+ sub r1, r6, #1
+ add r1, r2, r1
+ str r1, [sp, #0x1c]
+ sub r1, r4, #1
+ str r0, [sp, #0x18]
+ add r0, r0, r1
+ str r0, [sp, #0x20]
+ add r0, sp, #0x14
+ str r2, [sp, #0x14]
+ bl MOD18_0224F830
+ cmp r0, #0
+ bne _0224FCCE
+ add r3, sp, #0x14
+ add r2, r5, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [sp, #4]
+ lsl r1, r7, #0x10
+ lsl r2, r0, #0x10
+ lsl r0, r6, #0xf
+ str r2, [sp, #8]
+ add r0, r2, r0
+ str r0, [sp, #8]
+ lsl r0, r4, #0xf
+ str r1, [sp, #0x10]
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [sp]
+ ldr r1, [r5, #0x10]
+ add r0, #0xa0
+ str r0, [sp]
+ ldr r0, [r0]
+ bl MOD05_021E7EEC
+ add r1, sp, #8
+ bl MOD05_021E7EB0
+_0224FCCE:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0224FCD4: .word 0x021C48F8
+ thumb_func_end MOD18_0224FC18
+
+ thumb_func_start MOD18_0224FCD8
+MOD18_0224FCD8: ; 0x0224FCD8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x1c
+ add r4, r1, #0
+ add r0, #0x88
+ ldr r1, _0224FD6C ; =0x021C48F8
+ ldr r5, [r0]
+ ldrh r0, [r1, #0x1c]
+ add r6, r2, #0
+ ldrh r1, [r1, #0x1e]
+ add r2, r4, #0
+ bl MOD18_0224FC00
+ ldr r1, [r4]
+ ldr r2, [r4, #4]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ add r0, sp, #0
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x10
+ add r3, r5, #0
+ bl MOD05_021F0318
+ ldr r1, [sp]
+ mov r2, #0x1b
+ asr r0, r1, #0xf
+ lsr r0, r0, #0x10
+ add r0, r1, r0
+ ldr r1, [sp, #8]
+ asr r4, r0, #0x10
+ asr r0, r1, #0xf
+ lsr r0, r0, #0x10
+ add r0, r1, r0
+ asr r5, r0, #0x10
+ lsr r1, r4, #0x1f
+ lsl r0, r4, #0x1b
+ sub r0, r0, r1
+ ror r0, r2
+ add r0, r1, r0
+ lsr r3, r5, #0x1f
+ lsl r1, r5, #0x1b
+ sub r1, r1, r3
+ ror r1, r2
+ add r1, r3, r1
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x14]
+ add r0, sp, #0xc
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x18]
+ bl MOD18_0224F830
+ cmp r0, #0
+ bne _0224FD66
+ mov r0, #2
+ lsl r1, r4, #0x10
+ lsl r0, r0, #0xe
+ add r1, r1, r0
+ str r1, [sp]
+ lsl r1, r5, #0x10
+ add r1, r1, r0
+ lsr r0, r0, #3
+ add r2, r6, #0
+ add r3, sp, #0
+ str r1, [sp, #8]
+ str r0, [sp, #4]
+ ldmia r3!, {r0, r1}
+ add r2, #0x58
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ str r4, [r6, #0x64]
+ str r5, [r6, #0x68]
+_0224FD66:
+ add sp, #0x1c
+ pop {r3, r4, r5, r6, pc}
+ nop
+_0224FD6C: .word 0x021C48F8
+ thumb_func_end MOD18_0224FCD8
+
+ thumb_func_start MOD18_0224FD70
+MOD18_0224FD70: ; 0x0224FD70
+ push {r3, r4, r5, lr}
+ add r3, r0, #0
+ mov r0, #0
+ ldr r4, _0224FDD0 ; =0x021C48F8
+ str r0, [r2]
+ ldrh r5, [r4, #0x20]
+ cmp r5, #0
+ beq _0224FDA0
+ ldr r0, _0224FDD4 ; =0x021C48B8
+ ldr r0, [r0, #0x44]
+ cmp r0, #0
+ bne _0224FD9C
+ ldr r2, _0224FDD8 ; =0x000004F8
+ mov r0, #1
+ str r0, [r3, r2]
+ add r0, r1, #0
+ add r1, r3, #0
+ sub r2, #8
+ add r1, #0x3c
+ add r2, r3, r2
+ bl MOD18_0224FC18
+_0224FD9C:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224FDA0:
+ ldrh r4, [r4, #0x22]
+ cmp r4, #0
+ beq _0224FDC0
+ ldr r2, _0224FDD8 ; =0x000004F8
+ ldr r0, [r3, r2]
+ cmp r0, #0
+ beq _0224FDBC
+ add r0, r1, #0
+ add r1, r3, #0
+ sub r2, #8
+ add r1, #0x3c
+ add r2, r3, r2
+ bl MOD18_0224FC18
+_0224FDBC:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224FDC0:
+ ldr r1, _0224FDD8 ; =0x000004F8
+ ldr r4, [r3, r1]
+ cmp r4, #0
+ beq _0224FDCE
+ str r0, [r3, r1]
+ mov r1, #1
+ str r1, [r2]
+_0224FDCE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224FDD0: .word 0x021C48F8
+_0224FDD4: .word 0x021C48B8
+_0224FDD8: .word 0x000004F8
+ thumb_func_end MOD18_0224FD70
+
+ thumb_func_start MOD18_0224FDDC
+MOD18_0224FDDC: ; 0x0224FDDC
+ push {r3, r4, r5, lr}
+ add r3, r0, #0
+ mov r0, #0
+ ldr r4, _0224FE40 ; =0x021C48F8
+ str r0, [r2]
+ ldrh r5, [r4, #0x20]
+ cmp r5, #0
+ beq _0224FE0E
+ ldr r0, _0224FE44 ; =0x021C48B8
+ ldr r0, [r0, #0x44]
+ cmp r0, #0
+ bne _0224FE0A
+ ldr r2, _0224FE48 ; =0x000004F8
+ mov r0, #1
+ str r0, [r3, r2]
+ add r0, r1, #0
+ add r1, r2, #0
+ add r2, r2, #4
+ sub r1, #8
+ ldr r2, [r3, r2]
+ add r1, r3, r1
+ bl MOD18_0224FCD8
+_0224FE0A:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224FE0E:
+ ldrh r4, [r4, #0x22]
+ cmp r4, #0
+ beq _0224FE30
+ ldr r2, _0224FE48 ; =0x000004F8
+ ldr r0, [r3, r2]
+ cmp r0, #0
+ beq _0224FE2C
+ add r0, r1, #0
+ add r1, r2, #0
+ add r2, r2, #4
+ sub r1, #8
+ ldr r2, [r3, r2]
+ add r1, r3, r1
+ bl MOD18_0224FCD8
+_0224FE2C:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224FE30:
+ ldr r1, _0224FE48 ; =0x000004F8
+ ldr r4, [r3, r1]
+ cmp r4, #0
+ beq _0224FE3E
+ str r0, [r3, r1]
+ mov r1, #1
+ str r1, [r2]
+_0224FE3E:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224FE40: .word 0x021C48F8
+_0224FE44: .word 0x021C48B8
+_0224FE48: .word 0x000004F8
+ thumb_func_end MOD18_0224FDDC
+
+ thumb_func_start MOD18_0224FE4C
+MOD18_0224FE4C: ; 0x0224FE4C
+ push {r4, lr}
+ add r3, r0, #0
+ mov r0, #0
+ ldr r4, _0224FE88 ; =0x021C48F8
+ str r0, [r2]
+ ldrh r4, [r4, #0x20]
+ cmp r4, #0
+ beq _0224FE80
+ ldr r0, _0224FE8C ; =0x021C48B8
+ ldr r0, [r0, #0x44]
+ cmp r0, #0
+ bne _0224FE7C
+ ldr r4, _0224FE90 ; =0x000004F8
+ mov r0, #1
+ str r0, [r3, r4]
+ str r0, [r2]
+ add r0, r1, #0
+ add r1, r4, #0
+ add r2, r4, #4
+ sub r1, #8
+ ldr r2, [r3, r2]
+ add r1, r3, r1
+ bl MOD18_0224FCD8
+_0224FE7C:
+ mov r0, #1
+ pop {r4, pc}
+_0224FE80:
+ ldr r1, _0224FE90 ; =0x000004F8
+ str r0, [r3, r1]
+ pop {r4, pc}
+ nop
+_0224FE88: .word 0x021C48F8
+_0224FE8C: .word 0x021C48B8
+_0224FE90: .word 0x000004F8
+ thumb_func_end MOD18_0224FE4C
+
+ thumb_func_start MOD18_0224FE94
+MOD18_0224FE94: ; 0x0224FE94
+ push {r3, r4, r5, lr}
+ add r3, r0, #0
+ mov r0, #0
+ ldr r4, _0224FEF4 ; =0x021C48F8
+ str r0, [r2]
+ ldrh r5, [r4, #0x20]
+ cmp r5, #0
+ beq _0224FEC4
+ ldr r0, _0224FEF8 ; =0x021C48B8
+ ldr r0, [r0, #0x44]
+ cmp r0, #0
+ bne _0224FEC0
+ ldr r2, _0224FEFC ; =0x000004F8
+ mov r0, #1
+ str r0, [r3, r2]
+ add r0, r1, #0
+ add r1, r3, #0
+ sub r2, #8
+ add r1, #0x3c
+ add r2, r3, r2
+ bl MOD18_0224FC18
+_0224FEC0:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224FEC4:
+ ldrh r4, [r4, #0x22]
+ cmp r4, #0
+ beq _0224FEE4
+ ldr r2, _0224FEFC ; =0x000004F8
+ ldr r0, [r3, r2]
+ cmp r0, #0
+ beq _0224FEE0
+ add r0, r1, #0
+ add r1, r3, #0
+ sub r2, #8
+ add r1, #0x3c
+ add r2, r3, r2
+ bl MOD18_0224FC18
+_0224FEE0:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0224FEE4:
+ ldr r1, _0224FEFC ; =0x000004F8
+ ldr r4, [r3, r1]
+ cmp r4, #0
+ beq _0224FEF2
+ str r0, [r3, r1]
+ mov r1, #1
+ str r1, [r2]
+_0224FEF2:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0224FEF4: .word 0x021C48F8
+_0224FEF8: .word 0x021C48B8
+_0224FEFC: .word 0x000004F8
+ thumb_func_end MOD18_0224FE94
+
+ thumb_func_start MOD18_0224FF00
+MOD18_0224FF00: ; 0x0224FF00
+ mov r2, #0
+ str r2, [r0, #4]
+ ldr r1, _0224FF10 ; =0x0000FFFF
+ str r2, [r0, #8]
+ str r1, [r0]
+ str r2, [r0, #0xc]
+ str r2, [r0, #0x10]
+ bx lr
+ .align 2, 0
+_0224FF10: .word 0x0000FFFF
+ thumb_func_end MOD18_0224FF00
+
+ thumb_func_start MOD18_0224FF14
+MOD18_0224FF14: ; 0x0224FF14
+ mov r3, #0
+ str r3, [r2, #4]
+ str r1, [r2, #8]
+ str r0, [r2]
+ str r3, [r2, #0xc]
+ mov r0, #1
+ str r0, [r2, #0x10]
+ bx lr
+ thumb_func_end MOD18_0224FF14
+
+ thumb_func_start MOD18_0224FF24
+MOD18_0224FF24: ; 0x0224FF24
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0x10]
+ cmp r1, #0
+ beq _0224FF60
+ ldr r1, [r4, #4]
+ add r2, r1, #1
+ str r2, [r4, #4]
+ ldr r1, [r4, #8]
+ cmp r2, r1
+ blt _0224FF60
+ mov r1, #0
+ str r1, [r4, #4]
+ ldr r1, [r4, #0xc]
+ add r0, #0xa0
+ add r1, r1, #1
+ lsr r3, r1, #0x1f
+ lsl r2, r1, #0x1f
+ sub r2, r2, r3
+ mov r1, #0x1f
+ ror r2, r1
+ add r1, r3, r2
+ str r1, [r4, #0xc]
+ ldr r0, [r0]
+ ldr r1, [r4]
+ bl MOD05_021E7EEC
+ ldr r1, [r4, #0xc]
+ bl MOD05_021E7EC0
+_0224FF60:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224FF24
+
+ thumb_func_start MOD18_0224FF64
+MOD18_0224FF64: ; 0x0224FF64
+ push {r3, lr}
+ ldr r2, [r1, #0x10]
+ cmp r2, #0
+ beq _0224FF7C
+ add r0, #0xa0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl MOD05_021E7EEC
+ mov r1, #0
+ bl MOD05_021E7EC0
+_0224FF7C:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD18_0224FF64
+
+ thumb_func_start MOD18_0224FF80
+MOD18_0224FF80: ; 0x0224FF80
+ ldr r0, [r0]
+ bx lr
+ thumb_func_end MOD18_0224FF80
+
+ thumb_func_start MOD18_0224FF84
+MOD18_0224FF84: ; 0x0224FF84
+ ldr r3, _0224FF8C ; =MOD18_0224FB9C
+ add r0, r2, #0
+ bx r3
+ nop
+_0224FF8C: .word MOD18_0224FB9C
+ thumb_func_end MOD18_0224FF84
+
+ thumb_func_start MOD18_0224FF90
+MOD18_0224FF90: ; 0x0224FF90
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD18_0224FF90
+
+ thumb_func_start MOD18_0224FF94
+MOD18_0224FF94: ; 0x0224FF94
+ ldr r3, _0224FF9C ; =MOD18_0224FBC8
+ add r0, r2, #0
+ bx r3
+ nop
+_0224FF9C: .word MOD18_0224FBC8
+ thumb_func_end MOD18_0224FF94
+
+ thumb_func_start MOD18_0224FFA0
+MOD18_0224FFA0: ; 0x0224FFA0
+ push {r3, r4, r5, lr}
+ sub sp, #0x30
+ ldr r0, [r2, #0x6c]
+ cmp r0, #0
+ beq _0224FFD6
+ ldr r5, _0224FFDC ; =0x02250834
+ add r4, sp, #0xc
+ mov r3, #4
+_0224FFB0:
+ ldmia r5!, {r0, r1}
+ stmia r4!, {r0, r1}
+ sub r3, r3, #1
+ bne _0224FFB0
+ ldr r0, [r5]
+ ldr r5, _0224FFE0 ; =0x022507F0
+ str r0, [r4]
+ add r4, sp, #0
+ ldmia r5!, {r0, r1}
+ add r3, r4, #0
+ stmia r4!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r4]
+ add r0, r2, #0
+ add r2, #0x58
+ add r1, r2, #0
+ add r2, sp, #0xc
+ bl FUN_0201B26C
+_0224FFD6:
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+ nop
+_0224FFDC: .word 0x02250834
+_0224FFE0: .word 0x022507F0
+ thumb_func_end MOD18_0224FFA0
+
+ .section .rodata
+ ; 0x0224FFE4
+ .incbin "baserom.nds", 0x281B44, 0x874
+
+ .section .data
+ ; 0x02250860
+ .incbin "baserom.nds", 0x2823C0, 0xB20
+
+ .section .bss
+ ; 0x02251380
+ .space 0x80
diff --git a/arm9/modules/19/asm/module_19.s b/arm9/modules/19/asm/module_19.s
new file mode 100644
index 00000000..52c045cc
--- /dev/null
+++ b/arm9/modules/19/asm/module_19.s
@@ -0,0 +1,106 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD19_02252440
+MOD19_02252440: ; 0x02252440
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #3
+ mov r1, #8
+ lsl r2, r0, #0xf
+ bl FUN_0201681C
+ mov r0, #0
+ bl GXS_SetGraphicsMode
+ mov r0, #0x80
+ bl GX_SetBankForSubBG
+ mov r0, #1
+ lsl r0, r0, #8
+ bl GX_SetBankForSubOBJ
+ ldr r2, _022524E0 ; =0x04001000
+ ldr r0, _022524E4 ; =0xFFCFFFEF
+ ldr r1, [r2]
+ mov r3, #0
+ and r1, r0
+ mov r0, #0x10
+ orr r0, r1
+ str r0, [r2]
+ ldr r2, _022524E8 ; =0x02252508
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ mov r0, #0xc
+ mov r1, #0xa
+ add r2, r4, #0
+ mov r3, #4
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ mov r0, #0xc
+ mov r1, #0xb
+ add r2, r4, #0
+ mov r3, #4
+ bl FUN_020068C8
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #0xc
+ add r1, r0, #0
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ ldr r2, _022524E0 ; =0x04001000
+ ldr r0, _022524EC ; =0xFFFF1FFF
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ ldr r1, [r2]
+ ldr r0, _022524F0 ; =0xFFFFE0FF
+ and r1, r0
+ lsr r0, r2, #0x12
+ orr r0, r1
+ str r0, [r2]
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_022524E0: .word 0x04001000
+_022524E4: .word 0xFFCFFFEF
+_022524E8: .word 0x02252508
+_022524EC: .word 0xFFFF1FFF
+_022524F0: .word 0xFFFFE0FF
+ thumb_func_end MOD19_02252440
+
+ thumb_func_start MOD19_022524F4
+MOD19_022524F4: ; 0x022524F4
+ push {r3, lr}
+ mov r1, #4
+ bl FUN_020178A0
+ mov r0, #8
+ bl FUN_020168D0
+ pop {r3, pc}
+ thumb_func_end MOD19_022524F4
+
+ thumb_func_start MOD19_02252504
+MOD19_02252504: ; 0x02252504
+ mov r0, #1
+ bx lr
+ thumb_func_end MOD19_02252504
+
+ .section .rodata
+ ; 0x02252508
+ .incbin "baserom.nds", 0x2830C8, 0x1c
diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s
new file mode 100644
index 00000000..2975c2d8
--- /dev/null
+++ b/arm9/modules/20/asm/module_20.s
@@ -0,0 +1,4570 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 2, 0
+
+ thumb_func_start MOD20_02252440
+MOD20_02252440: ; 0x02252440
+ ldr r3, _02252444 ; =FUN_02037790
+ bx r3
+ .align 2, 0
+_02252444: .word FUN_02037790
+ thumb_func_end MOD20_02252440
+
+ thumb_func_start MOD20_02252448
+MOD20_02252448: ; 0x02252448
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #3
+ str r2, [sp]
+ mov r1, #7
+ lsl r2, r0, #0xe
+ add r7, r3, #0
+ bl FUN_0201681C
+ mov r0, #3
+ mov r1, #8
+ lsl r2, r0, #0xe
+ bl FUN_0201681C
+ mov r0, #7
+ mov r1, #0x60
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _022524B2
+ str r4, [r5]
+ ldr r0, [sp]
+ str r6, [r4, #0x5c]
+ str r0, [r4, #0x54]
+ bl FUN_0204C1A8
+ str r0, [r4, #0x58]
+ ldr r0, [sp, #0x18]
+ str r7, [r4, #0x4c]
+ str r0, [r4, #0x50]
+ add r0, r4, #0
+ bl MOD20_0225253C
+ cmp r0, #0
+ beq _022524B2
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ ldr r0, _022524B4 ; =MOD20_022525F0
+ str r5, [r4, #0x34]
+ add r1, r4, #0
+ mov r2, #4
+ bl FUN_0200CA44
+ str r0, [r4, #0x38]
+ ldr r0, _022524B8 ; =MOD20_0225259C
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+_022524B2:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022524B4: .word MOD20_022525F0
+_022524B8: .word MOD20_0225259C
+ thumb_func_end MOD20_02252448
+
+ thumb_func_start MOD20_022524BC
+MOD20_022524BC: ; 0x022524BC
+ push {r3, lr}
+ ldrb r1, [r0]
+ cmp r1, #3
+ beq _022524CE
+ cmp r1, #4
+ beq _022524CE
+ mov r1, #3
+ bl MOD20_022525F8
+_022524CE:
+ pop {r3, pc}
+ thumb_func_end MOD20_022524BC
+
+ thumb_func_start MOD20_022524D0
+MOD20_022524D0: ; 0x022524D0
+ cmp r0, #0
+ bne _022524D8
+ mov r0, #1
+ bx lr
+_022524D8:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD20_022524D0
+
+ thumb_func_start MOD20_022524DC
+MOD20_022524DC: ; 0x022524DC
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r1, #5
+ bhi _0225252E
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022524F0: ; jump table
+ .short _0225252E - _022524F0 - 2 ; case 0
+ .short _022524FC - _022524F0 - 2 ; case 1
+ .short _0225252E - _022524F0 - 2 ; case 2
+ .short _0225252E - _022524F0 - 2 ; case 3
+ .short _0225251E - _022524F0 - 2 ; case 4
+ .short _02252502 - _022524F0 - 2 ; case 5
+_022524FC:
+ mov r0, #1
+ strb r0, [r4, #4]
+ pop {r4, pc}
+_02252502:
+ ldr r0, [r4, #0x58]
+ bl FUN_0204BF84
+ add r1, r0, #1
+ ldr r0, _02252530 ; =0x0001869F
+ cmp r1, r0
+ bls _02252512
+ mov r1, #0
+_02252512:
+ ldr r0, [r4, #0x58]
+ bl FUN_0204BF88
+ mov r0, #1
+ strb r0, [r4, #7]
+ pop {r4, pc}
+_0225251E:
+ ldrb r0, [r4, #2]
+ cmp r0, #2
+ bne _0225252E
+ ldr r1, [r4, #0x44]
+ cmp r1, #0
+ beq _0225252E
+ ldr r0, [r4, #0x48]
+ blx r1
+_0225252E:
+ pop {r4, pc}
+ .align 2, 0
+_02252530: .word 0x0001869F
+ thumb_func_end MOD20_022524DC
+
+ thumb_func_start MOD20_02252534
+MOD20_02252534: ; 0x02252534
+ ldrb r0, [r0, #3]
+ bx lr
+ thumb_func_end MOD20_02252534
+
+ thumb_func_start MOD20_02252538
+MOD20_02252538: ; 0x02252538
+ ldr r0, [r0, #0x14]
+ bx lr
+ thumb_func_end MOD20_02252538
+
+ thumb_func_start MOD20_0225253C
+MOD20_0225253C: ; 0x0225253C
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r2, [r4, #0x50]
+ add r0, #0x1c
+ add r1, #0x20
+ add r3, r4, #0
+ bl MOD20_02252C5C
+ cmp r0, #0
+ beq _02252578
+ mov r1, #0
+ strb r1, [r4]
+ strb r1, [r4, #1]
+ strb r1, [r4, #3]
+ strb r1, [r4, #4]
+ strb r1, [r4, #7]
+ strb r1, [r4, #5]
+ strb r1, [r4, #6]
+ sub r0, r1, #1
+ str r0, [r4, #0x14]
+ strb r1, [r4, #2]
+ add r0, r4, #0
+ str r1, [r4, #8]
+ bl MOD20_022529C4
+ cmp r0, #0
+ beq _02252578
+ mov r0, #1
+ pop {r4, pc}
+_02252578:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD20_0225253C
+
+ thumb_func_start MOD20_0225257C
+MOD20_0225257C: ; 0x0225257C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl MOD20_02252A08
+ add r0, r4, #0
+ bl MOD20_022528FC
+ ldr r0, [r4, #0x1c]
+ bl MOD20_02252E18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD20_0225257C
+
+ thumb_func_start MOD20_0225259C
+MOD20_0225259C: ; 0x0225259C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #4
+ bhs _022525C0
+ cmp r0, #0
+ beq _022525B2
+ add r0, r4, #0
+ bl MOD20_02252A14
+_022525B2:
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _022525EC ; =0x022544CC
+ ldr r1, [r1, r2]
+ blx r1
+ pop {r3, r4, r5, pc}
+_022525C0:
+ beq _022525C6
+ bl ErrorHandling
+_022525C6:
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ str r1, [r0]
+ add r0, r4, #0
+ bl MOD20_0225257C
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ mov r0, #7
+ bl FUN_020168D0
+ mov r0, #8
+ bl FUN_020168D0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022525EC: .word 0x022544CC
+ thumb_func_end MOD20_0225259C
+
+ thumb_func_start MOD20_022525F0
+MOD20_022525F0: ; 0x022525F0
+ mov r0, #0
+ strb r0, [r1, #4]
+ strb r0, [r1, #7]
+ bx lr
+ thumb_func_end MOD20_022525F0
+
+ thumb_func_start MOD20_022525F8
+MOD20_022525F8: ; 0x022525F8
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ thumb_func_end MOD20_022525F8
+
+ thumb_func_start MOD20_02252600
+MOD20_02252600: ; 0x02252600
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #3
+ bhi _02252684
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02252616: ; jump table
+ .short _0225261E - _02252616 - 2 ; case 0
+ .short _0225262E - _02252616 - 2 ; case 1
+ .short _0225265A - _02252616 - 2 ; case 2
+ .short _02252670 - _02252616 - 2 ; case 3
+_0225261E:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ bl MOD20_02252E80
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ pop {r3, r4, r5, pc}
+_0225262E:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ bl MOD20_02252EA4
+ cmp r0, #0
+ beq _02252684
+ ldr r0, [r4, #0x58]
+ bl FUN_0204BF14
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD20_022528B0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD20_02252918
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ pop {r3, r4, r5, pc}
+_0225265A:
+ bl MOD20_0225293C
+ cmp r0, #0
+ beq _02252684
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl MOD20_02252E80
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+_02252670:
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ bl MOD20_02252EA4
+ cmp r0, #0
+ beq _02252684
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD20_022525F8
+_02252684:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02252600
+
+ thumb_func_start MOD20_02252688
+MOD20_02252688: ; 0x02252688
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #4
+ bls _02252694
+ b _022527AA
+_02252694:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022526A0: ; jump table
+ .short _022526AA - _022526A0 - 2 ; case 0
+ .short _022526D4 - _022526A0 - 2 ; case 1
+ .short _0225271A - _022526A0 - 2 ; case 2
+ .short _02252750 - _022526A0 - 2 ; case 3
+ .short _0225276C - _022526A0 - 2 ; case 4
+_022526AA:
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _022527AA
+ ldr r0, [r4, #8]
+ cmp r0, #3
+ beq _022526BC
+ cmp r0, #5
+ bne _022527AA
+_022526BC:
+ mov r0, #0
+ str r0, [r4, #0xc]
+ mov r0, #1
+ strb r0, [r4, #5]
+ ldr r0, [r4, #0x1c]
+ mov r1, #4
+ bl MOD20_02252E80
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ pop {r4, pc}
+_022526D4:
+ ldr r0, [r4, #8]
+ cmp r0, #3
+ beq _022526DE
+ cmp r0, #5
+ bne _022526E2
+_022526DE:
+ mov r0, #1
+ str r0, [r4, #0xc]
+_022526E2:
+ ldr r0, [r4, #0x1c]
+ bl MOD20_02252EB0
+ cmp r0, #0
+ beq _022527AA
+ ldr r0, [r4, #0x58]
+ bl FUN_0204BF1C
+ str r0, [r4, #0x20]
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _02252710
+ ldr r0, [r4, #0x1c]
+ mov r1, #9
+ bl MOD20_02252E80
+ mov r0, #0x1e
+ str r0, [r4, #0x10]
+ mov r0, #0
+ str r0, [r4, #0xc]
+ mov r0, #4
+ strb r0, [r4, #1]
+ pop {r4, pc}
+_02252710:
+ mov r0, #3
+ str r0, [r4, #0x10]
+ mov r0, #2
+ strb r0, [r4, #1]
+ pop {r4, pc}
+_0225271A:
+ ldr r1, [r4, #8]
+ cmp r1, #3
+ beq _02252724
+ cmp r1, #5
+ bne _0225273A
+_02252724:
+ ldr r0, [r4, #0x1c]
+ mov r1, #9
+ bl MOD20_02252E80
+ mov r0, #0x1e
+ str r0, [r4, #0x10]
+ mov r0, #0
+ str r0, [r4, #0xc]
+ mov r0, #4
+ strb r0, [r4, #1]
+ pop {r4, pc}
+_0225273A:
+ ldr r1, [r4, #0x10]
+ cmp r1, #0
+ beq _02252746
+ sub r0, r1, #1
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+_02252746:
+ bl MOD20_0225294C
+ mov r0, #3
+ strb r0, [r4, #1]
+ pop {r4, pc}
+_02252750:
+ bl MOD20_02252968
+ cmp r0, #0
+ beq _022527AA
+ add r0, r4, #0
+ bl MOD20_022528FC
+ bl FUN_020893E0
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD20_022525F8
+ pop {r4, pc}
+_0225276C:
+ ldr r0, [r4, #8]
+ cmp r0, #3
+ beq _02252776
+ cmp r0, #5
+ bne _0225278C
+_02252776:
+ ldr r0, [r4, #0x58]
+ bl FUN_0204BF1C
+ str r0, [r4, #0x20]
+ mov r0, #0x1e
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xa
+ bl MOD20_02252E80
+ pop {r4, pc}
+_0225278C:
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _02252798
+ sub r0, r0, #1
+ str r0, [r4, #0x10]
+ pop {r4, pc}
+_02252798:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xb
+ bl MOD20_02252E80
+ add r0, r4, #0
+ bl MOD20_0225294C
+ mov r0, #3
+ strb r0, [r4, #1]
+_022527AA:
+ pop {r4, pc}
+ thumb_func_end MOD20_02252688
+
+ thumb_func_start MOD20_022527AC
+MOD20_022527AC: ; 0x022527AC
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _022527C0
+ cmp r1, #1
+ beq _022527E4
+ cmp r1, #2
+ beq _022527FC
+ pop {r3, r4, r5, pc}
+_022527C0:
+ mov r0, #1
+ strb r0, [r4, #6]
+ ldr r0, [r4, #0x58]
+ bl FUN_0204BF14
+ add r5, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD20_022528B0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD20_02252918
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ pop {r3, r4, r5, pc}
+_022527E4:
+ bl MOD20_0225293C
+ cmp r0, #0
+ beq _02252816
+ ldr r0, [r4, #0x1c]
+ mov r1, #2
+ bl MOD20_02252E80
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ pop {r3, r4, r5, pc}
+_022527FC:
+ ldr r0, [r4, #0x1c]
+ mov r1, #2
+ bl MOD20_02252EA4
+ cmp r0, #0
+ beq _02252816
+ mov r0, #0
+ strb r0, [r4, #5]
+ strb r0, [r4, #6]
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD20_022525F8
+_02252816:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_022527AC
+
+ thumb_func_start MOD20_02252818
+MOD20_02252818: ; 0x02252818
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #3
+ bhi _022528AC
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0225282E: ; jump table
+ .short _02252836 - _0225282E - 2 ; case 0
+ .short _02252866 - _0225282E - 2 ; case 1
+ .short _0225287A - _0225282E - 2 ; case 2
+ .short _02252890 - _0225282E - 2 ; case 3
+_02252836:
+ ldrb r1, [r4, #2]
+ cmp r1, #3
+ bhi _022528AC
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02252848: ; jump table
+ .short _02252860 - _02252848 - 2 ; case 0
+ .short _02252850 - _02252848 - 2 ; case 1
+ .short _02252856 - _02252848 - 2 ; case 2
+ .short _02252860 - _02252848 - 2 ; case 3
+_02252850:
+ mov r0, #1
+ strb r0, [r4, #1]
+ pop {r4, pc}
+_02252856:
+ bl MOD20_0225294C
+ mov r0, #2
+ strb r0, [r4, #1]
+ pop {r4, pc}
+_02252860:
+ mov r0, #2
+ strb r0, [r4, #1]
+ pop {r4, pc}
+_02252866:
+ bl MOD20_0225293C
+ cmp r0, #0
+ beq _022528AC
+ add r0, r4, #0
+ bl MOD20_0225294C
+ mov r0, #2
+ strb r0, [r4, #1]
+ pop {r4, pc}
+_0225287A:
+ bl MOD20_02252968
+ cmp r0, #0
+ beq _022528AC
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xe
+ bl MOD20_02252E80
+ mov r0, #3
+ strb r0, [r4, #1]
+ pop {r4, pc}
+_02252890:
+ ldr r0, [r4, #0x1c]
+ bl MOD20_02252EB0
+ cmp r0, #0
+ beq _022528AC
+ add r0, r4, #0
+ bl MOD20_022528FC
+ bl FUN_0201CD04
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD20_022525F8
+_022528AC:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02252818
+
+ thumb_func_start MOD20_022528B0
+MOD20_022528B0: ; 0x022528B0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bmi _022528BC
+ cmp r4, #0x19
+ blo _022528C0
+_022528BC:
+ bl ErrorHandling
+_022528C0:
+ mov r0, #0
+ ldr r1, [r5, #0x14]
+ mvn r0, r0
+ cmp r1, r0
+ bne _022528F0
+ ldr r2, _022528F4 ; =0x022544DC
+ mov r1, #0
+_022528CE:
+ ldr r0, [r2]
+ cmp r4, r0
+ bne _022528E8
+ ldr r0, _022528F8 ; =0x022544E0
+ lsl r1, r1, #3
+ ldr r6, [r0, r1]
+ mov r1, #2
+ add r0, r6, #0
+ bl HandleLoadOverlay
+ str r4, [r5, #0x14]
+ str r6, [r5, #0x18]
+ pop {r4, r5, r6, pc}
+_022528E8:
+ add r1, r1, #1
+ add r2, #8
+ cmp r1, #0x19
+ blo _022528CE
+_022528F0:
+ pop {r4, r5, r6, pc}
+ nop
+_022528F4: .word 0x022544DC
+_022528F8: .word 0x022544E0
+ thumb_func_end MOD20_022528B0
+
+ thumb_func_start MOD20_022528FC
+MOD20_022528FC: ; 0x022528FC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ ldr r1, [r4, #0x14]
+ mvn r0, r0
+ cmp r1, r0
+ beq _02252916
+ ldr r0, [r4, #0x18]
+ bl UnloadOverlayByID
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4, #0x14]
+_02252916:
+ pop {r4, pc}
+ thumb_func_end MOD20_022528FC
+
+ thumb_func_start MOD20_02252918
+MOD20_02252918: ; 0x02252918
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #2]
+ cmp r0, #0
+ beq _02252926
+ bl ErrorHandling
+_02252926:
+ add r0, r4, #0
+ ldr r2, [r4, #0x4c]
+ ldr r3, [r4, #0x14]
+ ldr r5, [r4, #0x3c]
+ add r0, #0x24
+ add r1, r4, #0
+ blx r5
+ mov r0, #1
+ strb r0, [r4, #2]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02252918
+
+ thumb_func_start MOD20_0225293C
+MOD20_0225293C: ; 0x0225293C
+ ldrb r0, [r0, #2]
+ cmp r0, #2
+ bne _02252946
+ mov r0, #1
+ bx lr
+_02252946:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_0225293C
+
+ thumb_func_start MOD20_0225294C
+MOD20_0225294C: ; 0x0225294C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #2]
+ cmp r0, #2
+ beq _0225295A
+ bl ErrorHandling
+_0225295A:
+ ldr r0, [r4, #0x24]
+ ldr r1, [r4, #0x40]
+ blx r1
+ mov r0, #3
+ strb r0, [r4, #2]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD20_0225294C
+
+ thumb_func_start MOD20_02252968
+MOD20_02252968: ; 0x02252968
+ ldrb r0, [r0, #2]
+ cmp r0, #0
+ bne _02252972
+ mov r0, #1
+ bx lr
+_02252972:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_02252968
+
+ thumb_func_start MOD20_02252978
+MOD20_02252978: ; 0x02252978
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD20_02252440
+ str r5, [r0, #0x3c]
+ str r4, [r0, #0x40]
+ mov r1, #0
+ str r1, [r0, #0x44]
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_02252978
+
+ thumb_func_start MOD20_0225298C
+MOD20_0225298C: ; 0x0225298C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #2]
+ cmp r0, #1
+ beq _0225299A
+ bl ErrorHandling
+_0225299A:
+ mov r0, #2
+ strb r0, [r4, #2]
+ pop {r4, pc}
+ thumb_func_end MOD20_0225298C
+
+ thumb_func_start MOD20_022529A0
+MOD20_022529A0: ; 0x022529A0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #2]
+ cmp r0, #3
+ beq _022529AE
+ bl ErrorHandling
+_022529AE:
+ mov r0, #0
+ strb r0, [r4, #2]
+ pop {r4, pc}
+ thumb_func_end MOD20_022529A0
+
+ thumb_func_start MOD20_022529B4
+MOD20_022529B4: ; 0x022529B4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD20_02252440
+ str r5, [r0, #0x44]
+ str r4, [r0, #0x48]
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_022529B4
+
+ thumb_func_start MOD20_022529C4
+MOD20_022529C4: ; 0x022529C4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mov r0, #7
+ str r0, [sp]
+ ldr r0, _02252A00 ; =0x022544C4
+ ldr r2, _02252A04 ; =MOD20_02252A24
+ mov r1, #2
+ add r3, r4, #0
+ bl MOD20_02254130
+ str r0, [r4, #0x28]
+ cmp r0, #0
+ beq _022529F8
+ mov r1, #0
+ add r2, r1, #0
+ mov r3, #7
+ bl MOD20_022542AC
+ mov r0, #0
+ mvn r0, r0
+ str r0, [r4, #0x2c]
+ str r0, [r4, #0x30]
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, pc}
+_022529F8:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_02252A00: .word 0x022544C4
+_02252A04: .word MOD20_02252A24
+ thumb_func_end MOD20_022529C4
+
+ thumb_func_start MOD20_02252A08
+MOD20_02252A08: ; 0x02252A08
+ ldr r3, _02252A10 ; =MOD20_02254198
+ ldr r0, [r0, #0x28]
+ bx r3
+ nop
+_02252A10: .word MOD20_02254198
+ thumb_func_end MOD20_02252A08
+
+ thumb_func_start MOD20_02252A14
+MOD20_02252A14: ; 0x02252A14
+ ldr r3, _02252A20 ; =MOD20_022541B4
+ mov r1, #0
+ str r1, [r0, #8]
+ ldr r0, [r0, #0x28]
+ bx r3
+ nop
+_02252A20: .word MOD20_022541B4
+ thumb_func_end MOD20_02252A14
+
+ thumb_func_start MOD20_02252A24
+MOD20_02252A24: ; 0x02252A24
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r3, #0
+ add r4, r0, #0
+ add r0, r5, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02252A4C
+ cmp r7, #0
+ beq _02252A46
+ cmp r7, #1
+ bne _02252A50
+ mov r0, #1
+ strb r0, [r5, #3]
+ b _02252A50
+_02252A46:
+ mov r0, #0
+ strb r0, [r5, #3]
+ b _02252A50
+_02252A4C:
+ mov r0, #0
+ strb r0, [r5, #3]
+_02252A50:
+ cmp r4, #1
+ bne _02252A6A
+ add r0, r5, #0
+ bl MOD20_02252C08
+ cmp r0, #0
+ beq _02252AEA
+ cmp r7, #1
+ bne _02252AEA
+ ldr r0, _02252AEC ; =0x0000066E
+ bl FUN_020054C8
+ pop {r3, r4, r5, r6, r7, pc}
+_02252A6A:
+ mov r4, #0
+ mvn r4, r4
+ cmp r7, #0
+ beq _02252A78
+ cmp r7, #1
+ beq _02252A7C
+ b _02252A94
+_02252A78:
+ mov r4, #8
+ b _02252A94
+_02252A7C:
+ add r0, r5, #0
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02252A8C
+ ldrb r0, [r5, #6]
+ cmp r0, #0
+ beq _02252A92
+_02252A8C:
+ mov r4, #6
+ mov r6, #0
+ b _02252A94
+_02252A92:
+ mov r4, #7
+_02252A94:
+ mov r0, #0
+ ldr r1, [r5, #0x2c]
+ mvn r0, r0
+ cmp r1, r0
+ beq _02252AA4
+ add r0, r4, #0
+ add r4, r1, #0
+ str r0, [r5, #0x2c]
+_02252AA4:
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ beq _02252AC0
+ ldr r0, [r5, #0x1c]
+ add r1, r4, #0
+ bl MOD20_02252AF0
+ cmp r0, #0
+ beq _02252AC0
+ sub r0, r4, #6
+ cmp r0, #1
+ bhi _02252AC0
+ str r4, [r5, #0x30]
+_02252AC0:
+ cmp r6, #2
+ beq _02252AE0
+ cmp r6, #3
+ beq _02252AD6
+ cmp r6, #5
+ bne _02252AE8
+ ldr r0, [r5, #0x28]
+ mov r1, #0
+ bl MOD20_022542CC
+ b _02252AE8
+_02252AD6:
+ ldr r0, [r5, #0x30]
+ cmp r0, #6
+ bne _02252AE8
+ mov r6, #0
+ b _02252AE8
+_02252AE0:
+ ldr r0, [r5, #0x30]
+ cmp r0, #7
+ bne _02252AE8
+ mov r6, #3
+_02252AE8:
+ str r6, [r5, #8]
+_02252AEA:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02252AEC: .word 0x0000066E
+ thumb_func_end MOD20_02252A24
+
+ thumb_func_start MOD20_02252AF0
+MOD20_02252AF0: ; 0x02252AF0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+_02252AF8:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD20_02252EA4
+ cmp r0, #0
+ bne _02252B08
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_02252B08:
+ add r4, r4, #1
+ cmp r4, #3
+ blo _02252AF8
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD20_02252E80
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02252AF0
+
+ thumb_func_start MOD20_02252B1C
+MOD20_02252B1C: ; 0x02252B1C
+ push {r3, lr}
+ bl MOD20_02252440
+ ldr r0, [r0, #0x1c]
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02252B1C
+
+ thumb_func_start MOD20_02252B28
+MOD20_02252B28: ; 0x02252B28
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_02252440
+ ldrb r1, [r0, #5]
+ cmp r1, #0
+ bne _02252B46
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02252B46
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020054C8
+_02252B46:
+ pop {r4, pc}
+ thumb_func_end MOD20_02252B28
+
+ thumb_func_start MOD20_02252B48
+MOD20_02252B48: ; 0x02252B48
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_02252440
+ ldrb r1, [r0, #5]
+ cmp r1, #0
+ bne _02252B66
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02252B66
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02005578
+_02252B66:
+ pop {r4, pc}
+ thumb_func_end MOD20_02252B48
+
+ thumb_func_start MOD20_02252B68
+MOD20_02252B68: ; 0x02252B68
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD20_02252440
+ ldrb r1, [r0, #5]
+ cmp r1, #0
+ bne _02252BB4
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02252BB4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02020AB0
+ cmp r0, #0
+ beq _02252BB4
+ ldr r0, [r5]
+ sub r0, #0x10
+ cmp r0, #0xbf
+ bhs _02252B98
+ mov r1, #1
+ b _02252B9A
+_02252B98:
+ mov r1, #0
+_02252B9A:
+ ldr r0, [r4]
+ sub r0, #0x10
+ cmp r0, #0x9f
+ bhs _02252BA6
+ mov r0, #1
+ b _02252BA8
+_02252BA6:
+ mov r0, #0
+_02252BA8:
+ tst r0, r1
+ beq _02252BB0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02252BB0:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02252BB4:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_02252B68
+
+ thumb_func_start MOD20_02252BB8
+MOD20_02252BB8: ; 0x02252BB8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD20_02252440
+ ldrb r1, [r0, #5]
+ cmp r1, #0
+ bne _02252C04
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02252C04
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02020ACC
+ cmp r0, #0
+ beq _02252C04
+ ldr r0, [r5]
+ sub r0, #0x10
+ cmp r0, #0xbf
+ bhs _02252BE8
+ mov r1, #1
+ b _02252BEA
+_02252BE8:
+ mov r1, #0
+_02252BEA:
+ ldr r0, [r4]
+ sub r0, #0x10
+ cmp r0, #0x9f
+ bhs _02252BF6
+ mov r0, #1
+ b _02252BF8
+_02252BF6:
+ mov r0, #0
+_02252BF8:
+ tst r0, r1
+ beq _02252C00
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02252C00:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02252C04:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_02252BB8
+
+ thumb_func_start MOD20_02252C08
+MOD20_02252C08: ; 0x02252C08
+ ldr r3, _02252C10 ; =FUN_0204646C
+ ldr r0, [r0, #0x5c]
+ bx r3
+ nop
+_02252C10: .word FUN_0204646C
+ thumb_func_end MOD20_02252C08
+
+ thumb_func_start MOD20_02252C14
+MOD20_02252C14: ; 0x02252C14
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02252C2E
+ ldrb r0, [r5, #5]
+ cmp r0, #0
+ bne _02252C2E
+ add r0, r4, #0
+ bl MOD20_022541B4
+_02252C2E:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_02252C14
+
+ thumb_func_start MOD20_02252C30
+MOD20_02252C30: ; 0x02252C30
+ ldrb r0, [r0, #4]
+ bx lr
+ thumb_func_end MOD20_02252C30
+
+ thumb_func_start MOD20_02252C34
+MOD20_02252C34: ; 0x02252C34
+ ldrb r0, [r0, #7]
+ bx lr
+ thumb_func_end MOD20_02252C34
+
+ thumb_func_start MOD20_02252C38
+MOD20_02252C38: ; 0x02252C38
+ ldr r0, [r0, #0x5c]
+ bx lr
+ thumb_func_end MOD20_02252C38
+
+ thumb_func_start MOD20_02252C3C
+MOD20_02252C3C: ; 0x02252C3C
+ ldr r0, [r0, #0x58]
+ bx lr
+ thumb_func_end MOD20_02252C3C
+
+ thumb_func_start MOD20_02252C40
+MOD20_02252C40: ; 0x02252C40
+ ldr r0, [r0, #0x54]
+ bx lr
+ thumb_func_end MOD20_02252C40
+
+ thumb_func_start MOD20_02252C44
+MOD20_02252C44: ; 0x02252C44
+ push {r3, lr}
+ ldr r0, [r0, #0x54]
+ bl FUN_020238F4
+ bl FUN_020239CC
+ cmp r0, #1
+ beq _02252C58
+ mov r0, #1
+ pop {r3, pc}
+_02252C58:
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD20_02252C44
+
+ thumb_func_start MOD20_02252C5C
+MOD20_02252C5C: ; 0x02252C5C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r1, #0xea
+ add r5, r0, #0
+ mov r0, #7
+ lsl r1, r1, #2
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ str r0, [r5]
+ add r4, r0, #0
+ beq _02252D0A
+ mov r0, #0x15
+ lsl r0, r0, #4
+ str r7, [r4, r0]
+ ldr r0, [r4, r0]
+ bl FUN_020B0888
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #7
+ bl MOD20_02253BA4
+ mov r1, #0x55
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bne _02252CA6
+ ldr r0, [r5]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r5]
+ pop {r3, r4, r5, r6, r7, pc}
+_02252CA6:
+ mov r0, #7
+ str r6, [r4]
+ bl FUN_02016B94
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r4, r1]
+ ldr r0, [sp]
+ add r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD20_02252D44
+ mov r1, #0x57
+ lsl r1, r1, #2
+ add r0, r4, r1
+ sub r1, #8
+ ldr r1, [r4, r1]
+ bl MOD20_02253428
+ ldr r0, [r5]
+ mov r1, #8
+ add r0, r0, #4
+ bl MOD20_022536F4
+ ldr r0, [r5]
+ mov r1, #0x88
+ add r0, #0x2c
+ bl MOD20_02252E5C
+ ldr r0, [r5]
+ mov r1, #0x8c
+ add r0, #0x84
+ bl MOD20_02252E5C
+ ldr r0, [r5]
+ mov r1, #0x90
+ add r0, #0xdc
+ bl MOD20_02252E5C
+ ldr r0, _02252D10 ; =MOD20_02252D14
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA98
+ mov r1, #0x56
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02252D0A:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02252D10: .word MOD20_02252D14
+ thumb_func_end MOD20_02252C5C
+
+ thumb_func_start MOD20_02252D14
+MOD20_02252D14: ; 0x02252D14
+ mov r0, #0x55
+ lsl r0, r0, #2
+ ldr r3, _02252D20 ; =MOD20_02253C78
+ ldr r0, [r1, r0]
+ bx r3
+ nop
+_02252D20: .word MOD20_02253C78
+ thumb_func_end MOD20_02252D14
+
+ thumb_func_start MOD20_02252D24
+MOD20_02252D24: ; 0x02252D24
+ push {r3, lr}
+ bl MOD20_02252B1C
+ mov r1, #0x55
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02252D24
+
+ thumb_func_start MOD20_02252D34
+MOD20_02252D34: ; 0x02252D34
+ push {r3, lr}
+ bl MOD20_02252B1C
+ mov r1, #6
+ lsl r1, r1, #6
+ ldr r0, [r0, r1]
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02252D34
+
+ thumb_func_start MOD20_02252D44
+MOD20_02252D44: ; 0x02252D44
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0xc
+ mov r1, #0
+ add r2, sp, #0
+ mov r3, #7
+ bl FUN_02006C08
+ add r4, r0, #0
+ beq _02252D7A
+ ldr r0, [sp]
+ mov r2, #0x62
+ lsl r2, r2, #2
+ add r1, r5, r2
+ ldr r0, [r0, #0xc]
+ add r2, #0x78
+ bl MIi_CpuCopy32
+ mov r1, #0x62
+ lsl r1, r1, #2
+ add r0, r5, r1
+ add r1, #0x78
+ bl DC_FlushRange
+ add r0, r4, #0
+ bl FUN_02016A18
+_02252D7A:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_02252D44
+
+ thumb_func_start MOD20_02252D7C
+MOD20_02252D7C: ; 0x02252D7C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ bl MOD20_02252B1C
+ add r4, r0, #0
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD20_02252C3C
+ bl FUN_0204BF44
+ mov r1, #0x62
+ lsl r1, r1, #2
+ add r5, r4, r1
+ lsl r4, r0, #6
+ add r0, r5, r4
+ lsl r1, r6, #5
+ mov r2, #0x20
+ bl GXS_LoadBGPltt
+ add r0, r5, r4
+ add r1, r7, #0
+ mov r2, #0x20
+ bl GXS_LoadOBJPltt
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD20_02252D7C
+
+ thumb_func_start MOD20_02252DB4
+MOD20_02252DB4: ; 0x02252DB4
+ push {r3, r4, r5, lr}
+ bl MOD20_02252B1C
+ add r4, r0, #0
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD20_02252C3C
+ bl FUN_0204BF44
+ mov r1, #0x62
+ lsl r0, r0, #5
+ lsl r1, r1, #2
+ add r0, #0x10
+ add r4, r4, r1
+ lsl r5, r0, #1
+ add r0, r4, r5
+ mov r1, #0
+ mov r2, #0x20
+ bl GXS_LoadBGPltt
+ add r0, r4, r5
+ mov r1, #0
+ mov r2, #0x20
+ bl GXS_LoadOBJPltt
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_02252DB4
+
+ thumb_func_start MOD20_02252DEC
+MOD20_02252DEC: ; 0x02252DEC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD20_02252B1C
+ add r4, r0, #0
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD20_02252C3C
+ bl FUN_0204BF44
+ mov r1, #0x62
+ lsl r1, r1, #2
+ add r1, r4, r1
+ lsl r0, r0, #6
+ add r0, r1, r0
+ add r1, r5, #0
+ mov r2, #0x20
+ bl MIi_CpuCopy16
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_02252DEC
+
+ thumb_func_start MOD20_02252E18
+MOD20_02252E18: ; 0x02252E18
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02252E58
+ mov r0, #0x57
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD20_022535A4
+ mov r0, #0x55
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02252E36
+ bl MOD20_02253C4C
+_02252E36:
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02252E44
+ bl FUN_02016A18
+_02252E44:
+ mov r0, #0x56
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02252E52
+ bl FUN_0200CAB4
+_02252E52:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02252E58:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02252E18
+
+ thumb_func_start MOD20_02252E5C
+MOD20_02252E5C: ; 0x02252E5C
+ push {r4, r5}
+ mov r2, #0xf
+ ldr r5, _02252E7C ; =0x022545EC
+ mov r4, #0
+ lsl r2, r2, #0xc
+_02252E66:
+ ldrh r3, [r5]
+ add r4, r4, #1
+ add r5, r5, #2
+ add r3, r1, r3
+ orr r3, r2
+ strh r3, [r0]
+ add r0, r0, #2
+ cmp r4, #0x2c
+ blo _02252E66
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+_02252E7C: .word 0x022545EC
+ thumb_func_end MOD20_02252E5C
+
+ thumb_func_start MOD20_02252E80
+MOD20_02252E80: ; 0x02252E80
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, r2, #4
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #7
+ str r0, [sp, #8]
+ ldr r0, _02252EA0 ; =0x02254644
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02252EA0: .word 0x02254644
+ thumb_func_end MOD20_02252E80
+
+ thumb_func_start MOD20_02252EA4
+MOD20_02252EA4: ; 0x02252EA4
+ ldr r3, _02252EAC ; =MOD20_02253794
+ add r0, r0, #4
+ bx r3
+ nop
+_02252EAC: .word MOD20_02253794
+ thumb_func_end MOD20_02252EA4
+
+ thumb_func_start MOD20_02252EB0
+MOD20_02252EB0: ; 0x02252EB0
+ ldr r3, _02252EB8 ; =MOD20_022537B8
+ add r0, r0, #4
+ bx r3
+ nop
+_02252EB8: .word MOD20_022537B8
+ thumb_func_end MOD20_02252EB0
+
+ thumb_func_start MOD20_02252EBC
+MOD20_02252EBC: ; 0x02252EBC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, r0, #4
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02252EBC
+
+ thumb_func_start MOD20_02252ED0
+MOD20_02252ED0: ; 0x02252ED0
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ mov r0, #0
+ bl GXS_SetGraphicsMode
+ mov r0, #0x80
+ bl GX_SetBankForSubBG
+ mov r0, #1
+ lsl r0, r0, #8
+ bl GX_SetBankForSubOBJ
+ ldr r2, _02252FD8 ; =0x04001000
+ ldr r0, _02252FDC ; =0xFFCFFFEF
+ ldr r1, [r2]
+ and r1, r0
+ mov r0, #0x10
+ orr r0, r1
+ str r0, [r2]
+ bl FUN_0201E740
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r2, _02252FE0 ; =0x022545B4
+ mov r1, #4
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ ldr r2, _02252FE4 ; =0x022545D0
+ mov r1, #5
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0x40
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #7
+ str r0, [sp, #0xc]
+ mov r0, #0xc
+ lsl r2, r0, #5
+ ldr r2, [r4, r2]
+ mov r1, #0xe
+ mov r3, #4
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #7
+ str r0, [sp, #0xc]
+ mov r0, #0xc
+ lsl r2, r0, #5
+ ldr r2, [r4, r2]
+ mov r1, #0xf
+ mov r3, #4
+ bl FUN_020068C8
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD20_02252C44
+ add r3, r0, #0
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #7
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0xd
+ mov r2, #4
+ lsl r3, r3, #5
+ bl FUN_02006948
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r1, #0x18
+ str r1, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ lsl r0, r1, #4
+ ldr r0, [r4, r0]
+ mov r1, #5
+ mov r2, #0xd8
+ bl FUN_02018540
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl FUN_02017CD0
+ ldr r0, _02252FD8 ; =0x04001000
+ ldr r1, _02252FE8 ; =0xFFFFE0FF
+ ldr r2, [r0]
+ and r2, r1
+ mov r1, #0x13
+ lsl r1, r1, #8
+ orr r1, r2
+ str r1, [r0]
+ ldr r2, [r0]
+ ldr r1, _02252FEC ; =0xFFFF1FFF
+ and r1, r2
+ str r1, [r0]
+ add r0, r5, #0
+ bl MOD20_02252EBC
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_02252FD8: .word 0x04001000
+_02252FDC: .word 0xFFCFFFEF
+_02252FE0: .word 0x022545B4
+_02252FE4: .word 0x022545D0
+_02252FE8: .word 0xFFFFE0FF
+_02252FEC: .word 0xFFFF1FFF
+ thumb_func_end MOD20_02252ED0
+
+ thumb_func_start MOD20_02252FF0
+MOD20_02252FF0: ; 0x02252FF0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0x10]
+ add r0, r1, #0
+ bl MOD20_022538A8
+ add r4, r0, #0
+ ldr r0, [sp, #0x10]
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [sp, #0x10]
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _0225301C
+ cmp r0, #1
+ beq _02253028
+ cmp r0, #2
+ beq _022530F6
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_0225301C:
+ mov r0, #0
+ strh r0, [r4]
+ strh r0, [r4, #2]
+ ldr r0, [sp, #0x10]
+ bl MOD20_022538B0
+_02253028:
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _022530FC
+ mov r0, #0
+ strh r0, [r4]
+ ldrh r0, [r4, #2]
+ add r0, #0xc
+ strh r0, [r4, #2]
+ ldrh r0, [r4, #2]
+ cmp r0, #0x28
+ bls _02253048
+ mov r0, #0x28
+ strh r0, [r4, #2]
+_02253048:
+ ldrh r1, [r4, #2]
+ lsr r3, r1, #0x1f
+ lsl r2, r1, #0x1e
+ lsr r0, r1, #2
+ sub r2, r2, r3
+ mov r1, #0x1e
+ ror r2, r1
+ mov r1, #0xc
+ sub r6, r1, r0
+ lsl r0, r0, #1
+ str r0, [sp, #0x14]
+ lsl r0, r6, #0x18
+ ldr r1, [sp, #0x14]
+ add r7, r3, r2
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x18
+ lsl r1, r1, #0x18
+ str r0, [sp, #4]
+ lsr r1, r1, #0x18
+ str r1, [sp, #8]
+ mov r1, #0xf
+ str r1, [sp, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #5
+ mov r2, #0x40
+ mov r3, #2
+ bl FUN_02018540
+ cmp r7, #0
+ beq _022530DA
+ sub r0, r6, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r1, #0x18
+ add r2, r7, #0
+ add r2, #0xd8
+ lsl r2, r2, #0x10
+ str r1, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ lsl r0, r1, #4
+ ldr r0, [r5, r0]
+ mov r1, #5
+ lsr r2, r2, #0x10
+ mov r3, #2
+ bl FUN_02018540
+ ldr r0, [sp, #0x14]
+ mov r2, #0xd8
+ add r0, r6, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r1, #0x18
+ sub r2, r2, r7
+ lsl r2, r2, #0x10
+ str r1, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ lsl r0, r1, #4
+ ldr r0, [r5, r0]
+ mov r1, #5
+ lsr r2, r2, #0x10
+ mov r3, #2
+ bl FUN_02018540
+_022530DA:
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ mov r1, #5
+ bl FUN_02017CD0
+ ldrh r0, [r4, #2]
+ cmp r0, #0x28
+ bne _022530FC
+ ldr r0, [sp, #0x10]
+ bl MOD20_022538B0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_022530F6:
+ ldr r0, [sp, #0x10]
+ bl MOD20_02252EBC
+_022530FC:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD20_02252FF0
+
+ thumb_func_start MOD20_02253100
+MOD20_02253100: ; 0x02253100
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0x10]
+ add r0, r1, #0
+ bl MOD20_022538A8
+ add r4, r0, #0
+ ldr r0, [sp, #0x10]
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [sp, #0x10]
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _0225312C
+ cmp r0, #1
+ beq _02253138
+ cmp r0, #2
+ beq _0225321E
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_0225312C:
+ mov r0, #0
+ strh r0, [r4]
+ strh r0, [r4, #2]
+ ldr r0, [sp, #0x10]
+ bl MOD20_022538B0
+_02253138:
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _02253224
+ mov r0, #0
+ strh r0, [r4]
+ ldrh r0, [r4, #2]
+ add r0, #8
+ strh r0, [r4, #2]
+ ldrh r0, [r4, #2]
+ cmp r0, #0x28
+ bls _02253158
+ mov r0, #0x28
+ strh r0, [r4, #2]
+_02253158:
+ ldrh r0, [r4, #2]
+ mov r3, #2
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1e
+ lsr r7, r0, #2
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r6, r2, r1
+ mov r0, #0x16
+ sub r0, r0, r7
+ str r0, [sp, #0x14]
+ lsl r1, r7, #0x18
+ str r3, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ lsr r1, r1, #0x18
+ str r1, [sp, #8]
+ mov r1, #0xf
+ str r1, [sp, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #5
+ mov r2, #0xd8
+ bl FUN_02018540
+ ldr r0, [sp, #0x14]
+ lsl r1, r7, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ lsr r1, r1, #0x18
+ str r1, [sp, #8]
+ mov r1, #0xf
+ str r1, [sp, #0xc]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #5
+ mov r2, #0xd8
+ mov r3, #2
+ bl FUN_02018540
+ cmp r6, #0
+ beq _02253202
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x18
+ str r1, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ lsl r0, r1, #4
+ sub r3, r6, #1
+ mov r2, #0xdb
+ sub r2, r2, r3
+ lsl r2, r2, #0x10
+ ldr r0, [r5, r0]
+ mov r1, #5
+ lsr r2, r2, #0x10
+ mov r3, #2
+ bl FUN_02018540
+ ldr r0, [sp, #0x14]
+ add r6, #0xd4
+ sub r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r1, #0x18
+ lsl r2, r6, #0x10
+ str r1, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ lsl r0, r1, #4
+ ldr r0, [r5, r0]
+ mov r1, #5
+ lsr r2, r2, #0x10
+ mov r3, #2
+ bl FUN_02018540
+_02253202:
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ mov r1, #5
+ bl FUN_02017CD0
+ ldrh r0, [r4, #2]
+ cmp r0, #0x28
+ bne _02253224
+ ldr r0, [sp, #0x10]
+ bl MOD20_022538B0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_0225321E:
+ ldr r0, [sp, #0x10]
+ bl MOD20_02252EBC
+_02253224:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD20_02253100
+
+ thumb_func_start MOD20_02253228
+MOD20_02253228: ; 0x02253228
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A8
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ add r2, r0, #0
+ cmp r2, #4
+ bhs _02253280
+ mov r3, #2
+ str r3, [sp]
+ mov r1, #0x18
+ mov r6, #0xd7
+ sub r2, r6, r2
+ lsl r2, r2, #0x10
+ str r1, [sp, #4]
+ mov r0, #0x14
+ str r0, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ lsl r0, r1, #4
+ ldr r0, [r4, r0]
+ mov r1, #5
+ lsr r2, r2, #0x10
+ bl FUN_02018540
+ add r0, r6, #0
+ add r0, #0xa9
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD20_022538B0
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+_02253280:
+ add r0, r5, #0
+ bl MOD20_02252EBC
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02253228
+
+ thumb_func_start MOD20_0225328C
+MOD20_0225328C: ; 0x0225328C
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A8
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ add r2, r0, #0
+ cmp r2, #4
+ bhs _022532E4
+ mov r3, #2
+ str r3, [sp]
+ mov r1, #0x18
+ mov r6, #0xdb
+ sub r2, r6, r2
+ lsl r2, r2, #0x10
+ str r1, [sp, #4]
+ mov r0, #0x14
+ str r0, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ lsl r0, r1, #4
+ ldr r0, [r4, r0]
+ mov r1, #5
+ lsr r2, r2, #0x10
+ bl FUN_02018540
+ add r0, r6, #0
+ add r0, #0xa5
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD20_022538B0
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+_022532E4:
+ add r0, r5, #0
+ bl MOD20_02252EBC
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD20_0225328C
+
+ thumb_func_start MOD20_022532F0
+MOD20_022532F0: ; 0x022532F0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ mov r0, #0xb
+ add r2, r4, #0
+ str r0, [sp]
+ mov r1, #4
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ add r2, #0x84
+ mov r3, #0x1b
+ bl FUN_02018148
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl FUN_02017CD0
+ ldr r0, _02253334 ; =0x00000671
+ bl FUN_020054C8
+ add r0, r5, #0
+ bl MOD20_02252EBC
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02253334: .word 0x00000671
+ thumb_func_end MOD20_022532F0
+
+ thumb_func_start MOD20_02253338
+MOD20_02253338: ; 0x02253338
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ mov r0, #0xb
+ add r2, r4, #0
+ str r0, [sp]
+ mov r1, #4
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ add r2, #0x2c
+ mov r3, #0x1b
+ bl FUN_02018148
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD20_02252EBC
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02253338
+
+ thumb_func_start MOD20_02253378
+MOD20_02253378: ; 0x02253378
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ mov r0, #0xb
+ add r2, r4, #0
+ str r0, [sp]
+ mov r1, #4
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ add r2, #0xdc
+ mov r3, #0x1b
+ bl FUN_02018148
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl FUN_02017CD0
+ ldr r0, _022533BC ; =0x0000066F
+ bl FUN_020054C8
+ add r0, r5, #0
+ bl MOD20_02252EBC
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_022533BC: .word 0x0000066F
+ thumb_func_end MOD20_02253378
+
+ thumb_func_start MOD20_022533C0
+MOD20_022533C0: ; 0x022533C0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ mov r1, #0x57
+ add r4, r0, #0
+ lsl r1, r1, #2
+ add r1, r4, r1
+ bl MOD20_02253430
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r1, [r4]
+ add r0, r4, r0
+ bl MOD20_0225354C
+ add r0, r5, #0
+ bl MOD20_02252EBC
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD20_022533C0
+
+ thumb_func_start MOD20_022533EC
+MOD20_022533EC: ; 0x022533EC
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r1, r0, #0
+ mov r0, #0x57
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r1, [r1]
+ bl MOD20_0225354C
+ add r0, r4, #0
+ bl MOD20_02252EBC
+ pop {r4, pc}
+ thumb_func_end MOD20_022533EC
+
+ thumb_func_start MOD20_0225340C
+MOD20_0225340C: ; 0x0225340C
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ mov r1, #0x57
+ lsl r1, r1, #2
+ add r0, r0, r1
+ bl MOD20_022535A4
+ add r0, r4, #0
+ bl MOD20_02252EBC
+ pop {r4, pc}
+ thumb_func_end MOD20_0225340C
+
+ thumb_func_start MOD20_02253428
+MOD20_02253428: ; 0x02253428
+ mov r2, #0
+ str r2, [r0]
+ str r1, [r0, #4]
+ bx lr
+ thumb_func_end MOD20_02253428
+
+ thumb_func_start MOD20_02253430
+MOD20_02253430: ; 0x02253430
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #7
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #8
+ mov r1, #0xc
+ mov r2, #3
+ mov r3, #4
+ bl MOD20_02253FBC
+ cmp r0, #0
+ beq _022534CC
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #7
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #2
+ bl FUN_02006A34
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #7
+ mov r1, #0
+ str r0, [sp, #4]
+ mov r0, #0xc
+ mov r2, #5
+ add r3, r1, #0
+ bl FUN_02006930
+ add r0, r5, #0
+ mov r1, #0xf
+ bl MOD20_022534D4
+ add r2, r4, #0
+ ldr r0, [r4, #4]
+ ldr r1, _022534D0 ; =0x022545A4
+ add r2, #8
+ bl MOD20_02253E74
+ str r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _022534CC
+ add r2, r4, #0
+ ldr r0, [r4, #4]
+ ldr r1, _022534D0 ; =0x022545A4
+ add r2, #8
+ bl MOD20_02253E74
+ str r0, [r4, #0x20]
+ cmp r0, #0
+ bne _022534AE
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0x1c]
+ bl MOD20_02253F14
+ add sp, #0xc
+ pop {r4, r5, pc}
+_022534AE:
+ mov r1, #1
+ lsl r1, r1, #0x10
+ mov r2, #0
+ bl MOD20_02253F54
+ ldr r0, [r4, #0x1c]
+ mov r1, #0xf
+ bl MOD20_02253F9C
+ ldr r0, [r4, #0x20]
+ mov r1, #0xf
+ bl MOD20_02253F9C
+ mov r0, #1
+ str r0, [r4]
+_022534CC:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_022534D0: .word 0x022545A4
+ thumb_func_end MOD20_02253430
+
+ thumb_func_start MOD20_022534D4
+MOD20_022534D4: ; 0x022534D4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl MOD20_02252C3C
+ bl FUN_0204BF44
+ mov r1, #0x62
+ lsl r0, r0, #5
+ lsl r1, r1, #2
+ add r0, r0, #1
+ add r2, r5, r1
+ lsl r0, r0, #1
+ add r0, r2, r0
+ add r1, #0x5a
+ mov r2, #2
+ bl GXS_LoadBGPltt
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl MOD20_02252DEC
+ ldr r1, _02253548 ; =0x0000038A
+ add r0, r1, #6
+ ldrh r2, [r5, r1]
+ ldrh r0, [r5, r0]
+ strh r0, [r5, r1]
+ add r0, r1, #6
+ strh r2, [r5, r0]
+ add r0, r1, #0
+ add r2, r1, #0
+ add r0, #0xe
+ add r2, #0x1c
+ ldrh r3, [r5, r2]
+ add r2, r1, #0
+ ldrh r0, [r5, r0]
+ add r2, #0xe
+ strh r3, [r5, r2]
+ add r2, r1, #0
+ add r2, #0x1c
+ strh r0, [r5, r2]
+ sub r0, r1, #2
+ add r0, r5, r0
+ mov r1, #0x20
+ bl DC_FlushRange
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ lsl r1, r4, #5
+ mov r2, #0x20
+ bl GXS_LoadOBJPltt
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02253548: .word 0x0000038A
+ thumb_func_end MOD20_022534D4
+
+ thumb_func_start MOD20_0225354C
+MOD20_0225354C: ; 0x0225354C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _02253596
+ ldr r0, [r1]
+ ldr r2, _02253598 ; =0x04000280
+ mov r3, #0
+ add r0, r0, #1
+ strh r3, [r2]
+ str r0, [r2, #0x10]
+ add r0, r2, #0
+ mov r1, #0xa
+ add r0, #0x18
+ str r1, [r0]
+ str r3, [r0, #4]
+ lsr r0, r2, #0xb
+_0225356E:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0225356E
+ ldr r0, _0225359C ; =0x040002A0
+ add r3, r0, #0
+ ldr r1, [r0]
+ sub r3, #0x20
+ lsr r0, r0, #0xb
+_0225357E:
+ ldrh r2, [r3]
+ tst r2, r0
+ bne _0225357E
+ ldr r0, _022535A0 ; =0x040002A8
+ ldr r5, [r0]
+ ldr r0, [r4, #0x1c]
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x20]
+ add r1, r5, #0
+ bl MOD20_02253F28
+_02253596:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02253598: .word 0x04000280
+_0225359C: .word 0x040002A0
+_022535A0: .word 0x040002A8
+ thumb_func_end MOD20_0225354C
+
+ thumb_func_start MOD20_022535A4
+MOD20_022535A4: ; 0x022535A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _022535CA
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0x1c]
+ bl MOD20_02253F14
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0x20]
+ bl MOD20_02253F14
+ add r0, r4, #0
+ add r0, #8
+ bl MOD20_02254014
+ mov r0, #0
+ str r0, [r4]
+_022535CA:
+ pop {r4, pc}
+ thumb_func_end MOD20_022535A4
+
+ thumb_func_start MOD20_022535CC
+MOD20_022535CC: ; 0x022535CC
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A8
+ add r0, r6, #0
+ bl MOD20_022538AC
+ add r5, r0, #0
+ cmp r5, #3
+ bhi _0225365E
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022535F8: ; jump table
+ .short _02253600 - _022535F8 - 2 ; case 0
+ .short _0225361C - _022535F8 - 2 ; case 1
+ .short _0225361C - _022535F8 - 2 ; case 2
+ .short _0225361C - _022535F8 - 2 ; case 3
+_02253600:
+ mov r0, #6
+ str r0, [sp]
+ ldr r0, _02253664 ; =0x04001050
+ mov r1, #2
+ mov r2, #0x1c
+ mov r3, #0x1a
+ bl G2x_SetBlendAlpha_
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl FUN_02017CD0
+_0225361C:
+ mov r3, #2
+ str r3, [sp]
+ mov r1, #0x18
+ mov r2, #0xdb
+ sub r2, r2, r5
+ lsl r2, r2, #0x10
+ str r1, [sp, #4]
+ mov r0, #0x14
+ str r0, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ lsl r0, r1, #4
+ ldr r0, [r4, r0]
+ mov r1, #5
+ lsr r2, r2, #0x10
+ bl FUN_02018540
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl FUN_02017CD0
+ cmp r5, #3
+ bne _02253658
+ add r0, r6, #0
+ bl MOD20_02252EBC
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+_02253658:
+ add r0, r6, #0
+ bl MOD20_022538B0
+_0225365E:
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_02253664: .word 0x04001050
+ thumb_func_end MOD20_022535CC
+
+ thumb_func_start MOD20_02253668
+MOD20_02253668: ; 0x02253668
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ mov r3, #2
+ add r4, r0, #0
+ str r3, [sp]
+ mov r1, #0x18
+ str r1, [sp, #4]
+ mov r0, #0x14
+ str r0, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ lsl r0, r1, #4
+ ldr r0, [r4, r0]
+ mov r1, #5
+ mov r2, #0x40
+ bl FUN_02018540
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl FUN_02017CD0
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl FUN_02017CD0
+ mov r1, #0
+ ldr r0, _022536C4 ; =0x04001050
+ add r2, r1, #0
+ mov r3, #0x1f
+ str r1, [sp]
+ bl G2x_SetBlendAlpha_
+ add r0, r5, #0
+ bl MOD20_02252EBC
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_022536C4: .word 0x04001050
+ thumb_func_end MOD20_02253668
+
+ thumb_func_start MOD20_022536C8
+MOD20_022536C8: ; 0x022536C8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #4
+ bl FUN_020178A0
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD20_02252EBC
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_022536C8
+
+ thumb_func_start MOD20_022536F4
+MOD20_022536F4: ; 0x022536F4
+ ldr r2, _02253710 ; =0x12345678
+ str r1, [r0]
+ mov r3, #0
+ str r2, [r0, #4]
+ cmp r1, #0
+ bls _0225370C
+ sub r2, r3, #1
+_02253702:
+ add r3, r3, #1
+ str r2, [r0, #8]
+ add r0, r0, #4
+ cmp r3, r1
+ blo _02253702
+_0225370C:
+ bx lr
+ nop
+_02253710: .word 0x12345678
+ thumb_func_end MOD20_022536F4
+
+ thumb_func_start MOD20_02253714
+MOD20_02253714: ; 0x02253714
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, [r5, #4]
+ ldr r0, _02253750 ; =0x12345678
+ cmp r1, r0
+ beq _02253726
+ bl ErrorHandling
+_02253726:
+ ldr r6, [r5]
+ mov r2, #0
+ cmp r6, #0
+ bls _0225374A
+ add r3, r5, #0
+ sub r0, r2, #1
+_02253732:
+ ldr r1, [r3, #8]
+ cmp r1, r0
+ bne _02253742
+ lsl r0, r2, #2
+ add r0, r5, r0
+ str r4, [r0, #8]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02253742:
+ add r2, r2, #1
+ add r3, r3, #4
+ cmp r2, r6
+ blo _02253732
+_0225374A:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02253750: .word 0x12345678
+ thumb_func_end MOD20_02253714
+
+ thumb_func_start MOD20_02253754
+MOD20_02253754: ; 0x02253754
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, [r5, #4]
+ ldr r0, _02253790 ; =0x12345678
+ cmp r1, r0
+ beq _02253766
+ bl ErrorHandling
+_02253766:
+ ldr r3, [r5]
+ mov r2, #0
+ cmp r3, #0
+ bls _0225378A
+ add r1, r5, #0
+_02253770:
+ ldr r0, [r1, #8]
+ cmp r4, r0
+ bne _02253782
+ mov r1, #0
+ lsl r0, r2, #2
+ mvn r1, r1
+ add r0, r5, r0
+ str r1, [r0, #8]
+ pop {r3, r4, r5, pc}
+_02253782:
+ add r2, r2, #1
+ add r1, r1, #4
+ cmp r2, r3
+ blo _02253770
+_0225378A:
+ bl ErrorHandling
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02253790: .word 0x12345678
+ thumb_func_end MOD20_02253754
+
+ thumb_func_start MOD20_02253794
+MOD20_02253794: ; 0x02253794
+ push {r3, r4}
+ ldr r4, [r0]
+ mov r3, #0
+ cmp r4, #0
+ bls _022537B2
+_0225379E:
+ ldr r2, [r0, #8]
+ cmp r1, r2
+ bne _022537AA
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+_022537AA:
+ add r3, r3, #1
+ add r0, r0, #4
+ cmp r3, r4
+ blo _0225379E
+_022537B2:
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD20_02253794
+
+ thumb_func_start MOD20_022537B8
+MOD20_022537B8: ; 0x022537B8
+ push {r3, r4}
+ ldr r4, [r0]
+ mov r3, #0
+ cmp r4, #0
+ bls _022537D8
+ sub r1, r3, #1
+_022537C4:
+ ldr r2, [r0, #8]
+ cmp r2, r1
+ beq _022537D0
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+_022537D0:
+ add r3, r3, #1
+ add r0, r0, #4
+ cmp r3, r4
+ blo _022537C4
+_022537D8:
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_022537B8
+
+ thumb_func_start MOD20_022537E0
+MOD20_022537E0: ; 0x022537E0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0
+ str r2, [sp]
+ mov r0, #0
+ add r5, r1, #0
+ ldr r2, [r7]
+ sub r1, r0, #1
+ str r3, [sp, #4]
+ cmp r2, r1
+ beq _02253880
+ add r3, r7, #0
+ sub r1, r0, #1
+_022537FA:
+ ldr r2, [r3]
+ cmp r5, r2
+ bne _02253876
+ add r6, r0, #0
+ add r0, r7, #0
+ str r0, [sp, #8]
+ add r0, #8
+ mov r1, #0xc
+ str r0, [sp, #8]
+ mul r6, r1
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #0x28]
+ ldr r1, [r1, r6]
+ add r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02253870
+ ldr r0, [sp, #8]
+ ldr r0, [r0, r6]
+ cmp r0, #0
+ beq _0225382C
+ add r0, r4, #0
+ add r0, #0x18
+ b _0225382E
+_0225382C:
+ mov r0, #0
+_0225382E:
+ str r0, [r4, #0xc]
+ ldr r0, [sp, #0x20]
+ add r1, r5, #0
+ bl MOD20_02253714
+ cmp r0, #0
+ beq _02253866
+ ldr r0, [sp]
+ ldr r2, [sp, #0x24]
+ str r0, [r4, #8]
+ mov r0, #0
+ str r0, [r4, #4]
+ str r5, [r4]
+ ldr r0, [sp, #4]
+ add r5, r7, #4
+ str r0, [r4, #0x10]
+ ldr r0, [r5, r6]
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02253884
+ ldr r2, [r5, r6]
+ add r1, r4, #0
+ blx r2
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_02253866:
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_02253870:
+ bl ErrorHandling
+ b _02253880
+_02253876:
+ add r3, #0xc
+ ldr r2, [r3]
+ add r0, r0, #1
+ cmp r2, r1
+ bne _022537FA
+_02253880:
+ bl ErrorHandling
+_02253884:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD20_022537E0
+
+ thumb_func_start MOD20_02253888
+MOD20_02253888: ; 0x02253888
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4]
+ bl MOD20_02253754
+ ldr r0, [r4, #0x14]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD20_02253888
+
+ thumb_func_start MOD20_022538A0
+MOD20_022538A0: ; 0x022538A0
+ ldr r0, [r0, #8]
+ bx lr
+ thumb_func_end MOD20_022538A0
+
+ thumb_func_start MOD20_022538A4
+MOD20_022538A4: ; 0x022538A4
+ ldr r0, [r0, #0x10]
+ bx lr
+ thumb_func_end MOD20_022538A4
+
+ thumb_func_start MOD20_022538A8
+MOD20_022538A8: ; 0x022538A8
+ ldr r0, [r0, #0xc]
+ bx lr
+ thumb_func_end MOD20_022538A8
+
+ thumb_func_start MOD20_022538AC
+MOD20_022538AC: ; 0x022538AC
+ ldr r0, [r0, #4]
+ bx lr
+ thumb_func_end MOD20_022538AC
+
+ thumb_func_start MOD20_022538B0
+MOD20_022538B0: ; 0x022538B0
+ ldr r1, [r0, #4]
+ add r1, r1, #1
+ str r1, [r0, #4]
+ bx lr
+ thumb_func_end MOD20_022538B0
+
+ thumb_func_start MOD20_022538B8
+MOD20_022538B8: ; 0x022538B8
+ str r1, [r0, #4]
+ bx lr
+ thumb_func_end MOD20_022538B8
+
+ thumb_func_start MOD20_022538BC
+MOD20_022538BC: ; 0x022538BC
+ push {r3, r4, r5, r6}
+ mul r2, r3
+ ldr r4, [sp, #0x18]
+ add r1, r1, r2
+ lsl r6, r1, #1
+ lsl r4, r4, #0xc
+ ldr r1, [sp, #0x10]
+ add r5, r4, #0
+ orr r5, r1
+ add r2, r0, r6
+ strh r5, [r0, r6]
+ add r0, r1, #1
+ orr r0, r4
+ strh r0, [r2, #2]
+ ldr r0, [sp, #0x14]
+ lsl r3, r3, #1
+ add r1, r1, r0
+ add r0, r4, #0
+ orr r0, r1
+ strh r0, [r2, r3]
+ add r0, r1, #1
+ add r1, r4, #0
+ orr r1, r0
+ add r0, r2, r3
+ strh r1, [r0, #2]
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_022538BC
+
+ thumb_func_start MOD20_022538F4
+MOD20_022538F4: ; 0x022538F4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x20
+ bl FUN_02016998
+ add r7, r0, #0
+ beq _02253960
+ bl MOD20_02252DEC
+ mov r4, #0
+ cmp r6, #0
+ bls _0225395A
+_02253910:
+ ldrh r3, [r5]
+ mov r0, #0x1f
+ lsl r0, r0, #0xa
+ and r0, r3
+ asr r0, r0, #0xa
+ add r2, r0, #0
+ mov r1, #0x72
+ mov r0, #0x1f
+ mul r2, r1
+ and r0, r3
+ add r1, #0xb9
+ mul r1, r0
+ mov r0, #0x3e
+ lsl r0, r0, #4
+ and r0, r3
+ asr r3, r0, #5
+ ldr r0, _02253964 ; =0x0000024B
+ mul r0, r3
+ add r0, r1, r0
+ mov r1, #0xfa
+ add r0, r2, r0
+ lsl r1, r1, #2
+ bl _u32_div_f
+ lsr r1, r0, #3
+ cmp r1, #3
+ bls _02253948
+ mov r1, #3
+_02253948:
+ ldr r0, _02253968 ; =0x0225470C
+ add r4, r4, #1
+ ldrb r0, [r0, r1]
+ lsl r0, r0, #1
+ ldrh r0, [r7, r0]
+ strh r0, [r5]
+ add r5, r5, #2
+ cmp r4, r6
+ blo _02253910
+_0225395A:
+ add r0, r7, #0
+ bl FUN_02016A18
+_02253960:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02253964: .word 0x0000024B
+_02253968: .word 0x0225470C
+ thumb_func_end MOD20_022538F4
+
+ thumb_func_start MOD20_0225396C
+MOD20_0225396C: ; 0x0225396C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #8
+ mov r1, #0x20
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _022539C2
+ mov r0, #8
+ mov r1, #0x20
+ bl FUN_02016998
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD20_02252DEC
+ cmp r5, #0
+ beq _022539BC
+ mov r0, #0
+ add r1, r5, #0
+ lsl r3, r6, #1
+_02253998:
+ ldrh r2, [r4, r3]
+ add r0, r0, #1
+ strh r2, [r1]
+ add r1, r1, #2
+ cmp r0, #0x10
+ blt _02253998
+ add r0, r5, #0
+ mov r1, #0x20
+ bl DC_FlushRange
+ add r0, r5, #0
+ lsl r1, r7, #5
+ mov r2, #0x20
+ bl GXS_LoadOBJPltt
+ add r0, r5, #0
+ bl FUN_02016A18
+_022539BC:
+ add r0, r4, #0
+ bl FUN_02016A18
+_022539C2:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD20_0225396C
+
+ thumb_func_start MOD20_022539C4
+MOD20_022539C4: ; 0x022539C4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_0206B888
+ add r1, r0, #0
+ mov r0, #0x13
+ add r2, sp, #0
+ mov r3, #8
+ bl FUN_02006C08
+ add r4, r0, #0
+ beq _02253A02
+ ldr r0, [sp]
+ mov r1, #0x40
+ ldr r0, [r0, #0xc]
+ bl MOD20_022538F4
+ ldr r0, [sp]
+ mov r1, #0x80
+ ldr r0, [r0, #0xc]
+ bl DC_FlushRange
+ ldr r0, [sp]
+ lsl r1, r5, #5
+ ldr r0, [r0, #0xc]
+ mov r2, #0x80
+ bl GXS_LoadOBJPltt
+ add r0, r4, #0
+ bl FUN_02016A18
+_02253A02:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_022539C4
+
+ thumb_func_start MOD20_02253A04
+MOD20_02253A04: ; 0x02253A04
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r0, [sp, #4]
+ lsl r0, r3, #1
+ str r0, [sp, #0xc]
+ add r6, r1, #0
+ str r2, [sp, #8]
+ ldr r2, _02253A9C ; =0x02254708
+ ldr r1, [sp, #0xc]
+ mov r0, #8
+ ldrh r1, [r2, r1]
+ bl FUN_02016998
+ add r7, r0, #0
+ beq _02253A98
+ mov r0, #0x13
+ mov r1, #8
+ bl FUN_02006670
+ str r0, [sp, #0x1c]
+ cmp r0, #0
+ beq _02253A92
+ mov r0, #0
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ bls _02253A8C
+ ldr r1, _02253AA0 ; =0x02254704
+ ldr r0, [sp, #0xc]
+ ldr r4, [sp, #0x18]
+ ldrh r5, [r1, r0]
+ ldr r1, _02253A9C ; =0x02254708
+ ldrh r0, [r1, r0]
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #4]
+ lsl r0, r0, #5
+ str r0, [sp, #0x10]
+_02253A4E:
+ str r7, [sp]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [r6]
+ ldr r3, [sp, #0x14]
+ mov r2, #0
+ bl FUN_02006814
+ add r0, r7, #0
+ add r1, sp, #0x20
+ bl FUN_020B0088
+ ldr r0, [sp, #0x20]
+ add r1, r5, #0
+ ldr r0, [r0, #0x14]
+ bl DC_FlushRange
+ ldr r0, [sp, #0x20]
+ ldr r1, [sp, #0x10]
+ ldr r0, [r0, #0x14]
+ add r1, r1, r4
+ add r2, r5, #0
+ bl GXS_LoadOBJ
+ ldr r0, [sp, #0x18]
+ add r6, r6, #4
+ add r1, r0, #1
+ ldr r0, [sp, #8]
+ add r4, r4, r5
+ str r1, [sp, #0x18]
+ cmp r1, r0
+ blo _02253A4E
+_02253A8C:
+ ldr r0, [sp, #0x1c]
+ bl FUN_020066F4
+_02253A92:
+ add r0, r7, #0
+ bl FUN_02016A18
+_02253A98:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02253A9C: .word 0x02254708
+_02253AA0: .word 0x02254704
+ thumb_func_end MOD20_02253A04
+
+ thumb_func_start MOD20_02253AA4
+MOD20_02253AA4: ; 0x02253AA4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r4, r2, #0
+ mov r1, #2
+ add r2, sp, #0xc
+ strh r1, [r2]
+ mov r3, #3
+ strh r3, [r2, #2]
+ mov r3, #0xa
+ strh r3, [r2, #4]
+ mov r3, #0xb
+ strh r3, [r2, #6]
+ str r3, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ lsl r1, r4, #0x18
+ lsr r1, r1, #0x18
+ add r2, sp, #0xc
+ mov r3, #9
+ add r6, r0, #0
+ bl FUN_02018148
+ mov r1, #4
+ add r0, sp, #0xc
+ strh r1, [r0]
+ mov r1, #5
+ strh r1, [r0, #2]
+ mov r1, #0xc
+ strh r1, [r0, #4]
+ mov r1, #0xd
+ strh r1, [r0, #6]
+ mov r3, #0xb
+ lsl r1, r4, #0x18
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ add r2, sp, #0xc
+ bl FUN_02018148
+ mov r1, #6
+ add r0, sp, #0xc
+ strh r1, [r0]
+ mov r1, #7
+ strh r1, [r0, #2]
+ mov r1, #0xe
+ strh r1, [r0, #4]
+ mov r1, #0xf
+ strh r1, [r0, #6]
+ mov r0, #0xb
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ lsl r1, r4, #0x18
+ str r0, [sp, #8]
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ add r2, sp, #0xc
+ mov r3, #0xd
+ bl FUN_02018148
+ add r0, r5, #0
+ mov r1, #0xa
+ bl _u32_div_f
+ mov r1, #0xa
+ mul r1, r0
+ add r0, r0, #4
+ sub r5, r5, r1
+ lsr r1, r0, #2
+ lsl r0, r0, #0x1e
+ lsl r1, r1, #4
+ lsr r0, r0, #0x1d
+ add r2, r1, r0
+ add r0, sp, #0xc
+ strh r2, [r0]
+ add r1, r2, #1
+ strh r1, [r0, #2]
+ add r1, r2, #0
+ add r1, #8
+ strh r1, [r0, #4]
+ add r2, #9
+ strh r2, [r0, #6]
+ mov r0, #0xb
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ lsl r1, r4, #0x18
+ str r0, [sp, #8]
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ add r2, sp, #0xc
+ mov r3, #0xf
+ bl FUN_02018148
+ add r0, r5, #4
+ lsr r1, r0, #2
+ lsl r0, r0, #0x1e
+ lsl r1, r1, #4
+ lsr r0, r0, #0x1d
+ add r2, r1, r0
+ add r0, sp, #0xc
+ strh r2, [r0]
+ add r1, r2, #1
+ strh r1, [r0, #2]
+ add r1, r2, #0
+ add r1, #8
+ strh r1, [r0, #4]
+ add r2, #9
+ strh r2, [r0, #6]
+ mov r0, #0xb
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ lsl r1, r4, #0x18
+ str r0, [sp, #8]
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ add r2, sp, #0xc
+ mov r3, #0x11
+ bl FUN_02018148
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02253AA4
+
+ thumb_func_start MOD20_02253BA4
+MOD20_02253BA4: ; 0x02253BA4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #0x1c
+ mov r6, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02253C0E
+ add r0, r6, #0
+ str r0, [r4, #0x14]
+ str r0, [r4, #0xc]
+ str r0, [r4, #4]
+ str r7, [r4]
+ str r5, [r4, #0x18]
+ add r0, r7, #0
+ bl FUN_020B0830
+ strh r0, [r4, #0x10]
+ ldrh r1, [r4, #0x10]
+ add r0, r5, #0
+ lsl r1, r1, #3
+ bl FUN_02016998
+ str r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02253C0E
+ ldrh r2, [r4, #0x10]
+ mov r1, #0x90
+ add r0, r5, #0
+ mul r1, r2
+ bl FUN_02016998
+ str r0, [r4, #0xc]
+ cmp r0, #0
+ beq _02253C0E
+ ldrh r1, [r4, #0x10]
+ add r0, r5, #0
+ lsl r1, r1, #2
+ bl FUN_02016998
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _02253C0E
+ ldrh r2, [r4, #0x10]
+ ldr r1, [r4, #0xc]
+ bl MOD20_0225403C
+ add r0, r6, #0
+ strh r0, [r4, #0x12]
+ str r0, [r4, #8]
+ mov r6, #1
+_02253C0E:
+ cmp r6, #0
+ bne _02253C46
+ cmp r4, #0
+ beq _02253C42
+ ldr r1, [r4, #0x14]
+ cmp r1, #0
+ beq _02253C22
+ add r0, r5, #0
+ bl FUN_02016A8C
+_02253C22:
+ ldr r1, [r4, #0xc]
+ cmp r1, #0
+ beq _02253C2E
+ add r0, r5, #0
+ bl FUN_02016A8C
+_02253C2E:
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _02253C3A
+ add r0, r5, #0
+ bl FUN_02016A8C
+_02253C3A:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02016A8C
+_02253C42:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02253C46:
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02253BA4
+
+ thumb_func_start MOD20_02253C4C
+MOD20_02253C4C: ; 0x02253C4C
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02253C76
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02253C5C
+ bl FUN_02016A18
+_02253C5C:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _02253C66
+ bl FUN_02016A18
+_02253C66:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02253C70
+ bl FUN_02016A18
+_02253C70:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02253C76:
+ pop {r4, pc}
+ thumb_func_end MOD20_02253C4C
+
+ thumb_func_start MOD20_02253C78
+MOD20_02253C78: ; 0x02253C78
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #0xc]
+ ldrh r0, [r0, #0x12]
+ cmp r0, #0
+ bne _02253C86
+ b _02253E52
+_02253C86:
+ ldr r0, [sp, #0xc]
+ ldr r4, [r0, #8]
+ ldr r5, [r0, #0x14]
+ ldrh r0, [r0, #0x10]
+ cmp r4, #0
+ str r0, [sp, #0x10]
+ bne _02253C96
+ b _02253E38
+_02253C96:
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #8
+ lsl r1, r1, #0xc
+ bl FUN_020B1EC4
+ add r0, r4, #0
+ add r0, #0x86
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02253CAE
+ b _02253E30
+_02253CAE:
+ add r6, r4, #0
+ add r6, #0x40
+ mov r0, #0xc
+ ldrsh r0, [r6, r0]
+ ldr r1, [r4, #0x64]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0x18]
+ mov r0, #0xe
+ ldrsh r0, [r6, r0]
+ ldr r1, [r4, #0x68]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0x1c]
+ add r0, r4, #0
+ add r0, #0x87
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02253CEE
+ add r0, sp, #0x18
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ ldr r1, [sp, #0x10]
+ str r3, [sp, #8]
+ lsl r1, r1, #0x10
+ ldr r2, [r4, #0x34]
+ add r0, r5, #0
+ lsr r1, r1, #0x10
+ bl FUN_020B1AF8
+ b _02253D86
+_02253CEE:
+ ldr r0, [r4, #0x6c]
+ bl MTX_Identity22_
+ ldrh r1, [r6, #0x12]
+ mov r0, #4
+ tst r0, r1
+ beq _02253D20
+ add r0, r4, #0
+ add r0, #0x8c
+ ldrh r2, [r6, #0x10]
+ ldrh r0, [r0]
+ ldr r1, _02253E58 ; =0x020FFA38
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r3, r0, #2
+ add r2, r1, r3
+ ldrsh r1, [r1, r3]
+ mov r3, #2
+ ldrsh r2, [r2, r3]
+ ldr r0, [r4, #0x6c]
+ bl MTX_Rot22_
+ b _02253D3E
+_02253D20:
+ add r0, r4, #0
+ add r0, #0x8c
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _02253D3E
+ asr r0, r0, #4
+ lsl r3, r0, #2
+ ldr r1, _02253E58 ; =0x020FFA38
+ ldr r0, [r4, #0x6c]
+ add r2, r1, r3
+ ldrsh r1, [r1, r3]
+ mov r3, #2
+ ldrsh r2, [r2, r3]
+ bl MTX_Rot22_
+_02253D3E:
+ ldrh r1, [r6, #0x12]
+ mov r0, #2
+ tst r0, r1
+ beq _02253D62
+ ldr r0, [r6, #4]
+ ldr r7, [r4, #0x6c]
+ bl FX_Inv
+ str r0, [sp, #0x14]
+ ldr r0, [r6, #8]
+ bl FX_Inv
+ add r3, r0, #0
+ ldr r2, [sp, #0x14]
+ add r0, r7, #0
+ add r1, r7, #0
+ bl MTX_ScaleApply22
+_02253D62:
+ ldr r0, [sp, #0xc]
+ ldr r1, [r4, #0x6c]
+ ldr r0, [r0]
+ bl FUN_020B0BB0
+ add r1, sp, #0x18
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r1, [sp, #0x10]
+ ldr r2, [r4, #0x34]
+ lsl r1, r1, #0x10
+ ldr r3, [r4, #0x6c]
+ add r0, r5, #0
+ lsr r1, r1, #0x10
+ bl FUN_020B1AF8
+_02253D86:
+ ldr r1, [sp, #0x10]
+ sub r1, r1, r0
+ str r1, [sp, #0x10]
+ add r1, r0, #0
+ sub r0, r0, #1
+ cmp r1, #0
+ beq _02253E30
+ ldr r7, _02253E5C ; =0xDFFFFFFF
+ asr r1, r7, #0x11
+_02253D98:
+ ldr r3, [r5, #4]
+ ldr r2, _02253E60 ; =0xFFFFF3FF
+ add r6, r4, #0
+ and r2, r3
+ add r3, r4, #0
+ add r3, #0x82
+ ldrh r3, [r3]
+ add r6, #0x84
+ lsl r3, r3, #0x1e
+ lsr r3, r3, #0x14
+ orr r2, r3
+ str r2, [r5, #4]
+ ldr r3, _02253E64 ; =0xFFFF0FFF
+ ldrh r6, [r6]
+ and r3, r2
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x1c
+ add r2, r2, r6
+ lsl r2, r2, #0x1c
+ lsr r2, r2, #0x10
+ orr r2, r3
+ add r6, r4, #0
+ ldr r3, _02253E68 ; =0xFFFFFC00
+ str r2, [r5, #4]
+ add r6, #0x88
+ and r3, r2
+ lsl r2, r2, #0x16
+ ldrh r6, [r6]
+ lsr r2, r2, #0x16
+ add r6, r2, r6
+ ldr r2, _02253E6C ; =0x000003FF
+ and r2, r6
+ orr r2, r3
+ add r6, r4, #0
+ str r2, [r5, #4]
+ add r6, #0x8a
+ ldr r2, [r5]
+ ldr r3, _02253E70 ; =0xEFFFFFFF
+ ldrb r6, [r6]
+ and r3, r2
+ lsl r2, r2, #3
+ lsr r2, r2, #0x1f
+ eor r2, r6
+ lsl r2, r2, #0x1f
+ lsr r2, r2, #3
+ orr r2, r3
+ add r6, r4, #0
+ add r3, r2, #0
+ str r2, [r5]
+ add r6, #0x8b
+ lsl r2, r2, #2
+ ldrb r6, [r6]
+ lsr r2, r2, #0x1f
+ and r3, r7
+ eor r2, r6
+ lsl r2, r2, #0x1f
+ lsr r2, r2, #2
+ orr r2, r3
+ add r6, r4, #0
+ add r3, r2, #0
+ str r2, [r5]
+ add r6, #0x8e
+ lsl r2, r2, #0x13
+ ldrb r6, [r6]
+ lsr r2, r2, #0x1f
+ and r3, r1
+ eor r2, r6
+ lsl r2, r2, #0x1f
+ lsr r2, r2, #0x13
+ orr r2, r3
+ str r2, [r5]
+ add r2, r0, #0
+ add r5, #8
+ sub r0, r0, #1
+ cmp r2, #0
+ bne _02253D98
+_02253E30:
+ ldr r4, [r4, #0x5c]
+ cmp r4, #0
+ beq _02253E38
+ b _02253C96
+_02253E38:
+ ldr r0, [sp, #0xc]
+ ldr r1, [r0, #0x14]
+ cmp r5, r1
+ bls _02253E52
+ sub r3, r5, r1
+ asr r2, r3, #2
+ lsr r2, r2, #0x1d
+ add r2, r3, r2
+ lsl r2, r2, #0xd
+ ldr r0, [r0]
+ lsr r2, r2, #0x10
+ bl FUN_020B0D58
+_02253E52:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02253E58: .word 0x020FFA38
+_02253E5C: .word 0xDFFFFFFF
+_02253E60: .word 0xFFFFF3FF
+_02253E64: .word 0xFFFF0FFF
+_02253E68: .word 0xFFFFFC00
+_02253E6C: .word 0x000003FF
+_02253E70: .word 0xEFFFFFFF
+ thumb_func_end MOD20_02253C78
+
+ thumb_func_start MOD20_02253E74
+MOD20_02253E74: ; 0x02253E74
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r5, r1, #0
+ add r6, r2, #0
+ bl MOD20_02254068
+ add r4, r0, #0
+ beq _02253F10
+ ldrb r1, [r5, #0xb]
+ add r0, #0x82
+ strh r1, [r0]
+ add r0, r4, #0
+ ldrb r1, [r5, #0xc]
+ add r0, #0x80
+ strh r1, [r0]
+ add r0, r7, #0
+ add r1, r4, #0
+ bl MOD20_022540A4
+ ldr r0, [r6, #8]
+ str r0, [r4]
+ ldr r0, [r6, #0xc]
+ str r0, [r4, #4]
+ ldrh r1, [r5, #8]
+ bl FUN_020AFC04
+ add r1, r0, #0
+ add r0, r4, #0
+ ldr r2, [r4]
+ add r0, #8
+ bl FUN_020B1F80
+ ldr r1, [r5]
+ ldr r0, [r5, #4]
+ str r1, [r4, #0x64]
+ add r1, r4, #0
+ str r0, [r4, #0x68]
+ mov r0, #0
+ add r1, #0x84
+ strh r0, [r1]
+ add r1, r4, #0
+ add r1, #0x88
+ strh r0, [r1]
+ ldrb r2, [r5, #0xa]
+ mov r1, #1
+ tst r2, r1
+ beq _02253ED4
+ add r0, r1, #0
+_02253ED4:
+ add r1, r4, #0
+ add r1, #0x8a
+ strb r0, [r1]
+ ldrb r1, [r5, #0xa]
+ mov r0, #2
+ tst r0, r1
+ beq _02253EE6
+ mov r1, #1
+ b _02253EE8
+_02253EE6:
+ mov r1, #0
+_02253EE8:
+ add r0, r4, #0
+ add r0, #0x8b
+ strb r1, [r0]
+ add r1, r4, #0
+ mov r0, #0
+ add r1, #0x8e
+ strb r0, [r1]
+ add r1, r4, #0
+ add r1, #0x8c
+ strh r0, [r1]
+ add r1, r4, #0
+ add r1, #0x70
+ str r1, [r4, #0x6c]
+ add r1, r4, #0
+ ldrb r2, [r5, #0xd]
+ add r1, #0x87
+ strb r2, [r1]
+ add r1, r4, #0
+ add r1, #0x86
+ strb r0, [r1]
+_02253F10:
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD20_02253E74
+
+ thumb_func_start MOD20_02253F14
+MOD20_02253F14: ; 0x02253F14
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD20_022540FC
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD20_02254080
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_02253F14
+
+ thumb_func_start MOD20_02253F28
+MOD20_02253F28: ; 0x02253F28
+ push {r4, lr}
+ add r4, r0, #0
+ lsl r1, r1, #0x10
+ ldr r0, [r4, #4]
+ lsr r1, r1, #0x10
+ bl FUN_020AFC04
+ add r1, r0, #0
+ add r0, r4, #0
+ ldr r2, [r4]
+ add r0, #8
+ bl FUN_020B1F80
+ pop {r4, pc}
+ thumb_func_end MOD20_02253F28
+
+ thumb_func_start MOD20_02253F44
+MOD20_02253F44: ; 0x02253F44
+ ldr r0, [r0, #0x10]
+ cmp r0, #0
+ bne _02253F4E
+ mov r0, #1
+ bx lr
+_02253F4E:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_02253F44
+
+ thumb_func_start MOD20_02253F54
+MOD20_02253F54: ; 0x02253F54
+ ldr r3, [r0, #0x64]
+ add r1, r3, r1
+ str r1, [r0, #0x64]
+ ldr r1, [r0, #0x68]
+ add r1, r1, r2
+ str r1, [r0, #0x68]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_02253F54
+
+ thumb_func_start MOD20_02253F64
+MOD20_02253F64: ; 0x02253F64
+ str r1, [r0, #0x64]
+ str r2, [r0, #0x68]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_02253F64
+
+ thumb_func_start MOD20_02253F6C
+MOD20_02253F6C: ; 0x02253F6C
+ ldr r3, [r0, #0x64]
+ str r3, [r1]
+ ldr r0, [r0, #0x68]
+ str r0, [r2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_02253F6C
+
+ thumb_func_start MOD20_02253F78
+MOD20_02253F78: ; 0x02253F78
+ add r0, #0x86
+ strb r1, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_02253F78
+
+ thumb_func_start MOD20_02253F80
+MOD20_02253F80: ; 0x02253F80
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ add r4, r2, #0
+ bl MOD20_022540FC
+ add r0, r5, #0
+ add r0, #0x80
+ strh r4, [r0]
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD20_022540A4
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD20_02253F80
+
+ thumb_func_start MOD20_02253F9C
+MOD20_02253F9C: ; 0x02253F9C
+ add r0, #0x84
+ strh r1, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_02253F9C
+
+ thumb_func_start MOD20_02253FA4
+MOD20_02253FA4: ; 0x02253FA4
+ add r0, #0x88
+ strh r1, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_02253FA4
+
+ thumb_func_start MOD20_02253FAC
+MOD20_02253FAC: ; 0x02253FAC
+ add r0, #0x8e
+ strb r1, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_02253FAC
+
+ thumb_func_start MOD20_02253FB4
+MOD20_02253FB4: ; 0x02253FB4
+ add r0, #0x8c
+ strh r1, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_02253FB4
+
+ thumb_func_start MOD20_02253FBC
+MOD20_02253FBC: ; 0x02253FBC
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, [sp, #0x18]
+ add r5, r0, #0
+ add r6, r1, #0
+ add r1, r2, #0
+ add r7, r3, #0
+ str r4, [r5, #0x10]
+ add r0, r6, #0
+ add r2, r4, #0
+ bl FUN_02006C88
+ str r0, [r5]
+ add r0, r6, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl FUN_02006C88
+ str r0, [r5, #4]
+ ldr r0, [r5]
+ cmp r0, #0
+ beq _0225400E
+ ldr r1, [r5, #4]
+ cmp r1, #0
+ beq _0225400E
+ add r1, r5, #0
+ add r1, #8
+ bl FUN_020AFEB8
+ cmp r0, #0
+ bne _02253FFC
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02253FFC:
+ ldr r0, [r5, #4]
+ add r5, #0xc
+ add r1, r5, #0
+ bl thunk_FUN_020afda0
+ cmp r0, #0
+ bne _0225400E
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0225400E:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02253FBC
+
+ thumb_func_start MOD20_02254014
+MOD20_02254014: ; 0x02254014
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _02254028
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A8C
+ mov r0, #0
+ str r0, [r4]
+_02254028:
+ ldr r1, [r4, #4]
+ cmp r1, #0
+ beq _02254038
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A8C
+ mov r0, #0
+ str r0, [r4, #4]
+_02254038:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02254014
+
+ thumb_func_start MOD20_0225403C
+MOD20_0225403C: ; 0x0225403C
+ push {r4, r5, r6, lr}
+ add r6, r2, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r1, #0
+ sub r6, r6, #1
+ cmp r0, #0
+ beq _0225405E
+_0225404C:
+ add r0, r4, #0
+ stmia r5!, {r4}
+ bl MOD20_02254060
+ add r0, r6, #0
+ add r4, #0x90
+ sub r6, r6, #1
+ cmp r0, #0
+ bne _0225404C
+_0225405E:
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD20_0225403C
+
+ thumb_func_start MOD20_02254060
+MOD20_02254060: ; 0x02254060
+ mov r1, #0
+ str r1, [r0, #0x5c]
+ str r1, [r0, #0x60]
+ bx lr
+ thumb_func_end MOD20_02254060
+
+ thumb_func_start MOD20_02254068
+MOD20_02254068: ; 0x02254068
+ ldrh r2, [r0, #0x12]
+ ldrh r1, [r0, #0x10]
+ cmp r2, r1
+ bhs _0225407C
+ add r1, r2, #1
+ strh r1, [r0, #0x12]
+ ldr r1, [r0, #4]
+ lsl r0, r2, #2
+ ldr r0, [r1, r0]
+ bx lr
+_0225407C:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD20_02254068
+
+ thumb_func_start MOD20_02254080
+MOD20_02254080: ; 0x02254080
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldrh r0, [r5, #0x12]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _022540A0
+ add r0, r4, #0
+ bl MOD20_02254060
+ ldrh r0, [r5, #0x12]
+ sub r0, r0, #1
+ strh r0, [r5, #0x12]
+ ldrh r0, [r5, #0x12]
+ ldr r1, [r5, #4]
+ lsl r0, r0, #2
+ str r4, [r1, r0]
+_022540A0:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02254080
+
+ thumb_func_start MOD20_022540A4
+MOD20_022540A4: ; 0x022540A4
+ push {r4, r5}
+ ldr r3, [r0, #8]
+ cmp r3, #0
+ bne _022540B8
+ str r1, [r0, #8]
+ mov r0, #0
+ str r0, [r1, #0x5c]
+ str r0, [r1, #0x60]
+ pop {r4, r5}
+ bx lr
+_022540B8:
+ add r4, r1, #0
+ add r4, #0x80
+ ldr r5, [r4]
+ add r2, r3, #0
+_022540C0:
+ add r4, r2, #0
+ add r4, #0x80
+ ldr r4, [r4]
+ cmp r5, r4
+ bhs _022540E2
+ cmp r2, r3
+ bne _022540D0
+ str r1, [r0, #8]
+_022540D0:
+ ldr r0, [r2, #0x60]
+ str r0, [r1, #0x60]
+ cmp r0, #0
+ beq _022540DA
+ str r1, [r0, #0x5c]
+_022540DA:
+ str r2, [r1, #0x5c]
+ str r1, [r2, #0x60]
+ pop {r4, r5}
+ bx lr
+_022540E2:
+ ldr r4, [r2, #0x5c]
+ cmp r4, #0
+ bne _022540F4
+ str r1, [r2, #0x5c]
+ str r2, [r1, #0x60]
+ mov r0, #0
+ str r0, [r1, #0x5c]
+ pop {r4, r5}
+ bx lr
+_022540F4:
+ add r2, r4, #0
+ b _022540C0
+ thumb_func_end MOD20_022540A4
+
+ thumb_func_start MOD20_022540F8
+MOD20_022540F8: ; 0x022540F8
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD20_022540F8
+
+ thumb_func_start MOD20_022540FC
+MOD20_022540FC: ; 0x022540FC
+ ldr r2, [r1, #0x60]
+ cmp r2, #0
+ beq _02254118
+ ldr r0, [r1, #0x5c]
+ cmp r0, #0
+ beq _02254112
+ str r0, [r2, #0x5c]
+ ldr r2, [r1, #0x60]
+ ldr r0, [r1, #0x5c]
+ str r2, [r0, #0x60]
+ bx lr
+_02254112:
+ mov r0, #0
+ str r0, [r2, #0x5c]
+ bx lr
+_02254118:
+ ldr r3, [r1, #0x5c]
+ cmp r3, #0
+ beq _02254128
+ mov r2, #0
+ str r2, [r3, #0x60]
+ ldr r1, [r1, #0x5c]
+ str r1, [r0, #8]
+ bx lr
+_02254128:
+ mov r1, #0
+ str r1, [r0, #8]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_022540FC
+
+ thumb_func_start MOD20_02254130
+MOD20_02254130: ; 0x02254130
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ add r7, r1, #0
+ str r2, [sp]
+ str r3, [sp, #4]
+ ldr r5, [sp, #0x20]
+ bne _02254144
+ bl ErrorHandling
+_02254144:
+ add r0, r5, #0
+ mov r1, #0x18
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254192
+ ldr r0, [sp]
+ str r5, [r4, #8]
+ str r0, [r4, #4]
+ str r6, [r4]
+ mov r1, #0xe
+ ldr r0, [sp, #4]
+ str r7, [r4, #0xc]
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ mul r1, r7
+ bl FUN_02016998
+ str r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02254188
+ mov r6, #0
+ cmp r7, #0
+ bls _02254192
+ add r5, r6, #0
+_02254176:
+ ldr r0, [r4, #0x14]
+ add r0, r0, r5
+ bl MOD20_022542E4
+ add r6, r6, #1
+ add r5, #0xe
+ cmp r6, r7
+ blo _02254176
+ b _02254192
+_02254188:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02016A8C
+ mov r4, #0
+_02254192:
+ add r0, r4, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD20_02254130
+
+ thumb_func_start MOD20_02254198
+MOD20_02254198: ; 0x02254198
+ push {r4, lr}
+ add r4, r0, #0
+ bne _022541A2
+ bl ErrorHandling
+_022541A2:
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0x14]
+ bl FUN_02016A8C
+ ldr r0, [r4, #8]
+ add r1, r4, #0
+ bl FUN_02016A8C
+ pop {r4, pc}
+ thumb_func_end MOD20_02254198
+
+ thumb_func_start MOD20_022541B4
+MOD20_022541B4: ; 0x022541B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ bl FUN_02020A98
+ str r0, [sp, #4]
+ cmp r0, #0
+ beq _0225420C
+ bl FUN_02020AA4
+ ldr r1, [r5, #0xc]
+ mov r7, #0
+ str r0, [sp]
+ cmp r1, #0
+ bls _02254232
+ add r4, r7, #0
+ add r6, r7, #0
+_022541D6:
+ ldr r0, [r5, #0x14]
+ add r1, r0, r4
+ ldrb r0, [r1, #1]
+ strb r0, [r1, #2]
+ ldr r0, [r5, #0x14]
+ add r0, r0, r4
+ ldrb r0, [r0, #1]
+ cmp r0, #0
+ ldr r0, [r5]
+ beq _022541F2
+ add r0, r0, r6
+ bl FUN_02020A40
+ b _022541F8
+_022541F2:
+ add r0, r0, r6
+ bl FUN_02020A6C
+_022541F8:
+ ldr r1, [r5, #0x14]
+ add r7, r7, #1
+ add r1, r1, r4
+ strb r0, [r1, #1]
+ ldr r1, [r5, #0xc]
+ add r4, #0xe
+ add r6, r6, #4
+ cmp r7, r1
+ blo _022541D6
+ b _02254232
+_0225420C:
+ ldr r1, [r5, #0xc]
+ mov r2, #0
+ str r2, [sp]
+ cmp r1, #0
+ bls _02254232
+ add r0, r2, #0
+ add r3, r2, #0
+_0225421A:
+ ldr r1, [r5, #0x14]
+ add r2, r2, #1
+ add r4, r1, r0
+ ldrb r1, [r4, #1]
+ strb r1, [r4, #2]
+ ldr r1, [r5, #0x14]
+ add r1, r1, r0
+ strb r3, [r1, #1]
+ ldr r1, [r5, #0xc]
+ add r0, #0xe
+ cmp r2, r1
+ blo _0225421A
+_02254232:
+ mov r6, #0
+ cmp r1, #0
+ bls _02254278
+ ldr r7, _022542A8 ; =0x02254710
+ add r4, r6, #0
+_0225423C:
+ ldr r3, [r5, #0x14]
+ ldr r1, [sp, #4]
+ add r0, r3, r4
+ ldrb r3, [r3, r4]
+ ldr r2, [sp]
+ lsl r3, r3, #2
+ ldr r3, [r7, r3]
+ blx r3
+ add r1, r0, #0
+ ldr r0, [r5, #0x14]
+ add r0, r0, r4
+ ldrb r2, [r0, #1]
+ ldrb r0, [r0, #2]
+ cmp r2, r0
+ bne _0225425C
+ mov r2, #2
+_0225425C:
+ cmp r1, #0
+ bne _02254264
+ cmp r2, #2
+ beq _0225426E
+_02254264:
+ ldr r3, [r5, #0x10]
+ ldr r4, [r5, #4]
+ add r0, r6, #0
+ blx r4
+ b _02254278
+_0225426E:
+ ldr r0, [r5, #0xc]
+ add r6, r6, #1
+ add r4, #0xe
+ cmp r6, r0
+ blo _0225423C
+_02254278:
+ ldr r0, [r5, #0xc]
+ add r6, r6, #1
+ cmp r6, r0
+ bhs _022542A2
+ mov r0, #0xe
+ add r4, r6, #0
+ ldr r7, _022542A8 ; =0x02254710
+ mul r4, r0
+_02254288:
+ ldr r3, [r5, #0x14]
+ ldr r1, [sp, #4]
+ add r0, r3, r4
+ ldrb r3, [r3, r4]
+ ldr r2, [sp]
+ lsl r3, r3, #2
+ ldr r3, [r7, r3]
+ blx r3
+ ldr r0, [r5, #0xc]
+ add r6, r6, #1
+ add r4, #0xe
+ cmp r6, r0
+ blo _02254288
+_022542A2:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022542A8: .word 0x02254710
+ thumb_func_end MOD20_022541B4
+
+ thumb_func_start MOD20_022542AC
+MOD20_022542AC: ; 0x022542AC
+ push {r3, r4}
+ ldr r4, [r0, #0x14]
+ mov r0, #0xe
+ mul r0, r1
+ add r1, r4, r0
+ lsl r0, r2, #1
+ add r0, r1, r0
+ strh r3, [r0, #8]
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD20_022542AC
+
+ thumb_func_start MOD20_022542C0
+MOD20_022542C0: ; 0x022542C0
+ ldr r3, [r0, #0x14]
+ mov r0, #0xe
+ mul r0, r1
+ add r0, r3, r0
+ strh r2, [r0, #0xc]
+ bx lr
+ thumb_func_end MOD20_022542C0
+
+ thumb_func_start MOD20_022542CC
+MOD20_022542CC: ; 0x022542CC
+ add r3, r1, #0
+ mov r2, #0xe
+ mul r3, r2
+ ldr r1, [r0, #0x14]
+ mov r2, #0
+ add r1, r1, r3
+ strh r2, [r1, #4]
+ ldr r0, [r0, #0x14]
+ mov r1, #4
+ strb r1, [r0, r3]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_022542CC
+
+ thumb_func_start MOD20_022542E4
+MOD20_022542E4: ; 0x022542E4
+ mov r2, #0
+ strb r2, [r0]
+ strb r2, [r0, #1]
+ strb r2, [r0, #2]
+ strh r2, [r0, #4]
+ strh r2, [r0, #6]
+ add r3, r0, #0
+ add r1, r2, #0
+_022542F4:
+ add r2, r2, #1
+ strh r1, [r3, #8]
+ add r3, r3, #2
+ cmp r2, #2
+ blo _022542F4
+ strh r1, [r0, #0xc]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_022542E4
+
+ thumb_func_start MOD20_02254304
+MOD20_02254304: ; 0x02254304
+ strb r1, [r0]
+ mov r1, #0
+ strh r1, [r0, #4]
+ bx lr
+ thumb_func_end MOD20_02254304
+
+ thumb_func_start MOD20_0225430C
+MOD20_0225430C: ; 0x0225430C
+ strb r1, [r0]
+ bx lr
+ thumb_func_end MOD20_0225430C
+
+ thumb_func_start MOD20_02254310
+MOD20_02254310: ; 0x02254310
+ ldrh r2, [r0, #4]
+ ldr r1, _02254320 ; =0x0000FFFF
+ cmp r2, r1
+ bhs _0225431C
+ add r1, r2, #1
+ strh r1, [r0, #4]
+_0225431C:
+ bx lr
+ nop
+_02254320: .word 0x0000FFFF
+ thumb_func_end MOD20_02254310
+
+ thumb_func_start MOD20_02254324
+MOD20_02254324: ; 0x02254324
+ ldrh r3, [r0, #4]
+ mov r2, #0
+_02254328:
+ ldrh r1, [r0, #8]
+ cmp r3, r1
+ bne _02254332
+ add r0, r2, #5
+ bx lr
+_02254332:
+ add r2, r2, #1
+ add r0, r0, #2
+ cmp r2, #2
+ blo _02254328
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD20_02254324
+
+ thumb_func_start MOD20_02254340
+MOD20_02254340: ; 0x02254340
+ push {r3, lr}
+ ldrb r1, [r0, #1]
+ cmp r1, #0
+ beq _02254356
+ cmp r2, #0
+ beq _02254356
+ mov r1, #1
+ bl MOD20_02254304
+ mov r0, #1
+ pop {r3, pc}
+_02254356:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD20_02254340
+
+ thumb_func_start MOD20_0225435C
+MOD20_0225435C: ; 0x0225435C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD20_02254310
+ ldrb r0, [r5, #1]
+ cmp r0, #0
+ beq _0225438A
+ add r0, r5, #0
+ bl MOD20_02254324
+ cmp r0, #0
+ bne _022543B8
+ ldrh r1, [r5, #0xc]
+ cmp r1, #0
+ beq _022543B6
+ ldrh r0, [r5, #4]
+ cmp r0, r1
+ blo _022543B6
+ mov r0, #0
+ strh r0, [r5, #4]
+ mov r0, #7
+ pop {r3, r4, r5, pc}
+_0225438A:
+ cmp r4, #0
+ beq _0225439A
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD20_02254304
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_0225439A:
+ ldrh r0, [r5, #6]
+ cmp r0, #0
+ beq _022543AA
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD20_0225430C
+ b _022543B6
+_022543AA:
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD20_02254304
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_022543B6:
+ mov r0, #0
+_022543B8:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD20_0225435C
+
+ thumb_func_start MOD20_022543BC
+MOD20_022543BC: ; 0x022543BC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ bl MOD20_02254310
+ ldrh r1, [r5, #4]
+ ldrh r0, [r5, #6]
+ cmp r1, r0
+ bls _022543DA
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD20_02254304
+ mov r0, #3
+ pop {r3, r4, r5, pc}
+_022543DA:
+ ldrb r0, [r5, #1]
+ cmp r0, #0
+ beq _022543F0
+ cmp r4, #0
+ beq _022543F0
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD20_02254304
+ mov r0, #4
+ pop {r3, r4, r5, pc}
+_022543F0:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD20_022543BC
+
+ thumb_func_start MOD20_022543F4
+MOD20_022543F4: ; 0x022543F4
+ push {r3, lr}
+ ldrb r1, [r0, #1]
+ cmp r1, #0
+ beq _02254402
+ bl MOD20_02254310
+ b _02254408
+_02254402:
+ mov r1, #0
+ bl MOD20_02254304
+_02254408:
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD20_022543F4
+
+ thumb_func_start MOD20_0225440C
+MOD20_0225440C: ; 0x0225440C
+ push {r3, lr}
+ ldrb r1, [r0, #1]
+ cmp r1, #0
+ bne _0225441A
+ mov r1, #0
+ bl MOD20_02254304
+_0225441A:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD20_0225440C
+
+ thumb_func_start MOD20_02254420
+MOD20_02254420: ; 0x02254420
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ add r7, r3, #0
+ cmp r5, #0x1e
+ blo _02254432
+ bl ErrorHandling
+_02254432:
+ cmp r4, #0x21
+ blo _0225443A
+ bl ErrorHandling
+_0225443A:
+ cmp r5, #0x1e
+ blo _02254440
+ mov r5, #0
+_02254440:
+ cmp r4, #0x21
+ blo _02254446
+ mov r4, #0
+_02254446:
+ ldr r0, _02254458 ; =0x02254744
+ lsl r1, r5, #1
+ ldrh r0, [r0, r1]
+ lsl r1, r4, #1
+ str r0, [r6]
+ ldr r0, _0225445C ; =0x02254780
+ ldrh r0, [r0, r1]
+ str r0, [r7]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254458: .word 0x02254744
+_0225445C: .word 0x02254780
+ thumb_func_end MOD20_02254420
+
+ thumb_func_start MOD20_02254460
+MOD20_02254460: ; 0x02254460
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ cmp r5, #4
+ blo _02254470
+ bl ErrorHandling
+_02254470:
+ ldr r0, _02254480 ; =0x02254724
+ lsl r1, r5, #3
+ ldr r0, [r0, r1]
+ str r0, [r4]
+ ldr r0, _02254484 ; =0x02254728
+ ldr r0, [r0, r1]
+ str r0, [r6]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254480: .word 0x02254724
+_02254484: .word 0x02254728
+ thumb_func_end MOD20_02254460
+
+ thumb_func_start MOD20_02254488
+MOD20_02254488: ; 0x02254488
+ push {r4, r5}
+ ldr r5, _022544B8 ; =0x022547C2
+ mov r4, #0
+_0225448E:
+ ldrh r3, [r5]
+ cmp r0, r3
+ bne _022544A8
+ ldr r0, _022544BC ; =0x022547C4
+ lsl r3, r4, #2
+ ldrb r0, [r0, r3]
+ str r0, [r1]
+ ldr r0, _022544C0 ; =0x022547C5
+ ldrb r0, [r0, r3]
+ str r0, [r2]
+ mov r0, #1
+ pop {r4, r5}
+ bx lr
+_022544A8:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x1d
+ blo _0225448E
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+ nop
+_022544B8: .word 0x022547C2
+_022544BC: .word 0x022547C4
+_022544C0: .word 0x022547C5
+ thumb_func_end MOD20_02254488
+
+ .section .rodata
+ ; 0x022544C4
+ .incbin "baserom.nds", 0x285284, 0x374
diff --git a/arm9/modules/21/asm/module_21.s b/arm9/modules/21/asm/module_21.s
new file mode 100644
index 00000000..0c30eb9a
--- /dev/null
+++ b/arm9/modules/21/asm/module_21.s
@@ -0,0 +1,735 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD21_02254840
+MOD21_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD21_02254854
+ ldr r1, _02254850 ; =MOD21_0225496C
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD21_02254854
+_02254850: .word MOD21_0225496C
+ thumb_func_end MOD21_02254840
+
+ thumb_func_start MOD21_02254854
+MOD21_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x2c
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD21_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD21_02254930
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD21_02254930
+ thumb_func_end MOD21_02254854
+
+ thumb_func_start MOD21_0225489C
+MOD21_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r1, r5, #0
+ add r0, #0x24
+ add r1, #0x14
+ bl MOD21_02254A6C
+ cmp r0, #0
+ beq _0225490A
+ mov r1, #0
+ strb r1, [r5]
+ strb r1, [r5, #1]
+ strb r1, [r5, #2]
+ mov r0, #1
+ strb r0, [r5, #3]
+ strb r1, [r5, #6]
+ add r0, r5, #0
+ str r1, [r5, #0x20]
+ add r0, #0x14
+ bl FUN_02012690
+ ldr r0, [r5, #0x14]
+ cmp r0, #0x18
+ blo _022548D6
+ mov r1, #0x18
+ bl _u32_div_f
+ str r1, [r5, #0x14]
+_022548D6:
+ ldr r0, [r5, #0x18]
+ cmp r0, #0x3c
+ blo _022548E6
+ ldr r0, [r5, #0x14]
+ mov r1, #0x3c
+ bl _u32_div_f
+ str r1, [r5, #0x14]
+_022548E6:
+ ldr r0, [r5, #0x18]
+ ldr r2, _02254910 ; =MOD21_02254974
+ strb r0, [r5, #5]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254914 ; =0x02254D80
+ mov r1, #1
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x10]
+ cmp r0, #0
+ bne _02254904
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02254904:
+ str r4, [r5, #0x28]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0225490A:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02254910: .word MOD21_02254974
+_02254914: .word 0x02254D80
+ thumb_func_end MOD21_0225489C
+
+ thumb_func_start MOD21_02254918
+MOD21_02254918: ; 0x02254918
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x24]
+ bl MOD21_02254B04
+ ldr r0, [r4, #0x10]
+ bl MOD20_02254198
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD21_02254918
+
+ thumb_func_start MOD21_02254930
+MOD21_02254930: ; 0x02254930
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254966
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x10]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254968 ; =0x02254D84
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254966
+ add r0, r4, #0
+ bl MOD21_02254918
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x28]
+ bl MOD20_022529A0
+_02254966:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254968: .word 0x02254D84
+ thumb_func_end MOD21_02254930
+
+ thumb_func_start MOD21_0225496C
+MOD21_0225496C: ; 0x0225496C
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD21_0225496C
+
+ thumb_func_start MOD21_02254974
+MOD21_02254974: ; 0x02254974
+ cmp r2, #0
+ beq _02254984
+ cmp r2, #1
+ bne _0225498C
+ mov r0, #1
+ str r0, [r3, #0x20]
+ strb r0, [r3, #6]
+ bx lr
+_02254984:
+ mov r0, #0
+ str r0, [r3, #0x20]
+ mov r0, #1
+ strb r0, [r3, #6]
+_0225498C:
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD21_02254974
+
+ thumb_func_start MOD21_02254990
+MOD21_02254990: ; 0x02254990
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254998
+ b _0225499A
+_02254998:
+ mov r1, #2
+_0225499A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD21_02254990
+
+ thumb_func_start MOD21_022549A4
+MOD21_022549A4: ; 0x022549A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549B4
+ cmp r0, #1
+ beq _022549C4
+ b _022549DE
+_022549B4:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD21_02254B10
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549DE
+_022549C4:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD21_02254B34
+ cmp r0, #0
+ beq _022549DE
+ ldr r0, [r4, #0x28]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD21_02254990
+_022549DE:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD21_022549A4
+
+ thumb_func_start MOD21_022549E4
+MOD21_022549E4: ; 0x022549E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549F8
+ mov r1, #2
+ bl MOD21_02254990
+ mov r0, #0
+ pop {r4, pc}
+_022549F8:
+ ldrb r0, [r4, #6]
+ cmp r0, #0
+ beq _02254A0A
+ mov r0, #0
+ strb r0, [r4, #6]
+ ldr r0, [r4, #0x24]
+ mov r1, #2
+ bl MOD21_02254B10
+_02254A0A:
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl MOD21_02254B34
+ cmp r0, #0
+ beq _02254A32
+ ldr r0, [r4, #0x18]
+ strb r0, [r4, #5]
+ add r0, r4, #0
+ add r0, #0x14
+ bl FUN_02012690
+ ldrb r1, [r4, #5]
+ ldr r0, [r4, #0x18]
+ cmp r1, r0
+ beq _02254A32
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl MOD21_02254B10
+_02254A32:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD21_022549E4
+
+ thumb_func_start MOD21_02254A38
+MOD21_02254A38: ; 0x02254A38
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A48
+ cmp r0, #1
+ beq _02254A58
+ b _02254A66
+_02254A48:
+ ldr r0, [r4, #0x24]
+ mov r1, #3
+ bl MOD21_02254B10
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A66
+_02254A58:
+ ldr r0, [r4, #0x24]
+ bl MOD21_02254B40
+ cmp r0, #0
+ beq _02254A66
+ mov r0, #1
+ pop {r4, pc}
+_02254A66:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD21_02254A38
+
+ thumb_func_start MOD21_02254A6C
+MOD21_02254A6C: ; 0x02254A6C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r6, r1, #0
+ mov r1, #3
+ add r5, r0, #0
+ mov r0, #8
+ lsl r1, r1, #8
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254ACC
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xc
+ mov r1, #0x19
+ mov r2, #1
+ add r3, sp, #4
+ bl FUN_02006BDC
+ add r6, r0, #0
+ bne _02254AB2
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #8
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_02254AB2:
+ ldr r0, [sp, #4]
+ add r1, r4, #0
+ add r0, #0xc
+ add r1, #0x30
+ bl MOD21_02254AD4
+ add r0, r6, #0
+ bl FUN_02016A18
+ add sp, #8
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254ACC:
+ mov r0, #0
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD21_02254A6C
+
+ thumb_func_start MOD21_02254AD4
+MOD21_02254AD4: ; 0x02254AD4
+ push {r3, r4, r5, r6, r7, lr}
+ mov r6, #9
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r7, #0
+ lsl r6, r6, #6
+_02254AE0:
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x40
+ bl MIi_CpuCopy16
+ add r1, r4, #0
+ add r0, r5, r6
+ add r1, #0x40
+ mov r2, #0x10
+ bl MIi_CpuCopy16
+ add r7, r7, #1
+ add r5, #0x40
+ add r4, #0x50
+ sub r6, #0x30
+ cmp r7, #9
+ blt _02254AE0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD21_02254AD4
+
+ thumb_func_start MOD21_02254B04
+MOD21_02254B04: ; 0x02254B04
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254B0E
+ bl FUN_02016A18
+_02254B0E:
+ pop {r3, pc}
+ thumb_func_end MOD21_02254B04
+
+ thumb_func_start MOD21_02254B10
+MOD21_02254B10: ; 0x02254B10
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254B30 ; =0x02254DAC
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254B30: .word 0x02254DAC
+ thumb_func_end MOD21_02254B10
+
+ thumb_func_start MOD21_02254B34
+MOD21_02254B34: ; 0x02254B34
+ ldr r3, _02254B3C ; =0x02253795
+ add r0, #8
+ bx r3
+ nop
+_02254B3C: .word 0x02253795
+ thumb_func_end MOD21_02254B34
+
+ thumb_func_start MOD21_02254B40
+MOD21_02254B40: ; 0x02254B40
+ ldr r3, _02254B48 ; =0x022537B9
+ add r0, #8
+ bx r3
+ nop
+_02254B48: .word 0x022537B9
+ thumb_func_end MOD21_02254B40
+
+ thumb_func_start MOD21_02254B4C
+MOD21_02254B4C: ; 0x02254B4C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD21_02254B4C
+
+ thumb_func_start MOD21_02254B60
+MOD21_02254B60: ; 0x02254B60
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254BE8 ; =0x02254D90
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x17
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x18
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ add r0, r5, #0
+ bl MOD21_02254C5C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254BEC ; =0x04001000
+ ldr r0, _02254BF0 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD21_02254B4C
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254BE8: .word 0x02254D90
+_02254BEC: .word 0x04001000
+_02254BF0: .word 0xFFFFE0FF
+ thumb_func_end MOD21_02254B60
+
+ thumb_func_start MOD21_02254BF4
+MOD21_02254BF4: ; 0x02254BF4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ bl MOD21_02254C5C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD21_02254B4C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD21_02254BF4
+
+ thumb_func_start MOD21_02254C14
+MOD21_02254C14: ; 0x02254C14
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ cmp r0, #0
+ beq _02254C30
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD11_02252DB4
+ b _02254C38
+_02254C30:
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+_02254C38:
+ add r0, r4, #0
+ bl MOD21_02254B4C
+ pop {r4, pc}
+ thumb_func_end MOD21_02254C14
+
+ thumb_func_start MOD21_02254C40
+MOD21_02254C40: ; 0x02254C40
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD21_02254B4C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD21_02254C40
+
+ thumb_func_start MOD21_02254C5C
+MOD21_02254C5C: ; 0x02254C5C
+ push {r4, r5, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r2, _02254D74 ; =0x04000280
+ ldr r0, [r0]
+ mov r3, #0
+ strh r3, [r2]
+ str r0, [r2, #0x10]
+ add r0, r2, #0
+ mov r1, #0xa
+ add r0, #0x18
+ str r1, [r0]
+ str r3, [r0, #4]
+ lsr r0, r2, #0xb
+_02254C7A:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254C7A
+ ldr r0, _02254D78 ; =0x040002A0
+ add r3, r0, #0
+ ldr r1, [r0]
+ sub r3, #0x20
+ lsr r0, r0, #0xb
+_02254C8A:
+ ldrh r2, [r3]
+ tst r2, r0
+ bne _02254C8A
+ ldr r0, _02254D7C ; =0x040002A8
+ add r2, r4, #0
+ ldr r5, [r0]
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #9
+ lsl r1, r1, #0x1a
+ str r0, [sp, #4]
+ add r2, #0x30
+ str r2, [sp, #8]
+ lsr r1, r1, #0x18
+ str r1, [sp, #0xc]
+ mov r1, #0
+ str r1, [sp, #0x10]
+ mov r1, #0x28
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ mov r2, #3
+ mov r3, #7
+ bl FUN_02018170
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #9
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r1, #0x30
+ str r1, [sp, #8]
+ lsl r1, r5, #0x1a
+ lsr r1, r1, #0x18
+ str r1, [sp, #0xc]
+ mov r1, #0
+ str r1, [sp, #0x10]
+ mov r1, #0x28
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ mov r2, #8
+ mov r3, #7
+ bl FUN_02018170
+ ldr r0, [r4]
+ ldr r2, _02254D74 ; =0x04000280
+ ldr r0, [r0, #4]
+ mov r3, #0
+ strh r3, [r2]
+ str r0, [r2, #0x10]
+ add r0, r2, #0
+ mov r1, #0xa
+ add r0, #0x18
+ str r1, [r0]
+ str r3, [r0, #4]
+ lsr r0, r2, #0xb
+_02254D00:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254D00
+ ldr r0, _02254D78 ; =0x040002A0
+ add r3, r0, #0
+ ldr r1, [r0]
+ sub r3, #0x20
+ lsr r0, r0, #0xb
+_02254D10:
+ ldrh r2, [r3]
+ tst r2, r0
+ bne _02254D10
+ ldr r0, _02254D7C ; =0x040002A8
+ add r2, r4, #0
+ ldr r5, [r0]
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #9
+ lsl r1, r1, #0x1a
+ str r0, [sp, #4]
+ add r2, #0x30
+ str r2, [sp, #8]
+ lsr r1, r1, #0x18
+ str r1, [sp, #0xc]
+ mov r1, #0
+ str r1, [sp, #0x10]
+ mov r1, #0x28
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ mov r2, #0xf
+ mov r3, #7
+ bl FUN_02018170
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #9
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r1, #0x30
+ str r1, [sp, #8]
+ lsl r1, r5, #0x1a
+ lsr r1, r1, #0x18
+ str r1, [sp, #0xc]
+ mov r1, #0
+ str r1, [sp, #0x10]
+ mov r1, #0x28
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ mov r2, #0x14
+ mov r3, #7
+ bl FUN_02018170
+ add sp, #0x1c
+ pop {r4, r5, pc}
+ nop
+_02254D74: .word 0x04000280
+_02254D78: .word 0x040002A0
+_02254D7C: .word 0x040002A8
+ thumb_func_end MOD21_02254C5C
+
+ .section .rodata
+ ; 0x02254D80
+ .incbin "baserom.nds", 0x285B40, 0x68
+
+ ; Dumb hack because the compiler aligns to 16 instead of 8
+ ;.section .sinit
+ .global SDK_OVERLAY.MODULE_21.SINIT_START
+ .global SDK_OVERLAY.MODULE_21.SINIT_END
+SDK_OVERLAY.MODULE_21.SINIT_START:
+ .word MOD21_02254840
+ .word 0
+SDK_OVERLAY.MODULE_21.SINIT_END:
diff --git a/arm9/modules/22/asm/module_22.s b/arm9/modules/22/asm/module_22.s
new file mode 100644
index 00000000..610d0a55
--- /dev/null
+++ b/arm9/modules/22/asm/module_22.s
@@ -0,0 +1,1848 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD22_02254840
+MOD22_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD22_02254854
+ ldr r1, _02254850 ; =MOD22_022549D8
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD22_02254854
+_02254850: .word MOD22_022549D8
+ thumb_func_end MOD22_02254840
+
+ thumb_func_start MOD22_02254854
+MOD22_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x68
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r2, [sp]
+ add r1, r7, #0
+ bl MOD22_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD22_0225497C
+ add r1, r4, #0
+ mov r2, #1
+ str r6, [r4, #0x64]
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _02254892
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD22_0225497C
+ thumb_func_end MOD22_02254854
+
+ thumb_func_start MOD22_0225489C
+MOD22_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r1, r5, #0
+ str r2, [r5, #8]
+ add r0, r2, #0
+ add r1, #0x38
+ mov r2, #0x24
+ bl FUN_02089418
+ cmp r0, #0
+ beq _022548F0
+ add r0, r5, #0
+ add r0, #0x4c
+ ldmia r0!, {r2, r3}
+ add r0, r5, #0
+ add r0, #0xc
+ stmia r0!, {r2, r3}
+ add r0, r5, #0
+ add r0, #0x54
+ ldmia r0!, {r2, r3}
+ add r0, r5, #0
+ add r0, #0x14
+ stmia r0!, {r2, r3}
+ ldr r0, [r5, #0x3c]
+ str r0, [r5, #0x30]
+ ldr r0, [r5, #0x40]
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x44]
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x48]
+ str r0, [r5, #0x24]
+ ldr r0, [r5, #0x38]
+ str r0, [r5, #0x1c]
+ cmp r0, #0
+ beq _022548EA
+ mov r0, #2
+ str r0, [r5, #0x34]
+ b _022548FA
+_022548EA:
+ mov r0, #0
+ str r0, [r5, #0x34]
+ b _022548FA
+_022548F0:
+ add r0, r5, #0
+ bl MOD22_02254CE4
+ mov r0, #0
+ str r0, [r5, #0x34]
+_022548FA:
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0x60
+ add r1, #0x1c
+ add r2, r4, #0
+ bl MOD22_02254E8C
+ cmp r0, #0
+ beq _02254926
+ mov r1, #0
+ strb r1, [r5]
+ strb r1, [r5, #1]
+ ldrb r0, [r5]
+ strb r0, [r5, #3]
+ add r0, r5, #0
+ strb r1, [r5, #2]
+ bl MOD22_02254C88
+ cmp r0, #0
+ beq _02254926
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02254926:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD22_0225489C
+
+ thumb_func_start MOD22_0225492C
+MOD22_0225492C: ; 0x0225492C
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xc
+ ldmia r0!, {r2, r3}
+ add r0, r4, #0
+ add r0, #0x4c
+ stmia r0!, {r2, r3}
+ add r0, r4, #0
+ add r0, #0x14
+ ldmia r0!, {r2, r3}
+ add r0, r4, #0
+ add r0, #0x54
+ stmia r0!, {r2, r3}
+ ldr r0, [r4, #0x30]
+ add r1, r4, #0
+ str r0, [r4, #0x3c]
+ ldr r0, [r4, #0x2c]
+ add r1, #0x38
+ str r0, [r4, #0x40]
+ ldr r0, [r4, #0x28]
+ mov r2, #0x24
+ str r0, [r4, #0x44]
+ ldr r0, [r4, #0x24]
+ str r0, [r4, #0x48]
+ ldr r0, [r4, #0x1c]
+ str r0, [r4, #0x38]
+ ldr r0, [r4, #8]
+ bl FUN_020893F0
+ add r0, r4, #0
+ bl MOD22_02254CD4
+ ldr r0, [r4, #0x60]
+ bl MOD22_02254F10
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD22_0225492C
+
+ thumb_func_start MOD22_0225497C
+MOD22_0225497C: ; 0x0225497C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #6
+ bhs _022549D2
+ ldrb r0, [r4, #2]
+ cmp r0, #0
+ beq _0225499E
+ cmp r1, #5
+ beq _0225499E
+ add r0, r4, #0
+ mov r1, #5
+ bl MOD22_022549E0
+ mov r0, #0
+ strb r0, [r4, #2]
+_0225499E:
+ ldr r0, [r4, #0x64]
+ ldr r1, [r4, #0x5c]
+ bl MOD20_02252C14
+ add r1, r4, #0
+ add r0, r4, #0
+ add r1, #0x1c
+ bl MOD22_02254D58
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _022549D4 ; =0x0225561C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _022549D2
+ add r0, r4, #0
+ bl MOD22_0225492C
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x64]
+ bl MOD20_022529A0
+_022549D2:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022549D4: .word 0x0225561C
+ thumb_func_end MOD22_0225497C
+
+ thumb_func_start MOD22_022549D8
+MOD22_022549D8: ; 0x022549D8
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD22_022549D8
+
+ thumb_func_start MOD22_022549E0
+MOD22_022549E0: ; 0x022549E0
+ ldrb r2, [r0]
+ strb r2, [r0, #3]
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549EE
+ strb r1, [r0]
+ b _022549F6
+_022549EE:
+ mov r1, #5
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #2]
+_022549F6:
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ thumb_func_end MOD22_022549E0
+
+ thumb_func_start MOD22_022549FC
+MOD22_022549FC: ; 0x022549FC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A0C
+ cmp r0, #1
+ beq _02254A1C
+ b _02254A46
+_02254A0C:
+ ldr r0, [r4, #0x60]
+ mov r1, #0
+ bl MOD22_02255048
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A46
+_02254A1C:
+ ldr r0, [r4, #0x60]
+ mov r1, #0
+ bl MOD22_0225506C
+ cmp r0, #0
+ beq _02254A46
+ ldr r0, [r4, #0x64]
+ bl MOD20_0225298C
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _02254A3E
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD22_022549E0
+ b _02254A46
+_02254A3E:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD22_022549E0
+_02254A46:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD22_022549FC
+
+ thumb_func_start MOD22_02254A4C
+MOD22_02254A4C: ; 0x02254A4C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A5C
+ cmp r0, #1
+ beq _02254A74
+ b _02254AC8
+_02254A5C:
+ ldrb r0, [r4, #4]
+ cmp r0, #1
+ bne _02254AC8
+ mov r1, #1
+ str r1, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ bl MOD22_02255048
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AC8
+_02254A74:
+ ldrb r0, [r4, #4]
+ cmp r0, #2
+ beq _02254A84
+ cmp r0, #3
+ beq _02254A98
+ cmp r0, #5
+ beq _02254AB4
+ b _02254AC8
+_02254A84:
+ mov r0, #0
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_02255048
+ ldrb r0, [r4, #1]
+ sub r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AC8
+_02254A98:
+ mov r0, #2
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_02255048
+ add r0, r4, #0
+ bl MOD22_02254D00
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD22_022549E0
+ b _02254AC8
+_02254AB4:
+ mov r0, #3
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_02255048
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD22_022549E0
+_02254AC8:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD22_02254A4C
+
+ thumb_func_start MOD22_02254ACC
+MOD22_02254ACC: ; 0x02254ACC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254ADC
+ cmp r1, #1
+ beq _02254AFA
+ b _02254B4A
+_02254ADC:
+ ldrb r1, [r4, #4]
+ cmp r1, #1
+ bne _02254B4A
+ mov r1, #1
+ str r1, [r4, #0x34]
+ bl MOD22_02254D44
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_02255048
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B4A
+_02254AFA:
+ ldrb r0, [r4, #4]
+ cmp r0, #2
+ beq _02254B0A
+ cmp r0, #3
+ beq _02254B20
+ cmp r0, #5
+ beq _02254B36
+ b _02254B4A
+_02254B0A:
+ mov r0, #0
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_02255048
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD22_022549E0
+ b _02254B4A
+_02254B20:
+ mov r0, #0
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_02255048
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD22_022549E0
+ b _02254B4A
+_02254B36:
+ mov r0, #3
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_02255048
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD22_022549E0
+_02254B4A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD22_02254ACC
+
+ thumb_func_start MOD22_02254B50
+MOD22_02254B50: ; 0x02254B50
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #4]
+ cmp r1, #2
+ beq _02254B84
+ cmp r1, #3
+ beq _02254B64
+ cmp r1, #6
+ beq _02254B9A
+ b _02254BAE
+_02254B64:
+ ldrb r1, [r4, #3]
+ cmp r1, #1
+ bne _02254B84
+ bl MOD22_02254D00
+ mov r0, #2
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_02255048
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD22_022549E0
+ b _02254BAE
+_02254B84:
+ mov r0, #0
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_02255048
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD22_022549E0
+ b _02254BAE
+_02254B9A:
+ mov r0, #4
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_02255048
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD22_022549E0
+_02254BAE:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD22_02254B50
+
+ thumb_func_start MOD22_02254BB4
+MOD22_02254BB4: ; 0x02254BB4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #3
+ bhi _02254C4A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254BCA: ; jump table
+ .short _02254BD2 - _02254BCA - 2 ; case 0
+ .short _02254BDC - _02254BCA - 2 ; case 1
+ .short _02254C00 - _02254BCA - 2 ; case 2
+ .short _02254C2A - _02254BCA - 2 ; case 3
+_02254BD2:
+ mov r0, #0
+ strh r0, [r4, #6]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+_02254BDC:
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ ldrh r0, [r4, #6]
+ cmp r0, #0x5a
+ blo _02254C4A
+ mov r0, #5
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_02255048
+ mov r0, #0
+ strh r0, [r4, #6]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254C4A
+_02254C00:
+ ldrh r0, [r4, #6]
+ add r0, r0, #1
+ strh r0, [r4, #6]
+ ldrh r0, [r4, #6]
+ cmp r0, #0x3c
+ blo _02254C4A
+ mov r0, #6
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_02255048
+ add r0, r4, #0
+ bl MOD22_02254CE4
+ mov r0, #0
+ strh r0, [r4, #6]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254C4A
+_02254C2A:
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_0225506C
+ cmp r0, #0
+ beq _02254C4A
+ mov r0, #0
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ mov r1, #1
+ bl MOD22_02255048
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD22_022549E0
+_02254C4A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD22_02254BB4
+
+ thumb_func_start MOD22_02254C50
+MOD22_02254C50: ; 0x02254C50
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254C60
+ cmp r0, #1
+ beq _02254C74
+ b _02254C82
+_02254C60:
+ mov r0, #7
+ str r0, [r4, #0x34]
+ ldr r0, [r4, #0x60]
+ mov r1, #3
+ bl MOD22_02255048
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254C82
+_02254C74:
+ ldr r0, [r4, #0x60]
+ bl MOD22_02255078
+ cmp r0, #0
+ beq _02254C82
+ mov r0, #1
+ pop {r4, pc}
+_02254C82:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD22_02254C50
+
+ thumb_func_start MOD22_02254C88
+MOD22_02254C88: ; 0x02254C88
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254CCC ; =0x02255618
+ ldr r2, _02254CD0 ; =MOD22_02254CE0
+ mov r1, #1
+ add r3, r4, #0
+ bl MOD20_02254130
+ str r0, [r4, #0x5c]
+ cmp r0, #0
+ beq _02254CC4
+ mov r1, #0
+ add r2, r1, #0
+ mov r3, #0xf
+ bl MOD20_022542AC
+ ldr r0, [r4, #0x5c]
+ mov r1, #0
+ mov r2, #1
+ mov r3, #0x4b
+ bl MOD20_022542AC
+ mov r0, #0
+ strb r0, [r4, #4]
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, pc}
+_02254CC4:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_02254CCC: .word 0x02255618
+_02254CD0: .word MOD22_02254CE0
+ thumb_func_end MOD22_02254C88
+
+ thumb_func_start MOD22_02254CD4
+MOD22_02254CD4: ; 0x02254CD4
+ ldr r3, _02254CDC ; =0x02254199
+ ldr r0, [r0, #0x5c]
+ bx r3
+ nop
+_02254CDC: .word 0x02254199
+ thumb_func_end MOD22_02254CD4
+
+ thumb_func_start MOD22_02254CE0
+MOD22_02254CE0: ; 0x02254CE0
+ strb r1, [r3, #4]
+ bx lr
+ thumb_func_end MOD22_02254CE0
+
+ thumb_func_start MOD22_02254CE4
+MOD22_02254CE4: ; 0x02254CE4
+ mov r2, #0
+ str r2, [r0, #0x1c]
+ mov r1, #1
+ str r1, [r0, #0x20]
+ str r2, [r0, #0x24]
+ str r2, [r0, #0x28]
+ str r2, [r0, #0x2c]
+ str r2, [r0, #0x30]
+ str r2, [r0, #0xc]
+ str r2, [r0, #0x10]
+ str r2, [r0, #0x14]
+ str r2, [r0, #0x18]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD22_02254CE4
+
+ thumb_func_start MOD22_02254D00
+MOD22_02254D00: ; 0x02254D00
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r3, [r4, #0xc]
+ mov r0, #0
+ ldr r2, [r4, #0x10]
+ mov r1, #0
+ eor r1, r2
+ eor r0, r3
+ orr r0, r1
+ beq _02254D32
+ bl FUN_02020BF4
+ add r5, r4, #0
+ add r5, #0xc
+ ldr r7, [r4, #0x14]
+ ldr r2, [r4, #0xc]
+ ldr r6, [r4, #0x18]
+ sub r0, r0, r7
+ sbc r1, r6
+ ldr r3, [r5, #4]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r4, #0xc]
+ str r3, [r5, #4]
+ b _02254D3A
+_02254D32:
+ bl FUN_02020BF4
+ str r0, [r4, #0xc]
+ str r1, [r4, #0x10]
+_02254D3A:
+ mov r0, #1
+ str r0, [r4, #0x1c]
+ mov r0, #0
+ str r0, [r4, #0x20]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD22_02254D00
+
+ thumb_func_start MOD22_02254D44
+MOD22_02254D44: ; 0x02254D44
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02020BF4
+ str r0, [r4, #0x14]
+ str r1, [r4, #0x18]
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD22_02254D44
+
+ thumb_func_start MOD22_02254D58
+MOD22_02254D58: ; 0x02254D58
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _02254D66
+ b _02254E7C
+_02254D66:
+ bl FUN_02020BF4
+ ldr r3, [r5, #0xc]
+ ldr r2, [r5, #0x10]
+ sub r0, r0, r3
+ sbc r1, r2
+ bl FUN_02020BFC
+ ldr r2, _02254E80 ; =0x04000280
+ mov r3, #1
+ strh r3, [r2]
+ add r3, r2, #0
+ add r3, #0x10
+ str r0, [r3]
+ str r1, [r3, #4]
+ mov r3, #0xfa
+ add r0, r2, #0
+ lsl r3, r3, #2
+ add r0, #0x18
+ mov r1, #0
+ str r3, [r0]
+ str r1, [r0, #4]
+ lsr r0, r2, #0xb
+_02254D94:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254D94
+ ldr r0, _02254E84 ; =0x040002A0
+ add r3, r0, #0
+ ldr r6, [r0]
+ ldr r5, [r0, #4]
+ sub r3, #0x20
+ lsr r0, r0, #0xb
+_02254DA6:
+ ldrh r1, [r3]
+ tst r1, r0
+ bne _02254DA6
+ ldr r2, _02254E88 ; =0x040002A8
+ mov r0, #1
+ ldr r1, [r2]
+ ldr r7, [r2, #4]
+ strh r0, [r3]
+ add r0, r2, #0
+ sub r0, #0x18
+ str r1, [r0]
+ str r7, [r0, #4]
+ mov r1, #0xa
+ sub r2, #0x10
+ str r1, [r2]
+ mov r0, #0
+ ldr r1, _02254E80 ; =0x04000280
+ str r0, [r2, #4]
+ lsr r0, r1, #0xb
+_02254DCC:
+ ldrh r2, [r1]
+ tst r2, r0
+ bne _02254DCC
+ ldr r0, _02254E84 ; =0x040002A0
+ ldr r2, [r0]
+ str r2, [r4, #8]
+ mov r2, #1
+ strh r2, [r1]
+ add r1, r0, #0
+ sub r1, #0x10
+ str r6, [r1]
+ str r5, [r1, #4]
+ mov r2, #0x3c
+ sub r0, #8
+ str r2, [r0]
+ mov r1, #0
+ ldr r2, _02254E80 ; =0x04000280
+ str r1, [r0, #4]
+ lsr r0, r2, #0xb
+_02254DF2:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254DF2
+ ldr r0, _02254E84 ; =0x040002A0
+ add r1, r0, #0
+ ldr r3, [r0]
+ ldr r2, [r0, #4]
+ sub r1, #0x20
+ lsr r0, r0, #0xb
+_02254E04:
+ ldrh r5, [r1]
+ tst r5, r0
+ bne _02254E04
+ ldr r0, _02254E88 ; =0x040002A8
+ ldr r5, [r0]
+ str r5, [r4, #0xc]
+ mov r5, #1
+ strh r5, [r1]
+ add r1, r0, #0
+ sub r1, #0x18
+ str r3, [r1]
+ str r2, [r1, #4]
+ mov r2, #0x3c
+ sub r0, #0x10
+ str r2, [r0]
+ mov r1, #0
+ ldr r2, _02254E80 ; =0x04000280
+ str r1, [r0, #4]
+ lsr r0, r2, #0xb
+_02254E2A:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254E2A
+ ldr r0, _02254E84 ; =0x040002A0
+ add r2, r0, #0
+ ldr r5, [r0]
+ ldr r3, [r0, #4]
+ sub r2, #0x20
+ lsr r0, r0, #0xb
+_02254E3C:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254E3C
+ ldr r1, _02254E88 ; =0x040002A8
+ mov r6, #0x18
+ ldr r0, [r1]
+ str r0, [r4, #0x10]
+ mov r0, #0
+ sub r6, r5, r6
+ mov ip, r3
+ mov r6, ip
+ sbc r6, r0
+ blo _02254E7A
+ mov r0, #1
+ strh r0, [r2]
+ add r0, r1, #0
+ sub r0, #0x18
+ str r5, [r0]
+ str r3, [r0, #4]
+ mov r2, #0x18
+ sub r1, #0x10
+ str r2, [r1]
+ mov r0, #0
+ ldr r2, _02254E80 ; =0x04000280
+ str r0, [r1, #4]
+ lsr r0, r2, #0xb
+_02254E70:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254E70
+ ldr r0, _02254E88 ; =0x040002A8
+ ldr r5, [r0]
+_02254E7A:
+ str r5, [r4, #0x14]
+_02254E7C:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254E80: .word 0x04000280
+_02254E84: .word 0x040002A0
+_02254E88: .word 0x040002A8
+ thumb_func_end MOD22_02254D58
+
+ thumb_func_start MOD22_02254E8C
+MOD22_02254E8C: ; 0x02254E8C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x88
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254F08
+ str r6, [r4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x5c]
+ mov r0, #8
+ bl FUN_02016B94
+ str r0, [r4, #4]
+ cmp r0, #0
+ bne _02254EBA
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, r5, r6, pc}
+_02254EBA:
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x34
+ mov r1, #0xc
+ mov r2, #0x12
+ mov r3, #0x13
+ bl MOD20_02253FBC
+ cmp r0, #0
+ beq _02254F08
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #0xc
+ mov r2, #3
+ mov r3, #4
+ bl MOD20_02253FBC
+ cmp r0, #0
+ beq _02254F00
+ add r0, r4, #0
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x84
+ str r1, [r0]
+ add sp, #4
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_02254F00:
+ add r4, #0x34
+ add r0, r4, #0
+ bl MOD20_02254014
+_02254F08:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD22_02254E8C
+
+ thumb_func_start MOD22_02254F10
+MOD22_02254F10: ; 0x02254F10
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254F26
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02254F20
+ bl FUN_02016A18
+_02254F20:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254F26:
+ pop {r4, pc}
+ thumb_func_end MOD22_02254F10
+
+ thumb_func_start MOD22_02254F28
+MOD22_02254F28: ; 0x02254F28
+ ldr r3, _02254F30 ; =MOD22_02254F34
+ add r0, r1, #0
+ bx r3
+ nop
+_02254F30: .word MOD22_02254F34
+ thumb_func_end MOD22_02254F28
+
+ thumb_func_start MOD22_02254F34
+MOD22_02254F34: ; 0x02254F34
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r2, _0225503C ; =0x04000280
+ ldr r0, [r0, #0x14]
+ mov r3, #0
+ strh r3, [r2]
+ str r0, [r2, #0x10]
+ add r0, r2, #0
+ mov r1, #0xa
+ add r0, #0x18
+ str r1, [r0]
+ str r3, [r0, #4]
+ lsr r0, r2, #0xb
+_02254F50:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254F50
+ ldr r0, _02255040 ; =0x040002A0
+ add r3, r0, #0
+ ldr r1, [r0]
+ sub r3, #0x20
+ lsr r0, r0, #0xb
+_02254F60:
+ ldrh r2, [r3]
+ tst r2, r0
+ bne _02254F60
+ ldr r0, _02255044 ; =0x040002A8
+ ldr r5, [r0]
+ ldr r0, [r4, #0x60]
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x64]
+ add r1, r5, #0
+ bl MOD20_02253F28
+ ldr r0, [r4]
+ ldr r2, _0225503C ; =0x04000280
+ ldr r0, [r0, #0x10]
+ mov r3, #0
+ strh r3, [r2]
+ str r0, [r2, #0x10]
+ add r0, r2, #0
+ mov r1, #0xa
+ add r0, #0x18
+ str r1, [r0]
+ str r3, [r0, #4]
+ lsr r0, r2, #0xb
+_02254F90:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254F90
+ ldr r0, _02255040 ; =0x040002A0
+ add r3, r0, #0
+ ldr r1, [r0]
+ sub r3, #0x20
+ lsr r0, r0, #0xb
+_02254FA0:
+ ldrh r2, [r3]
+ tst r2, r0
+ bne _02254FA0
+ ldr r0, _02255044 ; =0x040002A8
+ ldr r5, [r0]
+ ldr r0, [r4, #0x68]
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x6c]
+ add r1, r5, #0
+ bl MOD20_02253F28
+ ldr r0, [r4]
+ ldr r2, _0225503C ; =0x04000280
+ ldr r0, [r0, #0xc]
+ mov r3, #0
+ strh r3, [r2]
+ str r0, [r2, #0x10]
+ add r0, r2, #0
+ mov r1, #0xa
+ add r0, #0x18
+ str r1, [r0]
+ str r3, [r0, #4]
+ lsr r0, r2, #0xb
+_02254FD0:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254FD0
+ ldr r0, _02255040 ; =0x040002A0
+ add r3, r0, #0
+ ldr r1, [r0]
+ sub r3, #0x20
+ lsr r0, r0, #0xb
+_02254FE0:
+ ldrh r2, [r3]
+ tst r2, r0
+ bne _02254FE0
+ ldr r0, _02255044 ; =0x040002A8
+ ldr r5, [r0]
+ ldr r0, [r4, #0x70]
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x74]
+ add r1, r5, #0
+ bl MOD20_02253F28
+ ldr r0, [r4]
+ ldr r2, _0225503C ; =0x04000280
+ ldr r0, [r0, #8]
+ mov r3, #0
+ strh r3, [r2]
+ str r0, [r2, #0x10]
+ add r0, r2, #0
+ mov r1, #0xa
+ add r0, #0x18
+ str r1, [r0]
+ str r3, [r0, #4]
+ lsr r0, r2, #0xb
+_02255010:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02255010
+ ldr r0, _02255040 ; =0x040002A0
+ add r3, r0, #0
+ ldr r1, [r0]
+ sub r3, #0x20
+ lsr r0, r0, #0xb
+_02255020:
+ ldrh r2, [r3]
+ tst r2, r0
+ bne _02255020
+ ldr r0, _02255044 ; =0x040002A8
+ ldr r5, [r0]
+ ldr r0, [r4, #0x78]
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x7c]
+ add r1, r5, #0
+ bl MOD20_02253F28
+ pop {r3, r4, r5, pc}
+ nop
+_0225503C: .word 0x04000280
+_02255040: .word 0x040002A0
+_02255044: .word 0x040002A8
+ thumb_func_end MOD22_02254F34
+
+ thumb_func_start MOD22_02255048
+MOD22_02255048: ; 0x02255048
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02255068 ; =0x02255670
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02255068: .word 0x02255670
+ thumb_func_end MOD22_02255048
+
+ thumb_func_start MOD22_0225506C
+MOD22_0225506C: ; 0x0225506C
+ ldr r3, _02255074 ; =0x02253795
+ add r0, #8
+ bx r3
+ nop
+_02255074: .word 0x02253795
+ thumb_func_end MOD22_0225506C
+
+ thumb_func_start MOD22_02255078
+MOD22_02255078: ; 0x02255078
+ ldr r3, _02255080 ; =0x022537B9
+ add r0, #8
+ bx r3
+ nop
+_02255080: .word 0x022537B9
+ thumb_func_end MOD22_02255078
+
+ thumb_func_start MOD22_02255084
+MOD22_02255084: ; 0x02255084
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD22_02255084
+
+ thumb_func_start MOD22_02255098
+MOD22_02255098: ; 0x02255098
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r1, #0
+ add r0, r7, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _0225515C ; =0x02255654
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x15
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x14
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r7, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r7, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ add r0, r4, #0
+ bl MOD22_0225516C
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD22_022551A4
+ ldr r0, _02255160 ; =MOD22_02254F28
+ add r1, r5, #0
+ mov r2, #3
+ bl FUN_0200CA44
+ add r5, #0x84
+ str r0, [r5]
+ add r0, r4, #0
+ bl MOD22_02254F34
+ ldr r0, [r6]
+ cmp r0, #0
+ beq _02255136
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD22_02255048
+_02255136:
+ ldr r1, _02255164 ; =0x04001000
+ ldr r0, _02255168 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #0x14
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r7, #0
+ bl MOD22_02255084
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0225515C: .word 0x02255654
+_02255160: .word MOD22_02254F28
+_02255164: .word 0x04001000
+_02255168: .word 0xFFFFE0FF
+ thumb_func_end MOD22_02255098
+
+ thumb_func_start MOD22_0225516C
+MOD22_0225516C: ; 0x0225516C
+ push {lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #2
+ bl FUN_02006A34
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #1
+ mov r3, #0xa
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x16
+ lsl r3, r3, #8
+ bl FUN_02006A34
+ mov r0, #1
+ add sp, #0xc
+ pop {pc}
+ .align 2, 0
+ thumb_func_end MOD22_0225516C
+
+ thumb_func_start MOD22_022551A4
+MOD22_022551A4: ; 0x022551A4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ str r0, [sp, #4]
+ add r0, #0x48
+ ldr r4, _022551FC ; =0x022556A0
+ str r1, [sp]
+ mov r6, #0
+ add r5, r7, #0
+ str r0, [sp, #4]
+_022551B8:
+ ldr r0, [r7, #0x5c]
+ ldr r2, [sp, #4]
+ add r1, r4, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x60]
+ add r6, r6, #1
+ add r4, #0x10
+ add r5, r5, #4
+ cmp r6, #7
+ bls _022551B8
+ ldr r2, _022551FC ; =0x022556A0
+ lsl r1, r6, #4
+ add r1, r2, r1
+ add r2, r7, #0
+ ldr r0, [r7, #0x5c]
+ add r2, #0x34
+ bl MOD20_02253E74
+ add r1, r7, #0
+ add r1, #0x80
+ str r0, [r1]
+ ldr r0, [sp]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _022551F6
+ add r7, #0x80
+ ldr r0, [r7]
+ mov r1, #1
+ bl MOD20_02253F78
+_022551F6:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022551FC: .word 0x022556A0
+ thumb_func_end MOD22_022551A4
+
+ thumb_func_start MOD22_02255200
+MOD22_02255200: ; 0x02255200
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r4, r0, #0
+ ldr r1, [r4, #0x18]
+ add r0, r5, #0
+ lsl r2, r1, #2
+ ldr r1, _0225522C ; =0x02255638
+ ldr r1, [r1, r2]
+ bl FUN_0201B6C4
+ ldr r2, [r4, #0x18]
+ add r0, r5, #0
+ lsl r3, r2, #2
+ ldr r2, _0225522C ; =0x02255638
+ add r1, r6, #0
+ ldr r2, [r2, r3]
+ blx r2
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0225522C: .word 0x02255638
+ thumb_func_end MOD22_02255200
+
+ thumb_func_start MOD22_02255230
+MOD22_02255230: ; 0x02255230
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD22_02255544
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD22_02255084
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD22_02255230
+
+ thumb_func_start MOD22_02255268
+MOD22_02255268: ; 0x02255268
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD20_02253F78
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #0xb
+ bl MOD20_02253F28
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl MOD22_02255544
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r0, _022552A8 ; =0x00000669
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD22_02255084
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022552A8: .word 0x00000669
+ thumb_func_end MOD22_02255268
+
+ thumb_func_start MOD22_022552AC
+MOD22_022552AC: ; 0x022552AC
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r6, #0x18]
+ cmp r0, #2
+ beq _022552CE
+ add r0, r5, #0
+ bl MOD22_02255084
+ pop {r4, r5, r6, pc}
+_022552CE:
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _022552DC
+ cmp r0, #1
+ pop {r4, r5, r6, pc}
+_022552DC:
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #0xc
+ bl MOD20_02253F28
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl MOD22_02255544
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD22_022552AC
+
+ thumb_func_start MOD22_02255300
+MOD22_02255300: ; 0x02255300
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A8
+ add r5, r0, #0
+ ldr r0, [r7, #0x18]
+ cmp r0, #3
+ beq _0225532A
+ add r0, r6, #0
+ bl MOD22_02255084
+ pop {r3, r4, r5, r6, r7, pc}
+_0225532A:
+ add r0, r6, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _0225533A
+ cmp r0, #1
+ beq _02255358
+ pop {r3, r4, r5, r6, r7, pc}
+_0225533A:
+ mov r0, #6
+ strh r0, [r5]
+ mov r0, #2
+ strb r0, [r5, #3]
+ mov r0, #0
+ strb r0, [r5, #2]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #0xd
+ bl MOD20_02253F28
+ add r0, r6, #0
+ bl MOD20_022538B0
+_02255358:
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD22_02255510
+ cmp r0, #0
+ beq _0225537A
+ ldr r0, _0225537C ; =0x00000669
+ bl MOD20_02252B28
+ ldrb r1, [r5, #3]
+ ldr r0, [r4, #4]
+ bl MOD22_02255544
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+_0225537A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0225537C: .word 0x00000669
+ thumb_func_end MOD22_02255300
+
+ thumb_func_start MOD22_02255380
+MOD22_02255380: ; 0x02255380
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A8
+ add r5, r0, #0
+ ldr r0, [r7, #0x18]
+ cmp r0, #4
+ beq _022553AA
+ add r0, r6, #0
+ bl MOD22_02255084
+ pop {r3, r4, r5, r6, r7, pc}
+_022553AA:
+ add r0, r6, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _022553BA
+ cmp r0, #1
+ beq _022553D8
+ pop {r3, r4, r5, r6, r7, pc}
+_022553BA:
+ mov r0, #3
+ strh r0, [r5]
+ mov r0, #2
+ strb r0, [r5, #3]
+ mov r0, #0
+ strb r0, [r5, #2]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #0xe
+ bl MOD20_02253F28
+ add r0, r6, #0
+ bl MOD20_022538B0
+_022553D8:
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD22_02255510
+ cmp r0, #0
+ beq _022553FA
+ ldr r0, _022553FC ; =0x00000669
+ bl MOD20_02252B28
+ ldrb r1, [r5, #3]
+ ldr r0, [r4, #4]
+ bl MOD22_02255544
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+_022553FA:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022553FC: .word 0x00000669
+ thumb_func_end MOD22_02255380
+
+ thumb_func_start MOD22_02255400
+MOD22_02255400: ; 0x02255400
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A8
+ add r5, r0, #0
+ ldr r0, [r7, #0x18]
+ cmp r0, #5
+ beq _0225542A
+ add r0, r6, #0
+ bl MOD22_02255084
+ pop {r3, r4, r5, r6, r7, pc}
+_0225542A:
+ add r0, r6, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _0225543A
+ cmp r0, #1
+ beq _02255468
+ pop {r3, r4, r5, r6, r7, pc}
+_0225543A:
+ mov r0, #0
+ strh r0, [r5]
+ strb r0, [r5, #2]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #0xf
+ bl MOD20_02253F28
+ ldr r0, [r4, #4]
+ mov r1, #5
+ bl MOD22_02255544
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r0, _02255498 ; =0x00000666
+ bl MOD20_02252B28
+ add r0, r6, #0
+ bl MOD20_022538B0
+_02255468:
+ ldrh r0, [r5]
+ add r0, r0, #1
+ strh r0, [r5]
+ ldrh r0, [r5]
+ cmp r0, #2
+ bls _02255496
+ mov r0, #0
+ strh r0, [r5]
+ ldrb r1, [r5, #2]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r5, #2]
+ ldrb r0, [r5, #2]
+ add r0, r0, #5
+ strb r0, [r5, #3]
+ ldrb r1, [r5, #3]
+ ldr r0, [r4, #4]
+ bl MOD22_02255544
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+_02255496:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02255498: .word 0x00000666
+ thumb_func_end MOD22_02255400
+
+ thumb_func_start MOD22_0225549C
+MOD22_0225549C: ; 0x0225549C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A8
+ add r4, r0, #0
+ ldr r0, [r7, #0x18]
+ cmp r0, #6
+ beq _022554C6
+ add r0, r5, #0
+ bl MOD22_02255084
+ pop {r3, r4, r5, r6, r7, pc}
+_022554C6:
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _022554D6
+ cmp r0, #1
+ beq _022554FC
+ pop {r3, r4, r5, r6, r7, pc}
+_022554D6:
+ add r0, r6, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r1, #0x10
+ bl MOD20_02253F28
+ ldr r0, [r6, #4]
+ mov r1, #6
+ bl MOD22_02255544
+ ldr r0, [r6, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD20_022538B0
+ mov r0, #0
+ strh r0, [r4]
+_022554FC:
+ ldrh r0, [r4]
+ add r0, r0, #1
+ strh r0, [r4]
+ ldrh r0, [r4]
+ cmp r0, #0x50
+ bls _0225550E
+ add r0, r5, #0
+ bl MOD22_02255084
+_0225550E:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD22_0225549C
+
+ thumb_func_start MOD22_02255510
+MOD22_02255510: ; 0x02255510
+ ldrh r2, [r0]
+ add r2, r2, #1
+ strh r2, [r0]
+ ldrh r2, [r0]
+ cmp r2, r1
+ bls _0225553A
+ mov r2, #0
+ strh r2, [r0]
+ ldrb r1, [r0, #2]
+ add r1, r1, #1
+ strb r1, [r0, #2]
+ ldrb r1, [r0, #2]
+ cmp r1, #3
+ blo _0225552E
+ strb r2, [r0, #2]
+_0225552E:
+ ldrb r2, [r0, #2]
+ ldr r1, _02255540 ; =0x02255634
+ ldrb r1, [r1, r2]
+ strb r1, [r0, #3]
+ mov r0, #1
+ bx lr
+_0225553A:
+ mov r0, #0
+ bx lr
+ nop
+_02255540: .word 0x02255634
+ thumb_func_end MOD22_02255510
+
+ thumb_func_start MOD22_02255544
+MOD22_02255544: ; 0x02255544
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ mov r1, #6
+ bl FUN_0201886C
+ ldr r1, _022555A0 ; =0x00000252
+ mov r7, #1
+ add r1, r0, r1
+ lsl r0, r4, #2
+ add r0, r4, r0
+ add r0, r0, #2
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ mov ip, r0
+ lsl r7, r7, #0xa
+ mov r6, #9
+_02255568:
+ ldr r3, [sp]
+ mov r2, #0
+ add r4, r1, #0
+_0225556E:
+ sub r5, r6, r2
+ add r0, r3, #0
+ strh r3, [r4]
+ orr r0, r7
+ lsl r5, r5, #1
+ add r2, r2, #1
+ strh r0, [r1, r5]
+ add r3, r3, #1
+ add r4, r4, #2
+ cmp r2, #5
+ blo _0225556E
+ ldr r0, [sp]
+ add r1, #0x40
+ add r0, #0x25
+ str r0, [sp]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ mov r0, ip
+ add r0, r0, #1
+ mov ip, r0
+ cmp r0, #0xb
+ blo _02255568
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022555A0: .word 0x00000252
+ thumb_func_end MOD22_02255544
+
+ thumb_func_start MOD22_022555A4
+MOD22_022555A4: ; 0x022555A4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _022555C0
+ cmp r0, #1
+ beq _022555CC
+ pop {r3, r4, r5, pc}
+_022555C0:
+ add r0, r4, #0
+ bl MOD22_022555FC
+ add r0, r5, #0
+ bl MOD20_022538B0
+_022555CC:
+ add r0, r4, #0
+ add r0, #0x34
+ bl MOD20_02254014
+ add r0, r4, #0
+ add r0, #0x48
+ bl MOD20_02254014
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ bl FUN_0200CAB4
+ mov r0, #0
+ add r4, #0x84
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD22_02255084
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD22_022555A4
+
+ thumb_func_start MOD22_022555FC
+MOD22_022555FC: ; 0x022555FC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02255604:
+ ldr r0, [r6, #0x5c]
+ ldr r1, [r5, #0x60]
+ bl MOD20_02253F14
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #9
+ blo _02255604
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD22_022555FC
+
+ .section .rodata
+ ; 0x02255618
+ .incbin "baserom.nds", 0x2869D8, 0x118
+
+ .section .sinit
+ .word MOD22_02254840
diff --git a/arm9/modules/23/asm/module_23.s b/arm9/modules/23/asm/module_23.s
new file mode 100644
index 00000000..a5adabbb
--- /dev/null
+++ b/arm9/modules/23/asm/module_23.s
@@ -0,0 +1,2802 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD23_02254840
+MOD23_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD23_02254854
+ ldr r1, _02254850 ; =MOD23_022549A4
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD23_02254854
+_02254850: .word MOD23_022549A4
+ thumb_func_end MOD23_02254840
+
+ thumb_func_start MOD23_02254854
+MOD23_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x28
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254888
+ ldr r1, [sp]
+ add r2, r7, #0
+ bl MOD23_02254890
+ cmp r0, #0
+ beq _02254888
+ ldr r0, _0225488C ; =MOD23_0225494C
+ str r6, [r4, #0x10]
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02254888:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0225488C: .word MOD23_0225494C
+ thumb_func_end MOD23_02254854
+
+ thumb_func_start MOD23_02254890
+MOD23_02254890: ; 0x02254890
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ add r1, r4, #0
+ add r0, #0x14
+ add r1, #0x18
+ bl MOD23_02254FFC
+ cmp r0, #0
+ beq _0225490A
+ mov r0, #0
+ strb r0, [r4]
+ strb r0, [r4, #1]
+ strb r0, [r4, #3]
+ strb r0, [r4, #2]
+ strb r0, [r4, #4]
+ mov r0, #0x11
+ strh r0, [r4, #6]
+ sub r0, #0x12
+ str r0, [r4, #8]
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #0xa
+ bl MOD23_0225551C
+ add r0, r4, #0
+ add r0, #0x20
+ mov r1, #0xa
+ bl MOD23_0225551C
+ add r0, r4, #0
+ add r0, #0x24
+ mov r1, #0xa
+ bl MOD23_0225551C
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _022548E8
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ beq _022548E8
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ bne _022548EE
+_022548E8:
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, pc}
+_022548EE:
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254910 ; =0x02255CD8
+ ldr r2, _02254914 ; =MOD23_022549C4
+ mov r1, #0x11
+ add r3, r4, #0
+ bl MOD20_02254130
+ str r0, [r4, #0xc]
+ cmp r0, #0
+ bne _0225490A
+ add sp, #4
+ mov r0, #0
+ pop {r3, r4, pc}
+_0225490A:
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_02254910: .word 0x02255CD8
+_02254914: .word MOD23_022549C4
+ thumb_func_end MOD23_02254890
+
+ thumb_func_start MOD23_02254918
+MOD23_02254918: ; 0x02254918
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _02254926
+ bl MOD23_02255540
+_02254926:
+ ldr r0, [r4, #0x20]
+ cmp r0, #0
+ beq _02254930
+ bl MOD23_02255540
+_02254930:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _0225493A
+ bl MOD23_02255540
+_0225493A:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _02254944
+ bl MOD20_02254198
+_02254944:
+ ldr r0, [r4, #0x14]
+ bl MOD23_0225502C
+ pop {r4, pc}
+ thumb_func_end MOD23_02254918
+
+ thumb_func_start MOD23_0225494C
+MOD23_0225494C: ; 0x0225494C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #3]
+ cmp r0, #0
+ beq _02254964
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD23_022549AC
+ mov r0, #0
+ strb r0, [r4, #3]
+_02254964:
+ ldrb r0, [r4]
+ cmp r0, #7
+ bhs _0225499E
+ mov r0, #0x11
+ strh r0, [r4, #6]
+ ldr r0, [r4, #0x10]
+ ldr r1, [r4, #0xc]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _022549A0 ; =0x02255CBC
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225499E
+ add r0, r4, #0
+ bl MOD23_02254918
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x10]
+ bl MOD20_022529A0
+_0225499E:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022549A0: .word 0x02255CBC
+ thumb_func_end MOD23_0225494C
+
+ thumb_func_start MOD23_022549A4
+MOD23_022549A4: ; 0x022549A4
+ mov r1, #1
+ strb r1, [r0, #3]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD23_022549A4
+
+ thumb_func_start MOD23_022549AC
+MOD23_022549AC: ; 0x022549AC
+ ldrb r2, [r0, #3]
+ cmp r2, #0
+ bne _022549B4
+ b _022549B6
+_022549B4:
+ mov r1, #6
+_022549B6:
+ strb r1, [r0]
+ ldrb r1, [r0]
+ strb r1, [r0, #2]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD23_022549AC
+
+ thumb_func_start MOD23_022549C4
+MOD23_022549C4: ; 0x022549C4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r3, #0
+ cmp r2, #0
+ beq _022549D6
+ cmp r2, #1
+ beq _022549E2
+ b _022549EC
+_022549D6:
+ strh r5, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl MOD23_02255038
+ b _022549EC
+_022549E2:
+ strh r5, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl MOD23_02255038
+_022549EC:
+ cmp r6, #3
+ bne _022549F2
+ strh r5, [r4, #6]
+_022549F2:
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD23_022549C4
+
+ thumb_func_start MOD23_022549F4
+MOD23_022549F4: ; 0x022549F4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A04
+ cmp r0, #1
+ beq _02254A14
+ b _02254A2E
+_02254A04:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl MOD23_02255038
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A2E
+_02254A14:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl MOD23_0225505C
+ cmp r0, #0
+ beq _02254A2E
+ ldr r0, [r4, #0x10]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD23_022549AC
+_02254A2E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD23_022549F4
+
+ thumb_func_start MOD23_02254A34
+MOD23_02254A34: ; 0x02254A34
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254A44
+ cmp r1, #1
+ beq _02254AE8
+ b _02254B08
+_02254A44:
+ mov r1, #0
+ mvn r1, r1
+ str r1, [r4, #8]
+ ldrh r1, [r4, #6]
+ add r2, r1, #0
+ sub r2, #0xa
+ cmp r2, #7
+ bhi _02254A9E
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02254A60: ; jump table
+ .short _02254A7A - _02254A60 - 2 ; case 0
+ .short _02254A80 - _02254A60 - 2 ; case 1
+ .short _02254A80 - _02254A60 - 2 ; case 2
+ .short _02254A80 - _02254A60 - 2 ; case 3
+ .short _02254A80 - _02254A60 - 2 ; case 4
+ .short _02254A90 - _02254A60 - 2 ; case 5
+ .short _02254A70 - _02254A60 - 2 ; case 6
+ .short _02254AC0 - _02254A60 - 2 ; case 7
+_02254A70:
+ bl MOD23_02254EE8
+ mov r0, #4
+ str r0, [r4, #8]
+ b _02254AC0
+_02254A7A:
+ mov r0, #1
+ strb r0, [r4, #4]
+ b _02254AC0
+_02254A80:
+ strh r1, [r4, #0x1a]
+ mov r0, #0
+ strb r0, [r4, #4]
+ mov r0, #8
+ str r0, [r4, #8]
+ mov r0, #2
+ strb r0, [r4, #2]
+ b _02254AC0
+_02254A90:
+ ldr r1, [r4, #0x1c]
+ bl MOD23_02254F94
+ ldr r0, [r4, #0x1c]
+ bl MOD23_02255548
+ b _02254AC0
+_02254A9E:
+ ldrb r0, [r4, #4]
+ cmp r0, #0
+ ldr r0, [r4, #0x1c]
+ beq _02254AB4
+ bl MOD23_02255838
+ cmp r0, #0
+ beq _02254AC0
+ mov r0, #3
+ str r0, [r4, #8]
+ b _02254AC0
+_02254AB4:
+ bl MOD23_022557FC
+ cmp r0, #0
+ beq _02254AC0
+ mov r0, #3
+ str r0, [r4, #8]
+_02254AC0:
+ mov r0, #0
+ ldr r1, [r4, #8]
+ mvn r0, r0
+ cmp r1, r0
+ beq _02254AD8
+ ldr r0, [r4, #0x14]
+ bl MOD23_02255038
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B08
+_02254AD8:
+ ldrb r1, [r4, #2]
+ ldrb r0, [r4]
+ cmp r1, r0
+ beq _02254B08
+ add r0, r4, #0
+ bl MOD23_022549AC
+ b _02254B08
+_02254AE8:
+ ldr r0, [r4, #0x14]
+ ldr r1, [r4, #8]
+ bl MOD23_0225505C
+ cmp r0, #0
+ beq _02254B08
+ ldrb r1, [r4, #2]
+ ldrb r0, [r4]
+ cmp r1, r0
+ beq _02254B04
+ add r0, r4, #0
+ bl MOD23_022549AC
+ b _02254B08
+_02254B04:
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254B08:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD23_02254A34
+
+ thumb_func_start MOD23_02254B0C
+MOD23_02254B0C: ; 0x02254B0C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254B1C
+ cmp r1, #1
+ beq _02254BE4
+ b _02254C04
+_02254B1C:
+ mov r1, #0
+ mvn r1, r1
+ str r1, [r4, #8]
+ ldrh r1, [r4, #6]
+ add r2, r1, #0
+ sub r2, #0xa
+ cmp r2, #7
+ bhi _02254BA2
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02254B38: ; jump table
+ .short _02254B56 - _02254B38 - 2 ; case 0
+ .short _02254B6A - _02254B38 - 2 ; case 1
+ .short _02254B6A - _02254B38 - 2 ; case 2
+ .short _02254B6A - _02254B38 - 2 ; case 3
+ .short _02254B6A - _02254B38 - 2 ; case 4
+ .short _02254B72 - _02254B38 - 2 ; case 5
+ .short _02254B48 - _02254B38 - 2 ; case 6
+ .short _02254BBC - _02254B38 - 2 ; case 7
+_02254B48:
+ bl MOD23_02254EE8
+ mov r0, #4
+ str r0, [r4, #8]
+ mov r0, #1
+ strb r0, [r4, #2]
+ b _02254BBC
+_02254B56:
+ ldr r0, [r4, #0x20]
+ bl MOD23_02255548
+ mov r0, #5
+ str r0, [r4, #8]
+ mov r0, #1
+ strb r0, [r4, #4]
+ mov r0, #3
+ strb r0, [r4, #2]
+ b _02254BBC
+_02254B6A:
+ strh r1, [r4, #0x1a]
+ mov r0, #8
+ str r0, [r4, #8]
+ b _02254BBC
+_02254B72:
+ ldr r0, [r4, #0x20]
+ ldr r1, [r4, #0x1c]
+ bl MOD23_02255558
+ ldrh r1, [r4, #0x1a]
+ add r0, r4, #0
+ bl MOD23_02254F08
+ cmp r0, #0
+ beq _02254B98
+ ldr r1, [r4, #0x24]
+ add r0, r4, #0
+ bl MOD23_02254F94
+ mov r0, #6
+ str r0, [r4, #8]
+ mov r0, #4
+ strb r0, [r4, #2]
+ b _02254BBC
+_02254B98:
+ mov r0, #9
+ str r0, [r4, #8]
+ mov r0, #5
+ strb r0, [r4, #2]
+ b _02254BBC
+_02254BA2:
+ ldr r0, [r4, #0x20]
+ bl MOD23_02255548
+ ldrh r1, [r4, #6]
+ ldr r0, [r4, #0x20]
+ bl MOD23_022557FC
+ cmp r0, #0
+ beq _02254BBC
+ mov r0, #5
+ str r0, [r4, #8]
+ mov r0, #3
+ strb r0, [r4, #2]
+_02254BBC:
+ mov r0, #0
+ ldr r1, [r4, #8]
+ mvn r0, r0
+ cmp r1, r0
+ beq _02254BD4
+ ldr r0, [r4, #0x14]
+ bl MOD23_02255038
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254C04
+_02254BD4:
+ ldrb r1, [r4, #2]
+ ldrb r0, [r4]
+ cmp r1, r0
+ beq _02254C04
+ add r0, r4, #0
+ bl MOD23_022549AC
+ b _02254C04
+_02254BE4:
+ ldr r0, [r4, #0x14]
+ ldr r1, [r4, #8]
+ bl MOD23_0225505C
+ cmp r0, #0
+ beq _02254C04
+ ldrb r1, [r4, #2]
+ ldrb r0, [r4]
+ cmp r1, r0
+ beq _02254C00
+ add r0, r4, #0
+ bl MOD23_022549AC
+ b _02254C04
+_02254C00:
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254C04:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD23_02254B0C
+
+ thumb_func_start MOD23_02254C08
+MOD23_02254C08: ; 0x02254C08
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254C18
+ cmp r1, #1
+ beq _02254CFA
+ b _02254D1A
+_02254C18:
+ mov r1, #0
+ mvn r1, r1
+ str r1, [r4, #8]
+ ldrh r1, [r4, #6]
+ add r2, r1, #0
+ sub r2, #0xa
+ cmp r2, #7
+ bhi _02254CB0
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02254C34: ; jump table
+ .short _02254C52 - _02254C34 - 2 ; case 0
+ .short _02254C58 - _02254C34 - 2 ; case 1
+ .short _02254C58 - _02254C34 - 2 ; case 2
+ .short _02254C58 - _02254C34 - 2 ; case 3
+ .short _02254C58 - _02254C34 - 2 ; case 4
+ .short _02254C86 - _02254C34 - 2 ; case 5
+ .short _02254C44 - _02254C34 - 2 ; case 6
+ .short _02254CD2 - _02254C34 - 2 ; case 7
+_02254C44:
+ bl MOD23_02254EE8
+ mov r0, #4
+ str r0, [r4, #8]
+ mov r0, #1
+ strb r0, [r4, #2]
+ b _02254CD2
+_02254C52:
+ mov r0, #1
+ strb r0, [r4, #4]
+ b _02254CD2
+_02254C58:
+ ldrh r1, [r4, #0x1a]
+ bl MOD23_02254F08
+ cmp r0, #0
+ beq _02254C7C
+ ldrh r0, [r4, #6]
+ strh r0, [r4, #0x1a]
+ mov r0, #0
+ strb r0, [r4, #4]
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x24]
+ bl MOD23_02255558
+ mov r0, #7
+ str r0, [r4, #8]
+ mov r0, #2
+ strb r0, [r4, #2]
+ b _02254CD2
+_02254C7C:
+ mov r0, #9
+ str r0, [r4, #8]
+ mov r0, #5
+ strb r0, [r4, #2]
+ b _02254CD2
+_02254C86:
+ ldrh r1, [r4, #0x1a]
+ bl MOD23_02254F08
+ cmp r0, #0
+ beq _02254CA6
+ ldr r1, [r4, #0x24]
+ add r0, r4, #0
+ bl MOD23_02254F94
+ mov r0, #6
+ str r0, [r4, #8]
+ mov r0, #0
+ strb r0, [r4, #4]
+ mov r0, #4
+ strb r0, [r4, #2]
+ b _02254CD2
+_02254CA6:
+ mov r0, #9
+ str r0, [r4, #8]
+ mov r0, #5
+ strb r0, [r4, #2]
+ b _02254CD2
+_02254CB0:
+ ldrb r0, [r4, #4]
+ cmp r0, #0
+ ldr r0, [r4, #0x20]
+ beq _02254CC6
+ bl MOD23_02255838
+ cmp r0, #0
+ beq _02254CD2
+ mov r0, #5
+ str r0, [r4, #8]
+ b _02254CD2
+_02254CC6:
+ bl MOD23_022557FC
+ cmp r0, #0
+ beq _02254CD2
+ mov r0, #5
+ str r0, [r4, #8]
+_02254CD2:
+ mov r0, #0
+ ldr r1, [r4, #8]
+ mvn r0, r0
+ cmp r1, r0
+ beq _02254CEA
+ ldr r0, [r4, #0x14]
+ bl MOD23_02255038
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254D1A
+_02254CEA:
+ ldrb r1, [r4, #2]
+ ldrb r0, [r4]
+ cmp r1, r0
+ beq _02254D1A
+ add r0, r4, #0
+ bl MOD23_022549AC
+ b _02254D1A
+_02254CFA:
+ ldr r0, [r4, #0x14]
+ ldr r1, [r4, #8]
+ bl MOD23_0225505C
+ cmp r0, #0
+ beq _02254D1A
+ ldrb r1, [r4, #2]
+ ldrb r0, [r4]
+ cmp r1, r0
+ beq _02254D16
+ add r0, r4, #0
+ bl MOD23_022549AC
+ b _02254D1A
+_02254D16:
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254D1A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD23_02254C08
+
+ thumb_func_start MOD23_02254D20
+MOD23_02254D20: ; 0x02254D20
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254D30
+ cmp r1, #1
+ beq _02254E04
+ b _02254E24
+_02254D30:
+ mov r1, #0
+ mvn r1, r1
+ str r1, [r4, #8]
+ ldrh r1, [r4, #6]
+ add r2, r1, #0
+ sub r2, #0xa
+ cmp r2, #7
+ bhi _02254DC2
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_02254D4C: ; jump table
+ .short _02254D6A - _02254D4C - 2 ; case 0
+ .short _02254D7A - _02254D4C - 2 ; case 1
+ .short _02254D7A - _02254D4C - 2 ; case 2
+ .short _02254D7A - _02254D4C - 2 ; case 3
+ .short _02254D7A - _02254D4C - 2 ; case 4
+ .short _02254D92 - _02254D4C - 2 ; case 5
+ .short _02254D5C - _02254D4C - 2 ; case 6
+ .short _02254DDC - _02254D4C - 2 ; case 7
+_02254D5C:
+ bl MOD23_02254EE8
+ mov r0, #4
+ str r0, [r4, #8]
+ mov r0, #1
+ strb r0, [r4, #2]
+ b _02254DDC
+_02254D6A:
+ bl MOD23_02254EE8
+ mov r0, #3
+ str r0, [r4, #8]
+ mov r0, #1
+ strb r0, [r4, #4]
+ strb r0, [r4, #2]
+ b _02254DDC
+_02254D7A:
+ strh r1, [r4, #0x1a]
+ mov r0, #8
+ str r0, [r4, #8]
+ mov r0, #0
+ strb r0, [r4, #4]
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x24]
+ bl MOD23_02255558
+ mov r0, #2
+ strb r0, [r4, #2]
+ b _02254DDC
+_02254D92:
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x24]
+ bl MOD23_02255558
+ ldrh r1, [r4, #0x1a]
+ add r0, r4, #0
+ bl MOD23_02254F08
+ cmp r0, #0
+ beq _02254DB8
+ ldr r1, [r4, #0x24]
+ add r0, r4, #0
+ bl MOD23_02254F94
+ mov r0, #6
+ str r0, [r4, #8]
+ mov r0, #0
+ strb r0, [r4, #4]
+ b _02254DDC
+_02254DB8:
+ mov r0, #9
+ str r0, [r4, #8]
+ mov r0, #5
+ strb r0, [r4, #2]
+ b _02254DDC
+_02254DC2:
+ ldr r0, [r4, #0x1c]
+ bl MOD23_02255548
+ ldrh r1, [r4, #6]
+ ldr r0, [r4, #0x1c]
+ bl MOD23_022557FC
+ cmp r0, #0
+ beq _02254DD8
+ mov r0, #3
+ str r0, [r4, #8]
+_02254DD8:
+ mov r0, #1
+ strb r0, [r4, #2]
+_02254DDC:
+ mov r0, #0
+ ldr r1, [r4, #8]
+ mvn r0, r0
+ cmp r1, r0
+ beq _02254DF4
+ ldr r0, [r4, #0x14]
+ bl MOD23_02255038
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254E24
+_02254DF4:
+ ldrb r1, [r4, #2]
+ ldrb r0, [r4]
+ cmp r1, r0
+ beq _02254E24
+ add r0, r4, #0
+ bl MOD23_022549AC
+ b _02254E24
+_02254E04:
+ ldr r0, [r4, #0x14]
+ ldr r1, [r4, #8]
+ bl MOD23_0225505C
+ cmp r0, #0
+ beq _02254E24
+ ldrb r1, [r4, #2]
+ ldrb r0, [r4]
+ cmp r1, r0
+ beq _02254E20
+ add r0, r4, #0
+ bl MOD23_022549AC
+ b _02254E24
+_02254E20:
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254E24:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD23_02254D20
+
+ thumb_func_start MOD23_02254E28
+MOD23_02254E28: ; 0x02254E28
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254E38
+ cmp r1, #1
+ beq _02254EC2
+ b _02254EE2
+_02254E38:
+ mov r1, #0
+ mvn r1, r1
+ str r1, [r4, #8]
+ ldrh r1, [r4, #6]
+ sub r1, #0xa
+ cmp r1, #7
+ bhi _02254E80
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02254E52: ; jump table
+ .short _02254E70 - _02254E52 - 2 ; case 0
+ .short _02254E9A - _02254E52 - 2 ; case 1
+ .short _02254E9A - _02254E52 - 2 ; case 2
+ .short _02254E9A - _02254E52 - 2 ; case 3
+ .short _02254E9A - _02254E52 - 2 ; case 4
+ .short _02254E9A - _02254E52 - 2 ; case 5
+ .short _02254E62 - _02254E52 - 2 ; case 6
+ .short _02254E9A - _02254E52 - 2 ; case 7
+_02254E62:
+ bl MOD23_02254EE8
+ mov r0, #3
+ str r0, [r4, #8]
+ mov r0, #1
+ strb r0, [r4, #2]
+ b _02254E9A
+_02254E70:
+ bl MOD23_02254EE8
+ mov r0, #3
+ str r0, [r4, #8]
+ mov r0, #1
+ strb r0, [r4, #4]
+ strb r0, [r4, #2]
+ b _02254E9A
+_02254E80:
+ add r0, r4, #0
+ bl MOD23_02254EE8
+ ldrh r1, [r4, #6]
+ ldr r0, [r4, #0x1c]
+ bl MOD23_022557FC
+ cmp r0, #0
+ beq _02254E96
+ mov r0, #3
+ str r0, [r4, #8]
+_02254E96:
+ mov r0, #1
+ strb r0, [r4, #2]
+_02254E9A:
+ mov r0, #0
+ ldr r1, [r4, #8]
+ mvn r0, r0
+ cmp r1, r0
+ beq _02254EB2
+ ldr r0, [r4, #0x14]
+ bl MOD23_02255038
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254EE2
+_02254EB2:
+ ldrb r1, [r4, #2]
+ ldrb r0, [r4]
+ cmp r1, r0
+ beq _02254EE2
+ add r0, r4, #0
+ bl MOD23_022549AC
+ b _02254EE2
+_02254EC2:
+ ldr r0, [r4, #0x14]
+ ldr r1, [r4, #8]
+ bl MOD23_0225505C
+ cmp r0, #0
+ beq _02254EE2
+ ldrb r1, [r4, #2]
+ ldrb r0, [r4]
+ cmp r1, r0
+ beq _02254EDE
+ add r0, r4, #0
+ bl MOD23_022549AC
+ b _02254EE2
+_02254EDE:
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254EE2:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD23_02254E28
+
+ thumb_func_start MOD23_02254EE8
+MOD23_02254EE8: ; 0x02254EE8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x1c]
+ bl MOD23_02255548
+ ldr r0, [r4, #0x20]
+ bl MOD23_02255548
+ ldr r0, [r4, #0x24]
+ bl MOD23_02255548
+ mov r0, #0x11
+ strh r0, [r4, #0x1a]
+ mov r0, #0
+ strb r0, [r4, #4]
+ pop {r4, pc}
+ thumb_func_end MOD23_02254EE8
+
+ thumb_func_start MOD23_02254F08
+MOD23_02254F08: ; 0x02254F08
+ push {r4, lr}
+ sub r1, #0xb
+ add r4, r0, #0
+ cmp r1, #3
+ bhi _02254F54
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254F1E: ; jump table
+ .short _02254F32 - _02254F1E - 2 ; case 0
+ .short _02254F26 - _02254F1E - 2 ; case 1
+ .short _02254F3E - _02254F1E - 2 ; case 2
+ .short _02254F4A - _02254F1E - 2 ; case 3
+_02254F26:
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x20]
+ ldr r2, [r4, #0x24]
+ bl MOD23_02255568
+ b _02254F54
+_02254F32:
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x20]
+ ldr r2, [r4, #0x24]
+ bl MOD23_022555F4
+ b _02254F54
+_02254F3E:
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x20]
+ ldr r2, [r4, #0x24]
+ bl MOD23_022556A8
+ b _02254F54
+_02254F4A:
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4, #0x20]
+ ldr r2, [r4, #0x24]
+ bl MOD23_022556D8
+_02254F54:
+ ldr r0, [r4, #0x24]
+ mov r1, #0xa
+ bl MOD23_022558C0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD23_02254F08
+
+ thumb_func_start MOD23_02254F60
+MOD23_02254F60: ; 0x02254F60
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254F70
+ cmp r0, #1
+ beq _02254F80
+ b _02254F8E
+_02254F70:
+ ldr r0, [r4, #0x14]
+ mov r1, #0xa
+ bl MOD23_02255038
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254F8E
+_02254F80:
+ ldr r0, [r4, #0x14]
+ bl MOD23_02255068
+ cmp r0, #0
+ beq _02254F8E
+ mov r0, #1
+ pop {r4, pc}
+_02254F8E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD23_02254F60
+
+ thumb_func_start MOD23_02254F94
+MOD23_02254F94: ; 0x02254F94
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ bl MOD23_02255AE8
+ add r4, r0, #0
+ mov r2, #0
+ mov r0, #0
+ sub r0, r0, r4
+ sbc r2, r1
+ bge _02254FF4
+ mov r2, #0
+ ldr r0, _02254FF8 ; =0x000001ED
+ sub r0, r0, r4
+ sbc r2, r1
+ blt _02254FF4
+ ldr r0, [r5, #0x10]
+ bl MOD20_02252C40
+ bl FUN_02024DA0
+ add r5, r0, #0
+ bl FUN_02024CA4
+ cmp r0, #0
+ beq _02254FCE
+ lsl r0, r4, #0x10
+ lsr r4, r0, #0x10
+ b _02254FD8
+_02254FCE:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_02069B60
+ add r4, r0, #0
+_02254FD8:
+ cmp r4, #0
+ beq _02254FF4
+ ldr r0, _02254FF8 ; =0x000001ED
+ cmp r4, r0
+ bhi _02254FF4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_020245F0
+ cmp r0, #0
+ beq _02254FF4
+ add r0, r4, #0
+ bl MOD20_02252B48
+_02254FF4:
+ pop {r3, r4, r5, pc}
+ nop
+_02254FF8: .word 0x000001ED
+ thumb_func_end MOD23_02254F94
+
+ thumb_func_start MOD23_02254FFC
+MOD23_02254FFC: ; 0x02254FFC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ ldr r1, _02255028 ; =0x0000048C
+ mov r0, #8
+ add r7, r2, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02255022
+ str r6, [r4]
+ str r7, [r4, #4]
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02255022:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255028: .word 0x0000048C
+ thumb_func_end MOD23_02254FFC
+
+ thumb_func_start MOD23_0225502C
+MOD23_0225502C: ; 0x0225502C
+ push {r3, lr}
+ cmp r0, #0
+ beq _02255036
+ bl FUN_02016A18
+_02255036:
+ pop {r3, pc}
+ thumb_func_end MOD23_0225502C
+
+ thumb_func_start MOD23_02255038
+MOD23_02255038: ; 0x02255038
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02255058 ; =0x02256040
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02255058: .word 0x02256040
+ thumb_func_end MOD23_02255038
+
+ thumb_func_start MOD23_0225505C
+MOD23_0225505C: ; 0x0225505C
+ ldr r3, _02255064 ; =0x02253795
+ add r0, #8
+ bx r3
+ nop
+_02255064: .word 0x02253795
+ thumb_func_end MOD23_0225505C
+
+ thumb_func_start MOD23_02255068
+MOD23_02255068: ; 0x02255068
+ ldr r3, _02255070 ; =0x022537B9
+ add r0, #8
+ bx r3
+ nop
+_02255070: .word 0x022537B9
+ thumb_func_end MOD23_02255068
+
+ thumb_func_start MOD23_02255074
+MOD23_02255074: ; 0x02255074
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD23_02255074
+
+ thumb_func_start MOD23_02255088
+MOD23_02255088: ; 0x02255088
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A4
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02255118 ; =0x02255D1C
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x10
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x11
+ mov r3, #6
+ bl FUN_020068C8
+ add r0, r5, #0
+ bl MOD23_02255124
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _0225511C ; =0x04001000
+ ldr r0, _02255120 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD23_02255074
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02255118: .word 0x02255D1C
+_0225511C: .word 0x04001000
+_02255120: .word 0xFFFFE0FF
+ thumb_func_end MOD23_02255088
+
+ thumb_func_start MOD23_02255124
+MOD23_02255124: ; 0x02255124
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ ldr r0, [r6, #4]
+ mov r1, #6
+ bl FUN_0201886C
+ mov ip, r0
+ mov r0, #0
+ ldr r3, _022551A0 ; =0x02255FB8
+ str r0, [sp, #4]
+_0225513A:
+ ldrb r7, [r3, #1]
+ ldrb r0, [r3, #3]
+ mov r2, #0
+ add r0, r7, r0
+ cmp r7, r0
+ bhs _0225518C
+ lsl r0, r7, #5
+ str r0, [sp]
+_0225514A:
+ ldrb r1, [r3]
+ ldrb r0, [r3, #2]
+ add r0, r1, r0
+ cmp r1, r0
+ bhs _0225517A
+ ldr r0, [sp]
+ lsl r4, r0, #1
+ mov r0, ip
+ add r4, r0, r4
+ lsl r0, r1, #1
+ add r4, r4, r0
+_02255160:
+ lsl r5, r2, #1
+ ldrh r0, [r4]
+ add r5, r6, r5
+ add r5, #0x4c
+ strh r0, [r5]
+ ldrb r5, [r3]
+ ldrb r0, [r3, #2]
+ add r1, r1, #1
+ add r2, r2, #1
+ add r0, r5, r0
+ add r4, r4, #2
+ cmp r1, r0
+ blo _02255160
+_0225517A:
+ ldr r0, [sp]
+ ldrb r1, [r3, #1]
+ add r0, #0x20
+ str r0, [sp]
+ ldrb r0, [r3, #3]
+ add r7, r7, #1
+ add r0, r1, r0
+ cmp r7, r0
+ blo _0225514A
+_0225518C:
+ ldr r0, [sp, #4]
+ add r3, r3, #4
+ add r0, r0, #1
+ add r6, #0x40
+ str r0, [sp, #4]
+ cmp r0, #0x11
+ blo _0225513A
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022551A0: .word 0x02255FB8
+ thumb_func_end MOD23_02255124
+
+ thumb_func_start MOD23_022551A4
+MOD23_022551A4: ; 0x022551A4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldrh r5, [r5]
+ ldr r0, _022551F8 ; =0x00000663
+ bl MOD20_02252B28
+ lsl r3, r5, #2
+ ldr r0, _022551FC ; =0x02255FB9
+ ldr r2, _02255200 ; =0x02255FFC
+ ldrb r0, [r0, r3]
+ ldr r5, _02255204 ; =0x02255FB8
+ ldr r2, [r2, r3]
+ str r0, [sp]
+ ldr r0, _02255208 ; =0x02255FBA
+ mov r1, #6
+ ldrb r0, [r0, r3]
+ str r0, [sp, #4]
+ ldr r0, _0225520C ; =0x02255FBB
+ ldrb r0, [r0, r3]
+ ldrb r3, [r5, r3]
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ bl FUN_02018148
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r6, #0
+ bl MOD23_02255074
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_022551F8: .word 0x00000663
+_022551FC: .word 0x02255FB9
+_02255200: .word 0x02255FFC
+_02255204: .word 0x02255FB8
+_02255208: .word 0x02255FBA
+_0225520C: .word 0x02255FBB
+ thumb_func_end MOD23_022551A4
+
+ thumb_func_start MOD23_02255210
+MOD23_02255210: ; 0x02255210
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ ldrh r5, [r0]
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ lsl r3, r5, #2
+ ldr r0, _02255260 ; =0x02255FB9
+ add r2, r4, #0
+ ldrb r0, [r0, r3]
+ add r2, #0x4c
+ lsl r5, r5, #6
+ str r0, [sp]
+ ldr r0, _02255264 ; =0x02255FBA
+ add r2, r2, r5
+ ldrb r0, [r0, r3]
+ ldr r5, _02255268 ; =0x02255FB8
+ mov r1, #6
+ str r0, [sp, #4]
+ ldr r0, _0225526C ; =0x02255FBB
+ ldrb r0, [r0, r3]
+ ldrb r3, [r5, r3]
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ bl FUN_02018148
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r6, #0
+ bl MOD23_02255074
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02255260: .word 0x02255FB9
+_02255264: .word 0x02255FBA
+_02255268: .word 0x02255FB8
+_0225526C: .word 0x02255FBB
+ thumb_func_end MOD23_02255210
+
+ thumb_func_start MOD23_02255270
+MOD23_02255270: ; 0x02255270
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r5, #4]
+ add r1, #0x30
+ bl MOD23_022558EC
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x30
+ bl MOD23_0225548C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r6, #0
+ bl MOD23_02255074
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD23_02255270
+
+ thumb_func_start MOD23_022552A8
+MOD23_022552A8: ; 0x022552A8
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r5, #4]
+ add r1, #0x30
+ bl MOD23_022558EC
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x30
+ bl MOD23_0225548C
+ ldr r0, [r4, #4]
+ bl MOD23_0225544C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r6, #0
+ bl MOD23_02255074
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD23_022552A8
+
+ thumb_func_start MOD23_022552E8
+MOD23_022552E8: ; 0x022552E8
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r5, #8]
+ add r1, #0x30
+ bl MOD23_022558EC
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x30
+ bl MOD23_0225548C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r6, #0
+ bl MOD23_02255074
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD23_022552E8
+
+ thumb_func_start MOD23_02255320
+MOD23_02255320: ; 0x02255320
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r5, #0xc]
+ add r1, #0x30
+ bl MOD23_022558EC
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x30
+ bl MOD23_0225548C
+ ldr r0, [r4, #4]
+ bl MOD23_0225544C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r6, #0
+ bl MOD23_02255074
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD23_02255320
+
+ thumb_func_start MOD23_02255360
+MOD23_02255360: ; 0x02255360
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r5, #0xc]
+ add r1, #0x30
+ bl MOD23_022558EC
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x30
+ bl MOD23_0225548C
+ ldr r0, [r4, #4]
+ add r1, r5, #0
+ bl MOD23_02255410
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r6, #0
+ bl MOD23_02255074
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD23_02255360
+
+ thumb_func_start MOD23_022553A0
+MOD23_022553A0: ; 0x022553A0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ mov r2, #0
+ add r1, r4, #0
+ mov r0, #0xc
+_022553B2:
+ add r2, r2, #1
+ strh r0, [r1, #0x30]
+ add r1, r1, #2
+ cmp r2, #0xa
+ blo _022553B2
+ lsl r0, r2, #1
+ mov r1, #0xd
+ add r0, r4, r0
+ strh r1, [r0, #0x30]
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x30
+ bl MOD23_0225548C
+ ldr r0, [r4, #4]
+ bl MOD23_0225544C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD23_02255074
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD23_022553A0
+
+ thumb_func_start MOD23_022553E4
+MOD23_022553E4: ; 0x022553E4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ bl MOD23_02255410
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD23_02255074
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD23_022553E4
+
+ thumb_func_start MOD23_02255410
+MOD23_02255410: ; 0x02255410
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ mov r1, #6
+ add r4, r0, #0
+ bl FUN_0201886C
+ ldrh r1, [r5, #2]
+ cmp r1, #0x11
+ bne _0225542E
+ add r0, r4, #0
+ bl MOD23_0225544C
+ add sp, #0xc
+ pop {r4, r5, pc}
+_0225542E:
+ sub r1, #0xb
+ lsl r1, r1, #1
+ add r1, #0xf0
+ str r1, [sp]
+ mov r1, #0x28
+ str r1, [sp, #4]
+ mov r1, #0
+ str r1, [sp, #8]
+ mov r1, #3
+ add r2, r1, #0
+ mov r3, #0x20
+ bl MOD20_022538BC
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD23_02255410
+
+ thumb_func_start MOD23_0225544C
+MOD23_0225544C: ; 0x0225544C
+ push {lr}
+ sub sp, #0xc
+ mov r1, #6
+ bl FUN_0201886C
+ mov r1, #0x29
+ str r1, [sp]
+ mov r1, #0x28
+ str r1, [sp, #4]
+ mov r1, #0
+ str r1, [sp, #8]
+ mov r1, #3
+ add r2, r1, #0
+ mov r3, #0x20
+ bl MOD20_022538BC
+ add sp, #0xc
+ pop {pc}
+ thumb_func_end MOD23_0225544C
+
+ thumb_func_start MOD23_02255470
+MOD23_02255470: ; 0x02255470
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD23_02255074
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD23_02255470
+
+ thumb_func_start MOD23_0225548C
+MOD23_0225548C: ; 0x0225548C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r1, #0
+ mov r1, #6
+ bl FUN_0201886C
+ add r7, r0, #0
+ ldrh r0, [r6]
+ mov r1, #0
+ cmp r0, #0xd
+ beq _022554AE
+ add r2, r6, #0
+_022554A4:
+ add r2, r2, #2
+ ldrh r0, [r2]
+ add r1, r1, #1
+ cmp r0, #0xd
+ bne _022554A4
+_022554AE:
+ mov r0, #0xa
+ mov r4, #0
+ sub r0, r0, r1
+ str r0, [sp, #0xc]
+ beq _022554DC
+ mov r5, #5
+_022554BA:
+ mov r0, #0x2b
+ str r0, [sp]
+ mov r0, #0x28
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, r7, #0
+ add r1, r5, #0
+ mov r2, #3
+ mov r3, #0x20
+ bl MOD20_022538BC
+ ldr r0, [sp, #0xc]
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, r0
+ blo _022554BA
+_022554DC:
+ mov r0, #0
+ str r0, [sp, #0x10]
+ cmp r4, #0xa
+ bhs _02255516
+ bhs _02255516
+ lsl r0, r4, #1
+ add r5, r0, #5
+_022554EA:
+ ldrh r0, [r6]
+ add r1, r5, #0
+ mov r2, #3
+ lsl r0, r0, #1
+ add r0, #0xa5
+ str r0, [sp]
+ mov r0, #0x28
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, r7, #0
+ mov r3, #0x20
+ bl MOD20_022538BC
+ ldr r0, [sp, #0x10]
+ add r4, r4, #1
+ add r0, r0, #1
+ add r5, r5, #2
+ add r6, r6, #2
+ str r0, [sp, #0x10]
+ cmp r4, #0xa
+ blo _022554EA
+_02255516:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD23_0225548C
+
+ thumb_func_start MOD23_0225551C
+MOD23_0225551C: ; 0x0225551C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #8
+ mov r1, #0xc
+ bl FUN_02016998
+ str r0, [r5]
+ cmp r0, #0
+ beq _0225553C
+ strb r4, [r0, #0xa]
+ ldr r0, [r5]
+ bl MOD23_02255548
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0225553C:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD23_0225551C
+
+ thumb_func_start MOD23_02255540
+MOD23_02255540: ; 0x02255540
+ ldr r3, _02255544 ; =0x02016A19
+ bx r3
+ .align 2, 0
+_02255544: .word 0x02016A19
+ thumb_func_end MOD23_02255540
+
+ thumb_func_start MOD23_02255548
+MOD23_02255548: ; 0x02255548
+ mov r1, #0
+ str r1, [r0]
+ str r1, [r0, #4]
+ strb r1, [r0, #9]
+ strb r1, [r0, #8]
+ strb r1, [r0, #0xb]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD23_02255548
+
+ thumb_func_start MOD23_02255558
+MOD23_02255558: ; 0x02255558
+ add r2, r1, #0
+ add r3, r0, #0
+ ldmia r2!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r3]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD23_02255558
+
+ thumb_func_start MOD23_02255568
+MOD23_02255568: ; 0x02255568
+ push {r4, r5, r6, lr}
+ sub sp, #0x30
+ add r5, r0, #0
+ add r3, r1, #0
+ ldrb r1, [r5, #9]
+ add r4, r2, #0
+ cmp r1, #0
+ bne _0225559A
+ ldrb r0, [r3, #9]
+ cmp r0, #1
+ bne _0225559A
+ ldmia r3!, {r0, r1}
+ add r6, sp, #0x24
+ add r4, r6, #0
+ stmia r6!, {r0, r1}
+ ldr r0, [r3]
+ add r1, r4, #0
+ str r0, [r6]
+ mov r0, #0
+ strb r0, [r4, #9]
+ add r0, r5, #0
+ bl MOD23_022555F4
+ add sp, #0x30
+ pop {r4, r5, r6, pc}
+_0225559A:
+ cmp r1, #1
+ bne _022555C2
+ ldrb r0, [r3, #9]
+ cmp r0, #0
+ bne _022555C2
+ ldmia r5!, {r0, r1}
+ add r6, sp, #0x18
+ add r2, r6, #0
+ stmia r6!, {r0, r1}
+ ldr r0, [r5]
+ add r1, r2, #0
+ str r0, [r6]
+ mov r0, #0
+ strb r0, [r2, #9]
+ add r0, r3, #0
+ add r2, r4, #0
+ bl MOD23_022555F4
+ add sp, #0x30
+ pop {r4, r5, r6, pc}
+_022555C2:
+ add r1, r3, #0
+ add r0, r5, #0
+ add r2, sp, #0xc
+ add r3, sp, #0
+ bl MOD23_02255C6C
+ ldr r2, [sp, #0xc]
+ ldr r1, [sp]
+ ldr r3, [sp, #0x10]
+ ldr r0, [sp, #4]
+ add r1, r2, r1
+ adc r3, r0
+ str r1, [r4]
+ str r3, [r4, #4]
+ add r0, sp, #0
+ ldrb r1, [r0, #0x14]
+ strb r1, [r4, #8]
+ ldrb r0, [r0, #0x15]
+ strb r0, [r4, #9]
+ add r0, r4, #0
+ bl MOD23_02255B7C
+ add sp, #0x30
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD23_02255568
+
+ thumb_func_start MOD23_022555F4
+MOD23_022555F4: ; 0x022555F4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ add r4, r1, #0
+ ldrb r1, [r5, #9]
+ add r6, r2, #0
+ cmp r1, #0
+ bne _0225560A
+ ldrb r0, [r4, #9]
+ cmp r0, #1
+ beq _02255614
+_0225560A:
+ cmp r1, #1
+ bne _02255636
+ ldrb r0, [r4, #9]
+ cmp r0, #0
+ bne _02255636
+_02255614:
+ ldmia r4!, {r0, r1}
+ add r3, sp, #0x18
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r4]
+ str r0, [r3]
+ ldrb r1, [r2, #9]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r2, #9]
+ add r1, r2, #0
+ add r0, r5, #0
+ add r2, r6, #0
+ bl MOD23_02255568
+ add sp, #0x24
+ pop {r3, r4, r5, r6, pc}
+_02255636:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD23_02255874
+ cmp r0, #0
+ beq _0225564C
+ add r0, r6, #0
+ bl MOD23_02255548
+ add sp, #0x24
+ pop {r3, r4, r5, r6, pc}
+_0225564C:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, sp, #0xc
+ add r3, sp, #0
+ bl MOD23_02255C6C
+ ldr r3, [sp, #0xc]
+ ldr r2, [sp, #0x10]
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ add r5, sp, #0xc
+ add r4, sp, #0
+ sub r0, r3, r0
+ sbc r2, r1
+ bhs _0225566E
+ mov r1, #1
+ b _02255670
+_0225566E:
+ mov r1, #0
+_02255670:
+ add r0, sp, #0
+ ldrb r0, [r0, #0x15]
+ eor r0, r1
+ beq _02255686
+ add r0, r5, #0
+ add r5, r4, #0
+ ldrb r1, [r5, #9]
+ add r4, r0, #0
+ mov r0, #1
+ eor r0, r1
+ b _02255688
+_02255686:
+ ldrb r0, [r5, #9]
+_02255688:
+ strb r0, [r6, #9]
+ ldr r2, [r5]
+ ldr r1, [r4]
+ ldr r3, [r5, #4]
+ ldr r0, [r4, #4]
+ sub r1, r2, r1
+ sbc r3, r0
+ str r1, [r6]
+ str r3, [r6, #4]
+ ldrb r0, [r5, #8]
+ strb r0, [r6, #8]
+ add r0, r6, #0
+ bl MOD23_02255B7C
+ add sp, #0x24
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD23_022555F4
+
+ thumb_func_start MOD23_022556A8
+MOD23_022556A8: ; 0x022556A8
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ ldr r0, [r5]
+ ldr r1, [r5, #4]
+ ldr r2, [r6]
+ ldr r3, [r6, #4]
+ bl _ll_mul
+ str r0, [r4]
+ str r1, [r4, #4]
+ ldrb r1, [r5, #8]
+ ldrb r0, [r6, #8]
+ add r0, r1, r0
+ strb r0, [r4, #8]
+ ldrb r1, [r5, #9]
+ ldrb r0, [r6, #9]
+ eor r0, r1
+ strb r0, [r4, #9]
+ add r0, r4, #0
+ bl MOD23_02255B7C
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD23_022556A8
+
+ thumb_func_start MOD23_022556D8
+MOD23_022556D8: ; 0x022556D8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r2, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ ldr r6, [r3, #4]
+ mov r3, #0
+ ldr r2, [r2]
+ mov r4, #0
+ eor r3, r6
+ eor r2, r4
+ str r1, [sp]
+ orr r2, r3
+ bne _022556FC
+ mov r0, #1
+ add sp, #0x1c
+ strb r0, [r5, #0xb]
+ pop {r4, r5, r6, r7, pc}
+_022556FC:
+ add r2, sp, #0x10
+ add r3, sp, #4
+ bl MOD23_02255C6C
+ add r0, sp, #4
+ str r0, [sp]
+ ldr r4, [sp, #4]
+ ldr r3, [sp, #8]
+ ldr r2, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ ldr r0, _022557EC ; =0x04000280
+ mov r6, #2
+ strh r6, [r0]
+ add r6, r0, #0
+ add r6, #0x10
+ str r2, [r6]
+ str r1, [r6, #4]
+ add r1, r0, #0
+ add r1, #0x18
+ str r4, [r1]
+ str r3, [r1, #4]
+ lsr r1, r0, #0xb
+_02255728:
+ ldrh r2, [r0]
+ tst r2, r1
+ bne _02255728
+ ldr r0, _022557F0 ; =0x040002A0
+ ldr r1, [r0]
+ ldr r0, [r0, #4]
+ str r1, [r5]
+ str r0, [r5, #4]
+ mov r0, #0
+ strb r0, [r5, #8]
+ add r0, r5, #0
+ bl MOD23_02255B18
+ ldr r2, _022557EC ; =0x04000280
+ add r7, r0, #0
+ lsr r0, r2, #0xb
+_02255748:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02255748
+ ldr r0, _022557F4 ; =0x040002A8
+ mov r1, #0
+ ldr r2, [r0, #4]
+ ldr r3, [r0]
+ mov r0, #0
+ eor r1, r2
+ eor r0, r3
+ orr r0, r1
+ beq _022557DC
+_02255760:
+ ldrb r0, [r5, #8]
+ add r1, r7, #1
+ add r1, r1, r0
+ ldrb r0, [r5, #0xa]
+ cmp r1, r0
+ bhs _022557DC
+ ldr r4, [sp, #4]
+ ldr r6, [sp, #8]
+ ldr r0, _022557EC ; =0x04000280
+ mov r1, #2
+ strh r1, [r0]
+ add r0, r3, #0
+ add r1, r2, #0
+ mov r2, #0xa
+ mov r3, #0
+ bl _ll_mul
+ ldr r2, _022557F8 ; =0x04000290
+ mov r3, #0
+ str r0, [r2]
+ str r1, [r2, #4]
+ add r2, #8
+ str r4, [r2]
+ str r6, [r2, #4]
+ ldr r0, [r5]
+ ldr r1, [r5, #4]
+ mov r2, #0xa
+ bl _ll_mul
+ str r0, [r5]
+ ldr r2, _022557EC ; =0x04000280
+ str r1, [r5, #4]
+ lsr r0, r2, #0xb
+_022557A2:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _022557A2
+ ldr r0, _022557F0 ; =0x040002A0
+ ldr r2, [r5]
+ ldr r1, [r0]
+ ldr r3, [r5, #4]
+ add r1, r2, r1
+ ldr r0, [r0, #4]
+ ldr r2, _022557EC ; =0x04000280
+ adc r3, r0
+ str r1, [r5]
+ str r3, [r5, #4]
+ ldrb r0, [r5, #8]
+ add r0, r0, #1
+ strb r0, [r5, #8]
+ lsr r0, r2, #0xb
+_022557C4:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _022557C4
+ ldr r0, _022557F4 ; =0x040002A8
+ mov r1, #0
+ ldr r2, [r0, #4]
+ ldr r3, [r0]
+ mov r0, #0
+ eor r1, r2
+ eor r0, r3
+ orr r0, r1
+ bne _02255760
+_022557DC:
+ add r0, sp, #0x10
+ ldrb r1, [r0, #9]
+ ldr r0, [sp]
+ ldrb r0, [r0, #9]
+ eor r0, r1
+ strb r0, [r5, #9]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022557EC: .word 0x04000280
+_022557F0: .word 0x040002A0
+_022557F4: .word 0x040002A8
+_022557F8: .word 0x04000290
+ thumb_func_end MOD23_022556D8
+
+ thumb_func_start MOD23_022557FC
+MOD23_022557FC: ; 0x022557FC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD23_02255B68
+ ldrb r1, [r5, #0xa]
+ cmp r0, r1
+ blo _02255810
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02255810:
+ ldrb r0, [r5, #8]
+ cmp r0, #0
+ bne _02255832
+ ldr r0, [r5]
+ ldr r1, [r5, #4]
+ mov r2, #0xa
+ mov r3, #0
+ bl _ll_mul
+ str r0, [r5]
+ str r1, [r5, #4]
+ ldr r2, [r5]
+ mov r0, #0
+ add r2, r2, r4
+ adc r1, r0
+ str r2, [r5]
+ str r1, [r5, #4]
+_02255832:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD23_022557FC
+
+ thumb_func_start MOD23_02255838
+MOD23_02255838: ; 0x02255838
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD23_02255B68
+ ldrb r1, [r5, #0xa]
+ cmp r0, r1
+ blo _0225584C
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0225584C:
+ ldr r0, [r5]
+ ldr r1, [r5, #4]
+ mov r2, #0xa
+ mov r3, #0
+ bl _ll_mul
+ str r0, [r5]
+ str r1, [r5, #4]
+ ldr r2, [r5]
+ mov r0, #0
+ add r2, r2, r4
+ adc r1, r0
+ str r2, [r5]
+ str r1, [r5, #4]
+ ldrb r0, [r5, #8]
+ add r0, r0, #1
+ strb r0, [r5, #8]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD23_02255838
+
+ thumb_func_start MOD23_02255874
+MOD23_02255874: ; 0x02255874
+ push {r3, r4, r5, r6}
+ ldr r2, [r0, #4]
+ ldr r3, [r0]
+ ldr r4, [r1, #4]
+ add r5, r2, #0
+ eor r5, r4
+ ldr r6, [r1]
+ add r4, r3, #0
+ eor r4, r6
+ orr r4, r5
+ beq _02255890
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+_02255890:
+ ldrb r5, [r0, #8]
+ ldrb r4, [r1, #8]
+ cmp r5, r4
+ beq _0225589E
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+_0225589E:
+ ldrb r4, [r0, #9]
+ ldrb r0, [r1, #9]
+ cmp r4, r0
+ beq _022558B8
+ mov r1, #0
+ mov r0, #0
+ eor r1, r2
+ eor r0, r3
+ orr r0, r1
+ beq _022558B8
+ mov r0, #0
+ pop {r3, r4, r5, r6}
+ bx lr
+_022558B8:
+ mov r0, #1
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD23_02255874
+
+ thumb_func_start MOD23_022558C0
+MOD23_022558C0: ; 0x022558C0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldrb r1, [r5, #0xb]
+ cmp r1, #0
+ beq _022558D0
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_022558D0:
+ bl MOD23_02255B18
+ ldrb r1, [r5, #8]
+ cmp r1, #0
+ beq _022558DE
+ add r1, r1, #1
+ add r0, r0, r1
+_022558DE:
+ cmp r0, r4
+ bls _022558E6
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_022558E6:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD23_022558C0
+
+ thumb_func_start MOD23_022558EC
+MOD23_022558EC: ; 0x022558EC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r0, [sp]
+ ldrb r0, [r0, #0xb]
+ str r1, [sp, #0x10]
+ cmp r0, #0
+ beq _02255900
+ add sp, #0x20
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02255900:
+ ldr r0, [sp]
+ mov r1, #0
+ ldr r7, [r0, #4]
+ ldr r6, [r0]
+ mov r0, #0
+ eor r1, r7
+ eor r0, r6
+ orr r0, r1
+ bne _02255956
+ ldr r1, [sp, #0x10]
+ add r0, r1, #0
+ add r2, r0, #2
+ mov r0, #0
+ strh r0, [r1]
+ ldr r1, [sp]
+ str r2, [sp, #0x10]
+ ldrb r1, [r1, #8]
+ cmp r1, #0
+ beq _0225594A
+ add r1, r2, #2
+ str r1, [sp, #0x10]
+ mov r1, #0xa
+ strh r1, [r2]
+ ldr r1, [sp]
+ ldrb r1, [r1, #8]
+ cmp r1, #0
+ ble _0225594A
+ add r2, r0, #0
+_02255938:
+ ldr r1, [sp, #0x10]
+ add r0, r0, #1
+ strh r2, [r1]
+ add r1, r1, #2
+ str r1, [sp, #0x10]
+ ldr r1, [sp]
+ ldrb r1, [r1, #8]
+ cmp r0, r1
+ blt _02255938
+_0225594A:
+ ldr r0, [sp, #0x10]
+ mov r1, #0xd
+ strh r1, [r0]
+ add sp, #0x20
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02255956:
+ mov r2, #0xa
+ mov r0, #1
+ mov r1, #0
+ sub r2, r6, r2
+ mov ip, r7
+ mov r2, ip
+ sbc r2, r1
+ blo _0225597A
+ ldr r2, _02255ACC ; =0x022560D8
+_02255968:
+ add r2, #8
+ ldr r3, [r2]
+ add r0, r0, #1
+ ldr r1, [r2, #4]
+ sub r3, r6, r3
+ mov ip, r7
+ mov r3, ip
+ sbc r3, r1
+ bhs _02255968
+_0225597A:
+ ldr r1, [sp]
+ str r0, [sp, #8]
+ ldrb r1, [r1, #8]
+ sub r3, r1, r0
+ bmi _0225598C
+ add r1, r3, #2
+ add r1, r0, r1
+ str r1, [sp, #8]
+ b _02255994
+_0225598C:
+ cmp r1, #0
+ beq _02255994
+ add r1, r0, #1
+ str r1, [sp, #8]
+_02255994:
+ ldr r1, [sp]
+ ldr r4, [sp]
+ ldrb r2, [r1, #9]
+ ldr r1, [sp, #8]
+ ldrb r4, [r4, #0xa]
+ add r1, r1, r2
+ cmp r1, r4
+ bls _022559AA
+ add sp, #0x20
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_022559AA:
+ cmp r2, #1
+ bne _022559B8
+ ldr r1, [sp, #0x10]
+ mov r2, #0xb
+ strh r2, [r1]
+ add r1, r1, #2
+ str r1, [sp, #0x10]
+_022559B8:
+ ldr r5, [sp, #0x10]
+ cmp r3, #0
+ blt _022559E2
+ add r0, r5, #0
+ mov r1, #0
+ strh r1, [r0]
+ mov r1, #0xa
+ add r5, r0, #4
+ strh r1, [r0, #2]
+ add r0, r3, #0
+ sub r3, r3, #1
+ cmp r0, #0
+ beq _02255A4E
+ mov r0, #0
+_022559D4:
+ add r1, r3, #0
+ strh r0, [r5]
+ add r5, r5, #2
+ sub r3, r3, #1
+ cmp r1, #0
+ bne _022559D4
+ b _02255A4E
+_022559E2:
+ neg r1, r3
+ str r1, [sp, #4]
+ mov r1, #0
+ str r1, [sp, #0x14]
+ ldr r1, [sp, #4]
+ cmp r1, #0
+ ble _02255A40
+ ldr r4, _02255AD0 ; =0x04000280
+ sub r0, r0, #1
+ mov lr, r0
+ lsr r3, r4, #0xb
+ lsr r2, r4, #0xb
+_022559FA:
+ mov r0, #2
+ strh r0, [r4]
+ ldr r0, _02255AD4 ; =0x04000290
+ mov r1, lr
+ str r6, [r0]
+ str r7, [r0, #4]
+ ldr r0, [sp, #0x14]
+ sub r0, r1, r0
+ lsl r1, r0, #3
+ ldr r0, _02255AD8 ; =0x022560D0
+ add r6, r0, r1
+ ldr r1, [r0, r1]
+ ldr r6, [r6, #4]
+ ldr r0, _02255ADC ; =0x04000298
+ str r1, [r0]
+ str r6, [r0, #4]
+_02255A1A:
+ ldrh r0, [r4]
+ tst r0, r3
+ bne _02255A1A
+ ldr r0, _02255AE0 ; =0x040002A0
+ ldr r0, [r0]
+ strh r0, [r5]
+ add r5, r5, #2
+_02255A28:
+ ldrh r0, [r4]
+ tst r0, r2
+ bne _02255A28
+ ldr r0, _02255AE4 ; =0x040002A8
+ ldr r1, [sp, #4]
+ ldr r6, [r0]
+ ldr r7, [r0, #4]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ cmp r0, r1
+ blt _022559FA
+_02255A40:
+ ldr r0, [sp]
+ ldrb r0, [r0, #8]
+ cmp r0, #0
+ beq _02255A4E
+ mov r0, #0xa
+ strh r0, [r5]
+ add r5, r5, #2
+_02255A4E:
+ ldr r0, [sp, #0x10]
+ sub r1, r5, r0
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r1, r0, #1
+ ldr r0, [sp, #8]
+ cmp r1, r0
+ bhs _02255AC0
+ sub r0, r0, r1
+ str r0, [sp, #0x18]
+ mov r0, #0
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ ble _02255AC0
+ ldr r4, _02255AD0 ; =0x04000280
+ sub r0, r0, #1
+ str r0, [sp, #0xc]
+ lsr r3, r4, #0xb
+ lsr r2, r4, #0xb
+_02255A76:
+ mov r0, #2
+ strh r0, [r4]
+ ldr r0, _02255AD4 ; =0x04000290
+ ldr r1, [sp, #0xc]
+ str r6, [r0]
+ str r7, [r0, #4]
+ ldr r0, [sp, #0x1c]
+ ldr r6, _02255AD8 ; =0x022560D0
+ sub r0, r1, r0
+ lsl r1, r0, #3
+ ldr r0, _02255AD8 ; =0x022560D0
+ add r0, r0, r1
+ ldr r1, [r6, r1]
+ ldr r0, [r0, #4]
+ ldr r6, _02255ADC ; =0x04000298
+ str r1, [r6]
+ add r1, r6, #0
+ str r0, [r1, #4]
+_02255A9A:
+ ldrh r0, [r4]
+ tst r0, r3
+ bne _02255A9A
+ ldr r0, _02255AE0 ; =0x040002A0
+ ldr r0, [r0]
+ strh r0, [r5]
+ add r5, r5, #2
+_02255AA8:
+ ldrh r0, [r4]
+ tst r0, r2
+ bne _02255AA8
+ ldr r0, _02255AE4 ; =0x040002A8
+ ldr r1, [sp, #0x18]
+ ldr r6, [r0]
+ ldr r7, [r0, #4]
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ cmp r0, r1
+ blt _02255A76
+_02255AC0:
+ mov r0, #0xd
+ strh r0, [r5]
+ mov r0, #1
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255ACC: .word 0x022560D8
+_02255AD0: .word 0x04000280
+_02255AD4: .word 0x04000290
+_02255AD8: .word 0x022560D0
+_02255ADC: .word 0x04000298
+_02255AE0: .word 0x040002A0
+_02255AE4: .word 0x040002A8
+ thumb_func_end MOD23_022558EC
+
+ thumb_func_start MOD23_02255AE8
+MOD23_02255AE8: ; 0x02255AE8
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldrb r2, [r4, #8]
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ lsl r5, r2, #3
+ ldr r2, _02255B14 ; =0x022560D0
+ add r3, r2, r5
+ ldr r2, [r2, r5]
+ ldr r3, [r3, #4]
+ bl _ll_udiv
+ ldrb r2, [r4, #9]
+ cmp r2, #1
+ bne _02255B10
+ mov r2, #0
+ mvn r2, r2
+ add r3, r2, #0
+ bl _ll_mul
+_02255B10:
+ pop {r3, r4, r5, pc}
+ nop
+_02255B14: .word 0x022560D0
+ thumb_func_end MOD23_02255AE8
+
+ thumb_func_start MOD23_02255B18
+MOD23_02255B18: ; 0x02255B18
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ ldr r2, [sp]
+ mov r0, #0xa
+ ldr r5, [r2]
+ ldr r6, [r2, #4]
+ mov r2, #0xa
+ mov r1, #0
+ mov r4, #1
+ mov r3, #0
+ sub r2, r5, r2
+ mov ip, r6
+ mov r2, ip
+ sbc r2, r3
+ blo _02255B52
+ ldr r2, [sp]
+ ldrb r7, [r2, #0xa]
+_02255B3A:
+ add r4, r4, #1
+ cmp r4, r7
+ bhi _02255B52
+ mov r2, #0xa
+ mov r3, #0
+ bl _ll_mul
+ sub r2, r5, r0
+ mov ip, r6
+ mov r2, ip
+ sbc r2, r1
+ bhs _02255B3A
+_02255B52:
+ ldr r0, [sp]
+ ldrb r0, [r0, #8]
+ cmp r4, r0
+ bls _02255B5E
+ sub r4, r4, r0
+ b _02255B60
+_02255B5E:
+ mov r4, #1
+_02255B60:
+ ldr r0, [sp]
+ ldrb r0, [r0, #9]
+ add r0, r4, r0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD23_02255B18
+
+ thumb_func_start MOD23_02255B68
+MOD23_02255B68: ; 0x02255B68
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD23_02255B18
+ ldrb r1, [r4, #8]
+ cmp r1, #0
+ beq _02255B7A
+ add r1, r1, #1
+ add r0, r0, r1
+_02255B7A:
+ pop {r4, pc}
+ thumb_func_end MOD23_02255B68
+
+ thumb_func_start MOD23_02255B7C
+MOD23_02255B7C: ; 0x02255B7C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _02255C02
+ ldr r5, _02255C5C ; =0x04000280
+ ldr r2, [r4]
+ add r3, r5, #0
+ ldr r1, [r4, #4]
+ mov r0, #1
+ strh r0, [r5]
+ add r3, #0x10
+ str r2, [r3]
+ add r0, r5, #0
+ str r1, [r3, #4]
+ add r0, #0x18
+ mov r2, #0xa
+ mov r1, #0
+ str r2, [r0]
+ str r1, [r0, #4]
+ add r1, r4, #0
+ mov ip, r0
+ add r1, #8
+ b _02255BE4
+_02255BAC:
+ mov r0, #2
+ lsl r0, r0, #0xe
+_02255BB0:
+ ldrh r2, [r5]
+ tst r2, r0
+ bne _02255BB0
+ ldr r0, _02255C60 ; =0x040002A0
+ ldr r2, _02255C60 ; =0x040002A0
+ ldr r0, [r0]
+ ldr r2, [r2, #4]
+ str r0, [r4]
+ str r2, [r4, #4]
+ ldr r6, [r4]
+ mov r0, #1
+ strh r0, [r5]
+ str r6, [r3]
+ str r2, [r3, #4]
+ mov r2, #0xa
+ mov r0, ip
+ str r2, [r0]
+ mov r2, #0
+ mov r0, ip
+ str r2, [r0, #4]
+ ldrb r0, [r1]
+ sub r0, r0, #1
+ strb r0, [r1]
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _02255C02
+_02255BE4:
+ ldrh r2, [r5]
+ mov r0, #2
+ lsl r0, r0, #0xe
+ tst r0, r2
+ bne _02255BE4
+ ldr r0, _02255C64 ; =0x040002A8
+ mov r7, #0
+ ldr r6, [r0]
+ ldr r2, [r0, #4]
+ mov r0, #0
+ eor r0, r2
+ add r2, r6, #0
+ eor r2, r7
+ orr r0, r2
+ beq _02255BAC
+_02255C02:
+ add r0, r4, #0
+ bl MOD23_02255B18
+ ldrb r2, [r4, #8]
+ cmp r2, #0
+ beq _02255C58
+ add r1, r2, #1
+ add r1, r0, r1
+ ldrb r0, [r4, #0xa]
+ cmp r1, r0
+ bls _02255C58
+ sub r1, r1, r0
+ cmp r1, r2
+ bhi _02255C58
+ ldr r5, [r4]
+ ldr r3, [r4, #4]
+ ldr r0, _02255C5C ; =0x04000280
+ mov r2, #1
+ strh r2, [r0]
+ add r2, r0, #0
+ add r2, #0x10
+ str r5, [r2]
+ str r3, [r2, #4]
+ ldr r2, _02255C68 ; =0x022560D0
+ lsl r3, r1, #3
+ ldr r5, [r2, r3]
+ add r2, r0, #0
+ add r2, #0x18
+ mov r3, #0
+ str r5, [r2]
+ str r3, [r2, #4]
+ lsr r2, r0, #0xb
+_02255C42:
+ ldrh r3, [r0]
+ tst r3, r2
+ bne _02255C42
+ ldr r0, _02255C60 ; =0x040002A0
+ ldr r2, [r0]
+ ldr r0, [r0, #4]
+ str r2, [r4]
+ str r0, [r4, #4]
+ ldrb r0, [r4, #8]
+ sub r0, r0, r1
+ strb r0, [r4, #8]
+_02255C58:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255C5C: .word 0x04000280
+_02255C60: .word 0x040002A0
+_02255C64: .word 0x040002A8
+_02255C68: .word 0x022560D0
+ thumb_func_end MOD23_02255B7C
+
+ thumb_func_start MOD23_02255C6C
+MOD23_02255C6C: ; 0x02255C6C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ ldmia r6!, {r0, r1}
+ add r5, r2, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r6]
+ add r4, r3, #0
+ str r0, [r2]
+ ldmia r7!, {r0, r1}
+ add r2, r4, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r7]
+ str r0, [r2]
+ ldrb r1, [r5, #8]
+ ldrb r0, [r4, #8]
+ cmp r1, r0
+ bhs _02255C96
+ add r0, r5, #0
+ add r5, r4, #0
+ add r4, r0, #0
+_02255C96:
+ ldrb r3, [r5, #8]
+ ldrb r2, [r4, #8]
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ sub r2, r3, r2
+ lsl r6, r2, #3
+ ldr r2, _02255CB8 ; =0x022560D0
+ add r3, r2, r6
+ ldr r2, [r2, r6]
+ ldr r3, [r3, #4]
+ bl _ll_mul
+ str r0, [r4]
+ str r1, [r4, #4]
+ ldrb r0, [r5, #8]
+ strb r0, [r4, #8]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02255CB8: .word 0x022560D0
+ thumb_func_end MOD23_02255C6C
+
+ .section .rodata
+ ; 0x02255CBC
+ .incbin "baserom.nds", 0x28807C, 0x46C
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_23.SINIT_START
+ .global SDK_OVERLAY.MODULE_23.SINIT_END
+SDK_OVERLAY.MODULE_23.SINIT_START:
+ .word MOD23_02254840
+ .word 0
+SDK_OVERLAY.MODULE_23.SINIT_END:
diff --git a/arm9/modules/24/asm/module_24.s b/arm9/modules/24/asm/module_24.s
new file mode 100644
index 00000000..ba2c3f32
--- /dev/null
+++ b/arm9/modules/24/asm/module_24.s
@@ -0,0 +1,1187 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD24_02254840
+MOD24_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD24_02254854
+ ldr r1, _02254850 ; =MOD24_02254990
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD24_02254854
+_02254850: .word MOD24_02254990
+ thumb_func_end MOD24_02254840
+
+ thumb_func_start MOD24_02254854
+MOD24_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r1, #0x17
+ add r5, r0, #0
+ mov r0, #8
+ lsl r1, r1, #8
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254894
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD24_0225489C
+ cmp r0, #0
+ beq _0225488E
+ ldr r0, _02254898 ; =MOD24_02254918
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488E
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488E:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254894:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254898: .word MOD24_02254918
+ thumb_func_end MOD24_02254854
+
+ thumb_func_start MOD24_0225489C
+MOD24_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _022548E4 ; =0x000016F0
+ add r4, r1, #0
+ str r3, [r5, r0]
+ mov r1, #1
+ str r1, [r5, #8]
+ add r0, r0, #4
+ add r1, r5, #0
+ add r0, r5, r0
+ add r1, #8
+ bl MOD24_02254CA0
+ cmp r0, #0
+ beq _022548E0
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ strb r0, [r5, #3]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _022548E8 ; =0x022550F8
+ ldr r2, _022548EC ; =MOD24_02254960
+ mov r1, #2
+ add r3, r5, #0
+ bl MOD20_02254130
+ ldr r1, _022548F0 ; =0x000016FC
+ str r0, [r5, r1]
+ sub r0, r1, #4
+ str r4, [r5, r0]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548E0:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022548E4: .word 0x000016F0
+_022548E8: .word 0x022550F8
+_022548EC: .word MOD24_02254960
+_022548F0: .word 0x000016FC
+ thumb_func_end MOD24_0225489C
+
+ thumb_func_start MOD24_022548F4
+MOD24_022548F4: ; 0x022548F4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02254910 ; =0x000016FC
+ ldr r0, [r4, r0]
+ bl MOD20_02254198
+ ldr r0, _02254914 ; =0x000016F4
+ ldr r0, [r4, r0]
+ bl MOD24_02254D48
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+_02254910: .word 0x000016FC
+_02254914: .word 0x000016F4
+ thumb_func_end MOD24_022548F4
+
+ thumb_func_start MOD24_02254918
+MOD24_02254918: ; 0x02254918
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254954
+ ldr r1, _02254958 ; =0x000016F8
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _0225495C ; =0x02255100
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254954
+ add r0, r4, #0
+ bl MOD24_022548F4
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, _02254958 ; =0x000016F8
+ ldr r0, [r4, r0]
+ bl MOD20_022529A0
+_02254954:
+ pop {r3, r4, r5, pc}
+ nop
+_02254958: .word 0x000016F8
+_0225495C: .word 0x02255100
+ thumb_func_end MOD24_02254918
+
+ thumb_func_start MOD24_02254960
+MOD24_02254960: ; 0x02254960
+ push {r3, lr}
+ cmp r2, #1
+ bne _02254988
+ ldr r1, [r3, #8]
+ cmp r1, #1
+ bne _02254970
+ cmp r0, #0
+ beq _02254978
+_02254970:
+ cmp r1, #0
+ bne _02254988
+ cmp r0, #1
+ bne _02254988
+_02254978:
+ ldr r0, [r3, #8]
+ mov r1, #1
+ eor r0, r1
+ str r0, [r3, #8]
+ ldr r0, _0225498C ; =0x000016F4
+ ldr r0, [r3, r0]
+ bl MOD24_02254D8C
+_02254988:
+ pop {r3, pc}
+ nop
+_0225498C: .word 0x000016F4
+ thumb_func_end MOD24_02254960
+
+ thumb_func_start MOD24_02254990
+MOD24_02254990: ; 0x02254990
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD24_02254990
+
+ thumb_func_start MOD24_02254998
+MOD24_02254998: ; 0x02254998
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549A0
+ b _022549A2
+_022549A0:
+ mov r1, #2
+_022549A2:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD24_02254998
+
+ thumb_func_start MOD24_022549AC
+MOD24_022549AC: ; 0x022549AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549BC
+ cmp r0, #1
+ beq _022549CE
+ b _022549EC
+_022549BC:
+ ldr r0, _022549F0 ; =0x000016F4
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD24_02254D8C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549EC
+_022549CE:
+ ldr r0, _022549F0 ; =0x000016F4
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD24_02254DB0
+ cmp r0, #0
+ beq _022549EC
+ ldr r0, _022549F4 ; =0x000016F8
+ ldr r0, [r4, r0]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD24_02254998
+_022549EC:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_022549F0: .word 0x000016F4
+_022549F4: .word 0x000016F8
+ thumb_func_end MOD24_022549AC
+
+ thumb_func_start MOD24_022549F8
+MOD24_022549F8: ; 0x022549F8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ ldrb r1, [r5, #2]
+ cmp r1, #0
+ beq _02254A0A
+ mov r1, #2
+ bl MOD24_02254998
+_02254A0A:
+ ldrb r0, [r5, #1]
+ cmp r0, #0
+ bne _02254A60
+ ldr r0, _02254A68 ; =0x000016F8
+ ldr r0, [r5, r0]
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02254A60
+ ldrb r0, [r5, #3]
+ cmp r0, #0
+ beq _02254A48
+ add r0, r5, #0
+ ldr r6, [r5, #0xc]
+ ldr r4, [r5, #0x10]
+ bl MOD24_02254AD4
+ cmp r0, #0
+ beq _02254A42
+ ldr r0, [r5, #0x10]
+ add r1, r6, #0
+ str r0, [sp]
+ ldr r3, [r5, #0xc]
+ add r0, r5, #0
+ add r2, r4, #0
+ bl MOD24_02254B20
+ b _02254A60
+_02254A42:
+ mov r0, #0
+ strb r0, [r5, #3]
+ b _02254A60
+_02254A48:
+ add r0, r5, #0
+ bl MOD24_02254A70
+ cmp r0, #0
+ beq _02254A60
+ ldr r0, _02254A6C ; =0x000016F4
+ mov r1, #3
+ ldr r0, [r5, r0]
+ bl MOD24_02254D8C
+ mov r0, #1
+ strb r0, [r5, #3]
+_02254A60:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254A68: .word 0x000016F8
+_02254A6C: .word 0x000016F4
+ thumb_func_end MOD24_022549F8
+
+ thumb_func_start MOD24_02254A70
+MOD24_02254A70: ; 0x02254A70
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252B68
+ cmp r0, #0
+ beq _02254ACC
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ sub r1, #0x10
+ sub r2, #0x10
+ cmp r1, #0x9c
+ bhs _02254A92
+ mov r0, #1
+ b _02254A94
+_02254A92:
+ mov r0, #0
+_02254A94:
+ cmp r2, #0x96
+ bhs _02254A9C
+ mov r3, #1
+ b _02254A9E
+_02254A9C:
+ mov r3, #0
+_02254A9E:
+ tst r0, r3
+ beq _02254ACC
+ lsr r3, r1, #1
+ lsr r0, r2, #1
+ add r2, r4, #0
+ mov r1, #0x4b
+ add r2, #0x14
+ mul r1, r3
+ str r3, [sp, #4]
+ str r0, [sp]
+ add r3, r2, r1
+ ldrb r1, [r3, r0]
+ ldr r2, [r4, #8]
+ cmp r2, r1
+ beq _02254ACC
+ strb r2, [r3, r0]
+ ldr r0, [sp, #4]
+ str r0, [r4, #0xc]
+ ldr r0, [sp]
+ add sp, #8
+ str r0, [r4, #0x10]
+ mov r0, #1
+ pop {r4, pc}
+_02254ACC:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD24_02254A70
+
+ thumb_func_start MOD24_02254AD4
+MOD24_02254AD4: ; 0x02254AD4
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252B68
+ cmp r0, #0
+ beq _02254B1A
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ sub r1, #0x10
+ sub r2, #0x10
+ cmp r1, #0x9c
+ bhs _02254AF6
+ mov r0, #1
+ b _02254AF8
+_02254AF6:
+ mov r0, #0
+_02254AF8:
+ cmp r2, #0x96
+ bhs _02254B00
+ mov r3, #1
+ b _02254B02
+_02254B00:
+ mov r3, #0
+_02254B02:
+ tst r0, r3
+ beq _02254B1A
+ lsr r1, r1, #1
+ lsr r0, r2, #1
+ str r1, [sp, #4]
+ str r0, [sp]
+ str r1, [r4, #0xc]
+ ldr r0, [sp]
+ add sp, #8
+ str r0, [r4, #0x10]
+ mov r0, #1
+ pop {r4, pc}
+_02254B1A:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD24_02254AD4
+
+ thumb_func_start MOD24_02254B20
+MOD24_02254B20: ; 0x02254B20
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [sp, #0x28]
+ add r4, r2, #0
+ add r6, r1, #0
+ str r3, [sp]
+ str r0, [sp, #0x28]
+ cmp r4, r0
+ bne _02254B3C
+ add r0, r3, #0
+ cmp r6, r0
+ bne _02254B3C
+ b _02254C5C
+_02254B3C:
+ ldr r0, [sp]
+ cmp r0, r6
+ bls _02254B46
+ sub r1, r0, r6
+ b _02254B48
+_02254B46:
+ sub r1, r6, r0
+_02254B48:
+ ldr r0, [sp, #0x28]
+ cmp r0, r4
+ bls _02254B52
+ sub r2, r0, r4
+ b _02254B54
+_02254B52:
+ sub r2, r4, r0
+_02254B54:
+ cmp r1, r2
+ bls _02254BD6
+ ldr r0, [sp]
+ cmp r0, r6
+ bls _02254B64
+ mov r0, #1
+ str r0, [sp, #4]
+ b _02254B6A
+_02254B64:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #4]
+_02254B6A:
+ cmp r1, #0
+ beq _02254B7C
+ ldr r0, [sp, #0x28]
+ sub r0, r0, r4
+ lsl r0, r0, #0xc
+ bl _s32_div_f
+ str r0, [sp, #0x10]
+ b _02254B80
+_02254B7C:
+ mov r0, #0
+ str r0, [sp, #0x10]
+_02254B80:
+ ldr r0, [sp, #0x10]
+ lsl r1, r4, #0xc
+ add r7, r1, r0
+ ldr r0, [sp, #4]
+ add r6, r6, r0
+ ldr r0, [sp]
+ cmp r6, r0
+ beq _02254C40
+ mov r1, #0x4b
+ add r0, r6, #0
+ mul r0, r1
+ add r4, r5, r0
+ ldr r0, [sp, #4]
+ mul r1, r0
+ str r1, [sp, #0xc]
+_02254B9E:
+ asr r2, r7, #0xc
+ cmp r6, #0x4e
+ bhs _02254BC2
+ cmp r2, #0x4b
+ bhs _02254BC2
+ add r1, r4, r2
+ ldrb r0, [r1, #0x14]
+ ldr r3, [r5, #8]
+ cmp r3, r0
+ beq _02254BC2
+ strb r3, [r1, #0x14]
+ str r6, [r5, #0xc]
+ ldr r0, _02254C60 ; =0x000016F4
+ str r2, [r5, #0x10]
+ ldr r0, [r5, r0]
+ mov r1, #3
+ bl MOD24_02254D8C
+_02254BC2:
+ ldr r0, [sp, #0xc]
+ add r4, r4, r0
+ ldr r0, [sp, #4]
+ add r6, r6, r0
+ ldr r0, [sp, #0x10]
+ add r7, r7, r0
+ ldr r0, [sp]
+ cmp r6, r0
+ bne _02254B9E
+ b _02254C40
+_02254BD6:
+ ldr r0, [sp, #0x28]
+ cmp r0, r4
+ bls _02254BE0
+ mov r7, #1
+ b _02254BE4
+_02254BE0:
+ mov r7, #0
+ mvn r7, r7
+_02254BE4:
+ cmp r2, #0
+ beq _02254BF8
+ ldr r0, [sp]
+ add r1, r2, #0
+ sub r0, r0, r6
+ lsl r0, r0, #0xc
+ bl _s32_div_f
+ str r0, [sp, #8]
+ b _02254BFC
+_02254BF8:
+ mov r0, #0
+ str r0, [sp, #8]
+_02254BFC:
+ ldr r0, [sp, #8]
+ lsl r1, r6, #0xc
+ add r6, r1, r0
+ ldr r0, [sp, #0x28]
+ add r4, r4, r7
+ cmp r4, r0
+ beq _02254C40
+_02254C0A:
+ asr r3, r6, #0xc
+ cmp r4, #0x4b
+ bhs _02254C34
+ cmp r3, #0x4e
+ bhs _02254C34
+ mov r0, #0x4b
+ mul r0, r3
+ add r0, r5, r0
+ add r2, r0, r4
+ ldrb r0, [r2, #0x14]
+ ldr r1, [r5, #8]
+ cmp r1, r0
+ beq _02254C34
+ strb r1, [r2, #0x14]
+ str r3, [r5, #0xc]
+ ldr r0, _02254C60 ; =0x000016F4
+ str r4, [r5, #0x10]
+ ldr r0, [r5, r0]
+ mov r1, #3
+ bl MOD24_02254D8C
+_02254C34:
+ ldr r0, [sp, #8]
+ add r4, r4, r7
+ add r6, r6, r0
+ ldr r0, [sp, #0x28]
+ cmp r4, r0
+ bne _02254C0A
+_02254C40:
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x4b
+ bhs _02254C5C
+ ldr r0, [sp]
+ cmp r0, #0x4e
+ bhs _02254C5C
+ str r0, [r5, #0xc]
+ ldr r0, [sp, #0x28]
+ mov r1, #3
+ str r0, [r5, #0x10]
+ ldr r0, _02254C60 ; =0x000016F4
+ ldr r0, [r5, r0]
+ bl MOD24_02254D8C
+_02254C5C:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254C60: .word 0x000016F4
+ thumb_func_end MOD24_02254B20
+
+ thumb_func_start MOD24_02254C64
+MOD24_02254C64: ; 0x02254C64
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254C74
+ cmp r0, #1
+ beq _02254C86
+ b _02254C96
+_02254C74:
+ ldr r0, _02254C9C ; =0x000016F4
+ mov r1, #5
+ ldr r0, [r4, r0]
+ bl MOD24_02254D8C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254C96
+_02254C86:
+ ldr r0, _02254C9C ; =0x000016F4
+ ldr r0, [r4, r0]
+ bl MOD24_02254DBC
+ cmp r0, #0
+ beq _02254C96
+ mov r0, #1
+ pop {r4, pc}
+_02254C96:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254C9C: .word 0x000016F4
+ thumb_func_end MOD24_02254C64
+
+ thumb_func_start MOD24_02254CA0
+MOD24_02254CA0: ; 0x02254CA0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x74
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254CFA
+ mov r0, #7
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254CC0
+ bl ErrorHandling
+_02254CC0:
+ add r0, r4, #0
+ add r0, #8
+ mov r1, #0x10
+ bl MOD20_022536F4
+ mov r0, #7
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254CD8
+ bl ErrorHandling
+_02254CD8:
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x50]
+ mov r0, #7
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254CF4
+ bl ErrorHandling
+_02254CF4:
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254CFA:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD24_02254CA0
+
+ thumb_func_start MOD24_02254D00
+MOD24_02254D00: ; 0x02254D00
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #8
+ mov r1, #1
+ bl FUN_02018FF4
+ str r0, [r4, #0x70]
+ add r1, r0, #0
+ beq _02254D3C
+ ldr r0, [r4, #4]
+ ldr r2, _02254D40 ; =0x0225510C
+ bl FUN_02019150
+ mov r2, #0xbe
+ ldr r1, [r4]
+ ldr r0, _02254D44 ; =0x000016E8
+ lsl r2, r2, #6
+ ldr r0, [r1, r0]
+ ldr r1, [r4, #0x70]
+ ldr r1, [r1, #0xc]
+ bl FUN_0208946C
+ cmp r0, #0
+ bne _02254D38
+ ldr r0, [r4, #0x70]
+ mov r1, #4
+ bl FUN_02019620
+_02254D38:
+ mov r0, #1
+ pop {r4, pc}
+_02254D3C:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_02254D40: .word 0x0225510C
+_02254D44: .word 0x000016E8
+ thumb_func_end MOD24_02254D00
+
+ thumb_func_start MOD24_02254D48
+MOD24_02254D48: ; 0x02254D48
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254D84
+ mov r0, #7
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254D5C
+ bl ErrorHandling
+_02254D5C:
+ ldr r2, [r4, #0x70]
+ cmp r2, #0
+ beq _02254D7E
+ ldr r1, [r4]
+ ldr r0, _02254D88 ; =0x000016E8
+ ldr r0, [r1, r0]
+ ldr r1, [r2, #0xc]
+ mov r2, #0xbe
+ lsl r2, r2, #6
+ bl FUN_02089444
+ ldr r0, [r4, #0x70]
+ bl FUN_02019178
+ ldr r0, [r4, #0x70]
+ bl FUN_02016A18
+_02254D7E:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254D84:
+ pop {r4, pc}
+ nop
+_02254D88: .word 0x000016E8
+ thumb_func_end MOD24_02254D48
+
+ thumb_func_start MOD24_02254D8C
+MOD24_02254D8C: ; 0x02254D8C
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254DAC ; =0x0225516C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254DAC: .word 0x0225516C
+ thumb_func_end MOD24_02254D8C
+
+ thumb_func_start MOD24_02254DB0
+MOD24_02254DB0: ; 0x02254DB0
+ ldr r3, _02254DB8 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254DB8: .word MOD20_02253794
+ thumb_func_end MOD24_02254DB0
+
+ thumb_func_start MOD24_02254DBC
+MOD24_02254DBC: ; 0x02254DBC
+ ldr r3, _02254DC4 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254DC4: .word MOD20_022537B8
+ thumb_func_end MOD24_02254DBC
+
+ thumb_func_start MOD24_02254DC8
+MOD24_02254DC8: ; 0x02254DC8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD24_02254DC8
+
+ thumb_func_start MOD24_02254DDC
+MOD24_02254DDC: ; 0x02254DDC
+ push {r4, r5, lr}
+ sub sp, #0x14
+ mov r0, #8
+ add r4, r1, #0
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254DF0
+ bl ErrorHandling
+_02254DF0:
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254ED0 ; =0x02255114
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r5, #4]
+ ldr r2, _02254ED4 ; =0x02255130
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254E1E
+ bl ErrorHandling
+_02254E1E:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x1e
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x1f
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254E68
+ bl ErrorHandling
+_02254E68:
+ add r0, r5, #0
+ bl MOD24_02254D00
+ ldr r0, [r5, #0x70]
+ bl FUN_020191D0
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254E82
+ bl ErrorHandling
+_02254E82:
+ add r0, r5, #0
+ bl MOD24_02255078
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254E96
+ bl ErrorHandling
+_02254E96:
+ ldr r0, [r5, #4]
+ mov r1, #7
+ bl FUN_02017CD0
+ ldr r1, _02254ED8 ; =0x04001000
+ ldr r0, _02254EDC ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #0x14
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD24_02254DC8
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254ECC
+ bl ErrorHandling
+_02254ECC:
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254ED0: .word 0x02255114
+_02254ED4: .word 0x02255130
+_02254ED8: .word 0x04001000
+_02254EDC: .word 0xFFFFE0FF
+ thumb_func_end MOD24_02254DDC
+
+ thumb_func_start MOD24_02254EE0
+MOD24_02254EE0: ; 0x02254EE0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r0, [r0]
+ cmp r0, #1
+ ldr r0, [r4, #0x68]
+ bne _02254F06
+ mov r1, #0
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x6c]
+ mov r1, #3
+ bl MOD20_02253F28
+ b _02254F14
+_02254F06:
+ mov r1, #1
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x6c]
+ mov r1, #2
+ bl MOD20_02253F28
+_02254F14:
+ ldr r0, _02254F24 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD24_02254DC8
+ pop {r3, r4, r5, pc}
+ nop
+_02254F24: .word 0x00000663
+ thumb_func_end MOD24_02254EE0
+
+ thumb_func_start MOD24_02254F28
+MOD24_02254F28: ; 0x02254F28
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #0x70]
+ bl FUN_02019548
+ add r0, r4, #0
+ bl MOD24_02254DC8
+ pop {r4, pc}
+ thumb_func_end MOD24_02254F28
+
+ thumb_func_start MOD24_02254F40
+MOD24_02254F40: ; 0x02254F40
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r0, r1, #0
+ str r1, [sp, #8]
+ bl MOD20_022538A0
+ add r7, r0, #0
+ ldr r0, [r7]
+ ldr r1, [r0]
+ cmp r1, #0
+ bne _02254FF2
+ mov r1, #8
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x14]
+ ldr r1, [r0, #4]
+ ldr r0, [r0, #8]
+ lsl r1, r1, #1
+ lsl r0, r0, #1
+ sub r6, r1, #4
+ sub r5, r0, #4
+ cmp r6, #0
+ bge _02254F74
+ ldr r0, [sp, #0x10]
+ add r0, r0, r6
+ str r0, [sp, #0x14]
+ mov r6, #0
+_02254F74:
+ cmp r5, #0
+ bge _02254F80
+ ldr r0, [sp, #0x10]
+ add r0, r0, r5
+ str r0, [sp, #0x10]
+ mov r5, #0
+_02254F80:
+ ldr r0, [sp, #0x14]
+ lsl r2, r6, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [sp, #0x10]
+ lsl r3, r5, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, [r7, #0x70]
+ mov r1, #4
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ asr r1, r5, #3
+ mov r2, #0x14
+ asr r0, r6, #3
+ mul r2, r1
+ add r4, r0, r2
+ ldr r2, [sp, #0x14]
+ add r2, r6, r2
+ sub r2, r2, #1
+ asr r2, r2, #3
+ sub r0, r2, r0
+ ldr r2, [sp, #0x10]
+ add r0, r0, #1
+ add r2, r5, r2
+ sub r2, r2, #1
+ asr r2, r2, #3
+ sub r1, r2, r1
+ add r1, r1, #1
+ sub r6, r1, #1
+ cmp r1, #0
+ beq _0225502C
+ lsl r0, r0, #5
+ lsl r5, r4, #5
+ str r0, [sp, #0xc]
+_02254FCE:
+ ldr r0, [r7, #0x70]
+ add r1, r4, #0
+ ldr r0, [r0, #0xc]
+ add r1, #0xc
+ ldr r2, [sp, #0xc]
+ add r0, r0, r5
+ lsl r1, r1, #5
+ bl GXS_LoadBG3Char
+ mov r0, #0xa
+ lsl r0, r0, #6
+ add r5, r5, r0
+ add r0, r6, #0
+ add r4, #0x14
+ sub r6, r6, #1
+ cmp r0, #0
+ bne _02254FCE
+ b _0225502C
+_02254FF2:
+ ldr r1, [r0, #4]
+ ldr r0, [r0, #8]
+ lsl r2, r1, #1
+ lsl r3, r0, #1
+ asr r1, r3, #3
+ mov r0, #0x14
+ asr r4, r2, #3
+ mul r0, r1
+ add r4, r4, r0
+ mov r0, #2
+ str r0, [sp]
+ str r0, [sp, #4]
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ ldr r0, [r7, #0x70]
+ mov r1, #1
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ ldr r0, [r7, #0x70]
+ mov r2, #0x20
+ ldr r1, [r0, #0xc]
+ lsl r0, r4, #5
+ add r4, #0xc
+ add r0, r1, r0
+ lsl r1, r4, #5
+ bl GXS_LoadBG3Char
+_0225502C:
+ ldr r0, [sp, #8]
+ bl MOD24_02254DC8
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD24_02254F40
+
+ thumb_func_start MOD24_02255038
+MOD24_02255038: ; 0x02255038
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #0x70]
+ bl FUN_02019548
+ add r0, r4, #0
+ bl MOD24_02254DC8
+ pop {r4, pc}
+ thumb_func_end MOD24_02255038
+
+ thumb_func_start MOD24_02255050
+MOD24_02255050: ; 0x02255050
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ bl MOD24_022550D4
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #7
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD24_02254DC8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD24_02255050
+
+ thumb_func_start MOD24_02255078
+MOD24_02255078: ; 0x02255078
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r7, r0, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x20
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x54
+ mov r1, #0xc
+ mov r2, #0x21
+ mov r3, #0x22
+ bl MOD20_02253FBC
+ cmp r0, #0
+ beq _022550CC
+ add r0, r7, #0
+ str r0, [sp, #0xc]
+ add r0, #0x54
+ ldr r4, _022550D0 ; =0x0225514C
+ mov r6, #0
+ add r5, r7, #0
+ str r0, [sp, #0xc]
+_022550B6:
+ ldr r0, [r7, #0x50]
+ ldr r2, [sp, #0xc]
+ add r1, r4, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x68]
+ add r6, r6, #1
+ add r4, #0x10
+ add r5, r5, #4
+ cmp r6, #2
+ blt _022550B6
+_022550CC:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022550D0: .word 0x0225514C
+ thumb_func_end MOD24_02255078
+
+ thumb_func_start MOD24_022550D4
+MOD24_022550D4: ; 0x022550D4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_022550DC:
+ ldr r0, [r6, #0x50]
+ ldr r1, [r5, #0x68]
+ bl MOD20_02253F14
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blo _022550DC
+ add r6, #0x54
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD24_022550D4
+
+ .section .rodata
+ ; 0x022550F8
+ .incbin "baserom.nds", 0x288EB8, 0xC8
+
+ .section .sinit
+ .word MOD24_02254840
diff --git a/arm9/modules/25/asm/module_25.s b/arm9/modules/25/asm/module_25.s
new file mode 100644
index 00000000..e1d7b555
--- /dev/null
+++ b/arm9/modules/25/asm/module_25.s
@@ -0,0 +1,666 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD25_02254840
+MOD25_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD25_02254854
+ ldr r1, _02254850 ; =MOD25_0225496C
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD25_02254854
+_02254850: .word MOD25_0225496C
+ thumb_func_end MOD25_02254840
+
+ thumb_func_start MOD25_02254854
+MOD25_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x2c
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD25_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD25_02254930
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD25_02254930
+ thumb_func_end MOD25_02254854
+
+ thumb_func_start MOD25_0225489C
+MOD25_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r1, r5, #0
+ add r0, #0x24
+ add r1, #0x14
+ bl MOD25_02254A6C
+ cmp r0, #0
+ beq _0225490A
+ mov r1, #0
+ strb r1, [r5]
+ strb r1, [r5, #1]
+ strb r1, [r5, #2]
+ mov r0, #1
+ strb r0, [r5, #3]
+ strb r1, [r5, #6]
+ add r0, r5, #0
+ str r1, [r5, #0x20]
+ add r0, #0x14
+ bl FUN_02012690
+ ldr r0, [r5, #0x14]
+ cmp r0, #0x18
+ blo _022548D6
+ mov r1, #0x18
+ bl _u32_div_f
+ str r1, [r5, #0x14]
+_022548D6:
+ ldr r0, [r5, #0x18]
+ cmp r0, #0x3c
+ blo _022548E6
+ ldr r0, [r5, #0x14]
+ mov r1, #0x3c
+ bl _u32_div_f
+ str r1, [r5, #0x14]
+_022548E6:
+ ldr r0, [r5, #0x18]
+ ldr r2, _02254910 ; =MOD25_02254974
+ strb r0, [r5, #5]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254914 ; =0x02254CF8
+ mov r1, #1
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x10]
+ cmp r0, #0
+ bne _02254904
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02254904:
+ str r4, [r5, #0x28]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_0225490A:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02254910: .word MOD25_02254974
+_02254914: .word 0x02254CF8
+ thumb_func_end MOD25_0225489C
+
+ thumb_func_start MOD25_02254918
+MOD25_02254918: ; 0x02254918
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x24]
+ bl MOD25_02254AC4
+ ldr r0, [r4, #0x10]
+ bl MOD20_02254198
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD25_02254918
+
+ thumb_func_start MOD25_02254930
+MOD25_02254930: ; 0x02254930
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254966
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x10]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254968 ; =0x02254CFC
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254966
+ add r0, r4, #0
+ bl MOD25_02254918
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x28]
+ bl MOD20_022529A0
+_02254966:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254968: .word 0x02254CFC
+ thumb_func_end MOD25_02254930
+
+ thumb_func_start MOD25_0225496C
+MOD25_0225496C: ; 0x0225496C
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD25_0225496C
+
+ thumb_func_start MOD25_02254974
+MOD25_02254974: ; 0x02254974
+ cmp r2, #0
+ beq _02254984
+ cmp r2, #1
+ bne _0225498C
+ mov r0, #1
+ str r0, [r3, #0x20]
+ strb r0, [r3, #6]
+ bx lr
+_02254984:
+ mov r0, #0
+ str r0, [r3, #0x20]
+ mov r0, #1
+ strb r0, [r3, #6]
+_0225498C:
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD25_02254974
+
+ thumb_func_start MOD25_02254990
+MOD25_02254990: ; 0x02254990
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254998
+ b _0225499A
+_02254998:
+ mov r1, #2
+_0225499A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD25_02254990
+
+ thumb_func_start MOD25_022549A4
+MOD25_022549A4: ; 0x022549A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549B4
+ cmp r0, #1
+ beq _022549C4
+ b _022549DE
+_022549B4:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD25_02254AE4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549DE
+_022549C4:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD25_02254B08
+ cmp r0, #0
+ beq _022549DE
+ ldr r0, [r4, #0x28]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD25_02254990
+_022549DE:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD25_022549A4
+
+ thumb_func_start MOD25_022549E4
+MOD25_022549E4: ; 0x022549E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549F8
+ mov r1, #2
+ bl MOD25_02254990
+ mov r0, #0
+ pop {r4, pc}
+_022549F8:
+ ldrb r0, [r4, #6]
+ cmp r0, #0
+ beq _02254A0A
+ mov r0, #0
+ strb r0, [r4, #6]
+ ldr r0, [r4, #0x24]
+ mov r1, #2
+ bl MOD25_02254AE4
+_02254A0A:
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl MOD25_02254B08
+ cmp r0, #0
+ beq _02254A32
+ ldr r0, [r4, #0x18]
+ strb r0, [r4, #5]
+ add r0, r4, #0
+ add r0, #0x14
+ bl FUN_02012690
+ ldrb r1, [r4, #5]
+ ldr r0, [r4, #0x18]
+ cmp r1, r0
+ beq _02254A32
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl MOD25_02254AE4
+_02254A32:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD25_022549E4
+
+ thumb_func_start MOD25_02254A38
+MOD25_02254A38: ; 0x02254A38
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A48
+ cmp r0, #1
+ beq _02254A58
+ b _02254A66
+_02254A48:
+ ldr r0, [r4, #0x24]
+ mov r1, #3
+ bl MOD25_02254AE4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A66
+_02254A58:
+ ldr r0, [r4, #0x24]
+ bl MOD25_02254B14
+ cmp r0, #0
+ beq _02254A66
+ mov r0, #1
+ pop {r4, pc}
+_02254A66:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD25_02254A38
+
+ thumb_func_start MOD25_02254A6C
+MOD25_02254A6C: ; 0x02254A6C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x54
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254ABA
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x48]
+ add r0, r4, #0
+ bl MOD25_02254C74
+ cmp r0, #0
+ bne _02254AA8
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_02254AA8:
+ ldr r0, _02254AC0 ; =MOD25_02254AE0
+ add r1, r4, #0
+ mov r2, #3
+ bl FUN_0200CA44
+ str r0, [r4, #0x30]
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254ABA:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02254AC0: .word MOD25_02254AE0
+ thumb_func_end MOD25_02254A6C
+
+ thumb_func_start MOD25_02254AC4
+MOD25_02254AC4: ; 0x02254AC4
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254ADE
+ bl MOD25_02254CD8
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _02254AD8
+ bl FUN_0200CAB4
+_02254AD8:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254ADE:
+ pop {r4, pc}
+ thumb_func_end MOD25_02254AC4
+
+ thumb_func_start MOD25_02254AE0
+MOD25_02254AE0: ; 0x02254AE0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD25_02254AE0
+
+ thumb_func_start MOD25_02254AE4
+MOD25_02254AE4: ; 0x02254AE4
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254B04 ; =0x02254D44
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254B04: .word 0x02254D44
+ thumb_func_end MOD25_02254AE4
+
+ thumb_func_start MOD25_02254B08
+MOD25_02254B08: ; 0x02254B08
+ ldr r3, _02254B10 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254B10: .word MOD20_02253794
+ thumb_func_end MOD25_02254B08
+
+ thumb_func_start MOD25_02254B14
+MOD25_02254B14: ; 0x02254B14
+ ldr r3, _02254B1C ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254B1C: .word MOD20_022537B8
+ thumb_func_end MOD25_02254B14
+
+ thumb_func_start MOD25_02254B20
+MOD25_02254B20: ; 0x02254B20
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD25_02254B20
+
+ thumb_func_start MOD25_02254B34
+MOD25_02254B34: ; 0x02254B34
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254BBC ; =0x02254D08
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x17
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x1a
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ add r0, r5, #0
+ bl MOD25_02254C30
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254BC0 ; =0x04001000
+ ldr r0, _02254BC4 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #0x14
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD25_02254B20
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254BBC: .word 0x02254D08
+_02254BC0: .word 0x04001000
+_02254BC4: .word 0xFFFFE0FF
+ thumb_func_end MOD25_02254B34
+
+ thumb_func_start MOD25_02254BC8
+MOD25_02254BC8: ; 0x02254BC8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ bl MOD25_02254C30
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD25_02254B20
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD25_02254BC8
+
+ thumb_func_start MOD25_02254BE8
+MOD25_02254BE8: ; 0x02254BE8
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ cmp r0, #0
+ beq _02254C04
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252DB4
+ b _02254C0C
+_02254C04:
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+_02254C0C:
+ add r0, r4, #0
+ bl MOD25_02254B20
+ pop {r4, pc}
+ thumb_func_end MOD25_02254BE8
+
+ thumb_func_start MOD25_02254C14
+MOD25_02254C14: ; 0x02254C14
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD25_02254B20
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD25_02254C14
+
+ thumb_func_start MOD25_02254C30
+MOD25_02254C30: ; 0x02254C30
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r1, _02254C70 ; =0x04000280
+ ldr r0, [r0]
+ mov r2, #0
+ strh r2, [r1]
+ str r0, [r1, #0x10]
+ mov r0, #0xa
+ add r1, #0x18
+ str r0, [r1]
+ str r2, [r1, #4]
+ ldr r5, [r4]
+ mov r1, #0xc
+ ldr r0, [r5]
+ bl _u32_div_f
+ ldr r2, [r5, #4]
+ ldr r0, [r4, #0x4c]
+ lsr r3, r2, #1
+ mov r2, #0x1e
+ mul r2, r1
+ add r2, #0x3c
+ add r1, r3, r2
+ bl MOD20_02253F28
+ ldr r1, [r4]
+ ldr r0, [r4, #0x50]
+ ldr r1, [r1, #4]
+ bl MOD20_02253F28
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254C70: .word 0x04000280
+ thumb_func_end MOD25_02254C30
+
+ thumb_func_start MOD25_02254C74
+MOD25_02254C74: ; 0x02254C74
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r7, r0, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x1d
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x34
+ mov r1, #0xc
+ mov r2, #0x1b
+ mov r3, #0x1c
+ bl MOD20_02253FBC
+ cmp r0, #0
+ beq _02254CCE
+ add r0, r7, #0
+ str r0, [sp, #0xc]
+ add r0, #0x34
+ ldr r4, _02254CD4 ; =0x02254D24
+ mov r6, #0
+ add r5, r7, #0
+ str r0, [sp, #0xc]
+_02254CB2:
+ ldr r0, [r7, #0x48]
+ ldr r2, [sp, #0xc]
+ add r1, r4, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x4c]
+ add r6, r6, #1
+ add r4, #0x10
+ add r5, r5, #4
+ cmp r6, #2
+ blt _02254CB2
+ add sp, #0x10
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02254CCE:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254CD4: .word 0x02254D24
+ thumb_func_end MOD25_02254C74
+
+ thumb_func_start MOD25_02254CD8
+MOD25_02254CD8: ; 0x02254CD8
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r0, #0x34
+ bl MOD20_02254014
+ mov r4, #0
+ add r5, r6, #0
+_02254CE6:
+ ldr r0, [r6, #0x48]
+ ldr r1, [r5, #0x4c]
+ bl MOD20_02253F14
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _02254CE6
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD25_02254CD8
+
+ .section .rodata
+ ; 0x02254CF8
+ .incbin "baserom.nds", 0x2894B8, 0x88
+
+ .section .sinit
+ .word MOD25_02254840
diff --git a/arm9/modules/26/asm/module_26.s b/arm9/modules/26/asm/module_26.s
new file mode 100644
index 00000000..0b8d99df
--- /dev/null
+++ b/arm9/modules/26/asm/module_26.s
@@ -0,0 +1,796 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD26_02254840
+MOD26_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD26_02254854
+ ldr r1, _02254850 ; =MOD26_02254A84
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD26_02254854
+_02254850: .word MOD26_02254A84
+ thumb_func_end MOD26_02254840
+
+ thumb_func_start MOD26_02254854
+MOD26_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ mov r1, #0x9b
+ add r5, r0, #0
+ mov r0, #8
+ lsl r1, r1, #2
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _0225489C
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD26_022548A8
+ cmp r0, #0
+ beq _02254896
+ ldr r0, _022548A0 ; =MOD26_02254A4C
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _02254896
+ ldr r0, _022548A4 ; =MOD26_02254A30
+ add r1, r4, #0
+ str r4, [r5]
+ bl MOD20_022529B4
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02254896:
+ add r0, r4, #0
+ bl FUN_02016A18
+_0225489C:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022548A0: .word MOD26_02254A4C
+_022548A4: .word MOD26_02254A30
+ thumb_func_end MOD26_02254854
+
+ thumb_func_start MOD26_022548A8
+MOD26_022548A8: ; 0x022548A8
+ push {r3, r4, r5, lr}
+ add r4, r2, #0
+ mov r2, #0x1f
+ add r5, r0, #0
+ lsl r2, r2, #4
+ str r1, [r5, r2]
+ add r1, r5, #0
+ add r1, #0xc
+ bl MOD26_022548E8
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ add r1, r5, #0
+ add r0, r5, r0
+ add r1, #0xc
+ add r2, r4, #0
+ bl MOD26_02254BD4
+ cmp r0, #0
+ beq _022548E4
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #0x19
+ str r0, [r5, #4]
+ mov r0, #0x15
+ str r0, [r5, #8]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548E4:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD26_022548A8
+
+ thumb_func_start MOD26_022548E8
+MOD26_022548E8: ; 0x022548E8
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl MOD20_02252C3C
+ add r6, r0, #0
+ bl FUN_0204C0CC
+ cmp r0, #0
+ beq _0225490E
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD26_02254918
+ pop {r4, r5, r6, pc}
+_0225490E:
+ add r0, r4, #0
+ bl MOD26_022549DC
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD26_022548E8
+
+ thumb_func_start MOD26_02254918
+MOD26_02254918: ; 0x02254918
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ mov r1, #0x7d
+ add r5, r0, #0
+ lsl r1, r1, #2
+ add r0, r2, #0
+ add r1, r5, r1
+ bl FUN_0204C0D4
+ mov r3, #0
+ mov r7, #0x7d
+ mov ip, r3
+ lsl r7, r7, #2
+ mov r0, #3
+_02254934:
+ mov r2, #0
+_02254936:
+ asr r1, r3, #1
+ lsr r1, r1, #0x1e
+ add r1, r3, r1
+ asr r1, r1, #2
+ add r1, r5, r1
+ add r6, r3, #0
+ lsl r6, r6, #0x1e
+ ldrb r1, [r1, r7]
+ lsr r6, r6, #0x1d
+ add r3, r3, #1
+ asr r1, r6
+ and r1, r0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r1, r1, #1
+ strb r1, [r4, r2]
+ add r2, r2, #1
+ cmp r2, #0x18
+ blt _02254936
+ mov r1, ip
+ add r1, r1, #1
+ add r4, #0x18
+ mov ip, r1
+ cmp r1, #0x14
+ blt _02254934
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD26_02254918
+
+ thumb_func_start MOD26_0225496C
+MOD26_0225496C: ; 0x0225496C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r1, #0
+ mov r1, #0x7d
+ str r2, [sp]
+ lsl r1, r1, #2
+ str r0, [sp, #4]
+ add r0, r0, r1
+ mov r1, #0
+ mov r2, #0x78
+ bl MI_CpuFill8
+ mov r5, #0
+ mov ip, r5
+_02254988:
+ mov r4, #0
+_0225498A:
+ asr r0, r5, #1
+ lsr r0, r0, #0x1e
+ add r0, r5, r0
+ asr r1, r0, #2
+ ldr r0, [sp, #4]
+ add r6, r5, #0
+ add r3, r0, r1
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ ldrb r2, [r3, r0]
+ ldrb r0, [r7, r4]
+ add r4, r4, #1
+ add r5, r5, #1
+ sub r1, r0, #1
+ mov r0, #3
+ and r0, r1
+ lsl r1, r6, #0x1e
+ lsr r1, r1, #0x1d
+ lsl r0, r1
+ add r1, r2, #0
+ orr r1, r0
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ strb r1, [r3, r0]
+ cmp r4, #0x18
+ blt _0225498A
+ mov r0, ip
+ add r0, r0, #1
+ add r7, #0x18
+ mov ip, r0
+ cmp r0, #0x14
+ blt _02254988
+ mov r2, #0x7d
+ ldr r1, [sp, #4]
+ lsl r2, r2, #2
+ ldr r0, [sp]
+ add r1, r1, r2
+ bl FUN_0204C0E8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD26_0225496C
+
+ thumb_func_start MOD26_022549DC
+MOD26_022549DC: ; 0x022549DC
+ push {r4, r5}
+ mov r4, #0
+ ldr r5, _02254A00 ; =0x02254DF0
+ add r2, r4, #0
+_022549E4:
+ add r3, r2, #0
+_022549E6:
+ ldrb r1, [r5, r3]
+ strb r1, [r0, r3]
+ add r3, r3, #1
+ cmp r3, #0x18
+ blt _022549E6
+ add r4, r4, #1
+ add r5, #0x18
+ add r0, #0x18
+ cmp r4, #0x14
+ blt _022549E4
+ pop {r4, r5}
+ bx lr
+ nop
+_02254A00: .word 0x02254DF0
+ thumb_func_end MOD26_022549DC
+
+ thumb_func_start MOD26_02254A04
+MOD26_02254A04: ; 0x02254A04
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD20_02252C3C
+ add r1, r4, #0
+ add r2, r0, #0
+ add r0, r4, #0
+ add r1, #0xc
+ bl MOD26_0225496C
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD26_02254C04
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD26_02254A04
+
+ thumb_func_start MOD26_02254A30
+MOD26_02254A30: ; 0x02254A30
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD20_02252C3C
+ add r2, r0, #0
+ add r0, r4, #0
+ add r4, #0xc
+ add r1, r4, #0
+ bl MOD26_0225496C
+ pop {r4, pc}
+ thumb_func_end MOD26_02254A30
+
+ thumb_func_start MOD26_02254A4C
+MOD26_02254A4C: ; 0x02254A4C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254A7C
+ lsl r2, r1, #2
+ ldr r1, _02254A80 ; =0x02254DE4
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254A7C
+ add r0, r4, #0
+ bl MOD26_02254A04
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD20_022529A0
+_02254A7C:
+ pop {r3, r4, r5, pc}
+ nop
+_02254A80: .word 0x02254DE4
+ thumb_func_end MOD26_02254A4C
+
+ thumb_func_start MOD26_02254A84
+MOD26_02254A84: ; 0x02254A84
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD26_02254A84
+
+ thumb_func_start MOD26_02254A8C
+MOD26_02254A8C: ; 0x02254A8C
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254A94
+ b _02254A96
+_02254A94:
+ mov r1, #2
+_02254A96:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD26_02254A8C
+
+ thumb_func_start MOD26_02254AA0
+MOD26_02254AA0: ; 0x02254AA0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254AB0
+ cmp r0, #1
+ beq _02254AC4
+ b _02254AE6
+_02254AB0:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD26_02254C10
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AE6
+_02254AC4:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl MOD26_02254C34
+ cmp r0, #0
+ beq _02254AE6
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD26_02254A8C
+_02254AE6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD26_02254AA0
+
+ thumb_func_start MOD26_02254AEC
+MOD26_02254AEC: ; 0x02254AEC
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254B04
+ mov r1, #2
+ bl MOD26_02254A8C
+ add sp, #8
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02254B04:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD26_02254C34
+ cmp r0, #0
+ beq _02254B90
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252B68
+ cmp r0, #0
+ beq _02254B90
+ ldr r1, [sp, #4]
+ cmp r1, #0x10
+ blo _02254B90
+ ldr r0, [sp]
+ cmp r0, #0x10
+ blo _02254B90
+ sub r1, #0x10
+ lsr r2, r1, #3
+ sub r0, #0x10
+ lsr r1, r0, #3
+ str r2, [sp, #4]
+ str r1, [sp]
+ cmp r2, #0x18
+ bhs _02254B90
+ cmp r1, #0x14
+ bhs _02254B90
+ ldr r0, [r4, #4]
+ cmp r0, r2
+ bne _02254B54
+ ldr r0, [r4, #8]
+ cmp r0, r1
+ bne _02254B54
+ bl FUN_02020AA4
+ cmp r0, #1
+ bne _02254B90
+_02254B54:
+ ldr r2, [sp]
+ add r0, r4, #0
+ mov r1, #0x18
+ add r3, r2, #0
+ add r0, #0xc
+ mul r3, r1
+ add r5, r0, r3
+ ldr r3, [sp, #4]
+ ldrb r2, [r5, r3]
+ add r2, r2, #1
+ strb r2, [r5, r3]
+ ldr r2, [sp]
+ mul r1, r2
+ add r2, r0, r1
+ ldr r1, [sp, #4]
+ ldrb r0, [r2, r1]
+ cmp r0, #4
+ bls _02254B7C
+ mov r0, #1
+ strb r0, [r2, r1]
+_02254B7C:
+ ldr r0, [sp, #4]
+ mov r1, #1
+ str r0, [r4, #4]
+ ldr r0, [sp]
+ str r0, [r4, #8]
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD26_02254C10
+_02254B90:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD26_02254AEC
+
+ thumb_func_start MOD26_02254B98
+MOD26_02254B98: ; 0x02254B98
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254BA8
+ cmp r0, #1
+ beq _02254BBC
+ b _02254BCE
+_02254BA8:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl MOD26_02254C10
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254BCE
+_02254BBC:
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD26_02254C40
+ cmp r0, #0
+ beq _02254BCE
+ mov r0, #1
+ pop {r4, pc}
+_02254BCE:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD26_02254B98
+
+ thumb_func_start MOD26_02254BD4
+MOD26_02254BD4: ; 0x02254BD4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x30
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254C00
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _02254C00
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254C00:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD26_02254BD4
+
+ thumb_func_start MOD26_02254C04
+MOD26_02254C04: ; 0x02254C04
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254C0E
+ bl FUN_02016A18
+_02254C0E:
+ pop {r3, pc}
+ thumb_func_end MOD26_02254C04
+
+ thumb_func_start MOD26_02254C10
+MOD26_02254C10: ; 0x02254C10
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254C30 ; =0x02254FF0
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254C30: .word 0x02254FF0
+ thumb_func_end MOD26_02254C10
+
+ thumb_func_start MOD26_02254C34
+MOD26_02254C34: ; 0x02254C34
+ ldr r3, _02254C3C ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254C3C: .word MOD20_02253794
+ thumb_func_end MOD26_02254C34
+
+ thumb_func_start MOD26_02254C40
+MOD26_02254C40: ; 0x02254C40
+ ldr r3, _02254C48 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254C48: .word MOD20_022537B8
+ thumb_func_end MOD26_02254C40
+
+ thumb_func_start MOD26_02254C4C
+MOD26_02254C4C: ; 0x02254C4C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD26_02254C4C
+
+ thumb_func_start MOD26_02254C60
+MOD26_02254C60: ; 0x02254C60
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254CB8 ; =0x02254FD4
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r5, #4]
+ bl MOD26_02254CC4
+ ldr r0, [r5, #4]
+ ldr r1, [r5]
+ bl MOD26_02254DAC
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254CBC ; =0x04001000
+ ldr r0, _02254CC0 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD26_02254C4C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254CB8: .word 0x02254FD4
+_02254CBC: .word 0x04001000
+_02254CC0: .word 0xFFFFE0FF
+ thumb_func_end MOD26_02254C60
+
+ thumb_func_start MOD26_02254CC4
+MOD26_02254CC4: ; 0x02254CC4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #4]
+ mov r0, #8
+ lsl r1, r0, #6
+ bl FUN_02016998
+ str r0, [sp, #0x1c]
+ cmp r0, #0
+ beq _02254D68
+ mov r0, #0
+ str r0, [sp, #0x18]
+ str r0, [sp, #0x14]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0xc]
+ str r0, [sp, #8]
+ add r7, r0, #0
+ add r6, r0, #0
+ add r4, r0, #0
+ add r5, r0, #0
+_02254CEC:
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x1c]
+ orr r1, r0
+ ldr r0, [sp, #8]
+ orr r0, r1
+ orr r0, r7
+ orr r0, r6
+ orr r0, r4
+ add r1, r5, #0
+ orr r1, r0
+ ldr r0, [sp, #0x18]
+ orr r0, r1
+ ldr r1, [sp, #0x14]
+ add r1, r2, r1
+ mov r2, #0x20
+ bl MIi_CpuClearFast
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x10]
+ add r0, #0x20
+ str r0, [sp, #0x14]
+ mov r0, #1
+ lsl r0, r0, #0x18
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ mov r0, #1
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #0x1c
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ mov r0, #1
+ ldr r1, [sp, #8]
+ lsl r0, r0, #0x14
+ add r0, r1, r0
+ str r0, [sp, #8]
+ mov r0, #1
+ lsl r0, r0, #0x10
+ add r7, r7, r0
+ lsr r0, r0, #4
+ add r6, r6, r0
+ mov r0, #1
+ lsl r0, r0, #8
+ add r4, r4, r0
+ ldr r0, [sp, #0x18]
+ add r5, #0x10
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ cmp r0, #0x10
+ blt _02254CEC
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #2
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #0x1c]
+ mov r1, #6
+ lsl r3, r3, #8
+ bl FUN_02017E14
+ ldr r0, [sp, #0x1c]
+ bl FUN_02016A18
+_02254D68:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD26_02254CC4
+
+ thumb_func_start MOD26_02254D6C
+MOD26_02254D6C: ; 0x02254D6C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r1, [r4]
+ bl MOD26_02254DAC
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD26_02254C4C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD26_02254D6C
+
+ thumb_func_start MOD26_02254D90
+MOD26_02254D90: ; 0x02254D90
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD26_02254C4C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD26_02254D90
+
+ thumb_func_start MOD26_02254DAC
+MOD26_02254DAC: ; 0x02254DAC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ mov r1, #6
+ bl FUN_0201886C
+ mov r5, #0
+ ldr r1, _02254DE0 ; =0x02254FD0
+ add r0, #0x84
+ add r2, r5, #0
+_02254DBE:
+ add r3, r2, #0
+ add r6, r0, #0
+_02254DC2:
+ ldrb r7, [r4, r3]
+ add r3, r3, #1
+ add r7, r1, r7
+ sub r7, r7, #1
+ ldrb r7, [r7]
+ strh r7, [r6]
+ add r6, r6, #2
+ cmp r3, #0x18
+ blt _02254DC2
+ add r5, r5, #1
+ add r0, #0x40
+ add r4, #0x18
+ cmp r5, #0x14
+ blt _02254DBE
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254DE0: .word 0x02254FD0
+ thumb_func_end MOD26_02254DAC
+
+ .section .rodata
+ ; 0x02254DE4
+ .incbin "baserom.nds", 0x289BA4, 0x23C
+
+ .section .sinit
+ .word MOD26_02254840
diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s
new file mode 100644
index 00000000..13a97851
--- /dev/null
+++ b/arm9/modules/27/asm/module_27.s
@@ -0,0 +1,1461 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD27_02254840
+MOD27_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD27_02254854
+ ldr r1, _02254850 ; =MOD27_0225492C
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD27_02254854
+_02254850: .word MOD27_0225492C
+ thumb_func_end MOD27_02254840
+
+ thumb_func_start MOD27_02254854
+MOD27_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x7c
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD27_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD27_022548F8
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD27_022548F8
+ thumb_func_end MOD27_02254854
+
+ thumb_func_start MOD27_0225489C
+MOD27_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x74
+ add r1, r5, #4
+ bl MOD27_02254AF0
+ cmp r0, #0
+ beq _022548E0
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ add r0, r4, #0
+ bl MOD20_02252C40
+ bl FUN_0206BB1C
+ add r1, r0, #0
+ add r0, r5, #4
+ bl MOD27_02254A48
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r0, r5, #0
+ add r0, #0x6a
+ strh r1, [r0]
+ str r1, [r5, #0x6c]
+ str r1, [r5, #0x70]
+ str r4, [r5, #0x78]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548E0:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD27_0225489C
+
+ thumb_func_start MOD27_022548E4
+MOD27_022548E4: ; 0x022548E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x74]
+ bl MOD27_02254B88
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD27_022548E4
+
+ thumb_func_start MOD27_022548F8
+MOD27_022548F8: ; 0x022548F8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254924
+ lsl r2, r1, #2
+ ldr r1, _02254928 ; =0x0225533C
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254924
+ add r0, r4, #0
+ bl MOD27_022548E4
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x78]
+ bl MOD20_022529A0
+_02254924:
+ pop {r3, r4, r5, pc}
+ nop
+_02254928: .word 0x0225533C
+ thumb_func_end MOD27_022548F8
+
+ thumb_func_start MOD27_0225492C
+MOD27_0225492C: ; 0x0225492C
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD27_0225492C
+
+ thumb_func_start MOD27_02254934
+MOD27_02254934: ; 0x02254934
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _0225493C
+ b _0225493E
+_0225493C:
+ mov r1, #2
+_0225493E:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD27_02254934
+
+ thumb_func_start MOD27_02254948
+MOD27_02254948: ; 0x02254948
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254958
+ cmp r0, #1
+ beq _02254968
+ b _02254982
+_02254958:
+ ldr r0, [r4, #0x74]
+ mov r1, #0
+ bl MOD27_02254BB8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254982
+_02254968:
+ ldr r0, [r4, #0x74]
+ mov r1, #0
+ bl MOD27_02254BDC
+ cmp r0, #0
+ beq _02254982
+ ldr r0, [r4, #0x78]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD27_02254934
+_02254982:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD27_02254948
+
+ thumb_func_start MOD27_02254988
+MOD27_02254988: ; 0x02254988
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _0225499C
+ mov r1, #2
+ bl MOD27_02254934
+ mov r0, #0
+ pop {r4, pc}
+_0225499C:
+ ldr r0, [r4, #0x74]
+ mov r1, #2
+ bl MOD27_02254BDC
+ cmp r0, #0
+ beq _02254A06
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0x6c
+ add r1, #0x70
+ bl MOD20_02252B68
+ add r1, r4, #0
+ add r1, #0x68
+ strh r0, [r1]
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _02254A06
+ bl FUN_02020AA4
+ add r1, r4, #0
+ add r1, #0x6a
+ strh r0, [r1]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _02254A02
+ ldr r0, [r4, #0x6c]
+ ldr r1, [r4, #0x70]
+ ldr r2, [r4, #4]
+ bl MOD27_022551F4
+ ldr r1, [r4, #4]
+ cmp r0, r1
+ blo _02254A02
+ ldr r0, [r4, #0x78]
+ bl MOD20_02252C40
+ bl FUN_0206BB1C
+ add r1, r0, #0
+ add r0, r4, #4
+ bl MOD27_02254A48
+ ldr r0, [r4, #0x74]
+ mov r1, #2
+ bl MOD27_02254BB8
+_02254A02:
+ mov r0, #0
+ pop {r4, pc}
+_02254A06:
+ mov r0, #0
+ str r0, [r4, #0x6c]
+ str r0, [r4, #0x70]
+ add r4, #0x6a
+ strh r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD27_02254988
+
+ thumb_func_start MOD27_02254A14
+MOD27_02254A14: ; 0x02254A14
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A24
+ cmp r0, #1
+ beq _02254A34
+ b _02254A42
+_02254A24:
+ ldr r0, [r4, #0x74]
+ mov r1, #1
+ bl MOD27_02254BB8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A42
+_02254A34:
+ ldr r0, [r4, #0x74]
+ bl MOD27_02254BE8
+ cmp r0, #0
+ beq _02254A42
+ mov r0, #1
+ pop {r4, pc}
+_02254A42:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD27_02254A14
+
+ thumb_func_start MOD27_02254A48
+MOD27_02254A48: ; 0x02254A48
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp]
+ add r0, r1, #0
+ str r1, [sp, #4]
+ bl FUN_0206B9AC
+ ldr r1, [sp]
+ mov r6, #0
+ str r0, [r1]
+ cmp r0, #0
+ ble _02254AEC
+ add r5, r1, #0
+_02254A62:
+ ldr r0, [sp, #4]
+ add r1, r6, #0
+ bl FUN_0206B9B0
+ add r4, r0, #0
+ bl FUN_020669D4
+ add r7, r0, #0
+ add r0, r4, #0
+ bl FUN_0206B688
+ str r0, [r5, #4]
+ add r0, r4, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r5, #8]
+ add r0, r4, #0
+ mov r1, #0xa2
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r5, #0xa]
+ add r0, r4, #0
+ mov r1, #0xa3
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r5, #0xc]
+ add r0, r4, #0
+ mov r1, #6
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r5, #0xe]
+ add r0, r4, #0
+ mov r1, #0x9f
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _02254ABC
+ mov r0, #1
+ b _02254ABE
+_02254ABC:
+ mov r0, #0
+_02254ABE:
+ strh r0, [r5, #0x10]
+ add r0, r4, #0
+ mov r1, #0x4c
+ mov r2, #0
+ bl FUN_020671BC
+ strb r0, [r5, #0x12]
+ add r0, r4, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020671BC
+ strb r0, [r5, #0x13]
+ add r0, r4, #0
+ add r1, r7, #0
+ bl FUN_02066A20
+ ldr r0, [sp]
+ add r6, r6, #1
+ ldr r0, [r0]
+ add r5, #0x10
+ cmp r6, r0
+ blt _02254A62
+_02254AEC:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD27_02254A48
+
+ thumb_func_start MOD27_02254AF0
+MOD27_02254AF0: ; 0x02254AF0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ mov r1, #0xe3
+ str r0, [sp, #4]
+ mov r0, #8
+ lsl r1, r1, #2
+ bl FUN_02016998
+ str r0, [sp, #8]
+ cmp r0, #0
+ beq _02254B82
+ add r0, #0xc
+ mov r1, #8
+ bl MOD20_022536F4
+ ldr r0, [sp, #8]
+ str r4, [r0]
+ bl MOD20_02252D34
+ ldr r1, [sp, #8]
+ str r0, [r1, #4]
+ bl MOD20_02252D24
+ ldr r1, [sp, #8]
+ mov r6, #0
+ str r0, [r1, #8]
+ add r0, r1, #0
+ str r6, [r0, #0x38]
+ add r0, #0xf4
+ add r4, r1, #0
+ str r6, [r0]
+ add r4, #0x3c
+ add r5, r1, #0
+ add r7, r6, #0
+_02254B36:
+ add r0, r4, #0
+ bl FUN_0201901C
+ add r0, r5, #0
+ add r0, #0x9c
+ str r7, [r0]
+ add r0, r5, #0
+ add r0, #0xb4
+ add r6, r6, #1
+ str r7, [r0]
+ add r4, #0x10
+ add r5, r5, #4
+ cmp r6, #6
+ blt _02254B36
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ mov r1, #0xc
+ add r0, #0xcc
+ mov r2, #5
+ mov r3, #6
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ mov r1, #0xc
+ add r0, #0xe0
+ mov r2, #0x6b
+ mov r3, #0x6c
+ bl MOD20_02253FBC
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ add sp, #0xc
+ str r1, [r0]
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_02254B82:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD27_02254AF0
+
+ thumb_func_start MOD27_02254B88
+MOD27_02254B88: ; 0x02254B88
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254BB6
+ bl MOD27_02255250
+ add r0, r4, #0
+ add r0, #0xcc
+ bl MOD20_02254014
+ add r0, r4, #0
+ add r0, #0xe0
+ bl MOD20_02254014
+ add r0, r4, #0
+ add r0, #0xf4
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02254BB0
+ bl FUN_0200CAB4
+_02254BB0:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254BB6:
+ pop {r4, pc}
+ thumb_func_end MOD27_02254B88
+
+ thumb_func_start MOD27_02254BB8
+MOD27_02254BB8: ; 0x02254BB8
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #0xc
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254BD8 ; =0x02255394
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254BD8: .word 0x02255394
+ thumb_func_end MOD27_02254BB8
+
+ thumb_func_start MOD27_02254BDC
+MOD27_02254BDC: ; 0x02254BDC
+ ldr r3, _02254BE4 ; =MOD20_02253794
+ add r0, #0xc
+ bx r3
+ nop
+_02254BE4: .word MOD20_02253794
+ thumb_func_end MOD27_02254BDC
+
+ thumb_func_start MOD27_02254BE8
+MOD27_02254BE8: ; 0x02254BE8
+ ldr r3, _02254BF0 ; =MOD20_022537B8
+ add r0, #0xc
+ bx r3
+ nop
+_02254BF0: .word MOD20_022537B8
+ thumb_func_end MOD27_02254BE8
+
+ thumb_func_start MOD27_02254BF4
+MOD27_02254BF4: ; 0x02254BF4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #0xc
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD27_02254BF4
+
+ thumb_func_start MOD27_02254C08
+MOD27_02254C08: ; 0x02254C08
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _02254CBC ; =0x02255378
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x6a
+ mov r3, #6
+ bl FUN_0200687C
+ mov r3, #0
+ lsr r5, r0, #5
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ mov r2, #5
+ bl FUN_02018540
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ str r5, [r4, #0x34]
+ ldr r1, [r4]
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD27_02254CC8
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ mov r0, #0xf
+ mov r1, #1
+ bl MOD20_0225396C
+ mov r0, #2
+ bl MOD20_022539C4
+ ldr r1, [r4]
+ add r0, r4, #0
+ bl MOD27_02254F18
+ ldr r1, [r4]
+ add r0, r4, #0
+ bl MOD27_02254FAC
+ add r0, r4, #0
+ bl MOD27_022550C8
+ ldr r1, _02254CC0 ; =0x04001000
+ ldr r0, _02254CC4 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #0x14
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r6, #0
+ bl MOD27_02254BF4
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254CBC: .word 0x02255378
+_02254CC0: .word 0x04001000
+_02254CC4: .word 0xFFFFE0FF
+ thumb_func_end MOD27_02254C08
+
+ thumb_func_start MOD27_02254CC8
+MOD27_02254CC8: ; 0x02254CC8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r0, [sp, #0x14]
+ mov r0, #0
+ str r0, [sp, #0x20]
+ add r0, r1, #0
+ str r1, [sp, #0x18]
+ ldr r1, [r0]
+ str r2, [sp, #0x1c]
+ cmp r1, #0
+ ble _02254D54
+ ldr r4, [sp, #0x14]
+ ldr r7, [sp, #0x20]
+ ldr r5, _02254D5C ; =0x02255360
+ ldr r6, [sp, #0x18]
+ add r4, #0x3c
+_02254CE8:
+ add r0, r4, #0
+ bl FUN_0201901C
+ ldrh r0, [r5, #2]
+ add r1, r4, #0
+ mov r2, #6
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x1c]
+ add r0, r0, r7
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldrh r3, [r5]
+ ldr r0, [sp, #0x14]
+ lsl r3, r3, #0x18
+ ldr r0, [r0, #4]
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ add r0, r4, #0
+ bl FUN_02019270
+ ldr r1, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD27_02254D60
+ ldrh r0, [r6, #0xa]
+ ldrh r1, [r6, #0xc]
+ bl MOD27_02254EEC
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD27_02254EAC
+ ldr r0, [sp, #0x20]
+ add r4, #0x10
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x18]
+ add r7, #8
+ ldr r1, [r0]
+ ldr r0, [sp, #0x20]
+ add r5, r5, #4
+ add r6, #0x10
+ cmp r0, r1
+ blt _02254CE8
+_02254D54:
+ ldr r0, [sp, #0x14]
+ str r1, [r0, #0x38]
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254D5C: .word 0x02255360
+ thumb_func_end MOD27_02254CC8
+
+ thumb_func_start MOD27_02254D60
+MOD27_02254D60: ; 0x02254D60
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldrb r0, [r5, #6]
+ add r4, r1, #0
+ mov r2, #1
+ sub r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ str r2, [sp, #4]
+ str r2, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrb r3, [r5, #5]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ sub r3, r3, #1
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldrb r0, [r5, #6]
+ mov r1, #6
+ mov r2, #2
+ sub r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldrb r0, [r5, #7]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrb r3, [r5, #5]
+ ldr r0, [r4, #4]
+ bl FUN_02018540
+ ldrb r0, [r5, #6]
+ ldr r2, _02254E98 ; =0x00000401
+ mov r1, #6
+ sub r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrb r6, [r5, #5]
+ ldrb r3, [r5, #7]
+ ldr r0, [r4, #4]
+ add r3, r6, r3
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldrb r0, [r5, #6]
+ mov r1, #6
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldrb r0, [r5, #8]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrb r3, [r5, #5]
+ ldr r0, [r4, #4]
+ sub r3, r3, #1
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldrb r0, [r5, #6]
+ ldr r2, _02254E9C ; =0x00000406
+ mov r1, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldrb r0, [r5, #8]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrb r6, [r5, #5]
+ ldrb r3, [r5, #7]
+ ldr r0, [r4, #4]
+ add r3, r6, r3
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldrb r1, [r5, #6]
+ ldrb r0, [r5, #8]
+ ldr r2, _02254EA0 ; =0x00000801
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrb r3, [r5, #5]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ sub r3, r3, #1
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ ldrb r1, [r5, #6]
+ ldrb r0, [r5, #8]
+ ldr r2, _02254EA4 ; =0x00000802
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldrb r0, [r5, #7]
+ mov r1, #6
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrb r3, [r5, #5]
+ ldr r0, [r4, #4]
+ bl FUN_02018540
+ ldrb r1, [r5, #6]
+ ldrb r0, [r5, #8]
+ ldr r2, _02254EA8 ; =0x00000C01
+ add r0, r1, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #4]
+ ldrb r4, [r5, #5]
+ ldrb r3, [r5, #7]
+ mov r1, #6
+ add r3, r4, r3
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_02254E98: .word 0x00000401
+_02254E9C: .word 0x00000406
+_02254EA0: .word 0x00000801
+_02254EA4: .word 0x00000802
+_02254EA8: .word 0x00000C01
+ thumb_func_end MOD27_02254D60
+
+ thumb_func_start MOD27_02254EAC
+MOD27_02254EAC: ; 0x02254EAC
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ mov r1, #0x40
+ str r1, [sp]
+ mov r1, #8
+ mov r2, #0
+ str r1, [sp, #4]
+ mov r1, #4
+ add r3, r2, #0
+ add r5, r0, #0
+ bl FUN_020196F4
+ cmp r4, #0
+ beq _02254EE0
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ mov r0, #8
+ mov r2, #0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+_02254EE0:
+ add r0, r5, #0
+ bl FUN_02019548
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD27_02254EAC
+
+ thumb_func_start MOD27_02254EEC
+MOD27_02254EEC: ; 0x02254EEC
+ push {r3, lr}
+ cmp r0, #0
+ bne _02254EF6
+ mov r0, #0
+ pop {r3, pc}
+_02254EF6:
+ cmp r0, r1
+ bne _02254EFE
+ mov r0, #0x40
+ pop {r3, pc}
+_02254EFE:
+ lsl r0, r0, #0xc
+ bl _u32_div_f
+ lsl r0, r0, #5
+ lsr r0, r0, #0xc
+ bne _02254F0E
+ mov r0, #1
+ b _02254F14
+_02254F0E:
+ cmp r0, #0x20
+ bne _02254F14
+ mov r0, #0x1f
+_02254F14:
+ lsl r0, r0, #1
+ pop {r3, pc}
+ thumb_func_end MOD27_02254EEC
+
+ thumb_func_start MOD27_02254F18
+MOD27_02254F18: ; 0x02254F18
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r0, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x6d
+ bl FUN_02006A34
+ mov r4, #0
+ add r0, sp, #0x18
+ strb r4, [r0, #0xa]
+ mov r1, #2
+ strb r1, [r0, #0xb]
+ strb r4, [r0, #0xc]
+ strb r4, [r0, #0xd]
+ ldr r0, [sp, #0x10]
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _02254FA2
+ ldr r7, [sp, #0xc]
+ ldr r6, [sp, #0x10]
+ add r0, r7, #0
+ str r0, [sp, #0x14]
+ add r0, #0xe0
+ ldr r5, _02254FA8 ; =0x02255348
+ str r0, [sp, #0x14]
+_02254F58:
+ ldrh r0, [r6, #0xe]
+ cmp r0, #0
+ beq _02254F92
+ bl FUN_0206EA98
+ cmp r0, #0
+ beq _02254F6A
+ mov r1, #1
+ b _02254F6C
+_02254F6A:
+ mov r1, #0
+_02254F6C:
+ add r0, sp, #0x18
+ strh r1, [r0, #8]
+ ldrh r0, [r5]
+ ldr r2, [sp, #0x14]
+ add r1, sp, #0x18
+ add r0, #0x1c
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x18]
+ ldrh r0, [r5, #2]
+ add r0, #0x15
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0xc]
+ ldr r0, [r0, #8]
+ bl MOD20_02253E74
+ add r1, r7, #0
+ add r1, #0xb4
+ str r0, [r1]
+_02254F92:
+ ldr r0, [sp, #0x10]
+ add r4, r4, #1
+ ldr r0, [r0]
+ add r6, #0x10
+ add r5, r5, #4
+ add r7, r7, #4
+ cmp r4, r0
+ blt _02254F58
+_02254FA2:
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254FA8: .word 0x02255348
+ thumb_func_end MOD27_02254F18
+
+ thumb_func_start MOD27_02254FAC
+MOD27_02254FAC: ; 0x02254FAC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0x13
+ mov r1, #8
+ bl FUN_02006670
+ str r0, [sp, #0x14]
+ cmp r0, #0
+ beq _022550C0
+ mov r0, #0
+ add r1, sp, #0x20
+ strh r0, [r1, #0xc]
+ str r0, [sp, #0x10]
+ strb r0, [r1, #0xe]
+ mov r0, #2
+ strb r0, [r1, #0xf]
+ mov r7, #1
+ strb r7, [r1, #0x10]
+ ldr r0, [sp, #8]
+ strb r7, [r1, #0x11]
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _022550BA
+ ldr r5, [sp, #4]
+ mov r0, #8
+ mov r1, #0x43
+ str r0, [sp, #0xc]
+ lsl r1, r1, #2
+ add r0, r5, #0
+ add r0, r0, r1
+ str r0, [sp, #0x18]
+ add r0, r5, #0
+ str r0, [sp, #0x1c]
+ add r0, #0xcc
+ ldr r4, [sp, #8]
+ ldr r6, _022550C4 ; =0x02255348
+ add r7, #0xff
+ str r0, [sp, #0x1c]
+_02254FFC:
+ ldr r0, [sp, #0x18]
+ mov r3, #0xa
+ str r0, [sp]
+ ldr r0, [sp, #0x14]
+ ldr r1, [r4, #4]
+ mov r2, #0
+ lsl r3, r3, #6
+ bl FUN_02006814
+ ldr r0, [sp, #0x18]
+ add r1, sp, #0x20
+ bl FUN_020B0088
+ ldr r0, [sp, #0x20]
+ mov r1, #2
+ ldr r0, [r0, #0x14]
+ lsl r1, r1, #8
+ bl DC_FlushRange
+ ldr r0, [sp, #0x20]
+ mov r2, #2
+ ldr r0, [r0, #0x14]
+ add r1, r7, #0
+ lsl r2, r2, #8
+ bl GXS_LoadOBJ
+ ldrh r0, [r6]
+ ldr r2, [sp, #0x1c]
+ add r1, sp, #0x24
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x24]
+ ldrh r0, [r6, #2]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #4]
+ ldr r0, [r0, #8]
+ bl MOD20_02253E74
+ add r1, r5, #0
+ add r1, #0x9c
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ ldr r1, [sp, #0xc]
+ bl MOD20_02253FA4
+ add r0, r5, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ mov r1, #4
+ bl MOD20_02253F28
+ ldrh r0, [r4, #0xa]
+ cmp r0, #0
+ beq _02255072
+ ldrh r0, [r4, #0x10]
+ cmp r0, #0
+ beq _02255080
+_02255072:
+ add r0, r5, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ mov r1, #1
+ bl MOD20_02253F9C
+ b _02255098
+_02255080:
+ ldrh r0, [r4, #8]
+ ldrb r1, [r4, #0x13]
+ ldrb r2, [r4, #0x12]
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ add r0, r5, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ add r1, r1, #2
+ bl MOD20_02253F9C
+_02255098:
+ mov r0, #2
+ lsl r0, r0, #8
+ add r7, r7, r0
+ ldr r0, [sp, #0xc]
+ add r4, #0x10
+ add r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ add r6, r6, #4
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #8]
+ add r5, r5, #4
+ ldr r1, [r0]
+ ldr r0, [sp, #0x10]
+ cmp r0, r1
+ blt _02254FFC
+_022550BA:
+ ldr r0, [sp, #0x14]
+ bl FUN_020066F4
+_022550C0:
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022550C4: .word 0x02255348
+ thumb_func_end MOD27_02254FAC
+
+ thumb_func_start MOD27_022550C8
+MOD27_022550C8: ; 0x022550C8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #1
+ mov r1, #0
+ lsl r0, r0, #8
+ strb r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xf8
+ str r4, [r0]
+ add r0, r4, #0
+ ldr r1, [r4]
+ add r0, #0xfc
+ str r1, [r0]
+ add r1, r4, #0
+ ldr r0, _022550F4 ; =MOD27_022550F8
+ add r1, #0xf8
+ mov r2, #1
+ bl FUN_0200CA44
+ add r4, #0xf4
+ str r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+_022550F4: .word MOD27_022550F8
+ thumb_func_end MOD27_022550C8
+
+ thumb_func_start MOD27_022550F8
+MOD27_022550F8: ; 0x022550F8
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ ldrb r0, [r5, #8]
+ ldr r4, [r5, #4]
+ ldr r6, [r5]
+ cmp r0, #0
+ beq _0225510C
+ cmp r0, #1
+ beq _02255164
+ pop {r4, r5, r6, pc}
+_0225510C:
+ add r0, r4, #0
+ add r0, #0x66
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _022551EA
+ ldr r0, [r4, #0x68]
+ ldr r1, [r4, #0x6c]
+ ldr r2, [r4]
+ bl MOD27_022551F4
+ ldr r1, [r4]
+ cmp r0, r1
+ bhs _022551EA
+ lsl r2, r0, #4
+ add r1, r4, r2
+ ldrh r3, [r1, #0xa]
+ cmp r3, #0
+ beq _022551EA
+ ldrb r3, [r1, #0x12]
+ cmp r3, #0
+ bne _022551EA
+ mov r3, #0
+ strb r3, [r5, #9]
+ strb r3, [r5, #0xb]
+ strb r0, [r5, #0xa]
+ mov r3, #2
+ str r3, [r5, #0x10]
+ ldrh r0, [r1, #0x10]
+ cmp r0, #0
+ bne _02255150
+ mov r0, #1
+ strb r0, [r5, #0xc]
+ mov r0, #8
+ b _02255154
+_02255150:
+ strb r3, [r5, #0xc]
+ mov r0, #4
+_02255154:
+ strb r0, [r5, #0xd]
+ mov r0, #1
+ strb r0, [r5, #8]
+ add r0, r4, r2
+ ldrh r0, [r0, #8]
+ bl MOD20_02252B48
+ pop {r4, r5, r6, pc}
+_02255164:
+ ldrb r1, [r5, #0xb]
+ ldrb r0, [r5, #0xd]
+ cmp r1, r0
+ bne _022551A6
+ add r0, r4, #0
+ add r0, #0x64
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _02255186
+ ldr r0, [r4, #0x68]
+ ldr r1, [r4, #0x6c]
+ ldr r2, [r4]
+ bl MOD27_022551F4
+ ldrb r1, [r5, #0xa]
+ cmp r1, r0
+ beq _022551A6
+_02255186:
+ ldrb r0, [r5, #0xa]
+ ldr r1, _022551EC ; =0x02255348
+ ldr r3, _022551F0 ; =0x0225534A
+ lsl r2, r0, #2
+ add r0, r6, r2
+ ldrh r1, [r1, r2]
+ ldrh r2, [r3, r2]
+ add r0, #0x9c
+ ldr r0, [r0]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+ mov r0, #0
+ strb r0, [r5, #8]
+ pop {r4, r5, r6, pc}
+_022551A6:
+ ldrb r0, [r5, #9]
+ cmp r0, #0
+ bne _022551E6
+ ldrb r0, [r5, #0xa]
+ ldr r1, _022551EC ; =0x02255348
+ ldr r3, _022551F0 ; =0x0225534A
+ lsl r2, r0, #2
+ add r0, r6, r2
+ ldrh r1, [r1, r2]
+ add r0, #0x9c
+ ldrh r2, [r3, r2]
+ ldr r4, [r5, #0x10]
+ ldr r0, [r0]
+ add r2, r4, r2
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+ ldrb r1, [r5, #0xb]
+ ldrb r0, [r5, #0xd]
+ cmp r1, r0
+ bhs _022551D6
+ add r0, r1, #1
+ strb r0, [r5, #0xb]
+_022551D6:
+ mov r0, #0
+ ldr r1, [r5, #0x10]
+ mvn r0, r0
+ mul r0, r1
+ str r0, [r5, #0x10]
+ ldrb r0, [r5, #0xc]
+ strb r0, [r5, #9]
+ pop {r4, r5, r6, pc}
+_022551E6:
+ sub r0, r0, #1
+ strb r0, [r5, #9]
+_022551EA:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022551EC: .word 0x02255348
+_022551F0: .word 0x0225534A
+ thumb_func_end MOD27_022550F8
+
+ thumb_func_start MOD27_022551F4
+MOD27_022551F4: ; 0x022551F4
+ push {r3, r4, r5, r6, r7, lr}
+ mov lr, r0
+ mov ip, r1
+ add r7, r2, #0
+ ldr r6, _02255248 ; =0x00000000
+ beq _02255242
+ ldr r3, _0225524C ; =0x02255348
+_02255202:
+ ldrh r1, [r3]
+ ldrh r4, [r3, #2]
+ mov r5, lr
+ add r0, r1, #0
+ sub r0, #0x10
+ add r2, r4, #0
+ add r1, #0x10
+ sub r5, r5, r0
+ sub r0, r1, r0
+ sub r2, #8
+ cmp r5, r0
+ bhs _0225521E
+ mov r0, #1
+ b _02255220
+_0225521E:
+ mov r0, #0
+_02255220:
+ mov r1, ip
+ add r4, #0x18
+ sub r1, r1, r2
+ sub r2, r4, r2
+ cmp r1, r2
+ bhs _02255230
+ mov r1, #1
+ b _02255232
+_02255230:
+ mov r1, #0
+_02255232:
+ tst r0, r1
+ beq _0225523A
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0225523A:
+ add r6, r6, #1
+ add r3, r3, #4
+ cmp r6, r7
+ blo _02255202
+_02255242:
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255248: .word 0x00000000
+_0225524C: .word 0x02255348
+ thumb_func_end MOD27_022551F4
+
+ thumb_func_start MOD27_02255250
+MOD27_02255250: ; 0x02255250
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+ add r7, r6, #0
+_0225525A:
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _02255270
+ ldr r0, [r5, #8]
+ bl MOD20_02253F14
+ add r0, r4, #0
+ add r0, #0x9c
+ str r7, [r0]
+_02255270:
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r1, [r0]
+ cmp r1, #0
+ beq _02255288
+ ldr r0, [r5, #8]
+ bl MOD20_02253F14
+ add r1, r4, #0
+ add r1, #0xb4
+ mov r0, #0
+ str r0, [r1]
+_02255288:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #6
+ blt _0225525A
+ ldr r0, [r5, #0x38]
+ mov r6, #0
+ cmp r0, #0
+ bls _022552AC
+ add r4, r5, #0
+ add r4, #0x3c
+_0225529C:
+ add r0, r4, #0
+ bl FUN_02019178
+ ldr r0, [r5, #0x38]
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, r0
+ blo _0225529C
+_022552AC:
+ mov r0, #0
+ str r0, [r5, #0x38]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD27_02255250
+
+ thumb_func_start MOD27_022552B4
+MOD27_022552B4: ; 0x022552B4
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD27_02254BF4
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD27_022552B4
+
+ thumb_func_start MOD27_022552D0
+MOD27_022552D0: ; 0x022552D0
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD27_02255250
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ mov r2, #5
+ bl FUN_02018540
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD27_02254F18
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD27_02254FAC
+ ldr r2, [r5, #0x34]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD27_02254CC8
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r0, _02255338 ; =0x00000669
+ bl MOD20_02252B28
+ add r0, r6, #0
+ bl MOD27_02254BF4
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_02255338: .word 0x00000669
+ thumb_func_end MOD27_022552D0
+
+ .section .rodata
+ ; 0x0225533C
+ .incbin "baserom.nds", 0x28A8FC, 0x88
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_27.SINIT_START
+ .global SDK_OVERLAY.MODULE_27.SINIT_END
+SDK_OVERLAY.MODULE_27.SINIT_START:
+ .word MOD27_02254840
+ .word 0
+SDK_OVERLAY.MODULE_27.SINIT_END:
diff --git a/arm9/modules/28/asm/module_28.s b/arm9/modules/28/asm/module_28.s
new file mode 100644
index 00000000..e1a1d741
--- /dev/null
+++ b/arm9/modules/28/asm/module_28.s
@@ -0,0 +1,2981 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD28_02254840
+MOD28_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =0x02252979
+ ldr r0, _0225484C ; =MOD28_02254854
+ ldr r1, _02254850 ; =MOD28_022549F4
+ bx r3
+ .align 2, 0
+_02254848: .word 0x02252979
+_0225484C: .word MOD28_02254854
+_02254850: .word MOD28_022549F4
+ thumb_func_end MOD28_02254840
+
+ thumb_func_start MOD28_02254854
+MOD28_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x64
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD28_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD28_022549C0
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD28_022549C0
+ thumb_func_end MOD28_02254854
+
+ thumb_func_start MOD28_0225489C
+MOD28_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ add r4, r1, #0
+ add r0, #0x5c
+ add r1, r7, #4
+ bl MOD28_02254AF4
+ cmp r0, #0
+ beq _02254986
+ mov r0, #0
+ strb r0, [r7]
+ strb r0, [r7, #1]
+ strb r0, [r7, #2]
+ str r4, [r7, #0x60]
+ bl FUN_020225F8
+ bl FUN_0206BB1C
+ mov r1, #0
+ str r0, [sp, #4]
+ str r1, [sp]
+ bl FUN_0206B9AC
+ mov r6, #0
+ str r0, [r7, #4]
+ cmp r0, #0
+ ble _0225496A
+ add r4, r7, #0
+_022548D6:
+ ldr r0, [sp, #4]
+ add r1, r6, #0
+ bl FUN_0206B9B0
+ mov r1, #0x4c
+ mov r2, #0
+ add r5, r0, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ bne _02254962
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0xc]
+ add r0, r5, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r4, #0x10]
+ add r0, r5, #0
+ bl FUN_0206B688
+ str r0, [r4, #8]
+ add r0, r5, #0
+ mov r1, #9
+ mov r2, #0
+ bl FUN_020671BC
+ bl MOD28_0225498C
+ cmp r0, #6
+ bhi _02254944
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0225492A: ; jump table
+ .short _02254938 - _0225492A - 2 ; case 0
+ .short _02254938 - _0225492A - 2 ; case 1
+ .short _02254938 - _0225492A - 2 ; case 2
+ .short _02254944 - _0225492A - 2 ; case 3
+ .short _0225494E - _0225492A - 2 ; case 4
+ .short _0225494E - _0225492A - 2 ; case 5
+ .short _0225494E - _0225492A - 2 ; case 6
+_02254938:
+ mov r1, #1
+ strb r1, [r4, #0x12]
+ mov r1, #3
+ sub r0, r1, r0
+ strb r0, [r4, #0x13]
+ b _0225495A
+_02254944:
+ mov r0, #2
+ strb r0, [r4, #0x12]
+ mov r0, #0
+ strb r0, [r4, #0x13]
+ b _0225495A
+_0225494E:
+ mov r1, #0
+ strb r1, [r4, #0x12]
+ mov r1, #3
+ sub r0, r1, r0
+ neg r0, r0
+ strb r0, [r4, #0x13]
+_0225495A:
+ ldr r0, [sp]
+ add r4, #0xc
+ add r0, r0, #1
+ str r0, [sp]
+_02254962:
+ ldr r0, [r7, #4]
+ add r6, r6, #1
+ cmp r6, r0
+ blt _022548D6
+_0225496A:
+ ldr r0, [sp]
+ mov r1, #0
+ str r0, [r7, #4]
+ add r0, r7, #0
+ add r0, #0x50
+ strh r1, [r0]
+ add r0, r7, #0
+ add r0, #0x52
+ strh r1, [r0]
+ str r1, [r7, #0x54]
+ add sp, #8
+ str r1, [r7, #0x58]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02254986:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD28_0225489C
+
+ thumb_func_start MOD28_0225498C
+MOD28_0225498C: ; 0x0225498C
+ ldr r3, _022549A8 ; =0x02255E78
+ mov r2, #0
+_02254990:
+ ldrb r1, [r3]
+ cmp r0, r1
+ bhs _0225499A
+ add r0, r2, #0
+ bx lr
+_0225499A:
+ add r2, r2, #1
+ add r3, r3, #1
+ cmp r2, #6
+ blo _02254990
+ mov r0, #6
+ bx lr
+ nop
+_022549A8: .word 0x02255E78
+ thumb_func_end MOD28_0225498C
+
+ thumb_func_start MOD28_022549AC
+MOD28_022549AC: ; 0x022549AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x5c]
+ bl MOD28_02254B70
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD28_022549AC
+
+ thumb_func_start MOD28_022549C0
+MOD28_022549C0: ; 0x022549C0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _022549EC
+ lsl r2, r1, #2
+ ldr r1, _022549F0 ; =0x02255E80
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _022549EC
+ add r0, r4, #0
+ bl MOD28_022549AC
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x60]
+ bl MOD20_022529A0
+_022549EC:
+ pop {r3, r4, r5, pc}
+ nop
+_022549F0: .word 0x02255E80
+ thumb_func_end MOD28_022549C0
+
+ thumb_func_start MOD28_022549F4
+MOD28_022549F4: ; 0x022549F4
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD28_022549F4
+
+ thumb_func_start MOD28_022549FC
+MOD28_022549FC: ; 0x022549FC
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254A04
+ b _02254A06
+_02254A04:
+ mov r1, #2
+_02254A06:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD28_022549FC
+
+ thumb_func_start MOD28_02254A10
+MOD28_02254A10: ; 0x02254A10
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A20
+ cmp r0, #1
+ beq _02254A30
+ b _02254A4A
+_02254A20:
+ ldr r0, [r4, #0x5c]
+ mov r1, #0
+ bl MOD28_02254BC8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A4A
+_02254A30:
+ ldr r0, [r4, #0x5c]
+ mov r1, #0
+ bl MOD28_02254BEC
+ cmp r0, #0
+ beq _02254A4A
+ ldr r0, [r4, #0x60]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD28_022549FC
+_02254A4A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD28_02254A10
+
+ thumb_func_start MOD28_02254A50
+MOD28_02254A50: ; 0x02254A50
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254A64
+ mov r1, #2
+ bl MOD28_022549FC
+ mov r0, #0
+ pop {r4, pc}
+_02254A64:
+ add r1, r4, #0
+ add r0, #0x54
+ add r1, #0x58
+ bl MOD20_02252B68
+ add r1, r4, #0
+ add r1, #0x50
+ strh r0, [r1]
+ add r0, r4, #0
+ add r0, #0x50
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _02254AB2
+ ldr r0, [r4, #0x54]
+ sub r0, #0x10
+ cmp r0, #0xbf
+ bhs _02254A8A
+ mov r1, #1
+ b _02254A8C
+_02254A8A:
+ mov r1, #0
+_02254A8C:
+ ldr r0, [r4, #0x58]
+ sub r0, #0x10
+ cmp r0, #0x9f
+ bhs _02254A98
+ mov r0, #1
+ b _02254A9A
+_02254A98:
+ mov r0, #0
+_02254A9A:
+ tst r0, r1
+ beq _02254AAA
+ bl FUN_02020AA4
+ add r4, #0x52
+ strh r0, [r4]
+ mov r0, #0
+ pop {r4, pc}
+_02254AAA:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x50
+ strh r1, [r0]
+_02254AB2:
+ mov r0, #0
+ str r0, [r4, #0x54]
+ str r0, [r4, #0x58]
+ add r4, #0x52
+ strh r0, [r4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD28_02254A50
+
+ thumb_func_start MOD28_02254AC0
+MOD28_02254AC0: ; 0x02254AC0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254AD0
+ cmp r0, #1
+ beq _02254AE0
+ b _02254AEE
+_02254AD0:
+ ldr r0, [r4, #0x5c]
+ mov r1, #1
+ bl MOD28_02254BC8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AEE
+_02254AE0:
+ ldr r0, [r4, #0x5c]
+ bl MOD28_02254BF8
+ cmp r0, #0
+ beq _02254AEE
+ mov r0, #1
+ pop {r4, pc}
+_02254AEE:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD28_02254AC0
+
+ thumb_func_start MOD28_02254AF4
+MOD28_02254AF4: ; 0x02254AF4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r1, #0
+ mov r1, #0xa3
+ add r5, r0, #0
+ mov r0, #8
+ lsl r1, r1, #2
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254B6A
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x30]
+ add r0, r4, #0
+ mov r3, #0
+ add r0, #0xb0
+ str r3, [r0]
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ add r6, r4, #0
+ add r2, r3, #0
+ add r1, r0, #4
+_02254B32:
+ str r2, [r6, r0]
+ str r2, [r6, r1]
+ add r3, r3, #1
+ add r6, #0x38
+ cmp r3, #6
+ blt _02254B32
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x34
+ mov r1, #0xc
+ mov r2, #5
+ mov r3, #6
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #0xc
+ mov r2, #0x24
+ mov r3, #0x25
+ bl MOD20_02253FBC
+ add sp, #4
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_02254B6A:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD28_02254AF4
+
+ thumb_func_start MOD28_02254B70
+MOD28_02254B70: ; 0x02254B70
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ beq _02254BC6
+ mov r7, #0x4d
+ mov r6, #0
+ add r4, r5, #0
+ lsl r7, r7, #2
+_02254B7E:
+ ldr r1, [r4, r7]
+ cmp r1, #0
+ beq _02254B8A
+ ldr r0, [r5, #0x30]
+ bl MOD20_02253F14
+_02254B8A:
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _02254B9A
+ ldr r0, [r5, #0x30]
+ bl MOD20_02253F14
+_02254B9A:
+ add r6, r6, #1
+ add r4, #0x38
+ cmp r6, #6
+ blt _02254B7E
+ add r0, r5, #0
+ add r0, #0x34
+ bl MOD20_02254014
+ add r0, r5, #0
+ add r0, #0x48
+ bl MOD20_02254014
+ add r0, r5, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02254BC0
+ bl FUN_0200CAB4
+_02254BC0:
+ add r0, r5, #0
+ bl FUN_02016A18
+_02254BC6:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD28_02254B70
+
+ thumb_func_start MOD28_02254BC8
+MOD28_02254BC8: ; 0x02254BC8
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254BE8 ; =0x02255EF4
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254BE8: .word 0x02255EF4
+ thumb_func_end MOD28_02254BC8
+
+ thumb_func_start MOD28_02254BEC
+MOD28_02254BEC: ; 0x02254BEC
+ ldr r3, _02254BF4 ; =0x02253795
+ add r0, #8
+ bx r3
+ nop
+_02254BF4: .word 0x02253795
+ thumb_func_end MOD28_02254BEC
+
+ thumb_func_start MOD28_02254BF8
+MOD28_02254BF8: ; 0x02254BF8
+ ldr r3, _02254C00 ; =0x022537B9
+ add r0, #8
+ bx r3
+ nop
+_02254C00: .word 0x022537B9
+ thumb_func_end MOD28_02254BF8
+
+ thumb_func_start MOD28_02254C04
+MOD28_02254C04: ; 0x02254C04
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD28_02254C04
+
+ thumb_func_start MOD28_02254C18
+MOD28_02254C18: ; 0x02254C18
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254CA8 ; =0x02255ED8
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #7
+ mov r3, #6
+ bl FUN_0200687C
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, [r5]
+ add r0, r5, #0
+ bl MOD28_02254CB4
+ ldr r1, [r5]
+ add r0, r5, #0
+ bl MOD28_02254E9C
+ ldr r1, _02254CAC ; =0x04001000
+ ldr r0, _02254CB0 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #0x14
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD28_02254C04
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254CA8: .word 0x02255ED8
+_02254CAC: .word 0x04001000
+_02254CB0: .word 0xFFFFE0FF
+ thumb_func_end MOD28_02254C18
+
+ thumb_func_start MOD28_02254CB4
+MOD28_02254CB4: ; 0x02254CB4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r1, [sp, #0x10]
+ bl MOD20_022539C4
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x23
+ lsl r3, r0, #9
+ bl FUN_02006A34
+ mov r0, #0x13
+ mov r1, #8
+ bl FUN_02006670
+ str r0, [sp, #0x1c]
+ cmp r0, #0
+ bne _02254CE8
+ b _02254E46
+_02254CE8:
+ mov r0, #0
+ str r0, [sp, #0x18]
+ add r1, r0, #0
+ add r0, sp, #0x2c
+ strh r1, [r0, #0xc]
+ ldr r1, [sp, #0x18]
+ strb r1, [r0, #0xe]
+ mov r1, #2
+ strb r1, [r0, #0xf]
+ mov r1, #1
+ strb r1, [r0, #0x11]
+ ldr r0, [sp, #0x10]
+ ldr r0, [r0]
+ cmp r0, #0
+ bgt _02254D08
+ b _02254E40
+_02254D08:
+ ldr r0, [sp, #0x18]
+ ldr r5, [sp, #0xc]
+ str r0, [sp, #0x14]
+ add r7, r0, #0
+ add r0, r5, #0
+ str r0, [sp, #0x24]
+ add r0, #0x34
+ str r0, [sp, #0x24]
+ add r0, r5, #0
+ str r0, [sp, #0x28]
+ add r0, #0x48
+ ldr r4, [sp, #0x10]
+ ldr r6, _02254E4C ; =0x02255EC0
+ str r0, [sp, #0x28]
+_02254D24:
+ ldr r0, [sp, #0x1c]
+ ldr r1, [r4, #4]
+ mov r2, #8
+ bl FUN_02006704
+ add r1, sp, #0x2c
+ str r0, [sp, #0x20]
+ bl FUN_020B0088
+ ldr r0, [sp, #0x2c]
+ mov r1, #1
+ ldr r0, [r0, #0x14]
+ lsl r1, r1, #0xa
+ bl DC_FlushRange
+ ldr r0, [sp, #0x2c]
+ mov r2, #1
+ ldr r0, [r0, #0x14]
+ ldr r1, [sp, #0x14]
+ lsl r2, r2, #0xa
+ bl GXS_LoadOBJ
+ ldr r0, [sp, #0x20]
+ bl FUN_02016A18
+ ldrh r0, [r6]
+ mov r1, #1
+ ldr r2, [sp, #0x24]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x30]
+ ldrh r0, [r6, #2]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x34]
+ add r0, sp, #0x2c
+ strb r1, [r0, #0x10]
+ ldr r0, [sp, #0xc]
+ add r1, sp, #0x30
+ ldr r0, [r0, #0x30]
+ bl MOD20_02253E74
+ mov r1, #0x4d
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ add r1, r7, #0
+ bl MOD20_02253FA4
+ ldrh r0, [r4, #8]
+ ldrh r1, [r4, #0xc]
+ mov r2, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ mov r1, #0
+ add r0, sp, #0x2c
+ strb r1, [r0, #0x10]
+ ldr r0, [sp, #0xc]
+ ldr r2, [sp, #0x28]
+ ldr r0, [r0, #0x30]
+ add r1, sp, #0x30
+ bl MOD20_02253E74
+ mov r1, #0x4e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _02254DDC
+ mov r1, #1
+ bl MOD20_02253F78
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0xc0
+ bl MOD20_02253FA4
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl MOD20_02253F9C
+ b _02254DE0
+_02254DDC:
+ bl ErrorHandling
+_02254DE0:
+ ldrh r0, [r4, #8]
+ mov r1, #0x1c
+ bl FUN_02068678
+ mov r1, #0x59
+ lsl r1, r1, #2
+ strb r0, [r5, r1]
+ ldr r0, _02254E50 ; =0x00000165
+ mov r1, #0
+ strb r1, [r5, r0]
+ add r0, r0, #1
+ strb r1, [r5, r0]
+ mov r1, #0x52
+ ldr r0, [sp, #0x34]
+ ldr r2, [sp, #0x30]
+ lsl r1, r1, #2
+ str r2, [r5, r1]
+ add r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #0x15
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r0, #4
+ str r1, [r5, r0]
+ mov r0, #0x56
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r0, #4
+ str r1, [r5, r0]
+ mov r0, #1
+ ldr r1, [sp, #0x14]
+ lsl r0, r0, #0xa
+ add r0, r1, r0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r4, #0xc
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x10]
+ add r6, r6, #4
+ ldr r1, [r0]
+ ldr r0, [sp, #0x18]
+ add r5, #0x38
+ add r7, #0x20
+ cmp r0, r1
+ bge _02254E40
+ b _02254D24
+_02254E40:
+ ldr r0, [sp, #0x1c]
+ bl FUN_020066F4
+_02254E46:
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254E4C: .word 0x02255EC0
+_02254E50: .word 0x00000165
+ thumb_func_end MOD28_02254CB4
+
+ thumb_func_start MOD28_02254E54
+MOD28_02254E54: ; 0x02254E54
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_0201BA60
+ mov r1, #0x3f
+ and r0, r1
+ sub r0, #0x20
+ lsl r4, r0, #0xc
+ bl FUN_0201BA60
+ mov r1, #0x3f
+ and r0, r1
+ sub r0, #0x20
+ lsl r0, r0, #0xc
+ str r4, [r5]
+ str r0, [r5, #4]
+ mov r0, #0
+ str r0, [r5, #8]
+ add r0, r5, #0
+ add r1, r5, #0
+ bl VEC_Normalize
+ ldr r1, [r5]
+ asr r0, r1, #3
+ lsr r0, r0, #0x1c
+ add r0, r1, r0
+ asr r0, r0, #4
+ str r0, [r5]
+ ldr r1, [r5, #4]
+ asr r0, r1, #3
+ lsr r0, r0, #0x1c
+ add r0, r1, r0
+ asr r0, r0, #4
+ str r0, [r5, #4]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD28_02254E54
+
+ thumb_func_start MOD28_02254E9C
+MOD28_02254E9C: ; 0x02254E9C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ str r0, [sp]
+ ldr r0, [r7]
+ mov r6, #0
+ cmp r0, #0
+ ble _02254EF8
+ mov r1, #0x4f
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ add r4, r0, r1
+ add r5, r0, #0
+_02254EB4:
+ add r0, r4, #0
+ bl MOD28_02254E54
+ mov r0, #0x59
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _02254ED2
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #6
+ bl MOD20_02253F28
+ b _02254EEC
+_02254ED2:
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ ble _02254EE0
+ mov r1, #7
+ b _02254EE2
+_02254EE0:
+ mov r1, #6
+_02254EE2:
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl MOD20_02253F28
+_02254EEC:
+ ldr r0, [r7]
+ add r6, r6, #1
+ add r4, #0x38
+ add r5, #0x38
+ cmp r6, r0
+ blt _02254EB4
+_02254EF8:
+ ldr r0, [sp]
+ bl MOD28_02254F34
+ ldr r0, _02254F14 ; =MOD28_02254F84
+ ldr r1, [sp]
+ mov r2, #1
+ bl FUN_0200CA44
+ ldr r1, [sp]
+ add r1, #0xb0
+ str r1, [sp]
+ str r0, [r1]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254F14: .word MOD28_02254F84
+ thumb_func_end MOD28_02254E9C
+
+ thumb_func_start MOD28_02254F18
+MOD28_02254F18: ; 0x02254F18
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD28_02254C04
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD28_02254F18
+
+ thumb_func_start MOD28_02254F34
+MOD28_02254F34: ; 0x02254F34
+ push {r3, r4, r5, r6}
+ add r1, r0, #0
+ mov r5, #0
+ add r1, #0xe4
+ str r5, [r1]
+ ldr r1, [r0]
+ ldr r3, [r1]
+ cmp r3, #0
+ ble _02254F60
+ mov r1, #0x16
+ lsl r1, r1, #4
+ add r6, r0, #0
+ add r4, r5, #0
+ add r2, r1, #3
+_02254F50:
+ strb r4, [r6, r1]
+ strb r4, [r6, r2]
+ ldr r3, [r0]
+ add r5, r5, #1
+ ldr r3, [r3]
+ add r6, #0x38
+ cmp r5, r3
+ blt _02254F50
+_02254F60:
+ add r1, r0, #0
+ add r1, #0xec
+ str r3, [r1]
+ add r1, r0, #0
+ add r1, #0xec
+ ldr r1, [r1]
+ add r0, #0xf0
+ str r1, [r0]
+ pop {r3, r4, r5, r6}
+ bx lr
+ thumb_func_end MOD28_02254F34
+
+ thumb_func_start MOD28_02254F74
+MOD28_02254F74: ; 0x02254F74
+ add r2, r0, #0
+ add r2, #0xe4
+ str r1, [r2]
+ mov r1, #0
+ add r0, #0xe8
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD28_02254F74
+
+ thumb_func_start MOD28_02254F84
+MOD28_02254F84: ; 0x02254F84
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r4, [r5]
+ add r0, r4, #0
+ add r0, #0x4c
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _02254FFC
+ mov r0, #0xa1
+ ldr r1, [r4, #0x50]
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ ldr r1, [r4, #0x54]
+ add r0, r0, #4
+ sub r1, #8
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD28_02255040
+ add r1, r5, #0
+ add r1, #0xec
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xec
+ ldr r1, [r0]
+ ldr r0, [r4]
+ cmp r1, r0
+ bhs _02254FC0
+ mov r1, #1
+ b _02254FC2
+_02254FC0:
+ mov r1, #0
+_02254FC2:
+ add r0, r5, #0
+ add r0, #0xf8
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02254FEE
+ add r0, r5, #0
+ add r0, #0xec
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xf0
+ ldr r0, [r0]
+ cmp r1, r0
+ beq _02254FEE
+ mov r0, #0xc
+ mul r0, r1
+ add r0, r4, r0
+ ldrh r0, [r0, #8]
+ bl MOD20_02252B48
+_02254FEE:
+ add r0, r5, #0
+ add r0, #0xec
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xf0
+ str r1, [r0]
+ b _0225500C
+_02254FFC:
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xf8
+ str r1, [r0]
+ add r0, r5, #0
+ ldr r1, [r4]
+ add r0, #0xf0
+ str r1, [r0]
+_0225500C:
+ add r2, r5, #0
+ add r2, #0xe4
+ ldr r2, [r2]
+ add r0, r5, #0
+ lsl r3, r2, #2
+ ldr r2, _0225503C ; =0x02255E94
+ add r1, r4, #0
+ ldr r2, [r2, r3]
+ blx r2
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD28_022551C4
+ add r0, r5, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ cmp r0, #4
+ beq _02255038
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD28_02255920
+_02255038:
+ pop {r3, r4, r5, pc}
+ nop
+_0225503C: .word 0x02255E94
+ thumb_func_end MOD28_02254F84
+
+ thumb_func_start MOD28_02255040
+MOD28_02255040: ; 0x02255040
+ push {r4, r5, r6, r7}
+ add r5, r0, #0
+ ldr r0, [r5]
+ mov r1, #0
+ ldr r4, [r0]
+ cmp r4, #0
+ ble _0225508C
+ mov r0, #0xa1
+ lsl r0, r0, #2
+ ldr r2, [r5, r0]
+ add r0, r0, #4
+ ldr r3, [r5, r0]
+_02255058:
+ mov r0, #0x52
+ lsl r0, r0, #2
+ mov r6, #0x53
+ ldr r0, [r5, r0]
+ lsl r6, r6, #2
+ ldr r6, [r5, r6]
+ asr r0, r0, #0xc
+ asr r6, r6, #0xc
+ sub r0, r2, r0
+ sub r7, r3, r6
+ add r6, r0, #0
+ mul r6, r0
+ add r0, r7, #0
+ mul r0, r7
+ add r6, r6, r0
+ mov r0, #1
+ lsl r0, r0, #8
+ cmp r6, r0
+ bge _02255084
+ add r0, r1, #0
+ pop {r4, r5, r6, r7}
+ bx lr
+_02255084:
+ add r1, r1, #1
+ add r5, #0x38
+ cmp r1, r4
+ blt _02255058
+_0225508C:
+ add r0, r4, #0
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD28_02255040
+
+ thumb_func_start MOD28_02255094
+MOD28_02255094: ; 0x02255094
+ push {r4, r5}
+ lsl r4, r0, #0xc
+ ldr r0, [r3]
+ sub r0, r4, r0
+ lsl r4, r1, #0xc
+ ldr r1, [r3, #4]
+ sub r5, r4, r1
+ asr r1, r0, #0xc
+ add r4, r0, #0
+ mul r4, r1
+ add r1, r2, #0
+ mul r1, r2
+ asr r0, r5, #0xc
+ add r3, r5, #0
+ mul r3, r0
+ lsl r2, r1, #0xc
+ add r1, r4, r3
+ mov r0, #0
+ cmp r2, r1
+ ble _022550BE
+ mov r0, #1
+_022550BE:
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD28_02255094
+
+ thumb_func_start MOD28_022550C4
+MOD28_022550C4: ; 0x022550C4
+ push {r3, lr}
+ add r1, #0x4e
+ ldrh r1, [r1]
+ cmp r1, #0
+ beq _022550E0
+ add r1, r0, #0
+ add r1, #0xf8
+ ldr r2, [r1]
+ add r1, r0, #0
+ add r1, #0xfc
+ str r2, [r1]
+ mov r1, #1
+ bl MOD28_02254F74
+_022550E0:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD28_022550C4
+
+ thumb_func_start MOD28_022550E4
+MOD28_022550E4: ; 0x022550E4
+ push {r3, lr}
+ add r1, #0x4c
+ ldrh r1, [r1]
+ cmp r1, #0
+ beq _0225510E
+ add r1, r0, #0
+ add r1, #0xe8
+ ldr r1, [r1]
+ add r2, r1, #1
+ add r1, r0, #0
+ add r1, #0xe8
+ str r2, [r1]
+ add r1, r0, #0
+ add r1, #0xe8
+ ldr r1, [r1]
+ cmp r1, #6
+ bls _02255126
+ mov r1, #2
+ bl MOD28_02254F74
+ pop {r3, pc}
+_0225510E:
+ add r1, r0, #0
+ add r1, #0xfc
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _02255120
+ mov r1, #0
+ bl MOD28_02254F74
+ pop {r3, pc}
+_02255120:
+ mov r1, #3
+ bl MOD28_02254F74
+_02255126:
+ pop {r3, pc}
+ thumb_func_end MOD28_022550E4
+
+ thumb_func_start MOD28_02255128
+MOD28_02255128: ; 0x02255128
+ push {r3, lr}
+ add r1, #0x4c
+ ldrh r1, [r1]
+ cmp r1, #0
+ bne _02255138
+ mov r1, #0
+ bl MOD28_02254F74
+_02255138:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD28_02255128
+
+ thumb_func_start MOD28_0225513C
+MOD28_0225513C: ; 0x0225513C
+ push {r3, lr}
+ add r1, #0x4e
+ ldrh r1, [r1]
+ cmp r1, #0
+ bne _02255166
+ add r1, r0, #0
+ add r1, #0xe8
+ ldr r1, [r1]
+ add r2, r1, #1
+ add r1, r0, #0
+ add r1, #0xe8
+ str r2, [r1]
+ add r1, r0, #0
+ add r1, #0xe8
+ ldr r1, [r1]
+ cmp r1, #6
+ bls _02255184
+ mov r1, #0
+ bl MOD28_02254F74
+ pop {r3, pc}
+_02255166:
+ add r1, r0, #0
+ add r1, #0xf8
+ ldr r1, [r1]
+ cmp r1, #0
+ beq _0225517E
+ add r2, r0, #0
+ mov r1, #1
+ add r2, #0xfc
+ str r1, [r2]
+ bl MOD28_02254F74
+ pop {r3, pc}
+_0225517E:
+ mov r1, #4
+ bl MOD28_02254F74
+_02255184:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD28_0225513C
+
+ thumb_func_start MOD28_02255188
+MOD28_02255188: ; 0x02255188
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ add r1, #0xe8
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _022551A8
+ bl MOD28_02255288
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ add r4, #0xe8
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_022551A8:
+ bl MOD28_022552C0
+ cmp r0, #0
+ beq _022551B8
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD28_02254F74
+_022551B8:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD28_02255188
+
+ thumb_func_start MOD28_022551BC
+MOD28_022551BC: ; 0x022551BC
+ push {r0, r1, r2, r3}
+ add sp, #0x10
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD28_022551BC
+
+ thumb_func_start MOD28_022551C4
+MOD28_022551C4: ; 0x022551C4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ str r0, [sp]
+ ldr r0, [r7]
+ mov r4, #0
+ cmp r0, #0
+ ble _02255212
+ ldr r5, [sp]
+_022551D4:
+ ldr r0, _0225521C ; =0x00000163
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _022551F4
+ ldr r0, _0225521C ; =0x00000163
+ ldr r2, _0225521C ; =0x00000163
+ ldrb r0, [r5, r0]
+ sub r1, r0, #1
+ ldr r0, _0225521C ; =0x00000163
+ strb r1, [r5, r0]
+ ldrb r2, [r5, r2]
+ ldr r0, _02255220 ; =0x02255F20
+ add r1, r4, #0
+ bl MOD28_022551BC
+ b _02255208
+_022551F4:
+ mov r3, #0x16
+ lsl r3, r3, #4
+ ldrb r3, [r5, r3]
+ ldr r0, [sp]
+ add r1, r7, #0
+ lsl r6, r3, #2
+ ldr r3, _02255224 ; =0x02255EA8
+ add r2, r4, #0
+ ldr r3, [r3, r6]
+ blx r3
+_02255208:
+ ldr r0, [r7]
+ add r4, r4, #1
+ add r5, #0x38
+ cmp r4, r0
+ blt _022551D4
+_02255212:
+ ldr r0, _02255228 ; =0x02255F34
+ bl MOD28_022551BC
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0225521C: .word 0x00000163
+_02255220: .word 0x02255F20
+_02255224: .word 0x02255EA8
+_02255228: .word 0x02255F34
+ thumb_func_end MOD28_022551C4
+
+ thumb_func_start MOD28_0225522C
+MOD28_0225522C: ; 0x0225522C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r7, r2, #0
+ mov r2, #0x38
+ add r4, r6, #0
+ mul r4, r2
+ add r5, r0, #0
+ mov r2, #0x16
+ add r3, r5, r4
+ lsl r2, r2, #4
+ ldrb r2, [r3, r2]
+ cmp r2, #3
+ bne _0225524A
+ bl MOD28_02255344
+_0225524A:
+ mov r0, #0x16
+ lsl r0, r0, #4
+ add r2, r5, r0
+ mov r3, #0x16
+ lsl r3, r3, #4
+ strb r7, [r2, r4]
+ mov r1, #0
+ add r0, r5, r4
+ add r3, #8
+ str r1, [r0, r3]
+ mov r3, #0x16
+ lsl r3, r3, #4
+ sub r3, #0xc
+ str r1, [r0, r3]
+ mov r3, #0x16
+ lsl r3, r3, #4
+ sub r3, #8
+ str r1, [r0, r3]
+ mov r3, #0x16
+ lsl r3, r3, #4
+ sub r3, r3, #4
+ str r1, [r0, r3]
+ ldrb r0, [r2, r4]
+ cmp r0, #3
+ bne _02255284
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD28_022552D4
+_02255284:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD28_0225522C
+
+ thumb_func_start MOD28_02255288
+MOD28_02255288: ; 0x02255288
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r6]
+ mov r4, #0
+ ldr r1, [r0]
+ cmp r1, #0
+ ble _022552B4
+ add r5, r6, #0
+ add r7, r4, #0
+_0225529A:
+ add r0, r6, #0
+ add r1, r4, #0
+ mov r2, #5
+ bl MOD28_0225522C
+ ldr r0, _022552BC ; =0x00000163
+ add r4, r4, #1
+ strb r7, [r5, r0]
+ ldr r0, [r6]
+ add r5, #0x38
+ ldr r1, [r0]
+ cmp r4, r1
+ blt _0225529A
+_022552B4:
+ mov r0, #1
+ lsl r0, r0, #8
+ str r1, [r6, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022552BC: .word 0x00000163
+ thumb_func_end MOD28_02255288
+
+ thumb_func_start MOD28_022552C0
+MOD28_022552C0: ; 0x022552C0
+ mov r1, #1
+ lsl r1, r1, #8
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ bne _022552CE
+ mov r0, #1
+ bx lr
+_022552CE:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD28_022552C0
+
+ thumb_func_start MOD28_022552D4
+MOD28_022552D4: ; 0x022552D4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0xc
+ add r7, r1, #0
+ mul r7, r0
+ ldr r0, [r5]
+ add r0, r0, r7
+ ldrb r0, [r0, #0xe]
+ cmp r0, #0
+ bne _02255314
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ add r4, r5, r0
+ mov r0, #0x38
+ add r6, r1, #0
+ mul r6, r0
+ ldr r0, [r5, #0x30]
+ ldr r1, [r4, r6]
+ mov r2, #0
+ bl MOD20_02253F80
+ ldr r1, [r5]
+ ldr r0, [r4, r6]
+ add r1, r1, r7
+ ldrb r1, [r1, #0xf]
+ sub r1, r1, #1
+ bl MOD20_02253F28
+ ldr r0, [r4, r6]
+ mov r1, #0
+ bl MOD20_02253F78
+_02255314:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD28_022552D4
+
+ thumb_func_start MOD28_02255318
+MOD28_02255318: ; 0x02255318
+ push {r3, r4, r5, lr}
+ mov r2, #0x4e
+ lsl r2, r2, #2
+ add r4, r0, r2
+ mov r2, #0x38
+ add r5, r1, #0
+ mul r5, r2
+ ldr r0, [r0, #0x30]
+ ldr r1, [r4, r5]
+ mov r2, #2
+ bl MOD20_02253F80
+ ldr r0, [r4, r5]
+ mov r1, #3
+ bl MOD20_02253F28
+ ldr r0, [r4, r5]
+ mov r1, #0
+ bl MOD20_02253F78
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD28_02255318
+
+ thumb_func_start MOD28_02255344
+MOD28_02255344: ; 0x02255344
+ mov r2, #0x38
+ mul r2, r1
+ add r1, r0, r2
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r3, _02255358 ; =0x02253F79
+ mov r1, #1
+ bx r3
+ nop
+_02255358: .word 0x02253F79
+ thumb_func_end MOD28_02255344
+
+ thumb_func_start MOD28_0225535C
+MOD28_0225535C: ; 0x0225535C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r6, r2, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ add r4, r1, #0
+ bl VEC_Mag
+ cmp r0, r5
+ ble _0225539A
+ add r1, r0, #0
+ mul r1, r4
+ add r0, r1, #0
+ mov r1, #0x64
+ bl _u32_div_f
+ add r4, r0, #0
+ add r0, r6, #0
+ add r1, sp, #0
+ bl VEC_Normalize
+ mov r0, #0
+ str r0, [r6]
+ str r0, [r6, #4]
+ str r0, [r6, #8]
+ add r0, r4, #0
+ add r1, sp, #0
+ add r2, r6, #0
+ add r3, r6, #0
+ bl VEC_MultAdd
+_0225539A:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD28_0225535C
+
+ thumb_func_start MOD28_022553A0
+MOD28_022553A0: ; 0x022553A0
+ ldr r1, [r0]
+ cmp r1, #0
+ bne _022553B0
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ bne _022553B0
+ mov r0, #1
+ bx lr
+_022553B0:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD28_022553A0
+
+ thumb_func_start MOD28_022553B4
+MOD28_022553B4: ; 0x022553B4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r4, r2, #0
+ add r6, r1, #0
+ ldr r0, _02255498 ; =0x02255F44
+ add r1, r4, #0
+ bl MOD28_022551BC
+ add r0, r6, #0
+ add r0, #0x4c
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _022553E6
+ mov r1, #0x60
+ add r2, r1, #0
+ add r2, #0xdc
+ add r3, r5, r2
+ mov r2, #0x38
+ mov r0, #3
+ mul r2, r4
+ lsl r0, r0, #8
+ add r2, r3, r2
+ bl MOD28_0225535C
+ pop {r3, r4, r5, r6, r7, pc}
+_022553E6:
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02255448
+ mov r1, #0xa1
+ mov r3, #0x52
+ lsl r1, r1, #2
+ lsl r3, r3, #2
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ add r7, r5, r3
+ mov r3, #0x38
+ mul r3, r4
+ ldr r1, [r5, r1]
+ mov r2, #0x30
+ add r3, r7, r3
+ bl MOD28_02255094
+ cmp r0, #0
+ beq _02255494
+ mov r0, #0xc
+ mul r0, r4
+ add r0, r6, r0
+ ldrb r0, [r0, #0xe]
+ cmp r0, #1
+ beq _02255432
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD28_0225522C
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD28_0225549C
+ pop {r3, r4, r5, r6, r7, pc}
+_02255432:
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #2
+ bl MOD28_0225522C
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD28_022555B4
+ pop {r3, r4, r5, r6, r7, pc}
+_02255448:
+ add r0, r5, #0
+ add r0, #0xec
+ ldr r0, [r0]
+ cmp r0, r4
+ bne _02255494
+ mov r1, #0xa1
+ mov r3, #0x52
+ lsl r1, r1, #2
+ lsl r3, r3, #2
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ add r7, r5, r3
+ mov r3, #0x38
+ mul r3, r4
+ ldr r1, [r5, r1]
+ mov r2, #8
+ add r3, r7, r3
+ bl MOD28_02255094
+ cmp r0, #0
+ beq _02255494
+ mov r0, #0xc
+ mul r0, r4
+ add r0, r6, r0
+ ldrb r0, [r0, #0xe]
+ cmp r0, #1
+ beq _0225548A
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #3
+ bl MOD28_0225522C
+ pop {r3, r4, r5, r6, r7, pc}
+_0225548A:
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #4
+ bl MOD28_0225522C
+_02255494:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255498: .word 0x02255F44
+ thumb_func_end MOD28_022553B4
+
+ thumb_func_start MOD28_0225549C
+MOD28_0225549C: ; 0x0225549C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r2, #0
+ add r6, r1, #0
+ ldr r0, _022555AC ; =0x02255F58
+ add r1, r4, #0
+ bl MOD28_022551BC
+ add r0, r6, #0
+ add r0, #0x4c
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _0225559C
+ mov r0, #0x52
+ lsl r0, r0, #2
+ add r7, r5, r0
+ mov r0, #0x38
+ mul r0, r4
+ mov r1, #0xa1
+ str r0, [sp]
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r3, [sp]
+ ldr r1, [r5, r1]
+ mov r2, #0x40
+ add r3, r7, r3
+ bl MOD28_02255094
+ cmp r0, #0
+ beq _0225559C
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022554F0
+ add r0, r5, #0
+ add r0, #0xec
+ ldr r0, [r0]
+ cmp r0, r4
+ bne _022555A6
+_022554F0:
+ mov r1, #0xa1
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r3, [sp]
+ ldr r1, [r5, r1]
+ mov r2, #8
+ add r3, r7, r3
+ bl MOD28_02255094
+ cmp r0, #0
+ beq _02255516
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #3
+ bl MOD28_0225522C
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_02255516:
+ mov r1, #0xa2
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ sub r1, r1, #4
+ ldr r1, [r5, r1]
+ lsl r0, r0, #0xc
+ lsl r1, r1, #0xc
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ ldr r1, [sp]
+ str r0, [sp, #0xc]
+ add r0, sp, #4
+ add r1, r7, r1
+ add r2, r0, #0
+ bl VEC_Subtract
+ add r0, sp, #4
+ add r1, r0, #0
+ bl VEC_Normalize
+ mov r0, #0xc
+ add r7, r4, #0
+ mul r7, r0
+ add r6, #0xf
+ ldrb r2, [r6, r7]
+ ldr r0, _022555B0 ; =0x02255E90
+ ldr r1, [sp, #4]
+ ldrb r0, [r0, r2]
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ str r0, [sp, #4]
+ ldrb r2, [r6, r7]
+ ldr r0, _022555B0 ; =0x02255E90
+ ldr r1, [sp, #8]
+ ldrb r0, [r0, r2]
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r2, [sp, #4]
+ str r0, [sp, #8]
+ asr r1, r2, #3
+ lsr r1, r1, #0x1c
+ add r1, r2, r1
+ asr r1, r1, #4
+ str r1, [sp, #4]
+ asr r1, r0, #3
+ lsr r1, r1, #0x1c
+ add r1, r0, r1
+ asr r0, r1, #4
+ str r0, [sp, #8]
+ mov r0, #0x38
+ mul r0, r4
+ add r1, r5, r0
+ mov r0, #0x4f
+ add r3, sp, #4
+ lsl r0, r0, #2
+ add r2, r1, r0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add sp, #0x10
+ str r0, [r2]
+ pop {r3, r4, r5, r6, r7, pc}
+_0225559C:
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD28_0225522C
+_022555A6:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022555AC: .word 0x02255F58
+_022555B0: .word 0x02255E90
+ thumb_func_end MOD28_0225549C
+
+ thumb_func_start MOD28_022555B4
+MOD28_022555B4: ; 0x022555B4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r6, r2, #0
+ add r4, r1, #0
+ ldr r0, _02255688 ; =0x02255F6C
+ add r1, r6, #0
+ bl MOD28_022551BC
+ add r0, r4, #0
+ add r0, #0x4c
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _0225567A
+ mov r0, #0x52
+ lsl r0, r0, #2
+ add r7, r5, r0
+ mov r0, #0x38
+ mul r0, r6
+ mov r1, #0xa1
+ str r0, [sp]
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r3, [sp]
+ ldr r1, [r5, r1]
+ mov r2, #0x40
+ add r3, r7, r3
+ bl MOD28_02255094
+ cmp r0, #0
+ beq _0225567A
+ mov r1, #0xa2
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ sub r1, r1, #4
+ ldr r1, [r5, r1]
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ mov r0, #0
+ lsl r1, r1, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [sp]
+ str r1, [sp, #4]
+ add r1, sp, #4
+ add r0, r7, r0
+ add r2, r1, #0
+ bl VEC_Subtract
+ add r0, sp, #4
+ add r1, r0, #0
+ bl VEC_Normalize
+ mov r0, #0xc
+ add r7, r6, #0
+ mul r7, r0
+ add r4, #0xf
+ ldrb r2, [r4, r7]
+ ldr r0, _0225568C ; =0x02255E8C
+ ldr r1, [sp, #4]
+ ldrb r0, [r0, r2]
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ str r0, [sp, #4]
+ ldrb r2, [r4, r7]
+ ldr r0, _0225568C ; =0x02255E8C
+ ldr r1, [sp, #8]
+ ldrb r0, [r0, r2]
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r2, [sp, #4]
+ str r0, [sp, #8]
+ asr r1, r2, #3
+ lsr r1, r1, #0x1c
+ add r1, r2, r1
+ asr r1, r1, #4
+ str r1, [sp, #4]
+ asr r1, r0, #3
+ lsr r1, r1, #0x1c
+ add r1, r0, r1
+ asr r0, r1, #4
+ str r0, [sp, #8]
+ mov r0, #0x38
+ mul r0, r6
+ add r1, r5, r0
+ mov r0, #0x4f
+ add r3, sp, #4
+ lsl r0, r0, #2
+ add r2, r1, r0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add sp, #0x10
+ str r0, [r2]
+ pop {r3, r4, r5, r6, r7, pc}
+_0225567A:
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0
+ bl MOD28_0225522C
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02255688: .word 0x02255F6C
+_0225568C: .word 0x02255E8C
+ thumb_func_end MOD28_022555B4
+
+ thumb_func_start MOD28_02255690
+MOD28_02255690: ; 0x02255690
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r7, r2, #0
+ add r4, r1, #0
+ ldr r0, _02255764 ; =0x02255F80
+ add r1, r7, #0
+ bl MOD28_022551BC
+ add r4, #0x4c
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _02255756
+ mov r1, #0xa2
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ add r4, r7, #0
+ lsl r2, r0, #0xc
+ sub r0, r1, #4
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0xc
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #0x38
+ mul r4, r0
+ mov r0, #0x52
+ lsl r0, r0, #2
+ add r6, r5, r0
+ str r2, [sp, #4]
+ sub r0, r1, #4
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ mov r2, #8
+ add r3, r6, r4
+ bl MOD28_02255094
+ cmp r0, #0
+ beq _02255732
+ add r0, sp, #0
+ add r1, r6, r4
+ add r2, r0, #0
+ bl VEC_Subtract
+ add r0, sp, #0
+ bl VEC_Mag
+ mov r1, #6
+ lsl r1, r1, #8
+ cmp r0, r1
+ ble _02255704
+ add r0, sp, #0
+ add r1, r0, #0
+ bl VEC_Normalize
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+_02255704:
+ ldr r1, [sp]
+ add r3, sp, #0
+ asr r0, r1, #3
+ lsr r0, r0, #0x1c
+ add r0, r1, r0
+ asr r0, r0, #4
+ ldr r1, [sp, #4]
+ str r0, [sp]
+ asr r0, r1, #3
+ lsr r0, r0, #0x1c
+ add r0, r1, r0
+ asr r0, r0, #4
+ str r0, [sp, #4]
+ mov r0, #0x4f
+ add r1, r5, r4
+ lsl r0, r0, #2
+ add r2, r1, r0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add sp, #0xc
+ str r0, [r2]
+ pop {r4, r5, r6, r7, pc}
+_02255732:
+ mov r1, #0xa1
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x40
+ add r3, r6, r4
+ bl MOD28_02255094
+ cmp r0, #0
+ beq _02255756
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #1
+ bl MOD28_0225522C
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_02255756:
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #0
+ bl MOD28_0225522C
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02255764: .word 0x02255F80
+ thumb_func_end MOD28_02255690
+
+ thumb_func_start MOD28_02255768
+MOD28_02255768: ; 0x02255768
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r2, #0
+ add r4, r1, #0
+ ldr r0, _02255808 ; =0x02255F94
+ add r1, r7, #0
+ bl MOD28_022551BC
+ add r4, #0x4c
+ ldrh r0, [r4]
+ cmp r0, #0
+ beq _022557D8
+ mov r0, #0x38
+ add r4, r7, #0
+ mul r4, r0
+ mov r0, #0x52
+ mov r1, #0xa1
+ lsl r0, r0, #2
+ add r6, r5, r0
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #8
+ add r3, r6, r4
+ bl MOD28_02255094
+ cmp r0, #0
+ beq _022557B6
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ mov r3, #0
+ add r2, r5, r4
+ str r3, [r2, r1]
+ add r0, r1, #4
+ str r3, [r2, r0]
+ add r1, #8
+ str r3, [r2, r1]
+ pop {r3, r4, r5, r6, r7, pc}
+_022557B6:
+ mov r1, #0xa1
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ add r1, r1, #4
+ ldr r1, [r5, r1]
+ mov r2, #0x40
+ add r3, r6, r4
+ bl MOD28_02255094
+ cmp r0, #0
+ beq _022557FA
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #2
+ bl MOD28_0225522C
+ pop {r3, r4, r5, r6, r7, pc}
+_022557D8:
+ mov r0, #0x38
+ add r4, r7, #0
+ mul r4, r0
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r0, r0, r4
+ bl MOD28_022553A0
+ cmp r0, #0
+ beq _022557FA
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r0, r0, r4
+ bl MOD28_02254E54
+_022557FA:
+ add r0, r5, #0
+ add r1, r7, #0
+ mov r2, #0
+ bl MOD28_0225522C
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255808: .word 0x02255F94
+ thumb_func_end MOD28_02255768
+
+ thumb_func_start MOD28_0225580C
+MOD28_0225580C: ; 0x0225580C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ add r1, r5, r0
+ add r6, r2, #0
+ mov r0, #0x38
+ mul r0, r6
+ add r4, r1, r0
+ ldr r0, _02255918 ; =0x02255FA8
+ add r1, r6, #0
+ bl MOD28_022551BC
+ add r0, r4, #0
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02255836
+ cmp r0, #1
+ beq _0225585A
+ pop {r4, r5, r6, pc}
+_02255836:
+ mov r0, #0
+ str r0, [r4, #8]
+ str r0, [r4, #0xc]
+ str r0, [r4, #0x10]
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD28_02255318
+ ldr r0, _0225591C ; =0x00000669
+ bl MOD20_02252B28
+ add r0, r4, #0
+ add r0, #0x34
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x34
+ strb r1, [r0]
+_0225585A:
+ add r0, r4, #0
+ add r0, #0x35
+ ldrb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x35
+ add r1, #8
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x36
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0225588C
+ add r0, r4, #0
+ add r0, #0x35
+ ldrb r0, [r0]
+ cmp r0, #0x8c
+ bls _0225588C
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD28_02255344
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x36
+ strb r1, [r0]
+_0225588C:
+ add r0, r4, #0
+ add r0, #0x35
+ ldrb r0, [r0]
+ cmp r0, #0xb4
+ bls _022558A6
+ add r0, r4, #0
+ mov r1, #0xb4
+ add r0, #0x35
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x36
+ strb r1, [r0]
+_022558A6:
+ add r0, r4, #0
+ add r0, #0x35
+ ldrb r0, [r0]
+ bl FUN_0201B93C
+ mov r1, #0x13
+ mvn r1, r1
+ mul r1, r0
+ mov r0, #0
+ str r0, [r4, #0x20]
+ str r1, [r4, #0x24]
+ str r0, [r4, #0x28]
+ add r0, r4, #0
+ add r1, r4, #0
+ add r2, r5, #0
+ add r0, #0x14
+ add r1, #0x20
+ add r2, #0xa4
+ bl VEC_Add
+ add r1, r5, #0
+ add r2, r5, #0
+ add r1, #0xa4
+ add r2, #0xa8
+ ldr r0, [r4]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl MOD20_02253F64
+ mov r2, #2
+ ldr r3, [r4, #0x18]
+ lsl r2, r2, #0xe
+ ldr r0, [r4, #4]
+ ldr r1, [r4, #0x14]
+ add r2, r3, r2
+ bl MOD20_02253F64
+ add r0, r4, #0
+ add r0, #0x36
+ ldrb r0, [r0]
+ cmp r0, #2
+ bne _02255916
+ add r4, #8
+ add r0, r4, #0
+ bl MOD28_02254E54
+ add r0, r5, #0
+ add r1, r6, #0
+ mov r2, #0
+ bl MOD28_0225522C
+ mov r0, #1
+ lsl r0, r0, #8
+ ldr r1, [r5, r0]
+ sub r1, r1, #1
+ str r1, [r5, r0]
+_02255916:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02255918: .word 0x02255FA8
+_0225591C: .word 0x00000669
+ thumb_func_end MOD28_0225580C
+
+ thumb_func_start MOD28_02255920
+MOD28_02255920: ; 0x02255920
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x74
+ str r0, [sp]
+ mov r0, #1
+ lsl r0, r0, #0x10
+ str r1, [sp, #4]
+ str r0, [sp, #0x34]
+_0225592E:
+ mov r0, #0
+ str r0, [sp, #0x28]
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #4]
+ ldr r4, [sp, #0x34]
+ ldr r0, [r0]
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ ble _02255974
+ mov r1, #0x52
+ ldr r5, [sp]
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ add r7, r0, r1
+ sub r1, #0xc
+ add r5, #0x5c
+ add r6, r0, r1
+_02255950:
+ ldr r0, [sp, #0x34]
+ add r1, r6, #0
+ add r2, r7, #0
+ add r3, r5, #0
+ bl VEC_MultAdd
+ ldr r0, [sp, #0x24]
+ add r5, #0xc
+ add r0, r0, #1
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #0x24]
+ ldr r0, [r0]
+ add r7, #0x38
+ add r6, #0x38
+ str r0, [sp, #0x10]
+ cmp r1, r0
+ blt _02255950
+_02255974:
+ ldr r0, [sp, #0x10]
+ mov r5, #0
+ cmp r0, #0
+ ble _02255A3E
+ ldr r0, [sp]
+ str r0, [sp, #0x14]
+ add r6, r0, #0
+_02255982:
+ ldr r0, [sp, #0x14]
+ ldr r7, [r0, #0x5c]
+ ldr r0, _02255CB8 ; =0xFFFF6000
+ cmp r7, r0
+ bge _022559AE
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r1, [r6, r0]
+ cmp r1, #0
+ beq _022559AE
+ mov r0, #0xa
+ lsl r0, r0, #0xc
+ add r0, r7, r0
+ bl _s32_div_f
+ sub r1, r4, r0
+ cmp r1, r4
+ bge _022559AE
+ mov r0, #2
+ str r0, [sp, #0x28]
+ str r5, [sp, #0x30]
+ add r4, r1, #0
+_022559AE:
+ mov r0, #0xd9
+ lsl r0, r0, #0xc
+ cmp r7, r0
+ ble _022559D8
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r1, [r6, r0]
+ cmp r1, #0
+ beq _022559D8
+ mov r0, #0xd9
+ lsl r0, r0, #0xc
+ sub r0, r7, r0
+ bl _s32_div_f
+ sub r1, r4, r0
+ cmp r1, r4
+ bge _022559D8
+ mov r0, #3
+ str r0, [sp, #0x28]
+ str r5, [sp, #0x30]
+ add r4, r1, #0
+_022559D8:
+ ldr r0, [sp, #0x14]
+ ldr r7, [r0, #0x60]
+ ldr r0, _02255CBC ; =0xFFFEA000
+ cmp r7, r0
+ bge _02255A04
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r1, [r6, r0]
+ cmp r1, #0
+ beq _02255A04
+ mov r0, #0x16
+ lsl r0, r0, #0xc
+ add r0, r7, r0
+ bl _s32_div_f
+ sub r1, r4, r0
+ cmp r1, r4
+ bge _02255A04
+ mov r0, #4
+ str r0, [sp, #0x28]
+ str r5, [sp, #0x30]
+ add r4, r1, #0
+_02255A04:
+ mov r0, #0xb7
+ lsl r0, r0, #0xc
+ cmp r7, r0
+ ble _02255A2E
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r1, [r6, r0]
+ cmp r1, #0
+ beq _02255A2E
+ mov r0, #0xb7
+ lsl r0, r0, #0xc
+ sub r0, r7, r0
+ bl _s32_div_f
+ sub r1, r4, r0
+ cmp r1, r4
+ bge _02255A2E
+ mov r0, #5
+ str r0, [sp, #0x28]
+ str r5, [sp, #0x30]
+ add r4, r1, #0
+_02255A2E:
+ ldr r0, [sp, #0x14]
+ add r5, r5, #1
+ add r0, #0xc
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ add r6, #0x38
+ cmp r5, r0
+ blt _02255982
+_02255A3E:
+ mov r0, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ ble _02255AEE
+ ldr r0, [sp]
+ mov r1, #0x4f
+ str r0, [sp, #0x1c]
+ add r0, #0x5c
+ str r0, [sp, #0x1c]
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ add r0, r0, r1
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ str r0, [sp, #0x38]
+ ldr r0, [sp, #0x18]
+ str r0, [sp, #0x3c]
+_02255A62:
+ ldr r0, [sp, #0x20]
+ mov r5, #0
+ cmp r0, #0
+ ble _02255AD0
+ ldr r7, [sp, #0x38]
+ ldr r6, [sp, #0x3c]
+_02255A6E:
+ ldr r1, [sp, #0x1c]
+ add r0, r7, #0
+ add r2, sp, #0x68
+ bl VEC_Subtract
+ add r0, sp, #0x68
+ bl VEC_Mag
+ mov r1, #2
+ lsl r1, r1, #0x10
+ str r0, [sp, #0x40]
+ cmp r0, r1
+ bge _02255AC4
+ add r0, sp, #0x68
+ add r1, sp, #0x5c
+ bl VEC_Normalize
+ ldr r1, [sp, #0x18]
+ add r0, r6, #0
+ add r2, sp, #0x50
+ bl VEC_Subtract
+ add r0, sp, #0x50
+ add r1, sp, #0x5c
+ bl VEC_DotProduct
+ add r2, r0, #0
+ mov r1, #2
+ ldr r0, [sp, #0x40]
+ lsl r1, r1, #0x10
+ sub r0, r1, r0
+ neg r1, r2
+ bl _s32_div_f
+ sub r0, r4, r0
+ cmp r0, r4
+ bge _02255AC4
+ mov r1, #1
+ str r1, [sp, #0x28]
+ ldr r1, [sp, #0x20]
+ str r5, [sp, #0x30]
+ str r1, [sp, #0x2c]
+ add r4, r0, #0
+_02255AC4:
+ ldr r0, [sp, #0x20]
+ add r5, r5, #1
+ add r7, #0xc
+ add r6, #0x38
+ cmp r5, r0
+ blt _02255A6E
+_02255AD0:
+ ldr r0, [sp, #0x1c]
+ add r0, #0xc
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r0, #0x38
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #1
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #0x20]
+ ldr r0, [r0]
+ str r0, [sp, #0x10]
+ cmp r1, r0
+ blt _02255A62
+_02255AEE:
+ cmp r4, #0
+ bgt _02255AF4
+ b _02255DC8
+_02255AF4:
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ ble _02255B2E
+ mov r1, #0x52
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ add r7, r0, r1
+ sub r1, #0xc
+ add r6, r7, #0
+ add r5, r0, r1
+_02255B0C:
+ add r0, r4, #0
+ add r1, r5, #0
+ add r2, r6, #0
+ add r3, r7, #0
+ bl VEC_MultAdd
+ ldr r0, [sp, #8]
+ add r7, #0x38
+ add r0, r0, #1
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ add r6, #0x38
+ ldr r1, [r0]
+ ldr r0, [sp, #8]
+ add r5, #0x38
+ cmp r0, r1
+ blt _02255B0C
+_02255B2E:
+ ldr r0, [sp, #0x28]
+ cmp r0, #5
+ bls _02255B36
+ b _02255DBA
+_02255B36:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02255B42: ; jump table
+ .short _02255DBA - _02255B42 - 2 ; case 0
+ .short _02255B4E - _02255B42 - 2 ; case 1
+ .short _02255D7C - _02255B42 - 2 ; case 2
+ .short _02255D7C - _02255B42 - 2 ; case 3
+ .short _02255D9C - _02255B42 - 2 ; case 4
+ .short _02255D9C - _02255B42 - 2 ; case 5
+_02255B4E:
+ ldr r1, [sp, #0x30]
+ mov r0, #0x38
+ add r6, r1, #0
+ ldr r1, [sp]
+ mul r6, r0
+ add r1, r1, r6
+ str r1, [sp, #0xc]
+ mov r1, #0x16
+ ldr r2, [sp, #0xc]
+ lsl r1, r1, #4
+ ldrb r2, [r2, r1]
+ cmp r2, #3
+ bne _02255C1C
+ ldr r2, [sp, #0x2c]
+ sub r1, #0x24
+ add r7, r2, #0
+ mul r7, r0
+ ldr r0, [sp]
+ add r0, r0, r1
+ add r5, r0, r7
+ ldr r0, [r0, r7]
+ cmp r0, #0
+ bne _02255B82
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _02255B8E
+_02255B82:
+ ldr r0, [sp]
+ ldr r1, _02255CC0 ; =0x00000166
+ add r0, r0, r7
+ ldrb r1, [r0, r1]
+ cmp r1, #0
+ beq _02255C02
+_02255B8E:
+ mov r1, #0x52
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ add r1, r0, r1
+ add r0, r1, r7
+ add r1, r1, r6
+ add r2, sp, #0x68
+ bl VEC_Subtract
+ add r0, sp, #0x68
+ add r1, sp, #0x5c
+ bl VEC_Normalize
+ ldr r0, [sp, #0x5c]
+ ldr r2, _02255CC4 ; =0x0000019A
+ asr r1, r0, #0x1f
+ mov r3, #0
+ bl _ll_mul
+ add r2, r0, #0
+ mov r0, #2
+ mov r3, #0
+ lsl r0, r0, #0xa
+ add r0, r2, r0
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ str r0, [r5]
+ ldr r0, [sp, #0x60]
+ ldr r2, _02255CC4 ; =0x0000019A
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ add r2, r0, #0
+ mov r0, #2
+ mov r3, #0
+ lsl r0, r0, #0xa
+ add r0, r2, r0
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ str r0, [r5, #4]
+ ldr r0, [sp]
+ ldr r1, _02255CC0 ; =0x00000166
+ add r0, r0, r7
+ mov r2, #1
+ strb r2, [r0, r1]
+ ldr r1, [sp, #0x30]
+ cmp r1, #1
+ bne _02255BFC
+ ldr r1, [sp, #0x2c]
+ cmp r1, #2
+ beq _02255C14
+_02255BFC:
+ ldr r1, [sp, #0x2c]
+ cmp r1, #1
+ b _02255C14
+_02255C02:
+ ldr r2, [r5]
+ mov r1, #0
+ mvn r1, r1
+ add r3, r2, #0
+ mul r3, r1
+ str r3, [r5]
+ ldr r2, [r5, #4]
+ mul r1, r2
+ str r1, [r5, #4]
+_02255C14:
+ ldr r1, _02255CC8 ; =0x00000163
+ mov r2, #0x14
+ strb r2, [r0, r1]
+ b _02255DBA
+_02255C1C:
+ ldr r2, [sp, #0x2c]
+ add r7, r2, #0
+ mul r7, r0
+ ldr r0, [sp]
+ add r0, r0, r7
+ ldrb r0, [r0, r1]
+ cmp r0, #3
+ bne _02255CE8
+ ldr r0, [sp]
+ sub r1, #0x24
+ add r0, r0, r1
+ add r5, r0, r6
+ ldr r0, [r0, r6]
+ cmp r0, #0
+ bne _02255C40
+ ldr r0, [r5, #4]
+ cmp r0, #0
+ beq _02255C4A
+_02255C40:
+ ldr r1, _02255CC0 ; =0x00000166
+ ldr r0, [sp, #0xc]
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ beq _02255CCC
+_02255C4A:
+ mov r1, #0x52
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ add r1, r0, r1
+ add r0, r1, r6
+ add r1, r1, r7
+ add r2, sp, #0x68
+ bl VEC_Subtract
+ add r0, sp, #0x68
+ add r1, sp, #0x5c
+ bl VEC_Normalize
+ ldr r0, [sp, #0x5c]
+ ldr r2, _02255CC4 ; =0x0000019A
+ asr r1, r0, #0x1f
+ mov r3, #0
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ str r1, [r5]
+ ldr r0, [sp, #0x60]
+ ldr r2, _02255CC4 ; =0x0000019A
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ str r1, [r5, #4]
+ ldr r1, _02255CC0 ; =0x00000166
+ ldr r0, [sp, #0xc]
+ mov r2, #1
+ strb r2, [r0, r1]
+ ldr r0, [sp, #0x30]
+ cmp r0, #1
+ bne _02255CB2
+ ldr r0, [sp, #0x2c]
+ cmp r0, #2
+ beq _02255CDE
+_02255CB2:
+ ldr r0, [sp, #0x2c]
+ cmp r0, #1
+ b _02255CDE
+ .align 2, 0
+_02255CB8: .word 0xFFFF6000
+_02255CBC: .word 0xFFFEA000
+_02255CC0: .word 0x00000166
+_02255CC4: .word 0x0000019A
+_02255CC8: .word 0x00000163
+_02255CCC:
+ ldr r1, [r5]
+ mov r0, #0
+ mvn r0, r0
+ add r2, r1, #0
+ mul r2, r0
+ str r2, [r5]
+ ldr r1, [r5, #4]
+ mul r0, r1
+ str r0, [r5, #4]
+_02255CDE:
+ ldr r1, _02255E74 ; =0x00000163
+ ldr r0, [sp, #0xc]
+ mov r2, #0x14
+ strb r2, [r0, r1]
+ b _02255DBA
+_02255CE8:
+ ldr r0, [sp]
+ sub r1, #0x18
+ add r1, r0, r1
+ add r0, r1, r6
+ add r1, r1, r7
+ add r2, sp, #0x68
+ bl VEC_Subtract
+ add r0, sp, #0x68
+ bl VEC_Mag
+ add r0, sp, #0x68
+ add r1, sp, #0x5c
+ bl VEC_Normalize
+ mov r1, #0x4f
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ add r0, r0, r1
+ str r0, [sp, #0x4c]
+ ldr r1, [sp, #0x4c]
+ add r0, r0, r6
+ add r1, r1, r7
+ add r2, sp, #0x50
+ bl VEC_Subtract
+ add r0, sp, #0x50
+ add r1, sp, #0x5c
+ bl VEC_DotProduct
+ mov r5, #0x4f
+ ldr r2, [sp, #0x4c]
+ str r0, [sp, #0x44]
+ ldr r3, [sp]
+ lsl r5, r5, #2
+ add r3, r3, r5
+ neg r0, r0
+ add r1, sp, #0x5c
+ add r2, r2, r6
+ add r3, r3, r6
+ bl VEC_MultAdd
+ ldr r3, [sp]
+ ldr r2, [sp, #0x4c]
+ add r3, r3, r5
+ ldr r0, [sp, #0x44]
+ add r1, sp, #0x5c
+ add r2, r2, r7
+ add r3, r3, r7
+ bl VEC_MultAdd
+ ldr r0, [sp]
+ add r1, r5, #0
+ ldr r3, [sp]
+ add r1, #0x27
+ add r0, r0, r6
+ mov r2, #0x14
+ strb r2, [r0, r1]
+ add r3, r3, r7
+ strb r2, [r3, r1]
+ mov r2, #0
+ add r5, r1, #3
+ strb r2, [r0, r5]
+ add r0, r5, #0
+ strb r2, [r3, r0]
+ ldr r0, [sp, #0x30]
+ cmp r0, #1
+ bne _02255D76
+ ldr r0, [sp, #0x2c]
+ cmp r0, #2
+ beq _02255DBA
+_02255D76:
+ ldr r0, [sp, #0x2c]
+ cmp r0, #1
+ b _02255DBA
+_02255D7C:
+ ldr r0, [sp, #0x30]
+ mov r1, #0x38
+ add r2, r0, #0
+ mul r2, r1
+ ldr r0, [sp]
+ sub r1, #0x39
+ add r0, r0, r2
+ mov r2, #0x4f
+ lsl r2, r2, #2
+ ldr r3, [r0, r2]
+ mul r1, r3
+ str r1, [r0, r2]
+ mov r1, #0
+ add r2, #0x2a
+ strb r1, [r0, r2]
+ b _02255DBA
+_02255D9C:
+ ldr r0, [sp, #0x30]
+ mov r1, #0x38
+ add r2, r0, #0
+ mul r2, r1
+ ldr r0, [sp]
+ sub r1, #0x39
+ add r0, r0, r2
+ mov r2, #5
+ lsl r2, r2, #6
+ ldr r3, [r0, r2]
+ mul r1, r3
+ str r1, [r0, r2]
+ mov r1, #0
+ add r2, #0x26
+ strb r1, [r0, r2]
+_02255DBA:
+ ldr r0, [sp, #0x34]
+ sub r0, r0, r4
+ str r0, [sp, #0x34]
+ ldr r0, [sp, #0x28]
+ cmp r0, #0
+ beq _02255DC8
+ b _0225592E
+_02255DC8:
+ ldr r0, [sp, #4]
+ mov r5, #0
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _02255E6E
+ ldr r4, [sp]
+ mov r1, #0x55
+ add r0, r4, #0
+ lsl r1, r1, #2
+ add r7, r0, r1
+ sub r1, #0xc
+ add r6, r0, r1
+ str r0, [sp, #0x48]
+ add r0, #0xa4
+ str r0, [sp, #0x48]
+_02255DE6:
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldrb r0, [r4, r0]
+ cmp r0, #3
+ bhs _02255E22
+ mov r0, #0x59
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ beq _02255E08
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #6
+ bl MOD20_02253F28
+ b _02255E22
+_02255E08:
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ ble _02255E16
+ mov r1, #7
+ b _02255E18
+_02255E16:
+ mov r1, #6
+_02255E18:
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD20_02253F28
+_02255E22:
+ ldr r2, [sp, #0x48]
+ add r0, r6, #0
+ add r1, r7, #0
+ bl VEC_Add
+ ldr r1, [sp]
+ ldr r2, [sp]
+ mov r0, #0x4d
+ lsl r0, r0, #2
+ add r1, #0xa4
+ add r2, #0xa8
+ ldr r0, [r4, r0]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl MOD20_02253F64
+ mov r2, #0x53
+ mov r0, #0x4e
+ mov r1, #0x52
+ lsl r2, r2, #2
+ lsl r0, r0, #2
+ lsl r1, r1, #2
+ ldr r3, [r4, r2]
+ mov r2, #2
+ lsl r2, r2, #0xe
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ add r2, r3, r2
+ bl MOD20_02253F64
+ ldr r0, [sp, #4]
+ add r5, r5, #1
+ ldr r0, [r0]
+ add r4, #0x38
+ add r7, #0x38
+ add r6, #0x38
+ cmp r5, r0
+ blt _02255DE6
+_02255E6E:
+ add sp, #0x74
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02255E74: .word 0x00000163
+ thumb_func_end MOD28_02255920
+
+ .section .rodata
+ ; 0x02255E78
+ .incbin "baserom.nds", 0x28C038, 0xa0
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_28.SINIT_START
+ .global SDK_OVERLAY.MODULE_28.SINIT_END
+SDK_OVERLAY.MODULE_28.SINIT_START:
+ .word MOD28_02254840
+ .word 0
+SDK_OVERLAY.MODULE_28.SINIT_END:
+
+ .section .data
+ ; 0x02255F20
+ .incbin "baserom.nds", 0x28C0E0, 0xa0
diff --git a/arm9/modules/29/asm/module_29.s b/arm9/modules/29/asm/module_29.s
new file mode 100644
index 00000000..65873dcc
--- /dev/null
+++ b/arm9/modules/29/asm/module_29.s
@@ -0,0 +1,1134 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD29_02254840
+MOD29_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD29_02254854
+ ldr r1, _02254850 ; =MOD29_02254914
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD29_02254854
+_02254850: .word MOD29_02254914
+ thumb_func_end MOD29_02254840
+
+ thumb_func_start MOD29_02254854
+MOD29_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x54
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD29_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD29_022548E0
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD29_022548E0
+ thumb_func_end MOD29_02254854
+
+ thumb_func_start MOD29_0225489C
+MOD29_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x48
+ add r1, r5, #4
+ bl MOD29_02254BC0
+ cmp r0, #0
+ beq _022548BE
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r0, [r5, #0x50]
+ str r4, [r5, #0x4c]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548BE:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD29_0225489C
+
+ thumb_func_start MOD29_022548C4
+MOD29_022548C4: ; 0x022548C4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x50]
+ cmp r0, #0
+ beq _022548D2
+ bl FUN_02016A18
+_022548D2:
+ ldr r0, [r4, #0x48]
+ bl MOD29_02254C84
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD29_022548C4
+
+ thumb_func_start MOD29_022548E0
+MOD29_022548E0: ; 0x022548E0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _0225490C
+ lsl r2, r1, #2
+ ldr r1, _02254910 ; =0x0225509C
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225490C
+ add r0, r4, #0
+ bl MOD29_022548C4
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x4c]
+ bl MOD20_022529A0
+_0225490C:
+ pop {r3, r4, r5, pc}
+ nop
+_02254910: .word 0x0225509C
+ thumb_func_end MOD29_022548E0
+
+ thumb_func_start MOD29_02254914
+MOD29_02254914: ; 0x02254914
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD29_02254914
+
+ thumb_func_start MOD29_0225491C
+MOD29_0225491C: ; 0x0225491C
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254924
+ b _02254926
+_02254924:
+ mov r1, #2
+_02254926:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD29_0225491C
+
+ thumb_func_start MOD29_02254930
+MOD29_02254930: ; 0x02254930
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254940
+ cmp r0, #1
+ beq _02254950
+ b _0225496A
+_02254940:
+ ldr r0, [r4, #0x48]
+ mov r1, #0
+ bl MOD29_02254CC0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225496A
+_02254950:
+ ldr r0, [r4, #0x48]
+ mov r1, #0
+ bl MOD29_02254CE4
+ cmp r0, #0
+ beq _0225496A
+ ldr r0, [r4, #0x4c]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD29_0225491C
+_0225496A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD29_02254930
+
+ thumb_func_start MOD29_02254970
+MOD29_02254970: ; 0x02254970
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254990
+ ldr r0, [r4, #0x48]
+ bl MOD29_0225508C
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD29_0225491C
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_02254990:
+ ldrb r1, [r4, #1]
+ cmp r1, #3
+ bhi _02254A5A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022549A2: ; jump table
+ .short _022549AA - _022549A2 - 2 ; case 0
+ .short _022549D4 - _022549A2 - 2 ; case 1
+ .short _02254A2A - _022549A2 - 2 ; case 2
+ .short _02254A3C - _022549A2 - 2 ; case 3
+_022549AA:
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD29_02254A64
+ cmp r0, #0
+ beq _02254A5A
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ add r0, r4, #0
+ bl MOD29_02254AA8
+ ldr r0, _02254A60 ; =0x00000668
+ bl MOD20_02252B28
+ ldr r0, [r4, #0x48]
+ mov r1, #2
+ bl MOD29_02254CC0
+ mov r0, #1
+ strb r0, [r4, #1]
+ b _02254A5A
+_022549D4:
+ ldr r0, [r4, #0x48]
+ mov r1, #2
+ bl MOD29_02254CE4
+ cmp r0, #0
+ beq _022549E6
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254A5A
+_022549E6:
+ ldr r0, [r4, #0x4c]
+ bl MOD20_02252C30
+ cmp r0, #1
+ beq _022549FA
+ ldr r0, [r4, #0x4c]
+ bl MOD20_02252C08
+ cmp r0, #0
+ beq _02254A06
+_022549FA:
+ ldr r0, [r4, #0x48]
+ bl MOD29_0225508C
+ mov r0, #2
+ strb r0, [r4, #1]
+ b _02254A5A
+_02254A06:
+ add r0, r4, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD29_02254A64
+ cmp r0, #0
+ beq _02254A5A
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ add r0, r4, #0
+ bl MOD29_02254AA8
+ ldr r0, [r4, #0x48]
+ bl MOD29_0225508C
+ mov r0, #3
+ strb r0, [r4, #1]
+ b _02254A5A
+_02254A2A:
+ ldr r0, [r4, #0x48]
+ mov r1, #2
+ bl MOD29_02254CE4
+ cmp r0, #0
+ beq _02254A5A
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254A5A
+_02254A3C:
+ ldr r0, [r4, #0x48]
+ mov r1, #2
+ bl MOD29_02254CE4
+ cmp r0, #0
+ beq _02254A5A
+ ldr r0, _02254A60 ; =0x00000668
+ bl MOD20_02252B28
+ ldr r0, [r4, #0x48]
+ mov r1, #2
+ bl MOD29_02254CC0
+ mov r0, #1
+ strb r0, [r4, #1]
+_02254A5A:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_02254A60: .word 0x00000668
+ thumb_func_end MOD29_02254970
+
+ thumb_func_start MOD29_02254A64
+MOD29_02254A64: ; 0x02254A64
+ push {r3, r4, r5, lr}
+ ldr r0, [r0, #0x4c]
+ add r5, r1, #0
+ add r4, r2, #0
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02254AA4
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02020ACC
+ cmp r0, #0
+ beq _02254AA4
+ ldr r0, [r5]
+ sub r0, #0x18
+ cmp r0, #0xb0
+ bhs _02254A8C
+ mov r1, #1
+ b _02254A8E
+_02254A8C:
+ mov r1, #0
+_02254A8E:
+ ldr r0, [r4]
+ sub r0, #0x18
+ cmp r0, #0x90
+ bhs _02254A9A
+ mov r0, #1
+ b _02254A9C
+_02254A9A:
+ mov r0, #0
+_02254A9C:
+ tst r0, r1
+ beq _02254AA4
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_02254AA4:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD29_02254A64
+
+ thumb_func_start MOD29_02254AA8
+MOD29_02254AA8: ; 0x02254AA8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r0, [r5, #0x4c]
+ add r7, r1, #0
+ str r2, [sp]
+ bl MOD20_02252C38
+ mov r1, #8
+ bl FUN_02039754
+ str r0, [sp, #4]
+ add r4, r5, #4
+ mov r1, #0
+ str r1, [r4, #8]
+ ldr r0, [sp]
+ str r7, [r5, #4]
+ str r0, [r4, #4]
+ ldr r0, [sp, #4]
+ str r1, [r4, #0xc]
+ cmp r0, #0
+ beq _02254B66
+ ldrb r0, [r0, #4]
+ cmp r0, #0xff
+ beq _02254B60
+ add r6, r4, #0
+ ldr r5, [sp, #4]
+ add r6, #0xc
+_02254AE0:
+ ldrh r0, [r5]
+ ldrh r1, [r5, #2]
+ add r2, sp, #0xc
+ add r3, sp, #8
+ bl MOD29_02254B70
+ ldr r1, [sp, #8]
+ ldr r0, [sp]
+ sub r0, r1, r0
+ ldr r1, [sp, #0xc]
+ sub r1, r1, r7
+ add r2, r1, #0
+ mul r2, r1
+ add r1, r0, #0
+ mul r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #0xc
+ bl FX_Sqrt
+ ldrb r1, [r5, #4]
+ lsl r2, r1, #2
+ ldr r1, _02254B6C ; =0x022550A8
+ ldr r1, [r1, r2]
+ cmp r0, r1
+ bgt _02254B46
+ ldr r1, [r4, #0xc]
+ cmp r1, #8
+ bhs _02254B58
+ mov r2, #6
+ mul r2, r1
+ ldr r0, [sp, #0xc]
+ add r1, r4, r2
+ strh r0, [r1, #0x10]
+ ldr r2, [r4, #0xc]
+ mov r1, #6
+ mul r1, r2
+ ldr r0, [sp, #8]
+ add r1, r4, r1
+ strh r0, [r1, #0x12]
+ ldr r2, [r4, #0xc]
+ mov r1, #6
+ mul r1, r2
+ ldrb r0, [r5, #4]
+ add r1, r4, r1
+ strh r0, [r1, #0x14]
+ ldr r0, [r6]
+ add r0, r0, #1
+ str r0, [r6]
+ mov r0, #2
+ str r0, [r4, #8]
+ b _02254B58
+_02254B46:
+ mov r1, #3
+ lsl r1, r1, #0x10
+ cmp r0, r1
+ bgt _02254B58
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ bne _02254B58
+ mov r0, #1
+ str r0, [r4, #8]
+_02254B58:
+ add r5, r5, #6
+ ldrb r0, [r5, #4]
+ cmp r0, #0xff
+ bne _02254AE0
+_02254B60:
+ ldr r0, [sp, #4]
+ bl FUN_02016A18
+_02254B66:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254B6C: .word 0x022550A8
+ thumb_func_end MOD29_02254AA8
+
+ thumb_func_start MOD29_02254B70
+MOD29_02254B70: ; 0x02254B70
+ push {r4, r5}
+ sub r4, r0, #7
+ mov r0, #0xb
+ add r5, r4, #0
+ mul r5, r0
+ sub r1, r1, #7
+ add r5, #0x70
+ mul r0, r1
+ str r5, [r2]
+ add r0, #0x65
+ str r0, [r3]
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD29_02254B70
+
+ thumb_func_start MOD29_02254B8C
+MOD29_02254B8C: ; 0x02254B8C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254B9C
+ cmp r0, #1
+ beq _02254BAC
+ b _02254BBA
+_02254B9C:
+ ldr r0, [r4, #0x48]
+ mov r1, #1
+ bl MOD29_02254CC0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254BBA
+_02254BAC:
+ ldr r0, [r4, #0x48]
+ bl MOD29_02254CF0
+ cmp r0, #0
+ beq _02254BBA
+ mov r0, #1
+ pop {r4, pc}
+_02254BBA:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD29_02254B8C
+
+ thumb_func_start MOD29_02254BC0
+MOD29_02254BC0: ; 0x02254BC0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x90
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254C04
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #0x6c]
+ bl MOD20_02252D24
+ str r0, [r4, #0x30]
+ mov r1, #0
+ str r1, [r4, #0x34]
+ add r2, r4, #0
+ add r0, r1, #0
+_02254BF4:
+ add r1, r1, #1
+ str r0, [r2, #0x38]
+ add r2, r2, #4
+ cmp r1, #8
+ blt _02254BF4
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254C04:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD29_02254BC0
+
+ thumb_func_start MOD29_02254C08
+MOD29_02254C08: ; 0x02254C08
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ mov r0, #8
+ str r0, [sp]
+ add r0, r6, #0
+ add r0, #0x58
+ mov r1, #0xc
+ mov r2, #0x28
+ mov r3, #0x29
+ bl MOD20_02253FBC
+ cmp r0, #0
+ beq _02254C74
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x2a
+ bl FUN_02006A34
+ add r2, r6, #0
+ ldr r0, [r6, #0x30]
+ ldr r1, _02254C7C ; =0x022550C0
+ add r2, #0x58
+ bl MOD20_02253E74
+ mov r1, #1
+ str r0, [r6, #0x34]
+ bl MOD20_02253F78
+ add r7, r6, #0
+ mov r4, #0
+ add r5, r6, #0
+ add r7, #0x58
+_02254C54:
+ ldr r0, [r6, #0x30]
+ ldr r1, _02254C80 ; =0x022550D0
+ add r2, r7, #0
+ bl MOD20_02253E74
+ mov r1, #1
+ str r0, [r5, #0x38]
+ bl MOD20_02253F78
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _02254C54
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_02254C74:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254C7C: .word 0x022550C0
+_02254C80: .word 0x022550D0
+ thumb_func_end MOD29_02254C08
+
+ thumb_func_start MOD29_02254C84
+MOD29_02254C84: ; 0x02254C84
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ beq _02254CBC
+ mov r4, #0
+ add r5, r6, #0
+_02254C8E:
+ ldr r1, [r5, #0x38]
+ cmp r1, #0
+ beq _02254C9A
+ ldr r0, [r6, #0x30]
+ bl MOD20_02253F14
+_02254C9A:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _02254C8E
+ ldr r1, [r6, #0x34]
+ cmp r1, #0
+ beq _02254CAE
+ ldr r0, [r6, #0x30]
+ bl MOD20_02253F14
+_02254CAE:
+ add r0, r6, #0
+ add r0, #0x58
+ bl MOD20_02254014
+ add r0, r6, #0
+ bl FUN_02016A18
+_02254CBC:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD29_02254C84
+
+ thumb_func_start MOD29_02254CC0
+MOD29_02254CC0: ; 0x02254CC0
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254CE0 ; =0x022550FC
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254CE0: .word 0x022550FC
+ thumb_func_end MOD29_02254CC0
+
+ thumb_func_start MOD29_02254CE4
+MOD29_02254CE4: ; 0x02254CE4
+ ldr r3, _02254CEC ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254CEC: .word MOD20_02253794
+ thumb_func_end MOD29_02254CE4
+
+ thumb_func_start MOD29_02254CF0
+MOD29_02254CF0: ; 0x02254CF0
+ ldr r3, _02254CF8 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254CF8: .word MOD20_022537B8
+ thumb_func_end MOD29_02254CF0
+
+ thumb_func_start MOD29_02254CFC
+MOD29_02254CFC: ; 0x02254CFC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD29_02254CFC
+
+ thumb_func_start MOD29_02254D10
+MOD29_02254D10: ; 0x02254D10
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _02254DE8 ; =0x022550E0
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x27
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x26
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ add r0, r4, #0
+ add r0, #0x70
+ bl MOD20_02252DEC
+ add r0, r4, #0
+ add r0, #0x80
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x72
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x70
+ mov r1, #0x20
+ bl DC_FlushRange
+ add r0, r4, #0
+ mov r1, #0x1a
+ add r0, #0x70
+ lsl r1, r1, #4
+ mov r2, #0x20
+ bl GXS_LoadOBJPltt
+ add r0, r4, #0
+ add r0, #0x8e
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x72
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x70
+ mov r1, #0x20
+ bl DC_FlushRange
+ add r0, r4, #0
+ mov r1, #7
+ add r0, #0x70
+ lsl r1, r1, #6
+ mov r2, #0x20
+ bl GXS_LoadOBJPltt
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254DEC ; =0x04001000
+ ldr r0, _02254DF0 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD29_02254C08
+ add r0, r5, #0
+ bl MOD29_02254CFC
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254DE8: .word 0x022550E0
+_02254DEC: .word 0x04001000
+_02254DF0: .word 0xFFFFE0FF
+ thumb_func_end MOD29_02254D10
+
+ thumb_func_start MOD29_02254DF4
+MOD29_02254DF4: ; 0x02254DF4
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD29_02254CFC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD29_02254DF4
+
+ thumb_func_start MOD29_02254E10
+MOD29_02254E10: ; 0x02254E10
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ str r0, [sp]
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A8
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ bne _02254E40
+ mov r0, #1
+ str r0, [r6, #0x6c]
+ ldr r0, [r7, #8]
+ str r0, [r4]
+_02254E40:
+ ldr r2, [r4]
+ ldr r0, [sp]
+ lsl r3, r2, #2
+ ldr r2, _02254E50 ; =0x022550B4
+ add r1, r5, #0
+ ldr r2, [r2, r3]
+ blx r2
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254E50: .word 0x022550B4
+ thumb_func_end MOD29_02254E10
+
+ thumb_func_start MOD29_02254E54
+MOD29_02254E54: ; 0x02254E54
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02254E78
+ cmp r0, #1
+ beq _02254E9E
+ pop {r4, r5, r6, pc}
+_02254E78:
+ ldr r1, [r6]
+ ldr r2, [r6, #4]
+ ldr r0, [r4, #0x34]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254E9E:
+ ldr r0, [r4, #0x6c]
+ cmp r0, #0
+ bne _02254EB2
+ add r0, r4, #0
+ bl MOD29_02255068
+ add r0, r5, #0
+ bl MOD29_02254CFC
+ pop {r4, r5, r6, pc}
+_02254EB2:
+ ldr r0, [r4, #0x34]
+ bl MOD20_02253F44
+ cmp r0, #0
+ beq _02254EC8
+ add r0, r4, #0
+ bl MOD29_02255068
+ add r0, r5, #0
+ bl MOD29_02254CFC
+_02254EC8:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD29_02254E54
+
+ thumb_func_start MOD29_02254ECC
+MOD29_02254ECC: ; 0x02254ECC
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02254EF0
+ cmp r0, #1
+ beq _02254F16
+ pop {r4, r5, r6, pc}
+_02254EF0:
+ ldr r1, [r4]
+ ldr r2, [r4, #4]
+ ldr r0, [r5, #0x34]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+ ldr r0, [r5, #0x34]
+ mov r1, #0
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x34]
+ mov r1, #0
+ bl MOD20_02253F78
+ add r0, r6, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254F16:
+ ldr r0, [r5, #0x6c]
+ cmp r0, #0
+ bne _02254F2A
+ add r0, r5, #0
+ bl MOD29_02255068
+ add r0, r6, #0
+ bl MOD29_02254CFC
+ pop {r4, r5, r6, pc}
+_02254F2A:
+ ldr r0, [r5, #0x34]
+ bl MOD20_02253F44
+ cmp r0, #0
+ beq _02254F3C
+ ldr r0, [r5, #0x34]
+ mov r1, #0
+ bl MOD20_02253F28
+_02254F3C:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD29_02254ECC
+
+ thumb_func_start MOD29_02254F40
+MOD29_02254F40: ; 0x02254F40
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02254F68
+ cmp r0, #1
+ beq _02254F96
+ cmp r0, #2
+ beq _02254FC4
+ pop {r4, r5, r6, pc}
+_02254F68:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD29_02254FF4
+ ldr r1, [r6]
+ ldr r2, [r6, #4]
+ ldr r0, [r4, #0x34]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD20_02253F78
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254F96:
+ ldr r0, [r4, #0x6c]
+ cmp r0, #0
+ bne _02254FAA
+ add r0, r4, #0
+ bl MOD29_02255068
+ add r0, r5, #0
+ bl MOD29_02254CFC
+ pop {r4, r5, r6, pc}
+_02254FAA:
+ ldr r0, [r4, #0x34]
+ bl MOD20_02253F44
+ cmp r0, #0
+ beq _02254FF2
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD29_02255020
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254FC4:
+ ldr r0, [r4, #0x6c]
+ cmp r0, #0
+ bne _02254FD8
+ add r0, r4, #0
+ bl MOD29_02255068
+ add r0, r5, #0
+ bl MOD29_02254CFC
+ pop {r4, r5, r6, pc}
+_02254FD8:
+ add r0, r4, #0
+ bl MOD29_0225505C
+ cmp r0, #0
+ beq _02254FF2
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD20_02253F28
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD20_022538B8
+_02254FF2:
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD29_02254F40
+
+ thumb_func_start MOD29_02254FF4
+MOD29_02254FF4: ; 0x02254FF4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r5, r0, #0
+ ldr r0, [r7, #0xc]
+ mov r6, #0
+ cmp r0, #0
+ bls _0225501E
+ add r4, r7, #0
+_02255004:
+ ldrh r1, [r4, #0x10]
+ ldrh r2, [r4, #0x12]
+ ldr r0, [r5, #0x38]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+ ldr r0, [r7, #0xc]
+ add r6, r6, #1
+ add r4, r4, #6
+ add r5, r5, #4
+ cmp r6, r0
+ blo _02255004
+_0225501E:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD29_02254FF4
+
+ thumb_func_start MOD29_02255020
+MOD29_02255020: ; 0x02255020
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ ldr r0, [r0, #0xc]
+ mov r6, #0
+ str r1, [sp]
+ cmp r0, #0
+ bls _0225505A
+ add r4, r1, #0
+_02255032:
+ ldrh r0, [r4, #0x14]
+ add r7, r0, #1
+ cmp r7, #3
+ blo _0225503C
+ mov r7, #3
+_0225503C:
+ ldr r0, [r5, #0x38]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x38]
+ add r1, r7, #0
+ bl MOD20_02253F28
+ ldr r0, [sp]
+ add r6, r6, #1
+ ldr r0, [r0, #0xc]
+ add r4, r4, #6
+ add r5, r5, #4
+ cmp r6, r0
+ blo _02255032
+_0225505A:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD29_02255020
+
+ thumb_func_start MOD29_0225505C
+MOD29_0225505C: ; 0x0225505C
+ ldr r3, _02255064 ; =MOD20_02253F44
+ ldr r0, [r0, #0x38]
+ bx r3
+ nop
+_02255064: .word MOD20_02253F44
+ thumb_func_end MOD29_0225505C
+
+ thumb_func_start MOD29_02255068
+MOD29_02255068: ; 0x02255068
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x34]
+ mov r1, #1
+ bl MOD20_02253F78
+ mov r4, #0
+ mov r6, #1
+_02255078:
+ ldr r0, [r5, #0x38]
+ add r1, r6, #0
+ bl MOD20_02253F78
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _02255078
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD29_02255068
+
+ thumb_func_start MOD29_0225508C
+MOD29_0225508C: ; 0x0225508C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD29_02255068
+ mov r0, #0
+ str r0, [r4, #0x6c]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD29_0225508C
+
+ .section .rodata
+ ; 0x0225509C
+ .incbin "baserom.nds", 0x28CA5C, 0x90
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_29.SINIT_START
+ .global SDK_OVERLAY.MODULE_29.SINIT_END
+SDK_OVERLAY.MODULE_29.SINIT_START:
+ .word MOD29_02254840
+ .word 0
+SDK_OVERLAY.MODULE_29.SINIT_END:
diff --git a/arm9/modules/30/asm/module_30.s b/arm9/modules/30/asm/module_30.s
new file mode 100644
index 00000000..924f7ad0
--- /dev/null
+++ b/arm9/modules/30/asm/module_30.s
@@ -0,0 +1,742 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD30_02254840
+MOD30_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD30_02254854
+ ldr r1, _02254850 ; =MOD30_0225496C
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD30_02254854
+_02254850: .word MOD30_0225496C
+ thumb_func_end MOD30_02254840
+
+ thumb_func_start MOD30_02254854
+MOD30_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x20
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD30_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD30_02254930
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD30_02254930
+ thumb_func_end MOD30_02254854
+
+ thumb_func_start MOD30_0225489C
+MOD30_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #1
+ add r1, r5, #0
+ add r7, r2, #0
+ add r4, r3, #0
+ str r0, [r5, #0xc]
+ add r0, r4, #0
+ add r1, #8
+ mov r2, #4
+ bl FUN_02089418
+ cmp r0, #0
+ bne _022548BE
+ mov r0, #0
+ str r0, [r5, #8]
+_022548BE:
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0x10
+ add r1, #8
+ add r2, r7, #0
+ str r4, [r5, #4]
+ bl MOD30_02254A90
+ cmp r0, #0
+ beq _022548F6
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _022548FC ; =0x02254DA0
+ ldr r2, _02254900 ; =MOD30_02254904
+ mov r1, #1
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x18]
+ mov r0, #0
+ str r0, [r5, #0x1c]
+ str r6, [r5, #0x14]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_022548F6:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022548FC: .word 0x02254DA0
+_02254900: .word MOD30_02254904
+ thumb_func_end MOD30_0225489C
+
+ thumb_func_start MOD30_02254904
+MOD30_02254904: ; 0x02254904
+ cmp r0, #0
+ bne _0225490A
+ str r1, [r3, #0x1c]
+_0225490A:
+ bx lr
+ thumb_func_end MOD30_02254904
+
+ thumb_func_start MOD30_0225490C
+MOD30_0225490C: ; 0x0225490C
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #8
+ mov r2, #4
+ bl FUN_020893F0
+ ldr r0, [r4, #0x18]
+ bl MOD20_02254198
+ ldr r0, [r4, #0x10]
+ bl MOD30_02254ACC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD30_0225490C
+
+ thumb_func_start MOD30_02254930
+MOD30_02254930: ; 0x02254930
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254966
+ ldr r0, [r4, #0x14]
+ ldr r1, [r4, #0x18]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254968 ; =0x02254DA4
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254966
+ add r0, r4, #0
+ bl MOD30_0225490C
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x14]
+ bl MOD20_022529A0
+_02254966:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254968: .word 0x02254DA4
+ thumb_func_end MOD30_02254930
+
+ thumb_func_start MOD30_0225496C
+MOD30_0225496C: ; 0x0225496C
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD30_0225496C
+
+ thumb_func_start MOD30_02254974
+MOD30_02254974: ; 0x02254974
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _0225497C
+ b _0225497E
+_0225497C:
+ mov r1, #2
+_0225497E:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD30_02254974
+
+ thumb_func_start MOD30_02254988
+MOD30_02254988: ; 0x02254988
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254998
+ cmp r0, #1
+ beq _022549A8
+ b _022549C2
+_02254998:
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl MOD30_02254BC8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549C2
+_022549A8:
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ bl MOD30_02254BEC
+ cmp r0, #0
+ beq _022549C2
+ ldr r0, [r4, #0x14]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD30_02254974
+_022549C2:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD30_02254988
+
+ thumb_func_start MOD30_022549C8
+MOD30_022549C8: ; 0x022549C8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r2, [r4, #2]
+ add r1, r4, #0
+ add r1, #8
+ cmp r2, #0
+ beq _022549E0
+ mov r1, #2
+ bl MOD30_02254974
+ mov r0, #0
+ pop {r4, pc}
+_022549E0:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549EC
+ cmp r0, #1
+ beq _02254A0A
+ b _02254A52
+_022549EC:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #1
+ bne _02254A52
+ mov r0, #0
+ str r0, [r1, #4]
+ ldr r0, [r4, #0x10]
+ mov r1, #2
+ bl MOD30_02254BC8
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A52
+_02254A0A:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #2
+ bne _02254A24
+ mov r0, #1
+ str r0, [r1, #4]
+ ldr r0, [r4, #0x10]
+ mov r1, #2
+ bl MOD30_02254BC8
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ strb r0, [r4, #1]
+ b _02254A52
+_02254A24:
+ cmp r0, #3
+ bne _02254A52
+ mov r0, #1
+ str r0, [r1, #4]
+ ldr r0, [r1]
+ add r2, r0, #1
+ ldr r0, _02254A58 ; =0x0000270F
+ str r2, [r1]
+ cmp r2, r0
+ bls _02254A3C
+ mov r0, #0
+ str r0, [r1]
+_02254A3C:
+ ldr r0, [r4, #0x10]
+ mov r1, #2
+ bl MOD30_02254BC8
+ ldr r0, [r4, #0x10]
+ mov r1, #3
+ bl MOD30_02254BC8
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ strb r0, [r4, #1]
+_02254A52:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254A58: .word 0x0000270F
+ thumb_func_end MOD30_022549C8
+
+ thumb_func_start MOD30_02254A5C
+MOD30_02254A5C: ; 0x02254A5C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A6C
+ cmp r0, #1
+ beq _02254A7C
+ b _02254A8A
+_02254A6C:
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl MOD30_02254BC8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A8A
+_02254A7C:
+ ldr r0, [r4, #0x10]
+ bl MOD30_02254BF8
+ cmp r0, #0
+ beq _02254A8A
+ mov r0, #1
+ pop {r4, pc}
+_02254A8A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD30_02254A5C
+
+ thumb_func_start MOD30_02254A90
+MOD30_02254A90: ; 0x02254A90
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x60
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254AC6
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD30_02254AE0
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254AC6:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD30_02254A90
+
+ thumb_func_start MOD30_02254ACC
+MOD30_02254ACC: ; 0x02254ACC
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254ADC
+ bl MOD30_02254B94
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254ADC:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD30_02254ACC
+
+ thumb_func_start MOD30_02254AE0
+MOD30_02254AE0: ; 0x02254AE0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r7, r0, #0
+ str r1, [sp, #0xc]
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #2
+ bl FUN_02006A34
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #1
+ mov r3, #0xa
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x2f
+ lsl r3, r3, #8
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x38
+ mov r1, #0xc
+ mov r2, #0x2d
+ mov r3, #0x2e
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x4c
+ mov r1, #0xc
+ mov r2, #3
+ mov r3, #4
+ bl MOD20_02253FBC
+ add r2, r7, #0
+ ldr r0, [r7, #0x20]
+ ldr r1, _02254B8C ; =0x02254DB0
+ add r2, #0x38
+ bl MOD20_02253E74
+ mov r1, #0x50
+ str r0, [r7, #0x24]
+ bl MOD20_02253FA4
+ add r0, r7, #0
+ mov r5, #0x16
+ str r0, [sp, #0x10]
+ add r0, #0x4c
+ mov r6, #0
+ add r4, r7, #0
+ lsl r5, r5, #0xe
+ str r0, [sp, #0x10]
+_02254B5C:
+ ldr r0, [r7, #0x20]
+ ldr r1, _02254B90 ; =0x02254DC0
+ ldr r2, [sp, #0x10]
+ bl MOD20_02253E74
+ mov r2, #1
+ add r1, r5, #0
+ lsl r2, r2, #0x12
+ str r0, [r4, #0x28]
+ bl MOD20_02253F64
+ mov r0, #1
+ lsl r0, r0, #0x10
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, r0
+ cmp r6, #4
+ blt _02254B5C
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD30_02254D28
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254B8C: .word 0x02254DB0
+_02254B90: .word 0x02254DC0
+ thumb_func_end MOD30_02254AE0
+
+ thumb_func_start MOD30_02254B94
+MOD30_02254B94: ; 0x02254B94
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r6, #0x20]
+ ldr r1, [r6, #0x24]
+ bl MOD20_02253F14
+ mov r4, #0
+ add r5, r6, #0
+_02254BA4:
+ ldr r0, [r6, #0x20]
+ ldr r1, [r5, #0x28]
+ bl MOD20_02253F14
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02254BA4
+ add r0, r6, #0
+ add r0, #0x38
+ bl MOD20_02254014
+ add r6, #0x4c
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD30_02254B94
+
+ thumb_func_start MOD30_02254BC8
+MOD30_02254BC8: ; 0x02254BC8
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254BE8 ; =0x02254DEC
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254BE8: .word 0x02254DEC
+ thumb_func_end MOD30_02254BC8
+
+ thumb_func_start MOD30_02254BEC
+MOD30_02254BEC: ; 0x02254BEC
+ ldr r3, _02254BF4 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254BF4: .word MOD20_02253794
+ thumb_func_end MOD30_02254BEC
+
+ thumb_func_start MOD30_02254BF8
+MOD30_02254BF8: ; 0x02254BF8
+ ldr r3, _02254C00 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254C00: .word MOD20_022537B8
+ thumb_func_end MOD30_02254BF8
+
+ thumb_func_start MOD30_02254C04
+MOD30_02254C04: ; 0x02254C04
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD30_02254C04
+
+ thumb_func_start MOD30_02254C18
+MOD30_02254C18: ; 0x02254C18
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254C9C ; =0x02254DD0
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x2c
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x2b
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254CA0 ; =0x04001000
+ ldr r0, _02254CA4 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD30_02254C04
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254C9C: .word 0x02254DD0
+_02254CA0: .word 0x04001000
+_02254CA4: .word 0xFFFFE0FF
+ thumb_func_end MOD30_02254C18
+
+ thumb_func_start MOD30_02254CA8
+MOD30_02254CA8: ; 0x02254CA8
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD30_02254C04
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD30_02254CA8
+
+ thumb_func_start MOD30_02254CC4
+MOD30_02254CC4: ; 0x02254CC4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _02254CDE
+ cmp r0, #1
+ beq _02254CEE
+ b _02254CF6
+_02254CDE:
+ ldr r0, _02254D00 ; =0x00000669
+ bl MOD20_02252B28
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl MOD20_02253F28
+ b _02254CF6
+_02254CEE:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD20_02253F28
+_02254CF6:
+ add r0, r5, #0
+ bl MOD30_02254C04
+ pop {r3, r4, r5, pc}
+ nop
+_02254D00: .word 0x00000669
+ thumb_func_end MOD30_02254CC4
+
+ thumb_func_start MOD30_02254D04
+MOD30_02254D04: ; 0x02254D04
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD30_02254D28
+ add r0, r5, #0
+ bl MOD30_02254C04
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD30_02254D04
+
+ thumb_func_start MOD30_02254D28
+MOD30_02254D28: ; 0x02254D28
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0
+ ldr r0, [r1]
+ ldr r5, _02254D8C ; =0x04000280
+ str r0, [sp, #4]
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #8]
+ lsr r4, r5, #0xb
+ lsr r6, r5, #0xb
+_02254D42:
+ mov r0, #0
+ strh r0, [r5]
+ ldr r1, [sp, #4]
+ ldr r0, _02254D90 ; =0x04000290
+ str r1, [r0]
+ ldr r1, [sp]
+ str r1, [r0, #8]
+ ldr r0, _02254D94 ; =0x04000298
+ mov r1, #0
+ str r1, [r0, #4]
+_02254D56:
+ ldrh r0, [r5]
+ tst r0, r4
+ bne _02254D56
+ ldr r1, _02254D98 ; =0x040002A0
+ ldr r0, [r7, #0x28]
+ ldr r1, [r1]
+ bl MOD20_02253F28
+_02254D66:
+ ldrh r0, [r5]
+ tst r0, r6
+ bne _02254D66
+ ldr r0, _02254D9C ; =0x040002A8
+ mov r1, #0xa
+ ldr r0, [r0]
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ bl _u32_div_f
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ add r7, r7, #4
+ add r0, r0, #1
+ str r0, [sp, #8]
+ cmp r0, #4
+ blt _02254D42
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254D8C: .word 0x04000280
+_02254D90: .word 0x04000290
+_02254D94: .word 0x04000298
+_02254D98: .word 0x040002A0
+_02254D9C: .word 0x040002A8
+ thumb_func_end MOD30_02254D28
+
+ .section .data
+ ; 0x02254DA0
+ .incbin "baserom.nds", 0x28D160, 0x88
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_30.SINIT_START
+ .global SDK_OVERLAY.MODULE_30.SINIT_END
+SDK_OVERLAY.MODULE_30.SINIT_START:
+ .word MOD30_02254840
+ .word 0
+SDK_OVERLAY.MODULE_30.SINIT_END:
diff --git a/arm9/modules/31/asm/module_31.s b/arm9/modules/31/asm/module_31.s
new file mode 100644
index 00000000..e9c70424
--- /dev/null
+++ b/arm9/modules/31/asm/module_31.s
@@ -0,0 +1,727 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD31_02254840
+MOD31_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD31_02254854
+ ldr r1, _02254850 ; =MOD31_02254954
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD31_02254854
+_02254850: .word MOD31_02254954
+ thumb_func_end MOD31_02254840
+
+ thumb_func_start MOD31_02254854
+MOD31_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x20
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD31_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD31_02254918
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD31_02254918
+ thumb_func_end MOD31_02254854
+
+ thumb_func_start MOD31_0225489C
+MOD31_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ str r1, [r5, #0x10]
+ add r0, r1, #0
+ add r4, r2, #0
+ bl MOD20_02252C3C
+ str r0, [r5, #0x1c]
+ mov r0, #1
+ str r0, [r5, #8]
+ ldr r0, [r5, #0x1c]
+ bl FUN_0204BF84
+ str r0, [r5, #4]
+ add r0, r5, #0
+ add r0, #0xc
+ add r1, r5, #4
+ add r2, r4, #0
+ bl MOD31_02254A84
+ cmp r0, #0
+ beq _022548EA
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _022548F0 ; =0x02254D98
+ ldr r2, _022548F4 ; =MOD31_022548F8
+ mov r1, #1
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x14]
+ mov r0, #0
+ str r0, [r5, #0x18]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548EA:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_022548F0: .word 0x02254D98
+_022548F4: .word MOD31_022548F8
+ thumb_func_end MOD31_0225489C
+
+ thumb_func_start MOD31_022548F8
+MOD31_022548F8: ; 0x022548F8
+ cmp r0, #0
+ bne _022548FE
+ str r1, [r3, #0x18]
+_022548FE:
+ bx lr
+ thumb_func_end MOD31_022548F8
+
+ thumb_func_start MOD31_02254900
+MOD31_02254900: ; 0x02254900
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl MOD20_02254198
+ ldr r0, [r4, #0xc]
+ bl MOD31_02254AC0
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD31_02254900
+
+ thumb_func_start MOD31_02254918
+MOD31_02254918: ; 0x02254918
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _0225494E
+ ldr r0, [r4, #0x10]
+ ldr r1, [r4, #0x14]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254950 ; =0x02254D9C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225494E
+ add r0, r4, #0
+ bl MOD31_02254900
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x10]
+ bl MOD20_022529A0
+_0225494E:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254950: .word 0x02254D9C
+ thumb_func_end MOD31_02254918
+
+ thumb_func_start MOD31_02254954
+MOD31_02254954: ; 0x02254954
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD31_02254954
+
+ thumb_func_start MOD31_0225495C
+MOD31_0225495C: ; 0x0225495C
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254964
+ b _02254966
+_02254964:
+ mov r1, #2
+_02254966:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD31_0225495C
+
+ thumb_func_start MOD31_02254970
+MOD31_02254970: ; 0x02254970
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254980
+ cmp r0, #1
+ beq _02254990
+ b _022549AA
+_02254980:
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl MOD31_02254BBC
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549AA
+_02254990:
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl MOD31_02254BE0
+ cmp r0, #0
+ beq _022549AA
+ ldr r0, [r4, #0x10]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD31_0225495C
+_022549AA:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254970
+
+ thumb_func_start MOD31_022549B0
+MOD31_022549B0: ; 0x022549B0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549C4
+ mov r1, #2
+ bl MOD31_0225495C
+ mov r0, #0
+ pop {r4, pc}
+_022549C4:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549D0
+ cmp r0, #1
+ beq _02254A0A
+ b _02254A4C
+_022549D0:
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _022549EE
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl MOD31_02254BBC
+ mov r0, #0
+ str r0, [r4, #0x18]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A4C
+_022549EE:
+ ldr r0, [r4, #0x10]
+ bl MOD20_02252C34
+ cmp r0, #0
+ beq _02254A4C
+ ldr r0, [r4, #0x1c]
+ bl FUN_0204BF84
+ str r0, [r4, #4]
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ bl MOD31_02254BBC
+ b _02254A4C
+_02254A0A:
+ ldr r0, [r4, #0x18]
+ cmp r0, #2
+ bne _02254A24
+ mov r0, #1
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl MOD31_02254BBC
+ mov r0, #0
+ str r0, [r4, #0x18]
+ strb r0, [r4, #1]
+ b _02254A4C
+_02254A24:
+ cmp r0, #3
+ bne _02254A4C
+ mov r0, #1
+ str r0, [r4, #8]
+ mov r1, #0
+ str r1, [r4, #4]
+ ldr r0, [r4, #0x1c]
+ bl FUN_0204BF88
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl MOD31_02254BBC
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ bl MOD31_02254BBC
+ mov r0, #0
+ str r0, [r4, #0x18]
+ strb r0, [r4, #1]
+_02254A4C:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD31_022549B0
+
+ thumb_func_start MOD31_02254A50
+MOD31_02254A50: ; 0x02254A50
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A60
+ cmp r0, #1
+ beq _02254A70
+ b _02254A7E
+_02254A60:
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl MOD31_02254BBC
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A7E
+_02254A70:
+ ldr r0, [r4, #0xc]
+ bl MOD31_02254BEC
+ cmp r0, #0
+ beq _02254A7E
+ mov r0, #1
+ pop {r4, pc}
+_02254A7E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254A50
+
+ thumb_func_start MOD31_02254A84
+MOD31_02254A84: ; 0x02254A84
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x64
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254ABA
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD31_02254AD4
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254ABA:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254A84
+
+ thumb_func_start MOD31_02254AC0
+MOD31_02254AC0: ; 0x02254AC0
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254AD0
+ bl MOD31_02254B88
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254AD0:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254AC0
+
+ thumb_func_start MOD31_02254AD4
+MOD31_02254AD4: ; 0x02254AD4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r7, r0, #0
+ str r1, [sp, #0xc]
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #2
+ bl FUN_02006A34
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #1
+ mov r3, #0xa
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x34
+ lsl r3, r3, #8
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x3c
+ mov r1, #0xc
+ mov r2, #0x32
+ mov r3, #0x33
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x50
+ mov r1, #0xc
+ mov r2, #3
+ mov r3, #4
+ bl MOD20_02253FBC
+ add r2, r7, #0
+ ldr r0, [r7, #0x20]
+ ldr r1, _02254B80 ; =0x02254DA8
+ add r2, #0x3c
+ bl MOD20_02253E74
+ mov r1, #0x50
+ str r0, [r7, #0x24]
+ bl MOD20_02253FA4
+ add r0, r7, #0
+ mov r5, #5
+ str r0, [sp, #0x10]
+ add r0, #0x50
+ mov r6, #0
+ add r4, r7, #0
+ lsl r5, r5, #0x10
+ str r0, [sp, #0x10]
+_02254B50:
+ ldr r0, [r7, #0x20]
+ ldr r1, _02254B84 ; =0x02254DB8
+ ldr r2, [sp, #0x10]
+ bl MOD20_02253E74
+ mov r2, #1
+ add r1, r5, #0
+ lsl r2, r2, #0x12
+ str r0, [r4, #0x28]
+ bl MOD20_02253F64
+ mov r0, #1
+ lsl r0, r0, #0x10
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, r0
+ cmp r6, #5
+ blt _02254B50
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD31_02254D1C
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254B80: .word 0x02254DA8
+_02254B84: .word 0x02254DB8
+ thumb_func_end MOD31_02254AD4
+
+ thumb_func_start MOD31_02254B88
+MOD31_02254B88: ; 0x02254B88
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r6, #0x20]
+ ldr r1, [r6, #0x24]
+ bl MOD20_02253F14
+ mov r4, #0
+ add r5, r6, #0
+_02254B98:
+ ldr r0, [r6, #0x20]
+ ldr r1, [r5, #0x28]
+ bl MOD20_02253F14
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _02254B98
+ add r0, r6, #0
+ add r0, #0x3c
+ bl MOD20_02254014
+ add r6, #0x50
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254B88
+
+ thumb_func_start MOD31_02254BBC
+MOD31_02254BBC: ; 0x02254BBC
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254BDC ; =0x02254DE4
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254BDC: .word 0x02254DE4
+ thumb_func_end MOD31_02254BBC
+
+ thumb_func_start MOD31_02254BE0
+MOD31_02254BE0: ; 0x02254BE0
+ ldr r3, _02254BE8 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254BE8: .word MOD20_02253794
+ thumb_func_end MOD31_02254BE0
+
+ thumb_func_start MOD31_02254BEC
+MOD31_02254BEC: ; 0x02254BEC
+ ldr r3, _02254BF4 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254BF4: .word MOD20_022537B8
+ thumb_func_end MOD31_02254BEC
+
+ thumb_func_start MOD31_02254BF8
+MOD31_02254BF8: ; 0x02254BF8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254BF8
+
+ thumb_func_start MOD31_02254C0C
+MOD31_02254C0C: ; 0x02254C0C
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254C90 ; =0x02254DC8
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x31
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x30
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254C94 ; =0x04001000
+ ldr r0, _02254C98 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD31_02254BF8
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254C90: .word 0x02254DC8
+_02254C94: .word 0x04001000
+_02254C98: .word 0xFFFFE0FF
+ thumb_func_end MOD31_02254C0C
+
+ thumb_func_start MOD31_02254C9C
+MOD31_02254C9C: ; 0x02254C9C
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD31_02254BF8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254C9C
+
+ thumb_func_start MOD31_02254CB8
+MOD31_02254CB8: ; 0x02254CB8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _02254CD2
+ cmp r0, #1
+ beq _02254CE2
+ b _02254CEA
+_02254CD2:
+ ldr r0, _02254CF4 ; =0x00000669
+ bl MOD20_02252B28
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl MOD20_02253F28
+ b _02254CEA
+_02254CE2:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD20_02253F28
+_02254CEA:
+ add r0, r5, #0
+ bl MOD31_02254BF8
+ pop {r3, r4, r5, pc}
+ nop
+_02254CF4: .word 0x00000669
+ thumb_func_end MOD31_02254CB8
+
+ thumb_func_start MOD31_02254CF8
+MOD31_02254CF8: ; 0x02254CF8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD31_02254D1C
+ add r0, r5, #0
+ bl MOD31_02254BF8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD31_02254CF8
+
+ thumb_func_start MOD31_02254D1C
+MOD31_02254D1C: ; 0x02254D1C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0
+ ldr r0, [r1]
+ ldr r5, _02254D80 ; =0x04000280
+ str r0, [sp, #4]
+ ldr r0, _02254D84 ; =0x00002710
+ lsr r4, r5, #0xb
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #8]
+ lsr r6, r5, #0xb
+_02254D34:
+ mov r0, #0
+ strh r0, [r5]
+ ldr r1, [sp, #4]
+ ldr r0, _02254D88 ; =0x04000290
+ str r1, [r0]
+ ldr r1, [sp]
+ str r1, [r0, #8]
+ ldr r0, _02254D8C ; =0x04000298
+ mov r1, #0
+ str r1, [r0, #4]
+_02254D48:
+ ldrh r0, [r5]
+ tst r0, r4
+ bne _02254D48
+ ldr r1, _02254D90 ; =0x040002A0
+ ldr r0, [r7, #0x28]
+ ldr r1, [r1]
+ bl MOD20_02253F28
+_02254D58:
+ ldrh r0, [r5]
+ tst r0, r6
+ bne _02254D58
+ ldr r0, _02254D94 ; =0x040002A8
+ mov r1, #0xa
+ ldr r0, [r0]
+ str r0, [sp, #4]
+ ldr r0, [sp]
+ bl _u32_div_f
+ str r0, [sp]
+ ldr r0, [sp, #8]
+ add r7, r7, #4
+ add r0, r0, #1
+ str r0, [sp, #8]
+ cmp r0, #5
+ blt _02254D34
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254D80: .word 0x04000280
+_02254D84: .word 0x00002710
+_02254D88: .word 0x04000290
+_02254D8C: .word 0x04000298
+_02254D90: .word 0x040002A0
+_02254D94: .word 0x040002A8
+ thumb_func_end MOD31_02254D1C
+
+ .section .rodata
+ ; 0x02254D98
+ .incbin "baserom.nds", 0x28D758, 0x88
+
+ .section .sinit
+ .word MOD31_02254840
diff --git a/arm9/modules/32/asm/module_32.s b/arm9/modules/32/asm/module_32.s
new file mode 100644
index 00000000..299432f1
--- /dev/null
+++ b/arm9/modules/32/asm/module_32.s
@@ -0,0 +1,584 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD32_02254840
+MOD32_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD32_02254854
+ ldr r1, _02254850 ; =MOD32_0225495C
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD32_02254854
+_02254850: .word MOD32_0225495C
+ thumb_func_end MOD32_02254840
+
+ thumb_func_start MOD32_02254854
+MOD32_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x1c
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD32_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD32_02254920
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD32_02254920
+ thumb_func_end MOD32_02254854
+
+ thumb_func_start MOD32_0225489C
+MOD32_0225489C: ; 0x0225489C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #0
+ add r1, sp, #4
+ add r6, r2, #0
+ bl PM_GetBackLight
+ ldr r0, [sp, #4]
+ cmp r0, #1
+ bne _022548B8
+ mov r0, #1
+ b _022548BA
+_022548B8:
+ mov r0, #0
+_022548BA:
+ str r0, [r5, #4]
+ add r0, r5, #0
+ add r0, #8
+ add r1, r5, #4
+ add r2, r6, #0
+ bl MOD32_02254A54
+ cmp r0, #0
+ beq _022548F2
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _022548F8 ; =0x02254C54
+ ldr r2, _022548FC ; =MOD32_02254918
+ mov r1, #2
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x10]
+ mov r0, #0
+ str r0, [r5, #0x14]
+ add sp, #8
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022548F2:
+ mov r0, #0
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022548F8: .word 0x02254C54
+_022548FC: .word MOD32_02254918
+ thumb_func_end MOD32_0225489C
+
+ thumb_func_start MOD32_02254900
+MOD32_02254900: ; 0x02254900
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ bl MOD20_02254198
+ ldr r0, [r4, #8]
+ bl MOD32_02254A90
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD32_02254900
+
+ thumb_func_start MOD32_02254918
+MOD32_02254918: ; 0x02254918
+ str r0, [r3, #0x18]
+ str r1, [r3, #0x14]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD32_02254918
+
+ thumb_func_start MOD32_02254920
+MOD32_02254920: ; 0x02254920
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254956
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254958 ; =0x02254C5C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254956
+ add r0, r4, #0
+ bl MOD32_02254900
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254956:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254958: .word 0x02254C5C
+ thumb_func_end MOD32_02254920
+
+ thumb_func_start MOD32_0225495C
+MOD32_0225495C: ; 0x0225495C
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD32_0225495C
+
+ thumb_func_start MOD32_02254964
+MOD32_02254964: ; 0x02254964
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _0225496C
+ b _0225496E
+_0225496C:
+ mov r1, #2
+_0225496E:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD32_02254964
+
+ thumb_func_start MOD32_02254978
+MOD32_02254978: ; 0x02254978
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254988
+ cmp r0, #1
+ beq _02254998
+ b _022549B2
+_02254988:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD32_02254B08
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549B2
+_02254998:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD32_02254B2C
+ cmp r0, #0
+ beq _022549B2
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD32_02254964
+_022549B2:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD32_02254978
+
+ thumb_func_start MOD32_022549B8
+MOD32_022549B8: ; 0x022549B8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549CC
+ mov r1, #2
+ bl MOD32_02254964
+ mov r0, #0
+ pop {r4, pc}
+_022549CC:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549D8
+ cmp r0, #1
+ beq _02254A0C
+ b _02254A1C
+_022549D8:
+ ldr r0, [r4, #0x14]
+ cmp r0, #1
+ bne _02254A1C
+ ldr r1, [r4, #0x18]
+ cmp r1, #0
+ bne _022549EA
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _022549F4
+_022549EA:
+ cmp r1, #1
+ bne _02254A04
+ ldr r0, [r4, #4]
+ cmp r0, #1
+ bne _02254A04
+_022549F4:
+ ldr r1, [r4, #4]
+ mov r0, #1
+ eor r0, r1
+ str r0, [r4, #4]
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD32_02254B08
+_02254A04:
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A1C
+_02254A0C:
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD32_02254B2C
+ cmp r0, #0
+ beq _02254A1C
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254A1C:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD32_022549B8
+
+ thumb_func_start MOD32_02254A20
+MOD32_02254A20: ; 0x02254A20
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A30
+ cmp r0, #1
+ beq _02254A40
+ b _02254A4E
+_02254A30:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD32_02254B08
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A4E
+_02254A40:
+ ldr r0, [r4, #8]
+ bl MOD32_02254B38
+ cmp r0, #0
+ beq _02254A4E
+ mov r0, #1
+ pop {r4, pc}
+_02254A4E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD32_02254A20
+
+ thumb_func_start MOD32_02254A54
+MOD32_02254A54: ; 0x02254A54
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x3c
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254A8A
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD32_02254A9C
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254A8A:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD32_02254A54
+
+ thumb_func_start MOD32_02254A90
+MOD32_02254A90: ; 0x02254A90
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254A9A
+ bl FUN_02016A18
+_02254A9A:
+ pop {r3, pc}
+ thumb_func_end MOD32_02254A90
+
+ thumb_func_start MOD32_02254A9C
+MOD32_02254A9C: ; 0x02254A9C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r5, r0, #0
+ add r4, r1, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x68
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x28
+ mov r1, #0xc
+ mov r2, #0x66
+ mov r3, #0x67
+ bl MOD20_02253FBC
+ add r2, r5, #0
+ ldr r0, [r5, #0x20]
+ ldr r1, _02254AEC ; =0x02254C68
+ add r2, #0x28
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _02254AE6
+ ldr r0, [r5, #0x24]
+ mov r1, #1
+ bl MOD20_02253F28
+_02254AE6:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_02254AEC: .word 0x02254C68
+ thumb_func_end MOD32_02254A9C
+
+ thumb_func_start MOD32_02254AF0
+MOD32_02254AF0: ; 0x02254AF0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x20]
+ ldr r1, [r4, #0x24]
+ bl MOD20_02253F14
+ add r4, #0x28
+ add r0, r4, #0
+ bl MOD20_02254014
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD32_02254AF0
+
+ thumb_func_start MOD32_02254B08
+MOD32_02254B08: ; 0x02254B08
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254B28 ; =0x02254C94
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254B28: .word 0x02254C94
+ thumb_func_end MOD32_02254B08
+
+ thumb_func_start MOD32_02254B2C
+MOD32_02254B2C: ; 0x02254B2C
+ ldr r3, _02254B34 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254B34: .word MOD20_02253794
+ thumb_func_end MOD32_02254B2C
+
+ thumb_func_start MOD32_02254B38
+MOD32_02254B38: ; 0x02254B38
+ ldr r3, _02254B40 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254B40: .word MOD20_022537B8
+ thumb_func_end MOD32_02254B38
+
+ thumb_func_start MOD32_02254B44
+MOD32_02254B44: ; 0x02254B44
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD32_02254B44
+
+ thumb_func_start MOD32_02254B58
+MOD32_02254B58: ; 0x02254B58
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254BDC ; =0x02254C78
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x65
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x64
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254BE0 ; =0x04001000
+ ldr r0, _02254BE4 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD32_02254B44
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254BDC: .word 0x02254C78
+_02254BE0: .word 0x04001000
+_02254BE4: .word 0xFFFFE0FF
+ thumb_func_end MOD32_02254B58
+
+ thumb_func_start MOD32_02254BE8
+MOD32_02254BE8: ; 0x02254BE8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ bl MOD32_02254AF0
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD32_02254B44
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD32_02254BE8
+
+ thumb_func_start MOD32_02254C08
+MOD32_02254C08: ; 0x02254C08
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r4, r0, #0
+ ldr r0, _02254C50 ; =0x00000663
+ bl MOD20_02252B28
+ ldr r0, [r4]
+ cmp r0, #0
+ ldr r0, [r5, #0x24]
+ beq _02254C3A
+ mov r1, #0
+ bl MOD20_02253F28
+ mov r0, #1
+ add r1, r0, #0
+ bl PM_SetBackLight
+ b _02254C48
+_02254C3A:
+ mov r1, #1
+ bl MOD20_02253F28
+ mov r0, #1
+ mov r1, #0
+ bl PM_SetBackLight
+_02254C48:
+ add r0, r6, #0
+ bl MOD32_02254B44
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254C50: .word 0x00000663
+ thumb_func_end MOD32_02254C08
+
+ .section .rodata
+ ; 0x02254C54
+ .incbin "baserom.nds", 0x28DC14, 0x70
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_32.SINIT_START
+ .global SDK_OVERLAY.MODULE_32.SINIT_END
+SDK_OVERLAY.MODULE_32.SINIT_START:
+ .word MOD32_02254840
+ .word 0
+SDK_OVERLAY.MODULE_32.SINIT_END:
diff --git a/arm9/modules/33/asm/module_33.s b/arm9/modules/33/asm/module_33.s
new file mode 100644
index 00000000..67ec554d
--- /dev/null
+++ b/arm9/modules/33/asm/module_33.s
@@ -0,0 +1,399 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD33_02254840
+MOD33_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD33_02254854
+ ldr r1, _02254850 ; =MOD33_02254908
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD33_02254854
+_02254850: .word MOD33_02254908
+ thumb_func_end MOD33_02254840
+
+ thumb_func_start MOD33_02254854
+MOD33_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x10
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD33_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD33_022548D4
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD33_022548D4
+ thumb_func_end MOD33_02254854
+
+ thumb_func_start MOD33_0225489C
+MOD33_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #8
+ add r1, r5, #4
+ bl MOD33_022549AC
+ cmp r0, #0
+ beq _022548BC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548BC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD33_0225489C
+
+ thumb_func_start MOD33_022548C0
+MOD33_022548C0: ; 0x022548C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD33_022549DC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_022548C0
+
+ thumb_func_start MOD33_022548D4
+MOD33_022548D4: ; 0x022548D4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254900
+ lsl r2, r1, #2
+ ldr r1, _02254904 ; =0x02254AF4
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254900
+ add r0, r4, #0
+ bl MOD33_022548C0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254900:
+ pop {r3, r4, r5, pc}
+ nop
+_02254904: .word 0x02254AF4
+ thumb_func_end MOD33_022548D4
+
+ thumb_func_start MOD33_02254908
+MOD33_02254908: ; 0x02254908
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD33_02254908
+
+ thumb_func_start MOD33_02254910
+MOD33_02254910: ; 0x02254910
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254918
+ b _0225491A
+_02254918:
+ mov r1, #2
+_0225491A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD33_02254910
+
+ thumb_func_start MOD33_02254924
+MOD33_02254924: ; 0x02254924
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254934
+ cmp r0, #1
+ beq _02254944
+ b _0225495E
+_02254934:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD33_022549E8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225495E
+_02254944:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD33_02254A0C
+ cmp r0, #0
+ beq _0225495E
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD33_02254910
+_0225495E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254924
+
+ thumb_func_start MOD33_02254964
+MOD33_02254964: ; 0x02254964
+ push {r3, lr}
+ ldrb r1, [r0, #2]
+ cmp r1, #0
+ beq _02254972
+ mov r1, #2
+ bl MOD33_02254910
+_02254972:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254964
+
+ thumb_func_start MOD33_02254978
+MOD33_02254978: ; 0x02254978
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254988
+ cmp r0, #1
+ beq _02254998
+ b _022549A6
+_02254988:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD33_022549E8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549A6
+_02254998:
+ ldr r0, [r4, #8]
+ bl MOD33_02254A18
+ cmp r0, #0
+ beq _022549A6
+ mov r0, #1
+ pop {r4, pc}
+_022549A6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254978
+
+ thumb_func_start MOD33_022549AC
+MOD33_022549AC: ; 0x022549AC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x30
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _022549D8
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _022549D8
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022549D8:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD33_022549AC
+
+ thumb_func_start MOD33_022549DC
+MOD33_022549DC: ; 0x022549DC
+ push {r3, lr}
+ cmp r0, #0
+ beq _022549E6
+ bl FUN_02016A18
+_022549E6:
+ pop {r3, pc}
+ thumb_func_end MOD33_022549DC
+
+ thumb_func_start MOD33_022549E8
+MOD33_022549E8: ; 0x022549E8
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254A08 ; =0x02254B1C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254A08: .word 0x02254B1C
+ thumb_func_end MOD33_022549E8
+
+ thumb_func_start MOD33_02254A0C
+MOD33_02254A0C: ; 0x02254A0C
+ ldr r3, _02254A14 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254A14: .word MOD20_02253794
+ thumb_func_end MOD33_02254A0C
+
+ thumb_func_start MOD33_02254A18
+MOD33_02254A18: ; 0x02254A18
+ ldr r3, _02254A20 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254A20: .word MOD20_022537B8
+ thumb_func_end MOD33_02254A18
+
+ thumb_func_start MOD33_02254A24
+MOD33_02254A24: ; 0x02254A24
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254A24
+
+ thumb_func_start MOD33_02254A38
+MOD33_02254A38: ; 0x02254A38
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254ACC ; =0x02254B00
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #8
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r3, #6
+ bl FUN_0200687C
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #0xc
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ ldr r0, [r5, #4]
+ mov r1, #0xc
+ mov r2, #6
+ bl MOD20_02253AA4
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254AD0 ; =0x04001000
+ ldr r0, _02254AD4 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD33_02254A24
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254ACC: .word 0x02254B00
+_02254AD0: .word 0x04001000
+_02254AD4: .word 0xFFFFE0FF
+ thumb_func_end MOD33_02254A38
+
+ thumb_func_start MOD33_02254AD8
+MOD33_02254AD8: ; 0x02254AD8
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD33_02254A24
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254AD8
+
+ .section .rodata
+ ; 0x02254AF4
+ .incbin "baserom.nds", 0x28E0B4, 0x4C
+
+ .section .sinit
+ .word MOD33_02254840
diff --git a/arm9/modules/34/asm/module_34.s b/arm9/modules/34/asm/module_34.s
new file mode 100644
index 00000000..a12d1a4a
--- /dev/null
+++ b/arm9/modules/34/asm/module_34.s
@@ -0,0 +1,601 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD34_02254840
+MOD34_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD34_02254854
+ ldr r1, _02254850 ; =MOD34_02254948
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD34_02254854
+_02254850: .word MOD34_02254948
+ thumb_func_end MOD34_02254840
+
+ thumb_func_start MOD34_02254854
+MOD34_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x38
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD34_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD34_0225490C
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD34_0225490C
+ thumb_func_end MOD34_02254854
+
+ thumb_func_start MOD34_0225489C
+MOD34_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x24
+ add r1, r5, #4
+ bl MOD34_02254A5C
+ cmp r0, #0
+ beq _022548DC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0x28]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _022548E0 ; =0x02254C7C
+ ldr r2, _022548E4 ; =MOD34_02254904
+ mov r1, #6
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x2c]
+ mov r1, #0
+ str r1, [r5, #0x30]
+ mov r0, #1
+_022548D0:
+ add r1, r1, #1
+ str r0, [r5, #8]
+ add r5, r5, #4
+ cmp r1, #6
+ blt _022548D0
+ pop {r3, r4, r5, pc}
+_022548DC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022548E0: .word 0x02254C7C
+_022548E4: .word MOD34_02254904
+ thumb_func_end MOD34_0225489C
+
+ thumb_func_start MOD34_022548E8
+MOD34_022548E8: ; 0x022548E8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _022548F6
+ bl MOD20_02254198
+_022548F6:
+ ldr r0, [r4, #0x24]
+ bl MOD34_02254A8C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD34_022548E8
+
+ thumb_func_start MOD34_02254904
+MOD34_02254904: ; 0x02254904
+ str r1, [r3, #0x30]
+ str r0, [r3, #0x34]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD34_02254904
+
+ thumb_func_start MOD34_0225490C
+MOD34_0225490C: ; 0x0225490C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254942
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254944 ; =0x02254C70
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254942
+ add r0, r4, #0
+ bl MOD34_022548E8
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x28]
+ bl MOD20_022529A0
+_02254942:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254944: .word 0x02254C70
+ thumb_func_end MOD34_0225490C
+
+ thumb_func_start MOD34_02254948
+MOD34_02254948: ; 0x02254948
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD34_02254948
+
+ thumb_func_start MOD34_02254950
+MOD34_02254950: ; 0x02254950
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254958
+ b _0225495A
+_02254958:
+ mov r1, #2
+_0225495A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD34_02254950
+
+ thumb_func_start MOD34_02254964
+MOD34_02254964: ; 0x02254964
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254974
+ cmp r0, #1
+ beq _02254984
+ b _0225499E
+_02254974:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD34_02254A98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225499E
+_02254984:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD34_02254ABC
+ cmp r0, #0
+ beq _0225499E
+ ldr r0, [r4, #0x28]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD34_02254950
+_0225499E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254964
+
+ thumb_func_start MOD34_022549A4
+MOD34_022549A4: ; 0x022549A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549B8
+ mov r1, #2
+ bl MOD34_02254950
+ mov r0, #0
+ pop {r4, pc}
+_022549B8:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549C4
+ cmp r0, #1
+ beq _022549F6
+ b _02254A1A
+_022549C4:
+ ldr r0, [r4, #0x30]
+ cmp r0, #1
+ bne _02254A1A
+ ldr r1, [r4, #0x34]
+ lsl r0, r1, #2
+ add r0, r4, r0
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _022549EE
+ strh r1, [r4, #0x20]
+ ldr r0, [r4, #0x24]
+ mov r1, #2
+ bl MOD34_02254A98
+ ldr r0, _02254A20 ; =0x00000663
+ bl MOD20_02252B28
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A1A
+_022549EE:
+ ldr r0, _02254A24 ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254A1A
+_022549F6:
+ ldr r0, [r4, #0x30]
+ cmp r0, #2
+ bne _02254A0A
+ ldr r0, [r4, #0x24]
+ mov r1, #3
+ bl MOD34_02254A98
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254A1A
+_02254A0A:
+ cmp r0, #3
+ bne _02254A1A
+ ldr r0, [r4, #0x24]
+ mov r1, #3
+ bl MOD34_02254A98
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254A1A:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254A20: .word 0x00000663
+_02254A24: .word 0x0000066E
+ thumb_func_end MOD34_022549A4
+
+ thumb_func_start MOD34_02254A28
+MOD34_02254A28: ; 0x02254A28
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A38
+ cmp r0, #1
+ beq _02254A48
+ b _02254A56
+_02254A38:
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl MOD34_02254A98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A56
+_02254A48:
+ ldr r0, [r4, #0x24]
+ bl MOD34_02254AC8
+ cmp r0, #0
+ beq _02254A56
+ mov r0, #1
+ pop {r4, pc}
+_02254A56:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254A28
+
+ thumb_func_start MOD34_02254A5C
+MOD34_02254A5C: ; 0x02254A5C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x20
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254A88
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _02254A88
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254A88:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD34_02254A5C
+
+ thumb_func_start MOD34_02254A8C
+MOD34_02254A8C: ; 0x02254A8C
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254A96
+ bl FUN_02016A18
+_02254A96:
+ pop {r3, pc}
+ thumb_func_end MOD34_02254A8C
+
+ thumb_func_start MOD34_02254A98
+MOD34_02254A98: ; 0x02254A98
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254AB8 ; =0x02254CBC
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254AB8: .word 0x02254CBC
+ thumb_func_end MOD34_02254A98
+
+ thumb_func_start MOD34_02254ABC
+MOD34_02254ABC: ; 0x02254ABC
+ ldr r3, _02254AC4 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254AC4: .word MOD20_02253794
+ thumb_func_end MOD34_02254ABC
+
+ thumb_func_start MOD34_02254AC8
+MOD34_02254AC8: ; 0x02254AC8
+ ldr r3, _02254AD0 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254AD0: .word MOD20_022537B8
+ thumb_func_end MOD34_02254AC8
+
+ thumb_func_start MOD34_02254AD4
+MOD34_02254AD4: ; 0x02254AD4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254AD4
+
+ thumb_func_start MOD34_02254AE8
+MOD34_02254AE8: ; 0x02254AE8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0x10]
+ add r0, r1, #0
+ bl MOD20_022538A0
+ add r6, r0, #0
+ ldr r0, [sp, #0x10]
+ bl MOD20_022538A4
+ add r5, r0, #0
+ ldr r0, [r6, #4]
+ ldr r2, _02254B8C ; =0x02254CA0
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r6, #4]
+ mov r0, #0xc
+ mov r1, #0x3b
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r6, #4]
+ mov r0, #0xc
+ mov r1, #0x3a
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ mov r4, #0
+ add r7, r4, #0
+_02254B4A:
+ ldr r2, [r5, #4]
+ add r0, r6, #0
+ add r1, r4, #0
+ add r3, r7, #0
+ bl MOD34_02254C1C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _02254B4A
+ ldr r0, [r6, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r0, _02254B90 ; =0x04001000
+ ldr r1, _02254B94 ; =0xFFFFE0FF
+ ldr r2, [r0]
+ ldr r4, [r0]
+ add r3, r2, #0
+ and r3, r1
+ lsl r1, r4, #0x13
+ lsr r2, r1, #0x1b
+ mov r1, #4
+ orr r1, r2
+ lsl r1, r1, #8
+ orr r1, r3
+ str r1, [r0]
+ ldr r0, [sp, #0x10]
+ str r4, [sp, #0x14]
+ bl MOD34_02254AD4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254B8C: .word 0x02254CA0
+_02254B90: .word 0x04001000
+_02254B94: .word 0xFFFFE0FF
+ thumb_func_end MOD34_02254AE8
+
+ thumb_func_start MOD34_02254B98
+MOD34_02254B98: ; 0x02254B98
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD34_02254AD4
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254B98
+
+ thumb_func_start MOD34_02254BB4
+MOD34_02254BB4: ; 0x02254BB4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r3, r0, #0
+ ldrh r1, [r3, #0x1c]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ add r2, r3, r2
+ ldr r2, [r2, #4]
+ mov r3, #1
+ bl MOD34_02254C1C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD34_02254AD4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD34_02254BB4
+
+ thumb_func_start MOD34_02254BE8
+MOD34_02254BE8: ; 0x02254BE8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r3, r0, #0
+ ldrh r1, [r3, #0x1c]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ add r2, r3, r2
+ ldr r2, [r2, #4]
+ mov r3, #0
+ bl MOD34_02254C1C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD34_02254AD4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD34_02254BE8
+
+ thumb_func_start MOD34_02254C1C
+MOD34_02254C1C: ; 0x02254C1C
+ push {r4, r5, r6, lr}
+ ldr r0, [r0, #4]
+ add r5, r1, #0
+ mov r1, #6
+ add r4, r2, #0
+ add r6, r3, #0
+ bl FUN_0201886C
+ ldr r1, _02254C6C ; =0x02254C94
+ lsl r2, r5, #1
+ ldrh r1, [r1, r2]
+ lsl r1, r1, #1
+ add r2, r0, r1
+ cmp r4, #0
+ beq _02254C44
+ add r1, r5, #1
+ mov r0, #0x48
+ add r5, r1, #0
+ mul r5, r0
+ b _02254C46
+_02254C44:
+ mov r5, #0
+_02254C46:
+ cmp r6, #0
+ beq _02254C4C
+ add r5, #0x24
+_02254C4C:
+ mov r3, #0
+ add r0, r3, #0
+_02254C50:
+ add r1, r0, #0
+ add r4, r2, #0
+_02254C54:
+ add r1, r1, #1
+ strh r5, [r4]
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r1, #6
+ blt _02254C54
+ add r3, r3, #1
+ add r2, #0x40
+ cmp r3, #6
+ blt _02254C50
+ pop {r4, r5, r6, pc}
+ nop
+_02254C6C: .word 0x02254C94
+ thumb_func_end MOD34_02254C1C
+
+ .section .rodata
+ ; 0x02254C70
+ .incbin "baserom.nds", 0x28e630, 0x88
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_34.SINIT_START
+ .global SDK_OVERLAY.MODULE_34.SINIT_END
+SDK_OVERLAY.MODULE_34.SINIT_START:
+ .word MOD34_02254840
+ .word 0
+SDK_OVERLAY.MODULE_34.SINIT_END:
diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s
new file mode 100644
index 00000000..fe5b7b14
--- /dev/null
+++ b/arm9/modules/35/asm/module_35.s
@@ -0,0 +1,1142 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD35_02254840
+MOD35_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD35_02254854
+ ldr r1, _02254850 ; =MOD35_02254924
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD35_02254854
+_02254850: .word MOD35_02254924
+ thumb_func_end MOD35_02254840
+
+ thumb_func_start MOD35_02254854
+MOD35_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x34
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD35_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD35_022548F0
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD35_022548F0
+ thumb_func_end MOD35_02254854
+
+ thumb_func_start MOD35_0225489C
+MOD35_0225489C: ; 0x0225489C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r6, r2, #0
+ bl MOD20_02252C40
+ bl FUN_02023D58
+ str r0, [r5, #0x30]
+ ldr r1, [r5, #0x30]
+ add r0, r5, #4
+ bl MOD35_02254A50
+ add r0, r5, #0
+ add r0, #0x28
+ add r1, r5, #4
+ add r2, r6, #0
+ bl MOD35_02254ADC
+ cmp r0, #0
+ beq _022548D6
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0x2c]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022548D6:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD35_0225489C
+
+ thumb_func_start MOD35_022548DC
+MOD35_022548DC: ; 0x022548DC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ bl MOD35_02254B38
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_022548DC
+
+ thumb_func_start MOD35_022548F0
+MOD35_022548F0: ; 0x022548F0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _0225491C
+ lsl r2, r1, #2
+ ldr r1, _02254920 ; =0x022550B8
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225491C
+ add r0, r4, #0
+ bl MOD35_022548DC
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x2c]
+ bl MOD20_022529A0
+_0225491C:
+ pop {r3, r4, r5, pc}
+ nop
+_02254920: .word 0x022550B8
+ thumb_func_end MOD35_022548F0
+
+ thumb_func_start MOD35_02254924
+MOD35_02254924: ; 0x02254924
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD35_02254924
+
+ thumb_func_start MOD35_0225492C
+MOD35_0225492C: ; 0x0225492C
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254934
+ b _02254936
+_02254934:
+ mov r1, #2
+_02254936:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD35_0225492C
+
+ thumb_func_start MOD35_02254940
+MOD35_02254940: ; 0x02254940
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254950
+ cmp r0, #1
+ beq _02254960
+ b _0225497A
+_02254950:
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl MOD35_02254C48
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225497A
+_02254960:
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl MOD35_02254C6C
+ cmp r0, #0
+ beq _0225497A
+ ldr r0, [r4, #0x2c]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD35_0225492C
+_0225497A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254940
+
+ thumb_func_start MOD35_02254980
+MOD35_02254980: ; 0x02254980
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254994
+ mov r1, #2
+ bl MOD35_0225492C
+ mov r0, #0
+ pop {r4, pc}
+_02254994:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _022549A0
+ cmp r1, #1
+ beq _022549C0
+ b _022549D0
+_022549A0:
+ bl MOD35_02254A08
+ cmp r0, #0
+ beq _022549D0
+ ldr r1, [r4, #0x30]
+ add r0, r4, #4
+ bl MOD35_02254A50
+ ldr r0, [r4, #0x28]
+ mov r1, #2
+ bl MOD35_02254C48
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549D0
+_022549C0:
+ ldr r0, [r4, #0x28]
+ mov r1, #2
+ bl MOD35_02254C6C
+ cmp r0, #0
+ beq _022549D0
+ mov r0, #0
+ strb r0, [r4, #1]
+_022549D0:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD35_02254980
+
+ thumb_func_start MOD35_022549D4
+MOD35_022549D4: ; 0x022549D4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549E4
+ cmp r0, #1
+ beq _022549F4
+ b _02254A02
+_022549E4:
+ ldr r0, [r4, #0x28]
+ mov r1, #1
+ bl MOD35_02254C48
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A02
+_022549F4:
+ ldr r0, [r4, #0x28]
+ bl MOD35_02254C78
+ cmp r0, #0
+ beq _02254A02
+ mov r0, #1
+ pop {r4, pc}
+_02254A02:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_022549D4
+
+ thumb_func_start MOD35_02254A08
+MOD35_02254A08: ; 0x02254A08
+ push {r3, lr}
+ sub sp, #8
+ ldr r0, [r0, #0x2c]
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02254A48
+ add r0, sp, #4
+ add r1, sp, #0
+ bl FUN_02020ACC
+ cmp r0, #0
+ beq _02254A48
+ ldr r0, [sp, #4]
+ sub r0, #0x10
+ cmp r0, #0xbf
+ bhs _02254A2E
+ mov r1, #1
+ b _02254A30
+_02254A2E:
+ mov r1, #0
+_02254A30:
+ ldr r0, [sp]
+ sub r0, #0x10
+ cmp r0, #0x9f
+ bhs _02254A3C
+ mov r0, #1
+ b _02254A3E
+_02254A3C:
+ mov r0, #0
+_02254A3E:
+ tst r0, r1
+ beq _02254A48
+ add sp, #8
+ mov r0, #1
+ pop {r3, pc}
+_02254A48:
+ mov r0, #0
+ add sp, #8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254A08
+
+ thumb_func_start MOD35_02254A50
+MOD35_02254A50: ; 0x02254A50
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp]
+ add r0, r1, #0
+ str r1, [sp, #4]
+ bl MOD05_021EC464
+ ldr r1, [sp]
+ strb r0, [r1]
+ ldr r0, [sp, #4]
+ bl FUN_02023C90
+ ldr r1, [sp]
+ mov r7, #0
+ strb r0, [r1, #1]
+ add r0, r1, #0
+ ldrb r0, [r0]
+ cmp r0, #0
+ ble _02254AD6
+ add r5, r1, #0
+ add r6, r1, #0
+_02254A7A:
+ ldr r0, [sp, #4]
+ add r1, r7, #0
+ bl FUN_02023C74
+ str r0, [sp, #8]
+ bl FUN_02023C7C
+ add r4, r0, #0
+ bl FUN_02066A6C
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ bl FUN_0206B688
+ str r0, [r5, #4]
+ add r0, r4, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r6, #0x1c]
+ add r0, r4, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r6, #0x20]
+ ldr r0, [sp, #8]
+ bl MOD05_021EC7B4
+ str r0, [r5, #0xc]
+ add r0, r4, #0
+ bl FUN_020689E8
+ str r0, [r5, #0x14]
+ ldr r1, [sp, #0xc]
+ add r0, r4, #0
+ bl FUN_02066A94
+ ldr r0, [sp]
+ add r7, r7, #1
+ ldrb r0, [r0]
+ add r5, r5, #4
+ add r6, r6, #2
+ cmp r7, r0
+ blt _02254A7A
+_02254AD6:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254A50
+
+ thumb_func_start MOD35_02254ADC
+MOD35_02254ADC: ; 0x02254ADC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x90
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254B2E
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x88
+ str r2, [r0]
+ ldr r0, _02254B34 ; =MOD35_02254E60
+ add r1, r4, #0
+ bl FUN_0200CA98
+ add r1, r4, #0
+ add r1, #0x8c
+ str r0, [r1]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD35_02254B54
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02254B2E
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254B2E:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02254B34: .word MOD35_02254E60
+ thumb_func_end MOD35_02254ADC
+
+ thumb_func_start MOD35_02254B38
+MOD35_02254B38: ; 0x02254B38
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254B52
+ bl MOD35_02254C18
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254B52:
+ pop {r4, pc}
+ thumb_func_end MOD35_02254B38
+
+ thumb_func_start MOD35_02254B54
+MOD35_02254B54: ; 0x02254B54
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r7, r0, #0
+ mov r0, #1
+ str r1, [sp, #0xc]
+ bl MOD20_022539C4
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x54
+ bl FUN_02006A34
+ mov r1, #0x14
+ bl _u32_div_f
+ ldr r1, [sp, #0xc]
+ str r0, [sp, #0x14]
+ str r0, [r7, #0x78]
+ bl MOD35_02254E88
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x50
+ mov r1, #0xc
+ mov r2, #0x52
+ mov r3, #0x53
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x64
+ mov r1, #0xc
+ mov r2, #5
+ mov r3, #6
+ bl MOD20_02253FBC
+ add r0, r7, #0
+ str r0, [sp, #0x1c]
+ add r0, #0x50
+ str r0, [sp, #0x1c]
+ add r0, r7, #0
+ mov r4, #0
+ str r0, [sp, #0x18]
+ add r0, #0x64
+ ldr r6, _02254C14 ; =0x02255110
+ add r5, r7, #0
+ str r4, [sp, #0x10]
+ str r0, [sp, #0x18]
+_02254BC2:
+ cmp r4, #0
+ blt _02254BE2
+ cmp r4, #2
+ bgt _02254BE2
+ ldr r0, [r7, #0x20]
+ ldr r2, [sp, #0x18]
+ add r1, r6, #0
+ bl MOD20_02253E74
+ ldr r2, [sp, #0x14]
+ ldr r1, [sp, #0x10]
+ str r0, [r5, #0x24]
+ add r1, r2, r1
+ bl MOD20_02253FA4
+ b _02254BEE
+_02254BE2:
+ ldr r0, [r7, #0x20]
+ ldr r2, [sp, #0x1c]
+ add r1, r6, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+_02254BEE:
+ ldr r0, [r5, #0x24]
+ mov r1, #1
+ bl MOD20_02253FAC
+ ldr r0, [sp, #0x10]
+ add r4, r4, #1
+ add r0, #0x20
+ add r6, #0x10
+ add r5, r5, #4
+ str r0, [sp, #0x10]
+ cmp r4, #0xb
+ blt _02254BC2
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD35_02254EC8
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254C14: .word 0x02255110
+ thumb_func_end MOD35_02254B54
+
+ thumb_func_start MOD35_02254C18
+MOD35_02254C18: ; 0x02254C18
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02254C20:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254C2C
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+_02254C2C:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xb
+ blt _02254C20
+ add r0, r6, #0
+ add r0, #0x64
+ bl MOD20_02254014
+ add r6, #0x50
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254C18
+
+ thumb_func_start MOD35_02254C48
+MOD35_02254C48: ; 0x02254C48
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254C68 ; =0x022550E0
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254C68: .word 0x022550E0
+ thumb_func_end MOD35_02254C48
+
+ thumb_func_start MOD35_02254C6C
+MOD35_02254C6C: ; 0x02254C6C
+ ldr r3, _02254C74 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254C74: .word MOD20_02253794
+ thumb_func_end MOD35_02254C6C
+
+ thumb_func_start MOD35_02254C78
+MOD35_02254C78: ; 0x02254C78
+ ldr r3, _02254C80 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254C80: .word MOD20_022537B8
+ thumb_func_end MOD35_02254C78
+
+ thumb_func_start MOD35_02254C84
+MOD35_02254C84: ; 0x02254C84
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254C84
+
+ thumb_func_start MOD35_02254C98
+MOD35_02254C98: ; 0x02254C98
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254D24 ; =0x022550C4
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x51
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x50
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254D28 ; =0x0400104C
+ mov r0, #0
+ strb r0, [r1]
+ strb r0, [r1, #1]
+ sub r1, #0x4c
+ ldr r3, [r1]
+ ldr r2, [r1]
+ ldr r0, _02254D2C ; =0xFFFFE0FF
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD35_02254C84
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254D24: .word 0x022550C4
+_02254D28: .word 0x0400104C
+_02254D2C: .word 0xFFFFE0FF
+ thumb_func_end MOD35_02254C98
+
+ thumb_func_start MOD35_02254D30
+MOD35_02254D30: ; 0x02254D30
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02254D4C
+ cmp r0, #1
+ beq _02254D5A
+ pop {r3, r4, r5, pc}
+_02254D4C:
+ mov r0, #1
+ add r4, #0x84
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02254D5A:
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD35_02254C6C
+ cmp r0, #0
+ beq _02254D7C
+ ldr r0, _02254D80 ; =0x0400104C
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD35_02254C84
+_02254D7C:
+ pop {r3, r4, r5, pc}
+ nop
+_02254D80: .word 0x0400104C
+ thumb_func_end MOD35_02254D30
+
+ thumb_func_start MOD35_02254D84
+MOD35_02254D84: ; 0x02254D84
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #3
+ bhi _02254E50
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254DAE: ; jump table
+ .short _02254DB6 - _02254DAE - 2 ; case 0
+ .short _02254DDC - _02254DAE - 2 ; case 1
+ .short _02254DF4 - _02254DAE - 2 ; case 2
+ .short _02254E4A - _02254DAE - 2 ; case 3
+_02254DB6:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ mov r0, #0xa
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ bl MOD35_02254E58
+ ldr r0, _02254E54 ; =0x00000678
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254DDC:
+ ldr r0, [r4, #0x78]
+ add r1, r6, #0
+ bl MOD35_02254E88
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD35_02254EC8
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254DF4:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02254E10
+ mov r0, #0
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ bl MOD35_02254E58
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254E10:
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #4
+ blo _02254E50
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x80
+ str r1, [r0]
+ ldr r0, [r4, #0x7c]
+ sub r0, r0, #1
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ bl MOD35_02254E58
+ ldr r0, [r4, #0x7c]
+ cmp r0, #0
+ bne _02254E50
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254E4A:
+ add r0, r5, #0
+ bl MOD35_02254C84
+_02254E50:
+ pop {r4, r5, r6, pc}
+ nop
+_02254E54: .word 0x00000678
+ thumb_func_end MOD35_02254D84
+
+ thumb_func_start MOD35_02254E58
+MOD35_02254E58: ; 0x02254E58
+ mov r1, #1
+ add r0, #0x88
+ str r1, [r0]
+ bx lr
+ thumb_func_end MOD35_02254E58
+
+ thumb_func_start MOD35_02254E60
+MOD35_02254E60: ; 0x02254E60
+ add r0, r1, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02254E82
+ ldr r2, [r1, #0x7c]
+ ldr r3, _02254E84 ; =0x0400104C
+ lsl r0, r2, #4
+ orr r0, r2
+ strb r0, [r3]
+ ldr r2, [r1, #0x7c]
+ add r1, #0x88
+ lsl r0, r2, #4
+ orr r0, r2
+ strb r0, [r3, #1]
+ mov r0, #0
+ str r0, [r1]
+_02254E82:
+ bx lr
+ .align 2, 0
+_02254E84: .word 0x0400104C
+ thumb_func_end MOD35_02254E60
+
+ thumb_func_start MOD35_02254E88
+MOD35_02254E88: ; 0x02254E88
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #1
+ add r4, r1, #0
+ add r1, r0, #0
+ mov r2, #0
+ bl FUN_0206B6D4
+ ldrb r1, [r4]
+ cmp r1, #0
+ beq _02254EA4
+ ldr r1, [r4, #4]
+ b _02254EA6
+_02254EA4:
+ add r1, r0, #0
+_02254EA6:
+ str r1, [sp]
+ ldrb r1, [r4]
+ cmp r1, #1
+ bls _02254EB2
+ ldr r1, [r4, #8]
+ b _02254EB4
+_02254EB2:
+ add r1, r0, #0
+_02254EB4:
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, sp, #0
+ mov r2, #3
+ mov r3, #1
+ bl MOD20_02253A04
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD35_02254E88
+
+ thumb_func_start MOD35_02254EC8
+MOD35_02254EC8: ; 0x02254EC8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #0
+ add r6, r1, #0
+ str r0, [sp]
+ ldrb r0, [r6]
+ cmp r0, #0
+ ble _02254F00
+ add r4, r6, #0
+ add r5, r7, #0
+_02254EDC:
+ ldrh r0, [r4, #0x1c]
+ ldrh r1, [r4, #0x20]
+ mov r2, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [r5, #0x24]
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ ldr r0, [sp]
+ ldrb r1, [r6]
+ add r0, r0, #1
+ add r4, r4, #2
+ add r5, r5, #4
+ str r0, [sp]
+ cmp r0, r1
+ blt _02254EDC
+_02254F00:
+ mov r0, #1
+ mov r1, #0
+ add r2, r0, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [r7, #0x2c]
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ ldrb r0, [r6]
+ cmp r0, #0
+ beq _02254F36
+ ldrh r0, [r6, #0x1c]
+ mov r1, #0x1c
+ bl FUN_02068678
+ cmp r0, #0
+ ldr r0, [r7, #0x24]
+ beq _02254F30
+ mov r1, #6
+ bl MOD20_02253F28
+ b _02254F36
+_02254F30:
+ mov r1, #7
+ bl MOD20_02253F28
+_02254F36:
+ add r0, r7, #0
+ ldr r1, [r6, #0xc]
+ add r0, #0x30
+ bl MOD35_02254FD8
+ add r0, r7, #0
+ ldr r1, [r6, #0x10]
+ add r0, #0x3c
+ bl MOD35_02254FD8
+ ldr r0, [r7, #0x48]
+ ldr r1, [r6, #0x14]
+ bl MOD35_02255094
+ ldr r0, [r7, #0x4c]
+ ldr r1, [r6, #0x18]
+ bl MOD35_02255094
+ ldrb r0, [r6]
+ cmp r0, #0
+ bne _02254F64
+ mov r4, #1
+ b _02254F66
+_02254F64:
+ mov r4, #0
+_02254F66:
+ ldr r0, [r7, #0x24]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x30]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x34]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x38]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x48]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldrb r0, [r6]
+ cmp r0, #1
+ bhi _02254F98
+ mov r4, #1
+ b _02254F9A
+_02254F98:
+ mov r4, #0
+_02254F9A:
+ ldr r0, [r7, #0x28]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x3c]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x40]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x44]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x4c]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldrb r0, [r6, #1]
+ cmp r0, #0
+ bne _02254FCC
+ mov r1, #1
+ b _02254FCE
+_02254FCC:
+ mov r1, #0
+_02254FCE:
+ ldr r0, [r7, #0x2c]
+ bl MOD20_02253F78
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254EC8
+
+ thumb_func_start MOD35_02254FD8
+MOD35_02254FD8: ; 0x02254FD8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r1, #0
+ str r0, [sp]
+ cmp r7, #0x64
+ bls _02254FE6
+ mov r7, #0x64
+_02254FE6:
+ ldr r2, _02255088 ; =0x04000280
+ mov r3, #0
+ strh r3, [r2]
+ add r0, r2, #0
+ str r7, [r2, #0x10]
+ mov r1, #0x64
+ add r0, #0x18
+ str r1, [r0]
+ str r3, [r0, #4]
+ lsr r0, r2, #0xb
+_02254FFA:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254FFA
+ ldr r0, _0225508C ; =0x040002A0
+ ldr r4, _02255088 ; =0x04000280
+ ldr r0, [r0]
+ str r0, [sp, #4]
+ lsr r0, r4, #0xb
+_0225500A:
+ ldrh r1, [r4]
+ tst r1, r0
+ bne _0225500A
+ ldr r3, _02255090 ; =0x040002A8
+ mov r1, #0
+ ldr r2, [r3]
+ add r0, r3, #0
+ strh r1, [r4]
+ sub r0, #0x18
+ str r2, [r0]
+ mov r0, #0xa
+ sub r3, #0x10
+ str r0, [r3]
+ ldr r2, _02255088 ; =0x04000280
+ str r1, [r3, #4]
+ lsr r0, r2, #0xb
+_0225502A:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0225502A
+ ldr r0, _0225508C ; =0x040002A0
+ ldr r2, _02255088 ; =0x04000280
+ ldr r0, [r0]
+ str r0, [sp, #8]
+ lsr r0, r2, #0xb
+_0225503A:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0225503A
+ ldr r0, _02255090 ; =0x040002A8
+ ldr r5, [sp]
+ ldr r0, [r0]
+ mov r6, #0
+ str r0, [sp, #0xc]
+ add r4, sp, #4
+_0225504C:
+ ldr r0, [r5]
+ ldr r1, [r4]
+ bl MOD20_02253F28
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #3
+ blt _0225504C
+ cmp r7, #0x64
+ bhs _02255066
+ mov r1, #1
+ b _02255068
+_02255066:
+ mov r1, #0
+_02255068:
+ ldr r0, [sp]
+ ldr r0, [r0]
+ bl MOD20_02253F78
+ cmp r7, #0xa
+ bhs _02255078
+ mov r1, #1
+ b _0225507A
+_02255078:
+ mov r1, #0
+_0225507A:
+ ldr r0, [sp]
+ ldr r0, [r0, #4]
+ bl MOD20_02253F78
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255088: .word 0x04000280
+_0225508C: .word 0x040002A0
+_02255090: .word 0x040002A8
+ thumb_func_end MOD35_02254FD8
+
+ thumb_func_start MOD35_02255094
+MOD35_02255094: ; 0x02255094
+ push {r3, lr}
+ cmp r1, #0
+ beq _022550A0
+ cmp r1, #1
+ beq _022550A8
+ b _022550B0
+_022550A0:
+ mov r1, #0xa
+ bl MOD20_02253F28
+ pop {r3, pc}
+_022550A8:
+ mov r1, #0xb
+ bl MOD20_02253F28
+ pop {r3, pc}
+_022550B0:
+ mov r1, #0xc
+ bl MOD20_02253F28
+ pop {r3, pc}
+ thumb_func_end MOD35_02255094
+
+ .section .rodata
+ ; 0x022550B8
+ .incbin "baserom.nds", 0x28f078, 0x108
+
+ .section .sinit
+ .word MOD35_02254840
diff --git a/arm9/modules/36/asm/module_36.s b/arm9/modules/36/asm/module_36.s
new file mode 100644
index 00000000..47ccf2cc
--- /dev/null
+++ b/arm9/modules/36/asm/module_36.s
@@ -0,0 +1,1571 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD36_02254840
+MOD36_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD36_02254854
+ ldr r1, _02254850 ; =MOD36_02254990
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD36_02254854
+_02254850: .word MOD36_02254990
+ thumb_func_end MOD36_02254840
+
+ thumb_func_start MOD36_02254854
+MOD36_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ ldr r1, _02254898 ; =0x00005B90
+ mov r0, #8
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD36_022548A0
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _0225489C ; =MOD36_02254938
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word 0x00005B90
+_0225489C: .word MOD36_02254938
+ thumb_func_end MOD36_02254854
+
+ thumb_func_start MOD36_022548A0
+MOD36_022548A0: ; 0x022548A0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, _02254904 ; =0x00005B78
+ str r3, [r5, #0xc]
+ mov r0, #0
+ strb r0, [r5, r1]
+ mov r6, #1
+ add r3, r1, #1
+ strb r6, [r5, r3]
+ add r3, r1, #2
+ strb r0, [r5, r3]
+ add r0, r1, #4
+ add r0, r5, r0
+ add r1, r5, #4
+ bl MOD36_02254E30
+ cmp r0, #0
+ beq _022548FC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ strb r0, [r5, #3]
+ add r0, r5, #4
+ bl MOD36_02254E10
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254908 ; =0x022553E8
+ ldr r2, _0225490C ; =MOD36_02254980
+ mov r1, #3
+ add r3, r5, #0
+ bl MOD20_02254130
+ ldr r1, _02254910 ; =0x00005B84
+ mov r2, #0
+ str r0, [r5, r1]
+ add r0, r1, #4
+ str r2, [r5, r0]
+ sub r0, r1, #4
+ str r4, [r5, r0]
+ add sp, #4
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, pc}
+_022548FC:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254904: .word 0x00005B78
+_02254908: .word 0x022553E8
+_0225490C: .word MOD36_02254980
+_02254910: .word 0x00005B84
+ thumb_func_end MOD36_022548A0
+
+ thumb_func_start MOD36_02254914
+MOD36_02254914: ; 0x02254914
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02254930 ; =0x00005B84
+ ldr r0, [r4, r0]
+ bl MOD20_02254198
+ ldr r0, _02254934 ; =0x00005B7C
+ ldr r0, [r4, r0]
+ bl MOD36_02254E78
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+_02254930: .word 0x00005B84
+_02254934: .word 0x00005B7C
+ thumb_func_end MOD36_02254914
+
+ thumb_func_start MOD36_02254938
+MOD36_02254938: ; 0x02254938
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254974
+ ldr r1, _02254978 ; =0x00005B80
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _0225497C ; =0x022553F4
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254974
+ add r0, r4, #0
+ bl MOD36_02254914
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, _02254978 ; =0x00005B80
+ ldr r0, [r4, r0]
+ bl MOD20_022529A0
+_02254974:
+ pop {r3, r4, r5, pc}
+ nop
+_02254978: .word 0x00005B80
+_0225497C: .word 0x022553F4
+ thumb_func_end MOD36_02254938
+
+ thumb_func_start MOD36_02254980
+MOD36_02254980: ; 0x02254980
+ ldr r2, _0225498C ; =0x00005B88
+ str r1, [r3, r2]
+ add r1, r2, #4
+ str r0, [r3, r1]
+ bx lr
+ nop
+_0225498C: .word 0x00005B88
+ thumb_func_end MOD36_02254980
+
+ thumb_func_start MOD36_02254990
+MOD36_02254990: ; 0x02254990
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD36_02254990
+
+ thumb_func_start MOD36_02254998
+MOD36_02254998: ; 0x02254998
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549A0
+ b _022549A2
+_022549A0:
+ mov r1, #2
+_022549A2:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD36_02254998
+
+ thumb_func_start MOD36_022549AC
+MOD36_022549AC: ; 0x022549AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549BC
+ cmp r0, #1
+ beq _022549CE
+ b _022549EC
+_022549BC:
+ ldr r0, _022549F0 ; =0x00005B7C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549EC
+_022549CE:
+ ldr r0, _022549F0 ; =0x00005B7C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD36_02254F30
+ cmp r0, #0
+ beq _022549EC
+ ldr r0, _022549F4 ; =0x00005B80
+ ldr r0, [r4, r0]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD36_02254998
+_022549EC:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_022549F0: .word 0x00005B7C
+_022549F4: .word 0x00005B80
+ thumb_func_end MOD36_022549AC
+
+ thumb_func_start MOD36_022549F8
+MOD36_022549F8: ; 0x022549F8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254A0A
+ mov r1, #2
+ bl MOD36_02254998
+_02254A0A:
+ ldrb r0, [r4, #1]
+ cmp r0, #3
+ bhi _02254A30
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254A1C: ; jump table
+ .short _02254A24 - _02254A1C - 2 ; case 0
+ .short _02254AF4 - _02254A1C - 2 ; case 1
+ .short _02254B4E - _02254A1C - 2 ; case 2
+ .short _02254B7C - _02254A1C - 2 ; case 3
+_02254A24:
+ ldr r0, _02254BCC ; =0x00005B80
+ ldr r0, [r4, r0]
+ bl MOD20_02252C08
+ cmp r0, #0
+ beq _02254A32
+_02254A30:
+ b _02254BC4
+_02254A32:
+ ldr r1, _02254BD0 ; =0x00005B88
+ ldr r0, [r4, r1]
+ cmp r0, #1
+ bne _02254AAE
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02254A4C
+ cmp r0, #1
+ beq _02254A82
+ cmp r0, #2
+ beq _02254A8A
+ b _02254AA6
+_02254A4C:
+ add r0, r1, #0
+ mov r3, #1
+ sub r0, #0x10
+ strb r3, [r4, r0]
+ add r0, r1, #0
+ mov r2, #0
+ sub r0, #0xf
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r3, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #7
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldr r0, _02254BD8 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #1
+ strb r0, [r4, #1]
+ b _02254AA6
+_02254A82:
+ ldr r0, _02254BDC ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254AA6
+_02254A8A:
+ add r0, r1, #0
+ mov r2, #1
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r2, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ ldr r0, _02254BD8 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #3
+ strb r0, [r4, #1]
+_02254AA6:
+ ldr r0, _02254BD0 ; =0x00005B88
+ mov r1, #0
+ str r1, [r4, r0]
+ b _02254BC4
+_02254AAE:
+ ldrb r0, [r4, #3]
+ cmp r0, #0
+ beq _02254ADA
+ add r0, r4, #0
+ ldr r6, [r4, #4]
+ ldr r5, [r4, #8]
+ bl MOD36_02254C44
+ cmp r0, #0
+ beq _02254AD4
+ ldr r0, [r4, #8]
+ add r1, r6, #0
+ str r0, [sp]
+ ldr r3, [r4, #4]
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD36_02254C90
+ b _02254BC4
+_02254AD4:
+ mov r0, #0
+ strb r0, [r4, #3]
+ b _02254BC4
+_02254ADA:
+ add r0, r4, #0
+ bl MOD36_02254BE4
+ cmp r0, #0
+ beq _02254BC4
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #3
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ mov r0, #1
+ strb r0, [r4, #3]
+ b _02254BC4
+_02254AF4:
+ ldr r1, _02254BD0 ; =0x00005B88
+ ldr r0, [r4, r1]
+ cmp r0, #1
+ bne _02254BC4
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02254B0C
+ cmp r0, #1
+ beq _02254B14
+ cmp r0, #2
+ bne _02254B46
+_02254B0C:
+ ldr r0, _02254BDC ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254B46
+_02254B14:
+ add r0, r1, #0
+ mov r2, #1
+ sub r0, #0x10
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xf
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r2, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #8
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldr r0, _02254BD8 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #2
+ strb r0, [r4, #1]
+_02254B46:
+ ldr r0, _02254BD0 ; =0x00005B88
+ mov r1, #0
+ str r1, [r4, r0]
+ b _02254BC4
+_02254B4E:
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #8
+ ldr r0, [r4, r0]
+ bl MOD36_02254F30
+ cmp r0, #0
+ beq _02254BC4
+ ldr r0, _02254BE0 ; =0x00005B78
+ mov r3, #0
+ strb r3, [r4, r0]
+ mov r2, #1
+ add r1, r0, #1
+ strb r2, [r4, r1]
+ add r1, r0, #2
+ strb r3, [r4, r1]
+ add r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD36_02254F0C
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254BC4
+_02254B7C:
+ ldr r1, _02254BD0 ; =0x00005B88
+ ldr r0, [r4, r1]
+ cmp r0, #2
+ bne _02254B9C
+ add r0, r1, #0
+ mov r2, #0
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r2, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254BC4
+_02254B9C:
+ cmp r0, #3
+ bne _02254BC4
+ mov r0, #0
+ sub r1, #0xe
+ strb r0, [r4, r1]
+ add r0, r4, #4
+ bl MOD36_02254E10
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #5
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #6
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254BC4:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254BCC: .word 0x00005B80
+_02254BD0: .word 0x00005B88
+_02254BD4: .word 0x00005B7C
+_02254BD8: .word 0x00000663
+_02254BDC: .word 0x0000066E
+_02254BE0: .word 0x00005B78
+ thumb_func_end MOD36_022549F8
+
+ thumb_func_start MOD36_02254BE4
+MOD36_02254BE4: ; 0x02254BE4
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252B68
+ cmp r0, #0
+ beq _02254C3E
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ sub r1, #0x10
+ sub r2, #0x10
+ cmp r1, #0x9b
+ bhs _02254C06
+ mov r0, #1
+ b _02254C08
+_02254C06:
+ mov r0, #0
+_02254C08:
+ cmp r2, #0x95
+ bhs _02254C10
+ mov r3, #1
+ b _02254C12
+_02254C10:
+ mov r3, #0
+_02254C12:
+ tst r0, r3
+ beq _02254C3E
+ lsr r3, r1, #1
+ lsr r1, r2, #1
+ add r2, r4, #0
+ mov r0, #0x96
+ add r2, #0x10
+ mul r0, r3
+ str r3, [sp, #4]
+ str r1, [sp]
+ add r2, r2, r0
+ ldrb r0, [r2, r1]
+ cmp r0, #0
+ bne _02254C3E
+ mov r0, #1
+ strb r0, [r2, r1]
+ ldr r1, [sp, #4]
+ str r1, [r4, #4]
+ ldr r1, [sp]
+ add sp, #8
+ str r1, [r4, #8]
+ pop {r4, pc}
+_02254C3E:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD36_02254BE4
+
+ thumb_func_start MOD36_02254C44
+MOD36_02254C44: ; 0x02254C44
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252B68
+ cmp r0, #0
+ beq _02254C8A
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ sub r1, #0x10
+ sub r2, #0x10
+ cmp r1, #0x9b
+ bhs _02254C66
+ mov r0, #1
+ b _02254C68
+_02254C66:
+ mov r0, #0
+_02254C68:
+ cmp r2, #0x95
+ bhs _02254C70
+ mov r3, #1
+ b _02254C72
+_02254C70:
+ mov r3, #0
+_02254C72:
+ tst r0, r3
+ beq _02254C8A
+ lsr r1, r1, #1
+ lsr r0, r2, #1
+ str r1, [sp, #4]
+ str r0, [sp]
+ str r1, [r4, #4]
+ ldr r0, [sp]
+ add sp, #8
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+_02254C8A:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD36_02254C44
+
+ thumb_func_start MOD36_02254C90
+MOD36_02254C90: ; 0x02254C90
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ ldr r0, [sp, #0x28]
+ add r4, r2, #0
+ add r5, r1, #0
+ str r3, [sp]
+ str r0, [sp, #0x28]
+ cmp r4, r0
+ bne _02254CAC
+ add r0, r3, #0
+ cmp r5, r0
+ bne _02254CAC
+ b _02254DCC
+_02254CAC:
+ ldr r0, [sp]
+ cmp r0, r5
+ bls _02254CB6
+ sub r1, r0, r5
+ b _02254CB8
+_02254CB6:
+ sub r1, r5, r0
+_02254CB8:
+ ldr r0, [sp, #0x28]
+ cmp r0, r4
+ bls _02254CC2
+ sub r2, r0, r4
+ b _02254CC4
+_02254CC2:
+ sub r2, r4, r0
+_02254CC4:
+ cmp r1, r2
+ bls _02254D46
+ ldr r0, [sp]
+ cmp r0, r5
+ bls _02254CD4
+ mov r0, #1
+ str r0, [sp, #4]
+ b _02254CDA
+_02254CD4:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #4]
+_02254CDA:
+ cmp r1, #0
+ beq _02254CEC
+ ldr r0, [sp, #0x28]
+ sub r0, r0, r4
+ lsl r0, r0, #0xc
+ bl _s32_div_f
+ str r0, [sp, #0x10]
+ b _02254CF0
+_02254CEC:
+ mov r0, #0
+ str r0, [sp, #0x10]
+_02254CF0:
+ ldr r0, [sp, #0x10]
+ lsl r1, r4, #0xc
+ add r7, r1, r0
+ ldr r0, [sp, #4]
+ add r5, r5, r0
+ ldr r0, [sp]
+ cmp r5, r0
+ beq _02254DB0
+ mov r1, #0x96
+ add r0, r5, #0
+ mul r0, r1
+ add r4, r6, r0
+ ldr r0, [sp, #4]
+ mul r1, r0
+ str r1, [sp, #0xc]
+_02254D0E:
+ asr r1, r7, #0xc
+ cmp r5, #0x9c
+ bhs _02254D32
+ cmp r1, #0x96
+ bhs _02254D32
+ add r0, r4, r1
+ ldrb r2, [r0, #0x10]
+ cmp r2, #0
+ bne _02254D32
+ mov r2, #0
+ strb r2, [r0, #0x10]
+ str r5, [r6, #4]
+ str r1, [r6, #8]
+ ldr r0, _02254DD0 ; =0x00005B7C
+ mov r1, #3
+ ldr r0, [r6, r0]
+ bl MOD36_02254F0C
+_02254D32:
+ ldr r0, [sp, #0xc]
+ add r4, r4, r0
+ ldr r0, [sp, #4]
+ add r5, r5, r0
+ ldr r0, [sp, #0x10]
+ add r7, r7, r0
+ ldr r0, [sp]
+ cmp r5, r0
+ bne _02254D0E
+ b _02254DB0
+_02254D46:
+ ldr r0, [sp, #0x28]
+ cmp r0, r4
+ bls _02254D50
+ mov r7, #1
+ b _02254D54
+_02254D50:
+ mov r7, #0
+ mvn r7, r7
+_02254D54:
+ cmp r2, #0
+ beq _02254D68
+ ldr r0, [sp]
+ add r1, r2, #0
+ sub r0, r0, r5
+ lsl r0, r0, #0xc
+ bl _s32_div_f
+ str r0, [sp, #8]
+ b _02254D6C
+_02254D68:
+ mov r0, #0
+ str r0, [sp, #8]
+_02254D6C:
+ ldr r0, [sp, #8]
+ lsl r1, r5, #0xc
+ add r5, r1, r0
+ ldr r0, [sp, #0x28]
+ add r4, r4, r7
+ cmp r4, r0
+ beq _02254DB0
+_02254D7A:
+ asr r1, r5, #0xc
+ cmp r4, #0x96
+ bhs _02254DA4
+ cmp r1, #0x9c
+ bhs _02254DA4
+ mov r0, #0x96
+ mul r0, r1
+ add r0, r6, r0
+ add r0, r0, r4
+ ldrb r2, [r0, #0x10]
+ cmp r2, #0
+ bne _02254DA4
+ mov r2, #1
+ strb r2, [r0, #0x10]
+ str r1, [r6, #4]
+ ldr r0, _02254DD0 ; =0x00005B7C
+ str r4, [r6, #8]
+ ldr r0, [r6, r0]
+ mov r1, #3
+ bl MOD36_02254F0C
+_02254DA4:
+ ldr r0, [sp, #8]
+ add r4, r4, r7
+ add r5, r5, r0
+ ldr r0, [sp, #0x28]
+ cmp r4, r0
+ bne _02254D7A
+_02254DB0:
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x96
+ bhs _02254DCC
+ ldr r0, [sp]
+ cmp r0, #0x9c
+ bhs _02254DCC
+ str r0, [r6, #4]
+ ldr r0, [sp, #0x28]
+ mov r1, #3
+ str r0, [r6, #8]
+ ldr r0, _02254DD0 ; =0x00005B7C
+ ldr r0, [r6, r0]
+ bl MOD36_02254F0C
+_02254DCC:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254DD0: .word 0x00005B7C
+ thumb_func_end MOD36_02254C90
+
+ thumb_func_start MOD36_02254DD4
+MOD36_02254DD4: ; 0x02254DD4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254DE4
+ cmp r0, #1
+ beq _02254DF6
+ b _02254E06
+_02254DE4:
+ ldr r0, _02254E0C ; =0x00005B7C
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254E06
+_02254DF6:
+ ldr r0, _02254E0C ; =0x00005B7C
+ ldr r0, [r4, r0]
+ bl MOD36_02254F3C
+ cmp r0, #0
+ beq _02254E06
+ mov r0, #1
+ pop {r4, pc}
+_02254E06:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254E0C: .word 0x00005B7C
+ thumb_func_end MOD36_02254DD4
+
+ thumb_func_start MOD36_02254E10
+MOD36_02254E10: ; 0x02254E10
+ push {r4, r5}
+ mov r4, #0
+ add r2, r4, #0
+ add r3, r4, #0
+_02254E18:
+ add r5, r3, #0
+_02254E1A:
+ add r1, r0, r5
+ add r5, r5, #1
+ strb r2, [r1, #0xc]
+ cmp r5, #0x96
+ blt _02254E1A
+ add r4, r4, #1
+ add r0, #0x96
+ cmp r4, #0x9c
+ blt _02254E18
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD36_02254E10
+
+ thumb_func_start MOD36_02254E30
+MOD36_02254E30: ; 0x02254E30
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x70
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254E74
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD36_02254E8C
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02254E74
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254E74:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD36_02254E30
+
+ thumb_func_start MOD36_02254E78
+MOD36_02254E78: ; 0x02254E78
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254E88
+ bl MOD36_02254EE4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254E88:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD36_02254E78
+
+ thumb_func_start MOD36_02254E8C
+MOD36_02254E8C: ; 0x02254E8C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r7, r0, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x59
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x34
+ mov r1, #0xc
+ mov r2, #0x57
+ mov r3, #0x58
+ bl MOD20_02253FBC
+ add r0, r7, #0
+ str r0, [sp, #0xc]
+ add r0, #0x34
+ ldr r4, _02254EE0 ; =0x02255440
+ mov r6, #0
+ add r5, r7, #0
+ str r0, [sp, #0xc]
+_02254EC6:
+ ldr r0, [r7, #0x20]
+ ldr r2, [sp, #0xc]
+ add r1, r4, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+ add r6, r6, #1
+ add r4, #0x10
+ add r5, r5, #4
+ cmp r6, #4
+ blt _02254EC6
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254EE0: .word 0x02255440
+ thumb_func_end MOD36_02254E8C
+
+ thumb_func_start MOD36_02254EE4
+MOD36_02254EE4: ; 0x02254EE4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02254EEC:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254EF8
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+_02254EF8:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02254EEC
+ add r6, #0x34
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD36_02254EE4
+
+ thumb_func_start MOD36_02254F0C
+MOD36_02254F0C: ; 0x02254F0C
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254F2C ; =0x02255480
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254F2C: .word 0x02255480
+ thumb_func_end MOD36_02254F0C
+
+ thumb_func_start MOD36_02254F30
+MOD36_02254F30: ; 0x02254F30
+ ldr r3, _02254F38 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254F38: .word MOD20_02253794
+ thumb_func_end MOD36_02254F30
+
+ thumb_func_start MOD36_02254F3C
+MOD36_02254F3C: ; 0x02254F3C
+ ldr r3, _02254F44 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254F44: .word MOD20_022537B8
+ thumb_func_end MOD36_02254F3C
+
+ thumb_func_start MOD36_02254F48
+MOD36_02254F48: ; 0x02254F48
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD36_02254F48
+
+ thumb_func_start MOD36_02254F5C
+MOD36_02254F5C: ; 0x02254F5C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ mov r0, #8
+ add r5, r1, #0
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254F70
+ bl ErrorHandling
+_02254F70:
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _0225502C ; =0x02255408
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #4]
+ ldr r2, _02255030 ; =0x02255424
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254F9E
+ bl ErrorHandling
+_02254F9E:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x56
+ mov r3, #6
+ bl FUN_0200687C
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x55
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254FEA
+ bl ErrorHandling
+_02254FEA:
+ add r0, r4, #0
+ lsr r1, r6, #5
+ bl MOD36_0225503C
+ ldr r0, [r4, #4]
+ mov r1, #7
+ bl FUN_02017CD0
+ ldr r1, _02255034 ; =0x04001000
+ ldr r0, _02255038 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #0x14
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r5, #0
+ bl MOD36_02254F48
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02255028
+ bl ErrorHandling
+_02255028:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0225502C: .word 0x02255408
+_02255030: .word 0x02255424
+_02255034: .word 0x04001000
+_02255038: .word 0xFFFFE0FF
+ thumb_func_end MOD36_02254F5C
+
+ thumb_func_start MOD36_0225503C
+MOD36_0225503C: ; 0x0225503C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ ldr r3, _02255098 ; =0x02255400
+ add r4, r0, #0
+ ldrh r5, [r3]
+ add r0, sp, #0
+ add r2, sp, #0
+ strh r5, [r0]
+ ldrh r5, [r3, #2]
+ strh r5, [r0, #2]
+ ldrh r5, [r3, #4]
+ ldrh r3, [r3, #6]
+ strh r5, [r0, #4]
+ strh r3, [r0, #6]
+ str r1, [r4, #0x58]
+ strh r1, [r0, #6]
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x48
+ bl FUN_02019150
+ ldr r0, [r4]
+ mov r2, #0xbe
+ ldr r0, [r0, #8]
+ ldr r1, [r4, #0x54]
+ lsl r2, r2, #6
+ bl FUN_0208946C
+ cmp r0, #0
+ bne _02255082
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #4
+ bl FUN_02019620
+_02255082:
+ add r0, r4, #0
+ add r0, #0x48
+ bl FUN_02019270
+ add r4, #0x48
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_02255098: .word 0x02255400
+ thumb_func_end MOD36_0225503C
+
+ thumb_func_start MOD36_0225509C
+MOD36_0225509C: ; 0x0225509C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _022550B8
+ cmp r0, #1
+ beq _022550C4
+ pop {r3, r4, r5, pc}
+_022550B8:
+ mov r0, #1
+ str r0, [r4, #0x5c]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022550C4:
+ ldr r0, [r4]
+ mov r2, #0xbe
+ ldr r0, [r0, #8]
+ ldr r1, [r4, #0x54]
+ lsl r2, r2, #6
+ bl FUN_02089444
+ add r0, r4, #0
+ add r0, #0x48
+ bl FUN_02019178
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #7
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD36_02254F48
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD36_0225509C
+
+ thumb_func_start MOD36_022550F4
+MOD36_022550F4: ; 0x022550F4
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r0, #0x48
+ bl FUN_02019548
+ add r0, r4, #0
+ bl MOD36_02254F48
+ pop {r4, pc}
+ thumb_func_end MOD36_022550F4
+
+ thumb_func_start MOD36_0225510C
+MOD36_0225510C: ; 0x0225510C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r1, [r4]
+ ldr r0, [r1]
+ lsl r2, r0, #1
+ ldr r0, [r1, #4]
+ mov r1, #0x14
+ lsl r3, r0, #1
+ asr r5, r3, #3
+ asr r0, r2, #3
+ mul r1, r5
+ add r5, r0, r1
+ mov r0, #2
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, #0x48
+ mov r1, #1
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ ldr r1, [r4, #0x54]
+ lsl r0, r5, #5
+ add r0, r1, r0
+ ldr r1, [r4, #0x58]
+ mov r2, #0x20
+ add r1, r1, r5
+ lsl r1, r1, #5
+ bl GXS_LoadBG3Char
+ add r0, r6, #0
+ bl MOD36_02254F48
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD36_0225510C
+
+ thumb_func_start MOD36_02255164
+MOD36_02255164: ; 0x02255164
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r0, #0x48
+ bl FUN_02019548
+ add r0, r4, #0
+ bl MOD36_02254F48
+ pop {r4, pc}
+ thumb_func_end MOD36_02255164
+
+ thumb_func_start MOD36_0225517C
+MOD36_0225517C: ; 0x0225517C
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r5, r0, #0
+ ldr r0, _022551D4 ; =0x00005B74
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _0225519C
+ mov r1, #2
+ b _0225519E
+_0225519C:
+ mov r1, #1
+_0225519E:
+ ldr r0, [r4, #0x28]
+ bl MOD20_02253F28
+ ldr r0, _022551D8 ; =0x00005B75
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _022551B0
+ mov r1, #4
+ b _022551B2
+_022551B0:
+ mov r1, #3
+_022551B2:
+ ldr r0, [r4, #0x2c]
+ bl MOD20_02253F28
+ ldr r0, _022551DC ; =0x00005B76
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _022551C4
+ mov r1, #6
+ b _022551C6
+_022551C4:
+ mov r1, #5
+_022551C6:
+ ldr r0, [r4, #0x30]
+ bl MOD20_02253F28
+ add r0, r6, #0
+ bl MOD36_02254F48
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022551D4: .word 0x00005B74
+_022551D8: .word 0x00005B75
+_022551DC: .word 0x00005B76
+ thumb_func_end MOD36_0225517C
+
+ thumb_func_start MOD36_022551E0
+MOD36_022551E0: ; 0x022551E0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #4
+ bl FUN_02019620
+ add r4, #0x48
+ add r0, r4, #0
+ bl FUN_02019548
+ add r0, r5, #0
+ bl MOD36_02254F48
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD36_022551E0
+
+ thumb_func_start MOD36_0225520C
+MOD36_0225520C: ; 0x0225520C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02255236
+ ldr r1, [r4, #0x5c]
+ cmp r1, #0
+ beq _02255236
+ add r0, r5, #0
+ bl MOD36_02254F48
+ pop {r3, r4, r5, pc}
+_02255236:
+ cmp r0, #4
+ bls _0225523C
+ b _0225539A
+_0225523C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02255248: ; jump table
+ .short _02255252 - _02255248 - 2 ; case 0
+ .short _02255286 - _02255248 - 2 ; case 1
+ .short _022552D8 - _02255248 - 2 ; case 2
+ .short _02255322 - _02255248 - 2 ; case 3
+ .short _02255356 - _02255248 - 2 ; case 4
+_02255252:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r0, [r0]
+ mov r1, #0x15
+ lsl r1, r1, #4
+ add r2, r0, r1
+ add r0, r4, #0
+ add r0, #0x68
+ strh r2, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ mov r0, #0
+ str r0, [r4, #0x64]
+ str r0, [r4, #0x60]
+ str r0, [r4, #0x5c]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255286:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r1, [r0]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x6a
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ mov r1, #3
+ ldrh r0, [r0]
+ lsl r1, r1, #0xc
+ cmp r0, r1
+ blo _0225539A
+ add r0, r4, #0
+ add r0, #0x6a
+ strh r1, [r0]
+ mov r0, #1
+ str r0, [r4, #0x64]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022552D8:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ ldr r0, [r4, #0x60]
+ cmp r0, #0
+ beq _0225539A
+ bl FUN_0201BA60
+ mov r1, #7
+ and r0, r1
+ str r0, [r4, #0x6c]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r1, [r0]
+ mov r0, #0x1a
+ lsl r0, r0, #8
+ cmp r1, r0
+ bls _0225531A
+ add r4, #0x6a
+ strh r0, [r4]
+_0225531A:
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255322:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ ldr r0, [r4, #0x6c]
+ cmp r0, #0
+ bne _0225534E
+ sub r0, r0, #1
+ str r0, [r4, #0x6c]
+ pop {r3, r4, r5, pc}
+_0225534E:
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255356:
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ cmp r0, #0x50
+ bls _0225538E
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ sub r1, #0x50
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ ldr r0, [r4, #0x24]
+ add r4, #0x68
+ ldrh r1, [r4]
+ bl MOD20_02253FB4
+ pop {r3, r4, r5, pc}
+_0225538E:
+ mov r0, #0
+ add r4, #0x6a
+ strh r0, [r4]
+ add r0, r5, #0
+ bl MOD36_02254F48
+_0225539A:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD36_0225520C
+
+ thumb_func_start MOD36_0225539C
+MOD36_0225539C: ; 0x0225539C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _022553BE
+ cmp r0, #1
+ beq _022553CA
+ pop {r3, r4, r5, pc}
+_022553BE:
+ mov r0, #1
+ str r0, [r4, #0x60]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022553CA:
+ add r0, r4, #0
+ mov r1, #7
+ bl MOD36_02254F30
+ cmp r0, #0
+ beq _022553E2
+ ldr r0, _022553E4 ; =0x0000066A
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD36_02254F48
+_022553E2:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022553E4: .word 0x0000066A
+ thumb_func_end MOD36_0225539C
+
+ .section .rodata
+ ; 0x022553E8
+ .incbin "baserom.nds", 0x28fda8, 0x110
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_36.SINIT_START
+ .global SDK_OVERLAY.MODULE_36.SINIT_END
+SDK_OVERLAY.MODULE_36.SINIT_START:
+ .word MOD36_02254840
+ .word 0
+SDK_OVERLAY.MODULE_36.SINIT_END:
diff --git a/arm9/modules/37/asm/module_37.s b/arm9/modules/37/asm/module_37.s
new file mode 100644
index 00000000..3cbe599b
--- /dev/null
+++ b/arm9/modules/37/asm/module_37.s
@@ -0,0 +1,681 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD37_02254840
+MOD37_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD37_02254854
+ ldr r1, _02254850 ; =MOD37_02254934
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD37_02254854
+_02254850: .word MOD37_02254934
+ thumb_func_end MOD37_02254840
+
+ thumb_func_start MOD37_02254854
+MOD37_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x14
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD37_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD37_02254900
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD37_02254900
+ thumb_func_end MOD37_02254854
+
+ thumb_func_start MOD37_0225489C
+MOD37_0225489C: ; 0x0225489C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r1, r5, #0
+ add r6, r2, #0
+ add r0, r3, #0
+ add r1, #8
+ mov r2, #4
+ str r3, [r5, #4]
+ bl FUN_02089418
+ cmp r0, #0
+ bne _022548BA
+ mov r0, #1
+ str r0, [r5, #8]
+_022548BA:
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xc
+ add r1, #8
+ add r2, r6, #0
+ bl MOD37_02254A54
+ cmp r0, #0
+ beq _022548DA
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0x10]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022548DA:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD37_0225489C
+
+ thumb_func_start MOD37_022548E0
+MOD37_022548E0: ; 0x022548E0
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #8
+ mov r2, #4
+ bl FUN_020893F0
+ ldr r0, [r4, #0xc]
+ bl MOD37_02254B0C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD37_022548E0
+
+ thumb_func_start MOD37_02254900
+MOD37_02254900: ; 0x02254900
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _0225492C
+ lsl r2, r1, #2
+ ldr r1, _02254930 ; =0x02254D28
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225492C
+ add r0, r4, #0
+ bl MOD37_022548E0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x10]
+ bl MOD20_022529A0
+_0225492C:
+ pop {r3, r4, r5, pc}
+ nop
+_02254930: .word 0x02254D28
+ thumb_func_end MOD37_02254900
+
+ thumb_func_start MOD37_02254934
+MOD37_02254934: ; 0x02254934
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD37_02254934
+
+ thumb_func_start MOD37_0225493C
+MOD37_0225493C: ; 0x0225493C
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254944
+ b _02254946
+_02254944:
+ mov r1, #2
+_02254946:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD37_0225493C
+
+ thumb_func_start MOD37_02254950
+MOD37_02254950: ; 0x02254950
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254960
+ cmp r0, #1
+ beq _02254970
+ b _0225498A
+_02254960:
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl MOD37_02254B20
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225498A
+_02254970:
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl MOD37_02254B44
+ cmp r0, #0
+ beq _0225498A
+ ldr r0, [r4, #0x10]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD37_0225493C
+_0225498A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD37_02254950
+
+ thumb_func_start MOD37_02254990
+MOD37_02254990: ; 0x02254990
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549A0
+ mov r1, #2
+ bl MOD37_0225493C
+_022549A0:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549AC
+ cmp r0, #1
+ beq _022549CE
+ b _022549DE
+_022549AC:
+ bl MOD37_02254A18
+ cmp r0, #0
+ beq _022549DE
+ bl FUN_0201BA60
+ mov r1, #1
+ and r0, r1
+ str r0, [r4, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl MOD37_02254B20
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549DE
+_022549CE:
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl MOD37_02254B44
+ cmp r0, #0
+ beq _022549DE
+ mov r0, #0
+ strb r0, [r4, #1]
+_022549DE:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD37_02254990
+
+ thumb_func_start MOD37_022549E4
+MOD37_022549E4: ; 0x022549E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549F4
+ cmp r0, #1
+ beq _02254A04
+ b _02254A12
+_022549F4:
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl MOD37_02254B20
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A12
+_02254A04:
+ ldr r0, [r4, #0xc]
+ bl MOD37_02254B50
+ cmp r0, #0
+ beq _02254A12
+ mov r0, #1
+ pop {r4, pc}
+_02254A12:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD37_022549E4
+
+ thumb_func_start MOD37_02254A18
+MOD37_02254A18: ; 0x02254A18
+ push {r3, lr}
+ sub sp, #8
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252BB8
+ cmp r0, #0
+ beq _02254A4E
+ ldr r1, [sp, #4]
+ mov r0, #0x70
+ sub r0, r0, r1
+ add r3, r0, #0
+ mul r3, r0
+ ldr r1, [sp]
+ mov r0, #0x90
+ sub r2, r0, r1
+ add r1, r2, #0
+ mul r1, r2
+ str r1, [sp]
+ add r1, r3, r1
+ lsl r0, r0, #2
+ str r3, [sp, #4]
+ cmp r1, r0
+ bhs _02254A4E
+ add sp, #8
+ mov r0, #1
+ pop {r3, pc}
+_02254A4E:
+ mov r0, #0
+ add sp, #8
+ pop {r3, pc}
+ thumb_func_end MOD37_02254A18
+
+ thumb_func_start MOD37_02254A54
+MOD37_02254A54: ; 0x02254A54
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x48
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254A94
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ bl MOD37_02254AA0
+ ldr r1, _02254A98 ; =0xFFFF5800
+ ldr r0, _02254A9C ; =0x02254DA0
+ str r1, [r0]
+ mov r1, #0xb
+ lsl r1, r1, #8
+ str r1, [r0, #4]
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254A94:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254A98: .word 0xFFFF5800
+_02254A9C: .word 0x02254DA0
+ thumb_func_end MOD37_02254A54
+
+ thumb_func_start MOD37_02254AA0
+MOD37_02254AA0: ; 0x02254AA0
+ push {r3, r4, lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r4, r0, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x39
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x28
+ mov r1, #0xc
+ mov r2, #0x37
+ mov r3, #0x38
+ bl MOD20_02253FBC
+ add r2, r4, #0
+ ldr r0, [r4, #0x20]
+ ldr r1, _02254AF0 ; =0x02254D34
+ add r2, #0x28
+ bl MOD20_02253E74
+ str r0, [r4, #0x24]
+ ldr r0, [r4]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02254AEA
+ ldr r0, [r4, #0x24]
+ mov r1, #2
+ bl MOD20_02253F28
+_02254AEA:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_02254AF0: .word 0x02254D34
+ thumb_func_end MOD37_02254AA0
+
+ thumb_func_start MOD37_02254AF4
+MOD37_02254AF4: ; 0x02254AF4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x20]
+ ldr r1, [r4, #0x24]
+ bl MOD20_02253F14
+ add r4, #0x28
+ add r0, r4, #0
+ bl MOD20_02254014
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD37_02254AF4
+
+ thumb_func_start MOD37_02254B0C
+MOD37_02254B0C: ; 0x02254B0C
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254B1C
+ bl MOD37_02254AF4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254B1C:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD37_02254B0C
+
+ thumb_func_start MOD37_02254B20
+MOD37_02254B20: ; 0x02254B20
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254B40 ; =0x02254D60
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254B40: .word 0x02254D60
+ thumb_func_end MOD37_02254B20
+
+ thumb_func_start MOD37_02254B44
+MOD37_02254B44: ; 0x02254B44
+ ldr r3, _02254B4C ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254B4C: .word MOD20_02253794
+ thumb_func_end MOD37_02254B44
+
+ thumb_func_start MOD37_02254B50
+MOD37_02254B50: ; 0x02254B50
+ ldr r3, _02254B58 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254B58: .word MOD20_022537B8
+ thumb_func_end MOD37_02254B50
+
+ thumb_func_start MOD37_02254B5C
+MOD37_02254B5C: ; 0x02254B5C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD37_02254B5C
+
+ thumb_func_start MOD37_02254B70
+MOD37_02254B70: ; 0x02254B70
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254BF4 ; =0x02254D44
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x36
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x35
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254BF8 ; =0x04001000
+ ldr r0, _02254BFC ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD37_02254B5C
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254BF4: .word 0x02254D44
+_02254BF8: .word 0x04001000
+_02254BFC: .word 0xFFFFE0FF
+ thumb_func_end MOD37_02254B70
+
+ thumb_func_start MOD37_02254C00
+MOD37_02254C00: ; 0x02254C00
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02254C1C
+ cmp r0, #1
+ beq _02254C26
+ pop {r3, r4, r5, pc}
+_02254C1C:
+ mov r0, #1
+ str r0, [r4, #0x44]
+ add r0, r5, #0
+ bl MOD20_022538B0
+_02254C26:
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD37_02254B44
+ cmp r0, #0
+ beq _02254C40
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD37_02254B5C
+_02254C40:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD37_02254C00
+
+ thumb_func_start MOD37_02254C44
+MOD37_02254C44: ; 0x02254C44
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02254C6C
+ cmp r0, #1
+ beq _02254C90
+ cmp r0, #2
+ beq _02254D10
+ pop {r4, r5, r6, pc}
+_02254C6C:
+ ldr r0, _02254D18 ; =0x00000675
+ bl MOD20_02252B28
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD20_02253F28
+ mov r0, #9
+ lsl r0, r0, #0x10
+ str r0, [r4, #0x3c]
+ ldr r0, _02254D1C ; =0x02254DA0
+ ldr r0, [r0]
+ str r0, [r4, #0x40]
+ mov r0, #0
+ str r0, [r4, #0x44]
+ add r0, r5, #0
+ bl MOD20_022538B0
+_02254C90:
+ ldr r0, [r4, #0x44]
+ cmp r0, #0
+ beq _02254C9E
+ add r0, r5, #0
+ bl MOD37_02254B5C
+ pop {r4, r5, r6, pc}
+_02254C9E:
+ ldr r1, [r4, #0x3c]
+ ldr r0, [r4, #0x40]
+ add r0, r1, r0
+ str r0, [r4, #0x3c]
+ ldr r0, _02254D1C ; =0x02254DA0
+ ldr r1, [r4, #0x40]
+ ldr r0, [r0, #4]
+ add r1, r1, r0
+ str r1, [r4, #0x40]
+ cmp r1, #0
+ ble _02254D02
+ mov r0, #9
+ ldr r2, [r4, #0x3c]
+ lsl r0, r0, #0x10
+ cmp r2, r0
+ blt _02254D02
+ mov r0, #0x38
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ neg r1, r0
+ ldr r0, _02254D20 ; =0xFFFFE000
+ str r1, [r4, #0x40]
+ cmp r1, r0
+ ldr r0, _02254D24 ; =0x00000676
+ bge _02254CE0
+ bl MOD20_02252B28
+ mov r0, #9
+ lsl r0, r0, #0x10
+ str r0, [r4, #0x3c]
+ b _02254D02
+_02254CE0:
+ bl MOD20_02252B28
+ ldr r0, [r6]
+ cmp r0, #0
+ beq _02254CEE
+ mov r1, #1
+ b _02254CF0
+_02254CEE:
+ mov r1, #2
+_02254CF0:
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253F28
+ mov r0, #9
+ lsl r0, r0, #0x10
+ str r0, [r4, #0x3c]
+ add r0, r5, #0
+ bl MOD20_022538B0
+_02254D02:
+ mov r1, #7
+ ldr r0, [r4, #0x24]
+ ldr r2, [r4, #0x3c]
+ lsl r1, r1, #0x10
+ bl MOD20_02253F64
+ pop {r4, r5, r6, pc}
+_02254D10:
+ add r0, r5, #0
+ bl MOD37_02254B5C
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254D18: .word 0x00000675
+_02254D1C: .word 0x02254DA0
+_02254D20: .word 0xFFFFE000
+_02254D24: .word 0x00000676
+ thumb_func_end MOD37_02254C44
+
+ .section .rodata
+ ; 0x02254D28
+ .incbin "baserom.nds", 0x2904E8, 0x68
+
+ .section .sinit
+ .word MOD37_02254840
+
+ .section .bss
+ ; 0x02254DA0
+ .space 8
diff --git a/arm9/modules/38/asm/module_38.s b/arm9/modules/38/asm/module_38.s
new file mode 100644
index 00000000..e6f0160a
--- /dev/null
+++ b/arm9/modules/38/asm/module_38.s
@@ -0,0 +1,1193 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD38_02254840
+MOD38_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD38_02254854
+ ldr r1, _02254850 ; =MOD38_02254990
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD38_02254854
+_02254850: .word MOD38_02254990
+ thumb_func_end MOD38_02254840
+
+ thumb_func_start MOD38_02254854
+MOD38_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x24
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD38_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD38_0225494C
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD38_0225494C
+ thumb_func_end MOD38_02254854
+
+ thumb_func_start MOD38_0225489C
+MOD38_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r1, r5, #0
+ add r6, r2, #0
+ add r0, r3, #0
+ add r1, #8
+ mov r2, #0xc
+ str r3, [r5, #4]
+ bl FUN_02089418
+ cmp r0, #0
+ bne _022548C0
+ add r0, r5, #0
+ add r0, #8
+ bl MOD38_02254908
+_022548C0:
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0x14
+ add r1, #8
+ add r2, r6, #0
+ bl MOD38_02254BC4
+ cmp r0, #0
+ beq _022548F8
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254900 ; =0x0225511C
+ ldr r2, _02254904 ; =MOD38_02254988
+ mov r1, #6
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x1c]
+ mov r0, #0
+ str r0, [r5, #0x20]
+ add sp, #4
+ str r4, [r5, #0x18]
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_022548F8:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254900: .word 0x0225511C
+_02254904: .word MOD38_02254988
+ thumb_func_end MOD38_0225489C
+
+ thumb_func_start MOD38_02254908
+MOD38_02254908: ; 0x02254908
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [r4]
+ strh r0, [r4, #6]
+ strh r0, [r4, #8]
+ mov r0, #0x12
+ strh r0, [r4, #0xa]
+ ldrh r0, [r4, #6]
+ ldrh r1, [r4, #8]
+ ldrh r2, [r4, #0xa]
+ bl MOD38_02254B2C
+ strh r0, [r4, #4]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254908
+
+ thumb_func_start MOD38_02254928
+MOD38_02254928: ; 0x02254928
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #8
+ mov r2, #0xc
+ bl FUN_020893F0
+ ldr r0, [r4, #0x1c]
+ bl MOD20_02254198
+ ldr r0, [r4, #0x14]
+ bl MOD38_02254D04
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD38_02254928
+
+ thumb_func_start MOD38_0225494C
+MOD38_0225494C: ; 0x0225494C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254982
+ ldr r0, [r4, #0x18]
+ ldr r1, [r4, #0x1c]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254984 ; =0x02255110
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254982
+ add r0, r4, #0
+ bl MOD38_02254928
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x18]
+ bl MOD20_022529A0
+_02254982:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254984: .word 0x02255110
+ thumb_func_end MOD38_0225494C
+
+ thumb_func_start MOD38_02254988
+MOD38_02254988: ; 0x02254988
+ str r0, [r3, #8]
+ str r1, [r3, #0x20]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD38_02254988
+
+ thumb_func_start MOD38_02254990
+MOD38_02254990: ; 0x02254990
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD38_02254990
+
+ thumb_func_start MOD38_02254998
+MOD38_02254998: ; 0x02254998
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549A0
+ b _022549A2
+_022549A0:
+ mov r1, #2
+_022549A2:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD38_02254998
+
+ thumb_func_start MOD38_022549AC
+MOD38_022549AC: ; 0x022549AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549BC
+ cmp r0, #1
+ beq _022549CC
+ b _022549E6
+_022549BC:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl MOD38_02254D34
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549E6
+_022549CC:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl MOD38_02254D58
+ cmp r0, #0
+ beq _022549E6
+ ldr r0, [r4, #0x18]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD38_02254998
+_022549E6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_022549AC
+
+ thumb_func_start MOD38_022549EC
+MOD38_022549EC: ; 0x022549EC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #2]
+ cmp r0, #0
+ beq _02254A0C
+ ldr r0, [r4, #0x14]
+ bl MOD38_02254D64
+ cmp r0, #0
+ beq _02254A08
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD38_02254998
+_02254A08:
+ mov r0, #0
+ pop {r4, pc}
+_02254A0C:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A1C
+ cmp r0, #1
+ beq _02254A32
+ cmp r0, #2
+ beq _02254AE4
+ b _02254AF2
+_02254A1C:
+ ldr r0, [r4, #0x20]
+ cmp r0, #1
+ bne _02254AF2
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl MOD38_02254D34
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AF2
+_02254A32:
+ ldr r0, [r4, #0x20]
+ cmp r0, #2
+ bne _02254A46
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD38_02254D34
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254AF2
+_02254A46:
+ cmp r0, #3
+ bne _02254AF2
+ ldr r0, [r4, #8]
+ cmp r0, #5
+ bhi _02254AC0
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254A5C: ; jump table
+ .short _02254A68 - _02254A5C - 2 ; case 0
+ .short _02254A78 - _02254A5C - 2 ; case 1
+ .short _02254A86 - _02254A5C - 2 ; case 2
+ .short _02254A96 - _02254A5C - 2 ; case 3
+ .short _02254AA4 - _02254A5C - 2 ; case 4
+ .short _02254AB4 - _02254A5C - 2 ; case 5
+_02254A68:
+ ldrh r0, [r4, #0xe]
+ mov r1, #0
+ mvn r1, r1
+ mov r2, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0xe]
+ b _02254AC0
+_02254A78:
+ ldrh r0, [r4, #0xe]
+ mov r1, #1
+ mov r2, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0xe]
+ b _02254AC0
+_02254A86:
+ ldrh r0, [r4, #0x10]
+ mov r1, #0
+ mvn r1, r1
+ mov r2, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0x10]
+ b _02254AC0
+_02254A96:
+ ldrh r0, [r4, #0x10]
+ mov r1, #1
+ mov r2, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0x10]
+ b _02254AC0
+_02254AA4:
+ ldrh r0, [r4, #0x12]
+ mov r1, #0
+ mvn r1, r1
+ mov r2, #1
+ bl MOD38_02254B6C
+ strh r0, [r4, #0x12]
+ b _02254AC0
+_02254AB4:
+ ldrh r0, [r4, #0x12]
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD38_02254B6C
+ strh r0, [r4, #0x12]
+_02254AC0:
+ ldrh r0, [r4, #0xe]
+ ldrh r1, [r4, #0x10]
+ ldrh r2, [r4, #0x12]
+ bl MOD38_02254B2C
+ strh r0, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD38_02254D34
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ bl MOD38_02254D34
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AF2
+_02254AE4:
+ ldr r0, [r4, #0x14]
+ bl MOD38_02254D64
+ cmp r0, #0
+ beq _02254AF2
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254AF2:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_022549EC
+
+ thumb_func_start MOD38_02254AF8
+MOD38_02254AF8: ; 0x02254AF8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254B08
+ cmp r0, #1
+ beq _02254B18
+ b _02254B26
+_02254B08:
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl MOD38_02254D34
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B26
+_02254B18:
+ ldr r0, [r4, #0x14]
+ bl MOD38_02254D64
+ cmp r0, #0
+ beq _02254B26
+ mov r0, #1
+ pop {r4, pc}
+_02254B26:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254AF8
+
+ thumb_func_start MOD38_02254B2C
+MOD38_02254B2C: ; 0x02254B2C
+ push {r4, r5}
+ ldr r5, _02254B68 ; =0x02255134
+ mov r3, #0x12
+ add r4, r0, #0
+ mul r4, r3
+ add r4, r5, r4
+ add r0, r3, #0
+ ldrsb r5, [r4, r1]
+ sub r0, #0x1c
+ cmp r5, r0
+ beq _02254B4E
+ cmp r2, #0x12
+ beq _02254B54
+ ldrsb r0, [r4, r2]
+ sub r3, #0x1c
+ cmp r0, r3
+ bne _02254B54
+_02254B4E:
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+_02254B54:
+ mov r0, #3
+ add r0, r0, r5
+ cmp r2, #0x12
+ beq _02254B64
+ cmp r2, r1
+ beq _02254B64
+ ldrsb r1, [r4, r2]
+ add r0, r0, r1
+_02254B64:
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+_02254B68: .word 0x02255134
+ thumb_func_end MOD38_02254B2C
+
+ thumb_func_start MOD38_02254B6C
+MOD38_02254B6C: ; 0x02254B6C
+ push {r4, r5}
+ ldr r5, _02254BC0 ; =0x02255278
+ mov r4, #0
+_02254B72:
+ ldrb r3, [r5]
+ cmp r3, r0
+ beq _02254B80
+ add r4, r4, #1
+ add r5, r5, #1
+ cmp r4, #0x11
+ blo _02254B72
+_02254B80:
+ cmp r4, #0x11
+ bne _02254B94
+ cmp r1, #0
+ ble _02254B8E
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+_02254B8E:
+ mov r0, #8
+ pop {r4, r5}
+ bx lr
+_02254B94:
+ add r4, r4, r1
+ cmp r4, #0x11
+ blt _02254BA6
+ cmp r2, #0
+ beq _02254BA4
+ mov r0, #0x12
+ pop {r4, r5}
+ bx lr
+_02254BA4:
+ mov r4, #0
+_02254BA6:
+ cmp r4, #0
+ bge _02254BB6
+ cmp r2, #0
+ beq _02254BB4
+ mov r0, #0x12
+ pop {r4, r5}
+ bx lr
+_02254BB4:
+ mov r4, #0x10
+_02254BB6:
+ ldr r0, _02254BC0 ; =0x02255278
+ ldrb r0, [r0, r4]
+ pop {r4, r5}
+ bx lr
+ nop
+_02254BC0: .word 0x02255278
+ thumb_func_end MOD38_02254B6C
+
+ thumb_func_start MOD38_02254BC4
+MOD38_02254BC4: ; 0x02254BC4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0xc0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254C2A
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x30]
+ ldr r2, _02254C30 ; =0x00000235
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #8
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r1, #0xb4
+ str r0, [r1]
+ ldr r2, _02254C34 ; =0x00000195
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #8
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r1, #0xb8
+ str r0, [r1]
+ mov r0, #0x80
+ mov r1, #8
+ bl FUN_020219F4
+ add r1, r4, #0
+ add r1, #0xbc
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD38_02254C38
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254C2A:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02254C30: .word 0x00000235
+_02254C34: .word 0x00000195
+ thumb_func_end MOD38_02254BC4
+
+ thumb_func_start MOD38_02254C38
+MOD38_02254C38: ; 0x02254C38
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r6, r0, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x40
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r6, #0
+ add r0, #0x60
+ mov r1, #0xc
+ mov r2, #0x3e
+ mov r3, #0x3f
+ bl MOD20_02253FBC
+ add r0, r6, #0
+ str r0, [sp, #0xc]
+ add r0, #0x60
+ ldr r4, _02254CBC ; =0x02255300
+ mov r7, #0
+ add r5, r6, #0
+ str r0, [sp, #0xc]
+_02254C72:
+ ldr r0, [r6, #0x30]
+ ldr r2, [sp, #0xc]
+ add r1, r4, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x34]
+ add r7, r7, #1
+ add r4, #0x10
+ add r5, r5, #4
+ cmp r7, #6
+ blt _02254C72
+ add r0, r6, #0
+ str r0, [sp, #0x10]
+ add r0, #0x60
+ mov r7, #0
+ add r4, r6, #0
+ mov r5, #0x2c
+ str r0, [sp, #0x10]
+_02254C96:
+ ldr r0, [r6, #0x30]
+ ldr r1, _02254CC0 ; =0x0225528C
+ ldr r2, [sp, #0x10]
+ bl MOD20_02253E74
+ mov r2, #3
+ lsl r1, r5, #0xc
+ lsl r2, r2, #0x10
+ str r0, [r4, #0x4c]
+ bl MOD20_02253F64
+ add r7, r7, #1
+ add r4, r4, #4
+ add r5, #8
+ cmp r7, #5
+ blt _02254C96
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254CBC: .word 0x02255300
+_02254CC0: .word 0x0225528C
+ thumb_func_end MOD38_02254C38
+
+ thumb_func_start MOD38_02254CC4
+MOD38_02254CC4: ; 0x02254CC4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r6, #0
+ add r4, r5, #0
+_02254CCC:
+ ldr r1, [r4, #0x34]
+ cmp r1, #0
+ beq _02254CD8
+ ldr r0, [r5, #0x30]
+ bl MOD20_02253F14
+_02254CD8:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #6
+ blt _02254CCC
+ mov r6, #0
+ add r4, r5, #0
+_02254CE4:
+ ldr r1, [r4, #0x4c]
+ cmp r1, #0
+ beq _02254CF0
+ ldr r0, [r5, #0x30]
+ bl MOD20_02253F14
+_02254CF0:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #5
+ blt _02254CE4
+ add r5, #0x60
+ add r0, r5, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254CC4
+
+ thumb_func_start MOD38_02254D04
+MOD38_02254D04: ; 0x02254D04
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254D32
+ add r0, #0xbc
+ ldr r0, [r0]
+ bl FUN_02021A20
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ bl MOD38_02254CC4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254D32:
+ pop {r4, pc}
+ thumb_func_end MOD38_02254D04
+
+ thumb_func_start MOD38_02254D34
+MOD38_02254D34: ; 0x02254D34
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254D54 ; =0x022552B8
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254D54: .word 0x022552B8
+ thumb_func_end MOD38_02254D34
+
+ thumb_func_start MOD38_02254D58
+MOD38_02254D58: ; 0x02254D58
+ ldr r3, _02254D60 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254D60: .word MOD20_02253794
+ thumb_func_end MOD38_02254D58
+
+ thumb_func_start MOD38_02254D64
+MOD38_02254D64: ; 0x02254D64
+ ldr r3, _02254D6C ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254D6C: .word MOD20_022537B8
+ thumb_func_end MOD38_02254D64
+
+ thumb_func_start MOD38_02254D70
+MOD38_02254D70: ; 0x02254D70
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254D70
+
+ thumb_func_start MOD38_02254D84
+MOD38_02254D84: ; 0x02254D84
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254E1C ; =0x0225529C
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x3d
+ mov r3, #6
+ bl FUN_0200687C
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x3c
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ add r0, r5, #0
+ add r1, r7, #0
+ lsr r2, r4, #5
+ bl MOD38_02254E28
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254E20 ; =0x04001000
+ ldr r0, _02254E24 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r6, #0
+ bl MOD38_02254D70
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254E1C: .word 0x0225529C
+_02254E20: .word 0x04001000
+_02254E24: .word 0xFFFFE0FF
+ thumb_func_end MOD38_02254D84
+
+ thumb_func_start MOD38_02254E28
+MOD38_02254E28: ; 0x02254E28
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0xf
+ add r4, r2, #0
+ str r0, [sp]
+ mov r2, #6
+ str r2, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ add r6, r1, #0
+ str r0, [sp, #0x10]
+ add r1, r5, #0
+ ldr r0, [r5, #4]
+ add r1, #0x74
+ add r3, r2, #0
+ bl FUN_02019064
+ mov r0, #4
+ str r0, [sp]
+ mov r2, #6
+ add r1, r5, #0
+ str r2, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0xc
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, #0x84
+ mov r3, #0x10
+ bl FUN_02019064
+ mov r0, #8
+ str r0, [sp]
+ mov r2, #6
+ add r1, r5, #0
+ str r2, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0x18
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, #0x94
+ mov r3, #0x10
+ bl FUN_02019064
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x16
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r5, #0
+ add r4, #0x24
+ str r0, [sp, #0xc]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, #0xa4
+ mov r2, #6
+ mov r3, #3
+ bl FUN_02019064
+ add r0, r5, #0
+ add r0, #0x74
+ bl FUN_02019270
+ add r0, r5, #0
+ add r0, #0x84
+ bl FUN_02019270
+ add r0, r5, #0
+ add r0, #0x94
+ bl FUN_02019270
+ add r0, r5, #0
+ add r0, #0xa4
+ bl FUN_02019270
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD38_02254FCC
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254E28
+
+ thumb_func_start MOD38_02254EF4
+MOD38_02254EF4: ; 0x02254EF4
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x74
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x84
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0x94
+ bl FUN_02019178
+ add r4, #0xa4
+ add r0, r4, #0
+ bl FUN_02019178
+ pop {r4, pc}
+ thumb_func_end MOD38_02254EF4
+
+ thumb_func_start MOD38_02254F18
+MOD38_02254F18: ; 0x02254F18
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ bl MOD38_02254EF4
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD38_02254D70
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD38_02254F18
+
+ thumb_func_start MOD38_02254F38
+MOD38_02254F38: ; 0x02254F38
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ ldr r2, [r0]
+ mov r1, #1
+ add r0, r2, #0
+ tst r0, r1
+ beq _02254F56
+ mov r1, #3
+_02254F56:
+ lsl r0, r2, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x34]
+ bl MOD20_02253F28
+ ldr r0, _02254F70 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD38_02254D70
+ pop {r3, r4, r5, pc}
+ nop
+_02254F70: .word 0x00000663
+ thumb_func_end MOD38_02254F38
+
+ thumb_func_start MOD38_02254F74
+MOD38_02254F74: ; 0x02254F74
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ ldr r2, [r0]
+ mov r0, #1
+ tst r0, r2
+ beq _02254F92
+ mov r1, #2
+ b _02254F94
+_02254F92:
+ mov r1, #0
+_02254F94:
+ lsl r0, r2, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x34]
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD38_02254D70
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254F74
+
+ thumb_func_start MOD38_02254FA8
+MOD38_02254FA8: ; 0x02254FA8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD38_02254FCC
+ add r0, r5, #0
+ bl MOD38_02254D70
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254FA8
+
+ thumb_func_start MOD38_02254FCC
+MOD38_02254FCC: ; 0x02254FCC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r1, r5, #0
+ ldrh r2, [r4, #6]
+ add r1, #0x74
+ bl MOD38_0225500C
+ add r1, r5, #0
+ ldrh r2, [r4, #8]
+ add r0, r5, #0
+ add r1, #0x84
+ bl MOD38_0225500C
+ add r1, r5, #0
+ ldrh r2, [r4, #0xa]
+ add r0, r5, #0
+ add r1, #0x94
+ bl MOD38_0225500C
+ add r1, r5, #0
+ ldrh r2, [r4, #4]
+ add r0, r5, #0
+ add r1, #0xa4
+ bl MOD38_02255084
+ ldrh r1, [r4, #4]
+ add r0, r5, #0
+ bl MOD38_022550D0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD38_02254FCC
+
+ thumb_func_start MOD38_0225500C
+MOD38_0225500C: ; 0x0225500C
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #4
+ add r6, r2, #0
+ bl FUN_02019620
+ cmp r6, #0x12
+ bne _02255036
+ add r0, r5, #0
+ add r2, r5, #0
+ add r0, #0xb8
+ add r2, #0xbc
+ ldr r0, [r0]
+ ldr r2, [r2]
+ mov r1, #6
+ bl FUN_0200A8E0
+ b _02255048
+_02255036:
+ add r0, r5, #0
+ add r2, r5, #0
+ add r0, #0xb4
+ add r2, #0xbc
+ ldr r0, [r0]
+ ldr r2, [r2]
+ add r1, r6, #0
+ bl FUN_0200A8E0
+_02255048:
+ add r1, r5, #0
+ add r1, #0xbc
+ mov r0, #0
+ ldr r1, [r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02255080 ; =0x00010104
+ add r5, #0xbc
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5]
+ mov r5, #0x30
+ sub r3, r5, r3
+ add r0, r4, #0
+ lsr r3, r3, #1
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02255080: .word 0x00010104
+ thumb_func_end MOD38_0225500C
+
+ thumb_func_start MOD38_02255084
+MOD38_02255084: ; 0x02255084
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #4
+ add r6, r2, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r2, r5, #0
+ add r0, #0xb8
+ add r2, #0xbc
+ ldr r0, [r0]
+ ldr r2, [r2]
+ add r1, r6, #0
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022550CC ; =0x00010104
+ add r5, #0xbc
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ ldr r2, [r5]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022550CC: .word 0x00010104
+ thumb_func_end MOD38_02255084
+
+ thumb_func_start MOD38_022550D0
+MOD38_022550D0: ; 0x022550D0
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ add r6, r1, #0
+ ldr r4, _0225510C ; =0x00000000
+ beq _022550EE
+ add r5, r0, #0
+ mov r7, #4
+_022550DE:
+ ldr r0, [r5, #0x4c]
+ add r1, r7, #0
+ bl MOD20_02253F28
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r6
+ blo _022550DE
+_022550EE:
+ cmp r4, #5
+ bhs _0225510A
+ ldr r0, [sp]
+ lsl r1, r4, #2
+ add r5, r0, r1
+ mov r6, #5
+_022550FA:
+ ldr r0, [r5, #0x4c]
+ add r1, r6, #0
+ bl MOD20_02253F28
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blo _022550FA
+_0225510A:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0225510C: .word 0x00000000
+ thumb_func_end MOD38_022550D0
+
+ .section .rodata
+ ; 0x02255110
+ .incbin "baserom.nds", 0x290ED0, 0x250
+
+ .section .sinit
+ .word MOD38_02254840
diff --git a/arm9/modules/39/asm/module_39.s b/arm9/modules/39/asm/module_39.s
new file mode 100644
index 00000000..c5946d62
--- /dev/null
+++ b/arm9/modules/39/asm/module_39.s
@@ -0,0 +1,1457 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD39_02254840
+MOD39_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD39_02254854
+ ldr r1, _02254850 ; =MOD39_022549D4
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD39_02254854
+_02254850: .word MOD39_022549D4
+ thumb_func_end MOD39_02254840
+
+ thumb_func_start MOD39_02254854
+MOD39_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x68
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD39_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD39_02254998
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD39_02254998
+ thumb_func_end MOD39_02254854
+
+ thumb_func_start MOD39_0225489C
+MOD39_0225489C: ; 0x0225489C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #4]
+ add r0, r1, #0
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ bl MOD20_02252C40
+ bl FUN_0206BB1C
+ str r0, [sp, #0x10]
+ bl FUN_0206B9AC
+ ldr r1, [sp, #4]
+ mov r6, #0
+ add r1, #0x34
+ strb r0, [r1]
+ ldr r0, [sp, #4]
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, #0
+ ble _02254906
+ ldr r4, [sp, #4]
+ add r5, r4, #0
+_022548CC:
+ ldr r0, [sp, #0x10]
+ add r1, r6, #0
+ bl FUN_0206B9B0
+ add r7, r0, #0
+ bl FUN_0206B688
+ str r0, [r4, #4]
+ add r0, r7, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r5, #0x1c]
+ add r0, r7, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020671BC
+ strh r0, [r5, #0x28]
+ ldr r0, [sp, #4]
+ str r7, [r4, #0x48]
+ add r0, #0x34
+ ldrb r0, [r0]
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #2
+ cmp r6, r0
+ blt _022548CC
+_02254906:
+ ldr r0, [sp, #4]
+ mov r1, #0
+ add r0, #0x36
+ strb r1, [r0]
+ ldr r0, [sp, #4]
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, #1
+ bls _0225491A
+ mov r1, #1
+_0225491A:
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #0xc]
+ add r0, #0x37
+ strb r1, [r0]
+ ldr r0, [sp, #4]
+ ldr r1, [sp, #4]
+ add r0, #0x38
+ add r1, r1, #4
+ bl MOD39_02254C1C
+ cmp r0, #0
+ beq _02254964
+ ldr r0, [sp, #4]
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ strb r1, [r0, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _0225496C ; =0x02255300
+ ldr r2, _02254970 ; =MOD39_0225498C
+ ldr r3, [sp, #4]
+ mov r1, #3
+ bl MOD20_02254130
+ ldr r1, [sp, #4]
+ str r0, [r1, #0x40]
+ ldr r0, [sp, #4]
+ mov r1, #0
+ add r0, #0x46
+ strh r1, [r0]
+ ldr r1, [sp, #8]
+ ldr r0, [sp, #4]
+ add sp, #0x14
+ str r1, [r0, #0x3c]
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_02254964:
+ mov r0, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0225496C: .word 0x02255300
+_02254970: .word MOD39_0225498C
+ thumb_func_end MOD39_0225489C
+
+ thumb_func_start MOD39_02254974
+MOD39_02254974: ; 0x02254974
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x40]
+ bl MOD20_02254198
+ ldr r0, [r4, #0x38]
+ bl MOD39_02254C58
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD39_02254974
+
+ thumb_func_start MOD39_0225498C
+MOD39_0225498C: ; 0x0225498C
+ add r2, r3, #0
+ add r2, #0x44
+ strh r0, [r2]
+ add r3, #0x46
+ strh r1, [r3]
+ bx lr
+ thumb_func_end MOD39_0225498C
+
+ thumb_func_start MOD39_02254998
+MOD39_02254998: ; 0x02254998
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _022549CE
+ ldr r0, [r4, #0x3c]
+ ldr r1, [r4, #0x40]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _022549D0 ; =0x0225530C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _022549CE
+ add r0, r4, #0
+ bl MOD39_02254974
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x3c]
+ bl MOD20_022529A0
+_022549CE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022549D0: .word 0x0225530C
+ thumb_func_end MOD39_02254998
+
+ thumb_func_start MOD39_022549D4
+MOD39_022549D4: ; 0x022549D4
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD39_022549D4
+
+ thumb_func_start MOD39_022549DC
+MOD39_022549DC: ; 0x022549DC
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549E4
+ b _022549E6
+_022549E4:
+ mov r1, #2
+_022549E6:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD39_022549DC
+
+ thumb_func_start MOD39_022549F0
+MOD39_022549F0: ; 0x022549F0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A00
+ cmp r0, #1
+ beq _02254A10
+ b _02254A2A
+_02254A00:
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD39_02254DA4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A2A
+_02254A10:
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD39_02254DC8
+ cmp r0, #0
+ beq _02254A2A
+ ldr r0, [r4, #0x3c]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD39_022549DC
+_02254A2A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD39_022549F0
+
+ thumb_func_start MOD39_02254A30
+MOD39_02254A30: ; 0x02254A30
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254A44
+ mov r1, #2
+ bl MOD39_022549DC
+ mov r0, #0
+ pop {r4, pc}
+_02254A44:
+ ldrb r1, [r4, #1]
+ cmp r1, #3
+ bhi _02254B48
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02254A56: ; jump table
+ .short _02254A5E - _02254A56 - 2 ; case 0
+ .short _02254ACC - _02254A56 - 2 ; case 1
+ .short _02254ADC - _02254A56 - 2 ; case 2
+ .short _02254B38 - _02254A56 - 2 ; case 3
+_02254A5E:
+ add r1, r4, #0
+ add r1, #0x46
+ ldrh r1, [r1]
+ cmp r1, #1
+ bne _02254B48
+ add r1, r4, #0
+ add r1, #0x44
+ ldrh r1, [r1]
+ cmp r1, #0
+ beq _02254AA8
+ cmp r1, #1
+ beq _02254A7C
+ cmp r1, #2
+ beq _02254A92
+ b _02254AC4
+_02254A7C:
+ bl MOD39_02254B50
+ cmp r0, #0
+ beq _02254AC4
+ ldr r0, [r4, #0x38]
+ mov r1, #4
+ bl MOD39_02254DA4
+ mov r0, #1
+ strb r0, [r4, #1]
+ b _02254AC4
+_02254A92:
+ bl MOD39_02254B9C
+ cmp r0, #0
+ beq _02254AC4
+ ldr r0, [r4, #0x38]
+ mov r1, #5
+ bl MOD39_02254DA4
+ mov r0, #1
+ strb r0, [r4, #1]
+ b _02254AC4
+_02254AA8:
+ add r0, #0x34
+ ldrb r0, [r0]
+ cmp r0, #1
+ bls _02254ABE
+ ldr r0, [r4, #0x38]
+ mov r1, #2
+ bl MOD39_02254DA4
+ mov r0, #2
+ strb r0, [r4, #1]
+ b _02254AC4
+_02254ABE:
+ ldr r0, _02254B4C ; =0x0000066E
+ bl MOD20_02252B28
+_02254AC4:
+ mov r0, #0
+ add r4, #0x46
+ strh r0, [r4]
+ b _02254B48
+_02254ACC:
+ ldr r0, [r4, #0x38]
+ bl MOD39_02254DD4
+ cmp r0, #0
+ beq _02254B48
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254B48
+_02254ADC:
+ add r0, #0x46
+ ldrh r0, [r0]
+ cmp r0, #2
+ bne _02254AF2
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl MOD39_02254DA4
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254B48
+_02254AF2:
+ cmp r0, #3
+ bne _02254B48
+ add r0, r4, #0
+ add r0, #0x36
+ ldrb r0, [r0]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x48]
+ str r0, [r4, #0x60]
+ add r0, r4, #0
+ add r0, #0x37
+ ldrb r0, [r0]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x48]
+ str r0, [r4, #0x64]
+ add r0, r4, #0
+ add r0, #0x60
+ bl MOD05_021ED9B4
+ add r1, r4, #0
+ add r1, #0x35
+ strb r0, [r1]
+ ldr r0, [r4, #0x38]
+ mov r1, #3
+ bl MOD39_02254DA4
+ ldr r0, [r4, #0x38]
+ mov r1, #6
+ bl MOD39_02254DA4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B48
+_02254B38:
+ ldr r0, [r4, #0x38]
+ mov r1, #6
+ bl MOD39_02254DC8
+ cmp r0, #0
+ beq _02254B48
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254B48:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_02254B4C: .word 0x0000066E
+ thumb_func_end MOD39_02254A30
+
+ thumb_func_start MOD39_02254B50
+MOD39_02254B50: ; 0x02254B50
+ push {r3, r4}
+ add r1, r0, #0
+ add r1, #0x34
+ ldrb r1, [r1]
+ cmp r1, #2
+ bls _02254B94
+ add r2, r0, #0
+ mov r1, #0
+ add r2, #0x36
+_02254B62:
+ ldrb r3, [r2]
+ add r3, r3, #1
+ strb r3, [r2]
+ add r3, r0, #0
+ add r3, #0x36
+ ldrb r4, [r3]
+ add r3, r0, #0
+ add r3, #0x34
+ ldrb r3, [r3]
+ cmp r4, r3
+ blo _02254B7E
+ add r3, r0, #0
+ add r3, #0x36
+ strb r1, [r3]
+_02254B7E:
+ add r3, r0, #0
+ add r3, #0x36
+ ldrb r4, [r3]
+ add r3, r0, #0
+ add r3, #0x37
+ ldrb r3, [r3]
+ cmp r4, r3
+ beq _02254B62
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_02254B94:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD39_02254B50
+
+ thumb_func_start MOD39_02254B9C
+MOD39_02254B9C: ; 0x02254B9C
+ push {r3, r4}
+ add r1, r0, #0
+ add r1, #0x34
+ ldrb r1, [r1]
+ cmp r1, #2
+ bls _02254BE0
+ add r2, r0, #0
+ mov r1, #0
+ add r2, #0x37
+_02254BAE:
+ ldrb r3, [r2]
+ add r3, r3, #1
+ strb r3, [r2]
+ add r3, r0, #0
+ add r3, #0x37
+ ldrb r4, [r3]
+ add r3, r0, #0
+ add r3, #0x34
+ ldrb r3, [r3]
+ cmp r4, r3
+ blo _02254BCA
+ add r3, r0, #0
+ add r3, #0x37
+ strb r1, [r3]
+_02254BCA:
+ add r3, r0, #0
+ add r3, #0x37
+ ldrb r4, [r3]
+ add r3, r0, #0
+ add r3, #0x36
+ ldrb r3, [r3]
+ cmp r4, r3
+ beq _02254BAE
+ mov r0, #1
+ pop {r3, r4}
+ bx lr
+_02254BE0:
+ mov r0, #0
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD39_02254B9C
+
+ thumb_func_start MOD39_02254BE8
+MOD39_02254BE8: ; 0x02254BE8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254BF8
+ cmp r0, #1
+ beq _02254C08
+ b _02254C16
+_02254BF8:
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD39_02254DA4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254C16
+_02254C08:
+ ldr r0, [r4, #0x38]
+ bl MOD39_02254DD4
+ cmp r0, #0
+ beq _02254C16
+ mov r0, #1
+ pop {r4, pc}
+_02254C16:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254BE8
+
+ thumb_func_start MOD39_02254C1C
+MOD39_02254C1C: ; 0x02254C1C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x88
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254C52
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD39_02254C6C
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254C52:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254C1C
+
+ thumb_func_start MOD39_02254C58
+MOD39_02254C58: ; 0x02254C58
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254C68
+ bl MOD39_02254D78
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254C68:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254C58
+
+ thumb_func_start MOD39_02254C6C
+MOD39_02254C6C: ; 0x02254C6C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ mov r0, #1
+ str r1, [sp, #0xc]
+ bl MOD20_022539C4
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x4a
+ bl FUN_02006A34
+ mov r1, #0x14
+ bl _u32_div_f
+ ldr r1, [sp, #0xc]
+ str r0, [r5, #0x64]
+ add r2, r1, #0
+ add r2, #0x30
+ ldrb r2, [r2]
+ mov r3, #0
+ bl MOD20_02253A04
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x3c
+ mov r1, #0xc
+ mov r2, #0x48
+ mov r3, #0x49
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x50
+ mov r1, #0xc
+ mov r2, #5
+ mov r3, #6
+ bl MOD20_02253FBC
+ add r0, r5, #0
+ str r0, [sp, #0x10]
+ add r0, #0x3c
+ ldr r7, _02254D74 ; =0x02255408
+ mov r4, #0
+ add r6, r5, #0
+ str r0, [sp, #0x10]
+_02254CD6:
+ ldr r0, [r5, #0x20]
+ ldr r2, [sp, #0x10]
+ add r1, r7, #0
+ bl MOD20_02253E74
+ str r0, [r6, #0x24]
+ add r4, r4, #1
+ add r7, #0x10
+ add r6, r6, #4
+ cmp r4, #4
+ blt _02254CD6
+ cmp r4, #6
+ bge _02254D18
+ ldr r1, _02254D74 ; =0x02255408
+ lsl r0, r4, #4
+ add r7, r1, r0
+ lsl r0, r4, #2
+ add r6, r5, r0
+ add r0, r5, #0
+ str r0, [sp, #0x14]
+ add r0, #0x50
+ str r0, [sp, #0x14]
+_02254D02:
+ ldr r0, [r5, #0x20]
+ ldr r2, [sp, #0x14]
+ add r1, r7, #0
+ bl MOD20_02253E74
+ str r0, [r6, #0x24]
+ add r4, r4, #1
+ add r7, #0x10
+ add r6, r6, #4
+ cmp r4, #6
+ blt _02254D02
+_02254D18:
+ ldr r0, [sp, #0xc]
+ add r0, #0x32
+ ldrb r2, [r0]
+ ldr r0, [sp, #0xc]
+ lsl r1, r2, #1
+ add r3, r0, r1
+ ldrh r0, [r3, #0x24]
+ mov r1, #4
+ str r0, [sp]
+ ldrh r3, [r3, #0x18]
+ add r0, r5, #0
+ bl MOD39_02254FA4
+ ldr r0, [sp, #0xc]
+ add r0, #0x33
+ ldrb r2, [r0]
+ ldr r0, [sp, #0xc]
+ lsl r1, r2, #1
+ add r3, r0, r1
+ ldrh r0, [r3, #0x24]
+ mov r1, #5
+ str r0, [sp]
+ ldrh r3, [r3, #0x18]
+ add r0, r5, #0
+ bl MOD39_02254FA4
+ ldr r0, [sp, #0xc]
+ add r0, #0x30
+ str r0, [sp, #0xc]
+ ldrb r0, [r0]
+ cmp r0, #1
+ bhi _02254D70
+ ldr r0, [r5, #0x38]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x24]
+ mov r1, #0xa
+ bl MOD20_02253F28
+_02254D70:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254D74: .word 0x02255408
+ thumb_func_end MOD39_02254C6C
+
+ thumb_func_start MOD39_02254D78
+MOD39_02254D78: ; 0x02254D78
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r0, #0x50
+ bl MOD20_02254014
+ add r0, r6, #0
+ add r0, #0x3c
+ bl MOD20_02254014
+ mov r4, #0
+ add r5, r6, #0
+_02254D8E:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254D9A
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+_02254D9A:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _02254D8E
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD39_02254D78
+
+ thumb_func_start MOD39_02254DA4
+MOD39_02254DA4: ; 0x02254DA4
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254DC4 ; =0x022553A8
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254DC4: .word 0x022553A8
+ thumb_func_end MOD39_02254DA4
+
+ thumb_func_start MOD39_02254DC8
+MOD39_02254DC8: ; 0x02254DC8
+ ldr r3, _02254DD0 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254DD0: .word MOD20_02253794
+ thumb_func_end MOD39_02254DC8
+
+ thumb_func_start MOD39_02254DD4
+MOD39_02254DD4: ; 0x02254DD4
+ ldr r3, _02254DDC ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254DDC: .word MOD20_022537B8
+ thumb_func_end MOD39_02254DD4
+
+ thumb_func_start MOD39_02254DE0
+MOD39_02254DE0: ; 0x02254DE0
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254DE0
+
+ thumb_func_start MOD39_02254DF4
+MOD39_02254DF4: ; 0x02254DF4
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD20_022538A4
+ ldr r0, [r5, #4]
+ ldr r2, _02254E7C ; =0x02255330
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x47
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x46
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254E80 ; =0x04001000
+ ldr r0, _02254E84 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD39_02254DE0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254E7C: .word 0x02255330
+_02254E80: .word 0x04001000
+_02254E84: .word 0xFFFFE0FF
+ thumb_func_end MOD39_02254DF4
+
+ thumb_func_start MOD39_02254E88
+MOD39_02254E88: ; 0x02254E88
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02254EA4
+ cmp r0, #1
+ beq _02254EB0
+ pop {r3, r4, r5, pc}
+_02254EA4:
+ mov r0, #1
+ str r0, [r4, #0x68]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02254EB0:
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD39_02254DC8
+ cmp r0, #0
+ beq _02254ECA
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD39_02254DE0
+_02254ECA:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD39_02254E88
+
+ thumb_func_start MOD39_02254ECC
+MOD39_02254ECC: ; 0x02254ECC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ ldr r0, _02254EF4 ; =0x00000669
+ bl MOD20_02252B28
+ ldr r0, [r4, #0x24]
+ mov r1, #0xa
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD39_02254DE0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254EF4: .word 0x00000669
+ thumb_func_end MOD39_02254ECC
+
+ thumb_func_start MOD39_02254EF8
+MOD39_02254EF8: ; 0x02254EF8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ ldr r0, [r4, #0x24]
+ mov r1, #9
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD39_02254DE0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254EF8
+
+ thumb_func_start MOD39_02254F1C
+MOD39_02254F1C: ; 0x02254F1C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ add r0, #0x32
+ ldrb r5, [r0]
+ ldr r0, _02254F5C ; =0x00000663
+ bl MOD20_02252B28
+ lsl r0, r5, #1
+ add r3, r7, r0
+ ldrh r0, [r3, #0x24]
+ mov r1, #4
+ add r2, r5, #0
+ str r0, [sp]
+ ldrh r3, [r3, #0x18]
+ add r0, r4, #0
+ bl MOD39_02254FA4
+ add r0, r4, #0
+ bl MOD39_02254FF8
+ add r0, r6, #0
+ bl MOD39_02254DE0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254F5C: .word 0x00000663
+ thumb_func_end MOD39_02254F1C
+
+ thumb_func_start MOD39_02254F60
+MOD39_02254F60: ; 0x02254F60
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r7, r0, #0
+ add r0, #0x33
+ ldrb r5, [r0]
+ ldr r0, _02254FA0 ; =0x00000663
+ bl MOD20_02252B28
+ lsl r0, r5, #1
+ add r3, r7, r0
+ ldrh r0, [r3, #0x24]
+ mov r1, #5
+ add r2, r5, #0
+ str r0, [sp]
+ ldrh r3, [r3, #0x18]
+ add r0, r4, #0
+ bl MOD39_02254FA4
+ add r0, r4, #0
+ bl MOD39_02254FF8
+ add r0, r6, #0
+ bl MOD39_02254DE0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254FA0: .word 0x00000663
+ thumb_func_end MOD39_02254F60
+
+ thumb_func_start MOD39_02254FA4
+MOD39_02254FA4: ; 0x02254FA4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ add r6, r2, #0
+ add r7, r3, #0
+ ldr r4, [r0, #0x24]
+ cmp r1, #5
+ bne _02254FBA
+ mov r1, #4
+ b _02254FCC
+_02254FBA:
+ add r0, r7, #0
+ mov r1, #0x1c
+ bl FUN_02068678
+ cmp r0, #0
+ beq _02254FCA
+ mov r1, #4
+ b _02254FCC
+_02254FCA:
+ mov r1, #5
+_02254FCC:
+ add r0, r4, #0
+ bl MOD20_02253F28
+ ldr r2, [r5, #0x64]
+ lsl r1, r6, #4
+ add r0, r4, #0
+ add r1, r2, r1
+ bl MOD20_02253FA4
+ add r1, sp, #8
+ ldrh r1, [r1, #0x10]
+ add r0, r7, #0
+ mov r2, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ add r0, r4, #0
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02254FA4
+
+ thumb_func_start MOD39_02254FF8
+MOD39_02254FF8: ; 0x02254FF8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #3
+ mov r2, #0x16
+ ldr r0, [r4, #0x2c]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0xe
+ bl MOD20_02253F64
+ mov r1, #0xb
+ lsl r1, r1, #0x10
+ ldr r0, [r4, #0x30]
+ lsr r2, r1, #1
+ bl MOD20_02253F64
+ ldr r0, [r4, #0x2c]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x30]
+ mov r1, #6
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl MOD20_02253F28
+ pop {r4, pc}
+ thumb_func_end MOD39_02254FF8
+
+ thumb_func_start MOD39_02255030
+MOD39_02255030: ; 0x02255030
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _0225505C
+ ldr r0, [r4, #0x68]
+ cmp r0, #0
+ beq _0225505C
+ add r0, r5, #0
+ bl MOD39_02254DE0
+ pop {r4, r5, r6, pc}
+_0225505C:
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _0225506C
+ cmp r0, #1
+ beq _02255086
+ pop {r4, r5, r6, pc}
+_0225506C:
+ mov r0, #0
+ str r0, [r4, #0x68]
+ add r0, r4, #0
+ bl MOD39_02254FF8
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD39_0225509C
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02255086:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD39_02255114
+ cmp r0, #0
+ beq _02255098
+ add r0, r5, #0
+ bl MOD39_02254DE0
+_02255098:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02255030
+
+ thumb_func_start MOD39_0225509C
+MOD39_0225509C: ; 0x0225509C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ mov r1, #0
+ str r1, [r4, #0x70]
+ str r1, [r4, #0x74]
+ str r1, [r4, #0x78]
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0x31
+ ldrb r0, [r0]
+ cmp r0, #3
+ bhi _022550FA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022550C4: ; jump table
+ .short _022550EE - _022550C4 - 2 ; case 0
+ .short _022550E0 - _022550C4 - 2 ; case 1
+ .short _022550D2 - _022550C4 - 2 ; case 2
+ .short _022550CC - _022550C4 - 2 ; case 3
+_022550CC:
+ ldr r0, _02255104 ; =0x02255378
+ str r0, [r4, #0x6c]
+ b _022550FA
+_022550D2:
+ ldr r0, _02255108 ; =0x02255318
+ mov r1, #1
+ str r0, [r4, #0x6c]
+ ldr r0, [r4, #0x28]
+ bl MOD20_02253F28
+ b _022550FA
+_022550E0:
+ ldr r0, _0225510C ; =0x0225534C
+ mov r1, #2
+ str r0, [r4, #0x6c]
+ ldr r0, [r4, #0x28]
+ bl MOD20_02253F28
+ b _022550FA
+_022550EE:
+ ldr r0, _02255110 ; =0x02255468
+ mov r1, #3
+ str r0, [r4, #0x6c]
+ ldr r0, [r4, #0x28]
+ bl MOD20_02253F28
+_022550FA:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD39_02255114
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02255104: .word 0x02255378
+_02255108: .word 0x02255318
+_0225510C: .word 0x0225534C
+_02255110: .word 0x02255468
+ thumb_func_end MOD39_0225509C
+
+ thumb_func_start MOD39_02255114
+MOD39_02255114: ; 0x02255114
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ add r5, r4, #0
+ add r6, r4, #0
+ mov r7, #0x16
+ add r5, #0x84
+ add r6, #0x78
+ lsl r7, r7, #0xe
+_02255124:
+ ldr r0, [r4, #0x70]
+ cmp r0, #0
+ beq _02255138
+ cmp r0, #1
+ bne _02255130
+ b _02255280
+_02255130:
+ cmp r0, #2
+ bne _02255136
+ b _022552DC
+_02255136:
+ b _022552FA
+_02255138:
+ beq _0225513C
+ b _022552FA
+_0225513C:
+ add r6, r4, #0
+ add r5, r4, #0
+ add r6, #0x7c
+ mov r7, #1
+ add r5, #0x74
+_02255146:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ add r0, r0, #7
+ cmp r0, #6
+ bls _0225515C
+ b _02255276
+_0225515C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02255168: ; jump table
+ .short _02255252 - _02255168 - 2 ; case 0
+ .short _02255240 - _02255168 - 2 ; case 1
+ .short _0225522C - _02255168 - 2 ; case 2
+ .short _02255212 - _02255168 - 2 ; case 3
+ .short _022551C2 - _02255168 - 2 ; case 4
+ .short _0225517A - _02255168 - 2 ; case 5
+ .short _02255176 - _02255168 - 2 ; case 6
+_02255176:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225517A:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r1, [r0, r1]
+ add r0, r4, #0
+ add r0, #0x84
+ str r1, [r0]
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ str r0, [r4, #0x7c]
+ ldr r0, [r6]
+ lsl r0, r0, #0xc
+ str r0, [r6]
+ ldr r1, [r4, #0x78]
+ ldr r0, [r4, #0x7c]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r1, r4, #0
+ add r1, #0x84
+ ldr r0, [r6]
+ ldr r1, [r1]
+ bl _u32_div_f
+ str r0, [r6]
+ str r7, [r4, #0x70]
+ b _02255276
+_022551C2:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r1, [r0, r1]
+ add r0, r4, #0
+ add r0, #0x84
+ str r1, [r0]
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #0
+ str r0, [r4, #0x7c]
+ ldr r0, [r6]
+ mvn r1, r1
+ lsl r0, r0, #0xc
+ mul r1, r0
+ str r1, [r6]
+ ldr r1, [r4, #0x78]
+ ldr r0, [r4, #0x7c]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r1, r4, #0
+ add r1, #0x84
+ ldr r0, [r6]
+ ldr r1, [r1]
+ bl _u32_div_f
+ str r0, [r6]
+ mov r0, #1
+ str r0, [r4, #0x70]
+ b _02255276
+_02255212:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r1, [r0, r1]
+ add r0, r4, #0
+ add r0, #0x84
+ str r1, [r0]
+ mov r0, #2
+ str r0, [r4, #0x70]
+ b _02255276
+_0225522C:
+ ldr r0, [r5]
+ ldr r1, [r4, #0x74]
+ add r0, r0, #1
+ str r0, [r5]
+ ldr r0, [r4, #0x6c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bl MOD20_02252B28
+ b _02255276
+_02255240:
+ ldr r0, [r4, #0x2c]
+ mov r1, #6
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x30]
+ mov r1, #5
+ bl MOD20_02253F28
+ b _02255276
+_02255252:
+ ldr r1, [r5]
+ ldr r0, [r4, #0x74]
+ add r1, r1, #1
+ str r1, [r5]
+ ldr r2, [r4, #0x6c]
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ ldr r2, [r4, #0x74]
+ add r1, r1, #1
+ str r1, [r5]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r1, [r4, #0x6c]
+ lsl r2, r2, #2
+ ldr r0, [r0, #0x24]
+ ldr r1, [r1, r2]
+ bl MOD20_02253F28
+_02255276:
+ ldr r0, [r4, #0x70]
+ cmp r0, #0
+ bne _0225527E
+ b _02255146
+_0225527E:
+ b _022552FA
+_02255280:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022552CC
+ ldr r0, [r5]
+ sub r0, r0, #1
+ str r0, [r5]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022552A4
+ ldr r1, [r6]
+ ldr r0, [r4, #0x7c]
+ add r0, r1, r0
+ str r0, [r6]
+ b _022552AC
+_022552A4:
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ str r0, [r4, #0x78]
+_022552AC:
+ mov r1, #3
+ ldr r2, [r4, #0x78]
+ lsl r1, r1, #0x10
+ add r1, r2, r1
+ ldr r0, [r4, #0x2c]
+ add r2, r7, #0
+ bl MOD20_02253F64
+ mov r1, #0xb
+ ldr r2, [r4, #0x78]
+ lsl r1, r1, #0x10
+ sub r1, r1, r2
+ ldr r0, [r4, #0x30]
+ add r2, r7, #0
+ bl MOD20_02253F64
+_022552CC:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _022552FA
+ mov r0, #0
+ str r0, [r4, #0x70]
+ b _02255124
+_022552DC:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022552F4
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ add r4, #0x84
+ sub r0, r0, #1
+ str r0, [r4]
+ b _022552FA
+_022552F4:
+ mov r0, #0
+ str r0, [r4, #0x70]
+ b _02255124
+_022552FA:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD39_02255114
+
+ .section .rodata
+ ; 0x02255300
+ .incbin "baserom.nds", 0x291cc0, 0x1E4
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_39.SINIT_START
+ .global SDK_OVERLAY.MODULE_39.SINIT_END
+SDK_OVERLAY.MODULE_39.SINIT_START:
+ .word MOD39_02254840
+ .word 0
+SDK_OVERLAY.MODULE_39.SINIT_END:
diff --git a/arm9/modules/40/asm/module_40.s b/arm9/modules/40/asm/module_40.s
new file mode 100644
index 00000000..bc8e79f1
--- /dev/null
+++ b/arm9/modules/40/asm/module_40.s
@@ -0,0 +1,1417 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD40_02254840
+MOD40_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD40_02254854
+ ldr r1, _02254850 ; =MOD40_022549D4
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD40_02254854
+_02254850: .word MOD40_022549D4
+ thumb_func_end MOD40_02254840
+
+ thumb_func_start MOD40_02254854
+MOD40_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x34
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD40_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD40_02254998
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD40_02254998
+ thumb_func_end MOD40_02254854
+
+ thumb_func_start MOD40_0225489C
+MOD40_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r6, r2, #0
+ bl MOD20_02252C3C
+ str r0, [r5, #0x10]
+ bl FUN_0204BF94
+ strb r0, [r5, #3]
+ ldr r0, [r5, #0x10]
+ add r1, sp, #8
+ add r2, sp, #4
+ bl FUN_0204BF9C
+ ldr r0, [sp, #8]
+ strb r0, [r5, #6]
+ ldr r0, [sp, #4]
+ strb r0, [r5, #7]
+ add r0, r5, #3
+ bl MOD40_02254940
+ add r0, r5, #0
+ add r0, #8
+ add r1, r5, #3
+ add r2, r6, #0
+ bl MOD40_02254D6C
+ cmp r0, #0
+ beq _02254930
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254938 ; =0x02255328
+ ldr r2, _0225493C ; =MOD40_02254990
+ mov r1, #6
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x14]
+ mov r0, #0
+ str r0, [r5, #0x1c]
+ ldr r0, [r5, #0x14]
+ mov r1, #2
+ mov r2, #4
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x14]
+ mov r1, #3
+ mov r2, #4
+ bl MOD20_022542C0
+ mov r1, #4
+ ldr r0, [r5, #0x14]
+ add r2, r1, #0
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x14]
+ mov r1, #5
+ mov r2, #4
+ bl MOD20_022542C0
+ mov r0, #0
+ str r0, [r5, #0x2c]
+ str r0, [r5, #0x30]
+ add sp, #0xc
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_02254930:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254938: .word 0x02255328
+_0225493C: .word MOD40_02254990
+ thumb_func_end MOD40_0225489C
+
+ thumb_func_start MOD40_02254940
+MOD40_02254940: ; 0x02254940
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r0, sp, #0
+ bl FUN_02012690
+ ldr r0, [sp]
+ cmp r0, #0x18
+ blo _0225495A
+ mov r1, #0x18
+ bl _u32_div_f
+ str r1, [sp]
+_0225495A:
+ ldr r0, [sp, #4]
+ cmp r0, #0x3c
+ blo _0225496A
+ ldr r0, [sp]
+ mov r1, #0x3c
+ bl _u32_div_f
+ str r1, [sp]
+_0225496A:
+ ldr r0, [sp]
+ strb r0, [r4, #1]
+ ldr r0, [sp, #4]
+ strb r0, [r4, #2]
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02254940
+
+ thumb_func_start MOD40_02254978
+MOD40_02254978: ; 0x02254978
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl MOD20_02254198
+ ldr r0, [r4, #8]
+ bl MOD40_02254DA8
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD40_02254978
+
+ thumb_func_start MOD40_02254990
+MOD40_02254990: ; 0x02254990
+ str r0, [r3, #0x18]
+ str r1, [r3, #0x1c]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD40_02254990
+
+ thumb_func_start MOD40_02254998
+MOD40_02254998: ; 0x02254998
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #5
+ bhs _022549CE
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x14]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _022549D0 ; =0x02255314
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _022549CE
+ add r0, r4, #0
+ bl MOD40_02254978
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_022549CE:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022549D0: .word 0x02255314
+ thumb_func_end MOD40_02254998
+
+ thumb_func_start MOD40_022549D4
+MOD40_022549D4: ; 0x022549D4
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD40_022549D4
+
+ thumb_func_start MOD40_022549DC
+MOD40_022549DC: ; 0x022549DC
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549E4
+ b _022549E6
+_022549E4:
+ mov r1, #4
+_022549E6:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD40_022549DC
+
+ thumb_func_start MOD40_022549F0
+MOD40_022549F0: ; 0x022549F0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A00
+ cmp r0, #1
+ beq _02254A10
+ b _02254A3A
+_02254A00:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD40_02254F98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A3A
+_02254A10:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD40_02254FBC
+ cmp r0, #0
+ beq _02254A3A
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ ldrb r0, [r4, #3]
+ cmp r0, #0
+ beq _02254A32
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD40_022549DC
+ b _02254A3A
+_02254A32:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD40_022549DC
+_02254A3A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD40_022549F0
+
+ thumb_func_start MOD40_02254A40
+MOD40_02254A40: ; 0x02254A40
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254A54
+ mov r1, #4
+ bl MOD40_022549DC
+ mov r0, #0
+ pop {r4, pc}
+_02254A54:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A60
+ cmp r0, #1
+ beq _02254B32
+ b _02254B46
+_02254A60:
+ ldr r1, [r4, #0x1c]
+ cmp r1, #1
+ bne _02254A9A
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ bne _02254A9A
+ mov r0, #1
+ strb r0, [r4, #3]
+ add r0, r4, #3
+ bl MOD40_02254940
+ mov r2, #6
+ mov r3, #7
+ ldrsb r2, [r4, r2]
+ ldrsb r3, [r4, r3]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl FUN_0204BFB0
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD40_02254F98
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B46
+_02254A9A:
+ cmp r1, #1
+ bne _02254AB0
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _02254AB0
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldr r0, _02254B4C ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254B46
+_02254AB0:
+ cmp r1, #1
+ beq _02254AB8
+ cmp r1, #7
+ bne _02254B46
+_02254AB8:
+ ldr r0, [r4, #0x18]
+ cmp r0, #5
+ bhi _02254B24
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254ACA: ; jump table
+ .short _02254B24 - _02254ACA - 2 ; case 0
+ .short _02254B24 - _02254ACA - 2 ; case 1
+ .short _02254AD6 - _02254ACA - 2 ; case 2
+ .short _02254AEA - _02254ACA - 2 ; case 3
+ .short _02254AFE - _02254ACA - 2 ; case 4
+ .short _02254B12 - _02254ACA - 2 ; case 5
+_02254AD6:
+ mov r0, #6
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #6]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x17
+ ble _02254B24
+ mov r0, #0
+ strb r0, [r4, #6]
+ b _02254B24
+_02254AEA:
+ mov r0, #6
+ ldrsb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, #6]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bge _02254B24
+ mov r0, #0x17
+ strb r0, [r4, #6]
+ b _02254B24
+_02254AFE:
+ mov r0, #7
+ ldrsb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, #7]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0x3b
+ ble _02254B24
+ mov r0, #0
+ strb r0, [r4, #7]
+ b _02254B24
+_02254B12:
+ mov r0, #7
+ ldrsb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, #7]
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bge _02254B24
+ mov r0, #0x3b
+ strb r0, [r4, #7]
+_02254B24:
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD40_02254F98
+ b _02254B46
+_02254B32:
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD40_02254FBC
+ cmp r0, #0
+ beq _02254B46
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD40_022549DC
+_02254B46:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254B4C: .word 0x0000066E
+ thumb_func_end MOD40_02254A40
+
+ thumb_func_start MOD40_02254B50
+MOD40_02254B50: ; 0x02254B50
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254B68
+ mov r1, #4
+ bl MOD40_022549DC
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_02254B68:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254B74
+ cmp r0, #1
+ beq _02254C02
+ b _02254C12
+_02254B74:
+ add r0, r4, #3
+ bl MOD40_02254D4C
+ cmp r0, #0
+ beq _02254B8C
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD40_022549DC
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_02254B8C:
+ ldr r1, [r4, #0x1c]
+ cmp r1, #1
+ bne _02254BB2
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _02254BB2
+ mov r0, #0
+ strb r0, [r4, #3]
+ ldr r0, [r4, #8]
+ mov r1, #3
+ bl MOD40_02254F98
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD40_022549DC
+ b _02254C12
+_02254BB2:
+ cmp r1, #1
+ bne _02254BC4
+ ldr r0, [r4, #0x18]
+ cmp r0, #0
+ bne _02254BC4
+ ldr r0, _02254C18 ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254C12
+_02254BC4:
+ add r0, r4, #0
+ bl MOD40_02254CE4
+ cmp r0, #0
+ bne _02254BD4
+ add r0, r4, #0
+ bl MOD40_02254CE8
+_02254BD4:
+ add r0, r4, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD40_02254D00
+ cmp r0, #0
+ beq _02254C12
+ mov r0, #5
+ ldrsb r0, [r4, r0]
+ ldr r1, [sp]
+ cmp r1, r0
+ beq _02254C12
+ strb r1, [r4, #5]
+ ldr r0, [sp, #4]
+ mov r1, #4
+ strb r0, [r4, #4]
+ ldr r0, [r4, #8]
+ bl MOD40_02254F98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254C12
+_02254C02:
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD40_02254FBC
+ cmp r0, #0
+ beq _02254C12
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254C12:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_02254C18: .word 0x0000066E
+ thumb_func_end MOD40_02254B50
+
+ thumb_func_start MOD40_02254C1C
+MOD40_02254C1C: ; 0x02254C1C
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254C34
+ mov r1, #4
+ bl MOD40_022549DC
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_02254C34:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254C40
+ cmp r0, #1
+ beq _02254C50
+ b _02254CDC
+_02254C40:
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD40_02254F98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254CDC
+_02254C50:
+ add r0, r4, #3
+ bl MOD40_02254D4C
+ cmp r0, #0
+ bne _02254C76
+ ldr r0, [r4, #8]
+ bl MOD40_0225530C
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD40_02254F98
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD40_022549DC
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_02254C76:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #1
+ bne _02254CA6
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _02254CA6
+ mov r0, #0
+ strb r0, [r4, #3]
+ ldr r0, [r4, #8]
+ bl MOD40_0225530C
+ ldr r0, [r4, #8]
+ mov r1, #3
+ bl MOD40_02254F98
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD40_022549DC
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_02254CA6:
+ add r0, r4, #0
+ bl MOD40_02254CE4
+ cmp r0, #0
+ bne _02254CB6
+ add r0, r4, #0
+ bl MOD40_02254CE8
+_02254CB6:
+ add r0, r4, #0
+ add r1, sp, #4
+ add r2, sp, #0
+ bl MOD40_02254D00
+ cmp r0, #0
+ beq _02254CDC
+ mov r0, #5
+ ldrsb r0, [r4, r0]
+ ldr r1, [sp]
+ cmp r1, r0
+ beq _02254CDC
+ strb r1, [r4, #5]
+ ldr r0, [sp, #4]
+ mov r1, #4
+ strb r0, [r4, #4]
+ ldr r0, [r4, #8]
+ bl MOD40_02254F98
+_02254CDC:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02254C1C
+
+ thumb_func_start MOD40_02254CE4
+MOD40_02254CE4: ; 0x02254CE4
+ ldr r0, [r0, #0x2c]
+ bx lr
+ thumb_func_end MOD40_02254CE4
+
+ thumb_func_start MOD40_02254CE8
+MOD40_02254CE8: ; 0x02254CE8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ bne _02254CFE
+ add r0, r4, #0
+ add r0, #0x20
+ bl FUN_02012690
+ mov r0, #1
+ str r0, [r4, #0x30]
+_02254CFE:
+ pop {r4, pc}
+ thumb_func_end MOD40_02254CE8
+
+ thumb_func_start MOD40_02254D00
+MOD40_02254D00: ; 0x02254D00
+ ldr r3, [r0, #0x30]
+ cmp r3, #0
+ beq _02254D12
+ ldr r3, [r0, #0x20]
+ str r3, [r1]
+ ldr r0, [r0, #0x24]
+ str r0, [r2]
+ mov r0, #1
+ bx lr
+_02254D12:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD40_02254D00
+
+ thumb_func_start MOD40_02254D18
+MOD40_02254D18: ; 0x02254D18
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254D28
+ cmp r0, #1
+ beq _02254D38
+ b _02254D46
+_02254D28:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD40_02254F98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254D46
+_02254D38:
+ ldr r0, [r4, #8]
+ bl MOD40_02254FC8
+ cmp r0, #0
+ beq _02254D46
+ mov r0, #1
+ pop {r4, pc}
+_02254D46:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02254D18
+
+ thumb_func_start MOD40_02254D4C
+MOD40_02254D4C: ; 0x02254D4C
+ mov r1, #1
+ mov r2, #3
+ ldrsb r3, [r0, r1]
+ ldrsb r2, [r0, r2]
+ cmp r3, r2
+ bne _02254D64
+ mov r2, #2
+ ldrsb r3, [r0, r2]
+ mov r2, #4
+ ldrsb r0, [r0, r2]
+ cmp r3, r0
+ beq _02254D66
+_02254D64:
+ mov r1, #0
+_02254D66:
+ add r0, r1, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD40_02254D4C
+
+ thumb_func_start MOD40_02254D6C
+MOD40_02254D6C: ; 0x02254D6C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x9c
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254DA2
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x30]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD40_02254DBC
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254DA2:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02254D6C
+
+ thumb_func_start MOD40_02254DA8
+MOD40_02254DA8: ; 0x02254DA8
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254DB8
+ bl MOD40_02254EE4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254DB8:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02254DA8
+
+ thumb_func_start MOD40_02254DBC
+MOD40_02254DBC: ; 0x02254DBC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r5, r0, #0
+ str r1, [sp, #0xc]
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #2
+ bl FUN_02006A34
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #1
+ mov r3, #0xa
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x4f
+ lsl r3, r3, #8
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x68
+ mov r1, #0xc
+ mov r2, #0x4d
+ mov r3, #0x4e
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x7c
+ mov r1, #0xc
+ mov r2, #3
+ mov r3, #4
+ bl MOD20_02253FBC
+ add r0, r5, #0
+ str r0, [sp, #0x14]
+ add r0, #0x68
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ str r0, [sp, #0x10]
+ add r0, #0x7c
+ ldr r7, _02254EE0 ; =0x022553B0
+ mov r4, #0
+ add r6, r5, #0
+ str r0, [sp, #0x10]
+_02254E2A:
+ cmp r4, #9
+ blt _02254E40
+ cmp r4, #0xc
+ bgt _02254E40
+ ldr r0, [r5, #0x30]
+ ldr r2, [sp, #0x10]
+ add r1, r7, #0
+ bl MOD20_02253E74
+ str r0, [r6, #0x34]
+ b _02254E52
+_02254E40:
+ ldr r0, [r5, #0x30]
+ ldr r2, [sp, #0x14]
+ add r1, r7, #0
+ bl MOD20_02253E74
+ mov r1, #0x50
+ str r0, [r6, #0x34]
+ bl MOD20_02253FA4
+_02254E52:
+ add r4, r4, #1
+ add r7, #0x10
+ add r6, r6, #4
+ cmp r4, #0xd
+ blt _02254E2A
+ ldr r0, [sp, #0xc]
+ ldrb r0, [r0]
+ cmp r0, #0
+ ldr r0, [r5, #0x34]
+ beq _02254EB2
+ mov r1, #3
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x40]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x44]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x48]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x4c]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x50]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x54]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r1, [sp, #0xc]
+ mov r2, #1
+ ldrsb r1, [r1, r2]
+ ldr r2, [sp, #0xc]
+ mov r3, #2
+ ldrsb r2, [r2, r3]
+ add r0, r5, #0
+ bl MOD40_02254F14
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_02254EB2:
+ mov r1, #2
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x40]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x44]
+ mov r1, #4
+ bl MOD20_02253F28
+ ldr r1, [sp, #0xc]
+ mov r2, #3
+ ldrsb r1, [r1, r2]
+ ldr r2, [sp, #0xc]
+ mov r3, #4
+ ldrsb r2, [r2, r3]
+ add r0, r5, #0
+ bl MOD40_02254F14
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254EE0: .word 0x022553B0
+ thumb_func_end MOD40_02254DBC
+
+ thumb_func_start MOD40_02254EE4
+MOD40_02254EE4: ; 0x02254EE4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02254EEC:
+ ldr r1, [r5, #0x34]
+ cmp r1, #0
+ beq _02254EF8
+ ldr r0, [r6, #0x30]
+ bl MOD20_02253F14
+_02254EF8:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xd
+ blt _02254EEC
+ add r0, r6, #0
+ add r0, #0x68
+ bl MOD20_02254014
+ add r6, #0x7c
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02254EE4
+
+ thumb_func_start MOD40_02254F14
+MOD40_02254F14: ; 0x02254F14
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _02254F8C ; =0x04000280
+ mov r3, #0
+ strh r3, [r0]
+ str r1, [r0, #0x10]
+ add r1, r0, #0
+ add r4, r2, #0
+ mov r2, #0xa
+ add r1, #0x18
+ str r2, [r1]
+ str r3, [r1, #4]
+ lsr r1, r0, #0xb
+_02254F2E:
+ ldrh r2, [r0]
+ tst r2, r1
+ bne _02254F2E
+ ldr r1, _02254F90 ; =0x040002A0
+ ldr r0, [r5, #0x58]
+ ldr r1, [r1]
+ bl MOD20_02253F28
+ ldr r2, _02254F8C ; =0x04000280
+ lsr r0, r2, #0xb
+_02254F42:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254F42
+ ldr r1, _02254F94 ; =0x040002A8
+ ldr r0, [r5, #0x5c]
+ ldr r1, [r1]
+ bl MOD20_02253F28
+ ldr r0, _02254F8C ; =0x04000280
+ mov r3, #0
+ strh r3, [r0]
+ add r1, r0, #0
+ str r4, [r0, #0x10]
+ mov r2, #0xa
+ add r1, #0x18
+ str r2, [r1]
+ str r3, [r1, #4]
+ lsr r1, r0, #0xb
+_02254F66:
+ ldrh r2, [r0]
+ tst r2, r1
+ bne _02254F66
+ ldr r1, _02254F90 ; =0x040002A0
+ ldr r0, [r5, #0x60]
+ ldr r1, [r1]
+ bl MOD20_02253F28
+ ldr r2, _02254F8C ; =0x04000280
+ lsr r0, r2, #0xb
+_02254F7A:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254F7A
+ ldr r1, _02254F94 ; =0x040002A8
+ ldr r0, [r5, #0x64]
+ ldr r1, [r1]
+ bl MOD20_02253F28
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254F8C: .word 0x04000280
+_02254F90: .word 0x040002A0
+_02254F94: .word 0x040002A8
+ thumb_func_end MOD40_02254F14
+
+ thumb_func_start MOD40_02254F98
+MOD40_02254F98: ; 0x02254F98
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254FB8 ; =0x0225535C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254FB8: .word 0x0225535C
+ thumb_func_end MOD40_02254F98
+
+ thumb_func_start MOD40_02254FBC
+MOD40_02254FBC: ; 0x02254FBC
+ ldr r3, _02254FC4 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254FC4: .word MOD20_02253794
+ thumb_func_end MOD40_02254FBC
+
+ thumb_func_start MOD40_02254FC8
+MOD40_02254FC8: ; 0x02254FC8
+ ldr r3, _02254FD0 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254FD0: .word MOD20_022537B8
+ thumb_func_end MOD40_02254FC8
+
+ thumb_func_start MOD40_02254FD4
+MOD40_02254FD4: ; 0x02254FD4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02254FD4
+
+ thumb_func_start MOD40_02254FE8
+MOD40_02254FE8: ; 0x02254FE8
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _0225506C ; =0x02255340
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x4c
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x4b
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02255070 ; =0x04001000
+ ldr r0, _02255074 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD40_02254FD4
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_0225506C: .word 0x02255340
+_02255070: .word 0x04001000
+_02255074: .word 0xFFFFE0FF
+ thumb_func_end MOD40_02254FE8
+
+ thumb_func_start MOD40_02255078
+MOD40_02255078: ; 0x02255078
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02255094
+ cmp r0, #1
+ beq _022550A2
+ pop {r3, r4, r5, pc}
+_02255094:
+ add r0, r4, #0
+ bl MOD40_0225530C
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022550A2:
+ add r0, r4, #0
+ mov r1, #5
+ bl MOD40_02254FBC
+ cmp r0, #0
+ beq _022550BC
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD40_02254FD4
+_022550BC:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD40_02255078
+
+ thumb_func_start MOD40_022550C0
+MOD40_022550C0: ; 0x022550C0
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r4, r0, #0
+ ldr r0, _02255138 ; =0x00000663
+ bl MOD20_02252B28
+ ldr r0, [r5, #0x34]
+ mov r1, #3
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x40]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x44]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x38]
+ mov r1, #0
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x3c]
+ mov r1, #0
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x48]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x4c]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x50]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x54]
+ mov r1, #1
+ bl MOD20_02253F78
+ mov r1, #1
+ mov r2, #2
+ ldrsb r1, [r4, r1]
+ ldrsb r2, [r4, r2]
+ add r0, r5, #0
+ bl MOD40_02254F14
+ add r0, r6, #0
+ bl MOD40_02254FD4
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02255138: .word 0x00000663
+ thumb_func_end MOD40_022550C0
+
+ thumb_func_start MOD40_0225513C
+MOD40_0225513C: ; 0x0225513C
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r4, r0, #0
+ ldr r0, _022551B4 ; =0x00000663
+ bl MOD20_02252B28
+ ldr r0, [r5, #0x34]
+ mov r1, #2
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x40]
+ mov r1, #5
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x44]
+ mov r1, #4
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x38]
+ mov r1, #0
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x3c]
+ mov r1, #0
+ bl MOD20_02253F28
+ ldr r0, [r5, #0x48]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x4c]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x50]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x54]
+ mov r1, #0
+ bl MOD20_02253F78
+ mov r1, #3
+ mov r2, #4
+ ldrsb r1, [r4, r1]
+ ldrsb r2, [r4, r2]
+ add r0, r5, #0
+ bl MOD40_02254F14
+ add r0, r6, #0
+ bl MOD40_02254FD4
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022551B4: .word 0x00000663
+ thumb_func_end MOD40_0225513C
+
+ thumb_func_start MOD40_022551B8
+MOD40_022551B8: ; 0x022551B8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r2, r0, #0
+ ldrb r0, [r2]
+ cmp r0, #0
+ beq _022551E2
+ mov r1, #1
+ mov r3, #2
+ ldrsb r1, [r2, r1]
+ ldrsb r2, [r2, r3]
+ add r0, r4, #0
+ bl MOD40_02254F14
+ b _022551F0
+_022551E2:
+ mov r1, #3
+ mov r3, #4
+ ldrsb r1, [r2, r1]
+ ldrsb r2, [r2, r3]
+ add r0, r4, #0
+ bl MOD40_02254F14
+_022551F0:
+ add r0, r5, #0
+ bl MOD40_02254FD4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD40_022551B8
+
+ thumb_func_start MOD40_022551F8
+MOD40_022551F8: ; 0x022551F8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _0225521A
+ cmp r0, #1
+ beq _02255262
+ pop {r3, r4, r5, pc}
+_0225521A:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x90
+ str r1, [r0]
+ ldr r0, [r4, #0x40]
+ mov r1, #4
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x44]
+ mov r1, #4
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl MOD20_02253F28
+ ldr r0, _02255304 ; =0x00000663
+ bl MOD20_02252B28
+ ldr r0, _02255308 ; =0x00000126
+ bl MOD20_02252B48
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r4, #0x98
+ add r0, r5, #0
+ str r1, [r4]
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255262:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02255294
+ ldr r0, [r4, #0x58]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x5c]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x60]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x64]
+ mov r1, #0
+ bl MOD20_02253F78
+ add r0, r5, #0
+ bl MOD40_02254FD4
+ pop {r3, r4, r5, pc}
+_02255294:
+ bl FUN_02005670
+ cmp r0, #0
+ bne _022552A2
+ ldr r0, _02255308 ; =0x00000126
+ bl MOD20_02252B48
+_022552A2:
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ cmp r0, #0xf
+ blo _02255300
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x98
+ ldr r1, [r0]
+ mov r0, #1
+ eor r1, r0
+ add r0, r4, #0
+ add r0, #0x98
+ str r1, [r0]
+ add r1, r4, #0
+ add r1, #0x98
+ ldr r0, [r4, #0x58]
+ ldr r1, [r1]
+ bl MOD20_02253F78
+ add r1, r4, #0
+ add r1, #0x98
+ ldr r0, [r4, #0x5c]
+ ldr r1, [r1]
+ bl MOD20_02253F78
+ add r1, r4, #0
+ add r1, #0x98
+ ldr r0, [r4, #0x60]
+ ldr r1, [r1]
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x64]
+ add r4, #0x98
+ ldr r1, [r4]
+ bl MOD20_02253F78
+_02255300:
+ pop {r3, r4, r5, pc}
+ nop
+_02255304: .word 0x00000663
+_02255308: .word 0x00000126
+ thumb_func_end MOD40_022551F8
+
+ thumb_func_start MOD40_0225530C
+MOD40_0225530C: ; 0x0225530C
+ mov r1, #1
+ add r0, #0x90
+ str r1, [r0]
+ bx lr
+ thumb_func_end MOD40_0225530C
+
+ .section .rodata
+ ; 0x02255314
+ .incbin "baserom.nds", 0x292AD4, 0x16C
+
+ .section .sinit
+ .word MOD40_02254840
diff --git a/arm9/modules/41/asm/module_41.s b/arm9/modules/41/asm/module_41.s
new file mode 100644
index 00000000..d0b3e013
--- /dev/null
+++ b/arm9/modules/41/asm/module_41.s
@@ -0,0 +1,2032 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD41_02254840
+MOD41_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD41_02254854
+ ldr r1, _02254850 ; =MOD41_02254AD8
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD41_02254854
+_02254850: .word MOD41_02254AD8
+ thumb_func_end MOD41_02254840
+
+ thumb_func_start MOD41_02254854
+MOD41_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x90
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD41_02254990
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD41_02254A88
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD41_02254A88
+ thumb_func_end MOD41_02254854
+
+ thumb_func_start MOD41_0225489C
+MOD41_0225489C: ; 0x0225489C
+ push {r4, r5}
+ mov r4, #0
+ add r5, r0, #0
+ mov r3, #1
+ add r2, r4, #0
+_022548A6:
+ add r1, r0, r4
+ str r3, [r5, #0x5c]
+ add r1, #0x4c
+ add r4, r4, #1
+ add r5, r5, #4
+ strb r2, [r1]
+ cmp r4, #3
+ blt _022548A6
+ str r3, [r0, #0x44]
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD41_0225489C
+
+ thumb_func_start MOD41_022548BC
+MOD41_022548BC: ; 0x022548BC
+ lsl r3, r1, #2
+ add r3, r0, r3
+ str r2, [r3, #0x5c]
+ cmp r2, #0
+ beq _022548CA
+ mov r2, #0
+ b _022548CC
+_022548CA:
+ mov r2, #1
+_022548CC:
+ add r1, r0, r1
+ add r1, #0x4c
+ strb r2, [r1]
+ mov r1, #1
+ str r1, [r0, #0x44]
+ bx lr
+ thumb_func_end MOD41_022548BC
+
+ thumb_func_start MOD41_022548D8
+MOD41_022548D8: ; 0x022548D8
+ lsl r3, r1, #2
+ add r3, r0, r3
+ ldr r3, [r3, #0x5c]
+ cmp r3, #0
+ beq _022548EC
+ add r1, r0, r1
+ add r1, #0x4c
+ strb r2, [r1]
+ mov r1, #1
+ str r1, [r0, #0x44]
+_022548EC:
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD41_022548D8
+
+ thumb_func_start MOD41_022548F0
+MOD41_022548F0: ; 0x022548F0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ add r4, r1, #0
+ bl MOD41_0225578C
+ str r0, [r4, #0x10]
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ mov r2, #0x48
+ bl FUN_020893F0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_022548F0
+
+ thumb_func_start MOD41_0225490C
+MOD41_0225490C: ; 0x0225490C
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x48
+ mov r2, #0x48
+ bl FUN_02089418
+ cmp r0, #0
+ beq _0225494C
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ cmp r0, #2
+ bne _02254952
+ add r0, r4, #0
+ bl MOD41_02255108
+ add r0, r4, #0
+ bl MOD41_022550F8
+ cmp r0, #0
+ beq _02254952
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x8c
+ str r1, [r0]
+ mov r0, #0
+ str r0, [r4, #0x50]
+ mov r0, #2
+ str r0, [r4, #0x54]
+ pop {r4, pc}
+_0225494C:
+ add r0, r4, #0
+ bl MOD41_02254954
+_02254952:
+ pop {r4, pc}
+ thumb_func_end MOD41_0225490C
+
+ thumb_func_start MOD41_02254954
+MOD41_02254954: ; 0x02254954
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ add r3, r4, #0
+ mov r2, #1
+ add r1, #0x8c
+ str r2, [r1]
+ mov r1, #0
+ add r3, #0x48
+ strb r1, [r3]
+ add r3, r4, #0
+ add r3, #0x49
+ strb r1, [r3]
+ add r3, r4, #0
+ add r3, #0x4a
+ strb r1, [r3]
+ add r3, r4, #0
+ add r3, #0x4b
+ strb r1, [r3]
+ str r2, [r4, #0x50]
+ str r1, [r4, #0x54]
+ str r1, [r4, #0x58]
+ bl MOD41_0225489C
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ pop {r4, pc}
+ thumb_func_end MOD41_02254954
+
+ thumb_func_start MOD41_02254990
+MOD41_02254990: ; 0x02254990
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ str r3, [r5, #4]
+ bl MOD41_0225490C
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #8
+ add r1, #0x48
+ add r2, r6, #0
+ bl MOD41_0225524C
+ cmp r0, #0
+ beq _02254A28
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #3]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254A30 ; =0x022557B0
+ ldr r2, _02254A34 ; =MOD41_02254A58
+ mov r1, #0xb
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x10]
+ mov r0, #0
+ str r0, [r5, #0x18]
+ ldr r0, [r5, #0x10]
+ mov r1, #3
+ mov r2, #4
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x10]
+ mov r1, #5
+ mov r2, #4
+ bl MOD20_022542C0
+ mov r1, #4
+ ldr r0, [r5, #0x10]
+ add r2, r1, #0
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x10]
+ mov r1, #6
+ mov r2, #4
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x10]
+ mov r1, #7
+ mov r2, #4
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x10]
+ mov r1, #9
+ mov r2, #4
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x10]
+ mov r1, #8
+ mov r2, #4
+ bl MOD20_022542C0
+ ldr r0, [r5, #0x10]
+ mov r1, #0xa
+ mov r2, #4
+ bl MOD20_022542C0
+ add sp, #4
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_02254A28:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254A30: .word 0x022557B0
+_02254A34: .word MOD41_02254A58
+ thumb_func_end MOD41_02254990
+
+ thumb_func_start MOD41_02254A38
+MOD41_02254A38: ; 0x02254A38
+ push {r4, lr}
+ add r4, r0, #0
+ add r1, r4, #0
+ add r1, #0x48
+ bl MOD41_022548F0
+ ldr r0, [r4, #0x10]
+ bl MOD20_02254198
+ ldr r0, [r4, #8]
+ bl MOD41_0225528C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD41_02254A38
+
+ thumb_func_start MOD41_02254A58
+MOD41_02254A58: ; 0x02254A58
+ push {r3, lr}
+ add r2, r0, #0
+ str r2, [r3, #0x14]
+ str r1, [r3, #0x18]
+ cmp r2, #3
+ bhs _02254A84
+ cmp r1, #1
+ bne _02254A74
+ add r1, r2, #0
+ add r0, r3, #0
+ mov r2, #1
+ bl MOD41_022548D8
+ pop {r3, pc}
+_02254A74:
+ sub r0, r1, #2
+ cmp r0, #1
+ bhi _02254A84
+ add r1, r2, #0
+ add r0, r3, #0
+ mov r2, #0
+ bl MOD41_022548D8
+_02254A84:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02254A58
+
+ thumb_func_start MOD41_02254A88
+MOD41_02254A88: ; 0x02254A88
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #7
+ bhs _02254AD0
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ bl MOD20_02252C14
+ ldr r0, [r4, #0x44]
+ cmp r0, #0
+ beq _02254AAE
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD41_022553A4
+ mov r0, #0
+ str r0, [r4, #0x44]
+_02254AAE:
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254AD4 ; =0x02255794
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254AD0
+ add r0, r4, #0
+ bl MOD41_02254A38
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254AD0:
+ pop {r3, r4, r5, pc}
+ nop
+_02254AD4: .word 0x02255794
+ thumb_func_end MOD41_02254A88
+
+ thumb_func_start MOD41_02254AD8
+MOD41_02254AD8: ; 0x02254AD8
+ mov r1, #1
+ strb r1, [r0, #3]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD41_02254AD8
+
+ thumb_func_start MOD41_02254AE0
+MOD41_02254AE0: ; 0x02254AE0
+ ldrb r3, [r0, #3]
+ ldrb r2, [r0]
+ cmp r3, #0
+ beq _02254AEA
+ mov r1, #6
+_02254AEA:
+ strb r1, [r0]
+ cmp r1, #0
+ beq _02254AFA
+ cmp r1, #6
+ beq _02254AFA
+ add r3, r0, #0
+ add r3, #0x8c
+ str r2, [r3]
+_02254AFA:
+ cmp r1, #6
+ bhi _02254B50
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02254B0A: ; jump table
+ .short _02254B50 - _02254B0A - 2 ; case 0
+ .short _02254B18 - _02254B0A - 2 ; case 1
+ .short _02254B22 - _02254B0A - 2 ; case 2
+ .short _02254B2C - _02254B0A - 2 ; case 3
+ .short _02254B36 - _02254B0A - 2 ; case 4
+ .short _02254B40 - _02254B0A - 2 ; case 5
+ .short _02254B4A - _02254B0A - 2 ; case 6
+_02254B18:
+ mov r1, #1
+ str r1, [r0, #0x50]
+ mov r1, #0
+ str r1, [r0, #0x54]
+ b _02254B50
+_02254B22:
+ mov r1, #0
+ str r1, [r0, #0x50]
+ mov r1, #1
+ str r1, [r0, #0x54]
+ b _02254B50
+_02254B2C:
+ mov r1, #0
+ str r1, [r0, #0x50]
+ mov r1, #1
+ str r1, [r0, #0x54]
+ b _02254B50
+_02254B36:
+ mov r1, #0
+ str r1, [r0, #0x50]
+ mov r1, #2
+ str r1, [r0, #0x54]
+ b _02254B50
+_02254B40:
+ mov r1, #0
+ str r1, [r0, #0x50]
+ mov r1, #3
+ str r1, [r0, #0x54]
+ b _02254B50
+_02254B4A:
+ add r1, r0, #0
+ add r1, #0x8c
+ str r2, [r1]
+_02254B50:
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD41_02254AE0
+
+ thumb_func_start MOD41_02254B58
+MOD41_02254B58: ; 0x02254B58
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254B68
+ cmp r0, #1
+ beq _02254B78
+ b _02254B94
+_02254B68:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD41_022553A4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B94
+_02254B78:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD41_022553C8
+ cmp r0, #0
+ beq _02254B94
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ add r4, #0x8c
+ ldr r1, [r4]
+ bl MOD41_02254AE0
+_02254B94:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD41_02254B58
+
+ thumb_func_start MOD41_02254B98
+MOD41_02254B98: ; 0x02254B98
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #3]
+ cmp r1, #0
+ beq _02254BAC
+ mov r1, #6
+ bl MOD41_02254AE0
+ mov r0, #0
+ pop {r4, pc}
+_02254BAC:
+ ldr r0, [r4, #8]
+ bl MOD41_022553D4
+ cmp r0, #0
+ bne _02254BBA
+ mov r0, #0
+ pop {r4, pc}
+_02254BBA:
+ ldr r1, [r4, #0x18]
+ cmp r1, #1
+ bne _02254C36
+ ldr r0, [r4, #0x14]
+ cmp r0, #2
+ bhi _02254C36
+ mov r0, #0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02254BEE
+ cmp r0, #1
+ beq _02254C2C
+ cmp r0, #2
+ bne _02254C32
+ add r0, r4, #0
+ bl MOD41_02255170
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD41_022553A4
+ ldr r0, _02254D18 ; =0x00000663
+ bl MOD20_02252B28
+ b _02254C32
+_02254BEE:
+ ldr r0, _02254D18 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ bl MOD41_0225504C
+ mov r3, #0
+ mov r2, #0
+ eor r1, r3
+ eor r0, r2
+ orr r0, r1
+ beq _02254C32
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ mov r1, #1
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ ldr r0, [r4, #8]
+ mov r1, #3
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD41_02254AE0
+ b _02254C32
+_02254C2C:
+ ldr r0, _02254D1C ; =0x0000066E
+ bl MOD20_02252B28
+_02254C32:
+ mov r0, #0
+ pop {r4, pc}
+_02254C36:
+ cmp r1, #1
+ beq _02254C3E
+ cmp r1, #7
+ bne _02254D12
+_02254C3E:
+ ldr r1, [r4, #0x14]
+ add r0, r4, #0
+ add r0, #0x48
+ cmp r1, #0xa
+ bhi _02254D06
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02254C54: ; jump table
+ .short _02254D06 - _02254C54 - 2 ; case 0
+ .short _02254D06 - _02254C54 - 2 ; case 1
+ .short _02254D06 - _02254C54 - 2 ; case 2
+ .short _02254C6A - _02254C54 - 2 ; case 3
+ .short _02254C7C - _02254C54 - 2 ; case 4
+ .short _02254C90 - _02254C54 - 2 ; case 5
+ .short _02254CA4 - _02254C54 - 2 ; case 6
+ .short _02254CB8 - _02254C54 - 2 ; case 7
+ .short _02254CCC - _02254C54 - 2 ; case 8
+ .short _02254CE0 - _02254C54 - 2 ; case 9
+ .short _02254CF4 - _02254C54 - 2 ; case 10
+_02254C6A:
+ mov r1, #0
+ ldrsb r2, [r0, r1]
+ add r2, r2, #1
+ strb r2, [r0]
+ ldrsb r2, [r0, r1]
+ cmp r2, #9
+ ble _02254D06
+ strb r1, [r0]
+ b _02254D06
+_02254C7C:
+ mov r1, #1
+ ldrsb r2, [r0, r1]
+ add r2, r2, #1
+ strb r2, [r0, #1]
+ ldrsb r1, [r0, r1]
+ cmp r1, #9
+ ble _02254D06
+ mov r1, #0
+ strb r1, [r0, #1]
+ b _02254D06
+_02254C90:
+ mov r1, #0
+ ldrsb r2, [r0, r1]
+ sub r2, r2, #1
+ strb r2, [r0]
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ bge _02254D06
+ mov r1, #9
+ strb r1, [r0]
+ b _02254D06
+_02254CA4:
+ mov r1, #1
+ ldrsb r2, [r0, r1]
+ sub r2, r2, #1
+ strb r2, [r0, #1]
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ bge _02254D06
+ mov r1, #9
+ strb r1, [r0, #1]
+ b _02254D06
+_02254CB8:
+ mov r1, #2
+ ldrsb r2, [r0, r1]
+ add r2, r2, #1
+ strb r2, [r0, #2]
+ ldrsb r1, [r0, r1]
+ cmp r1, #5
+ ble _02254D06
+ mov r1, #0
+ strb r1, [r0, #2]
+ b _02254D06
+_02254CCC:
+ mov r1, #3
+ ldrsb r2, [r0, r1]
+ add r2, r2, #1
+ strb r2, [r0, #3]
+ ldrsb r1, [r0, r1]
+ cmp r1, #9
+ ble _02254D06
+ mov r1, #0
+ strb r1, [r0, #3]
+ b _02254D06
+_02254CE0:
+ mov r1, #2
+ ldrsb r2, [r0, r1]
+ sub r2, r2, #1
+ strb r2, [r0, #2]
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ bge _02254D06
+ mov r1, #5
+ strb r1, [r0, #2]
+ b _02254D06
+_02254CF4:
+ mov r1, #3
+ ldrsb r2, [r0, r1]
+ sub r2, r2, #1
+ strb r2, [r0, #3]
+ ldrsb r1, [r0, r1]
+ cmp r1, #0
+ bge _02254D06
+ mov r1, #9
+ strb r1, [r0, #3]
+_02254D06:
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD41_022553A4
+ mov r0, #0
+ str r0, [r4, #0x18]
+_02254D12:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254D18: .word 0x00000663
+_02254D1C: .word 0x0000066E
+ thumb_func_end MOD41_02254B98
+
+ thumb_func_start MOD41_02254D20
+MOD41_02254D20: ; 0x02254D20
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #3]
+ cmp r1, #0
+ beq _02254D34
+ mov r1, #6
+ bl MOD41_02254AE0
+ mov r0, #0
+ pop {r4, pc}
+_02254D34:
+ bl MOD41_02255108
+ cmp r0, #0
+ beq _02254D6C
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD41_022553A4
+ add r0, r4, #0
+ bl MOD41_022550F8
+ cmp r0, #0
+ beq _02254D6C
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ ldr r0, [r4, #8]
+ mov r1, #6
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD41_02254AE0
+ mov r0, #0
+ pop {r4, pc}
+_02254D6C:
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _02254E00
+ mov r0, #0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02254D86
+ cmp r0, #1
+ beq _02254D8E
+ cmp r0, #2
+ beq _02254DC0
+ b _02254E00
+_02254D86:
+ ldr r0, _02254E04 ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254E00
+_02254D8E:
+ ldr r0, _02254E08 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD41_022548BC
+ add r0, r4, #0
+ bl MOD41_022550BC
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD41_02254AE0
+ b _02254E00
+_02254DC0:
+ ldr r0, _02254E08 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD41_022548BC
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ add r0, r4, #0
+ bl MOD41_02255170
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD41_02254AE0
+_02254E00:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_02254E04: .word 0x0000066E
+_02254E08: .word 0x00000663
+ thumb_func_end MOD41_02254D20
+
+ thumb_func_start MOD41_02254E0C
+MOD41_02254E0C: ; 0x02254E0C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #3]
+ cmp r1, #0
+ beq _02254E20
+ mov r1, #6
+ bl MOD41_02254AE0
+ mov r0, #0
+ pop {r4, pc}
+_02254E20:
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _02254EAC
+ mov r0, #0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02254E3A
+ cmp r0, #1
+ beq _02254E64
+ cmp r0, #2
+ beq _02254E6C
+ b _02254EAC
+_02254E3A:
+ ldr r0, _02254EB0 ; =0x00000663
+ bl MOD20_02252B28
+ mov r1, #1
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ add r0, r4, #0
+ bl MOD41_022550D0
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD41_02254AE0
+ b _02254EAC
+_02254E64:
+ ldr r0, _02254EB4 ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254EAC
+_02254E6C:
+ ldr r0, _02254EB0 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD41_022548BC
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ add r0, r4, #0
+ bl MOD41_02255170
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD41_02254AE0
+_02254EAC:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_02254EB0: .word 0x00000663
+_02254EB4: .word 0x0000066E
+ thumb_func_end MOD41_02254E0C
+
+ thumb_func_start MOD41_02254EB8
+MOD41_02254EB8: ; 0x02254EB8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #3]
+ cmp r1, #0
+ beq _02254ECC
+ mov r1, #6
+ bl MOD41_02254AE0
+ mov r0, #0
+ pop {r4, pc}
+_02254ECC:
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _02254F52
+ mov r0, #0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02254EE6
+ cmp r0, #1
+ beq _02254EEE
+ cmp r0, #2
+ beq _02254F20
+ b _02254F52
+_02254EE6:
+ ldr r0, _02254F58 ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254F52
+_02254EEE:
+ ldr r0, _02254F5C ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD41_022548BC
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ ldr r0, [r4, #8]
+ mov r1, #7
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #5
+ bl MOD41_02254AE0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254F52
+_02254F20:
+ ldr r0, _02254F5C ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD41_022548BC
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ ldr r0, [r4, #8]
+ mov r1, #7
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD41_02254AE0
+_02254F52:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254F58: .word 0x0000066E
+_02254F5C: .word 0x00000663
+ thumb_func_end MOD41_02254EB8
+
+ thumb_func_start MOD41_02254F60
+MOD41_02254F60: ; 0x02254F60
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #3]
+ cmp r1, #0
+ beq _02254F74
+ mov r1, #6
+ bl MOD41_02254AE0
+ mov r0, #0
+ pop {r4, pc}
+_02254F74:
+ ldr r0, [r4, #0x18]
+ cmp r0, #1
+ bne _0225500A
+ mov r0, #0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _02254F8E
+ cmp r0, #1
+ beq _02254FBA
+ cmp r0, #2
+ beq _02254FC2
+ b _0225500A
+_02254F8E:
+ ldr r0, _02255010 ; =0x00000663
+ bl MOD20_02252B28
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ mov r1, #1
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD41_022548BC
+ ldr r0, [r4, #8]
+ mov r1, #6
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD41_02254AE0
+ b _0225500A
+_02254FBA:
+ ldr r0, _02255014 ; =0x0000066E
+ bl MOD20_02252B28
+ b _0225500A
+_02254FC2:
+ ldr r0, _02255010 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD41_022548BC
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD41_022548BC
+ add r0, r4, #0
+ bl MOD41_02255170
+ ldr r0, [r4, #8]
+ mov r1, #7
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #4
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #5
+ bl MOD41_022553A4
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD41_022553A4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD41_02254AE0
+_0225500A:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02255010: .word 0x00000663
+_02255014: .word 0x0000066E
+ thumb_func_end MOD41_02254F60
+
+ thumb_func_start MOD41_02255018
+MOD41_02255018: ; 0x02255018
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02255028
+ cmp r0, #1
+ beq _02255038
+ b _02255046
+_02255028:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD41_022553A4
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02255046
+_02255038:
+ ldr r0, [r4, #8]
+ bl MOD41_022553D4
+ cmp r0, #0
+ beq _02255046
+ mov r0, #1
+ pop {r4, pc}
+_02255046:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02255018
+
+ thumb_func_start MOD41_0225504C
+MOD41_0225504C: ; 0x0225504C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r5, #0
+ add r4, #0x48
+ bl FUN_02020BF4
+ str r0, [r5, #0x68]
+ str r1, [r5, #0x6c]
+ mov r2, #0
+ str r2, [r5, #0x70]
+ add r0, r5, #0
+ str r2, [r5, #0x74]
+ mov r1, #1
+ add r0, #0x88
+ str r1, [r0]
+ str r2, [r5, #0x78]
+ str r2, [r5, #0x7c]
+ mov r2, #2
+ ldrsb r3, [r4, r2]
+ mov r0, #3
+ ldrsb r0, [r4, r0]
+ add r6, r3, #0
+ ldrsb r3, [r4, r1]
+ mov r1, #0x48
+ mov r2, #0xa
+ mul r6, r2
+ ldrsb r1, [r5, r1]
+ add r0, r0, r6
+ mul r2, r1
+ add r2, r3, r2
+ mov r1, #0x3c
+ mul r1, r2
+ add r2, r0, r1
+ add r0, r5, #0
+ add r0, #0x80
+ str r2, [r0]
+ add r0, r5, #0
+ asr r1, r2, #0x1f
+ add r0, #0x84
+ str r1, [r0]
+ add r1, r5, #0
+ add r2, r5, #0
+ add r1, #0x80
+ add r2, #0x84
+ ldr r1, [r1]
+ ldr r2, [r2]
+ add r0, r5, #0
+ bl MOD41_02255190
+ add r0, r5, #0
+ add r0, #0x80
+ add r5, #0x84
+ ldr r0, [r0]
+ ldr r1, [r5]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD41_0225504C
+
+ thumb_func_start MOD41_022550BC
+MOD41_022550BC: ; 0x022550BC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #0
+ add r0, #0x88
+ str r1, [r0]
+ bl FUN_02020BF4
+ str r0, [r4, #0x70]
+ str r1, [r4, #0x74]
+ pop {r4, pc}
+ thumb_func_end MOD41_022550BC
+
+ thumb_func_start MOD41_022550D0
+MOD41_022550D0: ; 0x022550D0
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ bl FUN_02020BF4
+ add r5, r4, #0
+ add r5, #0x68
+ ldr r7, [r4, #0x70]
+ ldr r2, [r4, #0x68]
+ ldr r6, [r4, #0x74]
+ sub r0, r0, r7
+ sbc r1, r6
+ ldr r3, [r5, #4]
+ add r0, r2, r0
+ adc r3, r1
+ str r0, [r4, #0x68]
+ str r3, [r5, #4]
+ mov r0, #1
+ add r4, #0x88
+ str r0, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD41_022550D0
+
+ thumb_func_start MOD41_022550F8
+MOD41_022550F8: ; 0x022550F8
+ add r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02255104
+ mov r0, #1
+ bx lr
+_02255104:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD41_022550F8
+
+ thumb_func_start MOD41_02255108
+MOD41_02255108: ; 0x02255108
+ push {r4, r5, r6, lr}
+ add r4, r0, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0225516A
+ bl FUN_02020BF4
+ ldr r3, [r4, #0x68]
+ ldr r2, [r4, #0x6c]
+ sub r0, r0, r3
+ sbc r1, r2
+ bl FUN_02020C14
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0x80
+ add r6, r1, #0
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r2, [r0]
+ sub r0, r5, r1
+ mov ip, r6
+ mov r0, ip
+ sbc r0, r2
+ blo _02255148
+ add r0, r4, #0
+ bl MOD41_02255170
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02255148:
+ ldr r3, [r4, #0x78]
+ ldr r0, [r4, #0x7c]
+ eor r3, r5
+ eor r0, r6
+ orr r0, r3
+ beq _02255166
+ add r0, r4, #0
+ sub r1, r1, r5
+ sbc r2, r6
+ bl MOD41_02255190
+ str r5, [r4, #0x78]
+ str r6, [r4, #0x7c]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02255166:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0225516A:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02255108
+
+ thumb_func_start MOD41_02255170
+MOD41_02255170: ; 0x02255170
+ add r1, r0, #0
+ mov r2, #0
+ add r1, #0x88
+ str r2, [r1]
+ add r1, r0, #0
+ add r1, #0x48
+ strb r2, [r1]
+ add r1, r0, #0
+ add r1, #0x49
+ strb r2, [r1]
+ add r1, r0, #0
+ add r1, #0x4a
+ strb r2, [r1]
+ add r0, #0x4b
+ strb r2, [r0]
+ bx lr
+ thumb_func_end MOD41_02255170
+
+ thumb_func_start MOD41_02255190
+MOD41_02255190: ; 0x02255190
+ push {r3, r4, r5, r6}
+ add r3, r0, #0
+ ldr r0, _02255240 ; =0x04000280
+ mov r4, #1
+ strh r4, [r0]
+ add r4, r0, #0
+ add r4, #0x10
+ str r1, [r4]
+ str r2, [r4, #4]
+ add r1, r0, #0
+ mov r4, #0x3c
+ add r1, #0x18
+ mov r2, #0
+ str r4, [r1]
+ str r2, [r1, #4]
+ lsr r1, r0, #0xb
+_022551B0:
+ ldrh r2, [r0]
+ tst r2, r1
+ bne _022551B0
+ ldr r0, _02255244 ; =0x040002A0
+ ldr r6, _02255240 ; =0x04000280
+ ldr r0, [r0]
+ lsr r1, r6, #0xb
+_022551BE:
+ ldrh r2, [r6]
+ tst r2, r1
+ bne _022551BE
+ ldr r5, _02255248 ; =0x040002A8
+ mov r4, #0
+ ldr r2, [r5]
+ add r1, r5, #0
+ strh r4, [r6]
+ sub r1, #0x18
+ str r0, [r1]
+ mov r0, #0xa
+ sub r5, #0x10
+ str r0, [r5]
+ str r4, [r5, #4]
+ ldr r4, _02255240 ; =0x04000280
+ lsr r0, r4, #0xb
+_022551DE:
+ ldrh r1, [r4]
+ tst r1, r0
+ bne _022551DE
+ ldr r0, _02255244 ; =0x040002A0
+ ldr r1, [r0]
+ add r0, r3, #0
+ add r0, #0x48
+ strb r1, [r0]
+ ldr r1, _02255240 ; =0x04000280
+ lsr r0, r1, #0xb
+_022551F2:
+ ldrh r4, [r1]
+ tst r4, r0
+ bne _022551F2
+ ldr r0, _02255248 ; =0x040002A8
+ add r4, r3, #0
+ ldr r5, [r0]
+ add r4, #0x49
+ strb r5, [r4]
+ mov r4, #0
+ strh r4, [r1]
+ add r1, r0, #0
+ sub r1, #0x18
+ str r2, [r1]
+ mov r1, #0xa
+ sub r0, #0x10
+ str r1, [r0]
+ ldr r2, _02255240 ; =0x04000280
+ str r4, [r0, #4]
+ lsr r0, r2, #0xb
+_02255218:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02255218
+ ldr r0, _02255244 ; =0x040002A0
+ ldr r2, _02255240 ; =0x04000280
+ ldr r1, [r0]
+ add r0, r3, #0
+ add r0, #0x4a
+ strb r1, [r0]
+ lsr r0, r2, #0xb
+_0225522C:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0225522C
+ ldr r0, _02255248 ; =0x040002A8
+ add r3, #0x4b
+ ldr r0, [r0]
+ strb r0, [r3]
+ pop {r3, r4, r5, r6}
+ bx lr
+ nop
+_02255240: .word 0x04000280
+_02255244: .word 0x040002A0
+_02255248: .word 0x040002A8
+ thumb_func_end MOD41_02255190
+
+ thumb_func_start MOD41_0225524C
+MOD41_0225524C: ; 0x0225524C
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0xac
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02255288
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x30]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD41_022552A0
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02255288
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02255288:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD41_0225524C
+
+ thumb_func_start MOD41_0225528C
+MOD41_0225528C: ; 0x0225528C
+ push {r4, lr}
+ add r4, r0, #0
+ beq _0225529C
+ bl MOD41_02255374
+ add r0, r4, #0
+ bl FUN_02016A18
+_0225529C:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD41_0225528C
+
+ thumb_func_start MOD41_022552A0
+MOD41_022552A0: ; 0x022552A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r7, r0, #0
+ str r1, [sp, #0xc]
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #2
+ bl FUN_02006A34
+ mov r0, #0
+ str r0, [sp]
+ mov r2, #1
+ mov r3, #0xa
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x5e
+ lsl r3, r3, #8
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x78
+ mov r1, #0xc
+ mov r2, #0x5c
+ mov r3, #0x5d
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x8c
+ mov r1, #0xc
+ mov r2, #3
+ mov r3, #4
+ bl MOD20_02253FBC
+ add r0, r7, #0
+ str r0, [sp, #0x14]
+ add r0, #0x78
+ str r0, [sp, #0x14]
+ add r0, r7, #0
+ str r0, [sp, #0x10]
+ add r0, #0x8c
+ ldr r6, _02255370 ; =0x02255864
+ mov r4, #0
+ add r5, r7, #0
+ str r0, [sp, #0x10]
+_0225530E:
+ cmp r4, #0xd
+ blt _02255324
+ cmp r4, #0x10
+ bgt _02255324
+ ldr r0, [r7, #0x30]
+ ldr r2, [sp, #0x10]
+ add r1, r6, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x34]
+ b _02255336
+_02255324:
+ ldr r0, [r7, #0x30]
+ ldr r2, [sp, #0x14]
+ add r1, r6, #0
+ bl MOD20_02253E74
+ mov r1, #0x50
+ str r0, [r5, #0x34]
+ bl MOD20_02253FA4
+_02255336:
+ add r4, r4, #1
+ add r6, #0x10
+ add r5, r5, #4
+ cmp r4, #0x11
+ blt _0225530E
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD41_022556D4
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD41_02255714
+ ldr r0, [sp, #0xc]
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ bne _0225535C
+ mov r1, #1
+ b _0225535E
+_0225535C:
+ mov r1, #0
+_0225535E:
+ add r0, r7, #0
+ bl MOD41_02255744
+ mov r0, #0
+ add r7, #0xa8
+ str r0, [r7]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255370: .word 0x02255864
+ thumb_func_end MOD41_022552A0
+
+ thumb_func_start MOD41_02255374
+MOD41_02255374: ; 0x02255374
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_0225537C:
+ ldr r1, [r5, #0x34]
+ cmp r1, #0
+ beq _02255388
+ ldr r0, [r6, #0x30]
+ bl MOD20_02253F14
+_02255388:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x11
+ blt _0225537C
+ add r0, r6, #0
+ add r0, #0x78
+ bl MOD20_02254014
+ add r6, #0x8c
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02255374
+
+ thumb_func_start MOD41_022553A4
+MOD41_022553A4: ; 0x022553A4
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _022553C4 ; =0x022557F8
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_022553C4: .word 0x022557F8
+ thumb_func_end MOD41_022553A4
+
+ thumb_func_start MOD41_022553C8
+MOD41_022553C8: ; 0x022553C8
+ ldr r3, _022553D0 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_022553D0: .word MOD20_02253794
+ thumb_func_end MOD41_022553C8
+
+ thumb_func_start MOD41_022553D4
+MOD41_022553D4: ; 0x022553D4
+ ldr r3, _022553DC ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_022553DC: .word MOD20_022537B8
+ thumb_func_end MOD41_022553D4
+
+ thumb_func_start MOD41_022553E0
+MOD41_022553E0: ; 0x022553E0
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD41_022553E0
+
+ thumb_func_start MOD41_022553F4
+MOD41_022553F4: ; 0x022553F4
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _022554CC ; =0x022557DC
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x5b
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x5a
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _022554D0 ; =0x04001000
+ ldr r0, _022554D4 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ ldr r1, [r4]
+ ldr r0, [r1, #0xc]
+ cmp r0, #1
+ beq _02255488
+ cmp r0, #2
+ beq _0225547E
+ cmp r0, #3
+ beq _0225549A
+ b _022554C0
+_0225547E:
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD41_022553A4
+ b _022554C0
+_02255488:
+ ldr r0, [r4, #0x34]
+ mov r1, #3
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F28
+ b _022554C0
+_0225549A:
+ ldr r0, [r1, #0x10]
+ cmp r0, #0
+ ldr r0, [r4, #0x34]
+ beq _022554B2
+ mov r1, #2
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F28
+ b _022554C0
+_022554B2:
+ mov r1, #3
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD20_02253F28
+_022554C0:
+ add r0, r5, #0
+ bl MOD41_022553E0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_022554CC: .word 0x022557DC
+_022554D0: .word 0x04001000
+_022554D4: .word 0xFFFFE0FF
+ thumb_func_end MOD41_022553F4
+
+ thumb_func_start MOD41_022554D8
+MOD41_022554D8: ; 0x022554D8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _022554FA
+ cmp r0, #1
+ beq _02255508
+ pop {r3, r4, r5, pc}
+_022554FA:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xa0
+ str r1, [r0]
+ add r0, r5, #0
+ bl MOD20_022538B0
+_02255508:
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD41_022553C8
+ cmp r0, #0
+ beq _02255522
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD41_022553E0
+_02255522:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD41_022554D8
+
+ thumb_func_start MOD41_02255524
+MOD41_02255524: ; 0x02255524
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD41_02255744
+ ldr r0, [r4, #0x34]
+ mov r1, #2
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD41_022553E0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02255524
+
+ thumb_func_start MOD41_02255558
+MOD41_02255558: ; 0x02255558
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD41_02255744
+ ldr r0, [r4, #0x34]
+ mov r1, #3
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F28
+ add r0, r5, #0
+ bl MOD41_022553E0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02255558
+
+ thumb_func_start MOD41_0225558C
+MOD41_0225558C: ; 0x0225558C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD41_022556D4
+ add r0, r5, #0
+ bl MOD41_022553E0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_0225558C
+
+ thumb_func_start MOD41_022555B0
+MOD41_022555B0: ; 0x022555B0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD41_02255714
+ add r0, r5, #0
+ bl MOD41_022553E0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_022555B0
+
+ thumb_func_start MOD41_022555D4
+MOD41_022555D4: ; 0x022555D4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _022555F6
+ cmp r0, #1
+ beq _0225561A
+ pop {r3, r4, r5, pc}
+_022555F6:
+ ldr r0, [r4, #0x34]
+ mov r1, #2
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD20_02253F28
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xa4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa0
+ str r1, [r0]
+ add r0, r5, #0
+ bl MOD20_022538B0
+_0225561A:
+ add r0, r4, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0225562C
+ add r0, r5, #0
+ bl MOD41_022553E0
+ pop {r3, r4, r5, pc}
+_0225562C:
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ cmp r0, #8
+ blo _0225568A
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r1, [r0]
+ mov r0, #1
+ eor r1, r0
+ add r0, r4, #0
+ add r0, #0xa8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ ldr r0, [r4, #0x34]
+ beq _02255670
+ mov r1, #2
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F28
+ b _0225567E
+_02255670:
+ mov r1, #3
+ bl MOD20_02253F28
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD20_02253F28
+_0225567E:
+ ldr r0, _0225568C ; =0x00000677
+ bl MOD20_02252B28
+ mov r0, #0
+ add r4, #0xa4
+ str r0, [r4]
+_0225568A:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0225568C: .word 0x00000677
+ thumb_func_end MOD41_022555D4
+
+ thumb_func_start MOD41_02255690
+MOD41_02255690: ; 0x02255690
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _022556B2
+ cmp r0, #1
+ beq _022556C0
+ pop {r3, r4, r5, pc}
+_022556B2:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xa0
+ str r1, [r0]
+ add r0, r5, #0
+ bl MOD20_022538B0
+_022556C0:
+ add r0, r4, #0
+ mov r1, #6
+ bl MOD41_022553C8
+ cmp r0, #0
+ beq _022556D2
+ add r0, r5, #0
+ bl MOD41_022553E0
+_022556D2:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD41_02255690
+
+ thumb_func_start MOD41_022556D4
+MOD41_022556D4: ; 0x022556D4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4, #4]
+ cmp r0, #0
+ beq _022556E4
+ mov r1, #6
+ b _022556E6
+_022556E4:
+ mov r1, #5
+_022556E6:
+ ldr r0, [r5, #0x3c]
+ bl MOD20_02253F28
+ ldrb r0, [r4, #5]
+ cmp r0, #0
+ beq _022556F6
+ mov r1, #8
+ b _022556F8
+_022556F6:
+ mov r1, #7
+_022556F8:
+ ldr r0, [r5, #0x40]
+ bl MOD20_02253F28
+ ldrb r0, [r4, #6]
+ cmp r0, #0
+ beq _02255708
+ mov r1, #0xa
+ b _0225570A
+_02255708:
+ mov r1, #9
+_0225570A:
+ ldr r0, [r5, #0x44]
+ bl MOD20_02253F28
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_022556D4
+
+ thumb_func_start MOD41_02255714
+MOD41_02255714: ; 0x02255714
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0
+ add r5, r0, #0
+ ldrsb r1, [r4, r1]
+ ldr r0, [r5, #0x68]
+ bl MOD20_02253F28
+ mov r1, #1
+ ldrsb r1, [r4, r1]
+ ldr r0, [r5, #0x6c]
+ bl MOD20_02253F28
+ mov r1, #2
+ ldrsb r1, [r4, r1]
+ ldr r0, [r5, #0x70]
+ bl MOD20_02253F28
+ mov r1, #3
+ ldrsb r1, [r4, r1]
+ ldr r0, [r5, #0x74]
+ bl MOD20_02253F28
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD41_02255714
+
+ thumb_func_start MOD41_02255744
+MOD41_02255744: ; 0x02255744
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x48]
+ add r4, r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x4c]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x50]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x54]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x58]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x5c]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x60]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r5, #0x64]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD41_02255744
+
+ thumb_func_start MOD41_0225578C
+MOD41_0225578C: ; 0x0225578C
+ add r0, #0xa8
+ ldr r0, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD41_0225578C
+
+ .section .rodata
+ ; 0x02255794
+ .incbin "baserom.nds", 0x293d54, 0x1E0
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_41.SINIT_START
+ .global SDK_OVERLAY.MODULE_41.SINIT_END
+SDK_OVERLAY.MODULE_41.SINIT_START:
+ .word MOD41_02254840
+ .word 0
+SDK_OVERLAY.MODULE_41.SINIT_END:
diff --git a/arm9/modules/42/asm/module_42.s b/arm9/modules/42/asm/module_42.s
new file mode 100644
index 00000000..6ec9b916
--- /dev/null
+++ b/arm9/modules/42/asm/module_42.s
@@ -0,0 +1,1161 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD42_02254840
+MOD42_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD42_02254854
+ ldr r1, _02254850 ; =MOD42_02254A38
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD42_02254854
+_02254850: .word MOD42_02254A38
+ thumb_func_end MOD42_02254840
+
+ thumb_func_start MOD42_02254854
+MOD42_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x78
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD42_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD42_02254A04
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD42_02254A04
+ thumb_func_end MOD42_02254854
+
+ thumb_func_start MOD42_0225489C
+MOD42_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r0, r1, #0
+ str r1, [sp]
+ str r2, [sp, #4]
+ bl MOD20_02252C3C
+ str r0, [r5, #0x60]
+ add r0, r5, #0
+ str r0, [sp, #8]
+ add r0, #0x11
+ add r7, r5, #0
+ mov r6, #0
+ add r4, r5, #0
+ str r0, [sp, #8]
+ add r7, #0x10
+_022548BE:
+ mov r0, #1
+ strb r0, [r4, #0x13]
+ strb r6, [r4, #0x12]
+ ldr r0, [r5, #0x60]
+ ldr r3, [sp, #8]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl FUN_0204C0A4
+ ldrb r0, [r4, #0x10]
+ add r7, r7, #4
+ add r0, #0x10
+ strb r0, [r4, #0x10]
+ ldrb r0, [r4, #0x11]
+ add r0, #0x10
+ strb r0, [r4, #0x11]
+ mov r0, #0
+ strb r0, [r4, #0x13]
+ add r0, r5, r6
+ add r0, #0x70
+ strb r6, [r0]
+ ldr r0, [sp, #8]
+ add r6, r6, #1
+ add r0, r0, #4
+ add r4, r4, #4
+ str r0, [sp, #8]
+ cmp r6, #6
+ blt _022548BE
+ mov r0, #0
+ str r0, [r5, #0x28]
+ str r0, [r5, #0x2c]
+ str r0, [r5, #0xc]
+ ldr r0, [sp]
+ bl MOD20_02252C40
+ bl FUN_020462AC
+ add r7, r0, #0
+ mov r4, #0
+ add r6, r5, #0
+_0225490E:
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_0205F524
+ str r0, [r6, #0x30]
+ add r4, r4, #1
+ add r6, r6, #4
+ cmp r4, #4
+ blt _0225490E
+ ldr r0, [sp]
+ bl MOD20_02252C40
+ bl FUN_0202A9B0
+ str r0, [sp, #0xc]
+ mov r4, #0
+ add r7, r5, #0
+ add r6, r5, #0
+_02254932:
+ lsl r1, r4, #0x18
+ ldr r0, [sp, #0xc]
+ lsr r1, r1, #0x18
+ bl FUN_0202AAA0
+ mov r1, #8
+ str r0, [r7, #0x64]
+ bl FUN_0202AAB8
+ str r0, [r6, #0x40]
+ add r1, r5, #0
+ add r1, #0x76
+ mov r0, #0
+ add r4, r4, #1
+ strb r0, [r1]
+ add r7, r7, #4
+ add r6, #8
+ cmp r4, #3
+ blt _02254932
+ ldr r0, [sp]
+ bl MOD20_02252C38
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DCC
+ add r6, r0, #0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034908
+ cmp r0, #0
+ beq _02254984
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #8]
+ str r0, [r5, #4]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #0xc]
+ b _0225498A
+_02254984:
+ ldr r0, [r6, #8]
+ str r0, [r5, #4]
+ ldr r0, [r6, #0xc]
+_0225498A:
+ str r0, [r5, #8]
+ ldr r1, [r5, #4]
+ ldr r2, [sp, #4]
+ asr r0, r1, #4
+ lsr r0, r0, #0x1b
+ add r0, r1, r0
+ asr r0, r0, #5
+ str r0, [r5, #4]
+ ldr r1, [r5, #8]
+ asr r0, r1, #4
+ lsr r0, r0, #0x1b
+ add r0, r1, r0
+ asr r0, r0, #5
+ str r0, [r5, #8]
+ add r0, r5, #0
+ add r0, #0x58
+ add r1, r5, #4
+ bl MOD42_02254CB4
+ cmp r0, #0
+ beq _022549C6
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ ldr r0, [sp]
+ add sp, #0x10
+ str r0, [r5, #0x5c]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_022549C6:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD42_0225489C
+
+ thumb_func_start MOD42_022549CC
+MOD42_022549CC: ; 0x022549CC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_022549D4:
+ ldrb r2, [r5, #0x10]
+ ldrb r3, [r5, #0x11]
+ ldr r0, [r6, #0x60]
+ sub r2, #0x10
+ sub r3, #0x10
+ lsl r2, r2, #0x18
+ lsl r3, r3, #0x18
+ add r1, r4, #0
+ lsr r2, r2, #0x18
+ lsr r3, r3, #0x18
+ bl FUN_0204C080
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _022549D4
+ ldr r0, [r6, #0x58]
+ bl MOD42_02254CF0
+ add r0, r6, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD42_022549CC
+
+ thumb_func_start MOD42_02254A04
+MOD42_02254A04: ; 0x02254A04
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #4
+ bhs _02254A30
+ lsl r2, r1, #2
+ ldr r1, _02254A34 ; =0x022550CC
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254A30
+ add r0, r4, #0
+ bl MOD42_022549CC
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x5c]
+ bl MOD20_022529A0
+_02254A30:
+ pop {r3, r4, r5, pc}
+ nop
+_02254A34: .word 0x022550CC
+ thumb_func_end MOD42_02254A04
+
+ thumb_func_start MOD42_02254A38
+MOD42_02254A38: ; 0x02254A38
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD42_02254A38
+
+ thumb_func_start MOD42_02254A40
+MOD42_02254A40: ; 0x02254A40
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254A48
+ b _02254A4A
+_02254A48:
+ mov r1, #3
+_02254A4A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD42_02254A40
+
+ thumb_func_start MOD42_02254A54
+MOD42_02254A54: ; 0x02254A54
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A64
+ cmp r0, #1
+ beq _02254A74
+ b _02254A8E
+_02254A64:
+ ldr r0, [r4, #0x58]
+ mov r1, #0
+ bl MOD42_02254EEC
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A8E
+_02254A74:
+ ldr r0, [r4, #0x58]
+ mov r1, #0
+ bl MOD42_02254F10
+ cmp r0, #0
+ beq _02254A8E
+ ldr r0, [r4, #0x5c]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD42_02254A40
+_02254A8E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254A54
+
+ thumb_func_start MOD42_02254A94
+MOD42_02254A94: ; 0x02254A94
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254AAC
+ mov r1, #3
+ bl MOD42_02254A40
+ add sp, #0xc
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_02254AAC:
+ bl MOD42_02254C04
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #0x2c]
+ add r0, sp, #8
+ add r1, sp, #4
+ bl MOD20_02252BB8
+ cmp r0, #0
+ beq _02254B20
+ ldr r5, [sp, #8]
+ ldr r6, [sp, #4]
+ mov r3, #0
+_02254AC8:
+ add r0, r4, r3
+ add r0, #0x70
+ ldrb r7, [r0]
+ lsl r0, r7, #2
+ add r2, r4, r0
+ str r0, [sp]
+ ldrb r0, [r2, #0x10]
+ sub r1, r0, r5
+ mov r0, #7
+ mvn r0, r0
+ cmp r1, r0
+ blt _02254B1A
+ cmp r1, #8
+ bgt _02254B1A
+ ldrb r0, [r2, #0x11]
+ sub r1, r0, r6
+ mov r0, #7
+ mvn r0, r0
+ cmp r1, r0
+ blt _02254B1A
+ cmp r1, #8
+ bgt _02254B1A
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD42_02254BB4
+ ldr r0, [sp]
+ ldr r2, [sp, #8]
+ add r1, r4, r0
+ strb r2, [r1, #0x10]
+ ldr r0, [sp, #4]
+ strb r0, [r1, #0x11]
+ mov r0, #1
+ strb r0, [r1, #0x13]
+ str r7, [r4, #0x28]
+ str r0, [r4, #0x2c]
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD42_02254A40
+ b _02254B20
+_02254B1A:
+ add r3, r3, #1
+ cmp r3, #6
+ blt _02254AC8
+_02254B20:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254A94
+
+ thumb_func_start MOD42_02254B28
+MOD42_02254B28: ; 0x02254B28
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254B40
+ mov r1, #3
+ bl MOD42_02254A40
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_02254B40:
+ bl MOD42_02254C04
+ str r0, [r4, #0xc]
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252B68
+ cmp r0, #0
+ beq _02254B68
+ ldr r0, [r4, #0x28]
+ ldr r1, [sp, #4]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ strb r1, [r0, #0x10]
+ ldr r0, [r4, #0x28]
+ ldr r1, [sp]
+ lsl r0, r0, #2
+ add r0, r4, r0
+ strb r1, [r0, #0x11]
+ b _02254B7A
+_02254B68:
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ lsl r0, r0, #2
+ add r0, r4, r0
+ strb r1, [r0, #0x13]
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD42_02254A40
+_02254B7A:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD42_02254B28
+
+ thumb_func_start MOD42_02254B80
+MOD42_02254B80: ; 0x02254B80
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254B90
+ cmp r0, #1
+ beq _02254BA0
+ b _02254BAE
+_02254B90:
+ ldr r0, [r4, #0x58]
+ mov r1, #1
+ bl MOD42_02254EEC
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254BAE
+_02254BA0:
+ ldr r0, [r4, #0x58]
+ bl MOD42_02254F1C
+ cmp r0, #0
+ beq _02254BAE
+ mov r0, #1
+ pop {r4, pc}
+_02254BAE:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254B80
+
+ thumb_func_start MOD42_02254BB4
+MOD42_02254BB4: ; 0x02254BB4
+ push {r3, r4}
+ add r2, r0, #0
+ add r2, #0x70
+ ldrb r2, [r2]
+ cmp r2, r1
+ beq _02254C00
+ mov r4, #0
+_02254BC2:
+ add r2, r0, r4
+ add r2, #0x70
+ ldrb r2, [r2]
+ cmp r1, r2
+ beq _02254BD2
+ add r4, r4, #1
+ cmp r4, #6
+ blt _02254BC2
+_02254BD2:
+ cmp r4, #0
+ beq _02254BE6
+_02254BD6:
+ add r2, r0, r4
+ add r2, #0x6f
+ ldrb r3, [r2]
+ add r2, r0, r4
+ add r2, #0x70
+ strb r3, [r2]
+ sub r4, r4, #1
+ bne _02254BD6
+_02254BE6:
+ add r2, r0, #0
+ add r2, #0x70
+ strb r1, [r2]
+ mov r2, #0
+_02254BEE:
+ add r1, r0, r2
+ add r1, #0x70
+ ldrb r1, [r1]
+ lsl r1, r1, #2
+ add r1, r0, r1
+ strb r2, [r1, #0x12]
+ add r2, r2, #1
+ cmp r2, #6
+ blt _02254BEE
+_02254C00:
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD42_02254BB4
+
+ thumb_func_start MOD42_02254C04
+MOD42_02254C04: ; 0x02254C04
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x5c]
+ mov r7, #0
+ bl MOD20_02252C30
+ cmp r0, #0
+ beq _02254CAE
+ ldr r0, [r5, #0x5c]
+ bl MOD20_02252C38
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DCC
+ add r6, r0, #0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034908
+ cmp r0, #0
+ beq _02254C3C
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r1, #8]
+ ldr r1, [r1, #0xc]
+ b _02254C40
+_02254C3C:
+ ldr r0, [r6, #8]
+ ldr r1, [r6, #0xc]
+_02254C40:
+ asr r2, r0, #4
+ lsr r2, r2, #0x1b
+ add r2, r0, r2
+ asr r0, r2, #5
+ asr r2, r1, #4
+ lsr r2, r2, #0x1b
+ add r2, r1, r2
+ asr r1, r2, #5
+ ldr r2, [r5, #4]
+ cmp r0, r2
+ bne _02254C5C
+ ldr r2, [r5, #8]
+ cmp r1, r2
+ beq _02254C62
+_02254C5C:
+ str r0, [r5, #4]
+ str r1, [r5, #8]
+ mov r7, #1
+_02254C62:
+ add r0, r5, #0
+ add r0, #0x76
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0x76
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0x76
+ ldrb r0, [r0]
+ cmp r0, #5
+ blo _02254CAE
+ mov r6, #0
+ add r4, r5, #0
+_02254C7E:
+ ldr r0, [r5, #0x40]
+ cmp r0, #0
+ bne _02254C94
+ ldr r0, [r4, #0x64]
+ mov r1, #8
+ bl FUN_0202AAB8
+ str r0, [r5, #0x40]
+ cmp r0, #0
+ beq _02254C94
+ mov r7, #1
+_02254C94:
+ cmp r0, #0
+ beq _02254CA4
+ ldr r0, [r4, #0x64]
+ mov r1, #1
+ bl FUN_0202AAB8
+ str r0, [r5, #0x44]
+ mov r7, #1
+_02254CA4:
+ add r6, r6, #1
+ add r5, #8
+ add r4, r4, #4
+ cmp r6, #3
+ blt _02254C7E
+_02254CAE:
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254C04
+
+ thumb_func_start MOD42_02254CB4
+MOD42_02254CB4: ; 0x02254CB4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x74
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254CEA
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD42_02254D04
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254CEA:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254CB4
+
+ thumb_func_start MOD42_02254CF0
+MOD42_02254CF0: ; 0x02254CF0
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254D00
+ bl MOD42_02254E7C
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254D00:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254CF0
+
+ thumb_func_start MOD42_02254D04
+MOD42_02254D04: ; 0x02254D04
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r5, r0, #0
+ add r7, r1, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x78
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x5c
+ mov r1, #0xc
+ mov r2, #0x76
+ mov r3, #0x77
+ bl MOD20_02253FBC
+ mov r2, #0
+ add r0, sp, #0x24
+ strb r2, [r0, #0x12]
+ mov r1, #2
+ strb r1, [r0, #0x13]
+ strb r2, [r0, #0x15]
+ ldr r0, [r7]
+ ldr r1, [r7, #4]
+ add r2, sp, #0x28
+ add r3, sp, #0x24
+ bl MOD20_02254420
+ ldr r0, [sp, #0x28]
+ add r2, r5, #0
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x24]
+ mov r1, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x30]
+ add r0, sp, #0x24
+ strb r1, [r0, #0x14]
+ mov r1, #0
+ strh r1, [r0, #0x10]
+ ldr r0, [r5, #0x20]
+ add r1, sp, #0x2c
+ add r2, #0x5c
+ bl MOD20_02253E74
+ str r0, [r5, #0x58]
+ mov r1, #1
+ add r0, sp, #0x24
+ strb r1, [r0, #0x15]
+ add r0, r5, #0
+ str r0, [sp, #0x14]
+ add r0, #0x5c
+ mov r6, #0
+ add r4, r7, #0
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x14]
+_02254D82:
+ ldrb r0, [r4, #0xc]
+ ldr r2, [sp, #0x14]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x2c]
+ ldrb r0, [r4, #0xd]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x30]
+ ldrb r0, [r4, #0xe]
+ add r1, r0, #2
+ add r0, sp, #0x24
+ strb r1, [r0, #0x14]
+ add r1, r6, #1
+ strh r1, [r0, #0x10]
+ ldr r0, [r5, #0x20]
+ add r1, sp, #0x2c
+ bl MOD20_02253E74
+ ldr r1, [sp, #0xc]
+ add r6, r6, #1
+ str r0, [r1, #0x24]
+ add r0, r1, #0
+ add r0, r0, #4
+ add r4, r4, #4
+ str r0, [sp, #0xc]
+ cmp r6, #6
+ blt _02254D82
+ add r0, r5, #0
+ str r0, [sp, #0x18]
+ add r0, #0x5c
+ mov r6, #0
+ add r4, r5, #0
+ str r7, [sp, #0x10]
+ str r0, [sp, #0x18]
+_02254DC4:
+ add r0, r6, #0
+ add r1, sp, #0x28
+ add r2, sp, #0x24
+ bl MOD20_02254460
+ ldr r0, [sp, #0x28]
+ mov r1, #9
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x24]
+ ldr r2, [sp, #0x18]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x30]
+ add r0, sp, #0x24
+ strb r1, [r0, #0x14]
+ add r1, r6, #0
+ add r1, #0xe
+ strh r1, [r0, #0x10]
+ ldr r0, [r5, #0x20]
+ add r1, sp, #0x2c
+ bl MOD20_02253E74
+ str r0, [r4, #0x3c]
+ ldr r0, [sp, #0x10]
+ ldr r0, [r0, #0x2c]
+ cmp r0, #0
+ bne _02254E02
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl MOD20_02253F78
+_02254E02:
+ ldr r0, [sp, #0x10]
+ add r6, r6, #1
+ add r0, r0, #4
+ add r4, r4, #4
+ str r0, [sp, #0x10]
+ cmp r6, #4
+ blt _02254DC4
+ add r0, r5, #0
+ str r0, [sp, #0x20]
+ add r0, #0x5c
+ mov r6, #0
+ add r4, r5, #0
+ str r0, [sp, #0x20]
+_02254E1C:
+ ldr r0, [r7, #0x40]
+ add r1, sp, #0x28
+ add r2, sp, #0x24
+ bl MOD20_02254488
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x28]
+ mov r1, #8
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x24]
+ ldr r2, [sp, #0x20]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x30]
+ add r0, sp, #0x24
+ strb r1, [r0, #0x14]
+ mov r1, #0x12
+ strh r1, [r0, #0x10]
+ ldr r0, [r5, #0x20]
+ add r1, sp, #0x2c
+ bl MOD20_02253E74
+ str r0, [r4, #0x4c]
+ ldr r0, [r7, #0x3c]
+ cmp r0, #0
+ beq _02254E56
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0
+ bne _02254E5E
+_02254E56:
+ ldr r0, [r4, #0x4c]
+ mov r1, #1
+ bl MOD20_02253F78
+_02254E5E:
+ add r6, r6, #1
+ add r7, #8
+ add r4, r4, #4
+ cmp r6, #3
+ blt _02254E1C
+ ldr r0, _02254E78 ; =MOD42_02254FE8
+ add r1, r5, #0
+ mov r2, #3
+ bl FUN_0200CA44
+ str r0, [r5, #0x70]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254E78: .word MOD42_02254FE8
+ thumb_func_end MOD42_02254D04
+
+ thumb_func_start MOD42_02254E7C
+MOD42_02254E7C: ; 0x02254E7C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x70]
+ bl FUN_0200CAB4
+ mov r6, #0
+ add r4, r5, #0
+ add r7, r6, #0
+_02254E8C:
+ ldr r1, [r4, #0x24]
+ cmp r1, #0
+ beq _02254E9A
+ ldr r0, [r5, #0x20]
+ bl MOD20_02253F14
+ str r7, [r4, #0x24]
+_02254E9A:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #6
+ blt _02254E8C
+ mov r6, #0
+ add r4, r5, #0
+ add r7, r6, #0
+_02254EA8:
+ ldr r1, [r4, #0x3c]
+ cmp r1, #0
+ beq _02254EB6
+ ldr r0, [r5, #0x20]
+ bl MOD20_02253F14
+ str r7, [r4, #0x3c]
+_02254EB6:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _02254EA8
+ mov r6, #0
+ add r4, r5, #0
+ add r7, r6, #0
+_02254EC4:
+ ldr r1, [r4, #0x4c]
+ cmp r1, #0
+ beq _02254ED2
+ ldr r0, [r5, #0x20]
+ bl MOD20_02253F14
+ str r7, [r4, #0x4c]
+_02254ED2:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #3
+ blt _02254EC4
+ ldr r0, [r5, #0x20]
+ ldr r1, [r5, #0x58]
+ bl MOD20_02253F14
+ add r5, #0x5c
+ add r0, r5, #0
+ bl MOD20_02254014
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD42_02254E7C
+
+ thumb_func_start MOD42_02254EEC
+MOD42_02254EEC: ; 0x02254EEC
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254F0C ; =0x022550F8
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254F0C: .word 0x022550F8
+ thumb_func_end MOD42_02254EEC
+
+ thumb_func_start MOD42_02254F10
+MOD42_02254F10: ; 0x02254F10
+ ldr r3, _02254F18 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254F18: .word MOD20_02253794
+ thumb_func_end MOD42_02254F10
+
+ thumb_func_start MOD42_02254F1C
+MOD42_02254F1C: ; 0x02254F1C
+ ldr r3, _02254F24 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254F24: .word MOD20_022537B8
+ thumb_func_end MOD42_02254F1C
+
+ thumb_func_start MOD42_02254F28
+MOD42_02254F28: ; 0x02254F28
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254F28
+
+ thumb_func_start MOD42_02254F3C
+MOD42_02254F3C: ; 0x02254F3C
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254FC0 ; =0x022550DC
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x75
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x73
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254FC4 ; =0x04001000
+ ldr r0, _02254FC8 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD42_02254F28
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254FC0: .word 0x022550DC
+_02254FC4: .word 0x04001000
+_02254FC8: .word 0xFFFFE0FF
+ thumb_func_end MOD42_02254F3C
+
+ thumb_func_start MOD42_02254FCC
+MOD42_02254FCC: ; 0x02254FCC
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD42_02254F28
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD42_02254FCC
+
+ thumb_func_start MOD42_02254FE8
+MOD42_02254FE8: ; 0x02254FE8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ ldr r4, [r5]
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _0225505E
+ ldr r7, [r4, #0x24]
+ lsl r6, r7, #2
+ add r2, r4, r6
+ ldrb r0, [r2, #0xf]
+ cmp r0, #0
+ beq _02255028
+ add r0, r5, #0
+ str r0, [sp, #4]
+ add r0, #0x24
+ str r0, [sp, #4]
+ ldr r1, [sp, #4]
+ add r0, r0, r6
+ str r0, [sp]
+ ldr r0, [r5, #0x20]
+ ldr r1, [r1, r6]
+ mov r2, #0
+ bl MOD20_02253F80
+ ldr r0, [sp, #4]
+ add r7, #8
+ ldr r0, [r0, r6]
+ add r1, r7, #0
+ bl MOD20_02253F28
+ b _0225504C
+_02255028:
+ add r0, r5, #0
+ str r0, [sp, #8]
+ add r0, #0x24
+ str r0, [sp, #8]
+ ldr r1, [sp, #8]
+ ldrb r2, [r2, #0xe]
+ add r0, r0, r6
+ str r0, [sp]
+ ldr r0, [r5, #0x20]
+ ldr r1, [r1, r6]
+ add r2, r2, #2
+ bl MOD20_02253F80
+ ldr r0, [sp, #8]
+ add r1, r7, #1
+ ldr r0, [r0, r6]
+ bl MOD20_02253F28
+_0225504C:
+ add r2, r4, r6
+ ldrb r1, [r2, #0xc]
+ ldr r0, [sp]
+ ldrb r2, [r2, #0xd]
+ ldr r0, [r0]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+_0225505E:
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ beq _022550C8
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ add r2, sp, #0x10
+ add r3, sp, #0xc
+ bl MOD20_02254420
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ ldr r0, [r5, #0x58]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+ mov r6, #0
+ add r7, sp, #0x10
+_02255082:
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0
+ beq _022550B6
+ ldr r0, [r4, #0x40]
+ add r1, r7, #0
+ add r2, sp, #0xc
+ bl MOD20_02254488
+ cmp r0, #0
+ ldr r0, [r5, #0x4c]
+ beq _022550AE
+ ldr r1, [sp, #0x10]
+ ldr r2, [sp, #0xc]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+ ldr r0, [r5, #0x4c]
+ mov r1, #0
+ bl MOD20_02253F78
+ b _022550BE
+_022550AE:
+ mov r1, #1
+ bl MOD20_02253F78
+ b _022550BE
+_022550B6:
+ ldr r0, [r5, #0x4c]
+ mov r1, #1
+ bl MOD20_02253F78
+_022550BE:
+ add r6, r6, #1
+ add r4, #8
+ add r5, r5, #4
+ cmp r6, #3
+ blo _02255082
+_022550C8:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD42_02254FE8
+
+ .section .rodata
+ ; 0x022550CC
+ .incbin "baserom.nds", 0x29488c, 0x50
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_42.SINIT_START
+ .global SDK_OVERLAY.MODULE_42.SINIT_END
+SDK_OVERLAY.MODULE_42.SINIT_START:
+ .word MOD42_02254840
+ .word 0
+SDK_OVERLAY.MODULE_42.SINIT_END:
diff --git a/arm9/modules/43/asm/module_43.s b/arm9/modules/43/asm/module_43.s
new file mode 100644
index 00000000..78bb538f
--- /dev/null
+++ b/arm9/modules/43/asm/module_43.s
@@ -0,0 +1,1140 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD43_02254840
+MOD43_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD43_02254854
+ ldr r1, _02254850 ; =MOD43_02254970
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD43_02254854
+_02254850: .word MOD43_02254970
+ thumb_func_end MOD43_02254840
+
+ thumb_func_start MOD43_02254854
+MOD43_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0xb0
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD43_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD43_0225493C
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD43_0225493C
+ thumb_func_end MOD43_02254854
+
+ thumb_func_start MOD43_0225489C
+MOD43_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ add r1, r5, #0
+ add r1, #0xac
+ str r7, [r1]
+ str r2, [sp]
+ bl MOD43_02254A88
+ str r0, [r5, #0xc]
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ bl MOD20_02252C38
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DCC
+ add r6, r0, #0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034908
+ cmp r0, #0
+ beq _022548E0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #8]
+ str r0, [r5, #4]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #0xc]
+ b _022548E6
+_022548E0:
+ ldr r0, [r6, #8]
+ str r0, [r5, #4]
+ ldr r0, [r6, #0xc]
+_022548E6:
+ str r0, [r5, #8]
+ ldr r1, [r5, #4]
+ asr r0, r1, #4
+ lsr r0, r0, #0x1b
+ add r0, r1, r0
+ asr r0, r0, #5
+ str r0, [r5, #4]
+ ldr r1, [r5, #8]
+ asr r0, r1, #4
+ lsr r0, r0, #0x1b
+ add r0, r1, r0
+ asr r0, r0, #5
+ str r0, [r5, #8]
+ add r0, r5, #0
+ add r1, r7, #0
+ bl MOD43_02254B60
+ add r0, r5, #0
+ ldr r2, [sp]
+ add r0, #0xa8
+ add r1, r5, #4
+ bl MOD43_02254B8C
+ cmp r0, #0
+ beq _02254924
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02254924:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD43_0225489C
+
+ thumb_func_start MOD43_02254928
+MOD43_02254928: ; 0x02254928
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ bl MOD43_02254BCC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD43_02254928
+
+ thumb_func_start MOD43_0225493C
+MOD43_0225493C: ; 0x0225493C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _0225496A
+ lsl r2, r1, #2
+ ldr r1, _0225496C ; =0x022550A8
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225496A
+ add r0, r4, #0
+ bl MOD43_02254928
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add r4, #0xac
+ ldr r0, [r4]
+ bl MOD20_022529A0
+_0225496A:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0225496C: .word 0x022550A8
+ thumb_func_end MOD43_0225493C
+
+ thumb_func_start MOD43_02254970
+MOD43_02254970: ; 0x02254970
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD43_02254970
+
+ thumb_func_start MOD43_02254978
+MOD43_02254978: ; 0x02254978
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254980
+ b _02254982
+_02254980:
+ mov r1, #2
+_02254982:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD43_02254978
+
+ thumb_func_start MOD43_0225498C
+MOD43_0225498C: ; 0x0225498C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _0225499C
+ cmp r0, #1
+ beq _022549B0
+ b _022549D2
+_0225499C:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD43_02254BD8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549D2
+_022549B0:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD43_02254BFC
+ cmp r0, #0
+ beq _022549D2
+ add r0, r4, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD43_02254978
+_022549D2:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD43_0225498C
+
+ thumb_func_start MOD43_022549D8
+MOD43_022549D8: ; 0x022549D8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549F0
+ mov r1, #2
+ bl MOD43_02254978
+ add sp, #8
+ mov r0, #0
+ pop {r4, pc}
+_022549F0:
+ bl MOD43_02254AF8
+ add r1, r4, #0
+ add r1, #0x94
+ str r0, [r1]
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #2
+ bl MOD43_02254BFC
+ cmp r0, #0
+ beq _02254A48
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252BB8
+ cmp r0, #0
+ beq _02254A48
+ ldr r0, [sp, #4]
+ sub r0, #0x10
+ cmp r0, #0xc0
+ bhs _02254A22
+ mov r1, #1
+ b _02254A24
+_02254A22:
+ mov r1, #0
+_02254A24:
+ ldr r0, [sp]
+ sub r0, #0x10
+ cmp r0, #0xc0
+ bhs _02254A30
+ mov r0, #1
+ b _02254A32
+_02254A30:
+ mov r0, #0
+_02254A32:
+ tst r0, r1
+ beq _02254A48
+ add r0, r4, #0
+ bl MOD43_02254A88
+ str r0, [r4, #0xc]
+ add r4, #0xa8
+ ldr r0, [r4]
+ mov r1, #2
+ bl MOD43_02254BD8
+_02254A48:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD43_022549D8
+
+ thumb_func_start MOD43_02254A50
+MOD43_02254A50: ; 0x02254A50
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A60
+ cmp r0, #1
+ beq _02254A74
+ b _02254A84
+_02254A60:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ mov r1, #1
+ bl MOD43_02254BD8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A84
+_02254A74:
+ add r4, #0xa8
+ ldr r0, [r4]
+ bl MOD43_02254C08
+ cmp r0, #0
+ beq _02254A84
+ mov r0, #1
+ pop {r4, pc}
+_02254A84:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD43_02254A50
+
+ thumb_func_start MOD43_02254A88
+MOD43_02254A88: ; 0x02254A88
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ bl MOD20_02252C40
+ bl FUN_02024ECC
+ mov r4, #0
+ add r6, r0, #0
+ add r7, r4, #0
+_02254A9E:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_020252B8
+ cmp r0, #1
+ bne _02254AEA
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_02025238
+ cmp r0, #5
+ bne _02254AEA
+ ldr r1, _02254AF4 ; =0x022550B4
+ lsl r0, r4, #1
+ ldr r2, _02254AF4 ; =0x022550B4
+ add r1, r1, r0
+ ldrb r0, [r2, r0]
+ strb r0, [r5, #0x10]
+ ldrb r0, [r1, #1]
+ strb r0, [r5, #0x11]
+ b _02254ACC
+_02254AC8:
+ add r1, r1, #2
+ add r4, r4, #1
+_02254ACC:
+ add r0, r4, #1
+ cmp r0, #0x76
+ bhs _02254AE2
+ ldrb r2, [r5, #0x10]
+ ldrb r0, [r1, #2]
+ cmp r2, r0
+ bne _02254AE2
+ ldrb r2, [r5, #0x11]
+ ldrb r0, [r1, #3]
+ cmp r2, r0
+ beq _02254AC8
+_02254AE2:
+ add r7, r7, #1
+ add r5, r5, #2
+ cmp r7, #0x40
+ bge _02254AF0
+_02254AEA:
+ add r4, r4, #1
+ cmp r4, #0x76
+ blo _02254A9E
+_02254AF0:
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254AF4: .word 0x022550B4
+ thumb_func_end MOD43_02254A88
+
+ thumb_func_start MOD43_02254AF8
+MOD43_02254AF8: ; 0x02254AF8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ mov r6, #0
+ bl MOD20_02252C30
+ cmp r0, #0
+ beq _02254B5C
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ bl MOD20_02252C38
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl FUN_02034E30
+ bl FUN_02034DCC
+ add r7, r0, #0
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034908
+ cmp r0, #0
+ beq _02254B36
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r1, #8]
+ ldr r1, [r1, #0xc]
+ b _02254B3A
+_02254B36:
+ ldr r0, [r7, #8]
+ ldr r1, [r7, #0xc]
+_02254B3A:
+ asr r2, r0, #4
+ lsr r2, r2, #0x1b
+ add r2, r0, r2
+ asr r0, r2, #5
+ asr r2, r1, #4
+ lsr r2, r2, #0x1b
+ add r2, r1, r2
+ asr r1, r2, #5
+ ldr r2, [r5, #4]
+ cmp r0, r2
+ bne _02254B56
+ ldr r2, [r5, #8]
+ cmp r1, r2
+ beq _02254B5C
+_02254B56:
+ str r0, [r5, #4]
+ str r1, [r5, #8]
+ mov r6, #1
+_02254B5C:
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD43_02254AF8
+
+ thumb_func_start MOD43_02254B60
+MOD43_02254B60: ; 0x02254B60
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ bl MOD20_02252C40
+ bl FUN_020462AC
+ add r6, r0, #0
+ mov r4, #0
+_02254B72:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0205F524
+ add r1, r5, #0
+ add r1, #0x98
+ add r4, r4, #1
+ add r5, r5, #4
+ str r0, [r1]
+ cmp r4, #4
+ blt _02254B72
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD43_02254B60
+
+ thumb_func_start MOD43_02254B8C
+MOD43_02254B8C: ; 0x02254B8C
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ mov r1, #0x16
+ add r6, r0, #0
+ mov r0, #8
+ lsl r1, r1, #4
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254BC6
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r5, #0x8c
+ mov r0, #0x15
+ ldr r1, [r5]
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254BC6:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD43_02254B8C
+
+ thumb_func_start MOD43_02254BCC
+MOD43_02254BCC: ; 0x02254BCC
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254BD6
+ bl FUN_02016A18
+_02254BD6:
+ pop {r3, pc}
+ thumb_func_end MOD43_02254BCC
+
+ thumb_func_start MOD43_02254BD8
+MOD43_02254BD8: ; 0x02254BD8
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254BF8 ; =0x022551BC
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254BF8: .word 0x022551BC
+ thumb_func_end MOD43_02254BD8
+
+ thumb_func_start MOD43_02254BFC
+MOD43_02254BFC: ; 0x02254BFC
+ ldr r3, _02254C04 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254C04: .word MOD20_02253794
+ thumb_func_end MOD43_02254BFC
+
+ thumb_func_start MOD43_02254C08
+MOD43_02254C08: ; 0x02254C08
+ ldr r3, _02254C10 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254C10: .word MOD20_022537B8
+ thumb_func_end MOD43_02254C08
+
+ thumb_func_start MOD43_02254C14
+MOD43_02254C14: ; 0x02254C14
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD43_02254C14
+
+ thumb_func_start MOD43_02254C28
+MOD43_02254C28: ; 0x02254C28
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, _02254CC0 ; =0x0400104C
+ mov r3, #0
+ strb r3, [r0]
+ strb r3, [r0, #1]
+ ldr r0, [r5, #4]
+ ldr r2, _02254CC4 ; =0x022551A0
+ mov r1, #6
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x75
+ mov r3, #6
+ bl FUN_0200687C
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x74
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ add r0, r5, #0
+ lsr r1, r4, #5
+ bl MOD43_02254CD0
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254CC8 ; =0x04001000
+ ldr r0, _02254CCC ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r5, #0
+ bl MOD43_02254E78
+ add r0, r6, #0
+ bl MOD43_02254C14
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02254CC0: .word 0x0400104C
+_02254CC4: .word 0x022551A0
+_02254CC8: .word 0x04001000
+_02254CCC: .word 0xFFFFE0FF
+ thumb_func_end MOD43_02254C28
+
+ thumb_func_start MOD43_02254CD0
+MOD43_02254CD0: ; 0x02254CD0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x24
+ add r4, r1, #0
+ mov r1, #0x66
+ add r5, r0, #0
+ mov r0, #0x1a
+ lsl r1, r1, #2
+ mov r2, #0
+ mov r3, #8
+ bl FUN_0200A738
+ add r6, r0, #0
+ beq _02254D44
+ mov r0, #0x14
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, sp, #0x14
+ mov r2, #6
+ mov r3, #0x12
+ bl FUN_02019064
+ add r0, sp, #0x14
+ mov r1, #4
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02254D48 ; =0x00010104
+ add r2, r6, #0
+ str r0, [sp, #8]
+ add r0, sp, #0x14
+ add r3, r1, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, sp, #0x14
+ bl FUN_02019270
+ add r0, sp, #0x14
+ bl FUN_02019548
+ add r0, sp, #0x14
+ bl FUN_02019178
+ add r0, r6, #0
+ bl FUN_02021A20
+_02254D44:
+ add sp, #0x24
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02254D48: .word 0x00010104
+ thumb_func_end MOD43_02254CD0
+
+ thumb_func_start MOD43_02254D4C
+MOD43_02254D4C: ; 0x02254D4C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02254D68
+ cmp r0, #1
+ beq _02254D78
+ pop {r3, r4, r5, pc}
+_02254D68:
+ mov r0, #0x57
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02254D78:
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD43_02254BFC
+ cmp r0, #0
+ beq _02254DA0
+ add r0, r4, #0
+ bl MOD43_02255000
+ ldr r0, _02254DA4 ; =0x0400104C
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD43_02254C14
+_02254DA0:
+ pop {r3, r4, r5, pc}
+ nop
+_02254DA4: .word 0x0400104C
+ thumb_func_end MOD43_02254D4C
+
+ thumb_func_start MOD43_02254DA8
+MOD43_02254DA8: ; 0x02254DA8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02254DCE
+ cmp r0, #1
+ beq _02254E02
+ cmp r0, #2
+ beq _02254E10
+ pop {r3, r4, r5, pc}
+_02254DCE:
+ mov r1, #0x55
+ mov r0, #6
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r2, #0
+ add r0, r1, #4
+ str r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #8
+ str r2, [r4, r0]
+ ldr r2, [r4, r1]
+ lsl r0, r2, #4
+ orr r0, r2
+ ldr r2, _02254E70 ; =0x0400104C
+ strb r0, [r2]
+ ldr r1, [r4, r1]
+ lsl r0, r1, #4
+ orr r0, r1
+ strb r0, [r2, #1]
+ ldr r0, _02254E74 ; =0x00000678
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02254E02:
+ add r0, r4, #0
+ bl MOD43_02254F9C
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02254E10:
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _02254E22
+ add r0, r5, #0
+ bl MOD43_02254C14
+ pop {r3, r4, r5, pc}
+_02254E22:
+ sub r1, r0, #4
+ ldr r1, [r4, r1]
+ add r2, r1, #1
+ sub r1, r0, #4
+ str r2, [r4, r1]
+ ldr r1, [r4, r1]
+ cmp r1, #3
+ blt _02254E6E
+ mov r2, #0
+ sub r1, r0, #4
+ str r2, [r4, r1]
+ add r1, r0, #0
+ sub r1, #8
+ ldr r1, [r4, r1]
+ sub r2, r1, #1
+ add r1, r0, #0
+ sub r1, #8
+ str r2, [r4, r1]
+ add r1, r0, #0
+ sub r1, #8
+ ldr r2, [r4, r1]
+ lsl r1, r2, #4
+ orr r2, r1
+ ldr r1, _02254E70 ; =0x0400104C
+ strb r2, [r1]
+ add r2, r0, #0
+ sub r2, #8
+ ldr r3, [r4, r2]
+ sub r0, #8
+ lsl r2, r3, #4
+ orr r2, r3
+ strb r2, [r1, #1]
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _02254E6E
+ add r0, r5, #0
+ bl MOD43_02254C14
+_02254E6E:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254E70: .word 0x0400104C
+_02254E74: .word 0x00000678
+ thumb_func_end MOD43_02254DA8
+
+ thumb_func_start MOD43_02254E78
+MOD43_02254E78: ; 0x02254E78
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r6, r0, #0
+ ldr r7, [r6]
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x78
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ add r0, r6, r0
+ mov r1, #0xc
+ mov r2, #0x76
+ mov r3, #0x77
+ bl MOD20_02253FBC
+ mov r2, #0
+ add r0, sp, #0xc
+ strb r2, [r0, #0x12]
+ mov r1, #2
+ strb r1, [r0, #0x13]
+ strb r2, [r0, #0x15]
+ ldr r0, [r7]
+ ldr r1, [r7, #4]
+ add r2, sp, #0x10
+ add r3, sp, #0xc
+ bl MOD20_02254420
+ ldr r0, [sp, #0x10]
+ mov r2, #0x4e
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0xc]
+ lsl r2, r2, #2
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x18]
+ mov r1, #0
+ add r0, sp, #0xc
+ strb r1, [r0, #0x14]
+ strh r1, [r0, #0x10]
+ ldr r0, [r6, #0x20]
+ add r1, sp, #0x14
+ add r2, r6, r2
+ bl MOD20_02253E74
+ mov r1, #1
+ str r0, [r6, #0x24]
+ bl MOD20_02253FAC
+ mov r1, #1
+ add r0, sp, #0xc
+ strb r1, [r0, #0x14]
+ mov r1, #7
+ strh r1, [r0, #0x10]
+ mov r5, #0
+ str r5, [sp, #0x14]
+ str r5, [sp, #0x18]
+ add r4, r6, #0
+_02254EFC:
+ mov r2, #0x4e
+ lsl r2, r2, #2
+ ldr r0, [r6, #0x20]
+ add r1, sp, #0x14
+ add r2, r6, r2
+ bl MOD20_02253E74
+ mov r1, #1
+ str r0, [r4, #0x28]
+ bl MOD20_02253FAC
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #0x40
+ blt _02254EFC
+ add r0, r6, #0
+ bl MOD43_02254F9C
+ mov r5, #0
+ add r4, r6, #0
+_02254F24:
+ add r0, r5, #0
+ add r1, sp, #0x10
+ add r2, sp, #0xc
+ bl MOD20_02254460
+ ldr r0, [sp, #0x10]
+ mov r1, #2
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0xc]
+ mov r2, #0x4e
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x18]
+ add r0, sp, #0xc
+ strb r1, [r0, #0x14]
+ add r1, r5, #0
+ add r1, #0xe
+ strh r1, [r0, #0x10]
+ lsl r2, r2, #2
+ ldr r0, [r6, #0x20]
+ add r1, sp, #0x14
+ add r2, r6, r2
+ bl MOD20_02253E74
+ mov r1, #0x4a
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD20_02253FAC
+ add r0, r7, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02254F7A
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl MOD20_02253F78
+_02254F7A:
+ add r5, r5, #1
+ add r4, r4, #4
+ add r7, r7, #4
+ cmp r5, #4
+ blt _02254F24
+ ldr r0, _02254F98 ; =MOD43_02255078
+ add r1, r6, #0
+ mov r2, #3
+ bl FUN_0200CA44
+ mov r1, #0x53
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254F98: .word MOD43_02255078
+ thumb_func_end MOD43_02254E78
+
+ thumb_func_start MOD43_02254F9C
+MOD43_02254F9C: ; 0x02254F9C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ ldr r1, [r7]
+ mov r4, #0
+ ldr r0, [r1, #8]
+ cmp r0, #0
+ ble _02254FE2
+ add r6, r4, #0
+ add r5, r7, #0
+_02254FB0:
+ add r1, r1, r6
+ ldrb r0, [r1, #0xc]
+ ldrb r1, [r1, #0xd]
+ add r2, sp, #4
+ add r3, sp, #0
+ bl MOD20_02254420
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ ldr r0, [r5, #0x28]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+ ldr r0, [r5, #0x28]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r1, [r7]
+ add r4, r4, #1
+ ldr r0, [r1, #8]
+ add r6, r6, #2
+ add r5, r5, #4
+ cmp r4, r0
+ blt _02254FB0
+_02254FE2:
+ cmp r4, #0x40
+ bge _02254FFC
+ lsl r0, r4, #2
+ add r5, r7, r0
+ mov r6, #1
+_02254FEC:
+ ldr r0, [r5, #0x28]
+ add r1, r6, #0
+ bl MOD20_02253F78
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x40
+ blt _02254FEC
+_02254FFC:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD43_02254F9C
+
+ thumb_func_start MOD43_02255000
+MOD43_02255000: ; 0x02255000
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0x53
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _0225501A
+ bl FUN_0200CAB4
+ mov r0, #0x53
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_0225501A:
+ mov r6, #0
+ add r4, r5, #0
+ add r7, r6, #0
+_02255020:
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _02255036
+ ldr r0, [r5, #0x20]
+ bl MOD20_02253F14
+ mov r0, #0x4a
+ lsl r0, r0, #2
+ str r7, [r4, r0]
+_02255036:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _02255020
+ mov r6, #0
+ add r4, r5, #0
+ add r7, r6, #0
+_02255044:
+ ldr r1, [r4, #0x28]
+ cmp r1, #0
+ beq _02255052
+ ldr r0, [r5, #0x20]
+ bl MOD20_02253F14
+ str r7, [r4, #0x28]
+_02255052:
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #0x40
+ blt _02255044
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _0225506A
+ ldr r0, [r5, #0x20]
+ bl MOD20_02253F14
+ mov r0, #0
+ str r0, [r5, #0x24]
+_0225506A:
+ mov r0, #0x4e
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl MOD20_02254014
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD43_02255000
+
+ thumb_func_start MOD43_02255078
+MOD43_02255078: ; 0x02255078
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r1, [r4]
+ add r0, r1, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022550A2
+ ldmia r1!, {r0, r1}
+ add r2, sp, #4
+ add r3, sp, #0
+ bl MOD20_02254420
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ ldr r0, [r4, #0x24]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ bl MOD20_02253F64
+_022550A2:
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD43_02255078
+
+ .section .rodata
+ ; 0x022550A8
+ .incbin "baserom.nds", 0x295268, 0x144
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_43.SINIT_START
+ .global SDK_OVERLAY.MODULE_43.SINIT_END
+SDK_OVERLAY.MODULE_43.SINIT_START:
+ .word MOD43_02254840
+ .word 0
+SDK_OVERLAY.MODULE_43.SINIT_END:
diff --git a/arm9/modules/44/asm/module_44.s b/arm9/modules/44/asm/module_44.s
new file mode 100644
index 00000000..a9743a1e
--- /dev/null
+++ b/arm9/modules/44/asm/module_44.s
@@ -0,0 +1,580 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD44_02254840
+MOD44_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD44_02254854
+ ldr r1, _02254850 ; =MOD44_02254920
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD44_02254854
+_02254850: .word MOD44_02254920
+ thumb_func_end MOD44_02254840
+
+ thumb_func_start MOD44_02254854
+MOD44_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x14
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD44_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD44_022548EC
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD44_022548EC
+ thumb_func_end MOD44_02254854
+
+ thumb_func_start MOD44_0225489C
+MOD44_0225489C: ; 0x0225489C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r6, r2, #0
+ bl MOD20_02252C3C
+ str r0, [r5, #0x10]
+ bl FUN_0204BF44
+ str r0, [r5, #4]
+ strb r0, [r5, #3]
+ add r0, r5, #0
+ add r0, #8
+ add r1, r5, #4
+ add r2, r6, #0
+ bl MOD44_02254A54
+ cmp r0, #0
+ beq _022548D2
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022548D2:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD44_0225489C
+
+ thumb_func_start MOD44_022548D8
+MOD44_022548D8: ; 0x022548D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD44_02254B00
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_022548D8
+
+ thumb_func_start MOD44_022548EC
+MOD44_022548EC: ; 0x022548EC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254918
+ lsl r2, r1, #2
+ ldr r1, _0225491C ; =0x02254C54
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254918
+ add r0, r4, #0
+ bl MOD44_022548D8
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254918:
+ pop {r3, r4, r5, pc}
+ nop
+_0225491C: .word 0x02254C54
+ thumb_func_end MOD44_022548EC
+
+ thumb_func_start MOD44_02254920
+MOD44_02254920: ; 0x02254920
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD44_02254920
+
+ thumb_func_start MOD44_02254928
+MOD44_02254928: ; 0x02254928
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254930
+ b _02254932
+_02254930:
+ mov r1, #2
+_02254932:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD44_02254928
+
+ thumb_func_start MOD44_0225493C
+MOD44_0225493C: ; 0x0225493C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _0225494C
+ cmp r0, #1
+ beq _0225495C
+ b _02254976
+_0225494C:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD44_02254B14
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254976
+_0225495C:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD44_02254B38
+ cmp r0, #0
+ beq _02254976
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD44_02254928
+_02254976:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_0225493C
+
+ thumb_func_start MOD44_0225497C
+MOD44_0225497C: ; 0x0225497C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254990
+ mov r1, #2
+ bl MOD44_02254928
+ mov r0, #0
+ pop {r4, pc}
+_02254990:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _0225499C
+ cmp r1, #1
+ beq _022549B4
+ b _022549C4
+_0225499C:
+ bl MOD44_022549C8
+ cmp r0, #0
+ beq _022549C4
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD44_02254B14
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549C4
+_022549B4:
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD44_02254B38
+ cmp r0, #0
+ beq _022549C4
+ mov r0, #0
+ strb r0, [r4, #1]
+_022549C4:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD44_0225497C
+
+ thumb_func_start MOD44_022549C8
+MOD44_022549C8: ; 0x022549C8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02254A18
+ add r0, sp, #4
+ add r1, sp, #0
+ bl FUN_02020AB0
+ cmp r0, #0
+ beq _02254A18
+ ldr r0, [sp]
+ cmp r0, #0x88
+ blo _02254A18
+ cmp r0, #0xa0
+ bhs _02254A18
+ ldr r0, [sp, #4]
+ cmp r0, #0x30
+ blo _02254A18
+ cmp r0, #0xb8
+ bhs _02254A18
+ sub r0, #0x30
+ lsr r1, r0, #4
+ cmp r1, #8
+ blo _02254A02
+ mov r1, #7
+_02254A02:
+ ldrb r0, [r4, #3]
+ cmp r1, r0
+ beq _02254A18
+ str r1, [r4, #4]
+ strb r1, [r4, #3]
+ ldr r0, [r4, #0x10]
+ bl FUN_0204BF58
+ add sp, #8
+ mov r0, #1
+ pop {r4, pc}
+_02254A18:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_022549C8
+
+ thumb_func_start MOD44_02254A20
+MOD44_02254A20: ; 0x02254A20
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A30
+ cmp r0, #1
+ beq _02254A40
+ b _02254A4E
+_02254A30:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD44_02254B14
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A4E
+_02254A40:
+ ldr r0, [r4, #8]
+ bl MOD44_02254B44
+ cmp r0, #0
+ beq _02254A4E
+ mov r0, #1
+ pop {r4, pc}
+_02254A4E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254A20
+
+ thumb_func_start MOD44_02254A54
+MOD44_02254A54: ; 0x02254A54
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x3c
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254A8A
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD44_02254A90
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254A8A:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254A54
+
+ thumb_func_start MOD44_02254A90
+MOD44_02254A90: ; 0x02254A90
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r5, r0, #0
+ add r4, r1, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x45
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x28
+ mov r1, #0xc
+ mov r2, #0x43
+ mov r3, #0x44
+ bl MOD20_02253FBC
+ add r2, r5, #0
+ ldr r0, [r5, #0x20]
+ ldr r1, _02254AE0 ; =0x02254C60
+ add r2, #0x28
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+ ldr r1, [r4]
+ mov r2, #0x25
+ lsl r1, r1, #4
+ add r1, #0x38
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xe
+ bl MOD20_02253F64
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254AE0: .word 0x02254C60
+ thumb_func_end MOD44_02254A90
+
+ thumb_func_start MOD44_02254AE4
+MOD44_02254AE4: ; 0x02254AE4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x24]
+ cmp r1, #0
+ beq _02254AF4
+ ldr r0, [r4, #0x20]
+ bl MOD20_02253F14
+_02254AF4:
+ add r4, #0x28
+ add r0, r4, #0
+ bl MOD20_02254014
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254AE4
+
+ thumb_func_start MOD44_02254B00
+MOD44_02254B00: ; 0x02254B00
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254B10
+ bl MOD44_02254AE4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254B10:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254B00
+
+ thumb_func_start MOD44_02254B14
+MOD44_02254B14: ; 0x02254B14
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254B34 ; =0x02254C8C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254B34: .word 0x02254C8C
+ thumb_func_end MOD44_02254B14
+
+ thumb_func_start MOD44_02254B38
+MOD44_02254B38: ; 0x02254B38
+ ldr r3, _02254B40 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254B40: .word MOD20_02253794
+ thumb_func_end MOD44_02254B38
+
+ thumb_func_start MOD44_02254B44
+MOD44_02254B44: ; 0x02254B44
+ ldr r3, _02254B4C ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254B4C: .word MOD20_022537B8
+ thumb_func_end MOD44_02254B44
+
+ thumb_func_start MOD44_02254B50
+MOD44_02254B50: ; 0x02254B50
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254B50
+
+ thumb_func_start MOD44_02254B64
+MOD44_02254B64: ; 0x02254B64
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD20_022538A4
+ ldr r0, [r5, #4]
+ ldr r2, _02254BEC ; =0x02254C70
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x42
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x41
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254BF0 ; =0x04001000
+ ldr r0, _02254BF4 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD44_02254B50
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254BEC: .word 0x02254C70
+_02254BF0: .word 0x04001000
+_02254BF4: .word 0xFFFFE0FF
+ thumb_func_end MOD44_02254B64
+
+ thumb_func_start MOD44_02254BF8
+MOD44_02254BF8: ; 0x02254BF8
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD44_02254B50
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254BF8
+
+ thumb_func_start MOD44_02254C14
+MOD44_02254C14: ; 0x02254C14
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r4, r0, #0
+ ldr r0, _02254C50 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r1, [r4]
+ mov r2, #0x25
+ lsl r1, r1, #4
+ add r1, #0x38
+ ldr r0, [r5, #0x24]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xe
+ bl MOD20_02253F64
+ add r0, r6, #0
+ bl MOD44_02254B50
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254C50: .word 0x00000663
+ thumb_func_end MOD44_02254C14
+
+ .section .rodata
+ ; 0x02254C54
+ .incbin "baserom.nds", 0x295814, 0x68
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_44.SINIT_START
+ .global SDK_OVERLAY.MODULE_44.SINIT_END
+SDK_OVERLAY.MODULE_44.SINIT_START:
+ .word MOD44_02254840
+ .word 0
+SDK_OVERLAY.MODULE_44.SINIT_END:
diff --git a/arm9/modules/45/asm/module_45.s b/arm9/modules/45/asm/module_45.s
new file mode 100644
index 00000000..96762d44
--- /dev/null
+++ b/arm9/modules/45/asm/module_45.s
@@ -0,0 +1,1061 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD45_02254840
+MOD45_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD45_02254854
+ ldr r1, _02254850 ; =MOD45_02254A30
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD45_02254854
+_02254850: .word MOD45_02254A30
+ thumb_func_end MOD45_02254840
+
+ thumb_func_start MOD45_02254854
+MOD45_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0xb0
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD45_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD45_022549EC
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD45_022549EC
+ thumb_func_end MOD45_02254854
+
+ thumb_func_start MOD45_0225489C
+MOD45_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, sp, #4
+ add r6, r2, #0
+ bl FUN_020126B4
+ add r0, r4, #0
+ bl MOD20_02252C3C
+ add r1, r5, #0
+ add r1, #0x98
+ str r0, [r1]
+ add r0, r5, #4
+ add r1, r5, #0
+ add r2, sp, #4
+ bl MOD45_0225492C
+ add r0, r5, #0
+ ldrb r1, [r5, #0x12]
+ add r0, #0xa8
+ add r2, r6, #0
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r1, [r0]
+ ldr r0, [r5, #8]
+ sub r0, r0, #1
+ add r1, r1, r0
+ add r0, r5, #0
+ add r0, #0xac
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0x90
+ add r1, r5, #4
+ bl MOD45_02254B90
+ cmp r0, #0
+ beq _0225491C
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254924 ; =0x02255018
+ ldr r2, _02254928 ; =MOD45_022549E0
+ mov r1, #0x25
+ add r3, r5, #0
+ bl MOD20_02254130
+ add r1, r5, #0
+ add r1, #0x9c
+ str r0, [r1]
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xa0
+ str r1, [r0]
+ add r5, #0x94
+ add sp, #0x14
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_0225491C:
+ mov r0, #0
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254924: .word 0x02255018
+_02254928: .word MOD45_022549E0
+ thumb_func_end MOD45_0225489C
+
+ thumb_func_start MOD45_0225492C
+MOD45_0225492C: ; 0x0225492C
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r2, #0
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ str r1, [sp]
+ str r0, [r6]
+ ldr r0, [r4, #8]
+ str r0, [r6, #8]
+ ldr r1, [r6]
+ ldr r0, _022549BC ; =0x022550AB
+ ldrb r0, [r0, r1]
+ str r0, [r6, #4]
+ ldr r0, [r6]
+ cmp r0, #2
+ bne _02254970
+ ldr r5, [r4]
+ mov r1, #0x19
+ add r0, r5, #0
+ lsl r1, r1, #4
+ bl _u32_div_f
+ cmp r1, #0
+ beq _0225496C
+ add r0, r5, #0
+ mov r1, #0x64
+ bl _u32_div_f
+ cmp r1, #0
+ beq _02254970
+ mov r0, #3
+ tst r0, r5
+ bne _02254970
+_0225496C:
+ mov r0, #0x1d
+ str r0, [r6, #4]
+_02254970:
+ ldr r0, [r4, #8]
+ mov r1, #7
+ sub r0, r0, #1
+ bl _u32_div_f
+ mov r2, #7
+ ldr r3, [r4, #0xc]
+ sub r0, r2, r1
+ add r7, r3, r0
+ cmp r7, #7
+ blo _02254990
+ add r0, r7, #0
+ add r1, r2, #0
+ bl _u32_div_f
+ add r7, r1, #0
+_02254990:
+ ldr r0, [r6, #4]
+ mov r4, #0
+ cmp r0, #0
+ bls _022549BA
+ add r5, r6, #0
+_0225499A:
+ ldr r0, [sp]
+ add r2, r4, #1
+ strh r2, [r5, #0xc]
+ add r0, #0x98
+ ldr r0, [r0]
+ ldr r1, [r6]
+ bl FUN_0204C064
+ strb r0, [r5, #0xf]
+ add r0, r7, r4
+ strb r0, [r5, #0xe]
+ ldr r0, [r6, #4]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blo _0225499A
+_022549BA:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022549BC: .word 0x022550AB
+ thumb_func_end MOD45_0225492C
+
+ thumb_func_start MOD45_022549C0
+MOD45_022549C0: ; 0x022549C0
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl MOD20_02254198
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ bl MOD45_02254BCC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_022549C0
+
+ thumb_func_start MOD45_022549E0
+MOD45_022549E0: ; 0x022549E0
+ add r2, r3, #0
+ add r2, #0xa4
+ str r0, [r2]
+ add r3, #0xa0
+ str r1, [r3]
+ bx lr
+ thumb_func_end MOD45_022549E0
+
+ thumb_func_start MOD45_022549EC
+MOD45_022549EC: ; 0x022549EC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254A2A
+ add r0, r4, #0
+ add r0, #0x94
+ add r1, #0x9c
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254A2C ; =0x0225500C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254A2A
+ add r0, r4, #0
+ bl MOD45_022549C0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add r4, #0x94
+ ldr r0, [r4]
+ bl MOD20_022529A0
+_02254A2A:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254A2C: .word 0x0225500C
+ thumb_func_end MOD45_022549EC
+
+ thumb_func_start MOD45_02254A30
+MOD45_02254A30: ; 0x02254A30
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD45_02254A30
+
+ thumb_func_start MOD45_02254A38
+MOD45_02254A38: ; 0x02254A38
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254A40
+ b _02254A42
+_02254A40:
+ mov r1, #2
+_02254A42:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD45_02254A38
+
+ thumb_func_start MOD45_02254A4C
+MOD45_02254A4C: ; 0x02254A4C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A5C
+ cmp r0, #1
+ beq _02254A70
+ b _02254A92
+_02254A5C:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD45_02254C7C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A92
+_02254A70:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #0
+ bl MOD45_02254CA0
+ cmp r0, #0
+ beq _02254A92
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD45_02254A38
+_02254A92:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254A4C
+
+ thumb_func_start MOD45_02254A98
+MOD45_02254A98: ; 0x02254A98
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldrb r1, [r5, #2]
+ cmp r1, #0
+ beq _02254AAC
+ mov r1, #2
+ bl MOD45_02254A38
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02254AAC:
+ ldrb r0, [r5, #1]
+ cmp r0, #0
+ beq _02254AB8
+ cmp r0, #1
+ beq _02254B3E
+ b _02254B52
+_02254AB8:
+ add r0, r5, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _02254B52
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xa0
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r2, [r0]
+ add r0, r5, #0
+ add r0, #0xa4
+ ldr r1, [r0]
+ cmp r1, r2
+ blo _02254B52
+ add r0, r5, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r1, r0
+ bhi _02254B52
+ add r0, r5, #0
+ add r0, #0x98
+ sub r4, r1, r2
+ ldr r0, [r0]
+ ldr r1, [r5, #4]
+ add r2, r4, #1
+ bl FUN_0204C064
+ cmp r0, #0
+ beq _02254B08
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ ldr r1, [r5, #4]
+ add r2, r4, #1
+ bl FUN_0204C02C
+ b _02254B16
+_02254B08:
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ ldr r1, [r5, #4]
+ add r2, r4, #1
+ bl FUN_0204BFF0
+_02254B16:
+ add r3, r5, #0
+ add r3, #0x13
+ lsl r2, r4, #2
+ ldrb r1, [r3, r2]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r3, r2]
+ add r0, r5, #0
+ add r0, #0x8c
+ str r4, [r0]
+ add r0, r5, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #2
+ bl MOD45_02254C7C
+ ldrb r0, [r5, #1]
+ add r0, r0, #1
+ strb r0, [r5, #1]
+ b _02254B52
+_02254B3E:
+ add r0, r5, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #2
+ bl MOD45_02254CA0
+ cmp r0, #0
+ beq _02254B52
+ mov r0, #0
+ strb r0, [r5, #1]
+_02254B52:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254A98
+
+ thumb_func_start MOD45_02254B58
+MOD45_02254B58: ; 0x02254B58
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254B68
+ cmp r0, #1
+ beq _02254B7C
+ b _02254B8C
+_02254B68:
+ add r0, r4, #0
+ add r0, #0x90
+ ldr r0, [r0]
+ mov r1, #1
+ bl MOD45_02254C7C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B8C
+_02254B7C:
+ add r4, #0x90
+ ldr r0, [r4]
+ bl MOD45_02254CAC
+ cmp r0, #0
+ beq _02254B8C
+ mov r0, #1
+ pop {r4, pc}
+_02254B8C:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD45_02254B58
+
+ thumb_func_start MOD45_02254B90
+MOD45_02254B90: ; 0x02254B90
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x3c
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254BC6
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD45_02254BE0
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254BC6:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254B90
+
+ thumb_func_start MOD45_02254BCC
+MOD45_02254BCC: ; 0x02254BCC
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254BDC
+ bl MOD45_02254C64
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254BDC:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254BCC
+
+ thumb_func_start MOD45_02254BE0
+MOD45_02254BE0: ; 0x02254BE0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r5, r0, #0
+ add r4, r1, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x72
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x28
+ mov r1, #0xc
+ mov r2, #0x70
+ mov r3, #0x71
+ bl MOD20_02253FBC
+ add r2, r5, #0
+ ldr r0, [r5, #0x20]
+ ldr r1, _02254C2C ; =0x022550B8
+ add r2, #0x28
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+ ldr r1, [r4, #8]
+ lsl r1, r1, #2
+ add r1, r4, r1
+ ldrb r1, [r1, #0xa]
+ bl MOD45_02254C30
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254C2C: .word 0x022550B8
+ thumb_func_end MOD45_02254BE0
+
+ thumb_func_start MOD45_02254C30
+MOD45_02254C30: ; 0x02254C30
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ add r0, r6, #0
+ mov r1, #7
+ bl _u32_div_f
+ add r4, r1, #0
+ add r0, r6, #0
+ mov r1, #7
+ bl _u32_div_f
+ add r2, r0, #0
+ lsl r1, r4, #1
+ lsl r3, r2, #1
+ add r1, r4, r1
+ add r2, r2, r3
+ add r1, r1, #5
+ add r2, r2, #6
+ add r0, r5, #0
+ lsl r1, r1, #0xf
+ lsl r2, r2, #0xf
+ bl MOD20_02253F64
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254C30
+
+ thumb_func_start MOD45_02254C64
+MOD45_02254C64: ; 0x02254C64
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x20]
+ ldr r1, [r4, #0x24]
+ bl MOD20_02253F14
+ add r4, #0x28
+ add r0, r4, #0
+ bl MOD20_02254014
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254C64
+
+ thumb_func_start MOD45_02254C7C
+MOD45_02254C7C: ; 0x02254C7C
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254C9C ; =0x02255140
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254C9C: .word 0x02255140
+ thumb_func_end MOD45_02254C7C
+
+ thumb_func_start MOD45_02254CA0
+MOD45_02254CA0: ; 0x02254CA0
+ ldr r3, _02254CA8 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254CA8: .word MOD20_02253794
+ thumb_func_end MOD45_02254CA0
+
+ thumb_func_start MOD45_02254CAC
+MOD45_02254CAC: ; 0x02254CAC
+ ldr r3, _02254CB4 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254CB4: .word MOD20_022537B8
+ thumb_func_end MOD45_02254CAC
+
+ thumb_func_start MOD45_02254CB8
+MOD45_02254CB8: ; 0x02254CB8
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254CB8
+
+ thumb_func_start MOD45_02254CCC
+MOD45_02254CCC: ; 0x02254CCC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r4, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254D60 ; =0x022550FC
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r5, #4]
+ ldr r2, _02254D64 ; =0x022550E0
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD45_02254DDC
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD45_02254E74
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x6f
+ mov r3, #7
+ bl FUN_0200687C
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r0, [r5, #4]
+ mov r1, #7
+ bl FUN_02017CD0
+ ldr r1, _02254D68 ; =0x04001000
+ ldr r0, _02254D6C ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #0xc
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r6, #0
+ bl MOD45_02254CB8
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_02254D60: .word 0x022550FC
+_02254D64: .word 0x022550E0
+_02254D68: .word 0x04001000
+_02254D6C: .word 0xFFFFE0FF
+ thumb_func_end MOD45_02254CCC
+
+ thumb_func_start MOD45_02254D70
+MOD45_02254D70: ; 0x02254D70
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #7
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD45_02254CB8
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD45_02254D70
+
+ thumb_func_start MOD45_02254D94
+MOD45_02254D94: ; 0x02254D94
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD20_022538A4
+ add r2, r0, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ lsl r3, r0, #2
+ add r0, r2, r3
+ ldrb r0, [r0, #0xf]
+ cmp r0, #0
+ beq _02254DBA
+ mov r1, #0x8f
+ b _02254DBC
+_02254DBA:
+ mov r1, #0x83
+_02254DBC:
+ add r2, r2, r3
+ ldrb r2, [r2, #0xe]
+ lsl r1, r1, #0x10
+ ldr r0, [r5, #4]
+ lsr r1, r1, #0x10
+ bl MOD45_02254E28
+ ldr r0, [r5, #4]
+ mov r1, #7
+ bl FUN_02017CD0
+ add r0, r4, #0
+ bl MOD45_02254CB8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254D94
+
+ thumb_func_start MOD45_02254DDC
+MOD45_02254DDC: ; 0x02254DDC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ add r6, r1, #0
+ ldr r2, [r7, #4]
+ mov r0, #0xc
+ mov r1, #0x6e
+ mov r3, #7
+ bl FUN_020068C8
+ ldr r0, [r6, #4]
+ mov r4, #0
+ cmp r0, #0
+ bls _02254E22
+ add r5, r6, #0
+_02254E08:
+ ldrb r0, [r5, #0xf]
+ cmp r0, #0
+ beq _02254E18
+ ldrb r2, [r5, #0xe]
+ ldr r0, [r7, #4]
+ mov r1, #0x8f
+ bl MOD45_02254E28
+_02254E18:
+ ldr r0, [r6, #4]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blo _02254E08
+_02254E22:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254DDC
+
+ thumb_func_start MOD45_02254E28
+MOD45_02254E28: ; 0x02254E28
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r2, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r0, r7, #0
+ mov r1, #7
+ bl _u32_div_f
+ add r4, r1, #0
+ add r0, r7, #0
+ mov r1, #7
+ bl _u32_div_f
+ lsl r1, r0, #1
+ add r0, r0, r1
+ add r0, r0, #5
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r3, r4, #1
+ str r0, [sp]
+ mov r0, #2
+ add r3, r4, r3
+ str r0, [sp, #4]
+ add r3, r3, #4
+ str r0, [sp, #8]
+ mov r0, #0
+ lsl r3, r3, #0x18
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ mov r1, #7
+ add r2, r6, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD45_02254E28
+
+ thumb_func_start MOD45_02254E74
+MOD45_02254E74: ; 0x02254E74
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r3, #0
+ add r7, r0, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ add r6, r1, #0
+ ldr r0, [r7, #4]
+ mov r1, #6
+ mov r2, #0x82
+ bl FUN_02018540
+ ldr r0, [r7, #4]
+ ldr r1, [r6]
+ bl MOD45_02254EBC
+ ldr r0, [r6, #4]
+ mov r4, #0
+ cmp r0, #0
+ bls _02254EB8
+ add r5, r6, #0
+_02254EA4:
+ ldrb r2, [r5, #0xe]
+ ldr r0, [r7, #4]
+ add r1, r4, #1
+ bl MOD45_02254F14
+ ldr r0, [r6, #4]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blo _02254EA4
+_02254EB8:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD45_02254E74
+
+ thumb_func_start MOD45_02254EBC
+MOD45_02254EBC: ; 0x02254EBC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ ldr r0, _02254F10 ; =0x022550C6
+ lsl r1, r1, #1
+ ldrh r4, [r0, r1]
+ mov r0, #0
+ str r0, [sp, #0x10]
+_02254ECC:
+ ldr r0, [sp, #0x10]
+ mov r5, #0
+ add r0, r0, #2
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+_02254ED6:
+ add r3, r5, #0
+ add r2, r4, r5
+ add r3, #0xc
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x18
+ str r6, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ mov r1, #6
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r5, r5, #1
+ cmp r5, #4
+ blt _02254ED6
+ ldr r0, [sp, #0x10]
+ add r4, #0xc
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #2
+ blt _02254ECC
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254F10: .word 0x022550C6
+ thumb_func_end MOD45_02254EBC
+
+ thumb_func_start MOD45_02254F14
+MOD45_02254F14: ; 0x02254F14
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r2, #0
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ add r0, r5, #0
+ mov r1, #7
+ bl _u32_div_f
+ add r6, r1, #0
+ lsl r0, r6, #1
+ add r0, r6, r0
+ add r4, r0, #4
+ add r0, r5, #0
+ mov r1, #7
+ bl _u32_div_f
+ lsl r1, r0, #1
+ add r0, r0, r1
+ add r5, r0, #5
+ cmp r6, #0
+ bne _02254F44
+ mov r6, #1
+ b _02254F46
+_02254F44:
+ mov r6, #0
+_02254F46:
+ ldr r0, [sp, #0x14]
+ mov r1, #0xa
+ bl _u32_div_f
+ add r7, r0, #0
+ ldr r0, [sp, #0x14]
+ mov r1, #0xa
+ bl _u32_div_f
+ str r1, [sp, #0x18]
+ cmp r7, #0
+ beq _02254FAE
+ mov r0, #0x14
+ add r2, r6, #0
+ mul r2, r0
+ ldr r0, _02255008 ; =0x02255118
+ lsl r1, r7, #1
+ add r0, r0, r2
+ ldrh r7, [r1, r0]
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r3, r4, #0x18
+ ldr r0, [sp, #0x10]
+ mov r1, #6
+ add r2, r7, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r7, #0xc
+ str r0, [sp, #0xc]
+ lsl r2, r7, #0x10
+ lsl r3, r4, #0x18
+ ldr r0, [sp, #0x10]
+ mov r1, #6
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+_02254FAE:
+ mov r0, #0x14
+ add r3, r6, #0
+ mul r3, r0
+ ldr r0, [sp, #0x18]
+ ldr r2, _02255008 ; =0x02255118
+ lsl r1, r0, #1
+ add r0, r2, r3
+ ldrh r6, [r1, r0]
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r3, r4, #1
+ str r0, [sp, #0xc]
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ mov r1, #6
+ add r2, r6, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r6, #0xc
+ add r3, r4, #1
+ str r0, [sp, #0xc]
+ lsl r2, r6, #0x10
+ lsl r3, r3, #0x18
+ ldr r0, [sp, #0x10]
+ mov r1, #6
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x18
+ bl FUN_02018540
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02255008: .word 0x02255118
+ thumb_func_end MOD45_02254F14
+
+ .section .rodata
+ ; 0x0225500C
+ .incbin "baserom.nds", 0x2961CC, 0x164
+
+ .section .sinit
+ .word MOD45_02254840
diff --git a/arm9/modules/46/asm/module_46.s b/arm9/modules/46/asm/module_46.s
new file mode 100644
index 00000000..600e0c5b
--- /dev/null
+++ b/arm9/modules/46/asm/module_46.s
@@ -0,0 +1,399 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD46_02254840
+MOD46_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD46_02254854
+ ldr r1, _02254850 ; =MOD46_02254908
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD46_02254854
+_02254850: .word MOD46_02254908
+ thumb_func_end MOD46_02254840
+
+ thumb_func_start MOD46_02254854
+MOD46_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x10
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD46_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD46_022548D4
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD46_022548D4
+ thumb_func_end MOD46_02254854
+
+ thumb_func_start MOD46_0225489C
+MOD46_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #8
+ add r1, r5, #4
+ bl MOD46_022549AC
+ cmp r0, #0
+ beq _022548BC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548BC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD46_0225489C
+
+ thumb_func_start MOD46_022548C0
+MOD46_022548C0: ; 0x022548C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD46_022549DC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_022548C0
+
+ thumb_func_start MOD46_022548D4
+MOD46_022548D4: ; 0x022548D4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254900
+ lsl r2, r1, #2
+ ldr r1, _02254904 ; =0x02254AF4
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254900
+ add r0, r4, #0
+ bl MOD46_022548C0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254900:
+ pop {r3, r4, r5, pc}
+ nop
+_02254904: .word 0x02254AF4
+ thumb_func_end MOD46_022548D4
+
+ thumb_func_start MOD46_02254908
+MOD46_02254908: ; 0x02254908
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD46_02254908
+
+ thumb_func_start MOD46_02254910
+MOD46_02254910: ; 0x02254910
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254918
+ b _0225491A
+_02254918:
+ mov r1, #2
+_0225491A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD46_02254910
+
+ thumb_func_start MOD46_02254924
+MOD46_02254924: ; 0x02254924
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254934
+ cmp r0, #1
+ beq _02254944
+ b _0225495E
+_02254934:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD46_022549E8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225495E
+_02254944:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD46_02254A0C
+ cmp r0, #0
+ beq _0225495E
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD46_02254910
+_0225495E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254924
+
+ thumb_func_start MOD46_02254964
+MOD46_02254964: ; 0x02254964
+ push {r3, lr}
+ ldrb r1, [r0, #2]
+ cmp r1, #0
+ beq _02254972
+ mov r1, #2
+ bl MOD46_02254910
+_02254972:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254964
+
+ thumb_func_start MOD46_02254978
+MOD46_02254978: ; 0x02254978
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254988
+ cmp r0, #1
+ beq _02254998
+ b _022549A6
+_02254988:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD46_022549E8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549A6
+_02254998:
+ ldr r0, [r4, #8]
+ bl MOD46_02254A18
+ cmp r0, #0
+ beq _022549A6
+ mov r0, #1
+ pop {r4, pc}
+_022549A6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254978
+
+ thumb_func_start MOD46_022549AC
+MOD46_022549AC: ; 0x022549AC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x30
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _022549D8
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _022549D8
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022549D8:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD46_022549AC
+
+ thumb_func_start MOD46_022549DC
+MOD46_022549DC: ; 0x022549DC
+ push {r3, lr}
+ cmp r0, #0
+ beq _022549E6
+ bl FUN_02016A18
+_022549E6:
+ pop {r3, pc}
+ thumb_func_end MOD46_022549DC
+
+ thumb_func_start MOD46_022549E8
+MOD46_022549E8: ; 0x022549E8
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254A08 ; =0x02254B1C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254A08: .word 0x02254B1C
+ thumb_func_end MOD46_022549E8
+
+ thumb_func_start MOD46_02254A0C
+MOD46_02254A0C: ; 0x02254A0C
+ ldr r3, _02254A14 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254A14: .word MOD20_02253794
+ thumb_func_end MOD46_02254A0C
+
+ thumb_func_start MOD46_02254A18
+MOD46_02254A18: ; 0x02254A18
+ ldr r3, _02254A20 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254A20: .word MOD20_022537B8
+ thumb_func_end MOD46_02254A18
+
+ thumb_func_start MOD46_02254A24
+MOD46_02254A24: ; 0x02254A24
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254A24
+
+ thumb_func_start MOD46_02254A38
+MOD46_02254A38: ; 0x02254A38
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254ACC ; =0x02254B00
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #8
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r3, #6
+ bl FUN_0200687C
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #0xc
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ ldr r0, [r5, #4]
+ mov r1, #0x1a
+ mov r2, #6
+ bl MOD20_02253AA4
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254AD0 ; =0x04001000
+ ldr r0, _02254AD4 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD46_02254A24
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254ACC: .word 0x02254B00
+_02254AD0: .word 0x04001000
+_02254AD4: .word 0xFFFFE0FF
+ thumb_func_end MOD46_02254A38
+
+ thumb_func_start MOD46_02254AD8
+MOD46_02254AD8: ; 0x02254AD8
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD46_02254A24
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254AD8
+
+ .section .rodata
+ ; 0x02254AF4
+ .incbin "baserom.nds", 0x2966b4, 0x4c
+
+ .section .sinit
+ .word MOD46_02254840
diff --git a/arm9/modules/47/asm/module_47.s b/arm9/modules/47/asm/module_47.s
new file mode 100644
index 00000000..c10b696b
--- /dev/null
+++ b/arm9/modules/47/asm/module_47.s
@@ -0,0 +1,1497 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD47_02254840
+MOD47_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD47_02254854
+ ldr r1, _02254850 ; =MOD47_0225491C
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD47_02254854
+_02254850: .word MOD47_0225491C
+ thumb_func_end MOD47_02254840
+
+ thumb_func_start MOD47_02254854
+MOD47_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x24
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD47_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD47_022548E0
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD47_022548E0
+ thumb_func_end MOD47_02254854
+
+ thumb_func_start MOD47_0225489C
+MOD47_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x14
+ add r1, r5, #4
+ bl MOD47_02254D14
+ cmp r0, #0
+ beq _022548C8
+ mov r1, #0
+ strb r1, [r5]
+ strb r1, [r5, #1]
+ add r0, r5, #0
+ strb r1, [r5, #2]
+ add r0, #0x20
+ strb r1, [r0]
+ add r0, r5, #0
+ add r0, #0x21
+ strb r1, [r0]
+ str r4, [r5, #0x18]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548C8:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD47_0225489C
+
+ thumb_func_start MOD47_022548CC
+MOD47_022548CC: ; 0x022548CC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ bl MOD47_02254D6C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD47_022548CC
+
+ thumb_func_start MOD47_022548E0
+MOD47_022548E0: ; 0x022548E0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #6
+ bhs _02254914
+ add r0, r4, #0
+ bl MOD47_02254C6C
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254918 ; =0x022553B8
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254914
+ add r0, r4, #0
+ bl MOD47_022548CC
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x18]
+ bl MOD20_022529A0
+_02254914:
+ pop {r3, r4, r5, pc}
+ nop
+_02254918: .word 0x022553B8
+ thumb_func_end MOD47_022548E0
+
+ thumb_func_start MOD47_0225491C
+MOD47_0225491C: ; 0x0225491C
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD47_0225491C
+
+ thumb_func_start MOD47_02254924
+MOD47_02254924: ; 0x02254924
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _0225492C
+ b _0225492E
+_0225492C:
+ mov r1, #5
+_0225492E:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD47_02254924
+
+ thumb_func_start MOD47_02254938
+MOD47_02254938: ; 0x02254938
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254948
+ cmp r0, #1
+ beq _02254958
+ b _02254972
+_02254948:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl MOD47_02254E24
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254972
+_02254958:
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl MOD47_02254E48
+ cmp r0, #0
+ beq _02254972
+ ldr r0, [r4, #0x18]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD47_02254924
+_02254972:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254938
+
+ thumb_func_start MOD47_02254978
+MOD47_02254978: ; 0x02254978
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _0225498C
+ mov r1, #5
+ bl MOD47_02254924
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_0225498C:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ bne _022549DA
+ bl MOD47_02254BD4
+ cmp r0, #0
+ beq _022549DA
+ add r0, r4, #0
+ bl MOD47_02254D04
+ cmp r0, #0
+ beq _022549D4
+ ldr r0, [r4, #0x18]
+ bl MOD20_02252C38
+ add r5, r0, #0
+ ldr r0, [r4, #0x14]
+ mov r1, #3
+ bl MOD47_02254E24
+ ldr r0, [r5, #0x1c]
+ ldr r0, [r0]
+ bl FUN_02034984
+ cmp r0, #0
+ beq _022549CA
+ add r0, r4, #0
+ mov r1, #3
+ bl MOD47_02254924
+ b _022549DA
+_022549CA:
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD47_02254924
+ b _022549DA
+_022549D4:
+ ldr r0, _022549E0 ; =0x0000066E
+ bl MOD20_02252B28
+_022549DA:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_022549E0: .word 0x0000066E
+ thumb_func_end MOD47_02254978
+
+ thumb_func_start MOD47_022549E4
+MOD47_022549E4: ; 0x022549E4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549F8
+ mov r1, #5
+ bl MOD47_02254924
+ mov r0, #0
+ pop {r4, pc}
+_022549F8:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254A08
+ cmp r1, #1
+ beq _02254A18
+ cmp r1, #2
+ beq _02254A60
+ b _02254AAC
+_02254A08:
+ bl MOD47_02254CCC
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AAC
+_02254A18:
+ bl MOD47_02254AB0
+ cmp r0, #0
+ beq _02254A2C
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD47_02254924
+ mov r0, #0
+ pop {r4, pc}
+_02254A2C:
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0x3c
+ bhs _02254A36
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+_02254A36:
+ add r0, r4, #0
+ bl MOD47_02254CEC
+ cmp r0, #0
+ beq _02254AAC
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0x3c
+ blo _02254AAC
+ add r0, r4, #0
+ bl MOD47_02254C1C
+ ldr r0, [r4, #0x14]
+ mov r1, #6
+ bl MOD47_02254E24
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254AAC
+_02254A60:
+ bl MOD47_02254AB0
+ cmp r0, #0
+ bne _02254A72
+ add r0, r4, #0
+ bl MOD47_02254BD4
+ cmp r0, #0
+ beq _02254A8C
+_02254A72:
+ add r0, r4, #0
+ bl MOD47_02254CFC
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl MOD47_02254E24
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD47_02254924
+ mov r0, #0
+ pop {r4, pc}
+_02254A8C:
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ cmp r0, #0x1e
+ blo _02254AAC
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ add r0, r4, #0
+ bl MOD47_02254C1C
+ cmp r0, #0
+ beq _02254AAC
+ ldr r0, [r4, #0x14]
+ mov r1, #6
+ bl MOD47_02254E24
+_02254AAC:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD47_022549E4
+
+ thumb_func_start MOD47_02254AB0
+MOD47_02254AB0: ; 0x02254AB0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ bl MOD20_02252C08
+ cmp r0, #0
+ beq _02254AC2
+ mov r0, #1
+ pop {r4, pc}
+_02254AC2:
+ ldr r0, [r4, #0x18]
+ bl MOD20_02252C30
+ cmp r0, #0
+ beq _02254AD0
+ mov r0, #1
+ pop {r4, pc}
+_02254AD0:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD47_02254AB0
+
+ thumb_func_start MOD47_02254AD4
+MOD47_02254AD4: ; 0x02254AD4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254AE8
+ mov r1, #5
+ bl MOD47_02254924
+ mov r0, #0
+ pop {r4, pc}
+_02254AE8:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254AF8
+ cmp r1, #1
+ beq _02254B02
+ cmp r1, #2
+ beq _02254B1C
+ b _02254B34
+_02254AF8:
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+_02254B02:
+ ldr r0, [r4, #0x1c]
+ add r0, r0, #1
+ str r0, [r4, #0x1c]
+ cmp r0, #0x3c
+ blo _02254B34
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ bl MOD47_02254E24
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B34
+_02254B1C:
+ bl MOD47_02254BD4
+ cmp r0, #0
+ beq _02254B34
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl MOD47_02254E24
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD47_02254924
+_02254B34:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD47_02254AD4
+
+ thumb_func_start MOD47_02254B38
+MOD47_02254B38: ; 0x02254B38
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254B4C
+ mov r1, #5
+ bl MOD47_02254924
+ mov r0, #0
+ pop {r4, pc}
+_02254B4C:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254B58
+ cmp r1, #1
+ beq _02254B6C
+ b _02254B84
+_02254B58:
+ bl MOD47_02254CFC
+ ldr r0, [r4, #0x14]
+ mov r1, #5
+ bl MOD47_02254E24
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254B84
+_02254B6C:
+ bl MOD47_02254BD4
+ cmp r0, #0
+ beq _02254B84
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl MOD47_02254E24
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD47_02254924
+_02254B84:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD47_02254B38
+
+ thumb_func_start MOD47_02254B88
+MOD47_02254B88: ; 0x02254B88
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _02254B9C
+ cmp r1, #1
+ beq _02254BA6
+ cmp r1, #2
+ beq _02254BC0
+ b _02254BCE
+_02254B9C:
+ bl MOD47_02254CFC
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+_02254BA6:
+ add r0, r4, #0
+ bl MOD47_02254D04
+ cmp r0, #0
+ beq _02254BCE
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl MOD47_02254E24
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254BCE
+_02254BC0:
+ ldr r0, [r4, #0x14]
+ bl MOD47_02254E54
+ cmp r0, #0
+ beq _02254BCE
+ mov r0, #1
+ pop {r4, pc}
+_02254BCE:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254B88
+
+ thumb_func_start MOD47_02254BD4
+MOD47_02254BD4: ; 0x02254BD4
+ push {r3, lr}
+ sub sp, #8
+ ldr r0, [r0, #0x18]
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02254C14
+ add r0, sp, #4
+ add r1, sp, #0
+ bl FUN_02020ACC
+ cmp r0, #0
+ beq _02254C14
+ ldr r0, [sp, #4]
+ sub r0, #0x10
+ cmp r0, #0xbf
+ bhs _02254BFA
+ mov r1, #1
+ b _02254BFC
+_02254BFA:
+ mov r1, #0
+_02254BFC:
+ ldr r0, [sp]
+ sub r0, #0x10
+ cmp r0, #0x9f
+ bhs _02254C08
+ mov r0, #1
+ b _02254C0A
+_02254C08:
+ mov r0, #0
+_02254C0A:
+ tst r0, r1
+ beq _02254C14
+ add sp, #8
+ mov r0, #1
+ pop {r3, pc}
+_02254C14:
+ mov r0, #0
+ add sp, #8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254BD4
+
+ thumb_func_start MOD47_02254C1C
+MOD47_02254C1C: ; 0x02254C1C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ mov r0, #0
+ ldr r5, _02254C68 ; =0x022553D0
+ str r0, [sp]
+ str r0, [sp, #4]
+_02254C2A:
+ ldr r0, [r5, #4]
+ mov r4, #0
+ add r6, r4, #0
+ cmp r0, #0
+ bls _02254C46
+_02254C34:
+ ldr r0, [r5]
+ ldrb r0, [r0, r4]
+ bl FUN_0202F0DC
+ add r6, r6, r0
+ ldr r0, [r5, #4]
+ add r4, r4, #1
+ cmp r4, r0
+ blo _02254C34
+_02254C46:
+ ldr r0, [r7, #4]
+ cmp r6, r0
+ beq _02254C52
+ mov r0, #1
+ str r6, [r7, #4]
+ str r0, [sp]
+_02254C52:
+ ldr r0, [sp, #4]
+ add r5, #8
+ add r0, r0, #1
+ add r7, r7, #4
+ str r0, [sp, #4]
+ cmp r0, #4
+ blo _02254C2A
+ ldr r0, [sp]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254C68: .word 0x022553D0
+ thumb_func_end MOD47_02254C1C
+
+ thumb_func_start MOD47_02254C6C
+MOD47_02254C6C: ; 0x02254C6C
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #3
+ bhi _02254CC8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254C84: ; jump table
+ .short _02254CC8 - _02254C84 - 2 ; case 0
+ .short _02254C8C - _02254C84 - 2 ; case 1
+ .short _02254C9C - _02254C84 - 2 ; case 2
+ .short _02254CBA - _02254C84 - 2 ; case 3
+_02254C8C:
+ bl FUN_02032C28
+ cmp r0, #0
+ beq _02254CC8
+ mov r0, #2
+ add r4, #0x20
+ strb r0, [r4]
+ pop {r4, pc}
+_02254C9C:
+ add r0, r4, #0
+ add r0, #0x21
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _02254CC8
+ bl FUN_02032C0C
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x21
+ strb r1, [r0]
+ mov r0, #3
+ add r4, #0x20
+ strb r0, [r4]
+ pop {r4, pc}
+_02254CBA:
+ bl FUN_02030F40
+ cmp r0, #0
+ bne _02254CC8
+ mov r0, #0
+ add r4, #0x20
+ strb r0, [r4]
+_02254CC8:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254C6C
+
+ thumb_func_start MOD47_02254CCC
+MOD47_02254CCC: ; 0x02254CCC
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02254CE8
+ ldr r0, [r4, #0x18]
+ bl MOD20_02252C40
+ bl FUN_02032BD0
+ mov r0, #1
+ add r4, #0x20
+ strb r0, [r4]
+_02254CE8:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254CCC
+
+ thumb_func_start MOD47_02254CEC
+MOD47_02254CEC: ; 0x02254CEC
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #2
+ bne _02254CF8
+ mov r0, #1
+ bx lr
+_02254CF8:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD47_02254CEC
+
+ thumb_func_start MOD47_02254CFC
+MOD47_02254CFC: ; 0x02254CFC
+ mov r1, #1
+ add r0, #0x21
+ strb r1, [r0]
+ bx lr
+ thumb_func_end MOD47_02254CFC
+
+ thumb_func_start MOD47_02254D04
+MOD47_02254D04: ; 0x02254D04
+ add r0, #0x20
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _02254D10
+ mov r0, #1
+ bx lr
+_02254D10:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD47_02254D04
+
+ thumb_func_start MOD47_02254D14
+MOD47_02254D14: ; 0x02254D14
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x60
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254D62
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x30]
+ ldr r2, _02254D68 ; =0x0000019A
+ mov r0, #1
+ mov r1, #0x1a
+ mov r3, #8
+ bl FUN_0200A86C
+ str r0, [r4, #0x58]
+ mov r0, #0x60
+ mov r1, #8
+ bl FUN_020219F4
+ str r0, [r4, #0x5c]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD47_02254D8C
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254D62:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02254D68: .word 0x0000019A
+ thumb_func_end MOD47_02254D14
+
+ thumb_func_start MOD47_02254D6C
+MOD47_02254D6C: ; 0x02254D6C
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254D8A
+ ldr r0, [r4, #0x5c]
+ bl FUN_02021A20
+ ldr r0, [r4, #0x58]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ bl MOD47_02254DFC
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254D8A:
+ pop {r4, pc}
+ thumb_func_end MOD47_02254D6C
+
+ thumb_func_start MOD47_02254D8C
+MOD47_02254D8C: ; 0x02254D8C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r6, r0, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x63
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r6, #0
+ add r0, #0x44
+ mov r1, #0xc
+ mov r2, #0x61
+ mov r3, #0x62
+ bl MOD20_02253FBC
+ add r0, r6, #0
+ str r0, [sp, #0xc]
+ add r0, #0x44
+ ldr r4, _02254DF8 ; =0x02255410
+ mov r7, #0
+ add r5, r6, #0
+ str r0, [sp, #0xc]
+_02254DC6:
+ ldr r0, [r6, #0x30]
+ ldr r2, [sp, #0xc]
+ add r1, r4, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x34]
+ add r7, r7, #1
+ add r4, #0x10
+ add r5, r5, #4
+ cmp r7, #4
+ blt _02254DC6
+ ldr r0, [r6, #0x38]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r6, #0x3c]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r6, #0x40]
+ mov r1, #1
+ bl MOD20_02253F78
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254DF8: .word 0x02255410
+ thumb_func_end MOD47_02254D8C
+
+ thumb_func_start MOD47_02254DFC
+MOD47_02254DFC: ; 0x02254DFC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02254E04:
+ ldr r1, [r5, #0x34]
+ cmp r1, #0
+ beq _02254E10
+ ldr r0, [r6, #0x30]
+ bl MOD20_02253F14
+_02254E10:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02254E04
+ add r6, #0x44
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254DFC
+
+ thumb_func_start MOD47_02254E24
+MOD47_02254E24: ; 0x02254E24
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254E44 ; =0x02255450
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254E44: .word 0x02255450
+ thumb_func_end MOD47_02254E24
+
+ thumb_func_start MOD47_02254E48
+MOD47_02254E48: ; 0x02254E48
+ ldr r3, _02254E50 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254E50: .word MOD20_02253794
+ thumb_func_end MOD47_02254E48
+
+ thumb_func_start MOD47_02254E54
+MOD47_02254E54: ; 0x02254E54
+ ldr r3, _02254E5C ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254E5C: .word MOD20_022537B8
+ thumb_func_end MOD47_02254E54
+
+ thumb_func_start MOD47_02254E60
+MOD47_02254E60: ; 0x02254E60
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254E60
+
+ thumb_func_start MOD47_02254E74
+MOD47_02254E74: ; 0x02254E74
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254F28 ; =0x022553F4
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x60
+ mov r3, #6
+ bl FUN_0200687C
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x5f
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ mov r3, #2
+ add r1, r5, #0
+ str r3, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ mov r0, #0x14
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r0, r4, #0xb
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, #0x20
+ mov r2, #6
+ bl FUN_02019064
+ add r0, r5, #0
+ add r0, #0x20
+ bl FUN_02019270
+ add r0, r5, #0
+ bl MOD47_022550FC
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254F2C ; =0x04001000
+ ldr r0, _02254F30 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x14]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r6, #0
+ bl MOD47_02254E60
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254F28: .word 0x022553F4
+_02254F2C: .word 0x04001000
+_02254F30: .word 0xFFFFE0FF
+ thumb_func_end MOD47_02254E74
+
+ thumb_func_start MOD47_02254F34
+MOD47_02254F34: ; 0x02254F34
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, #0x20
+ bl FUN_02019178
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD47_02254F34
+
+ thumb_func_start MOD47_02254F58
+MOD47_02254F58: ; 0x02254F58
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl MOD20_02253F78
+ add r0, r4, #0
+ bl MOD47_022550FC
+ ldr r0, _02254F98 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254F98: .word 0x00000663
+ thumb_func_end MOD47_02254F58
+
+ thumb_func_start MOD47_02254F9C
+MOD47_02254F9C: ; 0x02254F9C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x38]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F28
+ add r0, r4, #0
+ bl MOD47_02255184
+ ldr r0, _02254FE4 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254FE4: .word 0x00000663
+ thumb_func_end MOD47_02254F9C
+
+ thumb_func_start MOD47_02254FE8
+MOD47_02254FE8: ; 0x02254FE8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #2
+ bl MOD20_02253F28
+ add r0, r4, #0
+ bl MOD47_022551D8
+ ldr r0, _02255030 ; =0x0000066E
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02255030: .word 0x0000066E
+ thumb_func_end MOD47_02254FE8
+
+ thumb_func_start MOD47_02255034
+MOD47_02255034: ; 0x02255034
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x40]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #2
+ bl MOD20_02253F28
+ add r0, r4, #0
+ bl MOD47_02255250
+ ldr r0, _0225507C ; =0x0000066E
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0225507C: .word 0x0000066E
+ thumb_func_end MOD47_02255034
+
+ thumb_func_start MOD47_02255080
+MOD47_02255080: ; 0x02255080
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ ldr r0, [r4, #0x34]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x38]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x3c]
+ mov r1, #1
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x40]
+ mov r1, #0
+ bl MOD20_02253F78
+ ldr r0, [r4, #0x40]
+ mov r1, #0
+ bl MOD20_02253F28
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD47_022552D8
+ ldr r0, _022550D4 ; =0x00000663
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r4, r5, r6, pc}
+ nop
+_022550D4: .word 0x00000663
+ thumb_func_end MOD47_02255080
+
+ thumb_func_start MOD47_022550D8
+MOD47_022550D8: ; 0x022550D8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD47_022552D8
+ add r0, r5, #0
+ bl MOD47_02254E60
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD47_022550D8
+
+ thumb_func_start MOD47_022550FC
+MOD47_022550FC: ; 0x022550FC
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ add r0, #0x20
+ mov r1, #4
+ bl FUN_02019620
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #0
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r4, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02255180 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #0xa
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r4, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #0x38
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02255180 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ add r4, #0x20
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_02255180: .word 0x00010104
+ thumb_func_end MOD47_022550FC
+
+ thumb_func_start MOD47_02255184
+MOD47_02255184: ; 0x02255184
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ add r0, #0x20
+ mov r1, #4
+ bl FUN_02019620
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #1
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r4, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002F08
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022551D4 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ add r4, #0x20
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_022551D4: .word 0x00010104
+ thumb_func_end MOD47_02255184
+
+ thumb_func_start MOD47_022551D8
+MOD47_022551D8: ; 0x022551D8
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ add r0, #0x20
+ mov r1, #4
+ bl FUN_02019620
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #2
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r4, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0225524C ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #3
+ bl FUN_0200A8E0
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0225524C ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ mov r3, #0x10
+ bl FUN_0201BDE0
+ add r4, #0x20
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_0225524C: .word 0x00010104
+ thumb_func_end MOD47_022551D8
+
+ thumb_func_start MOD47_02255250
+MOD47_02255250: ; 0x02255250
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ add r0, #0x20
+ mov r1, #4
+ bl FUN_02019620
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #2
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r4, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022552D4 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ ldr r0, [r4, #0x58]
+ ldr r2, [r4, #0x5c]
+ mov r1, #4
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r4, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002F08
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _022552D4 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ add r4, #0x20
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_022552D4: .word 0x00010104
+ thumb_func_end MOD47_02255250
+
+ thumb_func_start MOD47_022552D8
+MOD47_022552D8: ; 0x022552D8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r7, r1, #0
+ add r0, #0x20
+ mov r1, #4
+ bl FUN_02019620
+ ldr r0, [r5, #0x58]
+ ldr r2, [r5, #0x5c]
+ mov r1, #5
+ bl FUN_0200A8E0
+ mov r0, #0
+ ldr r1, [r5, #0x5c]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xc0
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02255398 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ ldr r2, [r5, #0x5c]
+ add r0, #0x20
+ bl FUN_0201BDE0
+ mov r0, #0
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ str r0, [sp, #0x14]
+ add r0, #0x20
+ ldr r6, _0225539C ; =0x022553F0
+ mov r4, #0x20
+ str r0, [sp, #0x14]
+_0225532C:
+ ldrb r1, [r6]
+ ldr r0, [r5, #0x58]
+ ldr r2, [r5, #0x5c]
+ bl FUN_0200A8E0
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02255398 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ ldr r2, [r5, #0x5c]
+ mov r3, #8
+ bl FUN_0201BDE0
+ mov r0, #1
+ str r0, [sp]
+ mov r2, #2
+ ldr r0, [r5, #0x5c]
+ ldr r1, [r7]
+ add r3, r2, #0
+ bl FUN_02021B04
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02255398 ; =0x00010104
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ ldr r2, [r5, #0x5c]
+ mov r3, #0xa0
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ add r6, r6, #1
+ add r0, r0, #1
+ add r4, #0x10
+ add r7, r7, #4
+ str r0, [sp, #0x10]
+ cmp r0, #4
+ blt _0225532C
+ add r5, #0x20
+ add r0, r5, #0
+ bl FUN_02019548
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255398: .word 0x00010104
+_0225539C: .word 0x022553F0
+ thumb_func_end MOD47_022552D8
+
+ .section .rodata
+ ; 0x022553A0
+ .incbin "baserom.nds", 0x297360, 0x11C
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_47.SINIT_START
+ .global SDK_OVERLAY.MODULE_47.SINIT_END
+SDK_OVERLAY.MODULE_47.SINIT_START:
+ .word MOD47_02254840
+ .word 0
+SDK_OVERLAY.MODULE_47.SINIT_END:
diff --git a/arm9/modules/48/asm/module_48.s b/arm9/modules/48/asm/module_48.s
new file mode 100644
index 00000000..bcb3b7b4
--- /dev/null
+++ b/arm9/modules/48/asm/module_48.s
@@ -0,0 +1,960 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD48_02254840
+MOD48_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD48_02254854
+ ldr r1, _02254850 ; =MOD48_0225498C
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD48_02254854
+_02254850: .word MOD48_0225498C
+ thumb_func_end MOD48_02254840
+
+ thumb_func_start MOD48_02254854
+MOD48_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x40
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD48_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD48_02254950
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD48_02254950
+ thumb_func_end MOD48_02254854
+
+ thumb_func_start MOD48_0225489C
+MOD48_0225489C: ; 0x0225489C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0
+ add r0, r1, #0
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ bl MOD20_02252C38
+ add r6, r0, #0
+ bl MOD06_02245824
+ str r0, [r7, #8]
+ cmp r0, #0
+ beq _022548C0
+ add r0, r6, #0
+ bl MOD06_0224582C
+ b _022548C2
+_022548C0:
+ mov r0, #0
+_022548C2:
+ str r0, [r7, #4]
+ mov r4, #0
+ add r5, r7, #0
+_022548C8:
+ lsl r1, r4, #0x18
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ bl MOD06_022457F8
+ lsl r1, r4, #0x18
+ str r0, [r5, #0x18]
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ bl MOD06_022457CC
+ str r0, [r5, #0xc]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _022548C8
+ add r0, r6, #0
+ bl MOD06_022457A8
+ str r0, [r7, #0x24]
+ add r0, r7, #0
+ ldr r2, [sp, #8]
+ add r0, #0x2c
+ add r1, r7, #4
+ bl MOD48_02254AA0
+ cmp r0, #0
+ beq _0225492A
+ mov r0, #0
+ strb r0, [r7]
+ strb r0, [r7, #1]
+ strb r0, [r7, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254930 ; =0x02254F60
+ ldr r2, _02254934 ; =MOD48_02254994
+ mov r1, #3
+ add r3, r7, #0
+ bl MOD20_02254130
+ str r0, [r7, #0x34]
+ mov r0, #0
+ str r0, [r7, #0x38]
+ str r0, [r7, #0x3c]
+ ldr r0, [sp, #4]
+ add sp, #0xc
+ str r0, [r7, #0x30]
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_0225492A:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254930: .word 0x02254F60
+_02254934: .word MOD48_02254994
+ thumb_func_end MOD48_0225489C
+
+ thumb_func_start MOD48_02254938
+MOD48_02254938: ; 0x02254938
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x34]
+ bl MOD20_02254198
+ ldr r0, [r4, #0x2c]
+ bl MOD48_02254AD4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD48_02254938
+
+ thumb_func_start MOD48_02254950
+MOD48_02254950: ; 0x02254950
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254986
+ ldr r0, [r4, #0x30]
+ ldr r1, [r4, #0x34]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254988 ; =0x02254F6C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254986
+ add r0, r4, #0
+ bl MOD48_02254938
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x30]
+ bl MOD20_022529A0
+_02254986:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254988: .word 0x02254F6C
+ thumb_func_end MOD48_02254950
+
+ thumb_func_start MOD48_0225498C
+MOD48_0225498C: ; 0x0225498C
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD48_0225498C
+
+ thumb_func_start MOD48_02254994
+MOD48_02254994: ; 0x02254994
+ str r0, [r3, #0x3c]
+ str r1, [r3, #0x38]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD48_02254994
+
+ thumb_func_start MOD48_0225499C
+MOD48_0225499C: ; 0x0225499C
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549A4
+ b _022549A6
+_022549A4:
+ mov r1, #2
+_022549A6:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD48_0225499C
+
+ thumb_func_start MOD48_022549B0
+MOD48_022549B0: ; 0x022549B0
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549C0
+ cmp r0, #1
+ beq _022549D0
+ b _022549EA
+_022549C0:
+ ldr r0, [r4, #0x2c]
+ mov r1, #0
+ bl MOD48_02254AE0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549EA
+_022549D0:
+ ldr r0, [r4, #0x2c]
+ mov r1, #0
+ bl MOD48_02254B04
+ cmp r0, #0
+ beq _022549EA
+ ldr r0, [r4, #0x30]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD48_0225499C
+_022549EA:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD48_022549B0
+
+ thumb_func_start MOD48_022549F0
+MOD48_022549F0: ; 0x022549F0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254A04
+ mov r1, #2
+ bl MOD48_0225499C
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02254A04:
+ ldr r0, [r4, #0x30]
+ bl MOD20_02252C38
+ add r5, r0, #0
+ bl MOD06_02245824
+ str r0, [r4, #8]
+ cmp r0, #0
+ bne _02254A1A
+ mov r0, #0
+ b _02254A20
+_02254A1A:
+ add r0, r5, #0
+ bl MOD06_0224582C
+_02254A20:
+ ldr r1, [r4, #4]
+ cmp r0, r1
+ beq _02254A34
+ str r0, [r4, #4]
+ ldr r0, [r4, #0x2c]
+ mov r1, #2
+ bl MOD48_02254AE0
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_02254A34:
+ ldr r0, [r4, #0x2c]
+ mov r1, #3
+ bl MOD48_02254B04
+ cmp r0, #0
+ beq _02254A66
+ ldr r0, [r4, #0x38]
+ cmp r0, #1
+ bne _02254A66
+ ldr r1, [r4, #0x3c]
+ ldr r0, [r4, #0x24]
+ cmp r1, r0
+ bhs _02254A62
+ lsl r0, r1, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x18]
+ cmp r0, #0
+ beq _02254A62
+ str r1, [r4, #0x28]
+ ldr r0, [r4, #0x2c]
+ mov r1, #3
+ bl MOD48_02254AE0
+_02254A62:
+ mov r0, #0
+ str r0, [r4, #0x38]
+_02254A66:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD48_022549F0
+
+ thumb_func_start MOD48_02254A6C
+MOD48_02254A6C: ; 0x02254A6C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A7C
+ cmp r0, #1
+ beq _02254A8C
+ b _02254A9A
+_02254A7C:
+ ldr r0, [r4, #0x2c]
+ mov r1, #1
+ bl MOD48_02254AE0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A9A
+_02254A8C:
+ ldr r0, [r4, #0x2c]
+ bl MOD48_02254B10
+ cmp r0, #0
+ beq _02254A9A
+ mov r0, #1
+ pop {r4, pc}
+_02254A9A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD48_02254A6C
+
+ thumb_func_start MOD48_02254AA0
+MOD48_02254AA0: ; 0x02254AA0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0xb0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254ACE
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254ACE:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD48_02254AA0
+
+ thumb_func_start MOD48_02254AD4
+MOD48_02254AD4: ; 0x02254AD4
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254ADE
+ bl FUN_02016A18
+_02254ADE:
+ pop {r3, pc}
+ thumb_func_end MOD48_02254AD4
+
+ thumb_func_start MOD48_02254AE0
+MOD48_02254AE0: ; 0x02254AE0
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254B00 ; =0x02254F94
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254B00: .word 0x02254F94
+ thumb_func_end MOD48_02254AE0
+
+ thumb_func_start MOD48_02254B04
+MOD48_02254B04: ; 0x02254B04
+ ldr r3, _02254B0C ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254B0C: .word MOD20_02253794
+ thumb_func_end MOD48_02254B04
+
+ thumb_func_start MOD48_02254B10
+MOD48_02254B10: ; 0x02254B10
+ ldr r3, _02254B18 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254B18: .word MOD20_022537B8
+ thumb_func_end MOD48_02254B10
+
+ thumb_func_start MOD48_02254B1C
+MOD48_02254B1C: ; 0x02254B1C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD48_02254B1C
+
+ thumb_func_start MOD48_02254B30
+MOD48_02254B30: ; 0x02254B30
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _02254BBC ; =0x02254F78
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x7a
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x79
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD48_02254D2C
+ ldr r1, _02254BC0 ; =0x04001000
+ ldr r0, _02254BC4 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r5, #0
+ bl MOD48_02254B1C
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254BBC: .word 0x02254F78
+_02254BC0: .word 0x04001000
+_02254BC4: .word 0xFFFFE0FF
+ thumb_func_end MOD48_02254B30
+
+ thumb_func_start MOD48_02254BC8
+MOD48_02254BC8: ; 0x02254BC8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ bl MOD48_02254EC0
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD48_02254B1C
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD48_02254BC8
+
+ thumb_func_start MOD48_02254BE8
+MOD48_02254BE8: ; 0x02254BE8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r0, r7, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r7, #0
+ bl MOD20_022538A4
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _02254C3C
+ mov r1, #0
+ add r2, r1, #0
+ bl FUN_0206B6D4
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xac
+ mov r2, #1
+ ldr r0, [r0]
+ add r1, sp, #0
+ add r3, r2, #0
+ bl MOD20_02253A04
+ mov r1, #0
+ ldr r0, [r4]
+ add r2, r1, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [r5, #0x24]
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ add r5, #0x34
+ ldr r1, [r4, #4]
+ add r0, r5, #0
+ bl MOD48_02254EF4
+ b _02254C58
+_02254C3C:
+ ldr r0, [r5, #0x24]
+ mov r1, #1
+ bl MOD20_02253F78
+ mov r4, #0
+ mov r6, #1
+_02254C48:
+ ldr r0, [r5, #0x34]
+ add r1, r6, #0
+ bl MOD20_02253F78
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _02254C48
+_02254C58:
+ add r0, r7, #0
+ bl MOD48_02254B1C
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD48_02254BE8
+
+ thumb_func_start MOD48_02254C60
+MOD48_02254C60: ; 0x02254C60
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r1, #0
+ add r0, r7, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r7, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ add r0, r7, #0
+ bl MOD20_022538AC
+ add r5, r0, #0
+ beq _02254C84
+ cmp r5, #0x10
+ beq _02254CFE
+ b _02254CC6
+_02254C84:
+ ldr r0, [r6, #0x24]
+ add r2, r4, #0
+ add r0, r0, #1
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r1, [r0, #0x24]
+ add r0, r4, #0
+ add r0, #0x9c
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x9c
+ add r1, r4, #0
+ ldr r0, [r0]
+ add r1, #0xa4
+ add r2, #0xa0
+ bl MOD20_02253F6C
+ ldr r0, [r6, #0x24]
+ lsl r0, r0, #2
+ add r0, r6, r0
+ ldr r0, [r0, #8]
+ bl MOD20_02252B48
+ add r0, r4, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ mov r1, #6
+ bl MOD20_02253F28
+ add r0, r7, #0
+ bl MOD20_022538B0
+ add r5, r5, #1
+_02254CC6:
+ add r0, r4, #0
+ add r1, r4, #0
+ add r4, #0xa0
+ mov r3, #0x2d
+ ldr r2, [r4]
+ lsl r3, r3, #0xa
+ add r4, r5, #0
+ mul r4, r3
+ mov r3, #2
+ lsl r3, r3, #0xa
+ add r3, r4, r3
+ asr r3, r3, #0xc
+ lsl r4, r3, #2
+ ldr r3, _02254D28 ; =0x020EDF50
+ add r0, #0x9c
+ ldr r4, [r3, r4]
+ add r1, #0xa4
+ mov r3, #0x18
+ mul r3, r4
+ ldr r0, [r0]
+ ldr r1, [r1]
+ sub r2, r2, r3
+ bl MOD20_02253F64
+ add r0, r7, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, r6, r7, pc}
+_02254CFE:
+ add r0, r4, #0
+ add r1, r4, #0
+ add r2, r4, #0
+ add r0, #0x9c
+ add r1, #0xa4
+ add r2, #0xa0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl MOD20_02253F64
+ add r4, #0x9c
+ ldr r0, [r4]
+ mov r1, #4
+ bl MOD20_02253F28
+ add r0, r7, #0
+ bl MOD48_02254B1C
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254D28: .word 0x020EDF50
+ thumb_func_end MOD48_02254C60
+
+ thumb_func_start MOD48_02254D2C
+MOD48_02254D2C: ; 0x02254D2C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ add r4, r0, #0
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ str r1, [sp, #0xc]
+ add r0, #0x78
+ mov r1, #0xc
+ mov r2, #5
+ mov r3, #6
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0x64
+ mov r1, #0xc
+ mov r2, #0x7b
+ mov r3, #0x7c
+ bl MOD20_02253FBC
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x7d
+ bl FUN_02006A34
+ add r1, r4, #0
+ lsr r0, r0, #5
+ add r1, #0xac
+ str r0, [r1]
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0xc]
+ ldr r2, [sp, #0xc]
+ ldr r0, [r0]
+ mov r1, #0
+ str r0, [sp, #0x30]
+ add r3, sp, #0x30
+_02254D82:
+ ldr r0, [r2, #8]
+ add r1, r1, #1
+ str r0, [r3, #4]
+ add r2, r2, #4
+ add r3, r3, #4
+ cmp r1, #3
+ blt _02254D82
+ mov r7, #0
+ add r5, sp, #0x30
+ add r6, r4, #0
+_02254D96:
+ ldr r0, [r5]
+ cmp r0, #0
+ bne _02254D9E
+ mov r0, #1
+_02254D9E:
+ mov r1, #0
+ add r2, r1, #0
+ bl FUN_0206B6D4
+ add r1, r6, #0
+ add r1, #0x8c
+ add r7, r7, #1
+ str r0, [r1]
+ add r5, r5, #4
+ add r6, r6, #4
+ cmp r7, #4
+ blt _02254D96
+ add r1, r4, #0
+ ldr r0, [sp, #0x28]
+ add r1, #0x8c
+ mov r2, #4
+ mov r3, #1
+ bl MOD20_02253A04
+ mov r0, #1
+ bl MOD20_022539C4
+ mov r2, #0
+ add r0, r2, #0
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+_02254DD2:
+ ldr r0, [sp, #0x10]
+ add r2, r2, #1
+ str r0, [r1, #0x24]
+ add r1, r1, #4
+ cmp r2, #0x10
+ blt _02254DD2
+ ldr r0, _02254EBC ; =0x02254FD0
+ str r4, [sp, #0x20]
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x10]
+ mov r6, #4
+ str r0, [sp, #0x1c]
+ add r0, sp, #0x30
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0xc]
+ str r0, [sp, #0x14]
+_02254DF2:
+ add r2, r4, #0
+ ldr r0, [r4, #0x20]
+ ldr r1, [sp, #0x24]
+ add r2, #0x78
+ bl MOD20_02253E74
+ ldr r1, [sp, #0x20]
+ ldr r2, [sp, #0x28]
+ str r0, [r1, #0x24]
+ ldr r1, [sp, #0x1c]
+ add r1, r2, r1
+ bl MOD20_02253FA4
+ add r0, r4, #0
+ str r0, [sp, #0x2c]
+ add r0, #0x64
+ mov r5, #0
+ str r0, [sp, #0x2c]
+_02254E16:
+ add r7, r5, r6
+ ldr r1, _02254EBC ; =0x02254FD0
+ lsl r2, r7, #4
+ add r1, r1, r2
+ ldr r0, [r4, #0x20]
+ ldr r2, [sp, #0x2c]
+ bl MOD20_02253E74
+ lsl r1, r7, #2
+ add r1, r4, r1
+ add r5, r5, #1
+ str r0, [r1, #0x24]
+ cmp r5, #3
+ blt _02254E16
+ ldr r0, [sp, #0x18]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _02254E5E
+ ldr r0, [sp, #0x20]
+ mov r1, #1
+ ldr r0, [r0, #0x24]
+ bl MOD20_02253F78
+ mov r5, #0
+ mov r7, #1
+_02254E48:
+ add r0, r5, r6
+ lsl r0, r0, #2
+ add r0, r4, r0
+ ldr r0, [r0, #0x24]
+ add r1, r7, #0
+ bl MOD20_02253F78
+ add r5, r5, #1
+ cmp r5, #3
+ blt _02254E48
+ b _02254E8E
+_02254E5E:
+ mov r1, #0
+ add r2, r1, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [sp, #0x20]
+ add r1, r1, #1
+ ldr r0, [r0, #0x24]
+ bl MOD20_02253F9C
+ ldr r0, [sp, #0x10]
+ cmp r0, #0
+ bne _02254E7E
+ ldr r0, [sp, #0xc]
+ ldr r1, [r0, #4]
+ b _02254E82
+_02254E7E:
+ ldr r0, [sp, #0x14]
+ ldr r1, [r0, #0x10]
+_02254E82:
+ add r2, r4, #0
+ add r2, #0x24
+ lsl r0, r6, #2
+ add r0, r2, r0
+ bl MOD48_02254EF4
+_02254E8E:
+ ldr r0, [sp, #0x24]
+ add r6, r6, #3
+ add r0, #0x10
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x20]
+ add r0, r0, #4
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ add r0, #0x20
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r0, r0, #4
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #4
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ add r0, r0, #1
+ str r0, [sp, #0x10]
+ cmp r0, #4
+ blt _02254DF2
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254EBC: .word 0x02254FD0
+ thumb_func_end MOD48_02254D2C
+
+ thumb_func_start MOD48_02254EC0
+MOD48_02254EC0: ; 0x02254EC0
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+ add r7, r4, #0
+_02254ECA:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254ED8
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+ str r7, [r5, #0x24]
+_02254ED8:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x10
+ blt _02254ECA
+ add r0, r6, #0
+ add r0, #0x78
+ bl MOD20_02254014
+ add r6, #0x64
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD48_02254EC0
+
+ thumb_func_start MOD48_02254EF4
+MOD48_02254EF4: ; 0x02254EF4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ str r1, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r1, _02254F5C ; =0x000003E7
+ ldr r0, [sp]
+ cmp r0, r1
+ bls _02254F0A
+ str r1, [sp]
+_02254F0A:
+ mov r4, #0
+ mov r6, #0x64
+_02254F0E:
+ ldr r0, [sp]
+ add r1, r6, #0
+ bl _u32_div_f
+ add r7, r0, #0
+ ldr r0, [sp, #4]
+ cmp r0, #1
+ beq _02254F26
+ cmp r7, #0
+ bne _02254F26
+ cmp r4, #2
+ bne _02254F34
+_02254F26:
+ ldr r0, [r5]
+ add r1, r7, #0
+ bl MOD20_02253F28
+ mov r0, #1
+ str r0, [sp, #4]
+ b _02254F3C
+_02254F34:
+ ldr r0, [r5]
+ mov r1, #1
+ bl MOD20_02253F78
+_02254F3C:
+ add r1, r7, #0
+ ldr r0, [sp]
+ mul r1, r6
+ sub r0, r0, r1
+ str r0, [sp]
+ add r0, r6, #0
+ mov r1, #0xa
+ add r5, r5, #4
+ add r4, r4, #1
+ bl _s32_div_f
+ add r6, r0, #0
+ cmp r4, #3
+ blt _02254F0E
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254F5C: .word 0x000003E7
+ thumb_func_end MOD48_02254EF4
+
+ .section .rodata
+ ; 0x02254F60
+ .incbin "baserom.nds", 0x297d20, 0x170
+
+ .section .sinit
+ .word MOD48_02254840
diff --git a/arm9/modules/49/asm/module_49.s b/arm9/modules/49/asm/module_49.s
new file mode 100644
index 00000000..46ab8f05
--- /dev/null
+++ b/arm9/modules/49/asm/module_49.s
@@ -0,0 +1,638 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD49_02254840
+MOD49_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD49_02254854
+ ldr r1, _02254850 ; =MOD49_02254974
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD49_02254854
+_02254850: .word MOD49_02254974
+ thumb_func_end MOD49_02254840
+
+ thumb_func_start MOD49_02254854
+MOD49_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x7c
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD49_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD49_02254938
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD49_02254938
+ thumb_func_end MOD49_02254854
+
+ thumb_func_start MOD49_0225489C
+MOD49_0225489C: ; 0x0225489C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ add r0, r1, #0
+ str r1, [sp, #4]
+ str r2, [sp, #8]
+ bl MOD20_02252C3C
+ str r0, [sp, #0xc]
+ bl FUN_0204C158
+ mov r6, #0
+ str r0, [r7, #0x64]
+ cmp r0, #0
+ bls _022548D8
+ add r4, r7, #0
+ add r4, #8
+ add r5, r7, #4
+_022548C0:
+ ldr r0, [sp, #0xc]
+ add r1, r6, #0
+ add r2, r5, #0
+ add r3, r4, #0
+ bl FUN_0204C174
+ ldr r0, [r7, #0x64]
+ add r6, r6, #1
+ add r4, #8
+ add r5, #8
+ cmp r6, r0
+ blo _022548C0
+_022548D8:
+ add r0, r7, #0
+ ldr r2, [sp, #8]
+ add r0, #0x68
+ add r1, r7, #4
+ bl MOD49_02254A44
+ cmp r0, #0
+ beq _02254912
+ mov r0, #0
+ strb r0, [r7]
+ strb r0, [r7, #1]
+ strb r0, [r7, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254918 ; =0x02254CF0
+ ldr r2, _0225491C ; =MOD49_0225497C
+ mov r1, #0xc
+ add r3, r7, #0
+ bl MOD20_02254130
+ str r0, [r7, #0x70]
+ mov r0, #0
+ str r0, [r7, #0x74]
+ str r0, [r7, #0x78]
+ ldr r0, [sp, #4]
+ add sp, #0x10
+ str r0, [r7, #0x6c]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_02254912:
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254918: .word 0x02254CF0
+_0225491C: .word MOD49_0225497C
+ thumb_func_end MOD49_0225489C
+
+ thumb_func_start MOD49_02254920
+MOD49_02254920: ; 0x02254920
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x70]
+ bl MOD20_02254198
+ ldr r0, [r4, #0x68]
+ bl MOD49_02254A78
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD49_02254920
+
+ thumb_func_start MOD49_02254938
+MOD49_02254938: ; 0x02254938
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _0225496E
+ ldr r0, [r4, #0x6c]
+ ldr r1, [r4, #0x70]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254970 ; =0x02254CE4
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225496E
+ add r0, r4, #0
+ bl MOD49_02254920
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x6c]
+ bl MOD20_022529A0
+_0225496E:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254970: .word 0x02254CE4
+ thumb_func_end MOD49_02254938
+
+ thumb_func_start MOD49_02254974
+MOD49_02254974: ; 0x02254974
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD49_02254974
+
+ thumb_func_start MOD49_0225497C
+MOD49_0225497C: ; 0x0225497C
+ str r0, [r3, #0x78]
+ str r1, [r3, #0x74]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD49_0225497C
+
+ thumb_func_start MOD49_02254984
+MOD49_02254984: ; 0x02254984
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _0225498C
+ b _0225498E
+_0225498C:
+ mov r1, #2
+_0225498E:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD49_02254984
+
+ thumb_func_start MOD49_02254998
+MOD49_02254998: ; 0x02254998
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549A8
+ cmp r0, #1
+ beq _022549B8
+ b _022549D2
+_022549A8:
+ ldr r0, [r4, #0x68]
+ mov r1, #0
+ bl MOD49_02254A84
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549D2
+_022549B8:
+ ldr r0, [r4, #0x68]
+ mov r1, #0
+ bl MOD49_02254AA8
+ cmp r0, #0
+ beq _022549D2
+ ldr r0, [r4, #0x6c]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD49_02254984
+_022549D2:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD49_02254998
+
+ thumb_func_start MOD49_022549D8
+MOD49_022549D8: ; 0x022549D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549EC
+ mov r1, #2
+ bl MOD49_02254984
+ mov r0, #0
+ pop {r4, pc}
+_022549EC:
+ ldr r0, [r4, #0x74]
+ cmp r0, #1
+ bne _02254A0C
+ ldr r1, [r4, #0x78]
+ mov r0, #0xb
+ sub r1, r0, r1
+ ldr r0, [r4, #0x64]
+ cmp r1, r0
+ bhs _02254A08
+ lsl r0, r1, #3
+ add r0, r4, r0
+ ldr r0, [r0, #4]
+ bl MOD20_02252B48
+_02254A08:
+ mov r0, #0
+ str r0, [r4, #0x74]
+_02254A0C:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD49_022549D8
+
+ thumb_func_start MOD49_02254A10
+MOD49_02254A10: ; 0x02254A10
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A20
+ cmp r0, #1
+ beq _02254A30
+ b _02254A3E
+_02254A20:
+ ldr r0, [r4, #0x68]
+ mov r1, #1
+ bl MOD49_02254A84
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A3E
+_02254A30:
+ ldr r0, [r4, #0x68]
+ bl MOD49_02254AB4
+ cmp r0, #0
+ beq _02254A3E
+ mov r0, #1
+ pop {r4, pc}
+_02254A3E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD49_02254A10
+
+ thumb_func_start MOD49_02254A44
+MOD49_02254A44: ; 0x02254A44
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x98
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254A72
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254A72:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD49_02254A44
+
+ thumb_func_start MOD49_02254A78
+MOD49_02254A78: ; 0x02254A78
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254A82
+ bl FUN_02016A18
+_02254A82:
+ pop {r3, pc}
+ thumb_func_end MOD49_02254A78
+
+ thumb_func_start MOD49_02254A84
+MOD49_02254A84: ; 0x02254A84
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254AA4 ; =0x02254D3C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254AA4: .word 0x02254D3C
+ thumb_func_end MOD49_02254A84
+
+ thumb_func_start MOD49_02254AA8
+MOD49_02254AA8: ; 0x02254AA8
+ ldr r3, _02254AB0 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254AB0: .word MOD20_02253794
+ thumb_func_end MOD49_02254AA8
+
+ thumb_func_start MOD49_02254AB4
+MOD49_02254AB4: ; 0x02254AB4
+ ldr r3, _02254ABC ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254ABC: .word MOD20_022537B8
+ thumb_func_end MOD49_02254AB4
+
+ thumb_func_start MOD49_02254AC0
+MOD49_02254AC0: ; 0x02254AC0
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD49_02254AC0
+
+ thumb_func_start MOD49_02254AD4
+MOD49_02254AD4: ; 0x02254AD4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r7, r1, #0
+ add r0, r7, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r7, #0
+ bl MOD20_022538A4
+ str r0, [sp, #0x14]
+ ldr r0, [r5, #4]
+ ldr r2, _02254BD0 ; =0x02254D20
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ mov r2, #4
+ mov r3, #1
+ bl FUN_02017F48
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ mov r3, #2
+ str r3, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, sp, #0x1c
+ mov r2, #6
+ bl FUN_02019064
+ add r0, sp, #0x1c
+ mov r1, #4
+ bl FUN_02019620
+ add r0, sp, #0x1c
+ bl FUN_02019270
+ ldr r1, _02254BD4 ; =0x00000197
+ mov r0, #0x1a
+ mov r2, #0
+ mov r3, #8
+ bl FUN_0200A738
+ add r4, r0, #0
+ beq _02254B94
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0
+ add r6, r0, #0
+ mov r3, #0xc0
+ sub r3, r3, r6
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02254BD8 ; =0x00010104
+ add r2, r4, #0
+ str r0, [sp, #8]
+ add r0, sp, #0x1c
+ lsr r3, r3, #1
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, sp, #0x1c
+ bl FUN_02019548
+ add r0, r4, #0
+ bl FUN_02021A20
+_02254B94:
+ add r0, sp, #0x1c
+ bl FUN_02019178
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, [sp, #0x14]
+ add r0, r5, #0
+ bl MOD49_02254C04
+ ldr r1, _02254BDC ; =0x04001000
+ ldr r0, _02254BE0 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x18]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r7, #0
+ bl MOD49_02254AC0
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254BD0: .word 0x02254D20
+_02254BD4: .word 0x00000197
+_02254BD8: .word 0x00010104
+_02254BDC: .word 0x04001000
+_02254BE0: .word 0xFFFFE0FF
+ thumb_func_end MOD49_02254AD4
+
+ thumb_func_start MOD49_02254BE4
+MOD49_02254BE4: ; 0x02254BE4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ bl MOD49_02254CB8
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD49_02254AC0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD49_02254BE4
+
+ thumb_func_start MOD49_02254C04
+MOD49_02254C04: ; 0x02254C04
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #4]
+ mov r0, #0
+ str r1, [sp, #8]
+ bl MOD20_022539C4
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ mov r1, #0xc
+ add r0, #0x54
+ mov r2, #5
+ mov r3, #6
+ bl MOD20_02253FBC
+ ldr r0, [sp, #8]
+ mov r4, #0
+ ldr r0, [r0, #0x60]
+ cmp r0, #0
+ bls _02254C86
+ ldr r5, [sp, #4]
+ ldr r6, [sp, #8]
+ add r0, r5, #0
+ str r0, [sp, #0x10]
+ add r0, #0x54
+ ldr r7, _02254CB4 ; =0x02254D60
+ str r4, [sp, #0xc]
+ str r0, [sp, #0x10]
+_02254C3E:
+ ldr r0, [r6]
+ ldr r2, [r6, #4]
+ mov r1, #0
+ bl FUN_0206B6D4
+ str r0, [r5, #0x68]
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #0x10]
+ ldr r0, [r0, #0x20]
+ add r1, r7, #0
+ bl MOD20_02253E74
+ ldr r1, [sp, #0xc]
+ str r0, [r5, #0x24]
+ bl MOD20_02253FA4
+ ldr r0, [r6]
+ ldr r1, [r6, #4]
+ mov r2, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [r5, #0x24]
+ bl MOD20_02253F9C
+ ldr r0, [sp, #0xc]
+ add r4, r4, #1
+ add r0, #0x10
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #8]
+ add r6, #8
+ ldr r0, [r0, #0x60]
+ add r5, r5, #4
+ add r7, #0x10
+ cmp r4, r0
+ blo _02254C3E
+_02254C86:
+ cmp r4, #0xc
+ bge _02254C9C
+ ldr r0, [sp, #4]
+ lsl r1, r4, #2
+ add r1, r0, r1
+ mov r0, #0
+_02254C92:
+ add r4, r4, #1
+ str r0, [r1, #0x24]
+ add r1, r1, #4
+ cmp r4, #0xc
+ blt _02254C92
+_02254C9C:
+ ldr r2, [sp, #8]
+ ldr r1, [sp, #4]
+ mov r0, #0
+ add r1, #0x68
+ ldr r2, [r2, #0x60]
+ add r3, r0, #0
+ str r1, [sp, #4]
+ bl MOD20_02253A04
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02254CB4: .word 0x02254D60
+ thumb_func_end MOD49_02254C04
+
+ thumb_func_start MOD49_02254CB8
+MOD49_02254CB8: ; 0x02254CB8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+ add r7, r4, #0
+_02254CC2:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254CD0
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+ str r7, [r5, #0x24]
+_02254CD0:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xc
+ blt _02254CC2
+ add r6, #0x54
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD49_02254CB8
+
+ .section .rodata
+ ; 0x02254CE4
+ .incbin "baserom.nds", 0x2984a4, 0x13C
+
+ .section .sinit
+ .word MOD49_02254840
diff --git a/arm9/modules/50/asm/module_50.s b/arm9/modules/50/asm/module_50.s
new file mode 100644
index 00000000..734eadea
--- /dev/null
+++ b/arm9/modules/50/asm/module_50.s
@@ -0,0 +1,409 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD50_02254840
+MOD50_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD50_02254854
+ ldr r1, _02254850 ; =MOD50_02254908
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD50_02254854
+_02254850: .word MOD50_02254908
+ thumb_func_end MOD50_02254840
+
+ thumb_func_start MOD50_02254854
+MOD50_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov r0, #8
+ mov r1, #0x10
+ str r2, [sp]
+ add r5, r3, #0
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254894
+ ldr r2, [sp]
+ add r1, r7, #0
+ add r3, r5, #0
+ bl MOD50_0225489C
+ cmp r0, #0
+ beq _0225488E
+ ldr r0, _02254898 ; =MOD50_022548D4
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488E
+ str r4, [r6]
+ str r5, [r4, #4]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488E:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254894:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254898: .word MOD50_022548D4
+ thumb_func_end MOD50_02254854
+
+ thumb_func_start MOD50_0225489C
+MOD50_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #8
+ add r1, r5, #4
+ bl MOD50_022549AC
+ cmp r0, #0
+ beq _022548BC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548BC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD50_0225489C
+
+ thumb_func_start MOD50_022548C0
+MOD50_022548C0: ; 0x022548C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD50_022549E0
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD50_022548C0
+
+ thumb_func_start MOD50_022548D4
+MOD50_022548D4: ; 0x022548D4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254900
+ lsl r2, r1, #2
+ ldr r1, _02254904 ; =0x02254B04
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254900
+ add r0, r4, #0
+ bl MOD50_022548C0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254900:
+ pop {r3, r4, r5, pc}
+ nop
+_02254904: .word 0x02254B04
+ thumb_func_end MOD50_022548D4
+
+ thumb_func_start MOD50_02254908
+MOD50_02254908: ; 0x02254908
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD50_02254908
+
+ thumb_func_start MOD50_02254910
+MOD50_02254910: ; 0x02254910
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254918
+ b _0225491A
+_02254918:
+ mov r1, #2
+_0225491A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD50_02254910
+
+ thumb_func_start MOD50_02254924
+MOD50_02254924: ; 0x02254924
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254934
+ cmp r0, #1
+ beq _02254944
+ b _0225495E
+_02254934:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD50_022549F8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225495E
+_02254944:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD50_02254A1C
+ cmp r0, #0
+ beq _0225495E
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD50_02254910
+_0225495E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD50_02254924
+
+ thumb_func_start MOD50_02254964
+MOD50_02254964: ; 0x02254964
+ push {r3, lr}
+ ldrb r1, [r0, #2]
+ cmp r1, #0
+ beq _02254972
+ mov r1, #2
+ bl MOD50_02254910
+_02254972:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD50_02254964
+
+ thumb_func_start MOD50_02254978
+MOD50_02254978: ; 0x02254978
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254988
+ cmp r0, #1
+ beq _02254998
+ b _022549A6
+_02254988:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD50_022549F8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549A6
+_02254998:
+ ldr r0, [r4, #8]
+ bl MOD50_02254A28
+ cmp r0, #0
+ beq _022549A6
+ mov r0, #1
+ pop {r4, pc}
+_022549A6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD50_02254978
+
+ thumb_func_start MOD50_022549AC
+MOD50_022549AC: ; 0x022549AC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x30
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _022549DA
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ mov r0, #8
+ str r6, [r4]
+ bl FUN_02016B94
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _022549DA
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022549DA:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD50_022549AC
+
+ thumb_func_start MOD50_022549E0
+MOD50_022549E0: ; 0x022549E0
+ push {r4, lr}
+ add r4, r0, #0
+ beq _022549F6
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _022549F0
+ bl FUN_02016A18
+_022549F0:
+ add r0, r4, #0
+ bl FUN_02016A18
+_022549F6:
+ pop {r4, pc}
+ thumb_func_end MOD50_022549E0
+
+ thumb_func_start MOD50_022549F8
+MOD50_022549F8: ; 0x022549F8
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254A18 ; =0x02254B2C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254A18: .word 0x02254B2C
+ thumb_func_end MOD50_022549F8
+
+ thumb_func_start MOD50_02254A1C
+MOD50_02254A1C: ; 0x02254A1C
+ ldr r3, _02254A24 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254A24: .word MOD20_02253794
+ thumb_func_end MOD50_02254A1C
+
+ thumb_func_start MOD50_02254A28
+MOD50_02254A28: ; 0x02254A28
+ ldr r3, _02254A30 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254A30: .word MOD20_022537B8
+ thumb_func_end MOD50_02254A28
+
+ thumb_func_start MOD50_02254A34
+MOD50_02254A34: ; 0x02254A34
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD50_02254A34
+
+ thumb_func_start MOD50_02254A48
+MOD50_02254A48: ; 0x02254A48
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254ADC ; =0x02254B10
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #8
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r3, #6
+ bl FUN_0200687C
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #0xc
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ ldr r1, [r5]
+ ldr r0, [r5, #4]
+ ldr r1, [r1]
+ mov r2, #6
+ bl MOD20_02253AA4
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254AE0 ; =0x04001000
+ ldr r0, _02254AE4 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD50_02254A34
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254ADC: .word 0x02254B10
+_02254AE0: .word 0x04001000
+_02254AE4: .word 0xFFFFE0FF
+ thumb_func_end MOD50_02254A48
+
+ thumb_func_start MOD50_02254AE8
+MOD50_02254AE8: ; 0x02254AE8
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD50_02254A34
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD50_02254AE8
+
+ .section .rodata
+ ; 0x02254B04
+ .incbin "baserom.nds", 0x2988c4, 0x4C
+
+ .section .sinit
+ .word MOD50_02254840
diff --git a/arm9/modules/51/asm/module_51.s b/arm9/modules/51/asm/module_51.s
new file mode 100644
index 00000000..94a4dd93
--- /dev/null
+++ b/arm9/modules/51/asm/module_51.s
@@ -0,0 +1,1911 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD51_02254840
+MOD51_02254840: ; 0x02254840
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ ldr r0, [r4, #0x14]
+ ldr r1, [r1, #0x7c]
+ cmp r1, #0
+ beq _022548EE
+ ldr r1, [r4]
+ cmp r1, #3
+ bhi _022548EE
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02254860: ; jump table
+ .short _02254868 - _02254860 - 2 ; case 0
+ .short _0225487A - _02254860 - 2 ; case 1
+ .short _022548D0 - _02254860 - 2 ; case 2
+ .short _022548EE - _02254860 - 2 ; case 3
+_02254868:
+ bl MOD51_02254B54
+ add r0, r4, #0
+ bl MOD51_022548F0
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_0225487A:
+ add r0, r4, #0
+ bl MOD51_02254C80
+ add r0, r4, #0
+ bl MOD51_02254D50
+ mov r0, #1
+ mov r1, #4
+ bl FUN_02002C84
+ mov r1, #0x72
+ lsl r1, r1, #2
+ ldr r0, [r4, #0x14]
+ add r1, r4, r1
+ bl MOD51_02254944
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E74C
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E74C
+ add r0, r4, #0
+ bl MOD51_0225571C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r4, pc}
+_022548D0:
+ add r0, r4, #0
+ bl MOD51_02255690
+ add r0, r4, #0
+ bl MOD51_02255030
+ add r0, r4, #0
+ bl MOD51_022552FC
+ add r0, r4, #0
+ bl MOD51_02254F30
+ ldr r0, [r4, #0x28]
+ bl FUN_0201FDEC
+_022548EE:
+ pop {r4, pc}
+ thumb_func_end MOD51_02254840
+
+ thumb_func_start MOD51_022548F0
+MOD51_022548F0: ; 0x022548F0
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r1, #0xa1
+ lsl r1, r1, #2
+ add r4, r0, #0
+ mov r2, #0
+ add r0, r1, #0
+ str r2, [r4, r1]
+ sub r0, #0x10
+ strh r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xe
+ strh r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xc
+ strh r2, [r4, r0]
+ sub r1, #0xa
+ mov r0, #4
+ strh r2, [r4, r1]
+ bl FUN_0200AA80
+ mov r2, #9
+ str r0, [r4, #0x18]
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #6
+ mov r3, #4
+ bl FUN_0200A86C
+ str r0, [r4, #0x1c]
+ mov r0, #4
+ add r3, r4, #0
+ str r0, [sp]
+ mov r0, #0x4a
+ mov r1, #3
+ mov r2, #1
+ add r3, #0x24
+ bl FUN_02006BDC
+ str r0, [r4, #0x20]
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD51_022548F0
+
+ thumb_func_start MOD51_02254944
+MOD51_02254944: ; 0x02254944
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r7, r0, #0
+ mov r0, #0xa0
+ str r0, [sp, #0x20]
+ mov r0, #0xd0
+ str r0, [sp, #0x1c]
+ mov r0, #3
+ str r0, [sp, #0x18]
+ ldr r0, _02254A3C ; =0x00000265
+ add r5, r1, #0
+ mov r4, #0
+ mov r6, #1
+ str r0, [sp, #0x14]
+_02254960:
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x20]
+ add r2, r4, #4
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r2, r2, #0x18
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ add r1, r5, #0
+ lsr r2, r2, #0x18
+ mov r3, #1
+ bl FUN_02019064
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ bl FUN_020191D0
+ ldr r0, [sp, #0x18]
+ add r2, r4, #4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x1c]
+ add r1, r5, #0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r2, r2, #0x18
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ add r1, #0x10
+ lsr r2, r2, #0x18
+ mov r3, #2
+ bl FUN_02019064
+ add r0, r5, #0
+ add r0, #0x10
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r0, #0x10
+ bl FUN_020191D0
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xf
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ add r2, r4, #4
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r1, r5, #0
+ lsl r2, r2, #0x18
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ add r1, #0x20
+ lsr r2, r2, #0x18
+ mov r3, #0xc
+ bl FUN_02019064
+ add r0, r5, #0
+ add r0, #0x20
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r0, #0x20
+ bl FUN_020191D0
+ ldr r0, [sp, #0x20]
+ add r4, r4, #1
+ add r0, #0x10
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ add r6, #8
+ add r0, #0x87
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r5, #0x38
+ add r0, #8
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ add r0, #0x1e
+ str r0, [sp, #0x14]
+ cmp r4, #3
+ blt _02254960
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254A3C: .word 0x00000265
+ thumb_func_end MOD51_02254944
+
+ thumb_func_start MOD51_02254A40
+MOD51_02254A40: ; 0x02254A40
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_02254A46:
+ add r0, r5, #0
+ add r0, #0x10
+ bl FUN_02019178
+ add r0, r5, #0
+ bl FUN_02019178
+ add r0, r5, #0
+ add r0, #0x20
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x38
+ cmp r4, #3
+ blt _02254A46
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD51_02254A40
+
+ thumb_func_start MOD51_02254A68
+MOD51_02254A68: ; 0x02254A68
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r1, #0xa3
+ mov r2, #4
+ ldr r0, _02254AB0 ; =MOD51_02254840
+ lsl r1, r1, #2
+ add r3, r2, #0
+ bl FUN_020061E8
+ add r6, r0, #0
+ bl FUN_0201B6C8
+ add r4, r0, #0
+ str r5, [r4, #0xc]
+ ldr r0, [r5, #8]
+ str r0, [r4, #0x14]
+ ldr r0, [r5, #0x7c]
+ str r0, [r4, #4]
+ ldr r0, [r5, #0x78]
+ str r0, [r4, #8]
+ ldr r0, [r5, #0xc]
+ bl FUN_020238F4
+ str r0, [r4, #0x10]
+ mov r0, #0
+ mov r1, #0xa2
+ str r0, [r4]
+ lsl r1, r1, #2
+ str r6, [r4, r1]
+ ldr r2, [r5, #0x7c]
+ ldr r0, _02254AB4 ; =0x000004DC
+ sub r1, #0x18
+ ldr r0, [r2, r0]
+ str r0, [r4, r1]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254AB0: .word MOD51_02254840
+_02254AB4: .word 0x000004DC
+ thumb_func_end MOD51_02254A68
+
+ thumb_func_start MOD51_02254AB8
+MOD51_02254AB8: ; 0x02254AB8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r6]
+ cmp r0, #2
+ bne _02254B2C
+ ldr r0, [r6, #0x14]
+ str r0, [sp]
+ mov r0, #3
+ str r0, [r6]
+ mov r0, #1
+ bl FUN_02002CC0
+ mov r0, #0x59
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #0x5a
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r7, #0x55
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_02254AEC:
+ ldr r0, [r5, r7]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02254AEC
+ ldr r0, [r6, #0x28]
+ bl FUN_0201FD58
+ ldr r0, [r6, #0x1c]
+ bl FUN_0200A8B8
+ ldr r0, [r6, #0x18]
+ bl FUN_0200AB18
+ mov r0, #0x72
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl MOD51_02254A40
+ ldr r0, [sp]
+ bl MOD51_02254B30
+ ldr r0, [r6, #0x20]
+ bl FUN_02016A18
+ mov r0, #0xa2
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_0200621C
+_02254B2C:
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD51_02254AB8
+
+ thumb_func_start MOD51_02254B30
+MOD51_02254B30: ; 0x02254B30
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #4
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #7
+ bl FUN_020178A0
+ pop {r4, pc}
+ thumb_func_end MOD51_02254B30
+
+ thumb_func_start MOD51_02254B54
+MOD51_02254B54: ; 0x02254B54
+ push {r3, r4, r5, lr}
+ sub sp, #0x80
+ add r4, r0, #0
+ bl MOD51_02254B30
+ ldr r5, _02254C70 ; =0x022557A8
+ add r3, sp, #0x64
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02018744
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E74C
+ ldr r5, _02254C74 ; =0x0225578C
+ add r3, sp, #0x48
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #5
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_02018744
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E74C
+ ldr r5, _02254C78 ; =0x022557C4
+ add r3, sp, #0x2c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #6
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #6
+ bl FUN_02018744
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ ldr r5, _02254C7C ; =0x02255754
+ add r3, sp, #0x10
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #7
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #0x60
+ mov r1, #0
+ str r0, [sp]
+ mov r2, #4
+ mov r0, #0x4a
+ add r3, r1, #0
+ str r2, [sp, #4]
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #5
+ lsl r0, r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ mov r0, #0x4a
+ mov r1, #2
+ add r2, r4, #0
+ mov r3, #7
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r1, #4
+ mov r0, #0x4a
+ add r2, r4, #0
+ mov r3, #7
+ str r1, [sp, #0xc]
+ bl FUN_020068C8
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02054590
+ add sp, #0x80
+ pop {r3, r4, r5, pc}
+ nop
+_02254C70: .word 0x022557A8
+_02254C74: .word 0x0225578C
+_02254C78: .word 0x022557C4
+_02254C7C: .word 0x02255754
+ thumb_func_end MOD51_02254B54
+
+ thumb_func_start MOD51_02254C80
+MOD51_02254C80: ; 0x02254C80
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ add r1, r6, #0
+ mov r0, #0xa
+ add r1, #0x2c
+ mov r2, #4
+ bl FUN_02008C9C
+ mov r7, #0x55
+ str r0, [r6, #0x28]
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_02254C9C:
+ mov r0, #1
+ add r1, r4, #0
+ mov r2, #4
+ bl FUN_02008DEC
+ str r0, [r5, r7]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02254C9C
+ ldr r0, _02254D4C ; =0x000003E7
+ mov r1, #0x4a
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0x55
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r2, #5
+ mov r3, #1
+ bl FUN_02008F34
+ mov r1, #0x59
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ ldr r0, _02254D4C ; =0x000003E7
+ mov r2, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ str r2, [sp, #8]
+ mov r0, #4
+ sub r1, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r6, r1]
+ mov r1, #0x4a
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ ldr r0, _02254D4C ; =0x000003E7
+ sub r1, #0xc
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r0, [r6, r1]
+ mov r1, #0x4a
+ mov r2, #6
+ mov r3, #1
+ bl FUN_020090AC
+ mov r1, #0x5b
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ ldr r0, _02254D4C ; =0x000003E7
+ sub r1, #0xc
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r0, [r6, r1]
+ mov r1, #0x4a
+ mov r2, #7
+ mov r3, #1
+ bl FUN_020090AC
+ mov r1, #0x17
+ lsl r1, r1, #4
+ str r0, [r6, r1]
+ sub r1, #0xc
+ ldr r0, [r6, r1]
+ bl FUN_02009B04
+ mov r0, #0x5a
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009D68
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254D4C: .word 0x000003E7
+ thumb_func_end MOD51_02254C80
+
+ thumb_func_start MOD51_02254D50
+MOD51_02254D50: ; 0x02254D50
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x5c
+ ldr r1, _02254E28 ; =0x000003E7
+ add r5, r0, #0
+ mov r0, #0
+ str r1, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ mov r3, #0x55
+ str r0, [sp, #0x10]
+ lsl r3, r3, #2
+ ldr r2, [r5, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r5, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r5, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ add r3, #0x20
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, r5, r3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02008AA4
+ ldr r0, [r5, #0x28]
+ mov r4, #0
+ str r0, [sp, #0x2c]
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ add r0, r5, r0
+ str r0, [sp, #0x30]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ mov r7, #0x3f
+ str r4, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ add r0, sp, #0x2c
+ strh r4, [r0, #0x20]
+ mov r0, #2
+ str r0, [sp, #0x54]
+ mov r0, #4
+ ldr r6, _02254E2C ; =0x02255734
+ str r4, [sp, #0x50]
+ str r0, [sp, #0x58]
+ lsl r7, r7, #0x18
+_02254DC4:
+ mov r0, #0x3a
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ ldr r0, [r6]
+ cmp r0, #0
+ ble _02254DE0
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r0, #0
+ add r0, r7, #0
+ bl _fadd
+ b _02254DEC
+_02254DE0:
+ lsl r0, r0, #0xc
+ bl _fflt
+ add r1, r7, #0
+ bl _fsub
+_02254DEC:
+ bl _ffix
+ mov r1, #3
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FE94
+ mov r1, #0x66
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x66
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_02020130
+ add r4, r4, #1
+ add r6, r6, #4
+ add r5, r5, #4
+ cmp r4, #3
+ blt _02254DC4
+ add sp, #0x5c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254E28: .word 0x000003E7
+_02254E2C: .word 0x02255734
+ thumb_func_end MOD51_02254D50
+
+ thumb_func_start MOD51_02254E30
+MOD51_02254E30: ; 0x02254E30
+ add r1, r1, #1
+ cmp r1, #0x1e
+ bne _02254E38
+ mov r1, #0
+_02254E38:
+ add r0, r1, #0
+ bx lr
+ thumb_func_end MOD51_02254E30
+
+ thumb_func_start MOD51_02254E3C
+MOD51_02254E3C: ; 0x02254E3C
+ add r0, r0, r1
+ cmp r0, #0x1e
+ blt _02254E44
+ sub r0, #0x1e
+_02254E44:
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD51_02254E3C
+
+ thumb_func_start MOD51_02254E48
+MOD51_02254E48: ; 0x02254E48
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r3, r1, #0
+ add r5, r0, #0
+ add r4, r3, #0
+ mov r0, #0x38
+ mul r4, r0
+ mov r0, #0x7e
+ add r6, r2, #0
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, [r6, #0x10]
+ mov r2, #8
+ str r0, [r1, r4]
+ mov r0, #0x20
+ str r0, [sp]
+ str r2, [sp, #4]
+ ldr r2, [r5, #0x24]
+ mov r7, #0
+ add r2, #0xc
+ str r2, [sp, #8]
+ str r7, [sp, #0xc]
+ ldr r2, [r1, r4]
+ mov r1, #0x18
+ mul r1, r2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ mov r0, #0x30
+ str r0, [sp, #0x18]
+ lsl r3, r3, #0x1b
+ ldr r0, [r5, #0x14]
+ mov r1, #7
+ add r2, r7, #0
+ lsr r3, r3, #0x18
+ bl FUN_02018170
+ mov r0, #0x72
+ lsl r0, r0, #2
+ add r7, r5, r0
+ add r0, r7, r4
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0x76
+ lsl r0, r0, #2
+ add r0, r5, r0
+ str r0, [sp, #0x1c]
+ add r0, r0, r4
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ add r5, r5, r0
+ add r0, r5, r4
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02254F2C ; =0x00010200
+ mov r3, #0
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r2, [r6]
+ add r0, r7, r4
+ mov r1, #1
+ bl FUN_0201BDE0
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02254F2C ; =0x00010200
+ mov r3, #0
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r0, [sp, #0x1c]
+ ldr r2, [r6, #4]
+ add r0, r0, r4
+ mov r1, #1
+ bl FUN_0201BDE0
+ add r0, r7, r4
+ bl FUN_02019220
+ ldr r0, [sp, #0x1c]
+ add r0, r0, r4
+ bl FUN_02019220
+ ldr r2, [r6, #8]
+ cmp r2, #0
+ beq _02254F22
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _02254F2C ; =0x00010200
+ mov r3, #0
+ str r0, [sp, #8]
+ add r0, r5, r4
+ mov r1, #1
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+_02254F22:
+ add r0, r5, r4
+ bl FUN_02019220
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254F2C: .word 0x00010200
+ thumb_func_end MOD51_02254E48
+
+ thumb_func_start MOD51_02254F30
+MOD51_02254F30: ; 0x02254F30
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0x27
+ add r5, r0, #0
+ lsl r1, r1, #4
+ add r0, r1, #0
+ ldr r2, [r5, r1]
+ add r1, #8
+ add r0, #0xdc
+ ldrh r1, [r5, r1]
+ ldr r0, [r2, r0]
+ bl MOD51_02254E3C
+ add r6, r0, #0
+ mov r0, #0x27
+ lsl r0, r0, #4
+ ldr r1, [r5, r0]
+ add r0, #0xd8
+ ldr r7, [r1, r0]
+ cmp r7, #3
+ ble _02254F5A
+ mov r7, #3
+_02254F5A:
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ ldrh r1, [r5, r0]
+ add r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r1, r0
+ beq _02254F78
+ add r0, r5, #0
+ bl MOD51_0225571C
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ ldrh r1, [r5, r0]
+ add r0, r0, #4
+ str r1, [r5, r0]
+_02254F78:
+ mov r0, #0xa1
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #1
+ bne _02254FE2
+ mov r4, #0
+ cmp r7, #0
+ ble _02254FB0
+_02254F88:
+ mov r2, #0x27
+ lsl r2, r2, #4
+ mov r3, #0x1c
+ ldr r2, [r5, r2]
+ mul r3, r6
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r2, r3
+ bl MOD51_02254E48
+ mov r0, #0x27
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl MOD51_02254E30
+ add r4, r4, #1
+ add r6, r0, #0
+ cmp r4, r7
+ blt _02254F88
+_02254FB0:
+ ldr r0, [r5, #0x14]
+ mov r1, #7
+ bl FUN_0201886C
+ mov r1, #6
+ lsl r1, r1, #8
+ bl DC_FlushRange
+ ldr r0, [r5, #0x14]
+ mov r1, #7
+ bl FUN_0201886C
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #6
+ ldr r0, [r5, #0x14]
+ mov r1, #7
+ lsl r3, r3, #8
+ bl FUN_02017CE8
+ mov r0, #0xa1
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_02254FE2:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD51_02254F30
+
+ thumb_func_start MOD51_02254FE4
+MOD51_02254FE4: ; 0x02254FE4
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #0x3a
+ lsl r0, r0, #0xe
+ str r0, [sp]
+ cmp r1, #0
+ ble _02255006
+ lsl r0, r1, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _02255014
+_02255006:
+ lsl r0, r1, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_02255014:
+ bl _ffix
+ mov r1, #3
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r3, r4, pc}
+ thumb_func_end MOD51_02254FE4
+
+ thumb_func_start MOD51_02255030
+MOD51_02255030: ; 0x02255030
+ push {r4, lr}
+ mov r1, #0x27
+ add r4, r0, #0
+ lsl r1, r1, #4
+ add r0, r1, #0
+ ldr r2, [r4, r1]
+ add r0, #0xd8
+ ldr r2, [r2, r0]
+ add r0, r1, #4
+ strh r2, [r4, r0]
+ ldrh r0, [r4, r0]
+ cmp r0, #3
+ bls _02255060
+ add r0, r1, #6
+ ldrh r0, [r4, r0]
+ cmp r0, #3
+ bhi _02255060
+ add r0, r1, #0
+ mov r2, #1
+ add r0, #0xa
+ strh r2, [r4, r0]
+ mov r0, #0
+ add r1, #8
+ strh r0, [r4, r1]
+_02255060:
+ mov r1, #0x1a
+ lsl r1, r1, #4
+ ldr r0, [r4, r1]
+ add r1, #0xda
+ ldrh r1, [r4, r1]
+ bl FUN_020200A0
+ ldr r0, _022550AC ; =0x0000027A
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _022550A0
+ bl FUN_02020A98
+ cmp r0, #0
+ bne _022550A0
+ mov r1, #0x9e
+ lsl r1, r1, #2
+ ldrh r2, [r4, r1]
+ sub r1, r1, #4
+ ldrh r1, [r4, r1]
+ mov r0, #0x60
+ mul r0, r2
+ sub r1, r1, #3
+ bl _s32_div_f
+ add r1, r0, #0
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, #0x30
+ bl MOD51_02254FE4
+_022550A0:
+ mov r0, #0x9d
+ lsl r0, r0, #2
+ ldrh r1, [r4, r0]
+ add r0, r0, #2
+ strh r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_022550AC: .word 0x0000027A
+ thumb_func_end MOD51_02255030
+
+ thumb_func_start MOD51_022550B0
+MOD51_022550B0: ; 0x022550B0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _022551D8 ; =0x02255770
+ bl FUN_02020988
+ add r7, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r7, r0
+ bne _022550C6
+ b _022551D2
+_022550C6:
+ cmp r7, #0
+ beq _022550D4
+ cmp r7, #1
+ beq _02255100
+ cmp r7, #5
+ beq _022551CA
+ b _02255132
+_022550D4:
+ lsl r0, r7, #2
+ add r1, r5, r0
+ mov r0, #0x66
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, r7, #4
+ bl FUN_02020130
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _022551CA
+ ldr r0, _022551DC ; =0x000005E5
+ bl FUN_020054C8
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ ldrh r1, [r5, r0]
+ sub r1, r1, #1
+ strh r1, [r5, r0]
+ b _022551CA
+_02255100:
+ lsl r0, r7, #2
+ add r1, r5, r0
+ mov r0, #0x66
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, r7, #4
+ bl FUN_02020130
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ ldrh r1, [r5, r0]
+ sub r0, r0, #4
+ ldrh r0, [r5, r0]
+ sub r0, r0, #3
+ cmp r1, r0
+ bge _022551CA
+ ldr r0, _022551DC ; =0x000005E5
+ bl FUN_020054C8
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ ldrh r1, [r5, r0]
+ add r1, r1, #1
+ strh r1, [r5, r0]
+ b _022551CA
+_02255132:
+ mov r2, #0x27
+ lsl r2, r2, #4
+ add r1, r2, #0
+ ldr r0, [r5, r2]
+ add r1, #0xd8
+ ldr r3, [r0, r1]
+ sub r1, r7, #1
+ cmp r3, r1
+ blt _022551CA
+ add r1, r2, #0
+ add r1, #0xdc
+ add r2, #8
+ ldr r0, [r0, r1]
+ ldrh r1, [r5, r2]
+ add r1, r1, r7
+ sub r1, r1, #2
+ bl MOD51_02254E3C
+ mov r1, #0x1c
+ mov r4, #0
+ mul r1, r0
+ add r6, r4, #0
+ str r1, [sp]
+_02255160:
+ add r0, r4, #0
+ bl FUN_0202EF18
+ cmp r0, #0
+ beq _0225519C
+ ldr r1, [r5, #4]
+ add r0, #0x50
+ add r1, r1, r6
+ ldrb r1, [r1, #0xd]
+ cmp r1, #2
+ bne _0225519C
+ mov r1, #0x27
+ lsl r1, r1, #4
+ ldr r2, [r5, r1]
+ ldr r1, [sp]
+ ldr r0, [r0]
+ add r1, r1, r2
+ ldr r1, [r1, #0xc]
+ cmp r0, r1
+ bne _0225519C
+ ldr r0, _022551DC ; =0x000005E5
+ bl FUN_020054C8
+ mov r1, #0x18
+ ldr r2, [r5, #4]
+ mul r1, r4
+ mov r0, #1
+ add r1, r2, r1
+ strb r0, [r1, #0xf]
+ b _022551A4
+_0225519C:
+ add r4, r4, #1
+ add r6, #0x18
+ cmp r4, #0xa
+ blt _02255160
+_022551A4:
+ bl FUN_0202EF70
+ bl FUN_020239BC
+ mov r1, #0x27
+ lsl r1, r1, #4
+ ldr r2, [r5, r1]
+ ldr r1, [sp]
+ add r1, r2, r1
+ ldr r1, [r1, #0xc]
+ cmp r1, r0
+ bne _022551CA
+ ldr r0, _022551DC ; =0x000005E5
+ bl FUN_020054C8
+ ldr r1, [r5, #4]
+ ldr r0, _022551E0 ; =0x000004BF
+ mov r2, #1
+ strb r2, [r1, r0]
+_022551CA:
+ mov r0, #0x71
+ sub r1, r7, #2
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_022551D2:
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_022551D8: .word 0x02255770
+_022551DC: .word 0x000005E5
+_022551E0: .word 0x000004BF
+ thumb_func_end MOD51_022550B0
+
+ thumb_func_start MOD51_022551E4
+MOD51_022551E4: ; 0x022551E4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r7, r0, #0
+ ldr r0, _02255290 ; =0x02255740
+ bl FUN_02020968
+ mov r1, #0
+ mvn r1, r1
+ str r0, [sp]
+ cmp r0, r1
+ beq _0225528A
+ cmp r0, #0
+ bne _02255256
+ add r0, sp, #8
+ add r1, sp, #4
+ bl FUN_02020AB0
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r7, r0]
+ ldr r1, [sp, #4]
+ bl MOD51_02254FE4
+ mov r0, #0x9d
+ lsl r0, r0, #2
+ ldrh r0, [r7, r0]
+ cmp r0, #3
+ bls _0225528A
+ sub r4, r0, #2
+ mov r0, #0x60
+ add r1, r4, #0
+ bl _s32_div_f
+ mov r1, #0
+ cmp r4, #0
+ ble _0225528A
+ ldr r5, [sp, #4]
+ add r2, r1, #0
+ add r3, r1, #0
+_02255232:
+ add r6, r2, #0
+ add r6, #0x30
+ cmp r5, r6
+ blo _0225524A
+ add r6, r3, r0
+ add r6, #0x30
+ cmp r5, r6
+ bhs _0225524A
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ strh r1, [r7, r0]
+ b _0225528A
+_0225524A:
+ add r1, r1, #1
+ add r2, r2, r0
+ add r3, r3, r0
+ cmp r1, r4
+ blt _02255232
+ b _0225528A
+_02255256:
+ mov r1, #0x27
+ lsl r1, r1, #4
+ add r0, r1, #0
+ ldr r2, [r7, r1]
+ add r0, #0xd8
+ ldr r2, [r2, r0]
+ ldr r0, [sp]
+ cmp r2, r0
+ blt _0225528A
+ add r0, r1, #0
+ sub r0, #0xac
+ ldr r2, [r7, r0]
+ ldr r0, [sp]
+ sub r3, r0, #1
+ cmp r2, r3
+ bne _0225528A
+ sub r1, #0x74
+ add r2, r7, r1
+ mov r0, #0x38
+ add r1, r3, #0
+ mul r1, r0
+ ldr r0, [r2, r1]
+ cmp r0, #5
+ bge _0225528A
+ add r0, r0, #1
+ str r0, [r2, r1]
+_0225528A:
+ ldr r0, [sp]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02255290: .word 0x02255740
+ thumb_func_end MOD51_022551E4
+
+ thumb_func_start MOD51_02255294
+MOD51_02255294: ; 0x02255294
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _022552F4 ; =0x021C48B8
+ mov r1, #2
+ ldr r2, [r0, #0x48]
+ lsl r1, r1, #8
+ add r0, r2, #0
+ tst r0, r1
+ beq _022552C6
+ sub r1, #0x68
+ ldr r0, [r4, r1]
+ mov r1, #4
+ bl FUN_02020130
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ ldrh r1, [r4, r0]
+ cmp r1, #0
+ beq _022552F0
+ sub r1, r1, #1
+ strh r1, [r4, r0]
+ ldr r0, _022552F8 ; =0x000005E5
+ bl FUN_020054C8
+ pop {r4, pc}
+_022552C6:
+ lsr r0, r1, #1
+ tst r0, r2
+ beq _022552F0
+ sub r1, #0x64
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl FUN_02020130
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ sub r1, r0, #4
+ ldrh r1, [r4, r1]
+ ldrh r2, [r4, r0]
+ sub r1, r1, #3
+ cmp r2, r1
+ bge _022552F0
+ add r1, r2, #1
+ strh r1, [r4, r0]
+ ldr r0, _022552F8 ; =0x000005E5
+ bl FUN_020054C8
+_022552F0:
+ pop {r4, pc}
+ nop
+_022552F4: .word 0x021C48B8
+_022552F8: .word 0x000005E5
+ thumb_func_end MOD51_02255294
+
+ thumb_func_start MOD51_022552FC
+MOD51_022552FC: ; 0x022552FC
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ mov r4, #0
+ mvn r4, r4
+ bl FUN_0204646C
+ cmp r0, #0
+ bne _02255332
+ add r0, r5, #0
+ bl MOD51_022550B0
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD51_022551E4
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r6, r0
+ bne _02255332
+ cmp r4, r0
+ bne _02255332
+ add r0, r5, #0
+ bl MOD51_02255294
+_02255332:
+ mov r2, #0x27
+ lsl r2, r2, #4
+ add r0, r2, #0
+ ldr r1, [r5, r2]
+ add r0, #0xd8
+ ldr r0, [r1, r0]
+ sub r3, r4, #1
+ str r0, [sp]
+ add r0, r2, #0
+ add r0, #0x10
+ add r0, r5, r0
+ str r0, [sp, #4]
+ sub r2, #0xa8
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x24]
+ add r2, r5, r2
+ bl MOD51_0225535C
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD51_022552FC
+
+ thumb_func_start MOD51_0225535C
+MOD51_0225535C: ; 0x0225535C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x40]
+ str r1, [sp, #0x20]
+ add r5, r2, #0
+ mov r1, #0
+ str r0, [sp, #0x40]
+ ldr r4, [sp, #0x44]
+ cmp r0, #3
+ ble _02255376
+ mov r0, #3
+ str r0, [sp, #0x40]
+_02255376:
+ ldr r2, [sp, #0x40]
+ mov r0, #0
+ cmp r2, #0
+ ble _0225539C
+ add r2, r5, #0
+_02255380:
+ cmp r3, r0
+ beq _0225538E
+ ldr r6, [r2, #0x34]
+ cmp r6, #0
+ beq _0225538E
+ sub r6, r6, #1
+ str r6, [r2, #0x34]
+_0225538E:
+ ldr r6, [r2, #0x34]
+ add r0, r0, #1
+ add r1, r1, r6
+ ldr r6, [sp, #0x40]
+ add r2, #0x38
+ cmp r0, r6
+ blt _02255380
+_0225539C:
+ cmp r1, #0
+ bne _022553AC
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _022553AC
+ add sp, #0x28
+ str r1, [r4]
+ pop {r3, r4, r5, r6, r7, pc}
+_022553AC:
+ ldr r0, [sp, #0x40]
+ str r1, [r4]
+ mov r4, #0
+ cmp r0, #0
+ ble _02255422
+ ldr r0, [sp, #0x20]
+ add r7, r4, #0
+ add r0, #0xc
+ str r0, [sp, #0x20]
+_022553BE:
+ ldr r1, [r5, #0x34]
+ lsl r3, r7, #0x18
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ str r0, [sp, #0x24]
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x20]
+ lsr r3, r3, #0x18
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x24]
+ ldr r1, [r5, #0x30]
+ lsl r2, r0, #3
+ mov r0, #0x18
+ mul r0, r1
+ add r0, r2, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x10]
+ mov r0, #0x20
+ str r0, [sp, #0x14]
+ mov r0, #0x30
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x1c]
+ mov r1, #7
+ mov r2, #0
+ bl FUN_02018170
+ ldr r3, [sp, #0x24]
+ add r1, r4, #4
+ lsl r6, r3, #2
+ ldr r3, _02255450 ; =0x02255728
+ lsl r1, r1, #0x18
+ ldr r0, [sp, #0x1c]
+ ldr r3, [r3, r6]
+ lsr r1, r1, #0x18
+ mov r2, #3
+ bl FUN_020179E0
+ ldr r0, [sp, #0x40]
+ add r4, r4, #1
+ add r5, #0x38
+ add r7, #8
+ cmp r4, r0
+ blt _022553BE
+_02255422:
+ ldr r0, [sp, #0x1c]
+ mov r1, #7
+ bl FUN_0201886C
+ mov r1, #6
+ lsl r1, r1, #8
+ bl DC_FlushRange
+ ldr r0, [sp, #0x1c]
+ mov r1, #7
+ bl FUN_0201886C
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #6
+ ldr r0, [sp, #0x1c]
+ mov r1, #7
+ lsl r3, r3, #8
+ bl FUN_02017CE8
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02255450: .word 0x02255728
+ thumb_func_end MOD51_0225535C
+
+ thumb_func_start MOD51_02255454
+MOD51_02255454: ; 0x02255454
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ mov r4, #0
+ ldr r0, [sp, #0x28]
+ add r5, r1, #0
+ add r7, r2, #0
+ str r3, [sp, #8]
+ str r4, [sp, #0xc]
+ bl FUN_020239BC
+ cmp r5, r0
+ beq _02255478
+ add r0, r6, #0
+ add r1, r5, #0
+ bl FUN_02025614
+ add r4, r0, #0
+_02255478:
+ cmp r4, #0
+ ble _022554D8
+ cmp r4, #1
+ bne _0225548C
+ ldr r2, [sp, #0x28]
+ add r0, r7, #0
+ mov r1, #0
+ bl FUN_0200ABC0
+ b _022554CA
+_0225548C:
+ cmp r4, #2
+ blt _022554CA
+ sub r5, r4, #2
+ mov r0, #0xa
+ mov r1, #0x59
+ bl FUN_020219F4
+ add r4, r0, #0
+ add r0, r6, #0
+ add r1, r5, #0
+ bl FUN_020254F0
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_02021E28
+ add r0, r6, #0
+ add r1, r5, #0
+ bl FUN_020254F8
+ mov r1, #0
+ str r1, [sp]
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r2, r4, #0
+ add r3, r1, #0
+ bl FUN_0200ABB4
+ add r0, r4, #0
+ bl FUN_02021A20
+_022554CA:
+ ldr r1, [sp, #8]
+ add r0, r7, #0
+ mov r2, #0xce
+ mov r3, #0x59
+ bl FUN_0200A9C4
+ str r0, [sp, #0xc]
+_022554D8:
+ ldr r0, [sp, #0xc]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD51_02255454
+
+ thumb_func_start MOD51_022554E0
+MOD51_022554E0: ; 0x022554E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ add r6, r2, #0
+ ldr r2, [r7, #4]
+ ldr r0, _022555BC ; =0x000004D8
+ str r1, [sp, #4]
+ mov r1, #0x27
+ ldr r0, [r2, r0]
+ lsl r1, r1, #4
+ str r0, [sp, #0xc]
+ add r0, r1, #0
+ ldr r4, [r7, r1]
+ add r0, #0xd8
+ ldr r0, [r4, r0]
+ str r3, [sp, #8]
+ cmp r0, #0x1e
+ bne _02255508
+ add r1, #0xdc
+ b _0225550A
+_02255508:
+ add r1, #0xd8
+_0225550A:
+ add r5, r4, r1
+ ldr r1, [r5]
+ mov r0, #0x1c
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #4]
+ cmp r0, #0
+ beq _0225551E
+ bl FUN_02021A20
+_0225551E:
+ ldr r1, [r5]
+ mov r0, #0x1c
+ mul r0, r1
+ add r0, r4, r0
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _02255530
+ bl FUN_02021A20
+_02255530:
+ ldr r0, [sp, #8]
+ bl FUN_0202398C
+ add r1, r0, #0
+ ldr r2, [r5]
+ mov r0, #0x1c
+ mul r0, r2
+ ldr r0, [r4, r0]
+ bl FUN_02021E28
+ ldr r0, [r5]
+ mov r1, #0x1c
+ add r2, r0, #0
+ mul r2, r1
+ add r0, r4, r2
+ ldrh r2, [r6]
+ strh r2, [r0, #0x14]
+ ldrh r2, [r6, #2]
+ strh r2, [r0, #0x16]
+ ldrh r2, [r6, #4]
+ strh r2, [r0, #0x18]
+ ldrh r2, [r6, #6]
+ strh r2, [r0, #0x1a]
+ ldr r0, [r5]
+ mul r1, r0
+ ldr r0, [sp, #4]
+ add r1, r4, r1
+ str r0, [r1, #0xc]
+ ldr r0, [sp, #8]
+ bl FUN_020239CC
+ ldr r2, [r5]
+ mov r1, #0x1c
+ mul r1, r2
+ add r1, r4, r1
+ str r0, [r1, #0x10]
+ add r0, r6, #0
+ mov r1, #0x59
+ bl FUN_020137D4
+ ldr r2, [r5]
+ mov r1, #0x1c
+ mul r1, r2
+ add r1, r4, r1
+ str r0, [r1, #4]
+ ldr r0, [r7, #0x10]
+ ldr r1, [sp, #4]
+ str r0, [sp]
+ ldr r0, [sp, #0xc]
+ ldr r2, [r7, #0x18]
+ ldr r3, [r7, #0x1c]
+ bl MOD51_02255454
+ ldr r2, [r5]
+ mov r1, #0x1c
+ mul r1, r2
+ add r1, r4, r1
+ str r0, [r1, #8]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ mov r0, #0xd3
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0x1e
+ bne _022555B8
+ mov r1, #0
+ str r1, [r4, r0]
+_022555B8:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_022555BC: .word 0x000004D8
+ thumb_func_end MOD51_022554E0
+
+ thumb_func_start MOD51_022555C0
+MOD51_022555C0: ; 0x022555C0
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r0, r1, #0
+ str r1, [sp]
+ add r7, r2, #0
+ bl FUN_0201385C
+ cmp r0, #0
+ bne _022555D6
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_022555D6:
+ mov r1, #0x27
+ lsl r1, r1, #4
+ ldr r0, [r6, r1]
+ add r1, #0xd8
+ ldr r1, [r0, r1]
+ mov r4, #0
+ cmp r1, #0
+ ble _02255610
+ add r5, r4, #0
+_022555E8:
+ add r1, r0, r5
+ ldr r0, [r1, #0xc]
+ cmp r7, r0
+ bne _022555FC
+ ldr r0, [sp]
+ add r1, #0x14
+ bl FUN_02013928
+ cmp r0, #0
+ bne _02255610
+_022555FC:
+ mov r0, #0x27
+ lsl r0, r0, #4
+ mov r1, #0xd2
+ ldr r0, [r6, r0]
+ lsl r1, r1, #2
+ ldr r1, [r0, r1]
+ add r4, r4, #1
+ add r5, #0x1c
+ cmp r4, r1
+ blt _022555E8
+_02255610:
+ mov r0, #0x27
+ lsl r0, r0, #4
+ ldr r1, [r6, r0]
+ add r0, #0xd8
+ ldr r0, [r1, r0]
+ cmp r4, r0
+ beq _02255626
+ cmp r0, #0
+ beq _02255626
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_02255626:
+ mov r0, #0x1c
+ mul r0, r4
+ add r1, r1, r0
+ ldr r0, [r1, #0xc]
+ cmp r7, r0
+ beq _0225563A
+ ldr r0, [sp]
+ add r1, #0x14
+ bl FUN_02013928
+_0225563A:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD51_022555C0
+
+ thumb_func_start MOD51_02255640
+MOD51_02255640: ; 0x02255640
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ mov r1, #0x9e
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldrh r0, [r4, r1]
+ sub r1, r1, #4
+ ldrh r1, [r4, r1]
+ mov r5, #0
+ sub r1, r1, #3
+ cmp r0, r1
+ bne _0225565A
+ mov r5, #1
+_0225565A:
+ add r1, r3, #0
+ add r0, r4, #0
+ add r3, r6, #0
+ bl MOD51_022554E0
+ ldr r1, _0225568C ; =0x0000027A
+ ldrh r0, [r4, r1]
+ cmp r0, #0
+ beq _02255682
+ cmp r5, #0
+ beq _02255682
+ add r0, r1, #0
+ sub r0, #0xa
+ ldr r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #0xce
+ ldr r0, [r2, r0]
+ sub r2, r0, #3
+ sub r0, r1, #2
+ strh r2, [r4, r0]
+_02255682:
+ add r0, r4, #0
+ bl MOD51_0225571C
+ pop {r4, r5, r6, pc}
+ nop
+_0225568C: .word 0x0000027A
+ thumb_func_end MOD51_02255640
+
+ thumb_func_start MOD51_02255690
+MOD51_02255690: ; 0x02255690
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r0, [sp]
+ ldr r0, [r0, #0xc]
+ bl FUN_0204646C
+ cmp r0, #0
+ bne _02255714
+ mov r0, #4
+ bl FUN_02023928
+ str r0, [sp, #4]
+ mov r6, #0
+_022556AA:
+ add r0, r6, #0
+ bl FUN_0202EF18
+ add r7, r0, #0
+ beq _022556E6
+ add r4, r7, #0
+ add r4, #0x50
+ ldr r0, _02255718 ; =0x02255800
+ add r5, r4, #0
+ add r5, #8
+ str r4, [r0, #4]
+ str r5, [r0]
+ add r0, r4, #0
+ ldr r1, [sp, #4]
+ add r0, #0x10
+ bl FUN_0202393C
+ ldr r0, [sp]
+ ldr r2, [r7, #0x50]
+ add r1, r5, #0
+ bl MOD51_022555C0
+ cmp r0, #0
+ beq _022556E6
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ ldr r3, [r4]
+ add r2, r5, #0
+ bl MOD51_02255640
+_022556E6:
+ add r6, r6, #1
+ cmp r6, #0x10
+ blt _022556AA
+ ldr r0, [sp]
+ ldr r0, [r0, #8]
+ bl FUN_02052CF0
+ add r4, r0, #0
+ beq _0225570E
+ ldr r0, [sp]
+ ldr r0, [r0, #0x10]
+ bl FUN_020239BC
+ add r3, r0, #0
+ ldr r0, [sp]
+ add r2, r4, #0
+ add r1, r0, #0
+ ldr r1, [r1, #0x10]
+ bl MOD51_02255640
+_0225570E:
+ ldr r0, [sp, #4]
+ bl FUN_02016A18
+_02255714:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02255718: .word 0x02255800
+ thumb_func_end MOD51_02255690
+
+ thumb_func_start MOD51_0225571C
+MOD51_0225571C: ; 0x0225571C
+ mov r1, #0xa1
+ mov r2, #1
+ lsl r1, r1, #2
+ str r2, [r0, r1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD51_0225571C
+
+ .section .rodata
+ ; 0x02255728
+ .incbin "baserom.nds", 0x2998E8, 0xB8
+
+ .section .bss
+ ; 0x2255800
+ .space 4
diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s
new file mode 100644
index 00000000..24ecbec1
--- /dev/null
+++ b/arm9/modules/52/asm/module_52.s
@@ -0,0 +1,250 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD52_021D74E0
+MOD52_021D74E0: ; 0x021D74E0
+ push {r3, lr}
+ mov r2, #2
+ mov r0, #3
+ mov r1, #0x4d
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ bl FUN_02000FA4
+ mov r0, #1
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD52_021D74E0
+
+ thumb_func_start MOD52_021D74F8
+MOD52_021D74F8: ; 0x021D74F8
+ push {r3, lr}
+ bl FUN_0200628C
+ ldr r1, [r0, #8]
+ mov r0, #0x4d
+ bl MOD52_021D769C
+ mov r0, #1
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD52_021D74F8
+
+ thumb_func_start MOD52_021D750C
+MOD52_021D750C: ; 0x021D750C
+ push {r3, lr}
+ mov r0, #0x4d
+ bl FUN_020168D0
+ mov r0, #0
+ ldr r1, _021D7524 ; =0x020FD144
+ mvn r0, r0
+ bl FUN_02000E7C
+ mov r0, #1
+ pop {r3, pc}
+ nop
+_021D7524: .word 0x020FD144
+ thumb_func_end MOD52_021D750C
+
+ thumb_func_start MOD52_021D7528
+MOD52_021D7528: ; 0x021D7528
+ push {r3, lr}
+ mov r2, #2
+ mov r0, #3
+ mov r1, #0x4d
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ bl FUN_02000FA4
+ mov r0, #1
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD52_021D7528
+
+ thumb_func_start MOD52_021D7540
+MOD52_021D7540: ; 0x021D7540
+ push {r4, lr}
+ bl FUN_0200628C
+ ldr r4, [r0, #8]
+ mov r0, #0x4d
+ add r1, r4, #0
+ mov r2, #1
+ bl MOD52_021D7604
+ add r0, r4, #0
+ bl FUN_02023918
+ bl FUN_02015E3C
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD52_021D7540
+
+ thumb_func_start MOD52_021D7560
+MOD52_021D7560: ; 0x021D7560
+ push {r3, lr}
+ mov r0, #0x4d
+ bl FUN_020168D0
+ mov r0, #0
+ ldr r1, _021D7578 ; =0x020F2B7C
+ mvn r0, r0
+ bl FUN_02000E7C
+ mov r0, #1
+ pop {r3, pc}
+ nop
+_021D7578: .word 0x020F2B7C
+ thumb_func_end MOD52_021D7560
+
+ thumb_func_start MOD52_021D757C
+MOD52_021D757C: ; 0x021D757C
+ push {r3, lr}
+ mov r2, #2
+ mov r0, #3
+ mov r1, #0x4d
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ bl FUN_02000FA4
+ mov r0, #1
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD52_021D757C
+
+ thumb_func_start MOD52_021D7594
+MOD52_021D7594: ; 0x021D7594
+ push {r3, r4, r5, lr}
+ bl FUN_0200628C
+ ldr r4, [r0, #8]
+ add r0, r4, #0
+ bl FUN_02023788
+ add r5, r0, #0
+ mov r0, #0x4d
+ add r1, r4, #0
+ bl MOD52_021D7688
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02024F9C
+ add r0, r5, #0
+ bl FUN_020237CC
+ cmp r0, #0
+ beq _021D75C8
+ add r0, r5, #0
+ bl FUN_020237FC
+ cmp r0, #0
+ bne _021D75D8
+_021D75C8:
+ add r0, r4, #0
+ bl FUN_02023794
+ bl FUN_020238A4
+ add r0, r5, #0
+ bl FUN_020237A0
+_021D75D8:
+ add r0, r4, #0
+ bl FUN_02023918
+ bl FUN_02015E3C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD52_021D7594
+
+ thumb_func_start MOD52_021D75E8
+MOD52_021D75E8: ; 0x021D75E8
+ push {r3, lr}
+ mov r0, #0x4d
+ bl FUN_020168D0
+ mov r0, #0
+ ldr r1, _021D7600 ; =0x020F2B8C
+ mvn r0, r0
+ bl FUN_02000E7C
+ mov r0, #1
+ pop {r3, pc}
+ nop
+_021D7600: .word 0x020F2B8C
+ thumb_func_end MOD52_021D75E8
+
+ thumb_func_start MOD52_021D7604
+MOD52_021D7604: ; 0x021D7604
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ str r0, [sp]
+ add r0, r5, #0
+ add r6, r2, #0
+ bl FUN_02023788
+ bl FUN_020237A0
+ add r0, r5, #0
+ bl FUN_02023794
+ bl FUN_02023840
+ add r0, r5, #0
+ bl FUN_0202881C
+ add r4, r0, #0
+ bl FUN_0201BA60
+ add r2, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02028788
+ add r0, r5, #0
+ bl FUN_0206007C
+ add r0, r5, #0
+ bl FUN_020238F4
+ add r4, r0, #0
+ bl FUN_0201BA60
+ add r7, r0, #0
+ cmp r6, #0
+ beq _021D7656
+ add r0, r4, #0
+ add r1, r7, #0
+ bl FUN_020239B8
+_021D7656:
+ add r0, r4, #0
+ bl FUN_020239CC
+ add r1, r0, #0
+ add r0, r7, #0
+ mov r2, #0
+ bl FUN_02053678
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl FUN_02023A2C
+ add r0, r5, #0
+ bl FUN_02024ECC
+ ldr r1, [sp]
+ ldr r2, _021D7684 ; =0x021D76F8
+ mov r3, #0x76
+ bl FUN_020250C4
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7684: .word 0x021D76F8
+ thumb_func_end MOD52_021D7604
+
+ thumb_func_start MOD52_021D7688
+MOD52_021D7688: ; 0x021D7688
+ push {r3, lr}
+ add r0, r1, #0
+ bl FUN_020226FC
+ cmp r0, #0
+ bne _021D769A
+ mov r0, #0
+ bl OS_ResetSystem
+_021D769A:
+ pop {r3, pc}
+ thumb_func_end MOD52_021D7688
+
+ thumb_func_start MOD52_021D769C
+MOD52_021D769C: ; 0x021D769C
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl FUN_020227DC
+ add r0, r4, #0
+ bl FUN_020377E0
+ add r0, r4, #0
+ bl FUN_020238F4
+ ldr r1, _021D76C4 ; =0x00000BB8
+ bl FUN_02023A14
+ add r0, r4, #0
+ bl FUN_020462AC
+ bl FUN_0205ECD4
+ pop {r4, pc}
+ .align 2, 0
+_021D76C4: .word 0x00000BB8
+ thumb_func_end MOD52_021D769C
+
+ .section .rodata
+ ; 0x021D76C8
+ .global MOD52_UNK_021D76C8
+MOD52_UNK_021D76C8: ; 0x021D76C8
+ .incbin "baserom.nds", 0x299BE8, 0x208
diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s
new file mode 100644
index 00000000..e4dacfc6
--- /dev/null
+++ b/arm9/modules/53/asm/module_53.s
@@ -0,0 +1,4051 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD53_021D74E0
+MOD53_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r6, r0, #0
+ cmp r1, #0
+ beq _021D74F6
+ cmp r1, #1
+ bne _021D74F4
+ b _021D7622
+_021D74F4:
+ b _021D7630
+_021D74F6:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7638 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D763C ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #3
+ mov r1, #0x27
+ lsl r2, r2, #6
+ bl FUN_0201681C
+ ldr r1, _021D7640 ; =0x0000940C
+ add r0, r6, #0
+ mov r2, #0x27
+ bl FUN_02006268
+ ldr r2, _021D7640 ; =0x0000940C
+ mov r1, #0
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x27
+ bl FUN_02016B94
+ str r0, [r4]
+ mov r0, #0x27
+ bl FUN_0200AA80
+ str r0, [r4, #0xc]
+ ldr r2, _021D7644 ; =0x00000176
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x27
+ bl FUN_0200A86C
+ str r0, [r4, #0x10]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ bl MOD53_021D78D0
+ ldr r0, [r4]
+ bl MOD53_021D78F0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0x11
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add r0, r6, #0
+ bl FUN_0200628C
+ str r0, [r4, #8]
+ add r0, r4, #0
+ bl MOD53_021D7B60
+ bl FUN_0201CC08
+ mov r0, #2
+ bl FUN_0201CC24
+ ldr r0, _021D7648 ; =MOD53_021D78A8
+ ldr r1, [r4]
+ bl FUN_02015F10
+ add r0, r4, #0
+ bl MOD53_021D79F8
+ bl MOD53_021D7C54
+ add r0, r4, #0
+ bl MOD53_021D7C84
+ add r0, r4, #0
+ bl MOD53_021D7E08
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD53_021D7FDC
+ mov r1, #0
+ mov r0, #0x34
+ add r2, r1, #0
+ bl FUN_0200433C
+ ldr r2, _021D764C ; =0x04000304
+ ldr r0, _021D7650 ; =0xFFFF7FFF
+ ldrh r1, [r2]
+ and r0, r1
+ strh r0, [r2]
+ add r0, r4, #0
+ bl FUN_02083D48
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020334E8
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D7602
+ mov r0, #3
+ bl FUN_02032B6C
+_021D7602:
+ bl FUN_02033E74
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D761A
+ mov r0, #1
+ bl FUN_02052B74
+ mov r0, #1
+ bl FUN_0202EEB0
+_021D761A:
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D7630
+_021D7622:
+ bl FUN_02006278
+ mov r0, #0
+ str r0, [r5]
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D7630:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D7638: .word 0xFFFFE0FF
+_021D763C: .word 0x04001000
+_021D7640: .word 0x0000940C
+_021D7644: .word 0x00000176
+_021D7648: .word MOD53_021D78A8
+_021D764C: .word 0x04000304
+_021D7650: .word 0xFFFF7FFF
+ thumb_func_end MOD53_021D74E0
+
+ thumb_func_start MOD53_021D7654
+MOD53_021D7654: ; 0x021D7654
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D767A
+ ldr r0, _021D7750 ; =0x000093B4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D767A
+ bl FUN_0202CB8C
+ ldr r1, _021D7750 ; =0x000093B4
+ ldr r2, [r4, r1]
+ and r0, r2
+ str r0, [r4, r1]
+_021D767A:
+ mov r0, #3
+ ldr r1, [r5]
+ lsl r0, r0, #8
+ str r1, [r4, r0]
+ ldr r1, [r5]
+ add r0, r4, #0
+ bl MOD53_021D93E8
+ ldr r1, [r5]
+ cmp r1, #3
+ bhi _021D7744
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D769C: ; jump table
+ .short _021D76A4 - _021D769C - 2 ; case 0
+ .short _021D76D2 - _021D769C - 2 ; case 1
+ .short _021D7718 - _021D769C - 2 ; case 2
+ .short _021D7738 - _021D769C - 2 ; case 3
+_021D76A4:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D7744
+ bl FUN_02031190
+ cmp r0, #0
+ beq _021D76CC
+ bl MOD53_021D9160
+ cmp r0, #2
+ blt _021D7744
+ mov r1, #0
+ mov r0, #0x80
+ add r2, r1, #0
+ bl FUN_02030ADC
+ mov r0, #1
+ str r0, [r5]
+ b _021D7744
+_021D76CC:
+ mov r0, #1
+ str r0, [r5]
+ b _021D7744
+_021D76D2:
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ lsl r2, r0, #3
+ ldr r0, _021D7754 ; =0x021D98A0
+ ldr r2, [r0, r2]
+ cmp r2, #0
+ beq _021D76E8
+ add r0, r4, #0
+ blx r2
+ str r0, [r5]
+_021D76E8:
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ ldr r2, _021D7758 ; =0x000E0D0F
+ add r0, r4, r0
+ mov r1, #0
+ add r3, r4, #0
+ bl MOD53_021D9014
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D770E
+ add r0, r4, #0
+ bl MOD53_021D928C
+ ldr r1, [r5]
+ cmp r1, #1
+ bne _021D770E
+ str r0, [r5]
+_021D770E:
+ ldr r0, _021D775C ; =0x00004374
+ add r0, r4, r0
+ bl MOD53_021D8FB8
+ b _021D7744
+_021D7718:
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ lsl r3, r0, #3
+ ldr r0, _021D7754 ; =0x021D98A0
+ ldr r2, [r0, r3]
+ cmp r2, #0
+ beq _021D7744
+ ldr r0, _021D7760 ; =0x021D98A4
+ ldr r0, [r0, r3]
+ cmp r0, #0
+ beq _021D7744
+ add r0, r4, #0
+ blx r2
+ str r0, [r5]
+ b _021D7744
+_021D7738:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D7744
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D7744:
+ ldr r0, [r4, #0x34]
+ bl FUN_0201FDEC
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D7750: .word 0x000093B4
+_021D7754: .word 0x021D98A0
+_021D7758: .word 0x000E0D0F
+_021D775C: .word 0x00004374
+_021D7760: .word 0x021D98A4
+ thumb_func_end MOD53_021D7654
+
+ thumb_func_start MOD53_021D7764
+MOD53_021D7764: ; 0x021D7764
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ bl FUN_02006278
+ add r6, r0, #0
+ add r0, r5, #0
+ bl FUN_0200628C
+ add r4, r0, #0
+ ldr r0, [r7]
+ cmp r0, #3
+ bls _021D7780
+ b _021D789E
+_021D7780:
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D778C: ; jump table
+ .short _021D7794 - _021D778C - 2 ; case 0
+ .short _021D7820 - _021D778C - 2 ; case 1
+ .short _021D784E - _021D778C - 2 ; case 2
+ .short _021D786E - _021D778C - 2 ; case 3
+_021D7794:
+ mov r0, #0x27
+ bl FUN_020294A8
+ add r1, r0, #0
+ ldr r0, [r4, #4]
+ mov r2, #4
+ bl FUN_02028AD4
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0x17
+ lsl r0, r0, #4
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r4, #0
+ add r5, r6, #0
+_021D77D8:
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D77D8
+ ldr r0, [r6, #0x34]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ add r0, r6, #0
+ bl MOD53_021D8104
+ ldr r0, [r6]
+ bl MOD53_021D7B24
+ bl FUN_0201CD04
+ ldr r0, [r6, #0x10]
+ bl FUN_0200A8B8
+ ldr r0, [r6, #0xc]
+ bl FUN_0200AB18
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021D789E
+_021D7820:
+ mov r0, #1
+ bl FUN_02032B6C
+ bl FUN_02031B50
+ ldr r0, [r4]
+ bl FUN_02052F8C
+ ldr r2, _021D78A4 ; =0x04000304
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ mov r0, #0
+ bl FUN_02052B74
+ mov r0, #0
+ bl FUN_0202EEB0
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021D789E
+_021D784E:
+ mov r1, #0x25
+ lsl r1, r1, #0xa
+ ldr r1, [r6, r1]
+ cmp r1, #0
+ beq _021D7868
+ bl FUN_0202CB8C
+ cmp r0, #1
+ bne _021D789E
+ ldr r0, [r7]
+ add r0, r0, #1
+ str r0, [r7]
+ b _021D789E
+_021D7868:
+ add r0, r0, #1
+ str r0, [r7]
+ b _021D789E
+_021D786E:
+ mov r0, #2
+ bl FUN_02032B6C
+ add r0, r6, #0
+ bl MOD53_021D7AE8
+ ldr r0, [r6, #8]
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0x27
+ bl FUN_020168D0
+ mov r0, #2
+ bl FUN_02032B6C
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D789E:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D78A4: .word 0x04000304
+ thumb_func_end MOD53_021D7764
+
+ thumb_func_start MOD53_021D78A8
+MOD53_021D78A8: ; 0x021D78A8
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0201C30C
+ bl FUN_02009F80
+ add r0, r4, #0
+ bl FUN_0201AB60
+ ldr r3, _021D78C8 ; =0x027E0000
+ ldr r1, _021D78CC ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D78C8: .word 0x027E0000
+_021D78CC: .word 0x00003FF8
+ thumb_func_end MOD53_021D78A8
+
+ thumb_func_start MOD53_021D78D0
+MOD53_021D78D0: ; 0x021D78D0
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D78EC ; =0x021D95A4
+ add r3, sp, #0
+ mov r2, #5
+_021D78DA:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D78DA
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D78EC: .word 0x021D95A4
+ thumb_func_end MOD53_021D78D0
+
+ thumb_func_start MOD53_021D78F0
+MOD53_021D78F0: ; 0x021D78F0
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ ldr r5, _021D79E0 ; =0x021D94F8
+ add r3, sp, #0x8c
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D79E4 ; =0x021D9518
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02018744
+ ldr r5, _021D79E8 ; =0x021D9550
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ ldr r5, _021D79EC ; =0x021D956C
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D79F0 ; =0x021D9588
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02018744
+ ldr r5, _021D79F4 ; =0x021D9534
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ add r0, r4, #0
+ mov r1, #5
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x27
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x27
+ bl FUN_02017F18
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ nop
+_021D79E0: .word 0x021D94F8
+_021D79E4: .word 0x021D9518
+_021D79E8: .word 0x021D9550
+_021D79EC: .word 0x021D956C
+_021D79F0: .word 0x021D9588
+_021D79F4: .word 0x021D9534
+ thumb_func_end MOD53_021D78F0
+
+ thumb_func_start MOD53_021D79F8
+MOD53_021D79F8: ; 0x021D79F8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _021D7ACC ; =0x0000438A
+ add r6, r7, #0
+ add r4, r7, r0
+ mov r0, #0x38
+ add r5, r7, #0
+ str r0, [sp, #4]
+_021D7A0E:
+ mov r0, #8
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r6, #0x14]
+ ldrb r1, [r4]
+ ldr r0, [sp, #4]
+ bic r1, r0
+ strb r1, [r4]
+ ldr r0, _021D7AD0 ; =0x000043B6
+ mov r1, #0
+ strh r1, [r6, r0]
+ mov r0, #0xcd
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r0, #4
+ str r1, [r5, r0]
+ ldr r0, [sp]
+ add r6, r6, #4
+ add r0, r0, #1
+ add r4, #0xa
+ add r5, #8
+ str r0, [sp]
+ cmp r0, #5
+ blt _021D7A0E
+ mov r0, #0xa
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r7, #0x28]
+ mov r0, #0x50
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r7, #0x2c]
+ ldr r0, _021D7AD4 ; =0x00004376
+ mov r2, #0
+ strb r2, [r7, r0]
+ mov r1, #1
+ add r0, r0, #1
+ strb r1, [r7, r0]
+ ldr r0, _021D7AD8 ; =0x000093F4
+ str r1, [r7, r0]
+ add r0, r0, #4
+ str r2, [r7, r0]
+ mov r0, #0xc6
+ mov r1, #2
+ lsl r0, r0, #2
+ str r1, [r7, r0]
+ bl FUN_0202CB8C
+ mov r1, #0xc7
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ ldr r2, _021D7ADC ; =0x000093FC
+ mov r3, #0
+ str r3, [r7, r2]
+ add r0, r2, #4
+ str r3, [r7, r0]
+ add r0, r2, #0
+ sub r1, #0x18
+ str r3, [r7, r1]
+ add r0, #8
+ str r3, [r7, r0]
+ add r2, #0xc
+ str r3, [r7, r2]
+ bl FUN_02031190
+ add r0, r7, #0
+ mov r1, #4
+ bl MOD53_021D93E0
+ ldr r0, [r7, #0x10]
+ ldr r2, [r7, #0x28]
+ mov r1, #7
+ bl FUN_0200A8E0
+ mov r1, #0xf
+ mov r0, #0x27
+ lsl r1, r1, #0xa
+ bl FUN_02016998
+ ldr r1, _021D7AE0 ; =0x000043C8
+ str r0, [r7, r1]
+ mov r0, #0x27
+ bl FUN_02014590
+ ldr r1, _021D7AE4 ; =0x000093F0
+ str r0, [r7, r1]
+ mov r0, #0xc5
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r7, r0]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7ACC: .word 0x0000438A
+_021D7AD0: .word 0x000043B6
+_021D7AD4: .word 0x00004376
+_021D7AD8: .word 0x000093F4
+_021D7ADC: .word 0x000093FC
+_021D7AE0: .word 0x000043C8
+_021D7AE4: .word 0x000093F0
+ thumb_func_end MOD53_021D79F8
+
+ thumb_func_start MOD53_021D7AE8
+MOD53_021D7AE8: ; 0x021D7AE8
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, _021D7B1C ; =0x000043C8
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ ldr r0, _021D7B20 ; =0x000093F0
+ ldr r0, [r6, r0]
+ bl FUN_020145A8
+ mov r4, #0
+ add r5, r6, #0
+_021D7B00:
+ ldr r0, [r5, #0x14]
+ bl FUN_02021A20
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _021D7B00
+ ldr r0, [r6, #0x2c]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x28]
+ bl FUN_02021A20
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D7B1C: .word 0x000043C8
+_021D7B20: .word 0x000093F0
+ thumb_func_end MOD53_021D7AE8
+
+ thumb_func_start MOD53_021D7B24
+MOD53_021D7B24: ; 0x021D7B24
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #5
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D7B24
+
+ thumb_func_start MOD53_021D7B60
+MOD53_021D7B60: ; 0x021D7B60
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r4, [r5]
+ mov r0, #0x40
+ mov r1, #0
+ str r0, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ mov r0, #0x4e
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02006930
+ mov r0, #0x40
+ str r0, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ mov r0, #0x4e
+ mov r1, #1
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r1, #0x1a
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x27
+ bl FUN_02002EEC
+ mov r1, #0x1a
+ mov r0, #4
+ lsl r1, r1, #4
+ mov r2, #0x27
+ bl FUN_02002EEC
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x27
+ mov r1, #2
+ str r0, [sp, #0xc]
+ mov r0, #0x4e
+ add r2, r4, #0
+ add r3, r1, #0
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x27
+ str r0, [sp, #0xc]
+ mov r0, #0x4e
+ mov r1, #4
+ add r2, r4, #0
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x27
+ str r0, [sp, #0xc]
+ mov r0, #0x4e
+ mov r1, #3
+ add r2, r4, #0
+ mov r3, #5
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x27
+ mov r1, #5
+ str r0, [sp, #0xc]
+ mov r0, #0x4e
+ add r2, r4, #0
+ add r3, r1, #0
+ bl FUN_020068C8
+ ldr r0, [r5, #8]
+ ldr r0, [r0, #8]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200CD68
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_0200CB00
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD53_021D7B60
+
+ thumb_func_start MOD53_021D7C54
+MOD53_021D7C54: ; 0x021D7C54
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021D7C80 ; =0x021D9508
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_0201D040
+ mov r0, #0x14
+ mov r1, #0x27
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021D7C80: .word 0x021D9508
+ thumb_func_end MOD53_021D7C54
+
+ thumb_func_start MOD53_021D7C84
+MOD53_021D7C84: ; 0x021D7C84
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x7e
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x27
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ add r1, r5, #0
+ mov r0, #0x35
+ add r1, #0x38
+ mov r2, #0x27
+ bl FUN_02008C9C
+ str r0, [r5, #0x34]
+ add r0, r5, #0
+ mov r2, #1
+ add r0, #0x38
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ mov r7, #0x16
+ mov r6, #0
+ add r4, r5, #0
+ lsl r7, r7, #4
+_021D7CCA:
+ mov r0, #2
+ add r1, r6, #0
+ mov r2, #0x27
+ bl FUN_02008DEC
+ str r0, [r4, r7]
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _021D7CCA
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x4e
+ mov r2, #6
+ bl FUN_02008F34
+ mov r1, #0x17
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #7
+ str r0, [sp, #8]
+ mov r0, #0x27
+ sub r1, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ add r3, r2, #0
+ bl FUN_02008FEC
+ mov r1, #0x5d
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ mov r2, #7
+ mov r3, #1
+ bl FUN_020090AC
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ mov r2, #8
+ mov r3, #1
+ bl FUN_020090AC
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0x1c
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ mov r2, #6
+ bl FUN_02008F34
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0x27
+ mov r2, #0
+ sub r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ add r3, r2, #0
+ bl FUN_02008FEC
+ mov r1, #0x61
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0x1c
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ mov r2, #7
+ bl FUN_020090AC
+ mov r1, #0x62
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0x1c
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x4e
+ mov r2, #8
+ bl FUN_020090AC
+ mov r1, #0x63
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ sub r1, #0x1c
+ ldr r0, [r5, r1]
+ bl FUN_02009A50
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ bl FUN_02009A50
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD53_021D7C84
+
+ thumb_func_start MOD53_021D7E08
+MOD53_021D7E08: ; 0x021D7E08
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x64
+ mov r1, #0
+ add r5, r0, #0
+ str r1, [sp]
+ sub r0, r1, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r2, #0x16
+ str r1, [sp, #0x10]
+ lsl r2, r2, #4
+ ldr r0, [r5, r2]
+ add r3, r1, #0
+ str r0, [sp, #0x14]
+ add r0, r2, #4
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x18]
+ add r0, r2, #0
+ add r0, #8
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x1c]
+ add r0, r2, #0
+ add r0, #0xc
+ ldr r0, [r5, r0]
+ add r2, #0x30
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ add r0, r5, r2
+ add r2, r1, #0
+ str r1, [sp, #0x28]
+ bl FUN_02008AA4
+ mov r1, #1
+ mov r3, #0x16
+ str r1, [sp]
+ sub r0, r1, #2
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r3, r3, #4
+ ldr r2, [r5, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r5, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r5, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ add r3, #0x54
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, r5, r3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02008AA4
+ ldr r0, [r5, #0x34]
+ mov r6, #0
+ str r0, [sp, #0x34]
+ mov r0, #0x19
+ lsl r0, r0, #4
+ add r0, r5, r0
+ str r0, [sp, #0x38]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r6, [sp, #0x44]
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x4c]
+ str r0, [sp, #0x50]
+ add r0, sp, #0x34
+ strh r6, [r0, #0x20]
+ mov r0, #1
+ str r0, [sp, #0x58]
+ str r0, [sp, #0x5c]
+ mov r0, #0x27
+ str r0, [sp, #0x60]
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r7, #0x18
+ add r4, r5, #0
+ str r0, [sp, #0x2c]
+_021D7EBC:
+ ldr r0, [sp, #0x2c]
+ str r0, [sp, #0x38]
+ lsl r0, r7, #0xc
+ str r0, [sp, #0x3c]
+ mov r0, #1
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x40]
+ mov r0, #2
+ str r0, [sp, #0x5c]
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ mov r1, #0x76
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r6, #0
+ bl FUN_02020130
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r7, #0x28
+ add r4, r4, #4
+ cmp r6, #5
+ blt _021D7EBC
+ mov r0, #0x6d
+ lsl r0, r0, #2
+ add r0, r5, r0
+ ldr r6, _021D7FD8 ; =0x021D9600
+ mov r7, #0
+ add r4, r5, #0
+ str r0, [sp, #0x30]
+_021D7F14:
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #0x38]
+ ldrh r0, [r6]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x3c]
+ ldrh r0, [r6, #2]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x40]
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ mov r1, #0x92
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x92
+ lsl r0, r0, #2
+ ldrh r1, [r6, #4]
+ ldr r0, [r4, r0]
+ bl FUN_02020130
+ cmp r7, #8
+ blt _021D7F56
+ mov r0, #0x92
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl FUN_02020238
+_021D7F56:
+ add r7, r7, #1
+ add r6, r6, #6
+ add r4, r4, #4
+ cmp r7, #0xc
+ blt _021D7F14
+ mov r0, #0x92
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #6
+ bl FUN_02020130
+ mov r7, #6
+ mov r6, #0
+ mov r4, #0x20
+ lsl r7, r7, #0xe
+_021D7F74:
+ mov r0, #1
+ lsl r1, r4, #0xc
+ lsl r0, r0, #0x14
+ add r0, r1, r0
+ str r0, [sp, #0x40]
+ add r0, sp, #0x34
+ str r7, [sp, #0x3c]
+ bl FUN_0201FE94
+ mov r1, #0x21
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_02020130
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_02020310
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r4, #0x20
+ add r5, r5, #4
+ cmp r6, #5
+ blt _021D7F74
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x64
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7FD8: .word 0x021D9600
+ thumb_func_end MOD53_021D7E08
+
+ thumb_func_start MOD53_021D7FDC
+MOD53_021D7FDC: ; 0x021D7FDC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x28
+ mov r1, #0xb6
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r7]
+ add r1, r7, r1
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02019064
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r7, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x1e
+ str r0, [sp, #4]
+ mov r0, #0xf
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r2, #1
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r1, #0xb2
+ lsl r1, r1, #2
+ ldr r0, [r7]
+ add r1, r7, r1
+ add r3, r2, #0
+ bl FUN_02019064
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r0, r7, r0
+ mov r1, #2
+ bl FUN_02019620
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _021D80F8 ; =0x000001C3
+ mov r1, #0xba
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r7]
+ add r1, r7, r1
+ mov r2, #1
+ mov r3, #0x19
+ bl FUN_02019064
+ mov r0, #0xba
+ lsl r0, r0, #2
+ add r0, r7, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r1, [r7, #0x28]
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0x30
+ bl FUN_02002F40
+ add r3, r0, #0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D80FC ; =0x00070100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0xba
+ lsl r0, r0, #2
+ ldr r2, [r7, #0x28]
+ add r0, r7, r0
+ mov r1, #1
+ add r3, r3, #2
+ bl FUN_0201BDE0
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ mov r6, #1
+ mov r4, #3
+ add r5, r7, r0
+_021D80A8:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r7]
+ add r1, r5, #0
+ mov r2, #4
+ mov r3, #5
+ bl FUN_02019064
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [sp, #0x14]
+ add r6, #0x14
+ add r0, r0, #1
+ add r4, r4, #4
+ add r5, #0x10
+ str r0, [sp, #0x14]
+ cmp r0, #5
+ blt _021D80A8
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ ldr r2, _021D8100 ; =0x000E0D0F
+ add r0, r7, r0
+ mov r1, #0
+ add r3, r7, #0
+ bl MOD53_021D9014
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D80F8: .word 0x000001C3
+_021D80FC: .word 0x00070100
+_021D8100: .word 0x000E0D0F
+ thumb_func_end MOD53_021D7FDC
+
+ thumb_func_start MOD53_021D8104
+MOD53_021D8104: ; 0x021D8104
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r0, #0x9e
+ lsl r0, r0, #2
+ mov r4, #0
+ add r5, r6, r0
+_021D8110:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #5
+ blt _021D8110
+ mov r0, #0xba
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D8104
+
+ thumb_func_start MOD53_021D8140
+MOD53_021D8140: ; 0x021D8140
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r5, r2, #0
+ cmp r1, #0
+ ble _021D815E
+ lsl r0, r1, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D816C
+_021D815E:
+ lsl r0, r1, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D816C:
+ bl _ffix
+ sub r5, #8
+ str r0, [sp]
+ cmp r5, #0
+ ble _021D818A
+ lsl r0, r5, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _021D8198
+_021D818A:
+ lsl r0, r5, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_021D8198:
+ bl _ffix
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D8140
+
+ thumb_func_start MOD53_021D81B0
+MOD53_021D81B0: ; 0x021D81B0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x54
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _021D83AC ; =0x021D95CC
+ bl FUN_02020988
+ mov r1, #0
+ mvn r1, r1
+ str r0, [sp, #8]
+ cmp r0, r1
+ beq _021D81FE
+ cmp r0, #0xb
+ bhi _021D81FE
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D81DA: ; jump table
+ .short _021D81F2 - _021D81DA - 2 ; case 0
+ .short _021D81F2 - _021D81DA - 2 ; case 1
+ .short _021D81F2 - _021D81DA - 2 ; case 2
+ .short _021D81F2 - _021D81DA - 2 ; case 3
+ .short _021D81F2 - _021D81DA - 2 ; case 4
+ .short _021D81F2 - _021D81DA - 2 ; case 5
+ .short _021D81F2 - _021D81DA - 2 ; case 6
+ .short _021D81F2 - _021D81DA - 2 ; case 7
+ .short _021D821A - _021D81DA - 2 ; case 8
+ .short _021D82BE - _021D81DA - 2 ; case 9
+ .short _021D82BE - _021D81DA - 2 ; case 10
+ .short _021D82BE - _021D81DA - 2 ; case 11
+_021D81F2:
+ ldr r2, _021D83B0 ; =0x00004376
+ ldr r0, [sp]
+ ldrb r1, [r0, r2]
+ ldr r0, [sp, #8]
+ cmp r1, r0
+ bne _021D8200
+_021D81FE:
+ b _021D8316
+_021D8200:
+ add r1, r0, #0
+ ldr r0, [sp]
+ strb r1, [r0, r2]
+ mov r1, #0x92
+ lsl r1, r1, #2
+ add r0, r0, r1
+ ldr r1, [sp, #8]
+ bl MOD53_021D83DC
+ ldr r0, _021D83B4 ; =0x000005DC
+ bl FUN_020054C8
+ b _021D8316
+_021D821A:
+ mov r1, #0xc1
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ cmp r0, #4
+ bne _021D8316
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8280
+ bl FUN_0202CB8C
+ mov r2, #0xc7
+ ldr r1, [sp]
+ lsl r2, r2, #2
+ ldr r1, [r1, r2]
+ cmp r1, r0
+ beq _021D8246
+ ldr r0, _021D83B8 ; =0x000005F2
+ bl FUN_020054C8
+ b _021D8316
+_021D8246:
+ bl FUN_02030F20
+ bl FUN_02032B6C
+ ldr r1, _021D83BC ; =0x000093F4
+ ldr r0, [sp]
+ mov r2, #2
+ str r2, [r0, r1]
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD53_021D91C8
+ ldr r0, [sp]
+ mov r1, #5
+ bl MOD53_021D93E0
+ mov r1, #0x92
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ add r0, r0, r1
+ mov r1, #1
+ bl MOD53_021D840C
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _021D83B4 ; =0x000005DC
+ bl FUN_020054C8
+ b _021D8316
+_021D8280:
+ ldr r1, _021D83C0 ; =0x0000438B
+ ldr r0, [sp]
+ ldrb r0, [r0, r1]
+ cmp r0, #2
+ bne _021D8292
+ ldr r0, _021D83B8 ; =0x000005F2
+ bl FUN_020054C8
+ b _021D8316
+_021D8292:
+ mov r1, #1
+ ldr r0, [sp]
+ add r2, r1, #0
+ bl MOD53_021D91C8
+ ldr r0, [sp]
+ mov r1, #5
+ bl MOD53_021D93E0
+ mov r1, #0x92
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ add r0, r0, r1
+ mov r1, #1
+ bl MOD53_021D840C
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _021D83B4 ; =0x000005DC
+ bl FUN_020054C8
+ b _021D8316
+_021D82BE:
+ ldr r0, [sp, #8]
+ ldr r5, [sp]
+ str r0, [sp, #0xc]
+ sub r0, #9
+ mov r4, #0
+ mov r7, #0x1e
+ mov r6, #0x1d
+ str r0, [sp, #0xc]
+_021D82CE:
+ ldr r0, [sp, #0xc]
+ cmp r0, r4
+ bne _021D82E2
+ mov r0, #0x9b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r7, #0
+ bl FUN_02020130
+ b _021D82EE
+_021D82E2:
+ mov r0, #0x9b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_02020130
+_021D82EE:
+ add r4, r4, #1
+ add r7, r7, #2
+ add r5, r5, #4
+ add r6, r6, #2
+ cmp r4, #3
+ blt _021D82CE
+ ldr r2, _021D83C4 ; =0x00004377
+ ldr r0, [sp]
+ ldrb r1, [r0, r2]
+ ldr r0, [sp, #8]
+ sub r0, #9
+ str r0, [sp, #8]
+ cmp r1, r0
+ beq _021D8316
+ add r1, r0, #0
+ ldr r0, [sp]
+ strb r1, [r0, r2]
+ ldr r0, _021D83C8 ; =0x000005E5
+ bl FUN_020054C8
+_021D8316:
+ ldr r0, _021D83CC ; =0x021D94F0
+ bl FUN_02020968
+ add r4, r0, #0
+ bl FUN_02031190
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ add r1, r0, r1
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ beq _021D836C
+ bl FUN_02031190
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ ldr r2, _021D83D0 ; =0x021C48F8
+ add r1, r0, r1
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldrh r1, [r2, #0x1c]
+ ldrh r2, [r2, #0x1e]
+ bl MOD53_021D8140
+ bl FUN_02031190
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ add r1, r0, r1
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+_021D836C:
+ add r0, sp, #0x10
+ mov r1, #4
+ mov r2, #0x40
+ bl FUN_0201CD38
+ cmp r0, #1
+ bne _021D83A6
+ ldr r3, _021D83D4 ; =0x00004378
+ ldr r0, [sp]
+ ldr r2, [sp]
+ sub r4, r3, #2
+ ldrb r2, [r2, r4]
+ add r0, r0, r3
+ sub r4, r3, #1
+ ldr r3, [sp]
+ add r1, sp, #0x10
+ ldrb r3, [r3, r4]
+ bl MOD53_021D947C
+ ldr r0, [sp, #4]
+ cmp r0, #1
+ bne _021D83A6
+ ldr r1, _021D83D8 ; =0x00004380
+ ldr r0, [sp]
+ ldrb r2, [r0, r1]
+ mov r0, #0x38
+ bic r2, r0
+ ldr r0, [sp]
+ strb r2, [r0, r1]
+_021D83A6:
+ add sp, #0x54
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D83AC: .word 0x021D95CC
+_021D83B0: .word 0x00004376
+_021D83B4: .word 0x000005DC
+_021D83B8: .word 0x000005F2
+_021D83BC: .word 0x000093F4
+_021D83C0: .word 0x0000438B
+_021D83C4: .word 0x00004377
+_021D83C8: .word 0x000005E5
+_021D83CC: .word 0x021D94F0
+_021D83D0: .word 0x021C48F8
+_021D83D4: .word 0x00004378
+_021D83D8: .word 0x00004380
+ thumb_func_end MOD53_021D81B0
+
+ thumb_func_start MOD53_021D83DC
+MOD53_021D83DC: ; 0x021D83DC
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r4, _021D8408 ; =0x021D9600
+ add r5, r0, #0
+ add r7, r1, #0
+ mov r6, #0
+_021D83E6:
+ cmp r6, r7
+ ldr r0, [r5]
+ bne _021D83F6
+ ldrh r1, [r4, #4]
+ add r1, r1, #1
+ bl FUN_02020130
+ b _021D83FC
+_021D83F6:
+ ldrh r1, [r4, #4]
+ bl FUN_02020130
+_021D83FC:
+ add r6, r6, #1
+ add r4, r4, #6
+ add r5, r5, #4
+ cmp r6, #8
+ blt _021D83E6
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8408: .word 0x021D9600
+ thumb_func_end MOD53_021D83DC
+
+ thumb_func_start MOD53_021D840C
+MOD53_021D840C: ; 0x021D840C
+ push {r3, lr}
+ cmp r1, #1
+ ldr r0, [r0, #0x20]
+ bne _021D841C
+ mov r1, #0x16
+ bl FUN_02020130
+ pop {r3, pc}
+_021D841C:
+ mov r1, #0x15
+ bl FUN_02020130
+ pop {r3, pc}
+ thumb_func_end MOD53_021D840C
+
+ thumb_func_start MOD53_021D8424
+MOD53_021D8424: ; 0x021D8424
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD53_021D81B0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8446
+ bl MOD53_021D8FF8
+ cmp r0, #1
+ beq _021D844C
+ add r0, r5, #0
+ bl MOD53_021D90F8
+ b _021D844C
+_021D8446:
+ add r0, r5, #0
+ bl MOD53_021D90F8
+_021D844C:
+ add r0, r5, #0
+ bl MOD53_021D8F50
+ ldr r2, _021D846C ; =0x00004382
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r1, r5, r2
+ add r2, #0x32
+ add r0, r5, r0
+ add r2, r5, r2
+ mov r3, #1
+ bl MOD53_021D8E84
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D846C: .word 0x00004382
+ thumb_func_end MOD53_021D8424
+
+ thumb_func_start MOD53_021D8470
+MOD53_021D8470: ; 0x021D8470
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD53_021D8F50
+ ldr r2, _021D8490 ; =0x00004382
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r1, r4, r2
+ add r2, #0x32
+ add r0, r4, r0
+ add r2, r4, r2
+ mov r3, #0
+ bl MOD53_021D8E84
+ pop {r4, pc}
+ nop
+_021D8490: .word 0x00004382
+ thumb_func_end MOD53_021D8470
+
+ thumb_func_start MOD53_021D8494
+MOD53_021D8494: ; 0x021D8494
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02031190
+ mov r1, #0x32
+ lsl r1, r1, #4
+ ldr r1, [r5, r1]
+ cmp r1, r0
+ bne _021D84B4
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0
+ bl MOD53_021D91C8
+ b _021D84BE
+_021D84B4:
+ mov r1, #0
+ add r0, r5, #0
+ add r2, r1, #0
+ bl MOD53_021D91C8
+_021D84BE:
+ add r0, r5, #0
+ mov r1, #2
+ bl MOD53_021D93E0
+ ldr r0, _021D84E4 ; =0x000005E4
+ bl FUN_020054C8
+ mov r1, #0x1e
+ add r2, r1, #0
+ ldr r0, _021D84E8 ; =0x04000050
+ sub r2, #0x24
+ bl G2x_SetBlendBrightness_
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D84E4: .word 0x000005E4
+_021D84E8: .word 0x04000050
+ thumb_func_end MOD53_021D8494
+
+ thumb_func_start MOD53_021D84EC
+MOD53_021D84EC: ; 0x021D84EC
+ push {r4, lr}
+ add r4, r1, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r4, pc}
+ thumb_func_end MOD53_021D84EC
+
+ thumb_func_start MOD53_021D84F8
+MOD53_021D84F8: ; 0x021D84F8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, _021D8524 ; =0x04000050
+ mov r2, #0
+ strh r2, [r1]
+ add r5, r0, #0
+ mov r1, #1
+ bl MOD53_021D926C
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD53_021D93E0
+ add r0, r5, #0
+ bl MOD53_021D8470
+ ldr r0, _021D8528 ; =0x00009404
+ mov r1, #0
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8524: .word 0x04000050
+_021D8528: .word 0x00009404
+ thumb_func_end MOD53_021D84F8
+
+ thumb_func_start MOD53_021D852C
+MOD53_021D852C: ; 0x021D852C
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ bl MOD53_021D923C
+ cmp r0, #0
+ beq _021D8570
+ ldr r0, [r5]
+ mov r1, #0x19
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r0, #0xb4
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ strb r1, [r0, #0x10]
+ mov r1, #6
+ strb r1, [r0, #0x11]
+ add r0, r5, #0
+ add r1, sp, #0
+ bl MOD53_021D941C
+ cmp r0, #0
+ bne _021D8568
+ bl ErrorHandling
+_021D8568:
+ add r0, r5, #0
+ mov r1, #6
+ bl MOD53_021D93E0
+_021D8570:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ thumb_func_end MOD53_021D852C
+
+ thumb_func_start MOD53_021D857C
+MOD53_021D857C: ; 0x021D857C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r1, _021D86C8 ; =0x00004380
+ mov r0, #0x38
+ ldrb r2, [r5, r1]
+ bic r2, r0
+ strb r2, [r5, r1]
+ add r1, #0xb
+ ldrb r0, [r5, r1]
+ cmp r0, #2
+ bne _021D85BA
+ bl FUN_02031190
+ cmp r0, #0
+ beq _021D85BA
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r5, #0
+ bl MOD53_021D9460
+ cmp r0, #0
+ beq _021D85B4
+ ldr r0, _021D86CC ; =0x000005F2
+ bl FUN_020054C8
+_021D85B4:
+ add sp, #4
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, pc}
+_021D85BA:
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D85D6
+ ldr r0, _021D86D0 ; =0x000093B4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D85D6
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add sp, #4
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, pc}
+_021D85D6:
+ bl MOD53_021D9160
+ add r6, r0, #0
+ bl FUN_02030F20
+ cmp r6, r0
+ beq _021D85F0
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add sp, #4
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, pc}
+_021D85F0:
+ ldr r0, _021D86D4 ; =0x000093F0
+ ldr r0, [r5, r0]
+ bl FUN_0201466C
+ cmp r0, #1
+ beq _021D8602
+ cmp r0, #2
+ beq _021D8672
+ b _021D86BA
+_021D8602:
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D861E
+ add r0, r5, #0
+ mov r1, #0xd
+ bl MOD53_021D93E0
+ add r0, r5, #0
+ mov r1, #4
+ mov r2, #1
+ bl MOD53_021D91C8
+ b _021D8660
+_021D861E:
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #4
+ bl MI_CpuFill8
+ mov r1, #0
+ add r0, sp, #0
+ strb r1, [r0, #2]
+ bl FUN_02031190
+ add r1, sp, #0
+ strb r0, [r1]
+ ldr r0, _021D86D8 ; =0x000093BC
+ mov r1, #1
+ strb r1, [r5, r0]
+ mov r1, #0
+ sub r0, r0, #2
+ strh r1, [r5, r0]
+ add r0, r5, #0
+ mov r1, #7
+ bl MOD53_021D93E0
+ mov r0, #0x7e
+ add r1, sp, #0
+ mov r2, #4
+ bl FUN_02030ADC
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+_021D8660:
+ add r0, r5, #0
+ bl MOD53_021D9440
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_020191D0
+ b _021D86BA
+_021D8672:
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD53_021D93E0
+ mov r0, #0x92
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl MOD53_021D840C
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+ add r0, r5, #0
+ bl MOD53_021D9440
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_020191D0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D86BA
+ bl FUN_02030F20
+ add r0, r0, #1
+ bl FUN_02032B6C
+ ldr r0, _021D86DC ; =0x000093F4
+ mov r1, #1
+ str r1, [r5, r0]
+_021D86BA:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D86C8: .word 0x00004380
+_021D86CC: .word 0x000005F2
+_021D86D0: .word 0x000093B4
+_021D86D4: .word 0x000093F0
+_021D86D8: .word 0x000093BC
+_021D86DC: .word 0x000093F4
+ thumb_func_end MOD53_021D857C
+
+ thumb_func_start MOD53_021D86E0
+MOD53_021D86E0: ; 0x021D86E0
+ push {r4, lr}
+ ldr r2, _021D86FC ; =0x00004380
+ add r4, r1, #0
+ ldrb r3, [r0, r2]
+ mov r1, #0x38
+ bic r3, r1
+ strb r3, [r0, r2]
+ ldr r1, _021D8700 ; =0x000093BA
+ mov r2, #0
+ strh r2, [r0, r1]
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+_021D86FC: .word 0x00004380
+_021D8700: .word 0x000093BA
+ thumb_func_end MOD53_021D86E0
+
+ thumb_func_start MOD53_021D8704
+MOD53_021D8704: ; 0x021D8704
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r1, _021D8790 ; =0x00004380
+ mov r0, #0x38
+ ldrb r2, [r5, r1]
+ bic r2, r0
+ strb r2, [r5, r1]
+ bl FUN_02030F20
+ ldr r1, _021D8794 ; =0x000093B8
+ ldrh r1, [r5, r1]
+ cmp r1, r0
+ bne _021D872C
+ bl MOD53_021D9160
+ ldr r1, _021D8794 ; =0x000093B8
+ ldrh r2, [r5, r1]
+ cmp r2, r0
+ beq _021D8744
+_021D872C:
+ ldr r0, _021D8798 ; =0x000093BA
+ mov r1, #0
+ strh r1, [r5, r0]
+ add r0, r5, #0
+ mov r1, #9
+ bl MOD53_021D93E0
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_021D8744:
+ add r0, r1, #2
+ ldrsh r0, [r5, r0]
+ add r2, r0, #1
+ add r0, r1, #2
+ strh r2, [r5, r0]
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x1e
+ ble _021D8784
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #4
+ bl MI_CpuFill8
+ mov r1, #1
+ add r0, sp, #0
+ strb r1, [r0, #2]
+ bl FUN_02031190
+ add r1, sp, #0
+ strb r0, [r1]
+ mov r0, #0x7e
+ add r1, sp, #0
+ mov r2, #4
+ bl FUN_02030ADC
+ ldr r0, _021D8798 ; =0x000093BA
+ mov r1, #0
+ strh r1, [r5, r0]
+ add r0, r5, #0
+ mov r1, #0xa
+ bl MOD53_021D93E0
+_021D8784:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8790: .word 0x00004380
+_021D8794: .word 0x000093B8
+_021D8798: .word 0x000093BA
+ thumb_func_end MOD53_021D8704
+
+ thumb_func_start MOD53_021D879C
+MOD53_021D879C: ; 0x021D879C
+ push {r3, r4, r5, lr}
+ ldr r2, _021D87D0 ; =0x00004380
+ add r5, r0, #0
+ ldrb r3, [r5, r2]
+ add r4, r1, #0
+ mov r1, #0x38
+ bic r3, r1
+ strb r3, [r5, r2]
+ ldr r1, _021D87D4 ; =0x000093BC
+ mov r2, #0
+ strb r2, [r5, r1]
+ mov r1, #4
+ bl MOD53_021D93E0
+ mov r0, #0x92
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl MOD53_021D840C
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D87D0: .word 0x00004380
+_021D87D4: .word 0x000093BC
+ thumb_func_end MOD53_021D879C
+
+ thumb_func_start MOD53_021D87D8
+MOD53_021D87D8: ; 0x021D87D8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #6
+ mov r2, #1
+ bl MOD53_021D91C8
+ add r0, r5, #0
+ mov r1, #0xb
+ bl MOD53_021D93E0
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD53_021D87D8
+
+ thumb_func_start MOD53_021D87F8
+MOD53_021D87F8: ; 0x021D87F8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ bl MOD53_021D923C
+ cmp r0, #0
+ beq _021D8818
+ mov r0, #0x31
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r5, #0
+ mov r1, #0xc
+ bl MOD53_021D93E0
+_021D8818:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D87F8
+
+ thumb_func_start MOD53_021D8824
+MOD53_021D8824: ; 0x021D8824
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0x31
+ lsl r0, r0, #4
+ add r4, r1, #0
+ ldr r1, [r5, r0]
+ add r1, r1, #1
+ str r1, [r5, r0]
+ ldr r0, [r5, r0]
+ cmp r0, #0x3c
+ ble _021D8854
+ mov r1, #0x10
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r4, #3
+_021D8854:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD53_021D8824
+
+ thumb_func_start MOD53_021D8860
+MOD53_021D8860: ; 0x021D8860
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ bl MOD53_021D923C
+ cmp r0, #0
+ beq _021D88A4
+ ldr r0, [r5]
+ mov r1, #0x19
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r0, #0xb4
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ add r0, sp, #0
+ strb r1, [r0, #0x10]
+ mov r1, #6
+ strb r1, [r0, #0x11]
+ add r0, r5, #0
+ add r1, sp, #0
+ bl MOD53_021D941C
+ cmp r0, #0
+ bne _021D889C
+ bl ErrorHandling
+_021D889C:
+ add r0, r5, #0
+ mov r1, #0xe
+ bl MOD53_021D93E0
+_021D88A4:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ thumb_func_end MOD53_021D8860
+
+ thumb_func_start MOD53_021D88B0
+MOD53_021D88B0: ; 0x021D88B0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _021D8960 ; =0x000093F0
+ add r6, r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0201466C
+ add r4, r0, #0
+ bl MOD53_021D9160
+ mov r1, #0xc6
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ cmp r1, r0
+ bne _021D88D6
+ ldr r0, _021D8964 ; =0x000093B4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D88E0
+_021D88D6:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+_021D88E0:
+ cmp r4, #1
+ beq _021D88EA
+ cmp r4, #2
+ beq _021D8916
+ b _021D8954
+_021D88EA:
+ add r0, r5, #0
+ mov r1, #0xf
+ bl MOD53_021D93E0
+ mov r1, #0
+ mov r0, #0x7f
+ add r2, r1, #0
+ bl FUN_02030BC4
+ mov r0, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ bl FUN_0200ABC0
+ add r0, r5, #0
+ mov r6, #2
+ bl MOD53_021D9440
+ b _021D8954
+_021D8916:
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD53_021D93E0
+ mov r0, #0x92
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl MOD53_021D840C
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+ add r0, r5, #0
+ bl MOD53_021D9440
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8954
+ bl FUN_02030F20
+ add r0, r0, #1
+ bl FUN_02032B6C
+ ldr r0, _021D8968 ; =0x000093F4
+ mov r1, #1
+ str r1, [r5, r0]
+_021D8954:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ nop
+_021D8960: .word 0x000093F0
+_021D8964: .word 0x000093B4
+_021D8968: .word 0x000093F4
+ thumb_func_end MOD53_021D88B0
+
+ thumb_func_start MOD53_021D896C
+MOD53_021D896C: ; 0x021D896C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0
+ add r4, r1, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ bl FUN_0200ABC0
+ add r0, r5, #0
+ mov r1, #3
+ mov r2, #1
+ bl MOD53_021D91C8
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD53_021D93E0
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D896C
+
+ thumb_func_start MOD53_021D89A0
+MOD53_021D89A0: ; 0x021D89A0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ bl MOD53_021D923C
+ cmp r0, #0
+ beq _021D89BE
+ add r0, r5, #0
+ mov r1, #0x11
+ bl MOD53_021D93E0
+ mov r0, #0xc8
+ bl FUN_02031588
+_021D89BE:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD53_021D89A0
+
+ thumb_func_start MOD53_021D89C8
+MOD53_021D89C8: ; 0x021D89C8
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #0xc8
+ add r5, r1, #0
+ bl FUN_020315D8
+ cmp r0, #0
+ bne _021D89E2
+ bl FUN_02030F20
+ cmp r0, #1
+ bne _021D89FA
+_021D89E2:
+ mov r1, #0x10
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r5, #3
+_021D89FA:
+ add r0, r4, #0
+ bl MOD53_021D8470
+ add r0, r5, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D89C8
+
+ thumb_func_start MOD53_021D8A08
+MOD53_021D8A08: ; 0x021D8A08
+ add r0, r1, #0
+ bx lr
+ thumb_func_end MOD53_021D8A08
+
+ thumb_func_start MOD53_021D8A0C
+MOD53_021D8A0C: ; 0x021D8A0C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #5
+ mov r2, #1
+ bl MOD53_021D91C8
+ add r0, r5, #0
+ mov r1, #0x14
+ bl MOD53_021D93E0
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD53_021D8A0C
+
+ thumb_func_start MOD53_021D8A2C
+MOD53_021D8A2C: ; 0x021D8A2C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ bl MOD53_021D923C
+ cmp r0, #0
+ beq _021D8A44
+ add r0, r5, #0
+ mov r1, #0xc
+ bl MOD53_021D93E0
+_021D8A44:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D8A2C
+
+ thumb_func_start MOD53_021D8A50
+MOD53_021D8A50: ; 0x021D8A50
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x30]
+ add r4, r1, #0
+ cmp r0, #0xff
+ beq _021D8A6E
+ bl MOD53_021D923C
+ cmp r0, #0
+ bne _021D8A6E
+ ldr r0, [r5, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD7C
+_021D8A6E:
+ add r0, r5, #0
+ mov r1, #2
+ mov r2, #1
+ bl MOD53_021D91C8
+ add r0, r5, #0
+ mov r1, #0x16
+ bl MOD53_021D93E0
+ ldr r0, _021D8AA8 ; =0x000005E4
+ bl FUN_020054C8
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8A96
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD53_021D926C
+_021D8A96:
+ bl FUN_02030F20
+ ldr r1, _021D8AAC ; =0x000093B0
+ str r0, [r5, r1]
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8AA8: .word 0x000005E4
+_021D8AAC: .word 0x000093B0
+ thumb_func_end MOD53_021D8A50
+
+ thumb_func_start MOD53_021D8AB0
+MOD53_021D8AB0: ; 0x021D8AB0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D8AF4 ; =0x000093B0
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8ACE
+ bl FUN_02030F20
+ ldr r1, _021D8AF4 ; =0x000093B0
+ ldr r2, [r5, r1]
+ cmp r2, r0
+ beq _021D8ACE
+ mov r0, #0
+ str r0, [r5, r1]
+_021D8ACE:
+ ldr r0, [r5, #0x30]
+ bl MOD53_021D923C
+ cmp r0, #0
+ beq _021D8AE8
+ add r0, r5, #0
+ mov r1, #0x17
+ bl MOD53_021D93E0
+ mov r0, #0x31
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021D8AE8:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8AF4: .word 0x000093B0
+ thumb_func_end MOD53_021D8AB0
+
+ thumb_func_start MOD53_021D8AF8
+MOD53_021D8AF8: ; 0x021D8AF8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D8B5C ; =0x000093B0
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8B16
+ bl FUN_02030F20
+ ldr r1, _021D8B5C ; =0x000093B0
+ ldr r2, [r5, r1]
+ cmp r2, r0
+ beq _021D8B16
+ mov r0, #0
+ str r0, [r5, r1]
+_021D8B16:
+ mov r0, #0x31
+ lsl r0, r0, #4
+ ldr r1, [r5, r0]
+ add r1, r1, #1
+ str r1, [r5, r0]
+ ldr r0, [r5, r0]
+ cmp r0, #0x3c
+ ble _021D8B50
+ ldr r0, _021D8B5C ; =0x000093B0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bne _021D8B50
+ add r0, r5, #0
+ bl MOD53_021D925C
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD53_021D93E0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8B50
+ ldr r0, _021D8B60 ; =0x000093F4
+ mov r1, #1
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD53_021D926C
+_021D8B50:
+ add r0, r5, #0
+ bl MOD53_021D8470
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8B5C: .word 0x000093B0
+_021D8B60: .word 0x000093F4
+ thumb_func_end MOD53_021D8AF8
+
+ thumb_func_start MOD53_021D8B64
+MOD53_021D8B64: ; 0x021D8B64
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ add r6, r2, #0
+ cmp r5, #0xf
+ bgt _021D8B96
+ bge _021D8C42
+ cmp r5, #9
+ bhi _021D8C4A
+ add r1, r5, r5
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D8B82: ; jump table
+ .short _021D8C40 - _021D8B82 - 2 ; case 0
+ .short _021D8B9C - _021D8B82 - 2 ; case 1
+ .short _021D8C40 - _021D8B82 - 2 ; case 2
+ .short _021D8BDA - _021D8B82 - 2 ; case 3
+ .short _021D8C40 - _021D8B82 - 2 ; case 4
+ .short _021D8C40 - _021D8B82 - 2 ; case 5
+ .short _021D8C40 - _021D8B82 - 2 ; case 6
+ .short _021D8C40 - _021D8B82 - 2 ; case 7
+ .short _021D8C42 - _021D8B82 - 2 ; case 8
+ .short _021D8C42 - _021D8B82 - 2 ; case 9
+_021D8B96:
+ cmp r5, #0x15
+ beq _021D8BE0
+ pop {r4, r5, r6, pc}
+_021D8B9C:
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #6
+ beq _021D8BAA
+ cmp r0, #0xe
+ bne _021D8BB0
+_021D8BAA:
+ add r0, r4, #0
+ bl MOD53_021D9440
+_021D8BB0:
+ mov r0, #0x92
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD53_021D840C
+ add r0, r6, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_0200ABC0
+ mov r0, #0x32
+ lsl r0, r0, #4
+ str r6, [r4, r0]
+ ldr r0, _021D8C4C ; =0x000093B4
+ mov r1, #0
+ str r1, [r4, r0]
+ b _021D8C42
+_021D8BDA:
+ bl MOD53_021D925C
+ b _021D8C42
+_021D8BE0:
+ ldr r0, _021D8C50 ; =0x000093BC
+ ldrb r0, [r4, r0]
+ cmp r0, #1
+ beq _021D8C4A
+ add r0, r6, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_0200ABC0
+ bl FUN_02031190
+ cmp r6, r0
+ beq _021D8C4A
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8C14
+ ldr r1, _021D8C4C ; =0x000093B4
+ ldr r0, _021D8C54 ; =0x0000FFFF
+ ldr r2, [r4, r1]
+ eor r0, r6
+ and r0, r2
+ str r0, [r4, r1]
+_021D8C14:
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #6
+ beq _021D8C22
+ cmp r0, #0xe
+ bne _021D8C32
+_021D8C22:
+ add r0, r4, #0
+ bl MOD53_021D9440
+ mov r0, #0xb2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_020191D0
+_021D8C32:
+ mov r0, #0x92
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD53_021D840C
+ b _021D8C42
+_021D8C40:
+ pop {r4, r5, r6, pc}
+_021D8C42:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD53_021D93E0
+_021D8C4A:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D8C4C: .word 0x000093B4
+_021D8C50: .word 0x000093BC
+_021D8C54: .word 0x0000FFFF
+ thumb_func_end MOD53_021D8B64
+
+ thumb_func_start MOD53_021D8C58
+MOD53_021D8C58: ; 0x021D8C58
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ ldr r4, [sp, #0x38]
+ mov ip, r1
+ add r6, r2, #0
+ add r7, r3, #0
+ str r0, [sp, #0x18]
+ ldr r3, [sp, #0x3c]
+ ldr r2, [sp, #0x40]
+ ldr r1, [sp, #0x44]
+ cmp r4, #0
+ bge _021D8C84
+ neg r0, r4
+ cmp r0, r2
+ ble _021D8C78
+ add r0, r2, #0
+_021D8C78:
+ ldr r5, [sp, #0x30]
+ mov r4, #0
+ sub r5, r5, r0
+ add r6, r6, r0
+ str r5, [sp, #0x30]
+ sub r2, r2, r0
+_021D8C84:
+ cmp r3, #0
+ bge _021D8C9C
+ neg r0, r3
+ cmp r0, r1
+ ble _021D8C90
+ add r0, r1, #0
+_021D8C90:
+ ldr r5, [sp, #0x34]
+ mov r3, #0
+ sub r5, r5, r0
+ add r7, r7, r0
+ str r5, [sp, #0x34]
+ sub r1, r1, r0
+_021D8C9C:
+ ldr r0, [sp, #0x30]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [sp, #0x34]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ lsl r0, r3, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0xc]
+ lsl r0, r2, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x14]
+ lsl r2, r6, #0x10
+ lsl r3, r7, #0x10
+ ldr r0, [sp, #0x18]
+ mov r1, ip
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_02019658
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD53_021D8C58
+
+ thumb_func_start MOD53_021D8CD8
+MOD53_021D8CD8: ; 0x021D8CD8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x50]
+ str r1, [sp, #0x1c]
+ str r0, [sp, #0x50]
+ ldr r0, [sp, #0x54]
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x54]
+ ldr r0, [sp, #0x50]
+ str r3, [sp, #0x24]
+ ldr r4, [r0]
+ ldr r0, [sp, #0x54]
+ ldr r5, [r0]
+ add r0, r2, #0
+ str r0, [sp, #0x38]
+ add r0, r3, #0
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x58]
+ cmp r0, #0
+ bne _021D8D18
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0
+ bne _021D8D18
+ ldr r0, [sp, #0x50]
+ add r1, r2, #0
+ str r1, [r0]
+ ldr r0, [sp, #0x54]
+ add r1, r3, #0
+ str r1, [r0]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+_021D8D18:
+ ldr r0, [sp, #0x20]
+ sub r0, r0, r4
+ str r0, [sp, #0x34]
+ bpl _021D8D24
+ neg r0, r0
+ str r0, [sp, #0x34]
+_021D8D24:
+ ldr r0, [sp, #0x24]
+ sub r7, r0, r5
+ bpl _021D8D2C
+ neg r7, r7
+_021D8D2C:
+ ldr r0, [sp, #0x34]
+ cmp r0, r7
+ ble _021D8DBA
+ ldr r0, [sp, #0x20]
+ cmp r4, r0
+ ble _021D8D52
+ ldr r0, [sp, #0x24]
+ cmp r5, r0
+ ble _021D8D44
+ mov r0, #1
+ str r0, [sp, #0x2c]
+ b _021D8D4A
+_021D8D44:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x2c]
+_021D8D4A:
+ str r4, [sp, #0x38]
+ ldr r4, [sp, #0x20]
+ ldr r5, [sp, #0x24]
+ b _021D8D64
+_021D8D52:
+ ldr r0, [sp, #0x24]
+ cmp r5, r0
+ bge _021D8D5E
+ mov r0, #1
+ str r0, [sp, #0x2c]
+ b _021D8D64
+_021D8D5E:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x2c]
+_021D8D64:
+ mov r0, #6
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r3, r2, #0
+ bl MOD53_021D8C58
+ ldr r0, [sp, #0x34]
+ add r4, r4, #1
+ asr r6, r0, #1
+ ldr r0, [sp, #0x38]
+ cmp r4, r0
+ bgt _021D8E3E
+_021D8D8A:
+ sub r6, r6, r7
+ bpl _021D8D96
+ ldr r0, [sp, #0x34]
+ add r6, r6, r0
+ ldr r0, [sp, #0x2c]
+ add r5, r5, r0
+_021D8D96:
+ mov r0, #6
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r3, r2, #0
+ bl MOD53_021D8C58
+ ldr r0, [sp, #0x38]
+ add r4, r4, #1
+ cmp r4, r0
+ ble _021D8D8A
+ b _021D8E3E
+_021D8DBA:
+ ldr r0, [sp, #0x24]
+ cmp r5, r0
+ ble _021D8DDA
+ ldr r0, [sp, #0x20]
+ cmp r4, r0
+ ble _021D8DCC
+ mov r0, #1
+ str r0, [sp, #0x28]
+ b _021D8DD2
+_021D8DCC:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x28]
+_021D8DD2:
+ str r5, [sp, #0x30]
+ ldr r5, [sp, #0x24]
+ ldr r4, [sp, #0x20]
+ b _021D8DEC
+_021D8DDA:
+ ldr r0, [sp, #0x20]
+ cmp r4, r0
+ bge _021D8DE6
+ mov r0, #1
+ str r0, [sp, #0x28]
+ b _021D8DEC
+_021D8DE6:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x28]
+_021D8DEC:
+ mov r0, #6
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r3, r2, #0
+ bl MOD53_021D8C58
+ ldr r0, [sp, #0x30]
+ add r5, r5, #1
+ asr r6, r7, #1
+ cmp r5, r0
+ bgt _021D8E3E
+_021D8E10:
+ ldr r0, [sp, #0x34]
+ sub r6, r6, r0
+ bpl _021D8E1C
+ ldr r0, [sp, #0x28]
+ add r6, r6, r7
+ add r4, r4, r0
+_021D8E1C:
+ mov r0, #6
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r3, r2, #0
+ bl MOD53_021D8C58
+ ldr r0, [sp, #0x30]
+ add r5, r5, #1
+ cmp r5, r0
+ ble _021D8E10
+_021D8E3E:
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #0x50]
+ str r1, [r0]
+ ldr r1, [sp, #0x24]
+ ldr r0, [sp, #0x54]
+ str r1, [r0]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D8CD8
+
+ thumb_func_start MOD53_021D8E50
+MOD53_021D8E50: ; 0x021D8E50
+ mov r2, #0
+_021D8E52:
+ ldrb r3, [r0, #8]
+ lsl r3, r3, #0x1a
+ lsr r3, r3, #0x1d
+ strh r3, [r1, #2]
+ ldrb r3, [r0, #8]
+ lsl r3, r3, #0x1a
+ lsr r3, r3, #0x1d
+ beq _021D8E76
+ add r3, r0, r3
+ sub r3, r3, #1
+ ldrb r3, [r3]
+ strb r3, [r1]
+ ldrb r3, [r0, #8]
+ lsl r3, r3, #0x1a
+ lsr r3, r3, #0x1d
+ add r3, r0, r3
+ ldrb r3, [r3, #3]
+ strb r3, [r1, #1]
+_021D8E76:
+ add r2, r2, #1
+ add r0, #0xa
+ add r1, r1, #4
+ cmp r2, #5
+ blt _021D8E52
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD53_021D8E50
+
+ thumb_func_start MOD53_021D8E84
+MOD53_021D8E84: ; 0x021D8E84
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r1, [sp, #0x14]
+ str r2, [sp, #0x18]
+ str r3, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ str r0, [sp, #0x24]
+ add r5, r1, #0
+ add r7, r2, #0
+_021D8E9A:
+ ldrb r0, [r5, #8]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1d
+ beq _021D8F0A
+ ldrh r0, [r7, #2]
+ cmp r0, #0
+ beq _021D8EB4
+ ldrb r0, [r7]
+ sub r0, #9
+ str r0, [sp, #0x2c]
+ ldrb r0, [r7, #1]
+ sub r0, #0x11
+ str r0, [sp, #0x28]
+_021D8EB4:
+ ldrb r0, [r5, #8]
+ mov r4, #0
+ lsl r0, r0, #0x1a
+ lsr r1, r0, #0x1d
+ cmp r1, #0
+ ble _021D8F0A
+ mov r0, #1
+ str r0, [sp, #0x20]
+ cmp r1, #0
+ ble _021D8F0A
+_021D8EC8:
+ add r0, sp, #0x2c
+ str r0, [sp]
+ add r0, sp, #0x28
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ ldrh r0, [r7, #2]
+ mov r6, #0xc0
+ add r3, r5, r4
+ str r0, [sp, #0xc]
+ ldrb r1, [r5, #8]
+ ldrb r3, [r3, #4]
+ ldr r0, [sp, #0x10]
+ lsl r2, r1, #0x18
+ lsr r2, r2, #0x1e
+ mul r6, r2
+ ldr r2, _021D8F4C ; =0x021D9648
+ lsl r1, r1, #0x1d
+ add r2, r2, r6
+ lsr r6, r1, #0x1d
+ mov r1, #0x18
+ mul r1, r6
+ add r1, r2, r1
+ ldrb r2, [r5, r4]
+ sub r3, #0x11
+ sub r2, #9
+ bl MOD53_021D8CD8
+ ldrb r0, [r5, #8]
+ add r4, r4, #1
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1d
+ cmp r4, r0
+ blt _021D8EC8
+_021D8F0A:
+ ldr r0, [sp, #0x24]
+ add r5, #0xa
+ add r0, r0, #1
+ add r7, r7, #4
+ str r0, [sp, #0x24]
+ cmp r0, #5
+ blt _021D8E9A
+ ldr r0, [sp, #0x20]
+ cmp r0, #0
+ beq _021D8F2A
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0
+ beq _021D8F2A
+ ldr r0, [sp, #0x10]
+ bl FUN_020191D0
+_021D8F2A:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ bl MOD53_021D8E50
+ mov r3, #0
+ mov r1, #0x38
+_021D8F36:
+ ldr r0, [sp, #0x14]
+ add r3, r3, #1
+ ldrb r2, [r0, #8]
+ bic r2, r1
+ strb r2, [r0, #8]
+ add r0, #0xa
+ str r0, [sp, #0x14]
+ cmp r3, #5
+ blt _021D8F36
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8F4C: .word 0x021D9648
+ thumb_func_end MOD53_021D8E84
+
+ thumb_func_start MOD53_021D8F50
+MOD53_021D8F50: ; 0x021D8F50
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, _021D8FB4 ; =0x00004382
+ mov r7, #0x76
+ mov r6, #0
+ add r4, r5, r0
+ lsl r7, r7, #2
+_021D8F5E:
+ bl FUN_02031190
+ cmp r6, r0
+ beq _021D8FA6
+ ldrb r0, [r4, #8]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1d
+ beq _021D8F9A
+ add r0, r6, #0
+ bl FUN_0202DFA4
+ cmp r0, #0
+ beq _021D8F9A
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ ldrb r0, [r4, #8]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1d
+ add r2, r4, r0
+ sub r1, r2, #1
+ ldrb r1, [r1]
+ ldrb r2, [r2, #3]
+ ldr r0, [r5, r7]
+ bl MOD53_021D8140
+ b _021D8FA6
+_021D8F9A:
+ mov r0, #0x76
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+_021D8FA6:
+ add r6, r6, #1
+ add r4, #0xa
+ add r5, r5, #4
+ cmp r6, #5
+ blt _021D8F5E
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8FB4: .word 0x00004382
+ thumb_func_end MOD53_021D8F50
+
+ thumb_func_start MOD53_021D8FB8
+MOD53_021D8FB8: ; 0x021D8FB8
+ push {r3, lr}
+ ldrh r1, [r0]
+ add r1, #0x14
+ strh r1, [r0]
+ ldrh r2, [r0]
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ cmp r2, r1
+ bls _021D8FCE
+ mov r1, #0
+ strh r1, [r0]
+_021D8FCE:
+ ldrh r0, [r0]
+ bl FUN_0201B970
+ mov r1, #0xa
+ mul r1, r0
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ add r0, #0xf
+ lsl r1, r0, #5
+ mov r0, #0x1d
+ orr r1, r0
+ add r0, sp, #0
+ strh r1, [r0]
+ add r0, sp, #0
+ mov r1, #0x18
+ mov r2, #2
+ bl GX_LoadOBJPltt
+ pop {r3, pc}
+ thumb_func_end MOD53_021D8FB8
+
+ thumb_func_start MOD53_021D8FF8
+MOD53_021D8FF8: ; 0x021D8FF8
+ push {r3, r4, r5, lr}
+ mov r5, #0
+ add r4, r5, #0
+_021D8FFE:
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ cmp r0, #0
+ beq _021D900A
+ add r5, r5, #1
+_021D900A:
+ add r4, r4, #1
+ cmp r4, #5
+ blt _021D8FFE
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD53_021D8FF8
+
+ thumb_func_start MOD53_021D9014
+MOD53_021D9014: ; 0x021D9014
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r7, r3, #0
+ add r5, r0, #0
+ str r2, [sp, #0x10]
+ bl FUN_02031190
+ str r0, [sp, #0x14]
+ add r0, r7, #0
+ bl MOD53_021D9184
+ cmp r0, #0
+ beq _021D90EE
+ mov r0, #0
+ str r0, [sp, #0x18]
+ add r6, r7, #0
+ add r4, r7, #0
+_021D9036:
+ mov r0, #0xcd
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bne _021D904E
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ b _021D905A
+_021D904E:
+ mov r0, #0x21
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_020200A0
+_021D905A:
+ ldr r0, [sp, #0x18]
+ add r6, #8
+ add r0, r0, #1
+ add r4, r4, #4
+ str r0, [sp, #0x18]
+ cmp r0, #5
+ blt _021D9036
+ mov r6, #0
+ add r4, r5, #0
+_021D906C:
+ mov r0, #0x50
+ mov r1, #0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ add r6, r6, #1
+ add r4, #0x10
+ cmp r6, #5
+ blt _021D906C
+ mov r6, #0
+ add r4, r7, #0
+_021D908C:
+ mov r0, #0xcd
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ cmp r0, #0
+ beq _021D90DC
+ ldr r1, [r4, #0x14]
+ bl FUN_02023990
+ ldr r0, [sp, #0x14]
+ cmp r0, r6
+ bne _021D90C0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D90F4 ; =0x0003040F
+ mov r1, #1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x14]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_0201BDE0
+ b _021D90DC
+_021D90C0:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x10]
+ mov r1, #1
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x14]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_0201BDE0
+_021D90DC:
+ add r0, r5, #0
+ bl FUN_020191D0
+ add r6, r6, #1
+ add r7, #8
+ add r4, r4, #4
+ add r5, #0x10
+ cmp r6, #5
+ blt _021D908C
+_021D90EE:
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D90F4: .word 0x0003040F
+ thumb_func_end MOD53_021D9014
+
+ thumb_func_start MOD53_021D90F8
+MOD53_021D90F8: ; 0x021D90F8
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D9138
+ bl FUN_02031370
+ cmp r0, #0
+ beq _021D914C
+ ldr r1, _021D9150 ; =0x000093F4
+ ldr r0, _021D9154 ; =0x00004381
+ ldr r2, [r4, r1]
+ sub r1, #0x37
+ strb r2, [r4, r0]
+ sub r0, #9
+ add r2, r4, r1
+ add r3, r4, r0
+ mov r1, #0xa
+_021D911E:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021D911E
+ ldr r1, _021D9158 ; =0x000093BD
+ mov r0, #0x78
+ add r1, r4, r1
+ mov r2, #0x32
+ bl FUN_02030BC4
+ pop {r4, pc}
+_021D9138:
+ bl FUN_02031388
+ cmp r0, #0
+ beq _021D914C
+ ldr r1, _021D915C ; =0x00004378
+ mov r0, #0x77
+ add r1, r4, r1
+ mov r2, #0xa
+ bl FUN_02030ADC
+_021D914C:
+ pop {r4, pc}
+ nop
+_021D9150: .word 0x000093F4
+_021D9154: .word 0x00004381
+_021D9158: .word 0x000093BD
+_021D915C: .word 0x00004378
+ thumb_func_end MOD53_021D90F8
+
+ thumb_func_start MOD53_021D9160
+MOD53_021D9160: ; 0x021D9160
+ push {r3, r4, r5, lr}
+ mov r5, #0
+ add r4, r5, #0
+_021D9166:
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ cmp r0, #0
+ beq _021D9172
+ add r5, r5, #1
+_021D9172:
+ add r4, r4, #1
+ cmp r4, #5
+ blt _021D9166
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD53_021D9160
+
+ thumb_func_start MOD53_021D917C
+MOD53_021D917C: ; 0x021D917C
+ ldr r3, _021D9180 ; =MOD53_021D9160
+ bx r3
+ .align 2, 0
+_021D9180: .word MOD53_021D9160
+ thumb_func_end MOD53_021D917C
+
+ thumb_func_start MOD53_021D9184
+MOD53_021D9184: ; 0x021D9184
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r7, #0
+ add r6, r7, #0
+ add r4, r5, #0
+_021D918E:
+ mov r0, #0xcd
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r0, r0, #4
+ str r1, [r4, r0]
+ add r0, r6, #0
+ bl FUN_0202DFA4
+ mov r1, #0xcd
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r6, r6, #1
+ add r4, #8
+ cmp r6, #5
+ blt _021D918E
+ mov r6, #0
+ mov r2, #1
+ add r0, r1, #4
+_021D91B2:
+ ldr r4, [r5, r0]
+ ldr r3, [r5, r1]
+ cmp r4, r3
+ beq _021D91BC
+ add r7, r2, #0
+_021D91BC:
+ add r6, r6, #1
+ add r5, #8
+ cmp r6, #5
+ blt _021D91B2
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD53_021D9184
+
+ thumb_func_start MOD53_021D91C8
+MOD53_021D91C8: ; 0x021D91C8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r7, r1, #0
+ mov r0, #0x50
+ mov r1, #0x27
+ add r4, r2, #0
+ bl FUN_020219F4
+ add r6, r0, #0
+ ldr r0, [r5, #0x10]
+ add r1, r7, #0
+ add r2, r6, #0
+ bl FUN_0200A8E0
+ ldr r0, [r5, #0xc]
+ ldr r1, [r5, #0x2c]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ cmp r4, #0
+ bne _021D9218
+ mov r4, #0
+_021D9218:
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0xb6
+ lsl r0, r0, #2
+ ldr r2, [r5, #0x2c]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ str r0, [r5, #0x30]
+ cmp r4, #0
+ bne _021D9238
+ mov r0, #0xff
+ str r0, [r5, #0x30]
+_021D9238:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD53_021D91C8
+
+ thumb_func_start MOD53_021D923C
+MOD53_021D923C: ; 0x021D923C
+ push {r3, lr}
+ cmp r0, #0xff
+ bne _021D9246
+ mov r0, #1
+ pop {r3, pc}
+_021D9246:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D9256
+ mov r0, #1
+ pop {r3, pc}
+_021D9256:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D923C
+
+ thumb_func_start MOD53_021D925C
+MOD53_021D925C: ; 0x021D925C
+ mov r1, #0xb6
+ lsl r1, r1, #2
+ add r0, r0, r1
+ ldr r3, _021D9268 ; =0x0200D0E1
+ mov r1, #0
+ bx r3
+ .align 2, 0
+_021D9268: .word 0x0200D0E1
+ thumb_func_end MOD53_021D925C
+
+ thumb_func_start MOD53_021D926C
+MOD53_021D926C: ; 0x021D926C
+ push {r4, lr}
+ add r4, r1, #0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D9288
+ bl FUN_02030F20
+ add r0, r4, r0
+ cmp r0, #5
+ ble _021D9284
+ mov r0, #5
+_021D9284:
+ bl FUN_02032B6C
+_021D9288:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD53_021D926C
+
+ thumb_func_start MOD53_021D928C
+MOD53_021D928C: ; 0x021D928C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl MOD53_021D9160
+ add r5, r0, #0
+ cmp r5, #5
+ bhi _021D932A
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D92A6: ; jump table
+ .short _021D932A - _021D92A6 - 2 ; case 0
+ .short _021D92B2 - _021D92A6 - 2 ; case 1
+ .short _021D92F8 - _021D92A6 - 2 ; case 2
+ .short _021D92F8 - _021D92A6 - 2 ; case 3
+ .short _021D92F8 - _021D92A6 - 2 ; case 4
+ .short _021D9324 - _021D92A6 - 2 ; case 5
+_021D92B2:
+ mov r0, #0xc1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0xe
+ bgt _021D932A
+ bl FUN_0202CB8C
+ cmp r0, #1
+ beq _021D92CC
+ mov r0, #0x25
+ mov r1, #1
+ lsl r0, r0, #0xa
+ str r1, [r4, r0]
+_021D92CC:
+ mov r0, #0xc2
+ mov r1, #0x13
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r0, #1
+ bl FUN_02032B6C
+ ldr r0, _021D93CC ; =0x000093F8
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D92F4
+ add r0, r4, #0
+ bl MOD53_021D9440
+ mov r0, #0x9a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x15
+ bl FUN_02020130
+_021D92F4:
+ mov r0, #2
+ pop {r3, r4, r5, pc}
+_021D92F8:
+ mov r0, #1
+ bl FUN_02052B74
+ mov r0, #0xc5
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r5, r0
+ bge _021D932A
+ ldr r0, _021D93D0 ; =0x000093F4
+ ldr r0, [r4, r0]
+ cmp r0, #2
+ bne _021D931A
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD53_021D926C
+ b _021D932A
+_021D931A:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD53_021D926C
+ b _021D932A
+_021D9324:
+ mov r0, #8
+ bl FUN_02052B74
+_021D932A:
+ mov r0, #0xc5
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r5, r0
+ bge _021D9374
+ bl FUN_02030F20
+ mov r1, #0xc6
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ bl FUN_0202CB8C
+ mov r1, #0xc7
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, _021D93D4 ; =0x00009404
+ ldr r2, [r4, r0]
+ cmp r2, #0
+ beq _021D9374
+ add r0, r0, #4
+ ldr r1, [r4, r1]
+ ldr r0, [r4, r0]
+ tst r0, r1
+ bne _021D9374
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD53_021D926C
+ ldr r1, _021D93D0 ; =0x000093F4
+ mov r0, #1
+ str r0, [r4, r1]
+ add r0, r1, #0
+ mov r2, #0
+ add r0, #0x10
+ str r2, [r4, r0]
+ add r1, #0x14
+ str r2, [r4, r1]
+_021D9374:
+ bl MOD53_021D9160
+ mov r1, #0xc5
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ bl FUN_02030F20
+ mov r1, #0xc6
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ cmp r1, r0
+ bge _021D93C8
+ ldr r0, _021D93D0 ; =0x000093F4
+ mov r1, #2
+ str r1, [r4, r0]
+ mov r1, #1
+ add r0, #0x10
+ str r1, [r4, r0]
+ bl FUN_0202CB8C
+ mov r1, #0xc7
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ eor r0, r1
+ ldr r1, _021D93D8 ; =0x00009408
+ str r0, [r4, r1]
+ ldr r1, [r4, r1]
+ mov r0, #0
+ sub r1, r1, #2
+ cmp r1, #0xe
+ bhi _021D93C0
+ mov r2, #1
+ add r3, r2, #0
+ lsl r3, r1
+ ldr r1, _021D93DC ; =0x00004045
+ tst r1, r3
+ beq _021D93C0
+ add r0, r2, #0
+_021D93C0:
+ cmp r0, #0
+ bne _021D93C8
+ bl ErrorHandling
+_021D93C8:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D93CC: .word 0x000093F8
+_021D93D0: .word 0x000093F4
+_021D93D4: .word 0x00009404
+_021D93D8: .word 0x00009408
+_021D93DC: .word 0x00004045
+ thumb_func_end MOD53_021D928C
+
+ thumb_func_start MOD53_021D93E0
+MOD53_021D93E0: ; 0x021D93E0
+ mov r2, #0xc2
+ lsl r2, r2, #2
+ str r1, [r0, r2]
+ bx lr
+ thumb_func_end MOD53_021D93E0
+
+ thumb_func_start MOD53_021D93E8
+MOD53_021D93E8: ; 0x021D93E8
+ push {r3, r4}
+ mov r3, #0xc2
+ lsl r3, r3, #2
+ sub r4, r3, #4
+ ldr r2, [r0, r3]
+ ldr r4, [r0, r4]
+ cmp r4, r2
+ beq _021D9412
+ cmp r1, #2
+ beq _021D9404
+ sub r1, r3, #4
+ str r2, [r0, r1]
+ pop {r3, r4}
+ bx lr
+_021D9404:
+ ldr r1, _021D9418 ; =0x021D98A4
+ lsl r4, r2, #3
+ ldr r1, [r1, r4]
+ cmp r1, #0
+ beq _021D9412
+ sub r1, r3, #4
+ str r2, [r0, r1]
+_021D9412:
+ pop {r3, r4}
+ bx lr
+ nop
+_021D9418: .word 0x021D98A4
+ thumb_func_end MOD53_021D93E8
+
+ thumb_func_start MOD53_021D941C
+MOD53_021D941C: ; 0x021D941C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D943C ; =0x000093F8
+ ldr r2, [r4, r0]
+ cmp r2, #0
+ bne _021D9438
+ sub r0, #8
+ ldr r0, [r4, r0]
+ bl FUN_020145C8
+ ldr r1, _021D943C ; =0x000093F8
+ mov r0, #1
+ str r0, [r4, r1]
+ pop {r4, pc}
+_021D9438:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021D943C: .word 0x000093F8
+ thumb_func_end MOD53_021D941C
+
+ thumb_func_start MOD53_021D9440
+MOD53_021D9440: ; 0x021D9440
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D945C ; =0x000093F8
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D945A
+ sub r0, #8
+ ldr r0, [r4, r0]
+ bl FUN_020146C4
+ ldr r0, _021D945C ; =0x000093F8
+ mov r1, #0
+ str r1, [r4, r0]
+_021D945A:
+ pop {r4, pc}
+ .align 2, 0
+_021D945C: .word 0x000093F8
+ thumb_func_end MOD53_021D9440
+
+ thumb_func_start MOD53_021D9460
+MOD53_021D9460: ; 0x021D9460
+ push {r3, lr}
+ ldr r0, _021D9478 ; =0x021D94E8
+ bl FUN_02020988
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _021D9474
+ mov r0, #1
+ pop {r3, pc}
+_021D9474:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_021D9478: .word 0x021D94E8
+ thumb_func_end MOD53_021D9460
+
+ thumb_func_start MOD53_021D947C
+MOD53_021D947C: ; 0x021D947C
+ push {r4, r5}
+ ldrh r4, [r1]
+ cmp r4, #0
+ beq _021D949C
+ ldrh r4, [r1, #2]
+ strb r4, [r0]
+ ldrh r4, [r1, #4]
+ strb r4, [r0, #4]
+ ldrh r4, [r1]
+ sub r4, r4, #1
+ lsl r4, r4, #3
+ add r5, r1, r4
+ ldrh r4, [r5, #2]
+ strb r4, [r0, #1]
+ ldrh r4, [r5, #4]
+ strb r4, [r0, #5]
+_021D949C:
+ ldrh r5, [r1]
+ cmp r5, #2
+ blo _021D94AC
+ ldrb r4, [r0, #8]
+ mov r1, #0x38
+ bic r4, r1
+ mov r1, #0x10
+ b _021D94BA
+_021D94AC:
+ ldrb r1, [r0, #8]
+ mov r4, #0x38
+ bic r1, r4
+ lsl r4, r5, #0x18
+ lsr r4, r4, #0x18
+ lsl r4, r4, #0x1d
+ lsr r4, r4, #0x1a
+_021D94BA:
+ orr r1, r4
+ strb r1, [r0, #8]
+ ldrb r1, [r0, #8]
+ mov r4, #7
+ lsl r2, r2, #0x18
+ bic r1, r4
+ lsr r4, r2, #0x18
+ mov r2, #7
+ and r2, r4
+ orr r1, r2
+ strb r1, [r0, #8]
+ ldrb r2, [r0, #8]
+ mov r1, #0xc0
+ bic r2, r1
+ lsl r1, r3, #0x18
+ lsr r1, r1, #0x18
+ lsl r1, r1, #0x1e
+ lsr r1, r1, #0x18
+ orr r1, r2
+ strb r1, [r0, #8]
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD53_021D947C
+
+ .section .rodata
+ ; 0x021D94E8
+ .incbin "baserom.nds", 0x29BE08, 0x3A0
+
+ .section .data
+ ; 0x021D98A0
+ .incbin "baserom.nds", 0x29C1C0, 0xC0
diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s
new file mode 100644
index 00000000..817d6824
--- /dev/null
+++ b/arm9/modules/54/asm/module_54.s
@@ -0,0 +1,4382 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD54_021D74E0
+MOD54_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r6, r0, #0
+ cmp r1, #0
+ beq _021D74F6
+ cmp r1, #1
+ bne _021D74F4
+ b _021D761A
+_021D74F4:
+ b _021D7628
+_021D74F6:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7630 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D7634 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r2, #0x41
+ mov r0, #3
+ mov r1, #0x33
+ lsl r2, r2, #0xc
+ bl FUN_0201681C
+ ldr r1, _021D7638 ; =0x00004A60
+ add r0, r6, #0
+ mov r2, #0x33
+ bl FUN_02006268
+ ldr r2, _021D7638 ; =0x00004A60
+ mov r1, #0
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x33
+ bl FUN_02016B94
+ str r0, [r4]
+ add r0, r6, #0
+ bl FUN_0200628C
+ str r0, [r4, #8]
+ ldr r1, [r0]
+ ldr r0, _021D763C ; =0x00004A38
+ str r1, [r4, r0]
+ mov r0, #0x33
+ bl FUN_0200AA80
+ str r0, [r4, #0x24]
+ ldr r2, _021D7640 ; =0x000001E2
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x33
+ bl FUN_0200A86C
+ str r0, [r4, #0x28]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ bl MOD54_021D7874
+ ldr r0, [r4]
+ bl MOD54_021D7894
+ mov r0, #0
+ bl FUN_0200E394
+ mov r0, #1
+ bl FUN_0200E394
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x33
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0x11
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add r0, r4, #0
+ bl MOD54_021D7AA0
+ ldr r0, _021D7644 ; =MOD54_021D784C
+ add r1, r4, #0
+ bl FUN_02015F10
+ add r0, r4, #0
+ bl MOD54_021D799C
+ bl MOD54_021D7B8C
+ add r0, r4, #0
+ bl MOD54_021D7BBC
+ add r0, r4, #0
+ bl MOD54_021D7CAC
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD54_021D7DB4
+ mov r1, #0
+ mov r0, #0x34
+ add r2, r1, #0
+ bl FUN_0200433C
+ add r0, r4, #0
+ bl FUN_02084098
+ bl FUN_020328E4
+ mov r0, #3
+ bl FUN_02032B6C
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D75F4
+ mov r0, #2
+ bl FUN_02052B74
+_021D75F4:
+ bl FUN_02033E74
+ ldr r0, _021D763C ; =0x00004A38
+ mov r1, #0xed
+ lsl r1, r1, #2
+ ldr r0, [r4, r0]
+ add r1, r4, r1
+ bl MOD54_021D9570
+ ldr r0, _021D7648 ; =MOD54_021D77E8
+ add r1, r4, #0
+ mov r2, #5
+ bl FUN_0200CA60
+ str r0, [r4, #0x20]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D7628
+_021D761A:
+ bl FUN_02006278
+ mov r0, #0
+ str r0, [r5]
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D7628:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D7630: .word 0xFFFFE0FF
+_021D7634: .word 0x04001000
+_021D7638: .word 0x00004A60
+_021D763C: .word 0x00004A38
+_021D7640: .word 0x000001E2
+_021D7644: .word MOD54_021D784C
+_021D7648: .word MOD54_021D77E8
+ thumb_func_end MOD54_021D74E0
+
+ thumb_func_start MOD54_021D764C
+MOD54_021D764C: ; 0x021D764C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D7672
+ ldr r0, _021D7730 ; =0x00004A50
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D7672
+ bl FUN_0202CB8C
+ ldr r1, _021D7730 ; =0x00004A50
+ ldr r2, [r4, r1]
+ and r0, r2
+ str r0, [r4, r1]
+_021D7672:
+ ldr r1, [r5]
+ cmp r1, #3
+ bhi _021D7726
+ add r0, r1, r1
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7684: ; jump table
+ .short _021D768C - _021D7684 - 2 ; case 0
+ .short _021D76B4 - _021D7684 - 2 ; case 1
+ .short _021D7702 - _021D7684 - 2 ; case 2
+ .short _021D771A - _021D7684 - 2 ; case 3
+_021D768C:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D7726
+ mov r0, #1
+ str r0, [r5]
+ bl FUN_02031190
+ cmp r0, #0
+ beq _021D7726
+ bl MOD54_021D8C08
+ cmp r0, #2
+ ble _021D7726
+ mov r1, #0
+ mov r0, #0x72
+ add r2, r1, #0
+ bl FUN_02030ADC
+ b _021D7726
+_021D76B4:
+ mov r0, #0xd1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ lsl r2, r0, #2
+ ldr r0, _021D7734 ; =0x021D97E0
+ ldr r2, [r0, r2]
+ cmp r2, #0
+ beq _021D76CA
+ add r0, r4, #0
+ blx r2
+ str r0, [r5]
+_021D76CA:
+ ldr r0, _021D7738 ; =0x00004A40
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bne _021D76E2
+ mov r0, #0xa6
+ lsl r0, r0, #2
+ ldr r2, _021D773C ; =0x00010300
+ add r0, r4, r0
+ mov r1, #0
+ add r3, r4, #0
+ bl MOD54_021D8AF8
+_021D76E2:
+ add r0, r4, #0
+ bl MOD54_021D8D50
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D7726
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD54_021D8F94
+ ldr r1, [r5]
+ cmp r1, #1
+ bne _021D7726
+ str r0, [r5]
+ b _021D7726
+_021D7702:
+ mov r0, #0xd1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ lsl r2, r0, #2
+ ldr r0, _021D7734 ; =0x021D97E0
+ ldr r2, [r0, r2]
+ cmp r2, #0
+ beq _021D7726
+ add r0, r4, #0
+ blx r2
+ str r0, [r5]
+ b _021D7726
+_021D771A:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D7726
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D7726:
+ ldr r0, [r4, #0x50]
+ bl FUN_0201FDEC
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7730: .word 0x00004A50
+_021D7734: .word 0x021D97E0
+_021D7738: .word 0x00004A40
+_021D773C: .word 0x00010300
+ thumb_func_end MOD54_021D764C
+
+ thumb_func_start MOD54_021D7740
+MOD54_021D7740: ; 0x021D7740
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ bl FUN_02006278
+ add r6, r0, #0
+ ldr r0, [r6, #0x20]
+ bl FUN_0200CAB4
+ mov r0, #0x6b
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #0x1b
+ lsl r0, r0, #4
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r7, #0x5f
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_021D776C:
+ ldr r0, [r5, r7]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D776C
+ ldr r0, [r6, #0x50]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ add r0, r6, #0
+ bl MOD54_021D7EDC
+ ldr r0, [r6]
+ bl MOD54_021D7A6C
+ mov r0, #2
+ bl FUN_02032B6C
+ bl FUN_02031B50
+ ldr r0, [r6, #8]
+ ldr r0, [r0, #4]
+ bl FUN_02052F8C
+ ldr r0, [r6, #0x28]
+ bl FUN_0200A8B8
+ ldr r0, [r6, #0x24]
+ bl FUN_0200AB18
+ add r0, r6, #0
+ bl MOD54_021D7A34
+ ldr r0, [sp]
+ bl FUN_0200627C
+ ldr r2, _021D77E4 ; =0x04000304
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ mov r0, #0
+ bl FUN_02052B74
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0x33
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D77E4: .word 0x04000304
+ thumb_func_end MOD54_021D7740
+
+ thumb_func_start MOD54_021D77E8
+MOD54_021D77E8: ; 0x021D77E8
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r0, [r4, #0xc]
+ add r1, #0xc
+ cmp r0, #0
+ beq _021D7842
+ ldr r0, [r1, #4]
+ ldr r3, [r1, #8]
+ lsl r2, r0, #1
+ ldr r0, _021D7844 ; =0x021D968A
+ ldrb r0, [r0, r2]
+ cmp r3, r0
+ ble _021D7832
+ mov r0, #0
+ str r0, [r1, #8]
+ ldr r2, [r1, #4]
+ add r2, r2, #1
+ str r2, [r1, #4]
+ lsl r3, r2, #1
+ ldr r2, _021D7848 ; =0x021D968B
+ ldrb r2, [r2, r3]
+ cmp r2, #0xff
+ bne _021D7818
+ str r0, [r1, #4]
+_021D7818:
+ ldr r0, [r1, #0x10]
+ ldr r1, [r1, #4]
+ ldr r0, [r0, #0xc]
+ lsl r2, r1, #1
+ ldr r1, _021D7848 ; =0x021D968B
+ ldrb r1, [r1, r2]
+ mov r2, #0x20
+ lsl r1, r1, #5
+ add r0, r0, r1
+ mov r1, #0
+ bl GX_LoadOBJPltt
+ b _021D7838
+_021D7832:
+ ldr r0, [r4, #0x14]
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+_021D7838:
+ mov r0, #0xe9
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD54_021D8A90
+_021D7842:
+ pop {r4, pc}
+ .align 2, 0
+_021D7844: .word 0x021D968A
+_021D7848: .word 0x021D968B
+ thumb_func_end MOD54_021D77E8
+
+ thumb_func_start MOD54_021D784C
+MOD54_021D784C: ; 0x021D784C
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0201C30C
+ bl FUN_02009F80
+ add r0, r4, #0
+ bl FUN_0201AB60
+ ldr r3, _021D786C ; =0x027E0000
+ ldr r1, _021D7870 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D786C: .word 0x027E0000
+_021D7870: .word 0x00003FF8
+ thumb_func_end MOD54_021D784C
+
+ thumb_func_start MOD54_021D7874
+MOD54_021D7874: ; 0x021D7874
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7890 ; =0x021D9758
+ add r3, sp, #0
+ mov r2, #5
+_021D787E:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D787E
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7890: .word 0x021D9758
+ thumb_func_end MOD54_021D7874
+
+ thumb_func_start MOD54_021D7894
+MOD54_021D7894: ; 0x021D7894
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ ldr r5, _021D7984 ; =0x021D9694
+ add r3, sp, #0x8c
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D7988 ; =0x021D9720
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02018744
+ ldr r5, _021D798C ; =0x021D973C
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #5
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_02018744
+ ldr r5, _021D7990 ; =0x021D96CC
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #6
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D7994 ; =0x021D96E8
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02018744
+ ldr r5, _021D7998 ; =0x021D9704
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ add r0, r4, #0
+ mov r1, #1
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x33
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x33
+ bl FUN_02017F18
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ nop
+_021D7984: .word 0x021D9694
+_021D7988: .word 0x021D9720
+_021D798C: .word 0x021D973C
+_021D7990: .word 0x021D96CC
+_021D7994: .word 0x021D96E8
+_021D7998: .word 0x021D9704
+ thumb_func_end MOD54_021D7894
+
+ thumb_func_start MOD54_021D799C
+MOD54_021D799C: ; 0x021D799C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r6, #0
+ add r4, r7, #0
+ add r5, r7, #0
+_021D79A6:
+ mov r0, #8
+ mov r1, #0x33
+ bl FUN_020219F4
+ str r0, [r4, #0x2c]
+ mov r0, #0xd9
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r0, #4
+ str r1, [r5, r0]
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, #8
+ cmp r6, #5
+ blt _021D79A6
+ mov r0, #0xb4
+ mov r1, #0x33
+ bl FUN_020219F4
+ str r0, [r7, #0x44]
+ mov r0, #0x28
+ mov r1, #0x33
+ bl FUN_020219F4
+ str r0, [r7, #0x48]
+ mov r0, #0xd1
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r7, r0]
+ ldr r0, [r7, #0x28]
+ ldr r2, [r7, #0x48]
+ mov r1, #0x11
+ bl FUN_0200A8E0
+ add r0, r7, #0
+ bl MOD54_021D8E64
+ mov r0, #0x33
+ bl FUN_02053708
+ mov r1, #0xea
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ mov r0, #0
+ str r0, [r7, #0xc]
+ str r0, [r7, #0x14]
+ add r2, r7, #0
+ str r0, [r7, #0x10]
+ mov r0, #0x56
+ mov r1, #1
+ add r2, #0x1c
+ mov r3, #0x33
+ bl FUN_02006C08
+ str r0, [r7, #0x18]
+ mov r1, #0x32
+ ldr r0, _021D7A30 ; =0x00004A44
+ mov r2, #0
+ str r2, [r7, r0]
+ lsl r1, r1, #4
+ str r2, [r7, r1]
+ mov r1, #2
+ add r0, r0, #4
+ str r1, [r7, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7A30: .word 0x00004A44
+ thumb_func_end MOD54_021D799C
+
+ thumb_func_start MOD54_021D7A34
+MOD54_021D7A34: ; 0x021D7A34
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ bl MOD54_021D8F0C
+ ldr r0, [r6, #0x18]
+ bl FUN_02016A18
+ mov r0, #0xea
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ mov r4, #0
+ add r5, r6, #0
+_021D7A50:
+ ldr r0, [r5, #0x2c]
+ bl FUN_02021A20
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _021D7A50
+ ldr r0, [r6, #0x48]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x44]
+ bl FUN_02021A20
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD54_021D7A34
+
+ thumb_func_start MOD54_021D7A6C
+MOD54_021D7A6C: ; 0x021D7A6C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D7A6C
+
+ thumb_func_start MOD54_021D7AA0
+MOD54_021D7AA0: ; 0x021D7AA0
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #2
+ ldr r4, [r5]
+ mov r1, #0
+ lsl r0, r0, #8
+ str r0, [sp]
+ mov r0, #0x33
+ str r0, [sp, #4]
+ mov r0, #0x56
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02006930
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x33
+ str r0, [sp, #4]
+ mov r0, #0xc
+ add r1, r0, #0
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r1, #0x1a
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x33
+ bl FUN_02002EEC
+ mov r1, #0x1a
+ mov r0, #4
+ lsl r1, r1, #4
+ mov r2, #0x33
+ bl FUN_02002EEC
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x33
+ str r0, [sp, #0xc]
+ mov r0, #0xc
+ mov r1, #0xa
+ add r2, r4, #0
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x33
+ str r0, [sp, #0xc]
+ mov r0, #0xc
+ mov r1, #0xb
+ add r2, r4, #0
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x33
+ str r0, [sp, #0xc]
+ mov r0, #0x56
+ mov r1, #2
+ add r2, r4, #0
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r3, #1
+ str r3, [sp, #8]
+ mov r0, #0x33
+ str r0, [sp, #0xc]
+ mov r0, #0x56
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_020068C8
+ ldr r0, [r5, #8]
+ ldr r0, [r0, #8]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x33
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200CD68
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x33
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_0200CB00
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D7AA0
+
+ thumb_func_start MOD54_021D7B8C
+MOD54_021D7B8C: ; 0x021D7B8C
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021D7BB8 ; =0x021D96A4
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_0201D040
+ mov r0, #0x14
+ mov r1, #0x33
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021D7BB8: .word 0x021D96A4
+ thumb_func_end MOD54_021D7B8C
+
+ thumb_func_start MOD54_021D7BBC
+MOD54_021D7BBC: ; 0x021D7BBC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x7e
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x33
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ add r1, r6, #0
+ mov r0, #0x1e
+ add r1, #0x54
+ mov r2, #0x33
+ bl FUN_02008C9C
+ str r0, [r6, #0x50]
+ add r0, r6, #0
+ mov r2, #1
+ add r0, #0x54
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ mov r7, #0x5f
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_021D7C02:
+ mov r0, #3
+ add r1, r4, #0
+ mov r2, #0x33
+ bl FUN_02008DEC
+ str r0, [r5, r7]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D7C02
+ mov r0, #2
+ str r0, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ mov r0, #0x33
+ str r0, [sp, #8]
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ mov r1, #0x56
+ mov r2, #0xc
+ bl FUN_02008F34
+ mov r1, #0x6b
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ mov r0, #2
+ str r0, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #0xf
+ str r0, [sp, #8]
+ mov r0, #0x33
+ sub r1, #0x2c
+ str r0, [sp, #0xc]
+ ldr r0, [r6, r1]
+ mov r1, #0x56
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #0x1b
+ lsl r1, r1, #4
+ str r0, [r6, r1]
+ mov r0, #2
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x33
+ sub r1, #0x2c
+ str r0, [sp, #8]
+ ldr r0, [r6, r1]
+ mov r1, #0x56
+ mov r2, #0xd
+ mov r3, #1
+ bl FUN_020090AC
+ mov r1, #0x6d
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x33
+ sub r1, #0x2c
+ str r0, [sp, #8]
+ ldr r0, [r6, r1]
+ mov r1, #0x56
+ mov r2, #0xe
+ mov r3, #1
+ bl FUN_020090AC
+ mov r1, #0x6e
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ sub r1, #0xc
+ ldr r0, [r6, r1]
+ bl FUN_02009A50
+ mov r0, #0x1b
+ lsl r0, r0, #4
+ ldr r0, [r6, r0]
+ bl FUN_02009CF0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD54_021D7BBC
+
+ thumb_func_start MOD54_021D7CAC
+MOD54_021D7CAC: ; 0x021D7CAC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x5c
+ mov r1, #2
+ add r5, r0, #0
+ str r1, [sp]
+ sub r0, r1, #3
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r3, #0x5f
+ str r0, [sp, #0xc]
+ mov r2, #1
+ lsl r3, r3, #2
+ str r2, [sp, #0x10]
+ ldr r2, [r5, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r5, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r5, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ add r3, #0x88
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, r5, r3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02008AA4
+ ldr r0, [r5, #0x50]
+ mov r1, #0
+ str r0, [sp, #0x2c]
+ mov r0, #0x81
+ lsl r0, r0, #2
+ add r0, r5, r0
+ str r0, [sp, #0x30]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r1, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ add r0, sp, #0x2c
+ strh r1, [r0, #0x20]
+ mov r0, #1
+ str r0, [sp, #0x50]
+ str r0, [sp, #0x54]
+ mov r0, #0x33
+ str r0, [sp, #0x58]
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ mov r0, #0x15
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FE94
+ mov r1, #0x8a
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r7, #0x8b
+ ldr r4, _021D7DB0 ; =0x021D96B4
+ mov r6, #0
+ lsl r7, r7, #2
+_021D7D4C:
+ ldrh r0, [r4, #4]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x34]
+ ldrh r0, [r4, #6]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ bl FUN_0201FE94
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ sub r1, r6, #1
+ lsl r1, r1, #1
+ ldr r0, [r5, r0]
+ add r1, #0x1b
+ bl FUN_02020130
+ ldr r0, [r5, r7]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #5
+ blt _021D7D4C
+ mov r0, #6
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x34]
+ mov r0, #0x1a
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x38]
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x5c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7DB0: .word 0x021D96B4
+ thumb_func_end MOD54_021D7CAC
+
+ thumb_func_start MOD54_021D7DB4
+MOD54_021D7DB4: ; 0x021D7DB4
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0x14
+ str r0, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _021D7E90 ; =0x000001C3
+ mov r1, #0xbe
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r4]
+ add r1, r4, r1
+ mov r2, #5
+ mov r3, #0x1a
+ bl FUN_02019064
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x28
+ mov r1, #0xba
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02019064
+ mov r0, #0xba
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x1a
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ mov r0, #0x94
+ mov r1, #0xc2
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #3
+ bl FUN_02019064
+ mov r0, #0xc2
+ lsl r0, r0, #2
+ ldr r1, [r4, #0x48]
+ add r0, r4, r0
+ mov r2, #0
+ bl MOD54_021D7E98
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0xb
+ str r0, [sp, #8]
+ mov r0, #0xf
+ str r0, [sp, #0xc]
+ mov r0, #0xc8
+ mov r1, #0xa6
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r4]
+ add r1, r4, r1
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02019064
+ mov r0, #0xa6
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0xa6
+ lsl r0, r0, #2
+ ldr r2, _021D7E94 ; =0x00010300
+ add r0, r4, r0
+ mov r1, #0
+ add r3, r4, #0
+ bl MOD54_021D8AF8
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D7E90: .word 0x000001C3
+_021D7E94: .word 0x00010300
+ thumb_func_end MOD54_021D7DB4
+
+ thumb_func_start MOD54_021D7E98
+MOD54_021D7E98: ; 0x021D7E98
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r2, #0
+ mov r0, #1
+ mov r2, #0
+ add r7, r1, #0
+ bl FUN_02002E14
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ mov r1, #1
+ str r1, [sp]
+ mov r0, #0x41
+ mov r3, #0xd0
+ str r4, [sp, #4]
+ sub r4, r3, r6
+ lsl r0, r0, #0xa
+ lsr r3, r4, #0x1f
+ str r0, [sp, #8]
+ mov r0, #0
+ add r3, r4, r3
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r2, r7, #0
+ asr r3, r3, #1
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D7E98
+
+ thumb_func_start MOD54_021D7EDC
+MOD54_021D7EDC: ; 0x021D7EDC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xa6
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+ mov r0, #0xc2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+ mov r0, #0xba
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D7EDC
+
+ thumb_func_start MOD54_021D7F0C
+MOD54_021D7F0C: ; 0x021D7F0C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020334E8
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D7F2E
+ add r0, r5, #0
+ mov r1, #2
+ mov r2, #0
+ bl MOD54_021D8C90
+ b _021D7F38
+_021D7F2E:
+ add r0, r5, #0
+ mov r1, #8
+ mov r2, #0
+ bl MOD54_021D8C90
+_021D7F38:
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD54_021D80BC
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD54_021D7F0C
+
+ thumb_func_start MOD54_021D7F44
+MOD54_021D7F44: ; 0x021D7F44
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD54_021D7F70
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D7F66
+ bl MOD54_021D8ADC
+ cmp r0, #1
+ beq _021D7F6C
+ add r0, r5, #0
+ bl MOD54_021D8C04
+ b _021D7F6C
+_021D7F66:
+ add r0, r5, #0
+ bl MOD54_021D8C04
+_021D7F6C:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD54_021D7F44
+
+ thumb_func_start MOD54_021D7F70
+MOD54_021D7F70: ; 0x021D7F70
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, _021D808C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _021D7FD6
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8086
+ bl MOD54_021D8C08
+ ldr r1, _021D8090 ; =0x00004A48
+ ldr r2, [r4, r1]
+ cmp r2, r0
+ bne _021D7FCC
+ add r1, #8
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bne _021D7FCC
+ mov r1, #1
+ add r0, sp, #0
+ strb r1, [r0, #2]
+ add r0, r4, #0
+ mov r1, #3
+ mov r2, #0
+ bl MOD54_021D8C90
+ add r0, r4, #0
+ mov r1, #0x16
+ bl MOD54_021D80BC
+ add r1, sp, #0
+ mov r0, #0x75
+ add r1, #2
+ mov r2, #1
+ bl FUN_02030ADC
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD54_021D8F40
+ add sp, #4
+ pop {r3, r4, pc}
+_021D7FCC:
+ ldr r0, _021D8094 ; =0x000005F2
+ bl FUN_020054C8
+ add sp, #4
+ pop {r3, r4, pc}
+_021D7FD6:
+ mov r0, #2
+ tst r0, r1
+ beq _021D805A
+ bl FUN_02031190
+ cmp r0, #0
+ beq _021D800C
+ ldr r0, _021D8098 ; =0x00004A3C
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D8002
+ add r0, r4, #0
+ mov r1, #4
+ mov r2, #0
+ bl MOD54_021D8C90
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD54_021D80BC
+ add sp, #4
+ pop {r3, r4, pc}
+_021D8002:
+ ldr r0, _021D8094 ; =0x000005F2
+ bl FUN_020054C8
+ add sp, #4
+ pop {r3, r4, pc}
+_021D800C:
+ bl FUN_02030F20
+ ldr r1, _021D8090 ; =0x00004A48
+ ldr r2, [r4, r1]
+ cmp r2, r0
+ bne _021D8050
+ add r1, #8
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bne _021D8050
+ mov r1, #1
+ add r0, sp, #0
+ strb r1, [r0, #1]
+ add r0, r4, #0
+ mov r1, #4
+ mov r2, #0
+ bl MOD54_021D8C90
+ add r0, r4, #0
+ mov r1, #4
+ bl MOD54_021D80BC
+ add r1, sp, #0
+ mov r0, #0x75
+ add r1, #1
+ mov r2, #1
+ bl FUN_02030ADC
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD54_021D8F40
+ add sp, #4
+ pop {r3, r4, pc}
+_021D8050:
+ ldr r0, _021D8094 ; =0x000005F2
+ bl FUN_020054C8
+ add sp, #4
+ pop {r3, r4, pc}
+_021D805A:
+ ldr r0, _021D809C ; =0x00004A4C
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D8086
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8086
+ bl FUN_02030F20
+ ldr r1, _021D8090 ; =0x00004A48
+ ldr r1, [r4, r1]
+ cmp r1, r0
+ bne _021D8086
+ mov r1, #0
+ add r0, sp, #0
+ strb r1, [r0]
+ mov r0, #0x75
+ add r1, sp, #0
+ mov r2, #1
+ bl FUN_02030ADC
+_021D8086:
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D808C: .word 0x021C48B8
+_021D8090: .word 0x00004A48
+_021D8094: .word 0x000005F2
+_021D8098: .word 0x00004A3C
+_021D809C: .word 0x00004A4C
+ thumb_func_end MOD54_021D7F70
+
+ thumb_func_start MOD54_021D80A0
+MOD54_021D80A0: ; 0x021D80A0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD54_021D80A0
+
+ thumb_func_start MOD54_021D80A4
+MOD54_021D80A4: ; 0x021D80A4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #2
+ bl MOD54_021D80BC
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D80A4
+
+ thumb_func_start MOD54_021D80BC
+MOD54_021D80BC: ; 0x021D80BC
+ mov r2, #0xd1
+ mov r3, #0x1e
+ lsl r2, r2, #2
+ str r3, [r0, r2]
+ add r2, r2, #4
+ str r1, [r0, r2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD54_021D80BC
+
+ thumb_func_start MOD54_021D80CC
+MOD54_021D80CC: ; 0x021D80CC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x4c]
+ add r4, r1, #0
+ bl MOD54_021D8D20
+ cmp r0, #0
+ beq _021D80E6
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ sub r0, r0, #4
+ str r1, [r5, r0]
+_021D80E6:
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD54_021D80CC
+
+ thumb_func_start MOD54_021D80F0
+MOD54_021D80F0: ; 0x021D80F0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D810C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x75
+ add r1, sp, #0
+ mov r2, #1
+ bl FUN_02030ADC
+_021D810C:
+ mov r0, #0xd1
+ mov r1, #3
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D80F0
+
+ thumb_func_start MOD54_021D8120
+MOD54_021D8120: ; 0x021D8120
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x33
+ add r4, r1, #0
+ str r0, [sp]
+ ldr r0, [r5]
+ ldr r1, _021D814C ; =0x021D9678
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x32
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #5
+ add r1, #0x24
+ str r0, [r5, r1]
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D814C: .word 0x021D9678
+ thumb_func_end MOD54_021D8120
+
+ thumb_func_start MOD54_021D8150
+MOD54_021D8150: ; 0x021D8150
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02031190
+ cmp r0, #0
+ beq _021D8184
+ ldr r0, _021D826C ; =0x00004A3C
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D81A8
+ ldr r0, _021D8270 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0xc3
+ tst r0, r1
+ beq _021D8178
+ ldr r0, _021D8274 ; =0x000005F2
+ bl FUN_020054C8
+_021D8178:
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add sp, #8
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_021D8184:
+ ldr r0, _021D8278 ; =0x00004A50
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D81A8
+ ldr r0, _021D8270 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0xc3
+ tst r0, r1
+ beq _021D819C
+ ldr r0, _021D8274 ; =0x000005F2
+ bl FUN_020054C8
+_021D819C:
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add sp, #8
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_021D81A8:
+ bl MOD54_021D8C08
+ add r6, r0, #0
+ bl FUN_02030F20
+ cmp r6, r0
+ beq _021D81C2
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add sp, #8
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_021D81C2:
+ mov r0, #0x32
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x33
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _021D825E
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _021D8204
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D81FA
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r0, #0x75
+ add r1, sp, #4
+ mov r2, #1
+ bl FUN_02030ADC
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD54_021D8F40
+_021D81FA:
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD54_021D80BC
+ b _021D8256
+_021D8204:
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8220
+ add r0, r5, #0
+ mov r1, #0xb
+ bl MOD54_021D80BC
+ add r0, r5, #0
+ mov r1, #0xe
+ mov r2, #0
+ bl MOD54_021D8C90
+ b _021D8256
+_021D8220:
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #4
+ bl MI_CpuFill8
+ mov r1, #0
+ add r0, sp, #0
+ strb r1, [r0, #2]
+ bl FUN_02031190
+ add r1, sp, #0
+ strb r0, [r1]
+ ldr r0, _021D827C ; =0x00004A54
+ mov r1, #1
+ strb r1, [r5, r0]
+ mov r1, #0
+ add r0, #0xa
+ strh r1, [r5, r0]
+ mov r0, #0xd1
+ mov r1, #6
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r0, #0x70
+ add r1, sp, #0
+ mov r2, #4
+ bl FUN_02030ADC
+_021D8256:
+ mov r0, #0x32
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021D825E:
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_021D826C: .word 0x00004A3C
+_021D8270: .word 0x021C48B8
+_021D8274: .word 0x000005F2
+_021D8278: .word 0x00004A50
+_021D827C: .word 0x00004A54
+ thumb_func_end MOD54_021D8150
+
+ thumb_func_start MOD54_021D8280
+MOD54_021D8280: ; 0x021D8280
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, _021D8294 ; =0x00004A5E
+ mov r2, #0
+ strh r2, [r0, r1]
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r4, pc}
+ nop
+_021D8294: .word 0x00004A5E
+ thumb_func_end MOD54_021D8280
+
+ thumb_func_start MOD54_021D8298
+MOD54_021D8298: ; 0x021D8298
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02030F20
+ ldr r1, _021D8318 ; =0x00004A5C
+ ldrh r1, [r5, r1]
+ cmp r1, r0
+ bne _021D82B6
+ bl MOD54_021D8C08
+ ldr r1, _021D8318 ; =0x00004A5C
+ ldrh r2, [r5, r1]
+ cmp r2, r0
+ beq _021D82CE
+_021D82B6:
+ ldr r0, _021D831C ; =0x00004A5E
+ mov r1, #0
+ strh r1, [r5, r0]
+ mov r0, #0xd1
+ mov r1, #8
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_021D82CE:
+ add r0, r1, #2
+ ldrsh r0, [r5, r0]
+ add r2, r0, #1
+ add r0, r1, #2
+ strh r2, [r5, r0]
+ ldrsh r0, [r5, r0]
+ cmp r0, #0x1e
+ ble _021D830E
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #4
+ bl MI_CpuFill8
+ mov r1, #1
+ add r0, sp, #0
+ strb r1, [r0, #2]
+ bl FUN_02031190
+ add r1, sp, #0
+ strb r0, [r1]
+ mov r0, #0x70
+ add r1, sp, #0
+ mov r2, #4
+ bl FUN_02030ADC
+ ldr r0, _021D831C ; =0x00004A5E
+ mov r1, #0
+ strh r1, [r5, r0]
+ mov r0, #0xd1
+ mov r1, #9
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_021D830E:
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8318: .word 0x00004A5C
+_021D831C: .word 0x00004A5E
+ thumb_func_end MOD54_021D8298
+
+ thumb_func_start MOD54_021D8320
+MOD54_021D8320: ; 0x021D8320
+ push {r3, r4, r5, lr}
+ ldr r2, _021D833C ; =0x00004A54
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #0
+ strb r1, [r5, r2]
+ bl MOD54_021D80BC
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D833C: .word 0x00004A54
+ thumb_func_end MOD54_021D8320
+
+ thumb_func_start MOD54_021D8340
+MOD54_021D8340: ; 0x021D8340
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x33
+ add r4, r1, #0
+ str r0, [sp]
+ ldr r0, [r5]
+ ldr r1, _021D836C ; =0x021D9678
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x32
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #0x17
+ add r1, #0x24
+ str r0, [r5, r1]
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D836C: .word 0x021D9678
+ thumb_func_end MOD54_021D8340
+
+ thumb_func_start MOD54_021D8370
+MOD54_021D8370: ; 0x021D8370
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD54_021D8C08
+ ldr r1, _021D8410 ; =0x00004A48
+ ldr r2, [r5, r1]
+ cmp r2, r0
+ bne _021D838A
+ add r1, #8
+ ldr r0, [r5, r1]
+ cmp r0, #0
+ beq _021D83A4
+_021D838A:
+ ldr r0, _021D8414 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0xc3
+ tst r0, r1
+ beq _021D839A
+ ldr r0, _021D8418 ; =0x000005F2
+ bl FUN_020054C8
+_021D839A:
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_021D83A4:
+ mov r0, #0x32
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x33
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _021D8404
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _021D83DE
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x75
+ add r1, sp, #0
+ mov r2, #1
+ bl FUN_02030ADC
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD54_021D8F40
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD54_021D80BC
+ b _021D83FC
+_021D83DE:
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D83F8
+ mov r0, #0xd1
+ mov r1, #0x18
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ bl MOD54_021D8C08
+ ldr r1, _021D841C ; =0x00004A56
+ strb r0, [r5, r1]
+ b _021D83FC
+_021D83F8:
+ bl ErrorHandling
+_021D83FC:
+ mov r0, #0x32
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021D8404:
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8410: .word 0x00004A48
+_021D8414: .word 0x021C48B8
+_021D8418: .word 0x000005F2
+_021D841C: .word 0x00004A56
+ thumb_func_end MOD54_021D8370
+
+ thumb_func_start MOD54_021D8420
+MOD54_021D8420: ; 0x021D8420
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D8448 ; =0x00004A57
+ add r4, r1, #0
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ bne _021D8442
+ mov r1, #0
+ mov r0, #0x73
+ add r2, r1, #0
+ bl FUN_02030ADC
+ cmp r0, #1
+ bne _021D8442
+ ldr r0, _021D8448 ; =0x00004A57
+ mov r1, #1
+ strb r1, [r5, r0]
+_021D8442:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8448: .word 0x00004A57
+ thumb_func_end MOD54_021D8420
+
+ thumb_func_start MOD54_021D844C
+MOD54_021D844C: ; 0x021D844C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ ldr r2, [r4, #0x48]
+ mov r1, #0x12
+ bl FUN_0200A8E0
+ mov r0, #0xc2
+ lsl r0, r0, #2
+ ldr r1, [r4, #0x48]
+ add r0, r4, r0
+ mov r2, #0
+ bl MOD54_021D7E98
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x25
+ bl FUN_02020130
+ mov r0, #1
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D844C
+
+ thumb_func_start MOD54_021D847C
+MOD54_021D847C: ; 0x021D847C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D848E
+ bl FUN_02030F20
+_021D848E:
+ bl FUN_02030F20
+ ldr r1, _021D84A8 ; =0x00004A34
+ ldr r1, [r5, r1]
+ cmp r1, r0
+ bne _021D84A2
+ mov r0, #0xd1
+ mov r1, #0x1a
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_021D84A2:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D84A8: .word 0x00004A34
+ thumb_func_end MOD54_021D847C
+
+ thumb_func_start MOD54_021D84AC
+MOD54_021D84AC: ; 0x021D84AC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D84CC ; =0x00004A38
+ add r4, r1, #0
+ ldr r1, _021D84D0 ; =0x00000F74
+ ldr r0, [r5, r0]
+ add r1, r5, r1
+ bl MOD54_021D95CC
+ mov r0, #0xd1
+ mov r1, #0x1b
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D84CC: .word 0x00004A38
+_021D84D0: .word 0x00000F74
+ thumb_func_end MOD54_021D84AC
+
+ thumb_func_start MOD54_021D84D4
+MOD54_021D84D4: ; 0x021D84D4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r0, _021D8514 ; =0x021C4918
+ mov r1, #1
+ strb r1, [r0, #8]
+ mov r0, #0x33
+ bl FUN_020294F4
+ add r1, r0, #0
+ ldr r0, [r5, #8]
+ mov r2, #4
+ ldr r0, [r0, #0x10]
+ bl FUN_02028AD4
+ ldr r0, [r5, #8]
+ mov r1, #0x14
+ ldr r0, [r0, #0xc]
+ bl FUN_0202A170
+ mov r0, #0x3a
+ lsl r0, r0, #4
+ add r0, r5, r0
+ bl FUN_020336C0
+ mov r0, #0xd1
+ mov r1, #0x1c
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8514: .word 0x021C4918
+ thumb_func_end MOD54_021D84D4
+
+ thumb_func_start MOD54_021D8518
+MOD54_021D8518: ; 0x021D8518
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D852A
+ bl FUN_02030F20
+_021D852A:
+ ldr r0, [r5, #8]
+ mov r2, #0x3a
+ lsl r2, r2, #4
+ ldr r0, [r0]
+ mov r1, #2
+ add r2, r5, r2
+ bl FUN_020336C8
+ cmp r0, #0
+ beq _021D8576
+ ldr r0, _021D857C ; =0x00000658
+ mov r1, #8
+ bl FUN_020054F0
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0
+ bl MOD54_021D8C90
+ add r0, r5, #0
+ mov r1, #0x1d
+ bl MOD54_021D80BC
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_02020130
+ mov r1, #0
+ mov r0, #0x35
+ str r1, [r5, #0xc]
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ ldr r0, _021D8580 ; =0x021C4918
+ strb r1, [r0, #8]
+ ldr r0, _021D8584 ; =0x00004A40
+ strb r1, [r5, r0]
+_021D8576:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D857C: .word 0x00000658
+_021D8580: .word 0x021C4918
+_021D8584: .word 0x00004A40
+ thumb_func_end MOD54_021D8518
+
+ thumb_func_start MOD54_021D8588
+MOD54_021D8588: ; 0x021D8588
+ push {r3, r4}
+ mov r2, #0x35
+ lsl r2, r2, #4
+ ldr r4, [r0, r2]
+ add r3, r4, #1
+ str r3, [r0, r2]
+ cmp r4, #0x3c
+ ble _021D859E
+ mov r3, #0xf
+ sub r2, #0xc
+ str r3, [r0, r2]
+_021D859E:
+ add r0, r1, #0
+ pop {r3, r4}
+ bx lr
+ thumb_func_end MOD54_021D8588
+
+ thumb_func_start MOD54_021D85A4
+MOD54_021D85A4: ; 0x021D85A4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r1, #5
+ mov r2, #0
+ bl MOD54_021D8C90
+ add r0, r5, #0
+ mov r1, #0xa
+ bl MOD54_021D80BC
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD54_021D85A4
+
+ thumb_func_start MOD54_021D85C4
+MOD54_021D85C4: ; 0x021D85C4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0x35
+ lsl r0, r0, #4
+ add r4, r1, #0
+ ldr r1, [r5, r0]
+ add r1, r1, #1
+ str r1, [r5, r0]
+ ldr r0, [r5, r0]
+ cmp r0, #0x3c
+ ble _021D85F4
+ mov r1, #0x10
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x33
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r4, #3
+_021D85F4:
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD54_021D85C4
+
+ thumb_func_start MOD54_021D8600
+MOD54_021D8600: ; 0x021D8600
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x33
+ add r4, r1, #0
+ str r0, [sp]
+ ldr r0, [r5]
+ ldr r1, _021D862C ; =0x021D9678
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x32
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #0xc
+ add r1, #0x24
+ str r0, [r5, r1]
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D862C: .word 0x021D9678
+ thumb_func_end MOD54_021D8600
+
+ thumb_func_start MOD54_021D8630
+MOD54_021D8630: ; 0x021D8630
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD54_021D8C08
+ ldr r1, _021D86D0 ; =0x00004A48
+ ldr r2, [r5, r1]
+ cmp r2, r0
+ bne _021D864A
+ add r1, #8
+ ldr r0, [r5, r1]
+ cmp r0, #0
+ beq _021D8664
+_021D864A:
+ ldr r0, _021D86D4 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0xc3
+ tst r0, r1
+ beq _021D865A
+ ldr r0, _021D86D8 ; =0x000005F2
+ bl FUN_020054C8
+_021D865A:
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_021D8664:
+ mov r0, #0x32
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x33
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _021D86C6
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _021D869C
+ mov r1, #0
+ mov r0, #0xd1
+ str r1, [sp]
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r0, #0x75
+ add r1, sp, #0
+ mov r2, #1
+ bl FUN_02030ADC
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD54_021D8F40
+ b _021D86BE
+_021D869C:
+ mov r0, #0xd1
+ mov r1, #0xd
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0
+ mov r0, #0x71
+ add r2, r1, #0
+ bl FUN_02030ADC
+ mov r0, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r5, #0x24]
+ mov r1, #0
+ bl FUN_0200ABC0
+_021D86BE:
+ mov r0, #0x32
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021D86C6:
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D86D0: .word 0x00004A48
+_021D86D4: .word 0x021C48B8
+_021D86D8: .word 0x000005F2
+ thumb_func_end MOD54_021D8630
+
+ thumb_func_start MOD54_021D86DC
+MOD54_021D86DC: ; 0x021D86DC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D86F6
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #0
+ bl MOD54_021D8C90
+ b _021D8710
+_021D86F6:
+ mov r0, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r5, #0x24]
+ mov r1, #0
+ bl FUN_0200ABC0
+ add r0, r5, #0
+ mov r1, #0x10
+ mov r2, #0
+ bl MOD54_021D8C90
+_021D8710:
+ add r0, r5, #0
+ mov r1, #0xe
+ bl MOD54_021D80BC
+ mov r0, #0x35
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D86DC
+
+ thumb_func_start MOD54_021D872C
+MOD54_021D872C: ; 0x021D872C
+ push {r4, lr}
+ add r4, r1, #0
+ mov r1, #0x35
+ lsl r1, r1, #4
+ ldr r2, [r0, r1]
+ add r2, r2, #1
+ str r2, [r0, r1]
+ ldr r2, [r0, r1]
+ cmp r2, #0x2d
+ ble _021D8746
+ mov r2, #0xf
+ sub r1, #0xc
+ str r2, [r0, r1]
+_021D8746:
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D872C
+
+ thumb_func_start MOD54_021D8750
+MOD54_021D8750: ; 0x021D8750
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0xc9
+ add r4, r1, #0
+ bl FUN_02031588
+ mov r0, #0xd1
+ mov r1, #0x10
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D8750
+
+ thumb_func_start MOD54_021D8770
+MOD54_021D8770: ; 0x021D8770
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #0xc9
+ add r5, r1, #0
+ bl FUN_020315D8
+ cmp r0, #0
+ beq _021D87A2
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020334E8
+ mov r1, #0x10
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x33
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r5, #3
+_021D87A2:
+ add r0, r4, #0
+ bl MOD54_021D80A0
+ add r0, r5, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D8770
+
+ thumb_func_start MOD54_021D87B0
+MOD54_021D87B0: ; 0x021D87B0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #9
+ mov r2, #0
+ add r5, r0, #0
+ bl MOD54_021D8C90
+ mov r0, #0xd1
+ mov r1, #0x12
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD54_021D87B0
+
+ thumb_func_start MOD54_021D87D0
+MOD54_021D87D0: ; 0x021D87D0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x4c]
+ add r4, r1, #0
+ bl MOD54_021D8D20
+ cmp r0, #0
+ beq _021D87E8
+ mov r0, #0xd1
+ mov r1, #0xa
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_021D87E8:
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D87D0
+
+ thumb_func_start MOD54_021D87F4
+MOD54_021D87F4: ; 0x021D87F4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x4c]
+ add r4, r1, #0
+ cmp r0, #0xff
+ beq _021D8812
+ bl MOD54_021D8D20
+ cmp r0, #0
+ bne _021D8812
+ ldr r0, [r5, #0x4c]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD7C
+_021D8812:
+ add r0, r5, #0
+ mov r1, #0xf
+ mov r2, #1
+ bl MOD54_021D8C90
+ mov r0, #0xd1
+ mov r1, #0x14
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8834
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD54_021D8F40
+_021D8834:
+ bl FUN_02030F20
+ ldr r1, _021D8848 ; =0x00004A58
+ str r0, [r5, r1]
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8848: .word 0x00004A58
+ thumb_func_end MOD54_021D87F4
+
+ thumb_func_start MOD54_021D884C
+MOD54_021D884C: ; 0x021D884C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D8884 ; =0x00004A58
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D886A
+ bl FUN_02030F20
+ ldr r1, _021D8884 ; =0x00004A58
+ ldr r2, [r5, r1]
+ cmp r2, r0
+ beq _021D886A
+ mov r0, #0
+ str r0, [r5, r1]
+_021D886A:
+ mov r0, #0xd1
+ mov r1, #0x15
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0
+ add r0, #0xc
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8884: .word 0x00004A58
+ thumb_func_end MOD54_021D884C
+
+ thumb_func_start MOD54_021D8888
+MOD54_021D8888: ; 0x021D8888
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D88E0 ; =0x00004A58
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D88A6
+ bl FUN_02030F20
+ ldr r1, _021D88E0 ; =0x00004A58
+ ldr r2, [r5, r1]
+ cmp r2, r0
+ beq _021D88A6
+ mov r0, #0
+ str r0, [r5, r1]
+_021D88A6:
+ mov r1, #0x35
+ lsl r1, r1, #4
+ ldr r0, [r5, r1]
+ add r0, r0, #1
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ cmp r0, #0x3c
+ ble _021D88D4
+ ldr r0, _021D88E0 ; =0x00004A58
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bne _021D88D4
+ mov r0, #0
+ sub r1, #0xc
+ str r0, [r5, r1]
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D88D4
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD54_021D8F40
+_021D88D4:
+ add r0, r5, #0
+ bl MOD54_021D80A0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D88E0: .word 0x00004A58
+ thumb_func_end MOD54_021D8888
+
+ thumb_func_start MOD54_021D88E4
+MOD54_021D88E4: ; 0x021D88E4
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ cmp r4, #0xd
+ bgt _021D8906
+ bge _021D891A
+ cmp r4, #8
+ bgt _021D89BE
+ cmp r4, #2
+ blt _021D89BE
+ beq _021D8914
+ cmp r4, #7
+ beq _021D89B8
+ cmp r4, #8
+ beq _021D89B8
+ pop {r4, r5, r6, pc}
+_021D8906:
+ cmp r4, #0x13
+ bgt _021D890E
+ beq _021D896C
+ pop {r4, r5, r6, pc}
+_021D890E:
+ cmp r4, #0x19
+ beq _021D8934
+ pop {r4, r5, r6, pc}
+_021D8914:
+ bl MOD54_021D8D40
+ b _021D89B8
+_021D891A:
+ mov r0, #0x32
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D89B8
+ mov r1, #0x33
+ bl FUN_020021EC
+ mov r0, #0x32
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _021D89B8
+_021D8934:
+ ldr r0, [r5, #0x4c]
+ bl MOD54_021D8D20
+ cmp r0, #0
+ bne _021D8948
+ ldr r0, [r5, #0x4c]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD7C
+_021D8948:
+ add r0, r5, #0
+ mov r1, #0xc
+ mov r2, #0
+ bl MOD54_021D8C90
+ mov r0, #0x32
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D89B8
+ mov r1, #0x33
+ bl FUN_020021EC
+ mov r0, #0x32
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _021D89B8
+_021D896C:
+ ldr r0, _021D89C0 ; =0x00004A54
+ ldrb r0, [r5, r0]
+ cmp r0, #1
+ beq _021D89BE
+ add r0, r6, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r5, #0x24]
+ mov r1, #0
+ bl FUN_0200ABC0
+ bl FUN_02031190
+ cmp r6, r0
+ beq _021D89BE
+ mov r0, #0x32
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D89A4
+ mov r1, #0x33
+ bl FUN_020021EC
+ mov r0, #0x32
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021D89A4:
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D89B8
+ ldr r1, _021D89C4 ; =0x00004A50
+ ldr r0, _021D89C8 ; =0x0000FFFF
+ ldr r2, [r5, r1]
+ eor r0, r6
+ and r0, r2
+ str r0, [r5, r1]
+_021D89B8:
+ mov r0, #0xd1
+ lsl r0, r0, #2
+ str r4, [r5, r0]
+_021D89BE:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D89C0: .word 0x00004A54
+_021D89C4: .word 0x00004A50
+_021D89C8: .word 0x0000FFFF
+ thumb_func_end MOD54_021D88E4
+
+ thumb_func_start MOD54_021D89CC
+MOD54_021D89CC: ; 0x021D89CC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ mov r0, #0xd1
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ add r6, r2, #0
+ cmp r0, #3
+ bne _021D8A6C
+ cmp r4, #1
+ beq _021D89EA
+ cmp r4, #0x13
+ beq _021D8A2E
+ b _021D8A64
+_021D89EA:
+ add r0, r6, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r5, #0x24]
+ mov r1, #0
+ bl FUN_0200ABC0
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD54_021D8F40
+ mov r0, #0xd1
+ lsl r0, r0, #2
+ str r4, [r5, r0]
+ bl FUN_02030F20
+ ldr r1, _021D8A84 ; =0x00004A48
+ str r0, [r5, r1]
+ mov r0, #0
+ add r1, #8
+ str r0, [r5, r1]
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8A7E
+ mov r2, #1
+ mov r0, #0x75
+ add r1, sp, #0
+ str r2, [sp]
+ bl FUN_02030ADC
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_021D8A2E:
+ add r0, r6, #0
+ bl FUN_0202DFA4
+ add r2, r0, #0
+ ldr r0, [r5, #0x24]
+ mov r1, #0
+ bl FUN_0200ABC0
+ bl FUN_02031190
+ cmp r6, r0
+ beq _021D8A7E
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8A5A
+ ldr r1, _021D8A88 ; =0x00004A50
+ ldr r0, _021D8A8C ; =0x0000FFFF
+ ldr r2, [r5, r1]
+ eor r0, r6
+ and r0, r2
+ str r0, [r5, r1]
+_021D8A5A:
+ mov r0, #0xd1
+ lsl r0, r0, #2
+ add sp, #4
+ str r4, [r5, r0]
+ pop {r3, r4, r5, r6, pc}
+_021D8A64:
+ bl ErrorHandling
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+_021D8A6C:
+ cmp r4, #1
+ bne _021D8A7E
+ ldr r0, _021D8A88 ; =0x00004A50
+ mov r1, #0
+ str r1, [r5, r0]
+ bl FUN_02030F20
+ ldr r1, _021D8A84 ; =0x00004A48
+ str r0, [r5, r1]
+_021D8A7E:
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D8A84: .word 0x00004A48
+_021D8A88: .word 0x00004A50
+_021D8A8C: .word 0x0000FFFF
+ thumb_func_end MOD54_021D89CC
+
+ thumb_func_start MOD54_021D8A90
+MOD54_021D8A90: ; 0x021D8A90
+ push {r3, lr}
+ ldrh r1, [r0]
+ add r1, #0xa
+ strh r1, [r0]
+ ldrh r2, [r0]
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ cmp r2, r1
+ bls _021D8AA6
+ mov r1, #0
+ strh r1, [r0]
+_021D8AA6:
+ ldrh r0, [r0]
+ bl FUN_0201B970
+ mov r1, #0xa
+ add r2, r0, #0
+ mul r2, r1
+ asr r0, r2, #0xb
+ lsr r0, r0, #0x14
+ add r0, r2, r0
+ asr r0, r0, #0xc
+ add r0, #0xf
+ lsl r2, r0, #5
+ mov r0, #0x1d
+ orr r2, r0
+ add r0, sp, #0
+ strh r2, [r0]
+ add r0, sp, #0
+ mov r2, #2
+ bl GX_LoadOBJPltt
+ add r0, sp, #0
+ mov r1, #0x2a
+ mov r2, #2
+ bl GX_LoadOBJPltt
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D8A90
+
+ thumb_func_start MOD54_021D8ADC
+MOD54_021D8ADC: ; 0x021D8ADC
+ push {r3, r4, r5, lr}
+ mov r5, #0
+ add r4, r5, #0
+_021D8AE2:
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ cmp r0, #0
+ beq _021D8AEE
+ add r5, r5, #1
+_021D8AEE:
+ add r4, r4, #1
+ cmp r4, #5
+ blt _021D8AE2
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD54_021D8ADC
+
+ thumb_func_start MOD54_021D8AF8
+MOD54_021D8AF8: ; 0x021D8AF8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ str r3, [sp, #0x14]
+ add r6, r0, #0
+ str r2, [sp, #0x10]
+ bl FUN_02031190
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x14]
+ bl MOD54_021D8C2C
+ cmp r0, #0
+ bne _021D8B18
+ add sp, #0x28
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021D8B18:
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r7, [sp, #0x14]
+ mov r0, #0
+ str r0, [sp, #0x20]
+ add r4, r7, #0
+ mov r5, #1
+_021D8B2A:
+ mov r0, #0xd9
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ cmp r0, #0
+ beq _021D8BE4
+ bl FUN_020239C0
+ str r0, [sp, #0x24]
+ mov r0, #0xd9
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ ldr r1, [r4, #0x2c]
+ bl FUN_02023990
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x24]
+ ldr r0, [r0, #0x24]
+ mov r1, #0
+ mov r3, #5
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x14]
+ ldr r0, [r0, #0x24]
+ ldr r1, [r1, #0x28]
+ mov r2, #1
+ mov r3, #0x33
+ bl FUN_0200A9C4
+ str r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ ldr r0, [sp, #0x20]
+ cmp r1, r0
+ str r5, [sp]
+ bne _021D8BAC
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D8C00 ; =0x00020300
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x2c]
+ add r0, r6, #0
+ mov r3, #5
+ bl FUN_0201BDE0
+ str r5, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D8C00 ; =0x00020300
+ ldr r2, [sp, #0x18]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ mov r1, #0
+ mov r3, #0x46
+ bl FUN_0201BDE0
+ b _021D8BDE
+_021D8BAC:
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x10]
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x2c]
+ add r0, r6, #0
+ mov r3, #5
+ bl FUN_0201BDE0
+ str r5, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x18]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ mov r1, #0
+ mov r3, #0x46
+ bl FUN_0201BDE0
+_021D8BDE:
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+_021D8BE4:
+ ldr r0, [sp, #0x20]
+ add r7, #8
+ add r0, r0, #1
+ add r4, r4, #4
+ add r5, #0x12
+ str r0, [sp, #0x20]
+ cmp r0, #5
+ blt _021D8B2A
+ add r0, r6, #0
+ bl FUN_020191D0
+ mov r0, #1
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8C00: .word 0x00020300
+ thumb_func_end MOD54_021D8AF8
+
+ thumb_func_start MOD54_021D8C04
+MOD54_021D8C04: ; 0x021D8C04
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD54_021D8C04
+
+ thumb_func_start MOD54_021D8C08
+MOD54_021D8C08: ; 0x021D8C08
+ push {r3, r4, r5, lr}
+ mov r5, #0
+ add r4, r5, #0
+_021D8C0E:
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ cmp r0, #0
+ beq _021D8C1A
+ add r5, r5, #1
+_021D8C1A:
+ add r4, r4, #1
+ cmp r4, #5
+ blt _021D8C0E
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD54_021D8C08
+
+ thumb_func_start MOD54_021D8C24
+MOD54_021D8C24: ; 0x021D8C24
+ ldr r3, _021D8C28 ; =MOD54_021D8C08
+ bx r3
+ .align 2, 0
+_021D8C28: .word MOD54_021D8C08
+ thumb_func_end MOD54_021D8C24
+
+ thumb_func_start MOD54_021D8C2C
+MOD54_021D8C2C: ; 0x021D8C2C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r4, #0
+ mov r7, #0xd9
+ str r4, [sp]
+ add r5, r6, #0
+ lsl r7, r7, #2
+_021D8C3A:
+ mov r0, #0xd9
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ add r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ bl FUN_0202DFA4
+ str r0, [r5, r7]
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #5
+ blt _021D8C3A
+ mov r7, #0xda
+ mov r5, #0
+ add r4, r6, #0
+ mov r1, #1
+ mov r0, #3
+ lsl r7, r7, #2
+_021D8C60:
+ mov r2, #0xd9
+ lsl r2, r2, #2
+ ldr r3, [r6, r2]
+ ldr r2, [r6, r7]
+ cmp r2, r3
+ beq _021D8C80
+ str r1, [sp]
+ cmp r3, #0
+ bne _021D8C7A
+ mov r2, #0xe3
+ lsl r2, r2, #2
+ str r0, [r4, r2]
+ b _021D8C80
+_021D8C7A:
+ mov r2, #0xe3
+ lsl r2, r2, #2
+ str r1, [r4, r2]
+_021D8C80:
+ add r5, r5, #1
+ add r6, #8
+ add r4, r4, #4
+ cmp r5, #5
+ blt _021D8C60
+ ldr r0, [sp]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D8C2C
+
+ thumb_func_start MOD54_021D8C90
+MOD54_021D8C90: ; 0x021D8C90
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r7, r1, #0
+ mov r0, #0xb4
+ mov r1, #0x33
+ add r6, r2, #0
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, [r5, #0x28]
+ add r1, r7, #0
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ ldr r0, [r5, #0x24]
+ ldr r1, [r5, #0x44]
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ mov r0, #0xba
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0xba
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ cmp r6, #0
+ bne _021D8D00
+ add r0, r5, #0
+ bl MOD54_021D8F3C
+ mov r3, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0xba
+ lsl r0, r0, #2
+ ldr r2, [r5, #0x44]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ add sp, #0xc
+ str r0, [r5, #0x4c]
+ pop {r4, r5, r6, r7, pc}
+_021D8D00:
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0xba
+ lsl r0, r0, #2
+ ldr r2, [r5, #0x44]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r0, #0xff
+ str r0, [r5, #0x4c]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D8C90
+
+ thumb_func_start MOD54_021D8D20
+MOD54_021D8D20: ; 0x021D8D20
+ push {r3, lr}
+ cmp r0, #0xff
+ bne _021D8D2A
+ mov r0, #1
+ pop {r3, pc}
+_021D8D2A:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D8D3A
+ mov r0, #1
+ pop {r3, pc}
+_021D8D3A:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D8D20
+
+ thumb_func_start MOD54_021D8D40
+MOD54_021D8D40: ; 0x021D8D40
+ mov r1, #0xba
+ lsl r1, r1, #2
+ add r0, r0, r1
+ ldr r3, _021D8D4C ; =0x0200D0E1
+ mov r1, #0
+ bx r3
+ .align 2, 0
+_021D8D4C: .word 0x0200D0E1
+ thumb_func_end MOD54_021D8D40
+
+ thumb_func_start MOD54_021D8D50
+MOD54_021D8D50: ; 0x021D8D50
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ str r0, [sp, #0x14]
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ mov r4, #0
+ add r0, r5, r0
+ str r4, [sp, #8]
+ add r6, r5, #0
+ mov r7, #0x1c
+ str r0, [sp, #0x18]
+_021D8D72:
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #3
+ bhi _021D8E3E
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8D88: ; jump table
+ .short _021D8E3E - _021D8D88 - 2 ; case 0
+ .short _021D8D90 - _021D8D88 - 2 ; case 1
+ .short _021D8E3E - _021D8D88 - 2 ; case 2
+ .short _021D8E06 - _021D8D88 - 2 ; case 3
+_021D8D90:
+ mov r0, #0xd9
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bne _021D8D9E
+ bl ErrorHandling
+_021D8D9E:
+ mov r0, #0xd9
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_020239CC
+ str r0, [sp, #0xc]
+ mov r0, #0xd9
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02023A28
+ str r0, [sp, #0x10]
+ bl FUN_02031190
+ cmp r4, r0
+ bne _021D8DD0
+ mov r0, #0x8b
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #2
+ lsl r1, r1, #1
+ ldr r0, [r5, r0]
+ add r1, #0x26
+ bl FUN_02020130
+ b _021D8DEC
+_021D8DD0:
+ ldr r0, [sp, #0xc]
+ ldr r1, [sp, #0x18]
+ str r0, [sp]
+ ldr r0, [sp, #0x14]
+ ldr r3, [sp, #0x10]
+ add r2, r4, #0
+ bl MOD54_021D8EC8
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [sp, #4]
+ bl FUN_02020130
+_021D8DEC:
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0xe3
+ mov r1, #2
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r0, #1
+ str r0, [sp, #8]
+ b _021D8E3E
+_021D8E06:
+ bl FUN_02031190
+ cmp r4, r0
+ bne _021D8E2A
+ mov r0, #0xd9
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_020239CC
+ add r1, r0, #0
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ lsl r1, r1, #1
+ ldr r0, [r5, r0]
+ add r1, #0x27
+ bl FUN_02020130
+ b _021D8E36
+_021D8E2A:
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r7, #0
+ bl FUN_02020130
+_021D8E36:
+ mov r0, #0xe3
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_021D8E3E:
+ ldr r0, [sp, #4]
+ add r4, r4, #1
+ add r0, r0, #2
+ add r5, r5, #4
+ add r6, #8
+ add r7, r7, #2
+ str r0, [sp, #4]
+ cmp r4, #5
+ blt _021D8D72
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ beq _021D8E5C
+ ldr r0, _021D8E60 ; =0x0000064F
+ bl FUN_020054C8
+_021D8E5C:
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8E60: .word 0x0000064F
+ thumb_func_end MOD54_021D8D50
+
+ thumb_func_start MOD54_021D8E64
+MOD54_021D8E64: ; 0x021D8E64
+ push {r3, r4, lr}
+ sub sp, #4
+ mov r2, #0xcf
+ add r4, r0, #0
+ lsl r2, r2, #2
+ mov r0, #0x68
+ mov r1, #8
+ add r2, r4, r2
+ mov r3, #0x33
+ bl FUN_02006C08
+ mov r2, #0xcd
+ lsl r2, r2, #2
+ str r0, [r4, r2]
+ add r2, #0xc
+ mov r0, #0x56
+ mov r1, #7
+ add r2, r4, r2
+ mov r3, #0x33
+ bl FUN_02006C08
+ mov r3, #0xce
+ lsl r3, r3, #2
+ str r0, [r4, r3]
+ mov r0, #0x33
+ sub r3, #0xc
+ str r0, [sp]
+ mov r0, #0x68
+ mov r1, #0x20
+ mov r2, #1
+ add r3, r4, r3
+ bl FUN_02006BB0
+ mov r1, #0xc9
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r3, #0x33
+ str r3, [sp]
+ lsl r3, r3, #4
+ mov r0, #0x56
+ mov r1, #9
+ mov r2, #1
+ add r3, r4, r3
+ bl FUN_02006BB0
+ mov r1, #0xca
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD54_021D8E64
+
+ thumb_func_start MOD54_021D8EC8
+MOD54_021D8EC8: ; 0x021D8EC8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ add r6, r1, #0
+ ldr r0, [sp, #0x18]
+ add r1, r3, #0
+ add r5, r2, #0
+ bl FUN_020536C8
+ add r4, r0, #0
+ ldr r0, [r6, #4]
+ mov r2, #6
+ ldr r6, [r0, #0xc]
+ ldr r0, [r7, #4]
+ lsl r2, r2, #8
+ ldr r1, [r0, #0x14]
+ add r0, r4, #0
+ mul r0, r2
+ add r0, r1, r0
+ ldr r1, _021D8F08 ; =0x021D9680
+ lsl r3, r5, #1
+ ldrh r1, [r1, r3]
+ bl GX_LoadOBJ
+ lsl r0, r4, #5
+ add r1, r5, #7
+ add r0, r6, r0
+ lsl r1, r1, #5
+ mov r2, #0x20
+ bl GX_LoadOBJPltt
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8F08: .word 0x021D9680
+ thumb_func_end MOD54_021D8EC8
+
+ thumb_func_start MOD54_021D8F0C
+MOD54_021D8F0C: ; 0x021D8F0C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xcd
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0xce
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0xc9
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ mov r0, #0xca
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D8F0C
+
+ thumb_func_start MOD54_021D8F3C
+MOD54_021D8F3C: ; 0x021D8F3C
+ mov r0, #1
+ bx lr
+ thumb_func_end MOD54_021D8F3C
+
+ thumb_func_start MOD54_021D8F40
+MOD54_021D8F40: ; 0x021D8F40
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02031190
+ cmp r0, #0
+ bne _021D8F8C
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _021D8F5E
+ mov r0, #1
+ bl FUN_02032B6C
+ b _021D8F6E
+_021D8F5E:
+ bl FUN_02030F20
+ add r0, r4, r0
+ cmp r0, #5
+ ble _021D8F6A
+ mov r0, #5
+_021D8F6A:
+ bl FUN_02032B6C
+_021D8F6E:
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ ldr r0, _021D8F90 ; =0x00004A55
+ bne _021D8F7E
+ mov r1, #2
+ strb r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+_021D8F7E:
+ cmp r4, #0
+ bne _021D8F88
+ mov r1, #1
+ strb r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+_021D8F88:
+ mov r1, #0
+ strb r1, [r5, r0]
+_021D8F8C:
+ pop {r3, r4, r5, pc}
+ nop
+_021D8F90: .word 0x00004A55
+ thumb_func_end MOD54_021D8F40
+
+ thumb_func_start MOD54_021D8F94
+MOD54_021D8F94: ; 0x021D8F94
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r0, #0
+ add r6, r1, #0
+ bl MOD54_021D8C08
+ add r5, r0, #0
+ ldr r0, _021D9088 ; =0x00004A48
+ ldr r1, [r4, r0]
+ cmp r5, r1
+ ble _021D8FBE
+ mov r2, #1
+ add r0, sp, #0
+ strb r2, [r0]
+ mov r0, #0x75
+ add r1, sp, #0
+ bl FUN_02030ADC
+ mov r1, #1
+ ldr r0, _021D908C ; =0x00004A4C
+ b _021D8FC2
+_021D8FBE:
+ mov r1, #0
+ add r0, r0, #4
+_021D8FC2:
+ str r1, [r4, r0]
+ ldr r0, _021D9090 ; =0x00004A44
+ ldr r0, [r4, r0]
+ cmp r5, r0
+ bne _021D8FD2
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D8FD2:
+ cmp r5, #5
+ bhi _021D9078
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8FE2: ; jump table
+ .short _021D9078 - _021D8FE2 - 2 ; case 0
+ .short _021D8FEE - _021D8FE2 - 2 ; case 1
+ .short _021D9032 - _021D8FE2 - 2 ; case 2
+ .short _021D9032 - _021D8FE2 - 2 ; case 3
+ .short _021D9032 - _021D8FE2 - 2 ; case 4
+ .short _021D906A - _021D8FE2 - 2 ; case 5
+_021D8FEE:
+ bl FUN_02030F20
+ cmp r0, #1
+ bgt _021D8FFE
+ bl FUN_0202CB8C
+ cmp r0, #1
+ bls _021D9004
+_021D8FFE:
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D9004:
+ mov r0, #0xd1
+ mov r1, #0x11
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r4, #0
+ sub r1, #0x12
+ bl MOD54_021D8F40
+ mov r0, #0x32
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D902C
+ mov r1, #0x33
+ bl FUN_020021EC
+ mov r0, #0x32
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+_021D902C:
+ add sp, #4
+ mov r0, #2
+ pop {r3, r4, r5, r6, pc}
+_021D9032:
+ mov r0, #2
+ bl FUN_02052B74
+ ldr r0, _021D9090 ; =0x00004A44
+ ldr r1, [r4, r0]
+ cmp r5, r1
+ bge _021D9078
+ add r0, #0x11
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ beq _021D904E
+ cmp r0, #1
+ beq _021D9058
+ b _021D9060
+_021D904E:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD54_021D8F40
+ b _021D9060
+_021D9058:
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD54_021D8F40
+_021D9060:
+ bl FUN_02030F20
+ ldr r1, _021D9088 ; =0x00004A48
+ str r0, [r4, r1]
+ b _021D9078
+_021D906A:
+ mov r0, #9
+ bl FUN_02052B74
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD54_021D8F40
+_021D9078:
+ bl MOD54_021D8C08
+ ldr r1, _021D9090 ; =0x00004A44
+ str r0, [r4, r1]
+ mov r0, #1
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D9088: .word 0x00004A48
+_021D908C: .word 0x00004A4C
+_021D9090: .word 0x00004A44
+ thumb_func_end MOD54_021D8F94
+
+ thumb_func_start MOD54_021D9094
+MOD54_021D9094: ; 0x021D9094
+ mov r0, #0x2c
+ bx lr
+ thumb_func_end MOD54_021D9094
+
+ thumb_func_start MOD54_021D9098
+MOD54_021D9098: ; 0x021D9098
+ add r0, #0x2c
+ bx lr
+ thumb_func_end MOD54_021D9098
+
+ thumb_func_start MOD54_021D909C
+MOD54_021D909C: ; 0x021D909C
+ push {r4, r5, r6, r7}
+ add r7, r0, #0
+ add r6, r7, #0
+ mov ip, r1
+ mov r5, #5
+ add r6, #0xdc
+_021D90A8:
+ add r4, r6, #0
+ sub r4, #0x2c
+ add r3, r6, #0
+ mov r2, #5
+_021D90B0:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D90B0
+ ldr r0, [r4]
+ sub r5, r5, #1
+ sub r6, #0x2c
+ str r0, [r3]
+ cmp r5, #2
+ bgt _021D90A8
+ add r7, #0x58
+ mov r3, #5
+_021D90C8:
+ mov r2, ip
+ ldmia r2!, {r0, r1}
+ mov ip, r2
+ stmia r7!, {r0, r1}
+ sub r3, r3, #1
+ bne _021D90C8
+ mov r0, ip
+ ldr r0, [r0]
+ str r0, [r7]
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD54_021D909C
+
+ thumb_func_start MOD54_021D90E0
+MOD54_021D90E0: ; 0x021D90E0
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ add r4, r0, #0
+ cmp r5, #2
+ blt _021D90EE
+ cmp r5, #5
+ ble _021D90F2
+_021D90EE:
+ bl ErrorHandling
+_021D90F2:
+ add r2, r5, #1
+ cmp r2, #5
+ bgt _021D911A
+ mov r0, #0x2c
+ mul r0, r2
+ add r3, r4, r0
+_021D90FE:
+ add r6, r3, #0
+ add r7, r3, #0
+ sub r6, #0x2c
+ mov r5, #5
+_021D9106:
+ ldmia r7!, {r0, r1}
+ stmia r6!, {r0, r1}
+ sub r5, r5, #1
+ bne _021D9106
+ ldr r0, [r7]
+ add r2, r2, #1
+ add r3, #0x2c
+ str r0, [r6]
+ cmp r2, #5
+ ble _021D90FE
+_021D911A:
+ ldr r0, _021D9128 ; =0x0000FFFF
+ add r1, r4, #0
+ add r4, #0xdc
+ add r1, #0xdc
+ strh r0, [r4]
+ strh r0, [r1, #0x10]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9128: .word 0x0000FFFF
+ thumb_func_end MOD54_021D90E0
+
+ thumb_func_start MOD54_021D912C
+MOD54_021D912C: ; 0x021D912C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp]
+ add r5, r2, #0
+ str r1, [sp, #4]
+ str r3, [sp, #8]
+ cmp r0, #0
+ ble _021D91A6
+ mov r7, #0x2c
+_021D9144:
+ ldr r0, [sp, #8]
+ ldr r1, [sp, #0xc]
+ ldr r6, [r0]
+ ldr r0, [sp, #4]
+ cmp r1, r0
+ beq _021D9194
+ cmp r6, #0
+ beq _021D9194
+ add r0, r6, #0
+ bl FUN_0202888C
+ cmp r0, #1
+ beq _021D9194
+ add r0, r6, #0
+ add r1, r5, #0
+ bl FUN_020288AC
+ cmp r0, #0
+ bne _021D9194
+ mov r4, #0
+_021D916C:
+ add r1, r4, #2
+ add r2, r1, #0
+ mul r2, r7
+ add r0, r6, #0
+ add r1, r5, r2
+ bl FUN_020288AC
+ cmp r0, #0
+ beq _021D9186
+ add r0, r5, #0
+ add r1, r4, #2
+ bl MOD54_021D90E0
+_021D9186:
+ add r4, r4, #1
+ cmp r4, #4
+ blt _021D916C
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD54_021D909C
+_021D9194:
+ ldr r0, [sp, #8]
+ add r0, r0, #4
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ add r1, r0, #1
+ ldr r0, [sp]
+ str r1, [sp, #0xc]
+ cmp r1, r0
+ blt _021D9144
+_021D91A6:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D912C
+
+ thumb_func_start MOD54_021D91AC
+MOD54_021D91AC: ; 0x021D91AC
+ mov r0, #0x12
+ lsl r0, r0, #4
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD54_021D91AC
+
+ thumb_func_start MOD54_021D91B4
+MOD54_021D91B4: ; 0x021D91B4
+ mov r0, #0x12
+ lsl r0, r0, #4
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD54_021D91B4
+
+ thumb_func_start MOD54_021D91BC
+MOD54_021D91BC: ; 0x021D91BC
+ mov r0, #0x12
+ lsl r0, r0, #4
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD54_021D91BC
+
+ thumb_func_start MOD54_021D91C4
+MOD54_021D91C4: ; 0x021D91C4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ str r3, [sp, #4]
+ add r5, r1, #0
+ str r2, [sp]
+ bl FUN_020238F4
+ add r4, r0, #0
+ ldr r0, [sp, #4]
+ mov r7, #0
+ cmp r0, #0
+ ble _021D9234
+_021D91DC:
+ mov r0, #0
+ add r1, r5, #0
+ mov r2, #0x48
+ bl MIi_CpuClearFast
+ add r0, r4, #0
+ bl FUN_020239BC
+ str r0, [r5]
+ add r0, r4, #0
+ bl FUN_020239CC
+ strb r0, [r5, #4]
+ mov r0, #0xa
+ strb r0, [r5, #5]
+ mov r0, #2
+ strb r0, [r5, #6]
+ add r0, r4, #0
+ bl FUN_0202398C
+ add r1, r0, #0
+ add r0, r5, #0
+ add r0, #8
+ mov r2, #8
+ bl StringCopyN
+ add r3, r5, #0
+ ldr r6, [sp]
+ add r3, #0x18
+ mov r2, #6
+_021D9218:
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D9218
+ mov r0, #0
+ strb r0, [r5, #0x19]
+ ldr r0, [sp]
+ add r7, r7, #1
+ add r0, #0x30
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r5, #0x48
+ cmp r7, r0
+ blt _021D91DC
+_021D9234:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD54_021D91C4
+
+ thumb_func_start MOD54_021D9238
+MOD54_021D9238: ; 0x021D9238
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r2, #0
+ add r5, r0, #0
+ add r0, r1, #0
+ add r1, r4, #0
+ bl FUN_020169D8
+ add r7, r0, #0
+ add r0, r5, #0
+ bl FUN_02022504
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD54_021D91AC
+ cmp r4, r0
+ beq _021D925E
+ bl ErrorHandling
+_021D925E:
+ mov r2, #0x63
+ lsl r2, r2, #2
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r6, r2
+ mov r3, #4
+ bl MOD54_021D91C4
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D9238
+
+ thumb_func_start MOD54_021D9274
+MOD54_021D9274: ; 0x021D9274
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r2, #0
+ add r5, r0, #0
+ add r0, r1, #0
+ add r1, r4, #0
+ bl FUN_020169D8
+ add r7, r0, #0
+ add r0, r5, #0
+ bl FUN_02022504
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD54_021D91B4
+ cmp r4, r0
+ beq _021D929A
+ bl ErrorHandling
+_021D929A:
+ add r6, #0xc
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r6, #0
+ mov r3, #4
+ bl MOD54_021D91C4
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD54_021D9274
+
+ thumb_func_start MOD54_021D92AC
+MOD54_021D92AC: ; 0x021D92AC
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r2, #0
+ add r5, r0, #0
+ add r0, r1, #0
+ add r1, r4, #0
+ bl FUN_020169D8
+ add r7, r0, #0
+ add r0, r5, #0
+ bl FUN_02022504
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD54_021D91BC
+ cmp r4, r0
+ beq _021D92D2
+ bl ErrorHandling
+_021D92D2:
+ add r6, #0xcc
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r6, #0
+ mov r3, #4
+ bl MOD54_021D91C4
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD54_021D92AC
+
+ thumb_func_start MOD54_021D92E4
+MOD54_021D92E4: ; 0x021D92E4
+ push {r4, r5}
+ ldrb r3, [r2, #0x18]
+ cmp r3, #0
+ bne _021D92F2
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+_021D92F2:
+ mov r4, #0
+ cmp r1, #0
+ ble _021D931E
+ add r5, r0, #0
+_021D92FA:
+ ldrb r3, [r5, #0x18]
+ cmp r3, #0
+ bne _021D9316
+ mov r1, #0x48
+ mul r1, r4
+ add r4, r0, r1
+ mov r3, #9
+_021D9308:
+ ldmia r2!, {r0, r1}
+ stmia r4!, {r0, r1}
+ sub r3, r3, #1
+ bne _021D9308
+ mov r0, #1
+ pop {r4, r5}
+ bx lr
+_021D9316:
+ add r4, r4, #1
+ add r5, #0x48
+ cmp r4, r1
+ blt _021D92FA
+_021D931E:
+ mov r5, #0
+ cmp r1, #0
+ ble _021D934A
+ add r4, r0, #0
+_021D9326:
+ ldrb r3, [r4, #0x19]
+ cmp r3, #3
+ blo _021D9342
+ mov r1, #0x48
+ mul r1, r5
+ add r4, r0, r1
+ mov r3, #9
+_021D9334:
+ ldmia r2!, {r0, r1}
+ stmia r4!, {r0, r1}
+ sub r3, r3, #1
+ bne _021D9334
+ mov r0, #1
+ pop {r4, r5}
+ bx lr
+_021D9342:
+ add r5, r5, #1
+ add r4, #0x48
+ cmp r5, r1
+ blt _021D9326
+_021D934A:
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD54_021D92E4
+
+ thumb_func_start MOD54_021D9350
+MOD54_021D9350: ; 0x021D9350
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ str r0, [sp]
+ str r1, [sp, #4]
+ add r7, r2, #0
+ add r0, sp, #0x18
+ mov r1, #0
+ mov r2, #0x10
+ str r3, [sp, #8]
+ ldr r5, [sp, #0x40]
+ bl MI_CpuFill8
+ mov r4, #0
+ add r6, r4, #0
+ cmp r7, #0
+ ble _021D93D8
+ str r5, [sp, #0x10]
+_021D9372:
+ ldr r0, [sp, #0x10]
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D93CC
+ mov r0, #0
+ str r0, [sp, #0x14]
+ str r0, [sp, #0xc]
+ b _021D93C6
+_021D9382:
+ add r0, r4, #1
+ add r1, r7, #0
+ bl _s32_div_f
+ add r4, r1, #0
+_021D938C:
+ lsl r2, r4, #2
+ ldr r0, [r5, r2]
+ cmp r0, #0
+ beq _021D9382
+ cmp r4, r6
+ beq _021D9382
+ add r0, sp, #0x18
+ ldrb r0, [r0, r4]
+ cmp r0, #4
+ beq _021D9382
+ add r1, r0, #1
+ add r0, sp, #0x18
+ strb r1, [r0, r4]
+ ldr r0, [sp, #8]
+ cmp r4, r0
+ beq _021D93BA
+ ldr r3, [r5, r2]
+ ldr r2, [sp, #0xc]
+ ldr r0, [sp]
+ ldr r1, [sp, #4]
+ add r2, r3, r2
+ bl MOD54_021D92E4
+_021D93BA:
+ ldr r0, [sp, #0xc]
+ add r0, #0x48
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x14]
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+_021D93C6:
+ ldr r0, [sp, #0x14]
+ cmp r0, #4
+ blt _021D938C
+_021D93CC:
+ ldr r0, [sp, #0x10]
+ add r6, r6, #1
+ add r0, r0, #4
+ str r0, [sp, #0x10]
+ cmp r6, r7
+ blt _021D9372
+_021D93D8:
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD54_021D9350
+
+ thumb_func_start MOD54_021D93DC
+MOD54_021D93DC: ; 0x021D93DC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r1, #0x93
+ add r4, r2, #0
+ lsl r1, r1, #2
+ str r3, [sp]
+ add r0, r0, r1
+ mov r1, #0x10
+ add r2, r5, #0
+ add r3, r4, #0
+ bl MOD54_021D9350
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D93DC
+
+ thumb_func_start MOD54_021D93F8
+MOD54_021D93F8: ; 0x021D93F8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, _021D9410 ; =0x000006CC
+ add r4, r2, #0
+ str r3, [sp]
+ add r0, r0, r1
+ mov r1, #8
+ add r2, r5, #0
+ add r3, r4, #0
+ bl MOD54_021D9350
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D9410: .word 0x000006CC
+ thumb_func_end MOD54_021D93F8
+
+ thumb_func_start MOD54_021D9414
+MOD54_021D9414: ; 0x021D9414
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ ldr r1, _021D942C ; =0x0000090C
+ add r4, r2, #0
+ str r3, [sp]
+ add r0, r0, r1
+ mov r1, #8
+ add r2, r5, #0
+ add r3, r4, #0
+ bl MOD54_021D9350
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D942C: .word 0x0000090C
+ thumb_func_end MOD54_021D9414
+
+ thumb_func_start MOD54_021D9430
+MOD54_021D9430: ; 0x021D9430
+ push {r3, lr}
+ bl FUN_0202881C
+ bl MOD54_021D9094
+ pop {r3, pc}
+ thumb_func_end MOD54_021D9430
+
+ thumb_func_start MOD54_021D943C
+MOD54_021D943C: ; 0x021D943C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r2, #0
+ bl FUN_0202881C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_020169D8
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD54_021D9098
+ add r1, r4, #0
+ add r2, r5, #0
+ bl MIi_CpuCopyFast
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD54_021D943C
+
+ thumb_func_start MOD54_021D9464
+MOD54_021D9464: ; 0x021D9464
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0202881C
+ add r2, r0, #0
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ ldr r3, [r4, #0x10]
+ bl MOD54_021D912C
+ pop {r4, pc}
+ thumb_func_end MOD54_021D9464
+
+ thumb_func_start MOD54_021D947C
+MOD54_021D947C: ; 0x021D947C
+ push {r3, lr}
+ bl FUN_02027E24
+ bl FUN_02026FE0
+ pop {r3, pc}
+ thumb_func_end MOD54_021D947C
+
+ thumb_func_start MOD54_021D9488
+MOD54_021D9488: ; 0x021D9488
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r2, #0
+ bl FUN_02027E24
+ add r6, r0, #0
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_020169D8
+ add r4, r0, #0
+ add r0, r6, #0
+ mov r1, #0
+ bl FUN_02027008
+ add r1, r4, #0
+ add r2, r5, #0
+ bl MIi_CpuCopyFast
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D9488
+
+ thumb_func_start MOD54_021D94B4
+MOD54_021D94B4: ; 0x021D94B4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_02027E24
+ add r2, r0, #0
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #0x18
+ ldr r3, [r4, #0x10]
+ lsr r0, r0, #0x18
+ bl FUN_02027D7C
+ pop {r4, pc}
+ thumb_func_end MOD54_021D94B4
+
+ thumb_func_start MOD54_021D94D0
+MOD54_021D94D0: ; 0x021D94D0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_02022504
+ ldr r1, [r4, #8]
+ ldr r2, [r4, #0xc]
+ ldr r3, [r4, #0x10]
+ bl MOD54_021D93DC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D94D0
+
+ thumb_func_start MOD54_021D94E8
+MOD54_021D94E8: ; 0x021D94E8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_02022504
+ ldr r1, [r4, #8]
+ ldr r2, [r4, #0xc]
+ ldr r3, [r4, #0x10]
+ bl MOD54_021D93F8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D94E8
+
+ thumb_func_start MOD54_021D9500
+MOD54_021D9500: ; 0x021D9500
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_02022504
+ ldr r1, [r4, #8]
+ ldr r2, [r4, #0xc]
+ ldr r3, [r4, #0x10]
+ bl MOD54_021D9414
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D9500
+
+ thumb_func_start MOD54_021D9518
+MOD54_021D9518: ; 0x021D9518
+ ldr r3, _021D951C ; =0x0202B9ED
+ bx r3
+ .align 2, 0
+_021D951C: .word 0x0202B9ED
+ thumb_func_end MOD54_021D9518
+
+ thumb_func_start MOD54_021D9520
+MOD54_021D9520: ; 0x021D9520
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0202B8E4
+ ldr r0, [r4]
+ str r0, [sp]
+ ldr r2, [r4, #8]
+ ldr r0, [r4, #4]
+ lsl r2, r2, #0x18
+ ldr r1, [r4, #0xc]
+ ldr r3, [r4, #0x10]
+ lsr r2, r2, #0x18
+ bl FUN_0202BCF4
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD54_021D9520
+
+ thumb_func_start MOD54_021D9544
+MOD54_021D9544: ; 0x021D9544
+ push {r4, r5, r6, lr}
+ add r5, r2, #0
+ add r6, r0, #0
+ add r0, r1, #0
+ add r1, r5, #0
+ bl FUN_020169D8
+ add r4, r0, #0
+ mov r1, #0
+ add r2, r5, #0
+ bl MI_CpuFill8
+ add r0, r6, #0
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_02066840
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD54_021D9544
+
+ thumb_func_start MOD54_021D956C
+MOD54_021D956C: ; 0x021D956C
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD54_021D956C
+
+ thumb_func_start MOD54_021D9570
+MOD54_021D9570: ; 0x021D9570
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ str r0, [sp]
+ mov r0, #0
+ ldr r6, _021D95C4 ; =0x00000BB8
+ ldr r5, _021D95C8 ; =0x021D9780
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+_021D9580:
+ ldr r0, [sp]
+ ldr r1, [r5]
+ blx r1
+ add r4, r0, #0
+ ldr r0, [sp]
+ ldr r3, [r5, #4]
+ mov r1, #0x33
+ add r2, r4, #0
+ blx r3
+ add r7, r0, #0
+ cmp r6, r4
+ bhi _021D959C
+ bl ErrorHandling
+_021D959C:
+ ldr r1, [sp, #4]
+ add r0, r7, #0
+ add r2, r4, #0
+ bl MIi_CpuCopyFast
+ add r0, r7, #0
+ bl FUN_02016A18
+ ldr r0, [sp, #4]
+ sub r6, r6, r4
+ add r0, r0, r4
+ str r0, [sp, #4]
+ ldr r0, [sp, #8]
+ add r5, #0xc
+ add r0, r0, #1
+ str r0, [sp, #8]
+ cmp r0, #7
+ blt _021D9580
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D95C4: .word 0x00000BB8
+_021D95C8: .word 0x021D9780
+ thumb_func_end MOD54_021D9570
+
+ thumb_func_start MOD54_021D95CC
+MOD54_021D95CC: ; 0x021D95CC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ str r0, [sp]
+ ldr r0, _021D9670 ; =0x00000BB8
+ str r1, [sp, #4]
+ str r0, [sp, #0x10]
+ mov r0, #0x33
+ str r0, [sp, #0x2c]
+ ldr r0, [sp]
+ mov r7, #0
+ str r0, [sp, #0x30]
+ bl FUN_02031190
+ str r0, [sp, #0x38]
+ mov r0, #5
+ str r0, [sp, #0x34]
+ add r0, sp, #0x18
+ str r0, [sp, #0x3c]
+ add r0, r7, #0
+ str r0, [sp, #0xc]
+ ldr r0, _021D9674 ; =0x021D9780
+ str r0, [sp, #8]
+_021D95F8:
+ ldr r1, [sp, #8]
+ ldr r0, [sp]
+ ldr r1, [r1]
+ blx r1
+ ldr r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ cmp r1, r0
+ bhi _021D960C
+ bl ErrorHandling
+_021D960C:
+ mov r6, #0
+ ldr r4, [sp, #4]
+ add r5, r6, #0
+_021D9612:
+ add r0, r6, #0
+ bl FUN_0202DFA4
+ cmp r0, #0
+ beq _021D9624
+ ldr r0, [sp, #0x3c]
+ add r1, r4, r7
+ str r1, [r0, r5]
+ b _021D962A
+_021D9624:
+ ldr r1, [sp, #0x3c]
+ mov r0, #0
+ str r0, [r1, r5]
+_021D962A:
+ mov r0, #0x2f
+ lsl r0, r0, #6
+ add r6, r6, #1
+ add r4, r4, r0
+ add r5, r5, #4
+ cmp r6, #5
+ blt _021D9612
+ ldr r1, [sp, #8]
+ add r0, sp, #0x2c
+ ldr r1, [r1, #8]
+ blx r1
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x10]
+ add r7, r7, r0
+ sub r0, r1, r0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #8]
+ add r0, #0xc
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ add r0, r0, #1
+ str r0, [sp, #0xc]
+ cmp r0, #7
+ blo _021D95F8
+ ldr r0, [sp]
+ bl FUN_02022504
+ add r4, r0, #0
+ bl FUN_0202B390
+ add r0, r4, #0
+ bl FUN_0202B3F8
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9670: .word 0x00000BB8
+_021D9674: .word 0x021D9780
+ thumb_func_end MOD54_021D95CC
+
+ .section .rodata
+ ; 0x021D9678
+ .incbin "baserom.nds", 0x29E598, 0x15C
+
+ .section .data
+ ; 0x021D97E0
+ .incbin "baserom.nds", 0x29E700, 0x80
diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s
new file mode 100644
index 00000000..46173b3f
--- /dev/null
+++ b/arm9/modules/55/asm/module_55.s
@@ -0,0 +1,5594 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD55_021D74E0
+MOD55_021D74E0: ; 0x021D74E0
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD55_021D7BF0
+ add r0, r4, #0
+ bl MOD55_021D7C20
+ add r0, r4, #0
+ bl MOD55_021D7DA0
+ mov r0, #0x34
+ bl FUN_02053708
+ mov r1, #0xeb
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD55_021D74E0
+
+ thumb_func_start MOD55_021D7504
+MOD55_021D7504: ; 0x021D7504
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7560 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D7564 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ mov r0, #0x34
+ bl FUN_02016B94
+ str r0, [r4, #4]
+ bl MOD55_021D780C
+ ldr r0, [r4, #4]
+ bl MOD55_021D781C
+ add r0, r4, #0
+ bl MOD55_021D7AE0
+ ldr r0, _021D7568 ; =MOD55_021D77D0
+ add r1, r4, #0
+ bl FUN_02015F10
+ add r0, r4, #0
+ bl MOD55_021D74E0
+ pop {r4, pc}
+ .align 2, 0
+_021D7560: .word 0xFFFFE0FF
+_021D7564: .word 0x04001000
+_021D7568: .word MOD55_021D77D0
+ thumb_func_end MOD55_021D7504
+
+ thumb_func_start MOD55_021D756C
+MOD55_021D756C: ; 0x021D756C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r6, r0, #0
+ cmp r1, #0
+ beq _021D7580
+ cmp r1, #1
+ beq _021D75FC
+ b _021D760A
+_021D7580:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ bl MOD55_021DA27C
+ mov r2, #1
+ mov r0, #3
+ mov r1, #0x34
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ ldr r1, _021D7610 ; =0x0000041C
+ add r0, r6, #0
+ mov r2, #0x34
+ bl FUN_02006268
+ ldr r2, _021D7610 ; =0x0000041C
+ mov r1, #0
+ add r4, r0, #0
+ bl MI_CpuFill8
+ add r0, r6, #0
+ bl FUN_0200628C
+ str r0, [r4, #8]
+ add r0, r4, #0
+ bl MOD55_021D7994
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x34
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0x11
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add r0, r4, #0
+ bl MOD55_021D7504
+ add r0, r4, #0
+ bl MOD55_021D7EE4
+ add r0, r4, #0
+ bl MOD55_021D8044
+ mov r0, #1
+ bl MOD55_021DA27C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D760A
+_021D75FC:
+ bl FUN_02006278
+ mov r0, #0
+ str r0, [r5]
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D760A:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D7610: .word 0x0000041C
+ thumb_func_end MOD55_021D756C
+
+ thumb_func_start MOD55_021D7614
+MOD55_021D7614: ; 0x021D7614
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r6, r0, #0
+ cmp r1, #0
+ beq _021D7628
+ cmp r1, #1
+ beq _021D76A4
+ b _021D76B2
+_021D7628:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r2, #1
+ mov r0, #3
+ mov r1, #0x34
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ ldr r1, _021D76B8 ; =0x0000041C
+ add r0, r6, #0
+ mov r2, #0x34
+ bl FUN_02006268
+ ldr r2, _021D76B8 ; =0x0000041C
+ mov r1, #0
+ add r4, r0, #0
+ bl MI_CpuFill8
+ add r0, r6, #0
+ bl FUN_0200628C
+ str r0, [r4, #8]
+ add r0, r4, #0
+ bl MOD55_021D7994
+ mov r0, #0
+ bl MOD55_021DA27C
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x34
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0x11
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add r0, r4, #0
+ bl MOD55_021D7504
+ add r0, r4, #0
+ bl MOD55_021D7EE4
+ add r0, r4, #0
+ bl MOD55_021D8044
+ mov r0, #1
+ bl MOD55_021DA27C
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D76B2
+_021D76A4:
+ bl FUN_02006278
+ mov r0, #0
+ str r0, [r5]
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D76B2:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D76B8: .word 0x0000041C
+ thumb_func_end MOD55_021D7614
+
+ thumb_func_start MOD55_021D76BC
+MOD55_021D76BC: ; 0x021D76BC
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ bl FUN_02006278
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #0
+ beq _021D76D6
+ cmp r1, #1
+ beq _021D76E4
+ cmp r1, #2
+ beq _021D76FA
+ b _021D770C
+_021D76D6:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D770C
+ mov r0, #1
+ str r0, [r5]
+ b _021D770C
+_021D76E4:
+ mov r2, #0x3b
+ lsl r2, r2, #4
+ ldr r2, [r4, r2]
+ lsl r3, r2, #2
+ ldr r2, _021D771C ; =0x021DA4A0
+ ldr r2, [r2, r3]
+ cmp r2, #0
+ beq _021D770C
+ blx r2
+ str r0, [r5]
+ b _021D770C
+_021D76FA:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D770C
+ mov r0, #0
+ bl MOD55_021DA27C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D770C:
+ add r4, #0xec
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D7718
+ bl FUN_0201FDEC
+_021D7718:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D771C: .word 0x021DA4A0
+ thumb_func_end MOD55_021D76BC
+
+ thumb_func_start MOD55_021D7720
+MOD55_021D7720: ; 0x021D7720
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x8e
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #0x8f
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r7, #0x86
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_021D7754:
+ ldr r0, [r5, r7]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D7754
+ add r0, r6, #0
+ add r0, #0xec
+ ldr r0, [r0]
+ bl FUN_0201FD58
+ add r0, r6, #0
+ mov r1, #0
+ add r0, #0xec
+ str r1, [r0]
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ mov r0, #0xeb
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD55_021D7720
+
+ thumb_func_start MOD55_021D778C
+MOD55_021D778C: ; 0x021D778C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ add r0, r4, #0
+ bl MOD55_021D7720
+ add r0, r4, #0
+ bl MOD55_021D8140
+ ldr r0, [r4, #4]
+ bl MOD55_021D7AA4
+ pop {r4, pc}
+ thumb_func_end MOD55_021D778C
+
+ thumb_func_start MOD55_021D77AC
+MOD55_021D77AC: ; 0x021D77AC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ bl MOD55_021D778C
+ add r0, r4, #0
+ bl MOD55_021D7A38
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0x34
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD55_021D77AC
+
+ thumb_func_start MOD55_021D77D0
+MOD55_021D77D0: ; 0x021D77D0
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D77E6
+ add r0, r4, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ bl FUN_020081C4
+_021D77E6:
+ ldr r0, [r4, #4]
+ bl FUN_0201AB60
+ bl FUN_0201C30C
+ bl FUN_02009F80
+ ldr r3, _021D7804 ; =0x027E0000
+ ldr r1, _021D7808 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ nop
+_021D7804: .word 0x027E0000
+_021D7808: .word 0x00003FF8
+ thumb_func_end MOD55_021D77D0
+
+ thumb_func_start MOD55_021D780C
+MOD55_021D780C: ; 0x021D780C
+ ldr r3, _021D7814 ; =0x0201E66D
+ ldr r0, _021D7818 ; =0x021DA458
+ bx r3
+ nop
+_021D7814: .word 0x0201E66D
+_021D7818: .word 0x021DA458
+ thumb_func_end MOD55_021D780C
+
+ thumb_func_start MOD55_021D781C
+MOD55_021D781C: ; 0x021D781C
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ ldr r5, _021D7974 ; =0x021DA2C8
+ add r3, sp, #0x8c
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D7978 ; =0x021DA34C
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_02016C18
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x34
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02018744
+ ldr r5, _021D797C ; =0x021DA368
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x34
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ ldr r5, _021D7980 ; =0x021DA384
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x34
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _021D7984 ; =0x021DA3A0
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x34
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02018744
+ ldr r5, _021D7988 ; =0x021DA3BC
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02018744
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x34
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x34
+ bl FUN_02017F18
+ mov r0, #0
+ mov r1, #3
+ bl FUN_020178BC
+ mov r0, #1
+ mov r1, #2
+ bl FUN_020178BC
+ mov r0, #3
+ mov r1, #1
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #0
+ bl FUN_020178BC
+ ldr r0, _021D798C ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r0, _021D7990 ; =0x04001050
+ strh r1, [r0]
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D7974: .word 0x021DA2C8
+_021D7978: .word 0x021DA34C
+_021D797C: .word 0x021DA368
+_021D7980: .word 0x021DA384
+_021D7984: .word 0x021DA3A0
+_021D7988: .word 0x021DA3BC
+_021D798C: .word 0x04000050
+_021D7990: .word 0x04001050
+ thumb_func_end MOD55_021D781C
+
+ thumb_func_start MOD55_021D7994
+MOD55_021D7994: ; 0x021D7994
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x34
+ bl FUN_0200AA80
+ str r0, [r6, #0xc]
+ ldr r2, _021D7A34 ; =0x00000251
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x34
+ bl FUN_0200A86C
+ str r0, [r6, #0x10]
+ mov r4, #0
+ add r5, r6, #0
+ mov r7, #0x10
+_021D79B4:
+ add r0, r7, #0
+ mov r1, #0x34
+ bl FUN_020219F4
+ str r0, [r5, #0x38]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x20
+ blt _021D79B4
+ mov r0, #0x10
+ mov r1, #0x34
+ bl FUN_020219F4
+ add r1, r6, #0
+ add r1, #0xd4
+ str r0, [r1]
+ mov r0, #0x1a
+ mov r1, #0x34
+ bl FUN_020219F4
+ add r1, r6, #0
+ add r1, #0xd8
+ str r0, [r1]
+ mov r0, #0xb4
+ mov r1, #0x34
+ bl FUN_020219F4
+ add r1, r6, #0
+ add r1, #0xbc
+ str r0, [r1]
+ mov r5, #0
+ add r4, r6, #0
+ mov r7, #0xb4
+_021D79F6:
+ add r0, r7, #0
+ mov r1, #0x34
+ bl FUN_020219F4
+ add r1, r4, #0
+ add r1, #0xc4
+ add r5, r5, #1
+ add r4, r4, #4
+ str r0, [r1]
+ cmp r5, #4
+ blt _021D79F6
+ mov r0, #0xb4
+ mov r1, #0x34
+ bl FUN_020219F4
+ add r1, r6, #0
+ add r1, #0xb8
+ str r0, [r1]
+ mov r0, #0x28
+ mov r1, #0x34
+ bl FUN_020219F4
+ add r1, r6, #0
+ add r1, #0xc0
+ str r0, [r1]
+ mov r0, #0x3b
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r6, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7A34: .word 0x00000251
+ thumb_func_end MOD55_021D7994
+
+ thumb_func_start MOD55_021D7A38
+MOD55_021D7A38: ; 0x021D7A38
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, [r6, #0x10]
+ bl FUN_0200A8B8
+ ldr r0, [r6, #0xc]
+ bl FUN_0200AB18
+ mov r4, #0
+ add r5, r6, #0
+_021D7A4C:
+ ldr r0, [r5, #0x38]
+ bl FUN_02021A20
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x20
+ blt _021D7A4C
+ add r0, r6, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ bl FUN_02021A20
+ add r0, r6, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ bl FUN_02021A20
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ bl FUN_02021A20
+ mov r5, #0
+ add r4, r6, #0
+_021D7A7C:
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ bl FUN_02021A20
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #4
+ blt _021D7A7C
+ add r0, r6, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ bl FUN_02021A20
+ add r6, #0xd8
+ ldr r0, [r6]
+ bl FUN_02021A20
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD55_021D7A38
+
+ thumb_func_start MOD55_021D7AA4
+MOD55_021D7AA4: ; 0x021D7AA4
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #5
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD55_021D7AA4
+
+ thumb_func_start MOD55_021D7AE0
+MOD55_021D7AE0: ; 0x021D7AE0
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r4, [r5, #4]
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x34
+ str r0, [sp, #4]
+ mov r0, #0x59
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x34
+ str r0, [sp, #4]
+ mov r0, #0x59
+ mov r1, #3
+ mov r2, #4
+ bl FUN_02006930
+ mov r1, #0x1a
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x34
+ bl FUN_02002EEC
+ mov r1, #6
+ mov r0, #0
+ lsl r1, r1, #6
+ mov r2, #0x34
+ bl FUN_02002EEC
+ ldr r1, _021D7BE4 ; =0x000052D8
+ add r0, sp, #0x10
+ strh r1, [r0]
+ mov r1, #0x6f
+ add r0, sp, #0x10
+ lsl r1, r1, #2
+ mov r2, #2
+ bl GX_LoadBGPltt
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ mov r0, #0x59
+ mov r1, #2
+ add r2, r4, #0
+ bl FUN_0200687C
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ mov r0, #0x59
+ mov r1, #8
+ add r2, r4, #0
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0x59
+ mov r1, #4
+ mov r3, #1
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ mov r0, #0x59
+ mov r1, #0xa
+ add r2, r4, #0
+ mov r3, #4
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ mov r0, #0x59
+ mov r1, #0xb
+ add r2, r4, #0
+ mov r3, #4
+ bl FUN_020068C8
+ ldr r0, [r5, #8]
+ bl LoadPlayerDataAddress
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x34
+ str r0, [sp, #4]
+ ldr r2, _021D7BE8 ; =0x000001E2
+ add r0, r4, #0
+ mov r1, #2
+ mov r3, #0xa
+ bl FUN_0200CD68
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x34
+ str r0, [sp, #4]
+ ldr r2, _021D7BEC ; =0x000001D9
+ add r0, r4, #0
+ mov r1, #2
+ mov r3, #0xb
+ bl FUN_0200CB00
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_021D7BE4: .word 0x000052D8
+_021D7BE8: .word 0x000001E2
+_021D7BEC: .word 0x000001D9
+ thumb_func_end MOD55_021D7AE0
+
+ thumb_func_start MOD55_021D7BF0
+MOD55_021D7BF0: ; 0x021D7BF0
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021D7C1C ; =0x021DA2E8
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_0201D040
+ mov r0, #0x14
+ mov r1, #0x34
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021D7C1C: .word 0x021DA2E8
+ thumb_func_end MOD55_021D7BF0
+
+ thumb_func_start MOD55_021D7C20
+MOD55_021D7C20: ; 0x021D7C20
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x7e
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x34
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ add r1, r5, #0
+ mov r0, #0x1e
+ add r1, #0xf0
+ mov r2, #0x34
+ bl FUN_02008C9C
+ add r1, r5, #0
+ add r1, #0xec
+ str r0, [r1]
+ add r0, r5, #0
+ mov r2, #1
+ add r0, #0xf0
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ mov r7, #0x86
+ mov r6, #0
+ add r4, r5, #0
+ lsl r7, r7, #2
+_021D7C6A:
+ mov r0, #2
+ add r1, r6, #0
+ mov r2, #0x34
+ bl FUN_02008DEC
+ str r0, [r4, r7]
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _021D7C6A
+ mov r3, #1
+ str r3, [sp]
+ str r3, [sp, #4]
+ mov r0, #0x34
+ str r0, [sp, #8]
+ mov r0, #0x86
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x56
+ mov r2, #9
+ bl FUN_02008F34
+ mov r1, #0x8e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x34
+ sub r1, #0x20
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x59
+ mov r2, #9
+ bl FUN_02008F34
+ mov r1, #0x8a
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ mov r0, #0x34
+ sub r1, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x56
+ mov r2, #7
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #0x8f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ mov r0, #0x34
+ sub r1, #0x20
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x59
+ mov r2, #3
+ bl FUN_02008FEC
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x34
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x56
+ mov r2, #0xa
+ bl FUN_020090AC
+ mov r1, #9
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x34
+ sub r1, #0x20
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x59
+ mov r2, #1
+ bl FUN_020090AC
+ mov r1, #0x23
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x34
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x56
+ mov r2, #0xb
+ bl FUN_020090AC
+ mov r1, #0x91
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x34
+ sub r1, #0x20
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x59
+ add r3, r2, #0
+ bl FUN_020090AC
+ mov r1, #0x8d
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #4
+ ldr r0, [r5, r0]
+ bl FUN_02009A50
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009A50
+ mov r0, #0x8f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD55_021D7C20
+
+ thumb_func_start MOD55_021D7DA0
+MOD55_021D7DA0: ; 0x021D7DA0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x5c
+ mov r1, #0
+ add r5, r0, #0
+ str r1, [sp]
+ sub r0, r1, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r2, #0x86
+ str r1, [sp, #0x10]
+ lsl r2, r2, #2
+ ldr r0, [r5, r2]
+ add r3, r1, #0
+ str r0, [sp, #0x14]
+ add r0, r2, #4
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x18]
+ add r0, r2, #0
+ add r0, #8
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x1c]
+ add r0, r2, #0
+ add r0, #0xc
+ ldr r0, [r5, r0]
+ add r2, #0x30
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ add r0, r5, r2
+ add r2, r1, #0
+ str r1, [sp, #0x28]
+ bl FUN_02008AA4
+ mov r1, #1
+ mov r3, #0x86
+ str r1, [sp]
+ sub r0, r1, #2
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r3, r3, #2
+ ldr r2, [r5, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r5, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r5, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r5, r2]
+ add r3, #0x54
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, r5, r3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02008AA4
+ add r0, r5, #0
+ add r0, #0xec
+ ldr r0, [r0]
+ mov r4, #0
+ str r0, [sp, #0x2c]
+ mov r0, #0x9b
+ lsl r0, r0, #2
+ add r0, r5, r0
+ str r0, [sp, #0x30]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ mov r7, #0x62
+ str r4, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ add r0, sp, #0x2c
+ strh r4, [r0, #0x20]
+ mov r0, #1
+ str r0, [sp, #0x50]
+ str r0, [sp, #0x54]
+ mov r0, #0x34
+ str r0, [sp, #0x58]
+ mov r0, #0x92
+ lsl r0, r0, #2
+ lsl r7, r7, #0xc
+ add r6, r5, r0
+_021D7E56:
+ asr r0, r4, #1
+ lsr r0, r0, #0x1e
+ add r0, r4, r0
+ asr r1, r0, #2
+ mov r0, #0x78
+ mul r0, r1
+ add r0, #0x16
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x34]
+ lsr r2, r4, #0x1f
+ lsl r1, r4, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #5
+ add r0, #0x2b
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x38]
+ cmp r4, #8
+ bne _021D7E8C
+ mov r0, #6
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x34]
+ str r7, [sp, #0x38]
+ str r6, [sp, #0x30]
+ b _021D7E9A
+_021D7E8C:
+ cmp r4, #9
+ bne _021D7E9A
+ mov r0, #0xf9
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x34]
+ str r7, [sp, #0x38]
+ str r6, [sp, #0x30]
+_021D7E9A:
+ add r0, sp, #0x2c
+ bl FUN_0201FE94
+ mov r1, #0x29
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r4, #0
+ sub r0, #8
+ cmp r0, #1
+ bhi _021D7EB8
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+_021D7EB8:
+ mov r0, #0x29
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #2
+ bl FUN_02020238
+ mov r0, #0x29
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xa
+ blt _021D7E56
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ add sp, #0x5c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD55_021D7DA0
+
+ thumb_func_start MOD55_021D7EE4
+MOD55_021D7EE4: ; 0x021D7EE4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D7F02
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_021D7F02:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xd
+ str r0, [sp, #4]
+ mov r2, #3
+ str r2, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, _021D8038 ; =0x00000171
+ mov r1, #0xe6
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r5, #4]
+ add r1, r5, r1
+ mov r3, #1
+ bl FUN_02019064
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r2, r5, #0
+ add r2, #0xc0
+ ldr r0, [r5, #0x10]
+ ldr r2, [r2]
+ mov r1, #0
+ bl FUN_0200A8E0
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D803C ; =0x000F0E00
+ add r2, r5, #0
+ str r0, [sp, #8]
+ mov r3, #0
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ str r3, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BDE0
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ mov r6, #0
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ add r4, r5, r0
+ str r6, [sp, #0x18]
+ str r6, [sp, #0x14]
+ add r7, r5, #0
+_021D7F76:
+ add r0, r4, #0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D7F86
+ add r0, r4, #0
+ bl FUN_02019178
+_021D7F86:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ add r0, r0, #5
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x15
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _021D8038 ; =0x00000171
+ add r1, #0x3c
+ sub r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ mov r2, #3
+ mov r3, #7
+ bl FUN_02019064
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02019620
+ cmp r6, #2
+ bne _021D7FF4
+ ldr r0, [r5, #8]
+ bl FUN_020238F4
+ add r2, r0, #0
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ bl FUN_0200ABC0
+ add r2, r5, #0
+ add r2, #0xb8
+ ldr r0, [r5, #0x10]
+ ldr r2, [r2]
+ add r1, r6, #1
+ bl FUN_0200A8E0
+ add r1, r7, #0
+ add r2, r5, #0
+ add r1, #0xc4
+ add r2, #0xb8
+ ldr r0, [r5, #0xc]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl FUN_0200B7B8
+ b _021D8002
+_021D7FF4:
+ add r2, r7, #0
+ add r2, #0xc4
+ ldr r0, [r5, #0x10]
+ ldr r2, [r2]
+ add r1, r6, #1
+ bl FUN_0200A8E0
+_021D8002:
+ ldr r0, _021D8040 ; =0x00010200
+ add r1, r7, #0
+ str r0, [sp]
+ add r1, #0xc4
+ ldr r1, [r1]
+ add r0, r4, #0
+ mov r2, #0xff
+ mov r3, #0x90
+ bl MOD55_021D80F0
+ add r0, r4, #0
+ bl FUN_02019220
+ ldr r0, [sp, #0x18]
+ add r6, r6, #1
+ add r0, #0x3c
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x14]
+ add r4, #0x10
+ add r0, r0, #5
+ add r7, r7, #4
+ str r0, [sp, #0x14]
+ cmp r6, #4
+ blt _021D7F76
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D8038: .word 0x00000171
+_021D803C: .word 0x000F0E00
+_021D8040: .word 0x00010200
+ thumb_func_end MOD55_021D7EE4
+
+ thumb_func_start MOD55_021D8044
+MOD55_021D8044: ; 0x021D8044
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r1, _021D80E8 ; =0x021DA298
+ str r0, [sp]
+ ldrb r2, [r1, #8]
+ add r0, sp, #0x10
+ strb r2, [r0]
+ ldrb r2, [r1, #9]
+ strb r2, [r0, #1]
+ ldrb r2, [r1, #0xa]
+ ldrb r1, [r1, #0xb]
+ strb r2, [r0, #2]
+ strb r1, [r0, #3]
+ ldr r0, [sp]
+ mov r1, #1
+ ldr r0, [r0, #4]
+ bl FUN_0201886C
+ mov ip, r0
+ mov r1, #0xf2
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #8]
+_021D8078:
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #8]
+ cmp r1, r0
+ bne _021D8086
+ mov r3, #1
+ lsl r3, r3, #0xc
+ b _021D8088
+_021D8086:
+ mov r3, #0
+_021D8088:
+ add r1, sp, #0x10
+ ldrb r7, [r1, #1]
+ ldrb r0, [r1, #3]
+ add r0, r7, r0
+ str r0, [sp, #4]
+ cmp r7, r0
+ bge _021D80C6
+ ldrb r2, [r1]
+ ldrb r1, [r1, #2]
+ lsl r0, r7, #5
+ ldr r4, _021D80EC ; =0x00000FFF
+ add r6, r2, r0
+_021D80A0:
+ mov r0, #0
+ cmp r1, #0
+ ble _021D80BC
+ lsl r5, r6, #1
+ mov r2, ip
+ add r2, r2, r5
+_021D80AC:
+ ldrh r5, [r2]
+ add r0, r0, #1
+ and r5, r4
+ add r5, r3, r5
+ strh r5, [r2]
+ add r2, r2, #2
+ cmp r0, r1
+ blt _021D80AC
+_021D80BC:
+ ldr r0, [sp, #4]
+ add r7, r7, #1
+ add r6, #0x20
+ cmp r7, r0
+ blt _021D80A0
+_021D80C6:
+ add r0, sp, #0x10
+ ldrb r1, [r0, #1]
+ add r1, r1, #5
+ strb r1, [r0, #1]
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+ cmp r0, #4
+ blt _021D8078
+ ldr r0, [sp]
+ mov r1, #1
+ ldr r0, [r0, #4]
+ bl FUN_02017CD0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D80E8: .word 0x021DA298
+_021D80EC: .word 0x00000FFF
+ thumb_func_end MOD55_021D8044
+
+ thumb_func_start MOD55_021D80F0
+MOD55_021D80F0: ; 0x021D80F0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0
+ add r4, r2, #0
+ add r7, r3, #0
+ add r2, r0, #0
+ add r6, r1, #0
+ bl FUN_02002E14
+ sub r1, r7, r0
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ ldr r1, [sp, #0x28]
+ asr r3, r0, #1
+ cmp r1, #0
+ bne _021D8128
+ mov r0, #1
+ str r0, [sp]
+ str r4, [sp, #4]
+ mov r1, #0
+ add r0, r5, #0
+ add r2, r6, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_021D8128:
+ mov r0, #1
+ str r0, [sp]
+ str r4, [sp, #4]
+ str r1, [sp, #8]
+ mov r1, #0
+ add r0, r5, #0
+ add r2, r6, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD55_021D80F0
+
+ thumb_func_start MOD55_021D8140
+MOD55_021D8140: ; 0x021D8140
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r0, #0xae
+ lsl r0, r0, #2
+ mov r4, #0
+ add r5, r6, r0
+_021D814C:
+ add r0, r5, #0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D815C
+ add r0, r5, #0
+ bl FUN_02019178
+_021D815C:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #8
+ blt _021D814C
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ mov r5, #0
+ add r4, r6, r0
+_021D816C:
+ add r0, r4, #0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D817C
+ add r0, r4, #0
+ bl FUN_02019178
+_021D817C:
+ add r5, r5, #1
+ add r4, #0x10
+ cmp r5, #4
+ blt _021D816C
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D819C
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+_021D819C:
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D81B4
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+_021D81B4:
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D81CC
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+_021D81CC:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD55_021D8140
+
+ thumb_func_start MOD55_021D81D0
+MOD55_021D81D0: ; 0x021D81D0
+ mov r2, #0x3b
+ mov r3, #1
+ lsl r2, r2, #4
+ str r3, [r0, r2]
+ add r0, r1, #0
+ bx lr
+ thumb_func_end MOD55_021D81D0
+
+ thumb_func_start MOD55_021D81DC
+MOD55_021D81DC: ; 0x021D81DC
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D81EE
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+_021D81EE:
+ ldr r2, _021D82B8 ; =0x021C48B8
+ mov r1, #1
+ ldr r0, [r2, #0x48]
+ tst r1, r0
+ beq _021D824C
+ ldr r0, _021D82BC ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldrb r1, [r4, r0]
+ cmp r1, #3
+ bhi _021D82B2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D8214: ; jump table
+ .short _021D821C - _021D8214 - 2 ; case 0
+ .short _021D8234 - _021D8214 - 2 ; case 1
+ .short _021D823C - _021D8214 - 2 ; case 2
+ .short _021D8244 - _021D8214 - 2 ; case 3
+_021D821C:
+ mov r2, #0
+ strb r2, [r4, r0]
+ add r1, r0, #3
+ strb r2, [r4, r1]
+ add r1, r0, #1
+ strb r2, [r4, r1]
+ add r1, r0, #2
+ strb r2, [r4, r1]
+ mov r1, #2
+ sub r0, #0x18
+ str r1, [r4, r0]
+ b _021D82B2
+_021D8234:
+ mov r1, #7
+ sub r0, #0x18
+ str r1, [r4, r0]
+ b _021D82B2
+_021D823C:
+ mov r1, #0x12
+ sub r0, #0x18
+ str r1, [r4, r0]
+ b _021D82B2
+_021D8244:
+ mov r1, #0x11
+ sub r0, #0x18
+ str r1, [r4, r0]
+ b _021D82B2
+_021D824C:
+ mov r1, #2
+ tst r0, r1
+ beq _021D8262
+ ldr r0, _021D82BC ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x3b
+ mov r1, #0x11
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _021D82B2
+_021D8262:
+ ldr r1, [r2, #0x4c]
+ mov r0, #0x40
+ tst r0, r1
+ beq _021D828C
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ beq _021D82B2
+ ldr r0, _021D82BC ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldrb r1, [r4, r0]
+ sub r1, r1, #1
+ strb r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD55_021D8044
+ b _021D82B2
+_021D828C:
+ mov r0, #0x80
+ tst r0, r1
+ beq _021D82B2
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ cmp r0, #3
+ bhs _021D82B2
+ ldr r0, _021D82BC ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD55_021D8044
+_021D82B2:
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D82B8: .word 0x021C48B8
+_021D82BC: .word 0x000005DC
+ thumb_func_end MOD55_021D81DC
+
+ thumb_func_start MOD55_021D82C0
+MOD55_021D82C0: ; 0x021D82C0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ ldr r0, [r7, #8]
+ str r1, [sp, #0xc]
+ bl FUN_020286EC
+ mov r6, #0
+ add r4, r0, #0
+ add r5, r6, #0
+_021D82D4:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_0202842C
+ cmp r0, #0
+ bne _021D82E2
+ mov r6, #1
+_021D82E2:
+ add r5, r5, #1
+ cmp r5, #0x20
+ blt _021D82D4
+ cmp r6, #0
+ beq _021D8308
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x34
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0x10
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r1, #8
+ b _021D8312
+_021D8308:
+ add r0, r7, #0
+ mov r1, #0x1d
+ bl MOD55_021DA0A4
+ mov r1, #0xf
+_021D8312:
+ mov r0, #0x3b
+ lsl r0, r0, #4
+ str r1, [r7, r0]
+ ldr r0, [sp, #0xc]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD55_021D82C0
+
+ thumb_func_start MOD55_021D8320
+MOD55_021D8320: ; 0x021D8320
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D8366
+ mov r0, #0
+ bl MOD55_021DA27C
+ add r0, r5, #0
+ bl MOD55_021D778C
+ ldr r0, [r5, #8]
+ bl LoadPlayerDataAddress
+ mov r1, #7
+ str r0, [sp]
+ mov r0, #0x34
+ mov r2, #0
+ add r3, r1, #0
+ bl FUN_02077A84
+ str r0, [r5]
+ ldr r0, _021D836C ; =0x020FA5FC
+ ldr r1, [r5]
+ mov r2, #0x34
+ bl FUN_02006234
+ mov r1, #0x3d
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #9
+ sub r1, #0x20
+ str r0, [r5, r1]
+_021D8366:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D836C: .word 0x020FA5FC
+ thumb_func_end MOD55_021D8320
+
+ thumb_func_start MOD55_021D8370
+MOD55_021D8370: ; 0x021D8370
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0x3d
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl FUN_02006290
+ cmp r0, #0
+ beq _021D83FC
+ mov r0, #0x3d
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02006260
+ ldr r1, [r5]
+ ldr r0, [r1, #0x14]
+ cmp r0, #0
+ bne _021D83A8
+ add r0, r5, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ ldr r1, [r1, #0x18]
+ bl FUN_02021A74
+ mov r1, #0xa
+ b _021D83F0
+_021D83A8:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ bl MOD55_021DA27C
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x34
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0x11
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add r0, r5, #0
+ bl MOD55_021D7504
+ add r0, r5, #0
+ bl MOD55_021D7EE4
+ add r0, r5, #0
+ bl MOD55_021D8044
+ mov r0, #1
+ bl MOD55_021DA27C
+ mov r1, #6
+_021D83F0:
+ mov r0, #0x3b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ ldr r0, [r5]
+ bl FUN_02077AC4
+_021D83FC:
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD55_021D8370
+
+ thumb_func_start MOD55_021D8404
+MOD55_021D8404: ; 0x021D8404
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ add r4, r1, #0
+ bl LoadPlayerDataAddress
+ str r0, [sp]
+ mov r0, #0x34
+ mov r1, #4
+ mov r2, #0
+ mov r3, #0xc
+ bl FUN_02077A84
+ str r0, [r5]
+ ldr r0, _021D843C ; =0x020FA5FC
+ ldr r1, [r5]
+ mov r2, #0x34
+ bl FUN_02006234
+ mov r1, #0x3d
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #0xb
+ sub r1, #0x20
+ str r0, [r5, r1]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D843C: .word 0x020FA5FC
+ thumb_func_end MOD55_021D8404
+
+ thumb_func_start MOD55_021D8440
+MOD55_021D8440: ; 0x021D8440
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0x3d
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl FUN_02006290
+ cmp r0, #0
+ beq _021D84C2
+ mov r0, #0x3d
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02006260
+ add r0, r5, #0
+ ldr r1, [r5]
+ add r0, #0xd8
+ ldr r0, [r0]
+ ldr r1, [r1, #0x18]
+ bl FUN_02021A74
+ ldr r0, [r5]
+ bl FUN_02077AC4
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ bl MOD55_021DA27C
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x34
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0x11
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add r0, r5, #0
+ bl MOD55_021D7504
+ add r0, r5, #0
+ bl MOD55_021D7EE4
+ add r0, r5, #0
+ bl MOD55_021D8044
+ mov r0, #1
+ bl MOD55_021DA27C
+ mov r0, #0x3b
+ mov r1, #0xc
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021D84C2:
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD55_021D8440
+
+ thumb_func_start MOD55_021D84C8
+MOD55_021D84C8: ; 0x021D84C8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r6, r1, #0
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D853C
+ add r0, r5, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ add r1, sp, #4
+ bl FUN_02021C38
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ add r7, r1, #0
+ cmp r0, #0
+ beq _021D8534
+ mov r0, #0x34
+ bl FUN_02023928
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ bl FUN_02021F2C
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0202395C
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_0200ABC0
+ ldr r1, [sp]
+ add r0, r5, #0
+ add r2, r7, #0
+ bl MOD55_021D93F8
+ add r0, r5, #0
+ mov r1, #0x19
+ bl MOD55_021DA0A4
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #0x3b
+ mov r1, #0xd
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _021D853C
+_021D8534:
+ mov r0, #0x3b
+ mov r1, #0xf
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021D853C:
+ add r0, r6, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD55_021D84C8
+
+ thumb_func_start MOD55_021D8544
+MOD55_021D8544: ; 0x021D8544
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D8578
+ mov r0, #0x34
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ ldr r1, _021D857C ; =0x021DA2AC
+ ldr r2, _021D8580 ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ add r1, r5, #0
+ add r1, #0xe8
+ str r0, [r1]
+ mov r0, #0x3b
+ mov r1, #0xe
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021D8578:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D857C: .word 0x021DA2AC
+_021D8580: .word 0x000001D9
+ thumb_func_end MOD55_021D8544
+
+ thumb_func_start MOD55_021D8584
+MOD55_021D8584: ; 0x021D8584
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r0, #0xe8
+ str r1, [sp]
+ ldr r0, [r0]
+ mov r1, #0x34
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021D85A4
+ ldr r0, [sp]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_021D85A4:
+ cmp r0, #0
+ bne _021D866C
+ ldr r0, [r5, #8]
+ bl FUN_020286EC
+ str r0, [sp, #4]
+ mov r4, #0
+_021D85B2:
+ ldr r0, [sp, #4]
+ add r1, r4, #0
+ bl FUN_0202842C
+ cmp r0, #0
+ bne _021D8666
+ add r0, r5, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ add r1, sp, #8
+ bl FUN_02021C38
+ add r7, r0, #0
+ ldr r0, [sp, #4]
+ add r6, r1, #0
+ bl FUN_02028228
+ bl FUN_02096D68
+ eor r1, r6
+ eor r0, r7
+ orr r0, r1
+ bne _021D85E4
+ mov r0, #0
+ str r0, [sp, #8]
+_021D85E4:
+ ldr r0, [sp, #8]
+ cmp r0, #0
+ beq _021D8650
+ ldr r0, [r5, #8]
+ add r1, r4, #0
+ add r2, r7, #0
+ add r3, r6, #0
+ bl MOD55_021DA224
+ cmp r0, #0
+ bne _021D8616
+ add r2, r5, #0
+ add r2, #0xd4
+ ldr r0, [sp, #4]
+ ldr r2, [r2]
+ add r1, r4, #0
+ bl FUN_020283C0
+ ldr r0, [sp, #4]
+ add r1, r4, #0
+ mov r2, #8
+ mov r3, #2
+ bl FUN_020282E8
+ b _021D866C
+_021D8616:
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021D8634
+ add r0, r5, #0
+ mov r1, #0x1a
+ bl MOD55_021DA0A4
+ mov r0, #0x3b
+ mov r1, #0xf
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ ldr r0, [sp]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_021D8634:
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _021D8666
+ add r0, r5, #0
+ mov r1, #0x1e
+ bl MOD55_021DA0A4
+ mov r0, #0x3b
+ mov r1, #0xf
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ ldr r0, [sp]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_021D8650:
+ add r0, r5, #0
+ mov r1, #0x1a
+ bl MOD55_021DA0A4
+ mov r0, #0x3b
+ mov r1, #0xf
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ ldr r0, [sp]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_021D8666:
+ add r4, r4, #1
+ cmp r4, #0x20
+ blt _021D85B2
+_021D866C:
+ add r0, r5, #0
+ bl MOD55_021DA214
+ mov r0, #0x3b
+ mov r1, #6
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ ldr r0, [sp]
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD55_021D8584
+
+ thumb_func_start MOD55_021D8680
+MOD55_021D8680: ; 0x021D8680
+ mov r2, #0x3b
+ mov r3, #0x10
+ lsl r2, r2, #4
+ str r3, [r0, r2]
+ add r0, r1, #0
+ bx lr
+ thumb_func_end MOD55_021D8680
+
+ thumb_func_start MOD55_021D868C
+MOD55_021D868C: ; 0x021D868C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D86CA
+ ldr r0, _021D86D0 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _021D86CA
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019570
+ mov r0, #0x3b
+ mov r1, #6
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021D86CA:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D86D0: .word 0x021C48B8
+ thumb_func_end MOD55_021D868C
+
+ thumb_func_start MOD55_021D86D4
+MOD55_021D86D4: ; 0x021D86D4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ ldr r1, _021D88C4 ; =0x021DA298
+ str r0, [sp]
+ ldrb r2, [r1]
+ add r0, sp, #0x28
+ strb r2, [r0, #0x14]
+ ldrb r2, [r1, #1]
+ strb r2, [r0, #0x15]
+ ldrb r2, [r1, #2]
+ strb r2, [r0, #0x16]
+ ldrb r2, [r1, #3]
+ strb r2, [r0, #0x17]
+ ldrb r2, [r1, #4]
+ strb r2, [r0, #0x10]
+ ldrb r2, [r1, #5]
+ strb r2, [r0, #0x11]
+ ldrb r2, [r1, #6]
+ strb r2, [r0, #0x12]
+ ldrb r1, [r1, #7]
+ strb r1, [r0, #0x13]
+ ldr r0, [sp]
+ mov r1, #1
+ ldr r0, [r0, #4]
+ bl FUN_0201886C
+ str r0, [sp, #0x24]
+ mov r1, #0xf2
+ ldr r0, [sp]
+ lsl r1, r1, #2
+ ldrb r3, [r0, r1]
+ mov r0, #0x1d
+ lsr r2, r3, #0x1f
+ lsl r1, r3, #0x1d
+ sub r1, r1, r2
+ ror r1, r0
+ add r0, r2, r1
+ str r0, [sp, #0x20]
+ lsr r0, r3, #3
+ str r0, [sp, #0xc]
+ ldr r0, [sp]
+ ldr r0, [r0, #8]
+ bl FUN_020286EC
+ ldr r1, _021D88C4 ; =0x021DA298
+ str r0, [sp, #0x18]
+ ldrh r2, [r1, #0x1c]
+ add r0, sp, #0x28
+ strh r2, [r0, #8]
+ ldrh r2, [r1, #0x1e]
+ strh r2, [r0, #0xa]
+ ldrh r2, [r1, #0x20]
+ strh r2, [r0, #0xc]
+ ldrh r2, [r1, #0x22]
+ strh r2, [r0, #0xe]
+ ldrh r2, [r1, #0xc]
+ strh r2, [r0]
+ ldrh r2, [r1, #0xe]
+ strh r2, [r0, #2]
+ ldrh r2, [r1, #0x10]
+ strh r2, [r0, #4]
+ ldrh r1, [r1, #0x12]
+ strh r1, [r0, #6]
+ mov r0, #0
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0xc]
+ lsl r1, r0, #3
+ ldr r0, [sp]
+ add r0, r0, r1
+ str r0, [sp, #0x14]
+_021D8760:
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ ldrb r1, [r1, #0x18]
+ mov r2, #8
+ sub r1, r1, #1
+ bl FUN_0202822C
+ ldr r1, [sp, #0x14]
+ ldrb r1, [r1, #0x18]
+ cmp r1, #0
+ beq _021D877E
+ cmp r0, #2
+ beq _021D877E
+ add r3, sp, #0x28
+ b _021D8780
+_021D877E:
+ add r3, sp, #0x30
+_021D8780:
+ add r1, sp, #0x28
+ ldrb r7, [r1, #0x11]
+ ldrb r0, [r1, #0x13]
+ add r0, r7, r0
+ str r0, [sp, #0x10]
+ cmp r7, r0
+ bge _021D87BE
+ ldrb r2, [r1, #0x10]
+ ldrb r4, [r1, #0x12]
+ lsl r0, r7, #5
+ add r2, r2, r0
+_021D8796:
+ add r0, r2, #0
+ mov r1, #0
+ cmp r4, #0
+ ble _021D87B4
+ ldr r5, [sp, #0x24]
+ lsl r6, r2, #1
+ add r6, r5, r6
+_021D87A4:
+ ldrh r5, [r3]
+ add r1, r1, #1
+ add r3, r3, #2
+ strh r5, [r6]
+ add r6, r6, #2
+ add r0, r0, #1
+ cmp r1, r4
+ blt _021D87A4
+_021D87B4:
+ ldr r0, [sp, #0x10]
+ add r7, r7, #1
+ add r2, #0x20
+ cmp r7, r0
+ blt _021D8796
+_021D87BE:
+ add r1, sp, #0x28
+ ldrb r0, [r1, #0x11]
+ add r0, r0, #4
+ strb r0, [r1, #0x11]
+ ldr r0, [sp, #0x1c]
+ cmp r0, #3
+ bne _021D87D4
+ mov r0, #5
+ strb r0, [r1, #0x11]
+ mov r0, #0x11
+ strb r0, [r1, #0x10]
+_021D87D4:
+ ldr r0, [sp, #0x14]
+ add r0, r0, #1
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x1c]
+ add r0, r0, #1
+ str r0, [sp, #0x1c]
+ cmp r0, #8
+ blt _021D8760
+ mov r0, #0x3f
+ mov r4, #0x17
+ mov r3, #0
+ mov r7, #0x16
+ mov r2, #2
+ lsl r0, r0, #0xa
+_021D87F0:
+ ldr r5, [sp, #0xc]
+ add r1, r4, #0
+ add r1, #0x20
+ cmp r3, r5
+ bne _021D87FE
+ add r5, r2, #0
+ b _021D8800
+_021D87FE:
+ add r5, r7, #0
+_021D8800:
+ ldr r6, [sp, #0x24]
+ lsl r1, r1, #1
+ ldrh r6, [r6, r1]
+ add r3, r3, #1
+ add r4, r4, #2
+ and r6, r0
+ add r6, r5, r6
+ ldr r5, [sp, #0x24]
+ cmp r3, #4
+ strh r6, [r5, r1]
+ blt _021D87F0
+ ldr r1, _021D88C8 ; =0x000003CB
+ ldr r0, [sp]
+ ldrb r0, [r0, r1]
+ cmp r0, #0
+ beq _021D8824
+ mov r0, #8
+ str r0, [sp, #0x20]
+_021D8824:
+ mov r0, #0
+ str r0, [sp, #8]
+_021D8828:
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #8]
+ cmp r1, r0
+ bne _021D8836
+ mov r4, #1
+ lsl r4, r4, #0xc
+ b _021D8838
+_021D8836:
+ mov r4, #0
+_021D8838:
+ add r0, sp, #0x28
+ ldrb r1, [r0, #0x15]
+ ldrb r2, [r0, #0x17]
+ str r1, [sp, #4]
+ add r1, r1, r2
+ ldr r2, [sp, #4]
+ mov ip, r1
+ cmp r2, r1
+ bge _021D8884
+ ldrb r2, [r0, #0x14]
+ ldr r1, [sp, #4]
+ ldrb r0, [r0, #0x16]
+ lsl r1, r1, #5
+ ldr r6, _021D88CC ; =0x00000FFF
+ add r7, r2, r1
+_021D8856:
+ add r2, r7, #0
+ mov r3, #0
+ cmp r0, #0
+ ble _021D8876
+ ldr r1, [sp, #0x24]
+ lsl r5, r7, #1
+ add r1, r1, r5
+_021D8864:
+ ldrh r5, [r1]
+ add r3, r3, #1
+ add r2, r2, #1
+ and r5, r6
+ add r5, r4, r5
+ strh r5, [r1]
+ add r1, r1, #2
+ cmp r3, r0
+ blt _021D8864
+_021D8876:
+ ldr r1, [sp, #4]
+ add r7, #0x20
+ add r2, r1, #1
+ mov r1, ip
+ str r2, [sp, #4]
+ cmp r2, r1
+ blt _021D8856
+_021D8884:
+ add r1, sp, #0x28
+ ldrb r0, [r1, #0x15]
+ add r0, r0, #4
+ strb r0, [r1, #0x15]
+ ldr r0, [sp, #8]
+ cmp r0, #3
+ bne _021D889A
+ mov r0, #4
+ strb r0, [r1, #0x15]
+ mov r0, #0x10
+ strb r0, [r1, #0x14]
+_021D889A:
+ ldr r0, [sp, #8]
+ cmp r0, #7
+ bne _021D88AA
+ mov r1, #0x14
+ add r0, sp, #0x28
+ strb r1, [r0, #0x15]
+ mov r1, #9
+ strb r1, [r0, #0x14]
+_021D88AA:
+ ldr r0, [sp, #8]
+ add r0, r0, #1
+ str r0, [sp, #8]
+ cmp r0, #9
+ blt _021D8828
+ ldr r0, [sp]
+ mov r1, #1
+ ldr r0, [r0, #4]
+ bl FUN_02017CD0
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D88C4: .word 0x021DA298
+_021D88C8: .word 0x000003CB
+_021D88CC: .word 0x00000FFF
+ thumb_func_end MOD55_021D86D4
+
+ thumb_func_start MOD55_021D88D0
+MOD55_021D88D0: ; 0x021D88D0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp]
+ ldr r0, [r0, #8]
+ bl FUN_020286EC
+ mov r1, #0xf2
+ ldr r5, [sp]
+ add r7, r0, #0
+ lsl r1, r1, #2
+ add r0, r5, #0
+ ldrb r0, [r0, r1]
+ mov r4, #0
+ lsr r0, r0, #3
+ lsl r1, r0, #3
+ add r0, r5, #0
+ add r6, r0, r1
+_021D88F2:
+ mov r0, #0x29
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ ldrb r0, [r6, #0x18]
+ cmp r0, #0
+ beq _021D8968
+ sub r0, r0, #1
+ str r0, [sp, #4]
+ ldr r1, [sp, #4]
+ add r0, r7, #0
+ mov r2, #7
+ bl FUN_0202822C
+ str r0, [sp, #8]
+ ldr r1, [sp, #4]
+ add r0, r7, #0
+ mov r2, #8
+ bl FUN_0202822C
+ cmp r0, #2
+ beq _021D8968
+ ldr r1, [sp, #8]
+ mov r2, #0
+ bl FUN_020536D0
+ str r0, [sp, #0xc]
+ mov r0, #0xeb
+ ldr r1, [sp]
+ lsl r0, r0, #2
+ ldr r1, [r1, r0]
+ ldr r0, [sp, #0xc]
+ mov r2, #0x20
+ lsl r0, r0, #5
+ add r0, r1, r0
+ add r1, r4, #7
+ lsl r1, r1, #5
+ bl GX_LoadOBJPltt
+ mov r0, #0x29
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, r4, #7
+ bl FUN_02020248
+ mov r0, #0x29
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ ldr r1, [sp, #0xc]
+ bl FUN_02020130
+ mov r0, #0x29
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+_021D8968:
+ add r4, r4, #1
+ add r5, r5, #4
+ add r6, r6, #1
+ cmp r4, #8
+ blt _021D88F2
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD55_021D88D0
+
+ thumb_func_start MOD55_021D8978
+MOD55_021D8978: ; 0x021D8978
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ str r0, [sp, #0x10]
+ ldr r0, [r0, #8]
+ bl FUN_020286EC
+ add r2, sp, #0x20
+ ldr r3, _021D8A24 ; =0x021DA2BC
+ str r0, [sp, #0x18]
+ ldmia r3!, {r0, r1}
+ str r2, [sp, #0x1c]
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, #0xf2
+ str r0, [r2]
+ mov r0, #0
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldrb r0, [r0, r1]
+ lsr r0, r0, #3
+ lsl r1, r0, #3
+ ldr r0, [sp, #0x10]
+ add r4, r0, r1
+ mov r1, #0xae
+ lsl r1, r1, #2
+ add r5, r0, r1
+_021D89AE:
+ ldrb r0, [r4, #0x18]
+ mov r7, #0
+ cmp r0, #0
+ beq _021D8A00
+ sub r6, r0, #1
+ ldr r0, [sp, #0x18]
+ add r1, r6, #0
+ bl FUN_0202842C
+ cmp r0, #0
+ beq _021D8A00
+ ldr r0, [sp, #0x18]
+ add r1, r6, #0
+ mov r2, #8
+ bl FUN_0202822C
+ add r7, r0, #0
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x1c]
+ lsl r1, r7, #2
+ ldr r0, [r0, r1]
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #8]
+ mov r0, #0
+ lsl r3, r6, #2
+ str r0, [sp, #0xc]
+ add r2, r2, r3
+ ldr r2, [r2, #0x38]
+ add r0, r5, #0
+ mov r1, #0
+ mov r3, #1
+ bl FUN_0201BDE0
+ mov r7, #1
+_021D8A00:
+ cmp r7, #0
+ bne _021D8A0C
+ add r0, r5, #0
+ bl FUN_0201958C
+ b _021D8A12
+_021D8A0C:
+ add r0, r5, #0
+ bl FUN_02019220
+_021D8A12:
+ ldr r0, [sp, #0x14]
+ add r4, r4, #1
+ add r0, r0, #1
+ add r5, #0x10
+ str r0, [sp, #0x14]
+ cmp r0, #8
+ blt _021D89AE
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8A24: .word 0x021DA2BC
+ thumb_func_end MOD55_021D8978
+
+ thumb_func_start MOD55_021D8A28
+MOD55_021D8A28: ; 0x021D8A28
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ ldr r0, [r0, #8]
+ bl FUN_020286EC
+ add r7, r0, #0
+ ldr r0, [sp]
+ mov r6, #0
+ add r0, #0x18
+ add r1, r6, #0
+ mov r2, #0x20
+ bl MI_CpuFill8
+ ldr r5, [sp]
+ add r4, r6, #0
+_021D8A46:
+ ldr r0, [r5, #0x38]
+ bl FUN_02021A4C
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_0202842C
+ cmp r0, #0
+ beq _021D8A72
+ add r0, r7, #0
+ add r1, r4, #0
+ bl FUN_020283A4
+ add r1, r0, #0
+ ldr r0, [r5, #0x38]
+ bl FUN_02021E28
+ ldr r0, [sp]
+ add r1, r4, #1
+ add r0, r0, r6
+ strb r1, [r0, #0x18]
+ add r6, r6, #1
+_021D8A72:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x20
+ blt _021D8A46
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD55_021D8A28
+
+ thumb_func_start MOD55_021D8A7C
+MOD55_021D8A7C: ; 0x021D8A7C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ str r1, [sp, #0x14]
+ bl FUN_020286EC
+ ldr r0, [r5, #4]
+ mov r1, #3
+ bl FUN_02018744
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0x59
+ mov r1, #2
+ bl FUN_0200687C
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0x59
+ mov r1, #8
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0x59
+ mov r1, #5
+ mov r3, #1
+ bl FUN_020068C8
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D8AEE
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_021D8AEE:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xd
+ str r0, [sp, #4]
+ mov r2, #3
+ str r2, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, _021D8CAC ; =0x00000171
+ mov r1, #0xe6
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r5, #4]
+ add r1, r5, r1
+ mov r3, #1
+ bl FUN_02019064
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r2, r5, #0
+ add r2, #0xc0
+ ldr r0, [r5, #0x10]
+ ldr r2, [r2]
+ mov r1, #5
+ bl FUN_0200A8E0
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D8CB0 ; =0x000F0E00
+ add r2, r5, #0
+ str r0, [sp, #8]
+ mov r3, #0
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ str r3, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BDE0
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ mov r0, #0xde
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D8B6C
+ mov r0, #0xde
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_021D8B6C:
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _021D8CB4 ; =0x00000135
+ mov r1, #0xde
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r5, #4]
+ add r1, r5, r1
+ mov r2, #3
+ mov r3, #0xf
+ bl FUN_02019064
+ mov r0, #0xde
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r2, r5, #0
+ add r2, #0xd0
+ ldr r0, [r5, #0x10]
+ ldr r2, [r2]
+ mov r1, #7
+ bl FUN_0200A8E0
+ mov r1, #0
+ add r2, r5, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D8CB8 ; =0x00010200
+ add r2, #0xd0
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0xde
+ lsl r0, r0, #2
+ ldr r2, [r2]
+ add r0, r5, r0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ mov r0, #0xde
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ add r0, r5, #0
+ bl MOD55_021D8A28
+ mov r0, #0xae
+ mov r6, #0
+ lsl r0, r0, #2
+ add r4, r5, r0
+ add r7, r6, #0
+_021D8BE4:
+ cmp r6, #4
+ bge _021D8BEE
+ mov r0, #5
+ str r0, [sp, #0x18]
+ b _021D8BF2
+_021D8BEE:
+ mov r0, #0x14
+ str r0, [sp, #0x18]
+_021D8BF2:
+ add r0, r4, #0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D8C02
+ add r0, r4, #0
+ bl FUN_02019178
+_021D8C02:
+ lsr r2, r6, #0x1f
+ lsl r1, r6, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #2
+ add r0, r0, #5
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ add r1, r7, #0
+ ldr r3, [sp, #0x18]
+ ldr r0, _021D8CB4 ; =0x00000135
+ add r1, #0x18
+ sub r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ lsl r3, r3, #0x18
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ mov r2, #3
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ bl FUN_02019220
+ add r6, r6, #1
+ add r4, #0x10
+ add r7, #0x18
+ cmp r6, #8
+ blt _021D8BE4
+ add r0, r5, #0
+ bl MOD55_021D86D4
+ add r0, r5, #0
+ bl MOD55_021D8978
+ add r0, r5, #0
+ bl MOD55_021D88D0
+ mov r0, #0x2b
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_02020130
+ mov r0, #0xad
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_02020130
+ mov r0, #0x2b
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0xad
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x3b
+ mov r1, #3
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ ldr r0, [sp, #0x14]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D8CAC: .word 0x00000171
+_021D8CB0: .word 0x000F0E00
+_021D8CB4: .word 0x00000135
+_021D8CB8: .word 0x00010200
+ thumb_func_end MOD55_021D8A7C
+
+ thumb_func_start MOD55_021D8CBC
+MOD55_021D8CBC: ; 0x021D8CBC
+ push {r3, r4, r5, lr}
+ mov r3, #0xf2
+ lsl r3, r3, #2
+ add r5, r0, #0
+ add r2, r3, #1
+ ldrb r0, [r5, r3]
+ ldrb r2, [r5, r2]
+ lsr r4, r0, #3
+ cmp r2, #4
+ bne _021D8CD8
+ mov r1, #1
+ add r0, r3, #3
+ strb r1, [r5, r0]
+ b _021D8CF4
+_021D8CD8:
+ add r2, r3, #3
+ ldrb r2, [r5, r2]
+ cmp r2, #1
+ bne _021D8CE8
+ mov r1, #0
+ add r0, r3, #3
+ strb r1, [r5, r0]
+ b _021D8CF4
+_021D8CE8:
+ add r0, r0, r1
+ strb r0, [r5, r3]
+ ldrb r1, [r5, r3]
+ mov r0, #0x1f
+ and r0, r1
+ strb r0, [r5, r3]
+_021D8CF4:
+ add r0, r5, #0
+ bl MOD55_021D86D4
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ lsr r0, r0, #3
+ cmp r4, r0
+ beq _021D8D12
+ add r0, r5, #0
+ bl MOD55_021D8978
+ add r0, r5, #0
+ bl MOD55_021D88D0
+_021D8D12:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD55_021D8CBC
+
+ thumb_func_start MOD55_021D8D14
+MOD55_021D8D14: ; 0x021D8D14
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0xf3
+ add r5, r0, #0
+ lsl r1, r1, #2
+ ldrb r1, [r5, r1]
+ cmp r1, #0
+ beq _021D8D52
+ ldr r1, _021D8E5C ; =0x021C48B8
+ ldr r1, [r1, #0x48]
+ cmp r1, #0
+ beq _021D8D52
+ bl MOD55_021DA214
+ mov r0, #0x2b
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0xad
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0xf3
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ b _021D8E36
+_021D8D52:
+ ldr r2, _021D8E5C ; =0x021C48B8
+ mov r0, #1
+ ldr r3, [r2, #0x48]
+ add r1, r3, #0
+ tst r1, r0
+ beq _021D8D88
+ ldr r0, _021D8E60 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r1, _021D8E64 ; =0x000003CB
+ ldrb r0, [r5, r1]
+ cmp r0, #0
+ beq _021D8D74
+ mov r0, #6
+ sub r1, #0x1b
+ str r0, [r5, r1]
+ b _021D8E36
+_021D8D74:
+ sub r0, r1, #3
+ ldrb r0, [r5, r0]
+ add r0, r5, r0
+ ldrb r0, [r0, #0x18]
+ cmp r0, #0
+ beq _021D8E36
+ mov r0, #4
+ sub r1, #0x1b
+ str r0, [r5, r1]
+ b _021D8E36
+_021D8D88:
+ mov r1, #2
+ tst r1, r3
+ beq _021D8D9E
+ ldr r0, _021D8E60 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x3b
+ mov r1, #6
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _021D8E36
+_021D8D9E:
+ ldr r1, [r2, #0x4c]
+ mov r2, #0x40
+ tst r2, r1
+ beq _021D8DC4
+ ldr r0, _021D8E68 ; =0x000003C9
+ ldrb r1, [r5, r0]
+ cmp r1, #0
+ beq _021D8E36
+ sub r1, r1, #1
+ strb r1, [r5, r0]
+ ldr r0, _021D8E60 ; =0x000005DC
+ bl FUN_020054C8
+ mov r1, #0
+ add r0, r5, #0
+ mvn r1, r1
+ bl MOD55_021D8CBC
+ b _021D8E36
+_021D8DC4:
+ mov r2, #0x80
+ tst r2, r1
+ beq _021D8DE6
+ ldr r0, _021D8E68 ; =0x000003C9
+ ldrb r1, [r5, r0]
+ cmp r1, #4
+ bhs _021D8E36
+ add r1, r1, #1
+ strb r1, [r5, r0]
+ ldr r0, _021D8E60 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD55_021D8CBC
+ b _021D8E36
+_021D8DE6:
+ mov r2, #0x20
+ tst r2, r1
+ beq _021D8E10
+ ldr r2, _021D8E64 ; =0x000003CB
+ ldrb r1, [r5, r2]
+ cmp r1, #0
+ bne _021D8E36
+ sub r1, r2, #1
+ ldrb r1, [r5, r1]
+ sub r1, r0, r1
+ sub r0, r2, #1
+ strb r1, [r5, r0]
+ ldr r0, _021D8E60 ; =0x000005DC
+ bl FUN_020054C8
+ mov r1, #3
+ add r0, r5, #0
+ mvn r1, r1
+ bl MOD55_021D8CBC
+ b _021D8E36
+_021D8E10:
+ mov r2, #0x10
+ tst r1, r2
+ beq _021D8E36
+ ldr r2, _021D8E64 ; =0x000003CB
+ ldrb r1, [r5, r2]
+ cmp r1, #0
+ bne _021D8E36
+ sub r1, r2, #1
+ ldrb r1, [r5, r1]
+ sub r1, r0, r1
+ sub r0, r2, #1
+ strb r1, [r5, r0]
+ ldr r0, _021D8E60 ; =0x000005DC
+ bl FUN_020054C8
+ add r0, r5, #0
+ mov r1, #4
+ bl MOD55_021D8CBC
+_021D8E36:
+ mov r0, #0x3b
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r0, #3
+ beq _021D8E58
+ mov r0, #0x2b
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0xad
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+_021D8E58:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8E5C: .word 0x021C48B8
+_021D8E60: .word 0x000005DC
+_021D8E64: .word 0x000003CB
+_021D8E68: .word 0x000003C9
+ thumb_func_end MOD55_021D8D14
+
+ thumb_func_start MOD55_021D8E6C
+MOD55_021D8E6C: ; 0x021D8E6C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ str r1, [sp, #0x14]
+ bl FUN_020286EC
+ mov r1, #0xf2
+ lsl r1, r1, #2
+ ldrb r1, [r5, r1]
+ mov r2, #8
+ str r0, [sp, #0x18]
+ add r1, r5, r1
+ ldrb r1, [r1, #0x18]
+ sub r1, r1, #1
+ bl FUN_0202822C
+ cmp r0, #2
+ add r2, sp, #0x1c
+ bne _021D8ECC
+ ldr r3, _021D8FCC ; =0x021DA418
+ mov r7, #4
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, r7, #0
+ mov r1, #0x34
+ bl FUN_02012838
+ ldr r4, _021D8FD0 ; =0x021DA3D8
+ str r0, [r5, #0x14]
+ mov r6, #0
+_021D8EB6:
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x10]
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ bl FUN_02012880
+ add r6, r6, #1
+ add r4, #8
+ cmp r6, #4
+ blt _021D8EB6
+ b _021D8F02
+_021D8ECC:
+ ldr r3, _021D8FD4 ; =0x021DA3F8
+ mov r7, #4
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, r7, #0
+ mov r1, #0x34
+ bl FUN_02012838
+ ldr r4, _021D8FD8 ; =0x021DA438
+ str r0, [r5, #0x14]
+ mov r6, #0
+_021D8EEE:
+ ldr r0, [r5, #0x14]
+ ldr r1, [r5, #0x10]
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ bl FUN_02012880
+ add r6, r6, #1
+ add r4, #8
+ cmp r6, #4
+ blt _021D8EEE
+_021D8F02:
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D8F1A
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_021D8F1A:
+ mov r1, #9
+ str r1, [sp]
+ mov r1, #0xf
+ lsl r0, r7, #1
+ str r1, [sp, #4]
+ lsl r1, r0, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #8]
+ mov r1, #0xd
+ str r1, [sp, #0xc]
+ mov r1, #0x3b
+ sub r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0xe2
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r5, #4]
+ add r1, r5, r1
+ mov r2, #2
+ mov r3, #0x10
+ bl FUN_02019064
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ ldr r2, _021D8FDC ; =0x000001D9
+ add r0, r5, r0
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ str r0, [sp, #0x1c]
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ str r0, [sp, #0x28]
+ add r0, sp, #0x1c
+ add r2, r1, #0
+ mov r3, #0x34
+ bl FUN_020010A8
+ mov r1, #0xea
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ sub r1, #0x20
+ add r0, r5, r1
+ bl FUN_02019220
+ mov r0, #0x34
+ bl FUN_02023928
+ mov r1, #0xf2
+ lsl r1, r1, #2
+ ldrb r1, [r5, r1]
+ add r4, r0, #0
+ ldr r0, [sp, #0x18]
+ add r1, r5, r1
+ ldrb r1, [r1, #0x18]
+ sub r1, r1, #1
+ bl FUN_020283A4
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0202395C
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_0200ABC0
+ add r0, r5, #0
+ mov r1, #0xc
+ bl MOD55_021DA0A4
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r0, _021D8FE0 ; =0x00000418
+ mov r1, #0
+ strh r1, [r5, r0]
+ mov r1, #5
+ sub r0, #0x68
+ str r1, [r5, r0]
+ ldr r0, [sp, #0x14]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D8FCC: .word 0x021DA418
+_021D8FD0: .word 0x021DA3D8
+_021D8FD4: .word 0x021DA3F8
+_021D8FD8: .word 0x021DA438
+_021D8FDC: .word 0x000001D9
+_021D8FE0: .word 0x00000418
+ thumb_func_end MOD55_021D8E6C
+
+ thumb_func_start MOD55_021D8FE4
+MOD55_021D8FE4: ; 0x021D8FE4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ add r6, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _021D9002
+ add sp, #0xc
+ add r0, r6, #0
+ pop {r4, r5, r6, r7, pc}
+_021D9002:
+ mov r0, #0xea
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02001204
+ ldr r1, _021D90D0 ; =0x00000418
+ add r4, r0, #0
+ add r0, r1, #0
+ sub r0, #0x70
+ ldrh r7, [r5, r1]
+ ldr r0, [r5, r0]
+ add r1, r5, r1
+ bl FUN_0200143C
+ ldr r0, _021D90D0 ; =0x00000418
+ ldrh r0, [r5, r0]
+ cmp r7, r0
+ beq _021D902C
+ ldr r0, _021D90D4 ; =0x000005DC
+ bl FUN_020054C8
+_021D902C:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _021D9040
+ add r0, r0, #1
+ cmp r4, r0
+ bne _021D9068
+ add sp, #0xc
+ add r0, r6, #0
+ pop {r4, r5, r6, r7, pc}
+_021D9040:
+ ldr r0, _021D90D4 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0x2b
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0xad
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x3b
+ mov r1, #3
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _021D9098
+_021D9068:
+ ldr r0, _021D90D4 ; =0x000005DC
+ bl FUN_020054C8
+ cmp r4, #0x14
+ bne _021D9092
+ ldr r0, [r5, #4]
+ mov r1, #3
+ bl FUN_02018744
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x34
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+_021D9092:
+ mov r0, #0x3b
+ lsl r0, r0, #4
+ str r4, [r5, r0]
+_021D9098:
+ add r0, r5, #0
+ bl MOD55_021DA214
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+ mov r0, #0xea
+ lsl r0, r0, #2
+ mov r1, #0
+ ldr r0, [r5, r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ ldr r0, [r5, #0x14]
+ bl FUN_02012870
+ add r0, r6, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D90D0: .word 0x00000418
+_021D90D4: .word 0x000005DC
+ thumb_func_end MOD55_021D8FE4
+
+ thumb_func_start MOD55_021D90D8
+MOD55_021D90D8: ; 0x021D90D8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ add r7, r1, #0
+ add r0, r5, r0
+ ldrb r0, [r0, #0x18]
+ cmp r0, #0
+ beq _021D9170
+ ldr r0, [r5, #8]
+ bl FUN_020286EC
+ mov r1, #0xf2
+ lsl r1, r1, #2
+ ldrb r1, [r5, r1]
+ str r0, [sp, #8]
+ add r1, r5, r1
+ ldrb r1, [r1, #0x18]
+ sub r1, r1, #1
+ bl FUN_0202838C
+ bl FUN_02096E24
+ str r1, [sp, #4]
+ add r4, r0, #0
+ ldr r0, [sp, #4]
+ mov r1, #0
+ eor r1, r0
+ mov r2, #0
+ add r0, r4, #0
+ eor r0, r2
+ orr r0, r1
+ beq _021D9170
+ mov r0, #0x34
+ bl FUN_02023928
+ mov r1, #0xf2
+ lsl r1, r1, #2
+ ldrb r1, [r5, r1]
+ add r6, r0, #0
+ ldr r0, [sp, #8]
+ add r1, r5, r1
+ ldrb r1, [r1, #0x18]
+ sub r1, r1, #1
+ bl FUN_020283A4
+ add r1, r0, #0
+ add r0, r6, #0
+ bl FUN_0202395C
+ ldr r0, _021D9180 ; =0x000005DC
+ bl FUN_020054C8
+ ldr r2, [sp, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD55_021D93F8
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ add r2, r6, #0
+ bl FUN_0200ABC0
+ add r0, r5, #0
+ mov r1, #0x1f
+ bl MOD55_021DA15C
+ mov r0, #0xf3
+ mov r1, #1
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ add r0, r6, #0
+ bl FUN_02016A18
+_021D9170:
+ mov r0, #0x3b
+ mov r1, #3
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r7, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D9180: .word 0x000005DC
+ thumb_func_end MOD55_021D90D8
+
+ thumb_func_start MOD55_021D9184
+MOD55_021D9184: ; 0x021D9184
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ add r7, r1, #0
+ bl FUN_020286EC
+ bl FUN_02028228
+ bl FUN_02096D68
+ add r6, r0, #0
+ add r4, r1, #0
+ ldr r0, [r5, #4]
+ mov r1, #3
+ bl FUN_02018744
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0x59
+ mov r1, #7
+ mov r3, #1
+ bl FUN_020068C8
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D91D6
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_021D91D6:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x14
+ str r0, [sp, #4]
+ mov r2, #3
+ mov r1, #0xe6
+ lsl r1, r1, #2
+ str r2, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _021D93D0 ; =0x00000139
+ add r1, r5, r1
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ mov r3, #1
+ bl FUN_02019064
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [r5, #8]
+ bl FUN_020238F4
+ add r2, r0, #0
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ bl FUN_0200ABC0
+ add r2, r5, #0
+ add r2, #0xb8
+ ldr r0, [r5, #0x10]
+ ldr r2, [r2]
+ mov r1, #0x16
+ bl FUN_0200A8E0
+ add r1, r5, #0
+ add r2, r5, #0
+ add r1, #0xc0
+ add r2, #0xb8
+ ldr r0, [r5, #0xc]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl FUN_0200B7B8
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D93D4 ; =0x000F0E00
+ add r2, r5, #0
+ str r0, [sp, #8]
+ mov r3, #0
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ str r3, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BDE0
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D9278
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_021D9278:
+ mov r1, #0xd
+ str r1, [sp]
+ mov r0, #0x15
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0x64
+ mov r1, #0xce
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r5, #4]
+ add r1, r5, r1
+ mov r2, #3
+ mov r3, #6
+ bl FUN_02019064
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_02019620
+ mov r1, #0
+ mov r0, #0
+ eor r1, r4
+ eor r0, r6
+ orr r0, r1
+ ldr r0, [r5, #0x10]
+ bne _021D92C2
+ add r2, r5, #0
+ add r2, #0xbc
+ ldr r2, [r2]
+ mov r1, #0x18
+ bl FUN_0200A8E0
+ b _021D92CE
+_021D92C2:
+ add r2, r5, #0
+ add r2, #0xbc
+ ldr r2, [r2]
+ mov r1, #0x17
+ bl FUN_0200A8E0
+_021D92CE:
+ add r1, r5, #0
+ add r1, #0xbc
+ mov r0, #0
+ ldr r1, [r1]
+ add r2, r0, #0
+ bl FUN_02002F08
+ mov r1, #0xa8
+ sub r0, r1, r0
+ mov r1, #0
+ lsr r3, r0, #1
+ add r2, r5, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D93D8 ; =0x00010200
+ add r2, #0xbc
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0xce
+ lsl r0, r0, #2
+ ldr r2, [r2]
+ add r0, r5, r0
+ bl FUN_0201BDE0
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ mov r1, #0
+ mov r0, #0
+ eor r1, r4
+ eor r0, r6
+ orr r0, r1
+ beq _021D93C2
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD55_021D93F8
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D9338
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_021D9338:
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0xe
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x32
+ mov r1, #0xe2
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r5, #4]
+ add r1, r5, r1
+ mov r2, #3
+ mov r3, #9
+ bl FUN_02019064
+ add r2, r5, #0
+ add r2, #0xb8
+ ldr r0, [r5, #0x10]
+ ldr r2, [r2]
+ mov r1, #0x1b
+ bl FUN_0200A8E0
+ add r1, r5, #0
+ add r2, r5, #0
+ add r1, #0xbc
+ add r2, #0xb8
+ ldr r0, [r5, #0xc]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl FUN_0200B7B8
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r1, r5, #0
+ add r1, #0xbc
+ mov r0, #0
+ ldr r1, [r1]
+ add r2, r0, #0
+ mov r3, #0x70
+ bl FUN_02002F40
+ mov r1, #0
+ add r3, r0, #0
+ add r2, r5, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D93D8 ; =0x00010200
+ add r2, #0xbc
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ ldr r2, [r2]
+ add r0, r5, r0
+ bl FUN_0201BDE0
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+_021D93C2:
+ mov r0, #0x3b
+ mov r1, #0x13
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r7, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D93D0: .word 0x00000139
+_021D93D4: .word 0x000F0E00
+_021D93D8: .word 0x00010200
+ thumb_func_end MOD55_021D9184
+
+ thumb_func_start MOD55_021D93DC
+MOD55_021D93DC: ; 0x021D93DC
+ ldr r2, _021D93F4 ; =0x021C48B8
+ ldr r3, [r2, #0x48]
+ mov r2, #3
+ tst r2, r3
+ beq _021D93EE
+ mov r2, #0x3b
+ mov r3, #6
+ lsl r2, r2, #4
+ str r3, [r0, r2]
+_021D93EE:
+ add r0, r1, #0
+ bx lr
+ nop
+_021D93F4: .word 0x021C48B8
+ thumb_func_end MOD55_021D93DC
+
+ thumb_func_start MOD55_021D93F8
+MOD55_021D93F8: ; 0x021D93F8
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r6, r2, #0
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r2, _021D946C ; =0x05F5E100
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r3, #0
+ bl _ll_udiv
+ add r2, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ ldr r0, [r5, #0xc]
+ mov r3, #4
+ bl FUN_0200AD38
+ ldr r2, _021D9470 ; =0x00002710
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r3, #0
+ bl _ll_udiv
+ ldr r2, _021D9470 ; =0x00002710
+ mov r3, #0
+ bl _ull_mod
+ mov r1, #2
+ add r2, r0, #0
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #0xc]
+ mov r3, #4
+ bl FUN_0200AD38
+ ldr r2, _021D9470 ; =0x00002710
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r3, #0
+ bl _ull_mod
+ add r2, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #0xc]
+ mov r1, #3
+ mov r3, #4
+ bl FUN_0200AD38
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_021D946C: .word 0x05F5E100
+_021D9470: .word 0x00002710
+ thumb_func_end MOD55_021D93F8
+
+ thumb_func_start MOD55_021D9474
+MOD55_021D9474: ; 0x021D9474
+ push {r4, r5, lr}
+ sub sp, #0x64
+ add r4, r0, #0
+ mov r0, #1
+ mov r1, #0
+ add r2, r0, #0
+ bl GX_SetGraphicsMode
+ ldr r5, _021D9564 ; =0x021DA2D8
+ add r3, sp, #0x54
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D9568 ; =0x021DA2F8
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x34
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ ldr r5, _021D956C ; =0x021DA330
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x34
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _021D9570 ; =0x021DA314
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x34
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02018744
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x34
+ bl FUN_02017F18
+ mov r0, #1
+ mov r1, #3
+ bl FUN_020178BC
+ mov r0, #2
+ add r1, r0, #0
+ bl FUN_020178BC
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020178BC
+ mov r0, #3
+ mov r1, #0
+ bl FUN_020178BC
+ add sp, #0x64
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D9564: .word 0x021DA2D8
+_021D9568: .word 0x021DA2F8
+_021D956C: .word 0x021DA330
+_021D9570: .word 0x021DA314
+ thumb_func_end MOD55_021D9474
+
+ thumb_func_start MOD55_021D9574
+MOD55_021D9574: ; 0x021D9574
+ push {r3, lr}
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r0, _021D95D8 ; =0x04000008
+ mov r1, #3
+ ldrh r2, [r0]
+ bic r2, r1
+ mov r1, #1
+ orr r1, r2
+ strh r1, [r0]
+ add r0, #0x58
+ ldrh r1, [r0]
+ ldr r2, _021D95DC ; =0xFFFFCFFD
+ and r1, r2
+ strh r1, [r0]
+ ldrh r3, [r0]
+ add r1, r2, #2
+ and r3, r1
+ mov r1, #0x10
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r3, [r0]
+ ldr r1, _021D95E0 ; =0x0000CFFB
+ and r1, r3
+ strh r1, [r0]
+ add r1, r2, #2
+ ldrh r3, [r0]
+ lsr r2, r2, #0x11
+ and r3, r1
+ mov r1, #8
+ orr r1, r3
+ strh r1, [r0]
+ mov r0, #0
+ add r1, r0, #0
+ mov r3, #0x3f
+ str r0, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _021D95E4 ; =0x04000540
+ mov r0, #2
+ str r0, [r1]
+ ldr r0, _021D95E8 ; =0xBFFF0000
+ str r0, [r1, #0x40]
+ pop {r3, pc}
+ .align 2, 0
+_021D95D8: .word 0x04000008
+_021D95DC: .word 0xFFFFCFFD
+_021D95E0: .word 0x0000CFFB
+_021D95E4: .word 0x04000540
+_021D95E8: .word 0xBFFF0000
+ thumb_func_end MOD55_021D9574
+
+ thumb_func_start MOD55_021D95EC
+MOD55_021D95EC: ; 0x021D95EC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ str r1, [sp, #0x14]
+ bl FUN_020286EC
+ str r0, [sp, #0x1c]
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ ldrb r0, [r4, r0]
+ add r0, r4, r0
+ ldrb r0, [r0, #0x18]
+ sub r0, r0, #1
+ str r0, [sp, #0x18]
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D9618
+ ldr r0, [sp, #0x14]
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+_021D9618:
+ add r0, r4, #0
+ bl MOD55_021D7720
+ add r0, r4, #0
+ bl MOD55_021D8140
+ ldr r0, [r4, #4]
+ bl MOD55_021D7AA4
+ mov r0, #0x34
+ bl FUN_02016B94
+ str r0, [r4, #4]
+ bl MOD55_021D9474
+ bl MOD55_021D9574
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x59
+ mov r1, #2
+ mov r3, #1
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x59
+ mov r1, #8
+ mov r3, #1
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x59
+ mov r1, #6
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D969A
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+_021D969A:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x14
+ str r0, [sp, #4]
+ mov r2, #3
+ mov r1, #0xe6
+ lsl r1, r1, #2
+ str r2, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _021D9A50 ; =0x0000019D
+ add r1, r4, r1
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ mov r3, #1
+ bl FUN_02019064
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0x34
+ bl FUN_02023928
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ bl FUN_020283A4
+ add r1, r0, #0
+ ldr r0, [sp, #0x20]
+ bl FUN_0202395C
+ ldr r0, [r4, #0xc]
+ ldr r2, [sp, #0x20]
+ mov r1, #0
+ bl FUN_0200ABC0
+ add r2, r4, #0
+ add r2, #0xb8
+ ldr r0, [r4, #0x10]
+ ldr r2, [r2]
+ mov r1, #0xd
+ bl FUN_0200A8E0
+ add r1, r4, #0
+ add r2, r4, #0
+ add r1, #0xc0
+ add r2, #0xb8
+ ldr r0, [r4, #0xc]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl FUN_0200B7B8
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9A54 ; =0x000F0E00
+ add r2, r4, #0
+ str r0, [sp, #8]
+ mov r3, #0
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ str r3, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r0, r4, r0
+ mov r1, #1
+ bl FUN_0201BDE0
+ mov r0, #0xe6
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D974E
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+_021D974E:
+ mov r0, #0x12
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r3, #2
+ mov r1, #0xe2
+ lsl r1, r1, #2
+ str r3, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _021D9A58 ; =0x00000141
+ add r1, r4, r1
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ mov r2, #3
+ bl FUN_02019064
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [r4, #0xc]
+ ldr r2, [sp, #0x20]
+ mov r1, #0
+ bl FUN_0200ABC0
+ add r2, r4, #0
+ add r2, #0xb8
+ ldr r0, [r4, #0x10]
+ ldr r2, [r2]
+ mov r1, #6
+ bl FUN_0200A8E0
+ add r1, r4, #0
+ add r2, r4, #0
+ add r1, #0xc0
+ add r2, #0xb8
+ ldr r0, [r4, #0xc]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl FUN_0200B7B8
+ ldr r0, _021D9A54 ; =0x000F0E00
+ add r1, r4, #0
+ str r0, [sp]
+ mov r0, #0xe2
+ add r1, #0xc0
+ lsl r0, r0, #2
+ ldr r1, [r1]
+ add r0, r4, r0
+ mov r2, #0xff
+ mov r3, #0x40
+ bl MOD55_021D80F0
+ mov r0, #0xe2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019220
+ mov r0, #0x34
+ bl FUN_02006D98
+ add r1, r4, #0
+ add r1, #0xdc
+ str r0, [r1]
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ mov r2, #7
+ bl FUN_0202822C
+ add r6, r0, #0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ mov r2, #8
+ bl FUN_0202822C
+ add r1, r6, #0
+ mov r2, #1
+ add r5, r0, #0
+ bl FUN_020536D0
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsl r3, r5, #0x18
+ add r0, sp, #0x24
+ lsr r1, r1, #0x10
+ mov r2, #2
+ lsr r3, r3, #0x18
+ bl FUN_02068FE0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ add r1, sp, #0x24
+ mov r2, #0x36
+ mov r3, #0x54
+ bl FUN_020073A0
+ add r1, r4, #0
+ add r1, #0xe0
+ str r0, [r1]
+ cmp r5, #1
+ bne _021D9864
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_0201886C
+ ldr r2, _021D9A5C ; =0x00000FFF
+ mov r7, #0x10
+ mov ip, r0
+ lsl r6, r7, #5
+ add r3, r2, #1
+_021D983C:
+ lsl r5, r6, #1
+ mov r1, ip
+ mov r0, #0
+ add r1, r1, r5
+_021D9844:
+ ldrh r5, [r1]
+ add r0, r0, #1
+ and r5, r2
+ add r5, r5, r3
+ strh r5, [r1]
+ add r1, r1, #2
+ cmp r0, #0xc
+ blt _021D9844
+ add r7, r7, #1
+ add r6, #0x20
+ cmp r7, #0x15
+ blt _021D983C
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02017CD0
+_021D9864:
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021D987C
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+_021D987C:
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ mov r0, #0x13
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #2
+ mov r1, #0xd2
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r4, #4]
+ add r1, r4, r1
+ mov r2, #3
+ mov r3, #0xf
+ bl FUN_02019064
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r2, r4, #0
+ add r2, #0xc4
+ ldr r0, [r4, #0x10]
+ ldr r2, [r2]
+ mov r1, #0xe
+ bl FUN_0200A8E0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9A60 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ add r2, r4, #0
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0xc4
+ ldr r2, [r2]
+ add r0, r4, r0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ mov r0, #0x34
+ bl FUN_02023928
+ add r5, r0, #0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ bl FUN_020283E8
+ add r1, r0, #0
+ add r0, r5, #0
+ bl FUN_0202395C
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ add r2, r5, #0
+ bl FUN_0200ABC0
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r2, r4, #0
+ add r2, #0xb8
+ ldr r0, [r4, #0x10]
+ ldr r2, [r2]
+ mov r1, #0x2a
+ bl FUN_0200A8E0
+ add r1, r4, #0
+ add r2, r4, #0
+ add r1, #0xc4
+ add r2, #0xb8
+ ldr r0, [r4, #0xc]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl FUN_0200B7B8
+ add r1, r4, #0
+ add r1, #0xc4
+ mov r0, #0
+ ldr r1, [r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x78
+ sub r3, r1, r0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9A60 ; =0x00010200
+ add r2, r4, #0
+ str r0, [sp, #8]
+ mov r1, #0
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0xc4
+ ldr r2, [r2]
+ add r0, r4, r0
+ bl FUN_0201BDE0
+ add r2, r4, #0
+ add r2, #0xc8
+ ldr r0, [r4, #0x10]
+ ldr r2, [r2]
+ mov r1, #0xf
+ bl FUN_0200A8E0
+ mov r0, #0x18
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9A60 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ add r2, r4, #0
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0xc8
+ ldr r2, [r2]
+ add r0, r4, r0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ mov r2, #1
+ bl FUN_0202822C
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ mov r3, #4
+ bl FUN_0200AD38
+ add r2, r4, #0
+ add r2, #0xb8
+ ldr r0, [r4, #0x10]
+ ldr r2, [r2]
+ mov r1, #0x10
+ bl FUN_0200A8E0
+ add r1, r4, #0
+ add r2, r4, #0
+ add r1, #0xc0
+ add r2, #0xb8
+ ldr r0, [r4, #0xc]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl FUN_0200B7B8
+ add r1, r4, #0
+ add r1, #0xc0
+ mov r0, #0
+ ldr r1, [r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x78
+ sub r3, r1, r0
+ mov r0, #0x27
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9A60 ; =0x00010200
+ add r2, r4, #0
+ str r0, [sp, #8]
+ mov r1, #0
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r0, r4, r0
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ mov r2, #2
+ bl FUN_0202822C
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ mov r3, #4
+ bl FUN_0200AD38
+ add r2, r4, #0
+ add r2, #0xb8
+ ldr r0, [r4, #0x10]
+ ldr r2, [r2]
+ mov r1, #0x11
+ bl FUN_0200A8E0
+ add r1, r4, #0
+ add r2, r4, #0
+ add r1, #0xc0
+ add r2, #0xb8
+ ldr r0, [r4, #0xc]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl FUN_0200B7B8
+ add r1, r4, #0
+ add r1, #0xc0
+ mov r0, #0
+ ldr r1, [r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x78
+ sub r3, r1, r0
+ mov r0, #0x35
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9A60 ; =0x00010200
+ b _021D9A64
+ nop
+_021D9A50: .word 0x0000019D
+_021D9A54: .word 0x000F0E00
+_021D9A58: .word 0x00000141
+_021D9A5C: .word 0x00000FFF
+_021D9A60: .word 0x00010200
+_021D9A64:
+ add r2, r4, #0
+ str r0, [sp, #8]
+ mov r1, #0
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r0, r4, r0
+ bl FUN_0201BDE0
+ add r2, r4, #0
+ add r2, #0xc0
+ ldr r0, [r4, #0x10]
+ ldr r2, [r2]
+ mov r1, #0x12
+ bl FUN_0200A8E0
+ mov r0, #0x4a
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9C4C ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ add r2, r4, #0
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r0, r4, r0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ mov r2, #3
+ bl FUN_0202822C
+ add r5, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ add r2, r5, #0
+ mov r3, #4
+ bl FUN_0200AD38
+ cmp r5, #1
+ ldr r0, [r4, #0x10]
+ bne _021D9ADC
+ add r2, r4, #0
+ add r2, #0xb8
+ ldr r2, [r2]
+ mov r1, #0x13
+ bl FUN_0200A8E0
+ b _021D9AE8
+_021D9ADC:
+ add r2, r4, #0
+ add r2, #0xb8
+ ldr r2, [r2]
+ mov r1, #0x2b
+ bl FUN_0200A8E0
+_021D9AE8:
+ add r1, r4, #0
+ add r2, r4, #0
+ add r1, #0xc0
+ add r2, #0xb8
+ ldr r0, [r4, #0xc]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl FUN_0200B7B8
+ add r1, r4, #0
+ add r1, #0xc0
+ mov r0, #0
+ ldr r1, [r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x78
+ sub r3, r1, r0
+ mov r0, #0x5c
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9C4C ; =0x00010200
+ add r2, r4, #0
+ str r0, [sp, #8]
+ mov r1, #0
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r0, r4, r0
+ bl FUN_0201BDE0
+ add r2, r4, #0
+ add r2, #0xc0
+ ldr r0, [r4, #0x10]
+ ldr r2, [r2]
+ mov r1, #0x14
+ bl FUN_0200A8E0
+ mov r0, #0x71
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D9C4C ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ add r2, r4, #0
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r0, r4, r0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ mov r2, #6
+ bl FUN_0202822C
+ add r2, r0, #0
+ beq _021D9C18
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r1, #2
+ ldr r0, [r4, #0xc]
+ add r3, r1, #0
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ mov r2, #4
+ bl FUN_0202822C
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ mov r3, #4
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ mov r2, #5
+ bl FUN_0202822C
+ add r2, r0, #0
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_0200B764
+ ldr r0, [sp, #0x1c]
+ ldr r1, [sp, #0x18]
+ mov r2, #6
+ bl FUN_0202822C
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r1, #2
+ ldr r0, [r4, #0xc]
+ add r3, r1, #0
+ bl FUN_0200AD38
+ add r2, r4, #0
+ add r2, #0xb8
+ ldr r0, [r4, #0x10]
+ ldr r2, [r2]
+ mov r1, #0x15
+ bl FUN_0200A8E0
+ add r1, r4, #0
+ add r2, r4, #0
+ add r1, #0xc0
+ add r2, #0xb8
+ ldr r0, [r4, #0xc]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl FUN_0200B7B8
+ add r1, r4, #0
+ add r1, #0xc0
+ mov r0, #0
+ ldr r1, [r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x78
+ sub r3, r1, r0
+ mov r1, #0x81
+ add r2, r4, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ lsl r0, r1, #9
+ str r0, [sp, #8]
+ mov r1, #0
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ add r0, r4, r0
+ bl FUN_0201BDE0
+_021D9C18:
+ mov r0, #0xd2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019220
+ ldr r0, [sp, #0x20]
+ bl FUN_02016A18
+ mov r0, #0x3b
+ mov r1, #0x15
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x34
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldr r0, [sp, #0x14]
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9C4C: .word 0x00010200
+ thumb_func_end MOD55_021D95EC
+
+ thumb_func_start MOD55_021D9C50
+MOD55_021D9C50: ; 0x021D9C50
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ bl G3X_ResetMtxStack
+ bl G3X_ResetMtxStack_2
+ bl FUN_020B02C8
+ add r0, r5, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ bl FUN_02006ED4
+ ldr r0, _021D9CB8 ; =0x04000540
+ mov r1, #0
+ str r1, [r0]
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D9C82
+ add sp, #0xc
+ add r0, r4, #0
+ pop {r4, r5, pc}
+_021D9C82:
+ ldr r0, _021D9CBC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D9CB2
+ ldr r0, _021D9CC0 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x34
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0x3b
+ mov r1, #0x16
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021D9CB2:
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D9CB8: .word 0x04000540
+_021D9CBC: .word 0x021C48B8
+_021D9CC0: .word 0x000005DC
+ thumb_func_end MOD55_021D9C50
+
+ thumb_func_start MOD55_021D9CC4
+MOD55_021D9CC4: ; 0x021D9CC4
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r1, #0
+ bl G3X_ResetMtxStack
+ bl G3X_ResetMtxStack_2
+ bl FUN_020B02C8
+ add r0, r5, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ bl FUN_02006ED4
+ ldr r0, _021D9D84 ; =0x04000540
+ mov r1, #0
+ str r1, [r0]
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D9CF6
+ add sp, #0x10
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_021D9CF6:
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D9D16
+ bl FUN_02007534
+ add r0, r5, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ bl FUN_020072E8
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xe0
+ str r1, [r0]
+_021D9D16:
+ ldr r0, [r5, #4]
+ bl MOD55_021D7AA4
+ mov r0, #0x34
+ bl FUN_02016B94
+ str r0, [r5, #4]
+ bl MOD55_021D781C
+ add r0, r5, #0
+ bl MOD55_021D74E0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0x59
+ mov r1, #0xa
+ mov r3, #4
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0x59
+ mov r1, #0xb
+ mov r3, #4
+ bl FUN_020068C8
+ mov r0, #3
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x34
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0x3b
+ mov r1, #2
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021D9D84: .word 0x04000540
+ thumb_func_end MOD55_021D9CC4
+
+ thumb_func_start MOD55_021D9D88
+MOD55_021D9D88: ; 0x021D9D88
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ ldr r0, [r6, #4]
+ str r1, [sp, #0x10]
+ mov r1, #3
+ bl FUN_02018744
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ ldr r2, [r6, #4]
+ mov r0, #0x59
+ mov r1, #8
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x34
+ str r0, [sp, #0xc]
+ ldr r2, [r6, #4]
+ mov r0, #0x59
+ mov r1, #4
+ mov r3, #1
+ bl FUN_020068C8
+ mov r7, #0x29
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #4
+_021D9DCE:
+ ldr r0, [r5, r7]
+ mov r1, #0
+ bl FUN_020200A0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xa
+ blt _021D9DCE
+ mov r0, #0xf2
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r6, r0]
+ add r0, r0, #3
+ strb r1, [r6, r0]
+ add r0, r6, #0
+ bl MOD55_021D7EE4
+ add r0, r6, #0
+ bl MOD55_021D8044
+ mov r0, #0x3b
+ mov r1, #1
+ lsl r0, r0, #4
+ str r1, [r6, r0]
+ ldr r0, [sp, #0x10]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD55_021D9D88
+
+ thumb_func_start MOD55_021D9E04
+MOD55_021D9E04: ; 0x021D9E04
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x34
+ add r4, r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0x10
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0x3b
+ mov r1, #0x18
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD55_021D9E04
+
+ thumb_func_start MOD55_021D9E34
+MOD55_021D9E34: ; 0x021D9E34
+ ldr r3, _021D9E3C ; =0x0201C78D
+ ldrh r0, [r0]
+ bx r3
+ nop
+_021D9E3C: .word 0x0201C78D
+ thumb_func_end MOD55_021D9E34
+
+ thumb_func_start MOD55_021D9E40
+MOD55_021D9E40: ; 0x021D9E40
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ add r6, r1, #0
+ bl FUN_020286EC
+ add r5, r0, #0
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9EBE
+ mov r0, #0
+ bl MOD55_021DA27C
+ add r0, r4, #0
+ bl MOD55_021D778C
+ ldr r0, [r4, #8]
+ bl LoadPlayerDataAddress
+ mov r1, #7
+ str r0, [sp]
+ mov r0, #0x34
+ mov r2, #0
+ add r3, r1, #0
+ bl FUN_02077A84
+ str r0, [r4]
+ ldr r0, _021D9EC4 ; =0x020FA5FC
+ ldr r1, [r4]
+ mov r2, #0x34
+ bl FUN_02006234
+ mov r1, #0x3d
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r1, #0
+ mov r2, #0x19
+ sub r0, #0x20
+ str r2, [r4, r0]
+ sub r1, #8
+ ldrb r1, [r4, r1]
+ add r0, r5, #0
+ add r1, r4, r1
+ ldrb r1, [r1, #0x18]
+ sub r1, r1, #1
+ bl FUN_020283A4
+ add r5, r0, #0
+ bl MOD55_021D9E34
+ cmp r0, #0
+ ldr r0, [r4]
+ bne _021D9EB8
+ ldr r0, [r0, #0x18]
+ add r1, r5, #0
+ bl FUN_02021E28
+ b _021D9EBE
+_021D9EB8:
+ ldr r0, [r0, #0x18]
+ bl FUN_02021A4C
+_021D9EBE:
+ add r0, r6, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D9EC4: .word 0x020FA5FC
+ thumb_func_end MOD55_021D9E40
+
+ thumb_func_start MOD55_021D9EC8
+MOD55_021D9EC8: ; 0x021D9EC8
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0x3d
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl FUN_02006290
+ cmp r0, #0
+ beq _021D9F68
+ mov r0, #0x3d
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02006260
+ ldr r1, [r5]
+ ldr r0, [r1, #0x14]
+ cmp r0, #0
+ bne _021D9F18
+ add r0, r5, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ ldr r1, [r1, #0x18]
+ bl FUN_02021A74
+ ldr r0, [r5, #8]
+ bl FUN_020286EC
+ mov r1, #0xf2
+ lsl r1, r1, #2
+ ldrb r1, [r5, r1]
+ add r2, r5, #0
+ add r2, #0xd4
+ add r1, r5, r1
+ ldrb r1, [r1, #0x18]
+ ldr r2, [r2]
+ sub r1, r1, #1
+ bl FUN_020283C0
+_021D9F18:
+ ldr r0, [r5]
+ bl FUN_02077AC4
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ bl MOD55_021DA27C
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x34
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0x11
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add r0, r5, #0
+ bl MOD55_021D7504
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD55_021D8A7C
+ mov r0, #1
+ bl MOD55_021DA27C
+ mov r0, #0x3b
+ mov r1, #0x1a
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021D9F68:
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD55_021D9EC8
+
+ thumb_func_start MOD55_021D9F70
+MOD55_021D9F70: ; 0x021D9F70
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9F86
+ mov r0, #0x3b
+ mov r1, #3
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021D9F86:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD55_021D9F70
+
+ thumb_func_start MOD55_021D9F8C
+MOD55_021D9F8C: ; 0x021D9F8C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x34
+ add r6, r1, #0
+ bl FUN_02023928
+ add r4, r0, #0
+ ldr r0, [r5, #8]
+ bl FUN_020286EC
+ mov r1, #0xf2
+ lsl r1, r1, #2
+ ldrb r1, [r5, r1]
+ add r1, r5, r1
+ ldrb r1, [r1, #0x18]
+ sub r1, r1, #1
+ bl FUN_020283A4
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0202395C
+ ldr r0, [r5, #0xc]
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_0200ABC0
+ add r0, r5, #0
+ mov r1, #0x1c
+ bl MOD55_021DA0A4
+ add r0, r4, #0
+ bl FUN_02016A18
+ mov r0, #0x3b
+ mov r1, #0x1c
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD55_021D9F8C
+
+ thumb_func_start MOD55_021D9FDC
+MOD55_021D9FDC: ; 0x021D9FDC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021DA010
+ mov r0, #0x34
+ str r0, [sp]
+ ldr r0, [r5, #4]
+ ldr r1, _021DA014 ; =0x021DA2AC
+ ldr r2, _021DA018 ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ add r1, r5, #0
+ add r1, #0xe8
+ str r0, [r1]
+ mov r0, #0x3b
+ mov r1, #0x1d
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_021DA010:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DA014: .word 0x021DA2AC
+_021DA018: .word 0x000001D9
+ thumb_func_end MOD55_021D9FDC
+
+ thumb_func_start MOD55_021DA01C
+MOD55_021DA01C: ; 0x021DA01C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r0, #0xe8
+ add r4, r1, #0
+ ldr r0, [r0]
+ mov r1, #0x34
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _021DA038
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_021DA038:
+ cmp r0, #0
+ bne _021DA056
+ ldr r0, [r5, #8]
+ bl FUN_020286EC
+ mov r1, #0xf2
+ lsl r1, r1, #2
+ ldrb r1, [r5, r1]
+ add r1, r5, r1
+ ldrb r1, [r1, #0x18]
+ sub r1, r1, #1
+ bl FUN_02028468
+ mov r1, #2
+ b _021DA070
+_021DA056:
+ mov r0, #0x2b
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0xad
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r1, #3
+_021DA070:
+ mov r0, #0x3b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD55_021DA214
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD55_021DA01C
+
+ thumb_func_start MOD55_021DA080
+MOD55_021DA080: ; 0x021DA080
+ push {lr}
+ sub sp, #0xc
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x34
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0x10
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #2
+ add sp, #0xc
+ pop {pc}
+ .align 2, 0
+ thumb_func_end MOD55_021DA080
+
+ thumb_func_start MOD55_021DA0A4
+MOD55_021DA0A4: ; 0x021DA0A4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ add r6, r1, #0
+ bl LoadPlayerDataAddress
+ bl FUN_02024FF4
+ add r4, r0, #0
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021DA0D0
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_021DA0D0:
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _021DA154 ; =0x0000012D
+ mov r1, #0xce
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ mov r2, #2
+ ldr r0, [r5, #4]
+ add r1, r5, r1
+ add r3, r2, #0
+ bl FUN_02019064
+ add r2, r5, #0
+ add r2, #0xb8
+ ldr r0, [r5, #0x10]
+ ldr r2, [r2]
+ add r1, r6, #0
+ bl FUN_0200A8E0
+ add r1, r5, #0
+ add r2, r5, #0
+ add r1, #0xbc
+ add r2, #0xb8
+ ldr r0, [r5, #0xc]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl FUN_0200B7B8
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0xce
+ lsl r0, r0, #2
+ ldr r2, _021DA158 ; =0x000001E2
+ add r0, r5, r0
+ mov r1, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ mov r3, #0
+ str r3, [sp]
+ str r4, [sp, #4]
+ add r2, r5, #0
+ mov r0, #0xce
+ lsl r0, r0, #2
+ str r3, [sp, #8]
+ add r2, #0xbc
+ ldr r2, [r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ add r5, #0xe4
+ str r0, [r5]
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021DA154: .word 0x0000012D
+_021DA158: .word 0x000001E2
+ thumb_func_end MOD55_021DA0A4
+
+ thumb_func_start MOD55_021DA15C
+MOD55_021DA15C: ; 0x021DA15C
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r5, r0
+ add r4, r1, #0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _021DA17C
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_021DA17C:
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _021DA20C ; =0x0000012D
+ mov r1, #0xce
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ mov r2, #2
+ ldr r0, [r5, #4]
+ add r1, r5, r1
+ add r3, r2, #0
+ bl FUN_02019064
+ add r2, r5, #0
+ add r2, #0xb8
+ ldr r0, [r5, #0x10]
+ ldr r2, [r2]
+ add r1, r4, #0
+ bl FUN_0200A8E0
+ add r1, r5, #0
+ add r2, r5, #0
+ add r1, #0xbc
+ add r2, #0xb8
+ ldr r0, [r5, #0xc]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ bl FUN_0200B7B8
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0xce
+ lsl r0, r0, #2
+ ldr r2, _021DA210 ; =0x000001E2
+ add r0, r5, r0
+ mov r1, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ mov r3, #0
+ add r2, r5, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ mov r0, #0xce
+ lsl r0, r0, #2
+ str r3, [sp, #8]
+ add r2, #0xbc
+ ldr r2, [r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ add r1, r5, #0
+ add r1, #0xe4
+ str r0, [r1]
+ mov r0, #0xce
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_021DA20C: .word 0x0000012D
+_021DA210: .word 0x000001E2
+ thumb_func_end MOD55_021DA15C
+
+ thumb_func_start MOD55_021DA214
+MOD55_021DA214: ; 0x021DA214
+ mov r1, #0xce
+ lsl r1, r1, #2
+ add r0, r0, r1
+ ldr r3, _021DA220 ; =0x0200D0E1
+ mov r1, #0
+ bx r3
+ .align 2, 0
+_021DA220: .word 0x0200D0E1
+ thumb_func_end MOD55_021DA214
+
+ thumb_func_start MOD55_021DA224
+MOD55_021DA224: ; 0x021DA224
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ cmp r5, #0
+ beq _021DA276
+ bl FUN_020286EC
+ bl FUN_02028228
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_020973B4
+ cmp r0, #0
+ bne _021DA24C
+ mov r0, #0
+ mvn r0, r0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA24C:
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ add r3, sp, #0
+ bl FUN_02033918
+ cmp r0, #0
+ bne _021DA262
+ mov r0, #1
+ mvn r0, r0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DA262:
+ add r0, r5, #0
+ bl FUN_020286EC
+ add r1, r7, #0
+ bl FUN_0202838C
+ add r1, r4, #0
+ add r2, r6, #0
+ bl FUN_02096D2C
+_021DA276:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD55_021DA224
+
+ thumb_func_start MOD55_021DA27C
+MOD55_021DA27C: ; 0x021DA27C
+ push {r4, lr}
+ add r4, r0, #0
+ lsl r1, r4, #0x18
+ mov r0, #0xf
+ lsr r1, r1, #0x18
+ bl FUN_0201E6E4
+ lsl r1, r4, #0x18
+ mov r0, #1
+ lsr r1, r1, #0x18
+ bl FUN_0201E74C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD55_021DA27C
+
+ .section .rodata
+ ; 0x021DA298
+ .incbin "baserom.nds", 0x2A15B8, 0x1E8
+
+ .section .data
+ ; 0x021DA4A0
+ .incbin "baserom.nds", 0x2A17C0, 0x80
diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s
new file mode 100644
index 00000000..4ab4e3a4
--- /dev/null
+++ b/arm9/modules/56/asm/module_56.s
@@ -0,0 +1,8689 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD56_02211E60
+MOD56_02211E60: ; 0x02211E60
+ sub r0, #9
+ cmp r0, #5
+ bhi _02211E82
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02211E72: ; jump table
+ .short _02211E7E - _02211E72 - 2 ; case 0
+ .short _02211E7E - _02211E72 - 2 ; case 1
+ .short _02211E7E - _02211E72 - 2 ; case 2
+ .short _02211E7E - _02211E72 - 2 ; case 3
+ .short _02211E7E - _02211E72 - 2 ; case 4
+ .short _02211E7E - _02211E72 - 2 ; case 5
+_02211E7E:
+ mov r0, #1
+ bx lr
+_02211E82:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD56_02211E60
+
+ thumb_func_start MOD56_02211E88
+MOD56_02211E88: ; 0x02211E88
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD56_02211E60
+ cmp r0, #0
+ beq _02211E98
+ mov r0, #1
+ pop {r4, pc}
+_02211E98:
+ cmp r4, #0xf
+ bne _02211EA0
+ mov r0, #1
+ pop {r4, pc}
+_02211EA0:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD56_02211E88
+
+ thumb_func_start MOD56_02211EA4
+MOD56_02211EA4: ; 0x02211EA4
+ cmp r0, #7
+ bhi _02211EC8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02211EB4: ; jump table
+ .short _02211EC8 - _02211EB4 - 2 ; case 0
+ .short _02211EC8 - _02211EB4 - 2 ; case 1
+ .short _02211EC4 - _02211EB4 - 2 ; case 2
+ .short _02211EC4 - _02211EB4 - 2 ; case 3
+ .short _02211EC4 - _02211EB4 - 2 ; case 4
+ .short _02211EC4 - _02211EB4 - 2 ; case 5
+ .short _02211EC4 - _02211EB4 - 2 ; case 6
+ .short _02211EC4 - _02211EB4 - 2 ; case 7
+_02211EC4:
+ mov r0, #1
+ bx lr
+_02211EC8:
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD56_02211EA4
+
+ thumb_func_start MOD56_02211ECC
+MOD56_02211ECC: ; 0x02211ECC
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD56_02211EA4
+ cmp r0, #0
+ beq _02211EDC
+ mov r0, #1
+ pop {r4, pc}
+_02211EDC:
+ cmp r4, #1
+ beq _02211EE4
+ cmp r4, #8
+ bne _02211EE8
+_02211EE4:
+ mov r0, #1
+ pop {r4, pc}
+_02211EE8:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD56_02211ECC
+
+ thumb_func_start MOD56_02211EEC
+MOD56_02211EEC: ; 0x02211EEC
+ sub r0, #0xc
+ cmp r0, #3
+ bhi _02211F0A
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02211EFE: ; jump table
+ .short _02211F06 - _02211EFE - 2 ; case 0
+ .short _02211F06 - _02211EFE - 2 ; case 1
+ .short _02211F06 - _02211EFE - 2 ; case 2
+ .short _02211F06 - _02211EFE - 2 ; case 3
+_02211F06:
+ mov r0, #1
+ bx lr
+_02211F0A:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD56_02211EEC
+
+ thumb_func_start MOD56_02211F10
+MOD56_02211F10: ; 0x02211F10
+ mov r1, #0x11
+ cmp r0, #0x10
+ bhi _02211F82
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02211F22: ; jump table
+ .short _02211F82 - _02211F22 - 2 ; case 0
+ .short _02211F80 - _02211F22 - 2 ; case 1
+ .short _02211F68 - _02211F22 - 2 ; case 2
+ .short _02211F6C - _02211F22 - 2 ; case 3
+ .short _02211F70 - _02211F22 - 2 ; case 4
+ .short _02211F74 - _02211F22 - 2 ; case 5
+ .short _02211F78 - _02211F22 - 2 ; case 6
+ .short _02211F7C - _02211F22 - 2 ; case 7
+ .short _02211F64 - _02211F22 - 2 ; case 8
+ .short _02211F48 - _02211F22 - 2 ; case 9
+ .short _02211F4C - _02211F22 - 2 ; case 10
+ .short _02211F50 - _02211F22 - 2 ; case 11
+ .short _02211F54 - _02211F22 - 2 ; case 12
+ .short _02211F58 - _02211F22 - 2 ; case 13
+ .short _02211F5C - _02211F22 - 2 ; case 14
+ .short _02211F44 - _02211F22 - 2 ; case 15
+ .short _02211F60 - _02211F22 - 2 ; case 16
+_02211F44:
+ mov r1, #8
+ b _02211F82
+_02211F48:
+ mov r1, #2
+ b _02211F82
+_02211F4C:
+ mov r1, #3
+ b _02211F82
+_02211F50:
+ mov r1, #4
+ b _02211F82
+_02211F54:
+ mov r1, #5
+ b _02211F82
+_02211F58:
+ mov r1, #6
+ b _02211F82
+_02211F5C:
+ mov r1, #7
+ b _02211F82
+_02211F60:
+ mov r1, #1
+ b _02211F82
+_02211F64:
+ mov r1, #0xf
+ b _02211F82
+_02211F68:
+ mov r1, #9
+ b _02211F82
+_02211F6C:
+ mov r1, #0xa
+ b _02211F82
+_02211F70:
+ mov r1, #0xb
+ b _02211F82
+_02211F74:
+ mov r1, #0xc
+ b _02211F82
+_02211F78:
+ mov r1, #0xd
+ b _02211F82
+_02211F7C:
+ mov r1, #0xe
+ b _02211F82
+_02211F80:
+ mov r1, #0x10
+_02211F82:
+ add r0, r1, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD56_02211F10
+
+ thumb_func_start MOD56_02211F88
+MOD56_02211F88: ; 0x02211F88
+ push {r3, r4, r5, r6, r7, lr}
+ add r0, #0xc4
+ ldr r0, [r0]
+ bl FUN_0206BB1C
+ str r0, [sp]
+ bl FUN_0206B9AC
+ mov r5, #0
+ add r7, r0, #0
+ add r4, r5, #0
+ cmp r7, #0
+ ble _02211FCE
+_02211FA2:
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl FUN_0206B9B0
+ mov r1, #0xa2
+ mov r2, #0
+ add r6, r0, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ beq _02211FC8
+ add r0, r6, #0
+ mov r1, #0x4c
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ bne _02211FC8
+ add r5, r5, #1
+_02211FC8:
+ add r4, r4, #1
+ cmp r4, r7
+ blt _02211FA2
+_02211FCE:
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02211F88
+
+ thumb_func_start MOD56_02211FD4
+MOD56_02211FD4: ; 0x02211FD4
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _02212074 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _02212078 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ mov r0, #0x36
+ bl FUN_02016B94
+ add r1, r4, #0
+ add r1, #0xc0
+ str r0, [r1]
+ mov r0, #0x36
+ bl FUN_0200AA80
+ add r1, r4, #0
+ add r1, #0xc8
+ str r0, [r1]
+ mov r2, #0x25
+ mov r0, #0
+ mov r1, #0x1a
+ lsl r2, r2, #4
+ mov r3, #0x36
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r1, #0xcc
+ str r0, [r1]
+ ldr r2, _0221207C ; =0x00000265
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x36
+ bl FUN_0200A86C
+ add r1, r4, #0
+ add r1, #0xd0
+ str r0, [r1]
+ bl MOD56_022122B4
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ bl MOD56_022122D4
+ add r0, r4, #0
+ bl MOD56_0221257C
+ ldr r0, _02212080 ; =MOD56_0221228C
+ add r1, r4, #0
+ bl FUN_02015F10
+ bl MOD56_0221269C
+ add r0, r4, #0
+ bl MOD56_022126E0
+ add r0, r4, #0
+ bl MOD56_022127D4
+ pop {r4, pc}
+ .align 2, 0
+_02212074: .word 0xFFFFE0FF
+_02212078: .word 0x04001000
+_0221207C: .word 0x00000265
+_02212080: .word MOD56_0221228C
+ thumb_func_end MOD56_02211FD4
+
+ thumb_func_start MOD56_02212084
+MOD56_02212084: ; 0x02212084
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #0
+ beq _02212098
+ cmp r1, #1
+ beq _0221214E
+ b _0221215C
+_02212098:
+ bl FUN_0200628C
+ add r6, r0, #0
+ ldr r0, [r6, #4]
+ cmp r0, #1
+ bne _022120B2
+ mov r2, #7
+ mov r0, #3
+ mov r1, #0x36
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ b _022120BE
+_022120B2:
+ mov r2, #0xb
+ mov r0, #3
+ mov r1, #0x36
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+_022120BE:
+ mov r1, #0x3f
+ add r0, r4, #0
+ lsl r1, r1, #4
+ mov r2, #0x36
+ bl FUN_02006268
+ mov r2, #0x3f
+ mov r1, #0
+ lsl r2, r2, #4
+ add r4, r0, #0
+ bl MI_CpuFill8
+ mov r0, #0x5e
+ mov r1, #8
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r4, #0
+ ldr r1, [r6]
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ bl FUN_020286EC
+ str r0, [r4]
+ mov r1, #0xef
+ ldr r0, [r6, #4]
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r1, #0
+ mov r2, #8
+ sub r0, #8
+ str r2, [r4, r0]
+ sub r2, #9
+ add r1, #0x1c
+ str r2, [r4, r1]
+ mov r0, #0xf
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #0xf
+ mov r1, #0
+ bl FUN_0201E74C
+ add r0, r4, #0
+ bl MOD56_0221244C
+ add r0, r4, #0
+ bl MOD56_02211FD4
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x36
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ bl FUN_02033590
+ cmp r0, #0
+ bne _02212146
+ bl FUN_02088858
+_02212146:
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _0221215C
+_0221214E:
+ bl FUN_02006278
+ mov r0, #0
+ str r0, [r5]
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_0221215C:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02212084
+
+ thumb_func_start MOD56_02212164
+MOD56_02212164: ; 0x02212164
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ bl FUN_02006278
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #0
+ beq _0221217E
+ cmp r1, #1
+ beq _0221218C
+ cmp r1, #2
+ beq _022121A2
+ b _022121AE
+_0221217E:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _022121AE
+ mov r0, #1
+ str r0, [r5]
+ b _022121AE
+_0221218C:
+ mov r2, #0x3b
+ lsl r2, r2, #4
+ ldr r2, [r4, r2]
+ lsl r3, r2, #2
+ ldr r2, _022121C0 ; =0x022164E0
+ ldr r2, [r2, r3]
+ cmp r2, #0
+ beq _022121AE
+ blx r2
+ str r0, [r5]
+ b _022121AE
+_022121A2:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _022121AE
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022121AE:
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _022121BC
+ bl FUN_0201FDEC
+_022121BC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022121C0: .word 0x022164E0
+ thumb_func_end MOD56_02212164
+
+ thumb_func_start MOD56_022121C4
+MOD56_022121C4: ; 0x022121C4
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0xb
+ lsl r0, r0, #6
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r7, #0x2b
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #4
+_022121EC:
+ ldr r0, [r5, r7]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _022121EC
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ add r0, r6, #0
+ bl MOD56_0221295C
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ bl MOD56_02212540
+ add r0, r6, #0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl FUN_0200A8B8
+ add r0, r6, #0
+ add r0, #0xcc
+ ldr r0, [r0]
+ bl FUN_0200A8B8
+ add r6, #0xc8
+ ldr r0, [r6]
+ bl FUN_0200AB18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD56_022121C4
+
+ thumb_func_start MOD56_02212240
+MOD56_02212240: ; 0x02212240
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ bl MOD56_022121C4
+ add r0, r5, #0
+ bl FUN_0200628C
+ add r6, r0, #0
+ mov r0, #0xed
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ str r1, [r6, #4]
+ ldr r0, [r4, r0]
+ cmp r0, #8
+ beq _02212268
+ cmp r0, #0xa
+ bne _0221226E
+_02212268:
+ bl FUN_02088868
+ b _02212274
+_0221226E:
+ bl MOD04_021D853C
+ str r0, [r6, #8]
+_02212274:
+ add r0, r4, #0
+ bl MOD56_022124E4
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0x36
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02212240
+
+ thumb_func_start MOD56_0221228C
+MOD56_0221228C: ; 0x0221228C
+ push {r3, lr}
+ add r0, #0xc0
+ ldr r0, [r0]
+ bl FUN_0201AB60
+ bl FUN_0201C30C
+ bl FUN_02009F80
+ ldr r3, _022122AC ; =0x027E0000
+ ldr r1, _022122B0 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r3, pc}
+ .align 2, 0
+_022122AC: .word 0x027E0000
+_022122B0: .word 0x00003FF8
+ thumb_func_end MOD56_0221228C
+
+ thumb_func_start MOD56_022122B4
+MOD56_022122B4: ; 0x022122B4
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _022122D0 ; =0x02216454
+ add r3, sp, #0
+ mov r2, #5
+_022122BE:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _022122BE
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_022122D0: .word 0x02216454
+ thumb_func_end MOD56_022122B4
+
+ thumb_func_start MOD56_022122D4
+MOD56_022122D4: ; 0x022122D4
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ ldr r5, _0221242C ; =0x02216330
+ add r3, sp, #0x8c
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _02212430 ; =0x02216368
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_02016C18
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x36
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02018744
+ ldr r5, _02212434 ; =0x02216384
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x36
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ ldr r5, _02212438 ; =0x022163A0
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x36
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _0221243C ; =0x022163BC
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x36
+ bl FUN_02017F18
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02018744
+ ldr r5, _02212440 ; =0x022163D8
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02018744
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x36
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x36
+ bl FUN_02017F18
+ mov r0, #0
+ mov r1, #3
+ bl FUN_020178BC
+ mov r0, #1
+ mov r1, #2
+ bl FUN_020178BC
+ mov r0, #3
+ mov r1, #1
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #0
+ bl FUN_020178BC
+ ldr r0, _02212444 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r0, _02212448 ; =0x04001050
+ strh r1, [r0]
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ .align 2, 0
+_0221242C: .word 0x02216330
+_02212430: .word 0x02216368
+_02212434: .word 0x02216384
+_02212438: .word 0x022163A0
+_0221243C: .word 0x022163BC
+_02212440: .word 0x022163D8
+_02212444: .word 0x04000050
+_02212448: .word 0x04001050
+ thumb_func_end MOD56_022122D4
+
+ thumb_func_start MOD56_0221244C
+MOD56_0221244C: ; 0x0221244C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+ mov r7, #8
+_02212456:
+ add r0, r7, #0
+ mov r1, #0x36
+ bl FUN_020219F4
+ add r1, r5, #0
+ add r1, #0xd4
+ str r0, [r1]
+ ldr r0, [r6]
+ add r1, r4, #0
+ bl FUN_020283A4
+ add r1, r0, #0
+ add r0, r5, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ bl FUN_02021E28
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x20
+ blt _02212456
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ mov r1, #0x36
+ bl FUN_020219F4
+ mov r1, #0x57
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ add r1, #0x20
+ add r0, r1, #0
+ mov r1, #0x36
+ bl FUN_020219F4
+ mov r1, #0x5d
+ lsl r1, r1, #2
+ add r7, r1, #0
+ str r0, [r6, r1]
+ mov r5, #0
+ add r4, r6, #0
+ sub r7, #0x10
+_022124A8:
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ mov r1, #0x36
+ bl FUN_020219F4
+ str r0, [r4, r7]
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #4
+ blt _022124A8
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ mov r1, #0x36
+ bl FUN_020219F4
+ mov r1, #0x56
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ mov r0, #0xb4
+ mov r1, #0x36
+ bl FUN_020219F4
+ mov r1, #0x16
+ lsl r1, r1, #4
+ str r0, [r6, r1]
+ mov r0, #0x3b
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r6, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD56_0221244C
+
+ thumb_func_start MOD56_022124E4
+MOD56_022124E4: ; 0x022124E4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r4, #0
+ add r5, r7, #0
+_022124EC:
+ add r0, r5, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ bl FUN_02021A20
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0x20
+ blt _022124EC
+ mov r0, #0x16
+ lsl r0, r0, #4
+ ldr r0, [r7, r0]
+ bl FUN_02021A20
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ bl FUN_02021A20
+ mov r0, #0x5d
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ bl FUN_02021A20
+ mov r6, #0x59
+ mov r5, #0
+ add r4, r7, #0
+ lsl r6, r6, #2
+_02212524:
+ ldr r0, [r4, r6]
+ bl FUN_02021A20
+ add r5, r5, #1
+ add r4, r4, #4
+ cmp r5, #4
+ blt _02212524
+ mov r0, #0x56
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ bl FUN_02021A20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD56_022124E4
+
+ thumb_func_start MOD56_02212540
+MOD56_02212540: ; 0x02212540
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #5
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02212540
+
+ thumb_func_start MOD56_0221257C
+MOD56_0221257C: ; 0x0221257C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r0, #0xc0
+ ldr r4, [r0]
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E74C
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x36
+ str r0, [sp, #4]
+ mov r0, #0x5c
+ mov r1, #3
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x36
+ str r0, [sp, #4]
+ mov r0, #0x5c
+ mov r1, #3
+ mov r2, #4
+ bl FUN_02006930
+ mov r1, #0x1a
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x36
+ bl FUN_02002EEC
+ mov r1, #6
+ mov r0, #0
+ lsl r1, r1, #6
+ mov r2, #0x36
+ bl FUN_02002EEC
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x36
+ str r0, [sp, #0xc]
+ mov r0, #0x5c
+ mov r1, #2
+ add r2, r4, #0
+ bl FUN_0200687C
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x36
+ str r0, [sp, #0xc]
+ mov r0, #0x5c
+ mov r1, #4
+ add r2, r4, #0
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x36
+ str r0, [sp, #0xc]
+ mov r0, #0x5c
+ mov r1, #9
+ add r2, r4, #0
+ mov r3, #4
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x36
+ str r0, [sp, #0xc]
+ mov r0, #0x5c
+ mov r1, #0xa
+ add r2, r4, #0
+ mov r3, #4
+ bl FUN_020068C8
+ add r5, #0xc4
+ ldr r0, [r5]
+ bl LoadPlayerDataAddress
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x36
+ str r0, [sp, #4]
+ ldr r2, _02212694 ; =0x000001E2
+ add r0, r4, #0
+ mov r1, #2
+ mov r3, #0xa
+ bl FUN_0200CD68
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x36
+ str r0, [sp, #4]
+ ldr r2, _02212698 ; =0x000001D9
+ add r0, r4, #0
+ mov r1, #2
+ mov r3, #0xb
+ bl FUN_0200CB00
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x36
+ str r0, [sp, #4]
+ ldr r2, _02212698 ; =0x000001D9
+ add r0, r4, #0
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CB00
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02212694: .word 0x000001E2
+_02212698: .word 0x000001D9
+ thumb_func_end MOD56_0221257C
+
+ thumb_func_start MOD56_0221269C
+MOD56_0221269C: ; 0x0221269C
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _022126D8 ; =0x02216340
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_0201D040
+ mov r0, #0x14
+ mov r1, #0x36
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ ldr r1, _022126DC ; =0x00100010
+ mov r0, #1
+ bl FUN_02008D44
+ mov r0, #1
+ bl FUN_02008DDC
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_022126D8: .word 0x02216340
+_022126DC: .word 0x00100010
+ thumb_func_end MOD56_0221269C
+
+ thumb_func_start MOD56_022126E0
+MOD56_022126E0: ; 0x022126E0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x7e
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x36
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ mov r1, #0x62
+ lsl r1, r1, #2
+ mov r0, #0x1e
+ add r1, r6, r1
+ mov r2, #0x36
+ bl FUN_02008C9C
+ mov r1, #0x61
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ add r0, r1, #4
+ mov r2, #1
+ add r0, r6, r0
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ mov r7, #0x2b
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #4
+_0221272C:
+ mov r0, #2
+ add r1, r4, #0
+ mov r2, #0x36
+ bl FUN_02008DEC
+ str r0, [r5, r7]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _0221272C
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x36
+ str r0, [sp, #8]
+ mov r0, #0x2b
+ lsl r0, r0, #4
+ ldr r0, [r6, r0]
+ mov r1, #0x5c
+ mov r2, #7
+ bl FUN_02008F34
+ mov r1, #0xb
+ lsl r1, r1, #6
+ str r0, [r6, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #7
+ str r0, [sp, #8]
+ mov r0, #0x36
+ sub r1, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r6, r1]
+ mov r1, #0x5c
+ mov r2, #8
+ bl FUN_02008FEC
+ mov r1, #0xb1
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x36
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r6, r1]
+ mov r1, #0x5c
+ mov r2, #1
+ bl FUN_020090AC
+ mov r1, #0xb2
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x36
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r6, r1]
+ mov r1, #0x5c
+ add r3, r2, #0
+ bl FUN_020090AC
+ mov r1, #0xb3
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ sub r1, #0xc
+ ldr r0, [r6, r1]
+ bl FUN_02009A50
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009CF0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD56_022126E0
+
+ thumb_func_start MOD56_022127D4
+MOD56_022127D4: ; 0x022127D4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x5c
+ mov r1, #0
+ add r5, r0, #0
+ str r1, [sp]
+ sub r0, r1, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r2, #0x2b
+ str r1, [sp, #0x10]
+ lsl r2, r2, #4
+ ldr r0, [r5, r2]
+ add r3, r1, #0
+ str r0, [sp, #0x14]
+ add r0, r2, #4
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x18]
+ add r0, r2, #0
+ add r0, #8
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x1c]
+ add r0, r2, #0
+ add r0, #0xc
+ ldr r0, [r5, r0]
+ add r2, #0x30
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ add r0, r5, r2
+ add r2, r1, #0
+ str r1, [sp, #0x28]
+ bl FUN_02008AA4
+ mov r0, #0x61
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r4, #0
+ str r0, [sp, #0x2c]
+ mov r0, #0x2e
+ lsl r0, r0, #4
+ add r0, r5, r0
+ str r0, [sp, #0x30]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ mov r7, #6
+ str r4, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ add r0, sp, #0x2c
+ strh r4, [r0, #0x20]
+ mov r0, #1
+ str r0, [sp, #0x50]
+ str r0, [sp, #0x54]
+ mov r0, #0x36
+ str r0, [sp, #0x58]
+ mov r6, #0x20
+ lsl r7, r7, #0xe
+_02212848:
+ mov r0, #1
+ lsl r1, r6, #0xc
+ lsl r0, r0, #0x14
+ add r0, r1, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ str r7, [sp, #0x34]
+ bl FUN_0201FE94
+ mov r1, #0xca
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0xca
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_02020130
+ mov r0, #0xca
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #2
+ bl FUN_02020238
+ mov r0, #0xca
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r4, r4, #1
+ add r6, #0x20
+ add r5, r5, #4
+ cmp r4, #5
+ blt _02212848
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ add sp, #0x5c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD56_022127D4
+
+ thumb_func_start MOD56_022128A4
+MOD56_022128A4: ; 0x022128A4
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _022128CE
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+_022128CE:
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x16
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _02212954 ; =0x000001CA
+ mov r1, #0xd7
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xc0
+ lsl r1, r1, #2
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #3
+ mov r3, #5
+ bl FUN_02019064
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ mov r2, #0x16
+ add r0, #0xcc
+ lsl r2, r2, #4
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x11
+ bl FUN_0200A8E0
+ mov r1, #0x16
+ lsl r1, r1, #4
+ ldr r1, [r4, r1]
+ mov r0, #1
+ mov r2, #0
+ mov r3, #0xb0
+ bl FUN_02002F40
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02212958 ; =0x000F0E00
+ add r2, #0x61
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ ldr r2, [r4, r2]
+ add r0, r4, r0
+ mov r1, #1
+ bl FUN_0201BDE0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_02212954: .word 0x000001CA
+_02212958: .word 0x000F0E00
+ thumb_func_end MOD56_022128A4
+
+ thumb_func_start MOD56_0221295C
+MOD56_0221295C: ; 0x0221295C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02212978
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+_02212978:
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02212990
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+_02212990:
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _022129A8
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+_022129A8:
+ mov r0, #0xd3
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _022129C0
+ mov r0, #0xd3
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+_022129C0:
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _022129D8
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+_022129D8:
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _022129EA
+ mov r1, #0
+ add r2, r1, #0
+ bl FUN_02001300
+_022129EA:
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02212A00
+ bl FUN_02012870
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb0
+ str r1, [r0]
+_02212A00:
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02212A18
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+_02212A18:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD56_0221295C
+
+ thumb_func_start MOD56_02212A1C
+MOD56_02212A1C: ; 0x02212A1C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r1, _02212B30 ; =0x00000497
+ mov r0, #0xb
+ mov r2, #1
+ bl FUN_0200433C
+ bl FUN_02033590
+ cmp r0, #0
+ beq _02212A9A
+ bl FUN_02033E74
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ bl FUN_020334DC
+ add r1, r0, #0
+ str r0, [r5, #4]
+ add r1, #0x22
+ ldrb r1, [r1]
+ add r0, #0x21
+ strb r1, [r0]
+ ldr r0, [r5, #4]
+ ldrb r0, [r0, #0x1b]
+ cmp r0, #8
+ bne _02212A80
+ bl FUN_02033208
+ bl FUN_020334DC
+ add r1, r0, #0
+ str r0, [r5, #4]
+ add r1, #0x22
+ ldrb r1, [r1]
+ add r0, #0x21
+ strb r1, [r0]
+ mov r0, #0xf1
+ mov r1, #0x14
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0x40
+ sub r0, #0x14
+ str r1, [r5, r0]
+ b _02212B2C
+_02212A80:
+ add r0, r5, #0
+ mov r1, #0x2b
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x10
+ bl FUN_02031588
+ mov r0, #0x3b
+ mov r1, #0x3c
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02212B2C
+_02212A9A:
+ add r0, r5, #0
+ bl MOD56_022128A4
+ ldr r0, [r5]
+ bl FUN_02028228
+ bl FUN_02096F80
+ cmp r0, #0
+ bne _02212AFA
+ mov r0, #0
+ mov r1, #3
+ bl FUN_020178BC
+ mov r0, #3
+ mov r1, #2
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #1
+ bl FUN_020178BC
+ mov r0, #1
+ mov r1, #0
+ bl FUN_020178BC
+ add r0, r5, #0
+ mov r1, #0x11
+ bl MOD56_02215FF4
+ mov r0, #0x36
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, _02212B34 ; =0x02216310
+ ldr r2, _02212B38 ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x3b
+ mov r1, #6
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02212B2C
+_02212AFA:
+ ldr r0, [r5]
+ bl FUN_02028228
+ bl FUN_02096F18
+ cmp r0, #0
+ bne _02212B1A
+ add r0, r5, #0
+ mov r1, #0x13
+ bl MOD56_02215FF4
+ mov r0, #0x3b
+ mov r1, #3
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02212B2C
+_02212B1A:
+ add r0, r5, #0
+ mov r1, #0x10
+ mov r2, #1
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #1
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02212B2C:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02212B30: .word 0x00000497
+_02212B34: .word 0x02216310
+_02212B38: .word 0x000001D9
+ thumb_func_end MOD56_02212A1C
+
+ thumb_func_start MOD56_02212B3C
+MOD56_02212B3C: ; 0x02212B3C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02212B76
+ mov r0, #0x36
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, _02212B7C ; =0x022162F8
+ ldr r2, _02212B80 ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x3b
+ mov r1, #2
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02212B76:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02212B7C: .word 0x022162F8
+_02212B80: .word 0x000001D9
+ thumb_func_end MOD56_02212B3C
+
+ thumb_func_start MOD56_02212B84
+MOD56_02212B84: ; 0x02212B84
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _02212BA2
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_02212BA2:
+ cmp r0, #0
+ bne _02212BD4
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ ldr r1, _02212BE0 ; =0x000004A4
+ bl FUN_0203346C
+ str r0, [r5, #4]
+ add r0, r5, #0
+ mov r1, #0x16
+ mov r2, #1
+ bl MOD56_02215EA4
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ ldr r1, _02212BE4 ; =0x000001E2
+ add r0, r5, r0
+ bl FUN_0200D858
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r1, #0xe
+ b _02212BD6
+_02212BD4:
+ mov r1, #0x22
+_02212BD6:
+ mov r0, #0x3b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02212BE0: .word 0x000004A4
+_02212BE4: .word 0x000001E2
+ thumb_func_end MOD56_02212B84
+
+ thumb_func_start MOD56_02212BE8
+MOD56_02212BE8: ; 0x02212BE8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, _02212C44 ; =0x021C48B8
+ add r5, r0, #0
+ ldr r2, [r1, #0x48]
+ mov r1, #3
+ tst r1, r2
+ beq _02212C40
+ mov r1, #0x14
+ bl MOD56_02215FF4
+ mov r0, #0
+ mov r1, #3
+ bl FUN_020178BC
+ mov r0, #3
+ mov r1, #2
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #1
+ bl FUN_020178BC
+ mov r0, #1
+ mov r1, #0
+ bl FUN_020178BC
+ mov r0, #0x36
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, _02212C48 ; =0x02216310
+ ldr r2, _02212C4C ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x3b
+ mov r1, #4
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02212C40:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02212C44: .word 0x021C48B8
+_02212C48: .word 0x02216310
+_02212C4C: .word 0x000001D9
+ thumb_func_end MOD56_02212BE8
+
+ thumb_func_start MOD56_02212C50
+MOD56_02212C50: ; 0x02212C50
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021AC
+ add r6, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r6, r0
+ bne _02212C74
+ add sp, #4
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, pc}
+_02212C74:
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+ cmp r6, #0
+ bne _02212CB4
+ add r0, r5, #0
+ mov r1, #0x15
+ bl MOD56_02215FF4
+ mov r0, #0x36
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, _02212CC4 ; =0x02216310
+ ldr r2, _02212CC8 ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r1, #5
+ b _02212CB6
+_02212CB4:
+ mov r1, #0x22
+_02212CB6:
+ mov r0, #0x3b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02212CC4: .word 0x02216310
+_02212CC8: .word 0x000001D9
+ thumb_func_end MOD56_02212C50
+
+ thumb_func_start MOD56_02212CCC
+MOD56_02212CCC: ; 0x02212CCC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021AC
+ add r6, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r6, r0
+ bne _02212CEC
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02212CEC:
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+ cmp r6, #0
+ bne _02212D44
+ ldr r0, [r5]
+ bl FUN_020281E8
+ mov r1, #0x3b
+ mov r0, #0xe
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, #0xf4
+ bl FUN_0203346C
+ str r0, [r5, #4]
+ add r0, r5, #0
+ mov r1, #0x16
+ mov r2, #1
+ bl MOD56_02215EA4
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ ldr r1, _02212D50 ; =0x000001E2
+ add r0, r5, r0
+ bl FUN_0200D858
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r1, #1
+ mov r0, #0x3d
+ b _02212D48
+_02212D44:
+ mov r1, #0x22
+ mov r0, #0x3b
+_02212D48:
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02212D50: .word 0x000001E2
+ thumb_func_end MOD56_02212CCC
+
+ thumb_func_start MOD56_02212D54
+MOD56_02212D54: ; 0x02212D54
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021AC
+ add r6, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r6, r0
+ bne _02212D74
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02212D74:
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+ cmp r6, #0
+ bne _02212DC6
+ mov r1, #0x3b
+ mov r0, #0xe
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, #0xf4
+ bl FUN_0203346C
+ str r0, [r5, #4]
+ add r0, r5, #0
+ mov r1, #0x16
+ mov r2, #1
+ bl MOD56_02215EA4
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ ldr r1, _02212DD4 ; =0x000001E2
+ add r0, r5, r0
+ bl FUN_0200D858
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r1, #1
+ mov r0, #0x3d
+ b _02212DCA
+_02212DC6:
+ mov r1, #0x22
+ mov r0, #0x3b
+_02212DCA:
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02212DD4: .word 0x000001E2
+ thumb_func_end MOD56_02212D54
+
+ thumb_func_start MOD56_02212DD8
+MOD56_02212DD8: ; 0x02212DD8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #0
+ mov r1, #3
+ bl FUN_020178BC
+ mov r0, #1
+ mov r1, #2
+ bl FUN_020178BC
+ mov r0, #3
+ mov r1, #1
+ bl FUN_020178BC
+ mov r0, #2
+ mov r1, #0
+ bl FUN_020178BC
+ mov r0, #0x3b
+ mov r1, #0xf
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02212DD8
+
+ thumb_func_start MOD56_02212E0C
+MOD56_02212E0C: ; 0x02212E0C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ str r1, [sp]
+ bl FUN_020238F4
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ bl FUN_02024DA0
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ bl FUN_0206BB1C
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ bl FUN_02029AFC
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ bl FUN_0206B9AC
+ mov r6, #0
+ str r0, [sp, #4]
+ cmp r0, #0
+ ble _02212E82
+ add r4, r6, #0
+_02212E52:
+ ldr r0, [sp, #0xc]
+ add r1, r6, #0
+ bl FUN_0206B9B0
+ mov r1, #5
+ mov r2, #0
+ add r7, r0, #0
+ bl FUN_020671BC
+ ldr r1, [r5, #4]
+ mov r2, #0
+ strh r0, [r1, r4]
+ add r0, r7, #0
+ mov r1, #6
+ bl FUN_020671BC
+ ldr r1, [r5, #4]
+ add r6, r6, #1
+ add r1, r1, r4
+ strh r0, [r1, #0xc]
+ ldr r0, [sp, #4]
+ add r4, r4, #2
+ cmp r6, r0
+ blt _02212E52
+_02212E82:
+ ldr r0, [sp, #0x14]
+ bl FUN_02023A68
+ ldr r1, [r5, #4]
+ strb r0, [r1, #0x18]
+ ldr r0, [sp, #0x14]
+ bl FUN_02023A70
+ ldr r1, [r5, #4]
+ strb r0, [r1, #0x19]
+ ldr r0, [sp, #0x10]
+ bl FUN_02024CA4
+ ldr r1, [r5, #4]
+ strb r0, [r1, #0x1a]
+ ldr r1, [r5, #4]
+ ldr r0, [sp]
+ strb r0, [r1, #0x1b]
+ ldr r0, [r5, #4]
+ mov r1, #0
+ strb r1, [r0, #0x1c]
+ ldr r0, [sp, #0x14]
+ bl FUN_02023A28
+ ldr r1, [r5, #4]
+ strb r0, [r1, #0x1d]
+ ldr r0, [sp, #0x14]
+ bl FUN_020239CC
+ ldr r1, [r5, #4]
+ strb r0, [r1, #0x1e]
+ ldr r0, [sp, #8]
+ bl FUN_02029B38
+ ldr r1, [r5, #4]
+ strb r0, [r1, #0x1f]
+ ldr r0, [sp, #8]
+ bl FUN_02029B3C
+ ldr r1, [r5, #4]
+ add r1, #0x20
+ strb r0, [r1]
+ ldr r0, [r5, #4]
+ mov r1, #1
+ add r0, #0x21
+ strb r1, [r0]
+ ldr r0, [r5, #4]
+ add r0, #0x22
+ strb r1, [r0]
+ ldr r0, [r5, #4]
+ mov r1, #0x24
+ bl MOD04_021D8478
+ ldr r0, [r5, #4]
+ mov r1, #0x24
+ add r0, #0x24
+ bl MOD04_021D83D4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02212E0C
+
+ thumb_func_start MOD56_02212EFC
+MOD56_02212EFC: ; 0x02212EFC
+ push {r3, r4, r5, r6, r7, lr}
+ mov r5, #0
+ add r6, r0, #0
+ add r4, r5, #0
+ add r7, r5, #0
+_02212F06:
+ add r0, r6, r4
+ strb r7, [r0, #0xc]
+ add r0, r4, #0
+ bl MOD04_021D8480
+ cmp r0, #0
+ beq _02212F1C
+ add r0, r6, r5
+ add r1, r4, #1
+ strb r1, [r0, #0xc]
+ add r5, r5, #1
+_02212F1C:
+ add r4, r4, #1
+ cmp r4, #0x20
+ blt _02212F06
+ add r0, r5, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02212EFC
+
+ thumb_func_start MOD56_02212F28
+MOD56_02212F28: ; 0x02212F28
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ add r7, r0, #0
+ str r4, [sp]
+ add r5, r4, #0
+ add r6, r7, #0
+_02212F34:
+ ldr r0, [r7, #4]
+ add r0, r0, r5
+ add r0, #0x3f
+ ldrb r1, [r0]
+ ldr r0, [r6, #0x2c]
+ cmp r0, r1
+ beq _02212F6E
+ str r1, [r6, #0x2c]
+ ldr r3, [r7, #4]
+ ldr r0, [r7]
+ add r3, r3, r5
+ add r3, #0x41
+ ldrb r3, [r3]
+ add r1, r4, #0
+ mov r2, #7
+ bl FUN_020282E8
+ ldr r3, [r7, #4]
+ ldr r0, [r7]
+ add r3, r3, r5
+ add r3, #0x42
+ ldrb r3, [r3]
+ add r1, r4, #0
+ mov r2, #8
+ bl FUN_020282E8
+ ldr r0, [sp]
+ add r0, r0, #1
+ str r0, [sp]
+_02212F6E:
+ add r4, r4, #1
+ add r5, #0x24
+ add r6, r6, #4
+ cmp r4, #0x20
+ blt _02212F34
+ ldr r0, [sp]
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD56_02212F28
+
+ thumb_func_start MOD56_02212F7C
+MOD56_02212F7C: ; 0x02212F7C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r5, r1, #0
+ bl FUN_02033180
+ mov r1, #0
+ mvn r1, r1
+ cmp r5, r1
+ beq _02212F98
+ cmp r5, #0xb
+ beq _02212F98
+ cmp r0, r1
+ bne _02212F9E
+_02212F98:
+ mov r6, #0xe
+ mov r5, #0xb
+ b _02212FAC
+_02212F9E:
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _02212FAA
+ mov r6, #0xd
+ mov r5, #0xc
+ b _02212FAC
+_02212FAA:
+ add r6, r5, #0
+_02212FAC:
+ add r0, r4, #0
+ bl MOD56_02216120
+ bl FUN_02033180
+ add r2, r0, #0
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #0
+ mov r3, #5
+ bl FUN_0200AD38
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD56_02215FF4
+ cmp r5, #0xb
+ bhi _02213022
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02212FE6: ; jump table
+ .short _02213022 - _02212FE6 - 2 ; case 0
+ .short _02212FFE - _02212FE6 - 2 ; case 1
+ .short _02213022 - _02212FE6 - 2 ; case 2
+ .short _02213022 - _02212FE6 - 2 ; case 3
+ .short _02212FFE - _02212FE6 - 2 ; case 4
+ .short _02212FFE - _02212FE6 - 2 ; case 5
+ .short _0221300A - _02212FE6 - 2 ; case 6
+ .short _0221300A - _02212FE6 - 2 ; case 7
+ .short _0221300A - _02212FE6 - 2 ; case 8
+ .short _0221300A - _02212FE6 - 2 ; case 9
+ .short _02213016 - _02212FE6 - 2 ; case 10
+ .short _02212FFE - _02212FE6 - 2 ; case 11
+_02212FFE:
+ mov r0, #0x3b
+ mov r1, #0xa
+ lsl r0, r0, #4
+ add sp, #8
+ str r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_0221300A:
+ mov r0, #0x3b
+ mov r1, #0xa
+ lsl r0, r0, #4
+ add sp, #8
+ str r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_02213016:
+ mov r0, #0x3b
+ mov r1, #0xa
+ lsl r0, r0, #4
+ add sp, #8
+ str r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_02213022:
+ mov r0, #0x3b
+ mov r1, #0x23
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02212F7C
+
+ thumb_func_start MOD56_02213030
+MOD56_02213030: ; 0x02213030
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02033180
+ bl MOD04_021D80E0
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD56_02212F7C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02213030
+
+ thumb_func_start MOD56_02213048
+MOD56_02213048: ; 0x02213048
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _02213088 ; =0x021C48B8
+ add r4, r1, #0
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _02213084
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _0221307C
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_0221307C:
+ mov r0, #0x3b
+ mov r1, #8
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02213084:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02213088: .word 0x021C48B8
+ thumb_func_end MOD56_02213048
+
+ thumb_func_start MOD56_0221308C
+MOD56_0221308C: ; 0x0221308C
+ mov r2, #0x3b
+ mov r3, #9
+ lsl r2, r2, #4
+ str r3, [r0, r2]
+ add r0, r1, #0
+ bx lr
+ thumb_func_end MOD56_0221308C
+
+ thumb_func_start MOD56_02213098
+MOD56_02213098: ; 0x02213098
+ mov r2, #0x3b
+ mov r3, #0xb
+ lsl r2, r2, #4
+ str r3, [r0, r2]
+ add r0, r1, #0
+ bx lr
+ thumb_func_end MOD56_02213098
+
+ thumb_func_start MOD56_022130A4
+MOD56_022130A4: ; 0x022130A4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _022130F0 ; =0x021C48B8
+ add r4, r1, #0
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _022130EA
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _022130D8
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_022130D8:
+ add r0, r5, #0
+ mov r1, #0x33
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0xb
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_022130EA:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_022130F0: .word 0x021C48B8
+ thumb_func_end MOD56_022130A4
+
+ thumb_func_start MOD56_022130F4
+MOD56_022130F4: ; 0x022130F4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0221312E
+ mov r0, #0x36
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, _02213134 ; =0x02216308
+ ldr r2, _02213138 ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x3b
+ mov r1, #0xc
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_0221312E:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02213134: .word 0x02216308
+_02213138: .word 0x000001D9
+ thumb_func_end MOD56_022130F4
+
+ thumb_func_start MOD56_0221313C
+MOD56_0221313C: ; 0x0221313C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _0221315A
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_0221315A:
+ cmp r0, #0
+ bne _02213172
+ bl FUN_020331C4
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD56_0221617C
+ mov r0, #0x3b
+ mov r1, #0xd
+ lsl r0, r0, #4
+ b _02213186
+_02213172:
+ bl FUN_020331C4
+ bl FUN_0202DBA4
+ mov r0, #0xed
+ mov r1, #8
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0x22
+ sub r0, r0, #4
+_02213186:
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD56_02216120
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD56_0221313C
+
+ thumb_func_start MOD56_02213194
+MOD56_02213194: ; 0x02213194
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ str r1, [sp, #0x10]
+ bl FUN_0202E4C8
+ cmp r0, #0
+ bne _0221326E
+ add r0, r6, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ mov r1, #3
+ bl FUN_02018744
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ add r2, r6, #0
+ str r3, [sp, #8]
+ mov r0, #0x36
+ str r0, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ mov r0, #0x5c
+ mov r1, #4
+ bl FUN_020068C8
+ add r0, r6, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02213206
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ add r0, r6, #0
+ add r0, #0xb4
+ mov r1, #0
+ ldr r0, [r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ add r0, r6, #0
+ mov r1, #0
+ add r0, #0xb4
+ str r1, [r0]
+ add r0, r6, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ bl FUN_02012870
+ add r0, r6, #0
+ mov r1, #0
+ add r0, #0xb0
+ str r1, [r0]
+_02213206:
+ add r0, r6, #0
+ add r0, #0xc
+ mov r1, #0
+ mov r2, #0x20
+ bl MI_CpuFill8
+ add r0, r6, #0
+ add r0, #0x2c
+ mov r1, #0
+ mov r2, #0x80
+ bl MI_CpuFill8
+ mov r7, #0xca
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_02213226:
+ ldr r0, [r5, r7]
+ mov r1, #0
+ bl FUN_020200A0
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _02213226
+ add r0, r6, #0
+ bl MOD56_022128A4
+ add r0, r6, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ ldr r1, _02213274 ; =0x000004A4
+ bl FUN_0203346C
+ str r0, [r6, #4]
+ add r0, r6, #0
+ mov r1, #0x16
+ mov r2, #1
+ bl MOD56_02215EA4
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ ldr r1, _02213278 ; =0x000001E2
+ add r0, r6, r0
+ bl FUN_0200D858
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r6, r1]
+ mov r0, #0x3b
+ mov r1, #0xe
+ lsl r0, r0, #4
+ str r1, [r6, r0]
+_0221326E:
+ ldr r0, [sp, #0x10]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02213274: .word 0x000004A4
+_02213278: .word 0x000001E2
+ thumb_func_end MOD56_02213194
+
+ thumb_func_start MOD56_0221327C
+MOD56_0221327C: ; 0x0221327C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_02033138
+ cmp r0, #0
+ beq _022132E0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #8
+ beq _022132B6
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _022132B6
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD7C
+ mov r0, #0x5e
+ mov r1, #8
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_022132B6:
+ mov r0, #0x3d
+ lsl r0, r0, #4
+ ldr r1, [r5, r0]
+ cmp r1, #0
+ beq _022132C8
+ mov r1, #0x10
+ sub r0, #0x20
+ str r1, [r5, r0]
+ b _022132F6
+_022132C8:
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD56_02212E0C
+ add r0, r5, #0
+ bl MOD56_02212EFC
+ mov r0, #0x3b
+ mov r1, #0x12
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _022132F6
+_022132E0:
+ bl FUN_02033250
+ cmp r0, #0
+ bne _022132F0
+ bl FUN_0203300C
+ cmp r0, #3
+ bne _022132F6
+_022132F0:
+ add r0, r5, #0
+ bl MOD56_02213030
+_022132F6:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD56_0221327C
+
+ thumb_func_start MOD56_022132FC
+MOD56_022132FC: ; 0x022132FC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ add r4, r1, #0
+ ldr r1, [r5, r0]
+ cmp r1, #0
+ ble _02213314
+ sub r1, r1, #1
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_02213314:
+ bl FUN_02033154
+ cmp r0, #0
+ beq _02213326
+ mov r0, #0x3b
+ mov r1, #0x12
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02213364
+_02213326:
+ bl FUN_0203300C
+ cmp r0, #4
+ bge _02213340
+ bl FUN_02033128
+ cmp r0, #0
+ bne _02213340
+ mov r0, #0
+ bl FUN_02030E7C
+ cmp r0, #0
+ bne _0221334E
+_02213340:
+ bl FUN_020331E8
+ mov r0, #0x3b
+ mov r1, #0x12
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02213364
+_0221334E:
+ bl FUN_02033250
+ cmp r0, #0
+ bne _0221335E
+ bl FUN_0203300C
+ cmp r0, #3
+ bne _02213364
+_0221335E:
+ add r0, r5, #0
+ bl MOD56_02213030
+_02213364:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD56_022132FC
+
+ thumb_func_start MOD56_02213368
+MOD56_02213368: ; 0x02213368
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD56_02216120
+ add r0, r5, #0
+ mov r1, #0x12
+ bl MOD56_02215FF4
+ mov r0, #0x3b
+ mov r1, #0x11
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02213368
+
+ thumb_func_start MOD56_02213388
+MOD56_02213388: ; 0x02213388
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _02213418 ; =0x021C48B8
+ add r4, r1, #0
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _02213412
+ mov r1, #0xef
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ cmp r0, #1
+ bne _022133B6
+ add r0, r1, #0
+ mov r2, #0xa
+ sub r0, #8
+ str r2, [r5, r0]
+ mov r0, #0x22
+ sub r1, #0xc
+ str r0, [r5, r1]
+ bl FUN_020331C4
+ b _02213412
+_022133B6:
+ ldr r0, [r5]
+ bl FUN_02028448
+ cmp r0, #0
+ bne _022133DA
+ add r0, r5, #0
+ mov r1, #0x19
+ mov r2, #1
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x3a
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ mov r1, #1
+ add r0, #0x14
+ str r1, [r5, r0]
+ b _02213412
+_022133DA:
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD56_02212E0C
+ add r0, r5, #0
+ bl MOD56_02212EFC
+ mov r0, #0x3b
+ mov r1, #0x12
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ sub r0, #0x44
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02213412
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_02213412:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02213418: .word 0x021C48B8
+ thumb_func_end MOD56_02213388
+
+ thumb_func_start MOD56_0221341C
+MOD56_0221341C: ; 0x0221341C
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ ldr r5, _02213618 ; =0x00010200
+ bl FUN_020238F4
+ mov r1, #0x36
+ bl FUN_020239A0
+ add r6, r0, #0
+ mov r0, #0xd3
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ bne _0221344C
+ add r0, r6, #0
+ bl FUN_02021A20
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+_0221344C:
+ mov r0, #0xd3
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ add r0, r5, #0
+ str r0, [sp, #8]
+ mov r0, #0xd3
+ lsl r0, r0, #2
+ add r0, r4, r0
+ add r2, r6, #0
+ add r3, r1, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, [r4, #4]
+ ldrb r0, [r0, #0x1b]
+ cmp r0, #0x10
+ bls _02213484
+ b _02213614
+_02213484:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02213490: ; jump table
+ .short _022135D8 - _02213490 - 2 ; case 0
+ .short _022134B2 - _02213490 - 2 ; case 1
+ .short _0221350C - _02213490 - 2 ; case 2
+ .short _0221350C - _02213490 - 2 ; case 3
+ .short _0221350C - _02213490 - 2 ; case 4
+ .short _0221350C - _02213490 - 2 ; case 5
+ .short _0221350C - _02213490 - 2 ; case 6
+ .short _0221350C - _02213490 - 2 ; case 7
+ .short _0221359A - _02213490 - 2 ; case 8
+ .short _02213522 - _02213490 - 2 ; case 9
+ .short _02213536 - _02213490 - 2 ; case 10
+ .short _0221354A - _02213490 - 2 ; case 11
+ .short _0221355E - _02213490 - 2 ; case 12
+ .short _02213572 - _02213490 - 2 ; case 13
+ .short _02213586 - _02213490 - 2 ; case 14
+ .short _022135B0 - _02213490 - 2 ; case 15
+ .short _022135C4 - _02213490 - 2 ; case 16
+_022134B2:
+ ldr r5, _0221361C ; =0x00020E00
+ bl MOD04_021D853C
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _022134D4
+ add r0, r4, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x1a
+ bl FUN_0200A8E0
+ b _022135DC
+_022134D4:
+ bl MOD04_021D853C
+ add r1, r0, #0
+ ldr r0, [r4]
+ mov r2, #8
+ bl FUN_0202822C
+ cmp r0, #0
+ bne _022134EA
+ ldr r5, _02213620 ; =0x00050600
+ b _022134F2
+_022134EA:
+ cmp r0, #1
+ bne _022134F2
+ mov r5, #0xc1
+ lsl r5, r5, #0xa
+_022134F2:
+ bl MOD04_021D853C
+ add r1, r0, #0
+ ldr r0, [r4]
+ bl FUN_020283A4
+ add r1, r0, #0
+ mov r0, #0x56
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02021E28
+ b _022135DC
+_0221350C:
+ add r0, r4, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x17
+ bl FUN_0200A8E0
+ ldr r5, _0221361C ; =0x00020E00
+ b _022135DC
+_02213522:
+ add r0, r4, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x3b
+ bl FUN_0200A8E0
+ b _022135DC
+_02213536:
+ add r0, r4, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x3c
+ bl FUN_0200A8E0
+ b _022135DC
+_0221354A:
+ add r0, r4, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x3a
+ bl FUN_0200A8E0
+ b _022135DC
+_0221355E:
+ add r0, r4, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x3e
+ bl FUN_0200A8E0
+ b _022135DC
+_02213572:
+ add r0, r4, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x3f
+ bl FUN_0200A8E0
+ b _022135DC
+_02213586:
+ add r0, r4, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x3d
+ bl FUN_0200A8E0
+ b _022135DC
+_0221359A:
+ add r0, r4, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x19
+ bl FUN_0200A8E0
+ ldr r5, _0221361C ; =0x00020E00
+ b _022135DC
+_022135B0:
+ add r0, r4, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x18
+ bl FUN_0200A8E0
+ b _022135DC
+_022135C4:
+ add r0, r4, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ mov r1, #0x2d
+ bl FUN_0200A8E0
+ b _022135DC
+_022135D8:
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+_022135DC:
+ mov r1, #0x56
+ lsl r1, r1, #2
+ mov r0, #0
+ ldr r1, [r4, r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0
+ add r3, r0, #0
+ mov r0, #0xd3
+ lsl r0, r0, #2
+ str r1, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ str r5, [sp, #8]
+ mov r5, #0x9c
+ str r1, [sp, #0xc]
+ add r2, #0x59
+ ldr r2, [r4, r2]
+ add r0, r4, r0
+ sub r3, r5, r3
+ bl FUN_0201BDE0
+ mov r0, #0xd3
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019220
+_02213614:
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02213618: .word 0x00010200
+_0221361C: .word 0x00020E00
+_02213620: .word 0x00050600
+ thumb_func_end MOD56_0221341C
+
+ thumb_func_start MOD56_02213624
+MOD56_02213624: ; 0x02213624
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r1, #0
+ mov r1, #0x13
+ add r7, r2, #0
+ bl FUN_02001470
+ add r4, r0, #0
+ ldr r6, _02213750 ; =0x00010200
+ cmp r5, #0x20
+ beq _02213642
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ bne _02213644
+_02213642:
+ b _0221374C
+_02213644:
+ mov r1, #0x24
+ ldr r0, [r4, #4]
+ mul r1, r5
+ add r0, r0, r1
+ add r0, #0x3f
+ ldrb r0, [r0]
+ cmp r0, #0x11
+ bhi _022136B6
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02213660: ; jump table
+ .short _022136B6 - _02213660 - 2 ; case 0
+ .short _02213684 - _02213660 - 2 ; case 1
+ .short _0221368A - _02213660 - 2 ; case 2
+ .short _0221368A - _02213660 - 2 ; case 3
+ .short _0221368A - _02213660 - 2 ; case 4
+ .short _0221368A - _02213660 - 2 ; case 5
+ .short _0221368A - _02213660 - 2 ; case 6
+ .short _0221368A - _02213660 - 2 ; case 7
+ .short _022136A8 - _02213660 - 2 ; case 8
+ .short _02213690 - _02213660 - 2 ; case 9
+ .short _02213694 - _02213660 - 2 ; case 10
+ .short _02213698 - _02213660 - 2 ; case 11
+ .short _0221369C - _02213660 - 2 ; case 12
+ .short _022136A0 - _02213660 - 2 ; case 13
+ .short _022136A4 - _02213660 - 2 ; case 14
+ .short _022136AE - _02213660 - 2 ; case 15
+ .short _022136B2 - _02213660 - 2 ; case 16
+ .short _022136B6 - _02213660 - 2 ; case 17
+_02213684:
+ mov r1, #0x1a
+ ldr r6, _02213754 ; =0x00020E00
+ b _022136B8
+_0221368A:
+ mov r1, #0x17
+ ldr r6, _02213754 ; =0x00020E00
+ b _022136B8
+_02213690:
+ mov r1, #0x3b
+ b _022136B8
+_02213694:
+ mov r1, #0x3c
+ b _022136B8
+_02213698:
+ mov r1, #0x3a
+ b _022136B8
+_0221369C:
+ mov r1, #0x3e
+ b _022136B8
+_022136A0:
+ mov r1, #0x3f
+ b _022136B8
+_022136A4:
+ mov r1, #0x3d
+ b _022136B8
+_022136A8:
+ mov r1, #0x19
+ ldr r6, _02213754 ; =0x00020E00
+ b _022136B8
+_022136AE:
+ mov r1, #0x18
+ b _022136B8
+_022136B2:
+ mov r1, #0x2d
+ b _022136B8
+_022136B6:
+ mov r1, #0x37
+_022136B8:
+ cmp r1, #0
+ beq _02213706
+ add r0, r4, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r4, r2]
+ bl FUN_0200A8E0
+ mov r1, #0x56
+ lsl r1, r1, #2
+ mov r0, #0
+ ldr r1, [r4, r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov ip, r0
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ str r7, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ str r6, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ add r2, #0x59
+ ldr r2, [r4, r2]
+ mov r6, #0xa4
+ mov r3, ip
+ add r0, r4, r0
+ sub r3, r6, r3
+ bl FUN_0201BDE0
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019220
+_02213706:
+ ldr r0, [r4]
+ add r1, r5, #0
+ mov r2, #8
+ bl FUN_0202822C
+ ldr r1, _02213750 ; =0x00010200
+ cmp r0, #0
+ bne _0221371A
+ ldr r1, _02213758 ; =0x00050600
+ b _02213722
+_0221371A:
+ cmp r0, #1
+ bne _02213722
+ mov r1, #0xc1
+ lsl r1, r1, #0xa
+_02213722:
+ str r7, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ lsl r2, r5, #2
+ str r1, [sp, #8]
+ mov r1, #0
+ add r2, r4, r2
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0xd4
+ ldr r2, [r2]
+ add r0, r4, r0
+ mov r3, #8
+ bl FUN_0201BDE0
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019220
+_0221374C:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02213750: .word 0x00010200
+_02213754: .word 0x00020E00
+_02213758: .word 0x00050600
+ thumb_func_end MOD56_02213624
+
+ thumb_func_start MOD56_0221375C
+MOD56_0221375C: ; 0x0221375C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x38
+ add r4, r1, #0
+ ldr r1, _0221389C ; =0x022162E0
+ add r5, r3, #0
+ ldrh r3, [r1, #0x10]
+ add r7, r2, #0
+ add r2, sp, #0
+ strh r3, [r2, #0x30]
+ ldrh r3, [r1, #0x12]
+ add r0, #0xc0
+ strh r3, [r2, #0x32]
+ ldrh r3, [r1, #0x14]
+ strh r3, [r2, #0x34]
+ ldrh r3, [r1, #0x16]
+ strh r3, [r2, #0x36]
+ ldrh r3, [r1, #8]
+ strh r3, [r2, #0x28]
+ ldrh r3, [r1, #0xa]
+ strh r3, [r2, #0x2a]
+ ldrh r3, [r1, #0xc]
+ strh r3, [r2, #0x2c]
+ ldrh r3, [r1, #0xe]
+ strh r3, [r2, #0x2e]
+ ldrh r3, [r1, #0x38]
+ strh r3, [r2, #0x20]
+ ldrh r3, [r1, #0x3a]
+ strh r3, [r2, #0x22]
+ ldrh r3, [r1, #0x3c]
+ strh r3, [r2, #0x24]
+ ldrh r3, [r1, #0x3e]
+ strh r3, [r2, #0x26]
+ ldrh r3, [r1]
+ strh r3, [r2, #0x18]
+ ldrh r3, [r1, #2]
+ strh r3, [r2, #0x1a]
+ ldrh r3, [r1, #4]
+ strh r3, [r2, #0x1c]
+ ldrh r3, [r1, #6]
+ strh r3, [r2, #0x1e]
+ ldrh r3, [r1, #0x20]
+ strh r3, [r2, #0x10]
+ ldrh r3, [r1, #0x22]
+ strh r3, [r2, #0x12]
+ ldrh r3, [r1, #0x24]
+ strh r3, [r2, #0x14]
+ ldrh r1, [r1, #0x26]
+ strh r1, [r2, #0x16]
+ ldr r1, _022138A0 ; =0x02216320
+ ldrh r3, [r1]
+ strh r3, [r2, #8]
+ ldrh r3, [r1, #2]
+ strh r3, [r2, #0xa]
+ ldrh r3, [r1, #4]
+ strh r3, [r2, #0xc]
+ ldrh r3, [r1, #6]
+ strh r3, [r2, #0xe]
+ ldrh r3, [r1, #8]
+ strh r3, [r2]
+ ldrh r3, [r1, #0xa]
+ strh r3, [r2, #2]
+ ldrh r3, [r1, #0xc]
+ strh r3, [r2, #4]
+ ldrh r1, [r1, #0xe]
+ strh r1, [r2, #6]
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0201886C
+ add r1, r0, #0
+ mov r2, #0
+ cmp r4, #0x11
+ bhi _0221383A
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_022137FA: ; jump table
+ .short _0221383A - _022137FA - 2 ; case 0
+ .short _0221381E - _022137FA - 2 ; case 1
+ .short _02213826 - _022137FA - 2 ; case 2
+ .short _02213826 - _022137FA - 2 ; case 3
+ .short _02213826 - _022137FA - 2 ; case 4
+ .short _02213826 - _022137FA - 2 ; case 5
+ .short _02213826 - _022137FA - 2 ; case 6
+ .short _02213826 - _022137FA - 2 ; case 7
+ .short _0221382E - _022137FA - 2 ; case 8
+ .short _02213822 - _022137FA - 2 ; case 9
+ .short _02213822 - _022137FA - 2 ; case 10
+ .short _02213822 - _022137FA - 2 ; case 11
+ .short _02213822 - _022137FA - 2 ; case 12
+ .short _02213822 - _022137FA - 2 ; case 13
+ .short _02213822 - _022137FA - 2 ; case 14
+ .short _0221382A - _022137FA - 2 ; case 15
+ .short _02213832 - _022137FA - 2 ; case 16
+ .short _02213836 - _022137FA - 2 ; case 17
+_0221381E:
+ add r0, sp, #0x18
+ b _0221383C
+_02213822:
+ mov r2, #1
+ lsl r2, r2, #0xc
+_02213826:
+ add r0, sp, #0x30
+ b _0221383C
+_0221382A:
+ mov r2, #1
+ lsl r2, r2, #0xc
+_0221382E:
+ add r0, sp, #0x28
+ b _0221383C
+_02213832:
+ add r0, sp, #0x20
+ b _0221383C
+_02213836:
+ add r0, sp, #8
+ b _0221383C
+_0221383A:
+ add r0, sp, #0
+_0221383C:
+ ldr r3, [sp, #0x50]
+ ldrh r4, [r0]
+ lsl r3, r3, #5
+ add r5, r5, r3
+ add r6, r4, r2
+ lsl r4, r5, #1
+ strh r6, [r1, r4]
+ ldrh r4, [r0, #2]
+ add r6, r5, #1
+ lsl r6, r6, #1
+ add r4, r4, r2
+ strh r4, [r1, r6]
+ add r6, r5, #0
+ ldrh r4, [r0, #4]
+ add r6, #0x20
+ lsl r6, r6, #1
+ add r4, r4, r2
+ strh r4, [r1, r6]
+ ldrh r0, [r0, #6]
+ add r5, #0x21
+ add r2, r0, r2
+ lsl r0, r5, #1
+ strh r2, [r1, r0]
+ cmp r7, #0
+ beq _02213872
+ add r2, sp, #0
+ b _02213874
+_02213872:
+ add r2, sp, #0x10
+_02213874:
+ ldr r0, [sp, #0x54]
+ ldrh r4, [r2]
+ add r0, r0, r3
+ lsl r3, r0, #1
+ strh r4, [r1, r3]
+ add r3, r0, #1
+ ldrh r4, [r2, #2]
+ lsl r3, r3, #1
+ strh r4, [r1, r3]
+ add r3, r0, #0
+ add r3, #0x20
+ add r0, #0x21
+ ldrh r4, [r2, #4]
+ lsl r3, r3, #1
+ lsl r0, r0, #1
+ strh r4, [r1, r3]
+ ldrh r2, [r2, #6]
+ strh r2, [r1, r0]
+ add sp, #0x38
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221389C: .word 0x022162E0
+_022138A0: .word 0x02216320
+ thumb_func_end MOD56_0221375C
+
+ thumb_func_start MOD56_022138A4
+MOD56_022138A4: ; 0x022138A4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r0, #0xc0
+ add r7, r1, #0
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0201886C
+ mov r6, #0
+ mov r4, #5
+_022138BA:
+ add r0, r7, r6
+ cmp r0, #0x20
+ blt _022138C6
+ mov r1, #0
+ mov r2, #1
+ b _022138E2
+_022138C6:
+ add r0, r5, r0
+ ldrb r1, [r0, #0xc]
+ cmp r1, #0
+ bne _022138D4
+ mov r1, #0
+ mov r2, #1
+ b _022138E2
+_022138D4:
+ mov r2, #0x24
+ ldr r0, [r5, #4]
+ mul r2, r1
+ add r0, r0, r2
+ ldrb r1, [r0, #0x1b]
+ add r0, #0x21
+ ldrb r2, [r0]
+_022138E2:
+ str r4, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r3, #3
+ bl MOD56_0221375C
+ add r6, r6, #1
+ add r4, r4, #3
+ cmp r6, #5
+ blt _022138BA
+ ldr r0, [r5, #4]
+ ldrb r1, [r0, #0x1b]
+ add r0, #0x21
+ ldrb r2, [r0]
+ cmp r1, #1
+ bne _02213906
+ mov r1, #0
+_02213906:
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r3, #3
+ bl MOD56_0221375C
+ add r5, #0xc0
+ ldr r0, [r5]
+ mov r1, #0
+ bl FUN_02017CD0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD56_022138A4
+
+ thumb_func_start MOD56_02213924
+MOD56_02213924: ; 0x02213924
+ push {r3, lr}
+ cmp r2, #0
+ bne _02213930
+ ldr r0, _02213934 ; =0x000005DC
+ bl FUN_020054C8
+_02213930:
+ pop {r3, pc}
+ nop
+_02213934: .word 0x000005DC
+ thumb_func_end MOD56_02213924
+
+ thumb_func_start MOD56_02213938
+MOD56_02213938: ; 0x02213938
+ push {r3, r4, r5, r6, r7, lr}
+ mov r6, #0
+ mov r7, #0x5d
+ add r5, r0, #0
+ add r4, r6, #0
+ lsl r7, r7, #2
+_02213944:
+ add r0, r5, r4
+ ldrb r2, [r0, #0xc]
+ cmp r2, #0
+ beq _0221395C
+ add r0, r5, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ ldr r1, [r5, r7]
+ sub r2, r2, #1
+ bl FUN_020128A0
+ add r6, r6, #1
+_0221395C:
+ add r4, r4, #1
+ cmp r4, #0x20
+ blt _02213944
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xb0
+ add r1, #0xcc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x1b
+ mov r3, #0x20
+ bl FUN_02012880
+ add r0, r5, #0
+ add r0, #0xb0
+ add r5, #0xcc
+ mov r2, #0x2e
+ add r3, r2, #0
+ ldr r0, [r0]
+ ldr r1, [r5]
+ sub r3, #0x30
+ bl FUN_02012880
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02213938
+
+ thumb_func_start MOD56_02213990
+MOD56_02213990: ; 0x02213990
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ mov r0, #0x22
+ mov r1, #0x36
+ bl FUN_02012838
+ add r1, r5, #0
+ add r1, #0xb0
+ str r0, [r1]
+ add r0, r5, #0
+ bl MOD56_02213938
+ add r4, r0, #0
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _022139D0
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_022139D0:
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #0x15
+ str r0, [sp, #4]
+ mov r0, #0xe
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r0, #0xc0
+ mov r1, #0xdf
+ lsl r1, r1, #2
+ ldr r0, [r0]
+ add r1, r5, r1
+ mov r2, #3
+ mov r3, #6
+ bl FUN_02019064
+ ldr r6, _02213A3C ; =0x022163F4
+ add r3, sp, #0x14
+ add r2, r3, #0
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r5, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ add r1, r4, #2
+ str r0, [sp, #0x14]
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ str r0, [sp, #0x20]
+ add r0, sp, #0x14
+ strh r1, [r0, #0x10]
+ mov r1, #0
+ add r0, r2, #0
+ add r2, r1, #0
+ mov r3, #0x36
+ str r5, [sp, #0x30]
+ bl FUN_020010A8
+ add r5, #0xb4
+ str r0, [r5]
+ add sp, #0x34
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02213A3C: .word 0x022163F4
+ thumb_func_end MOD56_02213990
+
+ thumb_func_start MOD56_02213A40
+MOD56_02213A40: ; 0x02213A40
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0xd3
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02213A6A
+ mov r0, #0xd3
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xd3
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+_02213A6A:
+ mov r0, #0x15
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ lsl r0, r0, #5
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xc0
+ mov r1, #0xd3
+ lsl r1, r1, #2
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #3
+ mov r3, #7
+ bl FUN_02019064
+ add sp, #0x14
+ pop {r3, r4, pc}
+ thumb_func_end MOD56_02213A40
+
+ thumb_func_start MOD56_02213A94
+MOD56_02213A94: ; 0x02213A94
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD56_02216248
+ add r0, r5, #0
+ bl MOD56_02216274
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ mov r1, #3
+ bl FUN_02018744
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ add r2, r5, #0
+ str r3, [sp, #8]
+ mov r0, #0x36
+ str r0, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ mov r0, #0x5c
+ mov r1, #5
+ bl FUN_020068C8
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02213AF0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_02213AF0:
+ add r0, r5, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02213B2C
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+ add r0, r5, #0
+ add r0, #0xb4
+ mov r1, #0
+ ldr r0, [r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xb4
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ bl FUN_02012870
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xb0
+ str r1, [r0]
+_02213B2C:
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x15
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ ldr r0, _02213BEC ; =0x000001CA
+ mov r1, #0xd7
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r0, #0xc0
+ lsl r1, r1, #2
+ ldr r0, [r0]
+ add r1, r5, r1
+ mov r2, #3
+ mov r3, #4
+ bl FUN_02019064
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ mov r2, #0x16
+ add r0, #0xcc
+ lsl r2, r2, #4
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x12
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02213BF0 ; =0x000F0E00
+ add r2, #0x61
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BDE0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ add r0, r5, #0
+ bl MOD56_02216120
+ add r0, r5, #0
+ bl MOD56_02212EFC
+ add r0, r5, #0
+ bl MOD56_02213990
+ add r0, r5, #0
+ bl MOD56_02213A40
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD56_022138A4
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD56_0221617C
+ mov r1, #0
+ mov r0, #0xf6
+ mvn r1, r1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ bl MOD04_021D865C
+ mov r0, #0x33
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x3b
+ mov r1, #0x13
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02213BEC: .word 0x000001CA
+_02213BF0: .word 0x000F0E00
+ thumb_func_end MOD56_02213A94
+
+ thumb_func_start MOD56_02213BF4
+MOD56_02213BF4: ; 0x02213BF4
+ push {r3, lr}
+ bl FUN_0203300C
+ cmp r0, #1
+ bne _02213C02
+ mov r0, #1
+ pop {r3, pc}
+_02213C02:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02213BF4
+
+ thumb_func_start MOD56_02213C08
+MOD56_02213C08: ; 0x02213C08
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ bl MOD56_02212EFC
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD56_02212F28
+ ldr r1, [r5, #8]
+ cmp r1, r4
+ bne _02213C24
+ cmp r0, #0
+ beq _02213CA8
+_02213C24:
+ add r0, r5, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ bl FUN_0201291C
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ mov r1, #2
+ add r2, r4, #2
+ bl FUN_02001538
+ cmp r4, #3
+ ble _02213C50
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ mov r1, #3
+ mov r2, #5
+ bl FUN_02001538
+ b _02213C5E
+_02213C50:
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ mov r1, #3
+ add r2, r4, #2
+ bl FUN_02001538
+_02213C5E:
+ add r0, r5, #0
+ bl MOD56_02213938
+ add r0, r5, #0
+ add r0, #0xb4
+ add r1, sp, #0xc
+ ldr r0, [r0]
+ add r1, #2
+ add r2, sp, #0xc
+ bl FUN_02001448
+ cmp r4, #3
+ blt _02213C84
+ add r0, sp, #0xc
+ ldrh r1, [r0, #2]
+ sub r2, r4, #3
+ cmp r2, r1
+ bgt _02213C84
+ strh r2, [r0, #2]
+_02213C84:
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r0, r5, #0
+ str r1, [sp, #8]
+ add r3, sp, #0xc
+ add r0, #0xb4
+ ldrh r2, [r3, #2]
+ ldrh r3, [r3]
+ ldr r0, [r0]
+ bl FUN_020013C8
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ bl FUN_02001328
+ str r4, [r5, #8]
+_02213CA8:
+ add r0, r5, #0
+ add r0, #0xb4
+ add r1, sp, #0xc
+ ldr r0, [r0]
+ add r1, #2
+ add r2, sp, #0xc
+ bl FUN_02001448
+ add r0, sp, #0xc
+ ldr r1, [r5, #8]
+ ldrh r3, [r0]
+ ldrh r2, [r0, #2]
+ add r1, r1, #2
+ add r4, r2, r3
+ cmp r1, r4
+ bgt _02213D0C
+ cmp r1, r4
+ bgt _02213CF0
+_02213CCC:
+ cmp r2, #0
+ beq _02213CD8
+ ldrh r1, [r0, #2]
+ sub r1, r1, #1
+ strh r1, [r0, #2]
+ b _02213CE2
+_02213CD8:
+ cmp r3, #0
+ beq _02213CE2
+ ldrh r1, [r0]
+ sub r1, r1, #1
+ strh r1, [r0]
+_02213CE2:
+ ldrh r3, [r0]
+ ldr r1, [r5, #8]
+ ldrh r2, [r0, #2]
+ add r4, r1, #2
+ add r1, r2, r3
+ cmp r4, r1
+ ble _02213CCC
+_02213CF0:
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r0, r5, #0
+ str r1, [sp, #8]
+ add r0, #0xb4
+ ldr r0, [r0]
+ bl FUN_020013C8
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ bl FUN_02001328
+_02213D0C:
+ add r1, sp, #0xc
+ ldrh r1, [r1, #2]
+ add r0, r5, #0
+ bl MOD56_022138A4
+ add r2, sp, #0xc
+ ldrh r3, [r2]
+ mov r0, #0x33
+ lsl r0, r0, #4
+ lsl r2, r3, #1
+ add r2, r3, r2
+ add r2, r2, #6
+ ldr r0, [r5, r0]
+ mov r1, #0x10
+ lsl r2, r2, #3
+ bl MOD56_02214470
+ add r0, sp, #0xc
+ ldrh r0, [r0, #2]
+ cmp r0, #0
+ beq _02213D52
+ mov r0, #0xca
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x20
+ bl MOD56_02214470
+ mov r0, #0xca
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ b _02213D5E
+_02213D52:
+ mov r0, #0xca
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+_02213D5E:
+ add r0, sp, #0xc
+ ldrh r1, [r0, #2]
+ ldr r0, [r5, #8]
+ sub r0, r0, #3
+ cmp r1, r0
+ bge _02213D88
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x9c
+ bl MOD56_02214470
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+_02213D88:
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD56_02213C08
+
+ thumb_func_start MOD56_02213D98
+MOD56_02213D98: ; 0x02213D98
+ push {r4, r5, r6, lr}
+ mov r6, #0
+ mvn r6, r6
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD56_02213C08
+ bl MOD04_021D8640
+ add r1, r6, #0
+ cmp r0, r1
+ bne _02213DEE
+ ldr r0, _02213F84 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ lsl r0, r0, #0xa
+ tst r0, r1
+ beq _02213DEE
+ add r0, r5, #0
+ bl MOD56_0221620C
+ cmp r0, #0
+ beq _02213DD2
+ add r0, r5, #0
+ mov r1, #0x35
+ mov r2, #0
+ bl MOD56_02215EA4
+ b _02213DDC
+_02213DD2:
+ add r0, r5, #0
+ mov r1, #0x36
+ mov r2, #0
+ bl MOD56_02215EA4
+_02213DDC:
+ ldr r0, _02213F88 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x3b
+ mov r1, #0x14
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02213DEE:
+ bl FUN_02033250
+ cmp r0, #0
+ beq _02213E00
+ add r0, r5, #0
+ bl MOD56_02213030
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02213E00:
+ add r0, r5, #0
+ bl MOD56_02213BF4
+ cmp r0, #0
+ beq _02213E1C
+ ldr r0, _02213F8C ; =0x00000624
+ bl FUN_020054C8
+ mov r0, #0x3b
+ mov r1, #0x2f
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02213E1C:
+ mov r0, #0xf6
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ bne _02213E5C
+ bl MOD04_021D8640
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _02213E5C
+ bl MOD04_021D8640
+ mov r1, #0xf6
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r1, [r5, r1]
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0x2a
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0xeb
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ b _02213ECE
+_02213E5C:
+ mov r0, #0xf6
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ beq _02213ECE
+ bl MOD04_021D8640
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _02213ECE
+ mov r0, #0xdf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+ add r0, r5, #0
+ add r0, #0xb4
+ mov r1, #0
+ ldr r0, [r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xb4
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ bl FUN_02012870
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0xb0
+ str r1, [r0]
+ mov r1, #0xf6
+ lsl r1, r1, #2
+ ldr r1, [r5, r1]
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xe
+ mov r2, #0
+ bl MOD56_02215EA4
+ bl FUN_020331E8
+ mov r0, #0x3b
+ mov r1, #0x1b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02213ECE:
+ mov r0, #0xf6
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ bne _02213EE8
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ bl FUN_02001204
+ add r6, r0, #0
+_02213EE8:
+ mov r0, #1
+ mvn r0, r0
+ cmp r6, r0
+ beq _02213EFA
+ add r0, r0, #1
+ cmp r6, r0
+ bne _02213F32
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02213EFA:
+ ldr r0, _02213F88 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, [r5, #4]
+ ldrb r0, [r0, #0x1b]
+ bl MOD56_02211E88
+ cmp r0, #0
+ beq _02213F16
+ mov r0, #0x3b
+ mov r1, #0x27
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02213F2E
+_02213F16:
+ mov r0, #0xed
+ mov r1, #8
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0x38
+ sub r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r5, #0
+ mov r1, #0x18
+ mov r2, #1
+ bl MOD56_02215EA4
+_02213F2E:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02213F32:
+ ldr r0, _02213F88 ; =0x000005DD
+ bl FUN_020054C8
+ ldr r0, [r5, #4]
+ ldrb r0, [r0, #0x1b]
+ bl MOD56_02211E88
+ cmp r0, #0
+ beq _02213F4E
+ mov r0, #0x3b
+ mov r1, #0x27
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02213F7E
+_02213F4E:
+ cmp r6, #0x20
+ bne _02213F76
+ ldr r0, [r5, #4]
+ ldrb r0, [r0, #0x1b]
+ cmp r0, #0x10
+ bne _02213F64
+ mov r0, #0x3b
+ mov r1, #0x24
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02213F7E
+_02213F64:
+ bl MOD56_02211E88
+ cmp r0, #0
+ beq _02213F7E
+ mov r0, #0x3b
+ mov r1, #0x27
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02213F7E
+_02213F76:
+ mov r0, #0x3b
+ mov r1, #0x2a
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02213F7E:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02213F84: .word 0x021C48B8
+_02213F88: .word 0x000005DD
+_02213F8C: .word 0x00000624
+ thumb_func_end MOD56_02213D98
+
+ thumb_func_start MOD56_02213F90
+MOD56_02213F90: ; 0x02213F90
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD56_02213BF4
+ cmp r0, #0
+ beq _02213FA8
+ mov r0, #0x3b
+ mov r1, #0x13
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02213FC8
+_02213FA8:
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02213FC8
+ mov r0, #0x3b
+ mov r1, #0x13
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD56_02216120
+_02213FC8:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD56_02213F90
+
+ thumb_func_start MOD56_02213FCC
+MOD56_02213FCC: ; 0x02213FCC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, _022140A0 ; =0x021C48B8
+ add r5, r0, #0
+ ldr r2, [r1, #0x48]
+ mov r1, #2
+ tst r1, r2
+ beq _02213FEE
+ mov r1, #0x43
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x41
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221407C
+_02213FEE:
+ bl FUN_0203300C
+ cmp r0, #5
+ bne _02214016
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xb
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221407C
+_02214016:
+ bl FUN_0203300C
+ cmp r0, #3
+ bne _0221403E
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xe
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221407C
+_0221403E:
+ bl FUN_0203300C
+ cmp r0, #4
+ beq _0221404E
+ bl FUN_02033128
+ cmp r0, #0
+ beq _0221406E
+_0221404E:
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xf
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221407C
+_0221406E:
+ bl FUN_02033250
+ cmp r0, #0
+ beq _0221407C
+ add r0, r5, #0
+ bl MOD56_02213030
+_0221407C:
+ bl FUN_0203300C
+ cmp r0, #1
+ bne _0221409A
+ add r0, r5, #0
+ bl MOD56_02216274
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD56_0221617C
+ mov r0, #0x3b
+ mov r1, #0x18
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_0221409A:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_022140A0: .word 0x021C48B8
+ thumb_func_end MOD56_02213FCC
+
+ thumb_func_start MOD56_022140A4
+MOD56_022140A4: ; 0x022140A4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0203300C
+ cmp r0, #1
+ bne _022140D8
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xa
+ mov r2, #0
+ bl MOD56_02215EA4
+ add r0, r5, #0
+ mov r1, #1
+ bl MOD56_0221617C
+ mov r0, #0x3b
+ mov r1, #0x17
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_022140D8:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD56_022140A4
+
+ thumb_func_start MOD56_022140DC
+MOD56_022140DC: ; 0x022140DC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02214116
+ ldr r0, _0221411C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _0221410E
+ add r0, r5, #0
+ bl MOD56_02216120
+ mov r0, #0x3b
+ mov r1, #0x18
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02214116
+_0221410E:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD56_02214120
+_02214116:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_0221411C: .word 0x021C48B8
+ thumb_func_end MOD56_022140DC
+
+ thumb_func_start MOD56_02214120
+MOD56_02214120: ; 0x02214120
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD56_02213C08
+ mov r0, #0xce
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0xcd
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ bl FUN_0203300C
+ cmp r0, #5
+ bne _0221416A
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xb
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221422E
+_0221416A:
+ bl FUN_0203300C
+ cmp r0, #3
+ bne _02214192
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xe
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221422E
+_02214192:
+ bl FUN_0203300C
+ cmp r0, #4
+ beq _022141A2
+ bl FUN_02033128
+ cmp r0, #0
+ beq _022141C2
+_022141A2:
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xf
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221422E
+_022141C2:
+ bl FUN_02033250
+ cmp r0, #0
+ beq _022141D2
+ add r0, r5, #0
+ bl MOD56_02213030
+ b _0221422E
+_022141D2:
+ ldr r0, _02214234 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _022141F0
+ add r0, r5, #0
+ mov r1, #0x10
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x19
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221422E
+_022141F0:
+ bl MOD04_021D861C
+ cmp r0, #0
+ beq _02214214
+ mov r0, #0xce
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x20
+ mov r2, #0xb0
+ bl MOD56_02214470
+ mov r0, #0xce
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ b _0221422E
+_02214214:
+ mov r0, #0xcd
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x20
+ mov r2, #0xb0
+ bl MOD56_02214470
+ mov r0, #0xcd
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+_0221422E:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02214234: .word 0x021C48B8
+ thumb_func_end MOD56_02214120
+
+ thumb_func_start MOD56_02214238
+MOD56_02214238: ; 0x02214238
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0221427E
+ bl MOD04_021D853C
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_020285D0
+ mov r0, #0x36
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, _02214284 ; =0x02216308
+ ldr r2, _02214288 ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x3b
+ mov r1, #0x1a
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_0221427E:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02214284: .word 0x02216308
+_02214288: .word 0x000001D9
+ thumb_func_end MOD56_02214238
+
+ thumb_func_start MOD56_0221428C
+MOD56_0221428C: ; 0x0221428C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _022142F0
+ bl FUN_0203300C
+ cmp r0, #4
+ bge _022142C0
+ bl FUN_02033128
+ cmp r0, #0
+ bne _022142C0
+ mov r0, #0
+ bl FUN_02030E7C
+ cmp r0, #0
+ bne _022142EC
+_022142C0:
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD56_0221617C
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021EC
+ mov r0, #0
+ mov r1, #0xf6
+ mvn r0, r0
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ mov r2, #0x14
+ sub r0, #0x14
+ str r2, [r5, r0]
+ mov r0, #0x40
+ sub r1, #0x28
+ str r0, [r5, r1]
+_022142EC:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_022142F0:
+ cmp r0, #0
+ bne _0221431A
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD56_0221617C
+ bl FUN_0203323C
+ mov r0, #0
+ mov r1, #0xf6
+ mvn r0, r0
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ mov r2, #0x14
+ sub r0, #0x14
+ str r2, [r5, r0]
+ mov r0, #0x40
+ sub r1, #0x28
+ str r0, [r5, r1]
+ b _02214322
+_0221431A:
+ mov r0, #0x3b
+ mov r1, #0x18
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02214322:
+ add r0, r5, #0
+ bl MOD56_02216120
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD56_0221428C
+
+ thumb_func_start MOD56_0221432C
+MOD56_0221432C: ; 0x0221432C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, [r5, #4]
+ ldrb r1, [r1, #0x1b]
+ cmp r1, #0x10
+ beq _02214340
+ mov r1, #0x10
+ bl MOD56_0221617C
+_02214340:
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _0221435E
+ mov r0, #0xf1
+ mov r1, #0x1e
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_0221435E:
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ sub r1, r1, #1
+ str r1, [r5, r0]
+ ldr r1, _022143B0 ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #3
+ tst r1, r2
+ bne _02214378
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bne _022143AC
+_02214378:
+ add r0, r5, #0
+ bl MOD56_02216120
+ bl FUN_020331E8
+ add r0, r5, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0221439C
+ mov r0, #0xf1
+ mov r1, #0x14
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0x40
+ sub r0, #0x14
+ str r1, [r5, r0]
+ b _022143AC
+_0221439C:
+ mov r1, #0
+ mov r0, #0xf6
+ mvn r1, r1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0x13
+ sub r0, #0x28
+ str r1, [r5, r0]
+_022143AC:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022143B0: .word 0x021C48B8
+ thumb_func_end MOD56_0221432C
+
+ thumb_func_start MOD56_022143B4
+MOD56_022143B4: ; 0x022143B4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _022143D0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_022143D0:
+ ldr r0, _02214400 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _022143FA
+ add r0, r5, #0
+ bl MOD56_02216120
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD56_0221617C
+ bl FUN_020331E8
+ mov r0, #0xf1
+ mov r1, #0x14
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0x40
+ sub r0, #0x14
+ str r1, [r5, r0]
+_022143FA:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02214400: .word 0x021C48B8
+ thumb_func_end MOD56_022143B4
+
+ thumb_func_start MOD56_02214404
+MOD56_02214404: ; 0x02214404
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _02214420
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_02214420:
+ ldr r0, _02214460 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _0221445C
+ add r0, r5, #0
+ bl MOD56_02216120
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD56_0221617C
+ add r0, r5, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _0221444C
+ mov r0, #0x3b
+ mov r1, #0x12
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221445C
+_0221444C:
+ mov r1, #0
+ mov r0, #0xf6
+ mvn r1, r1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0x13
+ sub r0, #0x28
+ str r1, [r5, r0]
+_0221445C:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02214460: .word 0x021C48B8
+ thumb_func_end MOD56_02214404
+
+ thumb_func_start MOD56_02214464
+MOD56_02214464: ; 0x02214464
+ add r0, r1, #0
+ bx lr
+ thumb_func_end MOD56_02214464
+
+ thumb_func_start MOD56_02214468
+MOD56_02214468: ; 0x02214468
+ add r0, r1, #0
+ bx lr
+ thumb_func_end MOD56_02214468
+
+ thumb_func_start MOD56_0221446C
+MOD56_0221446C: ; 0x0221446C
+ add r0, r1, #0
+ bx lr
+ thumb_func_end MOD56_0221446C
+
+ thumb_func_start MOD56_02214470
+MOD56_02214470: ; 0x02214470
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r5, r2, #0
+ cmp r1, #0
+ ble _0221448E
+ lsl r0, r1, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _0221449C
+_0221448E:
+ lsl r0, r1, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_0221449C:
+ bl _ffix
+ str r0, [sp]
+ cmp r5, #0
+ ble _022144B8
+ lsl r0, r5, #0xc
+ bl _fflt
+ add r1, r0, #0
+ mov r0, #0x3f
+ lsl r0, r0, #0x18
+ bl _fadd
+ b _022144C6
+_022144B8:
+ lsl r0, r5, #0xc
+ bl _fflt
+ mov r1, #0x3f
+ lsl r1, r1, #0x18
+ bl _fsub
+_022144C6:
+ bl _ffix
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, sp, #0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD56_02214470
+
+ thumb_func_start MOD56_022144DC
+MOD56_022144DC: ; 0x022144DC
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, _02214500 ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ mov r1, #3
+ tst r1, r2
+ beq _022144FC
+ mov r1, #0xed
+ mov r2, #8
+ lsl r1, r1, #2
+ str r2, [r0, r1]
+ mov r2, #0x22
+ sub r1, r1, #4
+ str r2, [r0, r1]
+ bl FUN_020331C4
+_022144FC:
+ add r0, r4, #0
+ pop {r4, pc}
+ .align 2, 0
+_02214500: .word 0x021C48B8
+ thumb_func_end MOD56_022144DC
+
+ thumb_func_start MOD56_02214504
+MOD56_02214504: ; 0x02214504
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #6
+ mov r2, #0
+ add r5, r0, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x28
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02214504
+
+ thumb_func_start MOD56_02214520
+MOD56_02214520: ; 0x02214520
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _0221455A
+ mov r0, #0x36
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, _02214560 ; =0x02216308
+ ldr r2, _02214564 ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x3b
+ mov r1, #0x29
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_0221455A:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02214560: .word 0x02216308
+_02214564: .word 0x000001D9
+ thumb_func_end MOD56_02214520
+
+ thumb_func_start MOD56_02214568
+MOD56_02214568: ; 0x02214568
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ add r6, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021AC
+ add r4, r0, #0
+ mov r0, #0xf6
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ bne _022145A8
+ bl MOD04_021D8640
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _022145A8
+ cmp r4, r1
+ bne _022145A6
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021EC
+_022145A6:
+ mov r4, #1
+_022145A8:
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _022145B4
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+_022145B4:
+ cmp r4, #0
+ bne _022145C0
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD56_0221617C
+_022145C0:
+ add r0, r5, #0
+ bl MOD56_02216120
+ mov r0, #0x3b
+ mov r1, #0x13
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02214568
+
+ thumb_func_start MOD56_022145D4
+MOD56_022145D4: ; 0x022145D4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ ldr r3, _022146C0 ; =0x02216414
+ add r2, sp, #0x14
+ add r5, r0, #0
+ add r7, r1, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ mov r0, #4
+ mov r1, #0x36
+ bl FUN_02012838
+ add r1, r5, #0
+ add r1, #0xb8
+ ldr r4, _022146C4 ; =0x02216480
+ str r0, [r1]
+ mov r6, #0
+_02214602:
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xb8
+ add r1, #0xcc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ bl FUN_02012880
+ add r6, r6, #1
+ add r4, #8
+ cmp r6, #4
+ blt _02214602
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02214642
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_02214642:
+ mov r0, #9
+ str r0, [sp]
+ mov r0, #0xf
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x33
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r0, #0xc0
+ mov r1, #0xe3
+ lsl r1, r1, #2
+ ldr r0, [r0]
+ add r1, r5, r1
+ mov r2, #2
+ mov r3, #0x10
+ bl FUN_02019064
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ ldr r2, _022146C8 ; =0x000001D9
+ add r0, r5, r0
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ mov r2, #0xe3
+ lsl r2, r2, #2
+ str r0, [sp, #0x14]
+ add r0, r5, r2
+ str r0, [sp, #0x20]
+ add r2, #0x50
+ ldrh r2, [r5, r2]
+ add r0, sp, #0x14
+ mov r1, #0
+ mov r3, #0x36
+ bl FUN_020010A8
+ add r1, r5, #0
+ add r1, #0xbc
+ str r0, [r1]
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x25
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r7, #0
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022146C0: .word 0x02216414
+_022146C4: .word 0x02216480
+_022146C8: .word 0x000001D9
+ thumb_func_end MOD56_022145D4
+
+ thumb_func_start MOD56_022146CC
+MOD56_022146CC: ; 0x022146CC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ bl MOD56_02211F88
+ add r7, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _022146EE
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_022146EE:
+ add r0, r5, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ bl FUN_02001204
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD56_02213BF4
+ cmp r0, #0
+ beq _02214708
+ mov r4, #1
+ mvn r4, r4
+_02214708:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _0221471A
+ add r0, r0, #1
+ cmp r4, r0
+ bne _02214730
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_0221471A:
+ mov r0, #0x3b
+ mov r1, #0x13
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD56_02216120
+ ldr r0, _02214804 ; =0x000005DD
+ bl FUN_020054C8
+ b _022147CE
+_02214730:
+ ldr r0, _02214804 ; =0x000005DD
+ bl FUN_020054C8
+ cmp r4, #0xf
+ bne _02214752
+ cmp r7, #2
+ bge _02214752
+ add r0, r5, #0
+ mov r1, #0x34
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1d
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _022147CE
+_02214752:
+ cmp r4, #1
+ bne _0221476E
+ cmp r7, #2
+ bge _0221476E
+ add r0, r5, #0
+ mov r1, #0x42
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1d
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _022147CE
+_0221476E:
+ cmp r4, #1
+ bhi _022147B8
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+ add r0, r5, #0
+ add r0, #0xbc
+ mov r2, #0xf7
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ mov r1, #0
+ add r2, r5, r2
+ bl FUN_02001300
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ bl FUN_02012870
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD56_02214808
+ mov r0, #0x3b
+ mov r1, #0x26
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_022147B8:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD56_0221617C
+ mov r0, #0x3b
+ mov r1, #0x13
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD56_02216120
+_022147CE:
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+ add r0, r5, #0
+ add r0, #0xbc
+ mov r2, #0xf7
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ mov r1, #0
+ add r2, r5, r2
+ bl FUN_02001300
+ add r5, #0xb8
+ ldr r0, [r5]
+ bl FUN_02012870
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02214804: .word 0x000005DD
+ thumb_func_end MOD56_022146CC
+
+ thumb_func_start MOD56_02214808
+MOD56_02214808: ; 0x02214808
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r0, #0
+ cmp r1, #0
+ bne _0221481A
+ ldr r4, _0221490C ; =0x022164A0
+ mov r7, #4
+ mov r1, #1
+ b _02214820
+_0221481A:
+ ldr r4, _02214910 ; =0x022164C0
+ mov r7, #4
+ mov r1, #0
+_02214820:
+ ldr r0, _02214914 ; =0x000003E2
+ ldr r3, _02214918 ; =0x02216414
+ strh r1, [r5, r0]
+ add r2, sp, #0x14
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, r7, #0
+ mov r1, #0x36
+ bl FUN_02012838
+ add r1, r5, #0
+ add r1, #0xb8
+ mov r6, #0
+ str r0, [r1]
+ cmp r7, #0
+ ble _02214868
+_0221484C:
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xb8
+ add r1, #0xcc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ bl FUN_02012880
+ add r6, r6, #1
+ add r4, #8
+ cmp r6, r7
+ blt _0221484C
+_02214868:
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _0221488C
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_0221488C:
+ mov r1, #9
+ str r1, [sp]
+ mov r1, #0xf
+ lsl r0, r7, #1
+ str r1, [sp, #4]
+ lsl r1, r0, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp, #8]
+ mov r1, #0xd
+ str r1, [sp, #0xc]
+ mov r1, #0x3b
+ sub r0, r1, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r0, #0xc0
+ mov r1, #0xe3
+ lsl r1, r1, #2
+ ldr r0, [r0]
+ add r1, r5, r1
+ mov r2, #2
+ mov r3, #0x10
+ bl FUN_02019064
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ ldr r2, _0221491C ; =0x000001D9
+ add r0, r5, r0
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ mov r3, #0xe3
+ lsl r3, r3, #2
+ str r0, [sp, #0x14]
+ add r0, r5, r3
+ add r2, r3, #0
+ str r0, [sp, #0x20]
+ add r2, #0x56
+ ldrh r2, [r5, r2]
+ add r3, #0x52
+ add r0, sp, #0x14
+ lsl r2, r2, #1
+ add r2, r5, r2
+ ldrh r2, [r2, r3]
+ mov r1, #0
+ mov r3, #0x36
+ bl FUN_020010A8
+ add r1, r5, #0
+ add r1, #0xbc
+ str r0, [r1]
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ mov r0, #1
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0221490C: .word 0x022164A0
+_02214910: .word 0x022164C0
+_02214914: .word 0x000003E2
+_02214918: .word 0x02216414
+_0221491C: .word 0x000001D9
+ thumb_func_end MOD56_02214808
+
+ thumb_func_start MOD56_02214920
+MOD56_02214920: ; 0x02214920
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r6, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _0221493C
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+_0221493C:
+ add r0, r5, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ bl FUN_02001204
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD56_02213BF4
+ cmp r0, #0
+ beq _02214956
+ mov r4, #1
+ mvn r4, r4
+_02214956:
+ mov r0, #1
+ mvn r0, r0
+ cmp r4, r0
+ beq _02214968
+ add r0, r0, #1
+ cmp r4, r0
+ bne _02214978
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+_02214968:
+ ldr r0, _022149D0 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x3b
+ mov r1, #0x24
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02214994
+_02214978:
+ ldr r0, _022149D0 ; =0x000005DD
+ bl FUN_020054C8
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD56_0221617C
+ mov r0, #0x3b
+ mov r1, #0x13
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD56_02216120
+_02214994:
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+ ldr r3, _022149D4 ; =0x000003DE
+ add r0, r5, #0
+ add r2, r5, r3
+ add r3, r3, #4
+ ldrh r3, [r5, r3]
+ add r0, #0xbc
+ ldr r0, [r0]
+ lsl r3, r3, #1
+ mov r1, #0
+ add r2, r2, r3
+ bl FUN_02001300
+ add r5, #0xb8
+ ldr r0, [r5]
+ bl FUN_02012870
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ nop
+_022149D0: .word 0x000005DD
+_022149D4: .word 0x000003DE
+ thumb_func_end MOD56_02214920
+
+ thumb_func_start MOD56_022149D8
+MOD56_022149D8: ; 0x022149D8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ ldr r3, _02214BB0 ; =0x02216434
+ add r5, r0, #0
+ mov r0, #3
+ add r2, sp, #0x2c
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x20]
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r1, sp, #0x28
+ bl FUN_0200143C
+ add r0, sp, #0x28
+ ldrh r0, [r0]
+ add r0, r5, r0
+ ldrb r0, [r0, #0xc]
+ sub r0, r0, #1
+ str r0, [sp, #0x18]
+ ldr r1, [sp, #0x18]
+ mov r0, #0x24
+ mul r0, r1
+ ldr r1, [r5, #4]
+ add r1, r1, r0
+ add r1, #0x3f
+ ldrb r6, [r1]
+ mov r1, #0xf9
+ lsl r1, r1, #2
+ strh r6, [r5, r1]
+ ldr r2, [r5, #4]
+ add r2, #0x45
+ ldrb r2, [r2, r0]
+ add r0, r1, #2
+ mov r1, #0x36
+ strh r2, [r5, r0]
+ ldr r0, [r5, #4]
+ add r0, #0x21
+ ldrb r0, [r0]
+ add r0, r2, r0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x1c]
+ mov r0, #3
+ bl FUN_02012838
+ add r1, r5, #0
+ add r1, #0xb8
+ str r0, [r1]
+ mov r0, #0
+ ldr r4, _02214BB4 ; =0x02216350
+ str r0, [sp, #0x24]
+ add r7, sp, #0x28
+_02214A52:
+ ldr r0, [sp, #0x24]
+ cmp r0, #0
+ bne _02214AC8
+ add r0, r6, #0
+ bl MOD56_02211ECC
+ cmp r0, #0
+ bne _02214A6A
+ cmp r6, #0
+ beq _02214A6A
+ cmp r6, #0x11
+ blo _02214A7E
+_02214A6A:
+ ldrh r0, [r7, #0x16]
+ sub r0, r0, #1
+ strh r0, [r7, #0x16]
+ ldrh r0, [r7, #0x14]
+ sub r0, r0, #1
+ strh r0, [r7, #0x14]
+ ldr r0, [sp, #0x20]
+ sub r0, r0, #1
+ str r0, [sp, #0x20]
+ b _02214ADC
+_02214A7E:
+ cmp r6, #0x10
+ bne _02214AB2
+ ldr r0, [sp, #0x1c]
+ cmp r0, #2
+ bne _02214A9E
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xb8
+ add r1, #0xcc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r3, [r4, #4]
+ mov r2, #0x1a
+ bl FUN_02012880
+ b _02214ADC
+_02214A9E:
+ ldrh r0, [r7, #0x16]
+ sub r0, r0, #1
+ strh r0, [r7, #0x16]
+ ldrh r0, [r7, #0x14]
+ sub r0, r0, #1
+ strh r0, [r7, #0x14]
+ ldr r0, [sp, #0x20]
+ sub r0, r0, #1
+ str r0, [sp, #0x20]
+ b _02214ADC
+_02214AB2:
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xb8
+ add r1, #0xcc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ bl FUN_02012880
+ b _02214ADC
+_02214AC8:
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xb8
+ add r1, #0xcc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ bl FUN_02012880
+_02214ADC:
+ ldr r0, [sp, #0x24]
+ add r4, #8
+ add r0, r0, #1
+ str r0, [sp, #0x24]
+ cmp r0, #3
+ blo _02214A52
+ ldr r0, [sp, #0x20]
+ mov r1, #3
+ sub r0, r1, r0
+ lsl r0, r0, #1
+ add r0, #0xb
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xf
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x20]
+ mov r1, #0xe3
+ lsl r0, r0, #0x19
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x3b
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r0, #0xc0
+ lsl r1, r1, #2
+ ldr r0, [r0]
+ add r1, r5, r1
+ mov r2, #2
+ mov r3, #0x10
+ bl FUN_02019064
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ ldr r2, _02214BB8 ; =0x000001D9
+ add r0, r5, r0
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ add r0, r5, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ mov r1, #0
+ str r0, [sp, #0x2c]
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ add r2, r1, #0
+ mov r3, #0x36
+ bl FUN_020010A8
+ add r1, r5, #0
+ add r1, #0xbc
+ str r0, [r1]
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ ldr r1, [sp, #0x18]
+ add r0, r5, #0
+ bl MOD56_022160E4
+ cmp r6, #0xf
+ bne _02214B6C
+ mov r1, #3
+ b _02214B9A
+_02214B6C:
+ add r0, r6, #0
+ bl MOD56_02211E60
+ cmp r0, #0
+ beq _02214B7A
+ mov r1, #2
+ b _02214B9A
+_02214B7A:
+ cmp r6, #8
+ bne _02214B82
+ mov r1, #0x30
+ b _02214B9A
+_02214B82:
+ add r0, r6, #0
+ bl MOD56_02211EA4
+ cmp r0, #0
+ beq _02214B90
+ mov r1, #0x2f
+ b _02214B9A
+_02214B90:
+ cmp r6, #1
+ bne _02214B98
+ mov r1, #0x31
+ b _02214B9A
+_02214B98:
+ mov r1, #4
+_02214B9A:
+ add r0, r5, #0
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x2b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ ldr r0, [sp, #0x14]
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02214BB0: .word 0x02216434
+_02214BB4: .word 0x02216350
+_02214BB8: .word 0x000001D9
+ thumb_func_end MOD56_022149D8
+
+ thumb_func_start MOD56_02214BBC
+MOD56_02214BBC: ; 0x02214BBC
+ push {r4, r5}
+ ldr r2, _02214BF8 ; =0x000001EF
+ mov r5, #0
+ add r1, r2, #0
+ sub r1, #0x1f
+ add r3, r2, #0
+_02214BC8:
+ ldrh r4, [r0]
+ cmp r4, r3
+ bne _02214BD4
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+_02214BD4:
+ cmp r4, r2
+ bls _02214BDE
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+_02214BDE:
+ ldrh r4, [r0, #0xc]
+ cmp r4, r1
+ bls _02214BEA
+ mov r0, #0
+ pop {r4, r5}
+ bx lr
+_02214BEA:
+ add r5, r5, #1
+ add r0, r0, #2
+ cmp r5, #6
+ blt _02214BC8
+ mov r0, #1
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+_02214BF8: .word 0x000001EF
+ thumb_func_end MOD56_02214BBC
+
+ thumb_func_start MOD56_02214BFC
+MOD56_02214BFC: ; 0x02214BFC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ str r1, [sp]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r6, #0
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _02214C1E
+ ldr r0, [sp]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_02214C1E:
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ bl FUN_02001204
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD56_02213BF4
+ cmp r0, #0
+ beq _02214C36
+ sub r5, r6, #2
+_02214C36:
+ mov r0, #1
+ mvn r0, r0
+ cmp r5, r0
+ beq _02214C4A
+ add r0, r0, #1
+ cmp r5, r0
+ bne _02214C5A
+ ldr r0, [sp]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+_02214C4A:
+ ldr r0, _02214E20 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #0x3b
+ mov r1, #0x13
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _02214DE2
+_02214C5A:
+ ldr r0, _02214E20 ; =0x000005DD
+ bl FUN_020054C8
+ cmp r5, #1
+ beq _02214C66
+ b _02214DD6
+_02214C66:
+ mov r0, #0x3b
+ mov r1, #0x13
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r1, sp, #0xc
+ bl FUN_0200143C
+ add r0, sp, #0xc
+ ldrh r0, [r0]
+ add r0, r4, r0
+ ldrb r5, [r0, #0xc]
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ strh r5, [r4, r0]
+ cmp r5, #0
+ bne _02214C8E
+ b _02214DE2
+_02214C8E:
+ add r0, r4, #0
+ bl MOD56_02211F88
+ sub r1, r5, #1
+ str r0, [sp, #8]
+ mov r0, #0x24
+ add r3, r1, #0
+ ldr r2, [r4, #4]
+ mul r3, r0
+ add r0, r2, r3
+ add r0, #0x3f
+ ldrb r0, [r0]
+ str r0, [sp, #4]
+ add r0, r2, r3
+ add r0, #0x45
+ ldrb r7, [r0]
+ mov r0, #0xf9
+ lsl r0, r0, #2
+ ldrh r1, [r4, r0]
+ ldr r0, [sp, #4]
+ cmp r1, r0
+ bne _02214CC6
+ mov r0, #0xf9
+ lsl r0, r0, #2
+ add r0, r0, #2
+ ldrh r0, [r4, r0]
+ cmp r0, r7
+ beq _02214CE4
+_02214CC6:
+ add r0, r4, #0
+ sub r1, r5, #1
+ bl MOD56_022160E4
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1d
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ mov r6, #1
+ b _02214DE2
+_02214CE4:
+ add r2, #0x24
+ add r0, r2, r3
+ bl MOD56_02214BBC
+ cmp r0, #0
+ bne _02214D0E
+ add r0, r4, #0
+ sub r1, r5, #1
+ bl MOD56_022160E4
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1d
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ mov r6, #1
+ b _02214DE2
+_02214D0E:
+ ldr r0, [sp, #4]
+ bl MOD56_02211EEC
+ cmp r0, #0
+ beq _02214D46
+ ldr r0, [sp, #8]
+ cmp r0, #2
+ bge _02214D46
+ ldr r0, [sp, #4]
+ cmp r0, #0xf
+ bne _02214D30
+ add r0, r4, #0
+ mov r1, #0x34
+ mov r2, #0
+ bl MOD56_02215EA4
+ b _02214D3A
+_02214D30:
+ add r0, r4, #0
+ mov r1, #0x42
+ mov r2, #0
+ bl MOD56_02215EA4
+_02214D3A:
+ mov r0, #0x3b
+ mov r1, #0x1d
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ mov r6, #1
+ b _02214DE2
+_02214D46:
+ ldr r0, [r4, #4]
+ add r0, #0x21
+ ldrb r0, [r0]
+ cmp r7, r0
+ beq _02214D76
+ cmp r7, #0
+ beq _02214D60
+ add r0, r4, #0
+ mov r1, #0x44
+ mov r2, #0
+ bl MOD56_02215EA4
+ b _02214D6A
+_02214D60:
+ add r0, r4, #0
+ mov r1, #0x45
+ mov r2, #0
+ bl MOD56_02215EA4
+_02214D6A:
+ mov r0, #0x3b
+ mov r1, #0x3e
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ mov r6, #1
+ b _02214DE2
+_02214D76:
+ ldr r0, [sp, #4]
+ bl MOD56_02211F10
+ add r7, r0, #0
+ cmp r7, #0x11
+ beq _02214DE2
+ sub r0, r5, #1
+ bl MOD04_021D8480
+ cmp r0, #6
+ bne _02214DE2
+ sub r0, r5, #1
+ bl FUN_02032FDC
+ cmp r0, #0
+ beq _02214DE2
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD56_0221617C
+ add r0, r4, #0
+ sub r1, r5, #1
+ bl MOD56_022160E4
+ add r0, r4, #0
+ mov r1, #0xd
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ ldr r1, _02214E24 ; =0x000001E2
+ add r0, r4, r0
+ bl FUN_0200D858
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r4, r1]
+ cmp r7, #1
+ beq _02214DCA
+ mov r1, #0x2c
+ b _02214DCC
+_02214DCA:
+ mov r1, #0x15
+_02214DCC:
+ mov r0, #0x3b
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ mov r6, #1
+ b _02214DE2
+_02214DD6:
+ cmp r5, #2
+ bne _02214DE2
+ mov r0, #0x3b
+ mov r1, #0x35
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+_02214DE2:
+ cmp r6, #0
+ bne _02214DEC
+ add r0, r4, #0
+ bl MOD56_02216120
+_02214DEC:
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r0, #0xe3
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+ add r0, r4, #0
+ add r0, #0xbc
+ mov r1, #0
+ ldr r0, [r0]
+ add r2, r1, #0
+ bl FUN_02001300
+ add r4, #0xb8
+ ldr r0, [r4]
+ bl FUN_02012870
+ ldr r0, [sp]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02214E20: .word 0x000005DD
+_02214E24: .word 0x000001E2
+ thumb_func_end MOD56_02214BFC
+
+ thumb_func_start MOD56_02214E28
+MOD56_02214E28: ; 0x02214E28
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldr r1, _02214F08 ; =0x021C48B8
+ add r5, r0, #0
+ ldr r2, [r1, #0x48]
+ mov r1, #2
+ tst r1, r2
+ beq _02214E4A
+ mov r1, #0x43
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x2d
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02214F02
+_02214E4A:
+ bl FUN_0203300C
+ cmp r0, #3
+ bne _02214E72
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xe
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02214F02
+_02214E72:
+ bl FUN_0203300C
+ cmp r0, #5
+ bne _02214E9A
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xb
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02214F02
+_02214E9A:
+ bl FUN_0203300C
+ cmp r0, #4
+ beq _02214EAA
+ bl FUN_02033128
+ cmp r0, #0
+ beq _02214ECA
+_02214EAA:
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xe
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02214F02
+_02214ECA:
+ bl FUN_02033250
+ cmp r0, #0
+ beq _02214EDA
+ add r0, r5, #0
+ bl MOD56_02213030
+ b _02214F02
+_02214EDA:
+ bl FUN_0203300C
+ cmp r0, #1
+ bne _02214F02
+ add r0, r5, #0
+ bl MOD56_02216274
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0202DB14
+ mov r0, #0xf1
+ mov r1, #0x1e
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0x30
+ sub r0, #0x14
+ str r1, [r5, r0]
+_02214F02:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02214F08: .word 0x021C48B8
+ thumb_func_end MOD56_02214E28
+
+ thumb_func_start MOD56_02214F0C
+MOD56_02214F0C: ; 0x02214F0C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02214F46
+ mov r0, #0x36
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, _02214F4C ; =0x02216308
+ ldr r2, _02214F50 ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x3b
+ mov r1, #0x42
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02214F46:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02214F4C: .word 0x02216308
+_02214F50: .word 0x000001D9
+ thumb_func_end MOD56_02214F0C
+
+ thumb_func_start MOD56_02214F54
+MOD56_02214F54: ; 0x02214F54
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ add r6, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021AC
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD56_02213BF4
+ cmp r0, #0
+ beq _02214F90
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02214F86
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021EC
+_02214F86:
+ mov r0, #0x3b
+ mov r1, #0x15
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02214FCC
+_02214F90:
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02214F9C
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+_02214F9C:
+ cmp r4, #0
+ bne _02214FC4
+ add r0, r5, #0
+ bl MOD56_02216248
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD56_0221617C
+ bl FUN_020331E8
+ mov r1, #0
+ mov r0, #0xf6
+ mvn r1, r1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0x13
+ sub r0, #0x28
+ str r1, [r5, r0]
+ b _02214FCC
+_02214FC4:
+ mov r0, #0x3b
+ mov r1, #0x15
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02214FCC:
+ add r0, r5, #0
+ bl MOD56_02216120
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02214F54
+
+ thumb_func_start MOD56_02214FD8
+MOD56_02214FD8: ; 0x02214FD8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02215012
+ mov r0, #0x36
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, _02215018 ; =0x02216308
+ ldr r2, _0221501C ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x3b
+ mov r1, #0x2e
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02215012:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02215018: .word 0x02216308
+_0221501C: .word 0x000001D9
+ thumb_func_end MOD56_02214FD8
+
+ thumb_func_start MOD56_02215020
+MOD56_02215020: ; 0x02215020
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ add r6, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021AC
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD56_02213BF4
+ cmp r0, #0
+ beq _0221505C
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02215052
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021EC
+_02215052:
+ mov r0, #0x3b
+ mov r1, #0x2c
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02215098
+_0221505C:
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02215068
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+_02215068:
+ cmp r4, #0
+ bne _02215090
+ add r0, r5, #0
+ bl MOD56_02216248
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD56_0221617C
+ bl FUN_020331E8
+ mov r1, #0
+ mov r0, #0xf6
+ mvn r1, r1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0x13
+ sub r0, #0x28
+ str r1, [r5, r0]
+ b _02215098
+_02215090:
+ mov r0, #0x3b
+ mov r1, #0x2c
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02215098:
+ add r0, r5, #0
+ bl MOD56_02216120
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02215020
+
+ thumb_func_start MOD56_022150A4
+MOD56_022150A4: ; 0x022150A4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ add r6, r1, #0
+ ldrb r4, [r0, #0x1b]
+ bl MOD04_021D853C
+ mov r1, #0x24
+ ldr r2, [r5, #4]
+ mul r1, r0
+ add r0, r2, r1
+ add r0, #0x3f
+ ldrb r0, [r0]
+ cmp r4, #0xc
+ bne _022150D0
+ cmp r0, #5
+ bne _022150D0
+ mov r0, #0x3b
+ mov r1, #0x30
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221517E
+_022150D0:
+ cmp r4, #0xd
+ bne _022150E2
+ cmp r0, #6
+ bne _022150E2
+ mov r0, #0x3b
+ mov r1, #0x30
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221517E
+_022150E2:
+ cmp r4, #0xe
+ bne _022150F4
+ cmp r0, #7
+ bne _022150F4
+ mov r0, #0x3b
+ mov r1, #0x30
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221517E
+_022150F4:
+ cmp r4, #9
+ bne _02215106
+ cmp r0, #2
+ bne _02215106
+ mov r0, #0x3b
+ mov r1, #0x30
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221517E
+_02215106:
+ cmp r4, #0xa
+ bne _02215118
+ cmp r0, #3
+ bne _02215118
+ mov r0, #0x3b
+ mov r1, #0x30
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221517E
+_02215118:
+ cmp r4, #0xb
+ bne _0221512A
+ cmp r0, #4
+ bne _0221512A
+ mov r0, #0x3b
+ mov r1, #0x30
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221517E
+_0221512A:
+ cmp r4, #0xf
+ bne _0221513C
+ cmp r0, #8
+ bne _0221513C
+ mov r0, #0x3b
+ mov r1, #0x30
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221517E
+_0221513C:
+ cmp r4, #0x10
+ bne _02215150
+ cmp r0, #1
+ bne _02215150
+ mov r0, #0x3b
+ mov r1, #0x16
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+_02215150:
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xe
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1d
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r5, #0
+ mov r1, #0x10
+ bl MOD56_0221617C
+ bl FUN_020331E8
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+_0221517E:
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #7
+ mov r2, #0
+ bl MOD56_02215EA4
+ add r0, r5, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_0202DB14
+ mov r0, #0x3b
+ mov r1, #0x30
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ mov r1, #0x1e
+ add r0, #0x14
+ str r1, [r5, r0]
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD56_022150A4
+
+ thumb_func_start MOD56_022151B4
+MOD56_022151B4: ; 0x022151B4
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0203300C
+ cmp r0, #3
+ blt _022151E0
+ mov r1, #0xf6
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ add r0, r4, #0
+ bl MOD56_022160E4
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1b
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ b _022151F4
+_022151E0:
+ bl FUN_02033250
+ cmp r0, #0
+ beq _022151F0
+ add r0, r4, #0
+ bl MOD56_02213030
+ b _022151F4
+_022151F0:
+ mov r0, #0
+ pop {r4, pc}
+_022151F4:
+ mov r0, #0xfb
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD56_022151B4
+
+ thumb_func_start MOD56_02215200
+MOD56_02215200: ; 0x02215200
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0203300C
+ cmp r0, #4
+ bge _02215220
+ bl FUN_02033128
+ cmp r0, #0
+ bne _02215220
+ mov r0, #0
+ bl FUN_02030E7C
+ cmp r0, #0
+ bne _0221525A
+_02215220:
+ mov r1, #0xfb
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ cmp r0, #0
+ beq _02215236
+ add r0, r5, #0
+ mov r1, #0x40
+ mov r2, #0
+ bl MOD56_02215EA4
+ b _0221524A
+_02215236:
+ sub r1, #0x14
+ ldr r1, [r5, r1]
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xe
+ mov r2, #0
+ bl MOD56_02215EA4
+_0221524A:
+ mov r0, #0xfb
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0x1b
+ sub r0, #0x3c
+ str r1, [r5, r0]
+ b _022152A2
+_0221525A:
+ add r0, r5, #0
+ bl MOD56_022151B4
+ cmp r0, #0
+ bne _022152A2
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ cmp r1, #0
+ bne _02215292
+ mov r0, #0xd
+ bl FUN_020315D8
+ cmp r0, #0
+ beq _022152A2
+ bl FUN_0203168C
+ mov r0, #0xe
+ bl FUN_02031588
+ mov r0, #0xfb
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0x31
+ sub r0, #0x3c
+ str r1, [r5, r0]
+ b _022152A2
+_02215292:
+ sub r1, r1, #1
+ str r1, [r5, r0]
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bne _022152A2
+ mov r0, #0xd
+ bl FUN_02031588
+_022152A2:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02215200
+
+ thumb_func_start MOD56_022152A8
+MOD56_022152A8: ; 0x022152A8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD56_022151B4
+ cmp r0, #0
+ bne _022152DA
+ mov r0, #0xe
+ bl FUN_020315D8
+ cmp r0, #0
+ beq _022152DA
+ ldr r0, [r5, #4]
+ ldrb r1, [r0, #0x1b]
+ add r0, sp, #0
+ strh r1, [r0]
+ bl FUN_02031190
+ add r1, sp, #0
+ bl FUN_020316AC
+ mov r0, #0x3b
+ mov r1, #0x32
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_022152DA:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD56_022152A8
+
+ thumb_func_start MOD56_022152E0
+MOD56_022152E0: ; 0x022152E0
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ bl FUN_02031190
+ mov r1, #1
+ sub r0, r1, r0
+ bl FUN_020316E0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD56_022151B4
+ cmp r0, #0
+ bne _0221534A
+ cmp r4, #0
+ beq _0221534A
+ ldr r0, [r5, #4]
+ ldrb r0, [r0, #0x1b]
+ bl MOD56_02211F10
+ lsl r0, r0, #0x10
+ ldrh r1, [r4]
+ lsr r0, r0, #0x10
+ cmp r1, r0
+ beq _0221531C
+ ldr r0, [r5, #4]
+ ldrb r0, [r0, #0x1b]
+ cmp r1, r0
+ bne _0221532C
+_0221531C:
+ mov r0, #0xf
+ bl FUN_02031588
+ mov r0, #0x3b
+ mov r1, #0x33
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _0221534A
+_0221532C:
+ bl MOD04_021D853C
+ add r1, r0, #0
+ add r0, r5, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xc
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1b
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_0221534A:
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD56_022152E0
+
+ thumb_func_start MOD56_02215350
+MOD56_02215350: ; 0x02215350
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD56_022151B4
+ cmp r0, #0
+ bne _02215382
+ mov r0, #0xf
+ bl FUN_020315D8
+ cmp r0, #0
+ beq _02215382
+ bl FUN_0202DBE0
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020334E8
+ mov r0, #0x12
+ bl FUN_02031588
+ mov r0, #0x3b
+ mov r1, #0x34
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02215382:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02215350
+
+ thumb_func_start MOD56_02215388
+MOD56_02215388: ; 0x02215388
+ push {r4, r5, lr}
+ sub sp, #0x2c
+ add r4, r0, #0
+ add r5, r1, #0
+ bl MOD56_022151B4
+ cmp r0, #0
+ bne _02215476
+ mov r0, #0x12
+ bl FUN_020315D8
+ cmp r0, #0
+ beq _02215476
+ add r0, r4, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r1, sp, #0xc
+ mov r2, #0x36
+ bl FUN_020339B4
+ add r0, r4, #0
+ bl MOD56_02216120
+ bl MOD04_021D853C
+ mov r1, #0x24
+ ldr r2, [r4, #4]
+ mul r1, r0
+ add r0, r2, r1
+ add r0, #0x3f
+ ldrb r1, [r0]
+ cmp r1, #0xf
+ beq _022153CE
+ cmp r1, #8
+ bne _022153DA
+_022153CE:
+ mov r0, #0xed
+ mov r2, #7
+ lsl r0, r0, #2
+ mov r1, #8
+ str r2, [r4, r0]
+ b _02215450
+_022153DA:
+ cmp r1, #9
+ beq _022153E2
+ cmp r1, #2
+ bne _022153EE
+_022153E2:
+ mov r0, #0xed
+ mov r2, #1
+ lsl r0, r0, #2
+ mov r1, #2
+ str r2, [r4, r0]
+ b _02215450
+_022153EE:
+ cmp r1, #0xa
+ beq _022153F6
+ cmp r1, #3
+ bne _02215402
+_022153F6:
+ mov r0, #0xed
+ mov r2, #2
+ lsl r0, r0, #2
+ mov r1, #3
+ str r2, [r4, r0]
+ b _02215450
+_02215402:
+ cmp r1, #0xb
+ beq _0221540A
+ cmp r1, #4
+ bne _02215416
+_0221540A:
+ mov r0, #0xed
+ mov r2, #3
+ lsl r0, r0, #2
+ mov r1, #4
+ str r2, [r4, r0]
+ b _02215450
+_02215416:
+ cmp r1, #0xc
+ beq _0221541E
+ cmp r1, #5
+ bne _0221542A
+_0221541E:
+ mov r0, #0xed
+ mov r2, #4
+ lsl r0, r0, #2
+ mov r1, #5
+ str r2, [r4, r0]
+ b _02215450
+_0221542A:
+ cmp r1, #0xd
+ beq _02215432
+ cmp r1, #6
+ bne _0221543E
+_02215432:
+ mov r0, #0xed
+ mov r2, #5
+ lsl r0, r0, #2
+ mov r1, #6
+ str r2, [r4, r0]
+ b _02215450
+_0221543E:
+ cmp r1, #0xe
+ beq _02215446
+ cmp r1, #7
+ bne _02215450
+_02215446:
+ mov r0, #0xed
+ mov r2, #6
+ lsl r0, r0, #2
+ mov r1, #7
+ str r2, [r4, r0]
+_02215450:
+ add r0, r4, #0
+ bl MOD56_0221617C
+ mov r0, #1
+ bl FUN_02031400
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x36
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r5, #2
+_02215476:
+ add r0, r5, #0
+ add sp, #0x2c
+ pop {r4, r5, pc}
+ thumb_func_end MOD56_02215388
+
+ thumb_func_start MOD56_0221547C
+MOD56_0221547C: ; 0x0221547C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r0, #0xc0
+ add r4, r1, #0
+ ldr r0, [r0]
+ mov r1, #3
+ bl FUN_02018744
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ add r2, r5, #0
+ str r3, [sp, #8]
+ mov r0, #0x36
+ str r0, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ mov r0, #0x5c
+ mov r1, #5
+ bl FUN_020068C8
+ mov r0, #0xf3
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ mov r1, #0x12
+ sub r0, #0x1c
+ str r1, [r5, r0]
+ add r0, r4, #0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD56_0221547C
+
+ thumb_func_start MOD56_022154BC
+MOD56_022154BC: ; 0x022154BC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r0, #0xc0
+ add r7, r1, #0
+ ldr r0, [r0]
+ mov r1, #3
+ bl FUN_02018744
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x36
+ add r2, r5, #0
+ str r0, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ mov r0, #0x5c
+ mov r1, #6
+ mov r3, #1
+ bl FUN_020068C8
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0x33
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0xca
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02215532
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_02215532:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x1a
+ str r0, [sp, #4]
+ mov r0, #0xe
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r0, #0xc0
+ mov r1, #0xe7
+ lsl r1, r1, #2
+ mov r2, #3
+ ldr r0, [r0]
+ add r1, r5, r1
+ add r3, r2, #0
+ bl FUN_02019064
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r1, sp, #0x14
+ bl FUN_0200143C
+ add r0, sp, #0x14
+ ldrh r0, [r0]
+ add r0, r5, r0
+ ldrb r0, [r0, #0xc]
+ sub r0, r0, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x20
+ bl FUN_0200A8E0
+ mov r2, #0x16
+ add r0, r5, #0
+ lsl r2, r2, #4
+ add r0, #0xc8
+ ldr r1, [r5, r2]
+ sub r2, #8
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02215964 ; =0x00010200
+ add r2, #0x61
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BDE0
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ add r0, r5, #0
+ mov r1, #0x29
+ mov r2, #0
+ bl MOD56_02215EA4
+ add r0, r5, #0
+ mov r2, #0x16
+ add r0, #0xcc
+ lsl r2, r2, #4
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x21
+ bl FUN_0200A8E0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02215964 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0x61
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ mov r0, #0x36
+ bl FUN_02023928
+ add r6, r0, #0
+ ldr r0, [r5]
+ add r1, r4, #0
+ bl FUN_020283E8
+ add r1, r0, #0
+ add r0, r6, #0
+ bl FUN_0202395C
+ add r0, r5, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #0
+ add r2, r6, #0
+ bl FUN_0200ABC0
+ add r0, r6, #0
+ bl FUN_02016A18
+ add r0, r5, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x4e
+ bl FUN_0200A8E0
+ mov r2, #0x16
+ add r0, r5, #0
+ lsl r2, r2, #4
+ add r0, #0xc8
+ ldr r1, [r5, r2]
+ sub r2, #8
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+ mov r1, #0x16
+ lsl r1, r1, #4
+ mov r0, #0
+ ldr r1, [r5, r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xce
+ sub r3, r1, r0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02215964 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0x61
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ mov r2, #0x16
+ add r0, #0xcc
+ lsl r2, r2, #4
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x22
+ bl FUN_0200A8E0
+ mov r0, #0x20
+ str r0, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02215964 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0x61
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ ldr r0, [r5]
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0202822C
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #0
+ mov r3, #4
+ bl FUN_0200AD38
+ add r0, r5, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x23
+ bl FUN_0200A8E0
+ mov r2, #0x16
+ add r0, r5, #0
+ lsl r2, r2, #4
+ add r0, #0xc8
+ ldr r1, [r5, r2]
+ sub r2, #8
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+ mov r0, #0x30
+ str r0, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02215964 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0x61
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r3, #0x1e
+ bl FUN_0201BDE0
+ ldr r0, [r5]
+ add r1, r4, #0
+ mov r2, #2
+ bl FUN_0202822C
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #0
+ mov r3, #4
+ bl FUN_0200AD38
+ add r0, r5, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x24
+ bl FUN_0200A8E0
+ mov r2, #0x16
+ add r0, r5, #0
+ lsl r2, r2, #4
+ add r0, #0xc8
+ ldr r1, [r5, r2]
+ sub r2, #8
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+ mov r1, #0x16
+ lsl r1, r1, #4
+ mov r0, #0
+ ldr r1, [r5, r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r6, r0, #0
+ mov r0, #0x30
+ str r0, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02215964 ; =0x00010200
+ mov r3, #0xce
+ str r0, [sp, #8]
+ mov r1, #0
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0x61
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ sub r3, r3, r6
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ mov r2, #0x16
+ add r0, #0xcc
+ lsl r2, r2, #4
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x25
+ bl FUN_0200A8E0
+ mov r0, #0x40
+ str r0, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02215964 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0x61
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ ldr r0, [r5]
+ add r1, r4, #0
+ mov r2, #3
+ bl FUN_0202822C
+ add r6, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #0
+ add r2, r6, #0
+ mov r3, #4
+ bl FUN_0200AD38
+ cmp r6, #1
+ bne _02215810
+ add r0, r5, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x26
+ bl FUN_0200A8E0
+ b _02215822
+_02215810:
+ add r0, r5, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x4f
+ bl FUN_0200A8E0
+_02215822:
+ mov r2, #0x16
+ add r0, r5, #0
+ lsl r2, r2, #4
+ add r0, #0xc8
+ ldr r1, [r5, r2]
+ sub r2, #8
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+ mov r1, #0x16
+ lsl r1, r1, #4
+ mov r0, #0
+ ldr r1, [r5, r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r6, r0, #0
+ mov r0, #0x40
+ str r0, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02215964 ; =0x00010200
+ mov r3, #0xce
+ str r0, [sp, #8]
+ mov r1, #0
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0x61
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ sub r3, r3, r6
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ mov r2, #0x16
+ add r0, #0xcc
+ lsl r2, r2, #4
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x27
+ bl FUN_0200A8E0
+ mov r0, #0x50
+ str r0, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02215964 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0x61
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ ldr r0, [r5]
+ add r1, r4, #0
+ mov r2, #6
+ bl FUN_0202822C
+ add r2, r0, #0
+ beq _0221594C
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xc8
+ mov r1, #2
+ ldr r0, [r0]
+ add r3, r1, #0
+ bl FUN_0200AD38
+ ldr r0, [r5]
+ add r1, r4, #0
+ mov r2, #4
+ bl FUN_0202822C
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #0
+ mov r3, #4
+ bl FUN_0200AD38
+ ldr r0, [r5]
+ add r1, r4, #0
+ mov r2, #5
+ bl FUN_0202822C
+ add r2, r0, #0
+ add r0, r5, #0
+ add r0, #0xc8
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_0200B764
+ add r0, r5, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x28
+ bl FUN_0200A8E0
+ mov r2, #0x16
+ add r0, r5, #0
+ lsl r2, r2, #4
+ add r0, #0xc8
+ ldr r1, [r5, r2]
+ sub r2, #8
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+ mov r1, #0x16
+ lsl r1, r1, #4
+ mov r0, #0
+ ldr r1, [r5, r1]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ mov r0, #0x60
+ str r0, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02215964 ; =0x00010200
+ mov r4, #0xce
+ str r0, [sp, #8]
+ mov r1, #0
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ str r1, [sp, #0xc]
+ add r2, #0x61
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ sub r3, r4, r3
+ bl FUN_0201BDE0
+_0221594C:
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ mov r0, #0x3b
+ mov r1, #0x36
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r7, #0
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02215964: .word 0x00010200
+ thumb_func_end MOD56_022154BC
+
+ thumb_func_start MOD56_02215968
+MOD56_02215968: ; 0x02215968
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _02215984
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_02215984:
+ add r0, r5, #0
+ bl MOD56_02213BF4
+ cmp r0, #0
+ beq _02215996
+ mov r0, #0x3b
+ mov r1, #0x37
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02215996:
+ ldr r0, _022159AC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _022159A8
+ mov r0, #0x3b
+ mov r1, #0x37
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_022159A8:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022159AC: .word 0x021C48B8
+ thumb_func_end MOD56_02215968
+
+ thumb_func_start MOD56_022159B0
+MOD56_022159B0: ; 0x022159B0
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ add r4, r1, #0
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200CCF8
+ mov r0, #0xe7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_02018744
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ mov r1, #3
+ bl FUN_02018744
+ add r0, r5, #0
+ bl MOD56_02216120
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ add r2, r5, #0
+ str r3, [sp, #8]
+ mov r0, #0x36
+ str r0, [sp, #0xc]
+ add r2, #0xc0
+ ldr r2, [r2]
+ mov r0, #0x5c
+ mov r1, #5
+ bl FUN_020068C8
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r5, #0
+ mov r2, #0x16
+ add r0, #0xcc
+ lsl r2, r2, #4
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ mov r1, #0x12
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ ldr r0, _02215A88 ; =0x000F0E00
+ add r2, #0x61
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BDE0
+ mov r0, #0xd7
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ add r0, r5, #0
+ bl MOD56_02212EFC
+ add r0, r5, #0
+ bl MOD56_02213A40
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD56_022138A4
+ ldr r1, [r5, #4]
+ add r0, r5, #0
+ ldrb r1, [r1, #0x1b]
+ bl MOD56_0221617C
+ mov r0, #0x33
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ mov r0, #0x3b
+ mov r1, #0x13
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ sub r1, #0x14
+ str r1, [r5, #8]
+ add r0, r4, #0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02215A88: .word 0x000F0E00
+ thumb_func_end MOD56_022159B0
+
+ thumb_func_start MOD56_02215A8C
+MOD56_02215A8C: ; 0x02215A8C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02215AC6
+ mov r0, #0x36
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, _02215ACC ; =0x02216308
+ ldr r2, _02215AD0 ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x3b
+ mov r1, #0x39
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02215AC6:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02215ACC: .word 0x02216308
+_02215AD0: .word 0x000001D9
+ thumb_func_end MOD56_02215A8C
+
+ thumb_func_start MOD56_02215AD4
+MOD56_02215AD4: ; 0x02215AD4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ add r6, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021AC
+ add r4, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _02215AFE
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+_02215AFE:
+ mov r0, #0
+ mvn r0, r0
+ cmp r4, r0
+ bne _02215B0A
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+_02215B0A:
+ cmp r4, #0
+ bne _02215B26
+ add r0, r5, #0
+ mov r1, #0x19
+ mov r2, #1
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x3a
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ mov r1, #1
+ add r0, #0x14
+ b _02215B32
+_02215B26:
+ add r0, r5, #0
+ bl MOD56_02216120
+ mov r0, #0x3b
+ mov r1, #0x13
+ lsl r0, r0, #4
+_02215B32:
+ str r1, [r5, r0]
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD56_02215AD4
+
+ thumb_func_start MOD56_02215B38
+MOD56_02215B38: ; 0x02215B38
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _02215B54
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_02215B54:
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ cmp r1, #1
+ bne _02215B66
+ mov r1, #0
+ str r1, [r5, r0]
+ bl FUN_020331C4
+_02215B66:
+ bl FUN_02031810
+ cmp r0, #0
+ bne _02215B8C
+ ldr r0, [r5]
+ bl FUN_0202858C
+ add r0, r5, #0
+ mov r1, #0x1a
+ mov r2, #1
+ bl MOD56_02215EA4
+ mov r1, #0x3b
+ lsl r0, r1, #4
+ str r1, [r5, r0]
+ mov r0, #0xf1
+ mov r1, #0x1e
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_02215B8C:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD56_02215B38
+
+ thumb_func_start MOD56_02215B90
+MOD56_02215B90: ; 0x02215B90
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _02215BAC
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_02215BAC:
+ mov r1, #0xf1
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ sub r0, r0, #1
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ cmp r0, #0
+ bne _02215BD0
+ add r0, r1, #0
+ mov r2, #8
+ sub r0, #0x10
+ str r2, [r5, r0]
+ mov r0, #0x22
+ sub r1, #0x14
+ str r0, [r5, r1]
+ add r0, r5, #0
+ bl MOD56_02216120
+_02215BD0:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD56_02215B90
+
+ thumb_func_start MOD56_02215BD4
+MOD56_02215BD4: ; 0x02215BD4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0
+ add r4, r1, #0
+ add r1, r0, #0
+ bl FUN_020334E8
+ mov r0, #0x10
+ bl FUN_020315D8
+ cmp r0, #0
+ bne _02215BF0
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_02215BF0:
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02215C24
+ mov r0, #0x36
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, _02215C28 ; =0x02216308
+ ldr r2, _02215C2C ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x3b
+ mov r1, #0x3d
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02215C24:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02215C28: .word 0x02216308
+_02215C2C: .word 0x000001D9
+ thumb_func_end MOD56_02215BD4
+
+ thumb_func_start MOD56_02215C30
+MOD56_02215C30: ; 0x02215C30
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _02215C4C
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_02215C4C:
+ bl FUN_02033138
+ cmp r0, #0
+ bne _02215C64
+ bl FUN_02033128
+ cmp r0, #0
+ bne _02215C64
+ bl FUN_0203300C
+ cmp r0, #3
+ blt _02215C84
+_02215C64:
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021EC
+ add r0, r5, #0
+ mov r1, #0x40
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1c
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02215D18
+_02215C84:
+ bl FUN_02033250
+ cmp r0, #0
+ beq _02215CA0
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021EC
+ add r0, r5, #0
+ bl MOD56_02213030
+ b _02215D18
+_02215CA0:
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _02215CB8
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+_02215CB8:
+ cmp r0, #0
+ bne _02215CF0
+ add r0, r5, #0
+ mov r1, #0x48
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ ldr r1, _02215D1C ; =0x000001E2
+ add r0, r5, r0
+ bl FUN_0200D858
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r1, #0xfb
+ mov r0, #1
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ mov r2, #0x30
+ sub r0, #0x3c
+ str r2, [r5, r0]
+ mov r0, #0x1e
+ sub r1, #0x28
+ str r0, [r5, r1]
+ b _02215D08
+_02215CF0:
+ add r0, r5, #0
+ bl MOD56_02216120
+ bl FUN_0203323C
+ mov r0, #0xf1
+ mov r1, #0x14
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ mov r1, #0x40
+ sub r0, #0x14
+ str r1, [r5, r0]
+_02215D08:
+ bl FUN_020334DC
+ add r1, r0, #0
+ str r0, [r5, #4]
+ add r1, #0x22
+ ldrb r1, [r1]
+ add r0, #0x21
+ strb r1, [r0]
+_02215D18:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02215D1C: .word 0x000001E2
+ thumb_func_end MOD56_02215C30
+
+ thumb_func_start MOD56_02215D20
+MOD56_02215D20: ; 0x02215D20
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _02215D5A
+ mov r0, #0x36
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xc0
+ ldr r0, [r0]
+ ldr r1, _02215D60 ; =0x02216308
+ ldr r2, _02215D64 ; =0x000001D9
+ mov r3, #0xb
+ bl FUN_02002198
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x3b
+ mov r1, #0x3f
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+_02215D5A:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_02215D60: .word 0x02216308
+_02215D64: .word 0x000001D9
+ thumb_func_end MOD56_02215D20
+
+ thumb_func_start MOD56_02215D68
+MOD56_02215D68: ; 0x02215D68
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0203300C
+ cmp r0, #3
+ blt _02215D96
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021EC
+ add r0, r5, #0
+ mov r1, #0x40
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0x3b
+ mov r1, #0x1c
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ b _02215E6A
+_02215D96:
+ bl FUN_02033250
+ cmp r0, #0
+ beq _02215DB2
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021EC
+ add r0, r5, #0
+ bl MOD56_02213030
+ b _02215E6A
+_02215DB2:
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x36
+ bl FUN_020021AC
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ bne _02215DCA
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02215DCA:
+ cmp r0, #0
+ bne _02215E58
+ mov r0, #0xf9
+ lsl r0, r0, #2
+ ldrh r0, [r5, r0]
+ bl MOD56_02211F10
+ add r6, r0, #0
+ cmp r6, #0x11
+ beq _02215E58
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ ldrh r0, [r5, r0]
+ sub r0, r0, #1
+ bl MOD04_021D8480
+ cmp r0, #6
+ bne _02215E58
+ mov r0, #0xfa
+ lsl r0, r0, #2
+ ldrh r0, [r5, r0]
+ sub r0, r0, #1
+ bl FUN_02032FDC
+ cmp r0, #0
+ beq _02215E58
+ mov r0, #0
+ bl FUN_02031400
+ add r0, r5, #0
+ bl MOD56_022161DC
+ add r0, r5, #0
+ add r1, r6, #0
+ bl MOD56_0221617C
+ mov r1, #0xfa
+ lsl r1, r1, #2
+ ldrh r1, [r5, r1]
+ add r0, r5, #0
+ sub r1, r1, #1
+ bl MOD56_022160E4
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0
+ bl MOD56_02215EA4
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ ldr r1, _02215E70 ; =0x000001E2
+ add r0, r5, r0
+ bl FUN_0200D858
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ cmp r6, #1
+ beq _02215E4C
+ mov r0, #0x3b
+ mov r1, #0x2c
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02215E4C:
+ mov r0, #0x3b
+ mov r1, #0x15
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02215E58:
+ add r0, r5, #0
+ bl MOD56_02216120
+ mov r0, #0x3b
+ mov r1, #0x13
+ lsl r0, r0, #4
+ str r1, [r5, r0]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+_02215E6A:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02215E70: .word 0x000001E2
+ thumb_func_end MOD56_02215D68
+
+ thumb_func_start MOD56_02215E74
+MOD56_02215E74: ; 0x02215E74
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ bl FUN_02031810
+ cmp r0, #0
+ bne _02215E9C
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x36
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r4, #2
+_02215E9C:
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02215E74
+
+ thumb_func_start MOD56_02215EA4
+MOD56_02215EA4: ; 0x02215EA4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r0, #0xc4
+ ldr r0, [r0]
+ add r4, r1, #0
+ add r6, r2, #0
+ bl LoadPlayerDataAddress
+ bl FUN_02024FF4
+ add r7, r0, #0
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02215EE0
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_02215EE0:
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02215F04
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_02215F04:
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #8
+ beq _02215F30
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _02215F30
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD7C
+ mov r0, #0x5e
+ mov r1, #8
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_02215F30:
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _02215FEC ; =0x0000012D
+ mov r1, #0xcf
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r0, #0xc0
+ lsl r1, r1, #2
+ mov r2, #2
+ ldr r0, [r0]
+ add r1, r5, r1
+ add r3, r2, #0
+ bl FUN_02019064
+ cmp r6, #0
+ beq _02215F70
+ add r0, r5, #0
+ mov r2, #0x56
+ add r0, #0xd0
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ add r1, r4, #0
+ bl FUN_0200A8E0
+ b _02215F82
+_02215F70:
+ add r0, r5, #0
+ mov r2, #0x56
+ add r0, #0xcc
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ add r1, r4, #0
+ bl FUN_0200A8E0
+_02215F82:
+ mov r2, #0x57
+ add r0, r5, #0
+ lsl r2, r2, #2
+ add r0, #0xc8
+ ldr r1, [r5, r2]
+ sub r2, r2, #4
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ ldr r2, _02215FF0 ; =0x000001E2
+ add r0, r5, r0
+ mov r1, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ mov r0, #1
+ bl FUN_02002B60
+ mov r0, #0
+ bl FUN_02002B7C
+ mov r3, #0
+ str r3, [sp]
+ str r7, [sp, #4]
+ mov r2, #0x57
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ str r3, [sp, #8]
+ lsl r2, r2, #2
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02215FEC: .word 0x0000012D
+_02215FF0: .word 0x000001E2
+ thumb_func_end MOD56_02215EA4
+
+ thumb_func_start MOD56_02215FF4
+MOD56_02215FF4: ; 0x02215FF4
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD56_02216274
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02216024
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_02216024:
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02216048
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019178
+_02216048:
+ mov r3, #4
+ str r3, [sp]
+ mov r0, #0x17
+ str r0, [sp, #4]
+ mov r0, #0x10
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ mov r0, #0x69
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r0, #0xc0
+ mov r1, #0xdb
+ lsl r1, r1, #2
+ ldr r0, [r0]
+ add r1, r5, r1
+ mov r2, #2
+ bl FUN_02019064
+ add r0, r5, #0
+ mov r2, #0x56
+ add r0, #0xd0
+ lsl r2, r2, #2
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ add r1, r4, #0
+ bl FUN_0200A8E0
+ mov r2, #0x57
+ add r0, r5, #0
+ lsl r2, r2, #2
+ add r0, #0xc8
+ ldr r1, [r5, r2]
+ sub r2, r2, #4
+ ldr r0, [r0]
+ ldr r2, [r5, r2]
+ bl FUN_0200B7B8
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ ldr r2, _022160E0 ; =0x000001D9
+ add r0, r5, r0
+ mov r1, #1
+ mov r3, #0xb
+ bl FUN_0200CCA4
+ mov r3, #0
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ str r3, [sp]
+ mov r2, #0xff
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ add r2, #0x5d
+ ldr r2, [r5, r2]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0xdb
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_02019220
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_022160E0: .word 0x000001D9
+ thumb_func_end MOD56_02215FF4
+
+ thumb_func_start MOD56_022160E4
+MOD56_022160E4: ; 0x022160E4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0
+ add r6, r1, #0
+ mvn r0, r0
+ cmp r6, r0
+ beq _0221611C
+ mov r0, #0x36
+ bl FUN_02023928
+ add r4, r0, #0
+ ldr r0, [r5]
+ add r1, r6, #0
+ bl FUN_020283A4
+ add r1, r0, #0
+ add r0, r4, #0
+ bl FUN_0202395C
+ add r5, #0xc8
+ ldr r0, [r5]
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_0200ABC0
+ add r0, r4, #0
+ bl FUN_02016A18
+_0221611C:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD56_022160E4
+
+ thumb_func_start MOD56_02216120
+MOD56_02216120: ; 0x02216120
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD56_02216274
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #8
+ beq _02216154
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _02216154
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD7C
+ mov r0, #0x5e
+ mov r1, #8
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_02216154:
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _02216178
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+_02216178:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02216120
+
+ thumb_func_start MOD56_0221617C
+MOD56_0221617C: ; 0x0221617C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, [r5, #4]
+ ldrb r0, [r1, #0x1b]
+ cmp r0, r4
+ beq _022161C8
+ add r0, r4, #0
+ strb r4, [r1, #0x1b]
+ bl MOD56_02211EA4
+ cmp r0, #0
+ bne _022161C8
+ cmp r4, #8
+ beq _022161C8
+ cmp r4, #1
+ bne _022161A8
+ mov r0, #0
+ mov r1, #0x1e
+ bl FUN_020053CC
+ b _022161C8
+_022161A8:
+ cmp r4, #0x10
+ bne _022161C8
+ ldr r0, _022161D8 ; =0x00000497
+ mov r1, #0x5a
+ bl FUN_0200488C
+ mov r0, #7
+ mov r1, #0x12
+ mov r2, #0
+ bl FUN_02004828
+ mov r0, #0x7f
+ mov r1, #0x1e
+ mov r2, #1
+ bl FUN_0200538C
+_022161C8:
+ ldr r0, [r5, #4]
+ mov r1, #0x24
+ bl MOD04_021D8478
+ add r0, r5, #0
+ bl MOD56_0221341C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022161D8: .word 0x00000497
+ thumb_func_end MOD56_0221617C
+
+ thumb_func_start MOD56_022161DC
+MOD56_022161DC: ; 0x022161DC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, [r4, #4]
+ add r0, r2, #0
+ add r0, #0x21
+ ldrb r1, [r0]
+ mov r0, #1
+ add r2, #0x21
+ sub r0, r0, r1
+ strb r0, [r2]
+ ldr r0, [r4, #4]
+ add r0, #0x21
+ ldrb r0, [r0]
+ bl MOD04_021D8678
+ ldr r0, [r4, #4]
+ mov r1, #0x24
+ bl MOD04_021D8478
+ ldr r0, [r4, #4]
+ add r0, #0x21
+ ldrb r0, [r0]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD56_022161DC
+
+ thumb_func_start MOD56_0221620C
+MOD56_0221620C: ; 0x0221620C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, [r4, #4]
+ add r0, r2, #0
+ add r0, #0x22
+ ldrb r1, [r0]
+ mov r0, #1
+ add r2, #0x22
+ sub r0, r0, r1
+ strb r0, [r2]
+ ldr r1, [r4, #4]
+ add r0, r1, #0
+ add r0, #0x22
+ ldrb r0, [r0]
+ add r1, #0x21
+ strb r0, [r1]
+ ldr r0, [r4, #4]
+ add r0, #0x21
+ ldrb r0, [r0]
+ bl MOD04_021D8678
+ ldr r0, [r4, #4]
+ mov r1, #0x24
+ bl MOD04_021D8478
+ ldr r0, [r4, #4]
+ add r0, #0x22
+ ldrb r0, [r0]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD56_0221620C
+
+ thumb_func_start MOD56_02216248
+MOD56_02216248: ; 0x02216248
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ add r0, r1, #0
+ add r0, #0x22
+ ldrb r0, [r0]
+ add r1, #0x21
+ strb r0, [r1]
+ ldr r0, [r4, #4]
+ add r0, #0x21
+ ldrb r0, [r0]
+ bl MOD04_021D8678
+ ldr r0, [r4, #4]
+ mov r1, #0x24
+ bl MOD04_021D8478
+ ldr r0, [r4, #4]
+ add r0, #0x22
+ ldrb r0, [r0]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02216248
+
+ thumb_func_start MOD56_02216274
+MOD56_02216274: ; 0x02216274
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #6
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _022162DC
+ bl FUN_0200DC24
+ mov r0, #6
+ mov r1, #0
+ lsl r0, r0, #6
+ str r1, [r4, r0]
+ sub r0, #8
+ ldr r0, [r4, r0]
+ cmp r0, #8
+ beq _022162B8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _022162B8
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD7C
+ mov r0, #0x5e
+ mov r1, #8
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+_022162B8:
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019048
+ cmp r0, #0
+ beq _022162DC
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r0, #0xcf
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+_022162DC:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD56_02216274
+
+ .section .rodata
+ ; 0x022162E0
+ .incbin "baserom.nds", 0x2A5E80, 0x19C
+
+ .section .data
+ ; 0x02216480
+ .incbin "baserom.nds", 0x2A6020, 0x180
diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s
new file mode 100644
index 00000000..7208de4e
--- /dev/null
+++ b/arm9/modules/57/asm/module_57.s
@@ -0,0 +1,4303 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD57_021D74E0
+MOD57_021D74E0: ; 0x021D74E0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D76E8 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D76EC ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ mov r2, #0xa
+ mov r0, #3
+ mov r1, #0x19
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ ldr r1, _021D76F0 ; =0x00003320
+ add r0, r5, #0
+ mov r2, #0x19
+ bl FUN_02006268
+ ldr r2, _021D76F0 ; =0x00003320
+ mov r1, #0
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl FUN_0200628C
+ add r1, r4, #0
+ add r1, #0xb4
+ str r0, [r1]
+ mov r0, #0x19
+ bl FUN_02016B94
+ str r0, [r4]
+ add r0, r4, #0
+ bl MOD57_021D79AC
+ bl MOD57_021D7A14
+ ldr r0, [r4]
+ bl MOD57_021D7B94
+ add r0, r4, #0
+ bl MOD57_021D7CA4
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ mov r1, #0
+ mov r0, #0x38
+ add r2, r1, #0
+ bl FUN_0200433C
+ ldr r0, _021D76F4 ; =0x000032F0
+ add r0, r4, r0
+ bl MOD57_021D95A8
+ ldr r0, _021D76F8 ; =0x00000695
+ bl FUN_020054C8
+ ldr r0, _021D76FC ; =0x000030E4
+ add r0, r4, r0
+ bl MOD57_021D9184
+ mov r0, #0
+ add r1, r0, #0
+ add r2, sp, #0xc
+ add r5, r0, #0
+ mov r6, #1
+_021D7598:
+ add r3, r4, #0
+ add r3, #0xb4
+ ldr r3, [r3]
+ add r3, r3, r1
+ ldr r3, [r3, #0x48]
+ lsl r3, r3, #0x1f
+ asr r3, r3, #0x1f
+ beq _021D75AC
+ strb r6, [r2]
+ b _021D75AE
+_021D75AC:
+ strb r5, [r2]
+_021D75AE:
+ add r0, r0, #1
+ add r1, r1, #4
+ add r2, r2, #1
+ cmp r0, #8
+ blt _021D7598
+ ldr r0, _021D76FC ; =0x000030E4
+ add r1, sp, #0xc
+ add r0, r4, r0
+ bl MOD57_021D92F4
+ ldr r0, [r4]
+ add r1, r4, #4
+ bl MOD57_021D899C
+ mov r5, #0
+ mov r6, #1
+_021D75CE:
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldrb r0, [r0, #2]
+ asr r0, r5
+ tst r0, r6
+ beq _021D75E4
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD57_021D8428
+_021D75E4:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #8
+ blo _021D75CE
+ ldr r0, [r4]
+ mov r1, #3
+ bl FUN_02017CD0
+ add r1, r4, #0
+ add r1, #0xb4
+ ldr r1, [r1]
+ add r0, r4, #4
+ bl MOD57_021D89F0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldrb r0, [r0, #4]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ beq _021D761E
+ ldr r2, _021D7700 ; =0x0000330C
+ add r0, r4, #0
+ ldr r2, [r4, r2]
+ add r0, #0x54
+ mov r1, #1
+ bl MOD57_021D9144
+_021D761E:
+ mov r1, #0xc3
+ mov r5, #0
+ lsl r1, r1, #6
+ str r5, [r4, r1]
+ ldr r0, _021D7704 ; =0x00003318
+ sub r2, r5, #1
+ strb r5, [r4, r0]
+ add r1, #0x14
+ str r2, [r4, r1]
+ add r1, r0, #0
+ sub r1, #0x2c
+ str r5, [r4, r1]
+ add r0, r0, #5
+ ldr r7, _021D76FC ; =0x000030E4
+ strb r5, [r4, r0]
+_021D763C:
+ ldr r0, _021D7708 ; =0x00003310
+ add r2, r4, r5
+ mov r1, #0
+ strb r1, [r2, r0]
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r1, [r0]
+ lsl r0, r5, #2
+ add r1, #0x48
+ ldr r0, [r1, r0]
+ lsl r1, r0, #0x1f
+ asr r1, r1, #0x1f
+ beq _021D76A8
+ asr r0, r0, #1
+ bl MOD57_021D870C
+ add r6, r0, #0
+ cmp r6, #4
+ bhi _021D7680
+ bne _021D7670
+ add r0, r4, r7
+ add r1, r5, #0
+ mov r2, #0
+ bl MOD57_021D951C
+ b _021D7680
+_021D7670:
+ mov r2, #3
+ sub r2, r2, r6
+ lsl r2, r2, #0x18
+ add r0, r4, r7
+ add r1, r5, #0
+ lsr r2, r2, #0x18
+ bl MOD57_021D951C
+_021D7680:
+ cmp r6, #3
+ bne _021D7694
+ lsl r0, r5, #2
+ add r1, r4, r0
+ ldr r0, _021D770C ; =0x00003260
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ b _021D76A8
+_021D7694:
+ cmp r6, #4
+ bne _021D76A8
+ lsl r0, r5, #2
+ add r1, r4, r0
+ mov r0, #0xca
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+_021D76A8:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #8
+ blo _021D763C
+ bl MOD57_021D8588
+ ldr r0, _021D7710 ; =MOD57_021D848C
+ mov r1, #0
+ bl FUN_02015F10
+ bl FUN_02033F20
+ mov r0, #1
+ mov r1, #0x2a
+ bl FUN_020051EC
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x19
+ mov r1, #3
+ str r0, [sp, #8]
+ mov r0, #2
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #1
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D76E8: .word 0xFFFFE0FF
+_021D76EC: .word 0x04001000
+_021D76F0: .word 0x00003320
+_021D76F4: .word 0x000032F0
+_021D76F8: .word 0x00000695
+_021D76FC: .word 0x000030E4
+_021D7700: .word 0x0000330C
+_021D7704: .word 0x00003318
+_021D7708: .word 0x00003310
+_021D770C: .word 0x00003260
+_021D7710: .word MOD57_021D848C
+ thumb_func_end MOD57_021D74E0
+
+ thumb_func_start MOD57_021D7714
+MOD57_021D7714: ; 0x021D7714
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ bl FUN_02006278
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #4
+ bhi _021D7744
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7732: ; jump table
+ .short _021D773C - _021D7732 - 2 ; case 0
+ .short _021D774C - _021D7732 - 2 ; case 1
+ .short _021D786A - _021D7732 - 2 ; case 2
+ .short _021D7878 - _021D7732 - 2 ; case 3
+ .short _021D7886 - _021D7732 - 2 ; case 4
+_021D773C:
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D7746
+_021D7744:
+ b _021D790C
+_021D7746:
+ mov r0, #1
+ str r0, [r5]
+ b _021D790C
+_021D774C:
+ bl MOD57_021D81F8
+ add r6, r0, #0
+ cmp r6, #1
+ bne _021D77CA
+ ldr r0, _021D7920 ; =0x000030D4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D779E
+ ldr r2, _021D7924 ; =0x000032EC
+ mov r1, #1
+ add r0, r2, #0
+ str r1, [r4, r2]
+ add r0, #0x31
+ sub r2, #0x4c
+ strb r1, [r4, r0]
+ ldr r0, [r4, r2]
+ bl FUN_020200A0
+ ldr r0, _021D7928 ; =0x000032A0
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl FUN_020200BC
+ ldr r0, _021D7928 ; =0x000032A0
+ mov r1, #0xa
+ ldr r0, [r4, r0]
+ bl FUN_02020130
+ ldr r0, _021D792C ; =0x0000331A
+ mov r2, #0
+ strb r2, [r4, r0]
+ add r1, r0, #2
+ strb r2, [r4, r1]
+ add r0, r0, #1
+ strb r2, [r4, r0]
+ ldr r0, _021D7930 ; =0x000030D8
+ str r2, [r4, r0]
+ mov r0, #4
+ str r0, [r5]
+ b _021D7856
+_021D779E:
+ sub r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r1, [r0]
+ lsl r0, r5, #2
+ add r1, #0x48
+ ldr r0, [r1, r0]
+ lsl r1, r0, #0x1f
+ asr r1, r1, #0x1f
+ beq _021D7856
+ asr r0, r0, #1
+ bl MOD57_021D870C
+ add r2, r0, #0
+ ldr r0, _021D7934 ; =0x000032F0
+ add r1, r5, #0
+ add r0, r4, r0
+ bl MOD57_021D95BC
+ b _021D7856
+_021D77CA:
+ cmp r6, #2
+ ldr r1, _021D7924 ; =0x000032EC
+ bne _021D77F0
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ beq _021D77E8
+ ldr r0, _021D7920 ; =0x000030D4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D77E8
+ mov r0, #0
+ str r0, [r4, r1]
+ mov r0, #2
+ add r1, #0x31
+ strb r0, [r4, r1]
+_021D77E8:
+ add r0, r4, #0
+ bl MOD57_021D82BC
+ b _021D7856
+_021D77F0:
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ beq _021D780A
+ add r0, r1, #0
+ add r0, #0x31
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bne _021D780A
+ mov r0, #0
+ str r0, [r4, r1]
+ mov r0, #2
+ add r1, #0x31
+ strb r0, [r4, r1]
+_021D780A:
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldrb r0, [r0, #4]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ beq _021D7822
+ mov r0, #0x33
+ lsl r0, r0, #8
+ add r0, r4, r0
+ bl MOD57_021D874C
+_021D7822:
+ cmp r6, #3
+ bne _021D7832
+ ldr r0, _021D792C ; =0x0000331A
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r0, #3
+ str r0, [r5]
+ b _021D7856
+_021D7832:
+ cmp r6, #4
+ bne _021D7856
+ ldr r0, _021D7938 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0x19
+ str r1, [sp, #8]
+ mov r1, #4
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #2
+ str r0, [r5]
+_021D7856:
+ add r1, r4, #0
+ add r1, #0xb4
+ ldr r1, [r1]
+ add r0, r4, #0
+ ldrb r1, [r1, #4]
+ lsl r1, r1, #0x1e
+ lsr r1, r1, #0x1f
+ bl MOD57_021D88A4
+ b _021D790C
+_021D786A:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D790C
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D7878:
+ bl MOD57_021D7F20
+ cmp r0, #0
+ beq _021D790C
+ mov r0, #1
+ str r0, [r5]
+ b _021D790C
+_021D7886:
+ ldr r1, _021D793C ; =0x0000331D
+ ldrb r1, [r4, r1]
+ cmp r1, #0
+ bne _021D78EA
+ bl MOD57_021D81F8
+ cmp r0, #1
+ bne _021D78B8
+ ldr r0, _021D7920 ; =0x000030D4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D78EA
+ ldr r1, _021D7924 ; =0x000032EC
+ mov r2, #1
+ add r0, r1, #0
+ str r2, [r4, r1]
+ add r0, #0x31
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ mov r2, #0
+ add r0, #0x30
+ strb r2, [r4, r0]
+ add r1, #0x2f
+ strb r2, [r4, r1]
+ b _021D78EA
+_021D78B8:
+ cmp r0, #2
+ bne _021D78D8
+ ldr r1, _021D7924 ; =0x000032EC
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ beq _021D78EA
+ ldr r0, _021D7920 ; =0x000030D4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D78EA
+ mov r0, #0
+ str r0, [r4, r1]
+ mov r0, #2
+ add r1, #0x31
+ strb r0, [r4, r1]
+ b _021D78EA
+_021D78D8:
+ ldr r0, _021D7924 ; =0x000032EC
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D78EA
+ mov r1, #0
+ str r1, [r4, r0]
+ mov r1, #2
+ add r0, #0x31
+ strb r1, [r4, r0]
+_021D78EA:
+ ldr r0, _021D7930 ; =0x000030D8
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D78FC
+ add r0, r4, #0
+ bl MOD57_021D80F8
+ ldr r1, _021D7930 ; =0x000030D8
+ str r0, [r4, r1]
+_021D78FC:
+ ldr r0, _021D7930 ; =0x000030D8
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D790C
+ mov r1, #0
+ str r1, [r4, r0]
+ mov r0, #1
+ str r0, [r5]
+_021D790C:
+ add r0, r4, #0
+ bl MOD57_021D85F4
+ ldr r0, _021D7940 ; =0x000030E4
+ ldr r0, [r4, r0]
+ bl FUN_0201FDEC
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D7920: .word 0x000030D4
+_021D7924: .word 0x000032EC
+_021D7928: .word 0x000032A0
+_021D792C: .word 0x0000331A
+_021D7930: .word 0x000030D8
+_021D7934: .word 0x000032F0
+_021D7938: .word 0x000005DC
+_021D793C: .word 0x0000331D
+_021D7940: .word 0x000030E4
+ thumb_func_end MOD57_021D7714
+
+ thumb_func_start MOD57_021D7944
+MOD57_021D7944: ; 0x021D7944
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ bl MOD57_021D8588
+ add r0, r4, #0
+ bl MOD57_021D79F4
+ ldr r0, _021D79A0 ; =0x000030E4
+ add r0, r4, r0
+ bl MOD57_021D94BC
+ ldr r0, _021D79A4 ; =0x000030B8
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021D79A8 ; =0x000032F8
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ add r0, r4, #4
+ bl MOD57_021D89D4
+ ldr r0, [r4]
+ bl MOD57_021D7EDC
+ bl FUN_0201CD04
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0x19
+ bl FUN_020168D0
+ mov r0, #1
+ mov r1, #0x7f
+ bl FUN_020051EC
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D79A0: .word 0x000030E4
+_021D79A4: .word 0x000030B8
+_021D79A8: .word 0x000032F8
+ thumb_func_end MOD57_021D7944
+
+ thumb_func_start MOD57_021D79AC
+MOD57_021D79AC: ; 0x021D79AC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #4
+ mov r1, #0x19
+ bl FUN_020219F4
+ ldr r1, _021D79E8 ; =0x00003308
+ str r0, [r5, r1]
+ mov r0, #5
+ mov r1, #0x19
+ bl FUN_020219F4
+ ldr r1, _021D79EC ; =0x0000330C
+ ldr r2, _021D79F0 ; =0x0000022D
+ str r0, [r5, r1]
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x19
+ bl FUN_0200A86C
+ ldr r2, _021D79EC ; =0x0000330C
+ add r4, r0, #0
+ ldr r2, [r5, r2]
+ mov r1, #0xb
+ bl FUN_0200A8E0
+ add r0, r4, #0
+ bl FUN_0200A8B8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D79E8: .word 0x00003308
+_021D79EC: .word 0x0000330C
+_021D79F0: .word 0x0000022D
+ thumb_func_end MOD57_021D79AC
+
+ thumb_func_start MOD57_021D79F4
+MOD57_021D79F4: ; 0x021D79F4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D7A0C ; =0x00003308
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ ldr r0, _021D7A10 ; =0x0000330C
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ pop {r4, pc}
+ nop
+_021D7A0C: .word 0x00003308
+_021D7A10: .word 0x0000330C
+ thumb_func_end MOD57_021D79F4
+
+ thumb_func_start MOD57_021D7A14
+MOD57_021D7A14: ; 0x021D7A14
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7A30 ; =0x021D9800
+ add r3, sp, #0
+ mov r2, #5
+_021D7A1E:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7A1E
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7A30: .word 0x021D9800
+ thumb_func_end MOD57_021D7A14
+
+ thumb_func_start MOD57_021D7A34
+MOD57_021D7A34: ; 0x021D7A34
+ push {r3, r4, r5, lr}
+ cmp r1, #0
+ beq _021D7AB6
+ cmp r0, #5
+ bhi _021D7AC4
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7A4A: ; jump table
+ .short _021D7A56 - _021D7A4A - 2 ; case 0
+ .short _021D7A66 - _021D7A4A - 2 ; case 1
+ .short _021D7A76 - _021D7A4A - 2 ; case 2
+ .short _021D7A86 - _021D7A4A - 2 ; case 3
+ .short _021D7A96 - _021D7A4A - 2 ; case 4
+ .short _021D7AA6 - _021D7A4A - 2 ; case 5
+_021D7A56:
+ mov r0, #0x33
+ mov r1, #0
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7AC4
+_021D7A66:
+ mov r0, #0x33
+ mov r1, #1
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7AC4
+_021D7A76:
+ mov r0, #0x33
+ mov r1, #2
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7AC4
+_021D7A86:
+ mov r0, #0x33
+ mov r1, #3
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7AC4
+_021D7A96:
+ mov r0, #0x33
+ mov r1, #4
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7AC4
+_021D7AA6:
+ mov r0, #0x33
+ mov r1, #5
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7AC4
+_021D7AB6:
+ mov r0, #0x33
+ mov r1, #6
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+_021D7AC4:
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ lsl r1, r1, #8
+ bl DC_FlushRange
+ ldr r0, [sp]
+ mov r1, #0x20
+ ldr r5, [r0, #0xc]
+ mov r2, #0x60
+ add r0, r5, #0
+ add r0, #0x20
+ bl GXS_LoadBGPltt
+ mov r1, #0x1e
+ lsl r1, r1, #4
+ add r0, r5, r1
+ mov r2, #0x20
+ bl GXS_LoadBGPltt
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD57_021D7A34
+
+ thumb_func_start MOD57_021D7AF4
+MOD57_021D7AF4: ; 0x021D7AF4
+ push {r3, r4, lr}
+ sub sp, #4
+ cmp r0, #0xa
+ beq _021D7B02
+ cmp r0, #0xb
+ beq _021D7B12
+ b _021D7B22
+_021D7B02:
+ mov r0, #0x33
+ mov r1, #7
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7B30
+_021D7B12:
+ mov r0, #0x33
+ mov r1, #8
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7B30
+_021D7B22:
+ mov r0, #0x33
+ mov r1, #9
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+_021D7B30:
+ ldr r0, [sp]
+ mov r1, #0x20
+ ldr r0, [r0, #0xc]
+ bl DC_FlushRange
+ ldr r0, [sp]
+ mov r1, #0
+ ldr r0, [r0, #0xc]
+ mov r2, #0x20
+ bl GX_LoadBGPltt
+ ldr r0, [sp]
+ mov r1, #0
+ ldr r0, [r0, #0xc]
+ mov r2, #0x20
+ bl GXS_LoadBGPltt
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD57_021D7AF4
+
+ thumb_func_start MOD57_021D7B5C
+MOD57_021D7B5C: ; 0x021D7B5C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mov r0, #0x33
+ mov r1, #0x29
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r6, r0, #0
+ ldr r0, [sp]
+ lsl r4, r4, #5
+ ldr r5, [r0, #0xc]
+ mov r1, #0x20
+ add r0, r5, r4
+ bl DC_FlushRange
+ add r0, r5, r4
+ mov r1, #0x80
+ mov r2, #0x20
+ bl GXS_LoadBGPltt
+ add r0, r6, #0
+ bl FUN_02016A18
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D7B5C
+
+ thumb_func_start MOD57_021D7B94
+MOD57_021D7B94: ; 0x021D7B94
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ ldr r2, _021D7C84 ; =0x04000304
+ add r4, r0, #0
+ ldrh r1, [r2]
+ ldr r0, _021D7C88 ; =0xFFFF7FFF
+ ldr r5, _021D7C8C ; =0x021D9764
+ and r0, r1
+ strh r0, [r2]
+ add r3, sp, #0x8c
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D7C90 ; =0x021D9774
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #7
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #2
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #7
+ bl FUN_02018744
+ ldr r5, _021D7C94 ; =0x021D9790
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #5
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_02018744
+ ldr r5, _021D7C98 ; =0x021D97C8
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #6
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #1
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #6
+ bl FUN_02018744
+ ldr r5, _021D7C9C ; =0x021D97E4
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _021D7CA0 ; =0x021D97AC
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #1
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02018744
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D7C84: .word 0x04000304
+_021D7C88: .word 0xFFFF7FFF
+_021D7C8C: .word 0x021D9764
+_021D7C90: .word 0x021D9774
+_021D7C94: .word 0x021D9790
+_021D7C98: .word 0x021D97C8
+_021D7C9C: .word 0x021D97E4
+_021D7CA0: .word 0x021D97AC
+ thumb_func_end MOD57_021D7B94
+
+ thumb_func_start MOD57_021D7CA4
+MOD57_021D7CA4: ; 0x021D7CA4
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ mov r0, #0x33
+ mov r1, #0
+ add r2, sp, #0x14
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r5, r0, #0
+ ldr r0, [sp, #0x14]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ lsl r1, r1, #8
+ bl DC_FlushRange
+ ldr r0, [sp, #0x14]
+ mov r2, #2
+ ldr r0, [r0, #0xc]
+ mov r1, #0
+ lsl r2, r2, #8
+ bl GXS_LoadBGPltt
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r1, [r0]
+ ldrb r0, [r1, #3]
+ ldrb r1, [r1, #4]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1f
+ bl MOD57_021D7A34
+ mov r0, #0x33
+ mov r1, #0xa
+ add r2, sp, #0x10
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r5, r0, #0
+ ldr r0, [sp, #0x10]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ lsl r1, r1, #8
+ bl DC_FlushRange
+ ldr r0, [sp, #0x10]
+ mov r2, #2
+ ldr r0, [r0, #0xc]
+ mov r1, #0
+ lsl r2, r2, #8
+ bl GX_LoadBGPltt
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ bl MOD57_021D7AF4
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldrb r1, [r0, #5]
+ cmp r1, #0xff
+ bne _021D7D9C
+ mov r2, #0
+ mov r0, #0x33
+ mov r1, #0x1b
+ mov r3, #0x19
+ str r2, [sp]
+ bl FUN_02006C98
+ ldr r1, _021D7ECC ; =0x000030B8
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bne _021D7D4C
+ bl ErrorHandling
+_021D7D4C:
+ ldr r1, _021D7ECC ; =0x000030B8
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ add r1, r4, r1
+ bl FUN_020B0030
+ cmp r0, #0
+ bne _021D7D60
+ bl ErrorHandling
+_021D7D60:
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldr r3, _021D7ED0 ; =0x000032FC
+ ldrb r0, [r0, #4]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ bne _021D7D86
+ mov r0, #0x19
+ str r0, [sp]
+ mov r0, #0x33
+ mov r1, #0x23
+ mov r2, #0
+ add r3, r4, r3
+ bl FUN_02006BDC
+ ldr r1, _021D7ED4 ; =0x000032F8
+ str r0, [r4, r1]
+ b _021D7DF2
+_021D7D86:
+ mov r0, #0x19
+ str r0, [sp]
+ mov r0, #0x33
+ mov r1, #0x24
+ mov r2, #0
+ add r3, r4, r3
+ bl FUN_02006BDC
+ ldr r1, _021D7ED4 ; =0x000032F8
+ str r0, [r4, r1]
+ b _021D7DF2
+_021D7D9C:
+ lsl r3, r1, #2
+ ldr r1, _021D7ED8 ; =0x021D9888
+ mov r2, #0
+ ldr r1, [r1, r3]
+ mov r0, #0x33
+ mov r3, #0x19
+ str r2, [sp]
+ bl FUN_02006C98
+ ldr r1, _021D7ECC ; =0x000030B8
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bne _021D7DBC
+ bl ErrorHandling
+_021D7DBC:
+ ldr r1, _021D7ECC ; =0x000030B8
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ add r1, r4, r1
+ bl FUN_020B0030
+ cmp r0, #0
+ bne _021D7DD0
+ bl ErrorHandling
+_021D7DD0:
+ ldr r3, _021D7ED0 ; =0x000032FC
+ mov r0, #0x19
+ str r0, [sp]
+ mov r0, #0x33
+ mov r1, #0x2a
+ mov r2, #0
+ add r3, r4, r3
+ bl FUN_02006BDC
+ ldr r1, _021D7ED4 ; =0x000032F8
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldrb r0, [r0, #5]
+ bl MOD57_021D7B5C
+_021D7DF2:
+ add r0, r4, #0
+ bl MOD57_021D8690
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x17
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x1e
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x18
+ mov r3, #5
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x20
+ mov r3, #5
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0x19
+ str r1, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x21
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x1a
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x22
+ mov r3, #3
+ bl FUN_020068C8
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb8
+ add r0, #0x68
+ add r1, r4, #0
+ bl MOD57_021D87DC
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ nop
+_021D7ECC: .word 0x000030B8
+_021D7ED0: .word 0x000032FC
+_021D7ED4: .word 0x000032F8
+_021D7ED8: .word 0x021D9888
+ thumb_func_end MOD57_021D7CA4
+
+ thumb_func_start MOD57_021D7EDC
+MOD57_021D7EDC: ; 0x021D7EDC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x1f
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #0x13
+ mov r1, #0
+ bl FUN_0201E74C
+ add r0, r4, #0
+ mov r1, #7
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD57_021D7EDC
+
+ thumb_func_start MOD57_021D7F20
+MOD57_021D7F20: ; 0x021D7F20
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ ldr r2, _021D80DC ; =0x0000331A
+ add r4, r0, #0
+ ldrb r0, [r4, r2]
+ mov r5, #0
+ cmp r0, #3
+ bls _021D7F32
+ b _021D8092
+_021D7F32:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7F3E: ; jump table
+ .short _021D7F46 - _021D7F3E - 2 ; case 0
+ .short _021D7F74 - _021D7F3E - 2 ; case 1
+ .short _021D7FB0 - _021D7F3E - 2 ; case 2
+ .short _021D804C - _021D7F3E - 2 ; case 3
+_021D7F46:
+ mov r0, #8
+ sub r2, #0x36
+ str r0, [r4, r2]
+ ldr r1, _021D80E0 ; =0x000030C8
+ lsl r2, r0, #9
+ str r2, [r4, r1]
+ add r0, r1, #4
+ str r2, [r4, r0]
+ ldr r0, [r4, r1]
+ add r0, #0x80
+ str r0, [r4, r1]
+ add r0, r1, #4
+ ldr r2, [r4, r0]
+ add r2, #0x80
+ str r2, [r4, r0]
+ ldr r0, _021D80E4 ; =0x00000696
+ bl FUN_020054C8
+ ldr r0, _021D80DC ; =0x0000331A
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ b _021D8092
+_021D7F74:
+ add r0, r2, #0
+ sub r0, #0x36
+ ldr r3, [r4, r0]
+ ldr r1, _021D80E0 ; =0x000030C8
+ mov r0, #0xc
+ mov r7, #2
+ sub r0, r0, r3
+ add r3, r7, #0
+ ldr r6, [r4, r1]
+ lsl r3, r0
+ sub r0, r6, r3
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bgt _021D7F9C
+ mov r0, #0x24
+ str r0, [r4, r1]
+ ldrb r0, [r4, r2]
+ add r0, r0, #1
+ strb r0, [r4, r2]
+_021D7F9C:
+ ldr r0, _021D80E8 ; =0x000032E4
+ ldr r1, [r4, r0]
+ sub r1, r1, #1
+ str r1, [r4, r0]
+ ldr r1, [r4, r0]
+ cmp r1, #1
+ bgt _021D8092
+ mov r1, #1
+ str r1, [r4, r0]
+ b _021D8092
+_021D7FB0:
+ mov r0, #0xc3
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ bne _021D8006
+ mov r1, #1
+ str r1, [r4, r0]
+ str r5, [sp]
+ str r5, [sp, #4]
+ str r5, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x1f
+ mov r3, #6
+ bl FUN_020068C8
+ add r0, r4, #4
+ add r1, r5, #0
+ mov r2, #6
+ bl MOD57_021D8FB8
+ add r0, r4, #0
+ bl MOD57_021D86E8
+ ldr r0, [r4]
+ mov r1, #7
+ bl FUN_02018744
+ add r1, r4, #0
+ add r1, #0xb4
+ ldr r1, [r1]
+ add r0, r4, #4
+ bl MOD57_021D8CF8
+ add r2, r4, #0
+ ldr r0, [r4]
+ mov r1, #7
+ add r2, #0xb8
+ bl MOD57_021D8830
+ b _021D8042
+_021D8006:
+ str r5, [r4, r0]
+ str r5, [sp]
+ str r5, [sp, #4]
+ str r5, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x1e
+ mov r3, #6
+ bl FUN_020068C8
+ add r0, r4, #4
+ mov r1, #7
+ mov r2, #0xa
+ bl MOD57_021D8FB8
+ ldr r0, [r4]
+ mov r1, #7
+ bl FUN_02018744
+ add r0, r4, #0
+ bl MOD57_021D8690
+ add r1, r4, #0
+ add r1, #0xb4
+ ldr r1, [r1]
+ add r0, r4, #4
+ bl MOD57_021D89F0
+_021D8042:
+ ldr r0, _021D80DC ; =0x0000331A
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ b _021D8092
+_021D804C:
+ add r0, r2, #0
+ sub r0, #0x36
+ ldr r0, [r4, r0]
+ add r1, r0, #1
+ add r0, r2, #0
+ sub r0, #0x36
+ str r1, [r4, r0]
+ add r0, r2, #0
+ sub r0, #0x36
+ ldr r0, [r4, r0]
+ cmp r0, #8
+ ble _021D806A
+ mov r0, #8
+ sub r2, #0x36
+ str r0, [r4, r2]
+_021D806A:
+ ldr r2, _021D80E8 ; =0x000032E4
+ ldr r3, _021D80E0 ; =0x000030C8
+ ldr r6, [r4, r2]
+ mov r2, #0xc
+ mov r0, #2
+ sub r2, r2, r6
+ add r6, r0, #0
+ ldr r1, [r4, r3]
+ lsl r6, r2
+ add r1, r1, r6
+ str r1, [r4, r3]
+ ldr r2, [r4, r3]
+ lsl r1, r0, #0xb
+ cmp r2, r1
+ blt _021D8092
+ str r1, [r4, r3]
+ str r1, [r4, r3]
+ add r0, r3, #4
+ str r1, [r4, r0]
+ mov r5, #1
+_021D8092:
+ ldr r0, _021D80E0 ; =0x000030C8
+ ldr r0, [r4, r0]
+ bl FX_Inv
+ add r6, r0, #0
+ ldr r0, _021D80EC ; =0x000030CC
+ ldr r0, [r4, r0]
+ bl FX_Inv
+ mov r1, #0
+ str r6, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ bl OS_WaitVBlankIntr
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D80F0 ; =0x04001020
+ add r1, sp, #0x10
+ mov r2, #0x80
+ mov r3, #0x60
+ bl G2x_SetBGyAffine_
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D80F4 ; =0x04001030
+ add r1, sp, #0x10
+ mov r2, #0x80
+ mov r3, #0x60
+ bl G2x_SetBGyAffine_
+ add r0, r5, #0
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D80DC: .word 0x0000331A
+_021D80E0: .word 0x000030C8
+_021D80E4: .word 0x00000696
+_021D80E8: .word 0x000032E4
+_021D80EC: .word 0x000030CC
+_021D80F0: .word 0x04001020
+_021D80F4: .word 0x04001030
+ thumb_func_end MOD57_021D7F20
+
+ thumb_func_start MOD57_021D80F8
+MOD57_021D80F8: ; 0x021D80F8
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ ldr r0, _021D81E4 ; =0x0000331A
+ ldrb r1, [r4, r0]
+ cmp r1, #3
+ bhi _021D81AE
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D8112: ; jump table
+ .short _021D811A - _021D8112 - 2 ; case 0
+ .short _021D8142 - _021D8112 - 2 ; case 1
+ .short _021D8170 - _021D8112 - 2 ; case 2
+ .short _021D81A8 - _021D8112 - 2 ; case 3
+_021D811A:
+ mov r2, #0
+ sub r1, r0, #1
+ strb r2, [r4, r1]
+ sub r1, r0, #2
+ ldrb r1, [r4, r1]
+ cmp r1, #0
+ bne _021D8134
+ mov r2, #1
+ ldr r1, _021D81E8 ; =0x000030D0
+ lsl r2, r2, #0xc
+ str r2, [r4, r1]
+ mov r1, #1
+ b _021D8136
+_021D8134:
+ mov r1, #2
+_021D8136:
+ strb r1, [r4, r0]
+ ldr r0, _021D81EC ; =0x00003318
+ ldrb r0, [r4, r0]
+ bl MOD57_021D8894
+ b _021D81AE
+_021D8142:
+ sub r1, r0, #1
+ ldrb r2, [r4, r1]
+ add r1, r2, #0
+ add r3, r1, #1
+ sub r1, r0, #1
+ strb r3, [r4, r1]
+ ldr r3, _021D81E8 ; =0x000030D0
+ lsl r5, r2, #2
+ ldr r2, _021D81F0 ; =0x021D9850
+ ldr r1, [r4, r3]
+ ldr r2, [r2, r5]
+ sub r1, r1, r2
+ str r1, [r4, r3]
+ sub r1, r0, #1
+ ldrb r1, [r4, r1]
+ cmp r1, #0xe
+ bne _021D81AE
+ mov r2, #1
+ sub r1, r0, #2
+ strb r2, [r4, r1]
+ mov r1, #3
+ strb r1, [r4, r0]
+ b _021D81AE
+_021D8170:
+ sub r1, r0, #1
+ ldrb r2, [r4, r1]
+ ldr r5, _021D81E8 ; =0x000030D0
+ add r1, r2, #0
+ add r3, r1, #1
+ sub r1, r0, #1
+ strb r3, [r4, r1]
+ mov r3, #0xd
+ sub r2, r3, r2
+ lsl r3, r2, #2
+ ldr r2, _021D81F0 ; =0x021D9850
+ ldr r1, [r4, r5]
+ ldr r2, [r2, r3]
+ add r1, r1, r2
+ str r1, [r4, r5]
+ sub r1, r0, #1
+ ldrb r1, [r4, r1]
+ cmp r1, #0xe
+ bne _021D81AE
+ mov r2, #0
+ sub r1, r0, #2
+ strb r2, [r4, r1]
+ mov r1, #1
+ lsl r1, r1, #0xc
+ str r1, [r4, r5]
+ mov r1, #3
+ strb r1, [r4, r0]
+ b _021D81AE
+_021D81A8:
+ add sp, #0x18
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D81AE:
+ mov r0, #1
+ lsl r0, r0, #0xc
+ bl FX_Inv
+ add r5, r0, #0
+ ldr r0, _021D81E8 ; =0x000030D0
+ ldr r0, [r4, r0]
+ bl FX_Inv
+ mov r1, #0
+ str r5, [sp, #8]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ bl OS_WaitVBlankIntr
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021D81F4 ; =0x04000030
+ add r1, sp, #8
+ mov r2, #0x80
+ str r3, [sp, #4]
+ bl G2x_SetBGyAffine_
+ mov r0, #0
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D81E4: .word 0x0000331A
+_021D81E8: .word 0x000030D0
+_021D81EC: .word 0x00003318
+_021D81F0: .word 0x021D9850
+_021D81F4: .word 0x04000030
+ thumb_func_end MOD57_021D80F8
+
+ thumb_func_start MOD57_021D81F8
+MOD57_021D81F8: ; 0x021D81F8
+ push {r4, r5, r6, lr}
+ mov r6, #0
+ add r5, r0, #0
+ ldr r0, _021D82A8 ; =0x000030D4
+ sub r1, r6, #1
+ str r1, [r5, r0]
+ ldr r1, _021D82AC ; =0x021C48F8
+ add r4, r6, #0
+ ldrh r1, [r1, #0x20]
+ cmp r1, #0
+ beq _021D8214
+ mov r1, #1
+ sub r0, #0x10
+ str r1, [r5, r0]
+_021D8214:
+ add r1, r5, #0
+ add r1, #0xb4
+ ldr r1, [r1]
+ ldr r2, _021D82B0 ; =0x021D9754
+ ldrb r1, [r1, #4]
+ ldr r0, [r5]
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x1f
+ lsl r3, r1, #3
+ ldr r1, _021D82B4 ; =0x00003318
+ add r2, r2, r3
+ ldrb r1, [r5, r1]
+ lsl r1, r1, #2
+ ldr r1, [r1, r2]
+ bl MOD57_021D890C
+ ldr r1, _021D82A8 ; =0x000030D4
+ str r0, [r5, r1]
+ mov r0, #0
+ ldr r2, [r5, r1]
+ mvn r0, r0
+ cmp r2, r0
+ beq _021D8248
+ mov r6, #1
+ add r4, r6, #0
+ b _021D8288
+_021D8248:
+ ldr r0, _021D82AC ; =0x021C48F8
+ ldrh r0, [r0, #0x22]
+ cmp r0, #0
+ beq _021D8282
+ add r1, r5, #0
+ add r1, #0xb4
+ ldr r1, [r1]
+ ldr r2, _021D82B0 ; =0x021D9754
+ ldrb r1, [r1, #4]
+ ldr r0, [r5]
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x1f
+ lsl r3, r1, #3
+ ldr r1, _021D82B4 ; =0x00003318
+ add r2, r2, r3
+ ldrb r1, [r5, r1]
+ lsl r1, r1, #2
+ ldr r1, [r1, r2]
+ bl MOD57_021D8954
+ ldr r1, _021D82A8 ; =0x000030D4
+ str r0, [r5, r1]
+ sub r1, #0x10
+ ldr r0, [r5, r1]
+ cmp r0, #0
+ beq _021D8288
+ mov r6, #1
+ mov r4, #2
+ b _021D8288
+_021D8282:
+ mov r0, #0
+ sub r1, #0x10
+ str r0, [r5, r1]
+_021D8288:
+ cmp r6, #0
+ bne _021D82A2
+ ldr r0, _021D82B8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _021D829A
+ mov r4, #3
+ b _021D82A2
+_021D829A:
+ mov r0, #2
+ tst r0, r1
+ beq _021D82A2
+ mov r4, #4
+_021D82A2:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ nop
+_021D82A8: .word 0x000030D4
+_021D82AC: .word 0x021C48F8
+_021D82B0: .word 0x021D9754
+_021D82B4: .word 0x00003318
+_021D82B8: .word 0x021C48B8
+ thumb_func_end MOD57_021D81F8
+
+ thumb_func_start MOD57_021D82BC
+MOD57_021D82BC: ; 0x021D82BC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _021D83BC ; =0x021C48F8
+ ldr r6, _021D83C0 ; =0x0000FFFF
+ ldrh r3, [r0, #0x1c]
+ mov r4, #0
+ cmp r3, r6
+ beq _021D83AC
+ ldrh r0, [r0, #0x1e]
+ cmp r0, r6
+ beq _021D83AC
+ ldr r1, _021D83C4 ; =0x000030DC
+ ldr r2, [r5, r1]
+ cmp r2, r6
+ beq _021D83AC
+ add r0, r1, #4
+ ldr r0, [r5, r0]
+ cmp r0, r6
+ beq _021D83AC
+ sub r1, #8
+ ldr r1, [r5, r1]
+ sub r0, r4, #1
+ cmp r1, r0
+ beq _021D83AC
+ cmp r1, #0
+ beq _021D83AC
+ add r0, r5, #0
+ add r0, #0xb4
+ sub r1, r1, #1
+ ldr r0, [r0]
+ lsl r1, r1, #2
+ add r0, r0, r1
+ ldr r0, [r0, #0x48]
+ lsl r0, r0, #0x1f
+ asr r0, r0, #0x1f
+ beq _021D83AC
+ cmp r2, r3
+ ble _021D830E
+ sub r2, r2, r3
+ sub r1, r4, #1
+ b _021D8312
+_021D830E:
+ sub r2, r3, r2
+ mov r1, #1
+_021D8312:
+ ldr r0, _021D83C8 ; =0x00003302
+ cmp r2, #3
+ strb r1, [r5, r0]
+ blt _021D8358
+ cmp r2, #0x28
+ bgt _021D8358
+ ldr r0, _021D83BC ; =0x021C48F8
+ ldrh r1, [r0, #0x1e]
+ ldr r0, _021D83CC ; =0x000030E0
+ ldr r0, [r5, r0]
+ cmp r0, r1
+ ble _021D8332
+ sub r2, r0, r1
+ mov r1, #0
+ mvn r1, r1
+ b _021D8336
+_021D8332:
+ sub r2, r1, r0
+ mov r1, #1
+_021D8336:
+ ldr r0, _021D83D0 ; =0x00003303
+ cmp r2, #0x28
+ strb r1, [r5, r0]
+ bgt _021D834C
+ mov r0, #0x33
+ lsl r0, r0, #8
+ add r0, r5, r0
+ mov r4, #1
+ bl MOD57_021D875C
+ b _021D8398
+_021D834C:
+ mov r0, #0x33
+ lsl r0, r0, #8
+ add r0, r5, r0
+ bl MOD57_021D8744
+ b _021D8398
+_021D8358:
+ cmp r2, #0x28
+ bgt _021D8398
+ ldr r0, _021D83BC ; =0x021C48F8
+ ldrh r1, [r0, #0x1e]
+ ldr r0, _021D83CC ; =0x000030E0
+ ldr r0, [r5, r0]
+ cmp r0, r1
+ ble _021D8370
+ sub r2, r0, r1
+ mov r1, #0
+ mvn r1, r1
+ b _021D8374
+_021D8370:
+ sub r2, r1, r0
+ mov r1, #1
+_021D8374:
+ ldr r0, _021D83D0 ; =0x00003303
+ cmp r2, #3
+ strb r1, [r5, r0]
+ blt _021D838E
+ cmp r2, #0x28
+ bgt _021D838E
+ mov r0, #0x33
+ lsl r0, r0, #8
+ add r0, r5, r0
+ mov r4, #1
+ bl MOD57_021D875C
+ b _021D8398
+_021D838E:
+ mov r0, #0x33
+ lsl r0, r0, #8
+ add r0, r5, r0
+ bl MOD57_021D8744
+_021D8398:
+ cmp r4, #0
+ beq _021D83AC
+ ldr r1, _021D83D4 ; =0x000030D4
+ add r0, r5, #0
+ ldr r1, [r5, r1]
+ sub r1, r1, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD57_021D84AC
+_021D83AC:
+ ldr r1, _021D83BC ; =0x021C48F8
+ ldr r0, _021D83C4 ; =0x000030DC
+ ldrh r2, [r1, #0x1c]
+ str r2, [r5, r0]
+ ldrh r1, [r1, #0x1e]
+ add r0, r0, #4
+ str r1, [r5, r0]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D83BC: .word 0x021C48F8
+_021D83C0: .word 0x0000FFFF
+_021D83C4: .word 0x000030DC
+_021D83C8: .word 0x00003302
+_021D83CC: .word 0x000030E0
+_021D83D0: .word 0x00003303
+_021D83D4: .word 0x000030D4
+ thumb_func_end MOD57_021D82BC
+
+ thumb_func_start MOD57_021D83D8
+MOD57_021D83D8: ; 0x021D83D8
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ add r4, r1, #0
+ ldr r0, [r0]
+ mov r1, #2
+ bl FUN_0201886C
+ add r7, r0, #0
+ lsl r0, r4, #2
+ add r0, #0x80
+ lsl r0, r0, #0x10
+ mov r2, #0
+ lsr r3, r0, #0x10
+_021D83F2:
+ lsl r0, r2, #5
+ add r4, r3, r0
+ add r0, r2, #0
+ add r0, #0x13
+ lsl r0, r0, #6
+ mov r1, #0
+ add r5, r7, r0
+_021D8400:
+ lsl r6, r1, #1
+ add r0, r1, r4
+ add r6, r5, r6
+ strh r0, [r6, #0x1c]
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #4
+ blo _021D8400
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #4
+ blo _021D83F2
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0]
+ bl FUN_02017CD0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD57_021D83D8
+
+ thumb_func_start MOD57_021D8428
+MOD57_021D8428: ; 0x021D8428
+ push {r3, r4, r5, r6, r7, lr}
+ lsr r5, r1, #0x1f
+ lsl r4, r1, #0x1e
+ sub r4, r4, r5
+ mov r2, #0x1e
+ ror r4, r2
+ add r2, r5, r4
+ lsl r2, r2, #0x18
+ lsr r4, r2, #0x18
+ lsl r1, r1, #0x16
+ mov r2, #7
+ add r5, r4, #0
+ lsr r1, r1, #0x18
+ mul r5, r2
+ mov r6, #3
+ add r4, r6, r5
+ lsl r4, r4, #0x18
+ mov r3, #4
+ mul r2, r1
+ add r1, r3, r2
+ lsl r1, r1, #0x18
+ lsr r5, r1, #0x18
+ ldr r0, [r0]
+ add r1, r6, #0
+ lsr r4, r4, #0x18
+ bl FUN_0201886C
+ mov r2, #0
+ add r3, r0, r4
+ add r0, r2, #0
+_021D8464:
+ add r6, r2, r5
+ lsl r4, r2, #4
+ lsl r6, r6, #5
+ add r1, r0, #0
+ add r4, #0xba
+ add r6, r3, r6
+_021D8470:
+ add r7, r1, r4
+ strb r7, [r6, r1]
+ add r1, r1, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ cmp r1, #5
+ blo _021D8470
+ add r1, r2, #1
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ cmp r2, #5
+ blo _021D8464
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D8428
+
+ thumb_func_start MOD57_021D848C
+MOD57_021D848C: ; 0x021D848C
+ push {r3, lr}
+ bl FUN_0201C30C
+ bl FUN_02009F80
+ ldr r3, _021D84A4 ; =0x027E0000
+ ldr r1, _021D84A8 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r3, pc}
+ .align 2, 0
+_021D84A4: .word 0x027E0000
+_021D84A8: .word 0x00003FF8
+ thumb_func_end MOD57_021D848C
+
+ thumb_func_start MOD57_021D84AC
+MOD57_021D84AC: ; 0x021D84AC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, #0xb4
+ add r4, r1, #0
+ ldr r0, [r0]
+ lsl r6, r4, #2
+ add r0, r0, r6
+ ldr r0, [r0, #0x48]
+ asr r0, r0, #1
+ add r1, r0, #1
+ str r1, [sp]
+ cmp r1, #0xc8
+ bge _021D8578
+ bl MOD57_021D870C
+ add r7, r0, #0
+ ldr r0, _021D857C ; =0x00003310
+ ldr r2, _021D8580 ; =0x021D9734
+ add r1, r5, r0
+ ldrb r0, [r1, r4]
+ ldrb r2, [r2, r7]
+ add r0, r0, #1
+ strb r0, [r1, r4]
+ ldrb r0, [r1, r4]
+ cmp r0, r2
+ blo _021D8578
+ mov r0, #0
+ strb r0, [r1, r4]
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r2, [r0]
+ mov r1, #1
+ add r2, #0x48
+ ldr r0, [r2, r6]
+ and r1, r0
+ asr r0, r0, #1
+ add r0, r0, #1
+ lsl r0, r0, #1
+ orr r0, r1
+ str r0, [r2, r6]
+ ldr r0, [sp]
+ bl MOD57_021D870C
+ add r6, r0, #0
+ cmp r7, r6
+ bls _021D850C
+ bl ErrorHandling
+_021D850C:
+ cmp r7, r6
+ bhs _021D8578
+ cmp r6, #4
+ bhi _021D8536
+ cmp r6, #4
+ ldr r0, _021D8584 ; =0x000030E4
+ bne _021D8526
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD57_021D951C
+ b _021D8536
+_021D8526:
+ mov r2, #3
+ sub r2, r2, r6
+ lsl r2, r2, #0x18
+ add r0, r5, r0
+ add r1, r4, #0
+ lsr r2, r2, #0x18
+ bl MOD57_021D951C
+_021D8536:
+ cmp r6, #3
+ bne _021D854E
+ add r4, #8
+ lsl r0, r4, #2
+ add r1, r5, r0
+ mov r0, #0xc9
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ pop {r3, r4, r5, r6, r7, pc}
+_021D854E:
+ cmp r6, #4
+ bne _021D8578
+ add r0, r4, #0
+ add r0, #8
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0xc9
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r4, #0x10
+ lsl r0, r4, #2
+ add r1, r5, r0
+ mov r0, #0xc9
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+_021D8578:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D857C: .word 0x00003310
+_021D8580: .word 0x021D9734
+_021D8584: .word 0x000030E4
+ thumb_func_end MOD57_021D84AC
+
+ thumb_func_start MOD57_021D8588
+MOD57_021D8588: ; 0x021D8588
+ push {r4, lr}
+ sub sp, #0x18
+ mov r0, #1
+ lsl r0, r0, #0xc
+ bl FX_Inv
+ add r4, r0, #0
+ mov r0, #1
+ lsl r0, r0, #0xc
+ bl FX_Inv
+ mov r1, #0
+ str r4, [sp, #8]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ bl OS_WaitVBlankIntr
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D85E8 ; =0x04001020
+ add r1, sp, #8
+ mov r2, #0x80
+ mov r3, #0x60
+ bl G2x_SetBGyAffine_
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D85EC ; =0x04001030
+ add r1, sp, #8
+ mov r2, #0x80
+ mov r3, #0x60
+ bl G2x_SetBGyAffine_
+ bl OS_WaitVBlankIntr
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021D85F0 ; =0x04000030
+ add r1, sp, #8
+ mov r2, #0x80
+ str r3, [sp, #4]
+ bl G2x_SetBGyAffine_
+ add sp, #0x18
+ pop {r4, pc}
+ .align 2, 0
+_021D85E8: .word 0x04001020
+_021D85EC: .word 0x04001030
+_021D85F0: .word 0x04000030
+ thumb_func_end MOD57_021D8588
+
+ thumb_func_start MOD57_021D85F4
+MOD57_021D85F4: ; 0x021D85F4
+ push {r4, lr}
+ ldr r1, _021D862C ; =0x0000331D
+ add r4, r0, #0
+ ldrb r1, [r4, r1]
+ cmp r1, #1
+ bne _021D8614
+ ldr r1, _021D8630 ; =0x021D973C
+ ldr r1, [r1, #0x10]
+ bl MOD57_021D8634
+ cmp r0, #0
+ beq _021D862A
+ ldr r0, _021D862C ; =0x0000331D
+ mov r1, #0
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_021D8614:
+ cmp r1, #2
+ bne _021D862A
+ ldr r1, _021D8630 ; =0x021D973C
+ ldr r1, [r1, #0x14]
+ bl MOD57_021D8634
+ cmp r0, #0
+ beq _021D862A
+ ldr r0, _021D862C ; =0x0000331D
+ mov r1, #0
+ strb r1, [r4, r0]
+_021D862A:
+ pop {r4, pc}
+ .align 2, 0
+_021D862C: .word 0x0000331D
+_021D8630: .word 0x021D973C
+ thumb_func_end MOD57_021D85F4
+
+ thumb_func_start MOD57_021D8634
+MOD57_021D8634: ; 0x021D8634
+ push {r4, lr}
+ ldr r2, _021D8688 ; =0x0000331C
+ add r4, r0, #0
+ ldrb r0, [r4, r2]
+ lsl r0, r0, #1
+ ldrb r3, [r1, r0]
+ cmp r3, #0
+ bne _021D8650
+ mov r1, #0
+ sub r0, r2, #1
+ strb r1, [r4, r0]
+ strb r1, [r4, r2]
+ mov r0, #1
+ pop {r4, pc}
+_021D8650:
+ sub r0, r2, #1
+ ldrb r0, [r4, r0]
+ cmp r0, r3
+ blo _021D8664
+ mov r3, #0
+ sub r0, r2, #1
+ strb r3, [r4, r0]
+ ldrb r0, [r4, r2]
+ add r0, r0, #1
+ strb r0, [r4, r2]
+_021D8664:
+ ldr r0, _021D8688 ; =0x0000331C
+ ldrb r2, [r4, r0]
+ sub r0, r0, #1
+ ldrb r0, [r4, r0]
+ lsl r2, r2, #1
+ add r2, r2, #1
+ ldrb r1, [r1, r2]
+ cmp r0, #0
+ bne _021D867C
+ add r0, r4, #0
+ bl MOD57_021D83D8
+_021D867C:
+ ldr r0, _021D868C ; =0x0000331B
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021D8688: .word 0x0000331C
+_021D868C: .word 0x0000331B
+ thumb_func_end MOD57_021D8634
+
+ thumb_func_start MOD57_021D8690
+MOD57_021D8690: ; 0x021D8690
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D86E0 ; =0x000032FC
+ mov r1, #7
+ ldr r0, [r5, r0]
+ ldr r4, [r0, #8]
+ ldr r0, _021D86E4 ; =0x000030BC
+ ldr r3, [r5, r0]
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5]
+ ldr r3, [r3, #0x10]
+ bl FUN_02017E14
+ ldr r0, [r5]
+ mov r1, #7
+ bl FUN_0201886C
+ cmp r0, #0
+ beq _021D86CA
+ ldr r2, _021D86E0 ; =0x000032FC
+ ldr r0, [r5]
+ ldr r2, [r5, r2]
+ mov r1, #7
+ add r2, #0xc
+ add r3, r4, #0
+ bl FUN_02017DFC
+_021D86CA:
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, _021D86E0 ; =0x000032FC
+ ldr r0, [r5]
+ ldr r2, [r5, r2]
+ mov r1, #7
+ add r2, #0xc
+ add r3, r4, #0
+ bl FUN_02017CE8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D86E0: .word 0x000032FC
+_021D86E4: .word 0x000030BC
+ thumb_func_end MOD57_021D8690
+
+ thumb_func_start MOD57_021D86E8
+MOD57_021D86E8: ; 0x021D86E8
+ push {r3, lr}
+ sub sp, #0x10
+ mov r1, #6
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #9
+ str r1, [sp, #8]
+ mov r1, #0x10
+ str r1, [sp, #0xc]
+ ldr r0, [r0]
+ mov r1, #7
+ mov r2, #0
+ mov r3, #0x14
+ bl FUN_02018540
+ add sp, #0x10
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D86E8
+
+ thumb_func_start MOD57_021D870C
+MOD57_021D870C: ; 0x021D870C
+ push {r3, lr}
+ cmp r0, #0
+ blt _021D871A
+ cmp r0, #0x64
+ bge _021D871A
+ mov r0, #0
+ pop {r3, pc}
+_021D871A:
+ cmp r0, #0x8c
+ bge _021D8722
+ mov r0, #1
+ pop {r3, pc}
+_021D8722:
+ cmp r0, #0xaa
+ bge _021D872A
+ mov r0, #2
+ pop {r3, pc}
+_021D872A:
+ cmp r0, #0xbe
+ bge _021D8732
+ mov r0, #3
+ pop {r3, pc}
+_021D8732:
+ cmp r0, #0xc8
+ bge _021D873A
+ mov r0, #4
+ pop {r3, pc}
+_021D873A:
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D870C
+
+ thumb_func_start MOD57_021D8744
+MOD57_021D8744: ; 0x021D8744
+ mov r1, #0
+ strb r1, [r0, #2]
+ strb r1, [r0, #3]
+ bx lr
+ thumb_func_end MOD57_021D8744
+
+ thumb_func_start MOD57_021D874C
+MOD57_021D874C: ; 0x021D874C
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ strb r1, [r0, #2]
+ strb r1, [r0, #3]
+ strb r1, [r0, #4]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD57_021D874C
+
+ thumb_func_start MOD57_021D875C
+MOD57_021D875C: ; 0x021D875C
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, _021D87D4 ; =0x021D973C
+ ldr r1, [r0]
+ ldr r0, [r0, #4]
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bne _021D8782
+ mov r0, #1
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bne _021D8782
+ ldr r0, _021D87D8 ; =0x00000692
+ bl FUN_020054C8
+_021D8782:
+ mov r0, #0
+ ldrsb r1, [r4, r0]
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ mul r0, r1
+ bmi _021D879A
+ mov r0, #1
+ ldrsb r1, [r4, r0]
+ mov r0, #3
+ ldrsb r0, [r4, r0]
+ mul r0, r1
+ bpl _021D87BC
+_021D879A:
+ ldrb r0, [r4, #4]
+ add r0, r0, #1
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ strb r0, [r4, #4]
+ ldrb r0, [r4, #4]
+ lsl r1, r0, #2
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020054C8
+_021D87BC:
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ strb r0, [r4]
+ mov r0, #3
+ ldrsb r0, [r4, r0]
+ strb r0, [r4, #1]
+ mov r0, #0
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021D87D4: .word 0x021D973C
+_021D87D8: .word 0x00000692
+ thumb_func_end MOD57_021D875C
+
+ thumb_func_start MOD57_021D87DC
+MOD57_021D87DC: ; 0x021D87DC
+ push {r4, r5, r6, r7}
+ mov r2, #3
+ mov r4, #0
+ lsl r2, r2, #0xc
+_021D87E4:
+ asr r3, r4, #2
+ lsr r3, r3, #0x1d
+ add r3, r4, r3
+ asr r3, r3, #3
+ lsr r6, r3, #0x1f
+ lsl r5, r3, #0x1d
+ sub r5, r5, r6
+ mov r3, #0x1d
+ ror r5, r3
+ add r3, r6, r5
+ asr r5, r4, #5
+ lsr r5, r5, #0x1a
+ lsl r3, r3, #0x18
+ add r5, r4, r5
+ lsr r3, r3, #0x18
+ asr r5, r5, #6
+ lsl r5, r5, #3
+ add r3, r0, r3
+ ldrb r3, [r5, r3]
+ lsr r7, r4, #0x1f
+ lsl r6, r4, #0x1d
+ sub r6, r6, r7
+ mov r5, #0x1d
+ ror r6, r5
+ add r5, r7, r6
+ lsl r5, r5, #0x18
+ add r6, r3, #0
+ lsr r5, r5, #0x18
+ asr r6, r5
+ mov r3, #1
+ and r3, r6
+ strb r3, [r1, r4]
+ add r4, r4, #1
+ cmp r4, r2
+ blt _021D87E4
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD57_021D87DC
+
+ thumb_func_start MOD57_021D8830
+MOD57_021D8830: ; 0x021D8830
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r1, #0
+ mov r1, #1
+ str r1, [sp]
+ lsl r1, r7, #0x18
+ mov r3, #3
+ str r0, [sp, #4]
+ lsr r1, r1, #0x18
+ lsl r3, r3, #0xc
+ bl FUN_02017E14
+ lsl r1, r7, #0x18
+ ldr r0, [sp, #4]
+ lsr r1, r1, #0x18
+ bl FUN_0201886C
+ mov r4, #0
+ add r1, r0, #0
+ add r3, r4, #0
+ add r0, r4, #0
+_021D885A:
+ add r5, r3, #0
+ add r5, #0xe
+ lsl r5, r5, #6
+ add r2, r0, #0
+ add r5, r1, r5
+_021D8864:
+ lsl r6, r2, #1
+ add r4, r4, #1
+ add r2, r2, #1
+ lsl r4, r4, #0x10
+ lsl r2, r2, #0x18
+ lsr r4, r4, #0x10
+ add r6, r5, r6
+ lsr r2, r2, #0x18
+ strh r4, [r6, #8]
+ cmp r2, #0x18
+ blo _021D8864
+ add r2, r3, #1
+ lsl r2, r2, #0x18
+ lsr r3, r2, #0x18
+ cmp r3, #8
+ blo _021D885A
+ lsl r1, r7, #0x18
+ ldr r0, [sp, #4]
+ lsr r1, r1, #0x18
+ bl FUN_02017CD0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D8830
+
+ thumb_func_start MOD57_021D8894
+MOD57_021D8894: ; 0x021D8894
+ ldr r3, _021D889C ; =0x020054C9
+ ldr r0, _021D88A0 ; =0x00000699
+ bx r3
+ nop
+_021D889C: .word 0x020054C9
+_021D88A0: .word 0x00000699
+ thumb_func_end MOD57_021D8894
+
+ thumb_func_start MOD57_021D88A4
+MOD57_021D88A4: ; 0x021D88A4
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r1, #0
+ beq _021D8900
+ mov r0, #0xc3
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D88F0
+ ldr r2, _021D8904 ; =0x0000331E
+ ldrb r0, [r4, r2]
+ cmp r0, #0xf
+ bne _021D88DE
+ add r1, r4, #0
+ add r1, #0xb4
+ sub r2, #0x16
+ ldr r1, [r1]
+ ldr r2, [r4, r2]
+ add r0, r4, #4
+ bl MOD57_021D905C
+ ldr r2, _021D8908 ; =0x0000330C
+ add r0, r4, #0
+ ldr r2, [r4, r2]
+ add r0, #0x54
+ mov r1, #1
+ bl MOD57_021D9144
+ b _021D88F0
+_021D88DE:
+ cmp r0, #0
+ bne _021D88F0
+ sub r2, #0x12
+ add r0, r4, #0
+ ldr r2, [r4, r2]
+ add r0, #0x54
+ mov r1, #0
+ bl MOD57_021D9144
+_021D88F0:
+ ldr r0, _021D8904 ; =0x0000331E
+ mov r1, #0x1e
+ ldrb r0, [r4, r0]
+ add r0, r0, #1
+ bl _s32_div_f
+ ldr r0, _021D8904 ; =0x0000331E
+ strb r1, [r4, r0]
+_021D8900:
+ pop {r4, pc}
+ nop
+_021D8904: .word 0x0000331E
+_021D8908: .word 0x0000330C
+ thumb_func_end MOD57_021D88A4
+
+ thumb_func_start MOD57_021D890C
+MOD57_021D890C: ; 0x021D890C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r0, r1, #0
+ bl FUN_02020988
+ mov r1, #0
+ add r4, r0, #0
+ mvn r1, r1
+ cmp r4, r1
+ beq _021D894A
+ cmp r4, #0
+ beq _021D894C
+ mov r1, #0x40
+ add r0, sp, #4
+ strh r1, [r0]
+ add r0, sp, #4
+ str r0, [sp]
+ ldr r3, _021D8950 ; =0x021C48F8
+ add r0, r5, #0
+ ldrh r2, [r3, #0x1c]
+ ldrh r3, [r3, #0x1e]
+ mov r1, #2
+ bl FUN_0201AFBC
+ cmp r0, #0
+ bne _021D894A
+ mov r0, #0
+ add sp, #8
+ mvn r0, r0
+ pop {r3, r4, r5, pc}
+_021D894A:
+ add r0, r4, #0
+_021D894C:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8950: .word 0x021C48F8
+ thumb_func_end MOD57_021D890C
+
+ thumb_func_start MOD57_021D8954
+MOD57_021D8954: ; 0x021D8954
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r0, r1, #0
+ bl FUN_02020968
+ mov r1, #0
+ add r4, r0, #0
+ mvn r1, r1
+ cmp r4, r1
+ beq _021D8992
+ cmp r4, #0
+ beq _021D8994
+ mov r1, #0x40
+ add r0, sp, #4
+ strh r1, [r0]
+ add r0, sp, #4
+ str r0, [sp]
+ ldr r3, _021D8998 ; =0x021C48F8
+ add r0, r5, #0
+ ldrh r2, [r3, #0x1c]
+ ldrh r3, [r3, #0x1e]
+ mov r1, #2
+ bl FUN_0201AFBC
+ cmp r0, #0
+ bne _021D8992
+ mov r0, #0
+ add sp, #8
+ mvn r0, r0
+ pop {r3, r4, r5, pc}
+_021D8992:
+ add r0, r4, #0
+_021D8994:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8998: .word 0x021C48F8
+ thumb_func_end MOD57_021D8954
+
+ thumb_func_start MOD57_021D899C
+MOD57_021D899C: ; 0x021D899C
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r7, _021D89D0 ; =0x021D98F4
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+_021D89A6:
+ lsl r1, r4, #4
+ lsl r2, r4, #3
+ add r0, r5, #0
+ add r1, r6, r1
+ add r2, r7, r2
+ bl FUN_02019150
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xb
+ blo _021D89A6
+ mov r2, #0
+ add r0, r5, #0
+ mov r1, #7
+ mov r3, #1
+ str r2, [sp]
+ bl FUN_02017F48
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D89D0: .word 0x021D98F4
+ thumb_func_end MOD57_021D899C
+
+ thumb_func_start MOD57_021D89D4
+MOD57_021D89D4: ; 0x021D89D4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021D89DA:
+ lsl r0, r4, #4
+ add r0, r5, r0
+ bl FUN_02019178
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0xb
+ blo _021D89DA
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D89D4
+
+ thumb_func_start MOD57_021D89F0
+MOD57_021D89F0: ; 0x021D89F0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r1, #0
+ mov r1, #0x88
+ str r1, [sp]
+ mov r1, #0x10
+ str r1, [sp, #4]
+ mov r1, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ add r7, r0, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0x88
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r0, #0x10
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0x88
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r0, #0x20
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0x88
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r0, #0x30
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0x88
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r0, #0x40
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r0, #0x50
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r0, #0x60
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ ldr r2, _021D8CEC ; =0x0000022D
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x19
+ bl FUN_0200A86C
+ str r0, [sp, #0x14]
+ mov r0, #0x20
+ mov r1, #0x19
+ bl FUN_020219F4
+ add r5, r0, #0
+ mov r4, #0
+_021D8AA8:
+ cmp r4, #3
+ bne _021D8AB6
+ bne _021D8AE0
+ ldrb r0, [r6, #4]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ beq _021D8AE0
+_021D8AB6:
+ ldr r1, _021D8CF0 ; =0x021D98C8
+ lsl r2, r4, #2
+ ldr r1, [r1, r2]
+ ldr r0, [sp, #0x14]
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D8CF4 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r0, r4, #4
+ add r0, r7, r0
+ add r2, r5, #0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+_021D8AE0:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #7
+ blo _021D8AA8
+ mov r0, #0x20
+ mov r1, #0x19
+ bl FUN_020219F4
+ str r0, [sp, #0x10]
+ mov r0, #6
+ mov r1, #0x20
+ mov r2, #0x19
+ bl FUN_0200AA90
+ mov r2, #0
+ str r5, [sp]
+ add r4, r0, #0
+ ldrh r0, [r6, #0x28]
+ mov r1, #0x88
+ add r3, r2, #0
+ str r0, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD57_021D8FD8
+ add r1, r6, #0
+ add r0, r5, #0
+ add r1, #8
+ bl FUN_02021E28
+ add r0, r7, #0
+ mov r2, #0
+ add r0, #0x10
+ mov r1, #0x88
+ add r3, r2, #0
+ str r5, [sp]
+ bl MOD57_021D9024
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r2, [r6, #0x1c]
+ add r0, r4, #0
+ mov r1, #5
+ mov r3, #6
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ mov r1, #0xe
+ bl FUN_0200A8E0
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x88
+ sub r3, r1, r0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D8CF4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r7, #0
+ str r1, [sp, #0xc]
+ add r0, #0x20
+ add r2, r5, #0
+ bl FUN_0201BDE0
+ ldrb r0, [r6, #4]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ beq _021D8BA4
+ str r5, [sp]
+ ldr r0, [r6, #0x20]
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ add r0, #0x30
+ mov r1, #0x88
+ add r3, r2, #0
+ bl MOD57_021D8FD8
+_021D8BA4:
+ str r5, [sp]
+ ldr r0, [r6, #0x24]
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #9
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ add r0, #0x40
+ mov r1, #0x88
+ add r3, r2, #0
+ bl MOD57_021D8FD8
+ ldrb r0, [r6, #4]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ beq _021D8C02
+ ldr r0, [r6, #0x18]
+ bl FUN_02029EBC
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #0
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, [r6, #0x18]
+ bl FUN_02029EC0
+ mov r3, #2
+ add r2, r0, #0
+ str r3, [sp]
+ mov r1, #1
+ add r0, r4, #0
+ str r1, [sp, #4]
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ mov r1, #0x10
+ bl FUN_0200A8E0
+ b _021D8C32
+_021D8C02:
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldrh r2, [r6, #0x2a]
+ add r0, r4, #0
+ mov r1, #0
+ mov r3, #3
+ bl FUN_0200AD38
+ mov r3, #2
+ add r2, r6, #0
+ str r3, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ add r2, #0x2e
+ ldrb r2, [r2]
+ add r0, r4, #0
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ mov r1, #0xf
+ bl FUN_0200A8E0
+_021D8C32:
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xe0
+ sub r3, r1, r0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D8CF4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r7, #0
+ add r0, #0x50
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ mov r1, #2
+ add r2, r6, #0
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r2, #0x2f
+ ldrb r2, [r2]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_0200AD38
+ add r2, r6, #0
+ add r2, #0x30
+ ldrb r2, [r2]
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_0200B764
+ mov r3, #2
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r6, #0x31
+ ldrb r2, [r6]
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ mov r1, #0x11
+ bl FUN_0200A8E0
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xe0
+ sub r3, r1, r0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D8CF4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r7, #0x60
+ add r0, r7, #0
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_0200AB18
+ add r0, r5, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ bl FUN_0200A8B8
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8CEC: .word 0x0000022D
+_021D8CF0: .word 0x021D98C8
+_021D8CF4: .word 0x00010200
+ thumb_func_end MOD57_021D89F0
+
+ thumb_func_start MOD57_021D8CF8
+MOD57_021D8CF8: ; 0x021D8CF8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x20
+ str r1, [sp, #0x10]
+ mov r1, #0
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r0, #0x70
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r0, #0x80
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r0, #0x90
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r0, #0xa0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ ldr r2, _021D8FAC ; =0x0000022D
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x19
+ bl FUN_0200A86C
+ add r7, r0, #0
+ mov r0, #0x20
+ mov r1, #0x19
+ bl FUN_020219F4
+ add r5, r0, #0
+ mov r4, #7
+_021D8D72:
+ ldr r1, _021D8FB0 ; =0x021D98C8
+ lsl r2, r4, #2
+ ldr r1, [r1, r2]
+ add r0, r7, #0
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D8FB4 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r0, r4, #4
+ add r0, r6, r0
+ add r2, r5, #0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xb
+ blo _021D8D72
+ mov r0, #0x20
+ mov r1, #0x19
+ bl FUN_020219F4
+ str r0, [sp, #0x14]
+ mov r0, #5
+ mov r1, #0x20
+ mov r2, #0x19
+ bl FUN_0200AA90
+ ldr r1, [sp, #0x10]
+ add r4, r0, #0
+ add r1, #0x33
+ ldrb r1, [r1]
+ cmp r1, #0
+ beq _021D8E3C
+ mov r1, #2
+ str r1, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ ldr r2, [sp, #0x10]
+ add r3, r1, #0
+ add r2, #0x32
+ ldrb r2, [r2]
+ bl FUN_0200AD38
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0
+ add r2, #0x33
+ ldrb r2, [r2]
+ mov r1, #3
+ bl FUN_0200B764
+ mov r3, #2
+ ldr r2, [sp, #0x10]
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r2, #0x34
+ ldrb r2, [r2]
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_0200AD38
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0
+ ldrh r2, [r2, #0x2c]
+ mov r1, #0
+ mov r3, #3
+ bl FUN_0200AD38
+ mov r3, #2
+ ldr r2, [sp, #0x10]
+ str r3, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ add r2, #0x35
+ ldrb r2, [r2]
+ add r0, r4, #0
+ bl FUN_0200AD38
+ ldr r2, [sp, #0x14]
+ add r0, r7, #0
+ mov r1, #0x11
+ bl FUN_0200A8E0
+ ldr r2, [sp, #0x14]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_0200B7B8
+ b _021D8E74
+_021D8E3C:
+ ldr r2, [sp, #0x14]
+ add r0, r7, #0
+ mov r1, #0xc
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x14]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_0200ABB4
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x14]
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_0200ABB4
+ add r0, r7, #0
+ mov r1, #0x14
+ add r2, r5, #0
+ bl FUN_0200A8E0
+_021D8E74:
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xe0
+ sub r3, r1, r0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D8FB4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0x70
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r2, [sp, #0x14]
+ add r0, r7, #0
+ mov r1, #0xf
+ bl FUN_0200A8E0
+ ldr r2, [sp, #0x14]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xe0
+ sub r3, r1, r0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021D8FB4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0x70
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ mov r2, #0
+ ldr r0, [sp, #0x10]
+ str r5, [sp]
+ ldr r0, [r0, #0x38]
+ mov r1, #0xe0
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r0, #0x80
+ add r3, r2, #0
+ bl MOD57_021D8FD8
+ add r0, r7, #0
+ mov r1, #0x12
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D8FB4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0x90
+ add r2, r5, #0
+ mov r3, #0x70
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ mov r2, #0
+ ldr r0, [sp, #0x10]
+ str r5, [sp]
+ ldr r0, [r0, #0x40]
+ mov r1, #0xe0
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r0, #0x90
+ add r3, r2, #0
+ bl MOD57_021D8FD8
+ add r0, r7, #0
+ mov r1, #0x13
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D8FB4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0x90
+ add r2, r5, #0
+ mov r3, #0xb0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ str r5, [sp]
+ ldr r0, [r0, #0x3c]
+ mov r1, #0xe0
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r0, #0x90
+ mov r2, #0x40
+ mov r3, #0
+ bl MOD57_021D8FD8
+ mov r2, #0
+ ldr r0, [sp, #0x10]
+ str r5, [sp]
+ ldr r0, [r0, #0x44]
+ add r6, #0xa0
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ mov r1, #0xe0
+ add r3, r2, #0
+ bl MOD57_021D8FD8
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_0200AB18
+ add r0, r5, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8FAC: .word 0x0000022D
+_021D8FB0: .word 0x021D98C8
+_021D8FB4: .word 0x00010200
+ thumb_func_end MOD57_021D8CF8
+
+ thumb_func_start MOD57_021D8FB8
+MOD57_021D8FB8: ; 0x021D8FB8
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ cmp r4, r6
+ bhi _021D8FD6
+_021D8FC4:
+ lsl r0, r4, #4
+ add r0, r5, r0
+ bl FUN_02019570
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, r6
+ bls _021D8FC4
+_021D8FD6:
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD57_021D8FB8
+
+ thumb_func_start MOD57_021D8FD8
+MOD57_021D8FD8: ; 0x021D8FD8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ mov r0, #1
+ add r4, r2, #0
+ str r0, [sp]
+ add r2, sp, #0x18
+ add r5, r1, #0
+ add r6, r3, #0
+ ldrb r2, [r2, #0x18]
+ ldr r0, [sp, #0x28]
+ ldr r1, [sp, #0x2c]
+ ldr r3, [sp, #0x34]
+ bl FUN_02021B04
+ mov r0, #0
+ ldr r1, [sp, #0x28]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ add r3, r3, r4
+ str r6, [sp]
+ mov r1, #0
+ ldr r0, _021D9020 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ ldr r2, [sp, #0x28]
+ add r0, r7, #0
+ sub r3, r5, r3
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9020: .word 0x00010200
+ thumb_func_end MOD57_021D8FD8
+
+ thumb_func_start MOD57_021D9024
+MOD57_021D9024: ; 0x021D9024
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ add r5, r1, #0
+ mov r0, #0
+ add r4, r2, #0
+ ldr r1, [sp, #0x28]
+ add r6, r3, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ add r3, r3, r4
+ str r6, [sp]
+ mov r1, #0
+ ldr r0, _021D9058 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ ldr r2, [sp, #0x28]
+ add r0, r7, #0
+ sub r3, r5, r3
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9058: .word 0x00010200
+ thumb_func_end MOD57_021D9024
+
+ thumb_func_start MOD57_021D905C
+MOD57_021D905C: ; 0x021D905C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ add r7, r0, #0
+ ldr r0, [r5, #0x18]
+ cmp r0, #0
+ bne _021D906E
+ bl ErrorHandling
+_021D906E:
+ ldr r0, [r5, #0x18]
+ bl FUN_02029EBC
+ mov r0, #0x28
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ mov r1, #0
+ add r0, #0x50
+ mov r2, #0xb8
+ add r3, r1, #0
+ bl FUN_020196F4
+ ldr r2, _021D913C ; =0x0000022D
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x19
+ bl FUN_0200A86C
+ str r0, [sp, #0x10]
+ mov r0, #0x20
+ mov r1, #0x19
+ bl FUN_020219F4
+ add r4, r0, #0
+ mov r0, #0x20
+ mov r1, #0x19
+ bl FUN_020219F4
+ str r0, [sp, #0x14]
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0x19
+ bl FUN_0200AA90
+ add r6, r0, #0
+ ldr r0, [r5, #0x18]
+ bl FUN_02029EBC
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r6, #0
+ mov r1, #0
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, [r5, #0x18]
+ bl FUN_02029EC0
+ mov r3, #2
+ add r2, r0, #0
+ str r3, [sp]
+ mov r1, #1
+ add r0, r6, #0
+ str r1, [sp, #4]
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x14]
+ mov r1, #0x10
+ bl FUN_0200A8E0
+ ldr r2, [sp, #0x14]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xe0
+ sub r3, r1, r0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D9140 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r7, #0x50
+ add r0, r7, #0
+ add r2, r4, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200AB18
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D913C: .word 0x0000022D
+_021D9140: .word 0x00010200
+ thumb_func_end MOD57_021D905C
+
+ thumb_func_start MOD57_021D9144
+MOD57_021D9144: ; 0x021D9144
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ cmp r1, #0
+ beq _021D9164
+ mov r1, #0
+ str r1, [sp]
+ ldr r3, _021D9180 ; =0x00010200
+ str r1, [sp, #4]
+ str r3, [sp, #8]
+ mov r3, #0xcd
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r4, pc}
+_021D9164:
+ mov r1, #5
+ str r1, [sp]
+ mov r1, #0x10
+ str r1, [sp, #4]
+ mov r1, #0
+ mov r2, #0xcd
+ add r3, r1, #0
+ bl FUN_020196F4
+ add r0, r4, #0
+ bl FUN_020191D0
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021D9180: .word 0x00010200
+ thumb_func_end MOD57_021D9144
+
+ thumb_func_start MOD57_021D9184
+MOD57_021D9184: ; 0x021D9184
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ add r7, r0, #0
+ bl MOD57_021D9578
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x80
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x19
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ mov r0, #0x19
+ add r1, r7, #4
+ add r2, r0, #0
+ bl FUN_02008C9C
+ ldr r4, _021D92EC ; =0x021D994C
+ str r0, [r7]
+ mov r6, #0
+ add r5, r7, #0
+_021D91BC:
+ ldrb r0, [r4]
+ add r1, r6, #0
+ mov r2, #0x19
+ bl FUN_02008DEC
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r6, r6, #1
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _021D91BC
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x19
+ str r0, [sp, #8]
+ add r0, r1, #0
+ ldr r0, [r7, r0]
+ mov r1, #0x33
+ mov r2, #0x1c
+ mov r3, #0
+ bl FUN_02008F34
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #9
+ str r0, [sp, #8]
+ mov r0, #0x19
+ sub r1, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r7, r1]
+ mov r1, #0x33
+ mov r2, #0xb
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #5
+ lsl r1, r1, #6
+ str r0, [r7, r1]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x19
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r7, r1]
+ mov r1, #0x33
+ mov r2, #0x25
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x51
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x19
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r7, r1]
+ mov r1, #0x33
+ mov r2, #0x27
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x52
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ sub r1, #0xc
+ ldr r0, [r7, r1]
+ bl FUN_02009A50
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r7, r0]
+ bl FUN_02009CF0
+ ldr r3, _021D92F0 ; =0x021D9960
+ add r2, sp, #0x1c
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ mov r0, #0x33
+ mov r1, #0x19
+ bl FUN_02006670
+ str r0, [sp, #0x14]
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ add r0, r7, r0
+ mov r4, #0
+ str r0, [sp, #0x18]
+_021D9290:
+ lsl r6, r4, #2
+ add r1, sp, #0x1c
+ ldr r0, [sp, #0x14]
+ ldr r1, [r1, r6]
+ mov r2, #0x19
+ add r5, r7, r6
+ bl FUN_02006704
+ mov r1, #7
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D92CA
+ ldr r1, [sp, #0x18]
+ add r1, r1, r6
+ bl FUN_020B0138
+ cmp r0, #0
+ bne _021D92CE
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02016A18
+ bl ErrorHandling
+ b _021D92CE
+_021D92CA:
+ bl ErrorHandling
+_021D92CE:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #8
+ blo _021D9290
+ ldr r0, [sp, #0x14]
+ bl FUN_020066F4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D92EC: .word 0x021D994C
+_021D92F0: .word 0x021D9960
+ thumb_func_end MOD57_021D9184
+
+ thumb_func_start MOD57_021D92F4
+MOD57_021D92F4: ; 0x021D92F4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x88
+ add r7, r1, #0
+ mov r1, #1
+ str r0, [sp, #0x2c]
+ str r1, [sp]
+ sub r0, r1, #2
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r3, [sp, #0x2c]
+ str r1, [sp, #0x10]
+ ldr r3, [r3, r0]
+ add r4, r0, #4
+ str r3, [sp, #0x14]
+ ldr r3, [sp, #0x2c]
+ ldr r3, [r3, r4]
+ add r4, r0, #0
+ str r3, [sp, #0x18]
+ ldr r3, [sp, #0x2c]
+ add r4, #8
+ ldr r3, [r3, r4]
+ add r0, #0xc
+ str r3, [sp, #0x1c]
+ ldr r3, [sp, #0x2c]
+ ldr r0, [r3, r0]
+ add r3, r1, #0
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r0, sp, #0x64
+ add r2, r1, #0
+ bl FUN_02008AA4
+ ldr r0, [sp, #0x2c]
+ mov r4, #0
+ ldr r0, [r0]
+ ldr r6, _021D94B4 ; =0x021D99C0
+ str r0, [sp, #0x34]
+ add r0, sp, #0x64
+ str r0, [sp, #0x38]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r4, [sp, #0x3c]
+ str r4, [sp, #0x40]
+ str r4, [sp, #0x44]
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x4c]
+ str r0, [sp, #0x50]
+ add r0, sp, #0x34
+ strh r4, [r0, #0x20]
+ mov r0, #2
+ str r0, [sp, #0x58]
+ mov r0, #1
+ str r0, [sp, #0x5c]
+ mov r0, #0x19
+ ldr r5, [sp, #0x2c]
+ str r0, [sp, #0x60]
+_021D936E:
+ ldr r0, [r6]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x3c]
+ ldr r0, [r6, #4]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x40]
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ mov r1, #0x57
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200BC
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_02020130
+ ldrb r0, [r7, r4]
+ cmp r0, #0
+ bne _021D93AE
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+_021D93AE:
+ add r4, r4, #1
+ add r6, #8
+ add r5, r5, #4
+ cmp r4, #8
+ blt _021D936E
+ mov r0, #8
+ ldr r4, _021D94B8 ; =0x021D9980
+ ldr r5, [sp, #0x2c]
+ str r0, [sp, #0x30]
+ mov r6, #0
+ mov r7, #1
+_021D93C4:
+ ldr r0, [r4]
+ str r7, [sp, #0x58]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x3c]
+ ldr r0, [r4, #4]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x40]
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #8
+ bl FUN_02020130
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r4, #8
+ add r5, r5, #4
+ cmp r6, #8
+ blt _021D93C4
+ ldr r0, [sp, #0x30]
+ ldr r4, _021D94B8 ; =0x021D9980
+ add r0, #8
+ str r0, [sp, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x30]
+ mov r6, #0
+ lsl r1, r0, #2
+ ldr r0, [sp, #0x2c]
+ mov r7, #1
+ add r5, r0, r1
+_021D9424:
+ ldr r0, [r4]
+ str r7, [sp, #0x58]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x3c]
+ ldr r0, [r4, #4]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x40]
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ mov r1, #0x57
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #9
+ bl FUN_02020130
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r4, #8
+ add r5, r5, #4
+ cmp r6, #8
+ blt _021D9424
+ mov r1, #0
+ add r0, sp, #0x84
+ strb r1, [r0]
+ mov r0, #6
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x3c]
+ mov r0, #0x22
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x40]
+ str r1, [sp, #0x58]
+ mov r1, #0x57
+ ldr r0, [sp, #0x2c]
+ lsl r1, r1, #2
+ add r4, r0, r1
+ ldr r0, [sp, #0x30]
+ add r0, #8
+ str r0, [sp, #0x30]
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x16
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ str r0, [r4, r5]
+ ldr r0, [r4, r5]
+ mov r1, #0
+ bl FUN_020200BC
+ ldr r0, [r4, r5]
+ mov r1, #0xa
+ bl FUN_02020130
+ ldr r0, [r4, r5]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x88
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D94B4: .word 0x021D99C0
+_021D94B8: .word 0x021D9980
+ thumb_func_end MOD57_021D92F4
+
+ thumb_func_start MOD57_021D94BC
+MOD57_021D94BC: ; 0x021D94BC
+ push {r4, r5, r6, lr}
+ mov r6, #7
+ add r5, r0, #0
+ mov r4, #0
+ lsl r6, r6, #6
+_021D94C6:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ bl FUN_02016A18
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #8
+ blo _021D94C6
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009C0C
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ bl FUN_02009E04
+ mov r6, #0x4b
+ mov r4, #0
+ lsl r6, r6, #2
+_021D94F4:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ bl FUN_02008E2C
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021D94F4
+ ldr r0, [r5]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD57_021D94BC
+
+ thumb_func_start MOD57_021D951C
+MOD57_021D951C: ; 0x021D951C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ cmp r4, #8
+ blo _021D952E
+ bl ErrorHandling
+_021D952E:
+ cmp r6, #3
+ bls _021D9536
+ bl ErrorHandling
+_021D9536:
+ lsl r7, r4, #2
+ mov r0, #0x57
+ add r1, r5, r7
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_020B19C4
+ str r0, [sp]
+ lsl r0, r4, #5
+ str r0, [sp, #4]
+ mov r0, #0x1e
+ add r1, r5, r7
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ lsl r5, r6, #5
+ ldr r4, [r0, #0xc]
+ mov r1, #0x20
+ add r0, r4, r5
+ bl DC_FlushRange
+ ldr r2, [sp]
+ ldr r1, [sp, #4]
+ add r0, r4, r5
+ add r1, r2, r1
+ mov r2, #0x20
+ bl GX_LoadOBJPltt
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D951C
+
+ thumb_func_start MOD57_021D9578
+MOD57_021D9578: ; 0x021D9578
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021D95A4 ; =0x021D9950
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_0201D040
+ mov r0, #2
+ mov r1, #0x19
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021D95A4: .word 0x021D9950
+ thumb_func_end MOD57_021D9578
+
+ thumb_func_start MOD57_021D95A8
+MOD57_021D95A8: ; 0x021D95A8
+ mov r2, #0
+ mov r1, #0xff
+_021D95AC:
+ strb r2, [r0]
+ strb r1, [r0, #1]
+ add r2, r2, #1
+ add r0, r0, #2
+ cmp r2, #4
+ blt _021D95AC
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD57_021D95A8
+
+ thumb_func_start MOD57_021D95BC
+MOD57_021D95BC: ; 0x021D95BC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ bl MOD57_021D95F4
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD57_021D9624
+ cmp r0, #1
+ beq _021D95F0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD57_021D965C
+ cmp r0, #1
+ beq _021D95F0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD57_021D9694
+ cmp r0, #1
+_021D95F0:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D95BC
+
+ thumb_func_start MOD57_021D95F4
+MOD57_021D95F4: ; 0x021D95F4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r4, #0
+ add r5, r7, #0
+ mov r6, #0xff
+_021D95FE:
+ ldrb r0, [r5, #1]
+ cmp r0, #0xff
+ beq _021D9612
+ ldrb r0, [r5]
+ add r0, r0, #3
+ bl FUN_020048BC
+ cmp r0, #0
+ bne _021D9612
+ strb r6, [r5, #1]
+_021D9612:
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, #4
+ blt _021D95FE
+ add r0, r7, #0
+ bl MOD57_021D96D8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D95F4
+
+ thumb_func_start MOD57_021D9624
+MOD57_021D9624: ; 0x021D9624
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r4, #0
+ add r1, r6, #0
+_021D962E:
+ ldrb r0, [r1, #1]
+ cmp r5, r0
+ bne _021D964E
+ lsl r7, r4, #1
+ ldrb r0, [r6, r7]
+ add r1, r5, #0
+ bl MOD57_021D96F4
+ ldrb r2, [r6, r7]
+ add r0, r6, #0
+ add r1, r4, #0
+ add r3, r5, #0
+ bl MOD57_021D96B0
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D964E:
+ add r4, r4, #1
+ add r1, r1, #2
+ cmp r4, #4
+ blt _021D962E
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D9624
+
+ thumb_func_start MOD57_021D965C
+MOD57_021D965C: ; 0x021D965C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ mov r4, #0
+ add r1, r5, #0
+_021D9666:
+ ldrb r0, [r1, #1]
+ cmp r0, #0xff
+ bne _021D9686
+ lsl r6, r4, #1
+ ldrb r0, [r5, r6]
+ add r1, r7, #0
+ bl MOD57_021D96F4
+ ldrb r2, [r5, r6]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r3, r7, #0
+ bl MOD57_021D96B0
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9686:
+ add r4, r4, #1
+ add r1, r1, #2
+ cmp r4, #4
+ blt _021D9666
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D965C
+
+ thumb_func_start MOD57_021D9694
+MOD57_021D9694: ; 0x021D9694
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldrb r0, [r5, #6]
+ add r4, r1, #0
+ bl MOD57_021D96F4
+ ldrb r2, [r5, #6]
+ add r0, r5, #0
+ mov r1, #3
+ add r3, r4, #0
+ bl MOD57_021D96B0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD57_021D9694
+
+ thumb_func_start MOD57_021D96B0
+MOD57_021D96B0: ; 0x021D96B0
+ push {r4, r5}
+ cmp r1, #0
+ ble _021D96CE
+ lsl r4, r1, #1
+ add r4, r0, r4
+_021D96BA:
+ sub r5, r4, #2
+ ldrb r5, [r5]
+ sub r1, r1, #1
+ strb r5, [r4]
+ sub r5, r4, #1
+ ldrb r5, [r5]
+ strb r5, [r4, #1]
+ sub r4, r4, #2
+ cmp r1, #0
+ bgt _021D96BA
+_021D96CE:
+ strb r2, [r0]
+ strb r3, [r0, #1]
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD57_021D96B0
+
+ thumb_func_start MOD57_021D96D8
+MOD57_021D96D8: ; 0x021D96D8
+ mov r3, #0
+ mov r1, #0xff
+_021D96DC:
+ ldrb r2, [r0]
+ cmp r2, #0xff
+ bne _021D96E8
+ ldrb r2, [r0, #2]
+ strb r2, [r0]
+ strb r1, [r0, #2]
+_021D96E8:
+ add r3, r3, #1
+ add r0, r0, #2
+ cmp r3, #4
+ blt _021D96DC
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD57_021D96D8
+
+ thumb_func_start MOD57_021D96F4
+MOD57_021D96F4: ; 0x021D96F4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r2, #0
+ add r0, r5, #3
+ add r4, r1, #0
+ ldr r2, _021D9720 ; =0x00000694
+ add r1, r0, #0
+ bl FUN_020048A0
+ ldr r2, _021D9724 ; =0x021D9A00
+ lsl r3, r4, #1
+ ldrh r2, [r2, r3]
+ mov r3, #4
+ sub r4, r3, r6
+ mov r3, #0x98
+ mul r3, r4
+ ldr r1, _021D9728 ; =0x0000FFFF
+ add r0, r5, #3
+ sub r2, r2, r3
+ bl FUN_02004D20
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D9720: .word 0x00000694
+_021D9724: .word 0x021D9A00
+_021D9728: .word 0x0000FFFF
+ thumb_func_end MOD57_021D96F4
+
+ .section .rodata
+ ; 0x021D972C
+ .incbin "baserom.nds", 0x2A844C, 0x2E4
diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s
new file mode 100644
index 00000000..c7305812
--- /dev/null
+++ b/arm9/modules/58/asm/module_58.s
@@ -0,0 +1,2481 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD58_021D9A20
+MOD58_021D9A20: ; 0x021D9A20
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, [r5]
+ add r6, r0, #0
+ cmp r1, #0
+ beq _021D9A36
+ cmp r1, #1
+ bne _021D9A34
+ b _021D9B56
+_021D9A34:
+ b _021D9B64
+_021D9A36:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D9B6C ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D9B70 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #3
+ mov r1, #0x27
+ lsl r2, r2, #6
+ bl FUN_0201681C
+ ldr r1, _021D9B74 ; =0x00005CB0
+ add r0, r6, #0
+ mov r2, #0x27
+ bl FUN_02006268
+ ldr r2, _021D9B74 ; =0x00005CB0
+ mov r1, #0
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x27
+ bl FUN_02016B94
+ str r0, [r4]
+ mov r0, #0x27
+ bl FUN_0200AA80
+ str r0, [r4, #0x10]
+ ldr r2, _021D9B78 ; =0x00000176
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x27
+ bl FUN_0200A86C
+ str r0, [r4, #0x14]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ bl MOD58_021D9CDC
+ ldr r0, [r4]
+ bl MOD58_021D9CFC
+ mov r0, #0x10
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add r0, r6, #0
+ bl FUN_0200628C
+ bl FUN_02029ABC
+ bl FUN_02029AC8
+ ldr r1, _021D9B7C ; =0x00005B98
+ str r0, [r4, r1]
+ add r0, r6, #0
+ bl FUN_0200628C
+ bl FUN_02029FC8
+ str r0, [r4, #8]
+ add r0, r6, #0
+ bl FUN_0200628C
+ bl LoadPlayerDataAddress
+ str r0, [r4, #0xc]
+ add r0, r4, #0
+ bl MOD58_021D9F14
+ bl FUN_0201CC08
+ mov r0, #1
+ bl FUN_0201CC24
+ ldr r0, _021D9B80 ; =MOD58_021D9CB4
+ ldr r1, [r4]
+ bl FUN_02015F10
+ mov r0, #2
+ mov r1, #0x27
+ bl FUN_02002C50
+ add r0, r4, #0
+ bl MOD58_021D9E04
+ bl MOD58_021DA014
+ add r0, r4, #0
+ bl MOD58_021DA044
+ add r0, r4, #0
+ bl MOD58_021DA1C4
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD58_021DA30C
+ mov r1, #0
+ mov r0, #0x38
+ add r2, r1, #0
+ bl FUN_0200433C
+ ldr r2, _021D9B84 ; =0x04000304
+ ldr r0, _021D9B88 ; =0xFFFF7FFF
+ ldrh r1, [r2]
+ and r0, r1
+ strh r0, [r2]
+ ldr r0, [r5]
+ add r0, r0, #1
+ str r0, [r5]
+ b _021D9B64
+_021D9B56:
+ bl FUN_02006278
+ mov r0, #0
+ str r0, [r5]
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D9B64:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D9B6C: .word 0xFFFFE0FF
+_021D9B70: .word 0x04001000
+_021D9B74: .word 0x00005CB0
+_021D9B78: .word 0x00000176
+_021D9B7C: .word 0x00005B98
+_021D9B80: .word MOD58_021D9CB4
+_021D9B84: .word 0x04000304
+_021D9B88: .word 0xFFFF7FFF
+ thumb_func_end MOD58_021D9A20
+
+ thumb_func_start MOD58_021D9B8C
+MOD58_021D9B8C: ; 0x021D9B8C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ bl FUN_02006278
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #0
+ beq _021D9BA6
+ cmp r1, #1
+ beq _021D9BB4
+ cmp r1, #2
+ beq _021D9BD2
+ b _021D9BDE
+_021D9BA6:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9BDE
+ mov r0, #1
+ str r0, [r5]
+ b _021D9BDE
+_021D9BB4:
+ mov r2, #0xc3
+ lsl r2, r2, #2
+ ldr r2, [r4, r2]
+ lsl r3, r2, #2
+ ldr r2, _021D9BE8 ; =0x021DAFA0
+ ldr r2, [r2, r3]
+ cmp r2, #0
+ beq _021D9BC8
+ blx r2
+ str r0, [r5]
+_021D9BC8:
+ ldr r0, _021D9BEC ; =0x00004318
+ add r0, r4, r0
+ bl MOD58_021DAB34
+ b _021D9BDE
+_021D9BD2:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9BDE
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D9BDE:
+ ldr r0, [r4, #0x3c]
+ bl FUN_0201FDEC
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D9BE8: .word 0x021DAFA0
+_021D9BEC: .word 0x00004318
+ thumb_func_end MOD58_021D9B8C
+
+ thumb_func_start MOD58_021D9BF0
+MOD58_021D9BF0: ; 0x021D9BF0
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ bl FUN_02006278
+ add r6, r0, #0
+ ldr r0, _021D9CAC ; =0x00005B98
+ mov r1, #0x2d
+ lsl r1, r1, #4
+ ldr r0, [r6, r0]
+ ldr r1, [r6, r1]
+ bl MOD58_021DAC18
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0x5e
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #0x62
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009E04
+ mov r7, #0x5a
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_021D9C40:
+ ldr r0, [r5, r7]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021D9C40
+ ldr r0, [r6, #0x3c]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ add r0, r6, #0
+ bl MOD58_021DA4CC
+ mov r0, #2
+ bl FUN_02002CF8
+ ldr r0, [r6]
+ bl MOD58_021D9ED8
+ bl FUN_0201CD04
+ ldr r0, [r6, #0x14]
+ bl FUN_0200A8B8
+ ldr r0, [r6, #0x10]
+ bl FUN_0200AB18
+ add r0, r6, #0
+ bl MOD58_021D9EA0
+ ldr r0, [sp]
+ bl FUN_0200627C
+ ldr r2, _021D9CB0 ; =0x04000304
+ ldrh r1, [r2]
+ lsr r0, r2, #0xb
+ orr r0, r1
+ strh r0, [r2]
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0x27
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9CAC: .word 0x00005B98
+_021D9CB0: .word 0x04000304
+ thumb_func_end MOD58_021D9BF0
+
+ thumb_func_start MOD58_021D9CB4
+MOD58_021D9CB4: ; 0x021D9CB4
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0201C30C
+ bl FUN_02009F80
+ add r0, r4, #0
+ bl FUN_0201AB60
+ ldr r3, _021D9CD4 ; =0x027E0000
+ ldr r1, _021D9CD8 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D9CD4: .word 0x027E0000
+_021D9CD8: .word 0x00003FF8
+ thumb_func_end MOD58_021D9CB4
+
+ thumb_func_start MOD58_021D9CDC
+MOD58_021D9CDC: ; 0x021D9CDC
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D9CF8 ; =0x021DAE6C
+ add r3, sp, #0
+ mov r2, #5
+_021D9CE6:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D9CE6
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D9CF8: .word 0x021DAE6C
+ thumb_func_end MOD58_021D9CDC
+
+ thumb_func_start MOD58_021D9CFC
+MOD58_021D9CFC: ; 0x021D9CFC
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ ldr r5, _021D9DEC ; =0x021DADC0
+ add r3, sp, #0x8c
+ add r4, r0, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D9DF0 ; =0x021DAE18
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02018744
+ ldr r5, _021D9DF4 ; =0x021DAE34
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ ldr r5, _021D9DF8 ; =0x021DAE50
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D9DFC ; =0x021DADE0
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02018744
+ ldr r5, _021D9E00 ; =0x021DADFC
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ add r0, r4, #0
+ mov r1, #5
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ mov r1, #0x20
+ add r2, r0, #0
+ mov r3, #0x27
+ bl FUN_02017F18
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x27
+ bl FUN_02017F18
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ nop
+_021D9DEC: .word 0x021DADC0
+_021D9DF0: .word 0x021DAE18
+_021D9DF4: .word 0x021DAE34
+_021D9DF8: .word 0x021DAE50
+_021D9DFC: .word 0x021DADE0
+_021D9E00: .word 0x021DADFC
+ thumb_func_end MOD58_021D9CFC
+
+ thumb_func_start MOD58_021D9E04
+MOD58_021D9E04: ; 0x021D9E04
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ ldr r0, _021D9E90 ; =0x0000433D
+ mov r6, #0
+ add r5, r7, r0
+ mov r0, #0xf0
+ add r4, r7, #0
+ str r0, [sp]
+_021D9E14:
+ mov r0, #8
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r4, #0x18]
+ ldrb r1, [r5]
+ ldr r0, [sp]
+ add r6, r6, #1
+ bic r1, r0
+ strb r1, [r5]
+ ldr r0, _021D9E94 ; =0x00004384
+ mov r1, #0
+ strh r1, [r4, r0]
+ add r4, r4, #4
+ add r5, #0x11
+ cmp r6, #5
+ blt _021D9E14
+ mov r0, #0x14
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r7, #0x2c]
+ mov r0, #0x28
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r7, #0x30]
+ mov r0, #0x50
+ mov r1, #0x27
+ bl FUN_020219F4
+ str r0, [r7, #0x34]
+ ldr r0, _021D9E98 ; =0x0000431A
+ mov r1, #0
+ strb r1, [r7, r0]
+ mov r0, #0xc3
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r7, r0]
+ ldr r0, [r7, #0x14]
+ ldr r2, [r7, #0x2c]
+ mov r1, #0xc
+ bl FUN_0200A8E0
+ ldr r0, [r7, #0x14]
+ ldr r2, [r7, #0x30]
+ mov r1, #9
+ bl FUN_0200A8E0
+ mov r0, #0x27
+ bl FUN_02014590
+ ldr r1, _021D9E9C ; =0x00005C9C
+ mov r2, #5
+ str r0, [r7, r1]
+ add r1, r1, #4
+ mov r0, #0
+ add r1, r7, r1
+ bl MIi_CpuClearFast
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9E90: .word 0x0000433D
+_021D9E94: .word 0x00004384
+_021D9E98: .word 0x0000431A
+_021D9E9C: .word 0x00005C9C
+ thumb_func_end MOD58_021D9E04
+
+ thumb_func_start MOD58_021D9EA0
+MOD58_021D9EA0: ; 0x021D9EA0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r0, _021D9ED4 ; =0x00005C9C
+ ldr r0, [r6, r0]
+ bl FUN_020145A8
+ mov r4, #0
+ add r5, r6, #0
+_021D9EB0:
+ ldr r0, [r5, #0x18]
+ bl FUN_02021A20
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #5
+ blt _021D9EB0
+ ldr r0, [r6, #0x34]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x30]
+ bl FUN_02021A20
+ ldr r0, [r6, #0x2c]
+ bl FUN_02021A20
+ pop {r4, r5, r6, pc}
+ nop
+_021D9ED4: .word 0x00005C9C
+ thumb_func_end MOD58_021D9EA0
+
+ thumb_func_start MOD58_021D9ED8
+MOD58_021D9ED8: ; 0x021D9ED8
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #5
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD58_021D9ED8
+
+ thumb_func_start MOD58_021D9F14
+MOD58_021D9F14: ; 0x021D9F14
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldr r4, [r5]
+ mov r0, #0x60
+ mov r1, #0
+ str r0, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ mov r0, #0x5f
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02006930
+ mov r0, #0x40
+ str r0, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ mov r0, #0x5f
+ mov r1, #2
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r1, #0x1a
+ mov r0, #0
+ lsl r1, r1, #4
+ mov r2, #0x27
+ bl FUN_02002EEC
+ mov r1, #0x1a
+ mov r0, #4
+ lsl r1, r1, #4
+ mov r2, #0x27
+ bl FUN_02002EEC
+ mov r0, #1
+ mov r1, #0x20
+ mov r2, #0
+ mov r3, #0x27
+ bl FUN_02017F18
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x27
+ str r0, [sp, #0xc]
+ mov r0, #0x5f
+ mov r1, #3
+ add r2, r4, #0
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x27
+ str r0, [sp, #0xc]
+ mov r0, #0x5f
+ mov r1, #5
+ add r2, r4, #0
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x27
+ str r0, [sp, #0xc]
+ mov r0, #0x5f
+ mov r1, #4
+ add r2, r4, #0
+ mov r3, #5
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #6
+ lsl r0, r0, #8
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x27
+ str r0, [sp, #0xc]
+ mov r0, #0x5f
+ mov r1, #6
+ add r2, r4, #0
+ mov r3, #5
+ bl FUN_020068C8
+ ldr r0, [r5, #0xc]
+ bl FUN_02025084
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200CD68
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x27
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x1f
+ mov r3, #0xb
+ bl FUN_0200CB00
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD58_021D9F14
+
+ thumb_func_start MOD58_021DA014
+MOD58_021DA014: ; 0x021DA014
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021DA040 ; =0x021DADD0
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_0201D040
+ mov r0, #0x14
+ mov r1, #0x27
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021DA040: .word 0x021DADD0
+ thumb_func_end MOD58_021DA014
+
+ thumb_func_start MOD58_021DA044
+MOD58_021DA044: ; 0x021DA044
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x7e
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x27
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ add r1, r5, #0
+ mov r0, #0x32
+ add r1, #0x40
+ mov r2, #0x27
+ bl FUN_02008C9C
+ str r0, [r5, #0x3c]
+ add r0, r5, #0
+ mov r2, #1
+ add r0, #0x40
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ mov r7, #0x5a
+ mov r6, #0
+ add r4, r5, #0
+ lsl r7, r7, #2
+_021DA08A:
+ mov r0, #2
+ add r1, r6, #0
+ mov r2, #0x27
+ bl FUN_02008DEC
+ str r0, [r4, r7]
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, #4
+ blt _021DA08A
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #1
+ str r3, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0x5a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x5f
+ mov r2, #7
+ bl FUN_02008F34
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0x27
+ sub r1, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x5f
+ bl FUN_02008FEC
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x5f
+ mov r2, #8
+ mov r3, #1
+ bl FUN_020090AC
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x5f
+ mov r2, #9
+ mov r3, #1
+ bl FUN_020090AC
+ mov r1, #0x61
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0x1c
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x5f
+ mov r2, #7
+ bl FUN_02008F34
+ mov r1, #0x62
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r2, #1
+ str r2, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #0x27
+ sub r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r0, [r5, r1]
+ mov r1, #0x5f
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #0x63
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0x1c
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x5f
+ mov r2, #8
+ bl FUN_020090AC
+ mov r1, #0x19
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r3, #1
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x27
+ sub r1, #0x1c
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ mov r1, #0x5f
+ mov r2, #9
+ bl FUN_020090AC
+ mov r1, #0x65
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ sub r1, #0x1c
+ ldr r0, [r5, r1]
+ bl FUN_02009A50
+ mov r0, #0x62
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009A50
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009CF0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD58_021DA044
+
+ thumb_func_start MOD58_021DA1C4
+MOD58_021DA1C4: ; 0x021DA1C4
+ push {r3, r4, lr}
+ sub sp, #0x5c
+ mov r1, #0
+ add r4, r0, #0
+ str r1, [sp]
+ sub r0, r1, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r2, #0x5a
+ str r1, [sp, #0x10]
+ lsl r2, r2, #2
+ ldr r0, [r4, r2]
+ add r3, r1, #0
+ str r0, [sp, #0x14]
+ add r0, r2, #4
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x18]
+ add r0, r2, #0
+ add r0, #8
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x1c]
+ add r0, r2, #0
+ add r0, #0xc
+ ldr r0, [r4, r0]
+ add r2, #0x30
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ add r0, r4, r2
+ add r2, r1, #0
+ str r1, [sp, #0x28]
+ bl FUN_02008AA4
+ mov r1, #1
+ mov r3, #0x5a
+ str r1, [sp]
+ sub r0, r1, #2
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ lsl r3, r3, #2
+ ldr r2, [r4, r3]
+ str r2, [sp, #0x14]
+ add r2, r3, #4
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x18]
+ add r2, r3, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ str r2, [sp, #0x1c]
+ add r2, r3, #0
+ add r2, #0xc
+ ldr r2, [r4, r2]
+ add r3, #0x54
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, r4, r3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02008AA4
+ ldr r0, [r4, #0x3c]
+ mov r2, #0
+ str r0, [sp, #0x2c]
+ mov r0, #0x66
+ lsl r0, r0, #2
+ add r1, r4, r0
+ str r1, [sp, #0x30]
+ mov r1, #1
+ lsl r1, r1, #0xc
+ add r0, #0x24
+ str r2, [sp, #0x3c]
+ str r1, [sp, #0x40]
+ str r1, [sp, #0x44]
+ str r1, [sp, #0x48]
+ add r1, sp, #0x2c
+ strh r2, [r1, #0x20]
+ mov r1, #1
+ add r0, r4, r0
+ str r0, [sp, #0x30]
+ mov r0, #0xe
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x34]
+ mov r0, #0xaf
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x38]
+ str r1, [sp, #0x50]
+ str r1, [sp, #0x54]
+ mov r1, #0x27
+ add r0, sp, #0x2c
+ str r1, [sp, #0x58]
+ bl FUN_0201FE94
+ mov r1, #0x25
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x25
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02020130
+ mov r0, #0x25
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02020248
+ mov r0, #0x25
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #2
+ bl FUN_02020238
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x5c
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD58_021DA1C4
+
+ thumb_func_start MOD58_021DA2CC
+MOD58_021DA2CC: ; 0x021DA2CC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ add r4, r2, #0
+ mov r0, #2
+ mov r2, #0
+ add r6, r1, #0
+ add r7, r3, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ str r4, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x28]
+ add r1, r7, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldrb r4, [r5, #7]
+ add r0, r5, #0
+ add r2, r6, #0
+ lsl r4, r4, #3
+ sub r4, r4, r3
+ lsr r3, r4, #0x1f
+ add r3, r4, r3
+ asr r3, r3, #1
+ bl FUN_0201BDE0
+ ldr r0, [r5, #0xc]
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD58_021DA2CC
+
+ thumb_func_start MOD58_021DA30C
+MOD58_021DA30C: ; 0x021DA30C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r5, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x28
+ mov r1, #0xb5
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r5]
+ add r1, r5, r1
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02019064
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #9
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ mov r0, #8
+ mov r1, #0xb1
+ lsl r1, r1, #2
+ str r0, [sp, #8]
+ mov r2, #1
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldr r0, [r5]
+ add r1, r5, r1
+ mov r3, #4
+ bl FUN_02019064
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #2
+ bl FUN_02019620
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #0xc1
+ mov r1, #0xb9
+ str r0, [sp, #0x10]
+ lsl r1, r1, #2
+ ldr r0, [r5]
+ add r1, r5, r1
+ mov r2, #1
+ mov r3, #0x1a
+ bl FUN_02019064
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, _021DA4BC ; =0x000E0702
+ mov r2, #1
+ str r0, [sp]
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ ldr r1, [r5, #0x2c]
+ add r0, r5, r0
+ mov r3, #2
+ bl MOD58_021DA2CC
+ mov r1, #2
+ lsl r1, r1, #8
+ bl DC_FlushRange
+ mov r4, #0
+ ldr r0, _021DA4C0 ; =0x00005B9C
+ str r4, [sp, #0x18]
+ add r7, r4, #0
+ add r6, r5, r0
+_021DA3C2:
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #4
+ mov r2, #2
+ add r3, r4, #0
+ str r6, [sp, #4]
+ bl FUN_02011B20
+ mov r1, #1
+ add r0, r6, #0
+ lsl r1, r1, #8
+ bl DC_FlushRange
+ mov r2, #1
+ add r0, r6, #0
+ add r1, r7, #0
+ lsl r2, r2, #8
+ bl GX_LoadOBJ
+ mov r0, #1
+ lsl r0, r0, #8
+ add r7, r7, r0
+ ldr r0, [sp, #0x18]
+ add r4, r4, #4
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ cmp r0, #2
+ blt _021DA3C2
+ mov r3, #2
+ str r3, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #4]
+ mov r1, #0xbd
+ lsl r1, r1, #2
+ str r3, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0xd1
+ str r0, [sp, #0x10]
+ ldr r0, [r5]
+ add r1, r5, r1
+ mov r2, #1
+ bl FUN_02019064
+ ldr r1, [r5, #0x30]
+ mov r0, #1
+ mov r2, #0
+ bl FUN_02002E14
+ add r4, r0, #0
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ mov r3, #0xe0
+ sub r4, r3, r4
+ lsr r3, r4, #0x1f
+ add r3, r4, r3
+ ldr r0, _021DA4C4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ ldr r2, [r5, #0x30]
+ add r0, r5, r0
+ mov r1, #1
+ asr r3, r3, #1
+ bl FUN_0201BDE0
+ mov r0, #0
+ str r0, [sp, #0x14]
+ mov r0, #0x9d
+ lsl r0, r0, #2
+ mov r7, #1
+ mov r6, #3
+ add r4, r5, r0
+_021DA46A:
+ lsl r0, r6, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ lsl r0, r7, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [r5]
+ add r1, r4, #0
+ mov r2, #4
+ mov r3, #5
+ bl FUN_02019064
+ add r0, r4, #0
+ mov r1, #0
+ bl FUN_02019620
+ ldr r0, [sp, #0x14]
+ add r7, #0x14
+ add r0, r0, #1
+ add r6, r6, #4
+ add r4, #0x10
+ str r0, [sp, #0x14]
+ cmp r0, #5
+ blt _021DA46A
+ mov r0, #0x9d
+ lsl r0, r0, #2
+ ldr r2, _021DA4C8 ; =0x000E0D0F
+ add r0, r5, r0
+ mov r1, #0
+ add r3, r5, #0
+ bl MOD58_021DAB74
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DA4BC: .word 0x000E0702
+_021DA4C0: .word 0x00005B9C
+_021DA4C4: .word 0x00010200
+_021DA4C8: .word 0x000E0D0F
+ thumb_func_end MOD58_021DA30C
+
+ thumb_func_start MOD58_021DA4CC
+MOD58_021DA4CC: ; 0x021DA4CC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r0, #0x9d
+ lsl r0, r0, #2
+ mov r4, #0
+ add r5, r6, r0
+_021DA4D8:
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #5
+ blt _021DA4D8
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ mov r0, #0xb9
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ add r0, r6, r0
+ bl FUN_02019178
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD58_021DA4CC
+
+ thumb_func_start MOD58_021DA510
+MOD58_021DA510: ; 0x021DA510
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD58_021DA510
+
+ thumb_func_start MOD58_021DA514
+MOD58_021DA514: ; 0x021DA514
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ add r4, r0, #0
+ ldr r0, _021DA5DC ; =0x021DADAE
+ bl FUN_02020988
+ add r1, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ beq _021DA568
+ cmp r1, #0
+ bne _021DA55A
+ mov r0, #0xc3
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ cmp r0, #1
+ bne _021DA568
+ add r0, r4, #0
+ mov r1, #0xa
+ bl MOD58_021DAB94
+ mov r0, #0xc3
+ mov r1, #2
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ sub r0, #0xbc
+ add r0, r4, r0
+ mov r1, #1
+ bl MOD58_021DA614
+ ldr r0, _021DA5E0 ; =0x000005DD
+ bl FUN_020054C8
+ b _021DA568
+_021DA55A:
+ ldr r0, _021DA5E4 ; =0x0000431A
+ strb r1, [r4, r0]
+ mov r0, #0x25
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD58_021DA5F4
+_021DA568:
+ ldr r0, _021DA5E8 ; =0x021DADA6
+ bl FUN_02020968
+ mov r1, #0
+ mvn r1, r1
+ cmp r0, r1
+ beq _021DA57C
+ add r0, r4, #0
+ bl MOD58_021DAC7C
+_021DA57C:
+ add r0, sp, #0
+ mov r1, #4
+ mov r2, #1
+ bl FUN_0201CD38
+ cmp r0, #1
+ bne _021DA5D8
+ add r7, sp, #0
+ ldrh r3, [r7]
+ mov r1, #0
+ cmp r3, #0
+ ble _021DA5B0
+ ldr r5, _021DA5EC ; =0x0000431C
+ add r2, sp, #0
+ add r6, r5, #0
+ add r6, #8
+_021DA59C:
+ ldrh r3, [r2, #2]
+ add r0, r4, r1
+ add r1, r1, #1
+ strb r3, [r0, r5]
+ ldrh r3, [r2, #4]
+ add r2, #8
+ strb r3, [r0, r6]
+ ldrh r3, [r7]
+ cmp r1, r3
+ blt _021DA59C
+_021DA5B0:
+ ldr r0, _021DA5F0 ; =0x0000432C
+ mov r2, #0xf0
+ ldrb r1, [r4, r0]
+ bic r1, r2
+ lsl r2, r3, #0x18
+ lsr r2, r2, #0x18
+ lsl r2, r2, #0x1c
+ lsr r2, r2, #0x18
+ orr r1, r2
+ strb r1, [r4, r0]
+ ldrb r3, [r4, r0]
+ mov r1, #0xf
+ bic r3, r1
+ add r1, r0, #0
+ sub r1, #0x12
+ ldrb r2, [r4, r1]
+ mov r1, #0xf
+ and r1, r2
+ orr r1, r3
+ strb r1, [r4, r0]
+_021DA5D8:
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DA5DC: .word 0x021DADAE
+_021DA5E0: .word 0x000005DD
+_021DA5E4: .word 0x0000431A
+_021DA5E8: .word 0x021DADA6
+_021DA5EC: .word 0x0000431C
+_021DA5F0: .word 0x0000432C
+ thumb_func_end MOD58_021DA514
+
+ thumb_func_start MOD58_021DA5F4
+MOD58_021DA5F4: ; 0x021DA5F4
+ push {r3, lr}
+ ldr r2, _021DA610 ; =0x021DADA0
+ cmp r1, #0
+ ldr r0, [r0]
+ bne _021DA608
+ ldrh r1, [r2, #4]
+ add r1, r1, #1
+ bl FUN_02020130
+ pop {r3, pc}
+_021DA608:
+ ldrh r1, [r2, #4]
+ bl FUN_02020130
+ pop {r3, pc}
+ .align 2, 0
+_021DA610: .word 0x021DADA0
+ thumb_func_end MOD58_021DA5F4
+
+ thumb_func_start MOD58_021DA614
+MOD58_021DA614: ; 0x021DA614
+ push {r3, lr}
+ cmp r1, #1
+ ldr r0, [r0]
+ bne _021DA624
+ mov r1, #1
+ bl FUN_02020130
+ pop {r3, pc}
+_021DA624:
+ mov r1, #0
+ bl FUN_02020130
+ pop {r3, pc}
+ thumb_func_end MOD58_021DA614
+
+ thumb_func_start MOD58_021DA62C
+MOD58_021DA62C: ; 0x021DA62C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD58_021DA514
+ mov r0, #0x9d
+ lsl r0, r0, #2
+ ldr r2, _021DA66C ; =0x000E0C0F
+ add r0, r5, r0
+ mov r1, #0
+ add r3, r5, #0
+ bl MOD58_021DAB74
+ add r0, r5, #0
+ bl MOD58_021DAB78
+ add r0, r5, #0
+ bl MOD58_021DAB30
+ ldr r2, _021DA670 ; =0x0000432D
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ add r1, r5, r2
+ add r2, #0x55
+ add r0, r5, r0
+ add r2, r5, r2
+ mov r3, #1
+ bl MOD58_021DAA70
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021DA66C: .word 0x000E0C0F
+_021DA670: .word 0x0000432D
+ thumb_func_end MOD58_021DA62C
+
+ thumb_func_start MOD58_021DA674
+MOD58_021DA674: ; 0x021DA674
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD58_021DA510
+ add r0, r4, #0
+ bl MOD58_021DAB30
+ ldr r2, _021DA698 ; =0x0000432D
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ add r1, r4, r2
+ add r2, #0x55
+ add r0, r4, r0
+ add r2, r4, r2
+ mov r3, #0
+ bl MOD58_021DAA70
+ pop {r4, pc}
+ .align 2, 0
+_021DA698: .word 0x0000432D
+ thumb_func_end MOD58_021DA674
+
+ thumb_func_start MOD58_021DA69C
+MOD58_021DA69C: ; 0x021DA69C
+ push {lr}
+ sub sp, #0x14
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r0, #0xb4
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ mov r2, #0x19
+ add r0, sp, #0
+ strb r2, [r0, #0x10]
+ mov r2, #6
+ strb r2, [r0, #0x11]
+ add r0, r1, #0
+ add r1, sp, #0
+ bl FUN_020145C8
+ add sp, #0x14
+ pop {pc}
+ thumb_func_end MOD58_021DA69C
+
+ thumb_func_start MOD58_021DA6C4
+MOD58_021DA6C4: ; 0x021DA6C4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x38]
+ add r4, r1, #0
+ bl MOD58_021DAC00
+ cmp r0, #0
+ beq _021DA6E6
+ ldr r1, _021DA6F0 ; =0x00005C9C
+ ldr r0, [r5]
+ ldr r1, [r5, r1]
+ bl MOD58_021DA69C
+ mov r0, #0xc3
+ mov r1, #3
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+_021DA6E6:
+ add r0, r5, #0
+ bl MOD58_021DA674
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DA6F0: .word 0x00005C9C
+ thumb_func_end MOD58_021DA6C4
+
+ thumb_func_start MOD58_021DA6F4
+MOD58_021DA6F4: ; 0x021DA6F4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _021DA784 ; =0x00005C9C
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0201466C
+ cmp r0, #1
+ beq _021DA70E
+ cmp r0, #2
+ beq _021DA748
+ b _021DA76E
+_021DA70E:
+ ldr r0, [r5, #8]
+ mov r1, #4
+ bl FUN_0202A170
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+ ldr r0, _021DA784 ; =0x00005C9C
+ ldr r0, [r5, r0]
+ bl FUN_020146C4
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x27
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ mov r0, #2
+ pop {r4, r5, pc}
+_021DA748:
+ mov r0, #0xc3
+ mov r1, #4
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ sub r0, #0xbc
+ add r0, r5, r0
+ mov r1, #0
+ bl MOD58_021DA614
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+ ldr r0, _021DA784 ; =0x00005C9C
+ ldr r0, [r5, r0]
+ bl FUN_020146C4
+_021DA76E:
+ ldr r1, _021DA788 ; =0x0000432C
+ mov r0, #0xf0
+ ldrb r2, [r5, r1]
+ bic r2, r0
+ add r0, r5, #0
+ strb r2, [r5, r1]
+ bl MOD58_021DA674
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_021DA784: .word 0x00005C9C
+_021DA788: .word 0x0000432C
+ thumb_func_end MOD58_021DA6F4
+
+ thumb_func_start MOD58_021DA78C
+MOD58_021DA78C: ; 0x021DA78C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021DA7F0 ; =0x00005C9C
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ bl FUN_0201466C
+ cmp r0, #1
+ beq _021DA7A4
+ cmp r0, #2
+ beq _021DA7D4
+ b _021DA7EC
+_021DA7A4:
+ mov r0, #0xc3
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ sub r0, #0x38
+ add r0, r5, r0
+ bl FUN_0200D0E0
+ ldr r0, _021DA7F0 ; =0x00005C9C
+ ldr r0, [r5, r0]
+ bl FUN_020146C4
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #2
+ bl FUN_02019620
+ mov r0, #0xb1
+ lsl r0, r0, #2
+ add r0, r5, r0
+ bl FUN_020191D0
+ b _021DA7EC
+_021DA7D4:
+ mov r0, #0xc3
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ sub r0, #0x38
+ add r0, r5, r0
+ bl FUN_0200D0E0
+ ldr r0, _021DA7F0 ; =0x00005C9C
+ ldr r0, [r5, r0]
+ bl FUN_020146C4
+_021DA7EC:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DA7F0: .word 0x00005C9C
+ thumb_func_end MOD58_021DA78C
+
+ thumb_func_start MOD58_021DA7F4
+MOD58_021DA7F4: ; 0x021DA7F4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ mov r1, #0xb
+ add r5, r0, #0
+ bl MOD58_021DAB94
+ mov r0, #0xc3
+ mov r1, #5
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD58_021DA674
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD58_021DA7F4
+
+ thumb_func_start MOD58_021DA814
+MOD58_021DA814: ; 0x021DA814
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x38]
+ add r4, r1, #0
+ bl MOD58_021DAC00
+ cmp r0, #0
+ beq _021DA836
+ mov r0, #0xc3
+ mov r1, #6
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ ldr r1, _021DA840 ; =0x00005C9C
+ ldr r0, [r5]
+ ldr r1, [r5, r1]
+ bl MOD58_021DA69C
+_021DA836:
+ add r0, r5, #0
+ bl MOD58_021DA674
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021DA840: .word 0x00005C9C
+ thumb_func_end MOD58_021DA814
+
+ thumb_func_start MOD58_021DA844
+MOD58_021DA844: ; 0x021DA844
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ ldr r4, [sp, #0x38]
+ mov ip, r1
+ add r6, r2, #0
+ add r7, r3, #0
+ str r0, [sp, #0x18]
+ ldr r3, [sp, #0x3c]
+ ldr r2, [sp, #0x40]
+ ldr r1, [sp, #0x44]
+ cmp r4, #0
+ bge _021DA870
+ neg r0, r4
+ cmp r0, r2
+ ble _021DA864
+ add r0, r2, #0
+_021DA864:
+ ldr r5, [sp, #0x30]
+ mov r4, #0
+ sub r5, r5, r0
+ add r6, r6, r0
+ str r5, [sp, #0x30]
+ sub r2, r2, r0
+_021DA870:
+ cmp r3, #0
+ bge _021DA888
+ neg r0, r3
+ cmp r0, r1
+ ble _021DA87C
+ add r0, r1, #0
+_021DA87C:
+ ldr r5, [sp, #0x34]
+ mov r3, #0
+ sub r5, r5, r0
+ add r7, r7, r0
+ str r5, [sp, #0x34]
+ sub r1, r1, r0
+_021DA888:
+ ldr r0, [sp, #0x30]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [sp, #0x34]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #8]
+ lsl r0, r3, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0xc]
+ lsl r0, r2, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x14]
+ lsl r2, r6, #0x10
+ lsl r3, r7, #0x10
+ ldr r0, [sp, #0x18]
+ mov r1, ip
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_02019658
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD58_021DA844
+
+ thumb_func_start MOD58_021DA8C4
+MOD58_021DA8C4: ; 0x021DA8C4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x50]
+ str r1, [sp, #0x1c]
+ str r0, [sp, #0x50]
+ ldr r0, [sp, #0x54]
+ str r2, [sp, #0x20]
+ str r0, [sp, #0x54]
+ ldr r0, [sp, #0x50]
+ str r3, [sp, #0x24]
+ ldr r4, [r0]
+ ldr r0, [sp, #0x54]
+ ldr r5, [r0]
+ add r0, r2, #0
+ str r0, [sp, #0x38]
+ add r0, r3, #0
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x58]
+ cmp r0, #0
+ bne _021DA904
+ ldr r0, [sp, #0x5c]
+ cmp r0, #0
+ bne _021DA904
+ ldr r0, [sp, #0x50]
+ add r1, r2, #0
+ str r1, [r0]
+ ldr r0, [sp, #0x54]
+ add r1, r3, #0
+ str r1, [r0]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+_021DA904:
+ ldr r0, [sp, #0x20]
+ sub r0, r0, r4
+ str r0, [sp, #0x34]
+ bpl _021DA910
+ neg r0, r0
+ str r0, [sp, #0x34]
+_021DA910:
+ ldr r0, [sp, #0x24]
+ sub r7, r0, r5
+ bpl _021DA918
+ neg r7, r7
+_021DA918:
+ ldr r0, [sp, #0x34]
+ cmp r0, r7
+ ble _021DA9A6
+ ldr r0, [sp, #0x20]
+ cmp r4, r0
+ ble _021DA93E
+ ldr r0, [sp, #0x24]
+ cmp r5, r0
+ ble _021DA930
+ mov r0, #1
+ str r0, [sp, #0x2c]
+ b _021DA936
+_021DA930:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x2c]
+_021DA936:
+ str r4, [sp, #0x38]
+ ldr r4, [sp, #0x20]
+ ldr r5, [sp, #0x24]
+ b _021DA950
+_021DA93E:
+ ldr r0, [sp, #0x24]
+ cmp r5, r0
+ bge _021DA94A
+ mov r0, #1
+ str r0, [sp, #0x2c]
+ b _021DA950
+_021DA94A:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x2c]
+_021DA950:
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r3, r2, #0
+ bl MOD58_021DA844
+ ldr r0, [sp, #0x34]
+ add r4, r4, #1
+ asr r6, r0, #1
+ ldr r0, [sp, #0x38]
+ cmp r4, r0
+ bgt _021DAA2A
+_021DA976:
+ sub r6, r6, r7
+ bpl _021DA982
+ ldr r0, [sp, #0x34]
+ add r6, r6, r0
+ ldr r0, [sp, #0x2c]
+ add r5, r5, r0
+_021DA982:
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r3, r2, #0
+ bl MOD58_021DA844
+ ldr r0, [sp, #0x38]
+ add r4, r4, #1
+ cmp r4, r0
+ ble _021DA976
+ b _021DAA2A
+_021DA9A6:
+ ldr r0, [sp, #0x24]
+ cmp r5, r0
+ ble _021DA9C6
+ ldr r0, [sp, #0x20]
+ cmp r4, r0
+ ble _021DA9B8
+ mov r0, #1
+ str r0, [sp, #0x28]
+ b _021DA9BE
+_021DA9B8:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x28]
+_021DA9BE:
+ str r5, [sp, #0x30]
+ ldr r5, [sp, #0x24]
+ ldr r4, [sp, #0x20]
+ b _021DA9D8
+_021DA9C6:
+ ldr r0, [sp, #0x20]
+ cmp r4, r0
+ bge _021DA9D2
+ mov r0, #1
+ str r0, [sp, #0x28]
+ b _021DA9D8
+_021DA9D2:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x28]
+_021DA9D8:
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r3, r2, #0
+ bl MOD58_021DA844
+ ldr r0, [sp, #0x30]
+ add r5, r5, #1
+ asr r6, r7, #1
+ cmp r5, r0
+ bgt _021DAA2A
+_021DA9FC:
+ ldr r0, [sp, #0x34]
+ sub r6, r6, r0
+ bpl _021DAA08
+ ldr r0, [sp, #0x28]
+ add r6, r6, r7
+ add r4, r4, r0
+_021DAA08:
+ mov r0, #4
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ str r5, [sp, #0xc]
+ str r0, [sp, #0x10]
+ str r0, [sp, #0x14]
+ mov r2, #0
+ ldr r0, [sp, #0x18]
+ ldr r1, [sp, #0x1c]
+ add r3, r2, #0
+ bl MOD58_021DA844
+ ldr r0, [sp, #0x30]
+ add r5, r5, #1
+ cmp r5, r0
+ ble _021DA9FC
+_021DAA2A:
+ ldr r1, [sp, #0x20]
+ ldr r0, [sp, #0x50]
+ str r1, [r0]
+ ldr r1, [sp, #0x24]
+ ldr r0, [sp, #0x54]
+ str r1, [r0]
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD58_021DA8C4
+
+ thumb_func_start MOD58_021DAA3C
+MOD58_021DAA3C: ; 0x021DAA3C
+ mov r2, #0
+_021DAA3E:
+ ldrb r3, [r0, #0x10]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x1c
+ strh r3, [r1, #2]
+ ldrb r3, [r0, #0x10]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x1c
+ beq _021DAA62
+ add r3, r0, r3
+ sub r3, r3, #1
+ ldrb r3, [r3]
+ strb r3, [r1]
+ ldrb r3, [r0, #0x10]
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x1c
+ add r3, r0, r3
+ ldrb r3, [r3, #7]
+ strb r3, [r1, #1]
+_021DAA62:
+ add r2, r2, #1
+ add r0, #0x11
+ add r1, r1, #4
+ cmp r2, #5
+ blt _021DAA3E
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD58_021DAA3C
+
+ thumb_func_start MOD58_021DAA70
+MOD58_021DAA70: ; 0x021DAA70
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r7, r0, #0
+ mov r0, #0
+ str r1, [sp, #0x10]
+ str r2, [sp, #0x14]
+ str r3, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ str r0, [sp, #0x20]
+ add r5, r1, #0
+ add r6, r2, #0
+_021DAA86:
+ ldrb r0, [r5, #0x10]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ beq _021DAAEA
+ ldrh r0, [r6, #2]
+ cmp r0, #0
+ beq _021DAAA0
+ ldrb r0, [r6]
+ sub r0, #0x20
+ str r0, [sp, #0x28]
+ ldrb r0, [r6, #1]
+ sub r0, #0x48
+ str r0, [sp, #0x24]
+_021DAAA0:
+ ldrb r0, [r5, #0x10]
+ mov r4, #0
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x1c
+ cmp r1, #0
+ ble _021DAAEA
+ mov r0, #1
+ str r0, [sp, #0x1c]
+ cmp r1, #0
+ ble _021DAAEA
+_021DAAB4:
+ add r0, sp, #0x28
+ str r0, [sp]
+ add r0, sp, #0x24
+ str r0, [sp, #4]
+ str r4, [sp, #8]
+ ldrh r0, [r6, #2]
+ add r3, r5, r4
+ str r0, [sp, #0xc]
+ ldrb r1, [r5, #0x10]
+ ldrb r3, [r3, #8]
+ add r0, r7, #0
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ lsl r2, r1, #4
+ ldr r1, _021DAB2C ; =0x021DAE94
+ sub r3, #0x48
+ add r1, r1, r2
+ ldrb r2, [r5, r4]
+ sub r2, #0x20
+ bl MOD58_021DA8C4
+ ldrb r0, [r5, #0x10]
+ add r4, r4, #1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1c
+ cmp r4, r0
+ blt _021DAAB4
+_021DAAEA:
+ ldr r0, [sp, #0x20]
+ add r5, #0x11
+ add r0, r0, #1
+ add r6, r6, #4
+ str r0, [sp, #0x20]
+ cmp r0, #5
+ blt _021DAA86
+ ldr r0, [sp, #0x1c]
+ cmp r0, #0
+ beq _021DAB0A
+ ldr r0, [sp, #0x18]
+ cmp r0, #0
+ beq _021DAB0A
+ add r0, r7, #0
+ bl FUN_020191D0
+_021DAB0A:
+ ldr r0, [sp, #0x10]
+ ldr r1, [sp, #0x14]
+ bl MOD58_021DAA3C
+ mov r3, #0
+ mov r1, #0xf0
+_021DAB16:
+ ldr r0, [sp, #0x10]
+ add r3, r3, #1
+ ldrb r2, [r0, #0x10]
+ bic r2, r1
+ strb r2, [r0, #0x10]
+ add r0, #0x11
+ str r0, [sp, #0x10]
+ cmp r3, #5
+ blt _021DAB16
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DAB2C: .word 0x021DAE94
+ thumb_func_end MOD58_021DAA70
+
+ thumb_func_start MOD58_021DAB30
+MOD58_021DAB30: ; 0x021DAB30
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD58_021DAB30
+
+ thumb_func_start MOD58_021DAB34
+MOD58_021DAB34: ; 0x021DAB34
+ push {r3, lr}
+ ldrh r1, [r0]
+ add r1, #0x14
+ strh r1, [r0]
+ ldrh r2, [r0]
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ cmp r2, r1
+ bls _021DAB4A
+ mov r1, #0
+ strh r1, [r0]
+_021DAB4A:
+ ldrh r0, [r0]
+ bl FUN_0201B970
+ mov r1, #0xa
+ mul r1, r0
+ asr r0, r1, #0xb
+ lsr r0, r0, #0x14
+ add r0, r1, r0
+ asr r0, r0, #0xc
+ add r0, #0xf
+ lsl r1, r0, #5
+ mov r0, #0x1d
+ orr r1, r0
+ add r0, sp, #0
+ strh r1, [r0]
+ add r0, sp, #0
+ mov r1, #0x18
+ mov r2, #2
+ bl GX_LoadOBJPltt
+ pop {r3, pc}
+ thumb_func_end MOD58_021DAB34
+
+ thumb_func_start MOD58_021DAB74
+MOD58_021DAB74: ; 0x021DAB74
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD58_021DAB74
+
+ thumb_func_start MOD58_021DAB78
+MOD58_021DAB78: ; 0x021DAB78
+ ldr r1, _021DAB90 ; =0x0000431C
+ add r3, r0, r1
+ add r1, #0x11
+ add r2, r0, r1
+ mov r1, #0x11
+_021DAB82:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DAB82
+ bx lr
+ .align 2, 0
+_021DAB90: .word 0x0000431C
+ thumb_func_end MOD58_021DAB78
+
+ thumb_func_start MOD58_021DAB94
+MOD58_021DAB94: ; 0x021DAB94
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #0x50
+ mov r1, #0x27
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, [r5, #0x14]
+ add r1, r6, #0
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ ldr r0, [r5, #0x10]
+ ldr r1, [r5, #0x34]
+ add r2, r4, #0
+ bl FUN_0200B7B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ add r0, r5, r0
+ mov r1, #0
+ mov r2, #1
+ mov r3, #0xa
+ bl FUN_0200D0BC
+ ldr r0, [r5, #0xc]
+ bl FUN_02024FF4
+ mov r3, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0xb5
+ lsl r0, r0, #2
+ ldr r2, [r5, #0x34]
+ add r0, r5, r0
+ mov r1, #1
+ bl FUN_0201BD84
+ str r0, [r5, #0x38]
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD58_021DAB94
+
+ thumb_func_start MOD58_021DAC00
+MOD58_021DAC00: ; 0x021DAC00
+ push {r3, lr}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021DAC12
+ mov r0, #1
+ pop {r3, pc}
+_021DAC12:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD58_021DAC00
+
+ thumb_func_start MOD58_021DAC18
+MOD58_021DAC18: ; 0x021DAC18
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0
+ add r5, r0, #0
+ str r1, [sp]
+ add r4, r7, #0
+ strb r7, [r5]
+ add r6, r7, #0
+_021DAC26:
+ ldr r0, [sp]
+ ldrb r1, [r0, r6]
+ mov r0, #0xf
+ and r0, r1
+ cmp r0, #1
+ bne _021DAC3C
+ mov r0, #1
+ ldrb r1, [r5]
+ lsl r0, r4
+ orr r0, r1
+ strb r0, [r5]
+_021DAC3C:
+ ldr r0, [sp]
+ ldrb r0, [r0, r6]
+ asr r0, r0, #4
+ cmp r0, #1
+ bne _021DAC52
+ ldrb r0, [r5]
+ add r2, r4, #1
+ mov r1, #1
+ lsl r1, r2
+ orr r0, r1
+ strb r0, [r5]
+_021DAC52:
+ add r4, r4, #2
+ cmp r4, #8
+ bne _021DAC62
+ mov r0, #0
+ add r5, r5, #1
+ add r7, r7, #1
+ strb r0, [r5]
+ add r4, r0, #0
+_021DAC62:
+ mov r0, #6
+ lsl r0, r0, #0xa
+ cmp r7, r0
+ blt _021DAC6E
+ bl ErrorHandling
+_021DAC6E:
+ mov r0, #6
+ add r6, r6, #1
+ lsl r0, r0, #0xa
+ cmp r6, r0
+ blt _021DAC26
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD58_021DAC18
+
+ thumb_func_start MOD58_021DAC7C
+MOD58_021DAC7C: ; 0x021DAC7C
+ push {r3, r4, r5, lr}
+ ldr r1, _021DAD28 ; =0x021C48F8
+ add r4, r0, #0
+ ldrh r0, [r1, #0x1c]
+ ldr r3, _021DAD2C ; =0x0000FFFF
+ cmp r0, r3
+ beq _021DAD16
+ ldrh r1, [r1, #0x1e]
+ cmp r1, r3
+ beq _021DAD16
+ ldr r2, _021DAD30 ; =0x00005CA8
+ ldr r5, [r4, r2]
+ cmp r5, r3
+ beq _021DAD16
+ add r1, r2, #4
+ ldr r1, [r4, r1]
+ cmp r1, r3
+ beq _021DAD16
+ cmp r5, r0
+ ble _021DACAC
+ mov r1, #0
+ sub r3, r5, r0
+ mvn r1, r1
+ b _021DACB0
+_021DACAC:
+ sub r3, r0, r5
+ mov r1, #1
+_021DACB0:
+ sub r0, r2, #6
+ strb r1, [r4, r0]
+ cmp r3, #3
+ blt _021DACE6
+ cmp r3, #0x28
+ bgt _021DACE6
+ ldr r0, _021DAD28 ; =0x021C48F8
+ ldrh r2, [r0, #0x1e]
+ ldr r0, _021DAD34 ; =0x00005CAC
+ ldr r1, [r4, r0]
+ cmp r1, r2
+ ble _021DACD0
+ sub r2, r1, r2
+ mov r1, #0
+ mvn r1, r1
+ b _021DACD4
+_021DACD0:
+ sub r2, r2, r1
+ mov r1, #1
+_021DACD4:
+ sub r0, #9
+ strb r1, [r4, r0]
+ cmp r2, #0x28
+ bgt _021DAD16
+ ldr r0, _021DAD38 ; =0x00005CA0
+ add r0, r4, r0
+ bl MOD58_021DAD3C
+ b _021DAD16
+_021DACE6:
+ cmp r3, #0x28
+ bgt _021DAD16
+ ldr r0, _021DAD28 ; =0x021C48F8
+ ldrh r2, [r0, #0x1e]
+ ldr r0, _021DAD34 ; =0x00005CAC
+ ldr r1, [r4, r0]
+ cmp r1, r2
+ ble _021DACFE
+ sub r2, r1, r2
+ mov r1, #0
+ mvn r1, r1
+ b _021DAD02
+_021DACFE:
+ sub r2, r2, r1
+ mov r1, #1
+_021DAD02:
+ sub r0, #9
+ strb r1, [r4, r0]
+ cmp r2, #3
+ blt _021DAD16
+ cmp r2, #0x28
+ bgt _021DAD16
+ ldr r0, _021DAD38 ; =0x00005CA0
+ add r0, r4, r0
+ bl MOD58_021DAD3C
+_021DAD16:
+ ldr r1, _021DAD28 ; =0x021C48F8
+ ldr r0, _021DAD30 ; =0x00005CA8
+ ldrh r2, [r1, #0x1c]
+ str r2, [r4, r0]
+ ldrh r1, [r1, #0x1e]
+ add r0, r0, #4
+ str r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+ nop
+_021DAD28: .word 0x021C48F8
+_021DAD2C: .word 0x0000FFFF
+_021DAD30: .word 0x00005CA8
+_021DAD34: .word 0x00005CAC
+_021DAD38: .word 0x00005CA0
+ thumb_func_end MOD58_021DAC7C
+
+ thumb_func_start MOD58_021DAD3C
+MOD58_021DAD3C: ; 0x021DAD3C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bne _021DAD60
+ mov r0, #1
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bne _021DAD60
+ ldr r0, _021DAD9C ; =0x0000069A
+ bl FUN_02005508
+ cmp r0, #0
+ bne _021DAD60
+ ldr r0, _021DAD9C ; =0x0000069A
+ bl FUN_020054C8
+_021DAD60:
+ mov r0, #0
+ ldrsb r1, [r4, r0]
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ mul r0, r1
+ bmi _021DAD78
+ mov r0, #1
+ ldrsb r1, [r4, r0]
+ mov r0, #3
+ ldrsb r0, [r4, r0]
+ mul r0, r1
+ bpl _021DAD88
+_021DAD78:
+ ldr r0, _021DAD9C ; =0x0000069A
+ bl FUN_02005508
+ cmp r0, #0
+ bne _021DAD88
+ ldr r0, _021DAD9C ; =0x0000069A
+ bl FUN_020054C8
+_021DAD88:
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ strb r0, [r4]
+ mov r0, #3
+ ldrsb r0, [r4, r0]
+ strb r0, [r4, #1]
+ mov r0, #0
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ pop {r4, pc}
+ .align 2, 0
+_021DAD9C: .word 0x0000069A
+ thumb_func_end MOD58_021DAD3C
+
+ .section .rodata
+ ; 0x021DADA0
+ .incbin "baserom.nds", 0x2A9B80, 0x1F4
+
+ .section .data
+ ; 0x021DAFA0
+ .incbin "baserom.nds", 0x2A9D80, 0x20
+
diff --git a/arm9/modules/59/asm/module_59.s b/arm9/modules/59/asm/module_59.s
new file mode 100644
index 00000000..0809afd7
--- /dev/null
+++ b/arm9/modules/59/asm/module_59.s
@@ -0,0 +1,5042 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD59_021D74E0
+MOD59_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ mov r2, #1
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0x52
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ add r0, r5, #0
+ mov r1, #0xb4
+ mov r2, #0x52
+ bl FUN_02006268
+ mov r1, #0
+ mov r2, #0xb4
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x52
+ str r0, [r4]
+ add r0, r5, #0
+ bl FUN_0200628C
+ ldr r0, [r0, #8]
+ str r0, [r4, #4]
+ bl LoadPlayerDataAddress
+ mov r1, #0
+ str r0, [r4, #8]
+ str r1, [r4, #0xc]
+ str r1, [r4, #0x10]
+ str r1, [r4, #0x14]
+ ldr r0, [r4, #8]
+ add r2, r1, #0
+ str r0, [sp]
+ mov r0, #0x52
+ mov r3, #7
+ bl FUN_02077A84
+ str r0, [r4, #0x70]
+ ldr r0, [r4, #8]
+ mov r1, #3
+ str r0, [sp]
+ mov r0, #0x52
+ mov r2, #0
+ mov r3, #7
+ bl FUN_02077A84
+ str r0, [r4, #0x74]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x88
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x89
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x8a
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x8b
+ strb r1, [r0]
+ add r4, #0x90
+ str r1, [r4]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD59_021D74E0
+
+ thumb_func_start MOD59_021D7564
+MOD59_021D7564: ; 0x021D7564
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ bl FUN_02006278
+ ldr r1, [r5]
+ add r4, r0, #0
+ mov r6, #0
+ cmp r1, #5
+ bls _021D757A
+ b _021D76AC
+_021D757A:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7586: ; jump table
+ .short _021D7592 - _021D7586 - 2 ; case 0
+ .short _021D75FA - _021D7586 - 2 ; case 1
+ .short _021D7642 - _021D7586 - 2 ; case 2
+ .short _021D7668 - _021D7586 - 2 ; case 3
+ .short _021D7690 - _021D7586 - 2 ; case 4
+ .short _021D76AA - _021D7586 - 2 ; case 5
+_021D7592:
+ add r0, r6, #0
+ add r1, r6, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ add r1, r6, #0
+ bl FUN_0200E3A0
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D76B4 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D76B8 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ add r0, r4, #0
+ bl MOD59_021D778C
+ add r0, r4, #0
+ bl MOD59_021D79F8
+ add r0, r4, #0
+ bl MOD59_021D7A4C
+ ldr r0, _021D76BC ; =MOD59_021D7724
+ add r1, r4, #0
+ bl FUN_02015F10
+ bl FUN_0201E788
+ mov r0, #1
+ str r0, [r5]
+ b _021D76AC
+_021D75FA:
+ bl MOD59_021D8920
+ cmp r0, #1
+ bne _021D761E
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #2
+ str r0, [r5]
+_021D761E:
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021D76AC
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #3
+ str r0, [r5]
+ b _021D76AC
+_021D7642:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D76AC
+ add r0, r4, #0
+ bl MOD59_021D7A34
+ add r0, r4, #0
+ bl MOD59_021D796C
+ add r0, r4, #0
+ bl MOD59_021D7A5C
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r6, #1
+ b _021D76AC
+_021D7668:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D76AC
+ add r0, r4, #0
+ bl MOD59_021D7A34
+ add r0, r4, #0
+ bl MOD59_021D796C
+ add r0, r4, #0
+ bl MOD59_021D7A5C
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #4
+ str r0, [r5]
+ b _021D76AC
+_021D7690:
+ ldr r0, [r4, #0x14]
+ bl FUN_02006290
+ cmp r0, #1
+ bne _021D76AC
+ ldr r0, [r4, #0x14]
+ bl FUN_02006260
+ add r0, r6, #0
+ str r0, [r4, #0x14]
+ mov r0, #5
+ str r0, [r5]
+ b _021D76AC
+_021D76AA:
+ str r6, [r5]
+_021D76AC:
+ add r0, r6, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D76B4: .word 0xFFFFE0FF
+_021D76B8: .word 0x04001000
+_021D76BC: .word MOD59_021D7724
+ thumb_func_end MOD59_021D7564
+
+ thumb_func_start MOD59_021D76C0
+MOD59_021D76C0: ; 0x021D76C0
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r5, [r4]
+ bl FUN_020238F4
+ ldr r1, [r4, #0x70]
+ ldr r1, [r1, #0x18]
+ bl FUN_0202397C
+ ldr r0, [r4, #4]
+ bl FUN_020238F4
+ ldr r1, [r4, #0x70]
+ ldr r1, [r1, #4]
+ bl FUN_020239C8
+ ldr r0, [r4, #4]
+ bl FUN_02024EB4
+ ldr r1, [r4, #0x74]
+ ldr r1, [r1, #0x18]
+ bl FUN_02024EF4
+ ldr r0, [r4, #0x70]
+ bl FUN_02077AC4
+ ldr r0, [r4, #0x74]
+ bl FUN_02077AC4
+ add r0, r6, #0
+ bl FUN_0200627C
+ add r0, r5, #0
+ bl FUN_020168D0
+ ldr r0, _021D771C ; =0x00000034
+ ldr r1, _021D7720 ; =0x021D76D8
+ bl FUN_02000E7C
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ nop
+_021D771C: .word 0x00000034
+_021D7720: .word 0x021D76D8
+ thumb_func_end MOD59_021D76C0
+
+ thumb_func_start MOD59_021D7724
+MOD59_021D7724: ; 0x021D7724
+ ldr r3, _021D772C ; =0x0201AB61
+ ldr r0, [r0, #0x18]
+ bx r3
+ nop
+_021D772C: .word 0x0201AB61
+ thumb_func_end MOD59_021D7724
+
+ thumb_func_start MOD59_021D7730
+MOD59_021D7730: ; 0x021D7730
+ push {r3, r4}
+ ldr r2, _021D7788 ; =0x021C48F8
+ mov r0, #0
+ ldrh r1, [r2, #0x20]
+ cmp r1, #0
+ beq _021D7784
+ ldrh r3, [r2, #0x1c]
+ mov r1, #1
+ lsl r1, r1, #8
+ cmp r3, r1
+ bhs _021D7784
+ ldrh r2, [r2, #0x1e]
+ cmp r2, #0xc0
+ bhs _021D7784
+ cmp r3, #0x80
+ bhs _021D7758
+ mov r1, #0x80
+ sub r1, r1, r3
+ lsl r1, r1, #0x10
+ b _021D775C
+_021D7758:
+ sub r3, #0x80
+ lsl r1, r3, #0x10
+_021D775C:
+ lsr r3, r1, #0x10
+ cmp r2, #0x64
+ bhs _021D776A
+ mov r1, #0x64
+ sub r1, r1, r2
+ lsl r1, r1, #0x10
+ b _021D776E
+_021D776A:
+ sub r2, #0x64
+ lsl r1, r2, #0x10
+_021D776E:
+ lsr r4, r1, #0x10
+ add r2, r3, #0
+ add r1, r4, #0
+ mul r2, r3
+ mul r1, r4
+ add r2, r2, r1
+ mov r1, #1
+ lsl r1, r1, #8
+ cmp r2, r1
+ bgt _021D7784
+ mov r0, #1
+_021D7784:
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+_021D7788: .word 0x021C48F8
+ thumb_func_end MOD59_021D7730
+
+ thumb_func_start MOD59_021D778C
+MOD59_021D778C: ; 0x021D778C
+ push {r3, r4, r5, lr}
+ sub sp, #0x78
+ ldr r5, _021D7954 ; =0x021D9F18
+ add r4, r0, #0
+ add r3, sp, #0x50
+ mov r2, #5
+_021D7798:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7798
+ add r0, sp, #0x50
+ bl FUN_0201E66C
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0x40
+ ldr r5, _021D7958 ; =0x021D9DCC
+ str r0, [r4, #0x18]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D795C ; =0x021D9EA0
+ add r3, sp, #0x24
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ mov r0, #0xf
+ strb r0, [r2, #0x12]
+ mov r0, #6
+ strb r0, [r2, #0x13]
+ ldr r0, [r4, #0x18]
+ add r3, r1, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_02018744
+ mov r0, #0xe
+ add r2, sp, #0x24
+ strb r0, [r2, #0x12]
+ mov r0, #5
+ strb r0, [r2, #0x13]
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_02018744
+ mov r0, #0xd
+ add r2, sp, #0x24
+ strb r0, [r2, #0x12]
+ mov r0, #4
+ strb r0, [r2, #0x13]
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02018744
+ mov r0, #0xc
+ add r2, sp, #0x24
+ strb r0, [r2, #0x12]
+ mov r1, #3
+ strb r1, [r2, #0x13]
+ ldr r0, [r4, #0x18]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ bl FUN_02018744
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4]
+ ldr r2, _021D7960 ; =0x000003E2
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x18]
+ mov r3, #4
+ bl FUN_0200CD68
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4]
+ ldr r2, _021D7964 ; =0x000003D9
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x18]
+ mov r3, #3
+ bl FUN_0200CB00
+ ldr r2, [r4]
+ mov r0, #0
+ mov r1, #0xa0
+ bl FUN_02002ED0
+ ldr r2, [r4]
+ mov r0, #0
+ mov r1, #0xc0
+ bl FUN_02002EEC
+ ldr r5, _021D7968 ; =0x021D9EBC
+ add r3, sp, #8
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0xf
+ str r0, [r3]
+ add r0, sp, #8
+ strb r1, [r0, #0x12]
+ mov r1, #6
+ strb r1, [r0, #0x13]
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ bl FUN_02018744
+ mov r1, #0xe
+ add r0, sp, #8
+ strb r1, [r0, #0x12]
+ mov r1, #5
+ strb r1, [r0, #0x13]
+ ldr r0, [r4, #0x18]
+ add r2, sp, #8
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #5
+ bl FUN_02018744
+ mov r1, #0xd
+ add r0, sp, #8
+ strb r1, [r0, #0x12]
+ mov r1, #4
+ strb r1, [r0, #0x13]
+ ldr r0, [r4, #0x18]
+ mov r1, #6
+ add r2, sp, #8
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #6
+ bl FUN_02018744
+ mov r1, #0xc
+ add r0, sp, #8
+ strb r1, [r0, #0x12]
+ mov r1, #3
+ strb r1, [r0, #0x13]
+ ldr r0, [r4, #0x18]
+ mov r1, #7
+ add r2, sp, #8
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #7
+ bl FUN_02018744
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0201797C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #3
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #5
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #6
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #0
+ bl FUN_0201797C
+ add r0, r4, #0
+ bl MOD59_021D8058
+ mov r0, #0
+ str r0, [r4, #0x78]
+ add sp, #0x78
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7954: .word 0x021D9F18
+_021D7958: .word 0x021D9DCC
+_021D795C: .word 0x021D9EA0
+_021D7960: .word 0x000003E2
+_021D7964: .word 0x000003D9
+_021D7968: .word 0x021D9EBC
+ thumb_func_end MOD59_021D778C
+
+ thumb_func_start MOD59_021D796C
+MOD59_021D796C: ; 0x021D796C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0201797C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #3
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #5
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #6
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #0
+ bl FUN_0201797C
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #5
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #6
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #7
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD59_021D796C
+
+ thumb_func_start MOD59_021D79F8
+MOD59_021D79F8: ; 0x021D79F8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, _021D7A30 ; =0x00000155
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [r4, #0x4c]
+ bl FUN_0201BD5C
+ mov r0, #0
+ ldr r3, [r4]
+ add r1, r0, #0
+ mov r2, #6
+ bl FUN_020142EC
+ str r0, [r4, #0x60]
+ ldr r0, [r4]
+ bl FUN_0200AA80
+ str r0, [r4, #0x64]
+ mov r0, #0
+ str r0, [r4, #0x50]
+ str r0, [r4, #0x54]
+ str r0, [r4, #0x2c]
+ pop {r4, pc}
+ nop
+_021D7A30: .word 0x00000155
+ thumb_func_end MOD59_021D79F8
+
+ thumb_func_start MOD59_021D7A34
+MOD59_021D7A34: ; 0x021D7A34
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x64]
+ bl FUN_0200AB18
+ ldr r0, [r4, #0x60]
+ bl FUN_020143D0
+ ldr r0, [r4, #0x4c]
+ bl FUN_0200A8B8
+ pop {r4, pc}
+ thumb_func_end MOD59_021D7A34
+
+ thumb_func_start MOD59_021D7A4C
+MOD59_021D7A4C: ; 0x021D7A4C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02014590
+ str r0, [r4, #0x68]
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D7A4C
+
+ thumb_func_start MOD59_021D7A5C
+MOD59_021D7A5C: ; 0x021D7A5C
+ ldr r3, _021D7A64 ; =0x020145A9
+ ldr r0, [r0, #0x68]
+ bx r3
+ nop
+_021D7A64: .word 0x020145A9
+ thumb_func_end MOD59_021D7A5C
+
+ thumb_func_start MOD59_021D7A68
+MOD59_021D7A68: ; 0x021D7A68
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ add r3, r0, #0
+ add r6, r2, #0
+ mov r5, #0
+ cmp r4, #6
+ bhi _021D7A92
+ add r0, r4, r4
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7A84: ; jump table
+ .short _021D7A92 - _021D7A84 - 2 ; case 0
+ .short _021D7A98 - _021D7A84 - 2 ; case 1
+ .short _021D7A9E - _021D7A84 - 2 ; case 2
+ .short _021D7A92 - _021D7A84 - 2 ; case 3
+ .short _021D7AA4 - _021D7A84 - 2 ; case 4
+ .short _021D7AAA - _021D7A84 - 2 ; case 5
+ .short _021D7AB0 - _021D7A84 - 2 ; case 6
+_021D7A92:
+ mov r1, #1
+ mov r0, #0
+ b _021D7AB4
+_021D7A98:
+ mov r1, #2
+ add r0, r5, #0
+ b _021D7AB4
+_021D7A9E:
+ mov r1, #4
+ add r0, r5, #0
+ b _021D7AB4
+_021D7AA4:
+ mov r1, #1
+ add r0, r1, #0
+ b _021D7AB4
+_021D7AAA:
+ mov r1, #2
+ mov r0, #1
+ b _021D7AB4
+_021D7AB0:
+ mov r1, #4
+ mov r0, #1
+_021D7AB4:
+ ldr r2, [r3, #0x78]
+ cmp r2, #3
+ bls _021D7ABC
+ b _021D7BDE
+_021D7ABC:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021D7AC8: ; jump table
+ .short _021D7AD0 - _021D7AC8 - 2 ; case 0
+ .short _021D7B2C - _021D7AC8 - 2 ; case 1
+ .short _021D7B7C - _021D7AC8 - 2 ; case 2
+ .short _021D7BD0 - _021D7AC8 - 2 ; case 3
+_021D7AD0:
+ cmp r6, #0
+ bne _021D7B1A
+ mov r2, #0
+ str r2, [r3, #0x7c]
+ add r2, r3, #0
+ mov r6, #0x10
+ add r2, #0x80
+ str r6, [r2]
+ mov r2, #1
+ str r2, [r3, #0x78]
+ cmp r0, #0
+ bne _021D7AFC
+ add r0, r3, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r2, #0xe
+ str r0, [sp]
+ ldr r0, _021D7BE4 ; =0x04000050
+ ldr r3, [r3, #0x7c]
+ bl G2x_SetBlendAlpha_
+ b _021D7B0E
+_021D7AFC:
+ add r0, r3, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r2, #0xe
+ str r0, [sp]
+ ldr r0, _021D7BE8 ; =0x04001050
+ ldr r3, [r3, #0x7c]
+ bl G2x_SetBlendAlpha_
+_021D7B0E:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #1
+ bl FUN_0201797C
+ b _021D7BDE
+_021D7B1A:
+ mov r0, #0x10
+ str r0, [r3, #0x7c]
+ add r0, r3, #0
+ mov r1, #0
+ add r0, #0x80
+ str r1, [r0]
+ mov r0, #2
+ str r0, [r3, #0x78]
+ b _021D7BDE
+_021D7B2C:
+ add r2, r3, #0
+ add r2, #0x80
+ ldr r2, [r2]
+ cmp r2, #0
+ beq _021D7B76
+ ldr r2, [r3, #0x7c]
+ add r2, r2, #1
+ str r2, [r3, #0x7c]
+ add r2, r3, #0
+ add r2, #0x80
+ ldr r2, [r2]
+ sub r4, r2, #1
+ add r2, r3, #0
+ add r2, #0x80
+ str r4, [r2]
+ cmp r0, #0
+ bne _021D7B62
+ add r0, r3, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r2, #0xe
+ str r0, [sp]
+ ldr r0, _021D7BE4 ; =0x04000050
+ ldr r3, [r3, #0x7c]
+ bl G2x_SetBlendAlpha_
+ b _021D7BDE
+_021D7B62:
+ add r0, r3, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r2, #0xe
+ str r0, [sp]
+ ldr r0, _021D7BE8 ; =0x04001050
+ ldr r3, [r3, #0x7c]
+ bl G2x_SetBlendAlpha_
+ b _021D7BDE
+_021D7B76:
+ mov r0, #3
+ str r0, [r3, #0x78]
+ b _021D7BDE
+_021D7B7C:
+ ldr r2, [r3, #0x7c]
+ cmp r2, #0
+ beq _021D7BC0
+ sub r2, r2, #1
+ str r2, [r3, #0x7c]
+ add r2, r3, #0
+ add r2, #0x80
+ ldr r2, [r2]
+ add r4, r2, #1
+ add r2, r3, #0
+ add r2, #0x80
+ str r4, [r2]
+ cmp r0, #0
+ bne _021D7BAC
+ add r0, r3, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r2, #0xe
+ str r0, [sp]
+ ldr r0, _021D7BE4 ; =0x04000050
+ ldr r3, [r3, #0x7c]
+ bl G2x_SetBlendAlpha_
+ b _021D7BDE
+_021D7BAC:
+ add r0, r3, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ mov r2, #0xe
+ str r0, [sp]
+ ldr r0, _021D7BE8 ; =0x04001050
+ ldr r3, [r3, #0x7c]
+ bl G2x_SetBlendAlpha_
+ b _021D7BDE
+_021D7BC0:
+ mov r0, #3
+ str r0, [r3, #0x78]
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0
+ bl FUN_0201797C
+ b _021D7BDE
+_021D7BD0:
+ ldr r0, _021D7BE4 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r0, _021D7BE8 ; =0x04001050
+ mov r5, #1
+ strh r1, [r0]
+ str r1, [r3, #0x78]
+_021D7BDE:
+ add r0, r5, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D7BE4: .word 0x04000050
+_021D7BE8: .word 0x04001050
+ thumb_func_end MOD59_021D7A68
+
+ thumb_func_start MOD59_021D7BEC
+MOD59_021D7BEC: ; 0x021D7BEC
+ add r2, r0, #0
+ add r2, #0x90
+ ldr r2, [r2]
+ cmp r2, r1
+ bge _021D7C06
+ add r1, r0, #0
+ add r1, #0x90
+ ldr r1, [r1]
+ add r0, #0x90
+ add r1, r1, #1
+ str r1, [r0]
+ mov r0, #0
+ bx lr
+_021D7C06:
+ mov r1, #0
+ add r0, #0x90
+ str r1, [r0]
+ mov r0, #1
+ bx lr
+ thumb_func_end MOD59_021D7BEC
+
+ thumb_func_start MOD59_021D7C10
+MOD59_021D7C10: ; 0x021D7C10
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x18
+ str r0, [sp, #4]
+ lsl r0, r2, #0x18
+ add r4, r1, #0
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ lsl r1, r4, #0x18
+ mov r2, #0
+ ldr r0, [r5, #0x18]
+ lsr r1, r1, #0x18
+ add r3, r2, #0
+ bl FUN_020186B4
+ lsl r1, r4, #0x18
+ ldr r0, [r5, #0x18]
+ lsr r1, r1, #0x18
+ bl FUN_02017CD0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D7C10
+
+ thumb_func_start MOD59_021D7C44
+MOD59_021D7C44: ; 0x021D7C44
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, [r5, #0x50]
+ add r7, r1, #0
+ mov r4, #0
+ cmp r0, #0
+ beq _021D7C5E
+ cmp r0, #1
+ beq _021D7D1C
+ cmp r0, #2
+ beq _021D7D36
+ b _021D7D54
+_021D7C5E:
+ add r1, r5, #0
+ ldr r0, [r5, #0x18]
+ ldr r2, _021D7D5C ; =0x021D9DB8
+ add r1, #0x1c
+ bl FUN_02019150
+ mov r0, #0xd8
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r2, r4, #0
+ add r0, #0x1c
+ mov r1, #0xf
+ add r3, r2, #0
+ bl FUN_020196F4
+ add r0, r5, #0
+ ldr r2, _021D7D60 ; =0x000003E2
+ add r0, #0x1c
+ add r1, r4, #0
+ mov r3, #4
+ bl FUN_0200D0BC
+ mov r0, #1
+ bl FUN_02002B60
+ add r0, r4, #0
+ bl FUN_02002B7C
+ mov r0, #1
+ ldr r1, [r5]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ add r6, r0, #0
+ mov r0, #1
+ ldr r1, [r5]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ str r0, [r5, #0x5c]
+ ldr r0, [r5, #0x4c]
+ add r1, r7, #0
+ add r2, r6, #0
+ bl FUN_0200A8E0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r2, [r5, #0x70]
+ add r3, r5, #0
+ add r3, #0x84
+ ldr r0, [r5, #0x64]
+ ldr r2, [r2, #0x18]
+ ldr r3, [r3]
+ add r1, r4, #0
+ bl FUN_0200ABB4
+ mov r1, #1
+ str r1, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r2, [r5, #0x74]
+ ldr r0, [r5, #0x64]
+ ldr r2, [r2, #0x18]
+ add r3, r4, #0
+ bl FUN_0200ABB4
+ ldr r0, [r5, #0x64]
+ ldr r1, [r5, #0x5c]
+ add r2, r6, #0
+ bl FUN_0200B7B8
+ add r0, r6, #0
+ bl FUN_02021A20
+ ldr r0, [r5, #8]
+ bl FUN_02024FF4
+ add r3, r4, #0
+ str r3, [sp]
+ str r0, [sp, #4]
+ str r3, [sp, #8]
+ add r0, r5, #0
+ ldr r2, [r5, #0x5c]
+ add r0, #0x1c
+ mov r1, #1
+ bl FUN_0201BD84
+ str r0, [r5, #0x58]
+ mov r0, #1
+ str r0, [r5, #0x50]
+ b _021D7D54
+_021D7D1C:
+ ldr r0, [r5, #0x58]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D7D54
+ ldr r0, [r5, #0x5c]
+ bl FUN_02021A20
+ mov r0, #2
+ str r0, [r5, #0x50]
+ b _021D7D54
+_021D7D36:
+ cmp r2, #0
+ bne _021D7D46
+ ldr r0, _021D7D64 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ and r0, r1
+ cmp r0, #1
+ bne _021D7D54
+_021D7D46:
+ add r0, r5, #0
+ add r0, #0x1c
+ bl FUN_02019178
+ mov r0, #0
+ str r0, [r5, #0x50]
+ mov r4, #1
+_021D7D54:
+ add r0, r4, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D7D5C: .word 0x021D9DB8
+_021D7D60: .word 0x000003E2
+_021D7D64: .word 0x021C48B8
+ thumb_func_end MOD59_021D7C44
+
+ thumb_func_start MOD59_021D7D68
+MOD59_021D7D68: ; 0x021D7D68
+ push {r3, lr}
+ cmp r2, #0
+ bne _021D7D74
+ ldr r0, _021D7D78 ; =0x000005DC
+ bl FUN_020054C8
+_021D7D74:
+ pop {r3, pc}
+ nop
+_021D7D78: .word 0x000005DC
+ thumb_func_end MOD59_021D7D68
+
+ thumb_func_start MOD59_021D7D7C
+MOD59_021D7D7C: ; 0x021D7D7C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r5, #0x2c]
+ add r4, r2, #0
+ cmp r0, #0
+ beq _021D7D94
+ cmp r0, #1
+ beq _021D7E4C
+ b _021D7E96
+_021D7D94:
+ cmp r1, #0
+ beq _021D7DA0
+ cmp r1, #1
+ beq _021D7DA8
+ cmp r1, #2
+ beq _021D7DB0
+_021D7DA0:
+ ldr r2, _021D7E9C ; =0x021D9DA8
+ ldr r4, _021D7EA0 ; =0x021D9E0C
+ mov r6, #2
+ b _021D7DC4
+_021D7DA8:
+ ldr r2, _021D7EA4 ; =0x021D9DB0
+ ldr r4, _021D7EA8 ; =0x021D9E58
+ mov r6, #3
+ b _021D7DC4
+_021D7DB0:
+ ldr r0, _021D7EAC ; =0x020ECAC0
+ ldr r2, _021D7EB0 ; =0x021D9DA0
+ ldrb r0, [r0]
+ cmp r0, #0xa
+ bne _021D7DC0
+ ldr r4, _021D7EB4 ; =0x021D9F40
+ mov r6, #5
+ b _021D7DC4
+_021D7DC0:
+ ldr r4, _021D7EB8 ; =0x021D9F68
+ mov r6, #5
+_021D7DC4:
+ add r1, r5, #0
+ ldr r0, [r5, #0x18]
+ add r1, #0x30
+ bl FUN_02019150
+ ldr r1, [r5]
+ add r0, r6, #0
+ bl FUN_02012838
+ mov r7, #0
+ str r0, [r5, #0x44]
+ cmp r6, #0
+ ble _021D7DF2
+_021D7DDE:
+ ldr r0, [r5, #0x44]
+ ldr r1, [r5, #0x4c]
+ ldr r2, [r4]
+ ldr r3, [r4, #4]
+ bl FUN_02012880
+ add r7, r7, #1
+ add r4, #8
+ cmp r7, r6
+ blt _021D7DDE
+_021D7DF2:
+ ldr r4, _021D7EBC ; =0x021D9EF8
+ add r3, sp, #4
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5, #0x44]
+ str r0, [sp, #4]
+ lsl r0, r6, #0x10
+ lsr r1, r0, #0x10
+ add r0, sp, #4
+ strh r1, [r0, #0x10]
+ strh r1, [r0, #0x12]
+ ldr r0, _021D7EC0 ; =MOD59_021D7D68
+ mov r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x30
+ str r0, [sp, #0x10]
+ ldr r3, [r5]
+ add r0, r2, #0
+ lsl r3, r3, #0x18
+ add r2, r1, #0
+ lsr r3, r3, #0x18
+ bl FUN_020010A8
+ str r0, [r5, #0x40]
+ ldr r0, [sp, #0x10]
+ ldr r2, _021D7EC4 ; =0x000003D9
+ mov r1, #1
+ mov r3, #3
+ bl FUN_0200CCA4
+ add r0, r5, #0
+ add r0, #0x30
+ bl FUN_020191D0
+ mov r0, #1
+ str r0, [r5, #0x2c]
+ b _021D7E96
+_021D7E4C:
+ ldr r0, [r5, #0x40]
+ bl FUN_02001204
+ mov r1, #0
+ mvn r1, r1
+ str r0, [r5, #0x48]
+ cmp r0, r1
+ beq _021D7E96
+ sub r1, r1, #1
+ cmp r0, r1
+ bne _021D7E66
+ cmp r4, #1
+ beq _021D7E96
+_021D7E66:
+ add r0, r5, #0
+ add r0, #0x30
+ mov r1, #0
+ bl FUN_0200CCF8
+ add r0, r5, #0
+ add r0, #0x30
+ bl FUN_02019178
+ mov r1, #0
+ ldr r0, [r5, #0x40]
+ add r2, r1, #0
+ bl FUN_02001300
+ ldr r0, [r5, #0x44]
+ bl FUN_02012870
+ ldr r0, _021D7EC8 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #0
+ str r0, [r5, #0x2c]
+ mov r0, #1
+ str r0, [sp]
+_021D7E96:
+ ldr r0, [sp]
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7E9C: .word 0x021D9DA8
+_021D7EA0: .word 0x021D9E0C
+_021D7EA4: .word 0x021D9DB0
+_021D7EA8: .word 0x021D9E58
+_021D7EAC: .word 0x020ECAC0
+_021D7EB0: .word 0x021D9DA0
+_021D7EB4: .word 0x021D9F40
+_021D7EB8: .word 0x021D9F68
+_021D7EBC: .word 0x021D9EF8
+_021D7EC0: .word MOD59_021D7D68
+_021D7EC4: .word 0x000003D9
+_021D7EC8: .word 0x000005DC
+ thumb_func_end MOD59_021D7D7C
+
+ thumb_func_start MOD59_021D7ECC
+MOD59_021D7ECC: ; 0x021D7ECC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ str r1, [sp, #0x10]
+ ldr r1, [r4, #0x54]
+ add r6, r2, #0
+ add r7, r3, #0
+ mov r5, #0
+ cmp r1, #5
+ bls _021D7EE2
+ b _021D803C
+_021D7EE2:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7EEE: ; jump table
+ .short _021D7EFA - _021D7EEE - 2 ; case 0
+ .short _021D7FD8 - _021D7EEE - 2 ; case 1
+ .short _021D7FE4 - _021D7EEE - 2 ; case 2
+ .short _021D7FF6 - _021D7EEE - 2 ; case 3
+ .short _021D8016 - _021D7EEE - 2 ; case 4
+ .short _021D8028 - _021D7EEE - 2 ; case 5
+_021D7EFA:
+ add r0, r5, #0
+ add r1, r5, #0
+ bl FUN_0201797C
+ mov r0, #1
+ ldr r1, [r4]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ str r0, [r4, #0x5c]
+ ldr r0, [r4, #0x4c]
+ ldr r1, [sp, #0x10]
+ ldr r2, [r4, #0x5c]
+ bl FUN_0200A8E0
+ cmp r6, #1
+ add r0, sp, #0x14
+ bne _021D7F7C
+ ldr r1, _021D8044 ; =0x021D9D90
+ ldrh r2, [r1, #8]
+ strh r2, [r0]
+ ldrh r2, [r1, #0xa]
+ strh r2, [r0, #2]
+ ldrh r2, [r1, #0xc]
+ ldrh r1, [r1, #0xe]
+ strh r2, [r0, #4]
+ strh r1, [r0, #6]
+ ldr r0, [r4, #0x5c]
+ bl FUN_02002F90
+ mov r1, #0xc
+ sub r2, r1, r0
+ add r1, sp, #0x14
+ strb r2, [r1, #2]
+ lsl r0, r0, #1
+ strb r0, [r1, #4]
+ add r1, r4, #0
+ ldr r0, [r4, #0x18]
+ add r1, #0x1c
+ add r2, sp, #0x14
+ bl FUN_02019150
+ add r1, r5, #0
+ mov r0, #0xc0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x1c
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ add r1, r5, #0
+ str r1, [sp]
+ ldr r0, _021D8048 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x1c
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ b _021D7FCC
+_021D7F7C:
+ ldr r1, _021D8044 ; =0x021D9D90
+ add r2, sp, #0x14
+ ldrh r3, [r1]
+ strh r3, [r0]
+ ldrh r3, [r1, #2]
+ strh r3, [r0, #2]
+ ldrh r3, [r1, #4]
+ ldrh r1, [r1, #6]
+ strh r3, [r0, #4]
+ strh r1, [r0, #6]
+ ldr r1, [sp, #0x30]
+ strb r7, [r0, #2]
+ strb r1, [r0, #4]
+ add r1, r4, #0
+ ldr r0, [r4, #0x18]
+ add r1, #0x1c
+ bl FUN_02019150
+ add r1, r5, #0
+ mov r0, #0xc0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x1c
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ add r1, r5, #0
+ str r1, [sp]
+ ldr r0, _021D804C ; =0x000F0200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ ldr r2, [r4, #0x5c]
+ add r0, #0x1c
+ add r3, r1, #0
+ bl FUN_0201BDE0
+_021D7FCC:
+ ldr r0, [r4, #0x5c]
+ bl FUN_02021A20
+ mov r0, #1
+ str r0, [r4, #0x54]
+ b _021D803C
+_021D7FD8:
+ add r0, #0x1c
+ bl FUN_020191D0
+ mov r0, #2
+ str r0, [r4, #0x54]
+ b _021D803C
+_021D7FE4:
+ add r1, r5, #0
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D803C
+ mov r0, #3
+ str r0, [r4, #0x54]
+ b _021D803C
+_021D7FF6:
+ ldr r0, _021D8050 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ and r0, r1
+ cmp r0, #1
+ beq _021D800A
+ mov r0, #2
+ and r0, r1
+ cmp r0, #2
+ bne _021D803C
+_021D800A:
+ ldr r0, _021D8054 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #4
+ str r0, [r4, #0x54]
+ b _021D803C
+_021D8016:
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D803C
+ mov r0, #5
+ str r0, [r4, #0x54]
+ b _021D803C
+_021D8028:
+ add r0, #0x1c
+ bl FUN_02019178
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ add r0, r5, #0
+ str r0, [r4, #0x54]
+ mov r5, #1
+_021D803C:
+ add r0, r5, #0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D8044: .word 0x021D9D90
+_021D8048: .word 0x00010200
+_021D804C: .word 0x000F0200
+_021D8050: .word 0x021C48B8
+_021D8054: .word 0x000005DC
+ thumb_func_end MOD59_021D7ECC
+
+ thumb_func_start MOD59_021D8058
+MOD59_021D8058: ; 0x021D8058
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r5, r0, #0
+ str r1, [sp, #8]
+ ldr r0, [r5]
+ mov r3, #3
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x18]
+ mov r0, #0x7d
+ bl FUN_0200687C
+ mov r0, #0
+ ldr r3, [r5]
+ mov r1, #0x20
+ add r2, r0, #0
+ bl FUN_02017F18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5]
+ mov r1, #0x17
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0x18]
+ mov r0, #0x7d
+ mov r3, #7
+ bl FUN_0200687C
+ ldr r0, _021D80F8 ; =0x020ECAC0
+ ldrb r0, [r0]
+ cmp r0, #0xa
+ bne _021D80A6
+ mov r1, #1
+ mov r4, #0x18
+ b _021D80AA
+_021D80A6:
+ mov r1, #2
+ mov r4, #0x19
+_021D80AA:
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r0, [r5]
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #0x7d
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r0, #0xa0
+ str r0, [sp]
+ ldr r0, [r5]
+ add r1, r4, #0
+ str r0, [sp, #4]
+ mov r0, #0x7d
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ add r0, r5, #0
+ bl MOD59_021D80FC
+ add r0, r5, #0
+ bl MOD59_021D8140
+ add r0, r5, #0
+ bl MOD59_021D8234
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02017FE4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021D80F8: .word 0x020ECAC0
+ thumb_func_end MOD59_021D8058
+
+ thumb_func_start MOD59_021D80FC
+MOD59_021D80FC: ; 0x021D80FC
+ push {r4, r5, lr}
+ sub sp, #0x24
+ ldr r5, _021D813C ; =0x021D9E1C
+ add r3, r0, #0
+ ldmia r5!, {r0, r1}
+ add r4, sp, #0x10
+ add r2, r4, #0
+ stmia r4!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r4]
+ add r0, r3, #0
+ add r0, #0x88
+ ldrb r1, [r0]
+ cmp r1, #5
+ bhs _021D8138
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r3]
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ ldr r1, [r2, r1]
+ ldr r2, [r3, #0x18]
+ mov r0, #0x7d
+ mov r3, #3
+ bl FUN_020068C8
+_021D8138:
+ add sp, #0x24
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D813C: .word 0x021D9E1C
+ thumb_func_end MOD59_021D80FC
+
+ thumb_func_start MOD59_021D8140
+MOD59_021D8140: ; 0x021D8140
+ push {r3, r4, r5, lr}
+ sub sp, #0x68
+ ldr r5, _021D8230 ; =0x021D9F90
+ add r4, r0, #0
+ add r3, sp, #0x10
+ mov r2, #0xb
+_021D814C:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D814C
+ add r0, r4, #0
+ add r0, #0x89
+ ldrb r1, [r0]
+ cmp r1, #0
+ beq _021D81BE
+ cmp r1, #0xc
+ bhs _021D81BE
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ lsl r2, r1, #3
+ str r0, [sp, #0xc]
+ add r1, sp, #0x10
+ ldr r1, [r1, r2]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #1
+ bl FUN_0200687C
+ mov r0, #0x20
+ str r0, [sp]
+ ldr r0, [r4]
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r1, #0x89
+ ldrb r1, [r1]
+ mov r0, #0x7d
+ mov r3, #0xe0
+ lsl r2, r1, #3
+ add r1, sp, #0x14
+ ldr r1, [r1, r2]
+ mov r2, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x16
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #1
+ bl FUN_020068C8
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #7
+ bl MOD59_021D7C10
+_021D81BE:
+ add r0, r4, #0
+ add r0, #0x8a
+ ldrb r1, [r0]
+ cmp r1, #0
+ beq _021D822A
+ cmp r1, #0xc
+ bhs _021D822A
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ lsl r2, r1, #3
+ str r0, [sp, #0xc]
+ add r1, sp, #0x10
+ ldr r1, [r1, r2]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0x20
+ str r0, [sp]
+ ldr r0, [r4]
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r1, #0x8a
+ ldrb r1, [r1]
+ mov r0, #0x7d
+ add r3, r0, #0
+ lsl r2, r1, #3
+ add r1, sp, #0x14
+ ldr r1, [r1, r2]
+ mov r2, #0
+ add r3, #0x83
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x16
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #2
+ bl FUN_020068C8
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #8
+ bl MOD59_021D7C10
+_021D822A:
+ add sp, #0x68
+ pop {r3, r4, r5, pc}
+ nop
+_021D8230: .word 0x021D9F90
+ thumb_func_end MOD59_021D8140
+
+ thumb_func_start MOD59_021D8234
+MOD59_021D8234: ; 0x021D8234
+ push {r4, r5, lr}
+ sub sp, #0x24
+ ldr r5, _021D829C ; =0x021D9E30
+ add r4, r0, #0
+ ldmia r5!, {r0, r1}
+ add r3, sp, #0x10
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ add r0, r4, #0
+ add r0, #0x8b
+ ldrb r1, [r0]
+ cmp r1, #5
+ bhs _021D8296
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ lsl r1, r1, #2
+ str r0, [sp, #0xc]
+ ldr r1, [r2, r1]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #7
+ bl FUN_020068C8
+ add r0, r4, #0
+ add r0, #0x8b
+ ldrb r0, [r0]
+ cmp r0, #1
+ bne _021D8288
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #3
+ bl MOD59_021D7C10
+ add sp, #0x24
+ pop {r4, r5, pc}
+_021D8288:
+ cmp r0, #2
+ bne _021D8296
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #2
+ bl MOD59_021D7C10
+_021D8296:
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021D829C: .word 0x021D9E30
+ thumb_func_end MOD59_021D8234
+
+ thumb_func_start MOD59_021D82A0
+MOD59_021D82A0: ; 0x021D82A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ add r5, r0, #0
+ ldr r1, _021D83EC ; =0x000001BE
+ str r2, [sp, #8]
+ add r0, sp, #0x10
+ mov r3, #2
+ bl FUN_02068C00
+ ldr r0, [r5]
+ mov r1, #0xc8
+ bl FUN_02016998
+ add r7, r0, #0
+ ldr r2, _021D83F0 ; =0x021D9FE8
+ mov r1, #0
+ add r3, r7, #0
+_021D82C8:
+ ldrb r0, [r2]
+ add r1, r1, #1
+ add r2, r2, #1
+ add r0, r0, #1
+ strh r0, [r3]
+ add r3, r3, #2
+ cmp r1, #0x64
+ blt _021D82C8
+ add r1, sp, #0x10
+ ldrh r0, [r1]
+ ldrh r1, [r1, #2]
+ ldr r2, [r5]
+ bl FUN_0201244C
+ add r1, sp, #0x10
+ add r4, r0, #0
+ ldrh r0, [r1]
+ ldrh r1, [r1, #4]
+ ldr r2, [r5]
+ bl FUN_02012470
+ mov r2, #0
+ add r6, r0, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #9
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r3, #0xb
+ str r3, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x18]
+ mov r1, #2
+ add r2, r7, #0
+ bl FUN_02018148
+ add r0, r5, #0
+ mov r1, #2
+ mov r2, #9
+ bl MOD59_021D7C10
+ ldr r3, [r5]
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ mov r0, #1
+ str r0, [sp]
+ mov r3, #0x32
+ ldr r0, [r5, #0x18]
+ mov r1, #2
+ add r2, r4, #0
+ lsl r3, r3, #6
+ bl FUN_02017E14
+ mov r3, #0x20
+ add r2, r3, #0
+ mov r0, #2
+ add r1, r6, #0
+ add r3, #0xe0
+ bl FUN_02017FB4
+ mov r3, #0x12
+ ldr r1, _021D83F4 ; =0x021D9ED8
+ mov r0, #2
+ mov r2, #0x20
+ lsl r3, r3, #4
+ bl FUN_02017FB4
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xa
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ mov r1, #5
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r0, #7
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x18]
+ mov r1, #5
+ add r2, r7, #0
+ mov r3, #0xb
+ bl FUN_02018148
+ add r0, r5, #0
+ mov r1, #5
+ mov r2, #0xa
+ bl MOD59_021D7C10
+ ldr r3, [r5]
+ mov r0, #5
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ mov r0, #1
+ str r0, [sp]
+ mov r3, #0x32
+ ldr r0, [r5, #0x18]
+ mov r1, #5
+ add r2, r4, #0
+ lsl r3, r3, #6
+ bl FUN_02017E14
+ mov r0, #5
+ add r1, r6, #0
+ mov r2, #0x20
+ lsl r3, r0, #6
+ bl FUN_02017FB4
+ mov r0, #5
+ ldr r1, _021D83F4 ; =0x021D9ED8
+ mov r2, #0x20
+ lsl r3, r0, #6
+ bl FUN_02017FB4
+ add r0, r6, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ bl FUN_02016A18
+ add r0, r7, #0
+ bl FUN_02016A18
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D83EC: .word 0x000001BE
+_021D83F0: .word 0x021D9FE8
+_021D83F4: .word 0x021D9ED8
+ thumb_func_end MOD59_021D82A0
+
+ thumb_func_start MOD59_021D83F8
+MOD59_021D83F8: ; 0x021D83F8
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x26
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #6
+ bl FUN_020068C8
+ add r0, r4, #0
+ mov r1, #6
+ mov r2, #9
+ bl MOD59_021D7C10
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r0, [r4]
+ mov r1, #0x27
+ str r0, [sp, #4]
+ mov r0, #0x7d
+ mov r2, #4
+ mov r3, #0xe0
+ bl FUN_02006930
+ ldr r3, [r4]
+ mov r0, #6
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #0x1e
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ mov r3, #6
+ bl FUN_0200687C
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D83F8
+
+ thumb_func_start MOD59_021D8460
+MOD59_021D8460: ; 0x021D8460
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r6, #0
+ cmp r2, #0
+ bne _021D849C
+ ldr r0, [r5, #0x18]
+ bl FUN_02017B48
+ cmp r0, #0
+ beq _021D8498
+ cmp r0, #0
+ ldr r0, [r5, #0x18]
+ ble _021D848A
+ lsl r1, r4, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #2
+ mov r3, #4
+ bl FUN_020179E0
+ b _021D84E2
+_021D848A:
+ lsl r1, r4, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #1
+ mov r3, #4
+ bl FUN_020179E0
+ b _021D84E2
+_021D8498:
+ mov r6, #1
+ b _021D84E2
+_021D849C:
+ cmp r2, #1
+ bne _021D84C2
+ ldr r0, [r5, #0x18]
+ bl FUN_02017B48
+ add r1, r6, #0
+ sub r1, #0x30
+ cmp r0, r1
+ beq _021D84BE
+ lsl r1, r4, #0x18
+ ldr r0, [r5, #0x18]
+ lsr r1, r1, #0x18
+ mov r2, #2
+ mov r3, #4
+ bl FUN_020179E0
+ b _021D84E2
+_021D84BE:
+ mov r6, #1
+ b _021D84E2
+_021D84C2:
+ cmp r2, #2
+ bne _021D84E2
+ ldr r0, [r5, #0x18]
+ bl FUN_02017B48
+ cmp r0, #0
+ beq _021D84E0
+ lsl r1, r4, #0x18
+ ldr r0, [r5, #0x18]
+ lsr r1, r1, #0x18
+ mov r2, #1
+ mov r3, #4
+ bl FUN_020179E0
+ b _021D84E2
+_021D84E0:
+ mov r6, #1
+_021D84E2:
+ add r0, r6, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D8460
+
+ thumb_func_start MOD59_021D84E8
+MOD59_021D84E8: ; 0x021D84E8
+ add r1, r0, #0
+ mov r2, #0
+ add r1, #0x8c
+ strb r2, [r1]
+ add r1, r0, #0
+ add r1, #0x8d
+ strb r2, [r1]
+ add r1, r0, #0
+ add r1, #0x8e
+ strb r2, [r1]
+ add r0, #0x8f
+ strb r2, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD59_021D84E8
+
+ thumb_func_start MOD59_021D8504
+MOD59_021D8504: ; 0x021D8504
+ push {r3, r4, r5, lr}
+ sub sp, #0x30
+ add r4, r0, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D858E
+ add r0, r4, #0
+ add r0, #0x8d
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D8526
+ add r0, r4, #0
+ add r0, #0x8d
+ ldrb r0, [r0]
+ sub r1, r0, #1
+ b _021D8546
+_021D8526:
+ add r0, r4, #0
+ add r0, #0x8c
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x8c
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x8c
+ ldrb r1, [r0]
+ mov r0, #3
+ and r1, r0
+ add r0, r4, #0
+ add r0, #0x8c
+ strb r1, [r0]
+ mov r1, #4
+_021D8546:
+ add r0, r4, #0
+ add r0, #0x8d
+ strb r1, [r0]
+ mov r0, #0xa
+ str r0, [sp]
+ ldr r0, _021D860C ; =0x04000050
+ mov r1, #4
+ mov r2, #8
+ mov r3, #6
+ bl G2x_SetBlendAlpha_
+ ldr r5, _021D8610 ; =0x021D9DEC
+ add r3, sp, #0x20
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ add r1, r4, #0
+ str r0, [sp, #0xc]
+ add r1, #0x8c
+ ldrb r1, [r1]
+ mov r0, #0x7d
+ mov r3, #1
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ ldr r2, [r4, #0x18]
+ bl FUN_0200687C
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+_021D858E:
+ add r0, r4, #0
+ add r0, #0x8f
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D85A2
+ add r0, r4, #0
+ add r0, #0x8f
+ ldrb r0, [r0]
+ sub r1, r0, #1
+ b _021D85C2
+_021D85A2:
+ add r0, r4, #0
+ add r0, #0x8e
+ ldrb r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x8e
+ strb r1, [r0]
+ add r0, r4, #0
+ add r0, #0x8e
+ ldrb r1, [r0]
+ mov r0, #3
+ and r1, r0
+ add r0, r4, #0
+ add r0, #0x8e
+ strb r1, [r0]
+ mov r1, #4
+_021D85C2:
+ add r0, r4, #0
+ add r0, #0x8f
+ strb r1, [r0]
+ mov r0, #0xa
+ str r0, [sp]
+ ldr r0, _021D860C ; =0x04000050
+ mov r1, #2
+ mov r2, #8
+ mov r3, #6
+ bl G2x_SetBlendAlpha_
+ ldr r5, _021D8614 ; =0x021D9DFC
+ add r3, sp, #0x10
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ add r1, r4, #0
+ str r0, [sp, #0xc]
+ add r1, #0x8e
+ ldrb r1, [r1]
+ mov r0, #0x7d
+ mov r3, #2
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ ldr r2, [r4, #0x18]
+ bl FUN_0200687C
+ add sp, #0x30
+ pop {r3, r4, r5, pc}
+ nop
+_021D860C: .word 0x04000050
+_021D8610: .word 0x021D9DEC
+_021D8614: .word 0x021D9DFC
+ thumb_func_end MOD59_021D8504
+
+ thumb_func_start MOD59_021D8618
+MOD59_021D8618: ; 0x021D8618
+ ldr r0, _021D8620 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ bx lr
+ .align 2, 0
+_021D8620: .word 0x04000050
+ thumb_func_end MOD59_021D8618
+
+ thumb_func_start MOD59_021D8624
+MOD59_021D8624: ; 0x021D8624
+ add r1, r0, #0
+ mov r2, #0
+ add r1, #0x94
+ str r2, [r1]
+ add r0, #0x98
+ str r2, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD59_021D8624
+
+ thumb_func_start MOD59_021D8634
+MOD59_021D8634: ; 0x021D8634
+ push {r4, r5, r6, lr}
+ sub sp, #0x40
+ add r3, r0, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ beq _021D864E
+ add r0, r3, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ sub r1, r0, #1
+ b _021D865E
+_021D864E:
+ add r0, r3, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r3, #0
+ add r0, #0x94
+ str r1, [r0]
+ mov r1, #8
+_021D865E:
+ add r0, r3, #0
+ add r0, #0x98
+ str r1, [r0]
+ add r0, r3, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D8674
+ ldr r6, _021D86B4 ; =0x021D9E88
+ add r5, sp, #0x28
+ b _021D8678
+_021D8674:
+ ldr r6, _021D86B8 ; =0x021D9E70
+ add r5, sp, #0x10
+_021D8678:
+ add r2, r5, #0
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ add r0, r3, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ ldr r1, [r2, r0]
+ cmp r1, #0xff
+ bne _021D8698
+ mov r4, #1
+ b _021D86AE
+_021D8698:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r3]
+ str r0, [sp, #0xc]
+ ldr r2, [r3, #0x18]
+ mov r0, #0x7d
+ mov r3, #1
+ bl FUN_0200687C
+_021D86AE:
+ add r0, r4, #0
+ add sp, #0x40
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D86B4: .word 0x021D9E88
+_021D86B8: .word 0x021D9E70
+ thumb_func_end MOD59_021D8634
+
+ thumb_func_start MOD59_021D86BC
+MOD59_021D86BC: ; 0x021D86BC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r4, r0, #0
+ ldr r0, [r6]
+ mov r7, #0
+ cmp r0, #5
+ bls _021D86CC
+ b _021D890A
+_021D86CC:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D86D8: ; jump table
+ .short _021D86E4 - _021D86D8 - 2 ; case 0
+ .short _021D8728 - _021D86D8 - 2 ; case 1
+ .short _021D87A6 - _021D86D8 - 2 ; case 2
+ .short _021D87E0 - _021D86D8 - 2 ; case 3
+ .short _021D887C - _021D86D8 - 2 ; case 4
+ .short _021D88F8 - _021D86D8 - 2 ; case 5
+_021D86E4:
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ add r2, r7, #0
+ add r3, r7, #0
+ bl FUN_020179E0
+ mov r2, #3
+ add r3, r2, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ sub r3, #0x6b
+ bl FUN_020179E0
+ mov r0, #2
+ add r1, r7, #0
+ bl FUN_020178BC
+ mov r0, #5
+ mov r1, #1
+ bl FUN_0201797C
+ add r0, r4, #0
+ add r2, r7, #0
+ add r0, #0xa8
+ str r2, [r0]
+ add r0, r4, #0
+ mov r1, #8
+ add r0, #0xac
+ str r1, [r0]
+ add r4, #0xb0
+ str r2, [r4]
+ mov r0, #1
+ str r0, [r6]
+ b _021D890A
+_021D8728:
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02017B48
+ ldr r0, [r4, #0x18]
+ mov r1, #5
+ bl FUN_02017B54
+ add r1, r4, #0
+ add r1, #0xb0
+ ldr r3, [r1]
+ add r1, r4, #0
+ add r1, #0xac
+ ldr r2, [r1]
+ lsl r1, r2, #3
+ add r1, r2, r1
+ add r2, r3, #0
+ mul r2, r1
+ lsl r1, r3, #3
+ add r1, r3, r1
+ mul r1, r3
+ lsr r3, r1, #0x1f
+ add r3, r1, r3
+ asr r1, r3, #1
+ sub r5, r2, r1
+ cmp r0, #0x58
+ bge _021D8792
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ mov r2, #1
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb0
+ str r1, [r0]
+ mov r1, #2
+ ldr r0, [r4, #0x18]
+ add r3, r1, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0x18]
+ mov r1, #5
+ mov r2, #1
+ mov r3, #2
+ bl FUN_020179E0
+ ldr r0, [r4, #0x18]
+ mov r1, #5
+ mov r2, #3
+ add r3, r5, #0
+ bl FUN_020179E0
+ b _021D890A
+_021D8792:
+ mov r0, #5
+ add r1, r7, #0
+ bl FUN_0201797C
+ mov r0, #0x1e
+ add r4, #0xb0
+ str r0, [r4]
+ mov r0, #2
+ str r0, [r6]
+ b _021D890A
+_021D87A6:
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D87BE
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ add r4, #0xb0
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021D890A
+_021D87BE:
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ add r0, r4, #0
+ add r2, r7, #0
+ add r0, #0xa8
+ str r2, [r0]
+ add r0, r4, #0
+ mov r1, #9
+ add r0, #0xac
+ str r1, [r0]
+ add r4, #0xb0
+ str r2, [r4]
+ mov r0, #3
+ str r0, [r6]
+ b _021D890A
+_021D87E0:
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02017B48
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02017B54
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0xac
+ ldr r2, [r0]
+ lsl r0, r2, #3
+ add r0, r2, r0
+ lsl r2, r1, #3
+ add r2, r1, r2
+ mul r0, r1
+ mul r2, r1
+ lsr r1, r2, #0x1f
+ add r1, r2, r1
+ sub r0, #0x68
+ asr r1, r1, #1
+ sub r5, r0, r1
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021D8846
+ cmp r5, #0
+ bgt _021D8846
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ mov r2, #3
+ add r3, r7, #0
+ bl FUN_020179E0
+ add r0, r4, #0
+ add r2, r7, #0
+ add r0, #0xa8
+ str r2, [r0]
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xac
+ str r1, [r0]
+ add r4, #0xb0
+ str r2, [r4]
+ mov r0, #4
+ str r0, [r6]
+ b _021D890A
+_021D8846:
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ mov r2, #1
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb0
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa8
+ str r5, [r0]
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_020179E0
+ asr r5, r5, #1
+ cmp r5, #0x90
+ ble _021D886E
+ mov r5, #0x90
+_021D886E:
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ mov r2, #3
+ add r3, r5, #0
+ bl FUN_020179E0
+ b _021D890A
+_021D887C:
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02017B48
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02017B54
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r1, [r0]
+ add r0, r4, #0
+ add r0, #0xac
+ ldr r2, [r0]
+ lsl r0, r2, #3
+ add r0, r2, r0
+ lsl r2, r1, #3
+ add r2, r1, r2
+ mul r2, r1
+ mul r0, r1
+ lsr r1, r2, #0x1f
+ add r1, r2, r1
+ asr r1, r1, #1
+ sub r5, r0, r1
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021D88CC
+ cmp r5, #0
+ bgt _021D88CC
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ mov r2, #3
+ add r3, r7, #0
+ bl FUN_020179E0
+ mov r0, #5
+ str r0, [r6]
+ b _021D890A
+_021D88CC:
+ add r0, r4, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ mov r2, #1
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb0
+ str r1, [r0]
+ mov r1, #2
+ ldr r0, [r4, #0x18]
+ add r3, r1, #0
+ bl FUN_020179E0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ mov r2, #3
+ add r3, r5, #0
+ bl FUN_020179E0
+ add r4, #0xa8
+ str r5, [r4]
+ b _021D890A
+_021D88F8:
+ ldr r0, _021D8910 ; =0x000001BE
+ bl FUN_02005578
+ add r0, r4, #0
+ mov r1, #2
+ mov r2, #8
+ bl MOD59_021D7C10
+ mov r7, #1
+_021D890A:
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8910: .word 0x000001BE
+ thumb_func_end MOD59_021D86BC
+
+ thumb_func_start MOD59_021D8914
+MOD59_021D8914: ; 0x021D8914
+ ldr r3, _021D891C ; =0x020178BD
+ mov r0, #2
+ mov r1, #1
+ bx r3
+ .align 2, 0
+_021D891C: .word 0x020178BD
+ thumb_func_end MOD59_021D8914
+
+ thumb_func_start MOD59_021D8920
+MOD59_021D8920: ; 0x021D8920
+ push {r4, r5, r6, lr}
+ sub sp, #0x30
+ add r4, r0, #0
+ ldr r1, [r4, #0xc]
+ mov r5, #0
+ cmp r1, #0x6d
+ bls _021D8932
+ bl _021D985C
+_021D8932:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D893E: ; jump table
+ .short _021D8A1A - _021D893E - 2 ; case 0
+ .short _021D8A5A - _021D893E - 2 ; case 1
+ .short _021D8A76 - _021D893E - 2 ; case 2
+ .short _021D8A92 - _021D893E - 2 ; case 3
+ .short _021D8ADE - _021D893E - 2 ; case 4
+ .short _021D8AEE - _021D893E - 2 ; case 5
+ .short _021D8B02 - _021D893E - 2 ; case 6
+ .short _021D8B16 - _021D893E - 2 ; case 7
+ .short _021D8B60 - _021D893E - 2 ; case 8
+ .short _021D8B80 - _021D893E - 2 ; case 9
+ .short _021D8BA0 - _021D893E - 2 ; case 10
+ .short _021D8BD8 - _021D893E - 2 ; case 11
+ .short _021D8BE8 - _021D893E - 2 ; case 12
+ .short _021D8C02 - _021D893E - 2 ; case 13
+ .short _021D8C16 - _021D893E - 2 ; case 14
+ .short _021D8C30 - _021D893E - 2 ; case 15
+ .short _021D8C44 - _021D893E - 2 ; case 16
+ .short _021D8C5E - _021D893E - 2 ; case 17
+ .short _021D8C72 - _021D893E - 2 ; case 18
+ .short _021D8C98 - _021D893E - 2 ; case 19
+ .short _021D8CA8 - _021D893E - 2 ; case 20
+ .short _021D8CBC - _021D893E - 2 ; case 21
+ .short _021D8CF8 - _021D893E - 2 ; case 22
+ .short _021D8D1C - _021D893E - 2 ; case 23
+ .short _021D8D3E - _021D893E - 2 ; case 24
+ .short _021D8D7C - _021D893E - 2 ; case 25
+ .short _021D8D94 - _021D893E - 2 ; case 26
+ .short _021D8DD6 - _021D893E - 2 ; case 27
+ .short _021D8DEA - _021D893E - 2 ; case 28
+ .short _021D8E34 - _021D893E - 2 ; case 29
+ .short _021D8E44 - _021D893E - 2 ; case 30
+ .short _021D8E58 - _021D893E - 2 ; case 31
+ .short _021D8E90 - _021D893E - 2 ; case 32
+ .short _021D8EA0 - _021D893E - 2 ; case 33
+ .short _021D8EBE - _021D893E - 2 ; case 34
+ .short _021D8ED6 - _021D893E - 2 ; case 35
+ .short _021D8EF0 - _021D893E - 2 ; case 36
+ .short _021D8F0A - _021D893E - 2 ; case 37
+ .short _021D8F24 - _021D893E - 2 ; case 38
+ .short _021D8F3E - _021D893E - 2 ; case 39
+ .short _021D8F5E - _021D893E - 2 ; case 40
+ .short _021D8F7E - _021D893E - 2 ; case 41
+ .short _021D8F92 - _021D893E - 2 ; case 42
+ .short _021D8FA6 - _021D893E - 2 ; case 43
+ .short _021D8FC6 - _021D893E - 2 ; case 44
+ .short _021D900C - _021D893E - 2 ; case 45
+ .short _021D901C - _021D893E - 2 ; case 46
+ .short _021D9030 - _021D893E - 2 ; case 47
+ .short _021D9062 - _021D893E - 2 ; case 48
+ .short _021D90CE - _021D893E - 2 ; case 49
+ .short _021D90E2 - _021D893E - 2 ; case 50
+ .short _021D9106 - _021D893E - 2 ; case 51
+ .short _021D913E - _021D893E - 2 ; case 52
+ .short _021D9178 - _021D893E - 2 ; case 53
+ .short _021D9192 - _021D893E - 2 ; case 54
+ .short _021D91E4 - _021D893E - 2 ; case 55
+ .short _021D9208 - _021D893E - 2 ; case 56
+ .short _021D921A - _021D893E - 2 ; case 57
+ .short _021D922A - _021D893E - 2 ; case 58
+ .short _021D9244 - _021D893E - 2 ; case 59
+ .short _021D925C - _021D893E - 2 ; case 60
+ .short _021D926C - _021D893E - 2 ; case 61
+ .short _021D927E - _021D893E - 2 ; case 62
+ .short _021D9290 - _021D893E - 2 ; case 63
+ .short _021D92CA - _021D893E - 2 ; case 64
+ .short _021D92DC - _021D893E - 2 ; case 65
+ .short _021D92EE - _021D893E - 2 ; case 66
+ .short _021D930A - _021D893E - 2 ; case 67
+ .short _021D9384 - _021D893E - 2 ; case 68
+ .short _021D9396 - _021D893E - 2 ; case 69
+ .short _021D93AE - _021D893E - 2 ; case 70
+ .short _021D93C0 - _021D893E - 2 ; case 71
+ .short _021D93D8 - _021D893E - 2 ; case 72
+ .short _021D93F8 - _021D893E - 2 ; case 73
+ .short _021D942A - _021D893E - 2 ; case 74
+ .short _021D944A - _021D893E - 2 ; case 75
+ .short _021D945C - _021D893E - 2 ; case 76
+ .short _021D9476 - _021D893E - 2 ; case 77
+ .short _021D94DE - _021D893E - 2 ; case 78
+ .short _021D94EC - _021D893E - 2 ; case 79
+ .short _021D950C - _021D893E - 2 ; case 80
+ .short _021D954E - _021D893E - 2 ; case 81
+ .short _021D956E - _021D893E - 2 ; case 82
+ .short _021D9586 - _021D893E - 2 ; case 83
+ .short _021D9598 - _021D893E - 2 ; case 84
+ .short _021D95AA - _021D893E - 2 ; case 85
+ .short _021D95BC - _021D893E - 2 ; case 86
+ .short _021D95D4 - _021D893E - 2 ; case 87
+ .short _021D95E6 - _021D893E - 2 ; case 88
+ .short _021D95F8 - _021D893E - 2 ; case 89
+ .short _021D960A - _021D893E - 2 ; case 90
+ .short _021D9672 - _021D893E - 2 ; case 91
+ .short _021D9684 - _021D893E - 2 ; case 92
+ .short _021D9696 - _021D893E - 2 ; case 93
+ .short _021D96DE - _021D893E - 2 ; case 94
+ .short _021D96EC - _021D893E - 2 ; case 95
+ .short _021D96FE - _021D893E - 2 ; case 96
+ .short _021D9738 - _021D893E - 2 ; case 97
+ .short _021D974C - _021D893E - 2 ; case 98
+ .short _021D9764 - _021D893E - 2 ; case 99
+ .short _021D9788 - _021D893E - 2 ; case 100
+ .short _021D9798 - _021D893E - 2 ; case 101
+ .short _021D97B2 - _021D893E - 2 ; case 102
+ .short _021D97CC - _021D893E - 2 ; case 103
+ .short _021D97DC - _021D893E - 2 ; case 104
+ .short _021D9812 - _021D893E - 2 ; case 105
+ .short _021D982A - _021D893E - 2 ; case 106
+ .short _021D983A - _021D893E - 2 ; case 107
+ .short _021D9848 - _021D893E - 2 ; case 108
+ .short _021D985A - _021D893E - 2 ; case 109
+_021D8A1A:
+ ldr r1, _021D8D70 ; =0x00000405
+ mov r0, #2
+ mov r2, #1
+ bl FUN_0200433C
+ ldr r0, _021D8D70 ; =0x00000405
+ add r1, r5, #0
+ bl FUN_02005350
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #1
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8A5A:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8B22
+ add r0, r4, #0
+ mov r1, #0x28
+ bl MOD59_021D7BEC
+ cmp r0, #1
+ bne _021D8B22
+ mov r0, #2
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8A76:
+ add r1, r5, #0
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8B22
+ mov r0, #3
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ bl _021D985C
+_021D8A92:
+ ldr r0, _021D8D70 ; =0x00000405
+ bl FUN_0200521C
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x89
+ strb r1, [r0]
+ add r0, r4, #0
+ add r1, r5, #0
+ add r0, #0x8a
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8140
+ mov r0, #3
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201797C
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ mov r1, #1
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r5, #0
+ bl FUN_0200E1D0
+ mov r0, #4
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8ADE:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8B22
+ mov r0, #5
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8AEE:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8B22
+ mov r0, #6
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8B02:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D8460
+ cmp r0, #1
+ bne _021D8B22
+ mov r0, #7
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8B16:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7D7C
+ cmp r0, #1
+ beq _021D8B26
+_021D8B22:
+ bl _021D985C
+_021D8B26:
+ ldr r0, [r4, #0x48]
+ cmp r0, #1
+ beq _021D8B38
+ cmp r0, #2
+ beq _021D8B44
+ cmp r0, #3
+ beq _021D8B58
+ bl _021D985C
+_021D8B38:
+ mov r0, #0xa
+ str r0, [r4, #0x10]
+ mov r0, #8
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8B44:
+ mov r0, #0x1f
+ str r0, [r4, #0x10]
+ mov r0, #8
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ bl _021D985C
+_021D8B58:
+ mov r0, #0x29
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8B60:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, r5, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r2, r5, #0
+ add r3, r5, #0
+ bl FUN_0200E1D0
+ mov r0, #9
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8B80:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8C84
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ mov r0, #1
+ add r1, r5, #0
+ bl FUN_0201797C
+ ldr r0, [r4, #0x10]
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8BA0:
+ add r1, r4, #0
+ mov r2, #1
+ add r1, #0x88
+ strb r2, [r1]
+ bl MOD59_021D80FC
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0xb
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8BD8:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8C84
+ mov r0, #0xc
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8BE8:
+ mov r1, #0x12
+ str r1, [sp]
+ mov r1, #2
+ add r2, r5, #0
+ mov r3, #3
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8C84
+ mov r0, #0xd
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8C02:
+ add r1, r4, #0
+ mov r2, #2
+ add r1, #0x88
+ strb r2, [r1]
+ bl MOD59_021D80FC
+ mov r0, #0xe
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8C16:
+ mov r1, #0xc
+ str r1, [sp]
+ mov r1, #3
+ add r2, r5, #0
+ mov r3, #7
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8C84
+ mov r0, #0xf
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8C30:
+ add r1, r4, #0
+ mov r2, #3
+ add r1, #0x88
+ strb r2, [r1]
+ bl MOD59_021D80FC
+ mov r0, #0x10
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8C44:
+ mov r1, #0xc
+ str r1, [sp]
+ mov r1, #4
+ add r2, r5, #0
+ add r3, r1, #0
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8C84
+ mov r0, #0x11
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8C5E:
+ mov r1, #6
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8C84
+ mov r0, #0x12
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8C72:
+ mov r1, #0xa
+ str r1, [sp]
+ mov r1, #5
+ add r2, r5, #0
+ mov r3, #4
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ beq _021D8C88
+_021D8C84:
+ bl _021D985C
+_021D8C88:
+ mov r0, #0x13
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ bl _021D985C
+_021D8C98:
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #0x14
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8CA8:
+ mov r1, #7
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8DA0
+ mov r0, #0x15
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8CBC:
+ ldr r6, _021D8D74 ; =0x021D9E44
+ add r3, sp, #0x1c
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r2, #0
+ str r0, [r3]
+ ldr r0, [r4, #0x18]
+ str r0, [sp, #0x1c]
+ ldr r0, [r4, #0x68]
+ bl FUN_020145C8
+ mov r0, #6
+ mov r1, #1
+ bl FUN_0201797C
+ add r0, r4, #0
+ mov r1, #3
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #0x16
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8CF8:
+ ldr r0, _021D8D78 ; =0x021C48B8
+ ldr r0, [r0, #0x48]
+ cmp r0, #0
+ beq _021D8D08
+ mov r0, #0x1b
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8D08:
+ ldr r0, [r4, #0x68]
+ bl FUN_02014630
+ sub r0, r0, #3
+ cmp r0, #1
+ bhi _021D8DA0
+ mov r0, #0x17
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8D1C:
+ ldr r0, [r4, #0x68]
+ bl FUN_02014630
+ cmp r0, #1
+ beq _021D8D2E
+ cmp r0, #2
+ beq _021D8D36
+ bl _021D985C
+_021D8D2E:
+ mov r0, #0x18
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8D36:
+ mov r0, #0x1a
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8D3E:
+ mov r1, #6
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D8DA0
+ ldr r0, [r4, #0x68]
+ bl FUN_020146C4
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0x19
+ str r0, [r4, #0xc]
+ bl _021D985C
+ .align 2, 0
+_021D8D70: .word 0x00000405
+_021D8D74: .word 0x021D9E44
+_021D8D78: .word 0x021C48B8
+_021D8D7C:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8DA0
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ mov r0, #0x1c
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8D94:
+ mov r1, #6
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ beq _021D8DA4
+_021D8DA0:
+ bl _021D985C
+_021D8DA4:
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ ldr r0, [r4, #0x68]
+ bl FUN_020146C4
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x88
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D80FC
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #0xc
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8DD6:
+ mov r1, #8
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8EB2
+ mov r0, #0x16
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8DEA:
+ add r1, r4, #0
+ add r1, #0x88
+ strb r5, [r1]
+ bl MOD59_021D80FC
+ add r0, r4, #0
+ add r1, r5, #0
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201797C
+ add r2, r5, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0x1d
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8E34:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8EB2
+ mov r0, #0x1e
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8E44:
+ mov r1, #9
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8EB2
+ mov r0, #6
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8E58:
+ add r1, r4, #0
+ mov r2, #4
+ add r1, #0x88
+ strb r2, [r1]
+ bl MOD59_021D80FC
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0x20
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8E90:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8EB2
+ mov r0, #0x21
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8EA0:
+ mov r1, #6
+ str r1, [sp]
+ mov r1, #0xa
+ mov r2, #1
+ mov r3, #9
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ beq _021D8EB6
+_021D8EB2:
+ bl _021D985C
+_021D8EB6:
+ mov r0, #0x22
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8EBE:
+ mov r3, #8
+ mov r1, #0xb
+ mov r2, #1
+ str r3, [sp]
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x23
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8ED6:
+ mov r1, #6
+ str r1, [sp]
+ mov r1, #0xc
+ mov r2, #1
+ mov r3, #9
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x24
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8EF0:
+ mov r1, #0xe
+ str r1, [sp]
+ mov r1, #0xd
+ mov r2, #1
+ mov r3, #5
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x25
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8F0A:
+ mov r1, #4
+ str r1, [sp]
+ mov r1, #0xe
+ mov r2, #1
+ mov r3, #0xa
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x26
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8F24:
+ mov r1, #0xc
+ str r1, [sp]
+ mov r1, #0xf
+ mov r2, #1
+ mov r3, #6
+ bl MOD59_021D7ECC
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x27
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8F3E:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, r5, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r2, r5, #0
+ add r3, r5, #0
+ bl FUN_0200E1D0
+ mov r0, #0x28
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8F5E:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D8FCE
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #0x1c
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8F7E:
+ mov r1, #1
+ mov r2, #2
+ bl MOD59_021D8460
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x2a
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8F92:
+ mov r1, #0x10
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D8FCE
+ mov r0, #0x2b
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8FA6:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, r5, #0
+ str r0, [sp, #8]
+ mov r0, #4
+ add r2, r5, #0
+ add r3, r5, #0
+ bl FUN_0200E1D0
+ mov r0, #0x2c
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D8FC6:
+ bl FUN_0200E308
+ cmp r0, #1
+ beq _021D8FD2
+_021D8FCE:
+ bl _021D985C
+_021D8FD2:
+ add r0, r4, #0
+ bl MOD59_021D83F8
+ add r0, r4, #0
+ mov r1, #4
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #6
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ mov r0, #4
+ add r3, r5, #0
+ bl FUN_0200E1D0
+ mov r0, #0x2d
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D900C:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D90DA
+ mov r0, #0x2e
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D901C:
+ mov r1, #0x11
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D90DA
+ mov r0, #0x2f
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D9030:
+ bl MOD59_021D7730
+ cmp r0, #1
+ bne _021D9054
+ add r0, r4, #0
+ add r1, r5, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x98
+ str r1, [r0]
+ ldr r0, [r4, #0x18]
+ bl FUN_02018744
+ mov r0, #0x30
+ str r0, [r4, #0xc]
+ bl _021D985C
+_021D9054:
+ ldr r0, _021D9370 ; =0x021C48B8
+ ldr r0, [r0, #0x48]
+ cmp r0, #0
+ beq _021D90DA
+ mov r0, #0x31
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9062:
+ add r0, #0x98
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D9078
+ add r0, r4, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ add r4, #0x98
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021D985C
+_021D9078:
+ ldr r6, _021D9374 ; =0x021D9DC0
+ add r3, sp, #0x10
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ lsl r0, r0, #2
+ ldr r1, [r2, r0]
+ ldr r0, _021D9378 ; =0x0000FFFF
+ cmp r1, r0
+ bne _021D90A2
+ ldr r0, _021D937C ; =0x00000706
+ bl FUN_020054C8
+ mov r0, #0x32
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D90A2:
+ mov r0, #0x20
+ str r0, [sp]
+ str r5, [sp, #4]
+ str r5, [sp, #8]
+ ldr r0, [r4]
+ mov r3, #6
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0x18]
+ mov r0, #0x7d
+ bl FUN_0200687C
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x94
+ str r1, [r0]
+ mov r0, #4
+ add r4, #0x98
+ str r0, [r4]
+ b _021D985C
+_021D90CE:
+ mov r1, #0x12
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ beq _021D90DC
+_021D90DA:
+ b _021D985C
+_021D90DC:
+ mov r0, #0x2f
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D90E2:
+ mov r0, #1
+ mov r1, #0x10
+ add r2, r5, #0
+ mov r3, #0xb
+ str r0, [sp]
+ bl FUN_0200A208
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ mov r1, #0x10
+ add r2, r5, #0
+ mov r3, #0xd
+ bl FUN_0200A208
+ mov r0, #0x33
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9106:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D91F6
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D91F6
+ mov r0, #1
+ add r1, r5, #0
+ mov r2, #0x10
+ mov r3, #0xb
+ str r0, [sp]
+ bl FUN_0200A208
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ add r1, r5, #0
+ mov r2, #0x10
+ mov r3, #0xd
+ bl FUN_0200A208
+ mov r0, #0x34
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D913E:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D91F6
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D91F6
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #4
+ mov r1, #0x10
+ add r2, r5, #0
+ mov r3, #0xb
+ bl FUN_0200A208
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #4
+ mov r1, #0x10
+ add r2, r5, #0
+ mov r3, #0xd
+ bl FUN_0200A208
+ mov r0, #0x35
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9178:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D91F6
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D91F6
+ mov r0, #0x36
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9192:
+ bl MOD59_021D82A0
+ mov r0, #6
+ add r1, r5, #0
+ bl FUN_0201797C
+ add r0, r4, #0
+ add r1, r5, #0
+ add r0, #0x94
+ str r1, [r0]
+ add r1, r4, #0
+ add r0, r4, #0
+ add r1, #0x94
+ bl MOD59_021D86BC
+ add r0, r4, #0
+ add r1, r5, #0
+ add r0, #0x8b
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8234
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x10
+ add r1, r5, #0
+ add r2, r0, #0
+ mov r3, #0xb
+ bl FUN_0200A208
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x10
+ add r1, r5, #0
+ add r2, r0, #0
+ mov r3, #0xd
+ bl FUN_0200A208
+ mov r0, #0x37
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D91E4:
+ add r1, r4, #0
+ add r1, #0x94
+ bl MOD59_021D86BC
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ beq _021D91F8
+_021D91F6:
+ b _021D985C
+_021D91F8:
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x38
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9208:
+ add r1, r4, #0
+ add r1, #0x94
+ bl MOD59_021D86BC
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x39
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D921A:
+ mov r1, #0x28
+ bl MOD59_021D7BEC
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x3a
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D922A:
+ mov r1, #0x13
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D92FA
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ mov r0, #0x3b
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9244:
+ mov r1, #2
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D92FA
+ add r0, r4, #0
+ bl MOD59_021D8914
+ mov r0, #0x3c
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D925C:
+ mov r1, #0x1e
+ bl MOD59_021D7BEC
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x3d
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D926C:
+ mov r1, #0x14
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x3e
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D927E:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x3f
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9290:
+ bl MOD59_021D84E8
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x89
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #6
+ add r0, #0x8a
+ strb r1, [r0]
+ add r0, r4, #0
+ bl MOD59_021D8140
+ add r2, r5, #0
+ add r3, r2, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ sub r3, #0x30
+ bl FUN_020179E0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ add r2, r5, #0
+ mov r3, #0x30
+ bl FUN_020179E0
+ mov r0, #0x40
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D92CA:
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x41
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D92DC:
+ mov r1, #2
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D92FA
+ mov r0, #0x42
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D92EE:
+ mov r1, #0x15
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ beq _021D92FC
+_021D92FA:
+ b _021D985C
+_021D92FC:
+ add r0, r4, #0
+ add r1, r5, #0
+ add r0, #0x84
+ str r1, [r0]
+ mov r0, #0x43
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D930A:
+ ldr r0, _021D9370 ; =0x021C48B8
+ mov r1, #1
+ ldr r0, [r0, #0x48]
+ and r1, r0
+ cmp r1, #1
+ bne _021D933C
+ mov r0, #6
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ mov r1, #0xa
+ add r0, #0x80
+ str r1, [r0]
+ mov r0, #2
+ str r0, [r4, #0x78]
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D9336
+ mov r0, #0x44
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9336:
+ mov r0, #0x46
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D933C:
+ mov r1, #0x20
+ and r1, r0
+ cmp r1, #0x20
+ beq _021D934C
+ mov r1, #0x10
+ and r0, r1
+ cmp r0, #0x10
+ bne _021D9368
+_021D934C:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D935A
+ mov r1, #1
+ b _021D935C
+_021D935A:
+ mov r1, #0
+_021D935C:
+ add r0, r4, #0
+ add r0, #0x84
+ str r1, [r0]
+ ldr r0, _021D9380 ; =0x000005DC
+ bl FUN_020054C8
+_021D9368:
+ add r0, r4, #0
+ bl MOD59_021D8504
+ b _021D985C
+ .align 2, 0
+_021D9370: .word 0x021C48B8
+_021D9374: .word 0x021D9DC0
+_021D9378: .word 0x0000FFFF
+_021D937C: .word 0x00000706
+_021D9380: .word 0x000005DC
+_021D9384:
+ mov r1, #2
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9414
+ mov r0, #0x45
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9396:
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD59_021D8460
+ cmp r0, #1
+ bne _021D9414
+ add r0, r4, #0
+ bl MOD59_021D8618
+ mov r0, #0x48
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D93AE:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9414
+ mov r0, #0x47
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D93C0:
+ mov r1, #2
+ add r2, r5, #0
+ bl MOD59_021D8460
+ cmp r0, #1
+ bne _021D9414
+ add r0, r4, #0
+ bl MOD59_021D8618
+ mov r0, #0x48
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D93D8:
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D93E4
+ mov r1, #0x16
+ b _021D93E6
+_021D93E4:
+ mov r1, #0x17
+_021D93E6:
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D9414
+ mov r0, #0x49
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D93F8:
+ add r1, r5, #0
+ add r2, r5, #0
+ bl MOD59_021D7D7C
+ cmp r0, #1
+ bne _021D9414
+ ldr r1, [r4, #0x48]
+ sub r0, r5, #2
+ cmp r1, r0
+ beq _021D941C
+ cmp r1, #1
+ beq _021D9416
+ cmp r1, #2
+ beq _021D941C
+_021D9414:
+ b _021D985C
+_021D9416:
+ mov r0, #0x4b
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D941C:
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_02018744
+ mov r0, #0x4a
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D942A:
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D9436
+ mov r1, #1
+ b _021D9438
+_021D9436:
+ mov r1, #2
+_021D9438:
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9530
+ mov r0, #0x3f
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D944A:
+ mov r1, #0x18
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D9530
+ mov r0, #0x4c
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D945C:
+ add r0, #0x84
+ ldr r1, [r0]
+ ldr r0, [r4, #0x70]
+ str r1, [r0, #4]
+ ldr r0, _021D9778 ; =0x020FA5FC
+ ldr r1, [r4, #0x70]
+ ldr r2, [r4]
+ bl FUN_02006234
+ str r0, [r4, #0x14]
+ mov r0, #0x4d
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9476:
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #3
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #1
+ bl FUN_0201797C
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D94AE
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201797C
+ add r2, r5, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_020179E0
+ b _021D94C2
+_021D94AE:
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ add r2, r5, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_020179E0
+_021D94C2:
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0x4e
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D94DE:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D9530
+ mov r0, #0x4f
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D94EC:
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D94F8
+ mov r1, #0x19
+ b _021D94FA
+_021D94F8:
+ mov r1, #0x1a
+_021D94FA:
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D9530
+ mov r0, #0x50
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D950C:
+ add r1, r5, #0
+ add r2, r5, #0
+ bl MOD59_021D7D7C
+ cmp r0, #1
+ bne _021D9530
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ ldr r1, [r4, #0x48]
+ sub r0, r5, #2
+ cmp r1, r0
+ beq _021D953C
+ cmp r1, #1
+ beq _021D9532
+ cmp r1, #2
+ beq _021D953C
+_021D9530:
+ b _021D985C
+_021D9532:
+ mov r0, #0x52
+ str r0, [r4, #0x10]
+ mov r0, #0x51
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D953C:
+ ldr r0, [r4, #0x70]
+ ldr r0, [r0, #0x18]
+ bl FUN_02021A4C
+ mov r0, #0x3f
+ str r0, [r4, #0x10]
+ mov r0, #0x51
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D954E:
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D955A
+ mov r1, #1
+ b _021D955C
+_021D955A:
+ mov r1, #2
+_021D955C:
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9616
+ ldr r0, [r4, #0x10]
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D956E:
+ add r1, r4, #0
+ mov r2, #1
+ add r1, #0x89
+ strb r2, [r1]
+ add r1, r4, #0
+ add r1, #0x8a
+ strb r5, [r1]
+ bl MOD59_021D8140
+ mov r0, #0x53
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9586:
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9616
+ mov r0, #0x54
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9598:
+ mov r1, #0x1b
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D9616
+ mov r0, #0x55
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D95AA:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9616
+ mov r0, #0x56
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D95BC:
+ add r1, r4, #0
+ mov r2, #0xa
+ add r1, #0x89
+ strb r2, [r1]
+ add r1, r4, #0
+ add r1, #0x8a
+ strb r5, [r1]
+ bl MOD59_021D8140
+ mov r0, #0x57
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D95D4:
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D9616
+ mov r0, #0x58
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D95E6:
+ mov r1, #0x1c
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D9616
+ mov r0, #0x59
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D95F8:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D8460
+ cmp r0, #1
+ bne _021D9616
+ mov r0, #0x5a
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D960A:
+ mov r1, #2
+ mov r2, #1
+ bl MOD59_021D7D7C
+ cmp r0, #1
+ beq _021D9618
+_021D9616:
+ b _021D985C
+_021D9618:
+ ldr r0, [r4, #0x48]
+ cmp r0, #5
+ bhi _021D971A
+ add r1, r0, r0
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D962A: ; jump table
+ .short _021D985C - _021D962A - 2 ; case 0
+ .short _021D9636 - _021D962A - 2 ; case 1
+ .short _021D963C - _021D962A - 2 ; case 2
+ .short _021D963C - _021D962A - 2 ; case 3
+ .short _021D963C - _021D962A - 2 ; case 4
+ .short _021D963C - _021D962A - 2 ; case 5
+_021D9636:
+ mov r0, #0x5c
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D963C:
+ ldr r1, _021D977C ; =0x020ECAC0
+ ldrb r1, [r1]
+ cmp r1, #0xa
+ bne _021D964C
+ sub r0, r0, #1
+ lsl r1, r0, #3
+ ldr r0, _021D9780 ; =0x021D9F40
+ b _021D9652
+_021D964C:
+ sub r0, r0, #1
+ lsl r1, r0, #3
+ ldr r0, _021D9784 ; =0x021D9F68
+_021D9652:
+ ldr r1, [r0, r1]
+ ldr r0, [r4, #0x4c]
+ bl FUN_0200A914
+ add r6, r0, #0
+ ldr r0, [r4, #0x74]
+ add r1, r6, #0
+ ldr r0, [r0, #0x18]
+ bl FUN_02021A74
+ add r0, r6, #0
+ bl FUN_02021A20
+ mov r0, #0x5b
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9672:
+ mov r1, #1
+ mov r2, #2
+ bl MOD59_021D8460
+ cmp r0, #1
+ bne _021D971A
+ mov r0, #0x5f
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9684:
+ ldr r0, _021D9778 ; =0x020FA5FC
+ ldr r1, [r4, #0x74]
+ ldr r2, [r4]
+ bl FUN_02006234
+ str r0, [r4, #0x14]
+ mov r0, #0x5d
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9696:
+ add r0, r5, #0
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #3
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201797C
+ add r2, r5, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #0x5e
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D96DE:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D971A
+ mov r0, #0x5f
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D96EC:
+ mov r1, #0x1d
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D971A
+ mov r0, #0x60
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D96FE:
+ add r1, r5, #0
+ add r2, r5, #0
+ bl MOD59_021D7D7C
+ cmp r0, #1
+ bne _021D971A
+ ldr r1, [r4, #0x48]
+ sub r0, r5, #2
+ cmp r1, r0
+ beq _021D972A
+ cmp r1, #1
+ beq _021D971C
+ cmp r1, #2
+ beq _021D972A
+_021D971A:
+ b _021D985C
+_021D971C:
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ mov r0, #0x61
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D972A:
+ ldr r0, [r4, #0x74]
+ ldr r0, [r0, #0x18]
+ bl FUN_02021A4C
+ mov r0, #0x58
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9738:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ beq _021D9746
+ b _021D985C
+_021D9746:
+ mov r0, #0x62
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D974C:
+ add r1, r4, #0
+ mov r2, #1
+ add r1, #0x89
+ strb r2, [r1]
+ add r1, r4, #0
+ add r1, #0x8a
+ strb r5, [r1]
+ bl MOD59_021D8140
+ mov r0, #0x63
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9764:
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D985C
+ mov r0, #0x64
+ str r0, [r4, #0xc]
+ b _021D985C
+ nop
+_021D9778: .word 0x020FA5FC
+_021D977C: .word 0x020ECAC0
+_021D9780: .word 0x021D9F40
+_021D9784: .word 0x021D9F68
+_021D9788:
+ mov r1, #0x1e
+ bl MOD59_021D7BEC
+ cmp r0, #1
+ bne _021D985C
+ mov r0, #0x65
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9798:
+ mov r1, #0x1e
+ mov r2, #1
+ bl MOD59_021D7C44
+ cmp r0, #1
+ bne _021D985C
+ add r0, r5, #0
+ mov r1, #0x32
+ bl FUN_020053CC
+ mov r0, #0x66
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D97B2:
+ mov r1, #1
+ add r2, r1, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D985C
+ ldr r0, [r4, #0x18]
+ add r1, r5, #0
+ bl FUN_02018744
+ mov r0, #0x67
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D97CC:
+ mov r1, #0x1e
+ bl MOD59_021D7BEC
+ cmp r0, #1
+ bne _021D985C
+ mov r0, #0x68
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D97DC:
+ add r1, r4, #0
+ add r1, #0x84
+ ldr r1, [r1]
+ cmp r1, #0
+ bne _021D97FA
+ add r1, r4, #0
+ mov r2, #2
+ add r1, #0x89
+ strb r2, [r1]
+ add r1, r4, #0
+ add r1, #0x8a
+ strb r5, [r1]
+ bl MOD59_021D8140
+ b _021D980C
+_021D97FA:
+ add r1, r4, #0
+ mov r2, #6
+ add r1, #0x89
+ strb r2, [r1]
+ add r1, r4, #0
+ add r1, #0x8a
+ strb r5, [r1]
+ bl MOD59_021D8140
+_021D980C:
+ mov r0, #0x69
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9812:
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD59_021D7A68
+ cmp r0, #1
+ bne _021D985C
+ add r0, r4, #0
+ bl MOD59_021D8624
+ mov r0, #0x6a
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D982A:
+ mov r1, #0x1e
+ bl MOD59_021D7BEC
+ cmp r0, #1
+ bne _021D985C
+ mov r0, #0x6b
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D983A:
+ bl MOD59_021D8634
+ cmp r0, #1
+ bne _021D985C
+ mov r0, #0x6c
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D9848:
+ ldr r0, _021D9864 ; =0x021D9DDC
+ ldr r2, [r4]
+ add r1, r5, #0
+ bl FUN_02006234
+ str r0, [r4, #0x14]
+ mov r0, #0x6d
+ str r0, [r4, #0xc]
+ b _021D985C
+_021D985A:
+ mov r5, #1
+_021D985C:
+ add r0, r5, #0
+ add sp, #0x30
+ pop {r4, r5, r6, pc}
+ nop
+_021D9864: .word 0x021D9DDC
+ thumb_func_end MOD59_021D8920
+
+ thumb_func_start MOD59_021D9868
+MOD59_021D9868: ; 0x021D9868
+ push {r4, lr}
+ mov r2, #1
+ add r4, r0, #0
+ mov r0, #3
+ mov r1, #0x53
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ add r0, r4, #0
+ mov r1, #0x28
+ mov r2, #0x53
+ bl FUN_02006268
+ mov r1, #0
+ mov r2, #0x28
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x53
+ str r0, [r4]
+ mov r0, #0
+ str r0, [r4, #0x24]
+ mov r0, #1
+ pop {r4, pc}
+ thumb_func_end MOD59_021D9868
+
+ thumb_func_start MOD59_021D9898
+MOD59_021D9898: ; 0x021D9898
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ bl FUN_02006278
+ ldr r1, [r5]
+ add r4, r0, #0
+ mov r6, #0
+ cmp r1, #5
+ bls _021D98AE
+ b _021D99E2
+_021D98AE:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D98BA: ; jump table
+ .short _021D98C6 - _021D98BA - 2 ; case 0
+ .short _021D992C - _021D98BA - 2 ; case 1
+ .short _021D9952 - _021D98BA - 2 ; case 2
+ .short _021D997C - _021D98BA - 2 ; case 3
+ .short _021D998E - _021D98BA - 2 ; case 4
+ .short _021D99C0 - _021D98BA - 2 ; case 5
+_021D98C6:
+ add r0, r6, #0
+ add r1, r6, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ add r1, r6, #0
+ bl FUN_0200E3A0
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D99E8 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D99EC ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ add r0, r4, #0
+ bl MOD59_021D9A20
+ add r0, r4, #0
+ bl MOD59_021D9C48
+ ldr r0, _021D99F0 ; =MOD59_021D9A14
+ add r1, r4, #0
+ bl FUN_02015F10
+ bl FUN_0201E788
+ mov r0, #0x3c
+ str r0, [r4, #0x24]
+ mov r0, #1
+ str r0, [r5]
+ b _021D99E2
+_021D992C:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021D9938
+ sub r0, r0, #1
+ str r0, [r4, #0x24]
+ b _021D99E2
+_021D9938:
+ ldr r0, _021D99F4 ; =0x00000406
+ bl FUN_0200414C
+ ldr r1, _021D99F4 ; =0x00000406
+ mov r0, #4
+ mov r2, #1
+ bl FUN_0200433C
+ mov r0, #0x5a
+ str r0, [r4, #0x24]
+ mov r0, #2
+ str r0, [r5]
+ b _021D99E2
+_021D9952:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021D995E
+ sub r0, r0, #1
+ str r0, [r4, #0x24]
+ b _021D99E2
+_021D995E:
+ str r6, [r4, #0x24]
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r3, r6, #0
+ bl FUN_0200E1D0
+ mov r0, #3
+ str r0, [r5]
+ b _021D99E2
+_021D997C:
+ bl MOD59_021D9D78
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D99E2
+ mov r0, #4
+ str r0, [r5]
+ b _021D99E2
+_021D998E:
+ bl MOD59_021D9D78
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x28
+ mov r3, #0x30
+ bl MOD59_021D9C74
+ cmp r0, #1
+ bne _021D99E2
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #5
+ str r0, [r5]
+ b _021D99E2
+_021D99C0:
+ bl MOD59_021D9D78
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D99E2
+ add r0, r4, #0
+ bl MOD59_021D9C68
+ add r0, r4, #0
+ bl MOD59_021D9BD0
+ add r0, r6, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r6, #1
+_021D99E2:
+ add r0, r6, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D99E8: .word 0xFFFFE0FF
+_021D99EC: .word 0x04001000
+_021D99F0: .word MOD59_021D9A14
+_021D99F4: .word 0x00000406
+ thumb_func_end MOD59_021D9898
+
+ thumb_func_start MOD59_021D99F8
+MOD59_021D99F8: ; 0x021D99F8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ ldr r4, [r0]
+ add r0, r5, #0
+ bl FUN_0200627C
+ add r0, r4, #0
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D99F8
+
+ thumb_func_start MOD59_021D9A14
+MOD59_021D9A14: ; 0x021D9A14
+ ldr r3, _021D9A1C ; =0x0201AB61
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021D9A1C: .word 0x0201AB61
+ thumb_func_end MOD59_021D9A14
+
+ thumb_func_start MOD59_021D9A20
+MOD59_021D9A20: ; 0x021D9A20
+ push {r3, r4, r5, lr}
+ sub sp, #0xb8
+ ldr r5, _021D9BB4 ; =0x021DA0D4
+ add r4, r0, #0
+ add r3, sp, #0x90
+ mov r2, #5
+_021D9A2C:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D9A2C
+ add r0, sp, #0x90
+ bl FUN_0201E66C
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0x80
+ ldr r5, _021D9BB8 ; =0x021DA054
+ str r0, [r4, #4]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D9BBC ; =0x021DA080
+ add r3, sp, #0x64
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r3, [r4]
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _021D9BC0 ; =0x021DA09C
+ add r3, sp, #0x48
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ add r3, r1, #0
+ bl FUN_02016C18
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #1
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ bl FUN_0200687C
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #4
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ bl FUN_020068C8
+ ldr r5, _021D9BC4 ; =0x021DA064
+ add r3, sp, #0x2c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #2
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ mov r3, #1
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #5
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ mov r3, #1
+ bl FUN_020068C8
+ ldr r5, _021D9BC8 ; =0x021DA0B8
+ add r3, sp, #0x10
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ ldr r0, [r4]
+ mov r3, #3
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ mov r1, #3
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0x88
+ add r3, r1, #0
+ bl FUN_020068C8
+ mov r2, #0
+ str r2, [sp]
+ ldr r0, [r4]
+ mov r1, #6
+ str r0, [sp, #4]
+ mov r0, #0x88
+ add r3, r2, #0
+ bl FUN_02006930
+ ldr r2, [r4]
+ mov r0, #0
+ mov r1, #0x20
+ bl FUN_02002ED0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02017FE4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ mov r2, #0xc
+ ldr r0, _021D9BCC ; =0x04000050
+ mov r1, #2
+ mov r3, #4
+ str r2, [sp]
+ bl G2x_SetBlendAlpha_
+ add sp, #0xb8
+ pop {r3, r4, r5, pc}
+ nop
+_021D9BB4: .word 0x021DA0D4
+_021D9BB8: .word 0x021DA054
+_021D9BBC: .word 0x021DA080
+_021D9BC0: .word 0x021DA09C
+_021D9BC4: .word 0x021DA064
+_021D9BC8: .word 0x021DA0B8
+_021D9BCC: .word 0x04000050
+ thumb_func_end MOD59_021D9A20
+
+ thumb_func_start MOD59_021D9BD0
+MOD59_021D9BD0: ; 0x021D9BD0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0201797C
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #3
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #5
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #6
+ mov r1, #0
+ bl FUN_0201797C
+ mov r0, #7
+ mov r1, #0
+ bl FUN_0201797C
+ ldr r0, _021D9C44 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r0, [r4, #4]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ pop {r4, pc}
+ nop
+_021D9C44: .word 0x04000050
+ thumb_func_end MOD59_021D9BD0
+
+ thumb_func_start MOD59_021D9C48
+MOD59_021D9C48: ; 0x021D9C48
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r2, _021D9C64 ; =0x00000225
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [r4, #8]
+ bl FUN_0201BD5C
+ mov r0, #0
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+ .align 2, 0
+_021D9C64: .word 0x00000225
+ thumb_func_end MOD59_021D9C48
+
+ thumb_func_start MOD59_021D9C68
+MOD59_021D9C68: ; 0x021D9C68
+ ldr r3, _021D9C70 ; =0x0200A8B9
+ ldr r0, [r0, #8]
+ bx r3
+ nop
+_021D9C70: .word 0x0200A8B9
+ thumb_func_end MOD59_021D9C68
+
+ thumb_func_start MOD59_021D9C74
+MOD59_021D9C74: ; 0x021D9C74
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ str r1, [sp, #0x10]
+ add r7, r3, #0
+ mov r5, #0
+ cmp r0, #3
+ bhi _021D9D66
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9C92: ; jump table
+ .short _021D9C9A - _021D9C92 - 2 ; case 0
+ .short _021D9D24 - _021D9C92 - 2 ; case 1
+ .short _021D9D36 - _021D9C92 - 2 ; case 2
+ .short _021D9D50 - _021D9C92 - 2 ; case 3
+_021D9C9A:
+ mov r0, #2
+ add r1, r5, #0
+ bl FUN_0201797C
+ mov r0, #1
+ ldr r1, [r4]
+ lsl r0, r0, #0xa
+ bl FUN_020219F4
+ add r6, r0, #0
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0x10]
+ add r2, r6, #0
+ bl FUN_0200A8E0
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ ldr r2, _021D9D6C ; =0x021DA04C
+ add r1, #0x10
+ bl FUN_02019150
+ add r1, r5, #0
+ mov r0, #1
+ lsl r0, r0, #8
+ str r0, [sp]
+ mov r0, #0xc0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x10
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r0, #0
+ bl FUN_02002F08
+ mov r1, #1
+ lsl r1, r1, #8
+ sub r0, r1, r0
+ lsr r3, r0, #1
+ str r7, [sp]
+ add r1, r5, #0
+ ldr r0, _021D9D70 ; =0x000F0200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x10
+ add r2, r6, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ add r0, #0x10
+ bl FUN_020191D0
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201797C
+ mov r0, #0xf0
+ str r0, [r4, #0x24]
+ mov r0, #1
+ str r0, [r4, #0xc]
+ b _021D9D66
+_021D9D24:
+ ldr r0, [r4, #0x24]
+ cmp r0, #0
+ beq _021D9D30
+ sub r0, r0, #1
+ str r0, [r4, #0x24]
+ b _021D9D66
+_021D9D30:
+ mov r0, #2
+ str r0, [r4, #0xc]
+ b _021D9D66
+_021D9D36:
+ ldr r0, _021D9D74 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ and r0, r1
+ cmp r0, #1
+ beq _021D9D4A
+ mov r0, #2
+ and r0, r1
+ cmp r0, #2
+ bne _021D9D66
+_021D9D4A:
+ mov r0, #3
+ str r0, [r4, #0xc]
+ b _021D9D66
+_021D9D50:
+ add r0, r4, #0
+ add r0, #0x10
+ bl FUN_02019178
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_02018744
+ add r0, r5, #0
+ str r0, [r4, #0xc]
+ mov r5, #1
+_021D9D66:
+ add r0, r5, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9D6C: .word 0x021DA04C
+_021D9D70: .word 0x000F0200
+_021D9D74: .word 0x021C48B8
+ thumb_func_end MOD59_021D9C74
+
+ thumb_func_start MOD59_021D9D78
+MOD59_021D9D78: ; 0x021D9D78
+ push {r3, lr}
+ ldr r1, [r0, #0x20]
+ mov r2, #3
+ add r3, r1, #4
+ str r3, [r0, #0x20]
+ ldr r0, [r0, #4]
+ mov r1, #1
+ asr r3, r3, #4
+ bl FUN_020179E0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD59_021D9D78
+
+ .section .rodata
+ ; 0x021D9D90
+ .incbin "baserom.nds", 0x2AC6B0, 0x36C
diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s
new file mode 100644
index 00000000..6318e002
--- /dev/null
+++ b/arm9/modules/60/asm/module_60.s
@@ -0,0 +1,1491 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD60_021D74E0
+MOD60_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ bl FUN_0200628C
+ mov r2, #1
+ add r5, r0, #0
+ mov r0, #3
+ mov r1, #0x26
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ mov r1, #0xad
+ add r0, r4, #0
+ lsl r1, r1, #2
+ mov r2, #0x26
+ bl FUN_02006268
+ mov r2, #0xad
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ bl FUN_02024FD8
+ ldrh r1, [r4, #0x18]
+ mov r2, #0xf
+ lsl r0, r0, #0x10
+ bic r1, r2
+ lsr r2, r0, #0x10
+ mov r0, #0xf
+ and r0, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_0202502C
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1f
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x40
+ lsr r0, r0, #0x19
+ bic r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_02025048
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1f
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x80
+ lsr r0, r0, #0x18
+ bic r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_02025010
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1e
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x30
+ lsr r0, r0, #0x1a
+ bic r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_02025064
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1e
+ ldrh r2, [r4, #0x18]
+ ldr r1, _021D75A8 ; =0xFFFFFCFF
+ lsr r0, r0, #0x16
+ and r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_02025084
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r0, r0, #0x1b
+ ldrh r2, [r4, #0x18]
+ ldr r1, _021D75AC ; =0xFFFF83FF
+ lsr r0, r0, #0x11
+ and r1, r2
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ mov r0, #0x26
+ str r0, [r4]
+ str r5, [r4, #0x1c]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D75A8: .word 0xFFFFFCFF
+_021D75AC: .word 0xFFFF83FF
+ thumb_func_end MOD60_021D74E0
+
+ thumb_func_start MOD60_021D75B0
+MOD60_021D75B0: ; 0x021D75B0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1e
+ cmp r0, #1
+ bne _021D7680
+ ldrh r1, [r4, #0x18]
+ mov r0, #0xf
+ bic r1, r0
+ add r0, r4, #0
+ add r0, #0x5e
+ ldrh r2, [r0]
+ mov r0, #0xf
+ and r2, r0
+ orr r1, r2
+ strh r1, [r4, #0x18]
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x40
+ add r0, #0xf7
+ bic r1, r2
+ add r2, r4, #0
+ add r2, #0xb2
+ ldrh r2, [r2]
+ lsl r2, r2, #0x1f
+ lsr r2, r2, #0x19
+ orr r1, r2
+ strh r1, [r4, #0x18]
+ ldrh r0, [r4, r0]
+ ldrh r1, [r4, #0x18]
+ mov r2, #0x80
+ lsl r0, r0, #0x1f
+ bic r1, r2
+ lsr r0, r0, #0x18
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ ldrh r1, [r4, #0x18]
+ mov r0, #0x30
+ bic r1, r0
+ ldr r0, _021D76AC ; =0x0000015A
+ ldrh r2, [r4, r0]
+ lsl r2, r2, #0x1e
+ lsr r2, r2, #0x1a
+ orr r1, r2
+ strh r1, [r4, #0x18]
+ ldrh r2, [r4, #0x18]
+ ldr r1, _021D76B0 ; =0xFFFFFCFF
+ and r1, r2
+ add r2, r0, #0
+ add r2, #0x54
+ ldrh r2, [r4, r2]
+ add r0, #0xa8
+ lsl r2, r2, #0x1e
+ lsr r2, r2, #0x16
+ orr r1, r2
+ strh r1, [r4, #0x18]
+ ldrh r0, [r4, r0]
+ ldrh r2, [r4, #0x18]
+ ldr r1, _021D76B4 ; =0xFFFF83FF
+ lsl r0, r0, #0x1b
+ and r1, r2
+ lsr r0, r0, #0x11
+ orr r0, r1
+ strh r0, [r4, #0x18]
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1c
+ bl FUN_02024FE0
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1f
+ bl FUN_02025034
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x1f
+ bl FUN_02025050
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1e
+ bl FUN_02025018
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x16
+ lsr r1, r1, #0x1e
+ bl FUN_0202506C
+ ldrh r1, [r4, #0x18]
+ ldr r0, [r4, #0x1c]
+ lsl r1, r1, #0x11
+ lsr r1, r1, #0x1b
+ bl FUN_0202508C
+ b _021D769A
+_021D7680:
+ cmp r0, #2
+ bne _021D769A
+ ldrh r0, [r4, #0x18]
+ lsl r0, r0, #0x1a
+ lsr r0, r0, #0x1e
+ bl FUN_02004D60
+ ldrh r1, [r4, #0x18]
+ mov r0, #0
+ lsl r1, r1, #0x16
+ lsr r1, r1, #0x1e
+ bl FUN_02024F9C
+_021D769A:
+ add r0, r5, #0
+ bl FUN_0200627C
+ ldr r0, [r4]
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_021D76AC: .word 0x0000015A
+_021D76B0: .word 0xFFFFFCFF
+_021D76B4: .word 0xFFFF83FF
+ thumb_func_end MOD60_021D75B0
+
+ thumb_func_start MOD60_021D76B8
+MOD60_021D76B8: ; 0x021D76B8
+ push {r3, r4, lr}
+ sub sp, #0xc
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #4
+ bhi _021D77A0
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D76D4: ; jump table
+ .short _021D76DE - _021D76D4 - 2 ; case 0
+ .short _021D7706 - _021D76D4 - 2 ; case 1
+ .short _021D7714 - _021D76D4 - 2 ; case 2
+ .short _021D777E - _021D76D4 - 2 ; case 3
+ .short _021D778C - _021D76D4 - 2 ; case 4
+_021D76DE:
+ bl MOD60_021D7834
+ cmp r0, #0
+ bne _021D76EC
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D76EC:
+ mov r3, #0
+ str r3, [r4, #0xc]
+ mov r0, #6
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ bl FUN_0200E1D0
+ b _021D77A0
+_021D7706:
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D77A0
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D7714:
+ ldr r0, _021D77AC ; =0x021C48B8
+ mov r1, #1
+ ldr r0, [r0, #0x48]
+ tst r1, r0
+ beq _021D773C
+ ldr r1, [r4, #0x10]
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x1d
+ cmp r1, #6
+ bne _021D773C
+ ldr r0, _021D77B0 ; =0x0000061B
+ bl FUN_020054C8
+ ldr r1, [r4, #0x10]
+ mov r0, #3
+ bic r1, r0
+ mov r0, #1
+ orr r0, r1
+ str r0, [r4, #0x10]
+ b _021D774E
+_021D773C:
+ mov r1, #2
+ tst r0, r1
+ beq _021D774E
+ ldr r2, [r4, #0x10]
+ mov r0, #3
+ bic r2, r0
+ add r0, r2, #0
+ orr r0, r1
+ str r0, [r4, #0x10]
+_021D774E:
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1e
+ beq _021D7772
+ mov r1, #0
+ str r1, [r4, #0xc]
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r2, r1, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ b _021D77A0
+_021D7772:
+ add r0, r4, #0
+ bl MOD60_021D801C
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D777E:
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D77A0
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D778C:
+ bl MOD60_021D78E8
+ cmp r0, #0
+ beq _021D779A
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, pc}
+_021D779A:
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D77A0:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D77AC: .word 0x021C48B8
+_021D77B0: .word 0x0000061B
+ thumb_func_end MOD60_021D76B8
+
+ thumb_func_start MOD60_021D77B4
+MOD60_021D77B4: ; 0x021D77B4
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D77D0 ; =0x021D8140
+ add r3, sp, #0
+ mov r2, #5
+_021D77BE:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D77BE
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D77D0: .word 0x021D8140
+ thumb_func_end MOD60_021D77B4
+
+ thumb_func_start MOD60_021D77D4
+MOD60_021D77D4: ; 0x021D77D4
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ lsl r0, r0, #0xa
+ lsr r0, r0, #0x1f
+ beq _021D7804
+ ldr r2, _021D7824 ; =0x00000202
+ mov r1, #1
+ ldrh r0, [r4, r2]
+ add r2, #0x39
+ mov r3, #0xf
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r4]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x14]
+ bl FUN_0200CD68
+ ldr r1, [r4, #0x10]
+ ldr r0, _021D7828 ; =0xFFDFFFFF
+ and r0, r1
+ str r0, [r4, #0x10]
+_021D7804:
+ bl FUN_0200BC30
+ bl FUN_020AEEB8
+ ldr r0, [r4, #0x14]
+ bl FUN_0201AB60
+ ldr r3, _021D782C ; =0x027E0000
+ ldr r1, _021D7830 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021D7824: .word 0x00000202
+_021D7828: .word 0xFFDFFFFF
+_021D782C: .word 0x027E0000
+_021D7830: .word 0x00003FF8
+ thumb_func_end MOD60_021D77D4
+
+ thumb_func_start MOD60_021D7834
+MOD60_021D7834: ; 0x021D7834
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ cmp r1, #0
+ beq _021D7848
+ cmp r1, #1
+ beq _021D7888
+ cmp r1, #2
+ beq _021D78A2
+ b _021D78D0
+_021D7848:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D78DC ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D78E0 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ bl MOD60_021D77B4
+ mov r0, #0
+ bl FUN_0200E388
+ mov r0, #1
+ bl FUN_0200E388
+ add r0, r4, #0
+ bl MOD60_021D7990
+ b _021D78D0
+_021D7888:
+ bl MOD60_021D7A40
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x1a
+ mov r2, #0xce
+ bl FUN_0200A86C
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ bl MOD60_021D7DF8
+ b _021D78D0
+_021D78A2:
+ bl MOD60_021D7BA4
+ add r0, r4, #0
+ bl MOD60_021D7D18
+ ldr r1, [r4]
+ mov r0, #0x20
+ bl FUN_0201C24C
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ bl FUN_02033F20
+ ldr r0, _021D78E4 ; =MOD60_021D77D4
+ add r1, r4, #0
+ bl FUN_02015F10
+ mov r0, #0
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+_021D78D0:
+ ldr r0, [r4, #8]
+ add r0, r0, #1
+ str r0, [r4, #8]
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_021D78DC: .word 0xFFFFE0FF
+_021D78E0: .word 0x04001000
+_021D78E4: .word MOD60_021D77D4
+ thumb_func_end MOD60_021D7834
+
+ thumb_func_start MOD60_021D78E8
+MOD60_021D78E8: ; 0x021D78E8
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _021D78F8
+ cmp r0, #1
+ beq _021D7946
+ b _021D7978
+_021D78F8:
+ bl FUN_0201C29C
+ ldr r0, [sp]
+ bl MOD60_021D7CD4
+ ldr r6, [sp]
+ mov r7, #0
+_021D7906:
+ add r0, r6, #0
+ add r0, #0x5c
+ ldrh r0, [r0]
+ mov r4, #0
+ cmp r0, #0
+ ble _021D7928
+ add r5, r6, #0
+_021D7914:
+ ldr r0, [r5, #0x60]
+ bl FUN_02021A20
+ add r0, r6, #0
+ add r0, #0x5c
+ ldrh r0, [r0]
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, r0
+ blt _021D7914
+_021D7928:
+ add r7, r7, #1
+ add r6, #0x54
+ cmp r7, #7
+ blt _021D7906
+ ldr r0, [sp]
+ ldr r0, [r0, #0x20]
+ bl FUN_0200A8B8
+ ldr r0, [sp]
+ bl MOD60_021D7B98
+ ldr r0, [sp]
+ bl MOD60_021D7A14
+ b _021D7978
+_021D7946:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7988 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D798C ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ ldr r0, [sp]
+ mov r1, #0
+ str r1, [r0, #8]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D7978:
+ ldr r0, [sp]
+ ldr r0, [r0, #8]
+ add r1, r0, #1
+ ldr r0, [sp]
+ str r1, [r0, #8]
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7988: .word 0xFFFFE0FF
+_021D798C: .word 0x04001000
+ thumb_func_end MOD60_021D78E8
+
+ thumb_func_start MOD60_021D7990
+MOD60_021D7990: ; 0x021D7990
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x80
+ add r6, r0, #0
+ ldr r0, [r6]
+ bl FUN_02016B94
+ add r3, sp, #0
+ ldr r4, _021D7A08 ; =0x021D8114
+ str r0, [r6, #0x14]
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r4, _021D7A0C ; =0x021D8168
+ add r3, sp, #0x10
+ mov r2, #0xe
+_021D79B8:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D79B8
+ ldr r5, _021D7A10 ; =0x021D8104
+ mov r7, #0
+ add r4, sp, #0x10
+_021D79C6:
+ ldr r1, [r5]
+ ldr r0, [r6, #0x14]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r2, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r1, [r5]
+ ldr r0, [r6, #0x14]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl FUN_02018744
+ add r7, r7, #1
+ add r4, #0x1c
+ add r5, r5, #4
+ cmp r7, #4
+ blt _021D79C6
+ mov r0, #0
+ ldr r3, [r6]
+ mov r1, #0x20
+ add r2, r0, #0
+ bl FUN_02017F18
+ ldr r3, [r6]
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ add sp, #0x80
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7A08: .word 0x021D8114
+_021D7A0C: .word 0x021D8168
+_021D7A10: .word 0x021D8104
+ thumb_func_end MOD60_021D7990
+
+ thumb_func_start MOD60_021D7A14
+MOD60_021D7A14: ; 0x021D7A14
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #0x14]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x14]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r4, #0x14]
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD60_021D7A14
+
+ thumb_func_start MOD60_021D7A40
+MOD60_021D7A40: ; 0x021D7A40
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x24
+ add r5, r0, #0
+ ldr r1, [r5]
+ mov r0, #0x49
+ bl FUN_02006670
+ add r4, r0, #0
+ mov r0, #0x49
+ mov r1, #1
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_020169D8
+ add r6, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ add r2, r6, #0
+ bl FUN_02006774
+ add r0, r6, #0
+ add r1, sp, #0x20
+ bl FUN_020B0088
+ ldr r3, [sp, #0x20]
+ mov r1, #0
+ str r1, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0x14]
+ ldr r3, [r3, #0x10]
+ bl FUN_02017E14
+ ldr r3, [sp, #0x20]
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0x14]
+ ldr r3, [r3, #0x10]
+ mov r1, #4
+ bl FUN_02017E14
+ add r0, r6, #0
+ bl FUN_02016A18
+ mov r0, #0x49
+ mov r1, #0
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_020169D8
+ add r6, r0, #0
+ add r0, r4, #0
+ mov r1, #0
+ add r2, r6, #0
+ bl FUN_02006774
+ add r0, r6, #0
+ add r1, sp, #0x1c
+ bl FUN_020B0138
+ ldr r1, [sp, #0x1c]
+ mov r0, #0
+ ldr r1, [r1, #0xc]
+ mov r2, #0x20
+ add r3, r0, #0
+ bl FUN_02017FB4
+ ldr r1, [sp, #0x1c]
+ mov r0, #4
+ ldr r1, [r1, #0xc]
+ mov r2, #0x20
+ mov r3, #0
+ bl FUN_02017FB4
+ add r0, r6, #0
+ bl FUN_02016A18
+ mov r0, #0x49
+ mov r1, #2
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_02016998
+ str r0, [r5, #0x24]
+ ldr r2, [r5, #0x24]
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02006774
+ add r1, r5, #0
+ ldr r0, [r5, #0x24]
+ add r1, #0x28
+ bl FUN_020B0180
+ add r0, r4, #0
+ bl FUN_020066F4
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ mov r1, #2
+ mov r2, #1
+ bl FUN_02018540
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x14]
+ mov r1, #4
+ mov r2, #1
+ bl FUN_02018540
+ ldr r0, [r5, #0x28]
+ mov r1, #0x20
+ str r1, [sp]
+ mov r1, #2
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ mov r1, #0
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ ldrh r2, [r0]
+ add r3, r1, #0
+ lsl r2, r2, #0x15
+ lsr r2, r2, #0x18
+ str r2, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ add r2, r1, #0
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x14]
+ bl FUN_020181EC
+ mov r2, #3
+ add r3, r2, #0
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ sub r3, #0x1b
+ bl FUN_020179E0
+ ldr r0, [r5, #0x14]
+ mov r1, #2
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x14]
+ mov r1, #4
+ bl FUN_0201AC68
+ add sp, #0x24
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD60_021D7A40
+
+ thumb_func_start MOD60_021D7B98
+MOD60_021D7B98: ; 0x021D7B98
+ ldr r3, _021D7BA0 ; =0x02016A19
+ ldr r0, [r0, #0x24]
+ bx r3
+ nop
+_021D7BA0: .word 0x02016A19
+ thumb_func_end MOD60_021D7B98
+
+ thumb_func_start MOD60_021D7BA4
+MOD60_021D7BA4: ; 0x021D7BA4
+ push {r3, r4, lr}
+ sub sp, #0x14
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xc
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0xa
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ mov r2, #1
+ ldr r0, [r4, #0x14]
+ add r1, #0x2c
+ add r3, r2, #0
+ bl FUN_02019064
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #0x1e
+ str r0, [sp, #4]
+ mov r0, #0xe
+ str r0, [sp, #8]
+ mov r0, #0xd
+ str r0, [sp, #0xc]
+ mov r0, #0x22
+ str r0, [sp, #0x10]
+ add r1, r4, #0
+ mov r2, #1
+ ldr r0, [r4, #0x14]
+ add r1, #0x3c
+ add r3, r2, #0
+ bl FUN_02019064
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, _021D7CC8 ; =0x000001C6
+ add r1, r4, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x14]
+ add r1, #0x4c
+ mov r2, #1
+ mov r3, #2
+ bl FUN_02019064
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, [r4]
+ ldr r2, _021D7CCC ; =0x00000232
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ mov r3, #0xe
+ bl FUN_0200CB00
+ ldrh r0, [r4, #0x18]
+ ldr r2, _021D7CD0 ; =0x0000023B
+ mov r1, #1
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1b
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r4]
+ mov r3, #0xf
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x14]
+ bl FUN_0200CD68
+ mov r1, #0x1a
+ ldr r2, [r4]
+ mov r0, #0
+ lsl r1, r1, #4
+ bl FUN_02002ED0
+ mov r1, #0x1a
+ ldr r2, [r4]
+ mov r0, #4
+ lsl r1, r1, #4
+ bl FUN_02002ED0
+ mov r1, #6
+ ldr r2, [r4]
+ mov r0, #0
+ lsl r1, r1, #6
+ bl FUN_02002EEC
+ mov r1, #6
+ ldr r2, [r4]
+ mov r0, #4
+ lsl r1, r1, #6
+ bl FUN_02002EEC
+ add r0, r4, #0
+ add r0, #0x2c
+ mov r1, #0
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x3c
+ mov r1, #0xff
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x4c
+ mov r1, #0xff
+ bl FUN_02019620
+ add r0, r4, #0
+ add r0, #0x4c
+ bl FUN_020192B8
+ add r0, r4, #0
+ add r0, #0x3c
+ bl FUN_020192B8
+ add r0, r4, #0
+ add r0, #0x2c
+ bl FUN_020192B8
+ add r0, r4, #0
+ ldr r2, _021D7CCC ; =0x00000232
+ add r0, #0x3c
+ mov r1, #1
+ mov r3, #0xe
+ bl FUN_0200CCA4
+ add r4, #0x4c
+ ldr r2, _021D7CD0 ; =0x0000023B
+ add r0, r4, #0
+ mov r1, #1
+ mov r3, #0xf
+ bl FUN_0200D0BC
+ add sp, #0x14
+ pop {r3, r4, pc}
+ nop
+_021D7CC8: .word 0x000001C6
+_021D7CCC: .word 0x00000232
+_021D7CD0: .word 0x0000023B
+ thumb_func_end MOD60_021D7BA4
+
+ thumb_func_start MOD60_021D7CD4
+MOD60_021D7CD4: ; 0x021D7CD4
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, #0x3c
+ mov r1, #0
+ bl FUN_0200CCF8
+ add r0, r5, #0
+ add r0, #0x4c
+ mov r1, #0
+ bl FUN_0200D0E0
+ mov r6, #0
+ add r5, #0x2c
+ add r7, r6, #0
+_021D7CF0:
+ lsl r4, r6, #4
+ add r0, r5, r4
+ bl FUN_02019570
+ add r0, r5, r4
+ add r1, r7, #0
+ bl FUN_02019620
+ add r0, r5, r4
+ bl FUN_020192B8
+ add r0, r5, r4
+ bl FUN_02019178
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ cmp r6, #3
+ blo _021D7CF0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD60_021D7CD4
+
+ thumb_func_start MOD60_021D7D18
+MOD60_021D7D18: ; 0x021D7D18
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ ldr r1, [r6]
+ mov r0, #0x28
+ bl FUN_020219F4
+ add r5, r0, #0
+ ldr r0, [r6, #0x20]
+ mov r1, #0
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r3, #2
+ str r3, [sp]
+ mov r1, #0
+ ldr r0, _021D7DEC ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0x2c
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ bl FUN_02021A4C
+ ldr r1, _021D7DF0 ; =0x020ECAC0
+ ldr r0, [r6, #0x20]
+ ldrb r1, [r1]
+ add r2, r5, #0
+ sub r1, #9
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D7DF4 ; =0x0001020F
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ str r1, [sp, #0xc]
+ add r0, #0x4c
+ mov r1, #1
+ add r2, r5, #0
+ mov r3, #4
+ bl FUN_0201BDE0
+ add r7, r6, #0
+ mov r4, #0
+ add r7, #0x3c
+_021D7D7E:
+ add r0, r5, #0
+ bl FUN_02021A4C
+ ldr r0, [r6, #0x20]
+ add r1, r4, #3
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ lsl r0, r4, #4
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _021D7DF4 ; =0x0001020F
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ add r2, r5, #0
+ mov r3, #4
+ bl FUN_0201BDE0
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #7
+ blo _021D7D7E
+ mov r4, #0
+_021D7DB6:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD60_021D7EA4
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #7
+ blo _021D7DB6
+ add r0, r6, #0
+ add r0, #0x2c
+ bl FUN_020191D0
+ add r0, r6, #0
+ add r0, #0x3c
+ bl FUN_020191D0
+ add r6, #0x4c
+ add r0, r6, #0
+ bl FUN_020191D0
+ add r0, r5, #0
+ bl FUN_02021A20
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7DEC: .word 0x00010200
+_021D7DF0: .word 0x020ECAC0
+_021D7DF4: .word 0x0001020F
+ thumb_func_end MOD60_021D7D18
+
+ thumb_func_start MOD60_021D7DF8
+MOD60_021D7DF8: ; 0x021D7DF8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r5, #0
+ add r6, r0, #0
+ str r5, [sp, #4]
+_021D7E02:
+ ldr r0, [sp, #4]
+ ldr r2, [sp, #4]
+ lsl r7, r0, #2
+ ldr r0, _021D7E9C ; =0x021D8124
+ mov r1, #0x54
+ mul r1, r2
+ add r1, r6, r1
+ str r1, [sp]
+ ldr r0, [r0, r7]
+ add r1, #0x5c
+ mov r4, #0
+ strh r0, [r1]
+ cmp r0, #0
+ ble _021D7E44
+_021D7E1E:
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ add r1, r5, #0
+ lsr r5, r0, #0x10
+ ldr r0, [r6, #0x20]
+ add r1, #0xa
+ bl FUN_0200A914
+ ldr r1, [sp]
+ lsl r2, r4, #2
+ add r1, r1, r2
+ str r0, [r1, #0x60]
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, _021D7E9C ; =0x021D8124
+ ldr r0, [r0, r7]
+ cmp r4, r0
+ blt _021D7E1E
+_021D7E44:
+ ldr r0, [sp, #4]
+ add r0, r0, #1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ cmp r0, #7
+ blo _021D7E02
+ ldrh r0, [r6, #0x18]
+ lsl r0, r0, #0x1c
+ lsr r1, r0, #0x1c
+ add r0, r6, #0
+ add r0, #0x5e
+ strh r1, [r0]
+ ldrh r0, [r6, #0x18]
+ lsl r0, r0, #0x19
+ lsr r1, r0, #0x1f
+ add r0, r6, #0
+ add r0, #0xb2
+ strh r1, [r0]
+ ldrh r0, [r6, #0x18]
+ ldr r1, _021D7EA0 ; =0x00000106
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x1f
+ strh r0, [r6, r1]
+ ldrh r0, [r6, #0x18]
+ lsl r0, r0, #0x1a
+ lsr r2, r0, #0x1e
+ add r0, r1, #0
+ add r0, #0x54
+ strh r2, [r6, r0]
+ ldrh r0, [r6, #0x18]
+ lsl r0, r0, #0x16
+ lsr r2, r0, #0x1e
+ add r0, r1, #0
+ add r0, #0xa8
+ strh r2, [r6, r0]
+ ldrh r0, [r6, #0x18]
+ add r1, #0xfc
+ lsl r0, r0, #0x11
+ lsr r0, r0, #0x1b
+ strh r0, [r6, r1]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7E9C: .word 0x021D8124
+_021D7EA0: .word 0x00000106
+ thumb_func_end MOD60_021D7DF8
+
+ thumb_func_start MOD60_021D7EA4
+MOD60_021D7EA4: ; 0x021D7EA4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r0, [sp, #0x10]
+ lsl r0, r1, #4
+ str r0, [sp, #0x18]
+ mov r0, #6
+ str r1, [sp, #0x14]
+ lsl r0, r0, #6
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ ldr r3, _021D8010 ; =0x021D80FC
+ ldr r2, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ ldrsb r2, [r3, r2]
+ ldr r3, [sp, #0x18]
+ add r0, #0x3c
+ add r2, #0x64
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ mov r1, #0xff
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ ldr r0, [sp, #0x14]
+ cmp r0, #5
+ bne _021D7F26
+ add r2, r0, #0
+ ldr r0, [sp, #0x18]
+ mov r1, #0x54
+ str r0, [sp]
+ mov r0, #0xff
+ mul r2, r1
+ ldr r3, [sp, #0x10]
+ str r0, [sp, #4]
+ ldr r0, _021D8014 ; =0x0003040F
+ add r3, r3, r2
+ str r0, [sp, #8]
+ mov r1, #0
+ add r2, r3, #0
+ ldr r0, [sp, #0x10]
+ str r1, [sp, #0xc]
+ add r2, #0x5e
+ ldrh r2, [r2]
+ add r0, #0x3c
+ lsl r2, r2, #2
+ add r2, r3, r2
+ ldr r2, [r2, #0x60]
+ mov r3, #0x94
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ add r0, #0x3c
+ bl FUN_020191D0
+ ldr r0, [sp, #0x10]
+ ldr r1, [r0, #0x10]
+ mov r0, #2
+ lsl r0, r0, #0x14
+ orr r1, r0
+ ldr r0, [sp, #0x10]
+ add sp, #0x24
+ str r1, [r0, #0x10]
+ pop {r4, r5, r6, r7, pc}
+_021D7F26:
+ cmp r0, #3
+ bne _021D7F3C
+ mov r1, #0x54
+ mul r1, r0
+ ldr r0, [sp, #0x10]
+ add r0, r0, r1
+ add r0, #0x5e
+ ldrh r0, [r0]
+ bl FUN_02004D60
+ b _021D7F54
+_021D7F3C:
+ cmp r0, #4
+ bne _021D7F54
+ ldr r1, [sp, #0x14]
+ mov r2, #0x54
+ mul r2, r1
+ ldr r1, [sp, #0x10]
+ mov r0, #0
+ add r1, r1, r2
+ add r1, #0x5e
+ ldrh r1, [r1]
+ bl FUN_02024F9C
+_021D7F54:
+ ldr r0, [sp, #0x14]
+ mov r1, #0x54
+ mul r1, r0
+ ldr r0, [sp, #0x10]
+ mov r7, #0
+ add r5, r0, r1
+ add r0, r5, #0
+ add r0, #0x5c
+ ldrh r0, [r0]
+ add r4, r7, #0
+ cmp r0, #0
+ bls _021D8002
+ bls _021D8002
+ ldr r1, _021D8010 ; =0x021D80FC
+ ldr r0, [sp, #0x14]
+ add r0, r1, r0
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #0x20]
+ add r0, #0x3c
+ str r0, [sp, #0x20]
+_021D7F7E:
+ add r0, r5, #0
+ add r0, #0x5e
+ ldrh r0, [r0]
+ cmp r4, r0
+ bne _021D7F8C
+ ldr r0, _021D8014 ; =0x0003040F
+ b _021D7F8E
+_021D7F8C:
+ ldr r0, _021D8018 ; =0x0001020F
+_021D7F8E:
+ ldr r1, [sp, #0x14]
+ cmp r1, #4
+ bne _021D7FC8
+ lsl r1, r4, #2
+ add r6, r5, r1
+ ldr r1, [sp, #0x18]
+ add r3, r7, #0
+ str r1, [sp]
+ mov r1, #0xff
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x20]
+ ldr r2, [r6, #0x60]
+ mov r1, #0
+ add r3, #0x64
+ bl FUN_0201BDE0
+ mov r0, #0
+ ldr r1, [r6, #0x60]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r0, #0xc
+ add r0, r7, r0
+ lsl r0, r0, #0x18
+ asr r7, r0, #0x18
+ b _021D7FF2
+_021D7FC8:
+ ldr r1, [sp, #0x18]
+ lsl r2, r4, #2
+ str r1, [sp]
+ mov r1, #0xff
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r1, #0
+ str r0, [sp, #0xc]
+ add r2, r5, r2
+ ldr r6, [sp, #0x1c]
+ add r3, r1, #0
+ ldrsb r6, [r6, r3]
+ mov r3, #0x30
+ mul r3, r4
+ add r3, #0x64
+ ldr r0, [sp, #0x20]
+ ldr r2, [r2, #0x60]
+ add r3, r6, r3
+ bl FUN_0201BDE0
+_021D7FF2:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r5, #0
+ add r0, #0x5c
+ ldrh r0, [r0]
+ cmp r4, r0
+ blo _021D7F7E
+_021D8002:
+ ldr r0, [sp, #0x10]
+ add r0, #0x3c
+ str r0, [sp, #0x10]
+ bl FUN_020191D0
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8010: .word 0x021D80FC
+_021D8014: .word 0x0003040F
+_021D8018: .word 0x0001020F
+ thumb_func_end MOD60_021D7EA4
+
+ thumb_func_start MOD60_021D801C
+MOD60_021D801C: ; 0x021D801C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x10]
+ add r1, r5, #0
+ lsl r0, r0, #0x1b
+ lsr r2, r0, #0x1d
+ mov r0, #0x54
+ add r1, #0x5c
+ mul r0, r2
+ add r4, r1, r0
+ cmp r2, #6
+ beq _021D8080
+ ldr r0, _021D80F8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x10
+ tst r0, r1
+ beq _021D805C
+ ldrh r0, [r4, #2]
+ ldrh r1, [r4]
+ add r0, r0, #1
+ bl _s32_div_f
+ strh r1, [r4, #2]
+ ldr r1, [r5, #0x10]
+ add r0, r5, #0
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x1d
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl MOD60_021D7EA4
+ b _021D8080
+_021D805C:
+ mov r0, #0x20
+ tst r0, r1
+ beq _021D8080
+ ldrh r1, [r4]
+ ldrh r0, [r4, #2]
+ add r0, r0, r1
+ sub r0, r0, #1
+ bl _s32_div_f
+ strh r1, [r4, #2]
+ ldr r1, [r5, #0x10]
+ add r0, r5, #0
+ lsl r1, r1, #0x1b
+ lsr r1, r1, #0x1d
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl MOD60_021D7EA4
+_021D8080:
+ ldr r0, _021D80F8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x40
+ tst r0, r1
+ beq _021D80BE
+ ldr r0, [r5, #0x10]
+ mov r1, #7
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1d
+ add r0, r0, #6
+ bl _u32_div_f
+ ldr r2, [r5, #0x10]
+ mov r0, #0x1c
+ bic r2, r0
+ lsl r0, r1, #0x1d
+ add r3, r2, #0
+ lsr r0, r0, #0x1b
+ orr r3, r0
+ str r3, [r5, #0x10]
+ lsl r3, r3, #0x1b
+ lsr r3, r3, #0x1d
+ lsl r3, r3, #4
+ add r3, #0x18
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ mov r2, #3
+ neg r3, r3
+ bl FUN_0201AEE4
+ pop {r3, r4, r5, pc}
+_021D80BE:
+ mov r0, #0x80
+ tst r0, r1
+ beq _021D80F6
+ ldr r0, [r5, #0x10]
+ mov r1, #7
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1d
+ add r0, r0, #1
+ bl _u32_div_f
+ ldr r2, [r5, #0x10]
+ mov r0, #0x1c
+ bic r2, r0
+ lsl r0, r1, #0x1d
+ add r3, r2, #0
+ lsr r0, r0, #0x1b
+ orr r3, r0
+ str r3, [r5, #0x10]
+ lsl r3, r3, #0x1b
+ lsr r3, r3, #0x1d
+ lsl r3, r3, #4
+ add r3, #0x18
+ ldr r0, [r5, #0x14]
+ mov r1, #0
+ mov r2, #3
+ neg r3, r3
+ bl FUN_0201AEE4
+_021D80F6:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D80F8: .word 0x021C48B8
+ thumb_func_end MOD60_021D801C
+
+ .section .rodata
+ ; 0x021D80FC
+ .incbin "baserom.nds", 0x2AD81C, 0xDC
diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s
new file mode 100644
index 00000000..c81d3a4a
--- /dev/null
+++ b/arm9/modules/61/asm/module_61.s
@@ -0,0 +1,1907 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD61_021D74E0
+MOD61_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ mov r2, #2
+ mov r0, #3
+ mov r1, #0x29
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ add r0, r5, #0
+ mov r1, #0xbc
+ mov r2, #0x29
+ bl FUN_02006268
+ mov r1, #0
+ mov r2, #0xbc
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x29
+ str r0, [r4]
+ add r0, r5, #0
+ bl FUN_0200628C
+ str r0, [r4, #0x1c]
+ ldrh r0, [r0]
+ ldr r1, _021D754C ; =0x0000FFFF
+ strb r0, [r4, #0xc]
+ ldrb r0, [r4, #0xc]
+ strb r0, [r4, #0xd]
+ ldr r0, [r4, #0x1c]
+ ldrb r0, [r0, #2]
+ strb r0, [r4, #0x11]
+ ldr r0, [r4, #0x1c]
+ ldrb r0, [r0, #3]
+ strb r0, [r4, #0x12]
+ ldrb r0, [r4, #0x11]
+ strb r0, [r4, #0x16]
+ strb r0, [r4, #0x17]
+ ldr r0, [r4, #0x1c]
+ strh r1, [r0]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #4]
+ bl FUN_02024FF4
+ strb r0, [r4, #0x10]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #4]
+ bl FUN_02025084
+ strh r0, [r4, #0xa]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D754C: .word 0x0000FFFF
+ thumb_func_end MOD61_021D74E0
+
+ thumb_func_start MOD61_021D7550
+MOD61_021D7550: ; 0x021D7550
+ push {r3, lr}
+ bl FUN_02006278
+ bl MOD61_021D78D4
+ cmp r0, #0
+ beq _021D7562
+ mov r0, #1
+ pop {r3, pc}
+_021D7562:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D7550
+
+ thumb_func_start MOD61_021D7568
+MOD61_021D7568: ; 0x021D7568
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ ldr r4, [r0]
+ add r0, r5, #0
+ bl FUN_0200627C
+ add r0, r4, #0
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D7568
+
+ thumb_func_start MOD61_021D7584
+MOD61_021D7584: ; 0x021D7584
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r6, r0, #0
+ add r5, r4, #0
+_021D758C:
+ ldr r0, [r6, #0x1c]
+ add r0, #0x1a
+ add r0, r0, r5
+ bl FUN_0201385C
+ cmp r0, #0
+ beq _021D759E
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D759E:
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #3
+ blt _021D758C
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D7584
+
+ thumb_func_start MOD61_021D75AC
+MOD61_021D75AC: ; 0x021D75AC
+ push {r3, lr}
+ ldr r0, _021D75C8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D75C2
+ ldr r0, _021D75CC ; =0x000005E3
+ bl FUN_020054C8
+ mov r0, #1
+ pop {r3, pc}
+_021D75C2:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D75C8: .word 0x021C48B8
+_021D75CC: .word 0x000005E3
+ thumb_func_end MOD61_021D75AC
+
+ thumb_func_start MOD61_021D75D0
+MOD61_021D75D0: ; 0x021D75D0
+ push {r3, r4, r5, lr}
+ ldr r1, _021D76E0 ; =0x021C48B8
+ add r4, r0, #0
+ ldr r2, [r1, #0x48]
+ mov r1, #1
+ add r5, r2, #0
+ mov r3, #0
+ tst r5, r1
+ beq _021D7648
+ ldrb r1, [r4, #0x11]
+ cmp r1, #3
+ bne _021D762E
+ ldrb r1, [r4, #0x12]
+ cmp r1, #0
+ bne _021D7612
+ bl MOD61_021D7584
+ cmp r0, #0
+ beq _021D7604
+ ldr r0, _021D76E4 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #2
+ strb r0, [r4, #0xc]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D7604:
+ ldr r0, [r4, #0x1c]
+ mov r1, #3
+ strh r1, [r0]
+ ldr r0, _021D76E8 ; =0x000005E3
+ bl FUN_020054C8
+ b _021D7620
+_021D7612:
+ ldr r0, _021D76E4 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #3
+ strb r0, [r4, #0xc]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D7620:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ strb r1, [r0, #3]
+ ldr r1, [r4, #0x1c]
+ ldrb r0, [r1, #3]
+ strb r0, [r1, #2]
+ b _021D7644
+_021D762E:
+ ldr r0, [r4, #0x1c]
+ strb r1, [r0, #2]
+ ldr r1, [r4, #0x1c]
+ ldrb r0, [r1, #2]
+ strh r0, [r1]
+ ldrb r1, [r4, #0x12]
+ ldr r0, [r4, #0x1c]
+ strb r1, [r0, #3]
+ ldr r0, _021D76E4 ; =0x000005DD
+ bl FUN_020054C8
+_021D7644:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D7648:
+ mov r0, #2
+ tst r0, r2
+ beq _021D765C
+ ldr r0, _021D76E4 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #3
+ strb r0, [r4, #0xc]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D765C:
+ mov r0, #8
+ tst r0, r2
+ beq _021D766C
+ mov r0, #3
+ strb r0, [r4, #0x11]
+ strb r3, [r4, #0x12]
+ add r3, r1, #0
+ b _021D76BE
+_021D766C:
+ mov r0, #0x80
+ tst r0, r2
+ beq _021D7688
+ ldrb r0, [r4, #0x11]
+ add r0, r0, #1
+ lsr r3, r0, #0x1f
+ lsl r2, r0, #0x1e
+ sub r2, r2, r3
+ mov r0, #0x1e
+ ror r2, r0
+ add r0, r3, r2
+ strb r0, [r4, #0x11]
+ add r3, r1, #0
+ b _021D76BE
+_021D7688:
+ mov r0, #0x40
+ tst r0, r2
+ beq _021D76A4
+ ldrb r0, [r4, #0x11]
+ add r0, r0, #3
+ lsr r3, r0, #0x1f
+ lsl r2, r0, #0x1e
+ sub r2, r2, r3
+ mov r0, #0x1e
+ ror r2, r0
+ add r0, r3, r2
+ strb r0, [r4, #0x11]
+ add r3, r1, #0
+ b _021D76BE
+_021D76A4:
+ mov r0, #0x30
+ tst r0, r2
+ beq _021D76BA
+ ldrb r0, [r4, #0x11]
+ cmp r0, #3
+ bne _021D76BE
+ ldrb r0, [r4, #0x12]
+ add r3, r1, #0
+ eor r0, r1
+ strb r0, [r4, #0x12]
+ b _021D76BE
+_021D76BA:
+ add r0, r3, #0
+ pop {r3, r4, r5, pc}
+_021D76BE:
+ cmp r3, #0
+ bne _021D76C6
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D76C6:
+ ldr r0, _021D76EC ; =0x000005DC
+ bl FUN_020054C8
+ ldrb r1, [r4, #0x11]
+ cmp r1, #3
+ bne _021D76DA
+ ldrb r0, [r4, #0x12]
+ add r0, r1, r0
+ strb r0, [r4, #0x16]
+ b _021D76DC
+_021D76DA:
+ strb r1, [r4, #0x16]
+_021D76DC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D76E0: .word 0x021C48B8
+_021D76E4: .word 0x000005DD
+_021D76E8: .word 0x000005E3
+_021D76EC: .word 0x000005DC
+ thumb_func_end MOD61_021D75D0
+
+ thumb_func_start MOD61_021D76F0
+MOD61_021D76F0: ; 0x021D76F0
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldrh r0, [r5, #8]
+ cmp r0, #0
+ beq _021D7702
+ cmp r0, #1
+ beq _021D774E
+ b _021D777C
+_021D7702:
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #1
+ mov r2, #0xa
+ mov r3, #6
+ bl FUN_0200D0BC
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #0xff
+ bl FUN_02019620
+ ldr r1, [r5]
+ mov r0, #0x4c
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, [r5, #0x20]
+ mov r1, #2
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021D7788 ; =0x0001020F
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #1
+ add r2, r4, #0
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ b _021D777C
+_021D774E:
+ ldr r0, _021D778C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ bne _021D775E
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D775E:
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #1
+ bl FUN_0200D0E0
+ add r0, r5, #0
+ add r0, #0x94
+ bl FUN_02019570
+ mov r0, #0
+ strh r0, [r5, #8]
+ ldrb r1, [r5, #0xd]
+ add sp, #0x10
+ strb r1, [r5, #0xc]
+ pop {r3, r4, r5, pc}
+_021D777C:
+ ldrh r0, [r5, #8]
+ add r0, r0, #1
+ strh r0, [r5, #8]
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7788: .word 0x0001020F
+_021D778C: .word 0x021C48B8
+ thumb_func_end MOD61_021D76F0
+
+ thumb_func_start MOD61_021D7790
+MOD61_021D7790: ; 0x021D7790
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r1, _021D77B0 ; =0x021D842C
+ str r0, [sp]
+ ldr r0, [r4, #0x18]
+ mov r2, #1
+ mov r3, #5
+ bl FUN_02002198
+ add r4, #0xa4
+ str r0, [r4]
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D77B0: .word 0x021D842C
+ thumb_func_end MOD61_021D7790
+
+ thumb_func_start MOD61_021D77B4
+MOD61_021D77B4: ; 0x021D77B4
+ push {r3, lr}
+ add r1, r0, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_020021AC
+ cmp r0, #0
+ beq _021D77D0
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ beq _021D77D4
+ b _021D77D8
+_021D77D0:
+ mov r0, #1
+ pop {r3, pc}
+_021D77D4:
+ mov r0, #0
+ pop {r3, pc}
+_021D77D8:
+ add r0, r1, #1
+ pop {r3, pc}
+ thumb_func_end MOD61_021D77B4
+
+ thumb_func_start MOD61_021D77DC
+MOD61_021D77DC: ; 0x021D77DC
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldrh r1, [r5, #8]
+ cmp r1, #0
+ beq _021D77F2
+ cmp r1, #1
+ beq _021D7864
+ cmp r1, #2
+ beq _021D787C
+ b _021D78BA
+_021D77F2:
+ mov r1, #1
+ add r0, #0x94
+ mov r2, #0xa
+ mov r3, #6
+ strb r1, [r5, #0x13]
+ bl FUN_0200D0BC
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #0xff
+ bl FUN_02019620
+ ldr r1, [r5]
+ mov r0, #0x4c
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, [r5, #0x20]
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ ldrb r0, [r5, #0x10]
+ mov r1, #1
+ add r2, r4, #0
+ str r0, [sp, #4]
+ ldr r0, _021D78C8 ; =0x0001020F
+ str r0, [sp, #8]
+ add r0, r5, #0
+ str r3, [sp, #0xc]
+ add r0, #0x94
+ bl FUN_0201BDE0
+ strb r0, [r5, #0xf]
+ add r0, r4, #0
+ bl FUN_02021A20
+ mov r1, #0
+ ldr r0, _021D78CC ; =0x00007FFF
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldrb r2, [r5, #0x17]
+ ldr r0, [r5, #0x30]
+ mov r3, #1
+ add r2, #0x22
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_020039E8
+ ldrb r0, [r5, #0x16]
+ strb r0, [r5, #0x17]
+ mov r0, #0
+ strb r0, [r5, #0x15]
+ strb r0, [r5, #0x14]
+ b _021D78BA
+_021D7864:
+ ldrb r0, [r5, #0xf]
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _021D7874
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D7874:
+ add r0, r5, #0
+ bl MOD61_021D7790
+ b _021D78BA
+_021D787C:
+ bl MOD61_021D77B4
+ add r4, r0, #0
+ bpl _021D788A
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D788A:
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #1
+ bl FUN_0200D0E0
+ add r0, r5, #0
+ add r0, #0x94
+ bl FUN_02019570
+ mov r0, #0
+ strh r0, [r5, #8]
+ cmp r4, #0
+ beq _021D78B0
+ ldr r1, _021D78D0 ; =0x0000FFFF
+ ldr r0, [r5, #0x1c]
+ add sp, #0x10
+ strh r1, [r0]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D78B0:
+ ldrb r1, [r5, #0xd]
+ add sp, #0x10
+ strb r1, [r5, #0xc]
+ strb r0, [r5, #0x13]
+ pop {r3, r4, r5, pc}
+_021D78BA:
+ ldrh r0, [r5, #8]
+ add r0, r0, #1
+ strh r0, [r5, #8]
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021D78C8: .word 0x0001020F
+_021D78CC: .word 0x00007FFF
+_021D78D0: .word 0x0000FFFF
+ thumb_func_end MOD61_021D77DC
+
+ thumb_func_start MOD61_021D78D4
+MOD61_021D78D4: ; 0x021D78D4
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #5
+ bls _021D78E2
+ b _021D7A46
+_021D78E2:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D78EE: ; jump table
+ .short _021D78FA - _021D78EE - 2 ; case 0
+ .short _021D7940 - _021D78EE - 2 ; case 1
+ .short _021D798A - _021D78EE - 2 ; case 2
+ .short _021D79A6 - _021D78EE - 2 ; case 3
+ .short _021D79E0 - _021D78EE - 2 ; case 4
+ .short _021D7A32 - _021D78EE - 2 ; case 5
+_021D78FA:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7A54 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D7A58 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ bl FUN_0200E388
+ mov r0, #1
+ bl FUN_0200E388
+ b _021D7A46
+_021D7940:
+ bl MOD61_021D7B38
+ cmp r0, #0
+ bne _021D794E
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D794E:
+ ldr r0, _021D7A5C ; =MOD61_021D7A6C
+ add r1, r4, #0
+ bl FUN_02015F10
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0
+ bl FUN_0200E394
+ mov r1, #4
+ ldr r0, _021D7A60 ; =0x04000050
+ mov r2, #8
+ mov r3, #0x1c
+ str r1, [sp]
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #5
+ ldr r0, [r4, #0x30]
+ ldr r2, _021D7A64 ; =0x0000FFFF
+ sub r3, r1, #6
+ bl FUN_02003210
+ b _021D7A46
+_021D798A:
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D7996
+ bl FUN_0200BC1C
+_021D7996:
+ ldr r0, [r4, #0x30]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _021D7A46
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D79A6:
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D79B2
+ bl FUN_0200BC1C
+_021D79B2:
+ ldrb r1, [r4, #0xc]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _021D7A68 ; =0x021D8444
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ bne _021D79C8
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D79C8:
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r1, #5
+ ldr r0, [r4, #0x30]
+ ldr r2, _021D7A64 ; =0x0000FFFF
+ sub r3, r1, #6
+ bl FUN_02003210
+ b _021D7A46
+_021D79E0:
+ ldr r0, [r4, #0x30]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _021D79FC
+ add r4, #0xac
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D79F6
+ bl FUN_0200BC1C
+_021D79F6:
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D79FC:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7A54 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D7A58 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ b _021D7A46
+_021D7A32:
+ bl MOD61_021D7B84
+ cmp r0, #0
+ beq _021D7A40
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, pc}
+_021D7A40:
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D7A46:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_021D7A54: .word 0xFFFFE0FF
+_021D7A58: .word 0x04001000
+_021D7A5C: .word MOD61_021D7A6C
+_021D7A60: .word 0x04000050
+_021D7A64: .word 0x0000FFFF
+_021D7A68: .word 0x021D8444
+ thumb_func_end MOD61_021D78D4
+
+ thumb_func_start MOD61_021D7A6C
+MOD61_021D7A6C: ; 0x021D7A6C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _021D7A7A
+ bl FUN_0200372C
+_021D7A7A:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D7A88
+ bl FUN_0200BC30
+_021D7A88:
+ bl FUN_020AEEB8
+ ldr r0, [r4, #0x18]
+ bl FUN_0201AB60
+ ldr r3, _021D7AA0 ; =0x027E0000
+ ldr r1, _021D7AA4 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D7AA0: .word 0x027E0000
+_021D7AA4: .word 0x00003FF8
+ thumb_func_end MOD61_021D7A6C
+
+ thumb_func_start MOD61_021D7AA8
+MOD61_021D7AA8: ; 0x021D7AA8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r2, [r4, #0x30]
+ cmp r2, #0
+ bne _021D7ABC
+ bl FUN_0200CAB4
+ add sp, #8
+ pop {r4, pc}
+_021D7ABC:
+ ldrb r0, [r4, #0x13]
+ cmp r0, #0
+ bne _021D7B30
+ ldrb r3, [r4, #0x17]
+ ldrb r0, [r4, #0x16]
+ cmp r3, r0
+ beq _021D7AEA
+ mov r1, #0
+ ldr r0, _021D7B34 ; =0x00007FFF
+ str r1, [sp]
+ str r0, [sp, #4]
+ add r3, #0x22
+ add r0, r2, #0
+ lsl r2, r3, #0x10
+ lsr r2, r2, #0x10
+ mov r3, #1
+ bl FUN_020039E8
+ ldrb r0, [r4, #0x16]
+ strb r0, [r4, #0x17]
+ mov r0, #0
+ strb r0, [r4, #0x15]
+ strb r0, [r4, #0x14]
+_021D7AEA:
+ ldrb r0, [r4, #0x14]
+ mov r1, #0
+ mov r3, #1
+ str r0, [sp]
+ ldr r0, _021D7B34 ; =0x00007FFF
+ str r0, [sp, #4]
+ ldrb r2, [r4, #0x16]
+ ldr r0, [r4, #0x30]
+ add r2, #0x22
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_020039E8
+ ldrb r0, [r4, #0x15]
+ ldrb r1, [r4, #0x14]
+ cmp r0, #0
+ beq _021D7B20
+ sub r0, r1, #1
+ strb r0, [r4, #0x14]
+ cmp r1, #1
+ bne _021D7B30
+ ldrb r1, [r4, #0x15]
+ mov r0, #1
+ add sp, #8
+ eor r0, r1
+ strb r0, [r4, #0x15]
+ pop {r4, pc}
+_021D7B20:
+ add r0, r1, #1
+ strb r0, [r4, #0x14]
+ cmp r1, #0xc
+ bne _021D7B30
+ ldrb r1, [r4, #0x15]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r4, #0x15]
+_021D7B30:
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_021D7B34: .word 0x00007FFF
+ thumb_func_end MOD61_021D7AA8
+
+ thumb_func_start MOD61_021D7B38
+MOD61_021D7B38: ; 0x021D7B38
+ push {r4, lr}
+ add r4, r0, #0
+ ldrh r1, [r4, #8]
+ cmp r1, #3
+ bhi _021D7B7A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7B4E: ; jump table
+ .short _021D7B56 - _021D7B4E - 2 ; case 0
+ .short _021D7B5C - _021D7B4E - 2 ; case 1
+ .short _021D7B62 - _021D7B4E - 2 ; case 2
+ .short _021D7B6E - _021D7B4E - 2 ; case 3
+_021D7B56:
+ bl MOD61_021D7BD0
+ b _021D7B7A
+_021D7B5C:
+ bl MOD61_021D7CE8
+ b _021D7B7A
+_021D7B62:
+ bl MOD61_021D7FF4
+ add r0, r4, #0
+ bl MOD61_021D8114
+ b _021D7B7A
+_021D7B6E:
+ bl MOD61_021D8228
+ mov r0, #0
+ strh r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+_021D7B7A:
+ ldrh r0, [r4, #8]
+ add r0, r0, #1
+ strh r0, [r4, #8]
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD61_021D7B38
+
+ thumb_func_start MOD61_021D7B84
+MOD61_021D7B84: ; 0x021D7B84
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD61_021D83E8
+ add r0, r4, #0
+ add r0, #0x24
+ beq _021D7B98
+ ldr r0, [r4, #0x20]
+ bl FUN_0200A8B8
+_021D7B98:
+ add r0, r4, #0
+ bl MOD61_021D80F4
+ add r0, r4, #0
+ bl MOD61_021D7FB4
+ add r0, r4, #0
+ bl MOD61_021D7CB4
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D7B84
+
+ thumb_func_start MOD61_021D7BB0
+MOD61_021D7BB0: ; 0x021D7BB0
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7BCC ; =0x021D84A0
+ add r3, sp, #0
+ mov r2, #5
+_021D7BBA:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7BBA
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7BCC: .word 0x021D84A0
+ thumb_func_end MOD61_021D7BB0
+
+ thumb_func_start MOD61_021D7BD0
+MOD61_021D7BD0: ; 0x021D7BD0
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ add r4, r0, #0
+ bl MOD61_021D7BB0
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0
+ ldr r5, _021D7CAC ; =0x021D8434
+ str r0, [r4, #0x18]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D7CB0 ; =0x021D84C8
+ add r3, sp, #0x10
+ mov r2, #0x11
+_021D7BFC:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7BFC
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ ldr r0, [r4, #0x18]
+ add r2, sp, #0x10
+ add r3, r1, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ add r2, sp, #0x2c
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ add r2, sp, #0x48
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ add r2, sp, #0x64
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ add r2, sp, #0x80
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_02018744
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_02018744
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02018744
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ bl FUN_02018744
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ bl FUN_02018744
+ mov r0, #0
+ ldr r3, [r4]
+ mov r1, #0x20
+ add r2, r0, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D7CAC: .word 0x021D8434
+_021D7CB0: .word 0x021D84C8
+ thumb_func_end MOD61_021D7BD0
+
+ thumb_func_start MOD61_021D7CB4
+MOD61_021D7CB4: ; 0x021D7CB4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD61_021D7CB4
+
+ thumb_func_start MOD61_021D7CE8
+MOD61_021D7CE8: ; 0x021D7CE8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ ldr r0, [r5, #0x1c]
+ ldr r1, [r5]
+ ldrb r4, [r0, #0xf]
+ str r4, [sp, #0x1c]
+ ldr r0, [sp, #0x1c]
+ add r4, #0xc
+ str r0, [sp, #0x20]
+ add r0, #0x18
+ str r0, [sp, #0x20]
+ mov r0, #0x4f
+ bl FUN_02006670
+ mov r1, #0
+ str r1, [sp]
+ add r6, r0, #0
+ ldr r0, [r5]
+ mov r2, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x18]
+ mov r3, #5
+ bl FUN_0200CB00
+ ldrh r0, [r5, #0xa]
+ mov r1, #0
+ mov r2, #0xa
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r5]
+ mov r3, #6
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x18]
+ bl FUN_0200CD68
+ mov r0, #0x4f
+ add r1, r4, #0
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_020169D8
+ add r7, r0, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl FUN_02006774
+ add r0, r7, #0
+ add r1, sp, #0x28
+ bl FUN_020B0088
+ ldr r3, [sp, #0x28]
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0x18]
+ ldr r3, [r3, #0x10]
+ mov r1, #1
+ bl FUN_02017E14
+ ldr r3, [sp, #0x28]
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0x18]
+ ldr r3, [r3, #0x10]
+ mov r1, #4
+ bl FUN_02017E14
+ add r0, r7, #0
+ bl FUN_02016A18
+ ldr r1, [sp, #0x1c]
+ mov r0, #0x4f
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_020169D8
+ add r4, r0, #0
+ ldr r1, [sp, #0x1c]
+ add r0, r6, #0
+ add r2, r4, #0
+ bl FUN_02006774
+ add r0, r4, #0
+ add r1, sp, #0x24
+ bl FUN_020B0138
+ ldr r2, [sp, #0x24]
+ mov r0, #4
+ ldr r1, [r2, #0xc]
+ ldr r2, [r2, #8]
+ mov r3, #0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_02017FB4
+ ldr r0, [r5]
+ bl FUN_02002FD0
+ str r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0
+ mov r2, #0xe0
+ bl FUN_02003008
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #2
+ mov r2, #0x60
+ bl FUN_02003008
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r1, [sp, #0x24]
+ mov r2, #0
+ ldr r0, [r5, #0x30]
+ ldr r1, [r1, #0xc]
+ add r3, r2, #0
+ bl FUN_02003054
+ ldrb r0, [r5, #0xc]
+ cmp r0, #1
+ bne _021D7E00
+ mov r0, #0x20
+ str r0, [sp]
+ ldr r1, [sp, #0x24]
+ ldr r0, [r5, #0x30]
+ ldr r1, [r1, #0xc]
+ mov r2, #0
+ add r1, #0x60
+ mov r3, #0x10
+ bl FUN_02003054
+_021D7E00:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x60
+ str r0, [sp, #4]
+ mov r2, #0
+ str r2, [sp, #8]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0x13
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x30
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0xe
+ mov r2, #6
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x40
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0xe
+ mov r2, #7
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x50
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0x26
+ mov r2, #0x18
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x60
+ str r0, [sp, #8]
+ ldrh r2, [r5, #0xa]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0x26
+ add r2, #0x19
+ bl FUN_020030E8
+ mov r0, #0x10
+ mov r1, #0
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r5, #0x30]
+ add r2, r1, #0
+ mov r3, #0x70
+ bl FUN_020039E8
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ ldr r0, [r5, #0x30]
+ mov r1, #2
+ mov r3, #0x30
+ bl FUN_020039E8
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl FUN_020038F0
+ ldr r0, [r5, #0x30]
+ bl FUN_0200372C
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r1, [sp, #0x20]
+ mov r0, #0x4f
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_02016998
+ str r0, [r5, #0x34]
+ ldr r1, [sp, #0x20]
+ ldr r2, [r5, #0x34]
+ add r0, r6, #0
+ bl FUN_02006774
+ add r1, r5, #0
+ ldr r0, [r5, #0x34]
+ add r1, #0x3c
+ bl FUN_020B0180
+ mov r0, #0x4f
+ mov r1, #0x24
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_02016998
+ str r0, [r5, #0x38]
+ ldr r2, [r5, #0x38]
+ add r0, r6, #0
+ mov r1, #0x24
+ bl FUN_02006774
+ add r1, r5, #0
+ ldr r0, [r5, #0x38]
+ add r1, #0x40
+ bl FUN_020B0180
+ add r0, r6, #0
+ bl FUN_020066F4
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ ldr r2, _021D7FAC ; =0x00002001
+ mov r1, #4
+ bl FUN_02018540
+ mov r2, #0
+ ldr r0, [r5, #0x3c]
+ mov r1, #0x20
+ str r1, [sp]
+ mov r1, #0x18
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldrh r1, [r0]
+ add r3, r2, #0
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x18]
+ bl FUN_02018170
+ ldr r0, [r5, #0x18]
+ mov r1, #3
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x18]
+ mov r1, #4
+ bl FUN_0201AC68
+ ldrb r0, [r5, #0xc]
+ cmp r0, #1
+ bne _021D7FA6
+ ldr r0, [r5, #0x40]
+ mov r1, #0x20
+ str r1, [sp]
+ mov r1, #0x18
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ mov r2, #0
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldrh r1, [r0]
+ add r3, r2, #0
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #2
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x18]
+ bl FUN_02018170
+ ldr r0, [r5, #0x18]
+ mov r1, #2
+ bl FUN_0201AC68
+ mov r2, #0
+ strb r2, [r5, #0x14]
+ ldr r0, _021D7FB0 ; =MOD61_021D7AA8
+ add r1, r5, #0
+ strb r2, [r5, #0x15]
+ bl FUN_0200CA44
+_021D7FA6:
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D7FAC: .word 0x00002001
+_021D7FB0: .word MOD61_021D7AA8
+ thumb_func_end MOD61_021D7CE8
+
+ thumb_func_start MOD61_021D7FB4
+MOD61_021D7FB4: ; 0x021D7FB4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x34]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ bl FUN_02003038
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_02003038
+ ldr r0, [r4, #0x30]
+ bl FUN_02002FEC
+ mov r1, #0
+ str r1, [r4, #0x30]
+ ldr r0, _021D7FF0 ; =0x04000050
+ add r2, r1, #0
+ mov r3, #0x1f
+ str r1, [sp]
+ bl G2x_SetBlendAlpha_
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D7FF0: .word 0x04000050
+ thumb_func_end MOD61_021D7FB4
+
+ thumb_func_start MOD61_021D7FF4
+MOD61_021D7FF4: ; 0x021D7FF4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ mov r3, #3
+ add r5, r0, #0
+ str r3, [sp]
+ mov r0, #0x1a
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80DC ; =0x00000397
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x44
+ bl FUN_02019064
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0x1a
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80E0 ; =0x0000032F
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x54
+ mov r3, #3
+ bl FUN_02019064
+ mov r0, #0xd
+ str r0, [sp]
+ mov r0, #0x1a
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80E4 ; =0x000002C7
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x64
+ mov r3, #3
+ bl FUN_02019064
+ mov r0, #0x14
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80E8 ; =0x000002B7
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x74
+ mov r3, #0x15
+ bl FUN_02019064
+ mov r0, #0x14
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80EC ; =0x000002A7
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x84
+ mov r3, #3
+ bl FUN_02019064
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, _021D80F0 ; =0x00000297
+ add r1, r5, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x94
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02019064
+ mov r4, #0
+ add r5, #0x44
+ add r6, r4, #0
+_021D80BE:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_02019620
+ cmp r4, #5
+ bge _021D80D0
+ add r0, r5, #0
+ bl FUN_020191D0
+_021D80D0:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #6
+ blt _021D80BE
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D80DC: .word 0x00000397
+_021D80E0: .word 0x0000032F
+_021D80E4: .word 0x000002C7
+_021D80E8: .word 0x000002B7
+_021D80EC: .word 0x000002A7
+_021D80F0: .word 0x00000297
+ thumb_func_end MOD61_021D7FF4
+
+ thumb_func_start MOD61_021D80F4
+MOD61_021D80F4: ; 0x021D80F4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+ add r5, #0x44
+_021D80FC:
+ add r0, r5, #0
+ bl FUN_02019570
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #6
+ blt _021D80FC
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D80F4
+
+ thumb_func_start MOD61_021D8114
+MOD61_021D8114: ; 0x021D8114
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ mov r7, #0
+ add r6, r4, #0
+ add r5, r7, #0
+ add r6, #0x44
+_021D8122:
+ ldr r0, [r4, #0x1c]
+ add r0, #0x1a
+ add r0, r0, r5
+ bl FUN_0201385C
+ cmp r0, #0
+ beq _021D8164
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4]
+ add r0, #0x1a
+ add r0, r0, r5
+ bl FUN_020137D4
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D8220 ; =0x00010200
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ mov r1, #1
+ mov r3, #0
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_020191D0
+_021D8164:
+ add r7, r7, #1
+ add r5, #8
+ add r6, #0x10
+ cmp r7, #3
+ blt _021D8122
+ ldrb r0, [r4, #0xc]
+ cmp r0, #1
+ bne _021D81F8
+ ldr r2, _021D8224 ; =0x00000169
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [r4, #0x20]
+ ldr r1, [r4]
+ mov r0, #0x10
+ bl FUN_020219F4
+ add r5, r0, #0
+ add r0, r4, #0
+ str r0, [sp, #0x18]
+ add r0, #0x44
+ mov r6, #0
+ str r0, [sp, #0x18]
+_021D8196:
+ add r0, r5, #0
+ bl FUN_02021A4C
+ ldr r0, [r4, #0x20]
+ add r1, r6, #0
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r0, #1
+ add r1, r5, #0
+ mov r2, #0
+ bl FUN_02002E14
+ mov r1, #0x40
+ sub r7, r1, r0
+ add r0, r6, #3
+ lsl r0, r0, #4
+ str r0, [sp, #0x14]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _021D8220 ; =0x00010200
+ lsr r3, r7, #0x1f
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r3, r7, r3
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r2, r5, #0
+ add r0, r0, r1
+ mov r1, #1
+ asr r3, r3, #1
+ bl FUN_0201BDE0
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r0, r0, r1
+ bl FUN_020191D0
+ add r6, r6, #1
+ cmp r6, #2
+ blt _021D8196
+ add r0, r5, #0
+ bl FUN_02021A20
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+_021D81F8:
+ mov r0, #2
+ str r0, [sp]
+ mov r3, #0
+ ldr r0, _021D8220 ; =0x00010200
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r2, [r4, #0x1c]
+ add r0, r4, #0
+ ldr r2, [r2, #0x10]
+ add r0, #0x74
+ mov r1, #1
+ bl FUN_0201BDE0
+ add r4, #0x74
+ add r0, r4, #0
+ bl FUN_020191D0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8220: .word 0x00010200
+_021D8224: .word 0x00000169
+ thumb_func_end MOD61_021D8114
+
+ thumb_func_start MOD61_021D8228
+MOD61_021D8228: ; 0x021D8228
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x94
+ add r5, r0, #0
+ bl FUN_02033F20
+ ldrb r0, [r5, #0xc]
+ cmp r0, #1
+ bne _021D823A
+ b _021D83D4
+_021D823A:
+ ldr r1, [r5]
+ mov r0, #0x20
+ bl FUN_0201C24C
+ ldr r0, [r5]
+ bl FUN_0200BB14
+ add r1, r5, #0
+ add r1, #0xa8
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ bl FUN_0200BB34
+ add r1, r5, #0
+ add r1, #0xac
+ add r2, sp, #0x40
+ ldr r4, _021D83D8 ; =0x021D8480
+ str r0, [r1]
+ ldmia r4!, {r0, r1}
+ add r3, r2, #0
+ stmia r2!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ ldr r6, _021D83DC ; =0x021D8454
+ stmia r2!, {r0, r1}
+ add r4, sp, #0x2c
+ ldmia r6!, {r0, r1}
+ add r2, r4, #0
+ stmia r4!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldr r0, [r6]
+ ldr r6, _021D83E0 ; =0x021D8468
+ str r0, [r4]
+ add r4, sp, #0x14
+ ldmia r6!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r4!, {r0, r1}
+ add r0, r5, #0
+ add r0, #0xa8
+ add r1, r3, #0
+ ldr r0, [r0]
+ mov r3, #0x20
+ bl FUN_0200BB6C
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #3
+ bl FUN_0200BBF0
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, sp, #0x14
+ bl FUN_0200BF60
+ ldr r0, [r5]
+ bl FUN_0200A064
+ bl FUN_0206B888
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ bl FUN_0200C06C
+ bl FUN_0206B88C
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ bl FUN_0200C124
+ bl FUN_0206B898
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ bl FUN_0200C13C
+ mov r6, #0
+ add r4, r6, #0
+ add r7, r6, #0
+ str r5, [sp, #0x10]
+_021D8338:
+ ldr r0, [r5, #0x1c]
+ add r3, r0, r4
+ ldrh r1, [r3, #0x14]
+ ldr r0, _021D83E4 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021D83D4
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldrh r3, [r3, #0x14]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ lsl r3, r3, #0x14
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ lsr r3, r3, #0x14
+ bl FUN_0200C918
+ add r0, sp, #0x60
+ mov r1, #0
+ mov r2, #0x34
+ bl MI_CpuFill8
+ mov r0, #0x80
+ sub r1, r0, r7
+ add r0, sp, #0x60
+ strh r1, [r0]
+ mov r1, #0xa0
+ strh r1, [r0, #2]
+ mov r1, #0
+ strh r1, [r0, #4]
+ strh r1, [r0, #6]
+ mov r0, #2
+ str r0, [sp, #0x8c]
+ ldr r0, [r5, #0x1c]
+ add r2, sp, #0x60
+ add r0, r0, r4
+ ldrh r0, [r0, #0x14]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x1c
+ str r0, [sp, #0x6c]
+ add r0, r1, #0
+ str r0, [sp, #0x90]
+ mov r0, #1
+ str r0, [sp, #0x70]
+ add r0, r1, #0
+ str r0, [sp, #0x78]
+ str r0, [sp, #0x7c]
+ str r0, [sp, #0x80]
+ sub r0, r1, #1
+ str r0, [sp, #0x84]
+ sub r0, r1, #1
+ str r0, [sp, #0x88]
+ add r0, r5, #0
+ add r1, r5, #0
+ str r6, [sp, #0x74]
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_0200C154
+ ldr r1, [sp, #0x10]
+ add r6, r6, #1
+ add r1, #0xb0
+ str r0, [r1]
+ ldr r0, [sp, #0x10]
+ add r4, r4, #2
+ add r0, r0, #4
+ add r7, #0x28
+ str r0, [sp, #0x10]
+ cmp r6, #3
+ blt _021D8338
+_021D83D4:
+ add sp, #0x94
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D83D8: .word 0x021D8480
+_021D83DC: .word 0x021D8454
+_021D83E0: .word 0x021D8468
+_021D83E4: .word 0x0000FFFF
+ thumb_func_end MOD61_021D8228
+
+ thumb_func_start MOD61_021D83E8
+MOD61_021D83E8: ; 0x021D83E8
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldrb r0, [r6, #0xc]
+ cmp r0, #0
+ bne _021D8428
+ mov r4, #0
+ add r5, r6, #0
+_021D83F6:
+ add r0, r5, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D8404
+ bl FUN_0200C3DC
+_021D8404:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021D83F6
+ add r0, r6, #0
+ add r1, r6, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_0200C398
+ add r6, #0xa8
+ ldr r0, [r6]
+ bl FUN_0200BD04
+ bl FUN_0201C29C
+_021D8428:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D83E8
+
+ .section .rodata
+ ; 0x021D842C
+ .incbin "baserom.nds", 0x2AE94C, 0x128
diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s
new file mode 100644
index 00000000..4623b0ae
--- /dev/null
+++ b/arm9/modules/62/asm/module_62.s
@@ -0,0 +1,7543 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD62_0222D5C0
+MOD62_0222D5C0: ; 0x0222D5C0
+ ldr r3, _0222D5C8 ; =HandleLoadOverlay
+ ldr r0, _0222D5CC ; =SDK_OVERLAY_MODULE_08_ID
+ mov r1, #2
+ bx r3
+ .align 2, 0
+_0222D5C8: .word HandleLoadOverlay
+_0222D5CC: .word SDK_OVERLAY_MODULE_08_ID
+ thumb_func_end MOD62_0222D5C0
+
+ thumb_func_start MOD62_0222D5D0
+MOD62_0222D5D0: ; 0x0222D5D0
+ add r3, r2, #0
+ sub r3, #0xa
+ strb r3, [r0]
+ add r3, r1, #0
+ sub r3, #0xa
+ strb r3, [r0, #2]
+ add r2, #0xa
+ strb r2, [r0, #1]
+ add r1, #0xa
+ strb r1, [r0, #3]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD62_0222D5D0
+
+ thumb_func_start MOD62_0222D5E8
+MOD62_0222D5E8: ; 0x0222D5E8
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #2]
+ mov r1, #0xc0
+ strb r1, [r0, #1]
+ mov r1, #0xff
+ strb r1, [r0, #3]
+ bx lr
+ thumb_func_end MOD62_0222D5E8
+
+ thumb_func_start MOD62_0222D5F8
+MOD62_0222D5F8: ; 0x0222D5F8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ beq _0222D64C
+ cmp r2, #1
+ bne _0222D628
+ ldr r3, _0222D650 ; =0x021C48F8
+ mov r1, #0x1c
+ mov r2, #0x1e
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, r4, #0
+ bl FUN_0200C714
+ add r1, sp, #0
+ add r0, r4, #0
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_0200C7A0
+ add r0, r5, #0
+ bl MOD62_0222D5E8
+ pop {r3, r4, r5, pc}
+_0222D628:
+ add r1, sp, #0
+ add r0, r4, #0
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_0200C7A0
+ add r3, sp, #0
+ mov r1, #2
+ mov r2, #0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, r5, #0
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r1, r1, #0x18
+ lsr r2, r2, #0x18
+ bl MOD62_0222D5D0
+_0222D64C:
+ pop {r3, r4, r5, pc}
+ nop
+_0222D650: .word 0x021C48F8
+ thumb_func_end MOD62_0222D5F8
+
+ thumb_func_start MOD62_0222D654
+MOD62_0222D654: ; 0x0222D654
+ push {r3, r4, r5, r6, r7, lr}
+ mov r4, #0
+ add r7, r4, #0
+ mov r6, #0xcb
+ add r5, r0, #0
+ sub r7, #0x38
+ lsl r6, r6, #2
+_0222D662:
+ ldr r0, [r5, r6]
+ cmp r0, #0
+ beq _0222D670
+ add r1, r7, #0
+ mov r2, #0x10
+ bl FUN_0200C82C
+_0222D670:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #8
+ blt _0222D662
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222D654
+
+ thumb_func_start MOD62_0222D67C
+MOD62_0222D67C: ; 0x0222D67C
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ mov r6, #0
+ lsl r0, r0, #3
+ add r0, r7, r0
+ ldr r4, [r0, #8]
+ add r5, r7, #0
+_0222D690:
+ ldrb r1, [r4]
+ cmp r1, #0
+ beq _0222D6CE
+ mov r0, #0xca
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ ldrb r1, [r4, #1]
+ add r0, r0, #1
+ strb r1, [r5, r0]
+ ldrb r1, [r4, #2]
+ ldr r0, _0222D6E8 ; =0x0000032A
+ strb r1, [r5, r0]
+ lsl r1, r6, #0x18
+ add r0, r7, #0
+ lsr r1, r1, #0x18
+ bl MOD62_0222D9A0
+ mov r0, #0x33
+ mov r1, #0xcb
+ lsl r0, r0, #4
+ lsl r1, r1, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r5, r1]
+ mov r2, #0
+ bl MOD62_0222D5F8
+ mov r0, #0xc9
+ mov r1, #1
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ b _0222D6DA
+_0222D6CE:
+ mov r0, #0xc9
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r0, #4
+ strb r1, [r5, r0]
+_0222D6DA:
+ add r6, r6, #1
+ add r4, r4, #3
+ add r5, #0x10
+ cmp r6, #8
+ blt _0222D690
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222D6E8: .word 0x0000032A
+ thumb_func_end MOD62_0222D67C
+
+ thumb_func_start MOD62_0222D6EC
+MOD62_0222D6EC: ; 0x0222D6EC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ mov r0, #0xc9
+ mov r4, #0
+ add r3, r6, #0
+ lsl r0, r0, #2
+_0222D6FA:
+ ldr r2, [r3, r0]
+ cmp r2, #1
+ beq _0222D75C
+ add r0, r6, r1
+ mov r1, #0x42
+ lsl r1, r1, #4
+ ldrb r3, [r0, r1]
+ lsl r5, r4, #4
+ add r0, r1, #0
+ add r2, r6, r5
+ sub r0, #0xf8
+ strb r3, [r2, r0]
+ add r0, r1, #0
+ sub r0, #0xf7
+ add r7, r6, r0
+ mov r0, #0xbe
+ sub r1, #0xf6
+ strb r0, [r7, r5]
+ add r0, r6, r1
+ mov r1, #0x46
+ strb r1, [r0, r5]
+ str r0, [sp]
+ add r0, sp, #8
+ add r1, sp, #4
+ bl FUN_02020AB0
+ ldr r0, [sp, #8]
+ strb r0, [r7, r5]
+ ldr r1, [sp, #4]
+ ldr r0, [sp]
+ strb r1, [r0, r5]
+ lsl r1, r4, #0x18
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ bl MOD62_0222D9A0
+ lsl r1, r4, #0x18
+ add r0, r6, #0
+ lsr r1, r1, #0x18
+ bl MOD62_0222D788
+ mov r0, #0xc9
+ mov r2, #1
+ add r1, r6, r5
+ lsl r0, r0, #2
+ str r2, [r1, r0]
+ add sp, #0xc
+ add r0, r4, #0
+ pop {r4, r5, r6, r7, pc}
+_0222D75C:
+ add r4, r4, #1
+ add r3, #0x10
+ cmp r4, #8
+ blt _0222D6FA
+ mov r0, #0xff
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222D6EC
+
+ thumb_func_start MOD62_0222D76C
+MOD62_0222D76C: ; 0x0222D76C
+ mov r1, #0xc9
+ mov r3, #0
+ lsl r1, r1, #2
+_0222D772:
+ ldr r2, [r0, r1]
+ cmp r2, #1
+ beq _0222D77C
+ mov r0, #1
+ bx lr
+_0222D77C:
+ add r3, r3, #1
+ add r0, #0x10
+ cmp r3, #8
+ blt _0222D772
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD62_0222D76C
+
+ thumb_func_start MOD62_0222D788
+MOD62_0222D788: ; 0x0222D788
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0xc9
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+ lsl r7, r7, #2
+_0222D794:
+ ldr r0, [r5, r7]
+ cmp r0, #1
+ bne _0222D7D4
+ cmp r4, r6
+ bne _0222D7AC
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200C6C4
+ b _0222D7D4
+_0222D7AC:
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0200C6D8
+ add r1, r0, #0
+ bne _0222D7C8
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r1, #1
+ bl FUN_0200C6C4
+ b _0222D7D4
+_0222D7C8:
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r1, #2
+ bl FUN_0200C6C4
+_0222D7D4:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #8
+ blt _0222D794
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222D788
+
+ thumb_func_start MOD62_0222D7E0
+MOD62_0222D7E0: ; 0x0222D7E0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r7, r1, #0
+ add r1, r0, #0
+ add r1, #0xdc
+ ldr r4, [r1]
+ add r1, r0, #0
+ add r1, #0xe0
+ ldr r5, [r1]
+ mov r1, #0x5b
+ str r1, [sp]
+ add r1, #0xca
+ str r1, [sp, #4]
+ mov r1, #0
+ str r1, [sp, #8]
+ mov r1, #1
+ str r1, [sp, #0xc]
+ mov r1, #2
+ str r1, [sp, #0x10]
+ ldr r1, _0222D864 ; =0x0000532D
+ add r6, r2, #0
+ str r1, [sp, #0x14]
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r1, #3
+ add r2, r4, #0
+ add r3, r5, #0
+ bl FUN_0200C0DC
+ add r0, r7, #0
+ bl FUN_02085FAC
+ add r3, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222D868 ; =0x00004E20
+ add r1, r5, #0
+ add r0, r6, r0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r2, #0x5b
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222D86C ; =0x0000564D
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0x5d
+ bl FUN_0200C124
+ mov r3, #1
+ ldr r0, _0222D870 ; =0x000059D9
+ str r3, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r2, #0x5b
+ bl FUN_0200C13C
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222D864: .word 0x0000532D
+_0222D868: .word 0x00004E20
+_0222D86C: .word 0x0000564D
+_0222D870: .word 0x000059D9
+ thumb_func_end MOD62_0222D7E0
+
+ thumb_func_start MOD62_0222D874
+MOD62_0222D874: ; 0x0222D874
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x74
+ mov r1, #0x26
+ lsl r1, r1, #4
+ str r0, [sp]
+ ldr r0, [r0, r1]
+ cmp r0, #0
+ bne _0222D886
+ b _0222D994
+_0222D886:
+ ldr r0, [sp]
+ mov r7, #0
+ str r7, [r0, r1]
+ add r4, sp, #0x54
+ add r5, sp, #0x34
+ add r6, r0, #0
+_0222D892:
+ mov r0, #0xff
+ str r0, [r4]
+ str r0, [r5]
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ beq _0222D8AA
+ bl FUN_0200C6D8
+ str r0, [r4]
+ str r7, [r5]
+_0222D8AA:
+ add r7, r7, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ add r6, #0x10
+ cmp r7, #8
+ blt _0222D892
+ mov r0, #0
+ mov ip, r0
+_0222D8BA:
+ mov r0, ip
+ mov r3, #7
+ cmp r0, #7
+ bge _0222D8EA
+ add r4, sp, #0x70
+ add r5, sp, #0x50
+_0222D8C6:
+ sub r7, r4, #4
+ ldr r2, [r4]
+ ldr r0, [r7]
+ cmp r0, r2
+ blt _0222D8DE
+ ldr r1, [r5]
+ sub r6, r5, #4
+ str r0, [r4]
+ ldr r0, [r6]
+ str r0, [r5]
+ str r2, [r7]
+ str r1, [r6]
+_0222D8DE:
+ sub r3, r3, #1
+ mov r0, ip
+ sub r4, r4, #4
+ sub r5, r5, #4
+ cmp r3, r0
+ bgt _0222D8C6
+_0222D8EA:
+ mov r0, ip
+ add r0, r0, #1
+ mov ip, r0
+ cmp r0, #7
+ blt _0222D8BA
+ mov r3, #0xca
+ lsl r3, r3, #2
+ ldr r0, [sp]
+ mov r2, #0
+ add r1, sp, #0x1c
+ add r4, r3, #1
+ add r5, r3, #2
+_0222D902:
+ ldrb r6, [r0, r3]
+ add r2, r2, #1
+ strb r6, [r1]
+ ldrb r6, [r0, r4]
+ strb r6, [r1, #1]
+ ldrb r6, [r0, r5]
+ add r0, #0x10
+ strb r6, [r1, #2]
+ add r1, r1, #3
+ cmp r2, #8
+ blt _0222D902
+ add r3, sp, #0x1c
+ add r2, sp, #4
+ mov r1, #0x18
+_0222D91E:
+ ldrb r0, [r3]
+ add r3, r3, #1
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _0222D91E
+ ldr r5, [sp]
+ mov r6, #0
+ add r4, sp, #0x34
+ add r7, sp, #4
+_0222D932:
+ ldr r1, [r4]
+ cmp r1, #0xff
+ bne _0222D94A
+ mov r0, #0xca
+ mov r1, #0
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ add r0, r0, #1
+ strb r1, [r5, r0]
+ ldr r0, _0222D998 ; =0x0000032A
+ strb r1, [r5, r0]
+ b _0222D98A
+_0222D94A:
+ lsl r0, r1, #1
+ add r0, r1, r0
+ ldrb r1, [r7, r0]
+ mov r0, #0xca
+ lsl r0, r0, #2
+ strb r1, [r5, r0]
+ ldr r1, [r4]
+ lsl r0, r1, #1
+ add r0, r1, r0
+ add r0, r7, r0
+ ldrb r1, [r0, #1]
+ ldr r0, _0222D99C ; =0x00000329
+ strb r1, [r5, r0]
+ ldr r1, [r4]
+ lsl r0, r1, #1
+ add r0, r1, r0
+ add r0, r7, r0
+ ldrb r1, [r0, #2]
+ ldr r0, _0222D998 ; =0x0000032A
+ strb r1, [r5, r0]
+ ldr r0, [r4]
+ lsl r1, r0, #4
+ ldr r0, [sp]
+ add r1, r0, r1
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ cmp r0, #0
+ beq _0222D98A
+ add r1, r6, #0
+ bl FUN_0200C6C4
+_0222D98A:
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, #0x10
+ cmp r6, #8
+ blt _0222D932
+_0222D994:
+ add sp, #0x74
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222D998: .word 0x0000032A
+_0222D99C: .word 0x00000329
+ thumb_func_end MOD62_0222D874
+
+ thumb_func_start MOD62_0222D9A0
+MOD62_0222D9A0: ; 0x0222D9A0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x34
+ add r5, r1, #0
+ add r1, r0, #0
+ add r1, #0xdc
+ ldr r7, [r1]
+ add r1, r0, #0
+ add r1, #0xe0
+ ldr r6, [r1]
+ mov r1, #0xc9
+ lsl r1, r1, #2
+ add r2, r0, r1
+ lsl r1, r5, #4
+ add r4, r2, r1
+ ldr r1, [r2, r1]
+ cmp r1, #1
+ bne _0222D9CC
+ bl ErrorHandling
+ add sp, #0x34
+ mov r0, #0
+ pop {r4, r5, r6, r7, pc}
+_0222D9CC:
+ ldrb r1, [r4, #4]
+ add r2, r5, #0
+ bl MOD62_0222D7E0
+ ldrb r1, [r4, #5]
+ add r0, sp, #0
+ strh r1, [r0]
+ ldrb r1, [r4, #6]
+ strh r1, [r0, #2]
+ mov r1, #0
+ strh r1, [r0, #4]
+ strh r1, [r0, #6]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ mov r0, #1
+ str r0, [sp, #0x2c]
+ sub r0, r0, #2
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x30]
+ str r1, [sp, #8]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ ldrb r0, [r4, #4]
+ bl FUN_02085FAC
+ ldr r0, _0222DA28 ; =0x00004E20
+ add r1, r6, #0
+ add r0, r5, r0
+ str r0, [sp, #0x14]
+ ldr r0, _0222DA2C ; =0x0000532D
+ add r2, sp, #0
+ str r0, [sp, #0x18]
+ ldr r0, _0222DA30 ; =0x0000564D
+ str r0, [sp, #0x1c]
+ ldr r0, _0222DA34 ; =0x000059D9
+ str r0, [sp, #0x20]
+ add r0, r7, #0
+ bl FUN_0200C154
+ str r0, [r4, #8]
+ bl FUN_0200C5A8
+ mov r0, #1
+ add sp, #0x34
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222DA28: .word 0x00004E20
+_0222DA2C: .word 0x0000532D
+_0222DA30: .word 0x0000564D
+_0222DA34: .word 0x000059D9
+ thumb_func_end MOD62_0222D9A0
+
+ thumb_func_start MOD62_0222DA38
+MOD62_0222DA38: ; 0x0222DA38
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r2, #0
+ add r6, r1, #0
+ mov r1, #0xc9
+ add r4, r0, #0
+ lsl r7, r5, #4
+ add r3, r4, r7
+ lsl r1, r1, #2
+ ldr r2, [r3, r1]
+ cmp r2, #0
+ bne _0222DA52
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0222DA52:
+ cmp r6, #3
+ bhi _0222DAE2
+ add r2, r6, r6
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0222DA62: ; jump table
+ .short _0222DA6A - _0222DA62 - 2 ; case 0
+ .short _0222DAAA - _0222DA62 - 2 ; case 1
+ .short _0222DA80 - _0222DA62 - 2 ; case 2
+ .short _0222DAAA - _0222DA62 - 2 ; case 3
+_0222DA6A:
+ add r1, r4, #0
+ add r1, #0xd4
+ ldr r1, [r1]
+ cmp r1, #0xff
+ bne _0222DAE6
+ add r4, #0xd4
+ add r1, r5, #0
+ str r5, [r4]
+ bl MOD62_0222D788
+ b _0222DAE6
+_0222DA80:
+ add r0, #0xd4
+ ldr r0, [r0]
+ cmp r0, r5
+ bne _0222DAE6
+ add r0, r1, #0
+ add r0, #0xc
+ add r1, #8
+ ldr r0, [r3, r0]
+ ldr r1, [r3, r1]
+ mov r2, #1
+ bl MOD62_0222D5F8
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DBCC
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DC48
+ b _0222DAE6
+_0222DAAA:
+ add r1, r4, #0
+ add r1, #0xd4
+ ldr r1, [r1]
+ cmp r1, #0xff
+ bne _0222DAE6
+ add r1, r5, #0
+ bl MOD62_0222DB38
+ mov r1, #0x33
+ add r2, r4, r7
+ lsl r1, r1, #4
+ add r6, r0, #0
+ ldr r0, [r2, r1]
+ sub r1, r1, #4
+ ldr r1, [r2, r1]
+ mov r2, #0
+ bl MOD62_0222D5F8
+ cmp r6, #0
+ bne _0222DADA
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DB78
+_0222DADA:
+ mov r0, #0xff
+ add r4, #0xd4
+ str r0, [r4]
+ b _0222DAE6
+_0222DAE2:
+ bl ErrorHandling
+_0222DAE6:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222DA38
+
+ thumb_func_start MOD62_0222DAEC
+MOD62_0222DAEC: ; 0x0222DAEC
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r7, #0xc9
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_0222DAF8:
+ ldr r0, [r5, r7]
+ cmp r0, #1
+ bne _0222DB06
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD62_0222DB78
+_0222DB06:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #8
+ blt _0222DAF8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222DAEC
+
+ thumb_func_start MOD62_0222DB10
+MOD62_0222DB10: ; 0x0222DB10
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0xc9
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+ lsl r7, r7, #2
+_0222DB1C:
+ ldr r0, [r5, r7]
+ cmp r0, #1
+ bne _0222DB2E
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r6, #0
+ bl FUN_0200C644
+_0222DB2E:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #8
+ blt _0222DB1C
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222DB10
+
+ thumb_func_start MOD62_0222DB38
+MOD62_0222DB38: ; 0x0222DB38
+ push {r3, lr}
+ lsl r1, r1, #4
+ add r2, r0, r1
+ mov r0, #0xc9
+ lsl r0, r0, #2
+ ldr r1, [r2, r0]
+ cmp r1, #0
+ bne _0222DB4C
+ mov r0, #1
+ pop {r3, pc}
+_0222DB4C:
+ add r0, #8
+ ldr r0, [r2, r0]
+ add r1, sp, #0
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_0200C7A0
+ add r2, sp, #0
+ mov r0, #2
+ mov r1, #0
+ ldrsh r0, [r2, r0]
+ ldrsh r1, [r2, r1]
+ mov r2, #0xbe
+ mov r3, #0x46
+ bl MOD08_0222A02C
+ cmp r0, #0x3c
+ bgt _0222DB74
+ mov r0, #1
+ pop {r3, pc}
+_0222DB74:
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD62_0222DB38
+
+ thumb_func_start MOD62_0222DB78
+MOD62_0222DB78: ; 0x0222DB78
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0xca
+ add r7, r1, #0
+ lsl r0, r0, #2
+ lsl r4, r7, #4
+ add r6, r5, r0
+ ldrb r0, [r6, r4]
+ bl FUN_02085FAC
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r1, _0222DBC8 ; =0x00004E20
+ ldr r0, [r0]
+ add r1, r7, r1
+ bl FUN_0200C358
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ add r7, r5, r0
+ ldr r0, [r7, r4]
+ bl FUN_0200C3DC
+ mov r1, #0
+ mov r2, #0xc9
+ lsl r2, r2, #2
+ str r1, [r7, r4]
+ add r3, r5, r4
+ str r1, [r3, r2]
+ strb r1, [r6, r4]
+ add r0, r2, #5
+ strb r1, [r3, r0]
+ add r0, r2, #6
+ add r2, #0xc
+ strb r1, [r3, r0]
+ ldr r0, [r3, r2]
+ add r2, r1, #0
+ bl MOD62_0222D5D0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222DBC8: .word 0x00004E20
+ thumb_func_end MOD62_0222DB78
+
+ thumb_func_start MOD62_0222DBCC
+MOD62_0222DBCC: ; 0x0222DBCC
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ bl MOD62_0222DB38
+ cmp r0, #0
+ bne _0222DBEC
+ lsl r0, r5, #4
+ add r1, r4, r0
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_0200C90C
+ pop {r3, r4, r5, pc}
+_0222DBEC:
+ lsl r0, r5, #4
+ add r1, r4, r0
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_0200C90C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222DBCC
+
+ thumb_func_start MOD62_0222DC00
+MOD62_0222DC00: ; 0x0222DC00
+ push {r4, r5, r6, r7}
+ mov r2, #0xf1
+ lsl r2, r2, #2
+ ldr r2, [r0, r2]
+ ldr r4, _0222DC44 ; =0x00000329
+ lsl r2, r2, #3
+ add r2, r0, r2
+ ldr r2, [r2, #8]
+ mov r1, #0
+ add r3, r4, #1
+ sub r5, r4, #1
+_0222DC16:
+ ldrb r7, [r0, r5]
+ ldrb r6, [r2]
+ cmp r7, r6
+ bne _0222DC2E
+ ldrb r7, [r0, r4]
+ ldrb r6, [r2, #1]
+ cmp r7, r6
+ bne _0222DC2E
+ ldrb r7, [r0, r3]
+ ldrb r6, [r2, #2]
+ cmp r7, r6
+ beq _0222DC34
+_0222DC2E:
+ mov r0, #1
+ pop {r4, r5, r6, r7}
+ bx lr
+_0222DC34:
+ add r1, r1, #1
+ add r2, r2, #3
+ add r0, #0x10
+ cmp r1, #8
+ blt _0222DC16
+ mov r0, #0
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+_0222DC44: .word 0x00000329
+ thumb_func_end MOD62_0222DC00
+
+ thumb_func_start MOD62_0222DC48
+MOD62_0222DC48: ; 0x0222DC48
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r4, r1, #4
+ mov r0, #0xcb
+ add r1, r5, r4
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r1, sp, #0
+ add r1, #2
+ add r2, sp, #0
+ bl FUN_0200C7A0
+ add r2, sp, #0
+ mov r0, #2
+ ldrsh r1, [r2, r0]
+ ldr r0, _0222DC78 ; =0x00000329
+ add r3, r5, r4
+ strb r1, [r3, r0]
+ mov r1, #0
+ ldrsh r1, [r2, r1]
+ add r0, r0, #1
+ strb r1, [r3, r0]
+ pop {r3, r4, r5, pc}
+ nop
+_0222DC78: .word 0x00000329
+ thumb_func_end MOD62_0222DC48
+
+ thumb_func_start MOD62_0222DC7C
+MOD62_0222DC7C: ; 0x0222DC7C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ mov r3, #0xca
+ add r7, r0, #0
+ lsl r3, r3, #2
+ mov r0, #0
+ add r1, r7, #0
+ add r2, sp, #0
+ add r4, r3, #1
+ add r5, r3, #2
+_0222DC90:
+ ldrb r6, [r1, r3]
+ add r0, r0, #1
+ strb r6, [r2]
+ ldrb r6, [r1, r4]
+ strb r6, [r2, #1]
+ ldrb r6, [r1, r5]
+ add r1, #0x10
+ strb r6, [r2, #2]
+ add r2, r2, #3
+ cmp r0, #8
+ blt _0222DC90
+ ldr r0, [r7]
+ mov r2, #0xf1
+ lsl r2, r2, #2
+ ldr r0, [r0, #0x20]
+ ldr r2, [r7, r2]
+ add r1, sp, #0
+ bl FUN_02029CA4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222DC7C
+
+ thumb_func_start MOD62_0222DCBC
+MOD62_0222DCBC: ; 0x0222DCBC
+ push {r3, r4, r5, r6}
+ mov r3, #0xca
+ lsl r3, r3, #2
+ mov r2, #0
+ add r4, r3, #1
+ add r5, r3, #2
+_0222DCC8:
+ ldrb r6, [r1, r3]
+ add r2, r2, #1
+ strb r6, [r0]
+ ldrb r6, [r1, r4]
+ strb r6, [r0, #1]
+ ldrb r6, [r1, r5]
+ add r1, #0x10
+ strb r6, [r0, #2]
+ add r0, r0, #3
+ cmp r2, #8
+ blt _0222DCC8
+ pop {r3, r4, r5, r6}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD62_0222DCBC
+
+ thumb_func_start MOD62_0222DCE4
+MOD62_0222DCE4: ; 0x0222DCE4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r0, r1, #0
+ add r1, sp, #0
+ add r4, r2, #0
+ add r1, #2
+ add r2, sp, #0
+ add r6, r3, #0
+ bl FUN_0200C7A0
+ add r1, sp, #0
+ mov r0, #0
+ ldrsh r2, [r1, r0]
+ sub r2, r2, r6
+ strb r2, [r5]
+ ldrsh r0, [r1, r0]
+ add r0, r0, r6
+ strb r0, [r5, #1]
+ mov r0, #2
+ ldrsh r2, [r1, r0]
+ sub r2, r2, r4
+ strb r2, [r5, #2]
+ ldrsh r0, [r1, r0]
+ add r0, r0, r4
+ strb r0, [r5, #3]
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD62_0222DCE4
+
+ thumb_func_start MOD62_0222DD1C
+MOD62_0222DD1C: ; 0x0222DD1C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #2
+ mov r1, #0x35
+ bl FUN_02011744
+ mov r1, #0x8d
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #2
+ mov r1, #0x35
+ bl FUN_02002C50
+ pop {r4, pc}
+ thumb_func_end MOD62_0222DD1C
+
+ thumb_func_start MOD62_0222DD38
+MOD62_0222DD38: ; 0x0222DD38
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #2
+ bl FUN_02002CF8
+ mov r0, #0x8e
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02011870
+ mov r0, #9
+ lsl r0, r0, #6
+ add r0, r4, r0
+ bl FUN_0201D5E8
+ mov r0, #0x8f
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02011870
+ mov r0, #0x93
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_0201D5E8
+ mov r0, #0x8d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020117BC
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222DD38
+
+ thumb_func_start MOD62_0222DD78
+MOD62_0222DD78: ; 0x0222DD78
+ push {r3, lr}
+ sub sp, #0x18
+ add r3, r0, #0
+ mov r0, #0xe
+ str r0, [sp]
+ mov r0, #7
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _0222DDB0 ; =0x00007530
+ add r2, r3, #0
+ str r0, [sp, #0x14]
+ add r0, r3, #0
+ add r0, #0xe8
+ add r2, #0xdc
+ add r3, #0xe0
+ ldr r0, [r0]
+ ldr r2, [r2]
+ ldr r3, [r3]
+ mov r1, #3
+ bl FUN_0200C0DC
+ add sp, #0x18
+ pop {r3, pc}
+ .align 2, 0
+_0222DDB0: .word 0x00007530
+ thumb_func_end MOD62_0222DD78
+
+ thumb_func_start MOD62_0222DDB4
+MOD62_0222DDB4: ; 0x0222DDB4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl MOD62_0222DD78
+ mov r1, #0
+ add r0, r4, #0
+ mov r2, #0x4e
+ mov r3, #0xa5
+ str r1, [sp]
+ bl MOD62_0222DE00
+ mov r0, #0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0xac
+ mov r3, #0xa5
+ bl MOD62_0222DE00
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD62_0222DDB4
+
+ thumb_func_start MOD62_0222DDE0
+MOD62_0222DDE0: ; 0x0222DDE0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x8e
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl FUN_020119D0
+ mov r0, #0x8f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_020119D0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222DDE0
+
+ thumb_func_start MOD62_0222DE00
+MOD62_0222DE00: ; 0x0222DE00
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x5c
+ add r5, r0, #0
+ add r4, r1, #0
+ str r2, [sp, #0x10]
+ add r7, r3, #0
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #8
+ mov r3, #0x35
+ bl FUN_0200A86C
+ add r1, r4, #5
+ str r0, [sp, #0x14]
+ bl FUN_0200A914
+ str r0, [sp, #0x18]
+ add r0, sp, #0x1c
+ bl FUN_0201901C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ add r1, sp, #0x1c
+ mov r2, #0xa
+ mov r3, #2
+ bl FUN_020190EC
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0222DEF0 ; =0x000F0D02
+ ldr r2, [sp, #0x18]
+ str r0, [sp, #8]
+ add r0, sp, #0x1c
+ mov r1, #2
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, sp, #0x1c
+ mov r1, #2
+ mov r2, #0x35
+ bl FUN_02011898
+ mov r3, #9
+ lsl r3, r3, #6
+ mov r1, #0xc
+ add r6, r4, #0
+ mul r6, r1
+ add r3, r5, r3
+ mov r1, #1
+ mov r2, #2
+ add r3, r3, r6
+ bl FUN_0201D568
+ mov r0, #0x8d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x1c
+ str r0, [sp, #0x30]
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ bl FUN_0200CA40
+ str r0, [sp, #0x34]
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r0, [r0]
+ ldr r1, _0222DEF4 ; =0x00007530
+ bl FUN_0200C334
+ str r0, [sp, #0x38]
+ mov r0, #0
+ mov r1, #0x91
+ str r0, [sp, #0x3c]
+ add r0, r5, r6
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ str r0, [sp, #0x40]
+ ldr r0, [sp, #0x10]
+ add r7, #0xc0
+ str r0, [sp, #0x44]
+ mov r0, #1
+ str r0, [sp, #0x4c]
+ mov r0, #0x28
+ str r0, [sp, #0x50]
+ mov r0, #2
+ str r0, [sp, #0x54]
+ mov r0, #0x35
+ sub r1, #0xc
+ str r0, [sp, #0x58]
+ str r7, [sp, #0x48]
+ add r5, r5, r1
+ lsl r4, r4, #2
+ add r0, sp, #0x2c
+ bl FUN_020117E8
+ str r0, [r5, r4]
+ ldr r0, [r5, r4]
+ ldr r1, [sp, #0x70]
+ bl FUN_02011AC0
+ ldr r0, [sp, #0x18]
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ bl FUN_0200A8B8
+ add r0, sp, #0x1c
+ bl FUN_02019178
+ add sp, #0x5c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222DEF0: .word 0x000F0D02
+_0222DEF4: .word 0x00007530
+ thumb_func_end MOD62_0222DE00
+
+ thumb_func_start MOD62_0222DEF8
+MOD62_0222DEF8: ; 0x0222DEF8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ mov r6, #0
+ add r5, r0, #0
+ mov r0, #0x42
+ add r3, r1, #0
+ add r7, r6, #0
+ add r2, r6, #0
+ add r4, r6, #0
+ lsl r0, r0, #4
+_0222DF0C:
+ add r1, r5, r2
+ add r2, r2, #1
+ strb r4, [r1, r0]
+ cmp r2, #8
+ blt _0222DF0C
+ lsl r0, r3, #3
+ str r0, [sp, #4]
+ add r0, r5, #0
+ str r0, [sp]
+ add r0, #0x68
+ str r0, [sp]
+_0222DF22:
+ ldr r0, [sp]
+ add r1, r4, #0
+ bl FUN_02029CF8
+ add r1, r5, r4
+ add r1, #0x80
+ ldrb r1, [r1]
+ cmp r1, #0
+ bne _0222DF38
+ cmp r0, #1
+ bne _0222DF50
+_0222DF38:
+ ldr r0, [sp, #4]
+ add r7, r7, #1
+ cmp r7, r0
+ ble _0222DF50
+ mov r0, #0x42
+ add r1, r5, r6
+ add r2, r4, #1
+ lsl r0, r0, #4
+ add r6, r6, #1
+ strb r2, [r1, r0]
+ cmp r6, #8
+ bge _0222DF56
+_0222DF50:
+ add r4, r4, #1
+ cmp r4, #0x51
+ blt _0222DF22
+_0222DF56:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222DEF8
+
+ thumb_func_start MOD62_0222DF5C
+MOD62_0222DF5C: ; 0x0222DF5C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r7, r0, #0
+ add r0, #0xdc
+ ldr r6, [r0]
+ add r0, r7, #0
+ add r0, #0xe0
+ ldr r5, [r0]
+ add r0, r7, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r4, #0
+ str r0, [sp, #0x18]
+_0222DF76:
+ mov r0, #0x42
+ add r1, r7, r4
+ lsl r0, r0, #4
+ ldrb r0, [r1, r0]
+ bl FUN_02085FAC
+ add r3, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222DFF4 ; =0x000061A8
+ add r1, r5, #0
+ add r0, r4, r0
+ str r0, [sp, #8]
+ add r0, r6, #0
+ mov r2, #0x5b
+ bl FUN_0200C00C
+ add r4, r4, #1
+ cmp r4, #8
+ blt _0222DF76
+ mov r0, #0x5b
+ str r0, [sp]
+ add r0, #0xca
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _0222DFF8 ; =0x000066B4
+ mov r1, #3
+ str r0, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r2, r6, #0
+ add r3, r5, #0
+ bl FUN_0200C0DC
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222DFFC ; =0x00006A2C
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r6, #0
+ mov r2, #0x5b
+ mov r3, #0xb4
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222E000 ; =0x00006DB8
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r6, #0
+ mov r2, #0x5b
+ mov r3, #0x58
+ bl FUN_0200C13C
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222DFF4: .word 0x000061A8
+_0222DFF8: .word 0x000066B4
+_0222DFFC: .word 0x00006A2C
+_0222E000: .word 0x00006DB8
+ thumb_func_end MOD62_0222DF5C
+
+ thumb_func_start MOD62_0222E004
+MOD62_0222E004: ; 0x0222E004
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x58
+ add r5, r0, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ mov r4, #0
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r7, [r0]
+ add r0, sp, #4
+ strh r4, [r0, #0x20]
+ strh r4, [r0, #0x22]
+ strh r4, [r0, #0x24]
+ strh r4, [r0, #0x26]
+ mov r0, #0x3c
+ str r0, [sp, #0x2c]
+ mov r0, #2
+ str r0, [sp, #0x34]
+ mov r0, #1
+ str r0, [sp, #0x50]
+ sub r0, r0, #2
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x4c]
+ ldr r0, _0222E0B4 ; =0x000066B4
+ str r4, [sp, #0x54]
+ str r0, [sp, #0x3c]
+ ldr r0, _0222E0B8 ; =0x00006A2C
+ str r4, [sp, #0x30]
+ str r0, [sp, #0x40]
+ ldr r0, _0222E0BC ; =0x00006DB8
+ str r0, [sp, #0x44]
+ mov r0, #0xf9
+ lsl r0, r0, #2
+ add r6, r5, r0
+_0222E04A:
+ ldr r0, _0222E0C0 ; =0x000061A8
+ add r1, r7, #0
+ add r0, r4, r0
+ str r0, [sp, #0x38]
+ ldr r0, [sp]
+ add r2, sp, #0x24
+ bl FUN_0200C154
+ add r4, r4, #1
+ stmia r6!, {r0}
+ cmp r4, #8
+ blt _0222E04A
+ ldr r3, _0222E0C4 ; =0x02231158
+ add r2, sp, #4
+ mov r1, #0x10
+_0222E068:
+ ldrh r0, [r3]
+ add r3, r3, #2
+ strh r0, [r2]
+ add r2, r2, #2
+ sub r1, r1, #1
+ bne _0222E068
+ mov r7, #0xf9
+ mov r6, #0
+ add r4, sp, #4
+ lsl r7, r7, #2
+_0222E07C:
+ mov r2, #2
+ ldrsh r2, [r4, r2]
+ mov r0, #0xf9
+ mov r1, #0
+ lsl r0, r0, #2
+ sub r2, r2, #1
+ lsl r2, r2, #0x10
+ ldrsh r1, [r4, r1]
+ ldr r0, [r5, r0]
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ mov r0, #0xf9
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0200C5A8
+ ldr r0, [r5, r7]
+ mov r1, #0
+ bl FUN_0200C61C
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #8
+ blt _0222E07C
+ add sp, #0x58
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222E0B4: .word 0x000066B4
+_0222E0B8: .word 0x00006A2C
+_0222E0BC: .word 0x00006DB8
+_0222E0C0: .word 0x000061A8
+_0222E0C4: .word 0x02231158
+ thumb_func_end MOD62_0222E004
+
+ thumb_func_start MOD62_0222E0C8
+MOD62_0222E0C8: ; 0x0222E0C8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r7, #0xf9
+ mov r4, #0
+ add r5, r6, #0
+ lsl r7, r7, #2
+_0222E0D4:
+ add r0, r6, #0
+ add r0, #0xe0
+ ldr r1, _0222E0F4 ; =0x000061A8
+ ldr r0, [r0]
+ add r1, r4, r1
+ bl FUN_0200C358
+ ldr r0, [r5, r7]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #8
+ blt _0222E0D4
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E0F4: .word 0x000061A8
+ thumb_func_end MOD62_0222E0C8
+
+ thumb_func_start MOD62_0222E0F8
+MOD62_0222E0F8: ; 0x0222E0F8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r1, #0
+ mov r4, #0
+ str r0, [sp]
+ str r4, [sp, #4]
+ add r5, r7, #0
+ add r6, r7, #0
+_0222E108:
+ mov r0, #0x51
+ lsl r0, r0, #2
+ ldr r1, [r5, r0]
+ cmp r1, #0
+ beq _0222E120
+ add r0, r6, #0
+ bl MOD08_02217F08
+ cmp r0, #1
+ bne _0222E120
+ mov r0, #1
+ str r0, [sp, #4]
+_0222E120:
+ add r4, r4, #1
+ add r5, r5, #4
+ add r6, #0x24
+ cmp r4, #8
+ blt _0222E108
+ mov r0, #0x12
+ lsl r0, r0, #4
+ add r0, r7, r0
+ bl MOD08_02217ECC
+ cmp r0, #1
+ bne _0222E160
+ mov r3, #0x59
+ mov r0, #1
+ lsl r3, r3, #2
+ str r0, [sp, #4]
+ ldr r0, [r7, r3]
+ sub r3, #0x44
+ ldrsh r3, [r7, r3]
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020179E0
+ mov r3, #0x59
+ lsl r3, r3, #2
+ ldr r0, [r7, r3]
+ sub r3, #0x42
+ ldrsh r3, [r7, r3]
+ mov r1, #5
+ mov r2, #3
+ bl FUN_020179E0
+_0222E160:
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ bne _0222E17C
+ mov r0, #0x5b
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ mov r1, #0
+ str r1, [r0]
+ add r0, r7, #0
+ bl FUN_02016A18
+ ldr r0, [sp]
+ bl FUN_0200CAB4
+_0222E17C:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222E0F8
+
+ thumb_func_start MOD62_0222E180
+MOD62_0222E180: ; 0x0222E180
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ str r1, [sp, #0xc]
+ mov r1, #0x17
+ str r0, [sp, #8]
+ mov r0, #0x35
+ lsl r1, r1, #4
+ str r2, [sp, #0x10]
+ bl FUN_02016998
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #8]
+ mov r1, #0x59
+ add r0, #0xe4
+ ldr r2, [r0]
+ ldr r0, [sp, #0x1c]
+ lsl r1, r1, #2
+ str r2, [r0, r1]
+ add r4, r0, #0
+ add r5, r0, #0
+ ldr r0, [sp, #0xc]
+ mov r1, #0x38
+ lsl r0, r0, #4
+ neg r0, r0
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0xc]
+ ldr r6, [sp, #8]
+ mul r1, r0
+ ldr r0, [sp, #0x10]
+ mov r7, #0
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x20]
+_0222E1C4:
+ mov r0, #0xc9
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ cmp r0, #0
+ bne _0222E1D8
+ mov r0, #0x51
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _0222E22E
+_0222E1D8:
+ mov r0, #0xcb
+ lsl r0, r0, #2
+ ldr r1, [r6, r0]
+ mov r0, #0x51
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r1, sp, #0x24
+ ldr r0, [r4, r0]
+ add r1, #2
+ add r2, sp, #0x24
+ bl FUN_0200C7A0
+ add r1, sp, #0x24
+ mov r0, #0
+ ldrsh r3, [r1, r0]
+ mov r0, #2
+ ldrsh r1, [r1, r0]
+ ldr r0, [sp, #0x18]
+ ldr r2, [sp, #0x14]
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [sp, #0x20]
+ add r2, r1, r2
+ lsl r2, r2, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ asr r2, r2, #0x10
+ bl MOD08_02217E80
+ mov r1, #0x51
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD08_02217F08
+ mov r1, #0x51
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD08_02217F08
+_0222E22E:
+ add r7, r7, #1
+ add r6, #0x10
+ add r4, r4, #4
+ add r5, #0x24
+ cmp r7, #8
+ blt _0222E1C4
+ mov r1, #0x59
+ ldr r0, [sp, #0x1c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #5
+ bl FUN_02017B48
+ add r4, r0, #0
+ mov r1, #0x59
+ ldr r0, [sp, #0x1c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #5
+ bl FUN_02017B54
+ add r3, r0, #0
+ ldr r0, [sp, #0xc]
+ mov r5, #0x37
+ lsl r0, r0, #4
+ add r0, r3, r0
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ str r0, [sp]
+ ldr r0, [sp, #0x10]
+ mov r1, #0x12
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #4]
+ lsl r3, r3, #0x10
+ ldr r2, [sp, #0xc]
+ mvn r5, r5
+ mul r5, r2
+ add r2, r4, r5
+ lsl r2, r2, #0x10
+ ldr r0, [sp, #0x1c]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ lsl r1, r4, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl MOD08_02217E80
+ mov r2, #0x96
+ lsl r2, r2, #2
+ ldr r0, [sp, #8]
+ add r1, r2, #0
+ add r3, r0, r2
+ ldr r0, [sp, #0x1c]
+ sub r1, #0xec
+ str r3, [r0, r1]
+ sub r2, #0xec
+ ldr r0, [r0, r2]
+ mov r3, #1
+ str r3, [r0]
+ ldr r0, _0222E2B8 ; =MOD62_0222E0F8
+ ldr r1, [sp, #0x1c]
+ lsl r2, r3, #0xc
+ bl FUN_0200CA44
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E2B8: .word MOD62_0222E0F8
+ thumb_func_end MOD62_0222E180
+
+ thumb_func_start MOD62_0222E2BC
+MOD62_0222E2BC: ; 0x0222E2BC
+ push {r3, lr}
+ sub sp, #8
+ mov r2, #2
+ mov r1, #0
+ ldr r0, _0222E2D8 ; =MOD62_0222E2DC
+ str r2, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x35
+ add r3, r1, #0
+ bl FUN_02022318
+ add sp, #8
+ pop {r3, pc}
+ nop
+_0222E2D8: .word MOD62_0222E2DC
+ thumb_func_end MOD62_0222E2BC
+
+ thumb_func_start MOD62_0222E2DC
+MOD62_0222E2DC: ; 0x0222E2DC
+ push {r3, lr}
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r0, _0222E348 ; =0x04000008
+ mov r1, #3
+ ldrh r2, [r0]
+ bic r2, r1
+ mov r1, #1
+ orr r1, r2
+ strh r1, [r0]
+ add r0, #0x58
+ ldrh r2, [r0]
+ ldr r1, _0222E34C ; =0xFFFFCFFD
+ and r2, r1
+ strh r2, [r0]
+ add r2, r1, #2
+ ldrh r3, [r0]
+ add r1, r1, #2
+ and r3, r2
+ mov r2, #0x10
+ orr r2, r3
+ strh r2, [r0]
+ ldrh r3, [r0]
+ ldr r2, _0222E350 ; =0x0000CFFB
+ and r3, r2
+ strh r3, [r0]
+ ldrh r3, [r0]
+ sub r2, #0x1c
+ and r3, r1
+ mov r1, #8
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r1, [r0]
+ and r1, r2
+ strh r1, [r0]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl G3X_SetFog
+ mov r0, #0
+ ldr r2, _0222E354 ; =0x00007FFF
+ add r1, r0, #0
+ mov r3, #0x3f
+ str r0, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _0222E358 ; =0xBFFF0000
+ ldr r0, _0222E35C ; =0x04000580
+ str r1, [r0]
+ pop {r3, pc}
+ .align 2, 0
+_0222E348: .word 0x04000008
+_0222E34C: .word 0xFFFFCFFD
+_0222E350: .word 0x0000CFFB
+_0222E354: .word 0x00007FFF
+_0222E358: .word 0xBFFF0000
+_0222E35C: .word 0x04000580
+ thumb_func_end MOD62_0222E2DC
+
+ thumb_func_start MOD62_0222E360
+MOD62_0222E360: ; 0x0222E360
+ push {r3, r4, r5, lr}
+ ldr r3, _0222E398 ; =0x021064B8
+ mov r0, #2
+ mov r1, #0
+ ldr r3, [r3]
+ lsl r0, r0, #0xe
+ add r2, r1, #0
+ blx r3
+ ldr r3, _0222E39C ; =0x021064C0
+ mov r1, #0
+ add r4, r0, #0
+ ldr r3, [r3]
+ mov r0, #0x80
+ add r2, r1, #0
+ blx r3
+ add r5, r0, #0
+ cmp r4, #0
+ bne _0222E388
+ bl ErrorHandling
+_0222E388:
+ cmp r5, #0
+ bne _0222E390
+ bl ErrorHandling
+_0222E390:
+ bl FUN_02012CC8
+ pop {r3, r4, r5, pc}
+ nop
+_0222E398: .word 0x021064B8
+_0222E39C: .word 0x021064C0
+ thumb_func_end MOD62_0222E360
+
+ thumb_func_start MOD62_0222E3A0
+MOD62_0222E3A0: ; 0x0222E3A0
+ push {r3, lr}
+ bl FUN_020222AC
+ bl FUN_02013364
+ cmp r0, #0
+ ble _0222E3B6
+ bl FUN_020222AC
+ bl FUN_020B02C8
+_0222E3B6:
+ bl FUN_02013388
+ mov r0, #1
+ mov r1, #0
+ bl FUN_020222B4
+ pop {r3, pc}
+ thumb_func_end MOD62_0222E3A0
+
+ thumb_func_start MOD62_0222E3C4
+MOD62_0222E3C4: ; 0x0222E3C4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x40
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x14]
+ ldr r1, [sp, #0x58]
+ add r0, r3, #0
+ add r6, r2, #0
+ str r3, [sp, #0x1c]
+ bl MOD62_0222F89C
+ cmp r0, #3
+ bhi _0222E442
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222E3E8: ; jump table
+ .short _0222E3F0 - _0222E3E8 - 2 ; case 0
+ .short _0222E402 - _0222E3E8 - 2 ; case 1
+ .short _0222E418 - _0222E3E8 - 2 ; case 2
+ .short _0222E42E - _0222E3E8 - 2 ; case 3
+_0222E3F0:
+ mov r0, #0
+ str r0, [sp, #0x24]
+ mov r0, #4
+ str r0, [sp, #0x28]
+ mov r0, #1
+ mov r5, #0xd
+ mov r4, #6
+ str r0, [sp, #0x2c]
+ b _0222E442
+_0222E402:
+ mov r0, #2
+ str r0, [sp, #0x24]
+ mov r0, #0
+ str r0, [sp, #0x28]
+ mov r0, #4
+ str r0, [sp, #0x2c]
+ mov r0, #1
+ mov r5, #0xb
+ mov r4, #8
+ str r0, [sp, #0x30]
+ b _0222E442
+_0222E418:
+ mov r0, #3
+ str r0, [sp, #0x24]
+ mov r0, #0
+ str r0, [sp, #0x28]
+ mov r0, #4
+ str r0, [sp, #0x2c]
+ mov r0, #1
+ mov r5, #0xb
+ mov r4, #8
+ str r0, [sp, #0x30]
+ b _0222E442
+_0222E42E:
+ mov r0, #2
+ str r0, [sp, #0x24]
+ mov r0, #0
+ str r0, [sp, #0x28]
+ mov r0, #4
+ str r0, [sp, #0x2c]
+ mov r0, #1
+ mov r5, #0xb
+ mov r4, #8
+ str r0, [sp, #0x30]
+_0222E442:
+ lsr r0, r4, #0x1f
+ add r0, r4, r0
+ asr r7, r0, #1
+ ldr r0, [sp, #0x18]
+ bl FUN_0201901C
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #9
+ str r0, [sp, #4]
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ mov r0, #0xa6
+ str r0, [sp, #0x10]
+ lsl r2, r6, #0x18
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x18]
+ lsr r2, r2, #0x18
+ mov r3, #0x15
+ bl FUN_02019064
+ add r0, r7, #0
+ mov r1, #0x35
+ bl FUN_02012838
+ mov r2, #0x67
+ ldr r1, [sp, #0x1c]
+ lsl r2, r2, #2
+ str r0, [r1, r2]
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #8
+ mov r3, #0x35
+ bl FUN_0200A86C
+ mov r6, #0
+ str r0, [sp, #0x20]
+ cmp r7, #0
+ ble _0222E4D0
+ add r5, sp, #0x24
+_0222E49A:
+ ldr r1, [r5]
+ ldr r0, [sp, #0x20]
+ lsl r2, r1, #3
+ ldr r1, _0222E538 ; =0x02231358
+ ldr r1, [r1, r2]
+ bl FUN_0200A914
+ ldr r2, [r5]
+ add r4, r0, #0
+ lsl r3, r2, #3
+ ldr r2, _0222E538 ; =0x02231358
+ mov r0, #0x67
+ add r2, r2, r3
+ ldr r1, [sp, #0x1c]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, [r2, #4]
+ add r1, r4, #0
+ bl FUN_020128A0
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r6, r6, #1
+ add r5, r5, #4
+ cmp r6, r7
+ blt _0222E49A
+_0222E4D0:
+ ldr r0, [sp, #0x20]
+ bl FUN_0200A8B8
+ mov r1, #0x67
+ ldr r0, [sp, #0x1c]
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ mov r1, #0
+ str r0, [sp, #0x34]
+ add r0, sp, #0x24
+ strb r1, [r0, #0x18]
+ ldr r1, [sp, #0x18]
+ mov r2, #0xf
+ str r1, [sp, #0x38]
+ mov r1, #1
+ strb r1, [r0, #0x19]
+ strb r7, [r0, #0x1a]
+ ldrb r3, [r0, #0x1b]
+ bic r3, r2
+ strb r3, [r0, #0x1b]
+ ldrb r3, [r0, #0x1b]
+ mov r2, #0x30
+ bic r3, r2
+ strb r3, [r0, #0x1b]
+ ldrb r3, [r0, #0x1b]
+ mov r2, #0xc0
+ bic r3, r2
+ mov r2, #0x40
+ orr r2, r3
+ strb r2, [r0, #0x1b]
+ ldr r0, [sp, #0x18]
+ mov r2, #0x1f
+ mov r3, #0xd
+ bl FUN_0200CCA4
+ mov r0, #0x35
+ str r0, [sp]
+ mov r0, #2
+ mov r2, #0
+ str r0, [sp, #4]
+ add r0, sp, #0x34
+ mov r1, #8
+ add r3, r2, #0
+ bl FUN_02001C14
+ mov r2, #0x1a
+ ldr r1, [sp, #0x1c]
+ lsl r2, r2, #4
+ str r0, [r1, r2]
+ add sp, #0x40
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222E538: .word 0x02231358
+ thumb_func_end MOD62_0222E3C4
+
+ thumb_func_start MOD62_0222E53C
+MOD62_0222E53C: ; 0x0222E53C
+ push {r4, r5}
+ lsr r5, r0, #0x1f
+ lsl r4, r0, #0x1e
+ sub r4, r4, r5
+ mov r3, #0x1e
+ ror r4, r3
+ add r4, r5, r4
+ mov r3, #0x38
+ mul r3, r4
+ add r3, #0x28
+ strh r3, [r1]
+ asr r1, r0, #2
+ mov r0, #0x35
+ mul r0, r1
+ add r0, #0x1b
+ strh r0, [r2]
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD62_0222E53C
+
+ thumb_func_start MOD62_0222E560
+MOD62_0222E560: ; 0x0222E560
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r1, r0, #0
+ add r1, #0xdc
+ ldr r4, [r1]
+ add r1, r0, #0
+ add r1, #0xe0
+ add r0, #0xe8
+ ldr r5, [r1]
+ ldr r6, [r0]
+ bl FUN_0206B888
+ mov r1, #0x13
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ mov r0, #3
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ mov r0, #0xfa
+ lsl r0, r0, #6
+ str r0, [sp, #0x14]
+ add r0, r6, #0
+ mov r1, #2
+ add r2, r4, #0
+ add r3, r5, #0
+ bl FUN_0200C0DC
+ bl FUN_0206B894
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _0222E5D0 ; =0x00004268
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x13
+ bl FUN_0200C124
+ bl FUN_0206B8A0
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ ldr r0, _0222E5D4 ; =0x00004650
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x13
+ bl FUN_0200C13C
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0222E5D0: .word 0x00004268
+_0222E5D4: .word 0x00004650
+ thumb_func_end MOD62_0222E560
+
+ thumb_func_start MOD62_0222E5D8
+MOD62_0222E5D8: ; 0x0222E5D8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x4c
+ add r5, r0, #0
+ ldr r1, [r5]
+ mov r6, #0
+ ldr r0, [r1]
+ cmp r0, #0
+ ble _0222E6C6
+ str r6, [sp, #0xc]
+ add r4, r5, #0
+_0222E5EC:
+ ldr r0, [sp, #0xc]
+ add r0, r1, r0
+ ldr r7, [r0, #4]
+ add r0, r7, #0
+ bl FUN_0206B6C8
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, _0222E6CC ; =0x00003A98
+ add r1, r5, #0
+ add r0, r6, r0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ bl FUN_0200C978
+ mov r1, #0
+ add r0, sp, #0x18
+ strh r1, [r0]
+ strh r1, [r0, #2]
+ strh r1, [r0, #4]
+ strh r1, [r0, #6]
+ mov r0, #0xa
+ str r0, [sp, #0x20]
+ add r0, r1, #0
+ str r0, [sp, #0x24]
+ mov r0, #1
+ str r0, [sp, #0x28]
+ mov r0, #2
+ str r0, [sp, #0x44]
+ add r0, r1, #0
+ str r0, [sp, #0x48]
+ ldr r0, _0222E6CC ; =0x00003A98
+ add r2, sp, #0x18
+ add r0, r6, r0
+ str r0, [sp, #0x2c]
+ mov r0, #0xfa
+ lsl r0, r0, #6
+ str r0, [sp, #0x30]
+ ldr r0, _0222E6D0 ; =0x00004268
+ str r0, [sp, #0x34]
+ ldr r0, _0222E6D4 ; =0x00004650
+ str r0, [sp, #0x38]
+ sub r0, r1, #1
+ str r0, [sp, #0x3c]
+ sub r0, r1, #1
+ str r0, [sp, #0x40]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_0200C154
+ mov r1, #0xbf
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r7, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ mov r1, #0x4c
+ mov r2, #0
+ bl FUN_020671BC
+ str r0, [sp, #0x14]
+ add r0, r7, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020671BC
+ add r1, r0, #0
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x14]
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ mov r0, #0xbf
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r0, [r0]
+ bl FUN_020202DC
+ mov r0, #0xbf
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C5C0
+ ldr r0, [sp, #0xc]
+ ldr r1, [r5]
+ add r0, r0, #4
+ str r0, [sp, #0xc]
+ ldr r0, [r1]
+ add r6, r6, #1
+ add r4, r4, #4
+ cmp r6, r0
+ blt _0222E5EC
+_0222E6C6:
+ add sp, #0x4c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222E6CC: .word 0x00003A98
+_0222E6D0: .word 0x00004268
+_0222E6D4: .word 0x00004650
+ thumb_func_end MOD62_0222E5D8
+
+ thumb_func_start MOD62_0222E6D8
+MOD62_0222E6D8: ; 0x0222E6D8
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r6]
+ mov r4, #0
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _0222E700
+ mov r7, #0xbf
+ add r5, r6, #0
+ lsl r7, r7, #2
+_0222E6EC:
+ ldr r0, [r5, r7]
+ mov r1, #0
+ bl FUN_0200C644
+ ldr r0, [r6]
+ add r4, r4, #1
+ ldr r0, [r0]
+ add r5, r5, #4
+ cmp r4, r0
+ blt _0222E6EC
+_0222E700:
+ mov r5, #0
+ add r4, r6, #0
+_0222E704:
+ ldr r7, [r4, #4]
+ cmp r7, #0xff
+ beq _0222E748
+ add r1, sp, #0
+ add r0, r5, #0
+ add r1, #2
+ add r2, sp, #0
+ bl MOD62_0222E53C
+ add r2, sp, #0
+ mov r1, #2
+ ldrsh r1, [r2, r1]
+ add r3, r2, #0
+ mov r2, #0
+ ldrsh r2, [r3, r2]
+ lsl r0, r7, #2
+ add r7, r6, r0
+ mov r0, #0xbf
+ lsl r0, r0, #2
+ sub r1, #0x10
+ add r2, #0xc
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ ldr r0, [r7, r0]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ mov r0, #0xbf
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ mov r1, #1
+ bl FUN_0200C644
+_0222E748:
+ add r5, r5, #1
+ add r4, #8
+ cmp r5, #0xc
+ blt _0222E704
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222E6D8
+
+ thumb_func_start MOD62_0222E754
+MOD62_0222E754: ; 0x0222E754
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r6]
+ mov r4, #0
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _0222E77A
+ mov r7, #0xbf
+ add r5, r6, #0
+ lsl r7, r7, #2
+_0222E768:
+ ldr r0, [r5, r7]
+ bl FUN_0200C5A8
+ ldr r0, [r6]
+ add r4, r4, #1
+ ldr r0, [r0]
+ add r5, r5, #4
+ cmp r4, r0
+ blt _0222E768
+_0222E77A:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222E754
+
+ thumb_func_start MOD62_0222E77C
+MOD62_0222E77C: ; 0x0222E77C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ ldr r0, [r6]
+ mov r4, #0
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _0222E7A2
+ mov r7, #0xbf
+ add r5, r6, #0
+ lsl r7, r7, #2
+_0222E790:
+ ldr r0, [r5, r7]
+ bl FUN_0200C3DC
+ ldr r0, [r6]
+ add r4, r4, #1
+ ldr r0, [r0]
+ add r5, r5, #4
+ cmp r4, r0
+ blt _0222E790
+_0222E7A2:
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222E77C
+
+ thumb_func_start MOD62_0222E7A4
+MOD62_0222E7A4: ; 0x0222E7A4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r6, #0
+ add r4, r7, #0
+ add r5, r7, #0
+_0222E7AE:
+ ldr r0, [r4, #8]
+ bl MOD62_0222F870
+ mov r1, #0x9a
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x99
+ ldr r1, [r4, #4]
+ lsl r0, r0, #2
+ str r1, [r5, r0]
+ add r0, r0, #4
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ bne _0222E7DC
+ mov r0, #0x99
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ cmp r0, #0xff
+ beq _0222E7DC
+ add r0, r7, #0
+ add r1, r6, #0
+ bl MOD62_02230D38
+_0222E7DC:
+ add r6, r6, #1
+ add r4, #8
+ add r5, #0xc
+ cmp r6, #0xc
+ blt _0222E7AE
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222E7A4
+
+ thumb_func_start MOD62_0222E7E8
+MOD62_0222E7E8: ; 0x0222E7E8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x4c
+ add r4, r0, #0
+ mov r0, #0x35
+ bl FUN_0200BB14
+ add r2, sp, #0x2c
+ ldr r5, _0222E868 ; =0x02231138
+ str r0, [r4, #8]
+ ldmia r5!, {r0, r1}
+ add r3, r2, #0
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ ldr r6, _0222E86C ; =0x0223110C
+ stmia r2!, {r0, r1}
+ add r5, sp, #0x18
+ ldmia r6!, {r0, r1}
+ add r2, r5, #0
+ stmia r5!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r3, #0
+ str r0, [r5]
+ ldr r0, [r4, #8]
+ mov r3, #0x20
+ bl FUN_0200BB6C
+ ldr r3, _0222E870 ; =0x02231120
+ add r2, sp, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r4, #8]
+ bl FUN_0200BB34
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ mov r2, #0x80
+ bl FUN_0200BBF0
+ cmp r0, #0
+ bne _0222E852
+ bl ErrorHandling
+_0222E852:
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ add r2, sp, #0
+ bl FUN_0200BF60
+ cmp r0, #0
+ bne _0222E864
+ bl ErrorHandling
+_0222E864:
+ add sp, #0x4c
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0222E868: .word 0x02231138
+_0222E86C: .word 0x0223110C
+_0222E870: .word 0x02231120
+ thumb_func_end MOD62_0222E7E8
+
+ thumb_func_start MOD62_0222E874
+MOD62_0222E874: ; 0x0222E874
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ ldr r1, [r4, #0xc]
+ bl FUN_0200C398
+ ldr r0, [r4, #8]
+ bl FUN_0200BD04
+ pop {r4, pc}
+ thumb_func_end MOD62_0222E874
+
+ thumb_func_start MOD62_0222E888
+MOD62_0222E888: ; 0x0222E888
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222E8EC ; =0x0000AFC8
+ add r1, r4, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ mov r2, #0x5b
+ add r3, r2, #0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r3, #0xae
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222E8F0 ; =0x0000B798
+ add r1, r4, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x5b
+ mov r3, #0xad
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222E8F4 ; =0x0000BB80
+ mov r2, #0x5b
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xdc
+ add r4, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r4]
+ mov r3, #0x51
+ bl FUN_0200C13C
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_0222E8EC: .word 0x0000AFC8
+_0222E8F0: .word 0x0000B798
+_0222E8F4: .word 0x0000BB80
+ thumb_func_end MOD62_0222E888
+
+ thumb_func_start MOD62_0222E8F8
+MOD62_0222E8F8: ; 0x0222E8F8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x64
+ ldr r4, _0222E97C ; =0x02231178
+ add r6, r0, #0
+ add r3, sp, #0
+ mov r2, #6
+_0222E904:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _0222E904
+ mov r7, #0
+ add r4, sp, #0
+ add r5, r6, #0
+_0222E912:
+ ldr r1, [r4]
+ add r0, sp, #0
+ strh r1, [r0, #0x30]
+ ldr r1, [r4, #4]
+ add r2, sp, #0x30
+ strh r1, [r0, #0x32]
+ mov r1, #0
+ strh r1, [r0, #0x34]
+ strh r1, [r0, #0x36]
+ mov r0, #0x28
+ str r0, [sp, #0x38]
+ mov r0, #2
+ str r0, [sp, #0x3c]
+ str r0, [sp, #0x40]
+ mov r0, #1
+ str r0, [sp, #0x5c]
+ add r0, r1, #0
+ str r0, [sp, #0x60]
+ ldr r0, _0222E980 ; =0x0000AFC8
+ str r0, [sp, #0x44]
+ ldr r0, _0222E984 ; =0x000066B2
+ str r0, [sp, #0x48]
+ ldr r0, _0222E988 ; =0x0000B798
+ str r0, [sp, #0x4c]
+ ldr r0, _0222E98C ; =0x0000BB80
+ str r0, [sp, #0x50]
+ sub r0, r1, #1
+ str r0, [sp, #0x54]
+ sub r0, r1, #1
+ str r0, [sp, #0x58]
+ add r0, r6, #0
+ add r1, r6, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_0200C154
+ mov r1, #0xc5
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #8]
+ bl FUN_0200C8D0
+ add r7, r7, #1
+ add r4, #0xc
+ add r5, r5, #4
+ cmp r7, #4
+ blt _0222E912
+ add sp, #0x64
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222E97C: .word 0x02231178
+_0222E980: .word 0x0000AFC8
+_0222E984: .word 0x000066B2
+_0222E988: .word 0x0000B798
+_0222E98C: .word 0x0000BB80
+ thumb_func_end MOD62_0222E8F8
+
+ thumb_func_start MOD62_0222E990
+MOD62_0222E990: ; 0x0222E990
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _0222E9B0
+ mov r6, #0xc5
+ mov r4, #0
+ lsl r6, r6, #2
+_0222E9A2:
+ ldr r0, [r5, r6]
+ bl FUN_0200C5A8
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _0222E9A2
+_0222E9B0:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222E990
+
+ thumb_func_start MOD62_0222E9B4
+MOD62_0222E9B4: ; 0x0222E9B4
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0xc5
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+ lsl r7, r7, #2
+_0222E9C0:
+ ldr r0, [r5, r7]
+ add r1, r6, #0
+ bl FUN_0200C644
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _0222E9C0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222E9B4
+
+ thumb_func_start MOD62_0222E9D4
+MOD62_0222E9D4: ; 0x0222E9D4
+ push {r4, r5, r6, lr}
+ mov r6, #0xc5
+ add r5, r0, #0
+ mov r4, #0
+ lsl r6, r6, #2
+_0222E9DE:
+ ldr r0, [r5, r6]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _0222E9DE
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222E9D4
+
+ thumb_func_start MOD62_0222E9F0
+MOD62_0222E9F0: ; 0x0222E9F0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ mov r6, #1
+ str r6, [sp]
+ ldr r6, [sp, #0x3c]
+ add r7, r2, #0
+ str r6, [sp, #4]
+ ldr r6, _0222EA68 ; =0x00002AF8
+ add r2, r3, #0
+ add r2, r2, r6
+ str r2, [sp, #8]
+ mov r2, #0x5b
+ add r5, r0, #0
+ add r4, r1, #0
+ bl FUN_0200C00C
+ mov r0, #0x5b
+ str r0, [sp]
+ ldr r0, [sp, #0x30]
+ mov r1, #0
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ ldr r1, [sp, #0x44]
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ ldr r1, [sp, #0x3c]
+ add r3, r4, #0
+ str r1, [sp, #0x10]
+ add r1, r6, #0
+ add r0, r0, r1
+ str r0, [sp, #0x14]
+ ldr r1, [sp, #0x40]
+ add r0, r7, #0
+ bl FUN_0200C0DC
+ mov r0, #1
+ str r0, [sp]
+ ldr r3, [sp, #0x34]
+ add r0, r6, #0
+ add r0, r3, r0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x5b
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r3, [sp, #0x38]
+ add r0, r6, #0
+ add r0, r3, r0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x5b
+ bl FUN_0200C13C
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222EA68: .word 0x00002AF8
+ thumb_func_end MOD62_0222E9F0
+
+ thumb_func_start MOD62_0222EA6C
+MOD62_0222EA6C: ; 0x0222EA6C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x54
+ add r5, r0, #0
+ ldr r0, _0222EC14 ; =0x0000011E
+ add r2, r5, #0
+ str r0, [sp]
+ mov r0, #0xae
+ str r0, [sp, #4]
+ mov r3, #0x52
+ str r3, [sp, #8]
+ mov r1, #1
+ str r1, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ add r2, #0xe8
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ add r3, #0xb8
+ bl MOD62_0222E9F0
+ ldr r0, _0222EC18 ; =0x00000123
+ add r2, r5, #0
+ str r0, [sp]
+ mov r0, #0xb3
+ str r0, [sp, #4]
+ mov r3, #0x57
+ str r3, [sp, #8]
+ mov r1, #1
+ str r1, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ add r2, #0xe8
+ ldr r0, [r0]
+ ldr r1, [r1]
+ ldr r2, [r2]
+ add r3, #0xbc
+ bl MOD62_0222E9F0
+ mov r6, #0
+ add r4, r5, #0
+ add r7, sp, #0x18
+_0222EAD4:
+ mov r0, #0
+ strh r0, [r7, #8]
+ strh r0, [r7, #0xa]
+ strh r0, [r7, #0xc]
+ mov r0, #0x9a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r5, #0
+ strh r0, [r7, #0xe]
+ mov r0, #0x28
+ sub r0, r0, r6
+ str r0, [sp, #0x28]
+ mov r0, #0
+ str r0, [sp, #0x2c]
+ mov r0, #1
+ str r0, [sp, #0x30]
+ mov r0, #2
+ str r0, [sp, #0x4c]
+ mov r0, #0
+ str r0, [sp, #0x50]
+ ldr r0, _0222EC1C ; =0x00002C02
+ add r1, #0xe0
+ str r0, [sp, #0x34]
+ add r0, #0x14
+ str r0, [sp, #0x38]
+ ldr r0, _0222EC20 ; =0x00002BA6
+ add r2, sp, #0x20
+ str r0, [sp, #0x3c]
+ sub r0, #0x5c
+ str r0, [sp, #0x40]
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ add r0, r5, #0
+ add r0, #0xdc
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_0200C154
+ mov r1, #0x9b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r1, sp, #0x1c
+ add r0, r6, #0
+ add r1, #2
+ add r2, sp, #0x1c
+ bl MOD62_0222E53C
+ mov r0, #0x9b
+ mov r1, #6
+ mov r2, #4
+ lsl r0, r0, #2
+ ldrsh r1, [r7, r1]
+ ldrsh r2, [r7, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0200C714
+ add r6, r6, #1
+ add r4, #0xc
+ cmp r6, #0xc
+ blt _0222EAD4
+ mov r1, #0
+ add r0, sp, #0x18
+ strh r1, [r0, #8]
+ strh r1, [r0, #0xa]
+ strh r1, [r0, #0xc]
+ strh r1, [r0, #0xe]
+ mov r0, #0x14
+ str r0, [sp, #0x28]
+ mov r0, #1
+ str r1, [sp, #0x2c]
+ str r1, [sp, #0x50]
+ ldr r1, _0222EC24 ; =0x00002C0B
+ str r0, [sp, #0x30]
+ add r0, r1, #0
+ add r0, #0x10
+ str r0, [sp, #0x38]
+ add r0, r1, #0
+ mov r2, #2
+ sub r0, #0x60
+ str r1, [sp, #0x34]
+ str r0, [sp, #0x3c]
+ sub r0, r2, #3
+ sub r1, #0xbc
+ str r1, [sp, #0x40]
+ add r1, r5, #0
+ str r2, [sp, #0x4c]
+ str r0, [sp, #0x44]
+ str r0, [sp, #0x48]
+ add r0, r5, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, sp, #0x20
+ bl FUN_0200C154
+ mov r1, #0xbd
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xdc
+ add r1, #0xe0
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, sp, #0x20
+ bl FUN_0200C154
+ mov r1, #0xbe
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r1, #0xcc
+ ldr r0, [r5, r1]
+ add r1, sp, #0x18
+ add r1, #2
+ add r2, sp, #0x18
+ bl MOD62_0222E53C
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ add r3, sp, #0x18
+ mov r1, #2
+ mov r2, #0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ ldr r0, [r5, r0]
+ bl FUN_0200C714
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ add r3, sp, #0x18
+ mov r1, #2
+ mov r2, #0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ ldr r0, [r5, r0]
+ bl FUN_0200C714
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x19
+ bl FUN_0200C6C4
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200C5C0
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_0200C5C0
+ add sp, #0x54
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222EC14: .word 0x0000011E
+_0222EC18: .word 0x00000123
+_0222EC1C: .word 0x00002C02
+_0222EC20: .word 0x00002BA6
+_0222EC24: .word 0x00002C0B
+ thumb_func_end MOD62_0222EA6C
+
+ thumb_func_start MOD62_0222EC28
+MOD62_0222EC28: ; 0x0222EC28
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl MOD62_0222E7A4
+ add r0, r5, #0
+ bl MOD62_0222E6D8
+ mov r7, #0x9a
+ lsl r7, r7, #2
+ mov r4, #0
+ add r6, r7, #4
+_0222EC3E:
+ ldr r0, [r5, r6]
+ cmp r0, #0
+ beq _0222EC4A
+ ldr r1, [r5, r7]
+ bl FUN_0200C5C0
+_0222EC4A:
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, #0xc
+ blt _0222EC3E
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222EC28
+
+ thumb_func_start MOD62_0222EC54
+MOD62_0222EC54: ; 0x0222EC54
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ add r5, r0, #0
+ lsl r6, r1, #3
+ add r0, r5, r6
+ ldr r0, [r0, #4]
+ lsl r4, r2, #3
+ str r1, [sp]
+ add r1, r5, r4
+ ldr r7, [r1, #4]
+ cmp r0, #0xff
+ beq _0222EC80
+ add r1, r2, #1
+ str r1, [sp, #0xc]
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #4]
+ mov r1, #0xa1
+ add r2, sp, #0xc
+ bl FUN_02067830
+_0222EC80:
+ cmp r7, #0xff
+ beq _0222EC9A
+ ldr r0, [sp]
+ add r2, sp, #8
+ add r0, r0, #1
+ str r0, [sp, #8]
+ ldr r1, [r5]
+ lsl r0, r7, #2
+ add r0, r1, r0
+ ldr r0, [r0, #4]
+ mov r1, #0xa1
+ bl FUN_02067830
+_0222EC9A:
+ add r2, r5, #4
+ ldr r1, [r2, r6]
+ ldr r0, [r2, r4]
+ add r7, r5, #0
+ str r0, [r2, r6]
+ str r1, [r2, r4]
+ add r7, #8
+ ldr r0, [r7, r6]
+ add r1, sp, #0x10
+ bl FUN_02029C74
+ add r0, r5, #0
+ str r0, [sp, #4]
+ add r0, #8
+ str r0, [sp, #4]
+ ldr r0, [r0, r4]
+ ldr r1, [r7, r6]
+ bl FUN_02029C74
+ ldr r1, [sp, #4]
+ add r0, sp, #0x10
+ ldr r1, [r1, r4]
+ bl FUN_02029C74
+ add r0, r5, #0
+ bl MOD62_0222EC28
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222EC54
+
+ thumb_func_start MOD62_0222ECD4
+MOD62_0222ECD4: ; 0x0222ECD4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r6, #0x9b
+ mov r4, #0
+ add r5, r7, #0
+ lsl r6, r6, #2
+_0222ECE0:
+ ldr r0, [r5, r6]
+ bl FUN_0200C5A8
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, #0xc
+ blt _0222ECE0
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ bl FUN_0200C5A8
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ bl FUN_0200C5A8
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222ECD4
+
+ thumb_func_start MOD62_0222ED04
+MOD62_0222ED04: ; 0x0222ED04
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r6, #0x9b
+ mov r4, #0
+ add r5, r7, #0
+ lsl r6, r6, #2
+_0222ED10:
+ ldr r0, [r5, r6]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, #0xc
+ blt _0222ED10
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ bl FUN_0200C3DC
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r7, r0]
+ bl FUN_0200C3DC
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222ED04
+
+ thumb_func_start MOD62_0222ED34
+MOD62_0222ED34: ; 0x0222ED34
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r6, r2, #0
+ add r4, r1, #0
+ lsl r1, r6, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp]
+ mov r1, #0x35
+ str r1, [sp, #4]
+ mov r1, #1
+ add r2, r1, #0
+ mov r3, #0xf
+ add r5, r0, #0
+ bl FUN_0200CD68
+ add r0, r6, #0
+ bl FUN_0200CD64
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xc0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0x26
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x35
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #1
+ mov r2, #0x1f
+ mov r3, #0xd
+ bl FUN_0200CB00
+ bl FUN_0200CAFC
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xd0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0x26
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xe0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #7
+ mov r3, #0x35
+ bl FUN_020030E8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD62_0222ED34
+
+ thumb_func_start MOD62_0222EDBC
+MOD62_0222EDBC: ; 0x0222EDBC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r6, r2, #0
+ add r4, r1, #0
+ lsl r1, r6, #0x18
+ lsr r1, r1, #0x18
+ str r1, [sp]
+ mov r1, #0x35
+ str r1, [sp, #4]
+ mov r1, #4
+ mov r2, #1
+ mov r3, #0xf
+ add r5, r0, #0
+ bl FUN_0200CD68
+ add r0, r6, #0
+ bl FUN_0200CD64
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xc0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0x26
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x35
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r1, #4
+ mov r2, #0x1f
+ mov r3, #0xd
+ bl FUN_0200CB00
+ bl FUN_0200CAFC
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xd0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0x26
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0xe0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #7
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x30
+ str r0, [sp, #8]
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #7
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x20
+ mov r1, #0x5b
+ str r0, [sp, #4]
+ mov r0, #0xb0
+ add r2, r1, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r2, #0xcb
+ mov r3, #0x35
+ bl FUN_020030E8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222EDBC
+
+ thumb_func_start MOD62_0222EE78
+MOD62_0222EE78: ; 0x0222EE78
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, _0222EEDC ; =0x0000FFFF
+ add r4, r0, #0
+ cmp r5, r1
+ bne _0222EE96
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r4, #0
+ bl FUN_020191D0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0222EE96:
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #8
+ mov r3, #0x35
+ bl FUN_0200A86C
+ add r1, r5, #0
+ add r6, r0, #0
+ bl FUN_0200A914
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r0, r4, #0
+ add r2, r5, #0
+ add r3, r1, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r4, #0
+ bl FUN_020191D0
+ add r0, r5, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0222EEDC: .word 0x0000FFFF
+ thumb_func_end MOD62_0222EE78
+
+ thumb_func_start MOD62_0222EEE0
+MOD62_0222EEE0: ; 0x0222EEE0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl FUN_0201901C
+ ldr r0, [sp, #0x28]
+ lsl r2, r4, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x2c]
+ lsl r3, r6, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x30]
+ add r1, r5, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ mov r0, #0xe
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x34]
+ lsr r2, r2, #0x18
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ mov r1, #1
+ add r0, r5, #0
+ add r2, r1, #0
+ mov r3, #0xc
+ bl FUN_0200D0BC
+ add r0, r5, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r5, #0
+ bl FUN_020191D0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222EEE0
+
+ thumb_func_start MOD62_0222EF44
+MOD62_0222EF44: ; 0x0222EF44
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r1, #0
+ add r7, r0, #0
+ add r0, r5, #0
+ add r4, r2, #0
+ add r6, r3, #0
+ bl FUN_0201901C
+ ldr r0, [sp, #0x28]
+ lsl r2, r4, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [sp, #0x2c]
+ lsl r3, r6, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x30]
+ add r1, r5, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x38]
+ lsr r2, r2, #0x18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x34]
+ lsr r3, r3, #0x18
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ bl FUN_02019064
+ add r0, r5, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r5, #0
+ bl FUN_020191D0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222EF44
+
+ thumb_func_start MOD62_0222EFA0
+MOD62_0222EFA0: ; 0x0222EFA0
+ push {r3, r4, lr}
+ sub sp, #0x14
+ mov r1, #2
+ add r4, r0, #0
+ str r1, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r1, #0x94
+ str r1, [sp, #0xc]
+ mov r0, #0xb
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xe4
+ add r1, #0x88
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #3
+ bl MOD62_0222EF44
+ mov r1, #2
+ str r1, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r1, #0x9c
+ str r1, [sp, #0xc]
+ mov r0, #0xb
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xe4
+ add r1, #0x90
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #0xa
+ bl MOD62_0222EF44
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r1, #0xa4
+ str r1, [sp, #0xc]
+ mov r0, #0xb
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xe4
+ add r1, #0x98
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #3
+ bl MOD62_0222EF44
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r1, #0xac
+ str r1, [sp, #0xc]
+ mov r0, #0xb
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xe4
+ add r1, #0xa0
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #0xa
+ bl MOD62_0222EF44
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r1, #0xb4
+ str r1, [sp, #0xc]
+ mov r0, #0xb
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xe4
+ add r1, #0xa8
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #3
+ bl MOD62_0222EF44
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r1, #0xbc
+ str r1, [sp, #0xc]
+ mov r0, #0xb
+ str r0, [sp, #0x10]
+ add r0, r4, #0
+ add r0, #0xe4
+ add r1, #0xb0
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #0xa
+ bl MOD62_0222EF44
+ mov r2, #0xb
+ str r2, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r1, #0xc4
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ str r2, [sp, #0x10]
+ add r0, #0xe4
+ add r1, #0xb8
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #3
+ bl MOD62_0222EF44
+ mov r2, #0xb
+ str r2, [sp]
+ mov r0, #4
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r1, #0xcc
+ str r1, [sp, #0xc]
+ add r0, r4, #0
+ str r2, [sp, #0x10]
+ add r0, #0xe4
+ add r1, #0xc0
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r2, #6
+ mov r3, #0xa
+ bl MOD62_0222EF44
+ add sp, #0x14
+ pop {r3, r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222EFA0
+
+ thumb_func_start MOD62_0222F0D4
+MOD62_0222F0D4: ; 0x0222F0D4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r7, r0, #0
+ add r5, r7, #0
+ add r5, #0xec
+ mov r6, #3
+ add r5, #0x30
+_0222F0E2:
+ ldr r0, _0222F160 ; =0x0000041D
+ add r1, r7, r6
+ ldrb r0, [r1, r0]
+ str r0, [sp, #0x10]
+ cmp r0, #0
+ bne _0222F0FE
+ add r0, r5, #0
+ mov r1, #0xee
+ bl FUN_02019620
+ add r0, r5, #0
+ bl FUN_020191D0
+ b _0222F152
+_0222F0FE:
+ add r0, r5, #0
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0x64
+ mov r1, #0x35
+ bl FUN_020219F4
+ ldr r1, [sp, #0x10]
+ add r4, r0, #0
+ ldr r0, [r7, #0x64]
+ sub r1, r1, #1
+ bl FUN_02029CF4
+ add r1, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ add r0, r4, #0
+ mov r2, #3
+ mov r3, #1
+ bl FUN_02021B04
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0222F164 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ add r2, r4, #0
+ mov r3, #7
+ bl FUN_0201BDE0
+ add r0, r5, #0
+ bl FUN_020191D0
+ add r0, r4, #0
+ bl FUN_02021A20
+_0222F152:
+ add r6, r6, #1
+ add r5, #0x10
+ cmp r6, #0xb
+ blt _0222F0E2
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_0222F160: .word 0x0000041D
+_0222F164: .word 0x00010200
+ thumb_func_end MOD62_0222F0D4
+
+ thumb_func_start MOD62_0222F168
+MOD62_0222F168: ; 0x0222F168
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ add r0, r1, #3
+ lsl r4, r0, #4
+ mov r0, #0x42
+ add r1, r6, r1
+ lsl r0, r0, #4
+ add r5, r6, #0
+ ldrb r7, [r1, r0]
+ add r5, #0xec
+ cmp r7, #0
+ bne _0222F194
+ add r0, r5, r4
+ mov r1, #0xee
+ bl FUN_02019620
+ add r0, r5, r4
+ bl FUN_020191D0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+_0222F194:
+ add r0, r5, r4
+ mov r1, #0
+ bl FUN_02019620
+ mov r0, #0x64
+ mov r1, #0x35
+ bl FUN_020219F4
+ str r0, [sp, #0x10]
+ ldr r0, [r6, #0x64]
+ sub r1, r7, #1
+ bl FUN_02029CF4
+ add r1, r0, #0
+ mov r3, #1
+ ldr r0, [sp, #0x10]
+ mov r2, #3
+ str r3, [sp]
+ bl FUN_02021B04
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, _0222F1E4 ; =0x00010200
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #8]
+ add r0, r5, r4
+ mov r3, #7
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r5, r4
+ bl FUN_020191D0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_0222F1E4: .word 0x00010200
+ thumb_func_end MOD62_0222F168
+
+ thumb_func_start MOD62_0222F1E8
+MOD62_0222F1E8: ; 0x0222F1E8
+ push {r3, r4, r5, lr}
+ add r0, #0xec
+ add r5, r0, #0
+ mov r4, #3
+ add r5, #0x30
+_0222F1F2:
+ add r0, r5, #0
+ bl FUN_02019570
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #0xb
+ blt _0222F1F2
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD62_0222F1E8
+
+ thumb_func_start MOD62_0222F208
+MOD62_0222F208: ; 0x0222F208
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ ldr r1, _0222F26C ; =0x0000FFFF
+ add r4, r0, #0
+ cmp r5, r1
+ bne _0222F226
+ mov r1, #0xf
+ bl FUN_02019620
+ add r0, r4, #0
+ bl FUN_020191D0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+_0222F226:
+ mov r0, #0
+ mov r1, #0x1a
+ mov r2, #0xa
+ mov r3, #0x35
+ bl FUN_0200A86C
+ add r1, r5, #0
+ add r6, r0, #0
+ bl FUN_0200A914
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ add r0, r4, #0
+ add r2, r5, #0
+ add r3, r1, #0
+ str r1, [sp, #8]
+ bl FUN_0201BD84
+ add r0, r4, #0
+ bl FUN_020191D0
+ add r0, r5, #0
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0222F26C: .word 0x0000FFFF
+ thumb_func_end MOD62_0222F208
+
+ thumb_func_start MOD62_0222F270
+MOD62_0222F270: ; 0x0222F270
+ push {r3, lr}
+ bl FUN_0201E788
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ pop {r3, pc}
+ thumb_func_end MOD62_0222F270
+
+ thumb_func_start MOD62_0222F288
+MOD62_0222F288: ; 0x0222F288
+ push {lr}
+ sub sp, #0xc
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x35
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222F288
+
+ thumb_func_start MOD62_0222F2A8
+MOD62_0222F2A8: ; 0x0222F2A8
+ push {lr}
+ sub sp, #0xc
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x35
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {pc}
+ thumb_func_end MOD62_0222F2A8
+
+ thumb_func_start MOD62_0222F2C8
+MOD62_0222F2C8: ; 0x0222F2C8
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xb1
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xc1
+ mov r3, #2
+ bl FUN_020068C8
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r1, [sp, #8]
+ add r0, #0xe8
+ mov r1, #0x5b
+ add r2, r1, #0
+ ldr r0, [r0]
+ add r2, #0xc5
+ mov r3, #0x35
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xb2
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r4, #0xe4
+ add r1, r0, #0
+ ldr r2, [r4]
+ add r1, #0xc2
+ mov r3, #3
+ bl FUN_020068C8
+ add sp, #0x10
+ pop {r4, pc}
+ thumb_func_end MOD62_0222F2C8
+
+ thumb_func_start MOD62_0222F36C
+MOD62_0222F36C: ; 0x0222F36C
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xb0
+ mov r3, #5
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xc0
+ mov r3, #5
+ bl FUN_020068C8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ mov r0, #0
+ mov r1, #0x5b
+ add r2, r1, #0
+ add r4, #0xe8
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ add r2, #0xc4
+ mov r3, #0x35
+ bl FUN_020030E8
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222F36C
+
+ thumb_func_start MOD62_0222F3D4
+MOD62_0222F3D4: ; 0x0222F3D4
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xb0
+ mov r3, #7
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x35
+ add r2, r4, #0
+ str r0, [sp, #0xc]
+ mov r0, #0x5b
+ add r2, #0xe4
+ add r1, r0, #0
+ ldr r2, [r2]
+ add r1, #0xbf
+ mov r3, #7
+ bl FUN_020068C8
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x40
+ str r0, [sp, #4]
+ mov r0, #0
+ mov r1, #0x5b
+ add r2, r1, #0
+ add r4, #0xe8
+ str r0, [sp, #8]
+ ldr r0, [r4]
+ add r2, #0xc4
+ mov r3, #0x35
+ bl FUN_020030E8
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222F3D4
+
+ thumb_func_start MOD62_0222F43C
+MOD62_0222F43C: ; 0x0222F43C
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r1, r0, #0
+ add r1, #0xdc
+ ldr r4, [r1]
+ add r1, r0, #0
+ add r1, #0xe0
+ ldr r5, [r1]
+ mov r1, #0x5b
+ str r1, [sp]
+ add r1, #0xc7
+ str r1, [sp, #4]
+ mov r1, #0
+ str r1, [sp, #8]
+ mov r1, #3
+ str r1, [sp, #0xc]
+ mov r2, #2
+ str r2, [sp, #0x10]
+ ldr r2, _0222F57C ; =0x000066B2
+ add r0, #0xe8
+ str r2, [sp, #0x14]
+ ldr r0, [r0]
+ add r2, r4, #0
+ add r3, r5, #0
+ bl FUN_0200C0DC
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222F580 ; =0x000062B9
+ mov r2, #0x5b
+ add r3, r2, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, r5, #0
+ add r3, #0xb6
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F584 ; =0x00006A29
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0xb1
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F588 ; =0x00006DB5
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0x55
+ bl FUN_0200C13C
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222F58C ; =0x000062BA
+ mov r2, #0x5b
+ add r3, r2, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, r5, #0
+ add r3, #0xb7
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F590 ; =0x00006A2A
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0xb2
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F594 ; =0x00006DB6
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0x56
+ bl FUN_0200C13C
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222F598 ; =0x000062B6
+ mov r2, #0x5b
+ add r3, r2, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, r5, #0
+ add r3, #0xb3
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F59C ; =0x00006A27
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0xaf
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F5A0 ; =0x00006DB3
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0x53
+ bl FUN_0200C13C
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r0, _0222F5A4 ; =0x000089C8
+ mov r2, #0x5b
+ add r3, r2, #0
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r1, r5, #0
+ add r3, #0xb5
+ bl FUN_0200C00C
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F5A8 ; =0x00006A28
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0xb0
+ bl FUN_0200C124
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _0222F5AC ; =0x00006DB4
+ add r1, r5, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x5b
+ mov r3, #0x54
+ bl FUN_0200C13C
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222F57C: .word 0x000066B2
+_0222F580: .word 0x000062B9
+_0222F584: .word 0x00006A29
+_0222F588: .word 0x00006DB5
+_0222F58C: .word 0x000062BA
+_0222F590: .word 0x00006A2A
+_0222F594: .word 0x00006DB6
+_0222F598: .word 0x000062B6
+_0222F59C: .word 0x00006A27
+_0222F5A0: .word 0x00006DB3
+_0222F5A4: .word 0x000089C8
+_0222F5A8: .word 0x00006A28
+_0222F5AC: .word 0x00006DB4
+ thumb_func_end MOD62_0222F43C
+
+ thumb_func_start MOD62_0222F5B0
+MOD62_0222F5B0: ; 0x0222F5B0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0xa0
+ add r7, r0, #0
+ add r0, #0xdc
+ ldr r6, [r0]
+ add r0, r7, #0
+ add r0, #0xe0
+ ldr r5, [r0]
+ mov r0, #0xf9
+ lsl r0, r0, #2
+ add r4, r7, r0
+ mov r1, #0
+ add r2, sp, #0x6c
+ strh r1, [r2]
+ strh r1, [r2, #2]
+ strh r1, [r2, #4]
+ strh r1, [r2, #6]
+ mov r0, #0x3c
+ str r0, [sp, #0x74]
+ mov r0, #2
+ str r0, [sp, #0x7c]
+ mov r0, #1
+ str r1, [sp, #0x9c]
+ sub r1, r0, #2
+ str r0, [sp, #0x98]
+ str r0, [sp, #0x78]
+ ldr r0, _0222F6FC ; =0x000062B9
+ str r1, [sp, #0x90]
+ str r0, [sp, #0x80]
+ ldr r0, _0222F700 ; =0x000066B2
+ str r1, [sp, #0x94]
+ str r0, [sp, #0x84]
+ ldr r0, _0222F704 ; =0x00006A29
+ add r1, r5, #0
+ str r0, [sp, #0x88]
+ ldr r0, _0222F708 ; =0x00006DB5
+ str r0, [sp, #0x8c]
+ add r0, r6, #0
+ bl FUN_0200C154
+ str r0, [r4, #0x20]
+ ldr r0, _0222F70C ; =0x000062BA
+ add r1, r5, #0
+ str r0, [sp, #0x80]
+ ldr r0, _0222F700 ; =0x000066B2
+ add r2, sp, #0x6c
+ str r0, [sp, #0x84]
+ ldr r0, _0222F710 ; =0x00006A2A
+ str r0, [sp, #0x88]
+ ldr r0, _0222F714 ; =0x00006DB6
+ str r0, [sp, #0x8c]
+ add r0, r6, #0
+ bl FUN_0200C154
+ str r0, [r4, #0x24]
+ mov r0, #1
+ str r0, [sp, #0x98]
+ str r0, [sp, #0x78]
+ ldr r0, _0222F718 ; =0x000089C8
+ add r1, r5, #0
+ str r0, [sp, #0x80]
+ ldr r0, _0222F700 ; =0x000066B2
+ add r2, sp, #0x6c
+ str r0, [sp, #0x84]
+ ldr r0, _0222F71C ; =0x00006A28
+ str r0, [sp, #0x88]
+ ldr r0, _0222F720 ; =0x00006DB4
+ str r0, [sp, #0x8c]
+ add r0, r6, #0
+ bl FUN_0200C154
+ str r0, [r4, #0x28]
+ mov r0, #1
+ str r0, [sp, #0x98]
+ mov r0, #0
+ str r0, [sp, #0x78]
+ ldr r0, _0222F724 ; =0x000062B6
+ add r1, r5, #0
+ str r0, [sp, #0x80]
+ ldr r0, _0222F700 ; =0x000066B2
+ add r2, sp, #0x6c
+ str r0, [sp, #0x84]
+ ldr r0, _0222F728 ; =0x00006A27
+ str r0, [sp, #0x88]
+ ldr r0, _0222F72C ; =0x00006DB3
+ str r0, [sp, #0x8c]
+ add r0, r6, #0
+ bl FUN_0200C154
+ str r0, [r4, #0x2c]
+ add r0, r6, #0
+ add r1, r5, #0
+ add r2, sp, #0x6c
+ bl FUN_0200C154
+ ldr r3, _0222F730 ; =0x022311A8
+ str r0, [r4, #0x30]
+ add r2, sp, #0x38
+ mov r1, #0x1a
+_0222F676:
+ ldrh r0, [r3]
+ add r3, r3, #2
+ strh r0, [r2]
+ add r2, r2, #2
+ sub r1, r1, #1
+ bne _0222F676
+ ldr r3, _0222F734 ; =0x022311DC
+ add r2, sp, #4
+ mov r1, #0x1a
+_0222F688:
+ ldrh r0, [r3]
+ add r3, r3, #2
+ strh r0, [r2]
+ add r2, r2, #2
+ sub r1, r1, #1
+ bne _0222F688
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0x1d
+ add r4, r7, #0
+ lsl r0, r0, #4
+ add r7, r7, r0
+ add r6, sp, #0x58
+ add r4, #0x20
+ add r5, sp, #0x24
+ add r7, #0x20
+_0222F6A8:
+ mov r0, #0xf9
+ mov r1, #0
+ mov r2, #2
+ lsl r0, r0, #2
+ ldrsh r1, [r6, r1]
+ ldrsh r2, [r6, r2]
+ ldr r0, [r4, r0]
+ bl FUN_0200C714
+ mov r0, #0xf9
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0200C5A8
+ mov r0, #0xf9
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C61C
+ mov r1, #0xf9
+ mov r2, #0
+ mov r3, #2
+ lsl r1, r1, #2
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ ldr r1, [r4, r1]
+ add r0, r7, #0
+ bl MOD62_0222DCE4
+ ldr r0, [sp]
+ add r6, r6, #4
+ add r0, r0, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ add r7, r7, #4
+ str r0, [sp]
+ cmp r0, #0xd
+ blt _0222F6A8
+ add sp, #0xa0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222F6FC: .word 0x000062B9
+_0222F700: .word 0x000066B2
+_0222F704: .word 0x00006A29
+_0222F708: .word 0x00006DB5
+_0222F70C: .word 0x000062BA
+_0222F710: .word 0x00006A2A
+_0222F714: .word 0x00006DB6
+_0222F718: .word 0x000089C8
+_0222F71C: .word 0x00006A28
+_0222F720: .word 0x00006DB4
+_0222F724: .word 0x000062B6
+_0222F728: .word 0x00006A27
+_0222F72C: .word 0x00006DB3
+_0222F730: .word 0x022311A8
+_0222F734: .word 0x022311DC
+ thumb_func_end MOD62_0222F5B0
+
+ thumb_func_start MOD62_0222F738
+MOD62_0222F738: ; 0x0222F738
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0xf9
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+ lsl r7, r7, #2
+_0222F744:
+ ldr r0, [r5, r7]
+ add r1, r6, #0
+ bl FUN_0200C644
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xd
+ blt _0222F744
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222F738
+
+ thumb_func_start MOD62_0222F758
+MOD62_0222F758: ; 0x0222F758
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD62_0222F758
+
+ thumb_func_start MOD62_0222F75C
+MOD62_0222F75C: ; 0x0222F75C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r6, #0xf9
+ mov r4, #8
+ add r5, #0x20
+ lsl r6, r6, #2
+_0222F768:
+ ldr r0, [r5, r6]
+ bl FUN_0200C3DC
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xd
+ blt _0222F768
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD62_0222F75C
+
+ thumb_func_start MOD62_0222F778
+MOD62_0222F778: ; 0x0222F778
+ add r1, r0, #0
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r3, _0222F78C ; =0x02029C75
+ lsl r0, r0, #3
+ add r0, r1, r0
+ ldr r0, [r0, #8]
+ add r1, #0x68
+ bx r3
+ .align 2, 0
+_0222F78C: .word 0x02029C75
+ thumb_func_end MOD62_0222F778
+
+ thumb_func_start MOD62_0222F790
+MOD62_0222F790: ; 0x0222F790
+ mov r1, #0xf1
+ add r2, r0, #0
+ lsl r1, r1, #2
+ ldr r1, [r2, r1]
+ ldr r3, _0222F7A4 ; =0x02029C75
+ lsl r1, r1, #3
+ add r1, r2, r1
+ add r0, #0x68
+ ldr r1, [r1, #8]
+ bx r3
+ .align 2, 0
+_0222F7A4: .word 0x02029C75
+ thumb_func_end MOD62_0222F790
+
+ thumb_func_start MOD62_0222F7A8
+MOD62_0222F7A8: ; 0x0222F7A8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_0222F7AE:
+ ldr r0, [r5, #0x64]
+ add r1, r4, #0
+ bl FUN_02029CF4
+ add r1, r5, r4
+ add r1, #0x80
+ add r4, r4, #1
+ strb r0, [r1]
+ cmp r4, #0x51
+ blt _0222F7AE
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD62_0222F7A8
+
+ thumb_func_start MOD62_0222F7C4
+MOD62_0222F7C4: ; 0x0222F7C4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_0222F7CA:
+ add r2, r5, r4
+ add r2, #0x80
+ ldrb r2, [r2]
+ ldr r0, [r5, #0x64]
+ add r1, r4, #0
+ bl FUN_02029D40
+ add r4, r4, #1
+ cmp r4, #0x51
+ blt _0222F7CA
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD62_0222F7C4
+
+ thumb_func_start MOD62_0222F7E0
+MOD62_0222F7E0: ; 0x0222F7E0
+ push {r3, lr}
+ mov r0, #7
+ str r0, [sp]
+ ldr r0, _0222F804 ; =0x04000050
+ mov r1, #0
+ mov r2, #6
+ mov r3, #0xb
+ bl G2x_SetBlendAlpha_
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _0222F808 ; =0x04001050
+ mov r1, #0
+ mov r2, #0xe
+ mov r3, #7
+ bl G2x_SetBlendAlpha_
+ pop {r3, pc}
+ .align 2, 0
+_0222F804: .word 0x04000050
+_0222F808: .word 0x04001050
+ thumb_func_end MOD62_0222F7E0
+
+ thumb_func_start MOD62_0222F80C
+MOD62_0222F80C: ; 0x0222F80C
+ push {r3, r4, r5, r6, r7, lr}
+ mov r1, #0xf1
+ add r5, r0, #0
+ lsl r1, r1, #2
+ ldr r0, [r5, r1]
+ lsl r0, r0, #3
+ add r0, r5, r0
+ ldr r0, [r0, #4]
+ cmp r0, #0xff
+ beq _0222F832
+ ldr r2, [r5]
+ lsl r0, r0, #2
+ add r0, r2, r0
+ add r1, #0x64
+ ldr r0, [r0, #4]
+ ldr r1, [r5, r1]
+ bl FUN_02069B88
+ pop {r3, r4, r5, r6, r7, pc}
+_0222F832:
+ ldr r1, [r5]
+ mov r6, #0
+ ldr r0, [r1]
+ cmp r0, #0
+ ble _0222F868
+ add r4, r6, #0
+_0222F83E:
+ add r0, r1, r4
+ ldr r7, [r0, #4]
+ mov r1, #0x4c
+ add r0, r7, #0
+ mov r2, #0
+ bl FUN_020671BC
+ cmp r0, #0
+ bne _0222F85C
+ ldr r1, _0222F86C ; =0x00000428
+ add r0, r7, #0
+ ldr r1, [r5, r1]
+ bl FUN_02069B88
+ pop {r3, r4, r5, r6, r7, pc}
+_0222F85C:
+ ldr r1, [r5]
+ add r6, r6, #1
+ ldr r0, [r1]
+ add r4, r4, #4
+ cmp r6, r0
+ blt _0222F83E
+_0222F868:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_0222F86C: .word 0x00000428
+ thumb_func_end MOD62_0222F80C
+
+ thumb_func_start MOD62_0222F870
+MOD62_0222F870: ; 0x0222F870
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #0
+ add r6, r0, #0
+ add r5, r7, #0
+ add r4, r7, #0
+_0222F87A:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_02029CC8
+ bl FUN_02029CE0
+ cmp r0, #0
+ beq _0222F88C
+ add r5, r5, #1
+_0222F88C:
+ add r4, r4, #1
+ cmp r4, #8
+ blt _0222F87A
+ cmp r5, #0
+ beq _0222F898
+ mov r7, #1
+_0222F898:
+ add r0, r7, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD62_0222F870
+
+ thumb_func_start MOD62_0222F89C
+MOD62_0222F89C: ; 0x0222F89C
+ mov r2, #0xc
+ mul r2, r1
+ add r1, r0, r2
+ mov r0, #0x99
+ lsl r0, r0, #2
+ ldr r2, [r1, r0]
+ add r0, r0, #4
+ ldr r0, [r1, r0]
+ cmp r2, #0xff
+ bne _0222F8B8
+ cmp r0, #0
+ bne _0222F8B8
+ mov r0, #0
+ bx lr
+_0222F8B8:
+ cmp r2, #0xff
+ bne _0222F8C4
+ cmp r0, #1
+ bne _0222F8C4
+ mov r0, #1
+ bx lr
+_0222F8C4:
+ cmp r2, #0xff
+ beq _0222F8D0
+ cmp r0, #1
+ bne _0222F8D0
+ mov r0, #2
+ bx lr
+_0222F8D0:
+ mov r0, #3
+ bx lr
+ thumb_func_end MOD62_0222F89C
+
+ thumb_func_start MOD62_0222F8D4
+MOD62_0222F8D4: ; 0x0222F8D4
+ push {r3, r4}
+ cmp r2, #0xff
+ bne _0222F8E6
+ mov r2, #0xf6
+ lsl r2, r2, #2
+ ldr r4, [r0, r2]
+ sub r2, r2, #4
+ str r4, [r0, r2]
+ b _0222F8EC
+_0222F8E6:
+ mov r4, #0xf5
+ lsl r4, r4, #2
+ str r2, [r0, r4]
+_0222F8EC:
+ mov r2, #0xf3
+ lsl r2, r2, #2
+ str r1, [r0, r2]
+ add r1, r2, #0
+ add r1, #0xc
+ str r3, [r0, r1]
+ mov r1, #0
+ add r2, #0x10
+ str r1, [r0, r2]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD62_0222F8D4
+
+ thumb_func_start MOD62_0222F904
+MOD62_0222F904: ; 0x0222F904
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xfc
+ mov r1, #1
+ bl FUN_0200CCF8
+ add r0, r4, #0
+ add r0, #0xfc
+ bl FUN_02019570
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02001C5C
+ mov r0, #0x67
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02012870
+ add r4, #0xfc
+ add r0, r4, #0
+ bl FUN_02019178
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222F904
+
+ thumb_func_start MOD62_0222F93C
+MOD62_0222F93C: ; 0x0222F93C
+ push {r3, lr}
+ mov r1, #1
+ mov r2, #0
+ mov r3, #3
+ bl MOD62_0222F8D4
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD62_0222F93C
+
+ thumb_func_start MOD62_0222F94C
+MOD62_0222F94C: ; 0x0222F94C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD62_0222D874
+ add r0, r4, #0
+ bl MOD62_0222DC7C
+ add r0, r4, #0
+ bl MOD62_0222EC28
+ mov r2, #0
+ add r0, r4, #0
+ mov r1, #2
+ add r3, r2, #0
+ bl MOD62_0222F8D4
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD62_0222F94C
+
+ thumb_func_start MOD62_0222F970
+MOD62_0222F970: ; 0x0222F970
+ push {r3, lr}
+ mov r1, #3
+ mov r2, #0
+ add r3, r1, #0
+ bl MOD62_0222F8D4
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD62_0222F970
+
+ thumb_func_start MOD62_0222F980
+MOD62_0222F980: ; 0x0222F980
+ push {r3, lr}
+ mov r1, #4
+ mov r2, #0
+ mov r3, #3
+ bl MOD62_0222F8D4
+ mov r0, #0
+ pop {r3, pc}
+ thumb_func_end MOD62_0222F980
+
+ thumb_func_start MOD62_0222F990
+MOD62_0222F990: ; 0x0222F990
+ push {r3, r4, r5, lr}
+ mov r1, #0xf3
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ lsl r2, r1, #2
+ ldr r1, _0222F9B0 ; =0x02231220
+ ldr r1, [r1, r2]
+ blx r1
+ add r4, #0xe0
+ add r5, r0, #0
+ ldr r0, [r4]
+ bl FUN_0200BC1C
+ add r0, r5, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_0222F9B0: .word 0x02231220
+ thumb_func_end MOD62_0222F990
+
+ thumb_func_start MOD62_0222F9B4
+MOD62_0222F9B4: ; 0x0222F9B4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _0222FA3C ; =0x021C48B8
+ mov r1, #0x10
+ ldr r0, [r0, #0x4c]
+ tst r1, r0
+ beq _0222F9D2
+ ldr r0, [r4]
+ mov r1, #0xc
+ add r0, r0, #1
+ str r0, [r4]
+ bl _s32_div_f
+ str r1, [r4]
+ b _0222FA38
+_0222F9D2:
+ mov r1, #0x20
+ tst r1, r0
+ beq _0222F9EA
+ ldr r0, [r4]
+ cmp r0, #0
+ ble _0222F9E4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _0222FA38
+_0222F9E4:
+ mov r0, #0xb
+ str r0, [r4]
+ b _0222FA38
+_0222F9EA:
+ mov r1, #0x40
+ tst r1, r0
+ beq _0222FA0E
+ ldr r1, [r4]
+ asr r0, r1, #1
+ lsr r0, r0, #0x1e
+ add r0, r1, r0
+ asr r0, r0, #2
+ beq _0222FA0A
+ sub r0, r1, #4
+ mov r1, #0xc
+ str r0, [r4]
+ bl _s32_div_f
+ str r1, [r4]
+ b _0222FA38
+_0222FA0A:
+ mov r0, #0
+ pop {r4, pc}
+_0222FA0E:
+ mov r1, #0x80
+ tst r0, r1
+ beq _0222FA34
+ ldr r1, [r4]
+ asr r0, r1, #1
+ lsr r0, r0, #0x1e
+ add r0, r1, r0
+ asr r0, r0, #2
+ cmp r0, #2
+ beq _0222FA30
+ add r0, r1, #4
+ mov r1, #0xc
+ str r0, [r4]
+ bl _s32_div_f
+ str r1, [r4]
+ b _0222FA38
+_0222FA30:
+ mov r0, #0
+ pop {r4, pc}
+_0222FA34:
+ mov r0, #0
+ pop {r4, pc}
+_0222FA38:
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+_0222FA3C: .word 0x021C48B8
+ thumb_func_end MOD62_0222F9B4
+
+ thumb_func_start MOD62_0222FA40
+MOD62_0222FA40: ; 0x0222FA40
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r4, #0
+ str r2, [sp]
+ cmp r1, #0
+ bne _0222FA50
+ mov r4, #1
+_0222FA50:
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ lsl r6, r1, #2
+ add r7, r5, r0
+ add r1, sp, #4
+ ldr r0, [r7, r6]
+ add r1, #2
+ add r2, sp, #4
+ bl MOD62_0222E53C
+ mov r0, #0xbd
+ add r1, r5, r6
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r3, sp, #4
+ mov r1, #2
+ mov r2, #0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ bl FUN_0200C714
+ ldr r0, [sp]
+ cmp r0, #1
+ bne _0222FAAE
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ add r1, r5, r0
+ ldr r0, [r7, r6]
+ lsl r4, r4, #2
+ str r0, [r1, r4]
+ ldr r0, [r1, r4]
+ add r1, sp, #4
+ add r1, #2
+ add r2, sp, #4
+ bl MOD62_0222E53C
+ mov r0, #0xbd
+ add r1, r5, r4
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r3, sp, #4
+ mov r1, #2
+ mov r2, #0
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ bl FUN_0200C714
+_0222FAAE:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222FA40
+
+ thumb_func_start MOD62_0222FAB4
+MOD62_0222FAB4: ; 0x0222FAB4
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ mov r1, #0xf5
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r1, [r4, r1]
+ cmp r1, #6
+ bls _0222FAC6
+ b _0222FD4C
+_0222FAC6:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0222FAD2: ; jump table
+ .short _0222FAE0 - _0222FAD2 - 2 ; case 0
+ .short _0222FBBC - _0222FAD2 - 2 ; case 1
+ .short _0222FBCC - _0222FAD2 - 2 ; case 2
+ .short _0222FBE0 - _0222FAD2 - 2 ; case 3
+ .short _0222FCA2 - _0222FAD2 - 2 ; case 4
+ .short _0222FD00 - _0222FAD2 - 2 ; case 5
+ .short _0222FD10 - _0222FAD2 - 2 ; case 6
+_0222FAE0:
+ bl MOD62_0222E560
+ add r0, r4, #0
+ bl MOD62_0222E5D8
+ add r0, r4, #0
+ bl MOD62_0222E6D8
+ add r0, r4, #0
+ bl MOD62_0222F2C8
+ add r0, r4, #0
+ bl MOD62_0222F36C
+ add r0, r4, #0
+ bl MOD62_0222F3D4
+ add r0, r4, #0
+ bl MOD62_0222E7A4
+ add r0, r4, #0
+ bl MOD62_0222EA6C
+ mov r0, #0x15
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r3, #2
+ add r1, r4, #0
+ str r3, [sp, #8]
+ mov r0, #0x28
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ add r1, #0xec
+ mov r2, #1
+ bl MOD62_0222EEE0
+ add r0, r4, #0
+ bl MOD62_0222D67C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_0222DB10
+ add r0, r4, #0
+ bl MOD62_0222D654
+ add r0, r4, #0
+ bl MOD62_0222F43C
+ add r0, r4, #0
+ bl MOD62_0222F5B0
+ add r0, r4, #0
+ bl MOD62_0222E888
+ add r0, r4, #0
+ bl MOD62_0222E8F8
+ add r0, r4, #0
+ bl MOD62_0222F778
+ add r0, r4, #0
+ bl MOD62_0222F7A8
+ ldr r1, _0222FD60 ; =0x00000418
+ add r0, r4, #0
+ ldr r1, [r4, r1]
+ bl MOD62_0222DEF8
+ add r0, r4, #0
+ bl MOD62_0222DF5C
+ add r0, r4, #0
+ bl MOD62_0222E004
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_0222F738
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_0222E9B4
+ add r0, r4, #0
+ bl MOD62_0222DDB4
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_0222DDE0
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #7
+ bl MOD62_0222EE78
+ bl MOD62_0222F270
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_022300DC
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _0222FD4C
+_0222FBBC:
+ bl MOD62_0222F288
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _0222FD4C
+_0222FBCC:
+ bl FUN_0200E308
+ cmp r0, #1
+ beq _0222FBD6
+ b _0222FD4C
+_0222FBD6:
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+_0222FBE0:
+ bl FUN_02020AA4
+ cmp r0, #1
+ bne _0222FBF0
+ add r0, r4, #0
+ bl MOD62_0222F93C
+ b _0222FD4C
+_0222FBF0:
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ ldr r6, [r4, r0]
+ add r0, r4, r0
+ bl MOD62_0222F9B4
+ mov r1, #0xf1
+ lsl r1, r1, #2
+ ldr r5, [r4, r1]
+ cmp r0, #1
+ str r6, [r4, r1]
+ bne _0222FC4C
+ add r0, r4, #0
+ bl MOD62_0222D874
+ add r0, r4, #0
+ bl MOD62_0222DC7C
+ add r0, r4, #0
+ bl MOD62_0222EC28
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ str r5, [r4, r0]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD62_0222FA40
+ add r0, r4, #0
+ bl MOD62_0222DAEC
+ add r0, r4, #0
+ bl MOD62_0222D67C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_0222DB10
+ add r0, r4, #0
+ bl MOD62_0222D654
+ ldr r0, _0222FD64 ; =0x000005DC
+ bl FUN_020054C8
+ b _0222FD4C
+_0222FC4C:
+ ldr r0, _0222FD68 ; =0x021C48B8
+ ldr r2, [r0, #0x48]
+ mov r0, #1
+ tst r0, r2
+ beq _0222FC8E
+ add r0, r1, #0
+ add r0, #0x10
+ ldr r0, [r4, r0]
+ add r1, #0x10
+ add r0, r0, #1
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #8
+ bl MOD62_0222EE78
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r4, #0
+ str r0, [sp]
+ add r0, r4, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ add r1, #0xfc
+ mov r2, #1
+ add r3, r4, #0
+ bl MOD62_0222E3C4
+ ldr r0, _0222FD64 ; =0x000005DC
+ bl FUN_020054C8
+ b _0222FD4C
+_0222FC8E:
+ mov r0, #2
+ tst r0, r2
+ beq _0222FD4C
+ mov r0, #5
+ add r1, #0x10
+ str r0, [r4, r1]
+ ldr r0, _0222FD6C ; =0x000005DD
+ bl FUN_020054C8
+ b _0222FD4C
+_0222FCA2:
+ mov r0, #0x1a
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02001C78
+ add r1, r0, #0
+ mov r0, #1
+ mvn r0, r0
+ cmp r1, r0
+ beq _0222FCBE
+ add r0, r0, #1
+ cmp r1, r0
+ beq _0222FD4C
+ b _0222FCD8
+_0222FCBE:
+ add r0, r4, #0
+ bl MOD62_0222F904
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #7
+ bl MOD62_0222EE78
+ mov r0, #0xf5
+ mov r1, #3
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _0222FD4C
+_0222FCD8:
+ cmp r1, #0
+ beq _0222FD4C
+ add r0, r4, #0
+ blx r1
+ cmp r0, #1
+ beq _0222FCEC
+ add r0, r4, #0
+ bl MOD62_0222F904
+ b _0222FD4C
+_0222FCEC:
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #7
+ bl MOD62_0222EE78
+ mov r0, #0xf5
+ mov r1, #3
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _0222FD4C
+_0222FD00:
+ bl MOD62_0222F2A8
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _0222FD4C
+_0222FD10:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _0222FD4C
+ add r0, r4, #0
+ add r0, #0xec
+ bl FUN_02019178
+ add r0, r4, #0
+ bl MOD62_0222ED04
+ add r0, r4, #0
+ bl MOD62_0222E77C
+ add r0, r4, #0
+ bl MOD62_0222F75C
+ add r0, r4, #0
+ bl MOD62_0222E9D4
+ add r0, r4, #0
+ bl MOD62_0222E0C8
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_02085D9C
+ add sp, #0x10
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_0222FD4C:
+ add r0, r4, #0
+ bl MOD62_0222E754
+ add r0, r4, #0
+ bl MOD62_0222ECD4
+ mov r0, #1
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_0222FD60: .word 0x00000418
+_0222FD64: .word 0x000005DC
+_0222FD68: .word 0x021C48B8
+_0222FD6C: .word 0x000005DD
+ thumb_func_end MOD62_0222FAB4
+
+ thumb_func_start MOD62_0222FD70
+MOD62_0222FD70: ; 0x0222FD70
+ push {r3, lr}
+ cmp r1, #3
+ bhi _0222FDA2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_0222FD82: ; jump table
+ .short _0222FD8A - _0222FD82 - 2 ; case 0
+ .short _0222FD9A - _0222FD82 - 2 ; case 1
+ .short _0222FD92 - _0222FD82 - 2 ; case 2
+ .short _0222FD9A - _0222FD82 - 2 ; case 3
+_0222FD8A:
+ mov r1, #1
+ bl FUN_0200C61C
+ pop {r3, pc}
+_0222FD92:
+ mov r1, #2
+ bl FUN_0200C61C
+ pop {r3, pc}
+_0222FD9A:
+ mov r1, #0
+ bl FUN_0200C61C
+ pop {r3, pc}
+_0222FDA2:
+ bl ErrorHandling
+ pop {r3, pc}
+ thumb_func_end MOD62_0222FD70
+
+ thumb_func_start MOD62_0222FDA8
+MOD62_0222FDA8: ; 0x0222FDA8
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ cmp r5, #0
+ beq _0222FDCC
+ add r1, sp, #4
+ add r2, sp, #0
+ bl FUN_020119A4
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ add r0, r5, #0
+ add r1, r1, r4
+ add r2, r2, r6
+ bl FUN_020118C4
+_0222FDCC:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD62_0222FDA8
+
+ thumb_func_start MOD62_0222FDD0
+MOD62_0222FDD0: ; 0x0222FDD0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ cmp r0, #3
+ beq _0222FDE2
+ cmp r0, #6
+ beq _0222FDFC
+ b _0222FE1C
+_0222FDE2:
+ mov r1, #0
+ ldr r0, [r4, #8]
+ sub r2, r1, #1
+ bl MOD62_0222FDA8
+ ldr r0, [r4, #4]
+ mov r1, #2
+ bl FUN_0200C61C
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+_0222FDFC:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ mov r2, #2
+ bl MOD62_0222FDA8
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_0200C61C
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+_0222FE1C:
+ add r0, r0, #1
+ str r0, [r4]
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0222FDD0
+
+ thumb_func_start MOD62_0222FE24
+MOD62_0222FE24: ; 0x0222FE24
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #0x35
+ mov r1, #0xc
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r0, #1
+ str r0, [r4]
+ mov r1, #0
+ str r6, [r4, #4]
+ add r0, r5, #0
+ sub r2, r1, #1
+ str r5, [r4, #8]
+ bl MOD62_0222FDA8
+ mov r2, #0xfa
+ ldr r0, _0222FE54 ; =MOD62_0222FDD0
+ add r1, r4, #0
+ lsl r2, r2, #2
+ bl FUN_0200CA44
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_0222FE54: .word MOD62_0222FDD0
+ thumb_func_end MOD62_0222FE24
+
+ thumb_func_start MOD62_0222FE58
+MOD62_0222FE58: ; 0x0222FE58
+ push {r4, r5, r6, lr}
+ add r4, r2, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0xd8
+ ldr r0, [r0]
+ add r6, r1, #0
+ cmp r0, #0
+ bne _0222FE6C
+ b _022300A8
+_0222FE6C:
+ cmp r5, #0x14
+ bls _0222FE72
+ b _022300A4
+_0222FE72:
+ add r0, r5, r5
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_0222FE7E: ; jump table
+ .short _0222FFE6 - _0222FE7E - 2 ; case 0
+ .short _0222FFE6 - _0222FE7E - 2 ; case 1
+ .short _0222FFE6 - _0222FE7E - 2 ; case 2
+ .short _0222FFE6 - _0222FE7E - 2 ; case 3
+ .short _0222FFE6 - _0222FE7E - 2 ; case 4
+ .short _0222FFE6 - _0222FE7E - 2 ; case 5
+ .short _0222FFE6 - _0222FE7E - 2 ; case 6
+ .short _0222FFE6 - _0222FE7E - 2 ; case 7
+ .short _0222FEA8 - _0222FE7E - 2 ; case 8
+ .short _0222FEF2 - _0222FE7E - 2 ; case 9
+ .short _0222FF40 - _0222FE7E - 2 ; case 10
+ .short _0222FF6E - _0222FE7E - 2 ; case 11
+ .short _0222FFAC - _0222FE7E - 2 ; case 12
+ .short _02230074 - _0222FE7E - 2 ; case 13
+ .short _02230074 - _0222FE7E - 2 ; case 14
+ .short _02230074 - _0222FE7E - 2 ; case 15
+ .short _02230074 - _0222FE7E - 2 ; case 16
+ .short _02230074 - _0222FE7E - 2 ; case 17
+ .short _02230074 - _0222FE7E - 2 ; case 18
+ .short _02230074 - _0222FE7E - 2 ; case 19
+ .short _02230074 - _0222FE7E - 2 ; case 20
+_0222FEA8:
+ cmp r6, #0
+ bne _0222FEE6
+ ldr r1, _022300AC ; =0x00000418
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ ble _0222FEB6
+ b _0222FEBA
+_0222FEB6:
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+_0222FEBA:
+ sub r0, r0, #1
+ str r0, [r4, r1]
+ add r0, r4, #0
+ bl MOD62_0222E0C8
+ ldr r1, _022300AC ; =0x00000418
+ add r0, r4, #0
+ ldr r1, [r4, r1]
+ bl MOD62_0222DEF8
+ add r0, r4, #0
+ bl MOD62_0222DF5C
+ add r0, r4, #0
+ bl MOD62_0222E004
+ add r0, r4, #0
+ bl MOD62_0222F0D4
+ ldr r0, _022300B0 ; =0x000006C5
+ bl FUN_020054C8
+_0222FEE6:
+ ldr r0, _022300B4 ; =0x00000404
+ add r1, r6, #0
+ ldr r0, [r4, r0]
+ bl MOD62_0222FD70
+ pop {r4, r5, r6, pc}
+_0222FEF2:
+ cmp r6, #0
+ bne _0222FF34
+ ldr r1, _022300AC ; =0x00000418
+ ldr r0, [r4, r1]
+ add r0, r0, #1
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ bl _s32_div_f
+ ldr r0, _022300AC ; =0x00000418
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD62_0222E0C8
+ ldr r1, _022300AC ; =0x00000418
+ add r0, r4, #0
+ ldr r1, [r4, r1]
+ bl MOD62_0222DEF8
+ add r0, r4, #0
+ bl MOD62_0222DF5C
+ add r0, r4, #0
+ bl MOD62_0222E004
+ add r0, r4, #0
+ bl MOD62_0222F0D4
+ ldr r0, _022300B0 ; =0x000006C5
+ bl FUN_020054C8
+_0222FF34:
+ ldr r0, _022300B8 ; =0x00000408
+ add r1, r6, #0
+ ldr r0, [r4, r0]
+ bl MOD62_0222FD70
+ pop {r4, r5, r6, pc}
+_0222FF40:
+ cmp r6, #0
+ bne _0222FF62
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #5
+ beq _0222FF58
+ mov r1, #5
+ str r1, [r4, r0]
+ ldr r0, _022300BC ; =0x000005DD
+ bl FUN_020054C8
+_0222FF58:
+ ldr r0, _022300C0 ; =0x0000040C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD62_0222FE24
+_0222FF62:
+ ldr r0, _022300C0 ; =0x0000040C
+ add r1, r6, #0
+ ldr r0, [r4, r0]
+ bl MOD62_0222FD70
+ pop {r4, r5, r6, pc}
+_0222FF6E:
+ cmp r6, #0
+ bne _0222FF9E
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #6
+ beq _0222FF8E
+ mov r1, #6
+ str r1, [r4, r0]
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_022300DC
+ ldr r0, _022300C4 ; =0x000005E2
+ bl FUN_020054C8
+_0222FF8E:
+ mov r0, #0x41
+ mov r1, #0x8e
+ lsl r0, r0, #4
+ lsl r1, r1, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ bl MOD62_0222FE24
+_0222FF9E:
+ mov r0, #0x41
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ add r1, r6, #0
+ bl MOD62_0222FD70
+ pop {r4, r5, r6, pc}
+_0222FFAC:
+ cmp r6, #0
+ bne _0222FFDA
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #7
+ beq _0222FFCC
+ mov r1, #7
+ str r1, [r4, r0]
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_022300DC
+ ldr r0, _022300BC ; =0x000005DD
+ bl FUN_020054C8
+_0222FFCC:
+ ldr r0, _022300C8 ; =0x00000414
+ mov r1, #0x8f
+ lsl r1, r1, #2
+ ldr r0, [r4, r0]
+ ldr r1, [r4, r1]
+ bl MOD62_0222FE24
+_0222FFDA:
+ ldr r0, _022300C8 ; =0x00000414
+ add r1, r6, #0
+ ldr r0, [r4, r0]
+ bl MOD62_0222FD70
+ pop {r4, r5, r6, pc}
+_0222FFE6:
+ cmp r6, #0
+ bne _022300A8
+ add r0, r4, #0
+ bl MOD62_0222D76C
+ cmp r0, #0
+ bne _02230006
+ ldr r0, _022300CC ; =0x000005F2
+ bl FUN_020054C8
+ add r4, #0xec
+ add r0, r4, #0
+ mov r1, #0xf
+ bl MOD62_0222EE78
+ pop {r4, r5, r6, pc}
+_02230006:
+ mov r0, #0x42
+ lsl r0, r0, #4
+ add r6, r4, r0
+ ldrb r1, [r6, r5]
+ cmp r1, #0
+ beq _0223005C
+ ldr r0, [r4, #0x64]
+ sub r1, r1, #1
+ bl FUN_02029CF4
+ cmp r0, #0
+ beq _0223005C
+ lsl r1, r5, #0x18
+ add r0, r4, #0
+ lsr r1, r1, #0x18
+ bl MOD62_0222D6EC
+ add r1, r4, #0
+ add r1, #0xd4
+ str r0, [r1]
+ ldrb r0, [r6, r5]
+ bl FUN_02085FD0
+ add r1, r0, #0
+ add r0, r4, #0
+ add r0, #0xec
+ bl MOD62_0222F208
+ ldr r0, [r4]
+ mov r2, #0
+ ldrb r1, [r6, r5]
+ ldr r0, [r0, #0x20]
+ mvn r2, r2
+ bl FUN_02029D44
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222F168
+ ldr r0, _022300D0 ; =0x000005EB
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_0223005C:
+ ldrb r0, [r6, r5]
+ cmp r0, #0
+ beq _022300A8
+ ldr r0, _022300CC ; =0x000005F2
+ bl FUN_020054C8
+ add r4, #0xec
+ add r0, r4, #0
+ mov r1, #0x10
+ bl MOD62_0222EE78
+ pop {r4, r5, r6, pc}
+_02230074:
+ cmp r6, #0
+ bne _022300A8
+ sub r5, #0xd
+ lsl r2, r5, #0x18
+ add r0, r4, #0
+ lsr r2, r2, #0x18
+ bl MOD62_0222DA38
+ lsl r0, r5, #4
+ add r1, r4, r0
+ mov r0, #0xca
+ lsl r0, r0, #2
+ ldrb r0, [r1, r0]
+ bl FUN_02085FD0
+ add r4, #0xec
+ add r1, r0, #0
+ add r0, r4, #0
+ bl MOD62_0222F208
+ ldr r0, _022300D0 ; =0x000005EB
+ bl FUN_020054C8
+ pop {r4, r5, r6, pc}
+_022300A4:
+ bl ErrorHandling
+_022300A8:
+ pop {r4, r5, r6, pc}
+ nop
+_022300AC: .word 0x00000418
+_022300B0: .word 0x000006C5
+_022300B4: .word 0x00000404
+_022300B8: .word 0x00000408
+_022300BC: .word 0x000005DD
+_022300C0: .word 0x0000040C
+_022300C4: .word 0x000005E2
+_022300C8: .word 0x00000414
+_022300CC: .word 0x000005F2
+_022300D0: .word 0x000005EB
+ thumb_func_end MOD62_0222FE58
+
+ thumb_func_start MOD62_022300D4
+MOD62_022300D4: ; 0x022300D4
+ mov r1, #0x96
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ bx lr
+ thumb_func_end MOD62_022300D4
+
+ thumb_func_start MOD62_022300DC
+MOD62_022300DC: ; 0x022300DC
+ add r0, #0xd8
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD62_022300DC
+
+ thumb_func_start MOD62_022300E4
+MOD62_022300E4: ; 0x022300E4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp, #4]
+ add r1, sp, #0x10
+ mov r0, #0
+ strb r0, [r1]
+ strb r0, [r1, #1]
+ strb r0, [r1, #2]
+ mov r7, #0x1d
+ lsl r7, r7, #4
+ strb r0, [r1, #3]
+ ldr r1, _022301A0 ; =0x02231260
+ ldr r2, [sp, #4]
+ add r3, r7, #1
+ add r4, r7, #2
+ add r5, r7, #3
+_02230104:
+ ldrb r6, [r1]
+ add r0, r0, #1
+ strb r6, [r2, r7]
+ ldrb r6, [r1, #1]
+ strb r6, [r2, r3]
+ ldrb r6, [r1, #2]
+ strb r6, [r2, r4]
+ ldrb r6, [r1, #3]
+ add r1, r1, #4
+ strb r6, [r2, r5]
+ add r2, r2, #4
+ cmp r0, #0xd
+ blt _02230104
+ cmp r0, #0x15
+ bge _0223017E
+ mov r3, #0x1d
+ ldr r2, [sp, #4]
+ lsl r3, r3, #4
+ add r2, r2, r3
+ lsl r4, r0, #2
+ ldr r1, [sp, #4]
+ ldr r3, [sp, #4]
+ add r1, r1, r4
+ add r2, r2, r4
+ lsl r4, r0, #4
+ add r5, sp, #0xc
+ add r3, r3, r4
+ ldrb r4, [r5, #4]
+ strb r4, [r5]
+ ldrb r4, [r5, #5]
+ strb r4, [r5, #1]
+ ldrb r4, [r5, #6]
+ strb r4, [r5, #2]
+ ldrb r4, [r5, #7]
+ strb r4, [r5, #3]
+ ldrb r4, [r5, #2]
+ ldrb r6, [r5]
+ ldrb r7, [r5, #1]
+ str r4, [sp, #8]
+ ldrb r4, [r5, #3]
+ mov ip, r4
+_02230156:
+ mov r4, #0x1d
+ lsl r4, r4, #4
+ strb r6, [r1, r4]
+ add r4, r4, #1
+ strb r7, [r1, r4]
+ ldr r5, _022301A4 ; =0x000001D2
+ ldr r4, [sp, #8]
+ add r0, r0, #1
+ strb r4, [r1, r5]
+ add r5, r5, #1
+ mov r4, ip
+ strb r4, [r1, r5]
+ mov r4, #0x26
+ lsl r4, r4, #4
+ str r2, [r3, r4]
+ add r1, r1, #4
+ add r2, r2, #4
+ add r3, #0x10
+ cmp r0, #0x15
+ blt _02230156
+_0223017E:
+ mov r0, #0x35
+ str r0, [sp]
+ mov r1, #0x1d
+ ldr r0, [sp, #4]
+ lsl r1, r1, #4
+ add r0, r0, r1
+ ldr r2, _022301A8 ; =MOD62_0222FE58
+ ldr r3, [sp, #4]
+ mov r1, #0x15
+ bl FUN_020220C4
+ mov r2, #0x73
+ ldr r1, [sp, #4]
+ lsl r2, r2, #2
+ str r0, [r1, r2]
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_022301A0: .word 0x02231260
+_022301A4: .word 0x000001D2
+_022301A8: .word MOD62_0222FE58
+ thumb_func_end MOD62_022300E4
+
+ thumb_func_start MOD62_022301AC
+MOD62_022301AC: ; 0x022301AC
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x34
+ ldr r1, _02230214 ; =0x00000428
+ add r5, r0, #0
+ ldr r1, [r5, r1]
+ add r0, sp, #0x24
+ mov r2, #2
+ bl FUN_02068B68
+ ldr r0, _02230214 ; =0x00000428
+ mov r1, #5
+ ldr r0, [r5, r0]
+ mov r2, #0
+ bl FUN_020671BC
+ add r4, r0, #0
+ ldr r0, _02230214 ; =0x00000428
+ mov r1, #2
+ ldr r0, [r5, r0]
+ bl FUN_02068E14
+ add r6, r0, #0
+ mov r0, #0x6b
+ lsl r0, r0, #2
+ lsl r1, r4, #0x10
+ str r6, [r5, r0]
+ add r0, sp, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02069010
+ ldr r0, _02230218 ; =0xFFFFFD80
+ add r6, #0x30
+ str r0, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ add r0, sp, #0x10
+ str r0, [sp, #8]
+ mov r0, #0x69
+ str r1, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, sp, #0x24
+ mov r2, #0xc0
+ add r3, r6, #0
+ bl FUN_020073A0
+ mov r1, #0x6a
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add sp, #0x34
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02230214: .word 0x00000428
+_02230218: .word 0xFFFFFD80
+ thumb_func_end MOD62_022301AC
+
+ thumb_func_start MOD62_0223021C
+MOD62_0223021C: ; 0x0223021C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r0, _02230268 ; =0x00000428
+ mov r1, #5
+ ldr r0, [r5, r0]
+ mov r2, #0
+ bl FUN_020671BC
+ add r4, r0, #0
+ ldr r0, _02230268 ; =0x00000428
+ ldr r0, [r5, r0]
+ bl FUN_02068854
+ add r6, r0, #0
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_02007314
+ mov r1, #0x97
+ lsl r2, r4, #0x10
+ str r6, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ lsl r1, r1, #2
+ str r0, [sp, #8]
+ ldr r0, [r5, r1]
+ sub r1, #0xb4
+ ldr r1, [r5, r1]
+ lsr r2, r2, #0x10
+ mov r3, #2
+ bl FUN_02069038
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02230268: .word 0x00000428
+ thumb_func_end MOD62_0223021C
+
+ thumb_func_start MOD62_0223026C
+MOD62_0223026C: ; 0x0223026C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ mov r2, #0
+ bl FUN_02007558
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xd
+ mov r2, #0
+ bl FUN_02007558
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0223026C
+
+ thumb_func_start MOD62_02230290
+MOD62_02230290: ; 0x02230290
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ bl FUN_0200782C
+ mov r1, #1
+ lsl r1, r1, #8
+ cmp r0, r1
+ bne _022302AC
+ mov r0, #0
+ pop {r4, pc}
+_022302AC:
+ add r1, #0xa8
+ ldr r0, [r4, r1]
+ mov r1, #0xc
+ bl FUN_0200782C
+ mov r2, #1
+ lsl r2, r2, #8
+ cmp r0, r2
+ blt _022302DE
+ add r0, r2, #0
+ add r0, #0xa8
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ bl FUN_02007558
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, r0]
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #0
+ pop {r4, pc}
+_022302DE:
+ add r2, #0xa8
+ ldr r0, [r4, r2]
+ mov r1, #0xc
+ mov r2, #0x20
+ bl FUN_020079E0
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xd
+ mov r2, #0x20
+ bl FUN_020079E0
+ mov r1, #0x6a
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ bl FUN_02007F34
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_02230290
+
+ thumb_func_start MOD62_0223030C
+MOD62_0223030C: ; 0x0223030C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ bl FUN_0200782C
+ cmp r0, #0
+ bne _02230324
+ mov r0, #0
+ pop {r4, pc}
+_02230324:
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ bl FUN_0200782C
+ cmp r0, #0
+ bgt _02230354
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xc
+ mov r2, #0
+ bl FUN_02007558
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0xd
+ mov r2, #0
+ bl FUN_02007558
+ mov r0, #0
+ pop {r4, pc}
+_02230354:
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ mov r1, #0xc
+ add r2, r1, #0
+ ldr r0, [r4, r0]
+ sub r2, #0x2c
+ bl FUN_020079E0
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ mov r1, #0xd
+ add r2, r1, #0
+ ldr r0, [r4, r0]
+ sub r2, #0x2d
+ bl FUN_020079E0
+ mov r1, #0x6a
+ lsl r1, r1, #2
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ bl FUN_02007F34
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_0223030C
+
+ thumb_func_start MOD62_02230388
+MOD62_02230388: ; 0x02230388
+ add r2, r1, #0
+ mov r1, #0x6a
+ lsl r1, r1, #2
+ ldr r0, [r0, r1]
+ ldr r3, _02230398 ; =0x02007559
+ mov r1, #6
+ bx r3
+ nop
+_02230398: .word 0x02007559
+ thumb_func_end MOD62_02230388
+
+ thumb_func_start MOD62_0223039C
+MOD62_0223039C: ; 0x0223039C
+ mov r1, #0x6a
+ lsl r1, r1, #2
+ ldr r3, _022303A8 ; =0x02007535
+ ldr r0, [r0, r1]
+ bx r3
+ nop
+_022303A8: .word 0x02007535
+ thumb_func_end MOD62_0223039C
+
+ thumb_func_start MOD62_022303AC
+MOD62_022303AC: ; 0x022303AC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xa4
+ mov r1, #0xf5
+ add r4, r0, #0
+ lsl r1, r1, #2
+ ldr r2, [r4, r1]
+ cmp r2, #0xa
+ bhi _0223042C
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_022303C8: ; jump table
+ .short _022303DE - _022303C8 - 2 ; case 0
+ .short _02230424 - _022303C8 - 2 ; case 1
+ .short _0223049A - _022303C8 - 2 ; case 2
+ .short _022304D2 - _022303C8 - 2 ; case 3
+ .short _02230BDA - _022303C8 - 2 ; case 4
+ .short _022304F2 - _022303C8 - 2 ; case 5
+ .short _02230846 - _022303C8 - 2 ; case 6
+ .short _022308B2 - _022303C8 - 2 ; case 7
+ .short _02230AD4 - _022303C8 - 2 ; case 8
+ .short _02230B00 - _022303C8 - 2 ; case 9
+ .short _02230B96 - _022303C8 - 2 ; case 10
+_022303DE:
+ mov r1, #0
+ bl MOD62_022300DC
+ add r0, r4, #0
+ ldr r1, _0223071C ; =0x0000FFFF
+ add r0, #0xec
+ bl MOD62_0222EE78
+ add r0, r4, #0
+ bl MOD62_0222EFA0
+ add r0, r4, #0
+ bl MOD62_0222F0D4
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #4
+ bl MOD62_0222E180
+ add r0, r4, #0
+ bl MOD62_0222F778
+ add r0, r4, #0
+ bl MOD62_0222F7A8
+ mov r0, #0x26
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230424:
+ bl MOD62_022300D4
+ cmp r0, #1
+ bne _0223042E
+_0223042C:
+ b _02230BDA
+_0223042E:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r1, #1
+ mov r2, #3
+ bl FUN_02003210
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _0223071C ; =0x0000FFFF
+ mov r1, #4
+ bl FUN_02003210
+ mov r0, #0x10
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #7
+ mov r1, #1
+ bl FUN_020178BC
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_0222F738
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_0222E9B4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_0222DDE0
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_0223049A:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02230598
+ mov r0, #3
+ mov r1, #1
+ bl FUN_020178BC
+ mov r0, #0x10
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r1, #1
+ mov r2, #2
+ bl FUN_02003210
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_022304D2:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02230598
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_022300DC
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_022304F2:
+ add r2, r1, #0
+ add r2, #8
+ ldr r2, [r4, r2]
+ cmp r2, #7
+ bls _022304FE
+ b _0223080C
+_022304FE:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_0223050A: ; jump table
+ .short _0223051A - _0223050A - 2 ; case 0
+ .short _0223058C - _0223050A - 2 ; case 1
+ .short _022305E2 - _0223050A - 2 ; case 2
+ .short _02230646 - _0223050A - 2 ; case 3
+ .short _02230692 - _0223050A - 2 ; case 4
+ .short _022306D6 - _0223050A - 2 ; case 5
+ .short _0223072C - _0223050A - 2 ; case 6
+ .short _022307A0 - _0223050A - 2 ; case 7
+_0223051A:
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230720 ; =0x0000080B
+ mov r1, #2
+ bl FUN_02003210
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _0223071C ; =0x0000FFFF
+ mov r1, #8
+ bl FUN_02003210
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_022300DC
+ mov r0, #0x3e
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ add r0, r4, #0
+ bl MOD62_0222F80C
+ add r0, r4, #0
+ bl MOD62_022301AC
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_02230388
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #0xd
+ bl MOD62_0222EE78
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_0223058C:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _0223059A
+_02230598:
+ b _02230BDA
+_0223059A:
+ mov r0, #0x35
+ str r0, [sp, #0x80]
+ mov r1, #1
+ mov r2, #0
+ mov r0, #0xff
+ str r0, [sp, #0x88]
+ add r0, r4, #0
+ str r1, [sp, #0x7c]
+ str r1, [sp, #0x94]
+ str r2, [sp, #0x84]
+ str r2, [sp, #0x90]
+ add r0, #0xdc
+ ldr r0, [r0]
+ mov r1, #0x9a
+ str r0, [sp, #0x98]
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ str r0, [sp, #0x9c]
+ ldr r0, _02230724 ; =0x00000428
+ ldr r0, [r4, r0]
+ bl FUN_020671BC
+ str r0, [sp, #0x8c]
+ add r0, sp, #0x7c
+ bl MOD08_02229918
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_022305E2:
+ add r2, sp, #0x58
+ mov r0, #0
+ str r0, [r2]
+ str r0, [r2, #4]
+ str r0, [r2, #8]
+ mov r0, #1
+ str r0, [sp, #0x58]
+ add r0, r1, #0
+ add r0, #0x54
+ ldr r0, [r4, r0]
+ sub r1, #0x10
+ str r0, [sp, #0x60]
+ ldr r0, [r4, r1]
+ add r1, r4, #0
+ add r0, r0, #1
+ str r0, [sp, #0x18]
+ add r0, sp, #0x64
+ bl MOD62_0222DCBC
+ ldr r0, _02230724 ; =0x00000428
+ mov r1, #0xa1
+ ldr r0, [r4, r0]
+ add r2, sp, #0x18
+ bl FUN_02067830
+ ldr r0, _02230724 ; =0x00000428
+ mov r1, #0xaa
+ ldr r0, [r4, r0]
+ add r2, sp, #0x64
+ bl FUN_02067830
+ mov r0, #0x35
+ add r1, sp, #0x58
+ bl MOD08_02228218
+ mov r1, #0x8a
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ bl MOD08_02228524
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ mov r1, #0
+ add r0, r0, #4
+ str r1, [r4, r0]
+ b _02230BDA
+_02230646:
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_02228570
+ cmp r0, #1
+ bne _02230702
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_02229A00
+ cmp r0, #1
+ bne _02230702
+ add r0, r4, #0
+ bl MOD62_02230290
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_022285A4
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_02230388
+ add r0, r4, #0
+ bl MOD62_0223026C
+ ldr r0, _02230728 ; =0x000006C6
+ bl FUN_020054C8
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230692:
+ bl MOD62_02230290
+ add r5, r0, #0
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_022299E8
+ cmp r0, #0
+ bne _02230702
+ cmp r5, #0
+ bne _02230702
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_02229A2C
+ mov r0, #0x10
+ mov r1, #0
+ bl FUN_0201E6E4
+ add r0, r4, #0
+ bl MOD62_0223021C
+ mov r0, #0x3e
+ mov r1, #0
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+ sub r1, r0, #4
+ ldr r1, [r4, r1]
+ sub r0, r0, #4
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_022306D6:
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_022285B4
+ cmp r0, #0
+ bne _02230702
+ mov r0, #0x97
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_02014D7C
+ cmp r0, #1
+ bne _02230702
+ mov r0, #0x6a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02007390
+ cmp r0, #0
+ beq _02230704
+_02230702:
+ b _02230BDA
+_02230704:
+ mov r0, #0x8a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_02228618
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+ nop
+_0223071C: .word 0x0000FFFF
+_02230720: .word 0x0000080B
+_02230724: .word 0x00000428
+_02230728: .word 0x000006C6
+_0223072C:
+ add r0, r1, #0
+ add r0, #0xc
+ ldr r0, [r4, r0]
+ add r2, r0, #1
+ add r0, r1, #0
+ add r0, #0xc
+ str r2, [r4, r0]
+ add r0, r1, #0
+ add r0, #0xc
+ ldr r0, [r4, r0]
+ cmp r0, #0x1e
+ blt _0223081A
+ add r0, r1, #0
+ mov r2, #0
+ add r0, #0xc
+ str r2, [r4, r0]
+ mov r0, #0x35
+ mov r3, #1
+ str r0, [sp, #0x34]
+ mov r0, #5
+ str r0, [sp, #0x38]
+ mov r0, #0xff
+ str r0, [sp, #0x3c]
+ add r0, r4, #0
+ str r3, [sp, #0x30]
+ str r2, [sp, #0x44]
+ str r3, [sp, #0x48]
+ add r0, #0xdc
+ ldr r0, [r0]
+ add r1, #0x54
+ str r0, [sp, #0x4c]
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ str r0, [sp, #0x50]
+ ldr r0, [r4, r1]
+ mov r1, #0x9a
+ bl FUN_020671BC
+ str r0, [sp, #0x40]
+ add r0, sp, #0x30
+ bl MOD08_02229918
+ mov r1, #0x8b
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ bl MOD62_0222F7E0
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_022307A0:
+ bl MOD62_0223030C
+ add r5, r0, #0
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_022299E8
+ cmp r0, #0
+ bne _0223081A
+ cmp r5, #0
+ bne _0223081A
+ mov r0, #0xa
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B38 ; =0x0000080B
+ mov r1, #2
+ bl FUN_02003210
+ mov r0, #0xa
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B3C ; =0x0000FFFF
+ mov r1, #8
+ bl FUN_02003210
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_02230388
+ add r0, r4, #0
+ bl MOD62_0223039C
+ mov r0, #0x8b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl MOD08_02229A2C
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_0223080C:
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _0223081C
+_0223081A:
+ b _02230BDA
+_0223081C:
+ mov r0, #0x10
+ mov r1, #0
+ bl FUN_0201E6E4
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_022300DC
+ mov r0, #0xf7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r1, #4
+ sub r0, #8
+ str r1, [r4, r0]
+ add r0, r4, #0
+ ldr r1, _02230B3C ; =0x0000FFFF
+ add r0, #0xec
+ bl MOD62_0222EE78
+ b _02230BDA
+_02230846:
+ add r0, #0xec
+ mov r1, #0xc
+ bl MOD62_0222EE78
+ add r0, r4, #0
+ bl MOD62_0222DC00
+ cmp r0, #1
+ bne _02230860
+ mov r0, #0x26
+ mov r1, #1
+ lsl r0, r0, #4
+ str r1, [r4, r0]
+_02230860:
+ add r0, r4, #0
+ bl MOD62_0222DC7C
+ add r0, r4, #0
+ bl MOD62_0222EC28
+ ldr r0, [r4]
+ ldr r0, [r0, #0x28]
+ bl FUN_02029FC8
+ mov r1, #6
+ bl FUN_0202A170
+ mov r0, #0xf1
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ mov r0, #0xc
+ mul r0, r1
+ add r2, r4, r0
+ mov r0, #0x99
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ cmp r0, #0xff
+ beq _022308A8
+ ldr r2, [r4]
+ lsl r0, r0, #2
+ add r0, r2, r0
+ ldr r5, [r0, #4]
+ ldr r0, [r2, #0x20]
+ bl FUN_02029C8C
+ add r2, r0, #0
+ add r0, r5, #0
+ mov r1, #0xaa
+ bl FUN_02067830
+_022308A8:
+ mov r0, #0xf5
+ mov r1, #8
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _02230BDA
+_022308B2:
+ add r1, #8
+ ldr r1, [r4, r1]
+ cmp r1, #5
+ bhi _0223093C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_022308C6: ; jump table
+ .short _022308D2 - _022308C6 - 2 ; case 0
+ .short _02230930 - _022308C6 - 2 ; case 1
+ .short _022309B4 - _022308C6 - 2 ; case 2
+ .short _022309C6 - _022308C6 - 2 ; case 3
+ .short _02230A2E - _022308C6 - 2 ; case 4
+ .short _02230A6A - _022308C6 - 2 ; case 5
+_022308D2:
+ bl MOD62_0222DC00
+ cmp r0, #0
+ bne _022308E4
+ mov r0, #0xf5
+ mov r1, #8
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _02230BDA
+_022308E4:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B38 ; =0x0000080B
+ mov r1, #2
+ bl FUN_02003210
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0xa
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B3C ; =0x0000FFFF
+ mov r1, #8
+ bl FUN_02003210
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_022300DC
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230930:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _0223093E
+_0223093C:
+ b _02230BDA
+_0223093E:
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r1, #0
+ bl FUN_020038F0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r2, #4
+ add r0, r4, #0
+ str r2, [sp, #8]
+ mov r1, #0x28
+ str r1, [sp, #0xc]
+ add r0, #0xe4
+ add r1, #0xe4
+ ldr r0, [r0]
+ add r1, r4, r1
+ mov r3, #2
+ bl MOD62_0222EEE0
+ add r0, r4, #0
+ add r0, #0xe4
+ ldr r0, [r0]
+ mov r1, #0x19
+ str r0, [sp, #0x1c]
+ mov r0, #4
+ str r0, [sp, #0x20]
+ mov r0, #0xd4
+ str r0, [sp, #0x24]
+ mov r0, #5
+ str r0, [sp, #0x28]
+ add r0, sp, #0x10
+ strb r1, [r0, #0x1c]
+ mov r1, #6
+ strb r1, [r0, #0x1d]
+ mov r0, #0x35
+ bl FUN_02014590
+ mov r1, #0x89
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ add r1, sp, #0x1c
+ bl FUN_020145C8
+ mov r0, #0x43
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #0xe
+ bl MOD62_0222EE78
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_022309B4:
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E74C
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+_022309C6:
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201466C
+ cmp r0, #0
+ beq _02230A76
+ cmp r0, #1
+ beq _022309DC
+ cmp r0, #2
+ bne _02230A76
+_022309DC:
+ mov r1, #0x3e
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r1, #1
+ bl FUN_020038F0
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020146C4
+ mov r0, #0x89
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020145A8
+ mov r0, #0x43
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #1
+ bl FUN_0200D0E0
+ mov r0, #0x43
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019570
+ mov r0, #0x43
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl FUN_02019178
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230A2E:
+ mov r0, #0xa
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B38 ; =0x0000080B
+ mov r1, #2
+ bl FUN_02003210
+ mov r0, #0xa
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B3C ; =0x0000FFFF
+ mov r1, #8
+ bl FUN_02003210
+ mov r0, #0xf7
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230A6A:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _02230A78
+_02230A76:
+ b _02230BDA
+_02230A78:
+ mov r0, #0x3e
+ lsl r0, r0, #4
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _02230AC2
+ cmp r1, #1
+ beq _02230A8C
+ cmp r1, #2
+ beq _02230ABC
+ b _02230AC2
+_02230A8C:
+ add r0, r4, #0
+ bl MOD62_0222F790
+ add r0, r4, #0
+ bl MOD62_0222F7C4
+ add r0, r4, #0
+ bl MOD62_0222F0D4
+ add r0, r4, #0
+ bl MOD62_0222DAEC
+ add r0, r4, #0
+ bl MOD62_0222D67C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_0222DB10
+ mov r0, #0xf5
+ mov r1, #6
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _02230AC2
+_02230ABC:
+ mov r1, #4
+ sub r0, #0xc
+ str r1, [r4, r0]
+_02230AC2:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD62_022300DC
+ mov r0, #0xf7
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ b _02230BDA
+_02230AD4:
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ mov r1, #1
+ mov r2, #2
+ bl FUN_02003210
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230B00:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02230BDA
+ mov r0, #0x10
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ mov r1, #1
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ add r2, r1, #0
+ bl FUN_02003210
+ mov r0, #0x10
+ str r0, [sp]
+ mov r3, #0
+ str r3, [sp, #4]
+ add r0, r4, #0
+ str r3, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r0]
+ ldr r2, _02230B3C ; =0x0000FFFF
+ b _02230B40
+ .align 2, 0
+_02230B38: .word 0x0000080B
+_02230B3C: .word 0x0000FFFF
+_02230B40:
+ mov r1, #4
+ bl FUN_02003210
+ mov r0, #3
+ add r1, r0, #0
+ bl FUN_020178BC
+ mov r0, #7
+ mov r1, #3
+ bl FUN_020178BC
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_0222F738
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_0222E9B4
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_0222DDE0
+ mov r1, #0
+ add r0, r4, #0
+ mvn r1, r1
+ mov r2, #4
+ bl MOD62_0222E180
+ add r0, r4, #0
+ mov r1, #0
+ bl MOD62_022300DC
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230BDA
+_02230B96:
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_020038E4
+ cmp r0, #0
+ bne _02230BDA
+ add r0, r4, #0
+ bl MOD62_022300D4
+ cmp r0, #1
+ beq _02230BDA
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ mov r1, #0
+ add r0, r4, #0
+ mov r2, #0xff
+ add r3, r1, #0
+ bl MOD62_0222F8D4
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #7
+ bl MOD62_0222EE78
+ add r0, r4, #0
+ bl MOD62_0222F1E8
+ add sp, #0xa4
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_02230BDA:
+ add r0, r4, #0
+ add r0, #0xd4
+ ldr r5, [r0]
+ cmp r5, #0xff
+ bne _02230BF0
+ mov r0, #0x73
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02022144
+ b _02230C98
+_02230BF0:
+ add r0, sp, #0x14
+ add r1, sp, #0x10
+ bl FUN_02020AB0
+ cmp r0, #0
+ beq _02230C3E
+ lsl r6, r5, #4
+ mov r0, #0xca
+ add r1, r4, r6
+ lsl r0, r0, #2
+ ldrb r0, [r1, r0]
+ bl FUN_02085FD0
+ add r1, r0, #0
+ add r0, r4, #0
+ add r0, #0xec
+ bl MOD62_0222F208
+ mov r0, #0xcb
+ ldr r2, [sp, #0x10]
+ add r1, r4, r6
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r1, [sp, #0x14]
+ lsl r2, r2, #0x10
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_0200C714
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DBCC
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DC48
+ b _02230C98
+_02230C3E:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DB38
+ lsl r6, r5, #4
+ mov r2, #0x33
+ add r1, r4, r6
+ lsl r2, r2, #4
+ add r7, r0, #0
+ ldr r0, [r1, r2]
+ sub r2, r2, #4
+ ldr r1, [r1, r2]
+ mov r2, #0
+ bl MOD62_0222D5F8
+ cmp r7, #0
+ bne _02230C80
+ mov r1, #0xca
+ ldr r0, [r4]
+ add r2, r4, r6
+ lsl r1, r1, #2
+ ldrb r1, [r2, r1]
+ ldr r0, [r0, #0x20]
+ mov r2, #1
+ bl FUN_02029D84
+ add r0, r4, #0
+ bl MOD62_0222F0D4
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD62_0222DB78
+_02230C80:
+ ldr r0, _02230CB8 ; =0x000005EA
+ bl FUN_020054C8
+ add r0, r4, #0
+ mov r1, #0xff
+ add r0, #0xd4
+ str r1, [r0]
+ add r0, r4, #0
+ ldr r1, _02230CBC ; =0x0000FFFF
+ add r0, #0xec
+ bl MOD62_0222F208
+_02230C98:
+ add r0, r4, #0
+ bl MOD62_0222F758
+ add r0, r4, #0
+ bl MOD62_0222E990
+ add r0, r4, #0
+ bl MOD62_0222E754
+ add r0, r4, #0
+ bl MOD62_0222ECD4
+ mov r0, #1
+ add sp, #0xa4
+ pop {r4, r5, r6, r7, pc}
+ nop
+_02230CB8: .word 0x000005EA
+_02230CBC: .word 0x0000FFFF
+ thumb_func_end MOD62_022303AC
+
+ thumb_func_start MOD62_02230CC0
+MOD62_02230CC0: ; 0x02230CC0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _02230CD8
+ cmp r1, #1
+ beq _02230CDC
+ cmp r1, #2
+ beq _02230CEC
+ b _02230D26
+_02230CD8:
+ add r1, r1, #1
+ str r1, [r4, r0]
+_02230CDC:
+ bl MOD62_0222F2A8
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230D26
+_02230CEC:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _02230D26
+ add r0, r4, #0
+ add r0, #0xec
+ bl FUN_02019178
+ add r0, r4, #0
+ bl MOD62_0222ED04
+ add r0, r4, #0
+ bl MOD62_0222E77C
+ add r0, r4, #0
+ bl MOD62_0222F75C
+ add r0, r4, #0
+ bl MOD62_0222E9D4
+ add r0, r4, #0
+ bl MOD62_0222E0C8
+ ldr r0, [r4]
+ mov r1, #1
+ bl FUN_02085D9C
+ mov r0, #0
+ pop {r4, pc}
+_02230D26:
+ add r0, r4, #0
+ bl MOD62_0222E754
+ add r0, r4, #0
+ bl MOD62_0222ECD4
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD62_02230CC0
+
+ thumb_func_start MOD62_02230D38
+MOD62_02230D38: ; 0x02230D38
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ mov r0, #0
+ add r4, r5, #4
+ lsl r6, r1, #3
+ str r0, [sp]
+ ldr r0, [r4, r6]
+ cmp r0, #0xff
+ beq _02230D5C
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ add r0, r1, r0
+ ldr r0, [r0, #4]
+ mov r1, #0xa1
+ add r2, sp, #0
+ bl FUN_02067830
+_02230D5C:
+ mov r0, #0xff
+ str r0, [r4, r6]
+ add r0, r5, #0
+ bl MOD62_0222EC28
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD62_02230D38
+
+ thumb_func_start MOD62_02230D6C
+MOD62_02230D6C: ; 0x02230D6C
+ push {r4, lr}
+ mov r2, #0xf5
+ add r4, r0, #0
+ lsl r2, r2, #2
+ ldr r1, [r4, r2]
+ cmp r1, #0
+ beq _02230D84
+ cmp r1, #1
+ beq _02230DA2
+ cmp r1, #2
+ beq _02230DB2
+ b _02230DC6
+_02230D84:
+ sub r2, #0x10
+ ldr r1, [r4, r2]
+ bl MOD62_02230D38
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #9
+ bl MOD62_0222EE78
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+ b _02230DC6
+_02230DA2:
+ ldr r0, _02230DD8 ; =0x021C48B8
+ ldr r3, [r0, #0x48]
+ ldr r0, _02230DDC ; =0x00000CF3
+ tst r0, r3
+ beq _02230DC6
+ add r0, r1, #1
+ str r0, [r4, r2]
+ b _02230DC6
+_02230DB2:
+ mov r1, #0
+ mov r2, #0xff
+ add r3, r1, #0
+ bl MOD62_0222F8D4
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #7
+ bl MOD62_0222EE78
+_02230DC6:
+ add r0, r4, #0
+ bl MOD62_0222E754
+ add r0, r4, #0
+ bl MOD62_0222ECD4
+ mov r0, #1
+ pop {r4, pc}
+ nop
+_02230DD8: .word 0x021C48B8
+_02230DDC: .word 0x00000CF3
+ thumb_func_end MOD62_02230D6C
+
+ thumb_func_start MOD62_02230DE0
+MOD62_02230DE0: ; 0x02230DE0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #3
+ bls _02230DF0
+ b _02230F18
+_02230DF0:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_02230DFC: ; jump table
+ .short _02230E04 - _02230DFC - 2 ; case 0
+ .short _02230E46 - _02230DFC - 2 ; case 1
+ .short _02230ED0 - _02230DFC - 2 ; case 2
+ .short _02230EE0 - _02230DFC - 2 ; case 3
+_02230E04:
+ sub r0, #0xe0
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl FUN_0200C6C4
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C5C0
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #0xa
+ bl MOD62_0222EE78
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #1
+ bl FUN_0200C644
+ mov r0, #0xf5
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ add r1, r1, #1
+ str r1, [r4, r0]
+_02230E46:
+ mov r0, #0xf2
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD62_0222F9B4
+ cmp r0, #1
+ bne _02230E66
+ add r0, r4, #0
+ mov r1, #1
+ mov r2, #0
+ bl MOD62_0222FA40
+ ldr r0, _02230F28 ; =0x000005DC
+ bl FUN_020054C8
+ b _02230F18
+_02230E66:
+ ldr r0, _02230F2C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _02230EA4
+ mov r2, #0xf1
+ lsl r2, r2, #2
+ ldr r1, [r4, r2]
+ add r2, r2, #4
+ ldr r2, [r4, r2]
+ add r0, r4, #0
+ bl MOD62_0222EC54
+ mov r1, #1
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD62_0222FA40
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #0xb
+ bl MOD62_0222EE78
+ mov r0, #0xf5
+ mov r1, #2
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, _02230F28 ; =0x000005DC
+ bl FUN_020054C8
+ b _02230F18
+_02230EA4:
+ mov r0, #2
+ tst r0, r1
+ beq _02230F18
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C644
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #1
+ bl MOD62_0222FA40
+ mov r0, #0xf5
+ mov r1, #3
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r0, _02230F30 ; =0x000005DD
+ bl FUN_020054C8
+ b _02230F18
+_02230ED0:
+ ldr r1, _02230F2C ; =0x021C48B8
+ ldr r2, [r1, #0x48]
+ ldr r1, _02230F34 ; =0x00000CF3
+ tst r1, r2
+ beq _02230F18
+ mov r1, #3
+ str r1, [r4, r0]
+ b _02230F18
+_02230EE0:
+ sub r0, #0xe0
+ ldr r0, [r4, r0]
+ mov r1, #0x14
+ bl FUN_0200C6C4
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0x19
+ bl FUN_0200C6C4
+ mov r1, #0
+ add r0, r4, #0
+ mov r2, #0xff
+ add r3, r1, #0
+ bl MOD62_0222F8D4
+ mov r0, #0xbd
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #0
+ bl FUN_0200C5C0
+ add r0, r4, #0
+ add r0, #0xec
+ mov r1, #7
+ bl MOD62_0222EE78
+_02230F18:
+ add r0, r4, #0
+ bl MOD62_0222E754
+ add r0, r4, #0
+ bl MOD62_0222ECD4
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+_02230F28: .word 0x000005DC
+_02230F2C: .word 0x021C48B8
+_02230F30: .word 0x000005DD
+_02230F34: .word 0x00000CF3
+ thumb_func_end MOD62_02230DE0
+
+ thumb_func_start MOD62_02230F38
+MOD62_02230F38: ; 0x02230F38
+ mov r0, #0
+ bx lr
+ thumb_func_end MOD62_02230F38
+
+ thumb_func_start MOD62_02230F3C
+MOD62_02230F3C: ; 0x02230F3C
+ push {r3, lr}
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _02230F68 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _02230F6C ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ pop {r3, pc}
+ .align 2, 0
+_02230F68: .word 0xFFFFE0FF
+_02230F6C: .word 0x04001000
+ thumb_func_end MOD62_02230F3C
+
+ thumb_func_start MOD62_02230F70
+MOD62_02230F70: ; 0x02230F70
+ push {r3, lr}
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ pop {r3, pc}
+ thumb_func_end MOD62_02230F70
+
+ thumb_func_start MOD62_02230F80
+MOD62_02230F80: ; 0x02230F80
+ push {r4, r5, lr}
+ sub sp, #0xfc
+ add r4, r0, #0
+ bl FUN_0201E6D8
+ ldr r5, _022310B8 ; =0x02231238
+ add r3, sp, #0x10
+ mov r2, #5
+_02230F90:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02230F90
+ add r0, sp, #0x10
+ bl FUN_0201E66C
+ mov r1, #6
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x18
+ lsl r2, r2, #0x12
+ bl MIi_CpuClear32
+ mov r1, #0x62
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ bl MIi_CpuClear32
+ mov r1, #0x19
+ mov r2, #1
+ mov r0, #0
+ lsl r1, r1, #0x16
+ lsl r2, r2, #0x12
+ bl MIi_CpuClear32
+ mov r1, #0x66
+ mov r2, #2
+ mov r0, #0
+ lsl r1, r1, #0x14
+ lsl r2, r2, #0x10
+ bl MIi_CpuClear32
+ ldr r5, _022310BC ; =0x02231210
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _022310C0 ; =0x02231294
+ add r3, sp, #0xa8
+ mov r2, #0xa
+_02230FF0:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02230FF0
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ add r0, r4, #0
+ add r2, sp, #0xa8
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #2
+ add r2, sp, #0xc4
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #3
+ add r2, sp, #0xe0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02018744
+ ldr r1, _022310C4 ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #1
+ orr r2, r0
+ strh r2, [r1]
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ ldr r5, _022310C8 ; =0x022312E8
+ add r3, sp, #0x38
+ mov r2, #0xe
+_02231052:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _02231052
+ add r0, r4, #0
+ mov r1, #4
+ add r2, sp, #0x38
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #5
+ add r2, sp, #0x54
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #6
+ add r2, sp, #0x70
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #7
+ add r2, sp, #0x8c
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #6
+ bl FUN_02018744
+ add r0, r4, #0
+ mov r1, #7
+ bl FUN_02018744
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ add sp, #0xfc
+ pop {r4, r5, pc}
+ nop
+_022310B8: .word 0x02231238
+_022310BC: .word 0x02231210
+_022310C0: .word 0x02231294
+_022310C4: .word 0x04000008
+_022310C8: .word 0x022312E8
+ thumb_func_end MOD62_02230F80
+
+ thumb_func_start MOD62_022310CC
+MOD62_022310CC: ; 0x022310CC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x69
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_020081C4
+ bl FUN_0201C30C
+ bl FUN_0200BC30
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r0, [r0]
+ bl FUN_0200372C
+ add r4, #0xe4
+ ldr r0, [r4]
+ bl FUN_0201AB60
+ ldr r3, _02231104 ; =0x027E0000
+ ldr r1, _02231108 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ nop
+_02231104: .word 0x027E0000
+_02231108: .word 0x00003FF8
+ thumb_func_end MOD62_022310CC
+
+ .section .rodata
+ ; 0x0223110C
+ .incbin "baserom.nds", 0x2B274C, 0x274
+
+ .section .sinit
+ .word MOD62_0222D5C0
diff --git a/arm9/modules/63/asm/module_63.s b/arm9/modules/63/asm/module_63.s
new file mode 100644
index 00000000..beeb3428
--- /dev/null
+++ b/arm9/modules/63/asm/module_63.s
@@ -0,0 +1,8588 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD63_021D74E0
+MOD63_021D74E0: ; 0x021D74E0
+ push {r4, lr}
+ ldr r1, _021D7584 ; =0x00007FFF
+ add r4, r0, #0
+ mov r0, #0
+ bl FUN_0200E3A0
+ ldr r1, _021D7584 ; =0x00007FFF
+ mov r0, #1
+ bl FUN_0200E3A0
+ ldr r1, _021D7588 ; =0x04001050
+ mov r0, #0
+ strh r0, [r1]
+ ldr r1, _021D758C ; =0x04000050
+ strh r0, [r1]
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7590 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D7594 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ mov r2, #1
+ mov r0, #3
+ mov r1, #0x1e
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ mov r1, #0x79
+ add r0, r4, #0
+ lsl r1, r1, #2
+ mov r2, #0x1e
+ bl FUN_02006268
+ mov r2, #0x79
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x1e
+ str r0, [r4]
+ mov r0, #0x1d
+ mov r1, #0
+ lsl r0, r0, #4
+ strh r1, [r4, r0]
+ add r0, #0x10
+ str r1, [r4, r0]
+ bl MOD63_021D7838
+ add r0, r4, #0
+ bl MOD63_021D7A48
+ add r0, r4, #0
+ bl MOD63_021D7880
+ ldr r0, _021D7598 ; =MOD63_021D782C
+ add r1, r4, #0
+ bl FUN_02015F10
+ bl FUN_0201E788
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+_021D7584: .word 0x00007FFF
+_021D7588: .word 0x04001050
+_021D758C: .word 0x04000050
+_021D7590: .word 0xFFFFE0FF
+_021D7594: .word 0x04001000
+_021D7598: .word MOD63_021D782C
+ thumb_func_end MOD63_021D74E0
+
+ thumb_func_start MOD63_021D759C
+MOD63_021D759C: ; 0x021D759C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ ldr r0, [r5]
+ cmp r0, #6
+ bhi _021D7614
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D75BA: ; jump table
+ .short _021D75C8 - _021D75BA - 2 ; case 0
+ .short _021D7604 - _021D75BA - 2 ; case 1
+ .short _021D7622 - _021D75BA - 2 ; case 2
+ .short _021D7638 - _021D75BA - 2 ; case 3
+ .short _021D76FA - _021D75BA - 2 ; case 4
+ .short _021D773C - _021D75BA - 2 ; case 5
+ .short _021D777E - _021D75BA - 2 ; case 6
+_021D75C8:
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D7C18
+ cmp r0, #1
+ bne _021D7614
+ add r0, r4, #0
+ ldr r1, _021D77A4 ; =0x021C48B8
+ mov r2, #0
+ add r0, #0xb4
+ str r2, [r0]
+ ldr r0, [r1, #0x6c]
+ cmp r0, #0
+ bne _021D75F6
+ mov r0, #0x75
+ mov r1, #0x1e
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r0, #2
+ str r0, [r5]
+ b _021D779C
+_021D75F6:
+ mov r0, #0x75
+ lsl r0, r0, #2
+ str r2, [r4, r0]
+ str r2, [r1, #0x6c]
+ mov r0, #1
+ str r0, [r5]
+ b _021D779C
+_021D7604:
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D7D74
+ cmp r0, #1
+ beq _021D7616
+_021D7614:
+ b _021D779C
+_021D7616:
+ mov r0, #0
+ add r4, #0xb4
+ str r0, [r4]
+ mov r0, #2
+ str r0, [r5]
+ b _021D779C
+_021D7622:
+ mov r0, #0
+ bl FUN_0200415C
+ mov r0, #1
+ ldr r1, _021D77A8 ; =0x00000495
+ add r2, r0, #0
+ bl FUN_0200433C
+ mov r0, #3
+ str r0, [r5]
+ b _021D779C
+_021D7638:
+ mov r0, #0x75
+ lsl r0, r0, #2
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D765A
+ sub r1, r1, #1
+ str r1, [r4, r0]
+ mov r1, #0
+ sub r0, #0x4c
+ str r1, [r4, r0]
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D8260
+ b _021D779C
+_021D765A:
+ mov r1, #1
+ sub r0, #0x4c
+ str r1, [r4, r0]
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D8260
+ mov r1, #0x1e
+ lsl r1, r1, #4
+ ldr r0, [r4, r1]
+ ldr r2, _021D77A4 ; =0x021C48B8
+ add r0, r0, #1
+ str r0, [r4, r1]
+ ldr r3, [r2, #0x48]
+ mov r0, #1
+ add r6, r3, #0
+ and r6, r0
+ cmp r6, #1
+ beq _021D768C
+ mov r6, #8
+ and r3, r6
+ cmp r3, #8
+ bne _021D76A8
+_021D768C:
+ mov r0, #0x1d
+ mov r1, #1
+ lsl r0, r0, #4
+ strh r1, [r4, r0]
+ mov r0, #0
+ mov r1, #0x3c
+ bl FUN_020053CC
+ ldr r0, _021D77AC ; =0x000005F4
+ bl FUN_020054C8
+ mov r0, #4
+ str r0, [r5]
+ b _021D779C
+_021D76A8:
+ ldr r6, [r2, #0x44]
+ mov r3, #0x46
+ and r3, r6
+ cmp r3, #0x46
+ bne _021D76D4
+ mov r2, #2
+ sub r1, #0x10
+ strh r2, [r4, r1]
+ mov r1, #6
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #6
+ str r0, [r5]
+ b _021D779C
+_021D76D4:
+ mov r3, #0xe1
+ ldr r6, [r4, r1]
+ lsl r3, r3, #2
+ cmp r6, r3
+ ble _021D779C
+ mov r3, #3
+ sub r1, #0x10
+ strh r3, [r4, r1]
+ mov r1, #0
+ str r0, [r2, #0x6c]
+ bl FUN_0201E74C
+ mov r0, #0
+ mov r1, #0x3c
+ bl FUN_020053CC
+ mov r0, #5
+ str r0, [r5]
+ b _021D779C
+_021D76FA:
+ mov r0, #0x62
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D8260
+ bl FUN_02005404
+ cmp r0, #0
+ bne _021D779C
+ ldr r0, _021D77A8 ; =0x00000495
+ mov r1, #0
+ bl FUN_02005350
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #6
+ str r0, [r5]
+ b _021D779C
+_021D773C:
+ mov r0, #0x62
+ mov r1, #0
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D8260
+ bl FUN_02005404
+ cmp r0, #0
+ bne _021D779C
+ ldr r0, _021D77A8 ; =0x00000495
+ mov r1, #0
+ bl FUN_02005350
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ ldr r3, _021D77B0 ; =0x00007FFF
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ bl FUN_0200E1D0
+ mov r0, #6
+ str r0, [r5]
+ b _021D779C
+_021D777E:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D779C
+ add r0, r4, #0
+ ldr r1, [r4, #4]
+ ldr r2, [r4]
+ add r0, #0xb4
+ bl MOD63_021D8360
+ cmp r0, #1
+ bne _021D779C
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D779C:
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D77A4: .word 0x021C48B8
+_021D77A8: .word 0x00000495
+_021D77AC: .word 0x000005F4
+_021D77B0: .word 0x00007FFF
+ thumb_func_end MOD63_021D759C
+
+ thumb_func_start MOD63_021D77B4
+MOD63_021D77B4: ; 0x021D77B4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ bl FUN_02006278
+ add r6, r0, #0
+ mov r0, #0x1d
+ lsl r0, r0, #4
+ ldrh r5, [r6, r0]
+ mov r0, #0
+ add r1, r0, #0
+ ldr r4, [r6]
+ bl FUN_02015F10
+ add r0, r6, #0
+ bl MOD63_021D78B0
+ add r0, r6, #0
+ bl MOD63_021D7B9C
+ add r0, r7, #0
+ bl FUN_0200627C
+ add r0, r4, #0
+ bl FUN_020168D0
+ cmp r5, #1
+ beq _021D77F2
+ cmp r5, #2
+ beq _021D77FE
+ cmp r5, #3
+ beq _021D780A
+_021D77F2:
+ mov r0, #0
+ ldr r1, _021D781C ; =0x020FF3D4
+ mvn r0, r0
+ bl FUN_02000E7C
+ b _021D7818
+_021D77FE:
+ mov r0, #0
+ ldr r1, _021D7820 ; =0x020FF368
+ mvn r0, r0
+ bl FUN_02000E7C
+ b _021D7818
+_021D780A:
+ mov r0, #0
+ bl FUN_0200415C
+ ldr r0, _021D7824 ; =0x0000003F
+ ldr r1, _021D7828 ; =0x021DBE18
+ bl FUN_02000E7C
+_021D7818:
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D781C: .word 0x020FF3D4
+_021D7820: .word 0x020FF368
+_021D7824: .word 0x0000003F
+_021D7828: .word 0x021DBE18
+ thumb_func_end MOD63_021D77B4
+
+ thumb_func_start MOD63_021D782C
+MOD63_021D782C: ; 0x021D782C
+ ldr r3, _021D7834 ; =0x0201AB61
+ ldr r0, [r0, #4]
+ bx r3
+ nop
+_021D7834: .word 0x0201AB61
+ thumb_func_end MOD63_021D782C
+
+ thumb_func_start MOD63_021D7838
+MOD63_021D7838: ; 0x021D7838
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7854 ; =0x021DBA90
+ add r3, sp, #0
+ mov r2, #5
+_021D7842:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7842
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7854: .word 0x021DBA90
+ thumb_func_end MOD63_021D7838
+
+ thumb_func_start MOD63_021D7858
+MOD63_021D7858: ; 0x021D7858
+ ldr r0, _021D787C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ and r0, r1
+ cmp r0, #1
+ beq _021D7874
+ mov r0, #8
+ and r0, r1
+ cmp r0, #8
+ beq _021D7874
+ mov r0, #4
+ and r0, r1
+ cmp r0, #4
+ bne _021D7878
+_021D7874:
+ mov r0, #1
+ bx lr
+_021D7878:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+_021D787C: .word 0x021C48B8
+ thumb_func_end MOD63_021D7858
+
+ thumb_func_start MOD63_021D7880
+MOD63_021D7880: ; 0x021D7880
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #4
+ mov r1, #0
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r4]
+ mov r2, #1
+ add r3, r1, #0
+ bl FUN_02022318
+ str r0, [r4, #8]
+ ldr r1, _021D78AC ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #1
+ orr r0, r2
+ strh r0, [r1]
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_021D78AC: .word 0x04000008
+ thumb_func_end MOD63_021D7880
+
+ thumb_func_start MOD63_021D78B0
+MOD63_021D78B0: ; 0x021D78B0
+ ldr r3, _021D78B8 ; =0x020223BD
+ ldr r0, [r0, #8]
+ bx r3
+ nop
+_021D78B8: .word 0x020223BD
+ thumb_func_end MOD63_021D78B0
+
+ thumb_func_start MOD63_021D78BC
+MOD63_021D78BC: ; 0x021D78BC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r4, r3, #0
+ add r5, r0, #0
+ add r6, r1, #0
+ add r7, r2, #0
+ add r0, #0x68
+ add r1, r4, #0
+ mov r2, #4
+ bl FUN_02016B20
+ mov r0, #0x30
+ add r1, r6, #0
+ add r2, r4, #0
+ bl LoadFromNarc_2
+ str r0, [r5, #0x5c]
+ mov r0, #0x30
+ add r1, r7, #0
+ add r2, r4, #0
+ bl LoadFromNarc_2
+ add r1, r5, #0
+ add r2, r5, #0
+ str r0, [r5, #0x60]
+ add r0, r5, #4
+ add r1, #0x58
+ add r2, #0x5c
+ bl FUN_0201B234
+ ldr r0, [r5, #0x60]
+ mov r1, #0
+ bl FUN_020BC4C8
+ add r4, r0, #0
+ add r0, r5, #0
+ ldr r2, [r5, #0x58]
+ add r0, #0x68
+ add r1, r4, #0
+ bl FUN_020BB8D0
+ str r0, [r5, #0x64]
+ ldr r0, [r5, #0x5c]
+ bl FUN_020BC0FC
+ add r3, r0, #0
+ ldr r0, [r5, #0x64]
+ ldr r2, [r5, #0x58]
+ add r1, r4, #0
+ bl FUN_020B8110
+ ldr r1, [r5, #0x64]
+ add r0, r5, #4
+ bl FUN_020B7EFC
+ add r4, r5, #0
+ add r6, sp, #0xc
+ mov r3, #0
+ str r3, [r6]
+ add r2, sp, #0
+ str r3, [r6, #4]
+ str r3, [r2]
+ str r3, [r6, #8]
+ str r3, [r2, #4]
+ ldmia r6!, {r0, r1}
+ str r3, [r2, #8]
+ add r4, #0x78
+ stmia r4!, {r0, r1}
+ ldr r0, [r6]
+ ldr r6, _021D796C ; =0x021DB9A8
+ str r0, [r4]
+ add r4, r5, #0
+ ldmia r6!, {r0, r1}
+ add r4, #0x84
+ stmia r4!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r4]
+ add r4, r5, #0
+ ldmia r2!, {r0, r1}
+ add r4, #0x90
+ stmia r4!, {r0, r1}
+ ldr r0, [r2]
+ add r5, #0xa0
+ str r0, [r4]
+ str r3, [r5]
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D796C: .word 0x021DB9A8
+ thumb_func_end MOD63_021D78BC
+
+ thumb_func_start MOD63_021D7970
+MOD63_021D7970: ; 0x021D7970
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x64]
+ add r0, #0x68
+ bl thunk_FUN_020ae84c
+ ldr r0, [r4, #0x60]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x5c]
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021D7970
+
+ thumb_func_start MOD63_021D798C
+MOD63_021D798C: ; 0x021D798C
+ push {r4, r5, lr}
+ sub sp, #0x24
+ ldr r5, _021D7A44 ; =0x021DBA6C
+ add r4, r0, #0
+ add r3, sp, #0
+ mov r2, #4
+_021D7998:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7998
+ ldr r0, [r5]
+ str r0, [r3]
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D7A3E
+ cmp r0, #1
+ beq _021D79B6
+ cmp r0, #2
+ beq _021D79CA
+ add sp, #0x24
+ pop {r4, r5, pc}
+_021D79B6:
+ bl FUN_020222AC
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020222B4
+ mov r0, #0
+ add sp, #0x24
+ str r0, [r4]
+ pop {r4, r5, pc}
+_021D79CA:
+ bl FUN_020222AC
+ bl FUN_0201EBA4
+ add r1, r4, #0
+ add r0, sp, #0
+ add r1, #0x90
+ bl FUN_0201CAA8
+ add r1, r4, #0
+ add r3, r4, #0
+ add r0, r4, #4
+ add r1, #0x78
+ add r2, sp, #0
+ add r3, #0x84
+ bl FUN_0201B26C
+ add r0, r4, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D7A00
+ cmp r0, #1
+ beq _021D7A08
+ cmp r0, #2
+ beq _021D7A18
+ b _021D7A36
+_021D7A00:
+ ldr r0, [r4, #0x64]
+ mov r1, #0
+ str r1, [r0]
+ b _021D7A36
+_021D7A08:
+ ldr r0, [r4, #0x64]
+ ldr r0, [r0]
+ cmp r0, #0
+ bne _021D7A18
+ mov r0, #0
+ add r4, #0xa0
+ str r0, [r4]
+ b _021D7A36
+_021D7A18:
+ ldr r2, [r4, #0x64]
+ mov r0, #1
+ ldr r1, [r2]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [r2]
+ ldr r2, [r4, #0x64]
+ ldr r0, [r2, #8]
+ ldr r1, [r2]
+ ldrh r0, [r0, #4]
+ lsl r0, r0, #0xc
+ cmp r1, r0
+ bne _021D7A36
+ mov r0, #0
+ str r0, [r2]
+_021D7A36:
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020222B4
+_021D7A3E:
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021D7A44: .word 0x021DBA6C
+ thumb_func_end MOD63_021D798C
+
+ thumb_func_start MOD63_021D7A48
+MOD63_021D7A48: ; 0x021D7A48
+ push {r3, r4, r5, lr}
+ sub sp, #0xb8
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0xa8
+ ldr r5, _021D7B80 ; =0x021DB9B4
+ str r0, [r4, #4]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D7B84 ; =0x021DB9E0
+ add r3, sp, #0x8c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D7B88 ; =0x021DB9C4
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #5
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D7B8C ; =0x021DBA50
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #6
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D7B90 ; =0x021DBA34
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D7B94 ; =0x021DB9FC
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r1, #3
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D7B98 ; =0x021DBA18
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #7
+ str r0, [r3]
+ ldr r0, [r4, #4]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02017FE4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ add sp, #0xb8
+ pop {r3, r4, r5, pc}
+ nop
+_021D7B80: .word 0x021DB9B4
+_021D7B84: .word 0x021DB9E0
+_021D7B88: .word 0x021DB9C4
+_021D7B8C: .word 0x021DBA50
+_021D7B90: .word 0x021DBA34
+_021D7B94: .word 0x021DB9FC
+_021D7B98: .word 0x021DBA18
+ thumb_func_end MOD63_021D7A48
+
+ thumb_func_start MOD63_021D7B9C
+MOD63_021D7B9C: ; 0x021D7B9C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #8
+ mov r1, #0
+ bl FUN_0201E74C
+ ldr r0, [r4, #4]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #5
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #7
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD63_021D7B9C
+
+ thumb_func_start MOD63_021D7C18
+MOD63_021D7C18: ; 0x021D7C18
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r6, r1, #0
+ add r4, r2, #0
+ bl MOD63_021D86E0
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r5, #0
+ bl MOD63_021D83A8
+ ldr r0, _021D7D5C ; =0x020ECAC0
+ ldrb r0, [r0]
+ cmp r0, #0xa
+ bne _021D7C46
+ add r0, r5, #4
+ mov r1, #6
+ mov r2, #0x13
+ add r3, r4, #0
+ bl MOD63_021D78BC
+ b _021D7C52
+_021D7C46:
+ add r0, r5, #4
+ mov r1, #5
+ mov r2, #0x12
+ add r3, r4, #0
+ bl MOD63_021D78BC
+_021D7C52:
+ ldr r0, _021D7D60 ; =0x04000060
+ ldr r2, _021D7D64 ; =0xFFFFCFFF
+ ldrh r1, [r0]
+ add r3, r1, #0
+ and r3, r2
+ mov r1, #0x10
+ orr r1, r3
+ strh r1, [r0]
+ ldrh r1, [r0]
+ and r2, r1
+ mov r1, #8
+ orr r1, r2
+ strh r1, [r0]
+ add r0, r5, #0
+ add r0, #0xf0
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xbc
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xf4
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xc0
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xf8
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xd8
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xc8
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xdc
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xcc
+ str r1, [r0]
+ add r0, r5, #0
+ add r0, #0xe0
+ ldr r1, [r0]
+ add r0, r5, #0
+ add r0, #0xd0
+ str r1, [r0]
+ add r0, r4, #0
+ bl FUN_0201EB64
+ add r1, r5, #0
+ add r1, #0xa0
+ str r0, [r1]
+ mov r3, #0
+ add r0, r5, #0
+ add r1, r5, #0
+ mov r2, #0xb6
+ str r3, [sp]
+ add r0, #0xa0
+ ldr r0, [r0]
+ add r1, #0xc8
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r0, #0xbc
+ lsl r2, r2, #4
+ bl FUN_0201ED5C
+ add r2, r5, #0
+ add r2, #0xa0
+ mov r1, #0x19
+ ldr r2, [r2]
+ mov r0, #0
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+ add r1, r5, #0
+ add r1, #0xa0
+ ldr r1, [r1]
+ mov r0, #0
+ bl FUN_0201EE2C
+ add r0, r5, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ bl FUN_0201EB8C
+ mov r3, #0x42
+ lsl r3, r3, #2
+ add r2, r3, #2
+ ldrsh r1, [r5, r3]
+ add r3, r3, #4
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ mov r0, #0
+ bl FUN_020B8418
+ ldr r1, _021D7D68 ; =0x00007FFF
+ mov r0, #0
+ bl FUN_020B8404
+ ldr r3, _021D7D6C ; =0x0000010E
+ mov r0, #1
+ add r2, r3, #2
+ ldrsh r1, [r5, r3]
+ add r3, r3, #4
+ ldrsh r2, [r5, r2]
+ ldrsh r3, [r5, r3]
+ bl FUN_020B8418
+ ldr r1, _021D7D68 ; =0x00007FFF
+ mov r0, #1
+ bl FUN_020B8404
+ ldr r2, _021D7D60 ; =0x04000060
+ ldr r0, _021D7D64 ; =0xFFFFCFFF
+ ldrh r1, [r2]
+ and r1, r0
+ mov r0, #0x10
+ orr r0, r1
+ strh r0, [r2]
+ ldr r0, _021D7D70 ; =0x021C4918
+ mov r1, #1
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ mov r0, #2
+ str r0, [r5, #4]
+ mov r0, #1
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ nop
+_021D7D5C: .word 0x020ECAC0
+_021D7D60: .word 0x04000060
+_021D7D64: .word 0xFFFFCFFF
+_021D7D68: .word 0x00007FFF
+_021D7D6C: .word 0x0000010E
+_021D7D70: .word 0x021C4918
+ thumb_func_end MOD63_021D7C18
+
+ thumb_func_start MOD63_021D7D74
+MOD63_021D7D74: ; 0x021D7D74
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r7, r1, #0
+ add r5, r2, #0
+ mov r6, #0
+ bl MOD63_021D7858
+ cmp r0, #1
+ bne _021D7D92
+ bl FUN_0200E31C
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, r6, r7, pc}
+_021D7D92:
+ ldr r0, [r4]
+ cmp r0, #9
+ bhi _021D7E38
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7DA4: ; jump table
+ .short _021D7DB8 - _021D7DA4 - 2 ; case 0
+ .short _021D7DF6 - _021D7DA4 - 2 ; case 1
+ .short _021D7E24 - _021D7DA4 - 2 ; case 2
+ .short _021D7E8C - _021D7DA4 - 2 ; case 3
+ .short _021D7ECC - _021D7DA4 - 2 ; case 4
+ .short _021D7EF4 - _021D7DA4 - 2 ; case 5
+ .short _021D7F44 - _021D7DA4 - 2 ; case 6
+ .short _021D7F72 - _021D7DA4 - 2 ; case 7
+ .short _021D7FA6 - _021D7DA4 - 2 ; case 8
+ .short _021D8232 - _021D7DA4 - 2 ; case 9
+_021D7DB8:
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E74C
+ ldr r1, _021D80F0 ; =0x00000116
+ add r0, r6, #0
+ strh r0, [r4, r1]
+ add r1, r4, #0
+ mov r2, #0xf
+ add r1, #0xa8
+ strh r2, [r1]
+ str r2, [sp]
+ mov r1, #3
+ str r1, [sp, #4]
+ mov r1, #1
+ ldr r3, _021D80F4 ; =0x00007FFF
+ add r2, r1, #0
+ str r5, [sp, #8]
+ bl FUN_0200E1D0
+ mov r0, #1
+ str r0, [r4]
+ b _021D824E
+_021D7DF6:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D7E38
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D7E18
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ b _021D824E
+_021D7E18:
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0xa8
+ strh r1, [r0]
+ str r1, [r4]
+ b _021D824E
+_021D7E24:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D7E38
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #1
+ beq _021D7E3A
+_021D7E38:
+ b _021D824E
+_021D7E3A:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D7E7E
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xa
+ mov r1, #0x10
+ add r2, r6, #0
+ mov r3, #6
+ bl FUN_0200A208
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0xa
+ mov r1, #0x10
+ add r2, r6, #0
+ mov r3, #7
+ bl FUN_0200A208
+ ldr r0, _021D80F0 ; =0x00000116
+ mov r1, #2
+ strh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ mov r0, #3
+ str r0, [r4]
+ b _021D824E
+_021D7E7E:
+ add r0, r4, #0
+ add r1, r6, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ mov r0, #4
+ str r0, [r4]
+ b _021D824E
+_021D7E8C:
+ mov r0, #1
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D7F94
+ mov r0, #2
+ bl FUN_0200A344
+ cmp r0, #1
+ bne _021D7F94
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0xa
+ add r1, r6, #0
+ mov r2, #0x10
+ mov r3, #6
+ bl FUN_0200A208
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0xa
+ add r1, r6, #0
+ mov r2, #0x10
+ mov r3, #7
+ bl FUN_0200A208
+ ldr r0, _021D80F0 ; =0x00000116
+ mov r1, #3
+ strh r1, [r4, r0]
+ mov r0, #2
+ str r0, [r4]
+ b _021D824E
+_021D7ECC:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D7EE6
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ b _021D824E
+_021D7EE6:
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xa8
+ strh r1, [r0]
+ mov r0, #5
+ str r0, [r4]
+ b _021D824E
+_021D7EF4:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D7F94
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D7F36
+ mov r0, #5
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ add r0, r6, #0
+ ldr r3, _021D80F4 ; =0x00007FFF
+ add r1, r0, #0
+ add r2, r0, #0
+ str r5, [sp, #8]
+ bl FUN_0200E1D0
+ ldr r0, _021D80F0 ; =0x00000116
+ mov r1, #2
+ strh r1, [r4, r0]
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ mov r0, #6
+ str r0, [r4]
+ b _021D824E
+_021D7F36:
+ add r0, r4, #0
+ mov r1, #0x28
+ add r0, #0xa8
+ strh r1, [r0]
+ mov r0, #7
+ str r0, [r4]
+ b _021D824E
+_021D7F44:
+ bl FUN_0200E308
+ cmp r0, #1
+ bne _021D7F94
+ add r0, r7, #0
+ add r1, r5, #0
+ add r2, r4, #0
+ bl MOD63_021D85D8
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r1, #1
+ ldr r3, _021D80F4 ; =0x00007FFF
+ add r0, r6, #0
+ add r2, r1, #0
+ str r5, [sp, #8]
+ bl FUN_0200E1D0
+ mov r0, #5
+ str r0, [r4]
+ b _021D824E
+_021D7F72:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D7FA0
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0xf
+ beq _021D7F96
+_021D7F94:
+ b _021D824E
+_021D7F96:
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0xa4
+ str r1, [r0]
+ b _021D824E
+_021D7FA0:
+ mov r0, #8
+ str r0, [r4]
+ b _021D824E
+_021D7FA6:
+ add r0, r4, #0
+ add r0, #0xfc
+ ldr r2, [r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r1, [r0]
+ mov r5, #1
+ cmp r1, r2
+ ble _021D7FDE
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r1, r2
+ cmp r1, r0
+ ble _021D7FD4
+ add r1, r4, #0
+ add r1, #0xbc
+ ldr r1, [r1]
+ sub r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ b _021D7FDA
+_021D7FD4:
+ add r0, r4, #0
+ add r0, #0xbc
+ str r2, [r0]
+_021D7FDA:
+ mov r5, #0
+ b _021D8006
+_021D7FDE:
+ cmp r1, r2
+ bge _021D8006
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r2, r1
+ cmp r1, r0
+ ble _021D7FFE
+ add r1, r4, #0
+ add r1, #0xbc
+ ldr r1, [r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ b _021D8004
+_021D7FFE:
+ add r0, r4, #0
+ add r0, #0xbc
+ str r2, [r0]
+_021D8004:
+ mov r5, #0
+_021D8006:
+ mov r0, #1
+ add r1, r4, #0
+ lsl r0, r0, #8
+ add r1, #0xc0
+ ldr r2, [r4, r0]
+ ldr r1, [r1]
+ cmp r1, r2
+ ble _021D803A
+ add r0, #0x18
+ ldr r0, [r4, r0]
+ sub r1, r1, r2
+ cmp r1, r0
+ ble _021D8030
+ add r1, r4, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ sub r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xc0
+ str r1, [r0]
+ b _021D8036
+_021D8030:
+ add r0, r4, #0
+ add r0, #0xc0
+ str r2, [r0]
+_021D8036:
+ mov r5, #0
+ b _021D8060
+_021D803A:
+ cmp r1, r2
+ bge _021D8060
+ add r0, #0x18
+ ldr r0, [r4, r0]
+ sub r1, r2, r1
+ cmp r1, r0
+ ble _021D8058
+ add r1, r4, #0
+ add r1, #0xc0
+ ldr r1, [r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xc0
+ str r1, [r0]
+ b _021D805E
+_021D8058:
+ add r0, r4, #0
+ add r0, #0xc0
+ str r2, [r0]
+_021D805E:
+ mov r5, #0
+_021D8060:
+ mov r0, #0x41
+ add r1, r4, #0
+ lsl r0, r0, #2
+ add r1, #0xc4
+ ldr r2, [r4, r0]
+ ldr r1, [r1]
+ cmp r1, r2
+ ble _021D8094
+ add r0, #0x14
+ ldr r0, [r4, r0]
+ sub r1, r1, r2
+ cmp r1, r0
+ ble _021D808A
+ add r1, r4, #0
+ add r1, #0xc4
+ ldr r1, [r1]
+ sub r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ b _021D8090
+_021D808A:
+ add r0, r4, #0
+ add r0, #0xc4
+ str r2, [r0]
+_021D8090:
+ mov r5, #0
+ b _021D80BA
+_021D8094:
+ cmp r1, r2
+ bge _021D80BA
+ add r0, #0x14
+ ldr r0, [r4, r0]
+ sub r1, r2, r1
+ cmp r1, r0
+ ble _021D80B2
+ add r1, r4, #0
+ add r1, #0xc4
+ ldr r1, [r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ b _021D80B8
+_021D80B2:
+ add r0, r4, #0
+ add r0, #0xc4
+ str r2, [r0]
+_021D80B8:
+ mov r5, #0
+_021D80BA:
+ add r0, r4, #0
+ add r0, #0xe4
+ ldr r2, [r0]
+ add r0, r4, #0
+ add r0, #0xc8
+ ldr r1, [r0]
+ cmp r1, r2
+ ble _021D80F8
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r1, r2
+ cmp r1, r0
+ ble _021D80E6
+ add r1, r4, #0
+ add r1, #0xc8
+ ldr r1, [r1]
+ sub r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xc8
+ str r1, [r0]
+ b _021D80EC
+_021D80E6:
+ add r0, r4, #0
+ add r0, #0xc8
+ str r2, [r0]
+_021D80EC:
+ mov r5, #0
+ b _021D8120
+ .align 2, 0
+_021D80F0: .word 0x00000116
+_021D80F4: .word 0x00007FFF
+_021D80F8:
+ cmp r1, r2
+ bge _021D8120
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r2, r1
+ cmp r1, r0
+ ble _021D8118
+ add r1, r4, #0
+ add r1, #0xc8
+ ldr r1, [r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xc8
+ str r1, [r0]
+ b _021D811E
+_021D8118:
+ add r0, r4, #0
+ add r0, #0xc8
+ str r2, [r0]
+_021D811E:
+ mov r5, #0
+_021D8120:
+ add r0, r4, #0
+ add r0, #0xe8
+ ldr r2, [r0]
+ add r0, r4, #0
+ add r0, #0xcc
+ ldr r1, [r0]
+ cmp r1, r2
+ ble _021D8156
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r1, r2
+ cmp r1, r0
+ ble _021D814C
+ add r1, r4, #0
+ add r1, #0xcc
+ ldr r1, [r1]
+ sub r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xcc
+ str r1, [r0]
+ b _021D8152
+_021D814C:
+ add r0, r4, #0
+ add r0, #0xcc
+ str r2, [r0]
+_021D8152:
+ mov r5, #0
+ b _021D817E
+_021D8156:
+ cmp r1, r2
+ bge _021D817E
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r2, r1
+ cmp r1, r0
+ ble _021D8176
+ add r1, r4, #0
+ add r1, #0xcc
+ ldr r1, [r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xcc
+ str r1, [r0]
+ b _021D817C
+_021D8176:
+ add r0, r4, #0
+ add r0, #0xcc
+ str r2, [r0]
+_021D817C:
+ mov r5, #0
+_021D817E:
+ add r0, r4, #0
+ add r0, #0xec
+ ldr r2, [r0]
+ add r0, r4, #0
+ add r0, #0xd0
+ ldr r1, [r0]
+ cmp r1, r2
+ ble _021D81B4
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r1, r2
+ cmp r1, r0
+ ble _021D81AA
+ add r1, r4, #0
+ add r1, #0xd0
+ ldr r1, [r1]
+ sub r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xd0
+ str r1, [r0]
+ b _021D81B0
+_021D81AA:
+ add r0, r4, #0
+ add r0, #0xd0
+ str r2, [r0]
+_021D81B0:
+ mov r5, #0
+ b _021D81DC
+_021D81B4:
+ cmp r1, r2
+ bge _021D81DC
+ mov r0, #0x46
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ sub r1, r2, r1
+ cmp r1, r0
+ ble _021D81D4
+ add r1, r4, #0
+ add r1, #0xd0
+ ldr r1, [r1]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0xd0
+ str r1, [r0]
+ b _021D81DA
+_021D81D4:
+ add r0, r4, #0
+ add r0, #0xd0
+ str r2, [r0]
+_021D81DA:
+ mov r5, #0
+_021D81DC:
+ add r1, r4, #0
+ add r1, #0xa0
+ add r0, r4, #0
+ ldr r1, [r1]
+ add r0, #0xbc
+ bl FUN_0201F04C
+ add r1, r4, #0
+ add r1, #0xa0
+ add r0, r4, #0
+ ldr r1, [r1]
+ add r0, #0xc8
+ bl FUN_0201F05C
+ cmp r5, #1
+ bne _021D824E
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E74C
+ add r0, r4, #0
+ mov r1, #0x5a
+ add r0, #0xa8
+ strh r1, [r0]
+ add r0, r4, #0
+ mov r1, #1
+ add r0, #0xa4
+ str r1, [r0]
+ mov r0, #9
+ str r0, [r4]
+ b _021D824E
+_021D8232:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _021D824C
+ add r0, r4, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ b _021D824E
+_021D824C:
+ mov r6, #1
+_021D824E:
+ add r0, r4, #0
+ bl MOD63_021D8650
+ add r0, r4, #4
+ bl MOD63_021D798C
+ add r0, r6, #0
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD63_021D7D74
+
+ thumb_func_start MOD63_021D8260
+MOD63_021D8260: ; 0x021D8260
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ mov r4, #0
+ cmp r0, #0
+ beq _021D8272
+ cmp r0, #1
+ beq _021D82FC
+ b _021D8350
+_021D8272:
+ add r1, r5, #0
+ add r1, #0xa0
+ add r0, r5, #0
+ ldr r1, [r1]
+ add r0, #0xfc
+ bl FUN_0201F04C
+ add r1, r5, #0
+ add r1, #0xa0
+ add r0, r5, #0
+ ldr r1, [r1]
+ add r0, #0xe4
+ bl FUN_0201F05C
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r0, #2
+ add r1, r4, #0
+ bl FUN_0201E74C
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ add r0, r4, #0
+ bl FUN_0200E394
+ mov r0, #1
+ bl FUN_0200E394
+ add r0, r4, #0
+ mov r1, #6
+ mov r2, #1
+ bl FUN_0200A274
+ add r0, r4, #0
+ mov r1, #7
+ mov r2, #2
+ bl FUN_0200A274
+ add r0, r5, #0
+ mov r1, #2
+ add r0, #0xa4
+ str r1, [r0]
+ ldr r1, _021D835C ; =0x00007FFF
+ mov r0, #1
+ bl FUN_020B8404
+ add r0, r5, #0
+ add r1, r4, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ mov r0, #1
+ str r0, [r5]
+ b _021D8350
+_021D82FC:
+ add r0, r5, #0
+ add r0, #0xd4
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021D8328
+ add r0, r5, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ cmp r0, #0
+ bne _021D831A
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E74C
+ b _021D8330
+_021D831A:
+ cmp r0, #0x10
+ bne _021D8330
+ mov r0, #1
+ add r1, r4, #0
+ bl FUN_0201E74C
+ b _021D8330
+_021D8328:
+ mov r0, #1
+ add r1, r4, #0
+ bl FUN_0201E74C
+_021D8330:
+ add r0, r5, #0
+ add r0, #0xa8
+ ldrh r0, [r0]
+ mov r4, #1
+ add r1, r0, #1
+ add r0, r5, #0
+ add r0, #0xa8
+ strh r1, [r0]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldrh r1, [r0]
+ mov r0, #0x1f
+ and r1, r0
+ add r0, r5, #0
+ add r0, #0xa8
+ strh r1, [r0]
+_021D8350:
+ add r0, r5, #4
+ bl MOD63_021D798C
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D835C: .word 0x00007FFF
+ thumb_func_end MOD63_021D8260
+
+ thumb_func_start MOD63_021D8360
+MOD63_021D8360: ; 0x021D8360
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, #0xa0
+ ldr r0, [r0]
+ add r4, r1, #0
+ add r6, r2, #0
+ bl FUN_0201EB70
+ add r0, r5, #4
+ bl MOD63_021D7970
+ add r0, r4, #0
+ add r1, r6, #0
+ add r2, r5, #0
+ bl MOD63_021D8644
+ ldr r2, _021D839C ; =0x04000050
+ mov r3, #0
+ strh r3, [r2]
+ add r2, #0x10
+ ldrh r1, [r2]
+ ldr r0, _021D83A0 ; =0x0000CFDF
+ and r0, r1
+ strh r0, [r2]
+ ldr r0, _021D83A4 ; =0x021C4918
+ strb r3, [r0, #5]
+ bl FUN_0201E7A0
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D839C: .word 0x04000050
+_021D83A0: .word 0x0000CFDF
+_021D83A4: .word 0x021C4918
+ thumb_func_end MOD63_021D8360
+
+ thumb_func_start MOD63_021D83A8
+MOD63_021D83A8: ; 0x021D83A8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r5, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ add r4, r1, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #7
+ add r6, r2, #0
+ mov r0, #0x30
+ add r2, r5, #0
+ add r3, r1, #0
+ str r4, [sp, #0xc]
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x30
+ mov r1, #0xb
+ add r2, r5, #0
+ mov r3, #3
+ str r4, [sp, #0xc]
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x30
+ mov r1, #8
+ add r2, r5, #0
+ mov r3, #7
+ str r4, [sp, #0xc]
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x30
+ mov r1, #0xc
+ add r2, r5, #0
+ mov r3, #3
+ str r4, [sp, #0xc]
+ bl FUN_020068C8
+ ldr r0, _021D85C8 ; =0x020ECAC0
+ ldrb r7, [r0]
+ cmp r7, #0xa
+ bne _021D841A
+ mov r0, #0xd
+ mov r1, #9
+ str r0, [sp, #0x18]
+ b _021D8420
+_021D841A:
+ mov r0, #0xe
+ mov r1, #0xa
+ str r0, [sp, #0x18]
+_021D8420:
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x30
+ mov r2, #4
+ str r4, [sp, #4]
+ bl FUN_02006930
+ mov r2, #0
+ str r2, [sp]
+ ldr r1, [sp, #0x18]
+ mov r0, #0x30
+ add r3, r2, #0
+ str r4, [sp, #4]
+ bl FUN_02006930
+ cmp r7, #0xa
+ bne _021D8448
+ mov r1, #1
+ mov r7, #2
+ b _021D844C
+_021D8448:
+ mov r1, #3
+ mov r7, #4
+_021D844C:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x30
+ add r2, r5, #0
+ mov r3, #6
+ str r4, [sp, #0xc]
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r3, #1
+ mov r0, #0x30
+ add r1, r7, #0
+ mov r2, #6
+ lsl r3, r3, #0xe
+ str r4, [sp, #4]
+ bl FUN_02006930
+ mov r1, #0
+ str r1, [sp]
+ str r1, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #0x30
+ add r2, r5, #0
+ mov r3, #6
+ str r4, [sp, #0xc]
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x80
+ mov r1, #0x11
+ add r2, r5, #0
+ mov r3, #5
+ str r4, [sp, #0xc]
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x10
+ mov r0, #0x80
+ mov r2, #6
+ lsl r3, r1, #9
+ str r4, [sp, #4]
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x80
+ mov r1, #0xf
+ add r2, r5, #0
+ mov r3, #5
+ str r4, [sp, #0xc]
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x30
+ mov r1, #0xf
+ add r2, r5, #0
+ mov r3, #1
+ str r4, [sp, #0xc]
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x30
+ mov r1, #0x11
+ add r2, r5, #0
+ mov r3, #1
+ str r4, [sp, #0xc]
+ bl FUN_020068C8
+ mov r0, #0x60
+ str r0, [sp]
+ mov r0, #0x30
+ mov r1, #0x10
+ mov r2, #0
+ mov r3, #0x20
+ str r4, [sp, #4]
+ bl FUN_02006930
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02017FE4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ ldr r2, _021D85CC ; =0x00000227
+ mov r0, #1
+ mov r1, #0x1a
+ add r3, r4, #0
+ bl FUN_0200A86C
+ add r7, r0, #0
+ mov r0, #0x40
+ add r1, r4, #0
+ bl FUN_020219F4
+ add r1, r6, #0
+ add r4, r0, #0
+ ldr r2, _021D85D0 ; =0x021DB9A0
+ add r0, r5, #0
+ add r1, #0xac
+ bl FUN_02019150
+ mov r1, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r0, #0xac
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ add r0, r7, #0
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ add r3, r6, #0
+ add r3, #0xb3
+ ldrb r3, [r3]
+ mov r0, #0
+ add r1, r4, #0
+ mov r2, #1
+ lsl r3, r3, #3
+ bl FUN_02002F40
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ ldr r0, _021D85D4 ; =0x00010100
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r6, #0xac
+ str r1, [sp, #0x10]
+ add r0, r6, #0
+ add r2, r4, #0
+ str r1, [sp, #0x14]
+ bl FUN_0201BE3C
+ add r0, r4, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ mov r1, #0x15
+ add r0, sp, #0x1c
+ strh r1, [r0, #2]
+ strh r1, [r0]
+ add r1, sp, #0x1c
+ mov r0, #4
+ add r1, #2
+ mov r2, #2
+ mov r3, #0x42
+ bl FUN_02017FB4
+ mov r0, #4
+ add r1, sp, #0x1c
+ mov r2, #2
+ mov r3, #0x44
+ bl FUN_02017FB4
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D85C8: .word 0x020ECAC0
+_021D85CC: .word 0x00000227
+_021D85D0: .word 0x021DB9A0
+_021D85D4: .word 0x00010100
+ thumb_func_end MOD63_021D83A8
+
+ thumb_func_start MOD63_021D85D8
+MOD63_021D85D8: ; 0x021D85D8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r2, #0xa8
+ add r7, r0, #0
+ ldrh r0, [r2]
+ add r5, r1, #0
+ cmp r0, #0
+ bne _021D863A
+ ldr r0, _021D8640 ; =0x020ECAC0
+ ldrb r0, [r0]
+ cmp r0, #0xa
+ bne _021D85F8
+ mov r1, #0xb
+ mov r6, #0xa
+ mov r4, #0xc
+ b _021D85FE
+_021D85F8:
+ mov r1, #8
+ mov r6, #7
+ mov r4, #9
+_021D85FE:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x80
+ add r2, r7, #0
+ mov r3, #5
+ str r5, [sp, #0xc]
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x80
+ add r1, r6, #0
+ mov r2, #6
+ lsl r3, r0, #6
+ str r5, [sp, #4]
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x80
+ add r1, r4, #0
+ add r2, r7, #0
+ mov r3, #5
+ str r5, [sp, #0xc]
+ bl FUN_020068C8
+_021D863A:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8640: .word 0x020ECAC0
+ thumb_func_end MOD63_021D85D8
+
+ thumb_func_start MOD63_021D8644
+MOD63_021D8644: ; 0x021D8644
+ ldr r3, _021D864C ; =0x02019179
+ add r2, #0xac
+ add r0, r2, #0
+ bx r3
+ .align 2, 0
+_021D864C: .word 0x02019179
+ thumb_func_end MOD63_021D8644
+
+ thumb_func_start MOD63_021D8650
+MOD63_021D8650: ; 0x021D8650
+ push {r4, lr}
+ ldr r1, _021D86DC ; =0x00000116
+ ldrh r2, [r0, r1]
+ cmp r2, #3
+ bhi _021D86B2
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021D8666: ; jump table
+ .short _021D866E - _021D8666 - 2 ; case 0
+ .short _021D86B2 - _021D8666 - 2 ; case 1
+ .short _021D867A - _021D8666 - 2 ; case 2
+ .short _021D8698 - _021D8666 - 2 ; case 3
+_021D866E:
+ mov r3, #5
+ sub r2, r1, #2
+ strh r3, [r0, r2]
+ mov r2, #1
+ strh r2, [r0, r1]
+ b _021D86B2
+_021D867A:
+ sub r2, r1, #2
+ ldrh r2, [r0, r2]
+ add r3, r2, #2
+ sub r2, r1, #2
+ strh r3, [r0, r2]
+ ldrh r2, [r0, r2]
+ cmp r2, #0x1f
+ blo _021D86B2
+ mov r3, #0x1f
+ add r2, r3, #0
+ add r2, #0xf5
+ strh r3, [r0, r2]
+ mov r2, #1
+ strh r2, [r0, r1]
+ b _021D86B2
+_021D8698:
+ sub r2, r1, #2
+ ldrh r2, [r0, r2]
+ sub r3, r2, #2
+ sub r2, r1, #2
+ strh r3, [r0, r2]
+ ldrh r2, [r0, r2]
+ cmp r2, #5
+ bhi _021D86B2
+ mov r3, #5
+ sub r2, r1, #2
+ strh r3, [r0, r2]
+ mov r2, #1
+ strh r2, [r0, r1]
+_021D86B2:
+ mov r1, #0x45
+ lsl r1, r1, #2
+ ldrh r3, [r0, r1]
+ mov r1, #0x1f
+ lsl r1, r1, #0xa
+ lsl r2, r3, #0xa
+ and r1, r2
+ add r4, r3, #0
+ mov r2, #0x1f
+ and r4, r2
+ lsl r3, r3, #5
+ lsl r2, r2, #5
+ and r2, r3
+ orr r2, r4
+ orr r1, r2
+ lsl r1, r1, #0x10
+ mov r0, #1
+ lsr r1, r1, #0x10
+ bl FUN_020B8404
+ pop {r4, pc}
+ .align 2, 0
+_021D86DC: .word 0x00000116
+ thumb_func_end MOD63_021D8650
+
+ thumb_func_start MOD63_021D86E0
+MOD63_021D86E0: ; 0x021D86E0
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ ldr r0, _021D8858 ; =0x020ECAC0
+ ldrb r0, [r0]
+ cmp r0, #0xa
+ bne _021D8788
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0xd8
+ str r2, [r0]
+ mov r1, #0x41
+ add r0, r4, #0
+ mov r3, #0x12
+ lsl r1, r1, #0xc
+ add r0, #0xdc
+ str r1, [r0]
+ add r0, r4, #0
+ mov r5, #0xf6
+ lsl r3, r3, #0xe
+ add r0, #0xe0
+ str r3, [r0]
+ mov r3, #0xc3
+ add r0, r4, #0
+ lsl r3, r3, #0xc
+ add r0, #0xe4
+ str r3, [r0]
+ mov r0, #2
+ add r3, r4, #0
+ lsl r0, r0, #0x10
+ add r3, #0xe8
+ str r0, [r3]
+ add r3, r4, #0
+ lsl r5, r5, #0xc
+ add r3, #0xec
+ str r5, [r3]
+ add r3, r4, #0
+ add r3, #0xf0
+ str r2, [r3]
+ mov r5, #0x5a
+ add r3, r4, #0
+ lsl r5, r5, #0xc
+ add r3, #0xf4
+ str r5, [r3]
+ add r3, r4, #0
+ add r3, #0xf8
+ str r2, [r3]
+ add r2, r4, #0
+ ldr r3, _021D885C ; =0xFFFFE000
+ add r2, #0xfc
+ str r3, [r2]
+ mov r2, #0x1f
+ lsl r2, r2, #0xe
+ lsr r0, r0, #9
+ str r2, [r4, r0]
+ lsr r0, r1, #0xa
+ ldr r2, _021D8860 ; =0xFFFDA000
+ ldr r1, _021D8864 ; =0xFFFFF6E3
+ str r2, [r4, r0]
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r3, _021D8868 ; =0x00000A2B
+ strh r1, [r4, r0]
+ add r2, r0, #2
+ strh r3, [r4, r2]
+ add r3, r1, #0
+ add r3, #0xc6
+ add r2, r0, #4
+ strh r3, [r4, r2]
+ add r1, #0x42
+ add r2, r0, #6
+ strh r1, [r4, r2]
+ add r1, r0, #0
+ ldr r2, _021D886C ; =0x000007A1
+ add r1, #8
+ strh r2, [r4, r1]
+ add r1, r0, #0
+ ldr r2, _021D8870 ; =0xFFFFF513
+ add r1, #0xa
+ strh r2, [r4, r1]
+ mov r1, #3
+ lsl r1, r1, #0xc
+ add r0, #0x10
+ b _021D8828
+_021D8788:
+ add r0, r4, #0
+ ldr r1, _021D8874 ; =0xFFFBF000
+ add r0, #0xd8
+ str r1, [r0]
+ mov r1, #0x29
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ add r0, #0xdc
+ str r1, [r0]
+ mov r1, #0x13
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ add r0, #0xe0
+ str r1, [r0]
+ add r0, r4, #0
+ ldr r1, _021D8878 ; =0xFFF6C000
+ add r0, #0xe4
+ str r1, [r0]
+ mov r1, #0x3a
+ add r0, r4, #0
+ mov r2, #2
+ lsl r1, r1, #0xc
+ add r0, #0xe8
+ str r1, [r0]
+ mov r1, #0xbe
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ add r0, #0xec
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xf0
+ str r1, [r0]
+ mov r1, #0xb
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ add r0, #0xf4
+ str r1, [r0]
+ mov r1, #0x12
+ add r0, r4, #0
+ lsl r1, r1, #0xc
+ add r0, #0xf8
+ str r1, [r0]
+ add r0, r4, #0
+ lsl r2, r2, #0xe
+ add r0, #0xfc
+ str r2, [r0]
+ ldr r1, _021D887C ; =0xFFFFB000
+ lsr r0, r2, #7
+ str r1, [r4, r0]
+ mov r0, #0x41
+ lsr r1, r2, #3
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ ldr r2, _021D8880 ; =0x00000653
+ add r1, r0, #4
+ strh r2, [r4, r1]
+ ldr r2, _021D8884 ; =0xFFFFF71C
+ add r1, r0, #6
+ strh r2, [r4, r1]
+ add r1, r0, #0
+ sub r2, #0x14
+ add r1, #8
+ strh r2, [r4, r1]
+ add r1, r0, #0
+ ldr r2, _021D8888 ; =0x0000091B
+ add r1, #0xa
+ strh r2, [r4, r1]
+ add r1, r0, #0
+ ldr r2, _021D888C ; =0xFFFFFB61
+ add r1, #0xc
+ strh r2, [r4, r1]
+ add r1, r0, #0
+ mov r2, #0xc5
+ lsl r2, r2, #4
+ add r1, #0xe
+ strh r2, [r4, r1]
+ mov r1, #3
+ lsl r1, r1, #0xc
+ add r0, #0x14
+_021D8828:
+ str r1, [r4, r0]
+ add r0, r4, #0
+ add r1, r4, #0
+ add r0, #0xfc
+ add r1, #0xe4
+ add r2, sp, #0xc
+ bl VEC_Subtract
+ add r0, sp, #0xc
+ add r1, sp, #0
+ bl VEC_Normalize
+ mov r0, #0x42
+ ldr r1, [sp]
+ lsl r0, r0, #2
+ strh r1, [r4, r0]
+ add r1, r0, #2
+ ldr r2, [sp, #4]
+ add r0, r0, #4
+ strh r2, [r4, r1]
+ ldr r1, [sp, #8]
+ strh r1, [r4, r0]
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8858: .word 0x020ECAC0
+_021D885C: .word 0xFFFFE000
+_021D8860: .word 0xFFFDA000
+_021D8864: .word 0xFFFFF6E3
+_021D8868: .word 0x00000A2B
+_021D886C: .word 0x000007A1
+_021D8870: .word 0xFFFFF513
+_021D8874: .word 0xFFFBF000
+_021D8878: .word 0xFFF6C000
+_021D887C: .word 0xFFFFB000
+_021D8880: .word 0x00000653
+_021D8884: .word 0xFFFFF71C
+_021D8888: .word 0x0000091B
+_021D888C: .word 0xFFFFFB61
+ thumb_func_end MOD63_021D86E0
+
+ thumb_func_start MOD63_021D8890
+MOD63_021D8890: ; 0x021D8890
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D88AC ; =0x021DBD70
+ add r3, sp, #0
+ mov r2, #5
+_021D889A:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D889A
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D88AC: .word 0x021DBD70
+ thumb_func_end MOD63_021D8890
+
+ thumb_func_start MOD63_021D88B0
+MOD63_021D88B0: ; 0x021D88B0
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D88CC ; =0x021DBD98
+ add r3, sp, #0
+ mov r2, #5
+_021D88BA:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D88BA
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D88CC: .word 0x021DBD98
+ thumb_func_end MOD63_021D88B0
+
+ thumb_func_start MOD63_021D88D0
+MOD63_021D88D0: ; 0x021D88D0
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D88EC ; =0x021DBDC0
+ add r3, sp, #0
+ mov r2, #5
+_021D88DA:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D88DA
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D88EC: .word 0x021DBDC0
+ thumb_func_end MOD63_021D88D0
+
+ thumb_func_start MOD63_021D88F0
+MOD63_021D88F0: ; 0x021D88F0
+ push {r3, r4, r5, lr}
+ sub sp, #0xb8
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0xa8
+ ldr r5, _021D89E8 ; =0x021DBB4C
+ str r0, [r4, #0xc]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D89EC ; =0x021DBC88
+ add r3, sp, #0x8c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D89F0 ; =0x021DBC6C
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D89F4 ; =0x021DBBC4
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D89F8 ; =0x021DBBFC
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #5
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D89FC ; =0x021DBC18
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D8A00 ; =0x021DBC34
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #7
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02017FE4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ add sp, #0xb8
+ pop {r3, r4, r5, pc}
+ nop
+_021D89E8: .word 0x021DBB4C
+_021D89EC: .word 0x021DBC88
+_021D89F0: .word 0x021DBC6C
+_021D89F4: .word 0x021DBBC4
+_021D89F8: .word 0x021DBBFC
+_021D89FC: .word 0x021DBC18
+_021D8A00: .word 0x021DBC34
+ thumb_func_end MOD63_021D88F0
+
+ thumb_func_start MOD63_021D8A04
+MOD63_021D8A04: ; 0x021D8A04
+ push {r3, r4, r5, lr}
+ sub sp, #0x80
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0x70
+ ldr r5, _021D8AC4 ; =0x021DBB3C
+ str r0, [r4, #0xc]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D8AC8 ; =0xC7FFFFFF
+ ldr r5, _021D8ACC ; =0x021DBC50
+ and r1, r0
+ lsl r0, r2, #1
+ orr r0, r1
+ str r0, [r2]
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D8AD0 ; =0x021DBCA4
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D8AD4 ; =0x021DBCC0
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D8AD8 ; =0x021DBCDC
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #4
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ add sp, #0x80
+ pop {r3, r4, r5, pc}
+ nop
+_021D8AC4: .word 0x021DBB3C
+_021D8AC8: .word 0xC7FFFFFF
+_021D8ACC: .word 0x021DBC50
+_021D8AD0: .word 0x021DBCA4
+_021D8AD4: .word 0x021DBCC0
+_021D8AD8: .word 0x021DBCDC
+ thumb_func_end MOD63_021D8A04
+
+ thumb_func_start MOD63_021D8ADC
+MOD63_021D8ADC: ; 0x021D8ADC
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ add r4, r0, #0
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0x8c
+ ldr r5, _021D8BBC ; =0x021DBB6C
+ str r0, [r4, #0xc]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D8BC0 ; =0xC7FFFFFF
+ ldr r5, _021D8BC4 ; =0x021DBCF8
+ and r1, r0
+ lsl r0, r2, #1
+ orr r0, r1
+ str r0, [r2]
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #1
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r5, _021D8BC8 ; =0x021DBD14
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #1
+ bl FUN_02016C18
+ ldr r5, _021D8BCC ; =0x021DBD30
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #1
+ bl FUN_02016C18
+ ldr r5, _021D8BD0 ; =0x021DBBA8
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ add r3, r1, #0
+ bl FUN_02016C18
+ ldr r5, _021D8BD4 ; =0x021DBBE0
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #5
+ str r0, [r3]
+ ldr r0, [r4, #0xc]
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #4
+ mov r1, #0
+ bl FUN_02017FE4
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ nop
+_021D8BBC: .word 0x021DBB6C
+_021D8BC0: .word 0xC7FFFFFF
+_021D8BC4: .word 0x021DBCF8
+_021D8BC8: .word 0x021DBD14
+_021D8BCC: .word 0x021DBD30
+_021D8BD0: .word 0x021DBBA8
+_021D8BD4: .word 0x021DBBE0
+ thumb_func_end MOD63_021D8ADC
+
+ thumb_func_start MOD63_021D8BD8
+MOD63_021D8BD8: ; 0x021D8BD8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ mov r0, #4
+ str r0, [sp]
+ ldr r0, _021D8C14 ; =MOD63_021D8C20
+ mov r1, #0
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ mov r2, #1
+ add r3, r1, #0
+ bl FUN_02022318
+ str r0, [r4, #0x10]
+ ldr r3, _021D8C18 ; =0x021064B8
+ mov r0, #2
+ mov r1, #0
+ ldr r3, [r3]
+ lsl r0, r0, #0xe
+ add r2, r1, #0
+ blx r3
+ ldr r3, _021D8C1C ; =0x021064C0
+ mov r0, #0x80
+ ldr r3, [r3]
+ mov r1, #0
+ mov r2, #1
+ blx r3
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021D8C14: .word MOD63_021D8C20
+_021D8C18: .word 0x021064B8
+_021D8C1C: .word 0x021064C0
+ thumb_func_end MOD63_021D8BD8
+
+ thumb_func_start MOD63_021D8C20
+MOD63_021D8C20: ; 0x021D8C20
+ push {r3, lr}
+ ldr r0, _021D8C8C ; =0x04000008
+ mov r1, #3
+ ldrh r2, [r0]
+ bic r2, r1
+ strh r2, [r0]
+ add r0, #0x58
+ ldrh r2, [r0]
+ ldr r1, _021D8C90 ; =0xFFFFCFFD
+ and r2, r1
+ strh r2, [r0]
+ ldrh r3, [r0]
+ add r2, r1, #2
+ and r3, r2
+ mov r2, #0x10
+ orr r2, r3
+ strh r2, [r0]
+ ldrh r3, [r0]
+ ldr r2, _021D8C94 ; =0x0000CFFB
+ and r2, r3
+ strh r2, [r0]
+ add r2, r1, #2
+ ldrh r3, [r0]
+ add r1, r1, #2
+ and r3, r2
+ mov r2, #8
+ orr r2, r3
+ strh r2, [r0]
+ ldrh r2, [r0]
+ and r2, r1
+ mov r1, #0x20
+ orr r1, r2
+ strh r1, [r0]
+ ldr r0, _021D8C98 ; =0x021DBB5C
+ bl G3X_SetEdgeColorTable
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl G3X_SetFog
+ mov r0, #0
+ ldr r2, _021D8C9C ; =0x00007FFF
+ add r1, r0, #0
+ mov r3, #0x3f
+ str r0, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _021D8CA0 ; =0xBFFF0000
+ ldr r0, _021D8CA4 ; =0x04000580
+ str r1, [r0]
+ pop {r3, pc}
+ nop
+_021D8C8C: .word 0x04000008
+_021D8C90: .word 0xFFFFCFFD
+_021D8C94: .word 0x0000CFFB
+_021D8C98: .word 0x021DBB5C
+_021D8C9C: .word 0x00007FFF
+_021D8CA0: .word 0xBFFF0000
+_021D8CA4: .word 0x04000580
+ thumb_func_end MOD63_021D8C20
+
+ thumb_func_start MOD63_021D8CA8
+MOD63_021D8CA8: ; 0x021D8CA8
+ ldr r3, _021D8CAC ; =0x02009F81
+ bx r3
+ .align 2, 0
+_021D8CAC: .word 0x02009F81
+ thumb_func_end MOD63_021D8CA8
+
+ thumb_func_start MOD63_021D8CB0
+MOD63_021D8CB0: ; 0x021D8CB0
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02009F80
+ ldr r0, [r4, #0x4c]
+ bl MOD63_021DB598
+ pop {r4, pc}
+ thumb_func_end MOD63_021D8CB0
+
+ thumb_func_start MOD63_021D8CC0
+MOD63_021D8CC0: ; 0x021D8CC0
+ push {r4, r5}
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ ldr r2, [r0]
+ ldr r1, _021D8D08 ; =0xFFFF1FFF
+ add r4, r0, #0
+ and r2, r1
+ lsr r1, r0, #0xd
+ orr r1, r2
+ str r1, [r0]
+ add r4, #0x48
+ ldrh r3, [r4]
+ mov r2, #0x3f
+ mov r1, #0x1f
+ bic r3, r2
+ orr r1, r3
+ mov r3, #0x20
+ orr r1, r3
+ strh r1, [r4]
+ add r4, r0, #0
+ add r4, #0x4a
+ ldrh r5, [r4]
+ mov r1, #0x11
+ bic r5, r2
+ orr r1, r5
+ orr r1, r3
+ strh r1, [r4]
+ add r1, r0, #0
+ mov r2, #0xff
+ add r1, #0x40
+ strh r2, [r1]
+ ldr r1, _021D8D0C ; =0x0000209F
+ add r0, #0x44
+ strh r1, [r0]
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+_021D8D08: .word 0xFFFF1FFF
+_021D8D0C: .word 0x0000209F
+ thumb_func_end MOD63_021D8CC0
+
+ thumb_func_start MOD63_021D8D10
+MOD63_021D8D10: ; 0x021D8D10
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_0200A2AC
+ ldr r1, _021D8D90 ; =0x00007FFF
+ mov r0, #0
+ bl FUN_0200E3A0
+ ldr r1, _021D8D90 ; =0x00007FFF
+ mov r0, #1
+ bl FUN_0200E3A0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ mov r0, #3
+ mov r1, #0x4c
+ lsl r2, r0, #0x11
+ bl FUN_0201681C
+ mov r1, #0xab
+ add r0, r4, #0
+ lsl r1, r1, #2
+ mov r2, #0x4c
+ bl FUN_02006268
+ mov r2, #0xab
+ mov r1, #0
+ lsl r2, r2, #2
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x4c
+ str r0, [r4]
+ mov r1, #0
+ mov r0, #0xaa
+ str r1, [r4, #8]
+ lsl r0, r0, #2
+ strb r1, [r4, r0]
+ ldr r0, _021D8D94 ; =0x021C4918
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ bl FUN_0201B9D4
+ str r0, [r4, #0x14]
+ mov r0, #0
+ bl FUN_0201B9E0
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+_021D8D90: .word 0x00007FFF
+_021D8D94: .word 0x021C4918
+ thumb_func_end MOD63_021D8D10
+
+ thumb_func_start MOD63_021D8D98
+MOD63_021D8D98: ; 0x021D8D98
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ bl FUN_02006278
+ add r5, r0, #0
+ mov r0, #0xaa
+ lsl r0, r0, #2
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _021D8DD4
+ ldr r0, _021D8E5C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ bne _021D8DBC
+ mov r0, #8
+ tst r0, r1
+ beq _021D8DD4
+_021D8DBC:
+ mov r0, #1
+ str r0, [r5, #8]
+ ldr r1, _021D8E5C ; =0x021C48B8
+ mov r0, #0
+ str r0, [r1, #0x6c]
+ ldr r1, _021D8E60 ; =0x00007FFF
+ bl FUN_0200E3A0
+ ldr r1, _021D8E60 ; =0x00007FFF
+ mov r0, #1
+ bl FUN_0200E3A0
+_021D8DD4:
+ ldr r0, [r4]
+ cmp r0, #4
+ bhi _021D8E42
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8DE6: ; jump table
+ .short _021D8DF0 - _021D8DE6 - 2 ; case 0
+ .short _021D8E00 - _021D8DE6 - 2 ; case 1
+ .short _021D8E12 - _021D8DE6 - 2 ; case 2
+ .short _021D8E24 - _021D8DE6 - 2 ; case 3
+ .short _021D8E36 - _021D8DE6 - 2 ; case 4
+_021D8DF0:
+ mov r0, #0xaa
+ lsl r0, r0, #2
+ add r0, r5, r0
+ str r0, [r5, #0x30]
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8E46
+_021D8E00:
+ add r0, r5, #0
+ bl MOD63_021D8E9C
+ cmp r0, #0
+ beq _021D8E46
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8E46
+_021D8E12:
+ add r0, r5, #0
+ bl MOD63_021D93F0
+ cmp r0, #0
+ beq _021D8E46
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8E46
+_021D8E24:
+ add r0, r5, #0
+ bl MOD63_021DA0A8
+ cmp r0, #0
+ beq _021D8E46
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D8E46
+_021D8E36:
+ ldr r1, [r5, #4]
+ ldr r0, _021D8E64 ; =0x00000A8C
+ cmp r1, r0
+ blt _021D8E46
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D8E42:
+ bl ErrorHandling
+_021D8E46:
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021D8E50
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D8E50:
+ ldr r0, [r5, #4]
+ add r0, r0, #1
+ str r0, [r5, #4]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ nop
+_021D8E5C: .word 0x021C48B8
+_021D8E60: .word 0x00007FFF
+_021D8E64: .word 0x00000A8C
+ thumb_func_end MOD63_021D8D98
+
+ thumb_func_start MOD63_021D8E68
+MOD63_021D8E68: ; 0x021D8E68
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ bl FUN_0200E31C
+ ldr r0, [r4, #0x14]
+ bl FUN_0201B9E0
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0x4c
+ bl FUN_020168D0
+ ldr r0, _021D8E94 ; =0x0000003F
+ ldr r1, _021D8E98 ; =0x021DBAB8
+ bl FUN_02000E7C
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8E94: .word 0x0000003F
+_021D8E98: .word 0x021DBAB8
+ thumb_func_end MOD63_021D8E68
+
+ thumb_func_start MOD63_021D8E9C
+MOD63_021D8E9C: ; 0x021D8E9C
+ push {r4, lr}
+ add r1, r0, #0
+ ldr r0, [r1, #8]
+ add r4, r1, #0
+ add r4, #0x18
+ cmp r0, #0
+ beq _021D8EAE
+ mov r0, #3
+ strb r0, [r4]
+_021D8EAE:
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhi _021D8F06
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D8EC0: ; jump table
+ .short _021D8EC8 - _021D8EC0 - 2 ; case 0
+ .short _021D8ED6 - _021D8EC0 - 2 ; case 1
+ .short _021D8EE6 - _021D8EC0 - 2 ; case 2
+ .short _021D8EFC - _021D8EC0 - 2 ; case 3
+_021D8EC8:
+ add r0, r1, #0
+ bl MOD63_021D8F0C
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021D8F06
+_021D8ED6:
+ add r1, #0x18
+ add r0, r1, #0
+ bl MOD63_021D8F38
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021D8F06
+_021D8EE6:
+ add r0, r1, #0
+ ldr r1, [r1, #4]
+ add r0, #0x18
+ bl MOD63_021D90D0
+ cmp r0, #0
+ beq _021D8F06
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021D8F06
+_021D8EFC:
+ add r0, r1, #0
+ bl MOD63_021D9234
+ mov r0, #1
+ pop {r4, pc}
+_021D8F06:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021D8E9C
+
+ thumb_func_start MOD63_021D8F0C
+MOD63_021D8F0C: ; 0x021D8F0C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD63_021D8890
+ add r0, r4, #0
+ bl MOD63_021D88F0
+ ldr r0, [r4, #0xc]
+ str r0, [r4, #0x24]
+ bl MOD63_021DAEF8
+ str r0, [r4, #0x2c]
+ ldr r0, _021D8F34 ; =MOD63_021D8CA8
+ add r1, r4, #0
+ bl FUN_02015F10
+ mov r0, #1
+ strb r0, [r4, #0x1a]
+ pop {r4, pc}
+ nop
+_021D8F34: .word MOD63_021D8CA8
+ thumb_func_end MOD63_021D8F0C
+
+ thumb_func_start MOD63_021D8F38
+MOD63_021D8F38: ; 0x021D8F38
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x13
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x13
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x14
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x15
+ mov r3, #6
+ bl FUN_020068C8
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x4c
+ str r0, [sp, #4]
+ mov r0, #0x80
+ mov r1, #0x12
+ add r3, r2, #0
+ bl FUN_02006930
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x4c
+ str r0, [sp, #4]
+ mov r0, #0x80
+ mov r1, #0x12
+ mov r2, #4
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ mov r1, #1
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ add r3, r1, #0
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #2
+ mov r3, #1
+ bl FUN_020068C8
+ mov r1, #0
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x4c
+ str r0, [sp, #4]
+ mov r0, #0x80
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x16
+ mov r3, #3
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x16
+ mov r3, #7
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x48
+ mov r3, #5
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x49
+ mov r3, #5
+ bl FUN_020068C8
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x4c
+ str r0, [sp, #4]
+ mov r0, #0x80
+ mov r1, #0x47
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021D90C8 ; =0x04000050
+ mov r1, #2
+ mov r2, #8
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021D90CC ; =0x04001050
+ mov r1, #2
+ mov r2, #8
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #1
+ add r1, r0, #0
+ bl OS_WaitIrq
+ mov r0, #0
+ bl FUN_0200E394
+ mov r0, #1
+ bl FUN_0200E394
+ bl FUN_0201E788
+ add sp, #0x10
+ pop {r4, pc}
+ nop
+_021D90C8: .word 0x04000050
+_021D90CC: .word 0x04001050
+ thumb_func_end MOD63_021D8F38
+
+ thumb_func_start MOD63_021D90D0
+MOD63_021D90D0: ; 0x021D90D0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ add r5, r1, #0
+ bl MOD63_021DB1AC
+ ldrb r0, [r4, #1]
+ cmp r0, #5
+ bls _021D90E6
+ b _021D9208
+_021D90E6:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D90F2: ; jump table
+ .short _021D90FE - _021D90F2 - 2 ; case 0
+ .short _021D9122 - _021D90F2 - 2 ; case 1
+ .short _021D9148 - _021D90F2 - 2 ; case 2
+ .short _021D91AE - _021D90F2 - 2 ; case 3
+ .short _021D91CE - _021D90F2 - 2 ; case 4
+ .short _021D91FA - _021D90F2 - 2 ; case 5
+_021D90FE:
+ mov r2, #0
+ strb r2, [r4, #7]
+ strb r2, [r4, #6]
+ ldr r0, _021D9210 ; =MOD63_021D92A4
+ strb r2, [r4, #8]
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x10]
+ mov r0, #1
+ ldr r1, _021D9214 ; =0x00000494
+ add r2, r0, #0
+ bl FUN_0200433C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9208
+_021D9122:
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _021D9208
+ cmp r5, #0x73
+ blt _021D9208
+ mov r2, #0
+ strb r2, [r4, #7]
+ mov r0, #0x10
+ strb r0, [r4, #6]
+ ldr r0, _021D9218 ; =MOD63_021D9300
+ strb r2, [r4, #8]
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x10]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9208
+_021D9148:
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _021D9208
+ ldr r0, _021D921C ; =0x00000109
+ cmp r5, r0
+ blt _021D9208
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021D9220 ; =0x04000050
+ mov r1, #4
+ mov r2, #8
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021D9224 ; =0x04001050
+ mov r1, #4
+ mov r2, #8
+ mov r3, #0
+ bl G2x_SetBlendAlpha_
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E74C
+ mov r2, #0
+ strb r2, [r4, #7]
+ strb r2, [r4, #6]
+ ldr r0, _021D9228 ; =MOD63_021D9360
+ strb r2, [r4, #8]
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x10]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9208
+_021D91AE:
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _021D9208
+ mov r2, #0
+ strb r2, [r4, #7]
+ strb r2, [r4, #6]
+ ldr r0, _021D922C ; =MOD63_021D93A8
+ strb r2, [r4, #8]
+ add r1, r4, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x10]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9208
+_021D91CE:
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _021D9208
+ ldr r0, _021D9230 ; =0x000001EA
+ cmp r5, r0
+ blt _021D9208
+ mov r0, #0x12
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #2
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9208
+_021D91FA:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9208
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_021D9208:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_021D9210: .word MOD63_021D92A4
+_021D9214: .word 0x00000494
+_021D9218: .word MOD63_021D9300
+_021D921C: .word 0x00000109
+_021D9220: .word 0x04000050
+_021D9224: .word 0x04001050
+_021D9228: .word MOD63_021D9360
+_021D922C: .word MOD63_021D93A8
+_021D9230: .word 0x000001EA
+ thumb_func_end MOD63_021D90D0
+
+ thumb_func_start MOD63_021D9234
+MOD63_021D9234: ; 0x021D9234
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ ldrb r0, [r4, #0x1a]
+ cmp r0, #0
+ beq _021D9286
+ ldr r0, [r4, #0x2c]
+ bl MOD63_021DAF9C
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #6
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #7
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #5
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ bl FUN_02016A18
+ mov r0, #0
+ strb r0, [r4, #0x1a]
+_021D9286:
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _021D92A0
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ bne _021D9296
+ bl ErrorHandling
+_021D9296:
+ ldr r0, [r4, #0x28]
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x28]
+_021D92A0:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021D9234
+
+ thumb_func_start MOD63_021D92A4
+MOD63_021D92A4: ; 0x021D92A4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldrb r1, [r4, #7]
+ add r1, r1, #1
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #7]
+ cmp r1, #6
+ blo _021D92C0
+ mov r1, #0
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #6]
+ add r1, r1, #1
+ strb r1, [r4, #6]
+_021D92C0:
+ ldrb r1, [r4, #6]
+ cmp r1, #0x10
+ blo _021D92D2
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x10]
+ mov r0, #1
+ strb r0, [r4, #8]
+_021D92D2:
+ mov r0, #0x10
+ str r0, [sp]
+ ldrb r3, [r4, #6]
+ ldr r0, _021D92F8 ; =0x04000050
+ mov r1, #2
+ mov r2, #8
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x10
+ str r0, [sp]
+ ldrb r3, [r4, #6]
+ ldr r0, _021D92FC ; =0x04001050
+ mov r1, #2
+ mov r2, #8
+ bl G2x_SetBlendAlpha_
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D92F8: .word 0x04000050
+_021D92FC: .word 0x04001050
+ thumb_func_end MOD63_021D92A4
+
+ thumb_func_start MOD63_021D9300
+MOD63_021D9300: ; 0x021D9300
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldrb r1, [r4, #7]
+ add r1, r1, #1
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #7]
+ cmp r1, #4
+ blo _021D931C
+ mov r1, #0
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #6]
+ sub r1, r1, #1
+ strb r1, [r4, #6]
+_021D931C:
+ ldrb r1, [r4, #6]
+ cmp r1, #0
+ bne _021D9332
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x10]
+ mov r1, #1
+ strb r1, [r4, #8]
+ ldr r0, [r4, #0x18]
+ strb r1, [r0]
+_021D9332:
+ mov r0, #0x10
+ str r0, [sp]
+ ldrb r3, [r4, #6]
+ ldr r0, _021D9358 ; =0x04000050
+ mov r1, #2
+ mov r2, #8
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x10
+ str r0, [sp]
+ ldrb r3, [r4, #6]
+ ldr r0, _021D935C ; =0x04001050
+ mov r1, #2
+ mov r2, #8
+ bl G2x_SetBlendAlpha_
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D9358: .word 0x04000050
+_021D935C: .word 0x04001050
+ thumb_func_end MOD63_021D9300
+
+ thumb_func_start MOD63_021D9360
+MOD63_021D9360: ; 0x021D9360
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldrb r1, [r4, #7]
+ add r1, r1, #1
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #7]
+ cmp r1, #4
+ blo _021D937C
+ mov r1, #0
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #6]
+ add r1, r1, #1
+ strb r1, [r4, #6]
+_021D937C:
+ ldrb r1, [r4, #6]
+ cmp r1, #0x10
+ blo _021D938E
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x10]
+ mov r0, #1
+ strb r0, [r4, #8]
+_021D938E:
+ mov r0, #0x10
+ str r0, [sp]
+ ldrb r3, [r4, #6]
+ ldr r0, _021D93A4 ; =0x04000050
+ mov r1, #4
+ mov r2, #8
+ bl G2x_SetBlendAlpha_
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D93A4: .word 0x04000050
+ thumb_func_end MOD63_021D9360
+
+ thumb_func_start MOD63_021D93A8
+MOD63_021D93A8: ; 0x021D93A8
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r1, #0
+ ldrb r1, [r4, #7]
+ add r1, r1, #1
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #7]
+ cmp r1, #4
+ blo _021D93C4
+ mov r1, #0
+ strb r1, [r4, #7]
+ ldrb r1, [r4, #6]
+ add r1, r1, #1
+ strb r1, [r4, #6]
+_021D93C4:
+ ldrb r1, [r4, #6]
+ cmp r1, #0x10
+ blo _021D93D6
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x10]
+ mov r0, #1
+ strb r0, [r4, #8]
+_021D93D6:
+ mov r0, #0x10
+ str r0, [sp]
+ ldrb r3, [r4, #6]
+ ldr r0, _021D93EC ; =0x04001050
+ mov r1, #4
+ mov r2, #8
+ bl G2x_SetBlendAlpha_
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D93EC: .word 0x04001050
+ thumb_func_end MOD63_021D93A8
+
+ thumb_func_start MOD63_021D93F0
+MOD63_021D93F0: ; 0x021D93F0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ add r4, r5, #0
+ add r4, #0x34
+ cmp r0, #0
+ beq _021D9402
+ mov r0, #4
+ strb r0, [r4]
+_021D9402:
+ ldrb r0, [r4]
+ cmp r0, #4
+ bhi _021D9492
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9414: ; jump table
+ .short _021D941E - _021D9414 - 2 ; case 0
+ .short _021D942C - _021D9414 - 2 ; case 1
+ .short _021D943C - _021D9414 - 2 ; case 2
+ .short _021D9452 - _021D9414 - 2 ; case 3
+ .short _021D9488 - _021D9414 - 2 ; case 4
+_021D941E:
+ add r0, r5, #0
+ bl MOD63_021D9498
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021D9492
+_021D942C:
+ add r5, #0x34
+ add r0, r5, #0
+ bl MOD63_021D96A0
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021D9492
+_021D943C:
+ add r0, r5, #0
+ add r0, #0x34
+ bl MOD63_021D9810
+ mov r0, #1
+ add r5, #0x39
+ strb r0, [r5]
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+ b _021D9492
+_021D9452:
+ add r0, r5, #0
+ ldr r1, [r5, #4]
+ add r0, #0x34
+ bl MOD63_021D99EC
+ cmp r0, #0
+ beq _021D9466
+ ldrb r0, [r4]
+ add r0, r0, #1
+ strb r0, [r4]
+_021D9466:
+ ldr r0, [r5, #0x44]
+ bl MOD63_021DAC18
+ add r0, r5, #0
+ add r0, #0x39
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D9480
+ add r5, #0x34
+ add r0, r5, #0
+ bl MOD63_021D9980
+ b _021D9492
+_021D9480:
+ ldr r0, [r5, #0x4c]
+ bl MOD63_021DB5A8
+ b _021D9492
+_021D9488:
+ add r0, r5, #0
+ bl MOD63_021D95A8
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D9492:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021D93F0
+
+ thumb_func_start MOD63_021D9498
+MOD63_021D9498: ; 0x021D9498
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r5, r0, #0
+ bl MOD63_021D88B0
+ add r0, r5, #0
+ bl MOD63_021D8A04
+ add r0, r5, #0
+ bl MOD63_021D8BD8
+ bl MOD63_021DA6E0
+ add r4, r0, #0
+ bl MOD63_021DB498
+ add r6, r0, #0
+ mov r0, #0x4c
+ add r1, r4, #0
+ bl FUN_02016998
+ str r0, [r5, #0x44]
+ mov r0, #0x10
+ bl MOD63_021DAF20
+ str r0, [r5, #0x48]
+ mov r0, #0x4c
+ add r1, r6, #0
+ bl FUN_02016998
+ str r0, [r5, #0x4c]
+ ldr r0, [r5, #0x44]
+ mov r1, #0
+ add r2, r4, #0
+ bl Call_FillMemWithValue
+ ldr r0, [r5, #0x4c]
+ mov r1, #0
+ add r2, r6, #0
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ mov r1, #4
+ add r0, #0x3b
+ strb r1, [r0]
+ ldr r0, [r5, #0x4c]
+ bl MOD63_021DB49C
+ ldr r0, [r5, #0xc]
+ mov r1, #1
+ str r0, [r5, #0x40]
+ ldr r0, _021D9588 ; =0x021C4918
+ strb r1, [r0, #5]
+ bl FUN_0201E7A0
+ ldr r6, _021D958C ; =0x021DBDE8
+ ldr r7, _021D9590 ; =0x021DBAD0
+ mov r4, #0
+_021D950C:
+ mov r0, #0xc
+ add r1, r4, #0
+ mul r1, r0
+ add r3, r6, r1
+ ldr r2, [r3, #4]
+ ldr r1, [r6, r1]
+ ldr r3, [r3, #8]
+ lsl r1, r1, #0x10
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, r4, #0
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ asr r3, r3, #0x10
+ bl FUN_020B8418
+ lsl r1, r4, #1
+ ldrh r1, [r7, r1]
+ add r0, r4, #0
+ bl FUN_020B8404
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021D950C
+ ldr r0, _021D9594 ; =0x00004210
+ ldr r1, _021D9598 ; =0x0000318A
+ mov r2, #0
+ bl FUN_020B83E0
+ ldr r0, _021D959C ; =0x00004A52
+ ldr r1, _021D95A0 ; =0x000039CE
+ mov r2, #0
+ bl FUN_020B83BC
+ mov r0, #0x1f
+ str r0, [sp]
+ mov r0, #2
+ lsl r0, r0, #0xe
+ mov r1, #0
+ str r0, [sp, #4]
+ mov r0, #0xd
+ mov r2, #2
+ add r3, r1, #0
+ bl FUN_020B8390
+ ldr r0, _021D95A4 ; =MOD63_021D8CB0
+ add r1, r5, #0
+ bl FUN_02015F10
+ mov r0, #0x10
+ mov r1, #1
+ mov r2, #2
+ bl FUN_0200A274
+ mov r0, #1
+ add r5, #0x36
+ strb r0, [r5]
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9588: .word 0x021C4918
+_021D958C: .word 0x021DBDE8
+_021D9590: .word 0x021DBAD0
+_021D9594: .word 0x00004210
+_021D9598: .word 0x0000318A
+_021D959C: .word 0x00004A52
+_021D95A0: .word 0x000039CE
+_021D95A4: .word MOD63_021D8CB0
+ thumb_func_end MOD63_021D9498
+
+ thumb_func_start MOD63_021D95A8
+MOD63_021D95A8: ; 0x021D95A8
+ push {r4, r5, r6, lr}
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ add r5, r0, #0
+ ldr r1, [r2]
+ ldr r0, _021D969C ; =0xFFFF1FFF
+ and r0, r1
+ str r0, [r2]
+ add r0, r5, #0
+ add r0, #0x38
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D95F6
+ bl FUN_0201EB98
+ ldr r0, [r5, #0x78]
+ bl FUN_0201EB70
+ mov r4, #0
+ mov r6, #0x58
+_021D95D0:
+ add r0, r4, #0
+ mul r0, r6
+ add r0, r5, r0
+ add r0, #0xd0
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #6
+ blo _021D95D0
+ ldr r0, [r5, #0x70]
+ bl FUN_02016A18
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x38
+ strb r1, [r0]
+_021D95F6:
+ add r0, r5, #0
+ add r0, #0x37
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D9624
+ ldr r0, [r5, #0x44]
+ bl MOD63_021DAA04
+ mov r4, #0
+_021D9608:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, #0x50]
+ bl FUN_02016A18
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021D9608
+ add r0, r5, #0
+ mov r1, #0
+ add r0, #0x37
+ strb r1, [r0]
+_021D9624:
+ add r0, r5, #0
+ add r0, #0x36
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _021D9690
+ ldr r0, [r5, #0x48]
+ cmp r0, #0
+ beq _021D963C
+ bl MOD63_021DAF4C
+ mov r0, #0
+ str r0, [r5, #0x48]
+_021D963C:
+ ldr r0, [r5, #0x44]
+ cmp r0, #0
+ beq _021D964A
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r5, #0x44]
+_021D964A:
+ ldr r0, [r5, #0x4c]
+ cmp r0, #0
+ beq _021D965E
+ bl MOD63_021DB580
+ ldr r0, [r5, #0x4c]
+ bl FUN_02016A18
+ mov r0, #0
+ str r0, [r5, #0x4c]
+_021D965E:
+ ldr r0, [r5, #0xc]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r5, #0xc]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r5, #0xc]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r5, #0xc]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r5, #0xc]
+ bl FUN_02016A18
+ ldr r0, [r5, #0x10]
+ bl FUN_020223BC
+ mov r0, #0
+ add r5, #0x36
+ strb r0, [r5]
+_021D9690:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ pop {r4, r5, r6, pc}
+ nop
+_021D969C: .word 0xFFFF1FFF
+ thumb_func_end MOD63_021D95A8
+
+ thumb_func_start MOD63_021D96A0
+MOD63_021D96A0: ; 0x021D96A0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x28
+ ldr r3, _021D980C ; =0x021DBB2C
+ add r2, sp, #0x18
+ add r5, r0, #0
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ mov r0, #0x80
+ mov r1, #0x4c
+ bl FUN_02006670
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ str r0, [sp, #0x14]
+ add r0, #0x2c
+ mov r4, #0
+ str r0, [sp, #0x14]
+_021D96C6:
+ lsl r7, r4, #2
+ add r1, sp, #0x18
+ ldr r0, [sp, #0x10]
+ ldr r1, [r1, r7]
+ mov r2, #0x4c
+ add r6, r5, r7
+ bl FUN_02006704
+ str r0, [r6, #0x1c]
+ cmp r0, #0
+ beq _021D96F4
+ ldr r1, [sp, #0x14]
+ add r1, r1, r7
+ bl FUN_020B0138
+ cmp r0, #0
+ bne _021D96F8
+ ldr r0, [r6, #0x2c]
+ bl FUN_02016A18
+ bl ErrorHandling
+ b _021D96F8
+_021D96F4:
+ bl ErrorHandling
+_021D96F8:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021D96C6
+ ldr r0, [sp, #0x10]
+ bl FUN_020066F4
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0x1c
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0x1a
+ mov r3, #3
+ bl FUN_020068C8
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r5, #0x2c]
+ mov r2, #0xa
+ add r3, r1, #0
+ bl MOD63_021D9EA8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0x11
+ mov r3, #4
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0xf
+ mov r3, #4
+ bl FUN_020068C8
+ mov r0, #1
+ lsl r0, r0, #8
+ str r0, [sp]
+ mov r0, #0x4c
+ str r0, [sp, #4]
+ mov r0, #0x80
+ mov r1, #0x10
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0x1b
+ mov r3, #1
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0x19
+ mov r3, #1
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #0xc]
+ mov r0, #0x80
+ mov r1, #0x18
+ mov r3, #2
+ bl FUN_020068C8
+ ldr r0, [r5, #0x10]
+ bl MOD63_021DA6E8
+ ldr r0, [r5, #0x10]
+ bl MOD63_021DAA5C
+ ldr r0, [r5, #0x10]
+ ldr r1, [r5, #0x14]
+ bl MOD63_021DABCC
+ mov r0, #0xe
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E74C
+ mov r0, #0
+ bl FUN_0200E394
+ mov r0, #1
+ bl FUN_0200E394
+ mov r0, #1
+ strb r0, [r5, #3]
+ add sp, #0x28
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D980C: .word 0x021DBB2C
+ thumb_func_end MOD63_021D96A0
+
+ thumb_func_start MOD63_021D9810
+MOD63_021D9810: ; 0x021D9810
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ mov r0, #0x80
+ mov r1, #0x46
+ mov r2, #0x4c
+ bl LoadFromNarc_2
+ str r0, [r5, #0x3c]
+ bl FUN_020BC0FC
+ str r0, [r5, #0x40]
+ bl FUN_0201B3C4
+ cmp r0, #0
+ bne _021D9834
+ bl ErrorHandling
+_021D9834:
+ ldr r0, [r5, #0x40]
+ ldr r0, [r0, #0x14]
+ cmp r0, #0
+ bne _021D9840
+ bl ErrorHandling
+_021D9840:
+ ldr r2, [r5, #0x40]
+ ldr r0, [r5, #0x3c]
+ ldr r1, [r2, #0x14]
+ add r1, r2, r1
+ sub r1, r1, r0
+ bl FUN_02016B44
+ mov r0, #0x80
+ mov r1, #0x4c
+ bl FUN_02006670
+ str r0, [sp, #0xc]
+ add r0, r5, #0
+ str r0, [sp, #0x10]
+ add r0, #0x48
+ mov r7, #0
+ str r0, [sp, #0x10]
+_021D9862:
+ ldr r1, _021D9964 ; =0x021DBB90
+ lsl r2, r7, #2
+ ldr r1, [r1, r2]
+ mov r0, #0x58
+ add r6, r7, #0
+ mul r6, r0
+ ldr r0, [sp, #0xc]
+ mov r2, #0x4c
+ bl FUN_02006704
+ add r1, r5, r6
+ add r1, #0x9c
+ str r0, [r1]
+ add r0, r5, r6
+ add r0, #0x9c
+ ldr r0, [r0]
+ ldr r1, [r5, #0x40]
+ bl FUN_0201B3A8
+ cmp r0, #0
+ bne _021D9890
+ bl ErrorHandling
+_021D9890:
+ add r0, r5, r6
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl FUN_020BC13C
+ ldrb r0, [r0, #9]
+ cmp r0, #1
+ beq _021D98A4
+ bl ErrorHandling
+_021D98A4:
+ add r0, r5, r6
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl FUN_020BC13C
+ ldrh r1, [r0, #0xe]
+ add r1, r0, r1
+ ldr r1, [r1, #0xc]
+ add r4, r0, r1
+ bne _021D98BC
+ bl ErrorHandling
+_021D98BC:
+ ldr r0, [sp, #0x10]
+ add r1, r4, #0
+ add r0, r0, r6
+ bl FUN_020B80B4
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x40
+ bl FUN_020BC094
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x80
+ bl FUN_020BC094
+ mov r2, #2
+ add r0, r4, #0
+ mov r1, #0
+ lsl r2, r2, #8
+ bl FUN_020BC094
+ mov r2, #1
+ add r0, r4, #0
+ mov r1, #0
+ lsl r2, r2, #0xa
+ bl FUN_020BC094
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0xf
+ bl FUN_020BC02C
+ add r0, r7, #1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ cmp r7, #6
+ blo _021D9862
+ ldr r0, [sp, #0xc]
+ bl FUN_020066F4
+ mov r0, #0x4c
+ bl FUN_0201EB64
+ add r3, sp, #0x20
+ ldr r4, _021D9968 ; =0x021DBAE4
+ str r0, [r5, #0x44]
+ ldmia r4!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r4]
+ ldr r1, _021D996C ; =0x0029AEC1
+ str r0, [r3]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x44]
+ ldr r3, _021D9970 ; =0x000005C1
+ str r0, [sp, #8]
+ add r0, r2, #0
+ ldr r2, _021D9974 ; =0x021DBB80
+ bl FUN_0201ECA8
+ ldr r0, _021D9978 ; =0x00000981
+ ldr r1, [r5, #0x44]
+ bl FUN_0201EEF0
+ ldr r4, _021D997C ; =0x021DBB08
+ add r3, sp, #0x14
+ ldmia r4!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r4]
+ str r0, [r3]
+ ldr r1, [r5, #0x44]
+ add r0, r2, #0
+ bl FUN_0201EF70
+ ldr r0, [r5, #0x44]
+ bl FUN_0201EB8C
+ mov r0, #1
+ strb r0, [r5, #4]
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9964: .word 0x021DBB90
+_021D9968: .word 0x021DBAE4
+_021D996C: .word 0x0029AEC1
+_021D9970: .word 0x000005C1
+_021D9974: .word 0x021DBB80
+_021D9978: .word 0x00000981
+_021D997C: .word 0x021DBB08
+ thumb_func_end MOD63_021D9810
+
+ thumb_func_start MOD63_021D9980
+MOD63_021D9980: ; 0x021D9980
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ ldr r4, _021D99E4 ; =0x021DBD4C
+ add r5, r0, #0
+ add r3, sp, #0x18
+ mov r2, #4
+_021D998C:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D998C
+ ldr r0, [r4]
+ add r2, sp, #0xc
+ str r0, [r3]
+ ldr r3, _021D99E8 ; =0x021DBAFC
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ add r1, sp, #0
+ str r0, [r2]
+ mov r0, #0
+ str r0, [r1]
+ str r0, [r1, #4]
+ str r0, [r1, #8]
+ bl FUN_020222AC
+ bl FUN_0201EBA4
+ mov r4, #0
+ add r5, #0x48
+ add r7, sp, #0
+ mov r6, #0x58
+_021D99BE:
+ add r0, r4, #0
+ mul r0, r6
+ add r0, r5, r0
+ add r1, r7, #0
+ add r2, sp, #0x18
+ add r3, sp, #0xc
+ bl FUN_0201B26C
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #6
+ blo _021D99BE
+ mov r0, #0
+ mov r1, #1
+ bl FUN_020222B4
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D99E4: .word 0x021DBD4C
+_021D99E8: .word 0x021DBAFC
+ thumb_func_end MOD63_021D9980
+
+ thumb_func_start MOD63_021D99EC
+MOD63_021D99EC: ; 0x021D99EC
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldrb r0, [r4, #6]
+ add r5, r1, #0
+ cmp r0, #0
+ bne _021D9A00
+ ldr r0, [r4, #0x14]
+ bl MOD63_021DB38C
+_021D9A00:
+ ldrb r0, [r4, #6]
+ ldrb r1, [r4, #7]
+ add r0, r0, #1
+ bl _s32_div_f
+ strb r1, [r4, #6]
+ ldrb r0, [r4, #1]
+ cmp r0, #0x11
+ bhi _021D9B0C
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D9A1E: ; jump table
+ .short _021D9A42 - _021D9A1E - 2 ; case 0
+ .short _021D9A6A - _021D9A1E - 2 ; case 1
+ .short _021D9A7A - _021D9A1E - 2 ; case 2
+ .short _021D9AB8 - _021D9A1E - 2 ; case 3
+ .short _021D9AEE - _021D9A1E - 2 ; case 4
+ .short _021D9B3E - _021D9A1E - 2 ; case 5
+ .short _021D9B72 - _021D9A1E - 2 ; case 6
+ .short _021D9BC8 - _021D9A1E - 2 ; case 7
+ .short _021D9C04 - _021D9A1E - 2 ; case 8
+ .short _021D9C70 - _021D9A1E - 2 ; case 9
+ .short _021D9CB4 - _021D9A1E - 2 ; case 10
+ .short _021D9CFC - _021D9A1E - 2 ; case 11
+ .short _021D9D38 - _021D9A1E - 2 ; case 12
+ .short _021D9D94 - _021D9A1E - 2 ; case 13
+ .short _021D9DF8 - _021D9A1E - 2 ; case 14
+ .short _021D9E48 - _021D9A1E - 2 ; case 15
+ .short _021D9E84 - _021D9A1E - 2 ; case 16
+ .short _021D9E9A - _021D9A1E - 2 ; case 17
+_021D9A42:
+ mov r0, #0xa
+ lsl r0, r0, #6
+ cmp r5, r0
+ blt _021D9B0C
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E74C
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #8
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #1
+ bl FUN_0200A208
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9A6A:
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl MOD63_021DACA0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9A7A:
+ ldr r0, _021D9DCC ; =0x000002E9
+ cmp r5, r0
+ bne _021D9A88
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+_021D9A88:
+ ldr r0, _021D9DD0 ; =0x000003C5
+ cmp r5, r0
+ blt _021D9B0C
+ mov r0, #7
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x12
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ ldr r3, _021D9DD4 ; =0x00007FFF
+ mov r0, #3
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #0x10
+ strb r0, [r4, #7]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9AB8:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD63_021D9F38
+ ldr r0, [r4, #0x10]
+ add r1, r5, #0
+ bl MOD63_021DAD6C
+ ldr r0, _021D9DD8 ; =0x00000631
+ cmp r5, r0
+ blt _021D9B0C
+ mov r0, #0x12
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ mov r1, #0
+ str r0, [sp, #8]
+ ldr r3, _021D9DD4 ; =0x00007FFF
+ mov r0, #3
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9AEE:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD63_021D9F38
+ ldr r0, [r4, #0x10]
+ add r1, r5, #0
+ bl MOD63_021DAD6C
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9B0C
+ ldr r0, _021D9DDC ; =0x0000064A
+ cmp r5, r0
+ bge _021D9B0E
+_021D9B0C:
+ b _021D9EA0
+_021D9B0E:
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ mov r2, #1
+ bl MOD63_021DAC24
+ bl MOD63_021D8CC0
+ mov r0, #0
+ strb r0, [r4, #5]
+ mov r0, #0x12
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ ldr r3, _021D9DD4 ; =0x00007FFF
+ mov r0, #3
+ add r2, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9B3E:
+ add r0, r4, #0
+ bl MOD63_021D9EE0
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9C12
+ ldr r0, _021D9DE0 ; =0x000006B3
+ cmp r5, r0
+ blt _021D9C12
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9B72:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9C12
+ mov r1, #0
+ ldr r0, _021D9DE4 ; =0x04000050
+ mov r2, #0x38
+ add r3, r1, #0
+ str r1, [sp]
+ bl G2x_SetBlendAlpha_
+ mov r0, #6
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #8
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ mov r1, #0
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl MOD63_021DAD18
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9BC8:
+ add r0, r4, #0
+ bl MOD63_021D9F20
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9C12
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ add r2, r5, #0
+ bl MOD63_021DB5CC
+ cmp r0, #0
+ beq _021D9C12
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9C04:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9C12
+ ldr r0, _021D9DE8 ; =0x00000721
+ cmp r5, r0
+ bge _021D9C14
+_021D9C12:
+ b _021D9EA0
+_021D9C14:
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ bl MOD63_021DACA0
+ mov r1, #0
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl MOD63_021DAC24
+ mov r1, #1
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl MOD63_021DAC24
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ mov r2, #1
+ bl MOD63_021DAD18
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4, #0x38]
+ mov r2, #7
+ add r3, r1, #0
+ bl MOD63_021D9EA8
+ ldr r0, [r4, #0x10]
+ mov r1, #2
+ mov r2, #1
+ bl MOD63_021DAC24
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9C70:
+ add r0, r4, #0
+ bl MOD63_021D9F20
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9D46
+ ldr r0, _021D9DE8 ; =0x00000721
+ cmp r5, r0
+ blt _021D9D46
+ ldr r0, [r4, #0x10]
+ bl MOD63_021DACC0
+ cmp r0, #0
+ beq _021D9D46
+ ldr r0, _021D9DEC ; =0x00000785
+ cmp r5, r0
+ blt _021D9D46
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9CB4:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9D46
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ mov r2, #0
+ bl MOD63_021DAD18
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4, #0x30]
+ mov r2, #7
+ add r3, r1, #0
+ bl MOD63_021D9EA8
+ ldr r0, [r4, #0x10]
+ mov r1, #2
+ mov r2, #0
+ bl MOD63_021DAC24
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9CFC:
+ add r0, r4, #0
+ bl MOD63_021D9F20
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9D46
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ add r2, r5, #0
+ bl MOD63_021DB5CC
+ cmp r0, #0
+ beq _021D9D46
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9D38:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9D46
+ ldr r0, _021D9DF0 ; =0x000007F8
+ cmp r5, r0
+ bgt _021D9D48
+_021D9D46:
+ b _021D9EA0
+_021D9D48:
+ mov r1, #1
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl MOD63_021DAD18
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ mov r2, #1
+ bl MOD63_021DAC24
+ ldr r0, [r4, #0x10]
+ bl MOD63_021DAC6C
+ ldr r0, [r4, #0x10]
+ mov r1, #4
+ bl MOD63_021DAC80
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #0
+ str r0, [r4, #8]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9D94:
+ add r0, r4, #0
+ bl MOD63_021D9F00
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9EA0
+ ldr r0, _021D9DF4 ; =0x00000861
+ cmp r5, r0
+ ble _021D9EA0
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #0
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_0200E1D0
+ mov r0, #0
+ str r0, [r4, #8]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+ .align 2, 0
+_021D9DCC: .word 0x000002E9
+_021D9DD0: .word 0x000003C5
+_021D9DD4: .word 0x00007FFF
+_021D9DD8: .word 0x00000631
+_021D9DDC: .word 0x0000064A
+_021D9DE0: .word 0x000006B3
+_021D9DE4: .word 0x04000050
+_021D9DE8: .word 0x00000721
+_021D9DEC: .word 0x00000785
+_021D9DF0: .word 0x000007F8
+_021D9DF4: .word 0x00000861
+_021D9DF8:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9EA0
+ mov r1, #0
+ ldr r0, [r4, #0x10]
+ add r2, r1, #0
+ bl MOD63_021DAD18
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ mov r2, #0
+ bl MOD63_021DAD18
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4, #0x34]
+ mov r2, #7
+ add r3, r1, #0
+ bl MOD63_021D9EA8
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #4
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #3
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9E48:
+ add r0, r4, #0
+ bl MOD63_021D9F20
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9EA0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ add r2, r5, #0
+ bl MOD63_021DB5CC
+ cmp r0, #0
+ beq _021D9EA0
+ mov r0, #0x12
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9E84:
+ add r0, r4, #0
+ bl MOD63_021D9F20
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D9EA0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021D9EA0
+_021D9E9A:
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_021D9EA0:
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021D99EC
+
+ thumb_func_start MOD63_021D9EA8
+MOD63_021D9EA8: ; 0x021D9EA8
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ lsl r7, r2, #5
+ add r6, r1, #0
+ ldr r0, [r5, #0xc]
+ add r1, r7, #0
+ add r4, r3, #0
+ bl DC_FlushRange
+ ldr r1, [r5, #0xc]
+ cmp r6, #0
+ bne _021D9ED0
+ lsl r0, r4, #1
+ add r0, r1, r0
+ add r1, sp, #8
+ ldrb r1, [r1, #0x10]
+ add r2, r7, #0
+ bl GX_LoadBGPltt
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9ED0:
+ lsl r0, r4, #1
+ add r0, r1, r0
+ add r1, sp, #8
+ ldrb r1, [r1, #0x10]
+ add r2, r7, #0
+ bl GXS_LoadBGPltt
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD63_021D9EA8
+
+ thumb_func_start MOD63_021D9EE0
+MOD63_021D9EE0: ; 0x021D9EE0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ add r0, r1, #1
+ str r0, [r4, #8]
+ cmp r1, #0x18
+ ble _021D9EFE
+ mov r2, #4
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ sub r3, r2, #5
+ bl FUN_020179E0
+ mov r0, #0
+ str r0, [r4, #8]
+_021D9EFE:
+ pop {r4, pc}
+ thumb_func_end MOD63_021D9EE0
+
+ thumb_func_start MOD63_021D9F00
+MOD63_021D9F00: ; 0x021D9F00
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ add r0, r1, #1
+ str r0, [r4, #8]
+ cmp r1, #3
+ ble _021D9F1E
+ mov r2, #1
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_020179E0
+ mov r0, #0
+ str r0, [r4, #8]
+_021D9F1E:
+ pop {r4, pc}
+ thumb_func_end MOD63_021D9F00
+
+ thumb_func_start MOD63_021D9F20
+MOD63_021D9F20: ; 0x021D9F20
+ push {r4, lr}
+ add r4, r0, #0
+ mov r2, #1
+ add r3, r2, #0
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ sub r3, #0x11
+ bl FUN_020179E0
+ mov r0, #0
+ str r0, [r4, #8]
+ pop {r4, pc}
+ thumb_func_end MOD63_021D9F20
+
+ thumb_func_start MOD63_021D9F38
+MOD63_021D9F38: ; 0x021D9F38
+ push {r4, r5, r6, lr}
+ sub sp, #0x50
+ add r4, r0, #0
+ add r5, r1, #0
+ add r0, sp, #0x44
+ mov r1, #0
+ str r1, [r0]
+ str r1, [r0, #4]
+ str r1, [r0, #8]
+ ldr r1, _021DA078 ; =0x000004AB
+ cmp r5, r1
+ bgt _021D9FE2
+ ldr r0, [r4, #0x44]
+ bl FUN_0201F008
+ ldr r1, _021DA07C ; =0x000005C1
+ sub r0, #0x20
+ cmp r0, r1
+ ble _021D9F68
+ ldr r0, _021DA080 ; =0x0000FFE0
+ ldr r1, [r4, #0x44]
+ bl FUN_0201EF2C
+ b _021D9F70
+_021D9F68:
+ add r0, r1, #0
+ ldr r1, [r4, #0x44]
+ bl FUN_0201EEF0
+_021D9F70:
+ mov r0, #2
+ ldr r1, [sp, #0x4c]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp, #0x4c]
+ ldr r1, [r4, #0x44]
+ add r0, sp, #0x44
+ bl FUN_0201EF70
+ ldr r0, _021DA078 ; =0x000004AB
+ cmp r5, r0
+ bne _021DA074
+ ldr r5, _021DA084 ; =0x021DBAD8
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ ldr r1, _021DA088 ; =0x0029AEC1
+ str r0, [r3]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x44]
+ ldr r3, _021DA07C ; =0x000005C1
+ str r0, [sp, #8]
+ add r0, r2, #0
+ ldr r2, _021DA08C ; =0x021DBB80
+ bl FUN_0201ECA8
+ ldr r5, _021DA090 ; =0x021DBB20
+ add r3, sp, #0x2c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ ldr r1, [r4, #0x44]
+ add r0, r2, #0
+ bl FUN_0201EF70
+ ldr r2, _021DA094 ; =0x021DBAC8
+ add r1, sp, #0xc
+ ldrh r3, [r2]
+ add r0, sp, #0xc
+ strh r3, [r1]
+ ldrh r3, [r2, #2]
+ strh r3, [r1, #2]
+ ldrh r3, [r2, #4]
+ ldrh r2, [r2, #6]
+ strh r3, [r1, #4]
+ strh r2, [r1, #6]
+ ldr r1, [r4, #0x44]
+ bl FUN_0201EFB4
+ add sp, #0x50
+ pop {r4, r5, r6, pc}
+_021D9FE2:
+ add r1, #0xd2
+ cmp r5, r1
+ bgt _021DA044
+ mov r1, #1
+ ldr r2, [sp, #0x44]
+ lsl r1, r1, #0xc
+ add r1, r2, r1
+ str r1, [sp, #0x44]
+ ldr r1, [r4, #0x44]
+ bl FUN_0201EF70
+ ldr r3, _021DA098 ; =0x0000057D
+ cmp r5, r3
+ bne _021DA074
+ ldr r6, _021DA09C ; =0x021DBB14
+ add r5, sp, #0x20
+ ldmia r6!, {r0, r1}
+ add r2, r5, #0
+ stmia r5!, {r0, r1}
+ ldr r0, [r6]
+ ldr r1, _021DA088 ; =0x0029AEC1
+ str r0, [r5]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x44]
+ add r3, #0x44
+ str r0, [sp, #8]
+ add r0, r2, #0
+ ldr r2, _021DA08C ; =0x021DBB80
+ bl FUN_0201ECA8
+ ldr r0, _021DA07C ; =0x000005C1
+ ldr r1, [r4, #0x44]
+ bl FUN_0201EEF0
+ ldr r5, _021DA0A0 ; =0x021DBAF0
+ add r3, sp, #0x14
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ ldr r1, [r4, #0x44]
+ add r0, r2, #0
+ bl FUN_0201EF70
+ add sp, #0x50
+ pop {r4, r5, r6, pc}
+_021DA044:
+ ldr r0, _021DA0A4 ; =0x00000618
+ cmp r5, r0
+ blt _021DA062
+ ldr r0, [r4, #0x44]
+ bl FUN_0201F008
+ mov r1, #1
+ add r0, #0x20
+ lsl r1, r1, #0xe
+ cmp r0, r1
+ bge _021DA062
+ ldr r1, [r4, #0x44]
+ mov r0, #0x20
+ bl FUN_0201EF2C
+_021DA062:
+ mov r0, #1
+ ldr r1, [sp, #0x4c]
+ lsl r0, r0, #0xe
+ add r0, r1, r0
+ str r0, [sp, #0x4c]
+ ldr r1, [r4, #0x44]
+ add r0, sp, #0x44
+ bl FUN_0201EF70
+_021DA074:
+ add sp, #0x50
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021DA078: .word 0x000004AB
+_021DA07C: .word 0x000005C1
+_021DA080: .word 0x0000FFE0
+_021DA084: .word 0x021DBAD8
+_021DA088: .word 0x0029AEC1
+_021DA08C: .word 0x021DBB80
+_021DA090: .word 0x021DBB20
+_021DA094: .word 0x021DBAC8
+_021DA098: .word 0x0000057D
+_021DA09C: .word 0x021DBB14
+_021DA0A0: .word 0x021DBAF0
+_021DA0A4: .word 0x00000618
+ thumb_func_end MOD63_021D9F38
+
+ thumb_func_start MOD63_021DA0A8
+MOD63_021DA0A8: ; 0x021DA0A8
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ mov r5, #0xa3
+ lsl r5, r5, #2
+ cmp r0, #0
+ beq _021DA0BA
+ mov r0, #3
+ strb r0, [r4, r5]
+_021DA0BA:
+ ldrb r0, [r4, r5]
+ cmp r0, #3
+ bhi _021DA116
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DA0CC: ; jump table
+ .short _021DA0D4 - _021DA0CC - 2 ; case 0
+ .short _021DA0E2 - _021DA0CC - 2 ; case 1
+ .short _021DA0F4 - _021DA0CC - 2 ; case 2
+ .short _021DA10C - _021DA0CC - 2 ; case 3
+_021DA0D4:
+ add r0, r4, #0
+ bl MOD63_021DA11C
+ ldrb r0, [r4, r5]
+ add r0, r0, #1
+ strb r0, [r4, r5]
+ b _021DA116
+_021DA0E2:
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ add r0, r4, r0
+ bl MOD63_021DA158
+ ldrb r0, [r4, r5]
+ add r0, r0, #1
+ strb r0, [r4, r5]
+ b _021DA116
+_021DA0F4:
+ mov r0, #0xa3
+ lsl r0, r0, #2
+ ldr r1, [r4, #4]
+ add r0, r4, r0
+ bl MOD63_021DA30C
+ cmp r0, #0
+ beq _021DA116
+ ldrb r0, [r4, r5]
+ add r0, r0, #1
+ strb r0, [r4, r5]
+ b _021DA116
+_021DA10C:
+ add r0, r4, #0
+ bl MOD63_021DA418
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DA116:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DA0A8
+
+ thumb_func_start MOD63_021DA11C
+MOD63_021DA11C: ; 0x021DA11C
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD63_021D88D0
+ add r0, r4, #0
+ bl MOD63_021D8ADC
+ mov r0, #0xa6
+ ldr r1, [r4, #0xc]
+ lsl r0, r0, #2
+ str r1, [r4, r0]
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ ldr r0, _021DA150 ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+ ldr r0, _021DA154 ; =0x0000028E
+ mov r1, #1
+ strb r1, [r4, r0]
+ pop {r4, pc}
+ .align 2, 0
+_021DA150: .word 0x04000050
+_021DA154: .word 0x0000028E
+ thumb_func_end MOD63_021DA11C
+
+ thumb_func_start MOD63_021DA158
+MOD63_021DA158: ; 0x021DA158
+ push {r3, r4, r5, lr}
+ sub sp, #0x20
+ add r4, r0, #0
+ mov r0, #0x80
+ mov r1, #0x4c
+ bl FUN_02006670
+ mov r1, #0x35
+ mov r2, #0x4c
+ add r5, r0, #0
+ bl FUN_02006704
+ str r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021DA18E
+ add r1, r4, #0
+ add r1, #0x14
+ bl FUN_020B0138
+ cmp r0, #0
+ bne _021DA192
+ ldr r0, [r4, #0x14]
+ bl FUN_02016A18
+ bl ErrorHandling
+ b _021DA192
+_021DA18E:
+ bl ErrorHandling
+_021DA192:
+ add r0, r5, #0
+ bl FUN_020066F4
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, [r4, #0x14]
+ mov r2, #9
+ add r3, r1, #0
+ bl MOD63_021D9EA8
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, [r4, #0x14]
+ mov r1, #1
+ mov r2, #9
+ bl MOD63_021D9EA8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x36
+ mov r3, #1
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x3b
+ mov r3, #1
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x38
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x3d
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x39
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x3e
+ mov r3, #3
+ bl FUN_020068C8
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x3a
+ bl FUN_0200687C
+ mov r3, #0
+ str r3, [sp]
+ str r3, [sp, #4]
+ str r3, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x3f
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x37
+ mov r3, #5
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #0xc]
+ mov r0, #0x80
+ mov r1, #0x3c
+ mov r3, #5
+ bl FUN_020068C8
+ mov r0, #0xe
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E74C
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ mov r2, #1
+ mov r3, #0x40
+ bl FUN_020179E0
+ mov r0, #1
+ lsl r0, r0, #0xc
+ bl FX_Inv
+ add r5, r0, #0
+ mov r0, #1
+ lsl r0, r0, #0xc
+ bl FX_Inv
+ mov r1, #0
+ str r5, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ bl OS_WaitVBlankIntr
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ add r2, sp, #0x10
+ mov r3, #0x80
+ bl FUN_02017BD0
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ add r2, sp, #0x10
+ mov r3, #0xc0
+ bl FUN_02017BD0
+ mov r0, #1
+ strb r0, [r4, #3]
+ add sp, #0x20
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DA158
+
+ thumb_func_start MOD63_021DA30C
+MOD63_021DA30C: ; 0x021DA30C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ add r5, r1, #0
+ ldrb r1, [r4, #1]
+ cmp r1, #3
+ bhi _021DA3EC
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DA326: ; jump table
+ .short _021DA32E - _021DA326 - 2 ; case 0
+ .short _021DA352 - _021DA326 - 2 ; case 1
+ .short _021DA36A - _021DA326 - 2 ; case 2
+ .short _021DA3DA - _021DA326 - 2 ; case 3
+_021DA32E:
+ ldr r0, _021DA3F8 ; =0x000008E3
+ cmp r5, r0
+ blt _021DA3EC
+ mov r0, #0x78
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021DA3EC
+_021DA352:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021DA3EC
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [r4, #4]
+ str r0, [r4, #8]
+ b _021DA3EC
+_021DA36A:
+ ldr r0, _021DA3FC ; =0x0000097E
+ cmp r5, r0
+ bne _021DA378
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD63_021DA588
+_021DA378:
+ ldr r0, _021DA400 ; =0x000009D3
+ cmp r5, r0
+ bne _021DA386
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD63_021DA588
+_021DA386:
+ ldr r0, _021DA404 ; =0x000009F1
+ cmp r5, r0
+ bne _021DA394
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD63_021DA588
+_021DA394:
+ ldr r0, _021DA408 ; =0x00000A1E
+ cmp r5, r0
+ bne _021DA3A2
+ add r0, r4, #0
+ add r0, #0x18
+ bl MOD63_021DA588
+_021DA3A2:
+ ldr r0, _021DA40C ; =0x00000A64
+ cmp r5, r0
+ blt _021DA3AE
+ add r0, r4, #0
+ bl MOD63_021DA478
+_021DA3AE:
+ ldr r0, _021DA410 ; =0x00000A78
+ cmp r5, r0
+ blt _021DA3EC
+ mov r0, #0x12
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ mov r0, #0
+ ldr r3, _021DA414 ; =0x00007FFF
+ add r1, r0, #0
+ add r2, r0, #0
+ bl FUN_0200E1D0
+ add r0, r4, #0
+ bl MOD63_021DA504
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _021DA3EC
+_021DA3DA:
+ bl MOD63_021DA504
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021DA3EC
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_021DA3EC:
+ add r0, r4, #0
+ bl MOD63_021DA5A0
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_021DA3F8: .word 0x000008E3
+_021DA3FC: .word 0x0000097E
+_021DA400: .word 0x000009D3
+_021DA404: .word 0x000009F1
+_021DA408: .word 0x00000A1E
+_021DA40C: .word 0x00000A64
+_021DA410: .word 0x00000A78
+_021DA414: .word 0x00007FFF
+ thumb_func_end MOD63_021DA30C
+
+ thumb_func_start MOD63_021DA418
+MOD63_021DA418: ; 0x021DA418
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021DA470 ; =0x0000028E
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ beq _021DA458
+ ldr r0, [r4, #0xc]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ mov r1, #5
+ bl FUN_020178A0
+ ldr r0, [r4, #0xc]
+ bl FUN_02016A18
+ ldr r0, _021DA470 ; =0x0000028E
+ mov r1, #0
+ strb r1, [r4, r0]
+_021DA458:
+ ldr r0, _021DA474 ; =0x0000028F
+ ldrb r1, [r4, r0]
+ cmp r1, #0
+ beq _021DA46E
+ add r0, #0xd
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021DA474 ; =0x0000028F
+ mov r1, #0
+ strb r1, [r4, r0]
+_021DA46E:
+ pop {r4, pc}
+ .align 2, 0
+_021DA470: .word 0x0000028E
+_021DA474: .word 0x0000028F
+ thumb_func_end MOD63_021DA418
+
+ thumb_func_start MOD63_021DA478
+MOD63_021DA478: ; 0x021DA478
+ push {r4, r5, lr}
+ sub sp, #0x2c
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FX_Inv
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl FX_Inv
+ mov r1, #0
+ str r5, [sp, #0x1c]
+ str r1, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r0, [sp, #0x28]
+ ldr r0, [r4, #8]
+ bl FX_Inv
+ add r5, r0, #0
+ ldr r0, [r4, #8]
+ bl FX_Inv
+ mov r1, #0
+ str r5, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ bl OS_WaitVBlankIntr
+ mov r0, #1
+ ldr r1, [r4, #4]
+ lsl r0, r0, #0xa
+ add r1, r1, r0
+ mov r0, #3
+ lsl r0, r0, #0xc
+ cmp r1, r0
+ bgt _021DA4FE
+ str r1, [r4, #4]
+ add r0, sp, #0x1c
+ str r0, [sp]
+ mov r0, #0x80
+ str r0, [sp, #4]
+ mov r0, #0x5a
+ str r0, [sp, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ mov r2, #4
+ mov r3, #1
+ bl FUN_02017B60
+ mov r0, #1
+ ldr r1, [r4, #8]
+ lsl r0, r0, #0xa
+ add r0, r1, r0
+ str r0, [r4, #8]
+ add r0, sp, #0xc
+ str r0, [sp]
+ mov r0, #0xc0
+ str r0, [sp, #4]
+ mov r0, #0x5a
+ str r0, [sp, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ mov r2, #4
+ mov r3, #1
+ bl FUN_02017B60
+_021DA4FE:
+ add sp, #0x2c
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DA478
+
+ thumb_func_start MOD63_021DA504
+MOD63_021DA504: ; 0x021DA504
+ push {r4, r5, lr}
+ sub sp, #0x2c
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FX_Inv
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl FX_Inv
+ mov r1, #0
+ str r5, [sp, #0x1c]
+ str r1, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r0, [sp, #0x28]
+ ldr r0, [r4, #8]
+ bl FX_Inv
+ add r5, r0, #0
+ ldr r0, [r4, #8]
+ bl FX_Inv
+ mov r1, #0
+ str r5, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r0, [sp, #0x18]
+ bl OS_WaitVBlankIntr
+ mov r0, #2
+ ldr r1, [r4, #4]
+ lsl r0, r0, #0xa
+ add r0, r1, r0
+ str r0, [r4, #4]
+ add r0, sp, #0x1c
+ str r0, [sp]
+ mov r0, #0x80
+ str r0, [sp, #4]
+ mov r0, #0x5a
+ str r0, [sp, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #2
+ mov r2, #4
+ mov r3, #1
+ bl FUN_02017B60
+ mov r0, #2
+ ldr r1, [r4, #8]
+ lsl r0, r0, #0xa
+ add r0, r1, r0
+ str r0, [r4, #8]
+ add r0, sp, #0xc
+ str r0, [sp]
+ mov r0, #0xc0
+ str r0, [sp, #4]
+ mov r0, #0x5a
+ str r0, [sp, #8]
+ ldr r0, [r4, #0xc]
+ mov r1, #3
+ mov r2, #4
+ mov r3, #1
+ bl FUN_02017B60
+ add sp, #0x2c
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DA504
+
+ thumb_func_start MOD63_021DA588
+MOD63_021DA588: ; 0x021DA588
+ mov r1, #1
+ strb r1, [r0]
+ mov r2, #6
+ strb r2, [r0, #3]
+ mov r2, #0
+ strb r2, [r0, #1]
+ ldr r3, _021DA59C ; =0x0201E6E5
+ add r0, r1, #0
+ bx r3
+ nop
+_021DA59C: .word 0x0201E6E5
+ thumb_func_end MOD63_021DA588
+
+ thumb_func_start MOD63_021DA5A0
+MOD63_021DA5A0: ; 0x021DA5A0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ ldrb r0, [r5, #0x18]
+ add r4, r5, #0
+ add r4, #0x18
+ cmp r0, #0
+ beq _021DA630
+ ldrb r3, [r4, #1]
+ ldr r0, _021DA634 ; =0x021DBF40
+ ldrb r1, [r4, #3]
+ ldrb r0, [r0, r3]
+ cmp r1, r0
+ blo _021DA614
+ mov r1, #0
+ str r1, [sp]
+ ldr r6, _021DA638 ; =0x021DBF48
+ ldr r0, [r5, #0x14]
+ ldrb r3, [r6, r3]
+ mov r2, #1
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x18
+ bl MOD63_021D9EA8
+ mov r0, #0x20
+ str r0, [sp]
+ ldrb r6, [r4, #1]
+ ldr r3, _021DA63C ; =0x021DBF44
+ ldr r0, [r5, #0x14]
+ ldrb r3, [r3, r6]
+ mov r1, #0
+ mov r2, #1
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x18
+ bl MOD63_021D9EA8
+ mov r0, #0x20
+ str r0, [sp]
+ ldr r0, [r5, #0x14]
+ mov r1, #1
+ ldrb r5, [r4, #1]
+ ldr r3, _021DA63C ; =0x021DBF44
+ add r2, r1, #0
+ ldrb r3, [r3, r5]
+ lsl r3, r3, #0x1c
+ lsr r3, r3, #0x18
+ bl MOD63_021D9EA8
+ mov r1, #0
+ strb r1, [r4, #3]
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4, #1]
+ cmp r0, #4
+ blo _021DA618
+ strb r1, [r4]
+ b _021DA618
+_021DA614:
+ add r0, r1, #1
+ strb r0, [r4, #3]
+_021DA618:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ bne _021DA630
+ ldr r0, _021DA634 ; =0x021DBF40
+ ldrb r1, [r4, #3]
+ ldrb r0, [r0]
+ cmp r1, r0
+ blo _021DA630
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0201E6E4
+_021DA630:
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021DA634: .word 0x021DBF40
+_021DA638: .word 0x021DBF48
+_021DA63C: .word 0x021DBF44
+ thumb_func_end MOD63_021DA5A0
+
+ thumb_func_start MOD63_021DA640
+MOD63_021DA640: ; 0x021DA640
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021DA66C ; =0x021DBE4C
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_0201D040
+ mov r0, #5
+ mov r1, #0x4c
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021DA66C: .word 0x021DBE4C
+ thumb_func_end MOD63_021DA640
+
+ thumb_func_start MOD63_021DA670
+MOD63_021DA670: ; 0x021DA670
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x2c
+ add r6, r0, #0
+ mov r0, #0
+ str r6, [sp]
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ str r2, [sp, #0x10]
+ mov r2, #0x4b
+ add r5, r1, #0
+ lsl r2, r2, #2
+ ldr r1, [r5, r2]
+ add r4, r3, #0
+ str r1, [sp, #0x14]
+ add r1, r2, #4
+ ldr r1, [r5, r1]
+ add r3, r6, #0
+ str r1, [sp, #0x18]
+ add r1, r2, #0
+ add r1, #8
+ ldr r1, [r5, r1]
+ add r2, #0xc
+ str r1, [sp, #0x1c]
+ ldr r1, [r5, r2]
+ add r2, r6, #0
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x40]
+ add r1, r6, #0
+ bl FUN_02008AA4
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r4]
+ ldr r0, [sp, #0x40]
+ str r0, [r4, #4]
+ str r1, [r4, #8]
+ str r1, [r4, #0xc]
+ mov r0, #1
+ str r1, [r4, #0x10]
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x14]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ strh r1, [r4, #0x20]
+ mov r0, #1
+ str r0, [r4, #0x24]
+ str r0, [r4, #0x28]
+ mov r0, #0x4c
+ str r0, [r4, #0x2c]
+ add sp, #0x2c
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD63_021DA670
+
+ thumb_func_start MOD63_021DA6E0
+MOD63_021DA6E0: ; 0x021DA6E0
+ mov r0, #0x1b
+ lsl r0, r0, #4
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD63_021DA6E0
+
+ thumb_func_start MOD63_021DA6E8
+MOD63_021DA6E8: ; 0x021DA6E8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ add r5, r0, #0
+ ldr r1, [r2]
+ ldr r0, _021DA9FC ; =0xFFCFFFEF
+ and r1, r0
+ mov r0, #0x10
+ orr r0, r1
+ str r0, [r2]
+ bl MOD63_021DA640
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x80
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x4c
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ mov r0, #0x19
+ add r1, r5, #4
+ mov r2, #0x4c
+ bl FUN_02008C9C
+ mov r2, #1
+ str r0, [r5]
+ add r0, r5, #4
+ mov r1, #0
+ lsl r2, r2, #0x14
+ bl FUN_02008D24
+ ldr r4, _021DAA00 ; =0x021DBE28
+ mov r7, #0
+ add r6, r5, #0
+_021DA73C:
+ ldrb r0, [r4]
+ add r1, r7, #0
+ mov r2, #0x4c
+ bl FUN_02008DEC
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ str r0, [r6, r1]
+ add r7, r7, #1
+ add r4, r4, #1
+ add r6, r6, #4
+ cmp r7, #4
+ blt _021DA73C
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe0
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x26
+ bl FUN_02008F34
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe0
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x27
+ mov r3, #0
+ bl FUN_02008F34
+ mov r1, #0x53
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe0
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x28
+ mov r3, #0
+ bl FUN_02008F34
+ mov r1, #0x57
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe0
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x29
+ mov r3, #0
+ bl FUN_02008F34
+ mov r1, #0x5b
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe0
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x2a
+ mov r3, #0
+ bl FUN_02008F34
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ add r0, #0xe4
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x21
+ bl FUN_02008FEC
+ mov r1, #5
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ add r0, #0xe4
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x22
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #0x15
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ add r0, #0xe4
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x23
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #0x16
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ add r0, #0xe4
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x24
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #0x17
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ add r0, #0xe4
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x25
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #6
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x2b
+ bl FUN_020090AC
+ mov r1, #0x51
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x2c
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x55
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #2
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x2d
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x59
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #3
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x2e
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x5d
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x2f
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x61
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xec
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x30
+ bl FUN_020090AC
+ mov r1, #0x52
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xec
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x31
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x56
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xec
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x32
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x5a
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #3
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xec
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x33
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x5e
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xec
+ ldr r0, [r5, r0]
+ mov r1, #0x80
+ mov r2, #0x34
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x62
+ lsl r1, r1, #2
+ add r7, r1, #0
+ add r6, r1, #0
+ str r0, [r5, r1]
+ mov r4, #0
+ sub r7, #0x4c
+ sub r6, #0x48
+_021DA9DC:
+ ldr r0, [r5, r7]
+ bl FUN_02009A50
+ ldr r0, [r5, r6]
+ bl FUN_02009CF0
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #5
+ blt _021DA9DC
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DA9FC: .word 0xFFCFFFEF
+_021DAA00: .word 0x021DBE28
+ thumb_func_end MOD63_021DA6E8
+
+ thumb_func_start MOD63_021DAA04
+MOD63_021DAA04: ; 0x021DAA04
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #5
+ add r5, r0, #0
+ mov r4, #0
+ lsl r7, r7, #6
+_021DAA0E:
+ lsl r0, r4, #4
+ add r6, r5, r0
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ bl FUN_02009C0C
+ ldr r0, [r6, r7]
+ bl FUN_02009E04
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #5
+ blo _021DAA0E
+ mov r6, #0x4b
+ mov r4, #0
+ lsl r6, r6, #2
+_021DAA32:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ bl FUN_02008E2C
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021DAA32
+ ldr r0, [r5]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DAA04
+
+ thumb_func_start MOD63_021DAA5C
+MOD63_021DAA5C: ; 0x021DAA5C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xa4
+ ldr r3, _021DABC0 ; =0x021DBE5C
+ add r5, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x38
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r3, _021DABC4 ; =0x021DBE74
+ add r2, sp, #0x20
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r3, _021DABC8 ; =0x021DBE8C
+ add r2, sp, #8
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ add r0, sp, #0x80
+ str r0, [sp]
+ mov r0, #0
+ add r1, r5, #0
+ mov r2, #1
+ add r3, sp, #0x50
+ bl MOD63_021DA670
+ mov r0, #5
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x58]
+ mov r0, #7
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x5c]
+ add r0, sp, #0x50
+ bl FUN_0201FE94
+ mov r1, #0x63
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #0
+ bl FUN_020200BC
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r0, sp, #0x80
+ str r0, [sp]
+ mov r0, #1
+ add r1, r5, #0
+ add r2, r0, #0
+ add r3, sp, #0x50
+ bl MOD63_021DA670
+ mov r0, #5
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x58]
+ mov r0, #7
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x5c]
+ add r0, sp, #0x50
+ bl FUN_0201FE94
+ mov r1, #0x19
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #0
+ bl FUN_020200BC
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r0, r5, #0
+ mov r1, #3
+ bl MOD63_021DAC80
+ add r0, sp, #0x80
+ str r0, [sp]
+ mov r0, #2
+ add r1, r5, #0
+ mov r2, #1
+ add r3, sp, #0x50
+ bl MOD63_021DA670
+ mov r0, #5
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x58]
+ mov r0, #7
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x5c]
+ add r0, sp, #0x50
+ bl FUN_0201FE94
+ mov r1, #0x65
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ ldr r0, [r5, r1]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #0
+ str r0, [sp, #4]
+ add r7, sp, #0x20
+ add r6, sp, #8
+ add r4, sp, #0x38
+_021DAB58:
+ add r0, sp, #0x80
+ str r0, [sp]
+ mov r0, #3
+ add r1, r5, #0
+ mov r2, #0
+ add r3, sp, #0x50
+ bl MOD63_021DA670
+ ldr r0, [r7]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x58]
+ ldr r0, [r6]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x5c]
+ add r0, sp, #0x50
+ bl FUN_0201FE94
+ ldr r1, [r4]
+ lsl r1, r1, #2
+ add r2, r5, r1
+ mov r1, #0x63
+ lsl r1, r1, #2
+ str r0, [r2, r1]
+ ldr r0, [r4]
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r4]
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, [sp, #4]
+ add r7, r7, #4
+ add r0, r0, #1
+ add r6, r6, #4
+ add r4, r4, #4
+ str r0, [sp, #4]
+ cmp r0, #6
+ blt _021DAB58
+ add sp, #0xa4
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DABC0: .word 0x021DBE5C
+_021DABC4: .word 0x021DBE74
+_021DABC8: .word 0x021DBE8C
+ thumb_func_end MOD63_021DAA5C
+
+ thumb_func_start MOD63_021DABCC
+MOD63_021DABCC: ; 0x021DABCC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x58
+ add r2, r0, #0
+ add r0, sp, #0x34
+ add r6, r1, #0
+ str r0, [sp]
+ add r1, r2, #0
+ mov r0, #4
+ mov r2, #0
+ add r3, sp, #4
+ bl MOD63_021DA670
+ mov r0, #2
+ str r0, [sp, #0x2c]
+ mov r5, #0
+ add r7, sp, #4
+_021DABEC:
+ add r0, r6, #0
+ add r1, r5, #0
+ bl MOD63_021DAF80
+ add r4, r0, #0
+ add r0, r7, #0
+ bl FUN_0201FE94
+ str r0, [r4]
+ mov r1, #0
+ bl FUN_020200BC
+ ldr r0, [r4]
+ mov r1, #0
+ bl FUN_020200A0
+ add r5, r5, #1
+ cmp r5, #0x10
+ blt _021DABEC
+ add sp, #0x58
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DABCC
+
+ thumb_func_start MOD63_021DAC18
+MOD63_021DAC18: ; 0x021DAC18
+ ldr r3, _021DAC20 ; =0x0201FDED
+ ldr r0, [r0]
+ bx r3
+ nop
+_021DAC20: .word 0x0201FDED
+ thumb_func_end MOD63_021DAC18
+
+ thumb_func_start MOD63_021DAC24
+MOD63_021DAC24: ; 0x021DAC24
+ lsl r1, r1, #2
+ add r1, r0, r1
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r3, _021DAC34 ; =0x020200A1
+ add r1, r2, #0
+ bx r3
+ .align 2, 0
+_021DAC34: .word 0x020200A1
+ thumb_func_end MOD63_021DAC24
+
+ thumb_func_start MOD63_021DAC38
+MOD63_021DAC38: ; 0x021DAC38
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r2, #0
+ mov r2, #0x63
+ lsl r2, r2, #2
+ add r4, r0, r2
+ lsl r5, r1, #2
+ ldr r0, [r4, r5]
+ add r7, r3, #0
+ bl FUN_0202011C
+ add r3, r0, #0
+ add r2, sp, #0
+ ldmia r3!, {r0, r1}
+ mov ip, r2
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ mov r1, ip
+ str r0, [r2]
+ str r6, [sp]
+ str r7, [sp, #4]
+ ldr r0, [r4, r5]
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ thumb_func_end MOD63_021DAC38
+
+ thumb_func_start MOD63_021DAC6C
+MOD63_021DAC6C: ; 0x021DAC6C
+ push {r3, lr}
+ mov r2, #0xb
+ mov r3, #7
+ mov r1, #1
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ bl MOD63_021DAC38
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DAC6C
+
+ thumb_func_start MOD63_021DAC80
+MOD63_021DAC80: ; 0x021DAC80
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl FUN_02020130
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_02020130
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DAC80
+
+ thumb_func_start MOD63_021DACA0
+MOD63_021DACA0: ; 0x021DACA0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r4, r1, #0
+ bl FUN_020200BC
+ mov r0, #0x19
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_020200BC
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DACA0
+
+ thumb_func_start MOD63_021DACC0
+MOD63_021DACC0: ; 0x021DACC0
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0202011C
+ add r5, r0, #0
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ mov r0, #0xe
+ ldr r1, [sp]
+ lsl r0, r0, #0xc
+ sub r1, r1, r0
+ mov r0, #0xb
+ lsl r0, r0, #0x10
+ str r1, [sp]
+ cmp r1, r0
+ bgt _021DAD04
+ str r0, [sp]
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r2, #0
+ bl FUN_02020044
+ add sp, #0xc
+ mov r0, #1
+ pop {r4, r5, pc}
+_021DAD04:
+ mov r0, #0x65
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r2, #0
+ bl FUN_02020044
+ mov r0, #0
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DACC0
+
+ thumb_func_start MOD63_021DAD18
+MOD63_021DAD18: ; 0x021DAD18
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ lsl r4, r1, #2
+ mov r0, #0x63
+ add r1, r5, r4
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ add r6, r2, #0
+ bl FUN_02020354
+ mov r1, #1
+ bl FUN_020B19C4
+ add r7, r0, #0
+ cmp r6, #0
+ bne _021DAD44
+ ldr r0, _021DAD64 ; =0x021DBFA0
+ add r1, r7, #0
+ mov r2, #0x20
+ bl GX_LoadOBJPltt
+ pop {r3, r4, r5, r6, r7, pc}
+_021DAD44:
+ ldr r0, _021DAD68 ; =0x021DBF64
+ ldr r0, [r0, r4]
+ lsl r0, r0, #4
+ add r1, r5, r0
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ bl FUN_0200955C
+ ldr r0, [r0, #0xc]
+ add r1, r7, #0
+ mov r2, #0x20
+ bl GX_LoadOBJPltt
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DAD64: .word 0x021DBFA0
+_021DAD68: .word 0x021DBF64
+ thumb_func_end MOD63_021DAD18
+
+ thumb_func_start MOD63_021DAD6C
+MOD63_021DAD6C: ; 0x021DAD6C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x30
+ ldr r3, _021DAE44 ; =0x021DBE40
+ add r2, sp, #0x18
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldmia r3!, {r0, r1}
+ str r2, [sp, #8]
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ ldr r3, _021DAE48 ; =0x021DBE34
+ str r0, [r2]
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0xc
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ ldr r1, _021DAE4C ; =0x000005C8
+ str r0, [r2]
+ ldr r0, [sp, #4]
+ cmp r0, r1
+ blt _021DADE6
+ mov r4, #0
+_021DAD98:
+ ldr r0, [sp, #8]
+ lsl r7, r4, #2
+ ldr r0, [r0, r7]
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ add r5, r0, r1
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0x24
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ ldr r0, _021DAE50 ; =0x021DBF4C
+ ldr r1, [sp, #0x24]
+ ldr r0, [r0, r7]
+ sub r0, r1, r0
+ str r0, [sp, #0x24]
+ mov r0, #1
+ ldr r1, [sp, #0x28]
+ lsl r0, r0, #0xe
+ sub r0, r1, r0
+ str r0, [sp, #0x28]
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r2, #0
+ bl FUN_02020044
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #3
+ blo _021DAD98
+_021DADE6:
+ ldr r1, _021DAE54 ; =0x000005E6
+ ldr r0, [sp, #4]
+ cmp r0, r1
+ blt _021DAE3E
+ mov r5, #0
+_021DADF0:
+ lsl r7, r5, #2
+ add r0, sp, #0xc
+ ldr r0, [r0, r7]
+ lsl r1, r0, #2
+ ldr r0, [sp]
+ add r4, r0, r1
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0x24
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ ldr r0, _021DAE58 ; =0x021DBF58
+ ldr r1, [sp, #0x24]
+ ldr r0, [r0, r7]
+ sub r0, r1, r0
+ str r0, [sp, #0x24]
+ mov r0, #1
+ ldr r1, [sp, #0x28]
+ lsl r0, r0, #0xe
+ sub r0, r1, r0
+ str r0, [sp, #0x28]
+ mov r0, #0x63
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ add r1, r2, #0
+ bl FUN_02020044
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #3
+ blo _021DADF0
+_021DAE3E:
+ add sp, #0x30
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DAE44: .word 0x021DBE40
+_021DAE48: .word 0x021DBE34
+_021DAE4C: .word 0x000005C8
+_021DAE50: .word 0x021DBF4C
+_021DAE54: .word 0x000005E6
+_021DAE58: .word 0x021DBF58
+ thumb_func_end MOD63_021DAD6C
+
+ thumb_func_start MOD63_021DAE5C
+MOD63_021DAE5C: ; 0x021DAE5C
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021DAE88 ; =0x021DBEAC
+ add r3, sp, #0
+ add r2, r3, #0
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_0201D040
+ mov r0, #1
+ mov r1, #0x4c
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021DAE88: .word 0x021DBEAC
+ thumb_func_end MOD63_021DAE5C
+
+ thumb_func_start MOD63_021DAE8C
+MOD63_021DAE8C: ; 0x021DAE8C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x2c
+ add r4, r1, #0
+ mov r1, #0
+ add r5, r0, #0
+ str r1, [sp]
+ sub r0, r1, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ add r6, r2, #0
+ str r1, [sp, #0xc]
+ mov r2, #0x4b
+ str r1, [sp, #0x10]
+ lsl r2, r2, #2
+ ldr r0, [r5, r2]
+ add r3, r1, #0
+ str r0, [sp, #0x14]
+ add r0, r2, #4
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x18]
+ add r0, r2, #0
+ add r0, #8
+ ldr r0, [r5, r0]
+ add r2, #0xc
+ str r0, [sp, #0x1c]
+ ldr r0, [r5, r2]
+ add r2, r1, #0
+ str r0, [sp, #0x20]
+ str r1, [sp, #0x24]
+ str r1, [sp, #0x28]
+ add r0, r6, #0
+ bl FUN_02008AA4
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r4]
+ str r6, [r4, #4]
+ str r1, [r4, #8]
+ str r1, [r4, #0xc]
+ mov r0, #1
+ str r1, [r4, #0x10]
+ lsl r0, r0, #0xc
+ str r0, [r4, #0x14]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ strh r1, [r4, #0x20]
+ mov r0, #1
+ str r0, [r4, #0x24]
+ str r0, [r4, #0x28]
+ mov r0, #0x4c
+ str r0, [r4, #0x2c]
+ add sp, #0x2c
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DAE8C
+
+ thumb_func_start MOD63_021DAEF8
+MOD63_021DAEF8: ; 0x021DAEF8
+ push {r4, lr}
+ mov r1, #0x7d
+ mov r0, #0x4c
+ lsl r1, r1, #2
+ bl FUN_02016998
+ mov r2, #0x7d
+ add r4, r0, #0
+ mov r1, #0
+ lsl r2, r2, #2
+ bl Call_FillMemWithValue
+ add r0, r4, #0
+ bl MOD63_021DAFEC
+ add r0, r4, #0
+ bl MOD63_021DB150
+ add r0, r4, #0
+ pop {r4, pc}
+ thumb_func_end MOD63_021DAEF8
+
+ thumb_func_start MOD63_021DAF20
+MOD63_021DAF20: ; 0x021DAF20
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x4c
+ mov r1, #8
+ bl FUN_02016998
+ add r4, r0, #0
+ mov r0, #0xc
+ add r6, r5, #0
+ mul r6, r0
+ mov r0, #0x4c
+ add r1, r6, #0
+ bl FUN_02016998
+ mov r1, #0
+ add r2, r6, #0
+ str r0, [r4, #4]
+ bl Call_FillMemWithValue
+ str r5, [r4]
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD63_021DAF20
+
+ thumb_func_start MOD63_021DAF4C
+MOD63_021DAF4C: ; 0x021DAF4C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ mov r6, #0
+ cmp r0, #0
+ ble _021DAF72
+ add r4, r6, #0
+_021DAF5A:
+ ldr r0, [r5, #4]
+ add r0, r0, r4
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _021DAF68
+ bl FUN_0200CAB4
+_021DAF68:
+ ldr r0, [r5]
+ add r6, r6, #1
+ add r4, #0xc
+ cmp r6, r0
+ blt _021DAF5A
+_021DAF72:
+ ldr r0, [r5, #4]
+ bl FUN_02016A18
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD63_021DAF4C
+
+ thumb_func_start MOD63_021DAF80
+MOD63_021DAF80: ; 0x021DAF80
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5]
+ add r4, r1, #0
+ cmp r4, r0
+ blt _021DAF90
+ bl ErrorHandling
+_021DAF90:
+ mov r0, #0xc
+ ldr r1, [r5, #4]
+ mul r0, r4
+ add r0, r1, r0
+ add r0, r0, #4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DAF80
+
+ thumb_func_start MOD63_021DAF9C
+MOD63_021DAF9C: ; 0x021DAF9C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ bl MOD63_021DB108
+ mov r6, #0x73
+ mov r4, #0
+ lsl r6, r6, #2
+_021DAFAA:
+ lsl r0, r4, #4
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ cmp r0, #0
+ beq _021DAFB8
+ bl FUN_0200CAB4
+_021DAFB8:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #3
+ blo _021DAFAA
+ mov r6, #0x55
+ mov r4, #0
+ mov r7, #0xc
+ lsl r6, r6, #2
+_021DAFCA:
+ add r0, r4, #0
+ mul r0, r7
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ cmp r0, #0
+ beq _021DAFDA
+ bl FUN_0200CAB4
+_021DAFDA:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xa
+ blo _021DAFCA
+ add r0, r5, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD63_021DAF9C
+
+ thumb_func_start MOD63_021DAFEC
+MOD63_021DAFEC: ; 0x021DAFEC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ add r7, r0, #0
+ add r3, r1, #0
+ ldr r0, _021DB0FC ; =0xFFCFFFEF
+ mov r1, #0x10
+ and r3, r0
+ orr r3, r1
+ str r3, [r2]
+ ldr r3, _021DB100 ; =0x04001000
+ ldr r2, [r3]
+ and r0, r2
+ orr r0, r1
+ str r0, [r3]
+ bl MOD63_021DAE5C
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x80
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ mov r2, #0x4c
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ mov r0, #0xa
+ add r1, r7, #4
+ mov r2, #0x4c
+ bl FUN_02008C9C
+ ldr r4, _021DB104 ; =0x021DBEBC
+ str r0, [r7]
+ mov r6, #0
+ add r5, r7, #0
+_021DB040:
+ ldrb r0, [r4]
+ add r1, r6, #0
+ mov r2, #0x4c
+ bl FUN_02008DEC
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r6, r6, #1
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _021DB040
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe0
+ ldr r0, [r7, r0]
+ mov r1, #0x80
+ mov r2, #4
+ bl FUN_02008F34
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #3
+ str r2, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #0x4c
+ str r0, [sp, #0xc]
+ add r0, #0xe4
+ ldr r0, [r7, r0]
+ mov r1, #0x80
+ bl FUN_02008FEC
+ mov r1, #5
+ lsl r1, r1, #6
+ str r0, [r7, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xe8
+ ldr r0, [r7, r0]
+ mov r1, #0x80
+ mov r2, #5
+ bl FUN_020090AC
+ mov r1, #0x51
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x4c
+ str r0, [sp, #8]
+ add r0, #0xec
+ ldr r0, [r7, r0]
+ mov r1, #0x80
+ mov r2, #6
+ bl FUN_020090AC
+ mov r1, #0x52
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ sub r1, #0xc
+ ldr r0, [r7, r1]
+ bl FUN_02009A50
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r7, r0]
+ bl FUN_02009CF0
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DB0FC: .word 0xFFCFFFEF
+_021DB100: .word 0x04001000
+_021DB104: .word 0x021DBEBC
+ thumb_func_end MOD63_021DAFEC
+
+ thumb_func_start MOD63_021DB108
+MOD63_021DB108: ; 0x021DB108
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009C0C
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ bl FUN_02009E04
+ mov r6, #0x4b
+ mov r4, #0
+ lsl r6, r6, #2
+_021DB126:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ bl FUN_02008E2C
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021DB126
+ ldr r0, [r5]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB108
+
+ thumb_func_start MOD63_021DB150
+MOD63_021DB150: ; 0x021DB150
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x54
+ add r7, r0, #0
+ mov r6, #0
+ add r4, r6, #0
+ add r5, r7, #0
+_021DB15C:
+ add r0, r7, #0
+ add r1, sp, #0
+ add r2, sp, #0x30
+ bl MOD63_021DAE8C
+ add r0, sp, #0
+ str r4, [sp, #8]
+ str r4, [sp, #0xc]
+ bl FUN_0201FE94
+ mov r1, #0x15
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200BC
+ mov r0, #0x15
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ mov r0, #2
+ lsl r0, r0, #0xc
+ add r6, r6, #1
+ add r4, r4, r0
+ add r5, #0xc
+ cmp r6, #0xa
+ blt _021DB15C
+ add sp, #0x54
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB150
+
+ thumb_func_start MOD63_021DB1A0
+MOD63_021DB1A0: ; 0x021DB1A0
+ ldr r3, _021DB1A8 ; =0x0201FDED
+ ldr r0, [r0]
+ bx r3
+ nop
+_021DB1A8: .word 0x0201FDED
+ thumb_func_end MOD63_021DB1A0
+
+ thumb_func_start MOD63_021DB1AC
+MOD63_021DB1AC: ; 0x021DB1AC
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ cmp r1, #0xb4
+ bne _021DB1CE
+ mov r2, #3
+ str r2, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ mov r0, #0x71
+ lsl r0, r0, #2
+ add r0, r4, r0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD63_021DB1F8
+ b _021DB1E8
+_021DB1CE:
+ ldr r0, _021DB1F4 ; =0x0000011D
+ cmp r1, r0
+ bne _021DB1E8
+ mov r2, #3
+ add r0, #0xb7
+ str r2, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ add r0, r4, r0
+ add r1, r4, #0
+ add r3, r2, #0
+ bl MOD63_021DB1F8
+_021DB1E8:
+ add r0, r4, #0
+ bl MOD63_021DB1A0
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021DB1F4: .word 0x0000011D
+ thumb_func_end MOD63_021DB1AC
+
+ thumb_func_start MOD63_021DB1F8
+MOD63_021DB1F8: ; 0x021DB1F8
+ push {r4, lr}
+ add r4, r0, #0
+ strb r2, [r4]
+ ldr r2, _021DB228 ; =0xFFFFFFF8
+ strb r3, [r4, #1]
+ add r2, sp
+ ldrb r0, [r2, #0x10]
+ strb r0, [r4, #2]
+ mov r0, #0
+ strb r0, [r4, #4]
+ strb r0, [r4, #3]
+ mov r0, #0x53
+ lsl r0, r0, #2
+ add r0, r1, r0
+ str r0, [r4, #0xc]
+ ldrb r0, [r2, #0x14]
+ add r1, r4, #0
+ mov r2, #0xa
+ strb r0, [r4, #5]
+ ldr r0, _021DB22C ; =MOD63_021DB2F8
+ bl FUN_0200CA44
+ str r0, [r4, #8]
+ pop {r4, pc}
+ .align 2, 0
+_021DB228: .word 0xFFFFFFF8
+_021DB22C: .word MOD63_021DB2F8
+ thumb_func_end MOD63_021DB1F8
+
+ thumb_func_start MOD63_021DB230
+MOD63_021DB230: ; 0x021DB230
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r1, #0
+ str r0, [sp]
+ cmp r2, #0
+ bne _021DB240
+ mov r7, #0x40
+ b _021DB242
+_021DB240:
+ mov r7, #0x20
+_021DB242:
+ mov r5, #0
+ cmp r6, #0
+ bls _021DB2BE
+_021DB248:
+ ldr r0, [sp]
+ mov r1, #0xa
+ bl MOD63_021DB2C8
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0202011C
+ add r3, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #4
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ bl FUN_0201B9EC
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x19
+ sub r2, r2, r1
+ mov r0, #0x19
+ ror r2, r0
+ add r0, r1, r2
+ add r0, #0x40
+ lsl r0, r0, #0xc
+ str r0, [sp, #4]
+ bl FUN_0201B9EC
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x1a
+ sub r2, r2, r1
+ mov r0, #0x1a
+ ror r2, r0
+ add r0, r1, r2
+ add r0, r7, r0
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ add r1, sp, #4
+ bl FUN_02020044
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, _021DB2C4 ; =MOD63_021DB334
+ add r1, r4, #0
+ mov r2, #0x14
+ bl FUN_0200CA44
+ str r0, [r4, #8]
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ blo _021DB248
+_021DB2BE:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DB2C4: .word MOD63_021DB334
+ thumb_func_end MOD63_021DB230
+
+ thumb_func_start MOD63_021DB2C8
+MOD63_021DB2C8: ; 0x021DB2C8
+ push {r4, lr}
+ mov r4, #0
+ mov r2, #0xc
+_021DB2CE:
+ add r1, r4, #0
+ mul r1, r2
+ add r3, r0, r1
+ ldrb r1, [r0, r1]
+ cmp r1, #0
+ bne _021DB2E6
+ mov r0, #1
+ strb r0, [r3]
+ mov r0, #0
+ strb r0, [r3, #1]
+ add r0, r3, #0
+ pop {r4, pc}
+_021DB2E6:
+ add r1, r4, #1
+ lsl r1, r1, #0x18
+ lsr r4, r1, #0x18
+ cmp r4, #0xa
+ blo _021DB2CE
+ bl ErrorHandling
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD63_021DB2C8
+
+ thumb_func_start MOD63_021DB2F8
+MOD63_021DB2F8: ; 0x021DB2F8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4, #4]
+ add r5, r0, #0
+ add r0, r1, #1
+ strb r0, [r4, #4]
+ ldrb r0, [r4, #1]
+ cmp r1, r0
+ blo _021DB330
+ ldrb r1, [r4]
+ ldrb r2, [r4, #5]
+ ldr r0, [r4, #0xc]
+ bl MOD63_021DB230
+ mov r0, #0
+ strb r0, [r4, #4]
+ ldrb r0, [r4, #3]
+ add r0, r0, #1
+ strb r0, [r4, #3]
+ ldrb r1, [r4, #3]
+ ldrb r0, [r4, #2]
+ cmp r1, r0
+ blo _021DB330
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #8]
+_021DB330:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB2F8
+
+ thumb_func_start MOD63_021DB334
+MOD63_021DB334: ; 0x021DB334
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0202011C
+ add r6, r0, #0
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r3]
+ mov r0, #3
+ ldr r1, [sp, #4]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r0, [r4, #4]
+ add r1, r2, #0
+ bl FUN_02020044
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ ldrb r0, [r4, #1]
+ cmp r0, #0x50
+ blo _021DB388
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ mov r1, #0
+ str r1, [r4, #8]
+ strb r1, [r4]
+ ldr r0, [r4, #4]
+ bl FUN_020200BC
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_020200A0
+_021DB388:
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ thumb_func_end MOD63_021DB334
+
+ thumb_func_start MOD63_021DB38C
+MOD63_021DB38C: ; 0x021DB38C
+ ldr r3, _021DB394 ; =MOD63_021DB398
+ mov r1, #2
+ bx r3
+ nop
+_021DB394: .word MOD63_021DB398
+ thumb_func_end MOD63_021DB38C
+
+ thumb_func_start MOD63_021DB398
+MOD63_021DB398: ; 0x021DB398
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r6, r0, #0
+ ldr r0, [r6, #4]
+ add r7, r1, #0
+ str r0, [sp]
+ ldr r5, _021DB418 ; =0x00000000
+ beq _021DB414
+_021DB3A8:
+ ldr r0, [sp]
+ ldr r1, [r6]
+ bl MOD63_021DB2C8
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_0202011C
+ add r3, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #4
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ bl FUN_0201B9EC
+ mov r1, #0xe0
+ bl _s32_div_f
+ add r1, #0xa
+ lsl r0, r1, #0xc
+ str r0, [sp, #4]
+ bl FUN_0201B9EC
+ mov r1, #0x38
+ bl _s32_div_f
+ ldr r0, _021DB41C ; =0x0000013A
+ add r0, r1, r0
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r4, #4]
+ add r1, sp, #4
+ bl FUN_02020044
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_020200BC
+ ldr r0, [r4, #4]
+ mov r1, #1
+ bl FUN_020200A0
+ ldr r0, _021DB420 ; =MOD63_021DB424
+ add r1, r4, #0
+ mov r2, #0x14
+ bl FUN_0200CA44
+ str r0, [r4, #8]
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r7
+ blo _021DB3A8
+_021DB414:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DB418: .word 0x00000000
+_021DB41C: .word 0x0000013A
+_021DB420: .word MOD63_021DB424
+ thumb_func_end MOD63_021DB398
+
+ thumb_func_start MOD63_021DB424
+MOD63_021DB424: ; 0x021DB424
+ push {r4, lr}
+ add r4, r1, #0
+ ldrb r1, [r4, #1]
+ add r1, r1, #1
+ strb r1, [r4, #1]
+ ldrb r1, [r4, #1]
+ cmp r1, #8
+ blo _021DB44C
+ bl FUN_0200CAB4
+ mov r1, #0
+ str r1, [r4, #8]
+ strb r1, [r4]
+ ldr r0, [r4, #4]
+ bl FUN_020200BC
+ ldr r0, [r4, #4]
+ mov r1, #0
+ bl FUN_020200A0
+_021DB44C:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB424
+
+ thumb_func_start MOD63_021DB450
+MOD63_021DB450: ; 0x021DB450
+ push {r4, lr}
+ ldr r3, _021DB470 ; =0x021064B8
+ mov r2, #0
+ ldr r3, [r3]
+ blx r3
+ add r4, r0, #0
+ bl FUN_0201327C
+ cmp r4, #0
+ bne _021DB468
+ bl ErrorHandling
+_021DB468:
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0xd
+ pop {r4, pc}
+ nop
+_021DB470: .word 0x021064B8
+ thumb_func_end MOD63_021DB450
+
+ thumb_func_start MOD63_021DB474
+MOD63_021DB474: ; 0x021DB474
+ push {r4, lr}
+ ldr r3, _021DB494 ; =0x021064C0
+ mov r2, #1
+ ldr r3, [r3]
+ blx r3
+ add r4, r0, #0
+ bne _021DB486
+ bl ErrorHandling
+_021DB486:
+ add r0, r4, #0
+ bl FUN_020132BC
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0xd
+ pop {r4, pc}
+ nop
+_021DB494: .word 0x021064C0
+ thumb_func_end MOD63_021DB474
+
+ thumb_func_start MOD63_021DB498
+MOD63_021DB498: ; 0x021DB498
+ mov r0, #0x20
+ bx lr
+ thumb_func_end MOD63_021DB498
+
+ thumb_func_start MOD63_021DB49C
+MOD63_021DB49C: ; 0x021DB49C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ ldr r3, _021DB56C ; =0x021DBECC
+ add r5, r0, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x10
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ mov r0, #0x4c
+ bl FUN_02006D98
+ ldr r7, _021DB570 ; =0x021DBEF0
+ str r0, [r5]
+ mov r4, #0
+_021DB4BA:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ lsl r6, r4, #2
+ add r1, sp, #0x10
+ ldr r1, [r1, r6]
+ add r0, sp, #0x1c
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02068C00
+ ldr r0, _021DB574 ; =0x000003FF
+ lsl r2, r4, #3
+ str r0, [sp]
+ str r4, [sp, #4]
+ mov r0, #0
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ add r3, r7, r2
+ ldr r0, [r5]
+ ldr r2, [r7, r2]
+ ldr r3, [r3, #4]
+ add r1, sp, #0x1c
+ add r6, r5, r6
+ bl FUN_020073A0
+ mov r1, #6
+ mov r2, #1
+ str r0, [r6, #4]
+ bl FUN_02007558
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #3
+ blo _021DB4BA
+ ldr r0, [r5, #8]
+ mov r1, #0x23
+ mov r2, #1
+ bl FUN_02007558
+ mov r0, #1
+ str r0, [r5, #0x10]
+ bl FUN_02012CC8
+ mov r1, #0x12
+ mov r0, #0x4c
+ lsl r1, r1, #0xa
+ bl FUN_02016998
+ str r0, [r5, #0x14]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x4c
+ str r0, [sp, #4]
+ mov r3, #0x12
+ ldr r0, _021DB578 ; =MOD63_021DB450
+ ldr r1, _021DB57C ; =MOD63_021DB474
+ ldr r2, [r5, #0x14]
+ lsl r3, r3, #0xa
+ bl FUN_02012CDC
+ str r0, [r5, #0x18]
+ bl FUN_0201343C
+ add r2, r0, #0
+ mov r0, #1
+ mov r1, #0xe1
+ lsl r0, r0, #0xc
+ lsl r1, r1, #0xe
+ bl FUN_0201EC94
+ mov r0, #0x3d
+ mov r1, #4
+ mov r2, #0x4c
+ bl FUN_0201318C
+ add r1, r0, #0
+ ldr r0, [r5, #0x18]
+ mov r2, #0xa
+ mov r3, #1
+ bl FUN_02013194
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DB56C: .word 0x021DBECC
+_021DB570: .word 0x021DBEF0
+_021DB574: .word 0x000003FF
+_021DB578: .word MOD63_021DB450
+_021DB57C: .word MOD63_021DB474
+ thumb_func_end MOD63_021DB49C
+
+ thumb_func_start MOD63_021DB580
+MOD63_021DB580: ; 0x021DB580
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ bl FUN_02012DE4
+ ldr r0, [r4, #0x14]
+ bl FUN_02016A18
+ ldr r0, [r4]
+ bl FUN_020072E8
+ pop {r4, pc}
+ thumb_func_end MOD63_021DB580
+
+ thumb_func_start MOD63_021DB598
+MOD63_021DB598: ; 0x021DB598
+ push {r3, lr}
+ cmp r0, #0
+ beq _021DB5A4
+ ldr r0, [r0]
+ bl FUN_020081C4
+_021DB5A4:
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB598
+
+ thumb_func_start MOD63_021DB5A8
+MOD63_021DB5A8: ; 0x021DB5A8
+ push {r4, lr}
+ add r4, r0, #0
+ beq _021DB5C8
+ bl FUN_020222AC
+ bl FUN_020B02C8
+ ldr r0, [r4]
+ bl FUN_02006ED4
+ bl MOD63_021DB934
+ mov r0, #1
+ mov r1, #0
+ bl FUN_020222B4
+_021DB5C8:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB5A8
+
+ thumb_func_start MOD63_021DB5CC
+MOD63_021DB5CC: ; 0x021DB5CC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r7, r2, #0
+ ldrb r2, [r4, #0x1c]
+ add r5, r4, #0
+ add r6, r1, #0
+ add r5, #0x1c
+ cmp r2, #5
+ bls _021DB5E2
+ b _021DB6FC
+_021DB5E2:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021DB5EE: ; jump table
+ .short _021DB5FA - _021DB5EE - 2 ; case 0
+ .short _021DB63C - _021DB5EE - 2 ; case 1
+ .short _021DB658 - _021DB5EE - 2 ; case 2
+ .short _021DB690 - _021DB5EE - 2 ; case 3
+ .short _021DB6BE - _021DB5EE - 2 ; case 4
+ .short _021DB6E4 - _021DB5EE - 2 ; case 5
+_021DB5FA:
+ ldr r0, _021DB704 ; =0x0400004A
+ mov r1, #0x3f
+ ldrh r2, [r0]
+ add r7, r4, #4
+ bic r2, r1
+ mov r1, #0x11
+ orr r1, r2
+ mov r2, #0x20
+ orr r1, r2
+ strh r1, [r0]
+ lsl r0, r6, #2
+ str r0, [sp]
+ ldr r0, [r7, r0]
+ mov r1, #0xc
+ lsl r2, r2, #5
+ bl FUN_02007558
+ ldr r0, [sp]
+ mov r2, #1
+ ldr r0, [r7, r0]
+ mov r1, #0xd
+ lsl r2, r2, #0xa
+ bl FUN_02007558
+ ldr r0, [sp]
+ mov r1, #6
+ ldr r0, [r7, r0]
+ mov r2, #0
+ bl FUN_02007558
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+_021DB63C:
+ ldr r2, _021DB708 ; =0x021DBED8
+ lsl r3, r6, #3
+ ldr r2, [r2, r3]
+ add r0, r4, #0
+ add r1, r6, #0
+ blx r2
+ cmp r0, #0
+ beq _021DB6FC
+ mov r0, #0
+ strb r0, [r4, #0x1d]
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ b _021DB6FC
+_021DB658:
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_02013440
+ lsl r0, r6, #2
+ str r0, [sp, #4]
+ ldr r1, _021DB70C ; =0x021DBF08
+ lsl r6, r6, #3
+ ldr r3, [sp, #4]
+ add r7, r4, #4
+ ldr r0, [r4, #0x18]
+ ldr r1, [r1, r6]
+ ldr r2, _021DB710 ; =MOD63_021DB940
+ ldr r3, [r7, r3]
+ bl FUN_020133AC
+ ldr r1, _021DB714 ; =0x021DBF0C
+ ldr r3, [sp, #4]
+ ldr r0, [r4, #0x18]
+ ldr r1, [r1, r6]
+ ldr r2, _021DB710 ; =MOD63_021DB940
+ ldr r3, [r7, r3]
+ bl FUN_020133AC
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ b _021DB6FC
+_021DB690:
+ ldr r0, [r4, #0x18]
+ bl FUN_020133C8
+ cmp r0, #0
+ bne _021DB6FC
+ ldr r0, _021DB718 ; =0x021DBEC0
+ lsl r1, r6, #2
+ ldr r0, [r0, r1]
+ cmp r7, r0
+ blt _021DB6FC
+ ldr r1, _021DB704 ; =0x0400004A
+ mov r0, #0x3f
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #0x10
+ orr r2, r0
+ mov r0, #0x20
+ orr r0, r2
+ strh r0, [r1]
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ b _021DB6FC
+_021DB6BE:
+ ldr r2, _021DB71C ; =0x021DBEDC
+ lsl r3, r6, #3
+ ldr r2, [r2, r3]
+ blx r2
+ cmp r0, #0
+ beq _021DB6FC
+ lsl r0, r6, #2
+ add r0, r4, r0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ mov r2, #1
+ bl FUN_02007558
+ mov r0, #0
+ strb r0, [r4, #0x1d]
+ ldrb r0, [r5]
+ add r0, r0, #1
+ strb r0, [r5]
+ b _021DB6FC
+_021DB6E4:
+ ldrb r0, [r4, #0x1d]
+ add r0, r0, #1
+ strb r0, [r4, #0x1d]
+ ldrb r0, [r4, #0x1d]
+ cmp r0, #0x14
+ blo _021DB6FC
+ mov r0, #0
+ strb r0, [r4, #0x1d]
+ strb r0, [r5]
+ add sp, #8
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021DB6FC:
+ mov r0, #0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DB704: .word 0x0400004A
+_021DB708: .word 0x021DBED8
+_021DB70C: .word 0x021DBF08
+_021DB710: .word MOD63_021DB940
+_021DB714: .word 0x021DBF0C
+_021DB718: .word 0x021DBEC0
+_021DB71C: .word 0x021DBEDC
+ thumb_func_end MOD63_021DB5CC
+
+ thumb_func_start MOD63_021DB720
+MOD63_021DB720: ; 0x021DB720
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ ldr r4, [r0, #4]
+ mov r1, #0
+ add r0, r4, #0
+ mov r2, #6
+ bl FUN_020079E0
+ mov r1, #1
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x11
+ bl FUN_020079E0
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x8c
+ bl FUN_020079E0
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x8d
+ bl FUN_020079E0
+ ldrb r0, [r5, #0x1d]
+ add r0, r0, #1
+ strb r0, [r5, #0x1d]
+ ldrb r0, [r5, #0x1d]
+ cmp r0, #6
+ blo _021DB780
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DB780:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DB720
+
+ thumb_func_start MOD63_021DB784
+MOD63_021DB784: ; 0x021DB784
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ ldr r4, [r0, #4]
+ mov r1, #0
+ add r0, r4, #0
+ sub r2, r1, #3
+ bl FUN_020079E0
+ mov r1, #1
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x13
+ bl FUN_020079E0
+ ldrb r0, [r5, #0x1d]
+ add r0, r0, #1
+ strb r0, [r5, #0x1d]
+ ldrb r0, [r5, #0x1d]
+ cmp r0, #6
+ blo _021DB7CC
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DB7CC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DB784
+
+ thumb_func_start MOD63_021DB7D0
+MOD63_021DB7D0: ; 0x021DB7D0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ ldr r4, [r0, #4]
+ mov r1, #0
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x10
+ bl FUN_020079E0
+ mov r1, #1
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x11
+ bl FUN_020079E0
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x8c
+ bl FUN_020079E0
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x8d
+ bl FUN_020079E0
+ ldrb r0, [r5, #0x1d]
+ add r0, r0, #1
+ strb r0, [r5, #0x1d]
+ ldrb r0, [r5, #0x1d]
+ cmp r0, #6
+ blo _021DB832
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DB832:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB7D0
+
+ thumb_func_start MOD63_021DB838
+MOD63_021DB838: ; 0x021DB838
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ ldr r4, [r0, #4]
+ mov r1, #0
+ add r0, r4, #0
+ sub r2, r1, #6
+ bl FUN_020079E0
+ mov r1, #1
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x11
+ bl FUN_020079E0
+ ldrb r0, [r5, #0x1d]
+ add r0, r0, #1
+ strb r0, [r5, #0x1d]
+ ldrb r0, [r5, #0x1d]
+ cmp r0, #6
+ blo _021DB880
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DB880:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DB838
+
+ thumb_func_start MOD63_021DB884
+MOD63_021DB884: ; 0x021DB884
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ ldr r4, [r0, #4]
+ mov r1, #0
+ add r0, r4, #0
+ mov r2, #8
+ bl FUN_020079E0
+ mov r1, #1
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x11
+ bl FUN_020079E0
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x8c
+ bl FUN_020079E0
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x8d
+ bl FUN_020079E0
+ ldrb r0, [r5, #0x1d]
+ add r0, r0, #1
+ strb r0, [r5, #0x1d]
+ ldrb r0, [r5, #0x1d]
+ cmp r0, #6
+ blo _021DB8E4
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DB8E4:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DB884
+
+ thumb_func_start MOD63_021DB8E8
+MOD63_021DB8E8: ; 0x021DB8E8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ lsl r0, r1, #2
+ add r0, r5, r0
+ ldr r4, [r0, #4]
+ mov r1, #0
+ add r0, r4, #0
+ mov r2, #6
+ bl FUN_020079E0
+ mov r1, #1
+ add r2, r1, #0
+ add r0, r4, #0
+ sub r2, #0x15
+ bl FUN_020079E0
+ ldrb r0, [r5, #0x1d]
+ add r0, r0, #1
+ strb r0, [r5, #0x1d]
+ ldrb r0, [r5, #0x1d]
+ cmp r0, #6
+ blo _021DB930
+ mov r1, #0xc
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf4
+ bl FUN_02007558
+ mov r1, #0xd
+ add r2, r1, #0
+ add r0, r4, #0
+ add r2, #0xf3
+ bl FUN_02007558
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DB930:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD63_021DB8E8
+
+ thumb_func_start MOD63_021DB934
+MOD63_021DB934: ; 0x021DB934
+ push {r3, lr}
+ bl FUN_02013364
+ bl FUN_02013388
+ pop {r3, pc}
+ thumb_func_end MOD63_021DB934
+
+ thumb_func_start MOD63_021DB940
+MOD63_021DB940: ; 0x021DB940
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ bl FUN_0201341C
+ add r2, sp, #0
+ mov r1, #0
+ str r1, [r2]
+ str r1, [r2, #4]
+ add r4, r0, #0
+ str r1, [r2, #8]
+ bl FUN_0200782C
+ sub r0, #0x80
+ mov r1, #0xac
+ mul r1, r0
+ str r1, [sp]
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_0200782C
+ sub r0, #0x60
+ mov r1, #0xac
+ mul r1, r0
+ str r1, [sp, #4]
+ mov r0, #0x40
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp]
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ add r0, r1, r0
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #4]
+ ldr r0, [r0]
+ ldr r0, [r0, #8]
+ add r0, r1, r0
+ str r0, [r5, #0x2c]
+ ldr r0, [r5, #0x20]
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ ldr r0, [r0, #0xc]
+ add r0, r1, r0
+ str r0, [r5, #0x30]
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD63_021DB940
+
+ .section .rodata
+ ; 0x021DB9A0
+ .incbin "baserom.nds", 0x2B6EC0, 0x478
+
+ .global MOD63_UNK_021DBE18
+MOD63_UNK_021DBE18:
+ .incbin "baserom.nds", 0x2B7338, 0x108
+
+ .section .data
+ ; 0x021DBF40
+ .incbin "baserom.nds", 0x2B7460, 0x60
+
+ .section .bss
+ ; 0x021DBFA0
+ .space 0x20
+
diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s
new file mode 100644
index 00000000..e7d103d1
--- /dev/null
+++ b/arm9/modules/64/asm/module_64.s
@@ -0,0 +1,3582 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD64_021D74E0
+MOD64_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ mov r2, #1
+ add r4, r0, #0
+ mov r0, #3
+ mov r1, #0x2f
+ lsl r2, r2, #0x12
+ bl FUN_0201681C
+ ldr r1, _021D7630 ; =0x000006B4
+ add r0, r4, #0
+ mov r2, #0x2f
+ bl FUN_02006268
+ add r5, r0, #0
+ bne _021D7504
+ bl ErrorHandling
+_021D7504:
+ ldr r2, _021D7630 ; =0x000006B4
+ add r0, r5, #0
+ mov r1, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x25
+ lsl r0, r0, #4
+ add r0, r5, r0
+ mov r1, #0x2f
+ mov r2, #0x20
+ bl FUN_02016B20
+ add r0, r4, #0
+ bl FUN_0200628C
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_02025084
+ ldr r1, _021D7634 ; =0x000006A8
+ str r0, [r5, r1]
+ ldr r0, [r4, #4]
+ bl FUN_02024FF4
+ ldr r1, _021D7638 ; =0x000006AC
+ str r0, [r5, r1]
+ mov r0, #8
+ mov r1, #0x2f
+ bl FUN_0201C24C
+ ldr r0, _021D763C ; =MOD64_021D77A4
+ add r1, r5, #0
+ bl FUN_02015F10
+ bl FUN_02015F1C
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ cmp r0, #1
+ beq _021D755E
+ bl ErrorHandling
+_021D755E:
+ add r0, r5, #0
+ mov r1, #0x2f
+ bl MOD64_021D7810
+ mov r0, #0x2f
+ bl FUN_02016B94
+ add r1, r5, #0
+ add r1, #0x94
+ str r0, [r1]
+ mov r1, #1
+ mov r0, #0
+ str r0, [sp, #4]
+ add r0, sp, #0
+ str r1, [sp]
+ str r1, [sp, #8]
+ str r1, [sp, #0xc]
+ bl FUN_02016BBC
+ add r0, r5, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ mov r1, #0x2f
+ bl MOD64_021D7970
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_0201E6E4
+ mov r0, #2
+ mov r1, #0
+ bl FUN_0201E6E4
+ add r0, r5, #0
+ mov r1, #0x2f
+ bl MOD64_021D7A54
+ add r0, r5, #0
+ mov r1, #0x2f
+ bl MOD64_021D87CC
+ add r0, r5, #0
+ mov r1, #0x2f
+ bl MOD64_021D8EF4
+ add r0, r5, #0
+ mov r1, #0x2f
+ bl MOD64_021D7B04
+ add r0, r5, #0
+ mov r1, #0x2f
+ bl MOD64_021D7C34
+ add r0, r5, #0
+ mov r1, #0x2f
+ bl MOD64_021D7C74
+ add r0, r5, #0
+ mov r1, #0x2f
+ bl MOD64_021D7F60
+ add r0, r5, #0
+ mov r1, #0x2f
+ bl MOD64_021D824C
+ add r0, r5, #0
+ bl MOD64_021D82CC
+ add r0, r5, #0
+ bl MOD64_021D8354
+ mov r1, #6
+ lsl r1, r1, #8
+ add r0, r5, #0
+ add r1, r5, r1
+ mov r2, #0x2f
+ bl MOD64_021D892C
+ mov r1, #6
+ lsl r1, r1, #8
+ add r0, r5, #0
+ add r1, r5, r1
+ mov r2, #0x2f
+ bl MOD64_021D89FC
+ mov r0, #6
+ lsl r0, r0, #8
+ add r0, r5, r0
+ bl MOD64_021D8AE0
+ mov r0, #0x65
+ lsl r0, r0, #4
+ add r0, r5, r0
+ add r1, r5, #0
+ mov r2, #0x2f
+ bl MOD64_021D8B70
+ mov r1, #0
+ mov r0, #0x3c
+ add r2, r1, #0
+ bl FUN_0200433C
+ mov r0, #1
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7630: .word 0x000006B4
+_021D7634: .word 0x000006A8
+_021D7638: .word 0x000006AC
+_021D763C: .word MOD64_021D77A4
+ thumb_func_end MOD64_021D74E0
+
+ thumb_func_start MOD64_021D7640
+MOD64_021D7640: ; 0x021D7640
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r1, #0
+ bl FUN_02006278
+ ldr r2, _021D76F0 ; =0x000008C3
+ add r1, sp, #0
+ strh r2, [r1]
+ ldr r1, [r4]
+ add r6, r0, #0
+ cmp r1, #4
+ bhi _021D76E2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7664: ; jump table
+ .short _021D766E - _021D7664 - 2 ; case 0
+ .short _021D7684 - _021D7664 - 2 ; case 1
+ .short _021D76A0 - _021D7664 - 2 ; case 2
+ .short _021D76BC - _021D7664 - 2 ; case 3
+ .short _021D76C8 - _021D7664 - 2 ; case 4
+_021D766E:
+ bl MOD64_021D77C8
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #2
+ bl GX_LoadBGPltt
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D76E2
+_021D7684:
+ bl MOD64_021D7808
+ cmp r0, #0
+ beq _021D76E2
+ mov r0, #0
+ bl FUN_0200E388
+ mov r0, #1
+ bl FUN_0200E388
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D76E2
+_021D76A0:
+ mov r1, #0x2f
+ bl MOD64_021D80A4
+ add r5, r0, #0
+ add r0, r6, #0
+ mov r1, #0x2f
+ bl MOD64_021D8100
+ cmp r5, #1
+ bne _021D76E2
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D76E2
+_021D76BC:
+ bl MOD64_021D77E8
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ b _021D76E2
+_021D76C8:
+ bl MOD64_021D7808
+ cmp r0, #0
+ beq _021D76E2
+ mov r0, #0
+ bl FUN_0200E388
+ mov r0, #1
+ bl FUN_0200E388
+ add sp, #4
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D76E2:
+ add r0, r6, #0
+ bl MOD64_021D81D8
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_021D76F0: .word 0x000008C3
+ thumb_func_end MOD64_021D7640
+
+ thumb_func_start MOD64_021D76F4
+MOD64_021D76F4: ; 0x021D76F4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ add r0, r5, #0
+ bl FUN_0200628C
+ add r6, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ ldr r0, [r4, #0x54]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl MOD64_021D9044
+ str r0, [r6]
+ bl FUN_0201CD04
+ cmp r0, #1
+ beq _021D7726
+ bl ErrorHandling
+_021D7726:
+ mov r0, #0x65
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD64_021D8C0C
+ mov r0, #6
+ lsl r0, r0, #8
+ add r0, r4, r0
+ bl MOD64_021D8A78
+ mov r1, #6
+ lsl r1, r1, #8
+ add r0, r4, #0
+ add r1, r4, r1
+ bl MOD64_021D89B8
+ mov r0, #6
+ lsl r0, r0, #8
+ add r0, r4, r0
+ bl MOD64_021D8B44
+ add r0, r4, #0
+ bl MOD64_021D82BC
+ add r0, r4, #0
+ bl MOD64_021D8034
+ add r0, r4, #0
+ bl MOD64_021D7CE0
+ add r0, r4, #0
+ bl MOD64_021D7C08
+ add r0, r4, #0
+ bl MOD64_021D7C64
+ add r0, r4, #0
+ bl MOD64_021D7AEC
+ add r0, r4, #0
+ bl MOD64_021D8FAC
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ bl MOD64_021D7A38
+ add r4, #0x94
+ ldr r0, [r4]
+ bl FUN_02016A18
+ bl MOD64_021D7828
+ bl FUN_0201C29C
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0x2f
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD64_021D76F4
+
+ thumb_func_start MOD64_021D77A4
+MOD64_021D77A4: ; 0x021D77A4
+ push {r4, lr}
+ add r4, r0, #0
+ bl FUN_02009F80
+ add r0, r4, #0
+ add r0, #0x94
+ ldr r0, [r0]
+ bl FUN_0201AB60
+ mov r0, #2
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ bl FUN_020081C4
+ bl FUN_0201C30C
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D77A4
+
+ thumb_func_start MOD64_021D77C8
+MOD64_021D77C8: ; 0x021D77C8
+ push {lr}
+ sub sp, #0xc
+ mov r0, #6
+ str r0, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ mov r0, #0x2f
+ str r0, [sp, #8]
+ mov r0, #0
+ add r2, r1, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D77C8
+
+ thumb_func_start MOD64_021D77E8
+MOD64_021D77E8: ; 0x021D77E8
+ push {lr}
+ sub sp, #0xc
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x2f
+ str r0, [sp, #8]
+ mov r0, #0
+ add r1, r0, #0
+ add r2, r0, #0
+ add r3, r0, #0
+ bl FUN_0200E1D0
+ add sp, #0xc
+ pop {pc}
+ thumb_func_end MOD64_021D77E8
+
+ thumb_func_start MOD64_021D7808
+MOD64_021D7808: ; 0x021D7808
+ ldr r3, _021D780C ; =0x0200E309
+ bx r3
+ .align 2, 0
+_021D780C: .word 0x0200E309
+ thumb_func_end MOD64_021D7808
+
+ thumb_func_start MOD64_021D7810
+MOD64_021D7810: ; 0x021D7810
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ bl MOD64_021D783C
+ add r0, r4, #0
+ bl MOD64_021D785C
+ add r0, r5, #0
+ bl MOD64_021D78B4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD64_021D7810
+
+ thumb_func_start MOD64_021D7828
+MOD64_021D7828: ; 0x021D7828
+ push {r3, lr}
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ bl MOD64_021D7964
+ pop {r3, pc}
+ thumb_func_end MOD64_021D7828
+
+ thumb_func_start MOD64_021D783C
+MOD64_021D783C: ; 0x021D783C
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7858 ; =0x021D90E8
+ add r3, sp, #0
+ mov r2, #5
+_021D7846:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7846
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7858: .word 0x021D90E8
+ thumb_func_end MOD64_021D783C
+
+ thumb_func_start MOD64_021D785C
+MOD64_021D785C: ; 0x021D785C
+ push {r4, r5, lr}
+ sub sp, #0x24
+ add r4, r0, #0
+ bl FUN_020B0FC0
+ mov r0, #0
+ str r0, [sp]
+ mov r1, #0x80
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r3, #0x20
+ str r3, [sp, #0xc]
+ add r2, r0, #0
+ str r4, [sp, #0x10]
+ bl FUN_02009EAC
+ ldr r5, _021D78AC ; =0x021D9074
+ add r3, sp, #0x14
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ ldr r1, _021D78B0 ; =0x00200010
+ mov r2, #0x10
+ str r4, [sp, #0x20]
+ bl FUN_0201D060
+ mov r0, #0x20
+ add r1, r4, #0
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x24
+ pop {r4, r5, pc}
+ nop
+_021D78AC: .word 0x021D9074
+_021D78B0: .word 0x00200010
+ thumb_func_end MOD64_021D785C
+
+ thumb_func_start MOD64_021D78B4
+MOD64_021D78B4: ; 0x021D78B4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ bl FUN_020BB7F4
+ bl G3X_InitMtxStack
+ ldr r0, _021D7940 ; =0x04000060
+ ldr r1, _021D7944 ; =0xFFFFCFFD
+ ldrh r2, [r0]
+ and r2, r1
+ strh r2, [r0]
+ ldrh r3, [r0]
+ add r2, r1, #2
+ and r3, r2
+ mov r2, #0x10
+ orr r2, r3
+ strh r2, [r0]
+ ldrh r3, [r0]
+ ldr r2, _021D7948 ; =0x0000CFFB
+ and r2, r3
+ strh r2, [r0]
+ add r2, r1, #2
+ ldrh r3, [r0]
+ add r1, r1, #2
+ and r3, r2
+ mov r2, #8
+ orr r2, r3
+ strh r2, [r0]
+ ldrh r2, [r0]
+ add r3, r4, #0
+ and r2, r1
+ mov r1, #0x20
+ orr r1, r2
+ strh r1, [r0]
+ ldr r1, _021D794C ; =0x00001084
+ ldr r0, _021D7950 ; =0x0000063C
+ mov r2, #0
+_021D7900:
+ add r2, r2, #1
+ strh r1, [r3, r0]
+ add r3, r3, #2
+ cmp r2, #8
+ blt _021D7900
+ ldr r0, _021D7950 ; =0x0000063C
+ add r0, r4, r0
+ bl G3X_SetEdgeColorTable
+ mov r1, #0
+ ldr r0, _021D7954 ; =0x000043FF
+ ldr r2, _021D7958 ; =0x00007FFF
+ mov r3, #0x3f
+ str r1, [sp]
+ bl G3X_SetClearColor
+ ldr r1, _021D795C ; =0x04000540
+ mov r0, #2
+ str r0, [r1]
+ ldr r0, _021D7960 ; =0xBFFF0000
+ str r0, [r1, #0x40]
+ mov r0, #1
+ add r1, r0, #0
+ bl FUN_020AEB70
+ mov r0, #1
+ lsl r0, r0, #0xe
+ mov r1, #1
+ bl FUN_020AEDF4
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D7940: .word 0x04000060
+_021D7944: .word 0xFFFFCFFD
+_021D7948: .word 0x0000CFFB
+_021D794C: .word 0x00001084
+_021D7950: .word 0x0000063C
+_021D7954: .word 0x000043FF
+_021D7958: .word 0x00007FFF
+_021D795C: .word 0x04000540
+_021D7960: .word 0xBFFF0000
+ thumb_func_end MOD64_021D78B4
+
+ thumb_func_start MOD64_021D7964
+MOD64_021D7964: ; 0x021D7964
+ push {r3, lr}
+ bl FUN_020AEAF4
+ bl FUN_020AEC60
+ pop {r3, pc}
+ thumb_func_end MOD64_021D7964
+
+ thumb_func_start MOD64_021D7970
+MOD64_021D7970: ; 0x021D7970
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x54
+ add r4, r1, #0
+ ldr r1, _021D7A28 ; =0x04000008
+ add r5, r0, #0
+ ldrh r2, [r1]
+ mov r0, #3
+ mov r7, #1
+ bic r2, r0
+ add r0, r2, #0
+ orr r0, r7
+ add r3, sp, #0x38
+ ldr r6, _021D7A2C ; =0x021D90B0
+ strh r0, [r1]
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ add r1, r7, #0
+ str r0, [r3]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r7, #0
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ add r0, r5, #0
+ add r1, r7, #0
+ bl FUN_02018744
+ ldr r6, _021D7A30 ; =0x021D9094
+ add r3, sp, #0x1c
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ mov r1, #2
+ str r0, [r3]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ add r0, r5, #0
+ mov r1, #2
+ bl FUN_02018744
+ ldr r6, _021D7A34 ; =0x021D90CC
+ add r3, sp, #0
+ ldmia r6!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r6]
+ mov r1, #3
+ str r0, [r3]
+ add r0, r5, #0
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ add r3, r4, #0
+ bl FUN_02017F18
+ add r0, r5, #0
+ mov r1, #3
+ bl FUN_02018744
+ add sp, #0x54
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D7A28: .word 0x04000008
+_021D7A2C: .word 0x021D90B0
+_021D7A30: .word 0x021D9094
+_021D7A34: .word 0x021D90CC
+ thumb_func_end MOD64_021D7970
+
+ thumb_func_start MOD64_021D7A38
+MOD64_021D7A38: ; 0x021D7A38
+ push {r4, lr}
+ add r4, r0, #0
+ mov r1, #1
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020178A0
+ pop {r4, pc}
+ thumb_func_end MOD64_021D7A38
+
+ thumb_func_start MOD64_021D7A54
+MOD64_021D7A54: ; 0x021D7A54
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_02018FF4
+ add r1, r5, #0
+ add r1, #0x98
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ bl FUN_0201901C
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #4]
+ mov r3, #4
+ add r1, r5, #0
+ str r3, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ mov r0, #0x1f
+ str r0, [sp, #0x10]
+ add r0, r5, #0
+ add r0, #0x94
+ add r1, #0x98
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #1
+ bl FUN_02019064
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ mov r1, #0xf
+ bl FUN_02019620
+ ldr r0, _021D7AE8 ; =0x000006A8
+ mov r1, #1
+ ldr r0, [r5, r0]
+ lsl r2, r1, #9
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ add r0, r5, #0
+ str r4, [sp, #4]
+ add r0, #0x94
+ ldr r0, [r0]
+ mov r3, #0
+ bl FUN_0200CD68
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #0x52
+ mov r1, #0x10
+ mov r2, #0
+ mov r3, #0x40
+ str r4, [sp, #4]
+ bl FUN_02006930
+ add r5, #0x98
+ mov r1, #0
+ mov r2, #2
+ ldr r0, [r5]
+ lsl r2, r2, #8
+ add r3, r1, #0
+ bl FUN_0200D0BC
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D7AE8: .word 0x000006A8
+ thumb_func_end MOD64_021D7A54
+
+ thumb_func_start MOD64_021D7AEC
+MOD64_021D7AEC: ; 0x021D7AEC
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ bl FUN_02019178
+ add r4, #0x98
+ ldr r0, [r4]
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D7AEC
+
+ thumb_func_start MOD64_021D7B04
+MOD64_021D7B04: ; 0x021D7B04
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, r1, #0
+ bl FUN_02006D98
+ mov r1, #2
+ lsl r1, r1, #8
+ str r0, [r5, r1]
+ ldr r3, _021D7BA4 ; =0x021064B8
+ lsl r0, r1, #6
+ mov r1, #0
+ ldr r3, [r3]
+ add r2, r1, #0
+ blx r3
+ ldr r3, _021D7BA8 ; =0x021064C0
+ add r4, r0, #0
+ ldr r3, [r3]
+ mov r0, #0x80
+ mov r1, #0
+ mov r2, #1
+ blx r3
+ ldr r2, _021D7BAC ; =0x7FFF0000
+ add r6, r0, #0
+ mov r0, #2
+ lsl r0, r0, #8
+ and r2, r4
+ lsl r1, r4, #0x10
+ lsr r2, r2, #0x10
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0xd
+ lsl r2, r2, #4
+ bl FUN_020081A8
+ ldr r2, _021D7BB0 ; =0xFFFF0000
+ mov r0, #2
+ lsl r0, r0, #8
+ and r2, r6
+ lsl r1, r6, #0x10
+ lsr r2, r2, #0x10
+ ldr r0, [r5, r0]
+ lsr r1, r1, #0xd
+ lsl r2, r2, #3
+ bl FUN_020081B4
+ mov r2, #0x81
+ lsl r2, r2, #2
+ add r0, r5, r2
+ add r1, r5, #0
+ sub r2, #0x81
+ bl MOD64_021D7BB4
+ mov r2, #0x82
+ lsl r2, r2, #2
+ add r0, r5, r2
+ add r1, r5, #0
+ sub r2, #0x82
+ bl MOD64_021D7BB4
+ mov r2, #0x83
+ lsl r2, r2, #2
+ add r0, r5, r2
+ add r1, r5, #0
+ sub r2, #0x83
+ bl MOD64_021D7BB4
+ mov r6, #0x81
+ mov r4, #0
+ mov r7, #6
+ lsl r6, r6, #2
+_021D7B8E:
+ ldr r0, [r5, r6]
+ add r1, r7, #0
+ mov r2, #1
+ bl FUN_02007558
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021D7B8E
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D7BA4: .word 0x021064B8
+_021D7BA8: .word 0x021064C0
+_021D7BAC: .word 0x7FFF0000
+_021D7BB0: .word 0xFFFF0000
+ thumb_func_end MOD64_021D7B04
+
+ thumb_func_start MOD64_021D7BB4
+MOD64_021D7BB4: ; 0x021D7BB4
+ push {r4, r5, r6, lr}
+ sub sp, #0x20
+ add r6, r2, #0
+ add r5, r0, #0
+ lsl r0, r6, #0x10
+ add r4, r1, #0
+ lsr r0, r0, #0x10
+ mov r1, #0
+ bl FUN_02068A20
+ add r2, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ lsl r1, r6, #0x10
+ lsl r2, r2, #0x18
+ str r0, [sp, #8]
+ add r0, sp, #0x10
+ lsr r1, r1, #0x10
+ lsr r2, r2, #0x18
+ mov r3, #2
+ bl FUN_02068C00
+ ldr r0, _021D7C04 ; =0x000003FF
+ add r1, sp, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ mov r0, #2
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ mov r2, #0x80
+ mov r3, #0x60
+ bl FUN_020073A0
+ str r0, [r5]
+ add sp, #0x20
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D7C04: .word 0x000003FF
+ thumb_func_end MOD64_021D7BB4
+
+ thumb_func_start MOD64_021D7C08
+MOD64_021D7C08: ; 0x021D7C08
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r6, #0x81
+ mov r4, #0
+ add r5, r7, #0
+ lsl r6, r6, #2
+_021D7C14:
+ ldr r0, [r5, r6]
+ cmp r0, #0
+ beq _021D7C1E
+ bl FUN_02007534
+_021D7C1E:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021D7C14
+ mov r0, #2
+ lsl r0, r0, #8
+ ldr r0, [r7, r0]
+ bl FUN_020072E8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D7C08
+
+ thumb_func_start MOD64_021D7C34
+MOD64_021D7C34: ; 0x021D7C34
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ ldr r5, _021D7C5C ; =0x021D9084
+ add r3, sp, #0
+ add r4, r0, #0
+ add r6, r1, #0
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ str r6, [sp, #0xc]
+ bl FUN_02013CD4
+ ldr r1, _021D7C60 ; =0x0000064C
+ str r0, [r4, r1]
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ nop
+_021D7C5C: .word 0x021D9084
+_021D7C60: .word 0x0000064C
+ thumb_func_end MOD64_021D7C34
+
+ thumb_func_start MOD64_021D7C64
+MOD64_021D7C64: ; 0x021D7C64
+ ldr r1, _021D7C6C ; =0x0000064C
+ ldr r3, _021D7C70 ; =0x02013D19
+ ldr r0, [r0, r1]
+ bx r3
+ .align 2, 0
+_021D7C6C: .word 0x0000064C
+_021D7C70: .word 0x02013D19
+ thumb_func_end MOD64_021D7C64
+
+ thumb_func_start MOD64_021D7C74
+MOD64_021D7C74: ; 0x021D7C74
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r1, r5, #0
+ mov r0, #2
+ add r1, #0xbc
+ add r2, r4, #0
+ bl FUN_02008C9C
+ mov r1, #0x79
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #2
+ mov r1, #0
+ add r2, r4, #0
+ bl FUN_02008DEC
+ mov r1, #0x7a
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #2
+ mov r1, #1
+ add r2, r4, #0
+ bl FUN_02008DEC
+ mov r1, #0x7b
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #2
+ add r1, r0, #0
+ add r2, r4, #0
+ bl FUN_02008DEC
+ mov r1, #0x1f
+ lsl r1, r1, #4
+ str r0, [r5, r1]
+ mov r0, #2
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_02008DEC
+ mov r1, #0x7d
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E74C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D7C74
+
+ thumb_func_start MOD64_021D7CE0
+MOD64_021D7CE0: ; 0x021D7CE0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FD58
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02008E2C
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02008E2C
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r4, r0]
+ bl FUN_02008E2C
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_02008E2C
+ pop {r4, pc}
+ thumb_func_end MOD64_021D7CE0
+
+ thumb_func_start MOD64_021D7D18
+MOD64_021D7D18: ; 0x021D7D18
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r7, r2, #0
+ add r5, r0, #0
+ add r4, r3, #0
+ mov r1, #0
+ mov r2, #0x98
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ add r1, r6, #0
+ add r2, r4, #0
+ bl MOD64_021D7D7C
+ ldr r3, [sp, #0x18]
+ add r0, r5, #0
+ add r1, r7, #0
+ add r2, r4, #0
+ bl MOD64_021D7DC0
+ mov r1, #1
+ lsl r1, r1, #0xc
+ add r0, r5, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD64_021D7EE0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD64_021D7D18
+
+ thumb_func_start MOD64_021D7D50
+MOD64_021D7D50: ; 0x021D7D50
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ mov r1, #0
+ mov r2, #0x98
+ bl Call_FillMemWithValue
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD64_021D7D7C
+ mov r1, #1
+ lsl r1, r1, #0xc
+ add r0, r5, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl MOD64_021D7EE0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D7D50
+
+ thumb_func_start MOD64_021D7D7C
+MOD64_021D7D7C: ; 0x021D7D7C
+ push {r3, r4, lr}
+ sub sp, #4
+ add r3, r2, #0
+ mov r2, #0
+ add r4, r0, #0
+ str r2, [sp]
+ mov r0, #0x52
+ bl FUN_02006C98
+ str r0, [r4, #0x54]
+ bl FUN_020BC13C
+ str r0, [r4, #0x58]
+ ldrh r1, [r0, #0xe]
+ add r1, r0, r1
+ ldr r1, [r1, #0xc]
+ add r0, r0, r1
+ str r0, [r4, #0x5c]
+ ldr r0, [r4, #0x54]
+ bl FUN_020BC0FC
+ str r0, [r4, #0x60]
+ bl FUN_0201B3C4
+ ldr r0, [r4, #0x54]
+ ldr r1, [r4, #0x60]
+ bl FUN_0201B3A8
+ ldr r1, [r4, #0x5c]
+ add r0, r4, #0
+ bl FUN_020B80B4
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD64_021D7D7C
+
+ thumb_func_start MOD64_021D7DC0
+MOD64_021D7DC0: ; 0x021D7DC0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r6, r2, #0
+ mov r2, #0
+ add r4, r0, #0
+ add r5, r3, #0
+ str r2, [sp]
+ mov r0, #0x52
+ add r3, r6, #0
+ bl FUN_02006C98
+ str r0, [r4, #0x64]
+ mov r1, #0
+ bl FUN_020BC4C8
+ str r0, [r4, #0x68]
+ ldr r1, [r4, #0x68]
+ ldr r2, [r4, #0x5c]
+ add r0, r5, #0
+ bl FUN_020BB8D0
+ str r0, [r4, #0x6c]
+ ldr r1, [r4, #0x68]
+ ldr r2, [r4, #0x5c]
+ ldr r3, [r4, #0x60]
+ bl FUN_020B8110
+ ldr r1, [r4, #0x6c]
+ add r0, r4, #0
+ bl FUN_020B7EFC
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D7DC0
+
+ thumb_func_start MOD64_021D7E04
+MOD64_021D7E04: ; 0x021D7E04
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x54]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _021D7E14
+ bl FUN_02016A18
+_021D7E14:
+ ldr r0, [r5, #0x64]
+ cmp r0, #0
+ beq _021D7E28
+ ldr r1, [r5, #0x6c]
+ add r0, r4, #0
+ bl thunk_FUN_020ae84c
+ ldr r0, [r5, #0x64]
+ bl FUN_02016A18
+_021D7E28:
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #0x98
+ bl Call_FillMemWithValue
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD64_021D7E04
+
+ thumb_func_start MOD64_021D7E34
+MOD64_021D7E34: ; 0x021D7E34
+ push {r4, lr}
+ sub sp, #0x48
+ add r4, r0, #0
+ add r0, sp, #0x24
+ bl MTX_Identity33_
+ add r0, r4, #0
+ add r0, #0x90
+ ldrh r0, [r0]
+ ldr r3, _021D7ECC ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0
+ bl MTX_RotX33_
+ add r1, sp, #0x24
+ add r0, sp, #0
+ add r2, r1, #0
+ bl MTX_Concat33
+ add r0, r4, #0
+ add r0, #0x92
+ ldrh r0, [r0]
+ ldr r3, _021D7ECC ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0
+ bl MTX_RotY33_
+ add r1, sp, #0x24
+ add r0, sp, #0
+ add r2, r1, #0
+ bl MTX_Concat33
+ add r0, r4, #0
+ add r0, #0x94
+ ldrh r0, [r0]
+ ldr r3, _021D7ECC ; =0x020FFA38
+ asr r0, r0, #4
+ lsl r2, r0, #1
+ lsl r1, r2, #1
+ add r2, r2, #1
+ lsl r2, r2, #1
+ ldrsh r1, [r3, r1]
+ ldrsh r2, [r3, r2]
+ add r0, sp, #0
+ bl MTX_RotZ33_
+ add r1, sp, #0x24
+ add r0, sp, #0
+ add r2, r1, #0
+ bl MTX_Concat33
+ ldr r0, [r4, #0x74]
+ cmp r0, #0
+ beq _021D7EC8
+ add r1, r4, #0
+ add r0, r4, #0
+ add r4, #0x84
+ add r1, #0x78
+ add r2, sp, #0x24
+ add r3, r4, #0
+ bl FUN_0201B26C
+_021D7EC8:
+ add sp, #0x48
+ pop {r4, pc}
+ .align 2, 0
+_021D7ECC: .word 0x020FFA38
+ thumb_func_end MOD64_021D7E34
+
+ thumb_func_start MOD64_021D7ED0
+MOD64_021D7ED0: ; 0x021D7ED0
+ str r1, [r0, #0x74]
+ bx lr
+ thumb_func_end MOD64_021D7ED0
+
+ thumb_func_start MOD64_021D7ED4
+MOD64_021D7ED4: ; 0x021D7ED4
+ str r1, [r0, #0x78]
+ str r2, [r0, #0x7c]
+ add r0, #0x80
+ str r3, [r0]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD64_021D7ED4
+
+ thumb_func_start MOD64_021D7EE0
+MOD64_021D7EE0: ; 0x021D7EE0
+ push {r3, r4}
+ add r4, r0, #0
+ add r4, #0x84
+ str r1, [r4]
+ add r1, r0, #0
+ add r1, #0x88
+ str r2, [r1]
+ add r0, #0x8c
+ str r3, [r0]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD64_021D7EE0
+
+ thumb_func_start MOD64_021D7EF8
+MOD64_021D7EF8: ; 0x021D7EF8
+ push {r3, r4}
+ add r4, r0, #0
+ add r4, #0x90
+ strh r1, [r4]
+ add r1, r0, #0
+ add r1, #0x92
+ strh r2, [r1]
+ add r0, #0x94
+ strh r3, [r0]
+ pop {r3, r4}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD64_021D7EF8
+
+ thumb_func_start MOD64_021D7F10
+MOD64_021D7F10: ; 0x021D7F10
+ ldr r1, [r0, #0x6c]
+ ldr r2, [r0, #0x70]
+ ldr r1, [r1, #8]
+ ldrh r1, [r1, #4]
+ lsl r3, r1, #0xc
+ mov r1, #1
+ lsl r1, r1, #0xc
+ add r1, r2, r1
+ cmp r1, r3
+ bge _021D7F2A
+ str r1, [r0, #0x70]
+ mov r2, #0
+ b _021D7F2E
+_021D7F2A:
+ str r3, [r0, #0x70]
+ mov r2, #1
+_021D7F2E:
+ ldr r1, [r0, #0x70]
+ ldr r0, [r0, #0x6c]
+ str r1, [r0]
+ add r0, r2, #0
+ bx lr
+ thumb_func_end MOD64_021D7F10
+
+ thumb_func_start MOD64_021D7F38
+MOD64_021D7F38: ; 0x021D7F38
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #1
+ ldr r1, [r4, #0x70]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ ldr r1, [r4, #0x6c]
+ ldr r1, [r1, #8]
+ ldrh r1, [r1, #4]
+ lsl r1, r1, #0xc
+ bl _s32_div_f
+ str r1, [r4, #0x70]
+ ldr r0, [r4, #0x6c]
+ str r1, [r0]
+ pop {r4, pc}
+ thumb_func_end MOD64_021D7F38
+
+ thumb_func_start MOD64_021D7F58
+MOD64_021D7F58: ; 0x021D7F58
+ str r1, [r0, #0x70]
+ ldr r0, [r0, #0x6c]
+ str r1, [r0]
+ bx lr
+ thumb_func_end MOD64_021D7F58
+
+ thumb_func_start MOD64_021D7F60
+MOD64_021D7F60: ; 0x021D7F60
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r6, r0, #0
+ mov r0, #0x25
+ add r7, r1, #0
+ lsl r0, r0, #4
+ add r1, r6, r0
+ add r0, #0x10
+ str r1, [sp]
+ add r0, r6, r0
+ mov r1, #1
+ mov r2, #0
+ add r3, r7, #0
+ bl MOD64_021D7D18
+ mov r0, #0x26
+ lsl r0, r0, #4
+ add r0, r6, r0
+ mov r1, #1
+ bl MOD64_021D7ED0
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ add r0, r6, r0
+ mov r1, #8
+ add r2, r7, #0
+ bl MOD64_021D7D50
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ add r0, r6, r0
+ mov r1, #0
+ bl MOD64_021D7ED0
+ mov r0, #0x26
+ lsl r0, r0, #4
+ add r1, r6, r0
+ lsr r0, r0, #1
+ add r5, r1, r0
+ mov r0, #0x25
+ lsl r0, r0, #4
+ add r0, r6, r0
+ mov r4, #2
+ str r0, [sp, #4]
+_021D7FB8:
+ sub r0, r4, #2
+ lsl r2, r0, #1
+ ldr r0, [sp, #4]
+ add r1, r2, #3
+ str r0, [sp]
+ add r0, r5, #0
+ add r2, r2, #2
+ add r3, r7, #0
+ bl MOD64_021D7D18
+ add r0, r5, #0
+ mov r1, #0
+ bl MOD64_021D7ED0
+ add r4, r4, #1
+ add r5, #0x98
+ cmp r4, #4
+ ble _021D7FB8
+ ldr r0, _021D8028 ; =0x00000558
+ mov r1, #9
+ add r0, r6, r0
+ add r2, r7, #0
+ bl MOD64_021D7D50
+ ldr r0, _021D8028 ; =0x00000558
+ mov r1, #1
+ add r0, r6, r0
+ bl MOD64_021D7ED0
+ ldr r0, _021D8028 ; =0x00000558
+ mov r3, #0xa
+ ldr r2, _021D802C ; =0xFFFE4000
+ add r0, r6, r0
+ mov r1, #0
+ lsl r3, r3, #0xe
+ bl MOD64_021D7ED4
+ ldr r0, _021D8028 ; =0x00000558
+ mov r1, #0xe
+ lsl r1, r1, #0xa
+ mov r2, #1
+ add r0, r6, r0
+ lsl r2, r2, #0xc
+ add r3, r1, #0
+ bl MOD64_021D7EE0
+ ldr r0, _021D8028 ; =0x00000558
+ mov r1, #0
+ ldr r2, _021D8030 ; =0x00007FFF
+ add r0, r6, r0
+ add r3, r1, #0
+ bl MOD64_021D7EF8
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8028: .word 0x00000558
+_021D802C: .word 0xFFFE4000
+_021D8030: .word 0x00007FFF
+ thumb_func_end MOD64_021D7F60
+
+ thumb_func_start MOD64_021D8034
+MOD64_021D8034: ; 0x021D8034
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x26
+ lsl r0, r0, #4
+ add r7, r0, #0
+ mov r4, #0
+ add r5, r6, r0
+ sub r7, #0x10
+_021D8044:
+ add r0, r5, #0
+ add r1, r6, r7
+ bl MOD64_021D7E04
+ add r4, r4, #1
+ add r5, #0x98
+ cmp r4, #6
+ blt _021D8044
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D8034
+
+ thumb_func_start MOD64_021D8058
+MOD64_021D8058: ; 0x021D8058
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0
+ ldr r2, _021D809C ; =0xFFFFF000
+ add r1, r0, #0
+ add r3, r0, #0
+ bl FUN_020B8418
+ ldr r1, _021D80A0 ; =0x00007FFF
+ mov r0, #0
+ bl FUN_020B8404
+ ldr r0, _021D80A0 ; =0x00007FFF
+ mov r2, #0
+ add r1, r0, #0
+ bl FUN_020B83E0
+ ldr r0, _021D80A0 ; =0x00007FFF
+ mov r2, #0
+ add r1, r0, #0
+ bl FUN_020B83BC
+ mov r0, #0x26
+ lsl r0, r0, #4
+ mov r4, #0
+ add r5, r5, r0
+_021D808C:
+ add r0, r5, #0
+ bl MOD64_021D7E34
+ add r4, r4, #1
+ add r5, #0x98
+ cmp r4, #6
+ blt _021D808C
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D809C: .word 0xFFFFF000
+_021D80A0: .word 0x00007FFF
+ thumb_func_end MOD64_021D8058
+
+ thumb_func_start MOD64_021D80A4
+MOD64_021D80A4: ; 0x021D80A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ cmp r1, #1
+ bne _021D80B2
+ mov r0, #0
+ pop {r4, pc}
+_021D80B2:
+ bl MOD64_021D83D0
+ cmp r0, #5
+ bhi _021D80F4
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D80C6: ; jump table
+ .short _021D80F4 - _021D80C6 - 2 ; case 0
+ .short _021D80F4 - _021D80C6 - 2 ; case 1
+ .short _021D80F4 - _021D80C6 - 2 ; case 2
+ .short _021D80D2 - _021D80C6 - 2 ; case 3
+ .short _021D80F4 - _021D80C6 - 2 ; case 4
+ .short _021D80F0 - _021D80C6 - 2 ; case 5
+_021D80D2:
+ add r0, r4, #0
+ bl MOD64_021D8384
+ ldr r0, _021D80F8 ; =0x021C48B8
+ mov r1, #1
+ ldr r0, [r0, #0x48]
+ tst r0, r1
+ beq _021D80F4
+ add r0, r4, #0
+ bl MOD64_021D83C4
+ ldr r0, _021D80FC ; =0x000005DC
+ bl FUN_020054C8
+ b _021D80F4
+_021D80F0:
+ mov r0, #1
+ pop {r4, pc}
+_021D80F4:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021D80F8: .word 0x021C48B8
+_021D80FC: .word 0x000005DC
+ thumb_func_end MOD64_021D80A4
+
+ thumb_func_start MOD64_021D8100
+MOD64_021D8100: ; 0x021D8100
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r1, #0
+ bl MOD64_021D83D0
+ cmp r0, #5
+ bhi _021D81CA
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D811A: ; jump table
+ .short _021D8126 - _021D811A - 2 ; case 0
+ .short _021D8146 - _021D811A - 2 ; case 1
+ .short _021D815E - _021D811A - 2 ; case 2
+ .short _021D81B0 - _021D811A - 2 ; case 3
+ .short _021D81BA - _021D811A - 2 ; case 4
+ .short _021D81C4 - _021D811A - 2 ; case 5
+_021D8126:
+ mov r1, #1
+ str r1, [r4, #8]
+ mov r0, #0x24
+ str r0, [r4, #0xc]
+ add r0, r4, #0
+ bl MOD64_021D83C4
+ mov r0, #6
+ str r0, [sp]
+ ldr r0, _021D81CC ; =0x04000050
+ mov r1, #8
+ mov r2, #0x15
+ mov r3, #0xa
+ bl G2x_SetBlendAlpha_
+ pop {r3, r4, r5, pc}
+_021D8146:
+ ldr r0, [r4, #0xc]
+ sub r0, r0, #1
+ str r0, [r4, #0xc]
+ bpl _021D81CA
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD64_021D83C4
+ ldr r0, _021D81D0 ; =0x000006CA
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+_021D815E:
+ mov r0, #0x26
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD64_021D7F10
+ cmp r0, #0
+ beq _021D81CA
+ mov r0, #0x26
+ lsl r0, r0, #4
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD64_021D7ED0
+ mov r0, #0xbe
+ lsl r0, r0, #2
+ add r0, r4, r0
+ mov r1, #1
+ bl MOD64_021D7ED0
+ mov r0, #0x39
+ lsl r0, r0, #4
+ add r0, r4, r0
+ mov r1, #1
+ bl MOD64_021D7ED0
+ ldr r0, _021D81D4 ; =0x00000428
+ mov r1, #1
+ add r0, r4, r0
+ bl MOD64_021D7ED0
+ mov r0, #0x13
+ lsl r0, r0, #6
+ add r0, r4, r0
+ mov r1, #1
+ bl MOD64_021D7ED0
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD64_021D83C4
+ pop {r3, r4, r5, pc}
+_021D81B0:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD64_021D83D4
+ pop {r3, r4, r5, pc}
+_021D81BA:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD64_021D8570
+ pop {r3, r4, r5, pc}
+_021D81C4:
+ ldr r0, _021D81CC ; =0x04000050
+ mov r1, #0
+ strh r1, [r0]
+_021D81CA:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D81CC: .word 0x04000050
+_021D81D0: .word 0x000006CA
+_021D81D4: .word 0x00000428
+ thumb_func_end MOD64_021D8100
+
+ thumb_func_start MOD64_021D81D8
+MOD64_021D81D8: ; 0x021D81D8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ bl FUN_020222AC
+ mov r1, #0
+ mov r0, #0x11
+ add r2, r1, #0
+ bl FUN_020BB1C0
+ bl FUN_020BB394
+ bl FUN_020B02C8
+ mov r0, #2
+ lsl r0, r0, #8
+ ldr r0, [r4, r0]
+ bl FUN_02006ED4
+ ldr r0, _021D8248 ; =0x0000064C
+ ldr r0, [r4, r0]
+ bl FUN_02013D5C
+ mov r2, #1
+ mov r0, #0x12
+ add r1, sp, #4
+ str r2, [sp, #4]
+ bl FUN_020BB1C0
+ mov r1, #0
+ mov r0, #0x11
+ add r2, r1, #0
+ bl FUN_020BB1C0
+ bl FUN_0201EBA4
+ add r0, r4, #0
+ bl MOD64_021D8058
+ mov r2, #1
+ mov r0, #0x12
+ add r1, sp, #0
+ str r2, [sp]
+ bl FUN_020BB1C0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_020222B4
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ bl FUN_0201FDEC
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_021D8248: .word 0x0000064C
+ thumb_func_end MOD64_021D81D8
+
+ thumb_func_start MOD64_021D824C
+MOD64_021D824C: ; 0x021D824C
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ bl FUN_0201EB64
+ mov r1, #0x5f
+ lsl r1, r1, #4
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ add r1, r4, r1
+ bl MOD64_021D8268
+ pop {r4, pc}
+ thumb_func_end MOD64_021D824C
+
+ thumb_func_start MOD64_021D8268
+MOD64_021D8268: ; 0x021D8268
+ push {r4, lr}
+ sub sp, #0x20
+ mov r3, #0
+ str r3, [r1]
+ str r3, [r1, #4]
+ add r4, r0, #0
+ ldr r2, _021D82B4 ; =0x0000EAAB
+ str r3, [r1, #8]
+ add r0, sp, #0xc
+ strh r2, [r0]
+ strh r3, [r0, #2]
+ strh r3, [r0, #4]
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r0, r1, #0
+ mov r1, #0x4b
+ ldr r3, _021D82B8 ; =0x00000FA4
+ lsl r1, r1, #0xe
+ add r2, sp, #0xc
+ str r4, [sp, #8]
+ bl FUN_0201ECA8
+ mov r1, #0
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x18]
+ str r1, [sp, #0x14]
+ str r1, [sp, #0x1c]
+ add r0, sp, #0x14
+ add r1, r4, #0
+ bl FUN_0201EC58
+ add r0, r4, #0
+ bl FUN_0201EB8C
+ add sp, #0x20
+ pop {r4, pc}
+ .align 2, 0
+_021D82B4: .word 0x0000EAAB
+_021D82B8: .word 0x00000FA4
+ thumb_func_end MOD64_021D8268
+
+ thumb_func_start MOD64_021D82BC
+MOD64_021D82BC: ; 0x021D82BC
+ mov r1, #0x5f
+ lsl r1, r1, #4
+ ldr r3, _021D82C8 ; =0x0201EB71
+ ldr r0, [r0, r1]
+ bx r3
+ nop
+_021D82C8: .word 0x0201EB71
+ thumb_func_end MOD64_021D82BC
+
+ thumb_func_start MOD64_021D82CC
+MOD64_021D82CC: ; 0x021D82CC
+ push {r4, r5, r6, r7}
+ mov r5, #0
+ add r4, r5, #0
+ add r6, r0, #0
+ sub r3, r5, #4
+ add r1, r5, #0
+ sub r4, #0x2c
+ mov r2, #0x20
+_021D82DC:
+ cmp r5, #0
+ beq _021D82EA
+ cmp r5, #1
+ beq _021D82F2
+ cmp r5, #2
+ beq _021D82FC
+ b _021D8306
+_021D82EA:
+ str r4, [r6, #0x58]
+ str r3, [r6, #0x5c]
+ str r2, [r6, #0x60]
+ b _021D8306
+_021D82F2:
+ str r1, [r6, #0x58]
+ str r3, [r6, #0x5c]
+ mov r7, #0x3e
+ str r7, [r6, #0x60]
+ b _021D8306
+_021D82FC:
+ mov r7, #0x26
+ str r7, [r6, #0x58]
+ str r3, [r6, #0x5c]
+ mov r7, #0x1a
+ str r7, [r6, #0x60]
+_021D8306:
+ add r5, r5, #1
+ add r6, #0xc
+ cmp r5, #3
+ blt _021D82DC
+ mov r5, #0
+ mov r2, #0x82
+ mov r1, #0x52
+ mov r4, #0x4e
+ mov r3, #0x37
+_021D8318:
+ cmp r5, #0
+ beq _021D8326
+ cmp r5, #1
+ beq _021D8330
+ cmp r5, #2
+ beq _021D833A
+ b _021D8346
+_021D8326:
+ add r6, r0, #0
+ str r4, [r0, #0x7c]
+ add r6, #0x80
+ str r3, [r6]
+ b _021D8346
+_021D8330:
+ add r6, r0, #0
+ str r2, [r0, #0x7c]
+ add r6, #0x80
+ str r1, [r6]
+ b _021D8346
+_021D833A:
+ mov r6, #0xac
+ add r7, r0, #0
+ str r6, [r0, #0x7c]
+ add r7, #0x80
+ mov r6, #0x32
+ str r6, [r7]
+_021D8346:
+ add r5, r5, #1
+ add r0, #8
+ cmp r5, #3
+ blt _021D8318
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD64_021D82CC
+
+ thumb_func_start MOD64_021D8354
+MOD64_021D8354: ; 0x021D8354
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ mov r0, #0x26
+ lsl r0, r0, #4
+ mov r4, #0
+ add r6, r5, r0
+ mov r7, #0x98
+_021D8362:
+ add r0, r4, #2
+ add r1, r0, #0
+ mul r1, r7
+ add r0, r6, r1
+ ldr r1, [r5, #0x58]
+ ldr r2, [r5, #0x5c]
+ ldr r3, [r5, #0x60]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xc
+ lsl r3, r3, #0xc
+ bl MOD64_021D7ED4
+ add r4, r4, #1
+ add r5, #0xc
+ cmp r4, #3
+ blt _021D8362
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD64_021D8354
+
+ thumb_func_start MOD64_021D8384
+MOD64_021D8384: ; 0x021D8384
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D83BC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x20
+ tst r0, r1
+ beq _021D83A0
+ ldr r0, [r4, #0x54]
+ sub r0, r0, #1
+ bmi _021D83A0
+ str r0, [r4, #0x54]
+ ldr r0, _021D83C0 ; =0x000005DC
+ bl FUN_020054C8
+_021D83A0:
+ ldr r0, _021D83BC ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #0x10
+ tst r0, r1
+ beq _021D83BA
+ ldr r0, [r4, #0x54]
+ add r0, r0, #1
+ cmp r0, #3
+ bge _021D83BA
+ str r0, [r4, #0x54]
+ ldr r0, _021D83C0 ; =0x000005DC
+ bl FUN_020054C8
+_021D83BA:
+ pop {r4, pc}
+ .align 2, 0
+_021D83BC: .word 0x021C48B8
+_021D83C0: .word 0x000005DC
+ thumb_func_end MOD64_021D8384
+
+ thumb_func_start MOD64_021D83C4
+MOD64_021D83C4: ; 0x021D83C4
+ ldr r2, [r0]
+ add r1, r2, r1
+ str r1, [r0]
+ mov r1, #0
+ str r1, [r0, #4]
+ bx lr
+ thumb_func_end MOD64_021D83C4
+
+ thumb_func_start MOD64_021D83D0
+MOD64_021D83D0: ; 0x021D83D0
+ ldr r0, [r0]
+ bx lr
+ thumb_func_end MOD64_021D83D0
+
+ thumb_func_start MOD64_021D83D4
+MOD64_021D83D4: ; 0x021D83D4
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r2, [r4, #4]
+ cmp r2, #8
+ bls _021D83E2
+ b _021D8510
+_021D83E2:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021D83EE: ; jump table
+ .short _021D8400 - _021D83EE - 2 ; case 0
+ .short _021D8422 - _021D83EE - 2 ; case 1
+ .short _021D843A - _021D83EE - 2 ; case 2
+ .short _021D8450 - _021D83EE - 2 ; case 3
+ .short _021D8480 - _021D83EE - 2 ; case 4
+ .short _021D849E - _021D83EE - 2 ; case 5
+ .short _021D84CE - _021D83EE - 2 ; case 6
+ .short _021D84EC - _021D83EE - 2 ; case 7
+ .short _021D8506 - _021D83EE - 2 ; case 8
+_021D8400:
+ mov r2, #0x5f
+ lsl r2, r2, #4
+ ldr r1, [r4, r2]
+ add r2, r2, #4
+ add r0, #0x10
+ add r2, r4, r2
+ bl MOD64_021D8864
+ mov r0, #2
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, pc}
+_021D8422:
+ add r0, #0x10
+ bl MOD64_021D8928
+ cmp r0, #0
+ beq _021D8510
+ mov r0, #6
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, pc}
+_021D843A:
+ ldr r1, [r4, #0xc]
+ sub r1, r1, #1
+ str r1, [r4, #0xc]
+ bpl _021D8510
+ bl MOD64_021D8554
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, pc}
+_021D8450:
+ ldr r0, _021D8514 ; =0x0001020F
+ mov r2, #5
+ str r0, [sp]
+ ldr r0, _021D8518 ; =0x000006AC
+ lsl r2, r2, #6
+ ldr r0, [r4, r0]
+ mov r3, #0
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xac
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ bl MOD64_021D8744
+ mov r1, #0x6b
+ lsl r1, r1, #4
+ strb r0, [r4, r1]
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, pc}
+_021D8480:
+ mov r0, #0x6b
+ lsl r0, r0, #4
+ ldrb r0, [r4, r0]
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D8510
+ add r0, r4, #0
+ bl MOD64_021D87B8
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, pc}
+_021D849E:
+ ldr r0, _021D8514 ; =0x0001020F
+ mov r2, #5
+ str r0, [sp]
+ ldr r0, _021D8518 ; =0x000006AC
+ lsl r2, r2, #6
+ ldr r0, [r4, r0]
+ mov r3, #7
+ str r0, [sp, #4]
+ add r0, r4, #0
+ add r0, #0xac
+ str r0, [sp, #8]
+ add r0, r4, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ bl MOD64_021D8744
+ mov r1, #0x6b
+ lsl r1, r1, #4
+ strb r0, [r4, r1]
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, pc}
+_021D84CE:
+ mov r0, #0x6b
+ lsl r0, r0, #4
+ ldrb r0, [r4, r0]
+ bl FUN_0201BD70
+ cmp r0, #0
+ bne _021D8510
+ add r0, r4, #0
+ bl MOD64_021D87B8
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, pc}
+_021D84EC:
+ mov r0, #6
+ lsl r0, r0, #8
+ add r0, r4, r0
+ mov r1, #1
+ bl MOD64_021D8B58
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #4]
+ add sp, #0xc
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, pc}
+_021D8506:
+ bl MOD64_021D851C
+ add r0, r4, #0
+ bl MOD64_021D8554
+_021D8510:
+ add sp, #0xc
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D8514: .word 0x0001020F
+_021D8518: .word 0x000006AC
+ thumb_func_end MOD64_021D83D4
+
+ thumb_func_start MOD64_021D851C
+MOD64_021D851C: ; 0x021D851C
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r0, #0x26
+ lsl r0, r0, #4
+ mov r5, #0
+ add r4, r6, r0
+ mov r7, #0x98
+_021D852A:
+ ldr r0, [r6, #0x54]
+ cmp r0, r5
+ bne _021D853E
+ add r0, r5, #2
+ add r1, r0, #0
+ mul r1, r7
+ add r0, r4, r1
+ bl MOD64_021D7F38
+ b _021D854C
+_021D853E:
+ add r1, r5, #2
+ mov r0, #0x98
+ mul r0, r1
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD64_021D7F58
+_021D854C:
+ add r5, r5, #1
+ cmp r5, #3
+ blt _021D852A
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD64_021D851C
+
+ thumb_func_start MOD64_021D8554
+MOD64_021D8554: ; 0x021D8554
+ add r2, r0, #0
+ ldr r0, [r2, #0x54]
+ ldr r3, _021D856C ; =MOD64_021D8B64
+ lsl r1, r0, #3
+ mov r0, #6
+ lsl r0, r0, #8
+ add r0, r2, r0
+ add r2, r2, r1
+ ldr r1, [r2, #0x7c]
+ add r2, #0x80
+ ldr r2, [r2]
+ bx r3
+ .align 2, 0
+_021D856C: .word MOD64_021D8B64
+ thumb_func_end MOD64_021D8554
+
+ thumb_func_start MOD64_021D8570
+MOD64_021D8570: ; 0x021D8570
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r2, [r4, #4]
+ add r5, r1, #0
+ cmp r2, #4
+ bls _021D8580
+ b _021D86D0
+_021D8580:
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021D858C: ; jump table
+ .short _021D8596 - _021D858C - 2 ; case 0
+ .short _021D85C2 - _021D858C - 2 ; case 1
+ .short _021D8604 - _021D858C - 2 ; case 2
+ .short _021D8644 - _021D858C - 2 ; case 3
+ .short _021D867C - _021D858C - 2 ; case 4
+_021D8596:
+ mov r0, #6
+ lsl r0, r0, #8
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD64_021D8B58
+ add r0, r4, #0
+ bl MOD64_021D8554
+ add r0, r4, #0
+ bl MOD64_021D902C
+ add r0, r4, #0
+ bl MOD64_021D8D40
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #1
+ str r0, [r4, #8]
+ pop {r3, r4, r5, pc}
+_021D85C2:
+ mov r0, #0x65
+ lsl r0, r0, #4
+ add r0, r4, r0
+ mov r1, #1
+ bl MOD64_021D8C30
+ ldr r0, [r4, #0x54]
+ mov r2, #0
+ lsl r0, r0, #2
+ add r1, r4, r0
+ mov r0, #0x81
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #6
+ bl FUN_02007558
+ add r0, r4, #0
+ bl MOD64_021D8DCC
+ cmp r0, #0
+ beq _021D86D0
+ ldr r0, [r4, #0x54]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl MOD64_021D9044
+ bl FUN_02005578
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_021D8604:
+ ldr r0, _021D86D4 ; =0x0001020F
+ mov r2, #0xff
+ str r0, [sp]
+ str r2, [sp, #4]
+ add r0, r4, #0
+ add r0, #0x98
+ ldr r3, [r4, #0x54]
+ ldr r0, [r0]
+ add r2, #0x41
+ add r3, r3, #1
+ bl MOD64_021D86DC
+ add r0, r4, #0
+ add r1, r4, #0
+ str r5, [sp]
+ add r0, #0x94
+ ldr r0, [r0]
+ ldr r2, _021D86D8 ; =0x0000029E
+ add r1, #0xb0
+ mov r3, #1
+ bl FUN_02002198
+ add r1, r4, #0
+ add r1, #0xb8
+ str r0, [r1]
+ mov r0, #0
+ str r0, [r4, #8]
+ ldr r0, [r4, #4]
+ add sp, #8
+ add r0, r0, #1
+ str r0, [r4, #4]
+ pop {r3, r4, r5, pc}
+_021D8644:
+ add r0, #0xb8
+ ldr r0, [r0]
+ bl FUN_020021AC
+ cmp r0, #0
+ beq _021D8660
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ beq _021D866C
+ add r1, r1, #1
+ add sp, #8
+ cmp r0, r1
+ pop {r3, r4, r5, pc}
+_021D8660:
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD64_021D83C4
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_021D866C:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ add r0, r4, #0
+ bl MOD64_021D8DB0
+ add sp, #8
+ pop {r3, r4, r5, pc}
+_021D867C:
+ bl MOD64_021D8DCC
+ cmp r0, #0
+ beq _021D86D0
+ mov r1, #0
+ add r0, r4, #0
+ mvn r1, r1
+ bl MOD64_021D83C4
+ mov r0, #7
+ str r0, [r4, #4]
+ mov r0, #0x65
+ lsl r0, r0, #4
+ add r0, r4, r0
+ mov r1, #0
+ bl MOD64_021D8C30
+ ldr r0, [r4, #0x54]
+ mov r2, #1
+ lsl r0, r0, #2
+ add r1, r4, r0
+ mov r0, #0x81
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #6
+ bl FUN_02007558
+ ldr r0, _021D86D4 ; =0x0001020F
+ mov r2, #0xff
+ str r0, [sp]
+ add r0, r4, #0
+ str r2, [sp, #4]
+ add r0, #0x98
+ ldr r0, [r0]
+ add r1, r5, #0
+ add r2, #0x41
+ mov r3, #7
+ bl MOD64_021D86DC
+ mov r1, #0x6b
+ lsl r1, r1, #4
+ strb r0, [r4, r1]
+_021D86D0:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D86D4: .word 0x0001020F
+_021D86D8: .word 0x0000029E
+ thumb_func_end MOD64_021D8570
+
+ thumb_func_start MOD64_021D86DC
+MOD64_021D86DC: ; 0x021D86DC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r3, #0
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r4, #0
+ bl FUN_0200A86C
+ add r4, r0, #0
+ bne _021D86F8
+ bl ErrorHandling
+_021D86F8:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl FUN_0200A914
+ add r6, r0, #0
+ add r0, r5, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r3, #0
+ ldr r0, [sp, #0x2c]
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x28]
+ mov r1, #1
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r2, r6, #0
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+ mov r1, #0
+ mov r2, #2
+ add r7, r0, #0
+ add r0, r5, #0
+ lsl r2, r2, #8
+ add r3, r1, #0
+ bl FUN_0200D0BC
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_0200A8B8
+ add r0, r7, #0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD64_021D86DC
+
+ thumb_func_start MOD64_021D8744
+MOD64_021D8744: ; 0x021D8744
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ ldr r4, [sp, #0x30]
+ add r5, r0, #0
+ ldr r0, [r4]
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp, #0x10]
+ cmp r0, #0
+ beq _021D875C
+ bl ErrorHandling
+_021D875C:
+ mov r0, #0
+ mov r1, #0x1a
+ add r2, r7, #0
+ add r3, r6, #0
+ bl FUN_0200A86C
+ add r6, r0, #0
+ bne _021D8770
+ bl ErrorHandling
+_021D8770:
+ ldr r1, [sp, #0x10]
+ add r0, r6, #0
+ bl FUN_0200A914
+ str r0, [r4]
+ add r0, r5, #0
+ mov r1, #0xf
+ bl FUN_02019620
+ mov r3, #0
+ ldr r0, [sp, #0x2c]
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x28]
+ mov r1, #1
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r2, [r4]
+ add r0, r5, #0
+ bl FUN_0201BDE0
+ mov r1, #0
+ mov r2, #2
+ add r4, r0, #0
+ add r0, r5, #0
+ lsl r2, r2, #8
+ add r3, r1, #0
+ bl FUN_0200D0BC
+ add r0, r6, #0
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D8744
+
+ thumb_func_start MOD64_021D87B8
+MOD64_021D87B8: ; 0x021D87B8
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, #0xac
+ ldr r0, [r0]
+ bl FUN_02021A20
+ mov r0, #0
+ add r4, #0xac
+ str r0, [r4]
+ pop {r4, pc}
+ thumb_func_end MOD64_021D87B8
+
+ thumb_func_start MOD64_021D87CC
+MOD64_021D87CC: ; 0x021D87CC
+ push {r4, lr}
+ sub sp, #8
+ add r2, r0, #0
+ add r4, r1, #0
+ mov r1, #1
+ add r2, #0xb0
+ strb r1, [r2]
+ add r2, r0, #0
+ mov r3, #0x17
+ add r2, #0xb1
+ strb r3, [r2]
+ add r2, r0, #0
+ mov r3, #0xc
+ add r2, #0xb2
+ strb r3, [r2]
+ add r2, r0, #0
+ mov r3, #5
+ add r2, #0xb3
+ strb r3, [r2]
+ add r2, r0, #0
+ mov r3, #4
+ add r2, #0xb4
+ strb r3, [r2]
+ add r2, r0, #0
+ mov r3, #3
+ add r2, #0xb5
+ strb r3, [r2]
+ add r2, r0, #0
+ mov r3, #0xa7
+ add r2, #0xb6
+ strh r3, [r2]
+ mov r2, #0
+ str r2, [sp]
+ str r4, [sp, #4]
+ add r0, #0x94
+ ldr r0, [r0]
+ ldr r2, _021D882C ; =0x0000029E
+ add r3, r1, #0
+ bl FUN_0200CB00
+ mov r0, #0
+ mov r1, #0x60
+ add r2, r4, #0
+ bl FUN_02002ED0
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021D882C: .word 0x0000029E
+ thumb_func_end MOD64_021D87CC
+
+ thumb_func_start MOD64_021D8830
+MOD64_021D8830: ; 0x021D8830
+ str r1, [r0]
+ str r1, [r0, #4]
+ sub r1, r2, r1
+ str r1, [r0, #8]
+ str r3, [r0, #0xc]
+ bx lr
+ thumb_func_end MOD64_021D8830
+
+ thumb_func_start MOD64_021D883C
+MOD64_021D883C: ; 0x021D883C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r3, [r5, #0xc]
+ cmp r1, r3
+ blt _021D884A
+ mov r4, #1
+ b _021D884C
+_021D884A:
+ mov r4, #0
+_021D884C:
+ ldr r2, [r5, #8]
+ add r0, r2, #0
+ mul r0, r1
+ add r1, r3, #0
+ bl _s32_div_f
+ ldr r1, [r5, #4]
+ add r0, r0, r1
+ str r0, [r5]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D883C
+
+ thumb_func_start MOD64_021D8864
+MOD64_021D8864: ; 0x021D8864
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x40]
+ add r4, r1, #0
+ add r6, r2, #0
+ cmp r0, #0
+ beq _021D8876
+ bl ErrorHandling
+_021D8876:
+ ldr r1, _021D88B8 ; =0xFFFFEAAB
+ ldr r2, _021D88BC ; =0xFFFFDC72
+ add r0, r5, #0
+ mov r3, #6
+ bl MOD64_021D8830
+ add r0, r5, #0
+ mov r1, #0x4b
+ mov r2, #0x32
+ add r0, #0x10
+ lsl r1, r1, #0xe
+ lsl r2, r2, #0xe
+ mov r3, #6
+ bl MOD64_021D8830
+ add r0, r5, #0
+ mov r2, #9
+ add r0, #0x20
+ mov r1, #0
+ lsl r2, r2, #0xe
+ mov r3, #6
+ bl MOD64_021D8830
+ mov r2, #0
+ str r2, [r5, #0x3c]
+ str r4, [r5, #0x30]
+ str r6, [r5, #0x34]
+ ldr r0, _021D88C0 ; =MOD64_021D88C4
+ add r1, r5, #0
+ str r2, [r5, #0x38]
+ bl FUN_0200CA44
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D88B8: .word 0xFFFFEAAB
+_021D88BC: .word 0xFFFFDC72
+_021D88C0: .word MOD64_021D88C4
+ thumb_func_end MOD64_021D8864
+
+ thumb_func_start MOD64_021D88C4
+MOD64_021D88C4: ; 0x021D88C4
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r1, #0
+ ldr r1, [r5, #0x38]
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD64_021D883C
+ add r4, r0, #0
+ add r0, r5, #0
+ ldr r1, [r5, #0x38]
+ add r0, #0x10
+ bl MOD64_021D883C
+ add r0, r5, #0
+ ldr r1, [r5, #0x38]
+ add r0, #0x20
+ bl MOD64_021D883C
+ ldr r1, [r5]
+ add r0, sp, #0
+ strh r1, [r0]
+ mov r1, #0
+ strh r1, [r0, #2]
+ strh r1, [r0, #4]
+ ldr r1, [r5, #0x30]
+ add r0, sp, #0
+ bl FUN_0201EF90
+ ldr r0, [r5, #0x10]
+ ldr r1, [r5, #0x30]
+ bl FUN_0201EFE0
+ ldr r1, [r5, #0x20]
+ ldr r0, [r5, #0x34]
+ str r1, [r0, #8]
+ ldr r0, [r5, #0x38]
+ add r0, r0, #1
+ str r0, [r5, #0x38]
+ cmp r4, #1
+ bne _021D8924
+ add r0, r6, #0
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r5, #0x40]
+ mov r0, #1
+ str r0, [r5, #0x3c]
+_021D8924:
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD64_021D88C4
+
+ thumb_func_start MOD64_021D8928
+MOD64_021D8928: ; 0x021D8928
+ ldr r0, [r0, #0x3c]
+ bx lr
+ thumb_func_end MOD64_021D8928
+
+ thumb_func_start MOD64_021D892C
+MOD64_021D892C: ; 0x021D892C
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r6, r2, #0
+ mov r2, #0xa
+ add r5, r0, #0
+ str r2, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x7a
+ add r4, r1, #0
+ str r6, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x52
+ mov r3, #0
+ bl FUN_02008F34
+ str r0, [r4, #4]
+ bl FUN_02009B04
+ ldr r0, [r4, #4]
+ bl FUN_02009474
+ mov r2, #0xb
+ str r2, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x7b
+ str r6, [sp, #0xc]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x52
+ mov r3, #0
+ bl FUN_02008FEC
+ str r0, [r4, #8]
+ bl FUN_02009D68
+ ldr r0, [r4, #8]
+ bl FUN_02009474
+ mov r2, #0xc
+ str r2, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x1f
+ str r6, [sp, #8]
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ mov r1, #0x52
+ mov r3, #0
+ bl FUN_020090AC
+ str r0, [r4, #0xc]
+ mov r2, #0xd
+ str r2, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x7d
+ str r6, [sp, #8]
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0x52
+ mov r3, #0
+ bl FUN_020090AC
+ str r0, [r4, #0x10]
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD64_021D892C
+
+ thumb_func_start MOD64_021D89B8
+MOD64_021D89B8: ; 0x021D89B8
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #4]
+ bl FUN_02009C0C
+ ldr r0, [r4, #8]
+ bl FUN_02009E04
+ mov r0, #0x7a
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #4]
+ bl FUN_02009490
+ mov r0, #0x7b
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #8]
+ bl FUN_02009490
+ mov r0, #0x1f
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #0xc]
+ bl FUN_02009490
+ mov r0, #0x7d
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ ldr r1, [r4, #0x10]
+ bl FUN_02009490
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD64_021D89B8
+
+ thumb_func_start MOD64_021D89FC
+MOD64_021D89FC: ; 0x021D89FC
+ push {r4, r5, r6, lr}
+ sub sp, #0x70
+ add r5, r0, #0
+ mov r0, #0xd
+ str r0, [sp]
+ sub r0, #0xe
+ str r0, [sp, #4]
+ add r6, r2, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ mov r2, #0x7a
+ add r4, r1, #0
+ str r0, [sp, #0xc]
+ mov r1, #1
+ lsl r2, r2, #2
+ str r1, [sp, #0x10]
+ ldr r1, [r5, r2]
+ mov r3, #0xc
+ str r1, [sp, #0x14]
+ add r1, r2, #4
+ ldr r1, [r5, r1]
+ str r1, [sp, #0x18]
+ add r1, r2, #0
+ add r1, #8
+ ldr r1, [r5, r1]
+ add r2, #0xc
+ str r1, [sp, #0x1c]
+ ldr r1, [r5, r2]
+ mov r2, #0xb
+ str r1, [sp, #0x20]
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ add r0, sp, #0x4c
+ mov r1, #0xa
+ bl FUN_02008AA4
+ mov r0, #0x79
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ str r0, [sp, #0x2c]
+ add r0, sp, #0x4c
+ str r0, [sp, #0x30]
+ mov r0, #0x20
+ str r0, [sp, #0x40]
+ mov r0, #1
+ str r0, [sp, #0x44]
+ mov r0, #0
+ str r0, [sp, #0x34]
+ str r0, [sp, #0x38]
+ add r0, sp, #0x2c
+ str r6, [sp, #0x48]
+ bl FUN_0201FF84
+ mov r1, #0
+ str r0, [r4]
+ bl FUN_020200A0
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ str r0, [r4, #0x20]
+ add sp, #0x70
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD64_021D89FC
+
+ thumb_func_start MOD64_021D8A78
+MOD64_021D8A78: ; 0x021D8A78
+ ldr r3, _021D8A80 ; =0x0201FFC9
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D8A80: .word 0x0201FFC9
+ thumb_func_end MOD64_021D8A78
+
+ thumb_func_start MOD64_021D8A84
+MOD64_021D8A84: ; 0x021D8A84
+ mov r3, #0
+ str r3, [r0]
+ str r1, [r0, #4]
+ str r2, [r0, #8]
+ str r3, [r0, #0xc]
+ bx lr
+ thumb_func_end MOD64_021D8A84
+
+ thumb_func_start MOD64_021D8A90
+MOD64_021D8A90: ; 0x021D8A90
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0xc]
+ ldr r0, _021D8AD8 ; =0x0000FFFF
+ mul r0, r1
+ ldr r1, [r4, #8]
+ bl _s32_div_f
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ asr r0, r0, #4
+ lsl r1, r0, #2
+ ldr r0, _021D8ADC ; =0x020FFA38
+ ldr r2, [r4, #4]
+ ldrsh r0, [r0, r1]
+ asr r3, r2, #0x1f
+ asr r1, r0, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r1, r2, #0xc
+ orr r1, r0
+ str r1, [r4]
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #8]
+ add r0, r0, #1
+ bl _s32_div_f
+ str r1, [r4, #0xc]
+ pop {r4, pc}
+ nop
+_021D8AD8: .word 0x0000FFFF
+_021D8ADC: .word 0x020FFA38
+ thumb_func_end MOD64_021D8A90
+
+ thumb_func_start MOD64_021D8AE0
+MOD64_021D8AE0: ; 0x021D8AE0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _021D8AEE
+ bl ErrorHandling
+_021D8AEE:
+ add r0, r4, #0
+ mov r1, #2
+ add r0, #0x2c
+ lsl r1, r1, #0xe
+ mov r2, #0x20
+ bl MOD64_021D8A84
+ ldr r0, _021D8B0C ; =MOD64_021D8B10
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x28]
+ pop {r4, pc}
+ nop
+_021D8B0C: .word MOD64_021D8B10
+ thumb_func_end MOD64_021D8AE0
+
+ thumb_func_start MOD64_021D8B10
+MOD64_021D8B10: ; 0x021D8B10
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r4, r1, #0
+ add r0, r4, #0
+ add r0, #0x2c
+ bl MOD64_021D8A90
+ add r5, r4, #0
+ add r5, #0x1c
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ str r0, [r3]
+ ldr r1, [sp, #4]
+ ldr r0, [r4, #0x2c]
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r0, [r4]
+ add r1, r2, #0
+ bl FUN_02020044
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D8B10
+
+ thumb_func_start MOD64_021D8B44
+MOD64_021D8B44: ; 0x021D8B44
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ cmp r0, #0
+ beq _021D8B56
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x28]
+_021D8B56:
+ pop {r4, pc}
+ thumb_func_end MOD64_021D8B44
+
+ thumb_func_start MOD64_021D8B58
+MOD64_021D8B58: ; 0x021D8B58
+ ldr r3, _021D8B60 ; =0x020200A1
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D8B60: .word 0x020200A1
+ thumb_func_end MOD64_021D8B58
+
+ thumb_func_start MOD64_021D8B64
+MOD64_021D8B64: ; 0x021D8B64
+ lsl r1, r1, #0xc
+ str r1, [r0, #0x1c]
+ lsl r1, r2, #0xc
+ str r1, [r0, #0x20]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD64_021D8B64
+
+ thumb_func_start MOD64_021D8B70
+MOD64_021D8B70: ; 0x021D8B70
+ push {r4, r5, r6, lr}
+ sub sp, #0x38
+ add r5, r0, #0
+ add r3, r5, #0
+ add r6, r2, #0
+ add r4, r1, #0
+ mov r0, #0x52
+ mov r1, #0xe
+ mov r2, #0
+ add r3, #0x14
+ str r6, [sp]
+ bl FUN_02006BB0
+ add r2, r5, #0
+ str r0, [r5, #0xc]
+ mov r0, #0x52
+ mov r1, #0xf
+ add r2, #0x18
+ add r3, r6, #0
+ bl FUN_02006C08
+ str r0, [r5, #0x10]
+ ldr r0, _021D8C04 ; =0x0000064C
+ ldr r0, [r4, r0]
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x14]
+ str r0, [sp, #8]
+ add r0, sp, #4
+ bl FUN_02013D98
+ str r0, [r5]
+ ldr r0, _021D8C04 ; =0x0000064C
+ ldr r0, [r4, r0]
+ str r0, [sp, #0x2c]
+ ldr r0, [r5, #0x18]
+ str r0, [sp, #0x30]
+ mov r0, #1
+ str r0, [sp, #0x34]
+ add r0, sp, #0x2c
+ bl FUN_02013E14
+ str r0, [r5, #4]
+ ldr r0, _021D8C04 ; =0x0000064C
+ mov r2, #0
+ ldr r0, [r4, r0]
+ mov r1, #0x1f
+ str r0, [sp, #0xc]
+ ldr r0, [r5]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #4]
+ str r0, [sp, #0x14]
+ add r0, sp, #4
+ strh r2, [r0, #0x14]
+ strh r2, [r0, #0x16]
+ strh r2, [r0, #0x18]
+ str r1, [sp, #0x20]
+ ldr r1, _021D8C08 ; =0x000003FE
+ str r1, [sp, #0x24]
+ strh r2, [r0, #0x24]
+ add r0, sp, #0xc
+ bl FUN_02013E84
+ str r0, [r5, #8]
+ mov r1, #0
+ bl FUN_02013EB0
+ mov r1, #0x40
+ ldr r0, [r5, #8]
+ add r2, r1, #0
+ bl FUN_02013ED8
+ add sp, #0x38
+ pop {r4, r5, r6, pc}
+ nop
+_021D8C04: .word 0x0000064C
+_021D8C08: .word 0x000003FE
+ thumb_func_end MOD64_021D8B70
+
+ thumb_func_start MOD64_021D8C0C
+MOD64_021D8C0C: ; 0x021D8C0C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl FUN_02013EA8
+ ldr r0, [r4]
+ bl FUN_02013DD4
+ ldr r0, [r4, #4]
+ bl FUN_02013E44
+ ldr r0, [r4, #0xc]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x10]
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD64_021D8C0C
+
+ thumb_func_start MOD64_021D8C30
+MOD64_021D8C30: ; 0x021D8C30
+ ldr r3, _021D8C38 ; =0x02013EB1
+ ldr r0, [r0, #8]
+ bx r3
+ nop
+_021D8C38: .word 0x02013EB1
+ thumb_func_end MOD64_021D8C30
+
+ thumb_func_start MOD64_021D8C3C
+MOD64_021D8C3C: ; 0x021D8C3C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x54]
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp]
+ cmp r0, #0
+ beq _021D8C50
+ bl ErrorHandling
+_021D8C50:
+ ldr r4, [sp, #0x24]
+ add r0, r5, #0
+ add r0, #0x1c
+ add r1, r6, #0
+ add r2, r7, #0
+ add r3, r4, #0
+ bl MOD64_021D8830
+ add r0, r5, #0
+ ldr r1, [sp]
+ ldr r2, [sp, #0x18]
+ add r0, #0x2c
+ add r3, r4, #0
+ bl MOD64_021D8830
+ add r0, r5, #0
+ ldr r1, [sp, #0x1c]
+ ldr r2, [sp, #0x20]
+ add r0, #0x3c
+ add r3, r4, #0
+ bl MOD64_021D8830
+ mov r2, #0
+ str r2, [r5, #0x4c]
+ mov r0, #1
+ str r0, [r5, #0x50]
+ ldr r0, _021D8C90 ; =MOD64_021D8CC8
+ add r1, r5, #0
+ bl FUN_0200CA44
+ str r0, [r5, #0x54]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8C90: .word MOD64_021D8CC8
+ thumb_func_end MOD64_021D8C3C
+
+ thumb_func_start MOD64_021D8C94
+MOD64_021D8C94: ; 0x021D8C94
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x54]
+ cmp r0, #0
+ beq _021D8CA2
+ bl ErrorHandling
+_021D8CA2:
+ mov r0, #1
+ mvn r0, r0
+ str r0, [r4, #0x50]
+ ldr r1, [r4, #0x28]
+ ldr r0, [r4, #0x4c]
+ cmp r0, r1
+ blt _021D8CB6
+ ldr r0, [r4, #0x50]
+ add r0, r1, r0
+ str r0, [r4, #0x4c]
+_021D8CB6:
+ ldr r0, _021D8CC4 ; =MOD64_021D8CC8
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x54]
+ pop {r4, pc}
+ .align 2, 0
+_021D8CC4: .word MOD64_021D8CC8
+ thumb_func_end MOD64_021D8C94
+
+ thumb_func_start MOD64_021D8CC8
+MOD64_021D8CC8: ; 0x021D8CC8
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r6, r0, #0
+ add r0, r5, #0
+ ldr r1, [r5, #0x4c]
+ add r0, #0x1c
+ bl MOD64_021D883C
+ add r4, r0, #0
+ add r0, r5, #0
+ ldr r1, [r5, #0x4c]
+ add r0, #0x2c
+ bl MOD64_021D883C
+ add r0, r5, #0
+ ldr r1, [r5, #0x4c]
+ add r0, #0x3c
+ bl MOD64_021D883C
+ mov r2, #1
+ ldr r1, [r5, #0x1c]
+ lsl r2, r2, #0x12
+ sub r1, r1, r2
+ ldr r3, [r5, #0x2c]
+ lsl r1, r1, #4
+ sub r2, r3, r2
+ lsl r2, r2, #4
+ ldr r0, [r5, #8]
+ asr r1, r1, #0x10
+ asr r2, r2, #0x10
+ bl FUN_02013EC4
+ ldr r1, [r5, #0x3c]
+ ldr r0, [r5, #8]
+ add r2, r1, #0
+ bl FUN_02013EE0
+ cmp r4, #1
+ beq _021D8D1C
+ ldr r0, [r5, #0x4c]
+ cmp r0, #0
+ bge _021D8D26
+_021D8D1C:
+ add r0, r6, #0
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r5, #0x54]
+_021D8D26:
+ ldr r1, [r5, #0x4c]
+ ldr r0, [r5, #0x50]
+ add r0, r1, r0
+ str r0, [r5, #0x4c]
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD64_021D8CC8
+
+ thumb_func_start MOD64_021D8D30
+MOD64_021D8D30: ; 0x021D8D30
+ ldr r0, [r0, #0x54]
+ cmp r0, #0
+ bne _021D8D3A
+ mov r0, #1
+ bx lr
+_021D8D3A:
+ mov r0, #0
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD64_021D8D30
+
+ thumb_func_start MOD64_021D8D40
+MOD64_021D8D40: ; 0x021D8D40
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ ldr r0, [r5, #0x54]
+ mov r2, #1
+ lsl r0, r0, #3
+ add r1, r5, r0
+ ldr r0, [r1, #0x7c]
+ add r1, #0x80
+ lsl r6, r0, #0xc
+ ldr r0, [r1]
+ ldr r1, _021D8DAC ; =0x00000666
+ add r0, #0x30
+ lsl r4, r0, #0xc
+ mov r0, #6
+ lsl r0, r0, #0x10
+ str r0, [sp]
+ str r1, [sp, #4]
+ lsl r2, r2, #0xc
+ str r2, [sp, #8]
+ mov r0, #6
+ sub r1, #0x16
+ str r0, [sp, #0xc]
+ add r0, r5, r1
+ add r1, r6, #0
+ lsl r2, r2, #7
+ add r3, r4, #0
+ bl MOD64_021D8C3C
+ mov r0, #6
+ mov r3, #1
+ mov r1, #0x21
+ str r4, [sp]
+ lsl r0, r0, #0x10
+ str r0, [sp, #4]
+ ldr r0, _021D8DAC ; =0x00000666
+ lsl r3, r3, #0xc
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ mov r0, #6
+ str r0, [sp, #0x10]
+ ldr r2, [r5, #0x54]
+ lsl r1, r1, #4
+ lsl r2, r2, #2
+ add r0, r5, r1
+ add r2, r5, r2
+ sub r1, #0xc
+ ldr r1, [r2, r1]
+ add r2, r6, #0
+ lsl r3, r3, #7
+ bl MOD64_021D8DDC
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D8DAC: .word 0x00000666
+ thumb_func_end MOD64_021D8D40
+
+ thumb_func_start MOD64_021D8DB0
+MOD64_021D8DB0: ; 0x021D8DB0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x65
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD64_021D8C94
+ mov r0, #0x21
+ lsl r0, r0, #4
+ add r0, r4, r0
+ bl MOD64_021D8E34
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D8DB0
+
+ thumb_func_start MOD64_021D8DCC
+MOD64_021D8DCC: ; 0x021D8DCC
+ mov r1, #0x65
+ lsl r1, r1, #4
+ ldr r3, _021D8DD8 ; =MOD64_021D8D30
+ add r0, r0, r1
+ bx r3
+ nop
+_021D8DD8: .word MOD64_021D8D30
+ thumb_func_end MOD64_021D8DCC
+
+ thumb_func_start MOD64_021D8DDC
+MOD64_021D8DDC: ; 0x021D8DDC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x3c]
+ add r6, r1, #0
+ add r7, r2, #0
+ str r3, [sp]
+ cmp r0, #0
+ beq _021D8DF0
+ bl ErrorHandling
+_021D8DF0:
+ ldr r4, [sp, #0x28]
+ ldr r2, [sp]
+ add r0, r5, #4
+ add r1, r7, #0
+ add r3, r4, #0
+ bl MOD64_021D8830
+ add r0, r5, #0
+ ldr r1, [sp, #0x18]
+ ldr r2, [sp, #0x1c]
+ add r0, #0x14
+ add r3, r4, #0
+ bl MOD64_021D8830
+ add r0, r5, #0
+ ldr r1, [sp, #0x20]
+ ldr r2, [sp, #0x24]
+ add r0, #0x24
+ add r3, r4, #0
+ bl MOD64_021D8830
+ str r6, [r5]
+ mov r2, #0
+ str r2, [r5, #0x34]
+ mov r0, #1
+ str r0, [r5, #0x38]
+ ldr r0, _021D8E30 ; =MOD64_021D8E68
+ add r1, r5, #0
+ bl FUN_0200CA44
+ str r0, [r5, #0x3c]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8E30: .word MOD64_021D8E68
+ thumb_func_end MOD64_021D8DDC
+
+ thumb_func_start MOD64_021D8E34
+MOD64_021D8E34: ; 0x021D8E34
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x3c]
+ cmp r0, #0
+ beq _021D8E42
+ bl ErrorHandling
+_021D8E42:
+ mov r0, #1
+ mvn r0, r0
+ str r0, [r4, #0x38]
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x34]
+ cmp r0, r1
+ blt _021D8E56
+ ldr r0, [r4, #0x38]
+ add r0, r1, r0
+ str r0, [r4, #0x34]
+_021D8E56:
+ ldr r0, _021D8E64 ; =MOD64_021D8E68
+ add r1, r4, #0
+ mov r2, #0
+ bl FUN_0200CA44
+ str r0, [r4, #0x3c]
+ pop {r4, pc}
+ .align 2, 0
+_021D8E64: .word MOD64_021D8E68
+ thumb_func_end MOD64_021D8E34
+
+ thumb_func_start MOD64_021D8E68
+MOD64_021D8E68: ; 0x021D8E68
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r1, #0
+ ldr r1, [r5, #0x34]
+ add r7, r0, #0
+ add r0, r5, #4
+ bl MOD64_021D883C
+ add r6, r0, #0
+ add r0, r5, #0
+ ldr r1, [r5, #0x34]
+ add r0, #0x14
+ bl MOD64_021D883C
+ add r0, r5, #0
+ ldr r1, [r5, #0x34]
+ add r0, #0x24
+ bl MOD64_021D883C
+ ldr r2, [r5, #0x24]
+ asr r0, r2, #0x1f
+ lsr r1, r2, #0xc
+ lsl r0, r0, #0x14
+ lsl r3, r2, #0x14
+ mov r2, #2
+ orr r0, r1
+ mov r1, #0
+ lsl r2, r2, #0xa
+ add r2, r3, r2
+ adc r0, r1
+ lsl r0, r0, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r0
+ asr r4, r2, #0xc
+ ldr r2, [r5, #4]
+ ldr r0, [r5]
+ asr r2, r2, #0xc
+ bl FUN_02007558
+ ldr r2, [r5, #0x14]
+ ldr r0, [r5]
+ mov r1, #1
+ asr r2, r2, #0xc
+ bl FUN_02007558
+ ldr r0, [r5]
+ mov r1, #0xc
+ add r2, r4, #0
+ bl FUN_02007558
+ ldr r0, [r5]
+ mov r1, #0xd
+ add r2, r4, #0
+ bl FUN_02007558
+ cmp r6, #1
+ beq _021D8EDE
+ ldr r0, [r5, #0x34]
+ cmp r0, #0
+ bge _021D8EE8
+_021D8EDE:
+ add r0, r7, #0
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r5, #0x3c]
+_021D8EE8:
+ ldr r1, [r5, #0x34]
+ ldr r0, [r5, #0x38]
+ add r0, r1, r0
+ str r0, [r5, #0x34]
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D8E68
+
+ thumb_func_start MOD64_021D8EF4
+MOD64_021D8EF4: ; 0x021D8EF4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #0x14]
+ mov r0, #0x20
+ str r0, [sp]
+ add r0, r1, #0
+ str r1, [sp, #0x18]
+ str r0, [sp, #4]
+ mov r0, #0x52
+ mov r1, #0x11
+ mov r2, #0
+ mov r3, #0xa0
+ bl FUN_02006930
+ ldr r5, [sp, #0x14]
+ mov r4, #0
+ mov r6, #1
+_021D8F16:
+ ldr r0, [sp, #0x18]
+ mov r1, #1
+ bl FUN_02018FF4
+ add r1, r5, #0
+ add r1, #0x9c
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl FUN_0201901C
+ cmp r4, #0
+ beq _021D8F3C
+ cmp r4, #1
+ beq _021D8F44
+ cmp r4, #2
+ beq _021D8F4C
+ b _021D8F52
+_021D8F3C:
+ mov r0, #0xc
+ str r0, [sp, #0x1c]
+ mov r7, #4
+ b _021D8F52
+_021D8F44:
+ mov r0, #4
+ str r0, [sp, #0x1c]
+ mov r7, #0xe
+ b _021D8F52
+_021D8F4C:
+ mov r0, #0x14
+ str r0, [sp, #0x1c]
+ mov r7, #0xd
+_021D8F52:
+ lsl r0, r7, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0xb
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #5
+ str r0, [sp, #0xc]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #0x14]
+ add r1, r5, #0
+ ldr r3, [sp, #0x1c]
+ add r0, #0x94
+ add r1, #0x9c
+ lsl r3, r3, #0x18
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #3
+ lsr r3, r3, #0x18
+ bl FUN_02019064
+ ldr r0, _021D8FA8 ; =0x0001020A
+ mov r2, #5
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ ldr r1, [sp, #0x18]
+ lsl r2, r2, #6
+ add r3, r4, #4
+ bl MOD64_021D8FD0
+ add r4, r4, #1
+ add r5, r5, #4
+ add r6, #0x40
+ cmp r4, #3
+ blt _021D8F16
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8FA8: .word 0x0001020A
+ thumb_func_end MOD64_021D8EF4
+
+ thumb_func_start MOD64_021D8FAC
+MOD64_021D8FAC: ; 0x021D8FAC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021D8FB2:
+ add r0, r5, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl FUN_02019178
+ add r0, r5, #0
+ add r0, #0x9c
+ ldr r0, [r0]
+ bl FUN_02016A18
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021D8FB2
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD64_021D8FAC
+
+ thumb_func_start MOD64_021D8FD0
+MOD64_021D8FD0: ; 0x021D8FD0
+ push {r4, r5, r6, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r3, #0
+ mov r0, #0
+ mov r1, #0x1a
+ add r3, r4, #0
+ bl FUN_0200A86C
+ add r4, r0, #0
+ bne _021D8FEC
+ bl ErrorHandling
+_021D8FEC:
+ add r0, r4, #0
+ add r1, r6, #0
+ bl FUN_0200A914
+ ldr r1, [sp, #0x20]
+ add r6, r0, #0
+ lsl r1, r1, #0x18
+ add r0, r5, #0
+ lsr r1, r1, #0x18
+ bl FUN_02019620
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0xff
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x20]
+ add r2, r6, #0
+ str r0, [sp, #8]
+ add r0, r5, #0
+ mov r3, #1
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r6, #0
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_0200A8B8
+ add sp, #0x10
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD64_021D8FD0
+
+ thumb_func_start MOD64_021D902C
+MOD64_021D902C: ; 0x021D902C
+ add r1, r0, #0
+ add r1, #0xa8
+ ldr r1, [r1]
+ ldr r3, _021D9040 ; =0x02019571
+ lsl r1, r1, #2
+ add r0, r0, r1
+ add r0, #0x9c
+ ldr r0, [r0]
+ bx r3
+ nop
+_021D9040: .word 0x02019571
+ thumb_func_end MOD64_021D902C
+
+ thumb_func_start MOD64_021D9044
+MOD64_021D9044: ; 0x021D9044
+ push {r3, lr}
+ cmp r0, #0
+ beq _021D9054
+ cmp r0, #1
+ beq _021D9058
+ cmp r0, #2
+ beq _021D905C
+ b _021D9060
+_021D9054:
+ ldr r0, _021D9068 ; =0x00000183
+ pop {r3, pc}
+_021D9058:
+ ldr r0, _021D906C ; =0x00000186
+ pop {r3, pc}
+_021D905C:
+ ldr r0, _021D9070 ; =0x00000189
+ pop {r3, pc}
+_021D9060:
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+_021D9068: .word 0x00000183
+_021D906C: .word 0x00000186
+_021D9070: .word 0x00000189
+ thumb_func_end MOD64_021D9044
+
+ .section .rodata
+ ; 0x021D9074
+ .incbin "baserom.nds", 0x2B9194, 0x9C
+ ; 0x021D9110
diff --git a/arm9/src/FUN_02000DF4.c b/arm9/src/FUN_02000DF4.c
deleted file mode 100644
index 80e80b30..00000000
--- a/arm9/src/FUN_02000DF4.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "global.h"
-#include "main.h"
-
-extern struct Unk2106FA0 gBacklightTop;
-
-THUMB_FUNC void FUN_02000DF4(void)
-{
- gBacklightTop.unk8 = -1;
- gBacklightTop.unkC = 0;
- gBacklightTop.unk10 = -1;
- gBacklightTop.unk14 = 0;
-}
diff --git a/arm9/src/main.c b/arm9/src/main.c
index 73b63332..8c80d686 100644
--- a/arm9/src/main.c
+++ b/arm9/src/main.c
@@ -1,26 +1,73 @@
#include "global.h"
#include "main.h"
+#include "PAD_pad.h"
+#include "CARD_pullOut.h"
+#include "CARD_backup.h"
+#include "CTRDG_common.h"
+#include "poke_overlay.h"
+
+FS_EXTERN_OVERLAY(MODULE_52);
+FS_EXTERN_OVERLAY(MODULE_63);
+
+#define SOFT_RESET_KEY (PAD_BUTTON_L | PAD_BUTTON_R | PAD_BUTTON_START | PAD_BUTTON_SELECT)
-extern struct Unk2106FA0 gBacklightTop;
-extern struct Unk2106FA0 gBacklightTop_2; // same as the first one, it's referenced twice in the constant pool...
extern struct Unk21C48B8 gUnknown21C48B8;
-extern s32 gUnk027FFC20;
extern struct {
s32 unk0;
- s32 unk4;
+ u8 unk4;
+ u8 unk5;
+ u8 unk6;
+ u8 unk7;
u8 unk8;
} gUnk021C4918;
-extern void PM_GetBackLight();
extern void OS_WaitIrq();
extern void FUN_02016438(s32);
+extern void InitSystemForTheGame(void);
+extern void InitGraphicMemory(void);
+extern void FUN_020163BC(void);
+extern void FUN_02022294(void);
+extern void FUN_0201259C(void);
+extern void FUN_02000DF4(void);
+extern void FUN_02002C14(void);
+extern void FUN_02002C50(int, int);
+extern int FUN_0202254C(void);
+extern void FUN_02003B98(int, int);
+extern int FUN_02029EF8(int);
+extern int LoadPlayerDataAddress(int);
+extern void FUN_02020AFC(void);
+extern int FUN_020337E8(int);
+extern void FUN_02034188(int, int);
+extern int FUN_020227FC(int);
+extern void FUN_02089D90(int);
+extern void FUN_02000E7C(FSOverlayID, struct Unk21DBE18 *);
+extern void ErrorHandling(void);
+extern void FUN_02000FA4(void);
+extern void FUN_0200A2AC(void);
+extern void FUN_02015E30(void);
+extern void FUN_02000EE8(void);
+extern void FUN_02000FE8(void);
+extern void FUN_02016464(void);
+void DoSoftReset(u32 parameter);
+extern BOOL FUN_0202FB80(void);
+extern void FUN_02000E0C(void);
+extern void FUN_0201B5CC(int);
+extern void FUN_020125D4(void);
+extern void FUN_02015E60(void);
+extern void FUN_020222C4(void);
+extern void FUN_0200A318(void);
+extern void FUN_0200E2D8(void);
+extern void FUN_02003C10(void);
+void FUN_02000F4C(int arg0, int arg1);
+extern BOOL FUN_02006234(struct Unk21DBE18 *, s32 *, int);
+extern BOOL FUN_02006290(int);
+extern void FUN_02006260(int);
+extern BOOL FUN_02033678(void);
+extern int FUN_020335B8(void);
-extern const s32 CONST_3F; // 0x0000003F
-extern const s32 CONST_34; // 0x00000034
-
-extern struct Unk21DBE18 gUnk021DBE18;
-extern struct Unk21DBE18 gUnk021D76C8;
+extern struct Unk21DBE18 MOD63_UNK_021DBE18;
+extern struct Unk21DBE18 MOD52_UNK_021D76C8;
THUMB_FUNC void NitroMain(void)
@@ -30,7 +77,7 @@ THUMB_FUNC void NitroMain(void)
FUN_020163BC();
FUN_02016438(0);
- PM_GetBackLight(&gBacklightTop_2, 0);
+ PM_GetBackLight(&gBacklightTop_2.unk0, NULL);
FUN_02022294();
FUN_0201259C();
@@ -51,15 +98,15 @@ THUMB_FUNC void NitroMain(void)
}
else
{
- switch (gUnk027FFC20)
+ switch (*((s32 *)HW_RESET_PARAMETER_BUF))
{
case 0:
gBacklightTop.unk1C = 0;
- FUN_02000E7C(&CONST_3F, &gUnk021DBE18);
+ FUN_02000E7C(FS_OVERLAY_ID(MODULE_63), &MOD63_UNK_021DBE18);
break;
case 1:
gBacklightTop.unk1C = 1;
- FUN_02000E7C(&CONST_34, &gUnk021D76C8);
+ FUN_02000E7C(FS_OVERLAY_ID(MODULE_52), &MOD52_UNK_021D76C8);
break;
default:
ErrorHandling();
@@ -77,9 +124,9 @@ THUMB_FUNC void NitroMain(void)
FUN_02000EE8();
FUN_02000FE8();
FUN_02016464();
- if ((gUnknown21C48B8.unk38 & 0x30C) == 0x30C && !gUnk021C4918.unk8) // soft reset?
+ if ((gUnknown21C48B8.unk38 & SOFT_RESET_KEY) == SOFT_RESET_KEY && !gUnk021C4918.unk8) // soft reset?
{
- FUN_02000F18(0); // soft reset?
+ DoSoftReset(0); // soft reset?
}
if (FUN_0202FB80())
{
@@ -106,4 +153,199 @@ THUMB_FUNC void NitroMain(void)
FUN_02003C10();
FUN_0201B5CC(gUnknown21C48B8.unk20);
}
-} \ No newline at end of file
+}
+
+THUMB_FUNC void FUN_02000DF4(void)
+{
+ gBacklightTop.unk8 = -1;
+ gBacklightTop.unkC = 0;
+ gBacklightTop.unk10 = -1; // overlay invalid
+ gBacklightTop.unk14 = NULL;
+}
+
+THUMB_FUNC void FUN_02000E0C(void)
+{
+ if (!gBacklightTop.unkC)
+ {
+ if (gBacklightTop.unk14 == NULL)
+ return;
+ if (gBacklightTop.unk10 != -1u)
+ HandleLoadOverlay(gBacklightTop.unk10, 0);
+ gBacklightTop.unk8 = gBacklightTop.unk10;
+ gBacklightTop.unkC = FUN_02006234(gBacklightTop.unk14, &gBacklightTop.unk18, 0);
+ gBacklightTop.unk10 = -1u;
+ gBacklightTop.unk14 = NULL;
+ }
+ if (FUN_02006290(gBacklightTop.unkC))
+ {
+ FUN_02006260(gBacklightTop.unkC);
+ gBacklightTop.unkC = 0;
+ if (gBacklightTop.unk8 != -1u)
+ UnloadOverlayByID(gBacklightTop.unk8);
+ }
+}
+
+THUMB_FUNC void FUN_02000E7C(FSOverlayID id, struct Unk21DBE18 * arg1)
+{
+ if (gBacklightTop.unk14 != NULL)
+ ErrorHandling();
+ gBacklightTop.unk10 = id;
+ gBacklightTop.unk14 = arg1;
+}
+
+THUMB_FUNC void FUN_02000E9C(void)
+{
+ FUN_0202FB80();
+ OS_WaitIrq(1, 1);
+ gUnknown21C48B8.unk2C++;
+ gUnknown21C48B8.unk30 = 0;
+ if (gUnknown21C48B8.unk0 != NULL)
+ gUnknown21C48B8.unk0(gUnknown21C48B8.unk4);
+}
+
+THUMB_FUNC void FUN_02000EC8(u32 parameter)
+{
+ if (FUN_02033678() && CARD_TryWaitBackupAsync() == TRUE)
+ {
+ OS_ResetSystem(parameter);
+ }
+ FUN_02000E9C();
+}
+
+THUMB_FUNC void FUN_02000EE8(void)
+{
+ int r1 = FUN_020335B8();
+ switch (r1)
+ {
+ case 1:
+ FUN_02000F4C(1, r1);
+ break;
+ case 2:
+ FUN_02000F4C(0, r1);
+ break;
+ case 3:
+ FUN_02000F4C(1, r1);
+ break;
+ }
+}
+
+extern void FUN_0200E3A0(int, int);
+extern BOOL FUN_02032DAC(void);
+extern void FUN_020225F8(void);
+extern void FUN_0202287C(void);
+
+// No Return
+THUMB_FUNC void DoSoftReset(u32 parameter)
+{
+ FUN_0200E3A0(0, 0x7FFF);
+ FUN_0200E3A0(1, 0x7FFF);
+ if (FUN_02032DAC())
+ {
+ FUN_020225F8();
+ FUN_0202287C();
+ }
+ do
+ {
+ FUN_02000FE8();
+ FUN_02000EC8(parameter);
+ } while (1);
+}
+
+extern void FUN_02033F70(int, int, int);
+
+THUMB_FUNC void FUN_02000F4C(int arg0, int arg1)
+{
+ if (arg1 == 3)
+ {
+ FUN_02033F70(0, 3, 0);
+ }
+ else if (arg0 == 0)
+ {
+ FUN_02033F70(0, 2, 0);
+ }
+ else
+ {
+ FUN_02033F70(0, 0, 0);
+ }
+ FUN_02032DAC();
+ while (1)
+ {
+ FUN_02000FE8();
+ FUN_02016464();
+ if (gUnknown21C48B8.unk48 & 1)
+ break;
+ FUN_02000E9C();
+ }
+ DoSoftReset(arg0);
+}
+
+extern void FUN_0201265C(struct Unk21C4818 *, struct Unk21C4828 *);
+extern void FUN_0201BA1C(int);
+extern void FUN_0201B9E0(int);
+
+void FUN_02000FA4(void)
+{
+ struct Unk21C4818 spC;
+ struct Unk21C4828 sp0;
+ FUN_0201265C(&spC, &sp0);
+ {
+ int r4 = gUnknown21C48B8.unk2C;
+ int r5 = ((sp0.unk4 + sp0.unk8) << 24) + (spC.unk0 + ((256 * spC.unk4 * spC.unk8) << 16) + (sp0.unk0 << 16));
+ FUN_0201BA1C(r4 + r5);
+ FUN_0201B9E0(r4 + r5);
+ }
+}
+
+extern void FUN_0201CE04(void);
+extern void FUN_0201CDD0(void);
+
+void FUN_02000FE8(void)
+{
+ PMBackLightSwitch top, bottom;
+ if (PAD_DetectFold())
+ {
+ if (!gUnk021C4918.unk7)
+ {
+ FUN_0201CE04();
+ if (CTRDG_IsPulledOut() == TRUE)
+ {
+ gBacklightTop.unk4 = 1;
+ }
+ {
+ int r1 = gBacklightTop.unk4;
+ while (1)
+ {
+ PMWakeUpTrigger trigger = PM_TRIGGER_COVER_OPEN | PM_TRIGGER_CARD;
+ if (gUnk021C4918.unk6 && !r1)
+ trigger |= PM_TRIGGER_CARTRIDGE;
+ PM_GoSleepMode(trigger, PM_PAD_LOGIC_OR, 0);
+ if (CARD_IsPulledOut())
+ {
+ PM_ForceToPowerOff();
+ break;
+ }
+ else if (PAD_DetectFold())
+ {
+ r1 = gBacklightTop.unk4 = 1;
+ }
+ else
+ break;
+ }
+ FUN_0201CDD0();
+ return;
+ }
+ }
+ else
+ {
+ PM_GetBackLight(&top, &bottom);
+ if (top == PM_BACKLIGHT_ON)
+ PM_SetBackLight(PM_LCD_ALL, PM_BACKLIGHT_OFF);
+ }
+ }
+ else
+ {
+ PM_GetBackLight(&top, &bottom);
+ if (top == PM_BACKLIGHT_OFF)
+ PM_SetBackLight(PM_LCD_ALL, gBacklightTop.unk0);
+ }
+}
diff --git a/arm9/src/poke_overlay.c b/arm9/src/poke_overlay.c
new file mode 100644
index 00000000..4cf1ea67
--- /dev/null
+++ b/arm9/src/poke_overlay.c
@@ -0,0 +1,199 @@
+#include "global.h"
+#include "nitro.h"
+#include "FS_file.h"
+#include "poke_overlay.h"
+
+extern void ErrorHandling(void);
+
+struct LoadedOverlay {
+ FSOverlayID id;
+ BOOL active;
+};
+
+extern struct LoadedOverlay gLoadedOverlays[3][8];
+
+struct LoadedOverlay* GetLoadedOverlaysInRegion(int);
+BOOL GetOverlayRamBounds(FSOverlayID, void**, void**);
+BOOL CanOverlayBeLoaded(FSOverlayID);
+int GetOverlayLoadDestination(FSOverlayID);
+BOOL LoadOverlayNormal(MIProcessor, FSOverlayID);
+BOOL LoadOverlayNoInit(MIProcessor, FSOverlayID);
+BOOL LoadOverlayNoInitAsync(MIProcessor, FSOverlayID);
+
+THUMB_FUNC void FreeOverlayAllocation(struct LoadedOverlay * loaded)
+{
+ if (loaded->active != TRUE)
+ ErrorHandling();
+ if (FS_UnloadOverlay(MI_PROCESSOR_ARM9, loaded->id) != TRUE)
+ ErrorHandling();
+ loaded->active = FALSE;
+}
+
+THUMB_FUNC void UnloadOverlayByID(FSOverlayID id)
+{
+ struct LoadedOverlay * loaded = GetLoadedOverlaysInRegion(GetOverlayLoadDestination(id));
+ int i;
+ for (i = 0; i < 8; i++)
+ {
+ if (loaded[i].active == TRUE && loaded[i].id == id)
+ {
+ FreeOverlayAllocation(&loaded[i]);
+ break;
+ }
+ }
+}
+
+THUMB_FUNC int GetOverlayLoadDestination(FSOverlayID id)
+{
+ FSOverlayInfo info;
+ u8 *end;
+ u8 *start;
+ if (FS_LoadOverlayInfo(&info, MI_PROCESSOR_ARM9, id) != TRUE)
+ ErrorHandling();
+ start = (u8 *)HW_ITCM_IMAGE;
+ end = (u8 *)HW_ITCM_END;
+ if (info.header.ram_address <= end && info.header.ram_address >= start)
+ return OVERLAY_LOAD_ITCM;
+ start = (u8 *)SDK_AUTOLOAD_DTCM_START;
+ end = start + HW_DTCM_SIZE;
+ if (info.header.ram_address <= end && info.header.ram_address >= start)
+ return OVERLAY_LOAD_DTCM;
+ return OVERLAY_LOAD_WRAM;
+}
+
+THUMB_FUNC BOOL HandleLoadOverlay(FSOverlayID id, int a1)
+{
+ u32 sp0 = FS_DMA_NOT_USE;
+ struct LoadedOverlay *r3;
+ int r7;
+ int r6;
+ BOOL result;
+
+ if (!CanOverlayBeLoaded(id))
+ return FALSE;
+ r7 = GetOverlayLoadDestination(id);
+ r3 = GetLoadedOverlaysInRegion(r7);
+ for (r6 = 0; r6 < 8; r6++)
+ {
+ if (!r3[r6].active)
+ {
+ struct LoadedOverlay * ovly;
+ ovly = &r3[r6];
+ ovly->active = TRUE;
+ ovly->id = id;
+ break;
+ }
+ }
+ if (r6 >= 8)
+ {
+ ErrorHandling();
+ return FALSE;
+ }
+ if (r7 == OVERLAY_LOAD_ITCM || r7 == OVERLAY_LOAD_DTCM)
+ {
+ sp0 = FS_SetDefaultDMA(FS_DMA_NOT_USE);
+ }
+ switch (a1)
+ {
+ case 0:
+ result = LoadOverlayNormal(MI_PROCESSOR_ARM9, id);
+ break;
+ case 1:
+ result = LoadOverlayNoInit(MI_PROCESSOR_ARM9, id);
+ break;
+ case 2:
+ result = LoadOverlayNoInitAsync(MI_PROCESSOR_ARM9, id);
+ break;
+ default:
+ ErrorHandling();
+ return FALSE;
+ }
+ if (r7 == OVERLAY_LOAD_ITCM || r7 == OVERLAY_LOAD_DTCM)
+ {
+ FS_SetDefaultDMA(sp0);
+ }
+ if (result == 0)
+ {
+ ErrorHandling();
+ return FALSE;
+ }
+ return TRUE;
+}
+
+THUMB_FUNC BOOL CanOverlayBeLoaded(FSOverlayID id)
+{
+ void *start, *end, *start2, *end2;
+ struct LoadedOverlay *r5;
+ int i;
+ if (!GetOverlayRamBounds(id, &start, &end))
+ return FALSE;
+ r5 = GetLoadedOverlaysInRegion(GetOverlayLoadDestination(id));
+ for (i = 0; i < 8; i++)
+ {
+ if (r5[i].active == TRUE && GetOverlayRamBounds(r5[i].id, &start2, &end2) == TRUE)
+ {
+ if ((start >= start2 && start < end2) || (end > start2 && end <= end2) || (start <= start2 && end >= end2))
+ {
+ ErrorHandling();
+ return FALSE;
+ }
+ }
+ }
+ return TRUE;
+}
+
+THUMB_FUNC struct LoadedOverlay* GetLoadedOverlaysInRegion(int a0)
+{
+ switch (a0)
+ {
+ case OVERLAY_LOAD_WRAM:
+ default:
+ return gLoadedOverlays[0];
+ case OVERLAY_LOAD_ITCM:
+ return gLoadedOverlays[1];
+ case OVERLAY_LOAD_DTCM:
+ return gLoadedOverlays[2];
+ }
+}
+
+THUMB_FUNC BOOL GetOverlayRamBounds(FSOverlayID id, void ** start, void ** end)
+{
+ FSOverlayInfo info;
+ if (!FS_LoadOverlayInfo(&info, MI_PROCESSOR_ARM9, id)) {
+ ErrorHandling();
+ return FALSE;
+ }
+ *start = (void *)info.header.ram_address;
+ *end = (char *)*start + (info.header.ram_size + info.header.bss_size);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL LoadOverlayNormal(MIProcessor target, FSOverlayID id)
+{
+ return FS_LoadOverlay(target, id);
+}
+
+THUMB_FUNC BOOL LoadOverlayNoInit(MIProcessor target, FSOverlayID id)
+{
+ FSOverlayInfo info;
+ if (!FS_LoadOverlayInfo(&info, target, id))
+ return FALSE;
+ if (!FS_LoadOverlayImage(&info))
+ return FALSE;
+ FS_StartOverlay(&info);
+ return TRUE;
+}
+
+THUMB_FUNC BOOL LoadOverlayNoInitAsync(MIProcessor target, FSOverlayID id)
+{
+ FSOverlayInfo info;
+ FSFile file;
+ if (!FS_LoadOverlayInfo(&info, target, id))
+ return FALSE;
+ FS_InitFile(&file);
+ FS_LoadOverlayImageAsync(&info, &file);
+ FS_WaitAsync(&file);
+ FS_CloseFile(&file);
+ FS_StartOverlay(&info);
+ return TRUE;
+}
diff --git a/arm9/src/string_util.c b/arm9/src/string_util.c
index 6c949e88..e6ea85de 100644
--- a/arm9/src/string_util.c
+++ b/arm9/src/string_util.c
@@ -1,6 +1,9 @@
#include "global.h"
-u16 gDigitTable[] = {
+#define EOS 0xFFFF
+#define NON_DIGIT 0xE2
+
+const u16 gDigitTable[] = {
0xA2,
0xA3,
0xA4,
@@ -19,7 +22,7 @@ u16 gDigitTable[] = {
0xB1
};
-s32 gPowersOfTen[] = {
+const s32 gPowersOfTen[] = {
1,
10,
100,
@@ -32,8 +35,6 @@ s32 gPowersOfTen[] = {
1000000000,
};
-static const u16 EOS = 0xFFFF;
-
THUMB_FUNC void StringCopy(u16 *dest, const u16 *src)
{
u16 c = *src;
@@ -129,8 +130,6 @@ enum PrintingMode {
PAD_ZEROES
};
-const u16 NON_DIGIT = 0xE2;
-
THUMB_FUNC u16 *ConvertUIntToDecimalString(u16 *dest, u32 value, enum PrintingMode mode, u32 n)
{
for (u32 x = gPowersOfTen[n - 1]; x != 0; x = x / 10) {
diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt
index 6ab65d16..4cca1421 100644
--- a/arm9/undefined_syms.txt
+++ b/arm9/undefined_syms.txt
@@ -1,335 +1,5 @@
-SDK_SYS_STACKSIZE = 0x00000000;
-CONST_34 = 0x00000034;
-CONST_3F = 0x0000003F;
-SDK_IRQ_STACKSIZE = 0x00000400;
-
-// .data
-// FX
-FX_AtanTable_ = 0x02103A38;
-// 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;
-gUnknown21C48B8 = 0x021C48B8;
-gUnk021C4918 = 0x021C4918;
-gUnk021C8C70 = 0x021C8C70;
-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;
-OSiHeapInfo = 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_021D80E4 = 0x021D80E4;
-FUN_021D9320 = 0x021D9320;
-FUN_021D94B4 = 0x021D94B4;
-FUN_021D9510 = 0x021D9510;
-FUN_021DA03C = 0x021DA03C;
-FUN_021DA080 = 0x021DA080;
-FUN_021DA0DC = 0x021DA0DC;
-FUN_021DA0E0 = 0x021DA0E0;
-FUN_021DA0E8 = 0x021DA0E8;
-FUN_021DA118 = 0x021DA118;
-FUN_021DA138 = 0x021DA138;
-FUN_021DA1A0 = 0x021DA1A0;
-FUN_021DA1A4 = 0x021DA1A4;
-FUN_021DA1A8 = 0x021DA1A8;
-FUN_021DA20C = 0x021DA20C;
-FUN_021DA4BC = 0x021DA4BC;
-FUN_021DB44C = 0x021DB44C;
-FUN_021DB4B0 = 0x021DB4B0;
-FUN_021DB52C = 0x021DB52C;
-FUN_021DB53C = 0x021DB53C;
-FUN_021DBA40 = 0x021DBA40;
-FUN_021DBA78 = 0x021DBA78;
-FUN_021DBAA0 = 0x021DBAA0;
-FUN_021E4BE8 = 0x021E4BE8;
-FUN_021E4C00 = 0x021E4C00;
-FUN_021E4C08 = 0x021E4C08;
-FUN_021E4C20 = 0x021E4C20;
-FUN_021E4C24 = 0x021E4C24;
-FUN_021E4C6C = 0x021E4C6C;
-FUN_021E4DC4 = 0x021E4DC4;
-FUN_021E4E90 = 0x021E4E90;
-FUN_021E4EE4 = 0x021E4EE4;
-FUN_021E4EFC = 0x021E4EFC;
-FUN_021E506C = 0x021E506C;
-FUN_021E5078 = 0x021E5078;
-FUN_021E5094 = 0x021E5094;
-FUN_021E50A0 = 0x021E50A0;
-FUN_021E50AC = 0x021E50AC;
-FUN_021E50C8 = 0x021E50C8;
-FUN_021E50D4 = 0x021E50D4;
-FUN_021E5114 = 0x021E5114;
-FUN_021E5198 = 0x021E5198;
-FUN_021E51EC = 0x021E51EC;
-FUN_021E5224 = 0x021E5224;
-FUN_021E5260 = 0x021E5260;
-FUN_021E5294 = 0x021E5294;
-FUN_021E7C80 = 0x021E7C80;
-FUN_021E7E9C = 0x021E7E9C;
-FUN_021E7EC0 = 0x021E7EC0;
-FUN_021E7ECC = 0x021E7ECC;
-FUN_021E7EEC = 0x021E7EEC;
-FUN_021E8698 = 0x021E8698;
-FUN_021F0514 = 0x021F0514;
-FUN_021F1C1C = 0x021F1C1C;
-FUN_021F1C30 = 0x021F1C30;
-FUN_021F1E64 = 0x021F1E64;
-FUN_021F220C = 0x021F220C;
-FUN_021F51D0 = 0x021F51D0;
-FUN_021F522C = 0x021F522C;
-FUN_021F5268 = 0x021F5268;
-FUN_021F52C8 = 0x021F52C8;
-FUN_021F531C = 0x021F531C;
-FUN_021F5348 = 0x021F5348;
-FUN_021F5358 = 0x021F5358;
-FUN_021F5384 = 0x021F5384;
-FUN_021F53BC = 0x021F53BC;
-FUN_021F53F8 = 0x021F53F8;
-FUN_021F5400 = 0x021F5400;
-FUN_021F5424 = 0x021F5424;
-FUN_021F5430 = 0x021F5430;
-FUN_021F54CC = 0x021F54CC;
-FUN_021F54D0 = 0x021F54D0;
-FUN_021F54D8 = 0x021F54D8;
-FUN_021F61F4 = 0x021F61F4;
-FUN_021F6234 = 0x021F6234;
-FUN_021F6240 = 0x021F6240;
-FUN_021F6254 = 0x021F6254;
-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;
@@ -344,797 +14,536 @@ FUN_0222EDBC = 0x0222EDBC;
FUN_0222F440 = 0x0222F440;
FUN_0222F480 = 0x0222F480;
FUN_0222F7E0 = 0x0222F7E0;
-FUN_0222F990 = 0x0222F990;
-FUN_02230078 = 0x02230078;
-FUN_02230080 = 0x02230080;
-FUN_022300CC = 0x022300CC;
-FUN_022312D0 = 0x022312D0;
-FUN_02231504 = 0x02231504;
-FUN_02231534 = 0x02231534;
-FUN_02231678 = 0x02231678;
-FUN_02233560 = 0x02233560;
-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;
FUN_02213B08 = 0x02213B08;
FUN_02213D80 = 0x02213D80;
FUN_02213DBC = 0x02213DBC;
FUN_02213E24 = 0x02213E24;
-FUN_021D7A20 = 0x021D7A20;
-FUN_021D7A28 = 0x021D7A28;
-FUN_021E8648 = 0x021E8648;
-FUN_0223BA04 = 0x0223BA04;
-FUN_0223BE70 = 0x0223BE70;
-FUN_0223C08C = 0x0223C08C;
-FUN_0223CDB8 = 0x0223CDB8;
-FUN_0223D8F4 = 0x0223D8F4;
-FUN_0223DC98 = 0x0223DC98;
-FUN_0223DCB4 = 0x0223DCB4;
-FUN_0223DCD0 = 0x0223DCD0;
-FUN_0223E2C4 = 0x0223E2C4;
-FUN_0223E2DC = 0x0223E2DC;
-FUN_02242404 = 0x02242404;
-FUN_022426AC = 0x022426AC;
-FUN_02249B7C = 0x02249B7C;
-FUN_0224A130 = 0x0224A130;
-FUN_0224A6B8 = 0x0224A6B8;
-FUN_0224A6FC = 0x0224A6FC;
-FUN_0224A8D4 = 0x0224A8D4;
-FUN_0224AA40 = 0x0224AA40;
-FUN_0224ADF8 = 0x0224ADF8;
-FUN_0224AEE8 = 0x0224AEE8;
-FUN_0224AF68 = 0x0224AF68;
-FUN_0224ED94 = 0x0224ED94;
-FUN_0224EDA8 = 0x0224EDA8;
-FUN_0224F0BC = 0x0224F0BC;
-FUN_0224F0D0 = 0x0224F0D0;
-FUN_02252440 = 0x02252440;
-FUN_02252448 = 0x02252448;
-FUN_022524BC = 0x022524BC;
-FUN_022524D0 = 0x022524D0;
-FUN_022524DC = 0x022524DC;
-FUN_022524F4 = 0x022524F4;
-FUN_02252504 = 0x02252504;
-FUN_02254A68 = 0x02254A68;
-FUN_02254AB8 = 0x02254AB8;
-FUN_0223BD14 = 0x0223BD14;
-FUN_0222FF68 = 0x0222FF68;
-FUN_0222FF74 = 0x0222FF74;
-FUN_0222FF78 = 0x0222FF78;
-FUN_0222FF88 = 0x0222FF88;
-FUN_02230014 = 0x02230014;
-FUN_02230188 = 0x02230188;
-FUN_02230214 = 0x02230214;
-FUN_02230218 = 0x02230218;
-FUN_02230260 = 0x02230260;
-FUN_02230290 = 0x02230290;
-FUN_022302BC = 0x022302BC;
-FUN_02230370 = 0x02230370;
-FUN_02230E44 = 0x02230E44;
-FUN_02230E54 = 0x02230E54;
-FUN_02231238 = 0x02231238;
-FUN_0224C474 = 0x0224C474;
-FUN_0225D3EC = 0x0225D3EC;
-FUN_0225D45C = 0x0225D45C;
-FUN_0225D484 = 0x0225D484;
-FUN_0225D508 = 0x0225D508;
-FUN_0225D5DC = 0x0225D5DC;
-FUN_0225D648 = 0x0225D648;
-FUN_0225D6A4 = 0x0225D6A4;
-FUN_0225D714 = 0x0225D714;
-FUN_0225D73C = 0x0225D73C;
-FUN_0225D7B8 = 0x0225D7B8;
-FUN_0225D800 = 0x0225D800;
-FUN_0225D80C = 0x0225D80C;
-FUN_0225D820 = 0x0225D820;
-FUN_0225D824 = 0x0225D824;
-FUN_021EEF0C = 0x021EEF0C;
-FUN_021EEF68 = 0x021EEF68;
-FUN_021EEF84 = 0x021EEF84;
-FUN_021EEF98 = 0x021EEF98;
-FUN_021EEF9C = 0x021EEF9C;
-FUN_021EFBF4 = 0x021EFBF4;
-FUN_021EFD8C = 0x021EFD8C;
-FUN_021F45A4 = 0x021F45A4;
-FUN_021F4698 = 0x021F4698;
-FUN_021F4A30 = 0x021F4A30;
-FUN_02211E7C = 0x02211E7C;
-FUN_02211F5C = 0x02211F5C;
-FUN_02212024 = 0x02212024;
-FUN_02212048 = 0x02212048;
-FUN_02212384 = 0x02212384;
-FUN_022123A0 = 0x022123A0;
-FUN_022123B0 = 0x022123B0;
-FUN_022156C0 = 0x022156C0;
-FUN_0221590C = 0x0221590C;
-FUN_02215918 = 0x02215918;
-FUN_0221594C = 0x0221594C;
-FUN_02215988 = 0x02215988;
-FUN_02215A44 = 0x02215A44;
-FUN_022186F0 = 0x022186F0;
-
-// ???
-SDK_MAIN_ARENA_LO = 0x0225FFA0;
-
-// EWRAM
-SDK_SECTION_ARENA_EX_START = 0x023E0000;
-
-// DTCM
-gUnk027FFC20 = 0x027FFC20;
-
-SDK_AUTOLOAD_LIST = 0x02107700;
-SDK_AUTOLOAD_ITCM_START = 0x01FF8000;
-SDK_AUTOLOAD_ITCM_SIZE = 0x00000700;
-SDK_AUTOLOAD_ITCM_BSS_SIZE = 0x00000000;
-SDK_AUTOLOAD_DTCM_START = 0x027E0000;
-SDK_AUTOLOAD_DTCM_SIZE = 0x00000060;
-SDK_AUTOLOAD_DTCM_BSS_SIZE = 0x00000020;
-SDK_AUTOLOAD_EXT_START = 0x02400000;
-SDK_AUTOLOAD_EXT_SIZE = 0x00000000;
-SDK_AUTOLOAD_EXT_BSS_SIZE = 0x00000000;
-SDK_AUTOLOAD_LIST_END = 0x02107724;
// Overlay
-SDK_MODULE_00_START = 0x021D74E0;
-SDK_MODULE_00_SIZE = 0x00000020;
-SDK_MODULE_00_BSSSIZE = 0x00000000;
-SDK_MODULE_00_STATIC_INIT_START = 0x021D74E0;
-SDK_MODULE_00_STATIC_INIT_END = 0x021D74E4;
-SDK_MODULE_01_START = 0x021D74E0;
-SDK_MODULE_01_SIZE = 0x00000020;
-SDK_MODULE_01_BSSSIZE = 0x00000020;
-SDK_MODULE_01_STATIC_INIT_START = 0x021D74F0;
-SDK_MODULE_01_STATIC_INIT_END = 0x021D74F8;
-SDK_MODULE_02_START = 0x021D7520;
-SDK_MODULE_02_SIZE = 0x00000020;
-SDK_MODULE_02_BSSSIZE = 0x00000000;
-SDK_MODULE_02_STATIC_INIT_START = 0x021D7520;
-SDK_MODULE_02_STATIC_INIT_END = 0x021D7524;
-SDK_MODULE_03_START = 0x01FF8700;
-SDK_MODULE_03_SIZE = 0x00000020;
-SDK_MODULE_03_BSSSIZE = 0x00000000;
-SDK_MODULE_03_STATIC_INIT_START = 0x01FF8700;
-SDK_MODULE_03_STATIC_INIT_END = 0x01FF8704;
-SDK_MODULE_04_START = 0x021D74E0;
-SDK_MODULE_04_SIZE = 0x000386E0;
-SDK_MODULE_04_BSSSIZE = 0x000022A0;
-SDK_MODULE_04_STATIC_INIT_START = 0x0220BE94;
-SDK_MODULE_04_STATIC_INIT_END = 0x0220BE98;
-SDK_MODULE_05_START = 0x021D74E0;
-SDK_MODULE_05_SIZE = 0x000261A0;
-SDK_MODULE_05_BSSSIZE = 0x0003C020;
-SDK_MODULE_05_STATIC_INIT_START = 0x021FD1C8;
-SDK_MODULE_05_STATIC_INIT_END = 0x021FD1CC;
-SDK_MODULE_06_START = 0x022396A0;
-SDK_MODULE_06_SIZE = 0x00018D80;
-SDK_MODULE_06_BSSSIZE = 0x00000020;
-SDK_MODULE_06_STATIC_INIT_START = 0x02252228;
-SDK_MODULE_06_STATIC_INIT_END = 0x0225222C;
-SDK_MODULE_07_START = 0x02211E60;
-SDK_MODULE_07_SIZE = 0x000032E0;
-SDK_MODULE_07_BSSSIZE = 0x00000000;
-SDK_MODULE_07_STATIC_INIT_START = 0x02215134;
-SDK_MODULE_07_STATIC_INIT_END = 0x02215138;
-SDK_MODULE_08_START = 0x02211E60;
-SDK_MODULE_08_SIZE = 0x0001B760;
-SDK_MODULE_08_BSSSIZE = 0x00000000;
-SDK_MODULE_08_STATIC_INIT_START = 0x0222D598;
-SDK_MODULE_08_STATIC_INIT_END = 0x0222D59C;
-SDK_MODULE_09_START = 0x02211E60;
-SDK_MODULE_09_SIZE = 0x0000A1A0;
-SDK_MODULE_09_BSSSIZE = 0x00000000;
-SDK_MODULE_09_STATIC_INIT_START = 0x0221BFE8;
-SDK_MODULE_09_STATIC_INIT_END = 0x0221BFEC;
-SDK_MODULE_10_START = 0x021D74E0;
-SDK_MODULE_10_SIZE = 0x00000020;
-SDK_MODULE_10_BSSSIZE = 0x00000000;
-SDK_MODULE_10_STATIC_INIT_START = 0x021D74E0;
-SDK_MODULE_10_STATIC_INIT_END = 0x021D74E4;
-SDK_MODULE_11_START = 0x0222D5C0;
-SDK_MODULE_11_SIZE = 0x000329E0;
-SDK_MODULE_11_BSSSIZE = 0x00000000;
-SDK_MODULE_11_STATIC_INIT_START = 0x0225FF18;
-SDK_MODULE_11_STATIC_INIT_END = 0x0225FF20;
-SDK_MODULE_12_START = 0x0222D5C0;
-SDK_MODULE_12_SIZE = 0x00019260;
-SDK_MODULE_12_BSSSIZE = 0x00000000;
-SDK_MODULE_12_STATIC_INIT_START = 0x02246810;
-SDK_MODULE_12_STATIC_INIT_END = 0x02246818;
-SDK_MODULE_13_START = 0x02211E60;
-SDK_MODULE_13_SIZE = 0x0002EBE0;
-SDK_MODULE_13_BSSSIZE = 0x000027E0;
-SDK_MODULE_13_STATIC_INIT_START = 0x0223F768;
-SDK_MODULE_13_STATIC_INIT_END = 0x0223F76C;
-SDK_MODULE_14_START = 0x021D74E0;
-SDK_MODULE_14_SIZE = 0x0000F520;
-SDK_MODULE_14_BSSSIZE = 0x000001A0;
-SDK_MODULE_14_STATIC_INIT_START = 0x021E69C8;
-SDK_MODULE_14_STATIC_INIT_END = 0x021E69CC;
-SDK_MODULE_15_START = 0x021D74E0;
-SDK_MODULE_15_SIZE = 0x00004680;
-SDK_MODULE_15_BSSSIZE = 0x00000000;
-SDK_MODULE_15_STATIC_INIT_START = 0x021DBB5C;
-SDK_MODULE_15_STATIC_INIT_END = 0x021DBB60;
-SDK_MODULE_16_START = 0x021D74E0;
-SDK_MODULE_16_SIZE = 0x00028500;
-SDK_MODULE_16_BSSSIZE = 0x00000000;
-SDK_MODULE_16_STATIC_INIT_START = 0x021FF9C4;
-SDK_MODULE_16_STATIC_INIT_END = 0x021FF9C8;
-SDK_MODULE_17_START = 0x021D74E0;
-SDK_MODULE_17_SIZE = 0x00006E80;
-SDK_MODULE_17_BSSSIZE = 0x00000000;
-SDK_MODULE_17_STATIC_INIT_START = 0x021DE354;
-SDK_MODULE_17_STATIC_INIT_END = 0x021DE358;
-SDK_MODULE_18_START = 0x022396A0;
-SDK_MODULE_18_SIZE = 0x00017CE0;
-SDK_MODULE_18_BSSSIZE = 0x00000080;
-SDK_MODULE_18_STATIC_INIT_START = 0x02250858;
-SDK_MODULE_18_STATIC_INIT_END = 0x0225085C;
-SDK_MODULE_19_START = 0x02252440;
-SDK_MODULE_19_SIZE = 0x00000100;
-SDK_MODULE_19_BSSSIZE = 0x00000000;
-SDK_MODULE_19_STATIC_INIT_START = 0x02252524;
-SDK_MODULE_19_STATIC_INIT_END = 0x02252528;
-SDK_MODULE_20_START = 0x02252440;
-SDK_MODULE_20_SIZE = 0x00002400;
-SDK_MODULE_20_BSSSIZE = 0x00000000;
-SDK_MODULE_20_STATIC_INIT_START = 0x02254838;
-SDK_MODULE_20_STATIC_INIT_END = 0x0225483C;
-SDK_MODULE_21_START = 0x02254840;
-SDK_MODULE_21_SIZE = 0x000005C0;
-SDK_MODULE_21_BSSSIZE = 0x00000000;
-SDK_MODULE_21_STATIC_INIT_START = 0x02254DE8;
-SDK_MODULE_21_STATIC_INIT_END = 0x02254DF0;
-SDK_MODULE_22_START = 0x02254840;
-SDK_MODULE_22_SIZE = 0x00000F00;
-SDK_MODULE_22_BSSSIZE = 0x00000000;
-SDK_MODULE_22_STATIC_INIT_START = 0x02255730;
-SDK_MODULE_22_STATIC_INIT_END = 0x02255738;
-SDK_MODULE_23_START = 0x02254840;
-SDK_MODULE_23_SIZE = 0x00001900;
-SDK_MODULE_23_BSSSIZE = 0x00000000;
-SDK_MODULE_23_STATIC_INIT_START = 0x02256128;
-SDK_MODULE_23_STATIC_INIT_END = 0x02256130;
-SDK_MODULE_24_START = 0x02254840;
-SDK_MODULE_24_SIZE = 0x000009A0;
-SDK_MODULE_24_BSSSIZE = 0x00000000;
-SDK_MODULE_24_STATIC_INIT_START = 0x022551C0;
-SDK_MODULE_24_STATIC_INIT_END = 0x022551C8;
-SDK_MODULE_25_START = 0x02254840;
-SDK_MODULE_25_SIZE = 0x00000560;
-SDK_MODULE_25_BSSSIZE = 0x00000000;
-SDK_MODULE_25_STATIC_INIT_START = 0x02254D80;
-SDK_MODULE_25_STATIC_INIT_END = 0x02254D88;
-SDK_MODULE_26_START = 0x02254840;
-SDK_MODULE_26_SIZE = 0x00000800;
-SDK_MODULE_26_BSSSIZE = 0x00000000;
-SDK_MODULE_26_STATIC_INIT_START = 0x02255020;
-SDK_MODULE_26_STATIC_INIT_END = 0x02255028;
-SDK_MODULE_27_START = 0x02254840;
-SDK_MODULE_27_SIZE = 0x00000BA0;
-SDK_MODULE_27_BSSSIZE = 0x00000000;
-SDK_MODULE_27_STATIC_INIT_START = 0x022553C4;
-SDK_MODULE_27_STATIC_INIT_END = 0x022553CC;
-SDK_MODULE_28_START = 0x02254840;
-SDK_MODULE_28_SIZE = 0x00001780;
-SDK_MODULE_28_BSSSIZE = 0x00000000;
-SDK_MODULE_28_STATIC_INIT_START = 0x02255F18;
-SDK_MODULE_28_STATIC_INIT_END = 0x02255F20;
-SDK_MODULE_29_START = 0x02254840;
-SDK_MODULE_29_SIZE = 0x00000900;
-SDK_MODULE_29_BSSSIZE = 0x00000000;
-SDK_MODULE_29_STATIC_INIT_START = 0x0225512C;
-SDK_MODULE_29_STATIC_INIT_END = 0x02255134;
-SDK_MODULE_30_START = 0x02254840;
-SDK_MODULE_30_SIZE = 0x00000600;
-SDK_MODULE_30_BSSSIZE = 0x00000000;
-SDK_MODULE_30_STATIC_INIT_START = 0x02254E28;
-SDK_MODULE_30_STATIC_INIT_END = 0x02254E30;
-SDK_MODULE_31_START = 0x02254840;
-SDK_MODULE_31_SIZE = 0x00000600;
-SDK_MODULE_31_BSSSIZE = 0x00000000;
-SDK_MODULE_31_STATIC_INIT_START = 0x02254E20;
-SDK_MODULE_31_STATIC_INIT_END = 0x02254E28;
-SDK_MODULE_32_START = 0x02254840;
-SDK_MODULE_32_SIZE = 0x000004A0;
-SDK_MODULE_32_BSSSIZE = 0x00000000;
-SDK_MODULE_32_STATIC_INIT_START = 0x02254CC4;
-SDK_MODULE_32_STATIC_INIT_END = 0x02254CCC;
-SDK_MODULE_33_START = 0x02254840;
-SDK_MODULE_33_SIZE = 0x00000320;
-SDK_MODULE_33_BSSSIZE = 0x00000000;
-SDK_MODULE_33_STATIC_INIT_START = 0x02254B40;
-SDK_MODULE_33_STATIC_INIT_END = 0x02254B48;
-SDK_MODULE_34_START = 0x02254840;
-SDK_MODULE_34_SIZE = 0x000004C0;
-SDK_MODULE_34_BSSSIZE = 0x00000000;
-SDK_MODULE_34_STATIC_INIT_START = 0x02254CF8;
-SDK_MODULE_34_STATIC_INIT_END = 0x02254D00;
-SDK_MODULE_35_START = 0x02254840;
-SDK_MODULE_35_SIZE = 0x000009A0;
-SDK_MODULE_35_BSSSIZE = 0x00000000;
-SDK_MODULE_35_STATIC_INIT_START = 0x022551C0;
-SDK_MODULE_35_STATIC_INIT_END = 0x022551C8;
-SDK_MODULE_36_START = 0x02254840;
-SDK_MODULE_36_SIZE = 0x00000CC0;
-SDK_MODULE_36_BSSSIZE = 0x00000000;
-SDK_MODULE_36_STATIC_INIT_START = 0x022554F8;
-SDK_MODULE_36_STATIC_INIT_END = 0x02255500;
-SDK_MODULE_37_START = 0x02254840;
-SDK_MODULE_37_SIZE = 0x00000560;
-SDK_MODULE_37_BSSSIZE = 0x00000020;
-SDK_MODULE_37_STATIC_INIT_START = 0x02254D90;
-SDK_MODULE_37_STATIC_INIT_END = 0x02254D98;
-SDK_MODULE_38_START = 0x02254840;
-SDK_MODULE_38_SIZE = 0x00000B40;
-SDK_MODULE_38_BSSSIZE = 0x00000000;
-SDK_MODULE_38_STATIC_INIT_START = 0x02255360;
-SDK_MODULE_38_STATIC_INIT_END = 0x02255368;
-SDK_MODULE_39_START = 0x02254840;
-SDK_MODULE_39_SIZE = 0x00000CC0;
-SDK_MODULE_39_BSSSIZE = 0x00000000;
-SDK_MODULE_39_STATIC_INIT_START = 0x022554E4;
-SDK_MODULE_39_STATIC_INIT_END = 0x022554EC;
-SDK_MODULE_40_START = 0x02254840;
-SDK_MODULE_40_SIZE = 0x00000C60;
-SDK_MODULE_40_BSSSIZE = 0x00000000;
-SDK_MODULE_40_STATIC_INIT_START = 0x02255480;
-SDK_MODULE_40_STATIC_INIT_END = 0x02255488;
-SDK_MODULE_41_START = 0x02254840;
-SDK_MODULE_41_SIZE = 0x00001140;
-SDK_MODULE_41_BSSSIZE = 0x00000000;
-SDK_MODULE_41_STATIC_INIT_START = 0x02255974;
-SDK_MODULE_41_STATIC_INIT_END = 0x0225597C;
-SDK_MODULE_42_START = 0x02254840;
-SDK_MODULE_42_SIZE = 0x00000900;
-SDK_MODULE_42_BSSSIZE = 0x00000000;
-SDK_MODULE_42_STATIC_INIT_START = 0x0225511C;
-SDK_MODULE_42_STATIC_INIT_END = 0x02255124;
-SDK_MODULE_43_START = 0x02254840;
-SDK_MODULE_43_SIZE = 0x000009C0;
-SDK_MODULE_43_BSSSIZE = 0x00000000;
-SDK_MODULE_43_STATIC_INIT_START = 0x022551EC;
-SDK_MODULE_43_STATIC_INIT_END = 0x022551F4;
-SDK_MODULE_44_START = 0x02254840;
-SDK_MODULE_44_SIZE = 0x000004A0;
-SDK_MODULE_44_BSSSIZE = 0x00000000;
-SDK_MODULE_44_STATIC_INIT_START = 0x02254CBC;
-SDK_MODULE_44_STATIC_INIT_END = 0x02254CC4;
-SDK_MODULE_45_START = 0x02254840;
-SDK_MODULE_45_SIZE = 0x00000940;
-SDK_MODULE_45_BSSSIZE = 0x00000000;
-SDK_MODULE_45_STATIC_INIT_START = 0x02255170;
-SDK_MODULE_45_STATIC_INIT_END = 0x02255178;
-SDK_MODULE_46_START = 0x02254840;
-SDK_MODULE_46_SIZE = 0x00000320;
-SDK_MODULE_46_BSSSIZE = 0x00000000;
-SDK_MODULE_46_STATIC_INIT_START = 0x02254B40;
-SDK_MODULE_46_STATIC_INIT_END = 0x02254B48;
-SDK_MODULE_47_START = 0x02254840;
-SDK_MODULE_47_SIZE = 0x00000CA0;
-SDK_MODULE_47_BSSSIZE = 0x00000000;
-SDK_MODULE_47_STATIC_INIT_START = 0x022554BC;
-SDK_MODULE_47_STATIC_INIT_END = 0x022554C4;
-SDK_MODULE_48_START = 0x02254840;
-SDK_MODULE_48_SIZE = 0x000008A0;
-SDK_MODULE_48_BSSSIZE = 0x00000000;
-SDK_MODULE_48_STATIC_INIT_START = 0x022550D0;
-SDK_MODULE_48_STATIC_INIT_END = 0x022550D8;
-SDK_MODULE_49_START = 0x02254840;
-SDK_MODULE_49_SIZE = 0x00000600;
-SDK_MODULE_49_BSSSIZE = 0x00000000;
-SDK_MODULE_49_STATIC_INIT_START = 0x02254E20;
-SDK_MODULE_49_STATIC_INIT_END = 0x02254E28;
-SDK_MODULE_50_START = 0x02254840;
-SDK_MODULE_50_SIZE = 0x00000320;
-SDK_MODULE_50_BSSSIZE = 0x00000000;
-SDK_MODULE_50_STATIC_INIT_START = 0x02254B50;
-SDK_MODULE_50_STATIC_INIT_END = 0x02254B58;
-SDK_MODULE_51_START = 0x02254840;
-SDK_MODULE_51_SIZE = 0x00000FC0;
-SDK_MODULE_51_BSSSIZE = 0x00000020;
-SDK_MODULE_51_STATIC_INIT_START = 0x022557E0;
-SDK_MODULE_51_STATIC_INIT_END = 0x022557E4;
-SDK_MODULE_52_START = 0x021D74E0;
-SDK_MODULE_52_SIZE = 0x00000400;
-SDK_MODULE_52_BSSSIZE = 0x00000000;
-SDK_MODULE_52_STATIC_INIT_START = 0x021D78D0;
-SDK_MODULE_52_STATIC_INIT_END = 0x021D78D4;
-SDK_MODULE_53_START = 0x021D74E0;
-SDK_MODULE_53_SIZE = 0x00002480;
-SDK_MODULE_53_BSSSIZE = 0x00000000;
-SDK_MODULE_53_STATIC_INIT_START = 0x021D9888;
-SDK_MODULE_53_STATIC_INIT_END = 0x021D988C;
-SDK_MODULE_54_START = 0x021D74E0;
-SDK_MODULE_54_SIZE = 0x00002380;
-SDK_MODULE_54_BSSSIZE = 0x00000000;
-SDK_MODULE_54_STATIC_INIT_START = 0x021D97D4;
-SDK_MODULE_54_STATIC_INIT_END = 0x021D97D8;
-SDK_MODULE_55_START = 0x021D74E0;
-SDK_MODULE_55_SIZE = 0x00003040;
-SDK_MODULE_55_BSSSIZE = 0x00000000;
-SDK_MODULE_55_STATIC_INIT_START = 0x021DA480;
-SDK_MODULE_55_STATIC_INIT_END = 0x021DA484;
-SDK_MODULE_56_START = 0x02211E60;
-SDK_MODULE_56_SIZE = 0x000047A0;
-SDK_MODULE_56_BSSSIZE = 0x00000000;
-SDK_MODULE_56_STATIC_INIT_START = 0x0221647C;
-SDK_MODULE_56_STATIC_INIT_END = 0x02216480;
-SDK_MODULE_57_START = 0x021D74E0;
-SDK_MODULE_57_SIZE = 0x00002540;
-SDK_MODULE_57_BSSSIZE = 0x00000000;
-SDK_MODULE_57_STATIC_INIT_START = 0x021D9A10;
-SDK_MODULE_57_STATIC_INIT_END = 0x021D9A14;
-SDK_MODULE_58_START = 0x021D9A20;
-SDK_MODULE_58_SIZE = 0x000015A0;
-SDK_MODULE_58_BSSSIZE = 0x00000000;
-SDK_MODULE_58_STATIC_INIT_START = 0x021DAF94;
-SDK_MODULE_58_STATIC_INIT_END = 0x021DAF98;
-SDK_MODULE_59_START = 0x021D74E0;
-SDK_MODULE_59_SIZE = 0x00002C20;
-SDK_MODULE_59_BSSSIZE = 0x00000000;
-SDK_MODULE_59_STATIC_INIT_START = 0x021DA0FC;
-SDK_MODULE_59_STATIC_INIT_END = 0x021DA100;
-SDK_MODULE_60_START = 0x021D74E0;
-SDK_MODULE_60_SIZE = 0x00000D00;
-SDK_MODULE_60_BSSSIZE = 0x00000000;
-SDK_MODULE_60_STATIC_INIT_START = 0x021D81D8;
-SDK_MODULE_60_STATIC_INIT_END = 0x021D81DC;
-SDK_MODULE_61_START = 0x021D74E0;
-SDK_MODULE_61_SIZE = 0x00001080;
-SDK_MODULE_61_BSSSIZE = 0x00000000;
-SDK_MODULE_61_STATIC_INIT_START = 0x021D8554;
-SDK_MODULE_61_STATIC_INIT_END = 0x021D8558;
-SDK_MODULE_62_START = 0x0222D5C0;
-SDK_MODULE_62_SIZE = 0x00003DE0;
-SDK_MODULE_62_BSSSIZE = 0x00000000;
-SDK_MODULE_62_STATIC_INIT_START = 0x02231380;
-SDK_MODULE_62_STATIC_INIT_END = 0x02231388;
-SDK_MODULE_63_START = 0x021D74E0;
-SDK_MODULE_63_SIZE = 0x00004AC0;
-SDK_MODULE_63_BSSSIZE = 0x00000020;
-SDK_MODULE_63_STATIC_INIT_START = 0x021DBF20;
-SDK_MODULE_63_STATIC_INIT_END = 0x021DBF24;
-SDK_MODULE_64_START = 0x021D74E0;
-SDK_MODULE_64_SIZE = 0x00001C40;
-SDK_MODULE_64_BSSSIZE = 0x00000000;
-SDK_MODULE_64_STATIC_INIT_START = 0x021D9110;
-SDK_MODULE_64_STATIC_INIT_END = 0x021D9114;
-SDK_MODULE_65_START = 0x021D74E0;
-SDK_MODULE_65_SIZE = 0x00003000;
-SDK_MODULE_65_BSSSIZE = 0x00000000;
-SDK_MODULE_65_STATIC_INIT_START = 0x021DA428;
-SDK_MODULE_65_STATIC_INIT_END = 0x021DA42C;
-SDK_MODULE_66_START = 0x021D74E0;
-SDK_MODULE_66_SIZE = 0x00002660;
-SDK_MODULE_66_BSSSIZE = 0x00000000;
-SDK_MODULE_66_STATIC_INIT_START = 0x021D9A9C;
-SDK_MODULE_66_STATIC_INIT_END = 0x021D9AA0;
-SDK_MODULE_67_START = 0x021D74E0;
-SDK_MODULE_67_SIZE = 0x00002440;
-SDK_MODULE_67_BSSSIZE = 0x00000000;
-SDK_MODULE_67_STATIC_INIT_START = 0x021D9918;
-SDK_MODULE_67_STATIC_INIT_END = 0x021D991C;
-SDK_MODULE_68_START = 0x021D74E0;
-SDK_MODULE_68_SIZE = 0x00001600;
-SDK_MODULE_68_BSSSIZE = 0x00000000;
-SDK_MODULE_68_STATIC_INIT_START = 0x021D8AD4;
-SDK_MODULE_68_STATIC_INIT_END = 0x021D8AD8;
-SDK_MODULE_69_START = 0x0222D5C0;
-SDK_MODULE_69_SIZE = 0x000023A0;
-SDK_MODULE_69_BSSSIZE = 0x00000020;
-SDK_MODULE_69_STATIC_INIT_START = 0x0222F93C;
-SDK_MODULE_69_STATIC_INIT_END = 0x0222F940;
-SDK_MODULE_70_START = 0x021D74E0;
-SDK_MODULE_70_SIZE = 0x00000E20;
-SDK_MODULE_70_BSSSIZE = 0x00000000;
-SDK_MODULE_70_STATIC_INIT_START = 0x021D82DC;
-SDK_MODULE_70_STATIC_INIT_END = 0x021D82E0;
-SDK_MODULE_71_START = 0x0222D5C0;
-SDK_MODULE_71_SIZE = 0x00003EC0;
-SDK_MODULE_71_BSSSIZE = 0x00000000;
-SDK_MODULE_71_STATIC_INIT_START = 0x0223147C;
-SDK_MODULE_71_STATIC_INIT_END = 0x02231480;
-SDK_MODULE_72_START = 0x021D74E0;
-SDK_MODULE_72_SIZE = 0x00000020;
-SDK_MODULE_72_BSSSIZE = 0x00000000;
-SDK_MODULE_72_STATIC_INIT_START = 0x021D74E0;
-SDK_MODULE_72_STATIC_INIT_END = 0x021D74E4;
-SDK_MODULE_73_START = 0x021D74E0;
-SDK_MODULE_73_SIZE = 0x00004AE0;
-SDK_MODULE_73_BSSSIZE = 0x00000000;
-SDK_MODULE_73_STATIC_INIT_START = 0x021DBF70;
-SDK_MODULE_73_STATIC_INIT_END = 0x021DBF74;
-SDK_MODULE_74_START = 0x021D74E0;
-SDK_MODULE_74_SIZE = 0x00001220;
-SDK_MODULE_74_BSSSIZE = 0x00000000;
-SDK_MODULE_74_STATIC_INIT_START = 0x021D8664;
-SDK_MODULE_74_STATIC_INIT_END = 0x021D8668;
-SDK_MODULE_75_START = 0x021E6BA0;
-SDK_MODULE_75_SIZE = 0x00005DE0;
-SDK_MODULE_75_BSSSIZE = 0x00000000;
-SDK_MODULE_75_STATIC_INIT_START = 0x021EC97C;
-SDK_MODULE_75_STATIC_INIT_END = 0x021EC980;
-SDK_MODULE_76_START = 0x021D74E0;
-SDK_MODULE_76_SIZE = 0x00001E20;
-SDK_MODULE_76_BSSSIZE = 0x00000000;
-SDK_MODULE_76_STATIC_INIT_START = 0x021D92E0;
-SDK_MODULE_76_STATIC_INIT_END = 0x021D92E4;
-SDK_MODULE_77_START = 0x021D74E0;
-SDK_MODULE_77_SIZE = 0x00001BE0;
-SDK_MODULE_77_BSSSIZE = 0x00000000;
-SDK_MODULE_77_STATIC_INIT_START = 0x021D90AC;
-SDK_MODULE_77_STATIC_INIT_END = 0x021D90B0;
-SDK_MODULE_78_START = 0x021D74E0;
-SDK_MODULE_78_SIZE = 0x00000460;
-SDK_MODULE_78_BSSSIZE = 0x00000000;
-SDK_MODULE_78_STATIC_INIT_START = 0x021D78F8;
-SDK_MODULE_78_STATIC_INIT_END = 0x021D78FC;
-SDK_MODULE_79_START = 0x02211E60;
-SDK_MODULE_79_SIZE = 0x000052C0;
-SDK_MODULE_79_BSSSIZE = 0x00000040;
-SDK_MODULE_79_STATIC_INIT_START = 0x02216748;
-SDK_MODULE_79_STATIC_INIT_END = 0x0221674C;
-SDK_MODULE_80_START = 0x0222D5C0;
-SDK_MODULE_80_SIZE = 0x0000A720;
-SDK_MODULE_80_BSSSIZE = 0x00000160;
-SDK_MODULE_80_STATIC_INIT_START = 0x02237670;
-SDK_MODULE_80_STATIC_INIT_END = 0x02237674;
-SDK_MODULE_81_START = 0x02237E40;
-SDK_MODULE_81_SIZE = 0x00005580;
-SDK_MODULE_81_BSSSIZE = 0x000000A0;
-SDK_MODULE_81_STATIC_INIT_START = 0x0223D39C;
-SDK_MODULE_81_STATIC_INIT_END = 0x0223D3A0;
-SDK_MODULE_82_START = 0x0222D5C0;
-SDK_MODULE_82_SIZE = 0x00002540;
-SDK_MODULE_82_BSSSIZE = 0x00000120;
-SDK_MODULE_82_STATIC_INIT_START = 0x0222F8CC;
-SDK_MODULE_82_STATIC_INIT_END = 0x0222F8D0;
-SDK_MODULE_83_START = 0x0222D5C0;
-SDK_MODULE_83_SIZE = 0x0000E2A0;
-SDK_MODULE_83_BSSSIZE = 0x00001980;
-SDK_MODULE_83_STATIC_INIT_START = 0x0223A77C;
-SDK_MODULE_83_STATIC_INIT_END = 0x0223A780;
-SDK_MODULE_84_START = 0x021D74E0;
-SDK_MODULE_84_SIZE = 0x00003920;
-SDK_MODULE_84_BSSSIZE = 0x00000000;
-SDK_MODULE_84_STATIC_INIT_START = 0x021DADE4;
-SDK_MODULE_84_STATIC_INIT_END = 0x021DADE8;
-SDK_MODULE_85_START = 0x021D74E0;
-SDK_MODULE_85_SIZE = 0x00009100;
-SDK_MODULE_85_BSSSIZE = 0x00000000;
-SDK_MODULE_85_STATIC_INIT_START = 0x021E05A0;
-SDK_MODULE_85_STATIC_INIT_END = 0x021E05A4;
-SDK_MODULE_86_START = 0x021D74E0;
-SDK_MODULE_86_SIZE = 0x00000820;
-SDK_MODULE_86_BSSSIZE = 0x00000000;
-SDK_MODULE_86_STATIC_INIT_START = 0x021D7CE4;
-SDK_MODULE_86_STATIC_INIT_END = 0x021D7CE8;
+SDK_OVERLAY_MODULE_00_ID = 0;
+SDK_OVERLAY_MODULE_00_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_00_SIZE = 0x00000020;
+SDK_OVERLAY_MODULE_00_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_00_STATIC_INIT_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_00_STATIC_INIT_END = 0x021D74E4;
+SDK_OVERLAY_MODULE_01_ID = 1;
+SDK_OVERLAY_MODULE_01_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_01_SIZE = 0x00000020;
+SDK_OVERLAY_MODULE_01_BSSSIZE = 0x00000020;
+SDK_OVERLAY_MODULE_01_STATIC_INIT_START = 0x021D74F0;
+SDK_OVERLAY_MODULE_01_STATIC_INIT_END = 0x021D74F8;
+SDK_OVERLAY_MODULE_02_ID = 2;
+SDK_OVERLAY_MODULE_02_START = 0x021D7520;
+SDK_OVERLAY_MODULE_02_SIZE = 0x00000020;
+SDK_OVERLAY_MODULE_02_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_02_STATIC_INIT_START = 0x021D7520;
+SDK_OVERLAY_MODULE_02_STATIC_INIT_END = 0x021D7524;
+SDK_OVERLAY_MODULE_03_ID = 3;
+SDK_OVERLAY_MODULE_03_START = 0x01FF8700;
+SDK_OVERLAY_MODULE_03_SIZE = 0x00000020;
+SDK_OVERLAY_MODULE_03_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_03_STATIC_INIT_START = 0x01FF8700;
+SDK_OVERLAY_MODULE_03_STATIC_INIT_END = 0x01FF8704;
+SDK_OVERLAY_MODULE_04_ID = 4;
+SDK_OVERLAY_MODULE_04_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_04_SIZE = 0x000386E0;
+SDK_OVERLAY_MODULE_04_BSSSIZE = 0x000022A0;
+SDK_OVERLAY_MODULE_04_STATIC_INIT_START = 0x0220BE94;
+SDK_OVERLAY_MODULE_04_STATIC_INIT_END = 0x0220BE98;
+SDK_OVERLAY_MODULE_05_ID = 5;
+SDK_OVERLAY_MODULE_05_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_05_SIZE = 0x000261A0;
+SDK_OVERLAY_MODULE_05_BSSSIZE = 0x0003C020;
+SDK_OVERLAY_MODULE_05_STATIC_INIT_START = 0x021FD1C8;
+SDK_OVERLAY_MODULE_05_STATIC_INIT_END = 0x021FD1CC;
+SDK_OVERLAY_MODULE_06_ID = 6;
+SDK_OVERLAY_MODULE_06_START = 0x022396A0;
+SDK_OVERLAY_MODULE_06_SIZE = 0x00018D80;
+SDK_OVERLAY_MODULE_06_BSSSIZE = 0x00000020;
+SDK_OVERLAY_MODULE_06_STATIC_INIT_START = 0x02252228;
+SDK_OVERLAY_MODULE_06_STATIC_INIT_END = 0x0225222C;
+SDK_OVERLAY_MODULE_07_ID = 7;
+SDK_OVERLAY_MODULE_07_START = 0x02211E60;
+SDK_OVERLAY_MODULE_07_SIZE = 0x000032E0;
+SDK_OVERLAY_MODULE_07_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_07_STATIC_INIT_START = 0x02215134;
+SDK_OVERLAY_MODULE_07_STATIC_INIT_END = 0x02215138;
+SDK_OVERLAY_MODULE_08_ID = 8;
+SDK_OVERLAY_MODULE_08_START = 0x02211E60;
+SDK_OVERLAY_MODULE_08_SIZE = 0x0001B760;
+SDK_OVERLAY_MODULE_08_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_08_STATIC_INIT_START = 0x0222D598;
+SDK_OVERLAY_MODULE_08_STATIC_INIT_END = 0x0222D59C;
+SDK_OVERLAY_MODULE_09_ID = 9;
+SDK_OVERLAY_MODULE_09_START = 0x02211E60;
+SDK_OVERLAY_MODULE_09_SIZE = 0x0000A1A0;
+SDK_OVERLAY_MODULE_09_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_09_STATIC_INIT_START = 0x0221BFE8;
+SDK_OVERLAY_MODULE_09_STATIC_INIT_END = 0x0221BFEC;
+SDK_OVERLAY_MODULE_10_ID = 10;
+SDK_OVERLAY_MODULE_10_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_10_SIZE = 0x00000020;
+SDK_OVERLAY_MODULE_10_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_10_STATIC_INIT_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_10_STATIC_INIT_END = 0x021D74E4;
+SDK_OVERLAY_MODULE_11_ID = 11;
+SDK_OVERLAY_MODULE_11_START = 0x0222D5C0;
+SDK_OVERLAY_MODULE_11_SIZE = 0x000329E0;
+SDK_OVERLAY_MODULE_11_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_11_STATIC_INIT_START = 0x0225FF18;
+SDK_OVERLAY_MODULE_11_STATIC_INIT_END = 0x0225FF20;
+SDK_OVERLAY_MODULE_12_ID = 12;
+SDK_OVERLAY_MODULE_12_START = 0x0222D5C0;
+SDK_OVERLAY_MODULE_12_SIZE = 0x00019260;
+SDK_OVERLAY_MODULE_12_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_12_STATIC_INIT_START = 0x02246810;
+SDK_OVERLAY_MODULE_12_STATIC_INIT_END = 0x02246818;
+SDK_OVERLAY_MODULE_13_ID = 13;
+SDK_OVERLAY_MODULE_13_START = 0x02211E60;
+SDK_OVERLAY_MODULE_13_SIZE = 0x0002EBE0;
+SDK_OVERLAY_MODULE_13_BSSSIZE = 0x000027E0;
+SDK_OVERLAY_MODULE_13_STATIC_INIT_START = 0x0223F768;
+SDK_OVERLAY_MODULE_13_STATIC_INIT_END = 0x0223F76C;
+SDK_OVERLAY_MODULE_14_ID = 14;
+SDK_OVERLAY_MODULE_14_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_14_SIZE = 0x0000F520;
+SDK_OVERLAY_MODULE_14_BSSSIZE = 0x000001A0;
+SDK_OVERLAY_MODULE_14_STATIC_INIT_START = 0x021E69C8;
+SDK_OVERLAY_MODULE_14_STATIC_INIT_END = 0x021E69CC;
+SDK_OVERLAY_MODULE_15_ID = 15;
+SDK_OVERLAY_MODULE_15_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_15_SIZE = 0x00004680;
+SDK_OVERLAY_MODULE_15_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_15_STATIC_INIT_START = 0x021DBB5C;
+SDK_OVERLAY_MODULE_15_STATIC_INIT_END = 0x021DBB60;
+SDK_OVERLAY_MODULE_16_ID = 16;
+SDK_OVERLAY_MODULE_16_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_16_SIZE = 0x00028500;
+SDK_OVERLAY_MODULE_16_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_16_STATIC_INIT_START = 0x021FF9C4;
+SDK_OVERLAY_MODULE_16_STATIC_INIT_END = 0x021FF9C8;
+SDK_OVERLAY_MODULE_17_ID = 17;
+SDK_OVERLAY_MODULE_17_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_17_SIZE = 0x00006E80;
+SDK_OVERLAY_MODULE_17_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_17_STATIC_INIT_START = 0x021DE354;
+SDK_OVERLAY_MODULE_17_STATIC_INIT_END = 0x021DE358;
+SDK_OVERLAY_MODULE_18_ID = 18;
+SDK_OVERLAY_MODULE_18_START = 0x022396A0;
+SDK_OVERLAY_MODULE_18_SIZE = 0x00017CE0;
+SDK_OVERLAY_MODULE_18_BSSSIZE = 0x00000080;
+SDK_OVERLAY_MODULE_18_STATIC_INIT_START = 0x02250858;
+SDK_OVERLAY_MODULE_18_STATIC_INIT_END = 0x0225085C;
+SDK_OVERLAY_MODULE_19_ID = 19;
+SDK_OVERLAY_MODULE_19_START = 0x02252440;
+SDK_OVERLAY_MODULE_19_SIZE = 0x00000100;
+SDK_OVERLAY_MODULE_19_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_19_STATIC_INIT_START = 0x02252524;
+SDK_OVERLAY_MODULE_19_STATIC_INIT_END = 0x02252528;
+SDK_OVERLAY_MODULE_20_ID = 20;
+SDK_OVERLAY_MODULE_20_START = 0x02252440;
+SDK_OVERLAY_MODULE_20_SIZE = 0x00002400;
+SDK_OVERLAY_MODULE_20_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_20_STATIC_INIT_START = 0x02254838;
+SDK_OVERLAY_MODULE_20_STATIC_INIT_END = 0x0225483C;
+SDK_OVERLAY_MODULE_21_ID = 21;
+SDK_OVERLAY_MODULE_21_START = 0x02254840;
+SDK_OVERLAY_MODULE_21_SIZE = 0x000005C0;
+SDK_OVERLAY_MODULE_21_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_21_STATIC_INIT_START = 0x02254DE8;
+SDK_OVERLAY_MODULE_21_STATIC_INIT_END = 0x02254DF0;
+SDK_OVERLAY_MODULE_22_ID = 22;
+SDK_OVERLAY_MODULE_22_START = 0x02254840;
+SDK_OVERLAY_MODULE_22_SIZE = 0x00000F00;
+SDK_OVERLAY_MODULE_22_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_22_STATIC_INIT_START = 0x02255730;
+SDK_OVERLAY_MODULE_22_STATIC_INIT_END = 0x02255738;
+SDK_OVERLAY_MODULE_23_ID = 23;
+SDK_OVERLAY_MODULE_23_START = 0x02254840;
+SDK_OVERLAY_MODULE_23_SIZE = 0x00001900;
+SDK_OVERLAY_MODULE_23_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_23_STATIC_INIT_START = 0x02256128;
+SDK_OVERLAY_MODULE_23_STATIC_INIT_END = 0x02256130;
+SDK_OVERLAY_MODULE_24_ID = 24;
+SDK_OVERLAY_MODULE_24_START = 0x02254840;
+SDK_OVERLAY_MODULE_24_SIZE = 0x000009A0;
+SDK_OVERLAY_MODULE_24_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_24_STATIC_INIT_START = 0x022551C0;
+SDK_OVERLAY_MODULE_24_STATIC_INIT_END = 0x022551C8;
+SDK_OVERLAY_MODULE_25_ID = 25;
+SDK_OVERLAY_MODULE_25_START = 0x02254840;
+SDK_OVERLAY_MODULE_25_SIZE = 0x00000560;
+SDK_OVERLAY_MODULE_25_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_25_STATIC_INIT_START = 0x02254D80;
+SDK_OVERLAY_MODULE_25_STATIC_INIT_END = 0x02254D88;
+SDK_OVERLAY_MODULE_26_ID = 26;
+SDK_OVERLAY_MODULE_26_START = 0x02254840;
+SDK_OVERLAY_MODULE_26_SIZE = 0x00000800;
+SDK_OVERLAY_MODULE_26_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_26_STATIC_INIT_START = 0x02255020;
+SDK_OVERLAY_MODULE_26_STATIC_INIT_END = 0x02255028;
+SDK_OVERLAY_MODULE_27_ID = 27;
+SDK_OVERLAY_MODULE_27_START = 0x02254840;
+SDK_OVERLAY_MODULE_27_SIZE = 0x00000BA0;
+SDK_OVERLAY_MODULE_27_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_27_STATIC_INIT_START = 0x022553C4;
+SDK_OVERLAY_MODULE_27_STATIC_INIT_END = 0x022553CC;
+SDK_OVERLAY_MODULE_28_ID = 28;
+SDK_OVERLAY_MODULE_28_START = 0x02254840;
+SDK_OVERLAY_MODULE_28_SIZE = 0x00001780;
+SDK_OVERLAY_MODULE_28_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_28_STATIC_INIT_START = 0x02255F18;
+SDK_OVERLAY_MODULE_28_STATIC_INIT_END = 0x02255F20;
+SDK_OVERLAY_MODULE_29_ID = 29;
+SDK_OVERLAY_MODULE_29_START = 0x02254840;
+SDK_OVERLAY_MODULE_29_SIZE = 0x00000900;
+SDK_OVERLAY_MODULE_29_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_29_STATIC_INIT_START = 0x0225512C;
+SDK_OVERLAY_MODULE_29_STATIC_INIT_END = 0x02255134;
+SDK_OVERLAY_MODULE_30_ID = 30;
+SDK_OVERLAY_MODULE_30_START = 0x02254840;
+SDK_OVERLAY_MODULE_30_SIZE = 0x00000600;
+SDK_OVERLAY_MODULE_30_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_30_STATIC_INIT_START = 0x02254E28;
+SDK_OVERLAY_MODULE_30_STATIC_INIT_END = 0x02254E30;
+SDK_OVERLAY_MODULE_31_ID = 31;
+SDK_OVERLAY_MODULE_31_START = 0x02254840;
+SDK_OVERLAY_MODULE_31_SIZE = 0x00000600;
+SDK_OVERLAY_MODULE_31_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_31_STATIC_INIT_START = 0x02254E20;
+SDK_OVERLAY_MODULE_31_STATIC_INIT_END = 0x02254E28;
+SDK_OVERLAY_MODULE_32_ID = 32;
+SDK_OVERLAY_MODULE_32_START = 0x02254840;
+SDK_OVERLAY_MODULE_32_SIZE = 0x000004A0;
+SDK_OVERLAY_MODULE_32_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_32_STATIC_INIT_START = 0x02254CC4;
+SDK_OVERLAY_MODULE_32_STATIC_INIT_END = 0x02254CCC;
+SDK_OVERLAY_MODULE_33_ID = 33;
+SDK_OVERLAY_MODULE_33_START = 0x02254840;
+SDK_OVERLAY_MODULE_33_SIZE = 0x00000320;
+SDK_OVERLAY_MODULE_33_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_33_STATIC_INIT_START = 0x02254B40;
+SDK_OVERLAY_MODULE_33_STATIC_INIT_END = 0x02254B48;
+SDK_OVERLAY_MODULE_34_ID = 34;
+SDK_OVERLAY_MODULE_34_START = 0x02254840;
+SDK_OVERLAY_MODULE_34_SIZE = 0x000004C0;
+SDK_OVERLAY_MODULE_34_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_34_STATIC_INIT_START = 0x02254CF8;
+SDK_OVERLAY_MODULE_34_STATIC_INIT_END = 0x02254D00;
+SDK_OVERLAY_MODULE_35_ID = 35;
+SDK_OVERLAY_MODULE_35_START = 0x02254840;
+SDK_OVERLAY_MODULE_35_SIZE = 0x000009A0;
+SDK_OVERLAY_MODULE_35_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_35_STATIC_INIT_START = 0x022551C0;
+SDK_OVERLAY_MODULE_35_STATIC_INIT_END = 0x022551C8;
+SDK_OVERLAY_MODULE_36_ID = 36;
+SDK_OVERLAY_MODULE_36_START = 0x02254840;
+SDK_OVERLAY_MODULE_36_SIZE = 0x00000CC0;
+SDK_OVERLAY_MODULE_36_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_36_STATIC_INIT_START = 0x022554F8;
+SDK_OVERLAY_MODULE_36_STATIC_INIT_END = 0x02255500;
+SDK_OVERLAY_MODULE_37_ID = 37;
+SDK_OVERLAY_MODULE_37_START = 0x02254840;
+SDK_OVERLAY_MODULE_37_SIZE = 0x00000560;
+SDK_OVERLAY_MODULE_37_BSSSIZE = 0x00000020;
+SDK_OVERLAY_MODULE_37_STATIC_INIT_START = 0x02254D90;
+SDK_OVERLAY_MODULE_37_STATIC_INIT_END = 0x02254D98;
+SDK_OVERLAY_MODULE_38_ID = 38;
+SDK_OVERLAY_MODULE_38_START = 0x02254840;
+SDK_OVERLAY_MODULE_38_SIZE = 0x00000B40;
+SDK_OVERLAY_MODULE_38_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_38_STATIC_INIT_START = 0x02255360;
+SDK_OVERLAY_MODULE_38_STATIC_INIT_END = 0x02255368;
+SDK_OVERLAY_MODULE_39_ID = 39;
+SDK_OVERLAY_MODULE_39_START = 0x02254840;
+SDK_OVERLAY_MODULE_39_SIZE = 0x00000CC0;
+SDK_OVERLAY_MODULE_39_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_39_STATIC_INIT_START = 0x022554E4;
+SDK_OVERLAY_MODULE_39_STATIC_INIT_END = 0x022554EC;
+SDK_OVERLAY_MODULE_40_ID = 40;
+SDK_OVERLAY_MODULE_40_START = 0x02254840;
+SDK_OVERLAY_MODULE_40_SIZE = 0x00000C60;
+SDK_OVERLAY_MODULE_40_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_40_STATIC_INIT_START = 0x02255480;
+SDK_OVERLAY_MODULE_40_STATIC_INIT_END = 0x02255488;
+SDK_OVERLAY_MODULE_41_ID = 41;
+SDK_OVERLAY_MODULE_41_START = 0x02254840;
+SDK_OVERLAY_MODULE_41_SIZE = 0x00001140;
+SDK_OVERLAY_MODULE_41_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_41_STATIC_INIT_START = 0x02255974;
+SDK_OVERLAY_MODULE_41_STATIC_INIT_END = 0x0225597C;
+SDK_OVERLAY_MODULE_42_ID = 42;
+SDK_OVERLAY_MODULE_42_START = 0x02254840;
+SDK_OVERLAY_MODULE_42_SIZE = 0x00000900;
+SDK_OVERLAY_MODULE_42_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_42_STATIC_INIT_START = 0x0225511C;
+SDK_OVERLAY_MODULE_42_STATIC_INIT_END = 0x02255124;
+SDK_OVERLAY_MODULE_43_ID = 43;
+SDK_OVERLAY_MODULE_43_START = 0x02254840;
+SDK_OVERLAY_MODULE_43_SIZE = 0x000009C0;
+SDK_OVERLAY_MODULE_43_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_43_STATIC_INIT_START = 0x022551EC;
+SDK_OVERLAY_MODULE_43_STATIC_INIT_END = 0x022551F4;
+SDK_OVERLAY_MODULE_44_ID = 44;
+SDK_OVERLAY_MODULE_44_START = 0x02254840;
+SDK_OVERLAY_MODULE_44_SIZE = 0x000004A0;
+SDK_OVERLAY_MODULE_44_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_44_STATIC_INIT_START = 0x02254CBC;
+SDK_OVERLAY_MODULE_44_STATIC_INIT_END = 0x02254CC4;
+SDK_OVERLAY_MODULE_45_ID = 45;
+SDK_OVERLAY_MODULE_45_START = 0x02254840;
+SDK_OVERLAY_MODULE_45_SIZE = 0x00000940;
+SDK_OVERLAY_MODULE_45_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_45_STATIC_INIT_START = 0x02255170;
+SDK_OVERLAY_MODULE_45_STATIC_INIT_END = 0x02255178;
+SDK_OVERLAY_MODULE_46_ID = 46;
+SDK_OVERLAY_MODULE_46_START = 0x02254840;
+SDK_OVERLAY_MODULE_46_SIZE = 0x00000320;
+SDK_OVERLAY_MODULE_46_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_46_STATIC_INIT_START = 0x02254B40;
+SDK_OVERLAY_MODULE_46_STATIC_INIT_END = 0x02254B48;
+SDK_OVERLAY_MODULE_47_ID = 47;
+SDK_OVERLAY_MODULE_47_START = 0x02254840;
+SDK_OVERLAY_MODULE_47_SIZE = 0x00000CA0;
+SDK_OVERLAY_MODULE_47_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_47_STATIC_INIT_START = 0x022554BC;
+SDK_OVERLAY_MODULE_47_STATIC_INIT_END = 0x022554C4;
+SDK_OVERLAY_MODULE_48_ID = 48;
+SDK_OVERLAY_MODULE_48_START = 0x02254840;
+SDK_OVERLAY_MODULE_48_SIZE = 0x000008A0;
+SDK_OVERLAY_MODULE_48_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_48_STATIC_INIT_START = 0x022550D0;
+SDK_OVERLAY_MODULE_48_STATIC_INIT_END = 0x022550D8;
+SDK_OVERLAY_MODULE_49_ID = 49;
+SDK_OVERLAY_MODULE_49_START = 0x02254840;
+SDK_OVERLAY_MODULE_49_SIZE = 0x00000600;
+SDK_OVERLAY_MODULE_49_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_49_STATIC_INIT_START = 0x02254E20;
+SDK_OVERLAY_MODULE_49_STATIC_INIT_END = 0x02254E28;
+SDK_OVERLAY_MODULE_50_ID = 50;
+SDK_OVERLAY_MODULE_50_START = 0x02254840;
+SDK_OVERLAY_MODULE_50_SIZE = 0x00000320;
+SDK_OVERLAY_MODULE_50_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_50_STATIC_INIT_START = 0x02254B50;
+SDK_OVERLAY_MODULE_50_STATIC_INIT_END = 0x02254B58;
+SDK_OVERLAY_MODULE_51_ID = 51;
+SDK_OVERLAY_MODULE_51_START = 0x02254840;
+SDK_OVERLAY_MODULE_51_SIZE = 0x00000FC0;
+SDK_OVERLAY_MODULE_51_BSSSIZE = 0x00000020;
+SDK_OVERLAY_MODULE_51_STATIC_INIT_START = 0x022557E0;
+SDK_OVERLAY_MODULE_51_STATIC_INIT_END = 0x022557E4;
+SDK_OVERLAY_MODULE_52_ID = 52;
+SDK_OVERLAY_MODULE_52_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_52_SIZE = 0x00000400;
+SDK_OVERLAY_MODULE_52_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_52_STATIC_INIT_START = 0x021D78D0;
+SDK_OVERLAY_MODULE_52_STATIC_INIT_END = 0x021D78D4;
+SDK_OVERLAY_MODULE_53_ID = 53;
+SDK_OVERLAY_MODULE_53_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_53_SIZE = 0x00002480;
+SDK_OVERLAY_MODULE_53_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_53_STATIC_INIT_START = 0x021D9888;
+SDK_OVERLAY_MODULE_53_STATIC_INIT_END = 0x021D988C;
+SDK_OVERLAY_MODULE_54_ID = 54;
+SDK_OVERLAY_MODULE_54_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_54_SIZE = 0x00002380;
+SDK_OVERLAY_MODULE_54_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_54_STATIC_INIT_START = 0x021D97D4;
+SDK_OVERLAY_MODULE_54_STATIC_INIT_END = 0x021D97D8;
+SDK_OVERLAY_MODULE_55_ID = 55;
+SDK_OVERLAY_MODULE_55_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_55_SIZE = 0x00003040;
+SDK_OVERLAY_MODULE_55_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_55_STATIC_INIT_START = 0x021DA480;
+SDK_OVERLAY_MODULE_55_STATIC_INIT_END = 0x021DA484;
+SDK_OVERLAY_MODULE_56_ID = 56;
+SDK_OVERLAY_MODULE_56_START = 0x02211E60;
+SDK_OVERLAY_MODULE_56_SIZE = 0x000047A0;
+SDK_OVERLAY_MODULE_56_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_56_STATIC_INIT_START = 0x0221647C;
+SDK_OVERLAY_MODULE_56_STATIC_INIT_END = 0x02216480;
+SDK_OVERLAY_MODULE_57_ID = 57;
+SDK_OVERLAY_MODULE_57_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_57_SIZE = 0x00002540;
+SDK_OVERLAY_MODULE_57_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_57_STATIC_INIT_START = 0x021D9A10;
+SDK_OVERLAY_MODULE_57_STATIC_INIT_END = 0x021D9A14;
+SDK_OVERLAY_MODULE_58_ID = 58;
+SDK_OVERLAY_MODULE_58_START = 0x021D9A20;
+SDK_OVERLAY_MODULE_58_SIZE = 0x000015A0;
+SDK_OVERLAY_MODULE_58_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_58_STATIC_INIT_START = 0x021DAF94;
+SDK_OVERLAY_MODULE_58_STATIC_INIT_END = 0x021DAF98;
+SDK_OVERLAY_MODULE_59_ID = 59;
+SDK_OVERLAY_MODULE_59_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_59_SIZE = 0x00002C20;
+SDK_OVERLAY_MODULE_59_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_59_STATIC_INIT_START = 0x021DA0FC;
+SDK_OVERLAY_MODULE_59_STATIC_INIT_END = 0x021DA100;
+SDK_OVERLAY_MODULE_60_ID = 60;
+SDK_OVERLAY_MODULE_60_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_60_SIZE = 0x00000D00;
+SDK_OVERLAY_MODULE_60_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_60_STATIC_INIT_START = 0x021D81D8;
+SDK_OVERLAY_MODULE_60_STATIC_INIT_END = 0x021D81DC;
+SDK_OVERLAY_MODULE_61_ID = 61;
+SDK_OVERLAY_MODULE_61_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_61_SIZE = 0x00001080;
+SDK_OVERLAY_MODULE_61_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_61_STATIC_INIT_START = 0x021D8554;
+SDK_OVERLAY_MODULE_61_STATIC_INIT_END = 0x021D8558;
+SDK_OVERLAY_MODULE_62_ID = 62;
+SDK_OVERLAY_MODULE_62_START = 0x0222D5C0;
+SDK_OVERLAY_MODULE_62_SIZE = 0x00003DE0;
+SDK_OVERLAY_MODULE_62_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_62_STATIC_INIT_START = 0x02231380;
+SDK_OVERLAY_MODULE_62_STATIC_INIT_END = 0x02231388;
+SDK_OVERLAY_MODULE_63_ID = 63;
+SDK_OVERLAY_MODULE_63_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_63_SIZE = 0x00004AC0;
+SDK_OVERLAY_MODULE_63_BSSSIZE = 0x00000020;
+SDK_OVERLAY_MODULE_63_STATIC_INIT_START = 0x021DBF20;
+SDK_OVERLAY_MODULE_63_STATIC_INIT_END = 0x021DBF24;
+SDK_OVERLAY_MODULE_64_ID = 64;
+SDK_OVERLAY_MODULE_64_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_64_SIZE = 0x00001C40;
+SDK_OVERLAY_MODULE_64_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_64_STATIC_INIT_START = 0x021D9110;
+SDK_OVERLAY_MODULE_64_STATIC_INIT_END = 0x021D9114;
+SDK_OVERLAY_MODULE_65_ID = 65;
+SDK_OVERLAY_MODULE_65_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_65_SIZE = 0x00003000;
+SDK_OVERLAY_MODULE_65_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_65_STATIC_INIT_START = 0x021DA428;
+SDK_OVERLAY_MODULE_65_STATIC_INIT_END = 0x021DA42C;
+SDK_OVERLAY_MODULE_66_ID = 66;
+SDK_OVERLAY_MODULE_66_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_66_SIZE = 0x00002660;
+SDK_OVERLAY_MODULE_66_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_66_STATIC_INIT_START = 0x021D9A9C;
+SDK_OVERLAY_MODULE_66_STATIC_INIT_END = 0x021D9AA0;
+SDK_OVERLAY_MODULE_67_ID = 67;
+SDK_OVERLAY_MODULE_67_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_67_SIZE = 0x00002440;
+SDK_OVERLAY_MODULE_67_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_67_STATIC_INIT_START = 0x021D9918;
+SDK_OVERLAY_MODULE_67_STATIC_INIT_END = 0x021D991C;
+SDK_OVERLAY_MODULE_68_ID = 68;
+SDK_OVERLAY_MODULE_68_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_68_SIZE = 0x00001600;
+SDK_OVERLAY_MODULE_68_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_68_STATIC_INIT_START = 0x021D8AD4;
+SDK_OVERLAY_MODULE_68_STATIC_INIT_END = 0x021D8AD8;
+SDK_OVERLAY_MODULE_69_ID = 69;
+SDK_OVERLAY_MODULE_69_START = 0x0222D5C0;
+SDK_OVERLAY_MODULE_69_SIZE = 0x000023A0;
+SDK_OVERLAY_MODULE_69_BSSSIZE = 0x00000020;
+SDK_OVERLAY_MODULE_69_STATIC_INIT_START = 0x0222F93C;
+SDK_OVERLAY_MODULE_69_STATIC_INIT_END = 0x0222F940;
+SDK_OVERLAY_MODULE_70_ID = 70;
+SDK_OVERLAY_MODULE_70_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_70_SIZE = 0x00000E20;
+SDK_OVERLAY_MODULE_70_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_70_STATIC_INIT_START = 0x021D82DC;
+SDK_OVERLAY_MODULE_70_STATIC_INIT_END = 0x021D82E0;
+SDK_OVERLAY_MODULE_71_ID = 71;
+SDK_OVERLAY_MODULE_71_START = 0x0222D5C0;
+SDK_OVERLAY_MODULE_71_SIZE = 0x00003EC0;
+SDK_OVERLAY_MODULE_71_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_71_STATIC_INIT_START = 0x0223147C;
+SDK_OVERLAY_MODULE_71_STATIC_INIT_END = 0x02231480;
+SDK_OVERLAY_MODULE_72_ID = 72;
+SDK_OVERLAY_MODULE_72_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_72_SIZE = 0x00000020;
+SDK_OVERLAY_MODULE_72_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_72_STATIC_INIT_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_72_STATIC_INIT_END = 0x021D74E4;
+SDK_OVERLAY_MODULE_73_ID = 73;
+SDK_OVERLAY_MODULE_73_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_73_SIZE = 0x00004AE0;
+SDK_OVERLAY_MODULE_73_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_73_STATIC_INIT_START = 0x021DBF70;
+SDK_OVERLAY_MODULE_73_STATIC_INIT_END = 0x021DBF74;
+SDK_OVERLAY_MODULE_74_ID = 74;
+SDK_OVERLAY_MODULE_74_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_74_SIZE = 0x00001220;
+SDK_OVERLAY_MODULE_74_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_74_STATIC_INIT_START = 0x021D8664;
+SDK_OVERLAY_MODULE_74_STATIC_INIT_END = 0x021D8668;
+SDK_OVERLAY_MODULE_75_ID = 75;
+SDK_OVERLAY_MODULE_75_START = 0x021E6BA0;
+SDK_OVERLAY_MODULE_75_SIZE = 0x00005DE0;
+SDK_OVERLAY_MODULE_75_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_75_STATIC_INIT_START = 0x021EC97C;
+SDK_OVERLAY_MODULE_75_STATIC_INIT_END = 0x021EC980;
+SDK_OVERLAY_MODULE_76_ID = 76;
+SDK_OVERLAY_MODULE_76_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_76_SIZE = 0x00001E20;
+SDK_OVERLAY_MODULE_76_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_76_STATIC_INIT_START = 0x021D92E0;
+SDK_OVERLAY_MODULE_76_STATIC_INIT_END = 0x021D92E4;
+SDK_OVERLAY_MODULE_77_ID = 77;
+SDK_OVERLAY_MODULE_77_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_77_SIZE = 0x00001BE0;
+SDK_OVERLAY_MODULE_77_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_77_STATIC_INIT_START = 0x021D90AC;
+SDK_OVERLAY_MODULE_77_STATIC_INIT_END = 0x021D90B0;
+SDK_OVERLAY_MODULE_78_ID = 78;
+SDK_OVERLAY_MODULE_78_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_78_SIZE = 0x00000460;
+SDK_OVERLAY_MODULE_78_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_78_STATIC_INIT_START = 0x021D78F8;
+SDK_OVERLAY_MODULE_78_STATIC_INIT_END = 0x021D78FC;
+SDK_OVERLAY_MODULE_79_ID = 79;
+SDK_OVERLAY_MODULE_79_START = 0x02211E60;
+SDK_OVERLAY_MODULE_79_SIZE = 0x000052C0;
+SDK_OVERLAY_MODULE_79_BSSSIZE = 0x00000040;
+SDK_OVERLAY_MODULE_79_STATIC_INIT_START = 0x02216748;
+SDK_OVERLAY_MODULE_79_STATIC_INIT_END = 0x0221674C;
+SDK_OVERLAY_MODULE_80_ID = 80;
+SDK_OVERLAY_MODULE_80_START = 0x0222D5C0;
+SDK_OVERLAY_MODULE_80_SIZE = 0x0000A720;
+SDK_OVERLAY_MODULE_80_BSSSIZE = 0x00000160;
+SDK_OVERLAY_MODULE_80_STATIC_INIT_START = 0x02237670;
+SDK_OVERLAY_MODULE_80_STATIC_INIT_END = 0x02237674;
+SDK_OVERLAY_MODULE_81_ID = 81;
+SDK_OVERLAY_MODULE_81_START = 0x02237E40;
+SDK_OVERLAY_MODULE_81_SIZE = 0x00005580;
+SDK_OVERLAY_MODULE_81_BSSSIZE = 0x000000A0;
+SDK_OVERLAY_MODULE_81_STATIC_INIT_START = 0x0223D39C;
+SDK_OVERLAY_MODULE_81_STATIC_INIT_END = 0x0223D3A0;
+SDK_OVERLAY_MODULE_82_ID = 82;
+SDK_OVERLAY_MODULE_82_START = 0x0222D5C0;
+SDK_OVERLAY_MODULE_82_SIZE = 0x00002540;
+SDK_OVERLAY_MODULE_82_BSSSIZE = 0x00000120;
+SDK_OVERLAY_MODULE_82_STATIC_INIT_START = 0x0222F8CC;
+SDK_OVERLAY_MODULE_82_STATIC_INIT_END = 0x0222F8D0;
+SDK_OVERLAY_MODULE_83_ID = 83;
+SDK_OVERLAY_MODULE_83_START = 0x0222D5C0;
+SDK_OVERLAY_MODULE_83_SIZE = 0x0000E2A0;
+SDK_OVERLAY_MODULE_83_BSSSIZE = 0x00001980;
+SDK_OVERLAY_MODULE_83_STATIC_INIT_START = 0x0223A77C;
+SDK_OVERLAY_MODULE_83_STATIC_INIT_END = 0x0223A780;
+SDK_OVERLAY_MODULE_84_ID = 84;
+SDK_OVERLAY_MODULE_84_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_84_SIZE = 0x00003920;
+SDK_OVERLAY_MODULE_84_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_84_STATIC_INIT_START = 0x021DADE4;
+SDK_OVERLAY_MODULE_84_STATIC_INIT_END = 0x021DADE8;
+SDK_OVERLAY_MODULE_85_ID = 85;
+SDK_OVERLAY_MODULE_85_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_85_SIZE = 0x00009100;
+SDK_OVERLAY_MODULE_85_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_85_STATIC_INIT_START = 0x021E05A0;
+SDK_OVERLAY_MODULE_85_STATIC_INIT_END = 0x021E05A4;
+SDK_OVERLAY_MODULE_86_ID = 86;
+SDK_OVERLAY_MODULE_86_START = 0x021D74E0;
+SDK_OVERLAY_MODULE_86_SIZE = 0x00000820;
+SDK_OVERLAY_MODULE_86_BSSSIZE = 0x00000000;
+SDK_OVERLAY_MODULE_86_STATIC_INIT_START = 0x021D7CE4;
+SDK_OVERLAY_MODULE_86_STATIC_INIT_END = 0x021D7CE8;
diff --git a/global.inc b/global.inc
deleted file mode 100644
index 6d2d19f9..00000000
--- a/global.inc
+++ /dev/null
@@ -1,3517 +0,0 @@
-.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 SVC_Sqrt
-.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 MTX_Rot22_
-.extern MTX_ScaleApply22
-.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_Atan2
-.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/include/main.h b/include/main.h
index 0df94795..23059702 100644
--- a/include/main.h
+++ b/include/main.h
@@ -1,19 +1,42 @@
#ifndef GUARD_MAIN_H
#define GUARD_MAIN_H
+#include "FS_overlay.h"
+#include "SPI_pm.h"
+
+struct Unk21DBE18
+{
+ u8 filler_00[16];
+};
+
struct Unk2106FA0
{
- s32 unk0;
+ PMBackLightSwitch unk0;
s32 unk4;
- s32 unk8;
+ FSOverlayID unk8;
s32 unkC;
- s32 unk10;
- s32 unk14;
+ FSOverlayID unk10;
+ struct Unk21DBE18 * unk14;
s32 unk18;
s32 unk1C;
s32 unk20;
};
+struct Unk21C4818
+{
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+ u32 unkC;
+};
+
+struct Unk21C4828
+{
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+};
+
struct Unk21C48B8
{
void (*unk0)(s32);
@@ -37,4 +60,7 @@ struct Unk21C48B8
s32 unk6C;
};
+extern struct Unk2106FA0 gBacklightTop;
+extern struct Unk2106FA0 gBacklightTop_2; // same as the first one, it's referenced twice in the constant pool...
+
#endif //GUARD_MAIN_H
diff --git a/include/poke_overlay.h b/include/poke_overlay.h
new file mode 100644
index 00000000..5ee9073a
--- /dev/null
+++ b/include/poke_overlay.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_POKE_OVERLAY_H
+#define GUARD_POKE_OVERLAY_H
+
+#include "FS_overlay.h"
+
+#define OVERLAY_LOAD_WRAM 0
+#define OVERLAY_LOAD_ITCM 1
+#define OVERLAY_LOAD_DTCM 2
+
+void UnloadOverlayByID(FSOverlayID id);
+BOOL HandleLoadOverlay(FSOverlayID id, int a1);
+
+#endif //GUARD_POKE_OVERLAY_H
diff --git a/pokediamond.lcf b/pokediamond.lcf
index 362e8e6c..daee270d 100644
--- a/pokediamond.lcf
+++ b/pokediamond.lcf
@@ -278,7 +278,6 @@ MEMORY {
}
SECTIONS {
-#include "undefined_syms.txt"
.header: {
rom_header.o (.text)
. = 0x4000;
@@ -290,6 +289,358 @@ SECTIONS {
INCLUDE arm9.bin
} > arm9
+ .arm9_table : AT (0x10B800) {
+ INCLUDE arm9_table.bin
+ } >> arm9
+
+ .MODULE_00 : AT (0x10C400) {
+ INCLUDE MODULE_00.bin
+ } >> arm9
+
+ .MODULE_01 : AT (0x10C600) {
+ INCLUDE MODULE_01.bin
+ } >> arm9
+
+ .MODULE_02 : AT (0x10C800) {
+ INCLUDE MODULE_02.bin
+ } >> arm9
+
+ .MODULE_03 : AT (0x10CA00) {
+ INCLUDE MODULE_03.bin
+ } >> arm9
+
+ .MODULE_04 : AT (0x10CC00) {
+ INCLUDE MODULE_04.bin
+ } >> arm9
+
+ .MODULE_05 : AT (0x145400) {
+ INCLUDE MODULE_05.bin
+ } >> arm9
+
+ .MODULE_06 : AT (0x16B600) {
+ INCLUDE MODULE_06.bin
+ } >> arm9
+
+ .MODULE_07 : AT (0x184400) {
+ INCLUDE MODULE_07.bin
+ } >> arm9
+
+ .MODULE_08 : AT (0x187800) {
+ INCLUDE MODULE_08.bin
+ } >> arm9
+
+ .MODULE_09 : AT (0x1A3000) {
+ INCLUDE MODULE_09.bin
+ } >> arm9
+
+ .MODULE_10 : AT (0x1AD200) {
+ INCLUDE MODULE_10.bin
+ } >> arm9
+
+ .MODULE_11 : AT (0x1AD400) {
+ INCLUDE MODULE_11.bin
+ } >> arm9
+
+ .MODULE_12 : AT (0x1DFE00) {
+ INCLUDE MODULE_12.bin
+ } >> arm9
+
+ .MODULE_13 : AT (0x1F9200) {
+ INCLUDE MODULE_13.bin
+ } >> arm9
+
+ .MODULE_14 : AT (0x227E00) {
+ INCLUDE MODULE_14.bin
+ } >> arm9
+
+ .MODULE_15 : AT (0x237400) {
+ INCLUDE MODULE_15.bin
+ } >> arm9
+
+ .MODULE_16 : AT (0x23BC00) {
+ INCLUDE MODULE_16.bin
+ } >> arm9
+
+ .MODULE_17 : AT (0x264200) {
+ INCLUDE MODULE_17.bin
+ } >> arm9
+
+ .MODULE_18 : AT (0x26B200) {
+ INCLUDE MODULE_18.bin
+ } >> arm9
+
+ .MODULE_19 : AT (0x283000) {
+ INCLUDE MODULE_19.bin
+ } >> arm9
+
+ .MODULE_20 : AT (0x283200) {
+ INCLUDE MODULE_20.bin
+ } >> arm9
+
+ .MODULE_21 : AT (0x285600) {
+ INCLUDE MODULE_21.bin
+ } >> arm9
+
+ .MODULE_22 : AT (0x285C00) {
+ INCLUDE MODULE_22.bin
+ } >> arm9
+
+ .MODULE_23 : AT (0x286C00) {
+ INCLUDE MODULE_23.bin
+ } >> arm9
+
+ .MODULE_24 : AT (0x288600) {
+ INCLUDE MODULE_24.bin
+ } >> arm9
+
+ .MODULE_25 : AT (0x289000) {
+ INCLUDE MODULE_25.bin
+ } >> arm9
+
+ .MODULE_26 : AT (0x289600) {
+ INCLUDE MODULE_26.bin
+ } >> arm9
+
+ .MODULE_27 : AT (0x289E00) {
+ INCLUDE MODULE_27.bin
+ } >> arm9
+
+ .MODULE_28 : AT (0x28AA00) {
+ INCLUDE MODULE_28.bin
+ } >> arm9
+
+ .MODULE_29 : AT (0x28C200) {
+ INCLUDE MODULE_29.bin
+ } >> arm9
+
+ .MODULE_30 : AT (0x28CC00) {
+ INCLUDE MODULE_30.bin
+ } >> arm9
+
+ .MODULE_31 : AT (0x28D200) {
+ INCLUDE MODULE_31.bin
+ } >> arm9
+
+ .MODULE_32 : AT (0x28D800) {
+ INCLUDE MODULE_32.bin
+ } >> arm9
+
+ .MODULE_33 : AT (0x28DE00) {
+ INCLUDE MODULE_33.bin
+ } >> arm9
+
+ .MODULE_34 : AT (0x28E200) {
+ INCLUDE MODULE_34.bin
+ } >> arm9
+
+ .MODULE_35 : AT (0x28E800) {
+ INCLUDE MODULE_35.bin
+ } >> arm9
+
+ .MODULE_36 : AT (0x28F200) {
+ INCLUDE MODULE_36.bin
+ } >> arm9
+
+ .MODULE_37 : AT (0x290000) {
+ INCLUDE MODULE_37.bin
+ } >> arm9
+
+ .MODULE_38 : AT (0x290600) {
+ INCLUDE MODULE_38.bin
+ } >> arm9
+
+ .MODULE_39 : AT (0x291200) {
+ INCLUDE MODULE_39.bin
+ } >> arm9
+
+ .MODULE_40 : AT (0x292000) {
+ INCLUDE MODULE_40.bin
+ } >> arm9
+
+ .MODULE_41 : AT (0x292E00) {
+ INCLUDE MODULE_41.bin
+ } >> arm9
+
+ .MODULE_42 : AT (0x294000) {
+ INCLUDE MODULE_42.bin
+ } >> arm9
+
+ .MODULE_43 : AT (0x294A00) {
+ INCLUDE MODULE_43.bin
+ } >> arm9
+
+ .MODULE_44 : AT (0x295400) {
+ INCLUDE MODULE_44.bin
+ } >> arm9
+
+ .MODULE_45 : AT (0x295A00) {
+ INCLUDE MODULE_45.bin
+ } >> arm9
+
+ .MODULE_46 : AT (0x296400) {
+ INCLUDE MODULE_46.bin
+ } >> arm9
+
+ .MODULE_47 : AT (0x296800) {
+ INCLUDE MODULE_47.bin
+ } >> arm9
+
+ .MODULE_48 : AT (0x297600) {
+ INCLUDE MODULE_48.bin
+ } >> arm9
+
+ .MODULE_49 : AT (0x298000) {
+ INCLUDE MODULE_49.bin
+ } >> arm9
+
+ .MODULE_50 : AT (0x298600) {
+ INCLUDE MODULE_50.bin
+ } >> arm9
+
+ .MODULE_51 : AT (0x298A00) {
+ INCLUDE MODULE_51.bin
+ } >> arm9
+
+ .MODULE_52 : AT (0x299A00) {
+ INCLUDE MODULE_52.bin
+ } >> arm9
+
+ .MODULE_53 : AT (0x299E00) {
+ INCLUDE MODULE_53.bin
+ } >> arm9
+
+ .MODULE_54 : AT (0x29C400) {
+ INCLUDE MODULE_54.bin
+ } >> arm9
+
+ .MODULE_55 : AT (0x29E800) {
+ INCLUDE MODULE_55.bin
+ } >> arm9
+
+ .MODULE_56 : AT (0x2A1A00) {
+ INCLUDE MODULE_56.bin
+ } >> arm9
+
+ .MODULE_57 : AT (0x2A6200) {
+ INCLUDE MODULE_57.bin
+ } >> arm9
+
+ .MODULE_58 : AT (0x2A8800) {
+ INCLUDE MODULE_58.bin
+ } >> arm9
+
+ .MODULE_59 : AT (0x2A9E00) {
+ INCLUDE MODULE_59.bin
+ } >> arm9
+
+ .MODULE_60 : AT (0x2ACC00) {
+ INCLUDE MODULE_60.bin
+ } >> arm9
+
+ .MODULE_61 : AT (0x2ADA00) {
+ INCLUDE MODULE_61.bin
+ } >> arm9
+
+ .MODULE_62 : AT (0x2AEC00) {
+ INCLUDE MODULE_62.bin
+ } >> arm9
+
+ .MODULE_63 : AT (0x2B2A00) {
+ INCLUDE MODULE_63.bin
+ } >> arm9
+
+ .MODULE_64 : AT (0x2B7600) {
+ INCLUDE MODULE_64.bin
+ } >> arm9
+
+ .MODULE_65 : AT (0x2B9400) {
+ INCLUDE MODULE_65.bin
+ } >> arm9
+
+ .MODULE_66 : AT (0x2BC400) {
+ INCLUDE MODULE_66.bin
+ } >> arm9
+
+ .MODULE_67 : AT (0x2BEC00) {
+ INCLUDE MODULE_67.bin
+ } >> arm9
+
+ .MODULE_68 : AT (0x2C1200) {
+ INCLUDE MODULE_68.bin
+ } >> arm9
+
+ .MODULE_69 : AT (0x2C2800) {
+ INCLUDE MODULE_69.bin
+ } >> arm9
+
+ .MODULE_70 : AT (0x2C4C00) {
+ INCLUDE MODULE_70.bin
+ } >> arm9
+
+ .MODULE_71 : AT (0x2C5C00) {
+ INCLUDE MODULE_71.bin
+ } >> arm9
+
+ .MODULE_72 : AT (0x2C9C00) {
+ INCLUDE MODULE_72.bin
+ } >> arm9
+
+ .MODULE_73 : AT (0x2C9E00) {
+ INCLUDE MODULE_73.bin
+ } >> arm9
+
+ .MODULE_74 : AT (0x2CEA00) {
+ INCLUDE MODULE_74.bin
+ } >> arm9
+
+ .MODULE_75 : AT (0x2CFE00) {
+ INCLUDE MODULE_75.bin
+ } >> arm9
+
+ .MODULE_76 : AT (0x2D5C00) {
+ INCLUDE MODULE_76.bin
+ } >> arm9
+
+ .MODULE_77 : AT (0x2D7C00) {
+ INCLUDE MODULE_77.bin
+ } >> arm9
+
+ .MODULE_78 : AT (0x2D9800) {
+ INCLUDE MODULE_78.bin
+ } >> arm9
+
+ .MODULE_79 : AT (0x2D9E00) {
+ INCLUDE MODULE_79.bin
+ } >> arm9
+
+ .MODULE_80 : AT (0x2DF200) {
+ INCLUDE MODULE_80.bin
+ } >> arm9
+
+ .MODULE_81 : AT (0x2E9A00) {
+ INCLUDE MODULE_81.bin
+ } >> arm9
+
+ .MODULE_82 : AT (0x2EF000) {
+ INCLUDE MODULE_82.bin
+ } >> arm9
+
+ .MODULE_83 : AT (0x2F1600) {
+ INCLUDE MODULE_83.bin
+ } >> arm9
+
+ .MODULE_84 : AT (0x2FFA00) {
+ INCLUDE MODULE_84.bin
+ } >> arm9
+
+ .MODULE_85 : AT (0x303400) {
+ INCLUDE MODULE_85.bin
+ } >> arm9
+
+ .MODULE_86 : AT (0x30C600) {
+ INCLUDE MODULE_86.bin
+ } >> arm9
+
.arm7 : AT(0x30D000) {
ARM7AutoLoad = 0x02380158;
INCLUDE arm7.bin
diff --git a/tools/scaninc/.gitignore b/tools/scaninc/.gitignore
new file mode 100644
index 00000000..94bfbf98
--- /dev/null
+++ b/tools/scaninc/.gitignore
@@ -0,0 +1 @@
+scaninc
diff --git a/tools/scaninc/LICENSE b/tools/scaninc/LICENSE
new file mode 100644
index 00000000..b66bf81c
--- /dev/null
+++ b/tools/scaninc/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015 YamaArashi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/scaninc/Makefile b/tools/scaninc/Makefile
new file mode 100644
index 00000000..1516f159
--- /dev/null
+++ b/tools/scaninc/Makefile
@@ -0,0 +1,18 @@
+CXX = g++
+
+CXXFLAGS = -Wall -Werror -std=c++11 -O2
+
+SRCS = scaninc.cpp c_file.cpp asm_file.cpp source_file.cpp
+
+HEADERS := scaninc.h asm_file.h c_file.h source_file.h
+
+.PHONY: all clean
+
+all: scaninc
+ @:
+
+scaninc: $(SRCS) $(HEADERS)
+ $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS)
+
+clean:
+ $(RM) scaninc scaninc.exe
diff --git a/tools/scaninc/asm_file.cpp b/tools/scaninc/asm_file.cpp
new file mode 100644
index 00000000..109e604a
--- /dev/null
+++ b/tools/scaninc/asm_file.cpp
@@ -0,0 +1,192 @@
+// Copyright(c) 2015-2017 YamaArashi
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#include <cstdio>
+#include <string>
+#include "scaninc.h"
+#include "asm_file.h"
+
+AsmFile::AsmFile(std::string path)
+{
+ m_path = path;
+
+ FILE *fp = std::fopen(path.c_str(), "rb");
+
+ if (fp == NULL)
+ FATAL_ERROR("Failed to open \"%s\" for reading.\n", path.c_str());
+
+ std::fseek(fp, 0, SEEK_END);
+
+ m_size = std::ftell(fp);
+
+ m_buffer = new char[m_size];
+
+ std::rewind(fp);
+
+ if (std::fread(m_buffer, m_size, 1, fp) != 1)
+ FATAL_ERROR("Failed to read \"%s\".\n", path.c_str());
+
+ std::fclose(fp);
+
+ m_pos = 0;
+ m_lineNum = 1;
+}
+
+AsmFile::~AsmFile()
+{
+ delete[] m_buffer;
+}
+
+IncDirectiveType AsmFile::ReadUntilIncDirective(std::string &path)
+{
+ // At the beginning of each loop iteration, the current file position
+ // should be at the start of a line or at the end of the file.
+ for (;;)
+ {
+ SkipTabsAndSpaces();
+
+ IncDirectiveType incDirectiveType = IncDirectiveType::None;
+
+ char c = PeekChar();
+ if (c == '.' || c == '#')
+ {
+ m_pos++;
+
+ if (MatchIncDirective("incbin", path))
+ incDirectiveType = IncDirectiveType::Incbin;
+ else if (MatchIncDirective("include", path))
+ incDirectiveType = IncDirectiveType::Include;
+ }
+
+ for (;;)
+ {
+ int c = GetChar();
+
+ if (c == -1)
+ return incDirectiveType;
+
+ if (c == ';')
+ {
+ SkipEndOfLineComment();
+ break;
+ }
+ else if (c == '/' && PeekChar() == '*')
+ {
+ m_pos++;
+ SkipMultiLineComment();
+ }
+ else if (c == '"')
+ {
+ SkipString();
+ }
+ else if (c == '\n')
+ {
+ break;
+ }
+ }
+
+ if (incDirectiveType != IncDirectiveType::None)
+ return incDirectiveType;
+ }
+}
+
+std::string AsmFile::ReadPath()
+{
+ int length = 0;
+ int startPos = m_pos;
+
+ for (;;)
+ {
+ int c = GetChar();
+
+ if (c == '"')
+ break;
+
+ if (c == -1)
+ FATAL_INPUT_ERROR("unexpected EOF in include string\n");
+
+ if (c == 0)
+ FATAL_INPUT_ERROR("unexpected NUL character in include string\n");
+
+ if (c == '\n')
+ FATAL_INPUT_ERROR("unexpected end of line character in include string\n");
+
+ // Don't bother allowing any escape sequences.
+ if (c == '\\')
+ FATAL_INPUT_ERROR("unexpected escape in include string\n");
+
+ length++;
+
+ if (length > SCANINC_MAX_PATH)
+ FATAL_INPUT_ERROR("path is too long");
+ }
+
+ return std::string(m_buffer + startPos, length);
+}
+
+void AsmFile::SkipEndOfLineComment()
+{
+ int c;
+
+ do
+ {
+ c = GetChar();
+ } while (c != -1 && c != '\n');
+}
+
+void AsmFile::SkipMultiLineComment()
+{
+ for (;;)
+ {
+ int c = GetChar();
+
+ if (c == '*')
+ {
+ if (PeekChar() == '/')
+ {
+ m_pos++;
+ return;
+ }
+ }
+ else if (c == -1)
+ {
+ return;
+ }
+ }
+}
+
+void AsmFile::SkipString()
+{
+ for (;;)
+ {
+ int c = GetChar();
+
+ if (c == '"')
+ break;
+
+ if (c == -1)
+ FATAL_INPUT_ERROR("unexpected EOF in string\n");
+
+ if (c == '\\')
+ {
+ c = GetChar();
+ }
+ }
+}
diff --git a/tools/scaninc/asm_file.h b/tools/scaninc/asm_file.h
new file mode 100644
index 00000000..ad99b757
--- /dev/null
+++ b/tools/scaninc/asm_file.h
@@ -0,0 +1,119 @@
+// Copyright(c) 2015-2017 YamaArashi
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#ifndef ASM_FILE_H
+#define ASM_FILE_H
+
+#include <string>
+#include "scaninc.h"
+
+enum class IncDirectiveType
+{
+ None,
+ Include,
+ Incbin
+};
+
+class AsmFile
+{
+public:
+ AsmFile(std::string path);
+ ~AsmFile();
+ IncDirectiveType ReadUntilIncDirective(std::string& path);
+
+private:
+ char *m_buffer;
+ int m_pos;
+ int m_size;
+ int m_lineNum;
+ std::string m_path;
+
+ int GetChar()
+ {
+ if (m_pos >= m_size)
+ return -1;
+
+ int c = m_buffer[m_pos++];
+
+ if (c == '\r')
+ {
+ if (m_pos < m_size && m_buffer[m_pos++] == '\n')
+ {
+ m_lineNum++;
+ return '\n';
+ }
+ else
+ {
+ FATAL_INPUT_ERROR("CR line endings are not supported\n");
+ }
+ }
+
+ if (c == '\n')
+ m_lineNum++;
+
+ return c;
+ }
+
+ // No newline translation because it's not needed for any use of this function.
+ int PeekChar()
+ {
+ if (m_pos >= m_size)
+ return -1;
+
+ return m_buffer[m_pos];
+ }
+
+ void SkipTabsAndSpaces()
+ {
+ while (m_pos < m_size && (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' '))
+ m_pos++;
+ }
+
+ bool MatchIncDirective(std::string directiveName, std::string& path)
+ {
+ int length = directiveName.length();
+ int i;
+
+ for (i = 0; i < length && m_pos + i < m_size; i++)
+ if (directiveName[i] != m_buffer[m_pos + i])
+ return false;
+
+ if (i < length)
+ return false;
+
+ m_pos += length;
+
+ SkipTabsAndSpaces();
+
+ if (GetChar() != '"')
+ FATAL_INPUT_ERROR("no path after \".%s\" directive\n", directiveName.c_str());
+
+ path = ReadPath();
+
+ return true;
+ }
+
+ std::string ReadPath();
+ void SkipEndOfLineComment();
+ void SkipMultiLineComment();
+ void SkipString();
+};
+
+#endif // ASM_FILE_H
diff --git a/tools/scaninc/c_file.cpp b/tools/scaninc/c_file.cpp
new file mode 100644
index 00000000..595f366c
--- /dev/null
+++ b/tools/scaninc/c_file.cpp
@@ -0,0 +1,307 @@
+// Copyright(c) 2017 YamaArashi
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#include "c_file.h"
+
+CFile::CFile(std::string path)
+{
+ m_path = path;
+
+ FILE *fp = std::fopen(path.c_str(), "rb");
+
+ if (fp == NULL)
+ FATAL_ERROR("Failed to open \"%s\" for reading.\n", path.c_str());
+
+ std::fseek(fp, 0, SEEK_END);
+
+ m_size = std::ftell(fp);
+
+ m_buffer = new char[m_size + 1];
+ m_buffer[m_size] = 0;
+
+ std::rewind(fp);
+
+ if (std::fread(m_buffer, m_size, 1, fp) != 1)
+ FATAL_ERROR("Failed to read \"%s\".\n", path.c_str());
+
+ std::fclose(fp);
+
+ m_pos = 0;
+ m_lineNum = 1;
+}
+
+CFile::~CFile()
+{
+ delete[] m_buffer;
+}
+
+void CFile::FindIncbins()
+{
+ char stringChar = 0;
+
+ while (m_pos < m_size)
+ {
+ if (stringChar)
+ {
+ if (m_buffer[m_pos] == stringChar)
+ {
+ m_pos++;
+ stringChar = 0;
+ }
+ else if (m_buffer[m_pos] == '\\' && m_buffer[m_pos + 1] == stringChar)
+ {
+ m_pos += 2;
+ }
+ else
+ {
+ if (m_buffer[m_pos] == '\n')
+ m_lineNum++;
+ m_pos++;
+ }
+ }
+ else
+ {
+ SkipWhitespace();
+ CheckInclude();
+ CheckIncbin();
+
+ if (m_pos >= m_size)
+ break;
+
+ char c = m_buffer[m_pos++];
+
+ if (c == '\n')
+ m_lineNum++;
+ else if (c == '"')
+ stringChar = '"';
+ else if (c == '\'')
+ stringChar = '\'';
+ else if (c == 0)
+ FATAL_INPUT_ERROR("unexpected null character");
+ }
+ }
+}
+
+bool CFile::ConsumeHorizontalWhitespace()
+{
+ if (m_buffer[m_pos] == '\t' || m_buffer[m_pos] == ' ')
+ {
+ m_pos++;
+ return true;
+ }
+
+ return false;
+}
+
+bool CFile::ConsumeNewline()
+{
+ if (m_buffer[m_pos] == '\n')
+ {
+ m_pos++;
+ m_lineNum++;
+ return true;
+ }
+
+ if (m_buffer[m_pos] == '\r' && m_buffer[m_pos + 1] == '\n')
+ {
+ m_pos += 2;
+ m_lineNum++;
+ return true;
+ }
+
+ return false;
+}
+
+bool CFile::ConsumeComment()
+{
+ if (m_buffer[m_pos] == '/' && m_buffer[m_pos + 1] == '*')
+ {
+ m_pos += 2;
+ while (m_buffer[m_pos] != '*' || m_buffer[m_pos + 1] != '/')
+ {
+ if (m_buffer[m_pos] == 0)
+ return false;
+ if (!ConsumeNewline())
+ m_pos++;
+ }
+ m_pos += 2;
+ return true;
+ }
+ else if (m_buffer[m_pos] == '/' && m_buffer[m_pos + 1] == '/')
+ {
+ m_pos += 2;
+ while (!ConsumeNewline())
+ {
+ if (m_buffer[m_pos] == 0)
+ return false;
+ m_pos++;
+ }
+ return true;
+ }
+
+ return false;
+}
+
+void CFile::SkipWhitespace()
+{
+ while (ConsumeHorizontalWhitespace() || ConsumeNewline() || ConsumeComment())
+ ;
+}
+
+bool CFile::CheckIdentifier(const std::string& ident)
+{
+ unsigned int i;
+
+ for (i = 0; i < ident.length() && m_pos + i < (unsigned)m_size; i++)
+ if (ident[i] != m_buffer[m_pos + i])
+ return false;
+
+ return (i == ident.length());
+}
+
+void CFile::CheckInclude()
+{
+ if (m_buffer[m_pos] != '#')
+ return;
+
+ std::string ident = "#include";
+
+ if (!CheckIdentifier(ident))
+ {
+ return;
+ }
+
+ m_pos += ident.length();
+
+ ConsumeHorizontalWhitespace();
+
+ std::string path = ReadPath();
+
+ if (!path.empty()) {
+ m_includes.emplace(path);
+ }
+}
+
+void CFile::CheckIncbin()
+{
+ // Optimization: assume most lines are not incbins
+ if (!(m_buffer[m_pos+0] == 'I'
+ && m_buffer[m_pos+1] == 'N'
+ && m_buffer[m_pos+2] == 'C'
+ && m_buffer[m_pos+3] == 'B'
+ && m_buffer[m_pos+4] == 'I'
+ && m_buffer[m_pos+5] == 'N'
+ && m_buffer[m_pos+6] == '_'))
+ {
+ return;
+ }
+
+ std::string idents[6] = { "INCBIN_S8", "INCBIN_U8", "INCBIN_S16", "INCBIN_U16", "INCBIN_S32", "INCBIN_U32" };
+ int incbinType = -1;
+
+ for (int i = 0; i < 6; i++)
+ {
+ if (CheckIdentifier(idents[i]))
+ {
+ incbinType = i;
+ break;
+ }
+ }
+
+ if (incbinType == -1)
+ return;
+
+ long oldPos = m_pos;
+ long oldLineNum = m_lineNum;
+
+ m_pos += idents[incbinType].length();
+
+ SkipWhitespace();
+
+ if (m_buffer[m_pos] != '(')
+ {
+ m_pos = oldPos;
+ m_lineNum = oldLineNum;
+ return;
+ }
+
+ m_pos++;
+
+ while (true)
+ {
+ SkipWhitespace();
+
+ std::string path = ReadPath();
+
+ SkipWhitespace();
+
+ m_incbins.emplace(path);
+
+ if (m_buffer[m_pos] != ',')
+ break;
+
+ m_pos++;
+ }
+
+ if (m_buffer[m_pos] != ')')
+ FATAL_INPUT_ERROR("expected ')'");
+
+ m_pos++;
+
+}
+
+std::string CFile::ReadPath()
+{
+ if (m_buffer[m_pos] != '"')
+ {
+ if (m_buffer[m_pos] == '<')
+ {
+ return std::string();
+ }
+ FATAL_INPUT_ERROR("expected '\"' or '<'");
+ }
+
+ m_pos++;
+
+ int startPos = m_pos;
+
+ while (m_buffer[m_pos] != '"')
+ {
+ if (m_buffer[m_pos] == 0)
+ {
+ if (m_pos >= m_size)
+ FATAL_INPUT_ERROR("unexpected EOF in path string");
+ else
+ FATAL_INPUT_ERROR("unexpected null character in path string");
+ }
+
+ if (m_buffer[m_pos] == '\r' || m_buffer[m_pos] == '\n')
+ FATAL_INPUT_ERROR("unexpected end of line character in path string");
+
+ if (m_buffer[m_pos] == '\\')
+ FATAL_INPUT_ERROR("unexpected escape in path string");
+
+ m_pos++;
+ }
+
+ m_pos++;
+
+ return std::string(m_buffer + startPos, m_pos - 1 - startPos);
+}
diff --git a/tools/scaninc/c_file.h b/tools/scaninc/c_file.h
new file mode 100644
index 00000000..618901b8
--- /dev/null
+++ b/tools/scaninc/c_file.h
@@ -0,0 +1,57 @@
+// Copyright(c) 2017 YamaArashi
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#ifndef C_FILE_H
+#define C_FILE_H
+
+#include <string>
+#include <set>
+#include <memory>
+#include "scaninc.h"
+
+class CFile
+{
+public:
+ CFile(std::string path);
+ ~CFile();
+ void FindIncbins();
+ const std::set<std::string>& GetIncbins() { return m_incbins; }
+ const std::set<std::string>& GetIncludes() { return m_includes; }
+
+private:
+ char *m_buffer;
+ int m_pos;
+ int m_size;
+ int m_lineNum;
+ std::string m_path;
+ std::set<std::string> m_incbins;
+ std::set<std::string> m_includes;
+
+ bool ConsumeHorizontalWhitespace();
+ bool ConsumeNewline();
+ bool ConsumeComment();
+ void SkipWhitespace();
+ bool CheckIdentifier(const std::string& ident);
+ void CheckInclude();
+ void CheckIncbin();
+ std::string ReadPath();
+};
+
+#endif // C_FILE_H
diff --git a/tools/scaninc/scaninc.cpp b/tools/scaninc/scaninc.cpp
new file mode 100644
index 00000000..b95cbd03
--- /dev/null
+++ b/tools/scaninc/scaninc.cpp
@@ -0,0 +1,121 @@
+// Copyright(c) 2015-2017 YamaArashi
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#include <cstdio>
+#include <cstdlib>
+#include <list>
+#include <queue>
+#include <set>
+#include <string>
+#include "scaninc.h"
+#include "source_file.h"
+
+bool CanOpenFile(std::string path)
+{
+ FILE *fp = std::fopen(path.c_str(), "rb");
+
+ if (fp == NULL)
+ return false;
+
+ std::fclose(fp);
+ return true;
+}
+
+const char *const USAGE = "Usage: scaninc [-I INCLUDE_PATH] FILE_PATH\n";
+
+int main(int argc, char **argv)
+{
+ std::queue<std::string> filesToProcess;
+ std::set<std::string> dependencies;
+
+ std::vector<std::string> includeDirs;
+
+ argc--;
+ argv++;
+
+ while (argc > 1)
+ {
+ std::string arg(argv[0]);
+ if (arg.substr(0, 2) == "-I")
+ {
+ std::string includeDir = arg.substr(2);
+ if (includeDir.empty())
+ {
+ argc--;
+ argv++;
+ includeDir = std::string(argv[0]);
+ }
+ if (!includeDir.empty() && includeDir.back() != '/')
+ {
+ includeDir += '/';
+ }
+ includeDirs.push_back(includeDir);
+ }
+ else
+ {
+ FATAL_ERROR(USAGE);
+ }
+ argc--;
+ argv++;
+ }
+
+ if (argc != 1) {
+ FATAL_ERROR(USAGE);
+ }
+
+ std::string initialPath(argv[0]);
+
+ filesToProcess.push(initialPath);
+
+ while (!filesToProcess.empty())
+ {
+ std::string filePath = filesToProcess.front();
+ SourceFile file(filePath);
+ filesToProcess.pop();
+
+ includeDirs.push_back(file.GetSrcDir());
+ for (auto incbin : file.GetIncbins())
+ {
+ dependencies.insert(incbin);
+ }
+ for (auto include : file.GetIncludes())
+ {
+ for (auto includeDir : includeDirs)
+ {
+ std::string path(includeDir + include);
+ if (CanOpenFile(path))
+ {
+ bool inserted = dependencies.insert(path).second;
+ if (inserted)
+ {
+ filesToProcess.push(path);
+ }
+ break;
+ }
+ }
+ }
+ includeDirs.pop_back();
+ }
+
+ for (const std::string &path : dependencies)
+ {
+ std::printf("%s\n", path.c_str());
+ }
+}
diff --git a/tools/scaninc/scaninc.h b/tools/scaninc/scaninc.h
new file mode 100644
index 00000000..30cc9611
--- /dev/null
+++ b/tools/scaninc/scaninc.h
@@ -0,0 +1,59 @@
+// Copyright(c) 2015-2017 YamaArashi
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#ifndef SCANINC_H
+#define SCANINC_H
+
+#include <cstdio>
+#include <cstdlib>
+
+#ifdef _MSC_VER
+
+#define FATAL_INPUT_ERROR(format, ...) \
+do { \
+ fprintf(stderr, "%s:%d " format, m_path.c_str(), m_lineNum, __VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#define FATAL_ERROR(format, ...) \
+do { \
+ fprintf(stderr, format, __VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#else
+
+#define FATAL_INPUT_ERROR(format, ...) \
+do { \
+ fprintf(stderr, "%s:%d " format, m_path.c_str(), m_lineNum, ##__VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#define FATAL_ERROR(format, ...) \
+do { \
+ fprintf(stderr, format, ##__VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#endif // _MSC_VER
+
+#define SCANINC_MAX_PATH 255
+
+#endif // SCANINC_H
diff --git a/tools/scaninc/source_file.cpp b/tools/scaninc/source_file.cpp
new file mode 100644
index 00000000..5d0281a4
--- /dev/null
+++ b/tools/scaninc/source_file.cpp
@@ -0,0 +1,125 @@
+// Copyright(c) 2019 Phlosioneer
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#include <new>
+#include "source_file.h"
+
+
+SourceFileType GetFileType(std::string& path)
+{
+ std::size_t pos = path.find_last_of('.');
+
+ if (pos == std::string::npos)
+ FATAL_ERROR("no file extension in path \"%s\"\n", path.c_str());
+
+ std::string extension = path.substr(pos + 1);
+
+ if (extension == "c" || extension == "cpp")
+ return SourceFileType::Cpp;
+ else if (extension == "s")
+ return SourceFileType::Asm;
+ else if (extension == "h")
+ return SourceFileType::Header;
+ else if (extension == "inc")
+ return SourceFileType::Inc;
+ else
+ FATAL_ERROR("Unrecognized extension \"%s\"\n", extension.c_str());
+
+ // Unreachable
+ return SourceFileType::Cpp;
+}
+
+std::string GetDir(std::string& path)
+{
+ std::size_t slash = path.rfind('/');
+
+ if (slash != std::string::npos)
+ return path.substr(0, slash + 1);
+ else
+ return std::string("");
+}
+
+SourceFile::SourceFile(std::string path)
+{
+ m_file_type = GetFileType(path);
+
+ m_src_dir = GetDir(path);
+
+ if (m_file_type == SourceFileType::Cpp
+ || m_file_type == SourceFileType::Header)
+ {
+ new (&m_source_file.c_file) CFile(path);
+ m_source_file.c_file.FindIncbins();
+ }
+ else
+ {
+ AsmFile file(path);
+ std::set<std::string> incbins;
+ std::set<std::string> includes;
+
+ IncDirectiveType incDirectiveType;
+ std::string outputPath;
+
+ while ((incDirectiveType = file.ReadUntilIncDirective(outputPath)) != IncDirectiveType::None)
+ {
+ if (incDirectiveType == IncDirectiveType::Include)
+ includes.insert(outputPath);
+ else
+ incbins.insert(outputPath);
+ }
+
+ new (&m_source_file.asm_wrapper) SourceFile::InnerUnion::AsmWrapper{incbins, includes};
+ }
+}
+
+SourceFile::~SourceFile()
+{
+ if (m_file_type == SourceFileType::Cpp || m_file_type == SourceFileType::Header)
+ {
+ m_source_file.c_file.~CFile();
+ }
+ else
+ {
+ m_source_file.asm_wrapper.asm_incbins.~set();
+ m_source_file.asm_wrapper.asm_includes.~set();
+ }
+}
+
+const std::set<std::string>& SourceFile::GetIncbins()
+{
+ if (m_file_type == SourceFileType::Cpp || m_file_type == SourceFileType::Header)
+ return m_source_file.c_file.GetIncbins();
+ else
+ return m_source_file.asm_wrapper.asm_incbins;
+}
+
+const std::set<std::string>& SourceFile::GetIncludes()
+{
+ if (m_file_type == SourceFileType::Cpp || m_file_type == SourceFileType::Header)
+ return m_source_file.c_file.GetIncludes();
+ else
+ return m_source_file.asm_wrapper.asm_includes;
+}
+
+std::string& SourceFile::GetSrcDir()
+{
+ return m_src_dir;
+}
+
diff --git a/tools/scaninc/source_file.h b/tools/scaninc/source_file.h
new file mode 100644
index 00000000..f7b6412b
--- /dev/null
+++ b/tools/scaninc/source_file.h
@@ -0,0 +1,71 @@
+// Copyright(c) 2019 Phlosioneer
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#ifndef SOURCE_FILE_H
+#define SOURCE_FILE_H
+
+#include <string>
+#include "scaninc.h"
+#include "asm_file.h"
+#include "c_file.h"
+
+enum class SourceFileType
+{
+ Cpp,
+ Header,
+ Asm,
+ Inc
+};
+
+SourceFileType GetFileType(std::string& path);
+
+class SourceFile
+{
+public:
+
+ SourceFile(std::string path);
+ ~SourceFile();
+ SourceFile(SourceFile const&) = delete;
+ SourceFile(SourceFile&&) = delete;
+ SourceFile& operator =(SourceFile const&) = delete;
+ SourceFile& operator =(SourceFile&&) = delete;
+ bool HasIncbins();
+ const std::set<std::string>& GetIncbins();
+ const std::set<std::string>& GetIncludes();
+ std::string& GetSrcDir();
+
+private:
+ union InnerUnion {
+ CFile c_file;
+ struct AsmWrapper {
+ std::set<std::string> asm_incbins;
+ std::set<std::string> asm_includes;
+ } asm_wrapper;
+
+ // Construction and destruction handled by SourceFile.
+ InnerUnion() {};
+ ~InnerUnion() {};
+ } m_source_file;
+ SourceFileType m_file_type;
+ std::string m_src_dir;
+};
+
+#endif // SOURCE_FILE_H
+
diff --git a/undefined_syms.txt b/undefined_syms.txt
deleted file mode 100644
index 302fe8bf..00000000
--- a/undefined_syms.txt
+++ /dev/null
@@ -1,505 +0,0 @@
-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;
-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;
-OSiHeapInfo = 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;